diff --git a/.gitignore b/.gitignore index c741a5a5..e2bdb34d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,8 +13,7 @@ out/ project/metals.sbt # User configs -config/worldserver.ini -pslogin/src/main/resources/user.conf +config/psforever.conf # Log files *.log diff --git a/.scalafix.conf b/.scalafix.conf new file mode 100644 index 00000000..35504c9b --- /dev/null +++ b/.scalafix.conf @@ -0,0 +1,6 @@ +rules = [ + RemoveUnused +] +RemoveUnused.imports = true +RemoveUnused.privates = false +RemoveUnused.locals = false diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 00000000..59f6c4e5 --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,3 @@ +version = 2.6.1 +preset = defaultWithAlign +maxColumn = 120 \ No newline at end of file diff --git a/README.md b/README.md index d43f2c14..211c2175 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,11 @@ The Login and World servers require PostgreSQL for persistence. - Linux - [Debian](https://www.postgresql.org/download/linux/debian/) or [Ubuntu](https://www.postgresql.org/download/linux/ubuntu/) - macOS - Application https://www.postgresql.org/download/ (or `brew install postgresql && brew services start postgresql`) -The default database is named `psforever` and the credentials are `psforever:psforever`. To change these, make a copy of [`config/worldserver.ini.dist`](config/worldserver.ini.dist) to `config/worldserver.ini` and change the corresponding fields in the database section. This database user will need ALL access to tables, sequences, and functions. +The default database is named `psforever` and the credentials are +`psforever:psforever`. To change these, create a configuration file at +`config/psforever.conf`. For configuration options and their defaults, see +[`pslogin/src/main/resources/application.conf`]. This database user will need +ALL access to tables, sequences, and functions. The permissions required can be summarized by the SQL below. Loading this in requires access to a graphical tool such as [pgAdmin](https://www.pgadmin.org/download/) (highly recommended) or a PostgreSQL terminal (`psql`) for advanced users. @@ -95,9 +99,9 @@ ALTER DEFAULT PRIVILEGES IN SCHEMA PUBLIC GRANT ALL ON FUNCTIONS TO psforever; **NOTE:** applying default privileges _after_ importing the schema will not apply them to existing objects. To fix this, you must drop all objects and try again or apply permissions manually using the Query Tool / `psql`. -Now you need to synchronize the schema. This is currently available in [`schema.sql`](schema.sql). -To do this right click on the psforever database -> Query Tool... -> Copy and paste / Open the `schema.sql` file into the editor -> Hit the "Play/Run" button. The schema should be loaded into the database. -Once you have the schema loaded in, the LoginServer will automatically create accounts on first login. If you'd like a nice account management interface, check out the [PSFPortal](https://github.com/psforever/PSFPortal) web interface. +The server will automatically apply the latest schema. Migrations can also be applied manually using +the [Flyway CLI](https://flywaydb.org/documentation/commandline/). Existing databases before the +introduction of migrations must be baselined using the `flyway baseline` command. ### Becoming a GM @@ -161,33 +165,6 @@ Using SBT, you can generate documentation for both the common and pslogin projec Current documentation is available at [https://psforever.github.io/docs/master/index.html](https://psforever.github.io/docs/master/index.html) -## Troubleshooting - -#### Unable to initialize pscrypto - -If you get an error like below - -``` -12:17:28.037 [main] ERROR PsLogin - Unable to initialize pscrypto -java.lang.UnsatisfiedLinkError: Unable to load library 'pscrypto': Native library (win32-x86-64/pscrypto.dll) not found in resource path -``` - -Then you are missing the native library required to provide cryptographic functions to the login server. To fix this, you need a binary build of [PSCrypto](#downloading-pscrypto). - -If you are still having trouble on Linux, try putting the library in `root directory/pscrypto-lib/libpscrypto.so`. - -## Contributing - -Please fork the project and provide a pull request to contribute code. Coding guidelines and contribution checklists coming soon. - -## Get in touch - -- Website: http://psforever.net -- Discord (chat with us): https://discord.gg/0nRe5TNbTYoUruA4 - - Join the #code channel and ask any questions you have there - -Chord is the lead developer and you can contact him on Discord as Chord or by email [chord@tuta.io](mailto:chord@tuta.io). Discord is preferred. - ## Tools ### decodePackets @@ -217,6 +194,33 @@ psf-decode-packets -o ./output-directory foo.gcap bar.gcap By default, decodePackets takes in `.gcap` files, but it can also take gcapy ascii files with the `-p` option. Run `psf-decode-packets --help` to get usage info. +## Troubleshooting + +#### Unable to initialize pscrypto + +If you get an error like below + +``` +12:17:28.037 [main] ERROR PsLogin - Unable to initialize pscrypto +java.lang.UnsatisfiedLinkError: Unable to load library 'pscrypto': Native library (win32-x86-64/pscrypto.dll) not found in resource path +``` + +Then you are missing the native library required to provide cryptographic functions to the login server. To fix this, you need a binary build of [PSCrypto](#downloading-pscrypto). + +If you are still having trouble on Linux, try putting the library in `root directory/pscrypto-lib/libpscrypto.so`. + +## Contributing + +Please fork the project and provide a pull request to contribute code. Coding guidelines and contribution checklists coming soon. + +## Get in touch + +- Website: http://psforever.net +- Discord (chat with us): https://discord.gg/0nRe5TNbTYoUruA4 + - Join the #code channel and ask any questions you have there + +Chord is the lead developer and you can contact him on Discord as Chord or by email [chord@tuta.io](mailto:chord@tuta.io). Discord is preferred. + ## License GNU GPLv3. See LICENSE.md for the full copy. diff --git a/build.sbt b/build.sbt index fd426081..6e681ebd 100644 --- a/build.sbt +++ b/build.sbt @@ -4,8 +4,18 @@ lazy val commonSettings = Seq( organization := "net.psforever", version := "1.0.2-SNAPSHOT", scalaVersion := "2.13.2", - scalacOptions := Seq("-unchecked", "-feature", "-deprecation", "-encoding", "utf8", "-language:postfixOps"), - + semanticdbEnabled := true, + semanticdbVersion := scalafixSemanticdb.revision, + scalacOptions := Seq( + "-unchecked", + "-feature", + "-deprecation", + "-encoding", + "utf8", + "-language:postfixOps", + "-Wunused:imports", + "-Xmacro-settings:materialize-derivations" + ), // Quiet test options // https://github.com/etorreborre/specs2/blob/8305db76c5084e4b3ce5827ce23117f6fb6beee4/common/shared/src/main/scala/org/specs2/main/Report.scala#L94 // https://etorreborre.github.io/specs2/guide/SPECS2-2.4.17/org.specs2.guide.Runners.html @@ -14,41 +24,56 @@ lazy val commonSettings = Seq( testOptions in QuietTest += Tests.Argument(TestFrameworks.ScalaTest, "-oCEHILMNOPQRX"), // Trick taken from https://groups.google.com/d/msg/scala-user/mxV9ok7J_Eg/kt-LnsrD0bkJ // scaladoc flags: https://github.com/scala/scala/blob/2.11.x/src/scaladoc/scala/tools/nsc/doc/Settings.scala - scalacOptions in (Compile,doc) := { Seq( + scalacOptions in (Compile, doc) ++= Seq( "-groups", "-implicits", - "-doc-title", "PSF-LoginServer - ", - "-doc-version", "master", - "-doc-footer", "Copyright PSForever", + "-doc-title", + "PSF-LoginServer - ", + "-doc-version", + "master", + "-doc-footer", + "Copyright PSForever", // For non unidoc builds, you may need bd.getName before the template parameter - "-doc-source-url", "https://github.com/psforever/PSF-LoginServer/blob/master/€{FILE_PATH}.scala", - "-sourcepath", baseDirectory.value.getAbsolutePath // needed for scaladoc relative source paths - ) - }, + "-doc-source-url", + "https://github.com/psforever/PSF-LoginServer/blob/master/€{FILE_PATH}.scala", + "-sourcepath", + baseDirectory.value.getAbsolutePath // needed for scaladoc relative source paths + ), classLoaderLayeringStrategy := ClassLoaderLayeringStrategy.Flat, resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", libraryDependencies ++= Seq( - "com.typesafe.akka" %% "akka-actor" % "2.6.5", - "com.typesafe.akka" %% "akka-testkit" % "2.6.5" % "test", - "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2", - "org.specs2" %% "specs2-core" % "4.9.4" % "test", - "org.scalatest" %% "scalatest" % "3.1.2" % "test", - "org.scodec" %% "scodec-core" % "1.11.7", - "net.java.dev.jna" % "jna" % "5.5.0", - "com.typesafe.akka" %% "akka-slf4j" % "2.6.5", - "ch.qos.logback" % "logback-classic" % "1.2.3", - "org.log4s" %% "log4s" % "1.8.2", - "org.fusesource.jansi" % "jansi" % "1.12", + "com.typesafe.akka" %% "akka-actor" % "2.6.6", + "com.typesafe.akka" %% "akka-slf4j" % "2.6.6", + "com.typesafe.akka" %% "akka-protobuf-v3" % "2.6.6", + "com.typesafe.akka" %% "akka-stream" % "2.6.6", + "com.typesafe.akka" %% "akka-testkit" % "2.6.6" % "test", + "com.typesafe.akka" %% "akka-actor-typed" % "2.6.6", + "com.typesafe.akka" %% "akka-cluster-typed" % "2.6.6", + "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2", + "org.specs2" %% "specs2-core" % "4.9.4" % "test", + "org.scalatest" %% "scalatest" % "3.1.2" % "test", + "org.scodec" %% "scodec-core" % "1.11.7", + "net.java.dev.jna" % "jna" % "5.5.0", + "com.typesafe.akka" %% "akka-slf4j" % "2.6.5", + "ch.qos.logback" % "logback-classic" % "1.2.3", + "org.log4s" %% "log4s" % "1.8.2", + "org.fusesource.jansi" % "jansi" % "1.12", "org.scoverage" %% "scalac-scoverage-plugin" % "1.4.1", - "com.github.nscala-time" %% "nscala-time" % "2.24.0", - "com.github.postgresql-async" %% "postgresql-async" % "0.3.0", - "com.github.t3hnar" %% "scala-bcrypt" % "4.1", - "org.ini4j" % "ini4j" % "0.5.4", - "org.scala-graph" %% "graph-core" % "1.13.1", - "io.kamon" %% "kamon-bundle" % "2.1.0", - "io.kamon" %% "kamon-apm-reporter" % "2.1.0", - "org.json4s" %% "json4s-native" % "3.6.8", - "com.typesafe.akka" %% "akka-stream" % "2.6.5" + "com.github.nscala-time" %% "nscala-time" % "2.24.0", + "com.github.t3hnar" %% "scala-bcrypt" % "4.1", + "org.scala-graph" %% "graph-core" % "1.13.1", + "io.kamon" %% "kamon-bundle" % "2.1.0", + "io.kamon" %% "kamon-apm-reporter" % "2.1.0", + "org.json4s" %% "json4s-native" % "3.6.8", + "com.typesafe.akka" %% "akka-stream" % "2.6.5", + "io.getquill" %% "quill-jasync-postgres" % "3.5.2", + "org.flywaydb" % "flyway-core" % "6.5.0", + "org.postgresql" % "postgresql" % "42.2.14", + "com.typesafe" % "config" % "1.4.0", + "com.github.pureconfig" %% "pureconfig" % "0.13.0", + "com.beachape" %% "enumeratum" % "1.6.1", + "joda-time" % "joda-time" % "2.10.6", + "commons-io" % "commons-io" % "2.6" ) ) @@ -61,63 +86,58 @@ lazy val pscryptoSettings = Seq( lazy val psloginPackSettings = Seq( packMain := Map("ps-login" -> "PsLogin"), packArchivePrefix := "pslogin", - packExtraClasspath := Map("ps-login" -> Seq("${PROG_HOME}/pscrypto-lib", - "${PROG_HOME}/config")), - packResourceDir += (baseDirectory.value / "pscrypto-lib" -> "pscrypto-lib"), - packResourceDir += (baseDirectory.value / "config" -> "config"), + packExtraClasspath := Map("ps-login" -> Seq("${PROG_HOME}/pscrypto-lib", "${PROG_HOME}/config")), + packResourceDir += (baseDirectory.value / "pscrypto-lib" -> "pscrypto-lib"), + packResourceDir += (baseDirectory.value / "config" -> "config"), packResourceDir += (baseDirectory.value / "pslogin/src/main/resources" -> "config") ) -lazy val root = (project in file(".")). - configs(QuietTest). - enablePlugins(PackPlugin). - settings(commonSettings: _*). - settings(psloginPackSettings: _*). - enablePlugins(ScalaUnidocPlugin). - aggregate(pslogin, common). - dependsOn(pslogin, common) +lazy val root = (project in file(".")) + .configs(QuietTest) + .enablePlugins(PackPlugin) + .settings(commonSettings: _*) + .settings(psloginPackSettings: _*) + .enablePlugins(ScalaUnidocPlugin) + .aggregate(pslogin, common) -lazy val pslogin = (project in file("pslogin")). - configs(QuietTest). - settings(commonSettings: _*). - settings( +lazy val pslogin = (project in file("pslogin")) + .configs(QuietTest) + .settings(commonSettings: _*) + .settings( name := "pslogin", // ActorTests have specific timing requirements and will be flaky if run in parallel parallelExecution in Test := false, // TODO(chord): remove exclusion when WorldSessionActor is refactored: https://github.com/psforever/PSF-LoginServer/issues/279 - coverageExcludedPackages := "WorldSessionActor.*;zonemaps.*", + coverageExcludedPackages := "net.psforever.pslogin.WorldSessionActor.*;net.psforever.pslogin.zonemaps.*", // Copy all tests from Test -> QuietTest (we're only changing the run options) inConfig(QuietTest)(Defaults.testTasks) - ). - settings(pscryptoSettings: _*). - dependsOn(common) + ) + .settings(pscryptoSettings: _*) + .dependsOn(common) -lazy val common = (project in file("common")). - configs(QuietTest). - settings(commonSettings: _*). - settings( +lazy val common = (project in file("common")) + .configs(QuietTest) + .settings(commonSettings: _*) + .settings( name := "common", // Copy all tests from Test -> QuietTest (we're only changing the run options) inConfig(QuietTest)(Defaults.testTasks) - ). - settings(pscryptoSettings: _*) + ) + .settings(pscryptoSettings: _*) -lazy val decodePackets = (project in file("tools/decode-packets")). - enablePlugins(PackPlugin). - settings(commonSettings: _*). - settings(decodePacketsPackSettings: _*). - settings( +lazy val decodePackets = (project in file("tools/decode-packets")) + .enablePlugins(PackPlugin) + .settings(commonSettings: _*) + .settings(decodePacketsPackSettings: _*) + .settings( libraryDependencies ++= Seq( - "org.scala-lang.modules" %% "scala-parallel-collections" % "0.2.0", - "com.github.scopt" %% "scopt" % "4.0.0-RC2", - "commons-io" % "commons-io" % "2.6" + "org.scala-lang.modules" %% "scala-parallel-collections" % "0.2.0", + "com.github.scopt" %% "scopt" % "4.0.0-RC2" ) - ). - dependsOn(common) + ) + .dependsOn(common) -lazy val decodePacketsPackSettings = Seq( - packMain := Map("psf-decode-packets" -> "DecodePackets"), -) +lazy val decodePacketsPackSettings = Seq(packMain := Map("psf-decode-packets" -> "DecodePackets")) // Special test configuration for really quiet tests (used in CI) -lazy val QuietTest = config("quiet") extend(Test) +lazy val QuietTest = config("quiet") extend (Test) diff --git a/pslogin/src/main/scala/MDCContextAware.scala b/common/src/main/scala/akka/actor/MDCContextAware.scala similarity index 87% rename from pslogin/src/main/scala/MDCContextAware.scala rename to common/src/main/scala/akka/actor/MDCContextAware.scala index ef126b89..807ff24c 100644 --- a/pslogin/src/main/scala/MDCContextAware.scala +++ b/common/src/main/scala/akka/actor/MDCContextAware.scala @@ -1,13 +1,13 @@ -// Copyright (c) 2017 PSForever -// Taken from http://code.hootsuite.com/logging-contextual-info-in-an-asynchronous-scala-application/ package akka.actor +// Taken from https://medium.com/hootsuite-engineering/logging-contextual-info-in-an-asynchronous-scala-application-8ea33bfec9b3 + import akka.util.Timeout import org.slf4j.MDC import scala.concurrent.Future -trait MDCContextAware extends Actor with ActorLogging { +trait MDCContextAware extends Actor with ActorLogging { import MDCContextAware._ // This is why this needs to be in package akka.actor @@ -52,7 +52,7 @@ object MDCContextAware { * the current MDC values. Note: we MUST capture the ActorContext in order for senders * to be correct! This was a bug from the original author. */ - def !>(msg: Any)(implicit context: ActorContext) : Unit = + def !>(msg: Any)(implicit context: ActorContext): Unit = ref.tell(MdcMsg(MDC.getCopyOfContextMap, msg), context.self) /** @@ -63,4 +63,4 @@ object MDCContextAware { ref.ask(MdcMsg(MDC.getCopyOfContextMap, msg), context.self) } } -} \ No newline at end of file +} diff --git a/common/src/main/scala/akka/actor/MDCPropagatingExecutionContext.scala b/common/src/main/scala/akka/actor/MDCPropagatingExecutionContext.scala new file mode 100644 index 00000000..2b96c937 --- /dev/null +++ b/common/src/main/scala/akka/actor/MDCPropagatingExecutionContext.scala @@ -0,0 +1,69 @@ +package akka.actor + +// Taken from https://medium.com/hootsuite-engineering/logging-contextual-info-in-an-asynchronous-scala-application-8ea33bfec9b3 + +import org.slf4j.MDC + +import scala.concurrent.ExecutionContext + +trait MDCPropagatingExecutionContext extends ExecutionContext { + // name the self-type "self" so we can refer to it inside the nested class + self => + + override def prepare(): ExecutionContext = + new ExecutionContext { + // Save the call-site MDC state + val context = MDC.getCopyOfContextMap + + def execute(r: Runnable): Unit = + self.execute(new Runnable { + def run(): Unit = { + // Save the existing execution-site MDC state + val oldContext = MDC.getCopyOfContextMap + try { + // Set the call-site MDC state into the execution-site MDC + if (context != null) + MDC.setContextMap(context) + else + MDC.clear() + + r.run() + } finally { + // Restore the existing execution-site MDC state + if (oldContext != null) + MDC.setContextMap(oldContext) + else + MDC.clear() + } + } + }) + + def reportFailure(t: Throwable): Unit = self.reportFailure(t) + } +} + +object MDCPropagatingExecutionContext { + object Implicits { + // Convenience wrapper around the Scala global ExecutionContext so you can just do: + // import MDCPropagatingExecutionContext.Implicits.global + implicit lazy val global = MDCPropagatingExecutionContextWrapper(ExecutionContext.Implicits.global) + } +} + +/** + * Wrapper around an existing ExecutionContext that makes it propagate MDC information. + */ +class MDCPropagatingExecutionContextWrapper(wrapped: ExecutionContext) + extends ExecutionContext + with MDCPropagatingExecutionContext { + + override def execute(r: Runnable): Unit = wrapped.execute(r) + + override def reportFailure(t: Throwable): Unit = wrapped.reportFailure(t) +} + +object MDCPropagatingExecutionContextWrapper { + def apply(wrapped: ExecutionContext): MDCPropagatingExecutionContextWrapper = { + new MDCPropagatingExecutionContextWrapper(wrapped) + } +} diff --git a/common/src/main/scala/net/psforever/IFinalizable.scala b/common/src/main/scala/net/psforever/IFinalizable.scala index fab6da42..de1d2c8d 100644 --- a/common/src/main/scala/net/psforever/IFinalizable.scala +++ b/common/src/main/scala/net/psforever/IFinalizable.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017 PSForever package net.psforever -class ObjectFinalizedException(msg : String) extends Exception(msg) +class ObjectFinalizedException(msg: String) extends Exception(msg) trait IFinalizable { var closed = false @@ -11,12 +11,14 @@ trait IFinalizable { } def assertNotClosed = { - if(closed) - throw new ObjectFinalizedException(this.getClass.getCanonicalName + ": already finalized. Cannot interact with object") + if (closed) + throw new ObjectFinalizedException( + this.getClass.getCanonicalName + ": already finalized. Cannot interact with object" + ) } override def finalize() = { - if(!closed) + if (!closed) println(this.getClass.getCanonicalName + ": class not closed. memory leaked") } } diff --git a/common/src/main/scala/net/psforever/config/ConfigParser.scala b/common/src/main/scala/net/psforever/config/ConfigParser.scala deleted file mode 100644 index 00124a4c..00000000 --- a/common/src/main/scala/net/psforever/config/ConfigParser.scala +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright (c) 2019 PSForever -package net.psforever.config - -import org.ini4j -import scala.reflect.ClassTag -import scala.reflect.runtime.universe.TypeTag -import scala.annotation.implicitNotFound -import scala.concurrent.duration._ -import scala.collection.mutable.Map - -case class ConfigValueMapper[T](name: String)(f: (String => Option[T])) { - def apply(t: String): Option[T] = f(t) -} - -object ConfigValueMapper { - import scala.language.implicitConversions - - implicit val toInt : ConfigValueMapper[Int] = ConfigValueMapper[Int]("toInt") { e => - try { - Some(e.toInt) - } catch { - case e: Exception => None - } - } - - // TypeTag is necessary to be able to retrieve an instance of the Enum class - // at runtime as it is usually erased at runtime. This is low cost as its only - // used during the config parsing - implicit def toEnum[E <: Enumeration#Value](implicit m: TypeTag[E]) : ConfigValueMapper[E] = ConfigValueMapper[E]("toEnum") { e => - try { - Some(EnumReflector.withName[E](e)) - } catch { - case e: Exception => None - } - } - - implicit val toBool : ConfigValueMapper[Boolean] = ConfigValueMapper[Boolean]("toBool") { e => - if (e == "yes") { - Some(true) - } else if (e == "no") { - Some(false) - } else { - None - } - } - - implicit val toFloat : ConfigValueMapper[Float] = ConfigValueMapper[Float]("toFloat") { e => - try { - Some(e.toFloat) - } catch { - case e: Exception => None - } - } - - implicit val toDuration : ConfigValueMapper[Duration] = ConfigValueMapper[Duration]("toDuration") { e => - try { - Some(Duration(e)) - } catch { - case e: Exception => None - } - } - - implicit val toStr : ConfigValueMapper[String] = ConfigValueMapper[String]("toString") { e => - Some(e) - } -} - -sealed trait ConfigEntry { - type Value - val key : String - val default : Value - def getType : String - val constraints : Seq[Constraint[Value]] - def read(v: String): Option[Value] -} - -final case class ConfigEntryString(key: String, default : String, constraints : Constraint[String]*) extends ConfigEntry { - type Value = String - def getType = "String" - def read(v : String) = ConfigValueMapper.toStr(v) -} - -final case class ConfigEntryInt(key: String, default : Int, constraints : Constraint[Int]*) extends ConfigEntry { - type Value = Int - def getType = "Int" - def read(v : String) = ConfigValueMapper.toInt(v) -} - -final case class ConfigEntryBool(key: String, default : Boolean, constraints : Constraint[Boolean]*) extends ConfigEntry { - type Value = Boolean - def getType = "Bool" - def read(v : String) = ConfigValueMapper.toBool(v) -} - -final case class ConfigEntryEnum[E <: Enumeration](key: String, default : E#Value)(implicit m : TypeTag[E#Value], implicit val m2 : TypeTag[E#ValueSet]) extends ConfigEntry { - type Value = E#Value - val constraints : Seq[Constraint[E#Value]] = Seq() - def getType = EnumReflector.values[E#ValueSet](m2).mkString(", ") - def read(v : String) = ConfigValueMapper.toEnum[E#Value](m)(v) -} - -final case class ConfigEntryFloat(key: String, default : Float, constraints : Constraint[Float]*) extends ConfigEntry { - type Value = Float - def getType = "Float" - def read(v : String) = ConfigValueMapper.toFloat(v) -} - -final case class ConfigEntryTime(key: String, default : Duration, constraints : Constraint[Duration]*) extends ConfigEntry { - type Value = Duration - def getType = "Time" - def read(v : String) = ConfigValueMapper.toDuration(v) -} - -case class ConfigSection(name: String, entries: ConfigEntry*) - -@implicitNotFound("Nothing was inferred") -sealed trait ConfigTypeRequired[-T] - -object ConfigTypeRequired { - implicit object cfgTypeRequired extends ConfigTypeRequired[Any] - //We do not want Nothing to be inferred, so make an ambiguous implicit - implicit object `\n The Get[T] call needs a type T matching the corresponding ConfigEntry` extends ConfigTypeRequired[Nothing] -} - -trait ConfigParser { - protected var config_map : Map[String, Any] = Map() - protected val config_template : Seq[ConfigSection] - - // Misuse of this function can lead to run time exceptions when the types don't match - // ClassTag is needed due to type erasure on T - // https://dzone.com/articles/scala-classtag-a-simple-use-case - def Get[T : ConfigTypeRequired](key : String)(implicit m: ClassTag[T]) : T = { - config_map.get(key) match { - case Some(value : T) => value - case None => - throw new NoSuchElementException(s"Config key '${key}' not found") - case Some(value : Any) => - throw new ClassCastException(s"Incorrect type T = ${m.runtimeClass.getSimpleName} passed to Get[T]: needed ${value.getClass.getSimpleName}") - } - } - - def Load(filename : String) : ValidationResult = { - var map : Map[String, Any] = scala.collection.mutable.Map() - - LoadMap(filename, map) match { - case i : Invalid => - i - case Valid => - ReplaceConfig(map) - // run post-parse validation only if we successfully parsed - postParseChecks match { - case i : Invalid => - i - case Valid => - Valid - } - } - } - - def LoadMap(filename : String, map : Map[String, Any]) : ValidationResult = { - val ini = new org.ini4j.Ini() - - try { - ini.load(new java.io.File(filename)) - } catch { - case e : org.ini4j.InvalidFileFormatException => - return Invalid(e.getMessage) - case e : java.io.FileNotFoundException => - return Invalid(e.getMessage) - } - - val result : Seq[ValidationResult] = config_template.map { section => - val sectionIni = ini.get(section.name) - - if (sectionIni == null) - Seq(Invalid("section.missing", section.name)) - else - section.entries.map(parseSection(sectionIni, _, map)) - }.reduceLeft((x, y) => x ++ y) - - val errors : Seq[Invalid] = result.collect { case iv : Invalid => iv } - - if (errors.length > 0) - errors.reduceLeft((x, y) => x ++ y) - else - Valid - } - - def ReplaceConfig(map : Map[String, Any]) : Unit = { - config_map = map - } - - def GetRawConfig : Map[String, Any] = { - config_map - } - - def FormatErrors(invalidResult : Invalid) : Seq[String] = { - var count = 0; - - invalidResult.errors.map((error) => { - var message = error.message; - - if (error.args.length > 0) - message += " ("+error.args(0)+")" - - count += 1; - s"Error ${count}: ${message}" - }); - } - - protected def postParseChecks : ValidationResult = { - Valid - } - - protected def parseSection(sectionIni : org.ini4j.Profile.Section, entry : ConfigEntry, map : Map[String, Any]) : ValidationResult = { - var rawValue = sectionIni.get(entry.key, 0) - val full_key : String = sectionIni.getName + "." + entry.key - - val value = if (rawValue == null) { - println(s"config warning: missing key '${entry.key}', using default value '${entry.default}'") - entry.default - } else { - rawValue = rawValue.stripPrefix("\"").stripSuffix("\"") - - entry.read(rawValue) match { - case Some(v) => v - case None => return Invalid(ValidationError(String.format("%s: value format error (expected: %s)", full_key, entry.getType))) - } - } - - map += (full_key -> value) - - ParameterValidator(entry.constraints, Some(value)) match { - case v @ Valid => v - case i @ Invalid(errors) => { - Invalid(errors.map(x => ValidationError(x.messages.map(full_key + ": " + _), x.args: _*))) - } - } - } -} diff --git a/common/src/main/scala/net/psforever/config/ConfigValidation.scala b/common/src/main/scala/net/psforever/config/ConfigValidation.scala deleted file mode 100644 index 94bf33f5..00000000 --- a/common/src/main/scala/net/psforever/config/ConfigValidation.scala +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright (c) 2019 PSForever -// Lifted from https://raw.githubusercontent.com/playframework/playframework/2.7.x/core/play/src/main/scala/play/api/data/validation/Validation.scala -package net.psforever.config - - -/** - * A form constraint. - * - * @tparam T type of values handled by this constraint - * @param name the constraint name, to be displayed to final user - * @param args the message arguments, to format the constraint name - * @param f the validation function - */ -case class Constraint[-T](name: Option[String], args: Seq[Any])(f: (T => ValidationResult)) { - - /** - * Run the constraint validation. - * - * @param t the value to validate - * @return the validation result - */ - def apply(t: T): ValidationResult = f(t) -} - -/** - * This object provides helpers for creating `Constraint` values. - * - * For example: - * {{{ - * val negative = Constraint[Int] { - * case i if i < 0 => Valid - * case _ => Invalid("Must be a negative number.") - * } - * }}} - */ -object Constraint { - - /** - * Creates a new anonymous constraint from a validation function. - * - * @param f the validation function - * @return a constraint - */ - def apply[T](f: (T => ValidationResult)): Constraint[T] = apply(None, Nil)(f) - - /** - * Creates a new named constraint from a validation function. - * - * @param name the constraint name - * @param args the constraint arguments, used to format the constraint name - * @param f the validation function - * @return a constraint - */ - def apply[T](name: String, args: Any*)(f: (T => ValidationResult)): Constraint[T] = apply(Some(name), args.toSeq)(f) - -} - -/** - * Defines a set of built-in constraints. - */ -object Constraints extends Constraints - -/** - * Defines a set of built-in constraints. - * - * @define emailAddressDoc Defines an ‘emailAddress’ constraint for `String` values which will validate email addresses. - * - * '''name'''[constraint.email] - * '''error'''[error.email] - * - * @define nonEmptyDoc Defines a ‘required’ constraint for `String` values, i.e. one in which empty strings are invalid. - * - * '''name'''[constraint.required] - * '''error'''[error.required] - */ -trait Constraints { - - private val emailRegex = - """^[a-zA-Z0-9\.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$""".r - - /** - * $emailAddressDoc - */ - def emailAddress(errorMessage: String = "error.email"): Constraint[String] = Constraint[String]("constraint.email") { - e => - if (e == null) Invalid(ValidationError(errorMessage)) - else if (e.trim.isEmpty) Invalid(ValidationError(errorMessage)) - else - emailRegex - .findFirstMatchIn(e) - .map(_ => Valid) - .getOrElse(Invalid(ValidationError(errorMessage))) - } - - /** - * $emailAddressDoc - * - */ - def emailAddress: Constraint[String] = emailAddress() - - /** - * $nonEmptyDoc - */ - def nonEmpty(errorMessage: String = "error.required"): Constraint[String] = - Constraint[String]("constraint.required") { o => - if (o == null) Invalid(ValidationError(errorMessage)) - else if (o.trim.isEmpty) Invalid(ValidationError(errorMessage)) - else Valid - } - - /** - * $nonEmptyDoc - * - */ - def nonEmpty: Constraint[String] = nonEmpty() - - /** - * Defines a minimum value for `Ordered` values, by default the value must be greater than or equal to the constraint parameter - * - * '''name'''[constraint.min(minValue)] - * '''error'''[error.min(minValue)] or [error.min.strict(minValue)] - */ - def min[T]( - minValue: T, - strict: Boolean = false, - errorMessage: String = "error.min", - strictErrorMessage: String = "error.min.strict" - )(implicit ordering: scala.math.Ordering[T]): Constraint[T] = Constraint[T]("constraint.min", minValue) { o => - (ordering.compare(o, minValue).sign, strict) match { - case (1, _) | (0, false) => Valid - case (_, false) => Invalid(ValidationError(errorMessage, minValue)) - case (_, true) => Invalid(ValidationError(strictErrorMessage, minValue)) - } - } - - /** - * Defines a maximum value for `Ordered` values, by default the value must be less than or equal to the constraint parameter - * - * '''name'''[constraint.max(maxValue)] - * '''error'''[error.max(maxValue)] or [error.max.strict(maxValue)] - */ - def max[T]( - maxValue: T, - strict: Boolean = false, - errorMessage: String = "error.max", - strictErrorMessage: String = "error.max.strict" - )(implicit ordering: scala.math.Ordering[T]): Constraint[T] = Constraint[T]("constraint.max", maxValue) { o => - (ordering.compare(o, maxValue).sign, strict) match { - case (-1, _) | (0, false) => Valid - case (_, false) => Invalid(ValidationError(errorMessage, maxValue)) - case (_, true) => Invalid(ValidationError(strictErrorMessage, maxValue)) - } - } - - /** - * Defines a minimum length constraint for `String` values, i.e. the string’s length must be greater than or equal to the constraint parameter - * - * '''name'''[constraint.minLength(length)] - * '''error'''[error.minLength(length)] - */ - def minLength(length: Int, errorMessage: String = "error.minLength"): Constraint[String] = - Constraint[String]("constraint.minLength", length) { o => - require(length >= 0, "string minLength must not be negative") - if (o == null) Invalid(ValidationError(errorMessage, length)) - else if (o.size >= length) Valid - else Invalid(ValidationError(errorMessage, length)) - } - - /** - * Defines a maximum length constraint for `String` values, i.e. the string’s length must be less than or equal to the constraint parameter - * - * '''name'''[constraint.maxLength(length)] - * '''error'''[error.maxLength(length)] - */ - def maxLength(length: Int, errorMessage: String = "error.maxLength"): Constraint[String] = - Constraint[String]("constraint.maxLength", length) { o => - require(length >= 0, "string maxLength must not be negative") - if (o == null) Invalid(ValidationError(errorMessage, length)) - else if (o.size <= length) Valid - else Invalid(ValidationError(errorMessage, length)) - } - - /** - * Defines a regular expression constraint for `String` values, i.e. the string must match the regular expression pattern - * - * '''name'''[constraint.pattern(regex)] or defined by the name parameter. - * '''error'''[error.pattern(regex)] or defined by the error parameter. - */ - def pattern( - regex: => scala.util.matching.Regex, - name: String = "constraint.pattern", - error: String = "error.pattern" - ): Constraint[String] = Constraint[String](name, () => regex) { o => - require(regex != null, "regex must not be null") - require(name != null, "name must not be null") - require(error != null, "error must not be null") - - if (o == null) Invalid(ValidationError(error, regex)) - else regex.unapplySeq(o).map(_ => Valid).getOrElse(Invalid(ValidationError(error, name))) - } - -} - -/** - * A validation result. - */ -sealed trait ValidationResult - -/** - * Validation was a success. - */ -case object Valid extends ValidationResult - -/** - * Validation was a failure. - * - * @param errors the resulting errors - */ -case class Invalid(errors: Seq[ValidationError]) extends ValidationResult { - - /** - * Combines these validation errors with another validation failure. - * - * @param other validation failure - * @return a new merged `Invalid` - */ - def ++(other: Invalid): Invalid = Invalid(this.errors ++ other.errors) -} - -/** - * This object provides helper methods to construct `Invalid` values. - */ -object Invalid { - - /** - * Creates an `Invalid` value with a single error. - * - * @param error the validation error - * @return an `Invalid` value - */ - def apply(error: ValidationError): Invalid = Invalid(Seq(error)) - - /** - * Creates an `Invalid` value with a single error. - * - * @param error the validation error message - * @param args the validation error message arguments - * @return an `Invalid` value - */ - def apply(error: String, args: Any*): Invalid = Invalid(Seq(ValidationError(error, args: _*))) -} - -object ParameterValidator { - def apply[T](constraints: Iterable[Constraint[T]], optionalParam: Option[T]*) = - optionalParam.flatMap { - _.map { param => - constraints.flatMap { - _(param) match { - case i: Invalid => Some(i) - case _ => None - } - } - } - }.flatten match { - case Nil => Valid - case invalids => - invalids.reduceLeft { (a, b) => - a ++ b - } - } -} - -/** - * A validation error. - * - * @param messages the error message, if more then one message is passed it will use the last one - * @param args the error message arguments - */ -case class ValidationError(messages: Seq[String], args: Any*) { - - lazy val message = messages.last - -} - -object ValidationError { - - - def apply(message: String, args: Any*) = new ValidationError(Seq(message), args: _*) - -} diff --git a/common/src/main/scala/net/psforever/config/EnumReflector.scala b/common/src/main/scala/net/psforever/config/EnumReflector.scala deleted file mode 100644 index eb251081..00000000 --- a/common/src/main/scala/net/psforever/config/EnumReflector.scala +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2019 PSForever -package net.psforever.config - -import scala.reflect.runtime.universe._ - -/** - * Scala [[Enumeration]] helpers implementing Scala versions of - * Java's [[java.lang.Enum.valueOf(Class[Enum], String)]]. - * @author Dmitriy Yefremov (http://yefremov.net/blog/scala-enum-by-name/) - */ -object EnumReflector { - - private val mirror: Mirror = runtimeMirror(getClass.getClassLoader) - - /** - * Returns a value of the specified enumeration with the given name. - * @param name value name - * @tparam T enumeration type - * @return enumeration value, see [[scala.Enumeration.withName(String)]] - */ - def withName[T <: Enumeration#Value: TypeTag](name: String): T = { - typeOf[T] match { - case valueType @ TypeRef(enumType, _, _) => - val methodSymbol = factoryMethodSymbol(enumType, "withName") - val moduleSymbol = enumType.termSymbol.asModule - reflect(moduleSymbol, methodSymbol)(name).asInstanceOf[T] - } - } - - /** - * Returns the set of values of an enumeration - * @tparam T enumeration type - * @return possible enumeration values, see [[scala.Enumeration.values()]] - */ - def values[T <: Enumeration#ValueSet: TypeTag]: T = { - typeOf[T] match { - case valueType @ TypeRef(enumType, _, _) => - val methodSymbol = factoryMethodSymbol(enumType, "values") - val moduleSymbol = enumType.termSymbol.asModule - reflect(moduleSymbol, methodSymbol)().asInstanceOf[T] - } - } - - private def factoryMethodSymbol(enumType: Type, name : String): MethodSymbol = { - enumType.member(TermName(name)).asMethod - } - - private def reflect(module: ModuleSymbol, method: MethodSymbol)(args: Any*): Any = { - val moduleMirror = mirror.reflectModule(module) - val instanceMirror = mirror.reflect(moduleMirror.instance) - instanceMirror.reflectMethod(method)(args:_*) - } - -} diff --git a/common/src/main/scala/net/psforever/crypto/CryptoInterface.scala b/common/src/main/scala/net/psforever/crypto/CryptoInterface.scala index 0e144dbe..d337b18c 100644 --- a/common/src/main/scala/net/psforever/crypto/CryptoInterface.scala +++ b/common/src/main/scala/net/psforever/crypto/CryptoInterface.scala @@ -4,33 +4,33 @@ package net.psforever.crypto import com.sun.jna.ptr.IntByReference import net.psforever.IFinalizable import sna.Library -import com.sun.jna.{NativeLibrary, Pointer} +import com.sun.jna.Pointer import scodec.bits.ByteVector object CryptoInterface { - final val libName = "pscrypto" - final val fullLibName = libName + final val libName = "pscrypto" + final val fullLibName = libName final val PSCRYPTO_VERSION_MAJOR = 1 final val PSCRYPTO_VERSION_MINOR = 1 /** - NOTE: this is a single, global shared library for the entire server's crypto needs - - Unfortunately, access to this object didn't used to be synchronized. I noticed that - tests for this module were hanging ("arrive at a shared secret" & "must fail to agree on - a secret..."). This heisenbug was responsible for failed Travis test runs and developer - issues as well. Using Windows minidumps, I tracked the issue to a single thread deep in - pscrypto.dll. It appeared to be executing an EB FE instruction (on Intel x86 this is - `jmp $-2` or jump to self), which is an infinite loop. The stack trace made little to no - sense and after banging my head on the wall for many hours, I assumed that something deep - in CryptoPP, the libgcc libraries, or MSVC++ was the cause (or myself). Now all access to - pscrypto functions that allocate and deallocate memory (DH_Start, RC5_Init) are synchronized. - This *appears* to have fixed the problem. - */ + * NOTE: this is a single, global shared library for the entire server's crypto needs + * + * Unfortunately, access to this object didn't used to be synchronized. I noticed that + * tests for this module were hanging ("arrive at a shared secret" & "must fail to agree on + * a secret..."). This heisenbug was responsible for failed Travis test runs and developer + * issues as well. Using Windows minidumps, I tracked the issue to a single thread deep in + * pscrypto.dll. It appeared to be executing an EB FE instruction (on Intel x86 this is + * `jmp $-2` or jump to self), which is an infinite loop. The stack trace made little to no + * sense and after banging my head on the wall for many hours, I assumed that something deep + * in CryptoPP, the libgcc libraries, or MSVC++ was the cause (or myself). Now all access to + * pscrypto functions that allocate and deallocate memory (DH_Start, RC5_Init) are synchronized. + * This *appears* to have fixed the problem. + */ final val psLib = new Library(libName) final val RC5_BLOCK_SIZE = 8 - final val MD5_MAC_SIZE = 16 + final val MD5_MAC_SIZE = 16 val functionsList = List( "PSCrypto_Init", @@ -51,7 +51,7 @@ object CryptoInterface { * Used to initialize the crypto library at runtime. The version is checked and * all functions are mapped. */ - def initialize() : Unit = { + def initialize(): Unit = { // preload all library functions for speed functionsList foreach psLib.prefetch @@ -60,24 +60,26 @@ object CryptoInterface { psLib.PSCrypto_Get_Version(libraryMajor, libraryMinor)[Unit] - if(!psLib.PSCrypto_Init(PSCRYPTO_VERSION_MAJOR, PSCRYPTO_VERSION_MINOR)[Boolean]) { - throw new IllegalArgumentException(s"Invalid PSCrypto library version ${libraryMajor.getValue}.${libraryMinor.getValue}. Expected " + - s"$PSCRYPTO_VERSION_MAJOR.$PSCRYPTO_VERSION_MINOR") + if (!psLib.PSCrypto_Init(PSCRYPTO_VERSION_MAJOR, PSCRYPTO_VERSION_MINOR)[Boolean]) { + throw new IllegalArgumentException( + s"Invalid PSCrypto library version ${libraryMajor.getValue}.${libraryMinor.getValue}. Expected " + + s"$PSCRYPTO_VERSION_MAJOR.$PSCRYPTO_VERSION_MINOR" + ) } } /** - * Used for debugging object loading - */ - def printEnvironment() : Unit = { + * Used for debugging object loading + */ + def printEnvironment(): Unit = { import java.io.File - val classpath = System.getProperty("java.class.path") + val classpath = System.getProperty("java.class.path") val classpathEntries = classpath.split(File.pathSeparator) val myLibraryPath = System.getProperty("user.dir") - val jnaLibrary = System.getProperty("jna.library.path") - val javaLibrary = System.getProperty("java.library.path") + val jnaLibrary = System.getProperty("jna.library.path") + val javaLibrary = System.getProperty("java.library.path") println("User dir: " + myLibraryPath) println("JNA Lib: " + jnaLibrary) println("Java Lib: " + javaLibrary) @@ -87,13 +89,13 @@ object CryptoInterface { println("Required data model: " + System.getProperty("sun.arch.data.model")) } - def MD5MAC(key : ByteVector, message : ByteVector, bytesWanted : Int) : ByteVector = { + def MD5MAC(key: ByteVector, message: ByteVector, bytesWanted: Int): ByteVector = { val out = Array.ofDim[Byte](bytesWanted) // WARNING BUG: the function must be cast to something (even if void) otherwise it doesnt work val ret = psLib.MD5_MAC(key.toArray, key.length, message.toArray, message.length, out, out.length)[Boolean] - if(!ret) + if (!ret) throw new Exception("MD5MAC failed to process") ByteVector(out) @@ -106,15 +108,15 @@ object CryptoInterface { * @param mac1 A MAC value * @param mac2 Another MAC value */ - def verifyMAC(mac1 : ByteVector, mac2 : ByteVector) : Boolean = { + def verifyMAC(mac1: ByteVector, mac2: ByteVector): Boolean = { var okay = true // prevent byte by byte guessing - if(mac1.length != mac2.length) + if (mac1.length != mac2.length) return false - for(i <- 0 until mac1.length.toInt) { - okay = okay && mac1{i} == mac2{i} + for (i <- 0 until mac1.length.toInt) { + okay = okay && mac1 { i } == mac2 { i } } okay @@ -124,22 +126,22 @@ object CryptoInterface { var started = false // these types MUST be Arrays of bytes for JNA to work val privateKey = Array.ofDim[Byte](16) - val publicKey = Array.ofDim[Byte](16) - val p = Array.ofDim[Byte](16) - val g = Array.ofDim[Byte](16) - var dhHandle = Pointer.NULL + val publicKey = Array.ofDim[Byte](16) + val p = Array.ofDim[Byte](16) + val g = Array.ofDim[Byte](16) + var dhHandle = Pointer.NULL - def start(modulus : ByteVector, generator : ByteVector) : Unit = { + def start(modulus: ByteVector, generator: ByteVector): Unit = { assertNotClosed - if(started) + if (started) throw new IllegalStateException("DH state has already been started") psLib.synchronized { dhHandle = psLib.DH_Start(modulus.toArray, generator.toArray, privateKey, publicKey)[Pointer] } - if(dhHandle == Pointer.NULL) + if (dhHandle == Pointer.NULL) throw new Exception("DH initialization failed!") modulus.copyToArray(p, 0) @@ -148,37 +150,37 @@ object CryptoInterface { started = true } - def start() : Unit = { + def start(): Unit = { assertNotClosed - if(started) + if (started) throw new IllegalStateException("DH state has already been started") psLib.synchronized { dhHandle = psLib.DH_Start_Generate(privateKey, publicKey, p, g)[Pointer] } - if(dhHandle == Pointer.NULL) + if (dhHandle == Pointer.NULL) throw new Exception("DH initialization failed!") started = true } - def agree(otherPublicKey : ByteVector) = { - if(!started) + def agree(otherPublicKey: ByteVector) = { + if (!started) throw new IllegalStateException("DH state has not been started") val agreedValue = Array.ofDim[Byte](16) - val agreed = psLib.DH_Agree(dhHandle, agreedValue, privateKey, otherPublicKey.toArray)[Boolean] + val agreed = psLib.DH_Agree(dhHandle, agreedValue, privateKey, otherPublicKey.toArray)[Boolean] - if(!agreed) + if (!agreed) throw new Exception("Failed to DH agree") ByteVector.view(agreedValue) } - private def checkAndReturnView(array : Array[Byte]) = { - if(!started) + private def checkAndReturnView(array: Array[Byte]) = { + if (!started) throw new IllegalStateException("DH state has not been started") ByteVector.view(array) @@ -201,7 +203,7 @@ object CryptoInterface { } override def close = { - if(started) { + if (started) { // TODO: zero private key material psLib.synchronized { psLib.Free_DH(dhHandle)[Unit] @@ -213,46 +215,45 @@ object CryptoInterface { } } - class CryptoState(val decryptionKey : ByteVector, - val encryptionKey : ByteVector) extends IFinalizable { + class CryptoState(val decryptionKey: ByteVector, val encryptionKey: ByteVector) extends IFinalizable { // Note that the keys must be returned as primitive Arrays for JNA to work - var encCryptoHandle : Pointer = Pointer.NULL - var decCryptoHandle : Pointer = Pointer.NULL + var encCryptoHandle: Pointer = Pointer.NULL + var decCryptoHandle: Pointer = Pointer.NULL psLib.synchronized { encCryptoHandle = psLib.RC5_Init(encryptionKey.toArray, encryptionKey.length, true)[Pointer] decCryptoHandle = psLib.RC5_Init(decryptionKey.toArray, decryptionKey.length, false)[Pointer] } - if(encCryptoHandle == Pointer.NULL) + if (encCryptoHandle == Pointer.NULL) throw new Exception("Encryption initialization failed!") - if(decCryptoHandle == Pointer.NULL) + if (decCryptoHandle == Pointer.NULL) throw new Exception("Decryption initialization failed!") - def encrypt(plaintext : ByteVector) : ByteVector = { - if(plaintext.length % RC5_BLOCK_SIZE != 0) + def encrypt(plaintext: ByteVector): ByteVector = { + if (plaintext.length % RC5_BLOCK_SIZE != 0) throw new IllegalArgumentException(s"input must be padded to the nearest $RC5_BLOCK_SIZE byte boundary") val ciphertext = Array.ofDim[Byte](plaintext.length.toInt) val ret = psLib.RC5_Encrypt(encCryptoHandle, plaintext.toArray, plaintext.length, ciphertext)[Boolean] - if(!ret) + if (!ret) throw new Exception("Failed to encrypt plaintext") ByteVector.view(ciphertext) } - def decrypt(ciphertext : ByteVector) : ByteVector = { - if(ciphertext.length % RC5_BLOCK_SIZE != 0) + def decrypt(ciphertext: ByteVector): ByteVector = { + if (ciphertext.length % RC5_BLOCK_SIZE != 0) throw new IllegalArgumentException(s"input must be padded to the nearest $RC5_BLOCK_SIZE byte boundary") val plaintext = Array.ofDim[Byte](ciphertext.length.toInt) val ret = psLib.RC5_Decrypt(decCryptoHandle, ciphertext.toArray, ciphertext.length, plaintext)[Boolean] - if(!ret) + if (!ret) throw new Exception("Failed to decrypt ciphertext") ByteVector.view(plaintext) @@ -267,17 +268,20 @@ object CryptoInterface { } } - class CryptoStateWithMAC(decryptionKey : ByteVector, - encryptionKey : ByteVector, - val decryptionMACKey : ByteVector, - val encryptionMACKey : ByteVector) extends CryptoState(decryptionKey, encryptionKey) { + class CryptoStateWithMAC( + decryptionKey: ByteVector, + encryptionKey: ByteVector, + val decryptionMACKey: ByteVector, + val encryptionMACKey: ByteVector + ) extends CryptoState(decryptionKey, encryptionKey) { + /** * Performs a MAC operation over the message. Used when encrypting packets * * @param message the input message * @return ByteVector */ - def macForEncrypt(message : ByteVector) : ByteVector = { + def macForEncrypt(message: ByteVector): ByteVector = { MD5MAC(encryptionMACKey, message, MD5_MAC_SIZE) } @@ -287,18 +291,18 @@ object CryptoInterface { * @param message the input message * @return ByteVector */ - def macForDecrypt(message : ByteVector) : ByteVector = { + def macForDecrypt(message: ByteVector): ByteVector = { MD5MAC(decryptionMACKey, message, MD5_MAC_SIZE) } /** * MACs the plaintext message, encrypts it, and then returns the encrypted message with the * MAC appended to the end. - * + * * @param message Arbitrary set of bytes * @return ByteVector */ - def macAndEncrypt(message : ByteVector) : ByteVector = { + def macAndEncrypt(message: ByteVector): ByteVector = { encrypt(message) ++ MD5MAC(encryptionMACKey, message, MD5_MAC_SIZE) } } diff --git a/common/src/main/scala/net/psforever/newcodecs/BinaryChoiceCodec.scala b/common/src/main/scala/net/psforever/newcodecs/BinaryChoiceCodec.scala index 6f64474c..5e22389a 100644 --- a/common/src/main/scala/net/psforever/newcodecs/BinaryChoiceCodec.scala +++ b/common/src/main/scala/net/psforever/newcodecs/BinaryChoiceCodec.scala @@ -1,13 +1,14 @@ // Copyright (c) 2017 PSForever package net.psforever.newcodecs -import scodec.{ Codec, SizeBound } +import scodec.Codec import scodec.bits.BitVector -private[newcodecs] final class BinaryChoiceCodec[A](choice: Boolean, codec_true: => Codec[A], codec_false: => Codec[A]) extends Codec[A] { +private[newcodecs] final class BinaryChoiceCodec[A](choice: Boolean, codec_true: => Codec[A], codec_false: => Codec[A]) + extends Codec[A] { private lazy val evaluatedCodec_true = codec_true - + private lazy val evaluatedCodec_false = codec_false override def sizeBound = if (choice) evaluatedCodec_true.sizeBound else evaluatedCodec_false.sizeBound @@ -26,6 +27,7 @@ private[newcodecs] final class BinaryChoiceCodec[A](choice: Boolean, codec_true: evaluatedCodec_false.decode(buffer) } - override def toString = if(choice) s"binarychoice(true, $evaluatedCodec_true, ?)" else "binarychoice(false, ?, $evaluatedCodec_false)" + override def toString = + if (choice) s"binarychoice(true, $evaluatedCodec_true, ?)" else "binarychoice(false, ?, $evaluatedCodec_false)" } diff --git a/common/src/main/scala/net/psforever/newcodecs/PrefixedVectorCodec.scala b/common/src/main/scala/net/psforever/newcodecs/PrefixedVectorCodec.scala index dc875031..e8413e57 100644 --- a/common/src/main/scala/net/psforever/newcodecs/PrefixedVectorCodec.scala +++ b/common/src/main/scala/net/psforever/newcodecs/PrefixedVectorCodec.scala @@ -4,30 +4,33 @@ package net.psforever.newcodecs import scodec._ import scodec.bits.BitVector -final class PrefixedVectorCodec[A](firstCodec: Codec[A], codec: Codec[A], limit: Option[Int] = None) extends Codec[Vector[A]] { +final class PrefixedVectorCodec[A](firstCodec: Codec[A], codec: Codec[A], limit: Option[Int] = None) + extends Codec[Vector[A]] { - def sizeBound = limit match { - case None => SizeBound.unknown - case Some(lim) => codec.sizeBound * lim.toLong - } + def sizeBound = + limit match { + case None => SizeBound.unknown + case Some(lim) => codec.sizeBound * lim.toLong + } - def encode(vector: Vector[A]) = Encoder.encodeSeq(firstCodec)(vector.slice(0,1)).map { bits => + def encode(vector: Vector[A]) = + Encoder.encodeSeq(firstCodec)(vector.slice(0, 1)).map { bits => if (vector.length > 1) bits ++ (Encoder.encodeSeq(codec)(vector.tail) getOrElse BitVector.empty) else bits - } + } - def decode(buffer: BitVector) : scodec.Attempt[scodec.DecodeResult[Vector[A]]] = { - Decoder.decodeCollect[Vector, A](firstCodec, Some(1))(buffer) match { - case Attempt.Successful(firstValue) => - Decoder.decodeCollect[Vector, A](codec, limit map { _ - 1 })(firstValue.remainder) match { - case Attempt.Successful(secondValue) => - Attempt.successful(DecodeResult(firstValue.value ++ secondValue.value, secondValue.remainder)) - case Attempt.Failure(e) => Attempt.failure(e) - } - case Attempt.Failure(e) => Attempt.failure(e) - } + def decode(buffer: BitVector): scodec.Attempt[scodec.DecodeResult[Vector[A]]] = { + Decoder.decodeCollect[Vector, A](firstCodec, Some(1))(buffer) match { + case Attempt.Successful(firstValue) => + Decoder.decodeCollect[Vector, A](codec, limit map { _ - 1 })(firstValue.remainder) match { + case Attempt.Successful(secondValue) => + Attempt.successful(DecodeResult(firstValue.value ++ secondValue.value, secondValue.remainder)) + case Attempt.Failure(e) => Attempt.failure(e) + } + case Attempt.Failure(e) => Attempt.failure(e) + } } override def toString = s"vector($codec)" diff --git a/common/src/main/scala/net/psforever/newcodecs/QuantizedDoubleCodec.scala b/common/src/main/scala/net/psforever/newcodecs/QuantizedDoubleCodec.scala index 110f319e..e1a6a2d1 100644 --- a/common/src/main/scala/net/psforever/newcodecs/QuantizedDoubleCodec.scala +++ b/common/src/main/scala/net/psforever/newcodecs/QuantizedDoubleCodec.scala @@ -1,8 +1,8 @@ // Copyright (c) 2017 PSForever package net.psforever.newcodecs -import scodec.{ Attempt, Codec, DecodeResult, Err, SizeBound } -import scodec.bits.{ BitVector, ByteOrdering } +import scodec.{Attempt, Codec, DecodeResult, Err, SizeBound} +import scodec.bits.{BitVector, ByteOrdering} final class QuantizedDoubleCodec(min: Double, max: Double, bits: Int) extends Codec[Double] { @@ -14,14 +14,14 @@ final class QuantizedDoubleCodec(min: Double, max: Double, bits: Int) extends Co override def sizeBound = SizeBound.exact(bitsL) - def QuantizeDouble(value : Double) : Int = { - val range : Double = max - min; + def QuantizeDouble(value: Double): Int = { + val range: Double = max - min; if (range == 0.0) return 0 - val bit_max : Int = 1 << bits; - val rounded_quantized : Int = math.floor((value - min) * bit_max.toDouble / range + 0.5).toInt + val bit_max: Int = 1 << bits; + val rounded_quantized: Int = math.floor((value - min) * bit_max.toDouble / range + 0.5).toInt if (rounded_quantized < 0) return 0 @@ -32,7 +32,7 @@ final class QuantizedDoubleCodec(min: Double, max: Double, bits: Int) extends Co return rounded_quantized } - def UnquantizeDouble(value : Int) : Double = { + def UnquantizeDouble(value: Int): Double = { return ((max - min) * value.toDouble / (1 << bitsL.toInt).toDouble + min) } @@ -42,7 +42,9 @@ final class QuantizedDoubleCodec(min: Double, max: Double, bits: Int) extends Co override def decode(buffer: BitVector) = { if (buffer.sizeGreaterThanOrEqual(bitsL)) - Attempt.successful(DecodeResult(UnquantizeDouble(buffer.take(bitsL).toInt(false, ByteOrdering.LittleEndian)), buffer.drop(bitsL))) + Attempt.successful( + DecodeResult(UnquantizeDouble(buffer.take(bitsL).toInt(false, ByteOrdering.LittleEndian)), buffer.drop(bitsL)) + ) else Attempt.failure(Err.insufficientBits(bitsL, buffer.size)) } diff --git a/common/src/main/scala/net/psforever/newcodecs/package.scala b/common/src/main/scala/net/psforever/newcodecs/package.scala index 103dced8..a59befe4 100644 --- a/common/src/main/scala/net/psforever/newcodecs/package.scala +++ b/common/src/main/scala/net/psforever/newcodecs/package.scala @@ -2,23 +2,28 @@ package net.psforever.newcodecs import scodec.Attempt -import scodec.Attempt.{Failure, Successful} import scodec._ -import scodec.bits.BitVector package object newcodecs { def q_double(min: Double, max: Double, bits: Int): Codec[Double] = new QuantizedDoubleCodec(min, max, bits) - def q_float(min : Double, max : Double, bits : Int): Codec[Float] = q_double(min, max, bits).narrow(v => Attempt.successful(v.toFloat), _.toDouble) + def q_float(min: Double, max: Double, bits: Int): Codec[Float] = + q_double(min, max, bits).narrow(v => Attempt.successful(v.toFloat), _.toDouble) - def binary_choice[A](choice: Boolean, codec_true: => Codec[A], codec_false: => Codec[A]): Codec[A] = new BinaryChoiceCodec(choice, codec_true, codec_false) + def binary_choice[A](choice: Boolean, codec_true: => Codec[A], codec_false: => Codec[A]): Codec[A] = + new BinaryChoiceCodec(choice, codec_true, codec_false) def prefixedVectorOfN[A](countCodec: Codec[Int], firstValueCodec: Codec[A], valueCodec: Codec[A]): Codec[Vector[A]] = - countCodec. - flatZip { count => new PrefixedVectorCodec(firstValueCodec, valueCodec, Some(count)) }. - narrow[Vector[A]]({ case (cnt, xs) => - if (xs.size == cnt) Attempt.successful(xs) - else Attempt.failure(Err(s"Insufficient number of elements: decoded ${xs.size} but should have decoded $cnt")) - }, xs => (xs.size, xs)). - withToString(s"vectorOfN($countCodec, $valueCodec)") + countCodec + .flatZip { count => new PrefixedVectorCodec(firstValueCodec, valueCodec, Some(count)) } + .narrow[Vector[A]]( + { + case (cnt, xs) => + if (xs.size == cnt) Attempt.successful(xs) + else + Attempt.failure(Err(s"Insufficient number of elements: decoded ${xs.size} but should have decoded $cnt")) + }, + xs => (xs.size, xs) + ) + .withToString(s"vectorOfN($countCodec, $valueCodec)") } diff --git a/common/src/main/scala/net/psforever/objects/Account.scala b/common/src/main/scala/net/psforever/objects/Account.scala index 1e2de47c..4f8b1871 100644 --- a/common/src/main/scala/net/psforever/objects/Account.scala +++ b/common/src/main/scala/net/psforever/objects/Account.scala @@ -1,8 +1,8 @@ // Copyright (c) 2017 PSForever package net.psforever.objects -class Account(private val accountId : Int, private val username : String, private val gm : Boolean = false) { - def AccountId : Int = accountId - def Username : String = username - def GM : Boolean = gm +class Account(private val accountId: Int, private val username: String, private val gm: Boolean = false) { + def AccountId: Int = accountId + def Username: String = username + def GM: Boolean = gm } diff --git a/common/src/main/scala/net/psforever/objects/AmmoBox.scala b/common/src/main/scala/net/psforever/objects/AmmoBox.scala index 624230c6..f0372601 100644 --- a/common/src/main/scala/net/psforever/objects/AmmoBox.scala +++ b/common/src/main/scala/net/psforever/objects/AmmoBox.scala @@ -5,37 +5,36 @@ import net.psforever.objects.definition.AmmoBoxDefinition import net.psforever.objects.equipment.{Ammo, Equipment} import net.psforever.types.PlanetSideEmpire -class AmmoBox(private val ammoDef : AmmoBoxDefinition, - cap : Option[Int] = None - ) extends Equipment { - private var capacity = if(cap.isDefined) { AmmoBox.limitCapacity(cap.get, 1) } else { FullCapacity } +class AmmoBox(private val ammoDef: AmmoBoxDefinition, cap: Option[Int] = None) extends Equipment { + private var capacity = if (cap.isDefined) { AmmoBox.limitCapacity(cap.get, 1) } + else { FullCapacity } - def AmmoType : Ammo.Value = ammoDef.AmmoType + def AmmoType: Ammo.Value = ammoDef.AmmoType - def Capacity : Int = capacity + def Capacity: Int = capacity - def Capacity_=(toCapacity : Int) : Int = { + def Capacity_=(toCapacity: Int): Int = { capacity = AmmoBox.limitCapacity(toCapacity) Capacity } - def FullCapacity : Int = ammoDef.Capacity + def FullCapacity: Int = ammoDef.Capacity - def Definition : AmmoBoxDefinition = ammoDef + def Definition: AmmoBoxDefinition = ammoDef - override def Faction_=(fact : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = Faction + override def Faction_=(fact: PlanetSideEmpire.Value): PlanetSideEmpire.Value = Faction - override def toString : String = { + override def toString: String = { AmmoBox.toString(this) } } object AmmoBox { - def apply(ammoDef : AmmoBoxDefinition) : AmmoBox = { + def apply(ammoDef: AmmoBoxDefinition): AmmoBox = { new AmmoBox(ammoDef) } - def apply(ammoDef : AmmoBoxDefinition, capacity : Int) : AmmoBox = { + def apply(ammoDef: AmmoBoxDefinition, capacity: Int): AmmoBox = { new AmmoBox(ammoDef, Some(capacity)) } @@ -48,25 +47,25 @@ object AmmoBox { * @param box an `AmmoBox` object of unspecified capacity * @return a `List` of `AmmoBox` objects with correct capacities */ - def Split(box : AmmoBox) : List[AmmoBox] = { - val ammoDef = box.Definition - val boxCap : Int = box.Capacity - val maxCap : Int = ammoDef.Capacity - val splitCap : Int = boxCap / maxCap + def Split(box: AmmoBox): List[AmmoBox] = { + val ammoDef = box.Definition + val boxCap: Int = box.Capacity + val maxCap: Int = ammoDef.Capacity + val splitCap: Int = boxCap / maxCap box.Capacity = math.min(box.Capacity, maxCap) - val list : List[AmmoBox] = if(splitCap == 0) { Nil } else { box +: List.fill(splitCap - 1)(new AmmoBox(ammoDef)) } + val list: List[AmmoBox] = if (splitCap == 0) { Nil } + else { box +: List.fill(splitCap - 1)(new AmmoBox(ammoDef)) } val leftover = boxCap - maxCap * splitCap - if(leftover > 0) { + if (leftover > 0) { list :+ AmmoBox(ammoDef, leftover) - } - else { + } else { list } } - def limitCapacity(count : Int, min : Int = 0) : Int = math.min(math.max(min, count), 65535) + def limitCapacity(count: Int, min: Int = 0): Int = math.min(math.max(min, count), 65535) - def toString(obj : AmmoBox) : String = { + def toString(obj: AmmoBox): String = { s"box of ${obj.AmmoType} ammo (${obj.Capacity})" } } diff --git a/common/src/main/scala/net/psforever/objects/Avatar.scala b/common/src/main/scala/net/psforever/objects/Avatar.scala index 95a43ae7..80abf4dd 100644 --- a/common/src/main/scala/net/psforever/objects/Avatar.scala +++ b/common/src/main/scala/net/psforever/objects/Avatar.scala @@ -10,16 +10,28 @@ import net.psforever.types._ import scala.annotation.tailrec import scala.collection.mutable -class Avatar(private val char_id : Long, val name : String, val faction : PlanetSideEmpire.Value, val sex : CharacterGender.Value, val head : Int, val voice : CharacterVoice.Value) { +class Avatar( + private val char_id: Long, + val name: String, + val faction: PlanetSideEmpire.Value, + val sex: CharacterGender.Value, + val head: Int, + val voice: CharacterVoice.Value +) { + /** char_id, Character ID; a unique identifier corresponding to a database table row index */ /** Battle Experience Points */ - private var bep : Long = 0 + private var bep: Long = 0 + /** Command Experience Points */ - private var cep : Long = 0 - /** Cosmetics **/ - private var pStyle : Option[Cosmetics] = None + private var cep: Long = 0 + + /** Cosmetics * */ + private var pStyle: Option[Cosmetics] = None + /** Certifications */ - private val certs : mutable.Set[CertificationType.Value] = mutable.Set[CertificationType.Value]() + private val certs: mutable.Set[CertificationType.Value] = mutable.Set[CertificationType.Value]() + /** Implants
* Unlike other objects, all `ImplantSlot` objects are already built into the `Avatar`. * Additionally, implants do not have tightly-coupled "`Definition` objects" that explain a formal implant object. @@ -28,53 +40,60 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * @see `ImplantSlot` * @see `DetailedCharacterData.implants` */ - private val implants : Array[ImplantSlot] = Array.fill[ImplantSlot](3)(new ImplantSlot) + private val implants: Array[ImplantSlot] = Array.fill[ImplantSlot](3)(new ImplantSlot) + /** Equipment Loadouts
* 0-9 are Infantry loadouts
* 10-14 are Vehicle loadouts */ - private val equipmentLoadouts : LoadoutManager = new LoadoutManager(15) + private val equipmentLoadouts: LoadoutManager = new LoadoutManager(15) + /** * Squad Loadouts */ - private val squadLoadouts : LoadoutManager = new LoadoutManager(10) + private val squadLoadouts: LoadoutManager = new LoadoutManager(10) + /** Locker */ - private val locker : LockerContainer = new LockerContainer() { - override def toString : String = { + private val locker: LockerContainer = new LockerContainer() { + override def toString: String = { s"$name's ${Definition.Name}" } } - private val deployables : DeployableToolbox = new DeployableToolbox + private val deployables: DeployableToolbox = new DeployableToolbox - private var firstTimeEvents : List[String] = List[String]() + private var firstTimeEvents: List[String] = List[String]() /** * Looking For Squad:
* Indicates both a player state and the text on the marquee under the player nameplate. * Should only be valid when the player is not in a squad. */ - private var lfs : Boolean = false + private var lfs: Boolean = false + + private var vehicleOwned: Option[PlanetSideGUID] = None - private var vehicleOwned : Option[PlanetSideGUID] = None /** key - object id
* value - time last used (ms) - * */ - private var lastUsedEquipmentTimes : mutable.LongMap[Long] = mutable.LongMap[Long]() + */ + private var lastUsedEquipmentTimes: mutable.LongMap[Long] = mutable.LongMap[Long]() + /** exo-suit times are sorted by `Enumeration` order, which was determined by packet process
* key - exo-suit id
* value - time last used (ms) - * */ - private val lastUsedExoSuitTimes : Array[Long] = Array.fill[Long](ExoSuitType.values.size)(0L) + */ + private val lastUsedExoSuitTimes: Array[Long] = Array.fill[Long](ExoSuitType.values.size)(0L) + /** mechanized exo-suit times are sorted by subtype distinction, which was determined by packet process
* key - subtype id
* value - time last used (ms) - * */ - private val lastUsedMaxExoSuitTimes : Array[Long] = Array.fill[Long](4)(0L) //invalid, ai, av, aa + */ + private val lastUsedMaxExoSuitTimes: Array[Long] = Array.fill[Long](4)(0L) //invalid, ai, av, aa /** key - object id
* value - time last acquired (from a terminal) (ms) - * */ - private var lastPurchaseTimes : mutable.LongMap[Long] = mutable.LongMap[Long]() + */ + private var lastPurchaseTimes: mutable.LongMap[Long] = mutable.LongMap[Long]() + /** * To reload purchase and use timers, a string representing the item must be produced. * Point directly from the object id to the object definition and get the `Name` from that definition. @@ -83,29 +102,29 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * key - object id
* value - most basic object definition information */ - private val objectTypeNameReference : mutable.LongMap[String] = new mutable.LongMap[String]() + private val objectTypeNameReference: mutable.LongMap[String] = new mutable.LongMap[String]() - def CharId : Long = char_id + def CharId: Long = char_id - def BEP : Long = bep + def BEP: Long = bep - def BEP_=(battleExperiencePoints : Long) : Long = { + def BEP_=(battleExperiencePoints: Long): Long = { bep = math.max(0L, math.min(battleExperiencePoints, 4294967295L)) BEP } - def Certifications : mutable.Set[CertificationType.Value] = certs + def Certifications: mutable.Set[CertificationType.Value] = certs - def CEP : Long = cep + def CEP: Long = cep - def CEP_=(commandExperiencePoints : Long) : Long = { + def CEP_=(commandExperiencePoints: Long): Long = { cep = math.max(0L, math.min(commandExperiencePoints, 4294967295L)) CEP } - def PersonalStyleFeatures : Option[Cosmetics] = pStyle + def PersonalStyleFeatures: Option[Cosmetics] = pStyle - def PersonalStyleFeatures_=(app : Cosmetics) : Option[Cosmetics] = { + def PersonalStyleFeatures_=(app: Cosmetics): Option[Cosmetics] = { pStyle = Some(app) pStyle } @@ -114,7 +133,7 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * Retrieve the three implant slots for this player. * @return an `Array` of `ImplantSlot` objects */ - def Implants : Array[ImplantSlot] = implants + def Implants: Array[ImplantSlot] = implants /** * What kind of implant is installed into the given slot number? @@ -122,8 +141,9 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * @param slot the slot number * @return the tye of implant */ - def Implant(slot : Int) : ImplantType.Value = { - if(-1 < slot && slot < implants.length) { implants(slot).Implant } else { ImplantType.None } + def Implant(slot: Int): ImplantType.Value = { + if (-1 < slot && slot < implants.length) { implants(slot).Implant } + else { ImplantType.None } } /** @@ -136,8 +156,9 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * @param implant the implant being installed * @return the index of the `ImplantSlot` where the implant was installed */ - def InstallImplant(implant : ImplantDefinition) : Option[Int] = { - implants.find({p => p.Installed.contains(implant) || p.Implant == implant.Type}) match { //try to find the installed implant + def InstallImplant(implant: ImplantDefinition): Option[Int] = { + implants + .find({ p => p.Installed.contains(implant) || p.Implant == implant.Type }) match { //try to find the installed implant case None => recursiveFindImplantInSlot(implants.iterator, ImplantType.None) match { //install in a free slot case Some(slot) => @@ -164,7 +185,7 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * @param implantType the type of implant being uninstalled * @return the index of the `ImplantSlot` where the implant was found and uninstalled */ - def UninstallImplant(implantType : ImplantType.Value) : Option[Int] = { + def UninstallImplant(implantType: ImplantType.Value): Option[Int] = { recursiveFindImplantInSlot(implants.iterator, implantType) match { case Some(slot) => implants(slot).Implant = None @@ -183,22 +204,24 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet * @param index a defaulted index value representing the structure underlying the `Iterator` param * @return the index where the target implant is installed */ - @tailrec private def recursiveFindImplantInSlot(iter : Iterator[ImplantSlot], implantType : ImplantType.Value, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursiveFindImplantInSlot( + iter: Iterator[ImplantSlot], + implantType: ImplantType.Value, + index: Int = 0 + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val slot = iter.next - if(slot.Unlocked && slot.Implant == implantType) { + if (slot.Unlocked && slot.Implant == implantType) { Some(index) - } - else { + } else { recursiveFindImplantInSlot(iter, implantType, index + 1) } } } - def ResetAllImplants() : Unit = { + def ResetAllImplants(): Unit = { implants.foreach(slot => { slot.Installed match { case Some(_) => @@ -210,111 +233,110 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet }) } - def EquipmentLoadouts : LoadoutManager = equipmentLoadouts + def EquipmentLoadouts: LoadoutManager = equipmentLoadouts - def SquadLoadouts : LoadoutManager = squadLoadouts + def SquadLoadouts: LoadoutManager = squadLoadouts - def Locker : LockerContainer = locker + def Locker: LockerContainer = locker - def FifthSlot : EquipmentSlot = { + def FifthSlot: EquipmentSlot = { new OffhandEquipmentSlot(EquipmentSize.Inventory) { val obj = new LockerEquipment(locker) Equipment = obj } } - def Deployables : DeployableToolbox = deployables + def Deployables: DeployableToolbox = deployables - def FirstTimeEvents : List[String] = firstTimeEvents + def FirstTimeEvents: List[String] = firstTimeEvents - def FirstTimeEvents_=(event : String) : List[String] = FirstTimeEvents_=(List(event)) + def FirstTimeEvents_=(event: String): List[String] = FirstTimeEvents_=(List(event)) - def FirstTimeEvents_=(events : List[String]) : List[String] = { + def FirstTimeEvents_=(events: List[String]): List[String] = { firstTimeEvents ++= events FirstTimeEvents } - def LFS : Boolean = lfs + def LFS: Boolean = lfs - def LFS_=(looking : Boolean) : Boolean = { + def LFS_=(looking: Boolean): Boolean = { lfs = looking LFS } - def VehicleOwned : Option[PlanetSideGUID] = vehicleOwned + def VehicleOwned: Option[PlanetSideGUID] = vehicleOwned - def VehicleOwned_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = VehicleOwned_=(Some(guid)) + def VehicleOwned_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = VehicleOwned_=(Some(guid)) - def VehicleOwned_=(guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def VehicleOwned_=(guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { vehicleOwned = guid VehicleOwned } - def GetLastUsedTime(code : Int) : Long = { + def GetLastUsedTime(code: Int): Long = { lastUsedEquipmentTimes.get(code) match { case Some(time) => time - case None => 0 + case None => 0 } } - def GetLastUsedTime(code : ExoSuitType.Value) : Long = { + def GetLastUsedTime(code: ExoSuitType.Value): Long = { lastUsedExoSuitTimes(code.id) } - def GetLastUsedTime(code : ExoSuitType.Value, subtype : Int) : Long = { - if(code == ExoSuitType.MAX) { + def GetLastUsedTime(code: ExoSuitType.Value, subtype: Int): Long = { + if (code == ExoSuitType.MAX) { lastUsedMaxExoSuitTimes(subtype) - } - else { + } else { GetLastUsedTime(code) } } - def GetAllLastUsedTimes : Map[Long, Long] = lastUsedEquipmentTimes.toMap + def GetAllLastUsedTimes: Map[Long, Long] = lastUsedEquipmentTimes.toMap - def SetLastUsedTime(code : Int, time : Long) : Unit = { + def SetLastUsedTime(code: Int, time: Long): Unit = { lastUsedEquipmentTimes += code.toLong -> time } - def SetLastUsedTime(code : ExoSuitType.Value) : Unit = SetLastUsedTime(code, System.currentTimeMillis()) + def SetLastUsedTime(code: ExoSuitType.Value): Unit = SetLastUsedTime(code, System.currentTimeMillis()) - def SetLastUsedTime(code : ExoSuitType.Value, time : Long) : Unit = { + def SetLastUsedTime(code: ExoSuitType.Value, time: Long): Unit = { lastUsedExoSuitTimes(code.id) = time } - def SetLastUsedTime(code : ExoSuitType.Value, subtype : Int, time : Long) : Unit = { - if(code == ExoSuitType.MAX) { + def SetLastUsedTime(code: ExoSuitType.Value, subtype: Int, time: Long): Unit = { + if (code == ExoSuitType.MAX) { lastUsedMaxExoSuitTimes(subtype) = time } SetLastUsedTime(code, time) } - def GetLastPurchaseTime(code : Int) : Long = { + def GetLastPurchaseTime(code: Int): Long = { lastPurchaseTimes.get(code) match { case Some(time) => time - case None => 0 + case None => 0 } } - def GetAllLastPurchaseTimes : Map[Long, Long] = lastPurchaseTimes.toMap + def GetAllLastPurchaseTimes: Map[Long, Long] = lastPurchaseTimes.toMap - def SetLastPurchaseTime(code : Int, time : Long) : Unit = { + def SetLastPurchaseTime(code: Int, time: Long): Unit = { lastPurchaseTimes += code.toLong -> time } - def ObjectTypeNameReference(id : Long) : String = { + def ObjectTypeNameReference(id: Long): String = { objectTypeNameReference.get(id) match { case Some(objectName) => objectName - case None => "" + case None => "" } } - def ObjectTypeNameReference(id : Long, name : String) : String = { + def ObjectTypeNameReference(id: Long, name: String): String = { objectTypeNameReference(id) = name name } - def Definition : AvatarDefinition = GlobalDefinitions.avatar + def Definition: AvatarDefinition = GlobalDefinitions.avatar /* Merit Commendations and Ribbons @@ -326,19 +348,20 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet def canEqual(other: Any): Boolean = other.isInstanceOf[Avatar] - override def equals(other : Any) : Boolean = other match { - case that: Avatar => - (that canEqual this) && - name == that.name && - faction == that.faction && - sex == that.sex && - head == that.head && - voice == that.voice - case _ => - false - } + override def equals(other: Any): Boolean = + other match { + case that: Avatar => + (that canEqual this) && + name == that.name && + faction == that.faction && + sex == that.sex && + head == that.head && + voice == that.voice + case _ => + false + } - override def hashCode() : Int = { + override def hashCode(): Int = { val state = Seq(name, faction, sex, head, voice) state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) } @@ -347,9 +370,15 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet } object Avatar { - def apply(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : CharacterVoice.Value) : Avatar = { + def apply( + name: String, + faction: PlanetSideEmpire.Value, + sex: CharacterGender.Value, + head: Int, + voice: CharacterVoice.Value + ): Avatar = { new Avatar(0L, name, faction, sex, head, voice) } - def toString(avatar : Avatar) : String = s"${avatar.faction} ${avatar.name}" + def toString(avatar: Avatar): String = s"${avatar.faction} ${avatar.name}" } diff --git a/common/src/main/scala/net/psforever/objects/BoomerDeployable.scala b/common/src/main/scala/net/psforever/objects/BoomerDeployable.scala index 39523d25..42b29399 100644 --- a/common/src/main/scala/net/psforever/objects/BoomerDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/BoomerDeployable.scala @@ -1,20 +1,20 @@ // Copyright (c) 2017 PSForever package net.psforever.objects -class BoomerDeployable(cdef : ExplosiveDeployableDefinition) extends ExplosiveDeployable(cdef) { - private var trigger : Option[BoomerTrigger] = None +class BoomerDeployable(cdef: ExplosiveDeployableDefinition) extends ExplosiveDeployable(cdef) { + private var trigger: Option[BoomerTrigger] = None - def Trigger : Option[BoomerTrigger] = trigger + def Trigger: Option[BoomerTrigger] = trigger - def Trigger_=(item : BoomerTrigger) : Option[BoomerTrigger] = { - if(trigger.isEmpty) { //can only set trigger once + def Trigger_=(item: BoomerTrigger): Option[BoomerTrigger] = { + if (trigger.isEmpty) { //can only set trigger once trigger = Some(item) } Trigger } - def Trigger_=(item : Option[BoomerTrigger]) : Option[BoomerTrigger] = { - if(item.isEmpty) { + def Trigger_=(item: Option[BoomerTrigger]): Option[BoomerTrigger] = { + if (item.isEmpty) { trigger = None } Trigger diff --git a/common/src/main/scala/net/psforever/objects/BoomerTrigger.scala b/common/src/main/scala/net/psforever/objects/BoomerTrigger.scala index bef7ea3b..62dcbb91 100644 --- a/common/src/main/scala/net/psforever/objects/BoomerTrigger.scala +++ b/common/src/main/scala/net/psforever/objects/BoomerTrigger.scala @@ -5,5 +5,5 @@ import net.psforever.objects.equipment.RemoteUnit import net.psforever.types.PlanetSideEmpire class BoomerTrigger extends SimpleItem(GlobalDefinitions.boomer_trigger) with RemoteUnit { - override def Faction_=(fact : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = Faction + override def Faction_=(fact: PlanetSideEmpire.Value): PlanetSideEmpire.Value = Faction } diff --git a/common/src/main/scala/net/psforever/objects/ConstructionItem.scala b/common/src/main/scala/net/psforever/objects/ConstructionItem.scala index fb8fb705..422e00c6 100644 --- a/common/src/main/scala/net/psforever/objects/ConstructionItem.scala +++ b/common/src/main/scala/net/psforever/objects/ConstructionItem.scala @@ -20,47 +20,48 @@ import net.psforever.types.CertificationType * indicate whether the current output product is something the player is permitted to utilize. * @param cItemDef the `ObjectDefinition` that constructs this item and maintains some of its immutable fields */ -class ConstructionItem(private val cItemDef : ConstructionItemDefinition) extends Equipment - with FireModeSwitch[ConstructionFireMode] { - private var fireModeIndex : Int = 0 - private var ammoTypeIndex : Int = 0 +class ConstructionItem(private val cItemDef: ConstructionItemDefinition) + extends Equipment + with FireModeSwitch[ConstructionFireMode] { + private var fireModeIndex: Int = 0 + private var ammoTypeIndex: Int = 0 - def FireModeIndex : Int = fireModeIndex + def FireModeIndex: Int = fireModeIndex - def FireModeIndex_=(index : Int) : Int = { + def FireModeIndex_=(index: Int): Int = { fireModeIndex = index % Definition.Modes.length FireModeIndex } - def FireMode : ConstructionFireMode = Definition.Modes(fireModeIndex) + def FireMode: ConstructionFireMode = Definition.Modes(fireModeIndex) - def NextFireMode : ConstructionFireMode = { + def NextFireMode: ConstructionFireMode = { FireModeIndex = FireModeIndex + 1 ammoTypeIndex = 0 FireMode } - def AmmoTypeIndex : Int = ammoTypeIndex + def AmmoTypeIndex: Int = ammoTypeIndex - def AmmoTypeIndex_=(index : Int) : Int = { + def AmmoTypeIndex_=(index: Int): Int = { ammoTypeIndex = index % FireMode.Deployables.length AmmoTypeIndex } - def AmmoType : DeployedItem.Value = FireMode.Deployables(ammoTypeIndex) + def AmmoType: DeployedItem.Value = FireMode.Deployables(ammoTypeIndex) - def NextAmmoType : DeployedItem.Value = { + def NextAmmoType: DeployedItem.Value = { AmmoTypeIndex = AmmoTypeIndex + 1 FireMode.Deployables(ammoTypeIndex) } - def ModePermissions : Set[CertificationType.Value] = FireMode.Permissions(ammoTypeIndex) + def ModePermissions: Set[CertificationType.Value] = FireMode.Permissions(ammoTypeIndex) - def Definition : ConstructionItemDefinition = cItemDef + def Definition: ConstructionItemDefinition = cItemDef } object ConstructionItem { - def apply(cItemDef : ConstructionItemDefinition) : ConstructionItem = { + def apply(cItemDef: ConstructionItemDefinition): ConstructionItem = { new ConstructionItem(cItemDef) } } diff --git a/common/src/main/scala/net/psforever/objects/Default.scala b/common/src/main/scala/net/psforever/objects/Default.scala index 33787813..e4fa9c29 100644 --- a/common/src/main/scala/net/psforever/objects/Default.scala +++ b/common/src/main/scala/net/psforever/objects/Default.scala @@ -5,20 +5,21 @@ object Default { //cancellable import akka.actor.Cancellable protected class InternalCancellable extends Cancellable { - override def cancel : Boolean = true - override def isCancelled : Boolean = true + override def cancel: Boolean = true + override def isCancelled: Boolean = true } - private val cancellable : Cancellable = new InternalCancellable + private val cancellable: Cancellable = new InternalCancellable /** * Used to initialize the value of a re-usable `Cancellable` object. * By convention, it always acts like it has been cancelled before and can be cancelled. * Should be replaced with pertinent `Cancellable` logic through the initialization of an executor. */ - final def Cancellable : Cancellable = cancellable + final def Cancellable: Cancellable = cancellable //actor import akka.actor.{Actor => AkkaActor, ActorRef, ActorSystem, DeadLetter, Props} + /** * An actor designed to wrap around `deadLetters` and redirect all normal messages to it. * This measure is more to "protect" `deadLetters` than anything else. @@ -26,22 +27,23 @@ object Default { * The original target to which the actor is assigned will not be implicitly accredited. */ private class DefaultActor extends AkkaActor { - def receive : Receive = { + def receive: Receive = { case msg => context.system.deadLetters ! DeadLetter(msg, sender, self) } } - private var defaultRef : ActorRef = ActorRef.noSender + private var defaultRef: ActorRef = ActorRef.noSender + /** * Instigate the default actor. * @param sys the actor universe under which this default actor will exist * @return the new default actor */ - def apply(sys : ActorSystem) : ActorRef = { - if(defaultRef == ActorRef.noSender) { + def apply(sys: ActorSystem): ActorRef = { + if (defaultRef == ActorRef.noSender) { defaultRef = sys.actorOf(Props[DefaultActor], name = s"system-default-actor") } defaultRef } - final def Actor : ActorRef = defaultRef + final def Actor: ActorRef = defaultRef } diff --git a/common/src/main/scala/net/psforever/objects/Deployables.scala b/common/src/main/scala/net/psforever/objects/Deployables.scala index 25b2a69f..8dd2caa1 100644 --- a/common/src/main/scala/net/psforever/objects/Deployables.scala +++ b/common/src/main/scala/net/psforever/objects/Deployables.scala @@ -16,26 +16,36 @@ object Deployables { private val log = org.log4s.getLogger("Deployables") object Make { - def apply(item : DeployedItem.Value) : ()=>PlanetSideGameObject with Deployable = cemap(item) + def apply(item: DeployedItem.Value): () => PlanetSideGameObject with Deployable = cemap(item) - private val cemap : Map[DeployedItem.Value, ()=>PlanetSideGameObject with Deployable] = Map( - DeployedItem.boomer -> { ()=> new BoomerDeployable(GlobalDefinitions.boomer) }, - DeployedItem.he_mine -> { ()=> new ExplosiveDeployable(GlobalDefinitions.he_mine) }, - DeployedItem.jammer_mine -> { ()=> new ExplosiveDeployable(GlobalDefinitions.jammer_mine) }, - DeployedItem.spitfire_turret -> { ()=> new TurretDeployable(GlobalDefinitions.spitfire_turret) }, - DeployedItem.spitfire_cloaked -> { ()=> new TurretDeployable(GlobalDefinitions.spitfire_cloaked) }, - DeployedItem.spitfire_aa -> { ()=> new TurretDeployable(GlobalDefinitions.spitfire_aa) }, - DeployedItem.motionalarmsensor -> { ()=> new SensorDeployable(GlobalDefinitions.motionalarmsensor) }, - DeployedItem.sensor_shield -> { ()=> new SensorDeployable(GlobalDefinitions.sensor_shield) }, - DeployedItem.tank_traps -> { ()=> new TrapDeployable(GlobalDefinitions.tank_traps) }, - DeployedItem.portable_manned_turret -> { ()=> new TurretDeployable(GlobalDefinitions.portable_manned_turret) }, - DeployedItem.portable_manned_turret -> { ()=> new TurretDeployable(GlobalDefinitions.portable_manned_turret) }, - DeployedItem.portable_manned_turret_nc -> { ()=> new TurretDeployable(GlobalDefinitions.portable_manned_turret_nc) }, - DeployedItem.portable_manned_turret_tr -> { ()=> new TurretDeployable(GlobalDefinitions.portable_manned_turret_tr) }, - DeployedItem.portable_manned_turret_vs -> { ()=> new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) }, - DeployedItem.deployable_shield_generator -> { ()=> new ShieldGeneratorDeployable(GlobalDefinitions.deployable_shield_generator) }, - DeployedItem.router_telepad_deployable -> { () => new TelepadDeployable(GlobalDefinitions.router_telepad_deployable) } - ).withDefaultValue( { ()=> new ExplosiveDeployable(GlobalDefinitions.boomer) } ) + private val cemap: Map[DeployedItem.Value, () => PlanetSideGameObject with Deployable] = Map( + DeployedItem.boomer -> { () => new BoomerDeployable(GlobalDefinitions.boomer) }, + DeployedItem.he_mine -> { () => new ExplosiveDeployable(GlobalDefinitions.he_mine) }, + DeployedItem.jammer_mine -> { () => new ExplosiveDeployable(GlobalDefinitions.jammer_mine) }, + DeployedItem.spitfire_turret -> { () => new TurretDeployable(GlobalDefinitions.spitfire_turret) }, + DeployedItem.spitfire_cloaked -> { () => new TurretDeployable(GlobalDefinitions.spitfire_cloaked) }, + DeployedItem.spitfire_aa -> { () => new TurretDeployable(GlobalDefinitions.spitfire_aa) }, + DeployedItem.motionalarmsensor -> { () => new SensorDeployable(GlobalDefinitions.motionalarmsensor) }, + DeployedItem.sensor_shield -> { () => new SensorDeployable(GlobalDefinitions.sensor_shield) }, + DeployedItem.tank_traps -> { () => new TrapDeployable(GlobalDefinitions.tank_traps) }, + DeployedItem.portable_manned_turret -> { () => new TurretDeployable(GlobalDefinitions.portable_manned_turret) }, + DeployedItem.portable_manned_turret -> { () => new TurretDeployable(GlobalDefinitions.portable_manned_turret) }, + DeployedItem.portable_manned_turret_nc -> { () => + new TurretDeployable(GlobalDefinitions.portable_manned_turret_nc) + }, + DeployedItem.portable_manned_turret_tr -> { () => + new TurretDeployable(GlobalDefinitions.portable_manned_turret_tr) + }, + DeployedItem.portable_manned_turret_vs -> { () => + new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) + }, + DeployedItem.deployable_shield_generator -> { () => + new ShieldGeneratorDeployable(GlobalDefinitions.deployable_shield_generator) + }, + DeployedItem.router_telepad_deployable -> { () => + new TelepadDeployable(GlobalDefinitions.router_telepad_deployable) + } + ).withDefaultValue({ () => new ExplosiveDeployable(GlobalDefinitions.boomer) }) } /** @@ -60,7 +70,7 @@ object Deployables { * @param time length of time that the deployable is allowed to exist in the game world; * `None` indicates the normal un-owned existence time (180 seconds) */ - def AnnounceDestroyDeployable(target : PlanetSideGameObject with Deployable, time : Option[FiniteDuration]) : Unit = { + def AnnounceDestroyDeployable(target: PlanetSideGameObject with Deployable, time: Option[FiniteDuration]): Unit = { val zone = target.Zone target.OwnerName match { case Some(owner) => @@ -68,10 +78,13 @@ object Deployables { zone.LocalEvents ! LocalServiceMessage(owner, LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) case None => ; } - zone.LocalEvents ! LocalServiceMessage(s"${target.Faction}", LocalAction.DeployableMapIcon( - PlanetSideGUID(0), - DeploymentAction.Dismiss, - DeployableInfo(target.GUID, Deployable.Icon(target.Definition.Item), target.Position, PlanetSideGUID(0))) + zone.LocalEvents ! LocalServiceMessage( + s"${target.Faction}", + LocalAction.DeployableMapIcon( + PlanetSideGUID(0), + DeploymentAction.Dismiss, + DeployableInfo(target.GUID, Deployable.Icon(target.Definition.Item), target.Position, PlanetSideGUID(0)) + ) ) zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(target), zone)) zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(target, zone, time)) @@ -86,17 +99,22 @@ object Deployables { * @return all previously-owned deployables after they have been processed; * boomers are listed before all other deployable types */ - def Disown(zone : Zone, avatar : Avatar, replyTo : ActorRef) : List[PlanetSideGameObject with Deployable] = { + def Disown(zone: Zone, avatar: Avatar, replyTo: ActorRef): List[PlanetSideGameObject with Deployable] = { val (boomers, deployables) = - avatar.Deployables.Clear() + avatar.Deployables + .Clear() .map(zone.GUID) .collect { case Some(obj) => obj.asInstanceOf[PlanetSideGameObject with Deployable] } .partition(_.isInstanceOf[BoomerDeployable]) //do not change the OwnerName field at this time - boomers.collect({ case obj : BoomerDeployable => - zone.LocalEvents.tell(LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, zone, Some(0 seconds))), replyTo) //near-instant - obj.Owner = None - obj.Trigger = None + boomers.collect({ + case obj: BoomerDeployable => + zone.LocalEvents.tell( + LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, zone, Some(0 seconds))), + replyTo + ) //near-instant + obj.Owner = None + obj.Trigger = None }) deployables.foreach(obj => { zone.LocalEvents.tell(LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, zone)), replyTo) //normal decay @@ -105,17 +123,17 @@ object Deployables { boomers ++ deployables } - def RemoveTelepad(vehicle: Vehicle) : Unit = { + def RemoveTelepad(vehicle: Vehicle): Unit = { val zone = vehicle.Zone (vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => val telepad = util.Telepad util.Telepad = None zone.GUID(telepad) case _ => None }) match { - case Some(telepad : TelepadDeployable) => + case Some(telepad: TelepadDeployable) => log.info(s"BeforeUnload: deconstructing telepad $telepad that was linked to router $vehicle ...") telepad.Active = false zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(telepad), zone)) @@ -124,13 +142,11 @@ object Deployables { } } - - /** * Initialize the deployables backend information. * @param avatar the player's core */ - def InitializeDeployableQuantities(avatar : Avatar) : Boolean = { + def InitializeDeployableQuantities(avatar: Avatar): Boolean = { log.info("Setting up combat engineering ...") avatar.Deployables.Initialize(avatar.Certifications.toSet) } @@ -139,7 +155,7 @@ object Deployables { * Initialize the UI elements for deployables. * @param avatar the player's core */ - def InitializeDeployableUIElements(avatar : Avatar) : List[(Int,Int,Int,Int)] = { + def InitializeDeployableUIElements(avatar: Avatar): List[(Int, Int, Int, Int)] = { log.info("Setting up combat engineering UI ...") avatar.Deployables.UpdateUI() } @@ -151,7 +167,11 @@ object Deployables { * @param certification the certification that was added * @param certificationSet all applicable certifications */ - def AddToDeployableQuantities(avatar : Avatar, certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : List[(Int,Int,Int,Int)] = { + def AddToDeployableQuantities( + avatar: Avatar, + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): List[(Int, Int, Int, Int)] = { avatar.Deployables.AddToDeployableQuantities(certification, certificationSet) avatar.Deployables.UpdateUI(certification) } @@ -163,7 +183,11 @@ object Deployables { * @param certification the certification that was added * @param certificationSet all applicable certifications */ - def RemoveFromDeployableQuantities(avatar : Avatar, certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : List[(Int,Int,Int,Int)] = { + def RemoveFromDeployableQuantities( + avatar: Avatar, + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): List[(Int, Int, Int, Int)] = { avatar.Deployables.RemoveFromDeployableQuantities(certification, certificationSet) avatar.Deployables.UpdateUI(certification) } diff --git a/common/src/main/scala/net/psforever/objects/ExplosiveDeployable.scala b/common/src/main/scala/net/psforever/objects/ExplosiveDeployable.scala index 02c34838..ce3b4a0f 100644 --- a/common/src/main/scala/net/psforever/objects/ExplosiveDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/ExplosiveDeployable.scala @@ -18,61 +18,60 @@ import services.local.{LocalAction, LocalServiceMessage} import scala.concurrent.duration._ -class ExplosiveDeployable(cdef : ExplosiveDeployableDefinition) extends ComplexDeployable(cdef) - with JammableUnit { +class ExplosiveDeployable(cdef: ExplosiveDeployableDefinition) extends ComplexDeployable(cdef) with JammableUnit { - override def Definition : ExplosiveDeployableDefinition = cdef + override def Definition: ExplosiveDeployableDefinition = cdef } -class ExplosiveDeployableDefinition(private val objectId : Int) extends ComplexDeployableDefinition(objectId) { +class ExplosiveDeployableDefinition(private val objectId: Int) extends ComplexDeployableDefinition(objectId) { Name = "explosive_deployable" DeployCategory = DeployableCategory.Mines Model = StandardResolutions.SimpleDeployables Packet = new SmallDeployableConverter - private var detonateOnJamming : Boolean = true + private var detonateOnJamming: Boolean = true - def DetonateOnJamming : Boolean = detonateOnJamming + def DetonateOnJamming: Boolean = detonateOnJamming - def DetonateOnJamming_=(detonate : Boolean) : Boolean = { + def DetonateOnJamming_=(detonate: Boolean): Boolean = { detonateOnJamming = detonate DetonateOnJamming } - override def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { - obj.Actor = context.actorOf(Props(classOf[ExplosiveDeployableControl], obj), PlanetSideServerObject.UniqueActorName(obj)) + override def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { + obj.Actor = + context.actorOf(Props(classOf[ExplosiveDeployableControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } - override def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { SimpleDeployableDefinition.SimpleUninitialize(obj, context) } } object ExplosiveDeployableDefinition { - def apply(dtype : DeployedItem.Value) : ExplosiveDeployableDefinition = { + def apply(dtype: DeployedItem.Value): ExplosiveDeployableDefinition = { new ExplosiveDeployableDefinition(dtype.id) } } -class ExplosiveDeployableControl(mine : ExplosiveDeployable) extends Actor - with Damageable { +class ExplosiveDeployableControl(mine: ExplosiveDeployable) extends Actor with Damageable { def DamageableObject = mine - def receive : Receive = takesDamage - .orElse { - case _ => ; - } + def receive: Receive = + takesDamage + .orElse { + case _ => ; + } - protected def TakesDamage : Receive = { + protected def TakesDamage: Receive = { case Vitality.Damage(applyDamageTo) => - if(mine.CanDamage) { + if (mine.CanDamage) { val originalHealth = mine.Health - val cause = applyDamageTo(mine) - val damage = originalHealth - mine.Health - if(Damageable.CanDamageOrJammer(mine, damage, cause)) { + val cause = applyDamageTo(mine) + val damage = originalHealth - mine.Health + if (Damageable.CanDamageOrJammer(mine, damage, cause)) { ExplosiveDeployableControl.DamageResolution(mine, cause, damage) - } - else { + } else { mine.Health = originalHealth } } @@ -80,17 +79,18 @@ class ExplosiveDeployableControl(mine : ExplosiveDeployable) extends Actor } object ExplosiveDeployableControl { - def DamageResolution(target : ExplosiveDeployable, cause : ResolvedProjectile, damage : Int) : Unit = { + def DamageResolution(target: ExplosiveDeployable, cause: ResolvedProjectile, damage: Int): Unit = { target.History(cause) - if(target.Health == 0) { + if (target.Health == 0) { DestructionAwareness(target, cause) - } - else if(!target.Jammed && Damageable.CanJammer(target, cause)) { - if(target.Jammed = { - val radius = cause.projectile.profile.DamageRadius - Vector3.DistanceSquared(cause.hit_pos, cause.target.Position) < radius * radius - }) { - if(target.Definition.DetonateOnJamming) { + } else if (!target.Jammed && Damageable.CanJammer(target, cause)) { + if ( + target.Jammed = { + val radius = cause.projectile.profile.DamageRadius + Vector3.DistanceSquared(cause.hit_pos, cause.target.Position) < radius * radius + } + ) { + if (target.Definition.DetonateOnJamming) { val zone = target.Zone zone.Activity ! Zone.HotSpot.Activity(cause.target, cause.projectile.owner, cause.hit_pos) zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.Detonate(target.GUID, target)) @@ -105,17 +105,23 @@ object ExplosiveDeployableControl { * @param target na * @param cause na */ - def DestructionAwareness(target : ExplosiveDeployable, cause : ResolvedProjectile) : Unit = { + def DestructionAwareness(target: ExplosiveDeployable, cause: ResolvedProjectile): Unit = { val zone = target.Zone val attribution = zone.LivePlayers.find { p => cause.projectile.owner.Name.equals(p.Name) } match { case Some(player) => player.GUID - case _ => PlanetSideGUID(0) + case _ => PlanetSideGUID(0) } target.Destroyed = true - Deployables.AnnounceDestroyDeployable(target, Some(if(target.Jammed) 0 seconds else 500 milliseconds)) - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.Destroy(target.GUID, attribution, Service.defaultPlayerGUID, target.Position)) - if(target.Health == 0) { - zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.TriggerEffect(Service.defaultPlayerGUID, "detonate_damaged_mine", target.GUID)) + Deployables.AnnounceDestroyDeployable(target, Some(if (target.Jammed) 0 seconds else 500 milliseconds)) + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.Destroy(target.GUID, attribution, Service.defaultPlayerGUID, target.Position) + ) + if (target.Health == 0) { + zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.TriggerEffect(Service.defaultPlayerGUID, "detonate_damaged_mine", target.GUID) + ) } } } diff --git a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala index f7f96828..0ec8f321 100644 --- a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala +++ b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala @@ -35,17 +35,17 @@ object GlobalDefinitions { exo-suits */ val Standard = ExoSuitDefinition(ExoSuitType.Standard) - + val Agile = ExoSuitDefinition(ExoSuitType.Agile) - + val Reinforced = ExoSuitDefinition(ExoSuitType.Reinforced) - + val Infiltration = ExoSuitDefinition(ExoSuitType.Infiltration) - + val VSMAX = SpecialExoSuitDefinition(ExoSuitType.MAX) - + val TRMAX = SpecialExoSuitDefinition(ExoSuitType.MAX) - + val NCMAX = SpecialExoSuitDefinition(ExoSuitType.MAX) init_exosuit() @@ -242,7 +242,9 @@ object GlobalDefinitions { val lasher_projectile_ap = ProjectileDefinition(Projectiles.lasher_projectile_ap) - val liberator_bomb_cluster_bomblet_projectile = ProjectileDefinition(Projectiles.liberator_bomb_cluster_bomblet_projectile) + val liberator_bomb_cluster_bomblet_projectile = ProjectileDefinition( + Projectiles.liberator_bomb_cluster_bomblet_projectile + ) val liberator_bomb_cluster_projectile = ProjectileDefinition(Projectiles.liberator_bomb_cluster_projectile) @@ -644,36 +646,32 @@ object GlobalDefinitions { val dynomite = ToolDefinition(ObjectClass.dynomite) val trhev_dualcycler = new ToolDefinition(ObjectClass.trhev_dualcycler) { - override def NextFireModeIndex(index : Int) : Int = index + override def NextFireModeIndex(index: Int): Int = index } val trhev_pounder = new ToolDefinition(ObjectClass.trhev_pounder) { - override def NextFireModeIndex(index : Int) : Int = { + override def NextFireModeIndex(index: Int): Int = { //TODO other modes - if(index == 0 || index == 3) { - if(index == 0) { + if (index == 0 || index == 3) { + if (index == 0) { 3 //3-second fuse - } - else { + } else { 0 //explode on contact } - } - else if(index == 1 || index == 4) { - if(index == 1) { + } else if (index == 1 || index == 4) { + if (index == 1) { 4 //3-second fuse, anchored - } - else { + } else { 1 //explode on contact, anchored } - } - else { + } else { index } } } val trhev_burster = new ToolDefinition(ObjectClass.trhev_burster) { - override def NextFireModeIndex(index : Int) : Int = index + override def NextFireModeIndex(index: Int): Int = index } val nchev_scattercannon = ToolDefinition(ObjectClass.nchev_scattercannon) @@ -1057,11 +1055,11 @@ object GlobalDefinitions { /* Buildings */ - val building = new BuildingDefinition(474) { Name = "building" } //borrows object id of entity mainbase1 - val amp_station = new BuildingDefinition(45) { Name = "amp_station"; SOIRadius = 300 } - val comm_station = new BuildingDefinition(211) { Name = "comm_station"; SOIRadius = 300 } + val building = new BuildingDefinition(474) { Name = "building" } //borrows object id of entity mainbase1 + val amp_station = new BuildingDefinition(45) { Name = "amp_station"; SOIRadius = 300 } + val comm_station = new BuildingDefinition(211) { Name = "comm_station"; SOIRadius = 300 } val comm_station_dsp = new BuildingDefinition(212) { Name = "comm_station_dsp"; SOIRadius = 300 } - val cryo_facility = new BuildingDefinition(215) { Name = "cryo_facility"; SOIRadius = 300 } + val cryo_facility = new BuildingDefinition(215) { Name = "cryo_facility"; SOIRadius = 300 } val vanu_core = new BuildingDefinition(932) { Name = "vanu_core" } @@ -1105,21 +1103,21 @@ object GlobalDefinitions { //hst.NoWarp += peregrine_flight hst.SpecificPointFunc = SpawnPoint.Gate - val mainbase1 = new BuildingDefinition(474) { Name = "mainbase1" } - val mainbase2 = new BuildingDefinition(475) { Name = "mainbase2" } - val mainbase3 = new BuildingDefinition(476) { Name = "mainbase3" } - val meeting_center_nc = new BuildingDefinition(537) { Name = "meeting_center_nc" } - val meeting_center_tr = new BuildingDefinition(538) { Name = "meeting_center_tr" } - val meeting_center_vs = new BuildingDefinition(539) { Name = "meeting_center_vs" } - val minibase1 = new BuildingDefinition(557) { Name = "minibase1" } - val minibase2 = new BuildingDefinition(558) { Name = "minibase2" } - val minibase3 = new BuildingDefinition(559) { Name = "minibase3" } - val redoubt = new BuildingDefinition(726) { Name = "redoubt"; SOIRadius = 187 } - val tech_plant = new BuildingDefinition(852) { Name = "tech_plant"; SOIRadius = 300 } - val tower_a = new BuildingDefinition(869) { Name = "tower_a"; SOIRadius = 50 } - val tower_b = new BuildingDefinition(870) { Name = "tower_b"; SOIRadius = 50 } - val tower_c = new BuildingDefinition(871) { Name = "tower_c"; SOIRadius = 50 } - val vanu_control_point = new BuildingDefinition(931) { Name = "vanu_control_point"; SOIRadius = 187 } + val mainbase1 = new BuildingDefinition(474) { Name = "mainbase1" } + val mainbase2 = new BuildingDefinition(475) { Name = "mainbase2" } + val mainbase3 = new BuildingDefinition(476) { Name = "mainbase3" } + val meeting_center_nc = new BuildingDefinition(537) { Name = "meeting_center_nc" } + val meeting_center_tr = new BuildingDefinition(538) { Name = "meeting_center_tr" } + val meeting_center_vs = new BuildingDefinition(539) { Name = "meeting_center_vs" } + val minibase1 = new BuildingDefinition(557) { Name = "minibase1" } + val minibase2 = new BuildingDefinition(558) { Name = "minibase2" } + val minibase3 = new BuildingDefinition(559) { Name = "minibase3" } + val redoubt = new BuildingDefinition(726) { Name = "redoubt"; SOIRadius = 187 } + val tech_plant = new BuildingDefinition(852) { Name = "tech_plant"; SOIRadius = 300 } + val tower_a = new BuildingDefinition(869) { Name = "tower_a"; SOIRadius = 50 } + val tower_b = new BuildingDefinition(870) { Name = "tower_b"; SOIRadius = 50 } + val tower_c = new BuildingDefinition(871) { Name = "tower_c"; SOIRadius = 50 } + val vanu_control_point = new BuildingDefinition(931) { Name = "vanu_control_point"; SOIRadius = 187 } val vanu_vehicle_station = new BuildingDefinition(948) { Name = "vanu_vehicle_station"; SOIRadius = 187 } val warpgate = new WarpGateDefinition(993) @@ -1144,30 +1142,29 @@ object GlobalDefinitions { warpgate_small.SpecificPointFunc = SpawnPoint.Gate val bunker_gauntlet = new BuildingDefinition(150) { Name = "bunker_gauntlet" } - val bunker_lg = new BuildingDefinition(151) { Name = "bunker_lg" } - val bunker_sm = new BuildingDefinition(152) { Name = "bunker_sm" } + val bunker_lg = new BuildingDefinition(151) { Name = "bunker_lg" } + val bunker_sm = new BuildingDefinition(152) { Name = "bunker_sm" } val orbital_building_nc = new BuildingDefinition(605) { Name = "orbital_building_nc" } val orbital_building_tr = new BuildingDefinition(606) { Name = "orbital_building_tr" } val orbital_building_vs = new BuildingDefinition(607) { Name = "orbital_building_vs" } - val VT_building_nc = new BuildingDefinition(978) { Name = "VT_building_nc" } - val VT_building_tr = new BuildingDefinition(979) { Name = "VT_building_tr" } - val VT_building_vs = new BuildingDefinition(980) { Name = "VT_building_vs" } - val vt_dropship = new BuildingDefinition(981) { Name = "vt_dropship" } - val vt_spawn = new BuildingDefinition(984) { Name = "vt_spawn" } - val vt_vehicle = new BuildingDefinition(985) { Name = "vt_vehicle" } - + val VT_building_nc = new BuildingDefinition(978) { Name = "VT_building_nc" } + val VT_building_tr = new BuildingDefinition(979) { Name = "VT_building_tr" } + val VT_building_vs = new BuildingDefinition(980) { Name = "VT_building_vs" } + val vt_dropship = new BuildingDefinition(981) { Name = "vt_dropship" } + val vt_spawn = new BuildingDefinition(984) { Name = "vt_spawn" } + val vt_vehicle = new BuildingDefinition(985) { Name = "vt_vehicle" } /** * Given a faction, provide the standard assault melee weapon. * @param faction the faction * @return the `ToolDefinition` for the melee weapon */ - def StandardMelee(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def StandardMelee(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => chainblade - case PlanetSideEmpire.NC => magcutter - case PlanetSideEmpire.VS => forceblade + case PlanetSideEmpire.TR => chainblade + case PlanetSideEmpire.NC => magcutter + case PlanetSideEmpire.VS => forceblade case PlanetSideEmpire.NEUTRAL => chainblade //do NOT hand out the katana } } @@ -1177,11 +1174,11 @@ object GlobalDefinitions { * @param faction the faction * @return the `ToolDefinition` for the pistol */ - def StandardPistol(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def StandardPistol(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => repeater - case PlanetSideEmpire.NC => isp - case PlanetSideEmpire.VS => beamer + case PlanetSideEmpire.TR => repeater + case PlanetSideEmpire.NC => isp + case PlanetSideEmpire.VS => beamer case PlanetSideEmpire.NEUTRAL => ilc9 } } @@ -1193,11 +1190,11 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the pistol's ammo * @see `GlobalDefinitions.StandardPistol` */ - def StandardPistolAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def StandardPistolAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => bullet_9mm - case PlanetSideEmpire.NC => shotgun_shell - case PlanetSideEmpire.VS => energy_cell + case PlanetSideEmpire.TR => bullet_9mm + case PlanetSideEmpire.NC => shotgun_shell + case PlanetSideEmpire.VS => energy_cell case PlanetSideEmpire.NEUTRAL => bullet_9mm } } @@ -1208,11 +1205,11 @@ object GlobalDefinitions { * @param faction the faction * @return the `ToolDefinition` for the pistol */ - def MediumPistol(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def MediumPistol(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => anniversary_guna - case PlanetSideEmpire.NC => anniversary_gun - case PlanetSideEmpire.VS => anniversary_gunb + case PlanetSideEmpire.TR => anniversary_guna + case PlanetSideEmpire.NC => anniversary_gun + case PlanetSideEmpire.VS => anniversary_gunb case PlanetSideEmpire.NEUTRAL => ilc9 //do not hand out the spiker } } @@ -1223,11 +1220,11 @@ object GlobalDefinitions { * @param faction the faction * @return the `ToolDefinition` for the rifle */ - def MediumRifle(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def MediumRifle(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => cycler - case PlanetSideEmpire.NC => gauss - case PlanetSideEmpire.VS => pulsar + case PlanetSideEmpire.TR => cycler + case PlanetSideEmpire.NC => gauss + case PlanetSideEmpire.VS => pulsar case PlanetSideEmpire.NEUTRAL => suppressor //the Punisher would be messy to have to code for } } @@ -1239,14 +1236,15 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the rifle's ammo * @see `GlobalDefinitions.MediumRifle` */ - def MediumRifleAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def MediumRifleAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => bullet_9mm - case PlanetSideEmpire.NC => bullet_9mm - case PlanetSideEmpire.VS => energy_cell + case PlanetSideEmpire.TR => bullet_9mm + case PlanetSideEmpire.NC => bullet_9mm + case PlanetSideEmpire.VS => energy_cell case PlanetSideEmpire.NEUTRAL => bullet_9mm } } + /** * For a given faction, provide the AP ammunition for the medium assault rifle. * The ammunition value here must work with the result of obtaining the rifle using the faction. @@ -1254,11 +1252,11 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the rifle's ammo * @see `GlobalDefinitions.MediumRifle` */ - def MediumRifleAPAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def MediumRifleAPAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => bullet_9mm_AP - case PlanetSideEmpire.NC => bullet_9mm_AP - case PlanetSideEmpire.VS => energy_cell + case PlanetSideEmpire.TR => bullet_9mm_AP + case PlanetSideEmpire.NC => bullet_9mm_AP + case PlanetSideEmpire.VS => energy_cell case PlanetSideEmpire.NEUTRAL => bullet_9mm_AP } } @@ -1269,11 +1267,11 @@ object GlobalDefinitions { * @param faction the faction * @return the `ToolDefinition` for the rifle */ - def HeavyRifle(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def HeavyRifle(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => mini_chaingun - case PlanetSideEmpire.NC => r_shotgun - case PlanetSideEmpire.VS => lasher + case PlanetSideEmpire.TR => mini_chaingun + case PlanetSideEmpire.NC => r_shotgun + case PlanetSideEmpire.VS => lasher case PlanetSideEmpire.NEUTRAL => suppressor //do not hand out the maelstrom } } @@ -1285,11 +1283,11 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the rifle's ammo * @see `GlobalDefinitions.HeavyRifle` */ - def HeavyRifleAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def HeavyRifleAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => bullet_9mm - case PlanetSideEmpire.NC => shotgun_shell - case PlanetSideEmpire.VS => energy_cell + case PlanetSideEmpire.TR => bullet_9mm + case PlanetSideEmpire.NC => shotgun_shell + case PlanetSideEmpire.VS => energy_cell case PlanetSideEmpire.NEUTRAL => bullet_9mm } } @@ -1301,11 +1299,11 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the rifle's ammo * @see `GlobalDefinitions.HeavyRifle` */ - def HeavyRifleAPAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def HeavyRifleAPAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => bullet_9mm_AP - case PlanetSideEmpire.NC => shotgun_shell_AP - case PlanetSideEmpire.VS => energy_cell + case PlanetSideEmpire.TR => bullet_9mm_AP + case PlanetSideEmpire.NC => shotgun_shell_AP + case PlanetSideEmpire.VS => energy_cell case PlanetSideEmpire.NEUTRAL => bullet_9mm_AP } } @@ -1315,11 +1313,11 @@ object GlobalDefinitions { * @param faction the faction * @return the `ToolDefinition` for the launcher */ - def AntiVehicularLauncher(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def AntiVehicularLauncher(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => striker - case PlanetSideEmpire.NC => hunterseeker - case PlanetSideEmpire.VS => lancer + case PlanetSideEmpire.TR => striker + case PlanetSideEmpire.NC => hunterseeker + case PlanetSideEmpire.VS => lancer case PlanetSideEmpire.NEUTRAL => phoenix } } @@ -1331,100 +1329,96 @@ object GlobalDefinitions { * @return thr `AmmoBoxDefinition` for the launcher's ammo * @see `GlobalDefinitions.AntiVehicular` */ - def AntiVehicularAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def AntiVehicularAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => striker_missile_ammo - case PlanetSideEmpire.NC => hunter_seeker_missile - case PlanetSideEmpire.VS => lancer_cartridge + case PlanetSideEmpire.TR => striker_missile_ammo + case PlanetSideEmpire.NC => hunter_seeker_missile + case PlanetSideEmpire.VS => lancer_cartridge case PlanetSideEmpire.NEUTRAL => phoenix_missile //careful - does not exist as an AmmoBox normally } } - def MAXArms(subtype : Int, faction : PlanetSideEmpire.Value) : ToolDefinition = { - if(subtype == 1) { + def MAXArms(subtype: Int, faction: PlanetSideEmpire.Value): ToolDefinition = { + if (subtype == 1) { AI_MAX(faction) - } - else if(subtype == 2) { + } else if (subtype == 2) { AV_MAX(faction) - } - else if(subtype == 3) { + } else if (subtype == 3) { AA_MAX(faction) - } - else { + } else { suppressor //there are no common pool MAX arms } } - def isMaxArms(tdef : ToolDefinition) : Boolean = { + def isMaxArms(tdef: ToolDefinition): Boolean = { tdef match { - case `trhev_dualcycler` | `nchev_scattercannon` | `vshev_quasar` - | `trhev_pounder` | `nchev_falcon` | `vshev_comet` - | `trhev_burster` | `nchev_sparrow` | `vshev_starfire` => + case `trhev_dualcycler` | `nchev_scattercannon` | `vshev_quasar` | `trhev_pounder` | `nchev_falcon` | + `vshev_comet` | `trhev_burster` | `nchev_sparrow` | `vshev_starfire` => true case _ => false } } - def AI_MAX(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def AI_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => trhev_dualcycler - case PlanetSideEmpire.NC => nchev_scattercannon - case PlanetSideEmpire.VS => vshev_quasar + case PlanetSideEmpire.TR => trhev_dualcycler + case PlanetSideEmpire.NC => nchev_scattercannon + case PlanetSideEmpire.VS => vshev_quasar case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms } } - def AI_MAXAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def AI_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => dualcycler_ammo - case PlanetSideEmpire.NC => scattercannon_ammo - case PlanetSideEmpire.VS => quasar_ammo + case PlanetSideEmpire.TR => dualcycler_ammo + case PlanetSideEmpire.NC => scattercannon_ammo + case PlanetSideEmpire.VS => quasar_ammo case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms } } - def AV_MAX(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def AV_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => trhev_pounder - case PlanetSideEmpire.NC => nchev_falcon - case PlanetSideEmpire.VS => vshev_comet + case PlanetSideEmpire.TR => trhev_pounder + case PlanetSideEmpire.NC => nchev_falcon + case PlanetSideEmpire.VS => vshev_comet case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms } } - def AV_MAXAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def AV_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => pounder_ammo - case PlanetSideEmpire.NC => falcon_ammo - case PlanetSideEmpire.VS => comet_ammo + case PlanetSideEmpire.TR => pounder_ammo + case PlanetSideEmpire.NC => falcon_ammo + case PlanetSideEmpire.VS => comet_ammo case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms } } - def AA_MAX(faction : PlanetSideEmpire.Value) : ToolDefinition = { + def AA_MAX(faction: PlanetSideEmpire.Value): ToolDefinition = { faction match { - case PlanetSideEmpire.TR => trhev_burster - case PlanetSideEmpire.NC => nchev_sparrow - case PlanetSideEmpire.VS => vshev_starfire + case PlanetSideEmpire.TR => trhev_burster + case PlanetSideEmpire.NC => nchev_sparrow + case PlanetSideEmpire.VS => vshev_starfire case PlanetSideEmpire.NEUTRAL => suppressor //there are no common pool MAX arms } } - def AA_MAXAmmo(faction : PlanetSideEmpire.Value) : AmmoBoxDefinition = { + def AA_MAXAmmo(faction: PlanetSideEmpire.Value): AmmoBoxDefinition = { faction match { - case PlanetSideEmpire.TR => burster_ammo - case PlanetSideEmpire.NC => sparrow_ammo - case PlanetSideEmpire.VS => starfire_ammo + case PlanetSideEmpire.TR => burster_ammo + case PlanetSideEmpire.NC => sparrow_ammo + case PlanetSideEmpire.VS => starfire_ammo case PlanetSideEmpire.NEUTRAL => bullet_9mm //there are no common pool MAX arms } } - def PortableMannedTurret(faction :PlanetSideEmpire.Value) : TurretDeployableDefinition = { + def PortableMannedTurret(faction: PlanetSideEmpire.Value): TurretDeployableDefinition = { faction match { - case PlanetSideEmpire.TR => portable_manned_turret_tr - case PlanetSideEmpire.NC => portable_manned_turret_nc - case PlanetSideEmpire.VS => portable_manned_turret_vs + case PlanetSideEmpire.TR => portable_manned_turret_tr + case PlanetSideEmpire.NC => portable_manned_turret_nc + case PlanetSideEmpire.VS => portable_manned_turret_vs case PlanetSideEmpire.NEUTRAL => portable_manned_turret } } @@ -1435,7 +1429,7 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return `true`, if it is a grenade-type weapon; `false`, otherwise */ - def isGrenade(edef : EquipmentDefinition) : Boolean = { + def isGrenade(edef: EquipmentDefinition): Boolean = { edef match { case `frag_grenade` | `jammer_grenade` | `plasma_grenade` | `dynomite` => true @@ -1450,7 +1444,7 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return `true`, if it is a grenade-type weapon; `false`, otherwise */ - def isGrenadePack(edef : EquipmentDefinition) : Boolean = { + def isGrenadePack(edef: EquipmentDefinition): Boolean = { edef match { case `frag_cartridge` | `jammer_cartridge` | `plasma_cartridge` => true @@ -1466,13 +1460,16 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return the faction alignment, or `Neutral` */ - def isFactionWeapon(edef : EquipmentDefinition) : PlanetSideEmpire.Value = { + def isFactionWeapon(edef: EquipmentDefinition): PlanetSideEmpire.Value = { edef match { - case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` | `trhev_dualcycler` | `trhev_pounder` | `trhev_burster` => + case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` | + `trhev_dualcycler` | `trhev_pounder` | `trhev_burster` => PlanetSideEmpire.TR - case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `nchev_scattercannon` | `nchev_falcon` | `nchev_sparrow` => + case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `nchev_scattercannon` | + `nchev_falcon` | `nchev_sparrow` => PlanetSideEmpire.NC - case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `vshev_quasar` | `vshev_comet` | `vshev_starfire` => + case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `vshev_quasar` | + `vshev_comet` | `vshev_starfire` => PlanetSideEmpire.VS case _ => PlanetSideEmpire.NEUTRAL @@ -1485,13 +1482,19 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return the faction alignment, or `Neutral` */ - def isFactionEquipment(edef : EquipmentDefinition) : PlanetSideEmpire.Value = { + def isFactionEquipment(edef: EquipmentDefinition): PlanetSideEmpire.Value = { edef match { - case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` | `striker_missile_ammo` | `trhev_dualcycler` | `trhev_pounder` | `trhev_burster` | `dualcycler_ammo` | `pounder_ammo` | `burster_ammo` => + case `chainblade` | `repeater` | `anniversary_guna` | `cycler` | `mini_chaingun` | `striker` | + `striker_missile_ammo` | `trhev_dualcycler` | `trhev_pounder` | `trhev_burster` | `dualcycler_ammo` | + `pounder_ammo` | `burster_ammo` => PlanetSideEmpire.TR - case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `hunter_seeker_missile` | `nchev_scattercannon` | `nchev_falcon` | `nchev_sparrow` | `scattercannon_ammo` | `falcon_ammo` | `sparrow_ammo` => + case `magcutter` | `isp` | `anniversary_gun` | `gauss` | `r_shotgun` | `hunterseeker` | `hunter_seeker_missile` | + `nchev_scattercannon` | `nchev_falcon` | `nchev_sparrow` | `scattercannon_ammo` | `falcon_ammo` | + `sparrow_ammo` => PlanetSideEmpire.NC - case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `energy_cell` | `lancer_cartridge` | `vshev_quasar` | `vshev_comet` | `vshev_starfire` | `quasar_ammo` | `comet_ammo` | `starfire_ammo` => + case `forceblade` | `beamer` | `anniversary_gunb` | `pulsar` | `lasher` | `lancer` | `energy_cell` | + `lancer_cartridge` | `vshev_quasar` | `vshev_comet` | `vshev_starfire` | `quasar_ammo` | `comet_ammo` | + `starfire_ammo` => PlanetSideEmpire.VS case _ => PlanetSideEmpire.NEUTRAL @@ -1504,10 +1507,10 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return `true`, if it is; otherwise, `false` */ - def isCavernWeapon(edef : EquipmentDefinition) : Boolean = { + def isCavernWeapon(edef: EquipmentDefinition): Boolean = { edef match { case `spiker` | `maelstrom` | `radiator` => true - case _ => false + case _ => false } } @@ -1516,10 +1519,10 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return `true`, if it is; otherwise, `false` */ - def isCavernEquipment(edef : EquipmentDefinition) : Boolean = { + def isCavernEquipment(edef: EquipmentDefinition): Boolean = { edef match { case `spiker` | `maelstrom` | `radiator` | `ancient_ammo_combo` | `maelstrom_ammo` => true - case _ => false + case _ => false } } @@ -1530,7 +1533,7 @@ object GlobalDefinitions { * @param edef the `EquipmentDefinition` of the item * @return `true`, if it is; otherwise, `false` */ - def isSpecialEquipment(edef : EquipmentDefinition) : Boolean = { + def isSpecialEquipment(edef: EquipmentDefinition): Boolean = { edef match { case `super_medkit` | `super_armorkit` | `super_staminakit` | `katana` => true @@ -1544,9 +1547,10 @@ object GlobalDefinitions { * @param vdef the `VehicleDefinition` of the vehicle * @return `true`, if it is; `false`, otherwise */ - def isFlightVehicle(vdef : VehicleDefinition) : Boolean = { + def isFlightVehicle(vdef: VehicleDefinition): Boolean = { vdef match { - case `mosquito` | `lightgunship` | `wasp` | `liberator` | `vulture` | `phantasm` | `lodestar` | `dropship` | `galaxy_gunship` => + case `mosquito` | `lightgunship` | `wasp` | `liberator` | `vulture` | `phantasm` | `lodestar` | `dropship` | + `galaxy_gunship` => true case _ => false @@ -1558,7 +1562,7 @@ object GlobalDefinitions { * @param vdef the `VehicleDefinition` of the vehicle * @return `true`, if it can; `false`, otherwise */ - def isHoverVehicle(vdef : VehicleDefinition) : Boolean = { + def isHoverVehicle(vdef: VehicleDefinition): Boolean = { vdef match { case `twomanhoverbuggy` | `magrider` | `router` | `flail` => true @@ -1572,11 +1576,10 @@ object GlobalDefinitions { * @param vdef the `VehicleDefinition` of the vehicle * @return `true`, if it is; `false`, otherwise */ - def canStationaryRotate(vdef : VehicleDefinition) : Boolean = { - if(isFlightVehicle(vdef) || isHoverVehicle(vdef)) { + def canStationaryRotate(vdef: VehicleDefinition): Boolean = { + if (isFlightVehicle(vdef) || isHoverVehicle(vdef)) { true - } - else { + } else { vdef match { case `lightning` | `prowler` | `vanguard` => true @@ -1589,7 +1592,7 @@ object GlobalDefinitions { /** * Initialize `KitDefinition` globals. */ - private def init_kit() : Unit = { + private def init_kit(): Unit = { medkit.Name = "medkit" super_medkit.Name = "super_medkit" @@ -1602,7 +1605,7 @@ object GlobalDefinitions { /** * Initialize `ExoSuitType` globals. */ - private def init_exosuit() : Unit = { + private def init_exosuit(): Unit = { Standard.Name = "standard" Standard.MaxArmor = 50 Standard.InventoryScale = InventoryTile.Tile96 @@ -1650,8 +1653,9 @@ object GlobalDefinitions { Infiltration.Holster(0, EquipmentSize.Pistol) Infiltration.Holster(4, EquipmentSize.Melee) - def CommonMaxConfig(max : SpecialExoSuitDefinition): Unit = { - max.Permissions = List(CertificationType.AIMAX,CertificationType.AVMAX, CertificationType.AAMAX, CertificationType.UniMAX) + def CommonMaxConfig(max: SpecialExoSuitDefinition): Unit = { + max.Permissions = + List(CertificationType.AIMAX, CertificationType.AVMAX, CertificationType.AAMAX, CertificationType.UniMAX) max.MaxArmor = 650 max.InventoryScale = InventoryTile.Tile1612 max.InventoryOffset = 6 @@ -1687,10 +1691,11 @@ object GlobalDefinitions { NCMAX.CapacitorDrainPerSecond = 4 } + /** * Initialize `AmmoBoxDefinition` globals. */ - private def init_ammo() : Unit = { + private def init_ammo(): Unit = { melee_ammo.Name = "melee_ammo" melee_ammo.Size = EquipmentSize.Blocked @@ -1707,11 +1712,11 @@ object GlobalDefinitions { bullet_9mm.Capacity = 50 bullet_9mm.Tile = InventoryTile.Tile33 - bullet_9mm_AP.Name="9mmbullet_AP" + bullet_9mm_AP.Name = "9mmbullet_AP" bullet_9mm_AP.Capacity = 50 bullet_9mm_AP.Tile = InventoryTile.Tile33 - shotgun_shell.Name ="shotgun_shell" + shotgun_shell.Name = "shotgun_shell" shotgun_shell.Capacity = 16 shotgun_shell.Tile = InventoryTile.Tile33 @@ -2001,8 +2006,8 @@ object GlobalDefinitions { /** * Initialize `ProjectileDefinition` globals. */ - private def init_projectile() : Unit = { - val projectileConverter : ProjectileConverter = new ProjectileConverter + private def init_projectile(): Unit = { + val projectileConverter: ProjectileConverter = new ProjectileConverter no_projectile.Name = "none" ProjectileDefinition.CalculateDerivedFields(no_projectile) @@ -2020,7 +2025,7 @@ object GlobalDefinitions { bullet_105mm_projectile.Lifespan = 4f ProjectileDefinition.CalculateDerivedFields(bullet_105mm_projectile) - bullet_12mm_projectile.Name= "12mmbullet_projectile" + bullet_12mm_projectile.Name = "12mmbullet_projectile" bullet_12mm_projectile.Damage0 = 25 bullet_12mm_projectile.Damage1 = 10 bullet_12mm_projectile.Damage2 = 25 @@ -2772,12 +2777,30 @@ object GlobalDefinitions { jammer_cartridge_projectile.Lifespan = 15f jammer_cartridge_projectile.AdditionalEffect = true jammer_cartridge_projectile.JammerProjectile = true - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player) -> 1000 - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.AMS) -> 5000 - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.MotionSensor) -> 30000 - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.Spitfire) -> 30000 - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret) -> 30000 - jammer_cartridge_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.VehicleNotAMS) -> 10000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Player, + EffectTarget.Validation.Player + ) -> 1000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.AMS + ) -> 5000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.MotionSensor + ) -> 30000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.Spitfire + ) -> 30000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Turret, + EffectTarget.Validation.Turret + ) -> 30000 + jammer_cartridge_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.VehicleNotAMS + ) -> 10000 ProjectileDefinition.CalculateDerivedFields(jammer_cartridge_projectile) jammer_cartridge_projectile_b.Name = "jammer_cartridge_projectile_b" @@ -2791,12 +2814,30 @@ object GlobalDefinitions { jammer_cartridge_projectile_b.Lifespan = 2f jammer_cartridge_projectile_b.AdditionalEffect = true jammer_cartridge_projectile_b.JammerProjectile = true - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player) -> 1000 - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.AMS) -> 5000 - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.MotionSensor) -> 30000 - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.Spitfire) -> 30000 - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret) -> 30000 - jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.VehicleNotAMS) -> 10000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Player, + EffectTarget.Validation.Player + ) -> 1000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.AMS + ) -> 5000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.MotionSensor + ) -> 30000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.Spitfire + ) -> 30000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Turret, + EffectTarget.Validation.Turret + ) -> 30000 + jammer_cartridge_projectile_b.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.VehicleNotAMS + ) -> 10000 ProjectileDefinition.CalculateDerivedFields(jammer_cartridge_projectile_b) jammer_grenade_projectile.Name = "jammer_grenade_projectile" @@ -2809,12 +2850,30 @@ object GlobalDefinitions { jammer_grenade_projectile.Lifespan = 15f jammer_grenade_projectile.AdditionalEffect = true jammer_grenade_projectile.JammerProjectile = true - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player) -> 1000 - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.AMS) -> 5000 - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.MotionSensor) -> 30000 - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.Spitfire) -> 30000 - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret) -> 30000 - jammer_grenade_projectile.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.VehicleNotAMS) -> 10000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Player, + EffectTarget.Validation.Player + ) -> 1000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.AMS + ) -> 5000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.MotionSensor + ) -> 30000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.Spitfire + ) -> 30000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Turret, + EffectTarget.Validation.Turret + ) -> 30000 + jammer_grenade_projectile.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.VehicleNotAMS + ) -> 10000 ProjectileDefinition.CalculateDerivedFields(jammer_grenade_projectile) jammer_grenade_projectile_enh.Name = "jammer_grenade_projectile_enh" @@ -2828,12 +2887,30 @@ object GlobalDefinitions { jammer_grenade_projectile_enh.Lifespan = 3f jammer_grenade_projectile_enh.AdditionalEffect = true jammer_grenade_projectile_enh.JammerProjectile = true - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Player, EffectTarget.Validation.Player) -> 1000 - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.AMS) -> 5000 - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.MotionSensor) -> 30000 - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Deployable, EffectTarget.Validation.Spitfire) -> 30000 - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Turret, EffectTarget.Validation.Turret) -> 30000 - jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation(EffectTarget.Category.Vehicle, EffectTarget.Validation.VehicleNotAMS) -> 10000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Player, + EffectTarget.Validation.Player + ) -> 1000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.AMS + ) -> 5000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.MotionSensor + ) -> 30000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Deployable, + EffectTarget.Validation.Spitfire + ) -> 30000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Turret, + EffectTarget.Validation.Turret + ) -> 30000 + jammer_grenade_projectile_enh.JammedEffectDuration += TargetValidation( + EffectTarget.Category.Vehicle, + EffectTarget.Validation.VehicleNotAMS + ) -> 10000 ProjectileDefinition.CalculateDerivedFields(jammer_grenade_projectile_enh) katana_projectile.Name = "katana_projectile" @@ -3228,7 +3305,7 @@ object GlobalDefinitions { phoenix_missile_guided_projectile.Lifespan = 3f //not naturally a remote projectile, but being governed as one for convenience phoenix_missile_guided_projectile.ExistsOnRemoteClients = true - phoenix_missile_guided_projectile.RemoteClientData = (0,63) + phoenix_missile_guided_projectile.RemoteClientData = (0, 63) phoenix_missile_guided_projectile.Packet = projectileConverter // ProjectileDefinition.CalculateDerivedFields(phoenix_missile_guided_projectile) @@ -3727,7 +3804,7 @@ object GlobalDefinitions { /** * Initialize `ToolDefinition` globals. */ - private def init_tools() : Unit = { + private def init_tools(): Unit = { chainblade.Name = "chainblade" chainblade.Size = EquipmentSize.Melee chainblade.AmmoTypes += melee_ammo @@ -4561,15 +4638,17 @@ object GlobalDefinitions { ace.Modes += new ConstructionFireMode ace.Modes.head.Item(DeployedItem.boomer -> Set(CertificationType.CombatEngineering)) ace.Modes += new ConstructionFireMode - ace.Modes(1).Item(DeployedItem.he_mine -> Set(CertificationType.CombatEngineering)) + ace.Modes(1).Item(DeployedItem.he_mine -> Set(CertificationType.CombatEngineering)) ace.Modes(1).Item(DeployedItem.jammer_mine -> Set(CertificationType.AssaultEngineering)) ace.Modes += new ConstructionFireMode - ace.Modes(2).Item(DeployedItem.spitfire_turret -> Set(CertificationType.CombatEngineering)) + ace.Modes(2).Item(DeployedItem.spitfire_turret -> Set(CertificationType.CombatEngineering)) ace.Modes(2).Item(DeployedItem.spitfire_cloaked -> Set(CertificationType.FortificationEngineering)) - ace.Modes(2).Item(DeployedItem.spitfire_aa -> Set(CertificationType.FortificationEngineering)) + ace.Modes(2).Item(DeployedItem.spitfire_aa -> Set(CertificationType.FortificationEngineering)) ace.Modes += new ConstructionFireMode ace.Modes(3).Item(DeployedItem.motionalarmsensor -> Set(CertificationType.CombatEngineering)) - ace.Modes(3).Item(DeployedItem.sensor_shield -> Set(CertificationType.AdvancedHacking, CertificationType.CombatEngineering)) + ace + .Modes(3) + .Item(DeployedItem.sensor_shield -> Set(CertificationType.AdvancedHacking, CertificationType.CombatEngineering)) ace.Tile = InventoryTile.Tile33 advanced_ace.Name = "advanced_ace" @@ -4619,7 +4698,8 @@ object GlobalDefinitions { scythe.FireModes += new FireModeDefinition scythe.FireModes(1).AmmoTypeIndices += 0 scythe.FireModes(1).ProjectileTypeIndices += 0 - scythe.FireModes(1).AmmoSlotIndex = 1 //note: the scythe has two magazines using a single pool; however, it can not ammo-switch or mode-switch + scythe.FireModes(1).AmmoSlotIndex = + 1 //note: the scythe has two magazines using a single pool; however, it can not ammo-switch or mode-switch scythe.FireModes(1).Magazine = 250 chaingun_p.Name = "chaingun_p" @@ -5191,7 +5271,7 @@ object GlobalDefinitions { /** * Initialize `VehicleDefinition` globals. */ - private def init_vehicles() : Unit = { + private def init_vehicles(): Unit = { fury.Name = "fury" fury.MaxHealth = 650 fury.Damageable = true @@ -5201,7 +5281,7 @@ object GlobalDefinitions { fury.Seats += 0 -> new SeatDefinition() fury.Seats(0).Bailable = true fury.Seats(0).ControlledWeapon = 1 - fury.Weapons += 1 -> fury_weapon_systema + fury.Weapons += 1 -> fury_weapon_systema fury.MountPoints += 1 -> 0 fury.MountPoints += 2 -> 0 fury.TrunkSize = InventoryTile.Tile1111 @@ -5220,7 +5300,7 @@ object GlobalDefinitions { quadassault.Seats += 0 -> new SeatDefinition() quadassault.Seats(0).Bailable = true quadassault.Seats(0).ControlledWeapon = 1 - quadassault.Weapons += 1 -> quadassault_weapon_system + quadassault.Weapons += 1 -> quadassault_weapon_system quadassault.MountPoints += 1 -> 0 quadassault.MountPoints += 2 -> 0 quadassault.TrunkSize = InventoryTile.Tile1111 @@ -5260,7 +5340,7 @@ object GlobalDefinitions { two_man_assault_buggy.Seats += 1 -> new SeatDefinition() two_man_assault_buggy.Seats(1).Bailable = true two_man_assault_buggy.Seats(1).ControlledWeapon = 2 - two_man_assault_buggy.Weapons += 2 -> chaingun_p + two_man_assault_buggy.Weapons += 2 -> chaingun_p two_man_assault_buggy.MountPoints += 1 -> 0 two_man_assault_buggy.MountPoints += 2 -> 1 two_man_assault_buggy.TrunkSize = InventoryTile.Tile1511 @@ -5281,7 +5361,7 @@ object GlobalDefinitions { skyguard.Seats += 1 -> new SeatDefinition() skyguard.Seats(1).Bailable = true skyguard.Seats(1).ControlledWeapon = 2 - skyguard.Weapons += 2 -> skyguard_weapon_system + skyguard.Weapons += 2 -> skyguard_weapon_system skyguard.MountPoints += 1 -> 0 skyguard.MountPoints += 2 -> 0 skyguard.MountPoints += 3 -> 1 @@ -5306,8 +5386,8 @@ object GlobalDefinitions { threemanheavybuggy.Seats += 2 -> new SeatDefinition() threemanheavybuggy.Seats(2).Bailable = true threemanheavybuggy.Seats(2).ControlledWeapon = 4 - threemanheavybuggy.Weapons += 3 -> chaingun_p - threemanheavybuggy.Weapons += 4 -> grenade_launcher_marauder + threemanheavybuggy.Weapons += 3 -> chaingun_p + threemanheavybuggy.Weapons += 4 -> grenade_launcher_marauder threemanheavybuggy.MountPoints += 1 -> 0 threemanheavybuggy.MountPoints += 2 -> 1 threemanheavybuggy.MountPoints += 3 -> 2 @@ -5330,7 +5410,7 @@ object GlobalDefinitions { twomanheavybuggy.Seats += 1 -> new SeatDefinition() twomanheavybuggy.Seats(1).Bailable = true twomanheavybuggy.Seats(1).ControlledWeapon = 2 - twomanheavybuggy.Weapons += 2 -> advanced_missile_launcher_t + twomanheavybuggy.Weapons += 2 -> advanced_missile_launcher_t twomanheavybuggy.MountPoints += 1 -> 0 twomanheavybuggy.MountPoints += 2 -> 1 twomanheavybuggy.TrunkSize = InventoryTile.Tile1511 @@ -5352,7 +5432,7 @@ object GlobalDefinitions { twomanhoverbuggy.Seats += 1 -> new SeatDefinition() twomanhoverbuggy.Seats(1).Bailable = true twomanhoverbuggy.Seats(1).ControlledWeapon = 2 - twomanhoverbuggy.Weapons += 2 -> flux_cannon_thresher + twomanhoverbuggy.Weapons += 2 -> flux_cannon_thresher twomanhoverbuggy.MountPoints += 1 -> 0 twomanhoverbuggy.MountPoints += 2 -> 1 twomanhoverbuggy.TrunkSize = InventoryTile.Tile1511 @@ -5375,10 +5455,10 @@ object GlobalDefinitions { mediumtransport.Seats(1).ControlledWeapon = 5 mediumtransport.Seats += 2 -> new SeatDefinition() mediumtransport.Seats(2).ControlledWeapon = 6 - mediumtransport.Seats += 3 -> new SeatDefinition() - mediumtransport.Seats += 4 -> new SeatDefinition() - mediumtransport.Weapons += 5 -> mediumtransport_weapon_systemA - mediumtransport.Weapons += 6 -> mediumtransport_weapon_systemB + mediumtransport.Seats += 3 -> new SeatDefinition() + mediumtransport.Seats += 4 -> new SeatDefinition() + mediumtransport.Weapons += 5 -> mediumtransport_weapon_systemA + mediumtransport.Weapons += 6 -> mediumtransport_weapon_systemB mediumtransport.MountPoints += 1 -> 0 mediumtransport.MountPoints += 2 -> 1 mediumtransport.MountPoints += 3 -> 2 @@ -5408,10 +5488,10 @@ object GlobalDefinitions { battlewagon.Seats(3).ControlledWeapon = 7 battlewagon.Seats += 4 -> new SeatDefinition() battlewagon.Seats(4).ControlledWeapon = 8 - battlewagon.Weapons += 5 -> battlewagon_weapon_systema - battlewagon.Weapons += 6 -> battlewagon_weapon_systemb - battlewagon.Weapons += 7 -> battlewagon_weapon_systemc - battlewagon.Weapons += 8 -> battlewagon_weapon_systemd + battlewagon.Weapons += 5 -> battlewagon_weapon_systema + battlewagon.Weapons += 6 -> battlewagon_weapon_systemb + battlewagon.Weapons += 7 -> battlewagon_weapon_systemc + battlewagon.Weapons += 8 -> battlewagon_weapon_systemd battlewagon.MountPoints += 1 -> 0 battlewagon.MountPoints += 2 -> 1 battlewagon.MountPoints += 3 -> 2 @@ -5436,10 +5516,10 @@ object GlobalDefinitions { thunderer.Seats(1).ControlledWeapon = 5 thunderer.Seats += 2 -> new SeatDefinition() thunderer.Seats(2).ControlledWeapon = 6 - thunderer.Seats += 3 -> new SeatDefinition() - thunderer.Seats += 4 -> new SeatDefinition() - thunderer.Weapons += 5 -> thunderer_weapon_systema - thunderer.Weapons += 6 -> thunderer_weapon_systemb + thunderer.Seats += 3 -> new SeatDefinition() + thunderer.Seats += 4 -> new SeatDefinition() + thunderer.Weapons += 5 -> thunderer_weapon_systema + thunderer.Weapons += 6 -> thunderer_weapon_systemb thunderer.MountPoints += 1 -> 0 thunderer.MountPoints += 2 -> 1 thunderer.MountPoints += 3 -> 2 @@ -5465,10 +5545,10 @@ object GlobalDefinitions { aurora.Seats(1).ControlledWeapon = 5 aurora.Seats += 2 -> new SeatDefinition() aurora.Seats(2).ControlledWeapon = 6 - aurora.Seats += 3 -> new SeatDefinition() - aurora.Seats += 4 -> new SeatDefinition() - aurora.Weapons += 5 -> aurora_weapon_systema - aurora.Weapons += 6 -> aurora_weapon_systemb + aurora.Seats += 3 -> new SeatDefinition() + aurora.Seats += 4 -> new SeatDefinition() + aurora.Weapons += 5 -> aurora_weapon_systema + aurora.Weapons += 6 -> aurora_weapon_systemb aurora.MountPoints += 1 -> 0 aurora.MountPoints += 2 -> 1 aurora.MountPoints += 3 -> 2 @@ -5480,7 +5560,7 @@ object GlobalDefinitions { aurora.AutoPilotSpeeds = (18, 6) aurora.DestroyedModel = Some(DestroyedVehicle.MediumTransport) aurora.Subtract.Damage1 = 7 - aurora.JackingDuration = Array(0, 25, 8 ,5) + aurora.JackingDuration = Array(0, 25, 8, 5) apc_tr.Name = "apc_tr" // Juggernaut apc_tr.MaxHealth = 6000 @@ -5508,21 +5588,21 @@ object GlobalDefinitions { apc_tr.Seats(9).ArmorRestriction = SeatArmorRestriction.MaxOnly apc_tr.Seats += 10 -> new SeatDefinition() apc_tr.Seats(10).ArmorRestriction = SeatArmorRestriction.MaxOnly - apc_tr.Weapons += 11 -> apc_weapon_systemc_tr - apc_tr.Weapons += 12 -> apc_weapon_systemb - apc_tr.Weapons += 13 -> apc_weapon_systema - apc_tr.Weapons += 14 -> apc_weapon_systemd_tr - apc_tr.Weapons += 15 -> apc_ballgun_r - apc_tr.Weapons += 16 -> apc_ballgun_l - apc_tr.MountPoints += 1 -> 0 - apc_tr.MountPoints += 2 -> 0 - apc_tr.MountPoints += 3 -> 1 - apc_tr.MountPoints += 4 -> 2 - apc_tr.MountPoints += 5 -> 3 - apc_tr.MountPoints += 6 -> 4 - apc_tr.MountPoints += 7 -> 5 - apc_tr.MountPoints += 8 -> 6 - apc_tr.MountPoints += 9 -> 7 + apc_tr.Weapons += 11 -> apc_weapon_systemc_tr + apc_tr.Weapons += 12 -> apc_weapon_systemb + apc_tr.Weapons += 13 -> apc_weapon_systema + apc_tr.Weapons += 14 -> apc_weapon_systemd_tr + apc_tr.Weapons += 15 -> apc_ballgun_r + apc_tr.Weapons += 16 -> apc_ballgun_l + apc_tr.MountPoints += 1 -> 0 + apc_tr.MountPoints += 2 -> 0 + apc_tr.MountPoints += 3 -> 1 + apc_tr.MountPoints += 4 -> 2 + apc_tr.MountPoints += 5 -> 3 + apc_tr.MountPoints += 6 -> 4 + apc_tr.MountPoints += 7 -> 5 + apc_tr.MountPoints += 8 -> 6 + apc_tr.MountPoints += 9 -> 7 apc_tr.MountPoints += 10 -> 8 apc_tr.MountPoints += 11 -> 9 apc_tr.MountPoints += 12 -> 10 @@ -5559,21 +5639,21 @@ object GlobalDefinitions { apc_nc.Seats(9).ArmorRestriction = SeatArmorRestriction.MaxOnly apc_nc.Seats += 10 -> new SeatDefinition() apc_nc.Seats(10).ArmorRestriction = SeatArmorRestriction.MaxOnly - apc_nc.Weapons += 11 -> apc_weapon_systemc_nc - apc_nc.Weapons += 12 -> apc_weapon_systemb - apc_nc.Weapons += 13 -> apc_weapon_systema - apc_nc.Weapons += 14 -> apc_weapon_systemd_nc - apc_nc.Weapons += 15 -> apc_ballgun_r - apc_nc.Weapons += 16 -> apc_ballgun_l - apc_nc.MountPoints += 1 -> 0 - apc_nc.MountPoints += 2 -> 0 - apc_nc.MountPoints += 3 -> 1 - apc_nc.MountPoints += 4 -> 2 - apc_nc.MountPoints += 5 -> 3 - apc_nc.MountPoints += 6 -> 4 - apc_nc.MountPoints += 7 -> 5 - apc_nc.MountPoints += 8 -> 6 - apc_nc.MountPoints += 9 -> 7 + apc_nc.Weapons += 11 -> apc_weapon_systemc_nc + apc_nc.Weapons += 12 -> apc_weapon_systemb + apc_nc.Weapons += 13 -> apc_weapon_systema + apc_nc.Weapons += 14 -> apc_weapon_systemd_nc + apc_nc.Weapons += 15 -> apc_ballgun_r + apc_nc.Weapons += 16 -> apc_ballgun_l + apc_nc.MountPoints += 1 -> 0 + apc_nc.MountPoints += 2 -> 0 + apc_nc.MountPoints += 3 -> 1 + apc_nc.MountPoints += 4 -> 2 + apc_nc.MountPoints += 5 -> 3 + apc_nc.MountPoints += 6 -> 4 + apc_nc.MountPoints += 7 -> 5 + apc_nc.MountPoints += 8 -> 6 + apc_nc.MountPoints += 9 -> 7 apc_nc.MountPoints += 10 -> 8 apc_nc.MountPoints += 11 -> 9 apc_nc.MountPoints += 12 -> 10 @@ -5610,21 +5690,21 @@ object GlobalDefinitions { apc_vs.Seats(9).ArmorRestriction = SeatArmorRestriction.MaxOnly apc_vs.Seats += 10 -> new SeatDefinition() apc_vs.Seats(10).ArmorRestriction = SeatArmorRestriction.MaxOnly - apc_vs.Weapons += 11 -> apc_weapon_systemc_vs - apc_vs.Weapons += 12 -> apc_weapon_systemb - apc_vs.Weapons += 13 -> apc_weapon_systema - apc_vs.Weapons += 14 -> apc_weapon_systemd_vs - apc_vs.Weapons += 15 -> apc_ballgun_r - apc_vs.Weapons += 16 -> apc_ballgun_l - apc_vs.MountPoints += 1 -> 0 - apc_vs.MountPoints += 2 -> 0 - apc_vs.MountPoints += 3 -> 1 - apc_vs.MountPoints += 4 -> 2 - apc_vs.MountPoints += 5 -> 3 - apc_vs.MountPoints += 6 -> 4 - apc_vs.MountPoints += 7 -> 5 - apc_vs.MountPoints += 8 -> 6 - apc_vs.MountPoints += 9 -> 7 + apc_vs.Weapons += 11 -> apc_weapon_systemc_vs + apc_vs.Weapons += 12 -> apc_weapon_systemb + apc_vs.Weapons += 13 -> apc_weapon_systema + apc_vs.Weapons += 14 -> apc_weapon_systemd_vs + apc_vs.Weapons += 15 -> apc_ballgun_r + apc_vs.Weapons += 16 -> apc_ballgun_l + apc_vs.MountPoints += 1 -> 0 + apc_vs.MountPoints += 2 -> 0 + apc_vs.MountPoints += 3 -> 1 + apc_vs.MountPoints += 4 -> 2 + apc_vs.MountPoints += 5 -> 3 + apc_vs.MountPoints += 6 -> 4 + apc_vs.MountPoints += 7 -> 5 + apc_vs.MountPoints += 8 -> 6 + apc_vs.MountPoints += 9 -> 7 apc_vs.MountPoints += 10 -> 8 apc_vs.MountPoints += 11 -> 9 apc_vs.MountPoints += 12 -> 10 @@ -5644,7 +5724,7 @@ object GlobalDefinitions { lightning.Seats += 0 -> new SeatDefinition() lightning.Seats(0).ArmorRestriction = SeatArmorRestriction.NoReinforcedOrMax lightning.Seats(0).ControlledWeapon = 1 - lightning.Weapons += 1 -> lightning_weapon_system + lightning.Weapons += 1 -> lightning_weapon_system lightning.MountPoints += 1 -> 0 lightning.MountPoints += 2 -> 0 lightning.TrunkSize = InventoryTile.Tile1511 @@ -5653,7 +5733,7 @@ object GlobalDefinitions { lightning.AutoPilotSpeeds = (20, 8) lightning.DestroyedModel = Some(DestroyedVehicle.Lightning) lightning.Subtract.Damage1 = 7 - lightning.JackingDuration = Array(0, 20, 7 ,5) + lightning.JackingDuration = Array(0, 20, 7, 5) prowler.Name = "prowler" prowler.MaxHealth = 4800 @@ -5667,8 +5747,8 @@ object GlobalDefinitions { prowler.Seats(1).ControlledWeapon = 3 prowler.Seats += 2 -> new SeatDefinition() prowler.Seats(2).ControlledWeapon = 4 - prowler.Weapons += 3 -> prowler_weapon_systemA - prowler.Weapons += 4 -> prowler_weapon_systemB + prowler.Weapons += 3 -> prowler_weapon_systemA + prowler.Weapons += 4 -> prowler_weapon_systemB prowler.MountPoints += 1 -> 0 prowler.MountPoints += 2 -> 1 prowler.MountPoints += 3 -> 2 @@ -5690,7 +5770,7 @@ object GlobalDefinitions { vanguard.Seats(0).ArmorRestriction = SeatArmorRestriction.NoReinforcedOrMax vanguard.Seats += 1 -> new SeatDefinition() vanguard.Seats(1).ControlledWeapon = 2 - vanguard.Weapons += 2 -> vanguard_weapon_system + vanguard.Weapons += 2 -> vanguard_weapon_system vanguard.MountPoints += 1 -> 0 vanguard.MountPoints += 2 -> 1 vanguard.TrunkSize = InventoryTile.Tile1511 @@ -5712,8 +5792,8 @@ object GlobalDefinitions { magrider.Seats(0).ControlledWeapon = 2 magrider.Seats += 1 -> new SeatDefinition() magrider.Seats(1).ControlledWeapon = 3 - magrider.Weapons += 2 -> particle_beam_magrider - magrider.Weapons += 3 -> heavy_rail_beam_magrider + magrider.Weapons += 2 -> particle_beam_magrider + magrider.Weapons += 3 -> heavy_rail_beam_magrider magrider.MountPoints += 1 -> 0 magrider.MountPoints += 2 -> 1 magrider.TrunkSize = InventoryTile.Tile1511 @@ -5743,7 +5823,7 @@ object GlobalDefinitions { ant.Packet = utilityConverter ant.DestroyedModel = Some(DestroyedVehicle.Ant) ant.Subtract.Damage1 = 5 - ant.JackingDuration = Array (0, 60, 20, 15) + ant.JackingDuration = Array(0, 60, 20, 15) ams.Name = "ams" ams.MaxHealth = 3000 @@ -5755,10 +5835,10 @@ object GlobalDefinitions { ams.Seats(0).ArmorRestriction = SeatArmorRestriction.NoReinforcedOrMax ams.MountPoints += 1 -> 0 ams.MountPoints += 2 -> 0 - ams.Utilities += 1 -> UtilityType.matrix_terminalc - ams.Utilities += 2 -> UtilityType.ams_respawn_tube - ams.Utilities += 3 -> UtilityType.order_terminala - ams.Utilities += 4 -> UtilityType.order_terminalb + ams.Utilities += 1 -> UtilityType.matrix_terminalc + ams.Utilities += 2 -> UtilityType.ams_respawn_tube + ams.Utilities += 3 -> UtilityType.order_terminala + ams.Utilities += 4 -> UtilityType.order_terminalb ams.Deployment = true ams.DeployTime = 2000 ams.UndeployTime = 2000 @@ -5776,10 +5856,10 @@ object GlobalDefinitions { router.Repairable = true router.RepairIfDestroyed = false router.MaxShields = 800 + 1 - router.Seats += 0 -> new SeatDefinition() + router.Seats += 0 -> new SeatDefinition() router.MountPoints += 1 -> 0 - router.Utilities += 1 -> UtilityType.teleportpad_terminal - router.Utilities += 2 -> UtilityType.internal_router_telepad_deployable + router.Utilities += 1 -> UtilityType.teleportpad_terminal + router.Utilities += 2 -> UtilityType.internal_router_telepad_deployable router.TrunkSize = InventoryTile.Tile1511 router.TrunkOffset = 30 router.TrunkLocation = Vector3(0f, 3.4f, 0f) @@ -5801,7 +5881,7 @@ object GlobalDefinitions { switchblade.MaxShields = 350 + 1 switchblade.Seats += 0 -> new SeatDefinition() switchblade.Seats(0).ControlledWeapon = 1 - switchblade.Weapons += 1 -> scythe + switchblade.Weapons += 1 -> scythe switchblade.MountPoints += 1 -> 0 switchblade.MountPoints += 2 -> 0 switchblade.TrunkSize = InventoryTile.Tile1511 @@ -5825,7 +5905,7 @@ object GlobalDefinitions { flail.MaxShields = 480 + 1 flail.Seats += 0 -> new SeatDefinition() flail.Seats(0).ControlledWeapon = 1 - flail.Weapons += 1 -> flail_weapon + flail.Weapons += 1 -> flail_weapon flail.MountPoints += 1 -> 0 flail.TrunkSize = InventoryTile.Tile1511 flail.TrunkOffset = 30 @@ -5849,7 +5929,7 @@ object GlobalDefinitions { mosquito.Seats += 0 -> new SeatDefinition() mosquito.Seats(0).Bailable = true mosquito.Seats(0).ControlledWeapon = 1 - mosquito.Weapons += 1 -> rotarychaingun_mosquito + mosquito.Weapons += 1 -> rotarychaingun_mosquito mosquito.MountPoints += 1 -> 0 mosquito.MountPoints += 2 -> 0 mosquito.TrunkSize = InventoryTile.Tile1111 @@ -5870,7 +5950,7 @@ object GlobalDefinitions { lightgunship.Seats += 0 -> new SeatDefinition() lightgunship.Seats(0).Bailable = true lightgunship.Seats(0).ControlledWeapon = 1 - lightgunship.Weapons += 1 -> lightgunship_weapon_system + lightgunship.Weapons += 1 -> lightgunship_weapon_system lightgunship.MountPoints += 1 -> 0 lightgunship.MountPoints += 2 -> 0 lightgunship.TrunkSize = InventoryTile.Tile1511 @@ -5892,7 +5972,7 @@ object GlobalDefinitions { wasp.Seats += 0 -> new SeatDefinition() wasp.Seats(0).Bailable = true wasp.Seats(0).ControlledWeapon = 1 - wasp.Weapons += 1 -> wasp_weapon_system + wasp.Weapons += 1 -> wasp_weapon_system wasp.MountPoints += 1 -> 0 wasp.MountPoints += 2 -> 0 wasp.TrunkSize = InventoryTile.Tile1111 @@ -5916,9 +5996,9 @@ object GlobalDefinitions { liberator.Seats(1).ControlledWeapon = 4 liberator.Seats += 2 -> new SeatDefinition() liberator.Seats(2).ControlledWeapon = 5 - liberator.Weapons += 3 -> liberator_weapon_system - liberator.Weapons += 4 -> liberator_bomb_bay - liberator.Weapons += 5 -> liberator_25mm_cannon + liberator.Weapons += 3 -> liberator_weapon_system + liberator.Weapons += 4 -> liberator_bomb_bay + liberator.Weapons += 5 -> liberator_25mm_cannon liberator.MountPoints += 1 -> 0 liberator.MountPoints += 2 -> 1 liberator.MountPoints += 3 -> 1 @@ -5945,9 +6025,9 @@ object GlobalDefinitions { vulture.Seats(1).ControlledWeapon = 4 vulture.Seats += 2 -> new SeatDefinition() vulture.Seats(2).ControlledWeapon = 5 - vulture.Weapons += 3 -> vulture_nose_weapon_system - vulture.Weapons += 4 -> vulture_bomb_bay - vulture.Weapons += 5 -> vulture_tail_cannon + vulture.Weapons += 3 -> vulture_nose_weapon_system + vulture.Weapons += 4 -> vulture_bomb_bay + vulture.Weapons += 5 -> vulture_tail_cannon vulture.MountPoints += 1 -> 0 vulture.MountPoints += 2 -> 1 vulture.MountPoints += 3 -> 1 @@ -5957,7 +6037,8 @@ object GlobalDefinitions { vulture.TrunkLocation = Vector3(-0.76f, -1.88f, 0f) vulture.AutoPilotSpeeds = (0, 4) vulture.Packet = variantConverter - vulture.DestroyedModel = Some(DestroyedVehicle.Liberator) //add_property vulture destroyedphysics liberator_destroyed + vulture.DestroyedModel = + Some(DestroyedVehicle.Liberator) //add_property vulture destroyedphysics liberator_destroyed vulture.Subtract.Damage1 = 5 vulture.JackingDuration = Array(0, 30, 10, 5) @@ -5997,19 +6078,19 @@ object GlobalDefinitions { dropship.Seats += 11 -> new SeatDefinition() dropship.Seats(11).Bailable = true dropship.Seats(11).ControlledWeapon = 14 - dropship.Weapons += 12 -> cannon_dropship_20mm - dropship.Weapons += 13 -> cannon_dropship_20mm - dropship.Weapons += 14 -> dropship_rear_turret - dropship.Cargo += 15 -> new CargoDefinition() - dropship.MountPoints += 1 -> 0 - dropship.MountPoints += 2 -> 11 - dropship.MountPoints += 3 -> 1 - dropship.MountPoints += 4 -> 2 - dropship.MountPoints += 5 -> 3 - dropship.MountPoints += 6 -> 4 - dropship.MountPoints += 7 -> 5 - dropship.MountPoints += 8 -> 6 - dropship.MountPoints += 9 -> 7 + dropship.Weapons += 12 -> cannon_dropship_20mm + dropship.Weapons += 13 -> cannon_dropship_20mm + dropship.Weapons += 14 -> dropship_rear_turret + dropship.Cargo += 15 -> new CargoDefinition() + dropship.MountPoints += 1 -> 0 + dropship.MountPoints += 2 -> 11 + dropship.MountPoints += 3 -> 1 + dropship.MountPoints += 4 -> 2 + dropship.MountPoints += 5 -> 3 + dropship.MountPoints += 6 -> 4 + dropship.MountPoints += 7 -> 5 + dropship.MountPoints += 8 -> 6 + dropship.MountPoints += 9 -> 7 dropship.MountPoints += 10 -> 8 dropship.MountPoints += 11 -> 9 dropship.MountPoints += 12 -> 10 @@ -6042,11 +6123,11 @@ object GlobalDefinitions { galaxy_gunship.Seats(4).ControlledWeapon = 9 galaxy_gunship.Seats += 5 -> new SeatDefinition() galaxy_gunship.Seats(5).ControlledWeapon = 10 - galaxy_gunship.Weapons += 6 -> galaxy_gunship_cannon - galaxy_gunship.Weapons += 7 -> galaxy_gunship_cannon - galaxy_gunship.Weapons += 8 -> galaxy_gunship_tailgun - galaxy_gunship.Weapons += 9 -> galaxy_gunship_gun - galaxy_gunship.Weapons += 10 -> galaxy_gunship_gun + galaxy_gunship.Weapons += 6 -> galaxy_gunship_cannon + galaxy_gunship.Weapons += 7 -> galaxy_gunship_cannon + galaxy_gunship.Weapons += 8 -> galaxy_gunship_tailgun + galaxy_gunship.Weapons += 9 -> galaxy_gunship_gun + galaxy_gunship.Weapons += 10 -> galaxy_gunship_gun galaxy_gunship.MountPoints += 1 -> 0 galaxy_gunship.MountPoints += 2 -> 3 galaxy_gunship.MountPoints += 3 -> 1 @@ -6058,7 +6139,8 @@ object GlobalDefinitions { galaxy_gunship.TrunkLocation = Vector3(-9.85f, 0f, 0f) galaxy_gunship.AutoPilotSpeeds = (0, 4) galaxy_gunship.Packet = variantConverter - galaxy_gunship.DestroyedModel = Some(DestroyedVehicle.Dropship) //the adb calls out a galaxy_gunship_destroyed but no such asset exists + galaxy_gunship.DestroyedModel = + Some(DestroyedVehicle.Dropship) //the adb calls out a galaxy_gunship_destroyed but no such asset exists galaxy_gunship.Subtract.Damage1 = 7 galaxy_gunship.JackingDuration = Array(0, 60, 20, 10) @@ -6070,18 +6152,18 @@ object GlobalDefinitions { lodestar.RepairIfDestroyed = false lodestar.MaxShields = 1000 + 1 lodestar.CanFly = true - lodestar.Seats += 0 -> new SeatDefinition() - lodestar.MountPoints += 1 -> 0 - lodestar.MountPoints += 2 -> 1 - lodestar.Cargo += 1 -> new CargoDefinition() - lodestar.Utilities += 2 -> UtilityType.lodestar_repair_terminal + lodestar.Seats += 0 -> new SeatDefinition() + lodestar.MountPoints += 1 -> 0 + lodestar.MountPoints += 2 -> 1 + lodestar.Cargo += 1 -> new CargoDefinition() + lodestar.Utilities += 2 -> UtilityType.lodestar_repair_terminal lodestar.UtilityOffset += 2 -> Vector3(0, 20, 0) - lodestar.Utilities += 3 -> UtilityType.lodestar_repair_terminal + lodestar.Utilities += 3 -> UtilityType.lodestar_repair_terminal lodestar.UtilityOffset += 3 -> Vector3(0, -20, 0) - lodestar.Utilities += 4 -> UtilityType.multivehicle_rearm_terminal - lodestar.Utilities += 5 -> UtilityType.multivehicle_rearm_terminal - lodestar.Utilities += 6 -> UtilityType.bfr_rearm_terminal - lodestar.Utilities += 7 -> UtilityType.bfr_rearm_terminal + lodestar.Utilities += 4 -> UtilityType.multivehicle_rearm_terminal + lodestar.Utilities += 5 -> UtilityType.multivehicle_rearm_terminal + lodestar.Utilities += 6 -> UtilityType.bfr_rearm_terminal + lodestar.Utilities += 7 -> UtilityType.bfr_rearm_terminal lodestar.TrunkSize = InventoryTile.Tile1612 lodestar.TrunkOffset = 30 lodestar.TrunkLocation = Vector3(6.85f, -6.8f, 0f) @@ -6125,7 +6207,7 @@ object GlobalDefinitions { droppod.MaxHealth = 20000 //droppod.Damageable = false droppod.CanFly = true - droppod.Seats += 0 -> new SeatDefinition + droppod.Seats += 0 -> new SeatDefinition droppod.MountPoints += 1 -> 0 droppod.TrunkSize = InventoryTile.None droppod.Packet = new DroppodConverter() @@ -6136,7 +6218,7 @@ object GlobalDefinitions { /** * Initialize `Deployable` globals. */ - private def init_deployables() : Unit = { + private def init_deployables(): Unit = { boomer.Name = "boomer" boomer.Descriptor = "Boomers" boomer.MaxHealth = 100 @@ -6169,7 +6251,7 @@ object GlobalDefinitions { spitfire_turret.Damageable = true spitfire_turret.Repairable = true spitfire_turret.RepairIfDestroyed = false - spitfire_turret.Weapons += 1 -> new mutable.HashMap() + spitfire_turret.Weapons += 1 -> new mutable.HashMap() spitfire_turret.Weapons(1) += TurretUpgrade.None -> spitfire_weapon spitfire_turret.ReserveAmmunition = false spitfire_turret.DeployCategory = DeployableCategory.SmallTurrets @@ -6182,7 +6264,7 @@ object GlobalDefinitions { spitfire_cloaked.Damageable = true spitfire_cloaked.Repairable = true spitfire_cloaked.RepairIfDestroyed = false - spitfire_cloaked.Weapons += 1 -> new mutable.HashMap() + spitfire_cloaked.Weapons += 1 -> new mutable.HashMap() spitfire_cloaked.Weapons(1) += TurretUpgrade.None -> spitfire_weapon spitfire_cloaked.ReserveAmmunition = false spitfire_cloaked.DeployCategory = DeployableCategory.SmallTurrets @@ -6195,7 +6277,7 @@ object GlobalDefinitions { spitfire_aa.Damageable = true spitfire_aa.Repairable = true spitfire_aa.RepairIfDestroyed = false - spitfire_aa.Weapons += 1 -> new mutable.HashMap() + spitfire_aa.Weapons += 1 -> new mutable.HashMap() spitfire_aa.Weapons(1) += TurretUpgrade.None -> spitfire_aa_weapon spitfire_aa.ReserveAmmunition = false spitfire_aa.DeployCategory = DeployableCategory.SmallTurrets @@ -6235,9 +6317,9 @@ object GlobalDefinitions { portable_manned_turret.Damageable = true portable_manned_turret.Repairable = true portable_manned_turret.RepairIfDestroyed = false - portable_manned_turret.MountPoints += 1 -> 0 - portable_manned_turret.MountPoints += 2 -> 0 - portable_manned_turret.Weapons += 1 -> new mutable.HashMap() + portable_manned_turret.MountPoints += 1 -> 0 + portable_manned_turret.MountPoints += 2 -> 0 + portable_manned_turret.Weapons += 1 -> new mutable.HashMap() portable_manned_turret.Weapons(1) += TurretUpgrade.None -> energy_gun portable_manned_turret.ReserveAmmunition = true portable_manned_turret.FactionLocked = true @@ -6252,9 +6334,9 @@ object GlobalDefinitions { portable_manned_turret_nc.Damageable = true portable_manned_turret_nc.Repairable = true portable_manned_turret_nc.RepairIfDestroyed = false - portable_manned_turret_nc.MountPoints += 1 -> 0 - portable_manned_turret_nc.MountPoints += 2 -> 0 - portable_manned_turret_nc.Weapons += 1 -> new mutable.HashMap() + portable_manned_turret_nc.MountPoints += 1 -> 0 + portable_manned_turret_nc.MountPoints += 2 -> 0 + portable_manned_turret_nc.Weapons += 1 -> new mutable.HashMap() portable_manned_turret_nc.Weapons(1) += TurretUpgrade.None -> energy_gun_nc portable_manned_turret_nc.ReserveAmmunition = true portable_manned_turret_nc.FactionLocked = true @@ -6269,9 +6351,9 @@ object GlobalDefinitions { portable_manned_turret_tr.Damageable = true portable_manned_turret_tr.Repairable = true portable_manned_turret_tr.RepairIfDestroyed = false - portable_manned_turret_tr.MountPoints += 1 -> 0 - portable_manned_turret_tr.MountPoints += 2 -> 0 - portable_manned_turret_tr.Weapons += 1 -> new mutable.HashMap() + portable_manned_turret_tr.MountPoints += 1 -> 0 + portable_manned_turret_tr.MountPoints += 2 -> 0 + portable_manned_turret_tr.Weapons += 1 -> new mutable.HashMap() portable_manned_turret_tr.Weapons(1) += TurretUpgrade.None -> energy_gun_tr portable_manned_turret_tr.ReserveAmmunition = true portable_manned_turret_tr.FactionLocked = true @@ -6286,9 +6368,9 @@ object GlobalDefinitions { portable_manned_turret_vs.Damageable = true portable_manned_turret_vs.Repairable = true portable_manned_turret_vs.RepairIfDestroyed = false - portable_manned_turret_vs.MountPoints += 1 -> 0 - portable_manned_turret_vs.MountPoints += 2 -> 0 - portable_manned_turret_vs.Weapons += 1 -> new mutable.HashMap() + portable_manned_turret_vs.MountPoints += 1 -> 0 + portable_manned_turret_vs.MountPoints += 2 -> 0 + portable_manned_turret_vs.Weapons += 1 -> new mutable.HashMap() portable_manned_turret_vs.Weapons(1) += TurretUpgrade.None -> energy_gun_vs portable_manned_turret_vs.ReserveAmmunition = true portable_manned_turret_vs.FactionLocked = true @@ -6305,7 +6387,7 @@ object GlobalDefinitions { deployable_shield_generator.RepairIfDestroyed = false deployable_shield_generator.DeployTime = Duration.create(6000, "ms") deployable_shield_generator.Model = StandardResolutions.ComplexDeployables - + router_telepad_deployable.Name = "router_telepad_deployable" router_telepad_deployable.MaxHealth = 100 router_telepad_deployable.Damageable = true @@ -6327,7 +6409,7 @@ object GlobalDefinitions { /** * Initialize `Miscellaneous` globals. */ - private def initMiscellaneous() : Unit = { + private def initMiscellaneous(): Unit = { ams_respawn_tube.Name = "ams_respawn_tube" ams_respawn_tube.Delay = 5 ams_respawn_tube.SpecificPointFunc = SpawnPoint.AMS @@ -6351,9 +6433,16 @@ object GlobalDefinitions { spawn_terminal.Repairable = false order_terminal.Name = "order_terminal" - order_terminal.Tab += 0 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons) - order_terminal.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage(EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits, EquipmentTerminalDefinition.maxAmmo) - order_terminal.Tab += 2 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons) + order_terminal.Tab += 0 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons + ) + order_terminal.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage( + EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits, + EquipmentTerminalDefinition.maxAmmo + ) + order_terminal.Tab += 2 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons + ) order_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) order_terminal.Tab += 4 -> OrderTerminalDefinition.InfantryLoadoutPage() order_terminal.SellEquipmentByDefault = true @@ -6364,9 +6453,16 @@ object GlobalDefinitions { order_terminal.Subtract.Damage1 = 8 order_terminala.Name = "order_terminala" - order_terminala.Tab += 0 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons) - order_terminala.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage(EquipmentTerminalDefinition.suits, EquipmentTerminalDefinition.maxAmmo) - order_terminala.Tab += 2 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons) + order_terminala.Tab += 0 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons + ) + order_terminala.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage( + EquipmentTerminalDefinition.suits, + EquipmentTerminalDefinition.maxAmmo + ) + order_terminala.Tab += 2 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons + ) order_terminala.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) order_terminala.Tab += 4 -> OrderTerminalDefinition.InfantryLoadoutPage() order_terminala.Tab(4).asInstanceOf[OrderTerminalDefinition.InfantryLoadoutPage].Exclude = ExoSuitType.MAX @@ -6375,9 +6471,16 @@ object GlobalDefinitions { order_terminala.Repairable = false order_terminalb.Name = "order_terminalb" - order_terminalb.Tab += 0 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons) - order_terminalb.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage(EquipmentTerminalDefinition.suits, EquipmentTerminalDefinition.maxAmmo) - order_terminalb.Tab += 2 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons) + order_terminalb.Tab += 0 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons + ) + order_terminalb.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage( + EquipmentTerminalDefinition.suits, + EquipmentTerminalDefinition.maxAmmo + ) + order_terminalb.Tab += 2 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons + ) order_terminalb.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) order_terminalb.Tab += 4 -> OrderTerminalDefinition.InfantryLoadoutPage() order_terminalb.Tab(4).asInstanceOf[OrderTerminalDefinition.InfantryLoadoutPage].Exclude = ExoSuitType.MAX @@ -6386,9 +6489,16 @@ object GlobalDefinitions { order_terminalb.Repairable = false vanu_equipment_term.Name = "vanu_equipment_term" - vanu_equipment_term.Tab += 0 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons) - vanu_equipment_term.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage(EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits, EquipmentTerminalDefinition.maxAmmo) - vanu_equipment_term.Tab += 2 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons) + vanu_equipment_term.Tab += 0 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.infantryAmmunition ++ EquipmentTerminalDefinition.infantryWeapons + ) + vanu_equipment_term.Tab += 1 -> OrderTerminalDefinition.ArmorWithAmmoPage( + EquipmentTerminalDefinition.suits ++ EquipmentTerminalDefinition.maxSuits, + EquipmentTerminalDefinition.maxAmmo + ) + vanu_equipment_term.Tab += 2 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.supportAmmunition ++ EquipmentTerminalDefinition.supportWeapons + ) vanu_equipment_term.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) vanu_equipment_term.Tab += 4 -> OrderTerminalDefinition.InfantryLoadoutPage() vanu_equipment_term.SellEquipmentByDefault = true @@ -6417,7 +6527,10 @@ object GlobalDefinitions { implant_terminal_interface.RepairIfDestroyed = true ground_vehicle_terminal.Name = "ground_vehicle_terminal" - ground_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.groundVehicles, VehicleTerminalDefinition.trunk) + ground_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.groundVehicles, + VehicleTerminalDefinition.trunk + ) ground_vehicle_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() ground_vehicle_terminal.MaxHealth = 500 ground_vehicle_terminal.Damageable = true @@ -6426,7 +6539,10 @@ object GlobalDefinitions { ground_vehicle_terminal.Subtract.Damage1 = 8 air_vehicle_terminal.Name = "air_vehicle_terminal" - air_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.flight1Vehicles, VehicleTerminalDefinition.trunk) + air_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.flight1Vehicles, + VehicleTerminalDefinition.trunk + ) air_vehicle_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() air_vehicle_terminal.MaxHealth = 500 air_vehicle_terminal.Damageable = true @@ -6435,7 +6551,10 @@ object GlobalDefinitions { air_vehicle_terminal.Subtract.Damage1 = 8 dropship_vehicle_terminal.Name = "dropship_vehicle_terminal" - dropship_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.flight2Vehicles, VehicleTerminalDefinition.trunk) + dropship_vehicle_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.flight2Vehicles, + VehicleTerminalDefinition.trunk + ) dropship_vehicle_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() dropship_vehicle_terminal.MaxHealth = 500 dropship_vehicle_terminal.Damageable = true @@ -6444,7 +6563,10 @@ object GlobalDefinitions { dropship_vehicle_terminal.Subtract.Damage1 = 8 vehicle_terminal_combined.Name = "vehicle_terminal_combined" - vehicle_terminal_combined.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.groundVehicles, VehicleTerminalDefinition.trunk) + vehicle_terminal_combined.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.flight1Vehicles ++ VehicleTerminalDefinition.groundVehicles, + VehicleTerminalDefinition.trunk + ) vehicle_terminal_combined.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() vehicle_terminal_combined.MaxHealth = 500 vehicle_terminal_combined.Damageable = true @@ -6453,7 +6575,10 @@ object GlobalDefinitions { vehicle_terminal_combined.Subtract.Damage1 = 8 vanu_air_vehicle_term.Name = "vanu_air_vehicle_term" - vanu_air_vehicle_term.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.flight1Vehicles, VehicleTerminalDefinition.trunk) + vanu_air_vehicle_term.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.flight1Vehicles, + VehicleTerminalDefinition.trunk + ) vanu_air_vehicle_term.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() vanu_air_vehicle_term.MaxHealth = 500 vanu_air_vehicle_term.Damageable = true @@ -6462,7 +6587,10 @@ object GlobalDefinitions { vanu_air_vehicle_term.Subtract.Damage1 = 8 vanu_vehicle_term.Name = "vanu_vehicle_term" - vanu_vehicle_term.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.groundVehicles, VehicleTerminalDefinition.trunk) + vanu_vehicle_term.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.groundVehicles, + VehicleTerminalDefinition.trunk + ) vanu_vehicle_term.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() vanu_vehicle_term.MaxHealth = 500 vanu_vehicle_term.Damageable = true @@ -6471,7 +6599,10 @@ object GlobalDefinitions { vanu_vehicle_term.Subtract.Damage1 = 8 bfr_terminal.Name = "bfr_terminal" - bfr_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage(VehicleTerminalDefinition.bfrVehicles, VehicleTerminalDefinition.trunk) + bfr_terminal.Tab += 46769 -> OrderTerminalDefinition.VehiclePage( + VehicleTerminalDefinition.bfrVehicles, + VehicleTerminalDefinition.trunk + ) bfr_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() bfr_terminal.MaxHealth = 500 bfr_terminal.Damageable = true @@ -6632,14 +6763,18 @@ object GlobalDefinitions { lodestar_repair_terminal.Repairable = false multivehicle_rearm_terminal.Name = "multivehicle_rearm_terminal" - multivehicle_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) + multivehicle_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.vehicleAmmunition + ) multivehicle_rearm_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() multivehicle_rearm_terminal.SellEquipmentByDefault = true //TODO ? multivehicle_rearm_terminal.Damageable = false multivehicle_rearm_terminal.Repairable = false bfr_rearm_terminal.Name = "bfr_rearm_terminal" - bfr_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(Map.empty[String, ()=>Equipment]) //TODO add stock to page + bfr_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage( + Map.empty[String, () => Equipment] + ) //TODO add stock to page bfr_rearm_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() bfr_rearm_terminal.SellEquipmentByDefault = true //TODO ? bfr_rearm_terminal.Damageable = false @@ -6653,7 +6788,9 @@ object GlobalDefinitions { air_rearm_terminal.Repairable = false ground_rearm_terminal.Name = "ground_rearm_terminal" - ground_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage(EquipmentTerminalDefinition.vehicleAmmunition) + ground_rearm_terminal.Tab += 3 -> OrderTerminalDefinition.EquipmentPage( + EquipmentTerminalDefinition.vehicleAmmunition + ) ground_rearm_terminal.Tab += 4 -> OrderTerminalDefinition.VehicleLoadoutPage() ground_rearm_terminal.SellEquipmentByDefault = true //TODO ? ground_rearm_terminal.Damageable = false @@ -6665,11 +6802,11 @@ object GlobalDefinitions { manned_turret.DamageDisablesAt = 0 manned_turret.Repairable = true manned_turret.RepairIfDestroyed = true - manned_turret.Weapons += 1 -> new mutable.HashMap() - manned_turret.Weapons(1) += TurretUpgrade.None -> phalanx_sgl_hevgatcan - manned_turret.Weapons(1) += TurretUpgrade.AVCombo -> phalanx_avcombo + manned_turret.Weapons += 1 -> new mutable.HashMap() + manned_turret.Weapons(1) += TurretUpgrade.None -> phalanx_sgl_hevgatcan + manned_turret.Weapons(1) += TurretUpgrade.AVCombo -> phalanx_avcombo manned_turret.Weapons(1) += TurretUpgrade.FlakCombo -> phalanx_flakcombo - manned_turret.MountPoints += 1 -> 0 + manned_turret.MountPoints += 1 -> 0 manned_turret.FactionLocked = true manned_turret.ReserveAmmunition = false @@ -6679,10 +6816,10 @@ object GlobalDefinitions { vanu_sentry_turret.DamageDisablesAt = 0 vanu_sentry_turret.Repairable = true vanu_sentry_turret.RepairIfDestroyed = true - vanu_sentry_turret.Weapons += 1 -> new mutable.HashMap() + vanu_sentry_turret.Weapons += 1 -> new mutable.HashMap() vanu_sentry_turret.Weapons(1) += TurretUpgrade.None -> vanu_sentry_turret_weapon - vanu_sentry_turret.MountPoints += 1 -> 0 - vanu_sentry_turret.MountPoints += 2 -> 0 + vanu_sentry_turret.MountPoints += 1 -> 0 + vanu_sentry_turret.MountPoints += 2 -> 0 vanu_sentry_turret.FactionLocked = false vanu_sentry_turret.ReserveAmmunition = false diff --git a/common/src/main/scala/net/psforever/objects/ImplantSlot.scala b/common/src/main/scala/net/psforever/objects/ImplantSlot.scala index c77cf230..c1510497 100644 --- a/common/src/main/scala/net/psforever/objects/ImplantSlot.scala +++ b/common/src/main/scala/net/psforever/objects/ImplantSlot.scala @@ -14,61 +14,68 @@ import net.psforever.types.{ExoSuitType, ImplantType} * Being jammed de-activates the implant, put it into a state of "not being ready," and causes the initialization to repeat. */ class ImplantSlot { + /** is this slot available for holding an implant */ - private var unlocked : Boolean = false + private var unlocked: Boolean = false + /** whether this implant is ready for use */ - private var initialized : Boolean = false - /** */ - private var initializeTime : Long = 0L + private var initialized: Boolean = false + + /** + */ + private var initializeTime: Long = 0L + /** is this implant active */ - private var active : Boolean = false + private var active: Boolean = false + /** what implant is currently installed in this slot; None if there is no implant currently installed */ - private var implant : Option[ImplantDefinition] = None + private var implant: Option[ImplantDefinition] = None - def InitializeTime : Long = initializeTime + def InitializeTime: Long = initializeTime - def InitializeTime_=(time : Long) : Long = { + def InitializeTime_=(time: Long): Long = { initializeTime = time InitializeTime } - def Unlocked : Boolean = unlocked + def Unlocked: Boolean = unlocked - def Unlocked_=(lock : Boolean) : Boolean = { + def Unlocked_=(lock: Boolean): Boolean = { unlocked = lock || unlocked //do not let re-lock Unlocked } - def Initialized : Boolean = initialized + def Initialized: Boolean = initialized - def Initialized_=(init : Boolean) : Boolean = { + def Initialized_=(init: Boolean): Boolean = { initialized = Installed.isDefined && init Active = Active && initialized //can not be active just yet Initialized } - def Active : Boolean = active + def Active: Boolean = active - def Active_=(state : Boolean) : Boolean = { + def Active_=(state: Boolean): Boolean = { active = Initialized && state Active } - def Implant : ImplantType.Value = Installed match { - case Some(idef) => - idef.Type - case None => - Active = false - Initialized = false - ImplantType.None - } + def Implant: ImplantType.Value = + Installed match { + case Some(idef) => + idef.Type + case None => + Active = false + Initialized = false + ImplantType.None + } - def Implant_=(anImplant : ImplantDefinition) : ImplantType.Value = { + def Implant_=(anImplant: ImplantDefinition): ImplantType.Value = { Implant_=(Some(anImplant)) } - def Implant_=(anImplant : Option[ImplantDefinition]) : ImplantType.Value = { - if(Unlocked) { + def Implant_=(anImplant: Option[ImplantDefinition]): ImplantType.Value = { + if (Unlocked) { anImplant match { case Some(_) => implant = anImplant @@ -81,20 +88,20 @@ class ImplantSlot { Implant } - def Installed : Option[ImplantDefinition] = implant + def Installed: Option[ImplantDefinition] = implant - def MaxTimer : Long = Implant match { - case ImplantType.None => - -1L - case _ => - Installed.get.InitializationDuration - } - - def ActivationCharge : Int = { - if(Active) { - Installed.get.ActivationStaminaCost + def MaxTimer: Long = + Implant match { + case ImplantType.None => + -1L + case _ => + Installed.get.InitializationDuration } - else { + + def ActivationCharge: Int = { + if (Active) { + Installed.get.ActivationStaminaCost + } else { 0 } } @@ -104,24 +111,23 @@ class ImplantSlot { * @param suit the exo-suit being worn * @return the amount of stamina (energy) that is consumed */ - def Charge(suit : ExoSuitType.Value) : Int = { - if(Active) { + def Charge(suit: ExoSuitType.Value): Int = { + if (Active) { val inst = Installed.get inst.StaminaCost - } - else { + } else { 0 } } - def Jammed() : Unit = { + def Jammed(): Unit = { Active = false Initialized = false } } object ImplantSlot { - def apply() : ImplantSlot = { + def apply(): ImplantSlot = { new ImplantSlot() } } diff --git a/common/src/main/scala/net/psforever/objects/Kit.scala b/common/src/main/scala/net/psforever/objects/Kit.scala index 98bfaa9e..0cb33cc1 100644 --- a/common/src/main/scala/net/psforever/objects/Kit.scala +++ b/common/src/main/scala/net/psforever/objects/Kit.scala @@ -8,12 +8,12 @@ import net.psforever.objects.equipment.Equipment * A one-time-use recovery item that can be applied by the player while held within their inventory. * @param kitDef the `ObjectDefinition` that constructs this item and maintains some of its immutable fields */ -class Kit(private val kitDef : KitDefinition) extends Equipment { - def Definition : KitDefinition = kitDef +class Kit(private val kitDef: KitDefinition) extends Equipment { + def Definition: KitDefinition = kitDef } object Kit { - def apply(kitDef : KitDefinition) : Kit = { + def apply(kitDef: KitDefinition): Kit = { new Kit(kitDef) } } diff --git a/common/src/main/scala/net/psforever/objects/LivePlayerList.scala b/common/src/main/scala/net/psforever/objects/LivePlayerList.scala index af1ab40e..0b4c35fd 100644 --- a/common/src/main/scala/net/psforever/objects/LivePlayerList.scala +++ b/common/src/main/scala/net/psforever/objects/LivePlayerList.scala @@ -8,14 +8,15 @@ import scala.collection.concurrent.{Map, TrieMap} * `LivePlayerList` is a singleton and this private class lacks exposure. */ private class LivePlayerList { - /** key - the session id; value - a `Player` object */ - private val sessionMap : Map[Long, Avatar] = new TrieMap[Long, Avatar] - def WorldPopulation(predicate : ((_, Avatar)) => Boolean) : List[Avatar] = { + /** key - the session id; value - a `Player` object */ + private val sessionMap: Map[Long, Avatar] = new TrieMap[Long, Avatar] + + def WorldPopulation(predicate: ((_, Avatar)) => Boolean): List[Avatar] = { sessionMap.filter(predicate).values.toList } - def Add(sessionId : Long, avatar : Avatar) : Boolean = { + def Add(sessionId: Long, avatar: Avatar): Boolean = { sessionMap.values.find(char => char.equals(avatar)) match { case None => sessionMap.putIfAbsent(sessionId, avatar).isEmpty @@ -24,11 +25,11 @@ private class LivePlayerList { } } - def Remove(sessionId : Long) : Option[Avatar] = { + def Remove(sessionId: Long): Option[Avatar] = { sessionMap.remove(sessionId) } - def Shutdown : List[Avatar] = { + def Shutdown: List[Avatar] = { val list = sessionMap.values.toList sessionMap.clear list @@ -48,8 +49,9 @@ private class LivePlayerList { *        `LivePlayerList.Remove(session)` */ object LivePlayerList { + /** As `LivePlayerList` is a singleton, an object of `LivePlayerList` is automatically instantiated. */ - private val Instance : LivePlayerList = new LivePlayerList + private val Instance: LivePlayerList = new LivePlayerList /** * Given some criteria, examine the mapping of user characters and find the ones that fulfill the requirements.
@@ -61,7 +63,7 @@ object LivePlayerList { * @param predicate the conditions for filtering the live `Player`s * @return a list of users's `Player`s that fit the criteria */ - def WorldPopulation(predicate : ((_, Avatar)) => Boolean) : List[Avatar] = Instance.WorldPopulation(predicate) + def WorldPopulation(predicate: ((_, Avatar)) => Boolean): List[Avatar] = Instance.WorldPopulation(predicate) /** * Create a mapped entry between the user's session and a user's character. @@ -70,7 +72,7 @@ object LivePlayerList { * @param avatar the character * @return `true`, if the session was association was made; `false`, otherwise */ - def Add(sessionId : Long, avatar : Avatar) : Boolean = Instance.Add(sessionId, avatar) + def Add(sessionId: Long, avatar: Avatar): Boolean = Instance.Add(sessionId, avatar) /** * Remove all entries related to the given session identifier from the mappings. @@ -78,11 +80,11 @@ object LivePlayerList { * @param sessionId the session * @return any character that was afffected by the mapping removal */ - def Remove(sessionId : Long) : Option[Avatar] = Instance.Remove(sessionId) + def Remove(sessionId: Long): Option[Avatar] = Instance.Remove(sessionId) /** * Hastily remove all mappings and ids. * @return an unsorted list of the characters that were still online */ - def Shutdown : List[Avatar] = Instance.Shutdown + def Shutdown: List[Avatar] = Instance.Shutdown } diff --git a/common/src/main/scala/net/psforever/objects/LocalProjectile.scala b/common/src/main/scala/net/psforever/objects/LocalProjectile.scala index 2481deb5..054be35a 100644 --- a/common/src/main/scala/net/psforever/objects/LocalProjectile.scala +++ b/common/src/main/scala/net/psforever/objects/LocalProjectile.scala @@ -30,7 +30,7 @@ object LocalProjectile { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `LocalProjectile` object */ - def Constructor(id : Int, context : ActorContext) : LocalProjectile = { + def Constructor(id: Int, context: ActorContext): LocalProjectile = { new LocalProjectile() } } diff --git a/common/src/main/scala/net/psforever/objects/LockerContainer.scala b/common/src/main/scala/net/psforever/objects/LockerContainer.scala index 02ab4471..1323f675 100644 --- a/common/src/main/scala/net/psforever/objects/LockerContainer.scala +++ b/common/src/main/scala/net/psforever/objects/LockerContainer.scala @@ -19,62 +19,60 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * The `Player` class refers to it as the "fifth slot" as its permanent slot number is encoded as `0x85`. * The inventory of this object is accessed using a game world `Locker` object (`mb_locker`). */ -class LockerContainer extends PlanetSideServerObject - with Container { - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - private val inventory = GridInventory(30, 20) +class LockerContainer extends PlanetSideServerObject with Container { + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + private val inventory = GridInventory(30, 20) - def Faction : PlanetSideEmpire.Value = faction + def Faction: PlanetSideEmpire.Value = faction - override def Faction_=(fact : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { + override def Faction_=(fact: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { faction = fact Faction } - def Inventory : GridInventory = inventory + def Inventory: GridInventory = inventory - def VisibleSlots : Set[Int] = Set.empty[Int] + def VisibleSlots: Set[Int] = Set.empty[Int] - def Definition : EquipmentDefinition = GlobalDefinitions.locker_container + def Definition: EquipmentDefinition = GlobalDefinitions.locker_container } object LockerContainer { - def apply() : LockerContainer = { + def apply(): LockerContainer = { new LockerContainer() } } -class LockerEquipment(locker : LockerContainer) extends Equipment - with Container { +class LockerEquipment(locker: LockerContainer) extends Equipment with Container { private val obj = locker - override def GUID : PlanetSideGUID = obj.GUID + override def GUID: PlanetSideGUID = obj.GUID - override def GUID_=(guid : PlanetSideGUID) : PlanetSideGUID = obj.GUID_=(guid) + override def GUID_=(guid: PlanetSideGUID): PlanetSideGUID = obj.GUID_=(guid) - override def HasGUID : Boolean = obj.HasGUID + override def HasGUID: Boolean = obj.HasGUID - override def Invalidate() : Unit = obj.Invalidate() + override def Invalidate(): Unit = obj.Invalidate() - override def Faction : PlanetSideEmpire.Value = obj.Faction + override def Faction: PlanetSideEmpire.Value = obj.Faction - def Inventory : GridInventory = obj.Inventory + def Inventory: GridInventory = obj.Inventory - def VisibleSlots : Set[Int] = Set.empty[Int] + def VisibleSlots: Set[Int] = Set.empty[Int] - def Definition : EquipmentDefinition = obj.Definition + def Definition: EquipmentDefinition = obj.Definition } -class LockerContainerControl(locker : LockerContainer, toChannel : String) extends Actor - with ContainableBehavior { +class LockerContainerControl(locker: LockerContainer, toChannel: String) extends Actor with ContainableBehavior { def ContainerObject = locker - def receive : Receive = containerBehavior - .orElse { - case _ => ; - } + def receive: Receive = + containerBehavior + .orElse { + case _ => ; + } - def MessageDeferredCallback(msg : Any) : Unit = { + def MessageDeferredCallback(msg: Any): Unit = { msg match { case Containable.MoveItem(_, item, _) => //momentarily put item back where it was originally @@ -91,13 +89,13 @@ class LockerContainerControl(locker : LockerContainer, toChannel : String) exten } } - def RemoveItemFromSlotCallback(item : Equipment, slot : Int) : Unit = { + def RemoveItemFromSlotCallback(item: Equipment, slot: Int): Unit = { val zone = locker.Zone zone.AvatarEvents ! AvatarServiceMessage(toChannel, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item.GUID)) } - def PutItemInSlotCallback(item : Equipment, slot : Int) : Unit = { - val zone = locker.Zone + def PutItemInSlotCallback(item: Equipment, slot: Int): Unit = { + val zone = locker.Zone val definition = item.Definition item.Faction = PlanetSideEmpire.NEUTRAL zone.AvatarEvents ! AvatarServiceMessage( @@ -114,8 +112,14 @@ class LockerContainerControl(locker : LockerContainer, toChannel : String) exten ) } - def SwapItemCallback(item : Equipment) : Unit = { + def SwapItemCallback(item: Equipment): Unit = { val zone = locker.Zone - zone.AvatarEvents ! AvatarServiceMessage(toChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, ObjectDetachMessage(locker.GUID, item.GUID, Vector3.Zero, 0f))) + zone.AvatarEvents ! AvatarServiceMessage( + toChannel, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + ObjectDetachMessage(locker.GUID, item.GUID, Vector3.Zero, 0f) + ) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/ObjectType.scala b/common/src/main/scala/net/psforever/objects/ObjectType.scala index b7df4a72..3dad44d4 100644 --- a/common/src/main/scala/net/psforever/objects/ObjectType.scala +++ b/common/src/main/scala/net/psforever/objects/ObjectType.scala @@ -4,93 +4,93 @@ package net.psforever.objects object ObjectType extends Enumeration { type Value = String - val AmbientSoundSource = "ambient_sound_source" - val Ammunition = "ammunition" - val AnimatedBarrier = "animated_barrier" - val Applicator = "applicator" - val Armor = "armor" - val ArmorSiphon = "armor_siphon" - val AwardStatistic = "award_statistic" - val Avatar = "avatar" - val AvatarBot = "avatar_bot" - val Ball = "ball" - val Bank = "bank" - val Barrier = "barrier" - val BfrTerminal = "bfr_terminal" - val Billboard = "billboard" - val Boomer = "boomer" - val BoomerTrigger = "boomer_trigger" - val Building = "building" - val CaptureFlag = "capture_flag" - val CaptureFlagSocket = "capture_flag_socket" - val CaptureTerminal = "capture_terminal" - val CertTerminal = "cert_terminal" - val ChainLashDamager = "chain_lash_damager" - val Dispenser = "dispenser" - val Door = "door" - val EmpBlast = "emp_blast" - val FrameVehicle = "framevehicle" - val Flag = "flag" - val FlightVehicle = "flightvehicle" - val ForceDome = "forcedome" - val ForceDomeGenerator = "forcedomegenerator" - val Game = "game" - val Generic = "generic" - val GenericTeleportion = "generic_teleportation" - val GeneratorTerminal = "generator_terminal" - val GsGenbase = "GS_genbase" - val HandGrenade = "hand_grenade" - val HeMine = "he_mine" - val HeavyWeapon = "heavy_weapon" - val HoverVehicle = "hovervehicle" - val Implant = "implant" + val AmbientSoundSource = "ambient_sound_source" + val Ammunition = "ammunition" + val AnimatedBarrier = "animated_barrier" + val Applicator = "applicator" + val Armor = "armor" + val ArmorSiphon = "armor_siphon" + val AwardStatistic = "award_statistic" + val Avatar = "avatar" + val AvatarBot = "avatar_bot" + val Ball = "ball" + val Bank = "bank" + val Barrier = "barrier" + val BfrTerminal = "bfr_terminal" + val Billboard = "billboard" + val Boomer = "boomer" + val BoomerTrigger = "boomer_trigger" + val Building = "building" + val CaptureFlag = "capture_flag" + val CaptureFlagSocket = "capture_flag_socket" + val CaptureTerminal = "capture_terminal" + val CertTerminal = "cert_terminal" + val ChainLashDamager = "chain_lash_damager" + val Dispenser = "dispenser" + val Door = "door" + val EmpBlast = "emp_blast" + val FrameVehicle = "framevehicle" + val Flag = "flag" + val FlightVehicle = "flightvehicle" + val ForceDome = "forcedome" + val ForceDomeGenerator = "forcedomegenerator" + val Game = "game" + val Generic = "generic" + val GenericTeleportion = "generic_teleportation" + val GeneratorTerminal = "generator_terminal" + val GsGenbase = "GS_genbase" + val HandGrenade = "hand_grenade" + val HeMine = "he_mine" + val HeavyWeapon = "heavy_weapon" + val HoverVehicle = "hovervehicle" + val Implant = "implant" val ImplantInterfaceTerminal = "implant_terminal_interface" - val Lazer = "lazer" - val Locker = "locker" - val LockerContainer = "locker_container" - val LockExternal = "lock_external" - val LockSmall = "lock_small" - val MainTerminal = "main_terminal" - val Map = "map" - val MedicalTerminal = "medical_terminal" - val Medkit = "medkit" - val Monolith = "monolith" - val MonolithUnit = "monolith_unit" - val MotionAlarmSensorDest = "motion_alarm_sensor_dest" - val NanoDispenser = "nano_dispenser" - val NtuSipon = "ntu_siphon" - val OrbitalShuttlePad = "orbital_shuttle_pad" - val OrbitalStrike = "orbital_strike" - val OrderTerminal = "order_terminal" - val PainTerminal = "pain_terminal" - val Projectile = "projectile" - val RadiationCloud = "radiation_cloud" - val RearmTerminal = "rearm_terminal" - val RechargeTerminal = "recharge_terminal" - val Rek = "rek" - val RepairTerminal = "repair_terminal" - val ResourceSilo = "resource_silo" - val RespawnTube = "respawn_tube" - val SensorShield = "sensor_shield" - val ShieldGenerator = "shield_generator" - val Shifter = "shifter" - val SkyDome = "skydome" - val SpawnPlayer = "spawn_player" - val SpawnPoint = "spawn_point" - val SpawnTerminal = "spawn_terminal" - val TeleportPad = "teleport_pad" - val Terminal = "terminal" - val TradeContainer = "trade_container" - val UplinkDevice = "uplink_device" - val VanuCradleClass = "vanu_cradle_class" - val VanuModuleClass = "vanu_module_class" - val VanuModuleFactory = "vanu_module_factory" - val VanuReceptacleClass = "vanu_receptacle_class" - val Vehicle = "vehicle" - val VehicleCreationPad = "vehicle_creation_pad" - val VehicleLandingPad = "vehicle_landing_pad" - val VehicleTerminal = "vehicle_terminal" - val Warpgate = "waprgate" - val WarpZone = "warp_zone" - val Weapon = "weapon" + val Lazer = "lazer" + val Locker = "locker" + val LockerContainer = "locker_container" + val LockExternal = "lock_external" + val LockSmall = "lock_small" + val MainTerminal = "main_terminal" + val Map = "map" + val MedicalTerminal = "medical_terminal" + val Medkit = "medkit" + val Monolith = "monolith" + val MonolithUnit = "monolith_unit" + val MotionAlarmSensorDest = "motion_alarm_sensor_dest" + val NanoDispenser = "nano_dispenser" + val NtuSipon = "ntu_siphon" + val OrbitalShuttlePad = "orbital_shuttle_pad" + val OrbitalStrike = "orbital_strike" + val OrderTerminal = "order_terminal" + val PainTerminal = "pain_terminal" + val Projectile = "projectile" + val RadiationCloud = "radiation_cloud" + val RearmTerminal = "rearm_terminal" + val RechargeTerminal = "recharge_terminal" + val Rek = "rek" + val RepairTerminal = "repair_terminal" + val ResourceSilo = "resource_silo" + val RespawnTube = "respawn_tube" + val SensorShield = "sensor_shield" + val ShieldGenerator = "shield_generator" + val Shifter = "shifter" + val SkyDome = "skydome" + val SpawnPlayer = "spawn_player" + val SpawnPoint = "spawn_point" + val SpawnTerminal = "spawn_terminal" + val TeleportPad = "teleport_pad" + val Terminal = "terminal" + val TradeContainer = "trade_container" + val UplinkDevice = "uplink_device" + val VanuCradleClass = "vanu_cradle_class" + val VanuModuleClass = "vanu_module_class" + val VanuModuleFactory = "vanu_module_factory" + val VanuReceptacleClass = "vanu_receptacle_class" + val Vehicle = "vehicle" + val VehicleCreationPad = "vehicle_creation_pad" + val VehicleLandingPad = "vehicle_landing_pad" + val VehicleTerminal = "vehicle_terminal" + val Warpgate = "waprgate" + val WarpZone = "warp_zone" + val Weapon = "weapon" } diff --git a/common/src/main/scala/net/psforever/objects/OffhandEquipmentSlot.scala b/common/src/main/scala/net/psforever/objects/OffhandEquipmentSlot.scala index e6045467..5ceaf5b5 100644 --- a/common/src/main/scala/net/psforever/objects/OffhandEquipmentSlot.scala +++ b/common/src/main/scala/net/psforever/objects/OffhandEquipmentSlot.scala @@ -8,7 +8,7 @@ import net.psforever.objects.equipment.{EquipmentSize, EquipmentSlot} * Unlike conventional `EquipmentSlot` space, this size of allowable `Equipment` is fixed. * @param size the permanent size of the `Equipment` allowed in this slot */ -class OffhandEquipmentSlot(size : EquipmentSize.Value) extends EquipmentSlot { +class OffhandEquipmentSlot(size: EquipmentSize.Value) extends EquipmentSlot { super.Size_=(size) /** @@ -16,10 +16,11 @@ class OffhandEquipmentSlot(size : EquipmentSize.Value) extends EquipmentSlot { * @param assignSize the changed in capacity for this slot * @return the capacity for this slot */ - override def Size_=(assignSize : EquipmentSize.Value) : EquipmentSize.Value = Size + override def Size_=(assignSize: EquipmentSize.Value): EquipmentSize.Value = Size } object OffhandEquipmentSlot { + /** * An `EquipmentSlot` that can not be manipulated because its size is `Blocked` permanently. */ diff --git a/common/src/main/scala/net/psforever/objects/OwnableByPlayer.scala b/common/src/main/scala/net/psforever/objects/OwnableByPlayer.scala index d63e08ab..fcbf4f1c 100644 --- a/common/src/main/scala/net/psforever/objects/OwnableByPlayer.scala +++ b/common/src/main/scala/net/psforever/objects/OwnableByPlayer.scala @@ -4,16 +4,16 @@ package net.psforever.objects import net.psforever.types.PlanetSideGUID trait OwnableByPlayer { - private var owner : Option[PlanetSideGUID] = None - private var ownerName : Option[String] = None + private var owner: Option[PlanetSideGUID] = None + private var ownerName: Option[String] = None - def Owner : Option[PlanetSideGUID] = owner + def Owner: Option[PlanetSideGUID] = owner - def Owner_=(owner : PlanetSideGUID) : Option[PlanetSideGUID] = Owner_=(Some(owner)) + def Owner_=(owner: PlanetSideGUID): Option[PlanetSideGUID] = Owner_=(Some(owner)) - def Owner_=(owner : Player) : Option[PlanetSideGUID] = Owner_=(Some(owner.GUID)) + def Owner_=(owner: Player): Option[PlanetSideGUID] = Owner_=(Some(owner.GUID)) - def Owner_=(owner : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def Owner_=(owner: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { owner match { case Some(_) => this.owner = owner @@ -23,13 +23,13 @@ trait OwnableByPlayer { Owner } - def OwnerName : Option[String] = ownerName + def OwnerName: Option[String] = ownerName - def OwnerName_=(owner : String) : Option[String] = OwnerName_=(Some(owner)) + def OwnerName_=(owner: String): Option[String] = OwnerName_=(Some(owner)) - def OwnerName_=(owner : Player) : Option[String] = OwnerName_=(Some(owner.Name)) + def OwnerName_=(owner: Player): Option[String] = OwnerName_=(Some(owner.Name)) - def OwnerName_=(owner : Option[String]) : Option[String] = { + def OwnerName_=(owner: Option[String]): Option[String] = { owner match { case Some(_) => ownerName = owner @@ -44,14 +44,14 @@ trait OwnableByPlayer { * @param player na * @return na */ - def AssignOwnership(player : Player) : OwnableByPlayer = AssignOwnership(Some(player)) + def AssignOwnership(player: Player): OwnableByPlayer = AssignOwnership(Some(player)) /** * na * @param playerOpt na * @return na */ - def AssignOwnership(playerOpt : Option[Player]) : OwnableByPlayer = { + def AssignOwnership(playerOpt: Option[Player]): OwnableByPlayer = { playerOpt match { case Some(player) => Owner = player diff --git a/common/src/main/scala/net/psforever/objects/PlanetSideGameObject.scala b/common/src/main/scala/net/psforever/objects/PlanetSideGameObject.scala index b4943ef8..9e67d180 100644 --- a/common/src/main/scala/net/psforever/objects/PlanetSideGameObject.scala +++ b/common/src/main/scala/net/psforever/objects/PlanetSideGameObject.scala @@ -9,47 +9,48 @@ import net.psforever.types.Vector3 * A basic class that indicates an entity that exists somewhere in the world and has a globally unique identifier. */ abstract class PlanetSideGameObject extends IdentifiableEntity with WorldEntity { - private var entity : WorldEntity = new SimpleWorldEntity() - private var destroyed : Boolean = false + private var entity: WorldEntity = new SimpleWorldEntity() + private var destroyed: Boolean = false - def Entity : WorldEntity = entity + def Entity: WorldEntity = entity - def Entity_=(newEntity : WorldEntity) : Unit = { + def Entity_=(newEntity: WorldEntity): Unit = { entity = newEntity } - def Position : Vector3 = Entity.Position + def Position: Vector3 = Entity.Position - def Position_=(vec : Vector3) : Vector3 = { + def Position_=(vec: Vector3): Vector3 = { Entity.Position = vec } - def Orientation : Vector3 = Entity.Orientation + def Orientation: Vector3 = Entity.Orientation - def Orientation_=(vec : Vector3) : Vector3 = { + def Orientation_=(vec: Vector3): Vector3 = { Entity.Orientation = vec } - def Velocity : Option[Vector3] = Entity.Velocity + def Velocity: Option[Vector3] = Entity.Velocity - def Velocity_=(vec : Option[Vector3]) : Option[Vector3] = { + def Velocity_=(vec: Option[Vector3]): Option[Vector3] = { Entity.Velocity = vec } - def Destroyed : Boolean = destroyed + def Destroyed: Boolean = destroyed - def Destroyed_=(state : Boolean) : Boolean = { + def Destroyed_=(state: Boolean): Boolean = { destroyed = state Destroyed } - def Definition : ObjectDefinition + def Definition: ObjectDefinition } object PlanetSideGameObject { - def toString(obj : PlanetSideGameObject) : String = { - val guid : String = if(obj.HasGUID) { obj.GUID.toString } else { "NOGUID" } + def toString(obj: PlanetSideGameObject): String = { + val guid: String = if (obj.HasGUID) { obj.GUID.toString } + else { "NOGUID" } val P = obj.Position - s"[$guid](x,y,z=${P.x%.3f},${P.y%.3f},${P.z%.3f})" + s"[$guid](x,y,z=${P.x % .3f},${P.y % .3f},${P.z % .3f})" } } diff --git a/common/src/main/scala/net/psforever/objects/Player.scala b/common/src/main/scala/net/psforever/objects/Player.scala index b29b1925..453126ec 100644 --- a/common/src/main/scala/net/psforever/objects/Player.scala +++ b/common/src/main/scala/net/psforever/objects/Player.scala @@ -2,7 +2,12 @@ package net.psforever.objects import net.psforever.objects.avatar.LoadoutManager -import net.psforever.objects.definition.{AvatarDefinition, ExoSuitDefinition, ImplantDefinition, SpecialExoSuitDefinition} +import net.psforever.objects.definition.{ + AvatarDefinition, + ExoSuitDefinition, + ImplantDefinition, + SpecialExoSuitDefinition +} import net.psforever.objects.equipment.{Equipment, EquipmentSize, EquipmentSlot, JammableUnit} import net.psforever.objects.inventory.{Container, GridInventory, InventoryItem} import net.psforever.objects.serverobject.PlanetSideServerObject @@ -16,76 +21,79 @@ import net.psforever.types.{PlanetSideGUID, _} import scala.annotation.tailrec import scala.util.{Success, Try} -class Player(private val core : Avatar) extends PlanetSideServerObject - with FactionAffinity - with Vitality - with ResistanceProfile - with Container - with JammableUnit - with ZoneAware { - Health = 0 //player health is artificially managed as a part of their lifecycle; start entity as dead +class Player(private val core: Avatar) + extends PlanetSideServerObject + with FactionAffinity + with Vitality + with ResistanceProfile + with Container + with JammableUnit + with ZoneAware { + Health = 0 //player health is artificially managed as a part of their lifecycle; start entity as dead Destroyed = true //see isAlive - private var backpack : Boolean = false - private var stamina : Int = 0 - private var armor : Int = 0 + private var backpack: Boolean = false + private var stamina: Int = 0 + private var armor: Int = 0 - private var capacitor : Float = 0f - private var capacitorState : CapacitorStateType.Value = CapacitorStateType.Idle - private var capacitorLastUsedMillis : Long = 0 - private var capacitorLastChargedMillis : Long = 0 + private var capacitor: Float = 0f + private var capacitorState: CapacitorStateType.Value = CapacitorStateType.Idle + private var capacitorLastUsedMillis: Long = 0 + private var capacitorLastChargedMillis: Long = 0 - private var maxStamina : Int = 100 //does anything affect this? + private var maxStamina: Int = 100 //does anything affect this? - private var exosuit : ExoSuitDefinition = GlobalDefinitions.Standard - private val freeHand : EquipmentSlot = new OffhandEquipmentSlot(EquipmentSize.Inventory) - private val holsters : Array[EquipmentSlot] = Array.fill[EquipmentSlot](5)(new EquipmentSlot) - private val inventory : GridInventory = GridInventory() - private var drawnSlot : Int = Player.HandsDownSlot - private var lastDrawnSlot : Int = Player.HandsDownSlot - private var backpackAccess : Option[PlanetSideGUID] = None + private var exosuit: ExoSuitDefinition = GlobalDefinitions.Standard + private val freeHand: EquipmentSlot = new OffhandEquipmentSlot(EquipmentSize.Inventory) + private val holsters: Array[EquipmentSlot] = Array.fill[EquipmentSlot](5)(new EquipmentSlot) + private val inventory: GridInventory = GridInventory() + private var drawnSlot: Int = Player.HandsDownSlot + private var lastDrawnSlot: Int = Player.HandsDownSlot + private var backpackAccess: Option[PlanetSideGUID] = None - private var facingYawUpper : Float = 0f - private var crouching : Boolean = false - private var jumping : Boolean = false - private var cloaked : Boolean = false - private var fatigued : Boolean = false // If stamina drops to 0, player is fatigued until regenerating at least 20 stamina - private var afk : Boolean = false + private var facingYawUpper: Float = 0f + private var crouching: Boolean = false + private var jumping: Boolean = false + private var cloaked: Boolean = false + private var fatigued: Boolean = + false // If stamina drops to 0, player is fatigued until regenerating at least 20 stamina + private var afk: Boolean = false - private var vehicleSeated : Option[PlanetSideGUID] = None + private var vehicleSeated: Option[PlanetSideGUID] = None Continent = "home2" //the zone id - var spectator : Boolean = false - var silenced : Boolean = false - var death_by : Int = 0 - var lastSeenStreamMessage : Array[Long] = Array.fill[Long](65535)(0L) - var lastShotSeq_time : Int = -1 + var spectator: Boolean = false + var silenced: Boolean = false + var death_by: Int = 0 + var lastSeenStreamMessage: Array[Long] = Array.fill[Long](65535)(0L) + var lastShotSeq_time: Int = -1 + /** From PlanetsideAttributeMessage */ - var PlanetsideAttribute : Array[Long] = Array.ofDim(120) - var skipStaminaRegenForTurns : Int = 0 + var PlanetsideAttribute: Array[Long] = Array.ofDim(120) + var skipStaminaRegenForTurns: Int = 0 Player.SuitSetup(this, exosuit) - def CharId : Long = core.CharId + def CharId: Long = core.CharId - def Name : String = core.name + def Name: String = core.name - def Faction : PlanetSideEmpire.Value = core.faction + def Faction: PlanetSideEmpire.Value = core.faction - def Sex : CharacterGender.Value = core.sex + def Sex: CharacterGender.Value = core.sex - def Head : Int = core.head + def Head: Int = core.head - def Voice : CharacterVoice.Value = core.voice + def Voice: CharacterVoice.Value = core.voice - def LFS : Boolean = core.LFS + def LFS: Boolean = core.LFS - def isAlive : Boolean = !Destroyed + def isAlive: Boolean = !Destroyed - def isBackpack : Boolean = backpack + def isBackpack: Boolean = backpack - def Spawn : Boolean = { - if(!isAlive && !isBackpack) { + def Spawn: Boolean = { + if (!isAlive && !isBackpack) { Destroyed = false Health = Definition.DefaultHealth Stamina = MaxStamina @@ -96,66 +104,64 @@ class Player(private val core : Avatar) extends PlanetSideServerObject isAlive } - def Die : Boolean = { + def Die: Boolean = { Destroyed = true Health = 0 Stamina = 0 false } - def Revive : Boolean = { + def Revive: Boolean = { Destroyed = false Health = Definition.DefaultHealth true } - def Release : Boolean = { - if(!isAlive) { + def Release: Boolean = { + if (!isAlive) { backpack = true true - } - else { + } else { false } } - def Stamina : Int = stamina + def Stamina: Int = stamina - def Stamina_=(assignStamina : Int) : Int = { - stamina = if(isAlive) { math.min(math.max(0, assignStamina), MaxStamina) } else { 0 } + def Stamina_=(assignStamina: Int): Int = { + stamina = if (isAlive) { math.min(math.max(0, assignStamina), MaxStamina) } + else { 0 } Stamina } - def MaxStamina : Int = maxStamina + def MaxStamina: Int = maxStamina - def MaxStamina_=(max : Int) : Int = { + def MaxStamina_=(max: Int): Int = { maxStamina = math.min(math.max(0, max), 65535) MaxStamina } - def Armor : Int = armor + def Armor: Int = armor - def Armor_=(assignArmor : Int) : Int = { + def Armor_=(assignArmor: Int): Int = { armor = math.min(math.max(0, assignArmor), MaxArmor) Armor } - def MaxArmor : Int = exosuit.MaxArmor + def MaxArmor: Int = exosuit.MaxArmor - def Capacitor : Float = capacitor + def Capacitor: Float = capacitor - def Capacitor_=(value : Float) : Float = { + def Capacitor_=(value: Float): Float = { val newValue = math.min(math.max(0, value), ExoSuitDef.MaxCapacitor.toFloat) - if(newValue < capacitor) { + if (newValue < capacitor) { capacitorLastUsedMillis = System.currentTimeMillis() capacitorLastChargedMillis = 0 - } - else if(newValue > capacitor && newValue < ExoSuitDef.MaxCapacitor) { + } else if (newValue > capacitor && newValue < ExoSuitDef.MaxCapacitor) { capacitorLastChargedMillis = System.currentTimeMillis() capacitorLastUsedMillis = 0 - } - else if(newValue > capacitor && newValue == ExoSuitDef.MaxCapacitor) { + } else if (newValue > capacitor && newValue == ExoSuitDef.MaxCapacitor) { capacitorLastChargedMillis = 0 capacitorLastUsedMillis = 0 capacitorState = CapacitorStateType.Idle @@ -165,55 +171,51 @@ class Player(private val core : Avatar) extends PlanetSideServerObject capacitor } - def CapacitorState : CapacitorStateType.Value = capacitorState - def CapacitorState_=(value : CapacitorStateType.Value) : CapacitorStateType.Value = { + def CapacitorState: CapacitorStateType.Value = capacitorState + def CapacitorState_=(value: CapacitorStateType.Value): CapacitorStateType.Value = { value match { - case CapacitorStateType.Charging => capacitorLastChargedMillis = System.currentTimeMillis() + case CapacitorStateType.Charging => capacitorLastChargedMillis = System.currentTimeMillis() case CapacitorStateType.Discharging => capacitorLastUsedMillis = System.currentTimeMillis() - case _ => ; + case _ => ; } capacitorState = value capacitorState } - def CapacitorLastUsedMillis = capacitorLastUsedMillis + def CapacitorLastUsedMillis = capacitorLastUsedMillis def CapacitorLastChargedMillis = capacitorLastChargedMillis - def VisibleSlots : Set[Int] = if(exosuit.SuitType == ExoSuitType.MAX) { - Set(0) - } - else { - (0 to 4).filterNot(index => holsters(index).Size == EquipmentSize.Blocked).toSet - } + def VisibleSlots: Set[Int] = + if (exosuit.SuitType == ExoSuitType.MAX) { + Set(0) + } else { + (0 to 4).filterNot(index => holsters(index).Size == EquipmentSize.Blocked).toSet + } - override def Slot(slot : Int) : EquipmentSlot = { - if(inventory.Offset <= slot && slot <= inventory.LastIndex) { + override def Slot(slot: Int): EquipmentSlot = { + if (inventory.Offset <= slot && slot <= inventory.LastIndex) { inventory.Slot(slot) - } - else if(slot > -1 && slot < 5) { + } else if (slot > -1 && slot < 5) { holsters(slot) - } - else if(slot == 5) { + } else if (slot == 5) { core.FifthSlot - } - else if(slot == Player.FreeHandSlot) { + } else if (slot == Player.FreeHandSlot) { freeHand - } - else { + } else { OffhandEquipmentSlot.BlockedSlot } } - def Holsters() : Array[EquipmentSlot] = holsters + def Holsters(): Array[EquipmentSlot] = holsters - def Inventory : GridInventory = inventory + def Inventory: GridInventory = inventory - def Locker : LockerContainer = core.Locker + def Locker: LockerContainer = core.Locker - def FifthSlot : EquipmentSlot = core.FifthSlot + def FifthSlot: EquipmentSlot = core.FifthSlot - override def Fit(obj : Equipment) : Option[Int] = { + override def Fit(obj: Equipment): Option[Int] = { recursiveHolsterFit(holsters.iterator, obj.Size) match { case Some(index) => Some(index) @@ -222,21 +224,24 @@ class Player(private val core : Avatar) extends PlanetSideServerObject case Some(index) => Some(index) case None => - if(freeHand.Equipment.isDefined) { None } else { Some(Player.FreeHandSlot) } + if (freeHand.Equipment.isDefined) { None } + else { Some(Player.FreeHandSlot) } } } } - @tailrec private def recursiveHolsterFit(iter : Iterator[EquipmentSlot], objSize : EquipmentSize.Value, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursiveHolsterFit( + iter: Iterator[EquipmentSlot], + objSize: EquipmentSize.Value, + index: Int = 0 + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val slot = iter.next - if(slot.Equipment.isEmpty && slot.Size.equals(objSize)) { + if (slot.Equipment.isEmpty && slot.Size.equals(objSize)) { Some(index) - } - else { + } else { recursiveHolsterFit(iter, objSize, index + 1) } } @@ -244,73 +249,71 @@ class Player(private val core : Avatar) extends PlanetSideServerObject def FreeHand = freeHand - def FreeHand_=(item : Option[Equipment]) : Option[Equipment] = { - if(freeHand.Equipment.isEmpty || item.isEmpty) { + def FreeHand_=(item: Option[Equipment]): Option[Equipment] = { + if (freeHand.Equipment.isEmpty || item.isEmpty) { freeHand.Equipment = item } FreeHand.Equipment } - override def Find(guid : PlanetSideGUID) : Option[Int] = { + override def Find(guid: PlanetSideGUID): Option[Int] = { findInHolsters(holsters.iterator, guid) .orElse(inventory.Find(guid)) match { case Some(index) => Some(index) case None => - if(freeHand.Equipment.isDefined && freeHand.Equipment.get.GUID == guid) { + if (freeHand.Equipment.isDefined && freeHand.Equipment.get.GUID == guid) { Some(Player.FreeHandSlot) - } - else { + } else { None } } } - @tailrec private def findInHolsters(iter : Iterator[EquipmentSlot], guid : PlanetSideGUID, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def findInHolsters( + iter: Iterator[EquipmentSlot], + guid: PlanetSideGUID, + index: Int = 0 + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val slot = iter.next - if(slot.Equipment.isDefined && slot.Equipment.get.GUID == guid) { + if (slot.Equipment.isDefined && slot.Equipment.get.GUID == guid) { Some(index) - } - else { + } else { findInHolsters(iter, guid, index + 1) } } } - override def Collisions(dest : Int, width : Int, height : Int) : Try[List[InventoryItem]] = { - if(-1 < dest && dest < 5) { + override def Collisions(dest: Int, width: Int, height: Int): Try[List[InventoryItem]] = { + if (-1 < dest && dest < 5) { holsters(dest).Equipment match { case Some(item) => Success(List(InventoryItem(item, dest))) case None => Success(List()) } - } - else if(dest == Player.FreeHandSlot) { + } else if (dest == Player.FreeHandSlot) { freeHand.Equipment match { case Some(item) => Success(List(InventoryItem(item, dest))) case None => Success(List()) } - } - else { + } else { super.Collisions(dest, width, height) } } - def DrawnSlot : Int = drawnSlot + def DrawnSlot: Int = drawnSlot - def DrawnSlot_=(slot : Int) : Int = { - if(slot != drawnSlot) { - if(slot == Player.HandsDownSlot) { + def DrawnSlot_=(slot: Int): Int = { + if (slot != drawnSlot) { + if (slot == Player.HandsDownSlot) { drawnSlot = slot - } - else if(VisibleSlots.contains(slot) && holsters(slot).Equipment.isDefined) { + } else if (VisibleSlots.contains(slot) && holsters(slot).Equipment.isDefined) { drawnSlot = slot lastDrawnSlot = slot } @@ -318,12 +321,12 @@ class Player(private val core : Avatar) extends PlanetSideServerObject DrawnSlot } - def LastDrawnSlot : Int = lastDrawnSlot + def LastDrawnSlot: Int = lastDrawnSlot - def ExoSuit : ExoSuitType.Value = exosuit.SuitType - def ExoSuitDef : ExoSuitDefinition = exosuit + def ExoSuit: ExoSuitType.Value = exosuit.SuitType + def ExoSuitDef: ExoSuitDefinition = exosuit - def ExoSuit_=(suit : ExoSuitType.Value) : Unit = { + def ExoSuit_=(suit: ExoSuitType.Value): Unit = { val eSuit = ExoSuitDefinition.Select(suit, Faction) exosuit = eSuit Player.SuitSetup(this, eSuit) @@ -340,15 +343,15 @@ class Player(private val core : Avatar) extends PlanetSideServerObject def RadiationShielding = exosuit.RadiationShielding - def EquipmentLoadouts : LoadoutManager = core.EquipmentLoadouts + def EquipmentLoadouts: LoadoutManager = core.EquipmentLoadouts - def SquadLoadouts : LoadoutManager = core.SquadLoadouts + def SquadLoadouts: LoadoutManager = core.SquadLoadouts - def BEP : Long = core.BEP + def BEP: Long = core.BEP - def CEP : Long = core.CEP + def CEP: Long = core.CEP - def Certifications : Set[CertificationType.Value] = core.Certifications.toSet + def Certifications: Set[CertificationType.Value] = core.Certifications.toSet /** * What kind of implant is installed into the given slot number? @@ -356,71 +359,71 @@ class Player(private val core : Avatar) extends PlanetSideServerObject * @param slot the slot number * @return the tye of implant */ - def Implant(slot : Int) : ImplantType.Value = core.Implant(slot) + def Implant(slot: Int): ImplantType.Value = core.Implant(slot) - def ImplantSlot(slot: Int) : ImplantSlot = core.Implants(slot) + def ImplantSlot(slot: Int): ImplantSlot = core.Implants(slot) /** * A read-only `Array` of tuples representing important information about all unlocked implant slots. * @return a maximum of three implant types, initialization times, and active flags */ - def Implants : Array[(ImplantType.Value, Long, Boolean)] = { - core.Implants.takeWhile(_.Unlocked).map( implant => { (implant.Implant, implant.MaxTimer, implant.Active) }) + def Implants: Array[(ImplantType.Value, Long, Boolean)] = { + core.Implants.takeWhile(_.Unlocked).map(implant => { (implant.Implant, implant.MaxTimer, implant.Active) }) } - def InstallImplant(implant : ImplantDefinition) : Option[Int] = core.InstallImplant(implant) + def InstallImplant(implant: ImplantDefinition): Option[Int] = core.InstallImplant(implant) - def UninstallImplant(implant : ImplantType.Value) : Option[Int] = core.UninstallImplant(implant) + def UninstallImplant(implant: ImplantType.Value): Option[Int] = core.UninstallImplant(implant) - def ResetAllImplants() : Unit = core.ResetAllImplants() + def ResetAllImplants(): Unit = core.ResetAllImplants() - def FacingYawUpper : Float = facingYawUpper + def FacingYawUpper: Float = facingYawUpper - def FacingYawUpper_=(facing : Float) : Float = { + def FacingYawUpper_=(facing: Float): Float = { facingYawUpper = facing FacingYawUpper } - def Crouching : Boolean = crouching + def Crouching: Boolean = crouching - def Crouching_=(crouched : Boolean) : Boolean = { + def Crouching_=(crouched: Boolean): Boolean = { crouching = crouched Crouching } - def Jumping : Boolean = jumping + def Jumping: Boolean = jumping - def Jumping_=(jumped : Boolean) : Boolean = { + def Jumping_=(jumped: Boolean): Boolean = { jumping = jumped Jumping } - def Cloaked : Boolean = cloaked + def Cloaked: Boolean = cloaked - def Cloaked_=(isCloaked : Boolean) : Boolean = { + def Cloaked_=(isCloaked: Boolean): Boolean = { cloaked = isCloaked Cloaked } - def Fatigued : Boolean = fatigued + def Fatigued: Boolean = fatigued - def Fatigued_=(isFatigued : Boolean) : Boolean = { + def Fatigued_=(isFatigued: Boolean): Boolean = { fatigued = isFatigued Fatigued } - def AwayFromKeyboard : Boolean = afk + def AwayFromKeyboard: Boolean = afk - def AwayFromKeyboard_=(away : Boolean) : Boolean = { + def AwayFromKeyboard_=(away: Boolean): Boolean = { afk = away AwayFromKeyboard } - def PersonalStyleFeatures : Option[Cosmetics] = core.PersonalStyleFeatures + def PersonalStyleFeatures: Option[Cosmetics] = core.PersonalStyleFeatures - def AddToPersonalStyle(value : PersonalStyle.Value) : (Option[Cosmetics], Option[Cosmetics]) = { + def AddToPersonalStyle(value: PersonalStyle.Value): (Option[Cosmetics], Option[Cosmetics]) = { val original = core.PersonalStyleFeatures - if(DetailedCharacterData.isBR24(core.BEP)) { + if (DetailedCharacterData.isBR24(core.BEP)) { core.PersonalStyleFeatures = original match { case Some(cosmetic) => cosmetic + value @@ -428,51 +431,47 @@ class Player(private val core : Avatar) extends PlanetSideServerObject Cosmetics(value) } (original, core.PersonalStyleFeatures) - } - else { + } else { (None, None) } } - def RemoveFromPersonalStyle(value : PersonalStyle.Value) : (Option[Cosmetics], Option[Cosmetics]) = { + def RemoveFromPersonalStyle(value: PersonalStyle.Value): (Option[Cosmetics], Option[Cosmetics]) = { val original = core.PersonalStyleFeatures - original match { - case Some(cosmetics) => - (original, core.PersonalStyleFeatures = cosmetics - value) - case None => - (None, None) - } + original match { + case Some(cosmetics) => + (original, core.PersonalStyleFeatures = cosmetics - value) + case None => + (None, None) + } } - private def BasicFeatureToggle(feature : PersonalStyle.Value) : (Option[Cosmetics], Option[Cosmetics]) = core.PersonalStyleFeatures match { - case Some(c : Cosmetics) => - if(c.Styles.contains(feature)) { - RemoveFromPersonalStyle(feature) - } - else { - AddToPersonalStyle(feature) - } - case None => - AddToPersonalStyle(feature) - } - - def ToggleHelmet : (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.NoHelmet) - - def ToggleShades : (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.Sunglasses) - - def ToggleEarpiece : (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.Earpiece) - - def ToggleHat : (Option[Cosmetics], Option[Cosmetics]) = { + private def BasicFeatureToggle(feature: PersonalStyle.Value): (Option[Cosmetics], Option[Cosmetics]) = core.PersonalStyleFeatures match { - case Some(c : Cosmetics) => - if(c.Styles.contains(PersonalStyle.BrimmedCap)) { - (RemoveFromPersonalStyle(PersonalStyle.BrimmedCap)._1, - AddToPersonalStyle(PersonalStyle.Beret)._2) + case Some(c: Cosmetics) => + if (c.Styles.contains(feature)) { + RemoveFromPersonalStyle(feature) + } else { + AddToPersonalStyle(feature) } - else if(c.Styles.contains(PersonalStyle.Beret)) { + case None => + AddToPersonalStyle(feature) + } + + def ToggleHelmet: (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.NoHelmet) + + def ToggleShades: (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.Sunglasses) + + def ToggleEarpiece: (Option[Cosmetics], Option[Cosmetics]) = BasicFeatureToggle(PersonalStyle.Earpiece) + + def ToggleHat: (Option[Cosmetics], Option[Cosmetics]) = { + core.PersonalStyleFeatures match { + case Some(c: Cosmetics) => + if (c.Styles.contains(PersonalStyle.BrimmedCap)) { + (RemoveFromPersonalStyle(PersonalStyle.BrimmedCap)._1, AddToPersonalStyle(PersonalStyle.Beret)._2) + } else if (c.Styles.contains(PersonalStyle.Beret)) { RemoveFromPersonalStyle(PersonalStyle.Beret) - } - else { + } else { AddToPersonalStyle(PersonalStyle.BrimmedCap) } case None => @@ -480,96 +479,99 @@ class Player(private val core : Avatar) extends PlanetSideServerObject } } - private var usingSpecial : SpecialExoSuitDefinition.Mode.Value=>SpecialExoSuitDefinition.Mode.Value = DefaultUsingSpecial + private var usingSpecial: SpecialExoSuitDefinition.Mode.Value => SpecialExoSuitDefinition.Mode.Value = + DefaultUsingSpecial - private var gettingSpecial : ()=>SpecialExoSuitDefinition.Mode.Value = DefaultGettingSpecial + private var gettingSpecial: () => SpecialExoSuitDefinition.Mode.Value = DefaultGettingSpecial - private def ChangeSpecialAbility() : Unit = { - if(ExoSuit == ExoSuitType.MAX) { + private def ChangeSpecialAbility(): Unit = { + if (ExoSuit == ExoSuitType.MAX) { gettingSpecial = MAXGettingSpecial usingSpecial = Faction match { case PlanetSideEmpire.TR => UsingAnchorsOrOverdrive case PlanetSideEmpire.NC => UsingShield - case _ => DefaultUsingSpecial + case _ => DefaultUsingSpecial } - } - else { + } else { usingSpecial = DefaultUsingSpecial gettingSpecial = DefaultGettingSpecial } } - def UsingSpecial : SpecialExoSuitDefinition.Mode.Value = { gettingSpecial() } + def UsingSpecial: SpecialExoSuitDefinition.Mode.Value = { gettingSpecial() } - def UsingSpecial_=(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = usingSpecial(state) + def UsingSpecial_=(state: SpecialExoSuitDefinition.Mode.Value): SpecialExoSuitDefinition.Mode.Value = + usingSpecial(state) - private def DefaultUsingSpecial(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = SpecialExoSuitDefinition.Mode.Normal + private def DefaultUsingSpecial(state: SpecialExoSuitDefinition.Mode.Value): SpecialExoSuitDefinition.Mode.Value = + SpecialExoSuitDefinition.Mode.Normal - private def UsingAnchorsOrOverdrive(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = { + private def UsingAnchorsOrOverdrive( + state: SpecialExoSuitDefinition.Mode.Value + ): SpecialExoSuitDefinition.Mode.Value = { import SpecialExoSuitDefinition.Mode._ val curr = UsingSpecial - val next = if(curr == Normal) { - if(state == Anchored || state == Overdrive) { + val next = if (curr == Normal) { + if (state == Anchored || state == Overdrive) { state - } - else { + } else { Normal } - } - else if(state == Normal) { + } else if (state == Normal) { Normal - } - else { + } else { curr } MAXUsingSpecial(next) } - private def UsingShield(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = { + private def UsingShield(state: SpecialExoSuitDefinition.Mode.Value): SpecialExoSuitDefinition.Mode.Value = { import SpecialExoSuitDefinition.Mode._ val curr = UsingSpecial - val next = if(curr == Normal) { - if(state == Shielded) { + val next = if (curr == Normal) { + if (state == Shielded) { state - } - else { + } else { Normal } - } - else if(state == Normal) { + } else if (state == Normal) { Normal - } - else { + } else { curr } MAXUsingSpecial(next) } - private def DefaultGettingSpecial() : SpecialExoSuitDefinition.Mode.Value = SpecialExoSuitDefinition.Mode.Normal + private def DefaultGettingSpecial(): SpecialExoSuitDefinition.Mode.Value = SpecialExoSuitDefinition.Mode.Normal - private def MAXUsingSpecial(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = exosuit match { - case obj : SpecialExoSuitDefinition => - obj.UsingSpecial = state - case _ => - SpecialExoSuitDefinition.Mode.Normal - } + private def MAXUsingSpecial(state: SpecialExoSuitDefinition.Mode.Value): SpecialExoSuitDefinition.Mode.Value = + exosuit match { + case obj: SpecialExoSuitDefinition => + obj.UsingSpecial = state + case _ => + SpecialExoSuitDefinition.Mode.Normal + } - private def MAXGettingSpecial() : SpecialExoSuitDefinition.Mode.Value = exosuit match { - case obj : SpecialExoSuitDefinition => - obj.UsingSpecial - case _ => - SpecialExoSuitDefinition.Mode.Normal - } + private def MAXGettingSpecial(): SpecialExoSuitDefinition.Mode.Value = + exosuit match { + case obj: SpecialExoSuitDefinition => + obj.UsingSpecial + case _ => + SpecialExoSuitDefinition.Mode.Normal + } - def isAnchored : Boolean = ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.TR && UsingSpecial == SpecialExoSuitDefinition.Mode.Anchored + def isAnchored: Boolean = + ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.TR && UsingSpecial == SpecialExoSuitDefinition.Mode.Anchored - def isOverdrived : Boolean = ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.TR && UsingSpecial == SpecialExoSuitDefinition.Mode.Overdrive + def isOverdrived: Boolean = + ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.TR && UsingSpecial == SpecialExoSuitDefinition.Mode.Overdrive - def isShielded : Boolean = ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.NC && UsingSpecial == SpecialExoSuitDefinition.Mode.Shielded + def isShielded: Boolean = + ExoSuit == ExoSuitType.MAX && Faction == PlanetSideEmpire.NC && UsingSpecial == SpecialExoSuitDefinition.Mode.Shielded - def AccessingBackpack : Option[PlanetSideGUID] = backpackAccess + def AccessingBackpack: Option[PlanetSideGUID] = backpackAccess - def AccessingBackpack_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = { + def AccessingBackpack_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = { AccessingBackpack = Some(guid) } @@ -579,12 +581,12 @@ class Player(private val core : Avatar) extends PlanetSideServerObject * @param guid the player who wishes to access the backpack * @return the player who is currently allowed to access the backpack */ - def AccessingBackpack_=(guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def AccessingBackpack_=(guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { guid match { case None => backpackAccess = None case Some(player) => - if(isBackpack && backpackAccess.isEmpty) { + if (isBackpack && backpackAccess.isEmpty) { backpackAccess = Some(player) } } @@ -596,94 +598,96 @@ class Player(private val core : Avatar) extends PlanetSideServerObject * @param player a player attempting to access this backpack * @return `true`, if the `player` is permitted access; `false`, otherwise */ - def CanAccessBackpack(player : Player) : Boolean = { + def CanAccessBackpack(player: Player): Boolean = { isBackpack && (backpackAccess.isEmpty || backpackAccess.contains(player.GUID)) } - def FirstTimeEvents : List[String] = core.FirstTimeEvents + def FirstTimeEvents: List[String] = core.FirstTimeEvents - def VehicleSeated : Option[PlanetSideGUID] = vehicleSeated + def VehicleSeated: Option[PlanetSideGUID] = vehicleSeated - def VehicleSeated_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = VehicleSeated_=(Some(guid)) + def VehicleSeated_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = VehicleSeated_=(Some(guid)) - def VehicleSeated_=(guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def VehicleSeated_=(guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { vehicleSeated = guid VehicleSeated } - def VehicleOwned : Option[PlanetSideGUID] = core.VehicleOwned + def VehicleOwned: Option[PlanetSideGUID] = core.VehicleOwned - def VehicleOwned_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = core.VehicleOwned_=(Some(guid)) + def VehicleOwned_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = core.VehicleOwned_=(Some(guid)) - def VehicleOwned_=(guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = core.VehicleOwned_=(guid) + def VehicleOwned_=(guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = core.VehicleOwned_=(guid) - def GetLastUsedTime(code : Int) : Long = core.GetLastUsedTime(code) + def GetLastUsedTime(code: Int): Long = core.GetLastUsedTime(code) - def GetLastUsedTime(code : ExoSuitType.Value) : Long = core.GetLastUsedTime(code) + def GetLastUsedTime(code: ExoSuitType.Value): Long = core.GetLastUsedTime(code) - def GetLastUsedTime(code : ExoSuitType.Value, subtype : Int) : Long = core.GetLastUsedTime(code, subtype) + def GetLastUsedTime(code: ExoSuitType.Value, subtype: Int): Long = core.GetLastUsedTime(code, subtype) - def SetLastUsedTime(code : Int, time : Long) : Unit = core.SetLastUsedTime(code, time) + def SetLastUsedTime(code: Int, time: Long): Unit = core.SetLastUsedTime(code, time) - def SetLastUsedTime(code : ExoSuitType.Value): Unit = core.SetLastUsedTime(code) + def SetLastUsedTime(code: ExoSuitType.Value): Unit = core.SetLastUsedTime(code) - def SetLastUsedTime(code : ExoSuitType.Value, time : Long) : Unit = core.SetLastUsedTime(code, time) + def SetLastUsedTime(code: ExoSuitType.Value, time: Long): Unit = core.SetLastUsedTime(code, time) - def SetLastUsedTime(code : ExoSuitType.Value, subtype : Int): Unit = core.SetLastUsedTime(code, subtype) + def SetLastUsedTime(code: ExoSuitType.Value, subtype: Int): Unit = core.SetLastUsedTime(code, subtype) - def SetLastUsedTime(code : ExoSuitType.Value, subtype : Int, time : Long) : Unit = core.SetLastUsedTime(code, subtype, time) + def SetLastUsedTime(code: ExoSuitType.Value, subtype: Int, time: Long): Unit = + core.SetLastUsedTime(code, subtype, time) - def GetLastPurchaseTime(code : Int) : Long = core.GetLastPurchaseTime(code) + def GetLastPurchaseTime(code: Int): Long = core.GetLastPurchaseTime(code) - def SetLastPurchaseTime(code : Int, time : Long) : Unit = core.SetLastPurchaseTime(code, time) + def SetLastPurchaseTime(code: Int, time: Long): Unit = core.SetLastPurchaseTime(code, time) - def ObjectTypeNameReference(id : Long) : String = core.ObjectTypeNameReference(id) + def ObjectTypeNameReference(id: Long): String = core.ObjectTypeNameReference(id) - def ObjectTypeNameReference(id : Long, name : String) : String = core.ObjectTypeNameReference(id, name) + def ObjectTypeNameReference(id: Long, name: String): String = core.ObjectTypeNameReference(id, name) def DamageModel = exosuit.asInstanceOf[DamageResistanceModel] - def Definition : AvatarDefinition = core.Definition + def Definition: AvatarDefinition = core.Definition def canEqual(other: Any): Boolean = other.isInstanceOf[Player] - override def equals(other : Any) : Boolean = other match { - case that: Player => - (that canEqual this) && - core == that.core - case _ => - false - } + override def equals(other: Any): Boolean = + other match { + case that: Player => + (that canEqual this) && + core == that.core + case _ => + false + } - override def hashCode() : Int = { + override def hashCode(): Int = { core.hashCode() } - override def toString : String = Player.toString(this) + override def toString: String = Player.toString(this) } object Player { - final val LockerSlot : Int = 5 - final val FreeHandSlot : Int = 250 - final val HandsDownSlot : Int = 255 + final val LockerSlot: Int = 5 + final val FreeHandSlot: Int = 250 + final val HandsDownSlot: Int = 255 final case class Die() - final case class ImplantActivation(slot : Int, status : Int) - final case class ImplantInitializationStart(slot : Int) - final case class UninitializeImplant(slot : Int) - final case class ImplantInitializationComplete(slot : Int) + final case class ImplantActivation(slot: Int, status: Int) + final case class ImplantInitializationStart(slot: Int) + final case class UninitializeImplant(slot: Int) + final case class ImplantInitializationComplete(slot: Int) final case class StaminaRegen() - final case class StaminaChanged(currentStamina : Option[Int] = None) + final case class StaminaChanged(currentStamina: Option[Int] = None) object StaminaChanged { - def apply(amount : Int) : StaminaChanged = StaminaChanged(Some(amount)) + def apply(amount: Int): StaminaChanged = StaminaChanged(Some(amount)) } - def apply(core : Avatar) : Player = { + def apply(core: Avatar): Player = { new Player(core) } - private def SuitSetup(player : Player, eSuit : ExoSuitDefinition) : Unit = { + private def SuitSetup(player: Player, eSuit: ExoSuitDefinition): Unit = { //inventory player.Inventory.Clear() player.Inventory.Resize(eSuit.InventoryScale.Width, eSuit.InventoryScale.Height) @@ -692,34 +696,35 @@ object Player { (0 until 5).foreach(index => { player.Slot(index).Size = eSuit.Holster(index) }) } - def Respawn(player : Player) : Player = { - if(player.Release) { + def Respawn(player: Player): Player = { + if (player.Release) { val obj = new Player(player.core) obj.Continent = player.Continent obj - } - else { + } else { player } } - def GetHackLevel(player : Player): Int = { - if(player.Certifications.contains(CertificationType.ExpertHacking) || player.Certifications.contains(CertificationType.ElectronicsExpert)) { + def GetHackLevel(player: Player): Int = { + if ( + player.Certifications.contains(CertificationType.ExpertHacking) || player.Certifications.contains( + CertificationType.ElectronicsExpert + ) + ) { 3 - } - else if(player.Certifications.contains(CertificationType.AdvancedHacking)) { + } else if (player.Certifications.contains(CertificationType.AdvancedHacking)) { 2 - } - else if (player.Certifications.contains(CertificationType.Hacking)) { + } else if (player.Certifications.contains(CertificationType.Hacking)) { 1 - } - else { + } else { 0 } } - def toString(obj : Player) : String = { - val guid = if(obj.HasGUID) { s" ${obj.Continent}-${obj.GUID.guid}" } else { "" } + def toString(obj: Player): String = { + val guid = if (obj.HasGUID) { s" ${obj.Continent}-${obj.GUID.guid}" } + else { "" } s"${obj.core}$guid ${obj.Health}/${obj.MaxHealth} ${obj.Armor}/${obj.MaxArmor}" } } diff --git a/common/src/main/scala/net/psforever/objects/Players.scala b/common/src/main/scala/net/psforever/objects/Players.scala index 1757b8fb..52911923 100644 --- a/common/src/main/scala/net/psforever/objects/Players.scala +++ b/common/src/main/scala/net/psforever/objects/Players.scala @@ -25,17 +25,21 @@ object Players { * @return `true`, if the next cycle of progress should occur; * `false`, otherwise */ - def RevivingTickAction(target : Player, user : Player, item : Tool)(progress : Float) : Boolean = { - if(!target.isAlive && !target.isBackpack && + def RevivingTickAction(target: Player, user: Player, item: Tool)(progress: Float): Boolean = { + if ( + !target.isAlive && !target.isBackpack && user.isAlive && !user.isMoving && user.Slot(user.DrawnSlot).Equipment.contains(item) && item.Magazine >= 25 && - Vector3.Distance(target.Position, user.Position) < target.Definition.RepairDistance) { + Vector3.Distance(target.Position, user.Position) < target.Definition.RepairDistance + ) { val events = target.Zone.AvatarEvents - val uname = user.Name - events ! AvatarServiceMessage(uname, AvatarAction.SendResponse(Service.defaultPlayerGUID, RepairMessage(target.GUID, progress.toInt))) + val uname = user.Name + events ! AvatarServiceMessage( + uname, + AvatarAction.SendResponse(Service.defaultPlayerGUID, RepairMessage(target.GUID, progress.toInt)) + ) true - } - else { + } else { false } } @@ -48,11 +52,17 @@ object Players { * @param medic the name of the player doing the reviving * @param item the tool being used to revive the target player */ - def FinishRevivingPlayer(target : Player, medic : String, item : Tool)() : Unit = { + def FinishRevivingPlayer(target: Player, medic: String, item: Tool)(): Unit = { val name = target.Name log.info(s"$medic had revived $name") val magazine = item.Discharge(Some(25)) - target.Zone.AvatarEvents ! AvatarServiceMessage(medic, AvatarAction.SendResponse(Service.defaultPlayerGUID, InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine))) + target.Zone.AvatarEvents ! AvatarServiceMessage( + medic, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine) + ) + ) target.Zone.AvatarEvents ! AvatarServiceMessage(name, AvatarAction.Revive(target.GUID)) } @@ -64,11 +74,14 @@ object Players { * @param list a persistent `List` of `Equipment` in the holster slots * @return a `List` of `Equipment` in the holster slots */ - @tailrec def clearHolsters(iter : Iterator[EquipmentSlot], index : Int = 0, list : List[InventoryItem] = Nil) : List[InventoryItem] = { - if(!iter.hasNext) { + @tailrec def clearHolsters( + iter: Iterator[EquipmentSlot], + index: Int = 0, + list: List[InventoryItem] = Nil + ): List[InventoryItem] = { + if (!iter.hasNext) { list - } - else { + } else { val slot = iter.next slot.Equipment match { case Some(equipment) => @@ -88,13 +101,12 @@ object Players { * @param list a `List` of all `Equipment` that is not yet assigned to a holster slot or an inventory slot * @return the `List` of all `Equipment` not yet assigned to a holster slot or an inventory slot */ - @tailrec def fillEmptyHolsters(iter : Iterator[EquipmentSlot], list : List[InventoryItem]) : List[InventoryItem] = { - if(!iter.hasNext) { + @tailrec def fillEmptyHolsters(iter: Iterator[EquipmentSlot], list: List[InventoryItem]): List[InventoryItem] = { + if (!iter.hasNext) { list - } - else { + } else { val slot = iter.next - if(slot.Equipment.isEmpty) { + if (slot.Equipment.isEmpty) { list.find(item => item.obj.Size == slot.Size) match { case Some(obj) => val index = list.indexOf(obj) @@ -103,21 +115,20 @@ object Players { case None => fillEmptyHolsters(iter, list) } - } - else { + } else { fillEmptyHolsters(iter, list) } } } - def CertificationToUseExoSuit(player : Player, exosuit : ExoSuitType.Value, subtype : Int) : Boolean = { + def CertificationToUseExoSuit(player: Player, exosuit: ExoSuitType.Value, subtype: Int): Boolean = { ExoSuitDefinition.Select(exosuit, player.Faction).Permissions match { case Nil => true case permissions if subtype != 0 => val certs = player.Certifications certs.intersect(permissions.toSet).nonEmpty && - certs.intersect(InfantryLoadout.DetermineSubtypeC(subtype)).nonEmpty + certs.intersect(InfantryLoadout.DetermineSubtypeC(subtype)).nonEmpty case permissions => player.Certifications.intersect(permissions.toSet).nonEmpty } diff --git a/common/src/main/scala/net/psforever/objects/SensorDeployable.scala b/common/src/main/scala/net/psforever/objects/SensorDeployable.scala index cb5106c3..5a7a2ca5 100644 --- a/common/src/main/scala/net/psforever/objects/SensorDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/SensorDeployable.scala @@ -19,82 +19,97 @@ import services.vehicle.{VehicleAction, VehicleServiceMessage} import scala.concurrent.duration._ -class SensorDeployable(cdef : SensorDeployableDefinition) extends ComplexDeployable(cdef) - with Hackable - with JammableUnit +class SensorDeployable(cdef: SensorDeployableDefinition) extends ComplexDeployable(cdef) with Hackable with JammableUnit -class SensorDeployableDefinition(private val objectId : Int) extends ComplexDeployableDefinition(objectId) { +class SensorDeployableDefinition(private val objectId: Int) extends ComplexDeployableDefinition(objectId) { Name = "sensor_deployable" DeployCategory = DeployableCategory.Sensors Model = StandardResolutions.SimpleDeployables Packet = new SmallDeployableConverter - override def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { - obj.Actor = context.actorOf(Props(classOf[SensorDeployableControl], obj), PlanetSideServerObject.UniqueActorName(obj)) + override def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { + obj.Actor = + context.actorOf(Props(classOf[SensorDeployableControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } - override def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { SimpleDeployableDefinition.SimpleUninitialize(obj, context) } } object SensorDeployableDefinition { - def apply(dtype : DeployedItem.Value) : SensorDeployableDefinition = { + def apply(dtype: DeployedItem.Value): SensorDeployableDefinition = { new SensorDeployableDefinition(dtype.id) } } -class SensorDeployableControl(sensor : SensorDeployable) extends Actor - with JammableBehavior - with DamageableEntity - with RepairableEntity { - def JammableObject = sensor +class SensorDeployableControl(sensor: SensorDeployable) + extends Actor + with JammableBehavior + with DamageableEntity + with RepairableEntity { + def JammableObject = sensor def DamageableObject = sensor def RepairableObject = sensor - def receive : Receive = jammableBehavior - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case _ => ; - } + def receive: Receive = + jammableBehavior + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case _ => ; + } - override protected def DamageLog(msg : String) : Unit = { } + override protected def DamageLog(msg: String): Unit = {} - override protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) SensorDeployableControl.DestructionAwareness(sensor, PlanetSideGUID(0)) } - override def StartJammeredSound(target : Any, dur : Int) : Unit = target match { - case obj : PlanetSideServerObject if !jammedSound => - obj.Zone.VehicleEvents ! VehicleServiceMessage(obj.Zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 54, 1)) - super.StartJammeredSound(obj, dur) - case _ => ; - } - - override def StartJammeredStatus(target : Any, dur : Int) : Unit = target match { - case obj : PlanetSideServerObject with JammableUnit if !obj.Jammed => - val zone = obj.Zone - zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.TriggerEffectInfo(Service.defaultPlayerGUID, "on", obj.GUID, false, 1000)) - super.StartJammeredStatus(obj, dur) - case _ => ; - } - - override def CancelJammeredSound(target : Any) : Unit = { + override def StartJammeredSound(target: Any, dur: Int): Unit = target match { - case obj : PlanetSideServerObject if jammedSound => + case obj: PlanetSideServerObject if !jammedSound => + obj.Zone.VehicleEvents ! VehicleServiceMessage( + obj.Zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 54, 1) + ) + super.StartJammeredSound(obj, dur) + case _ => ; + } + + override def StartJammeredStatus(target: Any, dur: Int): Unit = + target match { + case obj: PlanetSideServerObject with JammableUnit if !obj.Jammed => val zone = obj.Zone - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 54, 0)) + zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.TriggerEffectInfo(Service.defaultPlayerGUID, "on", obj.GUID, false, 1000) + ) + super.StartJammeredStatus(obj, dur) + case _ => ; + } + + override def CancelJammeredSound(target: Any): Unit = { + target match { + case obj: PlanetSideServerObject if jammedSound => + val zone = obj.Zone + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 54, 0) + ) case _ => ; } super.CancelJammeredSound(target) } - override def CancelJammeredStatus(target : Any) : Unit = { + override def CancelJammeredStatus(target: Any): Unit = { target match { - case obj : PlanetSideServerObject with JammableUnit if obj.Jammed => - sensor.Zone.LocalEvents ! LocalServiceMessage(sensor.Zone.Id, LocalAction.TriggerEffectInfo(Service.defaultPlayerGUID, "on", obj.GUID, true, 1000)) + case obj: PlanetSideServerObject with JammableUnit if obj.Jammed => + sensor.Zone.LocalEvents ! LocalServiceMessage( + sensor.Zone.Id, + LocalAction.TriggerEffectInfo(Service.defaultPlayerGUID, "on", obj.GUID, true, 1000) + ) case _ => ; } super.CancelJammeredStatus(target) @@ -102,30 +117,33 @@ class SensorDeployableControl(sensor : SensorDeployable) extends Actor } object SensorDeployableControl { + /** * na * @param target na * @param attribution na */ - def DestructionAwareness(target : Damageable.Target with Deployable, attribution : PlanetSideGUID) : Unit = { + def DestructionAwareness(target: Damageable.Target with Deployable, attribution: PlanetSideGUID): Unit = { Deployables.AnnounceDestroyDeployable(target, Some(1 seconds)) val zone = target.Zone - zone.LocalEvents ! LocalServiceMessage(zone.Id, + zone.LocalEvents ! LocalServiceMessage( + zone.Id, LocalAction.TriggerEffectInfo(Service.defaultPlayerGUID, "on", target.GUID, false, 1000) ) //position the explosion effect near the bulky area of the sensor stalk val ang = target.Orientation - val explosionPos = { - val pos = target.Position + val explosionPos = { + val pos = target.Position val yRadians = ang.y.toRadians - val d = Vector3.Rz(Vector3(0, 0.875f, 0), ang.z) * math.sin(yRadians).toFloat + val d = Vector3.Rz(Vector3(0, 0.875f, 0), ang.z) * math.sin(yRadians).toFloat Vector3( pos.x + d.x, pos.y + d.y, pos.z + math.cos(yRadians).toFloat * 0.875f ) } - zone.LocalEvents ! LocalServiceMessage(zone.Id, + zone.LocalEvents ! LocalServiceMessage( + zone.Id, LocalAction.TriggerEffectLocation(Service.defaultPlayerGUID, "motion_sensor_destroyed", explosionPos, ang) ) //TODO replaced by an alternate model (charred stub)? diff --git a/common/src/main/scala/net/psforever/objects/ShieldGeneratorDeployable.scala b/common/src/main/scala/net/psforever/objects/ShieldGeneratorDeployable.scala index 8e437331..350029e4 100644 --- a/common/src/main/scala/net/psforever/objects/ShieldGeneratorDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/ShieldGeneratorDeployable.scala @@ -17,38 +17,42 @@ import net.psforever.types.PlanetSideGUID import services.Service import services.vehicle.{VehicleAction, VehicleServiceMessage} -class ShieldGeneratorDeployable(cdef : ShieldGeneratorDefinition) extends ComplexDeployable(cdef) - with Hackable - with JammableUnit +class ShieldGeneratorDeployable(cdef: ShieldGeneratorDefinition) + extends ComplexDeployable(cdef) + with Hackable + with JammableUnit class ShieldGeneratorDefinition extends ComplexDeployableDefinition(240) { Packet = new ShieldGeneratorConverter DeployCategory = DeployableCategory.ShieldGenerators - override def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { - obj.Actor = context.actorOf(Props(classOf[ShieldGeneratorControl], obj), PlanetSideServerObject.UniqueActorName(obj)) + override def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { + obj.Actor = + context.actorOf(Props(classOf[ShieldGeneratorControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } - override def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { SimpleDeployableDefinition.SimpleUninitialize(obj, context) } } -class ShieldGeneratorControl(gen : ShieldGeneratorDeployable) extends Actor - with JammableBehavior - with DamageableEntity - with RepairableEntity { - def JammableObject = gen - def DamageableObject = gen - def RepairableObject = gen - private var handleDamageToShields : Boolean = false +class ShieldGeneratorControl(gen: ShieldGeneratorDeployable) + extends Actor + with JammableBehavior + with DamageableEntity + with RepairableEntity { + def JammableObject = gen + def DamageableObject = gen + def RepairableObject = gen + private var handleDamageToShields: Boolean = false - def receive : Receive = jammableBehavior - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case _ => ; - } + def receive: Receive = + jammableBehavior + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case _ => ; + } /** * The shield generator has two upgrade paths - blocking projectiles, and providing ammunition like a terminal. @@ -59,44 +63,48 @@ class ShieldGeneratorControl(gen : ShieldGeneratorDeployable) extends Actor * @param player the user of the nano dispenser tool * @param item the nano dispenser tool */ - override def CanBeRepairedByNanoDispenser(player : Player, item : Tool) : Unit = { - if(gen.CanRepair) { + override def CanBeRepairedByNanoDispenser(player: Player, item: Tool): Unit = { + if (gen.CanRepair) { super.CanBeRepairedByNanoDispenser(player, item) - } - else if(!gen.Destroyed) { + } else if (!gen.Destroyed) { //TODO reinforced shield upgrade not implemented yet //TODO ammunition supply upgrade not implemented yet } } - override protected def PerformDamage(target : Damageable.Target, applyDamageTo : ResolutionCalculations.Output) : Unit = { - val originalHealth = gen.Health + override protected def PerformDamage( + target: Damageable.Target, + applyDamageTo: ResolutionCalculations.Output + ): Unit = { + val originalHealth = gen.Health val originalShields = gen.Shields - val cause = applyDamageTo(target) - val health = gen.Health - val shields = gen.Shields - val damageToHealth = originalHealth - health + val cause = applyDamageTo(target) + val health = gen.Health + val shields = gen.Shields + val damageToHealth = originalHealth - health val damageToShields = originalShields - shields - val damage = damageToHealth + damageToShields - if(WillAffectTarget(target, damage, cause)) { + val damage = damageToHealth + damageToShields + if (WillAffectTarget(target, damage, cause)) { target.History(cause) - DamageLog(target,s"BEFORE=$originalHealth/$originalShields, AFTER=$health/$shields, CHANGE=$damageToHealth/$damageToShields") + DamageLog( + target, + s"BEFORE=$originalHealth/$originalShields, AFTER=$health/$shields, CHANGE=$damageToHealth/$damageToShields" + ) handleDamageToShields = damageToShields > 0 HandleDamage(target, cause, damageToHealth) - } - else { + } else { gen.Health = originalHealth gen.Shields = originalShields } } - override protected def DamageAwareness(target : Damageable.Target, cause : ResolvedProjectile, amount : Int) : Unit = { + override protected def DamageAwareness(target: Damageable.Target, cause: ResolvedProjectile, amount: Int): Unit = { super.DamageAwareness(target, cause, amount) ShieldGeneratorControl.DamageAwareness(gen, cause, handleDamageToShields) handleDamageToShields = false } - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) ShieldGeneratorControl.DestructionAwareness(gen, PlanetSideGUID(0)) } @@ -105,21 +113,28 @@ class ShieldGeneratorControl(gen : ShieldGeneratorDeployable) extends Actor while the shield generator is technically a supported jammable target, how that works is currently unknown check the object definition for proper feature activation */ - override def StartJammeredSound(target : Any, dur : Int) : Unit = { } + override def StartJammeredSound(target: Any, dur: Int): Unit = {} - override def StartJammeredStatus(target : Any, dur : Int) : Unit = target match { - case obj : PlanetSideServerObject with JammableUnit if !obj.Jammed => - obj.Zone.VehicleEvents ! VehicleServiceMessage(obj.Zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 1)) - super.StartJammeredStatus(obj, dur) - case _ => ; - } - - override def CancelJammeredSound(target : Any) : Unit = { } - - override def CancelJammeredStatus(target : Any) : Unit = { + override def StartJammeredStatus(target: Any, dur: Int): Unit = target match { - case obj : PlanetSideServerObject with JammableUnit if obj.Jammed => - obj.Zone.VehicleEvents ! VehicleServiceMessage(obj.Zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 0)) + case obj: PlanetSideServerObject with JammableUnit if !obj.Jammed => + obj.Zone.VehicleEvents ! VehicleServiceMessage( + obj.Zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 1) + ) + super.StartJammeredStatus(obj, dur) + case _ => ; + } + + override def CancelJammeredSound(target: Any): Unit = {} + + override def CancelJammeredStatus(target: Any): Unit = { + target match { + case obj: PlanetSideServerObject with JammableUnit if obj.Jammed => + obj.Zone.VehicleEvents ! VehicleServiceMessage( + obj.Zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 0) + ) case _ => ; } super.CancelJammeredStatus(target) @@ -127,17 +142,21 @@ class ShieldGeneratorControl(gen : ShieldGeneratorDeployable) extends Actor } object ShieldGeneratorControl { + /** * na * @param target na * @param cause na * @param damageToShields na */ - def DamageAwareness(target : ShieldGeneratorDeployable, cause : ResolvedProjectile, damageToShields : Boolean) : Unit = { + def DamageAwareness(target: ShieldGeneratorDeployable, cause: ResolvedProjectile, damageToShields: Boolean): Unit = { //shields - if(damageToShields) { + if (damageToShields) { val zone = target.Zone - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, target.Shields)) + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, target.Shields) + ) } } @@ -146,7 +165,7 @@ object ShieldGeneratorControl { * @param target na * @param attribution na */ - def DestructionAwareness(target : Damageable.Target with Deployable, attribution : PlanetSideGUID) : Unit = { + def DestructionAwareness(target: Damageable.Target with Deployable, attribution: PlanetSideGUID): Unit = { Deployables.AnnounceDestroyDeployable(target, None) } } diff --git a/common/src/main/scala/net/psforever/objects/SimpleItem.scala b/common/src/main/scala/net/psforever/objects/SimpleItem.scala index 19b041f6..fe67d7e0 100644 --- a/common/src/main/scala/net/psforever/objects/SimpleItem.scala +++ b/common/src/main/scala/net/psforever/objects/SimpleItem.scala @@ -4,12 +4,12 @@ package net.psforever.objects import net.psforever.objects.definition.SimpleItemDefinition import net.psforever.objects.equipment.Equipment -class SimpleItem(private val simpDef : SimpleItemDefinition) extends Equipment { - def Definition : SimpleItemDefinition = simpDef +class SimpleItem(private val simpDef: SimpleItemDefinition) extends Equipment { + def Definition: SimpleItemDefinition = simpDef } object SimpleItem { - def apply(simpDef : SimpleItemDefinition) : SimpleItem = { + def apply(simpDef: SimpleItemDefinition): SimpleItem = { new SimpleItem(simpDef) } } diff --git a/common/src/main/scala/net/psforever/objects/SpawnPoint.scala b/common/src/main/scala/net/psforever/objects/SpawnPoint.scala index ad6bd436..096a1cbb 100644 --- a/common/src/main/scala/net/psforever/objects/SpawnPoint.scala +++ b/common/src/main/scala/net/psforever/objects/SpawnPoint.scala @@ -8,27 +8,31 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scala.collection.mutable trait SpawnPoint { - psso : PlanetSideServerObject => + 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 + 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 + 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 + 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, @@ -36,16 +40,17 @@ trait SpawnPoint { * This should generally be themselves. * @see `Amenity.Owner` */ - def Owner : PlanetSideServerObject + 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 + def Definition: ObjectDefinition with SpawnPointDefinition - def Offline : Boolean = psso.Destroyed + def Offline: Boolean = psso.Destroyed /** * Determine a specific position and orientation in which to spawn the target. @@ -53,9 +58,9 @@ trait SpawnPoint { * the first represents the game world position of spawning; * the second represents the game world direction of spawning */ - def SpecificPoint(target : PlanetSideGameObject) : (Vector3, Vector3) = { + def SpecificPoint(target: PlanetSideGameObject): (Vector3, Vector3) = { psso.Definition match { - case d : SpawnPointDefinition => + case d: SpawnPointDefinition => d.SpecificPoint(this, target) case _ => SpawnPoint.Default(this, target) @@ -64,49 +69,53 @@ trait SpawnPoint { } object SpawnPoint { - def Default(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = (obj.Position, obj.Orientation) + 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).toFloat //x=sin, y=cos because compass-0 is East, not North + def Tube(obj: SpawnPoint, target: PlanetSideGameObject): (Vector3, Vector3) = ( - 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) { + 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).toFloat //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 { + } else { Vector3.z((z - 90) % 360) } ) } - def Gate(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = { + def Gate(obj: SpawnPoint, target: PlanetSideGameObject): (Vector3, Vector3) = { obj.Definition match { - case d : SpawnPointDefinition => - val ori = target.Orientation + 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 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 vdef: VehicleDefinition if GlobalDefinitions.isFlightVehicle(vdef) => + Vector3.z(scala.math.random.toFloat * d.UseRadius / 4 + 20f) case _ => Vector3.Zero } @@ -118,46 +127,45 @@ object SpawnPoint { } 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 + 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: Float = radius - def UseRadius_=(rad : Float) : Float = { + def UseRadius_=(rad: Float): Float = { radius = rad UseRadius } - def Delay : Long = delay + def Delay: Long = delay - def Delay_=(toDelay : Long) : Long = { + def Delay_=(toDelay: Long): Long = { delay = toDelay Delay } - def VehicleAllowance : Boolean = noWarp.isDefined + def VehicleAllowance: Boolean = noWarp.isDefined - def VehicleAllowance_=(allow : Boolean) : Boolean = { - if(allow && noWarp.isEmpty) { + def VehicleAllowance_=(allow: Boolean): Boolean = { + if (allow && noWarp.isEmpty) { noWarp = Some(mutable.Set.empty[VehicleDefinition]) - } - else if(!allow && noWarp.isDefined) { + } else if (!allow && noWarp.isDefined) { noWarp = None } VehicleAllowance } - def NoWarp : mutable.Set[VehicleDefinition] = { + def NoWarp: mutable.Set[VehicleDefinition] = { noWarp.getOrElse(mutable.Set.empty[VehicleDefinition]) } - def SpecificPointFunc : (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3) = spawningFunc + def SpecificPointFunc: (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3) = spawningFunc - def SpecificPointFunc_=(func : (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3)) : Unit = { + def SpecificPointFunc_=(func: (SpawnPoint, PlanetSideGameObject) => (Vector3, Vector3)): Unit = { spawningFunc = func } - def SpecificPoint(obj : SpawnPoint, target : PlanetSideGameObject) : (Vector3, Vector3) = spawningFunc(obj, target) + def SpecificPoint(obj: SpawnPoint, target: PlanetSideGameObject): (Vector3, Vector3) = spawningFunc(obj, target) } diff --git a/common/src/main/scala/net/psforever/objects/Telepad.scala b/common/src/main/scala/net/psforever/objects/Telepad.scala index d4bfb523..956230e0 100644 --- a/common/src/main/scala/net/psforever/objects/Telepad.scala +++ b/common/src/main/scala/net/psforever/objects/Telepad.scala @@ -4,11 +4,10 @@ package net.psforever.objects import net.psforever.objects.ce.TelepadLike import net.psforever.objects.definition.ConstructionItemDefinition -class Telepad(private val cdef : ConstructionItemDefinition) extends ConstructionItem(cdef) - with TelepadLike +class Telepad(private val cdef: ConstructionItemDefinition) extends ConstructionItem(cdef) with TelepadLike object Telepad { - def apply(cdef : ConstructionItemDefinition) : Telepad = { + def apply(cdef: ConstructionItemDefinition): Telepad = { new Telepad(cdef) } -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/objects/TelepadDeployable.scala b/common/src/main/scala/net/psforever/objects/TelepadDeployable.scala index 42774eec..89517362 100644 --- a/common/src/main/scala/net/psforever/objects/TelepadDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/TelepadDeployable.scala @@ -4,5 +4,4 @@ package net.psforever.objects import net.psforever.objects.ce.{SimpleDeployable, TelepadLike} import net.psforever.objects.definition.SimpleDeployableDefinition -class TelepadDeployable(ddef : SimpleDeployableDefinition) extends SimpleDeployable(ddef) - with TelepadLike +class TelepadDeployable(ddef: SimpleDeployableDefinition) extends SimpleDeployable(ddef) with TelepadLike diff --git a/common/src/main/scala/net/psforever/objects/Tool.scala b/common/src/main/scala/net/psforever/objects/Tool.scala index 7a3302ac..5354138a 100644 --- a/common/src/main/scala/net/psforever/objects/Tool.scala +++ b/common/src/main/scala/net/psforever/objects/Tool.scala @@ -17,77 +17,79 @@ import scala.annotation.tailrec * Some weapons Chainblade have ammunition but do not consume it. * @param toolDef the `ObjectDefinition` that constructs this item and maintains some of its immutable fields */ -class Tool(private val toolDef : ToolDefinition) extends Equipment - with FireModeSwitch[FireModeDefinition] - with JammableUnit { +class Tool(private val toolDef: ToolDefinition) + extends Equipment + with FireModeSwitch[FireModeDefinition] + with JammableUnit { + /** index of the current fire mode on the `ToolDefinition`'s list of fire modes */ - private var fireModeIndex : Int = toolDef.DefaultFireModeIndex + private var fireModeIndex: Int = toolDef.DefaultFireModeIndex + /** current ammunition slot being used by this fire mode */ - private var ammoSlots : List[Tool.FireModeSlot] = List.empty - var lastDischarge : Long = 0 + private var ammoSlots: List[Tool.FireModeSlot] = List.empty + var lastDischarge: Long = 0 Tool.LoadDefinition(this) - def FireModeIndex : Int = fireModeIndex + def FireModeIndex: Int = fireModeIndex - def FireModeIndex_=(index : Int) : Int = { + def FireModeIndex_=(index: Int): Int = { fireModeIndex = index % Definition.FireModes.length FireModeIndex } - def FireMode : FireModeDefinition = Definition.FireModes(fireModeIndex) + def FireMode: FireModeDefinition = Definition.FireModes(fireModeIndex) - def NextFireMode : FireModeDefinition = { + def NextFireMode: FireModeDefinition = { FireModeIndex = Definition.NextFireModeIndex(FireModeIndex) AmmoSlot.Chamber = FireMode.Chamber FireMode } - def ToFireMode : Int = Definition.NextFireModeIndex(FireModeIndex) + def ToFireMode: Int = Definition.NextFireModeIndex(FireModeIndex) - def ToFireMode_=(index : Int) : FireModeDefinition = { + def ToFireMode_=(index: Int): FireModeDefinition = { FireModeIndex = index AmmoSlot.Chamber = FireMode.Chamber FireMode } - def AmmoTypeIndex : Int = FireMode.AmmoTypeIndices(AmmoSlot.AmmoTypeIndex) + def AmmoTypeIndex: Int = FireMode.AmmoTypeIndices(AmmoSlot.AmmoTypeIndex) - def AmmoTypeIndex_=(index : Int) : Int = { + def AmmoTypeIndex_=(index: Int): Int = { AmmoSlot.AmmoTypeIndex = index % FireMode.AmmoTypeIndices.length AmmoTypeIndex } - def AmmoType : Ammo.Value = Definition.AmmoTypes(AmmoTypeIndex).AmmoType + def AmmoType: Ammo.Value = Definition.AmmoTypes(AmmoTypeIndex).AmmoType - def NextAmmoType : Ammo.Value = { + def NextAmmoType: Ammo.Value = { AmmoSlot.AmmoTypeIndex = AmmoSlot.AmmoTypeIndex + 1 AmmoType } - def Projectile : ProjectileDefinition = { + def Projectile: ProjectileDefinition = { Definition.ProjectileTypes({ val projIndices = FireMode.ProjectileTypeIndices - if(projIndices.isEmpty) { + if (projIndices.isEmpty) { AmmoTypeIndex //e.g., bullet_9mm -> bullet_9mm_projectile, bullet_9mm_AP -> bullet_9mm_AP_projectile - } - else { + } else { projIndices(AmmoSlot.AmmoTypeIndex) //e.g., pulsar: f.mode1 -> pulsar_projectile, f.mode2 = pulsar_ap_projectile } }) } - def ProjectileType : Projectiles.Value = Projectile.ProjectileType + def ProjectileType: Projectiles.Value = Projectile.ProjectileType - def Magazine : Int = AmmoSlot.Magazine + def Magazine: Int = AmmoSlot.Magazine - def Magazine_=(mag : Int) : Int = { + def Magazine_=(mag: Int): Int = { //AmmoSlot.Magazine = Math.min(Math.max(0, mag), MaxMagazine) AmmoSlot.Magazine = Math.max(0, mag) Magazine } - def MaxMagazine : Int = { + def MaxMagazine: Int = { val fmode = FireMode fmode.CustomMagazine.get(AmmoType) match { case Some(magSize) => @@ -97,30 +99,30 @@ class Tool(private val toolDef : ToolDefinition) extends Equipment } } - def Discharge(rounds : Option[Int] = None) : Int = { + def Discharge(rounds: Option[Int] = None): Int = { lastDischarge = System.nanoTime() Magazine = FireMode.Discharge(this, rounds) } - def LastDischarge : Long = { + def LastDischarge: Long = { lastDischarge } - def AmmoSlot : Tool.FireModeSlot = ammoSlots(FireMode.AmmoSlotIndex) + def AmmoSlot: Tool.FireModeSlot = ammoSlots(FireMode.AmmoSlotIndex) - def AmmoSlots : List[Tool.FireModeSlot] = ammoSlots + def AmmoSlots: List[Tool.FireModeSlot] = ammoSlots - def MaxAmmoSlot : Int = ammoSlots.length + def MaxAmmoSlot: Int = ammoSlots.length - def Definition : ToolDefinition = toolDef + def Definition: ToolDefinition = toolDef - override def toString : String = Tool.toString(this) + override def toString: String = Tool.toString(this) } //AmmoType = Definition.AmmoTypes( (Definition.FireModes(fireModeIndex)).AmmoTypeIndices( (ammoSlots((Definition.FireModes(fireModeIndex)).AmmoSlotIndex)).AmmoTypeIndex) ).AmmoType object Tool { - def apply(toolDef : ToolDefinition) : Tool = { + def apply(toolDef: ToolDefinition): Tool = { new Tool(toolDef) } @@ -128,28 +130,34 @@ object Tool { * Use the `*Definition` that was provided to this object to initialize its fields and settings. * @param tool the `Tool` being initialized */ - def LoadDefinition(tool : Tool) : Unit = { - val tdef : ToolDefinition = tool.Definition - val maxSlot = tdef.FireModes.maxBy(fmode => fmode.AmmoSlotIndex).AmmoSlotIndex + def LoadDefinition(tool: Tool): Unit = { + val tdef: ToolDefinition = tool.Definition + val maxSlot = tdef.FireModes.maxBy(fmode => fmode.AmmoSlotIndex).AmmoSlotIndex tool.ammoSlots = buildFireModes(tdef, (0 to maxSlot).iterator, tdef.FireModes.toList) } - @tailrec private def buildFireModes(tdef : ToolDefinition, iter : Iterator[Int], fmodes : List[FireModeDefinition], list : List[FireModeSlot] = Nil) : List[FireModeSlot] = { - if(!iter.hasNext) { + @tailrec private def buildFireModes( + tdef: ToolDefinition, + iter: Iterator[Int], + fmodes: List[FireModeDefinition], + list: List[FireModeSlot] = Nil + ): List[FireModeSlot] = { + if (!iter.hasNext) { list - } - else { + } else { val index = iter.next fmodes.filter(fmode => fmode.AmmoSlotIndex == index) match { case fmode :: _ => buildFireModes(tdef, iter, fmodes, list :+ new FireModeSlot(tdef, fmode)) case Nil => - throw new IllegalArgumentException(s"tool ${tdef.Name} ammo slot #$index is missing a fire mode specification; do not skip") + throw new IllegalArgumentException( + s"tool ${tdef.Name} ammo slot #$index is missing a fire mode specification; do not skip" + ) } } } - def toString(obj : Tool) : String = { + def toString(obj: Tool): String = { s"${obj.Definition.Name} (mode=${obj.FireModeIndex}-${obj.AmmoType})(${obj.Magazine}/${obj.MaxMagazine})" } @@ -166,24 +174,26 @@ object Tool { * two exclusive groups of ammunition divided into 2 cycled types and 4 cycled types - * is an example of a weapon that benefits from this implementation. */ - class FireModeSlot(private val tdef : ToolDefinition, private val fdef : FireModeDefinition) { + class FireModeSlot(private val tdef: ToolDefinition, private val fdef: FireModeDefinition) { + /** * if this fire mode has multiple types of ammunition * this is the index of the fire mode's ammo List, not a reference to the tool's ammo List */ - private var ammoTypeIndex : Int = 0 + private var ammoTypeIndex: Int = 0 + /** a reference to the actual `AmmoBox` of this slot */ - private var box : AmmoBox = AmmoBox(AmmoDefinition, fdef.Magazine) - private var chamber = fdef.Chamber + private var box: AmmoBox = AmmoBox(AmmoDefinition, fdef.Magazine) + private var chamber = fdef.Chamber - def AmmoTypeIndex : Int = ammoTypeIndex + def AmmoTypeIndex: Int = ammoTypeIndex - def AmmoTypeIndex_=(index : Int) : Int = { + def AmmoTypeIndex_=(index: Int): Int = { ammoTypeIndex = index % fdef.AmmoTypeIndices.length AmmoTypeIndex } - private def AmmoDefinition : AmmoBoxDefinition = { + private def AmmoDefinition: AmmoBoxDefinition = { tdef.AmmoTypes(fdef.AmmoTypeIndices(ammoTypeIndex)) } @@ -193,40 +203,39 @@ object Tool { * Generally, convert from this index, to the index in the fire mode's ammunition list, to the index in the `ToolDefinition`'s ammunition list. * @return the `Ammo` type that should be loaded into the magazine right now */ - def AmmoType : Ammo.Value = AmmoDefinition.AmmoType + def AmmoType: Ammo.Value = AmmoDefinition.AmmoType - def AllAmmoTypes : List[Ammo.Value] = { + def AllAmmoTypes: List[Ammo.Value] = { fdef.AmmoTypeIndices.map(index => tdef.AmmoTypes(fdef.AmmoTypeIndices(index)).AmmoType).toList } - def Magazine : Int = box.Capacity + def Magazine: Int = box.Capacity - def Magazine_=(mag : Int) : Int = { + def Magazine_=(mag: Int): Int = { box.Capacity = mag Magazine } - def Chamber : Int = chamber + def Chamber: Int = chamber - def Chamber_=(chmbr : Int) : Int = { + def Chamber_=(chmbr: Int): Int = { chamber = math.min(math.max(0, chmbr), fdef.Chamber) Chamber } - def Box : AmmoBox = box + def Box: AmmoBox = box - def Box_=(toBox : AmmoBox) : Option[AmmoBox] = { - if(toBox.AmmoType == AmmoType) { + def Box_=(toBox: AmmoBox): Option[AmmoBox] = { + if (toBox.AmmoType == AmmoType) { box = toBox Some(Box) - } - else { + } else { None } } - def Tool : ToolDefinition = tdef + def Tool: ToolDefinition = tdef - def Definition : FireModeDefinition = fdef + def Definition: FireModeDefinition = fdef } } diff --git a/common/src/main/scala/net/psforever/objects/TrapDeployable.scala b/common/src/main/scala/net/psforever/objects/TrapDeployable.scala index 6998f15c..337e8483 100644 --- a/common/src/main/scala/net/psforever/objects/TrapDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/TrapDeployable.scala @@ -11,40 +11,39 @@ import net.psforever.objects.serverobject.damage.{Damageable, DamageableEntity} import net.psforever.objects.serverobject.repair.RepairableEntity import net.psforever.objects.vital.StandardResolutions -class TrapDeployable(cdef : TrapDeployableDefinition) extends ComplexDeployable(cdef) +class TrapDeployable(cdef: TrapDeployableDefinition) extends ComplexDeployable(cdef) -class TrapDeployableDefinition(objectId : Int) extends ComplexDeployableDefinition(objectId) { +class TrapDeployableDefinition(objectId: Int) extends ComplexDeployableDefinition(objectId) { Model = StandardResolutions.SimpleDeployables Packet = new TRAPConverter - override def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { obj.Actor = context.actorOf(Props(classOf[TrapDeployableControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } - override def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { SimpleDeployableDefinition.SimpleUninitialize(obj, context) } } object TrapDeployableDefinition { - def apply(dtype : DeployedItem.Value) : TrapDeployableDefinition = { + def apply(dtype: DeployedItem.Value): TrapDeployableDefinition = { new TrapDeployableDefinition(dtype.id) } } -class TrapDeployableControl(trap : TrapDeployable) extends Actor - with DamageableEntity - with RepairableEntity { +class TrapDeployableControl(trap: TrapDeployable) extends Actor with DamageableEntity with RepairableEntity { def DamageableObject = trap def RepairableObject = trap - def receive : Receive = takesDamage - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case _ => - } + def receive: Receive = + takesDamage + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case _ => + } - override protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) Deployables.AnnounceDestroyDeployable(trap, None) } diff --git a/common/src/main/scala/net/psforever/objects/TurretDeployable.scala b/common/src/main/scala/net/psforever/objects/TurretDeployable.scala index 6f3ff3bc..af3217ee 100644 --- a/common/src/main/scala/net/psforever/objects/TurretDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/TurretDeployable.scala @@ -17,19 +17,21 @@ import net.psforever.objects.serverobject.repair.RepairableWeaponTurret import net.psforever.objects.serverobject.turret.{TurretDefinition, WeaponTurret} import net.psforever.objects.vital.{StandardResolutions, StandardVehicleDamage, StandardVehicleResistance} -class TurretDeployable(tdef : TurretDeployableDefinition) extends ComplexDeployable(tdef) - with WeaponTurret - with JammableUnit - with Hackable { +class TurretDeployable(tdef: TurretDeployableDefinition) + extends ComplexDeployable(tdef) + with WeaponTurret + with JammableUnit + with Hackable { WeaponTurret.LoadDefinition(this) - def MountPoints : Map[Int, Int] = Definition.MountPoints.toMap + def MountPoints: Map[Int, Int] = Definition.MountPoints.toMap override def Definition = tdef } -class TurretDeployableDefinition(private val objectId : Int) extends ComplexDeployableDefinition(objectId) - with TurretDefinition { +class TurretDeployableDefinition(private val objectId: Int) + extends ComplexDeployableDefinition(objectId) + with TurretDefinition { Name = "turret_deployable" Packet = new SmallTurretConverter DamageUsing = StandardVehicleDamage @@ -37,51 +39,53 @@ class TurretDeployableDefinition(private val objectId : Int) extends ComplexDepl Model = StandardResolutions.FacilityTurrets //override to clarify inheritance conflict - override def MaxHealth : Int = super[ComplexDeployableDefinition].MaxHealth + override def MaxHealth: Int = super[ComplexDeployableDefinition].MaxHealth //override to clarify inheritance conflict - override def MaxHealth_=(max : Int) : Int = super[ComplexDeployableDefinition].MaxHealth_=(max) + override def MaxHealth_=(max: Int): Int = super[ComplexDeployableDefinition].MaxHealth_=(max) - override def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { obj.Actor = context.actorOf(Props(classOf[TurretControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } - override def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) = { + override def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext) = { SimpleDeployableDefinition.SimpleUninitialize(obj, context) } } object TurretDeployableDefinition { - def apply(dtype : DeployedItem.Value) : TurretDeployableDefinition = { + def apply(dtype: DeployedItem.Value): TurretDeployableDefinition = { new TurretDeployableDefinition(dtype.id) } } /** control actors */ -class TurretControl(turret : TurretDeployable) extends Actor - with FactionAffinityBehavior.Check - with JammableMountedWeapons //note: jammable status is reported as vehicle events, not local events - with MountableBehavior.TurretMount - with MountableBehavior.Dismount - with DamageableWeaponTurret - with RepairableWeaponTurret { - def MountableObject = turret - def JammableObject = turret - def FactionObject = turret +class TurretControl(turret: TurretDeployable) + extends Actor + with FactionAffinityBehavior.Check + with JammableMountedWeapons //note: jammable status is reported as vehicle events, not local events + with MountableBehavior.TurretMount + with MountableBehavior.Dismount + with DamageableWeaponTurret + with RepairableWeaponTurret { + def MountableObject = turret + def JammableObject = turret + def FactionObject = turret def DamageableObject = turret def RepairableObject = turret - def receive : Receive = checkBehavior - .orElse(jammableBehavior) - .orElse(mountBehavior) - .orElse(dismountBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case _ => ; - } + def receive: Receive = + checkBehavior + .orElse(jammableBehavior) + .orElse(mountBehavior) + .orElse(dismountBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case _ => ; + } - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) Deployables.AnnounceDestroyDeployable(turret, None) } diff --git a/common/src/main/scala/net/psforever/objects/Vehicle.scala b/common/src/main/scala/net/psforever/objects/Vehicle.scala index daef0288..b08900a4 100644 --- a/common/src/main/scala/net/psforever/objects/Vehicle.scala +++ b/common/src/main/scala/net/psforever/objects/Vehicle.scala @@ -66,45 +66,48 @@ import scala.util.{Success, Try} * stores and unloads pertinent information about the `Vehicle`'s configuration; * used in the initialization process (`loadVehicleDefinition`) */ -class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner - with Hackable - with FactionAffinity - with Mountable - with MountedWeapons - with Deployment - with Vitality - with OwnableByPlayer - with StandardResistanceProfile - with JammableUnit - with Container { - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - private var shields : Int = 0 - private var decal : Int = 0 - private var trunkAccess : Option[PlanetSideGUID] = None - private var jammered : Boolean = false - private var cloaked : Boolean = false - private var flying : Boolean = false - private var ntuCapacitor : Int = 0 - private var capacitor : Int = 0 +class Vehicle(private val vehicleDef: VehicleDefinition) + extends AmenityOwner + with Hackable + with FactionAffinity + with Mountable + with MountedWeapons + with Deployment + with Vitality + with OwnableByPlayer + with StandardResistanceProfile + with JammableUnit + with Container { + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + private var shields: Int = 0 + private var decal: Int = 0 + private var trunkAccess: Option[PlanetSideGUID] = None + private var jammered: Boolean = false + private var cloaked: Boolean = false + private var flying: Boolean = false + private var ntuCapacitor: Int = 0 + private var capacitor: Int = 0 + /** * Permissions control who gets to access different parts of the vehicle; * the groups are Driver (seat), Gunner (seats), Passenger (seats), and the Trunk */ - private val groupPermissions : Array[VehicleLockState.Value] = Array(VehicleLockState.Locked, VehicleLockState.Empire, VehicleLockState.Empire, VehicleLockState.Locked) - private var seats : Map[Int, Seat] = Map.empty - private var cargoHolds : Map[Int, Cargo] = Map.empty - private var weapons : Map[Int, EquipmentSlot] = Map.empty - private var utilities : Map[Int, Utility] = Map() - private val trunk : GridInventory = GridInventory() + private val groupPermissions: Array[VehicleLockState.Value] = + Array(VehicleLockState.Locked, VehicleLockState.Empire, VehicleLockState.Empire, VehicleLockState.Locked) + private var seats: Map[Int, Seat] = Map.empty + private var cargoHolds: Map[Int, Cargo] = Map.empty + private var weapons: Map[Int, EquipmentSlot] = Map.empty + private var utilities: Map[Int, Utility] = Map() + private val trunk: GridInventory = GridInventory() /** * Records the GUID of the cargo vehicle (galaxy/lodestar) this vehicle is stored in for DismountVehicleCargoMsg use * DismountVehicleCargoMsg only passes the player_guid and this vehicle's guid */ - private var mountedIn : Option[PlanetSideGUID] = None + private var mountedIn: Option[PlanetSideGUID] = None - private var vehicleGatingManifest : Option[VehicleManifest] = None - private var previousVehicleGatingManifest : Option[VehicleManifest] = None + private var vehicleGatingManifest: Option[VehicleManifest] = None + private var previousVehicleGatingManifest: Option[VehicleManifest] = None //init LoadDefinition() @@ -113,15 +116,15 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * Override this method to perform any special setup that is not standardized to `*Definition`. * @see `Vehicle.LoadDefinition` */ - protected def LoadDefinition() : Unit = { + protected def LoadDefinition(): Unit = { Vehicle.LoadDefinition(this) } - def Faction : PlanetSideEmpire.Value = { + def Faction: PlanetSideEmpire.Value = { this.faction } - override def Faction_=(faction : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { + override def Faction_=(faction: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { this.faction = faction faction } @@ -129,13 +132,13 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner /** How long it takes to jack the vehicle in seconds, based on the hacker's certification level */ def JackingDuration: Array[Int] = Definition.JackingDuration - def MountedIn : Option[PlanetSideGUID] = { + def MountedIn: Option[PlanetSideGUID] = { this.mountedIn } - def MountedIn_=(cargo_vehicle_guid : PlanetSideGUID) : Option[PlanetSideGUID] = MountedIn_=(Some(cargo_vehicle_guid)) + def MountedIn_=(cargo_vehicle_guid: PlanetSideGUID): Option[PlanetSideGUID] = MountedIn_=(Some(cargo_vehicle_guid)) - def MountedIn_=(cargo_vehicle_guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def MountedIn_=(cargo_vehicle_guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { cargo_vehicle_guid match { case Some(_) => this.mountedIn = cargo_vehicle_guid @@ -145,61 +148,61 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner MountedIn } - override def Health_=(assignHealth : Int) : Int = { + override def Health_=(assignHealth: Int): Int = { //TODO should vehicle class enforce this? - if(!Destroyed) { + if (!Destroyed) { super.Health_=(assignHealth) } Health } - def Shields : Int = { + def Shields: Int = { shields } - def Shields_=(strength : Int) : Int = { + def Shields_=(strength: Int): Int = { shields = math.min(math.max(0, strength), MaxShields) Shields } - def MaxShields : Int = { + def MaxShields: Int = { Definition.MaxShields } - def Decal : Int = { + def Decal: Int = { decal } - def Decal_=(logo : Int) : Int = { + def Decal_=(logo: Int): Int = { decal = logo Decal } - def Jammered : Boolean = jammered + def Jammered: Boolean = jammered - def Jammered_=(jamState : Boolean) : Boolean = { + def Jammered_=(jamState: Boolean): Boolean = { jammered = jamState Jammered } - def Cloaked : Boolean = cloaked + def Cloaked: Boolean = cloaked - def Cloaked_=(isCloaked : Boolean) : Boolean = { + def Cloaked_=(isCloaked: Boolean): Boolean = { cloaked = isCloaked Cloaked } - def Flying : Boolean = flying + def Flying: Boolean = flying - def Flying_=(isFlying : Boolean) : Boolean = { + def Flying_=(isFlying: Boolean): Boolean = { flying = isFlying Flying } - def NtuCapacitor : Int = ntuCapacitor + def NtuCapacitor: Int = ntuCapacitor - def NtuCapacitor_=(value: Int) : Int = { - if(value > Definition.MaxNtuCapacitor) { + def NtuCapacitor_=(value: Int): Int = { + if (value > Definition.MaxNtuCapacitor) { ntuCapacitor = Definition.MaxNtuCapacitor } else if (value < 0) { ntuCapacitor = 0 @@ -218,9 +221,9 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner } def Capacitor : Int = capacitor - - def Capacitor_=(value: Int) : Int = { - if(value > Definition.MaxCapacitor) { + + def Capacitor_=(value: Int): Int = { + if (value > Definition.MaxCapacitor) { capacitor = Definition.MaxCapacitor } else if (value < 0) { capacitor = 0 @@ -235,18 +238,18 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param mountPoint an index representing the seat position / mounting point * @return a seat number, or `None` */ - def GetSeatFromMountPoint(mountPoint : Int) : Option[Int] = { + def GetSeatFromMountPoint(mountPoint: Int): Option[Int] = { Definition.MountPoints.get(mountPoint) } - def MountPoints : Map[Int, Int] = Definition.MountPoints.toMap + def MountPoints: Map[Int, Int] = Definition.MountPoints.toMap /** * What are the access permissions for a position on this vehicle, seats or trunk? * @param group the group index * @return what sort of access permission exist for this group */ - def PermissionGroup(group : Int) : Option[VehicleLockState.Value] = { + def PermissionGroup(group: Int): Option[VehicleLockState.Value] = { reindexPermissionsGroup(group) match { case Some(index) => Some(groupPermissions(index)) @@ -262,16 +265,17 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @return the new access permission for this group; * `None`, if the group does not exist or the level of permission was not changed */ - def PermissionGroup(group : Int, level : Long) : Option[VehicleLockState.Value] = { + def PermissionGroup(group: Int, level: Long): Option[VehicleLockState.Value] = { reindexPermissionsGroup(group) match { case Some(index) => val current = groupPermissions(index) - val next = try { VehicleLockState(level.toInt) } catch { case _ : Exception => groupPermissions(index) } - if(current != next) { + val next = + try { VehicleLockState(level.toInt) } + catch { case _: Exception => groupPermissions(index) } + if (current != next) { groupPermissions(index) = next PermissionGroup(index) - } - else { + } else { None } case None => @@ -285,15 +289,14 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param group the group index * @return the modified group index */ - private def reindexPermissionsGroup(group : Int) : Option[Int] = if(group > 9 && group < 14) { - Some(group - 10) - } - else if(group > -1 && group < 4) { - Some(group) - } - else { - None - } + private def reindexPermissionsGroup(group: Int): Option[Int] = + if (group > 9 && group < 14) { + Some(group - 10) + } else if (group > -1 && group < 4) { + Some(group) + } else { + None + } /** * Get the seat at the index. @@ -301,37 +304,34 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param seatNumber an index representing the seat position / mounting point * @return a `Seat`, or `None` */ - def Seat(seatNumber : Int) : Option[Seat] = { - if(seatNumber >= 0 && seatNumber < this.seats.size) { + def Seat(seatNumber: Int): Option[Seat] = { + if (seatNumber >= 0 && seatNumber < this.seats.size) { this.seats.get(seatNumber) - } - else { + } else { None } } - def Seats : Map[Int, Seat] = { + def Seats: Map[Int, Seat] = { seats } - def CargoHold(cargoNumber : Int) : Option[Cargo] = { - if(cargoNumber >= 0) { + def CargoHold(cargoNumber: Int): Option[Cargo] = { + if (cargoNumber >= 0) { this.cargoHolds.get(cargoNumber) - } - else { + } else { None } } - def CargoHolds : Map[Int, Cargo] = { + def CargoHolds: Map[Int, Cargo] = { cargoHolds } - def SeatPermissionGroup(seatNumber : Int) : Option[AccessPermissionGroup.Value] = { - if(seatNumber == 0) { + def SeatPermissionGroup(seatNumber: Int): Option[AccessPermissionGroup.Value] = { + if (seatNumber == 0) { Some(AccessPermissionGroup.Driver) - } - else { + } else { Seat(seatNumber) match { case Some(seat) => seat.ControlledWeapon match { @@ -351,14 +351,14 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner } } - def Weapons : Map[Int, EquipmentSlot] = weapons + def Weapons: Map[Int, EquipmentSlot] = weapons /** * Get the weapon at the index. * @param wepNumber an index representing the seat position / mounting point * @return a weapon, or `None` */ - def ControlledWeapon(wepNumber : Int) : Option[Equipment] = { + def ControlledWeapon(wepNumber: Int): Option[Equipment] = { weapons.get(wepNumber) match { case Some(mount) => mount.Equipment @@ -372,45 +372,42 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param player the player * @return a seat number, or `None` if the `player` is not actually seated in this vehicle */ - def PassengerInSeat(player : Player) : Option[Int] = recursivePassengerInSeat(seats.iterator, player) + def PassengerInSeat(player: Player): Option[Int] = recursivePassengerInSeat(seats.iterator, player) - @tailrec private def recursivePassengerInSeat(iter : Iterator[(Int, Seat)], player : Player) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursivePassengerInSeat(iter: Iterator[(Int, Seat)], player: Player): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val (seatNumber, seat) = iter.next - if(seat.Occupant.contains(player)) { + if (seat.Occupant.contains(player)) { Some(seatNumber) - } - else { + } else { recursivePassengerInSeat(iter, player) } } } - def Utilities : Map[Int, Utility] = utilities + def Utilities: Map[Int, Utility] = utilities /** * Get a reference to a certain `Utility` attached to this `Vehicle`. * @param utilNumber the attachment number of the `Utility` * @return the `Utility` or `None` (if invalid) */ - def Utility(utilNumber : Int) : Option[PlanetSideServerObject] = { - if(utilNumber >= 0 && utilNumber < this.utilities.size) { + def Utility(utilNumber: Int): Option[PlanetSideServerObject] = { + if (utilNumber >= 0 && utilNumber < this.utilities.size) { this.utilities.get(utilNumber) match { case Some(util) => Some(util()) case None => None } - } - else { + } else { None } } - def Utility(utilType : UtilityType.Value) : Option[PlanetSideServerObject] = { + def Utility(utilType: UtilityType.Value): Option[PlanetSideServerObject] = { utilities.values.find(_.UtilType == utilType) match { case Some(util) => Some(util()) @@ -423,35 +420,37 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner override def UndeployTime = Definition.UndeployTime - def Inventory : GridInventory = trunk + def Inventory: GridInventory = trunk - def VisibleSlots : Set[Int] = weapons.keySet + def VisibleSlots: Set[Int] = weapons.keySet - override def Slot(slotNum : Int) : EquipmentSlot = { - weapons.get(slotNum) -// .orElse(utilities.get(slotNum) match { -// case Some(_) => -// //TODO what do now? -// None -// case None => ; -// None -// }) - .orElse(Some(Inventory.Slot(slotNum))).get + override def Slot(slotNum: Int): EquipmentSlot = { + weapons + .get(slotNum) + // .orElse(utilities.get(slotNum) match { + // case Some(_) => + // //TODO what do now? + // None + // case None => ; + // None + // }) + .orElse(Some(Inventory.Slot(slotNum))) + .get } - override def Find(guid : PlanetSideGUID) : Option[Int] = { - weapons.find({ case (_, obj) => - obj.Equipment match { - case Some(item) => - if(item.HasGUID && item.GUID == guid) { - true - } - else { + override def Find(guid: PlanetSideGUID): Option[Int] = { + weapons.find({ + case (_, obj) => + obj.Equipment match { + case Some(item) => + if (item.HasGUID && item.GUID == guid) { + true + } else { + false + } + case None => false - } - case None => - false - } + } }) match { case Some((index, _)) => Some(index) @@ -460,7 +459,7 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner } } - override def Collisions(dest : Int, width : Int, height : Int) : Try[List[InventoryItem]] = { + override def Collisions(dest: Int, width: Int, height: Int): Try[List[InventoryItem]] = { weapons.get(dest) match { case Some(slot) => slot.Equipment match { @@ -478,13 +477,13 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * A reference to the `Vehicle` `Trunk` space. * @return this `Vehicle` `Trunk` */ - def Trunk : GridInventory = { + def Trunk: GridInventory = { this.trunk } - def AccessingTrunk : Option[PlanetSideGUID] = trunkAccess + def AccessingTrunk: Option[PlanetSideGUID] = trunkAccess - def AccessingTrunk_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = { + def AccessingTrunk_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = { AccessingTrunk = Some(guid) } @@ -494,12 +493,12 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param guid the player who wishes to access the trunk * @return the player who is currently allowed to access the trunk */ - def AccessingTrunk_=(guid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def AccessingTrunk_=(guid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { guid match { case None => trunkAccess = None case Some(player) => - if(trunkAccess.isEmpty) { + if (trunkAccess.isEmpty) { trunkAccess = Some(player) } } @@ -511,8 +510,8 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * @param player a player attempting to access this `Trunk` * @return `true`, if the `player` is permitted access; `false`, otherwise */ - def CanAccessTrunk(player : Player) : Boolean = { - if(trunkAccess.isEmpty || trunkAccess.contains(player.GUID)) { + def CanAccessTrunk(player: Player): Boolean = { + if (trunkAccess.isEmpty || trunkAccess.contains(player.GUID)) { groupPermissions(3) match { case VehicleLockState.Locked => //only the owner Owner.isEmpty || (Owner.isDefined && player.GUID == Owner.get) @@ -521,8 +520,7 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner case VehicleLockState.Empire => //anyone of the owner's faction faction == player.Faction } - } - else { + } else { false } } @@ -531,18 +529,18 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * Check access to the `Trunk`. * @return the current access value for the `Vehicle` `Trunk` */ - def TrunkLockState : VehicleLockState.Value = groupPermissions(3) + def TrunkLockState: VehicleLockState.Value = groupPermissions(3) /** * Trunk locations are stored as the orientation zero point being to the East. We need to convert that to a North = 0 orientation before returning the location * @return A Vector3 of the current trunk location, orientated with North as the zero point */ - def TrunkLocation : Vector3 = { + def TrunkLocation: Vector3 = { val rotationRadians = -math.toRadians(Orientation.z - 90f).toFloat Vector3.PlanarRotateAroundPoint(Position + Definition.TrunkLocation, Position, rotationRadians) } - def PrepareGatingManifest() : VehicleManifest = { + def PrepareGatingManifest(): VehicleManifest = { val manifest = VehicleManifest(this) seats.collect { case (index, seat) if index > 0 => seat.Occupant = None } vehicleGatingManifest = Some(manifest) @@ -550,14 +548,14 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner manifest } - def PublishGatingManifest() : Option[VehicleManifest] = { + def PublishGatingManifest(): Option[VehicleManifest] = { val out = vehicleGatingManifest previousVehicleGatingManifest = vehicleGatingManifest vehicleGatingManifest = None out } - def PreviousGatingManifest() : Option[VehicleManifest] = previousVehicleGatingManifest + def PreviousGatingManifest(): Option[VehicleManifest] = previousVehicleGatingManifest def DamageModel = Definition.asInstanceOf[DamageResistanceModel] @@ -565,30 +563,32 @@ class Vehicle(private val vehicleDef : VehicleDefinition) extends AmenityOwner * This is the definition entry that is used to store and unload pertinent information about the `Vehicle`. * @return the vehicle's definition entry */ - def Definition : VehicleDefinition = vehicleDef + def Definition: VehicleDefinition = vehicleDef def canEqual(other: Any): Boolean = other.isInstanceOf[Vehicle] - override def equals(other : Any) : Boolean = other match { - case that: Vehicle => - (that canEqual this) && - hashCode() == that.hashCode() - case _ => - false - } + override def equals(other: Any): Boolean = + other match { + case that: Vehicle => + (that canEqual this) && + hashCode() == that.hashCode() + case _ => + false + } - override def hashCode() : Int = Actor.hashCode() + override def hashCode(): Int = Actor.hashCode() /** * Override the string representation to provide additional information. * @return the string output */ - override def toString : String = { + override def toString: String = { Vehicle.toString(this) } } object Vehicle { + /** * A basic `Trait` connecting all of the actionable `Vehicle` response messages. */ @@ -599,7 +599,7 @@ object Vehicle { * @param player the player who sent this request message * @param response the result of the processed request */ - final case class VehicleMessages(player : Player, response : Exchange) + final case class VehicleMessages(player: Player, response: Exchange) /** * Initiate vehicle deconstruction. @@ -607,7 +607,7 @@ object Vehicle { * @param time the delay before deconstruction should initiate; * should initiate instantly when `None` */ - final case class Deconstruct(time : Option[FiniteDuration] = None) + final case class Deconstruct(time: Option[FiniteDuration] = None) /** * The `Vehicle` will resume previous unresponsiveness to player activity. @@ -620,23 +620,23 @@ object Vehicle { * @see `FacilityBenefitShieldChargeRequestMessage` * @param amount the number of points to charge */ - final case class ChargeShields(amount : Int) + final case class ChargeShields(amount: Int) /** * Following a successful shield charge tick, display the results of the update. * @see `FacilityBenefitShieldChargeRequestMessage` * @param vehicle the updated vehicle */ - final case class UpdateShieldsCharge(vehicle : Vehicle) + final case class UpdateShieldsCharge(vehicle: Vehicle) /** * Change a vehicle's internal ownership property to match that of the target player. * @param player the person who will own the vehicle, or `None` if the vehicle will go unowned */ - final case class Ownership(player : Option[Player]) + final case class Ownership(player: Option[Player]) object Ownership { - def apply(player : Player) : Ownership = Ownership(Some(player)) + def apply(player: Player): Ownership = Ownership(Some(player)) } /** @@ -644,7 +644,7 @@ object Vehicle { * @param vehicleDef the vehicle's definition entry * @return a `Vehicle` object */ - def apply(vehicleDef : VehicleDefinition) : Vehicle = { + def apply(vehicleDef: VehicleDefinition): Vehicle = { new Vehicle(vehicleDef) } @@ -652,8 +652,8 @@ object Vehicle { * Given a `Map` of `Utility` objects, only return the objects with a positive or zero-index position. * @return a map of applicable utilities */ - def EquipmentUtilities(utilities : Map[Int, Utility]) : Map[Int, Utility] = { - utilities.filter({ case(index : Int, _ : Utility) => index > -1 }) + def EquipmentUtilities(utilities: Map[Int, Utility]): Map[Int, Utility] = { + utilities.filter({ case (index: Int, _: Utility) => index > -1 }) } /** @@ -661,30 +661,35 @@ object Vehicle { * @param vehicle the `Vehicle` being initialized * @see `{object}.LoadDefinition` */ - def LoadDefinition(vehicle : Vehicle) : Vehicle = { - val vdef : VehicleDefinition = vehicle.Definition + def LoadDefinition(vehicle: Vehicle): Vehicle = { + val vdef: VehicleDefinition = vehicle.Definition //general stuff vehicle.Health = vdef.DefaultHealth //create weapons - vehicle.weapons = vdef.Weapons.map({case (num, definition) => - val slot = EquipmentSlot(EquipmentSize.VehicleWeapon) - slot.Equipment = Tool(definition) - num -> slot - }).toMap + vehicle.weapons = vdef.Weapons + .map({ + case (num, definition) => + val slot = EquipmentSlot(EquipmentSize.VehicleWeapon) + slot.Equipment = Tool(definition) + num -> slot + }) + .toMap //create seats - vehicle.seats = vdef.Seats.map({ case(num, definition) => num -> Seat(definition)}).toMap + vehicle.seats = vdef.Seats.map({ case (num, definition) => num -> Seat(definition) }).toMap // create cargo holds - vehicle.cargoHolds = vdef.Cargo.map({ case(num, definition) => num -> Cargo(definition)}).toMap + vehicle.cargoHolds = vdef.Cargo.map({ case (num, definition) => num -> Cargo(definition) }).toMap //create utilities - vehicle.utilities = vdef.Utilities.map({ - case(num, util) => - val obj = Utility(util, vehicle) - val utilObj = obj() - vehicle.Amenities = utilObj - utilObj.LocationOffset = vdef.UtilityOffset.get(num) - num -> obj - }).toMap + vehicle.utilities = vdef.Utilities + .map({ + case (num, util) => + val obj = Utility(util, vehicle) + val utilObj = obj() + vehicle.Amenities = utilObj + utilObj.LocationOffset = vdef.UtilityOffset.get(num) + num -> obj + }) + .toMap //trunk vdef.TrunkSize match { case InventoryTile.None => ; @@ -699,7 +704,7 @@ object Vehicle { * Provide a fixed string representation. * @return the string output */ - def toString(obj : Vehicle) : String = { + def toString(obj: Vehicle): String = { val occupancy = obj.Seats.values.count(seat => seat.isOccupied) s"${obj.Definition.Name}, owned by ${obj.Owner}: (${obj.Health}/${obj.MaxHealth})(${obj.Shields}/${obj.MaxShields}) ($occupancy)" } diff --git a/common/src/main/scala/net/psforever/objects/Vehicles.scala b/common/src/main/scala/net/psforever/objects/Vehicles.scala index 2ae6d910..935c4b01 100644 --- a/common/src/main/scala/net/psforever/objects/Vehicles.scala +++ b/common/src/main/scala/net/psforever/objects/Vehicles.scala @@ -20,7 +20,7 @@ object Vehicles { * @param player na * @return na */ - def Own(vehicle : Vehicle, player : Player) : Option[Vehicle] = Own(vehicle, Some(player)) + def Own(vehicle: Vehicle, player: Player): Option[Vehicle] = Own(vehicle, Some(player)) /** * na @@ -28,12 +28,15 @@ object Vehicles { * @param playerOpt na * @return na */ - def Own(vehicle : Vehicle, playerOpt : Option[Player]) : Option[Vehicle] = { + def Own(vehicle: Vehicle, playerOpt: Option[Player]): Option[Vehicle] = { playerOpt match { case Some(tplayer) => tplayer.VehicleOwned = vehicle.GUID vehicle.AssignOwnership(playerOpt) - vehicle.Zone.VehicleEvents ! VehicleServiceMessage(vehicle.Zone.Id, VehicleAction.Ownership(tplayer.GUID, vehicle.GUID)) + vehicle.Zone.VehicleEvents ! VehicleServiceMessage( + vehicle.Zone.Id, + VehicleAction.Ownership(tplayer.GUID, vehicle.GUID) + ) Vehicles.ReloadAccessPermissions(vehicle, tplayer.Name) Some(vehicle) case None => @@ -48,26 +51,31 @@ object Vehicles { * @return the vehicle, if it had a previous owner; * `None`, otherwise */ - def Disown(guid : PlanetSideGUID, vehicle : Vehicle) : Option[Vehicle] = vehicle.Zone.GUID(vehicle.Owner) match { - case Some(player : Player) => - if(player.VehicleOwned.contains(guid)) { - player.VehicleOwned = None - vehicle.Zone.VehicleEvents ! VehicleServiceMessage(player.Name, VehicleAction.Ownership(player.GUID, PlanetSideGUID(0))) - } - vehicle.AssignOwnership(None) - val empire = VehicleLockState.Empire.id - val factionChannel = s"${vehicle.Faction}" - (0 to 2).foreach(group => { - vehicle.PermissionGroup(group, empire) - vehicle.Zone.VehicleEvents ! VehicleServiceMessage(factionChannel, - VehicleAction.SeatPermissions(Service.defaultPlayerGUID, guid, group, empire) - ) - }) - ReloadAccessPermissions(vehicle, player.Name) - Some(vehicle) - case _ => - None - } + def Disown(guid: PlanetSideGUID, vehicle: Vehicle): Option[Vehicle] = + vehicle.Zone.GUID(vehicle.Owner) match { + case Some(player: Player) => + if (player.VehicleOwned.contains(guid)) { + player.VehicleOwned = None + vehicle.Zone.VehicleEvents ! VehicleServiceMessage( + player.Name, + VehicleAction.Ownership(player.GUID, PlanetSideGUID(0)) + ) + } + vehicle.AssignOwnership(None) + val empire = VehicleLockState.Empire.id + val factionChannel = s"${vehicle.Faction}" + (0 to 2).foreach(group => { + vehicle.PermissionGroup(group, empire) + vehicle.Zone.VehicleEvents ! VehicleServiceMessage( + factionChannel, + VehicleAction.SeatPermissions(Service.defaultPlayerGUID, guid, group, empire) + ) + }) + ReloadAccessPermissions(vehicle, player.Name) + Some(vehicle) + case _ => + None + } /** * Disassociate a player from a vehicle that he owns. @@ -76,7 +84,8 @@ object Vehicles { * This is the player side of vehicle ownership removal. * @param player the player */ - def Disown(player : Player, zone : Zone) : Option[Vehicle] = Disown(player, Some(zone)) + def Disown(player: Player, zone: Zone): Option[Vehicle] = Disown(player, Some(zone)) + /** * Disassociate a player from a vehicle that he owns. * The vehicle must exist in the game world on the specified continent. @@ -84,12 +93,12 @@ object Vehicles { * This is the player side of vehicle ownership removal. * @param player the player */ - def Disown(player : Player, zoneOpt : Option[Zone]) : Option[Vehicle] = { + def Disown(player: Player, zoneOpt: Option[Zone]): Option[Vehicle] = { player.VehicleOwned match { case Some(vehicle_guid) => player.VehicleOwned = None zoneOpt.getOrElse(player.Zone).GUID(vehicle_guid) match { - case Some(vehicle : Vehicle) => + case Some(vehicle: Vehicle) => Disown(player, vehicle) case _ => None @@ -106,21 +115,23 @@ object Vehicles { * This is the vehicle side of vehicle ownership removal. * @param player the player */ - def Disown(player : Player, vehicle : Vehicle) : Option[Vehicle] = { + def Disown(player: Player, vehicle: Vehicle): Option[Vehicle] = { val pguid = player.GUID - if(vehicle.Owner.contains(pguid)) { + if (vehicle.Owner.contains(pguid)) { vehicle.AssignOwnership(None) vehicle.Zone.VehicleEvents ! VehicleServiceMessage(player.Name, VehicleAction.Ownership(pguid, PlanetSideGUID(0))) - val vguid = vehicle.GUID + val vguid = vehicle.GUID val empire = VehicleLockState.Empire.id (0 to 2).foreach(group => { vehicle.PermissionGroup(group, empire) - vehicle.Zone.VehicleEvents ! VehicleServiceMessage(s"${vehicle.Faction}", VehicleAction.SeatPermissions(pguid, vguid, group, empire)) + vehicle.Zone.VehicleEvents ! VehicleServiceMessage( + s"${vehicle.Faction}", + VehicleAction.SeatPermissions(pguid, vguid, group, empire) + ) }) ReloadAccessPermissions(vehicle, player.Name) Some(vehicle) - } - else { + } else { None } } @@ -134,7 +145,7 @@ object Vehicles { * The most important examples include either the player or the vehicle itself spawning in for the first time. * @param vehicle the `Vehicle` */ - def ReloadAccessPermissions(vehicle : Vehicle, toChannel : String) : Unit = { + def ReloadAccessPermissions(vehicle: Vehicle, toChannel: String): Unit = { val vehicle_guid = vehicle.GUID (0 to 3).foreach(group => { vehicle.Zone.AvatarEvents ! AvatarServiceMessage( @@ -170,16 +181,16 @@ object Vehicles { * @return `true`, if all passengers of the vehicle, and its cargo vehicles, etc., have reported being in the same zone; * `false`, if no manifest entry exists, or if the vehicle is moving to the same zone */ - def AllGatedOccupantsInSameZone(vehicle : Vehicle) : Boolean = { + def AllGatedOccupantsInSameZone(vehicle: Vehicle): Boolean = { val vzone = vehicle.Zone vehicle.PreviousGatingManifest() match { case Some(manifest) if vzone != manifest.origin => - val manifestPassengers = manifest.passengers.collect { case (name, _) => name } :+ manifest.driverName + val manifestPassengers = manifest.passengers.collect { case (name, _) => name } :+ manifest.driverName val manifestPassengerResults = manifestPassengers.map { name => vzone.Players.exists(_.name.equals(name)) } manifestPassengerResults.forall(_ == true) && - vehicle.CargoHolds.values - .collect { case hold if hold.isOccupied => AllGatedOccupantsInSameZone(hold.Occupant.get) } - .forall(_ == true) + vehicle.CargoHolds.values + .collect { case hold if hold.isOccupied => AllGatedOccupantsInSameZone(hold.Occupant.get) } + .forall(_ == true) case _ => false } @@ -192,11 +203,10 @@ object Vehicles { * @return the orientation as an `Integer` value; * `0` for almost all cases */ - def CargoOrientation(vehicle : Vehicle) : Int = { - if(vehicle.Definition == GlobalDefinitions.router) { + def CargoOrientation(vehicle: Vehicle): Int = { + if (vehicle.Definition == GlobalDefinitions.router) { 1 - } - else { + } else { 0 } } @@ -208,17 +218,22 @@ object Vehicles { * @param hacker the one whoi performed the hack and will inherit ownership of the target vehicle * @param unk na; used by `HackMessage` as `unk5` */ - def FinishHackingVehicle(target : Vehicle, hacker : Player, unk : Long)(): Unit = { + def FinishHackingVehicle(target: Vehicle, hacker: Player, unk: Long)(): Unit = { log.info(s"Vehicle guid: ${target.GUID} has been jacked") - import scala.concurrent.duration._ val zone = target.Zone // Forcefully dismount any cargo - target.CargoHolds.values.foreach(cargoHold => { + target.CargoHolds.values.foreach(cargoHold => { cargoHold.Occupant match { - case Some(cargo : Vehicle) => { + case Some(cargo: Vehicle) => { cargo.Seats(0).Occupant match { case Some(cargoDriver: Player) => - CargoBehavior.HandleVehicleCargoDismount(target.Zone, cargo.GUID, bailed = target.Flying, requestedByPassenger = false, kicked = true ) + CargoBehavior.HandleVehicleCargoDismount( + target.Zone, + cargo.GUID, + bailed = target.Flying, + requestedByPassenger = false, + kicked = true + ) case None => log.error("FinishHackingVehicle: vehicle in cargo hold missing driver") CargoBehavior.HandleVehicleCargoDismount(cargo.GUID, cargo, target.GUID, target, false, false, true) @@ -233,20 +248,23 @@ object Vehicles { case Some(tplayer) => seat.Occupant = None tplayer.VehicleSeated = None - if(tplayer.HasGUID) { - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.KickPassenger(tplayer.GUID, 4, unk2 = false, target.GUID)) + if (tplayer.HasGUID) { + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.KickPassenger(tplayer.GUID, 4, unk2 = false, target.GUID) + ) } case None => ; } }) // If the vehicle can fly and is flying deconstruct it, and well played to whomever managed to hack a plane in mid air. I'm impressed. - if(target.Definition.CanFly && target.Flying) { + if (target.Definition.CanFly && target.Flying) { // todo: Should this force the vehicle to land in the same way as when a pilot bails with passengers on board? target.Actor ! Vehicle.Deconstruct() } else { // Otherwise handle ownership transfer as normal // Remove ownership of our current vehicle, if we have one hacker.VehicleOwned match { - case Some(guid : PlanetSideGUID) => + case Some(guid: PlanetSideGUID) => zone.GUID(guid) match { case Some(vehicle: Vehicle) => Vehicles.Disown(hacker, vehicle) @@ -270,9 +288,15 @@ object Vehicles { Vehicles.Own(target, hacker) //todo: Send HackMessage -> HackCleared to vehicle? can be found in packet captures. Not sure if necessary. // And broadcast the faction change to other clients - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.SetEmpire(Service.defaultPlayerGUID, target.GUID, hacker.Faction)) + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.SetEmpire(Service.defaultPlayerGUID, target.GUID, hacker.Faction) + ) } - zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.TriggerSound(hacker.GUID, TriggeredSound.HackVehicle, target.Position, 30, 0.49803925f)) + zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.TriggerSound(hacker.GUID, TriggeredSound.HackVehicle, target.Position, 30, 0.49803925f) + ) // Clean up after specific vehicles, e.g. remove router telepads // If AMS is deployed, swap it to the new faction target.Definition match { diff --git a/common/src/main/scala/net/psforever/objects/avatar/Avatars.scala b/common/src/main/scala/net/psforever/objects/avatar/Avatars.scala index e266ed85..1837717d 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/Avatars.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/Avatars.scala @@ -6,14 +6,14 @@ package net.psforever.objects.avatar * #121 is the most important. */ object Avatars extends Enumeration { - final val avatar = Value(121) - final val avatar_bot = Value(122) - final val avatar_bot_agile = Value(123) - final val avatar_bot_agile_no_weapon = Value(124) - final val avatar_bot_max = Value(125) - final val avatar_bot_max_no_weapon = Value(126) - final val avatar_bot_reinforced = Value(127) + final val avatar = Value(121) + final val avatar_bot = Value(122) + final val avatar_bot_agile = Value(123) + final val avatar_bot_agile_no_weapon = Value(124) + final val avatar_bot_max = Value(125) + final val avatar_bot_max_no_weapon = Value(126) + final val avatar_bot_reinforced = Value(127) final val avatar_bot_reinforced_no_weapon = Value(128) - final val avatar_bot_standard = Value(129) - final val avatar_bot_standard_no_weapon = Value(130) + final val avatar_bot_standard = Value(129) + final val avatar_bot_standard_no_weapon = Value(130) } diff --git a/common/src/main/scala/net/psforever/objects/avatar/Certification.scala b/common/src/main/scala/net/psforever/objects/avatar/Certification.scala index f783108a..e4da9c47 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/Certification.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/Certification.scala @@ -7,13 +7,14 @@ import scala.collection.mutable object Certification { object Dependencies { + /** * Find the certifications that are immediately dependent on the target certification. * (For `A`, find all `B` that are `B ⇒ A`.) * @param certification the target certification * @return all connected certifications */ - def From(certification : CertificationType.Value) : Set[CertificationType.Value] = dependencies(certification).toSet + def From(certification: CertificationType.Value): Set[CertificationType.Value] = dependencies(certification).toSet /** * Find all certifications that are dependent on the target certification. @@ -21,14 +22,13 @@ object Certification { * @param certification the target certification * @return all connected certifications */ - def FromAll(certification : CertificationType.Value) : Set[CertificationType.Value] = { - var available : List[CertificationType.Value] = List(certification) - var allocated : mutable.ListBuffer[CertificationType.Value] = mutable.ListBuffer.empty[CertificationType.Value] + def FromAll(certification: CertificationType.Value): Set[CertificationType.Value] = { + var available: List[CertificationType.Value] = List(certification) + var allocated: mutable.ListBuffer[CertificationType.Value] = mutable.ListBuffer.empty[CertificationType.Value] do { available = available.flatMap(cert => dependencies(cert)) allocated ++= available - } - while(available.nonEmpty) + } while (available.nonEmpty) allocated.toSet } @@ -38,7 +38,7 @@ object Certification { * @param certification the target certification * @return all connected certifications */ - def For(certification : CertificationType.Value) : Set[CertificationType.Value] = { + def For(certification: CertificationType.Value): Set[CertificationType.Value] = { (for { (cert, certs) <- dependencies if certs contains certification @@ -51,16 +51,15 @@ object Certification { * @param certification the target certification * @return all connected certifications */ - def ForAll(certification : CertificationType.Value) : Set[CertificationType.Value] = { - var available : List[CertificationType.Value] = List(certification) - var allocated : mutable.ListBuffer[CertificationType.Value] = mutable.ListBuffer.empty[CertificationType.Value] + def ForAll(certification: CertificationType.Value): Set[CertificationType.Value] = { + var available: List[CertificationType.Value] = List(certification) + var allocated: mutable.ListBuffer[CertificationType.Value] = mutable.ListBuffer.empty[CertificationType.Value] do { available = available.flatMap { For } allocated ++= available - } - while(available.nonEmpty) + } while (available.nonEmpty) allocated.toSet } @@ -72,83 +71,80 @@ object Certification { * @param certification the target certification * @return all connected certifications */ - def Like(certification : CertificationType.Value) : Set[CertificationType.Value] = certification match { - case AssaultBuggy => - Set(Harasser) - case LightScout => - Set(AirCavalryScout, AssaultBuggy, Harasser) - case UniMAX => - Set(AAMAX, AIMAX, AVMAX) - case AdvancedEngineering => - Set(AssaultEngineering, FortificationEngineering) - case ElectronicsExpert => - Set(DataCorruption, ExpertHacking) - case _ => - Set.empty[CertificationType.Value] - } + def Like(certification: CertificationType.Value): Set[CertificationType.Value] = + certification match { + case AssaultBuggy => + Set(Harasser) + case LightScout => + Set(AirCavalryScout, AssaultBuggy, Harasser) + case UniMAX => + Set(AAMAX, AIMAX, AVMAX) + case AdvancedEngineering => + Set(AssaultEngineering, FortificationEngineering) + case ElectronicsExpert => + Set(DataCorruption, ExpertHacking) + case _ => + Set.empty[CertificationType.Value] + } - private val dependencies : Map[CertificationType.Value, List[CertificationType.Value]] = Map( - StandardAssault -> List(), - AgileExoSuit -> List(), - ReinforcedExoSuit -> List(), - InfiltrationSuit -> List(Phantasm), - AIMAX -> List(), - AVMAX -> List(), - AAMAX -> List(), - UniMAX -> List(), - - StandardAssault -> List(), - MediumAssault -> List(AntiVehicular, HeavyAssault, Sniping, SpecialAssault), - AntiVehicular -> List(), - HeavyAssault -> List(), - Sniping -> List(), - SpecialAssault -> List(EliteAssault), - EliteAssault -> List(), - - ATV -> List(Switchblade), - Switchblade -> List(), - Harasser -> List(), - AssaultBuggy -> List(), - LightScout -> List(AirCavalryAssault), - GroundSupport -> List(), - GroundTransport -> List(), - ArmoredAssault1 -> List(ArmoredAssault2), - ArmoredAssault2 -> List(BattleFrameRobotics, Flail), - Flail -> List(), - - AirCavalryScout -> List(AirCavalryAssault), - AirCavalryAssault -> List(AirCavalryInterceptor), - AirCavalryInterceptor -> List(), - AirSupport -> List(GalaxyGunship), - GalaxyGunship -> List(), - Phantasm -> List(), - - BattleFrameRobotics -> List(BFRAntiInfantry, BFRAntiAircraft), - BFRAntiInfantry -> List(), - BFRAntiAircraft -> List(), - - Medical -> List(AdvancedMedical), - AdvancedMedical -> List(), - Engineering -> List(CombatEngineering), - CombatEngineering -> List(AdvancedEngineering, AssaultEngineering, FortificationEngineering), - AdvancedEngineering -> List(), - AssaultEngineering -> List(), + private val dependencies: Map[CertificationType.Value, List[CertificationType.Value]] = Map( + StandardAssault -> List(), + AgileExoSuit -> List(), + ReinforcedExoSuit -> List(), + InfiltrationSuit -> List(Phantasm), + AIMAX -> List(), + AVMAX -> List(), + AAMAX -> List(), + UniMAX -> List(), + StandardAssault -> List(), + MediumAssault -> List(AntiVehicular, HeavyAssault, Sniping, SpecialAssault), + AntiVehicular -> List(), + HeavyAssault -> List(), + Sniping -> List(), + SpecialAssault -> List(EliteAssault), + EliteAssault -> List(), + ATV -> List(Switchblade), + Switchblade -> List(), + Harasser -> List(), + AssaultBuggy -> List(), + LightScout -> List(AirCavalryAssault), + GroundSupport -> List(), + GroundTransport -> List(), + ArmoredAssault1 -> List(ArmoredAssault2), + ArmoredAssault2 -> List(BattleFrameRobotics, Flail), + Flail -> List(), + AirCavalryScout -> List(AirCavalryAssault), + AirCavalryAssault -> List(AirCavalryInterceptor), + AirCavalryInterceptor -> List(), + AirSupport -> List(GalaxyGunship), + GalaxyGunship -> List(), + Phantasm -> List(), + BattleFrameRobotics -> List(BFRAntiInfantry, BFRAntiAircraft), + BFRAntiInfantry -> List(), + BFRAntiAircraft -> List(), + Medical -> List(AdvancedMedical), + AdvancedMedical -> List(), + Engineering -> List(CombatEngineering), + CombatEngineering -> List(AdvancedEngineering, AssaultEngineering, FortificationEngineering), + AdvancedEngineering -> List(), + AssaultEngineering -> List(), FortificationEngineering -> List(), - Hacking -> List(AdvancedHacking), - AdvancedHacking -> List(DataCorruption, ElectronicsExpert, ExpertHacking), - DataCorruption -> List(), - ElectronicsExpert -> List(), - ExpertHacking -> List() + Hacking -> List(AdvancedHacking), + AdvancedHacking -> List(DataCorruption, ElectronicsExpert, ExpertHacking), + DataCorruption -> List(), + ElectronicsExpert -> List(), + ExpertHacking -> List() ) } object Cost { + /** * For a certification, get its point cost. * @param certification the certification * @return the cost */ - def Of(certification : CertificationType.Value) : Int = points(certification) + def Of(certification: CertificationType.Value): Int = points(certification) /** * For a list of certifications, find the point cost of all unique certifications. @@ -156,7 +152,7 @@ object Certification { * @param certifications the certification list * @return the total cost */ - def Of(certifications : List[CertificationType.Value]) : Int = Of(certifications.toSet) + def Of(certifications: List[CertificationType.Value]): Int = Of(certifications.toSet) /** * For a set of certifications, find the point cost of all certifications. @@ -164,70 +160,65 @@ object Certification { * @param certifications the certification list * @return the total cost */ - def Of(certifications : Set[CertificationType.Value]) : Int = OfAll(certifications.toList) + def Of(certifications: Set[CertificationType.Value]): Int = OfAll(certifications.toList) /** * For a list of certifications, find the point cost of all certifications, counting any duplicates. * @param certifications the certification list * @return the total cost */ - def OfAll(certifications : List[CertificationType.Value]) : Int = { + def OfAll(certifications: List[CertificationType.Value]): Int = { certifications map points sum } import CertificationType._ - private val points : Map[CertificationType.Value, Int] = Map( - StandardExoSuit -> 0, - AgileExoSuit -> 0, - ReinforcedExoSuit -> 3, - InfiltrationSuit -> 2, - AAMAX -> 2, - AIMAX -> 3, - AVMAX -> 3, - UniMAX -> 6, - - StandardAssault -> 0, - MediumAssault -> 2, - AntiVehicular -> 3, - HeavyAssault -> 4, - Sniping -> 3, - SpecialAssault -> 3, - EliteAssault -> 1, - - ATV -> 1, - Switchblade -> 1, - Harasser -> 1, - AssaultBuggy -> 3, - LightScout -> 5, - GroundSupport -> 2, - GroundTransport -> 2, - ArmoredAssault1 -> 2, - ArmoredAssault2 -> 3, - Flail -> 1, - - AirCavalryScout -> 3, - AirCavalryAssault -> 2, - AirCavalryInterceptor -> 2, - AirSupport -> 3, - GalaxyGunship -> 2, - Phantasm -> 3, - - BattleFrameRobotics -> 4, - BFRAntiInfantry -> 1, - BFRAntiAircraft -> 1, - - Medical -> 3, - AdvancedMedical -> 2, - Engineering -> 3, - CombatEngineering -> 2, - AdvancedEngineering -> 5, - AssaultEngineering -> 3, + private val points: Map[CertificationType.Value, Int] = Map( + StandardExoSuit -> 0, + AgileExoSuit -> 0, + ReinforcedExoSuit -> 3, + InfiltrationSuit -> 2, + AAMAX -> 2, + AIMAX -> 3, + AVMAX -> 3, + UniMAX -> 6, + StandardAssault -> 0, + MediumAssault -> 2, + AntiVehicular -> 3, + HeavyAssault -> 4, + Sniping -> 3, + SpecialAssault -> 3, + EliteAssault -> 1, + ATV -> 1, + Switchblade -> 1, + Harasser -> 1, + AssaultBuggy -> 3, + LightScout -> 5, + GroundSupport -> 2, + GroundTransport -> 2, + ArmoredAssault1 -> 2, + ArmoredAssault2 -> 3, + Flail -> 1, + AirCavalryScout -> 3, + AirCavalryAssault -> 2, + AirCavalryInterceptor -> 2, + AirSupport -> 3, + GalaxyGunship -> 2, + Phantasm -> 3, + BattleFrameRobotics -> 4, + BFRAntiInfantry -> 1, + BFRAntiAircraft -> 1, + Medical -> 3, + AdvancedMedical -> 2, + Engineering -> 3, + CombatEngineering -> 2, + AdvancedEngineering -> 5, + AssaultEngineering -> 3, FortificationEngineering -> 3, - Hacking -> 3, - AdvancedHacking -> 2, - DataCorruption -> 3, - ElectronicsExpert -> 4, - ExpertHacking -> 2 + Hacking -> 3, + AdvancedHacking -> 2, + DataCorruption -> 3, + ElectronicsExpert -> 4, + ExpertHacking -> 2 ) } } diff --git a/common/src/main/scala/net/psforever/objects/avatar/CorpseControl.scala b/common/src/main/scala/net/psforever/objects/avatar/CorpseControl.scala index 6e6d937f..769a66f9 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/CorpseControl.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/CorpseControl.scala @@ -11,15 +11,14 @@ import net.psforever.types.{PlanetSideEmpire, Vector3} import services.Service import services.avatar.{AvatarAction, AvatarServiceMessage} -class CorpseControl(player : Player) extends Actor - with ContainableBehavior { +class CorpseControl(player: Player) extends Actor with ContainableBehavior { def ContainerObject = player //private [this] val log = org.log4s.getLogger(player.Name) - def receive : Receive = containerBehavior.orElse { case _ => ; } + def receive: Receive = containerBehavior.orElse { case _ => ; } - def MessageDeferredCallback(msg : Any) : Unit = { + def MessageDeferredCallback(msg: Any): Unit = { msg match { case Containable.MoveItem(_, item, _) => //momentarily put item back where it was originally @@ -36,18 +35,18 @@ class CorpseControl(player : Player) extends Actor } } - def RemoveItemFromSlotCallback(item : Equipment, slot : Int) : Unit = { - val obj = ContainerObject - val zone = obj.Zone + def RemoveItemFromSlotCallback(item: Equipment, slot: Int): Unit = { + val obj = ContainerObject + val zone = obj.Zone val events = zone.AvatarEvents item.Faction = PlanetSideEmpire.NEUTRAL events ! AvatarServiceMessage(zone.Id, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item.GUID)) } - def PutItemInSlotCallback(item : Equipment, slot : Int) : Unit = { - val obj = ContainerObject - val zone = obj.Zone - val events = zone.AvatarEvents + def PutItemInSlotCallback(item: Equipment, slot: Int): Unit = { + val obj = ContainerObject + val zone = obj.Zone + val events = zone.AvatarEvents val definition = item.Definition events ! AvatarServiceMessage( zone.Id, @@ -63,10 +62,11 @@ class CorpseControl(player : Player) extends Actor ) } - def SwapItemCallback(item : Equipment) : Unit = { - val obj = ContainerObject + def SwapItemCallback(item: Equipment): Unit = { + val obj = ContainerObject val zone = obj.Zone - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, AvatarAction.SendResponse( Service.defaultPlayerGUID, ObjectDetachMessage(obj.GUID, item.GUID, Vector3.Zero, 0f) diff --git a/common/src/main/scala/net/psforever/objects/avatar/DeployableToolbox.scala b/common/src/main/scala/net/psforever/objects/avatar/DeployableToolbox.scala index d9c2201e..9f430503 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/DeployableToolbox.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/DeployableToolbox.scala @@ -23,29 +23,36 @@ import scala.collection.mutable * these structures are updated to reflect proper count. */ class DeployableToolbox { + /** * a map of bins for keeping track of the quantities of deployables in a category * keys: categories, values: quantity storage object */ - private val categoryCounts = DeployableCategory.values.toSeq.map(value => { value -> new DeployableToolbox.Bin }).toMap + private val categoryCounts = + DeployableCategory.values.toSeq.map(value => { value -> new DeployableToolbox.Bin }).toMap categoryCounts(DeployableCategory.Telepads).Max = 1024 + /** * a map of bins for keeping track of the quantities of individual deployables * keys: deployable types, values: quantity storage object */ private val deployableCounts = DeployedItem.values.toSeq.map(value => { value -> new DeployableToolbox.Bin }).toMap deployableCounts(DeployedItem.router_telepad_deployable).Max = 1024 + /** * a map of tracked/owned individual deployables * keys: categories, values: deployable objects */ private val deployableLists = - DeployableCategory.values.toSeq.map(value => { value -> mutable.ListBuffer[DeployableToolbox.AcceptableDeployable]() }).toMap + DeployableCategory.values.toSeq + .map(value => { value -> mutable.ListBuffer[DeployableToolbox.AcceptableDeployable]() }) + .toMap + /** * can only be initialized once * set during the `Initialization` method primarily, and in `Add` and in `Remove` if not */ - private var initialized : Boolean = false + private var initialized: Boolean = false /** * Set up the initial deployable counts by providing certification values to be used in category and unit selection. @@ -53,13 +60,12 @@ class DeployableToolbox { * @return `true`, if this is the first time and actual "initialization" is performed; * `false`, otherwise */ - def Initialize(certifications : Set[CertificationType.Value]) : Boolean = { - if(!initialized) { + def Initialize(certifications: Set[CertificationType.Value]): Boolean = { + if (!initialized) { DeployableToolbox.Initialize(deployableCounts, categoryCounts, certifications) initialized = true true - } - else { + } else { false } } @@ -72,7 +78,10 @@ class DeployableToolbox { * occasionally, important former certification values are required for additional configuration; * the new certification should already have been added to this group */ - def AddToDeployableQuantities(certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : Unit = { + def AddToDeployableQuantities( + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): Unit = { initialized = true DeployableToolbox.AddToDeployableQuantities(deployableCounts, categoryCounts, certification, certificationSet) } @@ -86,7 +95,10 @@ class DeployableToolbox { * occasionally, important former certification values are required for additional configuration; * the new certification should already have been excluded from this group */ - def RemoveFromDeployableQuantities(certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : Unit = { + def RemoveFromDeployableQuantities( + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): Unit = { initialized = true DeployableToolbox.RemoveFromDeployablesQuantities(deployableCounts, categoryCounts, certification, certificationSet) } @@ -100,7 +112,7 @@ class DeployableToolbox { * @return `true`, if it can be managed under the current conditions; * `false`, otherwise */ - def Accept(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { + def Accept(obj: DeployableToolbox.AcceptableDeployable): Boolean = { Valid(obj) && Available(obj) && !Contains(obj) } @@ -111,9 +123,9 @@ class DeployableToolbox { * @return `true`, if both category maximum and deployable type maximum are positive non-zero integers; * `false`, otherwise */ - def Valid(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { + def Valid(obj: DeployableToolbox.AcceptableDeployable): Boolean = { deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)).Max > 0 && - categoryCounts(obj.Definition.DeployCategory).Max > 0 + categoryCounts(obj.Definition.DeployCategory).Max > 0 } /** @@ -124,9 +136,9 @@ class DeployableToolbox { * @return `true`, if the deployable can be added to the support lists and counted; * `false`, otherwise */ - def Available(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { - deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)).Available && - categoryCounts(obj.Definition.DeployCategory).Available + def Available(obj: DeployableToolbox.AcceptableDeployable): Boolean = { + deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)).Available && + categoryCounts(obj.Definition.DeployCategory).Available } /** @@ -136,7 +148,7 @@ class DeployableToolbox { * @return `true`, if the deployable can be found in one of the lists; * `false`, otherwise */ - def Contains(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { + def Contains(obj: DeployableToolbox.AcceptableDeployable): Boolean = { deployableLists(obj.Definition.DeployCategory).contains(obj) } @@ -152,18 +164,17 @@ class DeployableToolbox { * @return `true`, if the deployable is added; * `false`, otherwise */ - def Add(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { - val category = obj.Definition.DeployCategory + def Add(obj: DeployableToolbox.AcceptableDeployable): Boolean = { + val category = obj.Definition.DeployCategory val dCategory = categoryCounts(category) - val dType = deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)) - val dList = deployableLists(category) - if(dCategory.Available() && dType.Available() && !dList.contains(obj)) { + val dType = deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)) + val dList = deployableLists(category) + if (dCategory.Available() && dType.Available() && !dList.contains(obj)) { dCategory.Current += 1 dType.Current += 1 dList += obj true - } - else { + } else { false } } @@ -179,16 +190,15 @@ class DeployableToolbox { * @return `true`, if the deployable is added; * `false`, otherwise */ - def Remove(obj : DeployableToolbox.AcceptableDeployable) : Boolean = { - val category = obj.Definition.DeployCategory + def Remove(obj: DeployableToolbox.AcceptableDeployable): Boolean = { + val category = obj.Definition.DeployCategory val deployables = deployableLists(category) - if(deployables.contains(obj)) { + if (deployables.contains(obj)) { categoryCounts(category).Current -= 1 deployableCounts(DeployableToolbox.UnifiedType(obj.Definition.Item)).Current -= 1 deployables -= obj true - } - else { + } else { false } } @@ -199,7 +209,7 @@ class DeployableToolbox { * @param obj the example deployable * @return any deployable that is found */ - def DisplaceFirst(obj : DeployableToolbox.AcceptableDeployable) : Option[DeployableToolbox.AcceptableDeployable] = { + def DisplaceFirst(obj: DeployableToolbox.AcceptableDeployable): Option[DeployableToolbox.AcceptableDeployable] = { DisplaceFirst(obj, { d => d.Definition.Item == obj.Definition.Item }) } @@ -213,11 +223,14 @@ class DeployableToolbox { * @param rule the testing rule for determining a valid deployable * @return any deployable that is found */ - def DisplaceFirst(obj : DeployableToolbox.AcceptableDeployable, rule : (Deployable)=> Boolean) : Option[DeployableToolbox.AcceptableDeployable] = { - val definition = obj.Definition - val category = definition.DeployCategory + def DisplaceFirst( + obj: DeployableToolbox.AcceptableDeployable, + rule: (Deployable) => Boolean + ): Option[DeployableToolbox.AcceptableDeployable] = { + val definition = obj.Definition + val category = definition.DeployCategory val categoryList = deployableLists(category) - if(categoryList.nonEmpty) { + if (categoryList.nonEmpty) { val found = categoryList.find(rule) match { case Some(target) => categoryList.remove(categoryList.indexOf(target)) @@ -227,8 +240,7 @@ class DeployableToolbox { categoryCounts(category).Current -= 1 deployableCounts(DeployableToolbox.UnifiedType(found.Definition.Item)).Current -= 1 Some(found) - } - else { + } else { None } } @@ -239,15 +251,14 @@ class DeployableToolbox { * @param category the target category * @return any deployable that is found */ - def DisplaceFirst(category : DeployableCategory.Value) : Option[DeployableToolbox.AcceptableDeployable] = { + def DisplaceFirst(category: DeployableCategory.Value): Option[DeployableToolbox.AcceptableDeployable] = { val categoryList = deployableLists(category) - if(categoryList.nonEmpty) { + if (categoryList.nonEmpty) { val found = categoryList.remove(0) categoryCounts(category).Current -= 1 deployableCounts(DeployableToolbox.UnifiedType(found.Definition.Item)).Current -= 1 Some(found) - } - else { + } else { None } } @@ -257,7 +268,7 @@ class DeployableToolbox { * @param filter the example deployable * @return a list of globally unique identifiers that should be valid for the current zone */ - def Deployables(filter : DeployableToolbox.AcceptableDeployable) : List[PlanetSideGUID] = { + def Deployables(filter: DeployableToolbox.AcceptableDeployable): List[PlanetSideGUID] = { Deployables(filter.Definition.Item) } @@ -266,10 +277,11 @@ class DeployableToolbox { * @param filter the type of deployable * @return a list of globally unique identifiers that should be valid for the current zone */ - def Deployables(filter : DeployedItem.Value) : List[PlanetSideGUID] = { + def Deployables(filter: DeployedItem.Value): List[PlanetSideGUID] = { deployableLists(Deployable.Category.Of(filter)) .filter(entry => { entry.Definition.Item == filter }) - .map(_.GUID).toList + .map(_.GUID) + .toList } /** @@ -277,7 +289,7 @@ class DeployableToolbox { * @param filter the example deployable * @return a list of globally unique identifiers that should be valid for the current zone */ - def Category(filter : DeployableToolbox.AcceptableDeployable) : List[PlanetSideGUID] = { + def Category(filter: DeployableToolbox.AcceptableDeployable): List[PlanetSideGUID] = { Category(filter.Definition.DeployCategory) } @@ -286,7 +298,7 @@ class DeployableToolbox { * @param filter the type of deployable * @return a list of globally unique identifiers that should be valid for the current zone */ - def Category(filter : DeployableCategory.Value) : List[PlanetSideGUID] = { + def Category(filter: DeployableCategory.Value): List[PlanetSideGUID] = { deployableLists(filter).map(_.GUID).toList } @@ -295,7 +307,7 @@ class DeployableToolbox { * @param item the example deployable * @return the current quantity of deployables and the maximum number */ - def CountDeployable(item : DeployedItem.Value) : (Int, Int) = { + def CountDeployable(item: DeployedItem.Value): (Int, Int) = { val dType = deployableCounts(DeployableToolbox.UnifiedType(item)) (dType.Current, dType.Max) } @@ -305,21 +317,21 @@ class DeployableToolbox { * @param item the example deployable * @return the current quantity of deployables and the maximum number */ - def CountCategory(item : DeployedItem.Value) : (Int, Int) = { + def CountCategory(item: DeployedItem.Value): (Int, Int) = { val dCat = categoryCounts(Deployable.Category.Of(DeployableToolbox.UnifiedType(item))) (dCat.Current, dCat.Max) } - def UpdateUIElement(entry : DeployedItem.Value) : List[(Int,Int,Int,Int)] = { - val toEntry = DeployableToolbox.UnifiedType(entry) + def UpdateUIElement(entry: DeployedItem.Value): List[(Int, Int, Int, Int)] = { + val toEntry = DeployableToolbox.UnifiedType(entry) val (curr, max) = Deployable.UI(toEntry) - val dType = deployableCounts(toEntry) + val dType = deployableCounts(toEntry) List((curr, dType.Current, max, dType.Max)) } - def UpdateUI() : List[(Int,Int,Int,Int)] = DeployedItem.values flatMap UpdateUIElement toList + def UpdateUI(): List[(Int, Int, Int, Int)] = DeployedItem.values flatMap UpdateUIElement toList - def UpdateUI(entry : CertificationType.Value) : List[(Int,Int,Int,Int)] = { + def UpdateUI(entry: CertificationType.Value): List[(Int, Int, Int, Int)] = { import CertificationType._ entry match { case AdvancedHacking => @@ -327,19 +339,26 @@ class DeployableToolbox { case CombatEngineering => List( - DeployedItem.boomer, DeployedItem.he_mine, DeployedItem.spitfire_turret, DeployedItem.motionalarmsensor + DeployedItem.boomer, + DeployedItem.he_mine, + DeployedItem.spitfire_turret, + DeployedItem.motionalarmsensor ) flatMap UpdateUIElement case AssaultEngineering => List( - DeployedItem.jammer_mine, DeployedItem.portable_manned_turret, DeployedItem.deployable_shield_generator + DeployedItem.jammer_mine, + DeployedItem.portable_manned_turret, + DeployedItem.deployable_shield_generator ) flatMap UpdateUIElement case FortificationEngineering => List( DeployedItem.boomer, DeployedItem.he_mine, - DeployedItem.spitfire_turret, DeployedItem.spitfire_cloaked, DeployedItem.spitfire_aa, + DeployedItem.spitfire_turret, + DeployedItem.spitfire_cloaked, + DeployedItem.spitfire_aa, DeployedItem.motionalarmsensor, DeployedItem.tank_traps ) flatMap UpdateUIElement @@ -352,7 +371,7 @@ class DeployableToolbox { } } - def UpdateUI(certifications : List[CertificationType.Value]) : List[(Int,Int,Int,Int)] = { + def UpdateUI(certifications: List[CertificationType.Value]): List[(Int, Int, Int, Int)] = { certifications flatMap UpdateUI } @@ -361,11 +380,11 @@ class DeployableToolbox { * @param item the deployable type * @return a list of globally unique identifiers that should be valid for the current zone */ - def ClearDeployable(item : DeployedItem.Value) : List[PlanetSideGUID] = { - val uitem = DeployableToolbox.UnifiedType(item) - val category = Deployable.Category.Of(uitem) + def ClearDeployable(item: DeployedItem.Value): List[PlanetSideGUID] = { + val uitem = DeployableToolbox.UnifiedType(item) + val category = Deployable.Category.Of(uitem) val categoryList = deployableLists(category) - val (out, in) = categoryList.partition(_.Definition.Item == item) + val (out, in) = categoryList.partition(_.Definition.Item == item) categoryList.clear() categoryList ++= in @@ -379,13 +398,13 @@ class DeployableToolbox { * @param item the deployable type belonging to a category * @return a list of globally unique identifiers that should be valid for the current zone */ - def ClearCategory(item : DeployedItem.Value) : List[PlanetSideGUID] = { + def ClearCategory(item: DeployedItem.Value): List[PlanetSideGUID] = { val category = Deployable.Category.Of(DeployableToolbox.UnifiedType(item)) - val out = deployableLists(category).map(_.GUID).toList + val out = deployableLists(category).map(_.GUID).toList deployableLists(category).clear() categoryCounts(category).Current = 0 (Deployable.Category.Includes(category) map DeployableToolbox.UnifiedType toSet) - .foreach({item : DeployedItem.Value => deployableCounts(item).Current = 0 }) + .foreach({ item: DeployedItem.Value => deployableCounts(item).Current = 0 }) out } @@ -393,7 +412,7 @@ class DeployableToolbox { * Remove all managed deployables. * @return a list of globally unique identifiers that should be valid for the current zone */ - def Clear() : List[PlanetSideGUID] = { + def Clear(): List[PlanetSideGUID] = { val out = deployableLists.values.flatten.map(_.GUID).toList deployableLists.values.foreach(_.clear()) deployableCounts.values.foreach(_.Current = 0) @@ -403,6 +422,7 @@ class DeployableToolbox { } object DeployableToolbox { + /** * A `type` intended to properly define the minimum acceptable conditions for a `Deployable` object. */ @@ -413,26 +433,28 @@ object DeployableToolbox { * There are deployable numbers organized by deploybale type and by deployable category. */ private class Bin { + /** the maximum number of deployables for this criteria that can be managed */ - private var max : Int = 0 + private var max: Int = 0 + /** the current number of deployables for this criteria that are being managed */ - private var current : Int = 0 + private var current: Int = 0 - def Current : Int = current + def Current: Int = current - def Current_=(curr : Int) : Int = { + def Current_=(curr: Int): Int = { current = curr Current } - def Max : Int = max + def Max: Int = max - def Max_=(mx : Int) : Int = { + def Max_=(mx: Int): Int = { max = mx Max } - def Available() : Boolean = current < max + def Available(): Boolean = current < max } /** @@ -441,12 +463,14 @@ object DeployableToolbox { * @param item the type of deployable * @return the corrected deployable type */ - def UnifiedType(item : DeployedItem.Value) : DeployedItem.Value = item match { - case DeployedItem.portable_manned_turret_nc | DeployedItem.portable_manned_turret_tr | DeployedItem.portable_manned_turret_vs => - DeployedItem.portable_manned_turret - case _ => - item - } + def UnifiedType(item: DeployedItem.Value): DeployedItem.Value = + item match { + case DeployedItem.portable_manned_turret_nc | DeployedItem.portable_manned_turret_tr | + DeployedItem.portable_manned_turret_vs => + DeployedItem.portable_manned_turret + case _ => + item + } /** * Hardcoded maximum values for the category and type initialization. @@ -454,9 +478,13 @@ object DeployableToolbox { * @param categories a reference to the category `Bin` object * @param certifications a group of certifications for the initial values */ - private def Initialize(counts : Map[DeployedItem.Value, DeployableToolbox.Bin], categories : Map[DeployableCategory.Value, DeployableToolbox.Bin], certifications : Set[CertificationType.Value]) : Unit = { + private def Initialize( + counts: Map[DeployedItem.Value, DeployableToolbox.Bin], + categories: Map[DeployableCategory.Value, DeployableToolbox.Bin], + certifications: Set[CertificationType.Value] + ): Unit = { import CertificationType._ - if(certifications.contains(AdvancedEngineering)) { + if (certifications.contains(AdvancedEngineering)) { counts(DeployedItem.boomer).Max = 25 counts(DeployedItem.he_mine).Max = 25 counts(DeployedItem.jammer_mine).Max = 20 @@ -478,12 +506,11 @@ object DeployableToolbox { categories(DeployableCategory.FieldTurrets).Max = 1 categories(DeployableCategory.ShieldGenerators).Max = 1 - if(certifications.contains(AdvancedHacking)) { + if (certifications.contains(AdvancedHacking)) { counts(DeployedItem.sensor_shield).Max = 25 } - } - else if(certifications.contains(CombatEngineering)) { - if(certifications.contains(AssaultEngineering)) { + } else if (certifications.contains(CombatEngineering)) { + if (certifications.contains(AssaultEngineering)) { counts(DeployedItem.jammer_mine).Max = 20 counts(DeployedItem.portable_manned_turret).Max = 1 //the below turret types are unified //counts(DeployedItem.portable_manned_turret_nc).Max = 1 @@ -493,7 +520,7 @@ object DeployableToolbox { categories(DeployableCategory.FieldTurrets).Max = 1 categories(DeployableCategory.ShieldGenerators).Max = 1 } - if(certifications.contains(FortificationEngineering)) { + if (certifications.contains(FortificationEngineering)) { counts(DeployedItem.boomer).Max = 25 counts(DeployedItem.he_mine).Max = 25 counts(DeployedItem.spitfire_turret).Max = 15 @@ -506,8 +533,7 @@ object DeployableToolbox { categories(DeployableCategory.SmallTurrets).Max = 15 categories(DeployableCategory.Sensors).Max = 25 categories(DeployableCategory.TankTraps).Max = 5 - } - else { + } else { counts(DeployedItem.boomer).Max = 20 counts(DeployedItem.he_mine).Max = 20 counts(DeployedItem.spitfire_turret).Max = 10 @@ -518,11 +544,11 @@ object DeployableToolbox { categories(DeployableCategory.Sensors).Max = 20 } - if(certifications.contains(AdvancedHacking)) { + if (certifications.contains(AdvancedHacking)) { counts(DeployedItem.sensor_shield).Max = 20 } } - if(certifications.contains(CertificationType.GroundSupport)) { + if (certifications.contains(CertificationType.GroundSupport)) { counts(DeployedItem.router_telepad_deployable).Max = 1024 categories(DeployableCategory.Telepads).Max = 1024 } @@ -535,12 +561,17 @@ object DeployableToolbox { * @param certification the new certification * @param certificationSet the group of previous certifications being tracked */ - def AddToDeployableQuantities(counts : Map[DeployedItem.Value, DeployableToolbox.Bin], categories : Map[DeployableCategory.Value, DeployableToolbox.Bin], certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : Unit = { + def AddToDeployableQuantities( + counts: Map[DeployedItem.Value, DeployableToolbox.Bin], + categories: Map[DeployableCategory.Value, DeployableToolbox.Bin], + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): Unit = { import CertificationType._ - if(certificationSet contains certification) { + if (certificationSet contains certification) { certification match { case AdvancedHacking => - if(certificationSet contains CombatEngineering) { + if (certificationSet contains CombatEngineering) { counts(DeployedItem.sensor_shield).Max = 20 } @@ -553,7 +584,7 @@ object DeployableToolbox { categories(DeployableCategory.Mines).Max = 20 categories(DeployableCategory.SmallTurrets).Max = 10 categories(DeployableCategory.Sensors).Max = 20 - if(certificationSet contains AdvancedHacking) { + if (certificationSet contains AdvancedHacking) { counts(DeployedItem.sensor_shield).Max = 20 } @@ -582,11 +613,21 @@ object DeployableToolbox { categories(DeployableCategory.TankTraps).Max = 5 case AdvancedEngineering => - if(!certificationSet.contains(AssaultEngineering)) { - AddToDeployableQuantities(counts, categories, AssaultEngineering, certificationSet ++ Set(AssaultEngineering)) + if (!certificationSet.contains(AssaultEngineering)) { + AddToDeployableQuantities( + counts, + categories, + AssaultEngineering, + certificationSet ++ Set(AssaultEngineering) + ) } - if(!certificationSet.contains(FortificationEngineering)) { - AddToDeployableQuantities(counts, categories, FortificationEngineering, certificationSet ++ Set(FortificationEngineering)) + if (!certificationSet.contains(FortificationEngineering)) { + AddToDeployableQuantities( + counts, + categories, + FortificationEngineering, + certificationSet ++ Set(FortificationEngineering) + ) } // case GroundSupport => @@ -605,9 +646,14 @@ object DeployableToolbox { * @param certification the new certification * @param certificationSet the group of previous certifications being tracked */ - def RemoveFromDeployablesQuantities(counts : Map[DeployedItem.Value, DeployableToolbox.Bin], categories : Map[DeployableCategory.Value, DeployableToolbox.Bin], certification : CertificationType.Value, certificationSet : Set[CertificationType.Value]) : Unit = { + def RemoveFromDeployablesQuantities( + counts: Map[DeployedItem.Value, DeployableToolbox.Bin], + categories: Map[DeployableCategory.Value, DeployableToolbox.Bin], + certification: CertificationType.Value, + certificationSet: Set[CertificationType.Value] + ): Unit = { import CertificationType._ - if(!certificationSet.contains(certification)) { + if (!certificationSet.contains(certification)) { certification match { case AdvancedHacking => counts(DeployedItem.sensor_shield).Max = 0 @@ -625,17 +671,17 @@ object DeployableToolbox { case AssaultEngineering => counts(DeployedItem.jammer_mine).Max = 0 - counts(DeployedItem.portable_manned_turret).Max = 0 //the below turret types are unified + counts(DeployedItem.portable_manned_turret).Max = 0 //the below turret types are unified //counts(DeployedItem.portable_manned_turret_nc).Max = 0 //counts(DeployedItem.portable_manned_turret_tr).Max = 0 //counts(DeployedItem.portable_manned_turret_vs).Max = 0 counts(DeployedItem.deployable_shield_generator).Max = 0 - categories(DeployableCategory.Sensors).Max = if(certificationSet contains CombatEngineering) 20 else 0 + categories(DeployableCategory.Sensors).Max = if (certificationSet contains CombatEngineering) 20 else 0 categories(DeployableCategory.FieldTurrets).Max = 0 categories(DeployableCategory.ShieldGenerators).Max = 0 case FortificationEngineering => - val ce : Int = if(certificationSet contains CombatEngineering) 1 else 0 //true = 1, false = 0 + val ce: Int = if (certificationSet contains CombatEngineering) 1 else 0 //true = 1, false = 0 counts(DeployedItem.boomer).Max = ce * 20 counts(DeployedItem.he_mine).Max = ce * 20 counts(DeployedItem.spitfire_turret).Max = ce * 10 @@ -650,10 +696,10 @@ object DeployableToolbox { categories(DeployableCategory.TankTraps).Max = 0 case AdvancedEngineering => - if(!certificationSet.contains(AssaultEngineering)) { + if (!certificationSet.contains(AssaultEngineering)) { RemoveFromDeployablesQuantities(counts, categories, AssaultEngineering, certificationSet) } - if(!certificationSet.contains(FortificationEngineering)) { + if (!certificationSet.contains(FortificationEngineering)) { RemoveFromDeployablesQuantities(counts, categories, FortificationEngineering, certificationSet) } diff --git a/common/src/main/scala/net/psforever/objects/avatar/FirstTimeEvents.scala b/common/src/main/scala/net/psforever/objects/avatar/FirstTimeEvents.scala index 1a88cca2..a196bb21 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/FirstTimeEvents.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/FirstTimeEvents.scala @@ -3,12 +3,16 @@ package net.psforever.objects.avatar object FirstTimeEvents { object TR { - val InfantryWeapons : Set[String] = Set( - "used_chainblade","used_repeater","used_cycler","used_mini_chaingun","used_striker", + val InfantryWeapons: Set[String] = Set( + "used_chainblade", + "used_repeater", + "used_cycler", + "used_mini_chaingun", + "used_striker", "used_anniversary_guna" ) - val Vehicles : Set[String] = Set( + val Vehicles: Set[String] = Set( "used_heavy_grenade_launcher", "used_apc_tr_weapon", "used_15mm_chaingun", @@ -18,27 +22,38 @@ object FirstTimeEvents { "used_colossus_cluster_bomb_pod", "used_colossus_dual_100mm_cannons", "used_colossus_tank_cannon", - "visited_threemanheavybuggy","visited_battlewagon","visited_apc_tr","visited_prowler", - "visited_colossus_flight","visited_colossus_gunner" + "visited_threemanheavybuggy", + "visited_battlewagon", + "visited_apc_tr", + "visited_prowler", + "visited_colossus_flight", + "visited_colossus_gunner" ) - val Other : Set[String] = Set( - "used_trhev_dualcycler","used_trhev_pounder","used_trhev_burster", - "used_colossus_dual_100mm_cannons","used_colossus_tank_cannon", + val Other: Set[String] = Set( + "used_trhev_dualcycler", + "used_trhev_pounder", + "used_trhev_burster", + "used_colossus_dual_100mm_cannons", + "used_colossus_tank_cannon", "used_energy_gun_tr", "visited_portable_manned_turret_tr" ) - - val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other + + val All: Set[String] = InfantryWeapons ++ Vehicles ++ Other } object NC { - val InfantryWeapons : Set[String] = Set( - "used_magcutter","used_isp","used_gauss","used_r_shotgun","used_hunterseeker", + val InfantryWeapons: Set[String] = Set( + "used_magcutter", + "used_isp", + "used_gauss", + "used_r_shotgun", + "used_hunterseeker", "used_anniversary_gun" ) - val Vehicles : Set[String] = Set( + val Vehicles: Set[String] = Set( "used_firebird", "used_gauss_cannon", "used_apc_nc_weapon", @@ -48,26 +63,36 @@ object FirstTimeEvents { "used_peregrine_mechhammer", "used_peregrine_particle_cannon", "used_peregrine_sparrow", - "visited_twomanheavybuggy","visited_thunderer","visited_apc_nc","visited_vanguard", - "visited_peregrine_flight","visited_peregrine_gunner" + "visited_twomanheavybuggy", + "visited_thunderer", + "visited_apc_nc", + "visited_vanguard", + "visited_peregrine_flight", + "visited_peregrine_gunner" ) - val Other : Set[String] = Set( - "used_nchev_scattercannon","used_nchev_falcon","used_nchev_sparrow", + val Other: Set[String] = Set( + "used_nchev_scattercannon", + "used_nchev_falcon", + "used_nchev_sparrow", "used_energy_gun_nc", "visited_portable_manned_turret_nc" ) - val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other + val All: Set[String] = InfantryWeapons ++ Vehicles ++ Other } object VS { - val InfantryWeapons : Set[String] = Set( - "used_forceblade","used_beamer","used_pulsar","used_lasher","used_lancer", + val InfantryWeapons: Set[String] = Set( + "used_forceblade", + "used_beamer", + "used_pulsar", + "used_lasher", + "used_lancer", "used_anniversary_gunb" ) - val Vehicles : Set[String] = Set( + val Vehicles: Set[String] = Set( "used_fluxpod", "used_apc_vs_weapon", "used_heavy_rail_beam", @@ -78,27 +103,45 @@ object FirstTimeEvents { "used_aphelion_immolation_cannon", "used_aphelion_plasma_rocket_pod", "used_aphelion_ppa", - "visited_twomanhoverbuggy","visited_aurora","visited_apc_vs","visited_magrider", - "visited_aphelion_flight","visited_aphelion_gunner" + "visited_twomanhoverbuggy", + "visited_aurora", + "visited_apc_vs", + "visited_magrider", + "visited_aphelion_flight", + "visited_aphelion_gunner" ) - val Other : Set[String] = Set( - "used_vshev_quasar","used_vshev_comet","used_vshev_starfire", + val Other: Set[String] = Set( + "used_vshev_quasar", + "used_vshev_comet", + "used_vshev_starfire", "used_energy_gun_vs", "visited_portable_manned_turret_vs" ) - val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other + val All: Set[String] = InfantryWeapons ++ Vehicles ++ Other } object Standard { - val InfantryWeapons : Set[String] = Set( - "used_grenade_plasma","used_grenade_jammer","used_grenade_frag", + val InfantryWeapons: Set[String] = Set( + "used_grenade_plasma", + "used_grenade_jammer", + "used_grenade_frag", "used_katana", - "used_ilc9","used_suppressor","used_punisher","used_flechette","used_phoenix","used_thumper","used_rocklet","used_bolt_driver","used_heavy_sniper","used_oicw","used_flamethrower" + "used_ilc9", + "used_suppressor", + "used_punisher", + "used_flechette", + "used_phoenix", + "used_thumper", + "used_rocklet", + "used_bolt_driver", + "used_heavy_sniper", + "used_oicw", + "used_flamethrower" ) - val Vehicles : Set[String] = Set( + val Vehicles: Set[String] = Set( "used_armor_siphon", "used_ntu_siphon", "used_ballgun", @@ -116,50 +159,95 @@ object FirstTimeEvents { "used_vulture_nose_cannon", "used_vulture_tail_cannon", "used_liberator_bombardier", - "visited_ams","visited_ant", - "visited_quadassault","visited_fury","visited_quadstealth", - "visited_two_man_assault_buggy","visited_skyguard", - "visited_mediumtransport","visited_apc","visited_lightning", - "visited_mosquito","visited_lightgunship","visited_wasp", - "visited_liberator","visited_vulture","visited_dropship","visited_galaxy_gunship", - "visited_phantasm","visited_lodestar" + "visited_ams", + "visited_ant", + "visited_quadassault", + "visited_fury", + "visited_quadstealth", + "visited_two_man_assault_buggy", + "visited_skyguard", + "visited_mediumtransport", + "visited_apc", + "visited_lightning", + "visited_mosquito", + "visited_lightgunship", + "visited_wasp", + "visited_liberator", + "visited_vulture", + "visited_dropship", + "visited_galaxy_gunship", + "visited_phantasm", + "visited_lodestar" ) - val Facilities : Set[String] = Set( - "visited_broadcast_warpgate","visited_warpgate_small", - "visited_respawn_terminal","visited_deconstruction_terminal", - "visited_capture_terminal","visited_secondary_capture","visited_LLU_socket","visited_resource_silo", - "visited_med_terminal","visited_adv_med_terminal","visited_repair_silo", - "visited_order_terminal","visited_certification_terminal","visited_implant_terminal","visited_locker", - "visited_ground_vehicle_terminal","visited_bfr_terminal","visited_air_vehicle_terminal","visited_galaxy_terminal", - "visited_generator","visited_generator_terminal", - "visited_wall_turret","used_phalanx","used_phalanx_avcombo","used_phalanx_flakcombo", + val Facilities: Set[String] = Set( + "visited_broadcast_warpgate", + "visited_warpgate_small", + "visited_respawn_terminal", + "visited_deconstruction_terminal", + "visited_capture_terminal", + "visited_secondary_capture", + "visited_LLU_socket", + "visited_resource_silo", + "visited_med_terminal", + "visited_adv_med_terminal", + "visited_repair_silo", + "visited_order_terminal", + "visited_certification_terminal", + "visited_implant_terminal", + "visited_locker", + "visited_ground_vehicle_terminal", + "visited_bfr_terminal", + "visited_air_vehicle_terminal", + "visited_galaxy_terminal", + "visited_generator", + "visited_generator_terminal", + "visited_wall_turret", + "used_phalanx", + "used_phalanx_avcombo", + "used_phalanx_flakcombo", "visited_external_door_lock" ) - val Other : Set[String] = Set( + val Other: Set[String] = Set( "used_command_uplink", - "used_med_app","used_nano_dispenser","used_bank","used_ace","used_advanced_ace","used_rek","used_trek","used_laze_pointer","used_telepad", - "visited_motion_sensor","visited_sensor_shield", - "visited_spitfire_turret","visited_spitfire_cloaked","visited_spitfire_aa", - "visited_shield_generator","visited_tank_traps" + "used_med_app", + "used_nano_dispenser", + "used_bank", + "used_ace", + "used_advanced_ace", + "used_rek", + "used_trek", + "used_laze_pointer", + "used_telepad", + "visited_motion_sensor", + "visited_sensor_shield", + "visited_spitfire_turret", + "visited_spitfire_cloaked", + "visited_spitfire_aa", + "visited_shield_generator", + "visited_tank_traps" ) - val All : Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other + val All: Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other } object Cavern { - val InfantryWeapons : Set[String] = Set( - "used_spiker","used_radiator","used_maelstrom" + val InfantryWeapons: Set[String] = Set( + "used_spiker", + "used_radiator", + "used_maelstrom" ) - val Vehicles : Set[String] = Set( + val Vehicles: Set[String] = Set( "used_scythe", "used_flail_weapon", - "visited_switchblade","visited_flail","visited_router" + "visited_switchblade", + "visited_flail", + "visited_router" ) - val Facilities : Set[String] = Set( + val Facilities: Set[String] = Set( "used_ancient_turret_weapon", "visited_vanu_control_console", "visited_ancient_air_vehicle_terminal", @@ -172,21 +260,43 @@ object FirstTimeEvents { "visited_energy_crystal" ) - val Other : Set[String] = Set( + val Other: Set[String] = Set( "visited_vanu_module" ) - val All : Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other + val All: Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other } - val Maps : Set[String] = Set( - "map01","map02","map03","map04","map05","map06","map07","map08","map09","map10", - "map11","map12","map13","map14","map15","map16", - "ugd01","ugd02","ugd03","ugd04","ugd05","ugd06", - "map96","map97","map98","map99" + val Maps: Set[String] = Set( + "map01", + "map02", + "map03", + "map04", + "map05", + "map06", + "map07", + "map08", + "map09", + "map10", + "map11", + "map12", + "map13", + "map14", + "map15", + "map16", + "ugd01", + "ugd02", + "ugd03", + "ugd04", + "ugd05", + "ugd06", + "map96", + "map97", + "map98", + "map99" ) - val Monoliths : Set[String] = Set( + val Monoliths: Set[String] = Set( "visited_monolith_amerish", "visited_monolith_ceryshen", "visited_monolith_cyssor", @@ -198,7 +308,7 @@ object FirstTimeEvents { "visited_monolith_solsar" ) - val Gingerman : Set[String] = Set( + val Gingerman: Set[String] = Set( "visited_gingerman_atar", "visited_gingerman_dahaka", "visited_gingerman_hvar", @@ -211,7 +321,7 @@ object FirstTimeEvents { "visited_gingerman_zal" ) - val Sled : Set[String] = Set( + val Sled: Set[String] = Set( "visited_sled01", "visited_sled02", "visited_sled04", @@ -222,7 +332,7 @@ object FirstTimeEvents { "visited_sled09" ) - val Snowman : Set[String] = Set( + val Snowman: Set[String] = Set( "visited_snowman_amerish", "visited_snowman_ceryshen", "visited_snowman_cyssor", @@ -234,7 +344,7 @@ object FirstTimeEvents { "visited_snowman_solsar" ) - val Charlie : Set[String] = Set( + val Charlie: Set[String] = Set( "visited_charlie01", "visited_charlie02", "visited_charlie03", @@ -246,22 +356,58 @@ object FirstTimeEvents { "visited_charlie09" ) - val BattleRanks : Set[String] = Set( - "xpe_battle_rank_1","xpe_battle_rank_2","xpe_battle_rank_3","xpe_battle_rank_4","xpe_battle_rank_5", - "xpe_battle_rank_6","xpe_battle_rank_7","xpe_battle_rank_8","xpe_battle_rank_9","xpe_battle_rank_10", - "xpe_battle_rank_11","xpe_battle_rank_12","xpe_battle_rank_13","xpe_battle_rank_14","xpe_battle_rank_15", - "xpe_battle_rank_16","xpe_battle_rank_17","xpe_battle_rank_18","xpe_battle_rank_19","xpe_battle_rank_20", - "xpe_battle_rank_21","xpe_battle_rank_22","xpe_battle_rank_23","xpe_battle_rank_24","xpe_battle_rank_25", - "xpe_battle_rank_26","xpe_battle_rank_27","xpe_battle_rank_28","xpe_battle_rank_29","xpe_battle_rank_30", - "xpe_battle_rank_31","xpe_battle_rank_32","xpe_battle_rank_33","xpe_battle_rank_34","xpe_battle_rank_35", - "xpe_battle_rank_36","xpe_battle_rank_37","xpe_battle_rank_38","xpe_battle_rank_39","xpe_battle_rank_40" + val BattleRanks: Set[String] = Set( + "xpe_battle_rank_1", + "xpe_battle_rank_2", + "xpe_battle_rank_3", + "xpe_battle_rank_4", + "xpe_battle_rank_5", + "xpe_battle_rank_6", + "xpe_battle_rank_7", + "xpe_battle_rank_8", + "xpe_battle_rank_9", + "xpe_battle_rank_10", + "xpe_battle_rank_11", + "xpe_battle_rank_12", + "xpe_battle_rank_13", + "xpe_battle_rank_14", + "xpe_battle_rank_15", + "xpe_battle_rank_16", + "xpe_battle_rank_17", + "xpe_battle_rank_18", + "xpe_battle_rank_19", + "xpe_battle_rank_20", + "xpe_battle_rank_21", + "xpe_battle_rank_22", + "xpe_battle_rank_23", + "xpe_battle_rank_24", + "xpe_battle_rank_25", + "xpe_battle_rank_26", + "xpe_battle_rank_27", + "xpe_battle_rank_28", + "xpe_battle_rank_29", + "xpe_battle_rank_30", + "xpe_battle_rank_31", + "xpe_battle_rank_32", + "xpe_battle_rank_33", + "xpe_battle_rank_34", + "xpe_battle_rank_35", + "xpe_battle_rank_36", + "xpe_battle_rank_37", + "xpe_battle_rank_38", + "xpe_battle_rank_39", + "xpe_battle_rank_40" ) - val CommandRanks : Set[String] = Set( - "xpe_command_rank_1","xpe_command_rank_2","xpe_command_rank_3","xpe_command_rank_4","xpe_command_rank_5" + val CommandRanks: Set[String] = Set( + "xpe_command_rank_1", + "xpe_command_rank_2", + "xpe_command_rank_3", + "xpe_command_rank_4", + "xpe_command_rank_5" ) - val Training : Set[String] = Set( + val Training: Set[String] = Set( "training_welcome", "training_map", "training_hart", @@ -275,13 +421,13 @@ object FirstTimeEvents { "training_implants" ) - val OldTraining : Set[String] = Set( + val OldTraining: Set[String] = Set( "training_start_tr", "training_start_nc", "training_start_vs" ) - val Generic : Set[String] = Set( + val Generic: Set[String] = Set( "xpe_overhead_map", "xpe_mail_alert", "xpe_join_platoon", diff --git a/common/src/main/scala/net/psforever/objects/avatar/LoadoutManager.scala b/common/src/main/scala/net/psforever/objects/avatar/LoadoutManager.scala index 44a7ab77..174f5f05 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/LoadoutManager.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/LoadoutManager.scala @@ -2,14 +2,13 @@ package net.psforever.objects.avatar import net.psforever.objects.loadouts.Loadout -import net.psforever.types.LoadoutType import scala.util.Success -class LoadoutManager(size : Int) { - private val entries : Array[Option[Loadout]] = Array.fill[Option[Loadout]](size)(None) +class LoadoutManager(size: Int) { + private val entries: Array[Option[Loadout]] = Array.fill[Option[Loadout]](size)(None) - def SaveLoadout(owner : Any, label : String, line : Int) : Unit = { + def SaveLoadout(owner: Any, label: String, line: Int): Unit = { Loadout.Create(owner, label) match { case Success(loadout) if entries.length > line => entries(line) = Some(loadout) @@ -17,13 +16,14 @@ class LoadoutManager(size : Int) { } } - def LoadLoadout(line : Int) : Option[Loadout] = entries.lift(line).flatten + def LoadLoadout(line: Int): Option[Loadout] = entries.lift(line).flatten - def DeleteLoadout(line : Int) : Unit = { - if(entries.length > line) { + def DeleteLoadout(line: Int): Unit = { + if (entries.length > line) { entries(line) = None } } - def Loadouts : Seq[(Int, Loadout)] = entries.zipWithIndex.collect { case(Some(loadout), index) => (index, loadout) } toSeq + def Loadouts: Seq[(Int, Loadout)] = + entries.zipWithIndex.collect { case (Some(loadout), index) => (index, loadout) } toSeq } diff --git a/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala b/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala index c39c045e..ab53839b 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala @@ -27,536 +27,643 @@ import scala.concurrent.duration._ import scala.collection.mutable import scala.concurrent.ExecutionContext.Implicits.global -class PlayerControl(player : Player) extends Actor - with JammableBehavior - with Damageable - with ContainableBehavior { - def JammableObject = player +class PlayerControl(player: Player) extends Actor with JammableBehavior with Damageable with ContainableBehavior { + def JammableObject = player def DamageableObject = player - def ContainerObject = player + def ContainerObject = player - private [this] val log = org.log4s.getLogger(player.Name) - private [this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) + private[this] val log = org.log4s.getLogger(player.Name) + private[this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) /** Stamina will be used. Stamina will be restored. */ - var staminaRegen : Cancellable = Default.Cancellable + var staminaRegen: Cancellable = Default.Cancellable + /** * A collection of timers indexed for the implant in each slot. * Before an implant is ready, it serves as the initialization timer. - * After being initialized, it is used as the stamina drain interval when the implant is active. */ + * After being initialized, it is used as the stamina drain interval when the implant is active. + */ val implantSlotTimers = mutable.HashMap(0 -> Default.Cancellable, 1 -> Default.Cancellable, 2 -> Default.Cancellable) + /** control agency for the player's locker container (dedicated inventory slot #5) */ - val lockerControlAgent : ActorRef = { + val lockerControlAgent: ActorRef = { val locker = player.Locker locker.Zone = player.Zone - locker.Actor = context.actorOf(Props(classOf[LockerContainerControl], locker, player.Name), PlanetSideServerObject.UniqueActorName(locker)) + locker.Actor = context.actorOf( + Props(classOf[LockerContainerControl], locker, player.Name), + PlanetSideServerObject.UniqueActorName(locker) + ) } - override def postStop() : Unit = { + override def postStop(): Unit = { lockerControlAgent ! akka.actor.PoisonPill player.Locker.Actor = Default.Actor staminaRegen.cancel implantSlotTimers.values.foreach { _.cancel } } - def receive : Receive = jammableBehavior - .orElse(takesDamage) - .orElse(containerBehavior) - .orElse { - case Player.ImplantActivation(slot : Int, status : Int) => - ImplantActivation(slot, status) + def receive: Receive = + jammableBehavior + .orElse(takesDamage) + .orElse(containerBehavior) + .orElse { + case Player.ImplantActivation(slot: Int, status: Int) => + ImplantActivation(slot, status) - case Player.UninitializeImplant(slot : Int) => - UninitializeImplant(slot) + case Player.UninitializeImplant(slot: Int) => + UninitializeImplant(slot) - case Player.ImplantInitializationStart(slot : Int) => - ImplantInitializationStart(slot) + case Player.ImplantInitializationStart(slot: Int) => + ImplantInitializationStart(slot) - case Player.ImplantInitializationComplete(slot : Int) => - ImplantInitializationComplete(slot) + case Player.ImplantInitializationComplete(slot: Int) => + ImplantInitializationComplete(slot) - case Player.StaminaRegen() => - if(staminaRegen == Default.Cancellable) { + case Player.StaminaRegen() => + if (staminaRegen == Default.Cancellable) { + staminaRegen.cancel + staminaRegen = + context.system.scheduler.scheduleOnce(delay = 500 milliseconds, self, PlayerControl.StaminaRegen()) + } + + case PlayerControl.StaminaRegen() => staminaRegen.cancel - staminaRegen = context.system.scheduler.scheduleOnce(delay = 500 milliseconds, self, PlayerControl.StaminaRegen()) - } - - case PlayerControl.StaminaRegen() => - staminaRegen.cancel - if (player.isAlive) { - if (player.skipStaminaRegenForTurns > 0) { - // Do not renew stamina for a while - player.skipStaminaRegenForTurns -= 1 - } - else if ((player.VehicleSeated.nonEmpty || !player.isMoving && !player.Jumping) && player.Stamina < player.MaxStamina) { - // Regen stamina roughly every 500ms - StaminaChanged(changeInStamina = 1) - } - } - staminaRegen = context.system.scheduler.scheduleOnce(delay = 500 milliseconds, self, PlayerControl.StaminaRegen()) - - case Player.StaminaChanged(Some(changeInStamina)) => - StaminaChanged(changeInStamina) - - case Player.StaminaChanged(None) => - UpdateStamina() - - case Player.Die() => - if(player.isAlive) { - DestructionAwareness(player, None) - } - - case CommonMessages.Use(user, Some(item : Tool)) if item.Definition == GlobalDefinitions.medicalapplicator && player.isAlive => - //heal - val originalHealth = player.Health - val definition = player.Definition - if(player.MaxHealth > 0 && originalHealth < player.MaxHealth && - user.Faction == player.Faction && - item.Magazine > 0 && - Vector3.Distance(user.Position, player.Position) < definition.RepairDistance) { - val zone = player.Zone - val events = zone.AvatarEvents - val uname = user.Name - val guid = player.GUID - if(!(player.isMoving || user.isMoving)) { //only allow stationary heals - val newHealth = player.Health = originalHealth + 10 - val magazine = item.Discharge() - events ! AvatarServiceMessage(uname, AvatarAction.SendResponse(Service.defaultPlayerGUID, InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong))) - events ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttributeToAll(guid, 0, newHealth)) - player.History(HealFromEquipment(PlayerSource(player), PlayerSource(user), newHealth - originalHealth, GlobalDefinitions.medicalapplicator)) - } - if(player != user) { - //"Someone is trying to heal you" - events ! AvatarServiceMessage(player.Name, AvatarAction.PlanetsideAttributeToAll(guid, 55, 1)) - //progress bar remains visible for all heal attempts - events ! AvatarServiceMessage(uname, AvatarAction.SendResponse(Service.defaultPlayerGUID, RepairMessage(guid, player.Health * 100 / definition.MaxHealth))) - } - } - - case CommonMessages.Use(user, Some(item : Tool)) if item.Definition == GlobalDefinitions.medicalapplicator => - //revive - if(user != player && - user.Faction == player.Faction && - user.isAlive && !user.isMoving && - !player.isAlive && !player.isBackpack && - item.Magazine >= 25) { - sender ! CommonMessages.Progress( - 4, - Players.FinishRevivingPlayer(player, user.Name, item), - Players.RevivingTickAction(player, user, item) - ) - } - - case CommonMessages.Use(user, Some(item : Tool)) if item.Definition == GlobalDefinitions.bank => - val originalArmor = player.Armor - val definition = player.Definition - if(player.MaxArmor > 0 && originalArmor < player.MaxArmor && - user.Faction == player.Faction && - item.AmmoType == Ammo.armor_canister && item.Magazine > 0 && - Vector3.Distance(user.Position, player.Position) < definition.RepairDistance) { - val zone = player.Zone - val events = zone.AvatarEvents - val uname = user.Name - val guid = player.GUID - if(!(player.isMoving || user.isMoving)) { //only allow stationary repairs - val newArmor = player.Armor = originalArmor + Repairable.Quality + RepairValue(item) + definition.RepairMod - val magazine = item.Discharge() - events ! AvatarServiceMessage(uname, AvatarAction.SendResponse(Service.defaultPlayerGUID, InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong))) - events ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttributeToAll(guid, 4, player.Armor)) - player.History(RepairFromEquipment(PlayerSource(player), PlayerSource(user), newArmor - originalArmor, GlobalDefinitions.bank)) - } - if(player != user) { - if(player.isAlive) { - //"Someone is trying to repair you" gets strobed twice for visibility - val msg = AvatarServiceMessage(player.Name, AvatarAction.PlanetsideAttributeToAll(guid, 56, 1)) - events ! msg - import scala.concurrent.ExecutionContext.Implicits.global - context.system.scheduler.scheduleOnce(250 milliseconds, events, msg) + if (player.isAlive) { + if (player.skipStaminaRegenForTurns > 0) { + // Do not renew stamina for a while + player.skipStaminaRegenForTurns -= 1 + } else if ( + (player.VehicleSeated.nonEmpty || !player.isMoving && !player.Jumping) && player.Stamina < player.MaxStamina + ) { + // Regen stamina roughly every 500ms + StaminaChanged(changeInStamina = 1) } - //progress bar remains visible for all repair attempts - events ! AvatarServiceMessage(uname, AvatarAction.SendResponse(Service.defaultPlayerGUID, RepairMessage(guid, player.Armor * 100 / player.MaxArmor))) } - } + staminaRegen = + context.system.scheduler.scheduleOnce(delay = 500 milliseconds, self, PlayerControl.StaminaRegen()) - case Terminal.TerminalMessage(_, msg, order) => - order match { - case Terminal.BuyExosuit(exosuit, subtype) => - val time = System.currentTimeMillis - var toDelete : List[InventoryItem] = Nil - val originalSuit = player.ExoSuit - val originalSubtype = Loadout.DetermineSubtype(player) - val requestToChangeArmor = originalSuit != exosuit || originalSubtype != subtype - val allowedToChangeArmor = Players.CertificationToUseExoSuit(player, exosuit, subtype) && - (if (exosuit == ExoSuitType.MAX) { - if (time - player.GetLastUsedTime(exosuit, subtype) < 300000L) { - false - } - else { - player.SetLastUsedTime(exosuit, subtype, time) - true - } + case Player.StaminaChanged(Some(changeInStamina)) => + StaminaChanged(changeInStamina) + + case Player.StaminaChanged(None) => + UpdateStamina() + + case Player.Die() => + if (player.isAlive) { + DestructionAwareness(player, None) + } + + case CommonMessages.Use(user, Some(item: Tool)) + if item.Definition == GlobalDefinitions.medicalapplicator && player.isAlive => + //heal + val originalHealth = player.Health + val definition = player.Definition + if ( + player.MaxHealth > 0 && originalHealth < player.MaxHealth && + user.Faction == player.Faction && + item.Magazine > 0 && + Vector3.Distance(user.Position, player.Position) < definition.RepairDistance + ) { + val zone = player.Zone + val events = zone.AvatarEvents + val uname = user.Name + val guid = player.GUID + if (!(player.isMoving || user.isMoving)) { //only allow stationary heals + val newHealth = player.Health = originalHealth + 10 + val magazine = item.Discharge() + events ! AvatarServiceMessage( + uname, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong) + ) + ) + events ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttributeToAll(guid, 0, newHealth)) + player.History( + HealFromEquipment( + PlayerSource(player), + PlayerSource(user), + newHealth - originalHealth, + GlobalDefinitions.medicalapplicator + ) + ) + } + if (player != user) { + //"Someone is trying to heal you" + events ! AvatarServiceMessage(player.Name, AvatarAction.PlanetsideAttributeToAll(guid, 55, 1)) + //progress bar remains visible for all heal attempts + events ! AvatarServiceMessage( + uname, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + RepairMessage(guid, player.Health * 100 / definition.MaxHealth) + ) + ) + } + } + + case CommonMessages.Use(user, Some(item: Tool)) if item.Definition == GlobalDefinitions.medicalapplicator => + //revive + if ( + user != player && + user.Faction == player.Faction && + user.isAlive && !user.isMoving && + !player.isAlive && !player.isBackpack && + item.Magazine >= 25 + ) { + sender ! CommonMessages.Progress( + 4, + Players.FinishRevivingPlayer(player, user.Name, item), + Players.RevivingTickAction(player, user, item) + ) + } + + case CommonMessages.Use(user, Some(item: Tool)) if item.Definition == GlobalDefinitions.bank => + val originalArmor = player.Armor + val definition = player.Definition + if ( + player.MaxArmor > 0 && originalArmor < player.MaxArmor && + user.Faction == player.Faction && + item.AmmoType == Ammo.armor_canister && item.Magazine > 0 && + Vector3.Distance(user.Position, player.Position) < definition.RepairDistance + ) { + val zone = player.Zone + val events = zone.AvatarEvents + val uname = user.Name + val guid = player.GUID + if (!(player.isMoving || user.isMoving)) { //only allow stationary repairs + val newArmor = player.Armor = + originalArmor + Repairable.Quality + RepairValue(item) + definition.RepairMod + val magazine = item.Discharge() + events ! AvatarServiceMessage( + uname, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong) + ) + ) + events ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttributeToAll(guid, 4, player.Armor)) + player.History( + RepairFromEquipment( + PlayerSource(player), + PlayerSource(user), + newArmor - originalArmor, + GlobalDefinitions.bank + ) + ) + } + if (player != user) { + if (player.isAlive) { + //"Someone is trying to repair you" gets strobed twice for visibility + val msg = AvatarServiceMessage(player.Name, AvatarAction.PlanetsideAttributeToAll(guid, 56, 1)) + events ! msg + import scala.concurrent.ExecutionContext.Implicits.global + context.system.scheduler.scheduleOnce(250 milliseconds, events, msg) } - else { - player.SetLastUsedTime(exosuit, subtype, time) + //progress bar remains visible for all repair attempts + events ! AvatarServiceMessage( + uname, + AvatarAction + .SendResponse(Service.defaultPlayerGUID, RepairMessage(guid, player.Armor * 100 / player.MaxArmor)) + ) + } + } + + case Terminal.TerminalMessage(_, msg, order) => + order match { + case Terminal.BuyExosuit(exosuit, subtype) => + val time = System.currentTimeMillis + var toDelete: List[InventoryItem] = Nil + val originalSuit = player.ExoSuit + val originalSubtype = Loadout.DetermineSubtype(player) + val requestToChangeArmor = originalSuit != exosuit || originalSubtype != subtype + val allowedToChangeArmor = Players.CertificationToUseExoSuit(player, exosuit, subtype) && + (if (exosuit == ExoSuitType.MAX) { + if (time - player.GetLastUsedTime(exosuit, subtype) < 300000L) { + false + } else { + player.SetLastUsedTime(exosuit, subtype, time) + true + } + } else { + player.SetLastUsedTime(exosuit, subtype, time) + true + }) + val result = if (requestToChangeArmor && allowedToChangeArmor) { + log.info(s"${player.Name} wants to change to a different exo-suit - $exosuit") + player.SetLastUsedTime(exosuit, subtype, System.currentTimeMillis()) + val beforeHolsters = Players.clearHolsters(player.Holsters().iterator) + val beforeInventory = player.Inventory.Clear() + //change suit + val originalArmor = player.Armor + player.ExoSuit = exosuit //changes the value of MaxArmor to reflect the new exo-suit + val toMaxArmor = player.MaxArmor + if (originalSuit != exosuit || originalSubtype != subtype || originalArmor > toMaxArmor) { + player.History(HealFromExoSuitChange(PlayerSource(player), exosuit)) + player.Armor = toMaxArmor + } else { + player.Armor = originalArmor + } + //ensure arm is down, even if it needs to go back up + if (player.DrawnSlot != Player.HandsDownSlot) { + player.DrawnSlot = Player.HandsDownSlot + } + val normalHolsters = if (originalSuit == ExoSuitType.MAX) { + val (maxWeapons, normalWeapons) = beforeHolsters.partition(elem => elem.obj.Size == EquipmentSize.Max) + toDelete ++= maxWeapons + normalWeapons + } else { + beforeHolsters + } + //populate holsters + val (afterHolsters, finalInventory) = if (exosuit == ExoSuitType.MAX) { + ( + normalHolsters, + Players.fillEmptyHolsters(List(player.Slot(4)).iterator, normalHolsters) ++ beforeInventory + ) + } else if (originalSuit == exosuit) { //note - this will rarely be the situation + (normalHolsters, Players.fillEmptyHolsters(player.Holsters().iterator, normalHolsters)) + } else { + val (afterHolsters, toInventory) = + normalHolsters.partition(elem => elem.obj.Size == player.Slot(elem.start).Size) + afterHolsters.foreach({ elem => player.Slot(elem.start).Equipment = elem.obj }) + val remainder = Players.fillEmptyHolsters(player.Holsters().iterator, toInventory ++ beforeInventory) + ( + player + .Holsters() + .zipWithIndex + .map { case (slot, i) => (slot.Equipment, i) } + .collect { case (Some(obj), index) => InventoryItem(obj, index) } + .toList, + remainder + ) + } + //put items back into inventory + val (stow, drop) = if (originalSuit == exosuit) { + (finalInventory, Nil) + } else { + val (a, b) = GridInventory.recoverInventory(finalInventory, player.Inventory) + ( + a, + b.map { + InventoryItem(_, -1) + } + ) + } + stow.foreach { elem => + player.Inventory.InsertQuickly(elem.start, elem.obj) + } + //deactivate non-passive implants + implantSlotTimers.keys.foreach { index => + val implantSlot = player.ImplantSlot(index) + if ( + implantSlot.Installed.nonEmpty && implantSlot.Active && (implantSlot.Charge( + originalSuit + ) > 0 || implantSlot.Charge(exosuit) > 0) + ) { + ImplantActivation(index, status = 0) + } + } + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Zone.Id, + AvatarAction.ChangeExosuit( + player.GUID, + exosuit, + subtype, + player.LastDrawnSlot, + exosuit == ExoSuitType.MAX && requestToChangeArmor, + beforeHolsters.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, + afterHolsters, + beforeInventory.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, + stow, + drop, + toDelete.map { case InventoryItem(obj, _) => (obj, obj.GUID) } + ) + ) true - }) - val result = if (requestToChangeArmor && allowedToChangeArmor) { - log.info(s"${player.Name} wants to change to a different exo-suit - $exosuit") - player.SetLastUsedTime(exosuit, subtype, System.currentTimeMillis()) - val beforeHolsters = Players.clearHolsters(player.Holsters().iterator) - val beforeInventory = player.Inventory.Clear() - //change suit - val originalArmor = player.Armor - player.ExoSuit = exosuit //changes the value of MaxArmor to reflect the new exo-suit - val toMaxArmor = player.MaxArmor - if (originalSuit != exosuit || originalSubtype != subtype || originalArmor > toMaxArmor) { - player.History(HealFromExoSuitChange(PlayerSource(player), exosuit)) - player.Armor = toMaxArmor + } else { + false } - else { + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, result) + ) + + case Terminal.InfantryLoadout(exosuit, subtype, holsters, inventory) => + log.info(s"wants to change equipment loadout to their option #${msg.unk1 + 1}") + val fallbackSubtype = 0 + val fallbackSuit = ExoSuitType.Standard + val originalSuit = player.ExoSuit + val originalSubtype = Loadout.DetermineSubtype(player) + //sanitize exo-suit for change + val dropPred = ContainableBehavior.DropPredicate(player) + val oldHolsters = Players.clearHolsters(player.Holsters().iterator) + val dropHolsters = oldHolsters.filter(dropPred) + val oldInventory = player.Inventory.Clear() + val dropInventory = oldInventory.filter(dropPred) + val toDeleteOrDrop: List[InventoryItem] = (player.FreeHand.Equipment match { + case Some(obj) => + val out = InventoryItem(obj, -1) + player.FreeHand.Equipment = None + if (dropPred(out)) { + List(out) + } else { + Nil + } + case _ => + Nil + }) ++ dropHolsters ++ dropInventory + //a loadout with a prohibited exo-suit type will result in the fallback exo-suit type + //imposed 5min delay on mechanized exo-suit switches + val time = System.currentTimeMillis() + val (nextSuit, nextSubtype) = + if ( + Players.CertificationToUseExoSuit(player, exosuit, subtype) && + (if (exosuit == ExoSuitType.MAX) { + if (time - player.GetLastUsedTime(exosuit, subtype) < 300000L) { + false + } else { + player.SetLastUsedTime(exosuit, subtype, time) + true + } + } else { + player.SetLastUsedTime(exosuit, subtype, time) + true + }) + ) { + (exosuit, subtype) + } else { + log.warn( + s"no longer has permission to wear the exo-suit type $exosuit; will wear $fallbackSuit instead" + ) + player.SetLastUsedTime(fallbackSuit, fallbackSubtype, time) + (fallbackSuit, fallbackSubtype) + } + //sanitize (incoming) inventory + //TODO equipment permissions; these loops may be expanded upon in future + val curatedHolsters = for { + item <- holsters + //id = item.obj.Definition.ObjectId + //lastTime = player.GetLastUsedTime(id) + if true + } yield item + val curatedInventory = for { + item <- inventory + //id = item.obj.Definition.ObjectId + //lastTime = player.GetLastUsedTime(id) + if true + } yield item + //update suit internally + val originalArmor = player.Armor + player.ExoSuit = nextSuit + val toMaxArmor = player.MaxArmor + if (originalSuit != nextSuit || originalSubtype != nextSubtype || originalArmor > toMaxArmor) { + player.History(HealFromExoSuitChange(PlayerSource(player), nextSuit)) + player.Armor = toMaxArmor + } else { player.Armor = originalArmor } //ensure arm is down, even if it needs to go back up if (player.DrawnSlot != Player.HandsDownSlot) { player.DrawnSlot = Player.HandsDownSlot } - val normalHolsters = if (originalSuit == ExoSuitType.MAX) { - val (maxWeapons, normalWeapons) = beforeHolsters.partition(elem => elem.obj.Size == EquipmentSize.Max) - toDelete ++= maxWeapons - normalWeapons - } - else { - beforeHolsters - } - //populate holsters - val (afterHolsters, finalInventory) = if (exosuit == ExoSuitType.MAX) { - (normalHolsters, Players.fillEmptyHolsters(List(player.Slot(4)).iterator, normalHolsters) ++ beforeInventory) - } - else if (originalSuit == exosuit) { //note - this will rarely be the situation - (normalHolsters, Players.fillEmptyHolsters(player.Holsters().iterator, normalHolsters)) - } - else { - val (afterHolsters, toInventory) = normalHolsters.partition(elem => elem.obj.Size == player.Slot(elem.start).Size) - afterHolsters.foreach({ elem => player.Slot(elem.start).Equipment = elem.obj }) - val remainder = Players.fillEmptyHolsters(player.Holsters().iterator, toInventory ++ beforeInventory) + //a change due to exo-suit permissions mismatch will result in (more) items being re-arranged and/or dropped + //dropped items are not registered and can just be forgotten + val (afterHolsters, afterInventory) = if (nextSuit == exosuit) { ( - player.Holsters() - .zipWithIndex - .map { case (slot, i) => (slot.Equipment, i) } - .collect { case (Some(obj), index) => InventoryItem(obj, index) } - .toList, - remainder + //melee slot preservation for MAX + if (nextSuit == ExoSuitType.MAX) { + holsters.filter(_.start == 4) + } else { + curatedHolsters.filterNot(dropPred) + }, + curatedInventory.filterNot(dropPred) ) + } else { + //our exo-suit type was hijacked by changing permissions; we shouldn't even be able to use that loadout(!) + //holsters + val leftoversForInventory = Players.fillEmptyHolsters( + player.Holsters().iterator, + (curatedHolsters ++ curatedInventory).filterNot(dropPred) + ) + val finalHolsters = player + .Holsters() + .zipWithIndex + .collect { case (slot, index) if slot.Equipment.nonEmpty => InventoryItem(slot.Equipment.get, index) } + .toList + //inventory + val (finalInventory, _) = GridInventory.recoverInventory(leftoversForInventory, player.Inventory) + (finalHolsters, finalInventory) } - //put items back into inventory - val (stow, drop) = if (originalSuit == exosuit) { - (finalInventory, Nil) - } - else { - val (a, b) = GridInventory.recoverInventory(finalInventory, player.Inventory) - (a, b.map { - InventoryItem(_, -1) - }) - } - stow.foreach { elem => - player.Inventory.InsertQuickly(elem.start, elem.obj) - } + (afterHolsters ++ afterInventory).foreach { entry => entry.obj.Faction = player.Faction } + toDeleteOrDrop.foreach { entry => entry.obj.Faction = PlanetSideEmpire.NEUTRAL } //deactivate non-passive implants implantSlotTimers.keys.foreach { index => val implantSlot = player.ImplantSlot(index) - if(implantSlot.Installed.nonEmpty && implantSlot.Active && (implantSlot.Charge(originalSuit) > 0 || implantSlot.Charge(exosuit) > 0)) { - ImplantActivation(index, status = 0) + if ( + implantSlot.Installed.nonEmpty && implantSlot.Active && (implantSlot.Charge( + originalSuit + ) > 0 || implantSlot.Charge(nextSuit) > 0) + ) { + ImplantActivation(index, status = 0) } } - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Zone.Id, - AvatarAction.ChangeExosuit(player.GUID, exosuit, subtype, player.LastDrawnSlot, exosuit == ExoSuitType.MAX && requestToChangeArmor, - beforeHolsters.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, afterHolsters, - beforeInventory.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, stow, drop, - toDelete.map { case InventoryItem(obj, _) => (obj, obj.GUID) } + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Zone.Id, + AvatarAction.ChangeLoadout( + player.GUID, + nextSuit, + nextSubtype, + player.LastDrawnSlot, + exosuit == ExoSuitType.MAX, + oldHolsters.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, + afterHolsters, + oldInventory.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, + afterInventory, + toDeleteOrDrop ) ) - true - } - else { - false - } - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, result)) - - case Terminal.InfantryLoadout(exosuit, subtype, holsters, inventory) => - log.info(s"wants to change equipment loadout to their option #${msg.unk1 + 1}") - val fallbackSubtype = 0 - val fallbackSuit = ExoSuitType.Standard - val originalSuit = player.ExoSuit - val originalSubtype = Loadout.DetermineSubtype(player) - //sanitize exo-suit for change - val dropPred = ContainableBehavior.DropPredicate(player) - val oldHolsters = Players.clearHolsters(player.Holsters().iterator) - val dropHolsters = oldHolsters.filter(dropPred) - val oldInventory = player.Inventory.Clear() - val dropInventory = oldInventory.filter(dropPred) - val toDeleteOrDrop : List[InventoryItem] = (player.FreeHand.Equipment match { - case Some(obj) => - val out = InventoryItem(obj, -1) - player.FreeHand.Equipment = None - if (dropPred(out)) { - List(out) - } - else { - Nil - } - case _ => - Nil - }) ++ dropHolsters ++ dropInventory - //a loadout with a prohibited exo-suit type will result in the fallback exo-suit type - //imposed 5min delay on mechanized exo-suit switches - val time = System.currentTimeMillis() - val (nextSuit, nextSubtype) = if (Players.CertificationToUseExoSuit(player, exosuit, subtype) && - (if (exosuit == ExoSuitType.MAX) { - if (time - player.GetLastUsedTime(exosuit, subtype) < 300000L) { - false - } - else { - player.SetLastUsedTime(exosuit, subtype, time) - true - } - } - else { - player.SetLastUsedTime(exosuit, subtype, time) - true - })) { - (exosuit, subtype) - } - else { - log.warn(s"no longer has permission to wear the exo-suit type $exosuit; will wear $fallbackSuit instead") - player.SetLastUsedTime(fallbackSuit, fallbackSubtype, time) - (fallbackSuit, fallbackSubtype) - } - //sanitize (incoming) inventory - //TODO equipment permissions; these loops may be expanded upon in future - val curatedHolsters = for { - item <- holsters - //id = item.obj.Definition.ObjectId - //lastTime = player.GetLastUsedTime(id) - if true - } yield item - val curatedInventory = for { - item <- inventory - //id = item.obj.Definition.ObjectId - //lastTime = player.GetLastUsedTime(id) - if true - } yield item - //update suit internally - val originalArmor = player.Armor - player.ExoSuit = nextSuit - val toMaxArmor = player.MaxArmor - if (originalSuit != nextSuit || originalSubtype != nextSubtype || originalArmor > toMaxArmor) { - player.History(HealFromExoSuitChange(PlayerSource(player), nextSuit)) - player.Armor = toMaxArmor - } - else { - player.Armor = originalArmor - } - //ensure arm is down, even if it needs to go back up - if (player.DrawnSlot != Player.HandsDownSlot) { - player.DrawnSlot = Player.HandsDownSlot - } - //a change due to exo-suit permissions mismatch will result in (more) items being re-arranged and/or dropped - //dropped items are not registered and can just be forgotten - val (afterHolsters, afterInventory) = if (nextSuit == exosuit) { - ( - //melee slot preservation for MAX - if (nextSuit == ExoSuitType.MAX) { - holsters.filter(_.start == 4) - } - else { - curatedHolsters.filterNot(dropPred) - }, - curatedInventory.filterNot(dropPred) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, true) ) - } - else { - //our exo-suit type was hijacked by changing permissions; we shouldn't even be able to use that loadout(!) - //holsters - val leftoversForInventory = Players.fillEmptyHolsters( - player.Holsters().iterator, - (curatedHolsters ++ curatedInventory).filterNot(dropPred) - ) - val finalHolsters = player.Holsters() - .zipWithIndex - .collect { case (slot, index) if slot.Equipment.nonEmpty => InventoryItem(slot.Equipment.get, index) } - .toList - //inventory - val (finalInventory, _) = GridInventory.recoverInventory(leftoversForInventory, player.Inventory) - (finalHolsters, finalInventory) - } - (afterHolsters ++ afterInventory).foreach { entry => entry.obj.Faction = player.Faction } - toDeleteOrDrop.foreach { entry => entry.obj.Faction = PlanetSideEmpire.NEUTRAL } - //deactivate non-passive implants - implantSlotTimers.keys.foreach { index => - val implantSlot = player.ImplantSlot(index) - if(implantSlot.Installed.nonEmpty && implantSlot.Active && (implantSlot.Charge(originalSuit) > 0 || implantSlot.Charge(nextSuit) > 0)) { - ImplantActivation(index, status = 0) - } - } - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Zone.Id, - AvatarAction.ChangeLoadout(player.GUID, nextSuit, nextSubtype, player.LastDrawnSlot, exosuit == ExoSuitType.MAX, - oldHolsters.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, afterHolsters, - oldInventory.map { case InventoryItem(obj, _) => (obj, obj.GUID) }, afterInventory, toDeleteOrDrop) - ) - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, true)) - case Terminal.LearnImplant(implant) => - val zone = player.Zone - val events = zone.AvatarEvents - val playerChannel = player.Name - val terminal_guid = msg.terminal_guid - val implant_type = implant.Type - val message = s"wants to learn $implant_type" - val (interface, slotNumber) = player.VehicleSeated match { - case Some(mech_guid) => - ( - zone.Map.TerminalToInterface.get(mech_guid.guid), - if(!player.Implants.exists({ case (implantType, _, _) => implantType == implant_type })) { - //no duplicates - player.InstallImplant(implant) - } - else { - None - } - ) - case _ => - (None, None) - } - val result = if(interface.contains(terminal_guid.guid) && slotNumber.isDefined) { - val slot = slotNumber.get - log.info(s"$message - put in slot $slot") - events ! AvatarServiceMessage(playerChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(player.GUID, ImplantAction.Add, slot, implant_type.id))) - ImplantInitializationStart(slot) - true - } - else { - if(interface.isEmpty) { - log.warn(s"$message - not interacting with a terminal") - } - else if(!interface.contains(terminal_guid.guid)) { - log.warn(s"$message - interacting with the wrong terminal, ${interface.get}") - } - else if(slotNumber.isEmpty) { - log.warn(s"$message - already knows that implant") - } - else { - log.warn(s"$message - forgot to sit at a terminal") - } - false - } - events ! AvatarServiceMessage(playerChannel, AvatarAction.TerminalOrderResult(terminal_guid, msg.transaction_type, result)) - - case Terminal.SellImplant(implant) => - val zone = player.Zone - val events = zone.AvatarEvents - val playerChannel = player.Name - val terminal_guid = msg.terminal_guid - val implant_type = implant.Type - val (interface, slotNumber) = player.VehicleSeated match { - case Some(mech_guid) => - ( - zone.Map.TerminalToInterface.get(mech_guid.guid), - player.UninstallImplant(implant_type) - ) - case None => - (None, None) - } - val result = if(interface.contains(terminal_guid.guid) && slotNumber.isDefined) { - val slot = slotNumber.get - log.info(s"is uninstalling $implant_type - take from slot $slot") - UninitializeImplant(slot) - events ! AvatarServiceMessage(playerChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(player.GUID, ImplantAction.Remove, slot, 0))) - true - } - else { - val message = s"${player.Name} can not sell $implant_type" - if(interface.isEmpty) { - log.warn(s"$message - not interacting with a terminal") - } - else if(!interface.contains(terminal_guid.guid)) { - log.warn(s"$message - interacting with the wrong terminal, ${interface.get}") - } - else if(slotNumber.isEmpty) { - log.warn(s"$message - does not know that implant") - } - else { - log.warn(s"$message - forgot to sit at a terminal") - } - false - } - events ! AvatarServiceMessage(playerChannel, AvatarAction.TerminalOrderResult(terminal_guid, msg.transaction_type, result)) - - case _ => ; //terminal messages not handled here - } - - case Zone.Ground.ItemOnGround(item, _, _) => ; - val name = player.Name - val zone = player.Zone - val avatarEvents = zone.AvatarEvents - val localEvents = zone.LocalEvents - item match { - case trigger : BoomerTrigger => - //dropped the trigger, no longer own the boomer; make certain whole faction is aware of that - (zone.GUID(trigger.Companion), zone.Players.find { _.name == name}) match { - case (Some(boomer : BoomerDeployable), Some(avatar)) => - val guid = boomer.GUID - val factionChannel = boomer.Faction.toString - if(avatar.Deployables.Remove(boomer)) { - boomer.Faction = PlanetSideEmpire.NEUTRAL - boomer.AssignOwnership(None) - avatar.Deployables.UpdateUIElement(boomer.Definition.Item).foreach { case (currElem, curr, maxElem, max) => - avatarEvents ! AvatarServiceMessage(name, AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, maxElem, max)) - avatarEvents ! AvatarServiceMessage(name, AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, currElem, curr)) - } - localEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(boomer, zone)) - localEvents ! LocalServiceMessage(factionChannel, - LocalAction.DeployableMapIcon(Service.defaultPlayerGUID, DeploymentAction.Dismiss, - DeployableInfo(guid, DeployableIcon.Boomer, boomer.Position, PlanetSideGUID(0)) - ) + case Terminal.LearnImplant(implant) => + val zone = player.Zone + val events = zone.AvatarEvents + val playerChannel = player.Name + val terminal_guid = msg.terminal_guid + val implant_type = implant.Type + val message = s"wants to learn $implant_type" + val (interface, slotNumber) = player.VehicleSeated match { + case Some(mech_guid) => + ( + zone.Map.TerminalToInterface.get(mech_guid.guid), + if (!player.Implants.exists({ case (implantType, _, _) => implantType == implant_type })) { + //no duplicates + player.InstallImplant(implant) + } else { + None + } ) - avatarEvents ! AvatarServiceMessage(factionChannel, AvatarAction.SetEmpire(Service.defaultPlayerGUID, guid, PlanetSideEmpire.NEUTRAL)) + case _ => + (None, None) + } + val result = if (interface.contains(terminal_guid.guid) && slotNumber.isDefined) { + val slot = slotNumber.get + log.info(s"$message - put in slot $slot") + events ! AvatarServiceMessage( + playerChannel, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(player.GUID, ImplantAction.Add, slot, implant_type.id) + ) + ) + ImplantInitializationStart(slot) + true + } else { + if (interface.isEmpty) { + log.warn(s"$message - not interacting with a terminal") + } else if (!interface.contains(terminal_guid.guid)) { + log.warn(s"$message - interacting with the wrong terminal, ${interface.get}") + } else if (slotNumber.isEmpty) { + log.warn(s"$message - already knows that implant") + } else { + log.warn(s"$message - forgot to sit at a terminal") } - case _ => ; //pointless trigger? or a trigger being deleted? - } - case _ => ; - } + false + } + events ! AvatarServiceMessage( + playerChannel, + AvatarAction.TerminalOrderResult(terminal_guid, msg.transaction_type, result) + ) + case Terminal.SellImplant(implant) => + val zone = player.Zone + val events = zone.AvatarEvents + val playerChannel = player.Name + val terminal_guid = msg.terminal_guid + val implant_type = implant.Type + val (interface, slotNumber) = player.VehicleSeated match { + case Some(mech_guid) => + ( + zone.Map.TerminalToInterface.get(mech_guid.guid), + player.UninstallImplant(implant_type) + ) + case None => + (None, None) + } + val result = if (interface.contains(terminal_guid.guid) && slotNumber.isDefined) { + val slot = slotNumber.get + log.info(s"is uninstalling $implant_type - take from slot $slot") + UninitializeImplant(slot) + events ! AvatarServiceMessage( + playerChannel, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(player.GUID, ImplantAction.Remove, slot, 0) + ) + ) + true + } else { + val message = s"${player.Name} can not sell $implant_type" + if (interface.isEmpty) { + log.warn(s"$message - not interacting with a terminal") + } else if (!interface.contains(terminal_guid.guid)) { + log.warn(s"$message - interacting with the wrong terminal, ${interface.get}") + } else if (slotNumber.isEmpty) { + log.warn(s"$message - does not know that implant") + } else { + log.warn(s"$message - forgot to sit at a terminal") + } + false + } + events ! AvatarServiceMessage( + playerChannel, + AvatarAction.TerminalOrderResult(terminal_guid, msg.transaction_type, result) + ) - case Zone.Ground.CanNotDropItem(_, item, reason) => - log.warn(s"${player.Name} tried to drop a ${item.Definition.Name} on the ground, but it $reason") + case _ => ; //terminal messages not handled here + } - case Zone.Ground.ItemInHand(_) => ; + case Zone.Ground.ItemOnGround(item, _, _) => + ; + val name = player.Name + val zone = player.Zone + val avatarEvents = zone.AvatarEvents + val localEvents = zone.LocalEvents + item match { + case trigger: BoomerTrigger => + //dropped the trigger, no longer own the boomer; make certain whole faction is aware of that + (zone.GUID(trigger.Companion), zone.Players.find { _.name == name }) match { + case (Some(boomer: BoomerDeployable), Some(avatar)) => + val guid = boomer.GUID + val factionChannel = boomer.Faction.toString + if (avatar.Deployables.Remove(boomer)) { + boomer.Faction = PlanetSideEmpire.NEUTRAL + boomer.AssignOwnership(None) + avatar.Deployables.UpdateUIElement(boomer.Definition.Item).foreach { + case (currElem, curr, maxElem, max) => + avatarEvents ! AvatarServiceMessage( + name, + AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, maxElem, max) + ) + avatarEvents ! AvatarServiceMessage( + name, + AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, currElem, curr) + ) + } + localEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(boomer, zone)) + localEvents ! LocalServiceMessage( + factionChannel, + LocalAction.DeployableMapIcon( + Service.defaultPlayerGUID, + DeploymentAction.Dismiss, + DeployableInfo(guid, DeployableIcon.Boomer, boomer.Position, PlanetSideGUID(0)) + ) + ) + avatarEvents ! AvatarServiceMessage( + factionChannel, + AvatarAction.SetEmpire(Service.defaultPlayerGUID, guid, PlanetSideEmpire.NEUTRAL) + ) + } + case _ => ; //pointless trigger? or a trigger being deleted? + } + case _ => ; + } - case Zone.Ground.CanNotPickupItem(_, item_guid, reason) => - log.warn(s"${player.Name} failed to pick up an item ($item_guid) from the ground because $reason") + case Zone.Ground.CanNotDropItem(_, item, reason) => + log.warn(s"${player.Name} tried to drop a ${item.Definition.Name} on the ground, but it $reason") - case _ => ; - } + case Zone.Ground.ItemInHand(_) => ; - protected def TakesDamage : Receive = { + case Zone.Ground.CanNotPickupItem(_, item_guid, reason) => + log.warn(s"${player.Name} failed to pick up an item ($item_guid) from the ground because $reason") + + case _ => ; + } + + protected def TakesDamage: Receive = { case Vitality.Damage(applyDamageTo) => - if(player.isAlive) { - val originalHealth = player.Health - val originalArmor = player.Armor - val originalStamina = player.Stamina + if (player.isAlive) { + val originalHealth = player.Health + val originalArmor = player.Armor + val originalStamina = player.Stamina val originalCapacitor = player.Capacitor.toInt - val cause = applyDamageTo(player) - val health = player.Health - val armor = player.Armor - val stamina = player.Stamina - val capacitor = player.Capacitor.toInt - val damageToHealth = originalHealth - health - val damageToArmor = originalArmor - armor - val damageToStamina = originalStamina - stamina + val cause = applyDamageTo(player) + val health = player.Health + val armor = player.Armor + val stamina = player.Stamina + val capacitor = player.Capacitor.toInt + val damageToHealth = originalHealth - health + val damageToArmor = originalArmor - armor + val damageToStamina = originalStamina - stamina val damageToCapacitor = originalCapacitor - capacitor HandleDamage(player, cause, damageToHealth, damageToArmor, damageToStamina, damageToCapacitor) - if(damageToHealth > 0 || damageToArmor > 0 || damageToStamina > 0 || damageToCapacitor > 0) { - damageLog.info(s"${player.Name}-infantry: BEFORE=$originalHealth/$originalArmor/$originalStamina/$originalCapacitor, AFTER=$health/$armor/$stamina/$capacitor, CHANGE=$damageToHealth/$damageToArmor/$damageToStamina/$damageToCapacitor") + if (damageToHealth > 0 || damageToArmor > 0 || damageToStamina > 0 || damageToCapacitor > 0) { + damageLog.info( + s"${player.Name}-infantry: BEFORE=$originalHealth/$originalArmor/$originalStamina/$originalCapacitor, AFTER=$health/$armor/$stamina/$capacitor, CHANGE=$damageToHealth/$damageToArmor/$damageToStamina/$damageToCapacitor" + ) } } } @@ -565,25 +672,35 @@ class PlayerControl(player : Player) extends Actor * na * @param target na */ - def HandleDamage(target : Player, cause : ResolvedProjectile, damageToHealth : Int, damageToArmor : Int, damageToStamina : Int, damageToCapacitor : Int) : Unit = { + def HandleDamage( + target: Player, + cause: ResolvedProjectile, + damageToHealth: Int, + damageToArmor: Int, + damageToStamina: Int, + damageToCapacitor: Int + ): Unit = { val targetGUID = target.GUID - val zone = target.Zone - val zoneId = zone.Id - val events = zone.AvatarEvents - val health = target.Health - if(damageToArmor > 0) { + val zone = target.Zone + val zoneId = zone.Id + val events = zone.AvatarEvents + val health = target.Health + if (damageToArmor > 0) { events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 4, target.Armor)) } - if(health > 0) { - if(damageToCapacitor > 0) { - events ! AvatarServiceMessage(target.Name, AvatarAction.PlanetsideAttributeSelf(targetGUID, 7, target.Capacitor.toLong)) + if (health > 0) { + if (damageToCapacitor > 0) { + events ! AvatarServiceMessage( + target.Name, + AvatarAction.PlanetsideAttributeSelf(targetGUID, 7, target.Capacitor.toLong) + ) } - if(damageToHealth > 0 || damageToStamina > 0) { + if (damageToHealth > 0 || damageToStamina > 0) { target.History(cause) - if(damageToHealth > 0) { + if (damageToHealth > 0) { events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 0, health)) } - if(damageToStamina > 0) { + if (damageToStamina > 0) { UpdateStamina() } //activity on map @@ -591,11 +708,10 @@ class PlayerControl(player : Player) extends Actor //alert damage source DamageAwareness(target, cause) } - if(Damageable.CanJammer(target, cause)) { + if (Damageable.CanJammer(target, cause)) { target.Actor ! JammableUnit.Jammered(cause) } - } - else { + } else { DestructionAwareness(target, Some(cause)) } } @@ -605,18 +721,20 @@ class PlayerControl(player : Player) extends Actor * @param target na * @param cause na */ - def DamageAwareness(target : Player, cause : ResolvedProjectile) : Unit = { + def DamageAwareness(target: Player, cause: ResolvedProjectile): Unit = { val zone = target.Zone zone.AvatarEvents ! AvatarServiceMessage( target.Name, cause.projectile.owner match { - case pSource : PlayerSource => //player damage + case pSource: PlayerSource => //player damage val name = pSource.Name zone.LivePlayers.find(_.Name == name).orElse(zone.Corpses.find(_.Name == name)) match { case Some(tplayer) => AvatarAction.HitHint(tplayer.GUID, target.GUID) - case None => AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, pSource.Position)) + case None => + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, pSource.Position)) } - case source => AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, source.Position)) + case source => + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, source.Position)) } ) } @@ -636,14 +754,14 @@ class PlayerControl(player : Player) extends Actor * @param target na * @param cause na */ - def DestructionAwareness(target : Player, cause : Option[ResolvedProjectile]) : Unit = { - val player_guid = target.GUID - val pos = target.Position + def DestructionAwareness(target: Player, cause: Option[ResolvedProjectile]): Unit = { + val player_guid = target.GUID + val pos = target.Position val respawnTimer = 300000 //milliseconds - val zone = target.Zone - val events = zone.AvatarEvents - val nameChannel = target.Name - val zoneChannel = zone.Id + val zone = target.Zone + val events = zone.AvatarEvents + val nameChannel = target.Name + val zoneChannel = zone.Id target.Die //unjam CancelJammeredSound(target) @@ -652,13 +770,17 @@ class PlayerControl(player : Player) extends Actor target.Stamina = 0 UpdateStamina() //turn off implants / OutOfStamina //uninitialize implants - target.Implants.indices.foreach { case slot if target.Implant(slot) != ImplantType.None => - UninitializeImplant(slot) + target.Implants.indices.foreach { + case slot if target.Implant(slot) != ImplantType.None => + UninitializeImplant(slot) } target.ResetAllImplants() //anything else specific to the backend - events ! AvatarServiceMessage(nameChannel, AvatarAction.Killed(player_guid, target.VehicleSeated)) //align client interface fields with state + events ! AvatarServiceMessage( + nameChannel, + AvatarAction.Killed(player_guid, target.VehicleSeated) + ) //align client interface fields with state zone.GUID(target.VehicleSeated) match { - case Some(obj : Mountable) => + case Some(obj: Mountable) => //boot cadaver from seat internally (vehicle perspective) obj.PassengerInSeat(target) match { case Some(index) => @@ -666,8 +788,12 @@ class PlayerControl(player : Player) extends Actor case _ => ; } //boot cadaver from seat on client - events ! AvatarServiceMessage(nameChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, - ObjectDetachMessage(obj.GUID, player_guid, target.Position, Vector3.Zero)) + events ! AvatarServiceMessage( + nameChannel, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + ObjectDetachMessage(obj.GUID, player_guid, target.Position, Vector3.Zero) + ) ) //make player invisible on client events ! AvatarServiceMessage(nameChannel, AvatarAction.PlanetsideAttributeToAll(player_guid, 29, 1)) @@ -676,18 +802,18 @@ class PlayerControl(player : Player) extends Actor case _ => ; } events ! AvatarServiceMessage(zoneChannel, AvatarAction.PlanetsideAttributeToAll(player_guid, 0, 0)) //health - if(target.Capacitor > 0) { + if (target.Capacitor > 0) { target.Capacitor = 0 events ! AvatarServiceMessage(nameChannel, AvatarAction.PlanetsideAttributeToAll(player_guid, 7, 0)) // capacitor } val attribute = cause match { case Some(resolved) => resolved.projectile.owner match { - case pSource : PlayerSource => + case pSource: PlayerSource => val name = pSource.Name zone.LivePlayers.find(_.Name == name).orElse(zone.Corpses.find(_.Name == name)) match { case Some(tplayer) => tplayer.GUID - case None => player_guid + case None => player_guid } case _ => player_guid } @@ -695,24 +821,29 @@ class PlayerControl(player : Player) extends Actor } events ! AvatarServiceMessage( nameChannel, - AvatarAction.SendResponse(Service.defaultPlayerGUID, DestroyMessage(player_guid, attribute, Service.defaultPlayerGUID, pos)) //how many players get this message? + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + DestroyMessage(player_guid, attribute, Service.defaultPlayerGUID, pos) + ) //how many players get this message? ) events ! AvatarServiceMessage( nameChannel, - AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarDeadStateMessage(DeadState.Dead, respawnTimer, respawnTimer, pos, target.Faction, true)) + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarDeadStateMessage(DeadState.Dead, respawnTimer, respawnTimer, pos, target.Faction, true) + ) ) //TODO other methods of death? val pentry = PlayerSource(target) - (target.History.find({p => p.isInstanceOf[PlayerSuicide]}) match { + (target.History.find({ p => p.isInstanceOf[PlayerSuicide] }) match { case Some(PlayerSuicide(_)) => None case _ => cause.orElse { target.LastShot } match { case out @ Some(shot) => - if(System.nanoTime - shot.hit_time < (10 seconds).toNanos) { + if (System.nanoTime - shot.hit_time < (10 seconds).toNanos) { out - } - else { + } else { None //suicide } case None => @@ -720,7 +851,10 @@ class PlayerControl(player : Player) extends Actor } }) match { case Some(shot) => - events ! AvatarServiceMessage(zoneChannel, AvatarAction.DestroyDisplay(shot.projectile.owner, pentry, shot.projectile.attribute_to)) + events ! AvatarServiceMessage( + zoneChannel, + AvatarAction.DestroyDisplay(shot.projectile.owner, pentry, shot.projectile.attribute_to) + ) case None => events ! AvatarServiceMessage(zoneChannel, AvatarAction.DestroyDisplay(pentry, pentry, 0)) } @@ -735,12 +869,16 @@ class PlayerControl(player : Player) extends Actor * @param dur the duration of the timer, in milliseconds; * by default, 30000 */ - override def StartJammeredSound(target : Any, dur : Int) : Unit = target match { - case obj : Player if !jammedSound => - obj.Zone.AvatarEvents ! AvatarServiceMessage(obj.Zone.Id, AvatarAction.PlanetsideAttributeToAll(obj.GUID, 27, 1)) - super.StartJammeredSound(obj, 3000) - case _ => ; - } + override def StartJammeredSound(target: Any, dur: Int): Unit = + target match { + case obj: Player if !jammedSound => + obj.Zone.AvatarEvents ! AvatarServiceMessage( + obj.Zone.Id, + AvatarAction.PlanetsideAttributeToAll(obj.GUID, 27, 1) + ) + super.StartJammeredSound(obj, 3000) + case _ => ; + } /** * Perform a variety of tasks to indicate being jammered. @@ -751,11 +889,14 @@ class PlayerControl(player : Player) extends Actor * @param target an object that can be affected by the jammered status * @param dur the duration of the timer, in milliseconds */ - override def StartJammeredStatus(target : Any, dur : Int) : Unit = { + override def StartJammeredStatus(target: Any, dur: Int): Unit = { //TODO these features val zone = player.Zone player.Implants.indices.foreach { slot => // Deactivate & uninitialize all implants - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2)) // Deactivation sound / effect + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2) + ) // Deactivation sound / effect ImplantActivation(slot, status = 0) UninitializeImplant(slot) } @@ -764,7 +905,7 @@ class PlayerControl(player : Player) extends Actor } override def CancelJammeredStatus(target: Any): Unit = { - player.Implants.indices.foreach { slot => // Start reinitializing all implants + player.Implants.indices.foreach { slot => // Start reinitializing all implants player.ImplantSlot(slot).InitializeTime = 0 //setting time to 0 will restart implant initialization (eventually) ImplantInitializationStart(slot) } @@ -776,21 +917,25 @@ class PlayerControl(player : Player) extends Actor * @see `JammableBehavior.CancelJammeredSound` * @param target an object that can be affected by the jammered status */ - override def CancelJammeredSound(target : Any) : Unit = target match { - case obj : Player if jammedSound => - obj.Zone.AvatarEvents ! AvatarServiceMessage(obj.Zone.Id, AvatarAction.PlanetsideAttributeToAll(obj.GUID, 27, 0)) - super.CancelJammeredSound(obj) - case _ => ; - } + override def CancelJammeredSound(target: Any): Unit = + target match { + case obj: Player if jammedSound => + obj.Zone.AvatarEvents ! AvatarServiceMessage( + obj.Zone.Id, + AvatarAction.PlanetsideAttributeToAll(obj.GUID, 27, 0) + ) + super.CancelJammeredSound(obj) + case _ => ; + } - def RepairValue(item : Tool) : Int = if(player.ExoSuit != ExoSuitType.MAX) { - item.FireMode.Modifiers.Damage0 - } - else { - item.FireMode.Modifiers.Damage3 - } + def RepairValue(item: Tool): Int = + if (player.ExoSuit != ExoSuitType.MAX) { + item.FireMode.Modifiers.Damage0 + } else { + item.FireMode.Modifiers.Damage3 + } - def MessageDeferredCallback(msg : Any) : Unit = { + def MessageDeferredCallback(msg: Any): Unit = { msg match { case Containable.MoveItem(_, item, _) => //momentarily put item back where it was originally @@ -807,26 +952,26 @@ class PlayerControl(player : Player) extends Actor } } - def RemoveItemFromSlotCallback(item : Equipment, slot : Int) : Unit = { - val obj = ContainerObject - val zone = obj.Zone - val events = zone.AvatarEvents - val toChannel = if(obj.VisibleSlots.contains(slot)) zone.Id else player.Name + def RemoveItemFromSlotCallback(item: Equipment, slot: Int): Unit = { + val obj = ContainerObject + val zone = obj.Zone + val events = zone.AvatarEvents + val toChannel = if (obj.VisibleSlots.contains(slot)) zone.Id else player.Name item.Faction = PlanetSideEmpire.NEUTRAL - if(slot == obj.DrawnSlot) { + if (slot == obj.DrawnSlot) { obj.DrawnSlot = Player.HandsDownSlot } events ! AvatarServiceMessage(toChannel, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item.GUID)) } - def PutItemInSlotCallback(item : Equipment, slot : Int) : Unit = { - val obj = ContainerObject - val guid = obj.GUID - val zone = obj.Zone - val events = zone.AvatarEvents - val name = player.Name + def PutItemInSlotCallback(item: Equipment, slot: Int): Unit = { + val obj = ContainerObject + val guid = obj.GUID + val zone = obj.Zone + val events = zone.AvatarEvents + val name = player.Name val definition = item.Definition - val faction = obj.Faction + val faction = obj.Faction item.Faction = faction events ! AvatarServiceMessage( name, @@ -840,31 +985,49 @@ class PlayerControl(player : Player) extends Actor ) ) ) - if(obj.VisibleSlots.contains(slot)) { + if (obj.VisibleSlots.contains(slot)) { events ! AvatarServiceMessage(zone.Id, AvatarAction.EquipmentInHand(guid, guid, slot, item)) } //handle specific types of items item match { - case trigger : BoomerTrigger => + case trigger: BoomerTrigger => //pick up the trigger, own the boomer; make certain whole faction is aware of that (zone.GUID(trigger.Companion), zone.Players.find { _.name == name }) match { - case (Some(boomer : BoomerDeployable), Some(avatar)) - if !boomer.OwnerName.contains(name) || boomer.Faction != faction => - val bguid = boomer.GUID - val faction = player.Faction + case (Some(boomer: BoomerDeployable), Some(avatar)) + if !boomer.OwnerName.contains(name) || boomer.Faction != faction => + val bguid = boomer.GUID + val faction = player.Faction val factionChannel = faction.toString - if(avatar.Deployables.Add(boomer)) { + if (avatar.Deployables.Add(boomer)) { boomer.Faction = faction boomer.AssignOwnership(player) - avatar.Deployables.UpdateUIElement(boomer.Definition.Item).foreach { case (currElem, curr, maxElem, max) => - events ! AvatarServiceMessage(name, AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, maxElem, max)) - events ! AvatarServiceMessage(name, AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, currElem, curr)) + avatar.Deployables.UpdateUIElement(boomer.Definition.Item).foreach { + case (currElem, curr, maxElem, max) => + events ! AvatarServiceMessage( + name, + AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, maxElem, max) + ) + events ! AvatarServiceMessage( + name, + AvatarAction.PlanetsideAttributeToAll(Service.defaultPlayerGUID, currElem, curr) + ) } zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(boomer), zone)) - events ! AvatarServiceMessage(factionChannel, AvatarAction.SetEmpire(Service.defaultPlayerGUID, bguid, faction)) - zone.LocalEvents ! LocalServiceMessage(factionChannel, - LocalAction.DeployableMapIcon(Service.defaultPlayerGUID, DeploymentAction.Build, - DeployableInfo(bguid, DeployableIcon.Boomer, boomer.Position, boomer.Owner.getOrElse(PlanetSideGUID(0))) + events ! AvatarServiceMessage( + factionChannel, + AvatarAction.SetEmpire(Service.defaultPlayerGUID, bguid, faction) + ) + zone.LocalEvents ! LocalServiceMessage( + factionChannel, + LocalAction.DeployableMapIcon( + Service.defaultPlayerGUID, + DeploymentAction.Build, + DeployableInfo( + bguid, + DeployableIcon.Boomer, + boomer.Position, + boomer.Owner.getOrElse(PlanetSideGUID(0)) + ) ) ) } @@ -874,20 +1037,23 @@ class PlayerControl(player : Player) extends Actor } } - def SwapItemCallback(item : Equipment) : Unit = { - val obj = ContainerObject + def SwapItemCallback(item: Equipment): Unit = { + val obj = ContainerObject val zone = obj.Zone - zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.SendResponse(Service.defaultPlayerGUID, ObjectDetachMessage(obj.GUID, item.GUID, Vector3.Zero, 0f))) + zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.SendResponse(Service.defaultPlayerGUID, ObjectDetachMessage(obj.GUID, item.GUID, Vector3.Zero, 0f)) + ) } /** * na * @param changeInStamina na */ - def StaminaChanged(changeInStamina : Int) : Unit = { + def StaminaChanged(changeInStamina: Int): Unit = { val beforeStamina = player.Stamina - val afterStamina = player.Stamina += changeInStamina - if(beforeStamina != afterStamina) { + val afterStamina = player.Stamina += changeInStamina + if (beforeStamina != afterStamina) { UpdateStamina() } } @@ -899,29 +1065,43 @@ class PlayerControl(player : Player) extends Actor * allows implants to operate once again. * Initialization must be restarted manually for any implant that had not previously finished initializing. */ - def UpdateStamina() : Unit = { + def UpdateStamina(): Unit = { val currentStamina = player.Stamina - if(currentStamina == 0 && !player.Fatigued) { // Only be fatigued once even if loses all stamina again + if (currentStamina == 0 && !player.Fatigued) { // Only be fatigued once even if loses all stamina again player.Fatigued = true player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 6) player.Implants.indices.foreach { slot => // Disable all implants ImplantActivation(slot, status = 0) - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(player.GUID, ImplantAction.OutOfStamina, slot, 1))) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(player.GUID, ImplantAction.OutOfStamina, slot, 1) + ) + ) } - } - else if(currentStamina >= 20) { + } else if (currentStamina >= 20) { val wasFatigued = player.Fatigued player.Fatigued = false - if(wasFatigued) { //reactivate only if we were fatigued + if (wasFatigued) { //reactivate only if we were fatigued player.Implants.indices.foreach { slot => // Re-enable all implants - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(player.GUID, ImplantAction.OutOfStamina, slot, 0))) - if(!player.ImplantSlot(slot).Initialized) { + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(player.GUID, ImplantAction.OutOfStamina, slot, 0) + ) + ) + if (!player.ImplantSlot(slot).Initialized) { ImplantInitializationStart(slot) } } } } - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.PlanetsideAttributeToAll(player.GUID, 2, currentStamina)) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.PlanetsideAttributeToAll(player.GUID, 2, currentStamina) + ) } /** @@ -930,36 +1110,40 @@ class PlayerControl(player : Player) extends Actor * Always (check to) initialize implants when setting up an avatar or becoming fatigued or when revived. * @param slot the slot in which this implant is found */ - def ImplantInitializationStart(slot : Int) : Unit = { + def ImplantInitializationStart(slot: Int): Unit = { val implantSlot = player.ImplantSlot(slot) - if(implantSlot.Installed.isDefined) { - if(!implantSlot.Initialized) { + if (implantSlot.Installed.isDefined) { + if (!implantSlot.Initialized) { val time = System.currentTimeMillis - val initializationTime = if(implantSlot.InitializeTime == 0L) { + val initializationTime = if (implantSlot.InitializeTime == 0L) { implantSlot.InitializeTime = time time - } - else { + } else { implantSlot.InitializeTime } val maxInitializationTime = implantSlot.MaxTimer * 1000 if (time - initializationTime > maxInitializationTime) { //this implant should have already been initialized ImplantInitializationComplete(slot) - } - else { + } else { // Start client side initialization timer // Check this along the bottom of the character information window //progress accumulates according to the client's knowledge of the implant initialization time //what is normally a 60s timer that is set to 120s on the server will still visually update as if 60s - val percent = (100 * (time - initializationTime) / maxInitializationTime.toFloat ).toInt - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.SendResponse(Service.defaultPlayerGUID, ActionProgressMessage(slot + 6, percent))) + val percent = (100 * (time - initializationTime) / maxInitializationTime.toFloat).toInt + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.SendResponse(Service.defaultPlayerGUID, ActionProgressMessage(slot + 6, percent)) + ) // Callback after initialization timer to complete initialization implantSlotTimers(slot).cancel - implantSlotTimers(slot) = context.system.scheduler.scheduleOnce((maxInitializationTime - (time - initializationTime)) milliseconds, self, Player.ImplantInitializationComplete(slot)) + implantSlotTimers(slot) = context.system.scheduler.scheduleOnce( + (maxInitializationTime - (time - initializationTime)) milliseconds, + self, + Player.ImplantInitializationComplete(slot) + ) } - } - else { + } else { ImplantInitializationComplete(slot) } } @@ -970,11 +1154,17 @@ class PlayerControl(player : Player) extends Actor * The end result of a timed process, occasionally an implant will become "already active". * @param slot the slot in which this implant is found */ - def ImplantInitializationComplete(slot : Int) : Unit = { + def ImplantInitializationComplete(slot: Int): Unit = { val implantSlot = player.ImplantSlot(slot) - if(implantSlot.Installed.isDefined) { + if (implantSlot.Installed.isDefined) { implantSlot.Initialized = true - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(player.GUID, ImplantAction.Initialization, slot, 1))) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(player.GUID, ImplantAction.Initialization, slot, 1) + ) + ) implantSlotTimers(slot).cancel implantSlotTimers(slot) = Default.Cancellable } @@ -987,33 +1177,40 @@ class PlayerControl(player : Player) extends Actor * @param status `1`, if the implant should become active; * `0`, if it should be deactivated */ - def ImplantActivation(slot : Int, status : Int) : Unit = { + def ImplantActivation(slot: Int, status: Int): Unit = { val implantSlot = player.ImplantSlot(slot) - if(!implantSlot.Initialized && !player.Fatigued) { + if (!implantSlot.Initialized && !player.Fatigued) { log.warn(s"implant in slot $slot is trying to (de)activate when not even initialized!") //we should not be activating or deactivataing, but initializing implantSlotTimers(slot).cancel implantSlotTimers(slot) = Default.Cancellable implantSlot.Active = false //normal deactivation - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.DeactivateImplantSlot(player.GUID, slot)) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.DeactivateImplantSlot(player.GUID, slot) + ) //initialization process (from scratch) implantSlot.InitializeTime = 0 ImplantInitializationStart(slot) - } - else if(status == 0 && implantSlot.Active) { + } else if (status == 0 && implantSlot.Active) { implantSlotTimers(slot).cancel implantSlotTimers(slot) = Default.Cancellable implantSlot.Active = false - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Zone.Id, AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2)) // Deactivation sound / effect - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.DeactivateImplantSlot(player.GUID, slot)) - } - else if(status == 1 && implantSlot.Initialized && !player.Fatigued) { + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Zone.Id, + AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2) + ) // Deactivation sound / effect + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.DeactivateImplantSlot(player.GUID, slot) + ) + } else if (status == 1 && implantSlot.Initialized && !player.Fatigued) { implantSlot.Installed match { case Some(implant) - if(implant.Type == ImplantType.PersonalShield && player.ExoSuit == ExoSuitType.Infiltration) || - (implant.Type == ImplantType.Surge && player.ExoSuit == ExoSuitType.MAX) => - //TODO STILL NOT ALLOWED (but make it look normal) + if (implant.Type == ImplantType.PersonalShield && player.ExoSuit == ExoSuitType.Infiltration) || + (implant.Type == ImplantType.Surge && player.ExoSuit == ExoSuitType.MAX) => + //TODO STILL NOT ALLOWED (but make it look normal) case Some(implant) => if (implantSlot.Active) { // Some events such as zoning will reset the implant on the client side without sending a deactivation packet @@ -1029,13 +1226,21 @@ class PlayerControl(player : Player) extends Actor } if (!player.Fatigued) { implantSlot.Active = true - val zone = player.Zone + val zone = player.Zone val drainInterval = implant.GetCostIntervalByExoSuit(player.ExoSuit) if (drainInterval > 0) { // Ongoing stamina drain, if applicable implantSlotTimers(slot).cancel - implantSlotTimers(slot) = context.system.scheduler.scheduleWithFixedDelay(initialDelay = 0 seconds, drainInterval milliseconds, self, Player.StaminaChanged(-implant.StaminaCost)) + implantSlotTimers(slot) = context.system.scheduler.scheduleWithFixedDelay( + initialDelay = 0 seconds, + drainInterval milliseconds, + self, + Player.StaminaChanged(-implant.StaminaCost) + ) } - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2 + 1)) // Activation sound / effect + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.PlanetsideAttribute(player.GUID, 28, player.Implant(slot).id * 2 + 1) + ) // Activation sound / effect zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.ActivateImplantSlot(player.GUID, slot)) } case _ => @@ -1055,11 +1260,11 @@ class PlayerControl(player : Player) extends Actor def UninitializeImplant(slot: Int): Unit = { implantSlotTimers(slot).cancel implantSlotTimers(slot) = Default.Cancellable - val zone = player.Zone - val guid = player.GUID + val zone = player.Zone + val guid = player.GUID val playerChannel = player.Name - val zoneChannel = zone.Id - val implantSlot = player.ImplantSlot(slot) + val zoneChannel = zone.Id + val implantSlot = player.ImplantSlot(slot) // if(implantSlot.Active) { // zone.AvatarEvents ! AvatarServiceMessage(zoneChannel, AvatarAction.PlanetsideAttribute(guid, 28, player.Implant(slot).id * 2)) // Deactivation sound / effect // zone.AvatarEvents ! AvatarServiceMessage(playerChannel, AvatarAction.DeactivateImplantSlot(guid, slot)) @@ -1067,12 +1272,23 @@ class PlayerControl(player : Player) extends Actor implantSlot.Active = false implantSlot.Initialized = false implantSlot.InitializeTime = 0L - zone.AvatarEvents ! AvatarServiceMessage(playerChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, ActionProgressMessage(slot + 6, 100))) - zone.AvatarEvents ! AvatarServiceMessage(zoneChannel, AvatarAction.SendResponse(Service.defaultPlayerGUID, AvatarImplantMessage(guid, ImplantAction.Initialization, slot, 0))) + zone.AvatarEvents ! AvatarServiceMessage( + playerChannel, + AvatarAction.SendResponse(Service.defaultPlayerGUID, ActionProgressMessage(slot + 6, 100)) + ) + zone.AvatarEvents ! AvatarServiceMessage( + zoneChannel, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + AvatarImplantMessage(guid, ImplantAction.Initialization, slot, 0) + ) + ) } } object PlayerControl { - /** */ + + /** + */ private case class StaminaRegen() } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/ComplexDeployableSource.scala b/common/src/main/scala/net/psforever/objects/ballistics/ComplexDeployableSource.scala index 2448b98f..d0267f07 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/ComplexDeployableSource.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/ComplexDeployableSource.scala @@ -7,27 +7,29 @@ import net.psforever.objects.definition.{BaseDeployableDefinition, ObjectDefinit import net.psforever.objects.vital.resistance.ResistanceProfile import net.psforever.types.{PlanetSideEmpire, Vector3} -final case class ComplexDeployableSource(obj_def : ObjectDefinition with BaseDeployableDefinition, - faction : PlanetSideEmpire.Value, - health : Int, - shields : Int, - ownerName : String, - position : Vector3, - orientation : Vector3) extends SourceEntry { - override def Name = SourceEntry.NameFormat(obj_def.Name) - override def Faction = faction - def Definition : ObjectDefinition with BaseDeployableDefinition = obj_def - def Health = health - def Shields = shields - def OwnerName = ownerName - def Position = position - def Orientation = orientation - def Velocity = None - def Modifiers = obj_def.asInstanceOf[ResistanceProfile] +final case class ComplexDeployableSource( + obj_def: ObjectDefinition with BaseDeployableDefinition, + faction: PlanetSideEmpire.Value, + health: Int, + shields: Int, + ownerName: String, + position: Vector3, + orientation: Vector3 +) extends SourceEntry { + override def Name = SourceEntry.NameFormat(obj_def.Name) + override def Faction = faction + def Definition: ObjectDefinition with BaseDeployableDefinition = obj_def + def Health = health + def Shields = shields + def OwnerName = ownerName + def Position = position + def Orientation = orientation + def Velocity = None + def Modifiers = obj_def.asInstanceOf[ResistanceProfile] } object ComplexDeployableSource { - def apply(obj : ComplexDeployable) : ComplexDeployableSource = { + def apply(obj: ComplexDeployable): ComplexDeployableSource = { ComplexDeployableSource( obj.Definition, obj.Faction, @@ -39,7 +41,7 @@ object ComplexDeployableSource { ) } - def apply(obj : TurretDeployable) : ComplexDeployableSource = { + def apply(obj: TurretDeployable): ComplexDeployableSource = { ComplexDeployableSource( obj.Definition, obj.Faction, diff --git a/common/src/main/scala/net/psforever/objects/ballistics/DeployableSource.scala b/common/src/main/scala/net/psforever/objects/ballistics/DeployableSource.scala index 0b538f4d..d0089aea 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/DeployableSource.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/DeployableSource.scala @@ -7,25 +7,27 @@ import net.psforever.objects.definition.{BaseDeployableDefinition, ObjectDefinit import net.psforever.objects.vital.resistance.ResistanceProfile import net.psforever.types.{PlanetSideEmpire, Vector3} -final case class DeployableSource(obj_def : ObjectDefinition with BaseDeployableDefinition, - faction : PlanetSideEmpire.Value, - health : Int, - ownerName : String, - position : Vector3, - orientation : Vector3) extends SourceEntry { - override def Name = SourceEntry.NameFormat(obj_def.Name) - override def Faction = faction - def Definition : ObjectDefinition with BaseDeployableDefinition = obj_def - def Health = health - def OwnerName = ownerName - def Position = position - def Orientation = orientation - def Velocity = None - def Modifiers = obj_def.asInstanceOf[ResistanceProfile] +final case class DeployableSource( + obj_def: ObjectDefinition with BaseDeployableDefinition, + faction: PlanetSideEmpire.Value, + health: Int, + ownerName: String, + position: Vector3, + orientation: Vector3 +) extends SourceEntry { + override def Name = SourceEntry.NameFormat(obj_def.Name) + override def Faction = faction + def Definition: ObjectDefinition with BaseDeployableDefinition = obj_def + def Health = health + def OwnerName = ownerName + def Position = position + def Orientation = orientation + def Velocity = None + def Modifiers = obj_def.asInstanceOf[ResistanceProfile] } object DeployableSource { - def apply(obj : PlanetSideGameObject with Deployable) : DeployableSource = { + def apply(obj: PlanetSideGameObject with Deployable): DeployableSource = { DeployableSource( obj.Definition, obj.Faction, diff --git a/common/src/main/scala/net/psforever/objects/ballistics/ObjectSource.scala b/common/src/main/scala/net/psforever/objects/ballistics/ObjectSource.scala index 552bab2c..fe37c7f4 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/ObjectSource.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/ObjectSource.scala @@ -6,22 +6,24 @@ import net.psforever.objects.serverobject.affinity.FactionAffinity import net.psforever.objects.vital.resistance.ResistanceProfileMutators import net.psforever.types.{PlanetSideEmpire, Vector3} -final case class ObjectSource(obj : PlanetSideGameObject with FactionAffinity, - faction : PlanetSideEmpire.Value, - position : Vector3, - orientation : Vector3, - velocity : Option[Vector3]) extends SourceEntry { - override def Name = SourceEntry.NameFormat(obj.Definition.Name) +final case class ObjectSource( + obj: PlanetSideGameObject with FactionAffinity, + faction: PlanetSideEmpire.Value, + position: Vector3, + orientation: Vector3, + velocity: Option[Vector3] +) extends SourceEntry { + override def Name = SourceEntry.NameFormat(obj.Definition.Name) override def Faction = faction - def Definition = obj.Definition - def Position = position - def Orientation = orientation - def Velocity = velocity - def Modifiers = new ResistanceProfileMutators { } + def Definition = obj.Definition + def Position = position + def Orientation = orientation + def Velocity = velocity + def Modifiers = new ResistanceProfileMutators {} } object ObjectSource { - def apply(obj : PlanetSideGameObject with FactionAffinity) : ObjectSource = { + def apply(obj: PlanetSideGameObject with FactionAffinity): ObjectSource = { ObjectSource( obj, obj.Faction, diff --git a/common/src/main/scala/net/psforever/objects/ballistics/PlayerSource.scala b/common/src/main/scala/net/psforever/objects/ballistics/PlayerSource.scala index c2204d37..33f73407 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/PlayerSource.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/PlayerSource.scala @@ -6,36 +6,49 @@ import net.psforever.objects.definition.{ExoSuitDefinition, ObjectDefinition} import net.psforever.objects.vital.resistance.ResistanceProfile import net.psforever.types.{ExoSuitType, PlanetSideEmpire, Vector3} -final case class PlayerSource(name : String, - char_id : Long, - obj_def : ObjectDefinition, - faction : PlanetSideEmpire.Value, - exosuit : ExoSuitType.Value, - seated : Boolean, - health : Int, - armor : Int, - position : Vector3, - orientation : Vector3, - velocity : Option[Vector3], - modifiers : ResistanceProfile) extends SourceEntry { - override def Name = name +final case class PlayerSource( + name: String, + char_id: Long, + obj_def: ObjectDefinition, + faction: PlanetSideEmpire.Value, + exosuit: ExoSuitType.Value, + seated: Boolean, + health: Int, + armor: Int, + position: Vector3, + orientation: Vector3, + velocity: Option[Vector3], + modifiers: ResistanceProfile +) extends SourceEntry { + override def Name = name override def Faction = faction - override def CharId = char_id - def Definition = obj_def - def ExoSuit = exosuit - def Seated = seated - def Health = health - def Armor = armor - def Position = position - def Orientation = orientation - def Velocity = velocity - def Modifiers = modifiers + override def CharId = char_id + def Definition = obj_def + def ExoSuit = exosuit + def Seated = seated + def Health = health + def Armor = armor + def Position = position + def Orientation = orientation + def Velocity = velocity + def Modifiers = modifiers } object PlayerSource { - def apply(tplayer : Player) : PlayerSource = { - PlayerSource(tplayer.Name, tplayer.CharId, tplayer.Definition, tplayer.Faction, tplayer.ExoSuit, tplayer.VehicleSeated.nonEmpty, - tplayer.Health, tplayer.Armor, tplayer.Position, tplayer.Orientation, tplayer.Velocity, - ExoSuitDefinition.Select(tplayer.ExoSuit, tplayer.Faction)) + def apply(tplayer: Player): PlayerSource = { + PlayerSource( + tplayer.Name, + tplayer.CharId, + tplayer.Definition, + tplayer.Faction, + tplayer.ExoSuit, + tplayer.VehicleSeated.nonEmpty, + tplayer.Health, + tplayer.Armor, + tplayer.Position, + tplayer.Orientation, + tplayer.Velocity, + ExoSuitDefinition.Select(tplayer.ExoSuit, tplayer.Faction) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/Projectile.scala b/common/src/main/scala/net/psforever/objects/ballistics/Projectile.scala index 1db6d3e4..6ff0c161 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/Projectile.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/Projectile.scala @@ -28,51 +28,57 @@ import net.psforever.types.Vector3 * @param fire_time when the weapon discharged was recorded; * defaults to `System.nanoTime` */ -final case class Projectile(profile : ProjectileDefinition, - tool_def : ToolDefinition, - fire_mode : FireModeDefinition, - owner : SourceEntry, - attribute_to : Int, - shot_origin : Vector3, - shot_angle : Vector3, - fire_time: Long = System.nanoTime) extends PlanetSideGameObject { +final case class Projectile( + profile: ProjectileDefinition, + tool_def: ToolDefinition, + fire_mode: FireModeDefinition, + owner: SourceEntry, + attribute_to: Int, + shot_origin: Vector3, + shot_angle: Vector3, + fire_time: Long = System.nanoTime +) extends PlanetSideGameObject { Position = shot_origin Orientation = shot_angle Velocity = { - val initVel : Int = profile.InitialVelocity //initial velocity - val radAngle : Double = math.toRadians(shot_angle.y) //angle of elevation - val rise : Float = initVel * math.sin(radAngle).toFloat //z - val ground : Float = initVel * math.cos(radAngle).toFloat //base + val initVel: Int = profile.InitialVelocity //initial velocity + val radAngle: Double = math.toRadians(shot_angle.y) //angle of elevation + val rise: Float = initVel * math.sin(radAngle).toFloat //z + val ground: Float = initVel * math.cos(radAngle).toFloat //base Vector3.Rz(Vector3(0, -ground, 0), shot_angle.z) + Vector3.z(rise) } + /** Information about the current world coordinates and orientation of the projectile */ - val current : SimpleWorldEntity = new SimpleWorldEntity() - private var resolved : ProjectileResolution.Value = ProjectileResolution.Unresolved + val current: SimpleWorldEntity = new SimpleWorldEntity() + private var resolved: ProjectileResolution.Value = ProjectileResolution.Unresolved /** * Mark the projectile as being "encountered" or "managed" at least once. */ - def Resolve() : Unit = { + def Resolve(): Unit = { resolved = ProjectileResolution.Resolved } - def Miss() : Unit = { + def Miss(): Unit = { resolved = ProjectileResolution.MissedShot } - def isResolved : Boolean = resolved == ProjectileResolution.Resolved || resolved == ProjectileResolution.MissedShot + def isResolved: Boolean = resolved == ProjectileResolution.Resolved || resolved == ProjectileResolution.MissedShot - def isMiss : Boolean = resolved == ProjectileResolution.MissedShot + def isMiss: Boolean = resolved == ProjectileResolution.MissedShot def Definition = profile } object Projectile { + /** the first projectile GUID used by all clients internally */ - final val BaseUID : Int = 40100 + final val BaseUID: Int = 40100 + /** all clients progress through 40100 to 40124 normally, skipping only for long-lived projectiles - * 40125 to 40149 are being reserved as a guard against undetected overflow */ - final val RangeUID : Int = 40150 + * 40125 to 40149 are being reserved as a guard against undetected overflow + */ + final val RangeUID: Int = 40150 /** * Overloaded constructor for an `Unresolved` projectile. @@ -84,7 +90,14 @@ object Projectile { * @param shot_angle in which direction the projectile was aimed when it was discharged * @return the `Projectile` object */ - def apply(profile : ProjectileDefinition, tool_def : ToolDefinition, fire_mode : FireModeDefinition, owner : PlanetSideGameObject with FactionAffinity, shot_origin : Vector3, shot_angle : Vector3) : Projectile = { + def apply( + profile: ProjectileDefinition, + tool_def: ToolDefinition, + fire_mode: FireModeDefinition, + owner: PlanetSideGameObject with FactionAffinity, + shot_origin: Vector3, + shot_angle: Vector3 + ): Projectile = { Projectile(profile, tool_def, fire_mode, SourceEntry(owner), tool_def.ObjectId, shot_origin, shot_angle) } @@ -99,7 +112,15 @@ object Projectile { * @param shot_angle in which direction the projectile was aimed when it was discharged * @return the `Projectile` object */ - def apply(profile : ProjectileDefinition, tool_def : ToolDefinition, fire_mode : FireModeDefinition, owner : PlanetSideGameObject with FactionAffinity, attribute_to : Int, shot_origin : Vector3, shot_angle : Vector3) : Projectile = { + def apply( + profile: ProjectileDefinition, + tool_def: ToolDefinition, + fire_mode: FireModeDefinition, + owner: PlanetSideGameObject with FactionAffinity, + attribute_to: Int, + shot_origin: Vector3, + shot_angle: Vector3 + ): Projectile = { Projectile(profile, tool_def, fire_mode, SourceEntry(owner), attribute_to, shot_origin, shot_angle) } } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/ProjectileResolution.scala b/common/src/main/scala/net/psforever/objects/ballistics/ProjectileResolution.scala index 5b9436c9..87b56805 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/ProjectileResolution.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/ProjectileResolution.scala @@ -7,12 +7,11 @@ package net.psforever.objects.ballistics object ProjectileResolution extends Enumeration { type Type = Value - val - Unresolved, //original basic non-resolution - MissedShot, //projectile did not encounter any collision object and was despawned - Resolved, //a general "projectile encountered something" status with a more specific resolution - Hit, //direct hit, one target - Splash, //area of effect damage, potentially multiple targets - Lash //lashing damage, potentially multiple targets + val Unresolved, //original basic non-resolution + MissedShot, //projectile did not encounter any collision object and was despawned + Resolved, //a general "projectile encountered something" status with a more specific resolution + Hit, //direct hit, one target + Splash, //area of effect damage, potentially multiple targets + Lash //lashing damage, potentially multiple targets = Value } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala b/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala index dc275395..dba5ff1a 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/Projectiles.scala @@ -7,143 +7,143 @@ package net.psforever.objects.ballistics object Projectiles extends Enumeration { final val no_projectile = Value(0) - final val bullet_105mm_projectile = Value(1) - final val bullet_12mm_projectile = Value(4) - final val bullet_12mm_projectileb = Value(5) - final val bullet_150mm_projectile = Value(7) - final val bullet_15mm_apc_projectile = Value(10) - final val bullet_15mm_projectile = Value(11) - final val bullet_20mm_apc_projectile = Value(17) - final val bullet_20mm_projectile = Value(18) - final val bullet_25mm_projectile = Value(20) - final val bullet_35mm_projectile = Value(22) - final val bullet_75mm_apc_projectile = Value(26) - final val bullet_75mm_projectile = Value(27) - final val bullet_9mm_AP_projectile = Value(30) - final val bullet_9mm_projectile = Value(31) - final val anniversary_projectilea = Value(58) - final val anniversary_projectileb = Value(59) - final val aphelion_immolation_cannon_projectile = Value(87) - final val aphelion_laser_projectile = Value(91) - final val aphelion_plasma_rocket_projectile = Value(99) - final val aphelion_ppa_projectile = Value(103) - final val aphelion_starfire_projectile = Value(108) - final val bolt_projectile = Value(147) - final val burster_projectile = Value(155) - final val chainblade_projectile = Value(176) - final val colossus_100mm_projectile = Value(181) - final val colossus_burster_projectile = Value(188) - final val colossus_chaingun_projectile = Value(193) - final val colossus_cluster_bomb_projectile = Value(197) - final val colossus_tank_cannon_projectile = Value(207) - final val comet_projectile = Value(210) - final val dualcycler_projectile = Value(266) - final val dynomite_projectile = Value(268) - final val energy_cell_projectile = Value(273) - final val energy_gun_nc_projectile = Value(277) - final val energy_gun_tr_projectile = Value(279) - final val energy_gun_vs_projectile = Value(281) - final val enhanced_energy_cell_projectile = Value(282) - final val enhanced_quasar_projectile = Value(283) - final val falcon_projectile = Value(286) - final val firebird_missile_projectile = Value(288) - final val flail_projectile = Value(296) - final val flamethrower_fireball = Value(302) - final val flamethrower_projectile = Value(303) - final val flux_cannon_apc_projectile = Value(305) - final val flux_cannon_thresher_projectile = Value(308) - final val fluxpod_projectile = Value(311) - final val forceblade_projectile = Value(325) - final val frag_cartridge_projectile = Value(328) - final val frag_cartridge_projectile_b = Value(329) - final val frag_grenade_projectile = Value(332) - final val frag_grenade_projectile_enh = Value(333) - final val galaxy_gunship_gun_projectile = Value(341) - final val gauss_cannon_projectile = Value(348) - final val grenade_projectile = Value(372) - final val heavy_grenade_projectile = Value(392) - final val heavy_rail_beam_projectile = Value(395) - final val heavy_sniper_projectile = Value(397) - final val hellfire_projectile = Value(400) - final val hunter_seeker_missile_dumbfire = Value(404) - final val hunter_seeker_missile_projectile = Value(405) - final val jammer_cartridge_projectile = Value(414) - final val jammer_cartridge_projectile_b = Value(415) - final val jammer_grenade_projectile = Value(418) - final val jammer_grenade_projectile_enh = Value(419) - final val katana_projectile = Value(422) - final val katana_projectileb = Value(423) - final val lancer_projectile = Value(427) - final val lasher_projectile = Value(430) - final val lasher_projectile_ap = Value(431) + final val bullet_105mm_projectile = Value(1) + final val bullet_12mm_projectile = Value(4) + final val bullet_12mm_projectileb = Value(5) + final val bullet_150mm_projectile = Value(7) + final val bullet_15mm_apc_projectile = Value(10) + final val bullet_15mm_projectile = Value(11) + final val bullet_20mm_apc_projectile = Value(17) + final val bullet_20mm_projectile = Value(18) + final val bullet_25mm_projectile = Value(20) + final val bullet_35mm_projectile = Value(22) + final val bullet_75mm_apc_projectile = Value(26) + final val bullet_75mm_projectile = Value(27) + final val bullet_9mm_AP_projectile = Value(30) + final val bullet_9mm_projectile = Value(31) + final val anniversary_projectilea = Value(58) + final val anniversary_projectileb = Value(59) + final val aphelion_immolation_cannon_projectile = Value(87) + final val aphelion_laser_projectile = Value(91) + final val aphelion_plasma_rocket_projectile = Value(99) + final val aphelion_ppa_projectile = Value(103) + final val aphelion_starfire_projectile = Value(108) + final val bolt_projectile = Value(147) + final val burster_projectile = Value(155) + final val chainblade_projectile = Value(176) + final val colossus_100mm_projectile = Value(181) + final val colossus_burster_projectile = Value(188) + final val colossus_chaingun_projectile = Value(193) + final val colossus_cluster_bomb_projectile = Value(197) + final val colossus_tank_cannon_projectile = Value(207) + final val comet_projectile = Value(210) + final val dualcycler_projectile = Value(266) + final val dynomite_projectile = Value(268) + final val energy_cell_projectile = Value(273) + final val energy_gun_nc_projectile = Value(277) + final val energy_gun_tr_projectile = Value(279) + final val energy_gun_vs_projectile = Value(281) + final val enhanced_energy_cell_projectile = Value(282) + final val enhanced_quasar_projectile = Value(283) + final val falcon_projectile = Value(286) + final val firebird_missile_projectile = Value(288) + final val flail_projectile = Value(296) + final val flamethrower_fireball = Value(302) + final val flamethrower_projectile = Value(303) + final val flux_cannon_apc_projectile = Value(305) + final val flux_cannon_thresher_projectile = Value(308) + final val fluxpod_projectile = Value(311) + final val forceblade_projectile = Value(325) + final val frag_cartridge_projectile = Value(328) + final val frag_cartridge_projectile_b = Value(329) + final val frag_grenade_projectile = Value(332) + final val frag_grenade_projectile_enh = Value(333) + final val galaxy_gunship_gun_projectile = Value(341) + final val gauss_cannon_projectile = Value(348) + final val grenade_projectile = Value(372) + final val heavy_grenade_projectile = Value(392) + final val heavy_rail_beam_projectile = Value(395) + final val heavy_sniper_projectile = Value(397) + final val hellfire_projectile = Value(400) + final val hunter_seeker_missile_dumbfire = Value(404) + final val hunter_seeker_missile_projectile = Value(405) + final val jammer_cartridge_projectile = Value(414) + final val jammer_cartridge_projectile_b = Value(415) + final val jammer_grenade_projectile = Value(418) + final val jammer_grenade_projectile_enh = Value(419) + final val katana_projectile = Value(422) + final val katana_projectileb = Value(423) + final val lancer_projectile = Value(427) + final val lasher_projectile = Value(430) + final val lasher_projectile_ap = Value(431) final val liberator_bomb_cluster_bomblet_projectile = Value(436) - final val liberator_bomb_cluster_projectile = Value(437) - final val liberator_bomb_projectile = Value(438) - final val maelstrom_grenade_projectile = Value(465) - final val maelstrom_grenade_projectile_contact = Value(466) - final val maelstrom_stream_projectile = Value(467) - final val magcutter_projectile = Value(469) - final val melee_ammo_projectile = Value(541) - final val meteor_common = Value(543) - final val meteor_projectile_b_large = Value(544) - final val meteor_projectile_b_medium = Value(545) - final val meteor_projectile_b_small = Value(546) - final val meteor_projectile_large = Value(547) - final val meteor_projectile_medium = Value(548) - final val meteor_projectile_small = Value(549) - final val mine_projectile = Value(551) - final val mine_sweeper_projectile = Value(554) - final val mine_sweeper_projectile_enh = Value(555) - final val oicw_little_buddy = Value(601) - final val oicw_projectile = Value(602) - final val pellet_gun_projectile = Value(631) - final val peregrine_dual_machine_gun_projectile = Value(639) - final val peregrine_mechhammer_projectile = Value(647) - final val peregrine_particle_cannon_projectile = Value(654) - final val peregrine_rocket_pod_projectile = Value(657) - final val peregrine_sparrow_projectile = Value(661) - final val phalanx_av_projectile = Value(665) - final val phalanx_flak_projectile = Value(667) - final val phalanx_projectile = Value(669) - final val phoenix_missile_guided_projectile = Value(675) - final val phoenix_missile_projectile = Value(676) - final val plasma_cartridge_projectile = Value(678) - final val plasma_cartridge_projectile_b = Value(679) - final val plasma_grenade_projectile = Value(682) - final val plasma_grenade_projectile_B = Value(683) - final val pounder_projectile = Value(694) - final val pounder_projectile_enh = Value(695) - final val ppa_projectile = Value(696) - final val pulsar_ap_projectile = Value(702) - final val pulsar_projectile = Value(703) - final val quasar_projectile = Value(713) - final val radiator_grenade_projectile = Value(718) - final val radiator_sticky_projectile = Value(719) - final val reaver_rocket_projectile = Value(723) - final val rocket_projectile = Value(735) - final val rocklet_flak_projectile = Value(738) - final val rocklet_jammer_projectile = Value(739) - final val scattercannon_projectile = Value(746) - final val scythe_projectile = Value(748) - final val scythe_projectile_slave = Value(749) - final val shotgun_shell_AP_projectile = Value(757) - final val shotgun_shell_projectile = Value(758) - final val six_shooter_projectile = Value(763) - final val skyguard_flak_cannon_projectile = Value(787) - final val sparrow_projectile = Value(792) - final val sparrow_secondary_projectile = Value(793) - final val spiker_projectile = Value(818) - final val spitfire_aa_ammo_projectile = Value(821) - final val spitfire_ammo_projectile = Value(824) - final val starfire_projectile = Value(831) - final val striker_missile_projectile = Value(840) - final val striker_missile_targeting_projectile = Value(841) - final val trek_projectile = Value(878) - final val vanu_sentry_turret_projectile = Value(944) - final val vulture_bomb_projectile = Value(988) - final val vulture_nose_bullet_projectile = Value(989) - final val vulture_tail_bullet_projectile = Value(991) - final val wasp_gun_projectile = Value(999) - final val wasp_rocket_projectile = Value(1001) - final val winchester_projectile = Value(1005) + final val liberator_bomb_cluster_projectile = Value(437) + final val liberator_bomb_projectile = Value(438) + final val maelstrom_grenade_projectile = Value(465) + final val maelstrom_grenade_projectile_contact = Value(466) + final val maelstrom_stream_projectile = Value(467) + final val magcutter_projectile = Value(469) + final val melee_ammo_projectile = Value(541) + final val meteor_common = Value(543) + final val meteor_projectile_b_large = Value(544) + final val meteor_projectile_b_medium = Value(545) + final val meteor_projectile_b_small = Value(546) + final val meteor_projectile_large = Value(547) + final val meteor_projectile_medium = Value(548) + final val meteor_projectile_small = Value(549) + final val mine_projectile = Value(551) + final val mine_sweeper_projectile = Value(554) + final val mine_sweeper_projectile_enh = Value(555) + final val oicw_little_buddy = Value(601) + final val oicw_projectile = Value(602) + final val pellet_gun_projectile = Value(631) + final val peregrine_dual_machine_gun_projectile = Value(639) + final val peregrine_mechhammer_projectile = Value(647) + final val peregrine_particle_cannon_projectile = Value(654) + final val peregrine_rocket_pod_projectile = Value(657) + final val peregrine_sparrow_projectile = Value(661) + final val phalanx_av_projectile = Value(665) + final val phalanx_flak_projectile = Value(667) + final val phalanx_projectile = Value(669) + final val phoenix_missile_guided_projectile = Value(675) + final val phoenix_missile_projectile = Value(676) + final val plasma_cartridge_projectile = Value(678) + final val plasma_cartridge_projectile_b = Value(679) + final val plasma_grenade_projectile = Value(682) + final val plasma_grenade_projectile_B = Value(683) + final val pounder_projectile = Value(694) + final val pounder_projectile_enh = Value(695) + final val ppa_projectile = Value(696) + final val pulsar_ap_projectile = Value(702) + final val pulsar_projectile = Value(703) + final val quasar_projectile = Value(713) + final val radiator_grenade_projectile = Value(718) + final val radiator_sticky_projectile = Value(719) + final val reaver_rocket_projectile = Value(723) + final val rocket_projectile = Value(735) + final val rocklet_flak_projectile = Value(738) + final val rocklet_jammer_projectile = Value(739) + final val scattercannon_projectile = Value(746) + final val scythe_projectile = Value(748) + final val scythe_projectile_slave = Value(749) + final val shotgun_shell_AP_projectile = Value(757) + final val shotgun_shell_projectile = Value(758) + final val six_shooter_projectile = Value(763) + final val skyguard_flak_cannon_projectile = Value(787) + final val sparrow_projectile = Value(792) + final val sparrow_secondary_projectile = Value(793) + final val spiker_projectile = Value(818) + final val spitfire_aa_ammo_projectile = Value(821) + final val spitfire_ammo_projectile = Value(824) + final val starfire_projectile = Value(831) + final val striker_missile_projectile = Value(840) + final val striker_missile_targeting_projectile = Value(841) + final val trek_projectile = Value(878) + final val vanu_sentry_turret_projectile = Value(944) + final val vulture_bomb_projectile = Value(988) + final val vulture_nose_bullet_projectile = Value(989) + final val vulture_tail_bullet_projectile = Value(991) + final val wasp_gun_projectile = Value(999) + final val wasp_rocket_projectile = Value(1001) + final val winchester_projectile = Value(1005) } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/ResolvedProjectile.scala b/common/src/main/scala/net/psforever/objects/ballistics/ResolvedProjectile.scala index 63c5411d..a51fb03f 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/ResolvedProjectile.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/ResolvedProjectile.scala @@ -15,10 +15,12 @@ import net.psforever.types.Vector3 * @param damage_model the kind of damage model to which the `target` is/was subject * @param hit_pos where the projectile hit */ -final case class ResolvedProjectile(resolution : ProjectileResolution.Value, - projectile : Projectile, - target : SourceEntry, - damage_model : DamageResistanceModel, - hit_pos : Vector3) { - val hit_time : Long = System.nanoTime +final case class ResolvedProjectile( + resolution: ProjectileResolution.Value, + projectile: Projectile, + target: SourceEntry, + damage_model: DamageResistanceModel, + hit_pos: Vector3 +) { + val hit_time: Long = System.nanoTime } diff --git a/common/src/main/scala/net/psforever/objects/ballistics/SourceEntry.scala b/common/src/main/scala/net/psforever/objects/ballistics/SourceEntry.scala index 442d1739..dfe2a54c 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/SourceEntry.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/SourceEntry.scala @@ -10,37 +10,38 @@ import net.psforever.objects.vital.resistance.ResistanceProfile import net.psforever.types.{PlanetSideEmpire, Vector3} trait SourceEntry extends WorldEntity { - def Name : String = "" - def Definition : ObjectDefinition - def CharId : Long = 0L - def Faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - def Position_=(pos : Vector3) = Position - def Orientation_=(pos : Vector3) = Position - def Velocity_=(pos : Option[Vector3]) = Velocity - def Modifiers : ResistanceProfile + def Name: String = "" + def Definition: ObjectDefinition + def CharId: Long = 0L + def Faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + def Position_=(pos: Vector3) = Position + def Orientation_=(pos: Vector3) = Position + def Velocity_=(pos: Option[Vector3]) = Velocity + def Modifiers: ResistanceProfile } object SourceEntry { final val None = new SourceEntry() { - def Definition = null - def Position = Vector3.Zero + def Definition = null + def Position = Vector3.Zero def Orientation = Vector3.Zero - def Velocity = Some(Vector3.Zero) - def Modifiers = null + def Velocity = Some(Vector3.Zero) + def Modifiers = null } - def apply(target : PlanetSideGameObject with FactionAffinity) : SourceEntry = { + def apply(target: PlanetSideGameObject with FactionAffinity): SourceEntry = { target match { - case obj : Player => PlayerSource(obj) - case obj : Vehicle => VehicleSource(obj) - case obj : ComplexDeployable => ComplexDeployableSource(obj) - case obj : SimpleDeployable => DeployableSource(obj) - case _ => ObjectSource(target) + case obj: Player => PlayerSource(obj) + case obj: Vehicle => VehicleSource(obj) + case obj: ComplexDeployable => ComplexDeployableSource(obj) + case obj: SimpleDeployable => DeployableSource(obj) + case _ => ObjectSource(target) } } - def NameFormat(name : String) : String = { - name.replace("_", " ") + def NameFormat(name: String): String = { + name + .replace("_", " ") .split(" ") .map(_.capitalize) .mkString(" ") diff --git a/common/src/main/scala/net/psforever/objects/ballistics/VehicleSource.scala b/common/src/main/scala/net/psforever/objects/ballistics/VehicleSource.scala index df83be2f..b6f4ad6f 100644 --- a/common/src/main/scala/net/psforever/objects/ballistics/VehicleSource.scala +++ b/common/src/main/scala/net/psforever/objects/ballistics/VehicleSource.scala @@ -6,27 +6,29 @@ import net.psforever.objects.definition.VehicleDefinition import net.psforever.objects.vital.resistance.ResistanceProfile import net.psforever.types.{PlanetSideEmpire, Vector3} -final case class VehicleSource(obj_def : VehicleDefinition, - faction : PlanetSideEmpire.Value, - health : Int, - shields : Int, - position : Vector3, - orientation : Vector3, - velocity : Option[Vector3], - modifiers : ResistanceProfile) extends SourceEntry { - override def Name = SourceEntry.NameFormat(obj_def.Name) - override def Faction = faction - def Definition : VehicleDefinition = obj_def - def Health = health - def Shields = shields - def Position = position - def Orientation = orientation - def Velocity = velocity - def Modifiers = modifiers +final case class VehicleSource( + obj_def: VehicleDefinition, + faction: PlanetSideEmpire.Value, + health: Int, + shields: Int, + position: Vector3, + orientation: Vector3, + velocity: Option[Vector3], + modifiers: ResistanceProfile +) extends SourceEntry { + override def Name = SourceEntry.NameFormat(obj_def.Name) + override def Faction = faction + def Definition: VehicleDefinition = obj_def + def Health = health + def Shields = shields + def Position = position + def Orientation = orientation + def Velocity = velocity + def Modifiers = modifiers } object VehicleSource { - def apply(obj : Vehicle) : VehicleSource = { + def apply(obj: Vehicle): VehicleSource = { VehicleSource( obj.Definition, obj.Faction, diff --git a/common/src/main/scala/net/psforever/objects/ce/ComplexDeployable.scala b/common/src/main/scala/net/psforever/objects/ce/ComplexDeployable.scala index b7eb9106..144925e5 100644 --- a/common/src/main/scala/net/psforever/objects/ce/ComplexDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/ce/ComplexDeployable.scala @@ -4,19 +4,18 @@ package net.psforever.objects.ce import net.psforever.objects.definition.ComplexDeployableDefinition import net.psforever.objects.serverobject.PlanetSideServerObject -abstract class ComplexDeployable(cdef : ComplexDeployableDefinition) extends PlanetSideServerObject - with Deployable { - private var shields : Int = 0 +abstract class ComplexDeployable(cdef: ComplexDeployableDefinition) extends PlanetSideServerObject with Deployable { + private var shields: Int = 0 - def Shields : Int = shields + def Shields: Int = shields - def Shields_=(toShields : Int) : Int = { + def Shields_=(toShields: Int): Int = { shields = math.min(math.max(0, toShields), MaxShields) Shields } - def MaxShields : Int = { - 0//Definition.MaxShields + def MaxShields: Int = { + 0 //Definition.MaxShields } def Definition = cdef diff --git a/common/src/main/scala/net/psforever/objects/ce/Deployable.scala b/common/src/main/scala/net/psforever/objects/ce/Deployable.scala index e77c00d8..6448daf8 100644 --- a/common/src/main/scala/net/psforever/objects/ce/Deployable.scala +++ b/common/src/main/scala/net/psforever/objects/ce/Deployable.scala @@ -9,83 +9,80 @@ import net.psforever.objects.zones.ZoneAware import net.psforever.packet.game.DeployableIcon import net.psforever.types.PlanetSideEmpire -trait Deployable extends FactionAffinity - with Vitality - with OwnableByPlayer - with ZoneAware { - this : PlanetSideGameObject => - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL +trait Deployable extends FactionAffinity with Vitality with OwnableByPlayer with ZoneAware { + this: PlanetSideGameObject => + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - def MaxHealth : Int + def MaxHealth: Int - def Faction : PlanetSideEmpire.Value = faction + def Faction: PlanetSideEmpire.Value = faction - override def Faction_=(toFaction : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { + override def Faction_=(toFaction: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { faction = toFaction Faction } - def DamageModel : DamageResistanceModel = Definition.asInstanceOf[DamageResistanceModel] + def DamageModel: DamageResistanceModel = Definition.asInstanceOf[DamageResistanceModel] - def Definition : DeployableDefinition + def Definition: DeployableDefinition } object Deployable { object Category { - def Of(item : DeployedItem.Value) : DeployableCategory.Value = deployablesToCategories(item) + def Of(item: DeployedItem.Value): DeployableCategory.Value = deployablesToCategories(item) - def Includes(category : DeployableCategory.Value) : List[DeployedItem.Value] = { + def Includes(category: DeployableCategory.Value): List[DeployedItem.Value] = { (for { (ce, cat) <- deployablesToCategories if cat == category } yield ce) toList } - def OfAll() : Map[DeployedItem.Value, DeployableCategory.Value] = deployablesToCategories + def OfAll(): Map[DeployedItem.Value, DeployableCategory.Value] = deployablesToCategories - private val deployablesToCategories : Map[DeployedItem.Value, DeployableCategory.Value] = Map( - DeployedItem.boomer -> DeployableCategory.Boomers, - DeployedItem.he_mine -> DeployableCategory.Mines, - DeployedItem.jammer_mine -> DeployableCategory.Mines, - DeployedItem.spitfire_turret -> DeployableCategory.SmallTurrets, - DeployedItem.motionalarmsensor -> DeployableCategory.Sensors, - DeployedItem.spitfire_cloaked -> DeployableCategory.SmallTurrets, - DeployedItem.spitfire_aa -> DeployableCategory.SmallTurrets, + private val deployablesToCategories: Map[DeployedItem.Value, DeployableCategory.Value] = Map( + DeployedItem.boomer -> DeployableCategory.Boomers, + DeployedItem.he_mine -> DeployableCategory.Mines, + DeployedItem.jammer_mine -> DeployableCategory.Mines, + DeployedItem.spitfire_turret -> DeployableCategory.SmallTurrets, + DeployedItem.motionalarmsensor -> DeployableCategory.Sensors, + DeployedItem.spitfire_cloaked -> DeployableCategory.SmallTurrets, + DeployedItem.spitfire_aa -> DeployableCategory.SmallTurrets, DeployedItem.deployable_shield_generator -> DeployableCategory.ShieldGenerators, - DeployedItem.tank_traps -> DeployableCategory.TankTraps, - DeployedItem.portable_manned_turret -> DeployableCategory.FieldTurrets, - DeployedItem.portable_manned_turret_nc -> DeployableCategory.FieldTurrets, - DeployedItem.portable_manned_turret_tr -> DeployableCategory.FieldTurrets, - DeployedItem.portable_manned_turret_vs -> DeployableCategory.FieldTurrets, - DeployedItem.sensor_shield -> DeployableCategory.Sensors, - DeployedItem.router_telepad_deployable -> DeployableCategory.Telepads + DeployedItem.tank_traps -> DeployableCategory.TankTraps, + DeployedItem.portable_manned_turret -> DeployableCategory.FieldTurrets, + DeployedItem.portable_manned_turret_nc -> DeployableCategory.FieldTurrets, + DeployedItem.portable_manned_turret_tr -> DeployableCategory.FieldTurrets, + DeployedItem.portable_manned_turret_vs -> DeployableCategory.FieldTurrets, + DeployedItem.sensor_shield -> DeployableCategory.Sensors, + DeployedItem.router_telepad_deployable -> DeployableCategory.Telepads ) } object Icon { - def apply(item : DeployedItem.Value) : DeployableIcon.Value = ceicon(item.id) + def apply(item: DeployedItem.Value): DeployableIcon.Value = ceicon(item.id) - private val ceicon : Map[Int, DeployableIcon.Value] = Map( - DeployedItem.boomer.id -> DeployableIcon.Boomer, - DeployedItem.he_mine.id -> DeployableIcon.HEMine, - DeployedItem.jammer_mine.id -> DeployableIcon.DisruptorMine, - DeployedItem.spitfire_turret.id -> DeployableIcon.SpitfireTurret, - DeployedItem.spitfire_cloaked.id -> DeployableIcon.ShadowTurret, - DeployedItem.spitfire_aa.id -> DeployableIcon.CerebusTurret, - DeployedItem.motionalarmsensor.id -> DeployableIcon.MotionAlarmSensor, - DeployedItem.sensor_shield.id -> DeployableIcon.SensorDisruptor, - DeployedItem.tank_traps.id -> DeployableIcon.TRAP, - DeployedItem.portable_manned_turret.id -> DeployableIcon.FieldTurret, - DeployedItem.portable_manned_turret_tr.id -> DeployableIcon.FieldTurret, - DeployedItem.portable_manned_turret_nc.id -> DeployableIcon.FieldTurret, - DeployedItem.portable_manned_turret_vs.id -> DeployableIcon.FieldTurret, + private val ceicon: Map[Int, DeployableIcon.Value] = Map( + DeployedItem.boomer.id -> DeployableIcon.Boomer, + DeployedItem.he_mine.id -> DeployableIcon.HEMine, + DeployedItem.jammer_mine.id -> DeployableIcon.DisruptorMine, + DeployedItem.spitfire_turret.id -> DeployableIcon.SpitfireTurret, + DeployedItem.spitfire_cloaked.id -> DeployableIcon.ShadowTurret, + DeployedItem.spitfire_aa.id -> DeployableIcon.CerebusTurret, + DeployedItem.motionalarmsensor.id -> DeployableIcon.MotionAlarmSensor, + DeployedItem.sensor_shield.id -> DeployableIcon.SensorDisruptor, + DeployedItem.tank_traps.id -> DeployableIcon.TRAP, + DeployedItem.portable_manned_turret.id -> DeployableIcon.FieldTurret, + DeployedItem.portable_manned_turret_tr.id -> DeployableIcon.FieldTurret, + DeployedItem.portable_manned_turret_nc.id -> DeployableIcon.FieldTurret, + DeployedItem.portable_manned_turret_vs.id -> DeployableIcon.FieldTurret, DeployedItem.deployable_shield_generator.id -> DeployableIcon.AegisShieldGenerator, - DeployedItem.router_telepad_deployable.id -> DeployableIcon.RouterTelepad + DeployedItem.router_telepad_deployable.id -> DeployableIcon.RouterTelepad ).withDefaultValue(DeployableIcon.Boomer) } object UI { - def apply(item : DeployedItem.Value) : (Int, Int) = planetsideAttribute(item) + def apply(item: DeployedItem.Value): (Int, Int) = planetsideAttribute(item) /** * The attribute values to be invoked in `PlanetsideAttributeMessage` packets @@ -93,21 +90,21 @@ object Deployable { * The first number is for the actual count field. * The second number is for the maximum count field. */ - private val planetsideAttribute : Map[DeployedItem.Value, (Int, Int)] = Map( - DeployedItem.boomer -> (94, 83), - DeployedItem.he_mine -> (95, 84), - DeployedItem.jammer_mine -> (96, 85), - DeployedItem.spitfire_turret -> (97, 86), - DeployedItem.motionalarmsensor -> (98, 87), - DeployedItem.spitfire_cloaked -> (99, 88), - DeployedItem.spitfire_aa -> (100, 89), + private val planetsideAttribute: Map[DeployedItem.Value, (Int, Int)] = Map( + DeployedItem.boomer -> (94, 83), + DeployedItem.he_mine -> (95, 84), + DeployedItem.jammer_mine -> (96, 85), + DeployedItem.spitfire_turret -> (97, 86), + DeployedItem.motionalarmsensor -> (98, 87), + DeployedItem.spitfire_cloaked -> (99, 88), + DeployedItem.spitfire_aa -> (100, 89), DeployedItem.deployable_shield_generator -> (101, 90), - DeployedItem.tank_traps -> (102, 91), - DeployedItem.portable_manned_turret -> (103, 92), - DeployedItem.portable_manned_turret_nc -> (103, 92), - DeployedItem.portable_manned_turret_tr -> (103, 92), - DeployedItem.portable_manned_turret_vs -> (103, 92), - DeployedItem.sensor_shield -> (104, 93) - ).withDefaultValue((0,0)) + DeployedItem.tank_traps -> (102, 91), + DeployedItem.portable_manned_turret -> (103, 92), + DeployedItem.portable_manned_turret_nc -> (103, 92), + DeployedItem.portable_manned_turret_tr -> (103, 92), + DeployedItem.portable_manned_turret_vs -> (103, 92), + DeployedItem.sensor_shield -> (104, 93) + ).withDefaultValue((0, 0)) } } diff --git a/common/src/main/scala/net/psforever/objects/ce/DeployableCategory.scala b/common/src/main/scala/net/psforever/objects/ce/DeployableCategory.scala index 72f66e55..0a40d1fc 100644 --- a/common/src/main/scala/net/psforever/objects/ce/DeployableCategory.scala +++ b/common/src/main/scala/net/psforever/objects/ce/DeployableCategory.scala @@ -4,14 +4,5 @@ package net.psforever.objects.ce object DeployableCategory extends Enumeration { type Type = Value - val - Boomers, - Mines, - SmallTurrets, - Sensors, - TankTraps, - FieldTurrets, - ShieldGenerators, - Telepads - = Value + val Boomers, Mines, SmallTurrets, Sensors, TankTraps, FieldTurrets, ShieldGenerators, Telepads = Value } diff --git a/common/src/main/scala/net/psforever/objects/ce/DeployedItem.scala b/common/src/main/scala/net/psforever/objects/ce/DeployedItem.scala index 2c5eb553..ff6d5e1e 100644 --- a/common/src/main/scala/net/psforever/objects/ce/DeployedItem.scala +++ b/common/src/main/scala/net/psforever/objects/ce/DeployedItem.scala @@ -4,19 +4,19 @@ package net.psforever.objects.ce object DeployedItem extends Enumeration { type Type = Value - final val boomer = Value(148) + final val boomer = Value(148) final val deployable_shield_generator = Value(240) - final val he_mine = Value(388) - final val jammer_mine = Value(420) //disruptor mine - final val motionalarmsensor = Value(575) - final val sensor_shield = Value(752) //sensor disruptor - final val spitfire_aa = Value(819) //cerebus turret - final val spitfire_cloaked = Value(825) //shadow turret - final val spitfire_turret = Value(826) - final val tank_traps = Value(849) //trap - final val portable_manned_turret = Value(685) - final val portable_manned_turret_nc = Value(686) - final val portable_manned_turret_tr = Value(687) - final val portable_manned_turret_vs = Value(688) - final val router_telepad_deployable = Value(744) + final val he_mine = Value(388) + final val jammer_mine = Value(420) //disruptor mine + final val motionalarmsensor = Value(575) + final val sensor_shield = Value(752) //sensor disruptor + final val spitfire_aa = Value(819) //cerebus turret + final val spitfire_cloaked = Value(825) //shadow turret + final val spitfire_turret = Value(826) + final val tank_traps = Value(849) //trap + final val portable_manned_turret = Value(685) + final val portable_manned_turret_nc = Value(686) + final val portable_manned_turret_tr = Value(687) + final val portable_manned_turret_vs = Value(688) + final val router_telepad_deployable = Value(744) } diff --git a/common/src/main/scala/net/psforever/objects/ce/SimpleDeployable.scala b/common/src/main/scala/net/psforever/objects/ce/SimpleDeployable.scala index 814779da..03cb1453 100644 --- a/common/src/main/scala/net/psforever/objects/ce/SimpleDeployable.scala +++ b/common/src/main/scala/net/psforever/objects/ce/SimpleDeployable.scala @@ -4,8 +4,7 @@ package net.psforever.objects.ce import net.psforever.objects.PlanetSideGameObject import net.psforever.objects.definition.SimpleDeployableDefinition -abstract class SimpleDeployable(cdef : SimpleDeployableDefinition) extends PlanetSideGameObject - with Deployable { +abstract class SimpleDeployable(cdef: SimpleDeployableDefinition) extends PlanetSideGameObject with Deployable { Health = Definition.MaxHealth def Definition = cdef diff --git a/common/src/main/scala/net/psforever/objects/ce/TelepadLike.scala b/common/src/main/scala/net/psforever/objects/ce/TelepadLike.scala index aa701983..6ad62550 100644 --- a/common/src/main/scala/net/psforever/objects/ce/TelepadLike.scala +++ b/common/src/main/scala/net/psforever/objects/ce/TelepadLike.scala @@ -10,37 +10,37 @@ import net.psforever.objects.zones.Zone import net.psforever.types.PlanetSideGUID trait TelepadLike { - private var router : Option[PlanetSideGUID] = None - private var activated : Boolean = false + private var router: Option[PlanetSideGUID] = None + private var activated: Boolean = false - def Router : Option[PlanetSideGUID] = router + def Router: Option[PlanetSideGUID] = router - def Router_=(rguid : PlanetSideGUID) : Option[PlanetSideGUID] = Router_=(Some(rguid)) + def Router_=(rguid: PlanetSideGUID): Option[PlanetSideGUID] = Router_=(Some(rguid)) - def Router_=(rguid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def Router_=(rguid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { router match { case None => router = rguid case Some(_) => - if(rguid.isEmpty || rguid.contains(PlanetSideGUID(0))) { + if (rguid.isEmpty || rguid.contains(PlanetSideGUID(0))) { router = None } } Router } - def Active : Boolean = activated + def Active: Boolean = activated - def Active_=(state : Boolean) : Boolean = { + def Active_=(state: Boolean): Boolean = { activated = state Active } } object TelepadLike { - final case class Activate(obj : PlanetSideGameObject with TelepadLike) + final case class Activate(obj: PlanetSideGameObject with TelepadLike) - final case class Deactivate(obj : PlanetSideGameObject with TelepadLike) + final case class Deactivate(obj: PlanetSideGameObject with TelepadLike) /** * Assemble some logic for a provided object. @@ -48,10 +48,10 @@ object TelepadLike { * anticipating a `Terminal` object using this same definition * @param context hook to the local `Actor` system */ - def Setup(obj : Amenity, context : ActorContext) : Unit = { + def Setup(obj: Amenity, context: ActorContext): Unit = { obj.asInstanceOf[TelepadLike].Router = obj.Owner.GUID import akka.actor.Props - if(obj.Actor == Default.Actor) { + if (obj.Actor == Default.Actor) { obj.Actor = context.actorOf(Props(classOf[TelepadControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } } @@ -64,20 +64,19 @@ object TelepadLike { * @param zone where the router is located * @return the pair of units that compose the teleportation system */ - def AppraiseTeleportationSystem(router : Vehicle, zone : Zone) : Option[(Utility.InternalTelepad, TelepadDeployable)] = { + def AppraiseTeleportationSystem(router: Vehicle, zone: Zone): Option[(Utility.InternalTelepad, TelepadDeployable)] = { import net.psforever.objects.vehicles.UtilityType import net.psforever.types.DriveState router.Utility(UtilityType.internal_router_telepad_deployable) match { //if the vehicle has an internal telepad, it is allowed to be a Router (that's a weird way of saying it) - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => //check for a readied remote telepad zone.GUID(util.Telepad) match { - case Some(telepad : TelepadDeployable) => + case Some(telepad: TelepadDeployable) => //determine whether to activate both the Router's internal telepad and the deployed remote telepad - if(router.DeploymentState == DriveState.Deployed && util.Active && telepad.Active) { + if (router.DeploymentState == DriveState.Deployed && util.Active && telepad.Active) { Some((util, telepad)) - } - else { + } else { None } case _ => @@ -96,8 +95,8 @@ object TelepadLike { * a placeholder like this is easy to reason around. * @param obj an entity that extends `TelepadLike` */ -class TelepadControl(obj : TelepadLike) extends akka.actor.Actor { - def receive : akka.actor.Actor.Receive = { +class TelepadControl(obj: TelepadLike) extends akka.actor.Actor { + def receive: akka.actor.Actor.Receive = { case _ => ; } } diff --git a/common/src/main/scala/net/psforever/objects/definition/AmmoBoxDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/AmmoBoxDefinition.scala index 4a7f4b96..c47ae28f 100644 --- a/common/src/main/scala/net/psforever/objects/definition/AmmoBoxDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/AmmoBoxDefinition.scala @@ -4,19 +4,19 @@ package net.psforever.objects.definition import net.psforever.objects.definition.converter.AmmoBoxConverter import net.psforever.objects.equipment.Ammo -class AmmoBoxDefinition(objectId : Int) extends EquipmentDefinition(objectId) { +class AmmoBoxDefinition(objectId: Int) extends EquipmentDefinition(objectId) { import net.psforever.objects.equipment.EquipmentSize - private val ammoType : Ammo.Value = Ammo(objectId) //let throw NoSuchElementException - private var capacity : Int = 1 + private val ammoType: Ammo.Value = Ammo(objectId) //let throw NoSuchElementException + private var capacity: Int = 1 Name = "ammo box" Size = EquipmentSize.Inventory Packet = AmmoBoxDefinition.converter - def AmmoType : Ammo.Value = ammoType + def AmmoType: Ammo.Value = ammoType - def Capacity : Int = capacity + def Capacity: Int = capacity - def Capacity_=(capacity : Int) : Int = { + def Capacity_=(capacity: Int): Int = { this.capacity = capacity Capacity } @@ -25,11 +25,11 @@ class AmmoBoxDefinition(objectId : Int) extends EquipmentDefinition(objectId) { object AmmoBoxDefinition { private val converter = new AmmoBoxConverter() - def apply(objectId: Int) : AmmoBoxDefinition = { + def apply(objectId: Int): AmmoBoxDefinition = { new AmmoBoxDefinition(objectId) } - def apply(ammoType : Ammo.Value) : AmmoBoxDefinition = { + def apply(ammoType: Ammo.Value): AmmoBoxDefinition = { new AmmoBoxDefinition(ammoType.id) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/AvatarDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/AvatarDefinition.scala index 164c69d5..da18c098 100644 --- a/common/src/main/scala/net/psforever/objects/definition/AvatarDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/AvatarDefinition.scala @@ -9,8 +9,7 @@ import net.psforever.objects.vital.VitalityDefinition * The definition for game objects that look like other people, and also for players. * @param objectId the object's identifier number */ -class AvatarDefinition(objectId : Int) extends ObjectDefinition(objectId) - with VitalityDefinition { +class AvatarDefinition(objectId: Int) extends ObjectDefinition(objectId) with VitalityDefinition { Avatars(objectId) //let throw NoSuchElementException Packet = AvatarDefinition.converter } @@ -18,11 +17,11 @@ class AvatarDefinition(objectId : Int) extends ObjectDefinition(objectId) object AvatarDefinition { private val converter = new AvatarConverter() - def apply(objectId: Int) : AvatarDefinition = { + def apply(objectId: Int): AvatarDefinition = { new AvatarDefinition(objectId) } - def apply(avatar : Avatars.Value) : AvatarDefinition = { + def apply(avatar: Avatars.Value): AvatarDefinition = { new AvatarDefinition(avatar.id) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/BasicDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/BasicDefinition.scala index 4de5b0cd..092d763a 100644 --- a/common/src/main/scala/net/psforever/objects/definition/BasicDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/BasicDefinition.scala @@ -2,21 +2,21 @@ package net.psforever.objects.definition abstract class BasicDefinition { - private var name : String = "definition" - private var descriptor : Option[String] = None + private var name: String = "definition" + private var descriptor: Option[String] = None - def Name : String = name + def Name: String = name - def Name_=(name : String) : String = { + def Name_=(name: String): String = { this.name = name Name } - def Descriptor : String = descriptor.getOrElse(Name) + def Descriptor: String = descriptor.getOrElse(Name) - def Descriptor_=(description : String) : String = Descriptor_=(Some(description)) + def Descriptor_=(description: String): String = Descriptor_=(Some(description)) - def Descriptor_=(description : Option[String]) : String = { + def Descriptor_=(description: Option[String]): String = { descriptor = description Descriptor } diff --git a/common/src/main/scala/net/psforever/objects/definition/CargoDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/CargoDefinition.scala index 3f01590e..4aee68de 100644 --- a/common/src/main/scala/net/psforever/objects/definition/CargoDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/CargoDefinition.scala @@ -7,26 +7,28 @@ import net.psforever.objects.vehicles.CargoVehicleRestriction * The definition for a cargo hold. */ class CargoDefinition extends BasicDefinition { + /** a restriction on the type of exo-suit a person can wear */ - private var vehicleRestriction : CargoVehicleRestriction.Value = CargoVehicleRestriction.Small + private var vehicleRestriction: CargoVehicleRestriction.Value = CargoVehicleRestriction.Small + /** the user can escape while the vehicle is moving */ - private var bailable : Boolean = true + private var bailable: Boolean = true Name = "cargo" - def CargoRestriction : CargoVehicleRestriction.Value = { + def CargoRestriction: CargoVehicleRestriction.Value = { this.vehicleRestriction } - def CargoRestriction_=(restriction : CargoVehicleRestriction.Value) : CargoVehicleRestriction.Value = { + def CargoRestriction_=(restriction: CargoVehicleRestriction.Value): CargoVehicleRestriction.Value = { this.vehicleRestriction = restriction restriction } - def Bailable : Boolean = { + def Bailable: Boolean = { this.bailable } - def Bailable_=(canBail : Boolean) : Boolean = { + def Bailable_=(canBail: Boolean): Boolean = { this.bailable = canBail canBail } diff --git a/common/src/main/scala/net/psforever/objects/definition/ConstructionItemDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ConstructionItemDefinition.scala index 7370b006..9cfbc41f 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ConstructionItemDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ConstructionItemDefinition.scala @@ -8,39 +8,39 @@ import net.psforever.types.CertificationType import scala.collection.mutable.ListBuffer -class ConstructionItemDefinition(objectId : Int) extends EquipmentDefinition(objectId) { +class ConstructionItemDefinition(objectId: Int) extends EquipmentDefinition(objectId) { CItem(objectId) //let throw NoSuchElementException - private val modes : ListBuffer[ConstructionFireMode] = ListBuffer() + private val modes: ListBuffer[ConstructionFireMode] = ListBuffer() Packet = new ACEConverter - def Modes : ListBuffer[ConstructionFireMode] = modes + def Modes: ListBuffer[ConstructionFireMode] = modes } object ConstructionItemDefinition { - def apply(objectId : Int) : ConstructionItemDefinition = { + def apply(objectId: Int): ConstructionItemDefinition = { new ConstructionItemDefinition(objectId) } - def apply(cItem : CItem.Value) : ConstructionItemDefinition = { + def apply(cItem: CItem.Value): ConstructionItemDefinition = { new ConstructionItemDefinition(cItem.id) } } class ConstructionFireMode { - private val deployables : ListBuffer[DeployedItem.Value] = ListBuffer.empty - private val permissions : ListBuffer[Set[CertificationType.Value]] = ListBuffer.empty + private val deployables: ListBuffer[DeployedItem.Value] = ListBuffer.empty + private val permissions: ListBuffer[Set[CertificationType.Value]] = ListBuffer.empty - def Permissions : ListBuffer[Set[CertificationType.Value]] = permissions + def Permissions: ListBuffer[Set[CertificationType.Value]] = permissions - def Deployables : ListBuffer[DeployedItem.Value] = deployables + def Deployables: ListBuffer[DeployedItem.Value] = deployables - def Item(deployable : DeployedItem.Value) : ListBuffer[DeployedItem.Value] = { + def Item(deployable: DeployedItem.Value): ListBuffer[DeployedItem.Value] = { deployables += deployable permissions += Set.empty[CertificationType.Value] deployables } - def Item(deployPair : (DeployedItem.Value, Set[CertificationType.Value])) : ListBuffer[DeployedItem.Value] = { + def Item(deployPair: (DeployedItem.Value, Set[CertificationType.Value])): ListBuffer[DeployedItem.Value] = { val (deployable, permission) = deployPair deployables += deployable permissions += permission diff --git a/common/src/main/scala/net/psforever/objects/definition/EquipmentDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/EquipmentDefinition.scala index d74e5fdb..f0b8ca38 100644 --- a/common/src/main/scala/net/psforever/objects/definition/EquipmentDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/EquipmentDefinition.scala @@ -8,31 +8,34 @@ import net.psforever.objects.inventory.InventoryTile * The definition for any piece of `Equipment`. * @param objectId the object's identifier number */ -abstract class EquipmentDefinition(objectId : Int) extends ObjectDefinition(objectId) { +abstract class EquipmentDefinition(objectId: Int) extends ObjectDefinition(objectId) { + /** the size of the item when placed in an EquipmentSlot / holster / mounting */ - private var size : EquipmentSize.Value = EquipmentSize.Blocked + private var size: EquipmentSize.Value = EquipmentSize.Blocked + /** the size of the item when placed in the grid inventory space */ - private var tile : InventoryTile = InventoryTile.Tile11 + private var tile: InventoryTile = InventoryTile.Tile11 + /** a correction for the z-coordinate for some dropped items to avoid sinking into the ground */ - private var dropOffset : Float = 0f + private var dropOffset: Float = 0f - def Size : EquipmentSize.Value = size + def Size: EquipmentSize.Value = size - def Size_=(newSize : EquipmentSize.Value) : EquipmentSize.Value = { + def Size_=(newSize: EquipmentSize.Value): EquipmentSize.Value = { size = newSize Size } - def Tile : InventoryTile = tile + def Tile: InventoryTile = tile - def Tile_=(newTile : InventoryTile) : InventoryTile = { + def Tile_=(newTile: InventoryTile): InventoryTile = { tile = newTile Tile } - def DropOffset : Float = dropOffset + def DropOffset: Float = dropOffset - def DropOffset(offset : Float) : Float = { + def DropOffset(offset: Float): Float = { dropOffset = offset DropOffset } diff --git a/common/src/main/scala/net/psforever/objects/definition/ExoSuitDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ExoSuitDefinition.scala index 0c65b55b..2aa2ea67 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ExoSuitDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ExoSuitDefinition.scala @@ -13,112 +13,112 @@ import net.psforever.types.{CertificationType, ExoSuitType, PlanetSideEmpire} * Players are influenced by the exo-suit they wear in a variety of ways, with speed and available equipment slots being major differences. * @param suitType the `Enumeration` corresponding to this exo-suit */ -class ExoSuitDefinition(private val suitType : ExoSuitType.Value) extends BasicDefinition - with ResistanceProfileMutators - with DamageResistanceModel { - protected var permissions : List[CertificationType.Value] = List.empty - protected var maxArmor : Int = 0 - protected val holsters : Array[EquipmentSize.Value] = Array.fill[EquipmentSize.Value](5)(EquipmentSize.Blocked) - protected var inventoryScale : InventoryTile = InventoryTile.Tile11 //override with custom InventoryTile - protected var inventoryOffset : Int = 0 - protected var maxCapacitor : Int = 0 - protected var capacitorRechargeDelayMillis : Int = 0 - protected var capacitorRechargePerSecond : Int = 0 - protected var capacitorDrainPerSecond : Int = 0 +class ExoSuitDefinition(private val suitType: ExoSuitType.Value) + extends BasicDefinition + with ResistanceProfileMutators + with DamageResistanceModel { + protected var permissions: List[CertificationType.Value] = List.empty + protected var maxArmor: Int = 0 + protected val holsters: Array[EquipmentSize.Value] = Array.fill[EquipmentSize.Value](5)(EquipmentSize.Blocked) + protected var inventoryScale: InventoryTile = InventoryTile.Tile11 //override with custom InventoryTile + protected var inventoryOffset: Int = 0 + protected var maxCapacitor: Int = 0 + protected var capacitorRechargeDelayMillis: Int = 0 + protected var capacitorRechargePerSecond: Int = 0 + protected var capacitorDrainPerSecond: Int = 0 Name = "exo-suit" DamageUsing = StandardInfantryDamage ResistUsing = StandardInfantryResistance Model = StandardResolutions.Infantry - def SuitType : ExoSuitType.Value = suitType + def SuitType: ExoSuitType.Value = suitType - def MaxArmor : Int = maxArmor + def MaxArmor: Int = maxArmor - def MaxArmor_=(armor : Int) : Int = { + def MaxArmor_=(armor: Int): Int = { maxArmor = math.min(math.max(0, armor), 65535) MaxArmor } - def MaxCapacitor : Int = maxCapacitor + def MaxCapacitor: Int = maxCapacitor - def MaxCapacitor_=(value : Int) : Int = { + def MaxCapacitor_=(value: Int): Int = { maxCapacitor = value maxCapacitor } - def CapacitorRechargeDelayMillis : Int = capacitorRechargeDelayMillis + def CapacitorRechargeDelayMillis: Int = capacitorRechargeDelayMillis - def CapacitorRechargeDelayMillis_=(value : Int) : Int = { + def CapacitorRechargeDelayMillis_=(value: Int): Int = { capacitorRechargeDelayMillis = value capacitorRechargeDelayMillis } - def CapacitorRechargePerSecond : Int = capacitorRechargePerSecond + def CapacitorRechargePerSecond: Int = capacitorRechargePerSecond - def CapacitorRechargePerSecond_=(value : Int) : Int = { + def CapacitorRechargePerSecond_=(value: Int): Int = { capacitorRechargePerSecond = value capacitorRechargePerSecond } - def CapacitorDrainPerSecond : Int = capacitorDrainPerSecond + def CapacitorDrainPerSecond: Int = capacitorDrainPerSecond - def CapacitorDrainPerSecond_=(value : Int) : Int = { + def CapacitorDrainPerSecond_=(value: Int): Int = { capacitorDrainPerSecond = value capacitorDrainPerSecond } - def InventoryScale : InventoryTile = inventoryScale + def InventoryScale: InventoryTile = inventoryScale - def InventoryScale_=(scale : InventoryTile) : InventoryTile = { + def InventoryScale_=(scale: InventoryTile): InventoryTile = { inventoryScale = scale InventoryScale } - def InventoryOffset : Int = inventoryOffset + def InventoryOffset: Int = inventoryOffset - def InventoryOffset_=(offset : Int) : Int = { + def InventoryOffset_=(offset: Int): Int = { inventoryOffset = math.min(math.max(0, offset), 65535) InventoryOffset } - def Holsters : Array[EquipmentSize.Value] = holsters + def Holsters: Array[EquipmentSize.Value] = holsters - def Holster(slot : Int) : EquipmentSize.Value = { - if(slot >= 0 && slot < 5) { + def Holster(slot: Int): EquipmentSize.Value = { + if (slot >= 0 && slot < 5) { holsters(slot) - } - else { + } else { EquipmentSize.Blocked } } - def Holster(slot : Int, value : EquipmentSize.Value) : EquipmentSize.Value = { - if(slot >= 0 && slot < 5) { + def Holster(slot: Int, value: EquipmentSize.Value): EquipmentSize.Value = { + if (slot >= 0 && slot < 5) { holsters(slot) = value holsters(slot) - } - else { + } else { EquipmentSize.Blocked } } - def Permissions : List[CertificationType.Value] = permissions + def Permissions: List[CertificationType.Value] = permissions - def Permissions_=(certs : List[CertificationType.Value]) : List[CertificationType.Value] = { + def Permissions_=(certs: List[CertificationType.Value]): List[CertificationType.Value] = { permissions = certs Permissions } - def Use : ExoSuitDefinition = this + def Use: ExoSuitDefinition = this def canEqual(other: Any): Boolean = other.isInstanceOf[ExoSuitDefinition] - override def equals(other: Any): Boolean = other match { - case that: ExoSuitDefinition => - (that canEqual this) && - suitType == that.suitType - case _ => false - } + override def equals(other: Any): Boolean = + other match { + case that: ExoSuitDefinition => + (that canEqual this) && + suitType == that.suitType + case _ => false + } override def hashCode(): Int = { val state = Seq(suitType) @@ -126,20 +126,20 @@ class ExoSuitDefinition(private val suitType : ExoSuitType.Value) extends BasicD } } -class SpecialExoSuitDefinition(private val suitType : ExoSuitType.Value) extends ExoSuitDefinition(suitType) { +class SpecialExoSuitDefinition(private val suitType: ExoSuitType.Value) extends ExoSuitDefinition(suitType) { Name = "heavy_armor" Descriptor = "heavy_armor" - private var activatedSpecial : SpecialExoSuitDefinition.Mode.Value = SpecialExoSuitDefinition.Mode.Normal + private var activatedSpecial: SpecialExoSuitDefinition.Mode.Value = SpecialExoSuitDefinition.Mode.Normal - def UsingSpecial : SpecialExoSuitDefinition.Mode.Value = activatedSpecial + def UsingSpecial: SpecialExoSuitDefinition.Mode.Value = activatedSpecial - def UsingSpecial_=(state : SpecialExoSuitDefinition.Mode.Value) : SpecialExoSuitDefinition.Mode.Value = { + def UsingSpecial_=(state: SpecialExoSuitDefinition.Mode.Value): SpecialExoSuitDefinition.Mode.Value = { activatedSpecial = state UsingSpecial } - override def Use : ExoSuitDefinition = { + override def Use: ExoSuitDefinition = { val obj = new SpecialExoSuitDefinition(SuitType) obj.Permissions = Permissions obj.MaxArmor = MaxArmor @@ -165,24 +165,19 @@ class SpecialExoSuitDefinition(private val suitType : ExoSuitType.Value) extends } object SpecialExoSuitDefinition { - def apply(suitType : ExoSuitType.Value) : SpecialExoSuitDefinition = { + def apply(suitType: ExoSuitType.Value): SpecialExoSuitDefinition = { new SpecialExoSuitDefinition(suitType) } object Mode extends Enumeration { type Type = Value - val - Normal, - Anchored, - Overdrive, - Shielded - = Value + val Normal, Anchored, Overdrive, Shielded = Value } } object ExoSuitDefinition { - def apply(suitType : ExoSuitType.Value) : ExoSuitDefinition = { + def apply(suitType: ExoSuitType.Value): ExoSuitDefinition = { new ExoSuitDefinition(suitType) } @@ -192,16 +187,17 @@ object ExoSuitDefinition { * @param faction the faction the player belongs to for this exosuit * @return the exo-suit definition */ - def Select(suit : ExoSuitType.Value, faction : PlanetSideEmpire.Value) : ExoSuitDefinition = { + def Select(suit: ExoSuitType.Value, faction: PlanetSideEmpire.Value): ExoSuitDefinition = { suit match { case ExoSuitType.Infiltration => GlobalDefinitions.Infiltration.Use - case ExoSuitType.Agile => GlobalDefinitions.Agile.Use - case ExoSuitType.Reinforced => GlobalDefinitions.Reinforced.Use - case ExoSuitType.MAX => faction match { - case PlanetSideEmpire.TR => GlobalDefinitions.TRMAX.Use - case PlanetSideEmpire.NC => GlobalDefinitions.NCMAX.Use - case PlanetSideEmpire.VS => GlobalDefinitions.VSMAX.Use - } + case ExoSuitType.Agile => GlobalDefinitions.Agile.Use + case ExoSuitType.Reinforced => GlobalDefinitions.Reinforced.Use + case ExoSuitType.MAX => + faction match { + case PlanetSideEmpire.TR => GlobalDefinitions.TRMAX.Use + case PlanetSideEmpire.NC => GlobalDefinitions.NCMAX.Use + case PlanetSideEmpire.VS => GlobalDefinitions.VSMAX.Use + } case _ => GlobalDefinitions.Standard.Use } } diff --git a/common/src/main/scala/net/psforever/objects/definition/ImplantDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ImplantDefinition.scala index 36302523..cd0c6921 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ImplantDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ImplantDefinition.scala @@ -17,16 +17,20 @@ import scala.collection.mutable * @param implantType the type of implant that is defined * @see `ImplantType` */ -class ImplantDefinition(private val implantType : Int) extends BasicDefinition { +class ImplantDefinition(private val implantType: Int) extends BasicDefinition { ImplantType(implantType) + /** how long it takes the implant to become ready for activation; is milliseconds */ - private var initializationDuration : Long = 0L + private var initializationDuration: Long = 0L + /** a passive certification is activated as soon as it is ready (or other condition) */ - private var passive : Boolean = false + private var passive: Boolean = false + /** how much turning on the implant costs */ - private var activationStaminaCost : Int = 0 + private var activationStaminaCost: Int = 0 + /** how much energy does this implant cost to remain activate per interval tick */ - private var staminaCost : Int = 0 + private var staminaCost: Int = 0 /** * How often in milliseconds the stamina cost will be applied, per exo-suit type @@ -37,59 +41,59 @@ class ImplantDefinition(private val implantType : Int) extends BasicDefinition { * stamina_consumption_interval3 = Rexo * stamina_consumption_interval4 = MAX? */ - private var costIntervalDefault : Int = 0 - private val costIntervalByExoSuit = mutable.HashMap[ExoSuitType.Value, Int]().withDefaultValue(CostIntervalDefault) + private var costIntervalDefault: Int = 0 + private val costIntervalByExoSuit = mutable.HashMap[ExoSuitType.Value, Int]().withDefaultValue(CostIntervalDefault) Name = "implant" - def InitializationDuration : Long = initializationDuration + def InitializationDuration: Long = initializationDuration - def InitializationDuration_=(time : Long) : Long = { + def InitializationDuration_=(time: Long): Long = { initializationDuration = math.max(0, time) InitializationDuration } - def Passive : Boolean = passive + def Passive: Boolean = passive - def Passive_=(isPassive : Boolean) : Boolean = { + def Passive_=(isPassive: Boolean): Boolean = { passive = isPassive Passive } - def ActivationStaminaCost : Int = activationStaminaCost + def ActivationStaminaCost: Int = activationStaminaCost - def ActivationStaminaCost_=(charge : Int) : Int = { + def ActivationStaminaCost_=(charge: Int): Int = { activationStaminaCost = math.max(0, charge) ActivationStaminaCost } - def StaminaCost : Int = staminaCost + def StaminaCost: Int = staminaCost - def StaminaCost_=(charge : Int) : Int = { + def StaminaCost_=(charge: Int): Int = { staminaCost = math.max(0, charge) StaminaCost } - - def CostIntervalDefault : Int = { + def CostIntervalDefault: Int = { costIntervalDefault } - def CostIntervalDefault_=(interval : Int) : Int = { + def CostIntervalDefault_=(interval: Int): Int = { costIntervalDefault = interval CostIntervalDefault } - def GetCostIntervalByExoSuit(exosuit : ExoSuitType.Value) : Int = costIntervalByExoSuit.getOrElse(exosuit, CostIntervalDefault) - def CostIntervalByExoSuitHashMap : mutable.Map[ExoSuitType.Value, Int] = costIntervalByExoSuit + def GetCostIntervalByExoSuit(exosuit: ExoSuitType.Value): Int = + costIntervalByExoSuit.getOrElse(exosuit, CostIntervalDefault) + def CostIntervalByExoSuitHashMap: mutable.Map[ExoSuitType.Value, Int] = costIntervalByExoSuit - def Type : ImplantType.Value = ImplantType(implantType) + def Type: ImplantType.Value = ImplantType(implantType) } object ImplantDefinition { - def apply(implantType : Int) : ImplantDefinition = { + def apply(implantType: Int): ImplantDefinition = { new ImplantDefinition(implantType) } - def apply(implantType : ImplantType.Value) : ImplantDefinition = { + def apply(implantType: ImplantType.Value): ImplantDefinition = { new ImplantDefinition(implantType.id) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/KitDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/KitDefinition.scala index ca318554..5653fadf 100644 --- a/common/src/main/scala/net/psforever/objects/definition/KitDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/KitDefinition.scala @@ -8,7 +8,7 @@ import net.psforever.objects.equipment.Kits * The definition for a personal one-time-use recovery item. * @param objectId the object's identifier number */ -class KitDefinition(objectId : Int) extends EquipmentDefinition(objectId) { +class KitDefinition(objectId: Int) extends EquipmentDefinition(objectId) { import net.psforever.objects.equipment.EquipmentSize import net.psforever.objects.inventory.InventoryTile Kits(objectId) //let throw NoSuchElementException @@ -21,11 +21,11 @@ class KitDefinition(objectId : Int) extends EquipmentDefinition(objectId) { object KitDefinition { private val converter = new KitConverter() - def apply(objectId: Int) : KitDefinition = { + def apply(objectId: Int): KitDefinition = { new KitDefinition(objectId) } - def apply(kit : Kits.Value) : KitDefinition = { + def apply(kit: Kits.Value): KitDefinition = { new KitDefinition(kit.id) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/ObjectDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ObjectDefinition.scala index d1c0decc..7b960c0a 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ObjectDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ObjectDefinition.scala @@ -17,26 +17,28 @@ import net.psforever.objects.definition.converter.{ObjectCreateConverter, Packet * So long as it is an `ObjectCreatePacket`, those methods can be called correctly for a game object of the desired type. * @param objectId the object's identifier number */ -abstract class ObjectDefinition(private val objectId : Int) extends BasicDefinition { +abstract class ObjectDefinition(private val objectId: Int) extends BasicDefinition { + /** a data converter for this type of object */ - protected var packet : PacketConverter = new ObjectCreateConverter[PlanetSideGameObject]() { } + protected var packet: PacketConverter = new ObjectCreateConverter[PlanetSideGameObject]() {} Name = "object definition" /** * Get the conversion object. * @return */ - final def Packet : ObjectCreateConverter[PlanetSideGameObject] = packet.asInstanceOf[ObjectCreateConverter[PlanetSideGameObject]] + final def Packet: ObjectCreateConverter[PlanetSideGameObject] = + packet.asInstanceOf[ObjectCreateConverter[PlanetSideGameObject]] /** * Assign this definition a conversion object. * @param pkt the new converter * @return the current converter, after assignment */ - final def Packet_=(pkt : ObjectCreateConverter[_]) : PacketConverter = { + final def Packet_=(pkt: ObjectCreateConverter[_]): PacketConverter = { packet = pkt Packet } - def ObjectId : Int = objectId + def ObjectId: Int = objectId } diff --git a/common/src/main/scala/net/psforever/objects/definition/ProjectileDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ProjectileDefinition.scala index 0d4be4a2..17aacc16 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ProjectileDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ProjectileDefinition.scala @@ -10,168 +10,170 @@ import net.psforever.objects.vital.{DamageType, StandardDamageProfile} * `Tool` objects emit `ProjectileDefinition` objects and that is later wrapped into a `Projectile` object. * @param objectId the object's identifier number */ -class ProjectileDefinition(objectId : Int) extends ObjectDefinition(objectId) - with JammingUnit - with StandardDamageProfile { - private val projectileType : Projectiles.Value = Projectiles(objectId) //let throw NoSuchElementException - private var acceleration : Int = 0 - private var accelerationUntil : Float = 0f - private var damageType : DamageType.Value = DamageType.None - private var damageTypeSecondary : DamageType.Value = DamageType.None - private var degradeDelay : Float = 1f - private var degradeMultiplier : Float = 1f - private var initialVelocity : Int = 1 - private var lifespan : Float = 1f - private var damageAtEdge : Float = 1f - private var damageRadius : Float = 1f - private var useDamage1Subtract : Boolean = false - private var existsOnRemoteClients : Boolean = false //`true` spawns a server-managed object - private var remoteClientData : (Int, Int) = (0, 0) //artificial values; for ObjectCreateMessage packet (oicw_little_buddy is undefined) - private var autoLock : Boolean = false - private var additionalEffect : Boolean = false - private var jammerProjectile : Boolean = false +class ProjectileDefinition(objectId: Int) + extends ObjectDefinition(objectId) + with JammingUnit + with StandardDamageProfile { + private val projectileType: Projectiles.Value = Projectiles(objectId) //let throw NoSuchElementException + private var acceleration: Int = 0 + private var accelerationUntil: Float = 0f + private var damageType: DamageType.Value = DamageType.None + private var damageTypeSecondary: DamageType.Value = DamageType.None + private var degradeDelay: Float = 1f + private var degradeMultiplier: Float = 1f + private var initialVelocity: Int = 1 + private var lifespan: Float = 1f + private var damageAtEdge: Float = 1f + private var damageRadius: Float = 1f + private var useDamage1Subtract: Boolean = false + private var existsOnRemoteClients: Boolean = false //`true` spawns a server-managed object + private var remoteClientData: (Int, Int) = + (0, 0) //artificial values; for ObjectCreateMessage packet (oicw_little_buddy is undefined) + private var autoLock: Boolean = false + private var additionalEffect: Boolean = false + private var jammerProjectile: Boolean = false //derived calculations - private var distanceMax : Float = 0f - private var distanceFromAcceleration : Float = 0f - private var distanceNoDegrade : Float = 0f - private var finalVelocity : Float = 0f + private var distanceMax: Float = 0f + private var distanceFromAcceleration: Float = 0f + private var distanceNoDegrade: Float = 0f + private var finalVelocity: Float = 0f Name = "projectile" - def ProjectileType : Projectiles.Value = projectileType + def ProjectileType: Projectiles.Value = projectileType - def UseDamage1Subtract : Boolean = useDamage1Subtract + def UseDamage1Subtract: Boolean = useDamage1Subtract - def UseDamage1Subtract_=(useDamage1Subtract : Boolean) : Boolean = { + def UseDamage1Subtract_=(useDamage1Subtract: Boolean): Boolean = { this.useDamage1Subtract = useDamage1Subtract UseDamage1Subtract } - def Acceleration : Int = acceleration + def Acceleration: Int = acceleration - def Acceleration_=(accel : Int) : Int = { + def Acceleration_=(accel: Int): Int = { acceleration = accel Acceleration } - def AccelerationUntil : Float = accelerationUntil + def AccelerationUntil: Float = accelerationUntil - def AccelerationUntil_=(accelUntil : Float) : Float = { + def AccelerationUntil_=(accelUntil: Float): Float = { accelerationUntil = accelUntil AccelerationUntil } - def ProjectileDamageType : DamageType.Value = damageType + def ProjectileDamageType: DamageType.Value = damageType - def ProjectileDamageType_=(damageType1 : DamageType.Value) : DamageType.Value = { + def ProjectileDamageType_=(damageType1: DamageType.Value): DamageType.Value = { damageType = damageType1 ProjectileDamageType } - def ProjectileDamageTypeSecondary : DamageType.Value = damageTypeSecondary + def ProjectileDamageTypeSecondary: DamageType.Value = damageTypeSecondary - def ProjectileDamageTypeSecondary_=(damageTypeSecondary1 : DamageType.Value) : DamageType.Value = { + def ProjectileDamageTypeSecondary_=(damageTypeSecondary1: DamageType.Value): DamageType.Value = { damageTypeSecondary = damageTypeSecondary1 ProjectileDamageTypeSecondary } - def DegradeDelay : Float = degradeDelay + def DegradeDelay: Float = degradeDelay - def DegradeDelay_=(degradeDelay : Float) : Float = { + def DegradeDelay_=(degradeDelay: Float): Float = { this.degradeDelay = degradeDelay DegradeDelay } - def DegradeMultiplier : Float = degradeMultiplier + def DegradeMultiplier: Float = degradeMultiplier - def DegradeMultiplier_=(degradeMultiplier : Float) : Float = { + def DegradeMultiplier_=(degradeMultiplier: Float): Float = { this.degradeMultiplier = degradeMultiplier DegradeMultiplier } - def InitialVelocity : Int = initialVelocity + def InitialVelocity: Int = initialVelocity - def InitialVelocity_=(initialVelocity : Int) : Int = { + def InitialVelocity_=(initialVelocity: Int): Int = { this.initialVelocity = initialVelocity InitialVelocity } - def Lifespan : Float = lifespan + def Lifespan: Float = lifespan - def Lifespan_=(lifespan : Float) : Float = { + def Lifespan_=(lifespan: Float): Float = { this.lifespan = lifespan Lifespan } - def DamageAtEdge : Float = damageAtEdge + def DamageAtEdge: Float = damageAtEdge - def DamageAtEdge_=(damageAtEdge : Float) : Float = { + def DamageAtEdge_=(damageAtEdge: Float): Float = { this.damageAtEdge = damageAtEdge DamageAtEdge } - def DamageRadius : Float = damageRadius + def DamageRadius: Float = damageRadius - def DamageRadius_=(damageRadius : Float) : Float = { + def DamageRadius_=(damageRadius: Float): Float = { this.damageRadius = damageRadius DamageRadius } - def ExistsOnRemoteClients : Boolean = existsOnRemoteClients + def ExistsOnRemoteClients: Boolean = existsOnRemoteClients - def ExistsOnRemoteClients_=(existsOnRemoteClients : Boolean) : Boolean = { + def ExistsOnRemoteClients_=(existsOnRemoteClients: Boolean): Boolean = { this.existsOnRemoteClients = existsOnRemoteClients ExistsOnRemoteClients } - def RemoteClientData : (Int, Int) = remoteClientData + def RemoteClientData: (Int, Int) = remoteClientData - def RemoteClientData_=(remoteClientData : (Int, Int)) : (Int, Int) = { + def RemoteClientData_=(remoteClientData: (Int, Int)): (Int, Int) = { this.remoteClientData = remoteClientData RemoteClientData } - def AutoLock : Boolean = autoLock + def AutoLock: Boolean = autoLock - def AutoLock_=(lockState : Boolean) : Boolean = { + def AutoLock_=(lockState: Boolean): Boolean = { autoLock = lockState AutoLock } - def AdditionalEffect : Boolean = additionalEffect + def AdditionalEffect: Boolean = additionalEffect - def AdditionalEffect_=(effect : Boolean) : Boolean = { + def AdditionalEffect_=(effect: Boolean): Boolean = { additionalEffect = effect AdditionalEffect } - def JammerProjectile : Boolean = jammerProjectile + def JammerProjectile: Boolean = jammerProjectile - def JammerProjectile_=(effect : Boolean) : Boolean = { + def JammerProjectile_=(effect: Boolean): Boolean = { jammerProjectile = effect JammerProjectile } - def DistanceMax : Float = distanceMax //accessor only + def DistanceMax: Float = distanceMax //accessor only - def DistanceFromAcceleration : Float = distanceFromAcceleration //accessor only + def DistanceFromAcceleration: Float = distanceFromAcceleration //accessor only - def DistanceNoDegrade : Float = distanceNoDegrade //accessor only + def DistanceNoDegrade: Float = distanceNoDegrade //accessor only - def FinalVelocity : Float = finalVelocity //accessor only + def FinalVelocity: Float = finalVelocity //accessor only } object ProjectileDefinition { - def apply(projectileType : Projectiles.Value) : ProjectileDefinition = { + def apply(projectileType: Projectiles.Value): ProjectileDefinition = { new ProjectileDefinition(projectileType.id) } - def CalculateDerivedFields(pdef : ProjectileDefinition) : Unit = { - val (distanceMax, distanceFromAcceleration, finalVelocity) : (Float, Float, Float) = if(pdef.Acceleration == 0) { + def CalculateDerivedFields(pdef: ProjectileDefinition): Unit = { + val (distanceMax, distanceFromAcceleration, finalVelocity): (Float, Float, Float) = if (pdef.Acceleration == 0) { (pdef.InitialVelocity * pdef.Lifespan, 0, pdef.InitialVelocity.toFloat) - } - else { - val distanceFromAcceleration = (pdef.AccelerationUntil * pdef.InitialVelocity) + (0.5f * pdef.Acceleration * pdef.AccelerationUntil * pdef.AccelerationUntil) - val finalVelocity = pdef.InitialVelocity + pdef.Acceleration * pdef.AccelerationUntil + } else { + val distanceFromAcceleration = + (pdef.AccelerationUntil * pdef.InitialVelocity) + (0.5f * pdef.Acceleration * pdef.AccelerationUntil * pdef.AccelerationUntil) + val finalVelocity = pdef.InitialVelocity + pdef.Acceleration * pdef.AccelerationUntil val distanceAfterAcceleration = finalVelocity * (pdef.Lifespan - pdef.AccelerationUntil) (distanceFromAcceleration + distanceAfterAcceleration, distanceFromAcceleration, finalVelocity) } @@ -179,13 +181,11 @@ object ProjectileDefinition { pdef.distanceFromAcceleration = distanceFromAcceleration pdef.finalVelocity = finalVelocity - pdef.distanceNoDegrade = if(pdef.DegradeDelay == 0f) { + pdef.distanceNoDegrade = if (pdef.DegradeDelay == 0f) { pdef.distanceMax - } - else if(pdef.DegradeDelay < pdef.AccelerationUntil) { + } else if (pdef.DegradeDelay < pdef.AccelerationUntil) { (pdef.DegradeDelay * pdef.InitialVelocity) + (0.5f * pdef.Acceleration * pdef.DegradeDelay * pdef.DegradeDelay) - } - else { + } else { pdef.distanceFromAcceleration + pdef.finalVelocity * (pdef.DegradeDelay - pdef.AccelerationUntil) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/SeatDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/SeatDefinition.scala index f1b12915..fc2c04a3 100644 --- a/common/src/main/scala/net/psforever/objects/definition/SeatDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/SeatDefinition.scala @@ -7,41 +7,44 @@ import net.psforever.objects.vehicles.SeatArmorRestriction * The definition for a seat. */ class SeatDefinition extends BasicDefinition { + /** a restriction on the type of exo-suit a person can wear */ - private var armorRestriction : SeatArmorRestriction.Value = SeatArmorRestriction.NoMax + private var armorRestriction: SeatArmorRestriction.Value = SeatArmorRestriction.NoMax + /** the user can escape while the vehicle is moving */ - private var bailable : Boolean = false + private var bailable: Boolean = false + /** any controlled weapon */ - private var weaponMount : Option[Int] = None + private var weaponMount: Option[Int] = None Name = "seat" - def ArmorRestriction : SeatArmorRestriction.Value = { + def ArmorRestriction: SeatArmorRestriction.Value = { this.armorRestriction } - def ArmorRestriction_=(restriction : SeatArmorRestriction.Value) : SeatArmorRestriction.Value = { + def ArmorRestriction_=(restriction: SeatArmorRestriction.Value): SeatArmorRestriction.Value = { this.armorRestriction = restriction restriction } - def Bailable : Boolean = { + def Bailable: Boolean = { this.bailable } - def Bailable_=(canBail : Boolean) : Boolean = { + def Bailable_=(canBail: Boolean): Boolean = { this.bailable = canBail canBail } - def ControlledWeapon : Option[Int] = { + def ControlledWeapon: Option[Int] = { this.weaponMount } - def ControlledWeapon_=(wep : Int) : Option[Int] = { + def ControlledWeapon_=(wep: Int): Option[Int] = { ControlledWeapon_=(Some(wep)) } - def ControlledWeapon_=(wep : Option[Int]) : Option[Int] = { + def ControlledWeapon_=(wep: Option[Int]): Option[Int] = { this.weaponMount = wep ControlledWeapon } diff --git a/common/src/main/scala/net/psforever/objects/definition/SimpleDeployableDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/SimpleDeployableDefinition.scala index 277481a5..5c3be2ad 100644 --- a/common/src/main/scala/net/psforever/objects/definition/SimpleDeployableDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/SimpleDeployableDefinition.scala @@ -7,66 +7,72 @@ import net.psforever.objects.ce.{Deployable, DeployableCategory, DeployedItem} import net.psforever.objects.definition.converter.SmallDeployableConverter import net.psforever.objects.serverobject.PlanetSideServerObject import net.psforever.objects.vital.resistance.ResistanceProfileMutators -import net.psforever.objects.vital.{DamageResistanceModel, NoResistanceSelection, StandardDeployableDamage, VitalityDefinition} +import net.psforever.objects.vital.{ + DamageResistanceModel, + NoResistanceSelection, + StandardDeployableDamage, + VitalityDefinition +} import scala.concurrent.duration._ trait BaseDeployableDefinition { - private var category : DeployableCategory.Value = DeployableCategory.Boomers - private var deployTime : Long = (1 second).toMillis //ms + private var category: DeployableCategory.Value = DeployableCategory.Boomers + private var deployTime: Long = (1 second).toMillis //ms - def Item : DeployedItem.Value + def Item: DeployedItem.Value - def DeployCategory : DeployableCategory.Value = category + def DeployCategory: DeployableCategory.Value = category - def DeployCategory_=(cat : DeployableCategory.Value) : DeployableCategory.Value = { + def DeployCategory_=(cat: DeployableCategory.Value): DeployableCategory.Value = { category = cat DeployCategory } - def DeployTime : Long = deployTime + def DeployTime: Long = deployTime - def DeployTime_=(time : FiniteDuration) : Long = DeployTime_=(time.toMillis) + def DeployTime_=(time: FiniteDuration): Long = DeployTime_=(time.toMillis) - def DeployTime_=(time: Long) : Long = { + def DeployTime_=(time: Long): Long = { deployTime = time DeployTime } - def Initialize(obj : PlanetSideGameObject with Deployable, context : ActorContext) : Unit = { } + def Initialize(obj: PlanetSideGameObject with Deployable, context: ActorContext): Unit = {} - def Initialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) : Unit = { } + def Initialize(obj: PlanetSideServerObject with Deployable, context: ActorContext): Unit = {} - def Uninitialize(obj : PlanetSideGameObject with Deployable, context : ActorContext) : Unit = { } + def Uninitialize(obj: PlanetSideGameObject with Deployable, context: ActorContext): Unit = {} - def Uninitialize(obj : PlanetSideServerObject with Deployable, context : ActorContext) : Unit = { } + def Uninitialize(obj: PlanetSideServerObject with Deployable, context: ActorContext): Unit = {} } -abstract class DeployableDefinition(objectId : Int) extends ObjectDefinition(objectId) - with DamageResistanceModel - with ResistanceProfileMutators - with VitalityDefinition - with BaseDeployableDefinition { +abstract class DeployableDefinition(objectId: Int) + extends ObjectDefinition(objectId) + with DamageResistanceModel + with ResistanceProfileMutators + with VitalityDefinition + with BaseDeployableDefinition { private val item = DeployedItem(objectId) //let throw NoSuchElementException DamageUsing = StandardDeployableDamage ResistUsing = NoResistanceSelection - def Item : DeployedItem.Value = item + def Item: DeployedItem.Value = item } -class SimpleDeployableDefinition(objectId : Int) extends DeployableDefinition(objectId) { +class SimpleDeployableDefinition(objectId: Int) extends DeployableDefinition(objectId) { Packet = new SmallDeployableConverter } -abstract class ComplexDeployableDefinition(objectId : Int) extends DeployableDefinition(objectId) +abstract class ComplexDeployableDefinition(objectId: Int) extends DeployableDefinition(objectId) object SimpleDeployableDefinition { - def apply(item : DeployedItem.Value) : SimpleDeployableDefinition = + def apply(item: DeployedItem.Value): SimpleDeployableDefinition = new SimpleDeployableDefinition(item.id) - def SimpleUninitialize(obj : PlanetSideGameObject, context : ActorContext) : Unit = { } + def SimpleUninitialize(obj: PlanetSideGameObject, context: ActorContext): Unit = {} - def SimpleUninitialize(obj : PlanetSideServerObject, context : ActorContext) : Unit = { + def SimpleUninitialize(obj: PlanetSideServerObject, context: ActorContext): Unit = { context.stop(obj.Actor) obj.Actor = Default.Actor } diff --git a/common/src/main/scala/net/psforever/objects/definition/SimpleItemDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/SimpleItemDefinition.scala index b122a0d7..6633469c 100644 --- a/common/src/main/scala/net/psforever/objects/definition/SimpleItemDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/SimpleItemDefinition.scala @@ -3,7 +3,7 @@ package net.psforever.objects.definition import net.psforever.objects.equipment.SItem -class SimpleItemDefinition(objectId : Int) extends EquipmentDefinition(objectId) { +class SimpleItemDefinition(objectId: Int) extends EquipmentDefinition(objectId) { import net.psforever.objects.equipment.EquipmentSize SItem(objectId) //let throw NoSuchElementException Name = "tool" @@ -11,11 +11,11 @@ class SimpleItemDefinition(objectId : Int) extends EquipmentDefinition(objectId) } object SimpleItemDefinition { - def apply(objectId : Int) : SimpleItemDefinition = { + def apply(objectId: Int): SimpleItemDefinition = { new SimpleItemDefinition(objectId) } - def apply(simpItem : SItem.Value) : SimpleItemDefinition = { + def apply(simpItem: SItem.Value): SimpleItemDefinition = { new SimpleItemDefinition(simpItem.id) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/ToolDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/ToolDefinition.scala index 9b583d62..0c383974 100644 --- a/common/src/main/scala/net/psforever/objects/definition/ToolDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/ToolDefinition.scala @@ -6,27 +6,27 @@ import net.psforever.objects.equipment.FireModeDefinition import scala.collection.mutable -class ToolDefinition(objectId : Int) extends EquipmentDefinition(objectId) { - private val ammoTypes : mutable.ListBuffer[AmmoBoxDefinition] = new mutable.ListBuffer[AmmoBoxDefinition] - private val projectileTypes : mutable.ListBuffer[ProjectileDefinition] = new mutable.ListBuffer[ProjectileDefinition] - private val fireModes : mutable.ListBuffer[FireModeDefinition] = new mutable.ListBuffer[FireModeDefinition] - private var defaultFireModeIndex : Option[Int] = None +class ToolDefinition(objectId: Int) extends EquipmentDefinition(objectId) { + private val ammoTypes: mutable.ListBuffer[AmmoBoxDefinition] = new mutable.ListBuffer[AmmoBoxDefinition] + private val projectileTypes: mutable.ListBuffer[ProjectileDefinition] = new mutable.ListBuffer[ProjectileDefinition] + private val fireModes: mutable.ListBuffer[FireModeDefinition] = new mutable.ListBuffer[FireModeDefinition] + private var defaultFireModeIndex: Option[Int] = None Name = "tool" Packet = ToolDefinition.converter - def AmmoTypes : mutable.ListBuffer[AmmoBoxDefinition] = ammoTypes + def AmmoTypes: mutable.ListBuffer[AmmoBoxDefinition] = ammoTypes - def ProjectileTypes : mutable.ListBuffer[ProjectileDefinition] = projectileTypes + def ProjectileTypes: mutable.ListBuffer[ProjectileDefinition] = projectileTypes - def FireModes : mutable.ListBuffer[FireModeDefinition] = fireModes + def FireModes: mutable.ListBuffer[FireModeDefinition] = fireModes - def NextFireModeIndex(index : Int) : Int = index + 1 + def NextFireModeIndex(index: Int): Int = index + 1 - def DefaultFireModeIndex : Int = defaultFireModeIndex.getOrElse(0) + def DefaultFireModeIndex: Int = defaultFireModeIndex.getOrElse(0) - def DefaultFireModeIndex_=(index : Int) : Int = DefaultFireModeIndex_=(Some(index)) + def DefaultFireModeIndex_=(index: Int): Int = DefaultFireModeIndex_=(Some(index)) - def DefaultFireModeIndex_=(index : Option[Int]) : Int = { + def DefaultFireModeIndex_=(index: Option[Int]): Int = { defaultFireModeIndex = index DefaultFireModeIndex } @@ -35,7 +35,7 @@ class ToolDefinition(objectId : Int) extends EquipmentDefinition(objectId) { object ToolDefinition { private val converter = new ToolConverter() - def apply(objectId : Int) : ToolDefinition = { + def apply(objectId: Int): ToolDefinition = { new ToolDefinition(objectId) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala index f496784d..900edcb4 100644 --- a/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala @@ -15,37 +15,39 @@ import scala.concurrent.duration._ * An object definition system used to construct and retain the parameters of various vehicles. * @param objectId the object id that is associated with this sort of `Vehicle` */ -class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId) - with VitalityDefinition - with ResistanceProfileMutators - with DamageResistanceModel { - /** vehicle shields offered through amp station facility benefits (generally: 20% of health + 1) */ - private var maxShields : Int = 0 - /* key - seat index, value - seat object */ - private val seats : mutable.HashMap[Int, SeatDefinition] = mutable.HashMap[Int, SeatDefinition]() - private val cargo : mutable.HashMap[Int, CargoDefinition] = mutable.HashMap[Int, CargoDefinition]() - /* key - entry point index, value - seat index */ - private val mountPoints : mutable.HashMap[Int, Int] = mutable.HashMap() - /* key - seat index (where this weapon attaches during object construction), value - the weapon on an EquipmentSlot */ - private val weapons : mutable.HashMap[Int, ToolDefinition] = mutable.HashMap[Int, ToolDefinition]() - private var deployment : Boolean = false - private val utilities : mutable.HashMap[Int, UtilityType.Value] = mutable.HashMap() - private val utilityOffsets : mutable.HashMap[Int, Vector3] = mutable.HashMap() - private var deploymentTime_Deploy : Int = 0 //ms - private var deploymentTime_Undeploy : Int = 0 //ms - private var trunkSize : InventoryTile = InventoryTile.None - private var trunkOffset : Int = 0 +class VehicleDefinition(objectId: Int) + extends ObjectDefinition(objectId) + with VitalityDefinition + with ResistanceProfileMutators + with DamageResistanceModel { - /** The position offset of the trunk, orientation as East = 0 */ - private var trunkLocation : Vector3 = Vector3.Zero - 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 - private var maxCapacitor : Int = 0 - private var maxNtuCapacitor : Int = 0 - private var destroyedModel : Option[DestroyedVehicle.Value] = None + /** vehicle shields offered through amp station facility benefits (generally: 20% of health + 1) */ + private var maxShields: Int = 0 + /* key - seat index, value - seat object */ + private val seats: mutable.HashMap[Int, SeatDefinition] = mutable.HashMap[Int, SeatDefinition]() + private val cargo: mutable.HashMap[Int, CargoDefinition] = mutable.HashMap[Int, CargoDefinition]() + /* key - entry point index, value - seat index */ + private val mountPoints: mutable.HashMap[Int, Int] = mutable.HashMap() + /* key - seat index (where this weapon attaches during object construction), value - the weapon on an EquipmentSlot */ + private val weapons: mutable.HashMap[Int, ToolDefinition] = mutable.HashMap[Int, ToolDefinition]() + private var deployment: Boolean = false + private val utilities: mutable.HashMap[Int, UtilityType.Value] = mutable.HashMap() + private val utilityOffsets: mutable.HashMap[Int, Vector3] = mutable.HashMap() + private var deploymentTime_Deploy: Int = 0 //ms + private var deploymentTime_Undeploy: Int = 0 //ms + private var trunkSize: InventoryTile = InventoryTile.None + private var trunkOffset: Int = 0 + + /** The position offset of the trunk, orientation as East = 0 */ + private var trunkLocation: Vector3 = Vector3.Zero + 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 + private var maxCapacitor: Int = 0 + private var maxNtuCapacitor: Int = 0 + private var destroyedModel: Option[DestroyedVehicle.Value] = None Name = "vehicle" Packet = VehicleDefinition.converter DamageUsing = StandardVehicleDamage @@ -54,135 +56,135 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId) RepairDistance = 10 RepairRestoresAt = 1 - def MaxShields : Int = maxShields + def MaxShields: Int = maxShields - def MaxShields_=(shields : Int) : Int = { + def MaxShields_=(shields: Int): Int = { maxShields = shields MaxShields } - def Seats : mutable.HashMap[Int, SeatDefinition] = seats + def Seats: mutable.HashMap[Int, SeatDefinition] = seats - def Cargo : mutable.HashMap[Int, CargoDefinition] = cargo + def Cargo: mutable.HashMap[Int, CargoDefinition] = cargo - def MountPoints : mutable.HashMap[Int, Int] = mountPoints + def MountPoints: mutable.HashMap[Int, Int] = mountPoints - def CanBeOwned : Boolean = canBeOwned + def CanBeOwned: Boolean = canBeOwned - def CanBeOwned_=(ownable : Boolean) : Boolean = { + def CanBeOwned_=(ownable: Boolean): Boolean = { canBeOwned = ownable CanBeOwned } - def CanCloak : Boolean = canCloak + def CanCloak: Boolean = canCloak - def CanCloak_=(cloakable : Boolean) : Boolean = { + def CanCloak_=(cloakable: Boolean): Boolean = { canCloak = cloakable CanCloak } - def CanFly : Boolean = canFly + def CanFly: Boolean = canFly - def CanFly_=(flying : Boolean) : Boolean = { + def CanFly_=(flying: Boolean): Boolean = { canFly = flying CanFly } - def Weapons : mutable.HashMap[Int, ToolDefinition] = weapons + def Weapons: mutable.HashMap[Int, ToolDefinition] = weapons - def Deployment : Boolean = deployment + def Deployment: Boolean = deployment - def Deployment_=(deployable : Boolean) : Boolean = { + def Deployment_=(deployable: Boolean): Boolean = { deployment = deployable Deployment } - def Utilities : mutable.HashMap[Int, UtilityType.Value] = utilities + def Utilities: mutable.HashMap[Int, UtilityType.Value] = utilities - def UtilityOffset : mutable.HashMap[Int, Vector3] = utilityOffsets + def UtilityOffset: mutable.HashMap[Int, Vector3] = utilityOffsets - def DeployTime : Int = deploymentTime_Deploy + def DeployTime: Int = deploymentTime_Deploy - def DeployTime_=(dtime : Int) : Int = { + def DeployTime_=(dtime: Int): Int = { deploymentTime_Deploy = dtime DeployTime } - def DeconstructionTime : Option[FiniteDuration] = deconTime + def DeconstructionTime: Option[FiniteDuration] = deconTime - def DeconstructionTime_=(time : FiniteDuration) : Option[FiniteDuration] = { + def DeconstructionTime_=(time: FiniteDuration): Option[FiniteDuration] = { deconTime_=(Some(time)) DeconstructionTime } - def DeconstructionTime_=(time : Option[FiniteDuration]) : Option[FiniteDuration] = { + def DeconstructionTime_=(time: Option[FiniteDuration]): Option[FiniteDuration] = { deconTime = time DeconstructionTime } - def UndeployTime : Int = deploymentTime_Undeploy + def UndeployTime: Int = deploymentTime_Undeploy - def UndeployTime_=(dtime : Int) : Int = { + def UndeployTime_=(dtime: Int): Int = { deploymentTime_Undeploy = dtime UndeployTime } - def TrunkSize : InventoryTile = trunkSize + def TrunkSize: InventoryTile = trunkSize - def TrunkSize_=(tile : InventoryTile) : InventoryTile = { + def TrunkSize_=(tile: InventoryTile): InventoryTile = { trunkSize = tile TrunkSize } - def TrunkOffset : Int = trunkOffset + def TrunkOffset: Int = trunkOffset - def TrunkOffset_=(offset : Int) : Int = { + def TrunkOffset_=(offset: Int): Int = { trunkOffset = offset TrunkOffset } - def TrunkLocation : Vector3 = trunkLocation + def TrunkLocation: Vector3 = trunkLocation - def TrunkLocation_=(location : Vector3) : Vector3 = { + def TrunkLocation_=(location: Vector3): Vector3 = { trunkLocation = location TrunkLocation } - def AutoPilotSpeeds : (Int, Int) = serverVehicleOverrideSpeeds + def AutoPilotSpeeds: (Int, Int) = serverVehicleOverrideSpeeds - def AutoPilotSpeeds_=(speeds : (Int, Int)) : (Int, Int) = { + def AutoPilotSpeeds_=(speeds: (Int, Int)): (Int, Int) = { serverVehicleOverrideSpeeds = speeds AutoPilotSpeeds } - def AutoPilotSpeed1 : Int = serverVehicleOverrideSpeeds._1 + def AutoPilotSpeed1: Int = serverVehicleOverrideSpeeds._1 - def AutoPilotSpeed2 : Int = serverVehicleOverrideSpeeds._2 + def AutoPilotSpeed2: Int = serverVehicleOverrideSpeeds._2 - def MaxNtuCapacitor : Int = maxNtuCapacitor + def MaxNtuCapacitor: Int = maxNtuCapacitor - def MaxNtuCapacitor_=(max: Int) : Int = { + def MaxNtuCapacitor_=(max: Int): Int = { maxNtuCapacitor = max MaxNtuCapacitor } - def MaxCapacitor : Int = maxCapacitor + def MaxCapacitor: Int = maxCapacitor - def MaxCapacitor_=(max: Int) : Int = { + def MaxCapacitor_=(max: Int): Int = { maxCapacitor = max MaxCapacitor } - private var jackDuration = Array(0, 0, 0, 0) + private var jackDuration = Array(0, 0, 0, 0) def JackingDuration: Array[Int] = jackDuration - def JackingDuration_=(arr: Array[Int]) : Array[Int] = { + def JackingDuration_=(arr: Array[Int]): Array[Int] = { jackDuration = arr arr } - def DestroyedModel : Option[DestroyedVehicle.Value] = destroyedModel + def DestroyedModel: Option[DestroyedVehicle.Value] = destroyedModel - def DestroyedModel_=(model : Option[DestroyedVehicle.Value]) : Option[DestroyedVehicle.Value] = { + def DestroyedModel_=(model: Option[DestroyedVehicle.Value]): Option[DestroyedVehicle.Value] = { destroyedModel = model DestroyedModel } @@ -191,7 +193,7 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId) object VehicleDefinition { private val converter = new VehicleConverter - def apply(objectId: Int) : VehicleDefinition = { + def apply(objectId: Int): VehicleDefinition = { new VehicleDefinition(objectId) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/ACEConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/ACEConverter.scala index 4334ac58..e0222ab4 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/ACEConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/ACEConverter.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Success, Try} class ACEConverter extends ObjectCreateConverter[ConstructionItem]() { - override def ConstructorData(obj : ConstructionItem) : Try[HandheldData] = { + override def ConstructorData(obj: ConstructionItem): Try[HandheldData] = { Success( HandheldData( CommonFieldData( @@ -27,7 +27,7 @@ class ACEConverter extends ObjectCreateConverter[ConstructionItem]() { ) } - override def DetailedConstructorData(obj : ConstructionItem) : Try[DetailedConstructionToolData] = { + override def DetailedConstructorData(obj: ConstructionItem): Try[DetailedConstructionToolData] = { Success( DetailedConstructionToolData( CommonFieldData( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/AmmoBoxConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/AmmoBoxConverter.scala index 4339e85e..d2351f5e 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/AmmoBoxConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/AmmoBoxConverter.scala @@ -8,11 +8,11 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.util.{Success, Try} class AmmoBoxConverter extends ObjectCreateConverter[AmmoBox] { - override def ConstructorData(obj : AmmoBox) : Try[CommonFieldData] = { + override def ConstructorData(obj: AmmoBox): Try[CommonFieldData] = { Success(CommonFieldData()(false)) } - override def DetailedConstructorData(obj : AmmoBox) : Try[DetailedAmmoBoxData] = { + override def DetailedConstructorData(obj: AmmoBox): Try[DetailedAmmoBoxData] = { Success( DetailedAmmoBoxData( CommonFieldData( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/AvatarConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/AvatarConverter.scala index 88096672..30088d72 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/AvatarConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/AvatarConverter.scala @@ -10,10 +10,10 @@ import scala.annotation.tailrec import scala.util.{Success, Try} class AvatarConverter extends ObjectCreateConverter[Player]() { - override def ConstructorData(obj : Player) : Try[PlayerData] = { + override def ConstructorData(obj: Player): Try[PlayerData] = { import AvatarConverter._ Success( - if(obj.VehicleSeated.isEmpty) { + if (obj.VehicleSeated.isEmpty) { PlayerData( PlacementData(obj.Position, obj.Orientation, obj.Velocity), MakeAppearanceData(obj), @@ -21,8 +21,7 @@ class AvatarConverter extends ObjectCreateConverter[Player]() { MakeInventoryData(obj), GetDrawnSlot(obj) ) - } - else { + } else { PlayerData( MakeAppearanceData(obj), MakeCharacterData(obj), @@ -33,10 +32,10 @@ class AvatarConverter extends ObjectCreateConverter[Player]() { ) } - override def DetailedConstructorData(obj : Player) : Try[DetailedPlayerData] = { + override def DetailedConstructorData(obj: Player): Try[DetailedPlayerData] = { import AvatarConverter._ Success( - if(obj.VehicleSeated.isEmpty) { + if (obj.VehicleSeated.isEmpty) { DetailedPlayerData.apply( PlacementData(obj.Position, obj.Orientation, obj.Velocity), MakeAppearanceData(obj), @@ -44,8 +43,7 @@ class AvatarConverter extends ObjectCreateConverter[Player]() { MakeDetailedInventoryData(obj), GetDrawnSlot(obj) ) - } - else { + } else { DetailedPlayerData.apply( MakeAppearanceData(obj), MakeDetailedCharacterData(obj), @@ -58,14 +56,15 @@ class AvatarConverter extends ObjectCreateConverter[Player]() { } object AvatarConverter { + /** * Compose some data from a `Player` into a representation common to both `CharacterData` and `DetailedCharacterData`. * @param obj the `Player` game object * @return the resulting `CharacterAppearanceData` */ - def MakeAppearanceData(obj : Player) : Int=>CharacterAppearanceData = { - val alt_model_flag : Boolean = obj.isBackpack - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = { + val alt_model_flag: Boolean = obj.isBackpack + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData(obj.Name, obj.Faction, obj.Sex, obj.Head, obj.Voice), CommonFieldData( obj.Faction, @@ -86,7 +85,7 @@ object AvatarConverter { 0, 0 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, outfit_name = "", outfit_logo = 0, @@ -109,14 +108,13 @@ object AvatarConverter { CharacterAppearanceData(aa, ab, RibbonBars()) } - def MakeCharacterData(obj : Player) : (Boolean,Boolean)=>CharacterData = { + def MakeCharacterData(obj: Player): (Boolean, Boolean) => CharacterData = { val MaxArmor = obj.MaxArmor CharacterData( StatConverter.Health(obj.Health, obj.MaxHealth), - if(MaxArmor == 0) { + if (MaxArmor == 0) { 0 - } - else { + } else { StatConverter.Health(obj.Armor, MaxArmor) }, DressBattleRank(obj), @@ -127,43 +125,59 @@ object AvatarConverter { ) } - def MakeDetailedCharacterData(obj : Player) : Option[Int]=>DetailedCharacterData = { - val bep : Long = obj.BEP - val maxOpt : Option[Long] = if(obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } else { None } - val ba : DetailedCharacterA = DetailedCharacterA( + def MakeDetailedCharacterData(obj: Player): Option[Int] => DetailedCharacterData = { + val bep: Long = obj.BEP + val maxOpt: Option[Long] = if (obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } + else { None } + val ba: DetailedCharacterA = DetailedCharacterA( bep, obj.CEP, - 0L, 0L, 0L, - obj.MaxHealth, obj.Health, + 0L, + 0L, + 0L, + obj.MaxHealth, + obj.Health, false, obj.Armor, 0L, - obj.MaxStamina, obj.Stamina, + obj.MaxStamina, + obj.Stamina, maxOpt, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), obj.Certifications.toList.sortBy(_.id) //TODO is sorting necessary? ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, MakeImplantEntries(obj), - Nil, Nil, + Nil, + Nil, obj.FirstTimeEvents, tutorials = List.empty[String], //TODO tutorial list - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, MakeCosmetics(obj) ) - pad_length : Option[Int] => DetailedCharacterData(ba, bb(bep, pad_length))(pad_length) + pad_length: Option[Int] => DetailedCharacterData(ba, bb(bep, pad_length))(pad_length) } - def MakeInventoryData(obj : Player) : InventoryData = { + def MakeInventoryData(obj: Player): InventoryData = { InventoryData(MakeHolsters(obj, BuildEquipment).sortBy(_.parentSlot)) } - def MakeDetailedInventoryData(obj : Player) : InventoryData = { - InventoryData((MakeHolsters(obj, BuildDetailedEquipment) ++ MakeFifthSlot(obj) ++ MakeInventory(obj)).sortBy(_.parentSlot)) + def MakeDetailedInventoryData(obj: Player): InventoryData = { + InventoryData( + (MakeHolsters(obj, BuildDetailedEquipment) ++ MakeFifthSlot(obj) ++ MakeInventory(obj)).sortBy(_.parentSlot) + ) } /** @@ -172,18 +186,15 @@ object AvatarConverter { * @param obj the `Player` game object * @return the resulting uniform upgrade level */ - private def DressBattleRank(obj : Player) : UniformStyle.Value = { - val bep : Long = obj.BEP - if(bep > 2583440) { //BR25+ + private def DressBattleRank(obj: Player): UniformStyle.Value = { + val bep: Long = obj.BEP + if (bep > 2583440) { //BR25+ UniformStyle.ThirdUpgrade - } - else if(bep > 308989) { //BR14+ + } else if (bep > 308989) { //BR14+ UniformStyle.SecondUpgrade - } - else if(bep > 44999) { //BR7+ + } else if (bep > 44999) { //BR7+ UniformStyle.FirstUpgrade - } - else { //BR1+ + } else { //BR1+ UniformStyle.Normal } } @@ -194,24 +205,19 @@ object AvatarConverter { * @param obj the `Player` game object * @return the resulting uniform upgrade level */ - private def DressCommandRank(obj : Player) : Int = { + private def DressCommandRank(obj: Player): Int = { val cep = obj.CEP - if(cep > 599999) { + if (cep > 599999) { 5 - } - else if(cep > 299999) { + } else if (cep > 299999) { 4 - } - else if(cep > 149999) { + } else if (cep > 149999) { 3 - } - else if(cep > 49999) { + } else if (cep > 49999) { 2 - } - else if(cep > 9999) { + } else if (cep > 9999) { 1 - } - else { + } else { 0 } } @@ -222,17 +228,19 @@ object AvatarConverter { * @return the resulting implant `List` * @see `ImplantEntry` in `DetailedCharacterData` */ - private def MakeImplantEntries(obj : Player) : List[ImplantEntry] = { + private def MakeImplantEntries(obj: Player): List[ImplantEntry] = { //val numImplants : Int = DetailedCharacterData.numberOfImplantSlots(obj.BEP) //val implants = obj.Implants - obj.Implants.map({ case(implant, initialization, _) => - if(initialization == 0) { - ImplantEntry(implant, None) - } - else { - ImplantEntry(implant, Some(math.max(0,initialization).toInt)) - } - }).toList + obj.Implants + .map({ + case (implant, initialization, _) => + if (initialization == 0) { + ImplantEntry(implant, None) + } else { + ImplantEntry(implant, Some(math.max(0, initialization).toInt)) + } + }) + .toList } /** @@ -240,12 +248,12 @@ object AvatarConverter { * @param implants a `Sequence` of `ImplantSlot` objects * @return the effect of an active implant */ - private def MakeImplantEffectList(implants : Seq[(ImplantType.Value, Long, Boolean)]) : List[ImplantEffects.Value] = { + private def MakeImplantEffectList(implants: Seq[(ImplantType.Value, Long, Boolean)]): List[ImplantEffects.Value] = { implants.collect { - case (ImplantType.AdvancedRegen,_,true) => ImplantEffects.RegenEffects - case (ImplantType.DarklightVision,_,true) => ImplantEffects.DarklightEffects - case (ImplantType.PersonalShield,_,true) => ImplantEffects.PersonalShieldEffects - case (ImplantType.Surge,_,true) => ImplantEffects.SurgeEffects + case (ImplantType.AdvancedRegen, _, true) => ImplantEffects.RegenEffects + case (ImplantType.DarklightVision, _, true) => ImplantEffects.DarklightEffects + case (ImplantType.PersonalShield, _, true) => ImplantEffects.PersonalShieldEffects + case (ImplantType.Surge, _, true) => ImplantEffects.SurgeEffects }.toList } @@ -257,11 +265,10 @@ object AvatarConverter { * @see `Cosmetics` * @return the `Cosmetics` options */ - def MakeCosmetics(obj : Player) : Option[Cosmetics] = - if(DetailedCharacterData.isBR24(obj.BEP)) { + def MakeCosmetics(obj: Player): Option[Cosmetics] = + if (DetailedCharacterData.isBR24(obj.BEP)) { obj.PersonalStyleFeatures.orElse(Some(Cosmetics())) - } - else { + } else { None } @@ -272,11 +279,16 @@ object AvatarConverter { * @param obj the `Player` game object * @return a list of all items that were in the inventory in decoded packet form */ - private def MakeInventory(obj : Player) : List[InternalSlot] = { + private def MakeInventory(obj: Player): List[InternalSlot] = { obj.Inventory.Items .map(item => { - val equip : Equipment = item.obj - InternalSlot(equip.Definition.ObjectId, equip.GUID, item.start, equip.Definition.Packet.DetailedConstructorData(equip).get) + val equip: Equipment = item.obj + InternalSlot( + equip.Definition.ObjectId, + equip.GUID, + item.start, + equip.Definition.Packet.DetailedConstructorData(equip).get + ) }) } @@ -289,7 +301,7 @@ object AvatarConverter { * @param builder the function used to transform to the decoded packet form * @return a list of all items that were in the holsters in decoded packet form */ - private def MakeHolsters(obj : Player, builder : (Int, Equipment) => InternalSlot) : List[InternalSlot] = { + private def MakeHolsters(obj: Player, builder: (Int, Equipment) => InternalSlot): List[InternalSlot] = { recursiveMakeHolsters(obj.Holsters().iterator, builder) } @@ -300,7 +312,7 @@ object AvatarConverter { * @param obj the `Player` game object * @return a list of any item that was in the fifth holster in decoded packet form */ - private def MakeFifthSlot(obj : Player) : List[InternalSlot] = { + private def MakeFifthSlot(obj: Player): List[InternalSlot] = { obj.Slot(5).Equipment match { case Some(equip) => BuildDetailedEquipment(5, equip) :: Nil @@ -315,7 +327,7 @@ object AvatarConverter { * @param equip the game object * @return the game object in decoded packet form */ - private def BuildEquipment(index : Int, equip : Equipment) : InternalSlot = { + private def BuildEquipment(index: Int, equip: Equipment): InternalSlot = { InternalSlot(equip.Definition.ObjectId, equip.GUID, index, equip.Definition.Packet.ConstructorData(equip).get) } @@ -325,8 +337,13 @@ object AvatarConverter { * @param equip the game object * @return the game object in decoded packet form */ - def BuildDetailedEquipment(index : Int, equip : Equipment) : InternalSlot = { - InternalSlot(equip.Definition.ObjectId, equip.GUID, index, equip.Definition.Packet.DetailedConstructorData(equip).get) + def BuildDetailedEquipment(index: Int, equip: Equipment): InternalSlot = { + InternalSlot( + equip.Definition.ObjectId, + equip.GUID, + index, + equip.Definition.Packet.DetailedConstructorData(equip).get + ) } /** @@ -337,22 +354,25 @@ object AvatarConverter { * @param index which holster is currently being explored * @return the `List` of inventory data created from the holsters */ - @tailrec private def recursiveMakeHolsters(iter : Iterator[EquipmentSlot], builder : (Int, Equipment) => InternalSlot, list : List[InternalSlot] = Nil, index : Int = 0) : List[InternalSlot] = { - if(!iter.hasNext) { + @tailrec private def recursiveMakeHolsters( + iter: Iterator[EquipmentSlot], + builder: (Int, Equipment) => InternalSlot, + list: List[InternalSlot] = Nil, + index: Int = 0 + ): List[InternalSlot] = { + if (!iter.hasNext) { list - } - else { - val slot : EquipmentSlot = iter.next - if(slot.Equipment.isDefined) { - val equip : Equipment = slot.Equipment.get + } else { + val slot: EquipmentSlot = iter.next + if (slot.Equipment.isDefined) { + val equip: Equipment = slot.Equipment.get recursiveMakeHolsters( iter, builder, list :+ builder(index, equip), index + 1 ) - } - else { + } else { recursiveMakeHolsters(iter, builder, list, index + 1) } } @@ -363,10 +383,10 @@ object AvatarConverter { * @param obj the `Player` game object * @return the holster's Enumeration value */ - def GetDrawnSlot(obj : Player) : DrawnSlot.Value = { + def GetDrawnSlot(obj: Player): DrawnSlot.Value = { obj.DrawnSlot match { case Player.HandsDownSlot | Player.FreeHandSlot => DrawnSlot.None - case n => DrawnSlot(n) + case n => DrawnSlot(n) } } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/BoomerTriggerConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/BoomerTriggerConverter.scala index ac392624..62669209 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/BoomerTriggerConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/BoomerTriggerConverter.scala @@ -8,13 +8,15 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.util.{Success, Try} class BoomerTriggerConverter extends ObjectCreateConverter[SimpleItem]() { - override def ConstructorData(obj : SimpleItem) : Try[HandheldData] = { + override def ConstructorData(obj: SimpleItem): Try[HandheldData] = { Success(HandheldData(CommonFieldData())) } - override def DetailedConstructorData(obj : SimpleItem) : Try[DetailedConstructionToolData] = { - Success(DetailedConstructionToolData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)) - )) + override def DetailedConstructorData(obj: SimpleItem): Try[DetailedConstructionToolData] = { + Success( + DetailedConstructionToolData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)) + ) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala index 6d90d4cc..e943d424 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/CharacterSelectConverter.scala @@ -2,7 +2,7 @@ package net.psforever.objects.definition.converter import net.psforever.objects.{Player, Tool} -import net.psforever.objects.equipment.{Equipment, EquipmentSlot} +import net.psforever.objects.equipment.EquipmentSlot import net.psforever.packet.game.objectcreate._ import net.psforever.types.{PlanetSideGUID, _} @@ -15,9 +15,10 @@ import scala.util.{Failure, Success, Try} * Details that would not be apparent on that screen such as implants or certifications are ignored. */ class CharacterSelectConverter extends AvatarConverter { - override def ConstructorData(obj : Player) : Try[PlayerData] = Failure(new Exception("CharacterSelectConverter should not be used to generate CharacterData")) + override def ConstructorData(obj: Player): Try[PlayerData] = + Failure(new Exception("CharacterSelectConverter should not be used to generate CharacterData")) - override def DetailedConstructorData(obj : Player) : Try[DetailedPlayerData] = { + override def DetailedConstructorData(obj: Player): Try[DetailedPlayerData] = { Success( DetailedPlayerData.apply( PlacementData(0, 0, 0), @@ -35,8 +36,8 @@ class CharacterSelectConverter extends AvatarConverter { * @see `AvatarConverter.MakeAppearanceData` * @return the resulting `CharacterAppearanceData` */ - private def MakeAppearanceData(obj : Player) : Int=>CharacterAppearanceData = { - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + private def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = { + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData(obj.Name, obj.Faction, obj.Sex, obj.Head, CharacterVoice.Mute), CommonFieldData( obj.Faction, @@ -57,7 +58,7 @@ class CharacterSelectConverter extends AvatarConverter { 0, 0 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, outfit_name = "", outfit_logo = 0, @@ -80,35 +81,49 @@ class CharacterSelectConverter extends AvatarConverter { CharacterAppearanceData(aa, ab, RibbonBars()) } - private def MakeDetailedCharacterData(obj : Player) : Option[Int]=>DetailedCharacterData = { - val bep : Long = obj.BEP - val maxOpt : Option[Long] = if(obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } else { None } - val ba : DetailedCharacterA = DetailedCharacterA( + private def MakeDetailedCharacterData(obj: Player): Option[Int] => DetailedCharacterData = { + val bep: Long = obj.BEP + val maxOpt: Option[Long] = if (obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } + else { None } + val ba: DetailedCharacterA = DetailedCharacterA( bep, obj.CEP, - 0L, 0L, 0L, - 1, 1, + 0L, + 0L, + 0L, + 1, + 1, false, 0, 0L, - 1, 1, + 1, + 1, maxOpt, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), certs = List.empty[CertificationType.Value] ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, MakeImplantEntries(obj), //necessary for correct stream length - Nil, Nil, + Nil, + Nil, firstTimeEvents = List.empty[String], tutorials = List.empty[String], - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, AvatarConverter.MakeCosmetics(obj) ) - pad_length : Option[Int] => DetailedCharacterData(ba, bb(bep, pad_length))(pad_length) + pad_length: Option[Int] => DetailedCharacterData(ba, bb(bep, pad_length))(pad_length) } /** @@ -117,7 +132,7 @@ class CharacterSelectConverter extends AvatarConverter { * @return the resulting implant `List` * @see `ImplantEntry` in `DetailedCharacterData` */ - private def MakeImplantEntries(obj : Player) : List[ImplantEntry] = { + private def MakeImplantEntries(obj: Player): List[ImplantEntry] = { List.fill[ImplantEntry](DetailedCharacterData.numberOfImplantSlots(obj.BEP))(ImplantEntry(ImplantType.None, None)) } @@ -129,14 +144,17 @@ class CharacterSelectConverter extends AvatarConverter { * @see `AvatarConverter.recursiveMakeHolsters` * @return the `List` of inventory data created from the holsters */ - @tailrec private def recursiveMakeHolsters(iter : Iterator[EquipmentSlot], list : List[InternalSlot] = Nil, index : Int = 0) : List[InternalSlot] = { - if(!iter.hasNext) { + @tailrec private def recursiveMakeHolsters( + iter: Iterator[EquipmentSlot], + list: List[InternalSlot] = Nil, + index: Int = 0 + ): List[InternalSlot] = { + if (!iter.hasNext) { list - } - else { - val slot : EquipmentSlot = iter.next + } else { + val slot: EquipmentSlot = iter.next slot.Equipment match { - case Some(equip : Tool) => + case Some(equip: Tool) => val jammed = equip.Jammed equip.Jammed = false val slot = AvatarConverter.BuildDetailedEquipment(index, equip) diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/CommandDetonaterConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/CommandDetonaterConverter.scala index c30408b7..d96f343b 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/CommandDetonaterConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/CommandDetonaterConverter.scala @@ -3,12 +3,12 @@ package net.psforever.objects.definition.converter import net.psforever.objects.SimpleItem import net.psforever.packet.game.objectcreate.{CommonFieldData, DetailedCommandDetonaterData, HandheldData} -import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} +import net.psforever.types.PlanetSideGUID import scala.util.{Success, Try} class CommandDetonaterConverter extends ObjectCreateConverter[SimpleItem]() { - override def ConstructorData(obj : SimpleItem) : Try[HandheldData] = { + override def ConstructorData(obj: SimpleItem): Try[HandheldData] = { Success( HandheldData( CommonFieldData( @@ -26,7 +26,7 @@ class CommandDetonaterConverter extends ObjectCreateConverter[SimpleItem]() { ) } - override def DetailedConstructorData(obj : SimpleItem) : Try[DetailedCommandDetonaterData] = { + override def DetailedConstructorData(obj: SimpleItem): Try[DetailedCommandDetonaterData] = { Success( DetailedCommandDetonaterData( CommonFieldData( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala index d0d59b1e..c7466e65 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/CorpseConverter.scala @@ -10,13 +10,13 @@ import scala.annotation.tailrec import scala.util.{Failure, Success, Try} class CorpseConverter extends AvatarConverter { - override def ConstructorData(obj : Player) : Try[PlayerData] = + override def ConstructorData(obj: Player): Try[PlayerData] = Failure(new Exception("CorpseConverter should not be used to generate CharacterData")) - override def DetailedConstructorData(obj : Player) : Try[DetailedPlayerData] = { + override def DetailedConstructorData(obj: Player): Try[DetailedPlayerData] = { Success( DetailedPlayerData.apply( - PlacementData(obj.Position, Vector3(0,0, obj.Orientation.z)), + PlacementData(obj.Position, Vector3(0, 0, obj.Orientation.z)), MakeAppearanceData(obj), MakeDetailedCharacterData(obj), InventoryData((MakeHolsters(obj) ++ MakeInventory(obj)).sortBy(_.parentSlot)), @@ -30,8 +30,8 @@ class CorpseConverter extends AvatarConverter { * @param obj the `Player` game object * @return the resulting `CharacterAppearanceData` */ - private def MakeAppearanceData(obj : Player) : Int=>CharacterAppearanceData = { - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + private def MakeAppearanceData(obj: Player): Int => CharacterAppearanceData = { + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData(obj.Name, obj.Faction, CharacterGender.Male, 0, CharacterVoice.Mute), CommonFieldData( obj.Faction, @@ -52,7 +52,7 @@ class CorpseConverter extends AvatarConverter { 0, 0 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, outfit_name = "", outfit_logo = 0, @@ -75,34 +75,48 @@ class CorpseConverter extends AvatarConverter { CharacterAppearanceData(aa, ab, RibbonBars()) } - private def MakeDetailedCharacterData(obj : Player) : Option[Int]=>DetailedCharacterData = { - val maxOpt : Option[Long] = if(obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } else { None } - val ba : DetailedCharacterA = DetailedCharacterA( + private def MakeDetailedCharacterData(obj: Player): Option[Int] => DetailedCharacterData = { + val maxOpt: Option[Long] = if (obj.ExoSuit == ExoSuitType.MAX) { Some(0L) } + else { None } + val ba: DetailedCharacterA = DetailedCharacterA( bep = 0L, cep = 0L, - 0L, 0L, 0L, - 0, 0, + 0L, + 0L, + 0L, + 0, + 0, false, 0, 0L, - 0, 0, + 0, + 0, maxOpt, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), certs = List.empty[CertificationType.Value] ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, implants = List.empty[ImplantEntry], - Nil, Nil, + Nil, + Nil, firstTimeEvents = List.empty[String], tutorials = List.empty[String], - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, cosmetics = None ) - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(0, pad_length))(pad_length) + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(0, pad_length))(pad_length) } /** @@ -112,11 +126,11 @@ class CorpseConverter extends AvatarConverter { * @param obj the `Player` game object * @return a list of all items that were in the inventory in decoded packet form */ - private def MakeInventory(obj : Player) : List[InternalSlot] = { + private def MakeInventory(obj: Player): List[InternalSlot] = { obj.Inventory.Items .map(item => { - val equip : Equipment = item.obj - BuildEquipment(item.start, equip) + val equip: Equipment = item.obj + BuildEquipment(item.start, equip) }) } @@ -128,7 +142,7 @@ class CorpseConverter extends AvatarConverter { * @param obj the `Player` game object * @return a list of all items that were in the holsters in decoded packet form */ - private def MakeHolsters(obj : Player) : List[InternalSlot] = { + private def MakeHolsters(obj: Player): List[InternalSlot] = { recursiveMakeHolsters(obj.Holsters().iterator) } @@ -139,21 +153,23 @@ class CorpseConverter extends AvatarConverter { * @param index which holster is currently being explored * @return the `List` of inventory data created from the holsters */ - @tailrec private def recursiveMakeHolsters(iter : Iterator[EquipmentSlot], list : List[InternalSlot] = Nil, index : Int = 0) : List[InternalSlot] = { - if(!iter.hasNext) { + @tailrec private def recursiveMakeHolsters( + iter: Iterator[EquipmentSlot], + list: List[InternalSlot] = Nil, + index: Int = 0 + ): List[InternalSlot] = { + if (!iter.hasNext) { list - } - else { - val slot : EquipmentSlot = iter.next - if(slot.Equipment.isDefined) { - val equip : Equipment = slot.Equipment.get + } else { + val slot: EquipmentSlot = iter.next + if (slot.Equipment.isDefined) { + val equip: Equipment = slot.Equipment.get recursiveMakeHolsters( iter, list :+ BuildEquipment(index, equip), index + 1 ) - } - else { + } else { recursiveMakeHolsters(iter, list, index + 1) } } @@ -165,8 +181,13 @@ class CorpseConverter extends AvatarConverter { * @param equip the game object * @return the game object in decoded packet form */ - private def BuildEquipment(index : Int, equip : Equipment) : InternalSlot = { - InternalSlot(equip.Definition.ObjectId, equip.GUID, index, equip.Definition.Packet.DetailedConstructorData(equip).get) + private def BuildEquipment(index: Int, equip: Equipment): InternalSlot = { + InternalSlot( + equip.Definition.ObjectId, + equip.GUID, + index, + equip.Definition.Packet.DetailedConstructorData(equip).get + ) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/DestroyedVehicleConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/DestroyedVehicleConverter.scala index 6df53256..a614b223 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/DestroyedVehicleConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/DestroyedVehicleConverter.scala @@ -7,14 +7,17 @@ import net.psforever.packet.game.objectcreate.{DestroyedVehicleData, PlacementDa import scala.util.{Failure, Success, Try} class DestroyedVehicleConverter extends ObjectCreateConverter[Vehicle]() { - override def DetailedConstructorData(obj : Vehicle) : Try[DestroyedVehicleData] = - Failure(new Exception("DestroyedVehicleConverter should not be used to generate detailed DestroyedVehicleData (nothing should)")) + override def DetailedConstructorData(obj: Vehicle): Try[DestroyedVehicleData] = + Failure( + new Exception( + "DestroyedVehicleConverter should not be used to generate detailed DestroyedVehicleData (nothing should)" + ) + ) - override def ConstructorData(obj : Vehicle) : Try[DestroyedVehicleData] = { - if(obj.Health > 0) { + override def ConstructorData(obj: Vehicle): Try[DestroyedVehicleData] = { + if (obj.Health > 0) { Failure(new Exception("Vehicle used on DestroyedVehicleConverter has not yet been destroyed (Health == 0)")) - } - else { + } else { Success(DestroyedVehicleData(PlacementData(obj.Position, obj.Orientation))) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/DroppodConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/DroppodConverter.scala index 783a4c27..53a04ee4 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/DroppodConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/DroppodConverter.scala @@ -8,12 +8,12 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class DroppodConverter extends ObjectCreateConverter[Vehicle]() { - override def DetailedConstructorData(obj : Vehicle) : Try[DroppodData] = + override def DetailedConstructorData(obj: Vehicle): Try[DroppodData] = Failure(new Exception("DroppodConverter should not be used to generate detailed DroppodData (nothing should)")) - override def ConstructorData(obj : Vehicle) : Try[DroppodData] = { + override def ConstructorData(obj: Vehicle): Try[DroppodData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 0) { //active + if (health > 0) { //active Success( DroppodData( CommonFieldDataWithPlacement( @@ -29,7 +29,7 @@ class DroppodConverter extends ObjectCreateConverter[Vehicle]() { v5 = None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ), @@ -38,8 +38,7 @@ class DroppodConverter extends ObjectCreateConverter[Vehicle]() { unk = false ) ) - } - else { //destroyed + } else { //destroyed Success( DroppodData( CommonFieldDataWithPlacement( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/FieldTurretConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/FieldTurretConverter.scala index 6987669e..1379c606 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/FieldTurretConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/FieldTurretConverter.scala @@ -10,9 +10,9 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class FieldTurretConverter extends ObjectCreateConverter[TurretDeployable]() { - override def ConstructorData(obj : TurretDeployable) : Try[OneMannedFieldTurretData] = { + override def ConstructorData(obj: TurretDeployable): Try[OneMannedFieldTurretData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 3) { + if (health > 3) { Success( OneMannedFieldTurretData( CommonFieldDataWithPlacement( @@ -28,7 +28,7 @@ class FieldTurretConverter extends ObjectCreateConverter[TurretDeployable]() { None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ), @@ -36,8 +36,7 @@ class FieldTurretConverter extends ObjectCreateConverter[TurretDeployable]() { Some(InventoryData(FieldTurretConverter.MakeMountings(obj))) ) ) - } - else { + } else { Success( OneMannedFieldTurretData( CommonFieldDataWithPlacement( @@ -60,17 +59,19 @@ class FieldTurretConverter extends ObjectCreateConverter[TurretDeployable]() { } } - override def DetailedConstructorData(obj : TurretDeployable) : Try[OneMannedFieldTurretData] = + override def DetailedConstructorData(obj: TurretDeployable): Try[OneMannedFieldTurretData] = Failure(new Exception("converter should not be used to generate detailed OneMannedFieldTurretData")) } object FieldTurretConverter { - private def MakeMountings(obj : WeaponTurret) : List[InventoryItemData.InventoryItem] = { - obj.Weapons.map({ - case(index, slot) => - val equip : Equipment = slot.Equipment.get - val equipDef = equip.Definition - InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) - }).toList + private def MakeMountings(obj: WeaponTurret): List[InventoryItemData.InventoryItem] = { + obj.Weapons + .map({ + case (index, slot) => + val equip: Equipment = slot.Equipment.get + val equipDef = equip.Definition + InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) + }) + .toList } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/InternalTelepadDeployableConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/InternalTelepadDeployableConverter.scala index 776bc871..34f0c4bf 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/InternalTelepadDeployableConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/InternalTelepadDeployableConverter.scala @@ -9,7 +9,7 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.util.{Failure, Success, Try} class InternalTelepadDeployableConverter extends ObjectCreateConverter[PlanetSideGameObject with TelepadLike]() { - override def ConstructorData(obj : PlanetSideGameObject with TelepadLike) : Try[TelepadDeployableData] = { + override def ConstructorData(obj: PlanetSideGameObject with TelepadLike): Try[TelepadDeployableData] = { obj.Router match { case Some(PlanetSideGUID(0)) => Failure(new IllegalStateException("InternalTelepadDeployableConverter: knowledge of parent Router is null")) @@ -34,7 +34,9 @@ class InternalTelepadDeployableConverter extends ObjectCreateConverter[PlanetSid ) case None => - Failure(new IllegalStateException("InternalTelepadDeployableConverter: telepad needs to know id of its parent Router")) + Failure( + new IllegalStateException("InternalTelepadDeployableConverter: telepad needs to know id of its parent Router") + ) } } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/KitConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/KitConverter.scala index 31176a73..6d2cac5e 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/KitConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/KitConverter.scala @@ -7,11 +7,11 @@ import net.psforever.packet.game.objectcreate.{CommonFieldData, DetailedAmmoBoxD import scala.util.{Success, Try} class KitConverter extends ObjectCreateConverter[Kit]() { - override def ConstructorData(obj : Kit) : Try[CommonFieldData] = { + override def ConstructorData(obj: Kit): Try[CommonFieldData] = { Success(CommonFieldData()(false)) } - override def DetailedConstructorData(obj : Kit) : Try[DetailedAmmoBoxData] = { + override def DetailedConstructorData(obj: Kit): Try[DetailedAmmoBoxData] = { Success(DetailedAmmoBoxData(0, 1)) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala index ba24b1d8..ee8a2d33 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala @@ -10,7 +10,7 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.util.{Success, Try} class LockerContainerConverter extends ObjectCreateConverter[LockerEquipment]() { - override def ConstructorData(obj : LockerEquipment) : Try[LockerContainerData] = { + override def ConstructorData(obj: LockerEquipment): Try[LockerContainerData] = { MakeInventory(obj.Inventory) match { case Nil => Success(LockerContainerData(None)) @@ -19,18 +19,21 @@ class LockerContainerConverter extends ObjectCreateConverter[LockerEquipment]() } } - override def DetailedConstructorData(obj : LockerEquipment) : Try[DetailedLockerContainerData] = { - if(obj.Inventory.Size > 0) { - Success(DetailedLockerContainerData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - Some(InventoryData(MakeDetailedInventory(obj.Inventory))) - )) - } - else { - Success(DetailedLockerContainerData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - None - )) + override def DetailedConstructorData(obj: LockerEquipment): Try[DetailedLockerContainerData] = { + if (obj.Inventory.Size > 0) { + Success( + DetailedLockerContainerData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + Some(InventoryData(MakeDetailedInventory(obj.Inventory))) + ) + ) + } else { + Success( + DetailedLockerContainerData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + None + ) + ) } } @@ -40,13 +43,18 @@ class LockerContainerConverter extends ObjectCreateConverter[LockerEquipment]() * @param inv the inventory container * @return a list of all items that were in the inventory in decoded packet form */ - private def MakeInventory(inv : GridInventory) : List[InternalSlot] = { + private def MakeInventory(inv: GridInventory): List[InternalSlot] = { inv.Items .map(item => { - val equip : Equipment = item.obj - InternalSlot(equip.Definition.ObjectId, equip.GUID, item.start, equip.Definition.Packet.ConstructorData(equip).get) + val equip: Equipment = item.obj + InternalSlot( + equip.Definition.ObjectId, + equip.GUID, + item.start, + equip.Definition.Packet.ConstructorData(equip).get + ) }) - } + } /** * Transform a list of contained items into a list of contained `InternalSlot` objects. @@ -54,11 +62,16 @@ class LockerContainerConverter extends ObjectCreateConverter[LockerEquipment]() * @param inv the inventory container * @return a list of all items that were in the inventory in decoded packet form */ - private def MakeDetailedInventory(inv : GridInventory) : List[InternalSlot] = { + private def MakeDetailedInventory(inv: GridInventory): List[InternalSlot] = { inv.Items .map(item => { - val equip : Equipment = item.obj - InternalSlot(equip.Definition.ObjectId, equip.GUID, item.start, equip.Definition.Packet.DetailedConstructorData(equip).get) + val equip: Equipment = item.obj + InternalSlot( + equip.Definition.ObjectId, + equip.GUID, + item.start, + equip.Definition.Packet.DetailedConstructorData(equip).get + ) }) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/PacketConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/PacketConverter.scala index 0a7fec60..b772e0f4 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/PacketConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/PacketConverter.scala @@ -17,17 +17,22 @@ sealed trait PacketConverter * @tparam A the type of game object */ abstract class ObjectCreateConverter[A <: PlanetSideGameObject] extends PacketConverter { + /** * Take a game object and transform it into its equivalent data for an `0x17` packet. * @param obj the game object * @return the specific `ConstructorData` that is equivalent to this object */ - def ConstructorData(obj : A) : Try[ConstructorData] = { Failure(new NoSuchMethodException(s"method not defined for object $obj")) } + def ConstructorData(obj: A): Try[ConstructorData] = { + Failure(new NoSuchMethodException(s"method not defined for object $obj")) + } /** * Take a game object and transform it into its equivalent data for an `0x18` packet. * @param obj the game object * @return the specific `ConstructorData` that is equivalent to this object */ - def DetailedConstructorData(obj : A) : Try[ConstructorData] = { Failure(new NoSuchMethodException(s"method not defined for object $obj")) } + def DetailedConstructorData(obj: A): Try[ConstructorData] = { + Failure(new NoSuchMethodException(s"method not defined for object $obj")) + } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/ProjectileConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/ProjectileConverter.scala index 34856bf6..ce5e7395 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/ProjectileConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/ProjectileConverter.scala @@ -2,13 +2,19 @@ package net.psforever.objects.definition.converter import net.psforever.objects.ballistics.Projectile -import net.psforever.packet.game.objectcreate.{CommonFieldData, CommonFieldDataWithPlacement, FlightPhysics, PlacementData, RemoteProjectileData} +import net.psforever.packet.game.objectcreate.{ + CommonFieldData, + CommonFieldDataWithPlacement, + FlightPhysics, + PlacementData, + RemoteProjectileData +} import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class ProjectileConverter extends ObjectCreateConverter[Projectile]() { - override def ConstructorData(obj : Projectile) : Try[RemoteProjectileData] = { + override def ConstructorData(obj: Projectile): Try[RemoteProjectileData] = { Success( RemoteProjectileData( CommonFieldDataWithPlacement( @@ -38,6 +44,8 @@ class ProjectileConverter extends ObjectCreateConverter[Projectile]() { ) } - override def DetailedConstructorData(obj : Projectile) : Try[RemoteProjectileData] = - Failure(new Exception("ProjectileConverter should not be used to generate detailed projectile data (nothing should)")) + override def DetailedConstructorData(obj: Projectile): Try[RemoteProjectileData] = + Failure( + new Exception("ProjectileConverter should not be used to generate detailed projectile data (nothing should)") + ) } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/REKConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/REKConverter.scala index 339c4e4f..7c4afab9 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/REKConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/REKConverter.scala @@ -8,7 +8,7 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.util.{Success, Try} class REKConverter extends ObjectCreateConverter[SimpleItem]() { - override def ConstructorData(obj : SimpleItem) : Try[REKData] = { + override def ConstructorData(obj: SimpleItem): Try[REKData] = { Success( REKData( CommonFieldData( @@ -20,12 +20,13 @@ class REKConverter extends ObjectCreateConverter[SimpleItem]() { false, Some(false), None, - PlanetSideGUID(0)) + PlanetSideGUID(0) + ) ) ) } - override def DetailedConstructorData(obj : SimpleItem) : Try[DetailedREKData] = { + override def DetailedConstructorData(obj: SimpleItem): Try[DetailedREKData] = { Success( DetailedREKData( CommonFieldData( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/SeatConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/SeatConverter.scala index 5b7af1f2..ced03f48 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/SeatConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/SeatConverter.scala @@ -6,7 +6,7 @@ import net.psforever.objects.vehicles.Seat import net.psforever.packet.game.objectcreate.{InventoryItemData, ObjectClass, PlayerData, VehicleData} object SeatConverter { - def MakeSeat(player : Player, offset : Long) : PlayerData = { + def MakeSeat(player: Player, offset: Long): PlayerData = { VehicleData.PlayerData( AvatarConverter.MakeAppearanceData(player), AvatarConverter.MakeCharacterData(player), @@ -17,15 +17,17 @@ object SeatConverter { } //TODO do not use for now; causes seat access permission issues with many passengers; may not mesh with workflows; GUID requirements - def MakeSeats(seats : Map[Int, Seat], initialOffset : Long) : List[InventoryItemData.InventoryItem] = { + def MakeSeats(seats: Map[Int, Seat], initialOffset: Long): List[InventoryItemData.InventoryItem] = { var offset = initialOffset seats .filter({ case (_, seat) => seat.isOccupied }) - .map({case (index, seat) => - val player = seat.Occupant.get - val entry = InventoryItemData(ObjectClass.avatar, player.GUID, index, SeatConverter.MakeSeat(player, offset)) - offset += entry.bitsize - entry - }).toList + .map({ + case (index, seat) => + val player = seat.Occupant.get + val entry = InventoryItemData(ObjectClass.avatar, player.GUID, index, SeatConverter.MakeSeat(player, offset)) + offset += entry.bitsize + entry + }) + .toList } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/ShieldGeneratorConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/ShieldGeneratorConverter.scala index 90e33744..74536ffb 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/ShieldGeneratorConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/ShieldGeneratorConverter.scala @@ -8,9 +8,9 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class ShieldGeneratorConverter extends ObjectCreateConverter[ShieldGeneratorDeployable]() { - override def ConstructorData(obj : ShieldGeneratorDeployable) : Try[AegisShieldGeneratorData] = { + override def ConstructorData(obj: ShieldGeneratorDeployable): Try[AegisShieldGeneratorData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 0) { + if (health > 0) { Success( AegisShieldGeneratorData( CommonFieldDataWithPlacement( @@ -26,15 +26,14 @@ class ShieldGeneratorConverter extends ObjectCreateConverter[ShieldGeneratorDepl None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ), health ) ) - } - else { + } else { Success( AegisShieldGeneratorData( CommonFieldDataWithPlacement( @@ -57,6 +56,6 @@ class ShieldGeneratorConverter extends ObjectCreateConverter[ShieldGeneratorDepl } } - override def DetailedConstructorData(obj : ShieldGeneratorDeployable) : Try[AegisShieldGeneratorData] = + override def DetailedConstructorData(obj: ShieldGeneratorDeployable): Try[AegisShieldGeneratorData] = Failure(new Exception("converter should not be used to generate detailed ShieldGeneratorDdata")) } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/SmallDeployableConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/SmallDeployableConverter.scala index b80024b2..5ad1b408 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/SmallDeployableConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/SmallDeployableConverter.scala @@ -10,7 +10,7 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class SmallDeployableConverter extends ObjectCreateConverter[PlanetSideGameObject with Deployable]() { - override def ConstructorData(obj : PlanetSideGameObject with Deployable) : Try[CommonFieldDataWithPlacement] = { + override def ConstructorData(obj: PlanetSideGameObject with Deployable): Try[CommonFieldDataWithPlacement] = { Success( CommonFieldDataWithPlacement( PlacementData(obj.Position, obj.Orientation), @@ -21,20 +21,20 @@ class SmallDeployableConverter extends ObjectCreateConverter[PlanetSideGameObjec false, None, jammered = obj match { - case o : JammableUnit => o.Jammed - case _ => false + case o: JammableUnit => o.Jammed + case _ => false }, Some(false), None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ) ) } - override def DetailedConstructorData(obj : PlanetSideGameObject with Deployable) : Try[CommonFieldDataWithPlacement] = + override def DetailedConstructorData(obj: PlanetSideGameObject with Deployable): Try[CommonFieldDataWithPlacement] = Failure(new Exception("converter should not be used to generate detailed small deployable data")) } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/SmallTurretConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/SmallTurretConverter.scala index e07b0f11..48892b8f 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/SmallTurretConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/SmallTurretConverter.scala @@ -10,9 +10,9 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class SmallTurretConverter extends ObjectCreateConverter[TurretDeployable]() { - override def ConstructorData(obj : TurretDeployable) : Try[SmallTurretData] = { + override def ConstructorData(obj: TurretDeployable): Try[SmallTurretData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 0) { + if (health > 0) { Success( SmallTurretData( CommonFieldDataWithPlacement( @@ -28,7 +28,7 @@ class SmallTurretConverter extends ObjectCreateConverter[TurretDeployable]() { None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ), @@ -36,8 +36,7 @@ class SmallTurretConverter extends ObjectCreateConverter[TurretDeployable]() { Some(InventoryData(SmallTurretConverter.MakeMountings(obj))) ) ) - } - else { + } else { Success( SmallTurretData( CommonFieldDataWithPlacement( @@ -60,17 +59,19 @@ class SmallTurretConverter extends ObjectCreateConverter[TurretDeployable]() { } } - override def DetailedConstructorData(obj : TurretDeployable) : Try[SmallTurretData] = + override def DetailedConstructorData(obj: TurretDeployable): Try[SmallTurretData] = Failure(new Exception("converter should not be used to generate detailed SmallTurretData")) } object SmallTurretConverter { - private def MakeMountings(obj : WeaponTurret) : List[InventoryItemData.InventoryItem] = { - obj.Weapons.map({ - case((index, slot)) => - val equip : Equipment = slot.Equipment.get - val equipDef = equip.Definition - InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) - }).toList + private def MakeMountings(obj: WeaponTurret): List[InventoryItemData.InventoryItem] = { + obj.Weapons + .map({ + case ((index, slot)) => + val equip: Equipment = slot.Equipment.get + val equipDef = equip.Definition + InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) + }) + .toList } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/SpawnTubeConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/SpawnTubeConverter.scala index 25957ae3..7890ea5d 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/SpawnTubeConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/SpawnTubeConverter.scala @@ -7,5 +7,5 @@ import net.psforever.packet.game.objectcreate.CommonFieldData import scala.util.{Success, Try} class SpawnTubeConverter extends ObjectCreateConverter[SpawnTube]() { - override def ConstructorData(obj : SpawnTube) : Try[CommonFieldData] = { Success(CommonFieldData(obj.Faction)(false)) } + override def ConstructorData(obj: SpawnTube): Try[CommonFieldData] = { Success(CommonFieldData(obj.Faction)(false)) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/StatConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/StatConverter.scala index aa204fd6..43e43d2a 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/StatConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/StatConverter.scala @@ -1,6 +1,7 @@ package net.psforever.objects.definition.converter object StatConverter { + /** * Takes a measure of a value against the maximum possible value and * transforms it to a scaled number that can be written within a specific domain.
@@ -12,9 +13,9 @@ object StatConverter { * the representable minimum value is allowed to plateau at 3. * Any result less than 3 creates the same situation as if the result were 0. */ - def Health(health : Int, maxHealth : Int, min : Int = 3, max : Int = 255) : Int = - if(health < 1) 0 - else if(health <= min || min >= max) min - else if(health >= maxHealth) max + def Health(health: Int, maxHealth: Int, min: Int = 3, max: Int = 255): Int = + if (health < 1) 0 + else if (health <= min || min >= max) min + else if (health >= maxHealth) max else math.floor(max * health / maxHealth).toInt } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/TRAPConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/TRAPConverter.scala index a5e09253..1e85bb94 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/TRAPConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/TRAPConverter.scala @@ -8,9 +8,9 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class TRAPConverter extends ObjectCreateConverter[TrapDeployable]() { - override def ConstructorData(obj : TrapDeployable) : Try[TRAPData] = { + override def ConstructorData(obj: TrapDeployable): Try[TRAPData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 0) { + if (health > 0) { Success( TRAPData( CommonFieldDataWithPlacement( @@ -26,15 +26,14 @@ class TRAPConverter extends ObjectCreateConverter[TrapDeployable]() { None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ) ), health ) ) - } - else { + } else { Success( TRAPData( CommonFieldDataWithPlacement( @@ -57,6 +56,6 @@ class TRAPConverter extends ObjectCreateConverter[TrapDeployable]() { } } - override def DetailedConstructorData(obj : TrapDeployable) : Try[TRAPData] = + override def DetailedConstructorData(obj: TrapDeployable): Try[TRAPData] = Failure(new Exception("converter should not be used to generate detailed TRAPData")) } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/TelepadConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/TelepadConverter.scala index c5c6311c..4801f5a5 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/TelepadConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/TelepadConverter.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class TelepadConverter extends ObjectCreateConverter[Telepad]() { - override def ConstructorData(obj : Telepad) : Try[HandheldData] = { + override def ConstructorData(obj: Telepad): Try[HandheldData] = { obj.Router match { case Some(router) => Success( @@ -31,7 +31,7 @@ class TelepadConverter extends ObjectCreateConverter[Telepad]() { } } - override def DetailedConstructorData(obj : Telepad) : Try[DetailedConstructionToolData] = { + override def DetailedConstructorData(obj: Telepad): Try[DetailedConstructionToolData] = { obj.Router match { case Some(router) => Success( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/TelepadDeployableConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/TelepadDeployableConverter.scala index d2c1de01..65fd33ba 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/TelepadDeployableConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/TelepadDeployableConverter.scala @@ -8,13 +8,13 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Failure, Success, Try} class TelepadDeployableConverter extends ObjectCreateConverter[TelepadDeployable]() { - override def ConstructorData(obj : TelepadDeployable) : Try[DroppedItemData[TelepadDeployableData]] = { + override def ConstructorData(obj: TelepadDeployable): Try[DroppedItemData[TelepadDeployableData]] = { obj.Router match { case Some(PlanetSideGUID(0)) => Failure(new IllegalStateException("TelepadDeployableConverter: knowledge of associated Router is null")) case Some(router) => - if(obj.Health > 0) { + if (obj.Health > 0) { Success( DroppedItemData( PlacementData(obj.Position, obj.Orientation), @@ -35,8 +35,7 @@ class TelepadDeployableConverter extends ObjectCreateConverter[TelepadDeployable ) ) ) - } - else { + } else { Success( DroppedItemData( PlacementData(obj.Position, obj.Orientation), @@ -60,7 +59,9 @@ class TelepadDeployableConverter extends ObjectCreateConverter[TelepadDeployable } case None => - Failure(new IllegalStateException("TelepadDeployableConverter: telepad needs to know id of its associated Router")) + Failure( + new IllegalStateException("TelepadDeployableConverter: telepad needs to know id of its associated Router") + ) } } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/TerminalConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/TerminalConverter.scala index 888c2e30..022f9855 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/TerminalConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/TerminalConverter.scala @@ -7,5 +7,5 @@ import net.psforever.packet.game.objectcreate.CommonFieldData import scala.util.{Success, Try} class TerminalConverter extends ObjectCreateConverter[Terminal]() { - override def ConstructorData(obj : Terminal) : Try[CommonFieldData] = { Success(CommonFieldData(obj.Faction)(false)) } + override def ConstructorData(obj: Terminal): Try[CommonFieldData] = { Success(CommonFieldData(obj.Faction)(false)) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/ToolConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/ToolConverter.scala index de604b88..6ebb3ee6 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/ToolConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/ToolConverter.scala @@ -8,11 +8,13 @@ import net.psforever.types.PlanetSideGUID import scala.util.{Success, Try} class ToolConverter extends ObjectCreateConverter[Tool]() { - override def ConstructorData(obj : Tool) : Try[WeaponData] = { - val slots : List[InternalSlot] = (0 until obj.MaxAmmoSlot).map(index => { - val box = obj.AmmoSlots(index).Box - InternalSlot(box.Definition.ObjectId, box.GUID, index, box.Definition.Packet.ConstructorData(box).get) - }).toList + override def ConstructorData(obj: Tool): Try[WeaponData] = { + val slots: List[InternalSlot] = (0 until obj.MaxAmmoSlot) + .map(index => { + val box = obj.AmmoSlots(index).Box + InternalSlot(box.Definition.ObjectId, box.GUID, index, box.Definition.Packet.ConstructorData(box).get) + }) + .toList Success( WeaponData( CommonFieldData( @@ -32,11 +34,13 @@ class ToolConverter extends ObjectCreateConverter[Tool]() { ) } - override def DetailedConstructorData(obj : Tool) : Try[DetailedWeaponData] = { - val slots : List[InternalSlot] = (0 until obj.MaxAmmoSlot).map(index => { - val box = obj.AmmoSlots(index).Box - InternalSlot(box.Definition.ObjectId, box.GUID, index, box.Definition.Packet.DetailedConstructorData(box).get) - }).toList + override def DetailedConstructorData(obj: Tool): Try[DetailedWeaponData] = { + val slots: List[InternalSlot] = (0 until obj.MaxAmmoSlot) + .map(index => { + val box = obj.AmmoSlots(index).Box + InternalSlot(box.Definition.ObjectId, box.GUID, index, box.Definition.Packet.DetailedConstructorData(box).get) + }) + .toList Success( DetailedWeaponData( CommonFieldData( diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/UtilityVehicleConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/UtilityVehicleConverter.scala index c39f3965..d3ddd5ea 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/UtilityVehicleConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/UtilityVehicleConverter.scala @@ -5,7 +5,7 @@ import net.psforever.objects.Vehicle import net.psforever.packet.game.objectcreate.{UtilityVehicleData, VehicleFormat} class UtilityVehicleConverter extends VehicleConverter { - override protected def SpecificFormatModifier : VehicleFormat.Value = VehicleFormat.Utility + override protected def SpecificFormatModifier: VehicleFormat.Value = VehicleFormat.Utility - override protected def SpecificFormatData(obj : Vehicle) = Some(UtilityVehicleData(0)) + override protected def SpecificFormatData(obj: Vehicle) = Some(UtilityVehicleData(0)) } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/VariantVehicleConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/VariantVehicleConverter.scala index cfe9d68d..f30cafca 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/VariantVehicleConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/VariantVehicleConverter.scala @@ -5,15 +5,17 @@ import net.psforever.objects.Vehicle import net.psforever.packet.game.objectcreate.{VariantVehicleData, VehicleFormat} class VariantVehicleConverter extends VehicleConverter { - override protected def SpecificFormatModifier : VehicleFormat.Value = VehicleFormat.Variant + override protected def SpecificFormatModifier: VehicleFormat.Value = VehicleFormat.Variant - override protected def SpecificFormatData(obj : Vehicle) = { + override protected def SpecificFormatData(obj: Vehicle) = { /* landed is 0 flying is 7 - */ - Some(VariantVehicleData( - if(obj.Definition.CanFly && obj.Flying) 7 else 0 - )) + */ + Some( + VariantVehicleData( + if (obj.Definition.CanFly && obj.Flying) 7 else 0 + ) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala index 9f9b5c2e..303fd4bf 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/VehicleConverter.scala @@ -9,12 +9,12 @@ import net.psforever.types.{DriveState, PlanetSideGUID} import scala.util.{Failure, Success, Try} class VehicleConverter extends ObjectCreateConverter[Vehicle]() { - override def DetailedConstructorData(obj : Vehicle) : Try[VehicleData] = + override def DetailedConstructorData(obj: Vehicle): Try[VehicleData] = Failure(new Exception("VehicleConverter should not be used to generate detailed VehicleData (nothing should)")) - override def ConstructorData(obj : Vehicle) : Try[VehicleData] = { + override def ConstructorData(obj: Vehicle): Try[VehicleData] = { val health = StatConverter.Health(obj.Health, obj.MaxHealth) - if(health > 0) { //active + if (health > 0) { //active Success( VehicleData( PlacementData(obj.Position, obj.Orientation, obj.Velocity), @@ -29,7 +29,7 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { v5 = None, obj.Owner match { case Some(owner) => owner - case None => PlanetSideGUID(0) + case None => PlanetSideGUID(0) } ), unk3 = false, @@ -44,8 +44,7 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { Some(InventoryData(MakeDriverSeat(obj) ++ MakeUtilities(obj) ++ MakeMountings(obj))) )(SpecificFormatModifier) ) - } - else { //destroyed + } else { //destroyed Success( VehicleData( PlacementData(obj.Position, obj.Orientation), @@ -75,8 +74,8 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { } } - private def MakeDriverSeat(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { - val offset : Long = VehicleData.InitialStreamLengthToSeatEntries(obj.Velocity.nonEmpty, SpecificFormatModifier) + private def MakeDriverSeat(obj: Vehicle): List[InventoryItemData.InventoryItem] = { + val offset: Long = VehicleData.InitialStreamLengthToSeatEntries(obj.Velocity.nonEmpty, SpecificFormatModifier) obj.Seats(0).Occupant match { case Some(player) => List(InventoryItemData(ObjectClass.avatar, player.GUID, 0, SeatConverter.MakeSeat(player, offset))) @@ -84,25 +83,29 @@ class VehicleConverter extends ObjectCreateConverter[Vehicle]() { Nil } } - - private def MakeMountings(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { - obj.Weapons.collect { case (index, slot) if slot.Equipment.nonEmpty => - val equip : Equipment = slot.Equipment.get - val equipDef = equip.Definition - InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) + + private def MakeMountings(obj: Vehicle): List[InventoryItemData.InventoryItem] = { + obj.Weapons.collect { + case (index, slot) if slot.Equipment.nonEmpty => + val equip: Equipment = slot.Equipment.get + val equipDef = equip.Definition + InventoryItemData(equipDef.ObjectId, equip.GUID, index, equipDef.Packet.ConstructorData(equip).get) }.toList } - protected def MakeUtilities(obj : Vehicle) : List[InventoryItemData.InventoryItem] = { - Vehicle.EquipmentUtilities(obj.Utilities).map({ - case(index, utilContainer) => - val util = utilContainer() - val utilDef = util.Definition - InventoryItemData(utilDef.ObjectId, util.GUID, index, utilDef.Packet.ConstructorData(util).get) - }).toList + protected def MakeUtilities(obj: Vehicle): List[InventoryItemData.InventoryItem] = { + Vehicle + .EquipmentUtilities(obj.Utilities) + .map({ + case (index, utilContainer) => + val util = utilContainer() + val utilDef = util.Definition + InventoryItemData(utilDef.ObjectId, util.GUID, index, utilDef.Packet.ConstructorData(util).get) + }) + .toList } - protected def SpecificFormatModifier : VehicleFormat.Value = VehicleFormat.Normal + protected def SpecificFormatModifier: VehicleFormat.Value = VehicleFormat.Normal - protected def SpecificFormatData(obj : Vehicle) : Option[SpecificVehicleData] = None + protected def SpecificFormatData(obj: Vehicle): Option[SpecificVehicleData] = None } diff --git a/common/src/main/scala/net/psforever/objects/entity/GUIDException.scala b/common/src/main/scala/net/psforever/objects/entity/GUIDException.scala index f1842ca4..4db63a5d 100644 --- a/common/src/main/scala/net/psforever/objects/entity/GUIDException.scala +++ b/common/src/main/scala/net/psforever/objects/entity/GUIDException.scala @@ -10,13 +10,13 @@ import net.psforever.types.PlanetSideGUID * @param obj the entity being manipulated when the complaint arose * @param guid the identifier number being manipulated when the ciomplaint arose */ -abstract class GUIDException(message : String, cause : Throwable, obj : IdentifiableEntity, guid : PlanetSideGUID) - extends RuntimeException(message, cause) { - private val entity : IdentifiableEntity = obj - def getEntity : IdentifiableEntity = entity +abstract class GUIDException(message: String, cause: Throwable, obj: IdentifiableEntity, guid: PlanetSideGUID) + extends RuntimeException(message, cause) { + private val entity: IdentifiableEntity = obj + def getEntity: IdentifiableEntity = entity - private val entityGUID : PlanetSideGUID = guid - def getGUID : PlanetSideGUID = entityGUID + private val entityGUID: PlanetSideGUID = guid + def getGUID: PlanetSideGUID = entityGUID } /** @@ -28,13 +28,12 @@ abstract class GUIDException(message : String, cause : Throwable, obj : Identifi * @param obj the entity being manipulated when the complaint arose * @param cause the cause of this error */ -class NoGUIDException(message : String, - obj : IdentifiableEntity = None.orNull, - cause : Throwable = None.orNull - ) extends GUIDException(message, cause, obj, null) +class NoGUIDException(message: String, obj: IdentifiableEntity = None.orNull, cause: Throwable = None.orNull) + extends GUIDException(message, cause, obj, null) object NoGUIDException { - def unapply(e : NoGUIDException): Option[(String, IdentifiableEntity, Throwable)] = Some((e.getMessage, e.getEntity, e.getCause)) + def unapply(e: NoGUIDException): Option[(String, IdentifiableEntity, Throwable)] = + Some((e.getMessage, e.getEntity, e.getCause)) } /** @@ -44,12 +43,14 @@ object NoGUIDException { * @param guid the identifier number being manipulated when the ciomplaint arose * @param cause the cause of this error */ -class AssigningGUIDException(message : String, - obj : IdentifiableEntity, - guid : PlanetSideGUID, - cause : Throwable = None.orNull - ) extends GUIDException(message, cause, obj, guid) +class AssigningGUIDException( + message: String, + obj: IdentifiableEntity, + guid: PlanetSideGUID, + cause: Throwable = None.orNull +) extends GUIDException(message, cause, obj, guid) object AssigningGUIDException { - def unapply(e : AssigningGUIDException): Option[(String, Throwable, IdentifiableEntity, PlanetSideGUID)] = Some((e.getMessage, e.getCause, e.getEntity, e.getGUID)) + def unapply(e: AssigningGUIDException): Option[(String, Throwable, IdentifiableEntity, PlanetSideGUID)] = + Some((e.getMessage, e.getCause, e.getEntity, e.getGUID)) } diff --git a/common/src/main/scala/net/psforever/objects/entity/Identifiable.scala b/common/src/main/scala/net/psforever/objects/entity/Identifiable.scala index 476bdf2c..ec741637 100644 --- a/common/src/main/scala/net/psforever/objects/entity/Identifiable.scala +++ b/common/src/main/scala/net/psforever/objects/entity/Identifiable.scala @@ -7,7 +7,7 @@ import net.psforever.types.PlanetSideGUID * Identifiable represents anything that has its own globally unique identifier (GUID). */ trait Identifiable { - def GUID : PlanetSideGUID + def GUID: PlanetSideGUID - def GUID_=(guid : PlanetSideGUID) : PlanetSideGUID + def GUID_=(guid: PlanetSideGUID): PlanetSideGUID } diff --git a/common/src/main/scala/net/psforever/objects/entity/IdentifiableEntity.scala b/common/src/main/scala/net/psforever/objects/entity/IdentifiableEntity.scala index 0c9669b3..f17555fe 100644 --- a/common/src/main/scala/net/psforever/objects/entity/IdentifiableEntity.scala +++ b/common/src/main/scala/net/psforever/objects/entity/IdentifiableEntity.scala @@ -28,16 +28,20 @@ import net.psforever.types.{PlanetSideGUID, StalePlanetSideGUID} * @throws `NoGUIDException` if a GUID has not yet been assigned */ abstract class IdentifiableEntity extends Identifiable { - /** storage for the GUID information; starts as a `StalePlanetSideGUID` */ - private var current : PlanetSideGUID = StalePlanetSideGUID(0) - /** indicate the validity of the current GUID */ - private var guidValid : Boolean = false - /** the current accessor; can be re-assigned */ - private var guidAccessor : IdentifiableEntity=>PlanetSideGUID = IdentifiableEntity.getWhenNoGUID - /** the current mutator; can be re-assigned */ - private var guidMutator : (IdentifiableEntity, PlanetSideGUID)=>PlanetSideGUID = IdentifiableEntity.setWhenNoGUID - def GUID : PlanetSideGUID = guidAccessor(this) + /** storage for the GUID information; starts as a `StalePlanetSideGUID` */ + private var current: PlanetSideGUID = StalePlanetSideGUID(0) + + /** indicate the validity of the current GUID */ + private var guidValid: Boolean = false + + /** the current accessor; can be re-assigned */ + private var guidAccessor: IdentifiableEntity => PlanetSideGUID = IdentifiableEntity.getWhenNoGUID + + /** the current mutator; can be re-assigned */ + private var guidMutator: (IdentifiableEntity, PlanetSideGUID) => PlanetSideGUID = IdentifiableEntity.setWhenNoGUID + + def GUID: PlanetSideGUID = guidAccessor(this) /** * Always intercept `StalePlanetSideGUID` references when attempting to mutate the GUID value. @@ -45,17 +49,17 @@ abstract class IdentifiableEntity extends Identifiable { * @throws `AssigningGUIDException` always * @return never returns */ - def GUID_=(guid : StalePlanetSideGUID) : PlanetSideGUID = { + def GUID_=(guid: StalePlanetSideGUID): PlanetSideGUID = { throw new AssigningGUIDException(s"attempting to assign a stale global identifier to an entity", this, guid) } - def GUID_=(guid : PlanetSideGUID) : PlanetSideGUID = guidMutator(this, guid) + def GUID_=(guid: PlanetSideGUID): PlanetSideGUID = guidMutator(this, guid) /** * Flag when the object has no GUID (initial condition) or is considered stale. * @return whether the value of the GUID is a valid representation for this object */ - def HasGUID : Boolean = guidValid + def HasGUID: Boolean = guidValid /** * Indicate that the current GUID is no longer a valid representation of the object. @@ -63,7 +67,7 @@ abstract class IdentifiableEntity extends Identifiable { * Doing this restores the object to its default mutation option ("the ability to set a new valid GUID"). * The current GUID will still be accessed as if it were valid, but it will be wrapped in the new stale object. */ - def Invalidate() : Unit = { + def Invalidate(): Unit = { guidValid = false current = StalePlanetSideGUID(current.guid) guidMutator = IdentifiableEntity.setWhenNoGUID @@ -71,13 +75,14 @@ abstract class IdentifiableEntity extends Identifiable { } object IdentifiableEntity { + /** * Raise an `Exception` because the entity is never considered having a GUID to give. * @param o the any entity with a GUID * @throws `NoGUIDException` always * @return never returns */ - def getWhenNoGUID(o : IdentifiableEntity) : PlanetSideGUID = { + def getWhenNoGUID(o: IdentifiableEntity): PlanetSideGUID = { throw new NoGUIDException(s"did not initialize this object $o with a valid global identifier") } @@ -90,7 +95,7 @@ object IdentifiableEntity { * @param guid the valid GUID to assign * @return the GUID */ - def setWhenNoGUID(o : IdentifiableEntity, guid : PlanetSideGUID) : PlanetSideGUID = { + def setWhenNoGUID(o: IdentifiableEntity, guid: PlanetSideGUID): PlanetSideGUID = { o.current = guid o.guidValid = true o.guidAccessor = getWhenValidGUID @@ -103,7 +108,7 @@ object IdentifiableEntity { * @param o the entity * @return the entity's GUID */ - def getWhenValidGUID(o : IdentifiableEntity) : PlanetSideGUID = o.current + def getWhenValidGUID(o: IdentifiableEntity): PlanetSideGUID = o.current /** * The entity is in a condition where it can not be assigned the new valid GUID. @@ -114,7 +119,7 @@ object IdentifiableEntity { * @throws `AssigningGUIDException` always * @return never returns */ - def setWhenValidGUID(o : IdentifiableEntity, guid : PlanetSideGUID) : PlanetSideGUID = { + def setWhenValidGUID(o: IdentifiableEntity, guid: PlanetSideGUID): PlanetSideGUID = { throw new AssigningGUIDException("attempting to set GUID to already valid object; try invalidating it", o, guid) } } diff --git a/common/src/main/scala/net/psforever/objects/entity/SimpleWorldEntity.scala b/common/src/main/scala/net/psforever/objects/entity/SimpleWorldEntity.scala index de2c96c0..2dc4b62e 100644 --- a/common/src/main/scala/net/psforever/objects/entity/SimpleWorldEntity.scala +++ b/common/src/main/scala/net/psforever/objects/entity/SimpleWorldEntity.scala @@ -4,47 +4,47 @@ package net.psforever.objects.entity import net.psforever.types.Vector3 class SimpleWorldEntity extends WorldEntity { - private var coords : Vector3 = Vector3.Zero - private var orient : Vector3 = Vector3.Zero - private var vel : Option[Vector3] = None + private var coords: Vector3 = Vector3.Zero + private var orient: Vector3 = Vector3.Zero + private var vel: Option[Vector3] = None - def Position : Vector3 = coords + def Position: Vector3 = coords - def Position_=(vec : Vector3) : Vector3 = { + def Position_=(vec: Vector3): Vector3 = { coords = SimpleWorldEntity.validatePositionEntry(vec) Position } - def Orientation : Vector3 = orient + def Orientation: Vector3 = orient - def Orientation_=(vec : Vector3) : Vector3 = { + def Orientation_=(vec: Vector3): Vector3 = { orient = SimpleWorldEntity.validateOrientationEntry(vec) Orientation } - def Velocity : Option[Vector3] = vel + def Velocity: Option[Vector3] = vel - def Velocity_=(vec : Option[Vector3]) : Option[Vector3] = { + def Velocity_=(vec: Option[Vector3]): Option[Vector3] = { vel = vec Velocity } - override def toString : String = WorldEntity.toString(this) + override def toString: String = WorldEntity.toString(this) } object SimpleWorldEntity { - def validatePositionEntry(vec : Vector3) : Vector3 = vec + def validatePositionEntry(vec: Vector3): Vector3 = vec - def validateOrientationEntry(vec : Vector3) : Vector3 = { + def validateOrientationEntry(vec: Vector3): Vector3 = { val x = clampAngle(vec.x) val y = clampAngle(vec.y) val z = clampAngle(vec.z) Vector3(x, y, z) } - def clampAngle(ang : Float) : Float = { + def clampAngle(ang: Float): Float = { var ang2 = ang % 360f - if(ang2 < 0f) { + if (ang2 < 0f) { ang2 += 360f } ang2 diff --git a/common/src/main/scala/net/psforever/objects/entity/WorldEntity.scala b/common/src/main/scala/net/psforever/objects/entity/WorldEntity.scala index 3e30e469..15b9a875 100644 --- a/common/src/main/scala/net/psforever/objects/entity/WorldEntity.scala +++ b/common/src/main/scala/net/psforever/objects/entity/WorldEntity.scala @@ -4,51 +4,52 @@ package net.psforever.objects.entity import net.psforever.types.Vector3 trait WorldEntity { - def Position : Vector3 + def Position: Vector3 - def Position_=(vec : Vector3) : Vector3 + def Position_=(vec: Vector3): Vector3 - def Orientation : Vector3 + def Orientation: Vector3 - def Orientation_=(vec : Vector3) : Vector3 + def Orientation_=(vec: Vector3): Vector3 - def Velocity : Option[Vector3] + def Velocity: Option[Vector3] - def Velocity_=(vec : Option[Vector3]) : Option[Vector3] + def Velocity_=(vec: Option[Vector3]): Option[Vector3] - def Velocity_=(vec : Vector3) : Option[Vector3] = Velocity = Some(vec) + def Velocity_=(vec: Vector3): Option[Vector3] = Velocity = Some(vec) /** * A velocity of non-zero is the same as moving. * @return `true`, if we are moving; `false`, otherwise */ - def isMoving : Boolean = WorldEntity.isMoving(Velocity) + def isMoving: Boolean = WorldEntity.isMoving(Velocity) /** * This object is not considered moving unless it is moving at least as fast as a certain velocity. * @param test the velocity to test against * @return `true`, if we are moving; `false`, otherwise */ - def isMoving(test : Vector3) : Boolean = WorldEntity.isMoving(Velocity, test) + def isMoving(test: Vector3): Boolean = WorldEntity.isMoving(Velocity, test) /** * This object is not considered moving unless it is moving at least as fast as a certain velocity. * @param test the (squared) velocity to test against * @return `true`, if we are moving; `false`, otherwise */ - def isMoving(test : Float) : Boolean = WorldEntity.isMoving(Velocity, test) + def isMoving(test: Float): Boolean = WorldEntity.isMoving(Velocity, test) } object WorldEntity { + /** * A velocity of non-zero is the same as moving. * @return `true`, if we are moving; `false`, otherwise */ - def isMoving(velocity : Option[Vector3]) : Boolean = { + def isMoving(velocity: Option[Vector3]): Boolean = { velocity match { - case None => false + case None => false case Some(Vector3.Zero) => false - case Some(_) => true + case Some(_) => true } } @@ -58,7 +59,8 @@ object WorldEntity { * @param test the (squared) velocity to test against * @return `true`, if we are moving; `false`, otherwise */ - def isMoving(velocity : Option[Vector3], test : Vector3) : Boolean = WorldEntity.isMoving(velocity, Vector3.MagnitudeSquared(test)) + def isMoving(velocity: Option[Vector3], test: Vector3): Boolean = + WorldEntity.isMoving(velocity, Vector3.MagnitudeSquared(test)) /** * This object is not considered moving unless it is moving at least as fast as a certain velocity. @@ -66,15 +68,15 @@ object WorldEntity { * @param test the (squared) velocity to test against * @return `true`, if we are moving; `false`, otherwise */ - def isMoving(velocity : Option[Vector3], test : Float) : Boolean = { + def isMoving(velocity: Option[Vector3], test: Float): Boolean = { velocity match { - case None => false + case None => false case Some(Vector3.Zero) => false - case Some(v) => Vector3.MagnitudeSquared(v) >= test + case Some(v) => Vector3.MagnitudeSquared(v) >= test } } - def toString(obj : WorldEntity) : String = { + def toString(obj: WorldEntity): String = { s"pos=${obj.Position}, ori=${obj.Orientation}" } } diff --git a/common/src/main/scala/net/psforever/objects/equipment/Ammo.scala b/common/src/main/scala/net/psforever/objects/equipment/Ammo.scala index 55bf072a..3695bad5 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/Ammo.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/Ammo.scala @@ -5,89 +5,89 @@ package net.psforever.objects.equipment * An `Enumeration` of all the ammunition types in the game, paired with their object id as the `Value`. */ object Ammo extends Enumeration { - final val bullet_105mm = Value(0) - final val bullet_12mm = Value(3) - final val bullet_150mm = Value(6) - final val bullet_15mm = Value(9) - final val bullet_20mm = Value(16) - final val bullet_25mm = Value(19) - final val bullet_35mm = Value(21) - final val bullet_75mm = Value(25) - final val bullet_9mm = Value(28) - final val bullet_9mm_AP = Value(29) - final val ancient_ammo_combo = Value(50) - final val ancient_ammo_vehicle = Value(51) - final val anniversary_ammo = Value(54) + final val bullet_105mm = Value(0) + final val bullet_12mm = Value(3) + final val bullet_150mm = Value(6) + final val bullet_15mm = Value(9) + final val bullet_20mm = Value(16) + final val bullet_25mm = Value(19) + final val bullet_35mm = Value(21) + final val bullet_75mm = Value(25) + final val bullet_9mm = Value(28) + final val bullet_9mm_AP = Value(29) + final val ancient_ammo_combo = Value(50) + final val ancient_ammo_vehicle = Value(51) + final val anniversary_ammo = Value(54) final val aphelion_immolation_cannon_ammo = Value(86) - final val aphelion_laser_ammo = Value(89) - final val aphelion_plasma_rocket_ammo = Value(97) - final val aphelion_ppa_ammo = Value(101) - final val aphelion_starfire_ammo = Value(106) - final val armor_canister = Value(111) - final val armor_siphon_ammo = Value(112) - final val bolt = Value(145) - final val burster_ammo = Value(154) - final val colossus_100mm_cannon_ammo = Value(180) - final val colossus_burster_ammo = Value(186) - final val colossus_chaingun_ammo = Value(191) - final val colossus_cluster_bomb_ammo = Value(195) - final val colossus_tank_cannon_ammo = Value(205) - final val comet_ammo = Value(209) - final val dualcycler_ammo = Value(265) - final val energy_cell = Value(272) - final val energy_gun_ammo = Value(275) - final val falcon_ammo = Value(285) - final val firebird_missile = Value(287) - final val flamethrower_ammo = Value(300) - final val flux_cannon_thresher_battery = Value(307) - final val fluxpod_ammo = Value(310) - final val frag_cartridge = Value(327) - final val frag_grenade_ammo = Value(331) - final val gauss_cannon_ammo = Value(347) - final val grenade = Value(370) - final val health_canister = Value(389) - final val heavy_grenade_mortar = Value(391) - final val heavy_rail_beam_battery = Value(393) - final val hellfire_ammo = Value(399) - final val hunter_seeker_missile = Value(403) - final val jammer_cartridge = Value(413) - final val jammer_grenade_ammo = Value(417) - final val lancer_cartridge = Value(426) - final val liberator_bomb = Value(434) - final val maelstrom_ammo = Value(463) - final val melee_ammo = Value(540) - final val mine = Value(550) - final val mine_sweeper_ammo = Value(553) - final val ntu_siphon_ammo = Value(595) - final val oicw_ammo = Value(600) - final val pellet_gun_ammo = Value(630) + final val aphelion_laser_ammo = Value(89) + final val aphelion_plasma_rocket_ammo = Value(97) + final val aphelion_ppa_ammo = Value(101) + final val aphelion_starfire_ammo = Value(106) + final val armor_canister = Value(111) + final val armor_siphon_ammo = Value(112) + final val bolt = Value(145) + final val burster_ammo = Value(154) + final val colossus_100mm_cannon_ammo = Value(180) + final val colossus_burster_ammo = Value(186) + final val colossus_chaingun_ammo = Value(191) + final val colossus_cluster_bomb_ammo = Value(195) + final val colossus_tank_cannon_ammo = Value(205) + final val comet_ammo = Value(209) + final val dualcycler_ammo = Value(265) + final val energy_cell = Value(272) + final val energy_gun_ammo = Value(275) + final val falcon_ammo = Value(285) + final val firebird_missile = Value(287) + final val flamethrower_ammo = Value(300) + final val flux_cannon_thresher_battery = Value(307) + final val fluxpod_ammo = Value(310) + final val frag_cartridge = Value(327) + final val frag_grenade_ammo = Value(331) + final val gauss_cannon_ammo = Value(347) + final val grenade = Value(370) + final val health_canister = Value(389) + final val heavy_grenade_mortar = Value(391) + final val heavy_rail_beam_battery = Value(393) + final val hellfire_ammo = Value(399) + final val hunter_seeker_missile = Value(403) + final val jammer_cartridge = Value(413) + final val jammer_grenade_ammo = Value(417) + final val lancer_cartridge = Value(426) + final val liberator_bomb = Value(434) + final val maelstrom_ammo = Value(463) + final val melee_ammo = Value(540) + final val mine = Value(550) + final val mine_sweeper_ammo = Value(553) + final val ntu_siphon_ammo = Value(595) + final val oicw_ammo = Value(600) + final val pellet_gun_ammo = Value(630) final val peregrine_dual_machine_gun_ammo = Value(637) - final val peregrine_mechhammer_ammo = Value(645) - final val peregrine_particle_cannon_ammo = Value(653) - final val peregrine_rocket_pod_ammo = Value(656) - final val peregrine_sparrow_ammo = Value(659) - final val phalanx_ammo = Value(664) - final val phoenix_missile = Value(674) - final val plasma_cartridge = Value(677) - final val plasma_grenade_ammo = Value(681) - final val pounder_ammo = Value(693) - final val pulse_battery = Value(704) - final val quasar_ammo = Value(712) - final val reaver_rocket = Value(722) - final val rocket = Value(734) - final val scattercannon_ammo = Value(745) - final val shotgun_shell = Value(755) - final val shotgun_shell_AP = Value(756) - final val six_shooter_ammo = Value(762) - final val skyguard_flak_cannon_ammo = Value(786) - final val sparrow_ammo = Value(791) - final val spitfire_aa_ammo = Value(820) - final val spitfire_ammo = Value(823) - final val starfire_ammo = Value(830) - final val striker_missile_ammo = Value(839) - final val trek_ammo = Value(877) - final val upgrade_canister = Value(922) - final val wasp_gun_ammo = Value(998) - final val wasp_rocket_ammo = Value(1000) - final val winchester_ammo = Value(1004) + final val peregrine_mechhammer_ammo = Value(645) + final val peregrine_particle_cannon_ammo = Value(653) + final val peregrine_rocket_pod_ammo = Value(656) + final val peregrine_sparrow_ammo = Value(659) + final val phalanx_ammo = Value(664) + final val phoenix_missile = Value(674) + final val plasma_cartridge = Value(677) + final val plasma_grenade_ammo = Value(681) + final val pounder_ammo = Value(693) + final val pulse_battery = Value(704) + final val quasar_ammo = Value(712) + final val reaver_rocket = Value(722) + final val rocket = Value(734) + final val scattercannon_ammo = Value(745) + final val shotgun_shell = Value(755) + final val shotgun_shell_AP = Value(756) + final val six_shooter_ammo = Value(762) + final val skyguard_flak_cannon_ammo = Value(786) + final val sparrow_ammo = Value(791) + final val spitfire_aa_ammo = Value(820) + final val spitfire_ammo = Value(823) + final val starfire_ammo = Value(830) + final val striker_missile_ammo = Value(839) + final val trek_ammo = Value(877) + final val upgrade_canister = Value(922) + final val wasp_gun_ammo = Value(998) + final val wasp_rocket_ammo = Value(1000) + final val winchester_ammo = Value(1004) } diff --git a/common/src/main/scala/net/psforever/objects/equipment/CItem.scala b/common/src/main/scala/net/psforever/objects/equipment/CItem.scala index eda138d3..934b363f 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/CItem.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/CItem.scala @@ -5,7 +5,7 @@ package net.psforever.objects.equipment * An `Enumeration` of all the construction tool objects in the game, paired with their object id as the `Value`. */ object CItem extends Enumeration { - final val ace = Value(32) - final val advanced_ace = Value(39) //fdu + final val ace = Value(32) + final val advanced_ace = Value(39) //fdu final val router_telepad = Value(743) } diff --git a/common/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala b/common/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala index 8871250a..a63269f2 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/EffectTarget.scala @@ -5,99 +5,103 @@ import net.psforever.objects._ import net.psforever.objects.ce.DeployableCategory import net.psforever.objects.serverobject.turret.FacilityTurret -final case class TargetValidation(category : EffectTarget.Category.Value, test : EffectTarget.Validation.Value) +final case class TargetValidation(category: EffectTarget.Category.Value, test: EffectTarget.Validation.Value) object EffectTarget { + /** * A classification of the target of interactions. * Arbitrary, but useful. */ object Category extends Enumeration { - val - Aircraft, - Deployable, - Equipment, - Player, - Turret, - Vehicle - = Value + val Aircraft, Deployable, Equipment, Player, Turret, Vehicle = Value } object Validation { type Value = PlanetSideGameObject => Boolean - def Invalid(target : PlanetSideGameObject) : Boolean = false + def Invalid(target: PlanetSideGameObject): Boolean = false - def Medical(target : PlanetSideGameObject) : Boolean = target match { - case p : Player => - p.Health > 0 && (p.Health < p.MaxHealth || p.Armor < p.MaxArmor) - case _ => - false - } + def Medical(target: PlanetSideGameObject): Boolean = + target match { + case p: Player => + p.Health > 0 && (p.Health < p.MaxHealth || p.Armor < p.MaxArmor) + case _ => + false + } - def HealthCrystal(target : PlanetSideGameObject) : Boolean = target match { - case p : Player => - p.Health > 0 && p.Health < p.MaxHealth - case _ => - false - } + def HealthCrystal(target: PlanetSideGameObject): Boolean = + target match { + case p: Player => + p.Health > 0 && p.Health < p.MaxHealth + case _ => + false + } - def RepairSilo(target : PlanetSideGameObject) : Boolean = target match { - case v : Vehicle => - !GlobalDefinitions.isFlightVehicle(v.Definition) && v.Health > 0 && v.Health < v.MaxHealth - case _ => - false - } + def RepairSilo(target: PlanetSideGameObject): Boolean = + target match { + case v: Vehicle => + !GlobalDefinitions.isFlightVehicle(v.Definition) && v.Health > 0 && v.Health < v.MaxHealth + case _ => + false + } - def PadLanding(target : PlanetSideGameObject) : Boolean = target match { - case v : Vehicle => - GlobalDefinitions.isFlightVehicle(v.Definition) && v.Health > 0 && v.Health < v.MaxHealth - case _ => - false - } + def PadLanding(target: PlanetSideGameObject): Boolean = + target match { + case v: Vehicle => + GlobalDefinitions.isFlightVehicle(v.Definition) && v.Health > 0 && v.Health < v.MaxHealth + case _ => + false + } - def Player(target : PlanetSideGameObject) : Boolean = target match { - case p : Player => - p.isAlive - case _ => - false - } + def Player(target: PlanetSideGameObject): Boolean = + target match { + case p: Player => + p.isAlive + case _ => + false + } - def MotionSensor(target : PlanetSideGameObject) : Boolean = target match { - case s : SensorDeployable => - s.Health > 0 - case _ => - false - } + def MotionSensor(target: PlanetSideGameObject): Boolean = + target match { + case s: SensorDeployable => + s.Health > 0 + case _ => + false + } - def Spitfire(target : PlanetSideGameObject) : Boolean = target match { - case t : TurretDeployable => - t.Definition.DeployCategory == DeployableCategory.SmallTurrets && t.Health > 0 - case _ => - false - } + def Spitfire(target: PlanetSideGameObject): Boolean = + target match { + case t: TurretDeployable => + t.Definition.DeployCategory == DeployableCategory.SmallTurrets && t.Health > 0 + case _ => + false + } - def Turret(target : PlanetSideGameObject) : Boolean = target match { - case t : TurretDeployable => - t.Definition.DeployCategory == DeployableCategory.FieldTurrets && t.Health > 0 - case t : FacilityTurret => - t.Health > 0 - case _ => - false - } + def Turret(target: PlanetSideGameObject): Boolean = + target match { + case t: TurretDeployable => + t.Definition.DeployCategory == DeployableCategory.FieldTurrets && t.Health > 0 + case t: FacilityTurret => + t.Health > 0 + case _ => + false + } - def AMS(target : PlanetSideGameObject) : Boolean = target match { - case v : Vehicle => - v.Health > 0 && v.Definition == GlobalDefinitions.ams - case _ => - false - } + def AMS(target: PlanetSideGameObject): Boolean = + target match { + case v: Vehicle => + v.Health > 0 && v.Definition == GlobalDefinitions.ams + case _ => + false + } - def VehicleNotAMS(target : PlanetSideGameObject) : Boolean = target match { - case v : Vehicle => - v.Health > 0 && v.Definition != GlobalDefinitions.ams - case _ => - false - } + def VehicleNotAMS(target: PlanetSideGameObject): Boolean = + target match { + case v: Vehicle => + v.Health > 0 && v.Definition != GlobalDefinitions.ams + case _ => + false + } } } diff --git a/common/src/main/scala/net/psforever/objects/equipment/Equipment.scala b/common/src/main/scala/net/psforever/objects/equipment/Equipment.scala index 13ccaa80..5168f636 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/Equipment.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/Equipment.scala @@ -14,30 +14,29 @@ import net.psforever.types.PlanetSideEmpire * and, special carried (like a lattice logic unit); * and, dropped on the ground in the game world and render where it was deposited. */ -abstract class Equipment extends PlanetSideGameObject - with FactionAffinity { - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL +abstract class Equipment extends PlanetSideGameObject with FactionAffinity { + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - def Faction : PlanetSideEmpire.Value = faction + def Faction: PlanetSideEmpire.Value = faction - override def Faction_=(fact : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { + override def Faction_=(fact: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { faction = fact Faction } - def Size : EquipmentSize.Value = Definition.Size + def Size: EquipmentSize.Value = Definition.Size - def Tile : InventoryTile = Definition.Tile + def Tile: InventoryTile = Definition.Tile - def Definition : EquipmentDefinition + def Definition: EquipmentDefinition - override def toString : String = { + override def toString: String = { Equipment.toString(this) } } object Equipment { - def toString(obj : Equipment) : String = { + def toString(obj: Equipment): String = { obj.Definition.Name } } diff --git a/common/src/main/scala/net/psforever/objects/equipment/EquipmentSize.scala b/common/src/main/scala/net/psforever/objects/equipment/EquipmentSize.scala index fca75943..0bf64cf7 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/EquipmentSize.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/EquipmentSize.scala @@ -6,17 +6,15 @@ package net.psforever.objects.equipment * Check the comments for originating use. */ object EquipmentSize extends Enumeration { - val - Blocked, - Melee, //special - Pistol, //2x2 and 3x3 - Rifle, //6x3 and 9x3 - Max, //max weapon only - VehicleWeapon, //vehicle-mounted weapons - BaseTurretWeapon, //common phalanx cannons, and cavern turrets - BFRArmWeapon, //duel arm weapons for bfr - BFRGunnerWeapon, //gunner seat for bfr - Inventory //reserved + val Blocked, Melee, //special + Pistol, //2x2 and 3x3 + Rifle, //6x3 and 9x3 + Max, //max weapon only + VehicleWeapon, //vehicle-mounted weapons + BaseTurretWeapon, //common phalanx cannons, and cavern turrets + BFRArmWeapon, //duel arm weapons for bfr + BFRGunnerWeapon, //gunner seat for bfr + Inventory //reserved = Value /** @@ -30,14 +28,12 @@ object EquipmentSize extends Enumeration { * @param type2 the second size * @return `true`, if they are equal; `false`, otherwise */ - def isEqual(type1 : EquipmentSize.Value, type2 : EquipmentSize.Value) : Boolean = { - if(type1 == Blocked || type2 == Blocked) { + def isEqual(type1: EquipmentSize.Value, type2: EquipmentSize.Value): Boolean = { + if (type1 == Blocked || type2 == Blocked) { false - } - else if(type1 == Inventory || type2 == Inventory) { + } else if (type1 == Inventory || type2 == Inventory) { true - } - else { + } else { type1 == type2 } } diff --git a/common/src/main/scala/net/psforever/objects/equipment/EquipmentSlot.scala b/common/src/main/scala/net/psforever/objects/equipment/EquipmentSlot.scala index 57b678f3..cfa0579e 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/EquipmentSlot.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/EquipmentSlot.scala @@ -6,13 +6,13 @@ package net.psforever.objects.equipment * Unlike inventory space, anything placed in "slot" space is expected to be visible to the game world in some fashion. */ class EquipmentSlot { - private var size : EquipmentSize.Value = EquipmentSize.Blocked - private var tool : Option[Equipment] = None + private var size: EquipmentSize.Value = EquipmentSize.Blocked + private var tool: Option[Equipment] = None - def Size : EquipmentSize.Value = size + def Size: EquipmentSize.Value = size - def Size_=(assignSize : EquipmentSize.Value) : EquipmentSize.Value = { - if(tool.isEmpty) { + def Size_=(assignSize: EquipmentSize.Value): EquipmentSize.Value = { + if (tool.isEmpty) { size = assignSize } Size @@ -22,14 +22,14 @@ class EquipmentSlot { * Determine what `Equipment` is stowed in the given position. * @return the `Equipment` in this slot */ - def Equipment : Option[Equipment] = tool + def Equipment: Option[Equipment] = tool /** * Attempt to stow an item at the given position. * @param assignEquipment the change in `Equipment` for this slot * @return the `Equipment` in this slot */ - def Equipment_=(assignEquipment : Equipment) : Option[Equipment] = { + def Equipment_=(assignEquipment: Equipment): Option[Equipment] = { Equipment = Some(assignEquipment) } @@ -38,13 +38,12 @@ class EquipmentSlot { * @param assignEquipment the change in `Equipment` for this slot * @return the `Equipment` in this slot */ - def Equipment_=(assignEquipment : Option[Equipment]) : Option[Equipment] = { - if(assignEquipment.isDefined) { //if new equipment is defined, don't put it in the slot if the slot is being used - if(tool.isEmpty && EquipmentSize.isEqual(size, assignEquipment.get.Size)) { + def Equipment_=(assignEquipment: Option[Equipment]): Option[Equipment] = { + if (assignEquipment.isDefined) { //if new equipment is defined, don't put it in the slot if the slot is being used + if (tool.isEmpty && EquipmentSize.isEqual(size, assignEquipment.get.Size)) { tool = assignEquipment } - } - else { + } else { tool = None } Equipment @@ -52,11 +51,11 @@ class EquipmentSlot { } object EquipmentSlot { - def apply() : EquipmentSlot = { + def apply(): EquipmentSlot = { new EquipmentSlot() } - def apply(size : EquipmentSize.Value) : EquipmentSlot = { + def apply(size: EquipmentSize.Value): EquipmentSlot = { val slot = new EquipmentSlot() slot.Size = size slot diff --git a/common/src/main/scala/net/psforever/objects/equipment/FireModeDefinition.scala b/common/src/main/scala/net/psforever/objects/equipment/FireModeDefinition.scala index 07d596ac..74069b9f 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/FireModeDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/FireModeDefinition.scala @@ -7,78 +7,91 @@ import net.psforever.objects.vital.damage.DamageProfile import scala.collection.mutable class FireModeDefinition { + /** indices pointing to all ammo types used, in (an) order - * the ammo types list will be available from the `ToolDefinition` */ - private val ammoTypeIndices : mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() + * the ammo types list will be available from the `ToolDefinition` + */ + private val ammoTypeIndices: mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() + /** custom indices pointing to the projectile type used for this mode's ammo types * for most weapon fire modes, this list will be empty and the projectile will align with the `ammoTypeIndex` - * if at least one ammo type has a redirected projectile type, all projectiles must be defined for this mode */ - private val projectileTypeIndices : mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() + * if at least one ammo type has a redirected projectile type, all projectiles must be defined for this mode + */ + private val projectileTypeIndices: mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() + /** ammunition slot number this fire mode utilizes */ - private var ammoSlotIndex : Int = 0 + private var ammoSlotIndex: Int = 0 + /** how many rounds are replenished each reload cycle */ - private var magazine : Int = 1 + private var magazine: Int = 1 + /** how many rounds are replenished each reload cycle, per type of ammunition loaded - * key - ammo type index, value - magazine capacity*/ - private val customAmmoMagazine : mutable.HashMap[Ammo.Value, Int] = mutable.HashMap[Ammo.Value, Int]() + * key - ammo type index, value - magazine capacity + */ + private val customAmmoMagazine: mutable.HashMap[Ammo.Value, Int] = mutable.HashMap[Ammo.Value, Int]() + /** how much is subtracted from the magazine each fire cycle; - * most weapons will only fire 1 round per fire cycle; the flamethrower in fire mode 1 fires 50 */ - private var rounds : Int = 1 + * most weapons will only fire 1 round per fire cycle; the flamethrower in fire mode 1 fires 50 + */ + private var rounds: Int = 1 + /** how many sub-rounds are queued per round fired; - * the flechette fires 8 pellets per shell and generates 8 fire reports before the ammo count goes down */ - private var chamber : Int = 1 + * the flechette fires 8 pellets per shell and generates 8 fire reports before the ammo count goes down + */ + private var chamber: Int = 1 + /** modifiers for each damage type */ - private val modifiers : DamageModifiers = new DamageModifiers + private val modifiers: DamageModifiers = new DamageModifiers - def AmmoSlotIndex : Int = ammoSlotIndex + def AmmoSlotIndex: Int = ammoSlotIndex - def AmmoSlotIndex_=(index : Int) : Int = { + def AmmoSlotIndex_=(index: Int): Int = { ammoSlotIndex = index AmmoSlotIndex } - def AmmoTypeIndices : mutable.ListBuffer[Int] = ammoTypeIndices + def AmmoTypeIndices: mutable.ListBuffer[Int] = ammoTypeIndices - def AmmoTypeIndices_=(index : Int) : mutable.ListBuffer[Int] = { + def AmmoTypeIndices_=(index: Int): mutable.ListBuffer[Int] = { ammoTypeIndices += index } - def ProjectileTypeIndices : mutable.ListBuffer[Int] = projectileTypeIndices + def ProjectileTypeIndices: mutable.ListBuffer[Int] = projectileTypeIndices - def ProjectileTypeIndices_=(index : Int) : mutable.ListBuffer[Int] = { + def ProjectileTypeIndices_=(index: Int): mutable.ListBuffer[Int] = { projectileTypeIndices += index } - def Magazine : Int = magazine + def Magazine: Int = magazine - def Magazine_=(inMagazine : Int) : Int = { + def Magazine_=(inMagazine: Int): Int = { magazine = inMagazine Magazine } - def CustomMagazine : mutable.HashMap[Ammo.Value, Int] = customAmmoMagazine + def CustomMagazine: mutable.HashMap[Ammo.Value, Int] = customAmmoMagazine - def CustomMagazine_=(kv : (Ammo.Value, Int)) : mutable.HashMap[Ammo.Value, Int] = { + def CustomMagazine_=(kv: (Ammo.Value, Int)): mutable.HashMap[Ammo.Value, Int] = { val (ammoTypeIndex, cap) = kv customAmmoMagazine += ammoTypeIndex -> cap CustomMagazine } - def Rounds : Int = rounds + def Rounds: Int = rounds - def Rounds_=(round : Int) : Int = { + def Rounds_=(round: Int): Int = { rounds = round Rounds } - def Chamber : Int = chamber + def Chamber: Int = chamber - def Chamber_=(inChamber : Int) : Int = { + def Chamber_=(inChamber: Int): Int = { chamber = inChamber Chamber } - def Modifiers : DamageModifiers = modifiers + def Modifiers: DamageModifiers = modifiers /** * Shoot a weapon, remove an anticipated amount of ammunition. @@ -86,16 +99,17 @@ class FireModeDefinition { * @param rounds The number of rounds to remove, if specified * @return the size of the weapon's magazine after discharge */ - def Discharge(weapon : Tool, rounds : Option[Int] = None) : Int = { + def Discharge(weapon: Tool, rounds: Option[Int] = None): Int = { val dischargedAmount = rounds match { - case Some(rounds : Int) => rounds - case _ => Rounds + case Some(rounds: Int) => rounds + case _ => Rounds } weapon.Magazine - dischargedAmount } } class PelletFireModeDefinition extends FireModeDefinition { + /** * Shoot a weapon, remove an anticipated amount of ammunition.
*
@@ -105,21 +119,21 @@ class PelletFireModeDefinition extends FireModeDefinition { * @param weapon the weapon * @return the size of the weapon's magazine after discharge */ - override def Discharge(weapon : Tool, rounds : Option[Int] = None) : Int = { - val ammoSlot = weapon.AmmoSlot - val magazine = weapon.Magazine - val chamber : Int = ammoSlot.Chamber = ammoSlot.Chamber - 1 - if(chamber <= 0) { + override def Discharge(weapon: Tool, rounds: Option[Int] = None): Int = { + val ammoSlot = weapon.AmmoSlot + val magazine = weapon.Magazine + val chamber: Int = ammoSlot.Chamber = ammoSlot.Chamber - 1 + if (chamber <= 0) { ammoSlot.Chamber = Chamber magazine - Rounds - } - else { + } else { magazine } } } class InfiniteFireModeDefinition extends FireModeDefinition { + /** * Shoot a weapon, remove an anticipated amount of ammunition.
*
@@ -133,47 +147,47 @@ class InfiniteFireModeDefinition extends FireModeDefinition { * @return the size of the weapon's magazine after discharge; * will always return 1 */ - override def Discharge(weapon : Tool, rounds : Option[Int] = None) : Int = 1 + override def Discharge(weapon: Tool, rounds: Option[Int] = None): Int = 1 } class DamageModifiers extends DamageProfile { - private var damage0 : Int = 0 - private var damage1 : Int = 0 - private var damage2 : Int = 0 - private var damage3 : Int = 0 - private var damage4 : Int = 0 + private var damage0: Int = 0 + private var damage1: Int = 0 + private var damage2: Int = 0 + private var damage3: Int = 0 + private var damage4: Int = 0 - def Damage0 : Int = damage0 + def Damage0: Int = damage0 - def Damage0_=(damage : Int) : Int = { + def Damage0_=(damage: Int): Int = { damage0 = damage Damage0 } - def Damage1 : Int = damage1 + def Damage1: Int = damage1 - def Damage1_=(damage : Int) : Int = { + def Damage1_=(damage: Int): Int = { damage1 = damage Damage1 } - def Damage2 : Int = damage2 + def Damage2: Int = damage2 - def Damage2_=(damage : Int) : Int = { + def Damage2_=(damage: Int): Int = { damage2 = damage Damage2 } - def Damage3 : Int = damage3 + def Damage3: Int = damage3 - def Damage3_=(damage : Int) : Int = { + def Damage3_=(damage: Int): Int = { damage3 = damage Damage3 } - def Damage4 : Int = damage4 + def Damage4: Int = damage4 - def Damage4_=(damage : Int) : Int = { + def Damage4_=(damage: Int): Int = { damage4 = damage Damage4 } diff --git a/common/src/main/scala/net/psforever/objects/equipment/FireModeSwitch.scala b/common/src/main/scala/net/psforever/objects/equipment/FireModeSwitch.scala index 82bc4ff8..b39cd262 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/FireModeSwitch.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/FireModeSwitch.scala @@ -11,11 +11,11 @@ package net.psforever.objects.equipment * @tparam Mode the type parameter representing the fire mode */ trait FireModeSwitch[Mode] { - def FireModeIndex : Int + def FireModeIndex: Int - def FireModeIndex_=(index : Int) : Int + def FireModeIndex_=(index: Int): Int - def FireMode : Mode + def FireMode: Mode - def NextFireMode : Mode + def NextFireMode: Mode } diff --git a/common/src/main/scala/net/psforever/objects/equipment/JammingUnit.scala b/common/src/main/scala/net/psforever/objects/equipment/JammingUnit.scala index 95433213..b2053c06 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/JammingUnit.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/JammingUnit.scala @@ -19,32 +19,37 @@ import scala.concurrent.duration._ * Being "jammered" is a status that causes weakness due to temporary equipment disabling or the elimination of certain objects. */ trait JammableUnit { + /** being jammed (jammered) is an on/off state */ - private var jammed : Boolean = false + private var jammed: Boolean = false - def Jammed : Boolean = jammed + def Jammed: Boolean = jammed - def Jammed_=(state : Boolean) : Boolean = { + def Jammed_=(state: Boolean): Boolean = { jammed = state Jammed } } object JammableUnit { + /** * A message for generic jammering. * Currently, unused. */ final case class Jammer() + /** * A message for jammering due to a projectile. * @param cause information pertaining to the projectile */ - final case class Jammered(cause : ResolvedProjectile) + final case class Jammered(cause: ResolvedProjectile) + /** * Stop the auditory aspect of being jammered. */ final case class ClearJammeredSound() + /** * Stop the status effects of being jammered. */ @@ -57,16 +62,19 @@ object JammableUnit { * @see `EffectTarget` */ trait JammingUnit { + /** a list of qualifying conditional tests for determining if an object is to be affected by the jammered status; - * if qualifying, that object will be inflicted with a number of milliseconds of the jammered status */ - private val jammedEffectDuration : mutable.ListBuffer[(TargetValidation, Int)] = new mutable.ListBuffer() + * if qualifying, that object will be inflicted with a number of milliseconds of the jammered status + */ + private val jammedEffectDuration: mutable.ListBuffer[(TargetValidation, Int)] = new mutable.ListBuffer() - def HasJammedEffectDuration : Boolean = jammedEffectDuration.isEmpty + def HasJammedEffectDuration: Boolean = jammedEffectDuration.isEmpty - def JammedEffectDuration : mutable.ListBuffer[(TargetValidation, Int)] = jammedEffectDuration + def JammedEffectDuration: mutable.ListBuffer[(TargetValidation, Int)] = jammedEffectDuration } object JammingUnit { + /** * Determine whether an object that can be jammered is to be jammered by this source, * and for how long. @@ -76,7 +84,7 @@ object JammingUnit { * @param target the object to be determined if affected by the source's jammering * @return the duration to be jammered, if any, in milliseconds */ - def FindJammerDuration(jammer : JammingUnit, target : PlanetSideGameObject) : Option[Int] = { + def FindJammerDuration(jammer: JammingUnit, target: PlanetSideGameObject): Option[Int] = { jammer.JammedEffectDuration .collect { case (TargetValidation(_, test), duration) if test(target) => duration } .toList @@ -93,7 +101,7 @@ object JammingUnit { * @param targets the objects to be determined if affected by the source's jammering * @return the indexed durations to be jammered, if any, in milliseconds */ - def FindJammerDuration(jammer : JammingUnit, targets : Seq[PlanetSideGameObject]) : Seq[Option[Int]] = { + def FindJammerDuration(jammer: JammingUnit, targets: Seq[PlanetSideGameObject]): Seq[Option[Int]] = { targets.map { target => FindJammerDuration(jammer, target) } } } @@ -107,33 +115,37 @@ object JammingUnit { * The primary purpose of this behavior is to control timers that toggle the states of these two aspects. */ trait JammableBehavior { - this : Actor => + this: Actor => + /** flag for jammed sound */ - protected var jammedSound : Boolean = false + protected var jammedSound: Boolean = false + /** the sound timer */ - protected var jammeredSoundTimer : Cancellable = Default.Cancellable + protected var jammeredSoundTimer: Cancellable = Default.Cancellable + /** the effect timer */ - protected var jammeredStatusTimer : Cancellable = Default.Cancellable + protected var jammeredStatusTimer: Cancellable = Default.Cancellable /** `ZoneAware` is used for callback to the event systems */ - def JammableObject : PlanetSideServerObject with JammableUnit with ZoneAware + def JammableObject: PlanetSideServerObject with JammableUnit with ZoneAware /** * If the target can be validated against, affect it with the jammered status. * @param target the objects to be determined if affected by the source's jammering * @param cause the source of the "jammered" status */ - def TryJammerEffectActivate(target : Any, cause : ResolvedProjectile) : Unit = target match { - case obj : PlanetSideServerObject => - val radius = cause.projectile.profile.DamageRadius - JammingUnit.FindJammerDuration(cause.projectile.profile, obj) match { - case Some(dur) if Vector3.DistanceSquared(cause.hit_pos, cause.target.Position) < radius * radius => - StartJammeredSound(obj, dur) - StartJammeredStatus(obj, dur) - case _ => ; - } - case _ => ; - } + def TryJammerEffectActivate(target: Any, cause: ResolvedProjectile): Unit = + target match { + case obj: PlanetSideServerObject => + val radius = cause.projectile.profile.DamageRadius + JammingUnit.FindJammerDuration(cause.projectile.profile, obj) match { + case Some(dur) if Vector3.DistanceSquared(cause.hit_pos, cause.target.Position) < radius * radius => + StartJammeredSound(obj, dur) + StartJammeredStatus(obj, dur) + case _ => ; + } + case _ => ; + } /** * Activate a distinctive buzzing sound effect. @@ -143,12 +155,13 @@ trait JammableBehavior { * @param dur the duration of the timer, in milliseconds; * by default, 30000 */ - def StartJammeredSound(target : Any, dur : Int = 30000) : Unit = { - if(!jammedSound) { + def StartJammeredSound(target: Any, dur: Int = 30000): Unit = { + if (!jammedSound) { jammedSound = true import scala.concurrent.ExecutionContext.Implicits.global jammeredSoundTimer.cancel - jammeredSoundTimer = context.system.scheduler.scheduleOnce(dur milliseconds, self, JammableUnit.ClearJammeredSound()) + jammeredSoundTimer = + context.system.scheduler.scheduleOnce(dur milliseconds, self, JammableUnit.ClearJammeredSound()) } } @@ -159,11 +172,12 @@ trait JammableBehavior { * @param target an object that can be affected by the jammered status * @param dur the duration of the timer, in milliseconds */ - def StartJammeredStatus(target : Any, dur : Int) : Unit = { + def StartJammeredStatus(target: Any, dur: Int): Unit = { JammableObject.Jammed = true jammeredStatusTimer.cancel import scala.concurrent.ExecutionContext.Implicits.global - jammeredStatusTimer = context.system.scheduler.scheduleOnce(dur milliseconds, self, JammableUnit.ClearJammeredStatus()) + jammeredStatusTimer = + context.system.scheduler.scheduleOnce(dur milliseconds, self, JammableUnit.ClearJammeredStatus()) } /** @@ -172,7 +186,7 @@ trait JammableBehavior { * We merely stop the timer. * @param target an object that can be affected by the jammered status */ - def CancelJammeredSound(target : Any) : Unit = { + def CancelJammeredSound(target: Any): Unit = { jammedSound = false jammeredSoundTimer.cancel } @@ -183,12 +197,12 @@ trait JammableBehavior { * We merely stop the timer. * @param target an object that can be affected by the jammered status */ - def CancelJammeredStatus(target : Any) : Unit = { + def CancelJammeredStatus(target: Any): Unit = { JammableObject.Jammed = false jammeredStatusTimer.cancel } - val jammableBehavior : Receive = { + val jammableBehavior: Receive = { case JammableUnit.Jammered(cause) => TryJammerEffectActivate(JammableObject, cause) @@ -210,38 +224,44 @@ trait JammableBehavior { * @see `Zone.VehicleEvents` */ trait JammableMountedWeapons extends JammableBehavior { - _ : Actor => + _: Actor => - override def StartJammeredSound(target : Any, dur : Int) : Unit = { + override def StartJammeredSound(target: Any, dur: Int): Unit = { target match { - case obj : PlanetSideServerObject with MountedWeapons with JammableUnit if !jammedSound => - obj.Zone.VehicleEvents ! VehicleServiceMessage(obj.Zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 1)) + case obj: PlanetSideServerObject with MountedWeapons with JammableUnit if !jammedSound => + obj.Zone.VehicleEvents ! VehicleServiceMessage( + obj.Zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 1) + ) super.StartJammeredSound(target, dur) case _ => ; } } - override def StartJammeredStatus(target : Any, dur : Int) : Unit = { + override def StartJammeredStatus(target: Any, dur: Int): Unit = { target match { - case obj : PlanetSideServerObject with MountedWeapons with JammableUnit if !obj.Jammed => + case obj: PlanetSideServerObject with MountedWeapons with JammableUnit if !obj.Jammed => JammableMountedWeapons.JammeredStatus(obj, 1) super.StartJammeredStatus(target, dur) case _ => ; } } - override def CancelJammeredSound(target : Any) : Unit = { + override def CancelJammeredSound(target: Any): Unit = { target match { - case obj : PlanetSideServerObject if jammedSound => - obj.Zone.VehicleEvents ! VehicleServiceMessage(obj.Zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 0)) + case obj: PlanetSideServerObject if jammedSound => + obj.Zone.VehicleEvents ! VehicleServiceMessage( + obj.Zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, obj.GUID, 27, 0) + ) case _ => ; } super.CancelJammeredSound(target) } - override def CancelJammeredStatus(target : Any) : Unit = { + override def CancelJammeredStatus(target: Any): Unit = { target match { - case obj : PlanetSideServerObject with MountedWeapons with JammableUnit if obj.Jammed => + case obj: PlanetSideServerObject with MountedWeapons with JammableUnit if obj.Jammed => JammableMountedWeapons.JammeredStatus(obj, 0) case _ => ; } @@ -250,6 +270,7 @@ trait JammableMountedWeapons extends JammableBehavior { } object JammableMountedWeapons { + /** * Retrieve all of the weapons on a `MountedWeapons` target object and apply a jammered status effect to each. * @param target an object that can be affected by the jammered status @@ -257,15 +278,18 @@ object JammableMountedWeapons { * 0 for deactivation; * 1 for activation */ - def JammeredStatus(target : PlanetSideServerObject with MountedWeapons, statusCode : Int) : Unit = { - val zone = target.Zone + def JammeredStatus(target: PlanetSideServerObject with MountedWeapons, statusCode: Int): Unit = { + val zone = target.Zone val zoneId = zone.Id target.Weapons.values .map { _.Equipment } .collect { - case Some(item : Tool) => - item.Jammed = statusCode==1 - zone.VehicleEvents ! VehicleServiceMessage(zoneId, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, item.GUID, 27, statusCode)) + case Some(item: Tool) => + item.Jammed = statusCode == 1 + zone.VehicleEvents ! VehicleServiceMessage( + zoneId, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, item.GUID, 27, statusCode) + ) } } } diff --git a/common/src/main/scala/net/psforever/objects/equipment/Kits.scala b/common/src/main/scala/net/psforever/objects/equipment/Kits.scala index daffc365..c5f808c9 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/Kits.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/Kits.scala @@ -5,8 +5,8 @@ package net.psforever.objects.equipment * An `Enumeration` of the kit types in the game, paired with their object id as the `Value`. */ object Kits extends Enumeration { - final val medkit = Value(536) - final val super_armorkit = Value(842) //super repair kit - final val super_medkit = Value(843) + final val medkit = Value(536) + final val super_armorkit = Value(842) //super repair kit + final val super_medkit = Value(843) final val super_staminakit = Value(844) //super stimpack } diff --git a/common/src/main/scala/net/psforever/objects/equipment/RemoteUnit.scala b/common/src/main/scala/net/psforever/objects/equipment/RemoteUnit.scala index 03f55ff8..2abb7274 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/RemoteUnit.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/RemoteUnit.scala @@ -4,19 +4,19 @@ package net.psforever.objects.equipment import net.psforever.types.PlanetSideGUID trait RemoteUnit { - private var companion : Option[PlanetSideGUID] = None + private var companion: Option[PlanetSideGUID] = None - def Companion : Option[PlanetSideGUID] = companion + def Companion: Option[PlanetSideGUID] = companion - def Companion_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = { - if(companion.isEmpty) { + def Companion_=(guid: PlanetSideGUID): Option[PlanetSideGUID] = { + if (companion.isEmpty) { companion = Some(guid) } Companion } - def Companion_=(guid : Option[Any]) : Option[PlanetSideGUID] = { - if(guid.isEmpty) { + def Companion_=(guid: Option[Any]): Option[PlanetSideGUID] = { + if (guid.isEmpty) { companion = None } Companion diff --git a/common/src/main/scala/net/psforever/objects/equipment/SItem.scala b/common/src/main/scala/net/psforever/objects/equipment/SItem.scala index d8890e7b..9b7da4d9 100644 --- a/common/src/main/scala/net/psforever/objects/equipment/SItem.scala +++ b/common/src/main/scala/net/psforever/objects/equipment/SItem.scala @@ -5,8 +5,8 @@ package net.psforever.objects.equipment * An `Enumeration` of some activation-type `Equipment` in the game, paired with their object id as the `Value`. */ object SItem extends Enumeration { - final val boomer_trigger = Value(149) - final val command_detonater = Value(213) //cud - final val flail_targeting_laser = Value(297) + final val boomer_trigger = Value(149) + final val command_detonater = Value(213) //cud + final val flail_targeting_laser = Value(297) final val remote_electronics_kit = Value(728) } diff --git a/common/src/main/scala/net/psforever/objects/guid/AvailabilityPolicy.scala b/common/src/main/scala/net/psforever/objects/guid/AvailabilityPolicy.scala index 2775de75..6b50a026 100644 --- a/common/src/main/scala/net/psforever/objects/guid/AvailabilityPolicy.scala +++ b/common/src/main/scala/net/psforever/objects/guid/AvailabilityPolicy.scala @@ -12,10 +12,5 @@ object AvailabilityPolicy extends Enumeration { * A `LEASED` GUID has been issued and is currently being used. * A `RESTRICTED` GUID can never be freed. It is allowed, however, to be assigned once as if it were `LEASED`. */ - val - Available, - Leased, - Restricted - = Value + val Available, Leased, Restricted = Value } - diff --git a/common/src/main/scala/net/psforever/objects/guid/GUIDTask.scala b/common/src/main/scala/net/psforever/objects/guid/GUIDTask.scala index 9107d2a9..e7f34a55 100644 --- a/common/src/main/scala/net/psforever/objects/guid/GUIDTask.scala +++ b/common/src/main/scala/net/psforever/objects/guid/GUIDTask.scala @@ -28,6 +28,7 @@ import scala.annotation.tailrec * Almost all tasks have an explicit registering and an unregistering activity defined for it. */ object GUIDTask { + /** * Construct tasking that registers an object with a globally unique identifier selected from a pool of numbers.
*
@@ -37,26 +38,25 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a `TaskResolver.GiveTask` message */ - def RegisterObjectTask(obj : IdentifiableEntity)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - TaskResolver.GiveTask( - new Task() { - private val localObject = obj - private val localAccessor = guid + def RegisterObjectTask(obj: IdentifiableEntity)(implicit guid: ActorRef): TaskResolver.GiveTask = { + TaskResolver.GiveTask(new Task() { + private val localObject = obj + private val localAccessor = guid - override def Description : String = s"register $localObject" + override def Description: String = s"register $localObject" - override def isComplete : Task.Resolution.Value = if(localObject.HasGUID) { + override def isComplete: Task.Resolution.Value = + if (localObject.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } - def Execute(resolver : ActorRef) : Unit = { - import net.psforever.objects.guid.actor.Register - localAccessor ! Register(localObject, "dynamic", resolver) //TODO pool should not be hardcoded - } - }) + def Execute(resolver: ActorRef): Unit = { + import net.psforever.objects.guid.actor.Register + localAccessor ! Register(localObject, "dynamic", resolver) //TODO pool should not be hardcoded + } + }) } /** @@ -76,8 +76,9 @@ object GUIDTask { * @see `GUIDTask.RegisterEquipment` * @return a `TaskResolver.GiveTask` message */ - def RegisterTool(obj : Tool)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val ammoTasks : List[TaskResolver.GiveTask] = (0 until obj.MaxAmmoSlot).map(ammoIndex => RegisterObjectTask(obj.AmmoSlots(ammoIndex).Box)).toList + def RegisterTool(obj: Tool)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val ammoTasks: List[TaskResolver.GiveTask] = + (0 until obj.MaxAmmoSlot).map(ammoIndex => RegisterObjectTask(obj.AmmoSlots(ammoIndex).Box)).toList TaskResolver.GiveTask(RegisterObjectTask(obj).task, ammoTasks) } @@ -89,10 +90,10 @@ object GUIDTask { * @see `GUIDTask.UnregisterLocker` * @return a `TaskResolver.GiveTask` message */ - def RegisterLocker(obj : LockerContainer)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def RegisterLocker(obj: LockerContainer)(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask(RegisterObjectTask(obj).task, RegisterInventory(obj)) } - def RegisterLocker(obj : LockerEquipment)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def RegisterLocker(obj: LockerEquipment)(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask(RegisterObjectTask(obj).task, RegisterInventory(obj)) } @@ -105,8 +106,8 @@ object GUIDTask { * `Container` * @return a list of `TaskResolver.GiveTask` messages */ - def RegisterInventory(container : Container)(implicit guid : ActorRef) : List[TaskResolver.GiveTask] = { - container.Inventory.Items.map(entry => { RegisterEquipment(entry.obj)}) + def RegisterInventory(container: Container)(implicit guid: ActorRef): List[TaskResolver.GiveTask] = { + container.Inventory.Items.map(entry => { RegisterEquipment(entry.obj) }) } /** @@ -125,9 +126,9 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a `TaskResolver.GiveTask` message */ - def RegisterEquipment(obj : Equipment)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def RegisterEquipment(obj: Equipment)(implicit guid: ActorRef): TaskResolver.GiveTask = { obj match { - case tool : Tool => + case tool: Tool => RegisterTool(tool) case _ => RegisterObjectTask(obj) @@ -150,9 +151,9 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a `TaskResolver.GiveTask` message */ - def RegisterAvatar(tplayer : Player)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), RegisterEquipment) - val lockerTask = List(RegisterLocker(tplayer.Locker)) + def RegisterAvatar(tplayer: Player)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), RegisterEquipment) + val lockerTask = List(RegisterLocker(tplayer.Locker)) val inventoryTasks = RegisterInventory(tplayer) TaskResolver.GiveTask(RegisterObjectTask(tplayer).task, holsterTasks ++ lockerTask ++ inventoryTasks) } @@ -165,8 +166,8 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a `TaskResolver.GiveTask` message */ - def RegisterPlayer(tplayer : Player)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), RegisterEquipment) + def RegisterPlayer(tplayer: Player)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), RegisterEquipment) val inventoryTasks = RegisterInventory(tplayer) TaskResolver.GiveTask(GUIDTask.RegisterObjectTask(tplayer)(guid).task, holsterTasks ++ inventoryTasks) } @@ -188,14 +189,17 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a `TaskResolver.GiveTask` message */ - def RegisterVehicle(vehicle : Vehicle)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def RegisterVehicle(vehicle: Vehicle)(implicit guid: ActorRef): TaskResolver.GiveTask = { val weaponTasks = VisibleSlotTaskBuilding(vehicle.Weapons.values, RegisterEquipment) - val utilTasks = Vehicle.EquipmentUtilities(vehicle.Utilities).values.map(util => { RegisterObjectTask(util())}).toList + val utilTasks = + Vehicle.EquipmentUtilities(vehicle.Utilities).values.map(util => { RegisterObjectTask(util()) }).toList val inventoryTasks = RegisterInventory(vehicle) TaskResolver.GiveTask(RegisterObjectTask(vehicle).task, weaponTasks ++ utilTasks ++ inventoryTasks) } - def RegisterDeployableTurret(obj : PlanetSideGameObject with WeaponTurret)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def RegisterDeployableTurret( + obj: PlanetSideGameObject with WeaponTurret + )(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask( RegisterObjectTask(obj).task, VisibleSlotTaskBuilding(obj.Weapons.values, GUIDTask.RegisterEquipment) ++ RegisterInventory(obj) @@ -212,22 +216,22 @@ object GUIDTask { * @see `GUIDTask.RegisterObjectTask` * @return a `TaskResolver.GiveTask` message */ - def UnregisterObjectTask(obj : IdentifiableEntity)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterObjectTask(obj: IdentifiableEntity)(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localObject = obj + private val localObject = obj private val localAccessor = guid - override def Description : String = s"unregister $localObject" + override def Description: String = s"unregister $localObject" - override def isComplete : Task.Resolution.Value = if(!localObject.HasGUID) { - Task.Resolution.Success - } - else { - Task.Resolution.Incomplete - } + override def isComplete: Task.Resolution.Value = + if (!localObject.HasGUID) { + Task.Resolution.Success + } else { + Task.Resolution.Incomplete + } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { import net.psforever.objects.guid.actor.Unregister localAccessor ! Unregister(localObject, resolver) } @@ -244,8 +248,9 @@ object GUIDTask { * @see `GUIDTask.RegisterTool` * @return a `TaskResolver.GiveTask` message */ - def UnregisterTool(obj : Tool)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val ammoTasks : List[TaskResolver.GiveTask] = (0 until obj.MaxAmmoSlot).map(ammoIndex => UnregisterObjectTask(obj.AmmoSlots(ammoIndex).Box)).toList + def UnregisterTool(obj: Tool)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val ammoTasks: List[TaskResolver.GiveTask] = + (0 until obj.MaxAmmoSlot).map(ammoIndex => UnregisterObjectTask(obj.AmmoSlots(ammoIndex).Box)).toList TaskResolver.GiveTask(UnregisterObjectTask(obj).task, ammoTasks) } @@ -256,10 +261,10 @@ object GUIDTask { * @see `GUIDTask.RegisterLocker` * @return a `TaskResolver.GiveTask` message */ - def UnregisterLocker(obj : LockerContainer)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterLocker(obj: LockerContainer)(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask(UnregisterObjectTask(obj).task, UnregisterInventory(obj)) } - def UnregisterLocker(obj : LockerEquipment)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterLocker(obj: LockerEquipment)(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask(RegisterObjectTask(obj).task, RegisterInventory(obj)) } @@ -272,8 +277,8 @@ object GUIDTask { * `Container` * @return a list of `TaskResolver.GiveTask` messages */ - def UnregisterInventory(container : Container)(implicit guid : ActorRef) : List[TaskResolver.GiveTask] = { - container.Inventory.Items.map(entry => { UnregisterEquipment(entry.obj)}) + def UnregisterInventory(container: Container)(implicit guid: ActorRef): List[TaskResolver.GiveTask] = { + container.Inventory.Items.map(entry => { UnregisterEquipment(entry.obj) }) } /** @@ -286,9 +291,9 @@ object GUIDTask { * @see `GUIDTask.RegisterEquipment` * @return a `TaskResolver.GiveTask` message */ - def UnregisterEquipment(obj : Equipment)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterEquipment(obj: Equipment)(implicit guid: ActorRef): TaskResolver.GiveTask = { obj match { - case tool : Tool => + case tool: Tool => UnregisterTool(tool) case _ => UnregisterObjectTask(obj) @@ -304,9 +309,9 @@ object GUIDTask { * @see `GUIDTask.RegisterAvatar` * @return a `TaskResolver.GiveTask` message */ - def UnregisterAvatar(tplayer : Player)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), UnregisterEquipment) - val lockerTask = List(UnregisterLocker(tplayer.Locker)) + def UnregisterAvatar(tplayer: Player)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), UnregisterEquipment) + val lockerTask = List(UnregisterLocker(tplayer.Locker)) val inventoryTasks = UnregisterInventory(tplayer) TaskResolver.GiveTask(UnregisterObjectTask(tplayer).task, holsterTasks ++ lockerTask ++ inventoryTasks) } @@ -321,8 +326,8 @@ object GUIDTask { * @see `GUIDTask.RegisterAvatar` * @return a `TaskResolver.GiveTask` message */ - def UnregisterPlayer(tplayer : Player)(implicit guid : ActorRef) : TaskResolver.GiveTask = { - val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), UnregisterEquipment) + def UnregisterPlayer(tplayer: Player)(implicit guid: ActorRef): TaskResolver.GiveTask = { + val holsterTasks = VisibleSlotTaskBuilding(tplayer.Holsters(), UnregisterEquipment) val inventoryTasks = UnregisterInventory(tplayer) TaskResolver.GiveTask(GUIDTask.UnregisterObjectTask(tplayer).task, holsterTasks ++ inventoryTasks) } @@ -336,14 +341,17 @@ object GUIDTask { * @see `GUIDTask.RegisterVehicle` * @return a `TaskResolver.GiveTask` message */ - def UnregisterVehicle(vehicle : Vehicle)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterVehicle(vehicle: Vehicle)(implicit guid: ActorRef): TaskResolver.GiveTask = { val weaponTasks = VisibleSlotTaskBuilding(vehicle.Weapons.values, UnregisterEquipment) - val utilTasks = Vehicle.EquipmentUtilities(vehicle.Utilities).values.map(util => { UnregisterObjectTask(util())}).toList + val utilTasks = + Vehicle.EquipmentUtilities(vehicle.Utilities).values.map(util => { UnregisterObjectTask(util()) }).toList val inventoryTasks = UnregisterInventory(vehicle) TaskResolver.GiveTask(UnregisterObjectTask(vehicle).task, weaponTasks ++ utilTasks ++ inventoryTasks) } - def UnregisterDeployableTurret(obj : PlanetSideGameObject with WeaponTurret)(implicit guid : ActorRef) : TaskResolver.GiveTask = { + def UnregisterDeployableTurret( + obj: PlanetSideGameObject with WeaponTurret + )(implicit guid: ActorRef): TaskResolver.GiveTask = { TaskResolver.GiveTask( UnregisterObjectTask(obj).task, VisibleSlotTaskBuilding(obj.Weapons.values, GUIDTask.UnregisterEquipment) ++ UnregisterInventory(obj) @@ -360,7 +368,9 @@ object GUIDTask { * @param guid implicit reference to a unique number system * @return a list of `TaskResolver.GiveTask` messages */ - def VisibleSlotTaskBuilding(list : Iterable[EquipmentSlot], func : ((Equipment)=>TaskResolver.GiveTask))(implicit guid : ActorRef) : List[TaskResolver.GiveTask] = { + def VisibleSlotTaskBuilding(list: Iterable[EquipmentSlot], func: ((Equipment) => TaskResolver.GiveTask))(implicit + guid: ActorRef + ): List[TaskResolver.GiveTask] = { recursiveVisibleSlotTaskBuilding(list.iterator, func) } @@ -374,11 +384,14 @@ object GUIDTask { * @see `VisibleSlotTaskBuilding` * @return a `List` of `Equipment` tasking */ - @tailrec private def recursiveVisibleSlotTaskBuilding(iter : Iterator[EquipmentSlot], func : ((Equipment)=>TaskResolver.GiveTask), list : List[TaskResolver.GiveTask] = Nil)(implicit guid : ActorRef) : List[TaskResolver.GiveTask] = { - if(!iter.hasNext) { + @tailrec private def recursiveVisibleSlotTaskBuilding( + iter: Iterator[EquipmentSlot], + func: ((Equipment) => TaskResolver.GiveTask), + list: List[TaskResolver.GiveTask] = Nil + )(implicit guid: ActorRef): List[TaskResolver.GiveTask] = { + if (!iter.hasNext) { list - } - else { + } else { iter.next.Equipment match { case Some(item) => recursiveVisibleSlotTaskBuilding(iter, func, list :+ func(item)) diff --git a/common/src/main/scala/net/psforever/objects/guid/NumberPoolHub.scala b/common/src/main/scala/net/psforever/objects/guid/NumberPoolHub.scala index 4b79dae4..aae4824d 100644 --- a/common/src/main/scala/net/psforever/objects/guid/NumberPoolHub.scala +++ b/common/src/main/scala/net/psforever/objects/guid/NumberPoolHub.scala @@ -20,34 +20,36 @@ import scala.util.{Failure, Success, Try} * The latter can only be set by the `NumberSource` and can not be affected once this object is created. * @param source the number source object */ -class NumberPoolHub(private val source : NumberSource) { +class NumberPoolHub(private val source: NumberSource) { import scala.collection.mutable - private val hash : mutable.HashMap[String, NumberPool] = mutable.HashMap[String, NumberPool]() - private val bigpool : mutable.LongMap[String] = mutable.LongMap[String]() + private val hash: mutable.HashMap[String, NumberPool] = mutable.HashMap[String, NumberPool]() + private val bigpool: mutable.LongMap[String] = mutable.LongMap[String]() hash += "generic" -> new GenericPool(bigpool, source.Size) - source.FinalizeRestrictions.foreach(i => bigpool += i.toLong -> "") //these numbers can never be pooled; the source can no longer restrict numbers + source.FinalizeRestrictions.foreach(i => + bigpool += i.toLong -> "" + ) //these numbers can never be pooled; the source can no longer restrict numbers /** - * Given a globally unique identifier, rweturn any object registered to it.
+ * Given a globally unique identifier, return any object registered to it.
*
* Use:
* For `val obj = new NumberPoolHub(...)` use `obj(number)`. * @param number the unique number to attempt to retrieve from the `source` * @return the object that is assigned to the number */ - def apply(number : PlanetSideGUID) : Option[IdentifiableEntity] = this(number.guid) + def apply(number: PlanetSideGUID): Option[IdentifiableEntity] = this(number.guid) /** - * Given a globally unique identifier, rweturn any object registered to it.
+ * Given a globally unique identifier, return any object registered to it.
*
* Use:
* For `val obj = new NumberPoolHub(...)` use `obj(number)`. * @param number the unique number to attempt to retrieve from the `source` * @return the object that is assigned to the number */ - def apply(number : Int) : Option[IdentifiableEntity] = source.Get(number).orElse(return None).get.Object + def apply(number: Int): Option[IdentifiableEntity] = source.Get(number).orElse(return None).get.Object - def Numbers : List[Int] = bigpool.keys.map(key => key.toInt).toList + def Numbers: List[Int] = bigpool.keys.map(key => key.toInt).toList /** * Create a new number pool with the given label and the given numbers.
@@ -65,19 +67,21 @@ class NumberPoolHub(private val source : NumberSource) { * if the pool contains numbers the source does not; * if the pool contains numbers from already existing pools */ - def AddPool(name : String, pool : List[Int]) : NumberPool = { - if(hash.get(name).isDefined) { + def AddPool(name: String, pool: List[Int]): NumberPool = { + if (hash.get(name).isDefined) { throw new IllegalArgumentException(s"can not add pool $name - name already known to this hub?") } - if(pool.isEmpty) { + if (pool.isEmpty) { throw new IllegalArgumentException(s"can not add empty pool $name") } - if(source.Size <= pool.max) { + if (source.Size <= pool.max) { throw new IllegalArgumentException(s"can not add pool $name - max(pool) is greater than source.size") } val collision = bigpool.keys.map(n => n.toInt).toSet.intersect(pool.toSet) - if(collision.nonEmpty) { - throw new IllegalArgumentException(s"can not add pool $name - it contains the following redundant numbers: ${collision.toString}") + if (collision.nonEmpty) { + throw new IllegalArgumentException( + s"can not add pool $name - it contains the following redundant numbers: ${collision.toString}" + ) } pool.foreach(i => bigpool += i.toLong -> name) hash += name -> new ExclusivePool(pool) @@ -95,14 +99,17 @@ class NumberPoolHub(private val source : NumberSource) { * @return the `List` of numbers that belonged to the pool * @throws IllegalArgumentException if the pool doesn't exist or is not removed (removable) */ - def RemovePool(name : String) : List[Int] = { - if(name.equals("generic") || name.equals("")) { + def RemovePool(name: String): List[Int] = { + if (name.equals("generic") || name.equals("")) { throw new IllegalArgumentException("can not remove pool - generic or restricted") } - val pool = hash.get(name).orElse({ - throw new IllegalArgumentException(s"can not remove pool - $name does not exist") - }).get - if(pool.Count > 0) { + val pool = hash + .get(name) + .orElse({ + throw new IllegalArgumentException(s"can not remove pool - $name does not exist") + }) + .get + if (pool.Count > 0) { throw new IllegalArgumentException(s"can not remove pool - $name is being used") } @@ -117,13 +124,15 @@ class NumberPoolHub(private val source : NumberSource) { * @param name the name of the pool * @return a reference to the number pool, or `None` */ - def GetPool(name : String) : Option[NumberPool] = if(name.equals("")) { None } else { hash.get(name) } + def GetPool(name: String): Option[NumberPool] = + if (name.equals("")) { None } + else { hash.get(name) } /** * na * @return na */ - def Pools : mutable.HashMap[String, NumberPool] = hash + def Pools: mutable.HashMap[String, NumberPool] = hash /** * Reference a specific number's pool.
@@ -136,9 +145,10 @@ class NumberPoolHub(private val source : NumberSource) { * @param number a number * @return the name of the number pool to which this item belongs */ - def WhichPool(number : Int) : Option[String] = { + def WhichPool(number: Int): Option[String] = { val name = bigpool.get(number) - if(name.contains("")) { None } else { name } + if (name.contains("")) { None } + else { name } } /** @@ -149,14 +159,14 @@ class NumberPoolHub(private val source : NumberSource) { * @param obj an object * @return the name of the number pool to which this item belongs */ - def WhichPool(obj : IdentifiableEntity) : Option[String] = { + def WhichPool(obj: IdentifiableEntity): Option[String] = { try { - val number : Int = obj.GUID.guid - val entry = source.Get(number) - if(entry.isDefined && entry.get.Object.contains(obj)) { WhichPool(number) } else { None } - } - catch { - case _ : Exception => + val number: Int = obj.GUID.guid + val entry = source.Get(number) + if (entry.isDefined && entry.get.Object.contains(obj)) { WhichPool(number) } + else { None } + } catch { + case _: Exception => None } } @@ -166,7 +176,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param obj an object being registered * @return the number the was given to the object */ - def register(obj : IdentifiableEntity) : Try[Int] = register(obj, "generic") + def register(obj: IdentifiableEntity): Try[Int] = register(obj, "generic") /** * Register an object to a specific number if it is available. @@ -174,7 +184,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param number the number whose assignment is requested * @return the number the was given to the object */ - def register(obj : IdentifiableEntity, number : Int) : Try[Int] = { + def register(obj: IdentifiableEntity, number: Int): Try[Int] = { bigpool.get(number.toLong) match { case Some(name) => register_GetSpecificNumberFromPool(name, number) match { @@ -201,7 +211,7 @@ class NumberPoolHub(private val source : NumberSource) { * @return the number the was given to the object * @see `NumberPool.Selector_=(NumberSelector)` */ - private def register_GetSpecificNumberFromPool(name : String, number : Int) : Try[LoanedKey]= { + private def register_GetSpecificNumberFromPool(name: String, number: Int): Try[LoanedKey] = { hash.get(name) match { case Some(pool) => val slctr = pool.Selector @@ -217,7 +227,7 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def register_GetAvailableNumberFromSource(number : Int) : Try[LoanedKey] = { + private def register_GetAvailableNumberFromSource(number: Int): Try[LoanedKey] = { source.Available(number) match { case Some(key) => Success(key) @@ -232,12 +242,11 @@ class NumberPoolHub(private val source : NumberSource) { * @param name the local pool name * @return the number the was given to the object */ - def register(obj : IdentifiableEntity, name : String) : Try[Int] = { + def register(obj: IdentifiableEntity, name: String): Try[Int] = { try { register_CheckNumberAgainstDesiredPool(obj, name, obj.GUID.guid) - } - catch { - case _ : Exception => + } catch { + case _: Exception => register_GetPool(name) match { case Success(key) => key.Object = obj @@ -248,21 +257,19 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def register_CheckNumberAgainstDesiredPool(obj : IdentifiableEntity, name : String, number : Int) : Try[Int] = { + private def register_CheckNumberAgainstDesiredPool(obj: IdentifiableEntity, name: String, number: Int): Try[Int] = { val directKey = source.Get(number) - if(directKey.isEmpty || !directKey.get.Object.contains(obj)) { + if (directKey.isEmpty || !directKey.get.Object.contains(obj)) { Failure(new Exception("object already registered, but not to this source")) - } - else if(!WhichPool(number).contains(name)) { + } else if (!WhichPool(number).contains(name)) { //TODO obj is not registered to the desired pool; is this okay? Success(number) - } - else { + } else { Success(number) } } - private def register_GetPool(name : String) : Try[LoanedKey] = { + private def register_GetPool(name: String): Try[LoanedKey] = { hash.get(name) match { case Some(pool) => register_GetNumberFromDesiredPool(pool) @@ -271,7 +278,7 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def register_GetNumberFromDesiredPool(pool : NumberPool) : Try[LoanedKey] = { + private def register_GetNumberFromDesiredPool(pool: NumberPool): Try[LoanedKey] = { pool.Get() match { case Success(number) => register_GetMonitorFromSource(number) @@ -280,12 +287,14 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def register_GetMonitorFromSource(number : Int) : Try[LoanedKey] = { + private def register_GetMonitorFromSource(number: Int): Try[LoanedKey] = { register_GetAvailableNumberFromSource(number) match { case Success(key) => Success(key) case Failure(_) => - throw new NoGUIDException(s"a pool gave us a number $number that is actually unavailable") //stop the show; this is terrible! + throw new NoGUIDException( + s"a pool gave us a number $number that is actually unavailable" + ) //stop the show; this is terrible! } } @@ -294,7 +303,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param number the number whose assignment is requested * @return the monitor for a number */ - def register(number : Int) : Try[LoanedKey] = { + def register(number: Int): Try[LoanedKey] = { WhichPool(number) match { case None => import net.psforever.objects.guid.selector.SpecificSelector @@ -310,7 +319,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param name the local pool name * @return the monitor for a number */ - def register(name : String) : Try[LoanedKey] = register_GetPool(name) + def register(name: String): Try[LoanedKey] = register_GetPool(name) /** * na @@ -318,7 +327,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param number the number whose assignment is requested * @return an object that has been registered */ - def latterPartRegister(obj : IdentifiableEntity, number : Int) : Try[IdentifiableEntity] = { + def latterPartRegister(obj: IdentifiableEntity, number: Int): Try[IdentifiableEntity] = { register_GetMonitorFromSource(number) match { case Success(monitor) => monitor.Object = obj @@ -333,7 +342,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param obj an object being unregistered * @return the number previously associated with the object */ - def unregister(obj : IdentifiableEntity) : Try[Int] = { + def unregister(obj: IdentifiableEntity): Try[Int] = { unregister_GetPoolFromObject(obj) match { case Success(pool) => val number = obj.GUID.guid @@ -346,7 +355,7 @@ class NumberPoolHub(private val source : NumberSource) { } } - def unregister_GetPoolFromObject(obj : IdentifiableEntity) : Try[NumberPool] = { + def unregister_GetPoolFromObject(obj: IdentifiableEntity): Try[NumberPool] = { WhichPool(obj) match { case Some(name) => unregister_GetPool(name) @@ -355,7 +364,7 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def unregister_GetPool(name : String) : Try[NumberPool] = { + private def unregister_GetPool(name: String): Try[NumberPool] = { hash.get(name) match { case Some(pool) => Success(pool) @@ -369,16 +378,15 @@ class NumberPoolHub(private val source : NumberSource) { * @param number the number previously assigned(?) * @return the object, if any, previous associated with the number */ - def unregister(number : Int) : Try[Option[IdentifiableEntity]] = { - if(source.Test(number)) { + def unregister(number: Int): Try[Option[IdentifiableEntity]] = { + if (source.Test(number)) { unregister_GetObjectFromSource(number) - } - else { - Failure(new Exception(s"can not unregister a number $number that this source does not own") ) + } else { + Failure(new Exception(s"can not unregister a number $number that this source does not own")) } } - private def unregister_GetObjectFromSource(number : Int) : Try[Option[IdentifiableEntity]] = { + private def unregister_GetObjectFromSource(number: Int): Try[Option[IdentifiableEntity]] = { source.Return(number) match { case Some(obj) => unregister_ReturnObjectToPool(obj) @@ -387,7 +395,7 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def unregister_ReturnObjectToPool(obj : IdentifiableEntity) : Try[Option[IdentifiableEntity]] = { + private def unregister_ReturnObjectToPool(obj: IdentifiableEntity): Try[Option[IdentifiableEntity]] = { val number = obj.GUID.guid unregister_GetPoolFromNumber(number) match { case Success(pool) => @@ -400,22 +408,21 @@ class NumberPoolHub(private val source : NumberSource) { } } - private def unregister_ReturnNumberToPool(number : Int) : Try[Option[IdentifiableEntity]] = { + private def unregister_ReturnNumberToPool(number: Int): Try[Option[IdentifiableEntity]] = { unregister_GetPoolFromNumber(number) match { case Success(pool) => pool.Return(number) Success(None) case _ => //though everything else went fine, we must still fail if this number was restricted all along - if(!bigpool.get(number).contains("")) { + if (!bigpool.get(number).contains("")) { Success(None) - } - else { + } else { Failure(new Exception(s"can not unregister this number $number")) } } } - private def unregister_GetPoolFromNumber(number : Int) : Try[NumberPool] = { + private def unregister_GetPoolFromNumber(number: Int): Try[NumberPool] = { WhichPool(number) match { case Some(name) => unregister_GetPool(name) @@ -429,7 +436,7 @@ class NumberPoolHub(private val source : NumberSource) { * @param number the number to return. * @return any object previously using this number */ - def latterPartUnregister(number : Int) : Option[IdentifiableEntity] = source.Return(number) + def latterPartUnregister(number: Int): Option[IdentifiableEntity] = source.Return(number) /** * Determines if the object is registered.
@@ -442,7 +449,7 @@ class NumberPoolHub(private val source : NumberSource) { * @return `true`, if the number is registered; `false`, otherwise * @see `isRegistered(Int)` */ - def isRegistered(obj : IdentifiableEntity) : Boolean = { + def isRegistered(obj: IdentifiableEntity): Boolean = { try { source.Get(obj.GUID.guid) match { case Some(monitor) => @@ -450,9 +457,8 @@ class NumberPoolHub(private val source : NumberSource) { case None => false } - } - catch { - case _ : NoGUIDException => + } catch { + case _: NoGUIDException => false } } @@ -467,7 +473,7 @@ class NumberPoolHub(private val source : NumberSource) { * @return `true`, if the number is registered; `false`, otherwise * @see `isRegistered(IdentifiableEntity)` */ - def isRegistered(number : Int) : Boolean = { + def isRegistered(number: Int): Boolean = { source.Get(number) match { case Some(monitor) => monitor.Policy == AvailabilityPolicy.Leased diff --git a/common/src/main/scala/net/psforever/objects/guid/Task.scala b/common/src/main/scala/net/psforever/objects/guid/Task.scala index 9b4e83e3..f4c73412 100644 --- a/common/src/main/scala/net/psforever/objects/guid/Task.scala +++ b/common/src/main/scala/net/psforever/objects/guid/Task.scala @@ -4,19 +4,19 @@ package net.psforever.objects.guid import akka.actor.ActorRef trait Task { - def Description : String = "write_descriptive_task_message" - def Execute(resolver : ActorRef) : Unit - def isComplete : Task.Resolution.Value = Task.Resolution.Incomplete - def Timeout : Long = 200L //milliseconds - def onSuccess() : Unit = { } - def onFailure(ex : Throwable) : Unit = { } - def onTimeout(ex : Throwable) : Unit = onFailure(ex) - def onAbort(ex : Throwable) : Unit = { } - def Cleanup() : Unit = { } + def Description: String = "write_descriptive_task_message" + def Execute(resolver: ActorRef): Unit + def isComplete: Task.Resolution.Value = Task.Resolution.Incomplete + def Timeout: Long = 200L //milliseconds + def onSuccess(): Unit = {} + def onFailure(ex: Throwable): Unit = {} + def onTimeout(ex: Throwable): Unit = onFailure(ex) + def onAbort(ex: Throwable): Unit = {} + def Cleanup(): Unit = {} } object Task { - def TimeNow : Long = { + def TimeNow: Long = { System.nanoTime() //java.time.Instant.now().getEpochSecond } diff --git a/common/src/main/scala/net/psforever/objects/guid/TaskResolver.scala b/common/src/main/scala/net/psforever/objects/guid/TaskResolver.scala index ff42d512..9ad9eaea 100644 --- a/common/src/main/scala/net/psforever/objects/guid/TaskResolver.scala +++ b/common/src/main/scala/net/psforever/objects/guid/TaskResolver.scala @@ -14,13 +14,16 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.{Failure, Success} class TaskResolver() extends Actor { + /** list of all work currently managed by this resolver */ - private val tasks : ListBuffer[TaskResolver.TaskEntry] = new ListBuffer[TaskResolver.TaskEntry] + private val tasks: ListBuffer[TaskResolver.TaskEntry] = new ListBuffer[TaskResolver.TaskEntry] + /** scheduled termination of tardy managed work */ - private var timeoutCleanup : Cancellable = Default.Cancellable + private var timeoutCleanup: Cancellable = Default.Cancellable + /** logging utilities; default to tracing */ - private[this] val log = org.log4s.getLogger - private def trace(msg : String) = log.trace(msg) + private[this] val log = org.log4s.getLogger + private def trace(msg: String) = log.trace(msg) /** * Deal with any tasks that are still enqueued with this expiring `TaskResolver`. @@ -30,18 +33,18 @@ class TaskResolver() extends Actor { First, eliminate all timed-out tasks. Secondly, deal with all tasks that have reported "success" but have not yet been handled. Finally, all other remaining tasks should be treated as if they had failed. - */ + */ timeoutCleanup.cancel() TimeoutCleanup() - tasks.filter(entry => entry.task.isComplete == Task.Resolution.Success).foreach(entry => OnSuccess(entry.task) ) - val ex : Throwable = new Exception(s"a task is being stopped") + tasks.filter(entry => entry.task.isComplete == Task.Resolution.Success).foreach(entry => OnSuccess(entry.task)) + val ex: Throwable = new Exception(s"a task is being stopped") tasks.foreach(entry => { OnFailure(entry.task, ex) }) super.aroundPostStop() } - def receive : Receive = { + def receive: Receive = { case TaskResolver.GiveTask(aTask, Nil) => GiveTask(aTask) @@ -54,7 +57,7 @@ class TaskResolver() extends Actor { case TaskResolver.CompletedSubtask(obj) => //inter-resolver calls ExecuteNewTasks(obj) - case Success(obj : Task) => //inter-resolver calls + case Success(obj: Task) => //inter-resolver calls OnSuccess(obj) case Success | Success(_) => //success redirected from called event @@ -80,8 +83,8 @@ class TaskResolver() extends Actor { * Accept simple work and perform it. * @param aTask the work to be completed */ - private def GiveTask(aTask : Task) : Unit = { - val entry : TaskResolver.TaskEntry = TaskResolver.TaskEntry(aTask) + private def GiveTask(aTask: Task): Unit = { + val entry: TaskResolver.TaskEntry = TaskResolver.TaskEntry(aTask) tasks += entry trace(s"enqueue and start task ${aTask.Description}") entry.Execute(self) @@ -91,9 +94,14 @@ class TaskResolver() extends Actor { /** * Start the periodic checks for a task that has run for too long (timed-out), unless those checks are already running. */ - private def StartTimeoutCheck() : Unit = { - if(timeoutCleanup.isCancelled) { - timeoutCleanup = context.system.scheduler.scheduleWithFixedDelay(500 milliseconds, 500 milliseconds, self, TaskResolver.TimeoutCleanup()) + private def StartTimeoutCheck(): Unit = { + if (timeoutCleanup.isCancelled) { + timeoutCleanup = context.system.scheduler.scheduleWithFixedDelay( + 500 milliseconds, + 500 milliseconds, + self, + TaskResolver.TimeoutCleanup() + ) } } @@ -110,18 +118,25 @@ class TaskResolver() extends Actor { * @param resolver the `TaskResolver` that distributed this work, thus determining that this work is a sub-task; * by default, no one, as the work is identified as a main task */ - private def QueueSubtasks(task : Task, subtasks : List[TaskResolver.GiveTask], resolver : ActorRef = ActorRef.noSender) : Unit = { - val entry : TaskResolver.TaskEntry = TaskResolver.TaskEntry(task, subtasks.map(task => task.task), resolver) + private def QueueSubtasks( + task: Task, + subtasks: List[TaskResolver.GiveTask], + resolver: ActorRef = ActorRef.noSender + ): Unit = { + val entry: TaskResolver.TaskEntry = TaskResolver.TaskEntry(task, subtasks.map(task => task.task), resolver) tasks += entry trace(s"enqueue task ${task.Description}") - if(subtasks.isEmpty) { //a leaf in terms of task dependency; so, not dependent on any other work + if (subtasks.isEmpty) { //a leaf in terms of task dependency; so, not dependent on any other work trace(s"start task ${task.Description}") entry.Execute(self) - } - else { + } else { trace(s"enqueuing ${subtasks.length} substask(s) belonging to ${task.Description}") - subtasks.foreach({subtask => - context.parent ! TaskResolver.GiveSubtask(subtask.task, subtask.subs, self) //route back to submit subtask to pool + subtasks.foreach({ subtask => + context.parent ! TaskResolver.GiveSubtask( + subtask.task, + subtask.subs, + self + ) //route back to submit subtask to pool }) } StartTimeoutCheck() @@ -145,7 +160,7 @@ class TaskResolver() extends Actor { * Perform these checks when a task has reported successful completion to this TaskResolver. * @param task a `Task` object */ - private def OnSuccess(task : Task): Unit = { + private def OnSuccess(task: Task): Unit = { //find specific task and dequeue TaskResolver.findTask(tasks.iterator, task) match { case Some(index) => @@ -159,12 +174,14 @@ class TaskResolver() extends Actor { * This is what actually happens upon completion. * @param index the `TaskEntry` index */ - private def GeneralOnSuccess(index : Int) : Unit = { + private def GeneralOnSuccess(index: Int): Unit = { val entry = tasks(index) entry.task.onSuccess() trace(s"success with task ${entry.task.Description}") - if(entry.supertaskRef != ActorRef.noSender) { - entry.supertaskRef ! TaskResolver.CompletedSubtask(entry.task) //alert our dependent task's resolver that we have completed + if (entry.supertaskRef != ActorRef.noSender) { + entry.supertaskRef ! TaskResolver.CompletedSubtask( + entry.task + ) //alert our dependent task's resolver that we have completed } TaskCleanup(index) } @@ -174,11 +191,11 @@ class TaskResolver() extends Actor { * All of the sub-tasks must report a `Success` completion status before the main work can begin. * @param subtask a `Task` that is a subtask of some parent task in this resolver's group */ - private def ExecuteNewTasks(subtask : Task) : Unit = { + private def ExecuteNewTasks(subtask: Task): Unit = { TaskResolver.findTaskWithSubtask(tasks.iterator, subtask) match { case Some(index) => val entry = tasks(index) - if(TaskResolver.filterCompletionMatch(entry.subtasks.iterator, Task.Resolution.Success)) { + if (TaskResolver.filterCompletionMatch(entry.subtasks.iterator, Task.Resolution.Success)) { trace(s"start new task ${entry.task.Description}") entry.Execute(self) StartTimeoutCheck() @@ -195,7 +212,7 @@ class TaskResolver() extends Actor { * Consequently, the specific `Throwable` that contains the error message may have nothing to do with the failed task. * @param ex a `Throwable` that reports what happened to the task */ - private def OnFailure(ex : Throwable) : Unit = { + private def OnFailure(ex: Throwable): Unit = { //by reversing the List, we find the most outstanding Task with the completion state TaskResolver.filterCompletion(tasks.indices.reverseIterator, tasks.toList, Task.Resolution.Failure) match { case Some(index) => @@ -209,7 +226,7 @@ class TaskResolver() extends Actor { * @param subtask the task that had reported failure from some other resolver * @param ex a `Throwable` that reports what happened to the task */ - private def OnFailure(subtask : Task, ex : Throwable) : Unit = { + private def OnFailure(subtask: Task, ex: Throwable): Unit = { TaskResolver.findTaskWithSubtask(tasks.iterator, subtask) match { case Some(index) => GeneralOnFailure(index, ex) @@ -223,13 +240,13 @@ class TaskResolver() extends Actor { * @param index the `TaskEntry` index * @param ex a `Throwable` that reports what happened to the task */ - private def GeneralOnFailure(index : Int, ex : Throwable) : Unit = { + private def GeneralOnFailure(index: Int, ex: Throwable): Unit = { val entry = tasks(index) - val task = entry.task + val task = entry.task trace(s"failure with task ${task.Description}") task.onAbort(ex) task.onFailure(ex) - if(entry.supertaskRef != ActorRef.noSender) { + if (entry.supertaskRef != ActorRef.noSender) { entry.supertaskRef ! TaskResolver.Failure(task, ex) //alert our superior task's resolver we have completed } FaultSubtasks(entry) @@ -240,8 +257,8 @@ class TaskResolver() extends Actor { * Instruct all subtasks of a given `Task` to fail. * @param entry the target parent entry (that has failed) */ - private def FaultSubtasks(entry : TaskResolver.TaskEntry) : Unit = { - val ex : Throwable = new Exception(s"a task ${entry.task} had a subtask that failed") + private def FaultSubtasks(entry: TaskResolver.TaskEntry): Unit = { + val ex: Throwable = new Exception(s"a task ${entry.task} had a subtask that failed") entry.subtasks.foreach(subtask => { context.parent ! Broadcast(TaskResolver.Failure(subtask, ex)) //we have no clue where this subtask was hosted }) @@ -252,7 +269,7 @@ class TaskResolver() extends Actor { * @param task the work to be found * @param ex a `Throwable` that reports what happened to the work */ - private def OnAbort(task : Task, ex : Throwable) : Unit = { + private def OnAbort(task: Task, ex: Throwable): Unit = { TaskResolver.findTask(tasks.iterator, task) match { case Some(index) => PropagateAbort(index, ex) @@ -266,9 +283,9 @@ class TaskResolver() extends Actor { * @param index the index of the discovered work * @param ex a `Throwable` that reports what happened to the work */ - private def PropagateAbort(index : Int, ex : Throwable) : Unit = { - tasks(index).subtasks.foreach({subtask => - if(subtask.isComplete == Task.Resolution.Success) { + private def PropagateAbort(index: Int, ex: Throwable): Unit = { + tasks(index).subtasks.foreach({ subtask => + if (subtask.isComplete == Task.Resolution.Success) { trace(s"aborting task ${subtask.Description}") subtask.onAbort(ex) } @@ -280,34 +297,37 @@ class TaskResolver() extends Actor { * Find all tasks that have been running for too long and declare them as timed-out. * Run periodically, as long as work is being performed. */ - private def TimeoutCleanup() : Unit = { - TaskResolver.filterTimeout(tasks.indices.reverseIterator, tasks.toList, Task.TimeNow).foreach({index => - val ex : Throwable = new TimeoutException(s"a task ${tasks(index).task} has timed out") - tasks(index).task.onTimeout(ex) - PropagateAbort(index, ex) - }) + private def TimeoutCleanup(): Unit = { + TaskResolver + .filterTimeout(tasks.indices.reverseIterator, tasks.toList, Task.TimeNow) + .foreach({ index => + val ex: Throwable = new TimeoutException(s"a task ${tasks(index).task} has timed out") + tasks(index).task.onTimeout(ex) + PropagateAbort(index, ex) + }) } /** * Remove a `Task` that has reported completion. * @param index an index of work in the `List` of `Task`s */ - private def TaskCleanup(index : Int) : Unit = { + private def TaskCleanup(index: Int): Unit = { tasks(index).task.Cleanup() tasks.remove(index) - if(tasks.isEmpty) { + if (tasks.isEmpty) { timeoutCleanup.cancel() } } } object TaskResolver { + /** * Give this `TaskResolver` simple work to be performed. * @param task the work to be completed * @param subs other work that needs to be completed first */ - final case class GiveTask(task : Task, subs : List[GiveTask] = Nil) + final case class GiveTask(task: Task, subs: List[GiveTask] = Nil) /** * Pass around complex work to be performed. @@ -315,7 +335,7 @@ object TaskResolver { * @param subs other work that needs to be completed first * @param resolver the `TaskResolver` that will handle work that depends on the outcome of this work */ - private final case class GiveSubtask(task : Task, subs : List[GiveTask], resolver : ActorRef) + private final case class GiveSubtask(task: Task, subs: List[GiveTask], resolver: ActorRef) /** * Run a scheduled timed-out `Task` check. @@ -327,20 +347,20 @@ object TaskResolver { * @param obj a task object * @param ex information about what went wrong */ - private final case class Failure(obj : Task, ex : Throwable) + private final case class Failure(obj: Task, ex: Throwable) /** * A specific kind of `Success` that reports on which specific `Task` has reported Success where that `Task` was some other `Task`'s subtask. * @param obj a task object */ - private final case class CompletedSubtask(obj : Task) + private final case class CompletedSubtask(obj: Task) /** * A `Broadcast` message designed to find and remove a particular task from this series of routed `Actors`. * @param task the work to be removed * @param ex an explanation why the work is being aborted */ - private final case class AbortTask(task : Task, ex : Throwable) + private final case class AbortTask(task: Task, ex: Throwable) /** * Storage unit for a specific unit of work, plus extra information. @@ -349,20 +369,24 @@ object TaskResolver { * //@param isASubtask whether this work is intermediary or the last in a dependency chain * @param supertaskRef the `TaskResolver` that will handle work that depends on the outcome of this work */ - private final case class TaskEntry(task : Task, subtasks : List[Task] = Nil, supertaskRef : ActorRef = ActorRef.noSender) { - private var start : Long = 0L - private var isExecuting : Boolean = false + private final case class TaskEntry( + task: Task, + subtasks: List[Task] = Nil, + supertaskRef: ActorRef = ActorRef.noSender + ) { + private var start: Long = 0L + private var isExecuting: Boolean = false - def Start : Long = start + def Start: Long = start - def Executing : Boolean = isExecuting + def Executing: Boolean = isExecuting /** * Only execute each task once. * @param ref the `TaskResolver` currently handling this `Task`/`TaskEntry` */ - def Execute(ref : ActorRef) : Unit = { - if(!isExecuting) { + def Execute(ref: ActorRef): Unit = { + if (!isExecuting) { isExecuting = true start = Task.TimeNow task.Execute(ref) @@ -376,16 +400,18 @@ object TaskResolver { * @param resolution the target completion status * @return the first valid index when `TaskEntry` has its primary `Task` matching the completion status */ - @tailrec private def filterCompletion(iter : Iterator[Int], tasks : List[TaskEntry], resolution : Task.Resolution.Value) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def filterCompletion( + iter: Iterator[Int], + tasks: List[TaskEntry], + resolution: Task.Resolution.Value + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { - val index : Int = iter.next - if(tasks(index).task.isComplete == resolution) { + } else { + val index: Int = iter.next + if (tasks(index).task.isComplete == resolution) { Some(index) - } - else { + } else { filterCompletion(iter, tasks, resolution) } } @@ -398,15 +424,13 @@ object TaskResolver { * @return `true`, if all tasks match the complete status; * `false`, otherwise */ - @tailrec private def filterCompletionMatch(iter : Iterator[Task], resolution : Task.Resolution.Value) : Boolean = { - if(!iter.hasNext) { + @tailrec private def filterCompletionMatch(iter: Iterator[Task], resolution: Task.Resolution.Value): Boolean = { + if (!iter.hasNext) { true - } - else { - if(iter.next.isComplete == resolution) { + } else { + if (iter.next.isComplete == resolution) { filterCompletionMatch(iter, resolution) - } - else { + } else { false } } @@ -419,17 +443,22 @@ object TaskResolver { * @param indexList a persistent `List` of indices * @return the `List` of all valid `Task` indices */ - @tailrec private def filterTimeout(iter : Iterator[Int], tasks : List[TaskEntry], now : Long, indexList : List[Int] = Nil) : List[Int] = { - if(!iter.hasNext) { + @tailrec private def filterTimeout( + iter: Iterator[Int], + tasks: List[TaskEntry], + now: Long, + indexList: List[Int] = Nil + ): List[Int] = { + if (!iter.hasNext) { indexList - } - else { - val index : Int = iter.next - val taskEntry = tasks(index) - if(taskEntry.Executing && taskEntry.task.isComplete == Task.Resolution.Incomplete && now - taskEntry.Start > taskEntry.task.Timeout) { + } else { + val index: Int = iter.next + val taskEntry = tasks(index) + if ( + taskEntry.Executing && taskEntry.task.isComplete == Task.Resolution.Incomplete && now - taskEntry.Start > taskEntry.task.Timeout + ) { filterTimeout(iter, tasks, now, indexList :+ index) - } - else { + } else { filterTimeout(iter, tasks, now, indexList) } } @@ -443,15 +472,13 @@ object TaskResolver { * defaults to 0 * @return the index of the discovered task, or `None` */ - @tailrec private def findTask(iter : Iterator[TaskEntry], target : Task, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def findTask(iter: Iterator[TaskEntry], target: Task, index: Int = 0): Option[Int] = { + if (!iter.hasNext) { None - } - else { - if(iter.next.task == target) { + } else { + if (iter.next.task == target) { Some(index) - } - else { + } else { findTask(iter, target, index + 1) } } @@ -465,16 +492,14 @@ object TaskResolver { * defaults to 0 * @return the index of the discovered task, or `None` */ - @tailrec private def findTaskWithSubtask(iter : Iterator[TaskEntry], target : Task, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def findTaskWithSubtask(iter: Iterator[TaskEntry], target: Task, index: Int = 0): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val tEntry = iter.next - if(tEntry.subtasks.contains(target)) { + if (tEntry.subtasks.contains(target)) { Some(index) - } - else { + } else { findTaskWithSubtask(iter, target, index + 1) } } diff --git a/common/src/main/scala/net/psforever/objects/guid/actor/NumberPoolActor.scala b/common/src/main/scala/net/psforever/objects/guid/actor/NumberPoolActor.scala index ef4a99af..7381be54 100644 --- a/common/src/main/scala/net/psforever/objects/guid/actor/NumberPoolActor.scala +++ b/common/src/main/scala/net/psforever/objects/guid/actor/NumberPoolActor.scala @@ -12,15 +12,15 @@ import scala.util.{Failure, Success, Try} *
* Wrapping around the pool like this forces a FIFO order to requests for numbers from the pool. * This synchronization only lasts as long as this `Actor` is the only one for the given pool. - * In the distribution of globaly unique identifiers, this is extremely important. + * In the distribution of globally unique identifiers, this is extremely important. * `NumberPool`s are used as the primary determination of whether a number is available at any given moment. * The categorization of the pool is also important, though for a contextually-sensitive reason. * @param pool the `NumberPool` being manipulated */ -class NumberPoolActor(pool : NumberPool) extends Actor { +class NumberPoolActor(pool: NumberPool) extends Actor { private[this] val log = org.log4s.getLogger - def receive : Receive = { + def receive: Receive = { case NumberPoolActor.GetAnyNumber(id) => sender ! (pool.Get() match { case Success(value) => @@ -39,7 +39,8 @@ class NumberPoolActor(pool : NumberPool) extends Actor { case NumberPoolActor.ReturnNumber(number, id) => val result = pool.Return(number) - val ex : Option[Throwable] = if(!result) { Some(new Exception("number was not returned")) } else { None } + val ex: Option[Throwable] = if (!result) { Some(new Exception("number was not returned")) } + else { None } sender ! NumberPoolActor.ReturnNumberResult(number, ex, id) case msg => @@ -48,35 +49,36 @@ class NumberPoolActor(pool : NumberPool) extends Actor { } object NumberPoolActor { + /** * A message to invoke the current `NumberSelector`'s functionality. * @param id a potential identifier to associate this request */ - final case class GetAnyNumber(id : Option[Any] = None) + final case class GetAnyNumber(id: Option[Any] = None) /** * A message to invoke a `SpecificSelector` to acquire the specific `number`, if it is available in this pool. * @param number the pre-selected number * @param id a potential identifier to associate this request */ - final case class GetSpecificNumber(number : Int, id : Option[Any] = None) + final case class GetSpecificNumber(number: Int, id: Option[Any] = None) /** * A message to distribute the `number` that was drawn. * @param number the pre-selected number * @param id a potential identifier to associate this request */ - final case class GiveNumber(number : Int, id : Option[Any] = None) + final case class GiveNumber(number: Int, id: Option[Any] = None) - final case class NoNumber(ex : Throwable, id : Option[Any] = None) + final case class NoNumber(ex: Throwable, id: Option[Any] = None) /** * A message to invoke the `Return` functionality of the current `NumberSelector`. * @param number the number */ - final case class ReturnNumber(number : Int, id : Option[Any] = None) + final case class ReturnNumber(number: Int, id: Option[Any] = None) - final case class ReturnNumberResult(number : Int, ex : Option[Throwable], id : Option[Any] = None) + final case class ReturnNumberResult(number: Int, ex: Option[Throwable], id: Option[Any] = None) /** * Use the `SpecificSelector` on this pool to extract a specific object from the pool, if it is included and available. @@ -84,12 +86,12 @@ object NumberPoolActor { * @param number the number requested * @return the number requested, or an error */ - def GetSpecificNumber(pool : NumberPool, number : Int) : Try[Int] = { - val original : NumberSelector = pool.Selector - val specific : SpecificSelector = new SpecificSelector + def GetSpecificNumber(pool: NumberPool, number: Int): Try[Int] = { + val original: NumberSelector = pool.Selector + val specific: SpecificSelector = new SpecificSelector pool.Selector = specific specific.SelectionIndex = pool.Numbers.indexOf(number) - val out : Try[Int] = pool.Get() + val out: Try[Int] = pool.Get() pool.Selector = original out } diff --git a/common/src/main/scala/net/psforever/objects/guid/actor/Register.scala b/common/src/main/scala/net/psforever/objects/guid/actor/Register.scala index 3ba4807b..adc37280 100644 --- a/common/src/main/scala/net/psforever/objects/guid/actor/Register.scala +++ b/common/src/main/scala/net/psforever/objects/guid/actor/Register.scala @@ -14,15 +14,21 @@ import net.psforever.objects.entity.IdentifiableEntity * @param number the optional number pre-selected for registering this object * @param callback the optional custom callback for the messages from the success or failure conditions */ -final case class Register(obj : IdentifiableEntity, name : Option[String], number : Option[Int], callback : Option[ActorRef]) +final case class Register( + obj: IdentifiableEntity, + name: Option[String], + number: Option[Int], + callback: Option[ActorRef] +) object Register { + /** * Overloaded constructor, accepting just the object. * @param obj the object to be registered * @return a `Register` object */ - def apply(obj : IdentifiableEntity) : Register = { + def apply(obj: IdentifiableEntity): Register = { new Register(obj, None, None, None) } @@ -32,7 +38,7 @@ object Register { * @param callback the custom callback for the messages from the success or failure conditions * @return a `Register` object */ - def apply(obj : IdentifiableEntity, callback : ActorRef) : Register = { + def apply(obj: IdentifiableEntity, callback: ActorRef): Register = { new Register(obj, None, None, Some(callback)) } @@ -42,7 +48,7 @@ object Register { * @param number the pre-selected number * @return a `Register` object */ - def apply(obj : IdentifiableEntity, number : Int) : Register = { + def apply(obj: IdentifiableEntity, number: Int): Register = { new Register(obj, None, Some(number), None) } @@ -53,7 +59,7 @@ object Register { * @param callback the custom callback for the messages from the success or failure conditions * @return a `Register` object */ - def apply(obj : IdentifiableEntity, number : Int, callback : ActorRef) : Register = { + def apply(obj: IdentifiableEntity, number: Int, callback: ActorRef): Register = { new Register(obj, None, Some(number), Some(callback)) } @@ -63,7 +69,7 @@ object Register { * @param name the number pool name * @return a `Register` object */ - def apply(obj : IdentifiableEntity, name : String) : Register = { + def apply(obj: IdentifiableEntity, name: String): Register = { new Register(obj, Some(name), None, None) } @@ -74,7 +80,7 @@ object Register { * @param callback the custom callback for the messages from the success or failure conditions * @return a `Register` object */ - def apply(obj : IdentifiableEntity, name : String, callback : ActorRef) : Register = { + def apply(obj: IdentifiableEntity, name: String, callback: ActorRef): Register = { new Register(obj, Some(name), None, Some(callback)) } } diff --git a/common/src/main/scala/net/psforever/objects/guid/actor/UniqueNumberSystem.scala b/common/src/main/scala/net/psforever/objects/guid/actor/UniqueNumberSystem.scala index c90c529b..74f85a80 100644 --- a/common/src/main/scala/net/psforever/objects/guid/actor/UniqueNumberSystem.scala +++ b/common/src/main/scala/net/psforever/objects/guid/actor/UniqueNumberSystem.scala @@ -34,22 +34,24 @@ import scala.util.{Failure, Success} * @param poolActors a common mapping created from the `NumberPool`s in `guid`; * there is currently no check for this condition save for requests failing */ -class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActors : Map[String, ActorRef]) extends Actor { - /** Information about Register and Unregister requests that persists between messages to a specific `NumberPool`. */ - private val requestQueue : collection.mutable.LongMap[UniqueNumberSystem.GUIDRequest] = new collection.mutable.LongMap() - /** The current value for the next request entry's index. */ - private var index : Long = Long.MinValue - private[this] val log = org.log4s.getLogger +class UniqueNumberSystem(private val guid: NumberPoolHub, private val poolActors: Map[String, ActorRef]) extends Actor { - def receive : Receive = { + /** Information about Register and Unregister requests that persists between messages to a specific `NumberPool`. */ + private val requestQueue: collection.mutable.LongMap[UniqueNumberSystem.GUIDRequest] = + new collection.mutable.LongMap() + + /** The current value for the next request entry's index. */ + private var index: Long = Long.MinValue + private[this] val log = org.log4s.getLogger + + def receive: Receive = { case Register(obj, Some(pname), None, call) => val callback = call.getOrElse(sender()) - if(obj.HasGUID) { + if (obj.HasGUID) { AlreadyRegistered(obj, pname) callback ! Success(obj) - } - else { - val id : Long = index + } else { + val id: Long = index index += 1 requestQueue += id -> UniqueNumberSystem.GUIDRequest(obj, pname, callback) RegistrationProcess(pname, id) @@ -58,26 +60,30 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor //this message is automatically sent by NumberPoolActor case NumberPoolActor.GiveNumber(number, id) => id match { - case Some(nid : Long) => + case Some(nid: Long) => RegistrationProcess(requestQueue.remove(nid), number, nid) case _ => log.warn(s"received a number but there is no request to process it; returning number to pool") NoCallbackReturnNumber(number) //recovery? - //no callback is possible + //no callback is possible } //this message is automatically sent by NumberPoolActor case NumberPoolActor.NoNumber(ex, id) => id match { - case Some(nid : Long) => + case Some(nid: Long) => requestQueue.remove(nid) match { case Some(entry) => entry.replyTo ! Failure(ex) //ONLY callback that is possible case None => ; - log.warn(s"failed number request and no record of number request - $ex") //neither a successful request nor an entry of making the request + log.warn( + s"failed number request and no record of number request - $ex" + ) //neither a successful request nor an entry of making the request } case None => ; - log.warn(s"failed number request and no record of number request - $ex") //neither a successful request nor an entry of making the request + log.warn( + s"failed number request and no record of number request - $ex" + ) //neither a successful request nor an entry of making the request case _ => ; log.warn(s"unrecognized request $id accompanying a failed number request - $ex") } @@ -88,16 +94,15 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor val number = obj.GUID.guid guid.WhichPool(number) match { case Some(pname) => - val id : Long = index + val id: Long = index index += 1 requestQueue += id -> UniqueNumberSystem.GUIDRequest(obj, pname, callback) UnregistrationProcess(pname, number, id) case None => callback ! Failure(new Exception(s"the GUID of object $obj - $number - is not a part of this number pool")) } - } - catch { - case _ : Exception => + } catch { + case _: Exception => log.info(s"$obj is already unregistered") callback ! Success(obj) } @@ -105,28 +110,28 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor //this message is automatically sent by NumberPoolActor case NumberPoolActor.ReturnNumberResult(number, None, id) => id match { - case Some(nid : Long) => + case Some(nid: Long) => UnregistrationProcess(requestQueue.remove(nid), number, nid) case _ => log.error(s"returned a number but there is no request to process it; recovering the number from pool") NoCallbackGetSpecificNumber(number) //recovery? - //no callback is possible + //no callback is possible } //this message is automatically sent by NumberPoolActor case NumberPoolActor.ReturnNumberResult(number, Some(ex), id) => //if there is a problem when returning the number id match { - case Some(nid : Long) => + case Some(nid: Long) => requestQueue.remove(nid) match { case Some(entry) => entry.replyTo ! Failure(new Exception(s"for ${entry.target} with number $number, ${ex.getMessage}")) case None => ; log.error(s"could not find original request $nid that caused error $ex, but pool was $sender") - //no callback is possible + //no callback is possible } case _ => ; log.error(s"could not find original request $id that caused error $ex, but pool was $sender") - //no callback is possible + //no callback is possible } case msg => @@ -139,13 +144,15 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param poolName the pool to which the object is trying to register * @param id a potential identifier to associate this request */ - private def RegistrationProcess(poolName : String, id : Long) : Unit = { + private def RegistrationProcess(poolName: String, id: Long): Unit = { poolActors.get(poolName) match { case Some(pool) => pool ! NumberPoolActor.GetAnyNumber(Some(id)) case None => //do not log; use callback - requestQueue.remove(id).get.replyTo ! Failure(new Exception(s"can not find pool $poolName; nothing was registered")) + requestQueue.remove(id).get.replyTo ! Failure( + new Exception(s"can not find pool $poolName; nothing was registered") + ) } } @@ -155,13 +162,13 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param request the original request data * @param number the number that was drawn from a `NumberPool` */ - private def RegistrationProcess(request : Option[UniqueNumberSystem.GUIDRequest], number : Int, id : Long) : Unit = { + private def RegistrationProcess(request: Option[UniqueNumberSystem.GUIDRequest], number: Int, id: Long): Unit = { request match { case Some(entry) => processRegisterResult(entry, number) case None => log.error(s"returned a number but the rest of the request is missing (id:$id)") - if(id != Long.MinValue) { //check to ignore endless loop of error-catching + if (id != Long.MinValue) { //check to ignore endless loop of error-catching log.warn("returning number to pool") NoCallbackReturnNumber(number) //recovery? //no callback is possible @@ -175,7 +182,7 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param entry the original request data * @param number the number to use */ - private def processRegisterResult(entry : UniqueNumberSystem.GUIDRequest, number : Int) : Unit = { + private def processRegisterResult(entry: UniqueNumberSystem.GUIDRequest, number: Int): Unit = { val obj = entry.target guid.latterPartRegister(obj, number) match { case Success(_) => @@ -194,13 +201,15 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param number the number that was previously drawn from the specified `NumberPool` * @param id a potential identifier to associate this request */ - private def UnregistrationProcess(poolName : String, number : Int, id : Long) : Unit = { + private def UnregistrationProcess(poolName: String, number: Int, id: Long): Unit = { poolActors.get(poolName) match { case Some(pool) => pool ! NumberPoolActor.ReturnNumber(number, Some(id)) case None => //do not log; use callback - requestQueue.remove(id).get.replyTo ! Failure(new Exception(s"can not find pool $poolName; nothing was de-registered")) + requestQueue.remove(id).get.replyTo ! Failure( + new Exception(s"can not find pool $poolName; nothing was de-registered") + ) } } @@ -210,13 +219,13 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param request the original request data * @param number the number that was drawn from the `NumberPool` */ - private def UnregistrationProcess(request : Option[UniqueNumberSystem.GUIDRequest], number : Int, id : Long) : Unit = { + private def UnregistrationProcess(request: Option[UniqueNumberSystem.GUIDRequest], number: Int, id: Long): Unit = { request match { case Some(entry) => processUnregisterResult(entry, number) case None => log.error(s"returned a number but the rest of the request is missing (id:$id)") - if(id != Long.MinValue) { //check to ignore endless loop of error-catching + if (id != Long.MinValue) { //check to ignore endless loop of error-catching log.error("recovering the number from pool") NoCallbackGetSpecificNumber(number) //recovery? //no callback is possible @@ -230,7 +239,7 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param entry the original request data * @param number the number to use */ - private def processUnregisterResult(entry : UniqueNumberSystem.GUIDRequest, number : Int) : Unit = { + private def processUnregisterResult(entry: UniqueNumberSystem.GUIDRequest, number: Int): Unit = { val obj = entry.target guid.latterPartUnregister(number) match { case Some(_) => @@ -248,19 +257,18 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param obj the object that was trying to register * @param poolName the pool to which the object was trying to register */ - private def AlreadyRegistered(obj : IdentifiableEntity, poolName : String) : Unit = { + private def AlreadyRegistered(obj: IdentifiableEntity, poolName: String): Unit = { val msg = - guid.WhichPool(obj) match { - case Some(pname) => - if(poolName.equals(pname)) { - s"to pool $poolName" - } - else { - s"but to different pool $pname" - } - case None => - "but not to any pool known to this system" - } + guid.WhichPool(obj) match { + case Some(pname) => + if (poolName.equals(pname)) { + s"to pool $poolName" + } else { + s"but to different pool $pname" + } + case None => + "but not to any pool known to this system" + } log.warn(s"$obj already registered $msg") } @@ -268,7 +276,7 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * Access a specific `NumberPool` in a way that doesn't invoke a callback and reset one of its numbers. * @param number the number that was drawn from a `NumberPool` */ - private def NoCallbackReturnNumber(number : Int) : Unit = { + private def NoCallbackReturnNumber(number: Int): Unit = { guid.WhichPool(number) match { case Some(pname) => NoCallbackReturnNumber(number, pname) @@ -284,7 +292,7 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param poolName the `NumberPool` from which the `number` was drawn * @see `UniqueNumberSystem.UnregistrationProcess(Option[GUIDRequest], Int, Int)` */ - private def NoCallbackReturnNumber(number : Int, poolName : String) : Unit = { + private def NoCallbackReturnNumber(number: Int, poolName: String): Unit = { poolActors(poolName) ! NumberPoolActor.ReturnNumber(number, Some(Long.MinValue)) } @@ -292,7 +300,7 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * Access a specific `NumberPool` in a way that doesn't invoke a callback and claim one of its numbers. * @param number the number to be drawn from a `NumberPool` */ - private def NoCallbackGetSpecificNumber(number : Int) : Unit = { + private def NoCallbackGetSpecificNumber(number: Int): Unit = { guid.WhichPool(number) match { case Some(pname) => NoCallbackGetSpecificNumber(number, pname) @@ -308,19 +316,20 @@ class UniqueNumberSystem(private val guid : NumberPoolHub, private val poolActor * @param poolName the `NumberPool` from which the `number` is to be drawn * @see `UniqueNumberSystem.RegistrationProcess(Option[GUIDRequest], Int, Int)` */ - private def NoCallbackGetSpecificNumber(number : Int, poolName : String) : Unit = { + private def NoCallbackGetSpecificNumber(number: Int, poolName: String): Unit = { poolActors(poolName) ! NumberPoolActor.GetSpecificNumber(number, Some(Long.MinValue)) } } object UniqueNumberSystem { + /** * Persistent record of the important information between the time fo request and the time of reply. * @param target the object * @param targetPool the name of the `NumberPool` being used * @param replyTo the callback `ActorRef` */ - private final case class GUIDRequest(target : IdentifiableEntity, targetPool : String, replyTo : ActorRef) + private final case class GUIDRequest(target: IdentifiableEntity, targetPool: String, replyTo: ActorRef) /** * Transform `NumberPool`s into `NumberPoolActor`s and pair them with their name. @@ -328,9 +337,12 @@ object UniqueNumberSystem { * @param context used to create the `NumberPoolActor` instances * @return a `Map` of the pool names to the `ActorRef` created from the `NumberPool` */ - def AllocateNumberPoolActors(poolSource : NumberPoolHub)(implicit context : ActorContext) : Map[String, ActorRef] = { - poolSource.Pools.map({ case ((pname, pool)) => - pname -> context.actorOf(Props(classOf[NumberPoolActor], pool), pname) - }).toMap + def AllocateNumberPoolActors(poolSource: NumberPoolHub)(implicit context: ActorContext): Map[String, ActorRef] = { + poolSource.Pools + .map({ + case ((pname, pool)) => + pname -> context.actorOf(Props(classOf[NumberPoolActor], pool), pname) + }) + .toMap } } diff --git a/common/src/main/scala/net/psforever/objects/guid/actor/Unregister.scala b/common/src/main/scala/net/psforever/objects/guid/actor/Unregister.scala index 1258d998..c11c7212 100644 --- a/common/src/main/scala/net/psforever/objects/guid/actor/Unregister.scala +++ b/common/src/main/scala/net/psforever/objects/guid/actor/Unregister.scala @@ -14,10 +14,10 @@ import net.psforever.objects.entity.IdentifiableEntity * @param obj the mandatory object * @param callback the optional custom callback for the messages from the success or failure conditions */ -final case class Unregister(obj : IdentifiableEntity, callback : Option[ActorRef] = None) +final case class Unregister(obj: IdentifiableEntity, callback: Option[ActorRef] = None) object Unregister { - def apply(obj : IdentifiableEntity, callback : ActorRef) : Unregister = { + def apply(obj: IdentifiableEntity, callback: ActorRef): Unregister = { Unregister(obj, Some(callback)) } } diff --git a/common/src/main/scala/net/psforever/objects/guid/key/LoanedKey.scala b/common/src/main/scala/net/psforever/objects/guid/key/LoanedKey.scala index fe8d9776..96a1f582 100644 --- a/common/src/main/scala/net/psforever/objects/guid/key/LoanedKey.scala +++ b/common/src/main/scala/net/psforever/objects/guid/key/LoanedKey.scala @@ -9,33 +9,35 @@ import net.psforever.objects.guid.AvailabilityPolicy * @param guid the GUID represented by this indirect key * @param key a private reference to the original key */ -class LoanedKey(private val guid : Int, private val key : Monitor) { - def GUID : Int = guid +class LoanedKey(private val guid: Int, private val key: Monitor) { + def GUID: Int = guid - def Policy : AvailabilityPolicy.Value = key.Policy + def Policy: AvailabilityPolicy.Value = key.Policy - def Object : Option[IdentifiableEntity] = key.Object + def Object: Option[IdentifiableEntity] = key.Object /** * na * @param obj the object that should hold this GUID * @return `true`, if the assignment worked; `false`, otherwise */ - def Object_=(obj : IdentifiableEntity) : Option[IdentifiableEntity] = Object_=(Some(obj)) + def Object_=(obj: IdentifiableEntity): Option[IdentifiableEntity] = Object_=(Some(obj)) /** * na * @param obj the object that should hold this GUID * @return `true`, if the assignment worked; `false`, otherwise */ - def Object_=(obj : Option[IdentifiableEntity]) : Option[IdentifiableEntity] = { - if(key.Policy == AvailabilityPolicy.Leased || (key.Policy == AvailabilityPolicy.Restricted && key.Object.isEmpty)) { - if(key.Object.isDefined) { + def Object_=(obj: Option[IdentifiableEntity]): Option[IdentifiableEntity] = { + if ( + key.Policy == AvailabilityPolicy.Leased || (key.Policy == AvailabilityPolicy.Restricted && key.Object.isEmpty) + ) { + if (key.Object.isDefined) { key.Object.get.Invalidate() key.Object = None } key.Object = obj - if(obj.isDefined) { + if (obj.isDefined) { import net.psforever.types.PlanetSideGUID obj.get.GUID = PlanetSideGUID(guid) } @@ -43,4 +45,3 @@ class LoanedKey(private val guid : Int, private val key : Monitor) { key.Object } } - diff --git a/common/src/main/scala/net/psforever/objects/guid/key/Monitor.scala b/common/src/main/scala/net/psforever/objects/guid/key/Monitor.scala index 61d4cda1..bf232857 100644 --- a/common/src/main/scala/net/psforever/objects/guid/key/Monitor.scala +++ b/common/src/main/scala/net/psforever/objects/guid/key/Monitor.scala @@ -5,9 +5,9 @@ import net.psforever.objects.entity.IdentifiableEntity import net.psforever.objects.guid.AvailabilityPolicy trait Monitor { - def Policy : AvailabilityPolicy.Value + def Policy: AvailabilityPolicy.Value - def Object : Option[IdentifiableEntity] + def Object: Option[IdentifiableEntity] - def Object_=(objct : Option[IdentifiableEntity]) : Option[IdentifiableEntity] + def Object_=(objct: Option[IdentifiableEntity]): Option[IdentifiableEntity] } diff --git a/common/src/main/scala/net/psforever/objects/guid/key/SecureKey.scala b/common/src/main/scala/net/psforever/objects/guid/key/SecureKey.scala index 694df257..e3aecf7d 100644 --- a/common/src/main/scala/net/psforever/objects/guid/key/SecureKey.scala +++ b/common/src/main/scala/net/psforever/objects/guid/key/SecureKey.scala @@ -8,11 +8,11 @@ import net.psforever.objects.guid.AvailabilityPolicy * @param guid the number (globally unique identifier) * @param key a reference to the monitor */ -final class SecureKey(private val guid : Int, private val key : Monitor) { - def GUID : Int = guid +final class SecureKey(private val guid: Int, private val key: Monitor) { + def GUID: Int = guid - def Policy : AvailabilityPolicy.Value = key.Policy + def Policy: AvailabilityPolicy.Value = key.Policy import net.psforever.objects.entity.IdentifiableEntity - def Object : Option[IdentifiableEntity] = key.Object -} \ No newline at end of file + def Object: Option[IdentifiableEntity] = key.Object +} diff --git a/common/src/main/scala/net/psforever/objects/guid/pool/ExclusivePool.scala b/common/src/main/scala/net/psforever/objects/guid/pool/ExclusivePool.scala index 87f1050d..6b690424 100644 --- a/common/src/main/scala/net/psforever/objects/guid/pool/ExclusivePool.scala +++ b/common/src/main/scala/net/psforever/objects/guid/pool/ExclusivePool.scala @@ -5,28 +5,27 @@ import net.psforever.objects.guid.selector.NumberSelector import scala.util.{Failure, Success, Try} -class ExclusivePool(override val numbers : List[Int]) extends SimplePool(numbers) { - private val pool : Array[Int] = Array.ofDim[Int](numbers.length) +class ExclusivePool(override val numbers: List[Int]) extends SimplePool(numbers) { + private val pool: Array[Int] = Array.ofDim[Int](numbers.length) numbers.indices.foreach(i => { pool(i) = i }) - override def Count : Int = pool.count(value => value == -1) + override def Count: Int = pool.count(value => value == -1) - override def Selector_=(slctr : NumberSelector) : Unit = { + override def Selector_=(slctr: NumberSelector): Unit = { super.Selector_=(slctr) slctr.Format(pool) } - override def Get() : Try[Int] = { - val index : Int = Selector.Get(pool) - if(index == -1) { + override def Get(): Try[Int] = { + val index: Int = Selector.Get(pool) + if (index == -1) { Failure(new Exception("there are no numbers available in the pool")) - } - else { + } else { Success(numbers(index)) } } - override def Return(number : Int) : Boolean = { + override def Return(number: Int): Boolean = { val index = Numbers.indexOf(number) index != -1 && Selector.Return(index, pool) } diff --git a/common/src/main/scala/net/psforever/objects/guid/pool/GenericPool.scala b/common/src/main/scala/net/psforever/objects/guid/pool/GenericPool.scala index 9a4b1aa2..4ea78a5c 100644 --- a/common/src/main/scala/net/psforever/objects/guid/pool/GenericPool.scala +++ b/common/src/main/scala/net/psforever/objects/guid/pool/GenericPool.scala @@ -6,52 +6,50 @@ import net.psforever.objects.guid.selector.{NumberSelector, SpecificSelector} import scala.collection.mutable import scala.util.{Failure, Success, Try} -class GenericPool(private val hub : mutable.LongMap[String], private val max : Int) extends NumberPool { - val numbers : mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() - private val selector : SpecificSelector = new SpecificSelector +class GenericPool(private val hub: mutable.LongMap[String], private val max: Int) extends NumberPool { + val numbers: mutable.ListBuffer[Int] = mutable.ListBuffer[Int]() + private val selector: SpecificSelector = new SpecificSelector selector.SelectionIndex = -1 - def Numbers : List[Int] = numbers.toList + def Numbers: List[Int] = numbers.toList - def Count : Int = numbers.length + def Count: Int = numbers.length - def Selector : NumberSelector = selector + def Selector: NumberSelector = selector - def Selector_=(slctr : NumberSelector) : Unit = { } //intentionally blank + def Selector_=(slctr: NumberSelector): Unit = {} //intentionally blank - def Get() : Try[Int] = { + def Get(): Try[Int] = { val specific = selector.SelectionIndex selector.SelectionIndex = -1 //clear - if(specific == -1) { + if (specific == -1) { val number = GenericPool.rand(hub.keys.toList, max) hub += number.toLong -> "generic" numbers += number Success(number) - } - else if(hub.get(specific).isEmpty) { + } else if (hub.get(specific).isEmpty) { hub += specific.toLong -> "generic" numbers += specific Success(specific) - } - else { + } else { Failure(new Exception("selector was not initialized properly, or no numbers available in the pool")) } } - def Return(number : Int) : Boolean = { - val index : Int = numbers.indexOf(number) - if(index > -1) { + def Return(number: Int): Boolean = { + val index: Int = numbers.indexOf(number) + if (index > -1) { numbers.remove(index) hub -= number true - } - else { + } else { false } } } object GenericPool { + /** * Get some number that is not accounted for in any other fixed pool, making it available in this generic one.
*
@@ -65,24 +63,24 @@ object GenericPool { * @param domainSize how many numbers can be supported * @return midpoint of the largest distance between any two of the existing numbers, or -1 */ - private def rand(list : List[Long], domainSize : Int) : Int = { - if(list.size < domainSize) { + private def rand(list: List[Long], domainSize: Int): Int = { + if (list.size < domainSize) { //get a list of all assigned numbers with an appended min and max - val sortedList : List[Long] = -1L +: list.sorted :+ domainSize.toLong + val sortedList: List[Long] = -1L +: list.sorted :+ domainSize.toLong //compare the delta between every two entries and find the start of that greatest delta comparison - var maxDelta : Long = -1 - var maxDeltaIndex = -1 - for(index <- 0 until (sortedList.length - 1)) { + var maxDelta: Long = -1 + var maxDeltaIndex = -1 + for (index <- 0 until (sortedList.length - 1)) { val curr = sortedList(index + 1) - sortedList(index) - if(curr > maxDelta) { + if (curr > maxDelta) { maxDelta = curr maxDeltaIndex = index } } //find half of the distance between the two numbers with the greatest delta value - if(maxDelta > 1) { ((sortedList(maxDeltaIndex + 1) + sortedList(maxDeltaIndex)) / 2f).toInt } else { -1 } - } - else { + if (maxDelta > 1) { ((sortedList(maxDeltaIndex + 1) + sortedList(maxDeltaIndex)) / 2f).toInt } + else { -1 } + } else { -1 } } diff --git a/common/src/main/scala/net/psforever/objects/guid/pool/NumberPool.scala b/common/src/main/scala/net/psforever/objects/guid/pool/NumberPool.scala index c054b3b7..dfdab241 100644 --- a/common/src/main/scala/net/psforever/objects/guid/pool/NumberPool.scala +++ b/common/src/main/scala/net/psforever/objects/guid/pool/NumberPool.scala @@ -6,15 +6,15 @@ import net.psforever.objects.guid.selector.NumberSelector import scala.util.Try trait NumberPool { - def Numbers : List[Int] + def Numbers: List[Int] - def Count : Int + def Count: Int - def Selector : NumberSelector + def Selector: NumberSelector - def Selector_=(slctr : NumberSelector) : Unit + def Selector_=(slctr: NumberSelector): Unit - def Get() : Try[Int] + def Get(): Try[Int] - def Return(number : Int) : Boolean + def Return(number: Int): Boolean } diff --git a/common/src/main/scala/net/psforever/objects/guid/pool/SimplePool.scala b/common/src/main/scala/net/psforever/objects/guid/pool/SimplePool.scala index fa2f1fb7..45df5206 100644 --- a/common/src/main/scala/net/psforever/objects/guid/pool/SimplePool.scala +++ b/common/src/main/scala/net/psforever/objects/guid/pool/SimplePool.scala @@ -5,31 +5,30 @@ import net.psforever.objects.guid.selector.{NumberSelector, StrictInOrderSelecto import scala.util.{Success, Try} -class SimplePool(val numbers : List[Int]) extends NumberPool { - if(numbers.count(_ < 0) > 0) { +class SimplePool(val numbers: List[Int]) extends NumberPool { + if (numbers.count(_ < 0) > 0) { throw new IllegalArgumentException("negative numbers not allowed in number pool") - } - else if (numbers.length != numbers.toSet.size) { + } else if (numbers.length != numbers.toSet.size) { throw new IllegalArgumentException("duplicate numbers not allowed in number pool") } - private var selector : NumberSelector = new StrictInOrderSelector + private var selector: NumberSelector = new StrictInOrderSelector - def Numbers : List[Int] = numbers + def Numbers: List[Int] = numbers - def Count : Int = 0 + def Count: Int = 0 - def Selector : NumberSelector = selector + def Selector: NumberSelector = selector - def Selector_=(slctr : NumberSelector) : Unit = { + def Selector_=(slctr: NumberSelector): Unit = { selector = slctr } - def Get() : Try[Int] = { - val ary = numbers.indices.toArray + def Get(): Try[Int] = { + val ary = numbers.indices.toArray val index = selector.Get(ary) selector.Return(index, ary) //reset, for the benefit of the selector Success(numbers(index)) } - def Return(number : Int) : Boolean = numbers.indexOf(number) > -1 + def Return(number: Int): Boolean = numbers.indexOf(number) > -1 } diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/NumberSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/NumberSelector.scala index d414561d..8c75d2f5 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/NumberSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/NumberSelector.scala @@ -11,14 +11,16 @@ package net.psforever.objects.guid.selector * (Recommendation: unless doing something fancy, just use -1.) */ abstract class NumberSelector { + /** The index for the selector when performing a number selection action, then modified to the "next" index. */ - protected var selectionIndex : Int = 0 + protected var selectionIndex: Int = 0 + /** The index for the selector when performing a number return action, then modified for the "next" index. */ - protected var ret : Int = 0 + protected var ret: Int = 0 - def SelectionIndex : Int = selectionIndex + def SelectionIndex: Int = selectionIndex - def ReturnIndex : Int = ret + def ReturnIndex: Int = ret /** * Accept a provided `pool` and select the next number.
@@ -36,7 +38,7 @@ abstract class NumberSelector { * @param ary the `Array` of `Int` numbers from which to draw a new number * @return an `Int` number */ - def Get(ary : Array[Int]) : Int + def Get(ary: Array[Int]): Int /** * Give a number back to a specific collection following the principles of this selector.
@@ -51,13 +53,12 @@ abstract class NumberSelector { * @param ary the `Array` of `Int` numbers to which the number is to be returned * @return `true`, if this return was successful; `false`, otherwise */ - def Return(number : Int, ary : Array[Int]) : Boolean = { - if(ary(number) == -1) { + def Return(number: Int, ary: Array[Int]): Boolean = { + if (ary(number) == -1) { ary(number) = number ret = number true - } - else { + } else { false } } @@ -71,8 +72,11 @@ abstract class NumberSelector { * The `ret` index is set to index zero. * @param ary the `Array` of `Int` numbers */ - def Format(ary : Array[Int]) : Unit = { - val sorted = ary.sortWith( (b, a) => if(b == -1) { a > b } else { false } ) + def Format(ary: Array[Int]): Unit = { + val sorted = ary.sortWith((b, a) => + if (b == -1) { a > b } + else { false } + ) sorted.indices.foreach(n => ary(n) = sorted(n)) selectionIndex = sorted.count(_ == -1) ret = 0 diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/OpportunisticSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/OpportunisticSelector.scala index 3405dd31..37b1bd24 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/OpportunisticSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/OpportunisticSelector.scala @@ -8,18 +8,18 @@ package net.psforever.objects.guid.selector * The search wraps back around to the zero index to the same start index if necessary. */ class OpportunisticSelector extends NumberSelector { - override def Get(ary : Array[Int]) : Int = { - val start : Int = selectionIndex - if(ary(selectionIndex) == -1) { - val len : Int = ary.length + override def Get(ary: Array[Int]): Int = { + val start: Int = selectionIndex + if (ary(selectionIndex) == -1) { + val len: Int = ary.length do { selectionIndex = (selectionIndex + 1) % len - } - while(ary(selectionIndex) == -1 && selectionIndex != start) + } while (ary(selectionIndex) == -1 && selectionIndex != start) } - val out : Int = ary(selectionIndex) + val out: Int = ary(selectionIndex) ary(selectionIndex) = -1 - selectionIndex = (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative + selectionIndex = + (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative out } } diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/RandomSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/RandomSelector.scala index 0e30607f..c22dadb2 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/RandomSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/RandomSelector.scala @@ -22,7 +22,7 @@ package net.psforever.objects.guid.selector * @see `RandomSequenceSelector` */ class RandomSelector extends NumberSelector { - private val rand : scala.util.Random = new scala.util.Random(System.currentTimeMillis()) + private val rand: scala.util.Random = new scala.util.Random(System.currentTimeMillis()) /** * Accept a provided `pool` and select the next number.
@@ -31,16 +31,15 @@ class RandomSelector extends NumberSelector { * @param ary the `Array` of `Int` numbers from which to draw a new number * @return an `Int` number */ - override def Get(ary : Array[Int]) : Int = { - if(ary.length > selectionIndex) { - val selection : Int = rand.nextInt(ary.length - selectionIndex) + selectionIndex - val out : Int = ary(selection) + override def Get(ary: Array[Int]): Int = { + if (ary.length > selectionIndex) { + val selection: Int = rand.nextInt(ary.length - selectionIndex) + selectionIndex + val out: Int = ary(selection) ary(selection) = ary(selectionIndex) ary(selectionIndex) = -1 selectionIndex = selectionIndex + (out >> 31) + 1 //(out >> 31): 0 if positive or zero, -1 if negative out - } - else { + } else { -1 } } @@ -55,13 +54,12 @@ class RandomSelector extends NumberSelector { * @param ary the `Array` of `Int` numbers to which the number is to be returned * @return `true`, if this return was successful; `false`, otherwise */ - override def Return(number : Int, ary : Array[Int]) : Boolean = { - if(selectionIndex > 0) { + override def Return(number: Int, ary: Array[Int]): Boolean = { + if (selectionIndex > 0) { ary(selectionIndex - 1) = number selectionIndex -= 1 true - } - else { + } else { false } } diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/RandomSequenceSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/RandomSequenceSelector.scala index c4ccae1c..2be92cbf 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/RandomSequenceSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/RandomSequenceSelector.scala @@ -28,20 +28,22 @@ package net.psforever.objects.guid.selector * @see `RandomSelector` */ class RandomSequenceSelector extends NumberSelector { - private val rand : scala.util.Random = new scala.util.Random(System.currentTimeMillis()) + private val rand: scala.util.Random = new scala.util.Random(System.currentTimeMillis()) /** * Accept a provided "pool of numbers" and select the next number. * @param ary the `Array` of `Int` numbers from which to draw a new number * @return an `Int` number */ - override def Get(ary : Array[Int]) : Int = { - val last : Int = if(ret <= selectionIndex) { ary.length } else { ret } - val selection : Int = rand.nextInt(last - selectionIndex) + selectionIndex - val out : Int = ary(selection) + override def Get(ary: Array[Int]): Int = { + val last: Int = if (ret <= selectionIndex) { ary.length } + else { ret } + val selection: Int = rand.nextInt(last - selectionIndex) + selectionIndex + val out: Int = ary(selection) ary(selection) = ary(selectionIndex) ary(selectionIndex) = -1 - selectionIndex = (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative + selectionIndex = + (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative out } @@ -51,13 +53,12 @@ class RandomSequenceSelector extends NumberSelector { * @param ary the `Array` of `Int` numbers to which the number is to be returned * @return `true`, if this return was successful; `false`, otherwise */ - override def Return(number : Int, ary : Array[Int]) : Boolean = { - if(ary(ret) == -1) { + override def Return(number: Int, ary: Array[Int]): Boolean = { + if (ary(ret) == -1) { ary(ret) = number ret = (ret + 1) % ary.length true - } - else { + } else { false } } diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/SpecificSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/SpecificSelector.scala index 4b5ca43d..80f093fa 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/SpecificSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/SpecificSelector.scala @@ -5,12 +5,13 @@ package net.psforever.objects.guid.selector * Get a specific number from a pool of numbers. */ class SpecificSelector extends NumberSelector { + /** * Change the future selection index to match the number the user wants. * Call `Get` to complete process. * @param number the number */ - def SelectionIndex_=(number : Int) : Unit = { + def SelectionIndex_=(number: Int): Unit = { selectionIndex = number } @@ -19,13 +20,12 @@ class SpecificSelector extends NumberSelector { * @param ary the `Array` of `Int` numbers from which to draw a new number * @return an `Int` number */ - override def Get(ary : Array[Int]) : Int = { - if(-1 < selectionIndex && selectionIndex < ary.length) { + override def Get(ary: Array[Int]): Int = { + if (-1 < selectionIndex && selectionIndex < ary.length) { val out = ary(selectionIndex) ary(selectionIndex) = -1 out - } - else { + } else { -1 } } @@ -40,10 +40,10 @@ class SpecificSelector extends NumberSelector { * The `ret` index is set to index zero. * @param ary the `Array` of `Int` numbers */ - override def Format(ary : Array[Int]) : Unit = { + override def Format(ary: Array[Int]): Unit = { val sorted = Array.fill(ary.length)(-1) ary.foreach(n => { - if(n > -1) { + if (n > -1) { sorted(n) = n } }) diff --git a/common/src/main/scala/net/psforever/objects/guid/selector/StrictInOrderSelector.scala b/common/src/main/scala/net/psforever/objects/guid/selector/StrictInOrderSelector.scala index c0d0196b..8fbe79e4 100644 --- a/common/src/main/scala/net/psforever/objects/guid/selector/StrictInOrderSelector.scala +++ b/common/src/main/scala/net/psforever/objects/guid/selector/StrictInOrderSelector.scala @@ -7,10 +7,11 @@ package net.psforever.objects.guid.selector * Do not progress if a number is not available when requested. */ class StrictInOrderSelector extends NumberSelector { - override def Get(ary : Array[Int]) : Int = { - val out : Int = ary(selectionIndex) + override def Get(ary: Array[Int]): Int = { + val out: Int = ary(selectionIndex) ary(selectionIndex) = -1 - selectionIndex = (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative + selectionIndex = + (selectionIndex + (out >> 31) + 1) % ary.length //(out >> 31): 0 if positive or zero, -1 if negative out } @@ -24,10 +25,10 @@ class StrictInOrderSelector extends NumberSelector { * The `ret` index is set to index zero. * @param ary the `Array` of `Int` numbers */ - override def Format(ary : Array[Int]) : Unit = { + override def Format(ary: Array[Int]): Unit = { val sorted = Array.fill(ary.length)(-1) ary.foreach(n => { - if(n > -1) { + if (n > -1) { sorted(n) = n } }) diff --git a/common/src/main/scala/net/psforever/objects/guid/source/Key.scala b/common/src/main/scala/net/psforever/objects/guid/source/Key.scala index 7aeeef37..97ac04b1 100644 --- a/common/src/main/scala/net/psforever/objects/guid/source/Key.scala +++ b/common/src/main/scala/net/psforever/objects/guid/source/Key.scala @@ -6,19 +6,19 @@ import net.psforever.objects.guid.AvailabilityPolicy import net.psforever.objects.guid.key.Monitor private class Key extends Monitor { - private var policy : AvailabilityPolicy.Value = AvailabilityPolicy.Available - private var obj : Option[IdentifiableEntity] = None + private var policy: AvailabilityPolicy.Value = AvailabilityPolicy.Available + private var obj: Option[IdentifiableEntity] = None - def Policy : AvailabilityPolicy.Value = policy + def Policy: AvailabilityPolicy.Value = policy - def Policy_=(pol : AvailabilityPolicy.Value) : AvailabilityPolicy.Value = { + def Policy_=(pol: AvailabilityPolicy.Value): AvailabilityPolicy.Value = { policy = pol Policy } - def Object : Option[IdentifiableEntity] = obj + def Object: Option[IdentifiableEntity] = obj - def Object_=(objct : Option[IdentifiableEntity]) : Option[IdentifiableEntity] = { + def Object_=(objct: Option[IdentifiableEntity]): Option[IdentifiableEntity] = { obj = objct Object } diff --git a/common/src/main/scala/net/psforever/objects/guid/source/LimitedNumberSource.scala b/common/src/main/scala/net/psforever/objects/guid/source/LimitedNumberSource.scala index 856323f9..197ac17d 100644 --- a/common/src/main/scala/net/psforever/objects/guid/source/LimitedNumberSource.scala +++ b/common/src/main/scala/net/psforever/objects/guid/source/LimitedNumberSource.scala @@ -17,34 +17,33 @@ import scala.collection.mutable * @throws IllegalArgumentException if `max` is less than zero (therefore the count of generated numbers is at most zero) * @throws java.lang.NegativeArraySizeException if the count of numbers generated due to max is negative */ -class LimitedNumberSource(max : Int) extends NumberSource { - if(max < 0) { +class LimitedNumberSource(max: Int) extends NumberSource { + if (max < 0) { throw new IllegalArgumentException(s"non-negative integers only, not $max") } - private val ary : Array[Key] = Array.ofDim[Key](max + 1) + private val ary: Array[Key] = Array.ofDim[Key](max + 1) (0 to max).foreach(x => { ary(x) = new Key }) - private var allowRestrictions : Boolean = true + private var allowRestrictions: Boolean = true - def Size : Int = ary.length + def Size: Int = ary.length - def CountAvailable : Int = ary.count(key => key.Policy == AvailabilityPolicy.Available) + def CountAvailable: Int = ary.count(key => key.Policy == AvailabilityPolicy.Available) - def CountUsed : Int = ary.count(key => key.Policy != AvailabilityPolicy.Available) + def CountUsed: Int = ary.count(key => key.Policy != AvailabilityPolicy.Available) - def Get(number : Int) : Option[SecureKey] = { - if(Test(number)) { + def Get(number: Int): Option[SecureKey] = { + if (Test(number)) { Some(new SecureKey(number, ary(number))) - } - else { + } else { None } } - def Available(number : Int) : Option[LoanedKey] = { - var out : Option[LoanedKey] = None - if(Test(number)) { - val key : Key = ary(number) - if(key.Policy == AvailabilityPolicy.Available) { + def Available(number: Int): Option[LoanedKey] = { + var out: Option[LoanedKey] = None + if (Test(number)) { + val key: Key = ary(number) + if (key.Policy == AvailabilityPolicy.Available) { key.Policy = AvailabilityPolicy.Leased out = Some(new LoanedKey(number, key)) } @@ -57,11 +56,11 @@ class LimitedNumberSource(max : Int) extends NumberSource { * @param number the number * @return any object previously using this number */ - def Return(number : Int) : Option[IdentifiableEntity] = { - var out : Option[IdentifiableEntity] = None - if(Test(number)) { - val existing : Key = ary(number) - if(existing.Policy == AvailabilityPolicy.Leased) { + def Return(number: Int): Option[IdentifiableEntity] = { + var out: Option[IdentifiableEntity] = None + if (Test(number)) { + val existing: Key = ary(number) + if (existing.Policy == AvailabilityPolicy.Leased) { out = existing.Object existing.Policy = AvailabilityPolicy.Available existing.Object = None @@ -77,27 +76,26 @@ class LimitedNumberSource(max : Int) extends NumberSource { * @return the wrapped `Monitor` * @throws ArrayIndexOutOfBoundsException if the requested number is above or below the range */ - def Restrict(number : Int) : Option[LoanedKey] = { - if(allowRestrictions && Test(number)) { - val key : Key = ary(number) + def Restrict(number: Int): Option[LoanedKey] = { + if (allowRestrictions && Test(number)) { + val key: Key = ary(number) key.Policy = AvailabilityPolicy.Restricted Some(new LoanedKey(number, key)) - } - else { - None + } else { + None } } - def FinalizeRestrictions : List[Int] = { + def FinalizeRestrictions: List[Int] = { allowRestrictions = false ary.zipWithIndex.filter(entry => entry._1.Policy == AvailabilityPolicy.Restricted).map(entry => entry._2).toList } - def Clear() : List[IdentifiableEntity] = { - val outList : mutable.ListBuffer[IdentifiableEntity] = mutable.ListBuffer[IdentifiableEntity]() - for(x <- ary.indices) { + def Clear(): List[IdentifiableEntity] = { + val outList: mutable.ListBuffer[IdentifiableEntity] = mutable.ListBuffer[IdentifiableEntity]() + for (x <- ary.indices) { ary(x).Policy = AvailabilityPolicy.Available - if(ary(x).Object.isDefined) { + if (ary(x).Object.isDefined) { outList += ary(x).Object.get ary(x).Object = None } @@ -107,7 +105,7 @@ class LimitedNumberSource(max : Int) extends NumberSource { } object LimitedNumberSource { - def apply(max : Int) : LimitedNumberSource = { + def apply(max: Int): LimitedNumberSource = { new LimitedNumberSource(max) } } diff --git a/common/src/main/scala/net/psforever/objects/guid/source/NumberSource.scala b/common/src/main/scala/net/psforever/objects/guid/source/NumberSource.scala index 8e1fec4e..4c37a6e5 100644 --- a/common/src/main/scala/net/psforever/objects/guid/source/NumberSource.scala +++ b/common/src/main/scala/net/psforever/objects/guid/source/NumberSource.scala @@ -18,37 +18,38 @@ import net.psforever.objects.guid.key.{LoanedKey, SecureKey} * The purpose of a `NumberSource` is to help facilitate globally unique identifiers (GUID, pl. GUIDs). */ trait NumberSource { + /** * The count of numbers allocated to this source. * @return the count */ - def Size : Int + def Size: Int /** * The count of numbers that can still be drawn. * @return the count */ - def CountAvailable : Int + def CountAvailable: Int /** * The count of numbers that can not be drawn. * @return the count */ - def CountUsed : Int + def CountUsed: Int /** * Is this number a member of this number source? * @param number the number * @return `true`, if it is a member; `false`, otherwise */ - def Test(number : Int) : Boolean = -1 < number && number < Size + def Test(number: Int): Boolean = -1 < number && number < Size /** * Produce an un-modifiable wrapper for the `Monitor` for this number. * @param number the number * @return the wrapped `Monitor` */ - def Get(number : Int) : Option[SecureKey] + def Get(number: Int): Option[SecureKey] //def GetAll(list : List[Int]) : List[SecureKey] @@ -60,14 +61,14 @@ trait NumberSource { * @param number the number * @return the wrapped `Monitor`, or `None` */ - def Available(number : Int) : Option[LoanedKey] + def Available(number: Int): Option[LoanedKey] /** * Consume a wrapped `Monitor` and release its number from its previous assignment/use. * @param monitor the `Monitor` * @return any object previously using this `Monitor` */ - def Return(monitor : SecureKey) : Option[IdentifiableEntity] = { + def Return(monitor: SecureKey): Option[IdentifiableEntity] = { Return(monitor.GUID) } @@ -76,7 +77,7 @@ trait NumberSource { * @param monitor the `Monitor` * @return any object previously using this `Monitor` */ - def Return(monitor : LoanedKey) : Option[IdentifiableEntity] = { + def Return(monitor: LoanedKey): Option[IdentifiableEntity] = { Return(monitor.GUID) } @@ -85,7 +86,7 @@ trait NumberSource { * @param number the number * @return any object previously using this number */ - def Return(number : Int) : Option[IdentifiableEntity] + def Return(number: Int): Option[IdentifiableEntity] /** * Produce a modifiable wrapper for the `Monitor` for this number, only if the number has not been used. @@ -93,20 +94,21 @@ trait NumberSource { * @param number the number * @return the wrapped `Monitor` */ - def Restrict(number : Int) : Option[LoanedKey] + def Restrict(number: Int): Option[LoanedKey] /** * Numbers from this source may not longer be marked as `Restricted`. * @return the `List` of all numbers that have been restricted */ - def FinalizeRestrictions : List[Int] + def FinalizeRestrictions: List[Int] import net.psforever.objects.entity.IdentifiableEntity + /** * Reset all number `Monitor`s so that their underlying number is not longer treated as assigned. * Perform some level of housecleaning to ensure that all dependencies are resolved in some manner. * This is the only way to free `Monitors` that are marked as `Restricted`. * @return a `List` of assignments maintained by all the currently-used number `Monitors` */ - def Clear() : List[IdentifiableEntity] + def Clear(): List[IdentifiableEntity] } diff --git a/common/src/main/scala/net/psforever/objects/inventory/Container.scala b/common/src/main/scala/net/psforever/objects/inventory/Container.scala index 15257bd0..16700c27 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/Container.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/Container.scala @@ -17,6 +17,7 @@ import scala.util.Try * lockers (contents of the player's fifth slot). */ trait Container { + /** * A(n imperfect) reference to a generalized pool of the contained objects. * Having access to all of the available positions is not required. @@ -24,7 +25,7 @@ trait Container { * The `GridInventory` returned by this accessor is also an implementation of `Container`. * @see `VisibleSlots` */ - def Inventory : GridInventory + def Inventory: GridInventory /** * Given an object, attempt to locate its slot. @@ -32,7 +33,7 @@ trait Container { * @param obj the `Equipment` object * @return the index of the `EquipmentSlot`, or `None` */ - def Find(obj : Equipment) : Option[Int] = Find(obj.GUID) + def Find(obj: Equipment): Option[Int] = Find(obj.GUID) /** * Given globally unique identifier, if the object using it is stowed, attempt to locate its slot. @@ -40,11 +41,11 @@ trait Container { * @param guid the GUID of the `Equipment` * @return the index of the `EquipmentSlot`, or `None` */ - def Find(guid : PlanetSideGUID) : Option[Int] = Inventory.Find(guid) + def Find(guid: PlanetSideGUID): Option[Int] = Inventory.Find(guid) - def Fit(obj : Equipment) : Option[Int] = Fit(obj.Definition.Tile) + def Fit(obj: Equipment): Option[Int] = Fit(obj.Definition.Tile) - def Fit(tile : InventoryTile) : Option[Int] = Inventory.Fit(tile) + def Fit(tile: InventoryTile): Option[Int] = Inventory.Fit(tile) /** * A(n imperfect) reference to a generalized pool of the contained objects.
@@ -54,7 +55,7 @@ trait Container { * @see `Inventory` * @return all of the affected slot indices */ - def VisibleSlots : Set[Int] + def VisibleSlots: Set[Int] /** * Access to all stowable positions on this object by index.
@@ -67,11 +68,10 @@ trait Container { * @param slotNum an index * @return the searchable position identified by that index */ - def Slot(slotNum : Int) : EquipmentSlot = { - if(Inventory.Offset <= slotNum && slotNum <= Inventory.LastIndex) { + def Slot(slotNum: Int): EquipmentSlot = { + if (Inventory.Offset <= slotNum && slotNum <= Inventory.LastIndex) { Inventory.Slot(slotNum) - } - else { + } else { OffhandEquipmentSlot.BlockedSlot } } @@ -95,7 +95,7 @@ trait Container { * @param height the height of the serachable space * @return a list of objects that have been encountered within the searchable space */ - def Collisions(index : Int, width : Int, height : Int) : Try[List[InventoryItem]] = + def Collisions(index: Int, width: Int, height: Int): Try[List[InventoryItem]] = Inventory.CheckCollisionsVar(index, width, height) } @@ -171,7 +171,7 @@ trait Container { // true // case Success(_ :: Nil) => //one item to swap // true -// case Success(_) | scala.util.Failure(_) => +// case Success(_) | Failure(_) => // false //abort when too many items at destination or other failure case // } // }) { diff --git a/common/src/main/scala/net/psforever/objects/inventory/GridInventory.scala b/common/src/main/scala/net/psforever/objects/inventory/GridInventory.scala index 2038d5aa..40de2f8c 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/GridInventory.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/GridInventory.scala @@ -28,22 +28,22 @@ import scala.util.{Failure, Success, Try} * Use of the `Array` only is hitherto referred as "using the inventory as a grid." */ class GridInventory extends Container { - private var width : Int = 1 - private var height : Int = 1 - private var offset : Int = 0 //the effective index of the first cell in the inventory where offset >= 0 + private var width: Int = 1 + private var height: Int = 1 + private var offset: Int = 0 //the effective index of the first cell in the inventory where offset >= 0 /* key - an integer (not especially meaningful beyond being unique); value - the card that represents the stowed item */ - private val items : concurrent.TrieMap[Int, InventoryItem] = concurrent.TrieMap[Int, InventoryItem]() - private val entryIndex : AtomicInteger = new AtomicInteger(0) - private var grid : Array[Int] = Array.fill[Int](1)(-1) + private val items: concurrent.TrieMap[Int, InventoryItem] = concurrent.TrieMap[Int, InventoryItem]() + private val entryIndex: AtomicInteger = new AtomicInteger(0) + private var grid: Array[Int] = Array.fill[Int](1)(-1) - def Items : List[InventoryItem] = items.values.toList + def Items: List[InventoryItem] = items.values.toList - def Width : Int = width + def Width: Int = width - def Height : Int = height + def Height: Int = height - def Offset : Int = offset + def Offset: Int = offset /** * Change the grid index offset value. @@ -51,22 +51,22 @@ class GridInventory extends Container { * @return the current offset value * @throws IndexOutOfBoundsException if the index is negative */ - def Offset_=(fset : Int) : Int = { - if(fset < 0) { + def Offset_=(fset: Int): Int = { + if (fset < 0) { throw new IndexOutOfBoundsException(s"can not set index offset to negative number - $fset") } offset = fset Offset } - def Size : Int = items.size + def Size: Int = items.size /** * Capacity is a measure how many squares in the grid inventory are unused (value of -1). * It does not guarantee the cells are distributed in any configuration conductive to item stowing. * @return the number of free cells */ - def Capacity : Int = { + def Capacity: Int = { TotalCapacity - items.values.foldLeft(0)((cnt, item) => cnt + (item.obj.Tile.Width * item.obj.Tile.Height)) } @@ -74,16 +74,16 @@ class GridInventory extends Container { * The total number of cells in this inventory. * @return the width multiplied by the height (`grid.length`, which is the same thing) */ - def TotalCapacity : Int = grid.length + def TotalCapacity: Int = grid.length /** * The index of the last cell in this inventory. * @return same as `Offset` plus the total number of cells in this inventory minus 1 */ - def LastIndex : Int = Offset + TotalCapacity - 1 + def LastIndex: Int = Offset + TotalCapacity - 1 - override def Find(guid : PlanetSideGUID) : Option[Int] = { - items.values.find({ case InventoryItem(obj, _) => obj.HasGUID && obj.GUID == guid}) match { + override def Find(guid: PlanetSideGUID): Option[Int] = { + items.values.find({ case InventoryItem(obj, _) => obj.HasGUID && obj.GUID == guid }) match { case Some(InventoryItem(_, index)) => Some(index) case None => @@ -96,12 +96,11 @@ class GridInventory extends Container { * @param slot the cell index * @return an `EquipmentSlot` that contains whatever `Equipment` was stored in `slot` */ - override def Slot(slot : Int) : EquipmentSlot = { + override def Slot(slot: Int): EquipmentSlot = { val actualSlot = slot - offset - if(actualSlot < 0 || actualSlot > grid.length) { + if (actualSlot < 0 || actualSlot > grid.length) { throw new IndexOutOfBoundsException(s"requested indices not in bounds of grid inventory - $actualSlot") - } - else { + } else { new InventoryEquipmentSlot(slot, this) } } @@ -118,8 +117,8 @@ class GridInventory extends Container { * @param item the `Equipment` to be tested * @return a `List` of GUID values for all existing contents that this item would overlap if inserted */ - def CheckCollisions(start : Int, item : Equipment) : Try[List[Int]] = { - val tile : InventoryTile = item.Tile + def CheckCollisions(start: Int, item: Equipment): Try[List[Int]] = { + val tile: InventoryTile = item.Tile CheckCollisions(start, tile.Width, tile.Height) } @@ -130,11 +129,10 @@ class GridInventory extends Container { * @param h the height of the `Equipment` to be tested * @return a `List` of GUID values for all existing contents that this item would overlap if inserted */ - def CheckCollisions(start : Int, w : Int, h : Int) : Try[List[Int]] = { - if(items.isEmpty) { + def CheckCollisions(start: Int, w: Int, h: Int): Try[List[Int]] = { + if (items.isEmpty) { Success(List.empty[Int]) - } - else { + } else { CheckCollisionsVar(start, w, h) match { case Success(list) => Success(list.map({ f => f.obj.GUID.guid })) @@ -156,11 +154,10 @@ class GridInventory extends Container { * @param h the height of the `Equipment` to be tested * @return a `List` of existing items that an item of this scale would overlap if inserted */ - def CheckCollisionsVar(start : Int, w : Int, h : Int) : Try[List[InventoryItem]] = { - if(items.size < w * h) { + def CheckCollisionsVar(start: Int, w: Int, h: Int): Try[List[InventoryItem]] = { + if (items.size < w * h) { CheckCollisionsAsList(start, w, h) - } - else { + } else { CheckCollisionsAsGrid(start, w, h) } } @@ -176,28 +173,35 @@ class GridInventory extends Container { * @return a `List` of existing items that an item of this scale would overlap if inserted * @throws IndexOutOfBoundsException if the region extends outside of the grid boundaries */ - def CheckCollisionsAsList(start : Int, w : Int, h : Int) : Try[List[InventoryItem]] = { - val actualSlot = start - offset - val startx : Int = actualSlot % width - val starty : Int = actualSlot / width - val startw : Int = startx + w - 1 - val starth : Int = starty + h - 1 - if(actualSlot < 0 || actualSlot >= grid.length || startw >= width || starth >= height) { - val bounds : String = if(startx < 0) { "left" } else if(startw >= width) { "right" } else { "bottom" } - Failure(new IndexOutOfBoundsException(s"requested region escapes the $bounds edge of the grid inventory - $startx + $w, $starty + $h")) - } - else { - val collisions : mutable.Set[InventoryItem] = mutable.Set[InventoryItem]() + def CheckCollisionsAsList(start: Int, w: Int, h: Int): Try[List[InventoryItem]] = { + val actualSlot = start - offset + val startx: Int = actualSlot % width + val starty: Int = actualSlot / width + val startw: Int = startx + w - 1 + val starth: Int = starty + h - 1 + if (actualSlot < 0 || actualSlot >= grid.length || startw >= width || starth >= height) { + val bounds: String = if (startx < 0) { "left" } + else if (startw >= width) { "right" } + else { "bottom" } + Failure( + new IndexOutOfBoundsException( + s"requested region escapes the $bounds edge of the grid inventory - $startx + $w, $starty + $h" + ) + ) + } else { + val collisions: mutable.Set[InventoryItem] = mutable.Set[InventoryItem]() items - .map { case (_, item : InventoryItem) => item } - .foreach { item : InventoryItem => - val actualItemStart : Int = item.start - offset - val itemx : Int = actualItemStart % width - val itemy : Int = actualItemStart / width - val tile = item.obj.Tile - val clipsOnX : Boolean = if(itemx < startx) { itemx + tile.Width > startx } else { itemx <= startw } - val clipsOnY : Boolean = if(itemy < starty) { itemy + tile.Height > starty } else { itemy <= starth } - if(clipsOnX && clipsOnY) { + .map { case (_, item: InventoryItem) => item } + .foreach { item: InventoryItem => + val actualItemStart: Int = item.start - offset + val itemx: Int = actualItemStart % width + val itemy: Int = actualItemStart / width + val tile = item.obj.Tile + val clipsOnX: Boolean = if (itemx < startx) { itemx + tile.Width > startx } + else { itemx <= startw } + val clipsOnY: Boolean = if (itemy < starty) { itemy + tile.Height > starty } + else { itemy <= starth } + if (clipsOnX && clipsOnY) { collisions += item } } @@ -216,36 +220,42 @@ class GridInventory extends Container { * @return a `List` of existing items that an item of this scale would overlap if inserted * @throws IndexOutOfBoundsException if the region extends outside of the grid boundaries */ - def CheckCollisionsAsGrid(start : Int, w : Int, h : Int) : Try[List[InventoryItem]] = { + def CheckCollisionsAsGrid(start: Int, w: Int, h: Int): Try[List[InventoryItem]] = { val actualSlot = start - offset - if(actualSlot < 0 || actualSlot >= grid.length || (actualSlot % width) + w > width || (actualSlot / width) + h > height) { - val startx : Int = actualSlot % width - val starty : Int = actualSlot / width - val startw : Int = startx + w - 1 - val bounds : String = if(startx < 0) { "left" } else if(startw >= width) { "right" } else { "bottom" } - Failure(new IndexOutOfBoundsException(s"requested region escapes the $bounds edge of the grid inventory - $startx + $w, $starty + $h")) - } - else { - val collisions : mutable.Set[InventoryItem] = mutable.Set[InventoryItem]() - var curr = actualSlot - val fixedItems = items.toMap - val fixedGrid = grid.toList + if ( + actualSlot < 0 || actualSlot >= grid.length || (actualSlot % width) + w > width || (actualSlot / width) + h > height + ) { + val startx: Int = actualSlot % width + val starty: Int = actualSlot / width + val startw: Int = startx + w - 1 + val bounds: String = if (startx < 0) { "left" } + else if (startw >= width) { "right" } + else { "bottom" } + Failure( + new IndexOutOfBoundsException( + s"requested region escapes the $bounds edge of the grid inventory - $startx + $w, $starty + $h" + ) + ) + } else { + val collisions: mutable.Set[InventoryItem] = mutable.Set[InventoryItem]() + var curr = actualSlot + val fixedItems = items.toMap + val fixedGrid = grid.toList try { - for(_ <- 0 until h) { - for(col <- 0 until w) { + for (_ <- 0 until h) { + for (col <- 0 until w) { val itemIndex = fixedGrid(curr + col) - if(itemIndex > -1) { + if (itemIndex > -1) { collisions += fixedItems(itemIndex) } } curr += width } Success(collisions.toList) - } - catch { - case e : NoSuchElementException => + } catch { + case e: NoSuchElementException => Failure(InventoryDisarrayException(s"inventory contained old item data", e)) - case e : Exception => + case e: Exception => Failure(e) } } @@ -257,11 +267,11 @@ class GridInventory extends Container { * @param tile the dimensions of the blank space * @return the grid index of the upper left corner where equipment to which the `tile` belongs should be placed */ - override def Fit(tile : InventoryTile) : Option[Int] = { - val tWidth = tile.Width + override def Fit(tile: InventoryTile): Option[Int] = { + val tWidth = tile.Width val tHeight = tile.Height val gridIter = (0 until (grid.length - (tHeight - 1) * width)) - .filter(cell => grid(cell) == -1 && (width - cell%width >= tWidth)) + .filter(cell => grid(cell) == -1 && (width - cell % width >= tWidth)) .iterator recursiveFitTest(gridIter, tWidth, tHeight) } @@ -273,11 +283,10 @@ class GridInventory extends Container { * @param tHeight the height of the blank space * @return the grid index of the upper left corner where equipment to which the `tile` belongs should be placed */ - @tailrec private def recursiveFitTest(cells : Iterator[Int], tWidth : Int, tHeight : Int) : Option[Int] = { - if(!cells.hasNext) { + @tailrec private def recursiveFitTest(cells: Iterator[Int], tWidth: Int, tHeight: Int): Option[Int] = { + if (!cells.hasNext) { None - } - else { + } else { val index = cells.next + offset CheckCollisionsAsGrid(index, tWidth, tHeight) match { case Success(Nil) => @@ -299,7 +308,7 @@ class GridInventory extends Container { * @param value the value to set all the cells in the defined region; * defaults to -1 (which is "nothing") */ - def SetCells(start : Int, w : Int, h : Int, value : Int = -1) : Unit = { + def SetCells(start: Int, w: Int, h: Int, value: Int = -1): Unit = { grid = SetCellsNoOffset(start - offset, w, h, value) } @@ -315,13 +324,17 @@ class GridInventory extends Container { * @return a copy of the inventory as a grid, with the anticipated modifications * @throws IndexOutOfBoundsException if the region extends outside of the grid boundaries */ - def SetCellsNoOffset(start : Int, w : Int, h : Int, value : Int = -1) : Array[Int] = { - if(start < 0 || start > grid.length || (start % width) + w - 1 > width || (start / width) + h- 1 > height) { - val startx : Int = start % width - val starty : Int = start / width - val startw : Int = startx + w - 1 - val bounds : String = if(startx < 0) { "left" } else if(startw >= width) { "right" } else { "bottom" } - throw new IndexOutOfBoundsException(s"requested region escapes the $bounds of the grid inventory - $startx + $w, $starty + $h") + def SetCellsNoOffset(start: Int, w: Int, h: Int, value: Int = -1): Array[Int] = { + if (start < 0 || start > grid.length || (start % width) + w - 1 > width || (start / width) + h - 1 > height) { + val startx: Int = start % width + val starty: Int = start / width + val startw: Int = startx + w - 1 + val bounds: String = if (startx < 0) { "left" } + else if (startw >= width) { "right" } + else { "bottom" } + throw new IndexOutOfBoundsException( + s"requested region escapes the $bounds of the grid inventory - $startx + $w, $starty + $h" + ) } SetCellsOnlyNoOffset(start, w, h, value) } @@ -337,11 +350,11 @@ class GridInventory extends Container { * defaults to -1 (which is "nothing") * @return a copy of the inventory as a grid, with the anticipated modifications */ - private def SetCellsOnlyNoOffset(start : Int, w : Int, h : Int, value : Int = -1) : Array[Int] = { - val out : Array[Int] = grid.clone() - var curr = start - for(_ <- 0 until h) { - for(col <- 0 until w) { + private def SetCellsOnlyNoOffset(start: Int, w: Int, h: Int, value: Int = -1): Array[Int] = { + val out: Array[Int] = grid.clone() + var curr = start + for (_ <- 0 until h) { + for (col <- 0 until w) { out(curr + col) = value } curr += width @@ -349,8 +362,8 @@ class GridInventory extends Container { out } - def Insert(start : Int, obj : Equipment) : Boolean = { - val key : Int = entryIndex.getAndIncrement() + def Insert(start: Int, obj: Equipment): Boolean = { + val key: Int = entryIndex.getAndIncrement() items.get(key) match { case None => //no redundant insertions Insertion_CheckCollisions(start, obj, key) @@ -366,7 +379,7 @@ class GridInventory extends Container { * @param key the internal numeric identifier for this item * @return the success or the failure of the insertion process */ - def Insertion_CheckCollisions(start : Int, obj : Equipment, key : Int) : Boolean = { + def Insertion_CheckCollisions(start: Int, obj: Equipment, key: Int): Boolean = { CheckCollisions(start, obj) match { case Success(Nil) => val tile = obj.Tile @@ -385,7 +398,7 @@ class GridInventory extends Container { * @param obj the `Equipment` item to be inserted * @return whether the insertion succeeded */ - def InsertQuickly(start : Int, obj : Equipment) : Boolean = InsertQuickly(start, obj, entryIndex.getAndIncrement()) + def InsertQuickly(start: Int, obj: Equipment): Boolean = InsertQuickly(start, obj, entryIndex.getAndIncrement()) /** * Just insert an item into the inventory without checking for item collisions. @@ -396,30 +409,29 @@ class GridInventory extends Container { * @param key the internal numeric identifier for this item * @return whether the insertion succeeded */ - private def InsertQuickly(start : Int, obj : Equipment, key : Int) : Boolean = { + private def InsertQuickly(start: Int, obj: Equipment, key: Int): Boolean = { try { - val tile = obj.Tile + val tile = obj.Tile val updated = SetCellsNoOffset(start - offset, tile.Width, tile.Height, key) - val card = InventoryItem(obj, start) + val card = InventoryItem(obj, start) items += key -> card grid = updated true - } - catch { - case _ : Exception => + } catch { + case _: Exception => false } } - def +=(kv : (Int, Equipment)) : Boolean = Insert(kv._1, kv._2) + def +=(kv: (Int, Equipment)): Boolean = Insert(kv._1, kv._2) - def Remove(index : Int) : Boolean = { + def Remove(index: Int): Boolean = { val keyVal = index - offset - if(keyVal > -1 && keyVal < grid.length) { + if (keyVal > -1 && keyVal < grid.length) { val key = grid(index - offset) items.get(key) match { case Some(item) => - val tile = item.obj.Tile + val tile = item.obj.Tile val updated = SetCellsNoOffset(item.start - offset, tile.Width, tile.Height) items.remove(key) grid = updated @@ -427,19 +439,18 @@ class GridInventory extends Container { case None => false } - } - else { + } else { false } } - def -=(index : Int) : Boolean = Remove(index) + def -=(index: Int): Boolean = Remove(index) - def Remove(guid : PlanetSideGUID) : Boolean = { + def Remove(guid: PlanetSideGUID): Boolean = { recursiveFindIdentifiedObject(items.keys.iterator, guid) match { case Some(key) => - val item = items(key) - val tile = item.obj.Tile + val item = items(key) + val tile = item.obj.Tile val updated = SetCellsNoOffset(item.start - offset, tile.Width, tile.Height) items.remove(key) grid = updated @@ -449,18 +460,16 @@ class GridInventory extends Container { } } - def -=(guid : PlanetSideGUID) : Boolean = Remove(guid) + def -=(guid: PlanetSideGUID): Boolean = Remove(guid) - @tailrec private def recursiveFindIdentifiedObject(iter : Iterator[Int], guid : PlanetSideGUID) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursiveFindIdentifiedObject(iter: Iterator[Int], guid: PlanetSideGUID): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val index = iter.next - if(items(index).obj.GUID == guid) { + if (items(index).obj.GUID == guid) { Some(index) - } - else { + } else { recursiveFindIdentifiedObject(iter, guid) } } @@ -471,7 +480,7 @@ class GridInventory extends Container { * @param guid the GUID * @return the discovered object, or `None` */ - def hasItem(guid : PlanetSideGUID) : Option[Equipment] = { + def hasItem(guid: PlanetSideGUID): Option[Equipment] = { recursiveFindIdentifiedObject(items.keys.iterator, guid) match { case Some(index) => Some(items(index).obj) @@ -491,11 +500,11 @@ class GridInventory extends Container { * @see `InventoryDisarrayException` * @return the number of stale object references found and corrected */ - def ElementsOnGridMatchList() : Int = { - var misses : Int = 0 + def ElementsOnGridMatchList(): Int = { + var misses: Int = 0 grid = grid.map { case n if items.get(n).nonEmpty => n - case -1 => -1 + case -1 => -1 case _ => misses += 1 -1 @@ -513,14 +522,14 @@ class GridInventory extends Container { * @see `recursiveRelatedListCollisions` * @return a list of item overlap collision combinations */ - def ElementsInListCollideInGrid() : List[List[InventoryItem]] = { - val testGrid : mutable.Map[Int, List[Int]] = mutable.Map[Int, List[Int]]() + def ElementsInListCollideInGrid(): List[List[InventoryItem]] = { + val testGrid: mutable.Map[Int, List[Int]] = mutable.Map[Int, List[Int]]() //on average this will run the same number of times as capacity items.foreach { case (itemId, item) => var start = item.start - val wide = item.obj.Tile.Width - val high = item.obj.Tile.Height + val wide = item.obj.Tile.Width + val high = item.obj.Tile.Height //allocate all of the slots that comprise this item's tile (0 until high).foreach { _ => (0 until wide).foreach { w => @@ -553,22 +562,22 @@ class GridInventory extends Container { * @param updated an list of overlapping elements not filtered out of the original list * @return the final list of unique overlapping element combinations */ - @tailrec private def recursiveRelatedListCollisions(original : Iterator[List[Int]], updated : List[List[Int]]) : List[List[Int]] = { - if(original.hasNext) { - val target = original.next + @tailrec private def recursiveRelatedListCollisions( + original: Iterator[List[Int]], + updated: List[List[Int]] + ): List[List[Int]] = { + if (original.hasNext) { + val target = original.next val filtered = updated.filterNot(item => item.equals(target)) - val newupdated = if(filtered.size == updated.size) { + val newupdated = if (filtered.size == updated.size) { updated //the lists are the same size, nothing was filtered - } - else if(updated.exists(test => test.containsSlice(target) && !test.equals(target))) { + } else if (updated.exists(test => test.containsSlice(target) && !test.equals(target))) { filtered //some element that is not the target element contains the target element as a subset - } - else { + } else { filtered :+ target //restore one entry for the target element } recursiveRelatedListCollisions(original, newupdated) - } - else { + } else { updated } } @@ -577,7 +586,7 @@ class GridInventory extends Container { * Clear the inventory by removing all of its items. * @return a `List` of the previous items in the inventory as their `InventoryItemData` tiles */ - def Clear() : List[InventoryItem] = { + def Clear(): List[InventoryItem] = { val list = items.values.toList items.clear entryIndex.set(0) @@ -592,8 +601,8 @@ class GridInventory extends Container { * @param h the new height * @throws IllegalArgumentException if the new size to be set is zero or less */ - def Resize(w : Int, h : Int) : Unit = { - if(w < 1 || h < 1) { + def Resize(w: Int, h: Int): Unit = { + if (w < 1 || h < 1) { throw new IllegalArgumentException("area of inventory space must not be < 1") } width = w @@ -601,17 +610,18 @@ class GridInventory extends Container { grid = Array.fill[Int](w * h)(-1) } - def VisibleSlots : Set[Int] = Set.empty[Int] + def VisibleSlots: Set[Int] = Set.empty[Int] def Inventory = this } object GridInventory { + /** * Overloaded constructor. * @return a `GridInventory` object */ - def apply() : GridInventory = { + def apply(): GridInventory = { new GridInventory() } @@ -621,7 +631,7 @@ object GridInventory { * @param height the vertical size of the inventory * @return a `GridInventory` object */ - def apply(width : Int, height : Int) : GridInventory = { + def apply(width: Int, height: Int): GridInventory = { val obj = new GridInventory() obj.Resize(width, height) obj @@ -634,7 +644,7 @@ object GridInventory { * @param offset the effective index of the first cell in the inventory * @return a `GridInventory` object */ - def apply(width : Int, height : Int, offset : Int) : GridInventory = { + def apply(width: Int, height: Int, offset: Int): GridInventory = { val obj = new GridInventory() obj.Resize(width, height) obj.Offset = offset @@ -652,7 +662,11 @@ object GridInventory { * the first `List` is composed of `InventoryItemData`s that will be reinserted at the new `start` index; * the second list is composed of `Equipment` that will not be put back into the inventory */ - def recoverInventory(list : List[InventoryItem], inv : GridInventory, predicate : (InventoryItem, InventoryItem) => Boolean = StandardScaleSort) : (List[InventoryItem], List[Equipment]) = { + def recoverInventory( + list: List[InventoryItem], + inv: GridInventory, + predicate: (InventoryItem, InventoryItem) => Boolean = StandardScaleSort + ): (List[InventoryItem], List[Equipment]) = { sortKnapsack( list.sortWith(predicate), inv.width, @@ -666,14 +680,13 @@ object GridInventory { /** * The default predicate used by the knapsack sort algorithm. */ - final val StandardScaleSort : (InventoryItem, InventoryItem) => Boolean = + final val StandardScaleSort: (InventoryItem, InventoryItem) => Boolean = (a, b) => { val aTile = a.obj.Tile val bTile = b.obj.Tile - if(aTile.Width == bTile.Width) { + if (aTile.Width == bTile.Width) { aTile.Height > bTile.Height - } - else { + } else { aTile.Width > bTile.Width } } @@ -688,7 +701,7 @@ object GridInventory { * @param width the horizontal length of the inventory * @param height the vertical length of the inventory */ - private def sortKnapsack(list : List[InventoryItem], width : Int, height : Int) : Unit = { + private def sortKnapsack(list: List[InventoryItem], width: Int, height: Int): Unit = { val root = new KnapsackNode(0, 0, width, height) list.foreach(item => { findKnapsackSpace(root, item.obj.Tile.Width, item.obj.Tile.Height) match { @@ -714,20 +727,20 @@ object GridInventory { * @param width the width * @param height the height */ - private class KnapsackNode(var x : Int, var y : Int, var width : Int, var height : Int) { - private var used : Boolean = false - var down : Option[KnapsackNode] = None - var right : Option[KnapsackNode] = None + private class KnapsackNode(var x: Int, var y: Int, var width: Int, var height: Int) { + private var used: Boolean = false + var down: Option[KnapsackNode] = None + var right: Option[KnapsackNode] = None - def Used : Boolean = used + def Used: Boolean = used /** * Initialize the `down` and `right` children of this node. */ - def Split() : Unit = { + def Split(): Unit = { used = true - down = Some(new KnapsackNode(0,0,0,0)) - right = Some(new KnapsackNode(0,0,0,0)) + down = Some(new KnapsackNode(0, 0, 0, 0)) + right = Some(new KnapsackNode(0, 0, 0, 0)) } /** @@ -739,7 +752,7 @@ object GridInventory { * @param nw the new width * @param nh the new height */ - def apply(nx : Int, ny : Int, nw : Int, nh : Int) : Unit = { + def apply(nx: Int, ny: Int, nw: Int, nh: Int): Unit = { x = nx y = ny width = nw @@ -754,14 +767,12 @@ object GridInventory { * @param height height of the element * @return the selected node */ - private def findKnapsackSpace(node : KnapsackNode, width : Int, height : Int) : Option[KnapsackNode] = { - if(node.Used) { + private def findKnapsackSpace(node: KnapsackNode, width: Int, height: Int): Option[KnapsackNode] = { + if (node.Used) { findKnapsackSpace(node.right.get, width, height).orElse(findKnapsackSpace(node.down.get, width, height)) - } - else if(width <= node.width && height <= node.height) { + } else if (width <= node.width && height <= node.height) { Some(node) - } - else { + } else { None } } @@ -776,22 +787,23 @@ object GridInventory { * @param width width of the element * @param height height of the element */ - private def splitKnapsackSpace(node : KnapsackNode, width : Int, height : Int) : Unit = { + private def splitKnapsackSpace(node: KnapsackNode, width: Int, height: Int): Unit = { node.Split() node.down.get(node.x, node.y + height, node.width, node.height - height) node.right.get(node.x + width, node.y, node.width - width, height) } - def toPrintedList(inv : GridInventory) : String = { + def toPrintedList(inv: GridInventory): String = { val list = new StringBuilder list.append("\n") - inv.Items.zipWithIndex.foreach { case (InventoryItem(obj, start), index) => - list.append(s"${index+1}: ${obj.Definition.Name}@${obj.GUID} -> $start\n") + inv.Items.zipWithIndex.foreach { + case (InventoryItem(obj, start), index) => + list.append(s"${index + 1}: ${obj.Definition.Name}@${obj.GUID} -> $start\n") } list.toString } - def toPrintedGrid(inv : GridInventory) : String = { + def toPrintedGrid(inv: GridInventory): String = { new StringBuilder().append("\n").append(inv.grid.toSeq.grouped(inv.width).mkString("\n")).toString } } diff --git a/common/src/main/scala/net/psforever/objects/inventory/InventoryDisarrayException.scala b/common/src/main/scala/net/psforever/objects/inventory/InventoryDisarrayException.scala index d3280207..2ea5584f 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/InventoryDisarrayException.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/InventoryDisarrayException.scala @@ -11,15 +11,16 @@ package net.psforever.objects.inventory * @param cause any prior `Exception` that was thrown then wrapped in this one */ final case class InventoryDisarrayException(private val message: String = "", private val cause: Throwable) - extends Exception(message, cause) + extends Exception(message, cause) object InventoryDisarrayException { + /** * Overloaded constructor that constructs the `Exception` without nesting any prior `Exceptions`. * Just the custom error message is included. * @param message the explanation of why the exception was thrown * @return an `InventoryDisarrayException` object */ - def apply(message : String) : InventoryDisarrayException = + def apply(message: String): InventoryDisarrayException = InventoryDisarrayException(message, None.orNull) } diff --git a/common/src/main/scala/net/psforever/objects/inventory/InventoryEquipmentSlot.scala b/common/src/main/scala/net/psforever/objects/inventory/InventoryEquipmentSlot.scala index e7096a11..9fcc282e 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/InventoryEquipmentSlot.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/InventoryEquipmentSlot.scala @@ -28,14 +28,15 @@ import scala.util.{Failure, Success} * 'r' is the corner of any 2x2 item that can be removed ('x' is a potential affected edge), * and 'i' is the region checked for a 2x2 insertion into `slot`. */ -class InventoryEquipmentSlot(private val slot : Int, private val inv : GridInventory) extends OffhandEquipmentSlot(EquipmentSize.Inventory) { - override def Equipment_=(assignEquipment : Option[Equipment]) : Option[Equipment] = { +class InventoryEquipmentSlot(private val slot: Int, private val inv: GridInventory) + extends OffhandEquipmentSlot(EquipmentSize.Inventory) { + override def Equipment_=(assignEquipment: Option[Equipment]): Option[Equipment] = { assignEquipment match { case Some(equip) => val tile = equip.Definition.Tile inv.CheckCollisionsVar(slot, tile.Width, tile.Height) match { case Success(Nil) => inv.InsertQuickly(slot, equip) - case _ => ; //TODO we should handle the exception + case _ => ; //TODO we should handle the exception } case None => @@ -44,8 +45,8 @@ class InventoryEquipmentSlot(private val slot : Int, private val inv : GridInven Equipment } - override def Equipment : Option[Equipment] = { - inv.CheckCollisionsAsGrid(slot,1,1) match { + override def Equipment: Option[Equipment] = { + inv.CheckCollisionsAsGrid(slot, 1, 1) match { case Success(list) => list.headOption match { case Some(found) => diff --git a/common/src/main/scala/net/psforever/objects/inventory/InventoryItem.scala b/common/src/main/scala/net/psforever/objects/inventory/InventoryItem.scala index de346c03..60dd86c6 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/InventoryItem.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/InventoryItem.scala @@ -11,17 +11,17 @@ import net.psforever.types.PlanetSideGUID * @param obj the item being placed into the inventory grid * @param start the index of the upper-left square of the item's tile */ -class InventoryItem(val obj : Equipment, var start : Int = 0) { +class InventoryItem(val obj: Equipment, var start: Int = 0) { //TODO eventually move this object from storing the item directly to just storing its GUID? - def GUID : PlanetSideGUID = obj.GUID + def GUID: PlanetSideGUID = obj.GUID } object InventoryItem { - def apply(obj : Equipment, start : Int) : InventoryItem = { + def apply(obj: Equipment, start: Int): InventoryItem = { new InventoryItem(obj, start) } - def unapply(entry : InventoryItem) : Option[(Equipment, Int)] = { + def unapply(entry: InventoryItem): Option[(Equipment, Int)] = { Some((entry.obj, entry.start)) } } diff --git a/common/src/main/scala/net/psforever/objects/inventory/InventoryTile.scala b/common/src/main/scala/net/psforever/objects/inventory/InventoryTile.scala index a1468cd5..290b4887 100644 --- a/common/src/main/scala/net/psforever/objects/inventory/InventoryTile.scala +++ b/common/src/main/scala/net/psforever/objects/inventory/InventoryTile.scala @@ -8,40 +8,40 @@ package net.psforever.objects.inventory * @param height the height of the tile * @throws IllegalArgumentException if either the width or the height are less than zero */ -class InventoryTile(private val width : Int, private val height : Int) { - if(width < 0 || height < 0) +class InventoryTile(private val width: Int, private val height: Int) { + if (width < 0 || height < 0) throw new IllegalArgumentException(s"tile has no area - width: $width, height: $height") - def Width : Int = width + def Width: Int = width - def Height : Int = height + def Height: Int = height } object InventoryTile { - final val None = InventoryTile(0,0) //technically invalid; used to indicate a vehicle with no trunk - final val Tile11 = InventoryTile(1,1) //occasional placeholder - final val Tile22 = InventoryTile(2,2) //grenades, boomer trigger - final val Tile23 = InventoryTile(2,3) //canister ammo - final val Tile42 = InventoryTile(4,2) //medkit - final val Tile33 = InventoryTile(3,3) //ammo box, pistols, ace - final val Tile44 = InventoryTile(4,4) //large ammo box - final val Tile55 = InventoryTile(5,5) //bfr ammo box - final val Tile66 = InventoryTile(6,6) //infiltration suit inventory - final val Tile63 = InventoryTile(6,3) //rifles - final val Tile93 = InventoryTile(9,3) //long-body weapons - final val Tile96 = InventoryTile(9,6) //standard exo-suit inventory - final val Tile99 = InventoryTile(9,9) //agile exo-suit inventory - final val Tile1107 = InventoryTile(11, 7) //uncommon small trunk capacity - phantasm - final val Tile1111 = InventoryTile(11,11) //common small trunk capacity - final val Tile1209 = InventoryTile(12, 9) //reinforced exo-suit inventory - final val Tile1511 = InventoryTile(15,11) //common medium trunk capacity - final val Tile1515 = InventoryTile(15,15) //common large trunk capacity - final val Tile1611 = InventoryTile(16,11) //uncommon medium trunk capacity - vulture - final val Tile1612 = InventoryTile(16,12) //MAX; uncommon medium trunk capacity - lodestar - final val Tile1816 = InventoryTile(18,16) //uncommon massive trunk capacity - galaxy_gunship - final val Tile2016 = InventoryTile(20,16) //uncommon massive trunk capacity - apc + final val None = InventoryTile(0, 0) //technically invalid; used to indicate a vehicle with no trunk + final val Tile11 = InventoryTile(1, 1) //occasional placeholder + final val Tile22 = InventoryTile(2, 2) //grenades, boomer trigger + final val Tile23 = InventoryTile(2, 3) //canister ammo + final val Tile42 = InventoryTile(4, 2) //medkit + final val Tile33 = InventoryTile(3, 3) //ammo box, pistols, ace + final val Tile44 = InventoryTile(4, 4) //large ammo box + final val Tile55 = InventoryTile(5, 5) //bfr ammo box + final val Tile66 = InventoryTile(6, 6) //infiltration suit inventory + final val Tile63 = InventoryTile(6, 3) //rifles + final val Tile93 = InventoryTile(9, 3) //long-body weapons + final val Tile96 = InventoryTile(9, 6) //standard exo-suit inventory + final val Tile99 = InventoryTile(9, 9) //agile exo-suit inventory + final val Tile1107 = InventoryTile(11, 7) //uncommon small trunk capacity - phantasm + final val Tile1111 = InventoryTile(11, 11) //common small trunk capacity + final val Tile1209 = InventoryTile(12, 9) //reinforced exo-suit inventory + final val Tile1511 = InventoryTile(15, 11) //common medium trunk capacity + final val Tile1515 = InventoryTile(15, 15) //common large trunk capacity + final val Tile1611 = InventoryTile(16, 11) //uncommon medium trunk capacity - vulture + final val Tile1612 = InventoryTile(16, 12) //MAX; uncommon medium trunk capacity - lodestar + final val Tile1816 = InventoryTile(18, 16) //uncommon massive trunk capacity - galaxy_gunship + final val Tile2016 = InventoryTile(20, 16) //uncommon massive trunk capacity - apc - def apply(w : Int, h : Int) : InventoryTile = { + def apply(w: Int, h: Int): InventoryTile = { new InventoryTile(w, h) } } diff --git a/common/src/main/scala/net/psforever/objects/loadouts/EquipmentLoadout.scala b/common/src/main/scala/net/psforever/objects/loadouts/EquipmentLoadout.scala index 53925f90..95646190 100644 --- a/common/src/main/scala/net/psforever/objects/loadouts/EquipmentLoadout.scala +++ b/common/src/main/scala/net/psforever/objects/loadouts/EquipmentLoadout.scala @@ -17,6 +17,8 @@ package net.psforever.objects.loadouts * @param visible_slots simplified representation of the `Equipment` that can see "seen" on the target * @param inventory simplified representation of the `Equipment` in the target's inventory or trunk */ -abstract class EquipmentLoadout(label : String, - visible_slots : List[Loadout.SimplifiedEntry], - inventory : List[Loadout.SimplifiedEntry]) extends Loadout(label) +abstract class EquipmentLoadout( + label: String, + visible_slots: List[Loadout.SimplifiedEntry], + inventory: List[Loadout.SimplifiedEntry] +) extends Loadout(label) diff --git a/common/src/main/scala/net/psforever/objects/loadouts/InfantryLoadout.scala b/common/src/main/scala/net/psforever/objects/loadouts/InfantryLoadout.scala index 18c2f57f..22fa70e2 100644 --- a/common/src/main/scala/net/psforever/objects/loadouts/InfantryLoadout.scala +++ b/common/src/main/scala/net/psforever/objects/loadouts/InfantryLoadout.scala @@ -24,11 +24,13 @@ import net.psforever.types.{CertificationType, ExoSuitType} * anti-infantry (1), anti-vehicular (2), or anti-air work (3); * the default value is 0 */ -final case class InfantryLoadout(label : String, - visible_slots : List[Loadout.SimplifiedEntry], - inventory : List[Loadout.SimplifiedEntry], - exosuit : ExoSuitType.Value, - subtype : Int) extends EquipmentLoadout(label, visible_slots, inventory) +final case class InfantryLoadout( + label: String, + visible_slots: List[Loadout.SimplifiedEntry], + inventory: List[Loadout.SimplifiedEntry], + exosuit: ExoSuitType.Value, + subtype: Int +) extends EquipmentLoadout(label, visible_slots, inventory) object InfantryLoadout { import net.psforever.objects.Player @@ -43,7 +45,7 @@ object InfantryLoadout { * @param player the player * @return the numeric subtype */ - def DetermineSubtype(player : Player) : Int = { + def DetermineSubtype(player: Player): Int = { DetermineSubtypeA(player.ExoSuit, player.Slot(0).Equipment) } @@ -58,12 +60,13 @@ object InfantryLoadout { * to a MAX, that is its "primary weapon slot" * @return the numeric subtype */ - def DetermineSubtypeA(suit : ExoSuitType.Value, weapon : Option[Equipment]) : Int = { - if(suit == ExoSuitType.MAX) { + def DetermineSubtypeA(suit: ExoSuitType.Value, weapon: Option[Equipment]): Int = { + if (suit == ExoSuitType.MAX) { weapon match { case Some(item) => item.Definition match { - case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.nchev_scattercannon | GlobalDefinitions.vshev_quasar => + case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.nchev_scattercannon | + GlobalDefinitions.vshev_quasar => 1 case GlobalDefinitions.trhev_pounder | GlobalDefinitions.nchev_falcon | GlobalDefinitions.vshev_comet => 2 @@ -75,8 +78,7 @@ object InfantryLoadout { case None => 0 } - } - else { + } else { 0 } } @@ -90,12 +92,12 @@ object InfantryLoadout { * @param subtype the mechanized assault exo-suit subtype as determined by their arm weapons * @return the numeric subtype */ - def DetermineSubtypeB(suit : ExoSuitType.Value, subtype : Int) : Int = { + def DetermineSubtypeB(suit: ExoSuitType.Value, subtype: Int): Int = { suit match { - case ExoSuitType.Standard => 0 - case ExoSuitType.Agile => 1 - case ExoSuitType.Reinforced => 2 - case ExoSuitType.MAX => 3 + subtype //4, 5, 6 + case ExoSuitType.Standard => 0 + case ExoSuitType.Agile => 1 + case ExoSuitType.Reinforced => 2 + case ExoSuitType.MAX => 3 + subtype //4, 5, 6 case ExoSuitType.Infiltration => 7 } } @@ -108,10 +110,11 @@ object InfantryLoadout { * @param subtype the numeric subtype * @return a `Set` of all certifications that would grant access to the mechanized assault exo-suit subtype */ - def DetermineSubtypeC(subtype : Int) : Set[CertificationType.Value] = subtype match { - case 1 => Set(CertificationType.AIMAX, CertificationType.UniMAX) - case 2 => Set(CertificationType.AVMAX, CertificationType.UniMAX) - case 3 => Set(CertificationType.AAMAX, CertificationType.UniMAX) - case _ => Set.empty[CertificationType.Value] - } + def DetermineSubtypeC(subtype: Int): Set[CertificationType.Value] = + subtype match { + case 1 => Set(CertificationType.AIMAX, CertificationType.UniMAX) + case 2 => Set(CertificationType.AVMAX, CertificationType.UniMAX) + case 3 => Set(CertificationType.AAMAX, CertificationType.UniMAX) + case _ => Set.empty[CertificationType.Value] + } } diff --git a/common/src/main/scala/net/psforever/objects/loadouts/Loadout.scala b/common/src/main/scala/net/psforever/objects/loadouts/Loadout.scala index 0f2ad13f..9ed02c19 100644 --- a/common/src/main/scala/net/psforever/objects/loadouts/Loadout.scala +++ b/common/src/main/scala/net/psforever/objects/loadouts/Loadout.scala @@ -16,15 +16,15 @@ import scala.util.{Failure, Success, Try} * by reconstructing any items (if warranted and permitted) or restoring any appropriate fields. * @param label the name by which this inventory will be known when displayed in a Favorites list */ -abstract class Loadout(label : String) +abstract class Loadout(label: String) object Loadout { - def Create(owner : Any, label : String) : Try[Loadout] = { + def Create(owner: Any, label: String): Try[Loadout] = { owner match { - case p : Player => Success(Create(p, label)) - case v : Vehicle => Success(Create(v, label)) - case s : Squad => Success(Create(s, s.Task)) - case _ => Failure(new MatchError(s"can not create a loadout based on the (current status of) $owner")) + case p: Player => Success(Create(p, label)) + case v: Vehicle => Success(Create(v, label)) + case s: Squad => Success(Create(s, s.Task)) + case _ => Failure(new MatchError(s"can not create a loadout based on the (current status of) $owner")) } } @@ -34,7 +34,7 @@ object Loadout { * @param label the name of this loadout * @return an `InfantryLoadout` object populated with appropriate information about the current state of the player */ - def Create(player : Player, label : String) : Loadout = { + def Create(player: Player, label: String): Loadout = { InfantryLoadout( label, packageSimplifications(player.Holsters()), @@ -50,12 +50,13 @@ object Loadout { * @param label the name of this loadout * @return a `VehicleLoadout` object populated with appropriate information about the current state of the vehicle */ - def Create(vehicle : Vehicle, label : String) : Loadout = { + def Create(vehicle: Vehicle, label: String): Loadout = { VehicleLoadout( label, - packageSimplifications(vehicle.Weapons.collect { case (index, slot) if slot.Equipment.nonEmpty => - InventoryItem(slot.Equipment.get, index) }.toList - ), + packageSimplifications(vehicle.Weapons.collect { + case (index, slot) if slot.Equipment.nonEmpty => + InventoryItem(slot.Equipment.get, index) + }.toList), packageSimplifications(vehicle.Trunk.Items), vehicle.Definition ) @@ -64,17 +65,19 @@ object Loadout { /** * na */ - def Create(squad : Squad, label : String) : Loadout = { + def Create(squad: Squad, label: String): Loadout = { SquadLoadout( label, - if(squad.CustomZoneId) { Some(squad.ZoneId) } else { None }, - squad.Membership - .zipWithIndex - .filter { case (_, index) => - squad.Availability(index) + if (squad.CustomZoneId) { Some(squad.ZoneId) } + else { None }, + squad.Membership.zipWithIndex + .filter { + case (_, index) => + squad.Availability(index) } - .map {case (member, index) => - SquadPositionLoadout(index, member.Role, member.Orders, member.Requirements) + .map { + case (member, index) => + SquadPositionLoadout(index, member.Role, member.Orders, member.Requirements) } .toList ) @@ -84,7 +87,7 @@ object Loadout { * A basic `Trait` connecting all of the `Equipment` blueprints. */ sealed trait Simplification { - def definition : ObjectDefinition + def definition: ObjectDefinition } /** @@ -101,40 +104,46 @@ object Loadout { * @param capacity the amount of ammunition, if any, to initialize; * if `None`, then the previous `AmmoBoxDefinition` will be referenced for the amount later */ - final case class ShorthandAmmoBox(definition : AmmoBoxDefinition, capacity : Int) extends Simplification + final case class ShorthandAmmoBox(definition: AmmoBoxDefinition, capacity: Int) extends Simplification + /** * The simplified form of a `Tool`. * @param definition the `ToolDefinition` that describes this future object * @param ammo the blueprints to construct the correct number of ammunition slots in the `Tool` */ - final case class ShorthandTool(definition : ToolDefinition, ammo : List[ShorthandAmmoSlot]) extends Simplification + final case class ShorthandTool(definition: ToolDefinition, ammo: List[ShorthandAmmoSlot]) extends Simplification + /** * The simplified form of a `Tool` `FireMode` * @param ammoIndex the index that points to the type of ammunition this slot currently uses * @param ammo a `ShorthandAmmoBox` object to load into that slot */ - final case class ShorthandAmmoSlot(ammoIndex : Int, ammo : ShorthandAmmoBox) + final case class ShorthandAmmoSlot(ammoIndex: Int, ammo: ShorthandAmmoBox) + /** * The simplified form of a `ConstructionItem`. * @param definition the `ConstructionItemDefinition` that describes this future object */ - final case class ShorthandConstructionItem(definition : ConstructionItemDefinition) extends Simplification + final case class ShorthandConstructionItem(definition: ConstructionItemDefinition) extends Simplification + /** * The simplified form of a `BoomerTrigger`, a unique kind of `SimpleItem`. * @param definition the `SimpleItemDefinition` that describes this future object; * actually ignored, but retained for function definition consistency */ - final case class ShorthandTriggerItem(definition : SimpleItemDefinition) extends Simplification + final case class ShorthandTriggerItem(definition: SimpleItemDefinition) extends Simplification + /** * The simplified form of a `SimpleItem`. * @param definition the `SimpleItemDefinition` that describes this future object */ - final case class ShorthandSimpleItem(definition : SimpleItemDefinition) extends Simplification + final case class ShorthandSimpleItem(definition: SimpleItemDefinition) extends Simplification + /** * The simplified form of a `Kit`. * @param definition the `KitDefinition` that describes this future object */ - final case class ShorthandKit(definition : KitDefinition) extends Simplification + final case class ShorthandKit(definition: KitDefinition) extends Simplification /** * The sub-type of the player's uniform. @@ -144,7 +153,7 @@ object Loadout { * @param player the player * @return the numeric subtype */ - def DetermineSubtype(player : Player) : Int = { + def DetermineSubtype(player: Player): Int = { InfantryLoadout.DetermineSubtype(player) } @@ -154,14 +163,14 @@ object Loadout { * @param vehicle the vehicle * @return the numeric subtype, always 0 */ - def DetermineSubtype(vehicle : Vehicle) : Int = 0 + def DetermineSubtype(vehicle: Vehicle): Int = 0 /** * Overloaded entry point for constructing simplified blueprints from holster slot equipment. * @param equipment the holster slots * @return a `List` of simplified `Equipment` */ - protected def packageSimplifications(equipment : Array[EquipmentSlot]) : List[SimplifiedEntry] = { + protected def packageSimplifications(equipment: Array[EquipmentSlot]): List[SimplifiedEntry] = { recursiveHolsterSimplifications(equipment.iterator) } @@ -170,11 +179,10 @@ object Loadout { * @param equipment the enumerated contents of the inventory * @return a `List` of simplified `Equipment` */ - protected def packageSimplifications(equipment : List[InventoryItem]) : List[SimplifiedEntry] = { + protected def packageSimplifications(equipment: List[InventoryItem]): List[SimplifiedEntry] = { equipment.map(entry => { SimplifiedEntry(buildSimplification(entry.obj), entry.start) }) } - /** * Traverse a `Player`'s holsters and transform occupied slots into simplified blueprints for the contents of that slot. * The holsters are fixed positions and can be unoccupied. @@ -187,11 +195,14 @@ object Loadout { * empty, by default * @return a `List` of simplified `Equipment` blueprints */ - @tailrec private def recursiveHolsterSimplifications(iter : Iterator[EquipmentSlot], index : Int = 0, list : List[SimplifiedEntry] = Nil) : List[SimplifiedEntry] = { - if(!iter.hasNext) { + @tailrec private def recursiveHolsterSimplifications( + iter: Iterator[EquipmentSlot], + index: Int = 0, + list: List[SimplifiedEntry] = Nil + ): List[SimplifiedEntry] = { + if (!iter.hasNext) { list - } - else { + } else { val entry = iter.next entry.Equipment match { case Some(obj) => @@ -213,19 +224,20 @@ object Loadout { * @return a `List` of simplified ammo slot blueprints * @see `Tool.FireModeSlot` */ - @tailrec private def recursiveFireModeSimplications(iter : Iterator[Tool.FireModeSlot], list : List[ShorthandAmmoSlot] = Nil) : List[ShorthandAmmoSlot] = { - if(!iter.hasNext) { + @tailrec private def recursiveFireModeSimplications( + iter: Iterator[Tool.FireModeSlot], + list: List[ShorthandAmmoSlot] = Nil + ): List[ShorthandAmmoSlot] = { + if (!iter.hasNext) { list - } - else { + } else { val entry = iter.next - val fmodeSimp = if(entry.Box.AmmoType == entry.AmmoType) { + val fmodeSimp = if (entry.Box.AmmoType == entry.AmmoType) { ShorthandAmmoSlot( entry.AmmoTypeIndex, ShorthandAmmoBox(entry.Box.Definition, entry.Box.Capacity) ) - } - else { + } else { ShorthandAmmoSlot( entry.AmmoTypeIndex, ShorthandAmmoBox(entry.Tool.AmmoTypes(entry.Definition.AmmoTypeIndices.head), 1) @@ -240,20 +252,20 @@ object Loadout { * @param obj the `Equipment` * @return the simplified blueprint */ - private def buildSimplification(obj : Equipment) : Simplification = { + private def buildSimplification(obj: Equipment): Simplification = { obj match { - case obj : Tool => + case obj: Tool => val flist = recursiveFireModeSimplications(obj.AmmoSlots.iterator) ShorthandTool(obj.Definition, flist) - case obj : AmmoBox => + case obj: AmmoBox => ShorthandAmmoBox(obj.Definition, obj.Capacity) - case obj : ConstructionItem => + case obj: ConstructionItem => ShorthandConstructionItem(obj.Definition) - case obj : BoomerTrigger => + case obj: BoomerTrigger => ShorthandTriggerItem(obj.Definition) - case obj : SimpleItem => + case obj: SimpleItem => ShorthandSimpleItem(obj.Definition) - case obj : Kit => + case obj: Kit => ShorthandKit(obj.Definition) } } diff --git a/common/src/main/scala/net/psforever/objects/loadouts/SquadLoadout.scala b/common/src/main/scala/net/psforever/objects/loadouts/SquadLoadout.scala index 029c58b7..ffb4e777 100644 --- a/common/src/main/scala/net/psforever/objects/loadouts/SquadLoadout.scala +++ b/common/src/main/scala/net/psforever/objects/loadouts/SquadLoadout.scala @@ -3,8 +3,12 @@ package net.psforever.objects.loadouts import net.psforever.types.CertificationType -final case class SquadPositionLoadout(index : Int, role : String, orders : String, requirements : Set[CertificationType.Value]) +final case class SquadPositionLoadout( + index: Int, + role: String, + orders: String, + requirements: Set[CertificationType.Value] +) -final case class SquadLoadout(task : String, - zone_id : Option[Int], - members : List[SquadPositionLoadout]) extends Loadout(task) +final case class SquadLoadout(task: String, zone_id: Option[Int], members: List[SquadPositionLoadout]) + extends Loadout(task) diff --git a/common/src/main/scala/net/psforever/objects/loadouts/VehicleLoadout.scala b/common/src/main/scala/net/psforever/objects/loadouts/VehicleLoadout.scala index c4199e0c..cf07fb48 100644 --- a/common/src/main/scala/net/psforever/objects/loadouts/VehicleLoadout.scala +++ b/common/src/main/scala/net/psforever/objects/loadouts/VehicleLoadout.scala @@ -21,7 +21,9 @@ import net.psforever.objects.definition._ * field gets inherited * @param vehicle_definition the original type of vehicle whose state is being populated */ -final case class VehicleLoadout(label : String, - visible_slots : List[Loadout.SimplifiedEntry], - inventory : List[Loadout.SimplifiedEntry], - vehicle_definition : VehicleDefinition) extends EquipmentLoadout(label, visible_slots, inventory) +final case class VehicleLoadout( + label: String, + visible_slots: List[Loadout.SimplifiedEntry], + inventory: List[Loadout.SimplifiedEntry], + vehicle_definition: VehicleDefinition +) extends EquipmentLoadout(label, visible_slots, inventory) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/CommonMessages.scala b/common/src/main/scala/net/psforever/objects/serverobject/CommonMessages.scala index 1037129a..97048bf8 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/CommonMessages.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/CommonMessages.scala @@ -6,9 +6,9 @@ import net.psforever.objects.serverobject.hackable.Hackable //temporary location for these messages object CommonMessages { - final case class Use(player : Player, data : Option[Any] = None) - final case class Unuse(player : Player, data : Option[Any] = None) - final case class Hack(player : Player, obj : PlanetSideServerObject with Hackable, data : Option[Any] = None) + final case class Use(player: Player, data: Option[Any] = None) + final case class Unuse(player: Player, data: Option[Any] = None) + final case class Hack(player: Player, obj: PlanetSideServerObject with Hackable, data: Option[Any] = None) final case class ClearHack() /** @@ -20,7 +20,7 @@ object CommonMessages { * @param completionAction a finalizing action performed once the progress reaches 100(%) * @param tickAction an action that is performed for each increase of progress */ - final case class Progress(delta : Float, completionAction : ()=>Unit, tickAction : Float=>Boolean) { + final case class Progress(delta: Float, completionAction: () => Unit, tickAction: Float => Boolean) { assert(delta > 0, s"progress activity change value must be positive number - $delta") } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/PlanetSideServerObject.scala b/common/src/main/scala/net/psforever/objects/serverobject/PlanetSideServerObject.scala index 05b7a102..ffd6906b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/PlanetSideServerObject.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/PlanetSideServerObject.scala @@ -3,7 +3,6 @@ package net.psforever.objects.serverobject import akka.actor.ActorRef import net.psforever.objects.{Default, PlanetSideGameObject} -import net.psforever.objects.entity.NoGUIDException import net.psforever.objects.serverobject.affinity.FactionAffinity import net.psforever.objects.zones.ZoneAware @@ -11,17 +10,15 @@ import net.psforever.objects.zones.ZoneAware * An object layered on top of the standard game object class that maintains an internal `ActorRef`. * A measure of synchronization can be managed using this `Actor` as a "controlling agent." */ -abstract class PlanetSideServerObject extends PlanetSideGameObject - with FactionAffinity - with ZoneAware { - private var actor : ActorRef = ActorRef.noSender - private var getActorFunc : ()=>ActorRef = PlanetSideServerObject.getDefaultActor +abstract class PlanetSideServerObject extends PlanetSideGameObject with FactionAffinity with ZoneAware { + private var actor: ActorRef = ActorRef.noSender + private var getActorFunc: () => ActorRef = PlanetSideServerObject.getDefaultActor /** * Retrieve a reference to the internal `Actor`. * @return the internal `ActorRef` */ - def Actor : ActorRef = getActorFunc() + def Actor: ActorRef = getActorFunc() /** * Assign an `Actor` to act for this server object. @@ -29,18 +26,17 @@ abstract class PlanetSideServerObject extends PlanetSideGameObject * @param control the `Actor` whose functionality will govern this server object * @return the current internal `ActorRef` */ - def Actor_=(control : ActorRef) : ActorRef = { - if(control == Default.Actor) { + def Actor_=(control: ActorRef): ActorRef = { + if (control == Default.Actor) { ResetControl() - } - else { + } else { actor = control getActorFunc = PlanetSideServerObject.doGetLocalActor(this) actor } } - def ResetControl() : ActorRef = { + def ResetControl(): ActorRef = { getActorFunc = PlanetSideServerObject.getDefaultActor val out = actor actor = ActorRef.noSender @@ -49,19 +45,20 @@ abstract class PlanetSideServerObject extends PlanetSideGameObject } object PlanetSideServerObject { + /** * Before the internal control agency of a respective server object is ever set, * a default control agency will be produced. * @return the value pointed to by `Default.Actor` */ - private def getDefaultActor() : ActorRef = { Default.Actor } + private def getDefaultActor(): ActorRef = { Default.Actor } /** * Allow retrieving a reference to the internal `Actor`. * @see o the server object * @return the internal `ActorRef` */ - private def doGetLocalActor(o : PlanetSideServerObject)() : ActorRef = o.actor + private def doGetLocalActor(o: PlanetSideServerObject)(): ActorRef = o.actor /** * `Actor` entities require unique names over the course of the lifetime of the `ActorSystem` object. @@ -80,7 +77,7 @@ object PlanetSideServerObject { * @param obj the entity for whom the `Actor` object will be created * @return the unique name */ - def UniqueActorName(obj : PlanetSideGameObject) : String = { + def UniqueActorName(obj: PlanetSideGameObject): String = { s"${obj.Definition.Name}_${obj.GUID.guid}_${System.currentTimeMillis}" } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/ServerObjectBuilder.scala b/common/src/main/scala/net/psforever/objects/serverobject/ServerObjectBuilder.scala index f584620c..8d133e68 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/ServerObjectBuilder.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/ServerObjectBuilder.scala @@ -27,11 +27,12 @@ import net.psforever.objects.guid.NumberPoolHub * @tparam A any object that extends from PlanetSideServerObject that will be produced by this class; * can be inferred from the output of `constructor` */ -class ServerObjectBuilder[A <: PlanetSideServerObject](private val id : Int, - private val constructor : ServerObjectBuilder.ConstructorType[A] - ) { +class ServerObjectBuilder[A <: PlanetSideServerObject]( + private val id: Int, + private val constructor: ServerObjectBuilder.ConstructorType[A] +) { - def Id : Int = id + def Id: Int = id /** * Instantiate and configure the given server object. @@ -44,15 +45,15 @@ class ServerObjectBuilder[A <: PlanetSideServerObject](private val id : Int, * defaults to `null` * @return the object that was created and integrated into the `Zone` */ - def Build(implicit context : ActorContext = null, guid : NumberPoolHub = null) : A = { - val obj : A = constructor(id, context) + def Build(implicit context: ActorContext = null, guid: NumberPoolHub = null): A = { + val obj: A = constructor(id, context) guid.register(obj, id) obj } } object ServerObjectBuilder { - type ConstructorType[A <: PlanetSideServerObject] = (Int, ActorContext)=>A + type ConstructorType[A <: PlanetSideServerObject] = (Int, ActorContext) => A /** * Overloaded constructor. @@ -61,7 +62,7 @@ object ServerObjectBuilder { * @tparam A any object that extends from PlanetSideServerObject that will be produced by this class * @return a `ServerObjectBuilder` object */ - def apply[A <: PlanetSideServerObject](id : Int, constructor : ConstructorType[A]) : ServerObjectBuilder[A] = { + def apply[A <: PlanetSideServerObject](id: Int, constructor: ConstructorType[A]): ServerObjectBuilder[A] = { new ServerObjectBuilder[A](id, constructor) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinity.scala b/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinity.scala index 8fecc4de..9cb34086 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinity.scala @@ -7,23 +7,26 @@ import net.psforever.types.PlanetSideEmpire * Keep track of the allegiance of the object in terms of its association to a `PlanetSideEmpire` value. */ trait FactionAffinity { - def Faction : PlanetSideEmpire.Value + def Faction: PlanetSideEmpire.Value - def Faction_=(fac : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = Faction + def Faction_=(fac: PlanetSideEmpire.Value): PlanetSideEmpire.Value = Faction } object FactionAffinity { + /** * Message that makes the server object transmit IFF feedback. * @see AssertFactionAffinity */ final case class ConfirmFactionAffinity() + /** * Message that makes the server object change allegiance to the specified faction value. * Transmit IFF feedback when done. * @param faction the allegiance to which to change */ - final case class ConvertFactionAffinity(faction : PlanetSideEmpire.Value) + final case class ConvertFactionAffinity(faction: PlanetSideEmpire.Value) + /** * Message that responds to an IFF feedback request. * Transmit IFF feedback when done. @@ -31,5 +34,5 @@ object FactionAffinity { * @param obj the governed object * @param faction the allegiance to which the object belongs */ - final case class AssertFactionAffinity(obj : FactionAffinity, faction : PlanetSideEmpire.Value) + final case class AssertFactionAffinity(obj: FactionAffinity, faction: PlanetSideEmpire.Value) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinityBehavior.scala b/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinityBehavior.scala index 21ab5b73..b1e3d665 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinityBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/affinity/FactionAffinityBehavior.scala @@ -9,7 +9,7 @@ object FactionAffinityBehavior { * A `trait` for inheritance of common implementable methods. */ sealed trait BasicAffinity { - def FactionObject : FactionAffinity + def FactionObject: FactionAffinity } /** @@ -17,9 +17,9 @@ object FactionAffinityBehavior { * This is a mix-in trait for combining with existing `Receive` logic. */ trait Convert extends BasicAffinity { - this : Actor => + this: Actor => - val convertBehavior : Receive = { + val convertBehavior: Receive = { case FactionAffinity.ConvertFactionAffinity(faction) => FactionObject.Faction = faction sender ! FactionAffinity.AssertFactionAffinity(FactionObject, faction) @@ -32,9 +32,9 @@ object FactionAffinityBehavior { * This is a mix-in trait for combining with existing `Receive` logic. */ trait Check extends BasicAffinity { - this : Actor => + this: Actor => - val checkBehavior : Receive = { + val checkBehavior: Receive = { case FactionAffinity.ConfirmFactionAffinity() | FactionAffinity.AssertFactionAffinity(_, _) => sender ! FactionAffinity.AssertFactionAffinity(FactionObject, FactionObject.Faction) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/containable/ContainableBehavior.scala b/common/src/main/scala/net/psforever/objects/serverobject/containable/ContainableBehavior.scala index f6b9fe24..abbab790 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/containable/ContainableBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/containable/ContainableBehavior.scala @@ -17,6 +17,7 @@ import scala.util.{Failure, Success} /** Parent of all standard (input) messages handled by a `ContainableBehavior` object for the purposes of item transfer */ sealed trait ContainableMsg + /** `ContainableBehavior` messages that are allowed to be temporarily blocked in event of a complicated item transfer */ sealed trait DeferrableMsg extends ContainableMsg @@ -28,8 +29,8 @@ sealed trait DeferrableMsg extends ContainableMsg * including equipment that has nort yet been inserted. */ trait ContainableBehavior { - _ : Actor => - def ContainerObject : PlanetSideServerObject with Container + _: Actor => + def ContainerObject: PlanetSideServerObject with Container /** * A flag for handling deferred messages during an attempt at complicated item movement (`MoveItem`) procedures. @@ -40,9 +41,9 @@ trait ContainableBehavior { * the flag is set to `2` and most all messages involving item movement and item insertion are deferred. * The destination is set back to normal - flag to `0` - when both of the attempts short-circuit due to timeout. */ - private var waitOnMoveItemOps : Int = 0 + private var waitOnMoveItemOps: Int = 0 - final val containerBehavior : Receive = { + final val containerBehavior: Receive = { /* messages that modify delivery order */ case ContainableBehavior.Wait() => Wait() @@ -51,17 +52,17 @@ trait ContainableBehavior { case repeatMsg @ ContainableBehavior.Defer(msg, sentBy) => //received a previously blocked message; is it still blocked? msg match { - case _ : ContainableMsg if waitOnMoveItemOps == 2 => RepeatMessageLater(repeatMsg) - case _ : DeferrableMsg if waitOnMoveItemOps == 1 => RepeatMessageLater(repeatMsg) - case _ => self.tell(msg, sentBy) + case _: ContainableMsg if waitOnMoveItemOps == 2 => RepeatMessageLater(repeatMsg) + case _: DeferrableMsg if waitOnMoveItemOps == 1 => RepeatMessageLater(repeatMsg) + case _ => self.tell(msg, sentBy) } - case msg : ContainableMsg if waitOnMoveItemOps == 2 => + case msg: ContainableMsg if waitOnMoveItemOps == 2 => //all standard messages are blocked RepeatMessageLater(ContainableBehavior.Defer(msg, sender)) MessageDeferredCallback(msg) - case msg : DeferrableMsg if waitOnMoveItemOps == 1 => + case msg: DeferrableMsg if waitOnMoveItemOps == 1 => //insertion messages not related to an item move attempt are blocked RepeatMessageLater(ContainableBehavior.Defer(msg, sender)) MessageDeferredCallback(msg) @@ -73,26 +74,31 @@ trait ContainableBehavior { case Containable.RemoveItemFromSlot(Some(item), _) => sender ! LocalRemoveItemFromSlot(item) - case Containable.PutItemInSlot(item, dest) => /* can be deferred */ + case Containable.PutItemInSlot(item, dest) => + /* can be deferred */ sender ! LocalPutItemInSlot(item, dest) - case Containable.PutItemInSlotOnly(item, dest) => /* can be deferred */ + case Containable.PutItemInSlotOnly(item, dest) => + /* can be deferred */ sender ! LocalPutItemInSlotOnly(item, dest) - case Containable.PutItemAway(item) => /* can be deferred */ + case Containable.PutItemAway(item) => + /* can be deferred */ sender ! LocalPutItemAway(item) - case Containable.PutItemInSlotOrAway(item, dest) => /* can be deferred */ + case Containable.PutItemInSlotOrAway(item, dest) => + /* can be deferred */ sender ! LocalPutItemInSlotOrAway(item, dest) - case msg @ Containable.MoveItem(destination, equipment, destSlot) => /* can be deferred */ - if(ContainableBehavior.TestPutItemInSlot(destination, equipment, destSlot).nonEmpty) { //test early, before we try to move the item + case msg @ Containable.MoveItem(destination, equipment, destSlot) => + /* can be deferred */ + if (ContainableBehavior.TestPutItemInSlot(destination, equipment, destSlot).nonEmpty) { //test early, before we try to move the item val source = ContainerObject - val item = equipment - val dest = destSlot + val item = equipment + val dest = destSlot LocalRemoveItemFromSlot(item) match { case Containable.ItemFromSlot(_, Some(_), slot @ Some(originalSlot)) => - if(source eq destination) { + if (source eq destination) { //when source and destination are the same, moving the item can be performed in one pass LocalPutItemInSlot(item, dest) match { case Containable.ItemPutInSlot(_, _, _, None) => ; //success @@ -100,24 +106,26 @@ trait ContainableBehavior { LocalPutItemInSlotOnlyOrAway(swapItem, slot) match { case Containable.ItemPutInSlot(_, _, _, None) => ; case _ => - source.Zone.Ground.tell(Zone.Ground.DropItem(swapItem, source.Position, Vector3.z(source.Orientation.z)), source.Actor) //drop it + source.Zone.Ground.tell( + Zone.Ground.DropItem(swapItem, source.Position, Vector3.z(source.Orientation.z)), + source.Actor + ) //drop it } - case _ : Containable.CanNotPutItemInSlot => //failure case ; try restore original item placement + case _: Containable.CanNotPutItemInSlot => //failure case ; try restore original item placement LocalPutItemInSlot(item, originalSlot) } - } - else { + } else { //destination sync destination.Actor ! ContainableBehavior.Wait() implicit val timeout = new Timeout(1000 milliseconds) - val moveItemOver = ask(destination.Actor, ContainableBehavior.MoveItemPutItemInSlot(item, dest)) + val moveItemOver = ask(destination.Actor, ContainableBehavior.MoveItemPutItemInSlot(item, dest)) moveItemOver.onComplete { case Success(Containable.ItemPutInSlot(_, _, _, None)) => ; //successful case Success(Containable.ItemPutInSlot(_, _, _, Some(swapItem))) => //successful, but with swap item PutItBackOrDropIt(source, swapItem, slot, destination.Actor) - case Success(_ : Containable.CanNotPutItemInSlot) => //failure case ; try restore original item placement + case Success(_: Containable.CanNotPutItemInSlot) => //failure case ; try restore original item placement PutItBackOrDropIt(source, item, slot, source.Actor) case Failure(_) => //failure case ; try restore original item placement @@ -127,14 +135,13 @@ trait ContainableBehavior { } //always do this moveItemOver - .recover { case _ : AskTimeoutException => destination.Actor ! ContainableBehavior.Resume() } + .recover { case _: AskTimeoutException => destination.Actor ! ContainableBehavior.Resume() } .onComplete { _ => destination.Actor ! ContainableBehavior.Resume() } } case _ => ; //we could not find the item to be moved in the source location; trying to act on old data? } - } - else { + } else { MessageDeferredCallback(msg) } @@ -153,7 +160,7 @@ trait ContainableBehavior { * @see `DeferrableMsg` * @param msg the message to defer */ - def RepeatMessageLater(msg : Any) : Unit = { + def RepeatMessageLater(msg: Any): Unit = { import scala.concurrent.ExecutionContext.Implicits.global context.system.scheduler.scheduleOnce(100 milliseconds, self, msg) } @@ -161,53 +168,53 @@ trait ContainableBehavior { /** * Increment the flag for blocking messages. */ - def Wait() : Unit = { + def Wait(): Unit = { waitOnMoveItemOps = math.min(waitOnMoveItemOps + 1, 2) } /** * Decrement the flag for blocking messages. */ - def Resume() : Unit = { + def Resume(): Unit = { waitOnMoveItemOps = math.max(0, waitOnMoveItemOps - 1) } /** * Stop blocking messages. */ - def Reset() : Unit = { + def Reset(): Unit = { waitOnMoveItemOps = 0 } /* Functions (item transfer) */ - private def LocalRemoveItemFromSlot(slot : Int) : Any = { - val source = ContainerObject + private def LocalRemoveItemFromSlot(slot: Int): Any = { + val source = ContainerObject val (outSlot, item) = ContainableBehavior.TryRemoveItemFromSlot(source, slot) item match { case Some(thing) => RemoveItemFromSlotCallback(thing, outSlot.get) - case None => ; + case None => ; } Containable.ItemFromSlot(source, item, outSlot) } - private def LocalRemoveItemFromSlot(item : Equipment) : Any = { - val source = ContainerObject - val(slot, retItem) = ContainableBehavior.TryRemoveItemFromSlot(source, item) + private def LocalRemoveItemFromSlot(item: Equipment): Any = { + val source = ContainerObject + val (slot, retItem) = ContainableBehavior.TryRemoveItemFromSlot(source, item) retItem match { case Some(thing) => RemoveItemFromSlotCallback(thing, slot.get) - case None => ; + case None => ; } Containable.ItemFromSlot(source, Some(item), slot) } - private def LocalPutItemInSlot(item : Equipment, dest : Int) : Any = { + private def LocalPutItemInSlot(item: Equipment, dest: Int): Any = { val destination = ContainerObject ContainableBehavior.TryPutItemInSlot(destination, item, dest) match { case (true, swapItem) => swapItem match { case Some(thing) => SwapItemCallback(thing) - case None => ; + case None => ; } PutItemInSlotCallback(item, dest) Containable.ItemPutInSlot(destination, item, dest, swapItem) @@ -216,18 +223,17 @@ trait ContainableBehavior { } } - private def LocalPutItemInSlotOnly(item : Equipment, dest : Int) : Any = { + private def LocalPutItemInSlotOnly(item: Equipment, dest: Int): Any = { val destination = ContainerObject - if(ContainableBehavior.TryPutItemInSlotOnly(destination, item, dest)) { + if (ContainableBehavior.TryPutItemInSlotOnly(destination, item, dest)) { PutItemInSlotCallback(item, dest) Containable.ItemPutInSlot(destination, item, dest, None) - } - else { + } else { Containable.CanNotPutItemInSlot(destination, item, dest) } } - private def LocalPutItemAway(item : Equipment) : Any = { + private def LocalPutItemAway(item: Equipment): Any = { val destination = ContainerObject ContainableBehavior.TryPutItemAway(destination, item) match { case Some(dest) => @@ -238,13 +244,13 @@ trait ContainableBehavior { } } - private def LocalPutItemInSlotOrAway(item : Equipment, dest : Option[Int]) : Any = { + private def LocalPutItemInSlotOrAway(item: Equipment, dest: Option[Int]): Any = { val destination = ContainerObject ContainableBehavior.TryPutItemInSlotOrAway(destination, item, dest) match { case (Some(slot), swapItem) => swapItem match { case Some(thing) => SwapItemCallback(thing) - case None => ; + case None => ; } PutItemInSlotCallback(item, slot) Containable.ItemPutInSlot(destination, item, slot, swapItem) @@ -253,7 +259,7 @@ trait ContainableBehavior { } } - private def LocalPutItemInSlotOnlyOrAway(item : Equipment, dest : Option[Int]) : Any = { + private def LocalPutItemInSlotOnlyOrAway(item: Equipment, dest: Option[Int]): Any = { val destination = ContainerObject ContainableBehavior.TryPutItemInSlotOnlyOrAway(destination, item, dest) match { case (Some(slot), None) => @@ -277,14 +283,21 @@ trait ContainableBehavior { * @param to a recipient to redirect the response message * @param timeout how long the request has to complete before expiring */ - private def PutItBackOrDropIt(container : PlanetSideServerObject with Container, item : Equipment, slot : Option[Int], to : ActorRef)(implicit timeout : Timeout) : Unit = { + private def PutItBackOrDropIt( + container: PlanetSideServerObject with Container, + item: Equipment, + slot: Option[Int], + to: ActorRef + )(implicit timeout: Timeout): Unit = { val restore = ask(container.Actor, ContainableBehavior.MoveItemPutItemInSlotOrAway(item, slot)) restore.onComplete { - case Success(_ : Containable.CanNotPutItemInSlot) => - container.Zone.Ground.tell(Zone.Ground.DropItem(item, container.Position, Vector3.z(container.Orientation.z)), to) + case Success(_: Containable.CanNotPutItemInSlot) => + container.Zone.Ground + .tell(Zone.Ground.DropItem(item, container.Position, Vector3.z(container.Orientation.z)), to) case Failure(_) => - container.Zone.Ground.tell(Zone.Ground.DropItem(item, container.Position, Vector3.z(container.Orientation.z)), to) + container.Zone.Ground + .tell(Zone.Ground.DropItem(item, container.Position, Vector3.z(container.Orientation.z)), to) case _ => ; //normal success; //TODO what? } @@ -295,7 +308,7 @@ trait ContainableBehavior { * To be implemented. * @param msg the deferred message */ - def MessageDeferredCallback(msg : Any) : Unit + def MessageDeferredCallback(msg: Any): Unit /** * Reaction to an item being removed a container. @@ -303,7 +316,7 @@ trait ContainableBehavior { * @param item the item that was removed * @param slot the slot from which is was removed */ - def RemoveItemFromSlotCallback(item : Equipment, slot : Int) : Unit + def RemoveItemFromSlotCallback(item: Equipment, slot: Int): Unit /** * Reaction to an item being placed into a container. @@ -311,28 +324,31 @@ trait ContainableBehavior { * @param item the item that was removed * @param slot the slot from which is was removed */ - def PutItemInSlotCallback(item : Equipment, slot : Int) : Unit + def PutItemInSlotCallback(item: Equipment, slot: Int): Unit /** * Reaction to the existence of a swap item being produced from a container into the environment. * To be implemented. * @param item the item that was removed */ - def SwapItemCallback(item : Equipment) : Unit + def SwapItemCallback(item: Equipment): Unit } object ContainableBehavior { + /** Control message for temporarily blocking some messages to maintain integrity of underlying `Container` object */ private case class Wait() + /** Control message for unblocking all messages */ private case class Resume() + /** Internal message for the purpose of refreshing a blocked message in the mailbox */ - private case class Defer(msg : Any, from : ActorRef) + private case class Defer(msg: Any, from: ActorRef) /* The same as `PutItemInSlot`, but is not a `DeferrableMsg` for the purposes of completing a `MoveItem` */ - private case class MoveItemPutItemInSlot(item : Equipment, slot : Int) extends ContainableMsg + private case class MoveItemPutItemInSlot(item: Equipment, slot: Int) extends ContainableMsg /* The same as `PutItemInSlotOrAway`, but is not a `DeferrableMsg` for the purposes of completing a `MoveItem` */ - private case class MoveItemPutItemInSlotOrAway(item : Equipment, slot : Option[Int]) extends ContainableMsg + private case class MoveItemPutItemInSlotOrAway(item: Equipment, slot: Option[Int]) extends ContainableMsg /* Functions */ @@ -348,14 +364,16 @@ object ContainableBehavior { * the second is the item again, if it has been removed; * will use `(None, None)` to report failure */ - def TryRemoveItemFromSlot(source : PlanetSideServerObject with Container, item : Equipment) : (Option[Int], Option[Equipment]) = { + def TryRemoveItemFromSlot( + source: PlanetSideServerObject with Container, + item: Equipment + ): (Option[Int], Option[Equipment]) = { source.Find(item) match { case slot @ Some(index) => source.Slot(index).Equipment = None - if(source.Slot(index).Equipment.isEmpty) { + if (source.Slot(index).Equipment.isEmpty) { (slot, Some(item)) - } - else { + } else { (None, None) } case None => @@ -376,10 +394,13 @@ object ContainableBehavior { * the second is the item, if it has been removed; * will use `(None, None)` to report failure */ - def TryRemoveItemFromSlot(source : PlanetSideServerObject with Container, slot : Int) : (Option[Int], Option[Equipment]) = { + def TryRemoveItemFromSlot( + source: PlanetSideServerObject with Container, + slot: Int + ): (Option[Int], Option[Equipment]) = { val (item, outSlot) = source.Slot(slot).Equipment match { case Some(thing) => (Some(thing), source.Find(thing)) - case None => (None, None) + case None => (None, None) } source.Slot(slot).Equipment = None item match { @@ -404,17 +425,20 @@ object ContainableBehavior { * @return the results of the insertion test, if an insertion can be permitted; * `None`, otherwise, and the insertion is not permitted */ - def TestPutItemInSlot(destination : PlanetSideServerObject with Container, item : Equipment, dest : Int) : Option[List[InventoryItem]] = { - if(ContainableBehavior.PermitEquipmentStow(destination, item)) { - val tile = item.Definition.Tile + def TestPutItemInSlot( + destination: PlanetSideServerObject with Container, + item: Equipment, + dest: Int + ): Option[List[InventoryItem]] = { + if (ContainableBehavior.PermitEquipmentStow(destination, item)) { + val tile = item.Definition.Tile val destinationCollisionTest = destination.Collisions(dest, tile.Width, tile.Height) destinationCollisionTest match { - case Success(Nil) => Some(Nil) //no item to swap + case Success(Nil) => Some(Nil) //no item to swap case Success(out @ List(_)) => Some(out) //one item to swap - case _ => None //abort when too many items at destination or other failure case + case _ => None //abort when too many items at destination or other failure case } - } - else { + } else { None //blocked insertion (object type not permitted in container) } } @@ -430,19 +454,22 @@ object ContainableBehavior { * the first is `true` if the insertion occurred; and, `false`, otherwise * the second is an optional item that was removed from a coincidental position in the container ("swap item") */ - def TryPutItemInSlot(destination : PlanetSideServerObject with Container, item : Equipment, dest : Int) : (Boolean, Option[Equipment]) = { + def TryPutItemInSlot( + destination: PlanetSideServerObject with Container, + item: Equipment, + dest: Int + ): (Boolean, Option[Equipment]) = { ContainableBehavior.TestPutItemInSlot(destination, item, dest) match { case Some(results) => //insert and swap, if applicable val (swapItem, swapSlot) = results match { case List(InventoryItem(obj, start)) => (Some(obj), start) - case _ => (None, dest) + case _ => (None, dest) } destination.Slot(swapSlot).Equipment = None - if((destination.Slot(dest).Equipment = item).contains(item)) { + if ((destination.Slot(dest).Equipment = item).contains(item)) { (true, swapItem) - } - else { + } else { //put the swapItem back destination.Slot(swapSlot).Equipment = swapItem (false, None) @@ -461,8 +488,9 @@ object ContainableBehavior { * @return `true` if the insertion occurred; * `false`, otherwise */ - def TryPutItemInSlotOnly(destination : PlanetSideServerObject with Container, item : Equipment, dest : Int) : Boolean = { - ContainableBehavior.TestPutItemInSlot(destination, item, dest).contains(Nil) && (destination.Slot(dest).Equipment = item).contains(item) + def TryPutItemInSlotOnly(destination: PlanetSideServerObject with Container, item: Equipment, dest: Int): Boolean = { + ContainableBehavior.TestPutItemInSlot(destination, item, dest).contains(Nil) && (destination.Slot(dest).Equipment = + item).contains(item) } /** @@ -473,10 +501,11 @@ object ContainableBehavior { * @return the slot index of the insertion point; * `None`, if a clean insertion is not possible */ - def TryPutItemAway(destination : PlanetSideServerObject with Container, item : Equipment) : Option[Int] = { + def TryPutItemAway(destination: PlanetSideServerObject with Container, item: Equipment): Option[Int] = { destination.Fit(item) match { case out @ Some(dest) - if ContainableBehavior.PermitEquipmentStow(destination, item) && (destination.Slot(dest).Equipment = item).contains(item) => + if ContainableBehavior.PermitEquipmentStow(destination, item) && (destination.Slot(dest).Equipment = item) + .contains(item) => out case _ => None @@ -493,17 +522,21 @@ object ContainableBehavior { * @param dest in which specific slot the insertion is first tested (upper left corner of item) * @return na */ - def TryPutItemInSlotOrAway(destination : PlanetSideServerObject with Container, item : Equipment, dest : Option[Int]) : (Option[Int], Option[Equipment]) = { + def TryPutItemInSlotOrAway( + destination: PlanetSideServerObject with Container, + item: Equipment, + dest: Option[Int] + ): (Option[Int], Option[Equipment]) = { (dest match { case Some(slot) => ContainableBehavior.TryPutItemInSlot(destination, item, slot) - case None => (false, None) + case None => (false, None) }) match { case (true, swapItem) => (dest, swapItem) case _ => ContainableBehavior.TryPutItemAway(destination, item) match { case out @ Some(_) => (out, None) - case None => (None, None) + case None => (None, None) } } } @@ -518,9 +551,14 @@ object ContainableBehavior { * @param dest in which specific slot the insertion is first tested (upper left corner of item) * @return na */ - def TryPutItemInSlotOnlyOrAway(destination : PlanetSideServerObject with Container, item : Equipment, dest : Option[Int]) : (Option[Int], Option[Equipment]) = { + def TryPutItemInSlotOnlyOrAway( + destination: PlanetSideServerObject with Container, + item: Equipment, + dest: Option[Int] + ): (Option[Int], Option[Equipment]) = { (dest match { - case Some(slot) if ContainableBehavior.TestPutItemInSlot(destination, item, slot).contains(Nil) => ContainableBehavior.TryPutItemInSlot(destination, item, slot) + case Some(slot) if ContainableBehavior.TestPutItemInSlot(destination, item, slot).contains(Nil) => + ContainableBehavior.TryPutItemInSlot(destination, item, slot) case None => (false, None) }) match { case (true, swapItem) => @@ -528,7 +566,7 @@ object ContainableBehavior { case _ => ContainableBehavior.TryPutItemAway(destination, item) match { case out @ Some(_) => (out, None) - case None => (None, None) + case None => (None, None) } } } @@ -542,10 +580,10 @@ object ContainableBehavior { * @return `true`, if the object is allowed to contain the type of equipment object; * `false`, otherwise */ - def PermitEquipmentStow(destination : PlanetSideServerObject with Container, equipment : Equipment) : Boolean = { + def PermitEquipmentStow(destination: PlanetSideServerObject with Container, equipment: Equipment): Boolean = { import net.psforever.objects.{BoomerTrigger, Player} equipment match { - case _ : BoomerTrigger => + case _: BoomerTrigger => //a BoomerTrigger can only be stowed in a player's holsters or inventory //this is only a requirement until they, and their Boomer explosive complement, are cleaned-up properly destination.isInstanceOf[Player] @@ -565,23 +603,24 @@ object ContainableBehavior { * @param tplayer the player * @return true if the item is to be dropped; false, otherwise */ - def DropPredicate(tplayer : Player) : InventoryItem => Boolean = entry => { - val objDef = entry.obj.Definition - val faction = GlobalDefinitions.isFactionEquipment(objDef) - GlobalDefinitions.isCavernEquipment(objDef) || + def DropPredicate(tplayer: Player): InventoryItem => Boolean = + entry => { + val objDef = entry.obj.Definition + val faction = GlobalDefinitions.isFactionEquipment(objDef) + GlobalDefinitions.isCavernEquipment(objDef) || objDef == GlobalDefinitions.router_telepad || entry.obj.isInstanceOf[BoomerTrigger] || (faction != tplayer.Faction && faction != PlanetSideEmpire.NEUTRAL) - } + } } object Containable { - final case class RemoveItemFromSlot(item : Option[Equipment], slot : Option[Int]) extends ContainableMsg + final case class RemoveItemFromSlot(item: Option[Equipment], slot: Option[Int]) extends ContainableMsg object RemoveItemFromSlot { - def apply(slot : Int) : RemoveItemFromSlot = RemoveItemFromSlot(None, Some(slot)) + def apply(slot: Int): RemoveItemFromSlot = RemoveItemFromSlot(None, Some(slot)) - def apply(item : Equipment) : RemoveItemFromSlot = RemoveItemFromSlot(Some(item), None) + def apply(item: Equipment): RemoveItemFromSlot = RemoveItemFromSlot(Some(item), None) } /** @@ -592,15 +631,15 @@ object Containable { * @param item the equipment that was removed * @param slot the index position from which any item was removed */ - final case class ItemFromSlot(obj : PlanetSideServerObject with Container, item : Option[Equipment], slot : Option[Int]) + final case class ItemFromSlot(obj: PlanetSideServerObject with Container, item: Option[Equipment], slot: Option[Int]) - final case class PutItemInSlot(item : Equipment, slot : Int) extends DeferrableMsg + final case class PutItemInSlot(item: Equipment, slot: Int) extends DeferrableMsg - final case class PutItemInSlotOnly(item : Equipment, slot : Int) extends DeferrableMsg + final case class PutItemInSlotOnly(item: Equipment, slot: Int) extends DeferrableMsg - final case class PutItemAway(item : Equipment) extends DeferrableMsg + final case class PutItemAway(item: Equipment) extends DeferrableMsg - final case class PutItemInSlotOrAway(item : Equipment, slot : Option[Int]) extends DeferrableMsg + final case class PutItemInSlotOrAway(item: Equipment, slot: Option[Int]) extends DeferrableMsg /** * A "successful insertion" response for the variety message of messages that attempt to insert an item into a container. @@ -609,7 +648,12 @@ object Containable { * @param slot the slot position into which the item was inserted * @param swapped_item any other item, previously in the container, that was displaced to make room for this insertion */ - final case class ItemPutInSlot(obj : PlanetSideServerObject with Container, item : Equipment, slot : Int, swapped_item : Option[Equipment]) + final case class ItemPutInSlot( + obj: PlanetSideServerObject with Container, + item: Equipment, + slot: Int, + swapped_item: Option[Equipment] + ) /** * A "failed insertion" response for the variety message of messages that attempt to insert an item into a container. @@ -618,7 +662,7 @@ object Containable { * @param slot the slot position into which the item should have been inserted; * `-1` if no insertion slot was reported in the original message or discovered in the process of inserting */ - final case class CanNotPutItemInSlot(obj : PlanetSideServerObject with Container, item : Equipment, slot : Int) + final case class CanNotPutItemInSlot(obj: PlanetSideServerObject with Container, item: Equipment, slot: Int) /** * The item should already be contained by us. @@ -628,5 +672,6 @@ object Containable { * @param item the item * @param destination_slot where in the destination container the item is being placed */ - final case class MoveItem(destination : PlanetSideServerObject with Container, item : Equipment, destination_slot : Int) extends DeferrableMsg + final case class MoveItem(destination: PlanetSideServerObject with Container, item: Equipment, destination_slot: Int) + extends DeferrableMsg } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/Damageable.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/Damageable.scala index 41a28d96..5dc87756 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/Damageable.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/Damageable.scala @@ -16,15 +16,16 @@ import net.psforever.objects.vital.Vitality * All of these should be affected by the damage where applicable. */ trait Damageable { + /** * Contextual access to the object being the target of this damage. * Needs declaration in lowest implementing code. * @return the entity controlled by this actor */ - def DamageableObject : Damageable.Target + def DamageableObject: Damageable.Target /** the official mixin hook; `orElse` onto the "control" `Actor` `receive` */ - final val takesDamage : Receive = TakesDamage + final val takesDamage: Receive = TakesDamage /** * Implementation of the mixin hook will be provided by a child class. @@ -32,7 +33,7 @@ trait Damageable { * @see `takesDamage` * @see `DamageableAmenity.PerformDamage` */ - protected def TakesDamage : Receive + protected def TakesDamage: Receive } object Damageable { @@ -44,7 +45,7 @@ object Damageable { * ... where before1 - change1 = after1, and so forth, for each field that matters * the fields do not have to be labeled but the first (if not only) should always be Health */ - final val LogChannel : String = "DamageResolution" + final val LogChannel: String = "DamageResolution" /** * Does the possibility exist that the designated target can be affected by this projectile's damage? @@ -56,18 +57,16 @@ object Damageable { * @return `true`, if the target can be affected; * `false`, otherwise */ - def CanDamage(obj : Vitality with FactionAffinity, damage : Int, data : ResolvedProjectile) : Boolean = { + def CanDamage(obj: Vitality with FactionAffinity, damage: Int, data: ResolvedProjectile): Boolean = { val definition = obj.Definition damage > 0 && - definition.Damageable && - (definition.DamageableByFriendlyFire || - (data.projectile.owner.Faction != obj.Faction || - (obj match { - case hobj : Hackable => hobj.HackedBy.nonEmpty - case _ => false - }) - ) - ) + definition.Damageable && + (definition.DamageableByFriendlyFire || + (data.projectile.owner.Faction != obj.Faction || + (obj match { + case hobj: Hackable => hobj.HackedBy.nonEmpty + case _ => false + }))) } /** @@ -79,16 +78,15 @@ object Damageable { * @return `true`, if the target can be affected; * `false`, otherwise */ - def CanJammer(obj : Vitality with FactionAffinity, data : ResolvedProjectile) : Boolean = { + def CanJammer(obj: Vitality with FactionAffinity, data: ResolvedProjectile): Boolean = { val projectile = data.projectile projectile.profile.JammerProjectile && - obj.isInstanceOf[JammableUnit] && - (projectile.owner.Faction != obj.Faction || - (obj match { - case hobj : Hackable => hobj.HackedBy.nonEmpty - case _ => false - }) - ) + obj.isInstanceOf[JammableUnit] && + (projectile.owner.Faction != obj.Faction || + (obj match { + case hobj: Hackable => hobj.HackedBy.nonEmpty + case _ => false + })) } /** @@ -99,7 +97,7 @@ object Damageable { * @return `true`, if the target can be affected; * `false`, otherwise */ - def CanDamageOrJammer(obj : Vitality with FactionAffinity, damage : Int, data : ResolvedProjectile) : Boolean = { + def CanDamageOrJammer(obj: Vitality with FactionAffinity, damage: Int, data: ResolvedProjectile): Boolean = { CanDamage(obj, damage, data) || CanJammer(obj, data) } @@ -108,7 +106,7 @@ object Damageable { * @param target the entity being damaged * @param cause historical information about the damage */ - def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { target.Destroyed = true } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableAmenity.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableAmenity.scala index fbe58052..98139527 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableAmenity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableAmenity.scala @@ -11,9 +11,9 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * with specific exceptions for the `ImplantTerminalMech` and the `Generator`. */ trait DamageableAmenity extends DamageableEntity { - def DamageableObject : Amenity + def DamageableObject: Amenity - override protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) DamageableAmenity.DestructionAwareness(target, cause) target.ClearHistory() @@ -21,6 +21,7 @@ trait DamageableAmenity extends DamageableEntity { } object DamageableAmenity { + /** * A destroyed `Amenity` target dispatches two messages to chance its model and operational states. * The common manifestation is a sparking entity that will no longer report being accessible. @@ -31,10 +32,10 @@ object DamageableAmenity { * @param target the entity being destroyed * @param cause historical information about the damage */ - def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { - val zone = target.Zone - val zoneId = zone.Id - val events = zone.AvatarEvents + def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { + val zone = target.Zone + val zoneId = zone.Id + val events = zone.AvatarEvents val targetGUID = target.GUID events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 50, 1)) events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 51, 1)) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableEntity.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableEntity.scala index f4c46079..954ba06b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableEntity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableEntity.scala @@ -16,6 +16,7 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * for both expansion into other mixins and specific application on its own. */ trait DamageableEntity extends Damageable { + /** log specifically for damage events */ private[this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) @@ -23,9 +24,10 @@ trait DamageableEntity extends Damageable { * Log a damage message. * @param msg the message for the damage log */ - protected def DamageLog(msg : String) : Unit = { + protected def DamageLog(msg: String): Unit = { damageLog.info(msg) } + /** * Log a damage message with a decorator for this target. * The decorator is constructed by the `Actor` name of the entity, sliced after the last forward/slash. @@ -34,8 +36,8 @@ trait DamageableEntity extends Damageable { * @param target the entity to be used for the decorator * @param msg the message for the damage log */ - protected def DamageLog(target : Damageable.Target, msg : String) : Unit = { - val name = target.Actor.toString + protected def DamageLog(target: Damageable.Target, msg: String): Unit = { + val name = target.Actor.toString val slashPoint = name.lastIndexOf("/") DamageLog(s"${name.substring(slashPoint + 1, name.length - 1)}: $msg") } @@ -49,10 +51,10 @@ trait DamageableEntity extends Damageable { * @see `Vitality.CanDamage` * @see `Vitality.Damage` */ - protected def TakesDamage : Receive = { + protected def TakesDamage: Receive = { case Vitality.Damage(damage_func) => val obj = DamageableObject - if(obj.CanDamage) { + if (obj.CanDamage) { PerformDamage(obj, damage_func) } } @@ -67,17 +69,16 @@ trait DamageableEntity extends Damageable { * @param target the entity to be damaged * @param applyDamageTo the function that applies the damage to the target in a target-tailored fashion */ - protected def PerformDamage(target : Damageable.Target, applyDamageTo : ResolutionCalculations.Output) : Unit = { + protected def PerformDamage(target: Damageable.Target, applyDamageTo: ResolutionCalculations.Output): Unit = { val originalHealth = target.Health - val cause = applyDamageTo(target) - val health = target.Health - val damage = originalHealth - health - if(WillAffectTarget(target, damage, cause)) { + val cause = applyDamageTo(target) + val health = target.Health + val damage = originalHealth - health + if (WillAffectTarget(target, damage, cause)) { target.History(cause) DamageLog(target, s"BEFORE=$originalHealth, AFTER=$health, CHANGE=$damage") HandleDamage(target, cause, damage) - } - else { + } else { target.Health = originalHealth } } @@ -96,7 +97,7 @@ trait DamageableEntity extends Damageable { * @return `true`, if damage resolution is to be evaluated; * `false`, otherwise */ - protected def WillAffectTarget(target : Damageable.Target, damage : Int, cause : ResolvedProjectile) : Boolean = { + protected def WillAffectTarget(target: Damageable.Target, damage: Int, cause: ResolvedProjectile): Boolean = { Damageable.CanDamageOrJammer(target, damage, cause) } @@ -107,11 +108,10 @@ trait DamageableEntity extends Damageable { * @param cause historical information about the damage * @param damage the amount of damage */ - protected def HandleDamage(target : Damageable.Target, cause : ResolvedProjectile, damage : Int) : Unit = { - if(!target.Destroyed && target.Health <= target.Definition.DamageDestroysAt) { + protected def HandleDamage(target: Damageable.Target, cause: ResolvedProjectile, damage: Int): Unit = { + if (!target.Destroyed && target.Health <= target.Definition.DamageDestroysAt) { DestructionAwareness(target, cause) - } - else { + } else { DamageAwareness(target, cause, damage) } } @@ -122,7 +122,7 @@ trait DamageableEntity extends Damageable { * @param cause historical information about the damage * @param amount the amount of damage */ - protected def DamageAwareness(target : Damageable.Target, cause : ResolvedProjectile, amount : Int) : Unit = { + protected def DamageAwareness(target: Damageable.Target, cause: ResolvedProjectile, amount: Int): Unit = { DamageableEntity.DamageAwareness(target, cause, amount) } @@ -132,13 +132,14 @@ trait DamageableEntity extends Damageable { * @param target the entity being destroyed * @param cause historical information about the damage */ - protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { Damageable.DestructionAwareness(target, cause) DamageableEntity.DestructionAwareness(target, cause) } } object DamageableEntity { + /** * A damaged target dispatches messages to: * - reports its adjusted its health; @@ -157,15 +158,18 @@ object DamageableEntity { * @param target the entity being damaged * @param cause historical information about the damage */ - def DamageAwareness(target : Damageable.Target, cause : ResolvedProjectile, amount : Int) : Unit = { - if(Damageable.CanJammer(target, cause)) { + def DamageAwareness(target: Damageable.Target, cause: ResolvedProjectile, amount: Int): Unit = { + if (Damageable.CanJammer(target, cause)) { target.Actor ! JammableUnit.Jammered(cause) } - if(amount > 0) { + if (amount > 0) { val zone = target.Zone - if(!target.Destroyed) { + if (!target.Destroyed) { val tguid = target.GUID - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttributeToAll(tguid, 0, target.Health)) + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.PlanetsideAttributeToAll(tguid, 0, target.Health) + ) } zone.Activity ! Zone.HotSpot.Activity(cause.target, cause.projectile.owner, cause.hit_pos) } @@ -185,19 +189,22 @@ object DamageableEntity { * @param target the entity being destroyed * @param cause historical information about the damage */ - def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { //un-jam target.Actor ! JammableUnit.ClearJammeredSound() target.Actor ! JammableUnit.ClearJammeredStatus() // - val zone = target.Zone + val zone = target.Zone val zoneId = zone.Id - val tguid = target.GUID + val tguid = target.GUID val attribution = target.Zone.LivePlayers.find { p => cause.projectile.owner.Name.equals(p.Name) } match { case Some(player) => player.GUID - case _ => PlanetSideGUID(0) + case _ => PlanetSideGUID(0) } zone.AvatarEvents ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 0, target.Health)) - zone.AvatarEvents ! AvatarServiceMessage(zoneId, AvatarAction.Destroy(tguid, attribution, Service.defaultPlayerGUID, target.Position)) + zone.AvatarEvents ! AvatarServiceMessage( + zoneId, + AvatarAction.Destroy(tguid, attribution, Service.defaultPlayerGUID, target.Position) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableMountable.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableMountable.scala index 986e40f9..ca47405a 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableMountable.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableMountable.scala @@ -12,6 +12,7 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * Functions to assist other damage-dealing code for objects that contain users. */ object DamageableMountable { + /** * A damaged target alerts its occupants (as it is a `Mountable` object) of the source of the damage. * @see `AvatarAction.HitHint` @@ -25,19 +26,20 @@ object DamageableMountable { * @param target the entity being damaged * @param cause historical information about the damage */ - def DamageAwareness(target : Damageable.Target with Mountable, cause : ResolvedProjectile) : Unit = { - val zone = target.Zone + def DamageAwareness(target: Damageable.Target with Mountable, cause: ResolvedProjectile): Unit = { + val zone = target.Zone val events = zone.AvatarEvents val occupants = target.Seats.values.collect { case seat if seat.isOccupied && seat.Occupant.get.isAlive => seat.Occupant.get } (cause.projectile.owner match { - case pSource : PlayerSource => //player damage + case pSource: PlayerSource => //player damage val name = pSource.Name (zone.LivePlayers.find(_.Name == name).orElse(zone.Corpses.find(_.Name == name)) match { case Some(player) => AvatarAction.HitHint(player.GUID, player.GUID) - case None => AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, pSource.Position)) + case None => + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, pSource.Position)) }) match { case AvatarAction.HitHint(_, guid) => occupants.map { tplayer => (tplayer.Name, AvatarAction.HitHint(guid, tplayer.GUID)) } @@ -47,8 +49,9 @@ object DamageableMountable { case source => //object damage val msg = AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, source.Position)) occupants.map { tplayer => (tplayer.Name, msg) } - }).foreach { case (channel, msg) => - events ! AvatarServiceMessage(channel, msg) + }).foreach { + case (channel, msg) => + events ! AvatarServiceMessage(channel, msg) } } @@ -60,13 +63,15 @@ object DamageableMountable { * @param target the entity being destroyed * @param cause historical information about the damage */ - def DestructionAwareness(target : Damageable.Target with Mountable, cause : ResolvedProjectile) : Unit = { - target.Seats.values.filter(seat => { - seat.isOccupied && seat.Occupant.get.isAlive - }).foreach(seat => { - val tplayer = seat.Occupant.get - tplayer.History(cause) - tplayer.Actor ! Player.Die() - }) + def DestructionAwareness(target: Damageable.Target with Mountable, cause: ResolvedProjectile): Unit = { + target.Seats.values + .filter(seat => { + seat.isOccupied && seat.Occupant.get.isAlive + }) + .foreach(seat => { + val tplayer = seat.Occupant.get + tplayer.History(cause) + tplayer.Actor ! Player.Die() + }) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableVehicle.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableVehicle.scala index c0b6f2ff..82437aba 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableVehicle.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableVehicle.scala @@ -18,70 +18,77 @@ import scala.concurrent.duration._ * The "control" `Actor` mixin for damage-handling code for `Vehicle` objects. */ trait DamageableVehicle extends DamageableEntity { + /** vehicles (may) have shields; they need to be handled */ - private var handleDamageToShields : Boolean = false + private var handleDamageToShields: Boolean = false + /** whether or not the vehicle has been damaged directly, report that damage has occurred */ - private var reportDamageToVehicle : Boolean = false + private var reportDamageToVehicle: Boolean = false - def DamageableObject : Vehicle + def DamageableObject: Vehicle - override protected def TakesDamage : Receive = + override protected def TakesDamage: Receive = super.TakesDamage.orElse { case DamageableVehicle.Damage(cause, damage) => - //cargo vehicles inherit feedback from carrier - reportDamageToVehicle = damage > 0 - DamageAwareness(DamageableObject, cause, amount = 0) + //cargo vehicles inherit feedback from carrier + reportDamageToVehicle = damage > 0 + DamageAwareness(DamageableObject, cause, amount = 0) - case DamageableVehicle.Destruction(cause) => - //cargo vehicles are destroyed when carrier is destroyed - val obj = DamageableObject - obj.Health = 0 - obj.History(cause) - DestructionAwareness(obj, cause) - } + case DamageableVehicle.Destruction(cause) => + //cargo vehicles are destroyed when carrier is destroyed + val obj = DamageableObject + obj.Health = 0 + obj.History(cause) + DestructionAwareness(obj, cause) + } /** * Vehicles may have charged shields that absorb damage before the vehicle's own health is affected. * @param target the entity to be damaged * @param applyDamageTo the function that applies the damage to the target in a target-tailored fashion */ - override protected def PerformDamage(target : Damageable.Target, applyDamageTo : ResolutionCalculations.Output) : Unit = { - val obj = DamageableObject - val originalHealth = obj.Health + override protected def PerformDamage( + target: Damageable.Target, + applyDamageTo: ResolutionCalculations.Output + ): Unit = { + val obj = DamageableObject + val originalHealth = obj.Health val originalShields = obj.Shields - val cause = applyDamageTo(obj) - val health = obj.Health - val shields = obj.Shields - val damageToHealth = originalHealth - health + val cause = applyDamageTo(obj) + val health = obj.Health + val shields = obj.Shields + val damageToHealth = originalHealth - health val damageToShields = originalShields - shields - if(WillAffectTarget(target, damageToHealth + damageToShields, cause)) { + if (WillAffectTarget(target, damageToHealth + damageToShields, cause)) { target.History(cause) - DamageLog(target, s"BEFORE=$originalHealth/$originalShields, AFTER=$health/$shields, CHANGE=$damageToHealth/$damageToShields") + DamageLog( + target, + s"BEFORE=$originalHealth/$originalShields, AFTER=$health/$shields, CHANGE=$damageToHealth/$damageToShields" + ) handleDamageToShields = damageToShields > 0 HandleDamage(target, cause, damageToHealth + damageToShields) - } - else { + } else { obj.Health = originalHealth obj.Shields = originalShields } } - override protected def DamageAwareness(target : Target, cause : ResolvedProjectile, amount : Int) : Unit = { - val obj = DamageableObject + override protected def DamageAwareness(target: Target, cause: ResolvedProjectile, amount: Int): Unit = { + val obj = DamageableObject val handleShields = handleDamageToShields handleDamageToShields = false val handleReport = reportDamageToVehicle || amount > 0 reportDamageToVehicle = false - if(Damageable.CanDamageOrJammer(target, amount, cause)) { + if (Damageable.CanDamageOrJammer(target, amount, cause)) { super.DamageAwareness(target, cause, amount) } - if(handleReport) { + if (handleReport) { DamageableMountable.DamageAwareness(obj, cause) } DamageableVehicle.DamageAwareness(obj, cause, amount, handleShields) } - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) val obj = DamageableObject DamageableMountable.DestructionAwareness(obj, cause) @@ -91,17 +98,19 @@ trait DamageableVehicle extends DamageableEntity { } object DamageableVehicle { + /** * Message for instructing the target's cargo vehicles about a damage source affecting their carrier. * @param cause historical information about damage */ - private case class Damage(cause : ResolvedProjectile, amount : Int) + private case class Damage(cause: ResolvedProjectile, amount: Int) + /** * Message for instructing the target's cargo vehicles that their carrier is destroyed, * and they should be destroyed too. * @param cause historical information about damage */ - private case class Destruction(cause : ResolvedProjectile) + private case class Destruction(cause: ResolvedProjectile) /** * Most all vehicles and the weapons mounted to them can jam @@ -118,19 +127,22 @@ object DamageableVehicle { * @param damage how much damage was performed * @param damageToShields dispatch a shield strength update */ - def DamageAwareness(target : Vehicle, cause : ResolvedProjectile, damage : Int, damageToShields : Boolean) : Unit = { + def DamageAwareness(target: Vehicle, cause: ResolvedProjectile, damage: Int, damageToShields: Boolean): Unit = { //alert cargo occupants to damage source target.CargoHolds.values.foreach(hold => { hold.Occupant match { case Some(cargo) => - cargo.Actor ! DamageableVehicle.Damage(cause, damage + (if(damageToShields) 1 else 0)) + cargo.Actor ! DamageableVehicle.Damage(cause, damage + (if (damageToShields) 1 else 0)) case None => ; } }) //shields - if(damageToShields) { + if (damageToShields) { val zone = target.Zone - zone.VehicleEvents ! VehicleServiceMessage(s"${target.Actor}", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, target.Shields)) + zone.VehicleEvents ! VehicleServiceMessage( + s"${target.Actor}", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, target.Shields) + ) } } @@ -155,7 +167,7 @@ object DamageableVehicle { * @param target the entity being destroyed * @param cause historical information about the damage */ - def DestructionAwareness(target : Vehicle, cause : ResolvedProjectile) : Unit = { + def DestructionAwareness(target: Vehicle, cause: ResolvedProjectile): Unit = { val zone = target.Zone //cargo vehicles die with us target.CargoHolds.values.foreach(hold => { @@ -172,13 +184,19 @@ object DamageableVehicle { case GlobalDefinitions.router => target.Actor ! Deployment.TryDeploymentChange(DriveState.Undeploying) VehicleService.BeforeUnloadVehicle(target, zone) - zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.ToggleTeleportSystem(PlanetSideGUID(0), target, None)) + zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.ToggleTeleportSystem(PlanetSideGUID(0), target, None) + ) case _ => ; } //shields - if(target.Shields > 0) { + if (target.Shields > 0) { target.Shields = 0 - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, 0)) + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, target.GUID, 68, 0) + ) } target.Actor ! Vehicle.Deconstruct(Some(1 minute)) target.ClearHistory() diff --git a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableWeaponTurret.scala b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableWeaponTurret.scala index 6be21934..eea7b6d0 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableWeaponTurret.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/damage/DamageableWeaponTurret.scala @@ -13,16 +13,16 @@ import services.vehicle.VehicleServiceMessage * The "control" `Actor` mixin for damage-handling code for `WeaponTurret` objects. */ trait DamageableWeaponTurret extends DamageableEntity { - def DamageableObject : Damageable.Target with WeaponTurret + def DamageableObject: Damageable.Target with WeaponTurret - override protected def DamageAwareness(target : Damageable.Target, cause : ResolvedProjectile, amount : Int) : Unit = { + override protected def DamageAwareness(target: Damageable.Target, cause: ResolvedProjectile, amount: Int): Unit = { super.DamageAwareness(target, cause, amount) - if(amount > 0) { + if (amount > 0) { DamageableMountable.DamageAwareness(DamageableObject, cause) } } - override protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) val obj = DamageableObject DamageableWeaponTurret.DestructionAwareness(obj, cause) @@ -31,6 +31,7 @@ trait DamageableWeaponTurret extends DamageableEntity { } object DamageableWeaponTurret { + /** * A destroyed target dispatches a message to conceal (delete) its weapons from users. * If affected by a jammer property, the jammer propoerty will be removed. @@ -52,10 +53,10 @@ object DamageableWeaponTurret { * but the handling code closely associates with the former * @param cause historical information about the damage */ - def DestructionAwareness(target : Damageable.Target with MountedWeapons, cause : ResolvedProjectile) : Unit = { + def DestructionAwareness(target: Damageable.Target with MountedWeapons, cause: ResolvedProjectile): Unit = { //wreckage has no (visible) mounted weapons - val zone = target.Zone - val zoneId = zone.Id + val zone = target.Zone + val zoneId = zone.Id val avatarEvents = zone.AvatarEvents target.Weapons.values .filter { @@ -66,8 +67,8 @@ object DamageableWeaponTurret { avatarEvents ! AvatarServiceMessage(zoneId, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, wep.GUID)) }) target match { - case turret : WeaponTurret => - if(turret.Upgrade != TurretUpgrade.None) { + case turret: WeaponTurret => + if (turret.Upgrade != TurretUpgrade.None) { val vehicleEvents = zone.VehicleEvents vehicleEvents ! VehicleServiceMessage.TurretUpgrade(TurretUpgrader.ClearSpecific(List(turret), zone)) vehicleEvents ! VehicleServiceMessage.TurretUpgrade(TurretUpgrader.AddTask(turret, zone, TurretUpgrade.None)) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/deploy/Deployment.scala b/common/src/main/scala/net/psforever/objects/serverobject/deploy/Deployment.scala index fe2bb7c8..719c421e 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/deploy/Deployment.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/deploy/Deployment.scala @@ -11,23 +11,24 @@ import net.psforever.types.DriveState * Initially, the deployment state is `Mobile`. */ trait Deployment { - this : PlanetSideServerObject => + this: PlanetSideServerObject => - private var deployState : DriveState.Value = DriveState.Mobile + private var deployState: DriveState.Value = DriveState.Mobile - def DeployTime : Int = 0 //ms + def DeployTime: Int = 0 //ms - def UndeployTime : Int = 0 //ms + def UndeployTime: Int = 0 //ms - def DeploymentState : DriveState.Value = deployState + def DeploymentState: DriveState.Value = deployState - def DeploymentState_=(to_deploy_state : DriveState.Value) : DriveState.Value = { + def DeploymentState_=(to_deploy_state: DriveState.Value): DriveState.Value = { deployState = to_deploy_state DeploymentState } } object Deployment { + /** * A shorthand `type` for a valid object of `Deployment`. */ @@ -37,36 +38,41 @@ object Deployment { * A message for instigating a change in deployment state. * @param state the new deployment state */ - final case class TryDeploymentChange(state : DriveState.Value) + final case class TryDeploymentChange(state: DriveState.Value) + /** * A message for instigating a change to a deploy state. * @param state the new deploy state */ - final case class TryDeploy(state : DriveState.Value) + final case class TryDeploy(state: DriveState.Value) + /** * A message for instigating a change to an undeploy state. * @param state the new undeploy state */ - final case class TryUndeploy(state : DriveState.Value) + final case class TryUndeploy(state: DriveState.Value) + /** * A response message to report successful deploy change. * @param obj the object being deployed * @param state the new deploy state */ - final case class CanDeploy(obj : DeploymentObject, state : DriveState.Value) + final case class CanDeploy(obj: DeploymentObject, state: DriveState.Value) + /** * A response message to report successful undeploy change. * @param obj the object being undeployed * @param state the new undeploy state */ - final case class CanUndeploy(obj : DeploymentObject, state : DriveState.Value) + final case class CanUndeploy(obj: DeploymentObject, state: DriveState.Value) + /** * A response message to report an unsuccessful deployment change. * @param obj the object being changed * @param to_state the attempted deployment state * @param reason a string explaining why the state can not or will not change */ - final case class CanNotChangeDeployment(obj : DeploymentObject, to_state : DriveState.Value, reason : String) + final case class CanNotChangeDeployment(obj: DeploymentObject, to_state: DriveState.Value, reason: String) /** * Given a starting deployment state, provide the next deployment state in a sequence.
@@ -79,13 +85,13 @@ object Deployment { * @param from_state the original deployment state * @return the deployment state that is being transitioned */ - def NextState(from_state : DriveState.Value) : DriveState.Value = { + def NextState(from_state: DriveState.Value): DriveState.Value = { from_state match { - case DriveState.Mobile => DriveState.Deploying - case DriveState.Deploying => DriveState.Deployed - case DriveState.Deployed => DriveState.Undeploying + case DriveState.Mobile => DriveState.Deploying + case DriveState.Deploying => DriveState.Deployed + case DriveState.Deployed => DriveState.Undeploying case DriveState.Undeploying => DriveState.Mobile - case DriveState.State7 => DriveState.State7 + case DriveState.State7 => DriveState.State7 } } @@ -94,13 +100,14 @@ object Deployment { * @param state the state to check * @return yes, if it is a valid state; otherwise, false */ - def CheckForDeployState(state : DriveState.Value) : Boolean = + def CheckForDeployState(state: DriveState.Value): Boolean = state == DriveState.Deploying || state == DriveState.Deployed + /** * Is this `state` considered one of "undeploy?" * @param state the state to check * @return yes, if it is a valid state; otherwise, false */ - def CheckForUndeployState(state : DriveState.Value) : Boolean = + def CheckForUndeployState(state: DriveState.Value): Boolean = state == DriveState.Undeploying || state == DriveState.Mobile || state == DriveState.State7 } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/deploy/DeploymentBehavior.scala b/common/src/main/scala/net/psforever/objects/serverobject/deploy/DeploymentBehavior.scala index 94c1702e..df570795 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/deploy/DeploymentBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/deploy/DeploymentBehavior.scala @@ -13,45 +13,47 @@ import akka.actor.Actor * @see `DriveState` */ trait DeploymentBehavior { - this : Actor => + this: Actor => - def DeploymentObject : Deployment.DeploymentObject + def DeploymentObject: Deployment.DeploymentObject - val deployBehavior : Receive = { + val deployBehavior: Receive = { case Deployment.TryDeploymentChange(state) => val obj = DeploymentObject - if(Deployment.NextState(obj.DeploymentState) == state - && (obj.DeploymentState = state) == state) { - if(Deployment.CheckForDeployState(state)) { + if ( + Deployment.NextState(obj.DeploymentState) == state + && (obj.DeploymentState = state) == state + ) { + if (Deployment.CheckForDeployState(state)) { sender ! Deployment.CanDeploy(obj, state) - } - else { //may need to check in future + } else { //may need to check in future sender ! Deployment.CanUndeploy(obj, state) } - } - else { + } else { sender ! Deployment.CanNotChangeDeployment(obj, state, "incorrect transition state") } case Deployment.TryDeploy(state) => val obj = DeploymentObject - if(Deployment.CheckForDeployState(state) + if ( + Deployment.CheckForDeployState(state) && Deployment.NextState(obj.DeploymentState) == state - && (obj.DeploymentState = state) == state) { + && (obj.DeploymentState = state) == state + ) { sender ! Deployment.CanDeploy(obj, state) - } - else { + } else { sender ! Deployment.CanNotChangeDeployment(obj, state, "incorrect deploy transition state") } case Deployment.TryUndeploy(state) => val obj = DeploymentObject - if(Deployment.CheckForUndeployState(state) + if ( + Deployment.CheckForUndeployState(state) && Deployment.NextState(obj.DeploymentState) == state - && (obj.DeploymentState = state) == state) { + && (obj.DeploymentState = state) == state + ) { sender ! Deployment.CanUndeploy(obj, state) - } - else { + } else { sender ! Deployment.CanNotChangeDeployment(obj, state, "incorrect undeploy transition state") } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/doors/Door.scala b/common/src/main/scala/net/psforever/objects/serverobject/doors/Door.scala index 27781b44..56e7193b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/doors/Door.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/doors/Door.scala @@ -9,43 +9,43 @@ import net.psforever.packet.game.UseItemMessage * A structure-owned server object that is a "door" that can open and can close. * @param ddef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class Door(private val ddef : DoorDefinition) extends Amenity { - private var openState : Option[Player] = None +class Door(private val ddef: DoorDefinition) extends Amenity { + private var openState: Option[Player] = None - def isOpen : Boolean = openState.isDefined + def isOpen: Boolean = openState.isDefined - def Open : Option[Player] = openState + def Open: Option[Player] = openState - def Open_=(player : Player) : Option[Player] = { + def Open_=(player: Player): Option[Player] = { Open_=(Some(player)) } - def Open_=(open : Option[Player]) : Option[Player] = { + def Open_=(open: Option[Player]): Option[Player] = { openState = open Open } - def Use(player : Player, msg : UseItemMessage) : Door.Exchange = { - if(openState.isEmpty) { + def Use(player: Player, msg: UseItemMessage): Door.Exchange = { + if (openState.isEmpty) { openState = Some(player) Door.OpenEvent() - } - else { + } else { openState = None Door.CloseEvent() } } - def Definition : DoorDefinition = ddef + def Definition: DoorDefinition = ddef } object Door { + /** * Entry message into this `Door` that carries the request. * @param player the player who sent this request message * @param msg the original packet carrying the request */ - final case class Use(player : Player, msg : UseItemMessage) + final case class Use(player: Player, msg: UseItemMessage) /** * A basic `Trait` connecting all of the actionable `Door` response messages. @@ -58,7 +58,7 @@ object Door { * @param msg the original packet carrying the request * @param response the result of the processed request */ - final case class DoorMessage(player : Player, msg : UseItemMessage, response : Exchange) + final case class DoorMessage(player: Player, msg: UseItemMessage, response: Exchange) /** * This door will open. @@ -79,18 +79,19 @@ object Door { * Overloaded constructor. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(tdef : DoorDefinition) : Door = { + def apply(tdef: DoorDefinition): Door = { new Door(tdef) } import akka.actor.ActorContext + /** * Instantiate and configure a `Door` object. * @param id the unique id that will be assigned to this entity * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `Door` object */ - def Constructor(id : Int, context : ActorContext) : Door = { + def Constructor(id: Int, context: ActorContext): Door = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions @@ -100,6 +101,7 @@ object Door { } import net.psforever.types.Vector3 + /** * Instantiate and configure a `Door` object that has knowledge of both its position and outwards-facing direction. * The assumption is that this door will be paired with an IFF Lock, thus, has conditions for opening. @@ -108,7 +110,7 @@ object Door { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `Door` object */ - def Constructor(pos : Vector3)(id : Int, context : ActorContext) : Door = { + def Constructor(pos: Vector3)(id: Int, context: ActorContext): Door = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions diff --git a/common/src/main/scala/net/psforever/objects/serverobject/doors/DoorControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/doors/DoorControl.scala index 0b112345..f1dd3e92 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/doors/DoorControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/doors/DoorControl.scala @@ -8,14 +8,15 @@ import net.psforever.objects.serverobject.affinity.{FactionAffinity, FactionAffi * An `Actor` that handles messages being dispatched to a specific `Door`. * @param door the `Door` object being governed */ -class DoorControl(door : Door) extends Actor with FactionAffinityBehavior.Check { - def FactionObject : FactionAffinity = door +class DoorControl(door: Door) extends Actor with FactionAffinityBehavior.Check { + def FactionObject: FactionAffinity = door - def receive : Receive = checkBehavior.orElse { - case Door.Use(player, msg) => - sender ! Door.DoorMessage(player, msg, door.Use(player, msg)) + def receive: Receive = + checkBehavior.orElse { + case Door.Use(player, msg) => + sender ! Door.DoorMessage(player, msg, door.Use(player, msg)) - case _ => - sender ! Door.NoEvent() - } + case _ => + sender ! Door.NoEvent() + } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/generator/Generator.scala b/common/src/main/scala/net/psforever/objects/serverobject/generator/Generator.scala index d1309502..b66646cb 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/generator/Generator.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/generator/Generator.scala @@ -14,27 +14,27 @@ import net.psforever.types.PlanetSideGeneratorState * The generator is capable of self-repair from a completely destroyed state, as long as it has an supply of nanites. * @param gdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class Generator(private val gdef : GeneratorDefinition) extends Amenity { - private var condition : PlanetSideGeneratorState.Value = PlanetSideGeneratorState.Normal +class Generator(private val gdef: GeneratorDefinition) extends Amenity { + private var condition: PlanetSideGeneratorState.Value = PlanetSideGeneratorState.Normal - def Condition : PlanetSideGeneratorState.Value = condition + def Condition: PlanetSideGeneratorState.Value = condition - def Condition_=(state : PlanetSideGeneratorState.Value) : PlanetSideGeneratorState.Value = { + def Condition_=(state: PlanetSideGeneratorState.Value): PlanetSideGeneratorState.Value = { condition = state Condition } - def Definition : GeneratorDefinition = gdef + def Definition: GeneratorDefinition = gdef } object Generator { - def apply(gdef : GeneratorDefinition) : Generator = { + def apply(gdef: GeneratorDefinition): Generator = { new Generator(gdef) } import akka.actor.ActorContext import net.psforever.types.Vector3 - def Constructor(pos : Vector3)(id : Int, context : ActorContext) : Generator = { + def Constructor(pos: Vector3)(id: Int, context: ActorContext): Generator = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions diff --git a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala index a5415cce..e08d6940 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala @@ -22,74 +22,78 @@ import scala.concurrent.ExecutionContext.Implicits.global * An `Actor` that handles messages being dispatched to a specific `Generator`. * @param gen the `Generator` object being governed */ -class GeneratorControl(gen : Generator) extends Actor - with FactionAffinityBehavior.Check - with DamageableEntity - with RepairableEntity { - def FactionObject = gen - def DamageableObject = gen - def RepairableObject = gen - var imminentExplosion : Boolean = false - var alarmCooldownPeriod : Boolean = false +class GeneratorControl(gen: Generator) + extends Actor + with FactionAffinityBehavior.Check + with DamageableEntity + with RepairableEntity { + def FactionObject = gen + def DamageableObject = gen + def RepairableObject = gen + var imminentExplosion: Boolean = false + var alarmCooldownPeriod: Boolean = false - def receive : Receive = checkBehavior - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case GeneratorControl.GeneratorExplodes() => //TODO this only works with projectiles right now! - val zone = gen.Zone - gen.Health = 0 - super.DestructionAwareness(gen, gen.LastShot.get) - gen.Condition = PlanetSideGeneratorState.Destroyed - GeneratorControl.UpdateOwner(gen) - //kaboom - zone.AvatarEvents ! AvatarServiceMessage( - zone.Id, AvatarAction.SendResponse( - Service.defaultPlayerGUID, TriggerEffectMessage(gen.GUID, "explosion_generator", None, None) + def receive: Receive = + checkBehavior + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case GeneratorControl.GeneratorExplodes() => //TODO this only works with projectiles right now! + val zone = gen.Zone + gen.Health = 0 + super.DestructionAwareness(gen, gen.LastShot.get) + gen.Condition = PlanetSideGeneratorState.Destroyed + GeneratorControl.UpdateOwner(gen) + //kaboom + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + TriggerEffectMessage(gen.GUID, "explosion_generator", None, None) + ) ) - ) - imminentExplosion = false - //kill everyone within 14m - gen.Owner match { - case b : Building => - val genDef = gen.Definition - b.PlayersInSOI.collect { - case player if player.isAlive && Vector3.DistanceSquared(player.Position, gen.Position) < 196 => - player.History(DamageFromExplosion(PlayerSource(player), genDef)) - player.Actor ! Player.Die() - } - case _ => ; - } - gen.ClearHistory() + imminentExplosion = false + //kill everyone within 14m + gen.Owner match { + case b: Building => + val genDef = gen.Definition + b.PlayersInSOI.collect { + case player if player.isAlive && Vector3.DistanceSquared(player.Position, gen.Position) < 196 => + player.History(DamageFromExplosion(PlayerSource(player), genDef)) + player.Actor ! Player.Die() + } + case _ => ; + } + gen.ClearHistory() - case GeneratorControl.UnderThreatAlarm() => - if(!alarmCooldownPeriod) { - alarmCooldownPeriod = true - GeneratorControl.BroadcastGeneratorEvent(gen, event = 15) - context.system.scheduler.scheduleOnce(delay = 5 seconds, self, GeneratorControl.AlarmReset()) - } + case GeneratorControl.UnderThreatAlarm() => + if (!alarmCooldownPeriod) { + alarmCooldownPeriod = true + GeneratorControl.BroadcastGeneratorEvent(gen, event = 15) + context.system.scheduler.scheduleOnce(delay = 5 seconds, self, GeneratorControl.AlarmReset()) + } - case GeneratorControl.AlarmReset() => - alarmCooldownPeriod = false + case GeneratorControl.AlarmReset() => + alarmCooldownPeriod = false - case _ => ; - } + case _ => ; + } - override protected def CanPerformRepairs(obj : Target, player : Player, item : Tool) : Boolean = { + override protected def CanPerformRepairs(obj: Target, player: Player, item: Tool): Boolean = { !imminentExplosion && super.CanPerformRepairs(obj, player, item) } - override protected def WillAffectTarget(target : Target, damage : Int, cause : ResolvedProjectile) : Boolean = { + override protected def WillAffectTarget(target: Target, damage: Int, cause: ResolvedProjectile): Boolean = { !imminentExplosion && super.WillAffectTarget(target, damage, cause) } - override protected def DamageAwareness(target : Target, cause : ResolvedProjectile, amount : Int) : Unit = { + override protected def DamageAwareness(target: Target, cause: ResolvedProjectile, amount: Int): Unit = { super.DamageAwareness(target, cause, amount) GeneratorControl.DamageAwareness(gen, cause, amount) } - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { - if(!target.Destroyed) { + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { + if (!target.Destroyed) { target.Health = 1 //temporary imminentExplosion = true context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes()) @@ -97,7 +101,7 @@ class GeneratorControl(gen : Generator) extends Actor } } - override def Restoration(obj : Repairable.Target) : Unit = { + override def Restoration(obj: Repairable.Target): Unit = { super.Restoration(obj) gen.Condition = PlanetSideGeneratorState.Normal GeneratorControl.UpdateOwner(gen) @@ -106,6 +110,7 @@ class GeneratorControl(gen : Generator) extends Actor } object GeneratorControl { + /** * na */ @@ -115,6 +120,7 @@ object GeneratorControl { * na */ private case class UnderThreatAlarm() + /** * na */ @@ -124,10 +130,10 @@ object GeneratorControl { * na * @param obj na */ - private def UpdateOwner(obj : Generator) : Unit = { + private def UpdateOwner(obj: Generator): Unit = { obj.Owner match { - case b : Building => b.Actor ! Building.AmenityStateChange(obj) - case _ => ; + case b: Building => b.Actor ! Building.AmenityStateChange(obj) + case _ => ; } } @@ -136,11 +142,11 @@ object GeneratorControl { * @param target the generator * @param event the action code for the event */ - private def BroadcastGeneratorEvent(target : Generator, event : Int) : Unit = { + private def BroadcastGeneratorEvent(target: Generator, event: Int): Unit = { target.Owner match { - case b : Building => + case b: Building => val events = target.Zone.AvatarEvents - val msg = AvatarAction.GenericObjectAction(Service.defaultPlayerGUID, target.Owner.GUID, event) + val msg = AvatarAction.GenericObjectAction(Service.defaultPlayerGUID, target.Owner.GUID, event) b.PlayersInSOI.foreach { player => events ! AvatarServiceMessage(player.Name, msg) } @@ -154,11 +160,11 @@ object GeneratorControl { * @param cause historical information about the damage * @param amount the amount of damage */ - def DamageAwareness(target : Generator, cause : ResolvedProjectile, amount : Int) : Unit = { - if(!target.Destroyed) { - val health : Float = target.Health.toFloat - val max : Float = target.MaxHealth.toFloat - if(target.Condition != PlanetSideGeneratorState.Critical && health / max < 0.51f) { //becoming critical + def DamageAwareness(target: Generator, cause: ResolvedProjectile, amount: Int): Unit = { + if (!target.Destroyed) { + val health: Float = target.Health.toFloat + val max: Float = target.MaxHealth.toFloat + if (target.Condition != PlanetSideGeneratorState.Critical && health / max < 0.51f) { //becoming critical target.Condition = PlanetSideGeneratorState.Critical GeneratorControl.UpdateOwner(target) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorDefinition.scala index 3e6236bd..42126533 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorDefinition.scala @@ -6,6 +6,6 @@ import net.psforever.objects.serverobject.structures.AmenityDefinition /** * The definition for a `Generator` object. */ -class GeneratorDefinition(objectId : Int) extends AmenityDefinition(objectId) { +class GeneratorDefinition(objectId: Int) extends AmenityDefinition(objectId) { Name = "generator" } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/hackable/GenericHackables.scala b/common/src/main/scala/net/psforever/objects/serverobject/hackable/GenericHackables.scala index 3fb9dfb8..e2d0d7f3 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/hackable/GenericHackables.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/hackable/GenericHackables.scala @@ -20,20 +20,23 @@ object GenericHackables { * @param obj the object being hacked * @return the percentage amount of progress per tick */ - def GetHackSpeed(player : Player, obj: PlanetSideServerObject): Float = { + def GetHackSpeed(player: Player, obj: PlanetSideServerObject): Float = { val playerHackLevel = Player.GetHackLevel(player) val timeToHack = obj match { - case vehicle : Vehicle => vehicle.JackingDuration(playerHackLevel).toFloat - case hackable : Hackable => hackable.HackDuration(playerHackLevel).toFloat + case vehicle: Vehicle => vehicle.JackingDuration(playerHackLevel).toFloat + case hackable: Hackable => hackable.HackDuration(playerHackLevel).toFloat case _ => - log.warn(s"${player.Name} tried to hack an object that has no hack time defined - ${obj.Definition.Name}#${obj.GUID} on ${obj.Zone.Id}") + log.warn( + s"${player.Name} tried to hack an object that has no hack time defined - ${obj.Definition.Name}#${obj.GUID} on ${obj.Zone.Id}" + ) 0f } - if(timeToHack == 0) { - log.warn(s"${player.Name} tried to hack an object that they don't have the correct hacking level for - ${obj.Definition.Name}#${obj.GUID} on ${obj.Zone.Id}") + if (timeToHack == 0) { + log.warn( + s"${player.Name} tried to hack an object that they don't have the correct hacking level for - ${obj.Definition.Name}#${obj.GUID} on ${obj.Zone.Id}" + ) 0f - } - else { + } else { //timeToHack is in seconds; progress is measured in quarters of a second (250ms) (100f / timeToHack) / 4 } @@ -55,33 +58,31 @@ object GenericHackables { * @return `true`, if the next cycle of progress should occur; * `false`, otherwise */ - def HackingTickAction(progressType : Int, tplayer : Player, target : PlanetSideServerObject, tool_guid : PlanetSideGUID)(progress : Float) : Boolean = { + def HackingTickAction(progressType: Int, tplayer: Player, target: PlanetSideServerObject, tool_guid: PlanetSideGUID)( + progress: Float + ): Boolean = { //hack state for progress bar visibility - val vis = if(progress <= 0L) { + val vis = if (progress <= 0L) { HackState.Start - } - else if(progress >= 100L) { + } else if (progress >= 100L) { HackState.Finished - } - else if(target.isMoving(1f)) { + } else if (target.isMoving(1f)) { // If the object is moving (more than slightly to account for things like magriders rotating, or the last velocity reported being the magrider dipping down on dismount) then cancel the hack HackState.Cancelled - } - else { + } else { HackState.Ongoing } target.Zone.AvatarEvents ! AvatarServiceMessage( tplayer.Name, - AvatarAction.SendResponse(Service.defaultPlayerGUID, - if(!target.HasGUID) { + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + if (!target.HasGUID) { //cancel the hack (target is gone) HackMessage(progressType, target.GUID, tplayer.GUID, 0, 0L, HackState.Cancelled, 8L) - } - else if(vis == HackState.Cancelled) { + } else if (vis == HackState.Cancelled) { //cancel the hack (e.g. vehicle drove away) HackMessage(progressType, target.GUID, tplayer.GUID, 0, 0L, vis, 8L) - } - else { + } else { HackMessage(progressType, target.GUID, tplayer.GUID, progress.toInt, 0L, vis, 8L) } ) @@ -99,7 +100,7 @@ object GenericHackables { * @see `HackMessage` */ //TODO add params here depending on which params in HackMessage are important - def FinishHacking(target : PlanetSideServerObject with Hackable, user : Player, unk : Long)() : Unit = { + def FinishHacking(target: PlanetSideServerObject with Hackable, user: Player, unk: Long)(): Unit = { import akka.pattern.ask import scala.concurrent.duration._ log.info(s"Hacked a $target") @@ -108,13 +109,18 @@ object GenericHackables { val tplayer = user ask(target.Actor, CommonMessages.Hack(tplayer, target))(1 second).mapTo[Boolean].onComplete { case Success(_) => - val zone = target.Zone + val zone = target.Zone val zoneId = zone.Id - val pguid = tplayer.GUID - zone.LocalEvents ! LocalServiceMessage(zoneId, LocalAction.TriggerSound(pguid, target.HackSound, tplayer.Position, 30, 0.49803925f)) - zone.LocalEvents ! LocalServiceMessage(zoneId, LocalAction.HackTemporarily(pguid, zone, target, unk, target.HackEffectDuration(Player.GetHackLevel(user)))) + val pguid = tplayer.GUID + zone.LocalEvents ! LocalServiceMessage( + zoneId, + LocalAction.TriggerSound(pguid, target.HackSound, tplayer.Position, 30, 0.49803925f) + ) + zone.LocalEvents ! LocalServiceMessage( + zoneId, + LocalAction.HackTemporarily(pguid, zone, target, unk, target.HackEffectDuration(Player.GetHackLevel(user))) + ) case Failure(_) => log.warn(s"Hack message failed on target guid: ${target.GUID}") } } } - diff --git a/common/src/main/scala/net/psforever/objects/serverobject/hackable/Hackable.scala b/common/src/main/scala/net/psforever/objects/serverobject/hackable/Hackable.scala index cea75564..17ed208b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/hackable/Hackable.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/hackable/Hackable.scala @@ -7,11 +7,12 @@ import net.psforever.packet.game.TriggeredSound import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3} trait Hackable { - _ : FactionAffinity => + _: FactionAffinity => + /** 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)) + 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 who caused it. @@ -20,16 +21,15 @@ trait Hackable { * @param agent a `Player`, or no player * @return the player hack entry */ - def HackedBy_=(agent : Option[Player]) : Option[HackInfo] = { + 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) { + if (actor.Faction == this.Faction) { //hack cleared hackedBy = None - } - else if(actor.Faction != info.hackerFaction) { + } 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)) } @@ -39,31 +39,31 @@ trait Hackable { HackedBy } - def HackedBy_=(hackInfo : HackInfo) : Option[HackInfo] = { + 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 - def HackSound_=(sound : TriggeredSound.Value) : TriggeredSound.Value = { + private var hackSound: TriggeredSound.Value = TriggeredSound.HackDoor + def HackSound: TriggeredSound.Value = hackSound + def HackSound_=(sound: TriggeredSound.Value): TriggeredSound.Value = { hackSound = sound hackSound } /** The duration in seconds a hack lasts for, based on the hacker's certification level */ - private var hackEffectDuration = Array(0, 0, 0 , 0) + private var hackEffectDuration = Array(0, 0, 0, 0) def HackEffectDuration: Array[Int] = hackEffectDuration - def HackEffectDuration_=(arr: Array[Int]) : Array[Int] = { + def HackEffectDuration_=(arr: Array[Int]): Array[Int] = { hackEffectDuration = arr arr } /** How long it takes to hack the object in seconds, based on the hacker's certification level */ - private var hackDuration = Array(0, 0, 0, 0) + private var hackDuration = Array(0, 0, 0, 0) def HackDuration: Array[Int] = hackDuration - def HackDuration_=(arr: Array[Int]) : Array[Int] = { + def HackDuration_=(arr: Array[Int]): Array[Int] = { hackDuration = arr arr } @@ -82,13 +82,15 @@ trait Hackable { } object Hackable { - final case class HackInfo(hackerName : String, - hackerGUID : PlanetSideGUID, - hackerFaction : PlanetSideEmpire.Value, - hackerPos : Vector3, - hackStartTime : Long, - hackDuration : Long) { - def Duration(time : Long) : HackInfo = + 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) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableBehavior.scala b/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableBehavior.scala index 9a30fd8d..647a7fd3 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableBehavior.scala @@ -5,16 +5,17 @@ import akka.actor.Actor import net.psforever.objects.serverobject.CommonMessages object HackableBehavior { + /** * The logic governing generic `Hackable` objects that use the `Hack` and `ClearHack` message. * This is a mix-in trait for combining with existing `Receive` logic. * @see `Hackable` */ trait GenericHackable { - this : Actor => - def HackableObject : Hackable + this: Actor => + def HackableObject: Hackable - val hackableBehavior : Receive = { + val hackableBehavior: Receive = { case CommonMessages.Hack(player, _, _) => val obj = HackableObject obj.HackedBy = player diff --git a/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableDefinition.scala index f22f65c9..40b5cb6a 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/hackable/HackableDefinition.scala @@ -2,19 +2,19 @@ package net.psforever.objects.serverobject.hackable class HackableDefinition { - private var hackable : Boolean = false - private var magicNumber : Long = 0 + private var hackable: Boolean = false + private var magicNumber: Long = 0 - def Hackable : Boolean = hackable + def Hackable: Boolean = hackable - def Hackable_=(state : Boolean) : Boolean = { + def Hackable_=(state: Boolean): Boolean = { hackable = state Hackable } - def MagicNumber : Long = magicNumber + def MagicNumber: Long = magicNumber - def MagicNumber_=(magic : Long) : Long = { + def MagicNumber_=(magic: Long): Long = { magicNumber = magic MagicNumber } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMech.scala b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMech.scala index b6fed718..607d0bca 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMech.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMech.scala @@ -14,43 +14,47 @@ import net.psforever.types.Vector3 * For the most part, it merely implements the support data structures indicated by `Mountable`. * @param idef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class ImplantTerminalMech(private val idef : ImplantTerminalMechDefinition) extends Amenity with Mountable with Hackable { - private val seats : Map[Int, Seat] = Map( 0 -> new Seat(idef.Seats(0)) ) +class ImplantTerminalMech(private val idef: ImplantTerminalMechDefinition) + extends Amenity + with Mountable + with Hackable { + private val seats: Map[Int, Seat] = Map(0 -> new Seat(idef.Seats(0))) HackSound = TriggeredSound.HackTerminal HackEffectDuration = Array(0, 30, 60, 90) HackDuration = Array(0, 10, 5, 3) - def Seats : Map[Int, Seat] = seats + def Seats: Map[Int, Seat] = seats - def Seat(seatNum : Int) : Option[Seat] = seats.get(seatNum) + def Seat(seatNum: Int): Option[Seat] = seats.get(seatNum) - def MountPoints : Map[Int, Int] = idef.MountPoints + def MountPoints: Map[Int, Int] = idef.MountPoints - def GetSeatFromMountPoint(mount : Int) : Option[Int] = idef.MountPoints.get(mount) + def GetSeatFromMountPoint(mount: Int): Option[Int] = idef.MountPoints.get(mount) - def PassengerInSeat(user : Player) : Option[Int] = { - if(seats(0).Occupant.contains(user)) { + def PassengerInSeat(user: Player): Option[Int] = { + if (seats(0).Occupant.contains(user)) { Some(0) - } - else { + } else { None } } - def Definition : ImplantTerminalMechDefinition = idef + def Definition: ImplantTerminalMechDefinition = idef } object ImplantTerminalMech { + /** * Overloaded constructor. * @param idef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(idef : ImplantTerminalMechDefinition) : ImplantTerminalMech = { + def apply(idef: ImplantTerminalMechDefinition): ImplantTerminalMech = { new ImplantTerminalMech(idef) } import akka.actor.ActorContext + /** * Instantiate an configure a `ImplantTerminalMech` object * @param pos the position of the entity @@ -58,22 +62,28 @@ object ImplantTerminalMech { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `ImplantTerminalMech` object */ - def Constructor(pos : Vector3)(id : Int, context : ActorContext) : ImplantTerminalMech = { + def Constructor(pos: Vector3)(id: Int, context: ActorContext): ImplantTerminalMech = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) obj.Position = pos - obj.Actor = context.actorOf(Props(classOf[ImplantTerminalMechControl], obj), s"${GlobalDefinitions.implant_terminal_mech.Name}_$id") + obj.Actor = context.actorOf( + Props(classOf[ImplantTerminalMechControl], obj), + s"${GlobalDefinitions.implant_terminal_mech.Name}_$id" + ) obj } - @deprecated("use implant terminal mechs that have position","destroyAndRepair") - def Constructor(id : Int, context : ActorContext) : ImplantTerminalMech = { + @deprecated("use implant terminal mechs that have position", "destroyAndRepair") + def Constructor(id: Int, context: ActorContext): ImplantTerminalMech = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) - obj.Actor = context.actorOf(Props(classOf[ImplantTerminalMechControl], obj), s"${GlobalDefinitions.implant_terminal_mech.Name}_$id") + obj.Actor = context.actorOf( + Props(classOf[ImplantTerminalMechControl], obj), + s"${GlobalDefinitions.implant_terminal_mech.Name}_$id" + ) obj } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechControl.scala index 00224cf9..548525f3 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechControl.scala @@ -17,60 +17,67 @@ import net.psforever.objects.serverobject.structures.Building * An `Actor` that handles messages being dispatched to a specific `ImplantTerminalMech`. * @param mech the "mech" object being governed */ -class ImplantTerminalMechControl(mech : ImplantTerminalMech) extends Actor - with FactionAffinityBehavior.Check - with MountableBehavior.Mount - with MountableBehavior.Dismount - with HackableBehavior.GenericHackable - with DamageableEntity - with RepairableEntity { - def MountableObject = mech - def HackableObject = mech - def FactionObject = mech +class ImplantTerminalMechControl(mech: ImplantTerminalMech) + extends Actor + with FactionAffinityBehavior.Check + with MountableBehavior.Mount + with MountableBehavior.Dismount + with HackableBehavior.GenericHackable + with DamageableEntity + with RepairableEntity { + def MountableObject = mech + def HackableObject = mech + def FactionObject = mech def DamageableObject = mech def RepairableObject = mech - def receive : Receive = checkBehavior - .orElse(mountBehavior) - .orElse(dismountBehavior) - .orElse(hackableBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - //TODO setup certifications check - mech.Owner match { - case b : Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && mech.HackedBy.isEmpty => - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, mech), - GenericHackables.FinishHacking(mech, player, 3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, mech, item.GUID) - ) - case _ => ; - } - case _ => ; - } + def receive: Receive = + checkBehavior + .orElse(mountBehavior) + .orElse(dismountBehavior) + .orElse(hackableBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + //TODO setup certifications check + mech.Owner match { + case b: Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && mech.HackedBy.isEmpty => + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, mech), + GenericHackables.FinishHacking(mech, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, mech, item.GUID) + ) + case _ => ; + } + case _ => ; + } - override protected def MountTest(obj : PlanetSideServerObject with Mountable, seatNumber : Int, player : Player) : Boolean = { + override protected def MountTest( + obj: PlanetSideServerObject with Mountable, + seatNumber: Int, + player: Player + ): Boolean = { val zone = obj.Zone zone.Map.TerminalToInterface.get(obj.GUID.guid) match { case Some(interface_guid) => (zone.GUID(interface_guid) match { case Some(interface) => !interface.Destroyed - case None => false + case None => false }) && - super.MountTest(obj, seatNumber, player) + super.MountTest(obj, seatNumber, player) case None => false } } - override protected def DamageAwareness(target : Target, cause : ResolvedProjectile, amount : Int) : Unit = { + override protected def DamageAwareness(target: Target, cause: ResolvedProjectile, amount: Int): Unit = { super.DamageAwareness(target, cause, amount) DamageableMountable.DamageAwareness(DamageableObject, cause) } - override protected def DestructionAwareness(target : Damageable.Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Damageable.Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) DamageableMountable.DestructionAwareness(DamageableObject, cause) target.ClearHistory() diff --git a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechDefinition.scala index b8fd76e5..64db0cb5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/implantmech/ImplantTerminalMechDefinition.scala @@ -11,12 +11,12 @@ import net.psforever.objects.serverobject.structures.AmenityDefinition */ class ImplantTerminalMechDefinition extends AmenityDefinition(410) { /* key - seat index, value - seat object */ - private val seats : Map[Int, SeatDefinition] = Map(0 -> new SeatDefinition) + private val seats: Map[Int, SeatDefinition] = Map(0 -> new SeatDefinition) /* key - entry point index, value - seat index */ - private val mountPoints : Map[Int, Int] = Map(1 -> 0) + private val mountPoints: Map[Int, Int] = Map(1 -> 0) Name = "implant_terminal_mech" - def Seats : Map[Int, SeatDefinition] = seats + def Seats: Map[Int, SeatDefinition] = seats - def MountPoints : Map[Int, Int] = mountPoints + def MountPoints: Map[Int, Int] = mountPoints } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLock.scala b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLock.scala index 37e8fb7a..ab13ad78 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLock.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLock.scala @@ -15,15 +15,16 @@ import net.psforever.types.Vector3 * The `IFFLock` is ideally associated with a server map object - a `Door` - to which it acts as a gatekeeper. * @param idef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class IFFLock(private val idef : IFFLockDefinition) extends Amenity with Hackable { - def Definition : IFFLockDefinition = idef +class IFFLock(private val idef: IFFLockDefinition) extends Amenity with Hackable { + def Definition: IFFLockDefinition = idef HackSound = TriggeredSound.HackDoor HackEffectDuration = Array(60, 180, 300, 360) HackDuration = Array(5, 3, 1, 1) /** a vector in the direction of the "outside" of a room; - * typically, any locking utility is on that same "outside" */ - private var outwards : Vector3 = Vector3.Zero + * typically, any locking utility is on that same "outside" + */ + private var outwards: Vector3 = Vector3.Zero /** * While setting the normal rotation angle for the IFF lock for a door (?), @@ -35,7 +36,7 @@ class IFFLock(private val idef : IFFLockDefinition) extends Amenity with Hackabl * @param orient the orientation of the door * @return the clamped orientation of the door */ - override def Orientation_=(orient : Vector3) : Vector3 = { + override def Orientation_=(orient: Vector3): Vector3 = { val ret = super.Orientation_=(orient) //transform angular data into unit circle components val rang = math.toRadians(orient.z + 90) @@ -43,19 +44,21 @@ class IFFLock(private val idef : IFFLockDefinition) extends Amenity with Hackabl ret } - def Outwards : Vector3 = outwards + def Outwards: Vector3 = outwards } object IFFLock { + /** * Overloaded constructor. * @param idef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(idef : IFFLockDefinition) : IFFLock = { + def apply(idef: IFFLockDefinition): IFFLock = { new IFFLock(idef) } import akka.actor.ActorContext + /** * Instantiate an configure a `IFFLock` object * @@ -65,7 +68,7 @@ object IFFLock { * @param outwards_direction a vector used to determine which direction is inside/outside for the linked door * @return the `IFFLock` object */ - def Constructor(pos: Vector3, outwards_direction : Vector3)(id : Int, context : ActorContext) : IFFLock = { + def Constructor(pos: Vector3, outwards_direction: Vector3)(id: Int, context: ActorContext): IFFLock = { import akka.actor.Props import net.psforever.objects.GlobalDefinitions diff --git a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLockControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLockControl.scala index 5751db22..6fed8558 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLockControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLockControl.scala @@ -12,35 +12,38 @@ import net.psforever.objects.serverobject.hackable.{GenericHackables, HackableBe * @param lock the `IFFLock` object being governed * @see `CommonMessages` */ -class IFFLockControl(lock : IFFLock) extends Actor with FactionAffinityBehavior.Check with HackableBehavior.GenericHackable { - def FactionObject : FactionAffinity = lock - def HackableObject = lock +class IFFLockControl(lock: IFFLock) + extends Actor + with FactionAffinityBehavior.Check + with HackableBehavior.GenericHackable { + def FactionObject: FactionAffinity = lock + def HackableObject = lock - def receive : Receive = checkBehavior - .orElse(hackableBehavior) - .orElse { - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - if(lock.Faction != player.Faction && lock.HackedBy.isEmpty) { - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, lock), - GenericHackables.FinishHacking(lock, player, 1114636288L), - GenericHackables.HackingTickAction(progressType = 1, player, lock, item.GUID) - ) - } - else if(lock.Faction == player.Faction && lock.HackedBy.nonEmpty) { - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, lock), - IFFLocks.FinishResecuringIFFLock(lock), - GenericHackables.HackingTickAction(progressType = 1, player, lock, item.GUID) - ) - } - else { - val log = org.log4s.getLogger - log.warn("IFF lock is being hacked, but don't know how to handle this state:") - log.warn(s"Lock - Faction=${lock.Faction}, HackedBy=${lock.HackedBy}") - log.warn(s"Player - Faction=${player.Faction}") - } + def receive: Receive = + checkBehavior + .orElse(hackableBehavior) + .orElse { + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + if (lock.Faction != player.Faction && lock.HackedBy.isEmpty) { + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, lock), + GenericHackables.FinishHacking(lock, player, 1114636288L), + GenericHackables.HackingTickAction(progressType = 1, player, lock, item.GUID) + ) + } else if (lock.Faction == player.Faction && lock.HackedBy.nonEmpty) { + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, lock), + IFFLocks.FinishResecuringIFFLock(lock), + GenericHackables.HackingTickAction(progressType = 1, player, lock, item.GUID) + ) + } else { + val log = org.log4s.getLogger + log.warn("IFF lock is being hacked, but don't know how to handle this state:") + log.warn(s"Lock - Faction=${lock.Faction}, HackedBy=${lock.HackedBy}") + log.warn(s"Player - Faction=${player.Faction}") + } - case _ => ; //no default message - } + case _ => ; //no default message + } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLocks.scala b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLocks.scala index a859ceeb..dc653942 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLocks.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/locks/IFFLocks.scala @@ -5,13 +5,17 @@ import services.Service import services.local.{LocalAction, LocalServiceMessage} object IFFLocks { + /** * The process of resecuring an IFF lock is finished * Clear the hack state and send to clients * @param lock the `IFFLock` object that has been resecured */ - def FinishResecuringIFFLock(lock: IFFLock)() : Unit = { + def FinishResecuringIFFLock(lock: IFFLock)(): Unit = { val zone = lock.Zone - lock.Zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.ClearTemporaryHack(Service.defaultPlayerGUID, lock)) + lock.Zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.ClearTemporaryHack(Service.defaultPlayerGUID, lock) + ) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/mblocker/Locker.scala b/common/src/main/scala/net/psforever/objects/serverobject/mblocker/Locker.scala index ccfef781..03ec0d8d 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/mblocker/Locker.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/mblocker/Locker.scala @@ -8,18 +8,19 @@ import net.psforever.objects.serverobject.structures.Amenity import net.psforever.packet.game.TriggeredSound class Locker extends Amenity with Hackable { - def Definition : LockerDefinition = GlobalDefinitions.mb_locker + def Definition: LockerDefinition = GlobalDefinitions.mb_locker HackSound = TriggeredSound.HackTerminal HackEffectDuration = Array(0, 30, 60, 90) HackDuration = Array(0, 10, 5, 3) } object Locker { + /** * Overloaded constructor. * @return the `Locker` object */ - def apply() : Locker = { + def apply(): Locker = { new Locker() } @@ -30,14 +31,14 @@ object Locker { * not necessary for this object, but required by signature * @return the `Locker` object */ - def Constructor(id : Int, context : ActorContext) : Locker = { + def Constructor(id: Int, context: ActorContext): Locker = { val obj = Locker() obj.Actor = context.actorOf(Props(classOf[LockerControl], obj), s"${obj.Definition.Name}_$id") obj } import net.psforever.types.Vector3 - def Constructor(pos: Vector3)(id : Int, context : ActorContext) : Locker = { + def Constructor(pos: Vector3)(id: Int, context: ActorContext): Locker = { val obj = Locker() obj.Position = pos obj.Actor = context.actorOf(Props(classOf[LockerControl], obj), s"${obj.Definition.Name}_$id") diff --git a/common/src/main/scala/net/psforever/objects/serverobject/mblocker/LockerControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/mblocker/LockerControl.scala index 09f103fa..9d44f12f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/mblocker/LockerControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/mblocker/LockerControl.scala @@ -11,22 +11,27 @@ import net.psforever.objects.serverobject.hackable.{GenericHackables, HackableBe * An `Actor` that handles messages being dispatched to a specific `Locker`. * @param locker the `Locker` object being governed */ -class LockerControl(locker : Locker) extends Actor with FactionAffinityBehavior.Check with HackableBehavior.GenericHackable { - def FactionObject : FactionAffinity = locker - def HackableObject = locker +class LockerControl(locker: Locker) + extends Actor + with FactionAffinityBehavior.Check + with HackableBehavior.GenericHackable { + def FactionObject: FactionAffinity = locker + def HackableObject = locker - def receive : Receive = checkBehavior - .orElse(hackableBehavior) - .orElse { - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - //TODO setup certifications check - if(locker.Faction != player.Faction && locker.HackedBy.isEmpty) { - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, locker), - GenericHackables.FinishHacking(locker, player, 3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, locker, item.GUID) - ) - } - case _ => ; - } + def receive: Receive = + checkBehavior + .orElse(hackableBehavior) + .orElse { + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + //TODO setup certifications check + if (locker.Faction != player.Faction && locker.HackedBy.isEmpty) { + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, locker), + GenericHackables.FinishHacking(locker, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, locker, item.GUID) + ) + } + case _ => ; + } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/mount/Mountable.scala b/common/src/main/scala/net/psforever/objects/serverobject/mount/Mountable.scala index b65a251f..abb6e791 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/mount/Mountable.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/mount/Mountable.scala @@ -12,37 +12,38 @@ import net.psforever.objects.vehicles.Seat * @see `Seat` */ trait Mountable { + /** * Retrieve a mapping of each seat from its internal index. * @return the mapping of index to seat */ - def Seats : Map[Int, Seat] + def Seats: Map[Int, Seat] /** * Given a seat's index position, retrieve the internal `Seat` object. * @return the specific seat */ - def Seat(seatNum : Int) : Option[Seat] + def Seat(seatNum: Int): Option[Seat] /** * Retrieve a mapping of each seat from its mount point index. * @return the mapping of mount point to seat */ - def MountPoints : Map[Int, Int] + def MountPoints: Map[Int, Int] /** * Given a mount point index, return the associated seat index. * @param mount the mount point * @return the seat index */ - def GetSeatFromMountPoint(mount : Int) : Option[Int] + def GetSeatFromMountPoint(mount: Int): Option[Int] /** * Given a player, determine if that player is seated. * @param user the player * @return the seat index */ - def PassengerInSeat(user : Player) : Option[Int] + def PassengerInSeat(user: Player): Option[Int] /** * A reference to an `Actor` that governs the logic of the object to accept `Mountable` messages. @@ -51,18 +52,19 @@ trait Mountable { * @see `PlanetSideServerObject.Actor` * @return the internal `ActorRef` */ - def Actor : ActorRef //TODO can we enforce this desired association to MountableControl? + def Actor: ActorRef //TODO can we enforce this desired association to MountableControl? } object Mountable { + /** * Message used by the player to indicate the desire to board a `Mountable` object. * @param player the player who sent this request message * @param seat_num the seat index */ - final case class TryMount(player : Player, seat_num : Int) + final case class TryMount(player: Player, seat_num: Int) - final case class TryDismount(player : Player, seat_num : Int) + final case class TryDismount(player: Player, seat_num: Int) /** * A basic `Trait` connecting all of the actionable `Mountable` response messages. @@ -74,7 +76,7 @@ object Mountable { * @param player the player who sent this request message * @param response the result of the processed request */ - final case class MountMessages(player : Player, response : Exchange) + final case class MountMessages(player: Player, response: Exchange) /** * Message sent in response to the player succeeding to access a `Mountable` object. @@ -82,7 +84,7 @@ object Mountable { * @param obj the `Mountable` object * @param seat_num the seat index */ - final case class CanMount(obj : Mountable, seat_num : Int) extends Exchange + final case class CanMount(obj: Mountable, seat_num: Int) extends Exchange /** * Message sent in response to the player failing to access a `Mountable` object. @@ -90,7 +92,7 @@ object Mountable { * @param obj the `Mountable` object * @param seat_num the seat index */ - final case class CanNotMount(obj : Mountable, seat_num : Int) extends Exchange + final case class CanNotMount(obj: Mountable, seat_num: Int) extends Exchange /** * Message sent in response to the player succeeding to disembark a `Mountable` object. @@ -98,12 +100,13 @@ object Mountable { * @param obj the `Mountable` object * @param seat_num the seat index */ - final case class CanDismount(obj : Mountable, seat_num : Int) extends Exchange + final case class CanDismount(obj: Mountable, seat_num: Int) extends Exchange + /** * Message sent in response to the player failing to disembark a `Mountable` object. * The player is still seated at the given index. * @param obj the `Mountable` object * @param seat_num the seat index */ - final case class CanNotDismount(obj : Mountable, seat_num : Int) extends Exchange + final case class CanNotDismount(obj: Mountable, seat_num: Int) extends Exchange } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/mount/MountableBehavior.scala b/common/src/main/scala/net/psforever/objects/serverobject/mount/MountableBehavior.scala index 175294e5..b5ef7f7f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/mount/MountableBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/mount/MountableBehavior.scala @@ -11,6 +11,7 @@ import net.psforever.objects.serverobject.turret.WeaponTurret import net.psforever.types.DriveState object MountableBehavior { + /** * The logic governing `Mountable` objects that use the `TryMount` message. * This is a mix-in trait for combining with existing `Receive` logic. @@ -18,46 +19,49 @@ object MountableBehavior { * @see `Mountable` */ trait Mount { - _ : Actor => - def MountableObject : PlanetSideServerObject with Mountable with FactionAffinity + _: Actor => + def MountableObject: PlanetSideServerObject with Mountable with FactionAffinity - val mountBehavior : Receive = { + val mountBehavior: Receive = { case Mountable.TryMount(user, seat_num) => val obj = MountableObject - if(MountTest(MountableObject, seat_num, user)) { + if (MountTest(MountableObject, seat_num, user)) { user.VehicleSeated = obj.GUID sender ! Mountable.MountMessages(user, Mountable.CanMount(obj, seat_num)) - } - else { + } else { sender ! Mountable.MountMessages(user, Mountable.CanNotMount(obj, seat_num)) } } - protected def MountTest(obj : PlanetSideServerObject with Mountable, seatNumber : Int, player : Player) : Boolean = { + protected def MountTest(obj: PlanetSideServerObject with Mountable, seatNumber: Int, player: Player): Boolean = { (player.Faction == obj.Faction || - (obj match { - case o : Hackable => o.HackedBy.isDefined - case _ => false - })) && - !obj.Destroyed && - (obj.Seats.get(seatNumber) match { - case Some(seat) => (seat.Occupant = player).contains(player) - case _ => false - }) + (obj match { + case o: Hackable => o.HackedBy.isDefined + case _ => false + })) && + !obj.Destroyed && + (obj.Seats.get(seatNumber) match { + case Some(seat) => (seat.Occupant = player).contains(player) + case _ => false + }) } } trait TurretMount extends Mount { - _ : Actor => + _: Actor => - override protected def MountTest(obj : PlanetSideServerObject with Mountable, seatNumber : Int, player : Player) : Boolean = { + override protected def MountTest( + obj: PlanetSideServerObject with Mountable, + seatNumber: Int, + player: Player + ): Boolean = { obj match { - case wep : WeaponTurret => + case wep: WeaponTurret => (!wep.Definition.FactionLocked || player.Faction == obj.Faction) && !obj.Destroyed && (obj.Seats.get(seatNumber) match { case Some(seat) => (seat.Occupant = player).contains(player) - case _ => false + case _ => false }) case _ => super.MountTest(obj, seatNumber, player) @@ -72,21 +76,23 @@ object MountableBehavior { * @see `Mountable` */ trait Dismount { - this : Actor => + this: Actor => - def MountableObject : Mountable with Identifiable with WorldEntity with FactionAffinity + def MountableObject: Mountable with Identifiable with WorldEntity with FactionAffinity - val dismountBehavior : Receive = { + val dismountBehavior: Receive = { case Mountable.TryDismount(user, seat_num) => val obj = MountableObject obj.Seat(seat_num) match { case Some(seat) => - if(seat.Bailable || !obj.isMoving(1) || (obj.isInstanceOf[Vehicle] && obj.asInstanceOf[Vehicle].DeploymentState == DriveState.Deployed)) { + if ( + seat.Bailable || !obj.isMoving(1) || (obj + .isInstanceOf[Vehicle] && obj.asInstanceOf[Vehicle].DeploymentState == DriveState.Deployed) + ) { seat.Occupant = None user.VehicleSeated = None sender ! Mountable.MountMessages(user, Mountable.CanDismount(obj, seat_num)) - } - else { + } else { sender ! Mountable.MountMessages(user, Mountable.CanNotDismount(obj, seat_num)) } case None => diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnControl.scala index 86df17b1..622e6cb5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnControl.scala @@ -30,101 +30,109 @@ import scala.concurrent.duration._ * At this time, (or) once again, a new order can be submitted or will be selected. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) with FactionAffinityBehavior.Check { +class VehicleSpawnControl(pad: VehicleSpawnPad) + extends VehicleSpawnControlBase(pad) + with FactionAffinityBehavior.Check { + /** a reminder sent to future customers */ - var periodicReminder : Cancellable = Default.Cancellable + var periodicReminder: Cancellable = Default.Cancellable + /** a list of vehicle orders that have been submitted for this spawn pad */ - var orders : List[VehicleSpawnControl.Order] = List.empty[VehicleSpawnControl.Order] + var orders: List[VehicleSpawnControl.Order] = List.empty[VehicleSpawnControl.Order] + /** the current vehicle order being acted upon; - * used as a guard condition to control order processing rate */ - var trackedOrder : Option[VehicleSpawnControl.Order] = None + * used as a guard condition to control order processing rate + */ + var trackedOrder: Option[VehicleSpawnControl.Order] = None + /** how to process either the first order or every subsequent order */ - var handleOrderFunc : VehicleSpawnControl.Order => Unit = NewTasking + var handleOrderFunc: VehicleSpawnControl.Order => Unit = NewTasking def LogId = "" /** * The first chained action of the vehicle spawning process. */ - val concealPlayer = context.actorOf(Props(classOf[VehicleSpawnControlConcealPlayer], pad), s"${context.parent.path.name}-conceal") + val concealPlayer = + context.actorOf(Props(classOf[VehicleSpawnControlConcealPlayer], pad), s"${context.parent.path.name}-conceal") - def FactionObject : FactionAffinity = pad + def FactionObject: FactionAffinity = pad import akka.actor.SupervisorStrategy._ override val supervisorStrategy = { import akka.actor.OneForOneStrategy OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 10 seconds) { - case _ : akka.actor.ActorKilledException => Restart - case _ => Resume + case _: akka.actor.ActorKilledException => Restart + case _ => Resume } } - def receive : Receive = checkBehavior.orElse { - case VehicleSpawnPad.VehicleOrder(player, vehicle) => - trace(s"order from ${player.Name} for a ${vehicle.Definition.Name} received") - try { - handleOrderFunc(VehicleSpawnControl.Order(player, vehicle)) - } - catch { - case _ : AssertionError => ; //ehhh - case e : Exception => //something unexpected - e.printStackTrace() - } + def receive: Receive = + checkBehavior.orElse { + case VehicleSpawnPad.VehicleOrder(player, vehicle) => + trace(s"order from ${player.Name} for a ${vehicle.Definition.Name} received") + try { + handleOrderFunc(VehicleSpawnControl.Order(player, vehicle)) + } catch { + case _: AssertionError => ; //ehhh + case e: Exception => //something unexpected + e.printStackTrace() + } - case VehicleSpawnControl.ProcessControl.GetNewOrder => - if(sender == concealPlayer) { - trackedOrder = None //guard off - SelectOrder() - } + case VehicleSpawnControl.ProcessControl.GetNewOrder => + if (sender == concealPlayer) { + trackedOrder = None //guard off + SelectOrder() + } - /* + /* When the vehicle is spawned and added to the pad, it will "occupy" the pad and block it from further action. Normally, the player who wanted to spawn the vehicle will be automatically put into the driver seat. If this is blocked, the vehicle will idle on the pad and must be moved far enough away from the point of origin. During this time, a periodic message about the spawn pad being blocked will be broadcast to all current customers in the order queue. - */ - case VehicleSpawnControl.ProcessControl.Reminder => - trackedOrder match { - case Some(entry) => - if(periodicReminder.isCancelled) { - trace (s"the pad has become blocked by ${entry.vehicle.Definition.Name}") - periodicReminder = context.system.scheduler.scheduleWithFixedDelay( - VehicleSpawnControl.initialReminderDelay, - VehicleSpawnControl.periodicReminderDelay, - self, VehicleSpawnControl.ProcessControl.Reminder - ) - } - else { - BlockedReminder(entry, orders) - } - case None => ; - periodicReminder.cancel - } + */ + case VehicleSpawnControl.ProcessControl.Reminder => + trackedOrder match { + case Some(entry) => + if (periodicReminder.isCancelled) { + trace(s"the pad has become blocked by ${entry.vehicle.Definition.Name}") + periodicReminder = context.system.scheduler.scheduleWithFixedDelay( + VehicleSpawnControl.initialReminderDelay, + VehicleSpawnControl.periodicReminderDelay, + self, + VehicleSpawnControl.ProcessControl.Reminder + ) + } else { + BlockedReminder(entry, orders) + } + case None => ; + periodicReminder.cancel + } - case VehicleSpawnControl.ProcessControl.Flush => - periodicReminder.cancel - orders.foreach { CancelOrder } - orders = Nil - trackedOrder match { - case Some(entry) => - CancelOrder(entry) - case None => ; - } - trackedOrder = None - handleOrderFunc = NewTasking - pad.Zone.VehicleEvents ! VehicleSpawnPad.ResetSpawnPad(pad) //cautious animation reset - concealPlayer ! akka.actor.Kill //should cause the actor to restart, which will abort any trapped messages + case VehicleSpawnControl.ProcessControl.Flush => + periodicReminder.cancel + orders.foreach { CancelOrder } + orders = Nil + trackedOrder match { + case Some(entry) => + CancelOrder(entry) + case None => ; + } + trackedOrder = None + handleOrderFunc = NewTasking + pad.Zone.VehicleEvents ! VehicleSpawnPad.ResetSpawnPad(pad) //cautious animation reset + concealPlayer ! akka.actor.Kill //should cause the actor to restart, which will abort any trapped messages - case _ => ; - } + case _ => ; + } /** * Take this order - the "first order" - and immediately begin processing it. * All orders accepted in the meantime will be queued and a note about priority will be issued. * @param order the order being accepted */ - def NewTasking(order : VehicleSpawnControl.Order) : Unit = { + def NewTasking(order: VehicleSpawnControl.Order): Unit = { handleOrderFunc = QueuedTasking ProcessOrder(Some(order)) } @@ -134,17 +142,22 @@ class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase * all orders accepted in the meantime will be queued and a note about priority will be issued. * @param order the order being accepted */ - def QueuedTasking(order : VehicleSpawnControl.Order) : Unit = { + def QueuedTasking(order: VehicleSpawnControl.Order): Unit = { val name = order.driver.Name - if((trackedOrder match { - case Some(tracked) => !tracked.driver.Name.equals(name) - case None => true - }) && orders.forall { !_.driver.Name.equals(name) }) { + if ( + (trackedOrder match { + case Some(tracked) => !tracked.driver.Name.equals(name) + case None => true + }) && orders.forall { !_.driver.Name.equals(name) } + ) { //not a second order from an existing order's player orders = orders :+ order - pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder(name, VehicleSpawnPad.Reminders.Queue, Some(orders.length + 1)) - } - else { + pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder( + name, + VehicleSpawnPad.Reminders.Queue, + Some(orders.length + 1) + ) + } else { VehicleSpawnControl.DisposeVehicle(order.vehicle, pad.Zone) } } @@ -152,25 +165,26 @@ class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase /** * Select the next available queued order and begin processing it. */ - def SelectOrder() : Unit = ProcessOrder(SelectFirstOrder()) + def SelectOrder(): Unit = ProcessOrder(SelectFirstOrder()) /** * Select the next-available queued order if there is no current order being fulfilled. * If the queue has been exhausted, set functionality to prepare to accept the next order as a "first order." * @return the next-available order */ - def SelectFirstOrder() : Option[VehicleSpawnControl.Order] = { + def SelectFirstOrder(): Option[VehicleSpawnControl.Order] = { trackedOrder match { case None => - val (completeOrder, remainingOrders) : (Option[VehicleSpawnControl.Order], List[VehicleSpawnControl.Order]) = orders match { - case x :: Nil => - (Some(x), Nil) - case x :: b => - (Some(x), b) - case Nil => - handleOrderFunc = NewTasking - (None, Nil) - } + val (completeOrder, remainingOrders): (Option[VehicleSpawnControl.Order], List[VehicleSpawnControl.Order]) = + orders match { + case x :: Nil => + (Some(x), Nil) + case x :: b => + (Some(x), b) + case Nil => + handleOrderFunc = NewTasking + (None, Nil) + } orders = remainingOrders completeOrder case Some(_) => @@ -185,7 +199,7 @@ class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase * @param order the order being accepted; * `None`, if no order found or submitted */ - def ProcessOrder(order : Option[VehicleSpawnControl.Order]) : Unit = { + def ProcessOrder(order: Option[VehicleSpawnControl.Order]): Unit = { periodicReminder.cancel order match { case Some(_order) => @@ -202,22 +216,25 @@ class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase * @param blockedOrder the previous order whose vehicle is blocking the spawn pad from operating * @param recipients all of the other customers who will be receiving the message */ - def BlockedReminder(blockedOrder : VehicleSpawnControl.Order, recipients : Seq[VehicleSpawnControl.Order]) : Unit = { - val user = blockedOrder.vehicle.Seats(0).Occupant + def BlockedReminder(blockedOrder: VehicleSpawnControl.Order, recipients: Seq[VehicleSpawnControl.Order]): Unit = { + val user = blockedOrder.vehicle + .Seats(0) + .Occupant .orElse(pad.Zone.GUID(blockedOrder.vehicle.Owner)) .orElse(pad.Zone.GUID(blockedOrder.DriverGUID)) val relevantRecipients = user match { - case Some(p : Player) if !p.HasGUID => + case Some(p: Player) if !p.HasGUID => recipients.iterator - case Some(p : Player) if blockedOrder.driver == p => + case Some(p: Player) if blockedOrder.driver == p => (blockedOrder +: recipients).iterator - case Some(p : Player) => + case Some(p: Player) => (VehicleSpawnControl.Order(p, blockedOrder.vehicle) +: recipients).iterator //who took possession of the vehicle case _ => recipients.iterator } - recursiveBlockedReminder(relevantRecipients, - if(blockedOrder.vehicle.Health == 0) + recursiveBlockedReminder( + relevantRecipients, + if (blockedOrder.vehicle.Health == 0) Option("Clear the wreckage.") else None @@ -229,44 +246,54 @@ class VehicleSpawnControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase * @param entry the order being cancelled * @param context an `ActorContext` object for which to create the `TaskResolver` object */ - def CancelOrder(entry : VehicleSpawnControl.Order)(implicit context : ActorContext) : Unit = { + def CancelOrder(entry: VehicleSpawnControl.Order)(implicit context: ActorContext): Unit = { val vehicle = entry.vehicle - if(vehicle.Seats.values.count(_.isOccupied) == 0) { + if (vehicle.Seats.values.count(_.isOccupied) == 0) { VehicleSpawnControl.DisposeSpawnedVehicle(entry, pad.Zone) pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder(entry.driver.Name, VehicleSpawnPad.Reminders.Cancelled) } } - @tailrec private final def recursiveBlockedReminder(iter : Iterator[VehicleSpawnControl.Order], cause : Option[Any]) : Unit = { - if(iter.hasNext) { + @tailrec private final def recursiveBlockedReminder( + iter: Iterator[VehicleSpawnControl.Order], + cause: Option[Any] + ): Unit = { + if (iter.hasNext) { val recipient = iter.next - pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder(recipient.driver.Name, VehicleSpawnPad.Reminders.Blocked, cause) + pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder( + recipient.driver.Name, + VehicleSpawnPad.Reminders.Blocked, + cause + ) recursiveBlockedReminder(iter, cause) } } - @tailrec private final def recursiveOrderReminder(iter : Iterator[VehicleSpawnControl.Order], position : Int = 2) : Unit = { - if(iter.hasNext) { + @tailrec private final def recursiveOrderReminder( + iter: Iterator[VehicleSpawnControl.Order], + position: Int = 2 + ): Unit = { + if (iter.hasNext) { val recipient = iter.next - pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder(recipient.driver.Name, VehicleSpawnPad.Reminders.Queue, Some(position)) + pad.Zone.VehicleEvents ! VehicleSpawnPad.PeriodicReminder( + recipient.driver.Name, + VehicleSpawnPad.Reminders.Queue, + Some(position) + ) recursiveOrderReminder(iter, position + 1) } } } object VehicleSpawnControl { - private final val initialReminderDelay : FiniteDuration = 10000 milliseconds - private final val periodicReminderDelay : FiniteDuration = 10000 milliseconds + private final val initialReminderDelay: FiniteDuration = 10000 milliseconds + private final val periodicReminderDelay: FiniteDuration = 10000 milliseconds /** * An `Enumeration` of non-data control messages for the vehicle spawn process. */ object ProcessControl extends Enumeration { - val - Reminder, - GetNewOrder, - Flush - = Value + val Reminder, GetNewOrder, Flush = Value } /** @@ -274,7 +301,7 @@ object VehicleSpawnControl { * @param driver the player who wants the vehicle * @param vehicle the vehicle */ - final case class Order(driver : Player, vehicle : Vehicle) { + final case class Order(driver: Player, vehicle: Vehicle) { assert(driver.HasGUID, s"when ordering a vehicle, the prospective driver ${driver.Name} does not have a GUID") assert(vehicle.HasGUID, s"when ordering a vehicle, the ${vehicle.Definition.Name} does not have a GUID") val DriverGUID = driver.GUID @@ -286,7 +313,7 @@ object VehicleSpawnControl { * @param entry the order being cancelled * @param zone the zone in which the vehicle is registered (should be located) */ - def DisposeSpawnedVehicle(entry : VehicleSpawnControl.Order, zone: Zone) : Unit = { + def DisposeSpawnedVehicle(entry: VehicleSpawnControl.Order, zone: Zone): Unit = { DisposeVehicle(entry.vehicle, zone) zone.VehicleEvents ! VehicleSpawnPad.RevealPlayer(entry.DriverGUID) } @@ -296,11 +323,10 @@ object VehicleSpawnControl { * @param vehicle the vehicle being disposed * @param zone the zone in which the vehicle is registered (should be located) */ - def DisposeVehicle(vehicle : Vehicle, zone : Zone) : Unit = { - if(zone.Vehicles.exists(_.GUID == vehicle.GUID)) { //already added to zone + def DisposeVehicle(vehicle: Vehicle, zone: Zone): Unit = { + if (zone.Vehicles.exists(_.GUID == vehicle.GUID)) { //already added to zone vehicle.Actor ! Vehicle.Deconstruct() - } - else { //just registered to zone + } else { //just registered to zone zone.VehicleEvents ! VehicleServiceMessage.Decon(RemoverActor.AddTask(vehicle, zone, Some(0 seconds))) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPad.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPad.scala index aec8f8dc..61db390d 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPad.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPad.scala @@ -16,18 +16,19 @@ import net.psforever.types.PlanetSideGUID * @see `VehicleSpawnControl` * @param spDef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class VehicleSpawnPad(spDef : VehicleSpawnPadDefinition) extends Amenity { - def Definition : VehicleSpawnPadDefinition = spDef +class VehicleSpawnPad(spDef: VehicleSpawnPadDefinition) extends Amenity { + def Definition: VehicleSpawnPadDefinition = spDef } object VehicleSpawnPad { + /** * Message to the spawn pad to enqueue the following vehicle order. * This is the entry point to vehicle spawn pad functionality. * @param player the player who submitted the order (the "owner") * @param vehicle the vehicle produced from the order */ - final case class VehicleOrder(player : Player, vehicle : Vehicle) + final case class VehicleOrder(player: Player, vehicle: Vehicle) /** * Message to indicate that a certain player should be made transparent. @@ -80,7 +81,7 @@ object VehicleSpawnPad { * @param vehicle the vehicle being spawned * @param pad the spawn pad */ - final case class StartPlayerSeatedInVehicle(driver_name : String, vehicle : Vehicle, pad : VehicleSpawnPad) + final case class StartPlayerSeatedInVehicle(driver_name: String, vehicle: Vehicle, pad: VehicleSpawnPad) /** * Message that acts as callback to the driver that the process of sitting in the driver seat should be finished. @@ -89,7 +90,11 @@ object VehicleSpawnPad { * @param vehicle the vehicle being spawned * @param pad the spawn pad */ - final case class PlayerSeatedInVehicle(driver_name : String, vehicle : Vehicle, pad : VehicleSpawnPad) //TODO while using fake rails + final case class PlayerSeatedInVehicle( + driver_name: String, + vehicle: Vehicle, + pad: VehicleSpawnPad + ) //TODO while using fake rails /** * Message that starts the newly-spawned vehicle to begin driving away from the spawn pad. @@ -100,7 +105,7 @@ object VehicleSpawnPad { * @param vehicle the vehicle * @param pad the spawn pad */ - final case class ServerVehicleOverrideStart(driver_name : String, vehicle : Vehicle, pad : VehicleSpawnPad) + final case class ServerVehicleOverrideStart(driver_name: String, vehicle: Vehicle, pad: VehicleSpawnPad) /** * Message that transitions the newly-spawned vehicle into a cancellable auto-drive state. @@ -111,7 +116,7 @@ object VehicleSpawnPad { * @param vehicle the vehicle * @param pad the spawn pad */ - final case class ServerVehicleOverrideEnd(driver_name : String, vehicle : Vehicle, pad : VehicleSpawnPad) + final case class ServerVehicleOverrideEnd(driver_name: String, vehicle: Vehicle, pad: VehicleSpawnPad) /** * Message to initiate the process of properly disposing of the vehicle that may have been or was spawned into the game world. @@ -125,17 +130,15 @@ object VehicleSpawnPad { * @param reason the nature of the message * @param data optional information for rendering the message to the client */ - final case class PeriodicReminder(driver_name : String, reason : Reminders.Value, data : Option[Any] = None) + final case class PeriodicReminder(driver_name: String, reason: Reminders.Value, data: Option[Any] = None) /** * An `Enumeration` of reasons for sending a periodic reminder to the user. */ object Reminders extends Enumeration { - val - Queue, //optional data is the numeric position in the queue - Blocked, //optional data is a message regarding the blockage - Cancelled - = Value + val Queue, //optional data is the numeric position in the queue + Blocked, //optional data is a message regarding the blockage + Cancelled = Value } /** @@ -143,12 +146,13 @@ object VehicleSpawnPad { * @param spDef the spawn pad's definition entry * @return a `VehicleSpawnPad` object */ - def apply(spDef : VehicleSpawnPadDefinition) : VehicleSpawnPad = { + def apply(spDef: VehicleSpawnPadDefinition): VehicleSpawnPad = { new VehicleSpawnPad(spDef) } import akka.actor.ActorContext import net.psforever.types.Vector3 + /** * Instantiate and configure a `VehicleSpawnPad` object * @param pdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields @@ -158,7 +162,10 @@ object VehicleSpawnPad { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `VehicleSpawnPad` object */ - def Constructor(pos : Vector3, pdef: VehicleSpawnPadDefinition, orient : Vector3)(id : Int, context : ActorContext) : VehicleSpawnPad = { + def Constructor(pos: Vector3, pdef: VehicleSpawnPadDefinition, orient: Vector3)( + id: Int, + context: ActorContext + ): VehicleSpawnPad = { import akka.actor.Props val obj = VehicleSpawnPad(pdef) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPadDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPadDefinition.scala index ebef3a14..670e89e2 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPadDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/VehicleSpawnPadDefinition.scala @@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.structures.AmenityDefinition /** * The definition for any `VehicleSpawnPad`. */ -class VehicleSpawnPadDefinition(objectId : Int) extends AmenityDefinition(objectId) { +class VehicleSpawnPadDefinition(objectId: Int) extends AmenityDefinition(objectId) { // Different pads require a Z offset to stop vehicles falling through the world after the pad rises from the floor, these values are found in game_objects.adb.lst private var vehicle_creation_z_offset = 0f @@ -16,8 +16,8 @@ class VehicleSpawnPadDefinition(objectId : Int) extends AmenityDefinition(object // However, it seems these values need to be reversed to turn CCW to CW rotation (e.g. +90 to -90) private var vehicle_creation_z_orient_offset = 0f - def VehicleCreationZOffset : Float = vehicle_creation_z_offset - def VehicleCreationZOrientOffset : Float = vehicle_creation_z_orient_offset + def VehicleCreationZOffset: Float = vehicle_creation_z_offset + def VehicleCreationZOrientOffset: Float = vehicle_creation_z_orient_offset objectId match { case 141 => @@ -37,6 +37,6 @@ class VehicleSpawnPadDefinition(objectId : Int) extends AmenityDefinition(object vehicle_creation_z_offset = 1.70982f case 816 => Name = "spawnpoint_vehicle" case 947 => Name = "vanu_vehicle_creation_pad" - case _ => throw new IllegalArgumentException("Not a valid object id with the type vehicle_creation_pad") + case _ => throw new IllegalArgumentException("Not a valid object id with the type vehicle_creation_pad") } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlBase.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlBase.scala index cc78e9b6..374aeae9 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlBase.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlBase.scala @@ -12,9 +12,10 @@ import org.log4s.Logger * Additional functionality that recovers the `Zone` of the owned amenity `VehicleSpawnPad`. * @param pad a `VehicleSpawnPad` object */ -abstract class VehicleSpawnControlBase(pad : VehicleSpawnPad) extends Actor { +abstract class VehicleSpawnControlBase(pad: VehicleSpawnPad) extends Actor { + /** the log reference */ - private var baseLogger : Option[Logger] = None + private var baseLogger: Option[Logger] = None /** * Initialize, if appropriate, and provide a log-keeping agent for the requested task. @@ -23,30 +24,30 @@ abstract class VehicleSpawnControlBase(pad : VehicleSpawnPad) extends Actor { * @param logid a special identifier that distinguishes a logger whose name is built of common features * @return a `Logger` object */ - private def GetLogger(logid : String) : Logger = baseLogger match { - case None => - if(!pad.HasGUID || pad.Zone == Zone.Nowhere) { - org.log4s.getLogger(s"uninitialized_${pad.Definition.Name}$logid") - } - else { - baseLogger = Some(org.log4s.getLogger(s"${pad.Continent}-${pad.Definition.Name}-${pad.GUID.guid}$logid")) - baseLogger.get - } - case Some(logger) => - logger - } + private def GetLogger(logid: String): Logger = + baseLogger match { + case None => + if (!pad.HasGUID || pad.Zone == Zone.Nowhere) { + org.log4s.getLogger(s"uninitialized_${pad.Definition.Name}$logid") + } else { + baseLogger = Some(org.log4s.getLogger(s"${pad.Continent}-${pad.Definition.Name}-${pad.GUID.guid}$logid")) + baseLogger.get + } + case Some(logger) => + logger + } /** * Implement this to add a suffix to the identifying name of the logger. * @return a special identifier that distinguishes a logger whose name is built of common features */ - def LogId : String + def LogId: String /** * Act as if a variable for the logging agent. * @return a `Logger` object */ - def log : Logger = GetLogger(LogId) + def log: Logger = GetLogger(LogId) /** * A common manner of utilizing the logging agent such that all messages have the same logging level. @@ -54,5 +55,5 @@ abstract class VehicleSpawnControlBase(pad : VehicleSpawnPad) extends Actor { * No important messages should processed by this agent; only consume general vehicle spawn status. * @param msg the message */ - def trace(msg : String) : Unit = log.trace(msg) + def trace(msg: String): Unit = log.trace(msg) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlConcealPlayer.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlConcealPlayer.scala index 06b234bf..5b3c39b0 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlConcealPlayer.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlConcealPlayer.scala @@ -18,20 +18,20 @@ import scala.concurrent.duration._ * It has failure cases should the driver be in an incorrect state. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlConcealPlayer(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlConcealPlayer(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-concealer" - val loadVehicle = context.actorOf(Props(classOf[VehicleSpawnControlLoadVehicle], pad), s"${context.parent.path.name}-load") + val loadVehicle = + context.actorOf(Props(classOf[VehicleSpawnControlLoadVehicle], pad), s"${context.parent.path.name}-load") - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(driver, _) => //TODO how far can the driver stray from the Terminal before his order is cancelled? - if(driver.Continent == pad.Continent && driver.VehicleSeated.isEmpty && driver.isAlive) { + if (driver.Continent == pad.Continent && driver.VehicleSeated.isEmpty && driver.isAlive) { trace(s"hiding ${driver.Name}") pad.Zone.VehicleEvents ! VehicleSpawnPad.ConcealPlayer(driver.GUID) context.system.scheduler.scheduleOnce(2000 milliseconds, loadVehicle, order) - } - else { + } else { trace(s"integral component lost; abort order fulfillment") VehicleSpawnControl.DisposeVehicle(order.vehicle, pad.Zone) context.parent ! VehicleSpawnControl.ProcessControl.GetNewOrder diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlDriverControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlDriverControl.scala index dbe76c7a..047e9c92 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlDriverControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlDriverControl.scala @@ -14,18 +14,18 @@ import net.psforever.objects.serverobject.pad.{VehicleSpawnControl, VehicleSpawn * It has failure cases should the driver be in an incorrect state. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlDriverControl(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlDriverControl(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-overrider" - val finalClear = context.actorOf(Props(classOf[VehicleSpawnControlFinalClearance], pad), s"${context.parent.path.name}-final") + val finalClear = + context.actorOf(Props(classOf[VehicleSpawnControlFinalClearance], pad), s"${context.parent.path.name}-final") - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(driver, vehicle) => - if(vehicle.Health > 0 && vehicle.PassengerInSeat(driver).contains(0)) { + if (vehicle.Health > 0 && vehicle.PassengerInSeat(driver).contains(0)) { trace(s"returning control of ${vehicle.Definition.Name} to ${driver.Name}") pad.Zone.VehicleEvents ! VehicleSpawnPad.ServerVehicleOverrideEnd(driver.Name, vehicle, pad) - } - else { + } else { trace(s"${driver.Name} is not seated in ${vehicle.Definition.Name}; vehicle controls might have been locked") } vehicle.MountedIn = None diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlFinalClearance.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlFinalClearance.scala index 183a4ee7..548aff62 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlFinalClearance.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlFinalClearance.scala @@ -19,27 +19,35 @@ import scala.concurrent.duration._ * A long call is made to the root of this `Actor` object chain to start work on any subsequent vehicle order. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlFinalClearance(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlFinalClearance(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-clearer" - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(driver, vehicle) => - if(vehicle.PassengerInSeat(driver).isEmpty) { + if (vehicle.PassengerInSeat(driver).isEmpty) { //ensure the vacant vehicle is above the trench and doors vehicle.Position = pad.Position + Vector3.z(pad.Definition.VehicleCreationZOffset) val definition = vehicle.Definition - pad.Zone.VehicleEvents ! VehicleServiceMessage(s"${pad.Continent}", VehicleAction.LoadVehicle(PlanetSideGUID(0), vehicle, definition.ObjectId, vehicle.GUID, definition.Packet.ConstructorData(vehicle).get)) + pad.Zone.VehicleEvents ! VehicleServiceMessage( + s"${pad.Continent}", + VehicleAction.LoadVehicle( + PlanetSideGUID(0), + vehicle, + definition.ObjectId, + vehicle.GUID, + definition.Packet.ConstructorData(vehicle).get + ) + ) } context.parent ! VehicleSpawnControl.ProcessControl.Reminder self ! VehicleSpawnControlFinalClearance.Test(order) case test @ VehicleSpawnControlFinalClearance.Test(entry) => - if(Vector3.DistanceSquared(entry.vehicle.Position, pad.Position) > 100.0f) { //10m away from pad + if (Vector3.DistanceSquared(entry.vehicle.Position, pad.Position) > 100.0f) { //10m away from pad trace("pad cleared") pad.Zone.VehicleEvents ! VehicleSpawnPad.ResetSpawnPad(pad) context.parent ! VehicleSpawnControl.ProcessControl.GetNewOrder - } - else { + } else { context.system.scheduler.scheduleOnce(2000 milliseconds, self, test) } @@ -48,5 +56,5 @@ class VehicleSpawnControlFinalClearance(pad : VehicleSpawnPad) extends VehicleSp } object VehicleSpawnControlFinalClearance { - private final case class Test(entry : VehicleSpawnControl.Order) + private final case class Test(entry: VehicleSpawnControl.Order) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlLoadVehicle.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlLoadVehicle.scala index bc1477f8..abe66ac0 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlLoadVehicle.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlLoadVehicle.scala @@ -4,7 +4,6 @@ package net.psforever.objects.serverobject.pad.process import akka.actor.Props import net.psforever.objects.GlobalDefinitions import net.psforever.objects.serverobject.pad.{VehicleSpawnControl, VehicleSpawnPad} -import net.psforever.objects.zones.Zone import net.psforever.types.Vector3 import scala.concurrent.ExecutionContext.Implicits.global @@ -21,21 +20,22 @@ import scala.concurrent.duration._ * It has failure cases should the driver be in an incorrect state. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlLoadVehicle(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlLoadVehicle(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-loader" val railJack = context.actorOf(Props(classOf[VehicleSpawnControlRailJack], pad), s"${context.parent.path.name}-rails") - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(driver, vehicle) => - if(driver.Continent == pad.Continent && vehicle.Health > 0 && driver.isAlive) { + if (driver.Continent == pad.Continent && vehicle.Health > 0 && driver.isAlive) { trace(s"loading the ${vehicle.Definition.Name}") - vehicle.Position = vehicle.Position - Vector3.z(if(GlobalDefinitions.isFlightVehicle(vehicle.Definition)) 9 else 5) //appear below the trench and doors + vehicle.Position = vehicle.Position - Vector3.z( + if (GlobalDefinitions.isFlightVehicle(vehicle.Definition)) 9 else 5 + ) //appear below the trench and doors vehicle.Cloaked = vehicle.Definition.CanCloak && driver.Cloaked pad.Zone.VehicleEvents ! VehicleSpawnPad.LoadVehicle(vehicle) context.system.scheduler.scheduleOnce(100 milliseconds, railJack, order) - } - else { + } else { trace("owner lost or vehicle in poor condition; abort order fulfillment") VehicleSpawnControl.DisposeVehicle(order.vehicle, pad.Zone) context.parent ! VehicleSpawnControl.ProcessControl.GetNewOrder diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlRailJack.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlRailJack.scala index 553dce4b..98e24cd0 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlRailJack.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlRailJack.scala @@ -19,12 +19,13 @@ import scala.concurrent.duration._ * It has failure cases should the driver be in an incorrect state. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlRailJack(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlRailJack(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-lifter" - val seatDriver = context.actorOf(Props(classOf[VehicleSpawnControlSeatDriver], pad), s"${context.parent.path.name}-seat") + val seatDriver = + context.actorOf(Props(classOf[VehicleSpawnControlSeatDriver], pad), s"${context.parent.path.name}-seat") - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(_, vehicle) => vehicle.MountedIn = pad.GUID pad.Zone.VehicleEvents ! VehicleSpawnPad.AttachToRails(vehicle, pad) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlSeatDriver.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlSeatDriver.scala index e0fed464..69916530 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlSeatDriver.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlSeatDriver.scala @@ -22,41 +22,41 @@ import scala.concurrent.duration._ * @see `ZonePopulationActor` * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlSeatDriver(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlSeatDriver(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-usher" - val vehicleOverride = context.actorOf(Props(classOf[VehicleSpawnControlServerVehicleOverride], pad), s"${context.parent.path.name}-override") + val vehicleOverride = context.actorOf( + Props(classOf[VehicleSpawnControlServerVehicleOverride], pad), + s"${context.parent.path.name}-override" + ) - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(_, vehicle) => - if(vehicle.Actor == Default.Actor) { //wait for a necessary vehicle component to be loaded + if (vehicle.Actor == Default.Actor) { //wait for a necessary vehicle component to be loaded context.system.scheduler.scheduleOnce(50 milliseconds, self, order) - } - else { + } else { trace("vehicle ready") self ! VehicleSpawnControlSeatDriver.BeginDriverInSeat(order) } case VehicleSpawnControlSeatDriver.BeginDriverInSeat(entry) => - val driver = entry.driver + val driver = entry.driver val vehicle = entry.vehicle //avoid unattended vehicle blocking the pad; user should mount (and does so normally) to reset decon timer vehicle.Actor ! Vehicle.Deconstruct(Some(30 seconds)) - if(vehicle.Health > 0 && driver.isAlive && driver.Continent == pad.Continent && driver.VehicleSeated.isEmpty) { + if (vehicle.Health > 0 && driver.isAlive && driver.Continent == pad.Continent && driver.VehicleSeated.isEmpty) { trace("driver to be made seated in vehicle") pad.Zone.VehicleEvents ! VehicleSpawnPad.StartPlayerSeatedInVehicle(driver.Name, vehicle, pad) - } - else{ + } else { trace("driver lost; vehicle stranded on pad") } context.system.scheduler.scheduleOnce(2500 milliseconds, self, VehicleSpawnControlSeatDriver.DriverInSeat(entry)) case VehicleSpawnControlSeatDriver.DriverInSeat(entry) => - if(entry.vehicle.Health > 0 && entry.driver.isAlive && entry.vehicle.PassengerInSeat(entry.driver).contains(0)) { + if (entry.vehicle.Health > 0 && entry.driver.isAlive && entry.vehicle.PassengerInSeat(entry.driver).contains(0)) { trace(s"driver ${entry.driver.Name} has taken the wheel") pad.Zone.VehicleEvents ! VehicleSpawnPad.PlayerSeatedInVehicle(entry.driver.Name, entry.vehicle, pad) - } - else { + } else { trace("driver lost, but operations can continue") } context.system.scheduler.scheduleOnce(250 milliseconds, vehicleOverride, entry) @@ -69,7 +69,7 @@ class VehicleSpawnControlSeatDriver(pad : VehicleSpawnPad) extends VehicleSpawnC } object VehicleSpawnControlSeatDriver { - final case class BeginDriverInSeat(entry : VehicleSpawnControl.Order) + final case class BeginDriverInSeat(entry: VehicleSpawnControl.Order) - final case class DriverInSeat(entry : VehicleSpawnControl.Order) + final case class DriverInSeat(entry: VehicleSpawnControl.Order) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlServerVehicleOverride.scala b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlServerVehicleOverride.scala index 781a9a98..6389c5c5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlServerVehicleOverride.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/pad/process/VehicleSpawnControlServerVehicleOverride.scala @@ -19,27 +19,27 @@ import scala.concurrent.duration._ * It has failure cases should the driver be in an incorrect state. * @param pad the `VehicleSpawnPad` object being governed */ -class VehicleSpawnControlServerVehicleOverride(pad : VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { +class VehicleSpawnControlServerVehicleOverride(pad: VehicleSpawnPad) extends VehicleSpawnControlBase(pad) { def LogId = "-overrider" - val driverControl = context.actorOf(Props(classOf[VehicleSpawnControlDriverControl], pad), s"${context.parent.path.name}-driver") + val driverControl = + context.actorOf(Props(classOf[VehicleSpawnControlDriverControl], pad), s"${context.parent.path.name}-driver") - def receive : Receive = { + def receive: Receive = { case order @ VehicleSpawnControl.Order(driver, vehicle) => val vehicleFailState = vehicle.Health == 0 || vehicle.Position == Vector3.Zero - val driverFailState = !driver.isAlive || driver.Continent != pad.Continent || !vehicle.PassengerInSeat(driver).contains(0) + val driverFailState = + !driver.isAlive || driver.Continent != pad.Continent || !vehicle.PassengerInSeat(driver).contains(0) pad.Zone.VehicleEvents ! VehicleSpawnPad.DetachFromRails(vehicle, pad) - if(vehicleFailState || driverFailState) { - if(vehicleFailState) { + if (vehicleFailState || driverFailState) { + if (vehicleFailState) { trace(s"vehicle was already destroyed") - } - else { + } else { trace(s"driver is not ready") } pad.Zone.VehicleEvents ! VehicleSpawnPad.RevealPlayer(order.DriverGUID) driverControl ! order - } - else { + } else { trace(s"telling ${driver.Name} that the server is assuming control of the ${vehicle.Definition.Name}") pad.Zone.VehicleEvents ! VehicleSpawnPad.ServerVehicleOverrideStart(driver.Name, vehicle, pad) context.system.scheduler.scheduleOnce(4000 milliseconds, driverControl, order) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/painbox/Painbox.scala b/common/src/main/scala/net/psforever/objects/serverobject/painbox/Painbox.scala index 3fa6d291..5108167f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/painbox/Painbox.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/painbox/Painbox.scala @@ -4,8 +4,7 @@ import akka.actor.{ActorContext, Props} import net.psforever.objects.serverobject.structures.Amenity import net.psforever.types.Vector3 - -class Painbox(tdef : PainboxDefinition) extends Amenity { +class Painbox(tdef: PainboxDefinition) extends Amenity { def Definition = tdef } @@ -14,14 +13,14 @@ object Painbox { final case class Tick() final case class Stop() - def apply(tdef : PainboxDefinition) : Painbox = { + def apply(tdef: PainboxDefinition): Painbox = { new Painbox(tdef) } - def Constructor(pos : Vector3, tdef : PainboxDefinition)(id : Int, context : ActorContext) : Painbox = { + def Constructor(pos: Vector3, tdef: PainboxDefinition)(id: Int, context: ActorContext): Painbox = { val obj = Painbox(tdef) obj.Position = pos + tdef.SphereOffset obj.Actor = context.actorOf(Props(classOf[PainboxControl], obj), s"${obj.Definition.Name}_$id") obj } -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxControl.scala index 4cd63ebc..fb23d565 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxControl.scala @@ -11,12 +11,12 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ class PainboxControl(painbox: Painbox) extends Actor { - private[this] val log = org.log4s.getLogger(s"Painbox") - var painboxTick: Cancellable = Default.Cancellable + private[this] val log = org.log4s.getLogger(s"Painbox") + var painboxTick: Cancellable = Default.Cancellable var nearestDoor: Option[Door] = None - var bBoxMinCorner = Vector3.Zero - var bBoxMaxCorner = Vector3.Zero - var bBoxMidPoint = Vector3.Zero + var bBoxMinCorner = Vector3.Zero + var bBoxMaxCorner = Vector3.Zero + var bBoxMidPoint = Vector3.Zero var disabled = false // Temporary to disable cavern non-radius fields @@ -32,10 +32,12 @@ class PainboxControl(painbox: Painbox) extends Actor { case _ => None }) match { - case door@Some(_) => + case door @ Some(_) => nearestDoor = door case _ => - log.error(s"Painbox ${painbox.GUID} on ${painbox.Owner.Continent} - ${painbox.Position} can not find a door that it is dependent on") + log.error( + s"Painbox ${painbox.GUID} on ${painbox.Owner.Continent} - ${painbox.Position} can not find a door that it is dependent on" + ) } } else { if (painbox.Definition.Radius == 0f) { @@ -47,18 +49,18 @@ class PainboxControl(painbox: Painbox) extends Actor { painbox.Owner match { case obj: Building => val planarRange = 16.5f - val aboveRange = 5 - val belowRange = 5 + val aboveRange = 5 + val belowRange = 5 // Find amenities within the specified range val nearbyAmenities = obj.Amenities .filter(amenity => amenity.Position != Vector3.Zero && (amenity.Definition == GlobalDefinitions.mb_locker - || amenity.Definition == GlobalDefinitions.respawn_tube - || amenity.Definition == GlobalDefinitions.spawn_terminal - || amenity.Definition == GlobalDefinitions.order_terminal - || amenity.Definition == GlobalDefinitions.door) + || amenity.Definition == GlobalDefinitions.respawn_tube + || amenity.Definition == GlobalDefinitions.spawn_terminal + || amenity.Definition == GlobalDefinitions.order_terminal + || amenity.Definition == GlobalDefinitions.door) && amenity.Position.x > painbox.Position.x - planarRange && amenity.Position.x < painbox.Position.x + planarRange && amenity.Position.y > painbox.Position.y - planarRange && amenity.Position.y < painbox.Position.y + planarRange && amenity.Position.z > painbox.Position.z - belowRange && amenity.Position.z < painbox.Position.z + aboveRange @@ -69,7 +71,7 @@ class PainboxControl(painbox: Painbox) extends Actor { nearbyAmenities.minBy(amenity => amenity.Position.x).Position.x, nearbyAmenities.minBy(amenity => amenity.Position.y).Position.y, nearbyAmenities.minBy(x => x.Position.z).Position.z - ) + ) bBoxMaxCorner = Vector3( nearbyAmenities.maxBy(amenity => amenity.Position.x).Position.x, nearbyAmenities.maxBy(amenity => amenity.Position.y).Position.y, @@ -86,7 +88,7 @@ class PainboxControl(painbox: Painbox) extends Actor { } } - if(!disabled) { + if (!disabled) { context.become(Stopped) } @@ -103,42 +105,51 @@ class PainboxControl(painbox: Painbox) extends Actor { //todo: Account for overlapping pain fields //todo: Pain module //todo: REK boosting - val guid = painbox.GUID - val owner = painbox.Owner.asInstanceOf[Building] + val guid = painbox.GUID + val owner = painbox.Owner.asInstanceOf[Building] val faction = owner.Faction - if (faction != PlanetSideEmpire.NEUTRAL && (nearestDoor match { - case Some(door) => door.Open.nonEmpty; - case _ => true - })) { - val events = painbox.Zone.AvatarEvents - val damage = painbox.Definition.Damage - val radius = painbox.Definition.Radius * painbox.Definition.Radius + if ( + faction != PlanetSideEmpire.NEUTRAL && (nearestDoor match { + case Some(door) => door.Open.nonEmpty; + case _ => true + }) + ) { + val events = painbox.Zone.AvatarEvents + val damage = painbox.Definition.Damage + val radius = painbox.Definition.Radius * painbox.Definition.Radius val position = painbox.Position if (painbox.Definition.Radius != 0f) { // Spherical pain field owner.PlayersInSOI - .collect { case p if p.Faction != faction - && p.Health > 0 - && Vector3.DistanceSquared(p.Position, position) < radius => - events ! AvatarServiceMessage(p.Name, AvatarAction.EnvironmentalDamage(p.GUID, guid, damage)) + .collect { + case p + if p.Faction != faction + && p.Health > 0 + && Vector3.DistanceSquared(p.Position, position) < radius => + events ! AvatarServiceMessage(p.Name, AvatarAction.EnvironmentalDamage(p.GUID, guid, damage)) } } else { // Bounding box pain field owner.PlayersInSOI - .collect { case p if p.Faction != faction - && p.Health > 0 => - /* + .collect { + case p + if p.Faction != faction + && p.Health > 0 => + /* This may be cpu intensive with a large number of players in SOI. Further performance tweaking may be required The bounding box is calculated aligned to the world XY axis, instead of rotating the painbox corners to match the base rotation we instead rotate the player's current coordinates to match the base rotation, which allows for much simplified checking of if the player is within the bounding box - */ - val playerRot = Vector3.PlanarRotateAroundPoint(p.Position, bBoxMidPoint, painbox.Owner.Orientation.z.toRadians) - if (bBoxMinCorner.x <= playerRot.x && playerRot.x <= bBoxMaxCorner.x && bBoxMinCorner.y <= playerRot.y && playerRot.y <= bBoxMaxCorner.y - && playerRot.z >= bBoxMinCorner.z && playerRot.z <= bBoxMaxCorner.z) { - events ! AvatarServiceMessage(p.Name, AvatarAction.EnvironmentalDamage(p.GUID, guid, damage)) - } + */ + val playerRot = + Vector3.PlanarRotateAroundPoint(p.Position, bBoxMidPoint, painbox.Owner.Orientation.z.toRadians) + if ( + bBoxMinCorner.x <= playerRot.x && playerRot.x <= bBoxMaxCorner.x && bBoxMinCorner.y <= playerRot.y && playerRot.y <= bBoxMaxCorner.y + && playerRot.z >= bBoxMinCorner.z && playerRot.z <= bBoxMaxCorner.z + ) { + events ! AvatarServiceMessage(p.Name, AvatarAction.EnvironmentalDamage(p.GUID, guid, damage)) + } } } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxDefinition.scala index e86527fd..b92e199a 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/painbox/PainboxDefinition.scala @@ -3,11 +3,11 @@ package net.psforever.objects.serverobject.painbox import net.psforever.objects.serverobject.structures.AmenityDefinition import net.psforever.types.Vector3 -class PainboxDefinition(objectId : Int) extends AmenityDefinition(objectId) { - private var alwaysOn : Boolean = true - private var radius : Float = 0f - private var damage : Int = 5 - private var sphereOffset = Vector3(0f, 0f, -0.4f) +class PainboxDefinition(objectId: Int) extends AmenityDefinition(objectId) { + private var alwaysOn: Boolean = true + private var radius: Float = 0f + private var damage: Int = 5 + private var sphereOffset = Vector3(0f, 0f, -0.4f) private var hasNearestDoorDependency = false objectId match { @@ -40,9 +40,9 @@ class PainboxDefinition(objectId : Int) extends AmenityDefinition(objectId) { throw new IllegalArgumentException(s"$objectId is not a valid painbox object id") } - def Radius : Float = radius - def AlwaysOn : Boolean = alwaysOn - def Damage : Int = damage - def SphereOffset : Vector3 = sphereOffset - def HasNearestDoorDependency : Boolean = hasNearestDoorDependency + def Radius: Float = radius + def AlwaysOn: Boolean = alwaysOn + def Damage: Int = damage + def SphereOffset: Vector3 = sphereOffset + def HasNearestDoorDependency: Boolean = hasNearestDoorDependency } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/repair/Repairable.scala b/common/src/main/scala/net/psforever/objects/serverobject/repair/Repairable.scala index 9c4c8747..a2151396 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/repair/Repairable.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/repair/Repairable.scala @@ -15,12 +15,13 @@ import net.psforever.objects.vital.Vitality * shield, armor, etc., `Repairable` only affects `Vitality.Health`. */ trait Repairable { + /** * Contextual access to the object being the target of this damage. * Needs declaration in lowest implementing code. * @return the entity controlled by this actor */ - def RepairableObject : Repairable.Target + def RepairableObject: Repairable.Target /** * The official mixin hook; `orElse` onto the "control" `Actor` `receive`; @@ -31,9 +32,9 @@ trait Repairable { * @see `GlobalDefinitions` * @see `Tool.AmmoType` */ - final val canBeRepairedByNanoDispenser : Receive = { - case CommonMessages.Use(player, Some(item : Tool)) - if item.Definition == GlobalDefinitions.nano_dispenser && item.AmmoType == Ammo.armor_canister => + final val canBeRepairedByNanoDispenser: Receive = { + case CommonMessages.Use(player, Some(item: Tool)) + if item.Definition == GlobalDefinitions.nano_dispenser && item.AmmoType == Ammo.armor_canister => CanBeRepairedByNanoDispenser(player, item) } @@ -42,7 +43,7 @@ trait Repairable { * Override this method only when directly implementing. * @see `canBeRepairedByNanoDispenser` */ - def CanBeRepairedByNanoDispenser(player : Player, item : Tool) : Unit + def CanBeRepairedByNanoDispenser(player: Player, item: Tool): Unit /** * The amount of repair that any specific tool provides. @@ -50,13 +51,13 @@ trait Repairable { * @param item the tool in question * @return an amount to add to the repair attempt progress */ - def RepairValue(item : Tool) : Int = 0 + def RepairValue(item: Tool): Int = 0 /** * The entity is no longer destroyed. * @param obj the entity */ - def Restoration(obj : Repairable.Target) : Unit = { + def Restoration(obj: Repairable.Target): Unit = { Repairable.Restoration(obj) } } @@ -65,13 +66,13 @@ object Repairable { /* the type of all entities governed by this mixin; see Damageable.Target */ final type Target = PlanetSideServerObject with Vitality /* the basic repair value; originally found on the `armor_canister` object definition */ - final val Quality : Int = 12 + final val Quality: Int = 12 /** * The entity is no longer destroyed. * @param target the entity */ - def Restoration(target : Repairable.Target) : Unit = { + def Restoration(target: Repairable.Target): Unit = { target.Destroyed = false } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableAmenity.scala b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableAmenity.scala index 8266d0e3..0c40929b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableAmenity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableAmenity.scala @@ -9,15 +9,16 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * for the majority of `Repairable` `Amenity` objects installed in a facility or a field tower. */ trait RepairableAmenity extends RepairableEntity { - def RepairableObject : Amenity + def RepairableObject: Amenity - override def Restoration(obj : Repairable.Target) : Unit = { + override def Restoration(obj: Repairable.Target): Unit = { super.Restoration(obj) RepairableAmenity.Restoration(obj) } } object RepairableAmenity { + /** * A resotred `Amenity` target dispatches two messages to chance its model and operational states. * These `PlanetSideAttributeMessage` attributes are the same as reported during zone load client configuration. @@ -26,10 +27,10 @@ object RepairableAmenity { * @see `Zone.AvatarEvents` * @param target the entity being destroyed */ - def Restoration(target : Repairable.Target) : Unit = { - val zone = target.Zone - val zoneId = zone.Id - val events = zone.AvatarEvents + def Restoration(target: Repairable.Target): Unit = { + val zone = target.Zone + val zoneId = zone.Id + val events = zone.AvatarEvents val targetGUID = target.GUID events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 50, 0)) events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(targetGUID, 51, 0)) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala index 78cab827..68383e7d 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableEntity.scala @@ -14,6 +14,7 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * @see `Tool` */ trait RepairableEntity extends Repairable { + /** * Catch the expected repair message and * apply further checks to the combination of the target, the equipment, and tis user. @@ -21,9 +22,9 @@ trait RepairableEntity extends Repairable { * @param player the user of the nano dispenser tool * @param item the nano dispenser tool */ - def CanBeRepairedByNanoDispenser(player : Player, item : Tool) : Unit = { + def CanBeRepairedByNanoDispenser(player: Player, item: Tool): Unit = { val obj = RepairableObject - if(CanPerformRepairs(obj, player, item)) { + if (CanPerformRepairs(obj, player, item)) { PerformRepairs(obj, player, item) } } @@ -49,11 +50,11 @@ trait RepairableEntity extends Repairable { * @return `true`, if the target entity can be repaired; * `false`, otherwise */ - protected def CanPerformRepairs(target : Repairable.Target, player : Player, item : Tool) : Boolean = { + protected def CanPerformRepairs(target: Repairable.Target, player: Player, item: Tool): Boolean = { val definition = target.Definition definition.Repairable && target.Health < definition.MaxHealth && (definition.RepairIfDestroyed || !target.Destroyed) && - (target.Faction == player.Faction || target.Faction == PlanetSideEmpire.NEUTRAL) && item.Magazine > 0 && - player.isAlive && Vector3.Distance(target.Position, player.Position) < definition.RepairDistance + (target.Faction == player.Faction || target.Faction == PlanetSideEmpire.NEUTRAL) && item.Magazine > 0 && + player.isAlive && Vector3.Distance(target.Position, player.Position) < definition.RepairDistance } /** @@ -73,36 +74,47 @@ trait RepairableEntity extends Repairable { * @param player the user of the nano dispenser tool * @param item the nano dispenser tool */ - protected def PerformRepairs(target : Repairable.Target, player : Player, item : Tool) : Unit = { - val definition = target.Definition - val zone = target.Zone - val events = zone.AvatarEvents - val name = player.Name - val tguid = target.GUID + protected def PerformRepairs(target: Repairable.Target, player: Player, item: Tool): Unit = { + val definition = target.Definition + val zone = target.Zone + val events = zone.AvatarEvents + val name = player.Name + val tguid = target.GUID val originalHealth = target.Health - val updatedHealth = if(!(player.isMoving(1f) || target.isMoving(1f))) { //only allow stationary repairs within margin of error - val newHealth = target.Health = originalHealth + Repairable.Quality + RepairValue(item) + definition.RepairMod - val zoneId = zone.Id - val magazine = item.Discharge() - events ! AvatarServiceMessage(name, AvatarAction.SendResponse(Service.defaultPlayerGUID, InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong))) - if(target.Destroyed) { - if(newHealth >= definition.RepairRestoresAt) { + val updatedHealth = + if (!(player.isMoving(1f) || target.isMoving(1f))) { //only allow stationary repairs within margin of error + val newHealth = target.Health = originalHealth + Repairable.Quality + RepairValue(item) + definition.RepairMod + val zoneId = zone.Id + val magazine = item.Discharge() + events ! AvatarServiceMessage( + name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + InventoryStateMessage(item.AmmoSlot.Box.GUID, item.GUID, magazine.toLong) + ) + ) + if (target.Destroyed) { + if (newHealth >= definition.RepairRestoresAt) { + events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 0, newHealth)) + Restoration(target) + } + } else { events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 0, newHealth)) - Restoration(target) } + newHealth + } else { + originalHealth } - else { - events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 0, newHealth)) - } - newHealth - } - else { - originalHealth - } //progress bar remains visible - events ! AvatarServiceMessage(name, AvatarAction.SendResponse(Service.defaultPlayerGUID, RepairMessage(tguid, updatedHealth * 100 / definition.MaxHealth))) + events ! AvatarServiceMessage( + name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + RepairMessage(tguid, updatedHealth * 100 / definition.MaxHealth) + ) + ) } /* random object repair modifier */ - override def RepairValue(item : Tool) : Int = item.FireMode.Modifiers.Damage1 + override def RepairValue(item: Tool): Int = item.FireMode.Modifiers.Damage1 } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableVehicle.scala b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableVehicle.scala index 17033784..2123a2bb 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableVehicle.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableVehicle.scala @@ -1,13 +1,12 @@ //Copyright (c) 2020 PSForever package net.psforever.objects.serverobject.repair -import net.psforever.objects.Tool /** * The "control" `Actor` mixin for repair-handling code for `Vehicle` objects. */ trait RepairableVehicle extends RepairableEntity { - override def Restoration(obj : Repairable.Target) : Unit = { + override def Restoration(obj: Repairable.Target): Unit = { obj.Health = 0 obj.Destroyed = true /* no vanilla vehicles are capable of being restored from destruction */ diff --git a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableWeaponTurret.scala b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableWeaponTurret.scala index d50a1e87..968917b4 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableWeaponTurret.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/repair/RepairableWeaponTurret.scala @@ -11,15 +11,16 @@ import services.vehicle.{VehicleAction, VehicleServiceMessage} * The "control" `Actor` mixin for repair-handling code for `WeaponTurret` objects. */ trait RepairableWeaponTurret extends RepairableEntity { - def RepairableObject : Repairable.Target with WeaponTurret + def RepairableObject: Repairable.Target with WeaponTurret - override def Restoration(target : Repairable.Target) : Unit = { + override def Restoration(target: Repairable.Target): Unit = { super.Restoration(target) RepairableWeaponTurret.Restoration(RepairableObject) } } object RepairableWeaponTurret { + /** * A restored target dispatches messages to reconstruct the weapons that were previously mounted to the turret * and may have been concealed/deleted when the target was destroyed. @@ -34,18 +35,19 @@ object RepairableWeaponTurret { * note: `MountedWeapons` is a parent of `WeaponTurret` * but the handling code closely associates with the former */ - def Restoration(target : Repairable.Target with MountedWeapons) : Unit = { - val zone = target.Zone + def Restoration(target: Repairable.Target with MountedWeapons): Unit = { + val zone = target.Zone val zoneId = zone.Id - val tguid = target.GUID + val tguid = target.GUID val events = zone.VehicleEvents target.Weapons .map({ case (index, slot) => (index, slot.Equipment) }) - .collect { case (index, Some(tool : Tool)) => - events ! VehicleServiceMessage( - zoneId, - VehicleAction.EquipmentInSlot(Service.defaultPlayerGUID, tguid, index, tool) - ) + .collect { + case (index, Some(tool: Tool)) => + events ! VehicleServiceMessage( + zoneId, + VehicleAction.EquipmentInSlot(Service.defaultPlayerGUID, tguid, index, tool) + ) } } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala b/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala index cd1143c9..725ee14b 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala @@ -8,21 +8,21 @@ import net.psforever.packet.game.UseItemMessage import net.psforever.types.Vector3 class ResourceSilo extends Amenity { - private var chargeLevel : Int = 0 - private val maximumCharge : Int = 1000 + private var chargeLevel: Int = 0 + private val maximumCharge: Int = 1000 // For the flashing red light on top of the NTU silo on. // Default to true until charge level can be persisted across restarts as default charge level is 0 - private var lowNtuWarningOn : Boolean = true + private var lowNtuWarningOn: Boolean = true // For the NTU display bar - private var capacitorDisplay : Long = 0 + private var capacitorDisplay: Long = 0 - def ChargeLevel : Int = chargeLevel + def ChargeLevel: Int = chargeLevel // Do not call directly. Use ResourceSilo.UpdateChargeLevel message to handle logic such as low ntu warnings - def ChargeLevel_=(charge: Int) : Int = { - if(charge < 0 ) { + def ChargeLevel_=(charge: Int): Int = { + if (charge < 0) { chargeLevel = 0 } else if (charge > maximumCharge) { chargeLevel = maximumCharge @@ -32,39 +32,37 @@ class ResourceSilo extends Amenity { ChargeLevel } - def MaximumCharge : Int = maximumCharge + def MaximumCharge: Int = maximumCharge - def LowNtuWarningOn : Boolean = lowNtuWarningOn - def LowNtuWarningOn_=(enabled: Boolean) : Boolean = { + def LowNtuWarningOn: Boolean = lowNtuWarningOn + def LowNtuWarningOn_=(enabled: Boolean): Boolean = { lowNtuWarningOn = enabled LowNtuWarningOn } - def CapacitorDisplay : Long = scala.math.ceil((ChargeLevel.toFloat / MaximumCharge.toFloat) * 10).toInt + def CapacitorDisplay: Long = scala.math.ceil((ChargeLevel.toFloat / MaximumCharge.toFloat) * 10).toInt - def Definition : ResourceSiloDefinition = GlobalDefinitions.resource_silo + def Definition: ResourceSiloDefinition = GlobalDefinitions.resource_silo - def Use(player: Player, msg : UseItemMessage) : ResourceSilo.Exchange = { + def Use(player: Player, msg: UseItemMessage): ResourceSilo.Exchange = { ResourceSilo.ChargeEvent() } } - object ResourceSilo { - final case class Use(player: Player, msg : UseItemMessage) + final case class Use(player: Player, msg: UseItemMessage) final case class UpdateChargeLevel(amount: Int) final case class LowNtuWarning(enabled: Boolean) sealed trait Exchange final case class ChargeEvent() extends Exchange - final case class ResourceSiloMessage(player: Player, msg : UseItemMessage, response : Exchange) - + final case class ResourceSiloMessage(player: Player, msg: UseItemMessage, response: Exchange) /** * Overloaded constructor. * @return the `Resource Silo` object */ - def apply() : ResourceSilo = { + def apply(): ResourceSilo = { new ResourceSilo() } @@ -75,7 +73,7 @@ object ResourceSilo { * not necessary for this object, but required by signature * @return the `ResourceSilo` object */ - def Constructor(pos: Vector3)(id : Int, context : ActorContext) : ResourceSilo = { + def Constructor(pos: Vector3)(id: Int, context: ActorContext): ResourceSilo = { val obj = ResourceSilo() obj.Position = pos obj.Actor = context.actorOf(Props(classOf[ResourceSiloControl], obj), s"${obj.Definition.Name}_$id") diff --git a/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala index e6198f40..c75b8084 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala @@ -8,18 +8,16 @@ import net.psforever.types.PlanetSideEmpire import services.avatar.{AvatarAction, AvatarServiceMessage} import services.local.{LocalAction, LocalServiceMessage} -import scala.concurrent.ExecutionContext.Implicits.global -import scala.concurrent.duration._ /** * An `Actor` that handles messages being dispatched to a specific `Resource Silo`. * @param resourceSilo the `Resource Silo` object being governed */ -class ResourceSiloControl(resourceSilo : ResourceSilo) extends Actor with FactionAffinityBehavior.Check { - def FactionObject : FactionAffinity = resourceSilo - private[this] val log = org.log4s.getLogger +class ResourceSiloControl(resourceSilo: ResourceSilo) extends Actor with FactionAffinityBehavior.Check { + def FactionObject: FactionAffinity = resourceSilo + private[this] val log = org.log4s.getLogger - def receive : Receive = { + def receive: Receive = { case "startup" => // todo: This is just a temporary solution to drain NTU over time. When base object destruction is properly implemented NTU should be deducted when base objects repair themselves // context.system.scheduler.schedule(5 second, 5 second, self, ResourceSilo.UpdateChargeLevel(-1)) @@ -28,71 +26,77 @@ class ResourceSiloControl(resourceSilo : ResourceSilo) extends Actor with Factio case _ => ; } - def Processing : Receive = checkBehavior.orElse { - case ResourceSilo.Use(player, msg) => - if(resourceSilo.Faction == PlanetSideEmpire.NEUTRAL || player.Faction == resourceSilo.Faction) { - resourceSilo.Zone.Vehicles.find(v => v.PassengerInSeat(player).contains(0)) match { - case Some(vehicle) => - sender ! ResourceSilo.ResourceSiloMessage(player, msg, resourceSilo.Use(player, msg)) - case _ => + def Processing: Receive = + checkBehavior.orElse { + case ResourceSilo.Use(player, msg) => + if (resourceSilo.Faction == PlanetSideEmpire.NEUTRAL || player.Faction == resourceSilo.Faction) { + resourceSilo.Zone.Vehicles.find(v => v.PassengerInSeat(player).contains(0)) match { + case Some(vehicle) => + sender ! ResourceSilo.ResourceSiloMessage(player, msg, resourceSilo.Use(player, msg)) + case _ => + } } - } - case ResourceSilo.LowNtuWarning(enabled: Boolean) => - resourceSilo.LowNtuWarningOn = enabled - log.trace(s"LowNtuWarning: Silo ${resourceSilo.GUID} low ntu warning set to $enabled") - val building = resourceSilo.Owner - val zone = building.Zone - building.Zone.AvatarEvents ! AvatarServiceMessage( - zone.Id, - AvatarAction.PlanetsideAttribute(building.GUID, 47, if(resourceSilo.LowNtuWarningOn) 1 else 0) - ) - - case ResourceSilo.UpdateChargeLevel(amount: Int) => - val siloChargeBeforeChange = resourceSilo.ChargeLevel - val siloDisplayBeforeChange = resourceSilo.CapacitorDisplay - val building = resourceSilo.Owner.asInstanceOf[Building] - val zone = building.Zone - - // Increase if positive passed in or decrease charge level if negative number is passed in - resourceSilo.ChargeLevel += amount - if(resourceSilo.ChargeLevel > 0) { - log.trace(s"UpdateChargeLevel: Silo ${resourceSilo.GUID} set to ${resourceSilo.ChargeLevel}") - } - - // Only send updated capacitor display value to all clients if it has actually changed - if(resourceSilo.CapacitorDisplay != siloDisplayBeforeChange) { - log.trace(s"Silo ${resourceSilo.GUID} NTU bar level has changed from $siloDisplayBeforeChange to ${resourceSilo.CapacitorDisplay}") - resourceSilo.Owner.Actor ! Building.SendMapUpdate(all_clients = true) - zone.AvatarEvents ! AvatarServiceMessage( + case ResourceSilo.LowNtuWarning(enabled: Boolean) => + resourceSilo.LowNtuWarningOn = enabled + log.trace(s"LowNtuWarning: Silo ${resourceSilo.GUID} low ntu warning set to $enabled") + val building = resourceSilo.Owner + val zone = building.Zone + building.Zone.AvatarEvents ! AvatarServiceMessage( zone.Id, - AvatarAction.PlanetsideAttribute(resourceSilo.GUID, 45, resourceSilo.CapacitorDisplay) + AvatarAction.PlanetsideAttribute(building.GUID, 47, if (resourceSilo.LowNtuWarningOn) 1 else 0) ) - building.Actor ! Building.SendMapUpdate(all_clients = true) - } - val ntuIsLow = resourceSilo.ChargeLevel.toFloat / resourceSilo.MaximumCharge.toFloat < 0.2f - if(resourceSilo.LowNtuWarningOn && !ntuIsLow){ + case ResourceSilo.UpdateChargeLevel(amount: Int) => + val siloChargeBeforeChange = resourceSilo.ChargeLevel + val siloDisplayBeforeChange = resourceSilo.CapacitorDisplay + val building = resourceSilo.Owner.asInstanceOf[Building] + val zone = building.Zone + + // Increase if positive passed in or decrease charge level if negative number is passed in + resourceSilo.ChargeLevel += amount + if (resourceSilo.ChargeLevel > 0) { + log.trace(s"UpdateChargeLevel: Silo ${resourceSilo.GUID} set to ${resourceSilo.ChargeLevel}") + } + + // Only send updated capacitor display value to all clients if it has actually changed + if (resourceSilo.CapacitorDisplay != siloDisplayBeforeChange) { + log.trace( + s"Silo ${resourceSilo.GUID} NTU bar level has changed from $siloDisplayBeforeChange to ${resourceSilo.CapacitorDisplay}" + ) + resourceSilo.Owner.Actor ! Building.SendMapUpdate(all_clients = true) + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.PlanetsideAttribute(resourceSilo.GUID, 45, resourceSilo.CapacitorDisplay) + ) + building.Actor ! Building.SendMapUpdate(all_clients = true) + } + + val ntuIsLow = resourceSilo.ChargeLevel.toFloat / resourceSilo.MaximumCharge.toFloat < 0.2f + if (resourceSilo.LowNtuWarningOn && !ntuIsLow) { self ! ResourceSilo.LowNtuWarning(enabled = false) } else if (!resourceSilo.LowNtuWarningOn && ntuIsLow) { - self ! ResourceSilo.LowNtuWarning(enabled = true) - } + self ! ResourceSilo.LowNtuWarning(enabled = true) + } - if(resourceSilo.ChargeLevel == 0 && siloChargeBeforeChange > 0) { - // Oops, someone let the base run out of power. Shut it all down. - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttribute(building.GUID, 48, 1)) - building.Faction = PlanetSideEmpire.NEUTRAL - zone.LocalEvents ! LocalServiceMessage(zone.Id, LocalAction.SetEmpire(building.GUID, PlanetSideEmpire.NEUTRAL)) - building.TriggerZoneMapUpdate() - } else if (siloChargeBeforeChange == 0 && resourceSilo.ChargeLevel > 0) { - // Power restored. Reactor Online. Sensors Online. Weapons Online. All systems nominal. - //todo: Check generator is online before starting up - zone.AvatarEvents ! AvatarServiceMessage( - zone.Id, - AvatarAction.PlanetsideAttribute(building.GUID, 48, 0) - ) - building.TriggerZoneMapUpdate() - } - case _ => ; - } + if (resourceSilo.ChargeLevel == 0 && siloChargeBeforeChange > 0) { + // Oops, someone let the base run out of power. Shut it all down. + zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.PlanetsideAttribute(building.GUID, 48, 1)) + building.Faction = PlanetSideEmpire.NEUTRAL + zone.LocalEvents ! LocalServiceMessage( + zone.Id, + LocalAction.SetEmpire(building.GUID, PlanetSideEmpire.NEUTRAL) + ) + building.TriggerZoneMapUpdate() + } else if (siloChargeBeforeChange == 0 && resourceSilo.ChargeLevel > 0) { + // Power restored. Reactor Online. Sensors Online. Weapons Online. All systems nominal. + //todo: Check generator is online before starting up + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.PlanetsideAttribute(building.GUID, 48, 0) + ) + building.TriggerZoneMapUpdate() + } + case _ => ; + } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/Amenity.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/Amenity.scala index a83c2fcb..3a16c0a4 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/Amenity.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/Amenity.scala @@ -1,9 +1,8 @@ // Copyright (c) 2017 PSForever package net.psforever.objects.serverobject.structures -import net.psforever.objects.ballistics.ResolvedProjectile import net.psforever.objects.serverobject.PlanetSideServerObject -import net.psforever.objects.vital.{DamageResistanceModel, StandardResistanceProfile, Vitality, VitalsActivity} +import net.psforever.objects.vital.{DamageResistanceModel, StandardResistanceProfile, Vitality} import net.psforever.objects.zones.{Zone, ZoneAware} import net.psforever.types.{PlanetSideEmpire, Vector3} import net.psforever.objects.zones.{Zone => World} @@ -19,24 +18,23 @@ import net.psforever.objects.zones.{Zone => World} * @see `AmenityOwner` * @see `FactionAffinity` */ -abstract class Amenity extends PlanetSideServerObject - with Vitality - with ZoneAware - with StandardResistanceProfile { +abstract class Amenity extends PlanetSideServerObject with Vitality with ZoneAware with StandardResistanceProfile { private[this] val log = org.log4s.getLogger("Amenity") - /** what other entity has authority over this amenity; usually either a building or a vehicle */ - private var owner : AmenityOwner = Building.NoBuilding - /** if the entity exists at a specific position relative to the owner's position */ - private var offset : Option[Vector3] = None - def Faction : PlanetSideEmpire.Value = Owner.Faction + /** what other entity has authority over this amenity; usually either a building or a vehicle */ + private var owner: AmenityOwner = Building.NoBuilding + + /** if the entity exists at a specific position relative to the owner's position */ + private var offset: Option[Vector3] = None + + def Faction: PlanetSideEmpire.Value = Owner.Faction /** * Reference the object that is in direct association with (is superior to) this one. * @return the object associated as this object's "owner" */ - def Owner : AmenityOwner = { - if(owner == Building.NoBuilding) { + def Owner: AmenityOwner = { + if (owner == Building.NoBuilding) { log.warn(s"Amenity $GUID in zone ${Zone.Id} tried to access owner, but doesn't have one.") } owner @@ -48,15 +46,15 @@ abstract class Amenity extends PlanetSideServerObject * @param obj the object trying to become associated as this object's "owner" * @return the object associated as this object's "owner" */ - def Owner_=(obj : AmenityOwner) : AmenityOwner = { + def Owner_=(obj: AmenityOwner): AmenityOwner = { owner = obj Owner } - override def Zone : Zone = { - if(super.Zone != World.Nowhere) { + override def Zone: Zone = { + if (super.Zone != World.Nowhere) { super.Zone - } else if(Owner.Zone != World.Nowhere) { + } else if (Owner.Zone != World.Nowhere) { Owner.Zone } else { log.warn(s"Amenity $GUID tried to access it's Zone, but doesn't have one.") @@ -64,11 +62,11 @@ abstract class Amenity extends PlanetSideServerObject } } - def LocationOffset : Vector3 = offset.getOrElse(Vector3.Zero) + def LocationOffset: Vector3 = offset.getOrElse(Vector3.Zero) - def LocationOffset_=(off : Vector3) : Vector3 = LocationOffset_=(Some(off)) + def LocationOffset_=(off: Vector3): Vector3 = LocationOffset_=(Some(off)) - def LocationOffset_=(off : Option[Vector3]) : Vector3 = { + def LocationOffset_=(off: Option[Vector3]): Vector3 = { off match { case Some(Vector3.Zero) => offset = None @@ -80,5 +78,5 @@ abstract class Amenity extends PlanetSideServerObject def DamageModel = Definition.asInstanceOf[DamageResistanceModel] - def Definition : AmenityDefinition + def Definition: AmenityDefinition } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityDefinition.scala index 43df075f..c667d438 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityDefinition.scala @@ -2,13 +2,20 @@ package net.psforever.objects.serverobject.structures import net.psforever.objects.definition.ObjectDefinition -import net.psforever.objects.vital.{DamageResistanceModel, StandardAmenityDamage, StandardAmenityResistance, StandardResolutions, VitalityDefinition} +import net.psforever.objects.vital.{ + DamageResistanceModel, + StandardAmenityDamage, + StandardAmenityResistance, + StandardResolutions, + VitalityDefinition +} import net.psforever.objects.vital.resistance.ResistanceProfileMutators -abstract class AmenityDefinition(objectId : Int) extends ObjectDefinition(objectId) - with ResistanceProfileMutators - with DamageResistanceModel - with VitalityDefinition { +abstract class AmenityDefinition(objectId: Int) + extends ObjectDefinition(objectId) + with ResistanceProfileMutators + with DamageResistanceModel + with VitalityDefinition { Name = "amenity" DamageUsing = StandardAmenityDamage ResistUsing = StandardAmenityResistance diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityOwner.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityOwner.scala index 2199da3e..489f5119 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityOwner.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/AmenityOwner.scala @@ -9,11 +9,11 @@ import net.psforever.objects.serverobject.PlanetSideServerObject * @see `PlanetSideServerObject` */ abstract class AmenityOwner extends PlanetSideServerObject { - private var amenities : List[Amenity] = List.empty + private var amenities: List[Amenity] = List.empty - def Amenities : List[Amenity] = amenities + def Amenities: List[Amenity] = amenities - def Amenities_=(obj : Amenity) : List[Amenity] = { + def Amenities_=(obj: Amenity): List[Amenity] = { amenities = amenities :+ obj obj.Owner = this amenities diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/Building.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/Building.scala index a8f63bcc..c08301c6 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/Building.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/Building.scala @@ -19,51 +19,54 @@ import scalax.collection.{Graph, GraphEdge} import services.Service import services.local.{LocalAction, LocalServiceMessage} -class Building(private val name: String, - private val building_guid : Int, - private val map_id : Int, - private val zone : Zone, - private val buildingType : StructureType.Value, - private val buildingDefinition : BuildingDefinition) extends AmenityOwner { +class Building( + private val name: String, + private val building_guid: Int, + private val map_id: Int, + private val zone: Zone, + private val buildingType: StructureType.Value, + private val buildingDefinition: BuildingDefinition +) extends AmenityOwner { + /** * 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. - */ - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - private var playersInSOI : List[Player] = List.empty - private val capitols = List("Thoth", "Voltan", "Neit", "Anguta", "Eisa", "Verica") - private var forceDomeActive : Boolean = false + */ + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + private var playersInSOI: List[Player] = List.empty + private val capitols = List("Thoth", "Voltan", "Neit", "Anguta", "Eisa", "Verica") + private var forceDomeActive: Boolean = false super.Zone_=(zone) super.GUID_=(PlanetSideGUID(building_guid)) //set - Invalidate() //unset; guid can be used during setup, but does not stop being registered properly later + Invalidate() //unset; guid can be used during setup, but does not stop being registered properly later override def toString = name - def Name : String = name + def Name: String = name - def MapId : Int = map_id + def MapId: Int = map_id - def IsCapitol : Boolean = capitols.contains(name) - def IsSubCapitol : Boolean = { + def IsCapitol: Boolean = capitols.contains(name) + def IsSubCapitol: Boolean = { Neighbours match { case Some(buildings: Set[Building]) => buildings.exists(x => capitols.contains(x.name)) - case None => false + case None => false } } - def ForceDomeActive : Boolean = forceDomeActive - def ForceDomeActive_=(activated : Boolean) : Boolean = { + def ForceDomeActive: Boolean = forceDomeActive + def ForceDomeActive_=(activated: Boolean): Boolean = { forceDomeActive = activated forceDomeActive } - def Faction : PlanetSideEmpire.Value = faction + def Faction: PlanetSideEmpire.Value = faction - override def Faction_=(fac : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { + override def Faction_=(fac: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { faction = fac - if(IsSubCapitol) { + if (IsSubCapitol) { Neighbours match { case Some(buildings: Set[Building]) => buildings.filter(x => x.IsCapitol).head.UpdateForceDomeStatus() - case None => ; + case None => ; } } else if (IsCapitol) { UpdateForceDomeStatus() @@ -72,18 +75,17 @@ class Building(private val name: String, Faction } - def PlayersInSOI : List[Player] = playersInSOI + def PlayersInSOI: List[Player] = playersInSOI - def PlayersInSOI_=(list : List[Player]) : List[Player] = { - if(playersInSOI.isEmpty && list.nonEmpty) { + def PlayersInSOI_=(list: List[Player]): List[Player] = { + if (playersInSOI.isEmpty && list.nonEmpty) { Amenities.collect { - case box : Painbox => + case box: Painbox => box.Actor ! Painbox.Start() } - } - else if(playersInSOI.nonEmpty && list.isEmpty) { + } else if (playersInSOI.nonEmpty && list.isEmpty) { Amenities.collect { - case box : Painbox => + case box: Painbox => box.Actor ! Painbox.Stop() } } @@ -95,11 +97,11 @@ class Building(private val name: String, def Neighbours: Option[Set[Building]] = { zone.Lattice find this match { case Some(x) => Some(x.diSuccessors.map(x => x.toOuter)) - case None => None; + case None => None; } } - def NtuLevel : Int = { + def NtuLevel: Int = { //if we have a silo, get the NTU level Amenities.find(_.Definition == GlobalDefinitions.resource_silo) match { case Some(obj: ResourceSilo) => @@ -109,14 +111,14 @@ class Building(private val name: String, } } - def CaptureTerminal : Option[CaptureTerminal] = { + def CaptureTerminal: Option[CaptureTerminal] = { Amenities.find(_.isInstanceOf[CaptureTerminal]) match { case Some(term) => Some(term.asInstanceOf[CaptureTerminal]) - case _ => None + case _ => None } } - def CaptureTerminalIsHacked : Boolean = { + def CaptureTerminalIsHacked: Boolean = { CaptureTerminal match { case Some(obj: CaptureTerminal) => obj.HackedBy.isDefined @@ -125,31 +127,34 @@ class Building(private val name: String, } def TriggerZoneMapUpdate(): Unit = { - if(Actor != Default.Actor) Actor ! Building.TriggerZoneMapUpdate(Zone.Number) + if (Actor != Default.Actor) Actor ! Building.TriggerZoneMapUpdate(Zone.Number) } - def UpdateForceDomeStatus() : Unit = { - if(IsCapitol) { + def UpdateForceDomeStatus(): Unit = { + if (IsCapitol) { val originalStatus = ForceDomeActive - if(Faction == PlanetSideEmpire.NEUTRAL) { + if (Faction == PlanetSideEmpire.NEUTRAL) { ForceDomeActive = false } else { val ownedSubCapitols = Neighbours(Faction) match { case Some(buildings: Set[Building]) => buildings.size - case None => 0 + case None => 0 } - if(ForceDomeActive && ownedSubCapitols <= 1) { + if (ForceDomeActive && ownedSubCapitols <= 1) { ForceDomeActive = false - } else if(!ForceDomeActive && ownedSubCapitols > 1) { + } else if (!ForceDomeActive && ownedSubCapitols > 1) { ForceDomeActive = true } } - if(originalStatus != ForceDomeActive) { - if(Actor != Default.Actor) { - Zone.LocalEvents ! LocalServiceMessage(Zone.Id, LocalAction.UpdateForceDomeStatus(Service.defaultPlayerGUID, GUID, ForceDomeActive)) + if (originalStatus != ForceDomeActive) { + if (Actor != Default.Actor) { + Zone.LocalEvents ! LocalServiceMessage( + Zone.Id, + LocalAction.UpdateForceDomeStatus(Service.defaultPlayerGUID, GUID, ForceDomeActive) + ) Actor ! Building.SendMapUpdate(all_clients = true) } } @@ -161,28 +166,40 @@ class Building(private val name: String, this.Neighbours match { case Some(x: Set[Building]) => val matching = x.filter(b => b.Faction == faction) - if(matching.isEmpty) None else Some(matching) + if (matching.isEmpty) None else Some(matching) case None => None } } - 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 - ) = { - val ntuLevel : Int = NtuLevel + 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 + ) = { + val ntuLevel: Int = NtuLevel //if we have a capture terminal, get the hack status & time (in milliseconds) from control console if it exists - val (hacking, hackingFaction, hackTime) : (Boolean, PlanetSideEmpire.Value, Long) = CaptureTerminal match { + val (hacking, hackingFaction, hackTime): (Boolean, PlanetSideEmpire.Value, Long) = CaptureTerminal match { case Some(obj: CaptureTerminal with Hackable) => obj.HackedBy match { case Some(Hackable.HackInfo(_, _, hfaction, _, start, length)) => - val hack_time_remaining_ms = TimeUnit.MILLISECONDS.convert(math.max(0, start + length - System.nanoTime), TimeUnit.NANOSECONDS) + val hack_time_remaining_ms = + TimeUnit.MILLISECONDS.convert(math.max(0, start + length - System.nanoTime), TimeUnit.NANOSECONDS) (true, hfaction, hack_time_remaining_ms) case _ => (false, PlanetSideEmpire.NEUTRAL, 0L) @@ -192,21 +209,24 @@ class Building(private val name: String, } //if we have no generator, assume the state is "Normal" val (generatorState, boostGeneratorPain) = Amenities.find(x => x.isInstanceOf[Generator]) match { - case Some(obj : Generator) => + case Some(obj: Generator) => (obj.Condition, false) // todo: poll pain field strength case _ => (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 tube : SpawnTube if !tube.Destroyed => tube }) + val (spawnTubesNormal, boostSpawnPain): (Boolean, Boolean) = { + val o = Amenities.collect({ case tube: SpawnTube if !tube.Destroyed => tube }) (o.nonEmpty, false) //TODO poll pain field strength } - val latticeBenefit : Int = { - if(Faction == PlanetSideEmpire.NEUTRAL) 0 + val latticeBenefit: Int = { + if (Faction == PlanetSideEmpire.NEUTRAL) 0 else { - def FindLatticeBenefit(wantedBenefit: ObjectDefinition, subGraph: Graph[Building, GraphEdge.UnDiEdge]): Boolean = { + def FindLatticeBenefit( + wantedBenefit: ObjectDefinition, + subGraph: Graph[Building, GraphEdge.UnDiEdge] + ): Boolean = { var found = false subGraph find this match { @@ -215,7 +235,7 @@ class Building(private val name: String, else { self pathUntil (_.Definition == wantedBenefit) match { case Some(_) => found = true - case None => ; + case None => ; } } case None => ; @@ -228,7 +248,9 @@ class Building(private val name: String, zone.Lattice find this match { case Some(_) => // todo: generator destruction state - val subGraph = Zone.Lattice filter ((b: Building) => b.Faction == this.Faction && !b.CaptureTerminalIsHacked && b.NtuLevel > 0) + val subGraph = Zone.Lattice filter ((b: Building) => + b.Faction == this.Faction && !b.CaptureTerminalIsHacked && b.NtuLevel > 0 + ) var stackedBenefit = 0 if (FindLatticeBenefit(GlobalDefinitions.amp_station, subGraph)) stackedBenefit |= 1 @@ -248,47 +270,53 @@ class Building(private val name: String, hacking, hackingFaction, hackTime, - if(ntuLevel > 0) Faction else PlanetSideEmpire.NEUTRAL, + if (ntuLevel > 0) Faction else PlanetSideEmpire.NEUTRAL, 0, //!! Field != 0 will cause malformed packet. See class def. None, generatorState, spawnTubesNormal, ForceDomeActive, latticeBenefit, - 0, //cavern_benefit; !! Field > 0 will cause malformed packet. See class def. - Nil, //unk4 - 0, //unk5 - false, //unk6 - 8, //!! unk7 Field != 8 will cause malformed packet. See class def. - None, //unk7x - boostSpawnPain, //boost_spawn_pain + 0, //cavern_benefit; !! Field > 0 will cause malformed packet. See class def. + Nil, //unk4 + 0, //unk5 + false, //unk6 + 8, //!! unk7 Field != 8 will cause malformed packet. See class def. + None, //unk7x + boostSpawnPain, //boost_spawn_pain boostGeneratorPain //boost_generator_pain ) } - def BuildingType : StructureType.Value = buildingType + def BuildingType: StructureType.Value = buildingType - override def Zone_=(zone : Zone) : Zone = Zone //building never leaves zone after being set in constructor + override def Zone_=(zone: Zone): Zone = Zone //building never leaves zone after being set in constructor - override def Continent : String = Zone.Id + override def Continent: String = Zone.Id - override def Continent_=(zone : String) : String = Continent //building never leaves zone after being set in constructor + override def Continent_=(zone: String): String = Continent //building never leaves zone after being set in constructor def Definition: BuildingDefinition = buildingDefinition } object Building { - final val NoBuilding : Building = new Building(name = "", 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 - GUID = net.psforever.types.PlanetSideGUID(0) - } + final val NoBuilding: Building = + new Building(name = "", 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 + GUID = net.psforever.types.PlanetSideGUID(0) + } - def apply(name : String, guid : Int, map_id : Int, zone : Zone, buildingType : StructureType.Value) : Building = { + def apply(name: String, guid: Int, map_id: Int, zone: Zone, buildingType: StructureType.Value): Building = { new Building(name, guid, map_id, zone, buildingType, GlobalDefinitions.building) } - def Structure(buildingType : StructureType.Value, location : Vector3, rotation : Vector3, definition: BuildingDefinition)(name : String, guid : Int, map_id : Int, zone : Zone, context : ActorContext) : Building = { + def Structure( + buildingType: StructureType.Value, + location: Vector3, + rotation: Vector3, + definition: BuildingDefinition + )(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): Building = { import akka.actor.Props val obj = new Building(name, guid, map_id, zone, buildingType, definition) obj.Position = location @@ -297,7 +325,10 @@ object Building { obj } - def Structure(buildingType : StructureType.Value, location : Vector3)(name : String, guid : Int, map_id : Int, zone : Zone, context : ActorContext) : Building = { + def Structure( + buildingType: StructureType.Value, + location: Vector3 + )(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): Building = { import akka.actor.Props val obj = new Building(name, guid, map_id, zone, buildingType, GlobalDefinitions.building) @@ -306,14 +337,20 @@ object Building { obj } - def Structure(buildingType : StructureType.Value)(name : String, guid: Int, map_id : Int, zone : Zone, context : ActorContext) : Building = { + def Structure( + buildingType: StructureType.Value + )(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): Building = { import akka.actor.Props val obj = new Building(name, 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 : BuildingDefinition, location : Vector3)(name: String, guid: Int, id : Int, zone : Zone, context : ActorContext) : Building = { + def Structure( + buildingType: StructureType.Value, + buildingDefinition: BuildingDefinition, + location: Vector3 + )(name: String, guid: Int, id: Int, zone: Zone, context: ActorContext): Building = { import akka.actor.Props val obj = new Building(name, guid, id, zone, buildingType, buildingDefinition) obj.Position = location @@ -321,7 +358,7 @@ object Building { obj } - final case class AmenityStateChange(obj : Amenity) + final case class AmenityStateChange(obj: Amenity) final case class SendMapUpdate(all_clients: Boolean) final case class TriggerZoneMapUpdate(zone_num: Int) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingControl.scala index 4818f9c0..47de6830 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingControl.scala @@ -11,11 +11,11 @@ import services.ServiceManager import services.ServiceManager.Lookup import services.galaxy.{GalaxyAction, GalaxyResponse, GalaxyServiceMessage, GalaxyServiceResponse} -class BuildingControl(building : Building) extends Actor with FactionAffinityBehavior.Check { - def FactionObject : FactionAffinity = building - var galaxyService : ActorRef = ActorRef.noSender - var interstellarCluster : ActorRef = ActorRef.noSender - private[this] val log = org.log4s.getLogger +class BuildingControl(building: Building) extends Actor with FactionAffinityBehavior.Check { + def FactionObject: FactionAffinity = building + var galaxyService: ActorRef = ActorRef.noSender + var interstellarCluster: ActorRef = ActorRef.noSender + private[this] val log = org.log4s.getLogger override def preStart = { log.trace(s"Starting BuildingControl for ${building.GUID} / ${building.MapId}") @@ -23,73 +23,96 @@ class BuildingControl(building : Building) extends Actor with FactionAffinityBeh ServiceManager.serviceManager ! Lookup("cluster") } - def receive : Receive = checkBehavior.orElse { - case ServiceManager.LookupResult("galaxy", endpoint) => - galaxyService = endpoint - log.trace("BuildingControl: Building " + building.GUID + " Got galaxy service " + endpoint) - case ServiceManager.LookupResult("cluster", endpoint) => - interstellarCluster = endpoint - log.trace("BuildingControl: Building " + building.GUID + " Got interstellar cluster service " + endpoint) + def receive: Receive = + checkBehavior.orElse { + case ServiceManager.LookupResult("galaxy", endpoint) => + galaxyService = endpoint + log.trace("BuildingControl: Building " + building.GUID + " Got galaxy service " + endpoint) + case ServiceManager.LookupResult("cluster", endpoint) => + interstellarCluster = endpoint + log.trace("BuildingControl: Building " + building.GUID + " Got interstellar cluster service " + endpoint) - case FactionAffinity.ConvertFactionAffinity(faction) => - val originalAffinity = building.Faction - if(originalAffinity != (building.Faction = faction)) { - building.Amenities.foreach(_.Actor forward FactionAffinity.ConfirmFactionAffinity()) - } - sender ! FactionAffinity.AssertFactionAffinity(building, faction) + case FactionAffinity.ConvertFactionAffinity(faction) => + val originalAffinity = building.Faction + if (originalAffinity != (building.Faction = faction)) { + building.Amenities.foreach(_.Actor forward FactionAffinity.ConfirmFactionAffinity()) + } + sender ! FactionAffinity.AssertFactionAffinity(building, faction) - case Building.AmenityStateChange(obj : SpawnTube) => - if(building.Amenities.contains(obj)) { - SendMapUpdate(allClients = true) - } + case Building.AmenityStateChange(obj: SpawnTube) => + if (building.Amenities.contains(obj)) { + SendMapUpdate(allClients = true) + } - case Building.AmenityStateChange(obj : Generator) => - if(building.Amenities.contains(obj)) { - SendMapUpdate(allClients = true) - } + case Building.AmenityStateChange(obj: Generator) => + if (building.Amenities.contains(obj)) { + SendMapUpdate(allClients = true) + } - case Building.TriggerZoneMapUpdate(zone_num: Int) => - if(interstellarCluster != ActorRef.noSender) interstellarCluster ! InterstellarCluster.ZoneMapUpdate(zone_num) + case Building.TriggerZoneMapUpdate(zone_num: Int) => + if (interstellarCluster != ActorRef.noSender) interstellarCluster ! InterstellarCluster.ZoneMapUpdate(zone_num) - case Building.SendMapUpdate(all_clients: Boolean) => - SendMapUpdate(all_clients) + case Building.SendMapUpdate(all_clients: Boolean) => + SendMapUpdate(all_clients) - case _ => - } + case _ => + } /** * na * @param allClients na */ - def SendMapUpdate(allClients : Boolean) : Unit = { - val zoneNumber = building.Zone.Number + def SendMapUpdate(allClients: Boolean): Unit = { + val zoneNumber = building.Zone.Number val buildingNumber = building.MapId log.trace(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 + isHacked, + empireHack, + hackTimeRemaining, + controllingEmpire, + unk1, + unk1x, + generatorState, + spawnTubesNormal, + forceDomeActive, + latticeBenefit, + cavernBenefit, + unk4, + unk5, + unk6, + unk7, + unk7x, + boostSpawnPain, + boostGeneratorPain + ) = building.Info val msg = BuildingInfoUpdateMessage( zoneNumber, buildingNumber, ntuLevel, - isHacked, empireHack, hackTimeRemaining, controllingEmpire, - unk1, unk1x, - generatorState, spawnTubesNormal, forceDomeActive, - latticeBenefit, cavernBenefit, - unk4, unk5, unk6, - unk7, unk7x, - boostSpawnPain, boostGeneratorPain + isHacked, + empireHack, + hackTimeRemaining, + controllingEmpire, + unk1, + unk1x, + generatorState, + spawnTubesNormal, + forceDomeActive, + latticeBenefit, + cavernBenefit, + unk4, + unk5, + unk6, + unk7, + unk7x, + boostSpawnPain, + boostGeneratorPain ) - if(allClients) { - if(galaxyService != ActorRef.noSender) galaxyService ! GalaxyServiceMessage(GalaxyAction.MapUpdate(msg)) + if (allClients) { + if (galaxyService != ActorRef.noSender) galaxyService ! GalaxyServiceMessage(GalaxyAction.MapUpdate(msg)) } else { // Fake a GalaxyServiceResponse response back to just the sender sender ! GalaxyServiceResponse("", GalaxyResponse.MapUpdate(msg)) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingDefinition.scala index 8584d853..df7e0ab5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/BuildingDefinition.scala @@ -3,10 +3,8 @@ package net.psforever.objects.serverobject.structures import net.psforever.objects.SpawnPointDefinition import net.psforever.objects.definition.ObjectDefinition -class BuildingDefinition(objectId : Int) extends ObjectDefinition(objectId) - with SphereOfInfluence { +class BuildingDefinition(objectId: Int) extends ObjectDefinition(objectId) with SphereOfInfluence { Name = "building" } -class WarpGateDefinition(objectId : Int) extends BuildingDefinition(objectId) - with SpawnPointDefinition +class WarpGateDefinition(objectId: Int) extends BuildingDefinition(objectId) with SpawnPointDefinition diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/FoundationBuilder.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/FoundationBuilder.scala index f437ff70..68344dd0 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/FoundationBuilder.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/FoundationBuilder.scala @@ -11,20 +11,21 @@ import net.psforever.objects.zones.Zone * @see `Building` * @param constructor a curried function that eventually constructs a `Building` object */ -class FoundationBuilder(private val constructor : (String, Int, Int, Zone, ActorContext)=>Building) { - def Build(name: String, guid : Int, map_id: Int, zone : Zone)(implicit context : ActorContext = null) : Building = { - val obj : Building = constructor(name, guid, map_id, zone, context) +class FoundationBuilder(private val constructor: (String, Int, Int, Zone, ActorContext) => Building) { + def Build(name: String, guid: Int, map_id: Int, zone: Zone)(implicit context: ActorContext = null): Building = { + val obj: Building = constructor(name, guid, map_id, zone, context) obj } } object FoundationBuilder { + /** * Overloaded constructor. * @param constructor a curried function that eventually constructs a `Building` object * @return a `FoundationBuilder` object */ - def apply(constructor : (String, Int, Int, Zone, ActorContext)=>Building) : FoundationBuilder = { + def apply(constructor: (String, Int, Int, Zone, ActorContext) => Building): FoundationBuilder = { new FoundationBuilder(constructor) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/SphereOfInfluence.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/SphereOfInfluence.scala index dafd05fe..fa99d9f8 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/SphereOfInfluence.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/SphereOfInfluence.scala @@ -1,14 +1,13 @@ package net.psforever.objects.serverobject.structures -import net.psforever.objects.Player trait SphereOfInfluence { - private var soiRadius : Int = 0 + private var soiRadius: Int = 0 - def SOIRadius : Int = soiRadius + def SOIRadius: Int = soiRadius - def SOIRadius_=(radius : Int) : Int = { + def SOIRadius_=(radius: Int): Int = { soiRadius = radius SOIRadius } -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/StructureType.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/StructureType.scala index 59028b6a..68115071 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/StructureType.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/StructureType.scala @@ -8,13 +8,12 @@ package net.psforever.objects.serverobject.structures object StructureType extends Enumeration { type Type = Value - val - Bridge, //technically, a "bridge section" - Building, //generic - 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 + val Bridge, // technically, a "bridge section" + Building, // generic + Bunker, // low accessible ground cover + Facility, // large base + Platform, // outdoor amenities disconnected from a 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 } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/structures/WarpGate.scala b/common/src/main/scala/net/psforever/objects/serverobject/structures/WarpGate.scala index 402f64e3..1e5328ed 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/structures/WarpGate.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/structures/WarpGate.scala @@ -10,24 +10,37 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGeneratorState, Vector3} import scala.collection.mutable -class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, buildingDefinition : WarpGateDefinition) - extends Building(name, building_guid, map_id, zone, StructureType.WarpGate, buildingDefinition) +class WarpGate(name: String, building_guid: Int, map_id: Int, zone: Zone, buildingDefinition: WarpGateDefinition) + extends Building(name, building_guid, map_id, zone, StructureType.WarpGate, buildingDefinition) with SpawnPoint { - /** can this building be used as an active warp gate */ - private var active : Boolean = true - /** what faction views this warp gate as a broadcast gate */ - private var broadcast : mutable.Set[PlanetSideEmpire.Value] = mutable.Set.empty[PlanetSideEmpire.Value] - 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 - ) = { + /** can this building be used as an active warp gate */ + private var active: Boolean = true + + /** what faction views this warp gate as a broadcast gate */ + private var broadcast: mutable.Set[PlanetSideEmpire.Value] = mutable.Set.empty[PlanetSideEmpire.Value] + + 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, @@ -37,17 +50,17 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu 0, //!! Field != 0 will cause malformed packet. See class def. None, PlanetSideGeneratorState.Normal, - true, //TODO? + true, //TODO? false, //force_dome_active - 0, //lattice_benefit - 0, //cavern_benefit; !! Field > 0 will cause malformed packet. See class def. + 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 + false //boost_generator_pain ) } @@ -57,7 +70,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @return `true`, if the warp gate can be used for transport; * `false`, otherwise */ - def Active : Boolean = active + def Active: Boolean = active /** * Control whether a warp gate is usable for transporting faction-affiliated forces between other gates. @@ -66,7 +79,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @return `true`, if the gate is active; * `false`, otherwise */ - def Active_=(state : Boolean) : Boolean = { + def Active_=(state: Boolean): Boolean = { active = state Active } @@ -77,7 +90,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @return `true`, if some faction sees this warp gate as a "broadcast gate"; * `false`, otherwise */ - def Broadcast : Boolean = Active && broadcast.nonEmpty + def Broadcast: Boolean = Active && broadcast.nonEmpty /** * Determine whether a specific faction interacts with this warp gate as "broadcast." @@ -86,7 +99,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @return `true`, if the given faction interacts with this warp gate as a "broadcast gate"; * `false`, otherwise */ - def Broadcast(faction : PlanetSideEmpire.Value) : Boolean = { + def Broadcast(faction: PlanetSideEmpire.Value): Boolean = { Active && (broadcast.contains(faction) || broadcast.contains(PlanetSideEmpire.NEUTRAL)) } @@ -98,12 +111,11 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * `false`, if not * @return the set of all factions who interact with this warp gate as "broadcast" */ - def Broadcast_=(bcast : Boolean) : Set[PlanetSideEmpire.Value] = { - if(Active) { - if(bcast) { + def Broadcast_=(bcast: Boolean): Set[PlanetSideEmpire.Value] = { + if (Active) { + if (bcast) { broadcast += Faction - } - else { + } else { broadcast -= Faction } } @@ -114,14 +126,14 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * Which factions interact with this warp gate as "broadcast?" * @return the set of all factions who interact with this warp gate as "broadcast" */ - def BroadcastFor : Set[PlanetSideEmpire.Value] = broadcast.toSet + def BroadcastFor: Set[PlanetSideEmpire.Value] = broadcast.toSet /** * Allow a faction to interact with a given warp gate as "broadcast" if it is active. * @param bcast the faction * @return the set of all factions who interact with this warp gate as "broadcast" */ - def BroadcastFor_=(bcast : PlanetSideEmpire.Value) : Set[PlanetSideEmpire.Value] = { + def BroadcastFor_=(bcast: PlanetSideEmpire.Value): Set[PlanetSideEmpire.Value] = { (broadcast += bcast).toSet } @@ -130,7 +142,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @param bcast the factions * @return the set of all factions who interact with this warp gate as "broadcast" */ - def BroadcastFor_=(bcast : Set[PlanetSideEmpire.Value]) : Set[PlanetSideEmpire.Value] = { + def BroadcastFor_=(bcast: Set[PlanetSideEmpire.Value]): Set[PlanetSideEmpire.Value] = { (broadcast ++= bcast).toSet } @@ -139,7 +151,7 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @param bcast the faction * @return the set of all factions who interact with this warp gate as "broadcast" */ - def StopBroadcastFor_=(bcast : PlanetSideEmpire.Value) : Set[PlanetSideEmpire.Value] = { + def StopBroadcastFor_=(bcast: PlanetSideEmpire.Value): Set[PlanetSideEmpire.Value] = { (broadcast -= bcast).toSet } @@ -148,29 +160,31 @@ class WarpGate(name : String, building_guid : Int, map_id : Int, zone : Zone, bu * @param bcast the factions * @return the set of all factions who interact with this warp gate as "broadcast" */ - def StopBroadcastFor_=(bcast : Set[PlanetSideEmpire.Value]) : Set[PlanetSideEmpire.Value] = { + def StopBroadcastFor_=(bcast: Set[PlanetSideEmpire.Value]): Set[PlanetSideEmpire.Value] = { (broadcast --= bcast).toSet } - def Owner : PlanetSideServerObject = this + def Owner: PlanetSideServerObject = this - override def Definition : WarpGateDefinition = buildingDefinition + override def Definition: WarpGateDefinition = buildingDefinition //TODO stuff later } object WarpGate { - def apply(name : String, guid : Int, map_id : Int, zone : Zone, buildingDefinition : WarpGateDefinition) : WarpGate = { + def apply(name: String, guid: Int, map_id: Int, zone: Zone, buildingDefinition: WarpGateDefinition): WarpGate = { new WarpGate(name, guid, map_id, zone, buildingDefinition) } - def Structure(name : String, guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = { + def Structure(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): WarpGate = { import akka.actor.Props val obj = new WarpGate(name, guid, map_id, zone, GlobalDefinitions.warpgate) obj.Actor = context.actorOf(Props(classOf[BuildingControl], obj), s"$map_id-gate") obj } - def Structure(location : Vector3)(name : String, guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = { + def Structure( + location: Vector3 + )(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): WarpGate = { import akka.actor.Props val obj = new WarpGate(name, guid, map_id, zone, GlobalDefinitions.warpgate) obj.Position = location @@ -178,7 +192,10 @@ object WarpGate { obj } - def Structure(location : Vector3, buildingDefinition : WarpGateDefinition)(name : String, guid : Int, map_id : Int, zone : Zone, context : ActorContext) : WarpGate = { + def Structure( + location: Vector3, + buildingDefinition: WarpGateDefinition + )(name: String, guid: Int, map_id: Int, zone: Zone, context: ActorContext): WarpGate = { import akka.actor.Props val obj = new WarpGate(name, guid, map_id, zone, buildingDefinition) obj.Position = location diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminal.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminal.scala index 56350795..333fd0c5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminal.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminal.scala @@ -1,28 +1,28 @@ package net.psforever.objects.serverobject.terminals - import net.psforever.objects.serverobject.hackable.Hackable import net.psforever.objects.serverobject.structures.Amenity import net.psforever.packet.game.TriggeredSound import net.psforever.types.Vector3 -class CaptureTerminal(private val idef : CaptureTerminalDefinition) extends Amenity with Hackable { - def Definition : CaptureTerminalDefinition = idef +class CaptureTerminal(private val idef: CaptureTerminalDefinition) extends Amenity with Hackable { + def Definition: CaptureTerminalDefinition = idef HackDuration = Array(60, 40, 20, 15) HackSound = TriggeredSound.HackTerminal } object CaptureTerminal { + /** * Overloaded constructor. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(tdef : CaptureTerminalDefinition) : CaptureTerminal = { + def apply(tdef: CaptureTerminalDefinition): CaptureTerminal = { new CaptureTerminal(tdef) } import akka.actor.ActorContext - def Constructor(pos: Vector3, tdef: CaptureTerminalDefinition)(id : Int, context : ActorContext) : CaptureTerminal = { + def Constructor(pos: Vector3, tdef: CaptureTerminalDefinition)(id: Int, context: ActorContext): CaptureTerminal = { import akka.actor.Props val obj = CaptureTerminal(tdef) obj.Position = pos @@ -30,4 +30,3 @@ object CaptureTerminal { obj } } - diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalControl.scala index b36e75d8..fcf784a5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalControl.scala @@ -7,27 +7,31 @@ import net.psforever.objects.serverobject.CommonMessages import net.psforever.objects.serverobject.affinity.{FactionAffinity, FactionAffinityBehavior} import net.psforever.objects.serverobject.hackable.{GenericHackables, HackableBehavior} +class CaptureTerminalControl(terminal: CaptureTerminal) + extends Actor + with FactionAffinityBehavior.Check + with HackableBehavior.GenericHackable { + def FactionObject: FactionAffinity = terminal + def HackableObject = terminal -class CaptureTerminalControl(terminal : CaptureTerminal) extends Actor with FactionAffinityBehavior.Check with HackableBehavior.GenericHackable { - def FactionObject : FactionAffinity = terminal - def HackableObject = terminal + def receive: Receive = + checkBehavior + .orElse(hackableBehavior) + .orElse { + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + val canHack = terminal.HackedBy match { + case Some(info) => info.hackerFaction != player.Faction + case _ => terminal.Faction != player.Faction + } + if (canHack) { + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, terminal), + CaptureTerminals.FinishHackingCaptureConsole(terminal, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, terminal, item.GUID) + ) + } - def receive : Receive = checkBehavior - .orElse(hackableBehavior) - .orElse { - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - val canHack = terminal.HackedBy match { - case Some(info) => info.hackerFaction != player.Faction - case _ => terminal.Faction != player.Faction - } - if(canHack) { - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, terminal), - CaptureTerminals.FinishHackingCaptureConsole(terminal, player, 3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, terminal, item.GUID) - ) - } - - case _ => ; //no default message - } + case _ => ; //no default message + } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalDefinition.scala index 901c7279..1bd20001 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminalDefinition.scala @@ -2,11 +2,11 @@ package net.psforever.objects.serverobject.terminals import net.psforever.objects.serverobject.structures.AmenityDefinition -class CaptureTerminalDefinition(objectId : Int) extends AmenityDefinition(objectId) { +class CaptureTerminalDefinition(objectId: Int) extends AmenityDefinition(objectId) { Name = objectId match { case 158 => "capture_terminal" case 751 => "secondary_capture" case 930 => "vanu_control_console" - case _ => throw new IllegalArgumentException("Not a valid capture terminal object id") + case _ => throw new IllegalArgumentException("Not a valid capture terminal object id") } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminals.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminals.scala index edb55e5a..9c27c728 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminals.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CaptureTerminals.scala @@ -19,7 +19,7 @@ object CaptureTerminals { * @see `HackMessage` */ //TODO add params here depending on which params in HackMessage are important - def FinishHackingCaptureConsole(target : CaptureTerminal, user : Player, unk : Long)() : Unit = { + def FinishHackingCaptureConsole(target: CaptureTerminal, user: Player, unk: Long)(): Unit = { import akka.pattern.ask import scala.concurrent.duration._ log.info(s"Hacked a $target") @@ -28,13 +28,18 @@ object CaptureTerminals { val tplayer = user ask(target.Actor, CommonMessages.Hack(tplayer, target))(1 second).mapTo[Boolean].onComplete { case Success(_) => - val zone = target.Zone + val zone = target.Zone val zoneId = zone.Id - val pguid = tplayer.GUID - zone.LocalEvents ! LocalServiceMessage(zoneId, LocalAction.TriggerSound(pguid, target.HackSound, tplayer.Position, 30, 0.49803925f)) - zone.LocalEvents ! LocalServiceMessage(zoneId, LocalAction.HackCaptureTerminal(pguid, zone, target, unk, 8L, tplayer.Faction == target.Faction)) + val pguid = tplayer.GUID + zone.LocalEvents ! LocalServiceMessage( + zoneId, + LocalAction.TriggerSound(pguid, target.HackSound, tplayer.Position, 30, 0.49803925f) + ) + zone.LocalEvents ! LocalServiceMessage( + zoneId, + LocalAction.HackCaptureTerminal(pguid, zone, target, unk, 8L, tplayer.Faction == target.Faction) + ) case Failure(_) => log.warn(s"Hack message failed on target guid: ${target.GUID}") } } } - diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CertTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CertTerminalDefinition.scala index fe288791..71708132 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/CertTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/CertTerminalDefinition.scala @@ -4,51 +4,52 @@ package net.psforever.objects.serverobject.terminals import net.psforever.types.CertificationType object CertTerminalDefinition { + /** * The certifications available. * All entries are listed on page (tab) number 0. */ - val certs : Map[String, CertificationType.Value] = Map( - "medium_assault" -> CertificationType.MediumAssault, - "reinforced_armor" -> CertificationType.ReinforcedExoSuit, - "quad_all" -> CertificationType.ATV, - "switchblade" -> CertificationType.Switchblade, - "harasser" -> CertificationType.Harasser, - "anti_vehicular" -> CertificationType.AntiVehicular, - "heavy_assault" -> CertificationType.HeavyAssault, - "sniper" -> CertificationType.Sniping, - "special_assault" -> CertificationType.SpecialAssault, - "special_assault_2" -> CertificationType.EliteAssault, - "infiltration_suit" -> CertificationType.InfiltrationSuit, - "max_anti_personnel" -> CertificationType.AIMAX, - "max_anti_vehicular" -> CertificationType.AVMAX, - "max_anti_aircraft" -> CertificationType.AAMAX, - "max_all" -> CertificationType.UniMAX, - "air_cavalry_scout" -> CertificationType.AirCavalryScout, - "air_cavalry_assault" -> CertificationType.AirCavalryAssault, + val certs: Map[String, CertificationType.Value] = Map( + "medium_assault" -> CertificationType.MediumAssault, + "reinforced_armor" -> CertificationType.ReinforcedExoSuit, + "quad_all" -> CertificationType.ATV, + "switchblade" -> CertificationType.Switchblade, + "harasser" -> CertificationType.Harasser, + "anti_vehicular" -> CertificationType.AntiVehicular, + "heavy_assault" -> CertificationType.HeavyAssault, + "sniper" -> CertificationType.Sniping, + "special_assault" -> CertificationType.SpecialAssault, + "special_assault_2" -> CertificationType.EliteAssault, + "infiltration_suit" -> CertificationType.InfiltrationSuit, + "max_anti_personnel" -> CertificationType.AIMAX, + "max_anti_vehicular" -> CertificationType.AVMAX, + "max_anti_aircraft" -> CertificationType.AAMAX, + "max_all" -> CertificationType.UniMAX, + "air_cavalry_scout" -> CertificationType.AirCavalryScout, + "air_cavalry_assault" -> CertificationType.AirCavalryAssault, "air_cavalry_interceptor" -> CertificationType.AirCavalryInterceptor, - "air_support" -> CertificationType.AirSupport, - "gunship" -> CertificationType.GalaxyGunship, - "phantasm" -> CertificationType.Phantasm, - "armored_assault1" -> CertificationType.ArmoredAssault1, - "armored_assault2" -> CertificationType.ArmoredAssault2, - "flail" -> CertificationType.Flail, - "assault_buggy" -> CertificationType.AssaultBuggy, - "ground_support" -> CertificationType.GroundSupport, - "ground_transport" -> CertificationType.GroundTransport, - "light_scout" -> CertificationType.LightScout, - "Repair" -> CertificationType.Engineering, - "combat_engineering" -> CertificationType.CombatEngineering, - "ce_offense" -> CertificationType.AssaultEngineering, - "ce_defense" -> CertificationType.FortificationEngineering, - "ce_advanced" -> CertificationType.AdvancedEngineering, - "Hacking" -> CertificationType.Hacking, - "advanced_hacking" -> CertificationType.AdvancedHacking, - "expert_hacking" -> CertificationType.ExpertHacking, - "virus_hacking" -> CertificationType.DataCorruption, - "electronics_expert" -> CertificationType.ElectronicsExpert, - "Medical" -> CertificationType.Medical, - "advanced_medical" -> CertificationType.AdvancedMedical + "air_support" -> CertificationType.AirSupport, + "gunship" -> CertificationType.GalaxyGunship, + "phantasm" -> CertificationType.Phantasm, + "armored_assault1" -> CertificationType.ArmoredAssault1, + "armored_assault2" -> CertificationType.ArmoredAssault2, + "flail" -> CertificationType.Flail, + "assault_buggy" -> CertificationType.AssaultBuggy, + "ground_support" -> CertificationType.GroundSupport, + "ground_transport" -> CertificationType.GroundTransport, + "light_scout" -> CertificationType.LightScout, + "Repair" -> CertificationType.Engineering, + "combat_engineering" -> CertificationType.CombatEngineering, + "ce_offense" -> CertificationType.AssaultEngineering, + "ce_defense" -> CertificationType.FortificationEngineering, + "ce_advanced" -> CertificationType.AdvancedEngineering, + "Hacking" -> CertificationType.Hacking, + "advanced_hacking" -> CertificationType.AdvancedHacking, + "expert_hacking" -> CertificationType.ExpertHacking, + "virus_hacking" -> CertificationType.DataCorruption, + "electronics_expert" -> CertificationType.ElectronicsExpert, + "Medical" -> CertificationType.Medical, + "advanced_medical" -> CertificationType.AdvancedMedical //TODO bfr certification entries ) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/EquipmentTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/EquipmentTerminalDefinition.scala index b1b66624..86ffe8db 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/EquipmentTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/EquipmentTerminalDefinition.scala @@ -18,11 +18,11 @@ object EquipmentTerminalDefinition { * key - an identification string sent by the client * value - a `Tuple` containing exo-suit specifications */ - val suits : Map[String, (ExoSuitType.Value, Int)] = Map( + val suits: Map[String, (ExoSuitType.Value, Int)] = Map( "standard_issue_armor" -> (ExoSuitType.Standard, 0), - "lite_armor" -> (ExoSuitType.Agile, 0), - "med_armor" -> (ExoSuitType.Reinforced, 0), - "stealth_armor" -> (ExoSuitType.Infiltration, 0) + "lite_armor" -> (ExoSuitType.Agile, 0), + "med_armor" -> (ExoSuitType.Reinforced, 0), + "stealth_armor" -> (ExoSuitType.Infiltration, 0) ) /** @@ -30,188 +30,194 @@ object EquipmentTerminalDefinition { * key - an identification string sent by the client * value - a `Tuple` containing exo-suit specifications */ - val maxSuits : Map[String, (ExoSuitType.Value, Int)] = Map( - "trhev_antiaircraft" -> (ExoSuitType.MAX, 3), + val maxSuits: Map[String, (ExoSuitType.Value, Int)] = Map( + "trhev_antiaircraft" -> (ExoSuitType.MAX, 3), "trhev_antipersonnel" -> (ExoSuitType.MAX, 1), "trhev_antivehicular" -> (ExoSuitType.MAX, 2), - "nchev_antiaircraft" -> (ExoSuitType.MAX, 3), + "nchev_antiaircraft" -> (ExoSuitType.MAX, 3), "nchev_antipersonnel" -> (ExoSuitType.MAX, 1), "nchev_antivehicular" -> (ExoSuitType.MAX, 2), - "vshev_antiaircraft" -> (ExoSuitType.MAX, 3), + "vshev_antiaircraft" -> (ExoSuitType.MAX, 3), "vshev_antipersonnel" -> (ExoSuitType.MAX, 1), "vshev_antivehicular" -> (ExoSuitType.MAX, 2) ) import net.psforever.objects.GlobalDefinitions._ + /** * A `Map` of operations for producing the `AmmoBox` `Equipment` for infantry-held weaponry. * key - an identification string sent by the client * value - a curried function that builds the object */ - val infantryAmmunition : Map[String, () => Equipment] = Map( - "9mmbullet" -> MakeAmmoBox(bullet_9mm), - "9mmbullet_AP" -> MakeAmmoBox(bullet_9mm_AP), - "shotgun_shell" -> MakeAmmoBox(shotgun_shell), - "shotgun_shell_AP" -> MakeAmmoBox(shotgun_shell_AP), - "energy_cell" -> MakeAmmoBox(energy_cell), - "anniversary_ammo" -> MakeAmmoBox(anniversary_ammo), //10mm multi-phase - "rocket" -> MakeAmmoBox(rocket), - "frag_cartridge" -> MakeAmmoBox(frag_cartridge), - "jammer_cartridge" -> MakeAmmoBox(jammer_cartridge), - "plasma_cartridge" -> MakeAmmoBox(plasma_cartridge), - "ancient_ammo_combo" -> MakeAmmoBox(ancient_ammo_combo), - "maelstrom_ammo" -> MakeAmmoBox(maelstrom_ammo), - "striker_missile_ammo" -> MakeAmmoBox(striker_missile_ammo), + val infantryAmmunition: Map[String, () => Equipment] = Map( + "9mmbullet" -> MakeAmmoBox(bullet_9mm), + "9mmbullet_AP" -> MakeAmmoBox(bullet_9mm_AP), + "shotgun_shell" -> MakeAmmoBox(shotgun_shell), + "shotgun_shell_AP" -> MakeAmmoBox(shotgun_shell_AP), + "energy_cell" -> MakeAmmoBox(energy_cell), + "anniversary_ammo" -> MakeAmmoBox(anniversary_ammo), //10mm multi-phase + "rocket" -> MakeAmmoBox(rocket), + "frag_cartridge" -> MakeAmmoBox(frag_cartridge), + "jammer_cartridge" -> MakeAmmoBox(jammer_cartridge), + "plasma_cartridge" -> MakeAmmoBox(plasma_cartridge), + "ancient_ammo_combo" -> MakeAmmoBox(ancient_ammo_combo), + "maelstrom_ammo" -> MakeAmmoBox(maelstrom_ammo), + "striker_missile_ammo" -> MakeAmmoBox(striker_missile_ammo), "hunter_seeker_missile" -> MakeAmmoBox(hunter_seeker_missile), //phoenix missile - "lancer_cartridge" -> MakeAmmoBox(lancer_cartridge), - "bolt" -> MakeAmmoBox(bolt), - "oicw_ammo" -> MakeAmmoBox(oicw_ammo), //scorpion missile - "flamethrower_ammo" -> MakeAmmoBox(flamethrower_ammo), - "winchester_ammo" -> MakeAmmoBox(winchester_ammo), - "pellet_gun_ammo" -> MakeAmmoBox(pellet_gun_ammo), - "six_shooter_ammo" -> MakeAmmoBox(six_shooter_ammo) + "lancer_cartridge" -> MakeAmmoBox(lancer_cartridge), + "bolt" -> MakeAmmoBox(bolt), + "oicw_ammo" -> MakeAmmoBox(oicw_ammo), //scorpion missile + "flamethrower_ammo" -> MakeAmmoBox(flamethrower_ammo), + "winchester_ammo" -> MakeAmmoBox(winchester_ammo), + "pellet_gun_ammo" -> MakeAmmoBox(pellet_gun_ammo), + "six_shooter_ammo" -> MakeAmmoBox(six_shooter_ammo) ) - val maxAmmo : Map[String, () => Equipment] = Map( - "dualcycler_ammo" -> MakeAmmoBox(dualcycler_ammo), - "pounder_ammo" -> MakeAmmoBox(pounder_ammo), - "burster_ammo" -> MakeAmmoBox(burster_ammo), + val maxAmmo: Map[String, () => Equipment] = Map( + "dualcycler_ammo" -> MakeAmmoBox(dualcycler_ammo), + "pounder_ammo" -> MakeAmmoBox(pounder_ammo), + "burster_ammo" -> MakeAmmoBox(burster_ammo), "scattercannon_ammo" -> MakeAmmoBox(scattercannon_ammo), - "falcon_ammo" -> MakeAmmoBox(falcon_ammo), - "sparrow_ammo" -> MakeAmmoBox(sparrow_ammo), - "quasar_ammo" -> MakeAmmoBox(quasar_ammo), - "comet_ammo" -> MakeAmmoBox(comet_ammo), - "starfire_ammo" -> MakeAmmoBox(starfire_ammo) + "falcon_ammo" -> MakeAmmoBox(falcon_ammo), + "sparrow_ammo" -> MakeAmmoBox(sparrow_ammo), + "quasar_ammo" -> MakeAmmoBox(quasar_ammo), + "comet_ammo" -> MakeAmmoBox(comet_ammo), + "starfire_ammo" -> MakeAmmoBox(starfire_ammo) ) + /** * A `Map` of operations for producing the `AmmoBox` `Equipment` for infantry-held utilities. * key - an identification string sent by the client * value - a curried function that builds the object */ - val supportAmmunition : Map[String, () => Equipment] = Map( - "health_canister" -> MakeAmmoBox(health_canister), - "armor_canister" -> MakeAmmoBox(armor_canister), + val supportAmmunition: Map[String, () => Equipment] = Map( + "health_canister" -> MakeAmmoBox(health_canister), + "armor_canister" -> MakeAmmoBox(armor_canister), "upgrade_canister" -> MakeAmmoBox(upgrade_canister) ) + /** * A `Map` of operations for producing the `AmmoBox` `Equipment` for vehicle-mounted weaponry. * key - an identification string sent by the client * value - a curried function that builds the object */ - val vehicleAmmunition : Map[String, () => Equipment] = Map( - "35mmbullet" -> MakeAmmoBox(bullet_35mm), - "hellfire_ammo" -> MakeAmmoBox(hellfire_ammo), - "liberator_bomb" -> MakeAmmoBox(liberator_bomb), - "25mmbullet" -> MakeAmmoBox(bullet_25mm), - "75mmbullet" -> MakeAmmoBox(bullet_75mm), - "heavy_grenade_mortar" -> MakeAmmoBox(heavy_grenade_mortar), - "reaver_rocket" -> MakeAmmoBox(reaver_rocket), - "20mmbullet" -> MakeAmmoBox(bullet_20mm), - "12mmbullet" -> MakeAmmoBox(bullet_12mm), - "wasp_rocket_ammo" -> MakeAmmoBox(wasp_rocket_ammo), - "wasp_gun_ammo" -> MakeAmmoBox(wasp_gun_ammo), - "aphelion_laser_ammo" -> MakeAmmoBox(aphelion_laser_ammo), + val vehicleAmmunition: Map[String, () => Equipment] = Map( + "35mmbullet" -> MakeAmmoBox(bullet_35mm), + "hellfire_ammo" -> MakeAmmoBox(hellfire_ammo), + "liberator_bomb" -> MakeAmmoBox(liberator_bomb), + "25mmbullet" -> MakeAmmoBox(bullet_25mm), + "75mmbullet" -> MakeAmmoBox(bullet_75mm), + "heavy_grenade_mortar" -> MakeAmmoBox(heavy_grenade_mortar), + "reaver_rocket" -> MakeAmmoBox(reaver_rocket), + "20mmbullet" -> MakeAmmoBox(bullet_20mm), + "12mmbullet" -> MakeAmmoBox(bullet_12mm), + "wasp_rocket_ammo" -> MakeAmmoBox(wasp_rocket_ammo), + "wasp_gun_ammo" -> MakeAmmoBox(wasp_gun_ammo), + "aphelion_laser_ammo" -> MakeAmmoBox(aphelion_laser_ammo), "aphelion_immolation_cannon_ammo" -> MakeAmmoBox(aphelion_immolation_cannon_ammo), - "aphelion_plasma_rocket_ammo" -> MakeAmmoBox(aphelion_plasma_rocket_ammo), - "aphelion_ppa_ammo" -> MakeAmmoBox(aphelion_ppa_ammo), - "aphelion_starfire_ammo" -> MakeAmmoBox(aphelion_starfire_ammo), - "skyguard_flak_cannon_ammo" -> MakeAmmoBox(skyguard_flak_cannon_ammo), - "flux_cannon_thresher_battery" -> MakeAmmoBox(flux_cannon_thresher_battery), - "fluxpod_ammo" -> MakeAmmoBox(fluxpod_ammo), - "pulse_battery" -> MakeAmmoBox(pulse_battery), - "heavy_rail_beam_battery" -> MakeAmmoBox(heavy_rail_beam_battery), - "15mmbullet" -> MakeAmmoBox(bullet_15mm), - "colossus_100mm_cannon_ammo" -> MakeAmmoBox(colossus_100mm_cannon_ammo), - "colossus_burster_ammo" -> MakeAmmoBox(colossus_burster_ammo), - "colossus_cluster_bomb_ammo" -> MakeAmmoBox(colossus_cluster_bomb_ammo), - "colossus_chaingun_ammo" -> MakeAmmoBox(colossus_chaingun_ammo), - "colossus_tank_cannon_ammo" -> MakeAmmoBox(colossus_tank_cannon_ammo), - "105mmbullet" -> MakeAmmoBox(bullet_105mm), - "gauss_cannon_ammo" -> MakeAmmoBox(gauss_cannon_ammo), + "aphelion_plasma_rocket_ammo" -> MakeAmmoBox(aphelion_plasma_rocket_ammo), + "aphelion_ppa_ammo" -> MakeAmmoBox(aphelion_ppa_ammo), + "aphelion_starfire_ammo" -> MakeAmmoBox(aphelion_starfire_ammo), + "skyguard_flak_cannon_ammo" -> MakeAmmoBox(skyguard_flak_cannon_ammo), + "flux_cannon_thresher_battery" -> MakeAmmoBox(flux_cannon_thresher_battery), + "fluxpod_ammo" -> MakeAmmoBox(fluxpod_ammo), + "pulse_battery" -> MakeAmmoBox(pulse_battery), + "heavy_rail_beam_battery" -> MakeAmmoBox(heavy_rail_beam_battery), + "15mmbullet" -> MakeAmmoBox(bullet_15mm), + "colossus_100mm_cannon_ammo" -> MakeAmmoBox(colossus_100mm_cannon_ammo), + "colossus_burster_ammo" -> MakeAmmoBox(colossus_burster_ammo), + "colossus_cluster_bomb_ammo" -> MakeAmmoBox(colossus_cluster_bomb_ammo), + "colossus_chaingun_ammo" -> MakeAmmoBox(colossus_chaingun_ammo), + "colossus_tank_cannon_ammo" -> MakeAmmoBox(colossus_tank_cannon_ammo), + "105mmbullet" -> MakeAmmoBox(bullet_105mm), + "gauss_cannon_ammo" -> MakeAmmoBox(gauss_cannon_ammo), "peregrine_dual_machine_gun_ammo" -> MakeAmmoBox(peregrine_dual_machine_gun_ammo), - "peregrine_mechhammer_ammo" -> MakeAmmoBox(peregrine_mechhammer_ammo), - "peregrine_particle_cannon_ammo" -> MakeAmmoBox(peregrine_particle_cannon_ammo), - "peregrine_rocket_pod_ammo" -> MakeAmmoBox(peregrine_rocket_pod_ammo), - "peregrine_sparrow_ammo" -> MakeAmmoBox(peregrine_sparrow_ammo), - "150mmbullet" -> MakeAmmoBox(bullet_150mm) + "peregrine_mechhammer_ammo" -> MakeAmmoBox(peregrine_mechhammer_ammo), + "peregrine_particle_cannon_ammo" -> MakeAmmoBox(peregrine_particle_cannon_ammo), + "peregrine_rocket_pod_ammo" -> MakeAmmoBox(peregrine_rocket_pod_ammo), + "peregrine_sparrow_ammo" -> MakeAmmoBox(peregrine_sparrow_ammo), + "150mmbullet" -> MakeAmmoBox(bullet_150mm) ) + /** * A `Map` of operations for producing the `Tool` `Equipment` for infantry weapons. * key - an identification string sent by the client * value - a curried function that builds the object */ - val infantryWeapons : Map[String, () => Equipment] = Map( - "ilc9" -> MakeTool(ilc9), - "repeater" -> MakeTool(repeater), - "isp" -> MakeTool(isp), //amp - "beamer" -> MakeTool(beamer), - "suppressor" -> MakeTool(suppressor), + val infantryWeapons: Map[String, () => Equipment] = Map( + "ilc9" -> MakeTool(ilc9), + "repeater" -> MakeTool(repeater), + "isp" -> MakeTool(isp), //amp + "beamer" -> MakeTool(beamer), + "suppressor" -> MakeTool(suppressor), "anniversary_guna" -> MakeTool(anniversary_guna), //tr stinger - "anniversary_gun" -> MakeTool(anniversary_gun), //nc spear + "anniversary_gun" -> MakeTool(anniversary_gun), //nc spear "anniversary_gunb" -> MakeTool(anniversary_gunb), //vs eraser - "cycler" -> MakeTool(cycler), - "gauss" -> MakeTool(gauss), - "pulsar" -> MakeTool(pulsar), - "punisher" -> MakeTool(punisher), - "flechette" -> MakeTool(flechette), - "spiker" -> MakeTool(spiker), - "frag_grenade" -> MakeTool(frag_grenade), - "jammer_grenade" -> MakeTool(jammer_grenade), - "plasma_grenade" -> MakeTool(plasma_grenade), - "katana" -> MakeTool(katana), - "chainblade" -> MakeTool(chainblade), - "magcutter" -> MakeTool(magcutter), - "forceblade" -> MakeTool(forceblade), - "mini_chaingun" -> MakeTool(mini_chaingun), - "r_shotgun" -> MakeTool(r_shotgun), //jackhammer - "lasher" -> MakeTool(lasher), - "maelstrom" -> MakeTool(maelstrom), - "striker" -> MakeTool(striker), - "hunterseeker" -> MakeTool(hunterseeker), //phoenix - "lancer" -> MakeTool(lancer), - "phoenix" -> MakeTool(phoenix), //decimator - "rocklet" -> MakeTool(rocklet), - "thumper" -> MakeTool(thumper), - "radiator" -> MakeTool(radiator), - "heavy_sniper" -> MakeTool(heavy_sniper), //hsr - "bolt_driver" -> MakeTool(bolt_driver), - "oicw" -> MakeTool(oicw), //scorpion - "flamethrower" -> MakeTool(flamethrower), - "winchester" -> MakeTool(winchester), - "pellet_gun" -> MakeTool(pellet_gun), - "six_shooter" -> MakeTool(six_shooter), - "dynomite" -> MakeTool(dynomite) + "cycler" -> MakeTool(cycler), + "gauss" -> MakeTool(gauss), + "pulsar" -> MakeTool(pulsar), + "punisher" -> MakeTool(punisher), + "flechette" -> MakeTool(flechette), + "spiker" -> MakeTool(spiker), + "frag_grenade" -> MakeTool(frag_grenade), + "jammer_grenade" -> MakeTool(jammer_grenade), + "plasma_grenade" -> MakeTool(plasma_grenade), + "katana" -> MakeTool(katana), + "chainblade" -> MakeTool(chainblade), + "magcutter" -> MakeTool(magcutter), + "forceblade" -> MakeTool(forceblade), + "mini_chaingun" -> MakeTool(mini_chaingun), + "r_shotgun" -> MakeTool(r_shotgun), //jackhammer + "lasher" -> MakeTool(lasher), + "maelstrom" -> MakeTool(maelstrom), + "striker" -> MakeTool(striker), + "hunterseeker" -> MakeTool(hunterseeker), //phoenix + "lancer" -> MakeTool(lancer), + "phoenix" -> MakeTool(phoenix), //decimator + "rocklet" -> MakeTool(rocklet), + "thumper" -> MakeTool(thumper), + "radiator" -> MakeTool(radiator), + "heavy_sniper" -> MakeTool(heavy_sniper), //hsr + "bolt_driver" -> MakeTool(bolt_driver), + "oicw" -> MakeTool(oicw), //scorpion + "flamethrower" -> MakeTool(flamethrower), + "winchester" -> MakeTool(winchester), + "pellet_gun" -> MakeTool(pellet_gun), + "six_shooter" -> MakeTool(six_shooter), + "dynomite" -> MakeTool(dynomite) ) + /** * A `Map` of operations for producing the `Tool` `Equipment` for utilities. * key - an identification string sent by the client * value - a curried function that builds the object */ - val supportWeapons : Map[String, () => Equipment] = Map( - "medkit" -> MakeKit(medkit), - "super_medkit" -> MakeKit(super_medkit), - "super_armorkit" -> MakeKit(super_armorkit), - "super_staminakit" -> MakeKit(super_staminakit), - "medicalapplicator" -> MakeTool(medicalapplicator), - "bank" -> MakeTool(bank, armor_canister), - "nano_dispenser" -> MakeTool(nano_dispenser), - "ace" -> MakeConstructionItem(ace), - "advanced_ace" -> MakeConstructionItem(advanced_ace), + val supportWeapons: Map[String, () => Equipment] = Map( + "medkit" -> MakeKit(medkit), + "super_medkit" -> MakeKit(super_medkit), + "super_armorkit" -> MakeKit(super_armorkit), + "super_staminakit" -> MakeKit(super_staminakit), + "medicalapplicator" -> MakeTool(medicalapplicator), + "bank" -> MakeTool(bank, armor_canister), + "nano_dispenser" -> MakeTool(nano_dispenser), + "ace" -> MakeConstructionItem(ace), + "advanced_ace" -> MakeConstructionItem(advanced_ace), "remote_electronics_kit" -> MakeSimpleItem(remote_electronics_kit), - "trek" -> MakeTool(trek), - "command_detonater" -> MakeSimpleItem(command_detonater), - "flail_targeting_laser" -> MakeSimpleItem(flail_targeting_laser) + "trek" -> MakeTool(trek), + "command_detonater" -> MakeSimpleItem(command_detonater), + "flail_targeting_laser" -> MakeSimpleItem(flail_targeting_laser) ) + /** * A single-element `Map` of the one piece of `Equipment` specific to the Router. */ - val routerTerminal : Map[String, () => Equipment] = Map("router_telepad" -> MakeTelepad(router_telepad)) + val routerTerminal: Map[String, () => Equipment] = Map("router_telepad" -> MakeTelepad(router_telepad)) /** * Create a new `Tool` from provided `EquipmentDefinition` objects. * @param tdef the `ToolDefinition` object * @return a partial function that, when called, creates the piece of `Equipment` */ - private def MakeTool(tdef : ToolDefinition)() : Tool = MakeTool(tdef, Nil) + private def MakeTool(tdef: ToolDefinition)(): Tool = MakeTool(tdef, Nil) /** * Create a new `Tool` from provided `EquipmentDefinition` objects. @@ -219,7 +225,7 @@ object EquipmentTerminalDefinition { * @param adef an `AmmoBoxDefinition` object * @return a partial function that, when called, creates the piece of `Equipment` */ - private def MakeTool(tdef : ToolDefinition, adef : AmmoBoxDefinition)() : Tool = MakeTool(tdef, List(adef)) + private def MakeTool(tdef: ToolDefinition, adef: AmmoBoxDefinition)(): Tool = MakeTool(tdef, List(adef)) /** * Create a new `Tool` from provided `EquipmentDefinition` objects. @@ -232,7 +238,7 @@ object EquipmentTerminalDefinition { * @see `GlobalDefinitions` * @see `OrderTerminalDefinition.BuildSimplifiedPattern` */ - private def MakeTool(tdef : ToolDefinition, adefs : List[AmmoBoxDefinition])() : Tool = { + private def MakeTool(tdef: ToolDefinition, adefs: List[AmmoBoxDefinition])(): Tool = { val obj = Tool(tdef) adefs match { case _ :: _ => @@ -259,7 +265,7 @@ object EquipmentTerminalDefinition { * @see `AmmoBoxDefinition` * @see `FireModeDefinition` */ - private def LoadAmmunitionIntoWeapon(weapon : Tool, adefs : List[AmmoBoxDefinition]) : Unit = { + private def LoadAmmunitionIntoWeapon(weapon: Tool, adefs: List[AmmoBoxDefinition]): Unit = { val definition = weapon.Definition (0 until math.min(weapon.MaxAmmoSlot, adefs.length)).foreach(index => { val ammoSlot = weapon.AmmoSlots(index) @@ -267,10 +273,13 @@ object EquipmentTerminalDefinition { case Some(aType) => ammoSlot.AllAmmoTypes.indexOf(aType.AmmoType) match { case -1 => - log.warn(s"terminal plans do not match definition: can not feed ${aType.AmmoType} ammunition into Tool (${definition.ObjectId} @ ammo $index)") + log.warn( + s"terminal plans do not match definition: can not feed ${aType.AmmoType} ammunition into Tool (${definition.ObjectId} @ ammo $index)" + ) case n => ammoSlot.AmmoTypeIndex = n - ammoSlot.Box = MakeAmmoBox(aType, Some(definition.FireModes(index).Magazine)) //make new internal magazine, full + ammoSlot.Box = + MakeAmmoBox(aType, Some(definition.FireModes(index).Magazine)) //make new internal magazine, full } case None => ; } @@ -285,7 +294,7 @@ object EquipmentTerminalDefinition { * @return a curried function that, when called, creates the piece of `Equipment` * @see `GlobalDefinitions` */ - private def MakeAmmoBox(adef : AmmoBoxDefinition, capacity : Option[Int] = None)() : AmmoBox = { + private def MakeAmmoBox(adef: AmmoBoxDefinition, capacity: Option[Int] = None)(): AmmoBox = { capacity match { case Some(cap) => AmmoBox(adef, cap) @@ -300,7 +309,7 @@ object EquipmentTerminalDefinition { * @return a curried function that, when called, creates the piece of `Equipment` * @see `GlobalDefinitions` */ - private def MakeKit(kdef : KitDefinition)() : Kit = Kit(kdef) + private def MakeKit(kdef: KitDefinition)(): Kit = Kit(kdef) /** * Create a new `BoomerTrigger`, a unique kind of `SimpleItem`. @@ -309,7 +318,7 @@ object EquipmentTerminalDefinition { * @return a curried function that, when called, creates the piece of `Equipment` * @see `GlobalDefinitions` */ - private def MakeTriggerItem(sdef : SimpleItemDefinition)() : SimpleItem = new BoomerTrigger + private def MakeTriggerItem(sdef: SimpleItemDefinition)(): SimpleItem = new BoomerTrigger /** * Create a new `SimpleItem` from provided `EquipmentDefinition` objects. @@ -317,7 +326,7 @@ object EquipmentTerminalDefinition { * @return a curried function that, when called, creates the piece of `Equipment` * @see `GlobalDefinitions` */ - private def MakeSimpleItem(sdef : SimpleItemDefinition)() : SimpleItem = SimpleItem(sdef) + private def MakeSimpleItem(sdef: SimpleItemDefinition)(): SimpleItem = SimpleItem(sdef) /** * Create a new `ConstructionItem` from provided `EquipmentDefinition` objects. @@ -325,14 +334,14 @@ object EquipmentTerminalDefinition { * @return a curried function that, when called, creates the piece of `Equipment` * @see `GlobalDefinitions` */ - private def MakeConstructionItem(cdef : ConstructionItemDefinition)() : ConstructionItem = ConstructionItem(cdef) + private def MakeConstructionItem(cdef: ConstructionItemDefinition)(): ConstructionItem = ConstructionItem(cdef) /** * na * @param cdef na * @return na */ - private def MakeTelepad(cdef : ConstructionItemDefinition)() : Telepad = Telepad(cdef) + private def MakeTelepad(cdef: ConstructionItemDefinition)(): Telepad = Telepad(cdef) /** * Accept a simplified blueprint for some piece of `Equipment` and create an actual piece of `Equipment` based on it. @@ -345,12 +354,12 @@ object EquipmentTerminalDefinition { * `TerminalDefinition.MakeConstructionItem`
* `TerminalDefinition.MakeKit` */ - def BuildSimplifiedPattern(entry : Loadout.Simplification) : Equipment = { + def BuildSimplifiedPattern(entry: Loadout.Simplification): Equipment = { import net.psforever.objects.loadouts.Loadout._ entry match { - case obj : ShorthandTool => - val ammo : List[AmmoBoxDefinition] = obj.ammo.map(fmode => { fmode.ammo.definition }) - val tool = Tool(obj.definition) + case obj: ShorthandTool => + val ammo: List[AmmoBoxDefinition] = obj.ammo.map(fmode => { fmode.ammo.definition }) + val tool = Tool(obj.definition) //makes Tools where an ammo slot may have one of its alternate ammo types (0 until tool.MaxAmmoSlot).foreach(index => { val slot = tool.AmmoSlots(index) @@ -359,19 +368,19 @@ object EquipmentTerminalDefinition { }) tool - case obj : ShorthandAmmoBox => + case obj: ShorthandAmmoBox => MakeAmmoBox(obj.definition) //Some(obj.capacity) - case obj : ShorthandConstructionItem => + case obj: ShorthandConstructionItem => MakeConstructionItem(obj.definition) - case obj : ShorthandTriggerItem => + case obj: ShorthandTriggerItem => MakeTriggerItem(obj.definition) - case obj : ShorthandSimpleItem => + case obj: ShorthandSimpleItem => MakeSimpleItem(obj.definition) - case obj : ShorthandKit => + case obj: ShorthandKit => MakeKit(obj.definition) } } @@ -386,11 +395,12 @@ object EquipmentTerminalDefinition { * @param msg the original packet carrying the request * @return an actionable message that explains how to process the request */ - def Buy(page0Stock : Map[String, ()=>Equipment], - page2Stock : Map[String, ()=>Equipment], - exosuits : Map[String, (ExoSuitType.Value, Int)]) - (player : Player, msg : ItemTransactionMessage): Terminal.Exchange = { - (msg.item_page : @switch) match { + def Buy( + page0Stock: Map[String, () => Equipment], + page2Stock: Map[String, () => Equipment], + exosuits: Map[String, (ExoSuitType.Value, Int)] + )(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { + (msg.item_page: @switch) match { case 0 => //Weapon tab page0Stock.get(msg.item_name) match { case Some(item) => diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/GeneratorTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/GeneratorTerminalDefinition.scala index 594fdb64..b369233f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/GeneratorTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/GeneratorTerminalDefinition.scala @@ -3,7 +3,7 @@ package net.psforever.objects.serverobject.terminals import net.psforever.objects.Player -class GeneratorTerminalDefinition(objId : Int) extends TerminalDefinition(objId) { +class GeneratorTerminalDefinition(objId: Int) extends TerminalDefinition(objId) { Name = "generator_terminal" - def Request(player : Player, msg : Any) : Terminal.Exchange = Terminal.NoDeal() + def Request(player: Player, msg: Any): Terminal.Exchange = Terminal.NoDeal() } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ImplantTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ImplantTerminalDefinition.scala index 3efe5dd6..96ed4d15 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ImplantTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ImplantTerminalDefinition.scala @@ -12,16 +12,16 @@ import net.psforever.objects.definition.ImplantDefinition * attached as a child of the visible implant terminal component - the "implant_terminal_mech." */ object ImplantTerminalDefinition { - val implants : Map[String, ImplantDefinition] = Map ( - "advanced_regen" -> GlobalDefinitions.advanced_regen, - "targeting" -> GlobalDefinitions.targeting, - "audio_amplifier" -> GlobalDefinitions.audio_amplifier, + val implants: Map[String, ImplantDefinition] = Map( + "advanced_regen" -> GlobalDefinitions.advanced_regen, + "targeting" -> GlobalDefinitions.targeting, + "audio_amplifier" -> GlobalDefinitions.audio_amplifier, "darklight_vision" -> GlobalDefinitions.darklight_vision, - "melee_booster" -> GlobalDefinitions.melee_booster, - "personal_shield" -> GlobalDefinitions.personal_shield, - "range_magnifier" -> GlobalDefinitions.range_magnifier, - "second_wind" -> GlobalDefinitions.second_wind, - "silent_run" -> GlobalDefinitions.silent_run, - "surge" -> GlobalDefinitions.surge + "melee_booster" -> GlobalDefinitions.melee_booster, + "personal_shield" -> GlobalDefinitions.personal_shield, + "range_magnifier" -> GlobalDefinitions.range_magnifier, + "second_wind" -> GlobalDefinitions.second_wind, + "silent_run" -> GlobalDefinitions.silent_run, + "surge" -> GlobalDefinitions.surge ) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/MatrixTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/MatrixTerminalDefinition.scala index 3ceb4fdd..0f82b8a5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/MatrixTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/MatrixTerminalDefinition.scala @@ -16,20 +16,21 @@ import net.psforever.objects.serverobject.structures.Amenity * @see `Zone.SpawnGroups` * @param objectId the object's identifier number */ -class MatrixTerminalDefinition(objectId : Int) extends TerminalDefinition(objectId) { - def Request(player : Player, msg : Any) : Terminal.Exchange = Terminal.NoDeal() +class MatrixTerminalDefinition(objectId: Int) extends TerminalDefinition(objectId) { + def Request(player: Player, msg: Any): Terminal.Exchange = Terminal.NoDeal() } object MatrixTerminalDefinition { + /** * Assemble some logic for a provided object. * @param obj an `Amenity` object; * anticipating a `Terminal` object using this same definition * @param context hook to the local `Actor` system */ - def Setup(obj : Amenity, context : ActorContext) : Unit = { + def Setup(obj: Amenity, context: ActorContext): Unit = { import akka.actor.Props - if(obj.Actor == Default.Actor) { + if (obj.Actor == Default.Actor) { obj.Actor = context.actorOf(Props(classOf[TerminalControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/MedicalTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/MedicalTerminalDefinition.scala index 29386a79..e59752b8 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/MedicalTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/MedicalTerminalDefinition.scala @@ -10,35 +10,35 @@ import scala.concurrent.duration.{Duration, FiniteDuration} * This includes the functionality of the formal medical terminals and some of the cavern crystals. * Do not confuse the game's internal "medical_terminal" object category and the actual `medical_terminal` object (529). */ -class MedicalTerminalDefinition(objectId : Int) extends ProximityTerminalDefinition(objectId) { - private var interval : FiniteDuration = Duration(0, "seconds") - private var healAmount : Int = 0 - private var armorAmount : Int = 0 +class MedicalTerminalDefinition(objectId: Int) extends ProximityTerminalDefinition(objectId) { + private var interval: FiniteDuration = Duration(0, "seconds") + private var healAmount: Int = 0 + private var armorAmount: Int = 0 - def Interval : FiniteDuration = interval + def Interval: FiniteDuration = interval - def Interval_=(amount : Int) : FiniteDuration = { + def Interval_=(amount: Int): FiniteDuration = { Interval_=(Duration(amount, "milliseconds")) } - def Interval_=(amount : FiniteDuration) : FiniteDuration = { + def Interval_=(amount: FiniteDuration): FiniteDuration = { interval = amount Interval } - def HealAmount : Int = healAmount + def HealAmount: Int = healAmount - def HealAmount_=(amount : Int) : Int = { + def HealAmount_=(amount: Int): Int = { healAmount = amount HealAmount } - def ArmorAmount : Int = armorAmount + def ArmorAmount: Int = armorAmount - def ArmorAmount_=(amount : Int) : Int = { + def ArmorAmount_=(amount: Int): Int = { armorAmount = amount ArmorAmount } - override def Request(player : Player, msg : Any) : Terminal.Exchange = Terminal.NoDeal() + override def Request(player: Player, msg: Any): Terminal.Exchange = Terminal.NoDeal() } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/OrderTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/OrderTerminalDefinition.scala index ff19e49a..66449b62 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/OrderTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/OrderTerminalDefinition.scala @@ -33,42 +33,46 @@ import scala.collection.mutable * @see `Terminal` * @see `Utility` */ -class OrderTerminalDefinition(objId : Int) extends TerminalDefinition(objId) { +class OrderTerminalDefinition(objId: Int) extends TerminalDefinition(objId) { + /** An internal object organizing the different specification options found on a terminal's UI. */ - private val tabs : mutable.HashMap[Int, OrderTerminalDefinition.Tab] = + private val tabs: mutable.HashMap[Int, OrderTerminalDefinition.Tab] = new mutable.HashMap[Int, OrderTerminalDefinition.Tab]() + /** Disconnect the ability to return stock back to the terminal * from the type of stock available from the terminal in general * or the type of stock available from its denoted page. - * Will always return a message of type `SellEquipment`.*/ - private var sellEquipmentDefault : Boolean = false + * Will always return a message of type `SellEquipment`. + */ + private var sellEquipmentDefault: Boolean = false - def Tab : mutable.HashMap[Int, OrderTerminalDefinition.Tab] = tabs + def Tab: mutable.HashMap[Int, OrderTerminalDefinition.Tab] = tabs - def SellEquipmentByDefault : Boolean = sellEquipmentDefault + def SellEquipmentByDefault: Boolean = sellEquipmentDefault - def SellEquipmentByDefault_=(sell : Boolean) : Boolean = { + def SellEquipmentByDefault_=(sell: Boolean): Boolean = { sellEquipmentDefault = sell SellEquipmentByDefault } - def Request(player : Player, msg : Any) : Terminal.Exchange = msg match { - case message : ItemTransactionMessage => - message.transaction_type match { - case TransactionType.Buy | TransactionType.Learn => - Buy(player, message) - case TransactionType.Loadout => - Loadout(player, message) - case TransactionType.Sell => - Sell(player, message) - case _ => - Terminal.NoDeal() - } - case _ => - Terminal.NoDeal() - } + def Request(player: Player, msg: Any): Terminal.Exchange = + msg match { + case message: ItemTransactionMessage => + message.transaction_type match { + case TransactionType.Buy | TransactionType.Learn => + Buy(player, message) + case TransactionType.Loadout => + Loadout(player, message) + case TransactionType.Sell => + Sell(player, message) + case _ => + Terminal.NoDeal() + } + case _ => + Terminal.NoDeal() + } - private def Buy(player: Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + private def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { tabs.get(msg.item_page) match { case Some(page) => page.Buy(player, msg) @@ -77,13 +81,12 @@ class OrderTerminalDefinition(objId : Int) extends TerminalDefinition(objId) { } } - private def Loadout(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = Buy(player, msg) + private def Loadout(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = Buy(player, msg) - private def Sell(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { - if(sellEquipmentDefault) { + private def Sell(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { + if (sellEquipmentDefault) { Terminal.SellEquipment() - } - else { + } else { tabs.get(msg.item_page) match { case Some(page) => page.Sell(player, msg) @@ -93,7 +96,7 @@ class OrderTerminalDefinition(objId : Int) extends TerminalDefinition(objId) { } } - override def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + override def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { tabs.get(msg.msg.item_page) match { case Some(page) => page.Dispatch(sender, terminal, msg) @@ -103,14 +106,15 @@ class OrderTerminalDefinition(objId : Int) extends TerminalDefinition(objId) { } object OrderTerminalDefinition { + /** * A basic tab outlining the specific type of stock available from this part of the terminal's interface. * @see `ItemTransactionMessage` */ sealed trait Tab { - def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange - def Sell(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = Terminal.NoDeal() - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit + def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange + def Sell(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = Terminal.NoDeal() + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit } /** @@ -119,17 +123,17 @@ object OrderTerminalDefinition { * @param stock the key is always a `String` value as defined from `ItemTransationMessage` data; * the value is a tuple composed of an `ExoSuitType` value and a subtype value */ - final case class ArmorPage(stock : Map[String, (ExoSuitType.Value, Int)]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class ArmorPage(stock: Map[String, (ExoSuitType.Value, Int)]) extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some((suit : ExoSuitType.Value, subtype : Int)) => + case Some((suit: ExoSuitType.Value, subtype: Int)) => Terminal.BuyExosuit(suit, subtype) case _ => Terminal.NoDeal() } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { msg.player.Actor ! msg } } @@ -143,10 +147,11 @@ object OrderTerminalDefinition { * @param items the key is always a `String` value as defined from `ItemTransationMessage` data; * the value is a curried function that produces an `Equipment` object */ - final case class ArmorWithAmmoPage(stock : Map[String, (ExoSuitType.Value, Int)], items : Map[String, ()=>Equipment]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class ArmorWithAmmoPage(stock: Map[String, (ExoSuitType.Value, Int)], items: Map[String, () => Equipment]) + extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some((suit : ExoSuitType.Value, subtype : Int)) => + case Some((suit: ExoSuitType.Value, subtype: Int)) => Terminal.BuyExosuit(suit, subtype) case _ => items.get(msg.item_name) match { @@ -158,10 +163,10 @@ object OrderTerminalDefinition { } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { msg.response match { - case _ : Terminal.BuyExosuit => msg.player.Actor ! msg - case _ => sender ! msg + case _: Terminal.BuyExosuit => msg.player.Actor ! msg + case _ => sender ! msg } } } @@ -173,26 +178,26 @@ object OrderTerminalDefinition { * @param stock the key is always a `String` value as defined from `ItemTransationMessage` data; * the value is a `CertificationType` value */ - final case class CertificationPage(stock : Map[String, CertificationType.Value]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class CertificationPage(stock: Map[String, CertificationType.Value]) extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some(cert : CertificationType.Value) => + case Some(cert: CertificationType.Value) => Terminal.LearnCertification(cert) case _ => Terminal.NoDeal() } } - override def Sell(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + override def Sell(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some(cert : CertificationType.Value) => + case Some(cert: CertificationType.Value) => Terminal.SellCertification(cert) case None => Terminal.NoDeal() } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { sender ! msg } } @@ -202,8 +207,8 @@ object OrderTerminalDefinition { * @param stock the key is always a `String` value as defined from `ItemTransationMessage` data; * the value is a curried function that produces an `Equipment` object */ - final case class EquipmentPage(stock : Map[String, ()=>Equipment]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class EquipmentPage(stock: Map[String, () => Equipment]) extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { case Some(item) => Terminal.BuyEquipment(item()) @@ -212,7 +217,7 @@ object OrderTerminalDefinition { } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { sender ! msg } } @@ -225,26 +230,26 @@ object OrderTerminalDefinition { * @param stock the key is always a `String` value as defined from `ItemTransationMessage` data; * the value is a `CertificationType` value */ - final case class ImplantPage(stock : Map[String, ImplantDefinition]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class ImplantPage(stock: Map[String, ImplantDefinition]) extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some(implant : ImplantDefinition) => + case Some(implant: ImplantDefinition) => Terminal.LearnImplant(implant) case None => Terminal.NoDeal() } } - override def Sell(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + override def Sell(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { - case Some(implant : ImplantDefinition) => + case Some(implant: ImplantDefinition) => Terminal.SellImplant(implant) case None => Terminal.NoDeal() } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { msg.player.Actor ! msg } } @@ -257,16 +262,16 @@ object OrderTerminalDefinition { * is the responsibility of the specific tab that is instantiated. */ abstract class LoadoutTab extends Tab { - private var contraband : Seq[Any] = Nil + private var contraband: Seq[Any] = Nil - def Exclude : Seq[Any] = contraband + def Exclude: Seq[Any] = contraband - def Exclude_=(equipment : Any) : Seq[Any] = { + def Exclude_=(equipment: Any): Seq[Any] = { contraband = Seq(equipment) Exclude } - def Exclude_=(equipmentList : Seq[Any]) : Seq[Any] = { + def Exclude_=(equipmentList: Seq[Any]): Seq[Any] = { contraband = equipmentList Exclude } @@ -290,9 +295,10 @@ object OrderTerminalDefinition { */ //TODO block equipment by blocking ammunition type final case class InfantryLoadoutPage() extends LoadoutTab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { player.EquipmentLoadouts.LoadLoadout(msg.unk1) match { - case Some(loadout : InfantryLoadout) if !Exclude.contains(loadout.exosuit) && !Exclude.contains((loadout.exosuit, loadout.subtype)) => + case Some(loadout: InfantryLoadout) + if !Exclude.contains(loadout.exosuit) && !Exclude.contains((loadout.exosuit, loadout.subtype)) => val holsters = loadout.visible_slots .map(entry => { InventoryItem(BuildSimplifiedPattern(entry.item), entry.index) }) .filterNot { entry => Exclude.contains(entry.obj.Definition) } @@ -305,7 +311,7 @@ object OrderTerminalDefinition { } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { msg.player.Actor ! msg } } @@ -323,9 +329,9 @@ object OrderTerminalDefinition { * @see `VehicleLoadout` */ final case class VehicleLoadoutPage() extends LoadoutTab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { player.EquipmentLoadouts.LoadLoadout(msg.unk1 + 10) match { - case Some(loadout : VehicleLoadout) if !Exclude.contains(loadout.vehicle_definition) => + case Some(loadout: VehicleLoadout) if !Exclude.contains(loadout.vehicle_definition) => val weapons = loadout.visible_slots .map(entry => { InventoryItem(BuildSimplifiedPattern(entry.item), entry.index) }) val inventory = loadout.inventory @@ -337,11 +343,11 @@ object OrderTerminalDefinition { } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { val player = msg.player player.Zone.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) => vehicle.Actor ! msg - case _ => sender ! Terminal.TerminalMessage(player, msg.msg, Terminal.NoDeal()) + case Some(vehicle: Vehicle) => vehicle.Actor ! msg + case _ => sender ! Terminal.TerminalMessage(player, msg.msg, Terminal.NoDeal()) } } } @@ -357,15 +363,19 @@ object OrderTerminalDefinition { * @see `VehicleLoadout` */ import net.psforever.objects.loadouts.{Loadout => Contents} //distinguish from Terminal.Loadout message - final case class VehiclePage(stock : Map[String, ()=>Vehicle], trunk : Map[String, Contents]) extends Tab { - override def Buy(player : Player, msg : ItemTransactionMessage) : Terminal.Exchange = { + final case class VehiclePage(stock: Map[String, () => Vehicle], trunk: Map[String, Contents]) extends Tab { + override def Buy(player: Player, msg: ItemTransactionMessage): Terminal.Exchange = { stock.get(msg.item_name) match { case Some(vehicle) => val (weapons, inventory) = trunk.get(msg.item_name) match { - case Some(loadout : VehicleLoadout) => + case Some(loadout: VehicleLoadout) => ( - loadout.visible_slots.map(entry => { InventoryItem(EquipmentTerminalDefinition.BuildSimplifiedPattern(entry.item), entry.index) }), - loadout.inventory.map(entry => { InventoryItem(EquipmentTerminalDefinition.BuildSimplifiedPattern(entry.item), entry.index) }) + loadout.visible_slots.map(entry => { + InventoryItem(EquipmentTerminalDefinition.BuildSimplifiedPattern(entry.item), entry.index) + }), + loadout.inventory.map(entry => { + InventoryItem(EquipmentTerminalDefinition.BuildSimplifiedPattern(entry.item), entry.index) + }) ) case _ => (List.empty, List.empty) @@ -376,7 +386,7 @@ object OrderTerminalDefinition { } } - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { sender ! msg } } @@ -387,9 +397,9 @@ object OrderTerminalDefinition { * anticipating a `Terminal` object using this same definition * @param context hook to the local `Actor` system */ - def Setup(obj : Amenity, context : ActorContext) : Unit = { + def Setup(obj: Amenity, context: ActorContext): Unit = { import akka.actor.Props - if(obj.Actor == Default.Actor) { + if (obj.Actor == Default.Actor) { obj.Actor = context.actorOf(Props(classOf[TerminalControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityDefinition.scala index e2b9f889..1ddcfacb 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityDefinition.scala @@ -15,21 +15,22 @@ import scala.collection.mutable * between the server and client using `ProximityTerminalUseMessage` game packets. */ trait ProximityDefinition { - this : ObjectDefinition => + this: ObjectDefinition => - private var useRadius : Float = 0f //TODO belongs on a wider range of object definitions - private val targetValidation : mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject=>Boolean] = new mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject=>Boolean]() + private var useRadius: Float = 0f //TODO belongs on a wider range of object definitions + private val targetValidation: mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject => Boolean] = + new mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject => Boolean]() - def UseRadius : Float = useRadius + def UseRadius: Float = useRadius - def UseRadius_=(radius : Float) : Float = { + def UseRadius_=(radius: Float): Float = { useRadius = radius UseRadius } - def TargetValidation : mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject=>Boolean] = targetValidation + def TargetValidation: mutable.HashMap[EffectTarget.Category.Value, PlanetSideGameObject => Boolean] = targetValidation - def Validations : Seq[PlanetSideGameObject=>Boolean] = { + def Validations: Seq[PlanetSideGameObject => Boolean] = { targetValidation.headOption match { case Some(_) => targetValidation.values.toSeq diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminal.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminal.scala index 63aa9479..9527e47e 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminal.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminal.scala @@ -15,10 +15,10 @@ import services.Service * For example, the cavern crystals are considered owner-neutral elements that are not attached to a `Building` object. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class ProximityTerminal(tdef : ProximityTerminalDefinition) extends Terminal(tdef) with ProximityUnit { - override def Request(player : Player, msg : Any) : Terminal.Exchange = { +class ProximityTerminal(tdef: ProximityTerminalDefinition) extends Terminal(tdef) with ProximityUnit { + override def Request(player: Player, msg: Any): Terminal.Exchange = { msg match { - case message : CommonMessages.Use => + case message: CommonMessages.Use => Actor ! message case _ => } @@ -27,11 +27,12 @@ class ProximityTerminal(tdef : ProximityTerminalDefinition) extends Terminal(tde } object ProximityTerminal { + /** * Overloaded constructor. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(tdef : ProximityTerminalDefinition) : ProximityTerminal = { + def apply(tdef: ProximityTerminalDefinition): ProximityTerminal = { new ProximityTerminal(tdef) } @@ -44,7 +45,7 @@ object ProximityTerminal { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `Terminal` object */ - def Constructor(tdef : ProximityTerminalDefinition)(id : Int, context : ActorContext) : Terminal = { + def Constructor(tdef: ProximityTerminalDefinition)(id: Int, context: ActorContext): Terminal = { import akka.actor.Props val obj = ProximityTerminal(tdef) obj.Actor = context.actorOf(Props(classOf[ProximityTerminalControl], obj), s"${tdef.Name}_$id") @@ -59,7 +60,7 @@ object ProximityTerminal { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `Terminal` object */ - def Constructor(pos : Vector3, tdef : ProximityTerminalDefinition)(id : Int, context : ActorContext) : Terminal = { + def Constructor(pos: Vector3, tdef: ProximityTerminalDefinition)(id: Int, context: ActorContext): Terminal = { import akka.actor.Props val obj = ProximityTerminal(tdef) obj.Position = pos @@ -73,10 +74,11 @@ object ProximityTerminal { * anticipating a `Terminal` object using this same definition * @param context hook to the local `Actor` system */ - def Setup(obj : Amenity, context : ActorContext) : Unit = { + def Setup(obj: Amenity, context: ActorContext): Unit = { import akka.actor.Props - if(obj.Actor == Default.Actor) { - obj.Actor = context.actorOf(Props(classOf[ProximityTerminalControl], obj), PlanetSideServerObject.UniqueActorName(obj)) + if (obj.Actor == Default.Actor) { + obj.Actor = + context.actorOf(Props(classOf[ProximityTerminalControl], obj), PlanetSideServerObject.UniqueActorName(obj)) obj.Actor ! Service.Startup() } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalControl.scala index 6f07e1e4..65085461 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalControl.scala @@ -19,121 +19,134 @@ import scala.concurrent.duration._ * it returns the same type of messages - wrapped in a `TerminalMessage` - to the `sender`. * @param term the proximity unit (terminal) */ -class ProximityTerminalControl(term : Terminal with ProximityUnit) extends Actor - with FactionAffinityBehavior.Check - with HackableBehavior.GenericHackable - with DamageableAmenity - with RepairableAmenity { - def FactionObject = term - def HackableObject = term - def TerminalObject = term +class ProximityTerminalControl(term: Terminal with ProximityUnit) + extends Actor + with FactionAffinityBehavior.Check + with HackableBehavior.GenericHackable + with DamageableAmenity + with RepairableAmenity { + def FactionObject = term + def HackableObject = term + def TerminalObject = term def DamageableObject = term def RepairableObject = term - var terminalAction : Cancellable = Default.Cancellable - val callbacks : mutable.ListBuffer[ActorRef] = new mutable.ListBuffer[ActorRef]() - val log = org.log4s.getLogger + var terminalAction: Cancellable = Default.Cancellable + val callbacks: mutable.ListBuffer[ActorRef] = new mutable.ListBuffer[ActorRef]() + val log = org.log4s.getLogger - def receive : Receive = checkBehavior - .orElse(hackableBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - //TODO setup certifications check - term.Owner match { - case b : Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && term.HackedBy.isEmpty => - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, term), - GenericHackables.FinishHacking(term, player, 3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, term, item.GUID) - ) - case _ => ; - } - - case CommonMessages.Use(_, Some(target : PlanetSideGameObject)) => - if(!term.Destroyed && term.Definition.asInstanceOf[ProximityDefinition].Validations.exists(p => p(target))) { - Use(target, term.Continent, sender) - } - case CommonMessages.Use(_, Some((target : PlanetSideGameObject, callback : ActorRef))) => - if(!term.Destroyed && term.Definition.asInstanceOf[ProximityDefinition].Validations.exists(p => p(target))) { - Use(target, term.Continent, callback) - } - - case CommonMessages.Use(_, _) => - log.warn(s"unexpected format for CommonMessages.Use in this context") - - case CommonMessages.Unuse(_, Some(target : PlanetSideGameObject)) => - Unuse(target, term.Continent) - - case CommonMessages.Unuse(_, _) => - log.warn(s"unexpected format for CommonMessages.Unuse in this context") - - case ProximityTerminalControl.TerminalAction() => - val proxDef = term.Definition.asInstanceOf[ProximityDefinition] - val validateFunc : PlanetSideGameObject=>Boolean = term.Validate(proxDef.UseRadius * proxDef.UseRadius, proxDef.Validations) - val callbackList = callbacks.toList - term.Targets.zipWithIndex.foreach({ case(target, index) => - if(!term.Destroyed && validateFunc(target)) { - callbackList.lift(index) match { - case Some(cback) => - cback ! ProximityUnit.Action(term, target) - case None => - log.error(s"improper callback registered for $target on $term in zone ${term.Owner.Continent}; this may be recoverable") - } + def receive: Receive = + checkBehavior + .orElse(hackableBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + //TODO setup certifications check + term.Owner match { + case b: Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && term.HackedBy.isEmpty => + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, term), + GenericHackables.FinishHacking(term, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, term, item.GUID) + ) + case _ => ; } - else { - Unuse(target, term.Continent) - } - }) - case ProximityUnit.Action(_, _) => + case CommonMessages.Use(_, Some(target: PlanetSideGameObject)) => + if (!term.Destroyed && term.Definition.asInstanceOf[ProximityDefinition].Validations.exists(p => p(target))) { + Use(target, term.Continent, sender) + } + case CommonMessages.Use(_, Some((target: PlanetSideGameObject, callback: ActorRef))) => + if (!term.Destroyed && term.Definition.asInstanceOf[ProximityDefinition].Validations.exists(p => p(target))) { + Use(target, term.Continent, callback) + } + + case CommonMessages.Use(_, _) => + log.warn(s"unexpected format for CommonMessages.Use in this context") + + case CommonMessages.Unuse(_, Some(target: PlanetSideGameObject)) => + Unuse(target, term.Continent) + + case CommonMessages.Unuse(_, _) => + log.warn(s"unexpected format for CommonMessages.Unuse in this context") + + case ProximityTerminalControl.TerminalAction() => + val proxDef = term.Definition.asInstanceOf[ProximityDefinition] + val validateFunc: PlanetSideGameObject => Boolean = + term.Validate(proxDef.UseRadius * proxDef.UseRadius, proxDef.Validations) + val callbackList = callbacks.toList + term.Targets.zipWithIndex.foreach({ + case (target, index) => + if (!term.Destroyed && validateFunc(target)) { + callbackList.lift(index) match { + case Some(cback) => + cback ! ProximityUnit.Action(term, target) + case None => + log.error( + s"improper callback registered for $target on $term in zone ${term.Owner.Continent}; this may be recoverable" + ) + } + } else { + Unuse(target, term.Continent) + } + }) + + case ProximityUnit.Action(_, _) => //reserved - case msg => - log.warn(s"unexpected message $msg") - } + case msg => + log.warn(s"unexpected message $msg") + } - def Use(target : PlanetSideGameObject, zone : String, callback : ActorRef) : Unit = { + def Use(target: PlanetSideGameObject, zone: String, callback: ActorRef): Unit = { val hadNoUsers = term.NumberUsers == 0 - if(term.AddUser(target)) { + if (term.AddUser(target)) { log.trace(s"ProximityTerminal.Use: unit ${term.Definition.Name}@${term.GUID.guid} will act on $target") //add callback callbacks += callback //activation - if(term.NumberUsers == 1 && hadNoUsers) { + if (term.NumberUsers == 1 && hadNoUsers) { val medDef = term.Definition.asInstanceOf[MedicalTerminalDefinition] import scala.concurrent.ExecutionContext.Implicits.global terminalAction.cancel - terminalAction = context.system.scheduler.scheduleWithFixedDelay(500 milliseconds, medDef.Interval, self, ProximityTerminalControl.TerminalAction()) + terminalAction = context.system.scheduler.scheduleWithFixedDelay( + 500 milliseconds, + medDef.Interval, + self, + ProximityTerminalControl.TerminalAction() + ) TerminalObject.Zone.LocalEvents ! Terminal.StartProximityEffect(term) } - } - else { + } else { log.warn(s"ProximityTerminal.Use: $target was rejected by unit ${term.Definition.Name}@${term.GUID.guid}") } } - def Unuse(target : PlanetSideGameObject, zone : String) : Unit = { - val whereTarget = term.Targets.indexWhere(_ eq target) + def Unuse(target: PlanetSideGameObject, zone: String): Unit = { + val whereTarget = term.Targets.indexWhere(_ eq target) val previousUsers = term.NumberUsers - val hadUsers = previousUsers > 0 - if(whereTarget > -1 && term.RemoveUser(target)) { - log.trace(s"ProximityTerminal.Unuse: unit ${term.Definition.Name}@${term.GUID.guid} will cease operation on $target") + val hadUsers = previousUsers > 0 + if (whereTarget > -1 && term.RemoveUser(target)) { + log.trace( + s"ProximityTerminal.Unuse: unit ${term.Definition.Name}@${term.GUID.guid} will cease operation on $target" + ) //remove callback callbacks.remove(whereTarget) //de-activation (global / local) - if(term.NumberUsers == 0 && hadUsers) { + if (term.NumberUsers == 0 && hadUsers) { terminalAction.cancel TerminalObject.Zone.LocalEvents ! Terminal.StopProximityEffect(term) } - } - else { - log.debug(s"ProximityTerminal.Unuse: target by proximity $target is not known to $term, though the unit tried to 'Unuse' it") + } else { + log.debug( + s"ProximityTerminal.Unuse: target by proximity $target is not known to $term, though the unit tried to 'Unuse' it" + ) } } - override def toString : String = term.Definition.Name + override def toString: String = term.Definition.Name } object ProximityTerminalControl { diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalDefinition.scala index ce0c5a15..da9a9e8c 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityTerminalDefinition.scala @@ -4,10 +4,10 @@ package net.psforever.objects.serverobject.terminals import net.psforever.objects.Player /** - *The definition for any `Terminal` that can be accessed for amenities and services, + * The definition for any `Terminal` that can be accessed for amenities and services, * triggered when a certain distance from the unit itself (proximity-based). * @param objectId the object's identifier number */ -class ProximityTerminalDefinition(objectId : Int) extends TerminalDefinition(objectId) with ProximityDefinition { - def Request(player : Player, msg : Any) : Terminal.Exchange = Terminal.NoDeal() +class ProximityTerminalDefinition(objectId: Int) extends TerminalDefinition(objectId) with ProximityDefinition { + def Request(player: Player, msg: Any): Terminal.Exchange = Terminal.NoDeal() } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityUnit.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityUnit.scala index 7792bce5..7892d3bb 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityUnit.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/ProximityUnit.scala @@ -12,16 +12,16 @@ import scala.collection.mutable * For example, the cavern crystals are considered owner-neutral elements that are not attached to a `Building` object. */ trait ProximityUnit { - this : Terminal => + this: Terminal => /** * A list of targets that are currently affected by this proximity unit. */ - private var targets : mutable.ListBuffer[PlanetSideGameObject] = mutable.ListBuffer[PlanetSideGameObject]() + private var targets: mutable.ListBuffer[PlanetSideGameObject] = mutable.ListBuffer[PlanetSideGameObject]() - def Targets : Seq[PlanetSideGameObject] = targets toList + def Targets: Seq[PlanetSideGameObject] = targets toList - def NumberUsers : Int = targets.size + def NumberUsers: Int = targets.size /** * Accept a new target for this unit. @@ -29,13 +29,12 @@ trait ProximityUnit { * @return `true`, if the entrant has been added and is new to the list; * `false` if the entrant is already in the list or can not be added */ - def AddUser(target : PlanetSideGameObject) : Boolean = { + def AddUser(target: PlanetSideGameObject): Boolean = { val alreadyContains = targets.contains(target) - if(!alreadyContains) { + if (!alreadyContains) { targets += target targets.contains(target) - } - else { + } else { false } } @@ -46,13 +45,12 @@ trait ProximityUnit { * @return `true`, if the submitted entity was previously in the list but is not longer in the list; * `false`, if the submitted entity was never in the list or can not be removed */ - def RemoveUser(target : PlanetSideGameObject) : Boolean = { + def RemoveUser(target: PlanetSideGameObject): Boolean = { val alreadyContains = targets.contains(target) - if(alreadyContains) { + if (alreadyContains) { targets -= target !targets.contains(target) - } - else { + } else { false } } @@ -63,9 +61,9 @@ trait ProximityUnit { * @return `true`, if the entity passes the validation tests; * `false`, otherwise */ - def Validate(target : PlanetSideGameObject) : Boolean = { - val proxDef = Definition.asInstanceOf[ProximityDefinition] - val radius = proxDef.UseRadius * proxDef.UseRadius + def Validate(target: PlanetSideGameObject): Boolean = { + val proxDef = Definition.asInstanceOf[ProximityDefinition] + val radius = proxDef.UseRadius * proxDef.UseRadius val validation = proxDef.Validations Validate(radius, validation)(target) } @@ -83,12 +81,16 @@ trait ProximityUnit { * @return `true`, if the entity passes the validation tests; * `false`, otherwise */ - def Validate(radius : Float, validations : Seq[(PlanetSideGameObject)=>Boolean])(target : PlanetSideGameObject) : Boolean = { + def Validate(radius: Float, validations: Seq[(PlanetSideGameObject) => Boolean])( + target: PlanetSideGameObject + ): Boolean = { //org.log4s.getLogger("ProximityUnit").info(s"vehicle: ${Owner.Position}, terminal: $Position, target: ${target.Position}, toOwner: ${Vector3.Distance(Position, Owner.Position)}, toTarget: ${Vector3.Distance(Position, target.Position)}") - targets.contains(target) && Vector3.DistanceSquared(Position, target.Position) <= radius && validations.exists(p => p(target)) + targets.contains(target) && Vector3.DistanceSquared(Position, target.Position) <= radius && validations.exists(p => + p(target) + ) } } object ProximityUnit { - final case class Action(terminal : Terminal with ProximityUnit, target : PlanetSideGameObject) + final case class Action(terminal: Terminal with ProximityUnit, target: PlanetSideGameObject) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/Terminal.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/Terminal.scala index c518b09c..02081cbd 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/Terminal.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/Terminal.scala @@ -17,19 +17,18 @@ import net.psforever.types.{PlanetSideGUID, Vector3} * while `Vehicle`-owned terminals may not. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ -class Terminal(tdef : TerminalDefinition) extends Amenity - with Hackable { +class Terminal(tdef: TerminalDefinition) extends Amenity with Hackable { HackSound = TriggeredSound.HackTerminal HackEffectDuration = Array(0, 30, 60, 90) HackDuration = Array(0, 10, 5, 3) //the following fields and related methods are neither finalized nor integrated; GOTO Request - def Damaged(dam : Int) : Unit = { + def Damaged(dam: Int): Unit = { Health = Math.max(0, Health - dam) } - def Repair(rep : Int) : Unit = { + def Repair(rep: Int): Unit = { Health = Math.min(Health + rep, 100) } @@ -45,26 +44,26 @@ class Terminal(tdef : TerminalDefinition) extends Amenity * @param msg the original packet carrying the request * @return an actionable message that explains what resulted from interacting with this `Terminal` */ - def Request(player : Player, msg : Any) : Terminal.Exchange = { - if(Faction == player.Faction || HackedBy.isDefined || Owner.GUID == PlanetSideGUID(0)) { + def Request(player: Player, msg: Any): Terminal.Exchange = { + if (Faction == player.Faction || HackedBy.isDefined || Owner.GUID == PlanetSideGUID(0)) { tdef.Request(player, msg) - } - else { + } else { Terminal.NoDeal() } } - def Definition : TerminalDefinition = tdef + def Definition: TerminalDefinition = tdef } object Terminal { + /** * Entry message into this `Terminal` that carries the request. * Accessing an option in a `Terminal` normally always results in this message. * @param player the player who sent this request message * @param msg the original packet carrying the request */ - final case class Request(player : Player, msg : ItemTransactionMessage) + final case class Request(player: Player, msg: ItemTransactionMessage) /** * A basic `Trait` connecting all of the actionable `Terminal` response messages. @@ -77,7 +76,7 @@ object Terminal { * @param msg the original packet carrying the request * @param response the result of the processed request */ - final case class TerminalMessage(player : Player, msg : ItemTransactionMessage, response : Exchange) + final case class TerminalMessage(player: Player, msg: ItemTransactionMessage, response: Exchange) /** * No action will result from interacting with this `Terminal`. @@ -86,6 +85,7 @@ object Terminal { final case class NoDeal() extends Exchange import net.psforever.types.ExoSuitType + /** * The `Player` exo-suit will be changed to the prescribed one. * The subtype will be important if the user is swapping to an `ExoSuitType.MAX` exo-suit. @@ -93,16 +93,17 @@ object Terminal { * @param exosuit the type of exo-suit * @param subtype the exo-suit subtype, if any */ - final case class BuyExosuit(exosuit : ExoSuitType.Value, subtype : Int = 0) extends Exchange + final case class BuyExosuit(exosuit: ExoSuitType.Value, subtype: Int = 0) extends Exchange import net.psforever.objects.equipment.Equipment + /** * A single piece of `Equipment` has been selected and will be given to the `Player`. * The `Player` must decide what to do with it once it is in their control. * A result of a processed request. * @param item the `Equipment` being given to the player */ - final case class BuyEquipment(item : Equipment) extends Exchange + final case class BuyEquipment(item: Equipment) extends Exchange /** * A roundabout message oft-times. @@ -112,40 +113,44 @@ object Terminal { final case class SellEquipment() extends Exchange //TODO if there are exceptions, find them import net.psforever.types.CertificationType + /** * Provide the certification type unlocked by the player. * @param cert the certification unlocked */ - final case class LearnCertification(cert : CertificationType.Value) extends Exchange + final case class LearnCertification(cert: CertificationType.Value) extends Exchange /** * Provide the certification type freed-up by the player. * @param cert the certification returned */ - final case class SellCertification(cert : CertificationType.Value) extends Exchange + final case class SellCertification(cert: CertificationType.Value) extends Exchange import net.psforever.objects.definition.ImplantDefinition + /** * Provide the implant type unlocked by the player. * @param implant the implant (definition) requested */ - final case class LearnImplant(implant : ImplantDefinition) extends Exchange + final case class LearnImplant(implant: ImplantDefinition) extends Exchange /** * Provide the implant type freed-up by the player. * @param implant the implant (definition) returned */ - final case class SellImplant(implant : ImplantDefinition) extends Exchange + final case class SellImplant(implant: ImplantDefinition) extends Exchange import net.psforever.objects.Vehicle import net.psforever.objects.inventory.InventoryItem + /** * Provide a vehicle that was constructed for the player. * @param vehicle the vehicle * @param weapons the vehicle's mounted armament * @param inventory the vehicle's trunk contents */ - final case class BuyVehicle(vehicle : Vehicle, weapons : List[InventoryItem], inventory : List[InventoryItem]) extends Exchange + final case class BuyVehicle(vehicle: Vehicle, weapons: List[InventoryItem], inventory: List[InventoryItem]) + extends Exchange /** * Recover a former exo-suit and `Equipment` configuration that the `Player` possessed. @@ -155,31 +160,41 @@ object Terminal { * @param holsters the contents of the `Player`'s holsters * @param inventory the contents of the `Player`'s inventory */ - final case class InfantryLoadout(exosuit : ExoSuitType.Value, subtype : Int = 0, holsters : List[InventoryItem], inventory : List[InventoryItem]) extends Exchange + final case class InfantryLoadout( + exosuit: ExoSuitType.Value, + subtype: Int = 0, + holsters: List[InventoryItem], + inventory: List[InventoryItem] + ) extends Exchange - final case class VehicleLoadout(vehicle_definition : VehicleDefinition, weapons : List[InventoryItem], inventory : List[InventoryItem]) extends Exchange + final case class VehicleLoadout( + vehicle_definition: VehicleDefinition, + weapons: List[InventoryItem], + inventory: List[InventoryItem] + ) extends Exchange /** * Start the special effects caused by a proximity-base service. * @param terminal the proximity-based unit */ - final case class StartProximityEffect(terminal : Terminal with ProximityUnit) extends Exchange + final case class StartProximityEffect(terminal: Terminal with ProximityUnit) extends Exchange /** * Stop the special effects caused by a proximity-base service. * @param terminal the proximity-based unit */ - final case class StopProximityEffect(terminal : Terminal with ProximityUnit) extends Exchange + final case class StopProximityEffect(terminal: Terminal with ProximityUnit) extends Exchange /** * Overloaded constructor. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - def apply(tdef : TerminalDefinition) : Terminal = { + def apply(tdef: TerminalDefinition): Terminal = { new Terminal(tdef) } import akka.actor.ActorContext + /** * Instantiate an configure a `Terminal` object * @param pos The location of the object @@ -188,7 +203,7 @@ object Terminal { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `Terminal` object */ - def Constructor(pos: Vector3, tdef : TerminalDefinition)(id : Int, context : ActorContext) : Terminal = { + def Constructor(pos: Vector3, tdef: TerminalDefinition)(id: Int, context: ActorContext): Terminal = { import akka.actor.Props val obj = Terminal(tdef) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalControl.scala index a2253cdb..5005d5f8 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalControl.scala @@ -14,47 +14,46 @@ import net.psforever.objects.serverobject.structures.Building * An `Actor` that handles messages being dispatched to a specific `Terminal`. * @param term the `Terminal` object being governed */ -class TerminalControl(term : Terminal) extends Actor - with FactionAffinityBehavior.Check - with HackableBehavior.GenericHackable - with DamageableAmenity - with RepairableAmenity { - def FactionObject = term - def HackableObject = term +class TerminalControl(term: Terminal) + extends Actor + with FactionAffinityBehavior.Check + with HackableBehavior.GenericHackable + with DamageableAmenity + with RepairableAmenity { + def FactionObject = term + def HackableObject = term def DamageableObject = term def RepairableObject = term - def receive : Receive = checkBehavior - .orElse(hackableBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case Terminal.Request(player, msg) => - TerminalControl.Dispatch( - sender, - term, - Terminal.TerminalMessage(player, msg, term.Request(player, msg))) + def receive: Receive = + checkBehavior + .orElse(hackableBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case Terminal.Request(player, msg) => + TerminalControl.Dispatch(sender, term, Terminal.TerminalMessage(player, msg, term.Request(player, msg))) - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - //TODO setup certifications check - term.Owner match { - case b : Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && term.HackedBy.isEmpty => - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, term), - GenericHackables.FinishHacking(term, player, 3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, term, item.GUID) - ) - case _ => ; - } - case _ => ; - } + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + //TODO setup certifications check + term.Owner match { + case b: Building if (b.Faction != player.Faction || b.CaptureTerminalIsHacked) && term.HackedBy.isEmpty => + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, term), + GenericHackables.FinishHacking(term, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, term, item.GUID) + ) + case _ => ; + } + case _ => ; + } - - override def toString : String = term.Definition.Name + override def toString: String = term.Definition.Name } object TerminalControl { - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = { msg.response match { case Terminal.NoDeal() => sender ! msg case _ => diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalDefinition.scala index cb2a2885..9259d48e 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/TerminalDefinition.scala @@ -10,7 +10,7 @@ import net.psforever.objects.serverobject.structures.AmenityDefinition * The basic definition for any `Terminal` object. * @param objectId the object's identifier number */ -abstract class TerminalDefinition(objectId : Int) extends AmenityDefinition(objectId) { +abstract class TerminalDefinition(objectId: Int) extends AmenityDefinition(objectId) { Name = "terminal" Packet = new TerminalConverter @@ -22,7 +22,7 @@ abstract class TerminalDefinition(objectId : Int) extends AmenityDefinition(obje * @param msg the request message * @return a message that resolves the transaction */ - def Request(player : Player, msg : Any) : Terminal.Exchange + def Request(player: Player, msg: Any): Terminal.Exchange - def Dispatch(sender : ActorRef, terminal : Terminal, msg : Terminal.TerminalMessage) : Unit = { } + def Dispatch(sender: ActorRef, terminal: Terminal, msg: Terminal.TerminalMessage): Unit = {} } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/terminals/VehicleTerminalDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/terminals/VehicleTerminalDefinition.scala index 1684f665..e02b3c64 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/terminals/VehicleTerminalDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/terminals/VehicleTerminalDefinition.scala @@ -7,36 +7,37 @@ import net.psforever.objects.loadouts.VehicleLoadout object VehicleTerminalDefinition { import net.psforever.objects.GlobalDefinitions._ + /** * A `Map` of operations for producing a ground-based `Vehicle`. * key - an identification string sent by the client * value - a curried function that builds the object */ - val groundVehicles : Map[String, () => Vehicle] = Map( - "quadassault" -> MakeVehicle(quadassault), - "fury" -> MakeVehicle(fury), - "quadstealth" -> MakeVehicle(quadstealth), - "ant" -> MakeVehicle(ant), - "ams" -> MakeVehicle(ams), - "mediumtransport" -> MakeVehicle(mediumtransport), + val groundVehicles: Map[String, () => Vehicle] = Map( + "quadassault" -> MakeVehicle(quadassault), + "fury" -> MakeVehicle(fury), + "quadstealth" -> MakeVehicle(quadstealth), + "ant" -> MakeVehicle(ant), + "ams" -> MakeVehicle(ams), + "mediumtransport" -> MakeVehicle(mediumtransport), "two_man_assault_buggy" -> MakeVehicle(two_man_assault_buggy), - "skyguard" -> MakeVehicle(skyguard), - "lightning" -> MakeVehicle(lightning), - "threemanheavybuggy" -> MakeVehicle(threemanheavybuggy), - "battlewagon" -> MakeVehicle(battlewagon), - "apc_tr" -> MakeVehicle(apc_tr), - "prowler" -> MakeVehicle(prowler), - "twomanheavybuggy" -> MakeVehicle(twomanheavybuggy), - "thunderer" -> MakeVehicle(thunderer), - "apc_nc" -> MakeVehicle(apc_nc), - "vanguard" -> MakeVehicle(vanguard), - "twomanhoverbuggy" -> MakeVehicle(twomanhoverbuggy), - "aurora" -> MakeVehicle(aurora), - "apc_vs" -> MakeVehicle(apc_vs), - "magrider" -> MakeVehicle(magrider), - "flail" -> MakeVehicle(flail), - "switchblade" -> MakeVehicle(switchblade), - "router" -> MakeVehicle(router) + "skyguard" -> MakeVehicle(skyguard), + "lightning" -> MakeVehicle(lightning), + "threemanheavybuggy" -> MakeVehicle(threemanheavybuggy), + "battlewagon" -> MakeVehicle(battlewagon), + "apc_tr" -> MakeVehicle(apc_tr), + "prowler" -> MakeVehicle(prowler), + "twomanheavybuggy" -> MakeVehicle(twomanheavybuggy), + "thunderer" -> MakeVehicle(thunderer), + "apc_nc" -> MakeVehicle(apc_nc), + "vanguard" -> MakeVehicle(vanguard), + "twomanhoverbuggy" -> MakeVehicle(twomanhoverbuggy), + "aurora" -> MakeVehicle(aurora), + "apc_vs" -> MakeVehicle(apc_vs), + "magrider" -> MakeVehicle(magrider), + "flail" -> MakeVehicle(flail), + "switchblade" -> MakeVehicle(switchblade), + "router" -> MakeVehicle(router) ) /** @@ -44,13 +45,13 @@ object VehicleTerminalDefinition { * key - an identification string sent by the client * value - a curried function that builds the object */ - val flight1Vehicles : Map[String, ()=>Vehicle] = Map( - "mosquito" -> MakeVehicle(mosquito), + val flight1Vehicles: Map[String, () => Vehicle] = Map( + "mosquito" -> MakeVehicle(mosquito), "lightgunship" -> MakeVehicle(lightgunship), - "wasp" -> MakeVehicle(wasp), - "phantasm" -> MakeVehicle(phantasm), - "vulture" -> MakeVehicle(vulture), - "liberator" -> MakeVehicle(liberator) + "wasp" -> MakeVehicle(wasp), + "phantasm" -> MakeVehicle(phantasm), + "vulture" -> MakeVehicle(vulture), + "liberator" -> MakeVehicle(liberator) ) /** @@ -58,10 +59,10 @@ object VehicleTerminalDefinition { * key - an identification string sent by the client * value - a curried function that builds the object */ - val flight2Vehicles : Map[String, ()=>Vehicle] = Map( - "dropship" -> MakeVehicle(dropship), + val flight2Vehicles: Map[String, () => Vehicle] = Map( + "dropship" -> MakeVehicle(dropship), "galaxy_gunship" -> MakeVehicle(galaxy_gunship), - "lodestar" -> MakeVehicle(lodestar) + "lodestar" -> MakeVehicle(lodestar) ) /** @@ -69,7 +70,7 @@ object VehicleTerminalDefinition { * key - an identification string sent by the client * value - a curried function that builds the object */ - val bfrVehicles : Map[String, ()=>Vehicle] = Map( + val bfrVehicles: Map[String, () => Vehicle] = Map( // "colossus_gunner" -> (()=>Unit), // "colossus_flight" -> (()=>Unit), // "peregrine_gunner" -> (()=>Unit), @@ -80,24 +81,27 @@ object VehicleTerminalDefinition { import net.psforever.objects.loadouts.{Loadout => _Loadout} //distinguish from Terminal.Loadout message import _Loadout._ + /** * A `Map` of the default contents of a `Vehicle` inventory, called the trunk. * key - an identification string sent by the client (for the vehicle) * value - a curried function that builds the object */ - val trunk : Map[String, _Loadout] = { - val ammo_12mm = ShorthandAmmoBox(bullet_12mm, bullet_12mm.Capacity) - val ammo_15mm = ShorthandAmmoBox(bullet_15mm, bullet_15mm.Capacity) - val ammo_25mm = ShorthandAmmoBox(bullet_25mm, bullet_25mm.Capacity) - val ammo_35mm = ShorthandAmmoBox(bullet_35mm, bullet_35mm.Capacity) - val ammo_20mm = ShorthandAmmoBox(bullet_20mm, bullet_20mm.Capacity) - val ammo_75mm = ShorthandAmmoBox(bullet_75mm, bullet_75mm.Capacity) + val trunk: Map[String, _Loadout] = { + val ammo_12mm = ShorthandAmmoBox(bullet_12mm, bullet_12mm.Capacity) + val ammo_15mm = ShorthandAmmoBox(bullet_15mm, bullet_15mm.Capacity) + val ammo_25mm = ShorthandAmmoBox(bullet_25mm, bullet_25mm.Capacity) + val ammo_35mm = ShorthandAmmoBox(bullet_35mm, bullet_35mm.Capacity) + val ammo_20mm = ShorthandAmmoBox(bullet_20mm, bullet_20mm.Capacity) + val ammo_75mm = ShorthandAmmoBox(bullet_75mm, bullet_75mm.Capacity) val ammo_mortar = ShorthandAmmoBox(heavy_grenade_mortar, heavy_grenade_mortar.Capacity) - val ammo_flux = ShorthandAmmoBox(flux_cannon_thresher_battery, flux_cannon_thresher_battery.Capacity) - val ammo_bomb = ShorthandAmmoBox(liberator_bomb, liberator_bomb.Capacity) + val ammo_flux = ShorthandAmmoBox(flux_cannon_thresher_battery, flux_cannon_thresher_battery.Capacity) + val ammo_bomb = ShorthandAmmoBox(liberator_bomb, liberator_bomb.Capacity) Map( //"quadstealth" -> VehicleLoadout("default_quadstealth", List(), List(), quadstealth), - "quadassault" -> VehicleLoadout("default_quadassault", List(), + "quadassault" -> VehicleLoadout( + "default_quadassault", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -105,10 +109,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_12mm, 78) ), quadassault - ), - { + ), { val ammo = ShorthandAmmoBox(hellfire_ammo, hellfire_ammo.Capacity) - "fury" -> VehicleLoadout("default_fury", List(), + "fury" -> VehicleLoadout( + "default_fury", + List(), List( SimplifiedEntry(ammo, 30), SimplifiedEntry(ammo, 34), @@ -120,7 +125,9 @@ object VehicleTerminalDefinition { }, //"ant" -> VehicleLoadout("default_ant", List(), List(), ant), //"ams" -> VehicleLoadout("default_ams", List(), List(), ams), - "two_man_assault_buggy" -> VehicleLoadout("default_two_man_assault_buggy", List(), + "two_man_assault_buggy" -> VehicleLoadout( + "default_two_man_assault_buggy", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -130,10 +137,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_12mm, 98) ), two_man_assault_buggy - ), - { + ), { val ammo = ShorthandAmmoBox(skyguard_flak_cannon_ammo, skyguard_flak_cannon_ammo.Capacity) - "skyguard" -> VehicleLoadout("default_skyguard", List(), + "skyguard" -> VehicleLoadout( + "default_skyguard", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -145,7 +153,9 @@ object VehicleTerminalDefinition { skyguard ) }, - "threemanheavybuggy" -> VehicleLoadout("default_threemanheavybuggy", List(), + "threemanheavybuggy" -> VehicleLoadout( + "default_threemanheavybuggy", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -155,10 +165,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_mortar, 98) ), threemanheavybuggy - ), - { + ), { val ammo = ShorthandAmmoBox(firebird_missile, firebird_missile.Capacity) - "twomanheavybuggy" -> VehicleLoadout("default_twomanheavybuggy", List(), + "twomanheavybuggy" -> VehicleLoadout( + "default_twomanheavybuggy", + List(), List( SimplifiedEntry(ammo, 30), SimplifiedEntry(ammo, 34), @@ -170,7 +181,9 @@ object VehicleTerminalDefinition { twomanheavybuggy ) }, - "twomanhoverbuggy" -> VehicleLoadout("default_twomanhoverbuggy", List(), + "twomanhoverbuggy" -> VehicleLoadout( + "default_twomanhoverbuggy", + List(), List( SimplifiedEntry(ammo_flux, 30), SimplifiedEntry(ammo_flux, 34), @@ -181,7 +194,9 @@ object VehicleTerminalDefinition { ), twomanhoverbuggy ), - "mediumtransport" -> VehicleLoadout("default_mediumtransport", List(), + "mediumtransport" -> VehicleLoadout( + "default_mediumtransport", + List(), List( SimplifiedEntry(ammo_20mm, 30), SimplifiedEntry(ammo_20mm, 34), @@ -195,7 +210,9 @@ object VehicleTerminalDefinition { ), mediumtransport ), - "battlewagon" -> VehicleLoadout("default_battlewagon", List(), + "battlewagon" -> VehicleLoadout( + "default_battlewagon", + List(), List( SimplifiedEntry(ammo_15mm, 30), SimplifiedEntry(ammo_15mm, 34), @@ -208,10 +225,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_15mm, 158) ), battlewagon - ), - { + ), { val ammo = ShorthandAmmoBox(gauss_cannon_ammo, gauss_cannon_ammo.Capacity) - "thunderer" -> VehicleLoadout("default_thunderer", List(), + "thunderer" -> VehicleLoadout( + "default_thunderer", + List(), List( SimplifiedEntry(ammo, 30), SimplifiedEntry(ammo, 34), @@ -225,10 +243,11 @@ object VehicleTerminalDefinition { ), thunderer ) - }, - { + }, { val ammo = ShorthandAmmoBox(fluxpod_ammo, fluxpod_ammo.Capacity) - "aurora" -> VehicleLoadout("default_aurora", List(), + "aurora" -> VehicleLoadout( + "default_aurora", + List(), List( SimplifiedEntry(ammo, 30), SimplifiedEntry(ammo, 34), @@ -243,7 +262,9 @@ object VehicleTerminalDefinition { aurora ) }, - "apc_tr" -> VehicleLoadout("default_apc_tr", List(), + "apc_tr" -> VehicleLoadout( + "default_apc_tr", + List(), List( SimplifiedEntry(ammo_75mm, 30), SimplifiedEntry(ammo_75mm, 34), @@ -268,7 +289,9 @@ object VehicleTerminalDefinition { ), apc_tr ), - "apc_nc" -> VehicleLoadout("default_apc_nc", List(), + "apc_nc" -> VehicleLoadout( + "default_apc_nc", + List(), List( SimplifiedEntry(ammo_75mm, 30), SimplifiedEntry(ammo_75mm, 34), @@ -293,7 +316,9 @@ object VehicleTerminalDefinition { ), apc_nc ), - "apc_vs" -> VehicleLoadout("default_apc_vs", List(), + "apc_vs" -> VehicleLoadout( + "default_apc_vs", + List(), List( SimplifiedEntry(ammo_75mm, 30), SimplifiedEntry(ammo_75mm, 34), @@ -318,7 +343,9 @@ object VehicleTerminalDefinition { ), apc_vs ), - "lightning" -> VehicleLoadout("default_lightning", List(), + "lightning" -> VehicleLoadout( + "default_lightning", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -328,10 +355,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_75mm, 98) ), lightning - ), - { + ), { val ammo = ShorthandAmmoBox(bullet_105mm, bullet_105mm.Capacity) - "prowler" -> VehicleLoadout("default_prowler", List(), + "prowler" -> VehicleLoadout( + "default_prowler", + List(), List( SimplifiedEntry(ammo_15mm, 30), SimplifiedEntry(ammo_15mm, 34), @@ -342,10 +370,11 @@ object VehicleTerminalDefinition { ), prowler ) - }, - { + }, { val ammo = ShorthandAmmoBox(bullet_150mm, bullet_150mm.Capacity) - "vanguard" -> VehicleLoadout("default_vanguard", List(), + "vanguard" -> VehicleLoadout( + "default_vanguard", + List(), List( SimplifiedEntry(ammo_20mm, 30), SimplifiedEntry(ammo_20mm, 34), @@ -356,11 +385,12 @@ object VehicleTerminalDefinition { ), vanguard ) - }, - { + }, { val ammo1 = ShorthandAmmoBox(pulse_battery, pulse_battery.Capacity) val ammo2 = ShorthandAmmoBox(heavy_rail_beam_battery, heavy_rail_beam_battery.Capacity) - "magrider" -> VehicleLoadout("default_magrider", List(), + "magrider" -> VehicleLoadout( + "default_magrider", + List(), List( SimplifiedEntry(ammo1, 30), SimplifiedEntry(ammo1, 34), @@ -375,7 +405,9 @@ object VehicleTerminalDefinition { //"flail" -> VehicleLoadout("default_flail", List(), List(), flail), //"switchblade" -> VehicleLoadout("default_switchblade", List(), List(), switchblade), //"router" -> VehicleLoadout("default_router", List(), List(), router), - "mosquito" -> VehicleLoadout("default_mosquito", List(), + "mosquito" -> VehicleLoadout( + "default_mosquito", + List(), List( SimplifiedEntry(ammo_12mm, 30), SimplifiedEntry(ammo_12mm, 34), @@ -383,10 +415,11 @@ object VehicleTerminalDefinition { SimplifiedEntry(ammo_12mm, 78) ), mosquito - ), - { + ), { val ammo = ShorthandAmmoBox(reaver_rocket, reaver_rocket.Capacity) - "lightgunship" -> VehicleLoadout("default_lightgunship", List(), + "lightgunship" -> VehicleLoadout( + "default_lightgunship", + List(), List( SimplifiedEntry(ammo, 30), SimplifiedEntry(ammo, 34), @@ -397,11 +430,12 @@ object VehicleTerminalDefinition { ), lightgunship ) - }, - { + }, { val ammo1 = ShorthandAmmoBox(wasp_rocket_ammo, wasp_rocket_ammo.Capacity) val ammo2 = ShorthandAmmoBox(wasp_gun_ammo, wasp_gun_ammo.Capacity) - "wasp" -> VehicleLoadout("default_wasp", List(), + "wasp" -> VehicleLoadout( + "default_wasp", + List(), List( SimplifiedEntry(ammo1, 30), SimplifiedEntry(ammo1, 34), @@ -411,7 +445,9 @@ object VehicleTerminalDefinition { wasp ) }, - "liberator" -> VehicleLoadout("default_liberator", List(), + "liberator" -> VehicleLoadout( + "default_liberator", + List(), List( SimplifiedEntry(ammo_35mm, 30), SimplifiedEntry(ammo_35mm, 34), @@ -425,7 +461,9 @@ object VehicleTerminalDefinition { ), liberator ), - "vulture" -> VehicleLoadout("default_vulture", List(), + "vulture" -> VehicleLoadout( + "default_vulture", + List(), List( SimplifiedEntry(ammo_35mm, 30), SimplifiedEntry(ammo_35mm, 34), @@ -438,7 +476,9 @@ object VehicleTerminalDefinition { ), //TODO confirm vulture ), - "dropship" -> VehicleLoadout("default_dropship", List(), + "dropship" -> VehicleLoadout( + "default_dropship", + List(), List( SimplifiedEntry(ammo_20mm, 30), SimplifiedEntry(ammo_20mm, 34), @@ -455,7 +495,9 @@ object VehicleTerminalDefinition { ), dropship ), - "galaxy_gunship" -> VehicleLoadout("galaxy_gunship", List(), + "galaxy_gunship" -> VehicleLoadout( + "galaxy_gunship", + List(), List( SimplifiedEntry(ammo_35mm, 30), SimplifiedEntry(ammo_35mm, 34), @@ -483,5 +525,5 @@ object VehicleTerminalDefinition { * @return a curried function that, when called, creates the `Vehicle` * @see `GlobalDefinitions` */ - protected def MakeVehicle(vdef : VehicleDefinition)() : Vehicle = Vehicle(vdef) + protected def MakeVehicle(vdef: VehicleDefinition)(): Vehicle = Vehicle(vdef) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTube.scala b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTube.scala index 46b6de02..caf81802 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTube.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTube.scala @@ -9,23 +9,24 @@ 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 - with SpawnPoint { - def Definition : SpawnTubeDefinition = tDef +class SpawnTube(tDef: SpawnTubeDefinition) extends Amenity with SpawnPoint { + def Definition: SpawnTubeDefinition = tDef } object SpawnTube { + /** * Overloaded constructor. * @param tDef the spawn tube's definition entry * @return a `SpawnTube` object */ - def apply(tDef : SpawnTubeDefinition) : SpawnTube = { + def apply(tDef: SpawnTubeDefinition): SpawnTube = { new SpawnTube(tDef) } import akka.actor.ActorContext import net.psforever.types.Vector3 + /** * Instantiate an configure a `SpawnTube` object * @param pos the position (used to determine spawn point) @@ -34,7 +35,7 @@ object SpawnTube { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `SpawnTube` object */ - def Constructor(pos : Vector3, orient : Vector3)(id : Int, context : ActorContext) : SpawnTube = { + def Constructor(pos: Vector3, orient: Vector3)(id: Int, context: ActorContext): SpawnTube = { Constructor(pos, GlobalDefinitions.respawn_tube, orient)(id, context) } @@ -47,7 +48,10 @@ object SpawnTube { * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `SpawnTube` object */ - def Constructor(pos : Vector3, tdef : SpawnTubeDefinition, orient : Vector3)(id : Int, context : ActorContext) : SpawnTube = { + def Constructor(pos: Vector3, tdef: SpawnTubeDefinition, orient: Vector3)( + id: Int, + context: ActorContext + ): SpawnTube = { import akka.actor.Props val obj = SpawnTube(tdef) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeControl.scala index 6e7c5345..f6858d66 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeControl.scala @@ -13,36 +13,38 @@ import net.psforever.objects.serverobject.structures.Building * An `Actor` that handles messages being dispatched to a specific `SpawnTube`. * @param tube the `SpawnTube` object being governed */ -class SpawnTubeControl(tube : SpawnTube) extends Actor - with FactionAffinityBehavior.Check - with DamageableAmenity - with RepairableAmenity { - def FactionObject = tube +class SpawnTubeControl(tube: SpawnTube) + extends Actor + with FactionAffinityBehavior.Check + with DamageableAmenity + with RepairableAmenity { + def FactionObject = tube def DamageableObject = tube def RepairableObject = tube - def receive : Receive = checkBehavior - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case _ => ; - } + def receive: Receive = + checkBehavior + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case _ => ; + } - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) tube.Owner match { - case b : Building => b.Actor ! Building.AmenityStateChange(tube) - case _ => ; + case b: Building => b.Actor ! Building.AmenityStateChange(tube) + case _ => ; } } - override def Restoration(obj : Repairable.Target) : Unit = { + override def Restoration(obj: Repairable.Target): Unit = { super.Restoration(obj) tube.Owner match { - case b : Building => b.Actor ! Building.AmenityStateChange(tube) - case _ => ; + case b: Building => b.Actor ! Building.AmenityStateChange(tube) + case _ => ; } } - override def toString : String = tube.Definition.Name + override def toString: String = tube.Definition.Name } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeDefinition.scala index 0ad4e09f..485bebb8 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/tube/SpawnTubeDefinition.scala @@ -10,21 +10,21 @@ import net.psforever.objects.serverobject.structures.{Amenity, AmenityDefinition /** * The definition for any spawn point in the game world. */ -class SpawnTubeDefinition(object_id : Int) extends AmenityDefinition(object_id) - with SpawnPointDefinition { +class SpawnTubeDefinition(object_id: Int) extends AmenityDefinition(object_id) with SpawnPointDefinition { Packet = new SpawnTubeConverter } object SpawnTubeDefinition { + /** * Assemble some logic for a provided object. * @param obj an `Amenity` object; * anticipating a `Terminal` object using this same definition * @param context hook to the local `Actor` system */ - def Setup(obj : Amenity, context : ActorContext) : Unit = { + def Setup(obj: Amenity, context: ActorContext): Unit = { import akka.actor.Props - if(obj.Actor == Default.Actor) { + if (obj.Actor == Default.Actor) { obj.Actor = context.actorOf(Props(classOf[SpawnTubeControl], obj), PlanetSideServerObject.UniqueActorName(obj)) } } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala index 082540cf..370004ce 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurret.scala @@ -5,23 +5,22 @@ import net.psforever.objects.equipment.JammableUnit import net.psforever.objects.serverobject.structures.Amenity import net.psforever.types.Vector3 -class FacilityTurret(tDef : FacilityTurretDefinition) extends Amenity - with WeaponTurret - with JammableUnit { +class FacilityTurret(tDef: FacilityTurretDefinition) extends Amenity with WeaponTurret with JammableUnit { WeaponTurret.LoadDefinition(this) - def MountPoints : Map[Int, Int] = Definition.MountPoints.toMap + def MountPoints: Map[Int, Int] = Definition.MountPoints.toMap - def Definition : FacilityTurretDefinition = tDef + def Definition: FacilityTurretDefinition = tDef } object FacilityTurret { + /** * Overloaded constructor. * @param tDef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields * @return a `FacilityTurret` object */ - def apply(tDef : FacilityTurretDefinition) : FacilityTurret = { + def apply(tDef: FacilityTurretDefinition): FacilityTurret = { new FacilityTurret(tDef) } @@ -29,20 +28,21 @@ object FacilityTurret { final case class WeaponDischarged() import akka.actor.ActorContext + /** * Instantiate and configure a `FacilityTurret` object * @param id the unique id that will be assigned to this entity * @param context a context to allow the object to properly set up `ActorSystem` functionality * @return the `MannedTurret` object */ - def Constructor(tdef : FacilityTurretDefinition)(id : Int, context : ActorContext) : FacilityTurret = { + def Constructor(tdef: FacilityTurretDefinition)(id: Int, context: ActorContext): FacilityTurret = { import akka.actor.Props val obj = FacilityTurret(tdef) obj.Actor = context.actorOf(Props(classOf[FacilityTurretControl], obj), s"${tdef.Name}_$id") obj } - def Constructor(pos: Vector3, tdef : FacilityTurretDefinition)(id : Int, context : ActorContext) : FacilityTurret = { + def Constructor(pos: Vector3, tdef: FacilityTurretDefinition)(id: Int, context: ActorContext): FacilityTurret = { import akka.actor.Props val obj = FacilityTurret(tdef) obj.Position = pos diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretControl.scala index 5127f7cb..866ef472 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretControl.scala @@ -18,7 +18,6 @@ import services.local.{LocalAction, LocalServiceMessage} import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ - /** * An `Actor` that handles messages being dispatched to a specific `MannedTurret`.
*
@@ -27,86 +26,100 @@ import scala.concurrent.duration._ * and faction-blind cavern sentry turrets. * @param turret the `MannedTurret` object being governed */ -class FacilityTurretControl(turret : FacilityTurret) extends Actor - with FactionAffinityBehavior.Check - with MountableBehavior.TurretMount - with MountableBehavior.Dismount - with DamageableWeaponTurret - with RepairableWeaponTurret - with JammableMountedWeapons { - def FactionObject = turret - def MountableObject = turret - def JammableObject = turret +class FacilityTurretControl(turret: FacilityTurret) + extends Actor + with FactionAffinityBehavior.Check + with MountableBehavior.TurretMount + with MountableBehavior.Dismount + with DamageableWeaponTurret + with RepairableWeaponTurret + with JammableMountedWeapons { + def FactionObject = turret + def MountableObject = turret + def JammableObject = turret def DamageableObject = turret def RepairableObject = turret // Used for timing ammo recharge for vanu turrets in caves var weaponAmmoRechargeTimer = Default.Cancellable - def receive : Receive = checkBehavior - .orElse(jammableBehavior) - .orElse(mountBehavior) - .orElse(dismountBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse { - case CommonMessages.Use(player, Some((item : Tool, upgradeValue : Int))) - if player.Faction == turret.Faction && - item.Definition == GlobalDefinitions.nano_dispenser && item.AmmoType == Ammo.upgrade_canister && - item.Magazine > 0 && turret.Seats.values.forall(!_.isOccupied) => - TurretUpgrade.values.find(_.id == upgradeValue) match { - case Some(upgrade) if turret.Upgrade != upgrade && turret.Definition.Weapons.values.flatMap( _.keySet).exists(_ == upgrade) => - sender ! CommonMessages.Progress( - 1.25f, - WeaponTurrets.FinishUpgradingMannedTurret(turret, player, item, upgrade), - GenericHackables.HackingTickAction(progressType = 2, player, turret, item.GUID) - ) - case _ => ; - } - - case FacilityTurret.WeaponDischarged() => - if(weaponAmmoRechargeTimer != Default.Cancellable) { - weaponAmmoRechargeTimer.cancel() - } - - weaponAmmoRechargeTimer = context.system.scheduler.scheduleWithFixedDelay(3 seconds, 200 milliseconds, self, FacilityTurret.RechargeAmmo()) - - case FacilityTurret.RechargeAmmo() => - val weapon = turret.ControlledWeapon(1).get.asInstanceOf[net.psforever.objects.Tool] - // recharge when last shot fired 3s delay, +1, 200ms interval - if(weapon.Magazine < weapon.MaxMagazine && System.nanoTime() - weapon.LastDischarge > 3000000000L) { - weapon.Magazine += 1 - val seat = turret.Seat(0).get - seat.Occupant match { - case Some(player: Player) => turret.Zone.LocalEvents ! LocalServiceMessage(turret.Zone.Id, LocalAction.RechargeVehicleWeapon(player.GUID, turret.GUID, weapon.GUID)) + def receive: Receive = + checkBehavior + .orElse(jammableBehavior) + .orElse(mountBehavior) + .orElse(dismountBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse { + case CommonMessages.Use(player, Some((item: Tool, upgradeValue: Int))) + if player.Faction == turret.Faction && + item.Definition == GlobalDefinitions.nano_dispenser && item.AmmoType == Ammo.upgrade_canister && + item.Magazine > 0 && turret.Seats.values.forall(!_.isOccupied) => + TurretUpgrade.values.find(_.id == upgradeValue) match { + case Some(upgrade) + if turret.Upgrade != upgrade && turret.Definition.Weapons.values + .flatMap(_.keySet) + .exists(_ == upgrade) => + sender ! CommonMessages.Progress( + 1.25f, + WeaponTurrets.FinishUpgradingMannedTurret(turret, player, item, upgrade), + GenericHackables.HackingTickAction(progressType = 2, player, turret, item.GUID) + ) case _ => ; } - } - if(weapon.Magazine == weapon.MaxMagazine && weaponAmmoRechargeTimer != Default.Cancellable) { - weaponAmmoRechargeTimer.cancel() - weaponAmmoRechargeTimer = Default.Cancellable - } + case FacilityTurret.WeaponDischarged() => + if (weaponAmmoRechargeTimer != Default.Cancellable) { + weaponAmmoRechargeTimer.cancel() + } - case _ => ; - } + weaponAmmoRechargeTimer = context.system.scheduler.scheduleWithFixedDelay( + 3 seconds, + 200 milliseconds, + self, + FacilityTurret.RechargeAmmo() + ) - override protected def DestructionAwareness(target : Target, cause : ResolvedProjectile) : Unit = { + case FacilityTurret.RechargeAmmo() => + val weapon = turret.ControlledWeapon(1).get.asInstanceOf[net.psforever.objects.Tool] + // recharge when last shot fired 3s delay, +1, 200ms interval + if (weapon.Magazine < weapon.MaxMagazine && System.nanoTime() - weapon.LastDischarge > 3000000000L) { + weapon.Magazine += 1 + val seat = turret.Seat(0).get + seat.Occupant match { + case Some(player: Player) => + turret.Zone.LocalEvents ! LocalServiceMessage( + turret.Zone.Id, + LocalAction.RechargeVehicleWeapon(player.GUID, turret.GUID, weapon.GUID) + ) + case _ => ; + } + } + + if (weapon.Magazine == weapon.MaxMagazine && weaponAmmoRechargeTimer != Default.Cancellable) { + weaponAmmoRechargeTimer.cancel() + weaponAmmoRechargeTimer = Default.Cancellable + } + + case _ => ; + } + + override protected def DestructionAwareness(target: Target, cause: ResolvedProjectile): Unit = { super.DestructionAwareness(target, cause) - val zone = target.Zone + val zone = target.Zone val zoneId = zone.Id val events = zone.AvatarEvents - val tguid = target.GUID + val tguid = target.GUID events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 50, 1)) events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 51, 1)) } - override def Restoration(obj : Target) : Unit = { + override def Restoration(obj: Target): Unit = { super.Restoration(obj) - val zone = turret.Zone + val zone = turret.Zone val zoneId = zone.Id val events = zone.AvatarEvents - val tguid = turret.GUID + val tguid = turret.GUID events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 50, 0)) events ! AvatarServiceMessage(zoneId, AvatarAction.PlanetsideAttributeToAll(tguid, 51, 0)) } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretDefinition.scala index f4b1d203..bf14d556 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/FacilityTurretDefinition.scala @@ -8,10 +8,8 @@ import net.psforever.objects.vital.{StandardResolutions, StandardVehicleDamage, * The definition for any `FacilityTurret`. * @param objectId the object's identifier number */ -class FacilityTurretDefinition(private val objectId : Int) extends AmenityDefinition(objectId) - with TurretDefinition { +class FacilityTurretDefinition(private val objectId: Int) extends AmenityDefinition(objectId) with TurretDefinition { DamageUsing = StandardVehicleDamage ResistUsing = StandardVehicleResistance Model = StandardResolutions.FacilityTurrets } - diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretDefinition.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretDefinition.scala index 64ec3dc1..95a4365f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretDefinition.scala @@ -11,36 +11,38 @@ import scala.collection.mutable /** * The definition for any `MannedTurret`. */ -trait TurretDefinition extends ResistanceProfileMutators - with DamageResistanceModel { - odef : ObjectDefinition => +trait TurretDefinition extends ResistanceProfileMutators with DamageResistanceModel { + odef: ObjectDefinition => Turrets(odef.ObjectId) //let throw NoSuchElementException /* key - entry point index, value - seat index */ - private val mountPoints : mutable.HashMap[Int, Int] = mutable.HashMap() + private val mountPoints: mutable.HashMap[Int, Int] = mutable.HashMap() /* key - seat number, value - hash map (below) */ /* key - upgrade, value - weapon definition */ - private val weapons : mutable.HashMap[Int, mutable.HashMap[TurretUpgrade.Value, ToolDefinition]] = + private val weapons: mutable.HashMap[Int, mutable.HashMap[TurretUpgrade.Value, ToolDefinition]] = mutable.HashMap[Int, mutable.HashMap[TurretUpgrade.Value, ToolDefinition]]() + /** can only be mounted by owning faction when `true` */ - private var factionLocked : Boolean = true + private var factionLocked: Boolean = true + /** creates internal ammunition reserves that can not become depleted - * see `MannedTurret.TurretAmmoBox` for details */ - private var hasReserveAmmunition : Boolean = false + * see `MannedTurret.TurretAmmoBox` for details + */ + private var hasReserveAmmunition: Boolean = false - def MountPoints : mutable.HashMap[Int, Int] = mountPoints + def MountPoints: mutable.HashMap[Int, Int] = mountPoints - def Weapons : mutable.HashMap[Int, mutable.HashMap[TurretUpgrade.Value, ToolDefinition]] = weapons + def Weapons: mutable.HashMap[Int, mutable.HashMap[TurretUpgrade.Value, ToolDefinition]] = weapons - def FactionLocked : Boolean = factionLocked + def FactionLocked: Boolean = factionLocked - def FactionLocked_=(ownable : Boolean) : Boolean = { + def FactionLocked_=(ownable: Boolean): Boolean = { factionLocked = ownable FactionLocked } - def ReserveAmmunition : Boolean = hasReserveAmmunition + def ReserveAmmunition: Boolean = hasReserveAmmunition - def ReserveAmmunition_=(reserved : Boolean) : Boolean = { + def ReserveAmmunition_=(reserved: Boolean): Boolean = { hasReserveAmmunition = reserved ReserveAmmunition } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretUpgrade.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretUpgrade.scala index 9151edac..32a78cd7 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretUpgrade.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/TurretUpgrade.scala @@ -5,9 +5,8 @@ package net.psforever.objects.serverobject.turret * An `Enumeration` of the available turret upgrade states. */ object TurretUpgrade extends Enumeration { - val - None, //default, always - AVCombo, //phalanx_avcombo + val None, //default, always + AVCombo, //phalanx_avcombo FlakCombo //phalanx_flakcombo = Value } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurret.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurret.scala index cc316132..74b8d8b9 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurret.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurret.scala @@ -9,26 +9,27 @@ import net.psforever.objects.serverobject.affinity.FactionAffinity import net.psforever.objects.serverobject.mount.Mountable import net.psforever.objects.vehicles.{MountedWeapons, Seat => Chair} -trait WeaponTurret extends FactionAffinity - with Mountable - with MountedWeapons - with Container { - _ : PlanetSideGameObject => +trait WeaponTurret extends FactionAffinity with Mountable with MountedWeapons with Container { + _: PlanetSideGameObject => /** manned turrets have just one seat; this is just standard interface */ - protected val seats : Map[Int, Chair] = Map(0 -> Chair(new SeatDefinition() { ControlledWeapon = Some(1) })) + protected val seats: Map[Int, Chair] = Map(0 -> Chair(new SeatDefinition() { ControlledWeapon = Some(1) })) + /** turrets have just one weapon; this is just standard interface */ - protected var weapons : Map[Int, EquipmentSlot] = Map.empty + protected var weapons: Map[Int, EquipmentSlot] = Map.empty + /** may or may not have inaccessible inventory space - * see `ReserveAmmunition` in the definition */ - protected val inventory : GridInventory = new GridInventory() { + * see `ReserveAmmunition` in the definition + */ + protected val inventory: GridInventory = new GridInventory() { import net.psforever.types.PlanetSideGUID - override def Remove(index : Int) : Boolean = false - override def Remove(guid : PlanetSideGUID) : Boolean = false + override def Remove(index: Int): Boolean = false + override def Remove(guid: PlanetSideGUID): Boolean = false } + /** some turrets can be updated; they all start without updates */ - private var upgradePath : TurretUpgrade.Value = TurretUpgrade.None - private var middleOfUpgrade : Boolean = false + private var upgradePath: TurretUpgrade.Value = TurretUpgrade.None + private var middleOfUpgrade: Boolean = false /* do not mind what the IDE probably comments about these method prototypes for Health and MaxHealth @@ -36,93 +37,92 @@ trait WeaponTurret extends FactionAffinity due to the inheritance requirement above, these statements are not required to be implemented or overrode ever they are purely for class visibility */ - def Health : Int + def Health: Int - def MaxHealth : Int + def MaxHealth: Int - def Inventory : GridInventory = inventory + def Inventory: GridInventory = inventory - def VisibleSlots : Set[Int] = Set(1) + def VisibleSlots: Set[Int] = Set(1) - def Weapons : Map[Int, EquipmentSlot] = weapons + def Weapons: Map[Int, EquipmentSlot] = weapons - def MountPoints : Map[Int, Int] + def MountPoints: Map[Int, Int] - def Seats : Map[Int, Chair] = seats + def Seats: Map[Int, Chair] = seats - def Seat(seatNum : Int) : Option[Chair] = seats.get(seatNum) + def Seat(seatNum: Int): Option[Chair] = seats.get(seatNum) /** * Given the index of an entry mounting point, return the infantry-accessible `Seat` associated with it. * @param mountPoint an index representing the seat position / mounting point * @return a seat number, or `None` */ - def GetSeatFromMountPoint(mountPoint : Int) : Option[Int] = { + def GetSeatFromMountPoint(mountPoint: Int): Option[Int] = { MountPoints.get(mountPoint) } - def PassengerInSeat(user : Player) : Option[Int] = { - if(seats(0).Occupant.contains(user)) { + def PassengerInSeat(user: Player): Option[Int] = { + if (seats(0).Occupant.contains(user)) { Some(0) - } - else { + } else { None } } - def ControlledWeapon(wepNumber : Int) : Option[Equipment] = { - if(VisibleSlots.contains(wepNumber)) { + def ControlledWeapon(wepNumber: Int): Option[Equipment] = { + if (VisibleSlots.contains(wepNumber)) { weapons(wepNumber).Equipment - } - else { + } else { None } } - def Upgrade : TurretUpgrade.Value = upgradePath + def Upgrade: TurretUpgrade.Value = upgradePath - def Upgrade_=(upgrade : TurretUpgrade.Value) : TurretUpgrade.Value = { + def Upgrade_=(upgrade: TurretUpgrade.Value): TurretUpgrade.Value = { middleOfUpgrade = true //blocking flag; block early var updated = false //upgrade each weapon as long as that weapon has a valid option for that upgrade Definition match { - case definition : TurretDefinition => - definition.Weapons.foreach({ case(index, upgradePaths) => - if(upgradePaths.contains(upgrade)) { - updated = true - weapons(index).Equipment.get.asInstanceOf[TurretWeapon].Upgrade = upgrade - } + case definition: TurretDefinition => + definition.Weapons.foreach({ + case (index, upgradePaths) => + if (upgradePaths.contains(upgrade)) { + updated = true + weapons(index).Equipment.get.asInstanceOf[TurretWeapon].Upgrade = upgrade + } }) case _ => ; } - if(updated) { + if (updated) { upgradePath = upgrade - } - else { + } else { middleOfUpgrade = false //reset } Upgrade } - def ConfirmUpgrade(upgrade : TurretUpgrade.Value) : TurretUpgrade.Value = { - if(middleOfUpgrade && upgradePath == upgrade) { + def ConfirmUpgrade(upgrade: TurretUpgrade.Value): TurretUpgrade.Value = { + if (middleOfUpgrade && upgradePath == upgrade) { middleOfUpgrade = false } upgradePath } - def isUpgrading : Boolean = middleOfUpgrade + def isUpgrading: Boolean = middleOfUpgrade - def Definition : TurretDefinition + def Definition: TurretDefinition } object WeaponTurret { + /** * Use the `*Definition` that was provided to this object to initialize its fields and settings. * @see `{object}.LoadDefinition` * @param turret the `MannedTurret` being initialized */ - def LoadDefinition(turret : WeaponTurret) : WeaponTurret = { + def LoadDefinition(turret: WeaponTurret): WeaponTurret = { LoadDefinition(turret, turret.Definition) } @@ -133,20 +133,23 @@ object WeaponTurret { * @param turret the `MannedTurret` being initialized * @param tdef the object definition */ - def LoadDefinition(turret : WeaponTurret, tdef : TurretDefinition) : WeaponTurret = { + def LoadDefinition(turret: WeaponTurret, tdef: TurretDefinition): WeaponTurret = { import net.psforever.objects.equipment.EquipmentSize.BaseTurretWeapon //create weapons; note the class - turret.weapons = tdef.Weapons.map({case (num, upgradePaths) => - val slot = EquipmentSlot(BaseTurretWeapon) - slot.Equipment = new TurretWeapon(tdef, upgradePaths.toMap) - num -> slot - }).toMap + turret.weapons = tdef.Weapons + .map({ + case (num, upgradePaths) => + val slot = EquipmentSlot(BaseTurretWeapon) + slot.Equipment = new TurretWeapon(tdef, upgradePaths.toMap) + num -> slot + }) + .toMap //special inventory ammunition object(s) - if(tdef.ReserveAmmunition) { - val allAmmunitionTypes = tdef.Weapons.values.flatMap{ _.values.flatMap { _.AmmoTypes } }.toSet - if(allAmmunitionTypes.nonEmpty) { + if (tdef.ReserveAmmunition) { + val allAmmunitionTypes = tdef.Weapons.values.flatMap { _.values.flatMap { _.AmmoTypes } }.toSet + if (allAmmunitionTypes.nonEmpty) { turret.inventory.Resize(allAmmunitionTypes.size, 1) - var i : Int = 0 + var i: Int = 0 allAmmunitionTypes.foreach(ammotype => { turret.inventory.InsertQuickly(i, new TurretAmmoBox(ammotype)) i += 1 @@ -157,11 +160,14 @@ object WeaponTurret { } } -class TurretWeapon(mdef : TurretDefinition, udefs : Map[TurretUpgrade.Value, ToolDefinition], default : TurretUpgrade.Value = TurretUpgrade.None) - extends Tool(udefs(default)) { - private var upgradePath : TurretUpgrade.Value = default +class TurretWeapon( + mdef: TurretDefinition, + udefs: Map[TurretUpgrade.Value, ToolDefinition], + default: TurretUpgrade.Value = TurretUpgrade.None +) extends Tool(udefs(default)) { + private var upgradePath: TurretUpgrade.Value = default - def Upgrade : TurretUpgrade.Value = { + def Upgrade: TurretUpgrade.Value = { /* Must check `not null` due to how this object's `Definition` will be called during `Tool`'s constructor before the internal value can be set to default value `None` @@ -174,13 +180,13 @@ class TurretWeapon(mdef : TurretDefinition, udefs : Map[TurretUpgrade.Value, Too } } - def Upgrade_=(upgrade : TurretUpgrade.Value) : TurretUpgrade.Value = { - if(udefs.contains(upgrade)) { + def Upgrade_=(upgrade: TurretUpgrade.Value): TurretUpgrade.Value = { + if (udefs.contains(upgrade)) { val beforeUpgrade = upgradePath upgradePath = upgrade - if(beforeUpgrade != upgradePath) { + if (beforeUpgrade != upgradePath) { Tool.LoadDefinition(this) //rebuild weapon internal structure - FireModeIndex = 0 //reset fire mode; this option is always valid + FireModeIndex = 0 //reset fire mode; this option is always valid } } Upgrade @@ -194,9 +200,9 @@ class TurretWeapon(mdef : TurretDefinition, udefs : Map[TurretUpgrade.Value, Too * The original quantity of ammunition does not change. * @param adef ammunition definition */ -class TurretAmmoBox(private val adef : AmmoBoxDefinition) extends AmmoBox(adef, Some(65535)) { +class TurretAmmoBox(private val adef: AmmoBoxDefinition) extends AmmoBox(adef, Some(65535)) { import net.psforever.objects.inventory.InventoryTile override def Tile = InventoryTile.Tile11 - override def Capacity_=(toCapacity : Int) = Capacity + override def Capacity_=(toCapacity: Int) = Capacity } diff --git a/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurrets.scala b/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurrets.scala index 0cb89b04..c4c3a8d5 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurrets.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/turret/WeaponTurrets.scala @@ -19,7 +19,12 @@ object WeaponTurrets { * @param tool the nano-dispenser that was used to perform this upgrade * @param upgrade the new upgrade state */ - def FinishUpgradingMannedTurret(target : FacilityTurret, user : Player, tool : Tool, upgrade : TurretUpgrade.Value)() : Unit = { + def FinishUpgradingMannedTurret( + target: FacilityTurret, + user: Player, + tool: Tool, + upgrade: TurretUpgrade.Value + )(): Unit = { tool.Magazine = 0 target.Zone.AvatarEvents ! AvatarServiceMessage( user.Name, @@ -39,12 +44,11 @@ object WeaponTurrets { * @param target the facility turret being upgraded * @param upgrade the upgrade being applied to the turret (usually, it's weapon system) */ - def FinishUpgradingMannedTurret(target : FacilityTurret, upgrade : TurretUpgrade.Value) : Unit = { + def FinishUpgradingMannedTurret(target: FacilityTurret, upgrade: TurretUpgrade.Value): Unit = { log.info(s"Converting manned wall turret weapon to $upgrade") - val zone = target.Zone + val zone = target.Zone val events = zone.VehicleEvents events ! VehicleServiceMessage.TurretUpgrade(TurretUpgrader.ClearSpecific(List(target), zone)) events ! VehicleServiceMessage.TurretUpgrade(TurretUpgrader.AddTask(target, zone, upgrade)) } } - diff --git a/common/src/main/scala/net/psforever/objects/serverobject/zipline/ZipLinePath.scala b/common/src/main/scala/net/psforever/objects/serverobject/zipline/ZipLinePath.scala index b623ff91..dd626938 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/zipline/ZipLinePath.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/zipline/ZipLinePath.scala @@ -2,8 +2,12 @@ package net.psforever.objects.serverobject.zipline import net.psforever.types.Vector3 -class ZipLinePath(private val pathId: Integer, private val isTeleporter: Boolean, private val zipLinePoints: List[Vector3]) { - def PathId : Integer = pathId - def IsTeleporter : Boolean = isTeleporter - def ZipLinePoints : List[Vector3] = zipLinePoints +class ZipLinePath( + private val pathId: Integer, + private val isTeleporter: Boolean, + private val zipLinePoints: List[Vector3] +) { + def PathId: Integer = pathId + def IsTeleporter: Boolean = isTeleporter + def ZipLinePoints: List[Vector3] = zipLinePoints } diff --git a/common/src/main/scala/net/psforever/objects/teamwork/Member.scala b/common/src/main/scala/net/psforever/objects/teamwork/Member.scala index a2406a51..7c5d6a84 100644 --- a/common/src/main/scala/net/psforever/objects/teamwork/Member.scala +++ b/common/src/main/scala/net/psforever/objects/teamwork/Member.scala @@ -5,85 +5,85 @@ import net.psforever.types.{CertificationType, Vector3} class Member { //about the position to be filled - private var role : String = "" - private var orders : String = "" - private var requirements : Set[CertificationType.Value] = Set() + private var role: String = "" + private var orders: String = "" + private var requirements: Set[CertificationType.Value] = Set() //about the individual filling the position - private var name : String = "" - private var charId : Long = 0L - private var health : Int = 0 - private var armor : Int = 0 - private var zoneId : Int = 0 - private var position : Vector3 = Vector3.Zero + private var name: String = "" + private var charId: Long = 0L + private var health: Int = 0 + private var armor: Int = 0 + private var zoneId: Int = 0 + private var position: Vector3 = Vector3.Zero - def Role : String = role + def Role: String = role - def Role_=(title : String) : String = { + def Role_=(title: String): String = { role = title Role } - def Orders : String = orders + def Orders: String = orders - def Orders_=(text : String) : String = { + def Orders_=(text: String): String = { orders = text Orders } - def Requirements : Set[CertificationType.Value] = requirements + def Requirements: Set[CertificationType.Value] = requirements - def Requirements_=(req : Set[CertificationType.Value]) : Set[CertificationType.Value] = { + def Requirements_=(req: Set[CertificationType.Value]): Set[CertificationType.Value] = { requirements = req Requirements } - def Name : String = name + def Name: String = name - def Name_=(moniker : String) : String = { + def Name_=(moniker: String): String = { name = moniker Name } - def CharId : Long = charId + def CharId: Long = charId - def CharId_=(id : Long) : Long = { + def CharId_=(id: Long): Long = { charId = id CharId } - def Health : Int = health + def Health: Int = health - def Health_=(red : Int) : Int = { + def Health_=(red: Int): Int = { health = red Health } - def Armor : Int = armor + def Armor: Int = armor - def Armor_=(blue : Int) : Int = { + def Armor_=(blue: Int): Int = { armor = blue Armor } - def ZoneId : Int = zoneId + def ZoneId: Int = zoneId - def ZoneId_=(id : Int) : Int = { + def ZoneId_=(id: Int): Int = { zoneId = id ZoneId } - def Position : Vector3 = position + def Position: Vector3 = position - def Position_=(pos : Vector3) : Vector3 = { + def Position_=(pos: Vector3): Vector3 = { position = pos Position } - def isAvailable : Boolean = { + def isAvailable: Boolean = { charId == 0 } - def isAvailable(certs : Set[CertificationType.Value]) : Boolean = { + def isAvailable(certs: Set[CertificationType.Value]): Boolean = { isAvailable && certs.intersect(requirements) == requirements } } diff --git a/common/src/main/scala/net/psforever/objects/teamwork/Squad.scala b/common/src/main/scala/net/psforever/objects/teamwork/Squad.scala index 6b6ecd9c..86112966 100644 --- a/common/src/main/scala/net/psforever/objects/teamwork/Squad.scala +++ b/common/src/main/scala/net/psforever/objects/teamwork/Squad.scala @@ -4,43 +4,43 @@ package net.psforever.objects.teamwork import net.psforever.objects.entity.IdentifiableEntity import net.psforever.types.{CertificationType, PlanetSideEmpire, PlanetSideGUID} -class Squad(squadId : PlanetSideGUID, alignment : PlanetSideEmpire.Value) extends IdentifiableEntity { +class Squad(squadId: PlanetSideGUID, alignment: PlanetSideEmpire.Value) extends IdentifiableEntity { super.GUID_=(squadId) - private val faction : PlanetSideEmpire.Value = alignment //does not change - private var zoneId : Option[Int] = None - private var task : String = "" - private val membership : Array[Member] = Array.fill[Member](10)(new Member) - private val availability : Array[Boolean] = Array.fill[Boolean](10)(elem = true) + private val faction: PlanetSideEmpire.Value = alignment //does not change + private var zoneId: Option[Int] = None + private var task: String = "" + private val membership: Array[Member] = Array.fill[Member](10)(new Member) + private val availability: Array[Boolean] = Array.fill[Boolean](10)(elem = true) - override def GUID_=(d : PlanetSideGUID) : PlanetSideGUID = GUID + override def GUID_=(d: PlanetSideGUID): PlanetSideGUID = GUID - def Faction : PlanetSideEmpire.Value = faction + def Faction: PlanetSideEmpire.Value = faction - def CustomZoneId : Boolean = zoneId.isDefined + def CustomZoneId: Boolean = zoneId.isDefined - def ZoneId : Int = zoneId.getOrElse(membership(0).ZoneId) + def ZoneId: Int = zoneId.getOrElse(membership(0).ZoneId) - def ZoneId_=(id : Int) : Int = { + def ZoneId_=(id: Int): Int = { ZoneId_=(Some(id)) } - def ZoneId_=(id : Option[Int]) : Int = { + def ZoneId_=(id: Option[Int]): Int = { zoneId = id ZoneId } - def Task : String = task + def Task: String = task - def Task_=(assignment : String) : String = { + def Task_=(assignment: String): String = { task = assignment Task } - def Membership : Array[Member] = membership + def Membership: Array[Member] = membership - def Availability : Array[Boolean] = availability + def Availability: Array[Boolean] = availability - def Leader : Member = { + def Leader: Member = { membership(0) match { case member if !member.Name.equals("") => member @@ -49,11 +49,11 @@ class Squad(squadId : PlanetSideGUID, alignment : PlanetSideEmpire.Value) extend } } - def Size : Int = membership.count(member => member.CharId != 0) + def Size: Int = membership.count(member => member.CharId != 0) - def Capacity : Int = availability.count(open => open) + def Capacity: Int = availability.count(open => open) - def isAvailable(role : Int) : Boolean = { + def isAvailable(role: Int): Boolean = { availability.lift(role) match { case Some(true) => membership(role).isAvailable @@ -62,7 +62,7 @@ class Squad(squadId : PlanetSideGUID, alignment : PlanetSideEmpire.Value) extend } } - def isAvailable(role : Int, certs : Set[CertificationType.Value]) : Boolean = { + def isAvailable(role: Int, certs: Set[CertificationType.Value]): Boolean = { availability.lift(role) match { case Some(true) => membership(role).isAvailable(certs) @@ -74,11 +74,11 @@ class Squad(squadId : PlanetSideGUID, alignment : PlanetSideEmpire.Value) extend object Squad { final val Blank = new Squad(PlanetSideGUID(0), PlanetSideEmpire.NEUTRAL) { - override def ZoneId : Int = 0 - override def ZoneId_=(id : Int) : Int = 0 - override def ZoneId_=(id : Option[Int]) : Int = 0 - override def Task_=(assignment : String) : String = "" - override def Membership : Array[Member] = Array.empty[Member] - override def Availability : Array[Boolean] = Array.fill[Boolean](10)(false) + override def ZoneId: Int = 0 + override def ZoneId_=(id: Int): Int = 0 + override def ZoneId_=(id: Option[Int]): Int = 0 + override def Task_=(assignment: String): String = "" + override def Membership: Array[Member] = Array.empty[Member] + override def Availability: Array[Boolean] = Array.fill[Boolean](10)(false) } } diff --git a/common/src/main/scala/net/psforever/objects/teamwork/SquadFeatures.scala b/common/src/main/scala/net/psforever/objects/teamwork/SquadFeatures.scala index da071ea1..1ce4d958 100644 --- a/common/src/main/scala/net/psforever/objects/teamwork/SquadFeatures.scala +++ b/common/src/main/scala/net/psforever/objects/teamwork/SquadFeatures.scala @@ -6,7 +6,8 @@ import net.psforever.types.SquadWaypoints import services.teamwork.SquadService.WaypointData import services.teamwork.SquadSwitchboard -class SquadFeatures(val Squad : Squad) { +class SquadFeatures(val Squad: Squad) { + /** * `initialAssociation` per squad is similar to "Does this squad want to recruit members?" * The squad does not have to be flagged. @@ -18,11 +19,13 @@ class SquadFeatures(val Squad : Squad) { * whatever happens first. * Additionally, the packets are also sent when the check is made when the continent is changed (or set). */ - private var initialAssociation : Boolean = true + private var initialAssociation: Boolean = true + /** * na */ - private var switchboard : ActorRef = ActorRef.noSender + private var switchboard: ActorRef = ActorRef.noSender + /** * Waypoint data. * The first four slots are used for squad waypoints. @@ -37,7 +40,8 @@ class SquadFeatures(val Squad : Squad) { * The squad leader experience rally, for example, does not have a number like the preceding four waypoints. * @see `Start` */ - private var waypoints : Array[WaypointData] = Array[WaypointData]() + private var waypoints: Array[WaypointData] = Array[WaypointData]() + /** * The particular position being recruited right at the moment. * When `None`. no highlighted searches have been indicated. @@ -46,11 +50,13 @@ class SquadFeatures(val Squad : Squad) { * When -1, indicates distributed `ProximityIvite` messages as recorded by `proxyInvites`. * Previous efforts may or may not be forgotten if there is a switch between the two modes. */ - private var searchForRole : Option[Int] = None + private var searchForRole: Option[Int] = None + /** * Handle persistent data related to `ProximityInvite` and `LookingForSquadRoleInvite` messages */ - private var proxyInvites : List[Long] = Nil + private var proxyInvites: List[Long] = Nil + /** * These useres rejected invitation to this squad. * For the purposes of wide-searches for membership @@ -58,85 +64,85 @@ class SquadFeatures(val Squad : Squad) { * the unique character identifier numbers in this list are skipped. * Direct invitation requests from the non sqad member should remain functional. */ - private var refusedPlayers : List[Long] = Nil - private var autoApproveInvitationRequests : Boolean = true - private var locationFollowsSquadLead : Boolean = true + private var refusedPlayers: List[Long] = Nil + private var autoApproveInvitationRequests: Boolean = true + private var locationFollowsSquadLead: Boolean = true - private var listed : Boolean = false + private var listed: Boolean = false - private lazy val channel : String = s"${Squad.Faction}-Squad${Squad.GUID.guid}" + private lazy val channel: String = s"${Squad.Faction}-Squad${Squad.GUID.guid}" - def Start(implicit context : ActorContext) : SquadFeatures = { + def Start(implicit context: ActorContext): SquadFeatures = { switchboard = context.actorOf(Props[SquadSwitchboard], s"squad_${Squad.GUID.guid}_${System.currentTimeMillis}") waypoints = Array.fill[WaypointData](SquadWaypoints.values.size)(new WaypointData()) this } - def Stop : SquadFeatures = { + def Stop: SquadFeatures = { switchboard ! akka.actor.PoisonPill switchboard = ActorRef.noSender waypoints = Array.empty this } - def InitialAssociation : Boolean = initialAssociation + def InitialAssociation: Boolean = initialAssociation - def InitialAssociation_=(assoc : Boolean) : Boolean = { + def InitialAssociation_=(assoc: Boolean): Boolean = { initialAssociation = assoc InitialAssociation } - def Switchboard : ActorRef = switchboard + def Switchboard: ActorRef = switchboard - def Waypoints : Array[WaypointData] = waypoints + def Waypoints: Array[WaypointData] = waypoints - def SearchForRole : Option[Int] = searchForRole + def SearchForRole: Option[Int] = searchForRole - def SearchForRole_=(role : Int) : Option[Int] = SearchForRole_=(Some(role)) + def SearchForRole_=(role: Int): Option[Int] = SearchForRole_=(Some(role)) - def SearchForRole_=(role : Option[Int]) : Option[Int] = { + def SearchForRole_=(role: Option[Int]): Option[Int] = { searchForRole = role SearchForRole } - def ProxyInvites : List[Long] = proxyInvites + def ProxyInvites: List[Long] = proxyInvites - def ProxyInvites_=(list : List[Long]) : List[Long] = { + def ProxyInvites_=(list: List[Long]): List[Long] = { proxyInvites = list ProxyInvites } - def Refuse : List[Long] = refusedPlayers + def Refuse: List[Long] = refusedPlayers - def Refuse_=(charId : Long) : List[Long] = { + def Refuse_=(charId: Long): List[Long] = { Refuse_=(List(charId)) } - def Refuse_=(list : List[Long]) : List[Long] = { + def Refuse_=(list: List[Long]): List[Long] = { refusedPlayers = list ++ refusedPlayers Refuse } - def LocationFollowsSquadLead : Boolean = locationFollowsSquadLead + def LocationFollowsSquadLead: Boolean = locationFollowsSquadLead - def LocationFollowsSquadLead_=(follow : Boolean) : Boolean = { + def LocationFollowsSquadLead_=(follow: Boolean): Boolean = { locationFollowsSquadLead = follow LocationFollowsSquadLead } - def AutoApproveInvitationRequests : Boolean = autoApproveInvitationRequests + def AutoApproveInvitationRequests: Boolean = autoApproveInvitationRequests - def AutoApproveInvitationRequests_=(autoApprove : Boolean) : Boolean = { + def AutoApproveInvitationRequests_=(autoApprove: Boolean): Boolean = { autoApproveInvitationRequests = autoApprove AutoApproveInvitationRequests } - def Listed : Boolean = listed + def Listed: Boolean = listed - def Listed_=(announce : Boolean) : Boolean = { + def Listed_=(announce: Boolean): Boolean = { listed = announce Listed } - def ToChannel : String = channel + def ToChannel: String = channel } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/AccessPermissionGroup.scala b/common/src/main/scala/net/psforever/objects/vehicles/AccessPermissionGroup.scala index 70165977..8e608ffe 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/AccessPermissionGroup.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/AccessPermissionGroup.scala @@ -13,10 +13,5 @@ package net.psforever.objects.vehicles object AccessPermissionGroup extends Enumeration { type Type = Value - val - Driver, - Gunner, - Passenger, - Trunk - = Value + val Driver, Gunner, Passenger, Trunk = Value } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/Cargo.scala b/common/src/main/scala/net/psforever/objects/vehicles/Cargo.scala index 9a0d779f..c2e1a71f 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/Cargo.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/Cargo.scala @@ -1,21 +1,21 @@ // Copyright (c) 2017 PSForever package net.psforever.objects.vehicles -import net.psforever.objects.{Player, Vehicle} +import net.psforever.objects.Vehicle import net.psforever.objects.definition.{CargoDefinition} /** * Server-side support for a slot that vehicles can occupy * @param cargoDef the Definition that constructs this item and maintains some of its unchanging fields */ -class Cargo(private val cargoDef : CargoDefinition) { - private var occupant : Option[Vehicle] = None +class Cargo(private val cargoDef: CargoDefinition) { + private var occupant: Option[Vehicle] = None /** * Is the cargo hold occupied? * @return The vehicle in the cargo hold, or `None` if it is left vacant */ - def Occupant : Option[Vehicle] = { + def Occupant: Option[Vehicle] = { this.occupant } @@ -25,15 +25,14 @@ class Cargo(private val cargoDef : CargoDefinition) { * @param vehicle the vehicle boarding the cargo hold, or `None` if the vehicle is leaving * @return the vehicle sitting in this seat, or `None` if it is left vacant */ - def Occupant_=(vehicle : Vehicle) : Option[Vehicle] = Occupant_=(Some(vehicle)) + def Occupant_=(vehicle: Vehicle): Option[Vehicle] = Occupant_=(Some(vehicle)) - def Occupant_=(vehicle : Option[Vehicle]) : Option[Vehicle] = { - if(vehicle.isDefined) { - if(this.occupant.isEmpty) { + def Occupant_=(vehicle: Option[Vehicle]): Option[Vehicle] = { + if (vehicle.isDefined) { + if (this.occupant.isEmpty) { this.occupant = vehicle } - } - else { + } else { this.occupant = None } this.occupant @@ -43,15 +42,15 @@ class Cargo(private val cargoDef : CargoDefinition) { * Is this cargo hold occupied? * @return `true`, if it is occupied; `false`, otherwise */ - def isOccupied : Boolean = { + def isOccupied: Boolean = { this.occupant.isDefined } - def CargoRestriction : CargoVehicleRestriction.Value = { + def CargoRestriction: CargoVehicleRestriction.Value = { cargoDef.CargoRestriction } - def Bailable : Boolean = { + def Bailable: Boolean = { cargoDef.Bailable } @@ -59,17 +58,18 @@ class Cargo(private val cargoDef : CargoDefinition) { * Override the string representation to provide additional information. * @return the string output */ - override def toString : String = { + override def toString: String = { Cargo.toString(this) } } object Cargo { + /** * Overloaded constructor. * @return a `Cargo` object */ - def apply(cargoDef : CargoDefinition) : Cargo = { + def apply(cargoDef: CargoDefinition): Cargo = { new Cargo(cargoDef) } @@ -77,15 +77,12 @@ object Cargo { * Provide a fixed string representation. * @return the string output */ - def toString(obj : Cargo) : String = { - val cargoStr = if(obj.isOccupied) { + def toString(obj: Cargo): String = { + val cargoStr = if (obj.isOccupied) { s", occupied by vehicle ${obj.Occupant.get.GUID}" - } - else { + } else { "" } s"cargo$cargoStr" } } - - diff --git a/common/src/main/scala/net/psforever/objects/vehicles/CargoBehavior.scala b/common/src/main/scala/net/psforever/objects/vehicles/CargoBehavior.scala index ed5d25e8..20153f85 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/CargoBehavior.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/CargoBehavior.scala @@ -5,7 +5,12 @@ import akka.actor.{Actor, Cancellable} import net.psforever.objects.zones.Zone import net.psforever.objects._ import net.psforever.objects.vehicles.CargoBehavior.{CheckCargoDismount, CheckCargoMounting} -import net.psforever.packet.game.{CargoMountPointStatusMessage, ObjectAttachMessage, ObjectDetachMessage, PlanetsideAttributeMessage} +import net.psforever.packet.game.{ + CargoMountPointStatusMessage, + ObjectAttachMessage, + ObjectDetachMessage, + PlanetsideAttributeMessage +} import net.psforever.types.{CargoStatus, PlanetSideGUID, Vector3} import services.avatar.{AvatarAction, AvatarServiceMessage} import services.Service @@ -14,51 +19,69 @@ import services.vehicle.{VehicleAction, VehicleServiceMessage} import scala.concurrent.duration._ trait CargoBehavior { - _ : Actor => - private var cargoMountTimer : Cancellable = Default.Cancellable - private var cargoDismountTimer : Cancellable = Default.Cancellable + _: Actor => + private var cargoMountTimer: Cancellable = Default.Cancellable + private var cargoDismountTimer: Cancellable = Default.Cancellable /* gate-keep mounting behavior so that unit does not try to dismount as cargo, or mount different vehicle */ - private var isMounting : Option[PlanetSideGUID] = None + private var isMounting: Option[PlanetSideGUID] = None /* gate-keep dismounting behavior so that unit does not try to mount as cargo, or dismount from different vehicle */ - private var isDismounting : Option[PlanetSideGUID] = None + private var isDismounting: Option[PlanetSideGUID] = None - def CargoObject : Vehicle + def CargoObject: Vehicle - val cargoBehavior : Receive = { + val cargoBehavior: Receive = { case CheckCargoMounting(carrier_guid, mountPoint, iteration) => val obj = CargoObject - if((isMounting.isEmpty || isMounting.contains(carrier_guid)) && isDismounting.isEmpty && - CargoBehavior.HandleCheckCargoMounting(obj.Zone, carrier_guid, obj.GUID, obj, mountPoint, iteration)) { - if(iteration == 0) { + if ( + (isMounting.isEmpty || isMounting.contains(carrier_guid)) && isDismounting.isEmpty && + CargoBehavior.HandleCheckCargoMounting(obj.Zone, carrier_guid, obj.GUID, obj, mountPoint, iteration) + ) { + if (iteration == 0) { //open the cargo bay door obj.Zone.AvatarEvents ! AvatarServiceMessage( obj.Zone.Id, AvatarAction.SendResponse( Service.defaultPlayerGUID, - CargoMountPointStatusMessage(carrier_guid, PlanetSideGUID(0), obj.GUID, PlanetSideGUID(0), mountPoint, CargoStatus.InProgress, 0) + CargoMountPointStatusMessage( + carrier_guid, + PlanetSideGUID(0), + obj.GUID, + PlanetSideGUID(0), + mountPoint, + CargoStatus.InProgress, + 0 + ) ) ) } isMounting = Some(carrier_guid) import scala.concurrent.ExecutionContext.Implicits.global cargoMountTimer.cancel - cargoMountTimer = context.system.scheduler.scheduleOnce(250 milliseconds, self, CheckCargoMounting(carrier_guid, mountPoint, iteration + 1)) - } - else { + cargoMountTimer = context.system.scheduler.scheduleOnce( + 250 milliseconds, + self, + CheckCargoMounting(carrier_guid, mountPoint, iteration + 1) + ) + } else { isMounting = None } case CheckCargoDismount(carrier_guid, mountPoint, iteration) => val obj = CargoObject - if((isDismounting.isEmpty || isDismounting.contains(carrier_guid)) && isMounting.isEmpty && - CargoBehavior.HandleCheckCargoDismounting(obj.Zone, carrier_guid, obj.GUID, obj, mountPoint, iteration)) { + if ( + (isDismounting.isEmpty || isDismounting.contains(carrier_guid)) && isMounting.isEmpty && + CargoBehavior.HandleCheckCargoDismounting(obj.Zone, carrier_guid, obj.GUID, obj, mountPoint, iteration) + ) { isDismounting = Some(carrier_guid) import scala.concurrent.ExecutionContext.Implicits.global cargoDismountTimer.cancel - cargoDismountTimer = context.system.scheduler.scheduleOnce(250 milliseconds, self, CheckCargoDismount(carrier_guid, mountPoint, iteration + 1)) - } - else { + cargoDismountTimer = context.system.scheduler.scheduleOnce( + 250 milliseconds, + self, + CheckCargoDismount(carrier_guid, mountPoint, iteration + 1) + ) + } else { isDismounting = None } } @@ -78,9 +101,16 @@ object CargoBehavior { * @param mountPoint the cargo hold to which the cargo vehicle is stowed * @param iteration number of times a proper mounting for this combination has been queried */ - def HandleCheckCargoMounting(zone : Zone, carrierGUID : PlanetSideGUID, cargoGUID : PlanetSideGUID, cargo : Vehicle, mountPoint : Int, iteration : Int) : Boolean = { + def HandleCheckCargoMounting( + zone: Zone, + carrierGUID: PlanetSideGUID, + cargoGUID: PlanetSideGUID, + cargo: Vehicle, + mountPoint: Int, + iteration: Int + ): Boolean = { zone.GUID(carrierGUID) match { - case Some(carrier : Vehicle) => + case Some(carrier: Vehicle) => HandleCheckCargoMounting(cargoGUID, cargo, carrierGUID, carrier, mountPoint, iteration) case carrier if iteration > 0 => log.error(s"HandleCheckCargoMounting: participant vehicles changed in the middle of a mounting event") @@ -100,54 +130,81 @@ object CargoBehavior { * @param mountPoint the cargo hold to which the cargo vehicle is stowed * @param iteration number of times a proper mounting for this combination has been queried */ - private def HandleCheckCargoMounting(cargoGUID : PlanetSideGUID, cargo : Vehicle, carrierGUID : PlanetSideGUID, carrier : Vehicle, mountPoint : Int, iteration : Int) : Boolean = { - val zone = carrier.Zone + private def HandleCheckCargoMounting( + cargoGUID: PlanetSideGUID, + cargo: Vehicle, + carrierGUID: PlanetSideGUID, + carrier: Vehicle, + mountPoint: Int, + iteration: Int + ): Boolean = { + val zone = carrier.Zone val distance = Vector3.DistanceSquared(cargo.Position, carrier.Position) carrier.CargoHold(mountPoint) match { case Some(hold) if !hold.isOccupied => - log.debug(s"HandleCheckCargoMounting: mount distance between $cargoGUID and $carrierGUID - actual=$distance, target=64") - if(distance <= 64) { + log.debug( + s"HandleCheckCargoMounting: mount distance between $cargoGUID and $carrierGUID - actual=$distance, target=64" + ) + if (distance <= 64) { //cargo vehicle is close enough to assume to be physically within the carrier's hold; mount it log.info(s"HandleCheckCargoMounting: mounting cargo vehicle in carrier at distance of $distance") cargo.MountedIn = carrierGUID hold.Occupant = cargo cargo.Velocity = None - zone.VehicleEvents ! VehicleServiceMessage(s"${cargo.Actor}", VehicleAction.SendResponse(PlanetSideGUID(0), PlanetsideAttributeMessage(cargoGUID, 0, cargo.Health))) - zone.VehicleEvents ! VehicleServiceMessage(s"${cargo.Actor}", VehicleAction.SendResponse(PlanetSideGUID(0), PlanetsideAttributeMessage(cargoGUID, 68, cargo.Shields))) + zone.VehicleEvents ! VehicleServiceMessage( + s"${cargo.Actor}", + VehicleAction.SendResponse(PlanetSideGUID(0), PlanetsideAttributeMessage(cargoGUID, 0, cargo.Health)) + ) + zone.VehicleEvents ! VehicleServiceMessage( + s"${cargo.Actor}", + VehicleAction.SendResponse(PlanetSideGUID(0), PlanetsideAttributeMessage(cargoGUID, 68, cargo.Shields)) + ) val (attachMsg, mountPointMsg) = CargoMountBehaviorForAll(carrier, cargo, mountPoint) log.info(s"HandleCheckCargoMounting: $attachMsg") log.info(s"HandleCheckCargoMounting: $mountPointMsg") false - } - else if(distance > 625 || iteration >= 40) { + } else if (distance > 625 || iteration >= 40) { //vehicles moved too far away or took too long to get into proper position; abort mounting - log.info("HandleCheckCargoMounting: cargo vehicle is too far away or didn't mount within allocated time - aborting") + log.info( + "HandleCheckCargoMounting: cargo vehicle is too far away or didn't mount within allocated time - aborting" + ) val cargoDriverGUID = cargo.Seats(0).Occupant.get.GUID zone.VehicleEvents ! VehicleServiceMessage( zone.Id, VehicleAction.SendResponse( cargoDriverGUID, - CargoMountPointStatusMessage(carrierGUID, PlanetSideGUID(0), PlanetSideGUID(0), cargoGUID, mountPoint, CargoStatus.Empty, 0) + CargoMountPointStatusMessage( + carrierGUID, + PlanetSideGUID(0), + PlanetSideGUID(0), + cargoGUID, + mountPoint, + CargoStatus.Empty, + 0 + ) ) ) false //sending packet to the cargo vehicle's client results in player locking himself in his vehicle //player gets stuck as "always trying to remount the cargo hold" //obviously, don't do this - } - else { + } else { //cargo vehicle still not in position but there is more time to wait; reschedule check true } - case None => ; + case None => + ; log.warn(s"HandleCheckCargoMounting: carrier vehicle $carrier does not have a cargo hold #$mountPoint") false case _ => - if(iteration == 0) { - log.warn(s"HandleCheckCargoMounting: carrier vehicle $carrier already possesses cargo in hold #$mountPoint; this operation was initiated incorrectly") - } - else { - log.error(s"HandleCheckCargoMounting: something has attached to the carrier vehicle $carrier cargo of hold #$mountPoint while a cargo dismount event was ongoing; stopped at iteration $iteration / 40") + if (iteration == 0) { + log.warn( + s"HandleCheckCargoMounting: carrier vehicle $carrier already possesses cargo in hold #$mountPoint; this operation was initiated incorrectly" + ) + } else { + log.error( + s"HandleCheckCargoMounting: something has attached to the carrier vehicle $carrier cargo of hold #$mountPoint while a cargo dismount event was ongoing; stopped at iteration $iteration / 40" + ) } false } @@ -160,9 +217,16 @@ object CargoBehavior { * @param mountPoint na * @param iteration na */ - def HandleCheckCargoDismounting(zone : Zone, carrierGUID : PlanetSideGUID, cargoGUID : PlanetSideGUID, cargo : Vehicle, mountPoint : Int, iteration : Int) : Boolean = { + def HandleCheckCargoDismounting( + zone: Zone, + carrierGUID: PlanetSideGUID, + cargoGUID: PlanetSideGUID, + cargo: Vehicle, + mountPoint: Int, + iteration: Int + ): Boolean = { zone.GUID(carrierGUID) match { - case Some(carrier : Vehicle) => + case Some(carrier: Vehicle) => HandleCheckCargoDismounting(cargoGUID, cargo, carrierGUID, carrier, mountPoint, iteration) case carrier if iteration > 0 => log.error(s"HandleCheckCargoDismounting: participant vehicles changed in the middle of a mounting event") @@ -182,36 +246,53 @@ object CargoBehavior { * @param mountPoint na * @param iteration na */ - private def HandleCheckCargoDismounting(cargoGUID : PlanetSideGUID, cargo : Vehicle, carrierGUID : PlanetSideGUID, carrier : Vehicle, mountPoint : Int, iteration : Int) : Boolean = { + private def HandleCheckCargoDismounting( + cargoGUID: PlanetSideGUID, + cargo: Vehicle, + carrierGUID: PlanetSideGUID, + carrier: Vehicle, + mountPoint: Int, + iteration: Int + ): Boolean = { val zone = carrier.Zone carrier.CargoHold(mountPoint) match { case Some(hold) if !hold.isOccupied => val distance = Vector3.DistanceSquared(cargo.Position, carrier.Position) - log.debug(s"HandleCheckCargoDismounting: mount distance between $cargoGUID and $carrierGUID - actual=$distance, target=225") - if(distance > 225) { + log.debug( + s"HandleCheckCargoDismounting: mount distance between $cargoGUID and $carrierGUID - actual=$distance, target=225" + ) + if (distance > 225) { //cargo vehicle has moved far enough away; close the carrier's hold door - log.info(s"HandleCheckCargoDismounting: dismount of cargo vehicle from carrier complete at distance of $distance") + log.info( + s"HandleCheckCargoDismounting: dismount of cargo vehicle from carrier complete at distance of $distance" + ) val cargoDriverGUID = cargo.Seats(0).Occupant.get.GUID zone.VehicleEvents ! VehicleServiceMessage( zone.Id, VehicleAction.SendResponse( cargoDriverGUID, - CargoMountPointStatusMessage(carrierGUID, PlanetSideGUID(0), PlanetSideGUID(0), cargoGUID, mountPoint, CargoStatus.Empty, 0) + CargoMountPointStatusMessage( + carrierGUID, + PlanetSideGUID(0), + PlanetSideGUID(0), + cargoGUID, + mountPoint, + CargoStatus.Empty, + 0 + ) ) ) false //sending packet to the cargo vehicle's client results in player locking himself in his vehicle //player gets stuck as "always trying to remount the cargo hold" //obviously, don't do this - } - else if(iteration > 40) { + } else if (iteration > 40) { //cargo vehicle has spent too long not getting far enough away; restore the cargo's mount in the carrier hold cargo.MountedIn = carrierGUID hold.Occupant = cargo CargoMountBehaviorForAll(carrier, cargo, mountPoint) false - } - else { + } else { //cargo vehicle did not move far away enough yet and there is more time to wait; reschedule check true } @@ -219,11 +300,14 @@ object CargoBehavior { log.warn(s"HandleCheckCargoDismounting: carrier vehicle $carrier does not have a cargo hold #$mountPoint") false case _ => - if(iteration == 0) { - log.warn(s"HandleCheckCargoDismounting: carrier vehicle $carrier will not discharge the cargo of hold #$mountPoint; this operation was initiated incorrectly") - } - else { - log.error(s"HandleCheckCargoDismounting: something has attached to the carrier vehicle $carrier cargo of hold #$mountPoint while a cargo dismount event was ongoing; stopped at iteration $iteration / 40") + if (iteration == 0) { + log.warn( + s"HandleCheckCargoDismounting: carrier vehicle $carrier will not discharge the cargo of hold #$mountPoint; this operation was initiated incorrectly" + ) + } else { + log.error( + s"HandleCheckCargoDismounting: something has attached to the carrier vehicle $carrier cargo of hold #$mountPoint while a cargo dismount event was ongoing; stopped at iteration $iteration / 40" + ) } false } @@ -237,14 +321,22 @@ object CargoBehavior { * @param requestedByPassenger na * @param kicked na */ - def HandleVehicleCargoDismount(zone : Zone, cargo_guid : PlanetSideGUID, bailed : Boolean, requestedByPassenger : Boolean, kicked : Boolean) : Unit = { + def HandleVehicleCargoDismount( + zone: Zone, + cargo_guid: PlanetSideGUID, + bailed: Boolean, + requestedByPassenger: Boolean, + kicked: Boolean + ): Unit = { zone.GUID(cargo_guid) match { - case Some(cargo : Vehicle) => + case Some(cargo: Vehicle) => zone.GUID(cargo.MountedIn) match { - case Some(ferry : Vehicle) => + case Some(ferry: Vehicle) => HandleVehicleCargoDismount(cargo_guid, cargo, ferry.GUID, ferry, bailed, requestedByPassenger, kicked) case _ => - log.warn(s"DismountVehicleCargo: target ${cargo.Definition.Name}@$cargo_guid does not know what treats it as cargo") + log.warn( + s"DismountVehicleCargo: target ${cargo.Definition.Name}@$cargo_guid does not know what treats it as cargo" + ) } case _ => log.warn(s"DismountVehicleCargo: target $cargo_guid either is not a vehicle in ${zone.Id} or does not exist") @@ -261,62 +353,81 @@ object CargoBehavior { * @param requestedByPassenger the ferried vehicle is being politely disembarked from the cargo hold * @param kicked the ferried vehicle is being kicked out of the cargo hold */ - def HandleVehicleCargoDismount(cargoGUID : PlanetSideGUID, cargo : Vehicle, carrierGUID : PlanetSideGUID, carrier : Vehicle, bailed : Boolean, requestedByPassenger : Boolean, kicked : Boolean) : Unit = { + def HandleVehicleCargoDismount( + cargoGUID: PlanetSideGUID, + cargo: Vehicle, + carrierGUID: PlanetSideGUID, + carrier: Vehicle, + bailed: Boolean, + requestedByPassenger: Boolean, + kicked: Boolean + ): Unit = { val zone = carrier.Zone - carrier.CargoHolds.find({case(_, hold) => hold.Occupant.contains(cargo)}) match { + carrier.CargoHolds.find({ case (_, hold) => hold.Occupant.contains(cargo) }) match { case Some((mountPoint, hold)) => cargo.MountedIn = None hold.Occupant = None val driverOpt = cargo.Seats(0).Occupant - val rotation : Vector3 = if(Vehicles.CargoOrientation(cargo) == 1) { //TODO: BFRs will likely also need this set + val rotation: Vector3 = if (Vehicles.CargoOrientation(cargo) == 1) { //TODO: BFRs will likely also need this set //dismount router "sideways" in a lodestar carrier.Orientation.xy + Vector3.z((carrier.Orientation.z - 90) % 360) - } - else { + } else { carrier.Orientation } - val cargoHoldPosition : Vector3 = if(carrier.Definition == GlobalDefinitions.dropship) { + val cargoHoldPosition: Vector3 = if (carrier.Definition == GlobalDefinitions.dropship) { //the galaxy cargo bay is offset backwards from the center of the vehicle carrier.Position + Vector3.Rz(Vector3(0, 7, 0), math.toRadians(carrier.Orientation.z)) - } - else { + } else { //the lodestar's cargo hold is almost the center of the vehicle carrier.Position } - val GUID0 = Service.defaultPlayerGUID - val zoneId = zone.Id - val events = zone.VehicleEvents + val GUID0 = Service.defaultPlayerGUID + val zoneId = zone.Id + val events = zone.VehicleEvents val cargoActor = cargo.Actor - events ! VehicleServiceMessage(s"$cargoActor", VehicleAction.SendResponse(GUID0, PlanetsideAttributeMessage(cargoGUID, 0, cargo.Health))) - events ! VehicleServiceMessage(s"$cargoActor", VehicleAction.SendResponse(GUID0, PlanetsideAttributeMessage(cargoGUID, 68, cargo.Shields))) - if(carrier.Flying) { + events ! VehicleServiceMessage( + s"$cargoActor", + VehicleAction.SendResponse(GUID0, PlanetsideAttributeMessage(cargoGUID, 0, cargo.Health)) + ) + events ! VehicleServiceMessage( + s"$cargoActor", + VehicleAction.SendResponse(GUID0, PlanetsideAttributeMessage(cargoGUID, 68, cargo.Shields)) + ) + if (carrier.Flying) { //the carrier vehicle is flying; eject the cargo vehicle - val ejectCargoMsg = CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.InProgress, 0) + val ejectCargoMsg = + CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.InProgress, 0) val detachCargoMsg = ObjectDetachMessage(carrierGUID, cargoGUID, cargoHoldPosition - Vector3.z(1), rotation) - val resetCargoMsg = CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.Empty, 0) + val resetCargoMsg = + CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.Empty, 0) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, ejectCargoMsg)) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, detachCargoMsg)) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, resetCargoMsg)) log.debug(ejectCargoMsg.toString) log.debug(detachCargoMsg.toString) - if(driverOpt.isEmpty) { + if (driverOpt.isEmpty) { //TODO cargo should drop like a rock like normal; until then, deconstruct it cargo.Actor ! Vehicle.Deconstruct() } - } - else { + } else { //the carrier vehicle is not flying; just open the door and let the cargo vehicle back out; force it out if necessary - val cargoStatusMessage = CargoMountPointStatusMessage(carrierGUID, GUID0, cargoGUID, GUID0, mountPoint, CargoStatus.InProgress, 0) - val cargoDetachMessage = ObjectDetachMessage(carrierGUID, cargoGUID, cargoHoldPosition + Vector3.z(1f), rotation) + val cargoStatusMessage = + CargoMountPointStatusMessage(carrierGUID, GUID0, cargoGUID, GUID0, mountPoint, CargoStatus.InProgress, 0) + val cargoDetachMessage = + ObjectDetachMessage(carrierGUID, cargoGUID, cargoHoldPosition + Vector3.z(1f), rotation) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, cargoStatusMessage)) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, cargoDetachMessage)) driverOpt match { case Some(driver) => - events ! VehicleServiceMessage(s"${driver.Name}", VehicleAction.KickCargo(GUID0, cargo, cargo.Definition.AutoPilotSpeed2, 2500)) + events ! VehicleServiceMessage( + s"${driver.Name}", + VehicleAction.KickCargo(GUID0, cargo, cargo.Definition.AutoPilotSpeed2, 2500) + ) //check every quarter second if the vehicle has moved far enough away to be considered dismounted cargoActor ! CheckCargoDismount(carrierGUID, mountPoint, 0) case None => - val resetCargoMsg = CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.Empty, 0) + val resetCargoMsg = + CargoMountPointStatusMessage(carrierGUID, GUID0, GUID0, cargoGUID, mountPoint, CargoStatus.Empty, 0) events ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(GUID0, resetCargoMsg)) //lazy //TODO cargo should back out like normal; until then, deconstruct it cargoActor ! Vehicle.Deconstruct() @@ -335,11 +446,15 @@ object CargoBehavior { * @param target an optional the target object * @param targetGUID the expected globally unique identifier of the target object */ - def LogCargoEventMissingVehicleError(decorator : String, target : Option[PlanetSideGameObject], targetGUID : PlanetSideGUID) : Unit = { + def LogCargoEventMissingVehicleError( + decorator: String, + target: Option[PlanetSideGameObject], + targetGUID: PlanetSideGUID + ): Unit = { target match { - case Some(_ : Vehicle) => ; - case Some(_) => log.error(s"$decorator target $targetGUID no longer identifies as a vehicle") - case None => log.error(s"$decorator target $targetGUID has gone missing") + case Some(_: Vehicle) => ; + case Some(_) => log.error(s"$decorator target $targetGUID no longer identifies as a vehicle") + case None => log.error(s"$decorator target $targetGUID has gone missing") } } @@ -355,7 +470,11 @@ object CargoBehavior { * also known as a "cargo hold" * @return a tuple composed of an `ObjectAttachMessage` packet and a `CargoMountPointStatusMessage` packet */ - def CargoMountMessages(carrier : Vehicle, cargo : Vehicle, mountPoint : Int) : (ObjectAttachMessage, CargoMountPointStatusMessage) = { + def CargoMountMessages( + carrier: Vehicle, + cargo: Vehicle, + mountPoint: Int + ): (ObjectAttachMessage, CargoMountPointStatusMessage) = { CargoMountMessages(carrier.GUID, cargo.GUID, mountPoint, Vehicles.CargoOrientation(cargo)) } @@ -370,10 +489,23 @@ object CargoBehavior { * @param orientation the positioning of the cargo vehicle in the carrier cargo bay * @return a tuple composed of an `ObjectAttachMessage` packet and a `CargoMountPointStatusMessage` packet */ - def CargoMountMessages(carrierGUID : PlanetSideGUID, cargoGUID : PlanetSideGUID, mountPoint : Int, orientation : Int) : (ObjectAttachMessage, CargoMountPointStatusMessage) = { + def CargoMountMessages( + carrierGUID: PlanetSideGUID, + cargoGUID: PlanetSideGUID, + mountPoint: Int, + orientation: Int + ): (ObjectAttachMessage, CargoMountPointStatusMessage) = { ( ObjectAttachMessage(carrierGUID, cargoGUID, mountPoint), - CargoMountPointStatusMessage(carrierGUID, cargoGUID, cargoGUID, PlanetSideGUID(0), mountPoint, CargoStatus.Occupied, orientation) + CargoMountPointStatusMessage( + carrierGUID, + cargoGUID, + cargoGUID, + PlanetSideGUID(0), + mountPoint, + CargoStatus.Occupied, + orientation + ) ) } @@ -386,7 +518,12 @@ object CargoBehavior { * @param mountPoint the point on the ferryoing vehicle where the ferried vehicle is attached * @return a tuple composed of an `ObjectAttachMessage` packet and a `CargoMountPointStatusMessage` packet */ - def CargoMountBehaviorForOthers(carrier : Vehicle, cargo : Vehicle, mountPoint : Int, exclude : PlanetSideGUID) : (ObjectAttachMessage, CargoMountPointStatusMessage) = { + def CargoMountBehaviorForOthers( + carrier: Vehicle, + cargo: Vehicle, + mountPoint: Int, + exclude: PlanetSideGUID + ): (ObjectAttachMessage, CargoMountPointStatusMessage) = { val msgs @ (attachMessage, mountPointStatusMessage) = CargoMountMessages(carrier, cargo, mountPoint) CargoMountMessagesForOthers(carrier.Zone, exclude, attachMessage, mountPointStatusMessage) msgs @@ -399,7 +536,12 @@ object CargoBehavior { * @param attachMessage an `ObjectAttachMessage` packet suitable for initializing cargo operations * @param mountPointStatusMessage a `CargoMountPointStatusMessage` packet suitable for initializing cargo operations */ - def CargoMountMessagesForOthers(zone : Zone, exclude : PlanetSideGUID, attachMessage : ObjectAttachMessage, mountPointStatusMessage : CargoMountPointStatusMessage) : Unit = { + def CargoMountMessagesForOthers( + zone: Zone, + exclude: PlanetSideGUID, + attachMessage: ObjectAttachMessage, + mountPointStatusMessage: CargoMountPointStatusMessage + ): Unit = { zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.SendResponse(exclude, attachMessage)) zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.SendResponse(exclude, mountPointStatusMessage)) } @@ -413,12 +555,22 @@ object CargoBehavior { * @param mountPoint the point on the ferryoing vehicle where the ferried vehicle is attached * @return a tuple composed of an `ObjectAttachMessage` packet and a `CargoMountPointStatusMessage` packet */ - def CargoMountBehaviorForAll(carrier : Vehicle, cargo : Vehicle, mountPoint : Int) : (ObjectAttachMessage, CargoMountPointStatusMessage) = { - val zone = carrier.Zone - val zoneId = zone.Id + def CargoMountBehaviorForAll( + carrier: Vehicle, + cargo: Vehicle, + mountPoint: Int + ): (ObjectAttachMessage, CargoMountPointStatusMessage) = { + val zone = carrier.Zone + val zoneId = zone.Id val msgs @ (attachMessage, mountPointStatusMessage) = CargoMountMessages(carrier, cargo, mountPoint) - zone.VehicleEvents ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(Service.defaultPlayerGUID, attachMessage)) - zone.VehicleEvents ! VehicleServiceMessage(zoneId, VehicleAction.SendResponse(Service.defaultPlayerGUID, mountPointStatusMessage)) + zone.VehicleEvents ! VehicleServiceMessage( + zoneId, + VehicleAction.SendResponse(Service.defaultPlayerGUID, attachMessage) + ) + zone.VehicleEvents ! VehicleServiceMessage( + zoneId, + VehicleAction.SendResponse(Service.defaultPlayerGUID, mountPointStatusMessage) + ) msgs } } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/CargoVehicleRestriction.scala b/common/src/main/scala/net/psforever/objects/vehicles/CargoVehicleRestriction.scala index 098d3f9b..19b2b150 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/CargoVehicleRestriction.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/CargoVehicleRestriction.scala @@ -11,8 +11,5 @@ package net.psforever.objects.vehicles object CargoVehicleRestriction extends Enumeration { type Type = Value - val - Small, - Large - = Value + val Small, Large = Value } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/DestroyedVehicle.scala b/common/src/main/scala/net/psforever/objects/vehicles/DestroyedVehicle.scala index 4927030c..9b97f525 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/DestroyedVehicle.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/DestroyedVehicle.scala @@ -2,32 +2,31 @@ package net.psforever.objects.vehicles /** - * */ object DestroyedVehicle extends Enumeration { type Type = Value - val Ams = Value(47) - val Ant = Value(61) - val Apc = Value(65) - val Dropship = Value(260) - val Flail = Value(295) - val Liberator = Value(439) - val LightGunship = Value(442) - val Lightning = Value(447) - val Lodestar = Value(460) - val Magrider = Value(471) - val Mosquito = Value(573) - val MediumTransport = Value(533) - val Prowler = Value(698) - val QuadAssault = Value(708) - val QuadStealth = Value(711) - val Router = Value(742) - val Skyguard = Value(785) - val Switchblade = Value(848) + val Ams = Value(47) + val Ant = Value(61) + val Apc = Value(65) + val Dropship = Value(260) + val Flail = Value(295) + val Liberator = Value(439) + val LightGunship = Value(442) + val Lightning = Value(447) + val Lodestar = Value(460) + val Magrider = Value(471) + val Mosquito = Value(573) + val MediumTransport = Value(533) + val Prowler = Value(698) + val QuadAssault = Value(708) + val QuadStealth = Value(711) + val Router = Value(742) + val Skyguard = Value(785) + val Switchblade = Value(848) val ThreeManHeavyBuggy = Value(863) val TwoManAssaultBuggy = Value(897) - val TwoManHeavyBuggy = Value(899) - val TwoManHoverBuggy = Value(901) - val Vanguard = Value(924) + val TwoManHeavyBuggy = Value(899) + val TwoManHoverBuggy = Value(901) + val Vanguard = Value(924) } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/MountedWeapons.scala b/common/src/main/scala/net/psforever/objects/vehicles/MountedWeapons.scala index 0d91e502..35f67546 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/MountedWeapons.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/MountedWeapons.scala @@ -8,16 +8,16 @@ import net.psforever.objects.serverobject.mount.Mountable import net.psforever.objects.vehicles.{Seat => Chair} trait MountedWeapons { - this : PlanetSideGameObject with Mountable with Container => + this: PlanetSideGameObject with Mountable with Container => - def Weapons : Map[Int, EquipmentSlot] + def Weapons: Map[Int, EquipmentSlot] /** * Given a valid seat number, retrieve an index where the weapon controlled from this seat is mounted. * @param seatNumber the seat number * @return a mounted weapon by index, or `None` if either the seat doesn't exist or there is no controlled weapon */ - def WeaponControlledFromSeat(seatNumber : Int) : Option[Equipment] = { + def WeaponControlledFromSeat(seatNumber: Int): Option[Equipment] = { Seat(seatNumber) match { case Some(seat) => wepFromSeat(seat) @@ -26,7 +26,7 @@ trait MountedWeapons { } } - private def wepFromSeat(seat : Chair) : Option[Equipment] = { + private def wepFromSeat(seat: Chair): Option[Equipment] = { seat.ControlledWeapon match { case Some(index) => ControlledWeapon(index) @@ -35,5 +35,5 @@ trait MountedWeapons { } } - def ControlledWeapon(wepNumber : Int) : Option[Equipment] -} \ No newline at end of file + def ControlledWeapon(wepNumber: Int): Option[Equipment] +} diff --git a/common/src/main/scala/net/psforever/objects/vehicles/Seat.scala b/common/src/main/scala/net/psforever/objects/vehicles/Seat.scala index bf907740..7da46728 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/Seat.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/Seat.scala @@ -9,15 +9,15 @@ import net.psforever.objects.Player * (Players can sit in it.) * @param seatDef the Definition that constructs this item and maintains some of its unchanging fields */ -class Seat(private val seatDef : SeatDefinition) { - private var occupant : Option[Player] = None +class Seat(private val seatDef: SeatDefinition) { + private var occupant: Option[Player] = None // private var lockState : VehicleLockState.Value = VehicleLockState.Empire /** * Is this seat occupied? * @return the Player object of the player sitting in this seat, or `None` if it is left vacant */ - def Occupant : Option[Player] = { + def Occupant: Option[Player] = { this.occupant } @@ -27,15 +27,14 @@ class Seat(private val seatDef : SeatDefinition) { * @param player the player who wants to sit, or `None` if the occupant is getting up * @return the Player object of the player sitting in this seat, or `None` if it is left vacant */ - def Occupant_=(player : Player) : Option[Player] = Occupant_=(Some(player)) + def Occupant_=(player: Player): Option[Player] = Occupant_=(Some(player)) - def Occupant_=(player : Option[Player]) : Option[Player] = { - if(player.isDefined) { - if(this.occupant.isEmpty) { + def Occupant_=(player: Option[Player]): Option[Player] = { + if (player.isDefined) { + if (this.occupant.isEmpty) { this.occupant = player } - } - else { + } else { this.occupant = None } this.occupant @@ -45,7 +44,7 @@ class Seat(private val seatDef : SeatDefinition) { * Is this seat occupied? * @return `true`, if it is occupied; `false`, otherwise */ - def isOccupied : Boolean = { + def isOccupied: Boolean = { this.occupant.isDefined } @@ -58,15 +57,15 @@ class Seat(private val seatDef : SeatDefinition) { // SeatLockState // } - def ArmorRestriction : SeatArmorRestriction.Value = { + def ArmorRestriction: SeatArmorRestriction.Value = { seatDef.ArmorRestriction } - def Bailable : Boolean = { + def Bailable: Boolean = { seatDef.Bailable } - def ControlledWeapon : Option[Int] = { + def ControlledWeapon: Option[Int] = { seatDef.ControlledWeapon } @@ -74,17 +73,18 @@ class Seat(private val seatDef : SeatDefinition) { * Override the string representation to provide additional information. * @return the string output */ - override def toString : String = { + override def toString: String = { Seat.toString(this) } } object Seat { + /** * Overloaded constructor. * @return a `Seat` object */ - def apply(seatDef : SeatDefinition) : Seat = { + def apply(seatDef: SeatDefinition): Seat = { new Seat(seatDef) } @@ -92,11 +92,10 @@ object Seat { * Provide a fixed string representation. * @return the string output */ - def toString(obj : Seat) : String = { - val seatStr = if(obj.isOccupied) { + def toString(obj: Seat): String = { + val seatStr = if (obj.isOccupied) { s", occupied by player ${obj.Occupant.get.GUID}" - } - else { + } else { "" } s"seat$seatStr" diff --git a/common/src/main/scala/net/psforever/objects/vehicles/SeatArmorRestriction.scala b/common/src/main/scala/net/psforever/objects/vehicles/SeatArmorRestriction.scala index af01fb1e..b811d76b 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/SeatArmorRestriction.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/SeatArmorRestriction.scala @@ -11,9 +11,5 @@ package net.psforever.objects.vehicles object SeatArmorRestriction extends Enumeration { type Type = Value - val - MaxOnly, - NoMax, - NoReinforcedOrMax - = Value + val MaxOnly, NoMax, NoReinforcedOrMax = Value } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/Turrets.scala b/common/src/main/scala/net/psforever/objects/vehicles/Turrets.scala index 66c7d8c4..26540d59 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/Turrets.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/Turrets.scala @@ -5,13 +5,13 @@ package net.psforever.objects.vehicles * An `Enumeration` of all the turret type objects in the game, paired with their object id as the `Value`. */ object Turrets extends Enumeration { - final val manned_turret = Value(480) - final val portable_manned_turret = Value(685) + final val manned_turret = Value(480) + final val portable_manned_turret = Value(685) final val portable_manned_turret_nc = Value(686) final val portable_manned_turret_tr = Value(687) final val portable_manned_turret_vs = Value(688) - final val spitfire_aa = Value(819) - final val spitfire_cloaked = Value(825) - final val spitfire_turret = Value(826) - final val vanu_sentry_turret = Value(943) + final val spitfire_aa = Value(819) + final val spitfire_cloaked = Value(825) + final val spitfire_turret = Value(826) + final val vanu_sentry_turret = Value(943) } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/Utility.scala b/common/src/main/scala/net/psforever/objects/vehicles/Utility.scala index 039c3cc0..3aaaef1e 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/Utility.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/Utility.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017 PSForever package net.psforever.objects.vehicles -import akka.actor.{ActorContext, ActorRef} +import akka.actor.ActorContext import net.psforever.objects.definition.BaseDeployableDefinition import net.psforever.objects._ import net.psforever.objects.ce.{DeployedItem, TelepadLike} @@ -24,17 +24,8 @@ import net.psforever.types.{PlanetSideGUID, Vector3} */ object UtilityType extends Enumeration { type Type = Value - val - ams_respawn_tube, - bfr_rearm_terminal, - lodestar_repair_terminal, - matrix_terminalc, - multivehicle_rearm_terminal, - order_terminala, - order_terminalb, - teleportpad_terminal, - internal_router_telepad_deployable - = Value + val ams_respawn_tube, bfr_rearm_terminal, lodestar_repair_terminal, matrix_terminalc, multivehicle_rearm_terminal, + order_terminala, order_terminalb, teleportpad_terminal, internal_router_telepad_deployable = Value } /** @@ -54,54 +45,54 @@ object UtilityType extends Enumeration { * @param util the type of the `Amenity` object to be created * @param vehicle the owner of this object */ -class Utility(util : UtilityType.Value, vehicle : Vehicle) { - private val obj : Amenity = Utility.BuildUtilityFunc(util) +class Utility(util: UtilityType.Value, vehicle: Vehicle) { + private val obj: Amenity = Utility.BuildUtilityFunc(util) obj.Owner = vehicle - private val setupFunc : Utility.UtilLogic = Utility.SelectUtilitySetupFunc(util) + private val setupFunc: Utility.UtilLogic = Utility.SelectUtilitySetupFunc(util) /** * Access the contained object in this `Utility`. * @return the contained `Amenity` object */ - def apply() : Amenity = obj + def apply(): Amenity = obj /** * Run the setup code that was provided in the object constructor parameters. * While it is expected to construct an `Actor`, that is not required. * @param context an `ActorContext` potentially useful for the function */ - def Setup(implicit context : ActorContext) : Unit = setupFunc(obj, context) + def Setup(implicit context: ActorContext): Unit = setupFunc(obj, context) /** * Recover the original value used to initialize this object. * @return the type of the `Amenity` object that was created */ - def UtilType : UtilityType.Value = util + def UtilType: UtilityType.Value = util } object Utility { - type UtilLogic = (Amenity, ActorContext)=>Unit + type UtilLogic = (Amenity, ActorContext) => Unit /** * Embedded (owned) entities are known in relation to their parent entity. * These overrides to the `Position` method and the `Orientation` method reflect this. */ sealed trait UtilityWorldEntity { - this : Amenity => + this: Amenity => - override def Position : Vector3 = { + override def Position: Vector3 = { val oPos = Owner.Position (Owner, LocationOffset) match { case (_, Vector3.Zero) => oPos - case (_ : Vehicle, v) => + case (_: Vehicle, v) => oPos + v.Rz(Orientation.z + 90) case _ => oPos } } - override def Orientation : Vector3 = Owner.Orientation + override def Orientation: Vector3 = Owner.Orientation } /** @@ -110,7 +101,7 @@ object Utility { * @param vehicle the owner of this object * @return a `Utility` object */ - def apply(util : UtilityType.Value, vehicle : Vehicle) : Utility = { + def apply(util: UtilityType.Value, vehicle: Vehicle): Utility = { new Utility(util, vehicle) } @@ -119,46 +110,48 @@ object Utility { * @param util the type of the `Amenity` object * @return the `Amenity` object */ - private def BuildUtilityFunc(util : UtilityType.Value) : Amenity = util match { - case UtilityType.ams_respawn_tube => - new SpawnTubeUtility(GlobalDefinitions.ams_respawn_tube) - case UtilityType.bfr_rearm_terminal => - new TerminalUtility(GlobalDefinitions.bfr_rearm_terminal) - case UtilityType.lodestar_repair_terminal => - new ProximityTerminalUtility(GlobalDefinitions.lodestar_repair_terminal) - case UtilityType.matrix_terminalc => - new TerminalUtility(GlobalDefinitions.matrix_terminalc) - case UtilityType.multivehicle_rearm_terminal => - new TerminalUtility(GlobalDefinitions.multivehicle_rearm_terminal) - case UtilityType.order_terminala => - new TerminalUtility(GlobalDefinitions.order_terminala) - case UtilityType.order_terminalb => - new TerminalUtility(GlobalDefinitions.order_terminalb) - case UtilityType.teleportpad_terminal => - new TeleportPadTerminalUtility(GlobalDefinitions.teleportpad_terminal) - case UtilityType.internal_router_telepad_deployable => - new InternalTelepad(GlobalDefinitions.internal_router_telepad_deployable) - } + private def BuildUtilityFunc(util: UtilityType.Value): Amenity = + util match { + case UtilityType.ams_respawn_tube => + new SpawnTubeUtility(GlobalDefinitions.ams_respawn_tube) + case UtilityType.bfr_rearm_terminal => + new TerminalUtility(GlobalDefinitions.bfr_rearm_terminal) + case UtilityType.lodestar_repair_terminal => + new ProximityTerminalUtility(GlobalDefinitions.lodestar_repair_terminal) + case UtilityType.matrix_terminalc => + new TerminalUtility(GlobalDefinitions.matrix_terminalc) + case UtilityType.multivehicle_rearm_terminal => + new TerminalUtility(GlobalDefinitions.multivehicle_rearm_terminal) + case UtilityType.order_terminala => + new TerminalUtility(GlobalDefinitions.order_terminala) + case UtilityType.order_terminalb => + new TerminalUtility(GlobalDefinitions.order_terminalb) + case UtilityType.teleportpad_terminal => + new TeleportPadTerminalUtility(GlobalDefinitions.teleportpad_terminal) + case UtilityType.internal_router_telepad_deployable => + new InternalTelepad(GlobalDefinitions.internal_router_telepad_deployable) + } /** * Override for `SpawnTube` objects so that they inherit the spatial characteristics of their `Owner`. * @param tubeDef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - class SpawnTubeUtility(tubeDef : SpawnTubeDefinition) extends SpawnTube(tubeDef) with UtilityWorldEntity + class SpawnTubeUtility(tubeDef: SpawnTubeDefinition) extends SpawnTube(tubeDef) with UtilityWorldEntity /** * Override for a `Terminal` object so that it inherits the spatial characteristics of its `Owner`. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - class TerminalUtility(tdef : TerminalDefinition) extends Terminal(tdef) with UtilityWorldEntity + class TerminalUtility(tdef: TerminalDefinition) extends Terminal(tdef) with UtilityWorldEntity /** * Override for a `Terminal` object so that it inherits the spatial characteristics of its `Owner`. * The `Terminal` `Utility` produced has proximity effects. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - class ProximityTerminalUtility(tdef : ProximityTerminalDefinition) extends ProximityTerminal(tdef) - with UtilityWorldEntity + class ProximityTerminalUtility(tdef: ProximityTerminalDefinition) + extends ProximityTerminal(tdef) + with UtilityWorldEntity /** * Override for a `Terminal` object so that it inherits the spatial characteristics of its `Owner`. @@ -166,7 +159,8 @@ object Utility { * that retain knowledge of the `Owner` of the `Terminal` that dispensed it. * @param tdef the `ObjectDefinition` that constructs this object and maintains some of its immutable fields */ - class TeleportPadTerminalUtility(tdef : TerminalDefinition) extends TerminalUtility(tdef) { + class TeleportPadTerminalUtility(tdef: TerminalDefinition) extends TerminalUtility(tdef) { + /** * This kind of `Terminal` object only produces one object of importance - a Router's telepad unit. * When this `Telepad` object is produced, it shlould be associated with the Router, @@ -175,12 +169,12 @@ object Utility { * @param msg the request message * @return a message that resolves the transaction */ - override def Request(player : Player, msg : Any) : Terminal.Exchange = { + override def Request(player: Player, msg: Any): Terminal.Exchange = { msg match { - case message : ItemTransactionMessage => + case message: ItemTransactionMessage => val reply = super.Request(player, message) reply match { - case Terminal.BuyEquipment(obj : Telepad) => + case Terminal.BuyEquipment(obj: Telepad) => obj.Router = Owner.GUID case _ => ; } @@ -196,25 +190,25 @@ object Utility { * and allows it to serve as one of the terminal points of a Router-telepad teleportation system. * @param ddef na */ - class InternalTelepad(ddef : InternalTelepadDefinition) extends Amenity - with UtilityWorldEntity - with TelepadLike { + class InternalTelepad(ddef: InternalTelepadDefinition) extends Amenity with UtilityWorldEntity with TelepadLike { + /** a link to the telepad that serves as the other endpoint of this teleportation system */ - private var activeTelepad : Option[PlanetSideGUID] = None + private var activeTelepad: Option[PlanetSideGUID] = None - def Telepad : Option[PlanetSideGUID] = activeTelepad + def Telepad: Option[PlanetSideGUID] = activeTelepad - def Telepad_=(rguid : PlanetSideGUID) : Option[PlanetSideGUID] = Telepad_=(Some(rguid)) + def Telepad_=(rguid: PlanetSideGUID): Option[PlanetSideGUID] = Telepad_=(Some(rguid)) - def Telepad_=(rguid : Option[PlanetSideGUID]) : Option[PlanetSideGUID] = { + def Telepad_=(rguid: Option[PlanetSideGUID]): Option[PlanetSideGUID] = { activeTelepad = rguid Telepad } - override def Position = Owner.Position + override def Position = Owner.Position override def Orientation = Owner.Orientation + /** the router is the owner */ - override def Router : Option[PlanetSideGUID] = Some(Owner.GUID) + override def Router: Option[PlanetSideGUID] = Some(Owner.GUID) def Definition = ddef } @@ -227,11 +221,12 @@ object Utility { * @see `BaseDeployableDefinition` * @see `DeployableDefinition` */ - class InternalTelepadDefinition extends AmenityDefinition(DeployedItem.router_telepad_deployable.id) - with BaseDeployableDefinition { + class InternalTelepadDefinition + extends AmenityDefinition(DeployedItem.router_telepad_deployable.id) + with BaseDeployableDefinition { Packet = new SmallDeployableConverter - def Item : DeployedItem.Value = DeployedItem.router_telepad_deployable + def Item: DeployedItem.Value = DeployedItem.router_telepad_deployable } /** @@ -239,35 +234,36 @@ object Utility { * @param util the type of the `Amenity` object * @return the `Amenity` object */ - private def SelectUtilitySetupFunc(util : UtilityType.Value) : UtilLogic = util match { - case UtilityType.ams_respawn_tube => - SpawnTubeDefinition.Setup - case UtilityType.bfr_rearm_terminal => - OrderTerminalDefinition.Setup - case UtilityType.lodestar_repair_terminal => - ProximityTerminal.Setup - case UtilityType.matrix_terminalc => - MatrixTerminalDefinition.Setup - case UtilityType.multivehicle_rearm_terminal => - OrderTerminalDefinition.Setup - case UtilityType.order_terminala => - OrderTerminalDefinition.Setup - case UtilityType.order_terminalb => - OrderTerminalDefinition.Setup - case UtilityType.teleportpad_terminal => - OrderTerminalDefinition.Setup - case UtilityType.internal_router_telepad_deployable => - TelepadLike.Setup - } + private def SelectUtilitySetupFunc(util: UtilityType.Value): UtilLogic = + util match { + case UtilityType.ams_respawn_tube => + SpawnTubeDefinition.Setup + case UtilityType.bfr_rearm_terminal => + OrderTerminalDefinition.Setup + case UtilityType.lodestar_repair_terminal => + ProximityTerminal.Setup + case UtilityType.matrix_terminalc => + MatrixTerminalDefinition.Setup + case UtilityType.multivehicle_rearm_terminal => + OrderTerminalDefinition.Setup + case UtilityType.order_terminala => + OrderTerminalDefinition.Setup + case UtilityType.order_terminalb => + OrderTerminalDefinition.Setup + case UtilityType.teleportpad_terminal => + OrderTerminalDefinition.Setup + case UtilityType.internal_router_telepad_deployable => + TelepadLike.Setup + } } object InternalTelepadDefinition { - def apply() : InternalTelepadDefinition = + def apply(): InternalTelepadDefinition = new InternalTelepadDefinition() - def SimpleUninitialize(obj : PlanetSideGameObject, context : ActorContext) : Unit = { } + def SimpleUninitialize(obj: PlanetSideGameObject, context: ActorContext): Unit = {} - def SimpleUninitialize(obj : PlanetSideServerObject, context : ActorContext) : Unit = { + def SimpleUninitialize(obj: PlanetSideServerObject, context: ActorContext): Unit = { context.stop(obj.Actor) obj.Actor = Default.Actor } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/VehicleControl.scala b/common/src/main/scala/net/psforever/objects/vehicles/VehicleControl.scala index 80c3dbe1..879b52ad 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/VehicleControl.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/VehicleControl.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017-2020 PSForever package net.psforever.objects.vehicles -import akka.actor.{Actor, ActorRef, Cancellable} +import akka.actor.{Actor, Cancellable} import net.psforever.objects._ import net.psforever.objects.ballistics.{ResolvedProjectile, VehicleSource} import net.psforever.objects.equipment.{Equipment, EquipmentSlot, JammableMountedWeapons} @@ -35,37 +35,39 @@ import scala.concurrent.duration._ * The latter is applicable only when the specific vehicle is being deconstructed. * @param vehicle the `Vehicle` object being governed */ -class VehicleControl(vehicle : Vehicle) extends Actor - with FactionAffinityBehavior.Check - with DeploymentBehavior - with MountableBehavior.Mount - with MountableBehavior.Dismount - with CargoBehavior - with DamageableVehicle - with RepairableVehicle - with JammableMountedWeapons - with ContainableBehavior { +class VehicleControl(vehicle: Vehicle) + extends Actor + with FactionAffinityBehavior.Check + with DeploymentBehavior + with MountableBehavior.Mount + with MountableBehavior.Dismount + with CargoBehavior + with DamageableVehicle + with RepairableVehicle + with JammableMountedWeapons + with ContainableBehavior { //make control actors belonging to utilities when making control actor belonging to vehicle - vehicle.Utilities.foreach({case (_, util) => util.Setup }) + vehicle.Utilities.foreach({ case (_, util) => util.Setup }) - def MountableObject = vehicle - def CargoObject = vehicle - def JammableObject = vehicle - def FactionObject = vehicle + def MountableObject = vehicle + def CargoObject = vehicle + def JammableObject = vehicle + def FactionObject = vehicle def DeploymentObject = vehicle def DamageableObject = vehicle def RepairableObject = vehicle - def ContainerObject = vehicle + def ContainerObject = vehicle /** cheap flag for whether the vehicle is decaying */ - var decaying : Boolean = false + var decaying: Boolean = false + /** primary vehicle decay timer */ - var decayTimer : Cancellable = Default.Cancellable + var decayTimer: Cancellable = Default.Cancellable - def receive : Receive = Enabled + def receive: Receive = Enabled - override def postStop() : Unit = { + override def postStop(): Unit = { super.postStop() decaying = false decayTimer.cancel @@ -75,96 +77,110 @@ class VehicleControl(vehicle : Vehicle) extends Actor } } - def Enabled : Receive = checkBehavior - .orElse(deployBehavior) - .orElse(cargoBehavior) - .orElse(jammableBehavior) - .orElse(takesDamage) - .orElse(canBeRepairedByNanoDispenser) - .orElse(containerBehavior) - .orElse { - case Vehicle.Ownership(None) => - LoseOwnership() + def Enabled: Receive = + checkBehavior + .orElse(deployBehavior) + .orElse(cargoBehavior) + .orElse(jammableBehavior) + .orElse(takesDamage) + .orElse(canBeRepairedByNanoDispenser) + .orElse(containerBehavior) + .orElse { + case Vehicle.Ownership(None) => + LoseOwnership() - case Vehicle.Ownership(Some(player)) => - GainOwnership(player) + case Vehicle.Ownership(Some(player)) => + GainOwnership(player) - case msg @ Mountable.TryMount(player, seat_num) => - tryMountBehavior.apply(msg) - val obj = MountableObject - //check that the player has actually been sat in the expected seat - if(obj.PassengerInSeat(player).contains(seat_num)) { - //if the driver seat, change ownership - if(seat_num == 0 && !obj.OwnerName.contains(player.Name)) { - //whatever vehicle was previously owned - vehicle.Zone.GUID(player.VehicleOwned) match { - case Some(v : Vehicle) => - v.Actor ! Vehicle.Ownership(None) - case _ => - player.VehicleOwned = None + case msg @ Mountable.TryMount(player, seat_num) => + tryMountBehavior.apply(msg) + val obj = MountableObject + //check that the player has actually been sat in the expected seat + if (obj.PassengerInSeat(player).contains(seat_num)) { + //if the driver seat, change ownership + if (seat_num == 0 && !obj.OwnerName.contains(player.Name)) { + //whatever vehicle was previously owned + vehicle.Zone.GUID(player.VehicleOwned) match { + case Some(v: Vehicle) => + v.Actor ! Vehicle.Ownership(None) + case _ => + player.VehicleOwned = None + } + LoseOwnership() //lose our current ownership + GainOwnership(player) //gain new ownership + } else { + decaying = false + decayTimer.cancel } - LoseOwnership() //lose our current ownership - GainOwnership(player) //gain new ownership } - else { - decaying = false - decayTimer.cancel + + case msg: Mountable.TryDismount => + dismountBehavior.apply(msg) + val obj = MountableObject + + // Reset velocity to zero when driver dismounts, to allow jacking/repair if vehicle was moving slightly before dismount + if (!obj.Seats(0).isOccupied) { + obj.Velocity = Some(Vector3.Zero) + } + //are we already decaying? are we unowned? is no one seated anywhere? + if (!decaying && obj.Owner.isEmpty && obj.Seats.values.forall(!_.isOccupied)) { + decaying = true + decayTimer = context.system.scheduler.scheduleOnce( + MountableObject.Definition.DeconstructionTime.getOrElse(5 minutes), + self, + VehicleControl.PrepareForDeletion() + ) } - } - case msg : Mountable.TryDismount => - dismountBehavior.apply(msg) - val obj = MountableObject + case Vehicle.ChargeShields(amount) => + val now: Long = System.nanoTime + //make certain vehicle doesn't charge shields too quickly + if ( + vehicle.Health > 0 && vehicle.Shields < vehicle.MaxShields && + !vehicle.History.exists(VehicleControl.LastShieldChargeOrDamage(now)) + ) { + vehicle.History(VehicleShieldCharge(VehicleSource(vehicle), amount)) + vehicle.Shields = vehicle.Shields + amount + vehicle.Zone.VehicleEvents ! VehicleServiceMessage( + s"${vehicle.Actor}", + VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), vehicle.GUID, 68, vehicle.Shields) + ) + } - // Reset velocity to zero when driver dismounts, to allow jacking/repair if vehicle was moving slightly before dismount - if(!obj.Seats(0).isOccupied) { - obj.Velocity = Some(Vector3.Zero) - } - //are we already decaying? are we unowned? is no one seated anywhere? - if(!decaying && obj.Owner.isEmpty && obj.Seats.values.forall(!_.isOccupied)) { - decaying = true - decayTimer = context.system.scheduler.scheduleOnce(MountableObject.Definition.DeconstructionTime.getOrElse(5 minutes), self, VehicleControl.PrepareForDeletion()) - } + case FactionAffinity.ConvertFactionAffinity(faction) => + val originalAffinity = vehicle.Faction + if (originalAffinity != (vehicle.Faction = faction)) { + vehicle.Utilities.foreach({ + case (_: Int, util: Utility) => util().Actor forward FactionAffinity.ConfirmFactionAffinity() + }) + } + sender ! FactionAffinity.AssertFactionAffinity(vehicle, faction) - case Vehicle.ChargeShields(amount) => - val now : Long = System.nanoTime - //make certain vehicle doesn't charge shields too quickly - if(vehicle.Health > 0 && vehicle.Shields < vehicle.MaxShields && - !vehicle.History.exists(VehicleControl.LastShieldChargeOrDamage(now))) { - vehicle.History(VehicleShieldCharge(VehicleSource(vehicle), amount)) - vehicle.Shields = vehicle.Shields + amount - vehicle.Zone.VehicleEvents ! VehicleServiceMessage(s"${vehicle.Actor}", VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), vehicle.GUID, 68, vehicle.Shields)) - } + case CommonMessages.Use(player, Some(item: SimpleItem)) + if item.Definition == GlobalDefinitions.remote_electronics_kit => + //TODO setup certifications check + if (vehicle.Faction != player.Faction) { + sender ! CommonMessages.Progress( + GenericHackables.GetHackSpeed(player, vehicle), + Vehicles.FinishHackingVehicle(vehicle, player, 3212836864L), + GenericHackables.HackingTickAction(progressType = 1, player, vehicle, item.GUID) + ) + } - case FactionAffinity.ConvertFactionAffinity(faction) => - val originalAffinity = vehicle.Faction - if(originalAffinity != (vehicle.Faction = faction)) { - vehicle.Utilities.foreach({ case(_ : Int, util : Utility) => util().Actor forward FactionAffinity.ConfirmFactionAffinity() }) - } - sender ! FactionAffinity.AssertFactionAffinity(vehicle, faction) - - case CommonMessages.Use(player, Some(item : SimpleItem)) if item.Definition == GlobalDefinitions.remote_electronics_kit => - //TODO setup certifications check - if(vehicle.Faction != player.Faction) { - sender ! CommonMessages.Progress( - GenericHackables.GetHackSpeed(player, vehicle), - Vehicles.FinishHackingVehicle(vehicle, player,3212836864L), - GenericHackables.HackingTickAction(progressType = 1, player, vehicle, item.GUID) - ) - } - - case Terminal.TerminalMessage(player, msg, reply) => - reply match { - case Terminal.VehicleLoadout(definition, weapons, inventory) => - org.log4s.getLogger(vehicle.Definition.Name).info(s"changing vehicle equipment loadout to ${player.Name}'s option #${msg.unk1 + 1}") - //remove old inventory - val oldInventory = vehicle.Inventory.Clear().map { case InventoryItem(obj, _) => (obj, obj.GUID) } - //"dropped" items are lost; if it doesn't go in the trunk, it vanishes into the nanite cloud - val (_, afterInventory) = inventory.partition(ContainableBehavior.DropPredicate(player)) - val (oldWeapons, newWeapons, finalInventory) = if(vehicle.Definition == definition) { - //vehicles are the same type - //TODO want to completely swap weapons, but holster icon vanishes temporarily after swap - //TODO BFR arms must be swapped properly + case Terminal.TerminalMessage(player, msg, reply) => + reply match { + case Terminal.VehicleLoadout(definition, weapons, inventory) => + org.log4s + .getLogger(vehicle.Definition.Name) + .info(s"changing vehicle equipment loadout to ${player.Name}'s option #${msg.unk1 + 1}") + //remove old inventory + val oldInventory = vehicle.Inventory.Clear().map { case InventoryItem(obj, _) => (obj, obj.GUID) } + //"dropped" items are lost; if it doesn't go in the trunk, it vanishes into the nanite cloud + val (_, afterInventory) = inventory.partition(ContainableBehavior.DropPredicate(player)) + val (oldWeapons, newWeapons, finalInventory) = if (vehicle.Definition == definition) { + //vehicles are the same type + //TODO want to completely swap weapons, but holster icon vanishes temporarily after swap + //TODO BFR arms must be swapped properly // //remove old weapons // val oldWeapons = vehicle.Weapons.values.collect { case slot if slot.Equipment.nonEmpty => // val obj = slot.Equipment.get @@ -172,79 +188,84 @@ class VehicleControl(vehicle : Vehicle) extends Actor // (obj, obj.GUID) // }.toList // (oldWeapons, weapons, afterInventory) - //TODO for now, just refill ammo; assume weapons stay the same - vehicle.Weapons - .collect { case (_, slot : EquipmentSlot) if slot.Equipment.nonEmpty => slot.Equipment.get } - .collect { case weapon : Tool => - weapon.AmmoSlots.foreach { ammo => ammo.Box.Capacity = ammo.Box.Definition.Capacity } + //TODO for now, just refill ammo; assume weapons stay the same + vehicle.Weapons + .collect { case (_, slot: EquipmentSlot) if slot.Equipment.nonEmpty => slot.Equipment.get } + .collect { + case weapon: Tool => + weapon.AmmoSlots.foreach { ammo => ammo.Box.Capacity = ammo.Box.Definition.Capacity } + } + (Nil, Nil, afterInventory) + } else { + //vehicle loadout is not for this vehicle + //do not transfer over weapon ammo + if ( + vehicle.Definition.TrunkSize == definition.TrunkSize && vehicle.Definition.TrunkOffset == definition.TrunkOffset + ) { + (Nil, Nil, afterInventory) //trunk is the same dimensions, however + } else { + //accommodate as much of inventory as possible + val (stow, _) = GridInventory.recoverInventory(afterInventory, vehicle.Inventory) + (Nil, Nil, stow) } - (Nil, Nil, afterInventory) - } - else { - //vehicle loadout is not for this vehicle - //do not transfer over weapon ammo - if(vehicle.Definition.TrunkSize == definition.TrunkSize && vehicle.Definition.TrunkOffset == definition.TrunkOffset) { - (Nil, Nil, afterInventory) //trunk is the same dimensions, however } - else { - //accommodate as much of inventory as possible - val (stow, _) = GridInventory.recoverInventory(afterInventory, vehicle.Inventory) - (Nil, Nil, stow) - } - } - finalInventory.foreach { _.obj.Faction = vehicle.Faction } - player.Zone.VehicleEvents ! VehicleServiceMessage(player.Zone.Id, VehicleAction.ChangeLoadout(vehicle.GUID, oldWeapons, newWeapons, oldInventory, finalInventory)) - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, true)) + finalInventory.foreach { _.obj.Faction = vehicle.Faction } + player.Zone.VehicleEvents ! VehicleServiceMessage( + player.Zone.Id, + VehicleAction.ChangeLoadout(vehicle.GUID, oldWeapons, newWeapons, oldInventory, finalInventory) + ) + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.TerminalOrderResult(msg.terminal_guid, msg.transaction_type, true) + ) - case _ => ; - } + case _ => ; + } - case Vehicle.Deconstruct(time) => - time match { - case Some(delay) => - decaying = true - decayTimer.cancel - decayTimer = context.system.scheduler.scheduleOnce(delay, self, VehicleControl.PrepareForDeletion()) - case _ => - PrepareForDeletion() - } + case Vehicle.Deconstruct(time) => + time match { + case Some(delay) => + decaying = true + decayTimer.cancel + decayTimer = context.system.scheduler.scheduleOnce(delay, self, VehicleControl.PrepareForDeletion()) + case _ => + PrepareForDeletion() + } - case VehicleControl.PrepareForDeletion() => - PrepareForDeletion() + case VehicleControl.PrepareForDeletion() => + PrepareForDeletion() - case _ => ; - } + case _ => ; + } - val tryMountBehavior : Receive = { + val tryMountBehavior: Receive = { case msg @ Mountable.TryMount(user, seat_num) => - val exosuit = user.ExoSuit + val exosuit = user.ExoSuit val restriction = vehicle.Seats(seat_num).ArmorRestriction - val seatGroup = vehicle.SeatPermissionGroup(seat_num).getOrElse(AccessPermissionGroup.Passenger) - val permission = vehicle.PermissionGroup(seatGroup.id).getOrElse(VehicleLockState.Empire) - if( - (if(seatGroup == AccessPermissionGroup.Driver) { - vehicle.Owner.contains(user.GUID) || vehicle.Owner.isEmpty || permission != VehicleLockState.Locked - } - else { - permission != VehicleLockState.Locked - }) && - (exosuit match { - case ExoSuitType.MAX => restriction == SeatArmorRestriction.MaxOnly - case ExoSuitType.Reinforced => restriction == SeatArmorRestriction.NoMax - case _ => restriction != SeatArmorRestriction.MaxOnly - }) + val seatGroup = vehicle.SeatPermissionGroup(seat_num).getOrElse(AccessPermissionGroup.Passenger) + val permission = vehicle.PermissionGroup(seatGroup.id).getOrElse(VehicleLockState.Empire) + if ( + (if (seatGroup == AccessPermissionGroup.Driver) { + vehicle.Owner.contains(user.GUID) || vehicle.Owner.isEmpty || permission != VehicleLockState.Locked + } else { + permission != VehicleLockState.Locked + }) && + (exosuit match { + case ExoSuitType.MAX => restriction == SeatArmorRestriction.MaxOnly + case ExoSuitType.Reinforced => restriction == SeatArmorRestriction.NoMax + case _ => restriction != SeatArmorRestriction.MaxOnly + }) ) { mountBehavior.apply(msg) - } - else { + } else { sender ! Mountable.MountMessages(user, Mountable.CanNotMount(vehicle, seat_num)) } } - def PrepareForDeletion() : Unit = { + def PrepareForDeletion(): Unit = { decaying = false - val guid = vehicle.GUID - val zone = vehicle.Zone + val guid = vehicle.GUID + val zone = vehicle.Zone val zoneId = zone.Id val events = zone.VehicleEvents //become disabled @@ -255,7 +276,13 @@ class VehicleControl(vehicle : Vehicle) extends Actor //escape being someone else's cargo vehicle.MountedIn match { case Some(_) => - CargoBehavior.HandleVehicleCargoDismount(zone, guid, bailed = false, requestedByPassenger = false, kicked = false) + CargoBehavior.HandleVehicleCargoDismount( + zone, + guid, + bailed = false, + requestedByPassenger = false, + kicked = false + ) case _ => ; } //kick all passengers @@ -264,16 +291,25 @@ class VehicleControl(vehicle : Vehicle) extends Actor case Some(player) => seat.Occupant = None player.VehicleSeated = None - if(player.HasGUID) { + if (player.HasGUID) { events ! VehicleServiceMessage(zoneId, VehicleAction.KickPassenger(player.GUID, 4, false, guid)) } case None => ; } //abandon all cargo vehicle.CargoHolds.values - .collect { case hold if hold.isOccupied => - val cargo = hold.Occupant.get - CargoBehavior.HandleVehicleCargoDismount(cargo.GUID, cargo, guid, vehicle, bailed = false, requestedByPassenger = false, kicked = false) + .collect { + case hold if hold.isOccupied => + val cargo = hold.Occupant.get + CargoBehavior.HandleVehicleCargoDismount( + cargo.GUID, + cargo, + guid, + vehicle, + bailed = false, + requestedByPassenger = false, + kicked = false + ) } }) //unregister @@ -285,31 +321,39 @@ class VehicleControl(vehicle : Vehicle) extends Actor decayTimer = context.system.scheduler.scheduleOnce(5 seconds, self, VehicleControl.Deletion()) } - def Disabled : Receive = checkBehavior - .orElse { - case VehicleControl.Deletion() => - val zone = vehicle.Zone - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.UnloadVehicle(Service.defaultPlayerGUID, zone, vehicle, vehicle.GUID)) - zone.Transport ! Zone.Vehicle.Despawn(vehicle) - case _ => - } + def Disabled: Receive = + checkBehavior + .orElse { + case VehicleControl.Deletion() => + val zone = vehicle.Zone + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.UnloadVehicle(Service.defaultPlayerGUID, zone, vehicle, vehicle.GUID) + ) + zone.Transport ! Zone.Vehicle.Despawn(vehicle) + case _ => + } - override def TryJammerEffectActivate(target : Any, cause : ResolvedProjectile) : Unit = { - if(vehicle.MountedIn.isEmpty) { + override def TryJammerEffectActivate(target: Any, cause: ResolvedProjectile): Unit = { + if (vehicle.MountedIn.isEmpty) { super.TryJammerEffectActivate(target, cause) } } - def LoseOwnership() : Unit = { + def LoseOwnership(): Unit = { val obj = MountableObject Vehicles.Disown(obj.GUID, obj) - if(!decaying && obj.Seats.values.forall(!_.isOccupied)) { + if (!decaying && obj.Seats.values.forall(!_.isOccupied)) { decaying = true - decayTimer = context.system.scheduler.scheduleOnce(obj.Definition.DeconstructionTime.getOrElse(5 minutes), self, VehicleControl.PrepareForDeletion()) + decayTimer = context.system.scheduler.scheduleOnce( + obj.Definition.DeconstructionTime.getOrElse(5 minutes), + self, + VehicleControl.PrepareForDeletion() + ) } } - def GainOwnership(player : Player) : Unit = { + def GainOwnership(player: Player): Unit = { Vehicles.Own(MountableObject, player) match { case Some(_) => decaying = false @@ -318,7 +362,7 @@ class VehicleControl(vehicle : Vehicle) extends Actor } } - def MessageDeferredCallback(msg : Any) : Unit = { + def MessageDeferredCallback(msg: Any): Unit = { msg match { case Containable.MoveItem(_, item, _) => //momentarily put item back where it was originally @@ -335,23 +379,26 @@ class VehicleControl(vehicle : Vehicle) extends Actor } } - def RemoveItemFromSlotCallback(item : Equipment, slot : Int) : Unit = { + def RemoveItemFromSlotCallback(item: Equipment, slot: Int): Unit = { val zone = ContainerObject.Zone - zone.VehicleEvents ! VehicleServiceMessage(self.toString, VehicleAction.UnstowEquipment(Service.defaultPlayerGUID, item.GUID)) + zone.VehicleEvents ! VehicleServiceMessage( + self.toString, + VehicleAction.UnstowEquipment(Service.defaultPlayerGUID, item.GUID) + ) } - def PutItemInSlotCallback(item : Equipment, slot : Int) : Unit = { - val obj = ContainerObject - val oguid = obj.GUID - val zone = obj.Zone - val channel = self.toString - val events = zone.VehicleEvents - val iguid = item.GUID + def PutItemInSlotCallback(item: Equipment, slot: Int): Unit = { + val obj = ContainerObject + val oguid = obj.GUID + val zone = obj.Zone + val channel = self.toString + val events = zone.VehicleEvents + val iguid = item.GUID val definition = item.Definition item.Faction = obj.Faction events ! VehicleServiceMessage( //TODO when a new weapon, the equipment slot ui goes blank, but the weapon functions; remount vehicle to correct it - if(obj.VisibleSlots.contains(slot)) zone.Id else channel, + if (obj.VisibleSlots.contains(slot)) zone.Id else channel, VehicleAction.SendResponse( Service.defaultPlayerGUID, ObjectCreateMessage( @@ -363,12 +410,12 @@ class VehicleControl(vehicle : Vehicle) extends Actor ) ) item match { - case box : AmmoBox => + case box: AmmoBox => events ! VehicleServiceMessage( channel, VehicleAction.InventoryState2(Service.defaultPlayerGUID, iguid, oguid, box.Capacity) ) - case weapon : Tool => + case weapon: Tool => weapon.AmmoSlots.map { slot => slot.Box }.foreach { box => events ! VehicleServiceMessage( channel, @@ -379,10 +426,13 @@ class VehicleControl(vehicle : Vehicle) extends Actor } } - def SwapItemCallback(item : Equipment) : Unit = { - val obj = ContainerObject + def SwapItemCallback(item: Equipment): Unit = { + val obj = ContainerObject val zone = obj.Zone - zone.VehicleEvents ! VehicleServiceMessage(self.toString, VehicleAction.SendResponse(Service.defaultPlayerGUID, ObjectDetachMessage(obj.GUID, item.GUID, Vector3.Zero, 0f))) + zone.VehicleEvents ! VehicleServiceMessage( + self.toString, + VehicleAction.SendResponse(Service.defaultPlayerGUID, ObjectDetachMessage(obj.GUID, item.GUID, Vector3.Zero, 0f)) + ) } } @@ -402,11 +452,11 @@ object VehicleControl { * charged shields in the last second; * `false`, otherwise */ - def LastShieldChargeOrDamage(now : Long)(act : VitalsActivity) : Boolean = { + def LastShieldChargeOrDamage(now: Long)(act: VitalsActivity): Boolean = { act match { case DamageFromProjectile(data) => now - data.hit_time < (5 seconds).toNanos //damage delays next charge by 5s - case vsc : VehicleShieldCharge => now - vsc.time < (1 seconds).toNanos //previous charge delays next by 1s - case _ => false + case vsc: VehicleShieldCharge => now - vsc.time < (1 seconds).toNanos //previous charge delays next by 1s + case _ => false } } } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/VehicleLockState.scala b/common/src/main/scala/net/psforever/objects/vehicles/VehicleLockState.scala index 748f370c..fe8bc18e 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/VehicleLockState.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/VehicleLockState.scala @@ -9,6 +9,6 @@ object VehicleLockState extends Enumeration { type Type = Value val Locked = Value(0) //owner only - val Group = Value(1) //owner's squad/platoon only + val Group = Value(1) //owner's squad/platoon only val Empire = Value(3) //owner's whole faction } diff --git a/common/src/main/scala/net/psforever/objects/vehicles/VehicleManifest.scala b/common/src/main/scala/net/psforever/objects/vehicles/VehicleManifest.scala index 791882ff..fcf1f544 100644 --- a/common/src/main/scala/net/psforever/objects/vehicles/VehicleManifest.scala +++ b/common/src/main/scala/net/psforever/objects/vehicles/VehicleManifest.scala @@ -17,34 +17,38 @@ import net.psforever.objects.zones.Zone * @param passengers the paired names and seat indices of all passengers when the transport process started * @param cargo the paired driver names and cargo hold indices of all cargo vehicles when the transport process started */ -final case class VehicleManifest(file : String, - vehicle : Vehicle, - origin : Zone, - driverName : String, - passengers : List[(String, Int)], - cargo : List[(String, Int)]) +final case class VehicleManifest( + file: String, + vehicle: Vehicle, + origin: Zone, + driverName: String, + passengers: List[(String, Int)], + cargo: List[(String, Int)] +) object VehicleManifest { - def apply(vehicle : Vehicle) : VehicleManifest = { + def apply(vehicle: Vehicle): VehicleManifest = { val driverName = vehicle.Seats(0).Occupant match { case Some(driver) => driver.Name - case None => "MISSING_DRIVER" + case None => "MISSING_DRIVER" } - val passengers = vehicle.Seats.collect { case (index, seat) if index > 0 && seat.isOccupied => - (seat.Occupant.get.Name, index) + val passengers = vehicle.Seats.collect { + case (index, seat) if index > 0 && seat.isOccupied => + (seat.Occupant.get.Name, index) } - val cargo = vehicle.CargoHolds.collect { case (index, hold) if hold.Occupant.nonEmpty => - hold.Occupant.get.Seats(0).Occupant match { - case Some(driver) => - (driver.Name, index) - case None => - ("MISSING_DRIVER", index) - } + val cargo = vehicle.CargoHolds.collect { + case (index, hold) if hold.Occupant.nonEmpty => + hold.Occupant.get.Seats(0).Occupant match { + case Some(driver) => + (driver.Name, index) + case None => + ("MISSING_DRIVER", index) + } } VehicleManifest(ManifestChannelName(vehicle), vehicle, vehicle.Zone, driverName, passengers.toList, cargo.toList) } - def ManifestChannelName(vehicle : Vehicle) : String = { + def ManifestChannelName(vehicle: Vehicle): String = { s"transport-vehicle-channel-${vehicle.GUID.guid}" } } diff --git a/common/src/main/scala/net/psforever/objects/vital/DamageResistanceModel.scala b/common/src/main/scala/net/psforever/objects/vital/DamageResistanceModel.scala index beb1134b..41d4f885 100644 --- a/common/src/main/scala/net/psforever/objects/vital/DamageResistanceModel.scala +++ b/common/src/main/scala/net/psforever/objects/vital/DamageResistanceModel.scala @@ -25,32 +25,33 @@ import net.psforever.objects.vital.resolution.ResolutionCalculations * @see `Vitality` */ trait DamageResistanceModel { + /** the functionality that processes damage; required */ - private var damageUsing : DamageSelection = NoDamageSelection + private var damageUsing: DamageSelection = NoDamageSelection /** the functionality that processes resistance; optional */ - private var resistUsing : ResistanceSelection = NoResistanceSelection + private var resistUsing: ResistanceSelection = NoResistanceSelection /** the functionality that prepares for damage application actions; required */ - private var model : ResolutionCalculations.Form = NoResolutions.Calculate + private var model: ResolutionCalculations.Form = NoResolutions.Calculate - def DamageUsing : DamageSelection = damageUsing + def DamageUsing: DamageSelection = damageUsing - def DamageUsing_=(selector : DamageSelection) : DamageSelection = { + def DamageUsing_=(selector: DamageSelection): DamageSelection = { damageUsing = selector DamageUsing } - def ResistUsing : ResistanceSelection = resistUsing + def ResistUsing: ResistanceSelection = resistUsing - def ResistUsing_=(selector : ResistanceSelection) : ResistanceSelection = { + def ResistUsing_=(selector: ResistanceSelection): ResistanceSelection = { resistUsing = selector ResistUsing } - def Model : ResolutionCalculations.Form = model + def Model: ResolutionCalculations.Form = model - def Model_=(selector : ResolutionCalculations.Form) : ResolutionCalculations.Form = { + def Model_=(selector: ResolutionCalculations.Form): ResolutionCalculations.Form = { model = selector Model } @@ -60,9 +61,9 @@ trait DamageResistanceModel { * @param data the historical `ResolvedProjectile` information * @return a function literal that encapsulates delayed modification instructions for certain objects */ - def Calculate(data : ResolvedProjectile) : ResolutionCalculations.Output = { - val dam : ProjectileCalculations.Form = DamageUsing(data) - val res : ProjectileCalculations.Form = ResistUsing(data) + def Calculate(data: ResolvedProjectile): ResolutionCalculations.Output = { + val dam: ProjectileCalculations.Form = DamageUsing(data) + val res: ProjectileCalculations.Form = ResistUsing(data) Model(dam, res, data) } @@ -72,9 +73,9 @@ trait DamageResistanceModel { * @param resolution an explicit damage resolution overriding the one in the `ResolvedProjectile` object * @return a function literal that encapsulates delayed modification instructions for certain objects */ - def Calculate(data : ResolvedProjectile, resolution : ProjectileResolution.Value) : ResolutionCalculations.Output = { - val dam : ProjectileCalculations.Form = DamageUsing(resolution) - val res : ProjectileCalculations.Form = ResistUsing(resolution) + def Calculate(data: ResolvedProjectile, resolution: ProjectileResolution.Value): ResolutionCalculations.Output = { + val dam: ProjectileCalculations.Form = DamageUsing(resolution) + val res: ProjectileCalculations.Form = ResistUsing(resolution) Model(dam, res, data) } } diff --git a/common/src/main/scala/net/psforever/objects/vital/DamageType.scala b/common/src/main/scala/net/psforever/objects/vital/DamageType.scala index f0070f21..c34a6ea2 100644 --- a/common/src/main/scala/net/psforever/objects/vital/DamageType.scala +++ b/common/src/main/scala/net/psforever/objects/vital/DamageType.scala @@ -9,11 +9,5 @@ package net.psforever.objects.vital object DamageType extends Enumeration(1) { type Type = Value - final val Direct, - Splash, - Radiation, - Aggravated, - Plasma, - Comet, - None = Value + final val Direct, Splash, Radiation, Aggravated, Plasma, Comet, None = Value } diff --git a/common/src/main/scala/net/psforever/objects/vital/StandardDamageProfile.scala b/common/src/main/scala/net/psforever/objects/vital/StandardDamageProfile.scala index d48662d1..62995960 100644 --- a/common/src/main/scala/net/psforever/objects/vital/StandardDamageProfile.scala +++ b/common/src/main/scala/net/psforever/objects/vital/StandardDamageProfile.scala @@ -4,59 +4,59 @@ package net.psforever.objects.vital import net.psforever.objects.vital.damage.DamageProfile trait StandardDamageProfile extends DamageProfile { - private var damage0 : Int = 0 - private var damage1 : Option[Int] = None - private var damage2 : Option[Int] = None - private var damage3 : Option[Int] = None - private var damage4 : Option[Int] = None + private var damage0: Int = 0 + private var damage1: Option[Int] = None + private var damage2: Option[Int] = None + private var damage3: Option[Int] = None + private var damage4: Option[Int] = None - def Damage0 : Int = damage0 + def Damage0: Int = damage0 - def Damage0_=(damage : Int) : Int = { + def Damage0_=(damage: Int): Int = { damage0 = damage damage0 } - def Damage0_=(damage : Option[Int]) : Int = { + def Damage0_=(damage: Option[Int]): Int = { damage0 = damage match { case Some(value) => value - case None => 0 //can not be set to None + case None => 0 //can not be set to None } Damage0 } - def Damage1 : Int = damage1.getOrElse(Damage0) + def Damage1: Int = damage1.getOrElse(Damage0) - def Damage1_=(damage : Int) : Int = Damage1_=(Some(damage)) + def Damage1_=(damage: Int): Int = Damage1_=(Some(damage)) - def Damage1_=(damage : Option[Int]) : Int = { + def Damage1_=(damage: Option[Int]): Int = { this.damage1 = damage Damage1 } - def Damage2 : Int = damage2.getOrElse(Damage1) + def Damage2: Int = damage2.getOrElse(Damage1) - def Damage2_=(damage : Int) : Int = Damage2_=(Some(damage)) + def Damage2_=(damage: Int): Int = Damage2_=(Some(damage)) - def Damage2_=(damage : Option[Int]) : Int = { + def Damage2_=(damage: Option[Int]): Int = { this.damage2 = damage Damage2 } - def Damage3 : Int = damage3.getOrElse(Damage2) + def Damage3: Int = damage3.getOrElse(Damage2) - def Damage3_=(damage : Int) : Int = Damage3_=(Some(damage)) + def Damage3_=(damage: Int): Int = Damage3_=(Some(damage)) - def Damage3_=(damage : Option[Int]) : Int = { + def Damage3_=(damage: Option[Int]): Int = { this.damage3 = damage Damage3 } - def Damage4 : Int = damage4.getOrElse(Damage3) + def Damage4: Int = damage4.getOrElse(Damage3) - def Damage4_=(damage : Int) : Int = Damage4_=(Some(damage)) + def Damage4_=(damage: Int): Int = Damage4_=(Some(damage)) - def Damage4_=(damage : Option[Int]) : Int = { + def Damage4_=(damage: Option[Int]): Int = { this.damage4 = damage Damage4 } diff --git a/common/src/main/scala/net/psforever/objects/vital/StandardDamages.scala b/common/src/main/scala/net/psforever/objects/vital/StandardDamages.scala index 043064e4..df784286 100644 --- a/common/src/main/scala/net/psforever/objects/vital/StandardDamages.scala +++ b/common/src/main/scala/net/psforever/objects/vital/StandardDamages.scala @@ -9,142 +9,158 @@ import net.psforever.objects.vital.damage.DamageCalculations._ * Used for `NoDamage` but also for the base of `*LashDamage` calculation objects * to maintain the polymorphic identity of `DamageCalculations`. */ -protected class NoDamageBase extends DamageCalculations( - DamageCalculations.NoDamage, - DamageWithModifiers(NoDamageAgainst), - TooFar -) +protected class NoDamageBase + extends DamageCalculations( + DamageCalculations.NoDamage, + DamageWithModifiers(NoDamageAgainst), + TooFar + ) object NoDamage extends NoDamageBase -object InfantryHitDamage extends DamageCalculations( - DirectHitDamageWithDegrade, - DamageWithModifiers(DamageAgainstExoSuit), - DistanceBetweenTargetandSource -) +object InfantryHitDamage + extends DamageCalculations( + DirectHitDamageWithDegrade, + DamageWithModifiers(DamageAgainstExoSuit), + DistanceBetweenTargetandSource + ) -object MaxHitDamage extends DamageCalculations( - DirectHitDamageWithDegrade, - DamageWithModifiers(DamageAgainstMaxSuit), - DistanceBetweenTargetandSource -) +object MaxHitDamage + extends DamageCalculations( + DirectHitDamageWithDegrade, + DamageWithModifiers(DamageAgainstMaxSuit), + DistanceBetweenTargetandSource + ) -object VehicleHitDamage extends DamageCalculations( - DirectHitDamageWithDegrade, - DamageWithModifiers(DamageAgainstVehicle), - DistanceBetweenTargetandSource -) +object VehicleHitDamage + extends DamageCalculations( + DirectHitDamageWithDegrade, + DamageWithModifiers(DamageAgainstVehicle), + DistanceBetweenTargetandSource + ) -object AircraftHitDamage extends DamageCalculations( - DirectHitDamageWithDegrade, - DamageWithModifiers(DamageAgainstAircraft), - DistanceBetweenTargetandSource -) +object AircraftHitDamage + extends DamageCalculations( + DirectHitDamageWithDegrade, + DamageWithModifiers(DamageAgainstAircraft), + DistanceBetweenTargetandSource + ) -object InfantrySplashDamage extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstExoSuit), - DistanceFromExplosionToTarget -) +object InfantrySplashDamage + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstExoSuit), + DistanceFromExplosionToTarget + ) -object MaxSplashDamage extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstMaxSuit), - DistanceFromExplosionToTarget -) +object MaxSplashDamage + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstMaxSuit), + DistanceFromExplosionToTarget + ) -object VehicleSplashDamage extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstVehicle), - DistanceFromExplosionToTarget -) +object VehicleSplashDamage + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstVehicle), + DistanceFromExplosionToTarget + ) -object AircraftSplashDamage extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstAircraft), - DistanceFromExplosionToTarget -) +object AircraftSplashDamage + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstAircraft), + DistanceFromExplosionToTarget + ) -object InfantrySplashDamageDirect extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstAircraft), - NoDistance -) +object InfantrySplashDamageDirect + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstAircraft), + NoDistance + ) -object InfantryLashDamage extends DamageCalculations( - LashDamage, - DamageWithModifiers(DamageAgainstExoSuit), - DistanceBetweenTargetandSource -) +object InfantryLashDamage + extends DamageCalculations( + LashDamage, + DamageWithModifiers(DamageAgainstExoSuit), + DistanceBetweenTargetandSource + ) -object MaxLashDamage extends DamageCalculations( - LashDamage, - DamageWithModifiers(DamageAgainstMaxSuit), - DistanceBetweenTargetandSource -) +object MaxLashDamage + extends DamageCalculations( + LashDamage, + DamageWithModifiers(DamageAgainstMaxSuit), + DistanceBetweenTargetandSource + ) -object VehicleLashDamage extends DamageCalculations( - LashDamage, - DamageWithModifiers(DamageAgainstVehicle), - DistanceBetweenTargetandSource -) +object VehicleLashDamage + extends DamageCalculations( + LashDamage, + DamageWithModifiers(DamageAgainstVehicle), + DistanceBetweenTargetandSource + ) -object AircraftLashDamage extends DamageCalculations( - LashDamage, - DamageWithModifiers(DamageAgainstAircraft), - DistanceBetweenTargetandSource -) +object AircraftLashDamage + extends DamageCalculations( + LashDamage, + DamageWithModifiers(DamageAgainstAircraft), + DistanceBetweenTargetandSource + ) -object AmenityHitDamage extends DamageCalculations( - DirectHitDamageWithDegrade, - DamageWithModifiers(DamageAgainstVehicle), - DistanceBetweenTargetandSource -) +object AmenityHitDamage + extends DamageCalculations( + DirectHitDamageWithDegrade, + DamageWithModifiers(DamageAgainstVehicle), + DistanceBetweenTargetandSource + ) -object AmenitySplashDamage extends DamageCalculations( - SplashDamageWithRadialDegrade, - DamageWithModifiers(DamageAgainstVehicle), - DistanceFromExplosionToTarget -) +object AmenitySplashDamage + extends DamageCalculations( + SplashDamageWithRadialDegrade, + DamageWithModifiers(DamageAgainstVehicle), + DistanceFromExplosionToTarget + ) object NoDamageSelection extends DamageSelection { def Direct = None def Splash = None - def Lash = None + def Lash = None } object StandardInfantryDamage extends DamageSelection { def Direct = InfantryHitDamage.Calculate def Splash = InfantrySplashDamage.Calculate - def Lash = InfantryLashDamage.Calculate + def Lash = InfantryLashDamage.Calculate } object StandardMaxDamage extends DamageSelection { def Direct = MaxHitDamage.Calculate def Splash = MaxSplashDamage.Calculate - def Lash = MaxLashDamage.Calculate + def Lash = MaxLashDamage.Calculate } object StandardVehicleDamage extends DamageSelection { def Direct = VehicleHitDamage.Calculate def Splash = VehicleSplashDamage.Calculate - def Lash = VehicleLashDamage.Calculate + def Lash = VehicleLashDamage.Calculate } object StandardAircraftDamage extends DamageSelection { def Direct = AircraftHitDamage.Calculate def Splash = AircraftSplashDamage.Calculate - def Lash = AircraftLashDamage.Calculate + def Lash = AircraftLashDamage.Calculate } object StandardDeployableDamage extends DamageSelection { def Direct = VehicleHitDamage.Calculate def Splash = VehicleSplashDamage.Calculate - def Lash = NoDamage.Calculate + def Lash = NoDamage.Calculate } object StandardAmenityDamage extends DamageSelection { def Direct = AmenityHitDamage.Calculate def Splash = AmenitySplashDamage.Calculate - def Lash = NoDamage.Calculate + def Lash = NoDamage.Calculate } diff --git a/common/src/main/scala/net/psforever/objects/vital/StandardResistanceProfile.scala b/common/src/main/scala/net/psforever/objects/vital/StandardResistanceProfile.scala index 1992fd8d..8a62ce2f 100644 --- a/common/src/main/scala/net/psforever/objects/vital/StandardResistanceProfile.scala +++ b/common/src/main/scala/net/psforever/objects/vital/StandardResistanceProfile.scala @@ -12,18 +12,18 @@ import net.psforever.objects.vital.resistance.ResistanceProfile * based on the assumption that the implementing object's `Definition` is the primary `ResistanceProfile`. */ trait StandardResistanceProfile extends ResistanceProfile { - this : PlanetSideGameObject => + this: PlanetSideGameObject => //actually check that this will work for this implementing class assert(Definition.isInstanceOf[ResistanceProfile], s"$this object definition must extend ResistanceProfile") private val resistDef = Definition.asInstanceOf[ResistanceProfile] //cast only once - def Subtract : DamageProfile = resistDef.Subtract + def Subtract: DamageProfile = resistDef.Subtract - def ResistanceDirectHit : Int = resistDef.ResistanceDirectHit + def ResistanceDirectHit: Int = resistDef.ResistanceDirectHit - def ResistanceSplash : Int = resistDef.ResistanceDirectHit + def ResistanceSplash: Int = resistDef.ResistanceDirectHit - def ResistanceAggravated : Int = resistDef.ResistanceDirectHit + def ResistanceAggravated: Int = resistDef.ResistanceDirectHit - def RadiationShielding : Float = resistDef.ResistanceDirectHit.toFloat + def RadiationShielding: Float = resistDef.ResistanceDirectHit.toFloat } diff --git a/common/src/main/scala/net/psforever/objects/vital/StandardResistances.scala b/common/src/main/scala/net/psforever/objects/vital/StandardResistances.scala index 090f1f9f..34b0e454 100644 --- a/common/src/main/scala/net/psforever/objects/vital/StandardResistances.scala +++ b/common/src/main/scala/net/psforever/objects/vital/StandardResistances.scala @@ -5,85 +5,96 @@ import net.psforever.objects.ballistics.{ObjectSource, PlayerSource, SourceEntry import net.psforever.objects.vital.projectile.ProjectileCalculations import net.psforever.objects.vital.resistance.{ResistanceCalculations, ResistanceSelection} -object NoResistance extends ResistanceCalculations[SourceEntry]( - ResistanceCalculations.ValidInfantryTarget, - ResistanceCalculations.NoResistExtractor -) +object NoResistance + extends ResistanceCalculations[SourceEntry]( + ResistanceCalculations.ValidInfantryTarget, + ResistanceCalculations.NoResistExtractor + ) -object InfantryHitResistance extends ResistanceCalculations[PlayerSource]( - ResistanceCalculations.ValidInfantryTarget, - ResistanceCalculations.ExoSuitDirectExtractor -) +object InfantryHitResistance + extends ResistanceCalculations[PlayerSource]( + ResistanceCalculations.ValidInfantryTarget, + ResistanceCalculations.ExoSuitDirectExtractor + ) -object InfantrySplashResistance extends ResistanceCalculations[PlayerSource]( - ResistanceCalculations.ValidInfantryTarget, - ResistanceCalculations.ExoSuitSplashExtractor -) +object InfantrySplashResistance + extends ResistanceCalculations[PlayerSource]( + ResistanceCalculations.ValidInfantryTarget, + ResistanceCalculations.ExoSuitSplashExtractor + ) -object InfantryLashResistance extends ResistanceCalculations[PlayerSource]( - ResistanceCalculations.ValidInfantryTarget, - ResistanceCalculations.MaximumResistance -) +object InfantryLashResistance + extends ResistanceCalculations[PlayerSource]( + ResistanceCalculations.ValidInfantryTarget, + ResistanceCalculations.MaximumResistance + ) -object InfantryAggravatedResistance extends ResistanceCalculations[PlayerSource]( - ResistanceCalculations.ValidInfantryTarget, - ResistanceCalculations.ExoSuitAggravatedExtractor -) +object InfantryAggravatedResistance + extends ResistanceCalculations[PlayerSource]( + ResistanceCalculations.ValidInfantryTarget, + ResistanceCalculations.ExoSuitAggravatedExtractor + ) -object VehicleHitResistance extends ResistanceCalculations[VehicleSource]( - ResistanceCalculations.ValidVehicleTarget, - ResistanceCalculations.VehicleDirectExtractor -) +object VehicleHitResistance + extends ResistanceCalculations[VehicleSource]( + ResistanceCalculations.ValidVehicleTarget, + ResistanceCalculations.VehicleDirectExtractor + ) -object VehicleSplashResistance extends ResistanceCalculations[VehicleSource]( - ResistanceCalculations.ValidVehicleTarget, - ResistanceCalculations.VehicleSplashExtractor -) +object VehicleSplashResistance + extends ResistanceCalculations[VehicleSource]( + ResistanceCalculations.ValidVehicleTarget, + ResistanceCalculations.VehicleSplashExtractor + ) -object VehicleLashResistance extends ResistanceCalculations[VehicleSource]( - ResistanceCalculations.ValidVehicleTarget, - ResistanceCalculations.NoResistExtractor -) +object VehicleLashResistance + extends ResistanceCalculations[VehicleSource]( + ResistanceCalculations.ValidVehicleTarget, + ResistanceCalculations.NoResistExtractor + ) -object VehicleAggravatedResistance extends ResistanceCalculations[VehicleSource]( - ResistanceCalculations.ValidVehicleTarget, - ResistanceCalculations.VehicleAggravatedExtractor -) +object VehicleAggravatedResistance + extends ResistanceCalculations[VehicleSource]( + ResistanceCalculations.ValidVehicleTarget, + ResistanceCalculations.VehicleAggravatedExtractor + ) -object AmenityHitResistance extends ResistanceCalculations[ObjectSource]( - ResistanceCalculations.ValidAmenityTarget, - ResistanceCalculations.OtherDirectExtractor -) +object AmenityHitResistance + extends ResistanceCalculations[ObjectSource]( + ResistanceCalculations.ValidAmenityTarget, + ResistanceCalculations.OtherDirectExtractor + ) -object AMenitySplashResistance extends ResistanceCalculations[ObjectSource]( - ResistanceCalculations.ValidAmenityTarget, - ResistanceCalculations.OtherSplashExtractor -) +object AMenitySplashResistance + extends ResistanceCalculations[ObjectSource]( + ResistanceCalculations.ValidAmenityTarget, + ResistanceCalculations.OtherSplashExtractor + ) object NoResistanceSelection extends ResistanceSelection { - def Direct : ProjectileCalculations.Form = None - def Splash : ProjectileCalculations.Form = None - def Lash : ProjectileCalculations.Form = None - def Aggravated : ProjectileCalculations.Form = None + def Direct: ProjectileCalculations.Form = None + def Splash: ProjectileCalculations.Form = None + def Lash: ProjectileCalculations.Form = None + def Aggravated: ProjectileCalculations.Form = None } object StandardInfantryResistance extends ResistanceSelection { - def Direct : ProjectileCalculations.Form = InfantryHitResistance.Calculate - def Splash : ProjectileCalculations.Form = InfantrySplashResistance.Calculate - def Lash : ProjectileCalculations.Form = InfantryLashResistance.Calculate - def Aggravated : ProjectileCalculations.Form = InfantryAggravatedResistance.Calculate + def Direct: ProjectileCalculations.Form = InfantryHitResistance.Calculate + def Splash: ProjectileCalculations.Form = InfantrySplashResistance.Calculate + def Lash: ProjectileCalculations.Form = InfantryLashResistance.Calculate + def Aggravated: ProjectileCalculations.Form = InfantryAggravatedResistance.Calculate } object StandardVehicleResistance extends ResistanceSelection { - def Direct : ProjectileCalculations.Form = VehicleHitResistance.Calculate - def Splash : ProjectileCalculations.Form = VehicleSplashResistance.Calculate - def Lash : ProjectileCalculations.Form = VehicleLashResistance.Calculate - def Aggravated : ProjectileCalculations.Form = VehicleAggravatedResistance.Calculate + def Direct: ProjectileCalculations.Form = VehicleHitResistance.Calculate + def Splash: ProjectileCalculations.Form = VehicleSplashResistance.Calculate + def Lash: ProjectileCalculations.Form = VehicleLashResistance.Calculate + def Aggravated: ProjectileCalculations.Form = VehicleAggravatedResistance.Calculate } object StandardAmenityResistance extends ResistanceSelection { - def Direct : ProjectileCalculations.Form = AmenityHitResistance.Calculate - def Splash : ProjectileCalculations.Form = AmenityHitResistance.Calculate - def Lash : ProjectileCalculations.Form = None - def Aggravated : ProjectileCalculations.Form = None + def Direct: ProjectileCalculations.Form = AmenityHitResistance.Calculate + def Splash: ProjectileCalculations.Form = AmenityHitResistance.Calculate + def Lash: ProjectileCalculations.Form = None + def Aggravated: ProjectileCalculations.Form = None } diff --git a/common/src/main/scala/net/psforever/objects/vital/StandardResolutions.scala b/common/src/main/scala/net/psforever/objects/vital/StandardResolutions.scala index ade516d3..fb5eb164 100644 --- a/common/src/main/scala/net/psforever/objects/vital/StandardResolutions.scala +++ b/common/src/main/scala/net/psforever/objects/vital/StandardResolutions.scala @@ -3,43 +3,49 @@ package net.psforever.objects.vital import net.psforever.objects.vital.resolution._ -object NoResolutions extends DamageResistCalculations( - ResolutionCalculations.NoDamage, - ResolutionCalculations.NoApplication -) +object NoResolutions + extends DamageResistCalculations( + ResolutionCalculations.NoDamage, + ResolutionCalculations.NoApplication + ) -object InfantryResolutions extends DamageResistCalculations( - ResolutionCalculations.InfantryDamageAfterResist, - ResolutionCalculations.InfantryApplication -) +object InfantryResolutions + extends DamageResistCalculations( + ResolutionCalculations.InfantryDamageAfterResist, + ResolutionCalculations.InfantryApplication + ) -object MaxResolutions extends DamageResistCalculations( - ResolutionCalculations.MaxDamageAfterResist, - ResolutionCalculations.InfantryApplication -) +object MaxResolutions + extends DamageResistCalculations( + ResolutionCalculations.MaxDamageAfterResist, + ResolutionCalculations.InfantryApplication + ) -object VehicleResolutions extends DamageResistCalculations( - ResolutionCalculations.VehicleDamageAfterResist, - ResolutionCalculations.VehicleApplication -) +object VehicleResolutions + extends DamageResistCalculations( + ResolutionCalculations.VehicleDamageAfterResist, + ResolutionCalculations.VehicleApplication + ) -object SimpleResolutions extends DamageResistCalculations( - ResolutionCalculations.VehicleDamageAfterResist, - ResolutionCalculations.SimpleApplication -) +object SimpleResolutions + extends DamageResistCalculations( + ResolutionCalculations.VehicleDamageAfterResist, + ResolutionCalculations.SimpleApplication + ) -object ComplexDeployableResolutions extends DamageResistCalculations( - ResolutionCalculations.VehicleDamageAfterResist, - ResolutionCalculations.ComplexDeployableApplication -) +object ComplexDeployableResolutions + extends DamageResistCalculations( + ResolutionCalculations.VehicleDamageAfterResist, + ResolutionCalculations.ComplexDeployableApplication + ) object StandardResolutions extends ResolutionSelection { - def Infantry : ResolutionCalculations.Form = InfantryResolutions.Calculate - def Max : ResolutionCalculations.Form = MaxResolutions.Calculate - def Vehicle : ResolutionCalculations.Form = VehicleResolutions.Calculate - def Aircraft : ResolutionCalculations.Form = VehicleResolutions.Calculate - def SimpleDeployables : ResolutionCalculations.Form = SimpleResolutions.Calculate - def ComplexDeployables : ResolutionCalculations.Form = ComplexDeployableResolutions.Calculate - def FacilityTurrets : ResolutionCalculations.Form = SimpleResolutions.Calculate - def Amenities : ResolutionCalculations.Form = SimpleResolutions.Calculate + def Infantry: ResolutionCalculations.Form = InfantryResolutions.Calculate + def Max: ResolutionCalculations.Form = MaxResolutions.Calculate + def Vehicle: ResolutionCalculations.Form = VehicleResolutions.Calculate + def Aircraft: ResolutionCalculations.Form = VehicleResolutions.Calculate + def SimpleDeployables: ResolutionCalculations.Form = SimpleResolutions.Calculate + def ComplexDeployables: ResolutionCalculations.Form = ComplexDeployableResolutions.Calculate + def FacilityTurrets: ResolutionCalculations.Form = SimpleResolutions.Calculate + def Amenities: ResolutionCalculations.Form = SimpleResolutions.Calculate } diff --git a/common/src/main/scala/net/psforever/objects/vital/Vitality.scala b/common/src/main/scala/net/psforever/objects/vital/Vitality.scala index ac4e2815..1721ab95 100644 --- a/common/src/main/scala/net/psforever/objects/vital/Vitality.scala +++ b/common/src/main/scala/net/psforever/objects/vital/Vitality.scala @@ -10,39 +10,39 @@ import net.psforever.objects.vital.resolution.ResolutionCalculations * The damage model is provided. */ trait Vitality extends VitalsHistory { - private var health : Int = Definition.DefaultHealth - private var defaultHealth : Option[Int] = None - private var maxHealth : Option[Int] = None + private var health: Int = Definition.DefaultHealth + private var defaultHealth: Option[Int] = None + private var maxHealth: Option[Int] = None - def Health : Int = health + def Health: Int = health - def Health_=(assignHealth : Int) : Int = { + def Health_=(assignHealth: Int): Int = { health = math.min(math.max(0, assignHealth), MaxHealth) Health } - def DefaultHealth : Int = defaultHealth.getOrElse(Definition.DefaultHealth) + def DefaultHealth: Int = defaultHealth.getOrElse(Definition.DefaultHealth) - def MaxHealth : Int = maxHealth.getOrElse(Definition.MaxHealth) + def MaxHealth: Int = maxHealth.getOrElse(Definition.MaxHealth) - def MaxHealth_=(default : Int) : Int = MaxHealth_=(Some(default)) + def MaxHealth_=(default: Int): Int = MaxHealth_=(Some(default)) - def MaxHealth_=(default : Option[Int]) : Int = { + def MaxHealth_=(default: Option[Int]): Int = { maxHealth = default MaxHealth } - def CanDamage : Boolean = { + def CanDamage: Boolean = { Definition.Damageable && Health > 0 } - def CanRepair : Boolean = { + def CanRepair: Boolean = { Definition.Repairable && Health < MaxHealth && (Health > 0 || Definition.RepairIfDestroyed) } - def DamageModel : DamageResistanceModel + def DamageModel: DamageResistanceModel - def Definition : VitalityDefinition + def Definition: VitalityDefinition } object Vitality { @@ -53,13 +53,13 @@ object Vitality { * upon a given vital object. * @param func a function literal */ - final case class Damage(func : ResolutionCalculations.Output) + final case class Damage(func: ResolutionCalculations.Output) - final case class DamageOn(obj : Vitality, func : ResolutionCalculations.Output) + final case class DamageOn(obj: Vitality, func: ResolutionCalculations.Output) /** * Report that a vitals object must be updated due to damage. * @param obj the vital object */ - final case class DamageResolution(obj : Vitality, cause : ResolvedProjectile) + final case class DamageResolution(obj: Vitality, cause: ResolvedProjectile) } diff --git a/common/src/main/scala/net/psforever/objects/vital/VitalityDefinition.scala b/common/src/main/scala/net/psforever/objects/vital/VitalityDefinition.scala index c0c74e90..d3177dd8 100644 --- a/common/src/main/scala/net/psforever/objects/vital/VitalityDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/vital/VitalityDefinition.scala @@ -8,123 +8,142 @@ package net.psforever.objects.vital * `0 <= DamageDestroysAt <= DamageDisablesAt < RepairRestoresAt <= MaxHealth`. */ trait VitalityDefinition { + /** the maximum amount of health that any of the objects can be allocated; - * corresponds to ADB property "maxhealth" */ - private var maxHealth : Int = 0 + * corresponds to ADB property "maxhealth" + */ + private var maxHealth: Int = 0 + /** the amount of health that all of the objects are spawned with; - * defaults to `MaxHealth` if unset */ - private var defaultHealth : Option[Int] = None + * defaults to `MaxHealth` if unset + */ + private var defaultHealth: Option[Int] = None - def MaxHealth : Int = maxHealth + def MaxHealth: Int = maxHealth - def MaxHealth_=(max : Int) : Int = { + def MaxHealth_=(max: Int): Int = { maxHealth = math.min(math.max(0, max), 65535) MaxHealth } - def DefaultHealth : Int = defaultHealth.getOrElse(MaxHealth) + def DefaultHealth: Int = defaultHealth.getOrElse(MaxHealth) - def DefaultHealth_=(default : Int) : Int = DefaultHealth_=(Some(default)) + def DefaultHealth_=(default: Int): Int = DefaultHealth_=(Some(default)) - def DefaultHealth_=(default : Option[Int]) : Int = { + def DefaultHealth_=(default: Option[Int]): Int = { defaultHealth = default DefaultHealth } /* damageable */ /** whether the object type accepts damage; - * corresponds to ABD property "damageable" */ - private var damageable : Boolean = false + * corresponds to ABD property "damageable" + */ + private var damageable: Boolean = false + /** whether the object type accepts damage from allied sources; - * corresponds to the opposite of ABD property "damage_immune_to_friendly_fire" */ - private var damageableByFriendlyFire : Boolean = true + * corresponds to the opposite of ABD property "damage_immune_to_friendly_fire" + */ + private var damageableByFriendlyFire: Boolean = true + /** at what `Health` value the object type is considered "destroyed" */ - private var damageDestroysAt : Int = 0 + private var damageDestroysAt: Int = 0 + /** at what `Health` value the object type is considered "disabled"; - * some object types do not have anything to disable and just transition between "not destroyed" and "destroyed" */ - private var damageDisablesAt : Option[Int] = None + * some object types do not have anything to disable and just transition between "not destroyed" and "destroyed" + */ + private var damageDisablesAt: Option[Int] = None - def Damageable : Boolean = damageable + def Damageable: Boolean = damageable - def Damageable_=(state : Boolean) : Boolean = { + def Damageable_=(state: Boolean): Boolean = { damageable = state Damageable } - def DamageableByFriendlyFire : Boolean = damageableByFriendlyFire + def DamageableByFriendlyFire: Boolean = damageableByFriendlyFire - def DamageableByFriendlyFire_=(state : Boolean) : Boolean = { + def DamageableByFriendlyFire_=(state: Boolean): Boolean = { damageableByFriendlyFire = state DamageableByFriendlyFire } - def DamageDisablesAt : Int = damageDisablesAt.getOrElse(MaxHealth/2) + def DamageDisablesAt: Int = damageDisablesAt.getOrElse(MaxHealth / 2) - def DamageDisablesAt_=(value : Int) : Int = DamageDisablesAt_=(Some(value)) + def DamageDisablesAt_=(value: Int): Int = DamageDisablesAt_=(Some(value)) - def DamageDisablesAt_=(value : Option[Int]) : Int = { + def DamageDisablesAt_=(value: Option[Int]): Int = { damageDisablesAt = value DamageDisablesAt } - def DamageDestroysAt : Int = damageDestroysAt + def DamageDestroysAt: Int = damageDestroysAt - def DamageDestroysAt_=(value : Int) : Int = { + def DamageDestroysAt_=(value: Int): Int = { damageDestroysAt = value DamageDestroysAt } /* repairable */ /** whether the object type accepts attempts to repair it with a nano dispenser tool; - * corresponds to ABD property "canberepairedbynanodispenser" */ - private var repairable : Boolean = false + * corresponds to ABD property "canberepairedbynanodispenser" + */ + private var repairable: Boolean = false + /** how far away a target can get before repairing is no longer possible; - * not exact in the least */ - private var repairDistance : Float = 5 + * not exact in the least + */ + private var repairDistance: Float = 5 + /** if the object type is damaged to the condition of "destroyed", - * is it possible to repair it back to the condition of "not destroyed" */ - private var repairIfDestroyed : Boolean = false + * is it possible to repair it back to the condition of "not destroyed" + */ + private var repairIfDestroyed: Boolean = false + /** at what `Health` value the object type is considered "not destroyed"; * this state is synonymous with "normal" or "functional"; - * as thus, it is opposite of both `damageDestroysAt` and `damageDisablesAt` */ - private var repairRestoresAt : Option[Int] = None + * as thus, it is opposite of both `damageDestroysAt` and `damageDisablesAt` + */ + private var repairRestoresAt: Option[Int] = None + /** object type specific modification value that chnages the base repair quality; - * treat as additive */ - private var repairMod : Int = 0 + * treat as additive + */ + private var repairMod: Int = 0 - def Repairable : Boolean = repairable + def Repairable: Boolean = repairable - def Repairable_=(repair : Boolean) : Boolean = { + def Repairable_=(repair: Boolean): Boolean = { repairable = repair Repairable } - def RepairDistance : Float = repairDistance + def RepairDistance: Float = repairDistance - def RepairDistance_=(distance : Float) : Float = { + def RepairDistance_=(distance: Float): Float = { repairDistance = math.max(0, distance) RepairDistance } - def RepairIfDestroyed : Boolean = repairIfDestroyed + def RepairIfDestroyed: Boolean = repairIfDestroyed - def RepairIfDestroyed_=(repair : Boolean) : Boolean = { + def RepairIfDestroyed_=(repair: Boolean): Boolean = { repairIfDestroyed = repair RepairIfDestroyed } - def RepairRestoresAt : Int = repairRestoresAt.getOrElse(MaxHealth/2) + def RepairRestoresAt: Int = repairRestoresAt.getOrElse(MaxHealth / 2) - def RepairRestoresAt_=(restore : Int) : Int = RepairRestoresAt_=(Some(restore)) + def RepairRestoresAt_=(restore: Int): Int = RepairRestoresAt_=(Some(restore)) - def RepairRestoresAt_=(restore : Option[Int]) : Int = { + def RepairRestoresAt_=(restore: Option[Int]): Int = { repairRestoresAt = restore RepairRestoresAt } - def RepairMod : Int = repairMod + def RepairMod: Int = repairMod - def RepairMod_=(mod : Int) : Int = { + def RepairMod_=(mod: Int): Int = { repairMod = mod RepairMod } diff --git a/common/src/main/scala/net/psforever/objects/vital/VitalsHistory.scala b/common/src/main/scala/net/psforever/objects/vital/VitalsHistory.scala index 5a6e0373..d167db70 100644 --- a/common/src/main/scala/net/psforever/objects/vital/VitalsHistory.scala +++ b/common/src/main/scala/net/psforever/objects/vital/VitalsHistory.scala @@ -7,42 +7,56 @@ import net.psforever.objects.serverobject.painbox.Painbox import net.psforever.objects.serverobject.terminals.TerminalDefinition import net.psforever.types.{ExoSuitType, ImplantType} -abstract class VitalsActivity(target : SourceEntry) { - def Target : SourceEntry = target - val t : Long = System.nanoTime //??? +abstract class VitalsActivity(target: SourceEntry) { + def Target: SourceEntry = target + val t: Long = System.nanoTime //??? - def time : Long = t + def time: Long = t } -abstract class HealingActivity(target : SourceEntry) extends VitalsActivity(target) +abstract class HealingActivity(target: SourceEntry) extends VitalsActivity(target) -abstract class DamagingActivity(target : SourceEntry) extends VitalsActivity(target) +abstract class DamagingActivity(target: SourceEntry) extends VitalsActivity(target) -final case class HealFromKit(target : PlayerSource, amount : Int, kit_def : KitDefinition) extends HealingActivity(target) +final case class HealFromKit(target: PlayerSource, amount: Int, kit_def: KitDefinition) extends HealingActivity(target) -final case class HealFromEquipment(target : PlayerSource, user : PlayerSource, amount : Int, equipment_def : EquipmentDefinition) extends HealingActivity(target) +final case class HealFromEquipment( + target: PlayerSource, + user: PlayerSource, + amount: Int, + equipment_def: EquipmentDefinition +) extends HealingActivity(target) -final case class HealFromTerm(target : PlayerSource, health : Int, armor : Int, term_def : TerminalDefinition) extends HealingActivity(target) +final case class HealFromTerm(target: PlayerSource, health: Int, armor: Int, term_def: TerminalDefinition) + extends HealingActivity(target) -final case class HealFromImplant(target : PlayerSource, amount : Int, implant : ImplantType.Value) extends HealingActivity(target) +final case class HealFromImplant(target: PlayerSource, amount: Int, implant: ImplantType.Value) + extends HealingActivity(target) -final case class HealFromExoSuitChange(target : PlayerSource, exosuit : ExoSuitType.Value) extends HealingActivity(target) +final case class HealFromExoSuitChange(target: PlayerSource, exosuit: ExoSuitType.Value) extends HealingActivity(target) -final case class RepairFromKit(target : PlayerSource, amount : Int, kit_def : KitDefinition) extends HealingActivity(target) +final case class RepairFromKit(target: PlayerSource, amount: Int, kit_def: KitDefinition) + extends HealingActivity(target) -final case class RepairFromEquipment(target : PlayerSource, user : PlayerSource, amount : Int, equipment_def : EquipmentDefinition) extends HealingActivity(target) +final case class RepairFromEquipment( + target: PlayerSource, + user: PlayerSource, + amount: Int, + equipment_def: EquipmentDefinition +) extends HealingActivity(target) -final case class RepairFromTerm(target : VehicleSource, amount : Int, term_def : TerminalDefinition) extends HealingActivity(target) +final case class RepairFromTerm(target: VehicleSource, amount: Int, term_def: TerminalDefinition) + extends HealingActivity(target) -final case class VehicleShieldCharge(target : VehicleSource, amount : Int) extends HealingActivity(target) //TODO facility +final case class VehicleShieldCharge(target: VehicleSource, amount: Int) extends HealingActivity(target) //TODO facility -final case class DamageFromProjectile(data : ResolvedProjectile) extends DamagingActivity(data.target) +final case class DamageFromProjectile(data: ResolvedProjectile) extends DamagingActivity(data.target) -final case class DamageFromPainbox(target : PlayerSource, painbox : Painbox, damage : Int) extends DamagingActivity(target) +final case class DamageFromPainbox(target: PlayerSource, painbox: Painbox, damage: Int) extends DamagingActivity(target) -final case class PlayerSuicide(target : PlayerSource) extends DamagingActivity(target) +final case class PlayerSuicide(target: PlayerSource) extends DamagingActivity(target) -final case class DamageFromExplosion(target : PlayerSource, cause : ObjectDefinition) extends DamagingActivity(target) +final case class DamageFromExplosion(target: PlayerSource, cause: ObjectDefinition) extends DamagingActivity(target) /** * A vital object can be hurt or damaged or healed or repaired (HDHR). @@ -50,10 +64,11 @@ final case class DamageFromExplosion(target : PlayerSource, cause : ObjectDefini * in reverse chronological order. */ trait VitalsHistory { + /** a reverse-order list of chronological events that have occurred to these vital statistics */ - private var vitalsHistory : List[VitalsActivity] = List.empty[VitalsActivity] + private var vitalsHistory: List[VitalsActivity] = List.empty[VitalsActivity] - def History : List[VitalsActivity] = vitalsHistory + def History: List[VitalsActivity] = vitalsHistory /** * A `VitalsActivity` event must be recorded. @@ -61,7 +76,7 @@ trait VitalsHistory { * @param action the fully-informed entry * @return the list of previous changes to this object's vital statistics */ - def History(action : VitalsActivity) : List[VitalsActivity] = History(Some(action)) + def History(action: VitalsActivity): List[VitalsActivity] = History(Some(action)) /** * A `VitalsActivity` event must be recorded. @@ -69,7 +84,7 @@ trait VitalsHistory { * @param action the fully-informed entry * @return the list of previous changes to this object's vital statistics */ - def History(action : Option[VitalsActivity]) : List[VitalsActivity] = { + def History(action: Option[VitalsActivity]): List[VitalsActivity] = { action match { case Some(act) => vitalsHistory = act +: vitalsHistory @@ -83,7 +98,7 @@ trait VitalsHistory { * @param projectile the fully-informed entry of discharge of a weapon * @return the list of previous changes to this object's vital statistics */ - def History(projectile : ResolvedProjectile) : List[VitalsActivity] = { + def History(projectile: ResolvedProjectile): List[VitalsActivity] = { vitalsHistory = DamageFromProjectile(projectile) +: vitalsHistory vitalsHistory } @@ -92,16 +107,16 @@ trait VitalsHistory { * Find, specifically, the last instance of a weapon discharge vital statistics change. * @return information about the discharge */ - def LastShot : Option[ResolvedProjectile] = { - vitalsHistory.find({p => p.isInstanceOf[DamageFromProjectile]}) match { - case Some(entry : DamageFromProjectile) => + def LastShot: Option[ResolvedProjectile] = { + vitalsHistory.find({ p => p.isInstanceOf[DamageFromProjectile] }) match { + case Some(entry: DamageFromProjectile) => Some(entry.data) case _ => None } } - def ClearHistory() : List[VitalsActivity] = { + def ClearHistory(): List[VitalsActivity] = { val out = vitalsHistory vitalsHistory = List.empty[VitalsActivity] out diff --git a/common/src/main/scala/net/psforever/objects/vital/damage/DamageCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/damage/DamageCalculations.scala index 971967f4..7a7fad0b 100644 --- a/common/src/main/scala/net/psforever/objects/vital/damage/DamageCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/damage/DamageCalculations.scala @@ -17,21 +17,20 @@ import DamageCalculations._ * @param extractor function that recovers damage information * @param distanceFunc a function to calculate the distance for scaling the damage, if valid */ -abstract class DamageCalculations(damages : DamagesType, - extractor : DamageWithModifiersType, - distanceFunc : DistanceType) extends ProjectileCalculations { +abstract class DamageCalculations(damages: DamagesType, extractor: DamageWithModifiersType, distanceFunc: DistanceType) + extends ProjectileCalculations { + /** * Combine the damage and distance data extracted from the `ResolvedProjectile` entry. * @param data the historical `ResolvedProjectile` information * @return the damage value */ - def Calculate(data : ResolvedProjectile) : Int = { + def Calculate(data: ResolvedProjectile): Int = { val projectile = data.projectile - val profile = projectile.profile - val modifiers = if(profile.UseDamage1Subtract) { + val profile = projectile.profile + val modifiers = if (profile.UseDamage1Subtract) { List(projectile.fire_mode.Modifiers, data.target.Modifiers.Subtract) - } - else { + } else { List(projectile.fire_mode.Modifiers) } damages( @@ -44,22 +43,22 @@ abstract class DamageCalculations(damages : DamagesType, object DamageCalculations { //types - type DamagesType = (Projectile, Int, Float)=>Int - type DamageWithModifiersType = (DamageProfile, List[DamageProfile])=>Int - type DistanceType = ResolvedProjectile=>Float + type DamagesType = (Projectile, Int, Float) => Int + type DamageWithModifiersType = (DamageProfile, List[DamageProfile]) => Int + type DistanceType = ResolvedProjectile => Float //raw damage selectors - def NoDamageAgainst(profile : DamageProfile) : Int = 0 + def NoDamageAgainst(profile: DamageProfile): Int = 0 - def DamageAgainstExoSuit(profile : DamageProfile) : Int = profile.Damage0 + def DamageAgainstExoSuit(profile: DamageProfile): Int = profile.Damage0 - def DamageAgainstVehicle(profile : DamageProfile) : Int = profile.Damage1 + def DamageAgainstVehicle(profile: DamageProfile): Int = profile.Damage1 - def DamageAgainstAircraft(profile : DamageProfile) : Int = profile.Damage2 + def DamageAgainstAircraft(profile: DamageProfile): Int = profile.Damage2 - def DamageAgainstMaxSuit(profile : DamageProfile) : Int = profile.Damage3 + def DamageAgainstMaxSuit(profile: DamageProfile): Int = profile.Damage3 - def DamageAgainstBFR(profile : DamageProfile) : Int = profile.Damage4 + def DamageAgainstBFR(profile: DamageProfile): Int = profile.Damage4 //raw damage selection functions /** @@ -70,12 +69,12 @@ object DamageCalculations { * @return the accumulated damage value */ //TODO modifiers come from various sources; expand this part of the calculation model in the future - def DamageWithModifiers(extractor : DamageProfile=>Int)(base : DamageProfile, modifiers : List[DamageProfile]) : Int = { + def DamageWithModifiers(extractor: DamageProfile => Int)(base: DamageProfile, modifiers: List[DamageProfile]): Int = { extractor(base) + modifiers.foldLeft(0)(_ + extractor(_)) } //damage calculation functions - def NoDamage(projectile : Projectile, rawDamage : Int, distance : Float) : Int = 0 + def NoDamage(projectile: Projectile, rawDamage: Int, distance: Float): Int = 0 /** * Use an unmodified damage value. @@ -86,7 +85,7 @@ object DamageCalculations { * unused * @return the rawDamage value */ - def SameHit(projectile : Projectile, rawDamage : Int, distance : Float) : Int = rawDamage + def SameHit(projectile: Projectile, rawDamage: Int, distance: Float): Int = rawDamage /** * Modify the base damage based on the degrade distance of the projectile type @@ -97,17 +96,15 @@ object DamageCalculations { * @param distance how far the source was from the target * @return the modified damage value */ - def DirectHitDamageWithDegrade(projectile : Projectile, rawDamage: Int, distance: Float): Int = { + def DirectHitDamageWithDegrade(projectile: Projectile, rawDamage: Int, distance: Float): Int = { val profile = projectile.profile - if(distance <= profile.DistanceMax) { - if(profile.DistanceNoDegrade == profile.DistanceMax || distance <= profile.DistanceNoDegrade) { + if (distance <= profile.DistanceMax) { + if (profile.DistanceNoDegrade == profile.DistanceMax || distance <= profile.DistanceNoDegrade) { rawDamage - } - else { + } else { rawDamage - ((rawDamage - profile.DegradeMultiplier * rawDamage) * ((distance - profile.DistanceNoDegrade) / (profile.DistanceMax - profile.DistanceNoDegrade))).toInt } - } - else { + } else { 0 } } @@ -120,14 +117,13 @@ object DamageCalculations { * @param distance how far the origin of the explosion was from the target * @return the modified damage value */ - def SplashDamageWithRadialDegrade(projectile : Projectile, rawDamage : Int, distance : Float) : Int = { + def SplashDamageWithRadialDegrade(projectile: Projectile, rawDamage: Int, distance: Float): Int = { val radius = projectile.profile.DamageRadius - if(distance <= radius) { - val base : Float = projectile.profile.DamageAtEdge - val degrade : Float = (1 - base) * ((radius - distance)/radius) + base + if (distance <= radius) { + val base: Float = projectile.profile.DamageAtEdge + val degrade: Float = (1 - base) * ((radius - distance) / radius) + base (rawDamage * degrade).toInt - } - else { + } else { 0 } } @@ -142,31 +138,30 @@ object DamageCalculations { * @param distance how far the source was from the target * @return the modified damage value */ - def LashDamage(projectile : Projectile, rawDamage : Int, distance : Float) : Int = { - if(distance > 5) { + def LashDamage(projectile: Projectile, rawDamage: Int, distance: Float): Int = { + if (distance > 5) { (DirectHitDamageWithDegrade(projectile, rawDamage, math.max(distance - 5, 0f)) * 0.2f) toInt - } - else { + } else { 0 } } //distance functions - def NoDistance(data : ResolvedProjectile) : Float = 0 + def NoDistance(data: ResolvedProjectile): Float = 0 - def TooFar(data : ResolvedProjectile) : Float = Float.MaxValue + def TooFar(data: ResolvedProjectile): Float = Float.MaxValue - def DistanceBetweenTargetandSource(data : ResolvedProjectile) : Float = { + def DistanceBetweenTargetandSource(data: ResolvedProjectile): Float = { //Vector3.Distance(data.target.Position, data.projectile.owner.Position) DistanceBetweenOriginAndImpact(data) } - def DistanceFromExplosionToTarget(data : ResolvedProjectile) : Float = { + def DistanceFromExplosionToTarget(data: ResolvedProjectile): Float = { math.max(Vector3.Distance(data.target.Position, data.hit_pos) - 1, 0) //DistanceBetweenOriginAndImpact(data) } - def DistanceBetweenOriginAndImpact(data : ResolvedProjectile) : Float = { + def DistanceBetweenOriginAndImpact(data: ResolvedProjectile): Float = { math.max(Vector3.Distance(data.projectile.shot_origin, data.hit_pos) - 0.5f, 0) } } diff --git a/common/src/main/scala/net/psforever/objects/vital/damage/DamageProfile.scala b/common/src/main/scala/net/psforever/objects/vital/damage/DamageProfile.scala index a5d16836..1b3a353d 100644 --- a/common/src/main/scala/net/psforever/objects/vital/damage/DamageProfile.scala +++ b/common/src/main/scala/net/psforever/objects/vital/damage/DamageProfile.scala @@ -6,28 +6,34 @@ package net.psforever.objects.vital.damage * In the same way, the five damage modifiers that are applied to the same kind of damage. */ trait DamageProfile { + /** `damage0` is for basic infantry */ - def Damage0 : Int + def Damage0: Int + /** `damage0` is for basic infantry */ - def Damage0_=(damage : Int) : Int + def Damage0_=(damage: Int): Int /** `damage1` is for armor, amenities, deployables, etc. */ - def Damage1 : Int + def Damage1: Int + /** `damage1` is for armor, amenities, deployables, etc. */ - def Damage1_=(damage : Int) : Int + def Damage1_=(damage: Int): Int /** `damage2` if for aircraft */ - def Damage2 : Int + def Damage2: Int + /** `damage2` if for aircraft */ - def Damage2_=(damage : Int) : Int + def Damage2_=(damage: Int): Int /** `damage3` is for mechanized infantry */ - def Damage3 : Int + def Damage3: Int + /** `damage3` is for mechanized infantry */ - def Damage3_=(damage : Int) : Int + def Damage3_=(damage: Int): Int /** `damage4` is for battleframe robotics */ - def Damage4 : Int + def Damage4: Int + /** `damage4` is for battleframe robotics */ - def Damage4_=(damage : Int) : Int + def Damage4_=(damage: Int): Int } diff --git a/common/src/main/scala/net/psforever/objects/vital/damage/DamageSelection.scala b/common/src/main/scala/net/psforever/objects/vital/damage/DamageSelection.scala index 9ecd9b41..b6c5781d 100644 --- a/common/src/main/scala/net/psforever/objects/vital/damage/DamageSelection.scala +++ b/common/src/main/scala/net/psforever/objects/vital/damage/DamageSelection.scala @@ -10,23 +10,25 @@ import net.psforever.objects.vital.projectile.ProjectileCalculations * and a means to test which calculation is valid in a given situation. */ trait DamageSelection { - final def None : ProjectileCalculations.Form = NoDamage.Calculate + final def None: ProjectileCalculations.Form = NoDamage.Calculate - def Direct : ProjectileCalculations.Form - def Splash : ProjectileCalculations.Form - def Lash : ProjectileCalculations.Form + def Direct: ProjectileCalculations.Form + def Splash: ProjectileCalculations.Form + def Lash: ProjectileCalculations.Form - def apply(data : ResolvedProjectile) : ProjectileCalculations.Form = data.resolution match { - case ProjectileResolution.Hit => Direct - case ProjectileResolution.Splash => Splash - case ProjectileResolution.Lash => Lash - case _ => None - } + def apply(data: ResolvedProjectile): ProjectileCalculations.Form = + data.resolution match { + case ProjectileResolution.Hit => Direct + case ProjectileResolution.Splash => Splash + case ProjectileResolution.Lash => Lash + case _ => None + } - def apply(res : ProjectileResolution.Value) : ProjectileCalculations.Form = res match { - case ProjectileResolution.Hit => Direct - case ProjectileResolution.Splash => Splash - case ProjectileResolution.Lash => Lash - case _ => None - } + def apply(res: ProjectileResolution.Value): ProjectileCalculations.Form = + res match { + case ProjectileResolution.Hit => Direct + case ProjectileResolution.Splash => Splash + case ProjectileResolution.Lash => Lash + case _ => None + } } diff --git a/common/src/main/scala/net/psforever/objects/vital/projectile/ProjectileCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/projectile/ProjectileCalculations.scala index 28f8d060..7555bf9e 100644 --- a/common/src/main/scala/net/psforever/objects/vital/projectile/ProjectileCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/projectile/ProjectileCalculations.scala @@ -7,14 +7,15 @@ import net.psforever.objects.ballistics.ResolvedProjectile * The base for all projectile-induced damage calculation function literals. */ trait ProjectileCalculations { + /** * The exposed entry for the calculation function literal defined by this base. * @param data the historical `ResolvedProjectile` information * @return the calculated value */ - def Calculate(data : ResolvedProjectile) : Int + def Calculate(data: ResolvedProjectile): Int } object ProjectileCalculations { - type Form = (ResolvedProjectile)=>Int + type Form = (ResolvedProjectile) => Int } diff --git a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceCalculations.scala index 5b5b78eb..ec0fed06 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceCalculations.scala @@ -25,14 +25,17 @@ import scala.util.{Failure, Success, Try} * in essence, should match the type of object container to which these resistances belong; * never has to be defined explicitly, but will be checked upon object definition */ -abstract class ResistanceCalculations[TargetType](validate : ResolvedProjectile=>Try[TargetType], - extractor : TargetType=>Int) extends ProjectileCalculations { +abstract class ResistanceCalculations[TargetType]( + validate: ResolvedProjectile => Try[TargetType], + extractor: TargetType => Int +) extends ProjectileCalculations { + /** * Get resistance valuess. * @param data the historical `ResolvedProjectile` information * @return the damage value */ - def Calculate(data : ResolvedProjectile) : Int = { + def Calculate(data: ResolvedProjectile): Int = { validate(data) match { case Success(target) => extractor(target) @@ -43,18 +46,17 @@ abstract class ResistanceCalculations[TargetType](validate : ResolvedProjectile= } object ResistanceCalculations { - private def failure(typeName : String) = Failure(new Exception(s"can not match expected target $typeName")) + private def failure(typeName: String) = Failure(new Exception(s"can not match expected target $typeName")) //target identification - def InvalidTarget(data : ResolvedProjectile) : Try[SourceEntry] = failure(s"invalid ${data.target.Definition.Name}") + def InvalidTarget(data: ResolvedProjectile): Try[SourceEntry] = failure(s"invalid ${data.target.Definition.Name}") - def ValidInfantryTarget(data : ResolvedProjectile) : Try[PlayerSource] = { + def ValidInfantryTarget(data: ResolvedProjectile): Try[PlayerSource] = { data.target match { - case target : PlayerSource => - if(target.ExoSuit != ExoSuitType.MAX) { //max is not counted as an official infantry exo-suit type + case target: PlayerSource => + if (target.ExoSuit != ExoSuitType.MAX) { //max is not counted as an official infantry exo-suit type Success(target) - } - else { + } else { failure("infantry") } case _ => @@ -62,13 +64,12 @@ object ResistanceCalculations { } } - def ValidMaxTarget(data : ResolvedProjectile) : Try[PlayerSource] = { + def ValidMaxTarget(data: ResolvedProjectile): Try[PlayerSource] = { data.target match { - case target : PlayerSource => - if(target.ExoSuit == ExoSuitType.MAX) { + case target: PlayerSource => + if (target.ExoSuit == ExoSuitType.MAX) { Success(target) - } - else { + } else { failure("max") } case _ => @@ -76,13 +77,12 @@ object ResistanceCalculations { } } - def ValidVehicleTarget(data : ResolvedProjectile) : Try[VehicleSource] = { + def ValidVehicleTarget(data: ResolvedProjectile): Try[VehicleSource] = { data.target match { - case target : VehicleSource => - if(!GlobalDefinitions.isFlightVehicle(target.Definition)) { + case target: VehicleSource => + if (!GlobalDefinitions.isFlightVehicle(target.Definition)) { Success(target) - } - else { + } else { failure("vehicle") } case _ => @@ -90,13 +90,12 @@ object ResistanceCalculations { } } - def ValidAircraftTarget(data : ResolvedProjectile) : Try[VehicleSource] = { + def ValidAircraftTarget(data: ResolvedProjectile): Try[VehicleSource] = { data.target match { - case target : VehicleSource => - if(GlobalDefinitions.isFlightVehicle(target.Definition)) { + case target: VehicleSource => + if (GlobalDefinitions.isFlightVehicle(target.Definition)) { Success(target) - } - else { + } else { failure("aircraft") } case _ => @@ -104,13 +103,12 @@ object ResistanceCalculations { } } - def ValidAmenityTarget(data : ResolvedProjectile) : Try[ObjectSource] = { + def ValidAmenityTarget(data: ResolvedProjectile): Try[ObjectSource] = { data.target match { - case target : ObjectSource => - if(target.obj.isInstanceOf[Amenity]) { + case target: ObjectSource => + if (target.obj.isInstanceOf[Amenity]) { Success(target) - } - else { + } else { failure("something else") } case _ => @@ -119,27 +117,33 @@ object ResistanceCalculations { } //extractors - def NoResistExtractor(target : SourceEntry) : Int = 0 + def NoResistExtractor(target: SourceEntry): Int = 0 - def ExoSuitDirectExtractor(target : PlayerSource) : Int = ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceDirectHit + def ExoSuitDirectExtractor(target: PlayerSource): Int = + ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceDirectHit - def ExoSuitSplashExtractor(target : PlayerSource) : Int = ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceSplash + def ExoSuitSplashExtractor(target: PlayerSource): Int = + ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceSplash - def ExoSuitAggravatedExtractor(target : PlayerSource) : Int = ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceAggravated + def ExoSuitAggravatedExtractor(target: PlayerSource): Int = + ExoSuitDefinition.Select(target.ExoSuit, target.Faction).ResistanceAggravated - def ExoSuitRadiationExtractor(target : PlayerSource) : Float = ExoSuitDefinition.Select(target.ExoSuit, target.Faction).RadiationShielding + def ExoSuitRadiationExtractor(target: PlayerSource): Float = + ExoSuitDefinition.Select(target.ExoSuit, target.Faction).RadiationShielding - def VehicleDirectExtractor(target : VehicleSource) : Int = target.Definition.ResistanceDirectHit + def VehicleDirectExtractor(target: VehicleSource): Int = target.Definition.ResistanceDirectHit - def VehicleSplashExtractor(target : VehicleSource) : Int = target.Definition.ResistanceSplash + def VehicleSplashExtractor(target: VehicleSource): Int = target.Definition.ResistanceSplash - def VehicleAggravatedExtractor(target : VehicleSource) : Int = target.Definition.ResistanceAggravated + def VehicleAggravatedExtractor(target: VehicleSource): Int = target.Definition.ResistanceAggravated - def VehicleRadiationExtractor(target : VehicleSource) : Float = target.Definition.RadiationShielding + def VehicleRadiationExtractor(target: VehicleSource): Float = target.Definition.RadiationShielding - def OtherDirectExtractor(target : ObjectSource) : Int = target.Definition.asInstanceOf[ResistanceProfile].ResistanceDirectHit + def OtherDirectExtractor(target: ObjectSource): Int = + target.Definition.asInstanceOf[ResistanceProfile].ResistanceDirectHit - def OtherSplashExtractor(target : ObjectSource) : Int = target.Definition.asInstanceOf[ResistanceProfile].ResistanceSplash + def OtherSplashExtractor(target: ObjectSource): Int = + target.Definition.asInstanceOf[ResistanceProfile].ResistanceSplash - def MaximumResistance(target : SourceEntry) : Int = Integer.MAX_VALUE + def MaximumResistance(target: SourceEntry): Int = Integer.MAX_VALUE } diff --git a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceProfile.scala b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceProfile.scala index f24af41d..6f507c2f 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceProfile.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceProfile.scala @@ -10,23 +10,23 @@ import net.psforever.objects.vital.{DamageType, StandardDamageProfile} * This is for defining pure accessor functions. */ trait ResistanceProfile { - def Subtract : DamageProfile + def Subtract: DamageProfile - def ResistanceDirectHit : Int + def ResistanceDirectHit: Int - def ResistanceSplash : Int + def ResistanceSplash: Int - def ResistanceAggravated : Int + def ResistanceAggravated: Int - def RadiationShielding : Float + def RadiationShielding: Float - def Resist(dtype : DamageType.Value) : Float = { + def Resist(dtype: DamageType.Value): Float = { dtype match { - case DamageType.Direct => ResistanceDirectHit.toFloat - case DamageType.Splash => ResistanceSplash.toFloat + case DamageType.Direct => ResistanceDirectHit.toFloat + case DamageType.Splash => ResistanceSplash.toFloat case DamageType.Aggravated => ResistanceAggravated.toFloat - case DamageType.Radiation => RadiationShielding - case _ => 0f + case DamageType.Radiation => RadiationShielding + case _ => 0f } } } @@ -37,49 +37,49 @@ trait ResistanceProfile { * This is for defining both accessor and mutator functions. */ trait ResistanceProfileMutators extends ResistanceProfile { - private var subtract : DamageProfile = new StandardDamageProfile { + private var subtract: DamageProfile = new StandardDamageProfile { //subtract numbers are always negative modifiers - override def Damage0_=(damage : Int) : Int = super.Damage0_=( if(damage < 1) damage else -damage) + override def Damage0_=(damage: Int): Int = super.Damage0_=(if (damage < 1) damage else -damage) - override def Damage1_=(damage : Int) : Int = super.Damage1_=( if(damage < 1) damage else -damage) + override def Damage1_=(damage: Int): Int = super.Damage1_=(if (damage < 1) damage else -damage) - override def Damage2_=(damage : Int) : Int = super.Damage2_=( if(damage < 1) damage else -damage) + override def Damage2_=(damage: Int): Int = super.Damage2_=(if (damage < 1) damage else -damage) - override def Damage3_=(damage : Int) : Int = super.Damage3_=( if(damage < 1) damage else -damage) + override def Damage3_=(damage: Int): Int = super.Damage3_=(if (damage < 1) damage else -damage) - override def Damage4_=(damage : Int) : Int = super.Damage4_=( if(damage < 1) damage else -damage) + override def Damage4_=(damage: Int): Int = super.Damage4_=(if (damage < 1) damage else -damage) } - private var resistanceDirectHit : Int = 0 - private var resistanceSplash : Int = 0 - private var resistanceAggravated : Int = 0 - private var radiationShielding : Float = 0f + private var resistanceDirectHit: Int = 0 + private var resistanceSplash: Int = 0 + private var resistanceAggravated: Int = 0 + private var radiationShielding: Float = 0f - def Subtract : DamageProfile = subtract + def Subtract: DamageProfile = subtract - def ResistanceDirectHit : Int = resistanceDirectHit + def ResistanceDirectHit: Int = resistanceDirectHit - def ResistanceDirectHit_=(resist : Int) : Int = { + def ResistanceDirectHit_=(resist: Int): Int = { resistanceDirectHit = resist ResistanceDirectHit } - def ResistanceSplash : Int = resistanceSplash + def ResistanceSplash: Int = resistanceSplash - def ResistanceSplash_=(resist : Int) : Int = { + def ResistanceSplash_=(resist: Int): Int = { resistanceSplash = resist ResistanceSplash } - def ResistanceAggravated : Int = resistanceAggravated + def ResistanceAggravated: Int = resistanceAggravated - def ResistanceAggravated_=(resist : Int) : Int = { + def ResistanceAggravated_=(resist: Int): Int = { resistanceAggravated = resist ResistanceAggravated } - def RadiationShielding : Float = radiationShielding + def RadiationShielding: Float = radiationShielding - def RadiationShielding_=(resist : Float) : Float = { + def RadiationShielding_=(resist: Float): Float = { radiationShielding = resist RadiationShielding } diff --git a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceSelection.scala b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceSelection.scala index 36c9736e..ea889e1b 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceSelection.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resistance/ResistanceSelection.scala @@ -10,24 +10,26 @@ import net.psforever.objects.vital.projectile.ProjectileCalculations * and a means to test which calculation is valid in a given situation. */ trait ResistanceSelection { - final def None : ProjectileCalculations.Form = NoResistance.Calculate + final def None: ProjectileCalculations.Form = NoResistance.Calculate - def Direct : ProjectileCalculations.Form - def Splash : ProjectileCalculations.Form - def Lash : ProjectileCalculations.Form - def Aggravated : ProjectileCalculations.Form + def Direct: ProjectileCalculations.Form + def Splash: ProjectileCalculations.Form + def Lash: ProjectileCalculations.Form + def Aggravated: ProjectileCalculations.Form - def apply(data : ResolvedProjectile) : ProjectileCalculations.Form = data.resolution match { - case ProjectileResolution.Hit => Direct - case ProjectileResolution.Splash => Splash - case ProjectileResolution.Lash => Lash - case _ => None - } + def apply(data: ResolvedProjectile): ProjectileCalculations.Form = + data.resolution match { + case ProjectileResolution.Hit => Direct + case ProjectileResolution.Splash => Splash + case ProjectileResolution.Lash => Lash + case _ => None + } - def apply(res : ProjectileResolution.Value) : ProjectileCalculations.Form = res match { - case ProjectileResolution.Hit => Direct - case ProjectileResolution.Splash => Splash - case ProjectileResolution.Lash => Lash - case _ => None - } + def apply(res: ProjectileResolution.Value): ProjectileCalculations.Form = + res match { + case ProjectileResolution.Hit => Direct + case ProjectileResolution.Splash => Splash + case ProjectileResolution.Lash => Lash + case _ => None + } } diff --git a/common/src/main/scala/net/psforever/objects/vital/resolution/DamageResistCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/resolution/DamageResistCalculations.scala index bc8527ff..df8e5c60 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resolution/DamageResistCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resolution/DamageResistCalculations.scala @@ -14,10 +14,15 @@ import net.psforever.objects.vital.projectile.ProjectileCalculations * @tparam A an internal type that converts between `calcFunc`'s output and `applyFunc`'s input; * never has to be defined explicitly, but will be checked upon object definition */ -abstract class DamageResistCalculations[A](calcFunc : ResolvedProjectile=>(Int, Int)=>A, - applyFunc : (A, ResolvedProjectile)=>ResolutionCalculations.Output) - extends ResolutionCalculations { - def Calculate(damages : ProjectileCalculations.Form, resistances : ProjectileCalculations.Form, data : ResolvedProjectile) : ResolutionCalculations.Output = { +abstract class DamageResistCalculations[A]( + calcFunc: ResolvedProjectile => (Int, Int) => A, + applyFunc: (A, ResolvedProjectile) => ResolutionCalculations.Output +) extends ResolutionCalculations { + def Calculate( + damages: ProjectileCalculations.Form, + resistances: ProjectileCalculations.Form, + data: ResolvedProjectile + ): ResolutionCalculations.Output = { val modDam = Sample(damages, resistances, data) applyFunc(modDam, data) } @@ -31,10 +36,14 @@ abstract class DamageResistCalculations[A](calcFunc : ResolvedProjectile=>(Int, * @return the transitory form of the modified damage(s); * usually, a single `Int` value or a tuple of `Int` values */ - def Sample(damages : ProjectileCalculations.Form, resistances : ProjectileCalculations.Form, data : ResolvedProjectile) : A = { - val dam : Int = damages(data) - val res : Int = resistances(data) - val mod = calcFunc(data) + def Sample( + damages: ProjectileCalculations.Form, + resistances: ProjectileCalculations.Form, + data: ResolvedProjectile + ): A = { + val dam: Int = damages(data) + val res: Int = resistances(data) + val mod = calcFunc(data) mod(dam, res) } } diff --git a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala index a0b566b7..1c071a7f 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala @@ -16,6 +16,7 @@ import net.psforever.types.ImplantType * The base for the combining step of all projectile-induced damage calculation function literals. */ trait ResolutionCalculations { + /** * The exposed entry for the calculation function literal defined by this base. * @param damages the function literal that accumulates and calculates damages @@ -23,71 +24,68 @@ trait ResolutionCalculations { * @param data the historical `ResolvedProjectile` information * @return a function literal that encapsulates delayed modification instructions for certain objects */ - def Calculate(damages : ProjectileCalculations.Form, resistances : ProjectileCalculations.Form, data : ResolvedProjectile) : ResolutionCalculations.Output + def Calculate( + damages: ProjectileCalculations.Form, + resistances: ProjectileCalculations.Form, + data: ResolvedProjectile + ): ResolutionCalculations.Output } object ResolutionCalculations { - type Output = Any=>ResolvedProjectile - type Form = (ProjectileCalculations.Form, ProjectileCalculations.Form, ResolvedProjectile)=>Output + type Output = Any => ResolvedProjectile + type Form = (ProjectileCalculations.Form, ProjectileCalculations.Form, ResolvedProjectile) => Output - def NoDamage(data : ResolvedProjectile)(a : Int, b : Int) : Int = 0 + def NoDamage(data: ResolvedProjectile)(a: Int, b: Int): Int = 0 - def InfantryDamageAfterResist(data : ResolvedProjectile) : (Int, Int)=>(Int, Int) = { + def InfantryDamageAfterResist(data: ResolvedProjectile): (Int, Int) => (Int, Int) = { data.target match { - case target : PlayerSource => + case target: PlayerSource => InfantryDamageAfterResist(target.health, target.armor) case _ => InfantryDamageAfterResist(0, 0) } } - def InfantryDamageAfterResist(currentHP : Int, currentArmor : Int)(damages : Int, resistance : Int) : (Int, Int) = { - if(damages > 0 && currentHP > 0) { - if(currentArmor <= 0) { + def InfantryDamageAfterResist(currentHP: Int, currentArmor: Int)(damages: Int, resistance: Int): (Int, Int) = { + if (damages > 0 && currentHP > 0) { + if (currentArmor <= 0) { (damages, 0) //no armor; health damage - } - else if(damages > resistance) { + } else if (damages > resistance) { val resistedDam = damages - resistance //(resistedDam, resistance) - if(resistance <= currentArmor) { + if (resistance <= currentArmor) { (resistedDam, resistance) //armor and health damage - } - else { + } else { (resistedDam + (resistance - currentArmor), currentArmor) //deplete armor; health damage + bonus } - } - else { + } else { (0, damages) //too weak; armor damage (less than resistance) } - } - else { + } else { (0, 0) //no damage } } - def MaxDamageAfterResist(data : ResolvedProjectile) : (Int, Int)=>(Int, Int) = { + def MaxDamageAfterResist(data: ResolvedProjectile): (Int, Int) => (Int, Int) = { data.target match { - case target : PlayerSource => + case target: PlayerSource => MaxDamageAfterResist(target.health, target.armor) case _ => MaxDamageAfterResist(0, 0) } } - def MaxDamageAfterResist(currentHP : Int, currentArmor : Int)(damages : Int, resistance : Int) : (Int, Int) = { + def MaxDamageAfterResist(currentHP: Int, currentArmor: Int)(damages: Int, resistance: Int): (Int, Int) = { val resistedDam = damages - resistance - if(resistedDam > 0 && currentHP > 0) { - if(currentArmor <= 0) { + if (resistedDam > 0 && currentHP > 0) { + if (currentArmor <= 0) { (resistedDam, 0) //no armor; health damage - } - else if(resistedDam >= currentArmor) { + } else if (resistedDam >= currentArmor) { (resistedDam - currentArmor, currentArmor) //deplete armor; health damage - } - else { + } else { (0, resistedDam) //too weak; armor damage (less than resistance) } - } - else { + } else { (0, 0) //no damage } } @@ -99,28 +97,27 @@ object ResolutionCalculations { * @param data the historical `ResolvedProjectile` information * @return a function literal for dealing with damage values and resistance values together */ - def VehicleDamageAfterResist(data : ResolvedProjectile) : (Int, Int)=>Int = { + def VehicleDamageAfterResist(data: ResolvedProjectile): (Int, Int) => Int = { VehicleDamageAfterResist } - def VehicleDamageAfterResist(damages : Int, resistance : Int) : Int = { - if(damages > resistance) { + def VehicleDamageAfterResist(damages: Int, resistance: Int): Int = { + if (damages > resistance) { damages - resistance - } - else { + } else { damages } } - def NoApplication(damageValue : Int, data : ResolvedProjectile)(target : Any) : ResolvedProjectile = data + def NoApplication(damageValue: Int, data: ResolvedProjectile)(target: Any): ResolvedProjectile = data - def SubtractWithRemainder(current : Int, damage : Int) : (Int, Int) = { - val a = Math.max(0, current - damage) + def SubtractWithRemainder(current: Int, damage: Int): (Int, Int) = { + val a = Math.max(0, current - damage) val remainingDamage = Math.abs(current - damage - a) (a, remainingDamage) } - private def CanDamage(obj : Vitality with FactionAffinity, damage : Int, data : ResolvedProjectile) : Boolean = { + private def CanDamage(obj: Vitality with FactionAffinity, damage: Int, data: ResolvedProjectile): Boolean = { obj.Health > 0 && Damageable.CanDamage(obj, damage, data) } @@ -131,13 +128,13 @@ object ResolutionCalculations { * @param data the historical `ResolvedProjectile` information * @param target the `Player` object to be affected by these damage values (at some point) */ - def InfantryApplication(damageValues : (Int, Int), data : ResolvedProjectile)(target : Any) : ResolvedProjectile = { + def InfantryApplication(damageValues: (Int, Int), data: ResolvedProjectile)(target: Any): ResolvedProjectile = { target match { - case player : Player => + case player: Player => var (a, b) = damageValues var result = (0, 0) - if(player.isAlive && !(a == 0 && b == 0)) { - if(player.Capacitor.toInt > 0 && player.isShielded) { + if (player.isAlive && !(a == 0 && b == 0)) { + if (player.Capacitor.toInt > 0 && player.isShielded) { // Subtract armour damage from capacitor result = SubtractWithRemainder(player.Capacitor.toInt, b) player.Capacitor = result._1.toFloat @@ -169,7 +166,6 @@ object ResolutionCalculations { player.Armor = result._1 b = result._2 - val originalHealth = player.Health // Then bleed through to health if armour ran out result = SubtractWithRemainder(player.Health, b) @@ -182,7 +178,7 @@ object ResolutionCalculations { a = result._2 // If any health damage was applied also drain an amount of stamina equal to half the health damage - if(player.Health < originalHealth) { + if (player.Health < originalHealth) { val delta = originalHealth - player.Health player.Stamina -= math.floor(delta / 2).toInt } @@ -199,18 +195,16 @@ object ResolutionCalculations { * @param data the historical `ResolvedProjectile` information * @param target the `Vehicle` object to be affected by these damage values (at some point) */ - def VehicleApplication(damage : Int, data : ResolvedProjectile)(target : Any) : ResolvedProjectile = { + def VehicleApplication(damage: Int, data: ResolvedProjectile)(target: Any): ResolvedProjectile = { target match { - case vehicle : Vehicle if CanDamage(vehicle, damage, data) => + case vehicle: Vehicle if CanDamage(vehicle, damage, data) => val shields = vehicle.Shields - if(shields > damage) { + if (shields > damage) { vehicle.Shields = shields - damage - } - else if(shields > 0) { + } else if (shields > 0) { vehicle.Health = vehicle.Health - (damage - shields) vehicle.Shields = 0 - } - else { + } else { vehicle.Health = vehicle.Health - damage } case _ => ; @@ -218,46 +212,42 @@ object ResolutionCalculations { data } - def SimpleApplication(damage : Int, data : ResolvedProjectile)(target : Any) : ResolvedProjectile = { + def SimpleApplication(damage: Int, data: ResolvedProjectile)(target: Any): ResolvedProjectile = { target match { - case obj : Deployable if CanDamage(obj, damage, data) => + case obj: Deployable if CanDamage(obj, damage, data) => obj.Health -= damage - case turret : FacilityTurret if CanDamage(turret, damage, data) => + case turret: FacilityTurret if CanDamage(turret, damage, data) => turret.Health -= damage - case amenity : Amenity if CanDamage(amenity, damage, data) => + case amenity: Amenity if CanDamage(amenity, damage, data) => amenity.Health -= damage case _ => ; } data } - def ComplexDeployableApplication(damage : Int, data : ResolvedProjectile)(target : Any) : ResolvedProjectile = { + def ComplexDeployableApplication(damage: Int, data: ResolvedProjectile)(target: Any): ResolvedProjectile = { target match { - case ce : ComplexDeployable if CanDamage(ce, damage, data) => - if(ce.Shields > 0) { - if(damage > ce.Shields) { + case ce: ComplexDeployable if CanDamage(ce, damage, data) => + if (ce.Shields > 0) { + if (damage > ce.Shields) { ce.Health -= (damage - ce.Shields) ce.Shields = 0 - } - else { + } else { ce.Shields -= damage } - } - else { + } else { ce.Health -= damage } - case ce : TurretDeployable if CanDamage(ce, damage, data) => - if(ce.Shields > 0) { - if(damage > ce.Shields) { + case ce: TurretDeployable if CanDamage(ce, damage, data) => + if (ce.Shields > 0) { + if (damage > ce.Shields) { ce.Health -= (damage - ce.Shields) ce.Shields = 0 - } - else { + } else { ce.Shields -= damage } - } - else { + } else { ce.Health -= damage } diff --git a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionSelection.scala b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionSelection.scala index 824a9fae..11a6f3a7 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionSelection.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionSelection.scala @@ -5,8 +5,8 @@ package net.psforever.objects.vital.resolution * Maintain information about four target types as the entry points for damage calculation. */ trait ResolutionSelection { - def Infantry : ResolutionCalculations.Form - def Max : ResolutionCalculations.Form - def Vehicle : ResolutionCalculations.Form - def Aircraft : ResolutionCalculations.Form + def Infantry: ResolutionCalculations.Form + def Max: ResolutionCalculations.Form + def Vehicle: ResolutionCalculations.Form + def Aircraft: ResolutionCalculations.Form } diff --git a/common/src/main/scala/net/psforever/objects/zones/HotSpotInfo.scala b/common/src/main/scala/net/psforever/objects/zones/HotSpotInfo.scala index 982c549b..268fed35 100644 --- a/common/src/main/scala/net/psforever/objects/zones/HotSpotInfo.scala +++ b/common/src/main/scala/net/psforever/objects/zones/HotSpotInfo.scala @@ -13,16 +13,16 @@ import scala.concurrent.duration._ * with information referring to the same encounter. * @param DisplayLocation the coordinates where the hotspot will be depicted on some zone's map */ -class HotSpotInfo(val DisplayLocation : Vector3) { - private val activity : Map[PlanetSideEmpire.Value, ActivityReport] = Map( +class HotSpotInfo(val DisplayLocation: Vector3) { + private val activity: Map[PlanetSideEmpire.Value, ActivityReport] = Map( PlanetSideEmpire.TR -> new ActivityReport(), PlanetSideEmpire.NC -> new ActivityReport(), PlanetSideEmpire.VS -> new ActivityReport() ) - def Activity : Map[PlanetSideEmpire.Value, ActivityReport] = activity + def Activity: Map[PlanetSideEmpire.Value, ActivityReport] = activity - def ActivityFor(faction : PlanetSideEmpire.Value) : Option[ActivityReport] = { + def ActivityFor(faction: PlanetSideEmpire.Value): Option[ActivityReport] = { activity.get(faction) } @@ -30,7 +30,7 @@ class HotSpotInfo(val DisplayLocation : Vector3) { * Which factions claim a current level of activity that they might see this hotspot? * @return the active factions */ - def ActivityBy() : Set[PlanetSideEmpire.Value] = { + def ActivityBy(): Set[PlanetSideEmpire.Value] = { for { faction <- PlanetSideEmpire.values if ActivityBy(faction) @@ -43,7 +43,7 @@ class HotSpotInfo(val DisplayLocation : Vector3) { * @return `true`, if the heat level is non-zero; * `false`, otherwise */ - def ActivityBy(faction : PlanetSideEmpire.Value) : Boolean = { + def ActivityBy(faction: PlanetSideEmpire.Value): Boolean = { activity.get(faction) match { case Some(report) => report.Heat > 0 @@ -60,26 +60,29 @@ class HotSpotInfo(val DisplayLocation : Vector3) { * subsequent activity reporting before this duration concludes will cause the lifespan to artificially increase. */ class ActivityReport { + /** heat increases each time the hotspot is considered active and receives more activity */ - private var heat : Int = 0 + private var heat: Int = 0 + /** the time of the last activity report */ - private var lastReport : Option[Long] = None + private var lastReport: Option[Long] = None + /** the length of time from the last reporting that this (ongoing) activity will stay relevant */ - private var duration : FiniteDuration = 0 seconds + private var duration: FiniteDuration = 0 seconds /** * The increasing heat does nothing, presently, but acts as a flag for activity. * @return the heat */ - def Heat : Int = heat + def Heat: Int = heat /** * As a `Long` value, if there was no previous report, the value will be considered `0L`. * @return the time of the last activity report */ - def LastReport : Long = lastReport.getOrElse(0L) + def LastReport: Long = lastReport.getOrElse(0L) - def SetLastReport(time : Long) : Long = { + def SetLastReport(time: Long): Long = { lastReport = Some(time) LastReport } @@ -88,14 +91,14 @@ class ActivityReport { * The length of time that this (ongoing) activity is relevant. * @return the time */ - def Duration : FiniteDuration = duration + def Duration: FiniteDuration = duration /** * Set the length of time that this (ongoing) activity is relevant. * @param time the time, as a `Duration` * @return the time */ - def Duration_=(time : FiniteDuration) : FiniteDuration = { + def Duration_=(time: FiniteDuration): FiniteDuration = { Duration_=(time.toNanos) } @@ -105,8 +108,8 @@ class ActivityReport { * @param time the time, as a `Long` value * @return the time */ - def Duration_=(time : Long) : FiniteDuration = { - if(time > duration.toNanos) { + def Duration_=(time: Long): FiniteDuration = { + if (time > duration.toNanos) { duration = FiniteDuration(time, "nanoseconds") Renew } @@ -118,7 +121,7 @@ class ActivityReport { * @see `Renew` * @return the current report */ - def Report() : ActivityReport = { + def Report(): ActivityReport = { RaiseHeat(1) Renew this @@ -129,7 +132,7 @@ class ActivityReport { * @see `Renew` * @return the current report */ - def Report(pow : Int) : ActivityReport = { + def Report(pow: Int): ActivityReport = { RaiseHeat(pow) Renew this @@ -140,16 +143,15 @@ class ActivityReport { * Do not increase the lifespan of the current report's existence. * @return the current report */ - def ReportOld(pow : Int) : ActivityReport = { + def ReportOld(pow: Int): ActivityReport = { RaiseHeat(pow) this } - private def RaiseHeat(addHeat : Int) : Int = { - if(addHeat < (Integer.MAX_VALUE - heat)) { + private def RaiseHeat(addHeat: Int): Int = { + if (addHeat < (Integer.MAX_VALUE - heat)) { heat += addHeat - } - else { + } else { heat = Integer.MAX_VALUE } heat @@ -159,7 +161,7 @@ class ActivityReport { * Reset the time of the last report to the present. * @return the current time */ - def Renew : Long = { + def Renew: Long = { val t = System.nanoTime lastReport = Some(t) t @@ -169,7 +171,7 @@ class ActivityReport { * Act as if no activity was ever valid for this report. * Set heat to zero to flag no activity and set duration to "0 seconds" to eliminate its lifespan. */ - def Clear() : Unit = { + def Clear(): Unit = { heat = 0 lastReport = None duration = FiniteDuration(0, "nanoseconds") diff --git a/common/src/main/scala/net/psforever/objects/zones/InterstellarCluster.scala b/common/src/main/scala/net/psforever/objects/zones/InterstellarCluster.scala index 542cf98b..50f2a126 100644 --- a/common/src/main/scala/net/psforever/objects/zones/InterstellarCluster.scala +++ b/common/src/main/scala/net/psforever/objects/zones/InterstellarCluster.scala @@ -23,9 +23,9 @@ import scala.util.Random * Other activities involve event management and managing wide-reaching and factional attributes. * @param zones a `List` of continental `Zone` arenas */ -class InterstellarCluster(zones : List[Zone]) extends Actor { +class InterstellarCluster(zones: List[Zone]) extends Actor { private[this] val log = org.log4s.getLogger - val recallRandom = new Random() + val recallRandom = new Random() log.info("Starting interplanetary cluster ...") /** @@ -33,16 +33,16 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { * That `Actor` is sent a packet that would start the construction of the `Zone`'s server objects. * The process is maintained this way to allow every planet to be created and configured in separate stages. */ - override def preStart() : Unit = { + override def preStart(): Unit = { super.preStart() - for(zone <- zones) { + for (zone <- zones) { log.info(s"Built continent ${zone.Id}") zone.Actor = context.actorOf(Props(classOf[ZoneActor], zone), s"${zone.Id}-actor") zone.Actor ! Zone.Init() } } - def receive : Receive = { + def receive: Receive = { case InterstellarCluster.GetWorld(zoneId) => log.info(s"Asked to find $zoneId") recursiveFindWorldInCluster(zones.iterator, _.Id == zoneId) match { @@ -65,9 +65,9 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None) } case InterstellarCluster.ListPlayers() => - var players : List[String] = List() + var players: List[String] = List() - for(zone <- zones) { + for (zone <- zones) { val zonePlayers = zone.Players for (player <- zonePlayers) { players ::= player.name @@ -89,9 +89,9 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { case InterstellarCluster.ZoneMapUpdate(zone_num: Int) => val zone = zones.find(x => x.Number == zone_num).get zone.Buildings - .filter(_._2.BuildingType == StructureType.Facility) - .values.foreach(b => b.Actor ! Building.SendMapUpdate(all_clients = true)) - + .filter(_._2.BuildingType == StructureType.Facility) + .values + .foreach(b => b.Actor ! Building.SendMapUpdate(all_clients = true)) case Zoning.InstantAction.Request(faction) => val interests = zones.flatMap { zone => @@ -99,17 +99,20 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { zone.HotSpotData .collect { case spot if zone.Players.nonEmpty => (zone, spot) } } /* ignore zones without existing population */ - if(interests.nonEmpty) { + if (interests.nonEmpty) { val (withAllies, onlyEnemies) = interests - .map { case (zone, spot) => - ( - zone, - spot, - ZoneActor.FindLocalSpawnPointsInZone(zone, spot.DisplayLocation, faction, 0).getOrElse(Nil) - ) + .map { + case (zone, spot) => + ( + zone, + spot, + ZoneActor.FindLocalSpawnPointsInZone(zone, spot.DisplayLocation, faction, 0).getOrElse(Nil) + ) } /* pair hotspots and spawn points */ .filter { case (_, _, spawns) => spawns.nonEmpty } /* faction spawns must exist */ - .sortBy({ case (_, spot, _) => spot.Activity.values.foldLeft(0)(_ + _.Heat) })(Ordering[Int].reverse) /* greatest > least */ + .sortBy({ case (_, spot, _) => spot.Activity.values.foldLeft(0)(_ + _.Heat) })( + Ordering[Int].reverse + ) /* greatest > least */ .partition { case (_, spot, _) => spot.ActivityBy().contains(faction) } /* us versus them */ withAllies.headOption.orElse(onlyEnemies.headOption) match { case Some((zone, info, List(spawnPoint))) => @@ -118,15 +121,14 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { sender ! Zoning.InstantAction.Located(zone, pos, spawnPoint) case Some((zone, info, spawns)) => //multiple spawn options - val pos = info.DisplayLocation + val pos = info.DisplayLocation val spawnPoint = spawns.minBy(point => Vector3.DistanceSquared(point.Position, pos)) sender ! Zoning.InstantAction.Located(zone, pos, spawnPoint) case None => //no actionable hot spots sender ! Zoning.InstantAction.NotLocated() } - } - else { + } else { //never had any actionable hot spots sender ! Zoning.InstantAction.NotLocated() } @@ -135,14 +137,14 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { recursiveFindWorldInCluster(zones.iterator, _.Id.equals(sanctuary_id)) match { case Some(zone) => //TODO zone full - val width = zone.Map.Scale.width + val width = zone.Map.Scale.width val height = zone.Map.Scale.height //xy-coordinates indicate sanctuary spawn bias: val spot = math.abs(scala.util.Random.nextInt() % sender.toString.hashCode % 4) match { case 0 => Vector3(width, height, 0) //NE - case 1 => Vector3(width, 0, 0) //SE - case 2 => Vector3.Zero //SW - case 3 => Vector3(0, height, 0) //NW + case 1 => Vector3(width, 0, 0) //SE + case 2 => Vector3.Zero //SW + case 3 => Vector3(0, height, 0) //NW } ZoneActor.FindLocalSpawnPointsInZone(zone, spot, faction, 7).getOrElse(Nil) match { case Nil => @@ -170,16 +172,14 @@ class InterstellarCluster(zones : List[Zone]) extends Actor { * @param predicate a condition to check against to determine when the appropriate `Zone` is discovered * @return the discovered `Zone` */ - @tailrec private def recursiveFindWorldInCluster(iter : Iterator[Zone], predicate : Zone=>Boolean) : Option[Zone] = { - if(!iter.hasNext) { + @tailrec private def recursiveFindWorldInCluster(iter: Iterator[Zone], predicate: Zone => Boolean): Option[Zone] = { + if (!iter.hasNext) { None - } - else { + } else { val cont = iter.next - if(predicate.apply(cont)) { + if (predicate.apply(cont)) { Some(cont) - } - else { + } else { recursiveFindWorldInCluster(iter, predicate) } } @@ -192,17 +192,17 @@ object InterstellarCluster { * Request a hard reference to a `Zone`. * @param zoneId the name of the `Zone` */ - final case class GetWorld(zoneId : String) + final case class GetWorld(zoneId: String) /** * Provide a hard reference to a `Zone`. * @param zoneId the name of the `Zone` * @param zone the `Zone` */ - final case class GiveWorld(zoneId : String, zone : Zone) + final case class GiveWorld(zoneId: String, zone: Zone) final case class ListPlayers() - final case class PlayerList(players : List[String]) + final case class PlayerList(players: List[String]) /** * Signal to the cluster that a new client needs to be initialized for all listed `Zone` destinations. @@ -221,8 +221,8 @@ object InterstellarCluster { * @see `BuildingInfoUpdateMessage` * @param zone_num the zone number to request building map updates for */ - final case class ZoneMapUpdate(zone_num : Int) + final case class ZoneMapUpdate(zone_num: Int) final case class GetZoneIds() - final case class ZoneIds(zoneIds : List[Int]) + final case class ZoneIds(zoneIds: List[Int]) } diff --git a/common/src/main/scala/net/psforever/objects/zones/MapScale.scala b/common/src/main/scala/net/psforever/objects/zones/MapScale.scala index 8a8a7c0e..5f0112bc 100644 --- a/common/src/main/scala/net/psforever/objects/zones/MapScale.scala +++ b/common/src/main/scala/net/psforever/objects/zones/MapScale.scala @@ -7,10 +7,10 @@ package net.psforever.objects.zones * @param width the longitudinal span of the map * @param height the latitudinal span of the map */ -final case class MapScale(width : Float, height : Float) +final case class MapScale(width: Float, height: Float) object MapScale { - final val Dim512 = MapScale(512, 512) //map49 (unused) + final val Dim512 = MapScale(512, 512) //map49 (unused) final val Dim1024 = MapScale(1024, 1024) //homebo, tzsh*, tzco* final val Dim2048 = MapScale(2048, 2048) //ugd3 .. ugd5; map44 .. map46, map80, map95 (unused) final val Dim2560 = MapScale(2560, 2560) //ugd1, ugd2, ugd6 diff --git a/common/src/main/scala/net/psforever/objects/zones/SphereOfInfluenceActor.scala b/common/src/main/scala/net/psforever/objects/zones/SphereOfInfluenceActor.scala index b07a45f1..439944b9 100644 --- a/common/src/main/scala/net/psforever/objects/zones/SphereOfInfluenceActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/SphereOfInfluenceActor.scala @@ -1,59 +1,61 @@ package net.psforever.objects.zones import akka.actor.{Actor, Cancellable} -import net.psforever.objects.{Default, Player} -import net.psforever.objects.definition.ObjectDefinition -import net.psforever.objects.serverobject.structures.{Building, SphereOfInfluence} +import net.psforever.objects.Default +import net.psforever.objects.serverobject.structures.Building import net.psforever.types.Vector3 -import scala.annotation.tailrec import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ class SphereOfInfluenceActor(zone: Zone) extends Actor { - var sois : Iterable[(Building, Int)] = Nil - var populateTick : Cancellable = Default.Cancellable + var sois: Iterable[(Building, Int)] = Nil + var populateTick: Cancellable = Default.Cancellable //private[this] val log = org.log4s.getLogger(s"${zone.Id.capitalize}-SphereOfInfluenceActor") - def receive : Receive = Stopped + def receive: Receive = Stopped - def Build : Receive = { + def Build: Receive = { case SOI.Build() => BuildSOI() } - def Running : Receive = Build.orElse { - case SOI.Populate() => - UpdateSOI() + def Running: Receive = + Build.orElse { + case SOI.Populate() => + UpdateSOI() - case SOI.Stop() => - context.become(Stopped) - populateTick.cancel - sois.foreach { case (facility, _) => facility.PlayersInSOI = Nil } + case SOI.Stop() => + context.become(Stopped) + populateTick.cancel + sois.foreach { case (facility, _) => facility.PlayersInSOI = Nil } - case _ => ; - } + case _ => ; + } - def Stopped : Receive = Build.orElse { - case SOI.Start() if sois.nonEmpty => - context.become(Running) - UpdateSOI() + def Stopped: Receive = + Build.orElse { + case SOI.Start() if sois.nonEmpty => + context.become(Running) + UpdateSOI() - case _ => ; - } + case _ => ; + } - def BuildSOI() : Unit = { - sois = zone.Buildings - .values + def BuildSOI(): Unit = { + sois = zone.Buildings.values .map { facility => (facility, facility.Definition) } - .collect { case (facility, soi) if soi.SOIRadius > 0 => - (facility, soi.SOIRadius * soi.SOIRadius) + .collect { + case (facility, soi) if soi.SOIRadius > 0 => + (facility, soi.SOIRadius * soi.SOIRadius) } } def UpdateSOI(): Unit = { - sois.foreach { case (facility, radius) => - facility.PlayersInSOI = zone.LivePlayers.filter(p => Vector3.DistanceSquared(facility.Position.xy, p.Position.xy) < radius) + sois.foreach { + case (facility, radius) => + facility.PlayersInSOI = + zone.LivePlayers.filter(p => Vector3.DistanceSquared(facility.Position.xy, p.Position.xy) < radius) } populateTick.cancel populateTick = context.system.scheduler.scheduleOnce(5 seconds, self, SOI.Populate()) @@ -61,12 +63,16 @@ class SphereOfInfluenceActor(zone: Zone) extends Actor { } object SOI { - /** Rebuild the list of facility SOI data **/ + + /** Rebuild the list of facility SOI data * */ final case class Build() - /** Populate the list of players within a SOI **/ + + /** Populate the list of players within a SOI * */ final case class Populate() + /** Stop sorting players into sois */ final case class Start() + /** Stop sorting players into sois */ final case class Stop() } diff --git a/common/src/main/scala/net/psforever/objects/zones/Zone.scala b/common/src/main/scala/net/psforever/objects/zones/Zone.scala index 08c29e87..a35f5559 100644 --- a/common/src/main/scala/net/psforever/objects/zones/Zone.scala +++ b/common/src/main/scala/net/psforever/objects/zones/Zone.scala @@ -53,60 +53,93 @@ import scala.util.Try * `LoadMapMessage`
* `LivePlayerList` */ -class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { +class Zone(private val zoneId: String, zoneMap: ZoneMap, zoneNumber: Int) { + /** Governs general synchronized external requests. */ private var actor = Default.Actor - /** Actor that handles SOI related functionality, for example if a player is in a SOI **/ + /** Actor that handles SOI related functionality, for example if a player is in a SOI * */ private var soi = Default.Actor /** Used by the globally unique identifier system to coordinate requests. */ - private var accessor : ActorRef = Default.Actor + private var accessor: ActorRef = Default.Actor + /** The basic support structure for the globally unique number system used by this `Zone`. */ - private var guid : NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(65536)) + private var guid: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(65536)) + /** A synchronized `List` of items (`Equipment`) dropped by players on the ground and can be collected again. */ - private val equipmentOnGround : ListBuffer[Equipment] = ListBuffer[Equipment]() - /** */ - private val vehicles : ListBuffer[Vehicle] = ListBuffer[Vehicle]() + private val equipmentOnGround: ListBuffer[Equipment] = ListBuffer[Equipment]() + + /** + */ + private val vehicles: ListBuffer[Vehicle] = ListBuffer[Vehicle]() + /** Used by the `Zone` to coordinate `Equipment` dropping and collection requests. */ - private var ground : ActorRef = Default.Actor - /** */ - private val constructions : ListBuffer[PlanetSideGameObject with Deployable] = ListBuffer[PlanetSideGameObject with Deployable]() - /** */ - private var deployables : ActorRef = Default.Actor - /** */ - private var transport : ActorRef = Default.Actor - /** */ - private val players : TrieMap[Avatar, Option[Player]] = TrieMap[Avatar, Option[Player]]() - /** */ - private val corpses : ListBuffer[Player] = ListBuffer[Player]() - /** */ - private var population : ActorRef = Default.Actor + private var ground: ActorRef = Default.Actor - private var buildings : PairMap[Int, Building] = PairMap.empty[Int, Building] + /** + */ + private val constructions: ListBuffer[PlanetSideGameObject with Deployable] = + ListBuffer[PlanetSideGameObject with Deployable]() - private var lattice : Graph[Building, UnDiEdge] = Graph() + /** + */ + private var deployables: ActorRef = Default.Actor - private var zipLinePaths : List[ZipLinePath] = List() + /** + */ + private var transport: ActorRef = Default.Actor + + /** + */ + private val players: TrieMap[Avatar, Option[Player]] = TrieMap[Avatar, Option[Player]]() + + /** + */ + private val corpses: ListBuffer[Player] = ListBuffer[Player]() + + /** + */ + private var population: ActorRef = Default.Actor + + private var buildings: PairMap[Int, Building] = PairMap.empty[Int, Building] + + private var lattice: Graph[Building, UnDiEdge] = Graph() + + private var zipLinePaths: List[ZipLinePath] = List() /** key - spawn zone id, value - buildings belonging to spawn zone */ - private var spawnGroups : Map[Building, List[SpawnPoint]] = PairMap[Building, List[SpawnPoint]]() - /** */ - private var projector : ActorRef = Default.Actor - /** */ - private var hotspots : ListBuffer[HotSpotInfo] = ListBuffer[HotSpotInfo]() - /** */ - private val hotspotHistory : ListBuffer[HotSpotInfo] = ListBuffer[HotSpotInfo]() + private var spawnGroups: Map[Building, List[SpawnPoint]] = PairMap[Building, List[SpawnPoint]]() + + /** + */ + private var projector: ActorRef = Default.Actor + + /** + */ + private var hotspots: ListBuffer[HotSpotInfo] = ListBuffer[HotSpotInfo]() + + /** + */ + private val hotspotHistory: ListBuffer[HotSpotInfo] = ListBuffer[HotSpotInfo]() + /** calculate a approximated coordinate from a raw input coordinate */ - private var hotspotCoordinateFunc : Vector3=>Vector3 = Zone.HotSpot.Rules.OneToOne + private var hotspotCoordinateFunc: Vector3 => Vector3 = Zone.HotSpot.Rules.OneToOne + /** calculate a duration from a given interaction's participants */ - private var hotspotTimeFunc : (SourceEntry, SourceEntry)=>FiniteDuration = Zone.HotSpot.Rules.NoTime - /** */ - private var avatarEvents : ActorRef = Default.Actor - /** */ - private var localEvents : ActorRef = Default.Actor - /** */ - private var vehicleEvents : ActorRef = Default.Actor + private var hotspotTimeFunc: (SourceEntry, SourceEntry) => FiniteDuration = Zone.HotSpot.Rules.NoTime + + /** + */ + private var avatarEvents: ActorRef = Default.Actor + + /** + */ + private var localEvents: ActorRef = Default.Actor + + /** + */ + private var vehicleEvents: ActorRef = Default.Actor /** * Establish the basic accessible conditions necessary for a functional `Zone`.
@@ -125,22 +158,30 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @see `ZoneActor.ZoneSetupCheck` * @param context a reference to an `ActorContext` necessary for `Props` */ - def Init(implicit context : ActorContext) : Unit = { - if(accessor == Default.Actor) { + def Init(implicit context: ActorContext): Unit = { + if (accessor == Default.Actor) { SetupNumberPools() - accessor = context.actorOf(RandomPool(25).props(Props(classOf[UniqueNumberSystem], this.guid, UniqueNumberSystem.AllocateNumberPoolActors(this.guid))), s"$Id-uns") + accessor = context.actorOf( + RandomPool(25).props( + Props(classOf[UniqueNumberSystem], this.guid, UniqueNumberSystem.AllocateNumberPoolActors(this.guid)) + ), + s"$Id-uns" + ) ground = context.actorOf(Props(classOf[ZoneGroundActor], this, equipmentOnGround), s"$Id-ground") deployables = context.actorOf(Props(classOf[ZoneDeployableActor], this, constructions), s"$Id-deployables") transport = context.actorOf(Props(classOf[ZoneVehicleActor], this, vehicles), s"$Id-vehicles") population = context.actorOf(Props(classOf[ZonePopulationActor], this, players, corpses), s"$Id-players") - projector = context.actorOf(Props(classOf[ZoneHotSpotDisplay], this, hotspots, 15 seconds, hotspotHistory, 60 seconds), s"$Id-hotspots") + projector = context.actorOf( + Props(classOf[ZoneHotSpotDisplay], this, hotspots, 15 seconds, hotspotHistory, 60 seconds), + s"$Id-hotspots" + ) soi = context.actorOf(Props(classOf[SphereOfInfluenceActor], this), s"$Id-soi") avatarEvents = context.actorOf(Props(classOf[AvatarService], this), s"$Id-avatar-events") localEvents = context.actorOf(Props(classOf[LocalService], this), s"$Id-local-events") vehicleEvents = context.actorOf(Props(classOf[VehicleService], this), s"$Id-vehicle-events") - implicit val guid : NumberPoolHub = this.guid //passed into builderObject.Build implicitly + implicit val guid: NumberPoolHub = this.guid //passed into builderObject.Build implicitly BuildLocalObjects(context, guid) BuildSupportObjects() MakeBuildings(context) @@ -152,10 +193,11 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { } } - def SetupNumberPools() : Unit = { + def SetupNumberPools(): Unit = { guid.AddPool("environment", (0 to 3000).toList) //TODO tailor to suit requirements of zone //TODO unlump pools later; do not make any single pool too big - guid.AddPool("dynamic", (3001 to 10000).toList).Selector = new RandomSelector //TODO all things will be registered here, for now + guid.AddPool("dynamic", (3001 to 10000).toList).Selector = + new RandomSelector //TODO all things will be registered here, for now guid.AddPool("b", (10001 to 15000).toList).Selector = new RandomSelector guid.AddPool("c", (15001 to 20000).toList).Selector = new RandomSelector guid.AddPool("d", (20001 to 25000).toList).Selector = new RandomSelector @@ -177,7 +219,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @see `ZoneActor`
* `Zone.Init` */ - def Actor : ActorRef = actor + def Actor: ActorRef = actor /** * Give this `Zone` an `Actor` that will govern its interactions sequentially. @@ -186,8 +228,8 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return an `ActorRef` * @see `ZoneActor` */ - def Actor_=(zoneActor : ActorRef) : ActorRef = { - if(actor == Default.Actor) { + def Actor_=(zoneActor: ActorRef): ActorRef = { + if (actor == Default.Actor) { actor = zoneActor } Actor @@ -197,26 +239,26 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * The privileged name that can be used as the second parameter in the packet `LoadMapMessage`. * @return the name */ - def Id : String = zoneId + def Id: String = zoneId /** * The map of server objects upon which this `Zone` is based * @return the map */ - def Map : ZoneMap = zoneMap + def Map: ZoneMap = zoneMap /** * The numerical index of the `Zone` as it is recognized in a variety of packets. * @return the abstract index position of this `Zone` */ - def Number : Int = zoneNumber + def Number: Int = zoneNumber /** * The globally unique identifier system is synchronized via an `Actor` to ensure that concurrent requests do not clash. * A clash is merely when the same number is produced more than once by the same system due to concurrent requests. * @return synchronized reference to the globally unique identifier system */ - def GUID : ActorRef = accessor + def GUID: ActorRef = accessor /** * Replace the current globally unique identifier system with a new one. @@ -225,15 +267,19 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * A warning will be issued. * @return synchronized reference to the globally unique identifier system */ - def GUID(hub : NumberPoolHub) : Boolean = { - if(actor == Default.Actor && guid.Pools.values.foldLeft(0)(_ + _.Count) == 0) { + def GUID(hub: NumberPoolHub): Boolean = { + if (actor == Default.Actor && guid.Pools.values.foldLeft(0)(_ + _.Count) == 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()) + println( + ansi() + .fgBright(RED) + .a(s"""Caution: replacement of the number pool system for zone $Id; function is for testing purposes only""") + .reset() + ) guid = hub true - } - else { + } else { false } } @@ -247,12 +293,11 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return `true`, if the new pool is created; * `false`, if the new pool can not be created because the system has already been started */ - def AddPool(name : String, pool : Seq[Int]) : Boolean = { - if(accessor == Default.Actor) { + def AddPool(name: String, pool: Seq[Int]): Boolean = { + if (accessor == Default.Actor) { guid.AddPool(name, pool.toList) true - } - else { + } else { false } } @@ -265,12 +310,11 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return `true`, if the new pool is un-made; * `false`, if the new pool can not be removed because the system has already been started */ - def RemovePool(name : String) : Boolean = { - if(accessor == Default.Actor) { + def RemovePool(name: String): Boolean = { + if (accessor == Default.Actor) { guid.RemovePool(name) true - } - else { + } else { false } } @@ -281,7 +325,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return the associated object, if it exists * @see `GUID(Int)` */ - def GUID(object_guid : Option[PlanetSideGUID]) : Option[PlanetSideGameObject] = { + def GUID(object_guid: Option[PlanetSideGUID]): Option[PlanetSideGameObject] = { object_guid match { case Some(oguid) => GUID(oguid.guid) @@ -296,7 +340,7 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return the associated object, if it exists * @see `GUID(Int)` */ - def GUID(object_guid : PlanetSideGUID) : Option[PlanetSideGameObject] = GUID(object_guid.guid) + def GUID(object_guid: PlanetSideGUID): Option[PlanetSideGameObject] = GUID(object_guid.guid) /** * Recover an object from the globally unique identifier system by the number that was assigned previously. @@ -305,28 +349,29 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * @return the associated object, if it exists * @see `NumberPoolHub(Int)` */ - def GUID(object_guid : Int) : Option[PlanetSideGameObject] = guid(object_guid) match { - case Some(obj) => - Some(obj.asInstanceOf[PlanetSideGameObject]) - case None => - None - } + def GUID(object_guid: Int): Option[PlanetSideGameObject] = + guid(object_guid) match { + case Some(obj) => + Some(obj.asInstanceOf[PlanetSideGameObject]) + case None => + None + } /** * The `List` of items (`Equipment`) dropped by players on the ground and can be collected again. * @return the `List` of `Equipment` */ - def EquipmentOnGround : List[Equipment] = equipmentOnGround.toList + def EquipmentOnGround: List[Equipment] = equipmentOnGround.toList - def DeployableList : List[PlanetSideGameObject with Deployable] = constructions.toList + def DeployableList: List[PlanetSideGameObject with Deployable] = constructions.toList - def Vehicles : List[Vehicle] = vehicles.toList + def Vehicles: List[Vehicle] = vehicles.toList - def Players : List[Avatar] = players.keys.toList + def Players: List[Avatar] = players.keys.toList - def LivePlayers : List[Player] = players.values.collect( { case Some(tplayer) => tplayer }).toList + def LivePlayers: List[Player] = players.values.collect({ case Some(tplayer) => tplayer }).toList - def Corpses : List[Player] = corpses.toList + def Corpses: List[Player] = corpses.toList /** * Coordinate `Equipment` that has been dropped on the ground or to-be-dropped on the ground. @@ -336,87 +381,88 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * `Zone.GetItemOnGround`
* `Zone.ItemFromGround` */ - def Ground : ActorRef = ground + def Ground: ActorRef = ground - def Deployables : ActorRef = deployables + def Deployables: ActorRef = deployables - def Transport : ActorRef = transport + def Transport: ActorRef = transport - def Population : ActorRef = population + def Population: ActorRef = population - def Buildings : Map[Int, Building] = buildings + def Buildings: Map[Int, Building] = buildings - def Building(id : Int) : Option[Building] = { + def Building(id: Int): Option[Building] = { buildings.get(id) } - def Building(name : String) : Option[Building] = { + def Building(name: String): Option[Building] = { buildings.values.find(_.Name == name) } - def BuildingByMapId(map_id : Int) : Option[Building] = { + def BuildingByMapId(map_id: Int): Option[Building] = { buildings.values.find(_.MapId == map_id) } - def Lattice : Graph[Building, UnDiEdge] = { + def Lattice: Graph[Building, UnDiEdge] = { lattice } - def ZipLinePaths : List[ZipLinePath] = { + def ZipLinePaths: List[ZipLinePath] = { zipLinePaths } - private def BuildLocalObjects(implicit context : ActorContext, guid : NumberPoolHub) : Unit = { + private def BuildLocalObjects(implicit context: ActorContext, guid: NumberPoolHub): Unit = { Map.LocalObjects.foreach({ builderObject => builderObject.Build val obj = guid(builderObject.Id) obj collect { - case el : ZoneAware => el.Zone = this + case el: ZoneAware => el.Zone = this } }) } - private def BuildSupportObjects() : Unit = { + private def BuildSupportObjects(): Unit = { //guard against errors here, but don't worry about specifics; let ZoneActor.ZoneSetupCheck complain about problems - val other : ListBuffer[IdentifiableEntity] = new ListBuffer[IdentifiableEntity]() + val other: ListBuffer[IdentifiableEntity] = new ListBuffer[IdentifiableEntity]() //turret to weapon - Map.TurretToWeapon.foreach({ case (turret_guid, weapon_guid) => - ((GUID(turret_guid) match { - case Some(obj : FacilityTurret) => - Some(obj) - case _ => ; - None - }) match { - case Some(obj) => - obj.Weapons.get(1) match { - case Some(slot) => - Some(obj, slot.Equipment) - case None => - None - } - case None => - None - }) match { - case Some((obj, Some(weapon : Tool))) => - guid.register(weapon, weapon_guid) - other ++= weapon.AmmoSlots.map(slot => slot.Box) - other ++= obj.Inventory.Items.map(item => item.obj) //internal ammunition reserves, if any - case _ => ; - } + Map.TurretToWeapon.foreach({ + case (turret_guid, weapon_guid) => + ((GUID(turret_guid) match { + case Some(obj: FacilityTurret) => + Some(obj) + case _ => ; + None + }) match { + case Some(obj) => + obj.Weapons.get(1) match { + case Some(slot) => + Some(obj, slot.Equipment) + case None => + None + } + case None => + None + }) match { + case Some((obj, Some(weapon: Tool))) => + guid.register(weapon, weapon_guid) + other ++= weapon.AmmoSlots.map(slot => slot.Box) + other ++= obj.Inventory.Items.map(item => item.obj) //internal ammunition reserves, if any + case _ => ; + } }) //after all fixed GUID's are defined ... other.foreach(obj => guid.register(obj, "dynamic")) } - private def MakeBuildings(implicit context : ActorContext) : PairMap[Int, Building] = { + private def MakeBuildings(implicit context: ActorContext): PairMap[Int, Building] = { val buildingList = Map.LocalBuildings - val registrationKeys : Map[Int, Try[LoanedKey]] = buildingList.map { - case ((_, building_guid : Int, _), _) => + val registrationKeys: Map[Int, Try[LoanedKey]] = buildingList.map { + case ((_, building_guid: Int, _), _) => (building_guid, guid.register(building_guid)) } buildings = buildingList.map({ - case((name, building_guid, map_id), constructor) if registrationKeys(building_guid).isSuccess => + case ((name, building_guid, map_id), constructor) if registrationKeys(building_guid).isSuccess => val building = constructor.Build(name, building_guid, map_id, this) registrationKeys(building_guid).get.Object = building building_guid -> building @@ -424,26 +470,27 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { buildings } - private def AssignAmenities() : Unit = { - Map.ObjectToBuilding.foreach({ case(object_guid, building_id) => - (buildings.get(building_id), guid(object_guid)) match { - case (Some(building), Some(amenity)) => - building.Amenities = amenity.asInstanceOf[Amenity] - case (None, _) | (_, None) => ; //let ZoneActor's sanity check catch this error - } + private def AssignAmenities(): Unit = { + Map.ObjectToBuilding.foreach({ + case (object_guid, building_id) => + (buildings.get(building_id), guid(object_guid)) match { + case (Some(building), Some(amenity)) => + building.Amenities = amenity.asInstanceOf[Amenity] + case (None, _) | (_, None) => ; //let ZoneActor's sanity check catch this error + } }) //ntu management (eventually move to a generic building startup function) buildings.values .flatMap(_.Amenities.filter(_.Definition == GlobalDefinitions.resource_silo)) .collect { - case silo : ResourceSilo => + case silo: ResourceSilo => silo.Actor ! "startup" } //some painfields need to look for their closest door buildings.values .flatMap(_.Amenities.filter(_.Definition.isInstanceOf[PainboxDefinition])) .collect { - case painbox : Painbox => + case painbox: Painbox => painbox.Actor ! "startup" } //allocate soi information @@ -451,34 +498,36 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { } private def MakeLattice(): Unit = { - lattice ++= Map.LatticeLink.map { case(source, target) => - val (sourceBuilding, targetBuilding) = (Building(source), Building(target)) match { - case (Some(sBuilding), Some(tBuilding)) => (sBuilding, tBuilding) - case _ => throw new NoSuchElementException(s"Can't create lattice link between $source $target. Source is missing") - } - sourceBuilding~targetBuilding + lattice ++= Map.LatticeLink.map { + case (source, target) => + val (sourceBuilding, targetBuilding) = (Building(source), Building(target)) match { + case (Some(sBuilding), Some(tBuilding)) => (sBuilding, tBuilding) + case _ => + throw new NoSuchElementException(s"Can't create lattice link between $source $target. Source is missing") + } + sourceBuilding ~ targetBuilding } } - private def CreateSpawnGroups() : Unit = { + private def CreateSpawnGroups(): Unit = { buildings.values .filterNot { _.Position == Vector3.Zero } - .map(building => { building -> building.Amenities.collect { case obj : SpawnPoint => 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]) } + .collect { case building: WarpGate => building -> List(building.asInstanceOf[SpawnPoint]) } .foreach { SpawnGroups } } - def SpawnGroups() : Map[Building, List[SpawnPoint]] = spawnGroups + def SpawnGroups(): Map[Building, List[SpawnPoint]] = spawnGroups - def SpawnGroups(building : Building) : List[SpawnPoint] = SpawnGroups(building.MapId) + def SpawnGroups(building: Building): List[SpawnPoint] = SpawnGroups(building.MapId) - def SpawnGroups(buildingId : Int) : List[SpawnPoint] = { - 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 => @@ -486,51 +535,54 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { } } - def SpawnGroups(spawns : (Building, List[SpawnPoint])) : Map[Building, List[SpawnPoint]] = { - val (building, points) = spawns - val entry : Map[Building, List[SpawnPoint]] = PairMap(building -> points) + 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 } - def StartPlayerManagementSystems() : Unit = { + def StartPlayerManagementSystems(): Unit = { soi ! SOI.Start() } - def StopPlayerManagementSystems() : Unit = { + def StopPlayerManagementSystems(): Unit = { soi ! SOI.Stop() } - def Activity : ActorRef = projector + def Activity: ActorRef = projector - def HotSpots : List[HotSpotInfo] = hotSpotListDuplicate(hotspots).toList + def HotSpots: List[HotSpotInfo] = hotSpotListDuplicate(hotspots).toList - def HotSpotData : List[HotSpotInfo] = hotSpotListDuplicate(hotspotHistory).toList + def HotSpotData: List[HotSpotInfo] = hotSpotListDuplicate(hotspotHistory).toList - private def hotSpotListDuplicate(data : ListBuffer[HotSpotInfo]) : ListBuffer[HotSpotInfo] = { + private def hotSpotListDuplicate(data: ListBuffer[HotSpotInfo]): ListBuffer[HotSpotInfo] = { val out = data map { info => val outData = new HotSpotInfo(info.DisplayLocation) - info.Activity.foreach { case (faction, report) => - val doctoredReport = outData.Activity(faction) - doctoredReport.ReportOld(report.Heat) - doctoredReport.SetLastReport(report.LastReport) + info.Activity.foreach { + case (faction, report) => + val doctoredReport = outData.Activity(faction) + doctoredReport.ReportOld(report.Heat) + doctoredReport.SetLastReport(report.LastReport) } outData } out } - def HotSpotCoordinateFunction : Vector3=>Vector3 = hotspotCoordinateFunc + def HotSpotCoordinateFunction: Vector3 => Vector3 = hotspotCoordinateFunc - def HotSpotCoordinateFunction_=(func : Vector3=>Vector3) : Vector3=>Vector3 = { + def HotSpotCoordinateFunction_=(func: Vector3 => Vector3): Vector3 => Vector3 = { hotspotCoordinateFunc = func Activity ! ZoneHotSpotProjector.UpdateMappingFunction() HotSpotCoordinateFunction } - def HotSpotTimeFunction : (SourceEntry, SourceEntry)=>FiniteDuration = hotspotTimeFunc + def HotSpotTimeFunction: (SourceEntry, SourceEntry) => FiniteDuration = hotspotTimeFunc - def HotSpotTimeFunction_=(func : (SourceEntry, SourceEntry)=>FiniteDuration) : (SourceEntry, SourceEntry)=>FiniteDuration = { + def HotSpotTimeFunction_=( + func: (SourceEntry, SourceEntry) => FiniteDuration + ): (SourceEntry, SourceEntry) => FiniteDuration = { hotspotTimeFunc = func Activity ! ZoneHotSpotProjector.UpdateDurationFunction() HotSpotTimeFunction @@ -552,39 +604,40 @@ class Zone(private val zoneId : String, zoneMap : ZoneMap, zoneNumber : Int) { * - `ZonePopulationUpdateMessage` * @return the `Zone` object */ - def ClientInitialization() : Zone = this + def ClientInitialization(): Zone = this - def AvatarEvents : ActorRef = avatarEvents + def AvatarEvents: ActorRef = avatarEvents - def LocalEvents : ActorRef = localEvents + def LocalEvents: ActorRef = localEvents - def VehicleEvents : ActorRef = vehicleEvents + def VehicleEvents: ActorRef = vehicleEvents //mainly for testing - def Activity_=(bus : ActorRef) : ActorRef = { + def Activity_=(bus: ActorRef): ActorRef = { projector = bus Activity } - def AvatarEvents_=(bus : ActorRef) : ActorRef = { + def AvatarEvents_=(bus: ActorRef): ActorRef = { avatarEvents = bus AvatarEvents } - def LocalEvents_=(bus : ActorRef) : ActorRef = { + def LocalEvents_=(bus: ActorRef): ActorRef = { localEvents = bus LocalEvents } - def VehicleEvents_=(bus : ActorRef) : ActorRef = { + def VehicleEvents_=(bus: ActorRef): ActorRef = { vehicleEvents = bus VehicleEvents } } object Zone { + /** Default value, non-zone area. */ - final val Nowhere : Zone = new Zone("nowhere", new ZoneMap("nowhere"), 99) + final val Nowhere: Zone = new Zone("nowhere", new ZoneMap("nowhere"), 99) /** * Overloaded constructor. @@ -593,7 +646,7 @@ object Zone { * @param number the numerical index of the `Zone` as it is recognized in a variety of packets * @return a `Zone` object */ - def apply(id : String, map : ZoneMap, number : Int) : Zone = { + def apply(id: String, map: ZoneMap, number: Int): Zone = { new Zone(id, map, number) } @@ -604,20 +657,23 @@ object Zone { final case class Init() object Population { + /** * Message that introduces a user, by their `Avatar`, into a `Zone`. * That user will be counted as part of that zone's population. * The `avatar` may associate `Player` objects with itself in the future. * @param avatar the `Avatar` object */ - final case class Join(avatar : Avatar) + final case class Join(avatar: Avatar) + /** * Message that excuses a user, by their `Avatar`, into a `Zone`. * That user will not longer be counted as part of that zone's population. * @see `PlayerHasLeft` * @param avatar the `Avatar` object */ - final case class Leave(avatar : Avatar) + final case class Leave(avatar: Avatar) + /** * Message that instructs the zone to disassociate a `Player` from this `Actor`. * @see `PlayerAlreadySpawned`
@@ -625,13 +681,15 @@ object Zone { * @param avatar the `Avatar` object * @param player the `Player` object */ - final case class Spawn(avatar : Avatar, player : Player) + final case class Spawn(avatar: Avatar, player: Player) + /** * Message that instructs the zone to disassociate a `Player` from this `Actor`. * @see `PlayerHasLeft` * @param avatar the `Avatar` object */ - final case class Release(avatar : Avatar) + final case class Release(avatar: Avatar) + /** * Message that acts in reply to `Leave(avatar)` or `Release(avatar)`. * In the former case, the avatar will have successfully left the zone, and `player` may be defined. @@ -642,34 +700,38 @@ object Zone { * @param zone the `Zone` object * @param player the `Player` object */ - final case class PlayerHasLeft(zone : Zone, player : Option[Player]) //Leave(avatar), but still has a player + final case class PlayerHasLeft(zone: Zone, player: Option[Player]) //Leave(avatar), but still has a player /** * Message that acts in reply to `Spawn(avatar, player)`, but the avatar already has a player. * @param player the `Player` object */ - final case class PlayerAlreadySpawned(zone : Zone, player : Player) + final case class PlayerAlreadySpawned(zone: Zone, player: Player) + /** * Message that acts in reply to `Spawn(avatar, player)`, but the avatar did not initially `Join` this zone. * @param zone the `Zone` object * @param player the `Player` object */ - final case class PlayerCanNotSpawn(zone : Zone, player : Player) + final case class PlayerCanNotSpawn(zone: Zone, player: Player) } object Corpse { + /** * Message that reports to the zone of a freshly dead player. * @param player the dead `Player` */ - final case class Add(player : Player) + final case class Add(player: Player) + /** * Message that tells the zone to no longer mind the dead player. * @param player the dead `Player` */ - final case class Remove(player : Player) + final case class Remove(player: Player) } object Lattice { + /** * Message requesting that the current zone determine where a `player` can spawn. * @param zone_number this zone's numeric identifier @@ -677,16 +739,22 @@ object Zone { * @param faction which empire's spawn options should be available * @param spawn_group the category of spawn points the request wants searched */ - final case class RequestSpawnPoint(zone_number : Int, position : Vector3, faction : PlanetSideEmpire.Value, spawn_group : Int) + final case class RequestSpawnPoint( + zone_number: Int, + position: Vector3, + faction: PlanetSideEmpire.Value, + spawn_group: Int + ) object RequestSpawnPoint { + /** * Overloaded constructor for `RequestSpawnPoint`. * @param zone_number this zone's numeric identifier * @param player the `Player` object * @param spawn_group the category of spawn points the request wants searched */ - def apply(zone_number : Int, player : Player, spawn_group : Int) : RequestSpawnPoint = { + def apply(zone_number: Int, player: Player, spawn_group: Int): RequestSpawnPoint = { RequestSpawnPoint(zone_number, player.Position, player.Faction, spawn_group) } } @@ -698,16 +766,22 @@ object Zone { * @param faction which empire's spawn options should be available * @param target the identifier of the spawn object */ - final case class RequestSpecificSpawnPoint(zone_number : Int, position : Vector3, faction : PlanetSideEmpire.Value, target : PlanetSideGUID) + final case class RequestSpecificSpawnPoint( + zone_number: Int, + position: Vector3, + faction: PlanetSideEmpire.Value, + target: PlanetSideGUID + ) object RequestSpecificSpawnPoint { + /** * Overloaded constructor for `RequestSpecificSpawnPoint`. * @param zone_number this zone's numeric identifier * @param player the `Player` object * @param target the identifier of the spawn object */ - def apply(zone_number : Int, player : Player, target : PlanetSideGUID) : RequestSpecificSpawnPoint = { + def apply(zone_number: Int, player: Player, target: PlanetSideGUID): RequestSpecificSpawnPoint = { RequestSpecificSpawnPoint(zone_number, player.Position, player.Faction, target) } } @@ -717,7 +791,8 @@ object Zone { * @param zone_id the zone's text identifier * @param spawn_point the spawn point holding object */ - final case class SpawnPoint(zone_id : String, spawn_point : net.psforever.objects.SpawnPoint) + 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 @@ -725,51 +800,52 @@ object Zone { * if `None`, then the previous `zone_number` could not be found; * otherwise, no spawn points could be found in the zone */ - final case class NoValidSpawnPoint(zone_number : Int, spawn_group : Option[Int]) + final case class NoValidSpawnPoint(zone_number: Int, spawn_group: Option[Int]) } object Ground { - final case class DropItem(item : Equipment, pos : Vector3, orient : Vector3) - final case class ItemOnGround(item : Equipment, pos : Vector3, orient : Vector3) - final case class CanNotDropItem(zone : Zone, item : Equipment, reason : String) + final case class DropItem(item: Equipment, pos: Vector3, orient: Vector3) + final case class ItemOnGround(item: Equipment, pos: Vector3, orient: Vector3) + final case class CanNotDropItem(zone: Zone, item: Equipment, reason: String) - final case class PickupItem(item_guid : PlanetSideGUID) - final case class ItemInHand(item : Equipment) - final case class CanNotPickupItem(zone : Zone, item_guid : PlanetSideGUID, reason : String) + final case class PickupItem(item_guid: PlanetSideGUID) + final case class ItemInHand(item: Equipment) + final case class CanNotPickupItem(zone: Zone, item_guid: PlanetSideGUID, reason: String) - final case class RemoveItem(item_guid : PlanetSideGUID) + final case class RemoveItem(item_guid: PlanetSideGUID) } object Deployable { - final case class Build(obj : PlanetSideGameObject with Deployable, withTool : ConstructionItem) - final case class DeployableIsBuilt(obj : PlanetSideGameObject with Deployable, withTool : ConstructionItem) + final case class Build(obj: PlanetSideGameObject with Deployable, withTool: ConstructionItem) + final case class DeployableIsBuilt(obj: PlanetSideGameObject with Deployable, withTool: ConstructionItem) - final case class Dismiss(obj : PlanetSideGameObject with Deployable) - final case class DeployableIsDismissed(obj : PlanetSideGameObject with Deployable) + final case class Dismiss(obj: PlanetSideGameObject with Deployable) + final case class DeployableIsDismissed(obj: PlanetSideGameObject with Deployable) } object Vehicle { - final case class Spawn(vehicle : Vehicle) + final case class Spawn(vehicle: Vehicle) - final case class Despawn(vehicle : Vehicle) + final case class Despawn(vehicle: Vehicle) - final case class CanNotSpawn(zone : Zone, vehicle : Vehicle, reason : String) + final case class CanNotSpawn(zone: Zone, vehicle: Vehicle, reason: String) - final case class CanNotDespawn(zone : Zone, vehicle : Vehicle, reason : String) + final case class CanNotDespawn(zone: Zone, vehicle: Vehicle, reason: String) } object HotSpot { - final case class Activity(defender : SourceEntry, attacker : SourceEntry, location : Vector3) + final case class Activity(defender: SourceEntry, attacker: SourceEntry, location: Vector3) final case class Cleanup() final case class ClearAll() - final case class Update(faction : PlanetSideEmpire.Value, zone_num : Int, priority : Int, info : List[HotSpotInfo]) + final case class Update(faction: PlanetSideEmpire.Value, zone_num: Int, priority: Int, info: List[HotSpotInfo]) final case class UpdateNow() object Rules { + /** * Produce hotspot coordinates based on map coordinates. * Return the same coordinate as output that was input. @@ -777,7 +853,7 @@ object Zone { * @param pos the absolute position of the activity reported * @return the position for a hotspot */ - def OneToOne(pos : Vector3) : Vector3 = pos + def OneToOne(pos: Vector3): Vector3 = pos /** * Determine a duration for which the hotspot will be displayed on the zone map. @@ -786,7 +862,7 @@ object Zone { * @param attacker the attacking party * @return the duration */ - def NoTime(defender : SourceEntry, attacker : SourceEntry) : FiniteDuration = 0 seconds + def NoTime(defender: SourceEntry, attacker: SourceEntry): FiniteDuration = 0 seconds } } @@ -796,13 +872,15 @@ object Zone { * @see `Zone.ClientInitialization()`
* `InterstallarCluster` */ - final case class ClientInitialization(zone : Zone) + final case class ClientInitialization(zone: Zone) object EquipmentIs { + /** * Tha base `trait` connecting all `Equipment` object location tokens. */ sealed trait ItemLocation + /** * The target item is contained within another object. * @see `GridInventory`
@@ -810,12 +888,14 @@ object Zone { * @param obj the containing object * @param index the slot where the target is located */ - final case class InContainer(obj : Container, index : Int) extends ItemLocation + final case class InContainer(obj: Container, index: Int) extends ItemLocation + /** * The target item is found on the Ground. * @see `ZoneGroundActor` */ final case class OnGround() extends ItemLocation + /** * The target item exists but could not be found belonging to any expected region of the location. */ @@ -837,18 +917,18 @@ object Zone { * @return a token that explains where the object is, if it is found in this zone; * `None` is the token that is used to indicate not having been found */ - def Where(equipment : Equipment, guid : PlanetSideGUID, continent : Zone) : Option[Zone.EquipmentIs.ItemLocation] = { + def Where(equipment: Equipment, guid: PlanetSideGUID, continent: Zone): Option[Zone.EquipmentIs.ItemLocation] = { continent.GUID(guid) match { case Some(_) => ((continent.LivePlayers ++ continent.Corpses).find(_.Find(guid).nonEmpty) match { case Some(tplayer) => Some((tplayer, tplayer.Find(guid))) - case _ => None + case _ => None }).orElse(continent.Vehicles.find(_.Find(guid).nonEmpty) match { case Some(vehicle) => Some((vehicle, vehicle.Find(guid))) - case _ => None + case _ => None }).orElse(continent.Players.find(_.Locker.Find(guid).nonEmpty) match { case Some(avatar) => Some((avatar.Locker, avatar.Locker.Find(guid))) - case _ => None + case _ => None }) match { case Some((obj, Some(index))) => Some(Zone.EquipmentIs.InContainer(obj, index)) diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneActor.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneActor.scala index 6a708148..a67b8ea9 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneActor.scala @@ -15,12 +15,12 @@ import org.log4s.Logger * na * @param zone the `Zone` governed by this `Actor` */ -class ZoneActor(zone : Zone) extends Actor { +class ZoneActor(zone: Zone) extends Actor { private[this] val log = org.log4s.getLogger - def receive : Receive = Init + def receive: Receive = Init - def Init : Receive = { + def Init: Receive = { case Zone.Init() => zone.Init ZoneSetupCheck() @@ -29,7 +29,7 @@ class ZoneActor(zone : Zone) extends Actor { case _ => ; } - def Processing : Receive = { + def Processing: Receive = { //frwd to Population Actor case msg @ Zone.Population.Join => zone.Population forward msg @@ -70,7 +70,7 @@ class ZoneActor(zone : Zone) extends Actor { case msg @ Zone.Vehicle.Despawn => zone.Transport forward msg - //frwd to Projector actor + //frwd to Projector actor case msg @ Zone.HotSpot.Activity => zone.Activity forward msg @@ -82,7 +82,7 @@ class ZoneActor(zone : Zone) extends Actor { //own case Zone.Lattice.RequestSpawnPoint(zone_number, position, faction, spawn_group) => - if(zone_number == zone.Number) { + if (zone_number == zone.Number) { ZoneActor.FindLocalSpawnPointsInZone(zone, position, faction, spawn_group) match { case Some(Nil) | None => sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, Some(spawn_group)) @@ -94,55 +94,55 @@ class ZoneActor(zone : Zone) extends Actor { val tube = scala.util.Random.shuffle(tubes).head sender ! Zone.Lattice.SpawnPoint(zone.Id, tube) } - } - else { //wrong zone_number + } else { //wrong zone_number sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None) } case Zone.Lattice.RequestSpecificSpawnPoint(zone_number, _, faction, target) => - if(zone_number == zone.Number) { + if (zone_number == zone.Number) { //is our spawn point some other privileged vehicle? - zone.Vehicles.collectFirst({ - case vehicle : SpawnPoint if vehicle.Faction == faction && vehicle.GUID == target => - Some(vehicle) //the vehicle itself is the spawn point - case vehicle if vehicle.Faction == faction && vehicle.GUID == target => - vehicle.Utilities.values.find { - util => + zone.Vehicles + .collectFirst({ + case vehicle: SpawnPoint if vehicle.Faction == faction && vehicle.GUID == target => + Some(vehicle) //the vehicle itself is the spawn point + case vehicle if vehicle.Faction == 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 == faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast - case _ => - building.Faction == faction + } match { + case None => + None + case Some(util) => + Some(util().asInstanceOf[SpawnTube]) //the vehicle's utility is the spawn point } - } - 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} + .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 == faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast + case _ => + building.Faction == faction + } } - }) match { - case Some(point : SpawnPoint) => + 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 + } else { //wrong zone_number sender ! Zone.Lattice.NoValidSpawnPoint(zone_number, None) } @@ -150,62 +150,67 @@ class ZoneActor(zone : Zone) extends Actor { log.warn(s"Received unexpected message - $msg") } - def ZoneSetupCheck() : Int = { + def ZoneSetupCheck(): Int = { import ZoneActor._ - val map = zone.Map - 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 map = zone.Map + 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) //check bases - map.ObjectToBuilding.values.toSet[Int].foreach(building_id => { - val target = zone.Building(building_id) - if(target.isEmpty) { - slog.error(s"expected a building for id #$building_id") - errors.incrementAndGet() - } - else if(!target.get.HasGUID) { - slog.error(s"building #$building_id was not registered") - errors.incrementAndGet() - } - }) + map.ObjectToBuilding.values + .toSet[Int] + .foreach(building_id => { + val target = zone.Building(building_id) + if (target.isEmpty) { + slog.error(s"expected a building for id #$building_id") + errors.incrementAndGet() + } else if (!target.get.HasGUID) { + slog.error(s"building #$building_id was not registered") + errors.incrementAndGet() + } + }) //check base to object associations map.ObjectToBuilding.keys.foreach(object_guid => - if(guid(object_guid).isEmpty) { + if (guid(object_guid).isEmpty) { slog.error(s"expected object id $object_guid to exist, but it did not") errors.incrementAndGet() } ) //check door to lock association - map.DoorToLock.foreach({ case(door_guid, lock_guid) => - validateObject(door_guid, DoorCheck, "door") - validateObject(lock_guid, LockCheck, "IFF lock") + 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) => - validateObject(term_guid, TerminalCheck, "vehicle terminal") - validateObject(pad_guid, VehicleSpawnPadCheck, "vehicle spawn pad") + 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) => - validateObject(mech_guid, ImplantMechCheck, "implant terminal mech") - validateObject(interface_guid, TerminalCheck, "implant terminal interface") + 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) => - 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) { - slog.error(s"expected weapon $weapon_guid has an unregistered ammunition unit") - errors.incrementAndGet() + 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) { + slog.error(s"expected weapon $weapon_guid has an unregistered ammunition unit") + errors.incrementAndGet() + } } - } }) //output number of errors @@ -214,6 +219,7 @@ class ZoneActor(zone : Zone) extends Actor { } object ZoneActor { + /** * na * @param zone na @@ -222,20 +228,24 @@ object ZoneActor { * @param spawn_group na * @return na */ - def FindLocalSpawnPointsInZone(zone : Zone, position : Vector3, faction : PlanetSideEmpire.Value, spawn_group : Int) : Option[List[SpawnPoint]] = { - (if(spawn_group == 2) { - FindVehicleSpawnPointsInZone(zone, position, faction) - } - else { - FindBuildingSpawnPointsInZone(zone, position, faction, spawn_group) - }) - .headOption match { - case None | Some((_, Nil)) => - None - case Some((_, tubes)) => - Some(tubes toList) - } + def FindLocalSpawnPointsInZone( + zone: Zone, + position: Vector3, + faction: PlanetSideEmpire.Value, + spawn_group: Int + ): Option[List[SpawnPoint]] = { + (if (spawn_group == 2) { + FindVehicleSpawnPointsInZone(zone, position, faction) + } else { + FindBuildingSpawnPointsInZone(zone, position, faction, spawn_group) + }).headOption match { + case None | Some((_, Nil)) => + None + case Some((_, tubes)) => + Some(tubes toList) } + } + /** * na * @param zone na @@ -243,7 +253,11 @@ object ZoneActor { * @param faction na * @return na */ - private def FindVehicleSpawnPointsInZone(zone : Zone, position : Vector3, faction : PlanetSideEmpire.Value) : List[(AmenityOwner, Iterable[SpawnTube])] = { + private def FindVehicleSpawnPointsInZone( + zone: Zone, + position: Vector3, + faction: PlanetSideEmpire.Value + ): List[(AmenityOwner, Iterable[SpawnTube])] = { val xy = position.xy //ams zone.Vehicles @@ -272,36 +286,40 @@ object ZoneActor { * @param spawn_group na * @return na */ - private def FindBuildingSpawnPointsInZone(zone : Zone, position : Vector3, faction : PlanetSideEmpire.Value, spawn_group : Int) : List[(AmenityOwner, Iterable[SpawnPoint])] = { + private def FindBuildingSpawnPointsInZone( + zone: Zone, + position: Vector3, + faction: PlanetSideEmpire.Value, + spawn_group: Int + ): List[(AmenityOwner, Iterable[SpawnPoint])] = { val xy = position.xy //facilities, towers, warp gates, and other buildings - val buildingTypeSet = if(spawn_group == 0) { + val buildingTypeSet = if (spawn_group == 0) { Set(StructureType.Facility, StructureType.Tower, StructureType.Building) - } - else if(spawn_group == 6) { + } else if (spawn_group == 6) { Set(StructureType.Tower) - } - else if(spawn_group == 7) { + } else if (spawn_group == 7) { Set(StructureType.Facility, StructureType.Building) - } - else if(spawn_group == 12) { + } else if (spawn_group == 12) { Set(StructureType.WarpGate) - } - else { + } else { Set.empty[StructureType.Value] } - zone.SpawnGroups() - .collect({ case (building, spawns) if - buildingTypeSet.contains(building.BuildingType) && (building match { - case wg : WarpGate => - building.Faction == faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast - case _ => - building.Faction == faction && spawns.nonEmpty && spawns.exists(_.Offline == false) - }) => (building, spawns.filter(_.Offline == false)) + zone + .SpawnGroups() + .collect({ + case (building, spawns) if buildingTypeSet.contains(building.BuildingType) && (building match { + case wg: WarpGate => + building.Faction == faction || building.Faction == PlanetSideEmpire.NEUTRAL || wg.Broadcast + case _ => + building.Faction == faction && spawns.nonEmpty && spawns.exists(_.Offline == false) + }) => + (building, spawns.filter(_.Offline == false)) }) .toSeq - .sortBy({ case (building, _) => - Vector3.DistanceSquared(xy, building.Position.xy) + .sortBy({ + case (building, _) => + Vector3.DistanceSquared(xy, building.Position.xy) }) .toList } @@ -319,57 +337,58 @@ 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)) { + if (!test(guid(object_guid).get)) { elog.error(s"expected id $object_guid to be a $description, but it was not") errorCounter.incrementAndGet() false - } - else { + } else { true } - } - catch { - case e : Exception => + } catch { + case e: Exception => elog.error(s"expected a $description at id $object_guid but no object is initialized - $e") errorCounter.incrementAndGet() false } } - def LockCheck(obj : PlanetSideGameObject) : Boolean = { + def LockCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.locks.IFFLock obj.isInstanceOf[IFFLock] } - def DoorCheck(obj : PlanetSideGameObject) : Boolean = { + def DoorCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.doors.Door obj.isInstanceOf[Door] } - def TerminalCheck(obj : PlanetSideGameObject) : Boolean = { + def TerminalCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.terminals.Terminal obj.isInstanceOf[Terminal] } - def ImplantMechCheck(obj : PlanetSideGameObject) : Boolean = { + def ImplantMechCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.implantmech.ImplantTerminalMech obj.isInstanceOf[ImplantTerminalMech] } - def VehicleSpawnPadCheck(obj : PlanetSideGameObject) : Boolean = { + def VehicleSpawnPadCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.pad.VehicleSpawnPad obj.isInstanceOf[VehicleSpawnPad] } - def FacilityTurretCheck(obj : PlanetSideGameObject) : Boolean = { + def FacilityTurretCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.serverobject.turret.FacilityTurret obj.isInstanceOf[FacilityTurret] } - def WeaponCheck(obj : PlanetSideGameObject) : Boolean = { + def WeaponCheck(obj: PlanetSideGameObject): Boolean = { import net.psforever.objects.Tool obj.isInstanceOf[Tool] } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneAware.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneAware.scala index b71c5ed0..2ecf5247 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneAware.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneAware.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017 PSForever package net.psforever.objects.zones -import net.psforever.objects.zones.{ Zone => World } +import net.psforever.objects.zones.{Zone => World} /** * The entity must be able to recall on which of the defined game worlds (zones) that it exists on command. @@ -12,36 +12,37 @@ import net.psforever.objects.zones.{ Zone => World } * @see `Zone` */ trait ZoneAware { - private var zoneRef : World = World.Nowhere + private var zoneRef: World = World.Nowhere + /** * Normally, an entity is the resident of a `Zone` object and that is what it considers its "continent". * Since the entity may switch between `Zone` objects, however, * if the type of entity is allowed to do that, * it may become useful to allow the entity to identify as belonging to its future zone earlier than reference assignment. */ - private var continent : Option[String] = None + private var continent: Option[String] = None - def Zone : World = zoneRef + def Zone: World = zoneRef /** * When assigning a new `Zone` object for the `Vehicle` object, eliminate * @param zone a reference to the `Zone` object * @return a reference to the `Zone` object */ - def Zone_=(zone : World) : World = { + def Zone_=(zone: World): World = { continent = None zoneRef = zone Zone } - def Continent : String = continent.getOrElse(Zone.Id) + def Continent: String = continent.getOrElse(Zone.Id) /** * Give the entity a custom `Zone` identifier. * @param zoneId the custom identifier of the `Zone` object * @return the identifier of the `Zone` object */ - def Continent_=(zoneId : String) : String = { + def Continent_=(zoneId: String): String = { continent = Some(zoneId) Continent } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneDeployableActor.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneDeployableActor.scala index a53ea99d..c782689e 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneDeployableActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneDeployableActor.scala @@ -13,14 +13,14 @@ import scala.collection.mutable.ListBuffer * na * @param zone the `Zone` object */ -class ZoneDeployableActor(zone : Zone, deployableList : ListBuffer[PlanetSideGameObject with Deployable]) extends Actor { +class ZoneDeployableActor(zone: Zone, deployableList: ListBuffer[PlanetSideGameObject with Deployable]) extends Actor { import ZoneDeployableActor._ - def receive : Receive = { + def receive: Receive = { case Zone.Deployable.Build(obj, tool) => - if(DeployableBuild(obj, deployableList)) { + if (DeployableBuild(obj, deployableList)) { obj match { - case o : PlanetSideServerObject => + case o: PlanetSideServerObject => obj.Definition.Initialize(o, context) case _ => obj.Definition.Initialize(obj, context) @@ -30,9 +30,9 @@ class ZoneDeployableActor(zone : Zone, deployableList : ListBuffer[PlanetSideGam } case Zone.Deployable.Dismiss(obj) => - if(DeployableDismiss(obj, deployableList)) { + if (DeployableDismiss(obj, deployableList)) { obj match { - case o : PlanetSideServerObject => + case o: PlanetSideServerObject => obj.Definition.Uninitialize(o, context) case _ => obj.Definition.Uninitialize(obj, context) @@ -45,7 +45,10 @@ class ZoneDeployableActor(zone : Zone, deployableList : ListBuffer[PlanetSideGam } object ZoneDeployableActor { - def DeployableBuild(obj : PlanetSideGameObject with Deployable, deployableList : ListBuffer[PlanetSideGameObject with Deployable]) : Boolean = { + def DeployableBuild( + obj: PlanetSideGameObject with Deployable, + deployableList: ListBuffer[PlanetSideGameObject with Deployable] + ): Boolean = { deployableList.find(d => d == obj) match { case Some(_) => false @@ -55,8 +58,10 @@ object ZoneDeployableActor { } } - - def DeployableDismiss(obj : PlanetSideGameObject with Deployable, deployableList : ListBuffer[PlanetSideGameObject with Deployable]) : Boolean = { + def DeployableDismiss( + obj: PlanetSideGameObject with Deployable, + deployableList: ListBuffer[PlanetSideGameObject with Deployable] + ): Boolean = { recursiveFindDeployable(deployableList.iterator, obj) match { case None => false @@ -66,15 +71,17 @@ object ZoneDeployableActor { } } - @tailrec final def recursiveFindDeployable(iter : Iterator[PlanetSideGameObject with Deployable], target : PlanetSideGameObject with Deployable, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec final def recursiveFindDeployable( + iter: Iterator[PlanetSideGameObject with Deployable], + target: PlanetSideGameObject with Deployable, + index: Int = 0 + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { - if(iter.next == target) { + } else { + if (iter.next == target) { Some(index) - } - else { + } else { recursiveFindDeployable(iter, target, index + 1) } } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneGroundActor.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneGroundActor.scala index 41d375c9..8bcf7fe1 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneGroundActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneGroundActor.scala @@ -14,27 +14,27 @@ import scala.collection.mutable.ListBuffer * na * @param equipmentOnGround a `List` of items (`Equipment`) dropped by players on the ground and can be collected again */ -class ZoneGroundActor(zone : Zone, equipmentOnGround : ListBuffer[Equipment]) extends Actor { +class ZoneGroundActor(zone: Zone, equipmentOnGround: ListBuffer[Equipment]) extends Actor { //private[this] val log = org.log4s.getLogger - def receive : Receive = { + def receive: Receive = { case Zone.Ground.DropItem(item, pos, orient) => - sender ! (if(!item.HasGUID) { - Zone.Ground.CanNotDropItem(zone, item, "not registered yet") - } - else if(zone.GUID(item.GUID).isEmpty) { - Zone.Ground.CanNotDropItem(zone, item, "registered to some other zone") - } - else if(equipmentOnGround.contains(item)) { - Zone.Ground.CanNotDropItem(zone, item, "already dropped") - } - else { - equipmentOnGround += item - item.Position = pos - item.Orientation = orient - zone.AvatarEvents ! AvatarServiceMessage(zone.Id, AvatarAction.DropItem(Service.defaultPlayerGUID, item)) - Zone.Ground.ItemOnGround(item, pos, orient) - }) + sender ! (if (!item.HasGUID) { + Zone.Ground.CanNotDropItem(zone, item, "not registered yet") + } else if (zone.GUID(item.GUID).isEmpty) { + Zone.Ground.CanNotDropItem(zone, item, "registered to some other zone") + } else if (equipmentOnGround.contains(item)) { + Zone.Ground.CanNotDropItem(zone, item, "already dropped") + } else { + equipmentOnGround += item + item.Position = pos + item.Orientation = orient + zone.AvatarEvents ! AvatarServiceMessage( + zone.Id, + AvatarAction.DropItem(Service.defaultPlayerGUID, item) + ) + Zone.Ground.ItemOnGround(item, pos, orient) + }) case Zone.Ground.PickupItem(item_guid) => sender ! (FindItemOnGround(item_guid) match { @@ -62,7 +62,7 @@ class ZoneGroundActor(zone : Zone, equipmentOnGround : ListBuffer[Equipment]) ex * @return the index of the object matching `item_guid`, if found; * `None`, otherwise */ - private def FindItemOnGround(item_guid : PlanetSideGUID) : Option[Equipment] = { + private def FindItemOnGround(item_guid: PlanetSideGUID): Option[Equipment] = { recursiveFindItemOnGround(equipmentOnGround.iterator, item_guid) match { case Some(index) => Some(equipmentOnGround.remove(index)) @@ -79,16 +79,18 @@ class ZoneGroundActor(zone : Zone, equipmentOnGround : ListBuffer[Equipment]) ex * @return the index of the object matching `item_guid`, if found; * `None`, otherwise */ - @tailrec private def recursiveFindItemOnGround(iter : Iterator[Equipment], item_guid : PlanetSideGUID, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursiveFindItemOnGround( + iter: Iterator[Equipment], + item_guid: PlanetSideGUID, + index: Int = 0 + ): Option[Int] = { + if (!iter.hasNext) { None - } - else { - val item : Equipment = iter.next - if(item.GUID == item_guid) { + } else { + val item: Equipment = iter.next + if (item.GUID == item_guid) { Some(index) - } - else { + } else { recursiveFindItemOnGround(iter, item_guid, index + 1) } } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneHotSpotProjector.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneHotSpotProjector.scala index 9aed54e7..b795dd93 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneHotSpotProjector.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneHotSpotProjector.scala @@ -28,15 +28,21 @@ import scala.concurrent.duration._ * @param dataList an external list used for storing activity for prolonged periods of time * @param dataBlanking the period of decay time before prolonged activity information is forgotten */ -class ZoneHotSpotDisplay(zone : Zone, - outputList : ListBuffer[HotSpotInfo], - outputBlanking : FiniteDuration, - dataList : ListBuffer[HotSpotInfo], - dataBlanking : FiniteDuration) extends Actor { - val projector = context.actorOf(Props(classOf[ZoneHotSpotProjector], zone, outputList, outputBlanking), s"${zone.Id}-hotspot-projector") - val backup = context.actorOf(Props(classOf[ZoneHotSpotHistory], zone, dataList, dataBlanking), s"${zone.Id}-hotspot-backup") +class ZoneHotSpotDisplay( + zone: Zone, + outputList: ListBuffer[HotSpotInfo], + outputBlanking: FiniteDuration, + dataList: ListBuffer[HotSpotInfo], + dataBlanking: FiniteDuration +) extends Actor { + val projector = context.actorOf( + Props(classOf[ZoneHotSpotProjector], zone, outputList, outputBlanking), + s"${zone.Id}-hotspot-projector" + ) + val backup = + context.actorOf(Props(classOf[ZoneHotSpotHistory], zone, dataList, dataBlanking), s"${zone.Id}-hotspot-backup") - def receive : Receive = { + def receive: Receive = { case _ if sender == projector || sender == backup => ; //catch and disrupt cyclic messaging paths case msg => projector ! msg @@ -55,13 +61,16 @@ class ZoneHotSpotDisplay(zone : Zone, * @param hotspots the data structure of hot spot information that this projector will be leveraging * @param blankingTime how long to wait in between blanking periods */ -class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blankingTime : FiniteDuration) extends Actor { +class ZoneHotSpotProjector(zone: Zone, hotspots: ListBuffer[HotSpotInfo], blankingTime: FiniteDuration) extends Actor { + /** a hook for the `GalaxyService` used to broadcast messages */ - var galaxy : ActorRef = ActorRef.noSender + var galaxy: ActorRef = ActorRef.noSender + /** the timer for the blanking process */ - var blanking : Cancellable = Default.Cancellable + var blanking: Cancellable = Default.Cancellable + /** how long to wait in between blanking periods while hotspots decay */ - var blankingDelay : FiniteDuration = blankingTime + var blankingDelay: FiniteDuration = blankingTime private[this] val log = org.log4s.getLogger(s"${zone.Id.capitalize}HotSpotProjector") @@ -71,7 +80,7 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * @see `ServiceManager` * @see `ServiceManager.Lookup` */ - override def preStart() : Unit = { + override def preStart(): Unit = { super.preStart() ServiceManager.serviceManager ! ServiceManager.Lookup("galaxy") } @@ -80,13 +89,13 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * Actions that occur after this `Actor` is formally stopped. * Cancel all future blanking actions and release the `GalaxyService` hook. */ - override def postStop() : Unit = { + override def postStop(): Unit = { blanking.cancel galaxy = ActorRef.noSender super.postStop() } - def receive : Receive = Initializing + def receive: Receive = Initializing /** * Accept the `GalaxyService` hook and switch to active message processing when it arrives. @@ -97,7 +106,7 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * @see `ZoneHotSpotProjector.UpdateMappingFunction` * @return a partial function */ - def Initializing : Receive = { + def Initializing: Receive = { case ServiceManager.LookupResult("galaxy", galaxyRef) => galaxy = galaxyRef context.become(Established) @@ -125,7 +134,7 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * @see `ZoneHotSpotProjector.UpdateMappingFunction` * @return a partial function */ - def Established : Receive = { + def Established: Receive = { case ZoneHotSpotProjector.UpdateDurationFunction() => blanking.cancel UpdateDurationFunction() @@ -147,10 +156,12 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan val defenderFaction = defender.Faction val attackerFaction = attacker.Faction val noPriorHotSpots = hotspots.isEmpty - val duration = zone.HotSpotTimeFunction(defender, attacker) - if(duration.toNanos > 0) { - val hotspot = TryHotSpot( zone.HotSpotCoordinateFunction(location) ) - log.trace(s"updating activity status for ${zone.Id} hotspot x=${hotspot.DisplayLocation.x} y=${hotspot.DisplayLocation.y}") + val duration = zone.HotSpotTimeFunction(defender, attacker) + if (duration.toNanos > 0) { + val hotspot = TryHotSpot(zone.HotSpotCoordinateFunction(location)) + log.trace( + s"updating activity status for ${zone.Id} hotspot x=${hotspot.DisplayLocation.x} y=${hotspot.DisplayLocation.y}" + ) val noPriorActivity = !(hotspot.ActivityBy(defenderFaction) && hotspot.ActivityBy(attackerFaction)) //update the activity report for these factions val affectedFactions = Seq(attackerFaction, defenderFaction) @@ -163,9 +174,9 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan } } //if the level of activity changed for one of the participants or the number of hotspots was zero - if(noPriorActivity || noPriorHotSpots) { + if (noPriorActivity || noPriorHotSpots) { UpdateHotSpots(affectedFactions, hotspots) - if(noPriorHotSpots) { + if (noPriorHotSpots) { import scala.concurrent.ExecutionContext.Implicits.global blanking.cancel blanking = context.system.scheduler.scheduleOnce(blankingDelay, self, ZoneHotSpotProjector.BlankingPhase()) @@ -179,7 +190,7 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan case ZoneHotSpotProjector.BlankingPhase() | Zone.HotSpot.Cleanup() => blanking.cancel - val curr : Long = System.nanoTime + val curr: Long = System.nanoTime //blanking dated activity reports val changed = hotspots.flatMap(spot => { spot.Activity.collect { @@ -190,28 +201,27 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan }) //collect and re-assign still-relevant hotspots val spots = hotspots.filter(spot => { - spot.Activity - .values + spot.Activity.values .collect { case a if a.Heat > 0 => true } .foldLeft(false)(_ || _) }) - val newSize = spots.size + val newSize = spots.size val changesOnMap = hotspots.size - newSize log.trace(s"blanking out $changesOnMap hotspots from zone ${zone.Id}; $newSize remain active") hotspots.clear hotspots.insertAll(0, spots) //other hotspots still need to be blanked later - if(spots.nonEmpty) { + if (spots.nonEmpty) { import scala.concurrent.ExecutionContext.Implicits.global blanking.cancel blanking = context.system.scheduler.scheduleOnce(blankingDelay, self, ZoneHotSpotProjector.BlankingPhase()) } //if hotspots changed, redraw the remaining ones for the groups that changed - if(changed.nonEmpty && changesOnMap > 0) { - UpdateHotSpots(changed.map( { case (a : PlanetSideEmpire.Value, _) => a } ).toSet, spots) + if (changed.nonEmpty && changesOnMap > 0) { + UpdateHotSpots(changed.map({ case (a: PlanetSideEmpire.Value, _) => a }).toSet, spots) } case Zone.HotSpot.ClearAll() => @@ -230,7 +240,7 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * @param displayLoc the location for the hotpot that was normalized by the coordinate mapping function * @return the hotspot data that corresponds to this location */ - def TryHotSpot(displayLoc : Vector3) : HotSpotInfo = { + def TryHotSpot(displayLoc: Vector3): HotSpotInfo = { hotspots.find(spot => spot.DisplayLocation == displayLoc) match { case Some(spot) => //hotspot already exists @@ -263,12 +273,12 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * Assign new functionality for determining where to depict howspots on a given zone map. * Recalculate all current hotspot information. */ - def UpdateMappingFunction() : Unit = { + def UpdateMappingFunction(): Unit = { val redoneSpots = hotspots.map { spot => - val newSpot = new HotSpotInfo( zone.HotSpotCoordinateFunction(spot.DisplayLocation) ) + val newSpot = new HotSpotInfo(zone.HotSpotCoordinateFunction(spot.DisplayLocation)) PlanetSideEmpire.values.foreach { faction => - if(spot.ActivityBy(faction)) { - newSpot.Activity(faction).Report( spot.Activity(faction).Heat ) + if (spot.ActivityBy(faction)) { + newSpot.Activity(faction).Report(spot.Activity(faction).Heat) newSpot.Activity(faction).Duration = spot.Activity(faction).Duration } } @@ -288,8 +298,8 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * if empty or contains no information for a selected group, * that group's hotspots will be eliminated (blanked) as a result */ - def UpdateHotSpots(affectedFactions : Iterable[PlanetSideEmpire.Value], hotSpotInfos : Iterable[HotSpotInfo]) : Unit = { - val zoneNumber = zone.Number + def UpdateHotSpots(affectedFactions: Iterable[PlanetSideEmpire.Value], hotSpotInfos: Iterable[HotSpotInfo]): Unit = { + val zoneNumber = zone.Number val hotSpotInfoList = hotSpotInfos.toList affectedFactions.foreach(faction => galaxy ! Zone.HotSpot.Update( @@ -314,23 +324,30 @@ class ZoneHotSpotProjector(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blan * @param hotspots the data structure of hot spot information that this projector will be leveraging * @param blankingTime how long to wait in between blanking periods */ -class ZoneHotSpotHistory(zone : Zone, hotspots : ListBuffer[HotSpotInfo], blankingTime : FiniteDuration) extends ZoneHotSpotProjector(zone, hotspots, blankingTime) { +class ZoneHotSpotHistory(zone: Zone, hotspots: ListBuffer[HotSpotInfo], blankingTime: FiniteDuration) + extends ZoneHotSpotProjector(zone, hotspots, blankingTime) { /* the galaxy service is unnecessary */ - override def preStart() : Unit = { context.become(Established) } + override def preStart(): Unit = { context.become(Established) } /* this component does not actually the visible hotspots * a duplicate of the projector device otherwise */ - override def UpdateHotSpots(affectedFactions : Iterable[PlanetSideEmpire.Value], hotSpotInfos : Iterable[HotSpotInfo]) : Unit = { } + override def UpdateHotSpots( + affectedFactions: Iterable[PlanetSideEmpire.Value], + hotSpotInfos: Iterable[HotSpotInfo] + ): Unit = {} } object ZoneHotSpotProjector { + /** * Reload the current hotspots for one more blanking phase. */ final case class UpdateDurationFunction() + /** * Reload the current hotspots by directly mapping the current ones to new positions. */ final case class UpdateMappingFunction() + /** * The internal message for eliminating hotspot data whose lifespan has exceeded its set duration. */ @@ -342,7 +359,7 @@ object ZoneHotSpotProjector { * @param hotSpotInfos the total activity information * @return the discovered activity information that aligns with `faction` */ - def SpecificHotSpotInfo(faction : PlanetSideEmpire.Value, hotSpotInfos : List[HotSpotInfo]) : List[HotSpotInfo] = { + def SpecificHotSpotInfo(faction: PlanetSideEmpire.Value, hotSpotInfos: List[HotSpotInfo]): List[HotSpotInfo] = { hotSpotInfos.filter { spot => spot.ActivityBy(faction) } } } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneMap.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneMap.scala index 71a47ec2..7991d13b 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneMap.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneMap.scala @@ -25,32 +25,32 @@ import net.psforever.objects.serverobject.{PlanetSideServerObject, ServerObjectB * @see `ServerObjectBuilder`
* `LoadMapMessage` */ -class ZoneMap(private val name : String) { - private var scale : MapScale = MapScale.Dim8192 - private var localObjects : List[ServerObjectBuilder[_]] = List() - private var linkTurretWeapon : Map[Int, Int] = Map() - private var linkTerminalPad : Map[Int, Int] = Map() - private var linkTerminalInterface : Map[Int, Int] = Map() - private var linkDoorLock : Map[Int, Int] = Map() - private var linkObjectBase : Map[Int, Int] = Map() - private var buildings : Map[(String, Int, Int), FoundationBuilder] = Map() - private var lattice: Set[(String, String)] = Set() - private var checksum : Long = 0 - private var zipLinePaths : List[ZipLinePath] = List() - private var cavern : Boolean = false +class ZoneMap(private val name: String) { + private var scale: MapScale = MapScale.Dim8192 + private var localObjects: List[ServerObjectBuilder[_]] = List() + private var linkTurretWeapon: Map[Int, Int] = Map() + private var linkTerminalPad: Map[Int, Int] = Map() + private var linkTerminalInterface: Map[Int, Int] = Map() + private var linkDoorLock: Map[Int, Int] = Map() + private var linkObjectBase: Map[Int, Int] = Map() + private var buildings: Map[(String, Int, Int), FoundationBuilder] = Map() + private var lattice: Set[(String, String)] = Set() + private var checksum: Long = 0 + private var zipLinePaths: List[ZipLinePath] = List() + private var cavern: Boolean = false - def Name : String = name + def Name: String = name - def Scale : MapScale = scale + def Scale: MapScale = scale - def Scale_=(dim : MapScale) : MapScale = { + def Scale_=(dim: MapScale): MapScale = { scale = dim Scale } - def Checksum : Long = checksum + def Checksum: Long = checksum - def Checksum_=(value : Long) : Long = { + def Checksum_=(value: Long): Long = { checksum = value Checksum } @@ -59,7 +59,7 @@ class ZoneMap(private val name : String) { * The list of all server object builder wrappers that have been assigned to this `ZoneMap`. * @return the `List` of all `ServerObjectBuilders` known to this `ZoneMap` */ - def LocalObjects : List[ServerObjectBuilder[_]] = { + def LocalObjects: List[ServerObjectBuilder[_]] = { localObjects } @@ -72,80 +72,86 @@ class ZoneMap(private val name : String) { * @param terminal_guid The guid of the terminal this object (typically a spawn pad) should be linked to, if specified * @return the current number of builders */ - def LocalObject[A <: PlanetSideServerObject](id : Int, constructor : ServerObjectBuilder.ConstructorType[A], owning_building_guid : Int = 0, door_guid : Int = 0, terminal_guid: Int = 0) : Int = { - if(id > 0) { + def LocalObject[A <: PlanetSideServerObject]( + id: Int, + constructor: ServerObjectBuilder.ConstructorType[A], + owning_building_guid: Int = 0, + door_guid: Int = 0, + terminal_guid: Int = 0 + ): Int = { + if (id > 0) { localObjects = localObjects :+ ServerObjectBuilder[A](id, constructor) - if(owning_building_guid > 0) { + if (owning_building_guid > 0) { ObjectToBuilding(id, owning_building_guid) } - if(door_guid > 0) { + if (door_guid > 0) { DoorToLock(door_guid, id) } - if(terminal_guid > 0) { + if (terminal_guid > 0) { TerminalToSpawnPad(terminal_guid, id) } } localObjects.size } - def ZipLinePaths : List[ZipLinePath] = zipLinePaths + def ZipLinePaths: List[ZipLinePath] = zipLinePaths def ZipLinePaths(path: ZipLinePath): Int = { zipLinePaths = zipLinePaths :+ path zipLinePaths.size } - def LocalBuildings : Map[(String, Int, Int), FoundationBuilder] = buildings + def LocalBuildings: Map[(String, Int, Int), FoundationBuilder] = buildings - def LocalBuilding(name : String, building_guid : Int, map_id : Int, constructor : FoundationBuilder) : Int = { - if(building_guid > 0) { + def LocalBuilding(name: String, building_guid: Int, map_id: Int, constructor: FoundationBuilder): Int = { + if (building_guid > 0) { buildings = buildings ++ Map((name, building_guid, map_id) -> constructor) } buildings.size } - def ObjectToBuilding : Map[Int, Int] = linkObjectBase + def ObjectToBuilding: Map[Int, Int] = linkObjectBase - def ObjectToBuilding(object_guid : Int, building_id : Int) : Unit = { + def ObjectToBuilding(object_guid: Int, building_id: Int): Unit = { linkObjectBase = linkObjectBase ++ Map(object_guid -> building_id) } - def DoorToLock : Map[Int, Int] = linkDoorLock + def DoorToLock: Map[Int, Int] = linkDoorLock - def DoorToLock(door_guid : Int, lock_guid : Int) : Unit = { + def DoorToLock(door_guid: Int, lock_guid: Int): Unit = { linkDoorLock = linkDoorLock ++ Map(door_guid -> lock_guid) } - def TerminalToSpawnPad : Map[Int, Int] = linkTerminalPad + def TerminalToSpawnPad: Map[Int, Int] = linkTerminalPad - def TerminalToSpawnPad(terminal_guid : Int, pad_guid : Int) : Unit = { + def TerminalToSpawnPad(terminal_guid: Int, pad_guid: Int): Unit = { linkTerminalPad = linkTerminalPad ++ Map(terminal_guid -> pad_guid) } - def TerminalToInterface : Map[Int, Int] = linkTerminalInterface + def TerminalToInterface: Map[Int, Int] = linkTerminalInterface - def TerminalToInterface(terminal_guid : Int, interface_guid : Int) : Unit = { + def TerminalToInterface(terminal_guid: Int, interface_guid: Int): Unit = { linkTerminalInterface = linkTerminalInterface ++ Map(terminal_guid -> interface_guid) } - def TurretToWeapon : Map[Int, Int] = linkTurretWeapon + def TurretToWeapon: Map[Int, Int] = linkTurretWeapon - def TurretToWeapon(turret_guid : Int, weapon_guid : Int) : Unit = { + def TurretToWeapon(turret_guid: Int, weapon_guid: Int): Unit = { linkTurretWeapon = linkTurretWeapon ++ Map(turret_guid -> weapon_guid) } - def LatticeLink : Set[(String, String)] = lattice + def LatticeLink: Set[(String, String)] = lattice - def LatticeLink(source : String, target: String) : Unit = { + def LatticeLink(source: String, target: String): Unit = { lattice = lattice ++ Set((source, target)) } - def Cavern : Boolean = cavern + def Cavern: Boolean = cavern - def Cavern_=(cave : Boolean) : Boolean = { + def Cavern_=(cave: Boolean): Boolean = { cavern = cave Cavern } diff --git a/common/src/main/scala/net/psforever/objects/zones/ZonePopulationActor.scala b/common/src/main/scala/net/psforever/objects/zones/ZonePopulationActor.scala index 3af173e5..b9695009 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZonePopulationActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZonePopulationActor.scala @@ -18,12 +18,13 @@ import scala.collection.mutable.ListBuffer * @param playerMap the mapping of `Avatar` objects to `Player` objects * @param corpseList a list of `Player` objects */ -class ZonePopulationActor(zone : Zone, playerMap : TrieMap[Avatar, Option[Player]], corpseList : ListBuffer[Player]) extends Actor { +class ZonePopulationActor(zone: Zone, playerMap: TrieMap[Avatar, Option[Player]], corpseList: ListBuffer[Player]) + extends Actor { import ZonePopulationActor._ - def receive : Receive = { + def receive: Receive = { case Zone.Population.Join(avatar) => - if(PopulationJoin(avatar, playerMap) && playerMap.size == 1) { + if (PopulationJoin(avatar, playerMap) && playerMap.size == 1) { zone.StartPlayerManagementSystems() } @@ -34,7 +35,7 @@ class ZonePopulationActor(zone : Zone, playerMap : TrieMap[Avatar, Option[Player tplayer.Zone = Zone.Nowhere PlayerLeave(tplayer) sender ! Zone.Population.PlayerHasLeft(zone, player) - if(playerMap.isEmpty) { + if (playerMap.isEmpty) { zone.StopPlayerManagementSystems() } } @@ -43,11 +44,11 @@ class ZonePopulationActor(zone : Zone, playerMap : TrieMap[Avatar, Option[Player PopulationSpawn(avatar, player, playerMap) match { case Some((tplayer, newToZone)) => tplayer.Zone = zone - if(tplayer ne player) { + if (tplayer ne player) { sender ! Zone.Population.PlayerAlreadySpawned(zone, player) - } - else if(newToZone) { - player.Actor = context.actorOf(Props(classOf[PlayerControl], player), name = GetPlayerControlName(player, None)) + } else if (newToZone) { + player.Actor = + context.actorOf(Props(classOf[PlayerControl], player), name = GetPlayerControlName(player, None)) player.Zone = zone } case None => @@ -75,13 +76,16 @@ class ZonePopulationActor(zone : Zone, playerMap : TrieMap[Avatar, Option[Player case _ => (player.Zone == Zone.Nowhere || player.Zone == zone, None) } - if(canBeCorpse && CorpseAdd(player, corpseList)) { - player.Actor = context.actorOf(Props(classOf[CorpseControl], player), name = s"corpse_of_${GetPlayerControlName(player, control)}") + if (canBeCorpse && CorpseAdd(player, corpseList)) { + player.Actor = context.actorOf( + Props(classOf[CorpseControl], player), + name = s"corpse_of_${GetPlayerControlName(player, control)}" + ) player.Zone = zone } case Zone.Corpse.Remove(player) => - if(CorpseRemove(player, corpseList)) { + if (CorpseRemove(player, corpseList)) { PlayerLeave(player) } @@ -90,6 +94,7 @@ class ZonePopulationActor(zone : Zone, playerMap : TrieMap[Avatar, Option[Player } object ZonePopulationActor { + /** * Add an `avatar` as the key of an `Avatar` to `Player` object pair in the given collection. * @param avatar an `Avatar` object @@ -97,7 +102,7 @@ object ZonePopulationActor { * @return true, if the mapping is for a new key; * false, if the key already exists */ - def PopulationJoin(avatar : Avatar, playerMap : TrieMap[Avatar, Option[Player]]) : Boolean = { + def PopulationJoin(avatar: Avatar, playerMap: TrieMap[Avatar, Option[Player]]): Boolean = { playerMap.get(avatar) match { case Some(_) => false @@ -106,6 +111,7 @@ object ZonePopulationActor { true } } + /** * Remove an `avatar` from the key of an `Avatar` to `Player` object pair in the given collection. * If a `Player` object is associated at the time, return it safely. @@ -113,7 +119,7 @@ object ZonePopulationActor { * @param playerMap the mapping of `Avatar` objects to `Player` objects * @return any `Player` object that was associated at the time the `avatar` was removed */ - def PopulationLeave(avatar : Avatar, playerMap : TrieMap[Avatar, Option[Player]]) : Option[Player] = { + def PopulationLeave(avatar: Avatar, playerMap: TrieMap[Avatar, Option[Player]]): Option[Player] = { playerMap.remove(avatar) match { case None => None @@ -132,7 +138,11 @@ object ZonePopulationActor { * and whether that player was added to the zone for the first time; * `None`, if the player should not be introduced to this zone at this time */ - def PopulationSpawn(avatar : Avatar, player : Player, playerMap : TrieMap[Avatar, Option[Player]]) : Option[(Player, Boolean)] = { + def PopulationSpawn( + avatar: Avatar, + player: Player, + playerMap: TrieMap[Avatar, Option[Player]] + ): Option[(Player, Boolean)] = { playerMap.get(avatar) match { case None => None @@ -153,7 +163,7 @@ object ZonePopulationActor { * @param playerMap the mapping of `Avatar` objects to `Player` objects * @return any `Player` object that is associated at the time */ - def PopulationRelease(avatar : Avatar, playerMap : TrieMap[Avatar, Option[Player]]) : Option[Player] = { + def PopulationRelease(avatar: Avatar, playerMap: TrieMap[Avatar, Option[Player]]): Option[Player] = { playerMap.get(avatar) match { case None => None @@ -170,12 +180,11 @@ object ZonePopulationActor { * @return true, if the `player` was added to the list; * false, otherwise */ - def CorpseAdd(player : Player, corpseList : ListBuffer[Player]) : Boolean = { - if(player.isBackpack) { + def CorpseAdd(player: Player, corpseList: ListBuffer[Player]): Boolean = { + if (player.isBackpack) { corpseList += player true - } - else { + } else { false } } @@ -185,7 +194,7 @@ object ZonePopulationActor { * @param player a `Player` object * @param corpseList a list of `Player` objects */ - def CorpseRemove(player : Player, corpseList : ListBuffer[Player]) : Boolean = { + def CorpseRemove(player: Player, corpseList: ListBuffer[Player]): Boolean = { recursiveFindCorpse(corpseList.iterator, player) match { case None => false @@ -195,7 +204,7 @@ object ZonePopulationActor { } } - def PlayerLeave(player : Player) : Unit = { + def PlayerLeave(player: Player): Unit = { player.Actor ! akka.actor.PoisonPill player.Actor = Default.Actor } @@ -208,21 +217,19 @@ object ZonePopulationActor { * @return the index of the `Player` object in the list to be removed; * `None`, otherwise */ - @tailrec final def recursiveFindCorpse(iter : Iterator[Player], player : Player, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec final def recursiveFindCorpse(iter: Iterator[Player], player: Player, index: Int = 0): Option[Int] = { + if (!iter.hasNext) { None - } - else { - if(iter.next == player) { + } else { + if (iter.next == player) { Some(index) - } - else { + } else { recursiveFindCorpse(iter, player, index + 1) } } } - def GetPlayerControlName(player : Player, old : Option[ActorRef]) : String = { + def GetPlayerControlName(player: Player, old: Option[ActorRef]): String = { old match { case Some(control) => val nameNumber = control.toString.split("/").last //split on '/' @@ -231,4 +238,4 @@ object ZonePopulationActor { s"${player.CharId}_${player.GUID.guid}_${System.currentTimeMillis}" //new } } -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/objects/zones/ZoneVehicleActor.scala b/common/src/main/scala/net/psforever/objects/zones/ZoneVehicleActor.scala index be4bdbce..badf8353 100644 --- a/common/src/main/scala/net/psforever/objects/zones/ZoneVehicleActor.scala +++ b/common/src/main/scala/net/psforever/objects/zones/ZoneVehicleActor.scala @@ -27,24 +27,22 @@ import scala.collection.mutable.ListBuffer *
* This `Actor` is intended to sit on top of the event system that handles broadcast messaging. */ -class ZoneVehicleActor(zone : Zone, vehicleList : ListBuffer[Vehicle]) extends Actor { +class ZoneVehicleActor(zone: Zone, vehicleList: ListBuffer[Vehicle]) extends Actor { //private[this] val log = org.log4s.getLogger - def receive : Receive = { + def receive: Receive = { case Zone.Vehicle.Spawn(vehicle) => - if(!vehicle.HasGUID) { + if (!vehicle.HasGUID) { sender ! Zone.Vehicle.CanNotSpawn(zone, vehicle, "not registered yet") - } - else if(vehicleList.contains(vehicle)) { + } else if (vehicleList.contains(vehicle)) { sender ! Zone.Vehicle.CanNotSpawn(zone, vehicle, "already in zone") - } - else if(vehicle.Actor != Default.Actor) { + } else if (vehicle.Actor != Default.Actor) { sender ! Zone.Vehicle.CanNotSpawn(zone, vehicle, "already in another zone") - } - else { + } else { vehicleList += vehicle vehicle.Zone = zone - vehicle.Actor = context.actorOf(Props(classOf[VehicleControl], vehicle), PlanetSideServerObject.UniqueActorName(vehicle)) + vehicle.Actor = + context.actorOf(Props(classOf[VehicleControl], vehicle), PlanetSideServerObject.UniqueActorName(vehicle)) } case Zone.Vehicle.Despawn(vehicle) => @@ -62,15 +60,13 @@ class ZoneVehicleActor(zone : Zone, vehicleList : ListBuffer[Vehicle]) extends A } object ZoneVehicleActor { - @tailrec final def recursiveFindVehicle(iter : Iterator[Vehicle], target : Vehicle, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec final def recursiveFindVehicle(iter: Iterator[Vehicle], target: Vehicle, index: Int = 0): Option[Int] = { + if (!iter.hasNext) { None - } - else { - if(iter.next.equals(target)) { + } else { + if (iter.next.equals(target)) { Some(index) - } - else { + } else { recursiveFindVehicle(iter, target, index + 1) } } diff --git a/common/src/main/scala/net/psforever/objects/zones/Zoning.scala b/common/src/main/scala/net/psforever/objects/zones/Zoning.scala index e1e8f651..26b06447 100644 --- a/common/src/main/scala/net/psforever/objects/zones/Zoning.scala +++ b/common/src/main/scala/net/psforever/objects/zones/Zoning.scala @@ -7,50 +7,41 @@ object Zoning { object Method extends Enumeration { type Type = Value - val - None, - InstantAction, - Recall, - Quit - = Value + val None, InstantAction, Recall, Quit = Value } object Status extends Enumeration { type Type = Value - val - None, - Request, - Countdown - = Value + val None, Request, Countdown = Value } object Time { - sealed case class TimeType(id : Int, descriptor : String) + sealed case class TimeType(id: Int, descriptor: String) final val Immediate = TimeType(0, "Immediate") - final val Friendly = TimeType(10, "Friendly") + final val Friendly = TimeType(10, "Friendly") final val Sanctuary = TimeType(10, "Sanctuary") - final val Neutral = TimeType(20, "Neutral") - final val None = TimeType(20, "None") - final val Enemy = TimeType(30, "Enemy") + final val Neutral = TimeType(20, "Neutral") + final val None = TimeType(20, "None") + final val Enemy = TimeType(30, "Enemy") } final case class Quit() object InstantAction { - final case class Request(faction : PlanetSideEmpire.Value) + final case class Request(faction: PlanetSideEmpire.Value) - final case class Located(zone : Zone, hotspot : Vector3, spawn_point : SpawnPoint) + final case class Located(zone: Zone, hotspot: Vector3, spawn_point: SpawnPoint) final case class NotLocated() } object Recall { - final case class Request(faction : PlanetSideEmpire.Value, sanctuary_id : String) + final case class Request(faction: PlanetSideEmpire.Value, sanctuary_id: String) - final case class Located(zone : Zone, spawn_point : SpawnPoint) + final case class Located(zone: Zone, spawn_point: SpawnPoint) - final case class Denied(reason : String) + final case class Denied(reason: String) } } diff --git a/common/src/main/scala/net/psforever/packet/ControlPacketOpcode.scala b/common/src/main/scala/net/psforever/packet/ControlPacketOpcode.scala index 69bc25ed..ce90e285 100644 --- a/common/src/main/scala/net/psforever/packet/ControlPacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/ControlPacketOpcode.scala @@ -12,85 +12,66 @@ object ControlPacketOpcode extends Enumeration { type Type = Value val // OPCODES 0x00-0f - HandleGamePacket, // a whoopsi case: not actually a control packet, but a game packet - ClientStart, // first packet ever sent during client connection - ServerStart, // second packet sent in response to ClientStart - MultiPacket, // used to send multiple packets with one UDP message (subpackets limited to <= 255) - Unknown4, - TeardownConnection, - Unknown6, - ControlSync, // sent to the server from the client + HandleGamePacket, // a whoopsi case: not actually a control packet, but a game packet + ClientStart, // first packet ever sent during client connection + ServerStart, // second packet sent in response to ClientStart + MultiPacket, // used to send multiple packets with one UDP message (subpackets limited to <= 255) + Unknown4, TeardownConnection, Unknown6, ControlSync, // sent to the server from the client // 0x08 ControlSyncResp, // the response generated by the server - SlottedMetaPacket0, - SlottedMetaPacket1, - SlottedMetaPacket2, - SlottedMetaPacket3, - SlottedMetaPacket4, - SlottedMetaPacket5, - SlottedMetaPacket6, + SlottedMetaPacket0, SlottedMetaPacket1, SlottedMetaPacket2, SlottedMetaPacket3, SlottedMetaPacket4, + SlottedMetaPacket5, SlottedMetaPacket6, + // OPCODES 0x10-1f + SlottedMetaPacket7, RelatedA0, RelatedA1, RelatedA2, RelatedA3, RelatedB0, RelatedB1, RelatedB2, + // 0x18 + RelatedB3, MultiPacketEx, // same as MultiPacket, but with the ability to send extended length packets + Unknown26, Unknown27, Unknown28, ConnectionClose, Unknown30 = Value - // OPCODES 0x10-1f - SlottedMetaPacket7, - RelatedA0, - RelatedA1, - RelatedA2, - RelatedA3, - RelatedB0, - RelatedB1, - RelatedB2, - // 0x18 - RelatedB3, - MultiPacketEx, // same as MultiPacket, but with the ability to send extended length packets - Unknown26, - Unknown27, - Unknown28, - ConnectionClose, - Unknown30 - = Value + private def noDecoder(opcode: ControlPacketOpcode.Type) = + (_: BitVector) => Attempt.failure(Err(s"Could not find a marshaller for control packet $opcode")) - private def noDecoder(opcode : ControlPacketOpcode.Type) = (_ : BitVector) => - Attempt.failure(Err(s"Could not find a marshaller for control packet $opcode")) + def getPacketDecoder( + opcode: ControlPacketOpcode.Type + ): (BitVector) => Attempt[DecodeResult[PlanetSideControlPacket]] = + (opcode.id: @switch) match { + // OPCODES 0x00-0f + case 0x00 => control.HandleGamePacket.decode + case 0x01 => control.ClientStart.decode + case 0x02 => control.ServerStart.decode + case 0x03 => control.MultiPacket.decode + case 0x04 => noDecoder(Unknown4) + case 0x05 => control.TeardownConnection.decode + case 0x06 => noDecoder(Unknown6) + case 0x07 => control.ControlSync.decode + // 0x08 + case 0x08 => control.ControlSyncResp.decode + case 0x09 => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket0) + case 0x0a => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket1) + case 0x0b => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket2) + case 0x0c => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket3) + case 0x0d => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket4) + case 0x0e => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket5) + case 0x0f => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket6) - def getPacketDecoder(opcode : ControlPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideControlPacket]] = (opcode.id : @switch) match { - // OPCODES 0x00-0f - case 0x00 => control.HandleGamePacket.decode - case 0x01 => control.ClientStart.decode - case 0x02 => control.ServerStart.decode - case 0x03 => control.MultiPacket.decode - case 0x04 => noDecoder(Unknown4) - case 0x05 => control.TeardownConnection.decode - case 0x06 => noDecoder(Unknown6) - case 0x07 => control.ControlSync.decode - // 0x08 - case 0x08 => control.ControlSyncResp.decode - case 0x09 => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket0) - case 0x0a => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket1) - case 0x0b => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket2) - case 0x0c => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket3) - case 0x0d => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket4) - case 0x0e => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket5) - case 0x0f => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket6) - - // OPCODES 0x10-1e - case 0x10 => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket7) - case 0x11 => RelatedA.decodeWithOpcode(RelatedA0) - case 0x12 => RelatedA.decodeWithOpcode(RelatedA1) - case 0x13 => RelatedA.decodeWithOpcode(RelatedA2) - case 0x14 => RelatedA.decodeWithOpcode(RelatedA3) - case 0x15 => RelatedB.decodeWithOpcode(RelatedB0) - case 0x16 => RelatedB.decodeWithOpcode(RelatedB1) - case 0x17 => RelatedB.decodeWithOpcode(RelatedB2) - // 0x18 - case 0x18 => RelatedB.decodeWithOpcode(RelatedB3) - case 0x19 => control.MultiPacketEx.decode - case 0x1a => noDecoder(Unknown26) - case 0x1b => noDecoder(Unknown27) - case 0x1c => noDecoder(Unknown28) - case 0x1d => control.ConnectionClose.decode - case 0x1e => noDecoder(Unknown30) - case _ => noDecoder(opcode) - } + // OPCODES 0x10-1e + case 0x10 => SlottedMetaPacket.decodeWithOpcode(SlottedMetaPacket7) + case 0x11 => RelatedA.decodeWithOpcode(RelatedA0) + case 0x12 => RelatedA.decodeWithOpcode(RelatedA1) + case 0x13 => RelatedA.decodeWithOpcode(RelatedA2) + case 0x14 => RelatedA.decodeWithOpcode(RelatedA3) + case 0x15 => RelatedB.decodeWithOpcode(RelatedB0) + case 0x16 => RelatedB.decodeWithOpcode(RelatedB1) + case 0x17 => RelatedB.decodeWithOpcode(RelatedB2) + // 0x18 + case 0x18 => RelatedB.decodeWithOpcode(RelatedB3) + case 0x19 => control.MultiPacketEx.decode + case 0x1a => noDecoder(Unknown26) + case 0x1b => noDecoder(Unknown27) + case 0x1c => noDecoder(Unknown28) + case 0x1d => control.ConnectionClose.decode + case 0x1e => noDecoder(Unknown30) + case _ => noDecoder(opcode) + } implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L) } diff --git a/common/src/main/scala/net/psforever/packet/CryptoPacketOpcode.scala b/common/src/main/scala/net/psforever/packet/CryptoPacketOpcode.scala index beb69099..3a3260e7 100644 --- a/common/src/main/scala/net/psforever/packet/CryptoPacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/CryptoPacketOpcode.scala @@ -7,15 +7,19 @@ import scodec.{Attempt, DecodeResult, Err} // this isnt actually used as an opcode (i.e not serialized) object CryptoPacketOpcode extends Enumeration { type Type = Value - val Ignore, ClientChallengeXchg, ServerChallengeXchg, - ClientFinished, ServerFinished = Value + val Ignore, ClientChallengeXchg, ServerChallengeXchg, ClientFinished, ServerFinished = Value - def getPacketDecoder(opcode : CryptoPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideCryptoPacket]] = opcode match { + def getPacketDecoder(opcode: CryptoPacketOpcode.Type): (BitVector) => Attempt[DecodeResult[PlanetSideCryptoPacket]] = + opcode match { case ClientChallengeXchg => crypto.ClientChallengeXchg.decode case ServerChallengeXchg => crypto.ServerChallengeXchg.decode - case ServerFinished => crypto.ServerFinished.decode - case ClientFinished => crypto.ClientFinished.decode - case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for crypto packet ${opcode}") - .pushContext("get_marshaller")) + case ServerFinished => crypto.ServerFinished.decode + case ClientFinished => crypto.ClientFinished.decode + case default => + (a: BitVector) => + Attempt.failure( + Err(s"Could not find a marshaller for crypto packet ${opcode}") + .pushContext("get_marshaller") + ) } } diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index a8a7f4d3..71f6089e 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -18,596 +18,409 @@ object GamePacketOpcode extends Enumeration { type Type = Value val // OPCODES 0x00-0f - Unknown0, // PPT_NULL in beta client - LoginMessage, - LoginRespMessage, - ConnectToWorldRequestMessage, // found by searching for 83 F8 03 89 in IDA - ConnectToWorldMessage, - VNLWorldStatusMessage, - UnknownMessage6, // PPT_TRANSFERTOWORLDREQUEST - UnknownMessage7, // PPT_TRANSFERTOWORLDRESPONSE + Unknown0, // PPT_NULL in beta client + LoginMessage, LoginRespMessage, ConnectToWorldRequestMessage, // found by searching for 83 F8 03 89 in IDA + ConnectToWorldMessage, VNLWorldStatusMessage, UnknownMessage6, // PPT_TRANSFERTOWORLDREQUEST + UnknownMessage7, // PPT_TRANSFERTOWORLDRESPONSE // 0x08 - PlayerStateMessage, - HitMessage, - HitHint, - DamageMessage, - DestroyMessage, - ReloadMessage, - MountVehicleMsg, - DismountVehicleMsg, - - // OPCODES 0x10-1f - UseItemMessage, - MoveItemMessage, - ChatMsg, - CharacterNoRecordMessage, - CharacterInfoMessage, - UnknownMessage21, // PPT_DISCONNECT - BindPlayerMessage, - ObjectCreateMessage_Duplicate, // PPT_OBJECTCREATE + PlayerStateMessage, HitMessage, HitHint, DamageMessage, DestroyMessage, ReloadMessage, MountVehicleMsg, + DismountVehicleMsg, + // OPCODES 0x10-1f + UseItemMessage, MoveItemMessage, ChatMsg, CharacterNoRecordMessage, CharacterInfoMessage, + UnknownMessage21, // PPT_DISCONNECT + BindPlayerMessage, ObjectCreateMessage_Duplicate, // PPT_OBJECTCREATE // 0x18 ObjectCreateMessage, // PPT_OBJECTCREATEDETAILED - ObjectDeleteMessage, - PingMsg, - VehicleStateMessage, - FrameVehicleStateMessage, - GenericObjectStateMsg, - ChildObjectStateMessage, - ActionResultMessage, - - // OPCODES 0x20-2f + ObjectDeleteMessage, PingMsg, VehicleStateMessage, FrameVehicleStateMessage, GenericObjectStateMsg, + ChildObjectStateMessage, ActionResultMessage, + // OPCODES 0x20-2f UnknownMessage32, // PPT_ACTIONBEGIN - ActionProgressMessage, - ActionCancelMessage, - ActionCancelAcknowledgeMessage, - SetEmpireMessage, - EmoteMsg, - UnuseItemMessage, - ObjectDetachMessage, - // 0x28 - CreateShortcutMessage, - ChangeShortcutBankMessage, - ObjectAttachMessage, - UnknownMessage43, // PPT_OBJECTEMPTY - PlanetsideAttributeMessage, - RequestDestroyMessage, - UnknownMessage46, // PPT_EQUIPITEM + ActionProgressMessage, ActionCancelMessage, ActionCancelAcknowledgeMessage, SetEmpireMessage, EmoteMsg, + UnuseItemMessage, ObjectDetachMessage, + // 0x28 + CreateShortcutMessage, ChangeShortcutBankMessage, ObjectAttachMessage, UnknownMessage43, // PPT_OBJECTEMPTY + PlanetsideAttributeMessage, RequestDestroyMessage, UnknownMessage46, // PPT_EQUIPITEM CharacterCreateRequestMessage, - - // OPCODES 0x30-3f - CharacterRequestMessage, - LoadMapMessage, - SetCurrentAvatarMessage, - ObjectHeldMessage, - WeaponFireMessage, - AvatarJumpMessage, - PickupItemMessage, - DropItemMessage, - // 0x38 - InventoryStateMessage, - ChangeFireStateMessage_Start, - ChangeFireStateMessage_Stop, - UnknownMessage59, - GenericCollisionMsg, - QuantityUpdateMessage, - ArmorChangedMessage, - ProjectileStateMessage, - - // OPCODES 0x40-4f - MountVehicleCargoMsg, - DismountVehicleCargoMsg, - CargoMountPointStatusMessage, - BeginZoningMessage, - ItemTransactionMessage, - ItemTransactionResultMessage, - ChangeFireModeMessage, - ChangeAmmoMessage, - // 0x48 - TimeOfDayMessage, - UnknownMessage73, // PPT_PROJECTILE_EVENT_BLOCK - SpawnRequestMessage, - DeployRequestMessage, - UnknownMessage76, // PPT_BUILDINGSTATECHANGED - RepairMessage, - ServerVehicleOverrideMsg, - LashMessage, - - // OPCODES 0x50-5f - TargetingInfoMessage, - TriggerEffectMessage, - WeaponDryFireMessage, - DroppodLaunchRequestMessage, - HackMessage, - DroppodLaunchResponseMessage, - GenericObjectActionMessage, - AvatarVehicleTimerMessage, - // 0x58 - AvatarImplantMessage, - UnknownMessage89, // PPT_SEARCHMESSAGE - DelayedPathMountMsg, - OrbitalShuttleTimeMsg, - AIDamage, - DeployObjectMessage, - FavoritesRequest, - FavoritesResponse, - - // OPCODES 0x60-6f - FavoritesMessage, - ObjectDetectedMessage, - SplashHitMessage, - SetChatFilterMessage, - AvatarSearchCriteriaMessage, - AvatarSearchResponse, - WeaponJammedMessage, - LinkDeadAwarenessMsg, - // 0x68 - DroppodFreefallingMessage, - AvatarFirstTimeEventMessage, - AggravatedDamageMessage, - TriggerSoundMessage, - LootItemMessage, - VehicleSubStateMessage, - SquadMembershipRequest, - SquadMembershipResponse, - - // OPCODES 0x70-7f - SquadMemberEvent, - PlatoonEvent, - FriendsRequest, - FriendsResponse, - TriggerEnvironmentalDamageMessage, - TrainingZoneMessage, - DeployableObjectsInfoMessage, - SquadState, - // 0x78 - OxygenStateMessage, - TradeMessage, - UnknownMessage122, - DamageFeedbackMessage, - DismountBuildingMsg, - UnknownMessage125, // PPT_MOUNTBUILDING - UnknownMessage126, // PPT_INTENDEDDROPZONE + // OPCODES 0x30-3f + CharacterRequestMessage, LoadMapMessage, SetCurrentAvatarMessage, ObjectHeldMessage, WeaponFireMessage, + AvatarJumpMessage, PickupItemMessage, DropItemMessage, + // 0x38 + InventoryStateMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, UnknownMessage59, + GenericCollisionMsg, QuantityUpdateMessage, ArmorChangedMessage, ProjectileStateMessage, + // OPCODES 0x40-4f + MountVehicleCargoMsg, DismountVehicleCargoMsg, CargoMountPointStatusMessage, BeginZoningMessage, + ItemTransactionMessage, ItemTransactionResultMessage, ChangeFireModeMessage, ChangeAmmoMessage, + // 0x48 + TimeOfDayMessage, UnknownMessage73, // PPT_PROJECTILE_EVENT_BLOCK + SpawnRequestMessage, DeployRequestMessage, UnknownMessage76, // PPT_BUILDINGSTATECHANGED + RepairMessage, ServerVehicleOverrideMsg, LashMessage, + // OPCODES 0x50-5f + TargetingInfoMessage, TriggerEffectMessage, WeaponDryFireMessage, DroppodLaunchRequestMessage, HackMessage, + DroppodLaunchResponseMessage, GenericObjectActionMessage, AvatarVehicleTimerMessage, + // 0x58 + AvatarImplantMessage, UnknownMessage89, // PPT_SEARCHMESSAGE + DelayedPathMountMsg, OrbitalShuttleTimeMsg, AIDamage, DeployObjectMessage, FavoritesRequest, FavoritesResponse, + // OPCODES 0x60-6f + FavoritesMessage, ObjectDetectedMessage, SplashHitMessage, SetChatFilterMessage, AvatarSearchCriteriaMessage, + AvatarSearchResponse, WeaponJammedMessage, LinkDeadAwarenessMsg, + // 0x68 + DroppodFreefallingMessage, AvatarFirstTimeEventMessage, AggravatedDamageMessage, TriggerSoundMessage, LootItemMessage, + VehicleSubStateMessage, SquadMembershipRequest, SquadMembershipResponse, + // OPCODES 0x70-7f + SquadMemberEvent, PlatoonEvent, FriendsRequest, FriendsResponse, TriggerEnvironmentalDamageMessage, + TrainingZoneMessage, DeployableObjectsInfoMessage, SquadState, + // 0x78 + OxygenStateMessage, TradeMessage, UnknownMessage122, DamageFeedbackMessage, DismountBuildingMsg, + UnknownMessage125, // PPT_MOUNTBUILDING + UnknownMessage126, // PPT_INTENDEDDROPZONE AvatarStatisticsMessage, - - // OPCODES 0x80-8f - GenericObjectAction2Message, - DestroyDisplayMessage, - TriggerBotAction, - SquadWaypointRequest, - SquadWaypointEvent, - OffshoreVehicleMessage, - ObjectDeployedMessage, - ObjectDeployedCountMessage, - // 0x88 - WeaponDelayFireMessage, - BugReportMessage, - PlayerStasisMessage, - UnknownMessage139, - OutfitMembershipRequest, - OutfitMembershipResponse, - OutfitRequest, - OutfitEvent, - - // OPCODES 0x90-9f - OutfitMemberEvent, - OutfitMemberUpdate, - PlanetsideStringAttributeMessage, - DataChallengeMessage, - DataChallengeMessageResp, - WeatherMessage, - SimDataChallenge, - SimDataChallengeResp, - // 0x98 - OutfitListEvent, - EmpireIncentivesMessage, - InvalidTerrainMessage, - SyncMessage, - DebugDrawMessage, - SoulMarkMessage, - UplinkPositionEvent, - HotSpotUpdateMessage, - - // OPCODES 0xa0-af - BuildingInfoUpdateMessage, - FireHintMessage, - UplinkRequest, - UplinkResponse, - WarpgateRequest, - WarpgateResponse, - DamageWithPositionMessage, - GenericActionMessage, - // 0xa8 - ContinentalLockUpdateMessage, - AvatarGrenadeStateMessage, - UnknownMessage170, - UnknownMessage171, - ReleaseAvatarRequestMessage, - AvatarDeadStateMessage, - CSAssistMessage, - CSAssistCommentMessage, - - // OPCODES 0xb0-bf - VoiceHostRequest, - VoiceHostKill, - VoiceHostInfo, - BattleplanMessage, - BattleExperienceMessage, - TargetingImplantRequest, - ZonePopulationUpdateMessage, - DisconnectMessage, - // 0xb8 - ExperienceAddedMessage, - OrbitalStrikeWaypointMessage, - KeepAliveMessage, - MapObjectStateBlockMessage, - SnoopMsg, - PlayerStateMessageUpstream, - PlayerStateShiftMessage, - ZipLineMessage, - - // OPCODES 0xc0-cf - CaptureFlagUpdateMessage, - VanuModuleUpdateMessage, - FacilityBenefitShieldChargeRequestMessage, - ProximityTerminalUseMessage, - QuantityDeltaUpdateMessage, - ChainLashMessage, - ZoneInfoMessage, - LongRangeProjectileInfoMessage, - // 0xc8 - WeaponLazeTargetPositionMessage, - ModuleLimitsMessage, - OutfitBenefitMessage, - EmpireChangeTimeMessage, - ClockCalibrationMessage, - DensityLevelUpdateMessage, - ActOfGodMessage, - AvatarAwardMessage, - - // OPCODES 0xd0-df - UnknownMessage208, - DisplayedAwardMessage, - RespawnAMSInfoMessage, - ComponentDamageMessage, - GenericObjectActionAtPositionMessage, - PropertyOverrideMessage, - WarpgateLinkOverrideMessage, - EmpireBenefitsMessage, - // 0xd8 - ForceEmpireMessage, - BroadcastWarpgateUpdateMessage, - UnknownMessage218, - SquadMainTerminalMessage, - SquadMainTerminalResponseMessage, - SquadOrderMessage, - SquadOrderResponse, - ZoneLockInfoMessage, - - // OPCODES 0xe0-ef - SquadBindInfoMessage, - AudioSequenceMessage, - SquadFacilityBindInfoMessage, - ZoneForcedCavernConnectionsMessage, - MissionActionMessage, - MissionKillTriggerMessage, - ReplicationStreamMessage, - SquadDefinitionActionMessage, - // 0xe8 - SquadDetailDefinitionUpdateMessage, - TacticsMessage, - RabbitUpdateMessage, - SquadInvitationRequestMessage, - CharacterKnowledgeMessage, - GameScoreUpdateMessage, - UnknownMessage238, - OrderTerminalBugMessage, - - // OPCODES 0xf0-f3 - QueueTimedHelpMessage, - MailMessage, - GameVarUpdate, - ClientCheatedMessage // last known message type (243, 0xf3) + // OPCODES 0x80-8f + GenericObjectAction2Message, DestroyDisplayMessage, TriggerBotAction, SquadWaypointRequest, SquadWaypointEvent, + OffshoreVehicleMessage, ObjectDeployedMessage, ObjectDeployedCountMessage, + // 0x88 + WeaponDelayFireMessage, BugReportMessage, PlayerStasisMessage, UnknownMessage139, OutfitMembershipRequest, + OutfitMembershipResponse, OutfitRequest, OutfitEvent, + // OPCODES 0x90-9f + OutfitMemberEvent, OutfitMemberUpdate, PlanetsideStringAttributeMessage, DataChallengeMessage, + DataChallengeMessageResp, WeatherMessage, SimDataChallenge, SimDataChallengeResp, + // 0x98 + OutfitListEvent, EmpireIncentivesMessage, InvalidTerrainMessage, SyncMessage, DebugDrawMessage, SoulMarkMessage, + UplinkPositionEvent, HotSpotUpdateMessage, + // OPCODES 0xa0-af + BuildingInfoUpdateMessage, FireHintMessage, UplinkRequest, UplinkResponse, WarpgateRequest, WarpgateResponse, + DamageWithPositionMessage, GenericActionMessage, + // 0xa8 + ContinentalLockUpdateMessage, AvatarGrenadeStateMessage, UnknownMessage170, UnknownMessage171, + ReleaseAvatarRequestMessage, AvatarDeadStateMessage, CSAssistMessage, CSAssistCommentMessage, + // OPCODES 0xb0-bf + VoiceHostRequest, VoiceHostKill, VoiceHostInfo, BattleplanMessage, BattleExperienceMessage, TargetingImplantRequest, + ZonePopulationUpdateMessage, DisconnectMessage, + // 0xb8 + ExperienceAddedMessage, OrbitalStrikeWaypointMessage, KeepAliveMessage, MapObjectStateBlockMessage, SnoopMsg, + PlayerStateMessageUpstream, PlayerStateShiftMessage, ZipLineMessage, + // OPCODES 0xc0-cf + CaptureFlagUpdateMessage, VanuModuleUpdateMessage, FacilityBenefitShieldChargeRequestMessage, + ProximityTerminalUseMessage, QuantityDeltaUpdateMessage, ChainLashMessage, ZoneInfoMessage, + LongRangeProjectileInfoMessage, + // 0xc8 + WeaponLazeTargetPositionMessage, ModuleLimitsMessage, OutfitBenefitMessage, EmpireChangeTimeMessage, + ClockCalibrationMessage, DensityLevelUpdateMessage, ActOfGodMessage, AvatarAwardMessage, + // OPCODES 0xd0-df + UnknownMessage208, DisplayedAwardMessage, RespawnAMSInfoMessage, ComponentDamageMessage, + GenericObjectActionAtPositionMessage, PropertyOverrideMessage, WarpgateLinkOverrideMessage, EmpireBenefitsMessage, + // 0xd8 + ForceEmpireMessage, BroadcastWarpgateUpdateMessage, UnknownMessage218, SquadMainTerminalMessage, + SquadMainTerminalResponseMessage, SquadOrderMessage, SquadOrderResponse, ZoneLockInfoMessage, + // OPCODES 0xe0-ef + SquadBindInfoMessage, AudioSequenceMessage, SquadFacilityBindInfoMessage, ZoneForcedCavernConnectionsMessage, + MissionActionMessage, MissionKillTriggerMessage, ReplicationStreamMessage, SquadDefinitionActionMessage, + // 0xe8 + SquadDetailDefinitionUpdateMessage, TacticsMessage, RabbitUpdateMessage, SquadInvitationRequestMessage, + CharacterKnowledgeMessage, GameScoreUpdateMessage, UnknownMessage238, OrderTerminalBugMessage, + // OPCODES 0xf0-f3 + QueueTimedHelpMessage, MailMessage, GameVarUpdate, ClientCheatedMessage // last known message type (243, 0xf3) = Value - private def noDecoder(opcode : GamePacketOpcode.Type) = (_ : BitVector) => - Attempt.failure(Err(s"Could not find a marshaller for game packet $opcode")) + private def noDecoder(opcode: GamePacketOpcode.Type) = + (_: BitVector) => Attempt.failure(Err(s"Could not find a marshaller for game packet $opcode")) /// Mapping of packet IDs to decoders. Notice that we are using the @switch annotation which ensures that the Scala /// compiler will be able to optimize this as a lookup table (switch statement). Microbenchmarks show a nearly 400x /// speedup when using a switch (given the worst case of not finding a decoder) - def getPacketDecoder(opcode : GamePacketOpcode.Type) : BitVector => Attempt[DecodeResult[PlanetSideGamePacket]] = (opcode.id : @switch) match { - // OPCODES 0x00-0f - case 0x00 => noDecoder(Unknown0) - case 0x01 => game.LoginMessage.decode - case 0x02 => game.LoginRespMessage.decode - case 0x03 => game.ConnectToWorldRequestMessage.decode - case 0x04 => game.ConnectToWorldMessage.decode - case 0x05 => game.VNLWorldStatusMessage.decode - case 0x06 => noDecoder(UnknownMessage6) - case 0x07 => noDecoder(UnknownMessage7) - // 0x08 - case 0x08 => game.PlayerStateMessage.decode - case 0x09 => game.HitMessage.decode - case 0x0a => game.HitHint.decode - case 0x0b => game.DamageMessage.decode - case 0x0c => game.DestroyMessage.decode - case 0x0d => game.ReloadMessage.decode - case 0x0e => game.MountVehicleMsg.decode - case 0x0f => game.DismountVehicleMsg.decode + def getPacketDecoder(opcode: GamePacketOpcode.Type): BitVector => Attempt[DecodeResult[PlanetSideGamePacket]] = + (opcode.id: @switch) match { + // OPCODES 0x00-0f + case 0x00 => noDecoder(Unknown0) + case 0x01 => game.LoginMessage.decode + case 0x02 => game.LoginRespMessage.decode + case 0x03 => game.ConnectToWorldRequestMessage.decode + case 0x04 => game.ConnectToWorldMessage.decode + case 0x05 => game.VNLWorldStatusMessage.decode + case 0x06 => noDecoder(UnknownMessage6) + case 0x07 => noDecoder(UnknownMessage7) + // 0x08 + case 0x08 => game.PlayerStateMessage.decode + case 0x09 => game.HitMessage.decode + case 0x0a => game.HitHint.decode + case 0x0b => game.DamageMessage.decode + case 0x0c => game.DestroyMessage.decode + case 0x0d => game.ReloadMessage.decode + case 0x0e => game.MountVehicleMsg.decode + case 0x0f => game.DismountVehicleMsg.decode - // OPCODES 0x10-1f - case 0x10 => game.UseItemMessage.decode - case 0x11 => game.MoveItemMessage.decode - case 0x12 => game.ChatMsg.decode - case 0x13 => game.CharacterNoRecordMessage.decode - case 0x14 => game.CharacterInfoMessage.decode - case 0x15 => noDecoder(UnknownMessage21) - case 0x16 => game.BindPlayerMessage.decode - case 0x17 => game.ObjectCreateMessage.decode - // 0x18 - case 0x18 => game.ObjectCreateDetailedMessage.decode - case 0x19 => game.ObjectDeleteMessage.decode - case 0x1a => game.PingMsg.decode - case 0x1b => game.VehicleStateMessage.decode - case 0x1c => noDecoder(FrameVehicleStateMessage) - case 0x1d => game.GenericObjectStateMsg.decode - case 0x1e => game.ChildObjectStateMessage.decode - case 0x1f => game.ActionResultMessage.decode + // OPCODES 0x10-1f + case 0x10 => game.UseItemMessage.decode + case 0x11 => game.MoveItemMessage.decode + case 0x12 => game.ChatMsg.decode + case 0x13 => game.CharacterNoRecordMessage.decode + case 0x14 => game.CharacterInfoMessage.decode + case 0x15 => noDecoder(UnknownMessage21) + case 0x16 => game.BindPlayerMessage.decode + case 0x17 => game.ObjectCreateMessage.decode + // 0x18 + case 0x18 => game.ObjectCreateDetailedMessage.decode + case 0x19 => game.ObjectDeleteMessage.decode + case 0x1a => game.PingMsg.decode + case 0x1b => game.VehicleStateMessage.decode + case 0x1c => noDecoder(FrameVehicleStateMessage) + case 0x1d => game.GenericObjectStateMsg.decode + case 0x1e => game.ChildObjectStateMessage.decode + case 0x1f => game.ActionResultMessage.decode - // OPCODES 0x20-2f - case 0x20 => noDecoder(UnknownMessage32) - case 0x21 => game.ActionProgressMessage.decode - case 0x22 => game.ActionCancelMessage.decode - case 0x23 => noDecoder(ActionCancelAcknowledgeMessage) - case 0x24 => game.SetEmpireMessage.decode - case 0x25 => game.EmoteMsg.decode - case 0x26 => game.UnuseItemMessage.decode - case 0x27 => game.ObjectDetachMessage.decode - // 0x28 - case 0x28 => game.CreateShortcutMessage.decode - case 0x29 => game.ChangeShortcutBankMessage.decode - case 0x2a => game.ObjectAttachMessage.decode - case 0x2b => noDecoder(UnknownMessage43) - case 0x2c => game.PlanetsideAttributeMessage.decode - case 0x2d => game.RequestDestroyMessage.decode - case 0x2e => noDecoder(UnknownMessage46) - case 0x2f => game.CharacterCreateRequestMessage.decode + // OPCODES 0x20-2f + case 0x20 => noDecoder(UnknownMessage32) + case 0x21 => game.ActionProgressMessage.decode + case 0x22 => game.ActionCancelMessage.decode + case 0x23 => noDecoder(ActionCancelAcknowledgeMessage) + case 0x24 => game.SetEmpireMessage.decode + case 0x25 => game.EmoteMsg.decode + case 0x26 => game.UnuseItemMessage.decode + case 0x27 => game.ObjectDetachMessage.decode + // 0x28 + case 0x28 => game.CreateShortcutMessage.decode + case 0x29 => game.ChangeShortcutBankMessage.decode + case 0x2a => game.ObjectAttachMessage.decode + case 0x2b => noDecoder(UnknownMessage43) + case 0x2c => game.PlanetsideAttributeMessage.decode + case 0x2d => game.RequestDestroyMessage.decode + case 0x2e => noDecoder(UnknownMessage46) + case 0x2f => game.CharacterCreateRequestMessage.decode - // OPCODES 0x30-3f - case 0x30 => game.CharacterRequestMessage.decode - case 0x31 => game.LoadMapMessage.decode - case 0x32 => game.SetCurrentAvatarMessage.decode - case 0x33 => game.ObjectHeldMessage.decode - case 0x34 => game.WeaponFireMessage.decode - case 0x35 => game.AvatarJumpMessage.decode - case 0x36 => game.PickupItemMessage.decode - case 0x37 => game.DropItemMessage.decode - // 0x38 - case 0x38 => game.InventoryStateMessage.decode - case 0x39 => game.ChangeFireStateMessage_Start.decode - case 0x3a => game.ChangeFireStateMessage_Stop.decode - case 0x3b => noDecoder(UnknownMessage59) - case 0x3c => game.GenericCollisionMsg.decode - case 0x3d => game.QuantityUpdateMessage.decode - case 0x3e => game.ArmorChangedMessage.decode - case 0x3f => game.ProjectileStateMessage.decode + // OPCODES 0x30-3f + case 0x30 => game.CharacterRequestMessage.decode + case 0x31 => game.LoadMapMessage.decode + case 0x32 => game.SetCurrentAvatarMessage.decode + case 0x33 => game.ObjectHeldMessage.decode + case 0x34 => game.WeaponFireMessage.decode + case 0x35 => game.AvatarJumpMessage.decode + case 0x36 => game.PickupItemMessage.decode + case 0x37 => game.DropItemMessage.decode + // 0x38 + case 0x38 => game.InventoryStateMessage.decode + case 0x39 => game.ChangeFireStateMessage_Start.decode + case 0x3a => game.ChangeFireStateMessage_Stop.decode + case 0x3b => noDecoder(UnknownMessage59) + case 0x3c => game.GenericCollisionMsg.decode + case 0x3d => game.QuantityUpdateMessage.decode + case 0x3e => game.ArmorChangedMessage.decode + case 0x3f => game.ProjectileStateMessage.decode - // OPCODES 0x40-4f - case 0x40 => game.MountVehicleCargoMsg.decode - case 0x41 => game.DismountVehicleCargoMsg.decode - case 0x42 => game.CargoMountPointStatusMessage.decode - case 0x43 => game.BeginZoningMessage.decode - case 0x44 => game.ItemTransactionMessage.decode - case 0x45 => game.ItemTransactionResultMessage.decode - case 0x46 => game.ChangeFireModeMessage.decode - case 0x47 => game.ChangeAmmoMessage.decode - // 0x48 - case 0x48 => game.TimeOfDayMessage.decode - case 0x49 => noDecoder(UnknownMessage73) - case 0x4a => game.SpawnRequestMessage.decode - case 0x4b => game.DeployRequestMessage.decode - case 0x4c => noDecoder(UnknownMessage76) - case 0x4d => game.RepairMessage.decode - case 0x4e => game.ServerVehicleOverrideMsg.decode - case 0x4f => game.LashMessage.decode + // OPCODES 0x40-4f + case 0x40 => game.MountVehicleCargoMsg.decode + case 0x41 => game.DismountVehicleCargoMsg.decode + case 0x42 => game.CargoMountPointStatusMessage.decode + case 0x43 => game.BeginZoningMessage.decode + case 0x44 => game.ItemTransactionMessage.decode + case 0x45 => game.ItemTransactionResultMessage.decode + case 0x46 => game.ChangeFireModeMessage.decode + case 0x47 => game.ChangeAmmoMessage.decode + // 0x48 + case 0x48 => game.TimeOfDayMessage.decode + case 0x49 => noDecoder(UnknownMessage73) + case 0x4a => game.SpawnRequestMessage.decode + case 0x4b => game.DeployRequestMessage.decode + case 0x4c => noDecoder(UnknownMessage76) + case 0x4d => game.RepairMessage.decode + case 0x4e => game.ServerVehicleOverrideMsg.decode + case 0x4f => game.LashMessage.decode - // OPCODES 0x50-5f - case 0x50 => game.TargetingInfoMessage.decode - case 0x51 => game.TriggerEffectMessage.decode - case 0x52 => game.WeaponDryFireMessage.decode - case 0x53 => noDecoder(DroppodLaunchRequestMessage) - case 0x54 => game.HackMessage.decode - case 0x55 => noDecoder(DroppodLaunchResponseMessage) - case 0x56 => game.GenericObjectActionMessage.decode - case 0x57 => game.AvatarVehicleTimerMessage.decode - // 0x58 - case 0x58 => game.AvatarImplantMessage.decode - case 0x59 => noDecoder(UnknownMessage89) - case 0x5a => game.DelayedPathMountMsg.decode - case 0x5b => noDecoder(OrbitalShuttleTimeMsg) - case 0x5c => noDecoder(AIDamage) - case 0x5d => game.DeployObjectMessage.decode - case 0x5e => game.FavoritesRequest.decode - case 0x5f => noDecoder(FavoritesResponse) + // OPCODES 0x50-5f + case 0x50 => game.TargetingInfoMessage.decode + case 0x51 => game.TriggerEffectMessage.decode + case 0x52 => game.WeaponDryFireMessage.decode + case 0x53 => noDecoder(DroppodLaunchRequestMessage) + case 0x54 => game.HackMessage.decode + case 0x55 => noDecoder(DroppodLaunchResponseMessage) + case 0x56 => game.GenericObjectActionMessage.decode + case 0x57 => game.AvatarVehicleTimerMessage.decode + // 0x58 + case 0x58 => game.AvatarImplantMessage.decode + case 0x59 => noDecoder(UnknownMessage89) + case 0x5a => game.DelayedPathMountMsg.decode + case 0x5b => noDecoder(OrbitalShuttleTimeMsg) + case 0x5c => noDecoder(AIDamage) + case 0x5d => game.DeployObjectMessage.decode + case 0x5e => game.FavoritesRequest.decode + case 0x5f => noDecoder(FavoritesResponse) - // OPCODES 0x60-6f - case 0x60 => game.FavoritesMessage.decode - case 0x61 => game.ObjectDetectedMessage.decode - case 0x62 => game.SplashHitMessage.decode - case 0x63 => game.SetChatFilterMessage.decode - case 0x64 => game.AvatarSearchCriteriaMessage.decode - case 0x65 => noDecoder(AvatarSearchResponse) - case 0x66 => game.WeaponJammedMessage.decode - case 0x67 => noDecoder(LinkDeadAwarenessMsg) - // 0x68 - case 0x68 => game.DroppodFreefallingMessage.decode - case 0x69 => game.AvatarFirstTimeEventMessage.decode - case 0x6a => noDecoder(AggravatedDamageMessage) - case 0x6b => game.TriggerSoundMessage.decode - case 0x6c => game.LootItemMessage.decode - case 0x6d => game.VehicleSubStateMessage.decode - case 0x6e => game.SquadMembershipRequest.decode - case 0x6f => game.SquadMembershipResponse.decode + // OPCODES 0x60-6f + case 0x60 => game.FavoritesMessage.decode + case 0x61 => game.ObjectDetectedMessage.decode + case 0x62 => game.SplashHitMessage.decode + case 0x63 => game.SetChatFilterMessage.decode + case 0x64 => game.AvatarSearchCriteriaMessage.decode + case 0x65 => noDecoder(AvatarSearchResponse) + case 0x66 => game.WeaponJammedMessage.decode + case 0x67 => noDecoder(LinkDeadAwarenessMsg) + // 0x68 + case 0x68 => game.DroppodFreefallingMessage.decode + case 0x69 => game.AvatarFirstTimeEventMessage.decode + case 0x6a => noDecoder(AggravatedDamageMessage) + case 0x6b => game.TriggerSoundMessage.decode + case 0x6c => game.LootItemMessage.decode + case 0x6d => game.VehicleSubStateMessage.decode + case 0x6e => game.SquadMembershipRequest.decode + case 0x6f => game.SquadMembershipResponse.decode - // OPCODES 0x70-7f - case 0x70 => game.SquadMemberEvent.decode - case 0x71 => noDecoder(PlatoonEvent) - case 0x72 => game.FriendsRequest.decode - case 0x73 => game.FriendsResponse.decode - case 0x74 => game.TriggerEnvironmentalDamageMessage.decode - case 0x75 => game.TrainingZoneMessage.decode - case 0x76 => game.DeployableObjectsInfoMessage.decode - case 0x77 => game.SquadState.decode - // 0x78 - case 0x78 => game.OxygenStateMessage.decode - case 0x79 => noDecoder(TradeMessage) - case 0x7a => noDecoder(UnknownMessage122) - case 0x7b => game.DamageFeedbackMessage.decode - case 0x7c => game.DismountBuildingMsg.decode - case 0x7d => noDecoder(UnknownMessage125) - case 0x7e => noDecoder(UnknownMessage126) - case 0x7f => game.AvatarStatisticsMessage.decode + // OPCODES 0x70-7f + case 0x70 => game.SquadMemberEvent.decode + case 0x71 => noDecoder(PlatoonEvent) + case 0x72 => game.FriendsRequest.decode + case 0x73 => game.FriendsResponse.decode + case 0x74 => game.TriggerEnvironmentalDamageMessage.decode + case 0x75 => game.TrainingZoneMessage.decode + case 0x76 => game.DeployableObjectsInfoMessage.decode + case 0x77 => game.SquadState.decode + // 0x78 + case 0x78 => game.OxygenStateMessage.decode + case 0x79 => noDecoder(TradeMessage) + case 0x7a => noDecoder(UnknownMessage122) + case 0x7b => game.DamageFeedbackMessage.decode + case 0x7c => game.DismountBuildingMsg.decode + case 0x7d => noDecoder(UnknownMessage125) + case 0x7e => noDecoder(UnknownMessage126) + case 0x7f => game.AvatarStatisticsMessage.decode - // OPCODES 0x80-8f - case 0x80 => noDecoder(GenericObjectAction2Message) - case 0x81 => game.DestroyDisplayMessage.decode - case 0x82 => noDecoder(TriggerBotAction) - case 0x83 => game.SquadWaypointRequest.decode - case 0x84 => game.SquadWaypointEvent.decode - case 0x85 => noDecoder(OffshoreVehicleMessage) - case 0x86 => game.ObjectDeployedMessage.decode - case 0x87 => noDecoder(ObjectDeployedCountMessage) - // 0x88 - case 0x88 => game.WeaponDelayFireMessage.decode - case 0x89 => game.BugReportMessage.decode - case 0x8a => game.PlayerStasisMessage.decode - case 0x8b => noDecoder(UnknownMessage139) - case 0x8c => noDecoder(OutfitMembershipRequest) - case 0x8d => noDecoder(OutfitMembershipResponse) - case 0x8e => noDecoder(OutfitRequest) - case 0x8f => noDecoder(OutfitEvent) + // OPCODES 0x80-8f + case 0x80 => noDecoder(GenericObjectAction2Message) + case 0x81 => game.DestroyDisplayMessage.decode + case 0x82 => noDecoder(TriggerBotAction) + case 0x83 => game.SquadWaypointRequest.decode + case 0x84 => game.SquadWaypointEvent.decode + case 0x85 => noDecoder(OffshoreVehicleMessage) + case 0x86 => game.ObjectDeployedMessage.decode + case 0x87 => noDecoder(ObjectDeployedCountMessage) + // 0x88 + case 0x88 => game.WeaponDelayFireMessage.decode + case 0x89 => game.BugReportMessage.decode + case 0x8a => game.PlayerStasisMessage.decode + case 0x8b => noDecoder(UnknownMessage139) + case 0x8c => noDecoder(OutfitMembershipRequest) + case 0x8d => noDecoder(OutfitMembershipResponse) + case 0x8e => noDecoder(OutfitRequest) + case 0x8f => noDecoder(OutfitEvent) - // OPCODES 0x90-9f - case 0x90 => noDecoder(OutfitMemberEvent) - case 0x91 => noDecoder(OutfitMemberUpdate) - case 0x92 => game.PlanetsideStringAttributeMessage.decode - case 0x93 => game.DataChallengeMessage.decode - case 0x94 => game.DataChallengeMessageResp.decode - case 0x95 => game.WeatherMessage.decode - case 0x96 => game.SimDataChallenge.decode - case 0x97 => game.SimDataChallengeResp.decode - // 0x98 - case 0x98 => noDecoder(OutfitListEvent) - case 0x99 => noDecoder(EmpireIncentivesMessage) - case 0x9a => noDecoder(InvalidTerrainMessage) - case 0x9b => noDecoder(SyncMessage) - case 0x9c => noDecoder(DebugDrawMessage) - case 0x9d => noDecoder(SoulMarkMessage) - case 0x9e => noDecoder(UplinkPositionEvent) - case 0x9f => game.HotSpotUpdateMessage.decode + // OPCODES 0x90-9f + case 0x90 => noDecoder(OutfitMemberEvent) + case 0x91 => noDecoder(OutfitMemberUpdate) + case 0x92 => game.PlanetsideStringAttributeMessage.decode + case 0x93 => game.DataChallengeMessage.decode + case 0x94 => game.DataChallengeMessageResp.decode + case 0x95 => game.WeatherMessage.decode + case 0x96 => game.SimDataChallenge.decode + case 0x97 => game.SimDataChallengeResp.decode + // 0x98 + case 0x98 => noDecoder(OutfitListEvent) + case 0x99 => noDecoder(EmpireIncentivesMessage) + case 0x9a => noDecoder(InvalidTerrainMessage) + case 0x9b => noDecoder(SyncMessage) + case 0x9c => noDecoder(DebugDrawMessage) + case 0x9d => noDecoder(SoulMarkMessage) + case 0x9e => noDecoder(UplinkPositionEvent) + case 0x9f => game.HotSpotUpdateMessage.decode - // OPCODES 0xa0-af - case 0xa0 => game.BuildingInfoUpdateMessage.decode - case 0xa1 => game.FireHintMessage.decode - case 0xa2 => noDecoder(UplinkRequest) - case 0xa3 => noDecoder(UplinkResponse) - case 0xa4 => game.WarpgateRequest.decode - case 0xa5 => noDecoder(WarpgateResponse) - case 0xa6 => game.DamageWithPositionMessage.decode - case 0xa7 => game.GenericActionMessage.decode - // 0xa8 - case 0xa8 => game.ContinentalLockUpdateMessage.decode - case 0xa9 => game.AvatarGrenadeStateMessage.decode - case 0xaa => noDecoder(UnknownMessage170) - case 0xab => noDecoder(UnknownMessage171) - case 0xac => game.ReleaseAvatarRequestMessage.decode - case 0xad => game.AvatarDeadStateMessage.decode - case 0xae => noDecoder(CSAssistMessage) - case 0xaf => noDecoder(CSAssistCommentMessage) + // OPCODES 0xa0-af + case 0xa0 => game.BuildingInfoUpdateMessage.decode + case 0xa1 => game.FireHintMessage.decode + case 0xa2 => noDecoder(UplinkRequest) + case 0xa3 => noDecoder(UplinkResponse) + case 0xa4 => game.WarpgateRequest.decode + case 0xa5 => noDecoder(WarpgateResponse) + case 0xa6 => game.DamageWithPositionMessage.decode + case 0xa7 => game.GenericActionMessage.decode + // 0xa8 + case 0xa8 => game.ContinentalLockUpdateMessage.decode + case 0xa9 => game.AvatarGrenadeStateMessage.decode + case 0xaa => noDecoder(UnknownMessage170) + case 0xab => noDecoder(UnknownMessage171) + case 0xac => game.ReleaseAvatarRequestMessage.decode + case 0xad => game.AvatarDeadStateMessage.decode + case 0xae => noDecoder(CSAssistMessage) + case 0xaf => noDecoder(CSAssistCommentMessage) - // OPCODES 0xb0-bf - case 0xb0 => game.VoiceHostRequest.decode - case 0xb1 => game.VoiceHostKill.decode - case 0xb2 => game.VoiceHostInfo.decode - case 0xb3 => game.BattleplanMessage.decode - case 0xb4 => game.BattleExperienceMessage.decode - case 0xb5 => game.TargetingImplantRequest.decode - case 0xb6 => game.ZonePopulationUpdateMessage.decode - case 0xb7 => game.DisconnectMessage.decode - // 0xb8 - case 0xb8 => game.ExperienceAddedMessage.decode - case 0xb9 => game.OrbitalStrikeWaypointMessage.decode - case 0xba => game.KeepAliveMessage.decode - case 0xbb => noDecoder(MapObjectStateBlockMessage) - case 0xbc => noDecoder(SnoopMsg) - case 0xbd => game.PlayerStateMessageUpstream.decode - case 0xbe => game.PlayerStateShiftMessage.decode - case 0xbf => game.ZipLineMessage.decode + // OPCODES 0xb0-bf + case 0xb0 => game.VoiceHostRequest.decode + case 0xb1 => game.VoiceHostKill.decode + case 0xb2 => game.VoiceHostInfo.decode + case 0xb3 => game.BattleplanMessage.decode + case 0xb4 => game.BattleExperienceMessage.decode + case 0xb5 => game.TargetingImplantRequest.decode + case 0xb6 => game.ZonePopulationUpdateMessage.decode + case 0xb7 => game.DisconnectMessage.decode + // 0xb8 + case 0xb8 => game.ExperienceAddedMessage.decode + case 0xb9 => game.OrbitalStrikeWaypointMessage.decode + case 0xba => game.KeepAliveMessage.decode + case 0xbb => noDecoder(MapObjectStateBlockMessage) + case 0xbc => noDecoder(SnoopMsg) + case 0xbd => game.PlayerStateMessageUpstream.decode + case 0xbe => game.PlayerStateShiftMessage.decode + case 0xbf => game.ZipLineMessage.decode - // OPCODES 0xc0-cf - case 0xc0 => noDecoder(CaptureFlagUpdateMessage) - case 0xc1 => noDecoder(VanuModuleUpdateMessage) - case 0xc2 => game.FacilityBenefitShieldChargeRequestMessage.decode - case 0xc3 => game.ProximityTerminalUseMessage.decode - case 0xc4 => game.QuantityDeltaUpdateMessage.decode - case 0xc5 => noDecoder(ChainLashMessage) - case 0xc6 => game.ZoneInfoMessage.decode - case 0xc7 => noDecoder(LongRangeProjectileInfoMessage) - // 0xc8 - case 0xc8 => game.WeaponLazeTargetPositionMessage.decode - case 0xc9 => noDecoder(ModuleLimitsMessage) - case 0xca => noDecoder(OutfitBenefitMessage) - case 0xcb => noDecoder(EmpireChangeTimeMessage) - case 0xcc => noDecoder(ClockCalibrationMessage) - case 0xcd => game.DensityLevelUpdateMessage.decode - case 0xce => noDecoder(ActOfGodMessage) - case 0xcf => noDecoder(AvatarAwardMessage) + // OPCODES 0xc0-cf + case 0xc0 => noDecoder(CaptureFlagUpdateMessage) + case 0xc1 => noDecoder(VanuModuleUpdateMessage) + case 0xc2 => game.FacilityBenefitShieldChargeRequestMessage.decode + case 0xc3 => game.ProximityTerminalUseMessage.decode + case 0xc4 => game.QuantityDeltaUpdateMessage.decode + case 0xc5 => noDecoder(ChainLashMessage) + case 0xc6 => game.ZoneInfoMessage.decode + case 0xc7 => noDecoder(LongRangeProjectileInfoMessage) + // 0xc8 + case 0xc8 => game.WeaponLazeTargetPositionMessage.decode + case 0xc9 => noDecoder(ModuleLimitsMessage) + case 0xca => noDecoder(OutfitBenefitMessage) + case 0xcb => noDecoder(EmpireChangeTimeMessage) + case 0xcc => noDecoder(ClockCalibrationMessage) + case 0xcd => game.DensityLevelUpdateMessage.decode + case 0xce => noDecoder(ActOfGodMessage) + case 0xcf => noDecoder(AvatarAwardMessage) - // OPCODES 0xd0-df - case 0xd0 => noDecoder(UnknownMessage208) - case 0xd1 => game.DisplayedAwardMessage.decode - case 0xd2 => game.RespawnAMSInfoMessage.decode - case 0xd3 => noDecoder(ComponentDamageMessage) - case 0xd4 => noDecoder(GenericObjectActionAtPositionMessage) - case 0xd5 => game.PropertyOverrideMessage.decode - case 0xd6 => noDecoder(WarpgateLinkOverrideMessage) - case 0xd7 => noDecoder(EmpireBenefitsMessage) - // 0xd8 - case 0xd8 => noDecoder(ForceEmpireMessage) - case 0xd9 => game.BroadcastWarpgateUpdateMessage.decode - case 0xda => noDecoder(UnknownMessage218) - case 0xdb => noDecoder(SquadMainTerminalMessage) - case 0xdc => noDecoder(SquadMainTerminalResponseMessage) - case 0xdd => noDecoder(SquadOrderMessage) - case 0xde => noDecoder(SquadOrderResponse) - case 0xdf => game.ZoneLockInfoMessage.decode + // OPCODES 0xd0-df + case 0xd0 => noDecoder(UnknownMessage208) + case 0xd1 => game.DisplayedAwardMessage.decode + case 0xd2 => game.RespawnAMSInfoMessage.decode + case 0xd3 => noDecoder(ComponentDamageMessage) + case 0xd4 => noDecoder(GenericObjectActionAtPositionMessage) + case 0xd5 => game.PropertyOverrideMessage.decode + case 0xd6 => noDecoder(WarpgateLinkOverrideMessage) + case 0xd7 => noDecoder(EmpireBenefitsMessage) + // 0xd8 + case 0xd8 => noDecoder(ForceEmpireMessage) + case 0xd9 => game.BroadcastWarpgateUpdateMessage.decode + case 0xda => noDecoder(UnknownMessage218) + case 0xdb => noDecoder(SquadMainTerminalMessage) + case 0xdc => noDecoder(SquadMainTerminalResponseMessage) + case 0xdd => noDecoder(SquadOrderMessage) + case 0xde => noDecoder(SquadOrderResponse) + case 0xdf => game.ZoneLockInfoMessage.decode - // OPCODES 0xe0-ef - case 0xe0 => noDecoder(SquadBindInfoMessage) - case 0xe1 => noDecoder(AudioSequenceMessage) - case 0xe2 => noDecoder(SquadFacilityBindInfoMessage) - case 0xe3 => game.ZoneForcedCavernConnectionsMessage.decode - case 0xe4 => noDecoder(MissionActionMessage) - case 0xe5 => noDecoder(MissionKillTriggerMessage) - case 0xe6 => game.ReplicationStreamMessage.decode - case 0xe7 => game.SquadDefinitionActionMessage.decode - // 0xe8 - case 0xe8 => game.SquadDetailDefinitionUpdateMessage.decode - case 0xe9 => noDecoder(TacticsMessage) - case 0xea => noDecoder(RabbitUpdateMessage) - case 0xeb => game.SquadInvitationRequestMessage.decode - case 0xec => game.CharacterKnowledgeMessage.decode - case 0xed => noDecoder(GameScoreUpdateMessage) - case 0xee => noDecoder(UnknownMessage238) - case 0xef => noDecoder(OrderTerminalBugMessage) + // OPCODES 0xe0-ef + case 0xe0 => noDecoder(SquadBindInfoMessage) + case 0xe1 => noDecoder(AudioSequenceMessage) + case 0xe2 => noDecoder(SquadFacilityBindInfoMessage) + case 0xe3 => game.ZoneForcedCavernConnectionsMessage.decode + case 0xe4 => noDecoder(MissionActionMessage) + case 0xe5 => noDecoder(MissionKillTriggerMessage) + case 0xe6 => game.ReplicationStreamMessage.decode + case 0xe7 => game.SquadDefinitionActionMessage.decode + // 0xe8 + case 0xe8 => game.SquadDetailDefinitionUpdateMessage.decode + case 0xe9 => noDecoder(TacticsMessage) + case 0xea => noDecoder(RabbitUpdateMessage) + case 0xeb => game.SquadInvitationRequestMessage.decode + case 0xec => game.CharacterKnowledgeMessage.decode + case 0xed => noDecoder(GameScoreUpdateMessage) + case 0xee => noDecoder(UnknownMessage238) + case 0xef => noDecoder(OrderTerminalBugMessage) - // OPCODES 0xf0-f3 - case 0xf0 => noDecoder(QueueTimedHelpMessage) - case 0xf1 => game.MailMessage.decode - case 0xf2 => noDecoder(GameVarUpdate) - case 0xf3 => noDecoder(ClientCheatedMessage) - case _ => noDecoder(opcode) - } + // OPCODES 0xf0-f3 + case 0xf0 => noDecoder(QueueTimedHelpMessage) + case 0xf1 => game.MailMessage.decode + case 0xf2 => noDecoder(GameVarUpdate) + case 0xf3 => noDecoder(ClientCheatedMessage) + case _ => noDecoder(opcode) + } implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L) } diff --git a/common/src/main/scala/net/psforever/packet/PSPacket.scala b/common/src/main/scala/net/psforever/packet/PSPacket.scala index b1fc90ff..385192f1 100644 --- a/common/src/main/scala/net/psforever/packet/PSPacket.scala +++ b/common/src/main/scala/net/psforever/packet/PSPacket.scala @@ -3,7 +3,8 @@ package net.psforever.packet import java.nio.charset.Charset -import scodec.{DecodeResult, Err, Codec, Attempt} +import enumeratum.values.{IntEnum, IntEnumEntry} +import scodec.{Attempt, Codec, DecodeResult, Err} import scodec.bits._ import scodec.codecs._ import scodec._ @@ -11,33 +12,32 @@ import shapeless._ /** The base of all packets */ sealed trait PlanetSidePacket extends Serializable { - def encode : Attempt[BitVector] - def opcode : Enumeration#Value + def encode: Attempt[BitVector] + def opcode: Enumeration#Value } /** Used by companion objects to create encoders and decoders */ trait Marshallable[T] { - implicit val codec : Codec[T] - def encode(a : T) : Attempt[BitVector] = codec.encode(a) - def decode(a : BitVector) : Attempt[DecodeResult[T]] = codec.decode(a) + implicit val codec: Codec[T] + def encode(a: T): Attempt[BitVector] = codec.encode(a) + def decode(a: BitVector): Attempt[DecodeResult[T]] = codec.decode(a) } /** PlanetSide game packets: net.psforever.packet.game._ */ trait PlanetSideGamePacket extends PlanetSidePacket { - def opcode : GamePacketOpcode.Type + def opcode: GamePacketOpcode.Type } /** PlanetSide control packets: net.psforever.packet.control._ */ trait PlanetSideControlPacket extends PlanetSidePacket { - def opcode : ControlPacketOpcode.Type + def opcode: ControlPacketOpcode.Type } /** PlanetSide crypto packets: net.psforever.packet.crypto._ */ trait PlanetSideCryptoPacket extends PlanetSidePacket { - def opcode : CryptoPacketOpcode.Type + def opcode: CryptoPacketOpcode.Type } - /** PlanetSide packet type. Used in more complicated packet headers * * ResetSequence - Not sure what this is used for or if the name matches what it actually does @@ -47,7 +47,8 @@ trait PlanetSideCryptoPacket extends PlanetSidePacket { * Crypto - Used for early crypto packets that are NOT encrypted * Normal - Used for all non-crypto packets. May or may not be encrypted. * - * Enumeration starts at 1. That's what I see in IDA */ + * Enumeration starts at 1. That's what I see in IDA + */ object PacketType extends Enumeration(1) { type Type = Value val ResetSequence, Unknown2, Crypto, Normal = Value @@ -56,26 +57,27 @@ object PacketType extends Enumeration(1) { } /** PlanetSide packet flags (beginning of most packets) */ -final case class PlanetSidePacketFlags(packetType : PacketType.Value, secured : Boolean) +final case class PlanetSidePacketFlags(packetType: PacketType.Value, secured: Boolean) /** Codec for [[PlanetSidePacketFlags]] */ object PlanetSidePacketFlags extends Marshallable[PlanetSidePacketFlags] { - implicit val codec : Codec[PlanetSidePacketFlags] = ( + implicit val codec: Codec[PlanetSidePacketFlags] = ( ("packet_type" | PacketType.codec) :: // first 4-bits ("unused" | constant(bin"0")) :: ("secured" | bool) :: - ("advanced" | constant(bin"1")) :: // we only support "advanced packets" + ("advanced" | constant(bin"1")) :: // we only support "advanced packets" ("length_specified" | constant(bin"0")) // we DO NOT support this field - ).as[PlanetSidePacketFlags] + ).as[PlanetSidePacketFlags] } ////////////////////////////////////////////////// object PacketHelpers { + /** Used in certain instances where Codec defintions are stubbed out */ - def emptyCodec[T](instance : T) = { - def to(pkt : T) = HNil - def from(a : HNil) = instance + def emptyCodec[T](instance: T) = { + def to(pkt: T) = HNil + def from(a: HNil) = instance Codec[HNil].xmap[T](from, to) } @@ -85,61 +87,86 @@ object PacketHelpers { * @tparam E The inferred type * @return Generated codec */ - def createEnumerationCodec[E <: Enumeration](enum : E, storageCodec : Codec[Int]) : Codec[E#Value] = { + def createEnumerationCodec[E <: Enumeration](enum: E, storageCodec: Codec[Int]): Codec[E#Value] = { type Struct = Int :: HNil - val struct : Codec[Struct] = storageCodec.hlist - val primitiveLimit = Math.pow(2, storageCodec.sizeBound.exact.get.toDouble) + val struct: Codec[Struct] = storageCodec.hlist + val primitiveLimit = Math.pow(2, storageCodec.sizeBound.exact.get.toDouble) // Assure that the enum will always be able to fit in a N-bit int - assert(enum.maxId <= primitiveLimit, - enum.getClass.getCanonicalName + s": maxId exceeds primitive type (limit of $primitiveLimit, maxId ${enum.maxId})") + assert( + enum.maxId <= primitiveLimit, + enum.getClass.getCanonicalName + s": maxId exceeds primitive type (limit of $primitiveLimit, maxId ${enum.maxId})" + ) - def to(pkt : E#Value) : Struct = { + def to(pkt: E#Value): Struct = { pkt.id :: HNil } - def from(struct : Struct) : Attempt[E#Value] = struct match { - case enumVal :: HNil => - // verify that this int can match the enum - val first = enum.values.firstKey.id - val last = enum.maxId - 1 + def from(struct: Struct): Attempt[E#Value] = + struct match { + case enumVal :: HNil => + // verify that this int can match the enum + val first = enum.values.firstKey.id + val last = enum.maxId - 1 - if(enumVal >= first && enumVal <= last) - Attempt.successful(enum(enumVal)) - else - Attempt.failure(Err(s"Expected ${enum} with ID between [${first}, ${last}], but got '${enumVal}'")) - } + if (enumVal >= first && enumVal <= last) + Attempt.successful(enum(enumVal)) + else + Attempt.failure(Err(s"Expected ${enum} with ID between [${first}, ${last}], but got '${enumVal}'")) + } struct.narrow[E#Value](from, to) } /** Same as [[createEnumerationCodec]] but with a Codec type of Long * - * NOTE: enumerations in scala can't be represented by more than an Int anyways, so this conversion shouldnt matter. + * NOTE: enumerations in scala can't be represented by more than an Int anyways, so this conversion shouldn't matter. * This is only to overload createEnumerationCodec to work with uint32[L] codecs (which are Long) */ - def createLongEnumerationCodec[E <: Enumeration](enum : E, storageCodec : Codec[Long]) : Codec[E#Value] = { + def createLongEnumerationCodec[E <: Enumeration](enum: E, storageCodec: Codec[Long]): Codec[E#Value] = { createEnumerationCodec(enum, storageCodec.xmap[Int](_.toInt, _.toLong)) } + /** Create a Codec for enumeratum's Enum type */ + def createEnumCodec[E <: IntEnumEntry](enum: IntEnum[E], storageCodec: Codec[Int]): Codec[E] = { + type Struct = Int :: HNil + val struct: Codec[Struct] = storageCodec.hlist + + def to(pkt: E): Struct = { + pkt.value :: HNil + } + + def from(struct: Struct): Attempt[E] = + struct match { + case enumVal :: HNil => + enum.withValueOpt(enumVal) match { + case Some(v) => Attempt.successful(v) + case None => + Attempt.failure(Err(s"Enum value '${enumVal}' not found in values '${enum.values.toString()}'")) + } + } + + struct.narrow[E](from, to) + } + /** Common codec for how PlanetSide stores string sizes * * When the first bit of the byte is set, the size can be between [0, 127]. * Otherwise, it is between [128, 32767] and two bytes are used for encoding. * The magic in this is next level (read as: SCodec makes things hard to understand) */ - def encodedStringSize : Codec[Int] = either(bool, uint(15), uint(7)). - xmap[Int]( - (a : Either[Int, Int]) => a.fold[Int](a => a, a => a), - (a : Int) => - // if the specified goes above 0x7f (127) then we need two bytes to represent it - if(a > 0x7f) Left(a) else Right(a) - ) + def encodedStringSize: Codec[Int] = + either(bool, uint(15), uint(7)).xmap[Int]( + (a: Either[Int, Int]) => a.fold[Int](a => a, a => a), + (a: Int) => + // if the specified goes above 0x7f (127) then we need two bytes to represent it + if (a > 0x7f) Left(a) else Right(a) + ) - private def encodedStringSizeWithPad(pad : Int) : Codec[Int] = encodedStringSize <~ ignore(pad) + private def encodedStringSizeWithPad(pad: Int): Codec[Int] = encodedStringSize <~ ignore(pad) /** Codec for how PlanetSide represents strings on the wire */ - def encodedString : Codec[String] = variableSizeBytes(encodedStringSize, ascii) + def encodedString: Codec[String] = variableSizeBytes(encodedStringSize, ascii) /** Same as [[encodedString]] but with a bit adjustment * @@ -149,7 +176,8 @@ object PacketHelpers { * @param adjustment The adjustment amount in bits * @return Generated string decoding codec with adjustment */ - def encodedStringAligned(adjustment : Int) : Codec[String] = variableSizeBytes(encodedStringSizeWithPad(adjustment), ascii) + def encodedStringAligned(adjustment: Int): Codec[String] = + variableSizeBytes(encodedStringSizeWithPad(adjustment), ascii) /** Variable for the charset that PlanetSide uses for unicode (2 byte unicode) */ val utf16 = string(Charset.forName("UTF-16LE")) @@ -159,17 +187,25 @@ object PacketHelpers { * An encoded *wide* string is twice the length of the given encoded size and half of the length of the * input string. We use xmap to transform the [[encodedString]] codec as this change is just a division and multiply */ - def encodedWideString : Codec[String] = variableSizeBytes(encodedStringSize.xmap( - insize => insize * 2, // number of symbols -> number of bytes (decode) - outSize => outSize / 2 // number of bytes -> number of symbols (encode) - ), utf16) + def encodedWideString: Codec[String] = + variableSizeBytes( + encodedStringSize.xmap( + insize => insize * 2, // number of symbols -> number of bytes (decode) + outSize => outSize / 2 // number of bytes -> number of symbols (encode) + ), + utf16 + ) /** Same as [[encodedWideString]] but with a bit alignment after the decoded size */ - def encodedWideStringAligned(adjustment : Int) : Codec[String] = variableSizeBytes(encodedStringSizeWithPad(adjustment).xmap( - insize => insize * 2, - outSize => outSize / 2 - ), utf16) + def encodedWideStringAligned(adjustment: Int): Codec[String] = + variableSizeBytes( + encodedStringSizeWithPad(adjustment).xmap( + insize => insize * 2, + outSize => outSize / 2 + ), + utf16 + ) // TODO: make the function below work as there are places it should be used /*private def encodedStringSizeWithLimit(limit : Int) : Codec[Int] = { @@ -194,7 +230,7 @@ object PacketHelpers { ) } def encodedStringWithLimit(limit : Int) : Codec[String] = variableSizeBytes(encodedStringSizeWithLimit(limit), ascii) - */ + */ /** * Encode and decode a byte-aligned `List`.
@@ -207,14 +243,19 @@ object PacketHelpers { * @see codec\package.scala, listOfN * @return a codec that works on a List of A */ - def listOfNAligned[A](countCodec : Codec[Long], alignment : Int, valueCodec : Codec[A]) : Codec[List[A]] = { - countCodec. - flatZip { count => new AlignedListCodec(countCodec, valueCodec, alignment, Some(count)) }. - narrow[List[A]]({ case (cnt, xs) => - if(xs.size == cnt) Attempt.successful(xs) - else Attempt.failure(Err(s"Insufficient number of elements: decoded ${xs.size} but should have decoded $cnt")) - }, xs => (xs.size, xs)). - withToString(s"listOfN($countCodec, $valueCodec)") + def listOfNAligned[A](countCodec: Codec[Long], alignment: Int, valueCodec: Codec[A]): Codec[List[A]] = { + countCodec + .flatZip { count => new AlignedListCodec(countCodec, valueCodec, alignment, Some(count)) } + .narrow[List[A]]( + { + case (cnt, xs) => + if (xs.size == cnt) Attempt.successful(xs) + else + Attempt.failure(Err(s"Insufficient number of elements: decoded ${xs.size} but should have decoded $cnt")) + }, + xs => (xs.size, xs) + ) + .withToString(s"listOfN($countCodec, $valueCodec)") } /** @@ -230,7 +271,8 @@ object PacketHelpers { * @see codec\package.scala, provides * @return a codec that works on a List of A but excludes the size from the encoding */ - def listOfNSized[A](size : Long, codec : Codec[A]) : Codec[List[A]] = PacketHelpers.listOfNAligned(provide(if(size < 0) 0 else size), 0, codec) + def listOfNSized[A](size: Long, codec: Codec[A]): Codec[List[A]] = + PacketHelpers.listOfNAligned(provide(if (size < 0) 0 else size), 0, codec) /** * A `peek` that decodes like the normal but encodes nothing. @@ -241,11 +283,12 @@ object PacketHelpers { * @param target codec that decodes the value * @return `Codec` that behaves the same as `target` but resets the contents of the vector as if `Codec` were never applied */ - def peek[A](target: Codec[A]): Codec[A] = new Codec[A] { - def sizeBound = target.sizeBound - def encode(a: A) = Attempt.Successful(BitVector.empty) - def decode(b: BitVector) = target.decode(b).map { _.mapRemainder(_ => b) } - } + def peek[A](target: Codec[A]): Codec[A] = + new Codec[A] { + def sizeBound = target.sizeBound + def encode(a: A) = Attempt.Successful(BitVector.empty) + def decode(b: BitVector) = target.decode(b).map { _.mapRemainder(_ => b) } + } } /** @@ -259,7 +302,13 @@ object PacketHelpers { * @tparam A the type of the `List` contents * @see ListCodec.scala */ -private class AlignedListCodec[A](countCodec : Codec[Long], valueCodec: Codec[A], alignment : Int, limit: Option[Long] = None) extends Codec[List[A]] { +private class AlignedListCodec[A]( + countCodec: Codec[Long], + valueCodec: Codec[A], + alignment: Int, + limit: Option[Long] = None +) extends Codec[List[A]] { + /** * Convert a `List` of elements into a byte-aligned `BitVector`.
*
@@ -269,13 +318,15 @@ private class AlignedListCodec[A](countCodec : Codec[Long], valueCodec: Codec[A] * @param list the `List` to be encoded * @return the `BitVector` encoding, if successful */ - override def encode(list : List[A]) : Attempt[BitVector] = { - val solve : Attempt[BitVector] = Encoder.encodeSeq(valueCodec)(list) - if(alignment > 0) { + override def encode(list: List[A]): Attempt[BitVector] = { + val solve: Attempt[BitVector] = Encoder.encodeSeq(valueCodec)(list) + if (alignment > 0) { solve match { case Attempt.Successful(vector) => - val countCodecSize : Long = countCodec.sizeBound.lowerBound - return Attempt.successful(vector.take(countCodecSize) ++ BitVector.fill(alignment)(false) ++ vector.drop(countCodecSize)) + val countCodecSize: Long = countCodec.sizeBound.lowerBound + return Attempt.successful( + vector.take(countCodecSize) ++ BitVector.fill(alignment)(false) ++ vector.drop(countCodecSize) + ) case _ => return Attempt.failure(Err("failed to create a list")) } @@ -289,7 +340,7 @@ private class AlignedListCodec[A](countCodec : Codec[Long], valueCodec: Codec[A] * @return the decoded `List` */ def decode(buffer: BitVector) = { - val lim = Option( if(limit.isDefined) limit.get.asInstanceOf[Int] else 0 ) //TODO potentially unsafe size conversion + val lim = Option(if (limit.isDefined) limit.get.asInstanceOf[Int] else 0) //TODO potentially unsafe size conversion Decoder.decodeCollect[List, A](valueCodec, lim)(buffer.drop(alignment)) } @@ -299,10 +350,11 @@ private class AlignedListCodec[A](countCodec : Codec[Long], valueCodec: Codec[A] * Unchanged from original. * @return the size as calculated by the size of each element for each element */ - def sizeBound = limit match { - case None => SizeBound.unknown - case Some(lim) => valueCodec.sizeBound * lim - } + def sizeBound = + limit match { + case None => SizeBound.unknown + case Some(lim) => valueCodec.sizeBound * lim + } /** * Get a `String` representation of this `List`.
@@ -311,4 +363,4 @@ private class AlignedListCodec[A](countCodec : Codec[Long], valueCodec: Codec[A] * @return the `String` representation */ override def toString = s"list($valueCodec)" -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/packet/PacketCoding.scala b/common/src/main/scala/net/psforever/packet/PacketCoding.scala index fa2400e8..ce0dc954 100644 --- a/common/src/main/scala/net/psforever/packet/PacketCoding.scala +++ b/common/src/main/scala/net/psforever/packet/PacketCoding.scala @@ -21,8 +21,7 @@ sealed trait PlanetSidePacketContainer * @param sequenceNumber na * @param payload the packet data */ -final case class EncryptedPacket(sequenceNumber : Int, - payload : ByteVector) extends PlanetSidePacketContainer +final case class EncryptedPacket(sequenceNumber: Int, payload: ByteVector) extends PlanetSidePacketContainer /** * A crypto packet contains the following: @@ -32,8 +31,7 @@ final case class EncryptedPacket(sequenceNumber : Int, * @param sequenceNumber na * @param packet the packet data */ -final case class CryptoPacket(sequenceNumber : Int, - packet : PlanetSideCryptoPacket) extends PlanetSidePacketContainer +final case class CryptoPacket(sequenceNumber: Int, packet: PlanetSideCryptoPacket) extends PlanetSidePacketContainer /** * A game packet is prefaced by a byte that determines the type of packet and how to interpret the data. @@ -42,25 +40,25 @@ final case class CryptoPacket(sequenceNumber : Int, * @param sequenceNumber na * @param packet the packet data */ -final case class GamePacket(opcode : GamePacketOpcode.Value, - sequenceNumber : Int, - packet : PlanetSideGamePacket) extends PlanetSidePacketContainer +final case class GamePacket(opcode: GamePacketOpcode.Value, sequenceNumber: Int, packet: PlanetSideGamePacket) + extends PlanetSidePacketContainer /** * A control packet is prefaced with a zero'd byte (`00`) followed by a special byte opcode for the type of control packet. * @param opcode a byte that identifies the packet * @param packet the packet data */ -final case class ControlPacket(opcode : ControlPacketOpcode.Value, - packet : PlanetSideControlPacket) extends PlanetSidePacketContainer +final case class ControlPacket(opcode: ControlPacketOpcode.Value, packet: PlanetSideControlPacket) + extends PlanetSidePacketContainer object PacketCoding { + /** * Access to the `ControlPacket` constructor. * @param packet a `PlanetSideControlPacket` * @return a `ControlPacket` */ - def CreateControlPacket(packet : PlanetSideControlPacket) = ControlPacket(packet.opcode, packet) + def CreateControlPacket(packet: PlanetSideControlPacket) = ControlPacket(packet.opcode, packet) /** * Access to the `CryptoPacket` constructor. @@ -68,7 +66,7 @@ object PacketCoding { * @param packet a `PlanetSideCryptoPacket` * @return a `CryptoPacket` */ - def CreateCryptoPacket(sequence : Int, packet : PlanetSideCryptoPacket) = CryptoPacket(sequence, packet) + def CreateCryptoPacket(sequence: Int, packet: PlanetSideCryptoPacket) = CryptoPacket(sequence, packet) /** * Access to the `GamePacket` constructor. @@ -76,9 +74,9 @@ object PacketCoding { * @param packet a `PlanetSideGamePacket` * @return a `GamePacket` */ - def CreateGamePacket(sequence : Int, packet : PlanetSideGamePacket) = GamePacket(packet.opcode, sequence, packet) + def CreateGamePacket(sequence: Int, packet: PlanetSideGamePacket) = GamePacket(packet.opcode, sequence, packet) -/* Marshalling and Encoding. */ + /* Marshalling and Encoding. */ /** * Transform a kind of packet into the sequence of data that represents it. @@ -86,15 +84,15 @@ object PacketCoding { * @param packet the packet to encode * @return a `BitVector` translated from the packet's data */ - def MarshalPacket(packet : PlanetSidePacketContainer) : Attempt[BitVector] = { - var flagsEncoded : BitVector = BitVector.empty //flags before everything in packet - var seqEncoded : BitVector = BitVector.empty //control packets have a sequence number - var paddingEncoded : BitVector = BitVector.empty //encrypted packets need to be aligned in a certain way - var payloadEncoded : BitVector = BitVector.empty //the packet itself as bits and bytes - var controlPacket = false - var sequenceNum = 0 + def MarshalPacket(packet: PlanetSidePacketContainer): Attempt[BitVector] = { + var flagsEncoded: BitVector = BitVector.empty //flags before everything in packet + var seqEncoded: BitVector = BitVector.empty //control packets have a sequence number + var paddingEncoded: BitVector = BitVector.empty //encrypted packets need to be aligned in a certain way + var payloadEncoded: BitVector = BitVector.empty //the packet itself as bits and bytes + var controlPacket = false + var sequenceNum = 0 //packet flags - var secured = false + var secured = false var packetType = PacketType.Crypto packet match { @@ -103,14 +101,14 @@ object PacketCoding { sequenceNum = seq EncodePacket(payload) match { case f @ Failure(_) => return f - case Successful(p) => payloadEncoded = p + case Successful(p) => payloadEncoded = p } case ControlPacket(_, payload) => controlPacket = true EncodePacket(payload) match { case f @ Failure(_) => return f - case Successful(p) => payloadEncoded = p + case Successful(p) => payloadEncoded = p } case CryptoPacket(seq, payload) => @@ -118,7 +116,7 @@ object PacketCoding { sequenceNum = seq EncodePacket(payload) match { case f @ Failure(_) => return f - case Successful(p) => payloadEncoded = p + case Successful(p) => payloadEncoded = p } case EncryptedPacket(seq, payload) => @@ -132,11 +130,12 @@ object PacketCoding { } //crypto packets DON'T have flags - if(!controlPacket) { + if (!controlPacket) { val flags = PlanetSidePacketFlags(packetType, secured = secured) flagsEncoded = PlanetSidePacketFlags.codec.encode(flags).require uint16L.encode(sequenceNum) match { - case Failure(e) => return Attempt.failure(Err(s"Failed to marshal sequence in packet $packet: " + e.messageWithContext)) + case Failure(e) => + return Attempt.failure(Err(s"Failed to marshal sequence in packet $packet: " + e.messageWithContext)) case Successful(p) => seqEncoded = p } } @@ -148,16 +147,18 @@ object PacketCoding { * @param packet the control packet to encode * @return a `BitVector` translated from the packet's data */ - def EncodePacket(packet : PlanetSideControlPacket) : Attempt[BitVector] = { - val opcode = packet.opcode + def EncodePacket(packet: PlanetSideControlPacket): Attempt[BitVector] = { + val opcode = packet.opcode var opcodeEncoded = BitVector.empty ControlPacketOpcode.codec.encode(opcode) match { - case Failure(e) => return Attempt.failure(Err(s"Failed to marshal opcode in control packet $opcode: " + e.messageWithContext)) + case Failure(e) => + return Attempt.failure(Err(s"Failed to marshal opcode in control packet $opcode: " + e.messageWithContext)) case Successful(p) => opcodeEncoded = p } var payloadEncoded = BitVector.empty encodePacket(packet) match { - case Failure(e) => return Attempt.failure(Err(s"Failed to marshal control packet $packet: " + e.messageWithContext)) + case Failure(e) => + return Attempt.failure(Err(s"Failed to marshal control packet $packet: " + e.messageWithContext)) case Successful(p) => payloadEncoded = p } Attempt.Successful(hex"00".bits ++ opcodeEncoded ++ payloadEncoded) @@ -168,9 +169,9 @@ object PacketCoding { * @param packet the crypto packet to encode * @return a `BitVector` translated from the packet's data */ - def EncodePacket(packet : PlanetSideCryptoPacket) : Attempt[BitVector] = { + def EncodePacket(packet: PlanetSideCryptoPacket): Attempt[BitVector] = { encodePacket(packet) match { - case Failure(e) => Attempt.failure(Err(s"Failed to marshal crypto packet $packet: " + e.messageWithContext)) + case Failure(e) => Attempt.failure(Err(s"Failed to marshal crypto packet $packet: " + e.messageWithContext)) case s @ Successful(_) => s } } @@ -180,16 +181,17 @@ object PacketCoding { * @param packet the game packet to encode * @return a `BitVector` translated from the packet's data */ - def EncodePacket(packet : PlanetSideGamePacket) : Attempt[BitVector] = { - val opcode = packet.opcode + def EncodePacket(packet: PlanetSideGamePacket): Attempt[BitVector] = { + val opcode = packet.opcode var opcodeEncoded = BitVector.empty GamePacketOpcode.codec.encode(opcode) match { - case Failure(e) => return Attempt.failure(Err(s"Failed to marshal opcode in game packet $opcode: " + e.messageWithContext)) + case Failure(e) => + return Attempt.failure(Err(s"Failed to marshal opcode in game packet $opcode: " + e.messageWithContext)) case Successful(p) => opcodeEncoded = p } var payloadEncoded = BitVector.empty encodePacket(packet) match { - case Failure(e) => return Attempt.failure(Err(s"Failed to marshal game packet $packet: " + e.messageWithContext)) + case Failure(e) => return Attempt.failure(Err(s"Failed to marshal game packet $packet: " + e.messageWithContext)) case Successful(p) => payloadEncoded = p } Attempt.Successful(opcodeEncoded ++ payloadEncoded) @@ -201,9 +203,9 @@ object PacketCoding { * @param packet the packet to encode * @return a `BitVector` translated from the packet's data */ - private def encodePacket(packet : PlanetSidePacket) : Attempt[BitVector] = packet.encode + private def encodePacket(packet: PlanetSidePacket): Attempt[BitVector] = packet.encode -/* Unmarshalling and Decoding. */ + /* Unmarshalling and Decoding. */ /** * A lower bound on the packet size @@ -219,14 +221,14 @@ object PacketCoding { * crypto packets as they do not have opcodes * @return `PlanetSidePacketContainer` */ - def UnmarshalPacket(msg : ByteVector, cryptoState : CryptoPacketOpcode.Type) : Attempt[PlanetSidePacketContainer] = { - if(msg.length < PLANETSIDE_MIN_PACKET_SIZE) + def UnmarshalPacket(msg: ByteVector, cryptoState: CryptoPacketOpcode.Type): Attempt[PlanetSidePacketContainer] = { + if (msg.length < PLANETSIDE_MIN_PACKET_SIZE) return Attempt.failure(Err(s"Packet does not meet the minimum length of $PLANETSIDE_MIN_PACKET_SIZE bytes")) - val firstByte = msg{0} + val firstByte = msg { 0 } firstByte match { - case 0x00 => unmarshalControlPacket(msg.drop(1)) //control packets dont need the first byte - case _ => unmarshalFlaggedPacket(msg, cryptoState) //either EncryptedPacket or CryptoPacket + case 0x00 => unmarshalControlPacket(msg.drop(1)) //control packets dont need the first byte + case _ => unmarshalFlaggedPacket(msg, cryptoState) //either EncryptedPacket or CryptoPacket } } @@ -236,7 +238,8 @@ object PacketCoding { * @param msg packet data bytes * @return `PlanetSidePacketContainer` */ - def UnmarshalPacket(msg : ByteVector) : Attempt[PlanetSidePacketContainer] = UnmarshalPacket(msg, CryptoPacketOpcode.Ignore) + def UnmarshalPacket(msg: ByteVector): Attempt[PlanetSidePacketContainer] = + UnmarshalPacket(msg, CryptoPacketOpcode.Ignore) /** * Handle decoding for a packet that has been identified as not a `ControlPacket`. @@ -245,23 +248,26 @@ object PacketCoding { * @param cryptoState the current cryptographic state * @return a `PlanetSidePacketContainer` */ - private def unmarshalFlaggedPacket(msg : ByteVector, cryptoState : CryptoPacketOpcode.Type) : Attempt[PlanetSidePacketContainer] = { + private def unmarshalFlaggedPacket( + msg: ByteVector, + cryptoState: CryptoPacketOpcode.Type + ): Attempt[PlanetSidePacketContainer] = { val decodedFlags = Codec.decode[PlanetSidePacketFlags](BitVector(msg)) //get the flags decodedFlags match { case Failure(e) => return Attempt.failure(Err("Failed to parse packet flags: " + e.message)) case _ => } - val flags = decodedFlags.require.value + val flags = decodedFlags.require.value val packetType = flags.packetType packetType match { case PacketType.Normal => - if(!flags.secured) { //support normal packets only if they are encrypted + if (!flags.secured) { //support normal packets only if they are encrypted return Attempt.failure(Err("Unsupported packet type: normal packets must be encryped")) } case PacketType.Crypto => - if(flags.secured) { //support crypto packets only if they are not encrypted + if (flags.secured) { //support crypto packets only if they are not encrypted return Attempt.failure(Err("Unsupported packet type: crypto packets must be unencrypted")) } @@ -276,7 +282,7 @@ object PacketCoding { case _ => } val sequence = decodedSeq.require.value - val payload = decodedSeq.require.remainder.toByteVector + val payload = decodedSeq.require.remainder.toByteVector packetType match { case PacketType.Crypto => unmarshalCryptoPacket(cryptoState, sequence, payload) @@ -290,7 +296,7 @@ object PacketCoding { * @param msg the packet * @return a `ControlPacket` */ - private def unmarshalControlPacket(msg : ByteVector) : Attempt[ControlPacket] = { + private def unmarshalControlPacket(msg: ByteVector): Attempt[ControlPacket] = { DecodeControlPacket(msg) match { case f @ Failure(_) => f @@ -305,8 +311,8 @@ object PacketCoding { * @param msg the packet data * @return a `GamePacket` */ - private def unmarshalGamePacket(sequence : Int, msg : ByteVector) : Attempt[GamePacket] = { - DecodeGamePacket(msg) match { + private def unmarshalGamePacket(sequence: Int, msg: ByteVector): Attempt[GamePacket] = { + DecodeGamePacket(msg) match { case f @ Failure(_) => f case Successful(p) => @@ -321,7 +327,11 @@ object PacketCoding { * @param payload the packet data * @return a `CryptoPacket` */ - private def unmarshalCryptoPacket(state : CryptoPacketOpcode.Type, sequence : Int, payload : ByteVector) : Attempt[CryptoPacket] = { + private def unmarshalCryptoPacket( + state: CryptoPacketOpcode.Type, + sequence: Int, + payload: ByteVector + ): Attempt[CryptoPacket] = { CryptoPacketOpcode.getPacketDecoder(state)(payload.bits) match { case Successful(a) => Attempt.successful(CryptoPacket(sequence, a.value)) @@ -338,7 +348,7 @@ object PacketCoding { * @param payload the packet data * @return an `EncryptedPacket` */ - private def unmarshalEncryptedPacket(sequence : Int, payload : ByteVector) : Attempt[EncryptedPacket] = { + private def unmarshalEncryptedPacket(sequence: Int, payload: ByteVector): Attempt[EncryptedPacket] = { Attempt.successful(EncryptedPacket(sequence, payload)) } @@ -351,13 +361,13 @@ object PacketCoding { * @return `PlanetSidePacket` * @see `UnMarshalPacket` */ - def DecodePacket(msg : ByteVector) : Attempt[PlanetSidePacket] = { - if(msg.length < PLANETSIDE_MIN_PACKET_SIZE) + def DecodePacket(msg: ByteVector): Attempt[PlanetSidePacket] = { + if (msg.length < PLANETSIDE_MIN_PACKET_SIZE) return Attempt.failure(Err(s"Packet does not meet the minimum length of $PLANETSIDE_MIN_PACKET_SIZE bytes")) - val firstByte = msg{0} + val firstByte = msg { 0 } firstByte match { case 0x00 => DecodeControlPacket(msg.drop(1)) //control packets dont need the first byte - case _ => DecodeGamePacket(msg) + case _ => DecodeGamePacket(msg) } } @@ -366,7 +376,7 @@ object PacketCoding { * @param msg the the raw data to decode * @return a `PlanetSideControlPacket` */ - def DecodeControlPacket(msg : ByteVector) : Attempt[PlanetSideControlPacket] = { + def DecodeControlPacket(msg: ByteVector): Attempt[PlanetSideControlPacket] = { ControlPacketOpcode.codec.decode(msg.bits) match { case Failure(e) => Attempt.failure(Err("Failed to decode control packet's opcode: " + e.message)) @@ -387,7 +397,7 @@ object PacketCoding { * @param msg the the raw data to decode * @return a `PlanetSideGamePacket` */ - def DecodeGamePacket(msg : ByteVector) : Attempt[PlanetSideGamePacket] = { + def DecodeGamePacket(msg: ByteVector): Attempt[PlanetSideGamePacket] = { GamePacketOpcode.codec.decode(msg.bits) match { case Failure(e) => Attempt.failure(Err("Failed to decode game packet's opcode: " + e.message)) @@ -403,7 +413,7 @@ object PacketCoding { } } -/* Encrypting and Decrypting. */ + /* Encrypting and Decrypting. */ /** * Transform the privileged `packet` into a `RawPacket` representation to get: @@ -412,12 +422,12 @@ object PacketCoding { * @param packet the unencrypted packet * @return paired data based on the packet */ - def getPacketDataForEncryption(packet : PlanetSidePacketContainer) : Attempt[(Int, ByteVector)] = { + def getPacketDataForEncryption(packet: PlanetSidePacketContainer): Attempt[(Int, ByteVector)] = { makeRawPacket(packet) match { case Successful(rawPacket) => val sequenceNumber = packet match { //the sequence is variable if this is a GamePacket case GamePacket(_, seq, _) => seq - case _ => 0 + case _ => 0 } Successful((sequenceNumber, rawPacket.toByteVector)) @@ -433,7 +443,10 @@ object PacketCoding { * @param packet the unencrypted packet * @return an `EncryptedPacket` */ - def encryptPacket(crypto : CryptoInterface.CryptoStateWithMAC, packet : PlanetSidePacketContainer) : Attempt[EncryptedPacket] = { + def encryptPacket( + crypto: CryptoInterface.CryptoStateWithMAC, + packet: PlanetSidePacketContainer + ): Attempt[EncryptedPacket] = { getPacketDataForEncryption(packet) match { case Successful((seq, data)) => encryptPacket(crypto, seq, data) @@ -448,34 +461,35 @@ object PacketCoding { * @param packet a packet * @return a `BitVector` that represents the packet */ - def makeRawPacket(packet : PlanetSidePacketContainer) : Attempt[BitVector] = packet match { - case GamePacket(opcode, _, payload) => - val opcodeEncoded = GamePacketOpcode.codec.encode(opcode) - opcodeEncoded match { - case Failure(e) => - Attempt.failure(Err(s"Failed to marshal opcode in packet $opcode: " + e.message)) - case _ => - encodePacket(payload) match { - case Failure(e) => Attempt.failure(Err(s"Failed to marshal packet $opcode: " + e.messageWithContext)) - case Successful(p) => Attempt.successful(opcodeEncoded.require ++ p) - } - } + def makeRawPacket(packet: PlanetSidePacketContainer): Attempt[BitVector] = + packet match { + case GamePacket(opcode, _, payload) => + val opcodeEncoded = GamePacketOpcode.codec.encode(opcode) + opcodeEncoded match { + case Failure(e) => + Attempt.failure(Err(s"Failed to marshal opcode in packet $opcode: " + e.message)) + case _ => + encodePacket(payload) match { + case Failure(e) => Attempt.failure(Err(s"Failed to marshal packet $opcode: " + e.messageWithContext)) + case Successful(p) => Attempt.successful(opcodeEncoded.require ++ p) + } + } - case ControlPacket(opcode, payload) => - val opcodeEncoded = ControlPacketOpcode.codec.encode(opcode) - opcodeEncoded match { - case Failure(e) => - Attempt.failure(Err(s"Failed to marshal opcode in packet $opcode: " + e.messageWithContext)) - case _ => - encodePacket(payload) match { - case Failure(e) => Attempt.failure(Err(s"Failed to marshal packet $opcode: " + e.messageWithContext)) - case Successful(p) => Attempt.successful(hex"00".bits ++ opcodeEncoded.require ++ p) - } - } + case ControlPacket(opcode, payload) => + val opcodeEncoded = ControlPacketOpcode.codec.encode(opcode) + opcodeEncoded match { + case Failure(e) => + Attempt.failure(Err(s"Failed to marshal opcode in packet $opcode: " + e.messageWithContext)) + case _ => + encodePacket(payload) match { + case Failure(e) => Attempt.failure(Err(s"Failed to marshal packet $opcode: " + e.messageWithContext)) + case Successful(p) => Attempt.successful(hex"00".bits ++ opcodeEncoded.require ++ p) + } + } - case _ => - throw new IllegalArgumentException("Unsupported packet container type") - } + case _ => + throw new IllegalArgumentException("Unsupported packet container type") + } /** * Perform encryption on the packet's raw data. @@ -484,14 +498,19 @@ object PacketCoding { * @param rawPacket a `ByteVector` that represents the packet data * @return an `EncryptedPacket` */ - def encryptPacket(crypto : CryptoInterface.CryptoStateWithMAC, sequenceNumber : Int, rawPacket : ByteVector) : Attempt[EncryptedPacket] = { - val packetMac = crypto.macForEncrypt(rawPacket) - val packetNoPadding = rawPacket ++ packetMac //opcode, payload, and MAC - val remainder = packetNoPadding.length % CryptoInterface.RC5_BLOCK_SIZE - val paddingNeeded = CryptoInterface.RC5_BLOCK_SIZE - remainder - 1 //minus 1 because of a mandatory padding bit - val paddingEncoded = uint8L.encode(paddingNeeded.toInt).require + def encryptPacket( + crypto: CryptoInterface.CryptoStateWithMAC, + sequenceNumber: Int, + rawPacket: ByteVector + ): Attempt[EncryptedPacket] = { + val packetMac = crypto.macForEncrypt(rawPacket) + val packetNoPadding = rawPacket ++ packetMac //opcode, payload, and MAC + val remainder = packetNoPadding.length % CryptoInterface.RC5_BLOCK_SIZE + val paddingNeeded = CryptoInterface.RC5_BLOCK_SIZE - remainder - 1 //minus 1 because of a mandatory padding bit + val paddingEncoded = uint8L.encode(paddingNeeded.toInt).require val packetWithPadding = packetNoPadding ++ ByteVector.fill(paddingNeeded)(0x00) ++ paddingEncoded.toByteVector - val encryptedPayload = crypto.encrypt(packetWithPadding) //raw packets plus MAC, padded to the nearest 16 byte boundary + val encryptedPayload = + crypto.encrypt(packetWithPadding) //raw packets plus MAC, padded to the nearest 16 byte boundary Attempt.successful(EncryptedPacket(sequenceNumber, encryptedPayload)) } @@ -501,10 +520,13 @@ object PacketCoding { * @param packet an encrypted packet * @return a general packet container type */ - def decryptPacket(crypto : CryptoInterface.CryptoStateWithMAC, packet : EncryptedPacket) : Attempt[PlanetSidePacketContainer] = { + def decryptPacket( + crypto: CryptoInterface.CryptoStateWithMAC, + packet: EncryptedPacket + ): Attempt[PlanetSidePacketContainer] = { decryptPacketData(crypto, packet) match { case Successful(payload) => unmarshalPayload(packet.sequenceNumber, payload) - case f @ Failure(_) => f + case f @ Failure(_) => f } } @@ -515,10 +537,10 @@ object PacketCoding { * @param payload the decrypted packet data * @return a general packet container type */ - def unmarshalPayload(sequenceNumber : Int, payload : ByteVector) : Attempt[PlanetSidePacketContainer] = { - payload{0} match { + def unmarshalPayload(sequenceNumber: Int, payload: ByteVector): Attempt[PlanetSidePacketContainer] = { + payload { 0 } match { case 0x00 => unmarshalControlPacket(payload.drop(1)) - case _ => unmarshalGamePacket(sequenceNumber, payload) + case _ => unmarshalGamePacket(sequenceNumber, payload) } } @@ -528,19 +550,19 @@ object PacketCoding { * @param packet an encrypted packet * @return a sequence of decrypted data */ - def decryptPacketData(crypto : CryptoInterface.CryptoStateWithMAC, packet : EncryptedPacket) : Attempt[ByteVector] = { + def decryptPacketData(crypto: CryptoInterface.CryptoStateWithMAC, packet: EncryptedPacket): Attempt[ByteVector] = { val payloadDecrypted = crypto.decrypt(packet.payload) - val payloadJustLen = payloadDecrypted.takeRight(1) //get the last byte which is the padding length - val padding = uint8L.decode(payloadJustLen.bits) + val payloadJustLen = payloadDecrypted.takeRight(1) //get the last byte which is the padding length + val padding = uint8L.decode(payloadJustLen.bits) padding match { case Failure(e) => return Attempt.failure(Err("Failed to decode the encrypted padding length: " + e.message)) - case _ => + case _ => } - val macSize = CryptoInterface.MD5_MAC_SIZE - val macDecoder = bytes(macSize) + val macSize = CryptoInterface.MD5_MAC_SIZE + val macDecoder = bytes(macSize) val payloadNoPadding = payloadDecrypted.dropRight(1 + padding.require.value) - val payloadMac = payloadNoPadding.takeRight(macSize) + val payloadMac = payloadNoPadding.takeRight(macSize) /* println("Payload: " + packet.payload) println("DecPayload: " + payloadDecrypted) @@ -549,20 +571,22 @@ object PacketCoding { println("NoPadding: " + payloadNoPadding) println("Mac: " + payloadMac) println("NoMac: " + payloadNoMac) - */ + */ val mac = macDecoder.decode(payloadMac.bits) mac match { case Failure(e) => return Attempt.failure(Err("Failed to extract the encrypted MAC: " + e.message)) - case _ => + case _ => } val payloadNoMac = payloadNoPadding.dropRight(macSize) - val computedMac = crypto.macForDecrypt(payloadNoMac) - if(!CryptoInterface.verifyMAC(computedMac, mac.require.value)) { //verify that the MAC matches + val computedMac = crypto.macForDecrypt(payloadNoMac) + if (!CryptoInterface.verifyMAC(computedMac, mac.require.value)) { //verify that the MAC matches throw new SecurityException("Invalid packet MAC") } - if(payloadNoMac.length < PLANETSIDE_MIN_PACKET_SIZE) { - return Attempt.failure(Err(s"Decrypted packet does not meet the minimum length of $PLANETSIDE_MIN_PACKET_SIZE bytes")) + if (payloadNoMac.length < PLANETSIDE_MIN_PACKET_SIZE) { + return Attempt.failure( + Err(s"Decrypted packet does not meet the minimum length of $PLANETSIDE_MIN_PACKET_SIZE bytes") + ) } Successful(payloadNoMac) } diff --git a/common/src/main/scala/net/psforever/packet/control/ClientStart.scala b/common/src/main/scala/net/psforever/packet/control/ClientStart.scala index e4ed543c..d65df2db 100644 --- a/common/src/main/scala/net/psforever/packet/control/ClientStart.scala +++ b/common/src/main/scala/net/psforever/packet/control/ClientStart.scala @@ -6,17 +6,16 @@ import scodec.Codec import scodec.bits._ import scodec.codecs._ -final case class ClientStart(clientNonce : Long) - extends PlanetSideControlPacket { +final case class ClientStart(clientNonce: Long) extends PlanetSideControlPacket { type Packet = ClientStart def opcode = ControlPacketOpcode.ClientStart def encode = ClientStart.encode(this) } object ClientStart extends Marshallable[ClientStart] { - implicit val codec : Codec[ClientStart] = ( + implicit val codec: Codec[ClientStart] = ( ("unknown" | constant(hex"00000002".bits)) :: ("client_nonce" | uint32L) :: ("unknown" | constant(hex"000001f0".bits)) - ).as[ClientStart] -} \ No newline at end of file + ).as[ClientStart] +} diff --git a/common/src/main/scala/net/psforever/packet/control/ConnectionClose.scala b/common/src/main/scala/net/psforever/packet/control/ConnectionClose.scala index ebbab87f..36d04033 100644 --- a/common/src/main/scala/net/psforever/packet/control/ConnectionClose.scala +++ b/common/src/main/scala/net/psforever/packet/control/ConnectionClose.scala @@ -4,8 +4,7 @@ package net.psforever.packet.control import net.psforever.packet._ import scodec.Codec -final case class ConnectionClose() - extends PlanetSideControlPacket { +final case class ConnectionClose() extends PlanetSideControlPacket { type Packet = ConnectionClose def opcode = ControlPacketOpcode.ConnectionClose def encode = ConnectionClose.encode(this) @@ -13,4 +12,4 @@ final case class ConnectionClose() object ConnectionClose extends Marshallable[ConnectionClose] { implicit val codec: Codec[ConnectionClose] = PacketHelpers.emptyCodec(ConnectionClose()) -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/packet/control/ControlSync.scala b/common/src/main/scala/net/psforever/packet/control/ControlSync.scala index e3861796..d77b7199 100644 --- a/common/src/main/scala/net/psforever/packet/control/ControlSync.scala +++ b/common/src/main/scala/net/psforever/packet/control/ControlSync.scala @@ -18,23 +18,24 @@ import scodec.codecs._ * @param field64B na; * increments by 21 per packet */ -final case class ControlSync(timeDiff : Int, - unk : Long, - field1 : Long, - field2 : Long, - field3 : Long, - field4 : Long, - field64A : Long, - field64B : Long) - extends PlanetSideControlPacket { +final case class ControlSync( + timeDiff: Int, + unk: Long, + field1: Long, + field2: Long, + field3: Long, + field4: Long, + field64A: Long, + field64B: Long +) extends PlanetSideControlPacket { type Packet = ControlSync def opcode = ControlPacketOpcode.ControlSync def encode = ControlSync.encode(this) } object ControlSync extends Marshallable[ControlSync] { - implicit val codec : Codec[ControlSync] = ( - ("time_diff" | uint16) :: + implicit val codec: Codec[ControlSync] = ( + ("time_diff" | uint16) :: ("unk" | uint32) :: ("field1" | uint32) :: ("field2" | uint32) :: @@ -42,5 +43,5 @@ object ControlSync extends Marshallable[ControlSync] { ("field4" | uint32) :: ("field64A" | int64) :: ("field64B" | int64) - ).as[ControlSync] -} \ No newline at end of file + ).as[ControlSync] +} diff --git a/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala b/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala index 1737629e..409578c0 100644 --- a/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala +++ b/common/src/main/scala/net/psforever/packet/control/ControlSyncResp.scala @@ -20,25 +20,26 @@ import scodec.codecs._ * @param field4 na; * echoes `ControlSync.field64A` */ -final case class ControlSyncResp(timeDiff : Int, - serverTick : Long, - field1 : Long, - field2 : Long, - field3 : Long, - field4 : Long) - extends PlanetSideControlPacket { +final case class ControlSyncResp( + timeDiff: Int, + serverTick: Long, + field1: Long, + field2: Long, + field3: Long, + field4: Long +) extends PlanetSideControlPacket { type Packet = ControlSyncResp def opcode = ControlPacketOpcode.ControlSyncResp def encode = ControlSyncResp.encode(this) } object ControlSyncResp extends Marshallable[ControlSyncResp] { - implicit val codec : Codec[ControlSyncResp] = ( - ("time_diff" | uint16) :: + implicit val codec: Codec[ControlSyncResp] = ( + ("time_diff" | uint16) :: ("server_tick" | uint32) :: ("field1" | int64) :: ("field2" | int64) :: ("field3" | int64) :: ("field4" | int64) - ).as[ControlSyncResp] -} \ No newline at end of file + ).as[ControlSyncResp] +} diff --git a/common/src/main/scala/net/psforever/packet/control/HandleGamePacket.scala b/common/src/main/scala/net/psforever/packet/control/HandleGamePacket.scala index 56ddd128..99d9c155 100644 --- a/common/src/main/scala/net/psforever/packet/control/HandleGamePacket.scala +++ b/common/src/main/scala/net/psforever/packet/control/HandleGamePacket.scala @@ -6,22 +6,19 @@ import scodec.Codec import scodec.bits.{BitVector, ByteVector} import scodec.codecs._ -final case class HandleGamePacket(len : Int, - stream : ByteVector, - rest : BitVector = BitVector.empty) - extends PlanetSideControlPacket { +final case class HandleGamePacket(len: Int, stream: ByteVector, rest: BitVector = BitVector.empty) + extends PlanetSideControlPacket { def opcode = ControlPacketOpcode.HandleGamePacket def encode = HandleGamePacket.encode(this) } object HandleGamePacket extends Marshallable[HandleGamePacket] { - def apply(stream : ByteVector) : HandleGamePacket = { + def apply(stream: ByteVector): HandleGamePacket = { new HandleGamePacket(stream.length.toInt, stream) } - implicit val codec : Codec[HandleGamePacket] = ( - ("len" | uint16) >>:~ { len => - ("stream" | bytes(len)) :: - ("rest" | bits) - }).as[HandleGamePacket] + implicit val codec: Codec[HandleGamePacket] = (("len" | uint16) >>:~ { len => + ("stream" | bytes(len)) :: + ("rest" | bits) + }).as[HandleGamePacket] } diff --git a/common/src/main/scala/net/psforever/packet/control/MultiPacket.scala b/common/src/main/scala/net/psforever/packet/control/MultiPacket.scala index 260ccd62..7a3ded5a 100644 --- a/common/src/main/scala/net/psforever/packet/control/MultiPacket.scala +++ b/common/src/main/scala/net/psforever/packet/control/MultiPacket.scala @@ -6,13 +6,12 @@ import scodec.Codec import scodec.bits.ByteVector import scodec.codecs._ -final case class MultiPacket(packets : Vector[ByteVector]) - extends PlanetSideControlPacket { +final case class MultiPacket(packets: Vector[ByteVector]) extends PlanetSideControlPacket { type Packet = MultiPacket def opcode = ControlPacketOpcode.MultiPacket def encode = MultiPacket.encode(this) } object MultiPacket extends Marshallable[MultiPacket] { - implicit val codec : Codec[MultiPacket] = ("packets" | vector(variableSizeBytes(uint8L, bytes))).as[MultiPacket] + implicit val codec: Codec[MultiPacket] = ("packets" | vector(variableSizeBytes(uint8L, bytes))).as[MultiPacket] } diff --git a/common/src/main/scala/net/psforever/packet/control/MultiPacketCollector.scala b/common/src/main/scala/net/psforever/packet/control/MultiPacketCollector.scala index 32c18001..bc02e1fa 100644 --- a/common/src/main/scala/net/psforever/packet/control/MultiPacketCollector.scala +++ b/common/src/main/scala/net/psforever/packet/control/MultiPacketCollector.scala @@ -12,7 +12,7 @@ import net.psforever.packet.PlanetSidePacket * this list is effectively immutable; * the only way to access these packets is through pattern matching */ -final case class MultiPacketBundle(private var packets : List[PlanetSidePacket]) { +final case class MultiPacketBundle(private var packets: List[PlanetSidePacket]) { MultiPacketBundle.collectValidPackets(packets) match { case Nil => throw new IllegalArgumentException("can not create with zero packets") @@ -20,15 +20,17 @@ final case class MultiPacketBundle(private var packets : List[PlanetSidePacket]) packets = list } - def +(t : MultiPacketBundle) : MultiPacketBundle = t match { - case MultiPacketBundle(list) => - MultiPacketBundle(packets ++ list) - case _ => - MultiPacketBundle(packets) - } + def +(t: MultiPacketBundle): MultiPacketBundle = + t match { + case MultiPacketBundle(list) => + MultiPacketBundle(packets ++ list) + case _ => + MultiPacketBundle(packets) + } } object MultiPacketBundle { + /** * Accept a series of packets of a specific supertype (`PlanetSidePacket`) * and filter out subtypes that should be excluded. @@ -37,15 +39,16 @@ object MultiPacketBundle { * @param packets a series of packets * @return the accepted packets from the original group */ - def collectValidPackets(packets : List[PlanetSidePacket]) : List[PlanetSidePacket] = { + def collectValidPackets(packets: List[PlanetSidePacket]): List[PlanetSidePacket] = { import net.psforever.packet.{PlanetSideGamePacket, PlanetSideControlPacket} - val (good, bad) = packets.partition( { - case _ : PlanetSideGamePacket => true - case _ : PlanetSideControlPacket => true - case _ => false + val (good, bad) = packets.partition({ + case _: PlanetSideGamePacket => true + case _: PlanetSideControlPacket => true + case _ => false }) - if(bad.nonEmpty) { - org.log4s.getLogger("MultiPacketBundle") + if (bad.nonEmpty) { + org.log4s + .getLogger("MultiPacketBundle") .warn(s"attempted to include packet types that are not in the whitelist; ${bad.size} items have been excluded") } good @@ -56,17 +59,18 @@ object MultiPacketBundle { * Accumulator for packets that will eventually be bundled and submitted for composing a `MultiPacketEx` packet. */ class MultiPacketCollector() { - private var bundle : List[PlanetSidePacket] = List.empty + private var bundle: List[PlanetSidePacket] = List.empty - def Add(t : PlanetSidePacket) : Unit = Add(List(t)) + def Add(t: PlanetSidePacket): Unit = Add(List(t)) - def Add(t : MultiPacketBundle) : Unit = t match { - case MultiPacketBundle(list) => - Add(list) - } + def Add(t: MultiPacketBundle): Unit = + t match { + case MultiPacketBundle(list) => + Add(list) + } - def Add(t : List[PlanetSidePacket]) : Unit = { - if(t.nonEmpty) { + def Add(t: List[PlanetSidePacket]): Unit = { + if (t.nonEmpty) { bundle = bundle ++ t } } @@ -76,7 +80,7 @@ class MultiPacketCollector() { * Reset the internal list of packets by clearing it. * @return a loaded `MultiPacketBundle` object, or `None` */ - def Bundle : Option[MultiPacketBundle] = { + def Bundle: Option[MultiPacketBundle] = { bundle match { case Nil => None @@ -89,12 +93,13 @@ class MultiPacketCollector() { } object MultiPacketCollector { + /** * Overload constructor that accepts initial packets. * @param bundle previously bundled packets * @return a `MultiPacketCollector` object */ - def apply(bundle : MultiPacketBundle) : MultiPacketCollector = { + def apply(bundle: MultiPacketBundle): MultiPacketCollector = { val obj = new MultiPacketCollector() obj.Add(bundle) obj @@ -105,7 +110,7 @@ object MultiPacketCollector { * @param packets a series of packets * @return a `MultiPacketCollector` object */ - def apply(packets : List[PlanetSidePacket]) : MultiPacketCollector = { + def apply(packets: List[PlanetSidePacket]): MultiPacketCollector = { val obj = new MultiPacketCollector() obj.Add(packets) obj diff --git a/common/src/main/scala/net/psforever/packet/control/MultiPacketEx.scala b/common/src/main/scala/net/psforever/packet/control/MultiPacketEx.scala index 89fe7332..1848025e 100644 --- a/common/src/main/scala/net/psforever/packet/control/MultiPacketEx.scala +++ b/common/src/main/scala/net/psforever/packet/control/MultiPacketEx.scala @@ -7,17 +7,16 @@ import scodec.bits._ import scodec.codecs._ import shapeless.HNil -final case class MultiPacketEx(packets : Vector[ByteVector]) - extends PlanetSideControlPacket { +final case class MultiPacketEx(packets: Vector[ByteVector]) extends PlanetSideControlPacket { type Packet = MultiPacketEx def opcode = ControlPacketOpcode.MultiPacketEx def encode = MultiPacketEx.encode(this) } object MultiPacketEx extends Marshallable[MultiPacketEx] { - val sizeCodec : Codec[Long] = new Codec[Long] { + val sizeCodec: Codec[Long] = new Codec[Long] { private def description = s"variable-bit unsigned integer" - override def sizeBound = SizeBound.bounded(8, 32) + override def sizeBound = SizeBound.bounded(8, 32) val MaxValue = (1L << 31) - 1 val MinValue = 0 @@ -28,9 +27,9 @@ object MultiPacketEx extends Marshallable[MultiPacketEx] { } else if (i < MinValue) { Attempt.failure(Err(s"$i is less than minimum value $MinValue for $description")) } else { - if(i < 0xff) { + if (i < 0xff) { uint8L.encode(i.toInt) - } else if(i < 0xffff) { + } else if (i < 0xffff) { (constant(hex"ff") :: uint16L).dropUnits.encode(i.toInt :: HNil) } else { (constant(hex"ffffff") :: uint32L).dropUnits.encode(i :: HNil) @@ -38,25 +37,24 @@ object MultiPacketEx extends Marshallable[MultiPacketEx] { } } - override def decode(buffer: BitVector) : Attempt[DecodeResult[Long]] = { + override def decode(buffer: BitVector): Attempt[DecodeResult[Long]] = { val sizeTypes = List(8, 16, 32) - val guards = List(hex"ff".bits, hex"ffff".bits) + val guards = List(hex"ff".bits, hex"ffff".bits) var buf = buffer - for(i <- sizeTypes.indices) { - val s = sizeTypes{i} + for (i <- sizeTypes.indices) { + val s = sizeTypes { i } - if(!buf.sizeGreaterThanOrEqual(s)) + if (!buf.sizeGreaterThanOrEqual(s)) return Attempt.failure(Err.insufficientBits(s, buf.size)) val value = buf.take(s) buf = buf.drop(s) - if(i == guards.length || value != guards{i}) + if (i == guards.length || value != guards { i }) return Attempt.successful( - DecodeResult(value.toLong(signed = false, ByteOrdering.LittleEndian), - buf) + DecodeResult(value.toLong(signed = false, ByteOrdering.LittleEndian), buf) ) } @@ -67,5 +65,6 @@ object MultiPacketEx extends Marshallable[MultiPacketEx] { override def toString = description } - implicit val codec : Codec[MultiPacketEx] = ("packets" | vector(variableSizeBytesLong(sizeCodec, bytes))).as[MultiPacketEx] + implicit val codec: Codec[MultiPacketEx] = + ("packets" | vector(variableSizeBytesLong(sizeCodec, bytes))).as[MultiPacketEx] } diff --git a/common/src/main/scala/net/psforever/packet/control/RelatedA.scala b/common/src/main/scala/net/psforever/packet/control/RelatedA.scala index 08b33501..853cccaa 100644 --- a/common/src/main/scala/net/psforever/packet/control/RelatedA.scala +++ b/common/src/main/scala/net/psforever/packet/control/RelatedA.scala @@ -13,9 +13,9 @@ import scodec.codecs._ * valid types are integers 0-3 * @param subslot identification of a control packet */ -final case class RelatedA(slot : Int, subslot : Int) extends PlanetSideControlPacket { +final case class RelatedA(slot: Int, subslot: Int) extends PlanetSideControlPacket { type Packet = RelatedA - if(slot < 0 || slot > 3) { + if (slot < 0 || slot > 3) { throw new IllegalArgumentException(s"slot number is out of range - $slot") } @@ -27,12 +27,12 @@ final case class RelatedA(slot : Int, subslot : Int) extends PlanetSideControlPa } object RelatedA extends Marshallable[RelatedA] { - implicit val codec : Codec[RelatedA] = ( - ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.RelatedA0.id, a=>a) ) :: + implicit val codec: Codec[RelatedA] = ( + ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.RelatedA0.id, a => a)) :: ("subslot" | uint16) // the slot is big endian. see 0x00A42F76 - ).as[RelatedA] + ).as[RelatedA] - def decodeWithOpcode(slot : ControlPacketOpcode.Value)(bits : BitVector) = { + def decodeWithOpcode(slot: ControlPacketOpcode.Value)(bits: BitVector) = { decode(ControlPacketOpcode.codec.encode(slot).require ++ bits) } } diff --git a/common/src/main/scala/net/psforever/packet/control/RelatedB.scala b/common/src/main/scala/net/psforever/packet/control/RelatedB.scala index 2b71c9a2..37f1c505 100644 --- a/common/src/main/scala/net/psforever/packet/control/RelatedB.scala +++ b/common/src/main/scala/net/psforever/packet/control/RelatedB.scala @@ -14,9 +14,9 @@ import scodec.codecs._ * valid types are integers 0-3 * @param subslot identification of a control packet */ -final case class RelatedB(slot : Int, subslot : Int) extends PlanetSideControlPacket { +final case class RelatedB(slot: Int, subslot: Int) extends PlanetSideControlPacket { type Packet = RelatedB - if(slot < 0 || slot > 3) { + if (slot < 0 || slot > 3) { throw new IllegalArgumentException(s"slot number is out of range - $slot") } @@ -28,12 +28,12 @@ final case class RelatedB(slot : Int, subslot : Int) extends PlanetSideControlPa } object RelatedB extends Marshallable[RelatedB] { - implicit val codec : Codec[RelatedB] = ( - ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.RelatedB0.id, a=>a) ) :: + implicit val codec: Codec[RelatedB] = ( + ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.RelatedB0.id, a => a)) :: ("subslot" | uint16) // the slot is big endian. see 0x00A42F76 - ).as[RelatedB] + ).as[RelatedB] - def decodeWithOpcode(slot : ControlPacketOpcode.Value)(bits : BitVector) = { + def decodeWithOpcode(slot: ControlPacketOpcode.Value)(bits: BitVector) = { decode(ControlPacketOpcode.codec.encode(slot).require ++ bits) } } diff --git a/common/src/main/scala/net/psforever/packet/control/ServerStart.scala b/common/src/main/scala/net/psforever/packet/control/ServerStart.scala index df4046c0..56a91dbd 100644 --- a/common/src/main/scala/net/psforever/packet/control/ServerStart.scala +++ b/common/src/main/scala/net/psforever/packet/control/ServerStart.scala @@ -6,17 +6,16 @@ import scodec.Codec import scodec.bits._ import scodec.codecs._ -final case class ServerStart(clientNonce : Long, serverNonce : Long) - extends PlanetSideControlPacket { +final case class ServerStart(clientNonce: Long, serverNonce: Long) extends PlanetSideControlPacket { type Packet = ServerStart def opcode = ControlPacketOpcode.ServerStart def encode = ServerStart.encode(this) } object ServerStart extends Marshallable[ServerStart] { - implicit val codec : Codec[ServerStart] = ( + implicit val codec: Codec[ServerStart] = ( ("client_nonce" | uint32L) :: ("server_nonce" | uint32L) :: ("unknown" | constant(hex"000000000001d300000002".bits)) - ).as[ServerStart] -} \ No newline at end of file + ).as[ServerStart] +} diff --git a/common/src/main/scala/net/psforever/packet/control/SlottedMetaPacket.scala b/common/src/main/scala/net/psforever/packet/control/SlottedMetaPacket.scala index 2c463740..04264044 100644 --- a/common/src/main/scala/net/psforever/packet/control/SlottedMetaPacket.scala +++ b/common/src/main/scala/net/psforever/packet/control/SlottedMetaPacket.scala @@ -6,8 +6,7 @@ import scodec.Codec import scodec.bits.{BitVector, ByteVector} import scodec.codecs._ -final case class SlottedMetaPacket(slot : Int, subslot : Int, packet : ByteVector) - extends PlanetSideControlPacket { +final case class SlottedMetaPacket(slot: Int, subslot: Int, packet: ByteVector) extends PlanetSideControlPacket { type Packet = SlottedMetaPacket assert(slot >= 0 && slot <= 7, s"Slot number ($slot) is out of range") @@ -24,13 +23,13 @@ final case class SlottedMetaPacket(slot : Int, subslot : Int, packet : ByteVecto } object SlottedMetaPacket extends Marshallable[SlottedMetaPacket] { - implicit val codec : Codec[SlottedMetaPacket] = ( - ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.SlottedMetaPacket0.id, a=>a) ) :: - ("subslot" | uint16) :: // the slot is big endian. see 0x00A42F76 - ("rest" | bytes) + implicit val codec: Codec[SlottedMetaPacket] = ( + ("slot" | uint8L.xmap[Int](a => a - ControlPacketOpcode.SlottedMetaPacket0.id, a => a)) :: + ("subslot" | uint16) :: // the slot is big endian. see 0x00A42F76 + ("rest" | bytes) ).as[SlottedMetaPacket] - def decodeWithOpcode(slot : ControlPacketOpcode.Value)(bits : BitVector) = { + def decodeWithOpcode(slot: ControlPacketOpcode.Value)(bits: BitVector) = { decode(ControlPacketOpcode.codec.encode(slot).require ++ bits) } -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/packet/control/TeardownConnection.scala b/common/src/main/scala/net/psforever/packet/control/TeardownConnection.scala index bc4ff4c8..d22b6f84 100644 --- a/common/src/main/scala/net/psforever/packet/control/TeardownConnection.scala +++ b/common/src/main/scala/net/psforever/packet/control/TeardownConnection.scala @@ -1,19 +1,19 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.control -import net.psforever.packet.{ControlPacketOpcode, Marshallable, PacketHelpers, PlanetSideControlPacket} +import net.psforever.packet.{ControlPacketOpcode, Marshallable, PlanetSideControlPacket} import scodec.Codec import scodec.codecs._ -final case class TeardownConnection(targetNonce : Long) extends PlanetSideControlPacket { +final case class TeardownConnection(targetNonce: Long) extends PlanetSideControlPacket { type Packet = TeardownConnection def opcode = ControlPacketOpcode.TeardownConnection def encode = TeardownConnection.encode(this) } object TeardownConnection extends Marshallable[TeardownConnection] { - implicit val codec : Codec[TeardownConnection] = ( + implicit val codec: Codec[TeardownConnection] = ( ("nonce" | uint32L) :: ("unk" | uint16).unit(6) - ).as[TeardownConnection] -} \ No newline at end of file + ).as[TeardownConnection] +} diff --git a/common/src/main/scala/net/psforever/packet/crypto/ClientChallengeXchg.scala b/common/src/main/scala/net/psforever/packet/crypto/ClientChallengeXchg.scala index b9ce9c2f..116093d2 100644 --- a/common/src/main/scala/net/psforever/packet/crypto/ClientChallengeXchg.scala +++ b/common/src/main/scala/net/psforever/packet/crypto/ClientChallengeXchg.scala @@ -6,8 +6,8 @@ import scodec.Codec import scodec.bits.{ByteVector, _} import scodec.codecs._ -final case class ClientChallengeXchg(time : Long, challenge : ByteVector, p : ByteVector, g : ByteVector) - extends PlanetSideCryptoPacket { +final case class ClientChallengeXchg(time: Long, challenge: ByteVector, p: ByteVector, g: ByteVector) + extends PlanetSideCryptoPacket { def opcode = CryptoPacketOpcode.ClientChallengeXchg def encode = ClientChallengeXchg.encode(this) } @@ -31,5 +31,5 @@ object ClientChallengeXchg extends Marshallable[ClientChallengeXchg] { ("objects?" | constant(1)) :: ("unknown" | constant(hex"03070000".bits)) :: ("end?" | constant(0)) - ).as[ClientChallengeXchg] -} \ No newline at end of file + ).as[ClientChallengeXchg] +} diff --git a/common/src/main/scala/net/psforever/packet/crypto/ClientFinished.scala b/common/src/main/scala/net/psforever/packet/crypto/ClientFinished.scala index df4e2ea0..49956a3e 100644 --- a/common/src/main/scala/net/psforever/packet/crypto/ClientFinished.scala +++ b/common/src/main/scala/net/psforever/packet/crypto/ClientFinished.scala @@ -6,19 +6,18 @@ import scodec.Codec import scodec.bits.{ByteVector, _} import scodec.codecs._ -final case class ClientFinished(pubKey : ByteVector, challengeResult: ByteVector) - extends PlanetSideCryptoPacket { +final case class ClientFinished(pubKey: ByteVector, challengeResult: ByteVector) extends PlanetSideCryptoPacket { type Packet = ClientFinished def opcode = CryptoPacketOpcode.ClientFinished def encode = ClientFinished.encode(this) } object ClientFinished extends Marshallable[ClientFinished] { - implicit val codec : Codec[ClientFinished] = ( + implicit val codec: Codec[ClientFinished] = ( ("obj_type?" | constant(hex"10".bits)) :: ("pub_key_len" | constant(hex"1000")) :: ("pub_key" | bytes(16)) :: ("unknown" | constant(hex"0114".bits)) :: ("challenge_result" | bytes(0xc)) - ).as[ClientFinished] -} \ No newline at end of file + ).as[ClientFinished] +} diff --git a/common/src/main/scala/net/psforever/packet/crypto/ServerChallengeXchg.scala b/common/src/main/scala/net/psforever/packet/crypto/ServerChallengeXchg.scala index c8e519a6..ac56ee8c 100644 --- a/common/src/main/scala/net/psforever/packet/crypto/ServerChallengeXchg.scala +++ b/common/src/main/scala/net/psforever/packet/crypto/ServerChallengeXchg.scala @@ -6,27 +6,27 @@ import scodec.Codec import scodec.bits.{ByteVector, _} import scodec.codecs._ -final case class ServerChallengeXchg(time : Long, challenge : ByteVector, pubKey : ByteVector) - extends PlanetSideCryptoPacket { +final case class ServerChallengeXchg(time: Long, challenge: ByteVector, pubKey: ByteVector) + extends PlanetSideCryptoPacket { type Packet = ServerChallengeXchg def opcode = CryptoPacketOpcode.ServerChallengeXchg def encode = ServerChallengeXchg.encode(this) } object ServerChallengeXchg extends Marshallable[ServerChallengeXchg] { - def getCompleteChallenge(time : Long, rest : ByteVector): ByteVector = + def getCompleteChallenge(time: Long, rest: ByteVector): ByteVector = uint32L.encode(time).require.toByteVector ++ rest implicit val codec: Codec[ServerChallengeXchg] = ( ("unknown" | constant(2)) :: ("unknown" | constant(1)) :: ("server_time" | uint32L) :: - ("challenge" | bytes(0xC)) :: + ("challenge" | bytes(0xc)) :: ("end?" | constant(0)) :: ("objects" | constant(1)) :: ("unknown" | constant(hex"03070000000c00".bits)) :: ("pub_key_len" | constant(hex"1000")) :: ("pub_key" | bytes(16)) :: ("unknown" | constant(0x0e)) - ).as[ServerChallengeXchg] -} \ No newline at end of file + ).as[ServerChallengeXchg] +} diff --git a/common/src/main/scala/net/psforever/packet/crypto/ServerFinished.scala b/common/src/main/scala/net/psforever/packet/crypto/ServerFinished.scala index 3e4b283f..23bbc3c0 100644 --- a/common/src/main/scala/net/psforever/packet/crypto/ServerFinished.scala +++ b/common/src/main/scala/net/psforever/packet/crypto/ServerFinished.scala @@ -6,16 +6,15 @@ import scodec.Codec import scodec.bits.{ByteVector, _} import scodec.codecs._ -final case class ServerFinished(challengeResult : ByteVector) - extends PlanetSideCryptoPacket { +final case class ServerFinished(challengeResult: ByteVector) extends PlanetSideCryptoPacket { type Packet = ServerFinished def opcode = CryptoPacketOpcode.ServerFinished def encode = ServerFinished.encode(this) } object ServerFinished extends Marshallable[ServerFinished] { - implicit val codec : Codec[ServerFinished] = ( + implicit val codec: Codec[ServerFinished] = ( ("unknown" | constant(hex"0114".bits)) :: ("challenge_result" | bytes(0xc)) - ).as[ServerFinished] -} \ No newline at end of file + ).as[ServerFinished] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ActionCancelMessage.scala b/common/src/main/scala/net/psforever/packet/game/ActionCancelMessage.scala index cfb4c637..502422ca 100644 --- a/common/src/main/scala/net/psforever/packet/game/ActionCancelMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ActionCancelMessage.scala @@ -12,19 +12,17 @@ import scodec.codecs._ * @param object_guid na * @param unk na */ -final case class ActionCancelMessage(player_guid : PlanetSideGUID, - object_guid : PlanetSideGUID, - unk : Int) - extends PlanetSideGamePacket { +final case class ActionCancelMessage(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, unk: Int) + extends PlanetSideGamePacket { type Packet = ActionCancelMessage def opcode = GamePacketOpcode.ActionCancelMessage def encode = ActionCancelMessage.encode(this) } object ActionCancelMessage extends Marshallable[ActionCancelMessage] { - implicit val codec : Codec[ActionCancelMessage] = ( + implicit val codec: Codec[ActionCancelMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("object_guid" | PlanetSideGUID.codec) :: ("unk" | uint4L) - ).as[ActionCancelMessage] + ).as[ActionCancelMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala b/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala index 64823204..f9a87e2f 100644 --- a/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala @@ -8,17 +8,15 @@ import scodec.codecs._ /** * 6,7,8 - Start implant initialization timer for slots 0,1,2 respectively. Allowed values: 0-100 (50 will start timer at 50% complete) */ -final case class ActionProgressMessage(action : Int, - unk2 : Long) - extends PlanetSideGamePacket { +final case class ActionProgressMessage(action: Int, unk2: Long) extends PlanetSideGamePacket { type Packet = ActionProgressMessage def opcode = GamePacketOpcode.ActionProgressMessage def encode = ActionProgressMessage.encode(this) } object ActionProgressMessage extends Marshallable[ActionProgressMessage] { - implicit val codec : Codec[ActionProgressMessage] = ( + implicit val codec: Codec[ActionProgressMessage] = ( ("action" | uint4L) :: ("unk2" | uint32L) - ).as[ActionProgressMessage] -} \ No newline at end of file + ).as[ActionProgressMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ActionResultMessage.scala b/common/src/main/scala/net/psforever/packet/game/ActionResultMessage.scala index b8b7d9c5..2f23f161 100644 --- a/common/src/main/scala/net/psforever/packet/game/ActionResultMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ActionResultMessage.scala @@ -5,37 +5,35 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacke import scodec.Codec import scodec.codecs._ - /** * Is sent by the server when the client has performed an action from a menu item * (i.e create character, delete character, etc...) */ -final case class ActionResultMessage(successful : Boolean, - errorCode : Option[Long]) - extends PlanetSideGamePacket { +final case class ActionResultMessage(successful: Boolean, errorCode: Option[Long]) extends PlanetSideGamePacket { type Packet = ActionResultMessage def opcode = GamePacketOpcode.ActionResultMessage def encode = ActionResultMessage.encode(this) } object ActionResultMessage extends Marshallable[ActionResultMessage] { + /** * A message where the result is always a pass. * @return an `ActionResultMessage` object */ - def Pass : ActionResultMessage = ActionResultMessage(true, None) + def Pass: ActionResultMessage = ActionResultMessage(true, None) /** * A message where the result is always a failure. * @param error the error code * @return an `ActionResultMessage` object */ - def Fail(error : Long) : ActionResultMessage = ActionResultMessage(false, Some(error)) + def Fail(error: Long): ActionResultMessage = ActionResultMessage(false, Some(error)) - implicit val codec : Codec[ActionResultMessage] = ( + implicit val codec: Codec[ActionResultMessage] = ( ("successful" | bool) >>:~ { res => // if not successful, look for an error code conditional(!res, "error_code" | uint32L).hlist } - ).as[ActionResultMessage] -} \ No newline at end of file + ).as[ActionResultMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ArmorChangedMessage.scala b/common/src/main/scala/net/psforever/packet/game/ArmorChangedMessage.scala index fd4ae974..558df29b 100644 --- a/common/src/main/scala/net/psforever/packet/game/ArmorChangedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ArmorChangedMessage.scala @@ -27,19 +27,17 @@ import scodec.codecs._ * @param armor the type of exo-suit * @param subtype the exo-suit subtype, if any */ -final case class ArmorChangedMessage(player_guid : PlanetSideGUID, - armor : ExoSuitType.Value, - subtype : Int) - extends PlanetSideGamePacket { +final case class ArmorChangedMessage(player_guid: PlanetSideGUID, armor: ExoSuitType.Value, subtype: Int) + extends PlanetSideGamePacket { type Packet = ArmorChangedMessage def opcode = GamePacketOpcode.ArmorChangedMessage def encode = ArmorChangedMessage.encode(this) } object ArmorChangedMessage extends Marshallable[ArmorChangedMessage] { - implicit val codec : Codec[ArmorChangedMessage] = ( + implicit val codec: Codec[ArmorChangedMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("armor" | ExoSuitType.codec) :: ("subtype" | uintL(3)) - ).as[ArmorChangedMessage] + ).as[ArmorChangedMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarDeadStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarDeadStateMessage.scala index ecec3b63..ba0990d7 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarDeadStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarDeadStateMessage.scala @@ -13,12 +13,7 @@ import scodec.codecs._ object DeadState extends Enumeration { type Type = Value - val - Alive, - Dead, - Release, - RespawnTime - = Value + val Alive, Dead, Release, RespawnTime = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uintL(3)) } @@ -54,19 +49,21 @@ object DeadState extends Enumeration { * @param faction spawn points available for this faction on redeployment map * @param unk5 na */ -final case class AvatarDeadStateMessage(state : DeadState.Value, - timer_max : Long, - timer : Long, - pos : Vector3, - faction : PlanetSideEmpire.Value, - unk5 : Boolean) - extends PlanetSideGamePacket { +final case class AvatarDeadStateMessage( + state: DeadState.Value, + timer_max: Long, + timer: Long, + pos: Vector3, + faction: PlanetSideEmpire.Value, + unk5: Boolean +) extends PlanetSideGamePacket { type Packet = AvatarDeadStateMessage def opcode = GamePacketOpcode.AvatarDeadStateMessage def encode = AvatarDeadStateMessage.encode(this) } object AvatarDeadStateMessage extends Marshallable[AvatarDeadStateMessage] { + /** * allocate all values from the `PlanetSideEmpire` `Enumeration` */ @@ -75,24 +72,22 @@ object AvatarDeadStateMessage extends Marshallable[AvatarDeadStateMessage] { /** * `Codec` for converting between the limited `PlanetSideEmpire` `Enumeration` and a `Long` value. */ - private val factionLongCodec = uint32L.exmap[PlanetSideEmpire.Value] ( + private val factionLongCodec = uint32L.exmap[PlanetSideEmpire.Value]( fv => - if(factionLongValues.contains(fv)) { + if (factionLongValues.contains(fv)) { Successful(PlanetSideEmpire(fv.toInt)) - } - else { + } else { Failure(Err(s"$fv is not mapped to a PlanetSideEmpire value")) }, - f => - Successful(f.id.toLong) + f => Successful(f.id.toLong) ) - implicit val codec : Codec[AvatarDeadStateMessage] = ( + implicit val codec: Codec[AvatarDeadStateMessage] = ( ("state" | DeadState.codec) :: ("timer_max" | uint32L) :: ("timer" | uint32L) :: ("pos" | Vector3.codec_pos) :: ("faction" | factionLongCodec) :: ("unk5" | bool) - ).as[AvatarDeadStateMessage] + ).as[AvatarDeadStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarFirstTimeEventMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarFirstTimeEventMessage.scala index 3353d733..1a124efb 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarFirstTimeEventMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarFirstTimeEventMessage.scala @@ -26,21 +26,22 @@ import scodec.codecs._ * @param unk na * @param event_name the string name of the event */ -final case class AvatarFirstTimeEventMessage(avatar_guid : PlanetSideGUID, - object_id : PlanetSideGUID, - unk : Long, - event_name : String) - extends PlanetSideGamePacket { +final case class AvatarFirstTimeEventMessage( + avatar_guid: PlanetSideGUID, + object_id: PlanetSideGUID, + unk: Long, + event_name: String +) extends PlanetSideGamePacket { type Packet = AvatarFirstTimeEventMessage def opcode = GamePacketOpcode.AvatarFirstTimeEventMessage def encode = AvatarFirstTimeEventMessage.encode(this) } object AvatarFirstTimeEventMessage extends Marshallable[AvatarFirstTimeEventMessage] { - implicit val codec : Codec[AvatarFirstTimeEventMessage] = ( - ("avatar_guid" | PlanetSideGUID.codec) :: - ("object_id" | PlanetSideGUID.codec) :: - ("unk" | uint32L ) :: - ("event_name" | PacketHelpers.encodedString) - ).as[AvatarFirstTimeEventMessage] + implicit val codec: Codec[AvatarFirstTimeEventMessage] = ( + ("avatar_guid" | PlanetSideGUID.codec) :: + ("object_id" | PlanetSideGUID.codec) :: + ("unk" | uint32L) :: + ("event_name" | PacketHelpers.encodedString) + ).as[AvatarFirstTimeEventMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarGrenadeStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarGrenadeStateMessage.scala index 8064a457..56d34117 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarGrenadeStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarGrenadeStateMessage.scala @@ -29,17 +29,16 @@ import scodec.codecs._ * @param player_guid the player * @param state the animation state */ -final case class AvatarGrenadeStateMessage(player_guid : PlanetSideGUID, - state : GrenadeState.Value) - extends PlanetSideGamePacket { +final case class AvatarGrenadeStateMessage(player_guid: PlanetSideGUID, state: GrenadeState.Value) + extends PlanetSideGamePacket { type Packet = AvatarGrenadeStateMessage def opcode = GamePacketOpcode.AvatarGrenadeStateMessage def encode = AvatarGrenadeStateMessage.encode(this) } object AvatarGrenadeStateMessage extends Marshallable[AvatarGrenadeStateMessage] { - implicit val codec : Codec[AvatarGrenadeStateMessage] = ( + implicit val codec: Codec[AvatarGrenadeStateMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("state" | GrenadeState.codec) - ).as[AvatarGrenadeStateMessage] + ).as[AvatarGrenadeStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarImplantMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarImplantMessage.scala index 9ae2e91b..ef1022a3 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarImplantMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarImplantMessage.scala @@ -12,14 +12,7 @@ import scodec.codecs._ object ImplantAction extends Enumeration { type Type = Value - val - Add, - Remove, - Initialization, - Activation, - UnlockMessage, - OutOfStamina - = Value + val Add, Remove, Initialization, Activation, UnlockMessage, OutOfStamina = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uintL(3)) } @@ -42,21 +35,22 @@ object ImplantAction extends Enumeration { * `UnlockMessage` - 0-3 as an unlocked implant slot; display a message
* `OutOfStamina` - lock implant; 0 to lock; 1 to unlock; display a message */ -final case class AvatarImplantMessage(player_guid : PlanetSideGUID, - action : ImplantAction.Value, - implantSlot : Int, - status : Int) - extends PlanetSideGamePacket { +final case class AvatarImplantMessage( + player_guid: PlanetSideGUID, + action: ImplantAction.Value, + implantSlot: Int, + status: Int +) extends PlanetSideGamePacket { type Packet = AvatarImplantMessage def opcode = GamePacketOpcode.AvatarImplantMessage def encode = AvatarImplantMessage.encode(this) } object AvatarImplantMessage extends Marshallable[AvatarImplantMessage] { - implicit val codec : Codec[AvatarImplantMessage] = ( + implicit val codec: Codec[AvatarImplantMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("action" | ImplantAction.codec) :: ("implantSlot" | uint2L) :: ("status" | uint4L) - ).as[AvatarImplantMessage] + ).as[AvatarImplantMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala index f25046fe..7a947094 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala @@ -17,13 +17,12 @@ import scodec.codecs._ * Is `state` ever not `true`? * @param state true */ -final case class AvatarJumpMessage(state : Boolean) - extends PlanetSideGamePacket { +final case class AvatarJumpMessage(state: Boolean) extends PlanetSideGamePacket { type Packet = AvatarJumpMessage def opcode = GamePacketOpcode.AvatarJumpMessage def encode = AvatarJumpMessage.encode(this) } object AvatarJumpMessage extends Marshallable[AvatarJumpMessage] { - implicit val codec : Codec[AvatarJumpMessage] = ("state" | bool).as[AvatarJumpMessage] + implicit val codec: Codec[AvatarJumpMessage] = ("state" | bool).as[AvatarJumpMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarSearchCriteriaMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarSearchCriteriaMessage.scala index cf59e176..ceadc0b0 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarSearchCriteriaMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarSearchCriteriaMessage.scala @@ -12,32 +12,28 @@ import shapeless.{::, HNil} * @param unk1 na * @param unk2 na */ -final case class AvatarSearchCriteriaMessage(unk1 : PlanetSideGUID, - unk2 : List[Int]) - extends PlanetSideGamePacket { +final case class AvatarSearchCriteriaMessage(unk1: PlanetSideGUID, unk2: List[Int]) extends PlanetSideGamePacket { type Packet = AvatarSearchCriteriaMessage def opcode = GamePacketOpcode.AvatarSearchCriteriaMessage def encode = AvatarSearchCriteriaMessage.encode(this) } object AvatarSearchCriteriaMessage extends Marshallable[AvatarSearchCriteriaMessage] { - implicit val codec : Codec[AvatarSearchCriteriaMessage] = ( + implicit val codec: Codec[AvatarSearchCriteriaMessage] = ( ("unk1" | PlanetSideGUID.codec) :: ("unk2" | PacketHelpers.listOfNSized(6, uint8L)) - ).exmap[AvatarSearchCriteriaMessage] ( + ).exmap[AvatarSearchCriteriaMessage]( { case a :: b :: HNil => Attempt.Successful(AvatarSearchCriteriaMessage(a, b)) }, { case AvatarSearchCriteriaMessage(a, b) => - if(b.length != 6) { + if (b.length != 6) { Attempt.Failure(Err("list must have 6 entries")) - } - else if(b.count(i => { i < 0 || i > 255 }) > 0) { + } else if (b.count(i => { i < 0 || i > 255 }) > 0) { Attempt.Failure(Err("list entries must be 0-255 inclusive")) - } - else { + } else { Attempt.Successful(a :: b :: HNil) } } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarStatisticsMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarStatisticsMessage.scala index 9b510f62..cc7e241f 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarStatisticsMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarStatisticsMessage.scala @@ -14,31 +14,28 @@ import scala.annotation.switch * @param unk2 na * @param unk3 na */ -final case class Statistics(unk1 : Option[Int], - unk2 : Option[Int], - unk3 : List[Long]) +final case class Statistics(unk1: Option[Int], unk2: Option[Int], unk3: List[Long]) /** * na * @param unk na * @param stats na */ -final case class AvatarStatisticsMessage(unk : Int, - stats : Statistics) - extends PlanetSideGamePacket { +final case class AvatarStatisticsMessage(unk: Int, stats: Statistics) extends PlanetSideGamePacket { type Packet = AvatarStatisticsMessage def opcode = GamePacketOpcode.AvatarStatisticsMessage def encode = AvatarStatisticsMessage.encode(this) } object AvatarStatisticsMessage extends Marshallable[AvatarStatisticsMessage] { + /** * na */ - private val longCodec : Codec[Statistics] = ulong(32).hlist.exmap ( + private val longCodec: Codec[Statistics] = ulong(32).hlist.exmap( { case n :: HNil => - Attempt.Successful(Statistics(None,None, List(n))) + Attempt.Successful(Statistics(None, None, List(n))) }, { case Statistics(_, _, Nil) => @@ -52,11 +49,11 @@ object AvatarStatisticsMessage extends Marshallable[AvatarStatisticsMessage] { /** * na */ - private val complexCodec : Codec[Statistics] = ( + private val complexCodec: Codec[Statistics] = ( uint(5) :: - uintL(11) :: - PacketHelpers.listOfNSized(8, uint32L) - ).exmap[Statistics] ( + uintL(11) :: + PacketHelpers.listOfNSized(8, uint32L) + ).exmap[Statistics]( { case a :: b :: c :: HNil => Attempt.Successful(Statistics(Some(a), Some(b), c)) @@ -69,10 +66,9 @@ object AvatarStatisticsMessage extends Marshallable[AvatarStatisticsMessage] { Attempt.Failure(Err("missing value (11-bit)")) case Statistics(a, b, c) => - if(c.length != 8) { + if (c.length != 8) { Attempt.Failure(Err("list must have 8 entries")) - } - else { + } else { Attempt.Successful(a.get :: b.get :: c :: HNil) } } @@ -83,23 +79,23 @@ object AvatarStatisticsMessage extends Marshallable[AvatarStatisticsMessage] { * @param n na * @return na */ - private def selectCodec(n : Int) : Codec[Statistics] = (n : @switch) match { - case 2 | 3 => - longCodec - case _ => - complexCodec - } + private def selectCodec(n: Int): Codec[Statistics] = + (n: @switch) match { + case 2 | 3 => + longCodec + case _ => + complexCodec + } - implicit val codec : Codec[AvatarStatisticsMessage] = ( - ("unk" | uint(3)) >>:~ { unk => - ("stats" | selectCodec(unk)).hlist - }).as[AvatarStatisticsMessage] + implicit val codec: Codec[AvatarStatisticsMessage] = (("unk" | uint(3)) >>:~ { unk => + ("stats" | selectCodec(unk)).hlist + }).as[AvatarStatisticsMessage] } object Statistics { - def apply(unk : Long) : Statistics = + def apply(unk: Long): Statistics = Statistics(None, None, List(unk)) - def apply(unk1 : Int, unk2 : Int, unk3 : List[Long]) : Statistics = + def apply(unk1: Int, unk2: Int, unk3: List[Long]): Statistics = Statistics(Some(unk1), Some(unk2), unk3) } diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarVehicleTimerMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarVehicleTimerMessage.scala index 162a2ab0..e1b50699 100644 --- a/common/src/main/scala/net/psforever/packet/game/AvatarVehicleTimerMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/AvatarVehicleTimerMessage.scala @@ -12,21 +12,18 @@ import scodec.codecs._ * @param time in seconds * @param unk1 NA - Seems to be false when it's for medkit, true for vehicles */ -final case class AvatarVehicleTimerMessage(player_guid : PlanetSideGUID, - text : String, - time : Long, - unk1 : Boolean - ) extends PlanetSideGamePacket { +final case class AvatarVehicleTimerMessage(player_guid: PlanetSideGUID, text: String, time: Long, unk1: Boolean) + extends PlanetSideGamePacket { type Packet = AvatarVehicleTimerMessage def opcode = GamePacketOpcode.AvatarVehicleTimerMessage def encode = AvatarVehicleTimerMessage.encode(this) } object AvatarVehicleTimerMessage extends Marshallable[AvatarVehicleTimerMessage] { - implicit val codec : Codec[AvatarVehicleTimerMessage] = ( + implicit val codec: Codec[AvatarVehicleTimerMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("text" | PacketHelpers.encodedString) :: ("time" | uint32L) :: ("unk1" | bool) - ).as[AvatarVehicleTimerMessage] + ).as[AvatarVehicleTimerMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/BattleExperienceMessage.scala b/common/src/main/scala/net/psforever/packet/game/BattleExperienceMessage.scala index 6aa9d418..372a1fbc 100644 --- a/common/src/main/scala/net/psforever/packet/game/BattleExperienceMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BattleExperienceMessage.scala @@ -33,19 +33,17 @@ import scodec.codecs._ * @param experience the current total experience * @param msg modifies the awarded experience message */ -final case class BattleExperienceMessage(player_guid : PlanetSideGUID, - experience : Long, - msg : Int) - extends PlanetSideGamePacket { +final case class BattleExperienceMessage(player_guid: PlanetSideGUID, experience: Long, msg: Int) + extends PlanetSideGamePacket { type Packet = BattleExperienceMessage def opcode = GamePacketOpcode.BattleExperienceMessage def encode = BattleExperienceMessage.encode(this) } object BattleExperienceMessage extends Marshallable[BattleExperienceMessage] { - implicit val codec : Codec[BattleExperienceMessage] = ( + implicit val codec: Codec[BattleExperienceMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("experience" | uint32L) :: ("msg" | uintL(3)) - ).as[BattleExperienceMessage] + ).as[BattleExperienceMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/BattleplanMessage.scala b/common/src/main/scala/net/psforever/packet/game/BattleplanMessage.scala index ad582144..fe9243f4 100644 --- a/common/src/main/scala/net/psforever/packet/game/BattleplanMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BattleplanMessage.scala @@ -16,23 +16,10 @@ import scala.annotation.tailrec object DiagramActionCode extends Enumeration { type Type = Value - val Action0, - Style, - Vertex, - Action3, - Action4, - Action5, - DrawString, - Action7, - Action8, - Action9, - ActionA, - ActionB, + val Action0, Style, Vertex, Action3, Action4, Action5, DrawString, Action7, Action8, Action9, ActionA, ActionB, ActionC, //clear? - ActionD, //opposite of clear? - StartDrawing, - StopDrawing - = Value //TODO replace all these with descriptive words + ActionD, //opposite of clear? + StartDrawing, StopDrawing = Value //TODO replace all these with descriptive words implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } @@ -55,8 +42,7 @@ sealed trait DiagramStroke * 2 is green; * 3 is blue */ -final case class Style(thickness : Float, - color : Int) extends DiagramStroke +final case class Style(thickness: Float, color: Int) extends DiagramStroke /** * Indicate coordinates on the tactical map. @@ -64,8 +50,7 @@ final case class Style(thickness : Float, * @param x the x-coordinate of this point * @param y the y-coordinate of this point */ -final case class Vertex(x : Float, - y : Float) extends DiagramStroke +final case class Vertex(x: Float, y: Float) extends DiagramStroke /** * na @@ -74,9 +59,7 @@ final case class Vertex(x : Float, * @param unk na; * 1024.0f - 0.0f */ -final case class StrokeFive(x : Float, - y : Float, - unk : Float) extends DiagramStroke +final case class StrokeFive(x: Float, y: Float, unk: Float) extends DiagramStroke /** * Draw a string message on the tactical map. @@ -93,17 +76,13 @@ final case class StrokeFive(x : Float, * no two messages may inhabit the same channel * @param message the text to display */ -final case class DrawString(x : Float, - y : Float, - color : Int, - channel : Int, - message : String) extends DiagramStroke +final case class DrawString(x: Float, y: Float, color: Int, channel: Int, message: String) extends DiagramStroke /** * na * @param unk na */ -final case class StrokeSeven(unk : Int) extends DiagramStroke +final case class StrokeSeven(unk: Int) extends DiagramStroke /** * A particular instruction in the rendering of this battleplan's diagram entry. @@ -112,8 +91,7 @@ final case class StrokeSeven(unk : Int) extends DiagramStroke * @param stroke the data; * defaults to `None` */ -final case class BattleDiagramAction(action : DiagramActionCode.Value, - stroke : Option[DiagramStroke] = None) +final case class BattleDiagramAction(action: DiagramActionCode.Value, stroke: Option[DiagramStroke] = None) /** * Share drawn images and words on the tactical map among a group of players.
@@ -152,24 +130,26 @@ final case class BattleDiagramAction(action : DiagramActionCode.Value, * can identify as "no zone" 0 when performing instructions not specific to drawing * @param diagrams a list of the itemized actions that will construct this plan or are used to modify the plan */ -final case class BattleplanMessage(char_id : Long, - player_name : String, - zone_id : Int, - diagrams : List[BattleDiagramAction]) - extends PlanetSideGamePacket { +final case class BattleplanMessage( + char_id: Long, + player_name: String, + zone_id: Int, + diagrams: List[BattleDiagramAction] +) extends PlanetSideGamePacket { type Packet = BattleplanMessage def opcode = GamePacketOpcode.BattleplanMessage def encode = BattleplanMessage.encode(this) } object BattleDiagramAction { + /** * Create a `BattleDiagramAction` object containing `StrokeOne` data. * @param thickness the line width in pixels * @param color the color of the line * @return a `BattleDiagramAction` object */ - def style(thickness : Float, color : Int) : BattleDiagramAction = + def style(thickness: Float, color: Int): BattleDiagramAction = BattleDiagramAction(DiagramActionCode.Style, Some(Style(thickness, color))) /** @@ -178,7 +158,7 @@ object BattleDiagramAction { * @param y the y-coordinate of this point * @return a `BattleDiagramAction` object */ - def vertex(x : Float, y : Float) : BattleDiagramAction = + def vertex(x: Float, y: Float): BattleDiagramAction = BattleDiagramAction(DiagramActionCode.Vertex, Some(Vertex(x, y))) /** @@ -188,7 +168,7 @@ object BattleDiagramAction { * @param unk na * @return a `BattleDiagramAction` object */ - def stroke5(x : Float, y : Float, unk : Float) : BattleDiagramAction = + def stroke5(x: Float, y: Float, unk: Float): BattleDiagramAction = BattleDiagramAction(DiagramActionCode.Action5, Some(StrokeFive(x, y, unk))) /** @@ -199,7 +179,7 @@ object BattleDiagramAction { * @param channel the available "slots" in which to display messages on the map * @param message the text to display */ - def drawString(x : Float, y : Float, color : Int, channel : Int, message : String) : BattleDiagramAction = + def drawString(x: Float, y: Float, color: Int, channel: Int, message: String): BattleDiagramAction = BattleDiagramAction(DiagramActionCode.DrawString, Some(DrawString(x, y, color, channel, message))) /** @@ -207,7 +187,7 @@ object BattleDiagramAction { * @param unk na * @return a `BattleDiagramAction` object */ - def stroke7(unk : Int) : BattleDiagramAction = + def stroke7(unk: Int): BattleDiagramAction = BattleDiagramAction(DiagramActionCode.Action7, Some(StrokeSeven(unk))) } @@ -225,13 +205,12 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { * @see scala.collection.mutable.LinkedList<E> * @see java.util.LinkedList<E> */ - private final case class BattleDiagramChain(diagram : BattleDiagramAction, - next : Option[BattleDiagramChain]) + private final case class BattleDiagramChain(diagram: BattleDiagramAction, next: Option[BattleDiagramChain]) /** * Parse data into a `Style` object. */ - private val plan1_codec : Codec[Style] = ( //size: 8 (12) + private val plan1_codec: Codec[Style] = ( //size: 8 (12) ("thickness" | newcodecs.q_float(16.0, 0.0, 5)) :: ("color" | uintL(3)) ).as[Style] @@ -239,19 +218,19 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { /** * Parse data into a `Vertex` object. */ - private val plan2_codec : Codec[Vertex] = ( //size: 22 (26) + private val plan2_codec: Codec[Vertex] = ( //size: 22 (26) ("x" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: ("y" | newcodecs.q_float(-4096.0, 12288.0, 11)) - ).as[Vertex] + ).as[Vertex] /** * Parse data into a `StrokeFive` object. */ - private val plan5_codec : Codec[StrokeFive] = ( //size: 33 (37) + private val plan5_codec: Codec[StrokeFive] = ( //size: 33 (37) ("unk1" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: ("unk2" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: ("unk3" | newcodecs.q_float(1024.0, 0.0, 11)) - ).as[StrokeFive] + ).as[StrokeFive] /** * Parse data into a `DrawString` object.
@@ -259,18 +238,20 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { * If we are not on a byte boundary, we must use our current offset and this size (`31u + 4u`) to calculate the padding value. * @param padOffset the current padding value for the `String` entry */ - private def plan6_codec(padOffset : Int) : Codec[DrawString] = ( //size: irrelevant, pad value resets - ("x" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: - ("y" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: - ("color" | uintL(3)) :: - ("font_size" | uintL(6)) :: - ("message" | PacketHelpers.encodedWideStringAligned( if(padOffset % 8 == 0) { 5 } else { 8 - (padOffset + 35) % 8 } )) + private def plan6_codec(padOffset: Int): Codec[DrawString] = + ( //size: irrelevant, pad value resets + ("x" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: + ("y" | newcodecs.q_float(-4096.0, 12288.0, 11)) :: + ("color" | uintL(3)) :: + ("font_size" | uintL(6)) :: + ("message" | PacketHelpers.encodedWideStringAligned(if (padOffset % 8 == 0) { 5 } + else { 8 - (padOffset + 35) % 8 })) ).as[DrawString] /** * Parse data into a `StrokeSeven` object. */ - private val plan7_codec : Codec[StrokeSeven] = ("unk" | uintL(6)).as[StrokeSeven] // size: 6 (10) + private val plan7_codec: Codec[StrokeSeven] = ("unk" | uintL(6)).as[StrokeSeven] // size: 6 (10) /** * Switch between different patterns to create a `BattleDiagramAction` for the following data. @@ -279,58 +260,59 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { * when `plan == 6`, `plan6_codec` utilizes this value * @return a `BattleDiagramAction` object */ - private def diagram_codec(plan : DiagramActionCode.Value, pad : Int) : Codec[BattleDiagramAction] = ( - conditional(plan == DiagramActionCode.Style, plan1_codec) :: - conditional(plan == DiagramActionCode.Vertex, plan2_codec) :: - conditional(plan == DiagramActionCode.Action5, plan5_codec) :: - conditional(plan == DiagramActionCode.DrawString, plan6_codec(pad)) :: - conditional(plan == DiagramActionCode.Action7, plan7_codec) - ).exmap[BattleDiagramAction] ( - { - case Some(stroke) :: None :: None :: None :: None :: HNil => - Attempt.successful(BattleDiagramAction(plan, Some(stroke))) + private def diagram_codec(plan: DiagramActionCode.Value, pad: Int): Codec[BattleDiagramAction] = + ( + conditional(plan == DiagramActionCode.Style, plan1_codec) :: + conditional(plan == DiagramActionCode.Vertex, plan2_codec) :: + conditional(plan == DiagramActionCode.Action5, plan5_codec) :: + conditional(plan == DiagramActionCode.DrawString, plan6_codec(pad)) :: + conditional(plan == DiagramActionCode.Action7, plan7_codec) + ).exmap[BattleDiagramAction]( + { + case Some(stroke) :: None :: None :: None :: None :: HNil => + Attempt.successful(BattleDiagramAction(plan, Some(stroke))) - case None :: Some(stroke) :: None :: None :: None :: HNil => - Attempt.successful(BattleDiagramAction(plan, Some(stroke))) + case None :: Some(stroke) :: None :: None :: None :: HNil => + Attempt.successful(BattleDiagramAction(plan, Some(stroke))) - case None :: None :: Some(stroke) :: None :: None :: HNil => - Attempt.successful(BattleDiagramAction(plan, Some(stroke))) + case None :: None :: Some(stroke) :: None :: None :: HNil => + Attempt.successful(BattleDiagramAction(plan, Some(stroke))) - case None :: None :: None :: Some(stroke) :: None :: HNil => - Attempt.successful(BattleDiagramAction(plan, Some(stroke))) + case None :: None :: None :: Some(stroke) :: None :: HNil => + Attempt.successful(BattleDiagramAction(plan, Some(stroke))) - case None :: None :: None :: None :: Some(stroke) :: HNil => - Attempt.successful(BattleDiagramAction(plan, Some(stroke))) + case None :: None :: None :: None :: Some(stroke) :: HNil => + Attempt.successful(BattleDiagramAction(plan, Some(stroke))) - case None :: None :: None :: None :: None :: HNil => - Attempt.successful(BattleDiagramAction(plan, None)) + case None :: None :: None :: None :: None :: HNil => + Attempt.successful(BattleDiagramAction(plan, None)) - case _:: _ :: _ :: _ :: _ :: HNil => - Attempt.failure(Err(s"too many strokes for action $plan")) - }, - { - case BattleDiagramAction(DiagramActionCode.Style, Some(stroke)) => - Attempt.successful(Some(stroke.asInstanceOf[Style]) :: None :: None :: None :: None :: HNil) + case _ :: _ :: _ :: _ :: _ :: HNil => + Attempt.failure(Err(s"too many strokes for action $plan")) + }, + { + case BattleDiagramAction(DiagramActionCode.Style, Some(stroke)) => + Attempt.successful(Some(stroke.asInstanceOf[Style]) :: None :: None :: None :: None :: HNil) - case BattleDiagramAction(DiagramActionCode.Vertex, Some(stroke)) => - Attempt.successful(None :: Some(stroke.asInstanceOf[Vertex]) :: None :: None :: None :: HNil) + case BattleDiagramAction(DiagramActionCode.Vertex, Some(stroke)) => + Attempt.successful(None :: Some(stroke.asInstanceOf[Vertex]) :: None :: None :: None :: HNil) - case BattleDiagramAction(DiagramActionCode.Action5, Some(stroke)) => - Attempt.successful(None :: None :: Some(stroke.asInstanceOf[StrokeFive]) :: None :: None :: HNil) + case BattleDiagramAction(DiagramActionCode.Action5, Some(stroke)) => + Attempt.successful(None :: None :: Some(stroke.asInstanceOf[StrokeFive]) :: None :: None :: HNil) - case BattleDiagramAction(DiagramActionCode.DrawString, Some(stroke)) => - Attempt.successful(None :: None :: None :: Some(stroke.asInstanceOf[DrawString]) :: None :: HNil) + case BattleDiagramAction(DiagramActionCode.DrawString, Some(stroke)) => + Attempt.successful(None :: None :: None :: Some(stroke.asInstanceOf[DrawString]) :: None :: HNil) - case BattleDiagramAction(DiagramActionCode.Action7, Some(stroke)) => - Attempt.successful(None :: None :: None :: None :: Some(stroke.asInstanceOf[StrokeSeven]) :: HNil) + case BattleDiagramAction(DiagramActionCode.Action7, Some(stroke)) => + Attempt.successful(None :: None :: None :: None :: Some(stroke.asInstanceOf[StrokeSeven]) :: HNil) - case BattleDiagramAction(_, None) => - Attempt.successful(None :: None :: None :: None :: None :: HNil) + case BattleDiagramAction(_, None) => + Attempt.successful(None :: None :: None :: None :: None :: HNil) - case BattleDiagramAction(n, _) => - Attempt.failure(Err(s"unhandled stroke action number $n")) - } - ) + case BattleDiagramAction(n, _) => + Attempt.failure(Err(s"unhandled stroke action number $n")) + } + ) /** * Parse diagram instructions as a linked list. @@ -340,35 +322,45 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { * different elements add different padding offset to this field on subsequent passes * @return a `Codec` for `BattleDiagramChain` segments */ - private def parse_diagrams_codec(remaining : Int, padOffset : Int = 0) : Codec[BattleDiagramChain] = ( - DiagramActionCode.codec >>:~ { plan => + private def parse_diagrams_codec(remaining: Int, padOffset: Int = 0): Codec[BattleDiagramChain] = + (DiagramActionCode.codec >>:~ { plan => ("diagram" | diagram_codec(plan, padOffset)) :: - conditional(remaining > 1, + conditional( + remaining > 1, "next" | parse_diagrams_codec( remaining - 1, - padOffset + (if(plan == DiagramActionCode.DrawString) { -padOffset } else if(plan == DiagramActionCode.Action5) { 37 } else if(plan == DiagramActionCode.Vertex) { 26 } else if(plan == DiagramActionCode.Style) { 12 } else if(plan == DiagramActionCode.Action7) { 10 } else { 4 }) + padOffset + (if (plan == DiagramActionCode.DrawString) { -padOffset } + else if (plan == DiagramActionCode.Action5) { 37 } + else if (plan == DiagramActionCode.Vertex) { 26 } + else if (plan == DiagramActionCode.Style) { 12 } + else if (plan == DiagramActionCode.Action7) { 10 } + else { 4 }) ) ) - }).exmap[BattleDiagramChain] ( - { - case _ :: diagram :: next :: HNil => - Attempt.successful(BattleDiagramChain(diagram, next)) - }, - { - case BattleDiagramChain(BattleDiagramAction(num, stroke), next) => - Attempt.successful(num :: BattleDiagramAction(num, stroke) :: next :: HNil) - } - ) + }).exmap[BattleDiagramChain]( + { + case _ :: diagram :: next :: HNil => + Attempt.successful(BattleDiagramChain(diagram, next)) + }, + { + case BattleDiagramChain(BattleDiagramAction(num, stroke), next) => + Attempt.successful(num :: BattleDiagramAction(num, stroke) :: next :: HNil) + } + ) import scala.collection.mutable.ListBuffer + /** * Transform a linked list of `BattleDiagramChain` into a `List` of `BattleDiagramAction` objects. * @param element the current link in a chain of `BattleDiagramChain` objects * @param list a `List` of extracted `BattleDiagrams`; * technically, the output */ - @tailrec private def rollDiagramLayers(element : Option[BattleDiagramChain], list : ListBuffer[BattleDiagramAction]) : Unit = { - if(element.nonEmpty) { + @tailrec private def rollDiagramLayers( + element: Option[BattleDiagramChain], + list: ListBuffer[BattleDiagramAction] + ): Unit = { + if (element.nonEmpty) { list += element.get.diagram rollDiagramLayers(element.get.next, list) } @@ -382,34 +374,36 @@ object BattleplanMessage extends Marshallable[BattleplanMessage] { * technically, the output * @return a linked list of `BattleDiagramChain` objects */ - @tailrec private def unrollDiagramLayers(revIter : Iterator[BattleDiagramAction], layers : Option[BattleDiagramChain] = None) : Option[BattleDiagramChain] = { - if(!revIter.hasNext) { + @tailrec private def unrollDiagramLayers( + revIter: Iterator[BattleDiagramAction], + layers: Option[BattleDiagramChain] = None + ): Option[BattleDiagramChain] = { + if (!revIter.hasNext) { layers - } - else { - val elem : BattleDiagramAction = revIter.next + } else { + val elem: BattleDiagramAction = revIter.next unrollDiagramLayers(revIter, Some(BattleDiagramChain(elem, layers))) } } - implicit val codec : Codec[BattleplanMessage] = ( + implicit val codec: Codec[BattleplanMessage] = ( ("char_id" | uint32L) :: ("player_name" | PacketHelpers.encodedWideString) :: ("zone_id" | uint16L) :: (uint8L >>:~ { count => - conditional(count > 0, "diagrams" | parse_diagrams_codec(count)).hlist - }) - ).exmap[BattleplanMessage] ( + conditional(count > 0, "diagrams" | parse_diagrams_codec(count)).hlist + }) + ).exmap[BattleplanMessage]( { case char_id :: player :: zone_id :: _ :: diagramLayers :: HNil => - val list : ListBuffer[BattleDiagramAction] = new ListBuffer() - if(diagramLayers.isDefined) + val list: ListBuffer[BattleDiagramAction] = new ListBuffer() + if (diagramLayers.isDefined) rollDiagramLayers(diagramLayers, list) Attempt.successful(BattleplanMessage(char_id, player, zone_id, list.toList)) }, { case BattleplanMessage(char_id, player_name, zone_id, diagrams) => - val layersOpt : Option[BattleDiagramChain] = unrollDiagramLayers(diagrams.reverseIterator) + val layersOpt: Option[BattleDiagramChain] = unrollDiagramLayers(diagrams.reverseIterator) Attempt.successful(char_id :: player_name :: zone_id :: diagrams.size :: layersOpt :: HNil) } ) diff --git a/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala index f4cc6df2..94e995c8 100644 --- a/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala @@ -15,13 +15,12 @@ import scodec.Codec * - ... and so forth
* Afterwards, an avatar POV is declared and the remaining details about the said avatar are assigned. */ -final case class BeginZoningMessage() - extends PlanetSideGamePacket { +final case class BeginZoningMessage() extends PlanetSideGamePacket { type Packet = BeginZoningMessage def opcode = GamePacketOpcode.BeginZoningMessage def encode = BeginZoningMessage.encode(this) } object BeginZoningMessage extends Marshallable[BeginZoningMessage] { - implicit val codec : Codec[BeginZoningMessage] = PacketHelpers.emptyCodec(BeginZoningMessage()) + implicit val codec: Codec[BeginZoningMessage] = PacketHelpers.emptyCodec(BeginZoningMessage()) } diff --git a/common/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala b/common/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala index 383f3cf8..e7af3353 100644 --- a/common/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala @@ -17,13 +17,7 @@ import scodec.codecs._ object BindStatus extends Enumeration(1) { type Type = Value - val - Bind, - Unbind, - Lost, - Available, - Unavailable - = Value + val Bind, Unbind, Lost, Available, Unavailable = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8) } @@ -68,21 +62,23 @@ object BindStatus extends Enumeration(1) { * @param pos coordinates for any displayed deployment map icon; * `x` and `y` determine the position */ -final case class BindPlayerMessage(action : BindStatus.Value, - bind_desc : String, - display_icon : Boolean, - logging : Boolean, - spawn_group : SpawnGroup.Value, - zone_number : Long, - unk4 : Long, - pos : Vector3) - extends PlanetSideGamePacket { +final case class BindPlayerMessage( + action: BindStatus.Value, + bind_desc: String, + display_icon: Boolean, + logging: Boolean, + spawn_group: SpawnGroup.Value, + zone_number: Long, + unk4: Long, + pos: Vector3 +) extends PlanetSideGamePacket { type Packet = BindPlayerMessage def opcode = GamePacketOpcode.BindPlayerMessage def encode = BindPlayerMessage.encode(this) } object BindPlayerMessage extends Marshallable[BindPlayerMessage] { + /** * A common variant of this packet. */ @@ -90,7 +86,7 @@ object BindPlayerMessage extends Marshallable[BindPlayerMessage] { private val spawnGroupCodec = PacketHelpers.createEnumerationCodec(SpawnGroup, uint4) - implicit val codec : Codec[BindPlayerMessage] = ( + implicit val codec: Codec[BindPlayerMessage] = ( ("action" | BindStatus.codec) :: ("bind_desc" | PacketHelpers.encodedString) :: ("display_icon" | bool) :: @@ -99,5 +95,5 @@ object BindPlayerMessage extends Marshallable[BindPlayerMessage] { ("zone_number" | uint32L) :: ("unk4" | uint32L) :: ("pos" | Vector3.codec_pos) - ).as[BindPlayerMessage] + ).as[BindPlayerMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/BroadcastWarpgateUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/BroadcastWarpgateUpdateMessage.scala index ab685621..9857275a 100644 --- a/common/src/main/scala/net/psforever/packet/game/BroadcastWarpgateUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BroadcastWarpgateUpdateMessage.scala @@ -21,23 +21,19 @@ import scodec.codecs._ * @param nc players belonging to the New Conglomerate interact with this warp gate as a "broadcast gate" * @param vs players belonging to the Vanu Sovereignty interact with this warp gate as a "broadcast gate" */ -final case class BroadcastWarpgateUpdateMessage(zone_id : Int, - building_id : Int, - tr : Boolean, - nc : Boolean, - vs : Boolean) - extends PlanetSideGamePacket { +final case class BroadcastWarpgateUpdateMessage(zone_id: Int, building_id: Int, tr: Boolean, nc: Boolean, vs: Boolean) + extends PlanetSideGamePacket { type Packet = BroadcastWarpgateUpdateMessage def opcode = GamePacketOpcode.BroadcastWarpgateUpdateMessage def encode = BroadcastWarpgateUpdateMessage.encode(this) } object BroadcastWarpgateUpdateMessage extends Marshallable[BroadcastWarpgateUpdateMessage] { - implicit val codec : Codec[BroadcastWarpgateUpdateMessage] = ( + implicit val codec: Codec[BroadcastWarpgateUpdateMessage] = ( ("zone_id" | uint16L) :: ("building_id" | uint16L) :: ("tr" | bool) :: ("nc" | bool) :: ("vs" | bool) - ).as[BroadcastWarpgateUpdateMessage] + ).as[BroadcastWarpgateUpdateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/BugReportMessage.scala b/common/src/main/scala/net/psforever/packet/game/BugReportMessage.scala index f7e22205..a0389a25 100644 --- a/common/src/main/scala/net/psforever/packet/game/BugReportMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BugReportMessage.scala @@ -11,13 +11,7 @@ import scodec.codecs._ */ object BugType extends Enumeration { type Type = Value - val CRASH, - GAMEPLAY, - ART, - SOUND, - HARDWARE, - OTHER - = Value + val CRASH, GAMEPLAY, ART, SOUND, HARDWARE, OTHER = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } @@ -40,24 +34,25 @@ object BugType extends Enumeration { * @param summary a short explanation of the bug * @param desc a detailed explanation of the bug */ -final case class BugReportMessage(version_major : Long, - version_minor : Long, - version_date : String, - bug_type : BugType.Value, - repeatable : Boolean, - location : Int, - zone : Int, - pos : Vector3, - summary : String, - desc : String) - extends PlanetSideGamePacket { +final case class BugReportMessage( + version_major: Long, + version_minor: Long, + version_date: String, + bug_type: BugType.Value, + repeatable: Boolean, + location: Int, + zone: Int, + pos: Vector3, + summary: String, + desc: String +) extends PlanetSideGamePacket { type Packet = BugReportMessage def opcode = GamePacketOpcode.BugReportMessage def encode = BugReportMessage.encode(this) } object BugReportMessage extends Marshallable[BugReportMessage] { - implicit val codec : Codec[BugReportMessage] = ( + implicit val codec: Codec[BugReportMessage] = ( ("versionMajor" | uint32L) :: ("versionMinor" | uint32L) :: ("versionDate" | PacketHelpers.encodedString) :: @@ -69,5 +64,5 @@ object BugReportMessage extends Marshallable[BugReportMessage] { ("pos" | Vector3.codec_pos) :: ("summary" | PacketHelpers.encodedWideStringAligned(4)) :: ("desc" | PacketHelpers.encodedWideString) - ).as[BugReportMessage] + ).as[BugReportMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/BuildingInfoUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/BuildingInfoUpdateMessage.scala index cea36fc8..1af078c8 100644 --- a/common/src/main/scala/net/psforever/packet/game/BuildingInfoUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BuildingInfoUpdateMessage.scala @@ -13,25 +13,21 @@ import shapeless.{::, HNil} * @param unk2 na * @param unk3 na */ -final case class Additional1(unk1 : String, - unk2 : Int, - unk3 : Long) +final case class Additional1(unk1: String, unk2: Int, unk3: Long) /** * na * @param unk1 na * @param unk2 na */ -final case class Additional2(unk1 : Int, - unk2 : Long) +final case class Additional2(unk1: Int, unk2: Long) /** * na * @param unk1 na * @param unk2 na */ -final case class Additional3(unk1 : Boolean, - unk2 : Int) +final case class Additional3(unk1: Boolean, unk2: Int) /** * Update the state of map asset for a client's specific building's state. @@ -103,84 +99,86 @@ final case class Additional3(unk1 : Boolean, * @param boost_spawn_pain if the building has spawn tubes, the (boosted) strength of its enemy pain field * @param boost_generator_pain if the building has a generator, the (boosted) strength of its enemy pain field */ -final case class BuildingInfoUpdateMessage(continent_id : Int, - building_map_id : Int, - ntu_level : Int, - is_hacked : Boolean, - empire_hack : PlanetSideEmpire.Value, - hack_time_remaining : Long, - empire_own : PlanetSideEmpire.Value, - unk1 : Long, - unk1x : Option[Additional1], - generator_state : PlanetSideGeneratorState.Value, - spawn_tubes_normal : Boolean, - force_dome_active : Boolean, - lattice_benefit : Int, - cavern_benefit : Int, - unk4 : List[Additional2], - unk5 : Long, - unk6 : Boolean, - unk7 : Int, - unk7x : Option[Additional3], - boost_spawn_pain : Boolean, - boost_generator_pain : Boolean) - extends PlanetSideGamePacket { +final case class BuildingInfoUpdateMessage( + continent_id: Int, + building_map_id: Int, + ntu_level: Int, + is_hacked: Boolean, + empire_hack: PlanetSideEmpire.Value, + hack_time_remaining: Long, + empire_own: PlanetSideEmpire.Value, + unk1: Long, + unk1x: Option[Additional1], + generator_state: PlanetSideGeneratorState.Value, + spawn_tubes_normal: Boolean, + force_dome_active: Boolean, + lattice_benefit: Int, + cavern_benefit: Int, + unk4: List[Additional2], + unk5: Long, + unk6: Boolean, + unk7: Int, + unk7x: Option[Additional3], + boost_spawn_pain: Boolean, + boost_generator_pain: Boolean +) extends PlanetSideGamePacket { type Packet = BuildingInfoUpdateMessage def opcode = GamePacketOpcode.BuildingInfoUpdateMessage def encode = BuildingInfoUpdateMessage.encode(this) } object BuildingInfoUpdateMessage extends Marshallable[BuildingInfoUpdateMessage] { + /** * A `Codec` for a set of additional fields. */ - private val additional1_codec : Codec[Additional1] = ( + private val additional1_codec: Codec[Additional1] = ( ("unk1" | PacketHelpers.encodedWideStringAligned(3)) :: ("unk2" | uint8L) :: ("unk3" | uint32L) - ).as[Additional1] + ).as[Additional1] /** * A `Codec` for a set of additional fields. */ - private val additional2_codec : Codec[Additional2] = ( + private val additional2_codec: Codec[Additional2] = ( ("unk1" | uint4L) :: ("unk2" | uint32L) - ).as[Additional2] + ).as[Additional2] /** * A `Codec` for a set of additional fields. */ - private val additional3_codec : Codec[Additional3] = ( + private val additional3_codec: Codec[Additional3] = ( ("unk1" | bool) :: ("unk2" | uint2L) - ).as[Additional3] + ).as[Additional3] - implicit val codec : Codec[BuildingInfoUpdateMessage] = ( - ("continent_id" | uint16L) :: + implicit val codec: Codec[BuildingInfoUpdateMessage] = ( + ("continent_id" | uint16L) :: ("building_id" | uint16L) :: ("ntu_level" | uint4L) :: - ("is_hacked" | bool ) :: + ("is_hacked" | bool) :: ("empire_hack" | PlanetSideEmpire.codec) :: - ("hack_time_remaining" | uint32L ) :: + ("hack_time_remaining" | uint32L) :: ("empire_own" | PlanetSideEmpire.codec) :: (("unk1" | uint32L) >>:~ { unk1 => - conditional(unk1 != 0L, "unk1x" | additional1_codec) :: - ("generator_state" | PlanetSideGeneratorState.codec) :: - ("spawn_tubes_normal" | bool) :: - ("force_dome_active" | bool) :: - ("lattice_benefit" | uintL(5)) :: - ("cavern_benefit" | uintL(10)) :: - ("unk4" | listOfN(uint4L, additional2_codec)) :: - ("unk5" | uint32L) :: - ("unk6" | bool) :: - (("unk7" | uint4L) >>:~ { unk7 => - conditional(unk7 != 8, "unk7x" | additional3_codec) :: - ("boost_spawn_pain" | bool) :: - ("boost_generator_pain" | bool) - }) + conditional(unk1 != 0L, "unk1x" | additional1_codec) :: + ("generator_state" | PlanetSideGeneratorState.codec) :: + ("spawn_tubes_normal" | bool) :: + ("force_dome_active" | bool) :: + ("lattice_benefit" | uintL(5)) :: + ("cavern_benefit" | uintL(10)) :: + ("unk4" | listOfN(uint4L, additional2_codec)) :: + ("unk5" | uint32L) :: + ("unk6" | bool) :: + (("unk7" | uint4L) >>:~ { unk7 => + conditional(unk7 != 8, "unk7x" | additional3_codec) :: + ("boost_spawn_pain" | bool) :: + ("boost_generator_pain" | bool) }) - ).exmap[BuildingInfoUpdateMessage] ( + }) + ).exmap[BuildingInfoUpdateMessage]( { case a :: b :: c :: d :: e :: f :: g :: h :: i :: j :: k :: l :: m :: n :: o :: p :: q :: r :: s :: t :: u :: HNil => Attempt.successful(BuildingInfoUpdateMessage(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)) @@ -193,18 +191,22 @@ object BuildingInfoUpdateMessage extends Marshallable[BuildingInfoUpdateMessage] Attempt.failure(Err("invalid properties when value == 8")) case BuildingInfoUpdateMessage(a, b, c, d, e, f, g, h, i, j, k, l, m, n, lst, p, q, r, s, t, u) => - if(h != 0 && i.isEmpty) { - Attempt.failure(Err(s"missing properties when value != 0 (actual: $h)")) //TODO can we recover by forcing value -> 0? - } - else if(r != 8 && s.isEmpty) { - Attempt.failure(Err(s"missing properties when value != 8 (actual: $r)")) //TODO can we recover by forcing value -> 8? + if (h != 0 && i.isEmpty) { + Attempt.failure( + Err(s"missing properties when value != 0 (actual: $h)") + ) //TODO can we recover by forcing value -> 0? + } else if (r != 8 && s.isEmpty) { + Attempt.failure( + Err(s"missing properties when value != 8 (actual: $r)") + ) //TODO can we recover by forcing value -> 8? } val size = lst.size - if(size > 15) { + if (size > 15) { Attempt.failure(Err(s"too many elements in list (max: 15, actual: $size)")) - } - else { - Attempt.successful(a :: b :: c :: d :: e :: f :: g :: h :: i :: j :: k :: l :: m :: n :: lst :: p :: q :: r :: s :: t :: u :: HNil) + } else { + Attempt.successful( + a :: b :: c :: d :: e :: f :: g :: h :: i :: j :: k :: l :: m :: n :: lst :: p :: q :: r :: s :: t :: u :: HNil + ) } } ) diff --git a/common/src/main/scala/net/psforever/packet/game/CargoMountPointStatusMessage.scala b/common/src/main/scala/net/psforever/packet/game/CargoMountPointStatusMessage.scala index 9312f252..8daeb97d 100644 --- a/common/src/main/scala/net/psforever/packet/game/CargoMountPointStatusMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CargoMountPointStatusMessage.scala @@ -25,14 +25,15 @@ import scodec.codecs._ * 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, - mounted_vehicle: PlanetSideGUID, - dismounted_vehicle: PlanetSideGUID, - slot: Int, - mount_status: CargoStatus.Value, - orientation: Int) - extends PlanetSideGamePacket { +final case class CargoMountPointStatusMessage( + cargo_vehicle_guid: PlanetSideGUID, + requesting_vehicle: PlanetSideGUID, + mounted_vehicle: PlanetSideGUID, + dismounted_vehicle: PlanetSideGUID, + slot: Int, + mount_status: CargoStatus.Value, + orientation: Int +) extends PlanetSideGamePacket { type Packet = CargoMountPointStatusMessage def opcode = GamePacketOpcode.CargoMountPointStatusMessage @@ -41,14 +42,13 @@ final case class CargoMountPointStatusMessage(cargo_vehicle_guid : PlanetSideGUI } object CargoMountPointStatusMessage extends Marshallable[CargoMountPointStatusMessage] { - implicit val codec : Codec[CargoMountPointStatusMessage] = ( + implicit val codec: Codec[CargoMountPointStatusMessage] = ( ("cargo_vehicle_guid" | PlanetSideGUID.codec) :: - ("requesting_vehicle" | PlanetSideGUID.codec) :: - ("mounted_vehicle" | PlanetSideGUID.codec) :: - ("dismounted_vehicle" | PlanetSideGUID.codec) :: - ("slot" | uint8L) :: - ("mount_status" | CargoStatus.codec) :: - ("orientation" | uint2L) - ).as[CargoMountPointStatusMessage] + ("requesting_vehicle" | PlanetSideGUID.codec) :: + ("mounted_vehicle" | PlanetSideGUID.codec) :: + ("dismounted_vehicle" | PlanetSideGUID.codec) :: + ("slot" | uint8L) :: + ("mount_status" | CargoStatus.codec) :: + ("orientation" | uint2L) + ).as[CargoMountPointStatusMessage] } - diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeAmmoMessage.scala b/common/src/main/scala/net/psforever/packet/game/ChangeAmmoMessage.scala index e8c74496..a5fa58d7 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChangeAmmoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChangeAmmoMessage.scala @@ -6,17 +6,15 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ChangeAmmoMessage(item_guid : PlanetSideGUID, - unk1 : Long) - extends PlanetSideGamePacket { +final case class ChangeAmmoMessage(item_guid: PlanetSideGUID, unk1: Long) extends PlanetSideGamePacket { type Packet = ChangeAmmoMessage def opcode = GamePacketOpcode.ChangeAmmoMessage def encode = ChangeAmmoMessage.encode(this) } object ChangeAmmoMessage extends Marshallable[ChangeAmmoMessage] { - implicit val codec : Codec[ChangeAmmoMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("unk1" | uint32L) - ).as[ChangeAmmoMessage] + implicit val codec: Codec[ChangeAmmoMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("unk1" | uint32L) + ).as[ChangeAmmoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeFireModeMessage.scala b/common/src/main/scala/net/psforever/packet/game/ChangeFireModeMessage.scala index 88b7dab6..9930a4f6 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChangeFireModeMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChangeFireModeMessage.scala @@ -6,17 +6,15 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ChangeFireModeMessage(item_guid : PlanetSideGUID, - fire_mode : Int) - extends PlanetSideGamePacket { +final case class ChangeFireModeMessage(item_guid: PlanetSideGUID, fire_mode: Int) extends PlanetSideGamePacket { type Packet = ChangeFireModeMessage def opcode = GamePacketOpcode.ChangeFireModeMessage def encode = ChangeFireModeMessage.encode(this) } object ChangeFireModeMessage extends Marshallable[ChangeFireModeMessage] { - implicit val codec : Codec[ChangeFireModeMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("fire_mode" | uintL(3)) - ).as[ChangeFireModeMessage] + implicit val codec: Codec[ChangeFireModeMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("fire_mode" | uintL(3)) + ).as[ChangeFireModeMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala index 193032bd..1e02bdbb 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala @@ -6,13 +6,13 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ChangeFireStateMessage_Start(item_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class ChangeFireStateMessage_Start(item_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = ChangeFireStateMessage_Start def opcode = GamePacketOpcode.ChangeFireStateMessage_Start def encode = ChangeFireStateMessage_Start.encode(this) } object ChangeFireStateMessage_Start extends Marshallable[ChangeFireStateMessage_Start] { - implicit val codec : Codec[ChangeFireStateMessage_Start] = ("item_guid" | PlanetSideGUID.codec).as[ChangeFireStateMessage_Start] + implicit val codec: Codec[ChangeFireStateMessage_Start] = + ("item_guid" | PlanetSideGUID.codec).as[ChangeFireStateMessage_Start] } diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala index 1c86426b..43441e69 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala @@ -6,13 +6,13 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ChangeFireStateMessage_Stop(item_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class ChangeFireStateMessage_Stop(item_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = ChangeFireStateMessage_Stop def opcode = GamePacketOpcode.ChangeFireStateMessage_Stop def encode = ChangeFireStateMessage_Stop.encode(this) } object ChangeFireStateMessage_Stop extends Marshallable[ChangeFireStateMessage_Stop] { - implicit val codec : Codec[ChangeFireStateMessage_Stop] = ("item_guid" | PlanetSideGUID.codec).as[ChangeFireStateMessage_Stop] + implicit val codec: Codec[ChangeFireStateMessage_Stop] = + ("item_guid" | PlanetSideGUID.codec).as[ChangeFireStateMessage_Stop] } diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeShortcutBankMessage.scala b/common/src/main/scala/net/psforever/packet/game/ChangeShortcutBankMessage.scala index 60284987..d1d38742 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChangeShortcutBankMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChangeShortcutBankMessage.scala @@ -20,17 +20,15 @@ import scodec.codecs._ * @param bank the shortcut bank (zero-indexed); * 0-7 are the valid banks */ -final case class ChangeShortcutBankMessage(player_guid : PlanetSideGUID, - bank : Int) - extends PlanetSideGamePacket { +final case class ChangeShortcutBankMessage(player_guid: PlanetSideGUID, bank: Int) extends PlanetSideGamePacket { type Packet = ChangeShortcutBankMessage def opcode = GamePacketOpcode.ChangeShortcutBankMessage def encode = ChangeShortcutBankMessage.encode(this) } object ChangeShortcutBankMessage extends Marshallable[ChangeShortcutBankMessage] { - implicit val codec : Codec[ChangeShortcutBankMessage] = ( + implicit val codec: Codec[ChangeShortcutBankMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("bank" | uint4L) - ).as[ChangeShortcutBankMessage] + ).as[ChangeShortcutBankMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala index 635fa074..35a5c70e 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterCreateRequestMessage.scala @@ -10,12 +10,13 @@ import shapeless.{::, HNil} /** * Is sent by the PlanetSide client on character selection completion. */ -final case class CharacterCreateRequestMessage(name : String, - headId : Int, - voiceId : CharacterVoice.Value, - gender : CharacterGender.Value, - empire : PlanetSideEmpire.Value) - extends PlanetSideGamePacket { +final case class CharacterCreateRequestMessage( + name: String, + headId: Int, + voiceId: CharacterVoice.Value, + gender: CharacterGender.Value, + empire: PlanetSideEmpire.Value +) extends PlanetSideGamePacket { type Packet = CharacterCreateRequestMessage def opcode = GamePacketOpcode.CharacterCreateRequestMessage def encode = CharacterCreateRequestMessage.encode(this) @@ -24,13 +25,13 @@ final case class CharacterCreateRequestMessage(name : String, object CharacterCreateRequestMessage extends Marshallable[CharacterCreateRequestMessage] { private val character_voice_codec = PacketHelpers.createEnumerationCodec(CharacterVoice, uint8) - implicit val codec : Codec[CharacterCreateRequestMessage] = ( + implicit val codec: Codec[CharacterCreateRequestMessage] = ( ("name" | PacketHelpers.encodedWideString) :: ("headId" | uint8L) :: ("voiceId" | character_voice_codec) :: ("gender" | CharacterGender.codec) :: ("empire" | PlanetSideEmpire.codec) - ).exmap[CharacterCreateRequestMessage] ( + ).exmap[CharacterCreateRequestMessage]( { case name :: headId :: voiceId :: gender :: empire :: HNil => Attempt.successful(CharacterCreateRequestMessage(name, headId, voiceId, gender, empire)) @@ -43,4 +44,4 @@ object CharacterCreateRequestMessage extends Marshallable[CharacterCreateRequest Attempt.successful(name :: headId :: voiceId :: gender :: empire :: HNil) } ) -} \ No newline at end of file +} diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterInfoMessage.scala index dfba139a..ba439e6e 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterInfoMessage.scala @@ -6,7 +6,7 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -case class PlanetSideZoneID(zoneId : Long) +case class PlanetSideZoneID(zoneId: Long) object PlanetSideZoneID { implicit val codec = uint32L.as[PlanetSideZoneID] @@ -20,25 +20,26 @@ object PlanetSideZoneID { * * @param finished True when there are no more characters to give info on */ -final case class CharacterInfoMessage(unk : Long, - zoneId : PlanetSideZoneID, - charId : Long, - guid : PlanetSideGUID, - finished : Boolean, - secondsSinceLastLogin : Long) - extends PlanetSideGamePacket { +final case class CharacterInfoMessage( + unk: Long, + zoneId: PlanetSideZoneID, + charId: Long, + guid: PlanetSideGUID, + finished: Boolean, + secondsSinceLastLogin: Long +) extends PlanetSideGamePacket { type Packet = CharacterInfoMessage def opcode = GamePacketOpcode.CharacterInfoMessage def encode = CharacterInfoMessage.encode(this) } object CharacterInfoMessage extends Marshallable[CharacterInfoMessage] { - implicit val codec : Codec[CharacterInfoMessage] = ( - ("unk" | uint32L) :: - ("zoneId" | PlanetSideZoneID.codec) :: - ("charId" | uint32L) :: - ("charGUID" | PlanetSideGUID.codec) :: - ("finished" | bool) :: - ("seconds_since_last_login" | uint32L) - ).as[CharacterInfoMessage] + implicit val codec: Codec[CharacterInfoMessage] = ( + ("unk" | uint32L) :: + ("zoneId" | PlanetSideZoneID.codec) :: + ("charId" | uint32L) :: + ("charGUID" | PlanetSideGUID.codec) :: + ("finished" | bool) :: + ("seconds_since_last_login" | uint32L) + ).as[CharacterInfoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterKnowledgeMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterKnowledgeMessage.scala index e5d575bb..e3a5bff8 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterKnowledgeMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterKnowledgeMessage.scala @@ -7,39 +7,40 @@ import scodec.Codec import scodec.codecs._ import shapeless.{::, HNil} -final case class CharacterKnowledgeInfo(name : String, - permissions : Set[CertificationType.Value], - unk1 : Int, - unk2 : Int, - unk3 : PlanetSideGUID) +final case class CharacterKnowledgeInfo( + name: String, + permissions: Set[CertificationType.Value], + unk1: Int, + unk2: Int, + unk3: PlanetSideGUID +) -final case class CharacterKnowledgeMessage(char_id : Long, - info : Option[CharacterKnowledgeInfo]) - extends PlanetSideGamePacket { +final case class CharacterKnowledgeMessage(char_id: Long, info: Option[CharacterKnowledgeInfo]) + extends PlanetSideGamePacket { type Packet = CharacterKnowledgeMessage def opcode = GamePacketOpcode.CharacterKnowledgeMessage def encode = CharacterKnowledgeMessage.encode(this) } object CharacterKnowledgeMessage extends Marshallable[CharacterKnowledgeMessage] { - def apply(char_id : Long) : CharacterKnowledgeMessage = + def apply(char_id: Long): CharacterKnowledgeMessage = CharacterKnowledgeMessage(char_id, None) - def apply(char_id : Long, info : CharacterKnowledgeInfo) : CharacterKnowledgeMessage = + def apply(char_id: Long, info: CharacterKnowledgeInfo): CharacterKnowledgeMessage = CharacterKnowledgeMessage(char_id, Some(info)) - private val inverter : Codec[Boolean] = bool.xmap[Boolean] ( + private val inverter: Codec[Boolean] = bool.xmap[Boolean]( state => !state, state => !state ) - private val info_codec : Codec[CharacterKnowledgeInfo] = ( + private val info_codec: Codec[CharacterKnowledgeInfo] = ( ("name" | PacketHelpers.encodedWideStringAligned(adjustment = 7)) :: ("permissions" | ulongL(bits = 46)) :: ("unk1" | uint(bits = 6)) :: ("unk2" | uint(bits = 3)) :: ("unk3" | PlanetSideGUID.codec) - ).xmap[CharacterKnowledgeInfo] ( + ).xmap[CharacterKnowledgeInfo]( { case name :: permissions :: u1 :: u2 :: u3 :: HNil => CharacterKnowledgeInfo(name, CertificationType.fromEncodedLong(permissions), u1, u2, u3) @@ -50,8 +51,8 @@ object CharacterKnowledgeMessage extends Marshallable[CharacterKnowledgeMessage] } ) - implicit val codec : Codec[CharacterKnowledgeMessage] = ( + implicit val codec: Codec[CharacterKnowledgeMessage] = ( ("char_id" | uint32L) :: ("info" | optional(inverter, info_codec)) - ).as[CharacterKnowledgeMessage] + ).as[CharacterKnowledgeMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala index 8e98b12b..83c156e2 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala @@ -5,13 +5,12 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacke import scodec.Codec import scodec.codecs._ -final case class CharacterNoRecordMessage(unk : Long) - extends PlanetSideGamePacket { +final case class CharacterNoRecordMessage(unk: Long) extends PlanetSideGamePacket { type Packet = CharacterNoRecordMessage def opcode = GamePacketOpcode.CharacterNoRecordMessage def encode = CharacterNoRecordMessage.encode(this) } object CharacterNoRecordMessage extends Marshallable[CharacterNoRecordMessage] { - implicit val codec : Codec[CharacterNoRecordMessage] = ("unk" | uint32L).as[CharacterNoRecordMessage] + implicit val codec: Codec[CharacterNoRecordMessage] = ("unk" | uint32L).as[CharacterNoRecordMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterRequestMessage.scala index f6cec540..8e51a231 100644 --- a/common/src/main/scala/net/psforever/packet/game/CharacterRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CharacterRequestMessage.scala @@ -16,16 +16,16 @@ object CharacterRequestAction extends Enumeration(0) { * Is sent by the PlanetSide client when selecting a character to play from the character selection * menu. */ -final case class CharacterRequestMessage(charId : Long, action: CharacterRequestAction.Type) - extends PlanetSideGamePacket { +final case class CharacterRequestMessage(charId: Long, action: CharacterRequestAction.Type) + extends PlanetSideGamePacket { type Packet = CharacterRequestMessage def opcode = GamePacketOpcode.CharacterRequestMessage def encode = CharacterRequestMessage.encode(this) } object CharacterRequestMessage extends Marshallable[CharacterRequestMessage] { - implicit val codec : Codec[CharacterRequestMessage] = ( - ("charId" | uint32L) :: - ("action" | CharacterRequestAction.codec) - ).as[CharacterRequestMessage] -} \ No newline at end of file + implicit val codec: Codec[CharacterRequestMessage] = ( + ("charId" | uint32L) :: + ("action" | CharacterRequestAction.codec) + ).as[CharacterRequestMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ChatMsg.scala b/common/src/main/scala/net/psforever/packet/game/ChatMsg.scala index 98027a0e..4b61acbf 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChatMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChatMsg.scala @@ -20,15 +20,16 @@ import scodec.codecs._ * @param contents the textual contents of the message * @param note only used when the message is of note type */ -final case class ChatMsg(messageType : ChatMessageType.Value, - wideContents : Boolean, - recipient : String, - contents : String, - note : Option[String]) - extends PlanetSideGamePacket { +final case class ChatMsg( + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] +) extends PlanetSideGamePacket { // Prevent usage of the Note field unless the message is of type note - if(messageType == ChatMessageType.CMT_NOTE) + if (messageType == ChatMessageType.CMT_NOTE) assert(note.isDefined, "Note contents required") else assert(note.isEmpty, "Note contents found, but message type isnt Note") @@ -39,15 +40,15 @@ final case class ChatMsg(messageType : ChatMessageType.Value, } object ChatMsg extends Marshallable[ChatMsg] { - implicit val codec : Codec[ChatMsg] = ( - ("messagetype" | ChatMessageType.codec) >>:~ { messagetype_value => - (("has_wide_contents" | bool) >>:~ { isWide => - ("recipient" | PacketHelpers.encodedWideStringAligned(7)) :: - newcodecs.binary_choice(isWide, + implicit val codec: Codec[ChatMsg] = (("messagetype" | ChatMessageType.codec) >>:~ { messagetype_value => + (("has_wide_contents" | bool) >>:~ { isWide => + ("recipient" | PacketHelpers.encodedWideStringAligned(7)) :: + newcodecs.binary_choice( + isWide, "contents" | PacketHelpers.encodedWideString, - "contents" | PacketHelpers.encodedString) - }) :+ - conditional(messagetype_value == ChatMessageType.CMT_NOTE, - "note_contents" | PacketHelpers.encodedWideString) - }).as[ChatMsg] + "contents" | PacketHelpers.encodedString + ) + }) :+ + conditional(messagetype_value == ChatMessageType.CMT_NOTE, "note_contents" | PacketHelpers.encodedWideString) + }).as[ChatMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/ChildObjectStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ChildObjectStateMessage.scala index 26191b50..0ff98a66 100644 --- a/common/src/main/scala/net/psforever/packet/game/ChildObjectStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ChildObjectStateMessage.scala @@ -20,19 +20,17 @@ import scodec.codecs._ * @param pitch the amount of pitch that affects orientation from forward facing (0) * @param yaw the amount of yaw that affects orientation from forward-facing (0) */ -final case class ChildObjectStateMessage(object_guid : PlanetSideGUID, - pitch : Float, - yaw : Float) - extends PlanetSideGamePacket { +final case class ChildObjectStateMessage(object_guid: PlanetSideGUID, pitch: Float, yaw: Float) + extends PlanetSideGamePacket { type Packet = ChildObjectStateMessage def opcode = GamePacketOpcode.ChildObjectStateMessage def encode = ChildObjectStateMessage.encode(this) } object ChildObjectStateMessage extends Marshallable[ChildObjectStateMessage] { - implicit val codec : Codec[ChildObjectStateMessage] = ( + implicit val codec: Codec[ChildObjectStateMessage] = ( ("object_guid" | PlanetSideGUID.codec) :: ("pitch" | Angular.codec_pitch) :: ("yaw" | Angular.codec_yaw(0f)) - ).as[ChildObjectStateMessage] + ).as[ChildObjectStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldMessage.scala b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldMessage.scala index 8a90c08d..dce5a74a 100644 --- a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldMessage.scala @@ -11,17 +11,16 @@ import scodec.codecs._ * @param serverAddress The IP or hostname of the server to connect to * @param port The 16-bit port number to connect on */ -final case class ConnectToWorldMessage(server : String, serverAddress : String, port : Int) - extends PlanetSideGamePacket { +final case class ConnectToWorldMessage(server: String, serverAddress: String, port: Int) extends PlanetSideGamePacket { type Packet = ConnectToWorldMessage def opcode = GamePacketOpcode.ConnectToWorldMessage def encode = ConnectToWorldMessage.encode(this) } object ConnectToWorldMessage extends Marshallable[ConnectToWorldMessage] { - implicit val codec : Codec[ConnectToWorldMessage] = ( - ("server_name" | PacketHelpers.encodedString) :: + implicit val codec: Codec[ConnectToWorldMessage] = ( + ("server_name" | PacketHelpers.encodedString) :: ("server_address" | PacketHelpers.encodedString) :: ("server_port" | uint16L) - ).as[ConnectToWorldMessage] -} \ No newline at end of file + ).as[ConnectToWorldMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala index aa0d6111..63b0aadd 100644 --- a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala @@ -7,20 +7,22 @@ import scodec.codecs._ // NOTE: this packet has a ton of bytes left over at the end and is usually all zeros // except for the server name and a 0x80 near the end -final case class ConnectToWorldRequestMessage(server : String, - token : String, - majorVersion : Long, - minorVersion : Long, - revision : Long, - buildDate : String, - unknown : Int) extends PlanetSideGamePacket { +final case class ConnectToWorldRequestMessage( + server: String, + token: String, + majorVersion: Long, + minorVersion: Long, + revision: Long, + buildDate: String, + unknown: Int +) extends PlanetSideGamePacket { type Packet = ConnectToWorldRequestMessage def opcode = GamePacketOpcode.ConnectToWorldRequestMessage def encode = ConnectToWorldRequestMessage.encode(this) } object ConnectToWorldRequestMessage extends Marshallable[ConnectToWorldRequestMessage] { - implicit val codec : Codec[ConnectToWorldRequestMessage] = ( + implicit val codec: Codec[ConnectToWorldRequestMessage] = ( ("server_name" | PacketHelpers.encodedString) :: ("token" | paddedFixedSizeBytes(32, cstring, ignore(8))) :: // must be an ignore 8 as the memory might not be 0x00 ("major_version" | uint32L) :: @@ -28,5 +30,5 @@ object ConnectToWorldRequestMessage extends Marshallable[ConnectToWorldRequestMe ("revision" | uint32L) :: ("build_date" | PacketHelpers.encodedString) :: ("unknown_short" | uint16L) - ).as[ConnectToWorldRequestMessage] -} \ No newline at end of file + ).as[ConnectToWorldRequestMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ContinentalLockUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ContinentalLockUpdateMessage.scala index 204db94c..0dfabb1c 100644 --- a/common/src/main/scala/net/psforever/packet/game/ContinentalLockUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ContinentalLockUpdateMessage.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideEmpire import scodec.Codec import scodec.codecs._ @@ -15,17 +15,16 @@ import scodec.codecs._ * @param continent_id identifies the zone (continent) * @param empire identifies the empire */ -final case class ContinentalLockUpdateMessage(continent_id : Int, - empire : PlanetSideEmpire.Value) - extends PlanetSideGamePacket { +final case class ContinentalLockUpdateMessage(continent_id: Int, empire: PlanetSideEmpire.Value) + extends PlanetSideGamePacket { type Packet = ContinentalLockUpdateMessage def opcode = GamePacketOpcode.ContinentalLockUpdateMessage def encode = ContinentalLockUpdateMessage.encode(this) } object ContinentalLockUpdateMessage extends Marshallable[ContinentalLockUpdateMessage] { - implicit val codec : Codec[ContinentalLockUpdateMessage] = ( + implicit val codec: Codec[ContinentalLockUpdateMessage] = ( ("continent_id" | uint16L) :: ("empire" | PlanetSideEmpire.codec) - ).as[ContinentalLockUpdateMessage] + ).as[ContinentalLockUpdateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/CreateShortcutMessage.scala b/common/src/main/scala/net/psforever/packet/game/CreateShortcutMessage.scala index 94904bc5..4d69a9fe 100644 --- a/common/src/main/scala/net/psforever/packet/game/CreateShortcutMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/CreateShortcutMessage.scala @@ -44,10 +44,7 @@ import scodec.codecs._ * @param effect1 for macros, a three letter acronym displayed in the hotbar * @param effect2 for macros, the chat message content */ -final case class Shortcut(purpose : Int, - tile : String, - effect1 : String = "", - effect2 : String = "") +final case class Shortcut(purpose: Int, tile: String, effect1: String = "", effect2: String = "") /** * Facilitate a quick-use button for the hotbar.
@@ -72,12 +69,13 @@ final case class Shortcut(purpose : Int, * @param shortcut optional; details about the shortcut to be created * @see ChangeShortcutBankMessage */ -final case class CreateShortcutMessage(player_guid : PlanetSideGUID, - slot : Int, - unk : Int, - addShortcut : Boolean, - shortcut : Option[Shortcut] = None) - extends PlanetSideGamePacket { +final case class CreateShortcutMessage( + player_guid: PlanetSideGUID, + slot: Int, + unk: Int, + addShortcut: Boolean, + shortcut: Option[Shortcut] = None +) extends PlanetSideGamePacket { type Packet = CreateShortcutMessage def opcode = GamePacketOpcode.CreateShortcutMessage def encode = CreateShortcutMessage.encode(this) @@ -87,66 +85,77 @@ object Shortcut extends Marshallable[Shortcut] { // Convenient predefined Shortcuts for the Medkit and Implants /** - A map to convert between ImplantTypes and Implant Shortcuts - */ - final lazy val ImplantsMap : Map[ImplantType.Value, Option[Shortcut]] = Map( - ImplantType.AdvancedRegen->Regeneration, - ImplantType.Targeting->EnhancedTargeting, - ImplantType.AudioAmplifier->AudioAmplifier, - ImplantType.DarklightVision->DartklightVision, - ImplantType.MeleeBooster->MeleeBooster, - ImplantType.PersonalShield->PersonalShield, - ImplantType.RangeMagnifier->RangeMagnifier, - ImplantType.SecondWind->SecondWind, - ImplantType.SilentRun->SensorShield, - ImplantType.Surge->Surge + * A map to convert between ImplantTypes and Implant Shortcuts + */ + final lazy val ImplantsMap: Map[ImplantType.Value, Option[Shortcut]] = Map( + ImplantType.AdvancedRegen -> Regeneration, + ImplantType.Targeting -> EnhancedTargeting, + ImplantType.AudioAmplifier -> AudioAmplifier, + ImplantType.DarklightVision -> DartklightVision, + ImplantType.MeleeBooster -> MeleeBooster, + ImplantType.PersonalShield -> PersonalShield, + ImplantType.RangeMagnifier -> RangeMagnifier, + ImplantType.SecondWind -> SecondWind, + ImplantType.SilentRun -> SensorShield, + ImplantType.Surge -> Surge ).withDefaultValue(None) /** Preset for the Audio Amplifier implant. */ - final val AudioAmplifier : Some[Shortcut] = Some(Shortcut(2, "audio_amplifier")) + final val AudioAmplifier: Some[Shortcut] = Some(Shortcut(2, "audio_amplifier")) + /** Preset for the Darklight Vision implant. */ - final val DartklightVision : Some[Shortcut] = Some(Shortcut(2, "darklight_vision")) + final val DartklightVision: Some[Shortcut] = Some(Shortcut(2, "darklight_vision")) + /** Preset for the Enhanced Targeting implant. */ - final val EnhancedTargeting : Some[Shortcut] = Some(Shortcut(2, "targeting")) + final val EnhancedTargeting: Some[Shortcut] = Some(Shortcut(2, "targeting")) + /** Preset for the medkit quick-use option. */ - final val Medkit : Some[Shortcut] = Some(Shortcut(0, "medkit")) + final val Medkit: Some[Shortcut] = Some(Shortcut(0, "medkit")) + /** Preset for the Melee Booster implant. */ - final val MeleeBooster : Some[Shortcut] = Some(Shortcut(2, "melee_booster")) + final val MeleeBooster: Some[Shortcut] = Some(Shortcut(2, "melee_booster")) + /** Preset for the Personal Shield implant. */ - final val PersonalShield : Some[Shortcut] = Some(Shortcut(2, "personal_shield")) + final val PersonalShield: Some[Shortcut] = Some(Shortcut(2, "personal_shield")) + /** Preset for the Range Magnifier implant. */ - final val RangeMagnifier : Some[Shortcut] = Some(Shortcut(2, "range_magnifier")) + final val RangeMagnifier: Some[Shortcut] = Some(Shortcut(2, "range_magnifier")) + /** Preset for the Regeneration implant. */ - final val Regeneration : Some[Shortcut] = Some(Shortcut(2, "advanced_regen")) + final val Regeneration: Some[Shortcut] = Some(Shortcut(2, "advanced_regen")) + /** Preset for the Second Wind implant. */ - final val SecondWind : Some[Shortcut] = Some(Shortcut(2, "second_wind")) + final val SecondWind: Some[Shortcut] = Some(Shortcut(2, "second_wind")) + /** Preset for the Sensor Shield implant. */ - final val SensorShield : Some[Shortcut] = Some(Shortcut(2, "silent_run")) + final val SensorShield: Some[Shortcut] = Some(Shortcut(2, "silent_run")) + /** Preset for the Surge implant. */ - final val Surge : Some[Shortcut] = Some(Shortcut(2, "surge")) + final val Surge: Some[Shortcut] = Some(Shortcut(2, "surge")) + /** * Converter for text macro parameters that acts like a preset. * @param effect1 a three letter acronym displayed in the hotbar * @param effect2 the chat message content * @return `Some` shortcut that represents a voice macro command */ - def MACRO(effect1 : String, effect2 : String) : Some[Shortcut] = Some(Shortcut(1, "shortcut_macro", effect1, effect2)) + def MACRO(effect1: String, effect2: String): Some[Shortcut] = Some(Shortcut(1, "shortcut_macro", effect1, effect2)) - implicit val codec : Codec[Shortcut] = ( + implicit val codec: Codec[Shortcut] = ( ("purpose" | uint2L) :: ("tile" | PacketHelpers.encodedStringAligned(5)) :: ("effect1" | PacketHelpers.encodedWideString) :: ("effect2" | PacketHelpers.encodedWideString) - ).as[Shortcut] + ).as[Shortcut] } object CreateShortcutMessage extends Marshallable[CreateShortcutMessage] { - implicit val codec : Codec[CreateShortcutMessage] = ( + implicit val codec: Codec[CreateShortcutMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("slot" | uint8L) :: ("unk" | uint8L) :: (("addShortcut" | bool) >>:~ { value => - conditional(value, "shortcut" | Shortcut.codec).hlist - }) - ).as[CreateShortcutMessage] + conditional(value, "shortcut" | Shortcut.codec).hlist + }) + ).as[CreateShortcutMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DamageFeedbackMessage.scala b/common/src/main/scala/net/psforever/packet/game/DamageFeedbackMessage.scala index c58ff215..181a67b2 100644 --- a/common/src/main/scala/net/psforever/packet/game/DamageFeedbackMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DamageFeedbackMessage.scala @@ -23,27 +23,28 @@ import shapeless.{::, HNil} * @param unk5 the amount of damage * @param unk6 na */ -final case class DamageFeedbackMessage(unk1 : Int, - unk2 : Boolean, - unk2a : Option[PlanetSideGUID], - unk2b : Option[String], - unk2c : Option[Int], - unk3 : Boolean, - unk3a : Option[PlanetSideGUID], - unk3b : Option[String], - unk3c : Option[Int], - unk3d : Option[Int], - unk4 : Int, - unk5 : Long, - unk6 : Int) - extends PlanetSideGamePacket { +final case class DamageFeedbackMessage( + unk1: Int, + unk2: Boolean, + unk2a: Option[PlanetSideGUID], + unk2b: Option[String], + unk2c: Option[Int], + unk3: Boolean, + unk3a: Option[PlanetSideGUID], + unk3b: Option[String], + unk3c: Option[Int], + unk3d: Option[Int], + unk4: Int, + unk5: Long, + unk6: Int +) extends PlanetSideGamePacket { assert( { val unk2aEmpty = unk2a.isEmpty val unk2bEmpty = unk2b.isEmpty val unk2cEmpty = unk2c.isEmpty - if(unk2a.nonEmpty) unk2bEmpty && unk2cEmpty - else if(unk2b.nonEmpty) unk2 && unk2aEmpty && unk2cEmpty + if (unk2a.nonEmpty) unk2bEmpty && unk2cEmpty + else if (unk2b.nonEmpty) unk2 && unk2aEmpty && unk2cEmpty else unk2aEmpty && !unk2 && unk2bEmpty && unk2c.nonEmpty } ) @@ -52,8 +53,8 @@ final case class DamageFeedbackMessage(unk1 : Int, val unk3aEmpty = unk3a.isEmpty val unk3bEmpty = unk3b.isEmpty val unk3cEmpty = unk3c.isEmpty - if(unk3a.nonEmpty) unk3bEmpty && unk3cEmpty - else if(unk3b.nonEmpty) unk3 && unk3aEmpty && unk3cEmpty + if (unk3a.nonEmpty) unk3bEmpty && unk3cEmpty + else if (unk3b.nonEmpty) unk3 && unk3aEmpty && unk3cEmpty else unk3aEmpty && !unk3 && unk3bEmpty && unk3c.nonEmpty } ) @@ -65,28 +66,31 @@ final case class DamageFeedbackMessage(unk1 : Int, } object DamageFeedbackMessage extends Marshallable[DamageFeedbackMessage] { - implicit val codec : Codec[DamageFeedbackMessage] = ( + implicit val codec: Codec[DamageFeedbackMessage] = ( ("unk1" | uint4) :: (bool >>:~ { u2 => - bool >>:~ { u3 => - ("unk2a" | conditional(u2, PlanetSideGUID.codec)) :: - (("unk2b" | conditional(!u2 && u3, PacketHelpers.encodedWideStringAligned(6))) >>:~ { u2b => - ("unk2c" | conditional(!u2 && !u3, uintL(11))) :: - (bool >>:~ { u5 => - bool >>:~ { u6 => - ("unk3a" | conditional(u5, PlanetSideGUID.codec)) :: - ("unk3b" | conditional(!u5 && u6, PacketHelpers.encodedWideStringAligned( if(u2b.nonEmpty) 3 else 1 ))) :: - ("unk3c" | conditional(!u5 && !u6, uintL(11))) :: - ("unk3d" | conditional(!u5, uint2)) :: - ("unk4" | uint(3)) :: - ("unk5" | uint32L) :: - ("unk6" | uint2) - } - }) - }) - } - }) - ).xmap[DamageFeedbackMessage] ( + bool >>:~ { u3 => + ("unk2a" | conditional(u2, PlanetSideGUID.codec)) :: + (("unk2b" | conditional(!u2 && u3, PacketHelpers.encodedWideStringAligned(6))) >>:~ { u2b => + ("unk2c" | conditional(!u2 && !u3, uintL(11))) :: + (bool >>:~ { u5 => + bool >>:~ { u6 => + ("unk3a" | conditional(u5, PlanetSideGUID.codec)) :: + ("unk3b" | conditional( + !u5 && u6, + PacketHelpers.encodedWideStringAligned(if (u2b.nonEmpty) 3 else 1) + )) :: + ("unk3c" | conditional(!u5 && !u6, uintL(11))) :: + ("unk3d" | conditional(!u5, uint2)) :: + ("unk4" | uint(3)) :: + ("unk5" | uint32L) :: + ("unk6" | uint2) + } + }) + }) + } + }) + ).xmap[DamageFeedbackMessage]( { case u1 :: _ :: u2 :: u2a :: u2b :: u2c :: _ :: u3 :: u3a :: u3b :: u3c :: u3d :: u4 :: u5 :: u6 :: HNil => DamageFeedbackMessage(u1, u2, u2a, u2b, u2c, u3, u3a, u3b, u3c, u3d, u4, u5, u6) diff --git a/common/src/main/scala/net/psforever/packet/game/DamageMessage.scala b/common/src/main/scala/net/psforever/packet/game/DamageMessage.scala index 7ce89b8d..3d55fa69 100644 --- a/common/src/main/scala/net/psforever/packet/game/DamageMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DamageMessage.scala @@ -2,7 +2,7 @@ package net.psforever.packet.game import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} -import net.psforever.types.{Angular, PlanetSideGUID} +import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ @@ -13,21 +13,18 @@ import scodec.codecs._ * @param guid2 na * @param unk2 na */ -final case class DamageMessage(guid1 : PlanetSideGUID, - unk1 : Int, - guid2 : PlanetSideGUID, - unk2 : Boolean) - extends PlanetSideGamePacket { +final case class DamageMessage(guid1: PlanetSideGUID, unk1: Int, guid2: PlanetSideGUID, unk2: Boolean) + extends PlanetSideGamePacket { type Packet = DamageMessage def opcode = GamePacketOpcode.DamageMessage def encode = DamageMessage.encode(this) } object DamageMessage extends Marshallable[DamageMessage] { - implicit val codec : Codec[DamageMessage] = ( + implicit val codec: Codec[DamageMessage] = ( ("guid1" | PlanetSideGUID.codec) :: ("unk1" | uint8) :: ("guid1" | PlanetSideGUID.codec) :: ("unk2" | bool) - ).as[DamageMessage] + ).as[DamageMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DamageWithPositionMessage.scala b/common/src/main/scala/net/psforever/packet/game/DamageWithPositionMessage.scala index 9dfe2c41..8f2a09e1 100644 --- a/common/src/main/scala/net/psforever/packet/game/DamageWithPositionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DamageWithPositionMessage.scala @@ -17,16 +17,14 @@ import scodec.codecs._ * @param pos the position * @see `HitHint` */ -final case class DamageWithPositionMessage(unk : Int, - pos : Vector3) - extends PlanetSideGamePacket { +final case class DamageWithPositionMessage(unk: Int, pos: Vector3) extends PlanetSideGamePacket { type Packet = DamageWithPositionMessage def opcode = GamePacketOpcode.DamageWithPositionMessage def encode = DamageWithPositionMessage.encode(this) } object DamageWithPositionMessage extends Marshallable[DamageWithPositionMessage] { - implicit val codec : Codec[DamageWithPositionMessage] = ( + implicit val codec: Codec[DamageWithPositionMessage] = ( ("unk" | uint8L) :: ("pos" | Vector3.codec_pos) ).as[DamageWithPositionMessage] diff --git a/common/src/main/scala/net/psforever/packet/game/DataChallengeMessage.scala b/common/src/main/scala/net/psforever/packet/game/DataChallengeMessage.scala index 9ba4decf..6e3e4d1d 100644 --- a/common/src/main/scala/net/psforever/packet/game/DataChallengeMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DataChallengeMessage.scala @@ -10,14 +10,12 @@ import scodec.bits.BitVector * @param attribute na * @param value na */ -final case class DataChallengeMessage(attribute : String, - value : Long) - extends PlanetSideGamePacket { +final case class DataChallengeMessage(attribute: String, value: Long) extends PlanetSideGamePacket { type Packet = DataChallengeMessage - def opcode : GamePacketOpcode.Value = GamePacketOpcode.DataChallengeMessage - def encode : Attempt[BitVector] = DataChallengeMessage.encode(this) + def opcode: GamePacketOpcode.Value = GamePacketOpcode.DataChallengeMessage + def encode: Attempt[BitVector] = DataChallengeMessage.encode(this) } object DataChallengeMessage extends Marshallable[DataChallengeMessage] { - implicit val codec : Codec[DataChallengeMessage] = DataChallenge.codec.as[DataChallengeMessage] + implicit val codec: Codec[DataChallengeMessage] = DataChallenge.codec.as[DataChallengeMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DataChallengeMessageResp.scala b/common/src/main/scala/net/psforever/packet/game/DataChallengeMessageResp.scala index d4d1f80b..a9bdb704 100644 --- a/common/src/main/scala/net/psforever/packet/game/DataChallengeMessageResp.scala +++ b/common/src/main/scala/net/psforever/packet/game/DataChallengeMessageResp.scala @@ -10,14 +10,12 @@ import scodec.bits.BitVector * @param attribute na * @param value na */ -final case class DataChallengeMessageResp(attribute : String, - value : Long) - extends PlanetSideGamePacket { +final case class DataChallengeMessageResp(attribute: String, value: Long) extends PlanetSideGamePacket { type Packet = DataChallengeMessageResp - def opcode : GamePacketOpcode.Value = GamePacketOpcode.DataChallengeMessageResp - def encode : Attempt[BitVector] = DataChallengeMessageResp.encode(this) + def opcode: GamePacketOpcode.Value = GamePacketOpcode.DataChallengeMessageResp + def encode: Attempt[BitVector] = DataChallengeMessageResp.encode(this) } object DataChallengeMessageResp extends Marshallable[DataChallengeMessageResp] { - implicit val codec : Codec[DataChallengeMessageResp] = DataChallenge.codec.as[DataChallengeMessageResp] + implicit val codec: Codec[DataChallengeMessageResp] = DataChallenge.codec.as[DataChallengeMessageResp] } diff --git a/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala b/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala index 5a80cd6b..28e17199 100644 --- a/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala @@ -13,21 +13,18 @@ import scodec.codecs._ * @param u1 na - maybe a delay ? * @param u2 na */ -final case class DelayedPathMountMsg(player_guid : PlanetSideGUID, - vehicle_guid : PlanetSideGUID, - u1 : Int, - u2 : Boolean) - extends PlanetSideGamePacket { +final case class DelayedPathMountMsg(player_guid: PlanetSideGUID, vehicle_guid: PlanetSideGUID, u1: Int, u2: Boolean) + extends PlanetSideGamePacket { type Packet = DelayedPathMountMsg def opcode = GamePacketOpcode.DelayedPathMountMsg def encode = DelayedPathMountMsg.encode(this) } object DelayedPathMountMsg extends Marshallable[DelayedPathMountMsg] { - implicit val codec : Codec[DelayedPathMountMsg] = ( + implicit val codec: Codec[DelayedPathMountMsg] = ( ("player_guid" | PlanetSideGUID.codec) :: ("vehicle_guid" | PlanetSideGUID.codec) :: ("u1" | uint8L) :: ("u2" | bool) - ).as[DelayedPathMountMsg] + ).as[DelayedPathMountMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/DensityLevelUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/DensityLevelUpdateMessage.scala index 957367ae..e3abe796 100644 --- a/common/src/main/scala/net/psforever/packet/game/DensityLevelUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DensityLevelUpdateMessage.scala @@ -12,34 +12,30 @@ import shapeless.{::, HNil} * @param building_id the building * @param density na */ -final case class DensityLevelUpdateMessage(zone_id : Int, - building_id : Int, - density : List[Int]) - extends PlanetSideGamePacket { +final case class DensityLevelUpdateMessage(zone_id: Int, building_id: Int, density: List[Int]) + extends PlanetSideGamePacket { type Packet = DensityLevelUpdateMessage def opcode = GamePacketOpcode.DensityLevelUpdateMessage def encode = DensityLevelUpdateMessage.encode(this) } object DensityLevelUpdateMessage extends Marshallable[DensityLevelUpdateMessage] { - implicit val codec : Codec[DensityLevelUpdateMessage] = ( + implicit val codec: Codec[DensityLevelUpdateMessage] = ( ("zone_id" | uint16L) :: ("building_id" | uint16L) :: ("density" | PacketHelpers.listOfNSized(8, uint(3))) - ).exmap[DensityLevelUpdateMessage] ( + ).exmap[DensityLevelUpdateMessage]( { case a :: b :: c :: HNil => Attempt.Successful(DensityLevelUpdateMessage(a, b, c)) }, { case DensityLevelUpdateMessage(a, b, c) => - if(c.length != 8) { + if (c.length != 8) { Attempt.Failure(Err("list must have 8 entries")) - } - else if(c.count(i => { i < 0 || i > 7 }) > 0) { + } else if (c.count(i => { i < 0 || i > 7 }) > 0) { Attempt.Failure(Err("list entries must be 0-7 inclusive")) - } - else { + } else { Attempt.Successful(a :: b :: c :: HNil) } } diff --git a/common/src/main/scala/net/psforever/packet/game/DeployObjectMessage.scala b/common/src/main/scala/net/psforever/packet/game/DeployObjectMessage.scala index 7a39c427..7c2d8d26 100644 --- a/common/src/main/scala/net/psforever/packet/game/DeployObjectMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DeployObjectMessage.scala @@ -19,26 +19,21 @@ import shapeless.{::, HNil} * @param orient the angle of orientation * @param unk2 na */ -final case class DeployObjectMessage(object_guid : PlanetSideGUID, - unk1 : Long, - pos : Vector3, - orient : Vector3, - unk2 : Long) - extends PlanetSideGamePacket { +final case class DeployObjectMessage(object_guid: PlanetSideGUID, unk1: Long, pos: Vector3, orient: Vector3, unk2: Long) + extends PlanetSideGamePacket { type Packet = DeployObjectMessage def opcode = GamePacketOpcode.DeployObjectMessage def encode = DeployObjectMessage.encode(this) } object DeployObjectMessage extends Marshallable[DeployObjectMessage] { - implicit val codec : Codec[DeployObjectMessage] = ( + implicit val codec: Codec[DeployObjectMessage] = ( ("object_guid" | PlanetSideGUID.codec) :: ("unk1" | uint32L) :: ("pos" | Vector3.codec_pos) :: (("roll" | Angular.codec_roll) :: ("pitch" | Angular.codec_pitch) :: - ("yaw" | Angular.codec_yaw()) - ).xmap[Vector3] ( + ("yaw" | Angular.codec_yaw())).xmap[Vector3]( { case x :: y :: z :: HNil => Vector3(x, y, z) @@ -47,7 +42,7 @@ object DeployObjectMessage extends Marshallable[DeployObjectMessage] { case Vector3(x, y, z) => x :: y :: z :: HNil } - ) :: + ) :: ("unk2" | uint32L) - ).as[DeployObjectMessage] + ).as[DeployObjectMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DeployRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/DeployRequestMessage.scala index b87c58b4..e7949618 100644 --- a/common/src/main/scala/net/psforever/packet/game/DeployRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DeployRequestMessage.scala @@ -28,37 +28,37 @@ import scodec.codecs._ * @param unk3 na * @param pos the position where the object will deploy itself */ -final case class DeployRequestMessage(player_guid : PlanetSideGUID, - vehicle_guid : PlanetSideGUID, - deploy_state : DriveState.Value, - unk2 : Int, - unk3 : Boolean, - pos : Vector3) - extends PlanetSideGamePacket { +final case class DeployRequestMessage( + player_guid: PlanetSideGUID, + vehicle_guid: PlanetSideGUID, + deploy_state: DriveState.Value, + unk2: Int, + unk3: Boolean, + pos: Vector3 +) extends PlanetSideGamePacket { type Packet = DeployRequestMessage def opcode = GamePacketOpcode.DeployRequestMessage def encode = DeployRequestMessage.encode(this) } object DeployRequestMessage extends Marshallable[DeployRequestMessage] { - private val driveState3u = uint(3).xmap[DriveState.Value] ( + private val driveState3u = uint(3).xmap[DriveState.Value]( n => DriveState(n), n => { - if(n.id > 7) { + if (n.id > 7) { 0 - } - else { + } else { n.id } } ) - implicit val codec : Codec[DeployRequestMessage] = ( + implicit val codec: Codec[DeployRequestMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("vehicle_guid" | PlanetSideGUID.codec) :: ("deploy_state" | driveState3u) :: ("unk2" | uint(5)) :: ("unk3" | bool) :: ("pos" | Vector3.codec_pos) - ).as[DeployRequestMessage] + ).as[DeployRequestMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DeployableObjectsInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/DeployableObjectsInfoMessage.scala index 8c628000..98140f44 100644 --- a/common/src/main/scala/net/psforever/packet/game/DeployableObjectsInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DeployableObjectsInfoMessage.scala @@ -12,9 +12,7 @@ import scodec.codecs._ object DeploymentAction extends Enumeration { type Type = Value - val Dismiss, - Build - = Value + val Dismiss, Build = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(1)) //no bool overload } @@ -25,19 +23,8 @@ object DeploymentAction extends Enumeration { object DeployableIcon extends Enumeration { type Type = Value - val Boomer, - HEMine, - MotionAlarmSensor, - SpitfireTurret, - RouterTelepad, - DisruptorMine, - ShadowTurret, - CerebusTurret, - TRAP, - AegisShieldGenerator, - FieldTurret, - SensorDisruptor - = Value + val Boomer, HEMine, MotionAlarmSensor, SpitfireTurret, RouterTelepad, DisruptorMine, ShadowTurret, CerebusTurret, + TRAP, AegisShieldGenerator, FieldTurret, SensorDisruptor = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } @@ -49,10 +36,12 @@ object DeployableIcon extends Enumeration { * @param pos the position of the deployable in the world (and on the map) * @param player_guid the player who is the owner */ -final case class DeployableInfo(object_guid : PlanetSideGUID, - icon : DeployableIcon.Value, - pos : Vector3, - player_guid : PlanetSideGUID) +final case class DeployableInfo( + object_guid: PlanetSideGUID, + icon: DeployableIcon.Value, + pos: Vector3, + player_guid: PlanetSideGUID +) /** * Dispatched by the server to inform the client of a change in deployable items and that the map should be updated.
@@ -74,36 +63,36 @@ final case class DeployableInfo(object_guid : PlanetSideGUID, * @param action how the entries in the following `List` are affected * @param deployables a `List` of information regarding deployable items */ -final case class DeployableObjectsInfoMessage(action : DeploymentAction.Value, - deployables : List[DeployableInfo] - ) extends PlanetSideGamePacket { +final case class DeployableObjectsInfoMessage(action: DeploymentAction.Value, deployables: List[DeployableInfo]) + extends PlanetSideGamePacket { type Packet = DeployableObjectsInfoMessage def opcode = GamePacketOpcode.DeployableObjectsInfoMessage def encode = DeployableObjectsInfoMessage.encode(this) } object DeployableObjectsInfoMessage extends Marshallable[DeployableObjectsInfoMessage] { + /** * Overloaded constructor that accepts a single `DeployableInfo` entry (and turns it into a `List`). * @param action how the following entry is affected * @param info the singular entry of a deployable item * @return a `DeployableObjectsInfoMessage` object */ - def apply(action : DeploymentAction.Type, info : DeployableInfo) : DeployableObjectsInfoMessage = + def apply(action: DeploymentAction.Type, info: DeployableInfo): DeployableObjectsInfoMessage = new DeployableObjectsInfoMessage(action, info :: Nil) /** * `Codec` for `DeployableInfo` data. */ - private val info_codec : Codec[DeployableInfo] = ( + private val info_codec: Codec[DeployableInfo] = ( ("object_guid" | PlanetSideGUID.codec) :: ("icon" | DeployableIcon.codec) :: ("pos" | Vector3.codec_pos) :: ("player_guid" | PlanetSideGUID.codec) ).as[DeployableInfo] - implicit val codec : Codec[DeployableObjectsInfoMessage] = ( + implicit val codec: Codec[DeployableObjectsInfoMessage] = ( ("action" | DeploymentAction.codec) :: ("deployables" | PacketHelpers.listOfNAligned(uint32L, 0, info_codec)) - ).as[DeployableObjectsInfoMessage] + ).as[DeployableObjectsInfoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DestroyDisplayMessage.scala b/common/src/main/scala/net/psforever/packet/game/DestroyDisplayMessage.scala index f8dc51d8..47db8447 100644 --- a/common/src/main/scala/net/psforever/packet/game/DestroyDisplayMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DestroyDisplayMessage.scala @@ -1,7 +1,6 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.objects.ballistics.SourceEntry import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} import net.psforever.types.PlanetSideEmpire import scodec.Codec @@ -43,25 +42,25 @@ import scodec.codecs._ * @param victim_empire the empire affiliation of the victim * @param victim_in_vehicle true, if the victim was in a vehicle when he was killed; false, otherwise */ -final case class DestroyDisplayMessage(killer : String, - killer_charId : Long, - killer_empire : PlanetSideEmpire.Value, - killer_in_vehicle : Boolean, - unk : Int, - method : Int, - victim : String, - victim_charId : Long, - victim_empire : PlanetSideEmpire.Value, - victim_in_vehicle : Boolean -) - extends PlanetSideGamePacket { +final case class DestroyDisplayMessage( + killer: String, + killer_charId: Long, + killer_empire: PlanetSideEmpire.Value, + killer_in_vehicle: Boolean, + unk: Int, + method: Int, + victim: String, + victim_charId: Long, + victim_empire: PlanetSideEmpire.Value, + victim_in_vehicle: Boolean +) extends PlanetSideGamePacket { type Packet = DestroyDisplayMessage def opcode = GamePacketOpcode.DestroyDisplayMessage def encode = DestroyDisplayMessage.encode(this) } object DestroyDisplayMessage extends Marshallable[DestroyDisplayMessage] { - implicit val codec : Codec[DestroyDisplayMessage] = ( + implicit val codec: Codec[DestroyDisplayMessage] = ( ("killer" | PacketHelpers.encodedWideString) :: ("killer_charId" | ulongL(32)) :: ("killer_empire" | PlanetSideEmpire.codec) :: @@ -72,5 +71,5 @@ object DestroyDisplayMessage extends Marshallable[DestroyDisplayMessage] { ("victim_charId" | ulongL(32)) :: ("victim_empire" | PlanetSideEmpire.codec) :: ("victim_in_vehicle" | bool) - ).as[DestroyDisplayMessage] + ).as[DestroyDisplayMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DestroyMessage.scala b/common/src/main/scala/net/psforever/packet/game/DestroyMessage.scala index 361bb96e..44026d6a 100644 --- a/common/src/main/scala/net/psforever/packet/game/DestroyMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DestroyMessage.scala @@ -6,21 +6,18 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scodec.Codec import scodec.codecs._ -final case class DestroyMessage(unk1 : PlanetSideGUID, - unk2 : PlanetSideGUID, - unk3 : PlanetSideGUID, - pos : Vector3) - extends PlanetSideGamePacket { +final case class DestroyMessage(unk1: PlanetSideGUID, unk2: PlanetSideGUID, unk3: PlanetSideGUID, pos: Vector3) + extends PlanetSideGamePacket { type Packet = DestroyMessage def opcode = GamePacketOpcode.DestroyMessage def encode = DestroyMessage.encode(this) } object DestroyMessage extends Marshallable[DestroyMessage] { - implicit val codec : Codec[DestroyMessage] = ( + implicit val codec: Codec[DestroyMessage] = ( ("unk1" | PlanetSideGUID.codec) :: ("unk2" | PlanetSideGUID.codec) :: ("unk3" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) - ).as[DestroyMessage] + ).as[DestroyMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DisconnectMessage.scala b/common/src/main/scala/net/psforever/packet/game/DisconnectMessage.scala index 4c1ec29b..ba05d209 100644 --- a/common/src/main/scala/net/psforever/packet/game/DisconnectMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DisconnectMessage.scala @@ -19,28 +19,26 @@ import scodec.codecs._ * @param unk2 na * @param unk3 na */ -final case class DisconnectMessage(msg : String, - unk2 : String, - unk3 : String) - extends PlanetSideGamePacket { +final case class DisconnectMessage(msg: String, unk2: String, unk3: String) extends PlanetSideGamePacket { type Packet = DisconnectMessage def opcode = GamePacketOpcode.DisconnectMessage def encode = DisconnectMessage.encode(this) } object DisconnectMessage extends Marshallable[DisconnectMessage] { + /** * Overloaded constructor that focuses only on the visible disconnection message * @param msg the displayed message * @return a `DisconnectMessage` object */ - def apply(msg : String) : DisconnectMessage = { + def apply(msg: String): DisconnectMessage = { new DisconnectMessage(msg, "", "") } - implicit val codec : Codec[DisconnectMessage] = ( + implicit val codec: Codec[DisconnectMessage] = ( ("msg" | PacketHelpers.encodedString) :: ("unk2" | PacketHelpers.encodedString) :: ("unk3" | PacketHelpers.encodedString) - ).as[DisconnectMessage] + ).as[DisconnectMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DismountBuildingMsg.scala b/common/src/main/scala/net/psforever/packet/game/DismountBuildingMsg.scala index 4bdacad6..38554677 100644 --- a/common/src/main/scala/net/psforever/packet/game/DismountBuildingMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/DismountBuildingMsg.scala @@ -13,17 +13,16 @@ import scodec.codecs._ * @param player_guid the player * @param building_guid the building */ -final case class DismountBuildingMsg(player_guid : PlanetSideGUID, - building_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class DismountBuildingMsg(player_guid: PlanetSideGUID, building_guid: PlanetSideGUID) + extends PlanetSideGamePacket { type Packet = DismountBuildingMsg def opcode = GamePacketOpcode.DismountBuildingMsg def encode = DismountBuildingMsg.encode(this) } object DismountBuildingMsg extends Marshallable[DismountBuildingMsg] { - implicit val codec : Codec[DismountBuildingMsg] = ( + implicit val codec: Codec[DismountBuildingMsg] = ( ("player_guid" | PlanetSideGUID.codec) :: ("building_guid" | PlanetSideGUID.codec) - ).as[DismountBuildingMsg] + ).as[DismountBuildingMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/DismountVehicleCargoMsg.scala b/common/src/main/scala/net/psforever/packet/game/DismountVehicleCargoMsg.scala index 43bd571a..18817aae 100644 --- a/common/src/main/scala/net/psforever/packet/game/DismountVehicleCargoMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/DismountVehicleCargoMsg.scala @@ -14,8 +14,13 @@ import scodec.codecs._ * @param requestedByPassenger If a passenger of the vehicle in the cargo bay requests dismount this bit will be set * @param kicked If the vehicle was kicked by the cargo vehicle pilot */ -final case class DismountVehicleCargoMsg(player_guid : PlanetSideGUID, vehicle_guid: PlanetSideGUID, bailed: Boolean, requestedByPassenger: Boolean, kicked: Boolean) - extends PlanetSideGamePacket { +final case class DismountVehicleCargoMsg( + player_guid: PlanetSideGUID, + vehicle_guid: PlanetSideGUID, + bailed: Boolean, + requestedByPassenger: Boolean, + kicked: Boolean +) extends PlanetSideGamePacket { type Packet = DismountVehicleCargoMsg def opcode = GamePacketOpcode.DismountVehicleCargoMsg @@ -24,11 +29,11 @@ final case class DismountVehicleCargoMsg(player_guid : PlanetSideGUID, vehicle_g } object DismountVehicleCargoMsg extends Marshallable[DismountVehicleCargoMsg] { - implicit val codec : Codec[DismountVehicleCargoMsg] = ( + implicit val codec: Codec[DismountVehicleCargoMsg] = ( ("player_guid" | PlanetSideGUID.codec) :: ("vehicle_guid" | PlanetSideGUID.codec) :: ("unk3" | bool) :: // bailed? ("unk4" | bool) :: ("unk5" | bool) - ).as[DismountVehicleCargoMsg] -} \ No newline at end of file + ).as[DismountVehicleCargoMsg] +} diff --git a/common/src/main/scala/net/psforever/packet/game/DismountVehicleMsg.scala b/common/src/main/scala/net/psforever/packet/game/DismountVehicleMsg.scala index 6f70b114..f2a43466 100644 --- a/common/src/main/scala/net/psforever/packet/game/DismountVehicleMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/DismountVehicleMsg.scala @@ -12,19 +12,17 @@ import net.psforever.types.{BailType, PlanetSideGUID} * @param bailType The dismount action e.g. normal dismount, kicked by owner, bailed * @param wasKickedByDriver Seems to be true if a passenger was manually kicked by the vehicle owner */ -final case class DismountVehicleMsg(player_guid : PlanetSideGUID, - bailType : BailType.Value, - wasKickedByDriver : Boolean) - extends PlanetSideGamePacket { +final case class DismountVehicleMsg(player_guid: PlanetSideGUID, bailType: BailType.Value, wasKickedByDriver: Boolean) + extends PlanetSideGamePacket { type Packet = DismountVehicleMsg def opcode = GamePacketOpcode.DismountVehicleMsg def encode = DismountVehicleMsg.encode(this) } object DismountVehicleMsg extends Marshallable[DismountVehicleMsg] { - implicit val codec : Codec[DismountVehicleMsg] = ( + implicit val codec: Codec[DismountVehicleMsg] = ( ("player_guid" | PlanetSideGUID.codec) :: ("bailType" | BailType.codec) :: ("wasKickedByDriver" | bool) - ).as[DismountVehicleMsg] + ).as[DismountVehicleMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/DisplayedAwardMessage.scala b/common/src/main/scala/net/psforever/packet/game/DisplayedAwardMessage.scala index bce6d8f9..f3144199 100644 --- a/common/src/main/scala/net/psforever/packet/game/DisplayedAwardMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DisplayedAwardMessage.scala @@ -12,11 +12,8 @@ import scodec.codecs._ object RibbonBarsSlot extends Enumeration { type Type = Value - val Top, - Middle, - Bottom, - TermOfService //technically,the slot above "Top" - = Value + val Top, Middle, Bottom, TermOfService //technically,the slot above "Top" + = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } @@ -42,19 +39,20 @@ object RibbonBarsSlot extends Enumeration { * @see `RibbonBars` * @see `MeritCommendation` */ -final case class DisplayedAwardMessage(player_guid : PlanetSideGUID, - ribbon : MeritCommendation.Value = MeritCommendation.None, - bar : RibbonBarsSlot.Value = RibbonBarsSlot.TermOfService) - extends PlanetSideGamePacket { +final case class DisplayedAwardMessage( + player_guid: PlanetSideGUID, + ribbon: MeritCommendation.Value = MeritCommendation.None, + bar: RibbonBarsSlot.Value = RibbonBarsSlot.TermOfService +) extends PlanetSideGamePacket { type Packet = DisplayedAwardMessage def opcode = GamePacketOpcode.DisplayedAwardMessage def encode = DisplayedAwardMessage.encode(this) } object DisplayedAwardMessage extends Marshallable[DisplayedAwardMessage] { - implicit val codec : Codec[DisplayedAwardMessage] = ( + implicit val codec: Codec[DisplayedAwardMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("ribbon" | MeritCommendation.codec) :: ("bar" | RibbonBarsSlot.codec) - ).as[DisplayedAwardMessage] + ).as[DisplayedAwardMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DropItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/DropItemMessage.scala index ee44d327..439f8d19 100644 --- a/common/src/main/scala/net/psforever/packet/game/DropItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DropItemMessage.scala @@ -1,7 +1,7 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ @@ -18,15 +18,14 @@ import scodec.codecs._ * This packet is complemented by an `ObjectDetachMessage` packet from the server that performs the actual "dropping." * @param item_guid the item to be dropped */ -final case class DropItemMessage(item_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class DropItemMessage(item_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = DropItemMessage def opcode = GamePacketOpcode.DropItemMessage def encode = DropItemMessage.encode(this) } object DropItemMessage extends Marshallable[DropItemMessage] { - implicit val codec : Codec[DropItemMessage] = ( - "item_guid" | PlanetSideGUID.codec - ).as[DropItemMessage] + implicit val codec: Codec[DropItemMessage] = ( + "item_guid" | PlanetSideGUID.codec + ).as[DropItemMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/DroppodFreefallingMessage.scala b/common/src/main/scala/net/psforever/packet/game/DroppodFreefallingMessage.scala index 2ba2c2b1..c683e8ed 100644 --- a/common/src/main/scala/net/psforever/packet/game/DroppodFreefallingMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/DroppodFreefallingMessage.scala @@ -7,20 +7,21 @@ import scodec.Codec import scodec.codecs._ import shapeless.{::, HNil} -final case class DroppodFreefallingMessage(guid : PlanetSideGUID, - pos : Vector3, - vel : Vector3, - pos2 : Vector3, - orientation1 : Vector3, - orientation2 : Vector3) - extends PlanetSideGamePacket { +final case class DroppodFreefallingMessage( + guid: PlanetSideGUID, + pos: Vector3, + vel: Vector3, + pos2: Vector3, + orientation1: Vector3, + orientation2: Vector3 +) extends PlanetSideGamePacket { type Packet = DroppodFreefallingMessage def opcode = GamePacketOpcode.DroppodFreefallingMessage def encode = DroppodFreefallingMessage.encode(this) } object DroppodFreefallingMessage extends Marshallable[DroppodFreefallingMessage] { - implicit val codec : Codec[DroppodFreefallingMessage] = ( + implicit val codec: Codec[DroppodFreefallingMessage] = ( ("guid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_float) :: ("vel" | Vector3.codec_float) :: @@ -31,7 +32,7 @@ object DroppodFreefallingMessage extends Marshallable[DroppodFreefallingMessage] ("unkD" | Angular.codec_roll) :: ("unkE" | Angular.codec_pitch) :: ("unkF" | Angular.codec_yaw()) - ).xmap[DroppodFreefallingMessage]( + ).xmap[DroppodFreefallingMessage]( { case guid :: pos :: vel :: pos2 :: uA :: uB :: uC :: uD :: uE :: uF :: HNil => DroppodFreefallingMessage(guid, pos, vel, pos2, Vector3(uA, uB, uC), Vector3(uD, uE, uF)) diff --git a/common/src/main/scala/net/psforever/packet/game/EmoteMsg.scala b/common/src/main/scala/net/psforever/packet/game/EmoteMsg.scala index 1bd9a8a7..b7d9ccd3 100644 --- a/common/src/main/scala/net/psforever/packet/game/EmoteMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/EmoteMsg.scala @@ -6,17 +6,15 @@ import net.psforever.types.{EmoteType, PlanetSideGUID} import scodec.Codec import scodec.codecs._ -final case class EmoteMsg(avatar_guid : PlanetSideGUID, - emote : EmoteType.Value) - extends PlanetSideGamePacket { +final case class EmoteMsg(avatar_guid: PlanetSideGUID, emote: EmoteType.Value) extends PlanetSideGamePacket { type Packet = EmoteMsg def opcode = GamePacketOpcode.EmoteMsg def encode = EmoteMsg.encode(this) } object EmoteMsg extends Marshallable[EmoteMsg] { - implicit val codec : Codec[EmoteMsg] = ( - ("avatar_guid" | PlanetSideGUID.codec) :: - ("emote" | EmoteType.codec) - ).as[EmoteMsg] + implicit val codec: Codec[EmoteMsg] = ( + ("avatar_guid" | PlanetSideGUID.codec) :: + ("emote" | EmoteType.codec) + ).as[EmoteMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/ExperienceAddedMessage.scala b/common/src/main/scala/net/psforever/packet/game/ExperienceAddedMessage.scala index 051ccca4..22a6fd62 100644 --- a/common/src/main/scala/net/psforever/packet/game/ExperienceAddedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ExperienceAddedMessage.scala @@ -19,17 +19,15 @@ import scodec.codecs._ * @param unk defaults to `true` for effect; * if `false`, the number of experience points in the message will be blanked */ -final case class ExperienceAddedMessage(exp : Int, - unk : Boolean = true) - extends PlanetSideGamePacket { +final case class ExperienceAddedMessage(exp: Int, unk: Boolean = true) extends PlanetSideGamePacket { type Packet = ExperienceAddedMessage def opcode = GamePacketOpcode.ExperienceAddedMessage def encode = ExperienceAddedMessage.encode(this) } object ExperienceAddedMessage extends Marshallable[ExperienceAddedMessage] { - implicit val codec : Codec[ExperienceAddedMessage] = ( + implicit val codec: Codec[ExperienceAddedMessage] = ( ("cep" | uintL(15)) :: ("unk" | bool) - ).as[ExperienceAddedMessage] + ).as[ExperienceAddedMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/FacilityBenefitShieldChargeRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/FacilityBenefitShieldChargeRequestMessage.scala index 90581838..f8fc740b 100644 --- a/common/src/main/scala/net/psforever/packet/game/FacilityBenefitShieldChargeRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/FacilityBenefitShieldChargeRequestMessage.scala @@ -12,14 +12,13 @@ import scodec.codecs._ * The vehicle that is being driven will not have perfect fully-charged shields at the time. * @param vehicle_guid the vehicle whose shield is being charged */ -final case class FacilityBenefitShieldChargeRequestMessage(vehicle_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class FacilityBenefitShieldChargeRequestMessage(vehicle_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = FacilityBenefitShieldChargeRequestMessage def opcode = GamePacketOpcode.FacilityBenefitShieldChargeRequestMessage def encode = FacilityBenefitShieldChargeRequestMessage.encode(this) } object FacilityBenefitShieldChargeRequestMessage extends Marshallable[FacilityBenefitShieldChargeRequestMessage] { - implicit val codec : Codec[FacilityBenefitShieldChargeRequestMessage] = + implicit val codec: Codec[FacilityBenefitShieldChargeRequestMessage] = ("vehicle_guid" | PlanetSideGUID.codec).as[FacilityBenefitShieldChargeRequestMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/FavoritesMessage.scala b/common/src/main/scala/net/psforever/packet/game/FavoritesMessage.scala index 7410cd38..b31b95f1 100644 --- a/common/src/main/scala/net/psforever/packet/game/FavoritesMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/FavoritesMessage.scala @@ -39,18 +39,20 @@ import shapeless.{::, HNil} * @param label the identifier for this entry * @param armor the type of exo-suit, if an Infantry loadout */ -final case class FavoritesMessage(list : LoadoutType.Value, - player_guid : PlanetSideGUID, - line : Int, - label : String, - armor : Option[Int]) - extends PlanetSideGamePacket { +final case class FavoritesMessage( + list: LoadoutType.Value, + player_guid: PlanetSideGUID, + line: Int, + label: String, + armor: Option[Int] +) extends PlanetSideGamePacket { type Packet = FavoritesMessage def opcode = GamePacketOpcode.FavoritesMessage def encode = FavoritesMessage.encode(this) } object FavoritesMessage extends Marshallable[FavoritesMessage] { + /** * Overloaded constructor, for infantry loadouts specifically. * @param list the destination list @@ -60,7 +62,13 @@ object FavoritesMessage extends Marshallable[FavoritesMessage] { * @param armor the type of exo-suit, if an Infantry loadout * @return a `FavoritesMessage` object */ - def apply(list : LoadoutType.Value, player_guid : PlanetSideGUID, line : Int, label : String, armor : Int) : FavoritesMessage = { + def apply( + list: LoadoutType.Value, + player_guid: PlanetSideGUID, + line: Int, + label: String, + armor: Int + ): FavoritesMessage = { FavoritesMessage(list, player_guid, line, label, Some(armor)) } @@ -72,23 +80,23 @@ object FavoritesMessage extends Marshallable[FavoritesMessage] { * @param label the identifier for this entry * @return a `FavoritesMessage` object */ - def apply(list : LoadoutType.Value, player_guid : PlanetSideGUID, line : Int, label : String) : FavoritesMessage = { + def apply(list: LoadoutType.Value, player_guid: PlanetSideGUID, line: Int, label: String): FavoritesMessage = { FavoritesMessage(list, player_guid, line, label, None) } -implicit val codec : Codec[FavoritesMessage] = ( - ("list" | LoadoutType.codec) >>:~ { value => - ("player_guid" | PlanetSideGUID.codec) :: - ("line" | uint4L) :: - ("label" | PacketHelpers.encodedWideStringAligned(2)) :: - conditional(value == LoadoutType.Infantry, "armor" | uintL(3)) - }).xmap[FavoritesMessage] ( + implicit val codec: Codec[FavoritesMessage] = (("list" | LoadoutType.codec) >>:~ { value => + ("player_guid" | PlanetSideGUID.codec) :: + ("line" | uint4L) :: + ("label" | PacketHelpers.encodedWideStringAligned(2)) :: + conditional(value == LoadoutType.Infantry, "armor" | uintL(3)) + }).xmap[FavoritesMessage]( { case lst :: guid :: ln :: str :: arm :: HNil => FavoritesMessage(lst, guid, ln, str, arm) }, { case FavoritesMessage(lst, guid, ln, str, arm) => - val armset : Option[Int] = if(lst == LoadoutType.Infantry && arm.isEmpty) { Some(0) } else { arm } + val armset: Option[Int] = if (lst == LoadoutType.Infantry && arm.isEmpty) { Some(0) } + else { arm } lst :: guid :: ln :: str :: armset :: HNil } ) diff --git a/common/src/main/scala/net/psforever/packet/game/FavoritesRequest.scala b/common/src/main/scala/net/psforever/packet/game/FavoritesRequest.scala index de86fab9..a7c8c38a 100644 --- a/common/src/main/scala/net/psforever/packet/game/FavoritesRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/FavoritesRequest.scala @@ -9,11 +9,7 @@ import scodec.codecs._ object FavoritesAction extends Enumeration { type Type = Value - val - Unknown, - Save, - Delete - = Value + val Unknown, Save, Delete = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint2L) } @@ -27,24 +23,25 @@ object FavoritesAction extends Enumeration { * @param label applicable when a load out is being saved; * this is the string that will be displayed in the list of loadouts on that line */ -final case class FavoritesRequest(player_guid : PlanetSideGUID, - list : LoadoutType.Value, - action : FavoritesAction.Value, - line : Int, - label : Option[String]) - extends PlanetSideGamePacket { +final case class FavoritesRequest( + player_guid: PlanetSideGUID, + list: LoadoutType.Value, + action: FavoritesAction.Value, + line: Int, + label: Option[String] +) extends PlanetSideGamePacket { type Packet = FavoritesRequest def opcode = GamePacketOpcode.FavoritesRequest def encode = FavoritesRequest.encode(this) } object FavoritesRequest extends Marshallable[FavoritesRequest] { - implicit val codec : Codec[FavoritesRequest] = ( + implicit val codec: Codec[FavoritesRequest] = ( ("player_guid" | PlanetSideGUID.codec) :: ("list" | LoadoutType.codec) :: (("action" | FavoritesAction.codec) >>:~ { action => - ("line" | uint4L) :: - conditional(action == FavoritesAction.Save, "label" | PacketHelpers.encodedWideString) - }) - ).as[FavoritesRequest] + ("line" | uint4L) :: + conditional(action == FavoritesAction.Save, "label" | PacketHelpers.encodedWideString) + }) + ).as[FavoritesRequest] } diff --git a/common/src/main/scala/net/psforever/packet/game/FireHintMessage.scala b/common/src/main/scala/net/psforever/packet/game/FireHintMessage.scala index 5b0fe285..508a707b 100644 --- a/common/src/main/scala/net/psforever/packet/game/FireHintMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/FireHintMessage.scala @@ -17,14 +17,15 @@ import scodec.codecs._ * @param u5 na; vel of what ?! */ -final case class FireHintMessage(weapon_guid : PlanetSideGUID, - pos : Vector3, - u1 : Int, - u2 : Int, - u3 : Int, - u4 : Int, - u5 : Option[Vector3] = None) - extends PlanetSideGamePacket { +final case class FireHintMessage( + weapon_guid: PlanetSideGUID, + pos: Vector3, + u1: Int, + u2: Int, + u3: Int, + u4: Int, + u5: Option[Vector3] = None +) extends PlanetSideGamePacket { type Packet = FireHintMessage def opcode = GamePacketOpcode.FireHintMessage def encode = FireHintMessage.encode(this) @@ -32,7 +33,7 @@ final case class FireHintMessage(weapon_guid : PlanetSideGUID, object FireHintMessage extends Marshallable[FireHintMessage] { - implicit val codec : Codec[FireHintMessage] = ( + implicit val codec: Codec[FireHintMessage] = ( ("weapon_guid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) :: ("u1" | uint16L) :: @@ -40,5 +41,5 @@ object FireHintMessage extends Marshallable[FireHintMessage] { ("u3" | uint16L) :: ("u4" | uintL(3)) :: optional(bool, "u5" | Vector3.codec_vel) - ).as[FireHintMessage] + ).as[FireHintMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/FriendsRequest.scala b/common/src/main/scala/net/psforever/packet/game/FriendsRequest.scala index a1d60142..dc6d5d9b 100644 --- a/common/src/main/scala/net/psforever/packet/game/FriendsRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/FriendsRequest.scala @@ -31,18 +31,15 @@ import scodec.codecs._ * @param friend the player name that was entered; * blank in certain situations */ -final case class FriendsRequest(action : Int, - friend : String) - extends PlanetSideGamePacket { +final case class FriendsRequest(action: Int, friend: String) extends PlanetSideGamePacket { type Packet = FriendsRequest def opcode = GamePacketOpcode.FriendsRequest def encode = FriendsRequest.encode(this) } object FriendsRequest extends Marshallable[FriendsRequest] { - implicit val codec : Codec[FriendsRequest] = ( + implicit val codec: Codec[FriendsRequest] = ( ("action" | uintL(3)) :: ("friend" | PacketHelpers.encodedWideStringAligned(5)) - ).as[FriendsRequest] + ).as[FriendsRequest] } - diff --git a/common/src/main/scala/net/psforever/packet/game/FriendsResponse.scala b/common/src/main/scala/net/psforever/packet/game/FriendsResponse.scala index 8eb97abe..3060ddd4 100644 --- a/common/src/main/scala/net/psforever/packet/game/FriendsResponse.scala +++ b/common/src/main/scala/net/psforever/packet/game/FriendsResponse.scala @@ -9,15 +9,8 @@ import shapeless.{::, HNil} object FriendAction extends Enumeration { type Type = Value - val - InitializeFriendList, - AddFriend, - RemoveFriend, - UpdateFriend, - InitializeIgnoreList, - AddIgnoredPlayer, - RemoveIgnoredPlayer - = Value + val InitializeFriendList, AddFriend, RemoveFriend, UpdateFriend, InitializeIgnoreList, AddIgnoredPlayer, + RemoveIgnoredPlayer = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) } @@ -28,8 +21,7 @@ object FriendAction extends Enumeration { * @param name the name of the player * @param online the player's current state of activity; defaults to `false`, or offline */ -final case class Friend(name : String, - online : Boolean = false) +final case class Friend(name: String, online: Boolean = false) /** * Manage the lists of other players whose names are retained by the given player.
@@ -53,54 +45,56 @@ final case class Friend(name : String, * @param unk3 na; always `true`? * @param friends a list of `Friend`s */ -final case class FriendsResponse(action : FriendAction.Value, - unk1 : Int, - unk2 : Boolean, - unk3 : Boolean, - friends : List[Friend] = Nil) - extends PlanetSideGamePacket { +final case class FriendsResponse( + action: FriendAction.Value, + unk1: Int, + unk2: Boolean, + unk3: Boolean, + friends: List[Friend] = Nil +) extends PlanetSideGamePacket { type Packet = FriendsResponse def opcode = GamePacketOpcode.FriendsResponse def encode = FriendsResponse.encode(this) } object Friend extends Marshallable[Friend] { - implicit val codec : Codec[Friend] = ( + implicit val codec: Codec[Friend] = ( ("name" | PacketHelpers.encodedWideStringAligned(3)) :: ("online" | bool) - ).as[Friend] + ).as[Friend] /** * This codec is used for the "`List` of other `Friends`." * Initial byte-alignment creates padding differences which requires a second `Codec`. */ - implicit val codec_list : Codec[Friend] = ( + implicit val codec_list: Codec[Friend] = ( ("name" | PacketHelpers.encodedWideStringAligned(7)) :: ("online" | bool) - ).as[Friend] + ).as[Friend] } object FriendsResponse extends Marshallable[FriendsResponse] { - implicit val codec : Codec[FriendsResponse] = ( + implicit val codec: Codec[FriendsResponse] = ( ("action" | FriendAction.codec) :: ("unk1" | uint4L) :: ("unk2" | bool) :: ("unk3" | bool) :: (("number_of_friends" | uint4L) >>:~ { len => - conditional(len > 0, "friend" | Friend.codec) :: - ("friends" | PacketHelpers.listOfNSized(len-1, Friend.codec_list)) - }) - ).xmap[FriendsResponse] ( + conditional(len > 0, "friend" | Friend.codec) :: + ("friends" | PacketHelpers.listOfNSized(len - 1, Friend.codec_list)) + }) + ).xmap[FriendsResponse]( { case act :: u1 :: u2 :: u3 :: _ :: friend1 :: friends :: HNil => - val friendList : List[Friend] = if(friend1.isDefined) { friend1.get +: friends } else { friends } + val friendList: List[Friend] = if (friend1.isDefined) { friend1.get +: friends } + else { friends } FriendsResponse(act, u1, u2, u3, friendList) }, { case FriendsResponse(act, u1, u2, u3, friends) => - var friend1 : Option[Friend] = None - var friendList : List[Friend] = Nil - if(friends.nonEmpty) { + var friend1: Option[Friend] = None + var friendList: List[Friend] = Nil + if (friends.nonEmpty) { friend1 = Some(friends.head) friendList = friends.drop(1) } diff --git a/common/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala b/common/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala index 8ce98ab8..a7b60f0a 100644 --- a/common/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/GenericActionMessage.scala @@ -12,7 +12,7 @@ import scodec.codecs._ * They are only vaguely organized by behavior and some numbers may not be associated with an action. * When sent by the client to the server, an unknown number of actions are available. * The highest known action is a server-sent 45.
- *
+ *
* Actions (when sent from server):
* 03 - symbol: show Mosquito radar
* 04 - symbol: hide Mosquito radar
@@ -46,15 +46,14 @@ import scodec.codecs._ * * @param action what this packet does */ -final case class GenericActionMessage(action : Int) - extends PlanetSideGamePacket { +final case class GenericActionMessage(action: Int) extends PlanetSideGamePacket { type Packet = GenericActionMessage def opcode = GamePacketOpcode.GenericActionMessage def encode = GenericActionMessage.encode(this) } object GenericActionMessage extends Marshallable[GenericActionMessage] { - implicit val codec : Codec[GenericActionMessage] = ( + implicit val codec: Codec[GenericActionMessage] = ( "action" | uint(6) - ).as[GenericActionMessage] + ).as[GenericActionMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/GenericCollisionMsg.scala b/common/src/main/scala/net/psforever/packet/game/GenericCollisionMsg.scala index ff9c3e39..1e0046b3 100644 --- a/common/src/main/scala/net/psforever/packet/game/GenericCollisionMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/GenericCollisionMsg.scala @@ -26,26 +26,27 @@ import scodec.codecs._ * @param unk3 na * @param unk4 na */ -final case class GenericCollisionMsg(unk1 : Int, - player : PlanetSideGUID, - target : PlanetSideGUID, - player_health : Int, - target_health : Int, - player_velocity : Vector3, - target_velocity : Vector3, - player_pos : Vector3, - target_pos : Vector3, - unk2 : Long, - unk3 : Long, - unk4 : Long) - extends PlanetSideGamePacket { +final case class GenericCollisionMsg( + unk1: Int, + player: PlanetSideGUID, + target: PlanetSideGUID, + player_health: Int, + target_health: Int, + player_velocity: Vector3, + target_velocity: Vector3, + player_pos: Vector3, + target_pos: Vector3, + unk2: Long, + unk3: Long, + unk4: Long +) extends PlanetSideGamePacket { type Packet = GenericCollisionMsg def opcode = GamePacketOpcode.GenericCollisionMsg def encode = GenericCollisionMsg.encode(this) } object GenericCollisionMsg extends Marshallable[GenericCollisionMsg] { - implicit val codec : Codec[GenericCollisionMsg] = ( + implicit val codec: Codec[GenericCollisionMsg] = ( ("unk1" | uint2) :: ("p" | PlanetSideGUID.codec) :: ("t" | PlanetSideGUID.codec) :: @@ -58,5 +59,5 @@ object GenericCollisionMsg extends Marshallable[GenericCollisionMsg] { ("unk2" | uint32L) :: ("unk3" | uint32L) :: ("unk4" | uint32L) - ).as[GenericCollisionMsg] + ).as[GenericCollisionMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/GenericObjectActionMessage.scala b/common/src/main/scala/net/psforever/packet/game/GenericObjectActionMessage.scala index 5a5dba60..87a19a15 100644 --- a/common/src/main/scala/net/psforever/packet/game/GenericObjectActionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/GenericObjectActionMessage.scala @@ -42,20 +42,18 @@ import shapeless.{::, HNil} * 56 - Sets vehicle or player to be black ops * 57 - Reverts player from black ops */ -final case class GenericObjectActionMessage(object_guid : PlanetSideGUID, - code : Int) - extends PlanetSideGamePacket { +final case class GenericObjectActionMessage(object_guid: PlanetSideGUID, code: Int) extends PlanetSideGamePacket { type Packet = GenericObjectActionMessage def opcode = GamePacketOpcode.GenericObjectActionMessage def encode = GenericObjectActionMessage.encode(this) } object GenericObjectActionMessage extends Marshallable[GenericObjectActionMessage] { - implicit val codec : Codec[GenericObjectActionMessage] = ( + implicit val codec: Codec[GenericObjectActionMessage] = ( ("object_guid" | PlanetSideGUID.codec) :: ("code" | uint(bits = 6)) :: ("ex" | bits) //"code" may extract at odd sizes - ).exmap[GenericObjectActionMessage] ( + ).exmap[GenericObjectActionMessage]( { case guid :: code :: _ :: HNil => Attempt.Successful(GenericObjectActionMessage(guid, code)) diff --git a/common/src/main/scala/net/psforever/packet/game/GenericObjectStateMsg.scala b/common/src/main/scala/net/psforever/packet/game/GenericObjectStateMsg.scala index 5e337412..ac5085a6 100644 --- a/common/src/main/scala/net/psforever/packet/game/GenericObjectStateMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/GenericObjectStateMsg.scala @@ -1,29 +1,26 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ /** - * * @param object_guid the target object * @param state the state code * 16 - open door * 17 - close door */ -final case class GenericObjectStateMsg(object_guid : PlanetSideGUID, - state : Long) - extends PlanetSideGamePacket { +final case class GenericObjectStateMsg(object_guid: PlanetSideGUID, state: Long) extends PlanetSideGamePacket { type Packet = GenericObjectStateMsg def opcode = GamePacketOpcode.GenericObjectStateMsg def encode = GenericObjectStateMsg.encode(this) } object GenericObjectStateMsg extends Marshallable[GenericObjectStateMsg] { - implicit val codec : Codec[GenericObjectStateMsg] = ( - ("object_guid" | PlanetSideGUID.codec) :: - ("state" | uint32L) - ).as[GenericObjectStateMsg] + implicit val codec: Codec[GenericObjectStateMsg] = ( + ("object_guid" | PlanetSideGUID.codec) :: + ("state" | uint32L) + ).as[GenericObjectStateMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/HackMessage.scala b/common/src/main/scala/net/psforever/packet/game/HackMessage.scala index 7a126baf..77df26d8 100644 --- a/common/src/main/scala/net/psforever/packet/game/HackMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/HackMessage.scala @@ -19,16 +19,7 @@ import scodec.codecs._ object HackState extends Enumeration { type Type = Value - val - Unknown0, - Start, - Cancelled, - Ongoing, - Finished, - Unknown5, - Hacked, - HackCleared - = Value + val Unknown0, Start, Cancelled, Ongoing, Finished, Unknown5, Hacked, HackCleared = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) } @@ -70,21 +61,22 @@ object HackState extends Enumeration { * 5 - boost pain field at matrixing terminal? * usually, 8? */ -final case class HackMessage(unk1 : Int, - target_guid : PlanetSideGUID, - player_guid : PlanetSideGUID, - progress : Int, - unk5 : Long, - hack_state : HackState.Value, - unk7 : Long) - extends PlanetSideGamePacket { +final case class HackMessage( + unk1: Int, + target_guid: PlanetSideGUID, + player_guid: PlanetSideGUID, + progress: Int, + unk5: Long, + hack_state: HackState.Value, + unk7: Long +) extends PlanetSideGamePacket { type Packet = HackMessage def opcode = GamePacketOpcode.HackMessage def encode = HackMessage.encode(this) } object HackMessage extends Marshallable[HackMessage] { - implicit val codec : Codec[HackMessage] = ( + implicit val codec: Codec[HackMessage] = ( ("unk1" | uint2L) :: ("object_guid" | PlanetSideGUID.codec) :: ("player_guid" | PlanetSideGUID.codec) :: diff --git a/common/src/main/scala/net/psforever/packet/game/HitHint.scala b/common/src/main/scala/net/psforever/packet/game/HitHint.scala index a91ca2ee..656b04f5 100644 --- a/common/src/main/scala/net/psforever/packet/game/HitHint.scala +++ b/common/src/main/scala/net/psforever/packet/game/HitHint.scala @@ -17,17 +17,15 @@ import scodec.codecs._ * @param source_guid the source of implied damage * @param player_guid the player */ -final case class HitHint(source_guid : PlanetSideGUID, - player_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class HitHint(source_guid: PlanetSideGUID, player_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = HitHint def opcode = GamePacketOpcode.HitHint def encode = HitHint.encode(this) } object HitHint extends Marshallable[HitHint] { - implicit val codec : Codec[HitHint] = ( + implicit val codec: Codec[HitHint] = ( ("source_guid" | PlanetSideGUID.codec) :: ("player_guid" | PlanetSideGUID.codec) - ).as[HitHint] + ).as[HitHint] } diff --git a/common/src/main/scala/net/psforever/packet/game/HitMessage.scala b/common/src/main/scala/net/psforever/packet/game/HitMessage.scala index 1f87f6da..7a14f2bd 100644 --- a/common/src/main/scala/net/psforever/packet/game/HitMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/HitMessage.scala @@ -6,31 +6,30 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scodec.Codec import scodec.codecs._ -final case class HitInfo(shot_origin : Vector3, - hit_pos : Vector3, - hitobject_guid : Option[PlanetSideGUID]) +final case class HitInfo(shot_origin: Vector3, hit_pos: Vector3, hitobject_guid: Option[PlanetSideGUID]) -final case class HitMessage(seq_time : Int, - projectile_guid : PlanetSideGUID, - unk1 : Int, - hit_info : Option[HitInfo], - unk2 : Boolean, - unk3 : Boolean, - unk4 : Option[Int]) - extends PlanetSideGamePacket { +final case class HitMessage( + seq_time: Int, + projectile_guid: PlanetSideGUID, + unk1: Int, + hit_info: Option[HitInfo], + unk2: Boolean, + unk3: Boolean, + unk4: Option[Int] +) extends PlanetSideGamePacket { type Packet = HitMessage def opcode = GamePacketOpcode.HitMessage def encode = HitMessage.encode(this) } object HitMessage extends Marshallable[HitMessage] { - implicit val codec_hitinfo : Codec[HitInfo] = ( + implicit val codec_hitinfo: Codec[HitInfo] = ( ("shot_origin" | Vector3.codec_pos) :: ("hit_pos" | Vector3.codec_pos) :: ("hitobject_guid" | optional(bool, PlanetSideGUID.codec)) - ).as[HitInfo] + ).as[HitInfo] - implicit val codec : Codec[HitMessage] = ( + implicit val codec: Codec[HitMessage] = ( ("seq_time" | uintL(10)) :: ("projectile_guid" | PlanetSideGUID.codec) :: ("unk1" | uintL(3)) :: @@ -38,5 +37,5 @@ object HitMessage extends Marshallable[HitMessage] { ("unk2" | bool) :: ("unk3" | bool) :: ("unk4" | optional(bool, uint16L)) - ).as[HitMessage] + ).as[HitMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/HotSpotUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/HotSpotUpdateMessage.scala index f0de9cba..d933b008 100644 --- a/common/src/main/scala/net/psforever/packet/game/HotSpotUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/HotSpotUpdateMessage.scala @@ -18,9 +18,7 @@ import shapeless.{::, HNil} * @param y the y-coord of the center of the hotspot * @param scale how big the hotspot explosion icon appears */ -final case class HotSpotInfo(x : Float, - y : Float, - scale : Float) +final case class HotSpotInfo(x: Float, y: Float, scale: Float) /** * A list of data for creating hotspots on a continental map. @@ -37,10 +35,8 @@ final case class HotSpotInfo(x : Float, * @param priority na * @param spots a List of HotSpotInfo */ -final case class HotSpotUpdateMessage(zone_index : Int, - priority : Int, - spots : List[HotSpotInfo]) - extends PlanetSideGamePacket { +final case class HotSpotUpdateMessage(zone_index: Int, priority: Int, spots: List[HotSpotInfo]) + extends PlanetSideGamePacket { type Packet = HotSpotUpdateMessage def opcode = GamePacketOpcode.HotSpotUpdateMessage def encode = HotSpotUpdateMessage.encode(this) @@ -52,7 +48,7 @@ object HotSpotInfo extends Marshallable[HotSpotInfo] { we try to enforce a more modest graphic scale where default is 64.0f (arbitrary) personally, I'd like scale to equal the sprite width in map units but the pulsation makes it hard to apply */ - implicit val codec : Codec[HotSpotInfo] = { + implicit val codec: Codec[HotSpotInfo] = { ("x" | newcodecs.q_float(0.0, 8192.0, 20)) :: ("y" | newcodecs.q_float(0.0, 8192.0, 20)) :: ("scale" | newcodecs.q_float(0.0, 524288.0, 20)) @@ -60,11 +56,11 @@ object HotSpotInfo extends Marshallable[HotSpotInfo] { } object HotSpotUpdateMessage extends Marshallable[HotSpotUpdateMessage] { - implicit val codec : Codec[HotSpotUpdateMessage] = ( + implicit val codec: Codec[HotSpotUpdateMessage] = ( ("zone_index" | uint16L) :: ("priority" | uint4L) :: ("spots" | PacketHelpers.listOfNAligned(longL(12), 0, HotSpotInfo.codec)) - ).xmap[HotSpotUpdateMessage] ( + ).xmap[HotSpotUpdateMessage]( { case zone_index :: priority :: spots :: HNil => HotSpotUpdateMessage(zone_index, priority, spots) @@ -79,7 +75,9 @@ object HotSpotUpdateMessage extends Marshallable[HotSpotUpdateMessage] { spots.foldLeft(0f)(_ + _.y) / size, 0 ) - zone_index :: priority :: spots.sortBy(spot => Vector3.DistanceSquared(Vector3(spot.x, spot.y, 0), center)).take(4095) :: HNil + zone_index :: priority :: spots + .sortBy(spot => Vector3.DistanceSquared(Vector3(spot.x, spot.y, 0), center)) + .take(4095) :: HNil case HotSpotUpdateMessage(zone_index, priority, spots) => zone_index :: priority :: spots :: HNil diff --git a/common/src/main/scala/net/psforever/packet/game/InventoryStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/InventoryStateMessage.scala index 22c83af3..25225fcc 100644 --- a/common/src/main/scala/net/psforever/packet/game/InventoryStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/InventoryStateMessage.scala @@ -22,17 +22,19 @@ import scodec.codecs._ * @param container_guid the object in which `object_guid` is contained * @param value an amount with which to update `object_guid` */ -final case class InventoryStateMessage(object_guid : PlanetSideGUID, - unk : Int, - container_guid : PlanetSideGUID, - value : Long) - extends PlanetSideGamePacket { +final case class InventoryStateMessage( + object_guid: PlanetSideGUID, + unk: Int, + container_guid: PlanetSideGUID, + value: Long +) extends PlanetSideGamePacket { type Packet = InventoryStateMessage def opcode = GamePacketOpcode.InventoryStateMessage def encode = InventoryStateMessage.encode(this) } object InventoryStateMessage extends Marshallable[InventoryStateMessage] { + /** * Overloaded constructor that ignores the unknown field. * @param object_guid the object being affected @@ -40,13 +42,13 @@ object InventoryStateMessage extends Marshallable[InventoryStateMessage] { * @param value an amount with which to update `object_guid` * @return an `InventoryStateMessage` object */ - def apply(object_guid : PlanetSideGUID, container_guid : PlanetSideGUID, value : Long) : InventoryStateMessage = + def apply(object_guid: PlanetSideGUID, container_guid: PlanetSideGUID, value: Long): InventoryStateMessage = InventoryStateMessage(object_guid, 0, container_guid, value) - implicit val codec : Codec[InventoryStateMessage] = ( + implicit val codec: Codec[InventoryStateMessage] = ( ("object_guid" | PlanetSideGUID.codec) :: ("unk" | uintL(10)) :: ("container_guid" | PlanetSideGUID.codec) :: ("value" | uint32L) - ).as[InventoryStateMessage] + ).as[InventoryStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ItemTransactionMessage.scala b/common/src/main/scala/net/psforever/packet/game/ItemTransactionMessage.scala index 4f86cb4b..09183871 100644 --- a/common/src/main/scala/net/psforever/packet/game/ItemTransactionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ItemTransactionMessage.scala @@ -6,25 +6,26 @@ import net.psforever.types.{PlanetSideGUID, TransactionType} import scodec.Codec import scodec.codecs._ -final case class ItemTransactionMessage(terminal_guid : PlanetSideGUID, - transaction_type : TransactionType.Value, - item_page : Int, - item_name : String, - unk1 : Int, - item_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class ItemTransactionMessage( + terminal_guid: PlanetSideGUID, + transaction_type: TransactionType.Value, + item_page: Int, + item_name: String, + unk1: Int, + item_guid: PlanetSideGUID +) extends PlanetSideGamePacket { type Packet = ItemTransactionMessage def opcode = GamePacketOpcode.ItemTransactionMessage def encode = ItemTransactionMessage.encode(this) } object ItemTransactionMessage extends Marshallable[ItemTransactionMessage] { - implicit val codec : Codec[ItemTransactionMessage] = ( - ("terminal_guid" | PlanetSideGUID.codec) :: - ("transaction_type" | TransactionType.codec) :: - ("item_page" | uint16L) :: - ("item_name" | PacketHelpers.encodedStringAligned(5)) :: - ("unk1" | uint8L) :: - ("item_guid" | PlanetSideGUID.codec) - ).as[ItemTransactionMessage] + implicit val codec: Codec[ItemTransactionMessage] = ( + ("terminal_guid" | PlanetSideGUID.codec) :: + ("transaction_type" | TransactionType.codec) :: + ("item_page" | uint16L) :: + ("item_name" | PacketHelpers.encodedStringAligned(5)) :: + ("unk1" | uint8L) :: + ("item_guid" | PlanetSideGUID.codec) + ).as[ItemTransactionMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ItemTransactionResultMessage.scala b/common/src/main/scala/net/psforever/packet/game/ItemTransactionResultMessage.scala index ee40f437..412bfb19 100644 --- a/common/src/main/scala/net/psforever/packet/game/ItemTransactionResultMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ItemTransactionResultMessage.scala @@ -15,21 +15,22 @@ import scodec.codecs._ * @param error an error code, if applicable; * no error by default */ -final case class ItemTransactionResultMessage(terminal_guid : PlanetSideGUID, - transaction_type : TransactionType.Value, - success : Boolean, - error : Int = 0) - extends PlanetSideGamePacket { +final case class ItemTransactionResultMessage( + terminal_guid: PlanetSideGUID, + transaction_type: TransactionType.Value, + success: Boolean, + error: Int = 0 +) extends PlanetSideGamePacket { type Packet = ItemTransactionResultMessage def opcode = GamePacketOpcode.ItemTransactionResultMessage def encode = ItemTransactionResultMessage.encode(this) } object ItemTransactionResultMessage extends Marshallable[ItemTransactionResultMessage] { - implicit val codec : Codec[ItemTransactionResultMessage] = ( + implicit val codec: Codec[ItemTransactionResultMessage] = ( ("terminal_guid" | PlanetSideGUID.codec) :: ("transaction_type" | TransactionType.codec) :: ("success" | bool) :: ("error" | uint8L) - ).as[ItemTransactionResultMessage] + ).as[ItemTransactionResultMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/KeepAliveMessage.scala b/common/src/main/scala/net/psforever/packet/game/KeepAliveMessage.scala index c0547750..d4e9523f 100644 --- a/common/src/main/scala/net/psforever/packet/game/KeepAliveMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/KeepAliveMessage.scala @@ -5,12 +5,12 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacke import scodec.Codec import scodec.codecs._ -final case class KeepAliveMessage(code : Int = 0) extends PlanetSideGamePacket { +final case class KeepAliveMessage(code: Int = 0) extends PlanetSideGamePacket { type Packet = KeepAliveMessage def opcode = GamePacketOpcode.KeepAliveMessage def encode = KeepAliveMessage.encode(this) } object KeepAliveMessage extends Marshallable[KeepAliveMessage] { - implicit val codec : Codec[KeepAliveMessage] = ("keep_alive_code" | uint16L).as[KeepAliveMessage] -} \ No newline at end of file + implicit val codec: Codec[KeepAliveMessage] = ("keep_alive_code" | uint16L).as[KeepAliveMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/LashMessage.scala b/common/src/main/scala/net/psforever/packet/game/LashMessage.scala index cb4111f3..536676f5 100644 --- a/common/src/main/scala/net/psforever/packet/game/LashMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LashMessage.scala @@ -15,25 +15,26 @@ import scodec.codecs._ * @param hit_pos na * @param unk1 na */ -final case class LashMessage(seq_time : Int, - player : PlanetSideGUID, - victim : PlanetSideGUID, - bullet : PlanetSideGUID, - hit_pos : Vector3, - unk1 : Int) - extends PlanetSideGamePacket { +final case class LashMessage( + seq_time: Int, + player: PlanetSideGUID, + victim: PlanetSideGUID, + bullet: PlanetSideGUID, + hit_pos: Vector3, + unk1: Int +) extends PlanetSideGamePacket { type Packet = LashMessage def opcode = GamePacketOpcode.LashMessage def encode = LashMessage.encode(this) } object LashMessage extends Marshallable[LashMessage] { - implicit val codec : Codec[LashMessage] = ( + implicit val codec: Codec[LashMessage] = ( ("seq_time" | uintL(10)) :: ("player" | PlanetSideGUID.codec) :: ("victim" | PlanetSideGUID.codec) :: ("bullet" | PlanetSideGUID.codec) :: ("hit_pos" | Vector3.codec_pos) :: ("unk1" | uintL(3)) - ).as[LashMessage] + ).as[LashMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/LoadMapMessage.scala b/common/src/main/scala/net/psforever/packet/game/LoadMapMessage.scala index b0679e24..21b3b7a3 100644 --- a/common/src/main/scala/net/psforever/packet/game/LoadMapMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LoadMapMessage.scala @@ -5,34 +5,35 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, Plan import scodec.Codec import scodec.codecs._ - /** - * map_name and nav_map_name should match (unless you want to be lost :)) - * - * ex: - * map13 & home3 = vs sanc - * map10 & z10 = amerish - * map07 & z7 = esamir - */ -final case class LoadMapMessage(map_name : String, - nav_map_name : String, // Also determines loading screen - unk1 : Int, - unk2 : Long, - weapons_unlocked : Boolean, - checksum : Long) //? - extends PlanetSideGamePacket { + * map_name and nav_map_name should match (unless you want to be lost :)) + * + * ex: + * map13 & home3 = vs sanc + * map10 & z10 = amerish + * map07 & z7 = esamir + */ +final case class LoadMapMessage( + map_name: String, + nav_map_name: String, // Also determines loading screen + unk1: Int, + unk2: Long, + weapons_unlocked: Boolean, + checksum: Long +) //? + extends PlanetSideGamePacket { type Packet = LoadMapMessage def opcode = GamePacketOpcode.LoadMapMessage def encode = LoadMapMessage.encode(this) } object LoadMapMessage extends Marshallable[LoadMapMessage] { - implicit val codec : Codec[LoadMapMessage] = ( - ("map_name" | PacketHelpers.encodedString) :: // TODO: Implement encodedStringWithLimit + implicit val codec: Codec[LoadMapMessage] = ( + ("map_name" | PacketHelpers.encodedString) :: // TODO: Implement encodedStringWithLimit ("nav_map_name" | PacketHelpers.encodedString) :: //TODO: Implement encodedStringWithLimit ("unk1" | uint16L) :: ("unk2" | uint32L) :: ("weapons_unlocked" | bool) :: ("checksum" | uint32L) - ).as[LoadMapMessage] + ).as[LoadMapMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala b/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala index ec0a3c83..c5fcd8be 100644 --- a/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala @@ -6,13 +6,15 @@ import scodec.Codec import scodec.codecs._ import shapeless._ -final case class LoginMessage(majorVersion : Long, - minorVersion : Long, - buildDate : String, - username : String, - password : Option[String], - token : Option[String], - revision : Long) extends PlanetSideGamePacket { +final case class LoginMessage( + majorVersion: Long, + minorVersion: Long, + buildDate: String, + username: String, + password: Option[String], + token: Option[String], + revision: Long +) extends PlanetSideGamePacket { require(majorVersion >= 0) require(minorVersion >= 0) require(revision >= 0) @@ -25,9 +27,9 @@ final case class LoginMessage(majorVersion : Long, object LoginMessage extends Marshallable[LoginMessage] { lazy val tokenCodec = paddedFixedSizeBytes(32, cstring, ignore(8)) - private def username = PacketHelpers.encodedStringAligned(7) - private def password = PacketHelpers.encodedString - private def tokenPath = tokenCodec :: username + private def username = PacketHelpers.encodedStringAligned(7) + private def password = PacketHelpers.encodedString + private def tokenPath = tokenCodec :: username private def passwordPath = username :: password type Struct = String :: Option[String] :: Option[String] :: HNil @@ -43,32 +45,34 @@ object LoginMessage extends Marshallable[LoginMessage] { The scodec specific part is the either(...) Codec, which decodes one bit and chooses Left or Right depending on it. */ - implicit val credentialChoice : Codec[Struct] = { + implicit val credentialChoice: Codec[Struct] = { type InStruct = Either[String :: String :: HNil, String :: String :: HNil] - def from(a : InStruct) : Struct = a match { - case Left(username :: password :: HNil) => username :: Some(password) :: None :: HNil - case Right(token :: username :: HNil) => username :: None :: Some(token) :: HNil - } + def from(a: InStruct): Struct = + a match { + case Left(username :: password :: HNil) => username :: Some(password) :: None :: HNil + case Right(token :: username :: HNil) => username :: None :: Some(token) :: HNil + } // serialization can fail if the user did not specify a token or password (or both) - def to(a : Struct) : InStruct = a match { - case username :: Some(password) :: None :: HNil => Left(username :: password :: HNil) - case username :: None :: Some(token) :: HNil => Right(token :: username :: HNil) - } + def to(a: Struct): InStruct = + a match { + case username :: Some(password) :: None :: HNil => Left(username :: password :: HNil) + case username :: None :: Some(token) :: HNil => Right(token :: username :: HNil) + } either(bool, passwordPath, tokenPath).xmap[Struct](from, to) } - implicit val codec : Codec[LoginMessage] = ( + implicit val codec: Codec[LoginMessage] = ( ("major_version" | uint32L) :: - ("minor_version" | uint32L) :: - ("build_date" | PacketHelpers.encodedString) :: - ( - // The :+ operator (and the parens) are required because we are adding an HList to an HList, - // not merely a value (like bool). Weird shit, but hey this works. - ("credential_choice" | credentialChoice) :+ - ("revision" | uint32L) + ("minor_version" | uint32L) :: + ("build_date" | PacketHelpers.encodedString) :: + ( + // The :+ operator (and the parens) are required because we are adding an HList to an HList, + // not merely a value (like bool). Weird shit, but hey this works. + ("credential_choice" | credentialChoice) :+ + ("revision" | uint32L) ) ).as[LoginMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/LoginRespMessage.scala b/common/src/main/scala/net/psforever/packet/game/LoginRespMessage.scala index 7936a407..6ce868ee 100644 --- a/common/src/main/scala/net/psforever/packet/game/LoginRespMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LoginRespMessage.scala @@ -27,26 +27,27 @@ import scodec.codecs._ * @param username The login username * @param privilege If set above 10000, then the user has access to GM commands. Not sure of other values. */ -final case class LoginRespMessage(token : String, - error : LoginRespMessage.LoginError.Type, - stationError : LoginRespMessage.StationError.Type, - subscriptionStatus : LoginRespMessage.StationSubscriptionStatus.Type, - unkUIRelated : Long, - username : String, - privilege : Long) extends PlanetSideGamePacket { +final case class LoginRespMessage( + token: String, + error: LoginRespMessage.LoginError.Type, + stationError: LoginRespMessage.StationError.Type, + subscriptionStatus: LoginRespMessage.StationSubscriptionStatus.Type, + unkUIRelated: Long, + username: String, + privilege: Long +) extends PlanetSideGamePacket { def opcode = GamePacketOpcode.LoginRespMessage def encode = LoginRespMessage.encode(this) } - object LoginRespMessage extends Marshallable[LoginRespMessage] { object LoginError extends Enumeration { type Type = Value - val Success = Value(0) - val unk1 = Value(1) + val Success = Value(0) + val unk1 = Value(1) val BadUsernameOrPassword = Value(5) - val BadVersion = Value(0xf) + val BadVersion = Value(0xf) implicit val codec = PacketHelpers.createLongEnumerationCodec(this, uint32L) } @@ -61,25 +62,25 @@ object LoginRespMessage extends Marshallable[LoginRespMessage] { object StationSubscriptionStatus extends Enumeration { type Type = Value - val None = Value(1) // "You do not have a PlanetSide subscription" - val Active = Value(2) /// Not sure about this one (guessing) (no ingame error message) - val unk3 = Value(3) - val Closed = Value(4) // "Your PlanetSide subscription is currently closed" - val Trial = Value(5) /// Not sure about this one either (no ingame error message) + val None = Value(1) // "You do not have a PlanetSide subscription" + val Active = Value(2) /// Not sure about this one (guessing) (no ingame error message) + val unk3 = Value(3) + val Closed = Value(4) // "Your PlanetSide subscription is currently closed" + val Trial = Value(5) /// Not sure about this one either (no ingame error message) val TrialExpired = Value(6) // "Your trial PlanetSide subscription has expired" implicit val codec = PacketHelpers.createLongEnumerationCodec(this, uint32L) } - implicit val codec : Codec[LoginRespMessage] = ( + implicit val codec: Codec[LoginRespMessage] = ( ("token" | LoginMessage.tokenCodec) :: - ("error" | LoginError.codec) :: - ("station_error" | StationError.codec) :: - ("subscription_status" | StationSubscriptionStatus.codec) :: - ("unknown" | uint32L) :: - ("username" | PacketHelpers.encodedString) :: - ("privilege" | uint32L) - .flatZip(_ => bool) // really not so sure about this bool part. client gets just a single bit - .xmap[Long]({case (a, _) => a}, priv => (priv, (priv & 1) == 1)) - ).as[LoginRespMessage] + ("error" | LoginError.codec) :: + ("station_error" | StationError.codec) :: + ("subscription_status" | StationSubscriptionStatus.codec) :: + ("unknown" | uint32L) :: + ("username" | PacketHelpers.encodedString) :: + ("privilege" | uint32L) + .flatZip(_ => bool) // really not so sure about this bool part. client gets just a single bit + .xmap[Long]({ case (a, _) => a }, priv => (priv, (priv & 1) == 1)) + ).as[LoginRespMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/LootItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/LootItemMessage.scala index d1c620b2..1aa77427 100644 --- a/common/src/main/scala/net/psforever/packet/game/LootItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LootItemMessage.scala @@ -19,17 +19,16 @@ import scodec.codecs._ * @param destination_guid where the item will be placed; * generally, the player is taking the item */ -final case class LootItemMessage(item_guid : PlanetSideGUID, - destination_guid : PlanetSideGUID - ) extends PlanetSideGamePacket { +final case class LootItemMessage(item_guid: PlanetSideGUID, destination_guid: PlanetSideGUID) + extends PlanetSideGamePacket { type Packet = LootItemMessage def opcode = GamePacketOpcode.LootItemMessage def encode = LootItemMessage.encode(this) } object LootItemMessage extends Marshallable[LootItemMessage] { - implicit val codec : Codec[LootItemMessage] = ( + implicit val codec: Codec[LootItemMessage] = ( ("item_guid" | PlanetSideGUID.codec) :: ("destination_guid" | PlanetSideGUID.codec) - ).as[LootItemMessage] -} \ No newline at end of file + ).as[LootItemMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/MailMessage.scala b/common/src/main/scala/net/psforever/packet/game/MailMessage.scala index 79fd3491..9c4cc265 100644 --- a/common/src/main/scala/net/psforever/packet/game/MailMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/MailMessage.scala @@ -17,19 +17,16 @@ import scodec.codecs._ * @param subject the subject * @param message the message */ -final case class MailMessage(sender : String, - subject : String, - message : String - ) extends PlanetSideGamePacket { +final case class MailMessage(sender: String, subject: String, message: String) extends PlanetSideGamePacket { type Packet = MailMessage def opcode = GamePacketOpcode.MailMessage def encode = MailMessage.encode(this) } object MailMessage extends Marshallable[MailMessage] { - implicit val codec : Codec[MailMessage] = ( + implicit val codec: Codec[MailMessage] = ( ("sender" | PacketHelpers.encodedString) :: ("subject" | PacketHelpers.encodedString) :: ("message" | PacketHelpers.encodedString) - ).as[MailMessage] -} \ No newline at end of file + ).as[MailMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/MountVehicleCargoMsg.scala b/common/src/main/scala/net/psforever/packet/game/MountVehicleCargoMsg.scala index b16e29da..91649384 100644 --- a/common/src/main/scala/net/psforever/packet/game/MountVehicleCargoMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/MountVehicleCargoMsg.scala @@ -7,14 +7,17 @@ import scodec.Codec import scodec.codecs._ /** - * * @param player_guid The guid of the player sending the request to board another vehicle with a cargo vehicle * @param vehicle_guid The guid of the vehicle for the requesting player * @param target_vehicle The cargo vehicle guid e.g. Galaxy / Lodestar * @param unk4 */ -final case class MountVehicleCargoMsg(player_guid : PlanetSideGUID, vehicle_guid: PlanetSideGUID, target_vehicle: PlanetSideGUID, unk4: Int) - extends PlanetSideGamePacket { +final case class MountVehicleCargoMsg( + player_guid: PlanetSideGUID, + vehicle_guid: PlanetSideGUID, + target_vehicle: PlanetSideGUID, + unk4: Int +) extends PlanetSideGamePacket { type Packet = MountVehicleCargoMsg def opcode = GamePacketOpcode.MountVehicleCargoMsg @@ -23,10 +26,10 @@ final case class MountVehicleCargoMsg(player_guid : PlanetSideGUID, vehicle_guid } object MountVehicleCargoMsg extends Marshallable[MountVehicleCargoMsg] { - implicit val codec : Codec[MountVehicleCargoMsg] = ( - ("unk1" | PlanetSideGUID.codec) :: - ("unk2" | PlanetSideGUID.codec):: - ("unk3" | PlanetSideGUID.codec) :: - ("unk4" | uint8L) - ).as[MountVehicleCargoMsg] + implicit val codec: Codec[MountVehicleCargoMsg] = ( + ("unk1" | PlanetSideGUID.codec) :: + ("unk2" | PlanetSideGUID.codec) :: + ("unk3" | PlanetSideGUID.codec) :: + ("unk4" | uint8L) + ).as[MountVehicleCargoMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/MountVehicleMsg.scala b/common/src/main/scala/net/psforever/packet/game/MountVehicleMsg.scala index b804e5b4..2084239c 100644 --- a/common/src/main/scala/net/psforever/packet/game/MountVehicleMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/MountVehicleMsg.scala @@ -20,19 +20,17 @@ import scodec.codecs._ * @param vehicle_guid the vehicle * @param entry_point the entry index that maps to a seat index, specific to the selected vehicle */ -final case class MountVehicleMsg(player_guid : PlanetSideGUID, - vehicle_guid : PlanetSideGUID, - entry_point : Int) - extends PlanetSideGamePacket { +final case class MountVehicleMsg(player_guid: PlanetSideGUID, vehicle_guid: PlanetSideGUID, entry_point: Int) + extends PlanetSideGamePacket { type Packet = MountVehicleMsg def opcode = GamePacketOpcode.MountVehicleMsg def encode = MountVehicleMsg.encode(this) } object MountVehicleMsg extends Marshallable[MountVehicleMsg] { - implicit val codec : Codec[MountVehicleMsg] = ( + implicit val codec: Codec[MountVehicleMsg] = ( ("player_guid" | PlanetSideGUID.codec) :: ("vehicle_guid" | PlanetSideGUID.codec) :: ("entry_point" | uint8L) - ).as[MountVehicleMsg] + ).as[MountVehicleMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/MoveItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/MoveItemMessage.scala index 685f4a90..16b780b9 100644 --- a/common/src/main/scala/net/psforever/packet/game/MoveItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/MoveItemMessage.scala @@ -1,28 +1,30 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class MoveItemMessage(item_guid : PlanetSideGUID, - avatar_guid_1 : PlanetSideGUID, - avatar_guid_2 : PlanetSideGUID, - dest : Int, - unk1 : Int) // TODO ammo quantity ? - extends PlanetSideGamePacket { +final case class MoveItemMessage( + item_guid: PlanetSideGUID, + avatar_guid_1: PlanetSideGUID, + avatar_guid_2: PlanetSideGUID, + dest: Int, + unk1: Int +) // TODO ammo quantity ? + extends PlanetSideGamePacket { type Packet = MoveItemMessage def opcode = GamePacketOpcode.MoveItemMessage def encode = MoveItemMessage.encode(this) } object MoveItemMessage extends Marshallable[MoveItemMessage] { - implicit val codec : Codec[MoveItemMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("avatar_guid_1" | PlanetSideGUID.codec) :: - ("avatar_guid_2" | PlanetSideGUID.codec) :: - ("dest" | uint16L) :: - ("unk1" | uint16L) - ).as[MoveItemMessage] + implicit val codec: Codec[MoveItemMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("avatar_guid_1" | PlanetSideGUID.codec) :: + ("avatar_guid_2" | PlanetSideGUID.codec) :: + ("dest" | uint16L) :: + ("unk1" | uint16L) + ).as[MoveItemMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectAttachMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectAttachMessage.scala index c136f548..42d4c713 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectAttachMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectAttachMessage.scala @@ -38,19 +38,17 @@ import scodec.codecs._ * @param slot a codified location within the parent object's inventory; * 8u (0 - 127 or `0x80 - 0xFF`) or 16u (128 - 32767 or `0x0080 - 0x7FFF`) */ -final case class ObjectAttachMessage(parent_guid : PlanetSideGUID, - child_guid : PlanetSideGUID, - slot : Int) - extends PlanetSideGamePacket { +final case class ObjectAttachMessage(parent_guid: PlanetSideGUID, child_guid: PlanetSideGUID, slot: Int) + extends PlanetSideGamePacket { type Packet = ObjectAttachMessage def opcode = GamePacketOpcode.ObjectAttachMessage def encode = ObjectAttachMessage.encode(this) } object ObjectAttachMessage extends Marshallable[ObjectAttachMessage] { - implicit val codec : Codec[ObjectAttachMessage] = ( + implicit val codec: Codec[ObjectAttachMessage] = ( ("parent_guid" | PlanetSideGUID.codec) :: ("child_guid" | PlanetSideGUID.codec) :: ("slot" | PacketHelpers.encodedStringSize) - ).as[ObjectAttachMessage] + ).as[ObjectAttachMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectCreateDetailedMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectCreateDetailedMessage.scala index 01f4b221..7682e63d 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectCreateDetailedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectCreateDetailedMessage.scala @@ -1,7 +1,12 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.game.objectcreate.{ConstructorData, ObjectClass, ObjectCreateBase, ObjectCreateMessageParent} +import net.psforever.packet.game.objectcreate.{ + ConstructorData, + ObjectClass, + ObjectCreateBase, + ObjectCreateMessageParent +} import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideGUID import scodec.bits.BitVector @@ -36,18 +41,20 @@ import shapeless.{::, HNil} * @param data the data used to construct this type of object; * on decoding, set to `None` if the process failed */ -final case class ObjectCreateDetailedMessage(streamLength : Long, - objectClass : Int, - guid : PlanetSideGUID, - parentInfo : Option[ObjectCreateMessageParent], - data : ConstructorData) - extends PlanetSideGamePacket { +final case class ObjectCreateDetailedMessage( + streamLength: Long, + objectClass: Int, + guid: PlanetSideGUID, + parentInfo: Option[ObjectCreateMessageParent], + data: ConstructorData +) extends PlanetSideGamePacket { type Packet = ObjectCreateDetailedMessage def opcode = GamePacketOpcode.ObjectCreateMessage def encode = ObjectCreateDetailedMessage.encode(this) } object ObjectCreateDetailedMessage extends Marshallable[ObjectCreateDetailedMessage] { + /** * An abbreviated constructor for creating `ObjectCreateMessages`, ignoring the optional aspect of some fields. * @param objectClass the code for the type of object being constructed @@ -56,8 +63,13 @@ object ObjectCreateDetailedMessage extends Marshallable[ObjectCreateDetailedMess * @param data the data used to construct this type of object * @return an ObjectCreateMessage */ - def apply(objectClass : Int, guid : PlanetSideGUID, parentInfo : ObjectCreateMessageParent, data : ConstructorData) : ObjectCreateDetailedMessage = { - val parentInfoOpt : Option[ObjectCreateMessageParent] = Some(parentInfo) + def apply( + objectClass: Int, + guid: PlanetSideGUID, + parentInfo: ObjectCreateMessageParent, + data: ConstructorData + ): ObjectCreateDetailedMessage = { + val parentInfoOpt: Option[ObjectCreateMessageParent] = Some(parentInfo) ObjectCreateDetailedMessage(ObjectCreateBase.streamLen(parentInfoOpt, data), objectClass, guid, parentInfoOpt, data) } @@ -68,46 +80,53 @@ object ObjectCreateDetailedMessage extends Marshallable[ObjectCreateDetailedMess * @param data the data used to construct this type of object * @return an ObjectCreateMessage */ - def apply(objectClass : Int, guid : PlanetSideGUID, data : ConstructorData) : ObjectCreateDetailedMessage = { + def apply(objectClass: Int, guid: PlanetSideGUID, data: ConstructorData): ObjectCreateDetailedMessage = { ObjectCreateDetailedMessage(ObjectCreateBase.streamLen(None, data), objectClass, guid, None, data) } - implicit val codec : Codec[ObjectCreateDetailedMessage] = ObjectCreateBase.baseCodec.exmap[ObjectCreateDetailedMessage] ( - { - case _ :: _ :: _ :: _ :: BitVector.empty :: HNil => - Attempt.failure(Err("no data to decode")) + implicit val codec: Codec[ObjectCreateDetailedMessage] = + ObjectCreateBase.baseCodec.exmap[ObjectCreateDetailedMessage]( + { + case _ :: _ :: _ :: _ :: BitVector.empty :: HNil => + Attempt.failure(Err("no data to decode")) - case len :: cls :: guid :: par :: data :: HNil => - ObjectCreateBase.decodeData(cls, data, - if(par.isDefined) { - ObjectClass.selectDataDetailedCodec + case len :: cls :: guid :: par :: data :: HNil => + ObjectCreateBase.decodeData( + cls, + data, + if (par.isDefined) { + ObjectClass.selectDataDetailedCodec + } else { + ObjectClass.selectDataDroppedDetailedCodec + } + ) match { + case Attempt.Successful(obj) => + Attempt.successful(ObjectCreateDetailedMessage(len, cls, guid, par, obj)) + case Attempt.Failure(err) => + Attempt.failure(err) } - else { - ObjectClass.selectDataDroppedDetailedCodec + }, + { + case ObjectCreateDetailedMessage(_, cls, guid, par, obj) => + val len = + ObjectCreateBase.streamLen( + par, + obj + ) //even if a stream length has been assigned, it can not be trusted during encoding + ObjectCreateBase.encodeData( + cls, + obj, + if (par.isDefined) { + ObjectClass.selectDataDetailedCodec + } else { + ObjectClass.selectDataDroppedDetailedCodec + } + ) match { + case Attempt.Successful(bvec) => + Attempt.successful(len :: cls :: guid :: par :: bvec :: HNil) + case Attempt.Failure(err) => + Attempt.failure(err) } - ) match { - case Attempt.Successful(obj) => - Attempt.successful(ObjectCreateDetailedMessage(len, cls, guid, par, obj)) - case Attempt.Failure(err) => - Attempt.failure(err) - } - }, - { - case ObjectCreateDetailedMessage(_, cls, guid, par, obj) => - val len = ObjectCreateBase.streamLen(par, obj) //even if a stream length has been assigned, it can not be trusted during encoding - ObjectCreateBase.encodeData(cls, obj, - if(par.isDefined) { - ObjectClass.selectDataDetailedCodec - } - else { - ObjectClass.selectDataDroppedDetailedCodec - } - ) match { - case Attempt.Successful(bvec) => - Attempt.successful(len :: cls :: guid :: par :: bvec :: HNil) - case Attempt.Failure(err) => - Attempt.failure(err) - } - } - ) + } + ) } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala index be6eae94..d98b2a2d 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala @@ -47,18 +47,20 @@ import shapeless.{::, HNil} * @see ObjectCreateDetailedMessage * @see ObjectCreateMessageParent */ -final case class ObjectCreateMessage(streamLength : Long, - objectClass : Int, - guid : PlanetSideGUID, - parentInfo : Option[ObjectCreateMessageParent], - data : ConstructorData) - extends PlanetSideGamePacket { +final case class ObjectCreateMessage( + streamLength: Long, + objectClass: Int, + guid: PlanetSideGUID, + parentInfo: Option[ObjectCreateMessageParent], + data: ConstructorData +) extends PlanetSideGamePacket { type Packet = ObjectCreateMessage def opcode = GamePacketOpcode.ObjectCreateMessage_Duplicate def encode = ObjectCreateMessage.encode(this) } object ObjectCreateMessage extends Marshallable[ObjectCreateMessage] { + /** * An abbreviated constructor for creating `ObjectCreateMessage`s, ignoring the optional aspect of some fields. * @param objectClass the code for the type of object being constructed @@ -67,8 +69,13 @@ object ObjectCreateMessage extends Marshallable[ObjectCreateMessage] { * @param data the data used to construct this type of object * @return an `ObjectCreateMessage` */ - def apply(objectClass : Int, guid : PlanetSideGUID, parentInfo : ObjectCreateMessageParent, data : ConstructorData) : ObjectCreateMessage = { - val parentInfoOpt : Option[ObjectCreateMessageParent] = Some(parentInfo) + def apply( + objectClass: Int, + guid: PlanetSideGUID, + parentInfo: ObjectCreateMessageParent, + data: ConstructorData + ): ObjectCreateMessage = { + val parentInfoOpt: Option[ObjectCreateMessageParent] = Some(parentInfo) ObjectCreateMessage(ObjectCreateBase.streamLen(parentInfoOpt, data), objectClass, guid, parentInfoOpt, data) } @@ -79,20 +86,22 @@ object ObjectCreateMessage extends Marshallable[ObjectCreateMessage] { * @param data the data used to construct this type of object * @return an `ObjectCreateMessage` */ - def apply(objectClass : Int, guid : PlanetSideGUID, data : ConstructorData) : ObjectCreateMessage = { + def apply(objectClass: Int, guid: PlanetSideGUID, data: ConstructorData): ObjectCreateMessage = { ObjectCreateMessage(ObjectCreateBase.streamLen(None, data), objectClass, guid, None, data) } - implicit val codec : Codec[ObjectCreateMessage] = ObjectCreateBase.baseCodec.exmap[ObjectCreateMessage] ( + implicit val codec: Codec[ObjectCreateMessage] = ObjectCreateBase.baseCodec.exmap[ObjectCreateMessage]( { case _ :: _ :: _ :: _ :: BitVector.empty :: HNil => Attempt.failure(Err("no data to decode")) case len :: cls :: guid :: par :: data :: HNil => - ObjectCreateBase.decodeData(cls, data, if(par.isDefined) { - ObjectClass.selectDataCodec - } - else { + ObjectCreateBase.decodeData( + cls, + data, + if (par.isDefined) { + ObjectClass.selectDataCodec + } else { ObjectClass.selectDataDroppedCodec } ) match { @@ -104,12 +113,17 @@ object ObjectCreateMessage extends Marshallable[ObjectCreateMessage] { }, { case ObjectCreateMessage(_, cls, guid, par, obj) => - val len = ObjectCreateBase.streamLen(par, obj) //even if a stream length has been assigned, it can not be trusted during encoding - ObjectCreateBase.encodeData(cls, obj, - if(par.isDefined) { + val len = + ObjectCreateBase.streamLen( + par, + obj + ) //even if a stream length has been assigned, it can not be trusted during encoding + ObjectCreateBase.encodeData( + cls, + obj, + if (par.isDefined) { ObjectClass.selectDataCodec - } - else { + } else { ObjectClass.selectDataDroppedCodec } ) match { diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectDeleteMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectDeleteMessage.scala index 1249a7ec..b1cd8c3a 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectDeleteMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectDeleteMessage.scala @@ -6,17 +6,15 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ObjectDeleteMessage(object_guid : PlanetSideGUID, - unk1 : Int) - extends PlanetSideGamePacket { +final case class ObjectDeleteMessage(object_guid: PlanetSideGUID, unk1: Int) extends PlanetSideGamePacket { type Packet = ObjectDeleteMessage def opcode = GamePacketOpcode.ObjectDeleteMessage def encode = ObjectDeleteMessage.encode(this) } object ObjectDeleteMessage extends Marshallable[ObjectDeleteMessage] { - implicit val codec : Codec[ObjectDeleteMessage] = ( - ("object_guid" | PlanetSideGUID.codec) :: - ("unk1" | uintL(3)) - ).as[ObjectDeleteMessage] + implicit val codec: Codec[ObjectDeleteMessage] = ( + ("object_guid" | PlanetSideGUID.codec) :: + ("unk1" | uintL(3)) + ).as[ObjectDeleteMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectDeployedMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectDeployedMessage.scala index 7e9dec6a..0dbb4ade 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectDeployedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectDeployedMessage.scala @@ -45,18 +45,15 @@ object DeployOutcome extends Enumeration(1) { * @param count the current number of this type of object deployed * @param max the maximum number of this type of object that can be deployed */ -final case class ObjectDeployedMessage(unk : Int, - desc : String, - action : DeployOutcome.Value, - count : Long, - max : Long) - extends PlanetSideGamePacket { +final case class ObjectDeployedMessage(unk: Int, desc: String, action: DeployOutcome.Value, count: Long, max: Long) + extends PlanetSideGamePacket { type Packet = ObjectDeployedMessage def opcode = GamePacketOpcode.ObjectDeployedMessage def encode = ObjectDeployedMessage.encode(this) } object ObjectDeployedMessage extends Marshallable[ObjectDeployedMessage] { + /** * Overloaded constructor for when the guid is not required. * @param desc descriptive text of what kind of object is being deployed @@ -65,7 +62,7 @@ object ObjectDeployedMessage extends Marshallable[ObjectDeployedMessage] { * @param max the maximum number of this type of object that can be deployed * @return an `ObjectDeployedMessage` object */ - def apply(desc : String, action : DeployOutcome.Value, count : Long, max : Long) : ObjectDeployedMessage = + def apply(desc: String, action: DeployOutcome.Value, count: Long, max: Long): ObjectDeployedMessage = new ObjectDeployedMessage(0, desc, action, count, max) /** @@ -75,7 +72,7 @@ object ObjectDeployedMessage extends Marshallable[ObjectDeployedMessage] { * @param max the maximum number of this type of object that can be deployed * @return an `ObjectDeployedMessage` object */ - def Success(desc : String, count : Int, max : Int) : ObjectDeployedMessage = + def Success(desc: String, count: Int, max: Int): ObjectDeployedMessage = new ObjectDeployedMessage(0, desc, DeployOutcome.Success, count, max) /** @@ -83,24 +80,25 @@ object ObjectDeployedMessage extends Marshallable[ObjectDeployedMessage] { * @param desc descriptive text of what kind of object failed to be deployed * @return an `ObjectDeployedMessage` object */ - def Failure(desc : String) : ObjectDeployedMessage = + def Failure(desc: String): ObjectDeployedMessage = new ObjectDeployedMessage(0, desc, DeployOutcome.Failure, 0, 0) - implicit val codec : Codec[ObjectDeployedMessage] = ( + implicit val codec: Codec[ObjectDeployedMessage] = ( ("unk" | uint16L) :: ("desc" | PacketHelpers.encodedString) :: ("action" | DeployOutcome.codec) :: ("count" | uint32L) :: ("max" | uint32L) - ).xmap[ObjectDeployedMessage] ( + ).xmap[ObjectDeployedMessage]( { - case guid :: str :: unk :: cnt ::mx :: HNil => + case guid :: str :: unk :: cnt :: mx :: HNil => ObjectDeployedMessage(guid, str, unk, cnt, mx) }, { case ObjectDeployedMessage(guid, str, unk, cnt, mx) => //truncate string length to 100 characters; raise no warnings - val limitedStr : String = if(str.length() > 100) { str.substring(0,100) } else { str } + val limitedStr: String = if (str.length() > 100) { str.substring(0, 100) } + else { str } guid :: limitedStr :: unk :: cnt :: mx :: HNil } ) diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectDetachMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectDetachMessage.scala index 8463a10f..7d176413 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectDetachMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectDetachMessage.scala @@ -27,33 +27,44 @@ import scodec.codecs._ * @param pitch the amount of pitch that affects orientation of the dropped item * @param yaw the amount of yaw that affects orientation of the dropped item */ -final case class ObjectDetachMessage(parent_guid : PlanetSideGUID, - child_guid : PlanetSideGUID, - pos : Vector3, - roll : Float, - pitch : Float, - yaw : Float) - extends PlanetSideGamePacket { +final case class ObjectDetachMessage( + parent_guid: PlanetSideGUID, + child_guid: PlanetSideGUID, + pos: Vector3, + roll: Float, + pitch: Float, + yaw: Float +) extends PlanetSideGamePacket { type Packet = ObjectDetachMessage def opcode = GamePacketOpcode.ObjectDetachMessage def encode = ObjectDetachMessage.encode(this) } object ObjectDetachMessage extends Marshallable[ObjectDetachMessage] { - def apply(parent_guid : PlanetSideGUID, child_guid : PlanetSideGUID, pos : Vector3, orient : Vector3) : ObjectDetachMessage = { + def apply( + parent_guid: PlanetSideGUID, + child_guid: PlanetSideGUID, + pos: Vector3, + orient: Vector3 + ): ObjectDetachMessage = { ObjectDetachMessage(parent_guid, child_guid, pos, orient.x, orient.y, orient.z) } - def apply(parent_guid : PlanetSideGUID, child_guid : PlanetSideGUID, pos : Vector3, orient_z : Float) : ObjectDetachMessage = { + def apply( + parent_guid: PlanetSideGUID, + child_guid: PlanetSideGUID, + pos: Vector3, + orient_z: Float + ): ObjectDetachMessage = { ObjectDetachMessage(parent_guid, child_guid, pos, 0, 0, orient_z) } - implicit val codec : Codec[ObjectDetachMessage] = ( + implicit val codec: Codec[ObjectDetachMessage] = ( ("parent_guid" | PlanetSideGUID.codec) :: ("child_guid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) :: ("roll" | Angular.codec_roll) :: ("pitch" | Angular.codec_pitch) :: ("yaw" | Angular.codec_yaw()) - ).as[ObjectDetachMessage] + ).as[ObjectDetachMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectDetectedMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectDetectedMessage.scala index 18c7e040..741a9a76 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectDetectedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectDetectedMessage.scala @@ -18,40 +18,40 @@ import shapeless.{::, HNil} * normally contains at least one element */ - /* +/* BETA CLIENT DEBUG INFO: Detector Sender Object Count (not really) Detected Object[] - */ -final case class ObjectDetectedMessage(player_guid1 : PlanetSideGUID, - player_guid2 : PlanetSideGUID, - unk : Int, - list : List[PlanetSideGUID]) - extends PlanetSideGamePacket { + */ +final case class ObjectDetectedMessage( + player_guid1: PlanetSideGUID, + player_guid2: PlanetSideGUID, + unk: Int, + list: List[PlanetSideGUID] +) extends PlanetSideGamePacket { type Packet = ObjectDetectedMessage def opcode = GamePacketOpcode.ObjectDetectedMessage def encode = ObjectDetectedMessage.encode(this) } object ObjectDetectedMessage extends Marshallable[ObjectDetectedMessage] { - implicit val codec : Codec[ObjectDetectedMessage] = ( + implicit val codec: Codec[ObjectDetectedMessage] = ( ("player_guid1" | PlanetSideGUID.codec) :: ("player_guid2" | PlanetSideGUID.codec) :: ("unk" | uint8L) :: ("list" | listOfN(uintL(6), PlanetSideGUID.codec)) - ).exmap[ObjectDetectedMessage] ( + ).exmap[ObjectDetectedMessage]( { case g1 :: g2 :: u :: lst :: HNil => Attempt.successful(ObjectDetectedMessage(g1, g2, u, lst)) }, { case ObjectDetectedMessage(g1, g2, u, lst) => - if(lst.size > 63) { + if (lst.size > 63) { Attempt.failure(Err(s"too many list elements (max: 63, actual: ${lst.size})")) - } - else { + } else { Attempt.successful(g1 :: g2 :: u :: lst :: HNil) } } diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectHeldMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectHeldMessage.scala index bb9c893d..67ceaa2f 100644 --- a/common/src/main/scala/net/psforever/packet/game/ObjectHeldMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ObjectHeldMessage.scala @@ -6,19 +6,17 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ObjectHeldMessage(avatar_guid : PlanetSideGUID, - held_holsters : Int, - unk1 : Boolean) - extends PlanetSideGamePacket { +final case class ObjectHeldMessage(avatar_guid: PlanetSideGUID, held_holsters: Int, unk1: Boolean) + extends PlanetSideGamePacket { type Packet = ObjectHeldMessage def opcode = GamePacketOpcode.ObjectHeldMessage def encode = ObjectHeldMessage.encode(this) } object ObjectHeldMessage extends Marshallable[ObjectHeldMessage] { - implicit val codec : Codec[ObjectHeldMessage] = ( - ("avatar_guid" | PlanetSideGUID.codec) :: - ("held_holsters" | uint8L) :: - ("unk1" | bool) - ).as[ObjectHeldMessage] + implicit val codec: Codec[ObjectHeldMessage] = ( + ("avatar_guid" | PlanetSideGUID.codec) :: + ("held_holsters" | uint8L) :: + ("unk1" | bool) + ).as[ObjectHeldMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/OrbitalStrikeWaypointMessage.scala b/common/src/main/scala/net/psforever/packet/game/OrbitalStrikeWaypointMessage.scala index cdd50ce6..3d968da6 100644 --- a/common/src/main/scala/net/psforever/packet/game/OrbitalStrikeWaypointMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/OrbitalStrikeWaypointMessage.scala @@ -14,8 +14,7 @@ import shapeless.{::, HNil} * @param x the x-coordinate of the waypoint * @param y the y-coordinate of the waypoint */ -final case class Waypoint(x : Float, - y : Float) +final case class Waypoint(x: Float, y: Float) /** * Dispatched by the server to tell the client to display an orbital strike waypoint somewhere in the game world.
@@ -37,15 +36,15 @@ final case class Waypoint(x : Float, * @param coords the coordinates of the waypoint; * `None` if clearing a waypoint (use the same `guid` as to create it) */ -final case class OrbitalStrikeWaypointMessage(guid : PlanetSideGUID, - coords : Option[Waypoint] = None) - extends PlanetSideGamePacket { +final case class OrbitalStrikeWaypointMessage(guid: PlanetSideGUID, coords: Option[Waypoint] = None) + extends PlanetSideGamePacket { type Packet = OrbitalStrikeWaypointMessage def opcode = GamePacketOpcode.OrbitalStrikeWaypointMessage def encode = OrbitalStrikeWaypointMessage.encode(this) } object OrbitalStrikeWaypointMessage extends Marshallable[OrbitalStrikeWaypointMessage] { + /** * An abbreviated constructor for creating `OrbitalStrikeWaypointMessage`, assuming mandatory coordinates. * @param guid na @@ -53,16 +52,16 @@ object OrbitalStrikeWaypointMessage extends Marshallable[OrbitalStrikeWaypointMe * @param y the y-coordinate of the waypoint * @return an `OrbitalStrikeWaypointMessage` object */ - def apply(guid : PlanetSideGUID, x : Float, y : Float) : OrbitalStrikeWaypointMessage = + def apply(guid: PlanetSideGUID, x: Float, y: Float): OrbitalStrikeWaypointMessage = new OrbitalStrikeWaypointMessage(guid, Option(Waypoint(x, y))) /** * A `Codec` for recording the two coordinates of the waypoint map position, if they are present. */ - private val coords_value : Codec[Waypoint] = ( + private val coords_value: Codec[Waypoint] = ( ("x" | newcodecs.q_float(0.0, 8192.0, 20)) :: ("y" | newcodecs.q_float(0.0, 8192.0, 20)) - ).xmap[Waypoint] ( + ).xmap[Waypoint]( { case x :: y :: HNil => Waypoint(x, y) @@ -73,10 +72,10 @@ object OrbitalStrikeWaypointMessage extends Marshallable[OrbitalStrikeWaypointMe } ) - implicit val codec : Codec[OrbitalStrikeWaypointMessage] = ( + implicit val codec: Codec[OrbitalStrikeWaypointMessage] = ( ("guid" | PlanetSideGUID.codec) :: optional(bool, coords_value) - ).xmap[OrbitalStrikeWaypointMessage] ( + ).xmap[OrbitalStrikeWaypointMessage]( { case u :: coords :: HNil => OrbitalStrikeWaypointMessage(u, coords) diff --git a/common/src/main/scala/net/psforever/packet/game/OxygenStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/OxygenStateMessage.scala index 96ef7fd7..2f8b3c82 100644 --- a/common/src/main/scala/net/psforever/packet/game/OxygenStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/OxygenStateMessage.scala @@ -18,9 +18,7 @@ import shapeless.{::, HNil} * clear any active countdowns if `false`; * defaults to `true` */ -final case class WaterloggedVehicleState(vehicle_guid : PlanetSideGUID, - progress : Float, - active : Boolean = true) +final case class WaterloggedVehicleState(vehicle_guid: PlanetSideGUID, progress: Float, active: Boolean = true) /** * Dispatched by the server to cause the player to slowly drown. @@ -49,17 +47,19 @@ final case class WaterloggedVehicleState(vehicle_guid : PlanetSideGUID, * clear any active countdowns if `false` * @param vehicle_state optional state of the vehicle the player is driving */ -final case class OxygenStateMessage(player_guid : PlanetSideGUID, - progress : Float, - active : Boolean, - vehicle_state : Option[WaterloggedVehicleState] = None) - extends PlanetSideGamePacket { +final case class OxygenStateMessage( + player_guid: PlanetSideGUID, + progress: Float, + active: Boolean, + vehicle_state: Option[WaterloggedVehicleState] = None +) extends PlanetSideGamePacket { type Packet = OxygenStateMessage def opcode = GamePacketOpcode.OxygenStateMessage def encode = OxygenStateMessage.encode(this) } object OxygenStateMessage extends Marshallable[OxygenStateMessage] { + /** * Overloaded constructor that removes the optional state of the `WaterloggedVehicleState` parameter. * @param player_guid the player @@ -68,7 +68,12 @@ object OxygenStateMessage extends Marshallable[OxygenStateMessage] { * @param vehicle_state state of the vehicle the player is driving * @return */ - def apply(player_guid : PlanetSideGUID, progress : Float, active : Boolean, vehicle_state : WaterloggedVehicleState) : OxygenStateMessage = + def apply( + player_guid: PlanetSideGUID, + progress: Float, + active: Boolean, + vehicle_state: WaterloggedVehicleState + ): OxygenStateMessage = OxygenStateMessage(player_guid, progress, active, Some(vehicle_state)) /** @@ -80,13 +85,17 @@ object OxygenStateMessage extends Marshallable[OxygenStateMessage] { * A `Codec` for the repeated processing of three values. * This `Codec` is the basis for the packet's data. */ - private val base_codec : Codec[basePattern] = + private val base_codec: Codec[basePattern] = PlanetSideGUID.codec :: - newcodecs.q_float(0.0f, 204.8f, 11) :: //hackish: 2^11 == 2047, so it should be 204.7; but, 204.8 allows decode == encode + newcodecs.q_float( + 0.0f, + 204.8f, + 11 + ) :: //hackish: 2^11 == 2047, so it should be 204.7; but, 204.8 allows decode == encode bool - implicit val codec : Codec[OxygenStateMessage] = ( - base_codec.exmap[basePattern] ( + implicit val codec: Codec[OxygenStateMessage] = ( + base_codec.exmap[basePattern]( { case guid :: time :: active :: HNil => Attempt.successful(guid :: time :: active :: HNil) @@ -96,17 +105,20 @@ object OxygenStateMessage extends Marshallable[OxygenStateMessage] { Attempt.successful(guid :: time :: active :: HNil) } ) :+ - optional(bool, - "vehicle_state" | base_codec.exmap[WaterloggedVehicleState] ( - { - case guid :: time :: active :: HNil => - Attempt.successful(WaterloggedVehicleState(guid, time, active)) - }, - { - case WaterloggedVehicleState(guid, time, active) => - Attempt.successful(guid :: time :: active :: HNil) - } - ).as[WaterloggedVehicleState] + optional( + bool, + "vehicle_state" | base_codec + .exmap[WaterloggedVehicleState]( + { + case guid :: time :: active :: HNil => + Attempt.successful(WaterloggedVehicleState(guid, time, active)) + }, + { + case WaterloggedVehicleState(guid, time, active) => + Attempt.successful(guid :: time :: active :: HNil) + } + ) + .as[WaterloggedVehicleState] ) - ).as[OxygenStateMessage] + ).as[OxygenStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/PickupItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/PickupItemMessage.scala index f4957153..d8969c69 100644 --- a/common/src/main/scala/net/psforever/packet/game/PickupItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PickupItemMessage.scala @@ -20,21 +20,18 @@ import scodec.codecs._ * @param unk1 na * @param unk2 na */ -final case class PickupItemMessage(item_guid : PlanetSideGUID, - player_guid : PlanetSideGUID, - unk1 : Int, - unk2 : Int) - extends PlanetSideGamePacket { +final case class PickupItemMessage(item_guid: PlanetSideGUID, player_guid: PlanetSideGUID, unk1: Int, unk2: Int) + extends PlanetSideGamePacket { type Packet = PickupItemMessage def opcode = GamePacketOpcode.PickupItemMessage def encode = PickupItemMessage.encode(this) } object PickupItemMessage extends Marshallable[PickupItemMessage] { - implicit val codec : Codec[PickupItemMessage] = ( + implicit val codec: Codec[PickupItemMessage] = ( ("item_guid" | PlanetSideGUID.codec) :: ("player_guid" | PlanetSideGUID.codec) :: ("unk1" | uint8L) :: ("unk2" | uint16L) - ).as[PickupItemMessage] + ).as[PickupItemMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/PingMsg.scala b/common/src/main/scala/net/psforever/packet/game/PingMsg.scala index 3dca80a7..d3a06e29 100644 --- a/common/src/main/scala/net/psforever/packet/game/PingMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/PingMsg.scala @@ -10,15 +10,15 @@ import scodec.codecs._ * @param serverSlot Which server on the server display is the ping referring to * @param ticks The number of ticks. Usually just reflected back to the client */ -final case class PingMsg(serverSlot : Long, ticks : Long) extends PlanetSideGamePacket { +final case class PingMsg(serverSlot: Long, ticks: Long) extends PlanetSideGamePacket { type Packet = PingMsg def opcode = GamePacketOpcode.PingMsg def encode = PingMsg.encode(this) } object PingMsg extends Marshallable[PingMsg] { - implicit val codec : Codec[PingMsg] = ( + implicit val codec: Codec[PingMsg] = ( ("server_slot" | uint32L) :: ("ticks" | uint32L) - ).as[PingMsg] -} \ No newline at end of file + ).as[PingMsg] +} diff --git a/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala index 6ee5293f..46625cc4 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlanetsideAttributeMessage.scala @@ -199,27 +199,25 @@ import scodec.codecs._ * @param attribute_type the field * @param attribute_value the value */ -final case class PlanetsideAttributeMessage(guid : PlanetSideGUID, - attribute_type : Int, - attribute_value : Long) - extends PlanetSideGamePacket { +final case class PlanetsideAttributeMessage(guid: PlanetSideGUID, attribute_type: Int, attribute_value: Long) + extends PlanetSideGamePacket { type Packet = PlanetsideAttributeMessage def opcode = GamePacketOpcode.PlanetsideAttributeMessage def encode = PlanetsideAttributeMessage.encode(this) } object PlanetsideAttributeMessage extends Marshallable[PlanetsideAttributeMessage] { - def apply(guid : PlanetSideGUID, attribute_type : Int, attribute_value : Int) : PlanetsideAttributeMessage = { + def apply(guid: PlanetSideGUID, attribute_type: Int, attribute_value: Int): PlanetsideAttributeMessage = { PlanetsideAttributeMessage(guid, attribute_type, attribute_value.toLong) } - def apply(guid : PlanetSideGUID, attribute_type : Int, attribute_value : PlanetSideGUID) : PlanetsideAttributeMessage = { + def apply(guid: PlanetSideGUID, attribute_type: Int, attribute_value: PlanetSideGUID): PlanetsideAttributeMessage = { PlanetsideAttributeMessage(guid, attribute_type, attribute_value.guid) } - implicit val codec : Codec[PlanetsideAttributeMessage] = ( + implicit val codec: Codec[PlanetsideAttributeMessage] = ( ("guid" | PlanetSideGUID.codec) :: ("attribute_type" | uint8L) :: ("attribute_value" | uint32L) - ).as[PlanetsideAttributeMessage] + ).as[PlanetsideAttributeMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/PlanetsideStringAttributeMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlanetsideStringAttributeMessage.scala index 93f65952..c31679bc 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlanetsideStringAttributeMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlanetsideStringAttributeMessage.scala @@ -14,19 +14,17 @@ import scodec.codecs._ * @param string_type na * @param string_value na */ -final case class PlanetsideStringAttributeMessage(guid : PlanetSideGUID, - string_type : Int, - string_value : String) - extends PlanetSideGamePacket { +final case class PlanetsideStringAttributeMessage(guid: PlanetSideGUID, string_type: Int, string_value: String) + extends PlanetSideGamePacket { type Packet = PlanetsideStringAttributeMessage def opcode = GamePacketOpcode.PlanetsideStringAttributeMessage def encode = PlanetsideStringAttributeMessage.encode(this) } object PlanetsideStringAttributeMessage extends Marshallable[PlanetsideStringAttributeMessage] { - implicit val codec : Codec[PlanetsideStringAttributeMessage] = ( + implicit val codec: Codec[PlanetsideStringAttributeMessage] = ( ("guid" | PlanetSideGUID.codec) :: ("string_type" | uint8L) :: ("string_value" | PacketHelpers.encodedWideString) - ).as[PlanetsideStringAttributeMessage] + ).as[PlanetsideStringAttributeMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala index f10a1e3f..c1b69f9a 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala @@ -26,17 +26,15 @@ import scodec.codecs._ * @param stasis `true` by default; * nothing when `false` (?) */ -final case class PlayerStasisMessage(player_guid : PlanetSideGUID, - stasis : Boolean = true) - extends PlanetSideGamePacket { +final case class PlayerStasisMessage(player_guid: PlanetSideGUID, stasis: Boolean = true) extends PlanetSideGamePacket { type Packet = PlayerStasisMessage def opcode = GamePacketOpcode.PlayerStasisMessage def encode = PlayerStasisMessage.encode(this) } object PlayerStasisMessage extends Marshallable[PlayerStasisMessage] { - implicit val codec : Codec[PlayerStasisMessage] = ( + implicit val codec: Codec[PlayerStasisMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("stasis" | bool) - ).as[PlayerStasisMessage] + ).as[PlayerStasisMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/PlayerStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlayerStateMessage.scala index 2aa94287..59a50c4b 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlayerStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlayerStateMessage.scala @@ -45,18 +45,19 @@ import shapeless.{::, HNil} * @param jump_thrust provide a measure of vertical stability when really close to the avatar character * @param is_cloaked avatar is cloaked by virtue of an Infiltration Suit */ -final case class PlayerStateMessage(guid : PlanetSideGUID, - pos : Vector3, - vel : Option[Vector3], - facingYaw : Float, - facingPitch : Float, - facingYawUpper : Float, - timestamp : Int, - is_crouching : Boolean = false, - is_jumping : Boolean = false, - jump_thrust : Boolean = false, - is_cloaked : Boolean = false) - extends PlanetSideGamePacket { +final case class PlayerStateMessage( + guid: PlanetSideGUID, + pos: Vector3, + vel: Option[Vector3], + facingYaw: Float, + facingPitch: Float, + facingYawUpper: Float, + timestamp: Int, + is_crouching: Boolean = false, + is_jumping: Boolean = false, + jump_thrust: Boolean = false, + is_cloaked: Boolean = false +) extends PlanetSideGamePacket { type Packet = PlayerStateMessage def opcode = GamePacketOpcode.PlayerStateMessage def encode = PlayerStateMessage.encode(this) @@ -68,28 +69,30 @@ object PlayerStateMessage extends Marshallable[PlayerStateMessage] { /** * A `Codec` for reading out the four `Boolean` values near the end of the formal packet. */ - val booleanCodec : Codec[fourBoolPattern] = ( + val booleanCodec: Codec[fourBoolPattern] = ( ("is_crouching" | bool) :: ("is_jumping" | bool) :: ("jump_thrust" | bool) :: ("is_cloaked" | bool) - ).as[fourBoolPattern] + ).as[fourBoolPattern] /** * A `Codec` for ignoring the four values at the end of the formal packet (all set to `false`). */ - val defaultCodec : Codec[fourBoolPattern] = ignore(0).hlist.xmap[fourBoolPattern] ( - { - case _ :: HNil => - false :: false :: false :: false :: HNil - }, - { - case _ :: _ :: _ :: _ :: HNil => - () :: HNil - } - ).as[fourBoolPattern] + val defaultCodec: Codec[fourBoolPattern] = ignore(0).hlist + .xmap[fourBoolPattern]( + { + case _ :: HNil => + false :: false :: false :: false :: HNil + }, + { + case _ :: _ :: _ :: _ :: HNil => + () :: HNil + } + ) + .as[fourBoolPattern] - implicit val codec : Codec[PlayerStateMessage] = ( + implicit val codec: Codec[PlayerStateMessage] = ( ("guid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) :: optional(bool, "vel" | Vector3.codec_vel) :: @@ -98,16 +101,16 @@ object PlayerStateMessage extends Marshallable[PlayerStateMessage] { ("facingYawUpper" | Angular.codec_zero_centered) :: ("unk1" | uintL(10)) :: (bool >>:~ { fourBools => - newcodecs.binary_choice(!fourBools, booleanCodec, defaultCodec) - }) - ).xmap[PlayerStateMessage] ( + newcodecs.binary_choice(!fourBools, booleanCodec, defaultCodec) + }) + ).xmap[PlayerStateMessage]( { case uid :: pos :: vel :: f1 :: f2 :: f3 :: u :: _ :: b1 :: b2 :: b3 :: b4 :: HNil => PlayerStateMessage(uid, pos, vel, f1, f2, f3, u, b1, b2, b3, b4) }, { case PlayerStateMessage(uid, pos, vel, f1, f2, f3, u, b1, b2, b3, b4) => - val b : Boolean = !(b1 || b2 || b3 || b4) + val b: Boolean = !(b1 || b2 || b3 || b4) uid :: pos :: vel :: f1 :: f2 :: f3 :: u :: b :: b1 :: b2 :: b3 :: b4 :: HNil } ) diff --git a/common/src/main/scala/net/psforever/packet/game/PlayerStateMessageUpstream.scala b/common/src/main/scala/net/psforever/packet/game/PlayerStateMessageUpstream.scala index 460da534..87baa713 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlayerStateMessageUpstream.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlayerStateMessageUpstream.scala @@ -34,21 +34,22 @@ import scodec.codecs._ * @param unk2 na * @param unk3 na */ -final case class PlayerStateMessageUpstream(avatar_guid : PlanetSideGUID, - pos : Vector3, - vel : Option[Vector3], - facingYaw : Float, - facingPitch : Float, - facingYawUpper : Float, - seq_time : Int, - unk1 : Int, - is_crouching : Boolean, - is_jumping : Boolean, - jump_thrust : Boolean, - is_cloaked : Boolean, - unk2 : Int, - unk3 : Int) - extends PlanetSideGamePacket { +final case class PlayerStateMessageUpstream( + avatar_guid: PlanetSideGUID, + pos: Vector3, + vel: Option[Vector3], + facingYaw: Float, + facingPitch: Float, + facingYawUpper: Float, + seq_time: Int, + unk1: Int, + is_crouching: Boolean, + is_jumping: Boolean, + jump_thrust: Boolean, + is_cloaked: Boolean, + unk2: Int, + unk3: Int +) extends PlanetSideGamePacket { assert(seq_time > -1 && seq_time < 1024) type Packet = PlayerStateMessageUpstream @@ -57,7 +58,7 @@ final case class PlayerStateMessageUpstream(avatar_guid : PlanetSideGUID, } object PlayerStateMessageUpstream extends Marshallable[PlayerStateMessageUpstream] { - implicit val codec : Codec[PlayerStateMessageUpstream] = ( + implicit val codec: Codec[PlayerStateMessageUpstream] = ( ("avatar_guid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) :: ("vel" | optional(bool, Vector3.codec_vel)) :: @@ -72,5 +73,5 @@ object PlayerStateMessageUpstream extends Marshallable[PlayerStateMessageUpstrea ("is_cloaked" | bool) :: ("unk2" | uint8L) :: ("unk3" | uint16L) - ).as[PlayerStateMessageUpstream] + ).as[PlayerStateMessageUpstream] } diff --git a/common/src/main/scala/net/psforever/packet/game/PlayerStateShiftMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlayerStateShiftMessage.scala index f48c06fc..c664680b 100644 --- a/common/src/main/scala/net/psforever/packet/game/PlayerStateShiftMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PlayerStateShiftMessage.scala @@ -32,10 +32,7 @@ import shapeless.{::, HNil} * @see `PlayerStateMessageUpstream.facingYawUpper` * @see `PlayerStateMessage.facingYawUpper` */ -final case class ShiftState(unk : Int, - pos : Vector3, - viewYawLim : Float, - vel : Option[Vector3]) +final case class ShiftState(unk: Int, pos: Vector3, viewYawLim: Float, vel: Option[Vector3]) /** * Push specific motion-based stimuli on a specific character.
@@ -49,15 +46,15 @@ final case class ShiftState(unk : Int, * @param state if defined, the behaviors to influence the character * @param unk na */ -final case class PlayerStateShiftMessage(state : Option[ShiftState], - unk : Option[Int] = None) - extends PlanetSideGamePacket { +final case class PlayerStateShiftMessage(state: Option[ShiftState], unk: Option[Int] = None) + extends PlanetSideGamePacket { type Packet = PlayerStateShiftMessage def opcode = GamePacketOpcode.PlayerStateShiftMessage def encode = PlayerStateShiftMessage.encode(this) } object ShiftState { + /** * An abbreviated constructor for creating `ShiftState`, assuming velocity is not applied. * @param unk na @@ -66,7 +63,7 @@ object ShiftState { * @param vel the velocity to apply to to the character at the given position * @return a `ShiftState` object */ - def apply(unk : Int, pos : Vector3, viewYawLim : Float, vel : Vector3) : ShiftState = + def apply(unk: Int, pos: Vector3, viewYawLim: Float, vel: Vector3): ShiftState = ShiftState(unk, pos, viewYawLim, Some(vel)) /** @@ -76,18 +73,19 @@ object ShiftState { * @param viewYawLim an angle with respect to the horizon towards which the avatar is looking (to some respect) * @return a `ShiftState` object */ - def apply(unk : Int, pos : Vector3, viewYawLim : Float) : ShiftState = + def apply(unk: Int, pos: Vector3, viewYawLim: Float): ShiftState = ShiftState(unk, pos, viewYawLim, None) } object PlayerStateShiftMessage extends Marshallable[PlayerStateShiftMessage] { + /** * An abbreviated constructor for creating `PlayerStateShiftMessage`, removing the optional condition of `state`. * @param state the behaviors to influence the character * @param unk na * @return a `PlayerStateShiftMessage` packet */ - def apply(state : ShiftState, unk : Int) : PlayerStateShiftMessage = + def apply(state: ShiftState, unk: Int): PlayerStateShiftMessage = PlayerStateShiftMessage(Some(state), Some(unk)) /** @@ -95,7 +93,7 @@ object PlayerStateShiftMessage extends Marshallable[PlayerStateShiftMessage] { * @param state the behaviors to influence the character * @return a `PlayerStateShiftMessage` packet */ - def apply(state : ShiftState) : PlayerStateShiftMessage = + def apply(state: ShiftState): PlayerStateShiftMessage = PlayerStateShiftMessage(Some(state), None) /** @@ -103,10 +101,10 @@ object PlayerStateShiftMessage extends Marshallable[PlayerStateShiftMessage] { * @param unk na * @return a `PlayerStateShiftMessage` packet */ - def apply(unk : Int) : PlayerStateShiftMessage = + def apply(unk: Int): PlayerStateShiftMessage = PlayerStateShiftMessage(None, Some(unk)) - private val shift_codec : Codec[ShiftState] = ( + private val shift_codec: Codec[ShiftState] = ( /* IMPORTANT: Packet data indicates that viewYawLimit is an 8u value. @@ -117,7 +115,7 @@ object PlayerStateShiftMessage extends Marshallable[PlayerStateShiftMessage] { ("pos" | Vector3.codec_pos) :: ("viewYawLim" | Angular.codec_yaw()) :: optional(bool, "pos" | Vector3.codec_vel) - ).xmap[ShiftState] ( + ).xmap[ShiftState]( { case a :: b :: c :: d :: HNil => ShiftState(a, b, c, d) @@ -128,17 +126,17 @@ object PlayerStateShiftMessage extends Marshallable[PlayerStateShiftMessage] { } ).as[ShiftState] - implicit val codec : Codec[PlayerStateShiftMessage] = ( + implicit val codec: Codec[PlayerStateShiftMessage] = ( optional(bool, "state" | shift_codec) :: optional(bool, "unk" | uintL(3)) - ).xmap[PlayerStateShiftMessage] ( - { - case a :: b :: HNil => - PlayerStateShiftMessage(a, b) - }, - { - case PlayerStateShiftMessage(a, b) => - a :: b :: HNil - } - ).as[PlayerStateShiftMessage] + ).xmap[PlayerStateShiftMessage]( + { + case a :: b :: HNil => + PlayerStateShiftMessage(a, b) + }, + { + case PlayerStateShiftMessage(a, b) => + a :: b :: HNil + } + ).as[PlayerStateShiftMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ProjectileStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ProjectileStateMessage.scala index 149d8dff..955cb329 100644 --- a/common/src/main/scala/net/psforever/packet/game/ProjectileStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ProjectileStateMessage.scala @@ -47,21 +47,22 @@ import shapeless.{::, HNil} * @param hit_target_guid the global unique identifier of the object the projwectile collided with; * will be 0 if it reached the end of its life naturally, without colliding with anything */ -final case class ProjectileStateMessage(projectile_guid : PlanetSideGUID, - shot_pos : Vector3, - shot_vel : Vector3, - shot_original_orient : Vector3, - sequence_num : Int, - end : Boolean, - hit_target_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class ProjectileStateMessage( + projectile_guid: PlanetSideGUID, + shot_pos: Vector3, + shot_vel: Vector3, + shot_original_orient: Vector3, + sequence_num: Int, + end: Boolean, + hit_target_guid: PlanetSideGUID +) extends PlanetSideGamePacket { type Packet = ProjectileStateMessage def opcode = GamePacketOpcode.ProjectileStateMessage def encode = ProjectileStateMessage.encode(this) } object ProjectileStateMessage extends Marshallable[ProjectileStateMessage] { - implicit val codec : Codec[ProjectileStateMessage] = ( + implicit val codec: Codec[ProjectileStateMessage] = ( ("projectile_guid" | PlanetSideGUID.codec) :: ("shot_pos" | Vector3.codec_pos) :: ("shot_vel" | Vector3.codec_float) :: @@ -71,10 +72,10 @@ object ProjectileStateMessage extends Marshallable[ProjectileStateMessage] { ("sequence_num" | uint8) :: ("end" | bool) :: ("hit_target" | PlanetSideGUID.codec) - ).xmap[ProjectileStateMessage] ( + ).xmap[ProjectileStateMessage]( { case guid :: pos :: vel :: roll :: pitch :: yaw :: sequence_num :: explode :: unk :: HNil => - ProjectileStateMessage(guid, pos, vel, Vector3(roll, pitch, yaw), sequence_num , explode, unk) + ProjectileStateMessage(guid, pos, vel, Vector3(roll, pitch, yaw), sequence_num, explode, unk) }, { case ProjectileStateMessage(guid, pos, vel, Vector3(roll, pitch, yaw), sequence_num, explode, unk) => diff --git a/common/src/main/scala/net/psforever/packet/game/PropertyOverrideMessage.scala b/common/src/main/scala/net/psforever/packet/game/PropertyOverrideMessage.scala index 39a5a7ae..32caab73 100644 --- a/common/src/main/scala/net/psforever/packet/game/PropertyOverrideMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/PropertyOverrideMessage.scala @@ -16,19 +16,20 @@ import shapeless.{::, HNil} * What else can you do with this packet? * @param list a `List` defining scopes for the targets of internal property changes */ -final case class PropertyOverrideMessage(list : List[PropertyOverrideMessage.GamePropertyScope]) - extends PlanetSideGamePacket { +final case class PropertyOverrideMessage(list: List[PropertyOverrideMessage.GamePropertyScope]) + extends PlanetSideGamePacket { type Packet = PropertyOverrideMessage def opcode = GamePacketOpcode.PropertyOverrideMessage def encode = PropertyOverrideMessage.encode(this) } object GamePropertyTarget { + /** * A target value referring to general game properties. * In the context of this `GamePacket`, usually scoped to a "global" zone. */ - final val game_properties : Int = 343 + final val game_properties: Int = 343 /** * Overloaded constructor for defining a target for a single paired key and value (String -> String). @@ -36,7 +37,7 @@ object GamePropertyTarget { * @param kv the key-value pair * @return a `PropertyOverrideMessage.GamePropertyTarget` association object */ - def apply(target : Int, kv : (String, String)) : PropertyOverrideMessage.GamePropertyTarget = { + def apply(target: Int, kv: (String, String)): PropertyOverrideMessage.GamePropertyTarget = { PropertyOverrideMessage.GamePropertyTarget(target, PropertyOverrideMessage.GameProperty(kv._1, kv._2) :: Nil) } @@ -46,22 +47,29 @@ object GamePropertyTarget { * @param list a `List` of key-value pairs * @return a `PropertyOverrideMessage.GamePropertyTarget` association object */ - def apply(target : Int, list : List[(String, String)]) : PropertyOverrideMessage.GamePropertyTarget = { - PropertyOverrideMessage.GamePropertyTarget(target, list.map({ - case(key, value) => - PropertyOverrideMessage.GameProperty(key, value) - })) + def apply(target: Int, list: List[(String, String)]): PropertyOverrideMessage.GamePropertyTarget = { + PropertyOverrideMessage.GamePropertyTarget( + target, + list.map({ + case (key, value) => + PropertyOverrideMessage.GameProperty(key, value) + }) + ) } } object GamePropertyScope { + /** * Overloaded constructor for defining a scope for the contained property. * @param zone a game zone where this property is valid * @param property a targeted key-value pair * @return a `PropertyOverrideMessage.GamePropertyScope` association object */ - def apply(zone : Int, property : PropertyOverrideMessage.GamePropertyTarget) : PropertyOverrideMessage.GamePropertyScope = { + def apply( + zone: Int, + property: PropertyOverrideMessage.GamePropertyTarget + ): PropertyOverrideMessage.GamePropertyScope = { PropertyOverrideMessage.GamePropertyScope(zone, property :: Nil) } @@ -71,12 +79,16 @@ object GamePropertyScope { * @param list a `List` of targeted key-value pairs * @return a `PropertyOverrideMessage.GamePropertyScope` association object */ - def apply(zone : Int, list : List[PropertyOverrideMessage.GamePropertyTarget]) : PropertyOverrideMessage.GamePropertyScope = { + def apply( + zone: Int, + list: List[PropertyOverrideMessage.GamePropertyTarget] + ): PropertyOverrideMessage.GamePropertyScope = { PropertyOverrideMessage.GamePropertyScope(zone, list) } } object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { + /** * A wrapper class for the key-value pair. * Another class's overloading allows this to be parsed in a format `field1 -> field2` slightly more idiomatic to pairs. @@ -84,7 +96,7 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * occasionally, the only param * @param field2 the "value" */ - final case class GameProperty(field1 : String, field2 : String) + final case class GameProperty(field1: String, field2: String) /** * The association between a target and the properties that affect it. @@ -92,7 +104,7 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * @param list the properties * @see `ObjectClass` */ - final case class GamePropertyTarget(target : Int, list : List[GameProperty]) + final case class GamePropertyTarget(target: Int, list: List[GameProperty]) /** * The association between a continent/zone and how game objects are affected differently in that region. @@ -100,14 +112,14 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * 0 refers to server-wide properties * @param list the target and its property changes */ - final case class GamePropertyScope(zone : Int, list : List[GamePropertyTarget]) + final case class GamePropertyScope(zone: Int, list: List[GamePropertyTarget]) /** * Overloaded constructor for defining a single region where object properties are to be changed. * @param list a list of regions, objects, and changed properties * @return a `PropertyOverrideMessage` object */ - def apply(list : PropertyOverrideMessage.GamePropertyScope) : PropertyOverrideMessage = { + def apply(list: PropertyOverrideMessage.GamePropertyScope): PropertyOverrideMessage = { PropertyOverrideMessage(list :: Nil) } @@ -116,15 +128,16 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * @param n the padding of the first `String` * @return a `GameProperty` object */ - private def value_pair_aligned_codec(n : Int) : Codec[GameProperty] = ( - ("field1" | PacketHelpers.encodedStringAligned(n)) :: - ("field2" | PacketHelpers.encodedString) + private def value_pair_aligned_codec(n: Int): Codec[GameProperty] = + ( + ("field1" | PacketHelpers.encodedStringAligned(n)) :: + ("field2" | PacketHelpers.encodedString) ).as[GameProperty] /** * `Codec` for two strings containing a key-value pair. */ - private val value_pair_codec : Codec[GameProperty] = ( + private val value_pair_codec: Codec[GameProperty] = ( ("field1" | PacketHelpers.encodedString) :: ("field2" | PacketHelpers.encodedString) ).as[GameProperty] @@ -134,33 +147,34 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * @param n the padding of the first key in the first entry of the contents * @return a `GamePropertyTarget` object */ - private def game_property_target_codec(n : Int) : Codec[GamePropertyTarget] = ( - ("target" | uintL(11)) :: - (uint16L >>:~ { len => + private def game_property_target_codec(n: Int): Codec[GamePropertyTarget] = + ( + ("target" | uintL(11)) :: + (uint16L >>:~ { len => conditional(len > 0, value_pair_aligned_codec(n)) :: conditional(len > 1, PacketHelpers.listOfNSized((len - 1).toLong, value_pair_codec)) }) - ).xmap[GamePropertyTarget] ( - { - case target :: _ :: None :: None :: HNil => //unlikely - GamePropertyTarget(target, Nil) + ).xmap[GamePropertyTarget]( + { + case target :: _ :: None :: None :: HNil => //unlikely + GamePropertyTarget(target, Nil) - case target :: _ :: Some(first) :: None :: HNil => - GamePropertyTarget(target, first :: Nil) + case target :: _ :: Some(first) :: None :: HNil => + GamePropertyTarget(target, first :: Nil) - case target :: _ :: Some(first) :: Some(other) :: HNil => - GamePropertyTarget(target, first +: other) - }, - { - case GamePropertyTarget(target, list) => - val (first, other) = list match { - case ((f : GameProperty) +: (rest : List[GameProperty])) => (Some(f), Some(rest)) - case (f : GameProperty) +: Nil => (Some(f), None) - case Nil => (None, None) //unlikely - } - target :: list.length :: first :: other :: HNil - } - ) + case target :: _ :: Some(first) :: Some(other) :: HNil => + GamePropertyTarget(target, first +: other) + }, + { + case GamePropertyTarget(target, list) => + val (first, other) = list match { + case ((f: GameProperty) +: (rest: List[GameProperty])) => (Some(f), Some(rest)) + case (f: GameProperty) +: Nil => (Some(f), None) + case Nil => (None, None) //unlikely + } + target :: list.length :: first :: other :: HNil + } + ) /** * `Codec` for defining the scope and switching between and concatenating different alignments for the target `Codec`.
@@ -170,13 +184,13 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { * For every subsequent scope, the leading property will only incur the displacement of a single 11-bit field. * These properties will be byte-aligned by five bits. */ - private val game_property_scope_codec : Codec[GamePropertyScope] = ( + private val game_property_scope_codec: Codec[GamePropertyScope] = ( ("zone" | uint16L) :: (uintL(11) >>:~ { len => - conditional(len > 0, game_property_target_codec(2)) :: - conditional(len > 1, PacketHelpers.listOfNSized((len - 1).toLong, game_property_target_codec(5))) + conditional(len > 0, game_property_target_codec(2)) :: + conditional(len > 1, PacketHelpers.listOfNSized((len - 1).toLong, game_property_target_codec(5))) }) - ).xmap[GamePropertyScope] ( + ).xmap[GamePropertyScope]( { case zone :: _ :: None :: None :: HNil => //unlikely GamePropertyScope(zone, Nil) @@ -190,13 +204,14 @@ object PropertyOverrideMessage extends Marshallable[PropertyOverrideMessage] { { case GamePropertyScope(zone, list) => val (first, other) = list match { - case ((f : GamePropertyTarget) +: (rest : List[GamePropertyTarget])) => (Some(f), Some(rest)) - case (f : GamePropertyTarget) +: Nil => (Some(f), None) - case Nil => (None, None) //unlikely + case ((f: GamePropertyTarget) +: (rest: List[GamePropertyTarget])) => (Some(f), Some(rest)) + case (f: GamePropertyTarget) +: Nil => (Some(f), None) + case Nil => (None, None) //unlikely } zone :: list.length :: first :: other :: HNil } ) - implicit val codec : Codec[PropertyOverrideMessage] = listOfN(uint16L, game_property_scope_codec).as[PropertyOverrideMessage] + implicit val codec: Codec[PropertyOverrideMessage] = + listOfN(uint16L, game_property_scope_codec).as[PropertyOverrideMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ProximityTerminalUseMessage.scala b/common/src/main/scala/net/psforever/packet/game/ProximityTerminalUseMessage.scala index ca62ec8c..b3e7e0f1 100644 --- a/common/src/main/scala/net/psforever/packet/game/ProximityTerminalUseMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ProximityTerminalUseMessage.scala @@ -18,19 +18,17 @@ import scodec.codecs._ * @param object_guid the object whose functionality is triggered * @param unk na */ -final case class ProximityTerminalUseMessage(player_guid : PlanetSideGUID, - object_guid : PlanetSideGUID, - unk : Boolean) - extends PlanetSideGamePacket { +final case class ProximityTerminalUseMessage(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, unk: Boolean) + extends PlanetSideGamePacket { type Packet = ProximityTerminalUseMessage def opcode = GamePacketOpcode.ProximityTerminalUseMessage def encode = ProximityTerminalUseMessage.encode(this) } object ProximityTerminalUseMessage extends Marshallable[ProximityTerminalUseMessage] { - implicit val codec : Codec[ProximityTerminalUseMessage] = ( + implicit val codec: Codec[ProximityTerminalUseMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("object_guid" | PlanetSideGUID.codec) :: ("unk" | bool) - ).as[ProximityTerminalUseMessage] + ).as[ProximityTerminalUseMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/QuantityDeltaUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/QuantityDeltaUpdateMessage.scala index 0aad2935..b5a7774c 100644 --- a/common/src/main/scala/net/psforever/packet/game/QuantityDeltaUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/QuantityDeltaUpdateMessage.scala @@ -14,17 +14,16 @@ import scodec.codecs._ * @param item_guid the item to update * @param quantity_delta the change in quantity of the item */ -final case class QuantityDeltaUpdateMessage(item_guid : PlanetSideGUID, - quantity_delta : Int) - extends PlanetSideGamePacket { +final case class QuantityDeltaUpdateMessage(item_guid: PlanetSideGUID, quantity_delta: Int) + extends PlanetSideGamePacket { type Packet = QuantityDeltaUpdateMessage def opcode = GamePacketOpcode.QuantityDeltaUpdateMessage def encode = QuantityDeltaUpdateMessage.encode(this) } object QuantityDeltaUpdateMessage extends Marshallable[QuantityDeltaUpdateMessage] { - implicit val codec : Codec[QuantityDeltaUpdateMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("quantity_delta" | int32L) - ).as[QuantityDeltaUpdateMessage] + implicit val codec: Codec[QuantityDeltaUpdateMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("quantity_delta" | int32L) + ).as[QuantityDeltaUpdateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/QuantityUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/QuantityUpdateMessage.scala index 33e87c66..de11eb98 100644 --- a/common/src/main/scala/net/psforever/packet/game/QuantityUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/QuantityUpdateMessage.scala @@ -14,17 +14,15 @@ import scodec.codecs._ * @param item_guid the item to update * @param quantity the quantity to update the item to */ -final case class QuantityUpdateMessage(item_guid : PlanetSideGUID, - quantity : Int) - extends PlanetSideGamePacket { +final case class QuantityUpdateMessage(item_guid: PlanetSideGUID, quantity: Int) extends PlanetSideGamePacket { type Packet = QuantityUpdateMessage def opcode = GamePacketOpcode.QuantityUpdateMessage def encode = QuantityUpdateMessage.encode(this) } object QuantityUpdateMessage extends Marshallable[QuantityUpdateMessage] { - implicit val codec : Codec[QuantityUpdateMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("quantity" | int32L) - ).as[QuantityUpdateMessage] + implicit val codec: Codec[QuantityUpdateMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("quantity" | int32L) + ).as[QuantityUpdateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala index f25673ed..77d2c5fb 100644 --- a/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala @@ -4,18 +4,16 @@ package net.psforever.packet.game import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} import scodec.Codec - /** Packet send by client when clic on button after death * https://streamable.com/4r16m */ -final case class ReleaseAvatarRequestMessage() - extends PlanetSideGamePacket { +final case class ReleaseAvatarRequestMessage() extends PlanetSideGamePacket { type Packet = ReleaseAvatarRequestMessage def opcode = GamePacketOpcode.ReleaseAvatarRequestMessage def encode = ReleaseAvatarRequestMessage.encode(this) } object ReleaseAvatarRequestMessage extends Marshallable[ReleaseAvatarRequestMessage] { - implicit val codec : Codec[ReleaseAvatarRequestMessage] = PacketHelpers.emptyCodec(ReleaseAvatarRequestMessage()) + implicit val codec: Codec[ReleaseAvatarRequestMessage] = PacketHelpers.emptyCodec(ReleaseAvatarRequestMessage()) } diff --git a/common/src/main/scala/net/psforever/packet/game/ReloadMessage.scala b/common/src/main/scala/net/psforever/packet/game/ReloadMessage.scala index e0928600..a6e60256 100644 --- a/common/src/main/scala/net/psforever/packet/game/ReloadMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ReloadMessage.scala @@ -6,19 +6,16 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class ReloadMessage(item_guid : PlanetSideGUID, - ammo_clip : Long, - unk1 : Int) - extends PlanetSideGamePacket { +final case class ReloadMessage(item_guid: PlanetSideGUID, ammo_clip: Long, unk1: Int) extends PlanetSideGamePacket { type Packet = ReloadMessage def opcode = GamePacketOpcode.ReloadMessage def encode = ReloadMessage.encode(this) } object ReloadMessage extends Marshallable[ReloadMessage] { - implicit val codec : Codec[ReloadMessage] = ( - ("item_guid" | PlanetSideGUID.codec) :: - ("ammo_clip" | uint32L) :: - ("unk1" | int32L) - ).as[ReloadMessage] + implicit val codec: Codec[ReloadMessage] = ( + ("item_guid" | PlanetSideGUID.codec) :: + ("ammo_clip" | uint32L) :: + ("unk1" | int32L) + ).as[ReloadMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/RepairMessage.scala b/common/src/main/scala/net/psforever/packet/game/RepairMessage.scala index 4ee32247..ab447df4 100644 --- a/common/src/main/scala/net/psforever/packet/game/RepairMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/RepairMessage.scala @@ -17,17 +17,15 @@ import scodec.codecs._ * at 100, the progress window does not display anymore; * above 100, the progress window stays displayed unless the underlying process is interrupted */ -final case class RepairMessage(item_guid : PlanetSideGUID, - repair_value : Long) - extends PlanetSideGamePacket { +final case class RepairMessage(item_guid: PlanetSideGUID, repair_value: Long) extends PlanetSideGamePacket { type Packet = RepairMessage def opcode = GamePacketOpcode.RepairMessage def encode = RepairMessage.encode(this) } object RepairMessage extends Marshallable[RepairMessage] { - implicit val codec : Codec[RepairMessage] = ( + implicit val codec: Codec[RepairMessage] = ( ("item_guid" | PlanetSideGUID.codec) :: ("repair_value" | uint32L) - ).as[RepairMessage] + ).as[RepairMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ReplicationStreamMessage.scala b/common/src/main/scala/net/psforever/packet/game/ReplicationStreamMessage.scala index 6f0d911d..a020bb3c 100644 --- a/common/src/main/scala/net/psforever/packet/game/ReplicationStreamMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ReplicationStreamMessage.scala @@ -30,19 +30,22 @@ import scala.annotation.tailrec * sometimes it is defined but is still not applicable; * `None` if not applicable (rarely applicable) */ -final case class SquadInfo(leader : Option[String], - task : Option[String], - zone_id : Option[PlanetSideZoneID], - size : Option[Int], - capacity : Option[Int], - squad_guid : Option[PlanetSideGUID] = None) { +final case class SquadInfo( + leader: Option[String], + task: Option[String], + zone_id: Option[PlanetSideZoneID], + size: Option[Int], + capacity: Option[Int], + squad_guid: Option[PlanetSideGUID] = None +) { + /** * Populate the undefined fields of this object with the populated fields of a second object. * If the field is already defined in this object, the provided object does not contribute new data. * @param info the `SquadInfo` data to be incorporated into this object's data * @return a new `SquadInfo` object, combining with two objects' field data */ - def And(info : SquadInfo) : SquadInfo = { + def And(info: SquadInfo): SquadInfo = { SquadInfo( leader.orElse(info.leader), task.orElse(info.task), @@ -54,19 +57,20 @@ final case class SquadInfo(leader : Option[String], } //methods intended to combine the fields of itself and another object - def Leader(leader : String) : SquadInfo = + def Leader(leader: String): SquadInfo = this And SquadInfo(Some(leader), None, None, None, None, None) - def Task(task : String) : SquadInfo = + def Task(task: String): SquadInfo = this And SquadInfo(None, Some(task), None, None, None, None) - def ZoneId(zone : PlanetSideZoneID) : SquadInfo = + def ZoneId(zone: PlanetSideZoneID): SquadInfo = this And SquadInfo(None, None, Some(zone), None, None, None) - def ZoneId(zone : Option[PlanetSideZoneID]) : SquadInfo = zone match { - case Some(zoneId) => this And SquadInfo(None, None, zone, None, None, None) - case None => SquadInfo(leader, task, zone, size, capacity, squad_guid) - } - def Size(sz : Int) : SquadInfo = + def ZoneId(zone: Option[PlanetSideZoneID]): SquadInfo = + zone match { + case Some(zoneId) => this And SquadInfo(None, None, zone, None, None, None) + case None => SquadInfo(leader, task, zone, size, capacity, squad_guid) + } + def Size(sz: Int): SquadInfo = this And SquadInfo(None, None, None, Some(sz), None, None) - def Capacity(cap : Int) : SquadInfo = + def Capacity(cap: Int): SquadInfo = this And SquadInfo(None, None, None, None, Some(cap), None) } @@ -78,8 +82,7 @@ final case class SquadInfo(leader : Option[String], * @param listing the squad data; * `None` when the index is 255, or when invoking a "remove" action on any squad at a known index */ -final case class SquadListing(index : Int = 255, - listing : Option[SquadInfo] = None) +final case class SquadListing(index: Int = 255, listing: Option[SquadInfo] = None) /** * Display the list of squads available to a given player.
@@ -121,22 +124,21 @@ final case class SquadListing(index : Int = 255, * it typically flags an "update" action * @param entries a `Vector` of the squad listings */ -final case class ReplicationStreamMessage(behavior : Int, - behavior2 : Option[Int], - entries : Vector[SquadListing]) - extends PlanetSideGamePacket { +final case class ReplicationStreamMessage(behavior: Int, behavior2: Option[Int], entries: Vector[SquadListing]) + extends PlanetSideGamePacket { type Packet = ReplicationStreamMessage def opcode = GamePacketOpcode.ReplicationStreamMessage def encode = ReplicationStreamMessage.encode(this) } object SquadInfo { + /** * An entry where no fields are defined. */ final val Blank = SquadInfo() - def apply() : SquadInfo = SquadInfo(None, None, None, None, None, None) + def apply(): SquadInfo = SquadInfo(None, None, None, None, None, None) /** * Alternate constructor for `SquadInfo` that ignores the `Option` requirement for the fields.
@@ -149,7 +151,7 @@ object SquadInfo { * @param capacity the maximum number of members that the squad can tolerate * @return a `SquadInfo` object */ - def apply(leader : String, task : String, continent_guid : PlanetSideZoneID, size : Int, capacity : Int) : SquadInfo = { + def apply(leader: String, task: String, continent_guid: PlanetSideZoneID, size: Int, capacity: Int): SquadInfo = { SquadInfo(Some(leader), Some(task), Some(continent_guid), Some(size), Some(capacity)) } @@ -165,7 +167,14 @@ object SquadInfo { * @param squad_guid a GUID associated with the squad, used to recover the squad definition * @return a `SquadInfo` object */ - def apply(leader : String, task : String, continent_guid : PlanetSideZoneID, size : Int, capacity : Int, squad_guid : PlanetSideGUID) : SquadInfo = { + def apply( + leader: String, + task: String, + continent_guid: PlanetSideZoneID, + size: Int, + capacity: Int, + squad_guid: PlanetSideGUID + ): SquadInfo = { SquadInfo(Some(leader), Some(task), Some(continent_guid), Some(size), Some(capacity), Some(squad_guid)) } @@ -174,7 +183,7 @@ object SquadInfo { * @param leader the name of the squad leader * @return a `SquadInfo` object */ - def apply(leader : String) : SquadInfo = { + def apply(leader: String): SquadInfo = { SquadInfo(Some(leader), None, None, None, None) } @@ -189,7 +198,7 @@ object SquadInfo { * @param task the task the squad is trying to perform * @return a `SquadInfo` object */ - def apply(leader : Option[String], task : String) : SquadInfo = { + def apply(leader: Option[String], task: String): SquadInfo = { SquadInfo(leader, Some(task), None, None, None) } @@ -198,7 +207,7 @@ object SquadInfo { * @param continent_guid the continent on which the squad is acting * @return a `SquadInfo` object */ - def apply(continent_guid : PlanetSideZoneID) : SquadInfo = { + def apply(continent_guid: PlanetSideZoneID): SquadInfo = { SquadInfo(None, None, Some(continent_guid), None, None) } @@ -207,7 +216,7 @@ object SquadInfo { * @param size the current size of the squad * @return a `SquadInfo` object */ - def apply(size : Int) : SquadInfo = { + def apply(size: Int): SquadInfo = { SquadInfo(None, None, None, Some(size), None) } @@ -223,7 +232,7 @@ object SquadInfo { * @param capacity the maximum number of members that the squad can tolerate, if not `None` * @return a `SquadInfo` object */ - def apply(size : Option[Int], capacity : Int) : SquadInfo = { + def apply(size: Option[Int], capacity: Int): SquadInfo = { SquadInfo(None, None, None, size, Some(capacity)) } @@ -234,10 +243,10 @@ object SquadInfo { * but are considered absent when performing squad list initialization. */ object Field { - final val Leader = 1 - final val Task = 2 - final val ZoneId = 3 - final val Size = 4 + final val Leader = 1 + final val Task = 2 + final val ZoneId = 3 + final val Size = 4 final val Capacity = 5 } } @@ -253,15 +262,14 @@ object SquadHeader { /** * `Codec` for reading `SquadInfo` data from the first entry from a packet with squad list initialization entries. */ - private val infoCodec : Codec[SquadInfo] = { + private val infoCodec: Codec[SquadInfo] = { import shapeless.:: (("squad_guid" | PlanetSideGUID.codec) :: ("leader" | PacketHelpers.encodedWideString) :: ("task" | PacketHelpers.encodedWideString) :: ("continent_guid" | PlanetSideZoneID.codec) :: ("size" | uint4L) :: - ("capacity" | uint4L) - ).exmap[SquadInfo]( + ("capacity" | uint4L)).exmap[SquadInfo]( { case sguid :: lead :: tsk :: cguid :: sz :: cap :: HNil => Attempt.successful(SquadInfo(lead, tsk, cguid, sz, cap, sguid)) @@ -280,7 +288,7 @@ object SquadHeader { /** * `Codec` for reading `SquadInfo` data from all entries other than the first from a packet with squad list initialization entries. */ - private val alt_infoCodec : Codec[SquadInfo] = { + private val alt_infoCodec: Codec[SquadInfo] = { import shapeless.:: ( ("squad_guid" | PlanetSideGUID.codec) :: @@ -289,7 +297,7 @@ object SquadHeader { ("continent_guid" | PlanetSideZoneID.codec) :: ("size" | uint4L) :: ("capacity" | uint4L) - ).exmap[SquadInfo] ( + ).exmap[SquadInfo]( { case sguid :: lead :: tsk :: cguid :: sz :: cap :: HNil => Attempt.successful(SquadInfo(lead, tsk, cguid, sz, cap, sguid)) @@ -308,7 +316,7 @@ object SquadHeader { /** * `Codec` for reading the `SquadInfo` data in an "update all squad data" entry. */ - private val allCodec : Codec[SquadInfo] = { + private val allCodec: Codec[SquadInfo] = { import shapeless.:: ( ("squad_guid" | PlanetSideGUID.codec) :: @@ -317,7 +325,7 @@ object SquadHeader { ("continent_guid" | PlanetSideZoneID.codec) :: ("size" | uint4L) :: ("capacity" | uint4L) - ).exmap[SquadInfo] ( + ).exmap[SquadInfo]( { case sguid :: lead :: tsk :: cguid :: sz :: cap :: HNil => Attempt.successful(SquadInfo(lead, tsk, cguid, sz, cap, sguid)) @@ -340,47 +348,49 @@ object SquadHeader { * should be a 0-7 number that gets converted to a 1-7 string padding number * @return the encoded string `Codec` */ - private def paddedStringMetaCodec(over : Int) : Codec[String] = PacketHelpers.encodedWideStringAligned({ - val mod8 = over % 8 - if(mod8 == 0) { - 0 - } - else { - 8 - mod8 - } - }) + private def paddedStringMetaCodec(over: Int): Codec[String] = + PacketHelpers.encodedWideStringAligned({ + val mod8 = over % 8 + if (mod8 == 0) { + 0 + } else { + 8 - mod8 + } + }) /** * `Codec` for reading the `SquadInfo` data in an "update squad leader" entry. */ - private def leaderCodec(over : Int) : Codec[SquadInfo] = paddedStringMetaCodec(over).exmap[SquadInfo] ( - lead => Attempt.successful(SquadInfo(lead)), - { - case SquadInfo(Some(lead), _, _, _, _, _) => - Attempt.successful(lead) - case _ => - Attempt.failure(Err("failed to encode squad data for a leader name")) - } - ) + private def leaderCodec(over: Int): Codec[SquadInfo] = + paddedStringMetaCodec(over).exmap[SquadInfo]( + lead => Attempt.successful(SquadInfo(lead)), + { + case SquadInfo(Some(lead), _, _, _, _, _) => + Attempt.successful(lead) + case _ => + Attempt.failure(Err("failed to encode squad data for a leader name")) + } + ) /** * `Codec` for reading the `SquadInfo` data in an "update task text" entry. */ - private def taskCodec(over : Int) : Codec[SquadInfo] = paddedStringMetaCodec(over).exmap[SquadInfo] ( - task => Attempt.successful(SquadInfo(None, task)), - { - case SquadInfo(_, Some(task), _, _, _, _) => - Attempt.successful(task) - case _ => - Attempt.failure(Err("failed to encode squad data for a task string")) - } - ) + private def taskCodec(over: Int): Codec[SquadInfo] = + paddedStringMetaCodec(over).exmap[SquadInfo]( + task => Attempt.successful(SquadInfo(None, task)), + { + case SquadInfo(_, Some(task), _, _, _, _) => + Attempt.successful(task) + case _ => + Attempt.failure(Err("failed to encode squad data for a task string")) + } + ) /** * `Codec` for reading the `SquadInfo` data in an "update squad zone id" entry. * In reality, the "zone's id" is the zone's server ordinal index. */ - private val zoneIdCodec : Codec[SquadInfo] = PlanetSideZoneID.codec.exmap[SquadInfo] ( + private val zoneIdCodec: Codec[SquadInfo] = PlanetSideZoneID.codec.exmap[SquadInfo]( cguid => Attempt.successful(SquadInfo(cguid)), { case SquadInfo(_, _, Some(cguid), _, _, _) => @@ -393,7 +403,7 @@ object SquadHeader { /** * `Codec` for reading the `SquadInfo` data in an "update squad size" entry. */ - private val sizeCodec : Codec[SquadInfo] = uint4L.exmap[SquadInfo] ( + private val sizeCodec: Codec[SquadInfo] = uint4L.exmap[SquadInfo]( sz => Attempt.successful(SquadInfo(sz)), { case SquadInfo(_, _, _, Some(sz), _, _) => @@ -406,7 +416,7 @@ object SquadHeader { /** * `Codec` for reading the `SquadInfo` data in an "update squad capacity" entry. */ - private val capacityCodec : Codec[SquadInfo] = uint4L.exmap[SquadInfo] ( + private val capacityCodec: Codec[SquadInfo] = uint4L.exmap[SquadInfo]( cap => Attempt.successful(SquadInfo(None, cap)), { case SquadInfo(_, _, _, _, Some(cap), _) => @@ -420,7 +430,7 @@ object SquadHeader { * `Codec` for reading the `SquadInfo` data in a "remove squad from list" entry. * While the input has no impact, it always writes the number four to a `3u` field - or `0x100`. */ - private val removeCodec : Codec[SquadInfo] = uint(3).exmap[SquadInfo] ( + private val removeCodec: Codec[SquadInfo] = uint(3).exmap[SquadInfo]( _ => Attempt.successful(SquadInfo.Blank), _ => Attempt.successful(4) ) @@ -432,7 +442,7 @@ object SquadHeader { * its determining conditional statement is explicitly `false` * and all cases involving explicit failure. */ - private val failureCodec : Codec[SquadInfo] = conditional(included = false, bool).exmap[SquadInfo] ( + private val failureCodec: Codec[SquadInfo] = conditional(included = false, bool).exmap[SquadInfo]( _ => Attempt.failure(Err("decoding with unhandled codec")), _ => Attempt.failure(Err("encoding with unhandled codec")) ) @@ -445,14 +455,14 @@ object SquadHeader { * @param info the current squad data * @param next a potential next encoded squad field */ - private final case class LinkedSquadInfo(code : Int, info : SquadInfo, next : Option[LinkedSquadInfo]) + private final case class LinkedSquadInfo(code: Int, info: SquadInfo, next: Option[LinkedSquadInfo]) /** * Concatenate a `SquadInfo` object chain into a single `SquadInfo` object. * @param info the chain * @return the concatenated `SquadInfo` object */ - private def unlinkSquadInfo(info : LinkedSquadInfo) : SquadInfo = unlinkSquadInfo(Some(info)) + private def unlinkSquadInfo(info: LinkedSquadInfo): SquadInfo = unlinkSquadInfo(Some(info)) /** * Concatenate a `SquadInfo` object chain into a single `SquadInfo` object. @@ -463,7 +473,7 @@ object SquadHeader { * @return the concatenated `SquadInfo` object */ @tailrec - private def unlinkSquadInfo(info : Option[LinkedSquadInfo], squadInfo : SquadInfo = SquadInfo.Blank) : SquadInfo = { + private def unlinkSquadInfo(info: Option[LinkedSquadInfo], squadInfo: SquadInfo = SquadInfo.Blank): SquadInfo = { info match { case None => squadInfo @@ -479,7 +489,7 @@ object SquadHeader { * @param info a `SquadInfo` object that has all relevant fields populated * @return a linked list of `SquadInfo` objects, each with a single field from the input `SquadInfo` object */ - private def linkSquadInfo(info : SquadInfo) : LinkedSquadInfo = { + private def linkSquadInfo(info: SquadInfo): LinkedSquadInfo = { //import scala.collection.immutable.:: Seq( (SquadInfo.Field.Capacity, SquadInfo(None, None, None, None, info.capacity)), @@ -488,8 +498,7 @@ object SquadHeader { (SquadInfo.Field.Task, SquadInfo(None, info.task, None, None, None)), (SquadInfo.Field.Leader, SquadInfo(info.leader, None, None, None, None)) ) //in reverse order so that the linked list is in the correct order - .filterNot { case (_, sqInfo) => sqInfo == SquadInfo.Blank } - match { + .filterNot { case (_, sqInfo) => sqInfo == SquadInfo.Blank } match { case Nil => throw new Exception("no linked list squad fields encountered where at least one was expected") //bad end case x :: Nil => @@ -509,11 +518,10 @@ object SquadHeader { * @return a linked list of `SquadInfo` objects, each with a single field from the input `SquadInfo` object */ @tailrec - private def linkSquadInfo(infoList : Seq[(Int, SquadInfo)], linkedInfo : LinkedSquadInfo) : LinkedSquadInfo = { - if(infoList.isEmpty) { + private def linkSquadInfo(infoList: Seq[(Int, SquadInfo)], linkedInfo: LinkedSquadInfo): LinkedSquadInfo = { + if (infoList.isEmpty) { linkedInfo - } - else { + } else { val (code, data) = infoList.head linkSquadInfo(infoList.tail, LinkedSquadInfo(code, data, Some(linkedInfo))) } @@ -528,14 +536,14 @@ object SquadHeader { * @param pad the current overflow/padding value * @return a `LinkedSquadInfo` `Codec` object (linked list) */ - private def listing_codec(size : Int, pad : Int = 1) : Codec[LinkedSquadInfo] = { + private def listing_codec(size: Int, pad: Int = 1): Codec[LinkedSquadInfo] = { import shapeless.:: ( uint4 >>:~ { code => selectCodecAction(code, pad) :: conditional(size - 1 > 0, listing_codec(size - 1, (pad + modifyPadValue(code, pad)) % 8)) } - ).xmap[LinkedSquadInfo] ( + ).xmap[LinkedSquadInfo]( { case code :: entry :: next :: HNil => LinkedSquadInfo(code, entry, next) @@ -556,14 +564,14 @@ object SquadHeader { * should be a 0-7 number that gets converted to a 1-7 string padding number * @return a `Codec` object for the specific field's data */ - private def selectCodecAction(code : Int, pad : Int) : Codec[SquadInfo] = { + private def selectCodecAction(code: Int, pad: Int): Codec[SquadInfo] = { code match { - case SquadInfo.Field.Leader => leaderCodec(pad) - case SquadInfo.Field.Task => taskCodec(pad) - case SquadInfo.Field.ZoneId => zoneIdCodec - case SquadInfo.Field.Size => sizeCodec + case SquadInfo.Field.Leader => leaderCodec(pad) + case SquadInfo.Field.Task => taskCodec(pad) + case SquadInfo.Field.ZoneId => zoneIdCodec + case SquadInfo.Field.Size => sizeCodec case SquadInfo.Field.Capacity => capacityCodec - case _ => failureCodec + case _ => failureCodec } } @@ -578,14 +586,14 @@ object SquadHeader { * should be a 0-7 number that gets converted to a 1-7 string padding number * @return the number of units that the current overflow/padding value should be modified, in terms of addition */ - private def modifyPadValue(code : Int, pad : Int) : Int = { + private def modifyPadValue(code: Int, pad: Int): Int = { code match { - case SquadInfo.Field.Leader => -pad //byte-aligned string; padding zero'd - case SquadInfo.Field.Task => -pad //byte-aligned string; padding zero'd - case SquadInfo.Field.ZoneId => 4 //4u + 32u = 4u + 8*4u = additional 4u - case SquadInfo.Field.Size => 0 //4u + 4u = no change to padding - case SquadInfo.Field.Capacity => 0 //4u + 4u = no change to padding - case _ => Int.MinValue //wildly incorrect + case SquadInfo.Field.Leader => -pad //byte-aligned string; padding zero'd + case SquadInfo.Field.Task => -pad //byte-aligned string; padding zero'd + case SquadInfo.Field.ZoneId => 4 //4u + 32u = 4u + 8*4u = additional 4u + case SquadInfo.Field.Size => 0 //4u + 4u = no change to padding + case SquadInfo.Field.Capacity => 0 //4u + 4u = no change to padding + case _ => Int.MinValue //wildly incorrect } } @@ -599,45 +607,46 @@ object SquadHeader { * @param providedCodec the `Codec` for processing a `SquadInfo` object during the squad list initialization process * @return a `SquadListing` `Codec` object */ - private def meta_codec(providedCodec : Codec[SquadInfo]) : Codec[Option[SquadInfo]] = { + private def meta_codec(providedCodec: Codec[SquadInfo]): Codec[Option[SquadInfo]] = { import shapeless.:: - ( - bool >>:~ { unk1 => - uint8 >>:~ { unk2 => - conditional(!unk1 && unk2 == 1, removeCodec) :: - conditional(unk1 && unk2 == 6, providedCodec) :: - conditional(unk1 && unk2 != 6, listing_codec(unk2)) - } - }).exmap[Option[SquadInfo]] ( + (bool >>:~ { unk1 => + uint8 >>:~ { unk2 => + conditional(!unk1 && unk2 == 1, removeCodec) :: + conditional(unk1 && unk2 == 6, providedCodec) :: + conditional(unk1 && unk2 != 6, listing_codec(unk2)) + } + }).exmap[Option[SquadInfo]]( { case false :: 1 :: Some(SquadInfo.Blank) :: None :: None :: HNil => //'remove' case - Attempt.Successful( None ) + Attempt.Successful(None) case true :: 6 :: None :: Some(info) :: None :: HNil => //handle complete squad info; no field codes - Attempt.Successful( Some(info) ) + Attempt.Successful(Some(info)) - case true :: _ :: None :: None:: Some(result) :: HNil => //iterable field codes - Attempt.Successful( Some(unlinkSquadInfo(result)) ) + case true :: _ :: None :: None :: Some(result) :: HNil => //iterable field codes + Attempt.Successful(Some(unlinkSquadInfo(result))) case data => //error Attempt.failure(Err(s"$data can not be encoded as a squad header")) }, { case None => //'remove' case - Attempt.Successful( false :: 1 :: Some(SquadInfo.Blank) :: None :: None :: HNil ) + Attempt.Successful(false :: 1 :: Some(SquadInfo.Blank) :: None :: None :: HNil) - case info @ Some(SquadInfo(Some(_), Some(_), Some(_), Some(_), Some(_), Some(_))) => //handle complete squad info; no field codes - Attempt.Successful( true :: 6 :: None :: info :: None :: HNil ) + case info @ Some( + SquadInfo(Some(_), Some(_), Some(_), Some(_), Some(_), Some(_)) + ) => //handle complete squad info; no field codes + Attempt.Successful(true :: 6 :: None :: info :: None :: HNil) case Some(info) => //iterable field codes val linkedInfo = linkSquadInfo(info) - var count = 1 - var linkNext = linkedInfo.next - while(linkNext.nonEmpty) { + var count = 1 + var linkNext = linkedInfo.next + while (linkNext.nonEmpty) { count += 1 linkNext = linkNext.get.next } - Attempt.Successful( true :: count :: None :: None :: Some(linkSquadInfo(info)) :: HNil ) + Attempt.Successful(true :: count :: None :: None :: Some(linkSquadInfo(info)) :: HNil) case data => //error Attempt.failure(Err(s"$data can not be decoded into a squad header")) @@ -648,17 +657,17 @@ object SquadHeader { /** * `Codec` for standard `SquadHeader` entries. */ - val codec : Codec[Option[SquadInfo]] = meta_codec(allCodec) + val codec: Codec[Option[SquadInfo]] = meta_codec(allCodec) /** * `Codec` for types of `SquadHeader` initializations. */ - val info_codec : Codec[Option[SquadInfo]] = meta_codec(infoCodec) + val info_codec: Codec[Option[SquadInfo]] = meta_codec(infoCodec) /** * Alternate `Codec` for types of `SquadHeader` initializations. */ - val alt_info_codec : Codec[Option[SquadInfo]] = meta_codec(alt_infoCodec) + val alt_info_codec: Codec[Option[SquadInfo]] = meta_codec(alt_infoCodec) } object SquadListing { @@ -670,7 +679,7 @@ object SquadListing { * @param info the squad data * @return a `SquadListing` object */ - def apply(index : Int, info : SquadInfo) : SquadListing = { + def apply(index: Int, info: SquadInfo): SquadListing = { SquadListing(index, Some(info)) } @@ -679,36 +688,36 @@ object SquadListing { * @param entryFunc the `Codec` for processing a given `SquadListing` object * @return a `SquadListing` `Codec` object */ - private def meta_codec(entryFunc : Int=>Codec[Option[SquadInfo]]) : Codec[SquadListing] = ( - ("index" | uint8L) >>:~ { index => + private def meta_codec(entryFunc: Int => Codec[Option[SquadInfo]]): Codec[SquadListing] = + (("index" | uint8L) >>:~ { index => conditional(index < 255, "listing" | entryFunc(index)) :: - conditional(index == 255, bits) //consume n < 8 bits after the tail entry, else vector will try to operate on invalid data - }).xmap[SquadListing] ( - { - case ndx :: Some(lstng) :: _ :: HNil => - SquadListing(ndx, lstng) - case ndx :: None :: _ :: HNil => - SquadListing(ndx, None) - }, - { - case SquadListing(ndx, lstng) => - ndx :: Some(lstng) :: None :: HNil - } - ) + conditional( + index == 255, + bits + ) //consume n < 8 bits after the tail entry, else vector will try to operate on invalid data + }).xmap[SquadListing]( + { + case ndx :: Some(lstng) :: _ :: HNil => + SquadListing(ndx, lstng) + case ndx :: None :: _ :: HNil => + SquadListing(ndx, None) + }, + { + case SquadListing(ndx, lstng) => + ndx :: Some(lstng) :: None :: HNil + } + ) /** * `Codec` for standard `SquadListing` entries. */ - val codec : Codec[SquadListing] = meta_codec({ _ => SquadHeader.codec }) + val codec: Codec[SquadListing] = meta_codec({ _ => SquadHeader.codec }) /** * `Codec` for branching types of `SquadListing` initializations. */ - val info_codec : Codec[SquadListing] = meta_codec({ index : Int => - newcodecs.binary_choice(index == 0, - "listing" | SquadHeader.info_codec, - "listing" | SquadHeader.alt_info_codec - ) + val info_codec: Codec[SquadListing] = meta_codec({ index: Int => + newcodecs.binary_choice(index == 0, "listing" | SquadHeader.info_codec, "listing" | SquadHeader.alt_info_codec) }) } @@ -721,23 +730,23 @@ object ReplicationStreamMessage extends Marshallable[ReplicationStreamMessage] { * @param infos the squad data to be composed into formal list entries * @return a `ReplicationStreamMessage` packet object */ - def apply(infos : Iterable[SquadInfo]) : ReplicationStreamMessage = { - ReplicationStreamMessage(5, Some(6), infos - .zipWithIndex - .map { case (info, index) => SquadListing(index, Some(info)) } - .toVector + def apply(infos: Iterable[SquadInfo]): ReplicationStreamMessage = { + ReplicationStreamMessage( + 5, + Some(6), + infos.zipWithIndex.map { case (info, index) => SquadListing(index, Some(info)) }.toVector ) } - implicit val codec : Codec[ReplicationStreamMessage] = ( - ("behavior" | uintL(3)) >>:~ { behavior => - conditional(behavior == 5, "behavior2" | uintL(3)) :: - conditional(behavior != 1, bool) :: - newcodecs.binary_choice(behavior != 5, - "entries" | vector(SquadListing.codec), - "entries" | vector(SquadListing.info_codec) - ) - }).xmap[ReplicationStreamMessage] ( + implicit val codec: Codec[ReplicationStreamMessage] = (("behavior" | uintL(3)) >>:~ { behavior => + conditional(behavior == 5, "behavior2" | uintL(3)) :: + conditional(behavior != 1, bool) :: + newcodecs.binary_choice( + behavior != 5, + "entries" | vector(SquadListing.codec), + "entries" | vector(SquadListing.info_codec) + ) + }).xmap[ReplicationStreamMessage]( { case bhvr :: bhvr2 :: _ :: lst :: HNil => ReplicationStreamMessage(bhvr, bhvr2, ignoreTerminatingEntry(lst)) @@ -756,10 +765,10 @@ object ReplicationStreamMessage extends Marshallable[ReplicationStreamMessage] { * @param list the listing of squad information * @return the listing of squad information, with a specific final entry */ - private def ensureTerminatingEntry(list : Vector[SquadListing]) : Vector[SquadListing] = { + private def ensureTerminatingEntry(list: Vector[SquadListing]): Vector[SquadListing] = { list.lastOption match { case Some(SquadListing(255, _)) => list - case Some(_) | None => list :+ SquadListing() + case Some(_) | None => list :+ SquadListing() } } @@ -769,10 +778,10 @@ object ReplicationStreamMessage extends Marshallable[ReplicationStreamMessage] { * @param list the listing of squad information * @return the listing of squad information, with a specific final entry truncated */ - private def ignoreTerminatingEntry(list : Vector[SquadListing]) : Vector[SquadListing] = { + private def ignoreTerminatingEntry(list: Vector[SquadListing]): Vector[SquadListing] = { list.lastOption match { case Some(SquadListing(255, _)) => list.init - case Some(_) | None => list + case Some(_) | None => list } } } @@ -788,4 +797,4 @@ ReplicationStream.codec -+ +-> SquadListing.info_codec -+ | | | +-> SquadHeader.alt_info_codec -+ -*/ + */ diff --git a/common/src/main/scala/net/psforever/packet/game/RequestDestroyMessage.scala b/common/src/main/scala/net/psforever/packet/game/RequestDestroyMessage.scala index 2638c9bc..163ad401 100644 --- a/common/src/main/scala/net/psforever/packet/game/RequestDestroyMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/RequestDestroyMessage.scala @@ -1,20 +1,19 @@ // Copyright (c) 2017 PSForever package net.psforever.packet.game -import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class RequestDestroyMessage(object_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class RequestDestroyMessage(object_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = RequestDestroyMessage def opcode = GamePacketOpcode.RequestDestroyMessage def encode = RequestDestroyMessage.encode(this) } object RequestDestroyMessage extends Marshallable[RequestDestroyMessage] { - implicit val codec : Codec[RequestDestroyMessage] = ( - ("object_guid" | PlanetSideGUID.codec) - ).as[RequestDestroyMessage] + implicit val codec: Codec[RequestDestroyMessage] = ( + ("object_guid" | PlanetSideGUID.codec) + ).as[RequestDestroyMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/RespawnAMSInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/RespawnAMSInfoMessage.scala index 9bee18ae..62179f56 100644 --- a/common/src/main/scala/net/psforever/packet/game/RespawnAMSInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/RespawnAMSInfoMessage.scala @@ -7,45 +7,40 @@ import scodec.{Attempt, Codec, Err} import scodec.codecs._ import shapeless.{::, HNil} -final case class RespawnInfo(unk1 : List[Vector3], - unk2 : List[Boolean]) +final case class RespawnInfo(unk1: List[Vector3], unk2: List[Boolean]) -final case class RespawnAMSInfoMessage(unk1 : PlanetSideGUID, - unk2 : Boolean, - unk3 : Option[RespawnInfo]) - extends PlanetSideGamePacket { +final case class RespawnAMSInfoMessage(unk1: PlanetSideGUID, unk2: Boolean, unk3: Option[RespawnInfo]) + extends PlanetSideGamePacket { type Packet = RespawnAMSInfoMessage def opcode = GamePacketOpcode.RespawnAMSInfoMessage def encode = RespawnAMSInfoMessage.encode(this) } object RespawnAMSInfoMessage extends Marshallable[RespawnAMSInfoMessage] { - def apply(u1 : PlanetSideGUID, u2 : Boolean) : RespawnAMSInfoMessage = { + def apply(u1: PlanetSideGUID, u2: Boolean): RespawnAMSInfoMessage = { RespawnAMSInfoMessage(u1, u2, None) } - def apply(u1 : PlanetSideGUID, u2 : Boolean, u3 : RespawnInfo) : RespawnAMSInfoMessage = { + def apply(u1: PlanetSideGUID, u2: Boolean, u3: RespawnInfo): RespawnAMSInfoMessage = { RespawnAMSInfoMessage(u1, u2, Some(u3)) } - private val info_codec : Codec[RespawnInfo] = ( - uint(6) >>:~ { size => //max 63 - ("unk1" | PacketHelpers.listOfNSized(size, Vector3.codec_pos)) :: - ("unk2" | PacketHelpers.listOfNSized(size, bool)) - }).exmap[RespawnInfo] ({ + private val info_codec: Codec[RespawnInfo] = (uint(6) >>:~ { size => //max 63 + ("unk1" | PacketHelpers.listOfNSized(size, Vector3.codec_pos)) :: + ("unk2" | PacketHelpers.listOfNSized(size, bool)) + }).exmap[RespawnInfo]( + { case _ :: a :: b :: HNil => Attempt.Successful(RespawnInfo(a, b)) }, { case RespawnInfo(a, b) => val alen = a.length - if(alen != b.length) { + if (alen != b.length) { Attempt.Failure(Err(s"respawn info lists must match in length - $alen vs ${b.length}")) - } - else if(alen > 63) { + } else if (alen > 63) { Attempt.Failure(Err(s"respawn info lists too long - $alen > 63")) - } - else { + } else { Attempt.Successful(alen :: a :: b :: HNil) } } @@ -56,13 +51,13 @@ object RespawnAMSInfoMessage extends Marshallable[RespawnAMSInfoMessage] { the 7u, however, is divided into a subsequent 1u + 6u reading if that second 1u is true, the 6u doesn't matter and doesn't need to be read when not necessary */ - implicit val codec : Codec[RespawnAMSInfoMessage] = ( + implicit val codec: Codec[RespawnAMSInfoMessage] = ( ("unk1" | PlanetSideGUID.codec) :: ("unk2" | bool) :: (bool >>:~ { test => - conditional(!test, "unk3" | info_codec).hlist - }) - ).xmap[RespawnAMSInfoMessage] ( + conditional(!test, "unk3" | info_codec).hlist + }) + ).xmap[RespawnAMSInfoMessage]( { case u1 :: u2 :: _ :: u3 :: HNil => RespawnAMSInfoMessage(u1, u2, u3) diff --git a/common/src/main/scala/net/psforever/packet/game/ServerVehicleOverrideMsg.scala b/common/src/main/scala/net/psforever/packet/game/ServerVehicleOverrideMsg.scala index 52e788bb..f06a83f5 100644 --- a/common/src/main/scala/net/psforever/packet/game/ServerVehicleOverrideMsg.scala +++ b/common/src/main/scala/net/psforever/packet/game/ServerVehicleOverrideMsg.scala @@ -49,15 +49,16 @@ import scodec.codecs._ * @param unk8 na; * set `lock_wheel` to `true` to expose this value */ -final case class ServerVehicleOverrideMsg(lock_accelerator : Boolean, - lock_wheel : Boolean, - reverse : Boolean, - unk4 : Boolean, - lock_vthrust : Int, - lock_strafe : Int, - movement_speed : Int, - unk8 : Option[Long] - ) extends PlanetSideGamePacket { +final case class ServerVehicleOverrideMsg( + lock_accelerator: Boolean, + lock_wheel: Boolean, + reverse: Boolean, + unk4: Boolean, + lock_vthrust: Int, + lock_strafe: Int, + movement_speed: Int, + unk8: Option[Long] +) extends PlanetSideGamePacket { type Packet = ServerVehicleOverrideMsg def opcode = GamePacketOpcode.ServerVehicleOverrideMsg def encode = ServerVehicleOverrideMsg.encode(this) @@ -67,12 +68,12 @@ object ServerVehicleOverrideMsg extends Marshallable[ServerVehicleOverrideMsg] { implicit val codec: Codec[ServerVehicleOverrideMsg] = ( ("lock_accelerator" | bool) :: (("lock_wheel" | bool) >>:~ { test => - ("reverse" | bool) :: - ("unk4" | bool) :: - ("lock_vthrust" | uint2L) :: - ("lock_strafe" | uint2L) :: - ("movement_speed" | uintL(9)) :: - conditional(test, "unk8" | uint32L) - }) - ).as[ServerVehicleOverrideMsg] + ("reverse" | bool) :: + ("unk4" | bool) :: + ("lock_vthrust" | uint2L) :: + ("lock_strafe" | uint2L) :: + ("movement_speed" | uintL(9)) :: + conditional(test, "unk8" | uint32L) + }) + ).as[ServerVehicleOverrideMsg] } diff --git a/common/src/main/scala/net/psforever/packet/game/SetChatFilterMessage.scala b/common/src/main/scala/net/psforever/packet/game/SetChatFilterMessage.scala index c51f9f4b..4061aea1 100644 --- a/common/src/main/scala/net/psforever/packet/game/SetChatFilterMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SetChatFilterMessage.scala @@ -12,17 +12,7 @@ import shapeless.{::, HNil} object ChatChannel extends Enumeration { type Type = Value - val - Unknown, - Tells, - Local, - Squad, - Outfit, - Command, - Platoon, - Broadcast, - SquadLeader - = Value + val Unknown, Tells, Local, Squad, Outfit, Command, Platoon, Broadcast, SquadLeader = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(7)) } @@ -45,22 +35,24 @@ object ChatChannel extends Enumeration { * @param whitelist each channel permitted to post its messages; * when evaluated from a packet, always in original order */ -final case class SetChatFilterMessage(send_channel : ChatChannel.Value, - origin : Boolean, - whitelist : List[ChatChannel.Value]) - extends PlanetSideGamePacket { +final case class SetChatFilterMessage( + send_channel: ChatChannel.Value, + origin: Boolean, + whitelist: List[ChatChannel.Value] +) extends PlanetSideGamePacket { type Packet = SetChatFilterMessage def opcode = GamePacketOpcode.SetChatFilterMessage def encode = SetChatFilterMessage.encode(this) } object SetChatFilterMessage extends Marshallable[SetChatFilterMessage] { + /** * Transform a `List` of `Boolean` values into a `List` of `ChatChannel` values. * @param filters the boolean values representing ordered channel filters * @return the names of the channels permitted */ - private def stateArrayToChannelFilters(filters : List[Boolean]) : List[ChatChannel.Value] = { + private def stateArrayToChannelFilters(filters: List[Boolean]): List[ChatChannel.Value] = { (0 until 9) .filter(channel => { filters(channel) }) .map(channel => ChatChannel(channel)) @@ -72,18 +64,18 @@ object SetChatFilterMessage extends Marshallable[SetChatFilterMessage] { * @param filters the names of the channels permitted * @return the boolean values representing ordered channel filters */ - private def channelFiltersToStateArray(filters : List[ChatChannel.Value]) : List[Boolean] = { + private def channelFiltersToStateArray(filters: List[ChatChannel.Value]): List[Boolean] = { import scala.collection.mutable.ListBuffer val list = ListBuffer.fill(9)(false) filters.foreach(channel => { list(channel.id) = true }) list.toList } - implicit val codec : Codec[SetChatFilterMessage] = ( + implicit val codec: Codec[SetChatFilterMessage] = ( ("send_channel" | ChatChannel.codec) :: ("origin" | bool) :: ("whitelist" | PacketHelpers.listOfNSized(9, bool)) - ).exmap[SetChatFilterMessage] ( + ).exmap[SetChatFilterMessage]( { case a :: b :: c :: HNil => Attempt.Successful(SetChatFilterMessage(a, b, stateArrayToChannelFilters(c))) diff --git a/common/src/main/scala/net/psforever/packet/game/SetCurrentAvatarMessage.scala b/common/src/main/scala/net/psforever/packet/game/SetCurrentAvatarMessage.scala index 33b918d5..9bc7aa2c 100644 --- a/common/src/main/scala/net/psforever/packet/game/SetCurrentAvatarMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SetCurrentAvatarMessage.scala @@ -6,7 +6,7 @@ import net.psforever.types.PlanetSideGUID import scodec.Codec import scodec.codecs._ -final case class SetCurrentAvatarMessage(guid: PlanetSideGUID, unk1 : Int, unk2 : Int) extends PlanetSideGamePacket { +final case class SetCurrentAvatarMessage(guid: PlanetSideGUID, unk1: Int, unk2: Int) extends PlanetSideGamePacket { type Packet = SetCurrentAvatarMessage def opcode = GamePacketOpcode.SetCurrentAvatarMessage def encode = SetCurrentAvatarMessage.encode(this) @@ -17,5 +17,5 @@ object SetCurrentAvatarMessage extends Marshallable[SetCurrentAvatarMessage] { ("guid" | PlanetSideGUID.codec) :: ("unk1" | uint(3)) :: ("unk2" | uint(3)) - ).as[SetCurrentAvatarMessage] -} \ No newline at end of file + ).as[SetCurrentAvatarMessage] +} diff --git a/common/src/main/scala/net/psforever/packet/game/SetEmpireMessage.scala b/common/src/main/scala/net/psforever/packet/game/SetEmpireMessage.scala index 6776117d..91b6b317 100644 --- a/common/src/main/scala/net/psforever/packet/game/SetEmpireMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SetEmpireMessage.scala @@ -7,20 +7,19 @@ import scodec.Codec import scodec.codecs._ /** - * The object_guid space for SetEmpireMessage is continent specific. - * SetEmpireMessage is usually followed by HackMessage (indicating the hack disposition of the same object_guid) - */ -final case class SetEmpireMessage(object_guid : PlanetSideGUID, - empire : PlanetSideEmpire.Value) - extends PlanetSideGamePacket { + * The object_guid space for SetEmpireMessage is continent specific. + * SetEmpireMessage is usually followed by HackMessage (indicating the hack disposition of the same object_guid) + */ +final case class SetEmpireMessage(object_guid: PlanetSideGUID, empire: PlanetSideEmpire.Value) + extends PlanetSideGamePacket { type Packet = SetEmpireMessage def opcode = GamePacketOpcode.SetEmpireMessage def encode = SetEmpireMessage.encode(this) } object SetEmpireMessage extends Marshallable[SetEmpireMessage] { - implicit val codec : Codec[SetEmpireMessage] = ( - ("object_guid" | PlanetSideGUID.codec) :: - ("empire" | PlanetSideEmpire.codec) - ).as[SetEmpireMessage] + implicit val codec: Codec[SetEmpireMessage] = ( + ("object_guid" | PlanetSideGUID.codec) :: + ("empire" | PlanetSideEmpire.codec) + ).as[SetEmpireMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/SimDataChallenge.scala b/common/src/main/scala/net/psforever/packet/game/SimDataChallenge.scala index e0e8c51e..a6dcc2f0 100644 --- a/common/src/main/scala/net/psforever/packet/game/SimDataChallenge.scala +++ b/common/src/main/scala/net/psforever/packet/game/SimDataChallenge.scala @@ -14,19 +14,15 @@ import scodec.codecs._ * @param unk4 na * @param unk5 na */ -final case class SimDataChallenge(unk1 : List[Long], - unk2 : Boolean, - unk3 : Int, - unk4 : Long, - unk5 : Boolean) - extends PlanetSideGamePacket { +final case class SimDataChallenge(unk1: List[Long], unk2: Boolean, unk3: Int, unk4: Long, unk5: Boolean) + extends PlanetSideGamePacket { type Packet = SimDataChallenge - def opcode : GamePacketOpcode.Value = GamePacketOpcode.SimDataChallenge - def encode : Attempt[BitVector] = SimDataChallenge.encode(this) + def opcode: GamePacketOpcode.Value = GamePacketOpcode.SimDataChallenge + def encode: Attempt[BitVector] = SimDataChallenge.encode(this) } object SimDataChallenge extends Marshallable[SimDataChallenge] { - implicit val codec : Codec[SimDataChallenge] = ( + implicit val codec: Codec[SimDataChallenge] = ( ("unk1" | listOfN(uint16L, ulongL(bits = 32))) :: ("unk2" | bool) :: ("unk3" | uint8) :: diff --git a/common/src/main/scala/net/psforever/packet/game/SimDataChallengeResp.scala b/common/src/main/scala/net/psforever/packet/game/SimDataChallengeResp.scala index 14b64b9a..d77f7243 100644 --- a/common/src/main/scala/net/psforever/packet/game/SimDataChallengeResp.scala +++ b/common/src/main/scala/net/psforever/packet/game/SimDataChallengeResp.scala @@ -12,19 +12,16 @@ import scodec.codecs._ * @param unk2 na * @param unk3 na */ -final case class SimDataChallengeResp(unk1 : List[Long], - unk2 : List[Long], - unk3 : Boolean) - extends PlanetSideGamePacket { +final case class SimDataChallengeResp(unk1: List[Long], unk2: List[Long], unk3: Boolean) extends PlanetSideGamePacket { type Packet = SimDataChallengeResp - def opcode : GamePacketOpcode.Value = GamePacketOpcode.SimDataChallengeResp - def encode : Attempt[BitVector] = SimDataChallengeResp.encode(this) + def opcode: GamePacketOpcode.Value = GamePacketOpcode.SimDataChallengeResp + def encode: Attempt[BitVector] = SimDataChallengeResp.encode(this) } object SimDataChallengeResp extends Marshallable[SimDataChallengeResp] { - implicit val codec : Codec[SimDataChallengeResp] = ( + implicit val codec: Codec[SimDataChallengeResp] = ( ("unk1" | listOfN(uint16L, ulongL(bits = 32))) :: ("unk2" | listOfN(uint16L, ulongL(bits = 32))) :: ("unk3" | bool) - ).as[SimDataChallengeResp] + ).as[SimDataChallengeResp] } diff --git a/common/src/main/scala/net/psforever/packet/game/SpawnRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/SpawnRequestMessage.scala index b4278c64..3c3b2dba 100644 --- a/common/src/main/scala/net/psforever/packet/game/SpawnRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SpawnRequestMessage.scala @@ -15,12 +15,8 @@ import scodec.codecs._ * @param unk4 na * @param zone_number when defined, the continent number */ -final case class SpawnRequestMessage(unk1 : Int, - spawn_type : SpawnGroup.Value, - unk3 : Int, - unk4 : Int, - zone_number : Int) - extends PlanetSideGamePacket { +final case class SpawnRequestMessage(unk1: Int, spawn_type: SpawnGroup.Value, unk3: Int, unk4: Int, zone_number: Int) + extends PlanetSideGamePacket { type Packet = SpawnRequestMessage def opcode = GamePacketOpcode.SpawnRequestMessage def encode = SpawnRequestMessage.encode(this) @@ -29,11 +25,11 @@ final case class SpawnRequestMessage(unk1 : Int, object SpawnRequestMessage extends Marshallable[SpawnRequestMessage] { private val spawnGroupCodec = PacketHelpers.createLongEnumerationCodec(SpawnGroup, uint32L) - implicit val codec : Codec[SpawnRequestMessage] = ( + implicit val codec: Codec[SpawnRequestMessage] = ( ("unk1" | uint16L) :: ("spawn_type" | spawnGroupCodec) :: ("unk3" | uint16L) :: ("unk4" | uint16L) :: ("zone_number" | uintL(10)) - ).as[SpawnRequestMessage] + ).as[SpawnRequestMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/SplashHitMessage.scala b/common/src/main/scala/net/psforever/packet/game/SplashHitMessage.scala index 9dd2648d..51d1c430 100644 --- a/common/src/main/scala/net/psforever/packet/game/SplashHitMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SplashHitMessage.scala @@ -13,10 +13,7 @@ import scodec.codecs._ * @param unk1 na * @param unk2 na */ -final case class SplashedTarget(uid : PlanetSideGUID, - pos : Vector3, - unk1 : Long, - unk2 : Option[Int]) +final case class SplashedTarget(uid: PlanetSideGUID, pos: Vector3, unk1: Long, unk2: Option[Int]) /** * Dispatched to the server when a type of effect that influence multiple targets activates.
@@ -51,22 +48,23 @@ final case class SplashedTarget(uid : PlanetSideGUID, * @param unk4 na * @param targets a `List` of all targets influenced by the splash */ -final case class SplashHitMessage(unk1 : Int, - projectile_uid : PlanetSideGUID, - projectile_pos : Vector3, - unk2 : Int, - unk3 : Int, - projectile_vel : Option[Vector3], - unk4 : Option[Int], - targets : List[SplashedTarget]) - extends PlanetSideGamePacket { +final case class SplashHitMessage( + unk1: Int, + projectile_uid: PlanetSideGUID, + projectile_pos: Vector3, + unk2: Int, + unk3: Int, + projectile_vel: Option[Vector3], + unk4: Option[Int], + targets: List[SplashedTarget] +) extends PlanetSideGamePacket { type Packet = SplashHitMessage def opcode = GamePacketOpcode.SplashHitMessage def encode = SplashHitMessage.encode(this) } object SplashedTarget extends Marshallable[SplashedTarget] { - implicit val codec : Codec[SplashedTarget] = ( + implicit val codec: Codec[SplashedTarget] = ( ("uid" | PlanetSideGUID.codec) :: ("pos" | Vector3.codec_pos) :: ("unk1" | uint32L) :: @@ -75,7 +73,7 @@ object SplashedTarget extends Marshallable[SplashedTarget] { } object SplashHitMessage extends Marshallable[SplashHitMessage] { - implicit val codec : Codec[SplashHitMessage] = ( + implicit val codec: Codec[SplashHitMessage] = ( ("unk1" | uintL(10)) :: ("projectile_uid" | PlanetSideGUID.codec) :: ("projectile_pos" | Vector3.codec_pos) :: @@ -84,5 +82,5 @@ object SplashHitMessage extends Marshallable[SplashHitMessage] { optional(bool, "projectile_vel" | Vector3.codec_vel) :: optional(bool, "unk4" | uint16L) :: ("targets" | PacketHelpers.listOfNAligned(uint32L, 0, SplashedTarget.codec)) - ).as[SplashHitMessage] + ).as[SplashHitMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadDefinitionActionMessage.scala b/common/src/main/scala/net/psforever/packet/game/SquadDefinitionActionMessage.scala index a38c7aa7..f4ce0407 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadDefinitionActionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadDefinitionActionMessage.scala @@ -13,20 +13,15 @@ import shapeless.{::, HNil} * All behaviors have a "code" that indicates how the rest of the data is parsed. * @param code the action behavior code */ -abstract class SquadAction(val code : Int) +abstract class SquadAction(val code: Int) -object SquadAction{ +object SquadAction { object SearchMode extends Enumeration { type Type = Value - val - AnyPositions, - AvailablePositions, - SomeCertifications, - AllCertifications - = Value + val AnyPositions, AvailablePositions, SomeCertifications, AllCertifications = Value - implicit val codec : Codec[SearchMode.Value] = PacketHelpers.createEnumerationCodec(enum = this, uint(bits = 3)) + implicit val codec: Codec[SearchMode.Value] = PacketHelpers.createEnumerationCodec(enum = this, uint(bits = 3)) } final case class DisplaySquad() extends SquadAction(0) @@ -43,13 +38,13 @@ object SquadAction{ final case class DeleteSquadFavorite() extends SquadAction(5) - final case class ListSquadFavorite(name : String) extends SquadAction(7) + final case class ListSquadFavorite(name: String) extends SquadAction(7) final case class RequestListSquad() extends SquadAction(8) final case class StopListSquad() extends SquadAction(9) - final case class SelectRoleForYourself(state : Int) extends SquadAction(10) + final case class SelectRoleForYourself(state: Int) extends SquadAction(10) final case class CancelSelectRoleForYourself(value: Long = 0) extends SquadAction(15) @@ -57,45 +52,51 @@ object SquadAction{ final case class SetListSquad() extends SquadAction(17) - final case class ChangeSquadPurpose(purpose : String) extends SquadAction(19) + final case class ChangeSquadPurpose(purpose: String) extends SquadAction(19) - final case class ChangeSquadZone(zone : PlanetSideZoneID) extends SquadAction(20) + final case class ChangeSquadZone(zone: PlanetSideZoneID) extends SquadAction(20) - final case class CloseSquadMemberPosition(position : Int) extends SquadAction(21) + final case class CloseSquadMemberPosition(position: Int) extends SquadAction(21) - final case class AddSquadMemberPosition(position : Int) extends SquadAction(22) + final case class AddSquadMemberPosition(position: Int) extends SquadAction(22) - final case class ChangeSquadMemberRequirementsRole(u1 : Int, role : String) extends SquadAction(23) + final case class ChangeSquadMemberRequirementsRole(u1: Int, role: String) extends SquadAction(23) - final case class ChangeSquadMemberRequirementsDetailedOrders(u1 : Int, orders : String) extends SquadAction(24) + final case class ChangeSquadMemberRequirementsDetailedOrders(u1: Int, orders: String) extends SquadAction(24) - final case class ChangeSquadMemberRequirementsCertifications(u1 : Int, certs : Set[CertificationType.Value]) extends SquadAction(25) + final case class ChangeSquadMemberRequirementsCertifications(u1: Int, certs: Set[CertificationType.Value]) + extends SquadAction(25) final case class ResetAll() extends SquadAction(26) - final case class AutoApproveInvitationRequests(state : Boolean) extends SquadAction(28) + final case class AutoApproveInvitationRequests(state: Boolean) extends SquadAction(28) - final case class LocationFollowsSquadLead(state : Boolean) extends SquadAction(31) + final case class LocationFollowsSquadLead(state: Boolean) extends SquadAction(31) - final case class SearchForSquadsWithParticularRole(role: String, requirements : Set[CertificationType.Value], zone_id: Int, mode : SearchMode.Value) extends SquadAction(34) + final case class SearchForSquadsWithParticularRole( + role: String, + requirements: Set[CertificationType.Value], + zone_id: Int, + mode: SearchMode.Value + ) extends SquadAction(34) final case class CancelSquadSearch() extends SquadAction(35) - final case class AssignSquadMemberToRole(position : Int, char_id : Long) extends SquadAction(38) + final case class AssignSquadMemberToRole(position: Int, char_id: Long) extends SquadAction(38) final case class NoSquadSearchResults() extends SquadAction(39) - final case class FindLfsSoldiersForRole(state : Int) extends SquadAction(40) + final case class FindLfsSoldiersForRole(state: Int) extends SquadAction(40) final case class CancelFind() extends SquadAction(41) - final case class Unknown(badCode : Int, data : BitVector) extends SquadAction(badCode) + final case class Unknown(badCode: Int, data: BitVector) extends SquadAction(badCode) object Unknown { import scodec.bits._ - val StandardBits : BitVector = hex"00".toBitVector.take(6) + val StandardBits: BitVector = hex"00".toBitVector.take(6) - def apply(badCode : Int) : Unknown = Unknown(badCode, StandardBits) + def apply(badCode: Int): Unknown = Unknown(badCode, StandardBits) } /** @@ -105,189 +106,197 @@ object SquadAction{ object Codecs { private val everFailCondition = conditional(included = false, bool) - val displaySquadCodec = everFailCondition.xmap[DisplaySquad] ( + val displaySquadCodec = everFailCondition.xmap[DisplaySquad]( _ => DisplaySquad(), { case DisplaySquad() => None } ) - val squadMemberInitializationIssueCodec = everFailCondition.xmap[SquadMemberInitializationIssue] ( + val squadMemberInitializationIssueCodec = everFailCondition.xmap[SquadMemberInitializationIssue]( _ => SquadMemberInitializationIssue(), { case SquadMemberInitializationIssue() => None } ) - val saveSquadFavoriteCodec = everFailCondition.xmap[SaveSquadFavorite] ( + val saveSquadFavoriteCodec = everFailCondition.xmap[SaveSquadFavorite]( _ => SaveSquadFavorite(), { case SaveSquadFavorite() => None } ) - val loadSquadFavoriteCodec = everFailCondition.xmap[LoadSquadFavorite] ( + val loadSquadFavoriteCodec = everFailCondition.xmap[LoadSquadFavorite]( _ => LoadSquadFavorite(), { case LoadSquadFavorite() => None } ) - val deleteSquadFavoriteCodec = everFailCondition.xmap[DeleteSquadFavorite] ( + val deleteSquadFavoriteCodec = everFailCondition.xmap[DeleteSquadFavorite]( _ => DeleteSquadFavorite(), { case DeleteSquadFavorite() => None } ) - val listSquadFavoriteCodec = PacketHelpers.encodedWideStringAligned(6).xmap[ListSquadFavorite] ( - text => ListSquadFavorite(text), - { - case ListSquadFavorite(text) => text - } - ) + val listSquadFavoriteCodec = PacketHelpers + .encodedWideStringAligned(6) + .xmap[ListSquadFavorite]( + text => ListSquadFavorite(text), + { + case ListSquadFavorite(text) => text + } + ) - val requestListSquadCodec = everFailCondition.xmap[RequestListSquad] ( + val requestListSquadCodec = everFailCondition.xmap[RequestListSquad]( _ => RequestListSquad(), { case RequestListSquad() => None } ) - val stopListSquadCodec = everFailCondition.xmap[StopListSquad] ( + val stopListSquadCodec = everFailCondition.xmap[StopListSquad]( _ => StopListSquad(), { case StopListSquad() => None } ) - val selectRoleForYourselfCodec = uint4.xmap[SelectRoleForYourself] ( + val selectRoleForYourselfCodec = uint4.xmap[SelectRoleForYourself]( value => SelectRoleForYourself(value), { case SelectRoleForYourself(value) => value } ) - val cancelSelectRoleForYourselfCodec = uint32.xmap[CancelSelectRoleForYourself] ( + val cancelSelectRoleForYourselfCodec = uint32.xmap[CancelSelectRoleForYourself]( value => CancelSelectRoleForYourself(value), { case CancelSelectRoleForYourself(value) => value } ) - val associateWithSquadCodec = everFailCondition.xmap[AssociateWithSquad] ( + val associateWithSquadCodec = everFailCondition.xmap[AssociateWithSquad]( _ => AssociateWithSquad(), { case AssociateWithSquad() => None } ) - val setListSquadCodec = everFailCondition.xmap[SetListSquad] ( + val setListSquadCodec = everFailCondition.xmap[SetListSquad]( _ => SetListSquad(), { case SetListSquad() => None } ) - val changeSquadPurposeCodec = PacketHelpers.encodedWideStringAligned(6).xmap[ChangeSquadPurpose] ( - purpose => ChangeSquadPurpose(purpose), - { - case ChangeSquadPurpose(purpose) => purpose - } - ) + val changeSquadPurposeCodec = PacketHelpers + .encodedWideStringAligned(6) + .xmap[ChangeSquadPurpose]( + purpose => ChangeSquadPurpose(purpose), + { + case ChangeSquadPurpose(purpose) => purpose + } + ) - val changeSquadZoneCodec = uint16L.xmap[ChangeSquadZone] ( + val changeSquadZoneCodec = uint16L.xmap[ChangeSquadZone]( value => ChangeSquadZone(PlanetSideZoneID(value)), { case ChangeSquadZone(value) => value.zoneId.toInt } ) - val closeSquadMemberPositionCodec = uint4.xmap[CloseSquadMemberPosition] ( + val closeSquadMemberPositionCodec = uint4.xmap[CloseSquadMemberPosition]( position => CloseSquadMemberPosition(position), { case CloseSquadMemberPosition(position) => position } ) - val addSquadMemberPositionCodec = uint4.xmap[AddSquadMemberPosition] ( + val addSquadMemberPositionCodec = uint4.xmap[AddSquadMemberPosition]( position => AddSquadMemberPosition(position), { case AddSquadMemberPosition(position) => position } ) - val changeSquadMemberRequirementsRoleCodec = (uint4L :: PacketHelpers.encodedWideStringAligned(2)).xmap[ChangeSquadMemberRequirementsRole] ( - { - case u1 :: role :: HNil => ChangeSquadMemberRequirementsRole(u1, role) - }, - { - case ChangeSquadMemberRequirementsRole(u1, role) => u1 :: role :: HNil - } - ) + val changeSquadMemberRequirementsRoleCodec = + (uint4L :: PacketHelpers.encodedWideStringAligned(2)).xmap[ChangeSquadMemberRequirementsRole]( + { + case u1 :: role :: HNil => ChangeSquadMemberRequirementsRole(u1, role) + }, + { + case ChangeSquadMemberRequirementsRole(u1, role) => u1 :: role :: HNil + } + ) - val changeSquadMemberRequirementsDetailedOrdersCodec = (uint4L :: PacketHelpers.encodedWideStringAligned(2)).xmap[ChangeSquadMemberRequirementsDetailedOrders] ( - { - case u1 :: role :: HNil => ChangeSquadMemberRequirementsDetailedOrders(u1, role) - }, - { - case ChangeSquadMemberRequirementsDetailedOrders(u1, role) => u1 :: role :: HNil - } - ) + val changeSquadMemberRequirementsDetailedOrdersCodec = + (uint4L :: PacketHelpers.encodedWideStringAligned(2)).xmap[ChangeSquadMemberRequirementsDetailedOrders]( + { + case u1 :: role :: HNil => ChangeSquadMemberRequirementsDetailedOrders(u1, role) + }, + { + case ChangeSquadMemberRequirementsDetailedOrders(u1, role) => u1 :: role :: HNil + } + ) - val changeSquadMemberRequirementsCertificationsCodec = (uint4 :: ulongL(46)).xmap[ChangeSquadMemberRequirementsCertifications] ( - { - case u1 :: u2 :: HNil => - ChangeSquadMemberRequirementsCertifications(u1, CertificationType.fromEncodedLong(u2)) - }, - { - case ChangeSquadMemberRequirementsCertifications(u1, u2) => - u1 :: CertificationType.toEncodedLong(u2) :: HNil - } - ) + val changeSquadMemberRequirementsCertificationsCodec = + (uint4 :: ulongL(46)).xmap[ChangeSquadMemberRequirementsCertifications]( + { + case u1 :: u2 :: HNil => + ChangeSquadMemberRequirementsCertifications(u1, CertificationType.fromEncodedLong(u2)) + }, + { + case ChangeSquadMemberRequirementsCertifications(u1, u2) => + u1 :: CertificationType.toEncodedLong(u2) :: HNil + } + ) - val resetAllCodec = everFailCondition.xmap[ResetAll] ( + val resetAllCodec = everFailCondition.xmap[ResetAll]( _ => ResetAll(), { case ResetAll() => None } ) - val autoApproveInvitationRequestsCodec = bool.xmap[AutoApproveInvitationRequests] ( + val autoApproveInvitationRequestsCodec = bool.xmap[AutoApproveInvitationRequests]( state => AutoApproveInvitationRequests(state), { case AutoApproveInvitationRequests(state) => state } ) - val locationFollowsSquadLeadCodec = bool.xmap[LocationFollowsSquadLead] ( + val locationFollowsSquadLeadCodec = bool.xmap[LocationFollowsSquadLead]( state => LocationFollowsSquadLead(state), { case LocationFollowsSquadLead(state) => state } ) - val searchForSquadsWithParticularRoleCodec = ( - PacketHelpers.encodedWideStringAligned(6) :: - ulongL(46) :: - uint16L :: - SearchMode.codec).xmap[SearchForSquadsWithParticularRole] ( + val searchForSquadsWithParticularRoleCodec = (PacketHelpers.encodedWideStringAligned(6) :: + ulongL(46) :: + uint16L :: + SearchMode.codec).xmap[SearchForSquadsWithParticularRole]( { - case u1 :: u2 :: u3 :: u4 :: HNil => SearchForSquadsWithParticularRole(u1, CertificationType.fromEncodedLong(u2), u3, u4) + case u1 :: u2 :: u3 :: u4 :: HNil => + SearchForSquadsWithParticularRole(u1, CertificationType.fromEncodedLong(u2), u3, u4) }, { - case SearchForSquadsWithParticularRole(u1, u2, u3, u4) => u1 :: CertificationType.toEncodedLong(u2) :: u3 :: u4 :: HNil + case SearchForSquadsWithParticularRole(u1, u2, u3, u4) => + u1 :: CertificationType.toEncodedLong(u2) :: u3 :: u4 :: HNil } ) - val cancelSquadSearchCodec = everFailCondition.xmap[CancelSquadSearch] ( + val cancelSquadSearchCodec = everFailCondition.xmap[CancelSquadSearch]( _ => CancelSquadSearch(), { case CancelSquadSearch() => None } ) - val assignSquadMemberToRoleCodec = (uint4 :: uint32L).xmap[AssignSquadMemberToRole] ( + val assignSquadMemberToRoleCodec = (uint4 :: uint32L).xmap[AssignSquadMemberToRole]( { case u1 :: u2 :: HNil => AssignSquadMemberToRole(u1, u2) }, @@ -296,21 +305,21 @@ object SquadAction{ } ) - val noSquadSearchResultsCodec = everFailCondition.xmap[NoSquadSearchResults] ( + val noSquadSearchResultsCodec = everFailCondition.xmap[NoSquadSearchResults]( _ => NoSquadSearchResults(), { case NoSquadSearchResults() => None } ) - val findLfsSoldiersForRoleCodec = uint4.xmap[FindLfsSoldiersForRole] ( + val findLfsSoldiersForRoleCodec = uint4.xmap[FindLfsSoldiersForRole]( state => FindLfsSoldiersForRole(state), { case FindLfsSoldiersForRole(state) => state } ) - val cancelFindCodec = everFailCondition.xmap[CancelFind] ( + val cancelFindCodec = everFailCondition.xmap[CancelFind]( _ => CancelFind(), { case CancelFind() => None @@ -322,22 +331,24 @@ object SquadAction{ * @param action the action behavior code * @return a transformation between the action code and the unknown bit data */ - def unknownCodec(action : Int) = bits.xmap[Unknown] ( - data => Unknown(action, data), - { - case Unknown(_, data) => data - } - ) + def unknownCodec(action: Int) = + bits.xmap[Unknown]( + data => Unknown(action, data), + { + case Unknown(_, data) => data + } + ) /** * The action code was completely unanticipated! * @param action the action behavior code * @return nothing; always fail */ - def failureCodec(action : Int)= everFailCondition.exmap[SquadAction] ( - _ => Attempt.failure(Err(s"can not match a codec pattern for decoding $action")), - _ => Attempt.failure(Err(s"can not match a codec pattern for encoding $action")) - ) + def failureCodec(action: Int) = + everFailCondition.exmap[SquadAction]( + _ => Attempt.failure(Err(s"can not match a codec pattern for decoding $action")), + _ => Attempt.failure(Err(s"can not match a codec pattern for encoding $action")) + ) } } @@ -403,16 +414,15 @@ object SquadAction{ * @param action the purpose of this packet; * also decides the content of the parameter fields */ -final case class SquadDefinitionActionMessage(squad_guid : PlanetSideGUID, - line : Int, - action : SquadAction) - extends PlanetSideGamePacket { +final case class SquadDefinitionActionMessage(squad_guid: PlanetSideGUID, line: Int, action: SquadAction) + extends PlanetSideGamePacket { type Packet = SquadDefinitionActionMessage def opcode = GamePacketOpcode.SquadDefinitionActionMessage def encode = SquadDefinitionActionMessage.encode(this) } object SquadDefinitionActionMessage extends Marshallable[SquadDefinitionActionMessage] { + /** * Use the action code to transform between * the specific action object and its field data @@ -420,20 +430,20 @@ object SquadDefinitionActionMessage extends Marshallable[SquadDefinitionActionMe * @param code the action behavior code * @return the `SquadAction` `Codec` to use for the given `code` */ - def selectFromActionCode(code : Int) : Codec[SquadAction] = { + def selectFromActionCode(code: Int): Codec[SquadAction] = { import SquadAction.Codecs._ import scala.annotation.switch - ((code : @switch) match { - case 0 => displaySquadCodec - case 1 => squadMemberInitializationIssueCodec - case 2 => unknownCodec(action = 2) - case 3 => saveSquadFavoriteCodec - case 4 => loadSquadFavoriteCodec - case 5 => deleteSquadFavoriteCodec - case 6 => unknownCodec(action = 6) - case 7 => listSquadFavoriteCodec - case 8 => requestListSquadCodec - case 9 => stopListSquadCodec + ((code: @switch) match { + case 0 => displaySquadCodec + case 1 => squadMemberInitializationIssueCodec + case 2 => unknownCodec(action = 2) + case 3 => saveSquadFavoriteCodec + case 4 => loadSquadFavoriteCodec + case 5 => deleteSquadFavoriteCodec + case 6 => unknownCodec(action = 6) + case 7 => listSquadFavoriteCodec + case 8 => requestListSquadCodec + case 9 => stopListSquadCodec case 10 => selectRoleForYourselfCodec case 11 => unknownCodec(action = 11) case 12 => unknownCodec(action = 12) @@ -468,17 +478,17 @@ object SquadDefinitionActionMessage extends Marshallable[SquadDefinitionActionMe case 41 => cancelFindCodec case 42 => unknownCodec(action = 42) case 43 => unknownCodec(action = 43) - case _ => failureCodec(code) + case _ => failureCodec(code) }).asInstanceOf[Codec[SquadAction]] } - implicit val codec : Codec[SquadDefinitionActionMessage] = ( + implicit val codec: Codec[SquadDefinitionActionMessage] = ( uintL(6) >>:~ { code => ("squad_guid" | PlanetSideGUID.codec) :: ("line" | uint4L) :: ("action" | selectFromActionCode(code)) } - ).xmap[SquadDefinitionActionMessage] ( + ).xmap[SquadDefinitionActionMessage]( { case _ :: guid :: line :: action :: HNil => SquadDefinitionActionMessage(guid, line, action) diff --git a/common/src/main/scala/net/psforever/packet/game/SquadDetailDefinitionUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/SquadDetailDefinitionUpdateMessage.scala index ecc1e1b3..4029ec9d 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadDetailDefinitionUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadDetailDefinitionUpdateMessage.scala @@ -14,17 +14,17 @@ import scala.annotation.tailrec * @param init the starting pad value; * defaults to 0 */ -class StreamLengthToken(init : Int = 0) { - private var bitLength : Int = init +class StreamLengthToken(init: Int = 0) { + private var bitLength: Int = init - def Length : Int = bitLength + def Length: Int = bitLength - def Length_=(toLength : Int) : StreamLengthToken = { + def Length_=(toLength: Int): StreamLengthToken = { bitLength = toLength this } - def Add(more : Int) : StreamLengthToken = { + def Add(more: Int): StreamLengthToken = { bitLength += more this } @@ -44,12 +44,15 @@ class StreamLengthToken(init : Int = 0) { * @param char_id the unique character identification number for the player that is occupying this position * @param name the name of the player who is occupying this position */ -final case class SquadPositionDetail(is_closed : Option[Boolean], - role : Option[String], - detailed_orders : Option[String], - requirements : Option[Set[CertificationType.Value]], - char_id : Option[Long], - name : Option[String]) { +final case class SquadPositionDetail( + is_closed: Option[Boolean], + role: Option[String], + detailed_orders: Option[String], + requirements: Option[Set[CertificationType.Value]], + char_id: Option[Long], + name: Option[String] +) { + /** * Combine two `SquadPositionDetail` objects, with priority given to `this` one. * Most fields that are not empty are assigned. @@ -58,7 +61,7 @@ final case class SquadPositionDetail(is_closed : Option[Boolean], * @param info the object being combined * @return the combined `SquadDetail` object */ - def And(info : SquadPositionDetail) : SquadPositionDetail = { + def And(info: SquadPositionDetail): SquadPositionDetail = { SquadPositionDetail( is_closed match { case Some(false) | None => @@ -75,35 +78,36 @@ final case class SquadPositionDetail(is_closed : Option[Boolean], } //methods intended to combine the fields of itself and another object - def Open : SquadPositionDetail = + def Open: SquadPositionDetail = this And SquadPositionDetail(Some(false), None, None, None, None, None) - def Close : SquadPositionDetail = + def Close: SquadPositionDetail = this And SquadPositionDetail(Some(true), None, None, None, None, None) - def Role(role : String) : SquadPositionDetail = + def Role(role: String): SquadPositionDetail = this And SquadPositionDetail(None, Some(role), None, None, None, None) - def DetailedOrders(orders : String) : SquadPositionDetail = + def DetailedOrders(orders: String): SquadPositionDetail = this And SquadPositionDetail(None, None, Some(orders), None, None, None) - def Requirements(req : Set[CertificationType.Value]) : SquadPositionDetail = + def Requirements(req: Set[CertificationType.Value]): SquadPositionDetail = this And SquadPositionDetail(None, None, None, Some(req), None, None) - def CharId(char_id : Long) : SquadPositionDetail = + def CharId(char_id: Long): SquadPositionDetail = this And SquadPositionDetail(None, None, None, None, Some(char_id), None) - def Name(name : String) : SquadPositionDetail = + def Name(name: String): SquadPositionDetail = this And SquadPositionDetail(None, None, None, None, None, Some(name)) - def Player(char_id : Long, name : String) : SquadPositionDetail = + def Player(char_id: Long, name: String): SquadPositionDetail = this And SquadPositionDetail(None, None, None, None, Some(char_id), Some(name)) /** * Complete the object by providing placeholder values for all fields. * @return a `SquadPositionDetail` object with all of its field populated */ - def Complete : SquadPositionDetail = SquadPositionDetail( - is_closed.orElse(Some(false)), - role.orElse(Some("")), - detailed_orders.orElse(Some("")), - requirements.orElse(Some(Set.empty)), - char_id.orElse(Some(0L)), - name.orElse(Some("")) - ) + def Complete: SquadPositionDetail = + SquadPositionDetail( + is_closed.orElse(Some(false)), + role.orElse(Some("")), + detailed_orders.orElse(Some("")), + requirements.orElse(Some(Set.empty)), + char_id.orElse(Some(0L)), + name.orElse(Some("")) + ) } /** @@ -114,9 +118,13 @@ final case class SquadPositionDetail(is_closed : Option[Boolean], * when 255, this indicated the end of enumerated squad position data and the data for that position is absent * @param info the squad position field data */ -final case class SquadPositionEntry(index : Int, info : Option[SquadPositionDetail]) { +final case class SquadPositionEntry(index: Int, info: Option[SquadPositionDetail]) { assert((index > -1 && index < 10) || index == 255, "index value is out of range 0=>n<=9 or n=255") - assert(if(index == 255) { info.isEmpty } else { true }, "index=255 indicates end of stream exclusively and field data should be blank") + assert( + if (index == 255) { info.isEmpty } + else { true }, + "index=255 indicates end of stream exclusively and field data should be blank" + ) } /** @@ -139,22 +147,25 @@ final case class SquadPositionEntry(index : Int, info : Option[SquadPositionDeta * @param unk7 na * @param member_info a list of squad position data */ -final case class SquadDetail(unk1 : Option[Int], - unk2 : Option[Int], - leader_char_id : Option[Long], - unk3 : Option[Long], - leader_name : Option[String], - task : Option[String], - zone_id : Option[PlanetSideZoneID], - unk7 : Option[Int], - member_info : Option[List[SquadPositionEntry]]) { +final case class SquadDetail( + unk1: Option[Int], + unk2: Option[Int], + leader_char_id: Option[Long], + unk3: Option[Long], + leader_name: Option[String], + task: Option[String], + zone_id: Option[PlanetSideZoneID], + unk7: Option[Int], + member_info: Option[List[SquadPositionEntry]] +) { + /** * Combine two `SquadDetail` objects, with priority given to `this` one. * Most fields that are not empty are assigned. * @param info the object being combined * @return the combined `SquadDetail` object */ - def And(info : SquadDetail) : SquadDetail = { + def And(info: SquadDetail): SquadDetail = { SquadDetail( unk1.orElse(info.unk1), unk2.orElse(info.unk2), @@ -163,8 +174,7 @@ final case class SquadDetail(unk1 : Option[Int], leader_name.orElse(info.leader_name), task.orElse(info.task), zone_id.orElse(info.zone_id), - unk7.orElse(info.unk7), - { + unk7.orElse(info.unk7), { (member_info, info.member_info) match { case (Some(info1), Some(info2)) => //combine the first list with the elements of the second list whose indices not found in the first list @@ -183,23 +193,23 @@ final case class SquadDetail(unk1 : Option[Int], } //methods intended to combine the fields of itself and another object - def Field1(value : Int) : SquadDetail = + def Field1(value: Int): SquadDetail = this And SquadDetail(Some(value), None, None, None, None, None, None, None, None) - def LeaderCharId(char_id : Long) : SquadDetail = + def LeaderCharId(char_id: Long): SquadDetail = this And SquadDetail(None, None, Some(char_id), None, None, None, None, None, None) - def Field3(value : Long) : SquadDetail = + def Field3(value: Long): SquadDetail = this And SquadDetail(None, None, None, Some(value), None, None, None, None, None) - def LeaderName(name : String) : SquadDetail = + def LeaderName(name: String): SquadDetail = this And SquadDetail(None, None, None, None, Some(name), None, None, None, None) - def Leader(char_id : Long, name : String) : SquadDetail = + def Leader(char_id: Long, name: String): SquadDetail = this And SquadDetail(None, None, Some(char_id), None, Some(name), None, None, None, None) - def Task(task : String) : SquadDetail = + def Task(task: String): SquadDetail = this And SquadDetail(None, None, None, None, None, Some(task), None, None, None) - def ZoneId(zone : PlanetSideZoneID) : SquadDetail = + def ZoneId(zone: PlanetSideZoneID): SquadDetail = this And SquadDetail(None, None, None, None, None, None, Some(zone), None, None) - def Field7(value : Int) : SquadDetail = + def Field7(value: Int): SquadDetail = this And SquadDetail(None, None, None, None, None, None, None, Some(value), None) - def Members(list : List[SquadPositionEntry]) : SquadDetail = + def Members(list: List[SquadPositionEntry]): SquadDetail = this And SquadDetail(None, None, None, None, None, None, None, None, Some(list)) /** @@ -207,31 +217,33 @@ final case class SquadDetail(unk1 : Option[Int], * The `member_info` field requires additional allocation. * @return a `SquadDetail` object with all of its field populated */ - def Complete : SquadDetail = SquadDetail( - unk1.orElse(Some(1)), - unk2.orElse(Some(0)), - leader_char_id.orElse(Some(0L)), - unk3.orElse(Some(0L)), - leader_name.orElse(Some("")), - task.orElse(Some("")), - zone_id.orElse(Some(PlanetSideZoneID(0))), - unk7.orElse(Some(4983296)), //FullSquad value - { - val complete = SquadPositionDetail().Complete - Some(member_info match { - case Some(info) => - //create one list that ensures all existing positions are "complete" then add a list of the missing indices - val (indices, fields) = info.collect { - case SquadPositionEntry(a, Some(b)) => (a, SquadPositionEntry(a, b.Complete)) - case out @ SquadPositionEntry(a, None) => (a, out) - }.unzip - ((0 to 9).toSet.diff(indices.toSet).map { SquadPositionEntry(_, complete) } ++ fields).toList.sortBy(_.index) - case None => - //original list - (0 to 9).map { i => SquadPositionEntry(i, complete) }.toList - }) - } - ) + def Complete: SquadDetail = + SquadDetail( + unk1.orElse(Some(1)), + unk2.orElse(Some(0)), + leader_char_id.orElse(Some(0L)), + unk3.orElse(Some(0L)), + leader_name.orElse(Some("")), + task.orElse(Some("")), + zone_id.orElse(Some(PlanetSideZoneID(0))), + unk7.orElse(Some(4983296)), //FullSquad value + { + val complete = SquadPositionDetail().Complete + Some(member_info match { + case Some(info) => + //create one list that ensures all existing positions are "complete" then add a list of the missing indices + val (indices, fields) = info.collect { + case SquadPositionEntry(a, Some(b)) => (a, SquadPositionEntry(a, b.Complete)) + case out @ SquadPositionEntry(a, None) => (a, out) + }.unzip + ((0 to 9).toSet.diff(indices.toSet).map { SquadPositionEntry(_, complete) } ++ fields).toList + .sortBy(_.index) + case None => + //original list + (0 to 9).map { i => SquadPositionEntry(i, complete) }.toList + }) + } + ) } /** @@ -252,60 +264,72 @@ final case class SquadDetail(unk1 : Option[Int], * @param guid the globally unique identifier of the squad * @param detail information regarding the squad */ -final case class SquadDetailDefinitionUpdateMessage(guid : PlanetSideGUID, - detail : SquadDetail) - extends PlanetSideGamePacket { +final case class SquadDetailDefinitionUpdateMessage(guid: PlanetSideGUID, detail: SquadDetail) + extends PlanetSideGamePacket { type Packet = SquadDetailDefinitionUpdateMessage def opcode = GamePacketOpcode.SquadDetailDefinitionUpdateMessage def encode = SquadDetailDefinitionUpdateMessage.encode(this) } object SquadPositionDetail { + /** * A featureless squad position. * References the default overloaded constructor. */ - final val Blank : SquadPositionDetail = SquadPositionDetail() + final val Blank: SquadPositionDetail = SquadPositionDetail() + /** * An unavailable squad position. */ - final val Closed : SquadPositionDetail = SquadPositionDetail(is_closed = Some(true), None, None, None, None, None) + final val Closed: SquadPositionDetail = SquadPositionDetail(is_closed = Some(true), None, None, None, None, None) + /** * An available squad position. */ - final val Open : SquadPositionDetail = SquadPositionDetail(is_closed = Some(false), None, None, None, None, None) + final val Open: SquadPositionDetail = SquadPositionDetail(is_closed = Some(false), None, None, None, None, None) /** * An overloaded constructor that produces a featureless squad position. * @return a `SquadPositionDetail` object */ - def apply() : SquadPositionDetail = SquadPositionDetail(None, None, None, None, None, None) + def apply(): SquadPositionDetail = SquadPositionDetail(None, None, None, None, None, None) + /** * An overloaded constructor that produces a full squad position with a role, detailed orders, and certification requirements. * This basically defines an available squad position that is unoccupied. * @return a `SquadPositionDetail` object */ - def apply(role : String, detailed_orders : String, requirements : Set[CertificationType.Value], char_id : Long, name : String) : SquadPositionDetail = SquadPositionDetail(Some(false), Some(role), Some(detailed_orders), Some(requirements), Some(char_id), Some(name)) + def apply( + role: String, + detailed_orders: String, + requirements: Set[CertificationType.Value], + char_id: Long, + name: String + ): SquadPositionDetail = + SquadPositionDetail(Some(false), Some(role), Some(detailed_orders), Some(requirements), Some(char_id), Some(name)) object Fields { - final val Closed = 0 - final val Role = 1 - final val Orders = 2 - final val CharId = 3 - final val Name = 4 + final val Closed = 0 + final val Role = 1 + final val Orders = 2 + final val CharId = 3 + final val Name = 4 final val Requirements = 5 } } object SquadPositionEntry { + /** * An overloaded constructor. * @return a `SquadPositionEntry` object */ - def apply(index : Int, detail : SquadPositionDetail) : SquadPositionEntry = SquadPositionEntry(index, Some(detail)) + def apply(index: Int, detail: SquadPositionDetail): SquadPositionEntry = SquadPositionEntry(index, Some(detail)) } object SquadDetail { + /** * A featureless squad. * References the default overloaded constructor. @@ -316,62 +340,88 @@ object SquadDetail { * An overloaded constructor that produces a featureless squad. * @return a `SquadDetail` object */ - def apply() : SquadDetail = SquadDetail(None, None, None, None, None, None, None, None, None) + def apply(): SquadDetail = SquadDetail(None, None, None, None, None, None, None, None, None) + /** * An overloaded constructor that produces a complete squad with all fields populated. * @return a `SquadDetail` object */ - def apply(unk1 : Int, unk2 : Int, leader_char_id : Long, unk3 : Long, leader_name : String, task : String, zone_id : PlanetSideZoneID, unk7 : Int, member_info : List[SquadPositionEntry]) : SquadDetail = { - SquadDetail(Some(unk1), Some(unk2), Some(leader_char_id), Some(unk3), Some(leader_name), Some(task), Some(zone_id), Some(unk7), Some(member_info)) + def apply( + unk1: Int, + unk2: Int, + leader_char_id: Long, + unk3: Long, + leader_name: String, + task: String, + zone_id: PlanetSideZoneID, + unk7: Int, + member_info: List[SquadPositionEntry] + ): SquadDetail = { + SquadDetail( + Some(unk1), + Some(unk2), + Some(leader_char_id), + Some(unk3), + Some(leader_name), + Some(task), + Some(zone_id), + Some(unk7), + Some(member_info) + ) } //individual field overloaded constructors - def Field1(unk1 : Int) : SquadDetail = + def Field1(unk1: Int): SquadDetail = SquadDetail(Some(unk1), None, None, None, None, None, None, None, None) - def LeaderCharId(char_id : Long) : SquadDetail = + def LeaderCharId(char_id: Long): SquadDetail = SquadDetail(None, None, Some(char_id), None, None, None, None, None, None) - def Field3(char_id : Option[Long], unk3 : Long) : SquadDetail = + def Field3(char_id: Option[Long], unk3: Long): SquadDetail = SquadDetail(None, None, None, Some(unk3), None, None, None, None, None) - def LeaderName(name : String) : SquadDetail = + def LeaderName(name: String): SquadDetail = SquadDetail(None, None, None, None, Some(name), None, None, None, None) - def Leader(char_id : Long, name : String) : SquadDetail = + def Leader(char_id: Long, name: String): SquadDetail = SquadDetail(None, None, Some(char_id), None, Some(name), None, None, None, None) - def Task(task : String) : SquadDetail = + def Task(task: String): SquadDetail = SquadDetail(None, None, None, None, None, Some(task), None, None, None) - def ZoneId(zone : PlanetSideZoneID) : SquadDetail = + def ZoneId(zone: PlanetSideZoneID): SquadDetail = SquadDetail(None, None, None, None, None, None, Some(zone), None, None) - def Field7(unk7 : Int) : SquadDetail = + def Field7(unk7: Int): SquadDetail = SquadDetail(None, None, None, None, None, None, None, Some(unk7), None) - def Members(list : List[SquadPositionEntry]) : SquadDetail = + def Members(list: List[SquadPositionEntry]): SquadDetail = SquadDetail(None, None, None, None, None, None, None, None, Some(list)) object Fields { - final val Field1 = 1 - final val CharId = 2 - final val Field3 = 3 - final val Leader = 4 - final val Task = 5 - final val ZoneId = 6 - final val Field7 = 7 + final val Field1 = 1 + final val CharId = 2 + final val Field3 = 3 + final val Leader = 4 + final val Task = 5 + final val ZoneId = 6 + final val Field7 = 7 final val Members = 8 } } object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefinitionUpdateMessage] { + /** * The patterns necessary to read uncoded squad data. * All squad fields and all squad position fields are parsed. */ object FullSquad { + /** * The first squad position entry has its first string (`role`) field padded by a constant amount. */ - private val first_position_codec : Codec[SquadPositionDetail] = basePositionCodec(bitsOverByteLength = 1, DefaultRequirements) + private val first_position_codec: Codec[SquadPositionDetail] = + basePositionCodec(bitsOverByteLength = 1, DefaultRequirements) + /** * All squad position entries asides from the first have unpadded strings. * The very first entry aligns the remainder of the string fields along byte boundaries. */ - private val position_codec : Codec[SquadPositionDetail] = basePositionCodec(bitsOverByteLength = 0, DefaultRequirements) + private val position_codec: Codec[SquadPositionDetail] = + basePositionCodec(bitsOverByteLength = 0, DefaultRequirements) /** * Internal class for linked list operations. @@ -384,14 +434,14 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Parse each squad position field in the bitstream after the first one. * @return a pattern outlining sequential squad positions */ - private def subsequent_member_codec : Codec[LinkedFields] = { + private def subsequent_member_codec: Codec[LinkedFields] = { import shapeless.:: ( //disruptive coupling action (e.g., flatPrepend) is necessary for recursive Codec ("member" | position_codec) >>:~ { _ => optional(bool, "next" | subsequent_member_codec).hlist } - ).xmap[LinkedFields] ( + ).xmap[LinkedFields]( { case a :: b :: HNil => LinkedFields(a, b) @@ -407,12 +457,12 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Parse the first squad position field in the bitstream. * @return a pattern outlining sequential squad positions */ - private def initial_member_codec : Codec[LinkedFields] = { + private def initial_member_codec: Codec[LinkedFields] = { import shapeless.:: ( ("member" | first_position_codec) :: optional(bool, "next" | subsequent_member_codec) - ).xmap[LinkedFields] ( + ).xmap[LinkedFields]( { case a :: b :: HNil => LinkedFields(a, b) @@ -431,7 +481,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final `List` output */ @tailrec - private def unlinkFields(list : LinkedFields, out : List[SquadPositionDetail] = Nil) : List[SquadPositionDetail] = { + private def unlinkFields(list: LinkedFields, out: List[SquadPositionDetail] = Nil): List[SquadPositionDetail] = { list.next match { case None => out :+ list.info @@ -446,7 +496,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param list the original traditional `List` * @return the final linked list output */ - private def linkFields(list : List[SquadPositionDetail]) : LinkedFields = { + private def linkFields(list: List[SquadPositionDetail]): LinkedFields = { list match { case Nil => throw new Exception("") @@ -465,7 +515,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final linked list output */ @tailrec - private def linkFields(list : List[SquadPositionDetail], out : LinkedFields) : LinkedFields = { + private def linkFields(list: List[SquadPositionDetail], out: LinkedFields): LinkedFields = { list match { case Nil => out @@ -479,7 +529,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini /** * Entry point. */ - val codec : Codec[SquadDetail] = { + val codec: Codec[SquadDetail] = { import shapeless.:: ( ("unk1" | uint8) :: @@ -491,19 +541,39 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini ("zone_id" | PlanetSideZoneID.codec) :: ("unk7" | uint(23)) :: //during full squad mode, constant = 4983296 optional(bool, "member_info" | initial_member_codec) - ).exmap[SquadDetail] ( + ).exmap[SquadDetail]( { case u1 :: u2 :: char_id :: u3 :: leader :: task :: zone :: unk7 :: Some(member_list) :: HNil => Attempt.Successful( - SquadDetail(Some(u1), Some(u2), Some(char_id), Some(u3), Some(leader), Some(task), Some(zone), Some(unk7), - Some(unlinkFields(member_list).zipWithIndex.map { case (entry, index) => SquadPositionEntry(index, Some(entry)) }) + SquadDetail( + Some(u1), + Some(u2), + Some(char_id), + Some(u3), + Some(leader), + Some(task), + Some(zone), + Some(unk7), + Some(unlinkFields(member_list).zipWithIndex.map { + case (entry, index) => SquadPositionEntry(index, Some(entry)) + }) ) ) case data => Attempt.failure(Err(s"can not get squad detail definition from data $data")) }, { - case SquadDetail(Some(u1), Some(u2), Some(char_id), Some(u3), Some(leader), Some(task), Some(zone), Some(unk7), Some(member_list)) => + case SquadDetail( + Some(u1), + Some(u2), + Some(char_id), + Some(u3), + Some(leader), + Some(task), + Some(zone), + Some(unk7), + Some(member_list) + ) => Attempt.Successful( math.max(u1, 1) :: u2 :: char_id :: u3 :: leader :: task :: zone :: unk7 :: Some(linkFields(member_list.collect { case SquadPositionEntry(_, Some(entry)) => entry }.reverse)) :: @@ -524,73 +594,81 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * unlisted fields indicate fields that do not get updated from their current values. */ object ItemizedSquad { + /** * A pattern for data related to "field1." */ - private val field1Codec : Codec[SquadDetail] = uint16L.exmap[SquadDetail] ( + private val field1Codec: Codec[SquadDetail] = uint16L.exmap[SquadDetail]( unk1 => Attempt.successful(SquadDetail(Some(unk1), None, None, None, None, None, None, None, None)), { - case SquadDetail(Some(unk1), _, _, _, _, _, _, _, _) => + case SquadDetail(Some(unk1), _, _, _, _, _, _, _, _) => Attempt.successful(unk1) case _ => Attempt.failure(Err("failed to encode squad data for unknown field #1")) } ) + /** * A pattern for data related to the squad leader's `char_id` field. */ - private val leaderCharIdCodec : Codec[SquadDetail] = uint32L.exmap[SquadDetail] ( + private val leaderCharIdCodec: Codec[SquadDetail] = uint32L.exmap[SquadDetail]( char_id => Attempt.successful(SquadDetail(None, None, Some(char_id), None, None, None, None, None, None)), { - case SquadDetail(_, _, Some(char_id), _, _, _, _, _, _) => + case SquadDetail(_, _, Some(char_id), _, _, _, _, _, _) => Attempt.successful(char_id) case _ => Attempt.failure(Err("failed to encode squad data for leader id")) } ) + /** * A pattern for data related to "field3." */ - private val field3Codec : Codec[SquadDetail] = uint32L.exmap[SquadDetail] ( + private val field3Codec: Codec[SquadDetail] = uint32L.exmap[SquadDetail]( unk3 => Attempt.successful(SquadDetail(None, None, None, Some(unk3), None, None, None, None, None)), { - case SquadDetail(_, _, _, Some(unk3), _, _, _, _, _) => + case SquadDetail(_, _, _, Some(unk3), _, _, _, _, _) => Attempt.successful(unk3) case _ => Attempt.failure(Err("failed to encode squad data for unknown field #3")) } ) + /** * A pattern for data related to the squad leader's `name` field. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def leaderNameCodec(bitsOverByte : StreamLengthToken) : Codec[SquadDetail] = paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadDetail] ( - name => Attempt.successful(SquadDetail(None, None, None, None, Some(name), None, None, None, None)), - { - case SquadDetail(_, _, _, _, Some(name), _, _, _, _) => - Attempt.successful(name) - case _ => - Attempt.failure(Err("failed to encode squad data for leader name")) - } - ) + private def leaderNameCodec(bitsOverByte: StreamLengthToken): Codec[SquadDetail] = + paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadDetail]( + name => Attempt.successful(SquadDetail(None, None, None, None, Some(name), None, None, None, None)), + { + case SquadDetail(_, _, _, _, Some(name), _, _, _, _) => + Attempt.successful(name) + case _ => + Attempt.failure(Err("failed to encode squad data for leader name")) + } + ) + /** * A pattern for data related to the squad's `task` field, also often described as the squad description. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def taskCodec(bitsOverByte : StreamLengthToken) : Codec[SquadDetail] = paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadDetail] ( - task => Attempt.successful(SquadDetail(None, None, None, None, None, Some(task), None, None, None)), - { - case SquadDetail(_, _, _, _, _, Some(task), _, _, _) => - Attempt.successful(task) - case _ => - Attempt.failure(Err("failed to encode squad data for task")) - } - ) + private def taskCodec(bitsOverByte: StreamLengthToken): Codec[SquadDetail] = + paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadDetail]( + task => Attempt.successful(SquadDetail(None, None, None, None, None, Some(task), None, None, None)), + { + case SquadDetail(_, _, _, _, _, Some(task), _, _, _) => + Attempt.successful(task) + case _ => + Attempt.failure(Err("failed to encode squad data for task")) + } + ) + /** * A pattern for data related to the squad leader's `zone_id` field. * @see `PlanetSideZoneID.codec` */ - private val zoneCodec : Codec[SquadDetail] = PlanetSideZoneID.codec.exmap[SquadDetail] ( + private val zoneCodec: Codec[SquadDetail] = PlanetSideZoneID.codec.exmap[SquadDetail]( zone_id => Attempt.successful(SquadDetail(None, None, None, None, None, None, Some(zone_id), None, None)), { case SquadDetail(_, _, _, _, _, _, Some(zone_id), _, _) => @@ -599,20 +677,22 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini Attempt.failure(Err("failed to encode squad data for zone id")) } ) + /** * A pattern for data related to "field7." */ - private val field7Codec : Codec[SquadDetail] = { - uint4.exmap[SquadDetail] ( + private val field7Codec: Codec[SquadDetail] = { + uint4.exmap[SquadDetail]( unk7 => Attempt.successful(SquadDetail(None, None, None, None, None, None, None, Some(unk7), None)), { - case SquadDetail(_, _, _, _, _, _, _, Some(unk7), _) => + case SquadDetail(_, _, _, _, _, _, _, Some(unk7), _) => Attempt.successful(unk7) case _ => Attempt.failure(Err("failed to encode squad data for unknown field #7")) } ) } + /** * A pattern for data related to the squad's position entry fields. * The actual parsing of the data for the positions diverges @@ -620,47 +700,82 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * or a fully populated parsing pattern. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def membersCodec(bitsOverByte : StreamLengthToken) : Codec[SquadDetail] = { + private def membersCodec(bitsOverByte: StreamLengthToken): Codec[SquadDetail] = { import shapeless.:: ( bool >>:~ { flag => - conditional(flag, { - bitsOverByte.Add(4) - uint(3) :: vector(ItemizedPositions.codec(bitsOverByte)) - }) :: - conditional(!flag, { - bitsOverByte.Add(3) - uint2 :: FullyPopulatedPositions.codec(bitsOverByte) - }) + conditional( + flag, { + bitsOverByte.Add(4) + uint(3) :: vector(ItemizedPositions.codec(bitsOverByte)) + } + ) :: + conditional( + !flag, { + bitsOverByte.Add(3) + uint2 :: FullyPopulatedPositions.codec(bitsOverByte) + } + ) } - ).exmap[SquadDetail] ( + ).exmap[SquadDetail]( { case true :: Some(_ :: member_list :: HNil) :: _ :: HNil => - Attempt.successful(SquadDetail(None, None, None, None, None, None, None, None, Some(ignoreTerminatingEntry(member_list.toList)))) + Attempt.successful( + SquadDetail( + None, + None, + None, + None, + None, + None, + None, + None, + Some(ignoreTerminatingEntry(member_list.toList)) + ) + ) case false :: None :: Some(_ :: member_list :: HNil) :: HNil => - Attempt.successful(SquadDetail(None, None, None, None, None, None, None, None, Some(ignoreTerminatingEntry(member_list.toList)))) + Attempt.successful( + SquadDetail( + None, + None, + None, + None, + None, + None, + None, + None, + Some(ignoreTerminatingEntry(member_list.toList)) + ) + ) case data => Attempt.failure(Err(s"SquadDetail $data not encoded correctly")) }, { case SquadDetail(_, _, _, _, _, _, _, _, Some(member_list)) => - if(member_list - .collect { case position if position.info.nonEmpty => - val info = position.info.get - List(info.is_closed, info.role, info.detailed_orders, info.requirements, info.char_id, info.name) - } - .flatten - .count(_.isEmpty) == 0) { - Attempt.successful(false :: None :: Some(2 :: ensureTerminatingEntry(member_list).toVector :: HNil) :: HNil) - } - else { - Attempt.successful(true :: Some(4 :: ensureTerminatingEntry(member_list).toVector :: HNil) :: None :: HNil) + if ( + member_list + .collect { + case position if position.info.nonEmpty => + val info = position.info.get + List(info.is_closed, info.role, info.detailed_orders, info.requirements, info.char_id, info.name) + } + .flatten + .count(_.isEmpty) == 0 + ) { + Attempt.successful( + false :: None :: Some(2 :: ensureTerminatingEntry(member_list).toVector :: HNil) :: HNil + ) + } else { + Attempt.successful( + true :: Some(4 :: ensureTerminatingEntry(member_list).toVector :: HNil) :: None :: HNil + ) } case _ => Attempt.failure(Err("failed to encode squad data for members")) } ) } + /** * A failing pattern for when the coded value is not tied to a known field pattern. * This pattern does not read or write any bit data. @@ -669,10 +784,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * and all cases involving explicit failure. * @param code the unknown action code */ - private def failureCodec(code : Int) : Codec[SquadDetail] = conditional(included = false, bool).exmap[SquadDetail] ( - _ => Attempt.failure(Err(s"decoding squad data with unhandled codec - $code")), - _ => Attempt.failure(Err(s"encoding squad data with unhandled codec - $code")) - ) + private def failureCodec(code: Int): Codec[SquadDetail] = + conditional(included = false, bool).exmap[SquadDetail]( + _ => Attempt.failure(Err(s"decoding squad data with unhandled codec - $code")), + _ => Attempt.failure(Err(s"encoding squad data with unhandled codec - $code")) + ) /** * Retrieve the field pattern by its associated action code. @@ -680,7 +796,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return the field pattern */ - private def selectCodedAction(code : Int, bitsOverByte : StreamLengthToken) : Codec[SquadDetail] = { + private def selectCodedAction(code: Int, bitsOverByte: StreamLengthToken): Codec[SquadDetail] = { code match { case 1 => field1Codec case 2 => leaderCharIdCodec @@ -701,16 +817,16 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return a modified token maintaining stream misalignment */ - private def modifyCodedPadValue(code : Int, bitsOverByte : StreamLengthToken) : StreamLengthToken = { + private def modifyCodedPadValue(code: Int, bitsOverByte: StreamLengthToken): StreamLengthToken = { code match { - case 1 => bitsOverByte //16u = no added padding - case 2 => bitsOverByte //32u = no added padding - case 3 => bitsOverByte //32u = no added padding - case 4 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd - case 5 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd - case 6 => bitsOverByte //32u = no added padding - case 7 => bitsOverByte.Add(4) //additional 4u - case 8 => bitsOverByte.Length = 0 //end of stream + case 1 => bitsOverByte //16u = no added padding + case 2 => bitsOverByte //32u = no added padding + case 3 => bitsOverByte //32u = no added padding + case 4 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd + case 5 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd + case 6 => bitsOverByte //32u = no added padding + case 7 => bitsOverByte.Add(4) //additional 4u + case 8 => bitsOverByte.Length = 0 //end of stream case _ => bitsOverByte.Length = Int.MinValue //wildly incorrect } } @@ -721,14 +837,14 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param info data for the squad field * @param next if there is a "next" squad field */ - private final case class LinkedFields(code : Int, info : SquadDetail, next : Option[LinkedFields]) + private final case class LinkedFields(code: Int, info: SquadDetail, next: Option[LinkedFields]) /** * Transform a linked list of individual squad field data into a combined squad data object. * @param list the current section of the original linked list * @return the final squad object output */ - private def unlinkFields(list : LinkedFields) : SquadDetail = unlinkFields(Some(list)) + private def unlinkFields(list: LinkedFields): SquadDetail = unlinkFields(Some(list)) /** * Transform a linked list of individual squad field data into a combined squad data object. @@ -737,7 +853,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final squad object output */ @tailrec - private def unlinkFields(info : Option[LinkedFields], out : SquadDetail = SquadDetail.Blank) : SquadDetail = { + private def unlinkFields(info: Option[LinkedFields], out: SquadDetail = SquadDetail.Blank): SquadDetail = { info match { case None => out @@ -754,7 +870,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param info the combined squad detail object * @return the final linked list output */ - private def linkFields(info : SquadDetail) : LinkedFields = { + private def linkFields(info: SquadDetail): LinkedFields = { Seq( (8, SquadDetail(None, None, None, None, None, None, None, None, info.member_info)), (7, SquadDetail(None, None, None, None, None, None, None, info.unk7, None)), @@ -765,8 +881,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini (2, SquadDetail(None, None, info.leader_char_id, None, None, None, None, None, None)), (1, SquadDetail(info.unk1, None, None, None, None, None, None, None, None)) ) //in reverse order so that the linked list is in the correct order - .filterNot { case (_, sqInfo) => sqInfo == SquadDetail.Blank} - match { + .filterNot { case (_, sqInfo) => sqInfo == SquadDetail.Blank } match { case Nil => throw new Exception("no linked list squad fields encountered where at least one was expected") //bad end case x :: Nil => @@ -785,11 +900,10 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final linked list output */ @tailrec - private def linkFields(list : Seq[(Int, SquadDetail)], out : LinkedFields) : LinkedFields = { - if(list.isEmpty) { + private def linkFields(list: Seq[(Int, SquadDetail)], out: LinkedFields): LinkedFields = { + if (list.isEmpty) { out - } - else { + } else { val (code, data) = list.head linkFields(list.tail, LinkedFields(code, data, Some(out))) } @@ -802,7 +916,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return a linked list composed of the squad fields */ - private def chain_linked_fields(size : Int, bitsOverByte : StreamLengthToken) : Codec[LinkedFields] = { + private def chain_linked_fields(size: Int, bitsOverByte: StreamLengthToken): Codec[LinkedFields] = { import shapeless.:: ( //disruptive coupling action (e.g., flatPrepend) is necessary for recursive Codec @@ -810,7 +924,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini selectCodedAction(code, bitsOverByte.Add(4)) :: conditional(size - 1 > 0, chain_linked_fields(size - 1, modifyCodedPadValue(code, bitsOverByte))) } - ).exmap[LinkedFields] ( + ).exmap[LinkedFields]( { case action :: detail :: next :: HNil => Attempt.Successful(LinkedFields(action, detail, next)) @@ -828,10 +942,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param size the number of squad fields to be parsed * @return a pattern for parsing the coded squad field data between a coded linked list and a combined squad object */ - def codec(size : Int) : Codec[SquadDetail] = chain_linked_fields(size, new StreamLengthToken(1)).xmap[SquadDetail] ( - linkedDetail => unlinkFields(linkedDetail), - unlinkedDetail => linkFields(unlinkedDetail) - ) + def codec(size: Int): Codec[SquadDetail] = + chain_linked_fields(size, new StreamLengthToken(1)).xmap[SquadDetail]( + linkedDetail => unlinkFields(linkedDetail), + unlinkedDetail => linkFields(unlinkedDetail) + ) } /** @@ -843,10 +958,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * unlisted fields indicate fields that do not get updated from their current values. */ object ItemizedPositions { + /** * A pattern for data related to the squad position's `is_closed` field. */ - private val isClosedCodec : Codec[SquadPositionDetail] = bool.exmap[SquadPositionDetail] ( + private val isClosedCodec: Codec[SquadPositionDetail] = bool.exmap[SquadPositionDetail]( state => Attempt.successful(SquadPositionDetail(Some(state), None, None, None, None, None)), { case SquadPositionDetail(Some(state), _, _, _, _, _) => @@ -855,42 +971,50 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini Attempt.failure(Err("failed to encode squad position data for availability")) } ) + /** * A pattern for data related to the squad position's `role` field. * @see `SquadDetailDefinitionUpdateMessage.paddedStringMetaCodec` * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def roleCodec(bitsOverByte : StreamLengthToken) : Codec[SquadPositionDetail] = paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail] ( - role => Attempt.successful(SquadPositionDetail(None, Some(role), None, None, None, None)), - { - case SquadPositionDetail(_, Some(role), _, _, _, _) => - Attempt.successful(role) - case _ => - Attempt.failure(Err("failed to encode squad position data for role")) - } - ) + private def roleCodec(bitsOverByte: StreamLengthToken): Codec[SquadPositionDetail] = + paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail]( + role => Attempt.successful(SquadPositionDetail(None, Some(role), None, None, None, None)), + { + case SquadPositionDetail(_, Some(role), _, _, _, _) => + Attempt.successful(role) + case _ => + Attempt.failure(Err("failed to encode squad position data for role")) + } + ) + /** * A pattern for data related to the squad position's `detailed_orders` field. * @see `SquadDetailDefinitionUpdateMessage.paddedStringMetaCodec` * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def ordersCodec(bitsOverByte : StreamLengthToken) : Codec[SquadPositionDetail] = paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail] ( - orders => Attempt.successful(SquadPositionDetail(None, None, Some(orders), None, None, None)), - { - case SquadPositionDetail(_, _, Some(orders), _, _, _) => - Attempt.successful(orders) - case _ => - Attempt.failure(Err("failed to encode squad position data for detailed orders")) - } - ) + private def ordersCodec(bitsOverByte: StreamLengthToken): Codec[SquadPositionDetail] = + paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail]( + orders => Attempt.successful(SquadPositionDetail(None, None, Some(orders), None, None, None)), + { + case SquadPositionDetail(_, _, Some(orders), _, _, _) => + Attempt.successful(orders) + case _ => + Attempt.failure(Err("failed to encode squad position data for detailed orders")) + } + ) + /** * A pattern for data related to the squad position's `requirements` field. * @see `CertificationType.fromEncodedLong` * @see `CertificationType.toEncodedLong` * @see `SquadDefinitionActionMessage.ChangeSquadMemberRequirementsCertifications` */ - private val requirementsCodec : Codec[SquadPositionDetail] = ulongL(46).exmap[SquadPositionDetail] ( - requirements => Attempt.successful(SquadPositionDetail(None, None, None, Some(CertificationType.fromEncodedLong(requirements)), None, None)), + private val requirementsCodec: Codec[SquadPositionDetail] = ulongL(46).exmap[SquadPositionDetail]( + requirements => + Attempt.successful( + SquadPositionDetail(None, None, None, Some(CertificationType.fromEncodedLong(requirements)), None, None) + ), { case SquadPositionDetail(_, _, _, Some(requirements), _, _) => Attempt.successful(CertificationType.toEncodedLong(requirements)) @@ -898,10 +1022,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini Attempt.failure(Err("failed to encode squad position data for certification requirements")) } ) + /** * A pattern for data related to the squad position's `char_id` field, when occupied. */ - private val charIdCodec : Codec[SquadPositionDetail] = uint32L.exmap[SquadPositionDetail] ( + private val charIdCodec: Codec[SquadPositionDetail] = uint32L.exmap[SquadPositionDetail]( char_id => Attempt.successful(SquadPositionDetail(None, None, None, None, Some(char_id), None)), { case SquadPositionDetail(_, _, _, _, Some(char_id), _) => @@ -910,20 +1035,23 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini Attempt.failure(Err("failed to encode squad data for member id")) } ) + /** * A pattern for data related to the squad position's `name` field, when occupied. * @see `SquadDetailDefinitionUpdateMessage.paddedStringMetaCodec` * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def nameCodec(bitsOverByte : StreamLengthToken) : Codec[SquadPositionDetail] = paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail] ( - name => Attempt.successful(SquadPositionDetail(None, None, None, None, None, Some(name))), - { - case SquadPositionDetail(_, _, _, _, _, Some(orders)) => - Attempt.successful(orders) - case _ => - Attempt.failure(Err("failed to encode squad position data for member name")) - } - ) + private def nameCodec(bitsOverByte: StreamLengthToken): Codec[SquadPositionDetail] = + paddedStringMetaCodec(bitsOverByte.Length).exmap[SquadPositionDetail]( + name => Attempt.successful(SquadPositionDetail(None, None, None, None, None, Some(name))), + { + case SquadPositionDetail(_, _, _, _, _, Some(orders)) => + Attempt.successful(orders) + case _ => + Attempt.failure(Err("failed to encode squad position data for member name")) + } + ) + /** * A failing pattern for when the coded value is not tied to a known field pattern. * This pattern does not read or write any bit data. @@ -932,10 +1060,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * and all cases involving explicit failure. * @param code the unknown action code */ - private def failureCodec(code : Int) : Codec[SquadPositionDetail] = conditional(included = false, bool).exmap[SquadPositionDetail] ( - _ => Attempt.failure(Err(s"decoding squad position data with unhandled codec - $code")), - _ => Attempt.failure(Err(s"encoding squad position data with unhandled codec - $code")) - ) + private def failureCodec(code: Int): Codec[SquadPositionDetail] = + conditional(included = false, bool).exmap[SquadPositionDetail]( + _ => Attempt.failure(Err(s"decoding squad position data with unhandled codec - $code")), + _ => Attempt.failure(Err(s"encoding squad position data with unhandled codec - $code")) + ) /** * Retrieve the field pattern by its associated action code. @@ -943,7 +1072,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return the field pattern */ - private def selectCodedAction(code : Int, bitsOverByte : StreamLengthToken) : Codec[SquadPositionDetail] = { + private def selectCodedAction(code: Int, bitsOverByte: StreamLengthToken): Codec[SquadPositionDetail] = { code match { case 0 => isClosedCodec case 1 => roleCodec(bitsOverByte) @@ -962,14 +1091,14 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return a modified token maintaining stream misalignment */ - private def modifyCodedPadValue(code : Int, bitsOverByte : StreamLengthToken) : StreamLengthToken = { + private def modifyCodedPadValue(code: Int, bitsOverByte: StreamLengthToken): StreamLengthToken = { code match { - case 0 => bitsOverByte.Add(1) //additional 1u - case 1 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd - case 2 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd - case 3 => bitsOverByte //32u = no added padding - case 4 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd - case 5 => bitsOverByte.Add(6) //46u = 5*8u + 6u = additional 6u + case 0 => bitsOverByte.Add(1) //additional 1u + case 1 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd + case 2 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd + case 3 => bitsOverByte //32u = no added padding + case 4 => bitsOverByte.Length = 0 //byte-aligned string; padding zero'd + case 5 => bitsOverByte.Add(6) //46u = 5*8u + 6u = additional 6u case _ => bitsOverByte.Length = Int.MinValue //wildly incorrect } } @@ -980,7 +1109,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param info data for the squad position field * @param next if there is a "next" squad position field */ - private final case class LinkedFields(code : Int, info : SquadPositionDetail, next : Option[LinkedFields]) + private final case class LinkedFields(code: Int, info: SquadPositionDetail, next: Option[LinkedFields]) /** * Transform a linked list of individual squad position field data into a combined squad position object. @@ -989,7 +1118,10 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final squad position object output */ @tailrec - private def unlinkFields(info : Option[LinkedFields], out : SquadPositionDetail = SquadPositionDetail.Blank) : SquadPositionDetail = { + private def unlinkFields( + info: Option[LinkedFields], + out: SquadPositionDetail = SquadPositionDetail.Blank + ): SquadPositionDetail = { info match { case None => out @@ -1006,7 +1138,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param info the combined squad position object * @return the final linked list output */ - private def linkFields(info : SquadPositionDetail) : LinkedFields = { + private def linkFields(info: SquadPositionDetail): LinkedFields = { Seq( (5, SquadPositionDetail(None, None, None, info.requirements, None, None)), (4, SquadPositionDetail(None, None, None, None, None, info.name)), @@ -1015,10 +1147,11 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini (1, SquadPositionDetail(None, info.role, None, None, None, None)), (0, SquadPositionDetail(info.is_closed, None, None, None, None, None)) ) //in reverse order so that the linked list is in the correct order - .filterNot { case (_, sqInfo) => sqInfo == SquadPositionDetail.Blank} - match { + .filterNot { case (_, sqInfo) => sqInfo == SquadPositionDetail.Blank } match { case Nil => - throw new Exception("no linked list squad position fields encountered where at least one was expected") //bad end + throw new Exception( + "no linked list squad position fields encountered where at least one was expected" + ) //bad end case x :: Nil => val (code, squadInfo) = x LinkedFields(code, squadInfo, None) @@ -1035,11 +1168,10 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final linked list output */ @tailrec - private def linkFields(list : Seq[(Int, SquadPositionDetail)], out : LinkedFields) : LinkedFields = { - if(list.isEmpty) { + private def linkFields(list: Seq[(Int, SquadPositionDetail)], out: LinkedFields): LinkedFields = { + if (list.isEmpty) { out - } - else { + } else { val (code, data) = list.head linkFields(list.tail, LinkedFields(code, data, Some(out))) } @@ -1052,16 +1184,16 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding * @return a linked list composed of the squad position fields */ - private def chain_linked_fields(size : Int, bitsOverByte : StreamLengthToken) : Codec[LinkedFields] = { + private def chain_linked_fields(size: Int, bitsOverByte: StreamLengthToken): Codec[LinkedFields] = { import shapeless.:: ( uint4 >>:~ { code => - selectCodedAction(code, bitsOverByte.Add(4)) >>:~ { _ => + selectCodedAction(code, bitsOverByte.Add(4)) >>:~ { _ => modifyCodedPadValue(code, bitsOverByte) conditional(size - 1 > 0, chain_linked_fields(size - 1, bitsOverByte)).hlist } } - ).xmap[LinkedFields] ( + ).xmap[LinkedFields]( { case code :: entry :: next :: HNil => LinkedFields(code, entry, next) @@ -1077,22 +1209,22 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Parse the number of squad position fields anticipated and then start parsing those position fields. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def squad_member_details_codec(bitsOverByte : StreamLengthToken) : Codec[LinkedFields] = { + private def squad_member_details_codec(bitsOverByte: StreamLengthToken): Codec[LinkedFields] = { import shapeless.:: ( uint8 >>:~ { size => chain_linked_fields(size, bitsOverByte).hlist } - ).xmap[LinkedFields] ( + ).xmap[LinkedFields]( { case _ :: info :: HNil => info }, info => { //count the linked position fields by tracing the "next" field in the linked list - var i = 1 + var i = 1 var dinfo = info - while(dinfo.next.nonEmpty) { + while (dinfo.next.nonEmpty) { i += 1 dinfo = dinfo.next.get } @@ -1105,14 +1237,14 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Entry point. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - def codec(bitsOverByte : StreamLengthToken) : Codec[SquadPositionEntry] = { + def codec(bitsOverByte: StreamLengthToken): Codec[SquadPositionEntry] = { import shapeless.:: ( ("index" | uint8) >>:~ { index => conditional(index < 255, bool :: squad_member_details_codec(bitsOverByte.Add(1))) :: conditional(index == 255, bits) } - ).exmap[SquadPositionEntry] ( + ).exmap[SquadPositionEntry]( { case 255 :: _ :: _ :: HNil => Attempt.Successful(SquadPositionEntry(255, None)) @@ -1144,13 +1276,15 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * These patterns parse full squad position data that is also indexed. */ object FullyPopulatedPositions { + /** * The primary difference between the cores of `FullSquad` position data and `FullyPopulatedPositions` data, * besides variable padding, * involves the `requirements` field not having a basic set of values that are always masked. * @param bitsOverByteLength a token maintaining stream misalignment for purposes of calculating string padding */ - private def position_codec(bitsOverByteLength : Int) : Codec[SquadPositionDetail] = basePositionCodec(bitsOverByteLength, Set.empty) + private def position_codec(bitsOverByteLength: Int): Codec[SquadPositionDetail] = + basePositionCodec(bitsOverByteLength, Set.empty) /** * Internal class for linked list operations. @@ -1167,7 +1301,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final `List` output */ @tailrec - private def unlinkFields(list : LinkedFields, out : List[SquadPositionEntry] = Nil) : List[SquadPositionEntry] = { + private def unlinkFields(list: LinkedFields, out: List[SquadPositionEntry] = Nil): List[SquadPositionEntry] = { list.next match { case None => list.info match { @@ -1187,7 +1321,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param list the original traditional `List` * @return the final linked list output */ - private def linkFields(list : List[SquadPositionEntry]) : LinkedFields = { + private def linkFields(list: List[SquadPositionEntry]): LinkedFields = { list match { case Nil => throw new Exception("") @@ -1206,7 +1340,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @return the final linked list output */ @tailrec - private def linkFields(list : List[SquadPositionEntry], out : LinkedFields) : LinkedFields = { + private def linkFields(list: List[SquadPositionEntry], out: LinkedFields): LinkedFields = { list match { case Nil => out @@ -1223,7 +1357,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * All squad position entries asides from the first have unpadded strings. * The very first entry aligns the remainder of the string fields along byte boundaries. */ - private def subsequent_position_codec(size : Int) : Codec[LinkedFields] = { + private def subsequent_position_codec(size: Int): Codec[LinkedFields] = { import shapeless.:: ( uint8 >>:~ { index => @@ -1231,7 +1365,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini conditional(size - 1 > 0, subsequent_position_codec(size - 1)) :: conditional(index == 255, bits) } - ).exmap[LinkedFields]( + ).exmap[LinkedFields]( { case 255 :: _ :: _ :: _ :: HNil => Attempt.Successful(LinkedFields(255, SquadPositionDetail.Blank, None)) @@ -1254,18 +1388,20 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param size the number of position entries to be parsed * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - private def initial_position_codec(size : Int, bitsOverByte : StreamLengthToken) : Codec[LinkedFields] = { + private def initial_position_codec(size: Int, bitsOverByte: StreamLengthToken): Codec[LinkedFields] = { import shapeless.:: ( uint8 >>:~ { index => - conditional(index < 255, { - bitsOverByte.Add(2) //1 (below) + 1 (position_codec) - bool :: position_codec(bitsOverByte.Length) - }) :: + conditional( + index < 255, { + bitsOverByte.Add(2) //1 (below) + 1 (position_codec) + bool :: position_codec(bitsOverByte.Length) + } + ) :: conditional(index < 255 && size - 1 > 0, subsequent_position_codec(size - 1)) :: conditional(index == 255, bits) } - ).exmap[LinkedFields]( + ).exmap[LinkedFields]( { case 255 :: _ :: _ :: _ :: HNil => Attempt.Successful(LinkedFields(255, SquadPositionDetail.Blank, None)) @@ -1287,14 +1423,13 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Entry point. * @param bitsOverByte a token maintaining stream misalignment for purposes of calculating string padding */ - def codec(bitsOverByte : StreamLengthToken) : Codec[Vector[SquadPositionEntry]] = { + def codec(bitsOverByte: StreamLengthToken): Codec[Vector[SquadPositionEntry]] = { import shapeless.:: - ( - uint32L >>:~ { size => - bitsOverByte.Add(4) - uint4 :: - initial_position_codec(size.toInt + 1, bitsOverByte) - }).xmap[Vector[SquadPositionEntry]] ( + (uint32L >>:~ { size => + bitsOverByte.Add(4) + uint4 :: + initial_position_codec(size.toInt + 1, bitsOverByte) + }).xmap[Vector[SquadPositionEntry]]( { case _ :: _ :: linkedMembers :: HNil => ignoreTerminatingEntry(unlinkFields(linkedMembers)).toVector @@ -1308,7 +1443,7 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * Certification values that are front-loaded into the `FullSquad` operations for finding squad position requirements. * In the game proper, these are three certification values that the user can not give up or interact with. */ - final val DefaultRequirements : Set[CertificationType.Value] = Set( + final val DefaultRequirements: Set[CertificationType.Value] = Set( CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit @@ -1330,43 +1465,64 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * gets converted to a 0-7 string padding number based on how many bits remain befoire the next byte * @return the padded string `Codec` */ - private def paddedStringMetaCodec(bitsOverByte : Int) : Codec[String] = PacketHelpers.encodedWideStringAligned({ - val mod8 = bitsOverByte % 8 - if(mod8 == 0) { - 0 - } - else { - 8 - mod8 - } - }) + private def paddedStringMetaCodec(bitsOverByte: Int): Codec[String] = + PacketHelpers.encodedWideStringAligned({ + val mod8 = bitsOverByte % 8 + if (mod8 == 0) { + 0 + } else { + 8 - mod8 + } + }) /** * Pattern for reading all of the fields for squad position data. * @param bitsOverByteLength the number of bits past the previous byte-aligned index * @param defaultRequirements `CertificationType` values that are automatically masked in the `requirements` field */ - private def basePositionCodec(bitsOverByteLength : Int, defaultRequirements : Set[CertificationType.Value]) : Codec[SquadPositionDetail] = { + private def basePositionCodec( + bitsOverByteLength: Int, + defaultRequirements: Set[CertificationType.Value] + ): Codec[SquadPositionDetail] = { import shapeless.:: ( - uint8 :: //required value = 6 + uint8 :: //required value = 6 ("is_closed" | bool) :: //if all positions are closed, the squad detail menu display no positions at all ("role" | paddedStringMetaCodec(bitsOverByteLength)) :: ("detailed_orders" | PacketHelpers.encodedWideString) :: ("char_id" | uint32L) :: ("name" | PacketHelpers.encodedWideString) :: ("requirements" | ulongL(46)) - ).exmap[SquadPositionDetail] ( + ).exmap[SquadPositionDetail]( { case 6 :: closed :: role :: orders :: char_id :: name :: requirements :: HNil => Attempt.Successful( - SquadPositionDetail(Some(closed), Some(role), Some(orders), Some(defaultRequirements ++ CertificationType.fromEncodedLong(requirements)), Some(char_id), Some(name)) + SquadPositionDetail( + Some(closed), + Some(role), + Some(orders), + Some(defaultRequirements ++ CertificationType.fromEncodedLong(requirements)), + Some(char_id), + Some(name) + ) ) case data => Attempt.Failure(Err(s"can not decode a SquadDetailDefinitionUpdate member's data - $data")) }, { - case SquadPositionDetail(Some(closed), Some(role), Some(orders), Some(requirements), Some(char_id), Some(name)) => - Attempt.Successful(6 :: closed :: role :: orders :: char_id :: name :: CertificationType.toEncodedLong(defaultRequirements ++ requirements) :: HNil) + case SquadPositionDetail( + Some(closed), + Some(role), + Some(orders), + Some(requirements), + Some(char_id), + Some(name) + ) => + Attempt.Successful( + 6 :: closed :: role :: orders :: char_id :: name :: CertificationType.toEncodedLong( + defaultRequirements ++ requirements + ) :: HNil + ) case data => Attempt.Failure(Err(s"can not encode a SquadDetailDefinitionUpdate member's data - $data")) } @@ -1379,10 +1535,10 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param list the listing of squad information * @return the listing of squad information, with a specific final entry */ - private def ensureTerminatingEntry(list : List[SquadPositionEntry]) : List[SquadPositionEntry] = { + private def ensureTerminatingEntry(list: List[SquadPositionEntry]): List[SquadPositionEntry] = { list.lastOption match { case Some(SquadPositionEntry(255, _)) => list - case Some(_) | None => list :+ SquadPositionEntry(255, None) + case Some(_) | None => list :+ SquadPositionEntry(255, None) } } @@ -1392,40 +1548,51 @@ object SquadDetailDefinitionUpdateMessage extends Marshallable[SquadDetailDefini * @param list the listing of squad information * @return the listing of squad information, with a specific final entry truncated */ - private def ignoreTerminatingEntry(list : List[SquadPositionEntry]) : List[SquadPositionEntry] = { + private def ignoreTerminatingEntry(list: List[SquadPositionEntry]): List[SquadPositionEntry] = { list.lastOption match { case Some(SquadPositionEntry(255, _)) => list.init - case Some(_) | None => list + case Some(_) | None => list } } - implicit val codec : Codec[SquadDetailDefinitionUpdateMessage] = { + implicit val codec: Codec[SquadDetailDefinitionUpdateMessage] = { import shapeless.:: import net.psforever.newcodecs.newcodecs ( ("guid" | PlanetSideGUID.codec) :: bool :: (uint8 >>:~ { size => - newcodecs.binary_choice( + newcodecs + .binary_choice( size == 9, FullSquad.codec, ItemizedSquad.codec(size) - ).hlist - }) - ).exmap[SquadDetailDefinitionUpdateMessage] ( + ) + .hlist + }) + ).exmap[SquadDetailDefinitionUpdateMessage]( { case guid :: _ :: _ :: info :: HNil => Attempt.Successful(SquadDetailDefinitionUpdateMessage(guid, info)) }, { case SquadDetailDefinitionUpdateMessage(guid, info) => - val occupiedSquadFieldCount = List(info.unk1, info.unk2, info.leader_char_id, info.unk3, info.leader_name, info.task, info.zone_id, info.unk7, info.member_info) + val occupiedSquadFieldCount = List( + info.unk1, + info.unk2, + info.leader_char_id, + info.unk3, + info.leader_name, + info.task, + info.zone_id, + info.unk7, + info.member_info + ) .count(_.nonEmpty) - if(occupiedSquadFieldCount < 9) { + if (occupiedSquadFieldCount < 9) { //itemized detail definition protocol Attempt.Successful(guid :: true :: occupiedSquadFieldCount :: info :: HNil) - } - else { + } else { //full squad detail definition protocol Attempt.Successful(guid :: true :: 9 :: info :: HNil) } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadInvitationRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/SquadInvitationRequestMessage.scala index df53984f..c6eed7cb 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadInvitationRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadInvitationRequestMessage.scala @@ -22,21 +22,18 @@ import scodec.codecs._ * frequently, though that does not produce a coherent message, * the avatar's own name is supplied in the event message instead of the name of another player */ -final case class SquadInvitationRequestMessage(squad_guid : PlanetSideGUID, - slot : Int, - char_id : Long, - name : String) - extends PlanetSideGamePacket { +final case class SquadInvitationRequestMessage(squad_guid: PlanetSideGUID, slot: Int, char_id: Long, name: String) + extends PlanetSideGamePacket { type Packet = SquadInvitationRequestMessage def opcode = GamePacketOpcode.SquadInvitationRequestMessage def encode = SquadInvitationRequestMessage.encode(this) } object SquadInvitationRequestMessage extends Marshallable[SquadInvitationRequestMessage] { - implicit val codec : Codec[SquadInvitationRequestMessage] = ( + implicit val codec: Codec[SquadInvitationRequestMessage] = ( ("squad_guid" | PlanetSideGUID.codec) :: ("slot" | uint4) :: ("char_id" | uint32L) :: ("name" | PacketHelpers.encodedWideStringAligned(adjustment = 4)) - ).as[SquadInvitationRequestMessage] + ).as[SquadInvitationRequestMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadMemberEvent.scala b/common/src/main/scala/net/psforever/packet/game/SquadMemberEvent.scala index 51b74955..8fdb83e7 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadMemberEvent.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadMemberEvent.scala @@ -9,69 +9,86 @@ import shapeless.{::, HNil} object MemberEvent extends Enumeration { type Type = Value - val - Add, - Remove, - Promote, - UpdateZone, - Unknown4 - = Value + val Add, Remove, Promote, UpdateZone, Unknown4 = Value implicit val codec = PacketHelpers.createEnumerationCodec(enum = this, uint(bits = 3)) } -final case class SquadMemberEvent(action : MemberEvent.Value, - unk2 : Int, - char_id : Long, - position : Int, - player_name : Option[String], - zone_number : Option[Int], - unk7 : Option[Long]) - extends PlanetSideGamePacket { +final case class SquadMemberEvent( + action: MemberEvent.Value, + unk2: Int, + char_id: Long, + position: Int, + player_name: Option[String], + zone_number: Option[Int], + unk7: Option[Long] +) extends PlanetSideGamePacket { type Packet = SquadMemberEvent def opcode = GamePacketOpcode.SquadMemberEvent def encode = SquadMemberEvent.encode(this) } object SquadMemberEvent extends Marshallable[SquadMemberEvent] { - def apply(action : MemberEvent.Value, unk2 : Int, char_id : Long, position : Int) : SquadMemberEvent = + def apply(action: MemberEvent.Value, unk2: Int, char_id: Long, position: Int): SquadMemberEvent = SquadMemberEvent(action, unk2, char_id, position, None, None, None) - def Add(unk2 : Int, char_id : Long, position : Int, player_name : String, zone_number : Int, unk7 : Long) : SquadMemberEvent = + def Add( + unk2: Int, + char_id: Long, + position: Int, + player_name: String, + zone_number: Int, + unk7: Long + ): SquadMemberEvent = SquadMemberEvent(MemberEvent.Add, unk2, char_id, position, Some(player_name), Some(zone_number), Some(unk7)) - def Remove(unk2 : Int, char_id : Long, position : Int) : SquadMemberEvent = + def Remove(unk2: Int, char_id: Long, position: Int): SquadMemberEvent = SquadMemberEvent(MemberEvent.Remove, unk2, char_id, position, None, None, None) - def Promote(unk2 : Int, char_id : Long) : SquadMemberEvent = + def Promote(unk2: Int, char_id: Long): SquadMemberEvent = SquadMemberEvent(MemberEvent.Promote, unk2, char_id, 0, None, None, None) - def UpdateZone(unk2 : Int, char_id : Long, position : Int, zone_number : Int) : SquadMemberEvent = + def UpdateZone(unk2: Int, char_id: Long, position: Int, zone_number: Int): SquadMemberEvent = SquadMemberEvent(MemberEvent.UpdateZone, unk2, char_id, position, None, Some(zone_number), None) - def Unknown4(unk2 : Int, char_id : Long, position : Int, unk7 : Long) : SquadMemberEvent = + def Unknown4(unk2: Int, char_id: Long, position: Int, unk7: Long): SquadMemberEvent = SquadMemberEvent(MemberEvent.Unknown4, unk2, char_id, position, None, None, Some(unk7)) - implicit val codec : Codec[SquadMemberEvent] = ( - ("action" | MemberEvent.codec) >>:~ { action => - ("unk2" | uint16L) :: - ("char_id" | uint32L) :: - ("position" | uint4) :: - conditional(action == MemberEvent.Add, "player_name" | PacketHelpers.encodedWideStringAligned(1)) :: - conditional(action == MemberEvent.Add || action == MemberEvent.UpdateZone, "zone_number" | uint16L) :: - conditional(action == MemberEvent.Add || action == MemberEvent.Unknown4, "unk7" | uint32L) - }).exmap[SquadMemberEvent] ( + implicit val codec: Codec[SquadMemberEvent] = (("action" | MemberEvent.codec) >>:~ { action => + ("unk2" | uint16L) :: + ("char_id" | uint32L) :: + ("position" | uint4) :: + conditional(action == MemberEvent.Add, "player_name" | PacketHelpers.encodedWideStringAligned(1)) :: + conditional(action == MemberEvent.Add || action == MemberEvent.UpdateZone, "zone_number" | uint16L) :: + conditional(action == MemberEvent.Add || action == MemberEvent.Unknown4, "unk7" | uint32L) + }).exmap[SquadMemberEvent]( { case action :: unk2 :: char_id :: member_position :: player_name :: zone_number :: unk7 :: HNil => Attempt.Successful(SquadMemberEvent(action, unk2, char_id, member_position, player_name, zone_number, unk7)) }, { - case SquadMemberEvent(MemberEvent.Add, unk2, char_id, member_position, Some(player_name), Some(zone_number), Some(unk7)) => - Attempt.Successful(MemberEvent.Add :: unk2 :: char_id :: member_position :: Some(player_name) :: Some(zone_number) :: Some(unk7) :: HNil) + case SquadMemberEvent( + MemberEvent.Add, + unk2, + char_id, + member_position, + Some(player_name), + Some(zone_number), + Some(unk7) + ) => + Attempt.Successful( + MemberEvent.Add :: unk2 :: char_id :: member_position :: Some(player_name) :: Some(zone_number) :: Some( + unk7 + ) :: HNil + ) case SquadMemberEvent(MemberEvent.UpdateZone, unk2, char_id, member_position, None, Some(zone_number), None) => - Attempt.Successful(MemberEvent.UpdateZone :: unk2 :: char_id :: member_position :: None :: Some(zone_number) :: None :: HNil) + Attempt.Successful( + MemberEvent.UpdateZone :: unk2 :: char_id :: member_position :: None :: Some(zone_number) :: None :: HNil + ) case SquadMemberEvent(MemberEvent.Unknown4, unk2, char_id, member_position, None, None, Some(unk7)) => - Attempt.Successful(MemberEvent.Unknown4 :: unk2 :: char_id :: member_position :: None :: None :: Some(unk7) :: HNil) + Attempt.Successful( + MemberEvent.Unknown4 :: unk2 :: char_id :: member_position :: None :: None :: Some(unk7) :: HNil + ) case SquadMemberEvent(action, unk2, char_id, member_position, None, None, None) => Attempt.Successful(action :: unk2 :: char_id :: member_position :: None :: None :: None :: HNil) case data => diff --git a/common/src/main/scala/net/psforever/packet/game/SquadMembershipRequest.scala b/common/src/main/scala/net/psforever/packet/game/SquadMembershipRequest.scala index c5bd3550..1db69511 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadMembershipRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadMembershipRequest.scala @@ -16,20 +16,21 @@ import scodec.codecs._ * @param player_name name of the player being affected, if applicable * @param unk5 na */ -final case class SquadMembershipRequest(request_type : SquadRequestType.Value, - char_id : Long, - unk3 : Option[Long], - player_name : String, - unk5 : Option[Option[String]]) - extends PlanetSideGamePacket { +final case class SquadMembershipRequest( + request_type: SquadRequestType.Value, + char_id: Long, + unk3: Option[Long], + player_name: String, + unk5: Option[Option[String]] +) extends PlanetSideGamePacket { request_type match { - case SquadRequestType.Accept | SquadRequestType.Reject | SquadRequestType.Disband | - SquadRequestType.PlatoonAccept | SquadRequestType.PlatoonReject | SquadRequestType.PlatoonDisband => + case SquadRequestType.Accept | SquadRequestType.Reject | SquadRequestType.Disband | SquadRequestType.PlatoonAccept | + SquadRequestType.PlatoonReject | SquadRequestType.PlatoonDisband => assert(unk3.isEmpty, s"a $request_type request requires the unk3 field be undefined") case _ => assert(unk3.nonEmpty, s"a $request_type request requires the unk3 field be defined") } - if(request_type == SquadRequestType.Invite) { + if (request_type == SquadRequestType.Invite) { assert(unk5.nonEmpty, "an Invite request requires the unk5 field be defined") } @@ -39,19 +40,22 @@ final case class SquadMembershipRequest(request_type : SquadRequestType.Value, } object SquadMembershipRequest extends Marshallable[SquadMembershipRequest] { - implicit val codec : Codec[SquadMembershipRequest] = ( - ("request_type" | SquadRequestType.codec) >>:~ { request_type => - ("unk2" | uint32L) :: - conditional(request_type != SquadRequestType.Accept && + implicit val codec: Codec[SquadMembershipRequest] = (("request_type" | SquadRequestType.codec) >>:~ { request_type => + ("unk2" | uint32L) :: + conditional( + request_type != SquadRequestType.Accept && request_type != SquadRequestType.Reject && request_type != SquadRequestType.Disband && request_type != SquadRequestType.PlatoonAccept && request_type != SquadRequestType.PlatoonReject && - request_type != SquadRequestType.PlatoonDisband, "unk3" | uint32L) :: - (("player_name" | PacketHelpers.encodedWideStringAligned(4)) >>:~ { pname => - conditional(request_type == SquadRequestType.Invite, - "unk5" | optional(bool, PacketHelpers.encodedWideStringAligned({if(pname.length == 0) 3 else 7})) - ).hlist - }) - }).as[SquadMembershipRequest] + request_type != SquadRequestType.PlatoonDisband, + "unk3" | uint32L + ) :: + (("player_name" | PacketHelpers.encodedWideStringAligned(4)) >>:~ { pname => + conditional( + request_type == SquadRequestType.Invite, + "unk5" | optional(bool, PacketHelpers.encodedWideStringAligned({ if (pname.length == 0) 3 else 7 })) + ).hlist + }) + }).as[SquadMembershipRequest] } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadMembershipResponse.scala b/common/src/main/scala/net/psforever/packet/game/SquadMembershipResponse.scala index a9f03518..96224fd0 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadMembershipResponse.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadMembershipResponse.scala @@ -67,22 +67,23 @@ import scodec.codecs._ * false => "The platoon has been disbanded."
* true => "You have disbanded the platoon." */ -final case class SquadMembershipResponse(request_type : SquadResponseType.Value, - unk1 : Int, - unk2 : Int, - char_id : Long, - other_id : Option[Long], - player_name : String, - unk5 : Boolean, - unk6 : Option[Option[String]]) - extends PlanetSideGamePacket { +final case class SquadMembershipResponse( + request_type: SquadResponseType.Value, + unk1: Int, + unk2: Int, + char_id: Long, + other_id: Option[Long], + player_name: String, + unk5: Boolean, + unk6: Option[Option[String]] +) extends PlanetSideGamePacket { type Packet = SquadMembershipResponse def opcode = GamePacketOpcode.SquadMembershipResponse def encode = SquadMembershipResponse.encode(this) } object SquadMembershipResponse extends Marshallable[SquadMembershipResponse] { - implicit val codec : Codec[SquadMembershipResponse] = ( + implicit val codec: Codec[SquadMembershipResponse] = ( "request_type" | SquadResponseType.codec >>:~ { d => ("unk1" | uint(5)) :: ("unk2" | uint2) :: @@ -92,5 +93,5 @@ object SquadMembershipResponse extends Marshallable[SquadMembershipResponse] { ("unk5" | bool) :: conditional(d != SquadResponseType.Invite, optional(bool, "unk6" | PacketHelpers.encodedWideStringAligned(6))) } - ).as[SquadMembershipResponse] + ).as[SquadMembershipResponse] } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadState.scala b/common/src/main/scala/net/psforever/packet/game/SquadState.scala index 3ca30feb..bd8a4cf4 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadState.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadState.scala @@ -25,16 +25,18 @@ import shapeless.{::, HNil} * @param unk9 na; * if defined, will be defined with unk8 */ -final case class SquadStateInfo(char_id : Long, - health : Int, - armor : Int, - pos : Vector3, - unk4 : Int, - unk5 : Int, - unk6 : Boolean, - unk7 : Int, - unk8 : Option[Int], - unk9 : Option[Boolean]) +final case class SquadStateInfo( + char_id: Long, + health: Int, + armor: Int, + pos: Vector3, + unk4: Int, + unk5: Int, + unk6: Boolean, + unk7: Int, + unk8: Option[Int], + unk9: Option[Boolean] +) /** * Dispatched by the server to update a squad member's representative icons on the continental maps and the interstellar map.
@@ -49,24 +51,34 @@ final case class SquadStateInfo(char_id : Long, * does not have to be the global uid of the squad as according to the server * @param info_list information about the members in this squad who will be updated */ -final case class SquadState(guid : PlanetSideGUID, - info_list : List[SquadStateInfo]) - extends PlanetSideGamePacket { +final case class SquadState(guid: PlanetSideGUID, info_list: List[SquadStateInfo]) extends PlanetSideGamePacket { type Packet = SquadState def opcode = GamePacketOpcode.SquadState def encode = SquadState.encode(this) } object SquadStateInfo { - def apply(unk1 : Long, unk2 : Int, unk3 : Int, pos : Vector3, unk4 : Int, unk5 : Int, unk6 : Boolean, unk7 : Int) : SquadStateInfo = + def apply(unk1: Long, unk2: Int, unk3: Int, pos: Vector3, unk4: Int, unk5: Int, unk6: Boolean, unk7: Int) + : SquadStateInfo = SquadStateInfo(unk1, unk2, unk3, pos, unk4, unk5, unk6, unk7, None, None) - def apply(unk1 : Long, unk2 : Int, unk3 : Int, pos : Vector3, unk4 : Int, unk5 : Int, unk6 : Boolean, unk7 : Int, unk8 : Int, unk9 : Boolean) : SquadStateInfo = + def apply( + unk1: Long, + unk2: Int, + unk3: Int, + pos: Vector3, + unk4: Int, + unk5: Int, + unk6: Boolean, + unk7: Int, + unk8: Int, + unk9: Boolean + ): SquadStateInfo = SquadStateInfo(unk1, unk2, unk3, pos, unk4, unk5, unk6, unk7, Some(unk8), Some(unk9)) } object SquadState extends Marshallable[SquadState] { - private val info_codec : Codec[SquadStateInfo] = ( + private val info_codec: Codec[SquadStateInfo] = ( ("char_id" | uint32L) :: ("health" | uint(7)) :: ("armor" | uint(7)) :: @@ -76,26 +88,31 @@ object SquadState extends Marshallable[SquadState] { ("unk6" | bool) :: ("unk7" | uint16L) :: (bool >>:~ { out => - conditional(out, "unk8" | uint16L) :: - conditional(out, "unk9" | bool) - }) - ).exmap[SquadStateInfo] ( + conditional(out, "unk8" | uint16L) :: + conditional(out, "unk9" | bool) + }) + ).exmap[SquadStateInfo]( { case char_id :: health :: armor :: pos :: u4 :: u5 :: u6 :: u7 :: _ :: u8 :: u9 :: HNil => Attempt.Successful(SquadStateInfo(char_id, health, armor, pos, u4, u5, u6, u7, u8, u9)) }, { case SquadStateInfo(char_id, health, armor, pos, u4, u5, u6, u7, Some(u8), Some(u9)) => - Attempt.Successful(char_id :: health :: armor :: pos :: u4 :: u5 :: u6 :: u7 :: true :: Some(u8) :: Some(u9) :: HNil) + Attempt.Successful( + char_id :: health :: armor :: pos :: u4 :: u5 :: u6 :: u7 :: true :: Some(u8) :: Some(u9) :: HNil + ) case SquadStateInfo(char_id, health, armor, pos, u4, u5, u6, u7, None, None) => Attempt.Successful(char_id :: health :: armor :: pos :: u4 :: u5 :: u6 :: u7 :: false :: None :: None :: HNil) - case data @ (SquadStateInfo(_, _, _, _, _, _, _, _, Some(_), None) | SquadStateInfo(_, _, _, _, _, _, _, _, None, Some(_))) => - Attempt.Failure(Err(s"SquadStateInfo requires both unk8 and unk9 to be either defined or undefined at the same time - $data")) + case data @ (SquadStateInfo(_, _, _, _, _, _, _, _, Some(_), None) | + SquadStateInfo(_, _, _, _, _, _, _, _, None, Some(_))) => + Attempt.Failure( + Err(s"SquadStateInfo requires both unk8 and unk9 to be either defined or undefined at the same time - $data") + ) } ) - implicit val codec : Codec[SquadState] = ( + implicit val codec: Codec[SquadState] = ( ("guid" | PlanetSideGUID.codec) :: ("info_list" | listOfN(uint4, info_codec)) - ).as[SquadState] + ).as[SquadState] } diff --git a/common/src/main/scala/net/psforever/packet/game/SquadWaypointEvent.scala b/common/src/main/scala/net/psforever/packet/game/SquadWaypointEvent.scala index ff466782..d30bd7d6 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadWaypointEvent.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadWaypointEvent.scala @@ -7,47 +7,46 @@ import scodec.{Attempt, Codec, Err} import scodec.codecs._ import shapeless.{::, HNil} -final case class WaypointEvent(zone_number : Int, - pos : Vector3, - unk : Int) +final case class WaypointEvent(zone_number: Int, pos: Vector3, unk: Int) -final case class SquadWaypointEvent(event_type : WaypointEventAction.Value, - unk : Int, - char_id : Long, - waypoint_type : SquadWaypoints.Value, - unk5 : Option[Long], - waypoint_info : Option[WaypointEvent]) - extends PlanetSideGamePacket { +final case class SquadWaypointEvent( + event_type: WaypointEventAction.Value, + unk: Int, + char_id: Long, + waypoint_type: SquadWaypoints.Value, + unk5: Option[Long], + waypoint_info: Option[WaypointEvent] +) extends PlanetSideGamePacket { type Packet = SquadWaypointEvent def opcode = GamePacketOpcode.SquadWaypointEvent def encode = SquadWaypointEvent.encode(this) } object SquadWaypointEvent extends Marshallable[SquadWaypointEvent] { - def Add(unk : Int, char_id : Long, waypoint_type : SquadWaypoints.Value, waypoint : WaypointEvent) : SquadWaypointEvent = + def Add(unk: Int, char_id: Long, waypoint_type: SquadWaypoints.Value, waypoint: WaypointEvent): SquadWaypointEvent = SquadWaypointEvent(WaypointEventAction.Add, unk, char_id, waypoint_type, None, Some(waypoint)) - def Unknown1(unk : Int, char_id : Long, waypoint_type : SquadWaypoints.Value, unk_a : Long) : SquadWaypointEvent = + def Unknown1(unk: Int, char_id: Long, waypoint_type: SquadWaypoints.Value, unk_a: Long): SquadWaypointEvent = SquadWaypointEvent(WaypointEventAction.Unknown1, unk, char_id, waypoint_type, Some(unk_a), None) - def Remove(unk : Int, char_id : Long, waypoint_type : SquadWaypoints.Value) : SquadWaypointEvent = + def Remove(unk: Int, char_id: Long, waypoint_type: SquadWaypoints.Value): SquadWaypointEvent = SquadWaypointEvent(WaypointEventAction.Remove, unk, char_id, waypoint_type, None, None) - private val waypoint_codec : Codec[WaypointEvent] = ( + private val waypoint_codec: Codec[WaypointEvent] = ( ("zone_number" | uint16L) :: ("pos" | Vector3.codec_pos) :: ("unk" | uint(3)) - ).as[WaypointEvent] + ).as[WaypointEvent] - implicit val codec : Codec[SquadWaypointEvent] = ( + implicit val codec: Codec[SquadWaypointEvent] = ( ("event_type" | WaypointEventAction.codec) >>:~ { event_type => ("unk" | uint16L) :: - ("char_id" | uint32L) :: + ("char_id" | uint32L) :: ("waypoint_type" | SquadWaypoints.codec) :: ("unk5" | conditional(event_type == WaypointEventAction.Unknown1, uint32L)) :: ("waypoint_info" | conditional(event_type == WaypointEventAction.Add, waypoint_codec)) } - ).exmap[SquadWaypointEvent] ( + ).exmap[SquadWaypointEvent]( { case WaypointEventAction.Add :: a :: char_id :: waypoint_type :: None :: Some(waypoint) :: HNil => Attempt.Successful(SquadWaypointEvent(WaypointEventAction.Add, a, char_id, waypoint_type, None, Some(waypoint))) diff --git a/common/src/main/scala/net/psforever/packet/game/SquadWaypointRequest.scala b/common/src/main/scala/net/psforever/packet/game/SquadWaypointRequest.scala index 3384f8b5..2f42068a 100644 --- a/common/src/main/scala/net/psforever/packet/game/SquadWaypointRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/SquadWaypointRequest.scala @@ -13,14 +13,10 @@ import shapeless.{::, HNil} object WaypointEventAction extends Enumeration { type Type = Value - val - Add, - Unknown1, - Remove, - Unknown3 //unconfirmed + val Add, Unknown1, Remove, Unknown3 //unconfirmed = Value - implicit val codec : Codec[WaypointEventAction.Value] = PacketHelpers.createEnumerationCodec(enum = this, uint2) + implicit val codec: Codec[WaypointEventAction.Value] = PacketHelpers.createEnumerationCodec(enum = this, uint2) } /** @@ -29,8 +25,7 @@ object WaypointEventAction extends Enumeration { * @param pos the continental map coordinate location of the waypoint; * the z-coordinate is almost always 0.0 */ -final case class WaypointInfo(zone_number : Int, - pos : Vector3) +final case class WaypointInfo(zone_number: Int, pos: Vector3) /** * na @@ -44,31 +39,32 @@ final case class WaypointInfo(zone_number : Int, * @param unk4 na * @param waypoint_info essential data about the waypoint */ -final case class SquadWaypointRequest(request_type : WaypointEventAction.Value, - char_id : Long, - waypoint_type : SquadWaypoints.Value, - unk4 : Option[Long], - waypoint_info : Option[WaypointInfo]) - extends PlanetSideGamePacket { +final case class SquadWaypointRequest( + request_type: WaypointEventAction.Value, + char_id: Long, + waypoint_type: SquadWaypoints.Value, + unk4: Option[Long], + waypoint_info: Option[WaypointInfo] +) extends PlanetSideGamePacket { type Packet = SquadWaypointRequest def opcode = GamePacketOpcode.SquadWaypointRequest def encode = SquadWaypointRequest.encode(this) } object SquadWaypointRequest extends Marshallable[SquadWaypointRequest] { - def Add(char_id : Long, waypoint_type : SquadWaypoints.Value, waypoint : WaypointInfo) : SquadWaypointRequest = + def Add(char_id: Long, waypoint_type: SquadWaypoints.Value, waypoint: WaypointInfo): SquadWaypointRequest = SquadWaypointRequest(WaypointEventAction.Add, char_id, waypoint_type, None, Some(waypoint)) - def Unknown1(char_id : Long, waypoint_type : SquadWaypoints.Value, unk_a : Long) : SquadWaypointRequest = + def Unknown1(char_id: Long, waypoint_type: SquadWaypoints.Value, unk_a: Long): SquadWaypointRequest = SquadWaypointRequest(WaypointEventAction.Unknown1, char_id, waypoint_type, Some(unk_a), None) - def Remove(char_id : Long, waypoint_type : SquadWaypoints.Value) : SquadWaypointRequest = + def Remove(char_id: Long, waypoint_type: SquadWaypoints.Value): SquadWaypointRequest = SquadWaypointRequest(WaypointEventAction.Remove, char_id, waypoint_type, None, None) - private val waypoint_codec : Codec[WaypointInfo] = ( + private val waypoint_codec: Codec[WaypointInfo] = ( ("zone_number" | uint16L) :: ("pos" | Vector3.codec_pos) - ).xmap[WaypointInfo] ( + ).xmap[WaypointInfo]( { case zone_number :: pos :: HNil => WaypointInfo(zone_number, pos) }, @@ -77,14 +73,14 @@ object SquadWaypointRequest extends Marshallable[SquadWaypointRequest] { } ) - implicit val codec : Codec[SquadWaypointRequest] = ( + implicit val codec: Codec[SquadWaypointRequest] = ( ("request_type" | WaypointEventAction.codec) >>:~ { request_type => ("char_id" | uint32L) :: ("waypoint_type" | SquadWaypoints.codec) :: ("unk4" | conditional(request_type == WaypointEventAction.Unknown1, uint32L)) :: ("waypoint" | conditional(request_type == WaypointEventAction.Add, waypoint_codec)) } - ).exmap[SquadWaypointRequest] ( + ).exmap[SquadWaypointRequest]( { case WaypointEventAction.Add :: char_id :: waypoint_type :: None :: Some(waypoint) :: HNil => Attempt.Successful(SquadWaypointRequest(WaypointEventAction.Add, char_id, waypoint_type, None, Some(waypoint))) @@ -108,7 +104,7 @@ object SquadWaypointRequest extends Marshallable[SquadWaypointRequest] { case SquadWaypointRequest(request_type, char_id, waypoint_type, None, None) => Attempt.Successful(request_type :: char_id :: waypoint_type :: None :: None :: HNil) - case data : SquadWaypointRequest => + case data: SquadWaypointRequest => Attempt.Failure(Err(s"unexpected format while encoding - $data")) } ) diff --git a/common/src/main/scala/net/psforever/packet/game/TargetingImplantRequest.scala b/common/src/main/scala/net/psforever/packet/game/TargetingImplantRequest.scala index f33b91ec..8f85d189 100644 --- a/common/src/main/scala/net/psforever/packet/game/TargetingImplantRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/TargetingImplantRequest.scala @@ -11,8 +11,7 @@ import scodec.codecs._ * @param target_guid the target * @param unk na */ -final case class TargetRequest(target_guid : PlanetSideGUID, - unk : Boolean) +final case class TargetRequest(target_guid: PlanetSideGUID, unk: Boolean) /** * Dispatched by the client when the advanced targeting implant activates to collect status information from the server.
@@ -20,18 +19,18 @@ final case class TargetRequest(target_guid : PlanetSideGUID, * This packet is answered by a `TargetingInfoMessage` with `List` entries of thed corresponding UIDs. * @param target_list a `List` of targets */ -final case class TargetingImplantRequest(target_list : List[TargetRequest]) - extends PlanetSideGamePacket { +final case class TargetingImplantRequest(target_list: List[TargetRequest]) extends PlanetSideGamePacket { type Packet = TargetingImplantRequest def opcode = GamePacketOpcode.TargetingImplantRequest def encode = TargetingImplantRequest.encode(this) } object TargetingImplantRequest extends Marshallable[TargetingImplantRequest] { - private val request_codec : Codec[TargetRequest] = ( + private val request_codec: Codec[TargetRequest] = ( ("target_guid" | PlanetSideGUID.codec) :: ("unk" | bool) ).as[TargetRequest] - implicit val codec : Codec[TargetingImplantRequest] = ("target_list" | listOfN(intL(6), request_codec)).as[TargetingImplantRequest] + implicit val codec: Codec[TargetingImplantRequest] = + ("target_list" | listOfN(intL(6), request_codec)).as[TargetingImplantRequest] } diff --git a/common/src/main/scala/net/psforever/packet/game/TargetingInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/TargetingInfoMessage.scala index 9816587c..b21249f6 100644 --- a/common/src/main/scala/net/psforever/packet/game/TargetingInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TargetingInfoMessage.scala @@ -14,9 +14,7 @@ import shapeless.{::, HNil} * @param armor the amount of armor the target has, as a percentage of a filled bar scaled between 0f and 1f inclusive; * defaults to 0f */ -final case class TargetInfo(target_guid : PlanetSideGUID, - health : Float, - armor : Float = 0f) +final case class TargetInfo(target_guid: PlanetSideGUID, health: Float, armor: Float = 0f) /** * Dispatched by the server to update status information regarding the listed targets.
@@ -34,14 +32,14 @@ final case class TargetInfo(target_guid : PlanetSideGUID, * The target will be killed or destroyed as expected when health is set to zero. * @param target_list a list of targets */ -final case class TargetingInfoMessage(target_list : List[TargetInfo]) - extends PlanetSideGamePacket { +final case class TargetingInfoMessage(target_list: List[TargetInfo]) extends PlanetSideGamePacket { type Packet = TargetingInfoMessage def opcode = GamePacketOpcode.TargetingInfoMessage def encode = TargetingInfoMessage.encode(this) } object TargetInfo { + /** * Overloaded constructor that takes `Integer` values rather than `Float` values. * @param target_guid the target @@ -49,9 +47,9 @@ object TargetInfo { * @param armor the amount of armor the target has * @return a `TargetInfo` object */ - def apply(target_guid : PlanetSideGUID, health : Int, armor : Int) : TargetInfo = { - val health2 : Float = TargetingInfoMessage.rangedFloat(health) - val armor2 : Float = TargetingInfoMessage.rangedFloat(armor) + def apply(target_guid: PlanetSideGUID, health: Int, armor: Int): TargetInfo = { + val health2: Float = TargetingInfoMessage.rangedFloat(health) + val armor2: Float = TargetingInfoMessage.rangedFloat(armor) TargetInfo(target_guid, health2, armor2) } @@ -61,70 +59,68 @@ object TargetInfo { * @param health the amount of health the target has * @return a `TargetInfo` object */ - def apply(target_guid : PlanetSideGUID, health : Int) : TargetInfo = { - val health2 : Float = TargetingInfoMessage.rangedFloat(health) + def apply(target_guid: PlanetSideGUID, health: Int): TargetInfo = { + val health2: Float = TargetingInfoMessage.rangedFloat(health) TargetInfo(target_guid, health2) } } object TargetingInfoMessage extends Marshallable[TargetingInfoMessage] { - private final val unit : Double = 0.0039215689 //common constant for 1/255 + private final val unit: Double = 0.0039215689 //common constant for 1/255 /** * Transform an unsigned `Integer` number into a scaled `Float`. * @param n an unsigned `Integer` number inclusive 0 and below 256 * @return a scaled `Float` number inclusive to 0f to 1f */ - def rangedFloat(n : Int) : Float = { + def rangedFloat(n: Int): Float = { ( - (if(n <= 0) { - 0 - } - else if(n >= 255) { - 255 - } - else { - n - }).toDouble * unit - ).toFloat + (if (n <= 0) { + 0 + } else if (n >= 255) { + 255 + } else { + n + }).toDouble * unit + ).toFloat } + /** * Transform a scaled `Float` number into an unsigned `Integer`. * @param n `Float` number inclusive to 0f to 1f * @return a scaled unsigned `Integer` number inclusive 0 and below 256 */ - def rangedInt(n : Float) : Int = { + def rangedInt(n: Float): Int = { ( - (if(n <= 0f) { - 0f - } - else if(n >= 1.0f) { - 1.0f - } - else { - n - }).toDouble * 255 + (if (n <= 0f) { + 0f + } else if (n >= 1.0f) { + 1.0f + } else { + n + }).toDouble * 255 ).toInt } - private val info_codec : Codec[TargetInfo] = ( + private val info_codec: Codec[TargetInfo] = ( ("target_guid" | PlanetSideGUID.codec) :: ("unk1" | uint8L) :: ("unk2" | uint8L) - ).xmap[TargetInfo] ( + ).xmap[TargetInfo]( { case a :: b :: c :: HNil => - val b2 : Float = rangedFloat(b) - val c2 : Float = rangedFloat(c) + val b2: Float = rangedFloat(b) + val c2: Float = rangedFloat(c) TargetInfo(a, b2, c2) }, { case TargetInfo(a, b, c) => - val b2 : Int = rangedInt(b) - val c2 : Int = rangedInt(c) + val b2: Int = rangedInt(b) + val c2: Int = rangedInt(c) a :: b2 :: c2 :: HNil } ) - implicit val codec : Codec[TargetingInfoMessage] = ("target_list" | listOfN(uint8L, info_codec)).as[TargetingInfoMessage] + implicit val codec: Codec[TargetingInfoMessage] = + ("target_list" | listOfN(uint8L, info_codec)).as[TargetingInfoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/TimeOfDayMessage.scala b/common/src/main/scala/net/psforever/packet/game/TimeOfDayMessage.scala index 53c03d21..7397c6aa 100644 --- a/common/src/main/scala/net/psforever/packet/game/TimeOfDayMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TimeOfDayMessage.scala @@ -31,19 +31,17 @@ import scodec.codecs._ * @param time Auraxis time * @param unk consistently 1092616192; does nothing? */ -final case class TimeOfDayMessage(time : Long, - unk : Long = 1092616192L) - extends PlanetSideGamePacket { +final case class TimeOfDayMessage(time: Long, unk: Long = 1092616192L) extends PlanetSideGamePacket { type Packet = TimeOfDayMessage def opcode = GamePacketOpcode.TimeOfDayMessage def encode = TimeOfDayMessage.encode(this) } object TimeOfDayMessage extends Marshallable[TimeOfDayMessage] { - implicit val codec : Codec[TimeOfDayMessage] = ( - ("time" | uint32L) :: + implicit val codec: Codec[TimeOfDayMessage] = ( + ("time" | uint32L) :: ("unk" | uint32L) - ).as[TimeOfDayMessage] + ).as[TimeOfDayMessage] } /* @@ -132,4 +130,4 @@ Time Testing Conducted in VS Sanctuary 48 00 00 E0 47 00 00 20 41 //07:51 (+02:16) 48 00 00 F0 47 00 00 20 41 //10:08 (+02:17) 48 00 00 00 48 00 00 20 41 //12:24 (+02:16) -*/ + */ diff --git a/common/src/main/scala/net/psforever/packet/game/TrainingZoneMessage.scala b/common/src/main/scala/net/psforever/packet/game/TrainingZoneMessage.scala index 2ff975e4..8397ab00 100644 --- a/common/src/main/scala/net/psforever/packet/game/TrainingZoneMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TrainingZoneMessage.scala @@ -30,17 +30,15 @@ import scodec.codecs._ * @param zone the virtual reality zone to send the player * @param unk na; always 0? */ -final case class TrainingZoneMessage(zone : PlanetSideGUID, - unk : Int = 0) - extends PlanetSideGamePacket { +final case class TrainingZoneMessage(zone: PlanetSideGUID, unk: Int = 0) extends PlanetSideGamePacket { type Packet = TrainingZoneMessage def opcode = GamePacketOpcode.TrainingZoneMessage def encode = TrainingZoneMessage.encode(this) } object TrainingZoneMessage extends Marshallable[TrainingZoneMessage] { - implicit val codec : Codec[TrainingZoneMessage] = ( + implicit val codec: Codec[TrainingZoneMessage] = ( ("zone" | PlanetSideGUID.codec) :: ("unk" | uint16L) - ).as[TrainingZoneMessage] + ).as[TrainingZoneMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/TriggerEffectMessage.scala b/common/src/main/scala/net/psforever/packet/game/TriggerEffectMessage.scala index 058018d7..c764d801 100644 --- a/common/src/main/scala/net/psforever/packet/game/TriggerEffectMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TriggerEffectMessage.scala @@ -13,8 +13,7 @@ import shapeless.{::, HNil} * `true` to apply the effect usually * @param unk2 na */ -final case class TriggeredEffect(unk1 : Boolean, - unk2 : Long) +final case class TriggeredEffect(unk1: Boolean, unk2: Long) /** * Activate an effect that is not directly associated with an existing game object. @@ -23,8 +22,7 @@ final case class TriggeredEffect(unk1 : Boolean, * @param orient the angle of orientation */ //TODO must find proper North-corrective angle for orientation -final case class TriggeredEffectLocation(pos : Vector3, - orient : Vector3) +final case class TriggeredEffectLocation(pos: Vector3, orient: Vector3) /** * Dispatched by the server to cause a client to display a special graphical effect.
@@ -43,30 +41,31 @@ final case class TriggeredEffectLocation(pos : Vector3, * @param location an optional position where the effect will be displayed; * when activating an effect independently */ -final case class TriggerEffectMessage(object_guid : PlanetSideGUID, - effect : String, - unk : Option[TriggeredEffect] = None, - location : Option[TriggeredEffectLocation] = None - ) extends PlanetSideGamePacket { +final case class TriggerEffectMessage( + object_guid: PlanetSideGUID, + effect: String, + unk: Option[TriggeredEffect] = None, + location: Option[TriggeredEffectLocation] = None +) extends PlanetSideGamePacket { type Packet = TriggerEffectMessage def opcode = GamePacketOpcode.TriggerEffectMessage def encode = TriggerEffectMessage.encode(this) } object TriggerEffectMessage extends Marshallable[TriggerEffectMessage] { - def apply(object_guid : PlanetSideGUID, effect : String) : TriggerEffectMessage = + def apply(object_guid: PlanetSideGUID, effect: String): TriggerEffectMessage = TriggerEffectMessage(object_guid, effect, None, None) - def apply(object_guid : PlanetSideGUID, effect : String, unk1 : Boolean, unk2 : Long) : TriggerEffectMessage = + def apply(object_guid: PlanetSideGUID, effect: String, unk1: Boolean, unk2: Long): TriggerEffectMessage = TriggerEffectMessage(object_guid, effect, Some(TriggeredEffect(unk1, unk2)), None) - def apply(effect : String, position : Vector3, orientation : Vector3) : TriggerEffectMessage = + def apply(effect: String, position: Vector3, orientation: Vector3): TriggerEffectMessage = TriggerEffectMessage(PlanetSideGUID(0), effect, None, Some(TriggeredEffectLocation(position, orientation))) /** * A `Codec` for `TriggeredEffect` data. */ - private val effect_codec : Codec[TriggeredEffect] = ( + private val effect_codec: Codec[TriggeredEffect] = ( ("unk1" | bool) :: ("unk2" | uint32L) ).as[TriggeredEffect] @@ -74,11 +73,11 @@ object TriggerEffectMessage extends Marshallable[TriggerEffectMessage] { /** * A `Codec` for `TriggeredEffectLocation` data. */ - private val effect_location_codec : Codec[TriggeredEffectLocation] = ( + private val effect_location_codec: Codec[TriggeredEffectLocation] = ( ("pos" | Vector3.codec_pos) :: (("roll" | Angular.codec_roll) :: - ("pitch" | Angular.codec_pitch) :: - ("yaw" | Angular.codec_yaw())).xmap[Vector3] ( + ("pitch" | Angular.codec_pitch) :: + ("yaw" | Angular.codec_yaw())).xmap[Vector3]( { case x :: y :: z :: HNil => Vector3(x, y, z) @@ -90,10 +89,9 @@ object TriggerEffectMessage extends Marshallable[TriggerEffectMessage] { ) ).as[TriggeredEffectLocation] - implicit val codec : Codec[TriggerEffectMessage] = ( - ("object_guid" | PlanetSideGUID.codec) >>:~ { guid => - ("effect" | PacketHelpers.encodedString) :: + implicit val codec: Codec[TriggerEffectMessage] = (("object_guid" | PlanetSideGUID.codec) >>:~ { guid => + ("effect" | PacketHelpers.encodedString) :: optional(bool, "unk" | effect_codec) :: conditional(guid.guid == 0, "location" | effect_location_codec) - }).as[TriggerEffectMessage] + }).as[TriggerEffectMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/TriggerEnvironmentalDamageMessage.scala b/common/src/main/scala/net/psforever/packet/game/TriggerEnvironmentalDamageMessage.scala index 594fca51..e89507b5 100644 --- a/common/src/main/scala/net/psforever/packet/game/TriggerEnvironmentalDamageMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TriggerEnvironmentalDamageMessage.scala @@ -21,26 +21,24 @@ import scodec.codecs._ * usually 5L */ - /* +/* BETA CLIENT DEBUG INFO: Message type: %d (%s)\n length: %d\n Environment Type: %u (%s)\n Guid: %d\n Damage Amount: %u\n - */ -final case class TriggerEnvironmentalDamageMessage(unk1 : Int, - target_guid : PlanetSideGUID, - unk2 : Long) - extends PlanetSideGamePacket { + */ +final case class TriggerEnvironmentalDamageMessage(unk1: Int, target_guid: PlanetSideGUID, unk2: Long) + extends PlanetSideGamePacket { type Packet = TriggerEnvironmentalDamageMessage def opcode = GamePacketOpcode.TriggerEnvironmentalDamageMessage def encode = TriggerEnvironmentalDamageMessage.encode(this) } object TriggerEnvironmentalDamageMessage extends Marshallable[TriggerEnvironmentalDamageMessage] { - implicit val codec : Codec[TriggerEnvironmentalDamageMessage] = ( + implicit val codec: Codec[TriggerEnvironmentalDamageMessage] = ( ("unk1" | uint2L) :: ("target_guid" | PlanetSideGUID.codec) :: ("unk2" | uint32L) - ).as[TriggerEnvironmentalDamageMessage] + ).as[TriggerEnvironmentalDamageMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/TriggerSoundMessage.scala b/common/src/main/scala/net/psforever/packet/game/TriggerSoundMessage.scala index ba142d37..55565ab3 100644 --- a/common/src/main/scala/net/psforever/packet/game/TriggerSoundMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/TriggerSoundMessage.scala @@ -14,27 +14,26 @@ import shapeless.{::, HNil} object TriggeredSound extends Enumeration { type Type = Value - val - SpawnInTube, // 3dsounds - respawn_use - HackTerminal, // 3dsounds - equipment_rek_successful - HackVehicle, // 3dsounds - equipment_jack_successful - HackDoor, // 3dsounds - facility_door_hacked - TREKSuccessful, // patch5 - t_Rek_Successful (Note this file has the wrong bitrate set in the wav headers. It should be 44100 not 22050. Audio will sound HORRIBLE if you try to play it without fixing the headers) - LockedOut, // 3dsounds - facility_door_locked_feedback - EMPPhase, // patch1 - emp_phase - LLUMaterialize, // patch1 - LLU_Materialize - LLUDeconstruct, // patch1 - LLU_Deconstruct - LLUInstall, // patch1 - LLU_Install - LLUPickup, // patch1 - LLU_Pickup2 - LLUDrop, // patch1 - LLU_Drop + val SpawnInTube, // 3dsounds - respawn_use + HackTerminal, // 3dsounds - equipment_rek_successful + HackVehicle, // 3dsounds - equipment_jack_successful + HackDoor, // 3dsounds - facility_door_hacked + TREKSuccessful, // patch5 - t_Rek_Successful (Note this file has the wrong bitrate set in the wav headers. It should be 44100 not 22050. Audio will sound HORRIBLE if you try to play it without fixing the headers) + LockedOut, // 3dsounds - facility_door_locked_feedback + EMPPhase, // patch1 - emp_phase + LLUMaterialize, // patch1 - LLU_Materialize + LLUDeconstruct, // patch1 - LLU_Deconstruct + LLUInstall, // patch1 - LLU_Install + LLUPickup, // patch1 - LLU_Pickup2 + LLUDrop, // patch1 - LLU_Drop ModuleStabilized, // patch2 - module_stabilized2 - ModulePickup, // patch2 - module_pickup - ModuleDrop, // patch2 - module_drop - ModuleAlarmBeep, // patch2 - module_alarm_beep + ModulePickup, // patch2 - module_pickup + ModuleDrop, // patch2 - module_drop + ModuleAlarmBeep, // patch2 - module_alarm_beep ModuleExpiration, // patch2 - module_Expiration - StasisDissipate, // patch2 - statsis_dissipate - StasisPickup, // patch2 - stasis_pickup - StasisEquip, // patch2 - stasis_equip + StasisDissipate, // patch2 - statsis_dissipate + StasisPickup, // patch2 - stasis_pickup + StasisEquip, // patch2 - stasis_equip ModuleFFIntercept // patch2 - module_ff_intercept = Value @@ -49,30 +48,27 @@ object TriggeredSound extends Enumeration { * may be radius * @param volume the volume of the sound at the origin (0.0f - 1.0f) */ -final case class TriggerSoundMessage(sound : TriggeredSound.Value, - pos : Vector3, - unk : Int, - volume : Float) - extends PlanetSideGamePacket { +final case class TriggerSoundMessage(sound: TriggeredSound.Value, pos: Vector3, unk: Int, volume: Float) + extends PlanetSideGamePacket { type Packet = TriggerSoundMessage def opcode = GamePacketOpcode.TriggerSoundMessage def encode = TriggerSoundMessage.encode(this) } object TriggerSoundMessage extends Marshallable[TriggerSoundMessage] { - implicit val codec : Codec[TriggerSoundMessage] = ( + implicit val codec: Codec[TriggerSoundMessage] = ( ("sound" | TriggeredSound.codec) :: ("pos" | Vector3.codec_pos) :: ("unk" | uintL(9)) :: ("volume" | uint8L) - ).xmap[TriggerSoundMessage] ( - { - case a :: b :: c :: d :: HNil => - TriggerSoundMessage(a, b, c, d.toFloat * 0.0039215689f) - }, - { - case TriggerSoundMessage(a, b, c, d) => - a :: b :: c :: (d * 255f).toInt :: HNil - } - ) + ).xmap[TriggerSoundMessage]( + { + case a :: b :: c :: d :: HNil => + TriggerSoundMessage(a, b, c, d.toFloat * 0.0039215689f) + }, + { + case TriggerSoundMessage(a, b, c, d) => + a :: b :: c :: (d * 255f).toInt :: HNil + } + ) } diff --git a/common/src/main/scala/net/psforever/packet/game/UnuseItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/UnuseItemMessage.scala index f4508540..da33a44c 100644 --- a/common/src/main/scala/net/psforever/packet/game/UnuseItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/UnuseItemMessage.scala @@ -15,17 +15,15 @@ import scodec.codecs._ * @param player_guid the player * @param item_guid the item */ -final case class UnuseItemMessage(player_guid : PlanetSideGUID, - item_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class UnuseItemMessage(player_guid: PlanetSideGUID, item_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = UnuseItemMessage def opcode = GamePacketOpcode.UnuseItemMessage def encode = UnuseItemMessage.encode(this) } object UnuseItemMessage extends Marshallable[UnuseItemMessage] { - implicit val codec : Codec[UnuseItemMessage] = ( + implicit val codec: Codec[UnuseItemMessage] = ( ("player_guid" | PlanetSideGUID.codec) :: ("item_guid" | PlanetSideGUID.codec) - ).as[UnuseItemMessage] + ).as[UnuseItemMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/UseItemMessage.scala b/common/src/main/scala/net/psforever/packet/game/UseItemMessage.scala index 15f0f519..4b5aad1d 100644 --- a/common/src/main/scala/net/psforever/packet/game/UseItemMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/UseItemMessage.scala @@ -32,7 +32,7 @@ import scodec.codecs._ * @param object_id the object id `object_guid`'s object */ - /* +/* BETA CLIENT DEBUG INFO: User GUID UsedItem GUID @@ -43,26 +43,27 @@ import scodec.codecs._ RayTrace Intersection Position (3 fields - Vector3) Orientation (3 fields - Vector3) Client Target ClassID - */ -final case class UseItemMessage(avatar_guid : PlanetSideGUID, - item_used_guid : PlanetSideGUID, - object_guid : PlanetSideGUID, - unk2 : Long, - unk3 : Boolean, - unk4 : Vector3, - unk5 : Vector3, - unk6 : Int, - unk7 : Int, - unk8 : Int, - object_id : Long) - extends PlanetSideGamePacket { + */ +final case class UseItemMessage( + avatar_guid: PlanetSideGUID, + item_used_guid: PlanetSideGUID, + object_guid: PlanetSideGUID, + unk2: Long, + unk3: Boolean, + unk4: Vector3, + unk5: Vector3, + unk6: Int, + unk7: Int, + unk8: Int, + object_id: Long +) extends PlanetSideGamePacket { type Packet = UseItemMessage def opcode = GamePacketOpcode.UseItemMessage def encode = UseItemMessage.encode(this) } object UseItemMessage extends Marshallable[UseItemMessage] { - implicit val codec : Codec[UseItemMessage] = ( + implicit val codec: Codec[UseItemMessage] = ( ("avatar_guid" | PlanetSideGUID.codec) :: ("item_used_guid" | PlanetSideGUID.codec) :: ("object_guid" | PlanetSideGUID.codec) :: @@ -74,5 +75,5 @@ object UseItemMessage extends Marshallable[UseItemMessage] { ("unk7" | uint8L) :: ("unk8" | uint8L) :: ("object_id" | uint32L) - ).as[UseItemMessage] + ).as[UseItemMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/VNLWorldStatusMessage.scala b/common/src/main/scala/net/psforever/packet/game/VNLWorldStatusMessage.scala index b0829c31..4e01bdfc 100644 --- a/common/src/main/scala/net/psforever/packet/game/VNLWorldStatusMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/VNLWorldStatusMessage.scala @@ -10,117 +10,128 @@ import scodec._ import scodec.bits._ import scodec.codecs._ import shapeless._ +import enumeratum.values.{IntEnum, IntEnumEntry} object WorldStatus extends Enumeration { type Type = Value val Up, Down, Locked, Full = Value } -// this enumeration starts from one and is subtracted from before processing (0x005FF12A) -object ServerType extends Enumeration(1) { - type Type = Value - val Development, Beta, Released, Released_Gemini = Value +sealed abstract class ServerType(val value: Int, val name: String) extends IntEnumEntry - implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) +object ServerType extends IntEnum[ServerType] { + case object Development extends ServerType(1, "development") + case object Beta extends ServerType(2, "beta") + case object Released extends ServerType(3, "released") + case object ReleasedGemini extends ServerType(4, "released_gemini") + + val values = findValues + implicit val codec = PacketHelpers.createEnumCodec(this, uint8L) } // This MUST be an IP address. The client DOES NOT do name resolution properly -final case class WorldConnectionInfo(address : InetSocketAddress) +final case class WorldConnectionInfo(address: InetSocketAddress) -final case class WorldInformation(name : String, status : WorldStatus.Value, - serverType : ServerType.Value, - connections : Vector[WorldConnectionInfo], - empireNeed : PlanetSideEmpire.Value) +final case class WorldInformation( + name: String, + status: WorldStatus.Value, + serverType: ServerType, + connections: Vector[WorldConnectionInfo], + empireNeed: PlanetSideEmpire.Value +) -final case class VNLWorldStatusMessage(welcomeMessage : String, worlds : Vector[WorldInformation]) - extends PlanetSideGamePacket { +final case class VNLWorldStatusMessage(welcomeMessage: String, worlds: Vector[WorldInformation]) + extends PlanetSideGamePacket { type Packet = VNLWorldStatusMessage def opcode = GamePacketOpcode.VNLWorldStatusMessage def encode = VNLWorldStatusMessage.encode(this) } object VNLWorldStatusMessage extends Marshallable[VNLWorldStatusMessage] { - type InStruct = WorldStatus.Value :: ServerType.Value :: HNil - type OutStruct = Int :: ServerType.Value :: Int :: HNil + type InStruct = WorldStatus.Value :: ServerType :: HNil + type OutStruct = Int :: ServerType :: Int :: HNil - implicit val statusCodec : Codec[InStruct] = { - def from(a : InStruct) : OutStruct = a match { - case status :: svrType :: HNil => - status match { - case WorldStatus.Down => - 0 :: svrType :: 2 :: HNil - case WorldStatus.Locked => - 0 :: svrType :: 1 :: HNil - case WorldStatus.Up => - 1 :: svrType :: 0 :: HNil - case WorldStatus.Full => - 5 :: svrType :: 0 :: HNil - } - } - - def to(a : OutStruct) : InStruct = a match { - case status2 :: svrType :: status1 :: HNil => - if(status1 == 0) { - if(status2 >= 5) { - WorldStatus.Full :: svrType :: HNil - } else { - WorldStatus.Up :: svrType :: HNil + implicit val statusCodec: Codec[InStruct] = { + def from(a: InStruct): OutStruct = + a match { + case status :: svrType :: HNil => + status match { + case WorldStatus.Down => + 0 :: svrType :: 2 :: HNil + case WorldStatus.Locked => + 0 :: svrType :: 1 :: HNil + case WorldStatus.Up => + 1 :: svrType :: 0 :: HNil + case WorldStatus.Full => + 5 :: svrType :: 0 :: HNil } - } else { - if(status1 != 1) - WorldStatus.Down :: svrType :: HNil - else - WorldStatus.Locked :: svrType :: HNil - } - } + } + + def to(a: OutStruct): InStruct = + a match { + case status2 :: svrType :: status1 :: HNil => + if (status1 == 0) { + if (status2 >= 5) { + WorldStatus.Full :: svrType :: HNil + } else { + WorldStatus.Up :: svrType :: HNil + } + } else { + if (status1 != 1) + WorldStatus.Down :: svrType :: HNil + else + WorldStatus.Locked :: svrType :: HNil + } + } (("status2" | uint16L) :: - ("server_type" | ServerType.codec) :: - ("status1" | uint8L)).xmap(to, from) + ("server_type" | ServerType.codec) :: + ("status1" | uint8L)).xmap(to, from) } - implicit val connectionCodec : Codec[WorldConnectionInfo] = { + implicit val connectionCodec: Codec[WorldConnectionInfo] = { type DecodeStruct = ByteVector :: Int :: HNil type EncodeStruct = InetSocketAddress :: HNil - def decode(a : DecodeStruct) : EncodeStruct = a match { - case ipBytes :: port :: HNil => - val addr = new InetSocketAddress(InetAddress.getByAddress(ipBytes.reverse.toArray), port) - addr :: HNil - } + def decode(a: DecodeStruct): EncodeStruct = + a match { + case ipBytes :: port :: HNil => + val addr = new InetSocketAddress(InetAddress.getByAddress(ipBytes.reverse.toArray), port) + addr :: HNil + } - def encode(a : EncodeStruct) : DecodeStruct = a match { - case addr :: HNil => - val ip = addr.getAddress.getAddress - val port = addr.getPort + def encode(a: EncodeStruct): DecodeStruct = + a match { + case addr :: HNil => + val ip = addr.getAddress.getAddress + val port = addr.getPort - ByteVector(ip).reverse :: port :: HNil - } + ByteVector(ip).reverse :: port :: HNil + } (bytes(4) :: uint16L).xmap(decode, encode).as[WorldConnectionInfo] } - implicit val world_codec : Codec[WorldInformation] = ( - ("world_name" | PacketHelpers.encodedString) :: ( + implicit val world_codec: Codec[WorldInformation] = (("world_name" | PacketHelpers.encodedString) :: ( ("status_and_type" | statusCodec) :+ // TODO: limit the size of this vector to 11 as the client will fail on any more ("connections" | vectorOfN(uint8L, connectionCodec)) :+ - ("empire_need" | PlanetSideEmpire.codec) + ("empire_need" | PlanetSideEmpire.codec) + )).as[WorldInformation] + + implicit val world_codec_aligned: Codec[WorldInformation] = + (("world_name" | PacketHelpers.encodedStringAligned(6)) :: ( + ("status_and_type" | statusCodec) :+ + // TODO: limit the size of this vector to 11 as the client will fail on any more + ("connections" | vectorOfN(uint8L, connectionCodec)) + :+ + ("empire_need" | PlanetSideEmpire.codec) )).as[WorldInformation] - implicit val world_codec_aligned : Codec[WorldInformation] = ( - ("world_name" | PacketHelpers.encodedStringAligned(6)) :: ( - ("status_and_type" | statusCodec) :+ - // TODO: limit the size of this vector to 11 as the client will fail on any more - ("connections" | vectorOfN(uint8L, connectionCodec)) - :+ - ("empire_need" | PlanetSideEmpire.codec) - )).as[WorldInformation] - - implicit val codec : Codec[VNLWorldStatusMessage] = ( - ("welcome_message" | PacketHelpers.encodedWideString) :: + implicit val codec: Codec[VNLWorldStatusMessage] = ( + ("welcome_message" | PacketHelpers.encodedWideString) :: ("worlds" | prefixedVectorOfN(uint8L, world_codec, world_codec_aligned)) - ).as[VNLWorldStatusMessage] + ).as[VNLWorldStatusMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/VehicleStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/VehicleStateMessage.scala index 3f61f2e6..faccb900 100644 --- a/common/src/main/scala/net/psforever/packet/game/VehicleStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/VehicleStateMessage.scala @@ -30,7 +30,7 @@ import scodec.codecs._ * @see `PlacementData` */ - /* +/* BETA CLIENT DEBUG INFO: Guid Agreement Id @@ -43,38 +43,40 @@ import scodec.codecs._ Path Number Has Damage Info %d (%d %d %d %d) Cloaking - */ -final case class VehicleStateMessage(vehicle_guid : PlanetSideGUID, - unk1 : Int, - pos : Vector3, - ang : Vector3, - vel : Option[Vector3], - flying : Option[Int], - unk3 : Int, - unk4 : Int, - wheel_direction : Int, - is_decelerating : Boolean, - is_cloaked : Boolean - ) extends PlanetSideGamePacket { + */ +final case class VehicleStateMessage( + vehicle_guid: PlanetSideGUID, + unk1: Int, + pos: Vector3, + ang: Vector3, + vel: Option[Vector3], + flying: Option[Int], + unk3: Int, + unk4: Int, + wheel_direction: Int, + is_decelerating: Boolean, + is_cloaked: Boolean +) extends PlanetSideGamePacket { type Packet = VehicleStateMessage def opcode = GamePacketOpcode.VehicleStateMessage def encode = VehicleStateMessage.encode(this) } object VehicleStateMessage extends Marshallable[VehicleStateMessage] { + /** * Calculate common orientation from little-endian bit data. * @see `Angular.codec_roll` * @see `Angular.codec_pitch` * @see `Angular.codec_yaw` */ - val codec_orient : Codec[Vector3] = ( - ("roll" | Angular.codec_roll(10)) :: + val codec_orient: Codec[Vector3] = ( + ("roll" | Angular.codec_roll(10)) :: ("pitch" | Angular.codec_pitch(10)) :: - ("yaw" | Angular.codec_yaw(10, 90f)) - ).as[Vector3] + ("yaw" | Angular.codec_yaw(10, 90f)) + ).as[Vector3] - implicit val codec : Codec[VehicleStateMessage] = ( + implicit val codec: Codec[VehicleStateMessage] = ( ("vehicle_guid" | PlanetSideGUID.codec) :: ("unk1" | uintL(3)) :: ("pos" | Vector3.codec_pos) :: @@ -86,5 +88,5 @@ object VehicleStateMessage extends Marshallable[VehicleStateMessage] { ("wheel_direction" | uintL(5)) :: ("int5" | bool) :: ("is_cloaked" | bool) - ).as[VehicleStateMessage] + ).as[VehicleStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/VehicleSubStateMessage.scala b/common/src/main/scala/net/psforever/packet/game/VehicleSubStateMessage.scala index 6eea369e..5038be5e 100644 --- a/common/src/main/scala/net/psforever/packet/game/VehicleSubStateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/VehicleSubStateMessage.scala @@ -19,21 +19,22 @@ import scodec.codecs._ * @param unk1 na * @param unk2 na */ -final case class VehicleSubStateMessage(vehicle_guid : PlanetSideGUID, - player_guid : PlanetSideGUID, - vehicle_pos : Vector3, - vehicle_ang : Vector3, - vel : Option[Vector3], - unk1 : Boolean, - unk2 : Option[List[Boolean]]) - extends PlanetSideGamePacket { +final case class VehicleSubStateMessage( + vehicle_guid: PlanetSideGUID, + player_guid: PlanetSideGUID, + vehicle_pos: Vector3, + vehicle_ang: Vector3, + vel: Option[Vector3], + unk1: Boolean, + unk2: Option[List[Boolean]] +) extends PlanetSideGamePacket { type Packet = VehicleSubStateMessage def opcode = GamePacketOpcode.VehicleSubStateMessage def encode = VehicleSubStateMessage.encode(this) } object VehicleSubStateMessage extends Marshallable[VehicleSubStateMessage] { - implicit val codec : Codec[VehicleSubStateMessage] = ( + implicit val codec: Codec[VehicleSubStateMessage] = ( ("vehicle_guid" | PlanetSideGUID.codec) :: ("player_guid" | PlanetSideGUID.codec) :: ("vehicle_pos" | Vector3.codec_float) :: @@ -41,5 +42,5 @@ object VehicleSubStateMessage extends Marshallable[VehicleSubStateMessage] { optional(bool, "vel" | Vector3.codec_vel) :: ("unk1" | bool) :: optional(bool, "unk2" | PacketHelpers.listOfNSized(4, bool)) - ).as[VehicleSubStateMessage] + ).as[VehicleSubStateMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/VoiceHostInfo.scala b/common/src/main/scala/net/psforever/packet/game/VoiceHostInfo.scala index 14118419..97ef74a2 100644 --- a/common/src/main/scala/net/psforever/packet/game/VoiceHostInfo.scala +++ b/common/src/main/scala/net/psforever/packet/game/VoiceHostInfo.scala @@ -14,17 +14,15 @@ import scodec.codecs._ * @param player_guid the player who sent this info (the originator of voice chat?) * @param data everything else */ -final case class VoiceHostInfo(player_guid : PlanetSideGUID, - data : ByteVector) - extends PlanetSideGamePacket { +final case class VoiceHostInfo(player_guid: PlanetSideGUID, data: ByteVector) extends PlanetSideGamePacket { type Packet = VoiceHostInfo def opcode = GamePacketOpcode.VoiceHostInfo def encode = VoiceHostInfo.encode(this) } object VoiceHostInfo extends Marshallable[VoiceHostInfo] { - implicit val codec : Codec[VoiceHostInfo] = ( + implicit val codec: Codec[VoiceHostInfo] = ( ("player_guid" | PlanetSideGUID.codec) :: ("data" | bytes) - ).as[VoiceHostInfo] + ).as[VoiceHostInfo] } diff --git a/common/src/main/scala/net/psforever/packet/game/VoiceHostKill.scala b/common/src/main/scala/net/psforever/packet/game/VoiceHostKill.scala index 6cf6d2c4..468a3fc1 100644 --- a/common/src/main/scala/net/psforever/packet/game/VoiceHostKill.scala +++ b/common/src/main/scala/net/psforever/packet/game/VoiceHostKill.scala @@ -10,13 +10,12 @@ import scodec.Codec * As a precaution, all attempts at sending `VoiceHostRequest` should be replied to with a `VoiceHostKill`. * This packet seems to publish no data. */ -final case class VoiceHostKill() - extends PlanetSideGamePacket { +final case class VoiceHostKill() extends PlanetSideGamePacket { type Packet = VoiceHostKill def opcode = GamePacketOpcode.VoiceHostKill def encode = VoiceHostKill.encode(this) } object VoiceHostKill extends Marshallable[VoiceHostKill] { - implicit val codec : Codec[VoiceHostKill] = PacketHelpers.emptyCodec(VoiceHostKill()) + implicit val codec: Codec[VoiceHostKill] = PacketHelpers.emptyCodec(VoiceHostKill()) } diff --git a/common/src/main/scala/net/psforever/packet/game/VoiceHostRequest.scala b/common/src/main/scala/net/psforever/packet/game/VoiceHostRequest.scala index cb776c18..363cd124 100644 --- a/common/src/main/scala/net/psforever/packet/game/VoiceHostRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/VoiceHostRequest.scala @@ -15,19 +15,17 @@ import scodec.codecs._ * @param player_guid the player who sent this request * @param data everything else */ -final case class VoiceHostRequest(unk : Boolean, - player_guid : PlanetSideGUID, - data : ByteVector) - extends PlanetSideGamePacket { +final case class VoiceHostRequest(unk: Boolean, player_guid: PlanetSideGUID, data: ByteVector) + extends PlanetSideGamePacket { type Packet = VoiceHostRequest def opcode = GamePacketOpcode.VoiceHostRequest def encode = VoiceHostRequest.encode(this) } object VoiceHostRequest extends Marshallable[VoiceHostRequest] { - implicit val codec : Codec[VoiceHostRequest] = ( + implicit val codec: Codec[VoiceHostRequest] = ( ("unk" | bool) :: ("player_guid" | PlanetSideGUID.codec) :: ("data" | bytes) - ).as[VoiceHostRequest] + ).as[VoiceHostRequest] } diff --git a/common/src/main/scala/net/psforever/packet/game/WarpgateRequest.scala b/common/src/main/scala/net/psforever/packet/game/WarpgateRequest.scala index a288446b..4b899612 100644 --- a/common/src/main/scala/net/psforever/packet/game/WarpgateRequest.scala +++ b/common/src/main/scala/net/psforever/packet/game/WarpgateRequest.scala @@ -24,25 +24,26 @@ import scodec.codecs._ * @param unk1 na; always zero? * @param unk2 na; always zero? */ -final case class WarpgateRequest(from_zone : PlanetSideGUID, - from_gate_guid : PlanetSideGUID, - to_gate_mapid : PlanetSideGUID, - to_zone : PlanetSideGUID, - unk1 : Int, - unk2 : Int) - extends PlanetSideGamePacket { +final case class WarpgateRequest( + from_zone: PlanetSideGUID, + from_gate_guid: PlanetSideGUID, + to_gate_mapid: PlanetSideGUID, + to_zone: PlanetSideGUID, + unk1: Int, + unk2: Int +) extends PlanetSideGamePacket { type Packet = WarpgateRequest def opcode = GamePacketOpcode.WarpgateRequest def encode = WarpgateRequest.encode(this) } object WarpgateRequest extends Marshallable[WarpgateRequest] { - implicit val codec : Codec[WarpgateRequest] = ( + implicit val codec: Codec[WarpgateRequest] = ( ("from_zone" | PlanetSideGUID.codec) :: ("from_gate_guid" | PlanetSideGUID.codec) :: ("to_gate_mapid" | PlanetSideGUID.codec) :: ("to_zone" | PlanetSideGUID.codec) :: ("unk1" | uint8L) :: ("unk2" | uint8L) - ).as[WarpgateRequest] + ).as[WarpgateRequest] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponDelayFireMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponDelayFireMessage.scala index 45f8629b..7051078f 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeaponDelayFireMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeaponDelayFireMessage.scala @@ -10,17 +10,15 @@ import scodec.codecs._ * * See [[PlayerStateMessageUpstream]] for explanation of seq_time. */ -final case class WeaponDelayFireMessage(seq_time : Int, - weapon_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class WeaponDelayFireMessage(seq_time: Int, weapon_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = WeaponDelayFireMessage def opcode = GamePacketOpcode.WeaponDelayFireMessage def encode = WeaponDelayFireMessage.encode(this) } object WeaponDelayFireMessage extends Marshallable[WeaponDelayFireMessage] { - implicit val codec : Codec[WeaponDelayFireMessage] = ( - ("seq_time" | uintL(10)) :: - ("weapon_guid" | PlanetSideGUID.codec) - ).as[WeaponDelayFireMessage] + implicit val codec: Codec[WeaponDelayFireMessage] = ( + ("seq_time" | uintL(10)) :: + ("weapon_guid" | PlanetSideGUID.codec) + ).as[WeaponDelayFireMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponDryFireMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponDryFireMessage.scala index 99603f81..d7f009c1 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeaponDryFireMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeaponDryFireMessage.scala @@ -14,13 +14,12 @@ import scodec.codecs._ * * @param weapon_guid the weapon that is dry firing */ -final case class WeaponDryFireMessage(weapon_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class WeaponDryFireMessage(weapon_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = WeaponDryFireMessage def opcode = GamePacketOpcode.WeaponDryFireMessage def encode = WeaponDryFireMessage.encode(this) } object WeaponDryFireMessage extends Marshallable[WeaponDryFireMessage] { - implicit val codec : Codec[WeaponDryFireMessage] = ("weapon_guid" | PlanetSideGUID.codec).as[WeaponDryFireMessage] + implicit val codec: Codec[WeaponDryFireMessage] = ("weapon_guid" | PlanetSideGUID.codec).as[WeaponDryFireMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponFireMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponFireMessage.scala index cac87c61..a4f48e5f 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeaponFireMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeaponFireMessage.scala @@ -9,7 +9,6 @@ import scodec.codecs._ /** * WeaponFireMessage seems to be sent each time a weapon actually shoots. * - * * @param seq_time See [[PlayerStateMessageUpstream]] for explanation of seq_time. * @param weapon_guid * @param projectile_guid @@ -24,37 +23,38 @@ import scodec.codecs._ * 2 for vs starfire (lockon type?) * 3 for thrown (e.g. grenades) * @param unk7 Seems to be thrown weapon velocity/direction -*/ -final case class WeaponFireMessage(seq_time : Int, - weapon_guid : PlanetSideGUID, - projectile_guid : PlanetSideGUID, - shot_origin : Vector3, - unk1 : Int, - unk2 : Int, - unk3 : Int, - unk4 : Int, - unk5 : Int, - unk6 : Int, - unk7 : Option[Option[Vector3]]) - extends PlanetSideGamePacket { + */ +final case class WeaponFireMessage( + seq_time: Int, + weapon_guid: PlanetSideGUID, + projectile_guid: PlanetSideGUID, + shot_origin: Vector3, + unk1: Int, + unk2: Int, + unk3: Int, + unk4: Int, + unk5: Int, + unk6: Int, + unk7: Option[Option[Vector3]] +) extends PlanetSideGamePacket { type Packet = WeaponFireMessage def opcode = GamePacketOpcode.WeaponFireMessage def encode = WeaponFireMessage.encode(this) } object WeaponFireMessage extends Marshallable[WeaponFireMessage] { - implicit val codec : Codec[WeaponFireMessage] = ( - ("seq_time" | uintL(10)) :: - ("weapon_guid" | PlanetSideGUID.codec) :: - ("projectile_guid" | PlanetSideGUID.codec) :: - ("shot_origin" | Vector3.codec_pos) :: - ("unk1" | uint16L) :: - ("unk2" | uint16L) :: - ("unk3" | uint16L) :: - ("unk4" | uint16L) :: - ("unk5" | uint8L) :: - (("unk6" | uintL(3)) >>:~ { unk6_value => - conditional(unk6_value == 3, "unk7" | optional(bool, Vector3.codec_vel)).hlist - }) - ).as[WeaponFireMessage] + implicit val codec: Codec[WeaponFireMessage] = ( + ("seq_time" | uintL(10)) :: + ("weapon_guid" | PlanetSideGUID.codec) :: + ("projectile_guid" | PlanetSideGUID.codec) :: + ("shot_origin" | Vector3.codec_pos) :: + ("unk1" | uint16L) :: + ("unk2" | uint16L) :: + ("unk3" | uint16L) :: + ("unk4" | uint16L) :: + ("unk5" | uint8L) :: + (("unk6" | uintL(3)) >>:~ { unk6_value => + conditional(unk6_value == 3, "unk7" | optional(bool, Vector3.codec_vel)).hlist + }) + ).as[WeaponFireMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala index bb911d61..d4a5ea7d 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala @@ -14,13 +14,12 @@ import scodec.codecs._ * * @param weapon_guid the weapon that is jammed */ -final case class WeaponJammedMessage(weapon_guid : PlanetSideGUID) - extends PlanetSideGamePacket { +final case class WeaponJammedMessage(weapon_guid: PlanetSideGUID) extends PlanetSideGamePacket { type Packet = WeaponJammedMessage def opcode = GamePacketOpcode.WeaponJammedMessage def encode = WeaponJammedMessage.encode(this) } object WeaponJammedMessage extends Marshallable[WeaponJammedMessage] { - implicit val codec : Codec[WeaponJammedMessage] = ("weapon_guid" | PlanetSideGUID.codec).as[WeaponJammedMessage] + implicit val codec: Codec[WeaponJammedMessage] = ("weapon_guid" | PlanetSideGUID.codec).as[WeaponJammedMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponLazeTargetPositionMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponLazeTargetPositionMessage.scala index 7c34e352..604a5f1d 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeaponLazeTargetPositionMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeaponLazeTargetPositionMessage.scala @@ -21,19 +21,17 @@ import scodec.codecs._ * @param player_pos the position of (the player holding the) laze pointer * @param lazed_pos position of the tip of the laze pointer's beam, or where it intersects something */ -final case class WeaponLazeTargetPositionMessage(weapon_uid : PlanetSideGUID, - player_pos : Vector3, - lazed_pos : Vector3) - extends PlanetSideGamePacket { +final case class WeaponLazeTargetPositionMessage(weapon_uid: PlanetSideGUID, player_pos: Vector3, lazed_pos: Vector3) + extends PlanetSideGamePacket { type Packet = WeaponLazeTargetPositionMessage def opcode = GamePacketOpcode.WeaponLazeTargetPositionMessage def encode = WeaponLazeTargetPositionMessage.encode(this) } object WeaponLazeTargetPositionMessage extends Marshallable[WeaponLazeTargetPositionMessage] { - implicit val codec : Codec[WeaponLazeTargetPositionMessage] = ( + implicit val codec: Codec[WeaponLazeTargetPositionMessage] = ( ("weapon_uid" | PlanetSideGUID.codec) :: ("player_pos" | Vector3.codec_pos) :: ("lazed_pos" | Vector3.codec_pos) - ).as[WeaponLazeTargetPositionMessage] + ).as[WeaponLazeTargetPositionMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/WeatherMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeatherMessage.scala index 753deb7c..bf9bc272 100644 --- a/common/src/main/scala/net/psforever/packet/game/WeatherMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/WeatherMessage.scala @@ -20,9 +20,7 @@ import shapeless.{::, HNil} * @param unk2 na; * the z-component is always `0.0f` */ -final case class CloudInfo(id : Int, - unk1 : Vector3, - unk2 : Vector3) +final case class CloudInfo(id: Int, unk1: Vector3, unk2: Vector3) /** * Storm data. @@ -32,9 +30,7 @@ final case class CloudInfo(id : Int, * @param radius na; * 100 is about 819.2 */ -final case class StormInfo(loc : Vector3, - intensity : Int, - radius : Int) +final case class StormInfo(loc: Vector3, intensity: Int, radius: Int) /** * Dispatched by the server to update weather conditions. @@ -60,25 +56,24 @@ final case class StormInfo(loc : Vector3, * @param storms a list of storm data; * typically, fluctuates between nine and eleven entries */ -final case class WeatherMessage(clouds : List[CloudInfo], - storms : List[StormInfo]) - extends PlanetSideGamePacket { +final case class WeatherMessage(clouds: List[CloudInfo], storms: List[StormInfo]) extends PlanetSideGamePacket { type Packet = WeatherMessage def opcode = GamePacketOpcode.WeatherMessage def encode = WeatherMessage.encode(this) } object WeatherMessage extends Marshallable[WeatherMessage] { + /** * `Codec` for `CloudInfo` data. */ - private val cloudCodec : Codec[CloudInfo] = ( + private val cloudCodec: Codec[CloudInfo] = ( ("id" | uint8L) :: ("unk1x" | floatL) :: ("unk1y" | floatL) :: ("unk2x" | floatL) :: ("unk2y" | floatL) - ).xmap[CloudInfo] ( + ).xmap[CloudInfo]( { case id :: x1 :: y1 :: x2 :: y2 :: HNil => CloudInfo(id, Vector3(x1, y1, 0.0f), Vector3(x2, y2, 0.0f)) @@ -92,12 +87,12 @@ object WeatherMessage extends Marshallable[WeatherMessage] { /** * `Codec` for `StormInfo` data. */ - private val stormCodec : Codec[StormInfo] = ( + private val stormCodec: Codec[StormInfo] = ( ("unkx" | floatL) :: ("unky" | floatL) :: ("i" | uint8L) :: ("r" | uint8L) - ).xmap[StormInfo] ( + ).xmap[StormInfo]( { case x :: y :: i :: r :: HNil => StormInfo(Vector3(x, y, 0.0f), i, r) @@ -108,8 +103,8 @@ object WeatherMessage extends Marshallable[WeatherMessage] { } ) - implicit val codec : Codec[WeatherMessage] = ( + implicit val codec: Codec[WeatherMessage] = ( ("clouds" | PacketHelpers.listOfNAligned(uint32L, 0, cloudCodec)) :: ("storms" | PacketHelpers.listOfNAligned(uint32L, 0, stormCodec)) - ).as[WeatherMessage] + ).as[WeatherMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ZipLineMessage.scala b/common/src/main/scala/net/psforever/packet/game/ZipLineMessage.scala index 0f071cbd..f6da0175 100644 --- a/common/src/main/scala/net/psforever/packet/game/ZipLineMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ZipLineMessage.scala @@ -22,18 +22,20 @@ import scodec.codecs._ * @param pos the coordinates of the point where the player is interacting with the zip line; * "optional," in theory */ -final case class ZipLineMessage(player_guid : PlanetSideGUID, - forwards : Boolean, - action : Int, - path_id : Long, - pos : Option[Vector3] = None) - extends PlanetSideGamePacket { +final case class ZipLineMessage( + player_guid: PlanetSideGUID, + forwards: Boolean, + action: Int, + path_id: Long, + pos: Option[Vector3] = None +) extends PlanetSideGamePacket { type Packet = ZipLineMessage def opcode = GamePacketOpcode.ZipLineMessage def encode = ZipLineMessage.encode(this) } object ZipLineMessage extends Marshallable[ZipLineMessage] { + /** * Alternate constructor for `ZipLineMessage` that requirement for the last field. * @@ -44,16 +46,22 @@ object ZipLineMessage extends Marshallable[ZipLineMessage] { * @param pos the coordinates of the point where the player is interacting with the zip line * @return a `ZipLineMessage` object */ - def apply(player_guid : PlanetSideGUID, forwards : Boolean, action : Int, path_id : Long, pos : Vector3) : ZipLineMessage = { + def apply( + player_guid: PlanetSideGUID, + forwards: Boolean, + action: Int, + path_id: Long, + pos: Vector3 + ): ZipLineMessage = { ZipLineMessage(player_guid, forwards, action, path_id, Some(pos)) } - implicit val codec : Codec[ZipLineMessage] = ( + implicit val codec: Codec[ZipLineMessage] = ( ("player_guid" | PlanetSideGUID.codec) >>:~ { player => ("forwards" | bool) :: ("action" | uint2) :: ("id" | uint32L) :: conditional(player.guid > 0, Vector3.codec_float) // !(player.guid == 0) } - ).as[ZipLineMessage] + ).as[ZipLineMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ZoneForcedCavernConnectionsMessage.scala b/common/src/main/scala/net/psforever/packet/game/ZoneForcedCavernConnectionsMessage.scala index 44741354..c18218a6 100644 --- a/common/src/main/scala/net/psforever/packet/game/ZoneForcedCavernConnectionsMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ZoneForcedCavernConnectionsMessage.scala @@ -16,17 +16,15 @@ import scodec.codecs._ * 3 - same as 2 (no change in destination) * Destinations also change (north/south/east/west), but seemingly only to two of the currently active caverns can be linked to? */ -final case class ZoneForcedCavernConnectionsMessage(zone : Int, - unk : Int) - extends PlanetSideGamePacket { +final case class ZoneForcedCavernConnectionsMessage(zone: Int, unk: Int) extends PlanetSideGamePacket { type Packet = ZoneForcedCavernConnectionsMessage def opcode = GamePacketOpcode.ZoneForcedCavernConnectionsMessage def encode = ZoneForcedCavernConnectionsMessage.encode(this) } object ZoneForcedCavernConnectionsMessage extends Marshallable[ZoneForcedCavernConnectionsMessage] { - implicit val codec : Codec[ZoneForcedCavernConnectionsMessage] = ( + implicit val codec: Codec[ZoneForcedCavernConnectionsMessage] = ( ("zone" | uint16L) :: ("unk" | uint2L) - ).as[ZoneForcedCavernConnectionsMessage] + ).as[ZoneForcedCavernConnectionsMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ZoneInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/ZoneInfoMessage.scala index b332fd71..5206e728 100644 --- a/common/src/main/scala/net/psforever/packet/game/ZoneInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ZoneInfoMessage.scala @@ -20,19 +20,16 @@ import scodec.codecs._ * only applicable to caverns * @see `ZonePopulationUpdateMessage` for information on population and queues */ -final case class ZoneInfoMessage(zone : Int, - empire_status : Boolean, - lock_time : Long) - extends PlanetSideGamePacket { +final case class ZoneInfoMessage(zone: Int, empire_status: Boolean, lock_time: Long) extends PlanetSideGamePacket { type Packet = ZoneInfoMessage def opcode = GamePacketOpcode.ZoneInfoMessage def encode = ZoneInfoMessage.encode(this) } object ZoneInfoMessage extends Marshallable[ZoneInfoMessage] { - implicit val codec : Codec[ZoneInfoMessage] = ( + implicit val codec: Codec[ZoneInfoMessage] = ( ("zone" | uint16L) :: ("empire_status" | bool) :: ("lock_time" | uint32L) - ).as[ZoneInfoMessage] + ).as[ZoneInfoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ZoneLockInfoMessage.scala b/common/src/main/scala/net/psforever/packet/game/ZoneLockInfoMessage.scala index 6d0f6d5a..9478893e 100644 --- a/common/src/main/scala/net/psforever/packet/game/ZoneLockInfoMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ZoneLockInfoMessage.scala @@ -14,19 +14,16 @@ import scodec.codecs._ * @param unk na; * usually `true` */ -final case class ZoneLockInfoMessage(zone : Int, - lock_status : Boolean, - unk : Boolean) - extends PlanetSideGamePacket { +final case class ZoneLockInfoMessage(zone: Int, lock_status: Boolean, unk: Boolean) extends PlanetSideGamePacket { type Packet = ZoneLockInfoMessage def opcode = GamePacketOpcode.ZoneLockInfoMessage def encode = ZoneLockInfoMessage.encode(this) } object ZoneLockInfoMessage extends Marshallable[ZoneLockInfoMessage] { - implicit val codec : Codec[ZoneLockInfoMessage] = ( + implicit val codec: Codec[ZoneLockInfoMessage] = ( ("zone" | uint16L) :: ("lock_status" | bool) :: ("unk" | bool) - ).as[ZoneLockInfoMessage] + ).as[ZoneLockInfoMessage] } diff --git a/common/src/main/scala/net/psforever/packet/game/ZonePopulationUpdateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ZonePopulationUpdateMessage.scala index 0235913d..0bcbfa55 100644 --- a/common/src/main/scala/net/psforever/packet/game/ZonePopulationUpdateMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ZonePopulationUpdateMessage.scala @@ -43,24 +43,25 @@ import scodec.codecs._ * @param bo_queue the maximum number of Black OPs players that can join this zone * @param bo_pop the current Black OPs population in this zone */ -final case class ZonePopulationUpdateMessage(zone_id : Int, - zone_queue : Long, - tr_queue : Long, - tr_pop : Long, - nc_queue : Long, - nc_pop : Long, - vs_queue : Long, - vs_pop : Long, - bo_queue : Long = 0L, - bo_pop : Long = 0L) - extends PlanetSideGamePacket { +final case class ZonePopulationUpdateMessage( + zone_id: Int, + zone_queue: Long, + tr_queue: Long, + tr_pop: Long, + nc_queue: Long, + nc_pop: Long, + vs_queue: Long, + vs_pop: Long, + bo_queue: Long = 0L, + bo_pop: Long = 0L +) extends PlanetSideGamePacket { type Packet = ZonePopulationUpdateMessage def opcode = GamePacketOpcode.ZonePopulationUpdateMessage def encode = ZonePopulationUpdateMessage.encode(this) } object ZonePopulationUpdateMessage extends Marshallable[ZonePopulationUpdateMessage] { - implicit val codec : Codec[ZonePopulationUpdateMessage] = ( + implicit val codec: Codec[ZonePopulationUpdateMessage] = ( ("zone_id" | uint16L) :: ("zone_queue" | uint32L) :: ("tr_queue" | uint32L) :: ("tr_pop" | uint32L) :: diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/AegisShieldGeneratorData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/AegisShieldGeneratorData.scala index b33becc5..fad93d30 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/AegisShieldGeneratorData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/AegisShieldGeneratorData.scala @@ -11,20 +11,18 @@ import shapeless.{::, HNil} * @param deploy data common to objects spawned by the (advanced) adaptive construction engine * @param health the amount of health the object has, as a percentage of a filled bar */ -final case class AegisShieldGeneratorData(deploy : CommonFieldDataWithPlacement, - health : Int - ) extends ConstructorData { - override def bitsize : Long = { +final case class AegisShieldGeneratorData(deploy: CommonFieldDataWithPlacement, health: Int) extends ConstructorData { + override def bitsize: Long = { 108 + deploy.bitsize //8u + 100u } } object AegisShieldGeneratorData extends Marshallable[AegisShieldGeneratorData] { - implicit val codec : Codec[AegisShieldGeneratorData] = ( + implicit val codec: Codec[AegisShieldGeneratorData] = ( ("deploy" | CommonFieldDataWithPlacement.codec) :: ("health" | uint8L) :: uint32 :: uint32 :: uint32 :: uint4L //100 bits - ).exmap[AegisShieldGeneratorData] ( + ).exmap[AegisShieldGeneratorData]( { case deploy :: health :: 0 :: 0 :: 0 :: 0 :: HNil => Attempt.successful(AegisShieldGeneratorData(deploy, health)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/AmmoBoxData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/AmmoBoxData.scala index cbe21f23..1dcb921e 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/AmmoBoxData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/AmmoBoxData.scala @@ -13,6 +13,7 @@ import net.psforever.types.PlanetSideGUID * @see `DetailedAmmoBoxData` */ object AmmoBoxData { + /** * An abbreviated constructor for creating `AmmoBoxData` while masking use of `InternalSlot`. * @param cls the code for the type of object being constructed @@ -21,6 +22,6 @@ object AmmoBoxData { * @param ammo the ammunition object * @return an `InternalSlot` object that encapsulates `CommonFieldData` */ - def apply(cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : CommonFieldData) : InternalSlot = + def apply(cls: Int, guid: PlanetSideGUID, parentSlot: Int, ammo: CommonFieldData): InternalSlot = new InternalSlot(cls, guid, parentSlot, ammo) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala index 39cacc32..82047b17 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/BasicCharacterData.scala @@ -18,8 +18,10 @@ import net.psforever.types._ * by row and column on the character creation screen, the high nibble is the row and the low nibble is the column * @param voice the avatar's voice selection */ -final case class BasicCharacterData(name : String, - faction : PlanetSideEmpire.Value, - sex : CharacterGender.Value, - head : Int, - voice : CharacterVoice.Value) +final case class BasicCharacterData( + name: String, + faction: PlanetSideEmpire.Value, + sex: CharacterGender.Value, + head: Int, + voice: CharacterVoice.Value +) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CaptureFlagData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CaptureFlagData.scala index 56e402d0..62f5399a 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CaptureFlagData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CaptureFlagData.scala @@ -22,18 +22,19 @@ import shapeless.{::, HNil} * @param unk3 na * @param unk4 na */ -final case class CaptureFlagData(pos : PlacementData, - faction : PlanetSideEmpire.Value, - unk1 : Int, - unk2 : Int, - unk3 : Int, - unk4 : Int - ) extends ConstructorData { - override def bitsize : Long = 88L + pos.bitsize +final case class CaptureFlagData( + pos: PlacementData, + faction: PlanetSideEmpire.Value, + unk1: Int, + unk2: Int, + unk3: Int, + unk4: Int +) extends ConstructorData { + override def bitsize: Long = 88L + pos.bitsize } object CaptureFlagData extends Marshallable[CaptureFlagData] { - implicit val codec : Codec[CaptureFlagData] = ( + implicit val codec: Codec[CaptureFlagData] = ( ("pos" | PlacementData.codec) :: ("faction" | PlanetSideEmpire.codec) :: bool :: @@ -46,7 +47,7 @@ object CaptureFlagData extends Marshallable[CaptureFlagData] { ("unk3" | uint16L) :: //probably a PlanetSideGUID ("unk4" | uint8L) :: uint(9) - ).exmap[CaptureFlagData] ( + ).exmap[CaptureFlagData]( { case pos :: fac :: false :: 4 :: 0 :: unk1 :: 0 :: unk2 :: 0 :: unk3 :: unk4 :: 0 :: HNil => Attempt.Successful(CaptureFlagData(pos, fac, unk1, unk2, unk3, unk4)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala index 2569e128..b4ea7d43 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterAppearanceData.scala @@ -24,19 +24,21 @@ import shapeless.{::, HNil} * for Black OPs, the agile exo-suit and the reinforced exo-suit are replaced with the Black OPs exo-suits * @param char_id a unique character reference identification number */ -final case class CharacterAppearanceA(app : BasicCharacterData, - data : CommonFieldData, - exosuit : ExoSuitType.Value, - unk5 : Int, - char_id : Long, - unk7 : Int, - unk8 : Int, - unk9 : Int, - unkA : Int) - (name_padding : Int) extends StreamBitSize { - override def bitsize : Long = { - val dataSize : Long = data.bitsize - val nameStringSize : Long = StreamBitSize.stringBitSize(app.name, 16) + name_padding +final case class CharacterAppearanceA( + app: BasicCharacterData, + data: CommonFieldData, + exosuit: ExoSuitType.Value, + unk5: Int, + char_id: Long, + unk7: Int, + unk8: Int, + unk9: Int, + unkA: Int +)(name_padding: Int) + extends StreamBitSize { + override def bitsize: Long = { + val dataSize: Long = data.bitsize + val nameStringSize: Long = StreamBitSize.stringBitSize(app.name, 16) + name_padding 114L + dataSize + nameStringSize } } @@ -65,31 +67,36 @@ final case class CharacterAppearanceA(app : BasicCharacterData, * @param charging_pose animation pose for both charging modules and BFR imprinting * @param on_zipline player's model is changed into a faction-color ball of energy, as if on a zip line */ -final case class CharacterAppearanceB(unk0 : Long, - outfit_name : String, - outfit_logo : Int, - unk1 : Boolean, - backpack : Boolean, - unk2 : Boolean, - unk3 : Boolean, - unk4 : Boolean, - facingPitch : Float, - facingYawUpper : Float, - lfs : Boolean, - grenade_state : GrenadeState.Value, - is_cloaking : Boolean, - unk5 : Boolean, - unk6 : Boolean, - charging_pose : Boolean, - unk7 : Boolean, - on_zipline : Option[CharacterAppearanceData.ZiplineData]) - (alt_model : Boolean, name_padding : Int) extends StreamBitSize { - override def bitsize : Long = { +final case class CharacterAppearanceB( + unk0: Long, + outfit_name: String, + outfit_logo: Int, + unk1: Boolean, + backpack: Boolean, + unk2: Boolean, + unk3: Boolean, + unk4: Boolean, + facingPitch: Float, + facingYawUpper: Float, + lfs: Boolean, + grenade_state: GrenadeState.Value, + is_cloaking: Boolean, + unk5: Boolean, + unk6: Boolean, + charging_pose: Boolean, + unk7: Boolean, + on_zipline: Option[CharacterAppearanceData.ZiplineData] +)( + alt_model: Boolean, + name_padding: Int +) extends StreamBitSize { + override def bitsize: Long = { //factor guard bool values into the base size, not its corresponding optional field - val outfitStringSize : Long = StreamBitSize.stringBitSize(outfit_name, 16) + + val outfitStringSize: Long = StreamBitSize.stringBitSize(outfit_name, 16) + CharacterAppearanceData.outfitNamePadding //even if the outfit_name is blank, string is always padded - val backpackSize = if(backpack) { 1L } else { 0L } - val onZiplineSize : Long = on_zipline match { case Some(n) => n.bitsize; case None => 0 } + val backpackSize = if (backpack) { 1L } + else { 0L } + val onZiplineSize: Long = on_zipline match { case Some(n) => n.bitsize; case None => 0 } 70L + outfitStringSize + backpackSize + onZiplineSize } } @@ -119,44 +126,45 @@ final case class CharacterAppearanceB(unk0 : Long, * @see `DetailedCharacterData` * @param ribbons the four merit commendation ribbon medals */ -final case class CharacterAppearanceData(a : CharacterAppearanceA, - b : CharacterAppearanceB, - ribbons : RibbonBars) - (name_padding : Int) extends StreamBitSize { +final case class CharacterAppearanceData(a: CharacterAppearanceA, b: CharacterAppearanceB, ribbons: RibbonBars)( + name_padding: Int +) extends StreamBitSize { - override def bitsize : Long = 128L + a.bitsize + b.bitsize + override def bitsize: Long = 128L + a.bitsize + b.bitsize /** * External access to the value padding on the name field. * The padding will always be a number 0-7. * @return the pad length in bits */ - def NamePadding : Int = name_padding + def NamePadding: Int = name_padding /** * When a player is released-dead or attached to a zipline, their basic infantry model is replaced with a different one. * @return the length of the variable field that exists when using alternate models */ - def altModelBit : Option[Int] = CharacterAppearanceData.altModelBit(this) + def altModelBit: Option[Int] = CharacterAppearanceData.altModelBit(this) } object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { - def apply(app : BasicCharacterData, - black_ops : Boolean, - jammered : Boolean, - exosuit : ExoSuitType.Value, - outfit_name : String, - outfit_logo : Int, - backpack : Boolean, - facingPitch : Float, - facingYawUpper : Float, - lfs : Boolean, - grenade_state : GrenadeState.Value, - is_cloaking : Boolean, - charging_pose : Boolean, - on_zipline : Option[ZiplineData], - ribbons : RibbonBars)(name_padding : Int) : CharacterAppearanceData = { - val altModel : Boolean = backpack || on_zipline.isDefined + def apply( + app: BasicCharacterData, + black_ops: Boolean, + jammered: Boolean, + exosuit: ExoSuitType.Value, + outfit_name: String, + outfit_logo: Int, + backpack: Boolean, + facingPitch: Float, + facingYawUpper: Float, + lfs: Boolean, + grenade_state: GrenadeState.Value, + is_cloaking: Boolean, + charging_pose: Boolean, + on_zipline: Option[ZiplineData], + ribbons: RibbonBars + )(name_padding: Int): CharacterAppearanceData = { + val altModel: Boolean = backpack || on_zipline.isDefined val a = CharacterAppearanceA( app, CommonFieldData( @@ -167,10 +175,9 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { None, false, None, - if(jammered) { + if (jammered) { Some(0) - } - else { + } else { None }, PlanetSideGUID(0) @@ -185,21 +192,21 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { )(name_padding) val b = CharacterAppearanceB( outfit_name.length, - outfit_name : String, - outfit_logo : Int, + outfit_name: String, + outfit_logo: Int, false, backpack, false, false, false, - facingPitch : Float, - facingYawUpper : Float, - lfs : Boolean, - grenade_state : GrenadeState.Value, - is_cloaking : Boolean, + facingPitch: Float, + facingYawUpper: Float, + lfs: Boolean, + grenade_state: GrenadeState.Value, + is_cloaking: Boolean, false, false, - charging_pose : Boolean, + charging_pose: Boolean, false, on_zipline )(altModel, name_padding) @@ -210,7 +217,9 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { )(name_padding) } - def apply(a : Int=>CharacterAppearanceA, b : (Boolean,Int)=>CharacterAppearanceB, ribbons : RibbonBars)(name_padding : Int) : CharacterAppearanceData = { + def apply(a: Int => CharacterAppearanceA, b: (Boolean, Int) => CharacterAppearanceB, ribbons: RibbonBars)( + name_padding: Int + ): CharacterAppearanceData = { val first = a(name_padding) CharacterAppearanceData(a(name_padding), b(first.data.alternate, name_padding), ribbons)(name_padding) } @@ -220,9 +229,8 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { * @param unk1 na * @param unk2 na */ - final case class ExtraData(unk1 : Boolean, - unk2 : Boolean) extends StreamBitSize { - override def bitsize : Long = 2L + final case class ExtraData(unk1: Boolean, unk2: Boolean) extends StreamBitSize { + override def bitsize: Long = 2L } /** @@ -230,9 +238,8 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { * @param unk1 na * @param unk2 na */ - final case class ZiplineData(unk1 : Long, - unk2 : Boolean) extends StreamBitSize { - override def bitsize : Long = 33L + final case class ZiplineData(unk1: Long, unk2: Boolean) extends StreamBitSize { + override def bitsize: Long = 33L } /** @@ -243,23 +250,22 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { * @param app the appearance * @return the length of the variable field that exists when using alternate models */ - def altModelBit(app : CharacterAppearanceData) : Option[Int] = if(app.b.backpack || app.b.on_zipline.isDefined) { - if(!app.a.data.alternate) { + def altModelBit(app: CharacterAppearanceData): Option[Int] = + if (app.b.backpack || app.b.on_zipline.isDefined) { + if (!app.a.data.alternate) { throw new IllegalArgumentException("missing alternate model flag when should be set") - } - else { + } else { Some(1) } - } - else { + } else { None } - def namePadding(inheritPad : Int, pad : Option[CommonFieldDataExtra]) : Int = { + def namePadding(inheritPad: Int, pad: Option[CommonFieldDataExtra]): Int = { pad match { case Some(n) => val bitsize = n.bitsize.toInt % 8 - if(inheritPad > bitsize) + if (inheritPad > bitsize) inheritPad - bitsize else 8 - bitsize @@ -273,73 +279,112 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { * The padding will always be a number 0-7. * @return the pad length in bits */ - def outfitNamePadding : Int = { + def outfitNamePadding: Int = { 6 } - private val extra_codec : Codec[ExtraData] = ( + private val extra_codec: Codec[ExtraData] = ( ("unk1" | bool) :: ("unk2" | bool) ).as[ExtraData] - private val zipline_codec : Codec[ZiplineData] = ( + private val zipline_codec: Codec[ZiplineData] = ( ("unk1" | uint32L) :: ("unk2" | bool) - ).as[ZiplineData] + ).as[ZiplineData] /** * na * @param name_padding na * @return na */ - def a_codec(name_padding : Int) : Codec[CharacterAppearanceA] = ( - ("data" | CommonFieldData.codec) >>:~ { data => - ("name" | PacketHelpers.encodedWideStringAligned(namePadding(name_padding, data.v2))) :: - ("exosuit" | ExoSuitType.codec) :: - ("unk5" | uint2) :: //unknown - ("sex" | CharacterGender.codec) :: - ("head" | uint8L) :: - ("voice" | CharacterVoice.codec) :: - ("unk6" | uint32L) :: - ("unk7" | uint16L) :: - ("unk8" | uint16L) :: - ("unk9" | uint16L) :: - ("unkA" | uint16L) //usually either 0 or 65535 + def a_codec(name_padding: Int): Codec[CharacterAppearanceA] = + ( + ("data" | CommonFieldData.codec) >>:~ { data => + ("name" | PacketHelpers.encodedWideStringAligned(namePadding(name_padding, data.v2))) :: + ("exosuit" | ExoSuitType.codec) :: + ("unk5" | uint2) :: //unknown + ("sex" | CharacterGender.codec) :: + ("head" | uint8L) :: + ("voice" | CharacterVoice.codec) :: + ("unk6" | uint32L) :: + ("unk7" | uint16L) :: + ("unk8" | uint16L) :: + ("unk9" | uint16L) :: + ("unkA" | uint16L) //usually either 0 or 65535 } - ).exmap[CharacterAppearanceA] ( - { - case data :: name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil => - Attempt.successful( - CharacterAppearanceA(BasicCharacterData(name, data.faction, sex, head, v1), data, suit, u5, u6, u7, u8, u9, uA)(name_padding) - ) - - case _ => - Attempt.Failure(Err("invalid character appearance data; can not encode")) - }, - { - case CharacterAppearanceA(BasicCharacterData(name, PlanetSideEmpire.NEUTRAL, _, _, _), _, _, _, _, _, _, _, _) => - Attempt.failure(Err(s"character $name's faction can not declare as neutral")) - - case CharacterAppearanceA(BasicCharacterData(name, faction, sex, head, v1), data, suit, u5, u6, u7, u8, u9, uA) => - if(faction != data.faction) { - Attempt.failure(Err(s"character $name's faction fields are mismatched, $faction != ${data.faction}")) - } - else if(data.faction == PlanetSideEmpire.NEUTRAL) { + ).exmap[CharacterAppearanceA]( + { + case data :: name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil => Attempt.successful( - CommonFieldData(faction, data.bops, data.alternate, data.v1, data.v2, data.jammered, None, data.v5, PlanetSideGUID(0)) :: - name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil + CharacterAppearanceA( + BasicCharacterData(name, data.faction, sex, head, v1), + data, + suit, + u5, + u6, + u7, + u8, + u9, + uA + )(name_padding) ) - } - else { - Attempt.successful( - data :: name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil - ) - } - case _ => - Attempt.Failure(Err("invalid character appearance data; can not decode")) - } - ) + case _ => + Attempt.Failure(Err("invalid character appearance data; can not encode")) + }, + { + case CharacterAppearanceA( + BasicCharacterData(name, PlanetSideEmpire.NEUTRAL, _, _, _), + _, + _, + _, + _, + _, + _, + _, + _ + ) => + Attempt.failure(Err(s"character $name's faction can not declare as neutral")) + + case CharacterAppearanceA( + BasicCharacterData(name, faction, sex, head, v1), + data, + suit, + u5, + u6, + u7, + u8, + u9, + uA + ) => + if (faction != data.faction) { + Attempt.failure(Err(s"character $name's faction fields are mismatched, $faction != ${data.faction}")) + } else if (data.faction == PlanetSideEmpire.NEUTRAL) { + Attempt.successful( + CommonFieldData( + faction, + data.bops, + data.alternate, + data.v1, + data.v2, + data.jammered, + None, + data.v5, + PlanetSideGUID(0) + ) :: + name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil + ) + } else { + Attempt.successful( + data :: name :: suit :: u5 :: sex :: head :: v1 :: u6 :: u7 :: u8 :: u9 :: uA :: HNil + ) + } + + case _ => + Attempt.Failure(Err("invalid character appearance data; can not decode")) + } + ) /** * na @@ -347,71 +392,111 @@ object CharacterAppearanceData extends Marshallable[CharacterAppearanceData] { * @param name_padding na * @return na */ - def b_codec(alt_model : Boolean, name_padding : Int) : Codec[CharacterAppearanceB] = ( - ("unk0" | uint32L) :: //for outfit_name (below) to be visible in-game, this value should be non-zero - ("outfit_name" | PacketHelpers.encodedWideStringAligned(outfitNamePadding)) :: - ("outfit_logo" | uint8L) :: - ("unk1" | bool) :: //unknown - conditional(alt_model, "backpack" | bool) :: //alt_model flag adds this bit; see ps.c:line#1069587 - ("unk2" | bool) :: //requires alt_model flag (does NOT require health == 0) - ("unk3" | bool) :: //stream misalignment when set - ("unk4" | bool) :: //unknown - ("facingPitch" | Angular.codec_zero_centered) :: - ("facingYawUpper" | Angular.codec_zero_centered) :: - ("lfs" | uint2) :: - ("grenade_state" | GrenadeState.codec_2u) :: //note: bin10 and bin11 are neutral (bin00 is not defined) - ("is_cloaking" | bool) :: - ("unk5" | bool) :: //unknown - ("unk6" | bool) :: //stream misalignment when set - ("charging_pose" | bool) :: - ("unk7" | bool) :: //alternate charging pose? - optional(bool, "on_zipline" | zipline_codec) - ).exmap[CharacterAppearanceB] ( - { - case u0 :: outfit :: logo :: u1 :: bpack :: u2 :: u3 :: u4 :: facingPitch :: facingYawUpper :: lfs :: gstate :: cloaking :: u5 :: u6 :: charging :: u7 :: zipline :: HNil => - val lfsBool = if(lfs == 0) false else true - val bpackBool = bpack match { case Some(_) => alt_model ; case None => false } - Attempt.successful( - CharacterAppearanceB(u0, outfit, logo, u1, bpackBool, u2, u3, u4, facingPitch, facingYawUpper, lfsBool, gstate, cloaking, u5, u6, charging, u7, zipline)(alt_model, name_padding) - ) - }, - { - case CharacterAppearanceB(u0, outfit, logo, u1, bpack, u2, u3, u4, facingPitch, facingYawUpper, lfs, gstate, cloaking, u5, u6, charging, u7, zipline) => - val u0Long = if(u0 == 0 && outfit.nonEmpty) { - outfit.length.toLong - } - else { - u0 - } //TODO this is a kludge; unk0 must be (some) non-zero if outfit_name is defined - val (bpackOpt, zipOpt) = if(alt_model) { - val bpackOpt = if(bpack) { Some(true) } else { None } - (bpackOpt, zipline) - } - else { - (None, None) - } //alt_model must be set for either of the other two to be valid - val lfsInt = if(lfs) { 1 } else { 0 } - Attempt.successful( - u0Long :: outfit :: logo :: u1 :: bpackOpt :: u2 :: u3 :: u4 :: facingPitch :: facingYawUpper :: lfsInt :: gstate :: cloaking :: u5 :: u6 :: charging :: u7 :: zipOpt :: HNil - ) - } - ) + def b_codec(alt_model: Boolean, name_padding: Int): Codec[CharacterAppearanceB] = + ( + ("unk0" | uint32L) :: //for outfit_name (below) to be visible in-game, this value should be non-zero + ("outfit_name" | PacketHelpers.encodedWideStringAligned(outfitNamePadding)) :: + ("outfit_logo" | uint8L) :: + ("unk1" | bool) :: //unknown + conditional(alt_model, "backpack" | bool) :: //alt_model flag adds this bit; see ps.c:line#1069587 + ("unk2" | bool) :: //requires alt_model flag (does NOT require health == 0) + ("unk3" | bool) :: //stream misalignment when set + ("unk4" | bool) :: //unknown + ("facingPitch" | Angular.codec_zero_centered) :: + ("facingYawUpper" | Angular.codec_zero_centered) :: + ("lfs" | uint2) :: + ("grenade_state" | GrenadeState.codec_2u) :: //note: bin10 and bin11 are neutral (bin00 is not defined) + ("is_cloaking" | bool) :: + ("unk5" | bool) :: //unknown + ("unk6" | bool) :: //stream misalignment when set + ("charging_pose" | bool) :: + ("unk7" | bool) :: //alternate charging pose? + optional(bool, "on_zipline" | zipline_codec) + ).exmap[CharacterAppearanceB]( + { + case u0 :: outfit :: logo :: u1 :: bpack :: u2 :: u3 :: u4 :: facingPitch :: facingYawUpper :: lfs :: gstate :: cloaking :: u5 :: u6 :: charging :: u7 :: zipline :: HNil => + val lfsBool = if (lfs == 0) false else true + val bpackBool = bpack match { case Some(_) => alt_model; case None => false } + Attempt.successful( + CharacterAppearanceB( + u0, + outfit, + logo, + u1, + bpackBool, + u2, + u3, + u4, + facingPitch, + facingYawUpper, + lfsBool, + gstate, + cloaking, + u5, + u6, + charging, + u7, + zipline + )(alt_model, name_padding) + ) + }, + { + case CharacterAppearanceB( + u0, + outfit, + logo, + u1, + bpack, + u2, + u3, + u4, + facingPitch, + facingYawUpper, + lfs, + gstate, + cloaking, + u5, + u6, + charging, + u7, + zipline + ) => + val u0Long = if (u0 == 0 && outfit.nonEmpty) { + outfit.length.toLong + } else { + u0 + } //TODO this is a kludge; unk0 must be (some) non-zero if outfit_name is defined + val (bpackOpt, zipOpt) = if (alt_model) { + val bpackOpt = if (bpack) { Some(true) } + else { None } + (bpackOpt, zipline) + } else { + (None, None) + } //alt_model must be set for either of the other two to be valid + val lfsInt = if (lfs) { 1 } + else { 0 } + Attempt.successful( + u0Long :: outfit :: logo :: u1 :: bpackOpt :: u2 :: u3 :: u4 :: facingPitch :: facingYawUpper :: lfsInt :: gstate :: cloaking :: u5 :: u6 :: charging :: u7 :: zipOpt :: HNil + ) + } + ) - def codec(name_padding : Int) : Codec[CharacterAppearanceData] = ( - ("a" | a_codec(name_padding)) >>:~ { a => - ("b" | b_codec(a.data.alternate, name_padding)) :: - ("ribbons" | RibbonBars.codec) - } - ).xmap[CharacterAppearanceData] ( - { - case a :: b :: ribbons :: HNil => - CharacterAppearanceData(a, b, ribbons)(name_padding) - }, - { - case CharacterAppearanceData(a, b, ribbons) => - a :: b :: ribbons :: HNil - } - ) + def codec(name_padding: Int): Codec[CharacterAppearanceData] = + ( + ("a" | a_codec(name_padding)) >>:~ { a => + ("b" | b_codec(a.data.alternate, name_padding)) :: + ("ribbons" | RibbonBars.codec) + } + ).xmap[CharacterAppearanceData]( + { + case a :: b :: ribbons :: HNil => + CharacterAppearanceData(a, b, ribbons)(name_padding) + }, + { + case CharacterAppearanceData(a, b, ribbons) => + a :: b :: ribbons :: HNil + } + ) - implicit val codec : Codec[CharacterAppearanceData] = codec(0) + implicit val codec: Codec[CharacterAppearanceData] = codec(0) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterData.scala index 3a3fadb7..fd74f131 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CharacterData.scala @@ -16,11 +16,11 @@ import shapeless.{::, HNil} object ImplantEffects extends Enumeration { type Type = Value - val SurgeEffects = Value(9) + val SurgeEffects = Value(9) val PersonalShieldEffects = Value(5) - val DarklightEffects = Value(3) - val RegenEffects = Value(0) - val NoEffects = Value(1) + val DarklightEffects = Value(3) + val RegenEffects = Value(0) + val NoEffects = Value(1) implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } @@ -33,12 +33,12 @@ object ImplantEffects extends Enumeration { object UniformStyle extends Enumeration { type Type = Value - val Normal = Value(0) - val FirstUpgrade = Value(1) - val SecondUpgrade = Value(2) + val Normal = Value(0) + val FirstUpgrade = Value(1) + val SecondUpgrade = Value(2) val SecondUpgradeEx = Value(3) - val ThirdUpgrade = Value(4) - val ThirdUpgradeEx = Value(5) + val ThirdUpgrade = Value(4) + val ThirdUpgradeEx = Value(5) implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) } @@ -79,25 +79,31 @@ object UniformStyle extends Enumeration { * @param is_seated this player character is seated in a vehicle or mounted to some other object; * alternate format for data parsing applies */ -final case class CharacterData(health : Int, - armor : Int, - uniform_upgrade : UniformStyle.Value, - unk : Int, - command_rank : Int, - implant_effects : List[ImplantEffects.Value], - cosmetics : Option[Cosmetics]) - (is_backpack : Boolean, - is_seated : Boolean) extends ConstructorData { +final case class CharacterData( + health: Int, + armor: Int, + uniform_upgrade: UniformStyle.Value, + unk: Int, + command_rank: Int, + implant_effects: List[ImplantEffects.Value], + cosmetics: Option[Cosmetics] +)( + is_backpack: Boolean, + is_seated: Boolean +) extends ConstructorData { - override def bitsize : Long = { - val seatedSize = if(is_seated) { 0 } else { 16 } - val effectsSize : Long = implant_effects.length * 4L - val cosmeticsSize : Long = if(cosmetics.isDefined) { cosmetics.get.bitsize } else { 0L } + override def bitsize: Long = { + val seatedSize = if (is_seated) { 0 } + else { 16 } + val effectsSize: Long = implant_effects.length * 4L + val cosmeticsSize: Long = if (cosmetics.isDefined) { cosmetics.get.bitsize } + else { 0L } 11L + seatedSize + effectsSize + cosmeticsSize } } object CharacterData extends Marshallable[CharacterData] { + /** * An overloaded constructor for `CharacterData`. * @param health the amount of health the player has, as a percentage of a filled bar @@ -108,60 +114,73 @@ object CharacterData extends Marshallable[CharacterData] { * @param cosmetics optional decorative features that are added to the player's head model by console/chat commands * @return a `CharacterData` object */ - def apply(health : Int, armor : Int, uniform : UniformStyle.Value, cr : Int, implant_effects : List[ImplantEffects.Value], cosmetics : Option[Cosmetics]) : (Boolean,Boolean)=>CharacterData = + def apply( + health: Int, + armor: Int, + uniform: UniformStyle.Value, + cr: Int, + implant_effects: List[ImplantEffects.Value], + cosmetics: Option[Cosmetics] + ): (Boolean, Boolean) => CharacterData = CharacterData(health, armor, uniform, 0, cr, implant_effects, cosmetics) - def codec(is_backpack : Boolean) : Codec[CharacterData] = ( - ("health" | uint8L) :: //dead state when health == 0 - ("armor" | uint8L) :: - (("uniform_upgrade" | UniformStyle.codec) >>:~ { style => + def codec(is_backpack: Boolean): Codec[CharacterData] = + ( + ("health" | uint8L) :: //dead state when health == 0 + ("armor" | uint8L) :: + (("uniform_upgrade" | UniformStyle.codec) >>:~ { style => uint(3) :: //uniform_upgrade is actually interpreted as a 6u field, but the lower 3u seems to be discarded ("command_rank" | uintL(3)) :: listOfN(uint2, "implant_effects" | ImplantEffects.codec) :: - conditional(style.id > UniformStyle.SecondUpgrade.id,"cosmetics" | Cosmetics.codec) + conditional(style.id > UniformStyle.SecondUpgrade.id, "cosmetics" | Cosmetics.codec) }) - ).exmap[CharacterData] ( - { - case health :: armor :: uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil => - val newHealth = if(is_backpack) { 0 } else { health } - Attempt.Successful(CharacterData(newHealth, armor, uniform, unk, cr, implant_effects, cosmetics)(is_backpack, false)) + ).exmap[CharacterData]( + { + case health :: armor :: uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil => + val newHealth = if (is_backpack) { 0 } + else { health } + Attempt.Successful( + CharacterData(newHealth, armor, uniform, unk, cr, implant_effects, cosmetics)(is_backpack, false) + ) - case _ => - Attempt.Failure(Err("invalid character data; can not encode")) - }, - { - case CharacterData(health, armor, uniform, unk, cr, implant_effects, cosmetics) => - val newHealth = if(is_backpack) { 0 } else { health } - Attempt.Successful(newHealth :: armor :: uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil) + case _ => + Attempt.Failure(Err("invalid character data; can not encode")) + }, + { + case CharacterData(health, armor, uniform, unk, cr, implant_effects, cosmetics) => + val newHealth = if (is_backpack) { 0 } + else { health } + Attempt.Successful(newHealth :: armor :: uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil) - case _ => - Attempt.Failure(Err("invalid character data; can not decode")) - } - ) + case _ => + Attempt.Failure(Err("invalid character data; can not decode")) + } + ) - def codec_seated(is_backpack : Boolean) : Codec[CharacterData] = ( - ("uniform_upgrade" | UniformStyle.codec) >>:~ { style => - uint(3) :: //uniform_upgrade is actually interpreted as a 6u field, but the lower 3u seems to be discarded - ("command_rank" | uintL(3)) :: - listOfN(uint2, "implant_effects" | ImplantEffects.codec) :: - conditional(style.id > UniformStyle.SecondUpgrade.id, "cosmetics" | Cosmetics.codec) - } - ).exmap[CharacterData] ( - { - case uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil => - Attempt.Successful(new CharacterData(100, 0, uniform, unk, cr, implant_effects, cosmetics)(is_backpack, true)) + def codec_seated(is_backpack: Boolean): Codec[CharacterData] = + ( + ("uniform_upgrade" | UniformStyle.codec) >>:~ { style => + uint(3) :: //uniform_upgrade is actually interpreted as a 6u field, but the lower 3u seems to be discarded + ("command_rank" | uintL(3)) :: + listOfN(uint2, "implant_effects" | ImplantEffects.codec) :: + conditional(style.id > UniformStyle.SecondUpgrade.id, "cosmetics" | Cosmetics.codec) + } + ).exmap[CharacterData]( + { + case uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil => + Attempt.Successful(new CharacterData(100, 0, uniform, unk, cr, implant_effects, cosmetics)(is_backpack, true)) - case _ => - Attempt.Failure(Err("invalid character data; can not encode")) - }, - { - case CharacterData(_, _, uniform, unk, cr, implant_effects, cosmetics) => - Attempt.Successful(uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil) + case _ => + Attempt.Failure(Err("invalid character data; can not encode")) + }, + { + case CharacterData(_, _, uniform, unk, cr, implant_effects, cosmetics) => + Attempt.Successful(uniform :: unk :: cr :: implant_effects :: cosmetics :: HNil) - case _ => - Attempt.Failure(Err("invalid character data; can not decode")) - } - ) + case _ => + Attempt.Failure(Err("invalid character data; can not decode")) + } + ) - implicit val codec : Codec[CharacterData] = codec(false) + implicit val codec: Codec[CharacterData] = codec(false) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldData.scala index 63c4a3cc..88cb2027 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldData.scala @@ -7,14 +7,15 @@ import scodec.{Attempt, Codec, Err} import scodec.codecs._ import shapeless.{::, HNil} -final case class CommonFieldDataExtra(unk1 : Option[Int], unk2 : Boolean) extends StreamBitSize { - override def bitsize : Long = 17L +final case class CommonFieldDataExtra(unk1: Option[Int], unk2: Boolean) extends StreamBitSize { + override def bitsize: Long = 17L } object CommonFieldDataExtra { - def codec(unk1 : Boolean) : Codec[CommonFieldDataExtra] = ( - ("unk1" | conditional(unk1, uint16L)) :: //not sure what flags this field - ("unk2" | bool) + def codec(unk1: Boolean): Codec[CommonFieldDataExtra] = + ( + ("unk1" | conditional(unk1, uint16L)) :: //not sure what flags this field + ("unk2" | bool) ).as[CommonFieldDataExtra] } @@ -36,108 +37,126 @@ object CommonFieldDataExtra { * previously considered to flag as "jammered" * @param guid usually indicates another active game object that placed/leverages/[action]s this object */ -final case class CommonFieldData(faction : PlanetSideEmpire.Value, - bops : Boolean, - alternate : Boolean, - v1 : Boolean, - v2 : Option[CommonFieldDataExtra], - jammered : Boolean, - v4 : Option[Boolean], - v5 : Option[Int], - guid : PlanetSideGUID - ) extends ConstructorData { - override def bitsize : Long = { - val extraSize : Long = v2 match { +final case class CommonFieldData( + faction: PlanetSideEmpire.Value, + bops: Boolean, + alternate: Boolean, + v1: Boolean, + v2: Option[CommonFieldDataExtra], + jammered: Boolean, + v4: Option[Boolean], + v5: Option[Int], + guid: PlanetSideGUID +) extends ConstructorData { + override def bitsize: Long = { + val extraSize: Long = v2 match { case Some(v) => v.bitsize - case None => 0L + case None => 0L } val v4Size = v4 match { case Some(_) => 1L - case None => 0L + case None => 0L } val v5Size = v5 match { case Some(_) => 16L - case None => 0L + case None => 0L } 23L + extraSize + v4Size + v5Size } - def apply(flag : Boolean) : CommonFieldData = CommonFieldData(faction, bops, alternate, v1, v2, jammered, Some(flag), v5, guid) + def apply(flag: Boolean): CommonFieldData = + CommonFieldData(faction, bops, alternate, v1, v2, jammered, Some(flag), v5, guid) } object CommonFieldData extends Marshallable[CommonFieldData] { + /** * Overloaded constructors. * @return a `CommonFieldData` object */ - def apply() : CommonFieldData = + def apply(): CommonFieldData = CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)) - def apply(faction : PlanetSideEmpire.Value) : CommonFieldData = + def apply(faction: PlanetSideEmpire.Value): CommonFieldData = CommonFieldData(faction, false, false, false, None, false, None, None, PlanetSideGUID(0)) - def apply(faction : PlanetSideEmpire.Value, unk : Int) : CommonFieldData = - CommonFieldData(faction, false, false, unk>1, None, unk%1==1, None, None, PlanetSideGUID(0)) + def apply(faction: PlanetSideEmpire.Value, unk: Int): CommonFieldData = + CommonFieldData(faction, false, false, unk > 1, None, unk % 1 == 1, None, None, PlanetSideGUID(0)) - def apply(faction : PlanetSideEmpire.Value, unk : Int, player_guid : PlanetSideGUID) : CommonFieldData = - CommonFieldData(faction, false, false, unk>1, None, unk%1==1, None, None, player_guid) + def apply(faction: PlanetSideEmpire.Value, unk: Int, player_guid: PlanetSideGUID): CommonFieldData = + CommonFieldData(faction, false, false, unk > 1, None, unk % 1 == 1, None, None, player_guid) - def apply(faction : PlanetSideEmpire.Value, destroyed : Boolean, unk : Int) : CommonFieldData = - CommonFieldData(faction, false, destroyed, unk>1, None, unk%1==1, None, None, PlanetSideGUID(0)) + def apply(faction: PlanetSideEmpire.Value, destroyed: Boolean, unk: Int): CommonFieldData = + CommonFieldData(faction, false, destroyed, unk > 1, None, unk % 1 == 1, None, None, PlanetSideGUID(0)) - def apply(faction : PlanetSideEmpire.Value, destroyed : Boolean, unk : Int, player_guid : PlanetSideGUID) : CommonFieldData = - CommonFieldData(faction, false, destroyed, unk>1, None, unk%1==1, None, None, player_guid) + def apply( + faction: PlanetSideEmpire.Value, + destroyed: Boolean, + unk: Int, + player_guid: PlanetSideGUID + ): CommonFieldData = + CommonFieldData(faction, false, destroyed, unk > 1, None, unk % 1 == 1, None, None, player_guid) - def apply(faction : PlanetSideEmpire.Value, bops : Boolean, destroyed : Boolean, unk : Int, jammered : Boolean, player_guid : PlanetSideGUID) : CommonFieldData = { - val jammeredField = if(jammered) { Some(0) } else { None } - CommonFieldData(faction, bops, destroyed, unk>1, None, unk%1==1, None, jammeredField, player_guid) + def apply( + faction: PlanetSideEmpire.Value, + bops: Boolean, + destroyed: Boolean, + unk: Int, + jammered: Boolean, + player_guid: PlanetSideGUID + ): CommonFieldData = { + val jammeredField = if (jammered) { Some(0) } + else { None } + CommonFieldData(faction, bops, destroyed, unk > 1, None, unk % 1 == 1, None, jammeredField, player_guid) } - def codec(extra : Boolean) : Codec[CommonFieldData] = ( - ("faction" | PlanetSideEmpire.codec) :: - ("bops" | bool) :: - ("alternate" | bool) :: - ("v1" | bool) :: //the purpose of this bit changes depending on the previous bit - conditional(extra, "v2" | CommonFieldDataExtra.codec(unk1 = false)) :: - ("jammered" | bool) :: - optional(bool, "v5" | uint16L) :: - ("guid" | PlanetSideGUID.codec) - ).xmap[CommonFieldData] ( - { - case faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: player_guid :: HNil => - CommonFieldData(faction, bops, alternate, v1, v2, v3, None, v5, player_guid) - }, - { - case CommonFieldData(faction, bops, alternate, v1, v2, v3, _, v5, guid) => - faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: guid :: HNil - } - ) + def codec(extra: Boolean): Codec[CommonFieldData] = + ( + ("faction" | PlanetSideEmpire.codec) :: + ("bops" | bool) :: + ("alternate" | bool) :: + ("v1" | bool) :: //the purpose of this bit changes depending on the previous bit + conditional(extra, "v2" | CommonFieldDataExtra.codec(unk1 = false)) :: + ("jammered" | bool) :: + optional(bool, "v5" | uint16L) :: + ("guid" | PlanetSideGUID.codec) + ).xmap[CommonFieldData]( + { + case faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: player_guid :: HNil => + CommonFieldData(faction, bops, alternate, v1, v2, v3, None, v5, player_guid) + }, + { + case CommonFieldData(faction, bops, alternate, v1, v2, v3, _, v5, guid) => + faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: guid :: HNil + } + ) - implicit val codec : Codec[CommonFieldData] = codec(false) + implicit val codec: Codec[CommonFieldData] = codec(false) - def codec2(extra : Boolean) : Codec[CommonFieldData] = ( - ("faction" | PlanetSideEmpire.codec) :: - ("bops" | bool) :: - ("alternate" | bool) :: - ("v1" | bool) :: //though the code path differs depending on the previous bit, this one gets read one way or another - conditional(extra, "v2" | CommonFieldDataExtra.codec(unk1 = false)) :: - ("jammered" | bool) :: - optional(bool, "v5" | uint16L) :: - ("v4" | bool) :: - ("guid" | PlanetSideGUID.codec) - ).exmap[CommonFieldData] ( - { - case faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: v4 :: guid :: HNil => - Attempt.successful(CommonFieldData(faction, bops, alternate, v1, v2, v3, Some(v4), v5, guid)) - }, - { - case CommonFieldData(_, _, _, _, _, _, None, _, _) => - Attempt.Failure(Err("invalid CommonFieldData - expected a field to be defined, but it was 'None'")) + def codec2(extra: Boolean): Codec[CommonFieldData] = + ( + ("faction" | PlanetSideEmpire.codec) :: + ("bops" | bool) :: + ("alternate" | bool) :: + ("v1" | bool) :: //though the code path differs depending on the previous bit, this one gets read one way or another + conditional(extra, "v2" | CommonFieldDataExtra.codec(unk1 = false)) :: + ("jammered" | bool) :: + optional(bool, "v5" | uint16L) :: + ("v4" | bool) :: + ("guid" | PlanetSideGUID.codec) + ).exmap[CommonFieldData]( + { + case faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: v4 :: guid :: HNil => + Attempt.successful(CommonFieldData(faction, bops, alternate, v1, v2, v3, Some(v4), v5, guid)) + }, + { + case CommonFieldData(_, _, _, _, _, _, None, _, _) => + Attempt.Failure(Err("invalid CommonFieldData - expected a field to be defined, but it was 'None'")) - case CommonFieldData(faction, bops, alternate, v1, v2, v3, Some(v4), v5, player_guid) => - Attempt.successful(faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: v4 :: player_guid :: HNil) - } - ) + case CommonFieldData(faction, bops, alternate, v1, v2, v3, Some(v4), v5, player_guid) => + Attempt.successful(faction :: bops :: alternate :: v1 :: v2 :: v3 :: v5 :: v4 :: player_guid :: HNil) + } + ) - val codec2 : Codec[CommonFieldData] = codec2(false) + val codec2: Codec[CommonFieldData] = codec2(false) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldDataWithPlacement.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldDataWithPlacement.scala index 0f452cdd..e319c0c2 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldDataWithPlacement.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/CommonFieldDataWithPlacement.scala @@ -12,43 +12,60 @@ import scodec.codecs._ * @param pos the location, orientation, and potential velocity of the object * @param data the common fields */ -final case class CommonFieldDataWithPlacement(pos : PlacementData, - data : CommonFieldData - ) extends ConstructorData { - override def bitsize : Long = pos.bitsize + data.bitsize +final case class CommonFieldDataWithPlacement(pos: PlacementData, data: CommonFieldData) extends ConstructorData { + override def bitsize: Long = pos.bitsize + data.bitsize } object CommonFieldDataWithPlacement extends Marshallable[CommonFieldDataWithPlacement] { + /** * Overloaded constructors. * @return a `CommonFieldDataWithPlacement` object */ - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value) : CommonFieldDataWithPlacement = + def apply(pos: PlacementData, faction: PlanetSideEmpire.Value): CommonFieldDataWithPlacement = CommonFieldDataWithPlacement(pos, CommonFieldData(faction)) - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value, unk : Int) : CommonFieldDataWithPlacement = + def apply(pos: PlacementData, faction: PlanetSideEmpire.Value, unk: Int): CommonFieldDataWithPlacement = CommonFieldDataWithPlacement(pos, CommonFieldData(faction, unk)) - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value, unk : Int, player_guid : PlanetSideGUID) : CommonFieldDataWithPlacement = + def apply( + pos: PlacementData, + faction: PlanetSideEmpire.Value, + unk: Int, + player_guid: PlanetSideGUID + ): CommonFieldDataWithPlacement = CommonFieldDataWithPlacement(pos, CommonFieldData(faction, unk, player_guid)) - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value, destroyed : Boolean, unk : Int) : CommonFieldDataWithPlacement = + def apply( + pos: PlacementData, + faction: PlanetSideEmpire.Value, + destroyed: Boolean, + unk: Int + ): CommonFieldDataWithPlacement = CommonFieldDataWithPlacement(pos, CommonFieldData(faction, destroyed, unk)) - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value, destroyed : Boolean, unk : Int, player_guid : PlanetSideGUID) : CommonFieldDataWithPlacement = + def apply( + pos: PlacementData, + faction: PlanetSideEmpire.Value, + destroyed: Boolean, + unk: Int, + player_guid: PlanetSideGUID + ): CommonFieldDataWithPlacement = CommonFieldDataWithPlacement(pos, CommonFieldData(faction, destroyed, unk, player_guid)) - def codec(extra : Boolean) : Codec[CommonFieldDataWithPlacement] = ( - ("pos" | PlacementData.codec) :: - CommonFieldData.codec(extra) + def codec(extra: Boolean): Codec[CommonFieldDataWithPlacement] = + ( + ("pos" | PlacementData.codec) :: + CommonFieldData.codec(extra) ).as[CommonFieldDataWithPlacement] - implicit val codec : Codec[CommonFieldDataWithPlacement] = codec(false) + implicit val codec: Codec[CommonFieldDataWithPlacement] = codec(false) - def codec2(extra : Boolean) : Codec[CommonFieldDataWithPlacement] = ( - ("pos" | PlacementData.codec) :: - CommonFieldData.codec2(extra) + def codec2(extra: Boolean): Codec[CommonFieldDataWithPlacement] = + ( + ("pos" | PlacementData.codec) :: + CommonFieldData.codec2(extra) ).as[CommonFieldDataWithPlacement] - implicit val codec2 : Codec[CommonFieldDataWithPlacement] = codec2(false) + implicit val codec2: Codec[CommonFieldDataWithPlacement] = codec2(false) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/ConstructorData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/ConstructorData.scala index 108d68d4..ff945a51 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/ConstructorData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/ConstructorData.scala @@ -15,6 +15,7 @@ import scodec.{Attempt, Codec, Err} abstract class ConstructorData extends StreamBitSize object ConstructorData { + /** * Transform a `Codec[T]` for object type `T` into `ConstructorData`. * @param objCodec a `Codec` that satisfies the transformation `Codec[T] -> T` @@ -23,23 +24,21 @@ object ConstructorData { * @tparam T a subclass of `ConstructorData` that indicates what type the object is * @return `Codec[ConstructorData]` */ - def apply[T <: ConstructorData](objCodec : Codec[T], objType : String = "object") : Codec[ConstructorData] = - objCodec.exmap[ConstructorData] ( + def apply[T <: ConstructorData](objCodec: Codec[T], objType: String = "object"): Codec[ConstructorData] = + objCodec.exmap[ConstructorData]( x => { try { Attempt.successful(x.asInstanceOf[ConstructorData]) - } - catch { - case ex : Exception => + } catch { + case ex: Exception => Attempt.failure(Err(s"can not cast decode of $x to $objType - $ex")) } }, x => { try { Attempt.successful(x.asInstanceOf[T]) //why does this work? shouldn't type erasure be a problem? - } - catch { - case ex : Exception => + } catch { + case ex: Exception => Attempt.failure(Err(s"can not cast encode $x to $objType - $ex")) } } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/Cosmetics.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/Cosmetics.scala index 29b6ecd5..7523e7b1 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/Cosmetics.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/Cosmetics.scala @@ -17,10 +17,10 @@ import scodec.Codec */ object PersonalStyle extends Enumeration { val BrimmedCap = Value(1) - val Earpiece = Value(2) + val Earpiece = Value(2) val Sunglasses = Value(4) - val Beret = Value(8) - val NoHelmet = Value(16) + val Beret = Value(8) + val NoHelmet = Value(16) } /** @@ -35,14 +35,14 @@ object PersonalStyle extends Enumeration { * @see `UniformStyle` * @see `PersonalStyleFeatures` */ -final case class Cosmetics(pstyles : Int) extends StreamBitSize { - override def bitsize : Long = 5L +final case class Cosmetics(pstyles: Int) extends StreamBitSize { + override def bitsize: Long = 5L /** * Transform the accumulated bitwise cosmetic feature integer into a group of all valid cosmetic feature values. * @return a group of all valid cosmetic feature values */ - def Styles : Set[PersonalStyle.Value] = { + def Styles: Set[PersonalStyle.Value] = { (for { style <- PersonalStyle.values.toList if (pstyles & style.id) == style.id @@ -55,7 +55,7 @@ final case class Cosmetics(pstyles : Int) extends StreamBitSize { * @param pstyle the cosmetic feature value * @return a new `Cosmetics` object, potentially including the new cosmetic feature */ - def +(pstyle : PersonalStyle.Value) : Cosmetics = { + def +(pstyle: PersonalStyle.Value): Cosmetics = { Cosmetics(pstyles | pstyle.id) } @@ -65,7 +65,7 @@ final case class Cosmetics(pstyles : Int) extends StreamBitSize { * @param pstyle the cosmetic feature value * @return a new `Cosmetics` object, excluding the new cosmetic feature */ - def -(pstyle : PersonalStyle.Value) : Cosmetics = { + def -(pstyle: PersonalStyle.Value): Cosmetics = { Cosmetics(pstyles - (pstyles & pstyle.id)) } @@ -74,29 +74,30 @@ final case class Cosmetics(pstyles : Int) extends StreamBitSize { * @param pstyle the cosmetic feature value * @return `true`, if the feature is included; `false`, otherwise */ - def contains(pstyle : PersonalStyle.Value) : Boolean = (pstyles & pstyle.id) == pstyle.id + def contains(pstyle: PersonalStyle.Value): Boolean = (pstyles & pstyle.id) == pstyle.id } object Cosmetics { + /** * Overloaded constructor for `Cosmetics` that loads no option. * @return a `Cosmetics` object */ - def apply() : Cosmetics = Cosmetics(0) + def apply(): Cosmetics = Cosmetics(0) /** * Overloaded constructor for `Cosmetics` that loads a single option. * @param pstyle the cosmetic feature that will be valid * @return a `Cosmetics` object */ - def apply(pstyle : PersonalStyle.Value) : Cosmetics = Cosmetics(pstyle.id) + def apply(pstyle: PersonalStyle.Value): Cosmetics = Cosmetics(pstyle.id) /** * Overloaded constructor for `Cosmetics` that loads all options listed. * @param pstyle all of the cosmetic feature that will be valid * @return a `Cosmetics` object */ - def apply(pstyle : Set[PersonalStyle.Value]) : Cosmetics = { + def apply(pstyle: Set[PersonalStyle.Value]): Cosmetics = { Cosmetics(pstyle.foldLeft(0)(_ + _.id)) } @@ -109,13 +110,15 @@ object Cosmetics { * @param brimmed_cap player dons a cap * @return a `Cosmetics` object */ - def apply(no_helmet : Boolean, - beret : Boolean, - sunglasses : Boolean, - earpiece : Boolean, - brimmed_cap : Boolean) : Cosmetics = { + def apply( + no_helmet: Boolean, + beret: Boolean, + sunglasses: Boolean, + earpiece: Boolean, + brimmed_cap: Boolean + ): Cosmetics = { import scala.language.implicitConversions - implicit def bool2int(b : Boolean) : Int = if(b) 1 else 0 + implicit def bool2int(b: Boolean): Int = if (b) 1 else 0 Cosmetics( (no_helmet * 16) + (beret * 8) + @@ -125,5 +128,5 @@ object Cosmetics { ) } - implicit val codec : Codec[Cosmetics] = uint(5).hlist.as[Cosmetics] + implicit val codec: Codec[Cosmetics] = uint(5).hlist.as[Cosmetics] } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DestroyedVehicleData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DestroyedVehicleData.scala index 1069c89e..ae4165d6 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DestroyedVehicleData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DestroyedVehicleData.scala @@ -12,10 +12,10 @@ import scodec.Codec * @param pos where and how the object is oriented; * `pos.vel` existing is fine */ -final case class DestroyedVehicleData(pos : PlacementData) extends ConstructorData { - override def bitsize : Long = pos.bitsize +final case class DestroyedVehicleData(pos: PlacementData) extends ConstructorData { + override def bitsize: Long = pos.bitsize } object DestroyedVehicleData extends Marshallable[DestroyedVehicleData] { - implicit val codec : Codec[DestroyedVehicleData] = ("pos" | PlacementData.codec).as[DestroyedVehicleData] + implicit val codec: Codec[DestroyedVehicleData] = ("pos" | PlacementData.codec).as[DestroyedVehicleData] } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedAmmoBoxData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedAmmoBoxData.scala index 97eab193..ac7d7114 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedAmmoBoxData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedAmmoBoxData.scala @@ -19,16 +19,15 @@ import shapeless.{::, HNil} * @param magazine the number of rounds available * @see `DetailedWeaponData` */ -final case class DetailedAmmoBoxData(data : CommonFieldData, - magazine : Int - ) extends ConstructorData { - override def bitsize : Long = { +final case class DetailedAmmoBoxData(data: CommonFieldData, magazine: Int) extends ConstructorData { + override def bitsize: Long = { val dataSize = data.bitsize 17L + dataSize } } object DetailedAmmoBoxData extends Marshallable[DetailedAmmoBoxData] { + /** * An abbreviated constructor for creating `DetailedWeaponData` while masking use of `InternalSlot`. * @param cls the code for the type of object being constructed @@ -37,20 +36,21 @@ object DetailedAmmoBoxData extends Marshallable[DetailedAmmoBoxData] { * @param ammo the `DetailedAmmoBoxData` * @return an `InternalSlot` object that encapsulates `DetailedAmmoBoxData` */ - def apply(cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : DetailedAmmoBoxData) : InternalSlot = + def apply(cls: Int, guid: PlanetSideGUID, parentSlot: Int, ammo: DetailedAmmoBoxData): InternalSlot = new InternalSlot(cls, guid, parentSlot, ammo) - def apply(unk : Int, mag : Int) : DetailedAmmoBoxData = { + def apply(unk: Int, mag: Int): DetailedAmmoBoxData = { DetailedAmmoBoxData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, unk > 0, None, false, None, None, PlanetSideGUID(0)), mag + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, unk > 0, None, false, None, None, PlanetSideGUID(0)), + mag ) } - implicit val codec : Codec[DetailedAmmoBoxData] = ( - ("data" | CommonFieldData.codec) :: + implicit val codec: Codec[DetailedAmmoBoxData] = ( + ("data" | CommonFieldData.codec) :: ("magazine" | uint16L) :: bool - ).exmap[DetailedAmmoBoxData] ( + ).exmap[DetailedAmmoBoxData]( { case data :: mag :: false :: HNil => Attempt.successful(DetailedAmmoBoxData(data, mag)) @@ -60,7 +60,7 @@ object DetailedAmmoBoxData extends Marshallable[DetailedAmmoBoxData] { }, { case DetailedAmmoBoxData(data, mag) => - Attempt.successful(data :: mag :: false:: HNil) + Attempt.successful(data :: mag :: false :: HNil) } ) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCharacterData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCharacterData.scala index 8e8ee8a0..9522caef 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCharacterData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCharacterData.scala @@ -19,17 +19,16 @@ import scala.annotation.tailrec * technically, this is unconfirmed * @see `ImplantType` */ -final case class ImplantEntry(implant : ImplantType.Value, - initialization : Option[Int], - active : Boolean) extends StreamBitSize { - override def bitsize : Long = { - val timerSize = initialization match { case Some(_) => 8L ; case None => 1L } +final case class ImplantEntry(implant: ImplantType.Value, initialization: Option[Int], active: Boolean) + extends StreamBitSize { + override def bitsize: Long = { + val timerSize = initialization match { case Some(_) => 8L; case None => 1L } 9L + timerSize } } object ImplantEntry { - def apply(implant : ImplantType.Value, initialization : Option[Int]) : ImplantEntry = { + def apply(implant: ImplantType.Value, initialization: Option[Int]): ImplantEntry = { ImplantEntry(implant, initialization, active = false) } } @@ -39,9 +38,8 @@ object ImplantEntry { * @param unk1 na * @param unk2 na */ -final case class DCDExtra1(unk1 : String, - unk2 : Int) extends StreamBitSize { - override def bitsize : Long = 16L + StreamBitSize.stringBitSize(unk1) +final case class DCDExtra1(unk1: String, unk2: Int) extends StreamBitSize { + override def bitsize: Long = 16L + StreamBitSize.stringBitSize(unk1) } /** @@ -49,9 +47,8 @@ final case class DCDExtra1(unk1 : String, * @param unk1 an * @param unk2 na */ -final case class DCDExtra2(unk1 : Int, - unk2 : Int) extends StreamBitSize { - override def bitsize : Long = 13L +final case class DCDExtra2(unk1: Int, unk2: Int) extends StreamBitSize { + override def bitsize: Long = 13L } /** @@ -75,27 +72,29 @@ final case class DCDExtra2(unk1 : Int, * this field exists only when the player is wearing a mechanized assault exo-suit * @param certs the `List` of certifications */ -final case class DetailedCharacterA(bep : Long, - cep : Long, - unk1 : Long, - unk2 : Long, - unk3 : Long, - healthMax : Int, - health : Int, - unk4 : Boolean, - armor : Int, - unk5 : Long, - staminaMax : Int, - stamina : Int, - max_field : Option[Long], - unk6 : Int, - unk7 : Int, - unk8 : Long, - unk9 : List[Int], - certs : List[CertificationType.Value]) extends StreamBitSize { - override def bitsize : Long = { - val maxFieldSize = max_field match { case Some(_) => 32L ; case None => 0L } - val certSize : Long = certs.length * 8 +final case class DetailedCharacterA( + bep: Long, + cep: Long, + unk1: Long, + unk2: Long, + unk3: Long, + healthMax: Int, + health: Int, + unk4: Boolean, + armor: Int, + unk5: Long, + staminaMax: Int, + stamina: Int, + max_field: Option[Long], + unk6: Int, + unk7: Int, + unk8: Long, + unk9: List[Int], + certs: List[CertificationType.Value] +) extends StreamBitSize { + override def bitsize: Long = { + val maxFieldSize = max_field match { case Some(_) => 32L; case None => 0L } + val certSize: Long = certs.length * 8 428L + maxFieldSize + certSize } } @@ -115,61 +114,68 @@ final case class DetailedCharacterA(bep : Long, * they become available at battle rank 24; * these flags do not exist if they are not applicable */ -final case class DetailedCharacterB(unk1 : Option[Long], - implants : List[ImplantEntry], - unk2 : List[DCDExtra1], - unk3 : List[DCDExtra1], - firstTimeEvents : List[String], - tutorials : List[String], - unk4 : Long, - unk5 : Long, - unk6 : Long, - unk7 : Long, - unk8 : Long, - unk9 : Option[DCDExtra2], - unkA : List[Long], - unkB : List[String], - unkC : Boolean, - cosmetics : Option[Cosmetics]) - (bep : Long, - pad_length : Option[Int]) extends StreamBitSize { - override def bitsize : Long = { +final case class DetailedCharacterB( + unk1: Option[Long], + implants: List[ImplantEntry], + unk2: List[DCDExtra1], + unk3: List[DCDExtra1], + firstTimeEvents: List[String], + tutorials: List[String], + unk4: Long, + unk5: Long, + unk6: Long, + unk7: Long, + unk8: Long, + unk9: Option[DCDExtra2], + unkA: List[Long], + unkB: List[String], + unkC: Boolean, + cosmetics: Option[Cosmetics] +)( + bep: Long, + pad_length: Option[Int] +) extends StreamBitSize { + override def bitsize: Long = { //unk1 - val unk1Size = unk1 match { case Some(_) => 32L ; case None => 0L } + val unk1Size = unk1 match { case Some(_) => 32L; case None => 0L } //implant list - val implantSize : Long = implants.foldLeft(0L)(_ + _.bitsize) + val implantSize: Long = implants.foldLeft(0L)(_ + _.bitsize) //fte list - val eventListSize : Long = firstTimeEvents.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) + val eventListSize: Long = firstTimeEvents.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) //tutorial list - val tutorialListSize : Long = tutorials.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) - val unk2Len = unk2.size - val unk3Len = unk3.size - val unkAllLen = unk2Len + unk3Len - val unk2_3ListSize : Long = if(unk2Len > 0) { + val tutorialListSize: Long = tutorials.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) + val unk2Len = unk2.size + val unk3Len = unk3.size + val unkAllLen = unk2Len + unk3Len + val unk2_3ListSize: Long = if (unk2Len > 0) { unkAllLen * unk2.head.bitsize - } - else if(unk3Len > 0) { + } else if (unk3Len > 0) { unkAllLen * unk3.head.bitsize - } - else { + } else { 0L } //character is at least BR24 - val unk9Size : Long = if(unk9.isEmpty) { 0L } else { 13L } - val unkASize : Long = unkA.length * 32L - val unkBSize : Long = unkB.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) - val cosmeticsSize : Long = if(DetailedCharacterData.isBR24(bep)) { cosmetics.get.bitsize } else { 0L } + val unk9Size: Long = if (unk9.isEmpty) { 0L } + else { 13L } + val unkASize: Long = unkA.length * 32L + val unkBSize: Long = unkB.foldLeft(0L)(_ + StreamBitSize.stringBitSize(_)) + val cosmeticsSize: Long = if (DetailedCharacterData.isBR24(bep)) { cosmetics.get.bitsize } + else { 0L } - val paddingSize : Int = + val paddingSize: Int = DetailedCharacterData.paddingCalculations(pad_length, implants, Nil)(unk2Len) + /* unk2 */ - DetailedCharacterData.paddingCalculations(pad_length, implants, List(unk2))(unk3Len) + /* unk3 */ - DetailedCharacterData.paddingCalculations(pad_length, implants, List(unk3, unk2))(firstTimeEvents.length) + /* firstTimeEvents */ - DetailedCharacterData.paddingCalculations(pad_length, implants, List(firstTimeEvents, unk3, unk2))(tutorials.size) + /* tutorials */ - DetailedCharacterData.paddingCalculations( - DetailedCharacterData.displaceByUnk9(pad_length, unk9, 5), - implants, - List(DetailedCharacterData.optToList(unk9), tutorials, firstTimeEvents, unk3, unk2) - )(unkB.length) /* unkB */ + DetailedCharacterData.paddingCalculations(pad_length, implants, List(unk2))(unk3Len) + /* unk3 */ + DetailedCharacterData.paddingCalculations(pad_length, implants, List(unk3, unk2))( + firstTimeEvents.length + ) + /* firstTimeEvents */ + DetailedCharacterData.paddingCalculations(pad_length, implants, List(firstTimeEvents, unk3, unk2))( + tutorials.size + ) + /* tutorials */ + DetailedCharacterData.paddingCalculations( + DetailedCharacterData.displaceByUnk9(pad_length, unk9, 5), + implants, + List(DetailedCharacterData.optToList(unk9), tutorials, firstTimeEvents, unk3, unk2) + )(unkB.length) /* unkB */ 275L + unk1Size + implantSize + eventListSize + unk2_3ListSize + tutorialListSize + unk9Size + unkASize + unkBSize + cosmeticsSize + paddingSize } } @@ -185,46 +191,49 @@ final case class DetailedCharacterB(unk1 : Option[Long], * Additionally, a full inventory, as opposed to the initial five weapon slots. * @see `CharacterData` */ -final case class DetailedCharacterData(a : DetailedCharacterA, - b : DetailedCharacterB) - (pad_length : Option[Int]) extends ConstructorData { +final case class DetailedCharacterData(a: DetailedCharacterA, b: DetailedCharacterB)(pad_length: Option[Int]) + extends ConstructorData { - override def bitsize : Long = a.bitsize + b.bitsize + override def bitsize: Long = a.bitsize + b.bitsize } object DetailedCharacterData extends Marshallable[DetailedCharacterData] { - def apply(bep : Long, - cep : Long, - healthMax : Int, - health : Int, - armor : Int, - staminaMax : Int, - stamina : Int, - maxField : Option[Long], - certs : List[CertificationType.Value], - implants : List[ImplantEntry], - firstTimeEvents : List[String], - tutorials : List[String], - cosmetics : Option[Cosmetics]) : Option[Int]=>DetailedCharacterData = { + def apply( + bep: Long, + cep: Long, + healthMax: Int, + health: Int, + armor: Int, + staminaMax: Int, + stamina: Int, + maxField: Option[Long], + certs: List[CertificationType.Value], + implants: List[ImplantEntry], + firstTimeEvents: List[String], + tutorials: List[String], + cosmetics: Option[Cosmetics] + ): Option[Int] => DetailedCharacterData = { val a = DetailedCharacterA( bep, cep, 0L, 0L, 0L, - healthMax, health, + healthMax, + health, unk4 = false, armor, 0L, - staminaMax, stamina, + staminaMax, + stamina, maxField, 0, 0, 0L, - List(0,0,0,0,0,0), + List(0, 0, 0, 0, 0, 0), certs ) - val b : (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( + val b: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, implants, Nil, @@ -242,21 +251,21 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { unkC = false, cosmetics ) - pad_length : Option[Int] => DetailedCharacterData(a, b(a.bep, pad_length))(pad_length) + pad_length: Option[Int] => DetailedCharacterData(a, b(a.bep, pad_length))(pad_length) } /** * `Codec` for entries in the `List` of implants. */ - private val implant_entry_codec : Codec[ImplantEntry] = ( + private val implant_entry_codec: Codec[ImplantEntry] = ( ("implant" | uint8L) :: (bool >>:~ { guard => - newcodecs.binary_choice(guard, uint(1), uint8L).hlist - }) - ).xmap[ImplantEntry] ( + newcodecs.binary_choice(guard, uint(1), uint8L).hlist + }) + ).xmap[ImplantEntry]( { case implant :: true :: n :: HNil => //initialized (no timer), active/inactive? - val activeBool : Boolean = n != 0 + val activeBool: Boolean = n != 0 ImplantEntry(ImplantType(implant), None, activeBool) //TODO catch potential NoSuchElementException? case implant :: false :: extra :: HNil => //uninitialized (timer), inactive @@ -264,7 +273,8 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { }, { case ImplantEntry(implant, None, n) => //initialized (no timer), active/inactive? - val activeInt : Int = if(n) { 1 } else { 0 } + val activeInt: Int = if (n) { 1 } + else { 0 } implant.id :: true :: activeInt :: HNil case ImplantEntry(implant, Some(extra), _) => //uninitialized (timer), inactive @@ -278,17 +288,14 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @param bep battle experience points * @return the number of accessible implant slots */ - def numberOfImplantSlots(bep : Long) : Int = { - if(bep > 754370) { //BR18+ + def numberOfImplantSlots(bep: Long): Int = { + if (bep > 754370) { //BR18+ 3 - } - else if(bep > 197753) { //BR12+ + } else if (bep > 197753) { //BR12+ 2 - } - else if(bep > 29999) { //BR6+ + } else if (bep > 29999) { //BR6+ 1 - } - else { //BR1+ + } else { //BR1+ 0 } } @@ -297,45 +304,47 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * `Codec` for a `List` of `DCDExtra1` objects. * The first entry contains a padded `String` so it must be processed different from the remainder. */ - private def dcd_list_codec(padFunc : Long=>Int) : Codec[List[DCDExtra1]] = ( - uint8 >>:~ { size => - conditional(size > 0, dcd_extra1_codec(padFunc(size))) :: - PacketHelpers.listOfNSized(size - 1, dcd_extra1_codec(0)) - } - ).xmap[List[DCDExtra1]] ( - { - case _ :: Some(first) :: Nil :: HNil => - List(first) - case _ :: Some(first) :: rest :: HNil => - first +: rest - case _ :: None :: _ :: HNil => - List() - }, - { - case List() => - 0 :: None :: Nil :: HNil - case contents => - contents.length :: contents.headOption :: contents.tail :: HNil - } - ) + private def dcd_list_codec(padFunc: Long => Int): Codec[List[DCDExtra1]] = + ( + uint8 >>:~ { size => + conditional(size > 0, dcd_extra1_codec(padFunc(size))) :: + PacketHelpers.listOfNSized(size - 1, dcd_extra1_codec(0)) + } + ).xmap[List[DCDExtra1]]( + { + case _ :: Some(first) :: Nil :: HNil => + List(first) + case _ :: Some(first) :: rest :: HNil => + first +: rest + case _ :: None :: _ :: HNil => + List() + }, + { + case List() => + 0 :: None :: Nil :: HNil + case contents => + contents.length :: contents.headOption :: contents.tail :: HNil + } + ) /** * `Codec` for entries in the `List` of `DCDExtra1` objects. * The first entry's size of 80 characters is hard-set by the client. */ - private def dcd_extra1_codec(pad : Int) : Codec[DCDExtra1] = ( - ("unk1" | PacketHelpers.encodedStringAligned(pad)) :: - ("unk2" | uint16L) - ).xmap[DCDExtra1] ( - { - case unk1 :: unk2 :: HNil => - DCDExtra1(unk1, unk2) - }, - { - case DCDExtra1(unk1, unk2) => - unk1.slice(0, 80) :: unk2 :: HNil //max 80 characters - } - ) + private def dcd_extra1_codec(pad: Int): Codec[DCDExtra1] = + ( + ("unk1" | PacketHelpers.encodedStringAligned(pad)) :: + ("unk2" | uint16L) + ).xmap[DCDExtra1]( + { + case unk1 :: unk2 :: HNil => + DCDExtra1(unk1, unk2) + }, + { + case DCDExtra1(unk1, unk2) => + unk1.slice(0, 80) :: unk2 :: HNil //max 80 characters + } + ) /** * A common `Codec` for a `List` of `String` objects @@ -343,35 +352,36 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * The first entry contains a padded `String` so it must be processed different from the remainder. * @param padFunc a curried function awaiting the extracted length of the current `List` */ - private def eventsListCodec(padFunc : Long=>Int) : Codec[List[String]] = ( - uint32L >>:~ { size => - conditional(size > 0, PacketHelpers.encodedStringAligned(padFunc(size))) :: - PacketHelpers.listOfNSized(size - 1, PacketHelpers.encodedString) - } - ).xmap[List[String]] ( - { - case _ :: Some(first) :: Nil :: HNil => - List(first) - case _ :: Some(first) :: rest :: HNil => - first +: rest - case _ :: None :: _ :: HNil => - List() - }, - { - case List() => - 0 :: None :: Nil :: HNil - case contents => - contents.length :: contents.headOption :: contents.tail :: HNil - } - ) + private def eventsListCodec(padFunc: Long => Int): Codec[List[String]] = + ( + uint32L >>:~ { size => + conditional(size > 0, PacketHelpers.encodedStringAligned(padFunc(size))) :: + PacketHelpers.listOfNSized(size - 1, PacketHelpers.encodedString) + } + ).xmap[List[String]]( + { + case _ :: Some(first) :: Nil :: HNil => + List(first) + case _ :: Some(first) :: rest :: HNil => + first +: rest + case _ :: None :: _ :: HNil => + List() + }, + { + case List() => + 0 :: None :: Nil :: HNil + case contents => + contents.length :: contents.headOption :: contents.tail :: HNil + } + ) /** * `Codec` for a `DCDExtra2` object. */ - private val dcd_extra2_codec : Codec[DCDExtra2] = ( + private val dcd_extra2_codec: Codec[DCDExtra2] = ( uint(5) :: uint8L - ).as[DCDExtra2] + ).as[DCDExtra2] /** * `Codec` for a `List` of `String` objects. @@ -381,33 +391,34 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @see `paddingCalculations` * @param padFunc a curried function awaiting the extracted length of the current `List` and will count the padding bits */ - private def unkBCodec(padFunc : Long=>Int) : Codec[List[String]] = ( - uint16L >>:~ { size => - conditional(size > 0, PacketHelpers.encodedStringAligned(padFunc(size))) :: - PacketHelpers.listOfNSized(size - 1, PacketHelpers.encodedString) - } - ).xmap[List[String]] ( - { - case _ :: Some(first) :: Nil :: HNil => - List(first) - case _ :: Some(first) :: rest :: HNil => - first +: rest - case _ :: None :: _ :: HNil => - List() - }, - { - case List() => - 0 :: None :: Nil :: HNil - case contents => - contents.length :: contents.headOption :: contents.tail :: HNil - } - ) + private def unkBCodec(padFunc: Long => Int): Codec[List[String]] = + ( + uint16L >>:~ { size => + conditional(size > 0, PacketHelpers.encodedStringAligned(padFunc(size))) :: + PacketHelpers.listOfNSized(size - 1, PacketHelpers.encodedString) + } + ).xmap[List[String]]( + { + case _ :: Some(first) :: Nil :: HNil => + List(first) + case _ :: Some(first) :: rest :: HNil => + first +: rest + case _ :: None :: _ :: HNil => + List() + }, + { + case List() => + 0 :: None :: Nil :: HNil + case contents => + contents.length :: contents.headOption :: contents.tail :: HNil + } + ) /** * A `Codec[Boolean]` that parses a `1u` value according to a NOT truth table. * `0` is `true` and `1` is `false`. */ - private val isFalse : Codec[Boolean] = bool.xmap[Boolean] ( + private val isFalse: Codec[Boolean] = bool.xmap[Boolean]( value => !value, value => !value ) @@ -418,10 +429,11 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @return if defined, returns a `List` of the `Option` object's contents; * if undefined (`None`), returns an empty list */ - def optToList(opt : Option[Any]) : List[Any] = opt match { - case Some(o) => List(o) - case None => Nil - } + def optToList(opt: Option[Any]): List[Any] = + opt match { + case Some(o) => List(o) + case None => Nil + } /** * A very specific `Option` object addition function. @@ -431,12 +443,13 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @param value how much to add to `start` * @return the amount after testing */ - def displaceByUnk9(start : Option[Int], test : Option[Any], value : Int) : Option[Int] = test match { - case Some(_) => - Some(start.getOrElse(0) + value) - case None => - start - } + def displaceByUnk9(start: Option[Int], test: Option[Any], value: Int): Option[Int] = + test match { + case Some(_) => + Some(start.getOrElse(0) + value) + case None => + start + } /** * A `List` of bit distances between different sets of `String` objects in the `DetailedCharacterData` `Codec` @@ -449,7 +462,7 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * - `unk3`
* - `unk2` */ - private val displacementPerEntry : List[Int] = List(7, 0, 0, 0, 0) + private val displacementPerEntry: List[Int] = List(7, 0, 0, 0, 0) /** * A curried function to calculate a cumulative padding value @@ -463,7 +476,9 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @param currListLen the length of the current list * @return the padding value for the target list */ - def paddingCalculations(contextOffset : Option[Int], implants : List[ImplantEntry], prevLists : List[List[Any]])(currListLen : Long) : Int = { + def paddingCalculations(contextOffset: Option[Int], implants: List[ImplantEntry], prevLists: List[List[Any]])( + currListLen: Long + ): Int = { paddingCalculations(3, contextOffset, implants, prevLists)(currListLen) } @@ -481,35 +496,37 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @return the padding value for the target list; * a value clamped between 0 and 7 */ - def paddingCalculations(base : Int, contextOffset : Option[Int], implants : List[ImplantEntry], prevLists : List[List[Any]])(currListLen : Long) : Int = { - if(prevLists.length > displacementPerEntry.length) { + def paddingCalculations( + base: Int, + contextOffset: Option[Int], + implants: List[ImplantEntry], + prevLists: List[List[Any]] + )(currListLen: Long): Int = { + if (prevLists.length > displacementPerEntry.length) { throw new Exception("mismatched number of input lists compared to bit distances") - } - else if(currListLen > 0) { + } else if (currListLen > 0) { //displacement into next byte of the content field of the first relevant string without padding - val baseResult : Int = base + contextOffset.getOrElse(0) + implants.foldLeft(0L)(_ + _.bitsize).toInt - val displacementResult : Int = (if(prevLists.isEmpty) { - baseResult - } - else { - //isolate the displacements that are important - val sequentialEmptyLists : List[List[Any]] = prevLists.takeWhile(_.isEmpty) - val offsetSlice : List[Int] = displacementPerEntry.drop(displacementPerEntry.length - sequentialEmptyLists.length) - if(prevLists.length == sequentialEmptyLists.length) { //if all lists are empty, factor in the base displacement - baseResult + offsetSlice.sum - } - else { - offsetSlice.sum - } - }) % 8 - if(displacementResult != 0) { + val baseResult: Int = base + contextOffset.getOrElse(0) + implants.foldLeft(0L)(_ + _.bitsize).toInt + val displacementResult: Int = (if (prevLists.isEmpty) { + baseResult + } else { + //isolate the displacements that are important + val sequentialEmptyLists: List[List[Any]] = prevLists.takeWhile(_.isEmpty) + val offsetSlice: List[Int] = displacementPerEntry.drop( + displacementPerEntry.length - sequentialEmptyLists.length + ) + if (prevLists.length == sequentialEmptyLists.length) { //if all lists are empty, factor in the base displacement + baseResult + offsetSlice.sum + } else { + offsetSlice.sum + } + }) % 8 + if (displacementResult != 0) { 8 - displacementResult - } - else { + } else { 0 } - } - else { + } else { 0 //if the current list has no length, there's no need to pad it } } @@ -523,11 +540,10 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @return a fully-populated (or over-populated) `List` of implant slots * @see `ImplantEntry` */ - @tailrec private def recursiveEnsureImplantSlots(size : Int, list : List[ImplantEntry] = Nil) : List[ImplantEntry] = { - if(list.length >= size) { + @tailrec private def recursiveEnsureImplantSlots(size: Int, list: List[ImplantEntry] = Nil): List[ImplantEntry] = { + if (list.length >= size) { list - } - else { + } else { recursiveEnsureImplantSlots(size, list :+ ImplantEntry(ImplantType.None, None)) } } @@ -539,106 +555,154 @@ object DetailedCharacterData extends Marshallable[DetailedCharacterData] { * @param bep the battle experience points being compared * @return `true`, if the battle experience points are enough to be a player of the esteemed battle rank */ - def isBR24(bep : Long) : Boolean = bep > 2286230 + def isBR24(bep: Long): Boolean = bep > 2286230 - def a_codec(suit : ExoSuitType.Value) : Codec[DetailedCharacterA] = ( - ("bep" | uint32L) :: - ("cep" | uint32L) :: - ("unk1" | uint32L) :: - ("unk2" | uint32L) :: - ("unk3" | uint32L) :: - ("healthMax" | uint16L) :: - ("health" | uint16L) :: - ("unk4" | bool) :: - ("armor" | uint16L) :: - ("unk5" | uint32) :: //endianness? - ("staminaMax" | uint16L) :: - ("stamina" | uint16L) :: - conditional(suit == ExoSuitType.MAX, uint32L) :: - ("unk6" | uint16L) :: - ("unk7" | uint(3)) :: - ("unk8" | uint32L) :: - ("unk9" | PacketHelpers.listOfNSized(6, uint16L)) :: //always length of 6 - ("certs" | listOfN(uint8L, CertificationType.codec)) - ).exmap[DetailedCharacterA] ( - { - case bep :: cep :: u1 :: u2 :: u3 :: healthMax :: health :: u4 :: armor :: u5 :: staminaMax :: stamina :: max :: u6 :: u7 :: u8 :: u9 :: certs :: HNil => - Attempt.successful(DetailedCharacterA(bep, cep, u1, u2, u3, healthMax, health, u4, armor, u5, staminaMax, stamina, max, u6, u7, u8, u9, certs)) - }, - { - case DetailedCharacterA(bep, cep, u1, u2, u3, healthMax, health, u4, armor, u5, staminaMax, stamina, max, u6, u7, u8, u9, certs) => - Attempt.successful( - bep :: cep :: u1 :: u2 :: u3 :: healthMax :: health :: u4 :: armor :: u5 :: staminaMax :: stamina :: max :: u6 :: u7 :: u8 :: u9 :: certs :: HNil - ) - } - ) + def a_codec(suit: ExoSuitType.Value): Codec[DetailedCharacterA] = + ( + ("bep" | uint32L) :: + ("cep" | uint32L) :: + ("unk1" | uint32L) :: + ("unk2" | uint32L) :: + ("unk3" | uint32L) :: + ("healthMax" | uint16L) :: + ("health" | uint16L) :: + ("unk4" | bool) :: + ("armor" | uint16L) :: + ("unk5" | uint32) :: //endianness? + ("staminaMax" | uint16L) :: + ("stamina" | uint16L) :: + conditional(suit == ExoSuitType.MAX, uint32L) :: + ("unk6" | uint16L) :: + ("unk7" | uint(3)) :: + ("unk8" | uint32L) :: + ("unk9" | PacketHelpers.listOfNSized(6, uint16L)) :: //always length of 6 + ("certs" | listOfN(uint8L, CertificationType.codec)) + ).exmap[DetailedCharacterA]( + { + case bep :: cep :: u1 :: u2 :: u3 :: healthMax :: health :: u4 :: armor :: u5 :: staminaMax :: stamina :: max :: u6 :: u7 :: u8 :: u9 :: certs :: HNil => + Attempt.successful( + DetailedCharacterA( + bep, + cep, + u1, + u2, + u3, + healthMax, + health, + u4, + armor, + u5, + staminaMax, + stamina, + max, + u6, + u7, + u8, + u9, + certs + ) + ) + }, + { + case DetailedCharacterA( + bep, + cep, + u1, + u2, + u3, + healthMax, + health, + u4, + armor, + u5, + staminaMax, + stamina, + max, + u6, + u7, + u8, + u9, + certs + ) => + Attempt.successful( + bep :: cep :: u1 :: u2 :: u3 :: healthMax :: health :: u4 :: armor :: u5 :: staminaMax :: stamina :: max :: u6 :: u7 :: u8 :: u9 :: certs :: HNil + ) + } + ) - def b_codec(bep : Long, pad_length : Option[Int]) : Codec[DetailedCharacterB] = ( - optional(bool, "unk1" | uint32L) :: - (("implants" | PacketHelpers.listOfNSized(numberOfImplantSlots(bep), implant_entry_codec)) >>:~ { implants => + def b_codec(bep: Long, pad_length: Option[Int]): Codec[DetailedCharacterB] = + ( + optional(bool, "unk1" | uint32L) :: + (("implants" | PacketHelpers.listOfNSized(numberOfImplantSlots(bep), implant_entry_codec)) >>:~ { implants => ("unk2" | dcd_list_codec(paddingCalculations(pad_length, implants, Nil))) >>:~ { unk2 => ("unk3" | dcd_list_codec(paddingCalculations(pad_length, implants, List(unk2)))) >>:~ { unk3 => - ("firstTimeEvents" | eventsListCodec(paddingCalculations(pad_length, implants, List(unk3, unk2)))) >>:~ { fte => - ("tutorials" | eventsListCodec(paddingCalculations(pad_length, implants, List(fte, unk3, unk2)))) >>:~ { tut => - ("unk4" | uint32L) :: - ("unk5" | uint32L) :: - ("unk6" | uint32L) :: - ("unk7" | uint32L) :: - ("unk8" | uint32L) :: - (optional(isFalse, "unk9" | dcd_extra2_codec) >>:~ { unk9 => - ("unkA" | listOfN(uint16L, uint32L)) :: - ("unkB" | unkBCodec( - paddingCalculations( - displaceByUnk9(pad_length, unk9, 5), - implants, - List(optToList(unk9), tut, fte, unk3, unk2) - ) - )) :: - ("unkC" | bool) :: - conditional(isBR24(bep), "cosmetics" | Cosmetics.codec) - }) - } + ("firstTimeEvents" | eventsListCodec(paddingCalculations(pad_length, implants, List(unk3, unk2)))) >>:~ { + fte => + ("tutorials" | eventsListCodec(paddingCalculations(pad_length, implants, List(fte, unk3, unk2)))) >>:~ { + tut => + ("unk4" | uint32L) :: + ("unk5" | uint32L) :: + ("unk6" | uint32L) :: + ("unk7" | uint32L) :: + ("unk8" | uint32L) :: + (optional(isFalse, "unk9" | dcd_extra2_codec) >>:~ { unk9 => + ("unkA" | listOfN(uint16L, uint32L)) :: + ("unkB" | unkBCodec( + paddingCalculations( + displaceByUnk9(pad_length, unk9, 5), + implants, + List(optToList(unk9), tut, fte, unk3, unk2) + ) + )) :: + ("unkC" | bool) :: + conditional(isBR24(bep), "cosmetics" | Cosmetics.codec) + }) + } } } } }) - ).exmap[DetailedCharacterB] ( - { - case u1 :: implants :: u2 :: u3 :: fte :: tut :: u4 :: u5 :: u6 :: u7 :: u8 :: u9 :: uA :: uB :: uC :: cosmetics :: HNil => - Attempt.successful( - DetailedCharacterB(u1, implants, u2, u3, fte, tut, u4, u5, u6, u7, u8, u9, uA, uB, uC, cosmetics)(bep, pad_length) - ) - }, - { - case DetailedCharacterB(u1, implants, u2, u3, fte, tut, u4, u5, u6, u7, u8, u9, uA, uB, uC, cosmetics) => - val implantCapacity : Int = numberOfImplantSlots(bep) - val implantList = if(implants.length > implantCapacity) { - implants.slice(0, implantCapacity) - } - else { - recursiveEnsureImplantSlots(implantCapacity, implants) - } - val cos : Option[Cosmetics] = if(isBR24(bep)) { cosmetics } else { None } - Attempt.successful( - u1 :: implantList :: u2 :: u3 :: fte :: tut :: u4 :: u5 :: u6 :: u7 :: u8 :: u9 :: uA :: uB :: uC :: cos :: HNil - ) - } - ) + ).exmap[DetailedCharacterB]( + { + case u1 :: implants :: u2 :: u3 :: fte :: tut :: u4 :: u5 :: u6 :: u7 :: u8 :: u9 :: uA :: uB :: uC :: cosmetics :: HNil => + Attempt.successful( + DetailedCharacterB(u1, implants, u2, u3, fte, tut, u4, u5, u6, u7, u8, u9, uA, uB, uC, cosmetics)( + bep, + pad_length + ) + ) + }, + { + case DetailedCharacterB(u1, implants, u2, u3, fte, tut, u4, u5, u6, u7, u8, u9, uA, uB, uC, cosmetics) => + val implantCapacity: Int = numberOfImplantSlots(bep) + val implantList = if (implants.length > implantCapacity) { + implants.slice(0, implantCapacity) + } else { + recursiveEnsureImplantSlots(implantCapacity, implants) + } + val cos: Option[Cosmetics] = if (isBR24(bep)) { cosmetics } + else { None } + Attempt.successful( + u1 :: implantList :: u2 :: u3 :: fte :: tut :: u4 :: u5 :: u6 :: u7 :: u8 :: u9 :: uA :: uB :: uC :: cos :: HNil + ) + } + ) - def codec(suit : ExoSuitType.Value, pad_length : Option[Int]) : Codec[DetailedCharacterData] = ( - ("a" | a_codec(suit)) >>:~ { a => - ("b" | b_codec(a.bep, pad_length)).hlist - } - ).exmap[DetailedCharacterData] ( - { - case a :: b :: HNil => - Attempt.successful(DetailedCharacterData(a, b)(pad_length)) - }, - { - case DetailedCharacterData(a, b) => - Attempt.successful(a :: b :: HNil) - } - ) + def codec(suit: ExoSuitType.Value, pad_length: Option[Int]): Codec[DetailedCharacterData] = + ( + ("a" | a_codec(suit)) >>:~ { a => + ("b" | b_codec(a.bep, pad_length)).hlist + } + ).exmap[DetailedCharacterData]( + { + case a :: b :: HNil => + Attempt.successful(DetailedCharacterData(a, b)(pad_length)) + }, + { + case DetailedCharacterData(a, b) => + Attempt.successful(a :: b :: HNil) + } + ) - implicit val codec : Codec[DetailedCharacterData] = codec(ExoSuitType.Standard, None) + implicit val codec: Codec[DetailedCharacterData] = codec(ExoSuitType.Standard, None) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCommandDetonaterData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCommandDetonaterData.scala index 7e50e19d..bd2dbdb7 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCommandDetonaterData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedCommandDetonaterData.scala @@ -9,20 +9,20 @@ import shapeless.{::, HNil} /** * A representation of the command uplink device. */ -final case class DetailedCommandDetonaterData(data : CommonFieldData) extends ConstructorData { - override def bitsize : Long = { +final case class DetailedCommandDetonaterData(data: CommonFieldData) extends ConstructorData { + override def bitsize: Long = { val dataSize = data.bitsize 28L + dataSize } } object DetailedCommandDetonaterData extends Marshallable[DetailedCommandDetonaterData] { - implicit val codec : Codec[DetailedCommandDetonaterData] = ( + implicit val codec: Codec[DetailedCommandDetonaterData] = ( ("data" | CommonFieldData.codec) :: uint8 :: uint16 :: uint4 - ).exmap[DetailedCommandDetonaterData] ( + ).exmap[DetailedCommandDetonaterData]( { case data :: 1 :: 0 :: 4 :: HNil => Attempt.successful(DetailedCommandDetonaterData(data)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedConstructionToolData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedConstructionToolData.scala index b95b1cee..7413d8df 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedConstructionToolData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedConstructionToolData.scala @@ -11,20 +11,20 @@ import shapeless.{::, HNil} * `DetailedBoomerTriggerData` - `data.faction` can be `NEUTRAL`, `data.unk1` is `true` * `DetailedTelepadData` - `data.faction` can be `NEUTRAL`, `data.jammered` is the router's GUID */ -final case class DetailedConstructionToolData(data : CommonFieldData, mode : Int) extends ConstructorData { - override def bitsize : Long = 28L + data.bitsize +final case class DetailedConstructionToolData(data: CommonFieldData, mode: Int) extends ConstructorData { + override def bitsize: Long = 28L + data.bitsize } object DetailedConstructionToolData extends Marshallable[DetailedConstructionToolData] { - def apply(data : CommonFieldData) : DetailedConstructionToolData = DetailedConstructionToolData(data, 0) + def apply(data: CommonFieldData): DetailedConstructionToolData = DetailedConstructionToolData(data, 0) - implicit val codec : Codec[DetailedConstructionToolData] = ( + implicit val codec: Codec[DetailedConstructionToolData] = ( ("data" | CommonFieldData.codec(false)) :: uint8 :: ("mode" | uint16) :: uint2 :: uint2 - ).exmap[DetailedConstructionToolData] ( + ).exmap[DetailedConstructionToolData]( { case data :: 1 :: mode :: 1 :: _ :: HNil => Attempt.successful(DetailedConstructionToolData(data, mode)) @@ -37,4 +37,3 @@ object DetailedConstructionToolData extends Marshallable[DetailedConstructionToo } ) } - diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala index 0155f7a1..b3f9c35f 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala @@ -17,23 +17,24 @@ import shapeless.{::, HNil} * @param data na * @param inventory the items in this inventory */ -final case class DetailedLockerContainerData(data : CommonFieldData, - inventory : Option[InventoryData] - ) extends ConstructorData { - override def bitsize : Long = { - val base : Long = 40L - val invSize : Long = if(inventory.isDefined) { inventory.get.bitsize } else { 0L } +final case class DetailedLockerContainerData(data: CommonFieldData, inventory: Option[InventoryData]) + extends ConstructorData { + override def bitsize: Long = { + val base: Long = 40L + val invSize: Long = if (inventory.isDefined) { inventory.get.bitsize } + else { 0L } base + invSize } } object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerData] { + /** * Overloaded constructor for creating `DetailedLockerContainerData` without a list of contents. * @param unk na * @return a `DetailedLockerContainerData` object */ - def apply(unk : Int) : DetailedLockerContainerData = + def apply(unk: Int): DetailedLockerContainerData = new DetailedLockerContainerData(CommonFieldData(PlanetSideEmpire.NEUTRAL, unk), None) /** @@ -42,7 +43,7 @@ object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerD * @param inventory the items in the inventory * @return a `DetailedLockerContainerData` object */ - def apply(unk : Int, inventory : List[InternalSlot]) : DetailedLockerContainerData = + def apply(unk: Int, inventory: List[InternalSlot]): DetailedLockerContainerData = new DetailedLockerContainerData(CommonFieldData(PlanetSideEmpire.NEUTRAL, unk), Some(InventoryData(inventory))) /** @@ -53,14 +54,14 @@ object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerD * @param locker the `DetailedLockerContainerData` * @return an `InternalSlot` object that encapsulates `DetailedLockerContainerData` */ - def apply(cls : Int, guid : PlanetSideGUID, parentSlot : Int, locker : DetailedLockerContainerData) : InternalSlot = + def apply(cls: Int, guid: PlanetSideGUID, parentSlot: Int, locker: DetailedLockerContainerData): InternalSlot = new InternalSlot(cls, guid, parentSlot, locker) - implicit val codec : Codec[DetailedLockerContainerData] = ( + implicit val codec: Codec[DetailedLockerContainerData] = ( ("data" | CommonFieldData.codec) :: uint16L :: //always 1 optional(bool, InventoryData.codec_detailed) - ).exmap[DetailedLockerContainerData] ( + ).exmap[DetailedLockerContainerData]( { case data :: 1 :: None :: HNil => Attempt.successful(DetailedLockerContainerData(data, None)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedPlayerData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedPlayerData.scala index e4788bb5..3365ce34 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedPlayerData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedPlayerData.scala @@ -32,23 +32,28 @@ import shapeless.{::, HNil} * @param inventory the player's full or partial (holsters-only) inventory * @param drawn_slot the holster that is depicted as exposed, or "drawn" */ -final case class DetailedPlayerData(pos : Option[PlacementData], - basic_appearance : CharacterAppearanceData, - character_data : DetailedCharacterData, - inventory : Option[InventoryData], - drawn_slot : DrawnSlot.Value) - (position_defined : Boolean) extends ConstructorData { - override def bitsize : Long = { +final case class DetailedPlayerData( + pos: Option[PlacementData], + basic_appearance: CharacterAppearanceData, + character_data: DetailedCharacterData, + inventory: Option[InventoryData], + drawn_slot: DrawnSlot.Value +)(position_defined: Boolean) + extends ConstructorData { + override def bitsize: Long = { //factor guard bool values into the base size, not its corresponding optional field - val posSize : Long = if(pos.isDefined) { pos.get.bitsize } else { 0L } - val appSize : Long = basic_appearance.bitsize - val charSize = character_data.bitsize - val inventorySize : Long = if(inventory.isDefined) { inventory.get.bitsize } else { 0L } + val posSize: Long = if (pos.isDefined) { pos.get.bitsize } + else { 0L } + val appSize: Long = basic_appearance.bitsize + val charSize = character_data.bitsize + val inventorySize: Long = if (inventory.isDefined) { inventory.get.bitsize } + else { 0L } 5L + posSize + appSize + charSize + inventorySize } } object DetailedPlayerData extends Marshallable[DetailedPlayerData] { + /** * Overloaded constructor that ignores the coordinate information but includes the inventory. * It passes information between the three major divisions for the purposes of offset calculations. @@ -60,7 +65,12 @@ object DetailedPlayerData extends Marshallable[DetailedPlayerData] { * technically, always `DrawnSlot.None`, but the field is preserved to maintain similarity * @return a `DetailedPlayerData` object */ - def apply(basic_appearance : Int=>CharacterAppearanceData, character_data : Option[Int]=>DetailedCharacterData, inventory : InventoryData, drawn_slot : DrawnSlot.Value) : DetailedPlayerData = { + def apply( + basic_appearance: Int => CharacterAppearanceData, + character_data: Option[Int] => DetailedCharacterData, + inventory: InventoryData, + drawn_slot: DrawnSlot.Value + ): DetailedPlayerData = { val appearance = basic_appearance(5) DetailedPlayerData(None, appearance, character_data(appearance.altModelBit), Some(inventory), drawn_slot)(false) } @@ -75,7 +85,11 @@ object DetailedPlayerData extends Marshallable[DetailedPlayerData] { * technically, always `DrawnSlot.None`, but the field is preserved to maintain similarity * @return a `DetailedPlayerData` object */ - def apply(basic_appearance : Int=>CharacterAppearanceData, character_data : Option[Int]=>DetailedCharacterData, drawn_slot : DrawnSlot.Value) : DetailedPlayerData = { + def apply( + basic_appearance: Int => CharacterAppearanceData, + character_data: Option[Int] => DetailedCharacterData, + drawn_slot: DrawnSlot.Value + ): DetailedPlayerData = { val appearance = basic_appearance(5) DetailedPlayerData(None, appearance, character_data(appearance.altModelBit), None, drawn_slot)(false) } @@ -91,7 +105,13 @@ object DetailedPlayerData extends Marshallable[DetailedPlayerData] { * @param drawn_slot the holster that is depicted as exposed, or "drawn" * @return a `DetailedPlayerData` object */ - def apply(pos : PlacementData, basic_appearance : Int=>CharacterAppearanceData, character_data : Option[Int]=>DetailedCharacterData, inventory : InventoryData, drawn_slot : DrawnSlot.Value) : DetailedPlayerData = { + def apply( + pos: PlacementData, + basic_appearance: Int => CharacterAppearanceData, + character_data: Option[Int] => DetailedCharacterData, + inventory: InventoryData, + drawn_slot: DrawnSlot.Value + ): DetailedPlayerData = { val appearance = basic_appearance(PlayerData.PaddingOffset(Some(pos))) DetailedPlayerData(Some(pos), appearance, character_data(appearance.altModelBit), Some(inventory), drawn_slot)(true) } @@ -106,29 +126,34 @@ object DetailedPlayerData extends Marshallable[DetailedPlayerData] { * @param drawn_slot the holster that is depicted as exposed, or "drawn" * @return a `DetailedPlayerData` object */ - def apply(pos : PlacementData, basic_appearance : Int=>CharacterAppearanceData, character_data : Option[Int]=>DetailedCharacterData, drawn_slot : DrawnSlot.Value) : DetailedPlayerData = { + def apply( + pos: PlacementData, + basic_appearance: Int => CharacterAppearanceData, + character_data: Option[Int] => DetailedCharacterData, + drawn_slot: DrawnSlot.Value + ): DetailedPlayerData = { val appearance = basic_appearance(PlayerData.PaddingOffset(Some(pos))) DetailedPlayerData(Some(pos), appearance, character_data(appearance.altModelBit), None, drawn_slot)(true) } - def codec(position_defined : Boolean) : Codec[DetailedPlayerData] = ( - conditional(position_defined, "pos" | PlacementData.codec) >>:~ { pos => + def codec(position_defined: Boolean): Codec[DetailedPlayerData] = + (conditional(position_defined, "pos" | PlacementData.codec) >>:~ { pos => ("basic_appearance" | CharacterAppearanceData.codec(PlayerData.PaddingOffset(pos))) >>:~ { app => ("character_data" | DetailedCharacterData.codec(app.a.exosuit, app.altModelBit)) :: optional(bool, "inventory" | InventoryData.codec_detailed) :: ("drawn_slot" | DrawnSlot.codec) :: bool //usually false } - }).xmap[DetailedPlayerData] ( - { - case pos :: app :: data :: inv :: hand :: _ :: HNil => - DetailedPlayerData(pos, app, data, inv, hand)(pos.isDefined) - }, - { - case DetailedPlayerData(pos, app, data, inv, hand) => - pos :: app :: data :: inv :: hand :: false :: HNil - } - ) + }).xmap[DetailedPlayerData]( + { + case pos :: app :: data :: inv :: hand :: _ :: HNil => + DetailedPlayerData(pos, app, data, inv, hand)(pos.isDefined) + }, + { + case DetailedPlayerData(pos, app, data, inv, hand) => + pos :: app :: data :: inv :: hand :: false :: HNil + } + ) - implicit val codec : Codec[DetailedPlayerData] = codec(false) + implicit val codec: Codec[DetailedPlayerData] = codec(false) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedREKData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedREKData.scala index 583e320a..08d0ffcf 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedREKData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedREKData.scala @@ -14,24 +14,22 @@ import shapeless.{::, HNil} * @param data na * @param unk na */ -final case class DetailedREKData(data : CommonFieldData, - unk : Int = 0 - ) extends ConstructorData { - override def bitsize : Long = { +final case class DetailedREKData(data: CommonFieldData, unk: Int = 0) extends ConstructorData { + override def bitsize: Long = { val dataSize = data.bitsize 43L + dataSize } } object DetailedREKData extends Marshallable[DetailedREKData] { - implicit val codec : Codec[DetailedREKData] = ( + implicit val codec: Codec[DetailedREKData] = ( ("data" | CommonFieldData.codec2) :: uint8 :: uint16L :: uint4L :: ("unk" | uint8) :: uint(7) - ).exmap[DetailedREKData] ( + ).exmap[DetailedREKData]( { case data :: 2 :: 0 :: 8 :: unk :: 0 :: HNil => Attempt.successful(DetailedREKData(data, unk)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedWeaponData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedWeaponData.scala index 4b1dc415..d84ae205 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedWeaponData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedWeaponData.scala @@ -20,19 +20,21 @@ import shapeless.{::, HNil} * @see `DetailedAmmoBoxData` * @see `WeaponData` */ -final case class DetailedWeaponData(data : CommonFieldData, - fire_mode : Int, - ammo : List[InternalSlot], - unk : Boolean = false - ) extends ConstructorData { - override def bitsize : Long = { - val dataSize = data.bitsize - val ammoSize : Long = ammo.foldLeft(0L)(_ + _.bitsize) +final case class DetailedWeaponData( + data: CommonFieldData, + fire_mode: Int, + ammo: List[InternalSlot], + unk: Boolean = false +) extends ConstructorData { + override def bitsize: Long = { + val dataSize = data.bitsize + val ammoSize: Long = ammo.foldLeft(0L)(_ + _.bitsize) 38L + dataSize + ammoSize //28 + 10 (from InventoryData) + ammo } } object DetailedWeaponData extends Marshallable[DetailedWeaponData] { + /** * Overloaded constructor for creating `DetailedWeaponData` while masking use of `InternalSlot` for its `DetailedAmmoBoxData`. * @param unk1 na @@ -43,7 +45,14 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { * @param ammo the constructor data for the ammunition * @return a `DetailedWeaponData` object */ - def apply(unk1 : Int, unk2 : Int, cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : DetailedAmmoBoxData) : DetailedWeaponData = { + def apply( + unk1: Int, + unk2: Int, + cls: Int, + guid: PlanetSideGUID, + parentSlot: Int, + ammo: DetailedAmmoBoxData + ): DetailedWeaponData = { DetailedWeaponData( CommonFieldData( PlanetSideEmpire(unk1 & 3), @@ -61,7 +70,6 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { ) } - /** * Overloaded constructor for creating `DetailedWeaponData` while masking use of `InternalSlot` for its `DetailedAmmoBoxData`. * @param unk1 na @@ -72,7 +80,15 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { * @param ammo the constructor data for the ammunition * @return a `DetailedWeaponData` object */ - def apply(unk1 : Int, unk2 : Int, fire_mode : Int, cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : DetailedAmmoBoxData) : DetailedWeaponData = { + def apply( + unk1: Int, + unk2: Int, + fire_mode: Int, + cls: Int, + guid: PlanetSideGUID, + parentSlot: Int, + ammo: DetailedAmmoBoxData + ): DetailedWeaponData = { DetailedWeaponData( CommonFieldData( PlanetSideEmpire(unk1 & 3), @@ -90,7 +106,7 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { ) } - implicit val codec : Codec[DetailedWeaponData] = ( + implicit val codec: Codec[DetailedWeaponData] = ( ("data" | CommonFieldData.codec) :: uint8 :: uint8 :: @@ -98,14 +114,13 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { uint2 :: optional(bool, "ammo" | InventoryData.codec_detailed) :: ("unk" | bool) - ).exmap[DetailedWeaponData] ( + ).exmap[DetailedWeaponData]( { case data :: 1 :: 0 :: fmode :: 1 :: Some(InventoryData(ammo)) :: unk :: HNil => val magSize = ammo.size - if(magSize == 0) { + if (magSize == 0) { Attempt.failure(Err("weapon must decode some ammunition")) - } - else { + } else { Attempt.successful(DetailedWeaponData(data, fmode, ammo, unk)) } @@ -115,13 +130,11 @@ object DetailedWeaponData extends Marshallable[DetailedWeaponData] { { case DetailedWeaponData(data, fmode, ammo, unk) => val magSize = ammo.size - if(magSize == 0) { + if (magSize == 0) { Attempt.failure(Err("weapon must encode some ammunition")) - } - else if(magSize >= 255) { + } else if (magSize >= 255) { Attempt.failure(Err("weapon encodes too much ammunition (255+ types!)")) - } - else { + } else { Attempt.successful(data :: 1 :: 0 :: fmode :: 1 :: Some(InventoryData(ammo)) :: unk :: HNil) } } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DrawnSlot.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DrawnSlot.scala index 9ea17ed1..f4464487 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DrawnSlot.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DrawnSlot.scala @@ -14,10 +14,10 @@ object DrawnSlot extends Enumeration { val Pistol1 = Value(0) val Pistol2 = Value(1) - val Rifle1 = Value(2) - val Rifle2 = Value(3) - val Melee = Value(4) - val None = Value(7) + val Rifle1 = Value(2) + val Rifle2 = Value(3) + val Melee = Value(4) + val None = Value(7) import net.psforever.packet.PacketHelpers import scodec.codecs._ diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppedItemData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppedItemData.scala index 267d926d..365e52f8 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppedItemData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppedItemData.scala @@ -11,11 +11,12 @@ import shapeless.{::, HNil} * @param obj the object on the ground * @tparam T a subclass of `ConstructorData` that indicates what type the object is */ -final case class DroppedItemData[T <: ConstructorData](pos : PlacementData, obj : T) extends ConstructorData { - override def bitsize : Long = pos.bitsize + obj.bitsize +final case class DroppedItemData[T <: ConstructorData](pos: PlacementData, obj: T) extends ConstructorData { + override def bitsize: Long = pos.bitsize + obj.bitsize } object DroppedItemData { + /** * Transform `DroppedItemData[T]` for object type `T` into `ConstructorData`.
*
@@ -35,36 +36,36 @@ object DroppedItemData { * @return `Codec[ConstructorData]` * @see `ConstructorData` (function) */ - def apply[T <: ConstructorData](objCodec : Codec[T], objType : String = "object") : Codec[ConstructorData] = ( - ("pos" | PlacementData.codec) :: - ("obj" | objCodec) - ).xmap[DroppedItemData[T]] ( - { - case pos :: obj :: HNil => - DroppedItemData[T](pos, obj) - }, - { - case DroppedItemData(pos, obj) => - pos :: obj :: HNil - } - ).exmap[ConstructorData] ( - x => { - try { - Attempt.successful(x.asInstanceOf[ConstructorData]) + def apply[T <: ConstructorData](objCodec: Codec[T], objType: String = "object"): Codec[ConstructorData] = + ( + ("pos" | PlacementData.codec) :: + ("obj" | objCodec) + ).xmap[DroppedItemData[T]]( + { + case pos :: obj :: HNil => + DroppedItemData[T](pos, obj) + }, + { + case DroppedItemData(pos, obj) => + pos :: obj :: HNil } - catch { - case ex : Exception => - Attempt.failure(Err(s"can not cast decode of $x to dropped $objType - $ex")) + ).exmap[ConstructorData]( + x => { + try { + Attempt.successful(x.asInstanceOf[ConstructorData]) + } catch { + case ex: Exception => + Attempt.failure(Err(s"can not cast decode of $x to dropped $objType - $ex")) + } + }, + x => { + try { + Attempt + .successful(x.asInstanceOf[DroppedItemData[T]]) //why does this work? shouldn't type erasure be a problem? + } catch { + case ex: Exception => + Attempt.failure(Err(s"can not cast encode $x to dropped $objType - $ex")) + } } - }, - x => { - try { - Attempt.successful(x.asInstanceOf[DroppedItemData[T]]) //why does this work? shouldn't type erasure be a problem? - } - catch { - case ex : Exception => - Attempt.failure(Err(s"can not cast encode $x to dropped $objType - $ex")) - } - } - ) + ) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppodData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppodData.scala index 1175ba6b..98762166 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppodData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DroppodData.scala @@ -31,33 +31,30 @@ import shapeless.{::, HNil} * @see `DroppodLaunchRequestMessage` * @see `DroppodLaunchResponseMessage` */ -final case class DroppodData(basic : CommonFieldDataWithPlacement, - health : Int, - burn : Boolean, - unk : Boolean - ) extends ConstructorData { - override def bitsize : Long = { +final case class DroppodData(basic: CommonFieldDataWithPlacement, health: Int, burn: Boolean, unk: Boolean) + extends ConstructorData { + override def bitsize: Long = { val basicSize = basic.bitsize 29L + basicSize } } object DroppodData extends Marshallable[DroppodData] { - def apply(basic : CommonFieldDataWithPlacement) : DroppodData = DroppodData(basic, 255, burn = false, unk = false) + def apply(basic: CommonFieldDataWithPlacement): DroppodData = DroppodData(basic, 255, burn = false, unk = false) - implicit val codec : Codec[DroppodData] = ( + implicit val codec: Codec[DroppodData] = ( ("basic" | CommonFieldDataWithPlacement.codec) :: bool :: - ("health" | uint8L) :: //health - uintL(5) :: //0x0 - uint4L :: //0xF - uintL(6) :: //0x0 + ("health" | uint8L) :: //health + uintL(5) :: //0x0 + uint4L :: //0xF + uintL(6) :: //0x0 ("boosters" | uint4L) :: //0x9 on standby, 0x0 when burning and occupied (basic.player_guid?) ("unk" | bool) - ).exmap[DroppodData] ( + ).exmap[DroppodData]( { - case basic :: false :: health :: 0 :: 0xF :: 0 :: boosters :: unk :: HNil => - val burn : Boolean = boosters == 0 + case basic :: false :: health :: 0 :: 0xf :: 0 :: boosters :: unk :: HNil => + val burn: Boolean = boosters == 0 Attempt.successful(DroppodData(basic, health, burn, unk)) case data => @@ -65,8 +62,9 @@ object DroppodData extends Marshallable[DroppodData] { }, { case DroppodData(basic, health, burn, unk) => - val boosters : Int = if(burn) { 0 } else { 9 } - Attempt.successful(basic :: false :: health :: 0 :: 0xF :: 0 :: boosters :: unk :: HNil) + val boosters: Int = if (burn) { 0 } + else { 9 } + Attempt.successful(basic :: false :: health :: 0 :: 0xf :: 0 :: boosters :: unk :: HNil) } ) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/HandheldData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/HandheldData.scala index 293f2212..63a78887 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/HandheldData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/HandheldData.scala @@ -18,24 +18,22 @@ import shapeless.{::, HNil} * - v4 - not used, i.e., the simple format `CommonFieldData` object is employed * - v5 - for the telepad, this field is expected to be the GUID of the associated Router */ -final case class HandheldData(data : CommonFieldData, - mode : Int, - unk : Int) extends ConstructorData { - override def bitsize : Long = { +final case class HandheldData(data: CommonFieldData, mode: Int, unk: Int) extends ConstructorData { + override def bitsize: Long = { 11L + data.bitsize } } object HandheldData extends Marshallable[HandheldData] { - def apply(data : CommonFieldData) : HandheldData = HandheldData(data, 0, 0) + def apply(data: CommonFieldData): HandheldData = HandheldData(data, 0, 0) - def apply(data : CommonFieldData, mode : Int) : HandheldData = HandheldData(data, mode, 0) + def apply(data: CommonFieldData, mode: Int): HandheldData = HandheldData(data, mode, 0) - implicit val codec : Codec[HandheldData] = ( + implicit val codec: Codec[HandheldData] = ( ("data" | CommonFieldData.codec) :: ("mode" | uint8) :: ("unk" | uint(3)) - ).exmap[HandheldData] ( + ).exmap[HandheldData]( { case data :: mode :: unk :: HNil => Attempt.successful(HandheldData(data, mode, unk)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/InternalSlot.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/InternalSlot.scala index 23e2042a..f5aa2c7f 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/InternalSlot.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/InternalSlot.scala @@ -23,27 +23,26 @@ import shapeless.{::, HNil} * @see `ObjectClass.selectDataCodec` * @see `ObjectClass.selectDataDetailedCodec` */ -final case class InternalSlot(objectClass : Int, - guid : PlanetSideGUID, - parentSlot : Int, - obj : ConstructorData) extends StreamBitSize { - override def bitsize : Long = { - val base : Long = if(parentSlot > 127) 43L else 35L +final case class InternalSlot(objectClass: Int, guid: PlanetSideGUID, parentSlot: Int, obj: ConstructorData) + extends StreamBitSize { + override def bitsize: Long = { + val base: Long = if (parentSlot > 127) 43L else 35L base + obj.bitsize } } object InternalSlot { + /** * Used for `0x18` `ObjectCreateDetailedMessage` packets */ - val codec_detailed : Codec[InternalSlot] = ( + val codec_detailed: Codec[InternalSlot] = ( ("objectClass" | uintL(11)) >>:~ { obj_cls => ("guid" | PlanetSideGUID.codec) :: ("parentSlot" | PacketHelpers.encodedStringSize) :: ("obj" | ObjectClass.selectDataDetailedCodec(obj_cls)) //it's fine for this call to fail - } - ).xmap[InternalSlot] ( + } + ).xmap[InternalSlot]( { case cls :: guid :: slot :: obj :: HNil => InternalSlot(cls, guid, slot, obj) @@ -57,13 +56,13 @@ object InternalSlot { /** * Used for `0x17` `ObjectCreateMessage` packets */ - val codec : Codec[InternalSlot] = ( + val codec: Codec[InternalSlot] = ( ("objectClass" | uintL(11)) >>:~ { obj_cls => ("guid" | PlanetSideGUID.codec) :: ("parentSlot" | PacketHelpers.encodedStringSize) :: ("obj" | ObjectClass.selectDataCodec(obj_cls)) //it's fine for this call to fail } - ).xmap[InternalSlot] ( + ).xmap[InternalSlot]( { case cls :: guid :: slot :: obj :: HNil => InternalSlot(cls, guid, slot, obj) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryData.scala index c3c06c0f..414e27fb 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryData.scala @@ -21,11 +21,11 @@ import shapeless.{::, HNil} * @param contents the items in the inventory * @see `InventoryItemData` */ -final case class InventoryData(contents : List[InventoryItem] = List.empty) extends StreamBitSize { - override def bitsize : Long = { - val base : Long = InventoryData.BaseSize - var invSize : Long = 0L //length of all items in inventory - for(item <- contents) { +final case class InventoryData(contents: List[InventoryItem] = List.empty) extends StreamBitSize { + override def bitsize: Long = { + val base: Long = InventoryData.BaseSize + var invSize: Long = 0L //length of all items in inventory + for (item <- contents) { invSize += item.bitsize } base + invSize @@ -33,36 +33,37 @@ final case class InventoryData(contents : List[InventoryItem] = List.empty) exte } object InventoryData { - final val BaseSize : Long = 10L //8u + 1u + 1u + final val BaseSize: Long = 10L //8u + 1u + 1u /** * The primary `Codec` that parses the common format for an inventory `List`. * @param itemCodec a `Codec` that describes each of the contents of the list * @return an `InventoryData` object, or a `BitVector` */ - def codec(itemCodec : Codec[InventoryItem]) : Codec[InventoryData] = ( - uint8L >>:~ { len => - uint2L :: - ("contents" | PacketHelpers.listOfNSized(len, itemCodec)) - } - ).xmap[InventoryData] ( - { - case _ :: 0 :: c :: HNil => - InventoryData(c) - }, - { - case InventoryData(c) => - c.size :: 0 :: c :: HNil - } - ) + def codec(itemCodec: Codec[InventoryItem]): Codec[InventoryData] = + ( + uint8L >>:~ { len => + uint2L :: + ("contents" | PacketHelpers.listOfNSized(len, itemCodec)) + } + ).xmap[InventoryData]( + { + case _ :: 0 :: c :: HNil => + InventoryData(c) + }, + { + case InventoryData(c) => + c.size :: 0 :: c :: HNil + } + ) /** * A `Codec` for `0x17` `ObjectCreateMessage` data. */ - val codec : Codec[InventoryData] = codec(InventoryItemData.codec) + val codec: Codec[InventoryData] = codec(InventoryItemData.codec) /** * A `Codec` for `0x18` `ObjectCreateDetailedMessage` data. */ - val codec_detailed : Codec[InventoryData] = codec(InventoryItemData.codec_detailed) + val codec_detailed: Codec[InventoryData] = codec(InventoryItemData.codec_detailed) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryItemData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryItemData.scala index e6b8ecdc..8b16cc57 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryItemData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/InventoryItemData.scala @@ -8,6 +8,7 @@ import scodec.Codec * Mask the use of `InternalSlot` using a fake class called an `InventoryItemData`. */ object InventoryItemData { + /** * Constructor for creating an `InventoryItemData`. * @param guid the GUID this object will be assigned @@ -15,7 +16,7 @@ object InventoryItemData { * @param obj the data used as representation of the object to be constructed * @return an `InventoryItemData` object */ - def apply(objClass : Int, guid : PlanetSideGUID, slot : Int, obj : ConstructorData) : InventoryItem = + def apply(objClass: Int, guid: PlanetSideGUID, slot: Int, obj: ConstructorData): InventoryItem = InternalSlot(objClass, guid, slot, obj) /** @@ -26,10 +27,10 @@ object InventoryItemData { /** * A `Codec` for `0x17` `ObjectCreateMessage` data. */ - val codec : Codec[InventoryItem] = InternalSlot.codec + val codec: Codec[InventoryItem] = InternalSlot.codec /** * A `Codec` for `0x18` `ObjectCreateDetailedMessage` data. */ - val codec_detailed : Codec[InventoryItem] = InternalSlot.codec_detailed + val codec_detailed: Codec[InventoryItem] = InternalSlot.codec_detailed } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/LargeDeployableData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/LargeDeployableData.scala index d332f428..982e0faf 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/LargeDeployableData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/LargeDeployableData.scala @@ -9,11 +9,12 @@ import shapeless.{::, HNil} /** * This class currently is unused but is based on the `SmallTurretData` `Codec` class. */ -final case class LargeDeployableData(deploy : CommonFieldDataWithPlacement, - health : Int, - internals : Option[InventoryData] = None - ) extends ConstructorData { - override def bitsize : Long = { +final case class LargeDeployableData( + deploy: CommonFieldDataWithPlacement, + health: Int, + internals: Option[InventoryData] = None +) extends ConstructorData { + override def bitsize: Long = { val deploySize = deploy.bitsize val internalSize = internals match { case Some(inv) => @@ -26,37 +27,34 @@ final case class LargeDeployableData(deploy : CommonFieldDataWithPlacement, } object LargeDeployableData extends Marshallable[LargeDeployableData] { - implicit val codec : Codec[LargeDeployableData] = ( + implicit val codec: Codec[LargeDeployableData] = ( ("deploy" | CommonFieldDataWithPlacement.codec2) :: ("health" | uint8L) :: uintL(7) :: uint4L :: uint2L :: optional(bool, "internals" | InventoryData.codec) - ).exmap[LargeDeployableData] ( + ).exmap[LargeDeployableData]( { - case deploy :: health :: 0 :: 0xF :: 0 :: internals :: HNil => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + case deploy :: health :: 0 :: 0xf :: 0 :: internals :: HNil => + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } Attempt.successful(LargeDeployableData(deploy, newHealth, newInternals)) - case data => Attempt.failure(Err(s"invalid large deployable data format - $data")) }, { case LargeDeployableData(deploy, health, internals) => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } - Attempt.successful(deploy :: newHealth :: 0 :: 0xF :: 0 :: newInternals :: HNil) + Attempt.successful(deploy :: newHealth :: 0 :: 0xf :: 0 :: newInternals :: HNil) } ) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/LockerContainerData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/LockerContainerData.scala index 6bae06b1..d2ad3ed4 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/LockerContainerData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/LockerContainerData.scala @@ -12,31 +12,32 @@ import shapeless.{::, HNil} * For whatever reason, these "lockers" are typically placed at the origin coordinates. * @param inventory the items inside this locker */ -final case class LockerContainerData(inventory : Option[InventoryData]) extends ConstructorData { - override def bitsize : Long = { - val base : Long = 105L +final case class LockerContainerData(inventory: Option[InventoryData]) extends ConstructorData { + override def bitsize: Long = { + val base: Long = 105L (inventory match { case Some(inv) => inv.bitsize - case None => 0L + case None => 0L }) + base //81u + 2u + 21u + 1u } } object LockerContainerData extends Marshallable[LockerContainerData] { - def apply() : LockerContainerData = new LockerContainerData(None) + def apply(): LockerContainerData = new LockerContainerData(None) - def apply(inventory : InventoryData) : LockerContainerData = new LockerContainerData(Some(inventory)) + def apply(inventory: InventoryData): LockerContainerData = new LockerContainerData(Some(inventory)) - def apply(inventory : List[InternalSlot]) : LockerContainerData = new LockerContainerData(Some(InventoryData(inventory))) + def apply(inventory: List[InternalSlot]): LockerContainerData = + new LockerContainerData(Some(InventoryData(inventory))) - implicit val codec : Codec[LockerContainerData] = ( + implicit val codec: Codec[LockerContainerData] = ( uint32 :: uint32 :: uint(17) :: uint2L :: uint(21) :: ("inventory" | optional(bool, InventoryData.codec)) - ).exmap[LockerContainerData] ( + ).exmap[LockerContainerData]( { - case 0 :: 0 :: 0 :: 3 :: 0 :: inventory :: HNil => + case 0 :: 0 :: 0 :: 3 :: 0 :: inventory :: HNil => Attempt.successful(LockerContainerData(inventory)) case data => diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/MountItem.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/MountItem.scala index c5bde456..3ae1db00 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/MountItem.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/MountItem.scala @@ -8,6 +8,7 @@ import scodec.Codec * Mask the use of `InternalSlot` using a fake class called a `MountItem`. */ object MountItem { + /** * Constructor for creating a `MountItem`. * @param guid the GUID this object will be assigned @@ -15,7 +16,7 @@ object MountItem { * @param obj the data used as representation of the object to be constructed * @return an `InventoryItemData` object */ - def apply(objClass : Int, guid : PlanetSideGUID, slot : Int, obj : ConstructorData) : MountItem = + def apply(objClass: Int, guid: PlanetSideGUID, slot: Int, obj: ConstructorData): MountItem = InternalSlot(objClass, guid, slot, obj) /** @@ -26,5 +27,5 @@ object MountItem { /** * A `Codec` for `0x17` `ObjectCreateMessage` data. */ - val codec : Codec[MountItem] = InternalSlot.codec + val codec: Codec[MountItem] = InternalSlot.codec } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala index 92fe8eef..6acde220 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectClass.scala @@ -12,433 +12,433 @@ import scala.annotation.switch */ object ObjectClass { //ammunition - final val bullet_105mm = 0 - final val bullet_12mm = 3 - final val bullet_150mm = 6 - final val bullet_15mm = 9 - final val bullet_20mm = 16 - final val bullet_25mm = 19 - final val bullet_35mm = 21 - final val bullet_75mm = 25 - final val bullet_9mm = 28 - final val bullet_9mm_AP = 29 - final val ancient_ammo_combo = 50 - final val ancient_ammo_vehicle = 51 - final val anniversary_ammo = 54 + final val bullet_105mm = 0 + final val bullet_12mm = 3 + final val bullet_150mm = 6 + final val bullet_15mm = 9 + final val bullet_20mm = 16 + final val bullet_25mm = 19 + final val bullet_35mm = 21 + final val bullet_75mm = 25 + final val bullet_9mm = 28 + final val bullet_9mm_AP = 29 + final val ancient_ammo_combo = 50 + final val ancient_ammo_vehicle = 51 + final val anniversary_ammo = 54 final val aphelion_immolation_cannon_ammo = 86 - final val aphelion_laser_ammo = 89 - final val aphelion_plasma_rocket_ammo = 97 - final val aphelion_ppa_ammo = 101 - final val aphelion_starfire_ammo = 106 - final val armor_canister = 111 - final val armor_siphon_ammo = 112 - final val bolt = 145 - final val burster_ammo = 154 - final val colossus_100mm_cannon_ammo = 180 - final val colossus_burster_ammo = 186 - final val colossus_chaingun_ammo = 191 - final val colossus_cluster_bomb_ammo = 195 - final val colossus_tank_cannon_ammo = 205 - final val comet_ammo = 209 - final val dualcycler_ammo = 265 - final val energy_cell = 272 - final val energy_gun_ammo = 275 - final val falcon_ammo = 285 - final val firebird_missile = 287 - final val flamethrower_ammo = 300 - final val flux_cannon_thresher_battery = 307 - final val fluxpod_ammo = 310 - final val frag_cartridge = 327 - final val frag_grenade_ammo = 331 - final val gauss_cannon_ammo = 347 - final val grenade = 370 - final val health_canister = 389 - final val heavy_grenade_mortar = 391 - final val heavy_rail_beam_battery = 393 - final val hellfire_ammo = 399 - final val hunter_seeker_missile = 403 - final val jammer_cartridge = 413 - final val jammer_grenade_ammo = 417 - final val lancer_cartridge = 426 - final val liberator_bomb = 434 - final val maelstrom_ammo = 463 - final val melee_ammo = 540 - final val mine = 550 - final val mine_sweeper_ammo = 553 - final val ntu_siphon_ammo = 595 - final val oicw_ammo = 600 - final val pellet_gun_ammo = 630 + final val aphelion_laser_ammo = 89 + final val aphelion_plasma_rocket_ammo = 97 + final val aphelion_ppa_ammo = 101 + final val aphelion_starfire_ammo = 106 + final val armor_canister = 111 + final val armor_siphon_ammo = 112 + final val bolt = 145 + final val burster_ammo = 154 + final val colossus_100mm_cannon_ammo = 180 + final val colossus_burster_ammo = 186 + final val colossus_chaingun_ammo = 191 + final val colossus_cluster_bomb_ammo = 195 + final val colossus_tank_cannon_ammo = 205 + final val comet_ammo = 209 + final val dualcycler_ammo = 265 + final val energy_cell = 272 + final val energy_gun_ammo = 275 + final val falcon_ammo = 285 + final val firebird_missile = 287 + final val flamethrower_ammo = 300 + final val flux_cannon_thresher_battery = 307 + final val fluxpod_ammo = 310 + final val frag_cartridge = 327 + final val frag_grenade_ammo = 331 + final val gauss_cannon_ammo = 347 + final val grenade = 370 + final val health_canister = 389 + final val heavy_grenade_mortar = 391 + final val heavy_rail_beam_battery = 393 + final val hellfire_ammo = 399 + final val hunter_seeker_missile = 403 + final val jammer_cartridge = 413 + final val jammer_grenade_ammo = 417 + final val lancer_cartridge = 426 + final val liberator_bomb = 434 + final val maelstrom_ammo = 463 + final val melee_ammo = 540 + final val mine = 550 + final val mine_sweeper_ammo = 553 + final val ntu_siphon_ammo = 595 + final val oicw_ammo = 600 + final val pellet_gun_ammo = 630 final val peregrine_dual_machine_gun_ammo = 637 - final val peregrine_mechhammer_ammo = 645 - final val peregrine_particle_cannon_ammo = 653 - final val peregrine_rocket_pod_ammo = 656 - final val peregrine_sparrow_ammo = 659 - final val phalanx_ammo = 664 - final val phoenix_missile = 674 - final val plasma_cartridge = 677 - final val plasma_grenade_ammo = 681 - final val pounder_ammo = 693 - final val pulse_battery = 704 - final val quasar_ammo = 712 - final val reaver_rocket = 722 - final val rocket = 734 - final val scattercannon_ammo = 745 - final val shotgun_shell = 755 - final val shotgun_shell_AP = 756 - final val six_shooter_ammo = 762 - final val skyguard_flak_cannon_ammo = 786 - final val sparrow_ammo = 791 - final val spitfire_aa_ammo = 820 - final val spitfire_ammo = 823 - final val starfire_ammo = 830 - final val striker_missile_ammo = 839 - final val trek_ammo = 877 - final val upgrade_canister = 922 - final val wasp_gun_ammo = 998 - final val wasp_rocket_ammo = 1000 - final val winchester_ammo = 1004 + final val peregrine_mechhammer_ammo = 645 + final val peregrine_particle_cannon_ammo = 653 + final val peregrine_rocket_pod_ammo = 656 + final val peregrine_sparrow_ammo = 659 + final val phalanx_ammo = 664 + final val phoenix_missile = 674 + final val plasma_cartridge = 677 + final val plasma_grenade_ammo = 681 + final val pounder_ammo = 693 + final val pulse_battery = 704 + final val quasar_ammo = 712 + final val reaver_rocket = 722 + final val rocket = 734 + final val scattercannon_ammo = 745 + final val shotgun_shell = 755 + final val shotgun_shell_AP = 756 + final val six_shooter_ammo = 762 + final val skyguard_flak_cannon_ammo = 786 + final val sparrow_ammo = 791 + final val spitfire_aa_ammo = 820 + final val spitfire_ammo = 823 + final val starfire_ammo = 830 + final val striker_missile_ammo = 839 + final val trek_ammo = 877 + final val upgrade_canister = 922 + final val wasp_gun_ammo = 998 + final val wasp_rocket_ammo = 1000 + final val winchester_ammo = 1004 //weapons - final val chaingun_12mm = 2 - final val chaingun_15mm = 8 - final val cannon_20mm = 12 - final val cannon_deliverer_20mm = 13 - final val cannon_dropship_20mm = 14 - final val cannon_dropship_l_20mm = 15 - final val cannon_75mm = 23 - final val lightning_75mm = 24 - final val ace_deployable = 33 - final val advanced_missile_launcher_t = 40 - final val anniversary_gun = 55 - final val anniversary_guna = 56 - final val anniversary_gunb = 57 - final val apc_ballgun_l = 63 - final val apc_ballgun_r = 64 - final val apc_weapon_systema = 69 - final val apc_weapon_systemb = 70 - final val apc_weapon_systemc = 71 - final val apc_weapon_systemc_nc = 72 - final val apc_weapon_systemc_tr = 73 - final val apc_weapon_systemc_vs = 74 - final val apc_weapon_systemd = 75 - final val apc_weapon_systemd_nc = 76 - final val apc_weapon_systemd_tr = 77 - final val apc_weapon_systemd_vs = 78 - final val aphelion_immolation_cannon = 85 - final val aphelion_laser = 88 - final val aphelion_laser_left = 90 - final val aphelion_laser_right = 92 - final val aphelion_plasma_rocket_pod = 98 - final val aphelion_ppa = 100 - final val aphelion_ppa_left = 102 - final val aphelion_ppa_right = 104 - final val aphelion_starfire = 105 - final val aphelion_starfire_left = 107 - final val aphelion_starfire_right = 109 - final val aurora_weapon_systema = 119 - final val aurora_weapon_systemb = 120 - final val battlewagon_weapon_systema = 136 - final val battlewagon_weapon_systemb = 137 - final val battlewagon_weapon_systemc = 138 - final val battlewagon_weapon_systemd = 139 - final val beamer = 140 - final val bolt_driver = 146 - final val chainblade = 175 - final val chaingun_p = 177 - final val colossus_burster = 185 - final val colossus_burster_left = 187 - final val colossus_burster_right = 189 - final val colossus_chaingun = 190 - final val colossus_chaingun_left = 192 - final val colossus_chaingun_right = 194 - final val colossus_cluster_bomb_pod = 196 - final val colossus_dual_100mm_cannons = 198 - final val colossus_tank_cannon = 204 - final val colossus_tank_cannon_left = 206 - final val colossus_tank_cannon_right = 208 - final val cycler = 233 - final val cycler_v2 = 234 - final val cycler_v3 = 235 - final val cycler_v4 = 236 - final val dropship_rear_turret = 262 - final val energy_gun = 274 - final val energy_gun_nc = 276 - final val energy_gun_tr = 278 - final val energy_gun_vs = 280 - final val flail_weapon = 298 - final val flamethrower = 299 - final val flechette = 304 - final val flux_cannon_thresher = 306 - final val fluxpod = 309 - final val forceblade = 324 - final val fragmentation_grenade = 334 - final val fury_weapon_systema = 336 - final val galaxy_gunship_cannon = 339 - final val galaxy_gunship_gun = 340 - final val galaxy_gunship_tailgun = 342 - final val gauss = 345 - final val gauss_cannon = 346 - final val grenade_launcher_marauder = 371 - final val heavy_rail_beam_magrider = 394 - final val heavy_sniper = 396 - final val hellfire = 398 - final val hunterseeker = 406 - final val ilc9 = 407 - final val isp = 411 - final val katana = 421 - final val lancer = 425 - final val lasher = 429 - final val lasher_projectile = 430 - final val lasher_projectile_ap = 431 - final val liberator_25mm_cannon = 433 - final val liberator_bomb_bay = 435 - final val liberator_weapon_system = 440 - final val lightgunship_weapon_system = 445 - final val lightning_weapon_system = 448 - final val maelstrom = 462 - final val magcutter = 468 - final val mediumtransport_weapon_systemA = 534 - final val mediumtransport_weapon_systemB = 535 - final val mini_chaingun = 556 - final val nchev_falcon = 587 - final val nchev_scattercannon = 588 - final val nchev_sparrow = 589 - final val oicw = 599 - final val particle_beam_magrider = 628 - final val pellet_gun = 629 - final val peregrine_dual_machine_gun = 636 - final val peregrine_dual_machine_gun_left = 638 + final val chaingun_12mm = 2 + final val chaingun_15mm = 8 + final val cannon_20mm = 12 + final val cannon_deliverer_20mm = 13 + final val cannon_dropship_20mm = 14 + final val cannon_dropship_l_20mm = 15 + final val cannon_75mm = 23 + final val lightning_75mm = 24 + final val ace_deployable = 33 + final val advanced_missile_launcher_t = 40 + final val anniversary_gun = 55 + final val anniversary_guna = 56 + final val anniversary_gunb = 57 + final val apc_ballgun_l = 63 + final val apc_ballgun_r = 64 + final val apc_weapon_systema = 69 + final val apc_weapon_systemb = 70 + final val apc_weapon_systemc = 71 + final val apc_weapon_systemc_nc = 72 + final val apc_weapon_systemc_tr = 73 + final val apc_weapon_systemc_vs = 74 + final val apc_weapon_systemd = 75 + final val apc_weapon_systemd_nc = 76 + final val apc_weapon_systemd_tr = 77 + final val apc_weapon_systemd_vs = 78 + final val aphelion_immolation_cannon = 85 + final val aphelion_laser = 88 + final val aphelion_laser_left = 90 + final val aphelion_laser_right = 92 + final val aphelion_plasma_rocket_pod = 98 + final val aphelion_ppa = 100 + final val aphelion_ppa_left = 102 + final val aphelion_ppa_right = 104 + final val aphelion_starfire = 105 + final val aphelion_starfire_left = 107 + final val aphelion_starfire_right = 109 + final val aurora_weapon_systema = 119 + final val aurora_weapon_systemb = 120 + final val battlewagon_weapon_systema = 136 + final val battlewagon_weapon_systemb = 137 + final val battlewagon_weapon_systemc = 138 + final val battlewagon_weapon_systemd = 139 + final val beamer = 140 + final val bolt_driver = 146 + final val chainblade = 175 + final val chaingun_p = 177 + final val colossus_burster = 185 + final val colossus_burster_left = 187 + final val colossus_burster_right = 189 + final val colossus_chaingun = 190 + final val colossus_chaingun_left = 192 + final val colossus_chaingun_right = 194 + final val colossus_cluster_bomb_pod = 196 + final val colossus_dual_100mm_cannons = 198 + final val colossus_tank_cannon = 204 + final val colossus_tank_cannon_left = 206 + final val colossus_tank_cannon_right = 208 + final val cycler = 233 + final val cycler_v2 = 234 + final val cycler_v3 = 235 + final val cycler_v4 = 236 + final val dropship_rear_turret = 262 + final val energy_gun = 274 + final val energy_gun_nc = 276 + final val energy_gun_tr = 278 + final val energy_gun_vs = 280 + final val flail_weapon = 298 + final val flamethrower = 299 + final val flechette = 304 + final val flux_cannon_thresher = 306 + final val fluxpod = 309 + final val forceblade = 324 + final val fragmentation_grenade = 334 + final val fury_weapon_systema = 336 + final val galaxy_gunship_cannon = 339 + final val galaxy_gunship_gun = 340 + final val galaxy_gunship_tailgun = 342 + final val gauss = 345 + final val gauss_cannon = 346 + final val grenade_launcher_marauder = 371 + final val heavy_rail_beam_magrider = 394 + final val heavy_sniper = 396 + final val hellfire = 398 + final val hunterseeker = 406 + final val ilc9 = 407 + final val isp = 411 + final val katana = 421 + final val lancer = 425 + final val lasher = 429 + final val lasher_projectile = 430 + final val lasher_projectile_ap = 431 + final val liberator_25mm_cannon = 433 + final val liberator_bomb_bay = 435 + final val liberator_weapon_system = 440 + final val lightgunship_weapon_system = 445 + final val lightning_weapon_system = 448 + final val maelstrom = 462 + final val magcutter = 468 + final val mediumtransport_weapon_systemA = 534 + final val mediumtransport_weapon_systemB = 535 + final val mini_chaingun = 556 + final val nchev_falcon = 587 + final val nchev_scattercannon = 588 + final val nchev_sparrow = 589 + final val oicw = 599 + final val particle_beam_magrider = 628 + final val pellet_gun = 629 + final val peregrine_dual_machine_gun = 636 + final val peregrine_dual_machine_gun_left = 638 final val peregrine_dual_machine_gun_right = 640 - final val peregrine_dual_rocket_pods = 641 - final val peregrine_mechhammer = 644 - final val peregrine_mechhammer_left = 646 - final val peregrine_mechhammer_right = 648 - final val peregrine_particle_cannon = 652 - final val peregrine_sparrow = 658 - final val peregrine_sparrow_left = 660 - final val peregrine_sparrow_right = 662 - final val phalanx_avcombo = 666 - final val phalanx_flakcombo = 668 - final val phalanx_sgl_hevgatcan = 670 - final val phantasm_12mm_machinegun = 672 - final val phoenix = 673 - final val prowler_weapon_systemA = 699 - final val prowler_weapon_systemB = 700 - final val pulsar = 701 - final val pulsed_particle_accelerator = 705 - final val punisher = 706 - final val quadassault_weapon_system = 709 - final val r_shotgun = 714 - final val radiator = 716 - final val repeater = 730 - final val rocklet = 737 - final val rotarychaingun_mosquito = 740 - final val scythe = 747 - final val six_shooter = 761 - final val skyguard_weapon_system = 788 - final val spiker = 817 - final val spitfire_aa_weapon = 822 - final val spitfire_weapon = 827 - final val striker = 838 - final val suppressor = 845 - final val thumper = 864 - final val thunderer_weapon_systema = 866 - final val thunderer_weapon_systemb = 867 - final val trhev_burster = 888 - final val trhev_dualcycler = 889 - final val trhev_pounder = 890 - final val vanguard_weapon_system = 927 - final val vanu_sentry_turret_weapon = 945 - final val vshev_comet = 968 - final val vshev_quasar = 969 - final val vshev_starfire = 970 - final val vulture_bomb_bay = 987 - final val vulture_nose_weapon_system = 990 - final val vulture_tail_cannon = 992 - final val wasp_weapon_system = 1002 - final val winchester = 1003 - final val dynomite = 267 - final val frag_grenade = 330 - final val generic_grenade = 354 - final val jammer_grenade = 416 - final val mine_sweeper = 552 - final val plasma_grenade = 680 + final val peregrine_dual_rocket_pods = 641 + final val peregrine_mechhammer = 644 + final val peregrine_mechhammer_left = 646 + final val peregrine_mechhammer_right = 648 + final val peregrine_particle_cannon = 652 + final val peregrine_sparrow = 658 + final val peregrine_sparrow_left = 660 + final val peregrine_sparrow_right = 662 + final val phalanx_avcombo = 666 + final val phalanx_flakcombo = 668 + final val phalanx_sgl_hevgatcan = 670 + final val phantasm_12mm_machinegun = 672 + final val phoenix = 673 + final val prowler_weapon_systemA = 699 + final val prowler_weapon_systemB = 700 + final val pulsar = 701 + final val pulsed_particle_accelerator = 705 + final val punisher = 706 + final val quadassault_weapon_system = 709 + final val r_shotgun = 714 + final val radiator = 716 + final val repeater = 730 + final val rocklet = 737 + final val rotarychaingun_mosquito = 740 + final val scythe = 747 + final val six_shooter = 761 + final val skyguard_weapon_system = 788 + final val spiker = 817 + final val spitfire_aa_weapon = 822 + final val spitfire_weapon = 827 + final val striker = 838 + final val suppressor = 845 + final val thumper = 864 + final val thunderer_weapon_systema = 866 + final val thunderer_weapon_systemb = 867 + final val trhev_burster = 888 + final val trhev_dualcycler = 889 + final val trhev_pounder = 890 + final val vanguard_weapon_system = 927 + final val vanu_sentry_turret_weapon = 945 + final val vshev_comet = 968 + final val vshev_quasar = 969 + final val vshev_starfire = 970 + final val vulture_bomb_bay = 987 + final val vulture_nose_weapon_system = 990 + final val vulture_tail_cannon = 992 + final val wasp_weapon_system = 1002 + final val winchester = 1003 + final val dynomite = 267 + final val frag_grenade = 330 + final val generic_grenade = 354 + final val jammer_grenade = 416 + final val mine_sweeper = 552 + final val plasma_grenade = 680 //medkits - final val medkit = 536 - final val super_armorkit = 842 - final val super_medkit = 843 + final val medkit = 536 + final val super_armorkit = 842 + final val super_medkit = 843 final val super_staminakit = 844 //tools final val remote_electronics_kit = 728 - final val trek = 876 - final val applicator = 110 - final val medicalapplicator = 531 - final val bank = 132 - final val nano_dispenser = 577 - final val command_detonater = 213 - final val flail_targeting_laser = 297 + final val trek = 876 + final val applicator = 110 + final val medicalapplicator = 531 + final val bank = 132 + final val nano_dispenser = 577 + final val command_detonater = 213 + final val flail_targeting_laser = 297 //deployables - final val ace = 32 - final val advanced_ace = 39 - final val boomer = 148 - final val boomer_trigger = 149 - final val he_mine = 388 - final val jammer_mine = 420 - final val motionalarmsensor = 575 - final val router_telepad = 743 - final val router_telepad_deployable = 744 - final val sensor_shield = 752 - final val spitfire_aa = 819 - final val spitfire_cloaked = 825 - final val spitfire_turret = 826 - final val tank_traps = 849 + final val ace = 32 + final val advanced_ace = 39 + final val boomer = 148 + final val boomer_trigger = 149 + final val he_mine = 388 + final val jammer_mine = 420 + final val motionalarmsensor = 575 + final val router_telepad = 743 + final val router_telepad_deployable = 744 + final val sensor_shield = 752 + final val spitfire_aa = 819 + final val spitfire_cloaked = 825 + final val spitfire_turret = 826 + final val tank_traps = 849 final val deployable_shield_generator = 240 - final val portable_manned_turret = 685 - final val portable_manned_turret_nc = 686 - final val portable_manned_turret_tr = 687 - final val portable_manned_turret_vs = 688 + final val portable_manned_turret = 685 + final val portable_manned_turret_nc = 686 + final val portable_manned_turret_tr = 687 + final val portable_manned_turret_vs = 688 //projectiles - final val hunter_seeker_missile_projectile = 405 //phoenix projectile - final val meteor_common = 543 - final val meteor_projectile_b_large = 544 - final val meteor_projectile_b_medium = 545 - final val meteor_projectile_b_small = 546 - final val meteor_projectile_large = 547 - final val meteor_projectile_medium = 548 - final val meteor_projectile_small = 549 - final val phoenix_missile_guided_projectile = 675 //decimator projectile - final val oicw_little_buddy = 601 //scorpion projectile's projectiles - final val oicw_projectile = 602 //scorpion projectile - final val radiator_cload = 717 - final val sparrow_projectile = 792 //nc aa max projectile - final val starfire_projectile = 831 //vs aa max projectile - final val striker_missile_targeting_projectile = 841 //striker projectile - final val wasp_rocket_projectile = 1001 //wasp projectile + final val hunter_seeker_missile_projectile = 405 //phoenix projectile + final val meteor_common = 543 + final val meteor_projectile_b_large = 544 + final val meteor_projectile_b_medium = 545 + final val meteor_projectile_b_small = 546 + final val meteor_projectile_large = 547 + final val meteor_projectile_medium = 548 + final val meteor_projectile_small = 549 + final val phoenix_missile_guided_projectile = 675 //decimator projectile + final val oicw_little_buddy = 601 //scorpion projectile's projectiles + final val oicw_projectile = 602 //scorpion projectile + final val radiator_cload = 717 + final val sparrow_projectile = 792 //nc aa max projectile + final val starfire_projectile = 831 //vs aa max projectile + final val striker_missile_targeting_projectile = 841 //striker projectile + final val wasp_rocket_projectile = 1001 //wasp projectile //vehicles - final val apc_destroyed = 65 - final val apc_tr = 67 //juggernaut - final val apc_nc = 66 //vindicator - final val apc_vs = 68 //leviathan - final val ams = 46 - final val ams_destroyed = 47 - final val ant = 60 - final val ant_destroyed = 61 - final val aphelion_flight = 83 - final val aphelion_gunner = 84 - final val aurora = 118 - final val battlewagon = 135 //raider - final val colossus_flight = 199 - final val colossus_gunner = 200 - final val droppod = 258 - final val dropship = 259 - final val dropship_destroyed = 260 - final val flail = 294 - final val flail_destroyed = 295 - final val fury = 335 - final val galaxy_gunship = 338 - final val liberator = 432 - final val liberator_destroyed = 439 - final val lightgunship = 441 - final val lightgunship_destroyed = 442 - final val lightning = 446 - final val lightning_destroyed = 447 - final val lodestar = 459 - final val lodestar_destroyed = 460 - final val magrider = 470 - final val magrider_destroyed = 471 - final val mosquito = 572 - final val mosquito_destroyed = 573 - final val mediumtransport = 532 - final val mediumtransport_destroyed = 533 - final val orbital_shuttle = 608 - final val peregrine_flight = 642 - final val peregrine_gunner = 643 - final val phantasm = 671 - final val prowler = 697 - final val prowler_destroyed = 698 - final val quadassault = 707 - final val quadassault_destroyed = 708 - final val quadstealth = 710 - final val quadstealth_destroyed = 711 - final val router = 741 - final val router_destroyed = 742 - final val skyguard = 784 - final val skyguard_destroyed = 785 - final val switchblade = 847 - final val switchblade_destroyed = 848 - final val threemanheavybuggy = 862 //marauder - final val threemanheavybuggy_destroyed = 863 - final val thunderer = 865 - final val two_man_assault_buggy = 896 //harasser + final val apc_destroyed = 65 + final val apc_tr = 67 //juggernaut + final val apc_nc = 66 //vindicator + final val apc_vs = 68 //leviathan + final val ams = 46 + final val ams_destroyed = 47 + final val ant = 60 + final val ant_destroyed = 61 + final val aphelion_flight = 83 + final val aphelion_gunner = 84 + final val aurora = 118 + final val battlewagon = 135 //raider + final val colossus_flight = 199 + final val colossus_gunner = 200 + final val droppod = 258 + final val dropship = 259 + final val dropship_destroyed = 260 + final val flail = 294 + final val flail_destroyed = 295 + final val fury = 335 + final val galaxy_gunship = 338 + final val liberator = 432 + final val liberator_destroyed = 439 + final val lightgunship = 441 + final val lightgunship_destroyed = 442 + final val lightning = 446 + final val lightning_destroyed = 447 + final val lodestar = 459 + final val lodestar_destroyed = 460 + final val magrider = 470 + final val magrider_destroyed = 471 + final val mosquito = 572 + final val mosquito_destroyed = 573 + final val mediumtransport = 532 + final val mediumtransport_destroyed = 533 + final val orbital_shuttle = 608 + final val peregrine_flight = 642 + final val peregrine_gunner = 643 + final val phantasm = 671 + final val prowler = 697 + final val prowler_destroyed = 698 + final val quadassault = 707 + final val quadassault_destroyed = 708 + final val quadstealth = 710 + final val quadstealth_destroyed = 711 + final val router = 741 + final val router_destroyed = 742 + final val skyguard = 784 + final val skyguard_destroyed = 785 + final val switchblade = 847 + final val switchblade_destroyed = 848 + final val threemanheavybuggy = 862 //marauder + final val threemanheavybuggy_destroyed = 863 + final val thunderer = 865 + final val two_man_assault_buggy = 896 //harasser final val two_man_assault_buggy_destroyed = 897 - final val twomanheavybuggy = 898 //enforcer - final val twomanheavybuggy_destroyed = 899 - final val twomanhoverbuggy = 900 //thresher - final val twomanhoverbuggy_destroyed = 901 - final val vanguard = 923 - final val vanguard_destroyed = 924 - final val vulture = 986 - final val wasp = 997 + final val twomanheavybuggy = 898 //enforcer + final val twomanheavybuggy_destroyed = 899 + final val twomanhoverbuggy = 900 //thresher + final val twomanhoverbuggy_destroyed = 901 + final val vanguard = 923 + final val vanguard_destroyed = 924 + final val vulture = 986 + final val wasp = 997 //other - final val ams_order_terminal = 48 - final val ams_respawn_tube = 49 - final val avatar = 121 - final val bfr_rearm_terminal = 142 - final val capture_flag = 157 - final val implant_terminal_interface = 409 - final val locker_container = 456 - final val lodestar_repair_terminal = 461 - final val manned_turret = 480 - final val matrix_terminala = 517 - final val matrix_terminalb = 518 - final val matrix_terminalc = 519 + final val ams_order_terminal = 48 + final val ams_respawn_tube = 49 + final val avatar = 121 + final val bfr_rearm_terminal = 142 + final val capture_flag = 157 + final val implant_terminal_interface = 409 + final val locker_container = 456 + final val lodestar_repair_terminal = 461 + final val manned_turret = 480 + final val matrix_terminala = 517 + final val matrix_terminalb = 518 + final val matrix_terminalc = 519 final val multivehicle_rearm_terminal = 576 - final val order_terminal = 612 - final val order_terminala = 613 - final val order_terminalb = 614 - final val portable_ammo_terminal = 684 - final val portable_order_terminal = 690 - final val targeting_laser_dispenser = 851 - final val teleportpad_terminal = 853 + final val order_terminal = 612 + final val order_terminala = 613 + final val order_terminalb = 614 + final val portable_ammo_terminal = 684 + final val portable_order_terminal = 690 + final val targeting_laser_dispenser = 851 + final val teleportpad_terminal = 853 // For property overrides - final val delivererv = 239 - final val apc = 62 - final val colossus = 179 - final val peregrine = 632 - final val aphelion = 79 - final val vshev = 964 - final val trhev = 884 - final val nchev = 583 - final val med_armor = 528 - final val heavy_armor = 390 - final val bfr_terminal = 143 - final val vshev_antiaircraft = 965 - final val vshev_antipersonnel = 966 - final val vshev_antivehicular = 967 - final val trhev_antiaircraft = 885 - final val trhev_antipersonnel = 886 - final val trhev_antivehicular = 887 - final val nchev_antiaircraft = 584 - final val nchev_antipersonnel = 585 - final val nchev_antivehicular = 586 - final val standard_issue_armor = 829 - final val lite_armor = 449 - final val air_vehicle_terminal = 43 - final val generic_bfr = 353 - final val stealth_armor = 837 + final val delivererv = 239 + final val apc = 62 + final val colossus = 179 + final val peregrine = 632 + final val aphelion = 79 + final val vshev = 964 + final val trhev = 884 + final val nchev = 583 + final val med_armor = 528 + final val heavy_armor = 390 + final val bfr_terminal = 143 + final val vshev_antiaircraft = 965 + final val vshev_antipersonnel = 966 + final val vshev_antivehicular = 967 + final val trhev_antiaircraft = 885 + final val trhev_antipersonnel = 886 + final val trhev_antivehicular = 887 + final val nchev_antiaircraft = 584 + final val nchev_antipersonnel = 585 + final val nchev_antivehicular = 586 + final val standard_issue_armor = 829 + final val lite_armor = 449 + final val air_vehicle_terminal = 43 + final val generic_bfr = 353 + final val stealth_armor = 837 final val vehicle_terminal_combined = 952 final val objectClassMap = scala.collection.mutable.Map[String, Int]() - def ByName(name : String) : Int = { + def ByName(name: String): Int = { // This whole thing is a dirty "temporary" hack so I don't have to make a huge map out of the above object vars by hand // Forgive me. - if(objectClassMap.size == 0) { + if (objectClassMap.size == 0) { val objectClassMethods = ObjectClass.getClass.getDeclaredMethods - objectClassMethods.foreach(x => { - if(x.getReturnType.getName == "int" && x.getParameterTypes.isEmpty) { // ints only & Ignore functions with parameters + objectClassMethods.foreach(x => { + if (x.getReturnType.getName == "int" && x.getParameterTypes.isEmpty) { // ints only & Ignore functions with parameters val objectName = x.getName - val value = ObjectClass.getClass.getMethod(objectName).invoke(ObjectClass) + val value = ObjectClass.getClass.getMethod(objectName).invoke(ObjectClass) objectClassMap.put(objectName, value.asInstanceOf[Int]) } }) @@ -457,98 +457,98 @@ object ObjectClass { * @return the `Codec` that handles the format of data for that particular item class, or a failing `Codec` * @see `ConstructorData` */ - def selectDataDetailedCodec(objClass : Int) : Codec[ConstructorData] = - (objClass : @switch) match { + def selectDataDetailedCodec(objClass: Int): Codec[ConstructorData] = + (objClass: @switch) match { //ammunition - case ObjectClass.bullet_105mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_12mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_150mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_15mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_20mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_25mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_35mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_75mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_9mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bullet_9mm_AP => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.ancient_ammo_combo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.ancient_ammo_vehicle => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.anniversary_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_105mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_12mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_150mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_15mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_20mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_25mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_35mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_75mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_9mm => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bullet_9mm_AP => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.ancient_ammo_combo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.ancient_ammo_vehicle => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.anniversary_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") case ObjectClass.aphelion_immolation_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.aphelion_laser_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.aphelion_plasma_rocket_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.aphelion_ppa_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.aphelion_starfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.armor_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.armor_siphon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.bolt => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.burster_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.colossus_100mm_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.colossus_burster_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.colossus_chaingun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.colossus_cluster_bomb_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.colossus_tank_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.comet_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.dualcycler_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.energy_cell => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.energy_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.falcon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.firebird_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.flamethrower_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.flux_cannon_thresher_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.fluxpod_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.frag_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.frag_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.gauss_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.grenade => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.health_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.heavy_grenade_mortar => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.heavy_rail_beam_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.hellfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.hunter_seeker_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.jammer_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.jammer_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.lancer_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.liberator_bomb => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.maelstrom_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.melee_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.mine => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.mine_sweeper_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.ntu_siphon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.oicw_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.pellet_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.aphelion_laser_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.aphelion_plasma_rocket_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.aphelion_ppa_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.aphelion_starfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.armor_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.armor_siphon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.bolt => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.burster_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.colossus_100mm_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.colossus_burster_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.colossus_chaingun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.colossus_cluster_bomb_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.colossus_tank_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.comet_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.dualcycler_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.energy_cell => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.energy_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.falcon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.firebird_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.flamethrower_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.flux_cannon_thresher_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.fluxpod_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.frag_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.frag_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.gauss_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.grenade => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.health_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.heavy_grenade_mortar => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.heavy_rail_beam_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.hellfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.hunter_seeker_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.jammer_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.jammer_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.lancer_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.liberator_bomb => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.maelstrom_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.melee_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.mine => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.mine_sweeper_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.ntu_siphon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.oicw_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.pellet_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") case ObjectClass.peregrine_dual_machine_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.peregrine_mechhammer_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.peregrine_particle_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.peregrine_rocket_pod_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.peregrine_sparrow_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.phalanx_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.phoenix_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.plasma_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.plasma_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.pounder_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.pulse_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.quasar_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.reaver_rocket => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.rocket => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.scattercannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.shotgun_shell => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.shotgun_shell_AP => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.six_shooter_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.skyguard_flak_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.sparrow_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.spitfire_aa_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.spitfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.starfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.striker_missile_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.trek_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.upgrade_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.wasp_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.wasp_rocket_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") - case ObjectClass.winchester_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.peregrine_mechhammer_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.peregrine_particle_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.peregrine_rocket_pod_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.peregrine_sparrow_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.phalanx_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.phoenix_missile => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.plasma_cartridge => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.plasma_grenade_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.pounder_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.pulse_battery => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.quasar_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.reaver_rocket => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.rocket => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.scattercannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.shotgun_shell => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.shotgun_shell_AP => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.six_shooter_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.skyguard_flak_cannon_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.sparrow_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.spitfire_aa_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.spitfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.starfire_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.striker_missile_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.trek_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.upgrade_canister => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.wasp_gun_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.wasp_rocket_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") + case ObjectClass.winchester_ammo => ConstructorData(DetailedAmmoBoxData.codec, "ammo box") //weapons case ObjectClass.beamer => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.cannon_dropship_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.anniversary_gun => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.anniversary_gun => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.anniversary_guna => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.anniversary_gunb => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.apc_ballgun_l => ConstructorData(DetailedWeaponData.codec, "weapon") @@ -581,7 +581,7 @@ object ObjectClass { // case ObjectClass.battlewagon_weapon_systemc => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.battlewagon_weapon_systemd => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.bolt_driver => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.chainblade => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.chainblade => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.colossus_burster => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.colossus_burster_left => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.colossus_burster_right => ConstructorData(DetailedWeaponData.codec, "weapon") @@ -601,10 +601,10 @@ object ObjectClass { // case ObjectClass.energy_gun_vs => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.flail_weapon => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.flamethrower => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.flechette => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.flechette => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.flux_cannon_thresher => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.fluxpod => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.forceblade => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.forceblade => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.fragmentation_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.fury_weapon_systema => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.galaxy_gunship_cannon => ConstructorData(DetailedWeaponData.codec, "weapon") @@ -614,15 +614,15 @@ object ObjectClass { // case ObjectClass.gauss_cannon => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.grenade_launcher_marauder => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.heavy_rail_beam_magrider => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.heavy_sniper => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.hellfire => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.hunterseeker => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.ilc9 => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.isp => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.heavy_sniper => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.hellfire => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.hunterseeker => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.ilc9 => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.isp => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.jammer_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.katana => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.lancer => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.lasher => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.katana => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.lancer => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.lasher => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.liberator_25mm_cannon => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.liberator_bomb_bay => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.liberator_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") @@ -632,11 +632,11 @@ object ObjectClass { case ObjectClass.magcutter => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.mediumtransport_weapon_systemA => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.mediumtransport_weapon_systemB => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.mini_chaingun => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.oicw => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.nchev_falcon => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.mini_chaingun => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.oicw => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.nchev_falcon => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.nchev_scattercannon => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.nchev_sparrow => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.nchev_sparrow => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.particle_beam_magrider => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.peregrine_dual_machine_gun => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.peregrine_dual_machine_gun_left => ConstructorData(DetailedWeaponData.codec, "weapon") @@ -656,88 +656,88 @@ object ObjectClass { // case ObjectClass.prowler_weapon_systemA => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.prowler_weapon_systemB => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.plasma_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.pulsar => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.pulsar => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.pulsed_particle_accelerator => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.punisher => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.quadassault_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.r_shotgun => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.radiator => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.repeater => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.rocklet => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.radiator => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.repeater => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.rocklet => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.rotarychaingun_mosquito => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.scythe => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.skyguard_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.spiker => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.spitfire_aa_weapon => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.spitfire_weapon => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.striker => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.striker => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.suppressor => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.thumper => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.thumper => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.thunderer_weapon_systema => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.thunderer_weapon_systemb => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.trhev_burster => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.trhev_burster => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.trhev_dualcycler => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.trhev_pounder => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.trhev_pounder => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.vanguard_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.vanu_sentry_turret_weapon => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.vshev_comet => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.vshev_comet => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.vshev_starfire => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.vshev_quasar => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.vshev_quasar => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.vulture_bomb_bay => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.vulture_nose_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.vulture_tail_cannon => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.wasp_weapon_system => ConstructorData(DetailedWeaponData.codec, "weapon") //other weapons - case ObjectClass.ace_deployable => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.ace_deployable => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.advanced_missile_launcher_t => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cannon_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cannon_75mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cannon_deliverer_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cannon_dropship_l_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.chaingun_12mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.chaingun_15mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.chaingun_p => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cycler_v2 => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cycler_v3 => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.cycler_v4 => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.dynomite => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.frag_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.generic_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.lightning_75mm => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.mine_sweeper => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.pellet_gun => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cannon_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cannon_75mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cannon_deliverer_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cannon_dropship_l_20mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.chaingun_12mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.chaingun_15mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.chaingun_p => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cycler_v2 => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cycler_v3 => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.cycler_v4 => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.dynomite => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.frag_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.generic_grenade => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.lightning_75mm => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.mine_sweeper => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.pellet_gun => ConstructorData(DetailedWeaponData.codec, "weapon") // case ObjectClass.phantasm_12mm_machinegun => ConstructorData(DetailedWeaponData.codec, "weapon") case ObjectClass.six_shooter => ConstructorData(DetailedWeaponData.codec, "weapon") - case ObjectClass.winchester => ConstructorData(DetailedWeaponData.codec, "weapon") + case ObjectClass.winchester => ConstructorData(DetailedWeaponData.codec, "weapon") //medkits - case ObjectClass.medkit => ConstructorData(DetailedAmmoBoxData.codec, "medkit") - case ObjectClass.super_armorkit => ConstructorData(DetailedAmmoBoxData.codec, "repair kit") - case ObjectClass.super_medkit => ConstructorData(DetailedAmmoBoxData.codec, "super medkit") + case ObjectClass.medkit => ConstructorData(DetailedAmmoBoxData.codec, "medkit") + case ObjectClass.super_armorkit => ConstructorData(DetailedAmmoBoxData.codec, "repair kit") + case ObjectClass.super_medkit => ConstructorData(DetailedAmmoBoxData.codec, "super medkit") case ObjectClass.super_staminakit => ConstructorData(DetailedAmmoBoxData.codec, "stamina kit") //tools - case ObjectClass.applicator => ConstructorData(DetailedWeaponData.codec, "tool") - case ObjectClass.bank => ConstructorData(DetailedWeaponData.codec, "tool") - case ObjectClass.command_detonater => ConstructorData(DetailedCommandDetonaterData.codec, "tool") - case ObjectClass.flail_targeting_laser => ConstructorData(DetailedCommandDetonaterData.codec, "tool") - case ObjectClass.medicalapplicator => ConstructorData(DetailedWeaponData.codec, "tool") - case ObjectClass.nano_dispenser => ConstructorData(DetailedWeaponData.codec, "tool") + case ObjectClass.applicator => ConstructorData(DetailedWeaponData.codec, "tool") + case ObjectClass.bank => ConstructorData(DetailedWeaponData.codec, "tool") + case ObjectClass.command_detonater => ConstructorData(DetailedCommandDetonaterData.codec, "tool") + case ObjectClass.flail_targeting_laser => ConstructorData(DetailedCommandDetonaterData.codec, "tool") + case ObjectClass.medicalapplicator => ConstructorData(DetailedWeaponData.codec, "tool") + case ObjectClass.nano_dispenser => ConstructorData(DetailedWeaponData.codec, "tool") case ObjectClass.remote_electronics_kit => ConstructorData(DetailedREKData.codec, "tool") - case ObjectClass.trek => ConstructorData(DetailedWeaponData.codec, "tool") + case ObjectClass.trek => ConstructorData(DetailedWeaponData.codec, "tool") //ace deployable - case ObjectClass.ace => ConstructorData(DetailedConstructionToolData.codec, "ace") - case ObjectClass.advanced_ace => ConstructorData(DetailedConstructionToolData.codec, "advanced ace") + case ObjectClass.ace => ConstructorData(DetailedConstructionToolData.codec, "ace") + case ObjectClass.advanced_ace => ConstructorData(DetailedConstructionToolData.codec, "advanced ace") case ObjectClass.router_telepad => ConstructorData(DetailedConstructionToolData.codec, "router telepad") case ObjectClass.boomer_trigger => ConstructorData(DetailedConstructionToolData.codec, "boomer trigger") //other - case ObjectClass.avatar => ConstructorData(DetailedPlayerData.codec(false), "avatar") + case ObjectClass.avatar => ConstructorData(DetailedPlayerData.codec(false), "avatar") case ObjectClass.locker_container => ConstructorData(DetailedLockerContainerData.codec, "locker container") //failure case case _ => defaultFailureCodec(objClass) } - def selectDataDroppedDetailedCodec(objClass : Int) : Codec[ConstructorData] = - (objClass : @switch) match { + def selectDataDroppedDetailedCodec(objClass: Int): Codec[ConstructorData] = + (objClass: @switch) match { //special cases case ObjectClass.avatar => ConstructorData(DetailedPlayerData.codec(true), "avatar") //defer to other codec selection @@ -753,296 +753,296 @@ object ObjectClass { * @return the `Codec` that handles the format of data for that particular item class, or a failing `Codec` * @see `ConstructorData` */ - def selectDataCodec(objClass : Int) : Codec[ConstructorData] = - (objClass : @switch) match { + def selectDataCodec(objClass: Int): Codec[ConstructorData] = + (objClass: @switch) match { //ammunition - case ObjectClass.bullet_105mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_12mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_150mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_15mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_20mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_25mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_35mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_75mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_9mm => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_9mm_AP => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ancient_ammo_combo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ancient_ammo_vehicle => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.anniversary_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_105mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_12mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_150mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_15mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_20mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_25mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_35mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_75mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_9mm => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_9mm_AP => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ancient_ammo_combo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ancient_ammo_vehicle => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.anniversary_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") case ObjectClass.aphelion_immolation_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_laser_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_plasma_rocket_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_ppa_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_starfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.armor_canister => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.armor_siphon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bolt => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.burster_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_100mm_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_burster_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_chaingun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_cluster_bomb_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_tank_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.comet_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.dualcycler_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.energy_cell => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.energy_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.falcon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.firebird_missile => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.flamethrower_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.flux_cannon_thresher_battery => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.fluxpod_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.frag_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.frag_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.gauss_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.grenade => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.health_canister => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.heavy_grenade_mortar => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.heavy_rail_beam_battery => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.hellfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.hunter_seeker_missile => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.jammer_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.jammer_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.lancer_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.liberator_bomb => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.maelstrom_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.melee_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.mine => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.mine_sweeper_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ntu_siphon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.oicw_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pellet_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_laser_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_plasma_rocket_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_ppa_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_starfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.armor_canister => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.armor_siphon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bolt => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.burster_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_100mm_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_burster_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_chaingun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_cluster_bomb_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_tank_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.comet_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.dualcycler_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.energy_cell => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.energy_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.falcon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.firebird_missile => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.flamethrower_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.flux_cannon_thresher_battery => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.fluxpod_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.frag_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.frag_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.gauss_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.grenade => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.health_canister => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.heavy_grenade_mortar => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.heavy_rail_beam_battery => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.hellfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.hunter_seeker_missile => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.jammer_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.jammer_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.lancer_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.liberator_bomb => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.maelstrom_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.melee_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.mine => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.mine_sweeper_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ntu_siphon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.oicw_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pellet_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") case ObjectClass.peregrine_dual_machine_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_mechhammer_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_particle_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_rocket_pod_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_sparrow_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.phalanx_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.phoenix_missile => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.plasma_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.plasma_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pounder_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pulse_battery => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.quasar_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.reaver_rocket => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.rocket => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.scattercannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.shotgun_shell => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.shotgun_shell_AP => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.six_shooter_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.skyguard_flak_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.sparrow_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.spitfire_aa_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.spitfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.starfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.striker_missile_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.trek_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.upgrade_canister => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.wasp_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.wasp_rocket_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") - case ObjectClass.winchester_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_mechhammer_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_particle_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_rocket_pod_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_sparrow_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.phalanx_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.phoenix_missile => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.plasma_cartridge => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.plasma_grenade_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pounder_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pulse_battery => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.quasar_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.reaver_rocket => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.rocket => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.scattercannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.shotgun_shell => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.shotgun_shell_AP => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.six_shooter_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.skyguard_flak_cannon_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.sparrow_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.spitfire_aa_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.spitfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.starfire_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.striker_missile_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.trek_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.upgrade_canister => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.wasp_gun_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.wasp_rocket_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") + case ObjectClass.winchester_ammo => ConstructorData(CommonFieldData.codec2, "ammo box") //weapons - case ObjectClass.beamer => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.anniversary_gun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.anniversary_guna => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.anniversary_gunb => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_ballgun_l => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_ballgun_r => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systema => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemc => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemc_nc => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemc_tr => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemc_vs => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemd => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemd_nc => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemd_tr => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.apc_weapon_systemd_vs => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_immolation_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_laser => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_laser_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_laser_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_plasma_rocket_pod => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_ppa => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_ppa_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_ppa_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_starfire => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_starfire_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aphelion_starfire_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aurora_weapon_systema => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.aurora_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.battlewagon_weapon_systema => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.battlewagon_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.battlewagon_weapon_systemc => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.battlewagon_weapon_systemd => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.bolt_driver => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.chainblade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.chaingun_p => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_burster => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_burster_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_burster_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_chaingun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_chaingun_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_chaingun_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_cluster_bomb_pod => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_dual_100mm_cannons => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_tank_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_tank_cannon_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.colossus_tank_cannon_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cycler => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.dropship_rear_turret => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.energy_gun_nc => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.energy_gun_tr => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.energy_gun_vs => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.flail_weapon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.flamethrower => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.flechette => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.flux_cannon_thresher => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.fluxpod => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.forceblade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.fragmentation_grenade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.fury_weapon_systema => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.galaxy_gunship_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.galaxy_gunship_gun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.galaxy_gunship_tailgun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.gauss => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.gauss_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.grenade_launcher_marauder => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.heavy_rail_beam_magrider => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.heavy_sniper => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.hellfire => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.hunterseeker => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.ilc9 => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.isp => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.jammer_grenade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.katana => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.lancer => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.lasher => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.liberator_25mm_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.liberator_bomb_bay => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.liberator_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.lightgunship_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.lightning_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.maelstrom => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.magcutter => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.mediumtransport_weapon_systemA => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.mediumtransport_weapon_systemB => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.mini_chaingun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.nchev_falcon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.nchev_scattercannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.nchev_sparrow => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.oicw => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.particle_beam_magrider => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.pellet_gun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_dual_machine_gun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_dual_machine_gun_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.beamer => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.anniversary_gun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.anniversary_guna => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.anniversary_gunb => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_ballgun_l => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_ballgun_r => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systema => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemc => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemc_nc => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemc_tr => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemc_vs => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemd => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemd_nc => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemd_tr => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.apc_weapon_systemd_vs => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_immolation_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_laser => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_laser_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_laser_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_plasma_rocket_pod => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_ppa => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_ppa_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_ppa_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_starfire => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_starfire_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aphelion_starfire_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aurora_weapon_systema => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.aurora_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.battlewagon_weapon_systema => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.battlewagon_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.battlewagon_weapon_systemc => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.battlewagon_weapon_systemd => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.bolt_driver => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.chainblade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.chaingun_p => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_burster => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_burster_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_burster_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_chaingun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_chaingun_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_chaingun_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_cluster_bomb_pod => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_dual_100mm_cannons => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_tank_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_tank_cannon_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.colossus_tank_cannon_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cycler => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.dropship_rear_turret => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.energy_gun_nc => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.energy_gun_tr => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.energy_gun_vs => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.flail_weapon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.flamethrower => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.flechette => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.flux_cannon_thresher => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.fluxpod => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.forceblade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.fragmentation_grenade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.fury_weapon_systema => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.galaxy_gunship_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.galaxy_gunship_gun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.galaxy_gunship_tailgun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.gauss => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.gauss_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.grenade_launcher_marauder => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.heavy_rail_beam_magrider => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.heavy_sniper => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.hellfire => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.hunterseeker => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.ilc9 => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.isp => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.jammer_grenade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.katana => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.lancer => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.lasher => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.liberator_25mm_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.liberator_bomb_bay => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.liberator_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.lightgunship_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.lightning_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.maelstrom => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.magcutter => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.mediumtransport_weapon_systemA => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.mediumtransport_weapon_systemB => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.mini_chaingun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.nchev_falcon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.nchev_scattercannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.nchev_sparrow => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.oicw => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.particle_beam_magrider => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.pellet_gun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_dual_machine_gun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_dual_machine_gun_left => ConstructorData(WeaponData.codec, "weapon") case ObjectClass.peregrine_dual_machine_gun_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_dual_rocket_pods => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_mechhammer => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_mechhammer_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_mechhammer_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_particle_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_sparrow => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_sparrow_left => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.peregrine_sparrow_right => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.phalanx_avcombo => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.phalanx_flakcombo => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.phalanx_sgl_hevgatcan => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.phoenix => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.plasma_grenade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.prowler_weapon_systemA => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.prowler_weapon_systemB => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.pulsar => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.pulsed_particle_accelerator => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.punisher => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.quadassault_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.r_shotgun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.radiator => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.repeater => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.rocklet => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.rotarychaingun_mosquito => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.scythe => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.skyguard_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.spiker => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.spitfire_aa_weapon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.spitfire_weapon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.striker => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.suppressor => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.thumper => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.thunderer_weapon_systema => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.thunderer_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.trhev_burster => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.trhev_dualcycler => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.trhev_pounder => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vanguard_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vanu_sentry_turret_weapon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vshev_comet => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vshev_quasar => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vshev_starfire => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vulture_bomb_bay => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vulture_nose_weapon_system => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.vulture_tail_cannon => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.wasp_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_dual_rocket_pods => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_mechhammer => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_mechhammer_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_mechhammer_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_particle_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_sparrow => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_sparrow_left => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.peregrine_sparrow_right => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.phalanx_avcombo => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.phalanx_flakcombo => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.phalanx_sgl_hevgatcan => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.phoenix => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.plasma_grenade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.prowler_weapon_systemA => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.prowler_weapon_systemB => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.pulsar => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.pulsed_particle_accelerator => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.punisher => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.quadassault_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.r_shotgun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.radiator => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.repeater => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.rocklet => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.rotarychaingun_mosquito => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.scythe => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.skyguard_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.spiker => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.spitfire_aa_weapon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.spitfire_weapon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.striker => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.suppressor => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.thumper => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.thunderer_weapon_systema => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.thunderer_weapon_systemb => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.trhev_burster => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.trhev_dualcycler => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.trhev_pounder => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vanguard_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vanu_sentry_turret_weapon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vshev_comet => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vshev_quasar => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vshev_starfire => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vulture_bomb_bay => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vulture_nose_weapon_system => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.vulture_tail_cannon => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.wasp_weapon_system => ConstructorData(WeaponData.codec, "weapon") //other weapons - case ObjectClass.ace_deployable => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.ace_deployable => ConstructorData(WeaponData.codec, "weapon") case ObjectClass.advanced_missile_launcher_t => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cannon_20mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cannon_75mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cannon_deliverer_20mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cannon_dropship_l_20mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cannon_dropship_20mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.chaingun_12mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.chaingun_15mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v2 => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v3 => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v4 => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.dynomite => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.energy_gun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.frag_grenade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.generic_grenade => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.lightning_75mm => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.mine_sweeper => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.phantasm_12mm_machinegun => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.six_shooter => ConstructorData(WeaponData.codec, "weapon") - case ObjectClass.winchester => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cannon_20mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cannon_75mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cannon_deliverer_20mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cannon_dropship_l_20mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cannon_dropship_20mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.chaingun_12mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.chaingun_15mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v2 => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v3 => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v4 => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.dynomite => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.energy_gun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.frag_grenade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.generic_grenade => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.lightning_75mm => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.mine_sweeper => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.phantasm_12mm_machinegun => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.six_shooter => ConstructorData(WeaponData.codec, "weapon") + case ObjectClass.winchester => ConstructorData(WeaponData.codec, "weapon") //medkits - case ObjectClass.medkit => ConstructorData(CommonFieldData.codec2, "medkit") - case ObjectClass.super_armorkit => ConstructorData(CommonFieldData.codec2, "repair kit") - case ObjectClass.super_medkit => ConstructorData(CommonFieldData.codec2, "super medkit") + case ObjectClass.medkit => ConstructorData(CommonFieldData.codec2, "medkit") + case ObjectClass.super_armorkit => ConstructorData(CommonFieldData.codec2, "repair kit") + case ObjectClass.super_medkit => ConstructorData(CommonFieldData.codec2, "super medkit") case ObjectClass.super_staminakit => ConstructorData(CommonFieldData.codec2, "stamina kit") //tools - case ObjectClass.applicator => ConstructorData(WeaponData.codec, "tool") - case ObjectClass.bank => ConstructorData(WeaponData.codec, "tool") - case ObjectClass.command_detonater => ConstructorData(HandheldData.codec, "tool") - case ObjectClass.flail_targeting_laser => ConstructorData(HandheldData.codec, "tool") - case ObjectClass.medicalapplicator => ConstructorData(WeaponData.codec, "tool") - case ObjectClass.nano_dispenser => ConstructorData(WeaponData.codec, "tool") + case ObjectClass.applicator => ConstructorData(WeaponData.codec, "tool") + case ObjectClass.bank => ConstructorData(WeaponData.codec, "tool") + case ObjectClass.command_detonater => ConstructorData(HandheldData.codec, "tool") + case ObjectClass.flail_targeting_laser => ConstructorData(HandheldData.codec, "tool") + case ObjectClass.medicalapplicator => ConstructorData(WeaponData.codec, "tool") + case ObjectClass.nano_dispenser => ConstructorData(WeaponData.codec, "tool") case ObjectClass.remote_electronics_kit => ConstructorData(REKData.codec, "tool") - case ObjectClass.trek => ConstructorData(WeaponData.codec, "tool") + case ObjectClass.trek => ConstructorData(WeaponData.codec, "tool") //deployables - case ObjectClass.ace => ConstructorData(HandheldData.codec, "ace") - case ObjectClass.advanced_ace => ConstructorData(HandheldData.codec, "advanced ace") - case ObjectClass.router_telepad => ConstructorData(HandheldData.codec, "router telepad") + case ObjectClass.ace => ConstructorData(HandheldData.codec, "ace") + case ObjectClass.advanced_ace => ConstructorData(HandheldData.codec, "advanced ace") + case ObjectClass.router_telepad => ConstructorData(HandheldData.codec, "router telepad") case ObjectClass.router_telepad_deployable => ConstructorData(TelepadDeployableData.codec, "router telepad") - case ObjectClass.boomer_trigger => ConstructorData(HandheldData.codec, "boomer trigger") + case ObjectClass.boomer_trigger => ConstructorData(HandheldData.codec, "boomer trigger") //vehicles? case ObjectClass.orbital_shuttle => ConstructorData(OrbitalShuttleData.codec, "HART") //other - case ObjectClass.ams_order_terminal => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.ams_respawn_tube => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.avatar => ConstructorData(PlayerData.codec(false), "avatar") - case ObjectClass.bfr_rearm_terminal => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.implant_terminal_interface => ConstructorData(CommonFieldData.codec2, "implant terminal") - case ObjectClass.lodestar_repair_terminal => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.matrix_terminala => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.matrix_terminalb => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.matrix_terminalc => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.ams_order_terminal => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.ams_respawn_tube => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.avatar => ConstructorData(PlayerData.codec(false), "avatar") + case ObjectClass.bfr_rearm_terminal => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.implant_terminal_interface => ConstructorData(CommonFieldData.codec2, "implant terminal") + case ObjectClass.lodestar_repair_terminal => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.matrix_terminala => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.matrix_terminalb => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.matrix_terminalc => ConstructorData(CommonFieldData.codec2, "terminal") case ObjectClass.multivehicle_rearm_terminal => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminal => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminala => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminalb => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.targeting_laser_dispenser => ConstructorData(CommonFieldData.codec2, "terminal") - case ObjectClass.teleportpad_terminal => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminal => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminala => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminalb => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.targeting_laser_dispenser => ConstructorData(CommonFieldData.codec2, "terminal") + case ObjectClass.teleportpad_terminal => ConstructorData(CommonFieldData.codec2, "terminal") //failure case case _ => defaultFailureCodec(objClass) } @@ -1056,97 +1056,97 @@ object ObjectClass { * @return the `Codec` that handles the format of data for that particular item class, or a failing `Codec` * @see `ConstructorData` */ - def selectDataDroppedCodec(objClass : Int) : Codec[ConstructorData] = - (objClass : @switch) match { + def selectDataDroppedCodec(objClass: Int): Codec[ConstructorData] = + (objClass: @switch) match { //ammunition - case ObjectClass.bullet_105mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_12mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_150mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_15mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_20mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_25mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_35mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_75mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_9mm => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bullet_9mm_AP => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ancient_ammo_combo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ancient_ammo_vehicle => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.anniversary_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_105mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_12mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_150mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_15mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_20mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_25mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_35mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_75mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_9mm => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bullet_9mm_AP => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ancient_ammo_combo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ancient_ammo_vehicle => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.anniversary_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.aphelion_immolation_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_laser_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_plasma_rocket_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_ppa_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.aphelion_starfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.armor_canister => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.armor_siphon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.bolt => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.burster_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_100mm_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_burster_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_chaingun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_cluster_bomb_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.colossus_tank_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.comet_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.dualcycler_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.energy_cell => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.energy_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.falcon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.firebird_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.flamethrower_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.flux_cannon_thresher_battery => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.fluxpod_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.frag_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_laser_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_plasma_rocket_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_ppa_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.aphelion_starfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.armor_canister => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.armor_siphon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.bolt => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.burster_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_100mm_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_burster_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_chaingun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_cluster_bomb_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.colossus_tank_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.comet_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.dualcycler_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.energy_cell => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.energy_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.falcon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.firebird_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.flamethrower_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.flux_cannon_thresher_battery => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.fluxpod_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.frag_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") // case ObjectClass.frag_grenade_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.gauss_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.grenade => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.health_canister => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.heavy_grenade_mortar => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.gauss_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.grenade => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.health_canister => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.heavy_grenade_mortar => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.heavy_rail_beam_battery => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.hellfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.hunter_seeker_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.jammer_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.hellfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.hunter_seeker_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.jammer_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") // case ObjectClass.jammer_grenade_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.lancer_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.liberator_bomb => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.maelstrom_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.melee_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.mine => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.mine_sweeper_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.ntu_siphon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.oicw_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pellet_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.lancer_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.liberator_bomb => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.maelstrom_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.melee_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.mine => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.mine_sweeper_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.ntu_siphon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.oicw_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pellet_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.peregrine_dual_machine_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_mechhammer_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_particle_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_rocket_pod_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.peregrine_sparrow_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.phalanx_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.phoenix_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.plasma_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_mechhammer_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_particle_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_rocket_pod_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.peregrine_sparrow_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.phalanx_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.phoenix_missile => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.plasma_cartridge => DroppedItemData(CommonFieldData.codec2, "ammo box") // case ObjectClass.plasma_grenade_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pounder_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.pulse_battery => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.quasar_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.reaver_rocket => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.rocket => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.scattercannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.shotgun_shell => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.shotgun_shell_AP => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.six_shooter_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pounder_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.pulse_battery => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.quasar_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.reaver_rocket => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.rocket => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.scattercannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.shotgun_shell => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.shotgun_shell_AP => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.six_shooter_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.skyguard_flak_cannon_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.sparrow_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.spitfire_aa_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.spitfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.starfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.striker_missile_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.sparrow_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.spitfire_aa_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.spitfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.starfire_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.striker_missile_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") // case ObjectClass.trek_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.upgrade_canister => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.wasp_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.wasp_gun_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") case ObjectClass.wasp_rocket_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") - case ObjectClass.winchester_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") + case ObjectClass.winchester_ammo => DroppedItemData(CommonFieldData.codec2, "ammo box") //weapons - case ObjectClass.beamer => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.anniversary_gun => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.beamer => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.anniversary_gun => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.anniversary_guna => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.anniversary_gunb => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.aphelion_immolation_cannon => DroppedItemData(WeaponData.codec, "weapon") @@ -1161,7 +1161,7 @@ object ObjectClass { // case ObjectClass.aphelion_starfire_left => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.aphelion_starfire_right => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.bolt_driver => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.chainblade => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.chainblade => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.chaingun_p => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.colossus_burster => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.colossus_burster_left => DroppedItemData(WeaponData.codec, "weapon") @@ -1179,24 +1179,24 @@ object ObjectClass { // case ObjectClass.energy_gun_nc => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.energy_gun_tr => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.energy_gun_vs => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.flamethrower => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.flechette => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.forceblade => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.flamethrower => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.flechette => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.forceblade => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.fragmentation_grenade => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.gauss => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.heavy_sniper => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.gauss => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.heavy_sniper => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.hellfire => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.hunterseeker => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.ilc9 => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.isp => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.hunterseeker => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.ilc9 => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.isp => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.jammer_grenade => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.katana => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.lancer => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.lasher => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.maelstrom => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.magcutter => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.mini_chaingun => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.oicw => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.katana => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.lancer => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.lasher => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.maelstrom => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.magcutter => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.mini_chaingun => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.oicw => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.peregrine_dual_machine_gun => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.peregrine_dual_machine_gun_left => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.peregrine_dual_machine_gun_right => DroppedItemData(WeaponData.codec, "weapon") @@ -1208,166 +1208,167 @@ object ObjectClass { // case ObjectClass.peregrine_sparrow => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.peregrine_sparrow_left => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.peregrine_sparrow_right => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.phoenix => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.pulsar => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.phoenix => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.pulsar => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.plasma_grenade => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.punisher => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.r_shotgun => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.radiator => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.repeater => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.rocklet => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.spiker => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.punisher => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.r_shotgun => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.radiator => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.repeater => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.rocklet => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.spiker => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.spitfire_aa_weapon => DroppedItemData(WeaponData.codec, "weapon") // case ObjectClass.spitfire_weapon => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.striker => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.striker => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.suppressor => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.thumper => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.thumper => DroppedItemData(WeaponData.codec, "weapon") //other weapons - case ObjectClass.ace_deployable => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.ace_deployable => DroppedItemData(WeaponData.codec, "weapon") case ObjectClass.advanced_missile_launcher_t => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.chaingun_12mm => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.chaingun_15mm => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v2 => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v3 => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.cycler_v4 => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.dynomite => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.frag_grenade => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.generic_grenade => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.mine_sweeper => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.pellet_gun => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.six_shooter => DroppedItemData(WeaponData.codec, "weapon") - case ObjectClass.winchester => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.chaingun_12mm => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.chaingun_15mm => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v2 => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v3 => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.cycler_v4 => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.dynomite => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.frag_grenade => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.generic_grenade => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.mine_sweeper => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.pellet_gun => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.six_shooter => DroppedItemData(WeaponData.codec, "weapon") + case ObjectClass.winchester => DroppedItemData(WeaponData.codec, "weapon") //medkits - case ObjectClass.medkit => DroppedItemData(CommonFieldData.codec2, "medkit") - case ObjectClass.super_armorkit => DroppedItemData(CommonFieldData.codec2, "repair kit") - case ObjectClass.super_medkit => DroppedItemData(CommonFieldData.codec2, "super medkit") + case ObjectClass.medkit => DroppedItemData(CommonFieldData.codec2, "medkit") + case ObjectClass.super_armorkit => DroppedItemData(CommonFieldData.codec2, "repair kit") + case ObjectClass.super_medkit => DroppedItemData(CommonFieldData.codec2, "super medkit") case ObjectClass.super_staminakit => DroppedItemData(CommonFieldData.codec2, "stamina kit") //tools - case ObjectClass.applicator => DroppedItemData(WeaponData.codec, "tool") - case ObjectClass.bank => DroppedItemData(WeaponData.codec, "tool") - case ObjectClass.command_detonater => DroppedItemData(HandheldData.codec, "tool") - case ObjectClass.flail_targeting_laser => DroppedItemData(HandheldData.codec, "tool") - case ObjectClass.medicalapplicator => DroppedItemData(WeaponData.codec, "tool") - case ObjectClass.nano_dispenser => DroppedItemData(WeaponData.codec, "tool") + case ObjectClass.applicator => DroppedItemData(WeaponData.codec, "tool") + case ObjectClass.bank => DroppedItemData(WeaponData.codec, "tool") + case ObjectClass.command_detonater => DroppedItemData(HandheldData.codec, "tool") + case ObjectClass.flail_targeting_laser => DroppedItemData(HandheldData.codec, "tool") + case ObjectClass.medicalapplicator => DroppedItemData(WeaponData.codec, "tool") + case ObjectClass.nano_dispenser => DroppedItemData(WeaponData.codec, "tool") case ObjectClass.remote_electronics_kit => DroppedItemData(REKData.codec, " tool") - case ObjectClass.trek => DroppedItemData(WeaponData.codec, "tool") + case ObjectClass.trek => DroppedItemData(WeaponData.codec, "tool") //deployables - case ObjectClass.ace => DroppedItemData(HandheldData.codec, "ace") - case ObjectClass.advanced_ace => DroppedItemData(HandheldData.codec, "advanced ace") - case ObjectClass.router_telepad => DroppedItemData(HandheldData.codec, "router telepad") - case ObjectClass.boomer_trigger => DroppedItemData(HandheldData.codec, "boomer trigger") - case ObjectClass.boomer => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") - case ObjectClass.he_mine => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") - case ObjectClass.jammer_mine => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") + case ObjectClass.ace => DroppedItemData(HandheldData.codec, "ace") + case ObjectClass.advanced_ace => DroppedItemData(HandheldData.codec, "advanced ace") + case ObjectClass.router_telepad => DroppedItemData(HandheldData.codec, "router telepad") + case ObjectClass.boomer_trigger => DroppedItemData(HandheldData.codec, "boomer trigger") + case ObjectClass.boomer => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") + case ObjectClass.he_mine => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") + case ObjectClass.jammer_mine => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") case ObjectClass.motionalarmsensor => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") - case ObjectClass.sensor_shield => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") - case ObjectClass.spitfire_aa => ConstructorData(SmallTurretData.codec, "small turret") - case ObjectClass.spitfire_cloaked => ConstructorData(SmallTurretData.codec, "small turret") - case ObjectClass.spitfire_turret => ConstructorData(SmallTurretData.codec, "small turret") - case ObjectClass.tank_traps => ConstructorData(TRAPData.codec, "trap") - case ObjectClass.deployable_shield_generator => ConstructorData(AegisShieldGeneratorData.codec, "shield generator") - case ObjectClass.portable_manned_turret => ConstructorData(OneMannedFieldTurretData.codec, "field turret") + case ObjectClass.sensor_shield => ConstructorData(CommonFieldDataWithPlacement.codec2, "ace deployable") + case ObjectClass.spitfire_aa => ConstructorData(SmallTurretData.codec, "small turret") + case ObjectClass.spitfire_cloaked => ConstructorData(SmallTurretData.codec, "small turret") + case ObjectClass.spitfire_turret => ConstructorData(SmallTurretData.codec, "small turret") + case ObjectClass.tank_traps => ConstructorData(TRAPData.codec, "trap") + case ObjectClass.deployable_shield_generator => + ConstructorData(AegisShieldGeneratorData.codec, "shield generator") + case ObjectClass.portable_manned_turret => ConstructorData(OneMannedFieldTurretData.codec, "field turret") case ObjectClass.portable_manned_turret_nc => ConstructorData(OneMannedFieldTurretData.codec, "field turret") case ObjectClass.portable_manned_turret_tr => ConstructorData(OneMannedFieldTurretData.codec, "field turret") case ObjectClass.portable_manned_turret_vs => ConstructorData(OneMannedFieldTurretData.codec, "field turret") case ObjectClass.router_telepad_deployable => DroppedItemData(TelepadDeployableData.codec, "telepad deployable") //projectiles - case ObjectClass.hunter_seeker_missile_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.meteor_common => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_b_large => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_b_medium => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_b_small => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_large => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_medium => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.meteor_projectile_small => ConstructorData(RemoteProjectileData.codec, "meteor") - case ObjectClass.phoenix_missile_guided_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.oicw_little_buddy => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.oicw_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.sparrow_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.starfire_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.hunter_seeker_missile_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.meteor_common => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_b_large => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_b_medium => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_b_small => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_large => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_medium => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.meteor_projectile_small => ConstructorData(RemoteProjectileData.codec, "meteor") + case ObjectClass.phoenix_missile_guided_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.oicw_little_buddy => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.oicw_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.sparrow_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.starfire_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") case ObjectClass.striker_missile_targeting_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") - case ObjectClass.wasp_rocket_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") + case ObjectClass.wasp_rocket_projectile => ConstructorData(RemoteProjectileData.codec, "projectile") //vehicles - case ObjectClass.ams => ConstructorData(VehicleData.codec(VehicleFormat.Utility), "ams") + case ObjectClass.ams => ConstructorData(VehicleData.codec(VehicleFormat.Utility), "ams") case ObjectClass.ams_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.ant => ConstructorData(VehicleData.codec(VehicleFormat.Utility), "ant") + case ObjectClass.ant => ConstructorData(VehicleData.codec(VehicleFormat.Utility), "ant") case ObjectClass.ant_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") case ObjectClass.apc_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.apc_nc => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.apc_tr => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.apc_vs => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.apc_nc => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.apc_tr => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.apc_vs => ConstructorData(VehicleData.codec, "vehicle") //case ObjectClass.aphelion_destroyed => normal @ 0 health case ObjectClass.aphelion_flight => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") case ObjectClass.aphelion_gunner => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") - case ObjectClass.aurora => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.battlewagon => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.aurora => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.battlewagon => ConstructorData(VehicleData.codec, "vehicle") //case ObjectClass.colossus_destroyed => normal @ 0 health - case ObjectClass.colossus_flight => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") - case ObjectClass.colossus_gunner => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") - case ObjectClass.droppod => ConstructorData(DroppodData.codec, "droppod") - case ObjectClass.dropship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.dropship_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.flail => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.flail_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.fury => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.galaxy_gunship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.liberator => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.liberator_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.lightgunship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.lightgunship_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.lightning => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.lightning_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.lodestar => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.lodestar_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.magrider => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.magrider_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.mediumtransport => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.colossus_flight => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") + case ObjectClass.colossus_gunner => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") + case ObjectClass.droppod => ConstructorData(DroppodData.codec, "droppod") + case ObjectClass.dropship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.dropship_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.flail => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.flail_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.fury => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.galaxy_gunship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.liberator => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.liberator_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.lightgunship => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.lightgunship_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.lightning => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.lightning_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.lodestar => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.lodestar_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.magrider => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.magrider_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.mediumtransport => ConstructorData(VehicleData.codec, "vehicle") case ObjectClass.mediumtransport_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.mosquito => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.mosquito_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.orbital_shuttle => ConstructorData(OrbitalShuttleData.codec_pos, "HART") + case ObjectClass.mosquito => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.mosquito_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.orbital_shuttle => ConstructorData(OrbitalShuttleData.codec_pos, "HART") //case ObjectClass.peregrine_destroyed => normal @ 0 health case ObjectClass.peregrine_flight => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") case ObjectClass.peregrine_gunner => ConstructorData(VehicleData.codec(VehicleFormat.Battleframe), "vehicle") - case ObjectClass.phantasm => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.phantasm => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") //case ObjectClass.phantasm_destroyed => normal @ 0 health - case ObjectClass.prowler => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.prowler_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.quadassault => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.quadassault_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.quadstealth => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.quadstealth_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.router => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.router_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.skyguard => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.skyguard_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.switchblade => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.switchblade_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.threemanheavybuggy => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.threemanheavybuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.thunderer => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.two_man_assault_buggy => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.prowler => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.prowler_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.quadassault => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.quadassault_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.quadstealth => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.quadstealth_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.router => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.router_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.skyguard => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.skyguard_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.switchblade => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.switchblade_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.threemanheavybuggy => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.threemanheavybuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.thunderer => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.two_man_assault_buggy => ConstructorData(VehicleData.codec, "vehicle") case ObjectClass.two_man_assault_buggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.twomanheavybuggy => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.twomanheavybuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.twomanhoverbuggy => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.twomanhoverbuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.vanguard => ConstructorData(VehicleData.codec, "vehicle") - case ObjectClass.vanguard_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") - case ObjectClass.vulture => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") - case ObjectClass.wasp => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.twomanheavybuggy => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.twomanheavybuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.twomanhoverbuggy => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.twomanhoverbuggy_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.vanguard => ConstructorData(VehicleData.codec, "vehicle") + case ObjectClass.vanguard_destroyed => ConstructorData(DestroyedVehicleData.codec, "wreckage") + case ObjectClass.vulture => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") + case ObjectClass.wasp => ConstructorData(VehicleData.codec(VehicleFormat.Variant), "vehicle") //other - case ObjectClass.ams_respawn_tube => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.avatar => ConstructorData(PlayerData.codec(true), "avatar") - case ObjectClass.capture_flag => ConstructorData(CaptureFlagData.codec, "capture flag") + case ObjectClass.ams_respawn_tube => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.avatar => ConstructorData(PlayerData.codec(true), "avatar") + case ObjectClass.capture_flag => ConstructorData(CaptureFlagData.codec, "capture flag") case ObjectClass.implant_terminal_interface => ConstructorData(CommonFieldData.codec2, "implant terminal") - case ObjectClass.locker_container => ConstructorData(LockerContainerData.codec, "locker container") - case ObjectClass.matrix_terminala => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.matrix_terminalb => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.matrix_terminalc => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminal => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminala => DroppedItemData(CommonFieldData.codec2, "terminal") - case ObjectClass.order_terminalb => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.locker_container => ConstructorData(LockerContainerData.codec, "locker container") + case ObjectClass.matrix_terminala => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.matrix_terminalb => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.matrix_terminalc => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminal => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminala => DroppedItemData(CommonFieldData.codec2, "terminal") + case ObjectClass.order_terminalb => DroppedItemData(CommonFieldData.codec2, "terminal") //failure case case _ => defaultFailureCodec(objClass) } @@ -1377,8 +1378,8 @@ object ObjectClass { * @param cls the object class whose `Codec` we have failed to find; * @return a failure */ - private def defaultFailureCodec(cls : Int) : Codec[ConstructorData] = { - conditional(cls == 0, bool).exmap[ConstructorData] ( + private def defaultFailureCodec(cls: Int): Codec[ConstructorData] = { + conditional(cls == 0, bool).exmap[ConstructorData]( _ => Attempt.failure(Err(s"decoding unknown object class $cls")), _ => Attempt.failure(Err(s"encoding unknown object class $cls")) ) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectCreateBase.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectCreateBase.scala index 88becd39..3ba1ed4b 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectCreateBase.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/ObjectCreateBase.scala @@ -35,13 +35,12 @@ import scodec.codecs._ * @param slot a parent-defined slot identifier that explains where the child is to be attached to the parent; * encoded as the length field of a Pascal string */ -final case class ObjectCreateMessageParent(guid : PlanetSideGUID, - slot : Int) +final case class ObjectCreateMessageParent(guid: PlanetSideGUID, slot: Int) object ObjectCreateBase { private[this] val log = org.log4s.getLogger("ObjectCreate") - private type basePattern = Long :: Int :: PlanetSideGUID :: Option[ObjectCreateMessageParent] :: BitVector :: HNil + private type basePattern = Long :: Int :: PlanetSideGUID :: Option[ObjectCreateMessageParent] :: BitVector :: HNil private type parentPattern = Int :: PlanetSideGUID :: Option[ObjectCreateMessageParent] :: HNil /** @@ -62,12 +61,11 @@ object ObjectCreateBase { * note: the type is `StreamBitSize` as opposed to `ConstructorData` * @return the total length of the resulting data stream in bits */ - def streamLen(parentInfo : Option[ObjectCreateMessageParent], data : StreamBitSize) : Long = { + def streamLen(parentInfo: Option[ObjectCreateMessageParent], data: StreamBitSize): Long = { //knowable length - val base : Long = if(parentInfo.isDefined) { - if(parentInfo.get.slot > 127) 92L else 84L //(32u + 1u + 11u + 16u) ?+ (16u + (8u | 16u)) - } - else { + val base: Long = if (parentInfo.isDefined) { + if (parentInfo.get.slot > 127) 92L else 84L //(32u + 1u + 11u + 16u) ?+ (16u + (8u | 16u)) + } else { 60L } base + data.bitsize @@ -84,7 +82,11 @@ object ObjectCreateBase { * @return the optional constructed object * @see `ObjectClass` */ - def decodeData(objectClass : Int, data : BitVector, getCodecFunc : Int => Codec[ConstructorData]) : Attempt[ConstructorData] = { + def decodeData( + objectClass: Int, + data: BitVector, + getCodecFunc: Int => Codec[ConstructorData] + ): Attempt[ConstructorData] = { try { getCodecFunc(objectClass).decode(data) match { case Attempt.Successful(decode) => @@ -94,9 +96,8 @@ object ObjectCreateBase { log.debug(s"object type: $objectClass, input: ${data.toString}, problem: ${err.toString}") result } - } - catch { - case ex : Exception => + } catch { + case ex: Exception => log.error(s"Decoding error - ${ex.getClass.toString} - ${ex.toString} ($objectClass)") Attempt.failure(Err(ex.getMessage)) } @@ -112,7 +113,11 @@ object ObjectCreateBase { * @return the bitstream data * @see `ObjectClass` */ - def encodeData(objectClass : Int, obj : ConstructorData, getCodecFunc : Int => Codec[ConstructorData]) : Attempt[BitVector] = { + def encodeData( + objectClass: Int, + obj: ConstructorData, + getCodecFunc: Int => Codec[ConstructorData] + ): Attempt[BitVector] = { try { getCodecFunc(objectClass).encode(obj.asInstanceOf[ConstructorData]) match { case result @ Attempt.Successful(encode) => @@ -123,9 +128,8 @@ object ObjectCreateBase { result } - } - catch { - case ex : Exception => + } catch { + case ex: Exception => log.error(s"Encoding error - ${ex.getClass.toString} - ${ex.toString} ($objectClass)") Attempt.failure(Err(ex.getMessage)) } @@ -134,31 +138,34 @@ object ObjectCreateBase { /** * `Codec` for formatting around the lack of parent data in the stream. */ - private val noParent : Codec[parentPattern] = ( - ("objectClass" | uintL(0xb)) :: //11u + private val noParent: Codec[parentPattern] = ( + ("objectClass" | uintL(0xb)) :: //11u ("guid" | PlanetSideGUID.codec) //16u - ).xmap[parentPattern]( + ).xmap[parentPattern]( { case cls :: guid :: HNil => cls :: guid :: None :: HNil - }, { + }, + { case cls :: guid :: None :: HNil => cls :: guid :: HNil } ) + /** * `Codec` for reading and formatting parent data from the stream. */ - private val parent : Codec[parentPattern] = ( - ("parentGuid" | PlanetSideGUID.codec) :: //16u - ("objectClass" | uintL(0xb)) :: //11u - ("guid" | PlanetSideGUID.codec) :: //16u + private val parent: Codec[parentPattern] = ( + ("parentGuid" | PlanetSideGUID.codec) :: //16u + ("objectClass" | uintL(0xb)) :: //11u + ("guid" | PlanetSideGUID.codec) :: //16u ("parentSlotIndex" | PacketHelpers.encodedStringSize) //8u or 16u - ).xmap[parentPattern]( + ).xmap[parentPattern]( { case pguid :: cls :: guid :: slot :: HNil => cls :: guid :: Some(ObjectCreateMessageParent(pguid, slot)) :: HNil - }, { + }, + { case cls :: guid :: Some(ObjectCreateMessageParent(pguid, slot)) :: HNil => pguid :: cls :: guid :: slot :: HNil } @@ -167,9 +174,9 @@ object ObjectCreateBase { /** * `Codec` for handling the primary fields of both `ObjectCreateMessage` packets and `ObjectCreateDetailedMessage` packets. */ - val baseCodec : Codec[basePattern] = + val baseCodec: Codec[basePattern] = ("streamLength" | uint32L) :: - (either(bool, parent, noParent).exmap[parentPattern] ( + (either(bool, parent, noParent).exmap[parentPattern]( { case Left(a :: b :: Some(c) :: HNil) => Attempt.successful(a :: b :: Some(c) :: HNil) //true, _, _, Some(c) @@ -180,12 +187,13 @@ object ObjectCreateBase { Attempt.failure(Err("missing parent structure")) //true, _, _, None case Right(_ :: _ :: Some(_) :: HNil) => Attempt.failure(Err("unexpected parent structure")) //false, _, _, Some(c) - }, { + }, + { case a :: b :: Some(c) :: HNil => Attempt.successful(Left(a :: b :: Some(c) :: HNil)) case a :: b :: None :: HNil => Attempt.successful(Right(a :: b :: None :: HNil)) } ) :+ - ("data" | bits)) //greed is good + ("data" | bits)) //greed is good } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/OneMannedFieldTurretData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/OneMannedFieldTurretData.scala index f3e81a73..3f9b237e 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/OneMannedFieldTurretData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/OneMannedFieldTurretData.scala @@ -21,11 +21,12 @@ import shapeless.{::, HNil} * @param health the amount of health the object has, as a percentage of a filled bar * @param internals data regarding the mountable weapon */ -final case class OneMannedFieldTurretData(deploy : CommonFieldDataWithPlacement, - health : Int, - internals : Option[InventoryData] = None - ) extends ConstructorData { - override def bitsize : Long = { +final case class OneMannedFieldTurretData( + deploy: CommonFieldDataWithPlacement, + health: Int, + internals: Option[InventoryData] = None +) extends ConstructorData { + override def bitsize: Long = { val deploySize = deploy.bitsize val internalSize = internals match { case Some(inv) => @@ -38,6 +39,7 @@ final case class OneMannedFieldTurretData(deploy : CommonFieldDataWithPlacement, } object OneMannedFieldTurretData extends Marshallable[OneMannedFieldTurretData] { + /** * Overloaded constructor that mandates information about the internal weapon of the field turret. * @param deploy data common to objects spawned by the (advanced) adaptive construction engine @@ -45,10 +47,10 @@ object OneMannedFieldTurretData extends Marshallable[OneMannedFieldTurretData] { * @param internals data regarding the mountable weapon * @return a `OneMannedFieldTurretData` object */ - def apply(deploy : CommonFieldDataWithPlacement, health : Int, internals : InventoryData) : OneMannedFieldTurretData = + def apply(deploy: CommonFieldDataWithPlacement, health: Int, internals: InventoryData): OneMannedFieldTurretData = new OneMannedFieldTurretData(deploy, health, Some(internals)) - implicit val codec : Codec[OneMannedFieldTurretData] = ( + implicit val codec: Codec[OneMannedFieldTurretData] = ( ("deploy" | CommonFieldDataWithPlacement.codec2) :: PlanetSideGUID.codec :: //hoist/extract with the deploy.owner_guid in field above bool :: @@ -57,13 +59,12 @@ object OneMannedFieldTurretData extends Marshallable[OneMannedFieldTurretData] { uint4 :: uint2 :: optional(bool, "internals" | InventoryData.codec) - ).exmap[OneMannedFieldTurretData] ( + ).exmap[OneMannedFieldTurretData]( { - case deploy :: player :: false :: health :: 0 :: 0xF :: 0 :: internals :: HNil => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + case deploy :: player :: false :: health :: 0 :: 0xf :: 0 :: internals :: HNil => + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } val data = deploy.data @@ -71,7 +72,17 @@ object OneMannedFieldTurretData extends Marshallable[OneMannedFieldTurretData] { OneMannedFieldTurretData( CommonFieldDataWithPlacement( deploy.pos, - CommonFieldData(data.faction, data.bops, data.alternate, data.v1, data.v2, data.jammered, data.v4, data.v5, player) + CommonFieldData( + data.faction, + data.bops, + data.alternate, + data.v1, + data.v2, + data.jammered, + data.v4, + data.v5, + player + ) ), newHealth, newInternals @@ -83,17 +94,26 @@ object OneMannedFieldTurretData extends Marshallable[OneMannedFieldTurretData] { }, { case OneMannedFieldTurretData(CommonFieldDataWithPlacement(pos, data), health, internals) => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } Attempt.successful( CommonFieldDataWithPlacement( pos, - CommonFieldData(data.faction, data.bops, data.alternate, data.v1, data.v2, data.jammered, data.v4, data.v5, PlanetSideGUID(0)) - ) :: data.guid :: false :: newHealth :: 0 :: 0xF :: 0 :: newInternals :: HNil + CommonFieldData( + data.faction, + data.bops, + data.alternate, + data.v1, + data.v2, + data.jammered, + data.v4, + data.v5, + PlanetSideGUID(0) + ) + ) :: data.guid :: false :: newHealth :: 0 :: 0xf :: 0 :: newInternals :: HNil ) } ) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/OrbitalShuttleData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/OrbitalShuttleData.scala index a9b79e21..6884d3de 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/OrbitalShuttleData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/OrbitalShuttleData.scala @@ -34,17 +34,18 @@ import shapeless.{::, HNil} * @see `DroppodLaunchResponseMessage` * @see `OrbitalShuttleTimeMsg` */ -final case class OrbitalShuttleData(faction : PlanetSideEmpire.Value, - pos : Option[PlacementData] = None) extends ConstructorData { - override def bitsize : Long = if(pos.isDefined) { - 54L + pos.get.bitsize - } - else { - 46L - } +final case class OrbitalShuttleData(faction: PlanetSideEmpire.Value, pos: Option[PlacementData] = None) + extends ConstructorData { + override def bitsize: Long = + if (pos.isDefined) { + 54L + pos.get.bitsize + } else { + 46L + } } object OrbitalShuttleData extends Marshallable[OrbitalShuttleData] { + /** * Overloaded constructor that requires defining a position. * The fields are arranged in the standard order for most vehicles (position data first). @@ -52,17 +53,17 @@ object OrbitalShuttleData extends Marshallable[OrbitalShuttleData] { * @param faction empire the object is affiliated with * @return an `OrbitalShuttleData` object */ - def apply(pos : PlacementData, faction : PlanetSideEmpire.Value) : OrbitalShuttleData = + def apply(pos: PlacementData, faction: PlanetSideEmpire.Value): OrbitalShuttleData = OrbitalShuttleData(faction, Some(pos)) - implicit val codec : Codec[OrbitalShuttleData] = ( + implicit val codec: Codec[OrbitalShuttleData] = ( ("faction" | PlanetSideEmpire.codec) :: uintL(25) :: uint8L :: //255 uintL(5) :: uint4L :: //7 uint2L - ).exmap[OrbitalShuttleData] ( + ).exmap[OrbitalShuttleData]( { case faction :: 0 :: 255 :: 0 :: 7 :: 0 :: HNil => Attempt.successful(OrbitalShuttleData(faction)) @@ -75,10 +76,11 @@ object OrbitalShuttleData extends Marshallable[OrbitalShuttleData] { Attempt.successful(faction :: 0 :: 255 :: 0 :: 7 :: 0 :: HNil) } ) + /** * Used when the shuttle is not attached to something else. */ - val codec_pos : Codec[OrbitalShuttleData] = ( + val codec_pos: Codec[OrbitalShuttleData] = ( ("pos" | PlacementData.codec) :: ("faction" | PlanetSideEmpire.codec) :: uintL(22) :: @@ -88,7 +90,7 @@ object OrbitalShuttleData extends Marshallable[OrbitalShuttleData] { uintL(6) :: uint4L :: //15 bool - ).exmap[OrbitalShuttleData] ( + ).exmap[OrbitalShuttleData]( { case pos :: faction :: 0 :: 255 :: 0 :: 255 :: 0 :: 15 :: false :: HNil => Attempt.successful(OrbitalShuttleData(faction, Some(pos))) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/PlacementData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/PlacementData.scala index 4865b986..4353eca5 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/PlacementData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/PlacementData.scala @@ -13,17 +13,16 @@ import shapeless.{::, HNil} * @param orient the ijk-orientation around the object's center * @param vel optional movement data (that occurs upon placement) */ -final case class PlacementData(coord : Vector3, - orient : Vector3, - vel : Option[Vector3] = None - ) extends StreamBitSize { - override def bitsize : Long = { - val moveLength = if(vel.isDefined) { 42 } else { 0 } +final case class PlacementData(coord: Vector3, orient: Vector3, vel: Option[Vector3] = None) extends StreamBitSize { + override def bitsize: Long = { + val moveLength = if (vel.isDefined) { 42 } + else { 0 } 81L + moveLength } } object PlacementData extends Marshallable[PlacementData] { + /** * An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data. * @param x the x-coordinate location in the world @@ -31,8 +30,8 @@ object PlacementData extends Marshallable[PlacementData] { * @param z the z-coordinate location in the world * @return a `PlacementData` object */ - def apply(x : Float, y : Float, z : Float) : PlacementData = - new PlacementData(Vector3(x, y, z), Vector3(0f,0f,0f)) + def apply(x: Float, y: Float, z: Float): PlacementData = + new PlacementData(Vector3(x, y, z), Vector3(0f, 0f, 0f)) /** * An abbreviated constructor for creating `PlacementData`, ignoring the `Vector3` for position data, supplying other important fields. @@ -44,7 +43,7 @@ object PlacementData extends Marshallable[PlacementData] { * @param yaw the amount of yaw that affects orientation * @return a `PlacementData` object */ - def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float) : PlacementData = + def apply(x: Float, y: Float, z: Float, roll: Float, pitch: Float, yaw: Float): PlacementData = new PlacementData(Vector3(x, y, z), Vector3(roll, pitch, yaw)) /** @@ -58,16 +57,16 @@ object PlacementData extends Marshallable[PlacementData] { * @param vel optional movement data that occurs upon placement * @return a `PlacementData` object */ - def apply(x : Float, y : Float, z : Float, roll : Float, pitch : Float, yaw : Float, vel : Vector3) : PlacementData = + def apply(x: Float, y: Float, z: Float, roll: Float, pitch: Float, yaw: Float, vel: Vector3): PlacementData = new PlacementData(Vector3(x, y, z), Vector3(roll, pitch, yaw), Some(vel)) - implicit val codec : Codec[PlacementData] = ( + implicit val codec: Codec[PlacementData] = ( ("coord" | Vector3.codec_pos) :: ("roll" | Angular.codec_roll) :: ("pitch" | Angular.codec_pitch) :: ("yaw" | Angular.codec_yaw()) :: optional(bool, "vel" | Vector3.codec_vel) - ).xmap[PlacementData] ( + ).xmap[PlacementData]( { case xyz :: i :: j :: k :: vel :: HNil => PlacementData(xyz, Vector3(i, j, k), vel) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/PlayerData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/PlayerData.scala index 928bd4dd..172b3081 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/PlayerData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/PlayerData.scala @@ -35,23 +35,28 @@ import shapeless.{::, HNil} * @param drawn_slot the holster that is initially drawn * @param position_defined used by the `Codec` to seed the state of the optional `pos` field */ -final case class PlayerData(pos : Option[PlacementData], - basic_appearance : CharacterAppearanceData, - character_data : CharacterData, - inventory : Option[InventoryData], - drawn_slot : DrawnSlot.Value) - (position_defined : Boolean) extends ConstructorData { - override def bitsize : Long = { +final case class PlayerData( + pos: Option[PlacementData], + basic_appearance: CharacterAppearanceData, + character_data: CharacterData, + inventory: Option[InventoryData], + drawn_slot: DrawnSlot.Value +)(position_defined: Boolean) + extends ConstructorData { + override def bitsize: Long = { //factor guard bool values into the base size, not its corresponding optional field - val posSize : Long = if(pos.isDefined) { pos.get.bitsize } else { 0L } - val appSize : Long = basic_appearance.bitsize - val charSize = character_data.bitsize - val inventorySize : Long = if(inventory.isDefined) { inventory.get.bitsize } else { 0L } + val posSize: Long = if (pos.isDefined) { pos.get.bitsize } + else { 0L } + val appSize: Long = basic_appearance.bitsize + val charSize = character_data.bitsize + val inventorySize: Long = if (inventory.isDefined) { inventory.get.bitsize } + else { 0L } 5L + posSize + appSize + charSize + inventorySize } } object PlayerData extends Marshallable[PlayerData] { + /** * Overloaded constructor that ignores the coordinate information but includes the inventory. * It passes information between the three major divisions for the purposes of offset calculations. @@ -63,10 +68,18 @@ object PlayerData extends Marshallable[PlayerData] { * technically, always `DrawnSlot.None`, but the field is preserved to maintain similarity * @return a `PlayerData` object */ - def apply(basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, inventory : InventoryData, drawn_slot : DrawnSlot.Type) : PlayerData = { + def apply( + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + inventory: InventoryData, + drawn_slot: DrawnSlot.Type + ): PlayerData = { val appearance = basic_appearance(5) - PlayerData(None, appearance, character_data(appearance.altModelBit.isDefined, true), Some(inventory), drawn_slot)(false) + PlayerData(None, appearance, character_data(appearance.altModelBit.isDefined, true), Some(inventory), drawn_slot)( + false + ) } + /** * Overloaded constructor that ignores the coordinate information and the inventory. * It passes information between the three major divisions for the purposes of offset calculations. @@ -77,7 +90,11 @@ object PlayerData extends Marshallable[PlayerData] { * technically, always `DrawnSlot.None`, but the field is preserved to maintain similarity * @return a `PlayerData` object */ - def apply(basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, drawn_slot : DrawnSlot.Type) : PlayerData = { + def apply( + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + drawn_slot: DrawnSlot.Type + ): PlayerData = { val appearance = basic_appearance(5) PlayerData(None, appearance, character_data(appearance.altModelBit.isDefined, true), None, drawn_slot)(false) } @@ -93,10 +110,23 @@ object PlayerData extends Marshallable[PlayerData] { * @param drawn_slot the holster that is initially drawn * @return a `PlayerData` object */ - def apply(pos : PlacementData, basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, inventory : InventoryData, drawn_slot : DrawnSlot.Type) : PlayerData = { - val appearance = basic_appearance( PaddingOffset(Some(pos)) ) - PlayerData(Some(pos), appearance, character_data(appearance.altModelBit.isDefined, false), Some(inventory), drawn_slot)(true) + def apply( + pos: PlacementData, + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + inventory: InventoryData, + drawn_slot: DrawnSlot.Type + ): PlayerData = { + val appearance = basic_appearance(PaddingOffset(Some(pos))) + PlayerData( + Some(pos), + appearance, + character_data(appearance.altModelBit.isDefined, false), + Some(inventory), + drawn_slot + )(true) } + /** * Overloaded constructor that includes the coordinate information but ignores the inventory. * It passes information between the three major divisions for the purposes of offset calculations. @@ -107,8 +137,13 @@ object PlayerData extends Marshallable[PlayerData] { * @param drawn_slot the holster that is initially drawn * @return a `PlayerData` object */ - def apply(pos : PlacementData, basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, drawn_slot : DrawnSlot.Type) : PlayerData = { - val appearance = basic_appearance( PaddingOffset(Some(pos)) ) + def apply( + pos: PlacementData, + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + drawn_slot: DrawnSlot.Type + ): PlayerData = { + val appearance = basic_appearance(PaddingOffset(Some(pos))) PlayerData(Some(pos), appearance, character_data(appearance.altModelBit.isDefined, false), None, drawn_slot)(true) } @@ -124,7 +159,7 @@ object PlayerData extends Marshallable[PlayerData] { * @param pos the optional `PlacementData` object that creates the shift in bits * @return the pad length in bits */ - def PaddingOffset(pos : Option[PlacementData]) : Int = { + def PaddingOffset(pos: Option[PlacementData]): Int = { /* The `ObjectCreateMessage` length is either 32 + 12 + 16 + 81 - 141 - with `PlacementData`, with an additional +42 - 183 - with the optional velocity field, @@ -133,7 +168,8 @@ object PlayerData extends Marshallable[PlayerData] { */ pos match { case Some(place) => - if(place.vel.isDefined) { 2 } else { 4 } + if (place.vel.isDefined) { 2 } + else { 4 } case None => 5 //with ObjectCreateMessageParent data } @@ -144,14 +180,13 @@ object PlayerData extends Marshallable[PlayerData] { * @param length the current length of a stream * @return the number of bits needed to pad it */ - def ByteAlignmentPadding(length : Long) : Int = { + def ByteAlignmentPadding(length: Long): Int = { val pad = (length - math.floor(length.toDouble / 8) * 8).toInt - if(pad > 0) { - 8 - pad - } - else { - 0 - } + if (pad > 0) { + 8 - pad + } else { + 0 + } } /** @@ -162,26 +197,28 @@ object PlayerData extends Marshallable[PlayerData] { * @param position_defined this entry has `PlacementData` that defines position, orientation, and, optionally, motion * @return a `Codec` that translates a `PlayerData` object */ - def codec(position_defined : Boolean) : Codec[PlayerData] = ( - conditional(position_defined, "pos" | PlacementData.codec) >>:~ { pos => + def codec(position_defined: Boolean): Codec[PlayerData] = + (conditional(position_defined, "pos" | PlacementData.codec) >>:~ { pos => ("basic_appearance" | CharacterAppearanceData.codec(PaddingOffset(pos))) >>:~ { app => - ("character_data" | newcodecs.binary_choice(position_defined, + ("character_data" | newcodecs.binary_choice( + position_defined, CharacterData.codec(app.b.backpack), - CharacterData.codec_seated(app.b.backpack))) :: + CharacterData.codec_seated(app.b.backpack) + )) :: optional(bool, "inventory" | InventoryData.codec) :: ("drawn_slot" | DrawnSlot.codec) :: bool //usually false } - }).xmap[PlayerData] ( - { - case pos :: app :: data :: inv :: hand :: _ :: HNil => - PlayerData(pos, app, data, inv, hand)(pos.isDefined) - }, - { - case PlayerData(pos, app, data, inv, hand) => - pos :: app :: data :: inv :: hand :: false :: HNil - } - ) + }).xmap[PlayerData]( + { + case pos :: app :: data :: inv :: hand :: _ :: HNil => + PlayerData(pos, app, data, inv, hand)(pos.isDefined) + }, + { + case PlayerData(pos, app, data, inv, hand) => + pos :: app :: data :: inv :: hand :: false :: HNil + } + ) /** * This `Codec` is exclusively for translating a `Player` object @@ -191,23 +228,24 @@ object PlayerData extends Marshallable[PlayerData] { * @param offset the padding for the player's name field * @return a `Codec` that translates a `PlayerData` object */ - def codec(offset : Int) : Codec[PlayerData] = ( - ("basic_appearance" | CharacterAppearanceData.codec(offset)) >>:~ { app => - ("character_data" | CharacterData.codec_seated(app.b.backpack)) :: - optional(bool, "inventory" | InventoryData.codec) :: - ("drawn_slot" | DrawnSlot.codec) :: - bool //usually false + def codec(offset: Int): Codec[PlayerData] = + ( + ("basic_appearance" | CharacterAppearanceData.codec(offset)) >>:~ { app => + ("character_data" | CharacterData.codec_seated(app.b.backpack)) :: + optional(bool, "inventory" | InventoryData.codec) :: + ("drawn_slot" | DrawnSlot.codec) :: + bool //usually false } - ).xmap[PlayerData] ( - { - case app :: data :: inv :: hand :: _ :: HNil => - PlayerData(None, app, data, inv, hand)(false) - }, - { - case PlayerData(_, app, data, inv, hand) => - app :: data :: inv :: hand :: false :: HNil - } - ) + ).xmap[PlayerData]( + { + case app :: data :: inv :: hand :: _ :: HNil => + PlayerData(None, app, data, inv, hand)(false) + }, + { + case PlayerData(_, app, data, inv, hand) => + app :: data :: inv :: hand :: false :: HNil + } + ) - implicit val codec : Codec[PlayerData] = codec(false) + implicit val codec: Codec[PlayerData] = codec(false) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala index 9725dcac..5e125cd9 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/Prefab.scala @@ -11,451 +11,1660 @@ import net.psforever.types.{DriveState, PlanetSideEmpire, PlanetSideGUID} */ object Prefab { object Vehicle { - def ams(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, driveState : DriveState.Value, matrix_guid : PlanetSideGUID, respawn_guid : PlanetSideGUID, term_a_guid : PlanetSideGUID, term_b_guid : PlanetSideGUID) : VehicleData = { - VehicleData(loc, CommonFieldData(faction, 0), health, driveState, false, UtilityVehicleData(0), - Some(InventoryData(List( - InternalSlot(ObjectClass.matrix_terminalc, matrix_guid, 1, CommonFieldData(faction)(false)), - InternalSlot(ObjectClass.ams_respawn_tube, respawn_guid, 2, CommonFieldData(faction)(false)), - InternalSlot(ObjectClass.order_terminala, term_a_guid, 3, CommonFieldData(faction)(false)), - InternalSlot(ObjectClass.order_terminalb, term_b_guid, 4, CommonFieldData(faction)(false)) - ))) - ) - } - - def ant(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, driveState : DriveState.Value) : VehicleData = { - VehicleData(loc, CommonFieldData(faction, 0), health, driveState, false, UtilityVehicleData(0), None) - } - - def apc_nc(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon4_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID, weapon5_guid : PlanetSideGUID, ammo5_guid : PlanetSideGUID, weapon6_guid : PlanetSideGUID, ammo6_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.apc_weapon_systemc_nc, weapon1_guid, 11, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemb, weapon2_guid, 12, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systema, weapon3_guid, 13, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemd_nc, weapon4_guid, 14, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo4_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_r, weapon5_guid, 15, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo5_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_l, weapon6_guid, 16, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo6_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def apc_tr(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon4_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID, weapon5_guid : PlanetSideGUID, ammo5_guid : PlanetSideGUID, weapon6_guid : PlanetSideGUID, ammo6_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.apc_weapon_systemc_tr, weapon1_guid, 11, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemb, weapon2_guid, 12, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systema, weapon3_guid, 13, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemd_tr, weapon4_guid, 14, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo4_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_r, weapon5_guid, 15, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo5_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_l, weapon6_guid, 16, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo6_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def apc_vs(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon4_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID, weapon5_guid : PlanetSideGUID, ammo5_guid : PlanetSideGUID, weapon6_guid : PlanetSideGUID, ammo6_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.apc_weapon_systemc_vs, weapon1_guid, 11, - WeaponData(0x6, 0x8, 0, ObjectClass.flux_cannon_thresher_battery, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemb, weapon2_guid, 12, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systema, weapon3_guid, 13, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_75mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_weapon_systemd_vs, weapon4_guid, 14, - WeaponData(0x6, 0x8, 0, ObjectClass.flux_cannon_thresher_battery, ammo4_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_r, weapon5_guid, 15, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo5_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.apc_ballgun_l, weapon6_guid, 16, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo6_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def aurora(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo11_guid : PlanetSideGUID, ammo12_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo21_guid : PlanetSideGUID, ammo22_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.aurora_weapon_systema, weapon1_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo11_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.aurora_weapon_systemb, weapon2_guid, 6, - WeaponData(0x6, 0x8, 0, ObjectClass.fluxpod_ammo, ammo21_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def battlewagon(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon4_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.battlewagon_weapon_systema, weapon1_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.battlewagon_weapon_systemb, weapon2_guid, 6, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.battlewagon_weapon_systemc, weapon3_guid, 7, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.battlewagon_weapon_systemd, weapon4_guid, 8, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo4_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def dropship(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.cannon_dropship_20mm, weapon1_guid, 12, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.cannon_dropship_20mm, weapon2_guid, 13, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.dropship_rear_turret, weapon3_guid, 14, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def flail(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID, terminal_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.Mobile, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.flail_weapon, weapon_guid, 1, - WeaponData(0x6, 0x8, 0, ObjectClass.ancient_ammo_vehicle, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.targeting_laser_dispenser, terminal_guid, 2, CommonFieldData(faction, 2)(false)) :: Nil - )) - ) - } - - def fury(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.fury_weapon_systema, weapon_guid, 1, - WeaponData(0x4, 0x8, ObjectClass.hellfire_ammo, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def galaxy_gunship(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon4_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID, weapon5_guid : PlanetSideGUID, ammo5_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.galaxy_gunship_cannon, weapon1_guid, 6, - WeaponData(0x6, 0x8, 0, ObjectClass.heavy_grenade_mortar, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.galaxy_gunship_cannon, weapon2_guid, 7, - WeaponData(0x6, 0x8, 0, ObjectClass.heavy_grenade_mortar, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.galaxy_gunship_tailgun, weapon3_guid, 8, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_35mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.galaxy_gunship_gun, weapon4_guid, 9, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_35mm, ammo4_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.galaxy_gunship_gun, weapon5_guid, 10, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_35mm, ammo5_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def liberator(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo4_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.liberator_weapon_system, weapon1_guid, 3, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_35mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.liberator_bomb_bay, weapon2_guid, 4, - WeaponData(0x6, 0x8, 0, ObjectClass.liberator_bomb, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.liberator_bomb, ammo3_guid, 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.liberator_25mm_cannon, weapon3_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_25mm, ammo4_guid, 0 ,CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def lightgunship(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.Mobile, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.lightgunship_weapon_system, weapon_guid, 1, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_20mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.reaver_rocket, ammo2_guid,1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def lightning(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.lightning_weapon_system, weapon_guid, 1, - WeaponData(0x4, 0x8, 0, ObjectClass.bullet_75mm, ammo1_guid, 0, CommonFieldData()(false), ObjectClass.bullet_12mm, ammo2_guid, 1, CommonFieldData()(false)) - ) :: Nil) + def ams( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + driveState: DriveState.Value, + matrix_guid: PlanetSideGUID, + respawn_guid: PlanetSideGUID, + term_a_guid: PlanetSideGUID, + term_b_guid: PlanetSideGUID + ): VehicleData = { + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + driveState, + false, + UtilityVehicleData(0), + Some( + InventoryData( + List( + InternalSlot(ObjectClass.matrix_terminalc, matrix_guid, 1, CommonFieldData(faction)(false)), + InternalSlot(ObjectClass.ams_respawn_tube, respawn_guid, 2, CommonFieldData(faction)(false)), + InternalSlot(ObjectClass.order_terminala, term_a_guid, 3, CommonFieldData(faction)(false)), + InternalSlot(ObjectClass.order_terminalb, term_b_guid, 4, CommonFieldData(faction)(false)) + ) + ) ) ) } - def lodestar(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, repair1_guid : PlanetSideGUID, repair2_guid : PlanetSideGUID, veh_rearm1_guid : PlanetSideGUID, veh_rearm2_guid : PlanetSideGUID, bfr_rearm1_guid : PlanetSideGUID, bfr_rearm2_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData(List( - InternalSlot(ObjectClass.lodestar_repair_terminal, repair1_guid, 2, CommonFieldData(faction, 2)(false)), - InternalSlot(ObjectClass.lodestar_repair_terminal, repair2_guid, 3, CommonFieldData(faction, 2)(false)), - InternalSlot(ObjectClass.multivehicle_rearm_terminal, veh_rearm1_guid, 4, CommonFieldData(faction, 2)(false)), - InternalSlot(ObjectClass.multivehicle_rearm_terminal, veh_rearm2_guid, 5, CommonFieldData(faction, 2)(false)), - InternalSlot(ObjectClass.bfr_rearm_terminal, bfr_rearm1_guid, 6, CommonFieldData(faction, 2)(false)), - InternalSlot(ObjectClass.bfr_rearm_terminal, bfr_rearm2_guid, 7, CommonFieldData(faction, 2)(false)) - ))) - ) + def ant( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + driveState: DriveState.Value + ): VehicleData = { + VehicleData(loc, CommonFieldData(faction, 0), health, driveState, false, UtilityVehicleData(0), None) } - def magrider(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def apc_nc( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon4_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID, + weapon5_guid: PlanetSideGUID, + ammo5_guid: PlanetSideGUID, + weapon6_guid: PlanetSideGUID, + ammo6_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.particle_beam_magrider, weapon1_guid, 2, - WeaponData(0x6, 0x8, 0, ObjectClass.pulse_battery, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.heavy_rail_beam_magrider, weapon2_guid, 3, - WeaponData(0x6, 0x8, 0, ObjectClass.heavy_rail_beam_battery, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.apc_weapon_systemc_nc, + weapon1_guid, + 11, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemb, + weapon2_guid, + 12, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systema, + weapon3_guid, + 13, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemd_nc, + weapon4_guid, + 14, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_r, + weapon5_guid, + 15, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo5_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_l, + weapon6_guid, + 16, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo6_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def mediumtransport(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID): VehicleData = { + def apc_tr( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon4_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID, + weapon5_guid: PlanetSideGUID, + ammo5_guid: PlanetSideGUID, + weapon6_guid: PlanetSideGUID, + ammo6_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.apc_weapon_systemc_tr, + weapon1_guid, + 11, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemb, + weapon2_guid, + 12, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systema, + weapon3_guid, + 13, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemd_tr, + weapon4_guid, + 14, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_r, + weapon5_guid, + 15, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo5_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_l, + weapon6_guid, + 16, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo6_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def apc_vs( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon4_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID, + weapon5_guid: PlanetSideGUID, + ammo5_guid: PlanetSideGUID, + weapon6_guid: PlanetSideGUID, + ammo6_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.apc_weapon_systemc_vs, + weapon1_guid, + 11, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.flux_cannon_thresher_battery, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemb, + weapon2_guid, + 12, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systema, + weapon3_guid, + 13, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_weapon_systemd_vs, + weapon4_guid, + 14, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.flux_cannon_thresher_battery, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_r, + weapon5_guid, + 15, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo5_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.apc_ballgun_l, + weapon6_guid, + 16, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo6_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def aurora( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo11_guid: PlanetSideGUID, + ammo12_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo21_guid: PlanetSideGUID, + ammo22_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.mediumtransport_weapon_systemA, weapon1_guid, 5, - WeaponData(0x6, 0x8, ObjectClass.bullet_20mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.mediumtransport_weapon_systemB, weapon2_guid, 6, - WeaponData(0x6, 0x8, ObjectClass.bullet_20mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.aurora_weapon_systema, + weapon1_guid, + 5, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.fluxpod_ammo, + ammo11_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.aurora_weapon_systemb, + weapon2_guid, + 6, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.fluxpod_ammo, + ammo21_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def battlewagon( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon4_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.battlewagon_weapon_systema, + weapon1_guid, + 5, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.battlewagon_weapon_systemb, + weapon2_guid, + 6, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.battlewagon_weapon_systemc, + weapon3_guid, + 7, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.battlewagon_weapon_systemd, + weapon4_guid, + 8, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def dropship( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.cannon_dropship_20mm, + weapon1_guid, + 12, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.cannon_dropship_20mm, + weapon2_guid, + 13, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.dropship_rear_turret, + weapon3_guid, + 14, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def flail( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID, + terminal_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.Mobile, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.flail_weapon, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.ancient_ammo_vehicle, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.targeting_laser_dispenser, + terminal_guid, + 2, + CommonFieldData(faction, 2)(false) + ) :: Nil + ) + ) + ) + } + + def fury( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.fury_weapon_systema, + weapon_guid, + 1, + WeaponData( + 0x4, + 0x8, + ObjectClass.hellfire_ammo, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) ) :: Nil - )) + ) + ) ) } - def mosquito(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { + def galaxy_gunship( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon4_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID, + weapon5_guid: PlanetSideGUID, + ammo5_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.galaxy_gunship_cannon, + weapon1_guid, + 6, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.heavy_grenade_mortar, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.galaxy_gunship_cannon, + weapon2_guid, + 7, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.heavy_grenade_mortar, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.galaxy_gunship_tailgun, + weapon3_guid, + 8, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_35mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.galaxy_gunship_gun, + weapon4_guid, + 9, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_35mm, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.galaxy_gunship_gun, + weapon5_guid, + 10, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_35mm, + ammo5_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def liberator( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo4_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.liberator_weapon_system, + weapon1_guid, + 3, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_35mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.liberator_bomb_bay, + weapon2_guid, + 4, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.liberator_bomb, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.liberator_bomb, + ammo3_guid, + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.liberator_25mm_cannon, + weapon3_guid, + 5, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_25mm, + ammo4_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def lightgunship( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.Mobile, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.lightgunship_weapon_system, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_20mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.reaver_rocket, + ammo2_guid, + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def lightning( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.lightning_weapon_system, + weapon_guid, + 1, + WeaponData( + 0x4, + 0x8, + 0, + ObjectClass.bullet_75mm, + ammo1_guid, + 0, + CommonFieldData()(false), + ObjectClass.bullet_12mm, + ammo2_guid, + 1, + CommonFieldData()(false) + ) + ) :: Nil + ) + ) + ) + } + + def lodestar( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + repair1_guid: PlanetSideGUID, + repair2_guid: PlanetSideGUID, + veh_rearm1_guid: PlanetSideGUID, + veh_rearm2_guid: PlanetSideGUID, + bfr_rearm1_guid: PlanetSideGUID, + bfr_rearm2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + List( + InternalSlot(ObjectClass.lodestar_repair_terminal, repair1_guid, 2, CommonFieldData(faction, 2)(false)), + InternalSlot(ObjectClass.lodestar_repair_terminal, repair2_guid, 3, CommonFieldData(faction, 2)(false)), + InternalSlot( + ObjectClass.multivehicle_rearm_terminal, + veh_rearm1_guid, + 4, + CommonFieldData(faction, 2)(false) + ), + InternalSlot( + ObjectClass.multivehicle_rearm_terminal, + veh_rearm2_guid, + 5, + CommonFieldData(faction, 2)(false) + ), + InternalSlot(ObjectClass.bfr_rearm_terminal, bfr_rearm1_guid, 6, CommonFieldData(faction, 2)(false)), + InternalSlot(ObjectClass.bfr_rearm_terminal, bfr_rearm2_guid, 7, CommonFieldData(faction, 2)(false)) + ) + ) + ) + ) + } + + def magrider( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.particle_beam_magrider, + weapon1_guid, + 2, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.pulse_battery, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.heavy_rail_beam_magrider, + weapon2_guid, + 3, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.heavy_rail_beam_battery, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def mediumtransport( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.mediumtransport_weapon_systemA, + weapon1_guid, + 5, + WeaponData( + 0x6, + 0x8, + ObjectClass.bullet_20mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.mediumtransport_weapon_systemB, + weapon2_guid, + 6, + WeaponData( + 0x6, + 0x8, + ObjectClass.bullet_20mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def mosquito( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.rotarychaingun_mosquito, weapon_guid, 1, - WeaponData(0x6, 0x8, ObjectClass.bullet_12mm, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.rotarychaingun_mosquito, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + ObjectClass.bullet_12mm, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def phantasm(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int) : VehicleData = { + def phantasm(loc: PlacementData, faction: PlanetSideEmpire.Value, health: Int): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), None)(VehicleFormat.Variant) VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), None) } - def prowler(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def prowler( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.prowler_weapon_systemA, weapon1_guid, 3, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_105mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.prowler_weapon_systemB, weapon2_guid, 4, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_15mm, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.prowler_weapon_systemA, + weapon1_guid, + 3, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_105mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.prowler_weapon_systemB, + weapon2_guid, + 4, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_15mm, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def quadassault(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { + def quadassault( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.quadassault_weapon_system, weapon_guid, 1, - WeaponData(0x6, 0x8, ObjectClass.bullet_12mm, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.quadassault_weapon_system, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + ObjectClass.bullet_12mm, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def quadstealth(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int) : VehicleData = { + def quadstealth(loc: PlacementData, faction: PlanetSideEmpire.Value, health: Int): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, false, false, false, None, None)(VehicleFormat.Normal) VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, None) } - def router(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, terminal_guid : PlanetSideGUID) : VehicleData = { + def router( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + terminal_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.Mobile, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.teleportpad_terminal, terminal_guid, 1, CommonFieldData(faction, 2)(false)) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.Mobile, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.teleportpad_terminal, + terminal_guid, + 1, + CommonFieldData(faction, 2)(false) + ) :: Nil + ) + ) ) } - def skyguard(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def skyguard( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.skyguard_weapon_system, weapon_guid, 2, - WeaponData(0x6, 0x8, 0, ObjectClass.skyguard_flak_cannon_ammo, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.bullet_12mm, ammo2_guid, 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.skyguard_weapon_system, + weapon_guid, + 2, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.skyguard_flak_cannon_ammo, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.bullet_12mm, + ammo2_guid, + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def switchblade(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, driveState : DriveState.Value, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def switchblade( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + driveState: DriveState.Value, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.scythe, weapon_guid, 1, - WeaponData(0x6, 0x8, 0, ObjectClass.ancient_ammo_vehicle, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.ancient_ammo_vehicle, ammo2_guid, 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def threemanheavybuggy(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.chaingun_p, weapon1_guid, 3, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_12mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.grenade_launcher_marauder, weapon2_guid, 4, - WeaponData(0x6, 0x8, 0, ObjectClass.heavy_grenade_mortar, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.scythe, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.ancient_ammo_vehicle, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.ancient_ammo_vehicle, + ammo2_guid, + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) ) :: Nil - )) + ) + ) ) } - def thunderer(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def threemanheavybuggy( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.thunderer_weapon_systema, weapon1_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.gauss_cannon_ammo, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.thunderer_weapon_systemb, weapon2_guid, 6, - WeaponData(0x6, 0x8, 0, ObjectClass.gauss_cannon_ammo, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def two_man_assault_buggy(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.chaingun_p, weapon_guid, 2, - WeaponData(0x6, 0x8, ObjectClass.bullet_12mm, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def twomanheavybuggy(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.advanced_missile_launcher_t, weapon_guid, 2, - WeaponData(0x6, 0x8, 0, ObjectClass.firebird_missile, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def twomanhoverbuggy(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.flux_cannon_thresher, weapon_guid, 2, - WeaponData(0x6, 0x8, 0, ObjectClass.flux_cannon_thresher_battery, ammo_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def vanguard(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, - Some(InventoryData( - InventoryItemData(ObjectClass.vanguard_weapon_system, weapon_guid, 2, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_150mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.bullet_20mm, ammo2_guid, 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) - ) - } - - def vulture(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon1_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, weapon2_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID, weapon3_guid : PlanetSideGUID, ammo3_guid : PlanetSideGUID) : VehicleData = { - //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 2), health, DriveState.State7, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.vulture_nose_weapon_system, weapon1_guid, 3, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_35mm, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: - InventoryItemData(ObjectClass.vulture_bomb_bay, weapon2_guid, 4, - WeaponData(0x6, 0x8, 0, ObjectClass.liberator_bomb, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.chaingun_p, + weapon1_guid, + 3, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_12mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) ) :: - InventoryItemData(ObjectClass.vulture_tail_cannon, weapon3_guid, 5, - WeaponData(0x6, 0x8, 0, ObjectClass.bullet_25mm, ammo3_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + InventoryItemData( + ObjectClass.grenade_launcher_marauder, + weapon2_guid, + 4, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.heavy_grenade_mortar, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } - def wasp(loc : PlacementData, faction : PlanetSideEmpire.Value, health : Int, weapon_guid : PlanetSideGUID, ammo1_guid : PlanetSideGUID, ammo2_guid : PlanetSideGUID) : VehicleData = { + def thunderer( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.thunderer_weapon_systema, + weapon1_guid, + 5, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.gauss_cannon_ammo, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.thunderer_weapon_systemb, + weapon2_guid, + 6, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.gauss_cannon_ammo, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def two_man_assault_buggy( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.chaingun_p, + weapon_guid, + 2, + WeaponData( + 0x6, + 0x8, + ObjectClass.bullet_12mm, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def twomanheavybuggy( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.advanced_missile_launcher_t, + weapon_guid, + 2, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.firebird_missile, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def twomanhoverbuggy( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.flux_cannon_thresher, + weapon_guid, + 2, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.flux_cannon_thresher_battery, + ammo_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def vanguard( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, None, + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + Some( + InventoryData( + InventoryItemData( + ObjectClass.vanguard_weapon_system, + weapon_guid, + 2, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_150mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.bullet_20mm, + ammo2_guid, + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def vulture( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon1_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + weapon2_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID, + weapon3_guid: PlanetSideGUID, + ammo3_guid: PlanetSideGUID + ): VehicleData = { + //VehicleData(loc, CommonFieldData(faction, 2), 0, health, false, false, DriveState.State7, true, false, false, Some(VariantVehicleData(0)), + VehicleData( + loc, + CommonFieldData(faction, 2), + health, + DriveState.State7, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.vulture_nose_weapon_system, + weapon1_guid, + 3, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_35mm, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.vulture_bomb_bay, + weapon2_guid, + 4, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.liberator_bomb, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: + InventoryItemData( + ObjectClass.vulture_tail_cannon, + weapon3_guid, + 5, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.bullet_25mm, + ammo3_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) + ) + } + + def wasp( + loc: PlacementData, + faction: PlanetSideEmpire.Value, + health: Int, + weapon_guid: PlanetSideGUID, + ammo1_guid: PlanetSideGUID, + ammo2_guid: PlanetSideGUID + ): VehicleData = { //VehicleData(loc, CommonFieldData(faction, 0), 0, health, false, false, DriveState.Mobile, false, false, false, Some(VariantVehicleData(0)), - VehicleData(loc, CommonFieldData(faction, 0), health, DriveState.Mobile, false, VariantVehicleData(0), - Some(InventoryData( - InventoryItemData(ObjectClass.wasp_weapon_system, weapon_guid, 1, - WeaponData(0x6, 0x8, 0, ObjectClass.wasp_gun_ammo, ammo1_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), ObjectClass.wasp_rocket_ammo, ammo2_guid, 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) - ) :: Nil - )) + VehicleData( + loc, + CommonFieldData(faction, 0), + health, + DriveState.Mobile, + false, + VariantVehicleData(0), + Some( + InventoryData( + InventoryItemData( + ObjectClass.wasp_weapon_system, + weapon_guid, + 1, + WeaponData( + 0x6, + 0x8, + 0, + ObjectClass.wasp_gun_ammo, + ammo1_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + ObjectClass.wasp_rocket_ammo, + ammo2_guid, + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) :: Nil + ) + ) ) } } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/REKData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/REKData.scala index 39003961..1636a8e6 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/REKData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/REKData.scala @@ -13,23 +13,20 @@ import shapeless.{::, HNil} * defaults to 0 * @see `DetailedREKData` */ -final case class REKData(data : CommonFieldData, - unk1 : Int, - unk2 : Int - ) extends ConstructorData { - override def bitsize : Long = 50L +final case class REKData(data: CommonFieldData, unk1: Int, unk2: Int) extends ConstructorData { + override def bitsize: Long = 50L } object REKData extends Marshallable[REKData] { - def apply(data : CommonFieldData) : REKData = REKData(data, 0, 0) + def apply(data: CommonFieldData): REKData = REKData(data, 0, 0) - implicit val codec : Codec[REKData] = ( + implicit val codec: Codec[REKData] = ( ("data" | CommonFieldData.codec2) :: ("unk1" | uint16) :: ("unk2" | uint(10)) - ).exmap[REKData] ( + ).exmap[REKData]( { - case data :: u1 :: u2 :: HNil => + case data :: u1 :: u2 :: HNil => Attempt.successful(REKData(data, u1, u2)) case data => Attempt.failure(Err(s"invalid rek data format - $data")) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/RemoteProjectileData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/RemoteProjectileData.scala index 39fe8cc5..096f8efe 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/RemoteProjectileData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/RemoteProjectileData.scala @@ -7,16 +7,16 @@ import scodec.codecs._ import shapeless.{::, HNil} object RemoteProjectiles { - abstract class Data(val a : Int, val b : Int) + abstract class Data(val a: Int, val b: Int) - final case object Meteor extends Data(0, 32) - final case object Wasp extends Data(0, 208) - final case object Sparrow extends Data(13107, 187) - final case object OICW extends Data(13107, 195) - final case object Striker extends Data(26214, 134) - final case object HunterSeeker extends Data(39577, 201) - final case object Starfire extends Data(39577, 249) - class OICWLittleBuddy(x : Int, y : Int) extends Data(x, y) + final case object Meteor extends Data(0, 32) + final case object Wasp extends Data(0, 208) + final case object Sparrow extends Data(13107, 187) + final case object OICW extends Data(13107, 195) + final case object Striker extends Data(26214, 134) + final case object HunterSeeker extends Data(39577, 201) + final case object Starfire extends Data(39577, 249) + class OICWLittleBuddy(x: Int, y: Int) extends Data(x, y) } object FlightPhysics extends Enumeration { @@ -50,25 +50,26 @@ object FlightPhysics extends Enumeration { * @param unk4 na * @param unk5 na */ -final case class RemoteProjectileData(common_data : CommonFieldDataWithPlacement, - u1 : Int, - u2 : Int, - unk3 : FlightPhysics.Value, - unk4 : Int, - unk5 : Int - ) extends ConstructorData { - override def bitsize : Long = 33L + common_data.bitsize +final case class RemoteProjectileData( + common_data: CommonFieldDataWithPlacement, + u1: Int, + u2: Int, + unk3: FlightPhysics.Value, + unk4: Int, + unk5: Int +) extends ConstructorData { + override def bitsize: Long = 33L + common_data.bitsize } object RemoteProjectileData extends Marshallable[RemoteProjectileData] { - implicit val codec : Codec[RemoteProjectileData] = ( + implicit val codec: Codec[RemoteProjectileData] = ( ("data" | CommonFieldDataWithPlacement.codec) :: ("u1" | uint16) :: ("u2" | uint8) :: ("unk3" | FlightPhysics.codec) :: ("unk4" | uint(3)) :: ("unk5" | uint2) - ).exmap[RemoteProjectileData] ( + ).exmap[RemoteProjectileData]( { case data :: u1 :: u2 :: unk3 :: unk4 :: unk5 :: HNil => Attempt.successful(RemoteProjectileData(data, u1, u2, unk3, unk4, unk5)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/RibbonBars.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/RibbonBars.scala index 83949ee5..7427895d 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/RibbonBars.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/RibbonBars.scala @@ -16,19 +16,20 @@ import scodec.codecs._ * @see `MeritCommendation` * @see `DisplayedAwardMessage` */ -final case class RibbonBars(upper : MeritCommendation.Value = MeritCommendation.None, - middle : MeritCommendation.Value = MeritCommendation.None, - lower : MeritCommendation.Value = MeritCommendation.None, - tos : MeritCommendation.Value = MeritCommendation.None - ) extends StreamBitSize { - override def bitsize : Long = 128L +final case class RibbonBars( + upper: MeritCommendation.Value = MeritCommendation.None, + middle: MeritCommendation.Value = MeritCommendation.None, + lower: MeritCommendation.Value = MeritCommendation.None, + tos: MeritCommendation.Value = MeritCommendation.None +) extends StreamBitSize { + override def bitsize: Long = 128L } object RibbonBars extends Marshallable[RibbonBars] { - implicit val codec : Codec[RibbonBars] = ( + implicit val codec: Codec[RibbonBars] = ( ("upper" | MeritCommendation.codec) :: ("middle" | MeritCommendation.codec) :: ("lower" | MeritCommendation.codec) :: ("tos" | MeritCommendation.codec) - ).as[RibbonBars] + ).as[RibbonBars] } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/SmallTurretData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/SmallTurretData.scala index 0cc3d5ee..f7e51651 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/SmallTurretData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/SmallTurretData.scala @@ -2,7 +2,6 @@ package net.psforever.packet.game.objectcreate import net.psforever.packet.Marshallable -import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scodec.codecs._ import scodec.{Attempt, Codec, Err} import shapeless.{::, HNil} @@ -20,11 +19,12 @@ import shapeless.{::, HNil} * @param health the amount of health the object has, as a percentage of a filled bar * @param internals data regarding the mounted weapon */ -final case class SmallTurretData(deploy : CommonFieldDataWithPlacement, - health : Int, - internals : Option[InventoryData] = None - ) extends ConstructorData { - override def bitsize : Long = { +final case class SmallTurretData( + deploy: CommonFieldDataWithPlacement, + health: Int, + internals: Option[InventoryData] = None +) extends ConstructorData { + override def bitsize: Long = { val deploySize = deploy.bitsize val internalSize = internals match { case Some(inv) => @@ -37,6 +37,7 @@ final case class SmallTurretData(deploy : CommonFieldDataWithPlacement, } object SmallTurretData extends Marshallable[SmallTurretData] { + /** * Overloaded constructor that mandates information about the internal weapon of the small turret. * @param deploy data common to objects spawned by the (advanced) adaptive construction engine @@ -44,23 +45,22 @@ object SmallTurretData extends Marshallable[SmallTurretData] { * @param internals data regarding the mounted weapon * @return a `SmallTurretData` object */ - def apply(deploy : CommonFieldDataWithPlacement, health : Int, internals : InventoryData) : SmallTurretData = + def apply(deploy: CommonFieldDataWithPlacement, health: Int, internals: InventoryData): SmallTurretData = new SmallTurretData(deploy, health, Some(internals)) - implicit val codec : Codec[SmallTurretData] = ( + implicit val codec: Codec[SmallTurretData] = ( ("deploy" | CommonFieldDataWithPlacement.codec2) :: ("health" | uint8L) :: uintL(7) :: uint4L :: uint2L :: optional(bool, "internals" | InventoryData.codec) - ).exmap[SmallTurretData] ( + ).exmap[SmallTurretData]( { - case deploy :: health :: 0 :: 0xF :: 0 :: internals :: HNil => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + case deploy :: health :: 0 :: 0xf :: 0 :: internals :: HNil => + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } Attempt.successful(SmallTurretData(deploy, newHealth, newInternals)) @@ -70,13 +70,12 @@ object SmallTurretData extends Marshallable[SmallTurretData] { }, { case SmallTurretData(deploy, health, internals) => - val (newHealth, newInternals) = if(health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { + val (newHealth, newInternals) = if (health == 0 || internals.isEmpty || internals.get.contents.isEmpty) { (0, None) - } - else { + } else { (health, internals) } - Attempt.successful(deploy :: newHealth :: 0 :: 0xF :: 0 :: newInternals :: HNil) + Attempt.successful(deploy :: newHealth :: 0 :: 0xf :: 0 :: newInternals :: HNil) } ) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/StreamBitSize.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/StreamBitSize.scala index 141e5eb7..2948b0de 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/StreamBitSize.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/StreamBitSize.scala @@ -5,6 +5,7 @@ package net.psforever.packet.game.objectcreate * Apply this `trait` to a class that needs to have its size in bits calculated. */ trait StreamBitSize { + /** * Performs a "sizeof()" analysis of the given object.
*
@@ -15,10 +16,11 @@ trait StreamBitSize { * @return the number of bits necessary to measure an object of this class; * defaults to `0L` */ - def bitsize : Long = 0L + def bitsize: Long = 0L } object StreamBitSize { + /** * Calculate the bit size of a Pascal string. * @param str a length-prefixed string @@ -26,9 +28,9 @@ object StreamBitSize { * defaults to 8 bits * @return the size in bits */ - def stringBitSize(str : String, width : Int = 8) : Long = { - val strlen = str.length - val lenSize = if(strlen > 127) 16L else 8L - lenSize + (strlen * width) + def stringBitSize(str: String, width: Int = 8): Long = { + val strlen = str.length + val lenSize = if (strlen > 127) 16L else 8L + lenSize + (strlen * width) } } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/TRAPData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/TRAPData.scala index 830d06a0..6f0c3750 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/TRAPData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/TRAPData.scala @@ -12,22 +12,20 @@ import shapeless.{::, HNil} * @param deploy data common to objects spawned by the (advanced) adaptive construction engine * @param health the amount of health the object has, as a percentage of a filled bar */ -final case class TRAPData(deploy : CommonFieldDataWithPlacement, - health : Int - ) extends ConstructorData { - override def bitsize : Long = { +final case class TRAPData(deploy: CommonFieldDataWithPlacement, health: Int) extends ConstructorData { + override def bitsize: Long = { 22L + deploy.bitsize //8u + 7u + 4u + 3u } } object TRAPData extends Marshallable[TRAPData] { - implicit val codec : Codec[TRAPData] = ( + implicit val codec: Codec[TRAPData] = ( ("deploy" | CommonFieldDataWithPlacement.codec2) :: ("health" | uint8L) :: uint(7) :: uint4L :: uint(3) - ).exmap[TRAPData] ( + ).exmap[TRAPData]( { case deploy :: health :: 0 :: 15 :: 0 :: HNil => Attempt.successful(TRAPData(deploy, health)) diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/TelepadDeployableData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/TelepadDeployableData.scala index 160bc490..2aa0d0d7 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/TelepadDeployableData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/TelepadDeployableData.scala @@ -12,23 +12,21 @@ import shapeless.{::, HNil} * @param unk1 na * @param unk2 na */ -final case class TelepadDeployableData(data : CommonFieldData, - unk1 : Int, - unk2 : Int) extends ConstructorData { - override def bitsize : Long = { +final case class TelepadDeployableData(data: CommonFieldData, unk1: Int, unk2: Int) extends ConstructorData { + override def bitsize: Long = { 20L + data.bitsize } } object TelepadDeployableData extends Marshallable[TelepadDeployableData] { - implicit val codec : Codec[TelepadDeployableData] = ( + implicit val codec: Codec[TelepadDeployableData] = ( ("deploy" | CommonFieldData.codec) :: ("unk1" | uint8) :: uint8 :: ("unk2" | uint4) - ).exmap[TelepadDeployableData] ( + ).exmap[TelepadDeployableData]( { - case data :: unk1 :: 0 :: unk2 :: HNil => + case data :: unk1 :: 0 :: unk2 :: HNil => Attempt.successful(TelepadDeployableData(data, unk1, unk2)) case data => diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/TerminalData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/TerminalData.scala index e7530ac6..e0e26aa8 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/TerminalData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/TerminalData.scala @@ -8,6 +8,7 @@ import net.psforever.types.PlanetSideGUID * This object is generally invisible. */ object TerminalData { + /** * Overloaded constructor for a type of common terminal. * @param cls the code for the type of object being constructed @@ -16,6 +17,6 @@ object TerminalData { * @param terminal the `TerminalData` * @return an `InternalSlot` object */ - def apply(cls : Int, guid : PlanetSideGUID, parentSlot : Int, terminal : CommonFieldData) : InternalSlot = + def apply(cls: Int, guid: PlanetSideGUID, parentSlot: Int, terminal: CommonFieldData): InternalSlot = InternalSlot(cls, guid, parentSlot, terminal) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala index 5c6d453b..44dcb218 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/VehicleData.scala @@ -16,17 +16,14 @@ import scala.collection.mutable.ListBuffer object VehicleFormat extends Enumeration { type Type = Value - val - Battleframe, //future expansion? - Normal, - Utility, - Variant = Value + val Battleframe, //future expansion? + Normal, Utility, Variant = Value } /** * A basic `Trait` connecting all of the vehicle data formats (excepting `Normal`/`None`). */ -sealed abstract class SpecificVehicleData(val format : VehicleFormat.Value) extends StreamBitSize +sealed abstract class SpecificVehicleData(val format: VehicleFormat.Value) extends StreamBitSize /** * The format of vehicle data for the type of vehicles that are considered "utility." @@ -35,8 +32,8 @@ sealed abstract class SpecificVehicleData(val format : VehicleFormat.Value) exte * the advanced mobile station. * @param unk na */ -final case class UtilityVehicleData(unk : Int) extends SpecificVehicleData(VehicleFormat.Utility) { - override def bitsize : Long = 6L +final case class UtilityVehicleData(unk: Int) extends SpecificVehicleData(VehicleFormat.Utility) { + override def bitsize: Long = 6L } /** @@ -44,8 +41,8 @@ final case class UtilityVehicleData(unk : Int) extends SpecificVehicleData(Vehic * This category includes all flying vehicles and the ancient cavern vehicles. * @param unk na */ -final case class VariantVehicleData(unk : Int) extends SpecificVehicleData(VehicleFormat.Variant) { - override def bitsize : Long = 8L +final case class VariantVehicleData(unk: Int) extends SpecificVehicleData(VehicleFormat.Variant) { + override def bitsize: Long = 8L } /** @@ -77,30 +74,35 @@ final case class VariantVehicleData(unk : Int) extends SpecificVehicleData(Vehic * see `vehicle_format_data`; * defaults to `Normal` */ -final case class VehicleData(pos : PlacementData, - data : CommonFieldData, - unk3 : Boolean, - health : Int, - unk4 : Boolean, - no_mount_points : Boolean, - driveState : DriveState.Value, - unk5 : Boolean, - unk6 : Boolean, - cloak : Boolean, - vehicle_format_data : Option[SpecificVehicleData], - inventory : Option[InventoryData] = None) - (val vehicle_type : VehicleFormat.Value = VehicleFormat.Normal) extends ConstructorData { - override def bitsize : Long = { +final case class VehicleData( + pos: PlacementData, + data: CommonFieldData, + unk3: Boolean, + health: Int, + unk4: Boolean, + no_mount_points: Boolean, + driveState: DriveState.Value, + unk5: Boolean, + unk6: Boolean, + cloak: Boolean, + vehicle_format_data: Option[SpecificVehicleData], + inventory: Option[InventoryData] = None +)(val vehicle_type: VehicleFormat.Value = VehicleFormat.Normal) + extends ConstructorData { + override def bitsize: Long = { //factor guard bool values into the base size, not its corresponding optional field - val posSize : Long = pos.bitsize - val dataSize : Long = data.bitsize - val extraBitsSize : Long = if(vehicle_format_data.isDefined) { vehicle_format_data.get.bitsize } else { 0L } - val inventorySize = if(inventory.isDefined) { inventory.get.bitsize } else { 0L } + val posSize: Long = pos.bitsize + val dataSize: Long = data.bitsize + val extraBitsSize: Long = if (vehicle_format_data.isDefined) { vehicle_format_data.get.bitsize } + else { 0L } + val inventorySize = if (inventory.isDefined) { inventory.get.bitsize } + else { 0L } 23L + posSize + dataSize + extraBitsSize + inventorySize } } object VehicleData extends Marshallable[VehicleData] { + /** * Overloaded constructor for specifically handling `Normal` vehicle format. * @param basic a field that encompasses some data used by the vehicle, including `faction` and `owner` @@ -109,8 +111,17 @@ object VehicleData extends Marshallable[VehicleData] { * @param cloak if a vehicle (that can cloak) is cloaked * @param inventory the seats, mounted weapons, and utilities (such as terminals) that are currently included */ - def apply(pos : PlacementData, basic : CommonFieldData, health : Int, driveState : DriveState.Value, cloak : Boolean, inventory : Option[InventoryData]) : VehicleData = { - VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, None, inventory)(VehicleFormat.Normal) + def apply( + pos: PlacementData, + basic: CommonFieldData, + health: Int, + driveState: DriveState.Value, + cloak: Boolean, + inventory: Option[InventoryData] + ): VehicleData = { + VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, None, inventory)( + VehicleFormat.Normal + ) } /** @@ -121,8 +132,18 @@ object VehicleData extends Marshallable[VehicleData] { * @param cloak if a vehicle (that can cloak) is cloaked * @param inventory the seats, mounted weapons, and utilities (such as terminals) that are currently included */ - def apply(pos : PlacementData, basic : CommonFieldData, health : Int, driveState : DriveState.Value, cloak : Boolean, format : UtilityVehicleData, inventory : Option[InventoryData]) : VehicleData = { - VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, Some(format), inventory)(VehicleFormat.Utility) + def apply( + pos: PlacementData, + basic: CommonFieldData, + health: Int, + driveState: DriveState.Value, + cloak: Boolean, + format: UtilityVehicleData, + inventory: Option[InventoryData] + ): VehicleData = { + VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, Some(format), inventory)( + VehicleFormat.Utility + ) } /** @@ -133,11 +154,22 @@ object VehicleData extends Marshallable[VehicleData] { * @param cloak if a vehicle (that can cloak) is cloaked * @param inventory the seats, mounted weapons, and utilities (such as terminals) that are currently included */ - def apply(pos : PlacementData, basic : CommonFieldData, health : Int, driveState : DriveState.Value, cloak : Boolean, format : VariantVehicleData, inventory : Option[InventoryData]) : VehicleData = { - VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, Some(format), inventory)(VehicleFormat.Variant) + def apply( + pos: PlacementData, + basic: CommonFieldData, + health: Int, + driveState: DriveState.Value, + cloak: Boolean, + format: VariantVehicleData, + inventory: Option[InventoryData] + ): VehicleData = { + VehicleData(pos, basic, false, health, false, false, driveState, false, false, cloak, Some(format), inventory)( + VehicleFormat.Variant + ) } import net.psforever.packet.game.objectcreate.{PlayerData => Player_Data} + /** * Constructor that ignores the coordinate information * and performs a vehicle-unique calculation of the padding value. @@ -151,10 +183,17 @@ object VehicleData extends Marshallable[VehicleData] { * used to calculate the padding value for the player's name in `CharacterAppearanceData` * @return a `PlayerData` object */ - def PlayerData(basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, inventory : InventoryData, drawn_slot : DrawnSlot.Type, accumulative : Long) : Player_Data = { + def PlayerData( + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + inventory: InventoryData, + drawn_slot: DrawnSlot.Type, + accumulative: Long + ): Player_Data = { val appearance = basic_appearance(CumulativeSeatedPlayerNamePadding(accumulative)) Player_Data(None, appearance, character_data(appearance.b.backpack, true), Some(inventory), drawn_slot)(false) } + /** * Constructor for `PlayerData` that ignores the coordinate information and the inventory * and performs a vehicle-unique calculation of the padding value. @@ -167,12 +206,17 @@ object VehicleData extends Marshallable[VehicleData] { * used to calculate the padding value for the player's name in `CharacterAppearanceData` * @return a `PlayerData` object */ - def PlayerData(basic_appearance : Int=>CharacterAppearanceData, character_data : (Boolean,Boolean)=>CharacterData, drawn_slot : DrawnSlot.Type, accumulative : Long) : Player_Data = { + def PlayerData( + basic_appearance: Int => CharacterAppearanceData, + character_data: (Boolean, Boolean) => CharacterData, + drawn_slot: DrawnSlot.Type, + accumulative: Long + ): Player_Data = { val appearance = basic_appearance(CumulativeSeatedPlayerNamePadding(accumulative)) Player_Data.apply(None, appearance, character_data(appearance.b.backpack, true), None, drawn_slot)(false) } - private val driveState8u = uint8.xmap[DriveState.Value] ( + private val driveState8u = uint8.xmap[DriveState.Value]( n => DriveState(n), n => n.id ) @@ -180,9 +224,9 @@ object VehicleData extends Marshallable[VehicleData] { /** * `Codec` for the "utility" format. */ - private val utility_data_codec : Codec[SpecificVehicleData] = { + private val utility_data_codec: Codec[SpecificVehicleData] = { import shapeless.:: - uintL(6).hlist.exmap[SpecificVehicleData] ( + uintL(6).hlist.exmap[SpecificVehicleData]( { case n :: HNil => Successful(UtilityVehicleData(n).asInstanceOf[SpecificVehicleData]) @@ -195,12 +239,13 @@ object VehicleData extends Marshallable[VehicleData] { } ) } + /** * `Codec` for the "variant" format. */ - private val variant_data_codec : Codec[SpecificVehicleData] = { + private val variant_data_codec: Codec[SpecificVehicleData] = { import shapeless.:: - uint8L.hlist.exmap[SpecificVehicleData] ( + uint8L.hlist.exmap[SpecificVehicleData]( { case n :: HNil => Successful(VariantVehicleData(n).asInstanceOf[SpecificVehicleData]) @@ -219,16 +264,18 @@ object VehicleData extends Marshallable[VehicleData] { * @param vehicleFormat the requested format * @return the appropriate `Codec` for parsing that format */ - private def selectFormatReader(vehicleFormat : VehicleFormat.Value) : Codec[SpecificVehicleData] = vehicleFormat match { - case VehicleFormat.Utility => - utility_data_codec - case VehicleFormat.Variant => - variant_data_codec - case _ => - Failure(Err(s"$vehicleFormat is not a valid vehicle format for parsing data")).asInstanceOf[Codec[SpecificVehicleData]] - } + private def selectFormatReader(vehicleFormat: VehicleFormat.Value): Codec[SpecificVehicleData] = + vehicleFormat match { + case VehicleFormat.Utility => + utility_data_codec + case VehicleFormat.Variant => + variant_data_codec + case _ => + Failure(Err(s"$vehicleFormat is not a valid vehicle format for parsing data")) + .asInstanceOf[Codec[SpecificVehicleData]] + } - def codec(vehicle_type : VehicleFormat.Value) : Codec[VehicleData] = { + def codec(vehicle_type: VehicleFormat.Value): Codec[VehicleData] = { import shapeless.:: ( ("pos" | PlacementData.codec) >>:~ { pos => @@ -238,30 +285,38 @@ object VehicleData extends Marshallable[VehicleData] { ("unk4" | bool) :: //usually 0 ("no_mount_points" | bool) :: ("driveState" | driveState8u) :: //used for deploy state - ("unk5" | bool) :: //unknown but generally false; can cause stream misalignment if set when unexpectedly + ("unk5" | bool) :: //unknown but generally false; can cause stream misalignment if set when unexpectedly ("unk6" | bool) :: ("cloak" | bool) :: //cloak as wraith, phantasm - conditional(vehicle_type != VehicleFormat.Normal, "vehicle_format_data" | selectFormatReader(vehicle_type)) :: //padding? - optional(bool, "inventory" | custom_inventory_codec(InitialStreamLengthToSeatEntries(pos.vel.isDefined, vehicle_type))) + conditional( + vehicle_type != VehicleFormat.Normal, + "vehicle_format_data" | selectFormatReader(vehicle_type) + ) :: //padding? + optional( + bool, + "inventory" | custom_inventory_codec(InitialStreamLengthToSeatEntries(pos.vel.isDefined, vehicle_type)) + ) } - ).exmap[VehicleData] ( + ).exmap[VehicleData]( { case pos :: data :: u3 :: health :: u4 :: no_mount :: driveState :: u5 :: u6 :: cloak :: format :: inv :: HNil => - Attempt.successful(new VehicleData(pos, data, u3, health, u4, no_mount, driveState, u5, u6, cloak, format, inv)(vehicle_type)) + Attempt.successful( + new VehicleData(pos, data, u3, health, u4, no_mount, driveState, u5, u6, cloak, format, inv)(vehicle_type) + ) case data => Attempt.failure(Err(s"invalid vehicle data format - $data")) }, { case obj @ VehicleData(pos, data, u3, health, u4, no_mount, driveState, u5, u6, cloak, format, inv) => - if(obj.vehicle_type == VehicleFormat.Normal && format.nonEmpty) { + if (obj.vehicle_type == VehicleFormat.Normal && format.nonEmpty) { Attempt.failure(Err("invalid vehicle data format; variable bits not expected")) - } - else if(obj.vehicle_type != VehicleFormat.Normal && format.isEmpty) { + } else if (obj.vehicle_type != VehicleFormat.Normal && format.isEmpty) { Attempt.failure(Err(s"invalid vehicle data format; variable bits for ${obj.vehicle_type} expected")) - } - else { - Attempt.successful(pos :: data :: u3 :: health :: u4 :: no_mount :: driveState :: u5 :: u6 :: cloak :: format :: inv :: HNil) + } else { + Attempt.successful( + pos :: data :: u3 :: health :: u4 :: no_mount :: driveState :: u5 :: u6 :: cloak :: format :: inv :: HNil + ) } } ) @@ -281,13 +336,14 @@ object VehicleData extends Marshallable[VehicleData] { * @param format the `Codec` subtype for this vehicle * @return the length of the bitstream */ - def InitialStreamLengthToSeatEntries(hasVelocity : Boolean, format : VehicleFormat.Type) : Long = { + def InitialStreamLengthToSeatEntries(hasVelocity: Boolean, format: VehicleFormat.Type): Long = { 198 + - (if(hasVelocity) { 42 } else { 0 }) + + (if (hasVelocity) { 42 } + else { 0 }) + (format match { case VehicleFormat.Utility => 6 case VehicleFormat.Variant => 8 - case _ => 0 + case _ => 0 }) } @@ -298,10 +354,10 @@ object VehicleData extends Marshallable[VehicleData] { * @param next the length of the last entry, if one was parsed * @return the padding value, 0-7 bits */ - def CumulativeSeatedPlayerNamePadding(base : Long, next : Option[StreamBitSize]) : Int = { + def CumulativeSeatedPlayerNamePadding(base: Long, next: Option[StreamBitSize]): Int = { CumulativeSeatedPlayerNamePadding(base + (next match { case Some(o) => o.bitsize - case None => 0 + case None => 0 })) } @@ -319,7 +375,7 @@ object VehicleData extends Marshallable[VehicleData] { * @param accumulative current entry stream offset (start of this player's entry) * @return the padding value, 0-7 bits */ - private def CumulativeSeatedPlayerNamePadding(accumulative : Long) : Int = { + private def CumulativeSeatedPlayerNamePadding(accumulative: Long): Int = { Player_Data.ByteAlignmentPadding(accumulative + 23 + 35) } @@ -342,19 +398,19 @@ object VehicleData extends Marshallable[VehicleData] { * @param length the distance in bits to the first inventory entry * @return a `Codec` that translates `InventoryData` */ - private def custom_inventory_codec(length : Long) : Codec[InventoryData] = { + private def custom_inventory_codec(length: Long): Codec[InventoryData] = { import shapeless.:: ( uint8 >>:~ { size => uint2 :: (inventory_seat_codec( - length, //length of stream until current seat - CumulativeSeatedPlayerNamePadding(length) //calculated offset of name field in next seat + length, //length of stream until current seat + CumulativeSeatedPlayerNamePadding(length) //calculated offset of name field in next seat ) >>:~ { seats => - PacketHelpers.listOfNSized(size - countSeats(seats), InternalSlot.codec).hlist - }) + PacketHelpers.listOfNSized(size - countSeats(seats), InternalSlot.codec).hlist + }) } - ).xmap[InventoryData] ( + ).xmap[InventoryData]( { case _ :: _ :: None :: inv :: HNil => InventoryData(inv) @@ -375,7 +431,7 @@ object VehicleData extends Marshallable[VehicleData] { * @param seat data for this entry extracted via `PlayerData` * @param next the next entry */ - private case class InventorySeat(seat : Option[InternalSlot], next : Option[InventorySeat]) + private case class InventorySeat(seat: Option[InternalSlot], next: Option[InventorySeat]) /** * Look ahead at the next value to determine if it is an example of a player character @@ -386,23 +442,26 @@ object VehicleData extends Marshallable[VehicleData] { * @param offset the padding value for this entry's player character's `name` field * @return a recursive `Codec` that translates subsequent `PlayerData` entries until exhausted */ - private def inventory_seat_codec(length : Long, offset : Int) : Codec[Option[InventorySeat]] = { + private def inventory_seat_codec(length: Long, offset: Int): Codec[Option[InventorySeat]] = { import shapeless.:: ( PacketHelpers.peek(uintL(11)) >>:~ { objClass => conditional(objClass == ObjectClass.avatar, seat_codec(offset)) >>:~ { seat => - conditional(objClass == ObjectClass.avatar, inventory_seat_codec( - { //length of stream until next seat - length + (seat match { - case Some(o) => o.bitsize - case None => 0 - }) - }, - CumulativeSeatedPlayerNamePadding(length, seat) //calculated offset of name field in next seat - )).hlist + conditional( + objClass == ObjectClass.avatar, + inventory_seat_codec( + { //length of stream until next seat + length + (seat match { + case Some(o) => o.bitsize + case None => 0 + }) + }, + CumulativeSeatedPlayerNamePadding(length, seat) //calculated offset of name field in next seat + ) + ).hlist } } - ).exmap[Option[InventorySeat]] ( + ).exmap[Option[InventorySeat]]( { case _ :: None :: None :: HNil => Successful(None) @@ -434,14 +493,14 @@ object VehicleData extends Marshallable[VehicleData] { * `CumulativeSeatedPlayerNamePadding` * @return a `Codec` that translates `PlayerData` */ - private def seat_codec(pad : Int) : Codec[InternalSlot] = { + private def seat_codec(pad: Int): Codec[InternalSlot] = { import shapeless.:: ( ("objectClass" | uintL(11)) :: ("guid" | PlanetSideGUID.codec) :: ("parentSlot" | PacketHelpers.encodedStringSize) :: ("obj" | Player_Data.codec(pad)) - ).xmap[InternalSlot] ( + ).xmap[InternalSlot]( { case objectClass :: guid :: parentSlot :: obj :: HNil => InternalSlot(objectClass, guid, parentSlot, obj) @@ -458,17 +517,17 @@ object VehicleData extends Marshallable[VehicleData] { * @param chain the head of the linked list * @return the number of entries */ - private def countSeats(chain : Option[InventorySeat]) : Int = { + private def countSeats(chain: Option[InventorySeat]): Int = { chain match { case Some(_) => - var curr = chain + var curr = chain var count = 0 do { val link = curr.get - count += (if(link.seat.nonEmpty) { 1 } else { 0 }) + count += (if (link.seat.nonEmpty) { 1 } + else { 0 }) curr = link.next - } - while(curr.nonEmpty) + } while (curr.nonEmpty) count case None => @@ -481,10 +540,10 @@ object VehicleData extends Marshallable[VehicleData] { * @param chain the head of the linked list * @return a proper list of the contents of the input linked list */ - private def unlinkSeats(chain : Option[InventorySeat]) : List[InternalSlot] = { + private def unlinkSeats(chain: Option[InventorySeat]): List[InternalSlot] = { var curr = chain - val out = new ListBuffer[InternalSlot] - while(curr.isDefined) { + val out = new ListBuffer[InternalSlot] + while (curr.isDefined) { val link = curr.get link.seat match { case None => @@ -502,7 +561,7 @@ object VehicleData extends Marshallable[VehicleData] { * @param list a proper list of objects * @return a linked list composed of the contents of the input list */ - private def chainSeats(list : List[InternalSlot]) : Option[InventorySeat] = { + private def chainSeats(list: List[InternalSlot]): Option[InventorySeat] = { list match { case Nil => None @@ -510,12 +569,14 @@ object VehicleData extends Marshallable[VehicleData] { Some(InventorySeat(Some(x), None)) case _ :: _ => var link = InventorySeat(Some(list.last), None) //build the chain in reverse order, starting with the last entry - list.reverse.drop(1).foreach(seat => { - link = InventorySeat(Some(seat), Some(link)) - }) + list.reverse + .drop(1) + .foreach(seat => { + link = InventorySeat(Some(seat), Some(link)) + }) Some(link) } } - implicit val codec : Codec[VehicleData] = codec(VehicleFormat.Normal) + implicit val codec: Codec[VehicleData] = codec(VehicleFormat.Normal) } diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/WeaponData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/WeaponData.scala index b73274be..a5b1ea2d 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/WeaponData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/WeaponData.scala @@ -22,19 +22,17 @@ import shapeless.{::, HNil} * @param ammo data regarding the currently loaded ammunition type(s) * @see `AmmoBoxData` */ -final case class WeaponData(data : CommonFieldData, - fire_mode : Int, - ammo : List[InternalSlot], - unk : Boolean = false - ) extends ConstructorData { - override def bitsize : Long = { - val dataSize = data.bitsize - val ammoSize : Long = ammo.foldLeft(0L)(_ + _.bitsize) +final case class WeaponData(data: CommonFieldData, fire_mode: Int, ammo: List[InternalSlot], unk: Boolean = false) + extends ConstructorData { + override def bitsize: Long = { + val dataSize = data.bitsize + val ammoSize: Long = ammo.foldLeft(0L)(_ + _.bitsize) 21L + dataSize + ammoSize //11 + 10 (from InventoryData) + ammo } } object WeaponData extends Marshallable[WeaponData] { + /** * Overloaded constructor for creating `WeaponData` that mandates information about a single type of ammunition. * @param unk1 na @@ -45,7 +43,14 @@ object WeaponData extends Marshallable[WeaponData] { * @param ammo the ammunition object * @return a `WeaponData` object */ - def apply(unk1 : Int, unk2 : Int, cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : CommonFieldData) : WeaponData = { + def apply( + unk1: Int, + unk2: Int, + cls: Int, + guid: PlanetSideGUID, + parentSlot: Int, + ammo: CommonFieldData + ): WeaponData = { WeaponData( CommonFieldData( PlanetSideEmpire(unk1 & 3), @@ -74,7 +79,15 @@ object WeaponData extends Marshallable[WeaponData] { * @param ammo the ammunition object * @return a `WeaponData` object */ - def apply(unk1 : Int, unk2 : Int, fire_mode : Int, cls : Int, guid : PlanetSideGUID, parentSlot : Int, ammo : CommonFieldData) : WeaponData = { + def apply( + unk1: Int, + unk2: Int, + fire_mode: Int, + cls: Int, + guid: PlanetSideGUID, + parentSlot: Int, + ammo: CommonFieldData + ): WeaponData = { WeaponData( CommonFieldData( PlanetSideEmpire(unk1 & 3), @@ -108,7 +121,19 @@ object WeaponData extends Marshallable[WeaponData] { * @param ammo2 the second ammunition object * @return a `WeaponData` object */ - def apply(unk1 : Int, unk2 : Int, fire_mode : Int, cls1 : Int, guid1 : PlanetSideGUID, slot1 : Int, ammo1 : CommonFieldData, cls2 : Int, guid2 : PlanetSideGUID, slot2 : Int, ammo2 : CommonFieldData) : WeaponData ={ + def apply( + unk1: Int, + unk2: Int, + fire_mode: Int, + cls1: Int, + guid1: PlanetSideGUID, + slot1: Int, + ammo1: CommonFieldData, + cls2: Int, + guid2: PlanetSideGUID, + slot2: Int, + ammo2: CommonFieldData + ): WeaponData = { WeaponData( CommonFieldData( PlanetSideEmpire(unk1 & 3), @@ -126,20 +151,19 @@ object WeaponData extends Marshallable[WeaponData] { ) } - implicit val codec : Codec[WeaponData] = ( + implicit val codec: Codec[WeaponData] = ( ("data" | CommonFieldData.codec) :: ("fire_mode" | int8) :: bool :: optional(bool, "ammo" | InventoryData.codec) :: ("unk" | bool) - ).exmap[WeaponData] ( + ).exmap[WeaponData]( { case data :: fmode :: false :: Some(InventoryData(ammo)) :: unk :: HNil => val magSize = ammo.size - if(magSize == 0) { + if (magSize == 0) { Attempt.failure(Err("weapon must decode some ammunition")) - } - else { + } else { Attempt.successful(WeaponData(data, fmode, ammo, unk)) } case data :: fmode :: false :: None :: unk :: HNil => @@ -151,13 +175,11 @@ object WeaponData extends Marshallable[WeaponData] { { case WeaponData(data, fmode, ammo, unk) => val magSize = ammo.size - if(magSize == 0) { + if (magSize == 0) { Attempt.failure(Err("weapon must encode some ammunition")) - } - else if(magSize >= 255) { + } else if (magSize >= 255) { Attempt.failure(Err("weapon encodes too much ammunition (255+ types!)")) - } - else { + } else { Attempt.successful(data :: fmode :: false :: Some(InventoryData(ammo)) :: unk :: HNil) } case _ => diff --git a/common/src/main/scala/net/psforever/persistence/Account.scala b/common/src/main/scala/net/psforever/persistence/Account.scala new file mode 100644 index 00000000..dc7e6b79 --- /dev/null +++ b/common/src/main/scala/net/psforever/persistence/Account.scala @@ -0,0 +1,13 @@ +package net.psforever.persistence + +import org.joda.time.LocalDateTime + +case class Account( + id: Int, + username: String, + passhash: String, + created: LocalDateTime = LocalDateTime.now(), + lastModified: LocalDateTime = LocalDateTime.now(), + inactive: Boolean = false, + gm: Boolean = false +) diff --git a/common/src/main/scala/net/psforever/persistence/Character.scala b/common/src/main/scala/net/psforever/persistence/Character.scala new file mode 100644 index 00000000..a307d0e6 --- /dev/null +++ b/common/src/main/scala/net/psforever/persistence/Character.scala @@ -0,0 +1,23 @@ +package net.psforever.persistence + +import org.joda.time.LocalDateTime +import net.psforever.objects.Avatar +import net.psforever.types.{PlanetSideEmpire, CharacterGender, CharacterVoice} + +case class Character( + id: Int, + name: String, + accountId: Int, + factionId: Int, + genderId: Int, + headId: Int, + voiceId: Int, + created: LocalDateTime = LocalDateTime.now(), + lastLogin: LocalDateTime = LocalDateTime.now(), + lastModified: LocalDateTime = LocalDateTime.now(), + deleted: Boolean = false +) { + + def toAvatar(): Avatar = + new Avatar(id, name, PlanetSideEmpire(factionId), CharacterGender(genderId), headId, CharacterVoice(voiceId)) +} diff --git a/common/src/main/scala/net/psforever/persistence/Loadout.scala b/common/src/main/scala/net/psforever/persistence/Loadout.scala new file mode 100644 index 00000000..f1281c49 --- /dev/null +++ b/common/src/main/scala/net/psforever/persistence/Loadout.scala @@ -0,0 +1,3 @@ +package net.psforever.persistence + +case class Loadout(id: Int, charactersId: Int, loadoutNumber: Int, exosuitId: Int, name: String, items: String) diff --git a/common/src/main/scala/net/psforever/persistence/Locker.scala b/common/src/main/scala/net/psforever/persistence/Locker.scala new file mode 100644 index 00000000..390b3729 --- /dev/null +++ b/common/src/main/scala/net/psforever/persistence/Locker.scala @@ -0,0 +1,3 @@ +package net.psforever.persistence + +case class Locker(id: Int, charactersId: Int, items: String) diff --git a/common/src/main/scala/net/psforever/persistence/Login.scala b/common/src/main/scala/net/psforever/persistence/Login.scala new file mode 100644 index 00000000..0dd8eecd --- /dev/null +++ b/common/src/main/scala/net/psforever/persistence/Login.scala @@ -0,0 +1,13 @@ +package net.psforever.persistence + +import org.joda.time.LocalDateTime + +case class Login( + id: Int, + accountId: Int, + loginTime: LocalDateTime = LocalDateTime.now(), + ipAddress: String, + canonicalHostname: String, + hostname: String, + port: Int +) diff --git a/common/src/main/scala/net/psforever/types/Angular.scala b/common/src/main/scala/net/psforever/types/Angular.scala index 8457969a..bd27195f 100644 --- a/common/src/main/scala/net/psforever/types/Angular.scala +++ b/common/src/main/scala/net/psforever/types/Angular.scala @@ -13,10 +13,10 @@ import shapeless.{::, HNil} */ object Angular { //roll - val codec_roll : Codec[Float] = ( + val codec_roll: Codec[Float] = ( ignore(1) :: codec_roll(7) - ).xmap[Float] ( + ).xmap[Float]( { case _ :: roll :: HNil => roll @@ -24,13 +24,13 @@ object Angular { roll => () :: roll :: HNil ) - def codec_roll(bits : Int) : Codec[Float] = newcodecs.q_float(0.0f, 360.0f, bits) + def codec_roll(bits: Int): Codec[Float] = newcodecs.q_float(0.0f, 360.0f, bits) //pitch - val codec_pitch : Codec[Float] = ( + val codec_pitch: Codec[Float] = ( ignore(1) :: codec_pitch(7) - ).xmap[Float] ( + ).xmap[Float]( { case _ :: pitch :: HNil => pitch @@ -38,53 +38,59 @@ object Angular { pitch => () :: pitch :: HNil ) - def codec_pitch(bits : Int) : Codec[Float] = newcodecs.q_float(360.0f, 0.0f, bits).xmap[Float] ( - pitch => decodeCorrectedAngle(pitch), - pitch => encodeCorrectedAngle(pitch) - ) + def codec_pitch(bits: Int): Codec[Float] = + newcodecs + .q_float(360.0f, 0.0f, bits) + .xmap[Float]( + pitch => decodeCorrectedAngle(pitch), + pitch => encodeCorrectedAngle(pitch) + ) //yaw - def codec_yaw(North : Float = 90.0f) : Codec[Float] = ( - ignore(1) :: - codec_yaw(7, North) - ).xmap[Float] ( - { - case _ :: yaw :: HNil => - yaw - }, - yaw => () :: yaw :: HNil - ) + def codec_yaw(North: Float = 90.0f): Codec[Float] = + ( + ignore(1) :: + codec_yaw(7, North) + ).xmap[Float]( + { + case _ :: yaw :: HNil => + yaw + }, + yaw => () :: yaw :: HNil + ) - def codec_yaw(bits : Int, North : Float) : Codec[Float] = newcodecs.q_float(360.0f, 0.0f, bits).xmap[Float] ( - yaw => decodeCorrectedAngle(yaw, North), - yaw => encodeCorrectedAngle(yaw, North) - ) + def codec_yaw(bits: Int, North: Float): Codec[Float] = + newcodecs + .q_float(360.0f, 0.0f, bits) + .xmap[Float]( + yaw => decodeCorrectedAngle(yaw, North), + yaw => encodeCorrectedAngle(yaw, North) + ) - val codec_zero_centered : Codec[Float] = codec_yaw(North = 0).xmap[Float] ( - out => if(out > 180) out - 360 else out, + val codec_zero_centered: Codec[Float] = codec_yaw(North = 0).xmap[Float]( + out => if (out > 180) out - 360 else out, in => { val adjustedIn = in % 360 - if(adjustedIn < 0) 360 + adjustedIn - else if(adjustedIn > 180) 360 - adjustedIn + if (adjustedIn < 0) 360 + adjustedIn + else if (adjustedIn > 180) 360 - adjustedIn else adjustedIn } ) //support - def decodeCorrectedAngle(angle : Float, correction : Float = 0f) : Float = { - var correctedAng : Float = angle + correction - if(correctedAng >= 360f) { + def decodeCorrectedAngle(angle: Float, correction: Float = 0f): Float = { + var correctedAng: Float = angle + correction + if (correctedAng >= 360f) { correctedAng = correctedAng - 360f } correctedAng } - def encodeCorrectedAngle(angle : Float, correction : Float = 0f) : Float = { - var correctedAng : Float = angle - correction - if(correctedAng <= 0f) { + def encodeCorrectedAngle(angle: Float, correction: Float = 0f): Float = { + var correctedAng: Float = angle - correction + if (correctedAng <= 0f) { correctedAng = 360f + correctedAng % 360f - } - else if(correctedAng > 360f) { + } else if (correctedAng > 360f) { correctedAng = correctedAng % 360f } correctedAng diff --git a/common/src/main/scala/net/psforever/types/CargoStatus.scala b/common/src/main/scala/net/psforever/types/CargoStatus.scala index 691e8793..f4636e62 100644 --- a/common/src/main/scala/net/psforever/types/CargoStatus.scala +++ b/common/src/main/scala/net/psforever/types/CargoStatus.scala @@ -7,10 +7,10 @@ import scodec.codecs._ object CargoStatus extends Enumeration { type Type = Value - val Empty = Value(0) + val Empty = Value(0) val InProgress = Value(1) - val UNK1 = Value(2) // to have Xtoolspar working - val Occupied = Value(3) + val UNK1 = Value(2) // to have Xtoolspar working + val Occupied = Value(3) implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } diff --git a/common/src/main/scala/net/psforever/types/CertificationType.scala b/common/src/main/scala/net/psforever/types/CertificationType.scala index 99afa33c..e88666c2 100644 --- a/common/src/main/scala/net/psforever/types/CertificationType.scala +++ b/common/src/main/scala/net/psforever/types/CertificationType.scala @@ -5,6 +5,7 @@ import net.psforever.packet.PacketHelpers import scodec.codecs._ import scala.annotation.tailrec + /** * An `Enumeration` of the available certifications.
*
@@ -26,55 +27,21 @@ object CertificationType extends Enumeration { val //0 StandardAssault, //always listed - MediumAssault, - HeavyAssault, - SpecialAssault, - AntiVehicular, - Sniping, - EliteAssault, - AirCavalryScout, - AirCavalryInterceptor, - AirCavalryAssault, - //10 - AirSupport, - ATV, - LightScout, - AssaultBuggy, - ArmoredAssault1, - ArmoredAssault2, - GroundTransport, - GroundSupport, - BattleFrameRobotics, - Flail, - //20 - Switchblade, - Harasser, - Phantasm, - GalaxyGunship, - BFRAntiAircraft, - BFRAntiInfantry, - StandardExoSuit, //always listed - AgileExoSuit, //always listed - ReinforcedExoSuit, - InfiltrationSuit, - //30 - AAMAX, - AIMAX, - AVMAX, - UniMAX, - Medical, - AdvancedMedical, - Hacking, - AdvancedHacking, - ExpertHacking, - DataCorruption, - //40 + MediumAssault, HeavyAssault, SpecialAssault, AntiVehicular, Sniping, EliteAssault, AirCavalryScout, + AirCavalryInterceptor, AirCavalryAssault, + //10 + AirSupport, ATV, LightScout, AssaultBuggy, ArmoredAssault1, ArmoredAssault2, GroundTransport, GroundSupport, + BattleFrameRobotics, Flail, + //20 + Switchblade, Harasser, Phantasm, GalaxyGunship, BFRAntiAircraft, BFRAntiInfantry, StandardExoSuit, //always listed + AgileExoSuit, //always listed + ReinforcedExoSuit, InfiltrationSuit, + //30 + AAMAX, AIMAX, AVMAX, UniMAX, Medical, AdvancedMedical, Hacking, AdvancedHacking, ExpertHacking, DataCorruption, + //40 ElectronicsExpert, //requires Hacking and AdvancedHacking - Engineering, - CombatEngineering, - FortificationEngineering, - AssaultEngineering, - AdvancedEngineering //requires Engineering and CombatEngineering + Engineering, CombatEngineering, FortificationEngineering, AssaultEngineering, + AdvancedEngineering //requires Engineering and CombatEngineering = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) @@ -87,9 +54,9 @@ object CertificationType extends Enumeration { * @param certs the certifications, as a sequence of values * @return the certifications, as a single value */ - def toEncodedLong(certs : Set[CertificationType.Value]) : Long = { + def toEncodedLong(certs: Set[CertificationType.Value]): Long = { certs - .map{ cert => math.pow(2, cert.id).toLong } + .map { cert => math.pow(2, cert.id).toLong } .foldLeft(0L)(_ + _) } @@ -102,10 +69,10 @@ object CertificationType extends Enumeration { * @param certs the certifications, as a single value * @return the certifications, as a sequence of values */ - def fromEncodedLong(certs : Long) : Set[CertificationType.Value] = { + def fromEncodedLong(certs: Long): Set[CertificationType.Value] = { recursiveFromEncodedLong( certs, - CertificationType.values.map{ cert => math.pow(2, cert.id).toLong }.toSeq.sorted + CertificationType.values.map { cert => math.pow(2, cert.id).toLong }.toSeq.sorted ) } @@ -124,11 +91,14 @@ object CertificationType extends Enumeration { * @return the certifications, as a sequence of values */ @tailrec - private def recursiveFromEncodedLong(certs : Long, splitList : Iterable[Long], out : Set[CertificationType.Value] = Set.empty) : Set[CertificationType.Value] = { - if(certs == 0 || splitList.isEmpty) { + private def recursiveFromEncodedLong( + certs: Long, + splitList: Iterable[Long], + out: Set[CertificationType.Value] = Set.empty + ): Set[CertificationType.Value] = { + if (certs == 0 || splitList.isEmpty) { out - } - else { + } else { val (less, _) = splitList.partition(_ <= certs) recursiveFromEncodedLong(certs - less.last, less, out ++ Set(CertificationType(less.size - 1))) } diff --git a/common/src/main/scala/net/psforever/types/CharacterVoice.scala b/common/src/main/scala/net/psforever/types/CharacterVoice.scala index 556b712f..007b96c4 100644 --- a/common/src/main/scala/net/psforever/types/CharacterVoice.scala +++ b/common/src/main/scala/net/psforever/types/CharacterVoice.scala @@ -15,13 +15,11 @@ import scodec.codecs.uint object CharacterVoice extends Enumeration { type Type = Value - val - Mute, - Voice1, //grizzled, tough - Voice2, //greenhorn, clueless - Voice3, //roughneck, gruff - Voice4, //stalwart, smooth - Voice5 //daredevil, calculating + val Mute, Voice1, //grizzled, tough + Voice2, //greenhorn, clueless + Voice3, //roughneck, gruff + Voice4, //stalwart, smooth + Voice5 //daredevil, calculating = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) diff --git a/common/src/main/scala/net/psforever/types/ChatMessageType.scala b/common/src/main/scala/net/psforever/types/ChatMessageType.scala index c0db3621..aea7f4e7 100644 --- a/common/src/main/scala/net/psforever/types/ChatMessageType.scala +++ b/common/src/main/scala/net/psforever/types/ChatMessageType.scala @@ -20,264 +20,264 @@ import scodec.codecs._ */ object ChatMessageType extends Enumeration { type Type = Value - val UNK_0, // ??? - CMT_ALLIANCE, // ??? unused - CMT_BATTLEGROUP, // /bg (not working???) - CMT_BROADCAST, // /broadcast OR /b - CMT_COMMAND, // /command OR /c - CMT_COMMAND_ALLZONES, // /comall - CMT_COMMAND_REPORT, // /sitrep OR /situationreport - CMT_COMMAND_SANCTUARY, // /comsanctuary OR /comsan - CMT_COMMAND_STATION, // ??? unused - CMT_COMMAND_CAVERN1, // /comsu OR /comsupai - CMT_COMMAND_CAVERN2, // /comhu OR /comhunhau - CMT_COMMAND_CAVERN3, // /comad OR /comadlivun - CMT_COMMAND_CAVERN4, // /comby OR /combyblos - CMT_COMMAND_CAVERN5, // /coman OR /comannwn - CMT_COMMAND_CAVERN6, // /comdr OR /comdrugaskan - CMT_COMMAND_ZONE1, // /comso OR /comsolsar - CMT_COMMAND_ZONE2, // /comho OR /comhossin - CMT_COMMAND_ZONE3, // /comcy OR /comcyssor - CMT_COMMAND_ZONE4, // /comis OR /comishundar - CMT_COMMAND_ZONE5, // /comfo OR /comforseral - CMT_COMMAND_ZONE6, // /comce OR /comceryshen - CMT_COMMAND_ZONE7, // /comes OR /comesamir - CMT_COMMAND_ZONE8, // /comos OR /comoshur - CMT_COMMAND_ZONE8_PRIME, // /compr OR /comoshurprime - CMT_COMMAND_ZONE9, // /comse OR /comsearhus - CMT_COMMAND_ZONE10, // /comam OR /comamerish - CMT_OPEN, // /local OR /l - CMT_OUTFIT, // /outfit OR /o - CMT_PLATOON, // /platoon OR /p - CMT_PLATOONLEADER, // /platoonleader OR /pl - CMT_SQUAD, // /squad OR /s - CMT_SQUADLEADER, // /sl - CMT_TELL, // /tell OR /t - U_CMT_BLACKOPS_CHAT, // ??? No slash command? - CMT_GMBROADCAST, // /gmbroadcast - CMT_GMBROADCAST_NC, // /ncbroadcast - CMT_GMBROADCAST_TR, // /trbroadcast - CMT_GMBROADCAST_VS, // /vsbroadcast - CMT_GMBROADCASTWORLD, // /worldbroadcast OR /wb - CMT_GMOPEN, // /gmlocal - CMT_GMTELL, // /gmtell (actually causes normal /tell 0x20 when not a gm???) - CMT_NOTE, // /note - CMT_GMBROADCASTPOPUP, // /gmpopup - U_CMT_GMTELLFROM, // ??? Recipient of /gmtell? - U_CMT_TELLFROM, // ??? Recipient of /t? - UNK_45, // ??? empty - CMT_CULLWATERMARK, // ??? This actually causes the client to ping back to the server with some stringified numbers "80 120" (with the same 46 chatmsg causing infinite loop?) - may be incorrect decoding - CMT_INSTANTACTION, // /instantaction OR /ia - CMT_RECALL, // /recall - CMT_OUTFIT_RECALL, // /outfitrecall - CMT_SQUAD_REMATRIX, // ??? - CMT_OUTFITRENAME_USER, // /outfitrename - CMT_RENAME_USER, // /rename - CMT_REPORTUSER, // /report - CMT_VOICE, // quickchat (v-- commands) - CMT_WHO, // /who - CMT_WHO_CSR, // /whocsr OR /whogm - CMT_WHO_PLATOONLEADERS, // /whoplatoonleaders OR /whopl - CMT_WHO_SQUADLEADERS, // /whosquadleaders OR /whosl - CMT_WHO_TEAMS, // /whoteams OR /whoempires - CMT_WHO_CR, // /who cr<#> - CMT_QUIT, // /quit OR /q - CMT_HIDE_HELMET, // /hide_helmet OR /helmet - CMT_TOGGLE_HAT, // /hat - CMT_TOGGLE_SHADES, // /shades - CMT_TOGGLE_EARPIECE, // /earpiece - CMT_TOGGLE_GM, // /gmtoggle - CMT_ANONYMOUS, // /anon OR /anonymous - CMT_DESTROY, // /destroy - CMT_KICK, // /worldkick - CMT_KICK_BY_ID, // /worldkickid - UNK_71, // ??? empty (though the game elsewhere handles it similarly to 69!) - CMT_LOCKSERVER, // /lockserver - CMT_UNLOCKSERVER, // /unlockserver - CMT_CAPTUREBASE, // /capturebase - CMT_CREATE, // /create - CMT_HACK_DOORS, // /hackdoors - CMT_OUTFITCLAIM, // /outfitclaim - CMT_OUTFITUNCLAIM, // /outfitunclaim - CMT_SETBASERESOURCES, // /setbaseresources - U_CMT_SETHEALTH_TARGET, // /sethealth t - U_CMT_SETARMOR_TARGET, // /setarmor t - CMT_SETVEHICLERESOURCES, // /setvehicleresources - CMT_SUPER_CREATE, // /supercreate OR /sc - CMT_VORTEX_MODULE, // /vortex OR /vtx - U_CMT_RESPAWNAMS, // /respawnams ("Create AMS Resp") - CMT_ADDBATTLEEXPERIENCE, // /addbep - CMT_ADDCERTIFICATION, // /certadd - CMT_ADDCOMMANDEXPERIENCE, // /addcep - CMT_ADDIMPLANT, // /addimplant - CMT_ARMOR, // /armor - CMT_ENABLEIMPLANT, // /enableimplant - CMT_EXPANSIONS, // /expansions - CMT_FIRST_TIME_EVENTS, // /firsttime OR /fte - CMT_INVENTORYLAYOUT, // /inventory - CMT_REMOVECERTIFICATION, // /certrm - CMT_REMOVEIMPLANT, // /removeimplant - CMT_SAVE, // /save - CMT_SETBATTLEEXPERIENCE, // /setbep - CMT_SETBATTLERANK, // /setbr - CMT_SETCAPACITANCE, // /setcapacitance - CMT_SETCOMMANDEXPERIENCE, // /setcep - CMT_SETCOMMANDRANK, // /setcr - CMT_SETFAVORITE, // /setfavorite - CMT_SETHEALTH, // /sethealth - CMT_SETARMOR, // /setarmor - CMT_SETIMPLANTSLOTS, // /setimplantslots - CMT_SETSTAMINA, // /setstamina - CMT_SUICIDE, // /suicide - CMT_USEFAVORITE, // /favorite - CMT_TOGGLERESPAWNPENALTY, // /togglerespawnpenalty - CMT_SETAMMO, // /setammo - CMT_AWARD_QUALIFY, // /award_qualify - CMT_AWARD_PROGRESS, // /award_progress - CMT_AWARD_ADD, // /award_add - CMT_AWARD_REMOVE, // /award_remove - CMT_STAT_ADD, // /stat_add - CMT_BFR_SETCAVERNCAPS, // /bfr_setcaverncaps - CMT_BFR_SETCAVERNKILLS, // /bfr_setcavernkills - CMT_BFR_IMPRINT, // /bfr_imprint - CMT_BFR_DAMAGE, // /bfrdamage - CMT_BFR_DAMAGEWEAPON, // /bfrdamageweapon - CMT_RESETPURCHASETIMERS, // /resetpurchasetimers - CMT_EVENTPLAYTIME, // /eventplaytime - CMT_SETTIME, // /settime - CMT_SETTIMESPEED, // /settimespeed - CMT_SNOOP, // /snoop - CMT_SOULMARK, // /soulmark - CMT_FLY, // /fly - CMT_SPEED, // /speed - CMT_TOGGLESPECTATORMODE, // /spectator - CMT_INFO, // /info - CMT_SHOWZONES, // /showzones - CMT_SYNC, // /sync - CMT_SECURITY, // /security - CMT_FIND, // /find - CMT_OUTFITCONFIRM, // /outfitconfirm - CMT_OUTFITDELETE, // /outfitdelete - CMT_OUTFITRENAME_GM, // /outfitrenamegm - CMT_OUTFITLEADER, // /outfitleader - CMT_OUTFITPOINTS, // /outfitpoints - CMT_OUTFITPOINTS_CHARACTER, // /giveop - CMT_OUTFITCREDITS, // /outfitcredits - CMT_RENAME_GM, // /renamegm - CMT_SETGRIEF, // /setgrief - CMT_SILENCE, // /silence - CMT_SILENCE_OUTFIT, // /silenceoutfit - CMT_COMMAND_SILENCE, // /commandsilence - CMT_COMMAND_SILENCE_OUTFIT, // /commandsilenceoutfit - CMT_COMMAND_SILENCE_EMPIRE, // /commandsilenceempire - CMT_SUMMON, // /summon - CMT_AWARD, // /award - U_CMT_AWARD_ZONE, // /award - CMT_AWARD_REVOKE, // /award_revoke - U_CMT_AWARD_REVOKE_ZONE, // /award_revoke - CMT_RESET_CERTS, // /resetcerts - U_CMT_SETBATTLERANK_OTHER, // /setbr - U_CMT_SETCOMMANDRANK_OTHER, // /setcr - CMT_GIVE_XP, // /givexp - CMT_BLACKOPS, // /blackops - CMT_GRANT_BFR_IMPRINT, // /grant_bfr_imprint - CMT_WARP, // /warp - CMT_SETPOPULATIONCAP, // /popcap - U_CMT_SHUTDOWN, // /shutdown "Shutdown" - CMT_MEMORYLOG, // /memorylog - U_CMT_ZONEROTATE, // /zonerotate - CMT_SHIFTER_ENABLE, // /shifteron - CMT_SHIFTER_DISABLE, // /shifteroff - CMT_SHIFTER_CREATE, // /shiftercreate - CMT_SHIFTER_CLEAR, // /shifterclear - CMT_MODULE_SPAWN_STAGGER, // /modulespawnstagger OR /stagger - CMT_MODULE_SPAWN_POP, // /modulespawnpop OR /pop - CMT_PROPERTY_OVERRIDE, // /setprop - CMT_PROPERTY_OVERRIDE_ZONE, // /setpropzone - CMT_SET_EMPIRE_BENEFIT, // /setempirebenefit - CMT_REMOVE_EMPIRE_BENEFIT, // /removeempirebenefit - CMT_SET_DEFCON_LEVEL, // /setdefconlevel - GET_DEFCON_TIME, // /get_defcon_time - CMT_RELOAD_ACTOFGOD_INFO, // /reload_actofgod - CMT_SET_DEFCON_WEIGHT, // /setdefconweight - CMT_SET_DEFCON_EVENT_NAME, // /setdefconeventname - CMT_EARTHQUAKE, // /earthquake - CMT_METEOR_SHOWER, // /meteor_shower - CMT_SPAWN_MONOLITH, // /spawn_monolith - CMT_PKG, // /pkg - CMT_ZONECOMMAND, // /zcommand - CMT_ZONESTART, // /zstart - CMT_ZONESTOP, // /zstop - CMT_ZONELOCK, // /zlock - CMT_BOLOCK, // /bolock - CMT_TRAINING_ZONE, // /train - CMT_ZONE, // /zone - CMT_SHOWDAMAGE, // /showdamage - CMT_EMPIREINCENTIVES, // /empireincentives - CMT_MINE, // /mine - CMT_BATTLEPLANPUBLISH, // /publish - CMT_BATTLEPLANUNPUBLISH, // /unpublish - CMT_BATTLEPLANSUBSCRIBE, // /subscribe - CMT_BATTLEPLANUNSUBSCRIBE, // /unsubscribe - CMT_TEST_BLDG_MODULES, // /testmodule - CMT_SQUAD_TEST, // /squadtest - CMT_HOTSPOT, // /hotspot OR /hot - CMT_SHIFTER_SAVE, // /shiftersave - CMT_SHIFTER_LOAD, // /shifterload - CMT_LIST_ASSETS, // /listassets - CMT_CHECK_PROPERTIES, // /checkprops - CMT_PROPERTY_QUERY, // /queryprop - CMT_INACTIVITYTIMEOUT, // /inactivitytimeout - CMT_SHOW_XPSPLIT, // /xpsplit - CMT_XPDIST, // /xpdist - CMT_SHOWXPDIST, // /showxpdist - CMT_ENTITYREPORT, // /entityreport - CMT_START_MISSION, // /startmission - CMT_RESET_MISSION, // /resetmission - CMT_CANCEL_MISSION, // /cancelmission - CMT_COMPLETE_MISSION, // /completemission - CMT_GOTO_MISSION_STEP, // /gotomissionstep - CMT_SHOW_MISSION_TRIGGERS, // /showmissiontriggers - CMT_ADD_VANUMODULE, // /moduleadd - CMT_REMOVE_VANUMODULE, // /moduleremove OR /modulerm - CMT_DEBUG_MASSIVE, // /debugmassive - CMT_WARP_TO_NEXT_BILLBOARD, // ??? - UNK_222, // ??? "CTF Flag stolen" - UNK_223, // ??? "CTF Flag lost" - UNK_224, // ??? "Vehicle Dismount" - UNK_225, // ??? empty - UNK_226, // ??? empty - UNK_227, // ??? empty - UNK_228, // ??? empty - UNK_229, // ??? empty - UNK_230, // ??? "Vehicle Mount" - UNK_231, // ??? empty - UNK_232, // ??? empty - CMT_ALARM, // /alarm - CMT_APPEAL, // /appeal - CMT_BUGREPORT, // /bug - CMT_CHATLOG, // /log - CMT_CREATE_MACRO, // /macro - CMT_EMOTE, // /emote OR /em - CMT_FILTER, // /filter - CMT_FRIENDS, // /friends - CMT_IGNORE, // /ignore - CMT_HELP, // /help OR /gm - CMT_LOC, // /loc - CMT_REPLY, // /reply OR /r - CMT_TIME, // /time - CMT_TIMEDHELP, // /timedhelp - CMT_TOGGLE_STATS, // /stats - CMT_VERSION, // /version - CMT_INCENTIVES, // /incentives - CMT_HIDESPECTATOR, // /hidespectator - CMT_HUMBUG, // /humbug - CMT_SOUND_HORNS, // /horns - CMT_SQUADINVITE, // /invite OR /squadinvite - CMT_SQUADKICK, // /kick - CMT_SQUADACCEPTINVITATION // /accept OR /yes + val UNK_0, // ??? + CMT_ALLIANCE, // ??? unused + CMT_BATTLEGROUP, // /bg (not working???) + CMT_BROADCAST, // /broadcast OR /b + CMT_COMMAND, // /command OR /c + CMT_COMMAND_ALLZONES, // /comall + CMT_COMMAND_REPORT, // /sitrep OR /situationreport + CMT_COMMAND_SANCTUARY, // /comsanctuary OR /comsan + CMT_COMMAND_STATION, // ??? unused + CMT_COMMAND_CAVERN1, // /comsu OR /comsupai + CMT_COMMAND_CAVERN2, // /comhu OR /comhunhau + CMT_COMMAND_CAVERN3, // /comad OR /comadlivun + CMT_COMMAND_CAVERN4, // /comby OR /combyblos + CMT_COMMAND_CAVERN5, // /coman OR /comannwn + CMT_COMMAND_CAVERN6, // /comdr OR /comdrugaskan + CMT_COMMAND_ZONE1, // /comso OR /comsolsar + CMT_COMMAND_ZONE2, // /comho OR /comhossin + CMT_COMMAND_ZONE3, // /comcy OR /comcyssor + CMT_COMMAND_ZONE4, // /comis OR /comishundar + CMT_COMMAND_ZONE5, // /comfo OR /comforseral + CMT_COMMAND_ZONE6, // /comce OR /comceryshen + CMT_COMMAND_ZONE7, // /comes OR /comesamir + CMT_COMMAND_ZONE8, // /comos OR /comoshur + CMT_COMMAND_ZONE8_PRIME, // /compr OR /comoshurprime + CMT_COMMAND_ZONE9, // /comse OR /comsearhus + CMT_COMMAND_ZONE10, // /comam OR /comamerish + CMT_OPEN, // /local OR /l + CMT_OUTFIT, // /outfit OR /o + CMT_PLATOON, // /platoon OR /p + CMT_PLATOONLEADER, // /platoonleader OR /pl + CMT_SQUAD, // /squad OR /s + CMT_SQUADLEADER, // /sl + CMT_TELL, // /tell OR /t + U_CMT_BLACKOPS_CHAT, // ??? No slash command? + CMT_GMBROADCAST, // /gmbroadcast + CMT_GMBROADCAST_NC, // /ncbroadcast + CMT_GMBROADCAST_TR, // /trbroadcast + CMT_GMBROADCAST_VS, // /vsbroadcast + CMT_GMBROADCASTWORLD, // /worldbroadcast OR /wb + CMT_GMOPEN, // /gmlocal + CMT_GMTELL, // /gmtell (actually causes normal /tell 0x20 when not a gm???) + CMT_NOTE, // /note + CMT_GMBROADCASTPOPUP, // /gmpopup + U_CMT_GMTELLFROM, // ??? Recipient of /gmtell? + U_CMT_TELLFROM, // ??? Recipient of /t? + UNK_45, // ??? empty + CMT_CULLWATERMARK, // ??? This actually causes the client to ping back to the server with some stringified numbers "80 120" (with the same 46 chatmsg causing infinite loop?) - may be incorrect decoding + CMT_INSTANTACTION, // /instantaction OR /ia + CMT_RECALL, // /recall + CMT_OUTFIT_RECALL, // /outfitrecall + CMT_SQUAD_REMATRIX, // ??? + CMT_OUTFITRENAME_USER, // /outfitrename + CMT_RENAME_USER, // /rename + CMT_REPORTUSER, // /report + CMT_VOICE, // quickchat (v-- commands) + CMT_WHO, // /who + CMT_WHO_CSR, // /whocsr OR /whogm + CMT_WHO_PLATOONLEADERS, // /whoplatoonleaders OR /whopl + CMT_WHO_SQUADLEADERS, // /whosquadleaders OR /whosl + CMT_WHO_TEAMS, // /whoteams OR /whoempires + CMT_WHO_CR, // /who cr<#> + CMT_QUIT, // /quit OR /q + CMT_HIDE_HELMET, // /hide_helmet OR /helmet + CMT_TOGGLE_HAT, // /hat + CMT_TOGGLE_SHADES, // /shades + CMT_TOGGLE_EARPIECE, // /earpiece + CMT_TOGGLE_GM, // /gmtoggle + CMT_ANONYMOUS, // /anon OR /anonymous + CMT_DESTROY, // /destroy + CMT_KICK, // /worldkick + CMT_KICK_BY_ID, // /worldkickid + UNK_71, // ??? empty (though the game elsewhere handles it similarly to 69!) + CMT_LOCKSERVER, // /lockserver + CMT_UNLOCKSERVER, // /unlockserver + CMT_CAPTUREBASE, // /capturebase + CMT_CREATE, // /create + CMT_HACK_DOORS, // /hackdoors + CMT_OUTFITCLAIM, // /outfitclaim + CMT_OUTFITUNCLAIM, // /outfitunclaim + CMT_SETBASERESOURCES, // /setbaseresources + U_CMT_SETHEALTH_TARGET, // /sethealth t + U_CMT_SETARMOR_TARGET, // /setarmor t + CMT_SETVEHICLERESOURCES, // /setvehicleresources + CMT_SUPER_CREATE, // /supercreate OR /sc + CMT_VORTEX_MODULE, // /vortex OR /vtx + U_CMT_RESPAWNAMS, // /respawnams ("Create AMS Resp") + CMT_ADDBATTLEEXPERIENCE, // /addbep + CMT_ADDCERTIFICATION, // /certadd + CMT_ADDCOMMANDEXPERIENCE, // /addcep + CMT_ADDIMPLANT, // /addimplant + CMT_ARMOR, // /armor + CMT_ENABLEIMPLANT, // /enableimplant + CMT_EXPANSIONS, // /expansions + CMT_FIRST_TIME_EVENTS, // /firsttime OR /fte + CMT_INVENTORYLAYOUT, // /inventory + CMT_REMOVECERTIFICATION, // /certrm + CMT_REMOVEIMPLANT, // /removeimplant + CMT_SAVE, // /save + CMT_SETBATTLEEXPERIENCE, // /setbep + CMT_SETBATTLERANK, // /setbr + CMT_SETCAPACITANCE, // /setcapacitance + CMT_SETCOMMANDEXPERIENCE, // /setcep + CMT_SETCOMMANDRANK, // /setcr + CMT_SETFAVORITE, // /setfavorite + CMT_SETHEALTH, // /sethealth + CMT_SETARMOR, // /setarmor + CMT_SETIMPLANTSLOTS, // /setimplantslots + CMT_SETSTAMINA, // /setstamina + CMT_SUICIDE, // /suicide + CMT_USEFAVORITE, // /favorite + CMT_TOGGLERESPAWNPENALTY, // /togglerespawnpenalty + CMT_SETAMMO, // /setammo + CMT_AWARD_QUALIFY, // /award_qualify + CMT_AWARD_PROGRESS, // /award_progress + CMT_AWARD_ADD, // /award_add + CMT_AWARD_REMOVE, // /award_remove + CMT_STAT_ADD, // /stat_add + CMT_BFR_SETCAVERNCAPS, // /bfr_setcaverncaps + CMT_BFR_SETCAVERNKILLS, // /bfr_setcavernkills + CMT_BFR_IMPRINT, // /bfr_imprint + CMT_BFR_DAMAGE, // /bfrdamage + CMT_BFR_DAMAGEWEAPON, // /bfrdamageweapon + CMT_RESETPURCHASETIMERS, // /resetpurchasetimers + CMT_EVENTPLAYTIME, // /eventplaytime + CMT_SETTIME, // /settime + CMT_SETTIMESPEED, // /settimespeed + CMT_SNOOP, // /snoop + CMT_SOULMARK, // /soulmark + CMT_FLY, // /fly + CMT_SPEED, // /speed + CMT_TOGGLESPECTATORMODE, // /spectator + CMT_INFO, // /info + CMT_SHOWZONES, // /showzones + CMT_SYNC, // /sync + CMT_SECURITY, // /security + CMT_FIND, // /find + CMT_OUTFITCONFIRM, // /outfitconfirm + CMT_OUTFITDELETE, // /outfitdelete + CMT_OUTFITRENAME_GM, // /outfitrenamegm + CMT_OUTFITLEADER, // /outfitleader + CMT_OUTFITPOINTS, // /outfitpoints + CMT_OUTFITPOINTS_CHARACTER, // /giveop + CMT_OUTFITCREDITS, // /outfitcredits + CMT_RENAME_GM, // /renamegm + CMT_SETGRIEF, // /setgrief + CMT_SILENCE, // /silence + CMT_SILENCE_OUTFIT, // /silenceoutfit + CMT_COMMAND_SILENCE, // /commandsilence + CMT_COMMAND_SILENCE_OUTFIT, // /commandsilenceoutfit + CMT_COMMAND_SILENCE_EMPIRE, // /commandsilenceempire + CMT_SUMMON, // /summon + CMT_AWARD, // /award + U_CMT_AWARD_ZONE, // /award + CMT_AWARD_REVOKE, // /award_revoke + U_CMT_AWARD_REVOKE_ZONE, // /award_revoke + CMT_RESET_CERTS, // /resetcerts + U_CMT_SETBATTLERANK_OTHER, // /setbr + U_CMT_SETCOMMANDRANK_OTHER, // /setcr + CMT_GIVE_XP, // /givexp + CMT_BLACKOPS, // /blackops + CMT_GRANT_BFR_IMPRINT, // /grant_bfr_imprint + CMT_WARP, // /warp + CMT_SETPOPULATIONCAP, // /popcap + U_CMT_SHUTDOWN, // /shutdown "Shutdown" + CMT_MEMORYLOG, // /memorylog + U_CMT_ZONEROTATE, // /zonerotate + CMT_SHIFTER_ENABLE, // /shifteron + CMT_SHIFTER_DISABLE, // /shifteroff + CMT_SHIFTER_CREATE, // /shiftercreate + CMT_SHIFTER_CLEAR, // /shifterclear + CMT_MODULE_SPAWN_STAGGER, // /modulespawnstagger OR /stagger + CMT_MODULE_SPAWN_POP, // /modulespawnpop OR /pop + CMT_PROPERTY_OVERRIDE, // /setprop + CMT_PROPERTY_OVERRIDE_ZONE, // /setpropzone + CMT_SET_EMPIRE_BENEFIT, // /setempirebenefit + CMT_REMOVE_EMPIRE_BENEFIT, // /removeempirebenefit + CMT_SET_DEFCON_LEVEL, // /setdefconlevel + GET_DEFCON_TIME, // /get_defcon_time + CMT_RELOAD_ACTOFGOD_INFO, // /reload_actofgod + CMT_SET_DEFCON_WEIGHT, // /setdefconweight + CMT_SET_DEFCON_EVENT_NAME, // /setdefconeventname + CMT_EARTHQUAKE, // /earthquake + CMT_METEOR_SHOWER, // /meteor_shower + CMT_SPAWN_MONOLITH, // /spawn_monolith + CMT_PKG, // /pkg + CMT_ZONECOMMAND, // /zcommand + CMT_ZONESTART, // /zstart + CMT_ZONESTOP, // /zstop + CMT_ZONELOCK, // /zlock + CMT_BOLOCK, // /bolock + CMT_TRAINING_ZONE, // /train + CMT_ZONE, // /zone + CMT_SHOWDAMAGE, // /showdamage + CMT_EMPIREINCENTIVES, // /empireincentives + CMT_MINE, // /mine + CMT_BATTLEPLANPUBLISH, // /publish + CMT_BATTLEPLANUNPUBLISH, // /unpublish + CMT_BATTLEPLANSUBSCRIBE, // /subscribe + CMT_BATTLEPLANUNSUBSCRIBE, // /unsubscribe + CMT_TEST_BLDG_MODULES, // /testmodule + CMT_SQUAD_TEST, // /squadtest + CMT_HOTSPOT, // /hotspot OR /hot + CMT_SHIFTER_SAVE, // /shiftersave + CMT_SHIFTER_LOAD, // /shifterload + CMT_LIST_ASSETS, // /listassets + CMT_CHECK_PROPERTIES, // /checkprops + CMT_PROPERTY_QUERY, // /queryprop + CMT_INACTIVITYTIMEOUT, // /inactivitytimeout + CMT_SHOW_XPSPLIT, // /xpsplit + CMT_XPDIST, // /xpdist + CMT_SHOWXPDIST, // /showxpdist + CMT_ENTITYREPORT, // /entityreport + CMT_START_MISSION, // /startmission + CMT_RESET_MISSION, // /resetmission + CMT_CANCEL_MISSION, // /cancelmission + CMT_COMPLETE_MISSION, // /completemission + CMT_GOTO_MISSION_STEP, // /gotomissionstep + CMT_SHOW_MISSION_TRIGGERS, // /showmissiontriggers + CMT_ADD_VANUMODULE, // /moduleadd + CMT_REMOVE_VANUMODULE, // /moduleremove OR /modulerm + CMT_DEBUG_MASSIVE, // /debugmassive + CMT_WARP_TO_NEXT_BILLBOARD, // ??? + UNK_222, // ??? "CTF Flag stolen" + UNK_223, // ??? "CTF Flag lost" + UNK_224, // ??? "Vehicle Dismount" + UNK_225, // ??? empty + UNK_226, // ??? empty + UNK_227, // ??? empty + UNK_228, // ??? empty + UNK_229, // ??? empty + UNK_230, // ??? "Vehicle Mount" + UNK_231, // ??? empty + UNK_232, // ??? empty + CMT_ALARM, // /alarm + CMT_APPEAL, // /appeal + CMT_BUGREPORT, // /bug + CMT_CHATLOG, // /log + CMT_CREATE_MACRO, // /macro + CMT_EMOTE, // /emote OR /em + CMT_FILTER, // /filter + CMT_FRIENDS, // /friends + CMT_IGNORE, // /ignore + CMT_HELP, // /help OR /gm + CMT_LOC, // /loc + CMT_REPLY, // /reply OR /r + CMT_TIME, // /time + CMT_TIMEDHELP, // /timedhelp + CMT_TOGGLE_STATS, // /stats + CMT_VERSION, // /version + CMT_INCENTIVES, // /incentives + CMT_HIDESPECTATOR, // /hidespectator + CMT_HUMBUG, // /humbug + CMT_SOUND_HORNS, // /horns + CMT_SQUADINVITE, // /invite OR /squadinvite + CMT_SQUADKICK, // /kick + CMT_SQUADACCEPTINVITATION // /accept OR /yes - /* TODO: Past this point, the types overflow 8 bits, so need a way to either map them for ChatMsg or just take them completely out + /* TODO: Past this point, the types overflow 8 bits, so need a way to either map them for ChatMsg or just take them completely out CMT_SQUADREJECTINVITATION, // /reject OR /no CMT_SQUADCANCELINVITATION, // /cancel @@ -340,9 +340,9 @@ object ChatMessageType extends Enumeration { UNK_314 // ??? empty // Could be more types? - */ + */ - = Value + = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) } @@ -371,11 +371,11 @@ object ChatMessageType extends Enumeration { 47-50, 61 192: /showdamage [on|off] 231 - 222, 223, 229: something about "_sound"; in some cases ends up in the 'default' ID. could be anything... + 222, 223, 229: something about "_sound"; in some cases ends up in the 'default' ID. could be anything... 228 232 130: something about on, but no off (and no .str checking), and something about a 1.0 float 128 129: similar to 130 33 is handled similarly to 4-25 -*/ + */ diff --git a/common/src/main/scala/net/psforever/types/DriveState.scala b/common/src/main/scala/net/psforever/types/DriveState.scala index dd0f8ccc..4a511948 100644 --- a/common/src/main/scala/net/psforever/types/DriveState.scala +++ b/common/src/main/scala/net/psforever/types/DriveState.scala @@ -11,13 +11,13 @@ package net.psforever.types object DriveState extends Enumeration { type Type = Value - val Mobile = Value(0) + val Mobile = Value(0) val Undeploying = Value(1) - val Deploying = Value(2) - val Deployed = Value(3) - val UNK4 = Value(4) // to have Xtoolspar working - val UNK5 = Value(5) // to have Xtoolspar working - val UNK6 = Value(6) // to have Xtoolspar working - val State7 = Value(7) //unknown; not encountered on a vehicle that can deploy; functions like Mobile - val State127 = Value(127) //unknown + val Deploying = Value(2) + val Deployed = Value(3) + val UNK4 = Value(4) // to have Xtoolspar working + val UNK5 = Value(5) // to have Xtoolspar working + val UNK6 = Value(6) // to have Xtoolspar working + val State7 = Value(7) //unknown; not encountered on a vehicle that can deploy; functions like Mobile + val State127 = Value(127) //unknown } diff --git a/common/src/main/scala/net/psforever/types/EmoteType.scala b/common/src/main/scala/net/psforever/types/EmoteType.scala index d5054358..4ff08a69 100644 --- a/common/src/main/scala/net/psforever/types/EmoteType.scala +++ b/common/src/main/scala/net/psforever/types/EmoteType.scala @@ -6,29 +6,9 @@ import scodec.codecs._ object EmoteType extends Enumeration { type Type = Value - val Charge, - Halt, - Nod, - Stinky, - Wave, - Bow, - CabbagePatch, - Cheer, - ChestThump, - Choking, - Dunno, - Fistup, - Followme, - Help, - Laugh, - Move, - No, // TODO: Double check this one, doesn't seem to have an associated slash command - Roundup, - Salute, - Sorry, - Spreadout, - Thumbsdown - = Value + val Charge, Halt, Nod, Stinky, Wave, Bow, CabbagePatch, Cheer, ChestThump, Choking, Dunno, Fistup, Followme, Help, + Laugh, Move, No, // TODO: Double check this one, doesn't seem to have an associated slash command + Roundup, Salute, Sorry, Spreadout, Thumbsdown = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) } diff --git a/common/src/main/scala/net/psforever/types/ExoSuitType.scala b/common/src/main/scala/net/psforever/types/ExoSuitType.scala index dab8b437..e396a833 100644 --- a/common/src/main/scala/net/psforever/types/ExoSuitType.scala +++ b/common/src/main/scala/net/psforever/types/ExoSuitType.scala @@ -9,11 +9,7 @@ import scodec.codecs._ */ object ExoSuitType extends Enumeration { type Type = Value - val Agile, - Reinforced, - MAX, - Infiltration, - Standard= Value + val Agile, Reinforced, MAX, Infiltration, Standard = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint(3)) } diff --git a/common/src/main/scala/net/psforever/types/GrenadeState.scala b/common/src/main/scala/net/psforever/types/GrenadeState.scala index 6874b240..a75e0c9e 100644 --- a/common/src/main/scala/net/psforever/types/GrenadeState.scala +++ b/common/src/main/scala/net/psforever/types/GrenadeState.scala @@ -11,8 +11,8 @@ object GrenadeState extends Enumeration(1) { type Type = Value val Primed, //avatars and other depicted player characters - Thrown, //avatars only - None //non-actionable state of rest + Thrown, //avatars only + None //non-actionable state of rest = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) diff --git a/common/src/main/scala/net/psforever/types/ImplantType.scala b/common/src/main/scala/net/psforever/types/ImplantType.scala index d1c96eae..e58c2717 100644 --- a/common/src/main/scala/net/psforever/types/ImplantType.scala +++ b/common/src/main/scala/net/psforever/types/ImplantType.scala @@ -24,17 +24,9 @@ import scodec.codecs._ object ImplantType extends Enumeration { type Type = Value - val - AdvancedRegen, - Targeting, - AudioAmplifier, - DarklightVision, - MeleeBooster, - PersonalShield, - RangeMagnifier, - SecondWind, //technically - SilentRun, - Surge = Value + val AdvancedRegen, Targeting, AudioAmplifier, DarklightVision, MeleeBooster, PersonalShield, RangeMagnifier, + SecondWind, //technically + SilentRun, Surge = Value val None = Value(15) //TODO unconfirmed diff --git a/common/src/main/scala/net/psforever/types/LoadoutType.scala b/common/src/main/scala/net/psforever/types/LoadoutType.scala index ad180e77..a8ea7caf 100644 --- a/common/src/main/scala/net/psforever/types/LoadoutType.scala +++ b/common/src/main/scala/net/psforever/types/LoadoutType.scala @@ -7,10 +7,7 @@ import scodec.codecs.uint2L object LoadoutType extends Enumeration { type Type = Value - val - Infantry, - Vehicle - = Value + val Infantry, Vehicle = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint2L) } diff --git a/common/src/main/scala/net/psforever/types/MeritCommendation.scala b/common/src/main/scala/net/psforever/types/MeritCommendation.scala index 03a430e0..869dce7f 100644 --- a/common/src/main/scala/net/psforever/types/MeritCommendation.scala +++ b/common/src/main/scala/net/psforever/types/MeritCommendation.scala @@ -12,478 +12,128 @@ object MeritCommendation extends Enumeration { type Type = Value val //0 - FanFaire2005Commander, - FanFaire2005Soldier, - FanFaire2006Atlanta, - HalloweenMassacre2006NC, - HalloweenMassacre2006TR, - HalloweenMassacre2006VS, - FanFaire2007, - FanFaire2008, - FanFaire2009, - AdvancedMedic1, + FanFaire2005Commander, FanFaire2005Soldier, FanFaire2006Atlanta, HalloweenMassacre2006NC, HalloweenMassacre2006TR, + HalloweenMassacre2006VS, FanFaire2007, FanFaire2008, FanFaire2009, AdvancedMedic1, //10 - AdvancedMedic2, - AdvancedMedic3, - AdvancedMedic4, - AdvancedMedic5, - AdvancedMedic6, - AdvancedMedic7, - AdvancedMedicAssists1, - AdvancedMedicAssists2, - AdvancedMedicAssists3, - AdvancedMedicAssists4, + AdvancedMedic2, AdvancedMedic3, AdvancedMedic4, AdvancedMedic5, AdvancedMedic6, AdvancedMedic7, AdvancedMedicAssists1, + AdvancedMedicAssists2, AdvancedMedicAssists3, AdvancedMedicAssists4, //20 - AdvancedMedicAssists5, - AdvancedMedicAssists6, - AdvancedMedicAssists7, - AirDefender1, - AirDefender2, - AirDefender3, - AirDefender4, - AirDefender5, - AirDefender6, - AirDefender7, + AdvancedMedicAssists5, AdvancedMedicAssists6, AdvancedMedicAssists7, AirDefender1, AirDefender2, AirDefender3, + AirDefender4, AirDefender5, AirDefender6, AirDefender7, //30 - AMSSupport1, - AMSSupport2, - AMSSupport3, - AMSSupport4, - AMSSupport5, - AMSSupport6, - AMSSupport7, - AntiVehicular1, - AntiVehicular2, - AntiVehicular3, + AMSSupport1, AMSSupport2, AMSSupport3, AMSSupport4, AMSSupport5, AMSSupport6, AMSSupport7, AntiVehicular1, + AntiVehicular2, AntiVehicular3, //40 - AntiVehicular4, - AntiVehicular5, - AntiVehicular6, - AntiVehicular7, - Avenger1, - Avenger2, - Avenger3, - Avenger4, - Avenger5, + AntiVehicular4, AntiVehicular5, AntiVehicular6, AntiVehicular7, Avenger1, Avenger2, Avenger3, Avenger4, Avenger5, Avenger6, //50 - Avenger7, - BendingMovieActor, - BFRAdvanced, - BFRAdvanced2, - BFRAdvanced3, - BFRAdvanced4, - BFRAdvanced5, - BFRBuster1, - BFRBuster2, - BFRBuster3, + Avenger7, BendingMovieActor, BFRAdvanced, BFRAdvanced2, BFRAdvanced3, BFRAdvanced4, BFRAdvanced5, BFRBuster1, + BFRBuster2, BFRBuster3, //60 - BFRBuster4, - BFRBuster5, - BFRBuster6, - BFRBuster7, - BlackOpsHunter1, - BlackOpsHunter2, - BlackOpsHunter3, - BlackOpsHunter4, - BlackOpsHunter5, - BlackOpsParticipant, + BFRBuster4, BFRBuster5, BFRBuster6, BFRBuster7, BlackOpsHunter1, BlackOpsHunter2, BlackOpsHunter3, BlackOpsHunter4, + BlackOpsHunter5, BlackOpsParticipant, //70 - BlackOpsVictory, - Bombadier1, - Bombadier2, - Bombadier3, - Bombadier4, - Bombadier5, - Bombadier6, - Bombadier7, - BomberAce1, + BlackOpsVictory, Bombadier1, Bombadier2, Bombadier3, Bombadier4, Bombadier5, Bombadier6, Bombadier7, BomberAce1, BomberAce2, //80 - BomberAce3, - BomberAce4, - BomberAce5, - BomberAce6, - BomberAce7, - Boomer1, - Boomer2, - Boomer3, - Boomer4, - Boomer5, + BomberAce3, BomberAce4, BomberAce5, BomberAce6, BomberAce7, Boomer1, Boomer2, Boomer3, Boomer4, Boomer5, //90 - Boomer6, - Boomer7, - CalvaryDriver1, - CalvaryDriver2, - CalvaryDriver3, - CalvaryDriver4, - CalvaryDriver5, - CalvaryDriver6, - CalvaryDriver7, - CalvaryPilot, + Boomer6, Boomer7, CalvaryDriver1, CalvaryDriver2, CalvaryDriver3, CalvaryDriver4, CalvaryDriver5, CalvaryDriver6, + CalvaryDriver7, CalvaryPilot, //100 - CalvaryPilot2, - CalvaryPilot3, - CalvaryPilot4, - CalvaryPilot5, - CalvaryPilot6, - CalvaryPilot7, - CMTopOutfit, - CombatMedic, - CombatMedic2, - CombatMedic3, + CalvaryPilot2, CalvaryPilot3, CalvaryPilot4, CalvaryPilot5, CalvaryPilot6, CalvaryPilot7, CMTopOutfit, CombatMedic, + CombatMedic2, CombatMedic3, //110 - CombatMedic4, - CombatMedic5, - CombatMedic6, - CombatMedic7, - CombatRepair1, - CombatRepair2, - CombatRepair3, - CombatRepair4, - CombatRepair5, - CombatRepair6, + CombatMedic4, CombatMedic5, CombatMedic6, CombatMedic7, CombatRepair1, CombatRepair2, CombatRepair3, CombatRepair4, + CombatRepair5, CombatRepair6, //120 - CombatRepair7, - ContestFirstBR40, - ContestMovieMaker, - ContestMovieMakerOutfit, - ContestPlayerOfTheMonth, - ContestPlayerOfTheYear, - CSAppreciation, - DefenseNC1, - DefenseNC2, - DefenseNC3, + CombatRepair7, ContestFirstBR40, ContestMovieMaker, ContestMovieMakerOutfit, ContestPlayerOfTheMonth, + ContestPlayerOfTheYear, CSAppreciation, DefenseNC1, DefenseNC2, DefenseNC3, //130 - DefenseNC4, - DefenseNC5, - DefenseNC6, - DefenseNC7, - DefenseTR1, - DefenseTR2, - DefenseTR3, - DefenseTR4, - DefenseTR5, + DefenseNC4, DefenseNC5, DefenseNC6, DefenseNC7, DefenseTR1, DefenseTR2, DefenseTR3, DefenseTR4, DefenseTR5, DefenseTR6, //140 - DefenseTR7, - DefenseVS1, - DefenseVS2, - DefenseVS3, - DefenseVS4, - DefenseVS5, - DefenseVS6, - DefenseVS7, - DevilDogsMovie, + DefenseTR7, DefenseVS1, DefenseVS2, DefenseVS3, DefenseVS4, DefenseVS5, DefenseVS6, DefenseVS7, DevilDogsMovie, DogFighter1, //150 - DogFighter2, - DogFighter3, - DogFighter4, - DogFighter5, - DogFighter6, - DogFighter7, - DriverGunner1, - DriverGunner2, - DriverGunner3, - DriverGunner4, + DogFighter2, DogFighter3, DogFighter4, DogFighter5, DogFighter6, DogFighter7, DriverGunner1, DriverGunner2, + DriverGunner3, DriverGunner4, //160 - DriverGunner5, - DriverGunner6, - DriverGunner7, - EliteAssault0, - EliteAssault1, - EliteAssault2, - EliteAssault3, - EliteAssault4, - EliteAssault5, - EliteAssault6, + DriverGunner5, DriverGunner6, DriverGunner7, EliteAssault0, EliteAssault1, EliteAssault2, EliteAssault3, + EliteAssault4, EliteAssault5, EliteAssault6, //170 - EliteAssault7, - EmeraldVeteran, - Engineer1, - Engineer2, - Engineer3, - Engineer4, - Engineer5, - Engineer6, - EquipmentSupport1, + EliteAssault7, EmeraldVeteran, Engineer1, Engineer2, Engineer3, Engineer4, Engineer5, Engineer6, EquipmentSupport1, EquipmentSupport2, //180 - EquipmentSupport3, - EquipmentSupport4, - EquipmentSupport5, - EquipmentSupport6, - EquipmentSupport7, - EventNCCommander, - EventNCElite, - EventNCSoldier, - EventTRCommander, - EventTRElite, + EquipmentSupport3, EquipmentSupport4, EquipmentSupport5, EquipmentSupport6, EquipmentSupport7, EventNCCommander, + EventNCElite, EventNCSoldier, EventTRCommander, EventTRElite, //190 - EventTRSoldier, - EventVSCommander, - EventVSElite, - EventVSSoldier, - Explorer1, - FiveYearNC, - FiveYearTR, - FiveYearVS, - FourYearNC, - FourYearTR, + EventTRSoldier, EventVSCommander, EventVSElite, EventVSSoldier, Explorer1, FiveYearNC, FiveYearTR, FiveYearVS, + FourYearNC, FourYearTR, //200 - FourYearVS, - GalaxySupport1, - GalaxySupport2, - GalaxySupport3, - GalaxySupport4, - GalaxySupport5, - GalaxySupport6, - GalaxySupport7, - Grenade1, - Grenade2, + FourYearVS, GalaxySupport1, GalaxySupport2, GalaxySupport3, GalaxySupport4, GalaxySupport5, GalaxySupport6, + GalaxySupport7, Grenade1, Grenade2, //210 - Grenade3, - Grenade4, - Grenade5, - Grenade6, - Grenade7, - GroundGunner1, - GroundGunner2, - GroundGunner3, - GroundGunner4, + Grenade3, Grenade4, Grenade5, Grenade6, Grenade7, GroundGunner1, GroundGunner2, GroundGunner3, GroundGunner4, GroundGunner5, //220 - GroundGunner6, - GroundGunner7, - HackingSupport1, - HackingSupport2, - HackingSupport3, - HackingSupport4, - HackingSupport5, - HackingSupport6, - HackingSupport7, - HeavyAssault1, + GroundGunner6, GroundGunner7, HackingSupport1, HackingSupport2, HackingSupport3, HackingSupport4, HackingSupport5, + HackingSupport6, HackingSupport7, HeavyAssault1, //230 - HeavyAssault2, - HeavyAssault3, - HeavyAssault4, - HeavyAssault5, - HeavyAssault6, - HeavyAssault7, - HeavyInfantry, - HeavyInfantry2, - HeavyInfantry3, - HeavyInfantry4, + HeavyAssault2, HeavyAssault3, HeavyAssault4, HeavyAssault5, HeavyAssault6, HeavyAssault7, HeavyInfantry, + HeavyInfantry2, HeavyInfantry3, HeavyInfantry4, //240 - InfantryExpert1, - InfantryExpert2, - InfantryExpert3, - Jacking, - Jacking2, - Jacking3, - Jacking4, - Jacking5, - Jacking6, + InfantryExpert1, InfantryExpert2, InfantryExpert3, Jacking, Jacking2, Jacking3, Jacking4, Jacking5, Jacking6, Jacking7, //250 - KnifeCombat1, - KnifeCombat2, - KnifeCombat3, - KnifeCombat4, - KnifeCombat5, - KnifeCombat6, - KnifeCombat7, - LightInfantry, - LockerCracker1, - LockerCracker2, + KnifeCombat1, KnifeCombat2, KnifeCombat3, KnifeCombat4, KnifeCombat5, KnifeCombat6, KnifeCombat7, LightInfantry, + LockerCracker1, LockerCracker2, //260 - LockerCracker3, - LockerCracker4, - LockerCracker5, - LockerCracker6, - LockerCracker7, - LodestarSupport1, - LodestarSupport2, - LodestarSupport3, - LodestarSupport4, - LodestarSupport5, + LockerCracker3, LockerCracker4, LockerCracker5, LockerCracker6, LockerCracker7, LodestarSupport1, LodestarSupport2, + LodestarSupport3, LodestarSupport4, LodestarSupport5, //270 - LodestarSupport6, - LodestarSupport7, - Loser, - Loser2, - Loser3, - Loser4, - MarkovVeteran, - Max1, - Max2, - Max3, + LodestarSupport6, LodestarSupport7, Loser, Loser2, Loser3, Loser4, MarkovVeteran, Max1, Max2, Max3, //280 - Max4, - Max5, - Max6, - MaxBuster1, - MaxBuster2, - MaxBuster3, - MaxBuster4, - MaxBuster5, - MaxBuster6, - MediumAssault1, + Max4, Max5, Max6, MaxBuster1, MaxBuster2, MaxBuster3, MaxBuster4, MaxBuster5, MaxBuster6, MediumAssault1, //290 - MediumAssault2, - MediumAssault3, - MediumAssault4, - MediumAssault5, - MediumAssault6, - MediumAssault7, - OneYearNC, - OneYearTR, - OneYearVS, - Orion1, + MediumAssault2, MediumAssault3, MediumAssault4, MediumAssault5, MediumAssault6, MediumAssault7, OneYearNC, OneYearTR, + OneYearVS, Orion1, //300 - Orion2, - Orion3, - Orion4, - Orion5, - Orion6, - Orion7, - Osprey1, - Osprey2, - Osprey3, - Osprey4, + Orion2, Orion3, Orion4, Orion5, Orion6, Orion7, Osprey1, Osprey2, Osprey3, Osprey4, //310 - Osprey5, - Osprey6, - Osprey7, - Phalanx1, - Phalanx2, - Phalanx3, - Phalanx4, - Phalanx5, - Phalanx6, - Phalanx7, + Osprey5, Osprey6, Osprey7, Phalanx1, Phalanx2, Phalanx3, Phalanx4, Phalanx5, Phalanx6, Phalanx7, //320 - PSUMaAttendee, - PSUMbAttendee, - QAAppreciation, - ReinforcementHackSpecialist, - ReinforcementInfantrySpecialist, - ReinforcementSpecialist, - ReinforcementVehicleSpecialist, - RouterSupport1, - RouterSupport2, - RouterSupport3, + PSUMaAttendee, PSUMbAttendee, QAAppreciation, ReinforcementHackSpecialist, ReinforcementInfantrySpecialist, + ReinforcementSpecialist, ReinforcementVehicleSpecialist, RouterSupport1, RouterSupport2, RouterSupport3, //330 - RouterSupport4, - RouterSupport5, - RouterSupport6, - RouterSupport7, - RouterTelepadDeploy1, - RouterTelepadDeploy2, - RouterTelepadDeploy3, - RouterTelepadDeploy4, - RouterTelepadDeploy5, - RouterTelepadDeploy6, + RouterSupport4, RouterSupport5, RouterSupport6, RouterSupport7, RouterTelepadDeploy1, RouterTelepadDeploy2, + RouterTelepadDeploy3, RouterTelepadDeploy4, RouterTelepadDeploy5, RouterTelepadDeploy6, //340 - RouterTelepadDeploy7, - ScavengerNC1, - ScavengerNC2, - ScavengerNC3, - ScavengerNC4, - ScavengerNC5, - ScavengerNC6, - ScavengerTR1, - ScavengerTR2, - ScavengerTR3, + RouterTelepadDeploy7, ScavengerNC1, ScavengerNC2, ScavengerNC3, ScavengerNC4, ScavengerNC5, ScavengerNC6, + ScavengerTR1, ScavengerTR2, ScavengerTR3, //350 - ScavengerTR4, - ScavengerTR5, - ScavengerTR6, - ScavengerVS1, - ScavengerVS2, - ScavengerVS3, - ScavengerVS4, - ScavengerVS5, - ScavengerVS6, - SixYearNC, + ScavengerTR4, ScavengerTR5, ScavengerTR6, ScavengerVS1, ScavengerVS2, ScavengerVS3, ScavengerVS4, ScavengerVS5, + ScavengerVS6, SixYearNC, //360 - SixYearTR, - SixYearVS, - Sniper1, - Sniper2, - Sniper3, - Sniper4, - Sniper5, - Sniper6, - Sniper7, - SpecialAssault1, + SixYearTR, SixYearVS, Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, SpecialAssault1, //370 - SpecialAssault2, - SpecialAssault3, - SpecialAssault4, - SpecialAssault5, - SpecialAssault6, - SpecialAssault7, - StandardAssault1, - StandardAssault2, - StandardAssault3, - StandardAssault4, + SpecialAssault2, SpecialAssault3, SpecialAssault4, SpecialAssault5, SpecialAssault6, SpecialAssault7, + StandardAssault1, StandardAssault2, StandardAssault3, StandardAssault4, //380 - StandardAssault5, - StandardAssault6, - StandardAssault7, - StracticsHistorian, - Supply1, - Supply2, - Supply3, - Supply4, - Supply5, + StandardAssault5, StandardAssault6, StandardAssault7, StracticsHistorian, Supply1, Supply2, Supply3, Supply4, Supply5, Supply6, //390 - Supply7, - TankBuster1, - TankBuster2, - TankBuster3, - TankBuster4, - TankBuster5, - TankBuster6, - TankBuster7, - ThreeYearNC, + Supply7, TankBuster1, TankBuster2, TankBuster3, TankBuster4, TankBuster5, TankBuster6, TankBuster7, ThreeYearNC, ThreeYearTR, //400 - ThreeYearVS, - TinyRoboticSupport1, - TinyRoboticSupport2, - TinyRoboticSupport3, - TinyRoboticSupport4, - TinyRoboticSupport5, - TinyRoboticSupport6, - TinyRoboticSupport7, - Transport1, - Transport2, + ThreeYearVS, TinyRoboticSupport1, TinyRoboticSupport2, TinyRoboticSupport3, TinyRoboticSupport4, TinyRoboticSupport5, + TinyRoboticSupport6, TinyRoboticSupport7, Transport1, Transport2, //410 - Transport3, - Transport4, - Transport5, - Transport6, - Transport7, - TransportationCitation1, - TransportationCitation2, - TransportationCitation3, - TransportationCitation4, - TransportationCitation5, + Transport3, Transport4, Transport5, Transport6, Transport7, TransportationCitation1, TransportationCitation2, + TransportationCitation3, TransportationCitation4, TransportationCitation5, //420 - TwoYearNC, - TwoYearTR, - TwoYearVS, - ValentineFemale, - ValentineMale, - WernerVeteran, - XmasGingerman, - XmasSnowman, - XmasSpirit - = Value + TwoYearNC, TwoYearTR, TwoYearVS, ValentineFemale, ValentineMale, WernerVeteran, XmasGingerman, XmasSnowman, + XmasSpirit = Value /* The value None requires special consideration. @@ -499,24 +149,22 @@ object MeritCommendation extends Enumeration { /** * Carefully and explicitly convert between `Codec[Long] -> Long -> Int -> MeritCommendation.Value`. */ - implicit val codec = uint32L.exmap[MeritCommendation.Value] ( + implicit val codec = uint32L.exmap[MeritCommendation.Value]( { - case 0xFFFFFFFFL => + case 0xffffffffL => Attempt.successful(MeritCommendation.None) case n => - if(n > Int.MaxValue) { + if (n > Int.MaxValue) { Attempt.failure(Err(s"value $n is too high, above maximum integer value ${Int.MaxValue}")) - } - else if(n > 429) { // TODO remove that. It's for use Xtoolspar. + } else if (n > 429) { // TODO remove that. It's for use Xtoolspar. Attempt.failure(Err(s"value $n should not exist")) - } - else { + } else { Attempt.successful(MeritCommendation(n.toInt)) } }, { case MeritCommendation.None => - Attempt.successful(0xFFFFFFFFL) + Attempt.successful(0xffffffffL) case enum => Attempt.successful(enum.id.toLong) } diff --git a/common/src/main/scala/net/psforever/types/PlanetSideEmpire.scala b/common/src/main/scala/net/psforever/types/PlanetSideEmpire.scala index 6494d07d..d9858cc4 100644 --- a/common/src/main/scala/net/psforever/types/PlanetSideEmpire.scala +++ b/common/src/main/scala/net/psforever/types/PlanetSideEmpire.scala @@ -13,7 +13,7 @@ object PlanetSideEmpire extends Enumeration { implicit val codec = PacketHelpers.createEnumerationCodec(this, uint2L) - def apply(id : String) : PlanetSideEmpire.Value = { + def apply(id: String): PlanetSideEmpire.Value = { values.find(_.toString.equals(id)) match { case Some(faction) => faction diff --git a/common/src/main/scala/net/psforever/types/PlanetSideGUID.scala b/common/src/main/scala/net/psforever/types/PlanetSideGUID.scala index 347267be..86cbc11a 100644 --- a/common/src/main/scala/net/psforever/types/PlanetSideGUID.scala +++ b/common/src/main/scala/net/psforever/types/PlanetSideGUID.scala @@ -4,7 +4,7 @@ package net.psforever.types import scodec.codecs.uint16L abstract class PlanetSideGUID { - def guid : Int + def guid: Int /* overriding equals and hashCode to benefit the case class subclasses through inheritance; * essentially, if not for these overrides, each case class would implement its own equivalence methods @@ -14,26 +14,27 @@ abstract class PlanetSideGUID { * @param o an entity * @return whether that entity is a `PlanetSideGUID` object */ - def canEqual(o : Any) : Boolean = o.isInstanceOf[PlanetSideGUID] + def canEqual(o: Any): Boolean = o.isInstanceOf[PlanetSideGUID] - override def equals(o : Any) : Boolean = o match { - case that : PlanetSideGUID => that.canEqual(this) && that.guid == this.guid - case _ => false - } + override def equals(o: Any): Boolean = + o match { + case that: PlanetSideGUID => that.canEqual(this) && that.guid == this.guid + case _ => false + } override def hashCode: Int = java.util.Objects.hashCode(guid) } -final case class ValidPlanetSideGUID(guid : Int) extends PlanetSideGUID +final case class ValidPlanetSideGUID(guid: Int) extends PlanetSideGUID -final case class StalePlanetSideGUID(guid : Int) extends PlanetSideGUID +final case class StalePlanetSideGUID(guid: Int) extends PlanetSideGUID object PlanetSideGUID { - def apply(guid : Int) : PlanetSideGUID = ValidPlanetSideGUID(guid) + def apply(guid: Int): PlanetSideGUID = ValidPlanetSideGUID(guid) - def unapply(n : PlanetSideGUID) : Option[Int] = Some(n.guid) + def unapply(n: PlanetSideGUID): Option[Int] = Some(n.guid) - implicit val codec = uint16L.xmap[PlanetSideGUID] ( + implicit val codec = uint16L.xmap[PlanetSideGUID]( n => PlanetSideGUID(n), n => n.guid ) diff --git a/common/src/main/scala/net/psforever/types/PlanetSideGeneratorState.scala b/common/src/main/scala/net/psforever/types/PlanetSideGeneratorState.scala index 6443016d..44bece7c 100644 --- a/common/src/main/scala/net/psforever/types/PlanetSideGeneratorState.scala +++ b/common/src/main/scala/net/psforever/types/PlanetSideGeneratorState.scala @@ -9,11 +9,7 @@ import scodec.codecs._ */ object PlanetSideGeneratorState extends Enumeration { type Type = Value - val Normal, - Critical, - Destroyed, - Unk3 - = Value + val Normal, Critical, Destroyed, Unk3 = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uintL(2)) } diff --git a/common/src/main/scala/net/psforever/types/SpawnGroup.scala b/common/src/main/scala/net/psforever/types/SpawnGroup.scala index 5510bfa4..f0113973 100644 --- a/common/src/main/scala/net/psforever/types/SpawnGroup.scala +++ b/common/src/main/scala/net/psforever/types/SpawnGroup.scala @@ -22,19 +22,6 @@ package net.psforever.types object SpawnGroup extends Enumeration { type Type = Value - val - Sanctuary, - BoundAMS, - AMS, - Unknown3, - BoundTower, //unused? - BoundFacility, - Tower, - Facility, - Unknown8, - Unknown9, - Unknown10, - Unknown11, - Unknown12 - = Value + val Sanctuary, BoundAMS, AMS, Unknown3, BoundTower, //unused? + BoundFacility, Tower, Facility, Unknown8, Unknown9, Unknown10, Unknown11, Unknown12 = Value } diff --git a/common/src/main/scala/net/psforever/types/SquadRequestType.scala b/common/src/main/scala/net/psforever/types/SquadRequestType.scala index 1947abe7..9774fdf5 100644 --- a/common/src/main/scala/net/psforever/types/SquadRequestType.scala +++ b/common/src/main/scala/net/psforever/types/SquadRequestType.scala @@ -6,22 +6,8 @@ import scodec.codecs._ object SquadRequestType extends Enumeration { type Type = Value - val - Invite, - ProximityInvite, - Accept, - Reject, - Cancel, - Leave, - Promote, - Disband, - PlatoonInvite, - PlatoonAccept, - PlatoonReject, - PlatoonCancel, - PlatoonLeave, - PlatoonDisband - = Value + val Invite, ProximityInvite, Accept, Reject, Cancel, Leave, Promote, Disband, PlatoonInvite, PlatoonAccept, + PlatoonReject, PlatoonCancel, PlatoonLeave, PlatoonDisband = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } diff --git a/common/src/main/scala/net/psforever/types/SquadResponseType.scala b/common/src/main/scala/net/psforever/types/SquadResponseType.scala index 84ab57ad..17d836e6 100644 --- a/common/src/main/scala/net/psforever/types/SquadResponseType.scala +++ b/common/src/main/scala/net/psforever/types/SquadResponseType.scala @@ -6,21 +6,8 @@ import scodec.codecs._ object SquadResponseType extends Enumeration { type Type = Value - val - Invite, - Unk01, - Accept, - Reject, - Cancel, - Leave, - Disband, - PlatoonInvite, - PlatoonAccept, - PlatoonReject, - PlatoonCancel, - PlatoonLeave, - PlatoonDisband - = Value + val Invite, Unk01, Accept, Reject, Cancel, Leave, Disband, PlatoonInvite, PlatoonAccept, PlatoonReject, PlatoonCancel, + PlatoonLeave, PlatoonDisband = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint4L) } diff --git a/common/src/main/scala/net/psforever/types/SquadWaypoints.scala b/common/src/main/scala/net/psforever/types/SquadWaypoints.scala index 5a11ea95..287b25f6 100644 --- a/common/src/main/scala/net/psforever/types/SquadWaypoints.scala +++ b/common/src/main/scala/net/psforever/types/SquadWaypoints.scala @@ -6,13 +6,7 @@ import scodec.codecs._ object SquadWaypoints extends Enumeration { type Type = Value - val - One, - Two, - Three, - Four, - ExperienceRally - = Value + val One, Two, Three, Four, ExperienceRally = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L) } diff --git a/common/src/main/scala/net/psforever/types/TransactionType.scala b/common/src/main/scala/net/psforever/types/TransactionType.scala index 4fee2ec1..079b8587 100644 --- a/common/src/main/scala/net/psforever/types/TransactionType.scala +++ b/common/src/main/scala/net/psforever/types/TransactionType.scala @@ -6,15 +6,9 @@ import scodec.codecs._ object TransactionType extends Enumeration { type Type = Value - val Unk0, - Learn, // certif term or Buy (v-term) - Buy, - Sell, // or forget on certif term - Unk4, - Unk5, - Loadout, - Unk7 - = Value + val Unk0, Learn, // certif term or Buy (v-term) + Buy, Sell, // or forget on certif term + Unk4, Unk5, Loadout, Unk7 = Value implicit val codec = PacketHelpers.createEnumerationCodec(this, uintL(3)) } diff --git a/common/src/main/scala/net/psforever/types/Vector3.scala b/common/src/main/scala/net/psforever/types/Vector3.scala index fd88ded5..ab89ee93 100644 --- a/common/src/main/scala/net/psforever/types/Vector3.scala +++ b/common/src/main/scala/net/psforever/types/Vector3.scala @@ -5,16 +5,15 @@ import net.psforever.newcodecs._ import scodec.Codec import scodec.codecs._ -final case class Vector3(x : Float, - y : Float, - z : Float) { +final case class Vector3(x: Float, y: Float, z: Float) { + /** * Operator for vector addition, treating `Vector3` objects as actual mathematical vectors. * The application of this definition is "vector1 + vector2." * @param vec the other `Vector3` object * @return a new `Vector3` object with the summed values */ - def +(vec : Vector3) : Vector3 = { + def +(vec: Vector3): Vector3 = { Vector3(x + vec.x, y + vec.y, z + vec.z) } @@ -24,7 +23,7 @@ final case class Vector3(x : Float, * @param vec the other `Vector3` object * @return a new `Vector3` object with the difference values */ - def -(vec : Vector3) : Vector3 = { + def -(vec: Vector3): Vector3 = { Vector3(x - vec.x, y - vec.y, z - vec.z) } @@ -35,8 +34,8 @@ final case class Vector3(x : Float, * @param scalar the value to multiply this vector * @return a new `Vector3` object */ - def *(scalar : Float) : Vector3 = { - Vector3(x*scalar, y*scalar, z*scalar) + def *(scalar: Float): Vector3 = { + Vector3(x * scalar, y * scalar, z * scalar) } /** @@ -45,7 +44,7 @@ final case class Vector3(x : Float, * The application of this definition is "vector.xy" or "vector xy." * @return a new `Vector3` object with only two of the components of the original */ - def xy : Vector3 = Vector3(x, y, 0) + def xy: Vector3 = Vector3(x, y, 0) /** * Perform the x-axis rotation of this `Vector3` element where the angle of rotation is assumed in degrees. @@ -54,7 +53,8 @@ final case class Vector3(x : Float, * @param ang a rotation angle * @return the rotated vector */ - def Rx(ang : Float) : Vector3 = Vector3.Rx(this, ang) + def Rx(ang: Float): Vector3 = Vector3.Rx(this, ang) + /** * Perform the y-axis rotation of this `Vector3` element where the angle of rotation is assumed in degrees. * For chaining rotations. @@ -62,7 +62,8 @@ final case class Vector3(x : Float, * @param ang a rotation angle * @return the rotated vector */ - def Ry(ang : Float) : Vector3 = Vector3.Ry(this, ang) + def Ry(ang: Float): Vector3 = Vector3.Ry(this, ang) + /** * Perform the z-axis rotation of this `Vector3` element where the angle of rotation is assumed in degrees. * For chaining rotations. @@ -70,42 +71,42 @@ final case class Vector3(x : Float, * @param ang a rotation angle * @return the rotated vector */ - def Rz(ang : Float) : Vector3 = Vector3.Rz(this, ang) + def Rz(ang: Float): Vector3 = Vector3.Rz(this, ang) } object Vector3 { - final val Zero : Vector3 = Vector3(0f, 0f, 0f) + final val Zero: Vector3 = Vector3(0f, 0f, 0f) - private def closeToInsignificance(d : Float, epsilon : Float = 10f) : Float = { + private def closeToInsignificance(d: Float, epsilon: Float = 10f): Float = { val ulp = math.ulp(epsilon) math.signum(d) match { case -1f => val n = math.abs(d) val p = math.abs(n - n.toInt) - if(p < ulp || d > ulp) d + p else d + if (p < ulp || d > ulp) d + p else d case _ => val p = math.abs(d - d.toInt) - if(p < ulp || d < ulp) d - p else d + if (p < ulp || d < ulp) d - p else d } } - implicit val codec_pos : Codec[Vector3] = ( - ("x" | newcodecs.q_float(0.0, 8192.0, 20)) :: + implicit val codec_pos: Codec[Vector3] = ( + ("x" | newcodecs.q_float(0.0, 8192.0, 20)) :: ("y" | newcodecs.q_float(0.0, 8192.0, 20)) :: ("z" | newcodecs.q_float(0.0, 1024.0, 16)) - ).as[Vector3] + ).as[Vector3] - implicit val codec_vel : Codec[Vector3] = ( - ("x" | newcodecs.q_float(-256.0, 256.0, 14)) :: + implicit val codec_vel: Codec[Vector3] = ( + ("x" | newcodecs.q_float(-256.0, 256.0, 14)) :: ("y" | newcodecs.q_float(-256.0, 256.0, 14)) :: ("z" | newcodecs.q_float(-256.0, 256.0, 14)) - ).as[Vector3] + ).as[Vector3] - implicit val codec_float : Codec[Vector3] = ( - ("x" | floatL) :: + implicit val codec_float: Codec[Vector3] = ( + ("x" | floatL) :: ("y" | floatL) :: ("z" | floatL) - ).as[Vector3] + ).as[Vector3] /** * A common vector object that only concerns itself @@ -114,7 +115,7 @@ object Vector3 { * @param value the third coordinate * @return a `Vector3` object */ - def z(value : Float) : Vector3 = Vector3(0, 0, value) + def z(value: Float): Vector3 = Vector3(0, 0, value) /** * Calculate the actual distance between two points. @@ -122,7 +123,7 @@ object Vector3 { * @param pos2 the second point * @return the distance */ - def Distance(pos1 : Vector3, pos2 : Vector3) : Float = { + def Distance(pos1: Vector3, pos2: Vector3): Float = { math.sqrt(DistanceSquared(pos1, pos2)).toFloat } @@ -133,8 +134,8 @@ object Vector3 { * @param pos2 the second point * @return the distance */ - def DistanceSquared(pos1 : Vector3, pos2 : Vector3) : Float = { - val dvec : Vector3 = pos1 - pos2 + def DistanceSquared(pos1: Vector3, pos2: Vector3): Float = { + val dvec: Vector3 = pos1 - pos2 (dvec.x * dvec.x) + (dvec.y * dvec.y) + (dvec.z * dvec.z) } @@ -143,7 +144,7 @@ object Vector3 { * @param vec the vector * @return the magnitude */ - def Magnitude(vec : Vector3) : Float = { + def Magnitude(vec: Vector3): Float = { math.sqrt(MagnitudeSquared(vec)).toFloat } @@ -153,10 +154,10 @@ object Vector3 { * @param vec the vector * @return the magnitude */ - def MagnitudeSquared(vec : Vector3) : Float = { - val dx : Float = vec.x - val dy : Float = vec.y - val dz : Float = vec.z + def MagnitudeSquared(vec: Vector3): Float = { + val dx: Float = vec.x + val dy: Float = vec.y + val dz: Float = vec.z (dx * dx) + (dy * dy) + (dz * dz) } @@ -168,12 +169,11 @@ object Vector3 { * @return the unit vector; * if the original vector has no magnitude, a zero-vector is returned */ - def Unit(vec : Vector3) : Vector3 = { - val mag : Float = Magnitude(vec) - if(mag == 0) { + def Unit(vec: Vector3): Vector3 = { + val mag: Float = Magnitude(vec) + if (mag == 0) { Vector3.Zero - } - else { + } else { Vector3(vec.x / mag, vec.y / mag, vec.z / mag) } } @@ -188,7 +188,7 @@ object Vector3 { * @param vec2 the second vector * @return the dot product */ - def DotProduct(vec1 : Vector3, vec2 : Vector3) : Float = { + def DotProduct(vec1: Vector3, vec2: Vector3): Float = { vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z } @@ -204,7 +204,7 @@ object Vector3 { * @param vec2 the second vector * @return the cross product */ - def CrossProduct(vec1 : Vector3, vec2 : Vector3) : Vector3 = { + def CrossProduct(vec1: Vector3, vec2: Vector3): Vector3 = { Vector3( vec1.y * vec2.z - vec2.y * vec1.z, vec2.x * vec1.z - vec1.x * vec2.z, @@ -224,12 +224,11 @@ object Vector3 { * @param vec2 the vector projected onto * @return the magnitude of the resulting projected vector */ - def ScalarProjection(vec1 : Vector3, vec2 : Vector3) : Float = { - val mag : Float = Magnitude(vec2) - if(mag == 0f) { + def ScalarProjection(vec1: Vector3, vec2: Vector3): Float = { + val mag: Float = Magnitude(vec2) + if (mag == 0f) { 0f - } - else { + } else { DotProduct(vec1, vec2) / mag } } @@ -245,7 +244,7 @@ object Vector3 { * @param vec2 the vector projected onto * @return the resulting projected vector */ - def VectorProjection(vec1 : Vector3, vec2 : Vector3) : Vector3 = { + def VectorProjection(vec1: Vector3, vec2: Vector3): Vector3 = { Unit(vec2) * ScalarProjection(vec1, vec2) } @@ -256,7 +255,8 @@ object Vector3 { * @param ang a rotation angle, in degrees * @return the rotated vector */ - def Rx(vec : Vector3, ang : Float) : Vector3 = Rx(vec, math.toRadians(ang)) + def Rx(vec: Vector3, ang: Float): Vector3 = Rx(vec, math.toRadians(ang)) + /** * Perform the x-axis rotation of a `Vector3` element where the angle of rotation is assumed in radians. * @see `Vector3.Rx(Vector3, Float)` @@ -264,9 +264,9 @@ object Vector3 { * @param ang a rotation angle, in radians * @return the rotated vector */ - def Rx(vec : Vector3, ang : Double) : Vector3 = { - val cos = math.cos(ang).toFloat - val sin = math.sin(ang).toFloat + def Rx(vec: Vector3, ang: Double): Vector3 = { + val cos = math.cos(ang).toFloat + val sin = math.sin(ang).toFloat val (x, y, z) = (vec.x, vec.y, vec.z) Vector3( x, @@ -282,7 +282,8 @@ object Vector3 { * @param ang a rotation angle, in degrees * @return the rotated vector */ - def Ry(vec : Vector3, ang : Float) : Vector3 = Ry(vec, math.toRadians(ang)) + def Ry(vec: Vector3, ang: Float): Vector3 = Ry(vec, math.toRadians(ang)) + /** * Perform the y-axis rotation of a `Vector3` element where the angle of rotation is assumed in radians. * @see `Vector3.Ry(Vector3, Float)` @@ -290,9 +291,9 @@ object Vector3 { * @param ang a rotation angle, in radians * @return the rotated vector */ - def Ry(vec : Vector3, ang : Double) : Vector3 = { - val cos = math.cos(ang).toFloat - val sin = math.sin(ang).toFloat + def Ry(vec: Vector3, ang: Double): Vector3 = { + val cos = math.cos(ang).toFloat + val sin = math.sin(ang).toFloat val (x, y, z) = (vec.x, vec.y, vec.z) Vector3( closeToInsignificance(x * cos + z * sin), @@ -308,7 +309,8 @@ object Vector3 { * @param ang a rotation angle, in degrees * @return the rotated vector */ - def Rz(vec : Vector3, ang : Float) : Vector3 = Rz(vec, math.toRadians(ang)) + def Rz(vec: Vector3, ang: Float): Vector3 = Rz(vec, math.toRadians(ang)) + /** * Perform the z-axis rotation of a `Vector3` element where the angle of rotation is assumed in radians. * @see `Vector3.Rz(Vector3, Float)` @@ -316,9 +318,9 @@ object Vector3 { * @param ang a rotation angle, in radians * @return the rotation vector */ - def Rz(vec : Vector3, ang : Double) : Vector3 = { - val cos = math.cos(ang).toFloat - val sin = math.sin(ang).toFloat + def Rz(vec: Vector3, ang: Double): Vector3 = { + val cos = math.cos(ang).toFloat + val sin = math.sin(ang).toFloat val (x, y, z) = (vec.x, vec.y, vec.z) Vector3( closeToInsignificance(x * cos - y * sin), @@ -327,7 +329,7 @@ object Vector3 { ) } - def PlanarRotateAroundPoint(point: Vector3, center: Vector3, radians : Float) : Vector3 = { + def PlanarRotateAroundPoint(point: Vector3, center: Vector3, radians: Float): Vector3 = { val x = (Math.cos(radians) * (point.x - center.x) - Math.sin(radians) * (point.y - center.y) + center.x).toFloat val y = (Math.sin(radians) * (point.x - center.x) + Math.cos(radians) * (point.y - center.y) + center.y).toFloat diff --git a/common/src/main/scala/scodec/interop/akka/package.scala b/common/src/main/scala/scodec/interop/akka/package.scala index 5cd0f1de..ed8e7b94 100644 --- a/common/src/main/scala/scodec/interop/akka/package.scala +++ b/common/src/main/scala/scodec/interop/akka/package.scala @@ -13,4 +13,4 @@ package object akka { implicit class EnrichedByteVector(val value: ByteVector) extends AnyVal { def toByteString: ByteString = PrivacyHelper.createByteString1C(value.toArray) } -} \ No newline at end of file +} diff --git a/common/src/main/scala/services/RemoverActor.scala b/common/src/main/scala/services/RemoverActor.scala index 7e200c76..1f5aaa75 100644 --- a/common/src/main/scala/services/RemoverActor.scala +++ b/common/src/main/scala/services/RemoverActor.scala @@ -9,6 +9,7 @@ import net.psforever.types.Vector3 import services.support.{SimilarityComparator, SupportActor, SupportActorCaseConversions} import scala.concurrent.duration._ +import scala.util.Success /** * The base class for a type of "destruction `Actor`" intended to be used for delaying object cleanup activity. @@ -30,28 +31,31 @@ import scala.concurrent.duration._ * Some types of object have (de-)implementation variations which should be made explicit through the overrides. */ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { + /** * The timer that checks whether entries in the first pool are still eligible for that pool. */ - var firstTask : Cancellable = Default.Cancellable + var firstTask: Cancellable = Default.Cancellable + /** * The first pool of objects waiting to be processed for removal. */ - var firstHeap : List[RemoverActor.Entry] = List() + var firstHeap: List[RemoverActor.Entry] = List() /** * The timer that checks whether entries in the second pool are still eligible for that pool. */ - var secondTask : Cancellable = Default.Cancellable + var secondTask: Cancellable = Default.Cancellable + /** * The second pool of objects waiting to be processed for removal. */ - var secondHeap : List[RemoverActor.Entry] = List() + var secondHeap: List[RemoverActor.Entry] = List() - protected var taskResolver : ActorRef = ActorRef.noSender + protected var taskResolver: ActorRef = ActorRef.noSender val sameEntryComparator = new SimilarityComparator[RemoverActor.Entry]() { - def Test(entry1 : RemoverActor.Entry, entry2 : RemoverActor.Entry) : Boolean = { + def Test(entry1: RemoverActor.Entry, entry2: RemoverActor.Entry): Boolean = { entry1.obj == entry2.obj && entry1.zone == entry2.zone && entry1.obj.GUID == entry2.obj.GUID } } @@ -59,9 +63,11 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { /** * Send the initial message that requests a task resolver for assisting in the removal process. */ - override def preStart() : Unit = { + override def preStart(): Unit = { super.preStart() - ServiceManager.serviceManager ! ServiceManager.Lookup("taskResolver") //ask for a resolver to deal with the GUID system + ServiceManager.serviceManager ! ServiceManager.Lookup( + "taskResolver" + ) //ask for a resolver to deal with the GUID system } /** @@ -83,7 +89,7 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { taskResolver = ActorRef.noSender } - def receive : Receive = { + def receive: Receive = { case ServiceManager.LookupResult("taskResolver", endpoint) => taskResolver = endpoint context.become(Processing) @@ -92,78 +98,76 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { debug(s"received message $msg before being properly initialized") } - def Processing : Receive = entryManagementBehaviors - .orElse { - case RemoverActor.AddTask(obj, zone, duration) => - val entry = RemoverActor.Entry(obj, zone, duration.getOrElse(FirstStandardDuration).toNanos) - if(InclusionTest(entry) && !secondHeap.exists(test => sameEntryComparator.Test(test, entry) )) { - InitialJob(entry) - if(entry.duration == 0) { - //skip the first queue altogether - FirstJob(entry) - secondHeap = secondHeap ++ List(RepackageEntry(entry)) - if(secondHeap.size == 1) { - import scala.concurrent.ExecutionContext.Implicits.global - secondTask = context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) - } - } - else if(firstHeap.isEmpty) { - //we were the only entry so the event must be started from scratch - firstHeap = List(entry) - trace(s"a remover task has been added: $entry") - RetimeFirstTask() - } - else { - //unknown number of entries; append, sort, then re-time tasking - val oldHead = firstHeap.head - if(!firstHeap.exists(test => sameEntryComparator.Test(test, entry))) { - firstHeap = (firstHeap :+ entry).sortBy(entry => entry.time + entry.duration) + def Processing: Receive = + entryManagementBehaviors + .orElse { + case RemoverActor.AddTask(obj, zone, duration) => + val entry = RemoverActor.Entry(obj, zone, duration.getOrElse(FirstStandardDuration).toNanos) + if (InclusionTest(entry) && !secondHeap.exists(test => sameEntryComparator.Test(test, entry))) { + InitialJob(entry) + if (entry.duration == 0) { + //skip the first queue altogether + FirstJob(entry) + secondHeap = secondHeap ++ List(RepackageEntry(entry)) + if (secondHeap.size == 1) { + import scala.concurrent.ExecutionContext.Implicits.global + secondTask = + context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) + } + } else if (firstHeap.isEmpty) { + //we were the only entry so the event must be started from scratch + firstHeap = List(entry) trace(s"a remover task has been added: $entry") - if(oldHead != firstHeap.head) { - RetimeFirstTask() + RetimeFirstTask() + } else { + //unknown number of entries; append, sort, then re-time tasking + val oldHead = firstHeap.head + if (!firstHeap.exists(test => sameEntryComparator.Test(test, entry))) { + firstHeap = (firstHeap :+ entry).sortBy(entry => entry.time + entry.duration) + trace(s"a remover task has been added: $entry") + if (oldHead != firstHeap.head) { + RetimeFirstTask() + } + } else { + trace(s"$obj is already queued for removal") } } - else { - trace(s"$obj is already queued for removal") - } + } else { + trace(s"$obj either does not qualify for this Remover or is already queued") } - } - else { - trace(s"$obj either does not qualify for this Remover or is already queued") - } - //private messages from RemoverActor to RemoverActor - case RemoverActor.StartDelete() => - firstTask.cancel - secondTask.cancel - val now : Long = System.nanoTime - val (in, out) = firstHeap.partition(entry => { now - entry.time >= entry.duration }) - firstHeap = out - secondHeap = secondHeap ++ in.map { RepackageEntry } - in.foreach { FirstJob } - RetimeFirstTask() - if(secondHeap.nonEmpty) { - import scala.concurrent.ExecutionContext.Implicits.global - secondTask = context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) - } - trace(s"item removal task has found ${in.size} items to remove") + //private messages from RemoverActor to RemoverActor + case RemoverActor.StartDelete() => + firstTask.cancel + secondTask.cancel + val now: Long = System.nanoTime + val (in, out) = firstHeap.partition(entry => { now - entry.time >= entry.duration }) + firstHeap = out + secondHeap = secondHeap ++ in.map { RepackageEntry } + in.foreach { FirstJob } + RetimeFirstTask() + if (secondHeap.nonEmpty) { + import scala.concurrent.ExecutionContext.Implicits.global + secondTask = context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) + } + trace(s"item removal task has found ${in.size} items to remove") - case RemoverActor.TryDelete() => - secondTask.cancel - val (in, out) = secondHeap.partition { ClearanceTest } - secondHeap = out - in.foreach { SecondJob } - if(out.nonEmpty) { - import scala.concurrent.ExecutionContext.Implicits.global - secondTask = context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) - } - trace(s"item removal task has removed ${in.size} items") + case RemoverActor.TryDelete() => + secondTask.cancel + val (in, out) = secondHeap.partition { ClearanceTest } + secondHeap = out + in.foreach { SecondJob } + if (out.nonEmpty) { + import scala.concurrent.ExecutionContext.Implicits.global + secondTask = context.system.scheduler.scheduleOnce(SecondStandardDuration, self, RemoverActor.TryDelete()) + } + trace(s"item removal task has removed ${in.size} items") - case RemoverActor.FailureToWork(entry, ex) => - debug(s"${entry.obj} from ${entry.zone} not properly deleted - $ex") + case RemoverActor.FailureToWork(entry, ex) => + debug(s"${entry.obj} from ${entry.zone} not properly deleted - $ex") - case _ => ; - } + case _ => ; + } /** * Expedite some entries from the first pool into the second. @@ -171,14 +175,14 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { * @param zone the zone in which these objects must be discovered; * all targets must be in this zone, with the assumption that this is the zone where they were registered */ - def HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(firstHeap, targets.map { RemoverActor.Entry(_, zone, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been hurried") case (in, out) => debug(s"the following tasks have been hurried: $in") firstHeap = out //.sortBy(entry => entry.time + entry.duration) - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } secondTask.cancel @@ -192,7 +196,7 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { /** * Expedite all entries from the first pool into the second. */ - def HurryAll() : Unit = { + def HurryAll(): Unit = { trace("all tasks have been hurried") firstTask.cancel firstHeap.foreach { FirstJob } @@ -206,14 +210,14 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { /** * Remove specific entries from the first pool. */ - def ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(firstHeap, targets.map { RemoverActor.Entry(_, zone, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been cleared") case (in, out) => debug(s"the following tasks have been cleared: $in") firstHeap = out //.sortBy(entry => entry.time + entry.duration) - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } } @@ -222,7 +226,7 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { /** * No entries in the first pool. */ - def ClearAll() : Unit = { + def ClearAll(): Unit = { trace("all tasks have been cleared") firstTask.cancel firstHeap = Nil @@ -234,7 +238,7 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { * @return a new entry, containing the same object and zone information; * this new entry is always set to last for the duration of the second pool */ - private def RepackageEntry(entry : RemoverActor.Entry) : RemoverActor.Entry = { + private def RepackageEntry(entry: RemoverActor.Entry): RemoverActor.Entry = { RemoverActor.Entry(entry.obj, entry.zone, SecondStandardDuration.toNanos) } @@ -244,42 +248,43 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { * @param now the time (in nanoseconds); * defaults to the current time (in nanoseconds) */ - def RetimeFirstTask(now : Long = System.nanoTime) : Unit = { + def RetimeFirstTask(now: Long = System.nanoTime): Unit = { firstTask.cancel - if(firstHeap.nonEmpty) { - val short_timeout : FiniteDuration = math.max(1, firstHeap.head.duration - (now - firstHeap.head.time)) nanoseconds + if (firstHeap.nonEmpty) { + val short_timeout: FiniteDuration = math.max(1, firstHeap.head.duration - (now - firstHeap.head.time)) nanoseconds import scala.concurrent.ExecutionContext.Implicits.global firstTask = context.system.scheduler.scheduleOnce(short_timeout, self, RemoverActor.StartDelete()) } } - def SecondJob(entry : RemoverActor.Entry) : Unit = { + def SecondJob(entry: RemoverActor.Entry): Unit = { entry.obj.Position = Vector3.Zero //somewhere it will not disturb anything taskResolver ! FinalTask(entry) } - def FinalTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { + def FinalTask(entry: RemoverActor.Entry): TaskResolver.GiveTask = { import net.psforever.objects.guid.Task - TaskResolver.GiveTask ( + TaskResolver.GiveTask( new Task() { - private val localEntry = entry + private val localEntry = entry private val localAnnounce = self - override def isComplete : Task.Resolution.Value = if(!localEntry.obj.HasGUID) { - Task.Resolution.Success - } - else { - Task.Resolution.Incomplete + override def isComplete: Task.Resolution.Value = + if (!localEntry.obj.HasGUID) { + Task.Resolution.Success + } else { + Task.Resolution.Incomplete + } + + def Execute(resolver: ActorRef): Unit = { + resolver ! Success(this) } - def Execute(resolver : ActorRef) : Unit = { - resolver ! scala.util.Success(this) - } - - override def onFailure(ex : Throwable): Unit = { + override def onFailure(ex: Throwable): Unit = { localAnnounce ! RemoverActor.FailureToWork(localEntry, ex) } - }, List(DeletionTask(entry)) + }, + List(DeletionTask(entry)) ) } @@ -288,35 +293,35 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { * Override. * @return the time as a `FiniteDuration` object (to be later transformed into nanoseconds) */ - def FirstStandardDuration : FiniteDuration + def FirstStandardDuration: FiniteDuration /** * Default time for entries waiting in the second list. * Override. * @return the time as a `FiniteDuration` object (to be later transformed into nanoseconds) */ - def SecondStandardDuration : FiniteDuration + def SecondStandardDuration: FiniteDuration /** * Performed when the entry is initially added to the first list. * Override. * @param entry the entry */ - def InitialJob(entry : RemoverActor.Entry) : Unit + def InitialJob(entry: RemoverActor.Entry): Unit /** * Performed when the entry is shifted from the first list to the second list. * Override. * @param entry the entry */ - def FirstJob(entry : RemoverActor.Entry) : Unit + def FirstJob(entry: RemoverActor.Entry): Unit /** * Performed to determine when an entry can be shifted off from the second list. * Override. * @param entry the entry */ - def ClearanceTest(entry : RemoverActor.Entry) : Boolean + def ClearanceTest(entry: RemoverActor.Entry): Boolean /** * The specific action that is necessary to complete the removal process. @@ -324,10 +329,11 @@ abstract class RemoverActor extends SupportActor[RemoverActor.Entry] { * @see `GUIDTask` * @param entry the entry */ - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask + def DeletionTask(entry: RemoverActor.Entry): TaskResolver.GiveTask } object RemoverActor extends SupportActorCaseConversions { + /** * All information necessary to apply to the removal process to produce an effect. * Internally, all entries have a "time created" field. @@ -335,7 +341,8 @@ object RemoverActor extends SupportActorCaseConversions { * @param _zone the zone in which this target is registered * @param _duration how much longer the target will exist in its current state (in nanoseconds) */ - case class Entry(_obj : PlanetSideGameObject, _zone : Zone, _duration : Long) extends SupportActor.Entry(_obj, _zone, _duration) + case class Entry(_obj: PlanetSideGameObject, _zone: Zone, _duration: Long) + extends SupportActor.Entry(_obj, _zone, _duration) /** * Message to submit an object to the removal process. @@ -345,7 +352,7 @@ object RemoverActor extends SupportActorCaseConversions { * @param duration how much longer the target will exist in its current state (in nanoseconds); * a default time duration is provided by implementation */ - case class AddTask(obj : PlanetSideGameObject, zone : Zone, duration : Option[FiniteDuration] = None) + case class AddTask(obj: PlanetSideGameObject, zone: Zone, duration: Option[FiniteDuration] = None) /** * Message that indicates that the final stage of the remover process has failed. @@ -353,7 +360,7 @@ object RemoverActor extends SupportActorCaseConversions { * @param entry the entry that was not properly removed * @param ex the reason the last entry was not properly removed */ - protected final case class FailureToWork(entry : RemoverActor.Entry, ex : Throwable) + protected final case class FailureToWork(entry: RemoverActor.Entry, ex: Throwable) /** * Internal message to flag operations by data in the first list if it has been in that list long enough. diff --git a/common/src/main/scala/services/Service.scala b/common/src/main/scala/services/Service.scala index 23a19938..c06dac01 100644 --- a/common/src/main/scala/services/Service.scala +++ b/common/src/main/scala/services/Service.scala @@ -6,28 +6,29 @@ import akka.util.Subclassification import net.psforever.types.PlanetSideGUID object Service { - final val defaultPlayerGUID : PlanetSideGUID = PlanetSideGUID(0) + final val defaultPlayerGUID: PlanetSideGUID = PlanetSideGUID(0) final case class Startup() - final case class Join(channel : String) - final case class Leave(channel : Option[String] = None) + final case class Join(channel: String) + final case class Leave(channel: Option[String] = None) final case class LeaveAll() } trait GenericEventBusMsg { - def toChannel : String + def toChannel: String } class GenericEventBus[A <: GenericEventBusMsg] extends ActorEventBus with SubchannelClassification { - type Event = A + type Event = A type Classifier = String protected def classify(event: Event): Classifier = event.toChannel - protected def subclassification = new Subclassification[Classifier] { - def isEqual(x: Classifier, y: Classifier) = x == y - def isSubclass(x: Classifier, y: Classifier) = x.startsWith(y) - } + protected def subclassification = + new Subclassification[Classifier] { + def isEqual(x: Classifier, y: Classifier) = x == y + def isSubclass(x: Classifier, y: Classifier) = x.startsWith(y) + } protected def publish(event: Event, subscriber: Subscriber): Unit = { subscriber ! event diff --git a/common/src/main/scala/services/ServiceManager.scala b/common/src/main/scala/services/ServiceManager.scala index bf2628e1..5a14c4cd 100644 --- a/common/src/main/scala/services/ServiceManager.scala +++ b/common/src/main/scala/services/ServiceManager.scala @@ -8,22 +8,22 @@ import scala.collection.mutable object ServiceManager { var serviceManager = ActorRef.noSender - def boot(implicit system : ActorSystem) = { + def boot(implicit system: ActorSystem) = { serviceManager = system.actorOf(Props[ServiceManager], "service") serviceManager } - case class Register(props : Props, name : String) - case class Lookup(name : String) - case class LookupResult(request : String, endpoint : ActorRef) + case class Register(props: Props, name: String) + case class Lookup(name: String) + case class LookupResult(request: String, endpoint: ActorRef) } class ServiceManager extends Actor { import ServiceManager._ - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger - var nextLookupId : Long = 0 - val lookups : mutable.LongMap[RequestEntry] = mutable.LongMap() + var nextLookupId: Long = 0 + val lookups: mutable.LongMap[RequestEntry] = mutable.LongMap() override def preStart = { log.info("Starting...") @@ -62,5 +62,5 @@ class ServiceManager extends Actor { log.error(s"invalid message received - $default") } - protected case class RequestEntry(request : String, responder : ActorRef) + protected case class RequestEntry(request: String, responder: ActorRef) } diff --git a/common/src/main/scala/services/account/AccountIntermediaryService.scala b/common/src/main/scala/services/account/AccountIntermediaryService.scala index 002346de..f95ce8b9 100644 --- a/common/src/main/scala/services/account/AccountIntermediaryService.scala +++ b/common/src/main/scala/services/account/AccountIntermediaryService.scala @@ -21,9 +21,9 @@ import net.psforever.objects.Account */ class AccountIntermediaryService extends Actor { - private val accountsByToken = mutable.Map[String, Account]() + private val accountsByToken = mutable.Map[String, Account]() private val IPAddressBySessionID = mutable.Map[Long, IPAddress]() - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger override def preStart = { log.trace("Starting...") @@ -50,8 +50,8 @@ class AccountIntermediaryService extends Actor { log.info(s"Storing IP address (${address.Address}) for sessionID : $sessionID") case RetrieveIPAddress(sessionID) => - val address : Option[IPAddress] = IPAddressBySessionID.remove(sessionID) - if(address.nonEmpty) { + val address: Option[IPAddress] = IPAddressBySessionID.remove(sessionID) + if (address.nonEmpty) { sender() ! ReceiveIPAddress(address.get) log.info(s"Retrieving IP address data for sessionID : ${sessionID}") } else { diff --git a/common/src/main/scala/services/account/AccountPersistenceService.scala b/common/src/main/scala/services/account/AccountPersistenceService.scala index c9710153..3f70a2d3 100644 --- a/common/src/main/scala/services/account/AccountPersistenceService.scala +++ b/common/src/main/scala/services/account/AccountPersistenceService.scala @@ -33,19 +33,24 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} * and the monitors only communicate up to this service when executing their "end-of-life" operations. */ class AccountPersistenceService extends Actor { + /** an association of user text descriptors - player names - and their current monitor indices
* key - player name, value - monitor index */ - var userIndices : mutable.Map[String, Int] = mutable.Map[String, Int]() + var userIndices: mutable.Map[String, Int] = mutable.Map[String, Int]() + /** * an association of user test descriptors - player names - and their current monitor
* key - player name, value - player monitor */ - val accounts : mutable.Map[String, ActorRef] = mutable.Map[String, ActorRef]() + val accounts: mutable.Map[String, ActorRef] = mutable.Map[String, ActorRef]() + /** squad service event hook */ - var squad : ActorRef = ActorRef.noSender + var squad: ActorRef = ActorRef.noSender + /** task resolver service event hook */ - var resolver : ActorRef = ActorRef.noSender + var resolver: ActorRef = ActorRef.noSender + /** log, for trace and warnings only */ val log = org.log4s.getLogger @@ -53,18 +58,18 @@ class AccountPersistenceService extends Actor { * Retrieve the required system event service hooks. * @see `ServiceManager.LookupResult` */ - override def preStart : Unit = { + override def preStart: Unit = { ServiceManager.serviceManager ! ServiceManager.Lookup("squad") ServiceManager.serviceManager ! ServiceManager.Lookup("taskResolver") log.trace("Awaiting system service hooks ...") } - override def postStop : Unit = { + override def postStop: Unit = { accounts.foreach { case (_, monitor) => context.stop(monitor) } accounts.clear } - def receive : Receive = Setup + def receive: Receive = Setup /** * Entry point for persistence monitoring setup. @@ -72,11 +77,11 @@ class AccountPersistenceService extends Actor { * Updates to persistence can be received and will be distributed, if possible; * but, updating should be reserved for individual persistence monitor callback (by the user who is being monitored). */ - val Started : Receive = { + val Started: Receive = { case msg @ AccountPersistenceService.Login(name) => (accounts.get(name) match { case Some(ref) => ref - case None => CreateNewPlayerToken(name) + case None => CreateNewPlayerToken(name) }).tell(msg, sender) case msg @ AccountPersistenceService.Update(name, _, _) => @@ -122,7 +127,7 @@ class AccountPersistenceService extends Actor { * Process the system event service hooks when they arrive, before starting proper persistence monitoring. * @see `ServiceManager.LookupResult` */ - val Setup : Receive = { + val Setup: Receive = { case ServiceManager.LookupResult(id, endpoint) => id match { case "squad" => @@ -130,8 +135,10 @@ class AccountPersistenceService extends Actor { case "taskResolver" => resolver = endpoint } - if(squad != ActorRef.noSender && - resolver != ActorRef.noSender) { + if ( + squad != ActorRef.noSender && + resolver != ActorRef.noSender + ) { log.trace("Service hooks obtained. Continuing with standard operation.") context.become(Started) } @@ -145,8 +152,9 @@ class AccountPersistenceService extends Actor { * @param name the unique name of the player * @return the persistence monitor object */ - def CreateNewPlayerToken(name : String) : ActorRef = { - val ref = context.actorOf(Props(classOf[PersistenceMonitor], name, squad, resolver), s"$name-${NextPlayerIndex(name)}") + def CreateNewPlayerToken(name: String): ActorRef = { + val ref = + context.actorOf(Props(classOf[PersistenceMonitor], name, squad, resolver), s"$name-${NextPlayerIndex(name)}") accounts += name -> ref ref } @@ -159,7 +167,7 @@ class AccountPersistenceService extends Actor { * @param name the text personal descriptor used by the player * @return the next index for this player, starting at 0 */ - def NextPlayerIndex(name : String) : Int = { + def NextPlayerIndex(name: String): Int = { userIndices.get(name) match { case Some(n) => val p = n + 1 @@ -173,12 +181,13 @@ class AccountPersistenceService extends Actor { } object AccountPersistenceService { + /** * Message to begin persistence monitoring of user with this text descriptor (player name). * If the persistence monitor already exists, use that instead and synchronize the data. * @param name the unique name of the player */ - final case class Login(name : String) + final case class Login(name: String) /** * Update the persistence monitor that was setup for a user with the given text descriptor (player name). @@ -188,9 +197,9 @@ object AccountPersistenceService { * @param zone the current zone the player is in * @param position the location of the player in game world coordinates */ - final case class Update(name : String, zone : Zone, position : Vector3) + final case class Update(name: String, zone: Zone, position: Vector3) - final case class Kick(name : String, time : Option[Long] = None) + final case class Kick(name: String, time: Option[Long] = None) /** * Update the persistence monitor that was setup for a user for a custom persistence delay. @@ -198,13 +207,13 @@ object AccountPersistenceService { * @param name the unique name of the player * @param time the duration that this user's player characters will persist without update in seconds */ - final case class PersistDelay(name : String, time : Option[Long]) + final case class PersistDelay(name: String, time: Option[Long]) /** * Message that indicates that persistence is no longer necessary for this player character. * @param name the unique name of the player */ - final case class Logout(name : String) + final case class Logout(name: String) } /** @@ -223,39 +232,47 @@ object AccountPersistenceService { * @param taskResolver a hook into the `TaskResolver` event system; * used for object unregistering */ -class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : ActorRef) extends Actor { +class PersistenceMonitor(name: String, squadService: ActorRef, taskResolver: ActorRef) extends Actor { + /** the last-reported zone of this player */ - var inZone : Zone = Zone.Nowhere + var inZone: Zone = Zone.Nowhere + /** the last-reported game coordinate position of this player */ - var lastPosition : Vector3 = Vector3.Zero - /** */ - var kicked : Boolean = false - /** */ - var kickTime : Option[Long] = None + var lastPosition: Vector3 = Vector3.Zero + + /** + */ + var kicked: Boolean = false + + /** + */ + var kickTime: Option[Long] = None + /** a custom logout time for this player; 60s by default */ - var persistTime : Option[Long] = None + var persistTime: Option[Long] = None + /** the ongoing amount of permissible inactivity */ - var timer : Cancellable = Default.Cancellable + var timer: Cancellable = Default.Cancellable + /** the sparingly-used log */ val log = org.log4s.getLogger /** * Perform logout operations before the persistence monitor finally stops. */ - override def postStop() : Unit = { + override def postStop(): Unit = { timer.cancel PerformLogout() } - def receive : Receive = { + def receive: Receive = { case AccountPersistenceService.Login(_) => - sender ! (if(kicked) { - PlayerToken.CanNotLogin(name, PlayerToken.DeniedLoginReason.Kicked) - } - else { - UpdateTimer() - PlayerToken.LoginInfo(name, inZone, lastPosition) - }) + sender ! (if (kicked) { + PlayerToken.CanNotLogin(name, PlayerToken.DeniedLoginReason.Kicked) + } else { + UpdateTimer() + PlayerToken.LoginInfo(name, inZone, lastPosition) + }) case AccountPersistenceService.Update(_, z, p) if !kicked => inZone = z @@ -294,7 +311,7 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : /** * Restart the minimum activity timer. */ - def UpdateTimer() : Unit = { + def UpdateTimer(): Unit = { timer.cancel timer = context.system.scheduler.scheduleOnce(persistTime.getOrElse(60L) seconds, self, Logout(name)) } @@ -319,14 +336,14 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : * and can arise during normal transitional gameplay, * but should be uncommon. */ - def PerformLogout() : Unit = { + def PerformLogout(): Unit = { (inZone.Players.find(p => p.name == name), inZone.LivePlayers.find(p => p.Name == name)) match { case (Some(avatar), Some(player)) if player.VehicleSeated.nonEmpty => //alive or dead in a vehicle //if the avatar is dead while in a vehicle, they haven't released yet //TODO perform any last minute saving now ... (inZone.GUID(player.VehicleSeated) match { - case Some(obj : Mountable) => + case Some(obj: Mountable) => (Some(obj), obj.Seat(obj.PassengerInSeat(player).getOrElse(-1))) case _ => (None, None) //bad data? }) match { @@ -347,14 +364,14 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : //TODO perform any last minute saving now ... AvatarLogout(avatar) inZone.GUID(avatar.VehicleOwned) match { - case Some(obj : Vehicle) if obj.OwnerName.contains(avatar.name) => + case Some(obj: Vehicle) if obj.OwnerName.contains(avatar.name) => obj.Actor ! Vehicle.Ownership(None) case _ => ; } taskResolver.tell(GUIDTask.UnregisterLocker(avatar.Locker)(inZone.GUID), context.parent) case _ => - //user stalled during initial session, or was caught in between zone transfer + //user stalled during initial session, or was caught in between zone transfer } } @@ -374,13 +391,13 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : * @param avatar the avatar * @param player the player */ - def PlayerAvatarLogout(avatar : Avatar, player : Player) : Unit = { - val pguid = player.GUID + def PlayerAvatarLogout(avatar: Avatar, player: Player): Unit = { + val pguid = player.GUID val parent = context.parent player.Position = Vector3.Zero player.Health = 0 inZone.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) if vehicle.OwnerName.contains(player.Name) && vehicle.Actor != Default.Actor => + case Some(vehicle: Vehicle) if vehicle.OwnerName.contains(player.Name) && vehicle.Actor != Default.Actor => vehicle.Actor ! Vehicle.Ownership(None) case _ => ; } @@ -400,7 +417,7 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : * @see `Zone.Population.Leave` * @param avatar the avatar */ - def AvatarLogout(avatar : Avatar) : Unit = { + def AvatarLogout(avatar: Avatar): Unit = { val parent = context.parent val charId = avatar.CharId LivePlayerList.Remove(charId) @@ -416,14 +433,12 @@ class PersistenceMonitor(name : String, squadService : ActorRef, taskResolver : * and should stop existing. * @param name the unique name of the player */ -private[this] case class Logout(name : String) +private[this] case class Logout(name: String) object PlayerToken { object DeniedLoginReason extends Enumeration { - val - Denied, //generic - Kicked - = Value + val Denied, //generic + Kicked = Value } /** @@ -434,7 +449,7 @@ object PlayerToken { * @param zone the zone in which the player is location * @param position where in the zone the player is located */ - final case class LoginInfo(name : String, zone : Zone, position : Vector3) + final case class LoginInfo(name: String, zone: Zone, position: Vector3) - final case class CanNotLogin(name : String, reason : DeniedLoginReason.Value) + final case class CanNotLogin(name: String, reason: DeniedLoginReason.Value) } diff --git a/common/src/main/scala/services/account/IPAddress.scala b/common/src/main/scala/services/account/IPAddress.scala index 85e310d1..3ad50cfe 100644 --- a/common/src/main/scala/services/account/IPAddress.scala +++ b/common/src/main/scala/services/account/IPAddress.scala @@ -4,8 +4,8 @@ package services.account import java.net.InetSocketAddress class IPAddress(private val address: InetSocketAddress) { - def Address : String = address.getAddress.getHostAddress - def CanonicalHostName : String = address.getAddress.getCanonicalHostName - def HostName : String = address.getAddress.getHostName - def Port : Int = address.getPort -} \ No newline at end of file + def Address: String = address.getAddress.getHostAddress + def CanonicalHostName: String = address.getAddress.getCanonicalHostName + def HostName: String = address.getAddress.getHostName + def Port: Int = address.getPort +} diff --git a/common/src/main/scala/services/account/ReceiveIPAddress.scala b/common/src/main/scala/services/account/ReceiveIPAddress.scala index c66890ce..a8b4aaf6 100644 --- a/common/src/main/scala/services/account/ReceiveIPAddress.scala +++ b/common/src/main/scala/services/account/ReceiveIPAddress.scala @@ -1,4 +1,4 @@ // Copyright (c) 2017 PSForever package services.account -final case class ReceiveIPAddress(address : IPAddress) +final case class ReceiveIPAddress(address: IPAddress) diff --git a/common/src/main/scala/services/account/RetrieveAccountData.scala b/common/src/main/scala/services/account/RetrieveAccountData.scala index 1fc699c6..a482118e 100644 --- a/common/src/main/scala/services/account/RetrieveAccountData.scala +++ b/common/src/main/scala/services/account/RetrieveAccountData.scala @@ -1,4 +1,4 @@ // Copyright (c) 2017 PSForever package services.account -final case class RetrieveAccountData(token : String) +final case class RetrieveAccountData(token: String) diff --git a/common/src/main/scala/services/account/RetrieveIPAddress.scala b/common/src/main/scala/services/account/RetrieveIPAddress.scala index 6afa3e17..11275307 100644 --- a/common/src/main/scala/services/account/RetrieveIPAddress.scala +++ b/common/src/main/scala/services/account/RetrieveIPAddress.scala @@ -1,4 +1,4 @@ // Copyright (c) 2017 PSForever package services.account -final case class RetrieveIPAddress(sessionID : Long) +final case class RetrieveIPAddress(sessionID: Long) diff --git a/common/src/main/scala/services/account/StoreAccountData.scala b/common/src/main/scala/services/account/StoreAccountData.scala index 528a40bb..a2572980 100644 --- a/common/src/main/scala/services/account/StoreAccountData.scala +++ b/common/src/main/scala/services/account/StoreAccountData.scala @@ -3,4 +3,4 @@ package services.account import net.psforever.objects.Account -final case class StoreAccountData(token : String, account : Account) +final case class StoreAccountData(token: String, account: Account) diff --git a/common/src/main/scala/services/account/StoreIPAddress.scala b/common/src/main/scala/services/account/StoreIPAddress.scala index 9ba51c37..4ea4b003 100644 --- a/common/src/main/scala/services/account/StoreIPAddress.scala +++ b/common/src/main/scala/services/account/StoreIPAddress.scala @@ -1,7 +1,4 @@ // Copyright (c) 2017 PSForever package services.account -final case class StoreIPAddress(sessionID : Long, address : IPAddress) - - - +final case class StoreIPAddress(sessionID: Long, address: IPAddress) diff --git a/common/src/main/scala/services/avatar/AvatarService.scala b/common/src/main/scala/services/avatar/AvatarService.scala index 3f33c4b6..2839fffc 100644 --- a/common/src/main/scala/services/avatar/AvatarService.scala +++ b/common/src/main/scala/services/avatar/AvatarService.scala @@ -9,11 +9,11 @@ import net.psforever.types.PlanetSideGUID import services.avatar.support.{CorpseRemovalActor, DroppedItemRemover} import services.{GenericEventBus, RemoverActor, Service} -class AvatarService(zone : Zone) extends Actor { - private val undertaker : ActorRef = context.actorOf(Props[CorpseRemovalActor], s"${zone.Id}-corpse-removal-agent") - private val janitor = context.actorOf(Props[DroppedItemRemover], s"${zone.Id}-item-remover-agent") +class AvatarService(zone: Zone) extends Actor { + private val undertaker: ActorRef = context.actorOf(Props[CorpseRemovalActor], s"${zone.Id}-corpse-removal-agent") + private val janitor = context.actorOf(Props[DroppedItemRemover], s"${zone.Id}-item-remover-agent") - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger override def preStart = { log.trace(s"Awaiting ${zone.Id} avatar events ...") @@ -24,7 +24,7 @@ class AvatarService(zone : Zone) extends Actor { def receive = { case Service.Join(channel) => val path = s"/$channel/Avatar" - val who = sender() + val who = sender() log.info(s"$who has joined $path") AvatarEvents.subscribe(who, path) @@ -33,7 +33,7 @@ class AvatarService(zone : Zone) extends Actor { case Service.Leave(Some(channel)) => val path = s"/$channel/Avatar" - val who = sender() + val who = sender() log.info(s"$who has left $path") AvatarEvents.unsubscribe(sender(), path) @@ -46,9 +46,21 @@ class AvatarService(zone : Zone) extends Actor { AvatarEvents.publish( AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ArmorChanged(suit, subtype)) ) - case AvatarAction.ChangeAmmo(player_guid, weapon_guid, weapon_slot, old_ammo_guid, ammo_id, ammo_guid, ammo_data) => + case AvatarAction.ChangeAmmo( + player_guid, + weapon_guid, + weapon_slot, + old_ammo_guid, + ammo_id, + ammo_guid, + ammo_data + ) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ChangeAmmo(weapon_guid, weapon_slot, old_ammo_guid, ammo_id, ammo_guid, ammo_data)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.ChangeAmmo(weapon_guid, weapon_slot, old_ammo_guid, ammo_id, ammo_guid, ammo_data) + ) ) case AvatarAction.ChangeFireMode(player_guid, item_guid, mode) => AvatarEvents.publish( @@ -56,7 +68,11 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.ChangeFireState_Start(player_guid, weapon_guid) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ChangeFireState_Start(weapon_guid)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.ChangeFireState_Start(weapon_guid) + ) ) case AvatarAction.ChangeFireState_Stop(player_guid, weapon_guid) => AvatarEvents.publish( @@ -68,12 +84,16 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.EnvironmentalDamage(player_guid, source_guid, amount) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.EnvironmentalDamage(player_guid, source_guid, amount)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.EnvironmentalDamage(player_guid, source_guid, amount) + ) ) case AvatarAction.DeactivateImplantSlot(player_guid, slot) => AvatarEvents.publish( AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.DeactivateImplantSlot(slot)) - ) + ) case AvatarAction.ActivateImplantSlot(player_guid, slot) => AvatarEvents.publish( AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ActivateImplantSlot(slot)) @@ -82,7 +102,9 @@ class AvatarService(zone : Zone) extends Actor { val definition = item.Definition val objectData = definition.Packet.ConstructorData(item).get AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, AvatarResponse.DropItem(ObjectCreateMessage(definition.ObjectId, item.GUID, objectData)) ) ) @@ -92,7 +114,11 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.DestroyDisplay(killer, victim, method, unk) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", Service.defaultPlayerGUID, AvatarResponse.DestroyDisplay(killer, victim, method, unk)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.DestroyDisplay(killer, victim, method, unk) + ) ) case AvatarAction.DropItem(player_guid, item) => val definition = item.Definition @@ -102,22 +128,32 @@ class AvatarService(zone : Zone) extends Actor { ) janitor forward RemoverActor.AddTask(item, zone) AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, AvatarResponse.DropItem(ObjectCreateMessage(definition.ObjectId, item.GUID, objectData)) ) ) case AvatarAction.EquipmentInHand(player_guid, target_guid, slot, item) => - val definition = item.Definition + val definition = item.Definition val containerData = ObjectCreateMessageParent(target_guid, slot) - val objectData = definition.Packet.ConstructorData(item).get + val objectData = definition.Packet.ConstructorData(item).get AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, - AvatarResponse.EquipmentInHand(ObjectCreateMessage(definition.ObjectId, item.GUID, containerData, objectData)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.EquipmentInHand( + ObjectCreateMessage(definition.ObjectId, item.GUID, containerData, objectData) + ) ) ) case AvatarAction.GenericObjectAction(player_guid, object_guid, action_code) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.GenericObjectAction(object_guid, action_code)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.GenericObjectAction(object_guid, action_code) + ) ) case AvatarAction.HitHint(source_guid, player_guid) => AvatarEvents.publish( @@ -139,9 +175,13 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.LoadProjectile(player_guid, object_id, object_guid, cdata) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.LoadProjectile( - ObjectCreateMessage(object_id, object_guid, cdata) - )) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.LoadProjectile( + ObjectCreateMessage(object_id, object_guid, cdata) + ) + ) ) case AvatarAction.ObjectDelete(player_guid, item_guid, unk) => AvatarEvents.publish( @@ -153,31 +193,95 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.PlanetsideAttribute(guid, attribute_type, attribute_value) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", guid, AvatarResponse.PlanetsideAttribute(attribute_type, attribute_value)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + guid, + AvatarResponse.PlanetsideAttribute(attribute_type, attribute_value) + ) ) case AvatarAction.PlanetsideAttributeToAll(guid, attribute_type, attribute_value) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", guid, AvatarResponse.PlanetsideAttributeToAll(attribute_type, attribute_value)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + guid, + AvatarResponse.PlanetsideAttributeToAll(attribute_type, attribute_value) + ) ) case AvatarAction.PlanetsideAttributeSelf(guid, attribute_type, attribute_value) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", guid, AvatarResponse.PlanetsideAttributeSelf(attribute_type, attribute_value)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + guid, + AvatarResponse.PlanetsideAttributeSelf(attribute_type, attribute_value) + ) ) - case AvatarAction.PlayerState(guid, pos, vel, yaw, pitch, yaw_upper, seq_time, is_crouching, is_jumping, jump_thrust, is_cloaking, spectating, weaponInHand) => + case AvatarAction.PlayerState( + guid, + pos, + vel, + yaw, + pitch, + yaw_upper, + seq_time, + is_crouching, + is_jumping, + jump_thrust, + is_cloaking, + spectating, + weaponInHand + ) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", guid, AvatarResponse.PlayerState(pos, vel, yaw, pitch, yaw_upper, seq_time, is_crouching, is_jumping, jump_thrust, is_cloaking, spectating, weaponInHand)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + guid, + AvatarResponse.PlayerState( + pos, + vel, + yaw, + pitch, + yaw_upper, + seq_time, + is_crouching, + is_jumping, + jump_thrust, + is_cloaking, + spectating, + weaponInHand + ) + ) ) case AvatarAction.ProjectileAutoLockAwareness(mode) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", PlanetSideGUID(0), AvatarResponse.ProjectileAutoLockAwareness(mode)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + PlanetSideGUID(0), + AvatarResponse.ProjectileAutoLockAwareness(mode) + ) ) case AvatarAction.ProjectileExplodes(player_guid, projectile_guid, projectile) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ProjectileExplodes(projectile_guid, projectile)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.ProjectileExplodes(projectile_guid, projectile) + ) ) - case AvatarAction.ProjectileState(player_guid, projectile_guid, shot_pos, shot_vel, shot_orient, sequence, end, target) => + case AvatarAction.ProjectileState( + player_guid, + projectile_guid, + shot_pos, + shot_vel, + shot_orient, + sequence, + end, + target + ) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.ProjectileState(projectile_guid, shot_pos, shot_vel, shot_orient, sequence, end, target)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.ProjectileState(projectile_guid, shot_pos, shot_vel, shot_orient, sequence, end, target) + ) ) case AvatarAction.PickupItem(player_guid, item, unk) => janitor forward RemoverActor.ClearSpecific(List(item), zone) @@ -203,7 +307,11 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.StowEquipment(player_guid, target_guid, slot, obj) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", player_guid, AvatarResponse.StowEquipment(target_guid, slot, obj)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + player_guid, + AvatarResponse.StowEquipment(target_guid, slot, obj) + ) ) case AvatarAction.WeaponDryFire(player_guid, weapon_guid) => AvatarEvents.publish( @@ -215,7 +323,11 @@ class AvatarService(zone : Zone) extends Actor { ) case AvatarAction.SendResponseTargeted(target_guid, msg) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", target_guid, AvatarResponse.SendResponseTargeted(target_guid, msg)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + target_guid, + AvatarResponse.SendResponseTargeted(target_guid, msg) + ) ) case AvatarAction.Revive(target_guid) => AvatarEvents.publish( @@ -224,24 +336,86 @@ class AvatarService(zone : Zone) extends Actor { case AvatarAction.TeardownConnection() => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", Service.defaultPlayerGUID, AvatarResponse.TeardownConnection()) + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.TeardownConnection() + ) ) case AvatarAction.TerminalOrderResult(terminal, term_action, result) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", Service.defaultPlayerGUID, AvatarResponse.TerminalOrderResult(terminal, term_action, result)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.TerminalOrderResult(terminal, term_action, result) + ) ) - case AvatarAction.ChangeExosuit(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drop, delete) => + case AvatarAction.ChangeExosuit( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drop, + delete + ) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", Service.defaultPlayerGUID, AvatarResponse.ChangeExosuit(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drop, delete)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.ChangeExosuit( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drop, + delete + ) + ) ) - case AvatarAction.ChangeLoadout(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drop) => + case AvatarAction.ChangeLoadout( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drop + ) => AvatarEvents.publish( - AvatarServiceResponse(s"/$forChannel/Avatar", Service.defaultPlayerGUID, AvatarResponse.ChangeLoadout(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drop)) + AvatarServiceResponse( + s"/$forChannel/Avatar", + Service.defaultPlayerGUID, + AvatarResponse.ChangeLoadout( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drop + ) + ) ) case _ => ; - } + } //message to Undertaker case AvatarServiceMessage.Corpse(msg) => @@ -251,7 +425,7 @@ class AvatarService(zone : Zone) extends Actor { case AvatarServiceMessage.Ground(msg) => janitor forward msg - /* + /* case AvatarService.PlayerStateShift(killer, guid) => val playerOpt: Option[PlayerAvatar] = PlayerMasterList.getPlayer(guid) if (playerOpt.isDefined) { @@ -260,7 +434,7 @@ class AvatarService(zone : Zone) extends Actor { AvatarServiceReply.PlayerStateShift(killer) )) } - */ + */ case msg => log.warn(s"Unhandled message $msg from $sender") diff --git a/common/src/main/scala/services/avatar/AvatarServiceMessage.scala b/common/src/main/scala/services/avatar/AvatarServiceMessage.scala index ace0f93b..904f2820 100644 --- a/common/src/main/scala/services/avatar/AvatarServiceMessage.scala +++ b/common/src/main/scala/services/avatar/AvatarServiceMessage.scala @@ -5,7 +5,7 @@ import net.psforever.objects.{PlanetSideGameObject, Player} import net.psforever.objects.ballistics.{Projectile, SourceEntry} import net.psforever.objects.ce.Deployable import net.psforever.objects.equipment.Equipment -import net.psforever.objects.inventory.{Container, InventoryItem} +import net.psforever.objects.inventory.InventoryItem import net.psforever.objects.zones.Zone import net.psforever.packet.PlanetSideGamePacket import net.psforever.packet.game.objectcreate.{ConstructorData, ObjectCreateMessageParent} @@ -13,59 +13,138 @@ import net.psforever.types.{ExoSuitType, PlanetSideEmpire, PlanetSideGUID, Trans import scala.concurrent.duration.FiniteDuration -final case class AvatarServiceMessage(forChannel : String, actionMessage : AvatarAction.Action) +final case class AvatarServiceMessage(forChannel: String, actionMessage: AvatarAction.Action) object AvatarServiceMessage { - final case class Corpse(msg : Any) - final case class Ground(msg : Any) + final case class Corpse(msg: Any) + final case class Ground(msg: Any) } object AvatarAction { sealed trait Action - final case class ArmorChanged(player_guid : PlanetSideGUID, suit : ExoSuitType.Value, subtype : Int) extends Action - final case class ChangeAmmo(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID, weapon_slot : Int, old_ammo_guid : PlanetSideGUID, ammo_id : Int, ammo_guid : PlanetSideGUID, ammo_data : ConstructorData) extends Action - final case class ChangeFireMode(player_guid : PlanetSideGUID, item_guid : PlanetSideGUID, mode : Int) extends Action - final case class ChangeFireState_Start(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID) extends Action - final case class ChangeFireState_Stop(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID) extends Action - final case class ConcealPlayer(player_guid : PlanetSideGUID) extends Action - final case class EnvironmentalDamage(player_guid : PlanetSideGUID, source_guid : PlanetSideGUID, amount: Int) extends Action - final case class DeployItem(player_guid : PlanetSideGUID, item : PlanetSideGameObject with Deployable) extends Action - final case class DeactivateImplantSlot(player_guid : PlanetSideGUID, slot : Int) extends Action - final case class ActivateImplantSlot(player_guid : PlanetSideGUID, slot : Int) extends Action - final case class Destroy(victim : PlanetSideGUID, killer : PlanetSideGUID, weapon : PlanetSideGUID, pos : Vector3) extends Action - final case class DestroyDisplay(killer : SourceEntry, victim : SourceEntry, method : Int, unk : Int = 121) extends Action - final case class DropItem(player_guid : PlanetSideGUID, item : Equipment) extends Action - final case class EquipmentInHand(player_guid : PlanetSideGUID, target_guid : PlanetSideGUID, slot : Int, item : Equipment) extends Action - final case class GenericObjectAction(player_guid : PlanetSideGUID, object_guid : PlanetSideGUID, action_code : Int) extends Action - final case class HitHint(source_guid : PlanetSideGUID, player_guid : PlanetSideGUID) extends Action - final case class Killed(player_guid : PlanetSideGUID, mount_guid : Option[PlanetSideGUID]) extends Action - final case class LoadPlayer(player_guid : PlanetSideGUID, object_id : Int, target_guid : PlanetSideGUID, cdata : ConstructorData, pdata : Option[ObjectCreateMessageParent]) extends Action - final case class LoadProjectile(player_guid : PlanetSideGUID, object_id : Int, projectile_guid : PlanetSideGUID, cdata : ConstructorData) extends Action - final case class ObjectDelete(player_guid : PlanetSideGUID, item_guid : PlanetSideGUID, unk : Int = 0) extends Action - final case class ObjectHeld(player_guid : PlanetSideGUID, slot : Int) extends Action - final case class PlanetsideAttribute(player_guid : PlanetSideGUID, attribute_type : Int, attribute_value : Long) extends Action - final case class PlanetsideAttributeToAll(player_guid : PlanetSideGUID, attribute_type : Int, attribute_value : Long) extends Action - final case class PlanetsideAttributeSelf(player_guid : PlanetSideGUID, attribute_type : Int, attribute_value : Long) extends Action - final case class PlayerState(player_guid : PlanetSideGUID, pos : Vector3, vel : Option[Vector3], facingYaw : Float, facingPitch : Float, facingYawUpper : Float, timestamp : Int, is_crouching : Boolean, is_jumping : Boolean, jump_thrust : Boolean, is_cloaked : Boolean, spectator : Boolean, weaponInHand : Boolean) extends Action - final case class PickupItem(player_guid : PlanetSideGUID, item : Equipment, unk : Int = 0) extends Action - final case class ProjectileAutoLockAwareness(mode : Int) extends Action - final case class ProjectileExplodes(player_guid : PlanetSideGUID, projectile_guid : PlanetSideGUID, projectile : Projectile) extends Action - final case class ProjectileState(player_guid : PlanetSideGUID, projectile_guid : PlanetSideGUID, shot_pos : Vector3, shot_vel : Vector3, shot_orient : Vector3, sequence : Int, end : Boolean, hit_target : PlanetSideGUID) extends Action - final case class PutDownFDU(player_guid : PlanetSideGUID) extends Action - final case class Release(player : Player, zone : Zone, time : Option[FiniteDuration] = None) extends Action - final case class Revive(target_guid: PlanetSideGUID) extends Action - final case class Reload(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID) extends Action - final case class SetEmpire(player_guid : PlanetSideGUID, object_guid : PlanetSideGUID, faction : PlanetSideEmpire.Value) extends Action - final case class StowEquipment(player_guid : PlanetSideGUID, target_guid : PlanetSideGUID, slot : Int, item : Equipment) extends Action - final case class WeaponDryFire(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID) extends Action + final case class ArmorChanged(player_guid: PlanetSideGUID, suit: ExoSuitType.Value, subtype: Int) extends Action + final case class ChangeAmmo( + player_guid: PlanetSideGUID, + weapon_guid: PlanetSideGUID, + weapon_slot: Int, + old_ammo_guid: PlanetSideGUID, + ammo_id: Int, + ammo_guid: PlanetSideGUID, + ammo_data: ConstructorData + ) extends Action + final case class ChangeFireMode(player_guid: PlanetSideGUID, item_guid: PlanetSideGUID, mode: Int) extends Action + final case class ChangeFireState_Start(player_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action + final case class ChangeFireState_Stop(player_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action + final case class ConcealPlayer(player_guid: PlanetSideGUID) extends Action + final case class EnvironmentalDamage(player_guid: PlanetSideGUID, source_guid: PlanetSideGUID, amount: Int) + extends Action + final case class DeployItem(player_guid: PlanetSideGUID, item: PlanetSideGameObject with Deployable) extends Action + final case class DeactivateImplantSlot(player_guid: PlanetSideGUID, slot: Int) extends Action + final case class ActivateImplantSlot(player_guid: PlanetSideGUID, slot: Int) extends Action + final case class Destroy(victim: PlanetSideGUID, killer: PlanetSideGUID, weapon: PlanetSideGUID, pos: Vector3) + extends Action + final case class DestroyDisplay(killer: SourceEntry, victim: SourceEntry, method: Int, unk: Int = 121) extends Action + final case class DropItem(player_guid: PlanetSideGUID, item: Equipment) extends Action + final case class EquipmentInHand(player_guid: PlanetSideGUID, target_guid: PlanetSideGUID, slot: Int, item: Equipment) + extends Action + final case class GenericObjectAction(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, action_code: Int) + extends Action + final case class HitHint(source_guid: PlanetSideGUID, player_guid: PlanetSideGUID) extends Action + final case class Killed(player_guid: PlanetSideGUID, mount_guid: Option[PlanetSideGUID]) extends Action + final case class LoadPlayer( + player_guid: PlanetSideGUID, + object_id: Int, + target_guid: PlanetSideGUID, + cdata: ConstructorData, + pdata: Option[ObjectCreateMessageParent] + ) extends Action + final case class LoadProjectile( + player_guid: PlanetSideGUID, + object_id: Int, + projectile_guid: PlanetSideGUID, + cdata: ConstructorData + ) extends Action + final case class ObjectDelete(player_guid: PlanetSideGUID, item_guid: PlanetSideGUID, unk: Int = 0) extends Action + final case class ObjectHeld(player_guid: PlanetSideGUID, slot: Int) extends Action + final case class PlanetsideAttribute(player_guid: PlanetSideGUID, attribute_type: Int, attribute_value: Long) + extends Action + final case class PlanetsideAttributeToAll(player_guid: PlanetSideGUID, attribute_type: Int, attribute_value: Long) + extends Action + final case class PlanetsideAttributeSelf(player_guid: PlanetSideGUID, attribute_type: Int, attribute_value: Long) + extends Action + final case class PlayerState( + player_guid: PlanetSideGUID, + pos: Vector3, + vel: Option[Vector3], + facingYaw: Float, + facingPitch: Float, + facingYawUpper: Float, + timestamp: Int, + is_crouching: Boolean, + is_jumping: Boolean, + jump_thrust: Boolean, + is_cloaked: Boolean, + spectator: Boolean, + weaponInHand: Boolean + ) extends Action + final case class PickupItem(player_guid: PlanetSideGUID, item: Equipment, unk: Int = 0) extends Action + final case class ProjectileAutoLockAwareness(mode: Int) extends Action + final case class ProjectileExplodes( + player_guid: PlanetSideGUID, + projectile_guid: PlanetSideGUID, + projectile: Projectile + ) extends Action + final case class ProjectileState( + player_guid: PlanetSideGUID, + projectile_guid: PlanetSideGUID, + shot_pos: Vector3, + shot_vel: Vector3, + shot_orient: Vector3, + sequence: Int, + end: Boolean, + hit_target: PlanetSideGUID + ) extends Action + final case class PutDownFDU(player_guid: PlanetSideGUID) extends Action + final case class Release(player: Player, zone: Zone, time: Option[FiniteDuration] = None) extends Action + final case class Revive(target_guid: PlanetSideGUID) extends Action + final case class Reload(player_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action + final case class SetEmpire(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, faction: PlanetSideEmpire.Value) + extends Action + final case class StowEquipment(player_guid: PlanetSideGUID, target_guid: PlanetSideGUID, slot: Int, item: Equipment) + extends Action + final case class WeaponDryFire(player_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action - final case class SendResponse(player_guid: PlanetSideGUID, msg: PlanetSideGamePacket) extends Action + final case class SendResponse(player_guid: PlanetSideGUID, msg: PlanetSideGamePacket) extends Action final case class SendResponseTargeted(target_guid: PlanetSideGUID, msg: PlanetSideGamePacket) extends Action - final case class TerminalOrderResult(terminal_guid : PlanetSideGUID, action : TransactionType.Value, result : Boolean) extends Action - final case class ChangeExosuit(target_guid : PlanetSideGUID, exosuit : ExoSuitType.Value, subtype : Int, last_drawn_slot : Int, new_max_hand : Boolean, old_holsters : List[(Equipment, PlanetSideGUID)], holsters : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], inventory : List[InventoryItem], drop : List[InventoryItem], delete : List[(Equipment, PlanetSideGUID)]) extends Action - final case class ChangeLoadout(target_guid : PlanetSideGUID, exosuit : ExoSuitType.Value, subtype : Int, last_drawn_slot : Int, new_max_hand : Boolean, old_holsters : List[(Equipment, PlanetSideGUID)], holsters : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], inventory : List[InventoryItem], drop : List[InventoryItem]) extends Action + final case class TerminalOrderResult(terminal_guid: PlanetSideGUID, action: TransactionType.Value, result: Boolean) + extends Action + final case class ChangeExosuit( + target_guid: PlanetSideGUID, + exosuit: ExoSuitType.Value, + subtype: Int, + last_drawn_slot: Int, + new_max_hand: Boolean, + old_holsters: List[(Equipment, PlanetSideGUID)], + holsters: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + inventory: List[InventoryItem], + drop: List[InventoryItem], + delete: List[(Equipment, PlanetSideGUID)] + ) extends Action + final case class ChangeLoadout( + target_guid: PlanetSideGUID, + exosuit: ExoSuitType.Value, + subtype: Int, + last_drawn_slot: Int, + new_max_hand: Boolean, + old_holsters: List[(Equipment, PlanetSideGUID)], + holsters: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + inventory: List[InventoryItem], + drop: List[InventoryItem] + ) extends Action final case class TeardownConnection() extends Action // final case class PlayerStateShift(killer : PlanetSideGUID, victim : PlanetSideGUID) extends Action diff --git a/common/src/main/scala/services/avatar/AvatarServiceResponse.scala b/common/src/main/scala/services/avatar/AvatarServiceResponse.scala index 47472a61..c38a4f8b 100644 --- a/common/src/main/scala/services/avatar/AvatarServiceResponse.scala +++ b/common/src/main/scala/services/avatar/AvatarServiceResponse.scala @@ -11,55 +11,110 @@ import net.psforever.packet.game.ObjectCreateMessage import net.psforever.types.{ExoSuitType, PlanetSideEmpire, PlanetSideGUID, TransactionType, Vector3} import services.GenericEventBusMsg -final case class AvatarServiceResponse(toChannel : String, - avatar_guid : PlanetSideGUID, - replyMessage : AvatarResponse.Response - ) extends GenericEventBusMsg +final case class AvatarServiceResponse( + toChannel: String, + avatar_guid: PlanetSideGUID, + replyMessage: AvatarResponse.Response +) extends GenericEventBusMsg object AvatarResponse { sealed trait Response - final case class ArmorChanged(suit : ExoSuitType.Value, subtype : Int) extends Response - final case class ChangeAmmo(weapon_guid : PlanetSideGUID, weapon_slot : Int, old_ammo_guid : PlanetSideGUID, ammo_id : Int, ammo_guid : PlanetSideGUID, ammo_data : ConstructorData) extends Response - final case class ChangeFireMode(item_guid : PlanetSideGUID, mode : Int) extends Response - final case class ChangeFireState_Start(weapon_guid : PlanetSideGUID) extends Response - final case class ChangeFireState_Stop(weapon_guid : PlanetSideGUID) extends Response - final case class ConcealPlayer() extends Response - final case class EnvironmentalDamage(target : PlanetSideGUID, source_guid : PlanetSideGUID, amount : Int) extends Response - final case class DeactivateImplantSlot(slot : Int) extends Response - final case class ActivateImplantSlot(slot : Int) extends Response - final case class Destroy(victim : PlanetSideGUID, killer : PlanetSideGUID, weapon : PlanetSideGUID, pos : Vector3) extends Response - final case class DestroyDisplay(killer : SourceEntry, victim : SourceEntry, method : Int, unk : Int) extends Response - final case class DropItem(pkt : ObjectCreateMessage) extends Response - final case class EquipmentInHand(pkt : ObjectCreateMessage) extends Response - final case class GenericObjectAction(object_guid : PlanetSideGUID, action_code : Int) extends Response - final case class HitHint(source_guid : PlanetSideGUID) extends Response - final case class Killed(mount_guid : Option[PlanetSideGUID]) extends Response - final case class LoadPlayer(pkt : ObjectCreateMessage) extends Response - final case class LoadProjectile(pkt : ObjectCreateMessage) extends Response - final case class ObjectDelete(item_guid : PlanetSideGUID, unk : Int) extends Response - final case class ObjectHeld(slot : Int) extends Response - final case class PlanetsideAttribute(attribute_type : Int, attribute_value : Long) extends Response - final case class PlanetsideAttributeToAll(attribute_type : Int, attribute_value : Long) extends Response - final case class PlanetsideAttributeSelf(attribute_type : Int, attribute_value : Long) extends Response - final case class PlayerState(pos : Vector3, vel : Option[Vector3], facingYaw : Float, facingPitch : Float, facingYawUpper : Float, timestamp : Int, is_crouching : Boolean, is_jumping : Boolean, jump_thrust : Boolean, is_cloaked : Boolean, spectator : Boolean, weaponInHand : Boolean) extends Response - final case class ProjectileAutoLockAwareness(mode : Int) extends Response - final case class ProjectileExplodes(projectile_guid : PlanetSideGUID, projectile : Projectile) extends Response - final case class ProjectileState(projectile_guid : PlanetSideGUID, shot_pos : Vector3, shot_vel : Vector3, shot_orient : Vector3, sequence : Int, end : Boolean, hit_target : PlanetSideGUID) extends Response - final case class PutDownFDU(target_guid : PlanetSideGUID) extends Response - final case class Release(player : Player) extends Response - final case class Reload(weapon_guid : PlanetSideGUID) extends Response - final case class Revive(target_guid: PlanetSideGUID) extends Response - final case class SetEmpire(object_guid : PlanetSideGUID, faction : PlanetSideEmpire.Value) extends Response - final case class StowEquipment(target_guid : PlanetSideGUID, slot : Int, item : Equipment) extends Response - final case class WeaponDryFire(weapon_guid : PlanetSideGUID) extends Response + final case class ArmorChanged(suit: ExoSuitType.Value, subtype: Int) extends Response + final case class ChangeAmmo( + weapon_guid: PlanetSideGUID, + weapon_slot: Int, + old_ammo_guid: PlanetSideGUID, + ammo_id: Int, + ammo_guid: PlanetSideGUID, + ammo_data: ConstructorData + ) extends Response + final case class ChangeFireMode(item_guid: PlanetSideGUID, mode: Int) extends Response + final case class ChangeFireState_Start(weapon_guid: PlanetSideGUID) extends Response + final case class ChangeFireState_Stop(weapon_guid: PlanetSideGUID) extends Response + final case class ConcealPlayer() extends Response + final case class EnvironmentalDamage(target: PlanetSideGUID, source_guid: PlanetSideGUID, amount: Int) + extends Response + final case class DeactivateImplantSlot(slot: Int) extends Response + final case class ActivateImplantSlot(slot: Int) extends Response + final case class Destroy(victim: PlanetSideGUID, killer: PlanetSideGUID, weapon: PlanetSideGUID, pos: Vector3) + extends Response + final case class DestroyDisplay(killer: SourceEntry, victim: SourceEntry, method: Int, unk: Int) extends Response + final case class DropItem(pkt: ObjectCreateMessage) extends Response + final case class EquipmentInHand(pkt: ObjectCreateMessage) extends Response + final case class GenericObjectAction(object_guid: PlanetSideGUID, action_code: Int) extends Response + final case class HitHint(source_guid: PlanetSideGUID) extends Response + final case class Killed(mount_guid: Option[PlanetSideGUID]) extends Response + final case class LoadPlayer(pkt: ObjectCreateMessage) extends Response + final case class LoadProjectile(pkt: ObjectCreateMessage) extends Response + final case class ObjectDelete(item_guid: PlanetSideGUID, unk: Int) extends Response + final case class ObjectHeld(slot: Int) extends Response + final case class PlanetsideAttribute(attribute_type: Int, attribute_value: Long) extends Response + final case class PlanetsideAttributeToAll(attribute_type: Int, attribute_value: Long) extends Response + final case class PlanetsideAttributeSelf(attribute_type: Int, attribute_value: Long) extends Response + final case class PlayerState( + pos: Vector3, + vel: Option[Vector3], + facingYaw: Float, + facingPitch: Float, + facingYawUpper: Float, + timestamp: Int, + is_crouching: Boolean, + is_jumping: Boolean, + jump_thrust: Boolean, + is_cloaked: Boolean, + spectator: Boolean, + weaponInHand: Boolean + ) extends Response + final case class ProjectileAutoLockAwareness(mode: Int) extends Response + final case class ProjectileExplodes(projectile_guid: PlanetSideGUID, projectile: Projectile) extends Response + final case class ProjectileState( + projectile_guid: PlanetSideGUID, + shot_pos: Vector3, + shot_vel: Vector3, + shot_orient: Vector3, + sequence: Int, + end: Boolean, + hit_target: PlanetSideGUID + ) extends Response + final case class PutDownFDU(target_guid: PlanetSideGUID) extends Response + final case class Release(player: Player) extends Response + final case class Reload(weapon_guid: PlanetSideGUID) extends Response + final case class Revive(target_guid: PlanetSideGUID) extends Response + final case class SetEmpire(object_guid: PlanetSideGUID, faction: PlanetSideEmpire.Value) extends Response + final case class StowEquipment(target_guid: PlanetSideGUID, slot: Int, item: Equipment) extends Response + final case class WeaponDryFire(weapon_guid: PlanetSideGUID) extends Response - final case class SendResponse(msg: PlanetSideGamePacket) extends Response - final case class SendResponseTargeted(target_guid : PlanetSideGUID, msg: PlanetSideGamePacket) extends Response + final case class SendResponse(msg: PlanetSideGamePacket) extends Response + final case class SendResponseTargeted(target_guid: PlanetSideGUID, msg: PlanetSideGamePacket) extends Response - final case class TerminalOrderResult(terminal_guid : PlanetSideGUID, action : TransactionType.Value, result : Boolean) extends Response - final case class ChangeExosuit(target_guid : PlanetSideGUID, exosuit : ExoSuitType.Value, subtype : Int, last_drawn_slot : Int, new_max_hand : Boolean, old_holsters : List[(Equipment, PlanetSideGUID)], holsters : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], inventory : List[InventoryItem], drop : List[InventoryItem], delete : List[(Equipment, PlanetSideGUID)]) extends Response - final case class ChangeLoadout(target_guid : PlanetSideGUID, exosuit : ExoSuitType.Value, subtype : Int, last_drawn_slot : Int, new_max_hand : Boolean, old_holsters : List[(Equipment, PlanetSideGUID)], holsters : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], inventory : List[InventoryItem], drop : List[InventoryItem]) extends Response + final case class TerminalOrderResult(terminal_guid: PlanetSideGUID, action: TransactionType.Value, result: Boolean) + extends Response + final case class ChangeExosuit( + target_guid: PlanetSideGUID, + exosuit: ExoSuitType.Value, + subtype: Int, + last_drawn_slot: Int, + new_max_hand: Boolean, + old_holsters: List[(Equipment, PlanetSideGUID)], + holsters: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + inventory: List[InventoryItem], + drop: List[InventoryItem], + delete: List[(Equipment, PlanetSideGUID)] + ) extends Response + final case class ChangeLoadout( + target_guid: PlanetSideGUID, + exosuit: ExoSuitType.Value, + subtype: Int, + last_drawn_slot: Int, + new_max_hand: Boolean, + old_holsters: List[(Equipment, PlanetSideGUID)], + holsters: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + inventory: List[InventoryItem], + drop: List[InventoryItem] + ) extends Response final case class TeardownConnection() extends Response // final case class PlayerStateShift(itemID : PlanetSideGUID) extends Response diff --git a/common/src/main/scala/services/avatar/support/CorpseRemovalActor.scala b/common/src/main/scala/services/avatar/support/CorpseRemovalActor.scala index 5c601294..4e953ecc 100644 --- a/common/src/main/scala/services/avatar/support/CorpseRemovalActor.scala +++ b/common/src/main/scala/services/avatar/support/CorpseRemovalActor.scala @@ -10,27 +10,30 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} import scala.concurrent.duration._ class CorpseRemovalActor extends RemoverActor { - final val FirstStandardDuration : FiniteDuration = 1 minute + final val FirstStandardDuration: FiniteDuration = 1 minute - final val SecondStandardDuration : FiniteDuration = 500 milliseconds + final val SecondStandardDuration: FiniteDuration = 500 milliseconds - def InclusionTest(entry : RemoverActor.Entry) : Boolean = { + def InclusionTest(entry: RemoverActor.Entry): Boolean = { entry.obj.isInstanceOf[Player] && entry.obj.asInstanceOf[Player].isBackpack } - def InitialJob(entry : RemoverActor.Entry) : Unit = { } + def InitialJob(entry: RemoverActor.Entry): Unit = {} - def FirstJob(entry : RemoverActor.Entry) : Unit = { + def FirstJob(entry: RemoverActor.Entry): Unit = { import net.psforever.objects.zones.Zone entry.zone.Population ! Zone.Corpse.Remove(entry.obj.asInstanceOf[Player]) - context.parent ! AvatarServiceMessage(entry.zone.Id, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, entry.obj.GUID)) + context.parent ! AvatarServiceMessage( + entry.zone.Id, + AvatarAction.ObjectDelete(Service.defaultPlayerGUID, entry.obj.GUID) + ) } - def ClearanceTest(entry : RemoverActor.Entry) : Boolean = !entry.zone.Corpses.contains(entry.obj) + def ClearanceTest(entry: RemoverActor.Entry): Boolean = !entry.zone.Corpses.contains(entry.obj) - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { + def DeletionTask(entry: RemoverActor.Entry): TaskResolver.GiveTask = { val player = entry.obj.asInstanceOf[Player] - val task = GUIDTask.UnregisterPlayer(player)(entry.zone.GUID) + val task = GUIDTask.UnregisterPlayer(player)(entry.zone.GUID) player.ExoSuit = ExoSuitType.Standard task } diff --git a/common/src/main/scala/services/avatar/support/DroppedItemRemover.scala b/common/src/main/scala/services/avatar/support/DroppedItemRemover.scala index 295536bc..83b87c5a 100644 --- a/common/src/main/scala/services/avatar/support/DroppedItemRemover.scala +++ b/common/src/main/scala/services/avatar/support/DroppedItemRemover.scala @@ -9,25 +9,28 @@ import services.avatar.{AvatarAction, AvatarServiceMessage} import scala.concurrent.duration._ class DroppedItemRemover extends RemoverActor { - final val FirstStandardDuration : FiniteDuration = 3 minutes + final val FirstStandardDuration: FiniteDuration = 3 minutes - final val SecondStandardDuration : FiniteDuration = 500 milliseconds + final val SecondStandardDuration: FiniteDuration = 500 milliseconds - def InclusionTest(entry : RemoverActor.Entry) : Boolean = { + def InclusionTest(entry: RemoverActor.Entry): Boolean = { entry.obj.isInstanceOf[Equipment] } - def InitialJob(entry : RemoverActor.Entry) : Unit = { } + def InitialJob(entry: RemoverActor.Entry): Unit = {} - def FirstJob(entry : RemoverActor.Entry) : Unit = { + def FirstJob(entry: RemoverActor.Entry): Unit = { import net.psforever.objects.zones.Zone entry.zone.Ground ! Zone.Ground.RemoveItem(entry.obj.GUID) - context.parent ! AvatarServiceMessage(entry.zone.Id, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, entry.obj.GUID)) + context.parent ! AvatarServiceMessage( + entry.zone.Id, + AvatarAction.ObjectDelete(Service.defaultPlayerGUID, entry.obj.GUID) + ) } - def ClearanceTest(entry : RemoverActor.Entry) : Boolean = !entry.zone.EquipmentOnGround.contains(entry.obj) + def ClearanceTest(entry: RemoverActor.Entry): Boolean = !entry.zone.EquipmentOnGround.contains(entry.obj) - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { + def DeletionTask(entry: RemoverActor.Entry): TaskResolver.GiveTask = { GUIDTask.UnregisterEquipment(entry.obj.asInstanceOf[Equipment])(entry.zone.GUID) } } diff --git a/common/src/main/scala/services/chat/ChatAction.scala b/common/src/main/scala/services/chat/ChatAction.scala index 3dbd5911..c56e40f8 100644 --- a/common/src/main/scala/services/chat/ChatAction.scala +++ b/common/src/main/scala/services/chat/ChatAction.scala @@ -8,13 +8,55 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3} object ChatAction { sealed trait Action - final case class Local(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class Tell(player_guid : PlanetSideGUID, player_name : String, msg : ChatMsg) extends Action - final case class Broadcast(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class Voice(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class Note(player_guid : PlanetSideGUID, player_name : String, msg : ChatMsg) extends Action - final case class Squad(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class Platoon(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class Command(player_guid : PlanetSideGUID, player_name : String, continent : Zone, player_pos : Vector3, player_faction : PlanetSideEmpire.Value, msg : ChatMsg) extends Action - final case class GM(player_guid : PlanetSideGUID, player_name : String, msg : ChatMsg) extends Action -} \ No newline at end of file + final case class Local( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class Tell(player_guid: PlanetSideGUID, player_name: String, msg: ChatMsg) extends Action + final case class Broadcast( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class Voice( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class Note(player_guid: PlanetSideGUID, player_name: String, msg: ChatMsg) extends Action + final case class Squad( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class Platoon( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class Command( + player_guid: PlanetSideGUID, + player_name: String, + continent: Zone, + player_pos: Vector3, + player_faction: PlanetSideEmpire.Value, + msg: ChatMsg + ) extends Action + final case class GM(player_guid: PlanetSideGUID, player_name: String, msg: ChatMsg) extends Action +} diff --git a/common/src/main/scala/services/chat/ChatResponse.scala b/common/src/main/scala/services/chat/ChatResponse.scala index 7f5b832f..f618951d 100644 --- a/common/src/main/scala/services/chat/ChatResponse.scala +++ b/common/src/main/scala/services/chat/ChatResponse.scala @@ -6,15 +6,85 @@ import net.psforever.types.{ChatMessageType, PlanetSideGUID} object ChatResponse { sealed trait Response - final case class Local(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Tell(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class UTell(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Broadcast(messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Voice(messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Unk45(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Squad(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Platoon(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response - final case class Command(sender : String, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) extends Response + final case class Local( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Tell( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class UTell( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Broadcast( + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Voice( + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Unk45( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Squad( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Platoon( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response + final case class Command( + sender: String, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) extends Response - final case class Text(toChannel : String, avatar_guid : PlanetSideGUID, personal : Int, messageType : ChatMessageType.Value, wideContents : Boolean, recipient : String, contents : String, note : Option[String]) -} \ No newline at end of file + final case class Text( + toChannel: String, + avatar_guid: PlanetSideGUID, + personal: Int, + messageType: ChatMessageType.Value, + wideContents: Boolean, + recipient: String, + contents: String, + note: Option[String] + ) +} diff --git a/common/src/main/scala/services/chat/ChatService.scala b/common/src/main/scala/services/chat/ChatService.scala index a996402d..ec6e51dc 100644 --- a/common/src/main/scala/services/chat/ChatService.scala +++ b/common/src/main/scala/services/chat/ChatService.scala @@ -8,7 +8,7 @@ import net.psforever.types.ChatMessageType import services.{GenericEventBus, Service} class ChatService extends Actor { - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger override def preStart = { log.info("Starting....") @@ -19,14 +19,14 @@ class ChatService extends Actor { def receive = { case Service.Join(channel) => val path = s"/Chat/$channel" - val who = sender() + val who = sender() log.info(s"$who has joined $path") ChatEvents.subscribe(who, path) case Service.Leave(None) => ChatEvents.unsubscribe(sender()) case Service.Leave(Some(channel)) => val path = s"/Chat/$channel" - val who = sender() + val who = sender() log.info(s"$who has left $path") ChatEvents.unsubscribe(who, path) case Service.LeaveAll() => @@ -36,63 +36,169 @@ class ChatService extends Actor { action match { case ChatAction.Local(player_guid, player_name, cont, player_pos, player_faction, msg) => // local ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(ChatMessageType.CMT_OPEN,msg.wideContents,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(ChatMessageType.CMT_OPEN, msg.wideContents, player_name, msg.contents, None) + ) ) case ChatAction.Tell(player_guid, player_name, msg) => // tell - var good : Boolean = false - LivePlayerList.WorldPopulation(_ => true).foreach(char => { - if (char.name.equalsIgnoreCase(msg.recipient)) { - good = true - } - }) - if(good) { + var good: Boolean = false + LivePlayerList + .WorldPopulation(_ => true) + .foreach(char => { + if (char.name.equalsIgnoreCase(msg.recipient)) { + good = true + } + }) + if (good) { ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 0, replyMessage = ChatMsg(ChatMessageType.CMT_TELL,msg.wideContents,msg.recipient,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 0, + replyMessage = ChatMsg(ChatMessageType.CMT_TELL, msg.wideContents, msg.recipient, msg.contents, None) + ) ) ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 1, replyMessage = ChatMsg(ChatMessageType.U_CMT_TELLFROM,msg.wideContents,msg.recipient,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 1, + replyMessage = + ChatMsg(ChatMessageType.U_CMT_TELLFROM, msg.wideContents, msg.recipient, msg.contents, None) + ) ) } else { ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 1, replyMessage = ChatMsg(ChatMessageType.U_CMT_TELLFROM,msg.wideContents,msg.recipient,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 1, + replyMessage = + ChatMsg(ChatMessageType.U_CMT_TELLFROM, msg.wideContents, msg.recipient, msg.contents, None) + ) ) ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 1, replyMessage = ChatMsg(ChatMessageType.UNK_45,msg.wideContents,"","@NoTell_Target",None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 1, + replyMessage = ChatMsg(ChatMessageType.UNK_45, msg.wideContents, "", "@NoTell_Target", None) + ) ) } case ChatAction.Broadcast(player_guid, player_name, cont, player_pos, player_faction, msg) => // broadcast ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(msg.messageType,msg.wideContents,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(msg.messageType, msg.wideContents, player_name, msg.contents, None) + ) ) case ChatAction.Voice(player_guid, player_name, cont, player_pos, player_faction, msg) => // voice ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(ChatMessageType.CMT_VOICE,false,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(ChatMessageType.CMT_VOICE, false, player_name, msg.contents, None) + ) ) case ChatAction.Note(player_guid, player_name, msg) => // note ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 1, replyMessage = ChatMsg(ChatMessageType.U_CMT_GMTELLFROM,true, msg.recipient,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 1, + replyMessage = ChatMsg(ChatMessageType.U_CMT_GMTELLFROM, true, msg.recipient, msg.contents, None) + ) ) ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, target = 1, replyMessage = ChatMsg(ChatMessageType.CMT_GMTELL,true,"Server","Why do you try to /note ? That's a GM command ! ... Or not, nobody can /note",None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + target = 1, + replyMessage = ChatMsg( + ChatMessageType.CMT_GMTELL, + true, + "Server", + "Why do you try to /note ? That's a GM command ! ... Or not, nobody can /note", + None + ) + ) ) case ChatAction.Squad(player_guid, player_name, cont, player_pos, player_faction, msg) => // squad ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(ChatMessageType.CMT_SQUAD,msg.wideContents,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(ChatMessageType.CMT_SQUAD, msg.wideContents, player_name, msg.contents, None) + ) ) case ChatAction.Platoon(player_guid, player_name, cont, player_pos, player_faction, msg) => // platoon ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(ChatMessageType.CMT_PLATOON,msg.wideContents,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(ChatMessageType.CMT_PLATOON, msg.wideContents, player_name, msg.contents, None) + ) ) case ChatAction.Command(player_guid, player_name, cont, player_pos, player_faction, msg) => // command ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, player_name, cont, player_pos, player_faction, 2, ChatMsg(ChatMessageType.CMT_COMMAND,msg.wideContents,player_name,msg.contents,None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + player_name, + cont, + player_pos, + player_faction, + 2, + ChatMsg(ChatMessageType.CMT_COMMAND, msg.wideContents, player_name, msg.contents, None) + ) ) case ChatAction.GM(player_guid, player_name, msg) => // GM msg.messageType match { case ChatMessageType.CMT_SILENCE => ChatEvents.publish( - ChatServiceResponse(s"/Chat/$forChannel", player_guid, msg.contents, target = 0, replyMessage = ChatMsg(ChatMessageType.CMT_SILENCE, true, "", "", None)) + ChatServiceResponse( + s"/Chat/$forChannel", + player_guid, + msg.contents, + target = 0, + replyMessage = ChatMsg(ChatMessageType.CMT_SILENCE, true, "", "", None) + ) ) // if(player_guid != PlanetSideGUID(0)) { // @@ -118,4 +224,4 @@ class ChatService extends Actor { case msg => log.info(s"Unhandled message $msg from $sender") } -} \ No newline at end of file +} diff --git a/common/src/main/scala/services/chat/ChatServiceMessage.scala b/common/src/main/scala/services/chat/ChatServiceMessage.scala index 7cb944a4..59430666 100644 --- a/common/src/main/scala/services/chat/ChatServiceMessage.scala +++ b/common/src/main/scala/services/chat/ChatServiceMessage.scala @@ -1,4 +1,4 @@ // Copyright (c) 2017 PSForever package services.chat -final case class ChatServiceMessage(forChannel : String, actionMessage : ChatAction.Action) \ No newline at end of file +final case class ChatServiceMessage(forChannel: String, actionMessage: ChatAction.Action) diff --git a/common/src/main/scala/services/chat/ChatServiceResponse.scala b/common/src/main/scala/services/chat/ChatServiceResponse.scala index 7cda721a..06f8c2c3 100644 --- a/common/src/main/scala/services/chat/ChatServiceResponse.scala +++ b/common/src/main/scala/services/chat/ChatServiceResponse.scala @@ -6,13 +6,13 @@ import net.psforever.packet.game.ChatMsg import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3} import services.GenericEventBusMsg -final case class ChatServiceResponse(toChannel : String, - avatar_guid : PlanetSideGUID, - avatar_name : String, - cont : Zone = Zone.Nowhere, - avatar_pos : Vector3 = Vector3(0f,0f,0f), - avatar_faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL, - - target : Int, - replyMessage : ChatMsg - ) extends GenericEventBusMsg \ No newline at end of file +final case class ChatServiceResponse( + toChannel: String, + avatar_guid: PlanetSideGUID, + avatar_name: String, + cont: Zone = Zone.Nowhere, + avatar_pos: Vector3 = Vector3(0f, 0f, 0f), + avatar_faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL, + target: Int, + replyMessage: ChatMsg +) extends GenericEventBusMsg diff --git a/common/src/main/scala/services/galaxy/GalaxyService.scala b/common/src/main/scala/services/galaxy/GalaxyService.scala index 3ba548b0..047a36c1 100644 --- a/common/src/main/scala/services/galaxy/GalaxyService.scala +++ b/common/src/main/scala/services/galaxy/GalaxyService.scala @@ -7,7 +7,7 @@ import net.psforever.packet.game.BuildingInfoUpdateMessage import services.{GenericEventBus, Service} class GalaxyService extends Actor { - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger override def preStart = { log.info("Starting...") @@ -15,22 +15,22 @@ class GalaxyService extends Actor { val GalaxyEvents = new GenericEventBus[GalaxyServiceResponse] - def receive : Receive = { + def receive: Receive = { case Service.Join(faction) if "TRNCVS".containsSlice(faction) => val path = s"/$faction/Galaxy" - val who = sender() + val who = sender() log.trace(s"$who has joined $path") GalaxyEvents.subscribe(who, path) case Service.Join("galaxy") => val path = s"/Galaxy" - val who = sender() + val who = sender() log.trace(s"$who has joined $path") GalaxyEvents.subscribe(who, path) case Service.Join(channel) => val path = s"/$channel/Galaxy" - val who = sender() + val who = sender() log.trace(s"$who has joined $path") GalaxyEvents.subscribe(who, path) @@ -39,7 +39,7 @@ class GalaxyService extends Actor { case Service.Leave(Some(channel)) => val path = s"/$channel/Galaxy" - val who = sender() + val who = sender() log.trace(s"$who has left $path") GalaxyEvents.unsubscribe(sender(), path) @@ -55,7 +55,10 @@ class GalaxyService extends Actor { case GalaxyAction.TransferPassenger(player_guid, temp_channel, vehicle, vehicle_to_delete, manifest) => GalaxyEvents.publish( - GalaxyServiceResponse(s"/$forChannel/Galaxy", GalaxyResponse.TransferPassenger(temp_channel, vehicle, vehicle_to_delete, manifest)) + GalaxyServiceResponse( + s"/$forChannel/Galaxy", + GalaxyResponse.TransferPassenger(temp_channel, vehicle, vehicle_to_delete, manifest) + ) ) case _ => ; } diff --git a/common/src/main/scala/services/galaxy/GalaxyServiceMessage.scala b/common/src/main/scala/services/galaxy/GalaxyServiceMessage.scala index 60364cd5..8840deae 100644 --- a/common/src/main/scala/services/galaxy/GalaxyServiceMessage.scala +++ b/common/src/main/scala/services/galaxy/GalaxyServiceMessage.scala @@ -6,10 +6,10 @@ import net.psforever.objects.vehicles.VehicleManifest import net.psforever.packet.game.BuildingInfoUpdateMessage import net.psforever.types.PlanetSideGUID -final case class GalaxyServiceMessage(forChannel : String, actionMessage : GalaxyAction.Action) +final case class GalaxyServiceMessage(forChannel: String, actionMessage: GalaxyAction.Action) object GalaxyServiceMessage { - def apply(actionMessage : GalaxyAction.Action) : GalaxyServiceMessage = GalaxyServiceMessage("", actionMessage) + def apply(actionMessage: GalaxyAction.Action): GalaxyServiceMessage = GalaxyServiceMessage("", actionMessage) } object GalaxyAction { @@ -17,5 +17,11 @@ object GalaxyAction { final case class MapUpdate(msg: BuildingInfoUpdateMessage) extends Action - final case class TransferPassenger(player_guid : PlanetSideGUID, temp_channel : String, vehicle : Vehicle, vehicle_to_delete : PlanetSideGUID, manifest : VehicleManifest) extends Action + final case class TransferPassenger( + player_guid: PlanetSideGUID, + temp_channel: String, + vehicle: Vehicle, + vehicle_to_delete: PlanetSideGUID, + manifest: VehicleManifest + ) extends Action } diff --git a/common/src/main/scala/services/galaxy/GalaxyServiceResponse.scala b/common/src/main/scala/services/galaxy/GalaxyServiceResponse.scala index eb445ede..850e8d21 100644 --- a/common/src/main/scala/services/galaxy/GalaxyServiceResponse.scala +++ b/common/src/main/scala/services/galaxy/GalaxyServiceResponse.scala @@ -8,15 +8,19 @@ import net.psforever.packet.game.BuildingInfoUpdateMessage import net.psforever.types.PlanetSideGUID import services.GenericEventBusMsg -final case class GalaxyServiceResponse(toChannel : String, - replyMessage : GalaxyResponse.Response - ) extends GenericEventBusMsg +final case class GalaxyServiceResponse(toChannel: String, replyMessage: GalaxyResponse.Response) + extends GenericEventBusMsg object GalaxyResponse { trait Response - final case class HotSpotUpdate(zone_id : Int, priority : Int, host_spot_info : List[HotSpotInfo]) extends Response - final case class MapUpdate(msg: BuildingInfoUpdateMessage) extends Response + final case class HotSpotUpdate(zone_id: Int, priority: Int, host_spot_info: List[HotSpotInfo]) extends Response + final case class MapUpdate(msg: BuildingInfoUpdateMessage) extends Response - final case class TransferPassenger(temp_channel : String, vehicle : Vehicle, vehicle_to_delete : PlanetSideGUID, manifest : VehicleManifest) extends Response + final case class TransferPassenger( + temp_channel: String, + vehicle: Vehicle, + vehicle_to_delete: PlanetSideGUID, + manifest: VehicleManifest + ) extends Response } diff --git a/common/src/main/scala/services/local/LocalService.scala b/common/src/main/scala/services/local/LocalService.scala index b72c502e..91e24f52 100644 --- a/common/src/main/scala/services/local/LocalService.scala +++ b/common/src/main/scala/services/local/LocalService.scala @@ -21,13 +21,14 @@ import services.support.SupportActor import scala.concurrent.duration.Duration -class LocalService(zone : Zone) extends Actor { - private val doorCloser = context.actorOf(Props[DoorCloseActor], s"${zone.Id}-local-door-closer") - private val hackClearer = context.actorOf(Props[HackClearActor], s"${zone.Id}-local-hack-clearer") +class LocalService(zone: Zone) extends Actor { + private val doorCloser = context.actorOf(Props[DoorCloseActor], s"${zone.Id}-local-door-closer") + private val hackClearer = context.actorOf(Props[HackClearActor], s"${zone.Id}-local-hack-clearer") private val hackCapturer = context.actorOf(Props[HackCaptureActor], s"${zone.Id}-local-hack-capturer") - private val engineer = context.actorOf(Props[DeployableRemover], s"${zone.Id}-deployable-remover-agent") - private val teleportDeployment : ActorRef = context.actorOf(Props[RouterTelepadActivation], s"${zone.Id}-telepad-activate-agent") - private [this] val log = org.log4s.getLogger + private val engineer = context.actorOf(Props[DeployableRemover], s"${zone.Id}-deployable-remover-agent") + private val teleportDeployment: ActorRef = + context.actorOf(Props[RouterTelepadActivation], s"${zone.Id}-telepad-activate-agent") + private[this] val log = org.log4s.getLogger override def preStart = { log.trace(s"Awaiting ${zone.Id} local events ...") @@ -35,10 +36,10 @@ class LocalService(zone : Zone) extends Actor { val LocalEvents = new GenericEventBus[LocalServiceResponse] - def receive : Receive = { + def receive: Receive = { case Service.Join(channel) => val path = s"/$channel/Local" - val who = sender() + val who = sender() log.info(s"$who has joined $path") LocalEvents.subscribe(who, path) @@ -47,7 +48,7 @@ class LocalService(zone : Zone) extends Actor { case Service.Leave(Some(channel)) => val path = s"/$channel/Local" - val who = sender() + val who = sender() log.info(s"$who has left $path") LocalEvents.unsubscribe(who, path) @@ -58,11 +59,19 @@ class LocalService(zone : Zone) extends Actor { action match { case LocalAction.AlertDestroyDeployable(_, obj) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", Service.defaultPlayerGUID, LocalResponse.AlertDestroyDeployable(obj)) + LocalServiceResponse( + s"/$forChannel/Local", + Service.defaultPlayerGUID, + LocalResponse.AlertDestroyDeployable(obj) + ) ) case LocalAction.DeployableMapIcon(player_guid, behavior, deployInfo) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.DeployableMapIcon(behavior, deployInfo)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.DeployableMapIcon(behavior, deployInfo) + ) ) case LocalAction.Detonate(guid, obj) => LocalEvents.publish( @@ -91,12 +100,13 @@ class LocalService(zone : Zone) extends Actor { case LocalAction.HackCaptureTerminal(player_guid, _, target, unk1, unk2, isResecured) => // When a CC is hacked (or resecured) all amenities for the base should be unhacked val building = target.Owner.asInstanceOf[Building] - val hackableAmenities = building.Amenities.filter(x => x.isInstanceOf[Hackable]).map(x => x.asInstanceOf[Amenity with Hackable]) + val hackableAmenities = + building.Amenities.filter(x => x.isInstanceOf[Hackable]).map(x => x.asInstanceOf[Amenity with Hackable]) hackableAmenities.foreach(amenity => - if(amenity.HackedBy.isDefined) { hackClearer ! HackClearActor.ObjectIsResecured(amenity) } + if (amenity.HackedBy.isDefined) { hackClearer ! HackClearActor.ObjectIsResecured(amenity) } ) - if(isResecured){ + if (isResecured) { hackCapturer ! HackCaptureActor.ClearHack(target, zone) } else { target.Definition match { @@ -112,25 +122,41 @@ class LocalService(zone : Zone) extends Actor { } LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.HackCaptureTerminal(target.GUID, unk1, unk2, isResecured)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.HackCaptureTerminal(target.GUID, unk1, unk2, isResecured) + ) ) // If the owner of this capture terminal is on the lattice trigger a zone wide map update to update lattice benefits zone.Lattice find building match { case Some(_) => building.TriggerZoneMapUpdate() - case None => ; + case None => ; } case LocalAction.RouterTelepadTransport(player_guid, passenger_guid, src_guid, dest_guid) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.RouterTelepadTransport(passenger_guid, src_guid, dest_guid)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.RouterTelepadTransport(passenger_guid, src_guid, dest_guid) + ) ) case LocalAction.SetEmpire(object_guid, empire) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", Service.defaultPlayerGUID, LocalResponse.SetEmpire(object_guid, empire)) + LocalServiceResponse( + s"/$forChannel/Local", + Service.defaultPlayerGUID, + LocalResponse.SetEmpire(object_guid, empire) + ) ) case LocalAction.ToggleTeleportSystem(player_guid, router, system_plan) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.ToggleTeleportSystem(router, system_plan)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.ToggleTeleportSystem(router, system_plan) + ) ) case LocalAction.TriggerEffect(player_guid, effect, target) => LocalEvents.publish( @@ -138,24 +164,44 @@ class LocalService(zone : Zone) extends Actor { ) case LocalAction.TriggerEffectLocation(player_guid, effect, pos, orient) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.TriggerEffect(PlanetSideGUID(0), effect, None, Some(TriggeredEffectLocation(pos, orient)))) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.TriggerEffect(PlanetSideGUID(0), effect, None, Some(TriggeredEffectLocation(pos, orient))) + ) ) case LocalAction.TriggerEffectInfo(player_guid, effect, target, unk1, unk2) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.TriggerEffect(target, effect, Some(TriggeredEffect(unk1, unk2)))) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.TriggerEffect(target, effect, Some(TriggeredEffect(unk1, unk2))) + ) ) case LocalAction.TriggerSound(player_guid, sound, pos, unk, volume) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.TriggerSound(sound, pos, unk, volume)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.TriggerSound(sound, pos, unk, volume) + ) ) case LocalAction.UpdateForceDomeStatus(player_guid, building_guid, activated) => { LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.UpdateForceDomeStatus(building_guid, activated)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.UpdateForceDomeStatus(building_guid, activated) + ) ) } case LocalAction.RechargeVehicleWeapon(player_guid, vehicle_guid, weapon_guid) => LocalEvents.publish( - LocalServiceResponse(s"/$forChannel/Local", player_guid, LocalResponse.RechargeVehicleWeapon(vehicle_guid, weapon_guid)) + LocalServiceResponse( + s"/$forChannel/Local", + player_guid, + LocalResponse.RechargeVehicleWeapon(vehicle_guid, weapon_guid) + ) ) case _ => ; } @@ -170,24 +216,36 @@ class LocalService(zone : Zone) extends Actor { case HackClearActor.ClearTheHack(target_guid, _, unk1, unk2) => log.warn(s"Clearing hack for $target_guid") LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", Service.defaultPlayerGUID, LocalResponse.HackClear(target_guid, unk1, unk2)) + LocalServiceResponse( + s"/${zone.Id}/Local", + Service.defaultPlayerGUID, + LocalResponse.HackClear(target_guid, unk1, unk2) + ) ) //message from ProximityTerminalControl case Terminal.StartProximityEffect(terminal) => LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", PlanetSideGUID(0), LocalResponse.ProximityTerminalEffect(terminal.GUID, true)) + LocalServiceResponse( + s"/${zone.Id}/Local", + PlanetSideGUID(0), + LocalResponse.ProximityTerminalEffect(terminal.GUID, true) + ) ) case Terminal.StopProximityEffect(terminal) => LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", PlanetSideGUID(0), LocalResponse.ProximityTerminalEffect(terminal.GUID, false)) + LocalServiceResponse( + s"/${zone.Id}/Local", + PlanetSideGUID(0), + LocalResponse.ProximityTerminalEffect(terminal.GUID, false) + ) ) case HackCaptureActor.HackTimeoutReached(capture_terminal_guid, _, _, _, hackedByFaction) => val terminal = zone.GUID(capture_terminal_guid).get.asInstanceOf[CaptureTerminal] val building = terminal.Owner.asInstanceOf[Building] - if(building.NtuLevel > 0) { + if (building.NtuLevel > 0) { log.info(s"Setting base ${building.GUID} / MapId: ${building.MapId} as owned by $hackedByFaction") building.Faction = hackedByFaction @@ -197,7 +255,10 @@ class LocalService(zone : Zone) extends Actor { } // Reset CC back to normal operation - self ! LocalServiceMessage(zone.Id, LocalAction.HackCaptureTerminal(PlanetSideGUID(-1), zone, terminal, 0, 8L, isResecured = true)) + self ! LocalServiceMessage( + zone.Id, + LocalAction.HackCaptureTerminal(PlanetSideGUID(-1), zone, terminal, 0, 8L, isResecured = true) + ) //todo: this appears to be the way to reset the base warning lights after the hack finishes but it doesn't seem to work. The attribute above is a workaround self ! HackClearActor.ClearTheHack(building.GUID, zone.Id, 3212836864L, 8L) @@ -206,27 +267,29 @@ class LocalService(zone : Zone) extends Actor { engineer forward msg //message(s) from Engineer - case msg @ DeployableRemover.EliminateDeployable(obj : TurretDeployable, guid, pos, _) => + case msg @ DeployableRemover.EliminateDeployable(obj: TurretDeployable, guid, pos, _) => val seats = obj.Seats.values - if(seats.count(_.isOccupied) > 0) { + if (seats.count(_.isOccupied) > 0) { val wasKickedByDriver = false //TODO yeah, I don't know seats.foreach(seat => { seat.Occupant match { case Some(tplayer) => seat.Occupant = None tplayer.VehicleSeated = None - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.KickPassenger(tplayer.GUID, 4, wasKickedByDriver, obj.GUID)) + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.KickPassenger(tplayer.GUID, 4, wasKickedByDriver, obj.GUID) + ) case None => ; } }) import scala.concurrent.ExecutionContext.Implicits.global context.system.scheduler.scheduleOnce(Duration.create(2, "seconds"), self, msg) - } - else { + } else { EliminateDeployable(obj, guid, pos) } - case DeployableRemover.EliminateDeployable(obj : BoomerDeployable, guid, pos, _) => + case DeployableRemover.EliminateDeployable(obj: BoomerDeployable, guid, pos, _) => EliminateDeployable(obj, guid, pos) obj.Trigger match { case Some(trigger) => @@ -234,7 +297,7 @@ class LocalService(zone : Zone) extends Actor { case _ => ; } - case DeployableRemover.EliminateDeployable(obj : TelepadDeployable, guid, pos, _) => + case DeployableRemover.EliminateDeployable(obj: TelepadDeployable, guid, pos, _) => obj.Active = false //ClearSpecific will also remove objects that do not have GUID's; we may not have a GUID at this time teleportDeployment ! SupportActor.ClearSpecific(List(obj), zone) @@ -245,7 +308,11 @@ class LocalService(zone : Zone) extends Actor { case DeployableRemover.DeleteTrigger(trigger_guid, _) => LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", Service.defaultPlayerGUID, LocalResponse.ObjectDelete(trigger_guid, 0)) + LocalServiceResponse( + s"/${zone.Id}/Local", + Service.defaultPlayerGUID, + LocalResponse.ObjectDelete(trigger_guid, 0) + ) ) //message to RouterTelepadActivation @@ -257,30 +324,41 @@ class LocalService(zone : Zone) extends Actor { val remoteTelepad = telepad.asInstanceOf[TelepadDeployable] remoteTelepad.Active = true zone.GUID(remoteTelepad.Router) match { - case Some(router : Vehicle) => + case Some(router: Vehicle) => router.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(internalTelepad : Utility.InternalTelepad) => + case Some(internalTelepad: Utility.InternalTelepad) => //get rid of previous linked remote telepad (if any) zone.GUID(internalTelepad.Telepad) match { - case Some(old : TelepadDeployable) => - log.info(s"ActivateTeleportSystem: old remote telepad@${old.GUID.guid} linked to internal@${internalTelepad.GUID.guid} will be deconstructed") + case Some(old: TelepadDeployable) => + log.info( + s"ActivateTeleportSystem: old remote telepad@${old.GUID.guid} linked to internal@${internalTelepad.GUID.guid} will be deconstructed" + ) old.Active = false engineer ! SupportActor.ClearSpecific(List(old), zone) engineer ! RemoverActor.AddTask(old, zone, Some(0 seconds)) case _ => ; } internalTelepad.Telepad = remoteTelepad.GUID - if(internalTelepad.Active) { - log.info(s"ActivateTeleportSystem: fully deployed router@${router.GUID.guid} in ${zone.Id} will link internal@${internalTelepad.GUID.guid} and remote@${remoteTelepad.GUID.guid}") - LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", Service.defaultPlayerGUID, LocalResponse.ToggleTeleportSystem(router, Some((internalTelepad, remoteTelepad)))) + if (internalTelepad.Active) { + log.info( + s"ActivateTeleportSystem: fully deployed router@${router.GUID.guid} in ${zone.Id} will link internal@${internalTelepad.GUID.guid} and remote@${remoteTelepad.GUID.guid}" ) - } - else { + LocalEvents.publish( + LocalServiceResponse( + s"/${zone.Id}/Local", + Service.defaultPlayerGUID, + LocalResponse.ToggleTeleportSystem(router, Some((internalTelepad, remoteTelepad))) + ) + ) + } else { remoteTelepad.OwnerName match { case Some(name) => LocalEvents.publish( - LocalServiceResponse(s"/$name/Local", Service.defaultPlayerGUID, LocalResponse.RouterTelepadMessage("@Teleport_NotDeployed")) + LocalServiceResponse( + s"/$name/Local", + Service.defaultPlayerGUID, + LocalResponse.RouterTelepadMessage("@Teleport_NotDeployed") + ) ) case None => ; } @@ -297,7 +375,7 @@ class LocalService(zone : Zone) extends Actor { } //synchronized damage calculations - case Vitality.DamageOn(target : Deployable, damage_func) => + case Vitality.DamageOn(target: Deployable, damage_func) => val cause = damage_func(target) sender ! Vitality.DamageResolution(target, cause) @@ -310,7 +388,7 @@ class LocalService(zone : Zone) extends Actor { * @param telepad na * @param msg na */ - def RouterTelepadError(telepad : TelepadDeployable, msg : String) : Unit = { + def RouterTelepadError(telepad: TelepadDeployable, msg: String): Unit = { telepad.OwnerName match { case Some(name) => LocalEvents.publish( @@ -337,9 +415,13 @@ class LocalService(zone : Zone) extends Actor { * may be a former identifier * @param position the deployable's position */ - def EliminateDeployable(obj : PlanetSideGameObject with Deployable, guid : PlanetSideGUID, position : Vector3) : Unit = { + def EliminateDeployable(obj: PlanetSideGameObject with Deployable, guid: PlanetSideGUID, position: Vector3): Unit = { LocalEvents.publish( - LocalServiceResponse(s"/${zone.Id}/Local", Service.defaultPlayerGUID, LocalResponse.EliminateDeployable(obj, guid, position)) + LocalServiceResponse( + s"/${zone.Id}/Local", + Service.defaultPlayerGUID, + LocalResponse.EliminateDeployable(obj, guid, position) + ) ) obj.OwnerName match { case Some(name) => diff --git a/common/src/main/scala/services/local/LocalServiceMessage.scala b/common/src/main/scala/services/local/LocalServiceMessage.scala index 274eb6bd..c78d51fd 100644 --- a/common/src/main/scala/services/local/LocalServiceMessage.scala +++ b/common/src/main/scala/services/local/LocalServiceMessage.scala @@ -12,33 +12,81 @@ import net.psforever.objects.zones.Zone import net.psforever.packet.game.{DeployableInfo, DeploymentAction, TriggeredSound} import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3} -final case class LocalServiceMessage(forChannel : String, actionMessage : LocalAction.Action) +final case class LocalServiceMessage(forChannel: String, actionMessage: LocalAction.Action) object LocalServiceMessage { - final case class Deployables(msg : Any) + final case class Deployables(msg: Any) - final case class Telepads(msg : Any) + final case class Telepads(msg: Any) } object LocalAction { trait Action - final case class AlertDestroyDeployable(player_guid : PlanetSideGUID, obj : PlanetSideGameObject with Deployable) extends Action - final case class DeployableMapIcon(player_guid : PlanetSideGUID, behavior : DeploymentAction.Value, deployInfo : DeployableInfo) extends Action - final case class Detonate(guid : PlanetSideGUID, obj : PlanetSideGameObject) extends Action - final case class DoorOpens(player_guid : PlanetSideGUID, continent : Zone, door : Door) extends Action - final case class DoorCloses(player_guid : PlanetSideGUID, door_guid : PlanetSideGUID) extends Action - final case class HackClear(player_guid : PlanetSideGUID, target : PlanetSideServerObject, unk1 : Long, unk2 : Long = 8L) extends Action - final case class HackTemporarily(player_guid : PlanetSideGUID, continent : Zone, target : PlanetSideServerObject, unk1 : Long, duration: Int, unk2 : Long = 8L) extends Action - final case class ClearTemporaryHack(player_guid: PlanetSideGUID, target: PlanetSideServerObject with Hackable) extends Action - final case class HackCaptureTerminal(player_guid : PlanetSideGUID, continent : Zone, target : CaptureTerminal, unk1 : Long, unk2 : Long = 8L, isResecured : Boolean) extends Action - final case class RouterTelepadTransport(player_guid : PlanetSideGUID, passenger_guid : PlanetSideGUID, src_guid : PlanetSideGUID, dest_guid : PlanetSideGUID) extends Action + final case class AlertDestroyDeployable(player_guid: PlanetSideGUID, obj: PlanetSideGameObject with Deployable) + extends Action + final case class DeployableMapIcon( + player_guid: PlanetSideGUID, + behavior: DeploymentAction.Value, + deployInfo: DeployableInfo + ) extends Action + final case class Detonate(guid: PlanetSideGUID, obj: PlanetSideGameObject) extends Action + final case class DoorOpens(player_guid: PlanetSideGUID, continent: Zone, door: Door) extends Action + final case class DoorCloses(player_guid: PlanetSideGUID, door_guid: PlanetSideGUID) extends Action + final case class HackClear(player_guid: PlanetSideGUID, target: PlanetSideServerObject, unk1: Long, unk2: Long = 8L) + extends Action + final case class HackTemporarily( + player_guid: PlanetSideGUID, + continent: Zone, + target: PlanetSideServerObject, + unk1: Long, + duration: Int, + unk2: Long = 8L + ) extends Action + final case class ClearTemporaryHack(player_guid: PlanetSideGUID, target: PlanetSideServerObject with Hackable) + extends Action + final case class HackCaptureTerminal( + player_guid: PlanetSideGUID, + continent: Zone, + target: CaptureTerminal, + unk1: Long, + unk2: Long = 8L, + isResecured: Boolean + ) extends Action + final case class RouterTelepadTransport( + player_guid: PlanetSideGUID, + passenger_guid: PlanetSideGUID, + src_guid: PlanetSideGUID, + dest_guid: PlanetSideGUID + ) extends Action final case class SetEmpire(object_guid: PlanetSideGUID, empire: PlanetSideEmpire.Value) extends Action - final case class ToggleTeleportSystem(player_guid : PlanetSideGUID, router : Vehicle, systemPlan : Option[(Utility.InternalTelepad, TelepadDeployable)]) extends Action - final case class TriggerEffect(player_guid : PlanetSideGUID, effect : String, target : PlanetSideGUID) extends Action - final case class TriggerEffectInfo(player_guid : PlanetSideGUID, effect : String, target : PlanetSideGUID, unk1 : Boolean, unk2 : Long) extends Action - final case class TriggerEffectLocation(player_guid : PlanetSideGUID, effect : String, pos : Vector3, orient : Vector3) extends Action - final case class TriggerSound(player_guid : PlanetSideGUID, sound : TriggeredSound.Value, pos : Vector3, unk : Int, volume : Float) extends Action - final case class UpdateForceDomeStatus(player_guid : PlanetSideGUID, building_guid : PlanetSideGUID, activated : Boolean) extends Action - final case class RechargeVehicleWeapon(player_guid: PlanetSideGUID, mountable_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action + final case class ToggleTeleportSystem( + player_guid: PlanetSideGUID, + router: Vehicle, + systemPlan: Option[(Utility.InternalTelepad, TelepadDeployable)] + ) extends Action + final case class TriggerEffect(player_guid: PlanetSideGUID, effect: String, target: PlanetSideGUID) extends Action + final case class TriggerEffectInfo( + player_guid: PlanetSideGUID, + effect: String, + target: PlanetSideGUID, + unk1: Boolean, + unk2: Long + ) extends Action + final case class TriggerEffectLocation(player_guid: PlanetSideGUID, effect: String, pos: Vector3, orient: Vector3) + extends Action + final case class TriggerSound( + player_guid: PlanetSideGUID, + sound: TriggeredSound.Value, + pos: Vector3, + unk: Int, + volume: Float + ) extends Action + final case class UpdateForceDomeStatus(player_guid: PlanetSideGUID, building_guid: PlanetSideGUID, activated: Boolean) + extends Action + final case class RechargeVehicleWeapon( + player_guid: PlanetSideGUID, + mountable_guid: PlanetSideGUID, + weapon_guid: PlanetSideGUID + ) extends Action } diff --git a/common/src/main/scala/services/local/LocalServiceResponse.scala b/common/src/main/scala/services/local/LocalServiceResponse.scala index edd818f5..2c63fec1 100644 --- a/common/src/main/scala/services/local/LocalServiceResponse.scala +++ b/common/src/main/scala/services/local/LocalServiceResponse.scala @@ -9,32 +9,51 @@ import net.psforever.packet.game._ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3} import services.GenericEventBusMsg -final case class LocalServiceResponse(toChannel : String, - avatar_guid : PlanetSideGUID, - replyMessage : LocalResponse.Response - ) extends GenericEventBusMsg +final case class LocalServiceResponse( + toChannel: String, + avatar_guid: PlanetSideGUID, + replyMessage: LocalResponse.Response +) extends GenericEventBusMsg object LocalResponse { trait Response - final case class AlertDestroyDeployable(obj : PlanetSideGameObject with Deployable) extends Response - final case class DeployableMapIcon(action : DeploymentAction.Value, deployInfo : DeployableInfo) extends Response - final case class Detonate(guid : PlanetSideGUID, obj : PlanetSideGameObject) extends Response - final case class DoorOpens(door_guid : PlanetSideGUID) extends Response - final case class DoorCloses(door_guid : PlanetSideGUID) extends Response - final case class EliminateDeployable(obj : PlanetSideGameObject with Deployable, object_guid : PlanetSideGUID, pos : Vector3) extends Response - final case class HackClear(target_guid : PlanetSideGUID, unk1 : Long, unk2 : Long) extends Response - final case class HackObject(target_guid : PlanetSideGUID, unk1 : Long, unk2 : Long) extends Response - final case class HackCaptureTerminal(target_guid : PlanetSideGUID, unk1 : Long, unk2 : Long, isResecured: Boolean) extends Response - final case class ObjectDelete(item_guid : PlanetSideGUID, unk : Int) extends Response - final case class ProximityTerminalAction(terminal : Terminal with ProximityUnit, target : PlanetSideGameObject) extends Response - final case class ProximityTerminalEffect(object_guid : PlanetSideGUID, effectState : Boolean) extends Response - final case class RouterTelepadMessage(msg : String) extends Response - final case class RouterTelepadTransport(passenger_guid : PlanetSideGUID, src_guid : PlanetSideGUID, dest_guid : PlanetSideGUID) extends Response + final case class AlertDestroyDeployable(obj: PlanetSideGameObject with Deployable) extends Response + final case class DeployableMapIcon(action: DeploymentAction.Value, deployInfo: DeployableInfo) extends Response + final case class Detonate(guid: PlanetSideGUID, obj: PlanetSideGameObject) extends Response + final case class DoorOpens(door_guid: PlanetSideGUID) extends Response + final case class DoorCloses(door_guid: PlanetSideGUID) extends Response + final case class EliminateDeployable( + obj: PlanetSideGameObject with Deployable, + object_guid: PlanetSideGUID, + pos: Vector3 + ) extends Response + final case class HackClear(target_guid: PlanetSideGUID, unk1: Long, unk2: Long) extends Response + final case class HackObject(target_guid: PlanetSideGUID, unk1: Long, unk2: Long) extends Response + final case class HackCaptureTerminal(target_guid: PlanetSideGUID, unk1: Long, unk2: Long, isResecured: Boolean) + extends Response + final case class ObjectDelete(item_guid: PlanetSideGUID, unk: Int) extends Response + final case class ProximityTerminalAction(terminal: Terminal with ProximityUnit, target: PlanetSideGameObject) + extends Response + final case class ProximityTerminalEffect(object_guid: PlanetSideGUID, effectState: Boolean) extends Response + final case class RouterTelepadMessage(msg: String) extends Response + final case class RouterTelepadTransport( + passenger_guid: PlanetSideGUID, + src_guid: PlanetSideGUID, + dest_guid: PlanetSideGUID + ) extends Response final case class SetEmpire(object_guid: PlanetSideGUID, empire: PlanetSideEmpire.Value) extends Response - final case class ToggleTeleportSystem(router : Vehicle, systemPlan : Option[(Utility.InternalTelepad, TelepadDeployable)]) extends Response - final case class TriggerEffect(target: PlanetSideGUID, effect: String, effectInfo: Option[TriggeredEffect] = None, triggeredLocation: Option[TriggeredEffectLocation] = None) extends Response - final case class TriggerSound(sound : TriggeredSound.Value, pos : Vector3, unk : Int, volume : Float) extends Response - final case class UpdateForceDomeStatus(building_guid : PlanetSideGUID, activated : Boolean) extends Response + final case class ToggleTeleportSystem( + router: Vehicle, + systemPlan: Option[(Utility.InternalTelepad, TelepadDeployable)] + ) extends Response + final case class TriggerEffect( + target: PlanetSideGUID, + effect: String, + effectInfo: Option[TriggeredEffect] = None, + triggeredLocation: Option[TriggeredEffectLocation] = None + ) extends Response + final case class TriggerSound(sound: TriggeredSound.Value, pos: Vector3, unk: Int, volume: Float) extends Response + final case class UpdateForceDomeStatus(building_guid: PlanetSideGUID, activated: Boolean) extends Response final case class RechargeVehicleWeapon(mountable_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Response } diff --git a/common/src/main/scala/services/local/support/DeployableRemover.scala b/common/src/main/scala/services/local/support/DeployableRemover.scala index e1cff388..8339393f 100644 --- a/common/src/main/scala/services/local/support/DeployableRemover.scala +++ b/common/src/main/scala/services/local/support/DeployableRemover.scala @@ -11,28 +11,28 @@ import services.RemoverActor import scala.concurrent.duration._ class DeployableRemover extends RemoverActor { - final val FirstStandardDuration : FiniteDuration = 3 minutes + final val FirstStandardDuration: FiniteDuration = 3 minutes - final val SecondStandardDuration : FiniteDuration = 2 seconds + final val SecondStandardDuration: FiniteDuration = 2 seconds - def InclusionTest(entry : RemoverActor.Entry) : Boolean = entry.obj.isInstanceOf[Deployable] + def InclusionTest(entry: RemoverActor.Entry): Boolean = entry.obj.isInstanceOf[Deployable] - def InitialJob(entry : RemoverActor.Entry) : Unit = { } + def InitialJob(entry: RemoverActor.Entry): Unit = {} - def FirstJob(entry : RemoverActor.Entry) : Unit = { + def FirstJob(entry: RemoverActor.Entry): Unit = { val obj = entry.obj obj match { - case boomer : BoomerDeployable => + case boomer: BoomerDeployable => FirstJobBoomer(boomer, entry) case _ => ; } entry.zone.Deployables ! Zone.Deployable.Dismiss(obj.asInstanceOf[PlanetSideGameObject with Deployable]) } - def FirstJobBoomer(obj : BoomerDeployable, entry : RemoverActor.Entry) : Unit = { + def FirstJobBoomer(obj: BoomerDeployable, entry: RemoverActor.Entry): Unit = { obj.Trigger match { case Some(trigger) => - if(trigger.HasGUID) { + if (trigger.HasGUID) { val guid = trigger.GUID Zone.EquipmentIs.Where(trigger, guid, entry.zone) match { case Some(Zone.EquipmentIs.InContainer(container, index)) => @@ -47,20 +47,20 @@ class DeployableRemover extends RemoverActor { } } - override def SecondJob(entry : RemoverActor.Entry) : Unit = { + override def SecondJob(entry: RemoverActor.Entry): Unit = { val obj = entry.obj.asInstanceOf[PlanetSideGameObject with Deployable] info(s"Deleting a ${obj.Definition.Name} deployable") context.parent ! DeployableRemover.EliminateDeployable(obj, obj.GUID, obj.Position, entry.zone) super.SecondJob(entry) } - def ClearanceTest(entry : RemoverActor.Entry) : Boolean = !entry.zone.DeployableList.contains(entry.obj) + def ClearanceTest(entry: RemoverActor.Entry): Boolean = !entry.zone.DeployableList.contains(entry.obj) - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { + def DeletionTask(entry: RemoverActor.Entry): TaskResolver.GiveTask = { entry.obj match { - case turret : TurretDeployable => + case turret: TurretDeployable => GUIDTask.UnregisterDeployableTurret(turret)(entry.zone.GUID) - case boomer : BoomerDeployable => + case boomer: BoomerDeployable => boomer.Trigger match { case Some(trigger) => boomer.Trigger = None @@ -75,11 +75,12 @@ class DeployableRemover extends RemoverActor { } object DeployableRemover { - final case class EliminateDeployable(obj : PlanetSideGameObject with Deployable, - guid : PlanetSideGUID, - position : Vector3, - zone : Zone) + final case class EliminateDeployable( + obj: PlanetSideGameObject with Deployable, + guid: PlanetSideGUID, + position: Vector3, + zone: Zone + ) - final case class DeleteTrigger(trigger_guid : PlanetSideGUID, - zone : Zone) + final case class DeleteTrigger(trigger_guid: PlanetSideGUID, zone: Zone) } diff --git a/common/src/main/scala/services/local/support/DoorCloseActor.scala b/common/src/main/scala/services/local/support/DoorCloseActor.scala index 2b497751..5ebbc74c 100644 --- a/common/src/main/scala/services/local/support/DoorCloseActor.scala +++ b/common/src/main/scala/services/local/support/DoorCloseActor.scala @@ -17,23 +17,26 @@ import scala.concurrent.duration._ * @see `LocalService` */ class DoorCloseActor() extends Actor { + /** The periodic `Executor` that checks for doors to be closed */ - private var doorCloserTrigger : Cancellable = Default.Cancellable + private var doorCloserTrigger: Cancellable = Default.Cancellable + /** A `List` of currently open doors */ - private var openDoors : List[DoorCloseActor.DoorEntry] = Nil + private var openDoors: List[DoorCloseActor.DoorEntry] = Nil //private[this] val log = org.log4s.getLogger - def receive : Receive = { + def receive: Receive = { case DoorCloseActor.DoorIsOpen(door, zone, time) => openDoors = openDoors :+ DoorCloseActor.DoorEntry(door, zone, time) - if(openDoors.size == 1) { //we were the only entry so the event must be started from scratch + if (openDoors.size == 1) { //we were the only entry so the event must be started from scratch import scala.concurrent.ExecutionContext.Implicits.global - doorCloserTrigger = context.system.scheduler.scheduleOnce(DoorCloseActor.timeout, self, DoorCloseActor.TryCloseDoors()) + doorCloserTrigger = + context.system.scheduler.scheduleOnce(DoorCloseActor.timeout, self, DoorCloseActor.TryCloseDoors()) } case DoorCloseActor.TryCloseDoors() => doorCloserTrigger.cancel - val now : Long = System.nanoTime + val now: Long = System.nanoTime val (doorsToClose1, doorsLeftOpen1) = PartitionEntries(openDoors, now) val (doorsToClose2, doorsLeftOpen2) = doorsToClose1.partition(entry => { entry.door.Open match { @@ -41,13 +44,17 @@ class DoorCloseActor() extends Actor { // If the player that opened the door is far enough away, or they're dead, var openerIsGone = Vector3.MagnitudeSquared(entry.door.Position - player.Position) > 25.5 || !player.isAlive - if(openerIsGone) { + if (openerIsGone) { // Check nobody else is nearby to hold the door opens - val playersToCheck : List[Player] = if(entry.door.Owner.isInstanceOf[Building] && entry.door.Owner.asInstanceOf[Building].Definition.SOIRadius > 0) { - entry.door.Owner.asInstanceOf[Building].PlayersInSOI - } else { - entry.zone.LivePlayers - } + val playersToCheck: List[Player] = + if ( + entry.door.Owner + .isInstanceOf[Building] && entry.door.Owner.asInstanceOf[Building].Definition.SOIRadius > 0 + ) { + entry.door.Owner.asInstanceOf[Building].PlayersInSOI + } else { + entry.zone.LivePlayers + } playersToCheck .filter(x => x.isAlive && Vector3.MagnitudeSquared(entry.door.Position - x.Position) < 25.5) @@ -69,14 +76,15 @@ class DoorCloseActor() extends Actor { openDoors = ( doorsLeftOpen1 ++ doorsLeftOpen2.map(entry => DoorCloseActor.DoorEntry(entry.door, entry.zone, now)) - ).sortBy(_.time) + ).sortBy(_.time) doorsToClose2.foreach(entry => { - entry.door.Open = None //permissible break from synchronization + entry.door.Open = None //permissible break from synchronization context.parent ! DoorCloseActor.CloseTheDoor(entry.door.GUID, entry.zone.Id) //call up to the main event system }) - if(openDoors.nonEmpty) { - val short_timeout : FiniteDuration = math.max(1, DoorCloseActor.timeout_time - (now - openDoors.head.time)) nanoseconds + if (openDoors.nonEmpty) { + val short_timeout: FiniteDuration = + math.max(1, DoorCloseActor.timeout_time - (now - openDoors.head.time)) nanoseconds import scala.concurrent.ExecutionContext.Implicits.global doorCloserTrigger = context.system.scheduler.scheduleOnce(short_timeout, self, DoorCloseActor.TryCloseDoors()) } @@ -97,8 +105,11 @@ class DoorCloseActor() extends Actor { * @see `List.partition` * @return a `Tuple` of two `Lists`, whose qualifications are explained above */ - private def PartitionEntries(list : List[DoorCloseActor.DoorEntry], now : Long) : (List[DoorCloseActor.DoorEntry], List[DoorCloseActor.DoorEntry]) = { - val n : Int = recursivePartitionEntries(list.iterator, now) + private def PartitionEntries( + list: List[DoorCloseActor.DoorEntry], + now: Long + ): (List[DoorCloseActor.DoorEntry], List[DoorCloseActor.DoorEntry]) = { + val n: Int = recursivePartitionEntries(list.iterator, now) (list.take(n), list.drop(n)) //take and drop so to always return new lists } @@ -112,16 +123,18 @@ class DoorCloseActor() extends Actor { * defaults to 0 * @return the index where division will occur */ - @tailrec private def recursivePartitionEntries(iter : Iterator[DoorCloseActor.DoorEntry], now : Long, index : Int = 0) : Int = { - if(!iter.hasNext) { + @tailrec private def recursivePartitionEntries( + iter: Iterator[DoorCloseActor.DoorEntry], + now: Long, + index: Int = 0 + ): Int = { + if (!iter.hasNext) { index - } - else { + } else { val entry = iter.next() - if(now - entry.time >= DoorCloseActor.timeout_time) { + if (now - entry.time >= DoorCloseActor.timeout_time) { recursivePartitionEntries(iter, now, index + 1) - } - else { + } else { index } } @@ -129,10 +142,11 @@ class DoorCloseActor() extends Actor { } object DoorCloseActor { + /** The wait before an open door closes; as a Long for calculation simplicity */ - private final val timeout_time : Long = 5000000000L //nanoseconds (5s) + private final val timeout_time: Long = 5000000000L //nanoseconds (5s) /** The wait before an open door closes; as a `FiniteDuration` for `Executor` simplicity */ - private final val timeout : FiniteDuration = timeout_time nanoseconds + private final val timeout: FiniteDuration = timeout_time nanoseconds /** * Message that carries information about a door that has been opened. @@ -141,14 +155,16 @@ object DoorCloseActor { * @param time when the door was opened * @see `DoorEntry` */ - final case class DoorIsOpen(door : Door, zone : Zone, time : Long = System.nanoTime()) + final case class DoorIsOpen(door: Door, zone: Zone, time: Long = System.nanoTime()) + /** * Message that carries information about a door that needs to close. * Prompting, as compared to `DoorIsOpen` which is reactionary. * @param door_guid the door * @param zone_id the zone in which the door resides */ - final case class CloseTheDoor(door_guid : PlanetSideGUID, zone_id : String) + final case class CloseTheDoor(door_guid: PlanetSideGUID, zone_id: String) + /** * Internal message used to signal a test of the queued door information. */ @@ -162,5 +178,5 @@ object DoorCloseActor { * @param time when the door was opened * @see `DoorIsOpen` */ - private final case class DoorEntry(door : Door, zone : Zone, time : Long) + private final case class DoorEntry(door: Door, zone: Zone, time: Long) } diff --git a/common/src/main/scala/services/local/support/HackCaptureActor.scala b/common/src/main/scala/services/local/support/HackCaptureActor.scala index e01d13cf..90a06f1f 100644 --- a/common/src/main/scala/services/local/support/HackCaptureActor.scala +++ b/common/src/main/scala/services/local/support/HackCaptureActor.scala @@ -12,14 +12,14 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scala.concurrent.duration.{FiniteDuration, _} class HackCaptureActor extends Actor { - private [this] val log = org.log4s.getLogger + private[this] val log = org.log4s.getLogger - private var clearTrigger : Cancellable = Default.Cancellable + private var clearTrigger: Cancellable = Default.Cancellable /** A `List` of currently hacked server objects */ - private var hackedObjects : List[HackCaptureActor.HackEntry] = Nil + private var hackedObjects: List[HackCaptureActor.HackEntry] = Nil - def receive : Receive = { + def receive: Receive = { case HackCaptureActor.ObjectIsHacked(target, zone, unk1, unk2, duration, time) => log.trace(s"${target.GUID} is hacked.") target.HackedBy match { @@ -31,7 +31,9 @@ class HackCaptureActor extends Actor { hackedObjects.find(_.target == target) match { case Some(_) => - log.trace(s"${target.GUID} was already hacked - removing it from the hacked objects list before re-adding it.") + 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}") case _ => ; @@ -42,13 +44,13 @@ class HackCaptureActor extends Actor { // Restart the timer, in case this is the first object in the hacked objects list or the object was removed and re-added RestartTimer() - if(target.isInstanceOf[CaptureTerminal]) { target.Owner.asInstanceOf[Building].TriggerZoneMapUpdate() } + if (target.isInstanceOf[CaptureTerminal]) { target.Owner.asInstanceOf[Building].TriggerZoneMapUpdate() } case HackCaptureActor.ProcessCompleteHacks() => log.trace("Processing complete hacks") clearTrigger.cancel - val now : Long = System.nanoTime - val stillHacked = hackedObjects.filter(x => now - x.hack_timestamp <= x.duration.toNanos) + val now: Long = System.nanoTime + val stillHacked = hackedObjects.filter(x => now - x.hack_timestamp <= x.duration.toNanos) val unhackObjects = hackedObjects.filter(x => now - x.hack_timestamp >= x.duration.toNanos) hackedObjects = stillHacked unhackObjects.foreach(entry => { @@ -57,7 +59,13 @@ class HackCaptureActor extends Actor { 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 + context.parent ! HackCaptureActor.HackTimeoutReached( + entry.target.GUID, + entry.zone.Id, + entry.unk1, + entry.unk2, + hackedByFaction + ) //call up to the main event system }) // If there's hacked objects left in the list restart the timer with the shortest hack time left @@ -66,7 +74,7 @@ class HackCaptureActor extends Actor { case HackCaptureActor.ClearHack(target, _) => hackedObjects = hackedObjects.filterNot(x => x.target == target) - if(target.isInstanceOf[CaptureTerminal]) { target.Owner.asInstanceOf[Building].TriggerZoneMapUpdate() } + if (target.isInstanceOf[CaptureTerminal]) { target.Owner.asInstanceOf[Building].TriggerZoneMapUpdate() } // Restart the timer in case the object we just removed was the next one scheduled RestartTimer() @@ -74,16 +82,20 @@ class HackCaptureActor extends Actor { } private def RestartTimer(): Unit = { - if(hackedObjects.nonEmpty) { + if (hackedObjects.nonEmpty) { val now = System.nanoTime() - def minTimeLeft(entry1: HackCaptureActor.HackEntry, entry2: HackCaptureActor.HackEntry): HackCaptureActor.HackEntry = { + def minTimeLeft( + entry1: HackCaptureActor.HackEntry, + entry2: HackCaptureActor.HackEntry + ): HackCaptureActor.HackEntry = { val entry1TimeLeft = entry1.duration.toNanos - (now - entry1.hack_timestamp) val entry2TimeLeft = entry2.duration.toNanos - (now - entry2.hack_timestamp) - if(entry1TimeLeft < entry2TimeLeft) entry1 else entry2 + if (entry1TimeLeft < entry2TimeLeft) entry1 else entry2 } val hackEntry = hackedObjects.reduceLeft(minTimeLeft) - val short_timeout : FiniteDuration = math.max(1, hackEntry.duration.toNanos - (System.nanoTime - hackEntry.hack_timestamp)) nanoseconds + val short_timeout: FiniteDuration = + math.max(1, hackEntry.duration.toNanos - (System.nanoTime - hackEntry.hack_timestamp)) nanoseconds log.trace(s"Still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds") import scala.concurrent.ExecutionContext.Implicits.global @@ -93,13 +105,33 @@ class HackCaptureActor extends Actor { } object HackCaptureActor { - final case class ObjectIsHacked(target : CaptureTerminal, zone : Zone, unk1 : Long, unk2 : Long, duration: FiniteDuration, time : Long = System.nanoTime()) + final case class ObjectIsHacked( + target: CaptureTerminal, + zone: Zone, + unk1: Long, + unk2: Long, + duration: FiniteDuration, + time: Long = System.nanoTime() + ) - final case class HackTimeoutReached(capture_terminal_guid : PlanetSideGUID, zone_id : String, unk1 : Long, unk2 : Long, hackedByFaction : PlanetSideEmpire.Value) + final case class HackTimeoutReached( + capture_terminal_guid: PlanetSideGUID, + zone_id: String, + unk1: Long, + unk2: Long, + hackedByFaction: PlanetSideEmpire.Value + ) - final case class ClearHack(target : CaptureTerminal, zone : Zone) + final case class ClearHack(target: CaptureTerminal, zone: Zone) private final case class ProcessCompleteHacks() - private final case class HackEntry(target : PlanetSideServerObject with Hackable, zone : Zone, unk1 : Long, unk2 : Long, duration: FiniteDuration, hack_timestamp : Long) -} \ No newline at end of file + private final case class HackEntry( + target: PlanetSideServerObject with Hackable, + zone: Zone, + unk1: Long, + unk2: Long, + duration: FiniteDuration, + hack_timestamp: Long + ) +} diff --git a/common/src/main/scala/services/local/support/HackClearActor.scala b/common/src/main/scala/services/local/support/HackClearActor.scala index 53fcfae2..8673f302 100644 --- a/common/src/main/scala/services/local/support/HackClearActor.scala +++ b/common/src/main/scala/services/local/support/HackClearActor.scala @@ -19,13 +19,15 @@ import scala.concurrent.duration._ * @see `LocalService` */ class HackClearActor() extends Actor { - /** The periodic `Executor` that checks for server objects to be unhacked */ - private var clearTrigger : Cancellable = Default.Cancellable - /** A `List` of currently hacked server objects */ - private var hackedObjects : List[HackClearActor.HackEntry] = Nil - private[this] val log = org.log4s.getLogger - def receive : Receive = { + /** The periodic `Executor` that checks for server objects to be unhacked */ + private var clearTrigger: Cancellable = Default.Cancellable + + /** A `List` of currently hacked server objects */ + private var hackedObjects: List[HackClearActor.HackEntry] = Nil + private[this] val log = org.log4s.getLogger + + def receive: Receive = { case HackClearActor.ObjectIsHacked(target, zone, unk1, unk2, duration, time) => val durationNanos = TimeUnit.NANOSECONDS.convert(duration, TimeUnit.SECONDS) hackedObjects = hackedObjects :+ HackClearActor.HackEntry(target, zone, unk1, unk2, time, durationNanos) @@ -35,13 +37,18 @@ class HackClearActor() extends Actor { case HackClearActor.TryClearHacks() => clearTrigger.cancel - val now : Long = System.nanoTime + val now: Long = System.nanoTime //TODO we can just walk across the list of doors and extract only the first few entries val (unhackObjects, stillHackedObjects) = PartitionEntries(hackedObjects, now) hackedObjects = stillHackedObjects unhackObjects.foreach(entry => { entry.target.Actor ! CommonMessages.ClearHack() - context.parent ! HackClearActor.ClearTheHack(entry.target.GUID, entry.zone.Id, entry.unk1, entry.unk2) //call up to the main event system + context.parent ! HackClearActor.ClearTheHack( + entry.target.GUID, + entry.zone.Id, + entry.unk1, + entry.unk2 + ) //call up to the main event system }) RestartTimer() @@ -52,7 +59,12 @@ class HackClearActor() extends Actor { case Some(entry: HackClearActor.HackEntry) => hackedObjects = hackedObjects.filterNot(x => x.target == target) entry.target.Actor ! CommonMessages.ClearHack() - context.parent ! HackClearActor.ClearTheHack(entry.target.GUID, entry.zone.Id, entry.unk1, entry.unk2) //call up to the main event system + context.parent ! HackClearActor.ClearTheHack( + entry.target.GUID, + entry.zone.Id, + entry.unk1, + entry.unk2 + ) //call up to the main event system // Restart the timer in case the object we just removed was the next one scheduled RestartTimer() @@ -63,15 +75,17 @@ class HackClearActor() extends Actor { } private def RestartTimer(): Unit = { - if(hackedObjects.length != 0) { - val now = System.nanoTime() + if (hackedObjects.length != 0) { + val now = System.nanoTime() val (unhackObjects, stillHackedObjects) = PartitionEntries(hackedObjects, now) stillHackedObjects.headOption match { case Some(hackEntry) => - val short_timeout : FiniteDuration = math.max(1, hackEntry.duration - (now - hackEntry.time)) nanoseconds + val short_timeout: FiniteDuration = math.max(1, hackEntry.duration - (now - hackEntry.time)) nanoseconds - log.info(s"HackClearActor: Still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds") + log.info( + s"HackClearActor: Still items left in hacked objects list. Checking again in ${short_timeout.toSeconds} seconds" + ) import scala.concurrent.ExecutionContext.Implicits.global clearTrigger = context.system.scheduler.scheduleOnce(short_timeout, self, HackClearActor.TryClearHacks()) case None => log.info("HackClearActor: No objects left in hacked objects list. Not rescheduling check.") @@ -93,8 +107,11 @@ class HackClearActor() extends Actor { * @see `List.partition` * @return a `Tuple` of two `Lists`, whose qualifications are explained above */ - private def PartitionEntries(list : List[HackClearActor.HackEntry], now : Long) : (List[HackClearActor.HackEntry], List[HackClearActor.HackEntry]) = { - val n : Int = recursivePartitionEntries(list.iterator, now) + private def PartitionEntries( + list: List[HackClearActor.HackEntry], + now: Long + ): (List[HackClearActor.HackEntry], List[HackClearActor.HackEntry]) = { + val n: Int = recursivePartitionEntries(list.iterator, now) (list.take(n), list.drop(n)) //take and drop so to always return new lists } @@ -108,16 +125,18 @@ class HackClearActor() extends Actor { * defaults to 0 * @return the index where division will occur */ - @tailrec private def recursivePartitionEntries(iter : Iterator[HackClearActor.HackEntry], now : Long, index : Int = 0) : Int = { - if(!iter.hasNext) { + @tailrec private def recursivePartitionEntries( + iter: Iterator[HackClearActor.HackEntry], + now: Long, + index: Int = 0 + ): Int = { + if (!iter.hasNext) { index - } - else { + } else { val entry = iter.next() - if(now - entry.time >= entry.duration) { + if (now - entry.time >= entry.duration) { recursivePartitionEntries(iter, now, index + 1) - } - else { + } else { index } } @@ -125,6 +144,7 @@ class HackClearActor() extends Actor { } object HackClearActor { + /** * Message that carries information about a server object that has been hacked. * @param target the server object @@ -133,11 +153,17 @@ object HackClearActor { * @param duration how long the object is to stay hacked for in seconds * @see `HackEntry` */ - final case class ObjectIsHacked(target : PlanetSideServerObject, zone : Zone, unk1 : Long, unk2 : Long, duration: Int, time : Long = System.nanoTime()) + final case class ObjectIsHacked( + target: PlanetSideServerObject, + zone: Zone, + unk1: Long, + unk2: Long, + duration: Int, + time: Long = System.nanoTime() + ) /** * Message used to request that a hack is cleared from the hacked objects list and the unhacked status returned to all clients - * */ final case class ObjectIsResecured(target: PlanetSideServerObject with Hackable) @@ -147,8 +173,7 @@ object HackClearActor { * @param obj the server object * @param zone_id the zone in which the object resides */ - final case class ClearTheHack(obj : PlanetSideGUID, zone_id : String, unk1 : Long, unk2 : Long) - + final case class ClearTheHack(obj: PlanetSideGUID, zone_id: String, unk1: Long, unk2: Long) /** * Internal message used to signal a test of the queued door information. @@ -164,5 +189,12 @@ object HackClearActor { * @param duration The hack duration in nanoseconds * @see `ObjectIsHacked` */ - private final case class HackEntry(target : PlanetSideServerObject, zone : Zone, unk1 : Long, unk2 : Long, time : Long, duration: Long) + private final case class HackEntry( + target: PlanetSideServerObject, + zone: Zone, + unk1: Long, + unk2: Long, + time: Long, + duration: Long + ) } diff --git a/common/src/main/scala/services/local/support/RouterTelepadActivation.scala b/common/src/main/scala/services/local/support/RouterTelepadActivation.scala index f471e573..bc176e12 100644 --- a/common/src/main/scala/services/local/support/RouterTelepadActivation.scala +++ b/common/src/main/scala/services/local/support/RouterTelepadActivation.scala @@ -9,66 +9,63 @@ import services.support.{SimilarityComparator, SupportActor} import scala.concurrent.duration._ class RouterTelepadActivation extends SupportActor[RouterTelepadActivation.Entry] { - var activationTask : Cancellable = Default.Cancellable - var telepadList : List[RouterTelepadActivation.Entry] = List() + var activationTask: Cancellable = Default.Cancellable + var telepadList: List[RouterTelepadActivation.Entry] = List() val sameEntryComparator = new SimilarityComparator[RouterTelepadActivation.Entry]() { - def Test(entry1 : RouterTelepadActivation.Entry, entry2 : RouterTelepadActivation.Entry) : Boolean = { + def Test(entry1: RouterTelepadActivation.Entry, entry2: RouterTelepadActivation.Entry): Boolean = { (entry1.obj eq entry2.obj) && (entry1.zone eq entry2.zone) && entry1.obj.GUID == entry2.obj.GUID } } - val firstStandardTime : FiniteDuration = 60 seconds + val firstStandardTime: FiniteDuration = 60 seconds - def InclusionTest(entry : RouterTelepadActivation.Entry) : Boolean = { + def InclusionTest(entry: RouterTelepadActivation.Entry): Boolean = { val obj = entry.obj obj.isInstanceOf[TelepadDeployable] && !obj.asInstanceOf[TelepadDeployable].Active } - def receive : Receive = entryManagementBehaviors - .orElse { - case RouterTelepadActivation.AddTask(obj, zone, duration) => - val entry = RouterTelepadActivation.Entry(obj, zone, duration.getOrElse(firstStandardTime).toNanos) - if(InclusionTest(entry) && !telepadList.exists(test => sameEntryComparator.Test(test, entry))) { - if(entry.duration == 0) { - //skip the queue altogether - ActivationTask(entry) - } - else if(telepadList.isEmpty) { - //we were the only entry so the event must be started from scratch - telepadList = List(entry) - trace(s"an activation task has been added: $entry") - RetimeFirstTask() - } - else { - //unknown number of entries; append, sort, then re-time tasking - val oldHead = telepadList.head - if(!telepadList.exists(test => sameEntryComparator.Test(test, entry))) { - telepadList = (telepadList :+ entry).sortBy(entry => entry.time + entry.duration) + def receive: Receive = + entryManagementBehaviors + .orElse { + case RouterTelepadActivation.AddTask(obj, zone, duration) => + val entry = RouterTelepadActivation.Entry(obj, zone, duration.getOrElse(firstStandardTime).toNanos) + if (InclusionTest(entry) && !telepadList.exists(test => sameEntryComparator.Test(test, entry))) { + if (entry.duration == 0) { + //skip the queue altogether + ActivationTask(entry) + } else if (telepadList.isEmpty) { + //we were the only entry so the event must be started from scratch + telepadList = List(entry) trace(s"an activation task has been added: $entry") - if(oldHead != telepadList.head) { - RetimeFirstTask() + RetimeFirstTask() + } else { + //unknown number of entries; append, sort, then re-time tasking + val oldHead = telepadList.head + if (!telepadList.exists(test => sameEntryComparator.Test(test, entry))) { + telepadList = (telepadList :+ entry).sortBy(entry => entry.time + entry.duration) + trace(s"an activation task has been added: $entry") + if (oldHead != telepadList.head) { + RetimeFirstTask() + } + } else { + trace(s"$obj is already queued") } } - else { - trace(s"$obj is already queued") - } + } else { + trace(s"$obj either does not qualify for this behavior or is already queued") } - } - else { - trace(s"$obj either does not qualify for this behavior or is already queued") - } - //private messages from self to self - case RouterTelepadActivation.TryActivate() => - activationTask.cancel - val now : Long = System.nanoTime - val (in, out) = telepadList.partition(entry => { now - entry.time >= entry.duration }) - telepadList = out - in.foreach { ActivationTask } - RetimeFirstTask() - trace(s"router activation task has found ${in.size} items to process") + //private messages from self to self + case RouterTelepadActivation.TryActivate() => + activationTask.cancel + val now: Long = System.nanoTime + val (in, out) = telepadList.partition(entry => { now - entry.time >= entry.duration }) + telepadList = out + in.foreach { ActivationTask } + RetimeFirstTask() + trace(s"router activation task has found ${in.size} items to process") - case _ => ; - } + case _ => ; + } /** * Common function to reset the first task's delayed execution. @@ -76,67 +73,69 @@ class RouterTelepadActivation extends SupportActor[RouterTelepadActivation.Entry * @param now the time (in nanoseconds); * defaults to the current time (in nanoseconds) */ - def RetimeFirstTask(now : Long = System.nanoTime) : Unit = { + def RetimeFirstTask(now: Long = System.nanoTime): Unit = { activationTask.cancel - if(telepadList.nonEmpty) { - val short_timeout : FiniteDuration = math.max(1, telepadList.head.duration - (now - telepadList.head.time)) nanoseconds + if (telepadList.nonEmpty) { + val short_timeout: FiniteDuration = + math.max(1, telepadList.head.duration - (now - telepadList.head.time)) nanoseconds import scala.concurrent.ExecutionContext.Implicits.global activationTask = context.system.scheduler.scheduleOnce(short_timeout, self, RouterTelepadActivation.TryActivate()) } } - def HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(telepadList, targets.map { RouterTelepadActivation.Entry(_, zone, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been hurried") case (in, out) => debug(s"the following tasks have been hurried: $in") telepadList = out - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } in.foreach { ActivationTask } } } - def HurryAll() : Unit = { + def HurryAll(): Unit = { trace("all tasks have been hurried") activationTask.cancel telepadList.foreach { ActivationTask } telepadList = Nil } - def ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(telepadList, targets.map { RouterTelepadActivation.Entry(_, zone, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been cleared") case (in, out) => debug(s"the following tasks have been cleared: $in") telepadList = out //.sortBy(entry => entry.time + entry.duration) - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } } } - def ClearAll() : Unit = { + def ClearAll(): Unit = { trace("all tasks have been cleared") activationTask.cancel telepadList = Nil } - def ActivationTask(entry : SupportActor.Entry) : Unit = { + def ActivationTask(entry: SupportActor.Entry): Unit = { entry.obj.asInstanceOf[TelepadDeployable].Active = true context.parent ! RouterTelepadActivation.ActivateTeleportSystem(entry.obj, entry.zone) } } object RouterTelepadActivation { - final case class Entry(_obj : PlanetSideGameObject, _zone : Zone, _duration : Long) extends SupportActor.Entry(_obj, _zone, _duration) + final case class Entry(_obj: PlanetSideGameObject, _zone: Zone, _duration: Long) + extends SupportActor.Entry(_obj, _zone, _duration) - final case class AddTask(obj : PlanetSideGameObject, zone : Zone, duration : Option[FiniteDuration] = None) + final case class AddTask(obj: PlanetSideGameObject, zone: Zone, duration: Option[FiniteDuration] = None) final case class TryActivate() - final case class ActivateTeleportSystem(telepad : PlanetSideGameObject, zone : Zone) + final case class ActivateTeleportSystem(telepad: PlanetSideGameObject, zone: Zone) } diff --git a/common/src/main/scala/services/properties/PropertyOverrideManager.scala b/common/src/main/scala/services/properties/PropertyOverrideManager.scala index 72078c17..fcd4c43f 100644 --- a/common/src/main/scala/services/properties/PropertyOverrideManager.scala +++ b/common/src/main/scala/services/properties/PropertyOverrideManager.scala @@ -1,6 +1,5 @@ package services.properties - import akka.actor.{Actor, ActorRef, Stash} import net.psforever.objects.zones.InterstellarCluster import net.psforever.packet.game.{GamePropertyTarget, PropertyOverrideMessage} @@ -14,10 +13,10 @@ import scala.collection.mutable.ListBuffer class PropertyOverrideManager extends Actor with Stash { private[this] val log = org.log4s.getLogger("PropertyOverrideManager") - private var overrides : Map[Int, Map[String, List[(String, String)]]] = Map() - private var gamePropertyScopes : List[PropertyOverrideMessage.GamePropertyScope] = List() - private var interstellarCluster : ActorRef = Actor.noSender - private var zoneIds : List[Int] = List() + private var overrides: Map[Int, Map[String, List[(String, String)]]] = Map() + private var gamePropertyScopes: List[PropertyOverrideMessage.GamePropertyScope] = List() + private var interstellarCluster: ActorRef = Actor.noSender + private var zoneIds: List[Int] = List() override def preStart = { log.info(s"Starting PropertyOverrideManager") @@ -26,7 +25,7 @@ class PropertyOverrideManager extends Actor with Stash { override def receive = ServiceLookup - def ServiceLookup : Receive = { + def ServiceLookup: Receive = { case ServiceManager.LookupResult("cluster", endpoint) => interstellarCluster = endpoint @@ -39,7 +38,7 @@ class PropertyOverrideManager extends Actor with Stash { unstashAll() LoadOverridesFromFile(zoneId = 0) // Global overrides - for(zoneId <- zoneIds) { + for (zoneId <- zoneIds) { LoadOverridesFromFile(zoneId) } @@ -57,32 +56,32 @@ class PropertyOverrideManager extends Actor with Stash { case _ => ; } - private def LoadOverridesFromFile(zoneId : Int): Unit = { - val zoneOverrides = LoadFile(s"game_objects${zoneId}.adb.lst") + private def LoadOverridesFromFile(zoneId: Int): Unit = { + val zoneOverrides = LoadFile(s"overrides/game_objects${zoneId}.adb.lst") - if(zoneOverrides == null) { - log.info(s"No overrides found for zone ${zoneId} using filename game_objects${zoneId}.adb.lst") + if (zoneOverrides == null) { + log.debug(s"No overrides found for zone ${zoneId} using filename game_objects${zoneId}.adb.lst") return } val grouped = zoneOverrides.groupBy(_._1).view.mapValues(_.map(x => (x._2, x._3)).toList).toMap - log.info(s"Loaded property overrides for zone $zoneId: ${grouped.toString}") + log.debug(s"Loaded property overrides for zone $zoneId: ${grouped.toString}") overrides += (zoneId -> grouped) } private def ProcessGamePropertyScopes(): Unit = { - val scopesBuffer : ListBuffer[GamePropertyScope] = ListBuffer() + val scopesBuffer: ListBuffer[GamePropertyScope] = ListBuffer() - for(over <- overrides) { - val zoneId = over._1 + for (over <- overrides) { + val zoneId = over._1 val overrideMap = over._2 - val gamePropertyTargets : ListBuffer[PropertyOverrideMessage.GamePropertyTarget] = ListBuffer() + val gamePropertyTargets: ListBuffer[PropertyOverrideMessage.GamePropertyTarget] = ListBuffer() - for(propOverride <- overrideMap) { + for (propOverride <- overrideMap) { val objectId = ObjectClass.ByName(propOverride._1) - val props = GamePropertyTarget(objectId,propOverride._2) + val props = GamePropertyTarget(objectId, propOverride._2) gamePropertyTargets += props } @@ -94,23 +93,23 @@ class PropertyOverrideManager extends Actor with Stash { gamePropertyScopes = scopesBuffer.toList } - def LoadFile(path : String): ListBuffer[(String, String, String)] = { + def LoadFile(path: String): ListBuffer[(String, String, String)] = { val stream = getClass.getClassLoader.getResourceAsStream(path) - if(stream == null) { + if (stream == null) { return null } - val content = scala.io.Source.fromInputStream(stream).getLines().filter(x => x.startsWith("add_property")) - var data : ListBuffer[(String, String, String)] = ListBuffer() + val content = scala.io.Source.fromInputStream(stream).getLines().filter(x => x.startsWith("add_property")) + var data: ListBuffer[(String, String, String)] = ListBuffer() - for(line <- content) { + for (line <- content) { val splitLine = line.split(" ") - if(splitLine.length >= 3) { + if (splitLine.length >= 3) { val objectName = splitLine(1) - val property = splitLine(2) + val property = splitLine(2) var propertyValue = "" - for(i <- 3 to splitLine.length - 1) { + for (i <- 3 to splitLine.length - 1) { propertyValue += splitLine(i) + " " } propertyValue = propertyValue.trim diff --git a/common/src/main/scala/services/support/SimilarityComparator.scala b/common/src/main/scala/services/support/SimilarityComparator.scala index 4538e1a7..c1b07f44 100644 --- a/common/src/main/scala/services/support/SimilarityComparator.scala +++ b/common/src/main/scala/services/support/SimilarityComparator.scala @@ -2,11 +2,12 @@ package services.support abstract class SimilarityComparator[A <: SupportActor.Entry] { + /** * Match two entries by object and by zone information. * @param entry1 the first entry * @param entry2 the second entry * @return if they match */ - def Test(entry1 : A, entry2 : A) : Boolean + def Test(entry1: A, entry2: A): Boolean } diff --git a/common/src/main/scala/services/support/SupportActor.scala b/common/src/main/scala/services/support/SupportActor.scala index 2843fbbe..a345ec2f 100644 --- a/common/src/main/scala/services/support/SupportActor.scala +++ b/common/src/main/scala/services/support/SupportActor.scala @@ -8,12 +8,12 @@ import net.psforever.objects.zones.Zone import scala.annotation.tailrec abstract class SupportActor[A <: SupportActor.Entry] extends Actor { - private[this] val log = org.log4s.getLogger - def info(msg : String) : Unit = log.info(msg) - def trace(msg : String) : Unit = log.trace(msg) - def debug(msg : String) : Unit = log.debug(msg) + private[this] val log = org.log4s.getLogger + def info(msg: String): Unit = log.info(msg) + def trace(msg: String): Unit = log.trace(msg) + def debug(msg: String): Unit = log.debug(msg) - def sameEntryComparator : SimilarityComparator[A] + def sameEntryComparator: SimilarityComparator[A] /** * Determine whether or not the resulting entry is valid for this process. @@ -22,9 +22,9 @@ abstract class SupportActor[A <: SupportActor.Entry] extends Actor { * @param entry the entry * @return `true`, if it can be processed; `false`, otherwise */ - def InclusionTest(entry : A) : Boolean + def InclusionTest(entry: A): Boolean - def entryManagementBehaviors : Receive = { + def entryManagementBehaviors: Receive = { case SupportActor.HurrySpecific(targets, zone) => HurrySpecific(targets, zone) @@ -38,26 +38,31 @@ abstract class SupportActor[A <: SupportActor.Entry] extends Actor { ClearAll() } - def HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit + def HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit - def HurryAll() : Unit + def HurryAll(): Unit - def ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit + def ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit - def ClearAll() : Unit + def ClearAll(): Unit /* - * Search the first pool of entries awaiting removal processing. - * If any entry has the same object as one of the targets and belongs to the same zone, remove it from the first pool. - * If no targets are selected (an empty list), all discovered targets within the appropriate zone are removed. - * @param targets a list of objects to pick - * @param zone the zone in which these objects must be discovered; - * all targets must be in this zone, with the assumption that this is the zone where they were registered - * @return all of the discovered entries - */ - def PartitionTargetsFromList(list : List[A], targets : List[A], zone : Zone, comparator : SimilarityComparator[A] = sameEntryComparator) : (List[A], List[A]) = { - if(targets.nonEmpty) { - if(targets.size == 1) { + * Search the first pool of entries awaiting removal processing. + * If any entry has the same object as one of the targets and belongs to the same zone, remove it from the first pool. + * If no targets are selected (an empty list), all discovered targets within the appropriate zone are removed. + * @param targets a list of objects to pick + * @param zone the zone in which these objects must be discovered; + * all targets must be in this zone, with the assumption that this is the zone where they were registered + * @return all of the discovered entries + */ + def PartitionTargetsFromList( + list: List[A], + targets: List[A], + zone: Zone, + comparator: SimilarityComparator[A] = sameEntryComparator + ): (List[A], List[A]) = { + if (targets.nonEmpty) { + if (targets.size == 1) { debug(s"a target submitted: ${targets.head}") //simple selection SupportActor.recursiveFind(comparator)(list.iterator, targets.head) match { @@ -66,8 +71,7 @@ abstract class SupportActor[A <: SupportActor.Entry] extends Actor { case Some(index) => (List(list(index)), list.take(index) ++ list.drop(index + 1)) } - } - else { + } else { debug(s"multiple targets submitted: $targets") //cumbersome partition //a - find targets from entries @@ -76,24 +80,22 @@ abstract class SupportActor[A <: SupportActor.Entry] extends Actor { b <- list if b.obj.HasGUID && a.obj.HasGUID && comparator.Test(b, a) } yield b - if(locatedTargets.nonEmpty) { + if (locatedTargets.nonEmpty) { //b - entries, after the found targets are removed (cull any non-GUID entries while at it) (locatedTargets, list filterNot locatedTargets.toSet) - } - else { + } else { (Nil, list) } } - } - else { + } else { list.partition(entry => entry.zone == zone) } } } object SupportActor { - class Entry(val obj : PlanetSideGameObject, val zone : Zone, val duration : Long) { - val time : Long = System.nanoTime + class Entry(val obj: PlanetSideGameObject, val zone: Zone, val duration: Long) { + val time: Long = System.nanoTime } /** @@ -104,7 +106,8 @@ object SupportActor { * @param zone the zone in which these objects exist; * the assumption is that all these target objects are registered to this zone */ - case class HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) + case class HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone) + /** * "Hurrying" shifts all entries through their first task and into the second pool. */ @@ -119,7 +122,8 @@ object SupportActor { * @param zone the zone in which these objects exist; * the assumption is that all these target objects are registered to this zone */ - case class ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) + case class ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone) + /** * "Clearing" cancels all entries if they are discovered in the first pool of objects. * Those entries will no longer be affected by any actions performed by the removal process until re-submitted. @@ -133,16 +137,16 @@ object SupportActor { * @param index the incrementing index value * @return the index of the entry in the list, if a match to the target is found */ - @tailrec private def recursiveFind[A <: SupportActor.Entry](comparator : SimilarityComparator[A])(iter : Iterator[A], target : A, index : Int = 0) : Option[Int] = { - if(!iter.hasNext) { + @tailrec private def recursiveFind[A <: SupportActor.Entry]( + comparator: SimilarityComparator[A] + )(iter: Iterator[A], target: A, index: Int = 0): Option[Int] = { + if (!iter.hasNext) { None - } - else { + } else { val entry = iter.next - if(entry.obj.HasGUID && target.obj.HasGUID && comparator.Test(entry, target)) { + if (entry.obj.HasGUID && target.obj.HasGUID && comparator.Test(entry, target)) { Some(index) - } - else { + } else { recursiveFind(comparator)(iter, target, index + 1) } } diff --git a/common/src/main/scala/services/support/SupportActorCaseConversions.scala b/common/src/main/scala/services/support/SupportActorCaseConversions.scala index e20f5a8d..6a714288 100644 --- a/common/src/main/scala/services/support/SupportActorCaseConversions.scala +++ b/common/src/main/scala/services/support/SupportActorCaseConversions.scala @@ -5,20 +5,21 @@ import net.psforever.objects.PlanetSideGameObject import net.psforever.objects.zones.Zone trait SupportActorCaseConversions { + /** * A mask for converting between a class local and `SupportActor.HurrySpecific`. * @param targets a list of objects to match * @param zone the zone in which these objects exist * @return a `SupportActor.HurrySpecific` object */ - def HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) : SupportActor.HurrySpecific = + def HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone): SupportActor.HurrySpecific = SupportActor.HurrySpecific(targets, zone) /** * A mask for converting between a class local and `SupportActor.HurryAll`. * @return a `SupportActor.HurryAll` object */ - def HurryAll() : SupportActor.HurryAll = SupportActor.HurryAll() + def HurryAll(): SupportActor.HurryAll = SupportActor.HurryAll() /** * A mask for converting between a class local and `SupportActor.ClearSpecific`. @@ -26,12 +27,12 @@ trait SupportActorCaseConversions { * @param zone the zone in which these objects exist * @return a `SupportActor.ClearSpecific` object */ - def ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) : SupportActor.ClearSpecific = + def ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone): SupportActor.ClearSpecific = SupportActor.ClearSpecific(targets, zone) /** * A mask for converting between a class local and `SupportActor.ClearAll`. * @return a `SupportActor.ClearAll` object */ - def ClearAll() : SupportActor.ClearAll = SupportActor.ClearAll() + def ClearAll(): SupportActor.ClearAll = SupportActor.ClearAll() } diff --git a/common/src/main/scala/services/teamwork/SquadService.scala b/common/src/main/scala/services/teamwork/SquadService.scala index a75284c8..8a44a88f 100644 --- a/common/src/main/scala/services/teamwork/SquadService.scala +++ b/common/src/main/scala/services/teamwork/SquadService.scala @@ -24,12 +24,14 @@ class SquadService extends Actor { * The count always starts at 1, even when reset. * A squad of `PlanetSideGUID(0)` indicates both a nonexistent squad and the default no-squad for clients. */ - private var sid : Int = 1 + private var sid: Int = 1 + /** * All squads.
* key - squad unique number; value - the squad wrapped around its attributes object */ - private var squadFeatures : TrieMap[PlanetSideGUID, SquadFeatures] = new TrieMap[PlanetSideGUID, SquadFeatures]() + private var squadFeatures: TrieMap[PlanetSideGUID, SquadFeatures] = new TrieMap[PlanetSideGUID, SquadFeatures]() + /** * The list of squads that each of the factions see for the purposes of keeping track of changes to the list. * These squads are considered public "listed" squads - @@ -37,34 +39,40 @@ class SquadService extends Actor { * and may have limited interaction with their squad definition windows.
* key - squad unique number; value - the squad's unique identifier number */ - private val publishedLists : TrieMap[PlanetSideEmpire.Value, ListBuffer[PlanetSideGUID]] = TrieMap[PlanetSideEmpire.Value, ListBuffer[PlanetSideGUID]]( - PlanetSideEmpire.TR -> ListBuffer.empty, - PlanetSideEmpire.NC -> ListBuffer.empty, - PlanetSideEmpire.VS -> ListBuffer.empty - ) + private val publishedLists: TrieMap[PlanetSideEmpire.Value, ListBuffer[PlanetSideGUID]] = + TrieMap[PlanetSideEmpire.Value, ListBuffer[PlanetSideGUID]]( + PlanetSideEmpire.TR -> ListBuffer.empty, + PlanetSideEmpire.NC -> ListBuffer.empty, + PlanetSideEmpire.VS -> ListBuffer.empty + ) /** * key - a unique character identifier number; value - the squad to which this player is a member */ - private var memberToSquad : mutable.LongMap[Squad] = mutable.LongMap[Squad]() + private var memberToSquad: mutable.LongMap[Squad] = mutable.LongMap[Squad]() + /** * key - a unique character identifier number; value - the active invitation object */ - private val invites : mutable.LongMap[Invitation] = mutable.LongMap[Invitation]() + private val invites: mutable.LongMap[Invitation] = mutable.LongMap[Invitation]() + /** * key - a unique character identifier number; value - a list of inactive invitation objects waiting to be resolved */ - private val queuedInvites : mutable.LongMap[List[Invitation]] = mutable.LongMap[List[Invitation]]() + private val queuedInvites: mutable.LongMap[List[Invitation]] = mutable.LongMap[List[Invitation]]() + /** * The given player has refused participation into this other player's squad.
* key - a unique character identifier number; value - a list of unique character identifier numbers */ - private val refused : mutable.LongMap[List[Long]] = mutable.LongMap[List[Long]]() + private val refused: mutable.LongMap[List[Long]] = mutable.LongMap[List[Long]]() + /** * Players who are interested in updated details regarding a certain squad though they may not be a member of the squad.
* key - unique character identifier number; value - a squad identifier number */ - private val continueToMonitorDetails : mutable.LongMap[PlanetSideGUID] = mutable.LongMap[PlanetSideGUID]() + private val continueToMonitorDetails: mutable.LongMap[PlanetSideGUID] = mutable.LongMap[PlanetSideGUID]() + /** * A placeholder for an absent active invite that has not (yet) been accepted or rejected, * equal to the then-current active invite. @@ -73,7 +81,7 @@ class SquadService extends Actor { * Cleared when the next queued invite becomes active.
* key - unique character identifier number; value, unique character identifier number */ - private val previousInvites : mutable.LongMap[Invitation] = mutable.LongMap[Invitation]() + private val previousInvites: mutable.LongMap[Invitation] = mutable.LongMap[Invitation]() /** * This is a formal `ActorEventBus` object that is reserved for faction-wide messages and squad-specific messages. @@ -92,6 +100,7 @@ class SquadService extends Actor { * @see `Service.Leave` */ private val SquadEvents = new GenericEventBus[SquadServiceResponse] + /** * This collection contains the message-sending contact reference for individuals. * When the user joins the `SquadService` with a `Service.Join` message @@ -102,19 +111,19 @@ class SquadService extends Actor { * key - unique character identifier number; value - `ActorRef` reference for that character * @see `Service.Join` */ - private val UserEvents : mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + private val UserEvents: mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() - private [this] val log = org.log4s.getLogger - - private def debug(msg : String) : Unit = { + private[this] val log = org.log4s.getLogger + + private def debug(msg: String): Unit = { log.info(msg) } - override def preStart : Unit = { + override def preStart: Unit = { log.info("Starting...") } - override def postStop() : Unit = { + override def postStop(): Unit = { //invitations invites.clear() queuedInvites.clear() @@ -122,13 +131,15 @@ class SquadService extends Actor { refused.clear() continueToMonitorDetails.clear() //squads and members (users) - squadFeatures.foreach { case(_, features) => - CloseSquad(features.Squad) + squadFeatures.foreach { + case (_, features) => + CloseSquad(features.Squad) } memberToSquad.clear() publishedLists.clear() - UserEvents.foreach { case(_, actor) => - SquadEvents.unsubscribe(actor) + UserEvents.foreach { + case (_, actor) => + SquadEvents.unsubscribe(actor) } UserEvents.clear() } @@ -140,13 +151,12 @@ class SquadService extends Actor { * before it wraps back around to 1. * @return the current squad unique identifier number */ - def GetNextSquadId() : PlanetSideGUID = { + def GetNextSquadId(): PlanetSideGUID = { val out = sid - val j = sid + 1 - if(j == 65536) { + val j = sid + 1 + if (j == 65536) { sid = 1 - } - else { + } else { sid = j } PlanetSideGUID(out) @@ -156,12 +166,11 @@ class SquadService extends Actor { * Set the unique squad identifier back to the start (1) if no squads are active and no players are logged on. * @return `true`, if the identifier is reset; `false`, otherwise */ - def TryResetSquadId() : Boolean = { - if(UserEvents.isEmpty && squadFeatures.isEmpty) { + def TryResetSquadId(): Boolean = { + if (UserEvents.isEmpty && squadFeatures.isEmpty) { sid = 1 true - } - else { + } else { false } } @@ -171,29 +180,31 @@ class SquadService extends Actor { * @param id the squad unique identifier number * @return the discovered squad, or `None` */ - def GetSquad(id : PlanetSideGUID) : Option[Squad] = squadFeatures.get(id) match { - case Some(features) => Some(features.Squad) - case None => None - } + def GetSquad(id: PlanetSideGUID): Option[Squad] = + squadFeatures.get(id) match { + case Some(features) => Some(features.Squad) + case None => None + } /** * If this player is a member of any squad, discover that squad. * @param player the potential member * @return the discovered squad, or `None` */ - def GetParticipatingSquad(player : Player) : Option[Squad] = GetParticipatingSquad(player.CharId) + def GetParticipatingSquad(player: Player): Option[Squad] = GetParticipatingSquad(player.CharId) /** * If the player associated with this unique character identifier number is a member of any squad, discover that squad. * @param charId the potential member identifier * @return the discovered squad, or `None` */ - def GetParticipatingSquad(charId : Long) : Option[Squad] = memberToSquad.get(charId) match { - case opt @ Some(_) => - opt - case None => - None - } + def GetParticipatingSquad(charId: Long): Option[Squad] = + memberToSquad.get(charId) match { + case opt @ Some(_) => + opt + case None => + None + } /** * If this player is a member of any squad, discover that squad. @@ -204,7 +215,7 @@ class SquadService extends Actor { * the expectation is that the provided squad is a known participating squad * @return the discovered squad, or `None` */ - def GetLeadingSquad(player : Player, opt : Option[Squad]) : Option[Squad] = GetLeadingSquad(player.CharId, opt) + def GetLeadingSquad(player: Player, opt: Option[Squad]): Option[Squad] = GetLeadingSquad(player.CharId, opt) /** * If the player associated with this unique character identifier number is the leader of any squad, discover that squad. @@ -215,17 +226,17 @@ class SquadService extends Actor { * the expectation is that the provided squad is a known participating squad * @return the discovered squad, or `None` */ - def GetLeadingSquad(charId : Long, opt : Option[Squad]) : Option[Squad] = opt.orElse(GetParticipatingSquad(charId)) match { - case Some(squad) => - if(squad.Leader.CharId == charId) { - Some(squad) - } - else { + def GetLeadingSquad(charId: Long, opt: Option[Squad]): Option[Squad] = + opt.orElse(GetParticipatingSquad(charId)) match { + case Some(squad) => + if (squad.Leader.CharId == charId) { + Some(squad) + } else { + None + } + case _ => None - } - case _ => - None - } + } /** * Overloaded message-sending operation. @@ -233,9 +244,10 @@ class SquadService extends Actor { * @param to an `ActorRef` which to send the message * @param msg a message that can be stored in a `SquadServiceResponse` object */ - def Publish(to : ActorRef, msg : SquadResponse.Response) : Unit = { + def Publish(to: ActorRef, msg: SquadResponse.Response): Unit = { Publish(to, msg, Nil) } + /** * Overloaded message-sending operation. * The `Actor` version wraps around the expected `!` functionality. @@ -244,18 +256,20 @@ class SquadService extends Actor { * @param excluded a group of character identifier numbers who should not receive the message * (resolved at destination) */ - def Publish(to : ActorRef, msg : SquadResponse.Response, excluded : Iterable[Long]) : Unit = { + def Publish(to: ActorRef, msg: SquadResponse.Response, excluded: Iterable[Long]): Unit = { to ! SquadServiceResponse("", excluded, msg) } + /** * Overloaded message-sending operation. * Always publishes on the `SquadEvents` object. * @param to a faction affiliation used as the channel for the message * @param msg a message that can be stored in a `SquadServiceResponse` object */ - def Publish(to : PlanetSideEmpire.Type, msg : SquadResponse.Response) : Unit = { + def Publish(to: PlanetSideEmpire.Type, msg: SquadResponse.Response): Unit = { Publish(to, msg, Nil) } + /** * Overloaded message-sending operation. * Always publishes on the `SquadEvents` object. @@ -264,9 +278,10 @@ class SquadService extends Actor { * @param excluded a group of character identifier numbers who should not receive the message * (resolved at destination) */ - def Publish(to : PlanetSideEmpire.Type, msg : SquadResponse.Response, excluded : Iterable[Long]) : Unit = { + def Publish(to: PlanetSideEmpire.Type, msg: SquadResponse.Response, excluded: Iterable[Long]): Unit = { SquadEvents.publish(SquadServiceResponse(s"/$to/Squad", excluded, msg)) } + /** * Overloaded message-sending operation. * Strings come in three accepted patterns. @@ -276,9 +291,10 @@ class SquadService extends Actor { * @param to a string used as the channel for the message * @param msg a message that can be stored in a `SquadServiceResponse` object */ - def Publish(to : String, msg : SquadResponse.Response) : Unit = { + def Publish(to: String, msg: SquadResponse.Response): Unit = { Publish(to, msg, Nil) } + /** * Overloaded message-sending operation. * Strings come in three accepted patterns. @@ -290,7 +306,7 @@ class SquadService extends Actor { * @param excluded a group of character identifier numbers who should not receive the message * (resolved at destination, usually) */ - def Publish(to : String, msg : SquadResponse.Response, excluded : Iterable[Long]) : Unit = { + def Publish(to: String, msg: SquadResponse.Response, excluded: Iterable[Long]): Unit = { to match { case str if "TRNCVS".indexOf(str) > -1 || str.matches("(TR|NC|VS)-Squad\\d+") => SquadEvents.publish(SquadServiceResponse(s"/$str/Squad", excluded, msg)) @@ -300,13 +316,14 @@ class SquadService extends Actor { log.error(s"Publish(String): subscriber information is an unhandled format - $to") } } + /** * Overloaded message-sending operation. * Always publishes on the `ActorRef` objects retained by the `UserEvents` object. * @param to a unique character identifier used as the channel for the message * @param msg a message that can be stored in a `SquadServiceResponse` object */ - def Publish(to : Long, msg : SquadResponse.Response) : Unit = { + def Publish(to: Long, msg: SquadResponse.Response): Unit = { UserEvents.get(to) match { case Some(user) => user ! SquadServiceResponse("", msg) @@ -314,6 +331,7 @@ class SquadService extends Actor { log.error(s"Publish(Long): subscriber information can not be found - $to") } } + /** * Overloaded message-sending operation. * Always publishes on the `ActorRef` objects retained by the `UserEvents` object. @@ -321,11 +339,12 @@ class SquadService extends Actor { * @param msg a message that can be stored in a `SquadServiceResponse` object * @param excluded a group of character identifier numbers who should not receive the message */ - def Publish(to : Long, msg : SquadResponse.Response, excluded : Iterable[Long]) : Unit = { - if(!excluded.exists(_ == to)) { + def Publish(to: Long, msg: SquadResponse.Response, excluded: Iterable[Long]): Unit = { + if (!excluded.exists(_ == to)) { Publish(to, msg) } } + /** * Overloaded message-sending operation. * No message can be sent using this distinction. @@ -334,9 +353,10 @@ class SquadService extends Actor { * but is not handled as such * @param msg a message that can be stored in a `SquadServiceResponse` object */ - def Publish[ANY >: Any](to : ANY, msg : SquadResponse.Response) : Unit = { + def Publish[ANY >: Any](to: ANY, msg: SquadResponse.Response): Unit = { log.warn(s"Publish(Any): subscriber information is an unhandled format - $to") } + /** * Overloaded message-sending operation. * No message can be sent using this distinction. @@ -346,15 +366,15 @@ class SquadService extends Actor { * @param msg a message that can be stored in a `SquadServiceResponse` object * @param excluded a group of character identifier numbers who should not receive the message */ - def Publish[ANY >: Any](to : ANY, msg : SquadResponse.Response, excluded : Iterable[Long]) : Unit = { + def Publish[ANY >: Any](to: ANY, msg: SquadResponse.Response, excluded: Iterable[Long]): Unit = { log.warn(s"Publish(Any): subscriber information is an unhandled format - $to") } - def receive : Receive = { + def receive: Receive = { //subscribe to a faction's channel - necessary to receive updates about listed squads case Service.Join(faction) if "TRNCVS".indexOf(faction) > -1 => val path = s"/$faction/Squad" - val who = sender() + val who = sender() debug(s"$who has joined $path") SquadEvents.subscribe(who, path) @@ -362,951 +382,1141 @@ class SquadService extends Actor { case Service.Join(char_id) => try { val longCharId = char_id.toLong - val path = s"/$char_id/Squad" - val who = sender() + val path = s"/$char_id/Squad" + val who = sender() debug(s"$who has joined $path") context.watch(who) UserEvents += longCharId -> who refused(longCharId) = Nil - } - catch { - case _ : ClassCastException => + } catch { + case _: ClassCastException => log.warn(s"Service.Join: tried $char_id as a unique character identifier, but it could not be casted") - case e : Exception => + case e: Exception => log.error(s"Service.Join: unexpected exception using $char_id as data - ${e.getLocalizedMessage}") e.printStackTrace() } case Service.Leave(Some(faction)) if "TRNCVS".indexOf(faction) > -1 => val path = s"/$faction/Squad" - val who = sender() + val who = sender() debug(s"$who has left $path") SquadEvents.unsubscribe(who, path) case Service.Leave(Some(char_id)) => try { LeaveService(char_id.toLong, sender) - } - catch { - case _ : ClassCastException => + } catch { + case _: ClassCastException => log.warn(s"Service.Leave: tried $char_id as a unique character identifier, but it could not be casted") - case e : Exception => + case e: Exception => log.error(s"Service.Leave: unexpected exception using $char_id as data - ${e.getLocalizedMessage}") e.printStackTrace() } - case Service.Leave(None) | Service.LeaveAll() => UserEvents find { case(_, subscription) => subscription.path.equals(sender.path)} match { - case Some((to, _)) => - LeaveService(to, sender) - case _ => ; - } - - case Terminated(actorRef) => - context.unwatch(actorRef) - UserEvents find { case(_, subscription) => subscription eq actorRef} match { + case Service.Leave(None) | Service.LeaveAll() => + UserEvents find { case (_, subscription) => subscription.path.equals(sender.path) } match { case Some((to, _)) => LeaveService(to, sender) case _ => ; } - case SquadServiceMessage(tplayer, zone, squad_action) => squad_action match { - case SquadAction.InitSquadList() => - Publish( sender, SquadResponse.InitList(PublishedLists(tplayer.Faction)) ) //send initial squad catalog + case Terminated(actorRef) => + context.unwatch(actorRef) + UserEvents find { case (_, subscription) => subscription eq actorRef } match { + case Some((to, _)) => + LeaveService(to, sender) + case _ => ; + } - case SquadAction.InitCharId() => - val charId = tplayer.CharId - memberToSquad.get(charId) match { - case None => ; - case Some(squad) => - val guid = squad.GUID - val toChannel = s"/${squadFeatures(guid).ToChannel}/Squad" - val indices = squad.Membership.zipWithIndex.collect({ case (member, index) if member.CharId != 0 => index }).toList - Publish(charId, SquadResponse.AssociateWithSquad(guid)) - Publish(charId, SquadResponse.Join(squad, indices, toChannel)) - InitSquadDetail(guid, Seq(charId), squad) - InitWaypoints(charId, guid) - } + case SquadServiceMessage(tplayer, zone, squad_action) => + squad_action match { + case SquadAction.InitSquadList() => + Publish(sender, SquadResponse.InitList(PublishedLists(tplayer.Faction))) //send initial squad catalog - case SquadAction.Membership(SquadRequestType.Invite, invitingPlayer, Some(_invitedPlayer), invitedName, _) => - //this is just busy work; for actual joining operations, see SquadRequestType.Accept - (if(invitedName.nonEmpty) { - //validate player with name exists - LivePlayerList.WorldPopulation({ case (_, a : Avatar) => a.name.equalsIgnoreCase(invitedName) && a.faction == tplayer.Faction }).headOption match { - case Some(player) => UserEvents.keys.find(_ == player.CharId) - case None => None + case SquadAction.InitCharId() => + val charId = tplayer.CharId + memberToSquad.get(charId) match { + case None => ; + case Some(squad) => + val guid = squad.GUID + val toChannel = s"/${squadFeatures(guid).ToChannel}/Squad" + val indices = + squad.Membership.zipWithIndex.collect({ case (member, index) if member.CharId != 0 => index }).toList + Publish(charId, SquadResponse.AssociateWithSquad(guid)) + Publish(charId, SquadResponse.Join(squad, indices, toChannel)) + InitSquadDetail(guid, Seq(charId), squad) + InitWaypoints(charId, guid) } - } - else { - //validate player with id exists - LivePlayerList.WorldPopulation({ case (_, a : Avatar) => a.CharId == _invitedPlayer && a.faction == tplayer.Faction }).headOption match { - case Some(player) => Some(_invitedPlayer) - case None => None + + case SquadAction.Membership(SquadRequestType.Invite, invitingPlayer, Some(_invitedPlayer), invitedName, _) => + //this is just busy work; for actual joining operations, see SquadRequestType.Accept + (if (invitedName.nonEmpty) { + //validate player with name exists + LivePlayerList + .WorldPopulation({ + case (_, a: Avatar) => a.name.equalsIgnoreCase(invitedName) && a.faction == tplayer.Faction + }) + .headOption match { + case Some(player) => UserEvents.keys.find(_ == player.CharId) + case None => None + } + } else { + //validate player with id exists + LivePlayerList + .WorldPopulation({ case (_, a: Avatar) => a.CharId == _invitedPlayer && a.faction == tplayer.Faction }) + .headOption match { + case Some(player) => Some(_invitedPlayer) + case None => None + } + }) match { + case Some(invitedPlayer) if invitingPlayer != invitedPlayer => + (memberToSquad.get(invitingPlayer), memberToSquad.get(invitedPlayer)) match { + case (Some(squad1), Some(squad2)) if squad1.GUID == squad2.GUID => + //both players are in the same squad; no need to do anything + + case (Some(squad1), Some(squad2)) + if squad1.Leader.CharId == invitingPlayer && squad2.Leader.CharId == invitedPlayer && + squad1.Size > 1 && squad2.Size > 1 => + //we might do some platoon chicanery with this case later + //TODO platoons + + case (Some(squad1), Some(squad2)) if squad2.Size == 1 => + //both players belong to squads, but the invitedPlayer's squad (squad2) is underutilized by comparison + //treat the same as "the classic situation" using squad1 + if (!Refused(invitedPlayer).contains(invitingPlayer)) { + val charId = tplayer.CharId + AddInviteAndRespond( + invitedPlayer, + VacancyInvite(charId, tplayer.Name, squad1.GUID), + charId, + tplayer.Name + ) + } + + case (Some(squad1), Some(squad2)) if squad1.Size == 1 => + //both players belong to squads, but the invitingPlayer's squad is underutilized by comparison + //treat the same as "indirection ..." using squad2 + val leader = squad2.Leader.CharId + if (Refused(invitingPlayer).contains(invitedPlayer)) { + debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") + } else if (Refused(invitingPlayer).contains(leader)) { + debug(s"$invitedPlayer repeated a previous refusal to $leader's invitation offer") + } else { + AddInviteAndRespond( + leader, + IndirectInvite(tplayer, squad2.GUID), + invitingPlayer, + tplayer.Name + ) + } + + case (Some(squad), None) => + //the classic situation + if (!Refused(invitedPlayer).contains(invitingPlayer)) { + AddInviteAndRespond( + invitedPlayer, + VacancyInvite(tplayer.CharId, tplayer.Name, squad.GUID), + invitingPlayer, + tplayer.Name + ) + } else { + debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") + } + + case (None, Some(squad)) => + //indirection; we're trying to invite ourselves to someone else's squad + val leader = squad.Leader.CharId + if (Refused(invitingPlayer).contains(invitedPlayer)) { + debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") + } else if (Refused(invitingPlayer).contains(leader)) { + debug(s"$invitedPlayer repeated a previous refusal to $leader's invitation offer") + } else { + AddInviteAndRespond( + squad.Leader.CharId, + IndirectInvite(tplayer, squad.GUID), + invitingPlayer, + tplayer.Name + ) + } + + case (None, None) => + //neither the invited player nor the inviting player belong to any squad + if (Refused(invitingPlayer).contains(invitedPlayer)) { + debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") + } else if (Refused(invitedPlayer).contains(invitingPlayer)) { + debug(s"$invitingPlayer repeated a previous refusal to $invitingPlayer's invitation offer") + } else { + AddInviteAndRespond( + invitedPlayer, + SpontaneousInvite(tplayer), + invitingPlayer, + tplayer.Name + ) + } + + case _ => ; + } + case _ => ; } - }) match { - case Some(invitedPlayer) if invitingPlayer != invitedPlayer => - (memberToSquad.get(invitingPlayer), memberToSquad.get(invitedPlayer)) match { - case (Some(squad1), Some(squad2)) if squad1.GUID == squad2.GUID => - //both players are in the same squad; no need to do anything - case (Some(squad1), Some(squad2)) if squad1.Leader.CharId == invitingPlayer && squad2.Leader.CharId == invitedPlayer && - squad1.Size > 1 && squad2.Size > 1 => - //we might do some platoon chicanery with this case later - //TODO platoons - - case (Some(squad1), Some(squad2)) if squad2.Size == 1 => - //both players belong to squads, but the invitedPlayer's squad (squad2) is underutilized by comparison - //treat the same as "the classic situation" using squad1 - if(!Refused(invitedPlayer).contains(invitingPlayer)) { - val charId = tplayer.CharId - AddInviteAndRespond( - invitedPlayer, - VacancyInvite(charId, tplayer.Name, squad1.GUID), - charId, - tplayer.Name - ) - } - - case (Some(squad1), Some(squad2)) if squad1.Size == 1 => - //both players belong to squads, but the invitingPlayer's squad is underutilized by comparison - //treat the same as "indirection ..." using squad2 - val leader = squad2.Leader.CharId - if(Refused(invitingPlayer).contains(invitedPlayer)) { - debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") - } - else if(Refused(invitingPlayer).contains(leader)) { - debug(s"$invitedPlayer repeated a previous refusal to $leader's invitation offer") - } - else { - AddInviteAndRespond( - leader, - IndirectInvite(tplayer, squad2.GUID), - invitingPlayer, - tplayer.Name - ) - } - - case (Some(squad), None) => - //the classic situation - if(!Refused(invitedPlayer).contains(invitingPlayer)) { - AddInviteAndRespond( - invitedPlayer, - VacancyInvite(tplayer.CharId, tplayer.Name, squad.GUID), - invitingPlayer, - tplayer.Name - ) - } - else { - debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") - } - - case (None, Some(squad)) => - //indirection; we're trying to invite ourselves to someone else's squad - val leader = squad.Leader.CharId - if(Refused(invitingPlayer).contains(invitedPlayer)) { - debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") - } - else if(Refused(invitingPlayer).contains(leader)) { - debug(s"$invitedPlayer repeated a previous refusal to $leader's invitation offer") - } - else { - AddInviteAndRespond( - squad.Leader.CharId, - IndirectInvite(tplayer, squad.GUID), - invitingPlayer, - tplayer.Name - ) - } - - case (None, None) => - //neither the invited player nor the inviting player belong to any squad - if(Refused(invitingPlayer).contains(invitedPlayer)) { - debug(s"$invitedPlayer repeated a previous refusal to $invitingPlayer's invitation offer") - } - else if(Refused(invitedPlayer).contains(invitingPlayer)) { - debug(s"$invitingPlayer repeated a previous refusal to $invitingPlayer's invitation offer") - } - else { - AddInviteAndRespond( - invitedPlayer, - SpontaneousInvite(tplayer), - invitingPlayer, - tplayer.Name - ) - } - - case _ => ; - } - case _ => ; - } - - case SquadAction.Membership(SquadRequestType.ProximityInvite, invitingPlayer, _, _, _) => - GetLeadingSquad(invitingPlayer, None) match { - case Some(squad) => - val sguid = squad.GUID - val features = squadFeatures(sguid) - features.SearchForRole match { - case Some(-1) => - //we've already issued a proximity invitation; no need to do another - debug("ProximityInvite: wait for existing proximity invitations to clear") - case _ => - val outstandingActiveInvites = features.SearchForRole match { - case Some(pos) => - RemoveQueuedInvitesForSquadAndPosition(sguid, pos) - invites.collect { case(charId, LookingForSquadRoleInvite(_,_, squad_guid, role)) if squad_guid == sguid && role == pos => charId } - case None => - List.empty[Long] - } - val faction = squad.Faction - val center = tplayer.Position - val excusedInvites = features.Refuse - //positions that can be recruited to - val positions = squad.Membership.zipWithIndex - .collect { case(member, index) if member.CharId == 0 && squad.Availability(index) => member } - /* + case SquadAction.Membership(SquadRequestType.ProximityInvite, invitingPlayer, _, _, _) => + GetLeadingSquad(invitingPlayer, None) match { + case Some(squad) => + val sguid = squad.GUID + val features = squadFeatures(sguid) + features.SearchForRole match { + case Some(-1) => + //we've already issued a proximity invitation; no need to do another + debug("ProximityInvite: wait for existing proximity invitations to clear") + case _ => + val outstandingActiveInvites = features.SearchForRole match { + case Some(pos) => + RemoveQueuedInvitesForSquadAndPosition(sguid, pos) + invites.collect { + case (charId, LookingForSquadRoleInvite(_, _, squad_guid, role)) + if squad_guid == sguid && role == pos => + charId + } + case None => + List.empty[Long] + } + val faction = squad.Faction + val center = tplayer.Position + val excusedInvites = features.Refuse + //positions that can be recruited to + val positions = squad.Membership.zipWithIndex + .collect { case (member, index) if member.CharId == 0 && squad.Availability(index) => member } + /* players who are: - the same faction as the squad - have Looking For Squad enabled - do not currently belong to a squad - are denied the opportunity to be invited - are a certain distance from the squad leader (n < 25m) - */ - (zone.LivePlayers - .collect { case player - if player.Faction == faction && player.LFS && - (memberToSquad.get(player.CharId).isEmpty || memberToSquad(player.CharId).Size == 1) && - !excusedInvites.contains(player.CharId) && Refused(player.CharId).contains(squad.Leader.CharId) && - Vector3.DistanceSquared(player.Position, center) < 625f && - { - positions - .map { role => - val requirementsToMeet = role.Requirements - requirementsToMeet.intersect(player.Certifications) == requirementsToMeet - } - .foldLeft(false)(_ || _) - } => player.CharId - } - .partition { charId => outstandingActiveInvites.exists(_ == charId) } match { - case (Nil, Nil) => - //no one found - outstandingActiveInvites foreach RemoveInvite - features.ProxyInvites = Nil - None - case (outstandingPlayerList, invitedPlayerList) => - //players who were actively invited for the previous position and are eligible for the new position - features.SearchForRole = Some(-1) - outstandingPlayerList.foreach { charId => - val bid = invites(charId).asInstanceOf[LookingForSquadRoleInvite] - invites(charId) = ProximityInvite(bid.char_id, bid.name, sguid) + */ + (zone.LivePlayers + .collect { + case player + if player.Faction == faction && player.LFS && + (memberToSquad.get(player.CharId).isEmpty || memberToSquad(player.CharId).Size == 1) && + !excusedInvites + .contains(player.CharId) && Refused(player.CharId).contains(squad.Leader.CharId) && + Vector3.DistanceSquared(player.Position, center) < 625f && { + positions + .map { role => + val requirementsToMeet = role.Requirements + requirementsToMeet.intersect(player.Certifications) == requirementsToMeet + } + .foldLeft(false)(_ || _) + } => + player.CharId } - //players who were actively invited for the previous position but are ineligible for the new position - (features.ProxyInvites filterNot (outstandingPlayerList contains)) foreach RemoveInvite - features.ProxyInvites = outstandingPlayerList ++ invitedPlayerList - Some(invitedPlayerList) - }) match { - //add invitations for position in squad - case Some(invitedPlayers) => - val invitingPlayer = tplayer.CharId - val name = tplayer.Name - invitedPlayers.foreach { invitedPlayer => - AddInviteAndRespond( - invitedPlayer, - ProximityInvite(invitingPlayer, name, sguid), - invitingPlayer, - name - ) - } - case None => ; - } - } - - case None => - } - - case SquadAction.Membership(SquadRequestType.Accept, invitedPlayer, _, _, _) => - val acceptedInvite = RemoveInvite(invitedPlayer) - acceptedInvite match { - case Some(RequestRole(petitioner, guid, position)) if EnsureEmptySquad(petitioner.CharId) && squadFeatures.get(guid).nonEmpty => - //player requested to join a squad's specific position - //invitedPlayer is actually the squad leader; petitioner is the actual "invitedPlayer" - val features = squadFeatures(guid) - JoinSquad(petitioner, features.Squad, position) - RemoveInvitesForSquadAndPosition(guid, position) - - case Some(IndirectInvite(recruit, guid)) if EnsureEmptySquad(recruit.CharId) => - //tplayer / invitedPlayer is actually the squad leader - val recruitCharId = recruit.CharId - HandleVacancyInvite(guid, recruitCharId, invitedPlayer, recruit) match { - case Some((squad, line)) => - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitedPlayer, Some(recruitCharId), recruit.Name, true, Some(None))) - JoinSquad(recruit, squad, line) - RemoveInvitesForSquadAndPosition(squad.GUID, line) - //since we are the squad leader, we do not want to brush off our queued squad invite tasks - case _ => ; - } - - case Some(VacancyInvite(invitingPlayer, _, guid)) if EnsureEmptySquad(invitedPlayer) => - //accepted an invitation to join an existing squad - HandleVacancyInvite(guid, invitedPlayer, invitingPlayer, tplayer) match { - case Some((squad, line)) => - Publish(invitingPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitingPlayer, Some(invitedPlayer), tplayer.Name, false, Some(None))) - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitedPlayer, Some(invitingPlayer), "", true, Some(None))) - JoinSquad(tplayer, squad, line) - RemoveQueuedInvites(invitedPlayer) //TODO deal with these somehow - RemoveInvitesForSquadAndPosition(squad.GUID, line) - case _ => ; - } - - case Some(SpontaneousInvite(invitingPlayer)) if EnsureEmptySquad(invitedPlayer) => - //originally, we were invited by someone into a new squad they would form - val invitingPlayerCharId = invitingPlayer.CharId - (GetParticipatingSquad(invitingPlayer) match { - case Some(participating) => - //invitingPlayer became part of a squad while invited player was answering the original summons - Some(participating) - case _ => - //generate a new squad, with invitingPlayer as the leader - val squad = StartSquad(invitingPlayer) - squad.Task = s"${invitingPlayer.Name}'s Squad" - Publish(invitingPlayerCharId, SquadResponse.AssociateWithSquad(squad.GUID)) - Some(squad) - }) match { - case Some(squad) => - HandleVacancyInvite(squad, tplayer.CharId, invitingPlayerCharId, tplayer) match { - case Some((_, line)) => - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitedPlayer, Some(invitingPlayerCharId), "", true, Some(None))) - Publish(invitingPlayerCharId, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitingPlayerCharId, Some(invitedPlayer), tplayer.Name, false, Some(None))) - JoinSquad(tplayer, squad, line) - RemoveQueuedInvites(tplayer.CharId) //TODO deal with these somehow - case _ => ; - } - case _ => ; - } - - case Some(LookingForSquadRoleInvite(invitingPlayer, name, guid, position)) if EnsureEmptySquad(invitedPlayer) => - squadFeatures.get(guid) match { - case Some(features) if JoinSquad(tplayer, features.Squad, position) => - //join this squad - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitedPlayer, Some(invitingPlayer), "", true, Some(None))) - Publish(invitingPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitingPlayer, Some(invitedPlayer), tplayer.Name, false, Some(None))) - RemoveQueuedInvites(tplayer.CharId) - features.ProxyInvites = Nil - features.SearchForRole = None - RemoveInvitesForSquadAndPosition(guid, position) - - case Some(features) => - //can not join squad; position is unavailable or other reasons block action - features.ProxyInvites = features.ProxyInvites.filterNot(_ == invitedPlayer) - - case _ => - //squad no longer exists? - } - - case Some(ProximityInvite(invitingPlayer, _, guid)) if EnsureEmptySquad(invitedPlayer) => - squadFeatures.get(guid) match { - case Some(features) => - val squad = features.Squad - if(squad.Size < squad.Capacity) { - val positions = (for { - (member, index) <- squad.Membership.zipWithIndex - if squad.isAvailable(index, tplayer.Certifications) - } yield (index, member.Requirements.size)) - .toList - .sortBy({ case (_, reqs) => reqs }) - ((positions.headOption, positions.lastOption) match { - case (Some((first, size1)), Some((_, size2))) if size1 == size2 => Some(first) //join the first available position - case (Some(_), Some((last, _))) => Some(last) //join the most demanding position - case _ => None + .partition { charId => outstandingActiveInvites.exists(_ == charId) } match { + case (Nil, Nil) => + //no one found + outstandingActiveInvites foreach RemoveInvite + features.ProxyInvites = Nil + None + case (outstandingPlayerList, invitedPlayerList) => + //players who were actively invited for the previous position and are eligible for the new position + features.SearchForRole = Some(-1) + outstandingPlayerList.foreach { charId => + val bid = invites(charId).asInstanceOf[LookingForSquadRoleInvite] + invites(charId) = ProximityInvite(bid.char_id, bid.name, sguid) + } + //players who were actively invited for the previous position but are ineligible for the new position + (features.ProxyInvites filterNot (outstandingPlayerList contains)) foreach RemoveInvite + features.ProxyInvites = outstandingPlayerList ++ invitedPlayerList + Some(invitedPlayerList) }) match { - case Some(position) if JoinSquad(tplayer, squad, position) => - //join this squad - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitedPlayer, Some(invitingPlayer), "", true, Some(None))) - Publish(invitingPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitingPlayer, Some(invitedPlayer), tplayer.Name, false, Some(None))) - RemoveQueuedInvites(invitedPlayer) - features.ProxyInvites = features.ProxyInvites.filterNot(_ == invitedPlayer) - case _ => + //add invitations for position in squad + case Some(invitedPlayers) => + val invitingPlayer = tplayer.CharId + val name = tplayer.Name + invitedPlayers.foreach { invitedPlayer => + AddInviteAndRespond( + invitedPlayer, + ProximityInvite(invitingPlayer, name, sguid), + invitingPlayer, + name + ) + } + case None => ; } - } - if(features.ProxyInvites.isEmpty) { - //all invitations exhausted; this invitation period is concluded - features.SearchForRole = None - } - else if(squad.Size == squad.Capacity) { - //all available squad positions filled; terminate all remaining invitations - RemoveProximityInvites(guid) - RemoveAllInvitesToSquad(guid) - //RemoveAllInvitesWithPlayer(invitingPlayer) - } - - case _ => - //squad no longer exists? - } - - case _ => - //the invite either timed-out or was withdrawn or is now invalid - (previousInvites.get(invitedPlayer) match { - case Some(SpontaneousInvite(leader)) => (leader.CharId, leader.Name) - case Some(VacancyInvite(charId, name, _)) => (charId, name) - case Some(ProximityInvite(charId, name, _)) => (charId, name) - case Some(LookingForSquadRoleInvite(charId, name, _, _)) => (charId, name) - case _ => (0L, "") - }) match { - case (0L, "") => ; - case (charId, name) => - Publish(charId, SquadResponse.Membership(SquadResponseType.Cancel, 0, 0, charId, Some(0L), name, false, Some(None))) - } - } - NextInviteAndRespond(invitedPlayer) - - case SquadAction.Membership(SquadRequestType.Leave, actingPlayer, _leavingPlayer, name, _) => - GetParticipatingSquad(actingPlayer) match { - case Some(squad) => - val leader = squad.Leader.CharId - (if(name.nonEmpty) { - //validate player with name - LivePlayerList.WorldPopulation({ case (_, a : Avatar) => a.name.equalsIgnoreCase(name) }).headOption match { - case Some(a) => UserEvents.keys.find(_ == a.CharId) - case None => None } - } - else { - //validate player with id - _leavingPlayer match { - case Some(id) => UserEvents.keys.find(_ == id) - case None => None - } - }) match { - case out @ Some(leavingPlayer) if GetParticipatingSquad(leavingPlayer).contains(squad) => //kicked player must be in the same squad - if(actingPlayer == leader) { - if(leavingPlayer == leader || squad.Size == 2) { - //squad leader is leaving his own squad, so it will be disbanded - //OR squad is only composed of two people, so it will be closed-out when one of them leaves - DisbandSquad(squad) - } - else { - //kicked by the squad leader - Publish(leavingPlayer, SquadResponse.Membership(SquadResponseType.Leave, 0, 0, leavingPlayer, Some(leader), tplayer.Name, false, Some(None))) - Publish(leader, SquadResponse.Membership(SquadResponseType.Leave, 0, 0, leader, Some(leavingPlayer), "", true, Some(None))) - squadFeatures(squad.GUID).Refuse = leavingPlayer - LeaveSquad(leavingPlayer, squad) - } - } - else if(leavingPlayer == actingPlayer) { - if(squad.Size == 2) { - //squad is only composed of two people, so it will be closed-out when one of them leaves - DisbandSquad(squad) - } - else { - //leaving the squad of own accord - LeaveSquad(actingPlayer, squad) - } - } - case _ => ; - } - case _ => ; - } - - case SquadAction.Membership(SquadRequestType.Reject, rejectingPlayer, _, _, _) => - val rejectedBid = RemoveInvite(rejectingPlayer) - //(A, B) -> person who made the rejection, person who was rejected - (rejectedBid match { - case Some(SpontaneousInvite(leader)) => - //rejectingPlayer is the would-be squad member; the squad leader's request was rejected - val invitingPlayerCharId = leader.CharId - Refused(rejectingPlayer, invitingPlayerCharId) - (Some(rejectingPlayer), Some(invitingPlayerCharId)) - - case Some(VacancyInvite(leader, _, guid)) - if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => - //rejectingPlayer is the would-be squad member; the squad leader's request was rejected - Refused(rejectingPlayer, leader) - (Some(rejectingPlayer), Some(leader)) - - case Some(ProximityInvite(_, _, guid)) - if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => - //rejectingPlayer is the would-be squad member; the squad leader's request was rejected - val features = squadFeatures(guid) - features.Refuse = rejectingPlayer //do not bother this player anymore - if((features.ProxyInvites = features.ProxyInvites.filterNot(_ == rejectingPlayer)).isEmpty) { - features.SearchForRole = None - } - (None, None) - - case Some(LookingForSquadRoleInvite(leader, _, guid, _)) - if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => - //rejectingPlayer is the would-be squad member; the squad leader's request was rejected - Refused(rejectingPlayer, leader) - val features = squadFeatures(guid) - features.Refuse = rejectingPlayer - if((features.ProxyInvites = features.ProxyInvites.filterNot(_ == rejectingPlayer)).isEmpty) { - features.SearchForRole = None - } - (None, None) - - case Some(RequestRole(_, guid, _)) - if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId == rejectingPlayer => - //rejectingPlayer is the squad leader; candidate is the would-be squad member who was rejected - val features = squadFeatures(guid) - features.Refuse = rejectingPlayer - (Some(rejectingPlayer), None) - - case _ => ; - (None, None) - }) match { - case (Some(rejected), Some(invited)) => - Publish(rejected, SquadResponse.Membership(SquadResponseType.Reject, 0, 0, rejected, Some(invited), "", true, Some(None))) - Publish(invited, SquadResponse.Membership(SquadResponseType.Reject, 0, 0, invited, Some(rejected), tplayer.Name, false, Some(None))) - case (Some(rejected), None) => - Publish(rejected, SquadResponse.Membership(SquadResponseType.Reject, 0, 0, rejected, Some(rejected), "", true, Some(None))) - case _ => ; - } - NextInviteAndRespond(rejectingPlayer) - - case SquadAction.Membership(SquadRequestType.Disband, char_id, _, _, _) => - GetLeadingSquad(char_id, None) match { - case Some(squad) => - DisbandSquad(squad) - case None => ; - } - - case SquadAction.Membership(SquadRequestType.Cancel, cancellingPlayer, _, _, _) => - //get rid of SpontaneousInvite objects and VacancyInvite objects - invites.collect { - case (id, invite : SpontaneousInvite) if invite.InviterCharId == cancellingPlayer => - RemoveInvite(id) - case (id, invite : VacancyInvite) if invite.InviterCharId == cancellingPlayer => - RemoveInvite(id) - case (id, invite : LookingForSquadRoleInvite) if invite.InviterCharId == cancellingPlayer => - RemoveInvite(id) - } - queuedInvites.foreach { case (id : Long, inviteList) => - val inList = inviteList.filterNot { - case invite : SpontaneousInvite if invite.InviterCharId == cancellingPlayer => true - case invite : VacancyInvite if invite.InviterCharId == cancellingPlayer => true - case invite : LookingForSquadRoleInvite if invite.InviterCharId == cancellingPlayer => true - case _ => false + case None => } - if(inList.isEmpty) { - queuedInvites.remove(id) - } - else { - queuedInvites(id) = inList - } - } - //get rid of ProximityInvite objects - RemoveProximityInvites(cancellingPlayer) - case SquadAction.Membership(SquadRequestType.Promote, promotingPlayer, Some(_promotedPlayer), promotedName, _) => - val promotedPlayer = (if(promotedName.nonEmpty) { - //validate player with name exists - LivePlayerList.WorldPopulation({ case (_, a : Avatar) => a.name == promotedName }).headOption match { - case Some(player) => UserEvents.keys.find(_ == player.CharId) - case None => Some(_promotedPlayer) - } - } - else { - Some(_promotedPlayer) - }) match { - case Some(player) => player - case None => -1L - } - (GetLeadingSquad(promotingPlayer, None), GetParticipatingSquad(promotedPlayer)) match { - case (Some(squad), Some(squad2)) if squad.GUID == squad2.GUID => - val membership = squad.Membership.filter { _member => _member.CharId > 0 } - val leader = squad.Leader - val (member, index) = membership.zipWithIndex.find { case (_member, _) => _member.CharId == promotedPlayer }.get - val features = squadFeatures(squad.GUID) - SwapMemberPosition(leader, member) - //move around invites so that the proper squad leader deals with them - val leaderInvite = invites.remove(promotingPlayer) - val leaderQueuedInvites = queuedInvites.remove(promotingPlayer).toList.flatten - invites.get(promotedPlayer).orElse(previousInvites.get(promotedPlayer)) match { - case Some(_) => - //the promoted player has an active invite; queue these - queuedInvites += promotedPlayer -> (leaderInvite.toList ++ leaderQueuedInvites ++ queuedInvites.remove(promotedPlayer).toList.flatten) - case None if leaderInvite.nonEmpty => - //no active invite for the promoted player, but the leader had an active invite; trade the queued invites - val invitation = leaderInvite.get - AddInviteAndRespond(promotedPlayer, invitation, invitation.InviterCharId, invitation.InviterName) - queuedInvites += promotedPlayer -> (leaderQueuedInvites ++ queuedInvites.remove(promotedPlayer).toList.flatten) - case None => - //no active invites for anyone; assign the first queued invite from the promoting player, if available, and queue the rest - leaderQueuedInvites match { - case Nil => ; - case x :: xs => - AddInviteAndRespond(promotedPlayer, x, x.InviterCharId, x.InviterName) - queuedInvites += promotedPlayer -> (xs ++ queuedInvites.remove(promotedPlayer).toList.flatten) - } - } - debug(s"Promoting player ${leader.Name} to be the leader of ${squad.Task}") - Publish(features.ToChannel, SquadResponse.PromoteMember(squad, promotedPlayer, index, 0)) - if(features.Listed) { - Publish(promotingPlayer, SquadResponse.SetListSquad(PlanetSideGUID(0))) - Publish(promotedPlayer, SquadResponse.SetListSquad(squad.GUID)) - } - UpdateSquadListWhenListed( - features, - SquadInfo().Leader(leader.Name) - ) - UpdateSquadDetail( - squad.GUID, - SquadDetail() - .LeaderCharId(leader.CharId) - .Field3(value = 0L) - .LeaderName(leader.Name) - .Members(List( - SquadPositionEntry(0, SquadPositionDetail().CharId(leader.CharId).Name(leader.Name)), - SquadPositionEntry(index, SquadPositionDetail().CharId(member.CharId).Name(member.Name)) - )) - ) - case _ => ; - } + case SquadAction.Membership(SquadRequestType.Accept, invitedPlayer, _, _, _) => + val acceptedInvite = RemoveInvite(invitedPlayer) + acceptedInvite match { + case Some(RequestRole(petitioner, guid, position)) + if EnsureEmptySquad(petitioner.CharId) && squadFeatures.get(guid).nonEmpty => + //player requested to join a squad's specific position + //invitedPlayer is actually the squad leader; petitioner is the actual "invitedPlayer" + val features = squadFeatures(guid) + JoinSquad(petitioner, features.Squad, position) + RemoveInvitesForSquadAndPosition(guid, position) - case SquadAction.Membership(event, _, _, _, _) => - debug(s"SquadAction.Membership: $event is not yet supported") - - case SquadAction.Waypoint(_, wtype, _, info) => - val playerCharId = tplayer.CharId - (GetLeadingSquad(tplayer, None) match { - case Some(squad) => - info match { - case Some(winfo) => - (Some(squad), AddWaypoint(squad.GUID, wtype, winfo)) - case _ => - RemoveWaypoint(squad.GUID, wtype) - (Some(squad), None) - } - case _ => (None, None) - }) match { - case (Some(squad), Some(_)) => - //waypoint added or updated - Publish( - s"${squadFeatures(squad.GUID).ToChannel}", - SquadResponse.WaypointEvent(WaypointEventAction.Add, playerCharId, wtype, None, info, 1), - Seq(tplayer.CharId) - ) - case (Some(squad), None) => - //waypoint removed - Publish( - s"${squadFeatures(squad.GUID).ToChannel}", - SquadResponse.WaypointEvent(WaypointEventAction.Remove, playerCharId, wtype, None, None, 0), - Seq(tplayer.CharId) - ) - - case msg => - log.warn(s"Unsupported squad waypoint behavior: $msg") - } - - case SquadAction.Definition(guid, line, action) => - import net.psforever.packet.game.SquadAction._ - val pSquadOpt = GetParticipatingSquad(tplayer) - val lSquadOpt = GetLeadingSquad(tplayer, pSquadOpt) - //the following actions can only be performed by a squad's leader - action match { - case SaveSquadFavorite() => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - if(squad.Task.nonEmpty && squad.ZoneId > 0) { - tplayer.SquadLoadouts.SaveLoadout(squad, squad.Task, line) - Publish(sender, SquadResponse.ListSquadFavorite(line, squad.Task)) - } - - case LoadSquadFavorite() => - if(pSquadOpt.isEmpty || pSquadOpt == lSquadOpt) { - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - tplayer.SquadLoadouts.LoadLoadout(line) match { - case Some(loadout : SquadLoadout) if squad.Size == 1 => - SquadService.LoadSquadDefinition(squad, loadout) - UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadService.SquadList.Publish(squad)) - Publish(sender, SquadResponse.AssociateWithSquad(PlanetSideGUID(0))) - InitSquadDetail(PlanetSideGUID(0), Seq(tplayer.CharId), squad) - UpdateSquadDetail(squad) - Publish(sender, SquadResponse.AssociateWithSquad(squad.GUID)) - case _ => - } - } - - case DeleteSquadFavorite() => - tplayer.SquadLoadouts.DeleteLoadout(line) - Publish(sender, SquadResponse.ListSquadFavorite(line, "")) - - case ChangeSquadPurpose(purpose) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Task = purpose - UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Task(purpose)) - UpdateSquadDetail(squad.GUID, SquadDetail().Task(purpose)) - - case ChangeSquadZone(zone_id) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.ZoneId = zone_id.zoneId.toInt - UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().ZoneId(zone_id)) - InitialAssociation(squad) - Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) - UpdateSquadDetail( - squad.GUID, - squad.GUID, - Seq(squad.Leader.CharId), - SquadDetail().ZoneId(zone_id) - ) - - case CloseSquadMemberPosition(position) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Availability.lift(position) match { - case Some(true) if position > 0 => //do not close squad leader position; undefined behavior - squad.Availability.update(position, false) - val memberPosition = squad.Membership(position) - if(memberPosition.CharId > 0) { - LeaveSquad(memberPosition.CharId, squad) - } - UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Capacity(squad.Capacity)) - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail.Closed))) - ) - case Some(_) | None => ; - } - - case AddSquadMemberPosition(position) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Availability.lift(position) match { - case Some(false) => - squad.Availability.update(position, true) - UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Capacity(squad.Capacity)) - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail.Open))) - ) - case Some(true) | None => ; - } - - case ChangeSquadMemberRequirementsRole(position, role) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Availability.lift(position) match { - case Some(true) => - squad.Membership(position).Role = role - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().Role(role)))) - ) - case Some(false) | None => ; - } - - case ChangeSquadMemberRequirementsDetailedOrders(position, orders) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Availability.lift(position) match { - case Some(true) => - squad.Membership(position).Orders = orders - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().DetailedOrders(orders)))) - ) - case Some(false) | None => ; - } - - case ChangeSquadMemberRequirementsCertifications(position, certs) => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - squad.Availability.lift(position) match { - case Some(true) => - squad.Membership(position).Requirements = certs - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().Requirements(certs)))) - ) - case Some(false) | None => ; - } - - case LocationFollowsSquadLead(state) => - val features = squadFeatures(lSquadOpt.getOrElse(StartSquad(tplayer)).GUID) - features.LocationFollowsSquadLead = state - - case AutoApproveInvitationRequests(state) => - val features = squadFeatures(lSquadOpt.getOrElse(StartSquad(tplayer)).GUID) - features.AutoApproveInvitationRequests = state - if(state) { - //allowed auto-approval - resolve the requests (only) - val charId = tplayer.CharId - val (requests, others) = (invites.get(charId).toList ++ queuedInvites.get(charId).toList) - .partition({ case _ : RequestRole => true}) - invites.remove(charId) - queuedInvites.remove(charId) - previousInvites.remove(charId) - requests.foreach { - case request : RequestRole => - JoinSquad(request.player, features.Squad, request.position) + case Some(IndirectInvite(recruit, guid)) if EnsureEmptySquad(recruit.CharId) => + //tplayer / invitedPlayer is actually the squad leader + val recruitCharId = recruit.CharId + HandleVacancyInvite(guid, recruitCharId, invitedPlayer, recruit) match { + case Some((squad, line)) => + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitedPlayer, + Some(recruitCharId), + recruit.Name, + true, + Some(None) + ) + ) + JoinSquad(recruit, squad, line) + RemoveInvitesForSquadAndPosition(squad.GUID, line) + //since we are the squad leader, we do not want to brush off our queued squad invite tasks case _ => ; } - others.collect { case invite : Invitation => invite } match { - case Nil => ; - case x :: Nil => - AddInviteAndRespond(charId, x, x.InviterCharId, x.InviterName) - case x :: xs => - AddInviteAndRespond(charId, x, x.InviterCharId, x.InviterName) - queuedInvites += charId -> xs - } - } - case FindLfsSoldiersForRole(position) => - lSquadOpt match { - case Some(squad) => - val sguid = squad.GUID - val features = squadFeatures(sguid) - features.SearchForRole match { - case Some(-1) => - //a proximity invitation has not yet cleared; nothing will be gained by trying to invite for a specific role - debug("FindLfsSoldiersForRole: waiting for proximity invitations to clear") - case _ => - //either no role has ever been recruited, or some other role has been recruited - //normal LFS recruitment for the given position - val excusedInvites = features.Refuse - val faction = squad.Faction - val requirementsToMeet = squad.Membership(position).Requirements - val outstandingActiveInvites = features.SearchForRole match { - case Some(pos) => - RemoveQueuedInvitesForSquadAndPosition(sguid, pos) - invites.collect { case(charId, LookingForSquadRoleInvite(_,_, squad_guid, role)) if squad_guid == sguid && role == pos => charId } - case None => - List.empty[Long] - } - features.SearchForRole = position - //this will update the role entry in the GUI to visually indicate being searched for; only one will be displayed at a time - Publish( - tplayer.CharId, - SquadResponse.Detail( - sguid, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().CharId(char_id = 0L).Name(name = "")))) - ) + case Some(VacancyInvite(invitingPlayer, _, guid)) if EnsureEmptySquad(invitedPlayer) => + //accepted an invitation to join an existing squad + HandleVacancyInvite(guid, invitedPlayer, invitingPlayer, tplayer) match { + case Some((squad, line)) => + Publish( + invitingPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitingPlayer, + Some(invitedPlayer), + tplayer.Name, + false, + Some(None) ) - //collect all players that are eligible for invitation to the new position - //divide into players with an active invite (A) and players with a queued invite (B) - //further filter (A) into players whose invitation is renewed (A1) and new invitations (A2) - //TODO only checks the leader's current zone; should check all zones - (zone.LivePlayers - .collect { case player - if !excusedInvites.contains(player.CharId) && - faction == player.Faction && player.LFS && memberToSquad.get(player.CharId).isEmpty && - requirementsToMeet.intersect(player.Certifications) == requirementsToMeet => - player.CharId - } - .partition { charId => outstandingActiveInvites.exists(charId == _) } match { - case (Nil, Nil) => - outstandingActiveInvites foreach RemoveInvite - features.ProxyInvites = Nil - //TODO cancel the LFS search from the server so that the client updates properly; how? - None - case (outstandingPlayerList, invitedPlayerList) => - //players who were actively invited for the previous position and are eligible for the new position - outstandingPlayerList.foreach { charId => - val bid = invites(charId).asInstanceOf[LookingForSquadRoleInvite] - invites(charId) = LookingForSquadRoleInvite(bid.char_id, bid.name, sguid, position) - } - //players who were actively invited for the previous position but are ineligible for the new position - (features.ProxyInvites filterNot (outstandingPlayerList contains)) foreach RemoveInvite - features.ProxyInvites = outstandingPlayerList ++ invitedPlayerList - Some(invitedPlayerList) + ) + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitedPlayer, + Some(invitingPlayer), + "", + true, + Some(None) + ) + ) + JoinSquad(tplayer, squad, line) + RemoveQueuedInvites(invitedPlayer) //TODO deal with these somehow + RemoveInvitesForSquadAndPosition(squad.GUID, line) + case _ => ; + } + + case Some(SpontaneousInvite(invitingPlayer)) if EnsureEmptySquad(invitedPlayer) => + //originally, we were invited by someone into a new squad they would form + val invitingPlayerCharId = invitingPlayer.CharId + (GetParticipatingSquad(invitingPlayer) match { + case Some(participating) => + //invitingPlayer became part of a squad while invited player was answering the original summons + Some(participating) + case _ => + //generate a new squad, with invitingPlayer as the leader + val squad = StartSquad(invitingPlayer) + squad.Task = s"${invitingPlayer.Name}'s Squad" + Publish(invitingPlayerCharId, SquadResponse.AssociateWithSquad(squad.GUID)) + Some(squad) + }) match { + case Some(squad) => + HandleVacancyInvite(squad, tplayer.CharId, invitingPlayerCharId, tplayer) match { + case Some((_, line)) => + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitedPlayer, + Some(invitingPlayerCharId), + "", + true, + Some(None) + ) + ) + Publish( + invitingPlayerCharId, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitingPlayerCharId, + Some(invitedPlayer), + tplayer.Name, + false, + Some(None) + ) + ) + JoinSquad(tplayer, squad, line) + RemoveQueuedInvites(tplayer.CharId) //TODO deal with these somehow + case _ => ; + } + case _ => ; + } + + case Some(LookingForSquadRoleInvite(invitingPlayer, name, guid, position)) + if EnsureEmptySquad(invitedPlayer) => + squadFeatures.get(guid) match { + case Some(features) if JoinSquad(tplayer, features.Squad, position) => + //join this squad + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitedPlayer, + Some(invitingPlayer), + "", + true, + Some(None) + ) + ) + Publish( + invitingPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitingPlayer, + Some(invitedPlayer), + tplayer.Name, + false, + Some(None) + ) + ) + RemoveQueuedInvites(tplayer.CharId) + features.ProxyInvites = Nil + features.SearchForRole = None + RemoveInvitesForSquadAndPosition(guid, position) + + case Some(features) => + //can not join squad; position is unavailable or other reasons block action + features.ProxyInvites = features.ProxyInvites.filterNot(_ == invitedPlayer) + + case _ => + //squad no longer exists? + } + + case Some(ProximityInvite(invitingPlayer, _, guid)) if EnsureEmptySquad(invitedPlayer) => + squadFeatures.get(guid) match { + case Some(features) => + val squad = features.Squad + if (squad.Size < squad.Capacity) { + val positions = (for { + (member, index) <- squad.Membership.zipWithIndex + if squad.isAvailable(index, tplayer.Certifications) + } yield (index, member.Requirements.size)).toList + .sortBy({ case (_, reqs) => reqs }) + ((positions.headOption, positions.lastOption) match { + case (Some((first, size1)), Some((_, size2))) if size1 == size2 => + Some(first) //join the first available position + case (Some(_), Some((last, _))) => Some(last) //join the most demanding position + case _ => None }) match { - //add invitations for position in squad - case Some(invitedPlayers) => - val invitingPlayer = tplayer.CharId - val name = tplayer.Name - invitedPlayers.foreach { invitedPlayer => - AddInviteAndRespond( + case Some(position) if JoinSquad(tplayer, squad, position) => + //join this squad + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, invitedPlayer, - LookingForSquadRoleInvite(invitingPlayer, name, sguid, position), - invitingPlayer, - name + Some(invitingPlayer), + "", + true, + Some(None) ) - } - case None => ; + ) + Publish( + invitingPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitingPlayer, + Some(invitedPlayer), + tplayer.Name, + false, + Some(None) + ) + ) + RemoveQueuedInvites(invitedPlayer) + features.ProxyInvites = features.ProxyInvites.filterNot(_ == invitedPlayer) + case _ => } - } - - case _ => ; - } - - case CancelFind() => - lSquadOpt match { - case Some(squad) => - val sguid = squad.GUID - val position = squadFeatures(sguid).SearchForRole - squadFeatures(sguid).SearchForRole = None - //remove active invites - invites.filter { - case (_, LookingForSquadRoleInvite(_, _, _guid, pos)) => _guid == sguid && position.contains(pos) - case _ => false - } - .keys.foreach { charId => - RemoveInvite(charId) - } - //remove queued invites - queuedInvites.foreach { case (charId, queue) => - val filtered = queue.filterNot { - case LookingForSquadRoleInvite(_, _, _guid, _) => _guid == sguid - case _ => false } - queuedInvites += charId -> filtered - if(filtered.isEmpty) { - queuedInvites.remove(charId) + if (features.ProxyInvites.isEmpty) { + //all invitations exhausted; this invitation period is concluded + features.SearchForRole = None + } else if (squad.Size == squad.Capacity) { + //all available squad positions filled; terminate all remaining invitations + RemoveProximityInvites(guid) + RemoveAllInvitesToSquad(guid) + //RemoveAllInvitesWithPlayer(invitingPlayer) } - } - //remove yet-to-be invitedPlayers - squadFeatures(sguid).ProxyInvites = Nil - case _ => ; - } - case RequestListSquad() => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - val features = squadFeatures(squad.GUID) - if(!features.Listed && squad.Task.nonEmpty && squad.ZoneId > 0) { - features.Listed = true + case _ => + //squad no longer exists? + } + + case _ => + //the invite either timed-out or was withdrawn or is now invalid + (previousInvites.get(invitedPlayer) match { + case Some(SpontaneousInvite(leader)) => (leader.CharId, leader.Name) + case Some(VacancyInvite(charId, name, _)) => (charId, name) + case Some(ProximityInvite(charId, name, _)) => (charId, name) + case Some(LookingForSquadRoleInvite(charId, name, _, _)) => (charId, name) + case _ => (0L, "") + }) match { + case (0L, "") => ; + case (charId, name) => + Publish( + charId, + SquadResponse.Membership(SquadResponseType.Cancel, 0, 0, charId, Some(0L), name, false, Some(None)) + ) + } + } + NextInviteAndRespond(invitedPlayer) + + case SquadAction.Membership(SquadRequestType.Leave, actingPlayer, _leavingPlayer, name, _) => + GetParticipatingSquad(actingPlayer) match { + case Some(squad) => + val leader = squad.Leader.CharId + (if (name.nonEmpty) { + //validate player with name + LivePlayerList + .WorldPopulation({ case (_, a: Avatar) => a.name.equalsIgnoreCase(name) }) + .headOption match { + case Some(a) => UserEvents.keys.find(_ == a.CharId) + case None => None + } + } else { + //validate player with id + _leavingPlayer match { + case Some(id) => UserEvents.keys.find(_ == id) + case None => None + } + }) match { + case out @ Some(leavingPlayer) + if GetParticipatingSquad(leavingPlayer).contains(squad) => //kicked player must be in the same squad + if (actingPlayer == leader) { + if (leavingPlayer == leader || squad.Size == 2) { + //squad leader is leaving his own squad, so it will be disbanded + //OR squad is only composed of two people, so it will be closed-out when one of them leaves + DisbandSquad(squad) + } else { + //kicked by the squad leader + Publish( + leavingPlayer, + SquadResponse.Membership( + SquadResponseType.Leave, + 0, + 0, + leavingPlayer, + Some(leader), + tplayer.Name, + false, + Some(None) + ) + ) + Publish( + leader, + SquadResponse.Membership( + SquadResponseType.Leave, + 0, + 0, + leader, + Some(leavingPlayer), + "", + true, + Some(None) + ) + ) + squadFeatures(squad.GUID).Refuse = leavingPlayer + LeaveSquad(leavingPlayer, squad) + } + } else if (leavingPlayer == actingPlayer) { + if (squad.Size == 2) { + //squad is only composed of two people, so it will be closed-out when one of them leaves + DisbandSquad(squad) + } else { + //leaving the squad of own accord + LeaveSquad(actingPlayer, squad) + } + } + + case _ => ; + } + case _ => ; + } + + case SquadAction.Membership(SquadRequestType.Reject, rejectingPlayer, _, _, _) => + val rejectedBid = RemoveInvite(rejectingPlayer) + //(A, B) -> person who made the rejection, person who was rejected + (rejectedBid match { + case Some(SpontaneousInvite(leader)) => + //rejectingPlayer is the would-be squad member; the squad leader's request was rejected + val invitingPlayerCharId = leader.CharId + Refused(rejectingPlayer, invitingPlayerCharId) + (Some(rejectingPlayer), Some(invitingPlayerCharId)) + + case Some(VacancyInvite(leader, _, guid)) + if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => + //rejectingPlayer is the would-be squad member; the squad leader's request was rejected + Refused(rejectingPlayer, leader) + (Some(rejectingPlayer), Some(leader)) + + case Some(ProximityInvite(_, _, guid)) + if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => + //rejectingPlayer is the would-be squad member; the squad leader's request was rejected + val features = squadFeatures(guid) + features.Refuse = rejectingPlayer //do not bother this player anymore + if ((features.ProxyInvites = features.ProxyInvites.filterNot(_ == rejectingPlayer)).isEmpty) { + features.SearchForRole = None + } + (None, None) + + case Some(LookingForSquadRoleInvite(leader, _, guid, _)) + if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId != rejectingPlayer => + //rejectingPlayer is the would-be squad member; the squad leader's request was rejected + Refused(rejectingPlayer, leader) + val features = squadFeatures(guid) + features.Refuse = rejectingPlayer + if ((features.ProxyInvites = features.ProxyInvites.filterNot(_ == rejectingPlayer)).isEmpty) { + features.SearchForRole = None + } + (None, None) + + case Some(RequestRole(_, guid, _)) + if squadFeatures.get(guid).nonEmpty && squadFeatures(guid).Squad.Leader.CharId == rejectingPlayer => + //rejectingPlayer is the squad leader; candidate is the would-be squad member who was rejected + val features = squadFeatures(guid) + features.Refuse = rejectingPlayer + (Some(rejectingPlayer), None) + + case _ => ; + (None, None) + }) match { + case (Some(rejected), Some(invited)) => + Publish( + rejected, + SquadResponse.Membership(SquadResponseType.Reject, 0, 0, rejected, Some(invited), "", true, Some(None)) + ) + Publish( + invited, + SquadResponse.Membership( + SquadResponseType.Reject, + 0, + 0, + invited, + Some(rejected), + tplayer.Name, + false, + Some(None) + ) + ) + case (Some(rejected), None) => + Publish( + rejected, + SquadResponse.Membership(SquadResponseType.Reject, 0, 0, rejected, Some(rejected), "", true, Some(None)) + ) + case _ => ; + } + NextInviteAndRespond(rejectingPlayer) + + case SquadAction.Membership(SquadRequestType.Disband, char_id, _, _, _) => + GetLeadingSquad(char_id, None) match { + case Some(squad) => + DisbandSquad(squad) + case None => ; + } + + case SquadAction.Membership(SquadRequestType.Cancel, cancellingPlayer, _, _, _) => + //get rid of SpontaneousInvite objects and VacancyInvite objects + invites.collect { + case (id, invite: SpontaneousInvite) if invite.InviterCharId == cancellingPlayer => + RemoveInvite(id) + case (id, invite: VacancyInvite) if invite.InviterCharId == cancellingPlayer => + RemoveInvite(id) + case (id, invite: LookingForSquadRoleInvite) if invite.InviterCharId == cancellingPlayer => + RemoveInvite(id) + } + queuedInvites.foreach { + case (id: Long, inviteList) => + val inList = inviteList.filterNot { + case invite: SpontaneousInvite if invite.InviterCharId == cancellingPlayer => true + case invite: VacancyInvite if invite.InviterCharId == cancellingPlayer => true + case invite: LookingForSquadRoleInvite if invite.InviterCharId == cancellingPlayer => true + case _ => false + } + if (inList.isEmpty) { + queuedInvites.remove(id) + } else { + queuedInvites(id) = inList + } + } + //get rid of ProximityInvite objects + RemoveProximityInvites(cancellingPlayer) + + case SquadAction.Membership( + SquadRequestType.Promote, + promotingPlayer, + Some(_promotedPlayer), + promotedName, + _ + ) => + val promotedPlayer = (if (promotedName.nonEmpty) { + //validate player with name exists + LivePlayerList + .WorldPopulation({ case (_, a: Avatar) => a.name == promotedName }) + .headOption match { + case Some(player) => UserEvents.keys.find(_ == player.CharId) + case None => Some(_promotedPlayer) + } + } else { + Some(_promotedPlayer) + }) match { + case Some(player) => player + case None => -1L + } + (GetLeadingSquad(promotingPlayer, None), GetParticipatingSquad(promotedPlayer)) match { + case (Some(squad), Some(squad2)) if squad.GUID == squad2.GUID => + val membership = squad.Membership.filter { _member => _member.CharId > 0 } + val leader = squad.Leader + val (member, index) = membership.zipWithIndex.find { + case (_member, _) => _member.CharId == promotedPlayer + }.get + val features = squadFeatures(squad.GUID) + SwapMemberPosition(leader, member) + //move around invites so that the proper squad leader deals with them + val leaderInvite = invites.remove(promotingPlayer) + val leaderQueuedInvites = queuedInvites.remove(promotingPlayer).toList.flatten + invites.get(promotedPlayer).orElse(previousInvites.get(promotedPlayer)) match { + case Some(_) => + //the promoted player has an active invite; queue these + queuedInvites += promotedPlayer -> (leaderInvite.toList ++ leaderQueuedInvites ++ queuedInvites + .remove(promotedPlayer) + .toList + .flatten) + case None if leaderInvite.nonEmpty => + //no active invite for the promoted player, but the leader had an active invite; trade the queued invites + val invitation = leaderInvite.get + AddInviteAndRespond(promotedPlayer, invitation, invitation.InviterCharId, invitation.InviterName) + queuedInvites += promotedPlayer -> (leaderQueuedInvites ++ queuedInvites + .remove(promotedPlayer) + .toList + .flatten) + case None => + //no active invites for anyone; assign the first queued invite from the promoting player, if available, and queue the rest + leaderQueuedInvites match { + case Nil => ; + case x :: xs => + AddInviteAndRespond(promotedPlayer, x, x.InviterCharId, x.InviterName) + queuedInvites += promotedPlayer -> (xs ++ queuedInvites.remove(promotedPlayer).toList.flatten) + } + } + debug(s"Promoting player ${leader.Name} to be the leader of ${squad.Task}") + Publish(features.ToChannel, SquadResponse.PromoteMember(squad, promotedPlayer, index, 0)) + if (features.Listed) { + Publish(promotingPlayer, SquadResponse.SetListSquad(PlanetSideGUID(0))) + Publish(promotedPlayer, SquadResponse.SetListSquad(squad.GUID)) + } + UpdateSquadListWhenListed( + features, + SquadInfo().Leader(leader.Name) + ) + UpdateSquadDetail( + squad.GUID, + SquadDetail() + .LeaderCharId(leader.CharId) + .Field3(value = 0L) + .LeaderName(leader.Name) + .Members( + List( + SquadPositionEntry(0, SquadPositionDetail().CharId(leader.CharId).Name(leader.Name)), + SquadPositionEntry(index, SquadPositionDetail().CharId(member.CharId).Name(member.Name)) + ) + ) + ) + case _ => ; + } + + case SquadAction.Membership(event, _, _, _, _) => + debug(s"SquadAction.Membership: $event is not yet supported") + + case SquadAction.Waypoint(_, wtype, _, info) => + val playerCharId = tplayer.CharId + (GetLeadingSquad(tplayer, None) match { + case Some(squad) => + info match { + case Some(winfo) => + (Some(squad), AddWaypoint(squad.GUID, wtype, winfo)) + case _ => + RemoveWaypoint(squad.GUID, wtype) + (Some(squad), None) + } + case _ => (None, None) + }) match { + case (Some(squad), Some(_)) => + //waypoint added or updated + Publish( + s"${squadFeatures(squad.GUID).ToChannel}", + SquadResponse.WaypointEvent(WaypointEventAction.Add, playerCharId, wtype, None, info, 1), + Seq(tplayer.CharId) + ) + case (Some(squad), None) => + //waypoint removed + Publish( + s"${squadFeatures(squad.GUID).ToChannel}", + SquadResponse.WaypointEvent(WaypointEventAction.Remove, playerCharId, wtype, None, None, 0), + Seq(tplayer.CharId) + ) + + case msg => + log.warn(s"Unsupported squad waypoint behavior: $msg") + } + + case SquadAction.Definition(guid, line, action) => + import net.psforever.packet.game.SquadAction._ + val pSquadOpt = GetParticipatingSquad(tplayer) + val lSquadOpt = GetLeadingSquad(tplayer, pSquadOpt) + //the following actions can only be performed by a squad's leader + action match { + case SaveSquadFavorite() => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + if (squad.Task.nonEmpty && squad.ZoneId > 0) { + tplayer.SquadLoadouts.SaveLoadout(squad, squad.Task, line) + Publish(sender, SquadResponse.ListSquadFavorite(line, squad.Task)) + } + + case LoadSquadFavorite() => + if (pSquadOpt.isEmpty || pSquadOpt == lSquadOpt) { + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + tplayer.SquadLoadouts.LoadLoadout(line) match { + case Some(loadout: SquadLoadout) if squad.Size == 1 => + SquadService.LoadSquadDefinition(squad, loadout) + UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadService.SquadList.Publish(squad)) + Publish(sender, SquadResponse.AssociateWithSquad(PlanetSideGUID(0))) + InitSquadDetail(PlanetSideGUID(0), Seq(tplayer.CharId), squad) + UpdateSquadDetail(squad) + Publish(sender, SquadResponse.AssociateWithSquad(squad.GUID)) + case _ => + } + } + + case DeleteSquadFavorite() => + tplayer.SquadLoadouts.DeleteLoadout(line) + Publish(sender, SquadResponse.ListSquadFavorite(line, "")) + + case ChangeSquadPurpose(purpose) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Task = purpose + UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Task(purpose)) + UpdateSquadDetail(squad.GUID, SquadDetail().Task(purpose)) + + case ChangeSquadZone(zone_id) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.ZoneId = zone_id.zoneId.toInt + UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().ZoneId(zone_id)) InitialAssociation(squad) - Publish(sender, SquadResponse.SetListSquad(squad.GUID)) - UpdateSquadList(squad, None) - } + Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) + UpdateSquadDetail( + squad.GUID, + squad.GUID, + Seq(squad.Leader.CharId), + SquadDetail().ZoneId(zone_id) + ) - case StopListSquad() => - val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) - val features = squadFeatures(squad.GUID) - if(features.Listed) { - features.Listed = false - Publish(sender, SquadResponse.SetListSquad(PlanetSideGUID(0))) - UpdateSquadList(squad, None) - } + case CloseSquadMemberPosition(position) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Availability.lift(position) match { + case Some(true) if position > 0 => //do not close squad leader position; undefined behavior + squad.Availability.update(position, false) + val memberPosition = squad.Membership(position) + if (memberPosition.CharId > 0) { + LeaveSquad(memberPosition.CharId, squad) + } + UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Capacity(squad.Capacity)) + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail.Closed))) + ) + case Some(_) | None => ; + } - case ResetAll() => - lSquadOpt match { - case Some(squad) if squad.Size > 1 => - val guid = squad.GUID - squad.Task = "" - squad.ZoneId = None - squad.Availability.indices.foreach { i => - squad.Availability.update(i, true) + case AddSquadMemberPosition(position) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Availability.lift(position) match { + case Some(false) => + squad.Availability.update(position, true) + UpdateSquadListWhenListed(squadFeatures(squad.GUID), SquadInfo().Capacity(squad.Capacity)) + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail.Open))) + ) + case Some(true) | None => ; + } + + case ChangeSquadMemberRequirementsRole(position, role) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Availability.lift(position) match { + case Some(true) => + squad.Membership(position).Role = role + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().Role(role)))) + ) + case Some(false) | None => ; + } + + case ChangeSquadMemberRequirementsDetailedOrders(position, orders) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Availability.lift(position) match { + case Some(true) => + squad.Membership(position).Orders = orders + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members( + List(SquadPositionEntry(position, SquadPositionDetail().DetailedOrders(orders))) + ) + ) + case Some(false) | None => ; + } + + case ChangeSquadMemberRequirementsCertifications(position, certs) => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + squad.Availability.lift(position) match { + case Some(true) => + squad.Membership(position).Requirements = certs + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().Requirements(certs)))) + ) + case Some(false) | None => ; + } + + case LocationFollowsSquadLead(state) => + val features = squadFeatures(lSquadOpt.getOrElse(StartSquad(tplayer)).GUID) + features.LocationFollowsSquadLead = state + + case AutoApproveInvitationRequests(state) => + val features = squadFeatures(lSquadOpt.getOrElse(StartSquad(tplayer)).GUID) + features.AutoApproveInvitationRequests = state + if (state) { + //allowed auto-approval - resolve the requests (only) + val charId = tplayer.CharId + val (requests, others) = (invites.get(charId).toList ++ queuedInvites.get(charId).toList) + .partition({ case _: RequestRole => true }) + invites.remove(charId) + queuedInvites.remove(charId) + previousInvites.remove(charId) + requests.foreach { + case request: RequestRole => + JoinSquad(request.player, features.Squad, request.position) + case _ => ; } - squad.Membership.foreach(position => { - position.Role = "" - position.Orders = "" - position.Requirements = Set() - }) - val features = squadFeatures(squad.GUID) - features.LocationFollowsSquadLead = true - features.AutoApproveInvitationRequests = true - if(features.Listed) { - //unlist the squad - features.Listed = false - Publish(features.ToChannel, SquadResponse.SetListSquad(PlanetSideGUID(0))) - UpdateSquadList(squad, None) + others.collect { case invite: Invitation => invite } match { + case Nil => ; + case x :: Nil => + AddInviteAndRespond(charId, x, x.InviterCharId, x.InviterName) + case x :: xs => + AddInviteAndRespond(charId, x, x.InviterCharId, x.InviterName) + queuedInvites += charId -> xs } - UpdateSquadDetail(squad) + } + + case FindLfsSoldiersForRole(position) => + lSquadOpt match { + case Some(squad) => + val sguid = squad.GUID + val features = squadFeatures(sguid) + features.SearchForRole match { + case Some(-1) => + //a proximity invitation has not yet cleared; nothing will be gained by trying to invite for a specific role + debug("FindLfsSoldiersForRole: waiting for proximity invitations to clear") + case _ => + //either no role has ever been recruited, or some other role has been recruited + //normal LFS recruitment for the given position + val excusedInvites = features.Refuse + val faction = squad.Faction + val requirementsToMeet = squad.Membership(position).Requirements + val outstandingActiveInvites = features.SearchForRole match { + case Some(pos) => + RemoveQueuedInvitesForSquadAndPosition(sguid, pos) + invites.collect { + case (charId, LookingForSquadRoleInvite(_, _, squad_guid, role)) + if squad_guid == sguid && role == pos => + charId + } + case None => + List.empty[Long] + } + features.SearchForRole = position + //this will update the role entry in the GUI to visually indicate being searched for; only one will be displayed at a time + Publish( + tplayer.CharId, + SquadResponse.Detail( + sguid, + SquadDetail().Members( + List( + SquadPositionEntry(position, SquadPositionDetail().CharId(char_id = 0L).Name(name = "")) + ) + ) + ) + ) + //collect all players that are eligible for invitation to the new position + //divide into players with an active invite (A) and players with a queued invite (B) + //further filter (A) into players whose invitation is renewed (A1) and new invitations (A2) + //TODO only checks the leader's current zone; should check all zones + (zone.LivePlayers + .collect { + case player + if !excusedInvites.contains(player.CharId) && + faction == player.Faction && player.LFS && memberToSquad.get(player.CharId).isEmpty && + requirementsToMeet.intersect(player.Certifications) == requirementsToMeet => + player.CharId + } + .partition { charId => outstandingActiveInvites.exists(charId == _) } match { + case (Nil, Nil) => + outstandingActiveInvites foreach RemoveInvite + features.ProxyInvites = Nil + //TODO cancel the LFS search from the server so that the client updates properly; how? + None + case (outstandingPlayerList, invitedPlayerList) => + //players who were actively invited for the previous position and are eligible for the new position + outstandingPlayerList.foreach { charId => + val bid = invites(charId).asInstanceOf[LookingForSquadRoleInvite] + invites(charId) = LookingForSquadRoleInvite(bid.char_id, bid.name, sguid, position) + } + //players who were actively invited for the previous position but are ineligible for the new position + (features.ProxyInvites filterNot (outstandingPlayerList contains)) foreach RemoveInvite + features.ProxyInvites = outstandingPlayerList ++ invitedPlayerList + Some(invitedPlayerList) + }) match { + //add invitations for position in squad + case Some(invitedPlayers) => + val invitingPlayer = tplayer.CharId + val name = tplayer.Name + invitedPlayers.foreach { invitedPlayer => + AddInviteAndRespond( + invitedPlayer, + LookingForSquadRoleInvite(invitingPlayer, name, sguid, position), + invitingPlayer, + name + ) + } + case None => ; + } + } + + case _ => ; + } + + case CancelFind() => + lSquadOpt match { + case Some(squad) => + val sguid = squad.GUID + val position = squadFeatures(sguid).SearchForRole + squadFeatures(sguid).SearchForRole = None + //remove active invites + invites + .filter { + case (_, LookingForSquadRoleInvite(_, _, _guid, pos)) => _guid == sguid && position.contains(pos) + case _ => false + } + .keys + .foreach { charId => + RemoveInvite(charId) + } + //remove queued invites + queuedInvites.foreach { + case (charId, queue) => + val filtered = queue.filterNot { + case LookingForSquadRoleInvite(_, _, _guid, _) => _guid == sguid + case _ => false + } + queuedInvites += charId -> filtered + if (filtered.isEmpty) { + queuedInvites.remove(charId) + } + } + //remove yet-to-be invitedPlayers + squadFeatures(sguid).ProxyInvites = Nil + case _ => ; + } + + case RequestListSquad() => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + val features = squadFeatures(squad.GUID) + if (!features.Listed && squad.Task.nonEmpty && squad.ZoneId > 0) { + features.Listed = true InitialAssociation(squad) - squadFeatures(guid).InitialAssociation = true - case Some(squad) => - //underutilized squad; just close it out - CloseSquad(squad) - case _ => ; - } + Publish(sender, SquadResponse.SetListSquad(squad.GUID)) + UpdateSquadList(squad, None) + } - case _ => - (pSquadOpt, action) match { - //the following action can be performed by the squad leader and maybe an unaffiliated player - case (Some(_), SelectRoleForYourself(_)) => + case StopListSquad() => + val squad = lSquadOpt.getOrElse(StartSquad(tplayer)) + val features = squadFeatures(squad.GUID) + if (features.Listed) { + features.Listed = false + Publish(sender, SquadResponse.SetListSquad(PlanetSideGUID(0))) + UpdateSquadList(squad, None) + } + + case ResetAll() => + lSquadOpt match { + case Some(squad) if squad.Size > 1 => + val guid = squad.GUID + squad.Task = "" + squad.ZoneId = None + squad.Availability.indices.foreach { i => + squad.Availability.update(i, true) + } + squad.Membership.foreach(position => { + position.Role = "" + position.Orders = "" + position.Requirements = Set() + }) + val features = squadFeatures(squad.GUID) + features.LocationFollowsSquadLead = true + features.AutoApproveInvitationRequests = true + if (features.Listed) { + //unlist the squad + features.Listed = false + Publish(features.ToChannel, SquadResponse.SetListSquad(PlanetSideGUID(0))) + UpdateSquadList(squad, None) + } + UpdateSquadDetail(squad) + InitialAssociation(squad) + squadFeatures(guid).InitialAssociation = true + case Some(squad) => + //underutilized squad; just close it out + CloseSquad(squad) + case _ => ; + } + + case _ => + (pSquadOpt, action) match { + //the following action can be performed by the squad leader and maybe an unaffiliated player + case (Some(_), SelectRoleForYourself(_)) => //TODO should be possible, but doesn't work correctly due to UI squad cards not updating as expected // if(squad.Leader.CharId == tplayer.CharId) { // //squad leader currently disallowed @@ -1326,153 +1536,209 @@ class SquadService extends Actor { // //not qualified for requested position // } - //the following action can be performed by an unaffiliated player - case (None, SelectRoleForYourself(position)) => - //not a member of any squad, but we might become a member of this one - GetSquad(guid) match { - case Some(squad) => - if(squad.isAvailable(position, tplayer.Certifications)) { - //we could join but we may need permission from the squad leader first - AddInviteAndRespond( - squad.Leader.CharId, - RequestRole(tplayer, guid, position), - invitingPlayer = 0L, //we ourselves technically are ... - tplayer.Name - ) - } - case None => ; - //squad does not exist? assume old local data; force update to correct discrepancy - } - - //the following action can be performed by anyone who has tried to join a squad - case (_, CancelSelectRoleForYourself(_)) => - val cancellingPlayer = tplayer.CharId - GetSquad(guid) match { - case Some(squad) => - //assumption: a player who is cancelling will rarely end up with their invite queued - val leaderCharId = squad.Leader.CharId - //clean up any active RequestRole invite entry where we are the player who wants to join the leader's squad - ((invites.get(leaderCharId) match { - case out @ Some(entry) if entry.isInstanceOf[RequestRole] && - entry.asInstanceOf[RequestRole].player.CharId == cancellingPlayer => - out - case _ => - None - }) match { - case Some(entry : RequestRole) => - RemoveInvite(leaderCharId) - Publish(leaderCharId, SquadResponse.Membership(SquadResponseType.Cancel, 0, 0, cancellingPlayer, None, entry.player.Name, false, Some(None))) - NextInviteAndRespond(leaderCharId) - Some(true) - case _ => - None - }).orElse( - //look for a queued RequestRole entry where we are the player who wants to join the leader's squad - (queuedInvites.get(leaderCharId) match { - case Some(_list) => - (_list, _list.indexWhere { entry => - entry.isInstanceOf[RequestRole] && - entry.asInstanceOf[RequestRole].player.CharId == cancellingPlayer - }) - case None => - (Nil, -1) - }) match { - case (_, -1) => - None //no change - case (list, _) if list.size == 1 => - val entry = list.head.asInstanceOf[RequestRole] - Publish(leaderCharId, SquadResponse.Membership(SquadResponseType.Cancel, 0, 0, cancellingPlayer, None, entry.player.Name, false, Some(None))) - queuedInvites.remove(leaderCharId) - Some(true) - case (list, index) => - val entry = list(index).asInstanceOf[RequestRole] - Publish(leaderCharId, SquadResponse.Membership(SquadResponseType.Cancel, 0, 0, cancellingPlayer, None, entry.player.Name, false, Some(None))) - queuedInvites(leaderCharId) = list.take(index) ++ list.drop(index+1) - Some(true) + //the following action can be performed by an unaffiliated player + case (None, SelectRoleForYourself(position)) => + //not a member of any squad, but we might become a member of this one + GetSquad(guid) match { + case Some(squad) => + if (squad.isAvailable(position, tplayer.Certifications)) { + //we could join but we may need permission from the squad leader first + AddInviteAndRespond( + squad.Leader.CharId, + RequestRole(tplayer, guid, position), + invitingPlayer = 0L, //we ourselves technically are ... + tplayer.Name + ) } - ) + case None => ; + //squad does not exist? assume old local data; force update to correct discrepancy + } - case _ => ; - } + //the following action can be performed by anyone who has tried to join a squad + case (_, CancelSelectRoleForYourself(_)) => + val cancellingPlayer = tplayer.CharId + GetSquad(guid) match { + case Some(squad) => + //assumption: a player who is cancelling will rarely end up with their invite queued + val leaderCharId = squad.Leader.CharId + //clean up any active RequestRole invite entry where we are the player who wants to join the leader's squad + ((invites.get(leaderCharId) match { + case out @ Some(entry) + if entry.isInstanceOf[RequestRole] && + entry.asInstanceOf[RequestRole].player.CharId == cancellingPlayer => + out + case _ => + None + }) match { + case Some(entry: RequestRole) => + RemoveInvite(leaderCharId) + Publish( + leaderCharId, + SquadResponse.Membership( + SquadResponseType.Cancel, + 0, + 0, + cancellingPlayer, + None, + entry.player.Name, + false, + Some(None) + ) + ) + NextInviteAndRespond(leaderCharId) + Some(true) + case _ => + None + }).orElse( + //look for a queued RequestRole entry where we are the player who wants to join the leader's squad + (queuedInvites.get(leaderCharId) match { + case Some(_list) => + ( + _list, + _list.indexWhere { entry => + entry.isInstanceOf[RequestRole] && + entry.asInstanceOf[RequestRole].player.CharId == cancellingPlayer + } + ) + case None => + (Nil, -1) + }) match { + case (_, -1) => + None //no change + case (list, _) if list.size == 1 => + val entry = list.head.asInstanceOf[RequestRole] + Publish( + leaderCharId, + SquadResponse.Membership( + SquadResponseType.Cancel, + 0, + 0, + cancellingPlayer, + None, + entry.player.Name, + false, + Some(None) + ) + ) + queuedInvites.remove(leaderCharId) + Some(true) + case (list, index) => + val entry = list(index).asInstanceOf[RequestRole] + Publish( + leaderCharId, + SquadResponse.Membership( + SquadResponseType.Cancel, + 0, + 0, + cancellingPlayer, + None, + entry.player.Name, + false, + Some(None) + ) + ) + queuedInvites(leaderCharId) = list.take(index) ++ list.drop(index + 1) + Some(true) + } + ) - //the following action can be performed by ??? - case (Some(squad), AssignSquadMemberToRole(position, char_id)) => - val membership = squad.Membership.zipWithIndex - (membership.find({ case (member, _) => member.CharId == char_id}), membership(position)) match { - //TODO squad leader currently disallowed - case (Some((fromMember, fromPosition)), (toMember, _)) if fromPosition != 0 => - val name = fromMember.Name - SwapMemberPosition(toMember, fromMember) - Publish(squadFeatures(guid).ToChannel, SquadResponse.AssignMember(squad, fromPosition, position)) - UpdateSquadDetail( - squad.GUID, - SquadDetail().Members(List( - SquadPositionEntry(position, SquadPositionDetail().CharId(fromMember.CharId).Name(fromMember.Name)), - SquadPositionEntry(fromPosition, SquadPositionDetail().CharId(char_id).Name(name)) - )) - ) - case _ => ; - } + case _ => ; + } - //the following action can be peprformed by anyone - case (_, SearchForSquadsWithParticularRole(_/*role*/, _/*requirements*/, _/*zone_id*/, _/*search_mode*/)) => - //though we should be able correctly search squads as is intended - //I don't know how search results should be prioritized or even how to return search results to the user - Publish(sender, SquadResponse.SquadSearchResults()) + //the following action can be performed by ??? + case (Some(squad), AssignSquadMemberToRole(position, char_id)) => + val membership = squad.Membership.zipWithIndex + (membership.find({ case (member, _) => member.CharId == char_id }), membership(position)) match { + //TODO squad leader currently disallowed + case (Some((fromMember, fromPosition)), (toMember, _)) if fromPosition != 0 => + val name = fromMember.Name + SwapMemberPosition(toMember, fromMember) + Publish(squadFeatures(guid).ToChannel, SquadResponse.AssignMember(squad, fromPosition, position)) + UpdateSquadDetail( + squad.GUID, + SquadDetail().Members( + List( + SquadPositionEntry( + position, + SquadPositionDetail().CharId(fromMember.CharId).Name(fromMember.Name) + ), + SquadPositionEntry(fromPosition, SquadPositionDetail().CharId(char_id).Name(name)) + ) + ) + ) + case _ => ; + } - //the following action can be performed by anyone - case (_, DisplaySquad()) => - val charId = tplayer.CharId - GetSquad(guid) match { - case Some(squad) if memberToSquad.get(charId).isEmpty => - continueToMonitorDetails += charId -> squad.GUID - Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) - case Some(squad) => - Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) - case _ => ; - } + //the following action can be peprformed by anyone + case ( + _, + SearchForSquadsWithParticularRole( + _ /*role*/, + _ /*requirements*/, + _ /*zone_id*/, + _ /*search_mode*/ + ) + ) => + //though we should be able correctly search squads as is intended + //I don't know how search results should be prioritized or even how to return search results to the user + Publish(sender, SquadResponse.SquadSearchResults()) - //the following message is feedback from a specific client, awaiting proper initialization - case (_, SquadMemberInitializationIssue()) => + //the following action can be performed by anyone + case (_, DisplaySquad()) => + val charId = tplayer.CharId + GetSquad(guid) match { + case Some(squad) if memberToSquad.get(charId).isEmpty => + continueToMonitorDetails += charId -> squad.GUID + Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) + case Some(squad) => + Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) + case _ => ; + } + + //the following message is feedback from a specific client, awaiting proper initialization + case (_, SquadMemberInitializationIssue()) => // GetSquad(guid) match { // case Some(squad) => // Publish(sender, SquadResponse.Detail(squad.GUID, SquadService.Detail.Publish(squad))) // case None => ; // } - case msg => ; - log.warn(s"Unsupported squad definition behavior: $msg") - } - } + case msg => ; + log.warn(s"Unsupported squad definition behavior: $msg") + } + } - case SquadAction.Update(char_id, health, max_health, armor, max_armor, pos, zone_number) => - memberToSquad.get(char_id) match { - case Some(squad) => - squad.Membership.find(_.CharId == char_id) match { - case Some(member) => - member.Health = StatConverter.Health(health, max_health, min=1, max=64) - member.Armor = StatConverter.Health(armor, max_armor, min=1, max=64) - member.Position = pos - member.ZoneId = zone_number - Publish( - sender, - SquadResponse.UpdateMembers( - squad, - squad.Membership - .filterNot { _.CharId == 0 } - .map { member => SquadAction.Update(member.CharId, member.Health, 0, member.Armor, 0, member.Position, member.ZoneId) } - .toList + case SquadAction.Update(char_id, health, max_health, armor, max_armor, pos, zone_number) => + memberToSquad.get(char_id) match { + case Some(squad) => + squad.Membership.find(_.CharId == char_id) match { + case Some(member) => + member.Health = StatConverter.Health(health, max_health, min = 1, max = 64) + member.Armor = StatConverter.Health(armor, max_armor, min = 1, max = 64) + member.Position = pos + member.ZoneId = zone_number + Publish( + sender, + SquadResponse.UpdateMembers( + squad, + squad.Membership + .filterNot { _.CharId == 0 } + .map { member => + SquadAction + .Update(member.CharId, member.Health, 0, member.Armor, 0, member.Position, member.ZoneId) + } + .toList + ) ) - ) - case _ => ; - } + case _ => ; + } - case None => ; - } + case None => ; + } - case msg => - debug(s"Unhandled message $msg from $sender") - } + case msg => + debug(s"Unhandled message $msg from $sender") + } case msg => debug(s"Unhandled message $msg from $sender") @@ -1483,7 +1749,7 @@ class SquadService extends Actor { * @param charId the player who refused other players * @return the list of other players who have been refused */ - def Refused(charId : Long) : List[Long] = refused.getOrElse(charId, Nil) + def Refused(charId: Long): List[Long] = refused.getOrElse(charId, Nil) /** * This player has refused to join squad leader's squads or some other players's offers to form a squad. @@ -1491,11 +1757,10 @@ class SquadService extends Actor { * @param refusedCharId the player who is refused * @return the list of other players who have been refused */ - def Refused(charId : Long, refusedCharId : Long) : List[Long] = { - if(charId != refusedCharId) { + def Refused(charId: Long, refusedCharId: Long): List[Long] = { + if (charId != refusedCharId) { Refused(charId, List(refusedCharId)) - } - else { + } else { Nil } } @@ -1506,7 +1771,7 @@ class SquadService extends Actor { * @param list the players who are refused * @return the list of other players who have been refused */ - def Refused(charId : Long, list : List[Long]) : List[Long] = { + def Refused(charId: Long, list: List[Long]): List[Long] = { refused.get(charId) match { case Some(refusedList) => refused(charId) = list ++ refusedList @@ -1535,14 +1800,18 @@ class SquadService extends Actor { * the invitation object in the active invite position; * `None`, if it is not added to either the active option or inactive position */ - def AddInvite(invitedPlayer : Long, invite : Invitation) : Option[Invitation] = { + def AddInvite(invitedPlayer: Long, invite: Invitation): Option[Invitation] = { invites.get(invitedPlayer).orElse(previousInvites.get(invitedPlayer)) match { case Some(_bid) => //the active invite does not interact with the given invite; add to queued invites queuedInvites.get(invitedPlayer) match { case Some(bidList) => //ensure that new invite does not interact with the queue's invites by invitingPlayer info - if(_bid.InviterCharId != invite.InviterCharId && !bidList.exists { eachBid => eachBid.InviterCharId == invite.InviterCharId }) { + if ( + _bid.InviterCharId != invite.InviterCharId && !bidList.exists { eachBid => + eachBid.InviterCharId == invite.InviterCharId + } + ) { queuedInvites(invitedPlayer) = invite match { case _: RequestRole => val (normals, others) = bidList.partition(_.isInstanceOf[RequestRole]) @@ -1551,16 +1820,14 @@ class SquadService extends Actor { bidList :+ invite } Some(_bid) - } - else { + } else { None } case None => - if(_bid.InviterCharId != invite.InviterCharId) { + if (_bid.InviterCharId != invite.InviterCharId) { queuedInvites(invitedPlayer) = List[Invitation](invite) Some(_bid) - } - else { + } else { None } } @@ -1585,7 +1852,13 @@ class SquadService extends Actor { * not useful here * @return na */ - def indirectInviteResp(invite : IndirectInvite, player : Player, invitedPlayer : Long, invitingPlayer : Long, name : String) : Boolean = { + def indirectInviteResp( + invite: IndirectInvite, + player: Player, + invitedPlayer: Long, + invitingPlayer: Long, + name: String + ): Boolean = { HandleRequestRole(invite, player) } @@ -1600,8 +1873,26 @@ class SquadService extends Actor { * @param name a name to be used in message composition * @return na */ - def altIndirectInviteResp(invite : IndirectInvite, player : Player, invitedPlayer : Long, invitingPlayer : Long, name : String) : Boolean = { - Publish(invitingPlayer, SquadResponse.Membership(SquadResponseType.Accept, 0, 0, invitingPlayer, Some(invitedPlayer), player.Name, false, Some(None))) + def altIndirectInviteResp( + invite: IndirectInvite, + player: Player, + invitedPlayer: Long, + invitingPlayer: Long, + name: String + ): Boolean = { + Publish( + invitingPlayer, + SquadResponse.Membership( + SquadResponseType.Accept, + 0, + 0, + invitingPlayer, + Some(invitedPlayer), + player.Name, + false, + Some(None) + ) + ) HandleRequestRole(invite, player) } @@ -1623,30 +1914,108 @@ class SquadService extends Actor { * @param invitingPlayer the unique character identifier for the player who invited the former * @param name a name to be used in message composition */ - def InviteResponseTemplate(indirectVacancyFunc : (IndirectInvite, Player, Long, Long, String) => Boolean)(targetInvite : Invitation, actualInvite : Option[Invitation], invitedPlayer : Long, invitingPlayer : Long, name : String) : Unit = { - if(actualInvite.contains(targetInvite)) { + def InviteResponseTemplate(indirectVacancyFunc: (IndirectInvite, Player, Long, Long, String) => Boolean)( + targetInvite: Invitation, + actualInvite: Option[Invitation], + invitedPlayer: Long, + invitingPlayer: Long, + name: String + ): Unit = { + if (actualInvite.contains(targetInvite)) { //immediately respond targetInvite match { case VacancyInvite(charId, _name, _) => - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, charId, Some(invitedPlayer), _name, false, Some(None))) - Publish(charId, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, invitedPlayer, Some(charId), _name, true, Some(None))) + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + charId, + Some(invitedPlayer), + _name, + false, + Some(None) + ) + ) + Publish( + charId, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + invitedPlayer, + Some(charId), + _name, + true, + Some(None) + ) + ) case _bid @ IndirectInvite(player, _) => indirectVacancyFunc(_bid, player, invitedPlayer, invitingPlayer, name) case _bid @ SpontaneousInvite(player) => val bidInvitingPlayer = _bid.InviterCharId - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, bidInvitingPlayer, Some(invitedPlayer), player.Name, false, Some(None))) - Publish(bidInvitingPlayer, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, invitedPlayer, Some(bidInvitingPlayer), player.Name, true, Some(None))) + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + bidInvitingPlayer, + Some(invitedPlayer), + player.Name, + false, + Some(None) + ) + ) + Publish( + bidInvitingPlayer, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + invitedPlayer, + Some(bidInvitingPlayer), + player.Name, + true, + Some(None) + ) + ) case _bid @ RequestRole(player, _, _) => HandleRequestRole(_bid, player) case LookingForSquadRoleInvite(charId, _name, _, _) => - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, invitedPlayer, Some(charId), _name, false, Some(None))) + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + invitedPlayer, + Some(charId), + _name, + false, + Some(None) + ) + ) case ProximityInvite(charId, _name, _) => - Publish(invitedPlayer, SquadResponse.Membership(SquadResponseType.Invite, 0, 0, invitedPlayer, Some(charId), _name, false, Some(None))) + Publish( + invitedPlayer, + SquadResponse.Membership( + SquadResponseType.Invite, + 0, + 0, + invitedPlayer, + Some(charId), + _name, + false, + Some(None) + ) + ) case _ => log.warn(s"AddInviteAndRespond: can not parse discovered unhandled invitation type - $targetInvite") @@ -1667,7 +2036,7 @@ class SquadService extends Actor { * @param invitingPlayer the unique character identifier for the player who invited the former * @param name a name to be used in message composition */ - def AddInviteAndRespond(invitedPlayer : Long, targetInvite : Invitation, invitingPlayer : Long, name : String) : Unit = { + def AddInviteAndRespond(invitedPlayer: Long, targetInvite: Invitation, invitingPlayer: Long, name: String): Unit = { InviteResponseTemplate(indirectInviteResp)( targetInvite, AddInvite(invitedPlayer, targetInvite), @@ -1689,7 +2058,12 @@ class SquadService extends Actor { * @param invitingPlayer the unique character identifier for the player who invited the former * @param name a name to be used in message composition */ - def AltAddInviteAndRespond(invitedPlayer : Long, targetInvite : Invitation, invitingPlayer : Long, name : String) : Unit = { + def AltAddInviteAndRespond( + invitedPlayer: Long, + targetInvite: Invitation, + invitingPlayer: Long, + name: String + ): Unit = { InviteResponseTemplate(altIndirectInviteResp)( targetInvite, AddInvite(invitedPlayer, targetInvite), @@ -1715,7 +2089,7 @@ class SquadService extends Actor { * the invitation object in the active invite position; * `None`, if not shifted into the active position */ - def NextInvite(invitedPlayer : Long) : Option[Invitation] = { + def NextInvite(invitedPlayer: Long): Option[Invitation] = { previousInvites.remove(invitedPlayer) invites.get(invitedPlayer) match { case None => @@ -1753,7 +2127,7 @@ class SquadService extends Actor { * the invitation object in the active invite position; * `None`, if not shifted into the active position */ - def NextInviteAndRespond(invitedPlayer : Long) : Unit = { + def NextInviteAndRespond(invitedPlayer: Long): Unit = { NextInvite(invitedPlayer) match { case Some(invite) => InviteResponseTemplate(indirectInviteResp)( @@ -1781,7 +2155,7 @@ class SquadService extends Actor { * the invitation object formerly in the active invite position; * `None`, if no invitation was in the active position */ - def RemoveInvite(invitedPlayer : Long) : Option[Invitation] = { + def RemoveInvite(invitedPlayer: Long): Option[Invitation] = { invites.remove(invitedPlayer) match { case out @ Some(invite) => previousInvites += invitedPlayer -> invite @@ -1797,10 +2171,10 @@ class SquadService extends Actor { * in actuality, represents the player who will address the invitation object * @return a list of the removed inactive invitation objects */ - def RemoveQueuedInvites(invitedPlayer : Long) : List[Invitation] = { + def RemoveQueuedInvites(invitedPlayer: Long): List[Invitation] = { queuedInvites.remove(invitedPlayer) match { case Some(_bidList) => _bidList - case None => Nil + case None => Nil } } @@ -1815,10 +2189,10 @@ class SquadService extends Actor { * @param guid the squad identifier * @param position the role position index */ - def RemoveInvitesForSquadAndPosition(guid : PlanetSideGUID, position : Int) : Unit = { + def RemoveInvitesForSquadAndPosition(guid: PlanetSideGUID, position: Int): Unit = { //eliminate active invites for this role invites.collect { - case(charId, LookingForSquadRoleInvite(_,_, sguid, pos)) if sguid == guid && pos == position => + case (charId, LookingForSquadRoleInvite(_, _, sguid, pos)) if sguid == guid && pos == position => RemoveInvite(charId) case (charId, RequestRole(_, sguid, pos)) if sguid == guid && pos == position => RemoveInvite(charId) @@ -1836,20 +2210,20 @@ class SquadService extends Actor { * @param guid the squad identifier * @param position the role position index */ - def RemoveQueuedInvitesForSquadAndPosition(guid : PlanetSideGUID, position : Int) : Unit = { + def RemoveQueuedInvitesForSquadAndPosition(guid: PlanetSideGUID, position: Int): Unit = { //eliminate other invites for this role - queuedInvites.foreach { case(charId, queue) => - val filtered = queue.filterNot { - case LookingForSquadRoleInvite(_,_, sguid, pos) => sguid == guid && pos == position - case RequestRole(_, sguid, pos) => sguid == guid && pos == position - case _ => false - } - if(filtered.isEmpty) { - queuedInvites.remove(charId) - } - else if(queue.size != filtered.size) { - queuedInvites += charId -> filtered - } + queuedInvites.foreach { + case (charId, queue) => + val filtered = queue.filterNot { + case LookingForSquadRoleInvite(_, _, sguid, pos) => sguid == guid && pos == position + case RequestRole(_, sguid, pos) => sguid == guid && pos == position + case _ => false + } + if (filtered.isEmpty) { + queuedInvites.remove(charId) + } else if (queue.size != filtered.size) { + queuedInvites += charId -> filtered + } } } @@ -1865,7 +2239,7 @@ class SquadService extends Actor { * @see `VacancyInvite` * @param sguid the squad identifier */ - def RemoveAllInvitesToSquad(sguid : PlanetSideGUID) : Unit = { + def RemoveAllInvitesToSquad(sguid: PlanetSideGUID): Unit = { //clean up invites invites.collect { case (id, VacancyInvite(_, _, guid)) if sguid == guid => @@ -1880,21 +2254,21 @@ class SquadService extends Actor { RemoveInvite(id) } //tidy the queued invitations - queuedInvites.foreach { case(id, queue) => - val filteredQueue = queue.filterNot { - case VacancyInvite(_, _, guid) => sguid == guid - case IndirectInvite(_, guid) => sguid == guid - case LookingForSquadRoleInvite(_, _, guid, _) => sguid == guid - case RequestRole(_, guid, _) => sguid == guid - case ProximityInvite(_, _, guid) => sguid == guid - case _ => false - } - if(filteredQueue.isEmpty) { - queuedInvites.remove(id) - } - else if(filteredQueue.size != queue.size) { - queuedInvites.update(id, filteredQueue) - } + queuedInvites.foreach { + case (id, queue) => + val filteredQueue = queue.filterNot { + case VacancyInvite(_, _, guid) => sguid == guid + case IndirectInvite(_, guid) => sguid == guid + case LookingForSquadRoleInvite(_, _, guid, _) => sguid == guid + case RequestRole(_, guid, _) => sguid == guid + case ProximityInvite(_, _, guid) => sguid == guid + case _ => false + } + if (filteredQueue.isEmpty) { + queuedInvites.remove(id) + } else if (filteredQueue.size != queue.size) { + queuedInvites.update(id, filteredQueue) + } } squadFeatures(sguid).ProxyInvites = Nil squadFeatures(sguid).SearchForRole match { @@ -1920,7 +2294,7 @@ class SquadService extends Actor { * @see `VacancyInvite` * @param charId the player's unique identifier number */ - def RemoveAllInvitesWithPlayer(charId : Long) : Unit = { + def RemoveAllInvitesWithPlayer(charId: Long): Unit = { RemoveInvite(charId) invites.collect { case (id, SpontaneousInvite(player)) if player.CharId == charId => @@ -1936,21 +2310,21 @@ class SquadService extends Actor { } //tidy the queued invitations queuedInvites.remove(charId) - queuedInvites.foreach { case(id, queue) => - val filteredQueue = queue.filterNot { - case SpontaneousInvite(player) => player.CharId == charId - case VacancyInvite(player, _, _) => player == charId - case IndirectInvite(player, _) => player.CharId == charId - case LookingForSquadRoleInvite(player, _, _, _) => player == charId - case RequestRole(player, _, _) => player.CharId == charId - case _ => false - } - if(filteredQueue.isEmpty) { - queuedInvites.remove(id) - } - else if(filteredQueue.size != queue.size) { - queuedInvites.update(id, filteredQueue) - } + queuedInvites.foreach { + case (id, queue) => + val filteredQueue = queue.filterNot { + case SpontaneousInvite(player) => player.CharId == charId + case VacancyInvite(player, _, _) => player == charId + case IndirectInvite(player, _) => player.CharId == charId + case LookingForSquadRoleInvite(player, _, _, _) => player == charId + case RequestRole(player, _, _) => player.CharId == charId + case _ => false + } + if (filteredQueue.isEmpty) { + queuedInvites.remove(id) + } else if (filteredQueue.size != queue.size) { + queuedInvites.update(id, filteredQueue) + } } continueToMonitorDetails.remove(charId) RemoveProximityInvites(charId) @@ -1962,7 +2336,7 @@ class SquadService extends Actor { * @param invitingPlayer the player who did the recruiting * @return a list of all players (unique character identifier number and name) who had active proximity invitations */ - def RemoveProximityInvites(invitingPlayer : Long) : Iterable[(Long, String)] = { + def RemoveProximityInvites(invitingPlayer: Long): Iterable[(Long, String)] = { //invites val (removedInvites, out) = invites.collect { case (id, ProximityInvite(inviterCharId, inviterName, squadGUID)) if inviterCharId == invitingPlayer => @@ -1971,18 +2345,18 @@ class SquadService extends Actor { }.unzip RemoveProximityInvites(removedInvites) //queued - RemoveProximityInvites(queuedInvites.flatMap { case (id : Long, inviteList) => - val (outList, inList) = inviteList.partition { - case ProximityInvite(inviterCharId, _, _) if inviterCharId == invitingPlayer => true - case _ => false - } - if(inList.isEmpty) { - queuedInvites.remove(id) - } - else { - queuedInvites(id) = inList - } - outList.collect { case ProximityInvite(_, _, sguid : PlanetSideGUID) => id -> sguid } + RemoveProximityInvites(queuedInvites.flatMap { + case (id: Long, inviteList) => + val (outList, inList) = inviteList.partition { + case ProximityInvite(inviterCharId, _, _) if inviterCharId == invitingPlayer => true + case _ => false + } + if (inList.isEmpty) { + queuedInvites.remove(id) + } else { + queuedInvites(id) = inList + } + outList.collect { case ProximityInvite(_, _, sguid: PlanetSideGUID) => id -> sguid } }) out.toSeq.distinct } @@ -1994,13 +2368,13 @@ class SquadService extends Actor { * @see `SquadFeatures.SearchForRole` * @param list a list of players to squads with expected entry redundancy */ - def RemoveProximityInvites(list : Iterable[(Long, PlanetSideGUID)]) : Unit = { + def RemoveProximityInvites(list: Iterable[(Long, PlanetSideGUID)]): Unit = { val (_, squads) = list.unzip squads.toSeq.distinct.foreach { squad => squadFeatures.get(squad) match { case Some(features) => - val out = list.collect { case (id, sguid) if sguid == squad => id } .toSeq - if((features.ProxyInvites = features.ProxyInvites filterNot out.contains) isEmpty) { + val out = list.collect { case (id, sguid) if sguid == squad => id }.toSeq + if ((features.ProxyInvites = features.ProxyInvites filterNot out.contains) isEmpty) { features.SearchForRole = None } case _ => ; @@ -2013,7 +2387,7 @@ class SquadService extends Actor { * @param guid the squad * @return a list of all players (unique character identifier number and name) who had active proximity invitations */ - def RemoveProximityInvites(guid : PlanetSideGUID) : Iterable[(Long, String)] = { + def RemoveProximityInvites(guid: PlanetSideGUID): Iterable[(Long, String)] = { //invites val (removedInvites, out) = invites.collect { case (id, ProximityInvite(_, inviterName, squadGUID)) if squadGUID == guid => @@ -2025,21 +2399,22 @@ class SquadService extends Actor { squadFeatures(sguid).SearchForRole = None } //queued - queuedInvites.flatMap { case (id : Long, inviteList) => - val (outList, inList) = inviteList.partition { - case ProximityInvite(_, _, squadGUID) if squadGUID == guid => true - case _ => false - } - if(inList.isEmpty) { - queuedInvites.remove(id) - } - else { - queuedInvites(id) = inList - } - outList.collect { case ProximityInvite(_, _, sguid : PlanetSideGUID) => - squadFeatures(sguid).ProxyInvites = Nil - squadFeatures(sguid).SearchForRole = None - } + queuedInvites.flatMap { + case (id: Long, inviteList) => + val (outList, inList) = inviteList.partition { + case ProximityInvite(_, _, squadGUID) if squadGUID == guid => true + case _ => false + } + if (inList.isEmpty) { + queuedInvites.remove(id) + } else { + queuedInvites(id) = inList + } + outList.collect { + case ProximityInvite(_, _, sguid: PlanetSideGUID) => + squadFeatures(sguid).ProxyInvites = Nil + squadFeatures(sguid).SearchForRole = None + } } out.toSeq.distinct } @@ -2055,17 +2430,23 @@ class SquadService extends Actor { * @return the squad object and a role position index, if properly invited; * `None`, otherwise */ - def HandleVacancyInvite(squad_guid : PlanetSideGUID, invitedPlayer : Long, invitingPlayer : Long, recruit : Player) : Option[(Squad, Int)] = { + def HandleVacancyInvite( + squad_guid: PlanetSideGUID, + invitedPlayer: Long, + invitingPlayer: Long, + recruit: Player + ): Option[(Squad, Int)] = { squadFeatures.get(squad_guid) match { case Some(features) => val squad = features.Squad memberToSquad.get(invitedPlayer) match { case Some(enrolledSquad) => - if(enrolledSquad eq squad) { + if (enrolledSquad eq squad) { log.warn(s"HandleVacancyInvite: ${recruit.Name} is already a member of squad ${squad.Task}") - } - else { - log.warn(s"HandleVacancyInvite: ${recruit.Name} is a member of squad ${enrolledSquad.Task} and can not join squad ${squad.Task}") + } else { + log.warn( + s"HandleVacancyInvite: ${recruit.Name} is a member of squad ${enrolledSquad.Task} and can not join squad ${squad.Task}" + ) } None case _ => @@ -2101,16 +2482,22 @@ class SquadService extends Actor { * @return the squad object and a role position index, if properly invited; * `None`, otherwise */ - def HandleVacancyInvite(squad : Squad, invitedPlayer : Long, invitingPlayer : Long, recruit : Player) : Option[(Squad, Int)] = { + def HandleVacancyInvite( + squad: Squad, + invitedPlayer: Long, + invitingPlayer: Long, + recruit: Player + ): Option[(Squad, Int)] = { //accepted an invitation to join an existing squad - squad.Membership.zipWithIndex.find({ case (_, index) => - squad.isAvailable(index, recruit.Certifications) + squad.Membership.zipWithIndex.find({ + case (_, index) => + squad.isAvailable(index, recruit.Certifications) }) match { case Some((_, line)) => //position in squad found - val sguid = squad.GUID + val sguid = squad.GUID val features = squadFeatures(sguid) - if(!features.AutoApproveInvitationRequests && squad.Leader.CharId != invitingPlayer) { + if (!features.AutoApproveInvitationRequests && squad.Leader.CharId != invitingPlayer) { //the inviting player was not the squad leader and this decision should be bounced off the squad leader AltAddInviteAndRespond( squad.Leader.CharId, @@ -2120,8 +2507,7 @@ class SquadService extends Actor { ) debug(s"HandleVacancyInvite: ${recruit.Name} must await an invitation from the leader of squad ${squad.Task}") None - } - else { + } else { Some((squad, line)) } case _ => @@ -2136,7 +2522,7 @@ class SquadService extends Actor { * @return `true`, if the player is not denied the possibility of joining the squad; * `false`, otherwise, of it the squad does not exist */ - def HandleRequestRole(bid : RequestRole, player : Player) : Boolean = { + def HandleRequestRole(bid: RequestRole, player: Player): Boolean = { HandleRequestRole(bid, bid.squad_guid, player) } @@ -2147,7 +2533,7 @@ class SquadService extends Actor { * @return `true`, if the player is not denied the possibility of joining the squad; * `false`, otherwise, of it the squad does not exist */ - def HandleRequestRole(bid : IndirectInvite, player : Player) : Boolean = { + def HandleRequestRole(bid: IndirectInvite, player: Player): Boolean = { HandleRequestRole(bid, bid.squad_guid, player) } @@ -2169,14 +2555,17 @@ class SquadService extends Actor { * @return `true`, if the player is not denied the possibility of joining the squad; * `false`, otherwise, of it the squad does not exist */ - def HandleRequestRole(bid : Invitation, guid : PlanetSideGUID, player : Player) : Boolean = { + def HandleRequestRole(bid: Invitation, guid: PlanetSideGUID, player: Player): Boolean = { squadFeatures.get(guid) match { case Some(features) => val leaderCharId = features.Squad.Leader.CharId - if(features.AutoApproveInvitationRequests) { - self ! SquadServiceMessage(player, Zone.Nowhere, SquadAction.Membership(SquadRequestType.Accept, leaderCharId, None, "", None)) - } - else { + if (features.AutoApproveInvitationRequests) { + self ! SquadServiceMessage( + player, + Zone.Nowhere, + SquadAction.Membership(SquadRequestType.Accept, leaderCharId, None, "", None) + ) + } else { Publish(leaderCharId, SquadResponse.WantsSquadPosition(leaderCharId, player.Name)) } true @@ -2198,9 +2587,9 @@ class SquadService extends Actor { * @see `SquadService.Detail.Publish` * @param squad the squad */ - def InitialAssociation(squad : Squad) : Unit = { + def InitialAssociation(squad: Squad): Unit = { val guid = squad.GUID - if(squadFeatures(guid).InitialAssociation) { + if (squadFeatures(guid).InitialAssociation) { squadFeatures(guid).InitialAssociation = false val charId = squad.Leader.CharId Publish(charId, SquadResponse.AssociateWithSquad(guid)) @@ -2223,18 +2612,18 @@ class SquadService extends Actor { * @param player the player who would become the squad leader * @return the squad that has been created */ - def StartSquad(player : Player) : Squad = { - val faction = player.Faction - val name = player.Name - val squad = new Squad(GetNextSquadId(), faction) + def StartSquad(player: Player): Squad = { + val faction = player.Faction + val name = player.Name + val squad = new Squad(GetNextSquadId(), faction) val leadPosition = squad.Membership(0) leadPosition.Name = name leadPosition.CharId = player.CharId - leadPosition.Health = StatConverter.Health(player.Health, player.MaxHealth, min=1, max=64) - leadPosition.Armor = StatConverter.Health(player.Armor, player.MaxArmor, min=1, max=64) + leadPosition.Health = StatConverter.Health(player.Health, player.MaxHealth, min = 1, max = 64) + leadPosition.Armor = StatConverter.Health(player.Armor, player.MaxArmor, min = 1, max = 64) leadPosition.Position = player.Position leadPosition.ZoneId = 1 - squadFeatures += squad.GUID -> new SquadFeatures(squad).Start + squadFeatures += squad.GUID -> new SquadFeatures(squad).Start memberToSquad += squad.Leader.CharId -> squad debug(s"$name-$faction has created a new squad") squad @@ -2265,15 +2654,15 @@ class SquadService extends Actor { * @return `true`, if the player joined the squad in some capacity; * `false`, if the player did not join the squad or is already a squad member */ - def JoinSquad(player : Player, squad : Squad, position : Int) : Boolean = { + def JoinSquad(player: Player, squad: Squad, position: Int): Boolean = { val charId = player.CharId - val role = squad.Membership(position) + val role = squad.Membership(position) UserEvents.get(charId) match { case Some(events) if squad.Leader.CharId != charId && squad.isAvailable(position, player.Certifications) => role.Name = player.Name role.CharId = charId - role.Health = StatConverter.Health(player.Health, player.MaxHealth, min=1, max=64) - role.Armor = StatConverter.Health(player.Armor, player.MaxArmor, min=1, max=64) + role.Health = StatConverter.Health(player.Health, player.MaxHealth, min = 1, max = 64) + role.Armor = StatConverter.Health(player.Armor, player.MaxArmor, min = 1, max = 64) role.Position = player.Position role.ZoneId = 1 memberToSquad(charId) = squad @@ -2283,18 +2672,18 @@ class SquadService extends Actor { InitialAssociation(squad) Publish(charId, SquadResponse.AssociateWithSquad(squad.GUID)) val features = squadFeatures(squad.GUID) - val size = squad.Size - if(size == 2) { + val size = squad.Size + if (size == 2) { //first squad member after leader; both members fully initialize - val (memberCharIds, indices) = squad.Membership - .zipWithIndex + val (memberCharIds, indices) = squad.Membership.zipWithIndex .filterNot { case (member, _) => member.CharId == 0 } .toList .unzip { case (member, index) => (member.CharId, index) } val toChannel = features.ToChannel memberCharIds.foreach { charId => SquadEvents.subscribe(events, s"/$toChannel/Squad") - Publish(charId, + Publish( + charId, SquadResponse.Join( squad, indices.filterNot(_ == position) :+ position, @@ -2305,18 +2694,16 @@ class SquadService extends Actor { } //fully update for all users InitSquadDetail(squad) - } - else { + } else { //joining an active squad; everybody updates differently val updatedIndex = List(position) - val toChannel = features.ToChannel + val toChannel = features.ToChannel //new member gets full squad UI updates Publish( charId, SquadResponse.Join( squad, - position +: squad.Membership - .zipWithIndex + position +: squad.Membership.zipWithIndex .collect({ case (member, index) if member.CharId > 0 => index }) .filterNot(_ == position) .toList, @@ -2329,7 +2716,9 @@ class SquadService extends Actor { InitSquadDetail(squad.GUID, Seq(charId), squad) UpdateSquadDetail( squad.GUID, - SquadDetail().Members(List(SquadPositionEntry(position, SquadPositionDetail().CharId(charId).Name(player.Name)))) + SquadDetail().Members( + List(SquadPositionEntry(position, SquadPositionDetail().CharId(charId).Name(player.Name))) + ) ) SquadEvents.subscribe(events, s"/$toChannel/Squad") } @@ -2348,7 +2737,7 @@ class SquadService extends Actor { * @return `true`, if the target player possesses no squad or a squad that is suitably nonexistent; * `false`, otherwise */ - def EnsureEmptySquad(charId : Long) : Boolean = { + def EnsureEmptySquad(charId: Long): Boolean = { memberToSquad.get(charId) match { case None => true @@ -2370,7 +2759,7 @@ class SquadService extends Actor { * @return `true`, if the player, formerly a normal member of the squad, has been ejected from the squad; * `false`, otherwise */ - def LeaveSquad(charId : Long, squad : Squad) : Boolean = { + def LeaveSquad(charId: Long, squad: Squad): Boolean = { val membership = squad.Membership.zipWithIndex membership.find { case (_member, _) => _member.CharId == charId } match { case data @ Some((_, index)) if squad.Leader.CharId != charId => @@ -2380,9 +2769,9 @@ class SquadService extends Actor { charId, SquadResponse.Leave( squad, - (charId, index) +: membership - .collect { case (_member, _index) if _member.CharId > 0 && _member.CharId != charId => (_member.CharId, _index) } - .toList + (charId, index) +: membership.collect { + case (_member, _index) if _member.CharId > 0 && _member.CharId != charId => (_member.CharId, _index) + }.toList ) ) SquadEvents.unsubscribe(UserEvents(charId), s"/${squadFeatures(squad.GUID).ToChannel}/Squad") @@ -2415,7 +2804,7 @@ class SquadService extends Actor { * @param entry a paired membership role with its index in the squad * @return if a role/index pair is provided */ - def PanicLeaveSquad(charId : Long, squad : Squad, entry : Option[(Member, Int)]) : Boolean = { + def PanicLeaveSquad(charId: Long, squad: Squad, entry: Option[(Member, Int)]): Boolean = { entry match { case Some((member, index)) => val entry = (charId, index) @@ -2449,18 +2838,19 @@ class SquadService extends Actor { * @see `UpdateSquadList` * @param squad the squad */ - def CloseSquad(squad : Squad) : Unit = { + def CloseSquad(squad: Squad): Unit = { val guid = squad.GUID RemoveAllInvitesToSquad(guid) val membership = squad.Membership.zipWithIndex - val (updateMembers, updateIndices) = membership - .collect { case (member, index) if member.CharId > 0 => ((member, member.CharId, index, UserEvents.get(member.CharId)), (member.CharId, index)) } - .unzip - val updateIndicesList = updateIndices.toList + val (updateMembers, updateIndices) = membership.collect { + case (member, index) if member.CharId > 0 => + ((member, member.CharId, index, UserEvents.get(member.CharId)), (member.CharId, index)) + }.unzip + val updateIndicesList = updateIndices.toList val completelyBlankSquadDetail = SquadDetail().Complete - val features = squadFeatures(guid) - val channel = s"/${features.ToChannel}/Squad" - if(features.Listed) { + val features = squadFeatures(guid) + val channel = s"/${features.ToChannel}/Squad" + if (features.Listed) { Publish(squad.Leader.CharId, SquadResponse.SetListSquad(PlanetSideGUID(0))) } updateMembers @@ -2478,7 +2868,9 @@ class SquadService extends Actor { charId, SquadResponse.Leave( squad, - updateIndicesList.filterNot { case (_, outIndex) => outIndex == index } :+ (charId, index) //we need to be last + updateIndicesList.filterNot { + case (_, outIndex) => outIndex == index + } :+ (charId, index) //we need to be last ) ) Publish(charId, SquadResponse.AssociateWithSquad(PlanetSideGUID(0))) @@ -2499,7 +2891,7 @@ class SquadService extends Actor { * @see `SquadResponse.Membership` * @param squad the squad */ - def DisbandSquad(squad : Squad) : Unit = { + def DisbandSquad(squad: Squad): Unit = { val leader = squad.Leader.CharId PanicDisbandSquad( squad, @@ -2525,7 +2917,7 @@ class SquadService extends Actor { * @param membership the unique character identifier numbers of the other squad members * @return if a role/index pair is provided */ - def PanicDisbandSquad(squad : Squad, membership : Iterable[Long]) : Unit = { + def PanicDisbandSquad(squad: Squad, membership: Iterable[Long]): Unit = { CloseSquad(squad) membership.foreach { charId => Publish(charId, SquadResponse.Membership(SquadResponseType.Disband, 0, 0, charId, None, "", false, Some(None))) @@ -2543,17 +2935,17 @@ class SquadService extends Actor { * @param fromMember the squad role where the player is being encountered; * if a conflicting player is discovered, swap that player into `fromMember` */ - def SwapMemberPosition(toMember: Member, fromMember: Member) : Unit = { - val (name, charId, zoneId, pos, health, armor) = (fromMember.Name, fromMember.CharId, fromMember.ZoneId, fromMember.Position, fromMember.Health, fromMember.Armor) - if(toMember.CharId > 0) { + def SwapMemberPosition(toMember: Member, fromMember: Member): Unit = { + val (name, charId, zoneId, pos, health, armor) = + (fromMember.Name, fromMember.CharId, fromMember.ZoneId, fromMember.Position, fromMember.Health, fromMember.Armor) + if (toMember.CharId > 0) { fromMember.Name = toMember.Name fromMember.CharId = toMember.CharId fromMember.ZoneId = toMember.ZoneId fromMember.Position = toMember.Position fromMember.Health = toMember.Health fromMember.Armor = toMember.Armor - } - else { + } else { fromMember.Name = "" fromMember.CharId = 0L } @@ -2578,7 +2970,11 @@ class SquadService extends Actor { * @param info information about the waypoint, as was reported by the client's packet * @return the waypoint data, if the waypoint type is changed */ - def AddWaypoint(guid : PlanetSideGUID, waypointType : SquadWaypoints.Value, info : WaypointInfo) : Option[WaypointData] = { + def AddWaypoint( + guid: PlanetSideGUID, + waypointType: SquadWaypoints.Value, + info: WaypointInfo + ): Option[WaypointData] = { squadFeatures.get(guid) match { case Some(features) => features.Waypoints.lift(waypointType.id) match { @@ -2606,7 +3002,7 @@ class SquadService extends Actor { * @param guid the squad's unique identifier * @param waypointType the type of the waypoint */ - def RemoveWaypoint(guid : PlanetSideGUID, waypointType : SquadWaypoints.Value) : Unit = { + def RemoveWaypoint(guid: PlanetSideGUID, waypointType: SquadWaypoints.Value): Unit = { squadFeatures.get(guid) match { case Some(features) => features.Waypoints.lift(waypointType.id) match { @@ -2625,16 +3021,19 @@ class SquadService extends Actor { * @param toCharId the player to whom the waypoint data will be dispatched * @param guid the squad's unique identifier */ - def InitWaypoints(toCharId : Long, guid : PlanetSideGUID) : Unit = { + def InitWaypoints(toCharId: Long, guid: PlanetSideGUID): Unit = { squadFeatures.get(guid) match { case Some(features) => val squad = features.Squad - val vz1 = Vector3.z(value = 1) - val list = features.Waypoints + val vz1 = Vector3.z(value = 1) + val list = features.Waypoints Publish( - toCharId, SquadResponse.InitWaypoints(squad.Leader.CharId, - list.zipWithIndex.collect { case (point, index) if point.pos != vz1 => - (SquadWaypoints(index), WaypointInfo(point.zone_number, point.pos), 1) + toCharId, + SquadResponse.InitWaypoints( + squad.Leader.CharId, + list.zipWithIndex.collect { + case (point, index) if point.pos != vz1 => + (SquadWaypoints(index), WaypointInfo(point.zone_number, point.pos), 1) } ) ) @@ -2647,7 +3046,7 @@ class SquadService extends Actor { * @param charId the player's unique character identifier number * @param sender the `ActorRef` associated with this character */ - def LeaveService(charId : String, sender : ActorRef) : Unit = { + def LeaveService(charId: String, sender: ActorRef): Unit = { LeaveService(charId.toLong, sender) } @@ -2656,7 +3055,7 @@ class SquadService extends Actor { * @param charId the player's unique character identifier number * @param sender the `ActorRef` associated with this character */ - def LeaveService(charId : Long, sender : ActorRef) : Unit = { + def LeaveService(charId: Long, sender: ActorRef): Unit = { refused.remove(charId) continueToMonitorDetails.remove(charId) RemoveAllInvitesWithPlayer(charId) @@ -2671,13 +3070,23 @@ class SquadService extends Actor { lSquadOpt match { case Some(_) => //leader of a squad; the squad will be disbanded - PanicDisbandSquad(squad, squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId }) + PanicDisbandSquad( + squad, + squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId } + ) case None if size == 2 => //one of the last two members of a squad; the squad will be disbanded - PanicDisbandSquad(squad, squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId }) + PanicDisbandSquad( + squad, + squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId } + ) case None => //not the leader of the squad; tell other members that we are leaving - PanicLeaveSquad(charId, squad, squad.Membership.zipWithIndex.find { case (_member, _) => _member.CharId == charId }) + PanicLeaveSquad( + charId, + squad, + squad.Membership.zipWithIndex.find { case (_member, _) => _member.CharId == charId } + ) } case None => //not a member of any squad; nothing to do here @@ -2696,7 +3105,7 @@ class SquadService extends Actor { * @param changes the highlighted aspects of the squad; * these "changes" do not have to reflect the actual squad but are related to the contents of the message */ - private def UpdateSquadListWhenListed(features : SquadFeatures, changes : SquadInfo) : Unit = { + private def UpdateSquadListWhenListed(features: SquadFeatures, changes: SquadInfo): Unit = { UpdateSquadListWhenListed(features, Some(changes)) } @@ -2710,9 +3119,9 @@ class SquadService extends Actor { * @param changes the optional highlighted aspects of the squad; * these "changes" do not have to reflect the actual squad but are related to the contents of the message */ - private def UpdateSquadListWhenListed(features : SquadFeatures, changes : Option[SquadInfo]) : Unit = { + private def UpdateSquadListWhenListed(features: SquadFeatures, changes: Option[SquadInfo]): Unit = { val squad = features.Squad - if(features.Listed) { + if (features.Listed) { UpdateSquadList(squad, changes) } } @@ -2748,9 +3157,9 @@ class SquadService extends Actor { * @param changes the optional highlighted aspects of the squad; * these "changes" do not have to reflect the actual squad but are related to the contents of the message */ - def UpdateSquadList(squad : Squad, changes : Option[SquadInfo]) : Unit = { - val guid = squad.GUID - val faction = squad.Faction + def UpdateSquadList(squad: Squad, changes: Option[SquadInfo]): Unit = { + val guid = squad.GUID + val faction = squad.Faction val factionListings = publishedLists(faction) factionListings.find(_ == guid) match { case Some(listedSquad) => @@ -2781,7 +3190,7 @@ class SquadService extends Actor { * @see `InitSquadDetail(PlanetSideGUID, Iterable[Long], Squad)` * @param squad the squad */ - def InitSquadDetail(squad : Squad) : Unit = { + def InitSquadDetail(squad: Squad): Unit = { InitSquadDetail( squad.GUID, squad.Membership.collect { case member if member.CharId > 0 => member.CharId }, @@ -2797,7 +3206,7 @@ class SquadService extends Actor { * @param to the unique character identifier numbers of the players who will receive this message * @param squad the squad from which the squad details shall be composed */ - def InitSquadDetail(guid : PlanetSideGUID, to : Iterable[Long], squad : Squad) : Unit = { + def InitSquadDetail(guid: PlanetSideGUID, to: Iterable[Long], squad: Squad): Unit = { val output = SquadResponse.Detail(guid, SquadService.Detail.Publish(squad)) to.foreach { Publish(_, output) } } @@ -2808,7 +3217,7 @@ class SquadService extends Actor { * @see `UpdateSquadDetail(PlanetSideGUID, PlanetSideGUID, List[Long], SquadDetail)` * @param squad the squad */ - def UpdateSquadDetail(squad : Squad) : Unit = { + def UpdateSquadDetail(squad: Squad): Unit = { UpdateSquadDetail( squad.GUID, squad.GUID, @@ -2827,7 +3236,7 @@ class SquadService extends Actor { * @see `UpdateSquadDetail(PlanetSideGUID, PlanetSideGUID, List[Long], SquadDetail)` * @param squad the squad */ - def UpdateSquadDetail(guid : PlanetSideGUID, squad : Squad) : Unit = { + def UpdateSquadDetail(guid: PlanetSideGUID, squad: Squad): Unit = { UpdateSquadDetail( guid, squad.GUID, @@ -2843,7 +3252,7 @@ class SquadService extends Actor { * @param guid the unique identifier number of the squad * @param details the squad details to be included in the message */ - def UpdateSquadDetail(guid : PlanetSideGUID, details : SquadDetail) : Unit = { + def UpdateSquadDetail(guid: PlanetSideGUID, details: SquadDetail): Unit = { UpdateSquadDetail( guid, guid, @@ -2867,7 +3276,12 @@ class SquadService extends Actor { * @param excluding the explicit unique character identifier numbers of individuals who should not receive the message * @param details the squad details to be included in the message */ - def UpdateSquadDetail(guid : PlanetSideGUID, toGuid : PlanetSideGUID, excluding : Iterable[Long], details : SquadDetail) : Unit = { + def UpdateSquadDetail( + guid: PlanetSideGUID, + toGuid: PlanetSideGUID, + excluding: Iterable[Long], + details: SquadDetail + ): Unit = { val output = SquadResponse.Detail(guid, details) squadFeatures.get(toGuid) match { case Some(features) => @@ -2875,8 +3289,9 @@ class SquadService extends Actor { case _ => ; } continueToMonitorDetails - .collect { case (charId, sguid) if sguid == guid && !excluding.exists(_ == charId) => - Publish(charId, output, Nil) + .collect { + case (charId, sguid) if sguid == guid && !excluding.exists(_ == charId) => + Publish(charId, output, Nil) } } @@ -2885,16 +3300,17 @@ class SquadService extends Actor { * @param faction the faction to which the squads belong * @return a `Vector` of transformed squad data */ - def PublishedLists(faction : PlanetSideEmpire.Type) : Vector[SquadInfo] = { + def PublishedLists(faction: PlanetSideEmpire.Type): Vector[SquadInfo] = { PublishedLists(publishedLists(faction)) } + /** * Transform a list of squad unique identifiers into a list of `SquadInfo` objects for updating the squad list window. * @param guids the list of squad unique identifier numbers * @return a `Vector` of transformed squad data */ - def PublishedLists(guids : Iterable[PlanetSideGUID]) : Vector[SquadInfo] = { - guids.map {guid => SquadService.SquadList.Publish(squadFeatures(guid).Squad) }.toVector + def PublishedLists(guids: Iterable[PlanetSideGUID]): Vector[SquadInfo] = { + guids.map { guid => SquadService.SquadList.Publish(squadFeatures(guid).Squad) }.toVector } } @@ -2904,8 +3320,8 @@ object SquadService { * Information necessary to display a specific map marker. */ class WaypointData() { - var zone_number : Int = 1 - var pos : Vector3 = Vector3.z(1) //a waypoint with a non-zero z-coordinate will flag as not getting drawn + var zone_number: Int = 1 + var pos: Vector3 = Vector3.z(1) //a waypoint with a non-zero z-coordinate will flag as not getting drawn } /** @@ -2913,9 +3329,9 @@ object SquadService { * @param char_id the inviting player's unique identifier number * @param name the inviting player's name */ - abstract class Invitation(char_id : Long, name : String) { - def InviterCharId : Long = char_id - def InviterName : String = name + abstract class Invitation(char_id: Long, name: String) { + def InviterCharId: Long = char_id + def InviterName: String = name } /** @@ -2925,8 +3341,8 @@ object SquadService { * @param squad_guid the squad with the role * @param position the index of the role */ - final case class RequestRole(player : Player, squad_guid : PlanetSideGUID, position : Int) - extends Invitation(player.CharId, player.Name) + final case class RequestRole(player: Player, squad_guid: PlanetSideGUID, position: Int) + extends Invitation(player.CharId, player.Name) /** * Utilized when one squad member issues an invite for some other player. @@ -2935,8 +3351,8 @@ object SquadService { * @param name the name the player who sent the invite * @param squad_guid the squad */ - final case class VacancyInvite(char_id : Long, name : String, squad_guid : PlanetSideGUID) - extends Invitation(char_id, name) + final case class VacancyInvite(char_id: Long, name: String, squad_guid: PlanetSideGUID) + extends Invitation(char_id, name) /** * Utilized to redirect an (accepted) invitation request to the proper squad leader. @@ -2945,8 +3361,8 @@ object SquadService { * may or may not have actually requested it in the first place * @param squad_guid the squad */ - final case class IndirectInvite(player : Player, squad_guid : PlanetSideGUID) - extends Invitation(player.CharId, player.Name) + final case class IndirectInvite(player: Player, squad_guid: PlanetSideGUID) + extends Invitation(player.CharId, player.Name) /** * Utilized in conjunction with an external queuing data structure @@ -2956,8 +3372,8 @@ object SquadService { * @param name the name of the squad leader * @param squad_guid the squad */ - final case class ProximityInvite(char_id : Long, name : String, squad_guid : PlanetSideGUID) - extends Invitation(char_id, name) + final case class ProximityInvite(char_id: Long, name: String, squad_guid: PlanetSideGUID) + extends Invitation(char_id, name) /** * Utilized in conjunction with an external queuing data structure @@ -2968,24 +3384,24 @@ object SquadService { * @param squad_guid the squad with the role * @param position the index of the role */ - final case class LookingForSquadRoleInvite(char_id : Long, name : String, squad_guid : PlanetSideGUID, position : Int) - extends Invitation(char_id, name) + final case class LookingForSquadRoleInvite(char_id: Long, name: String, squad_guid: PlanetSideGUID, position: Int) + extends Invitation(char_id, name) /** * Utilized when one player issues an invite for some other player for a squad that does not yet exist. * @param player na */ - final case class SpontaneousInvite(player : Player) - extends Invitation(player.CharId, player.Name) + final case class SpontaneousInvite(player: Player) extends Invitation(player.CharId, player.Name) object SquadList { + /** * Produce complete squad information. * @see `SquadInfo` * @param squad the squad * @return the squad's information to be used in the squad list */ - def Publish(squad : Squad) : SquadInfo = { + def Publish(squad: Squad): SquadInfo = { SquadInfo( squad.Leader.Name, squad.Task, @@ -2998,13 +3414,14 @@ object SquadService { } object Detail { + /** * Produce complete squad membership details. * @see `SquadDetail` * @param squad the squad * @return the squad's information to be used in the squad's detail window */ - def Publish(squad : Squad) : SquadDetail = { + def Publish(squad: Squad): SquadDetail = { SquadDetail() .Field1(squad.GUID.guid) .LeaderCharId(squad.Leader.CharId) @@ -3012,14 +3429,19 @@ object SquadService { .Task(squad.Task) .ZoneId(PlanetSideZoneID(squad.ZoneId)) .Members( - squad.Membership.zipWithIndex.map({ case (p, index) => - SquadPositionEntry(index, if(squad.Availability(index)) { - SquadPositionDetail(p.Role, p.Orders, p.Requirements, p.CharId, p.Name) - } - else { - SquadPositionDetail.Closed + squad.Membership.zipWithIndex + .map({ + case (p, index) => + SquadPositionEntry( + index, + if (squad.Availability(index)) { + SquadPositionDetail(p.Role, p.Orders, p.Requirements, p.CharId, p.Name) + } else { + SquadPositionDetail.Closed + } + ) }) - }).toList + .toList ) .Complete } @@ -3030,7 +3452,7 @@ object SquadService { * @param squad the squad * @param favorite the loadout object */ - def LoadSquadDefinition(squad : Squad, favorite : SquadLoadout) : Unit = { + def LoadSquadDefinition(squad: Squad, favorite: SquadLoadout): Unit = { squad.Task = favorite.task squad.ZoneId = favorite.zone_id.getOrElse(squad.ZoneId) squad.Availability.indices.foreach { index => squad.Availability.update(index, false) } diff --git a/common/src/main/scala/services/teamwork/SquadServiceMessage.scala b/common/src/main/scala/services/teamwork/SquadServiceMessage.scala index acff70e5..157a434a 100644 --- a/common/src/main/scala/services/teamwork/SquadServiceMessage.scala +++ b/common/src/main/scala/services/teamwork/SquadServiceMessage.scala @@ -6,7 +6,7 @@ import net.psforever.objects.zones.Zone import net.psforever.packet.game.{WaypointEventAction, WaypointInfo, SquadAction => PacketSquadAction} import net.psforever.types.{PlanetSideGUID, SquadRequestType, SquadWaypoints, Vector3} -final case class SquadServiceMessage(tplayer : Player, zone : Zone, actionMessage : Any) +final case class SquadServiceMessage(tplayer: Player, zone: Zone, actionMessage: Any) object SquadServiceMessage { final case class RecoverSquadMembership() @@ -16,10 +16,29 @@ object SquadAction { sealed trait Action final case class InitSquadList() extends Action - final case class InitCharId() extends Action + final case class InitCharId() extends Action - final case class Definition(guid : PlanetSideGUID, line : Int, action : PacketSquadAction) extends Action - final case class Membership(request_type : SquadRequestType.Value, unk2 : Long, unk3 : Option[Long], player_name : String, unk5 : Option[Option[String]]) extends Action - final case class Waypoint(event_type : WaypointEventAction.Value, waypoint_type : SquadWaypoints.Value, unk : Option[Long], waypoint_info : Option[WaypointInfo]) extends Action - final case class Update(char_id : Long, health : Int, max_health : Int, armor : Int, max_armor : Int, pos : Vector3, zone_number : Int) extends Action + final case class Definition(guid: PlanetSideGUID, line: Int, action: PacketSquadAction) extends Action + final case class Membership( + request_type: SquadRequestType.Value, + unk2: Long, + unk3: Option[Long], + player_name: String, + unk5: Option[Option[String]] + ) extends Action + final case class Waypoint( + event_type: WaypointEventAction.Value, + waypoint_type: SquadWaypoints.Value, + unk: Option[Long], + waypoint_info: Option[WaypointInfo] + ) extends Action + final case class Update( + char_id: Long, + health: Int, + max_health: Int, + armor: Int, + max_armor: Int, + pos: Vector3, + zone_number: Int + ) extends Action } diff --git a/common/src/main/scala/services/teamwork/SquadServiceResponse.scala b/common/src/main/scala/services/teamwork/SquadServiceResponse.scala index 59a3edd2..b3644e6f 100644 --- a/common/src/main/scala/services/teamwork/SquadServiceResponse.scala +++ b/common/src/main/scala/services/teamwork/SquadServiceResponse.scala @@ -7,40 +7,58 @@ import net.psforever.types.{PlanetSideGUID, SquadResponseType, SquadWaypoints} import services.GenericEventBusMsg import services.teamwork.SquadAction -final case class SquadServiceResponse(toChannel : String, exclude : Iterable[Long], response : SquadResponse.Response) extends GenericEventBusMsg +final case class SquadServiceResponse(toChannel: String, exclude: Iterable[Long], response: SquadResponse.Response) + extends GenericEventBusMsg object SquadServiceResponse { - def apply(toChannel : String, response : SquadResponse.Response) : SquadServiceResponse = + def apply(toChannel: String, response: SquadResponse.Response): SquadServiceResponse = SquadServiceResponse(toChannel, Nil, response) - def apply(toChannel : String, exclude : Long, response : SquadResponse.Response) : SquadServiceResponse = + def apply(toChannel: String, exclude: Long, response: SquadResponse.Response): SquadServiceResponse = SquadServiceResponse(toChannel, Seq(exclude), response) } object SquadResponse { sealed trait Response - final case class ListSquadFavorite(line : Int, task : String) extends Response + final case class ListSquadFavorite(line: Int, task: String) extends Response - final case class InitList(info : Vector[SquadInfo]) extends Response - final case class UpdateList(infos : Iterable[(Int, SquadInfo)]) extends Response - final case class RemoveFromList(infos : Iterable[Int]) extends Response + final case class InitList(info: Vector[SquadInfo]) extends Response + final case class UpdateList(infos: Iterable[(Int, SquadInfo)]) extends Response + final case class RemoveFromList(infos: Iterable[Int]) extends Response - final case class AssociateWithSquad(squad_guid : PlanetSideGUID) extends Response - final case class SetListSquad(squad_guid : PlanetSideGUID) extends Response + final case class AssociateWithSquad(squad_guid: PlanetSideGUID) extends Response + final case class SetListSquad(squad_guid: PlanetSideGUID) extends Response - final case class Membership(request_type : SquadResponseType.Value, unk1 : Int, unk2 : Int, unk3 : Long, unk4 : Option[Long], player_name : String, unk5 : Boolean, unk6 : Option[Option[String]]) extends Response //see SquadMembershipResponse - final case class WantsSquadPosition(leader_char_id : Long, bid_name : String) extends Response - final case class Join(squad : Squad, positionsToUpdate : List[Int], channel : String) extends Response - final case class Leave(squad : Squad, positionsToUpdate : List[(Long, Int)]) extends Response - final case class UpdateMembers(squad : Squad, update_info : List[SquadAction.Update]) extends Response - final case class AssignMember(squad : Squad, from_index : Int, to_index : Int) extends Response - final case class PromoteMember(squad : Squad, char_id : Long, from_index : Int, to_index : Int) extends Response + final case class Membership( + request_type: SquadResponseType.Value, + unk1: Int, + unk2: Int, + unk3: Long, + unk4: Option[Long], + player_name: String, + unk5: Boolean, + unk6: Option[Option[String]] + ) extends Response //see SquadMembershipResponse + final case class WantsSquadPosition(leader_char_id: Long, bid_name: String) extends Response + final case class Join(squad: Squad, positionsToUpdate: List[Int], channel: String) extends Response + final case class Leave(squad: Squad, positionsToUpdate: List[(Long, Int)]) extends Response + final case class UpdateMembers(squad: Squad, update_info: List[SquadAction.Update]) extends Response + final case class AssignMember(squad: Squad, from_index: Int, to_index: Int) extends Response + final case class PromoteMember(squad: Squad, char_id: Long, from_index: Int, to_index: Int) extends Response - final case class Detail(guid : PlanetSideGUID, squad_detail : SquadDetail) extends Response + final case class Detail(guid: PlanetSideGUID, squad_detail: SquadDetail) extends Response - final case class InitWaypoints(char_id : Long, waypoints : Iterable[(SquadWaypoints.Value, WaypointInfo, Int)]) extends Response - final case class WaypointEvent(event_type : WaypointEventAction.Value, char_id : Long, waypoint_type : SquadWaypoints.Value, unk5 : Option[Long], waypoint_info : Option[WaypointInfo], unk : Int) extends Response + final case class InitWaypoints(char_id: Long, waypoints: Iterable[(SquadWaypoints.Value, WaypointInfo, Int)]) + extends Response + final case class WaypointEvent( + event_type: WaypointEventAction.Value, + char_id: Long, + waypoint_type: SquadWaypoints.Value, + unk5: Option[Long], + waypoint_info: Option[WaypointInfo], + unk: Int + ) extends Response final case class SquadSearchResults() extends Response } diff --git a/common/src/main/scala/services/teamwork/SquadSwitchboard.scala b/common/src/main/scala/services/teamwork/SquadSwitchboard.scala index 165d757c..bea2ca74 100644 --- a/common/src/main/scala/services/teamwork/SquadSwitchboard.scala +++ b/common/src/main/scala/services/teamwork/SquadSwitchboard.scala @@ -13,6 +13,7 @@ import scala.collection.mutable * or can just vanish without having to properly clean itself up. */ class SquadSwitchboard extends Actor { + /** * This collection contains the message-sending contact reference for squad members. * Users are added to this collection via the `SquadSwitchboard.Join` message, or a @@ -21,7 +22,8 @@ class SquadSwitchboard extends Actor { * The message `SquadSwitchboard.Leave` removes the user from this collection. * key - unique character id; value - `Actor` reference for that character */ - val UserActorMap : mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + val UserActorMap: mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + /** * This collection contains the message-sending contact information for would-be squad members. * Users are added to this collection via the `SquadSwitchboard.DelayJoin` message @@ -29,7 +31,8 @@ class SquadSwitchboard extends Actor { * The message `SquadSwitchboard.Leave` removes the user from this collection. * key - unique character id; value - `Actor` reference for that character */ - val DelayedJoin : mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + val DelayedJoin: mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + /** * This collection contains the message-sending contact information for squad observers. * Squad observers only get "details" messages as opposed to the sort of messages squad members receive. @@ -38,17 +41,17 @@ class SquadSwitchboard extends Actor { * The message `SquadSwitchboard.Unwatch` also removes the user from this collection. * key - unique character id; value - `Actor` reference for that character */ - val Watchers : mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() + val Watchers: mutable.LongMap[ActorRef] = mutable.LongMap[ActorRef]() - override def postStop() : Unit = { + override def postStop(): Unit = { UserActorMap.clear() DelayedJoin.clear() Watchers.clear() } - def receive : Receive = { + def receive: Receive = { case SquadSwitchboard.Join(char_id, Some(actor)) => - UserActorMap(char_id) = DelayedJoin.remove(char_id).orElse( Watchers.remove(char_id)) match { + UserActorMap(char_id) = DelayedJoin.remove(char_id).orElse(Watchers.remove(char_id)) match { case Some(_actor) => context.watch(_actor) _actor @@ -58,7 +61,7 @@ class SquadSwitchboard extends Actor { } case SquadSwitchboard.Join(char_id, None) => - DelayedJoin.remove(char_id).orElse( Watchers.remove(char_id)) match { + DelayedJoin.remove(char_id).orElse(Watchers.remove(char_id)) match { case Some(actor) => UserActorMap(char_id) = actor case None => ; @@ -69,9 +72,10 @@ class SquadSwitchboard extends Actor { DelayedJoin(char_id) = actor case SquadSwitchboard.Leave(char_id) => - UserActorMap.find { case(charId, _) => charId == char_id } - .orElse(DelayedJoin.find { case(charId, _) => charId == char_id }) - .orElse(Watchers.find { case(charId, _) => charId == char_id }) match { + UserActorMap + .find { case (charId, _) => charId == char_id } + .orElse(DelayedJoin.find { case (charId, _) => charId == char_id }) + .orElse(Watchers.find { case (charId, _) => charId == char_id }) match { case Some((member, actor)) => context.unwatch(actor) UserActorMap.remove(member) @@ -96,21 +100,24 @@ class SquadSwitchboard extends Actor { case SquadSwitchboard.ToAll(msg) => UserActorMap - .foreach { case (_, actor) => - actor ! msg + .foreach { + case (_, actor) => + actor ! msg } case SquadSwitchboard.Except(excluded, msg) => UserActorMap .filterNot { case (char_id, _) => char_id == excluded } - .foreach { case (_, actor) => - actor ! msg + .foreach { + case (_, actor) => + actor ! msg } case Terminated(actorRef) => - UserActorMap.find { case(_, ref) => ref == actorRef } - .orElse(DelayedJoin.find { case(_, ref) => ref == actorRef }) - .orElse(Watchers.find { case(_, ref) => ref == actorRef }) match { + UserActorMap + .find { case (_, ref) => ref == actorRef } + .orElse(DelayedJoin.find { case (_, ref) => ref == actorRef }) + .orElse(Watchers.find { case (_, ref) => ref == actorRef }) match { case Some((member, actor)) => context.unwatch(actor) UserActorMap.remove(member) @@ -124,19 +131,19 @@ class SquadSwitchboard extends Actor { } object SquadSwitchboard { - final case class Join(char_id : Long, actor : Option[ActorRef]) + final case class Join(char_id: Long, actor: Option[ActorRef]) - final case class DelayJoin(char_id : Long, actor : ActorRef) + final case class DelayJoin(char_id: Long, actor: ActorRef) - final case class Leave(char_id : Long) + final case class Leave(char_id: Long) - final case class Watch(char_id : Long, actor : ActorRef) + final case class Watch(char_id: Long, actor: ActorRef) - final case class Unwatch(char_id : Long) + final case class Unwatch(char_id: Long) - final case class To(member : Long, msg : SquadServiceResponse) + final case class To(member: Long, msg: SquadServiceResponse) - final case class ToAll(msg : SquadServiceResponse) + final case class ToAll(msg: SquadServiceResponse) - final case class Except(excluded_member : Long, msg : SquadServiceResponse) + final case class Except(excluded_member: Long, msg: SquadServiceResponse) } diff --git a/common/src/main/scala/services/vehicle/VehicleService.scala b/common/src/main/scala/services/vehicle/VehicleService.scala index ff664e18..687f965c 100644 --- a/common/src/main/scala/services/vehicle/VehicleService.scala +++ b/common/src/main/scala/services/vehicle/VehicleService.scala @@ -18,10 +18,10 @@ import services.{GenericEventBus, RemoverActor, Service} import scala.concurrent.duration._ -class VehicleService(zone : Zone) extends Actor { - private val vehicleDecon : ActorRef = context.actorOf(Props[VehicleRemover], s"${zone.Id}-vehicle-decon-agent") - private val turretUpgrade : ActorRef = context.actorOf(Props[TurretUpgrader], s"${zone.Id}-turret-upgrade-agent") - private [this] val log = org.log4s.getLogger +class VehicleService(zone: Zone) extends Actor { + private val vehicleDecon: ActorRef = context.actorOf(Props[VehicleRemover], s"${zone.Id}-vehicle-decon-agent") + private val turretUpgrade: ActorRef = context.actorOf(Props[TurretUpgrader], s"${zone.Id}-turret-upgrade-agent") + private[this] val log = org.log4s.getLogger override def preStart = { log.trace(s"Awaiting ${zone.Id} vehicle events ...") @@ -32,7 +32,7 @@ class VehicleService(zone : Zone) extends Actor { def receive = { case Service.Join(channel) => val path = s"/$channel/Vehicle" - val who = sender() + val who = sender() log.info(s"$who has joined $path") VehicleEvents.subscribe(who, path) @@ -41,7 +41,7 @@ class VehicleService(zone : Zone) extends Actor { case Service.Leave(Some(channel)) => val path = s"/$channel/Vehicle" - val who = sender() + val who = sender() log.info(s"$who has left $path") VehicleEvents.unsubscribe(who, path) @@ -52,15 +52,27 @@ class VehicleService(zone : Zone) extends Actor { action match { case VehicleAction.ChildObjectState(player_guid, object_guid, pitch, yaw) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.ChildObjectState(object_guid, pitch, yaw)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.ChildObjectState(object_guid, pitch, yaw) + ) ) case VehicleAction.DeployRequest(player_guid, object_guid, state, unk1, unk2, pos) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.DeployRequest(object_guid, state, unk1, unk2, pos)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.DeployRequest(object_guid, state, unk1, unk2, pos) + ) ) case VehicleAction.DismountVehicle(player_guid, bailType, unk2) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.DismountVehicle(bailType, unk2)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.DismountVehicle(bailType, unk2) + ) ) case VehicleAction.EquipmentInSlot(player_guid, target_guid, slot, equipment) => val definition = equipment.Definition @@ -76,23 +88,43 @@ class VehicleService(zone : Zone) extends Actor { ) case VehicleAction.InventoryState(player_guid, obj, parent_guid, start, con_data) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.InventoryState(obj, parent_guid, start, con_data)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.InventoryState(obj, parent_guid, start, con_data) + ) ) case VehicleAction.InventoryState2(player_guid, obj_guid, parent_guid, value) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.InventoryState2(obj_guid, parent_guid, value)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.InventoryState2(obj_guid, parent_guid, value) + ) ) case VehicleAction.KickPassenger(player_guid, seat_num, kickedByDriver, vehicle_guid) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.KickPassenger(seat_num, kickedByDriver, vehicle_guid)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.KickPassenger(seat_num, kickedByDriver, vehicle_guid) + ) ) case VehicleAction.LoadVehicle(player_guid, vehicle, vtype, vguid, vdata) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata) + ) ) case VehicleAction.MountVehicle(player_guid, vehicle_guid, seat) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.MountVehicle(vehicle_guid, seat)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.MountVehicle(vehicle_guid, seat) + ) ) case VehicleAction.Ownership(player_guid, vehicle_guid) => VehicleEvents.publish( @@ -100,29 +132,80 @@ class VehicleService(zone : Zone) extends Actor { ) case VehicleAction.PlanetsideAttribute(exclude_guid, target_guid, attribute_type, attribute_value) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", exclude_guid, VehicleResponse.PlanetsideAttribute(target_guid, attribute_type, attribute_value)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + exclude_guid, + VehicleResponse.PlanetsideAttribute(target_guid, attribute_type, attribute_value) + ) ) case VehicleAction.SeatPermissions(player_guid, vehicle_guid, seat_group, permission) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.SeatPermissions(vehicle_guid, seat_group, permission)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.SeatPermissions(vehicle_guid, seat_group, permission) + ) ) case VehicleAction.StowEquipment(player_guid, vehicle_guid, slot, item) => val definition = item.Definition VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.StowEquipment(vehicle_guid, slot, definition.ObjectId, item.GUID, definition.Packet.DetailedConstructorData(item).get)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.StowEquipment( + vehicle_guid, + slot, + definition.ObjectId, + item.GUID, + definition.Packet.DetailedConstructorData(item).get + ) + ) ) case VehicleAction.UnloadVehicle(player_guid, continent, vehicle, vehicle_guid) => vehicleDecon ! RemoverActor.ClearSpecific(List(vehicle), continent) //precaution VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.UnloadVehicle(vehicle, vehicle_guid)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.UnloadVehicle(vehicle, vehicle_guid) + ) ) case VehicleAction.UnstowEquipment(player_guid, item_guid) => VehicleEvents.publish( VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.UnstowEquipment(item_guid)) ) - case VehicleAction.VehicleState(player_guid, vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6) => + case VehicleAction.VehicleState( + player_guid, + vehicle_guid, + unk1, + pos, + ang, + vel, + unk2, + unk3, + unk4, + wheel_direction, + unk5, + unk6 + ) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.VehicleState(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.VehicleState( + vehicle_guid, + unk1, + pos, + ang, + vel, + unk2, + unk3, + unk4, + wheel_direction, + unk5, + unk6 + ) + ) ) case VehicleAction.SendResponse(player_guid, msg) => VehicleEvents.publish( @@ -130,24 +213,42 @@ class VehicleService(zone : Zone) 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.UpdateAmsSpawnPoint(zone: Zone) => + sender ! VehicleServiceResponse( + s"/$forChannel/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.UpdateAmsSpawnPoint(AmsSpawnPoints(zone)) + ) - case VehicleAction.TransferPassengerChannel(player_guid, old_channel, temp_channel, vehicle, vehicle_to_delete) => + case VehicleAction.TransferPassengerChannel( + player_guid, + old_channel, + temp_channel, + vehicle, + vehicle_to_delete + ) => VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.TransferPassengerChannel(old_channel, temp_channel, vehicle, vehicle_to_delete)) + VehicleServiceResponse( + s"/$forChannel/Vehicle", + player_guid, + VehicleResponse.TransferPassengerChannel(old_channel, temp_channel, vehicle, vehicle_to_delete) + ) ) case VehicleAction.KickCargo(player_guid, cargo, speed, delay) => VehicleEvents.publish( VehicleServiceResponse(s"/$forChannel/Vehicle", player_guid, VehicleResponse.KickCargo(cargo, speed, delay)) ) - case VehicleAction.ChangeLoadout(target_guid, removed_weapons, new_weapons, old_inventory, new_inventory) => - VehicleEvents.publish( - VehicleServiceResponse(s"/$forChannel/Vehicle", Service.defaultPlayerGUID, VehicleResponse.ChangeLoadout(target_guid, removed_weapons, new_weapons, old_inventory, new_inventory)) + case VehicleAction.ChangeLoadout(target_guid, removed_weapons, new_weapons, old_inventory, new_inventory) => + VehicleEvents.publish( + VehicleServiceResponse( + s"/$forChannel/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.ChangeLoadout(target_guid, removed_weapons, new_weapons, old_inventory, new_inventory) ) + ) case _ => ; - } + } //message to VehicleRemover case VehicleServiceMessage.Decon(msg) => @@ -160,78 +261,130 @@ class VehicleService(zone : Zone) extends Actor { //from VehicleSpawnControl, etc. case VehicleSpawnPad.ConcealPlayer(player_guid) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.ConcealPlayer(player_guid)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.ConcealPlayer(player_guid) + ) ) case VehicleSpawnPad.AttachToRails(vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.AttachToRails(vehicle.GUID, pad.GUID)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.AttachToRails(vehicle.GUID, pad.GUID) + ) ) case VehicleSpawnPad.StartPlayerSeatedInVehicle(driver_name, vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/$driver_name/Vehicle", Service.defaultPlayerGUID, VehicleResponse.StartPlayerSeatedInVehicle(vehicle, pad)) + VehicleServiceResponse( + s"/$driver_name/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.StartPlayerSeatedInVehicle(vehicle, pad) + ) ) case VehicleSpawnPad.PlayerSeatedInVehicle(driver_name, vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/$driver_name/Vehicle", Service.defaultPlayerGUID, VehicleResponse.PlayerSeatedInVehicle(vehicle, pad)) + VehicleServiceResponse( + s"/$driver_name/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.PlayerSeatedInVehicle(vehicle, pad) + ) ) case VehicleSpawnPad.ServerVehicleOverrideStart(driver_name, vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/$driver_name/Vehicle", Service.defaultPlayerGUID, VehicleResponse.ServerVehicleOverrideStart(vehicle, pad)) + VehicleServiceResponse( + s"/$driver_name/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.ServerVehicleOverrideStart(vehicle, pad) + ) ) case VehicleSpawnPad.ServerVehicleOverrideEnd(driver_name, vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/$driver_name/Vehicle", Service.defaultPlayerGUID, VehicleResponse.ServerVehicleOverrideEnd(vehicle, pad)) + VehicleServiceResponse( + s"/$driver_name/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.ServerVehicleOverrideEnd(vehicle, pad) + ) ) case VehicleSpawnPad.DetachFromRails(vehicle, pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.DetachFromRails(vehicle.GUID, pad.GUID, pad.Position, pad.Orientation.z)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.DetachFromRails(vehicle.GUID, pad.GUID, pad.Position, pad.Orientation.z) + ) ) case VehicleSpawnPad.ResetSpawnPad(pad) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.ResetSpawnPad(pad.GUID)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.ResetSpawnPad(pad.GUID) + ) ) case VehicleSpawnPad.RevealPlayer(player_guid) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.RevealPlayer(player_guid)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.RevealPlayer(player_guid) + ) ) case VehicleSpawnPad.PeriodicReminder(to, reason, data) => VehicleEvents.publish( - VehicleServiceResponse(s"/$to/Vehicle", Service.defaultPlayerGUID, VehicleResponse.PeriodicReminder(reason, data)) + VehicleServiceResponse( + s"/$to/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.PeriodicReminder(reason, data) + ) ) case VehicleSpawnPad.LoadVehicle(vehicle) => val definition = vehicle.Definition - val vtype = definition.ObjectId - val vguid = vehicle.GUID - val vdata = definition.Packet.ConstructorData(vehicle).get + val vtype = definition.ObjectId + val vguid = vehicle.GUID + val vdata = definition.Packet.ConstructorData(vehicle).get zone.Transport ! Zone.Vehicle.Spawn(vehicle) VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata)) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata) + ) ) //correspondence from WorldSessionActor case VehicleServiceMessage.AMSDeploymentChange(_) => VehicleEvents.publish( - VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.UpdateAmsSpawnPoint(AmsSpawnPoints(zone))) + VehicleServiceResponse( + s"/${zone.Id}/Vehicle", + Service.defaultPlayerGUID, + VehicleResponse.UpdateAmsSpawnPoint(AmsSpawnPoints(zone)) + ) ) //from ProximityTerminalControl (?) - case ProximityUnit.Action(term, target : Vehicle) => - val medDef = term.Definition.asInstanceOf[MedicalTerminalDefinition] + case ProximityUnit.Action(term, target: Vehicle) => + val medDef = term.Definition.asInstanceOf[MedicalTerminalDefinition] val healAmount = medDef.HealAmount - if(healAmount != 0 && term.Validate(target) && target.Health < target.MaxHealth) { + if (healAmount != 0 && term.Validate(target) && target.Health < target.MaxHealth) { target.Health = target.Health + healAmount target.History(RepairFromTerm(VehicleSource(target), healAmount, medDef)) VehicleEvents.publish( - VehicleServiceResponse(s"/${term.Continent}/Vehicle", PlanetSideGUID(0), VehicleResponse.PlanetsideAttribute(target.GUID, 0, target.Health)) + VehicleServiceResponse( + s"/${term.Continent}/Vehicle", + PlanetSideGUID(0), + VehicleResponse.PlanetsideAttribute(target.GUID, 0, target.Health) + ) ) } @@ -240,22 +393,25 @@ class VehicleService(zone : Zone) extends Actor { } import net.psforever.objects.serverobject.tube.SpawnTube - def AmsSpawnPoints(zone : Zone) : List[SpawnTube] = { + def AmsSpawnPoints(zone: Zone): List[SpawnTube] = { import net.psforever.objects.vehicles.UtilityType import net.psforever.objects.GlobalDefinitions zone.Vehicles - .filter(veh => veh.Health > 0 && veh.Definition == GlobalDefinitions.ams && veh.DeploymentState == DriveState.Deployed) - .flatMap(veh => veh.Utilities.values.filter(util => util.UtilType == UtilityType.ams_respawn_tube) ) + .filter(veh => + veh.Health > 0 && veh.Definition == GlobalDefinitions.ams && veh.DeploymentState == DriveState.Deployed + ) + .flatMap(veh => veh.Utilities.values.filter(util => util.UtilType == UtilityType.ams_respawn_tube)) .map(util => util().asInstanceOf[SpawnTube]) } } object VehicleService { + /** * Before a vehicle is removed from the game world, the following actions must be performed. * @param vehicle the vehicle */ - def BeforeUnloadVehicle(vehicle : Vehicle, zone : Zone) : Unit = { + def BeforeUnloadVehicle(vehicle: Vehicle, zone: Zone): Unit = { vehicle.Definition match { case GlobalDefinitions.ams => zone.VehicleEvents ! VehicleServiceMessage.AMSDeploymentChange(zone) @@ -265,16 +421,16 @@ object VehicleService { } } - def RemoveTelepads(vehicle: Vehicle, zone : Zone) : Unit = { + def RemoveTelepads(vehicle: Vehicle, zone: Zone): Unit = { (vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => val telepad = util.Telepad util.Telepad = None zone.GUID(telepad) case _ => None }) match { - case Some(telepad : TelepadDeployable) => + case Some(telepad: TelepadDeployable) => telepad.Active = false zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(telepad), zone)) zone.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(telepad, zone, Some(0 seconds))) diff --git a/common/src/main/scala/services/vehicle/VehicleServiceMessage.scala b/common/src/main/scala/services/vehicle/VehicleServiceMessage.scala index 5fa5d672..53222913 100644 --- a/common/src/main/scala/services/vehicle/VehicleServiceMessage.scala +++ b/common/src/main/scala/services/vehicle/VehicleServiceMessage.scala @@ -9,45 +9,117 @@ import net.psforever.packet.PlanetSideGamePacket import net.psforever.packet.game.objectcreate.ConstructorData import net.psforever.types.{BailType, DriveState, PlanetSideGUID, Vector3} -final case class VehicleServiceMessage(forChannel : String, actionMessage : VehicleAction.Action) +final case class VehicleServiceMessage(forChannel: String, actionMessage: VehicleAction.Action) object VehicleServiceMessage { - final case class GiveActorControl(vehicle : Vehicle, actorName : String) - final case class RevokeActorControl(vehicle : Vehicle) + final case class GiveActorControl(vehicle: Vehicle, actorName: String) + final case class RevokeActorControl(vehicle: Vehicle) - final case class Decon(msg : Any) + final case class Decon(msg: Any) - final case class TurretUpgrade(msg : Any) + final case class TurretUpgrade(msg: Any) - final case class AMSDeploymentChange(zone : Zone) + final case class AMSDeploymentChange(zone: Zone) } object VehicleAction { trait Action - final case class ChildObjectState(player_guid : PlanetSideGUID, object_guid : PlanetSideGUID, pitch : Float, yaw : Float) extends Action - final case class DeployRequest(player_guid : PlanetSideGUID, object_guid : PlanetSideGUID, state : DriveState.Value, unk1 : Int, unk2 : Boolean, pos : Vector3) extends Action - final case class DismountVehicle(player_guid : PlanetSideGUID, bailType : BailType.Value, unk2 : Boolean) extends Action - final case class EquipmentInSlot(player_guid : PlanetSideGUID, target_guid : PlanetSideGUID, slot : Int, equipment : Equipment) extends Action - final case class InventoryState(player_guid : PlanetSideGUID, obj : PlanetSideGameObject, parent_guid : PlanetSideGUID, start : Int, con_data : ConstructorData) extends Action - final case class InventoryState2(player_guid : PlanetSideGUID, obj_guid : PlanetSideGUID, parent_guid : PlanetSideGUID, value : Int) extends Action - final case class KickPassenger(player_guid : PlanetSideGUID, unk1 : Int, unk2 : Boolean, vehicle_guid : PlanetSideGUID) extends Action - final case class LoadVehicle(player_guid : PlanetSideGUID, vehicle : Vehicle, vtype : Int, vguid : PlanetSideGUID, vdata : ConstructorData) extends Action - final case class MountVehicle(player_guid : PlanetSideGUID, object_guid : PlanetSideGUID, seat : Int) extends Action - final case class ObjectDelete(player_guid : PlanetSideGUID, weapon_guid : PlanetSideGUID) extends Action - final case class Ownership(player_guid : PlanetSideGUID, vehicle_guid : PlanetSideGUID) extends Action - final case class PlanetsideAttribute(player_guid : PlanetSideGUID, target_guid : PlanetSideGUID, attribute_type : Int, attribute_value : Long) extends Action - final case class SeatPermissions(player_guid : PlanetSideGUID, vehicle_guid : PlanetSideGUID, seat_group : Int, permission : Long) extends Action - final case class StowEquipment(player_guid : PlanetSideGUID, vehicle_guid : PlanetSideGUID, slot : Int, item : Equipment) extends Action - final case class UnloadVehicle(player_guid : PlanetSideGUID, continent : Zone, vehicle : Vehicle, vehicle_guid : PlanetSideGUID) extends Action - final case class UnstowEquipment(player_guid : PlanetSideGUID, item_guid : PlanetSideGUID) extends Action - 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 ChildObjectState(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, pitch: Float, yaw: Float) + extends Action + final case class DeployRequest( + player_guid: PlanetSideGUID, + object_guid: PlanetSideGUID, + state: DriveState.Value, + unk1: Int, + unk2: Boolean, + pos: Vector3 + ) extends Action + final case class DismountVehicle(player_guid: PlanetSideGUID, bailType: BailType.Value, unk2: Boolean) extends Action + final case class EquipmentInSlot( + player_guid: PlanetSideGUID, + target_guid: PlanetSideGUID, + slot: Int, + equipment: Equipment + ) extends Action + final case class InventoryState( + player_guid: PlanetSideGUID, + obj: PlanetSideGameObject, + parent_guid: PlanetSideGUID, + start: Int, + con_data: ConstructorData + ) extends Action + final case class InventoryState2( + player_guid: PlanetSideGUID, + obj_guid: PlanetSideGUID, + parent_guid: PlanetSideGUID, + value: Int + ) extends Action + final case class KickPassenger(player_guid: PlanetSideGUID, unk1: Int, unk2: Boolean, vehicle_guid: PlanetSideGUID) + extends Action + final case class LoadVehicle( + player_guid: PlanetSideGUID, + vehicle: Vehicle, + vtype: Int, + vguid: PlanetSideGUID, + vdata: ConstructorData + ) extends Action + final case class MountVehicle(player_guid: PlanetSideGUID, object_guid: PlanetSideGUID, seat: Int) extends Action + final case class ObjectDelete(player_guid: PlanetSideGUID, weapon_guid: PlanetSideGUID) extends Action + final case class Ownership(player_guid: PlanetSideGUID, vehicle_guid: PlanetSideGUID) extends Action + final case class PlanetsideAttribute( + player_guid: PlanetSideGUID, + target_guid: PlanetSideGUID, + attribute_type: Int, + attribute_value: Long + ) extends Action + final case class SeatPermissions( + player_guid: PlanetSideGUID, + vehicle_guid: PlanetSideGUID, + seat_group: Int, + permission: Long + ) extends Action + final case class StowEquipment(player_guid: PlanetSideGUID, vehicle_guid: PlanetSideGUID, slot: Int, item: Equipment) + extends Action + final case class UnloadVehicle( + player_guid: PlanetSideGUID, + continent: Zone, + vehicle: Vehicle, + vehicle_guid: PlanetSideGUID + ) extends Action + final case class UnstowEquipment(player_guid: PlanetSideGUID, item_guid: PlanetSideGUID) extends Action + 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, vehicle_to_delete : PlanetSideGUID) extends Action + final case class TransferPassengerChannel( + player_guid: PlanetSideGUID, + temp_channel: String, + new_channel: String, + vehicle: Vehicle, + vehicle_to_delete: PlanetSideGUID + ) extends Action - final case class KickCargo(player_guid : PlanetSideGUID, cargo : Vehicle, speed : Int, delay : Long) extends Action + final case class KickCargo(player_guid: PlanetSideGUID, cargo: Vehicle, speed: Int, delay: Long) extends Action - final case class ChangeLoadout(target_guid : PlanetSideGUID, removed_weapons : List[(Equipment, PlanetSideGUID)], new_weapons : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], new_inventory : List[InventoryItem]) extends Action + final case class ChangeLoadout( + target_guid: PlanetSideGUID, + removed_weapons: List[(Equipment, PlanetSideGUID)], + new_weapons: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + new_inventory: List[InventoryItem] + ) extends Action } diff --git a/common/src/main/scala/services/vehicle/VehicleServiceResponse.scala b/common/src/main/scala/services/vehicle/VehicleServiceResponse.scala index 93c16f5a..1b805a93 100644 --- a/common/src/main/scala/services/vehicle/VehicleServiceResponse.scala +++ b/common/src/main/scala/services/vehicle/VehicleServiceResponse.scala @@ -13,48 +13,96 @@ import net.psforever.packet.game.ObjectCreateMessage import net.psforever.types.{BailType, DriveState, PlanetSideGUID, Vector3} import services.GenericEventBusMsg -final case class VehicleServiceResponse(toChannel : String, - avatar_guid : PlanetSideGUID, - replyMessage : VehicleResponse.Response - ) extends GenericEventBusMsg +final case class VehicleServiceResponse( + toChannel: String, + avatar_guid: PlanetSideGUID, + replyMessage: VehicleResponse.Response +) extends GenericEventBusMsg object VehicleResponse { trait Response - final case class ChildObjectState(object_guid : PlanetSideGUID, pitch : Float, yaw : Float) extends Response - final case class ConcealPlayer(player_guid : PlanetSideGUID) extends Response - final case class DeployRequest(object_guid : PlanetSideGUID, state : DriveState.Value, unk1 : Int, unk2 : Boolean, pos : Vector3) extends Response - final case class DismountVehicle(bailType : BailType.Value , unk2 : Boolean) extends Response - final case class EquipmentInSlot(pkt : ObjectCreateMessage) extends Response - final case class HitHint(source_guid : PlanetSideGUID) extends Response - final case class InventoryState(obj : PlanetSideGameObject, parent_guid : PlanetSideGUID, start : Int, con_data : ConstructorData) extends Response - final case class InventoryState2(obj_guid : PlanetSideGUID, parent_guid : PlanetSideGUID, value : Int) extends Response - final case class KickPassenger(seat_num : Int, kickedByDriver : Boolean, vehicle_guid : PlanetSideGUID) extends Response - final case class LoadVehicle(vehicle : Vehicle, vtype : Int, vguid : PlanetSideGUID, vdata : ConstructorData) extends Response - final case class MountVehicle(object_guid : PlanetSideGUID, seat : Int) extends Response - final case class Ownership(vehicle_guid : PlanetSideGUID) extends Response - final case class PlanetsideAttribute(vehicle_guid : PlanetSideGUID, attribute_type : Int, attribute_value : Long) extends Response - final case class RevealPlayer(player_guid : PlanetSideGUID) extends Response - final case class SeatPermissions(vehicle_guid : PlanetSideGUID, seat_group : Int, permission : Long) extends Response - final case class StowEquipment(vehicle_guid : PlanetSideGUID, slot : Int, itype : Int, iguid : PlanetSideGUID, idata : ConstructorData) extends Response - final case class UnloadVehicle(vehicle : Vehicle, vehicle_guid : PlanetSideGUID) extends Response - final case class UnstowEquipment(item_guid : PlanetSideGUID) extends Response - 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 ChildObjectState(object_guid: PlanetSideGUID, pitch: Float, yaw: Float) extends Response + final case class ConcealPlayer(player_guid: PlanetSideGUID) extends Response + final case class DeployRequest( + object_guid: PlanetSideGUID, + state: DriveState.Value, + unk1: Int, + unk2: Boolean, + pos: Vector3 + ) extends Response + final case class DismountVehicle(bailType: BailType.Value, unk2: Boolean) extends Response + final case class EquipmentInSlot(pkt: ObjectCreateMessage) extends Response + final case class HitHint(source_guid: PlanetSideGUID) extends Response + final case class InventoryState( + obj: PlanetSideGameObject, + parent_guid: PlanetSideGUID, + start: Int, + con_data: ConstructorData + ) extends Response + final case class InventoryState2(obj_guid: PlanetSideGUID, parent_guid: PlanetSideGUID, value: Int) extends Response + final case class KickPassenger(seat_num: Int, kickedByDriver: Boolean, vehicle_guid: PlanetSideGUID) extends Response + final case class LoadVehicle(vehicle: Vehicle, vtype: Int, vguid: PlanetSideGUID, vdata: ConstructorData) + extends Response + final case class MountVehicle(object_guid: PlanetSideGUID, seat: Int) extends Response + final case class Ownership(vehicle_guid: PlanetSideGUID) extends Response + final case class PlanetsideAttribute(vehicle_guid: PlanetSideGUID, attribute_type: Int, attribute_value: Long) + extends Response + final case class RevealPlayer(player_guid: PlanetSideGUID) extends Response + final case class SeatPermissions(vehicle_guid: PlanetSideGUID, seat_group: Int, permission: Long) extends Response + final case class StowEquipment( + vehicle_guid: PlanetSideGUID, + slot: Int, + itype: Int, + iguid: PlanetSideGUID, + idata: ConstructorData + ) extends Response + final case class UnloadVehicle(vehicle: Vehicle, vehicle_guid: PlanetSideGUID) extends Response + final case class UnstowEquipment(item_guid: PlanetSideGUID) extends Response + 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 AttachToRails(vehicle_guid : PlanetSideGUID, rails_guid : PlanetSideGUID) extends Response - final case class StartPlayerSeatedInVehicle(vehicle : Vehicle, pad : VehicleSpawnPad) extends Response - final case class PlayerSeatedInVehicle(vehicle : Vehicle, pad : VehicleSpawnPad) extends Response - final case class DetachFromRails(vehicle_guid : PlanetSideGUID, rails_guid : PlanetSideGUID, rails_pos : Vector3, rails_rot : Float) extends Response - final case class ServerVehicleOverrideStart(vehicle : Vehicle, pad : VehicleSpawnPad) extends Response - final case class ServerVehicleOverrideEnd(vehicle : Vehicle, pad : VehicleSpawnPad) extends Response - final case class ResetSpawnPad(pad_guid : PlanetSideGUID) extends Response - final case class PeriodicReminder(reason : Reminders.Value, data : Option[Any] = None) extends Response + final case class AttachToRails(vehicle_guid: PlanetSideGUID, rails_guid: PlanetSideGUID) extends Response + final case class StartPlayerSeatedInVehicle(vehicle: Vehicle, pad: VehicleSpawnPad) extends Response + final case class PlayerSeatedInVehicle(vehicle: Vehicle, pad: VehicleSpawnPad) extends Response + final case class DetachFromRails( + vehicle_guid: PlanetSideGUID, + rails_guid: PlanetSideGUID, + rails_pos: Vector3, + rails_rot: Float + ) extends Response + final case class ServerVehicleOverrideStart(vehicle: Vehicle, pad: VehicleSpawnPad) extends Response + final case class ServerVehicleOverrideEnd(vehicle: Vehicle, pad: VehicleSpawnPad) extends Response + final case class ResetSpawnPad(pad_guid: PlanetSideGUID) extends Response + final case class PeriodicReminder(reason: Reminders.Value, data: Option[Any] = None) extends Response - final case class TransferPassengerChannel(old_channel : String, temp_channel : String, vehicle : Vehicle, vehicle_to_delete : PlanetSideGUID) extends Response + final case class TransferPassengerChannel( + old_channel: String, + temp_channel: String, + vehicle: Vehicle, + vehicle_to_delete: PlanetSideGUID + ) extends Response - final case class KickCargo(cargo : Vehicle, speed : Int, delay : Long) extends Response + final case class KickCargo(cargo: Vehicle, speed: Int, delay: Long) extends Response - final case class ChangeLoadout(target_guid : PlanetSideGUID, removed_weapons : List[(Equipment, PlanetSideGUID)], new_weapons : List[InventoryItem], old_inventory : List[(Equipment, PlanetSideGUID)], new_inventory : List[InventoryItem]) extends Response + final case class ChangeLoadout( + target_guid: PlanetSideGUID, + removed_weapons: List[(Equipment, PlanetSideGUID)], + new_weapons: List[InventoryItem], + old_inventory: List[(Equipment, PlanetSideGUID)], + new_inventory: List[InventoryItem] + ) extends Response } diff --git a/common/src/main/scala/services/vehicle/support/TurretUpgrader.scala b/common/src/main/scala/services/vehicle/support/TurretUpgrader.scala index d0e27daf..b4ac2266 100644 --- a/common/src/main/scala/services/vehicle/support/TurretUpgrader.scala +++ b/common/src/main/scala/services/vehicle/support/TurretUpgrader.scala @@ -14,16 +14,17 @@ import services.vehicle.{VehicleAction, VehicleServiceMessage} import services.{Service, ServiceManager} import scala.concurrent.duration._ +import scala.util.Success class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { - var task : Cancellable = Default.Cancellable + var task: Cancellable = Default.Cancellable - var list : List[TurretUpgrader.Entry] = List() + var list: List[TurretUpgrader.Entry] = List() - private var taskResolver : ActorRef = ActorRef.noSender + private var taskResolver: ActorRef = ActorRef.noSender val sameEntryComparator = new SimilarityComparator[TurretUpgrader.Entry]() { - def Test(entry1 : TurretUpgrader.Entry, entry2 : TurretUpgrader.Entry) : Boolean = { + def Test(entry1: TurretUpgrader.Entry, entry2: TurretUpgrader.Entry): Boolean = { entry1.obj == entry2.obj && entry1.zone == entry2.zone && entry1.obj.GUID == entry2.obj.GUID } } @@ -31,7 +32,7 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { /** * Send the initial message that requests a task resolver for assisting in the removal process. */ - override def preStart() : Unit = { + override def preStart(): Unit = { super.preStart() self ! Service.Startup() } @@ -41,7 +42,7 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { * Cancel all timers, rush all entries in the lists through their individual steps, then empty the lists. * This is an improved `HurryAll`. */ - override def postStop() : Unit = { + override def postStop(): Unit = { super.postStop() task.cancel list.foreach { UpgradeTurretAmmo } @@ -49,13 +50,16 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { taskResolver = ActorRef.noSender } - def CreateEntry(obj : PlanetSideGameObject, zone : Zone, upgrade : TurretUpgrade.Value, duration : Long) = TurretUpgrader.Entry(obj, zone, upgrade, duration) + def CreateEntry(obj: PlanetSideGameObject, zone: Zone, upgrade: TurretUpgrade.Value, duration: Long) = + TurretUpgrader.Entry(obj, zone, upgrade, duration) - def InclusionTest(entry : TurretUpgrader.Entry) : Boolean = entry.obj.isInstanceOf[FacilityTurret] + def InclusionTest(entry: TurretUpgrader.Entry): Boolean = entry.obj.isInstanceOf[FacilityTurret] - def receive : Receive = { + def receive: Receive = { case Service.Startup() => - ServiceManager.serviceManager ! ServiceManager.Lookup("taskResolver") //ask for a resolver to deal with the GUID system + ServiceManager.serviceManager ! ServiceManager.Lookup( + "taskResolver" + ) //ask for a resolver to deal with the GUID system case ServiceManager.LookupResult("taskResolver", endpoint) => taskResolver = endpoint @@ -65,52 +69,55 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { debug(s"received message $msg before being properly initialized") } - def Processing : Receive = entryManagementBehaviors - .orElse { - case TurretUpgrader.AddTask(turret, zone, upgrade, duration) => - val lengthOfTime = duration.getOrElse(TurretUpgrader.StandardUpgradeLifetime).toNanos - if(lengthOfTime > (1 second).toNanos) { //don't even bother if it's too short; it'll revert near instantly - val entry = CreateEntry(turret, zone, TurretUpgrade.None, lengthOfTime) - UpgradeTurretAmmo(CreateEntry(turret, zone, upgrade, lengthOfTime)) - if(list.isEmpty) { - //we were the only entry so the event must be started from scratch - list = List(entry) - trace(s"a task has been added: $entry") - RetimeFirstTask() - } - else{ - val oldHead = list.head - if(!list.exists(test => TurretUpgrader.Similarity(test, entry))) { - list = (list :+ entry).sortBy(entry => entry.time + entry.duration) + def Processing: Receive = + entryManagementBehaviors + .orElse { + case TurretUpgrader.AddTask(turret, zone, upgrade, duration) => + val lengthOfTime = duration.getOrElse(TurretUpgrader.StandardUpgradeLifetime).toNanos + if (lengthOfTime > (1 second).toNanos) { //don't even bother if it's too short; it'll revert near instantly + val entry = CreateEntry(turret, zone, TurretUpgrade.None, lengthOfTime) + UpgradeTurretAmmo(CreateEntry(turret, zone, upgrade, lengthOfTime)) + if (list.isEmpty) { + //we were the only entry so the event must be started from scratch + list = List(entry) trace(s"a task has been added: $entry") - if(oldHead != list.head) { - RetimeFirstTask() + RetimeFirstTask() + } else { + val oldHead = list.head + if (!list.exists(test => TurretUpgrader.Similarity(test, entry))) { + list = (list :+ entry).sortBy(entry => entry.time + entry.duration) + trace(s"a task has been added: $entry") + if (oldHead != list.head) { + RetimeFirstTask() + } } } } - } - case TurretUpgrader.Downgrade() => - task.cancel - val now : Long = System.nanoTime - val (in, out) = list.partition(entry => { now - entry.time >= entry.duration }) //&& entry.obj.Seats.values.count(_.isOccupied) == 0 - list = out - in.foreach { UpgradeTurretAmmo } - RetimeFirstTask() + case TurretUpgrader.Downgrade() => + task.cancel + val now: Long = System.nanoTime + val (in, out) = + list.partition(entry => { + now - entry.time >= entry.duration + }) //&& entry.obj.Seats.values.count(_.isOccupied) == 0 + list = out + in.foreach { UpgradeTurretAmmo } + RetimeFirstTask() - case _ => ; - } + case _ => ; + } - def RetimeFirstTask(now : Long = System.nanoTime) : Unit = { + def RetimeFirstTask(now: Long = System.nanoTime): Unit = { task.cancel - if(list.nonEmpty) { - val short_timeout : FiniteDuration = math.max(1, list.head.duration - (now - list.head.time)) nanoseconds + if (list.nonEmpty) { + val short_timeout: FiniteDuration = math.max(1, list.head.duration - (now - list.head.time)) nanoseconds import scala.concurrent.ExecutionContext.Implicits.global task = context.system.scheduler.scheduleOnce(short_timeout, self, TurretUpgrader.Downgrade()) } } - def HurrySpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def HurrySpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(list, targets.map { TurretUpgrader.Entry(_, zone, TurretUpgrade.None, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been hurried") @@ -118,33 +125,33 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { debug(s"the following tasks have been hurried: $in") in.foreach { UpgradeTurretAmmo } list = out //.sortBy(entry => entry.time + entry.duration) - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } } } - def HurryAll() : Unit = { + def HurryAll(): Unit = { trace("all tasks have been hurried") task.cancel list.foreach { UpgradeTurretAmmo } list = Nil } - def ClearSpecific(targets : List[PlanetSideGameObject], zone : Zone) : Unit = { + def ClearSpecific(targets: List[PlanetSideGameObject], zone: Zone): Unit = { PartitionTargetsFromList(list, targets.map { TurretUpgrader.Entry(_, zone, TurretUpgrade.None, 0) }, zone) match { case (Nil, _) => debug(s"no tasks matching the targets $targets have been cleared") case (in, out) => debug(s"the following tasks have been cleared: $in") list = out //.sortBy(entry => entry.time + entry.duration) - if(out.nonEmpty) { + if (out.nonEmpty) { RetimeFirstTask() } } } - def ClearAll() : Unit = { + def ClearAll(): Unit = { task.cancel list = Nil } @@ -157,22 +164,25 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { * and the new boxes that must be registered so the weapon may be introduced into the game world properly. * @param entry na */ - def UpgradeTurretAmmo(entry : TurretUpgrader.Entry) : Unit = { - val target = entry.obj.asInstanceOf[FacilityTurret] - val zone = entry.zone - val zoneId = zone.Id - val upgrade = entry.upgrade - val guid = zone.GUID + def UpgradeTurretAmmo(entry: TurretUpgrader.Entry): Unit = { + val target = entry.obj.asInstanceOf[FacilityTurret] + val zone = entry.zone + val zoneId = zone.Id + val upgrade = entry.upgrade + val guid = zone.GUID val turretGUID = target.GUID //kick all occupying players for duration of conversion target.Seats.values .filter { _.isOccupied } - .foreach({seat => + .foreach({ seat => val tplayer = seat.Occupant.get seat.Occupant = None tplayer.VehicleSeated = None - if(tplayer.HasGUID) { - context.parent ! VehicleServiceMessage(zoneId, VehicleAction.KickPassenger(tplayer.GUID, 4, false, turretGUID)) + if (tplayer.HasGUID) { + context.parent ! VehicleServiceMessage( + zoneId, + VehicleAction.KickPassenger(tplayer.GUID, 4, false, turretGUID) + ) } }) info(s"Converting manned wall turret weapon to $upgrade") @@ -183,35 +193,38 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { val oldBoxesTask = oldBoxes .filterNot { box => newBoxes.exists(_ eq box) } - .map(box => GUIDTask.UnregisterEquipment(box)(guid)).toList + .map(box => GUIDTask.UnregisterEquipment(box)(guid)) + .toList val newBoxesTask = TaskResolver.GiveTask( new Task() { - private val localFunc : ()=>Unit = FinishUpgradingTurret(entry) + private val localFunc: () => Unit = FinishUpgradingTurret(entry) override def isComplete = Task.Resolution.Success - def Execute(resolver : ActorRef) : Unit = { - resolver ! scala.util.Success(this) + def Execute(resolver: ActorRef): Unit = { + resolver ! Success(this) } - override def onSuccess() : Unit = { + override def onSuccess(): Unit = { super.onSuccess() localFunc() } }, newBoxes .filterNot { box => oldBoxes.exists(_ eq box) } - .map(box => GUIDTask.RegisterEquipment(box)(guid)).toList + .map(box => GUIDTask.RegisterEquipment(box)(guid)) + .toList ) taskResolver ! TaskResolver.GiveTask( new Task() { private val tasks = oldBoxesTask - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { tasks.foreach { resolver ! _ } - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(newBoxesTask) + }, + List(newBoxesTask) ) } @@ -220,11 +233,10 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { * @param target the object with mounted weaponry * @return all of the internal ammunition objects */ - def AllMountedWeaponMagazines(target : MountedWeapons) : Iterable[AmmoBox] = { - target.Weapons - .values + def AllMountedWeaponMagazines(target: MountedWeapons): Iterable[AmmoBox] = { + target.Weapons.values .map { _.Equipment } - .collect { case Some(tool : Tool) => tool.AmmoSlots } + .collect { case Some(tool: Tool) => tool.AmmoSlots } .flatMap { _.map { _.Box } } } @@ -234,27 +246,28 @@ class TurretUpgrader extends SupportActor[TurretUpgrader.Entry] { * It is now safe to announce that clients can update to the new weapon. * @param entry na */ - def FinishUpgradingTurret(entry : TurretUpgrader.Entry)() : Unit = { + def FinishUpgradingTurret(entry: TurretUpgrader.Entry)(): Unit = { val target = entry.obj.asInstanceOf[FacilityTurret] - val zone = entry.zone + val zone = entry.zone info(s"Wall turret finished ${target.Upgrade} upgrade") target.ConfirmUpgrade(entry.upgrade) val targetGUID = target.GUID - if(target.Health > 0) { + if (target.Health > 0) { target.Weapons .map({ case (index, slot) => (index, slot.Equipment) }) - .collect { case (index, Some(tool : Tool)) => - context.parent ! VehicleServiceMessage( - zone.Id, - VehicleAction.EquipmentInSlot(PlanetSideGUID(0), targetGUID, index, tool) - ) + .collect { + case (index, Some(tool: Tool)) => + context.parent ! VehicleServiceMessage( + zone.Id, + VehicleAction.EquipmentInSlot(PlanetSideGUID(0), targetGUID, index, tool) + ) } } } } object TurretUpgrader extends SupportActorCaseConversions { - private val StandardUpgradeLifetime : FiniteDuration = 30 minutes + private val StandardUpgradeLifetime: FiniteDuration = 30 minutes /** * All information necessary to apply to the removal process to produce an effect. @@ -264,13 +277,19 @@ object TurretUpgrader extends SupportActorCaseConversions { * @param upgrade the next upgrade state for this turret * @param _duration how much longer the target will exist in its current state (in nanoseconds) */ - case class Entry(_obj : PlanetSideGameObject, _zone : Zone, upgrade : TurretUpgrade.Value, _duration : Long) extends SupportActor.Entry(_obj, _zone, _duration) + case class Entry(_obj: PlanetSideGameObject, _zone: Zone, upgrade: TurretUpgrade.Value, _duration: Long) + extends SupportActor.Entry(_obj, _zone, _duration) - final case class AddTask(turret : PlanetSideServerObject with WeaponTurret, zone : Zone, upgrade : TurretUpgrade.Value, duration : Option[FiniteDuration] = None) + final case class AddTask( + turret: PlanetSideServerObject with WeaponTurret, + zone: Zone, + upgrade: TurretUpgrade.Value, + duration: Option[FiniteDuration] = None + ) final case class Downgrade() - private def Similarity(entry1 : TurretUpgrader.Entry, entry2 : TurretUpgrader.Entry) : Boolean = { + private def Similarity(entry1: TurretUpgrader.Entry, entry2: TurretUpgrader.Entry): Boolean = { entry1.obj == entry2.obj && entry1.zone == entry2.zone && entry1.obj.GUID == entry2.obj.GUID } } diff --git a/common/src/main/scala/services/vehicle/support/VehicleRemover.scala b/common/src/main/scala/services/vehicle/support/VehicleRemover.scala index 7ddab7a2..26800601 100644 --- a/common/src/main/scala/services/vehicle/support/VehicleRemover.scala +++ b/common/src/main/scala/services/vehicle/support/VehicleRemover.scala @@ -7,14 +7,16 @@ import net.psforever.objects.guid.GUIDTask.UnregisterVehicle import services.{RemoverActor, ServiceManager} class VehicleRemover extends Actor { - var taskResolver : ActorRef = ActorRef.noSender + var taskResolver: ActorRef = ActorRef.noSender - override def preStart() : Unit = { + override def preStart(): Unit = { super.preStart() - ServiceManager.serviceManager ! ServiceManager.Lookup("taskResolver") //ask for a resolver to deal with the GUID system + ServiceManager.serviceManager ! ServiceManager.Lookup( + "taskResolver" + ) //ask for a resolver to deal with the GUID system } - def receive : Receive = { + def receive: Receive = { case ServiceManager.LookupResult("taskResolver", endpoint) => taskResolver = endpoint context.become(Processing) @@ -22,8 +24,8 @@ class VehicleRemover extends Actor { case _ => ; } - def Processing : Receive = { - case RemoverActor.AddTask(obj : Vehicle, zone, _) => + def Processing: Receive = { + case RemoverActor.AddTask(obj: Vehicle, zone, _) => taskResolver ! UnregisterVehicle(obj)(zone.GUID) case _ => ; diff --git a/common/src/main/scala/sna/Library.scala b/common/src/main/scala/sna/Library.scala index cf24cc01..91fc0224 100644 --- a/common/src/main/scala/sna/Library.scala +++ b/common/src/main/scala/sna/Library.scala @@ -18,9 +18,9 @@ import com.sun.jna.{Function => JNAFunction} import scala.collection.mutable import scala.language.dynamics -class Library (val libName: String) extends Dynamic { +class Library(val libName: String) extends Dynamic { - class Invocation (val jnaFunction: JNAFunction, val args: Array[Object]) { + class Invocation(val jnaFunction: JNAFunction, val args: Array[Object]) { // TODO: this does not call without a passed type parameter def apply[R](implicit m: Manifest[R]): R = { @@ -32,7 +32,7 @@ class Library (val libName: String) extends Dynamic { } } - def as[R](implicit m: Manifest[R]) = apply[R](m) + def as[R](implicit m: Manifest[R]) = apply[R](m) def asInstanceOf[R](implicit m: Manifest[R]) = apply[R](m) } @@ -40,7 +40,7 @@ class Library (val libName: String) extends Dynamic { new Invocation(loadFunction(functionName), args.map(_.asInstanceOf[Object]).toArray[Object]) } - private def loadFunction(functionName : String) : JNAFunction = { + private def loadFunction(functionName: String): JNAFunction = { var jnaFunction: JNAFunction = null if (functionCache.contains(functionName)) { jnaFunction = functionCache(functionName) @@ -52,7 +52,7 @@ class Library (val libName: String) extends Dynamic { jnaFunction } - def prefetch(functionName : String) : Unit = { + def prefetch(functionName: String): Unit = { loadFunction(functionName) } diff --git a/common/src/test/scala/CodecTest.scala b/common/src/test/scala/CodecTest.scala index f213848a..fd1a25dd 100644 --- a/common/src/test/scala/CodecTest.scala +++ b/common/src/test/scala/CodecTest.scala @@ -61,8 +61,8 @@ class CodecTest extends Specification { "Angular" should { "roll" should { - val string_roll_0 = hex"00" - val string_roll_90 = hex"20" + val string_roll_0 = hex"00" + val string_roll_90 = hex"20" val string_roll_180 = hex"40" val string_roll_270 = hex"60" @@ -100,8 +100,8 @@ class CodecTest extends Specification { } "pitch" should { - val string_pitch_0 = hex"00" - val string_pitch_90 = hex"60" + val string_pitch_0 = hex"00" + val string_pitch_90 = hex"60" val string_pitch_180 = hex"40" val string_pitch_270 = hex"20" @@ -139,14 +139,14 @@ class CodecTest extends Specification { } "yaw, normal" should { - val string_pitch_0 = hex"00" - val string_pitch_90 = hex"60" + val string_pitch_0 = hex"00" + val string_pitch_90 = hex"60" val string_pitch_180 = hex"40" val string_pitch_270 = hex"20" - val string_yaw_0 = hex"20" - val string_yaw_90 = hex"00" - val string_yaw_180 = hex"60" - val string_yaw_270 = hex"40" + val string_yaw_0 = hex"20" + val string_yaw_90 = hex"00" + val string_yaw_180 = hex"60" + val string_yaw_270 = hex"40" "decode (0)" in { Angular.codec_yaw(0f).decode(string_yaw_0.bits).require.value mustEqual 270f @@ -182,8 +182,8 @@ class CodecTest extends Specification { } "yaw, North-corrected" should { - val string_yaw_0 = hex"20" - val string_yaw_90 = hex"00" + val string_yaw_0 = hex"20" + val string_yaw_90 = hex"00" val string_yaw_180 = hex"60" val string_yaw_270 = hex"40" diff --git a/common/src/test/scala/CosmeticsTest.scala b/common/src/test/scala/CosmeticsTest.scala index 4d67324d..a47c6bbf 100644 --- a/common/src/test/scala/CosmeticsTest.scala +++ b/common/src/test/scala/CosmeticsTest.scala @@ -18,7 +18,9 @@ class CosmeticsTest extends Specification { Cosmetics().pstyles mustEqual 0 Cosmetics(3).pstyles mustEqual 3 Cosmetics(PersonalStyle.NoHelmet).pstyles mustEqual PersonalStyle.NoHelmet.id - Cosmetics(Set(PersonalStyle.NoHelmet, PersonalStyle.Earpiece)).pstyles mustEqual PersonalStyle.NoHelmet.id + PersonalStyle.Earpiece.id + Cosmetics( + Set(PersonalStyle.NoHelmet, PersonalStyle.Earpiece) + ).pstyles mustEqual PersonalStyle.NoHelmet.id + PersonalStyle.Earpiece.id Cosmetics(true, false, false, false, false).pstyles mustEqual PersonalStyle.NoHelmet.id } diff --git a/common/src/test/scala/CryptoInterfaceTest.scala b/common/src/test/scala/CryptoInterfaceTest.scala index d794cd5c..3c005155 100644 --- a/common/src/test/scala/CryptoInterfaceTest.scala +++ b/common/src/test/scala/CryptoInterfaceTest.scala @@ -5,7 +5,8 @@ import net.psforever.crypto.CryptoInterface import net.psforever.crypto.CryptoInterface.CryptoDHState import scodec.bits._ -class CryptoInterfaceTest extends Specification { args(stopOnFail = true) +class CryptoInterfaceTest extends Specification { + args(stopOnFail = true) "Crypto interface" should { "correctly initialize" in { CryptoInterface.initialize() @@ -13,13 +14,13 @@ class CryptoInterfaceTest extends Specification { args(stopOnFail = true) } "encrypt and decrypt" in { - val key = hex"41414141" + val key = hex"41414141" val plaintext = ByteVector.fill(16)(0x42) val crypto = new CryptoInterface.CryptoState(key, key) val ciphertext = crypto.encrypt(plaintext) - val decrypted = crypto.decrypt(ciphertext) + val decrypted = crypto.decrypt(ciphertext) crypto.close decrypted mustEqual plaintext @@ -27,13 +28,13 @@ class CryptoInterfaceTest extends Specification { args(stopOnFail = true) } "encrypt and decrypt must handle no bytes" in { - val key = hex"41414141" + val key = hex"41414141" val empty = ByteVector.empty val crypto = new CryptoInterface.CryptoState(key, key) val ciphertext = crypto.encrypt(empty) - val decrypted = crypto.decrypt(ciphertext) + val decrypted = crypto.decrypt(ciphertext) crypto.close @@ -42,8 +43,8 @@ class CryptoInterfaceTest extends Specification { args(stopOnFail = true) } "encrypt and decrypt must only accept block aligned inputs" in { - val key = hex"41414141" - val badPad = ByteVector.fill(CryptoInterface.RC5_BLOCK_SIZE-1)('a') + val key = hex"41414141" + val badPad = ByteVector.fill(CryptoInterface.RC5_BLOCK_SIZE - 1)('a') val crypto = new CryptoInterface.CryptoState(key, key) @@ -109,7 +110,7 @@ class CryptoInterfaceTest extends Specification { args(stopOnFail = true) "safely handle multiple starts" in { val dontCare = ByteVector.fill(16)(0x42) - val dh = new CryptoDHState() + val dh = new CryptoDHState() dh.start() dh.start() must throwA[IllegalStateException] @@ -120,7 +121,7 @@ class CryptoInterfaceTest extends Specification { args(stopOnFail = true) "prevent function calls before initialization" in { val dontCare = ByteVector.fill(16)(0x42) - val dh = new CryptoDHState() + val dh = new CryptoDHState() dh.getGenerator must throwA[IllegalStateException] dh.getModulus must throwA[IllegalStateException] diff --git a/common/src/test/scala/CryptoPacketTest.scala b/common/src/test/scala/CryptoPacketTest.scala index 629e4ce7..767e8ebd 100644 --- a/common/src/test/scala/CryptoPacketTest.scala +++ b/common/src/test/scala/CryptoPacketTest.scala @@ -32,7 +32,7 @@ class CryptoPacketTest extends Specification { val string = hex"00261e2751bdc1ce000000000001d300000002".bits "decode" in { - val res = Codec.decode[ServerStart](string) + val res = Codec.decode[ServerStart](string) val value = res.require.value value.clientNonce mustEqual cNonce @@ -47,16 +47,16 @@ class CryptoPacketTest extends Specification { } "ClientChallengeXchg" should { - val time = hex"962d8453" + val time = hex"962d8453" val timeDecoded = scodec.codecs.uint32L.decode(time.bits).require.value - val challenge = hex"24f5997c c7d16031 d1f567e9" - val p = hex"f57511eb 8e5d1efb 8b7f3287 d5a18b17" - val g = hex"00000000 00000000 00000000 00000002" + val challenge = hex"24f5997c c7d16031 d1f567e9" + val p = hex"f57511eb 8e5d1efb 8b7f3287 d5a18b17" + val g = hex"00000000 00000000 00000000 00000002" val string = (hex"0101" ++ time ++ challenge ++ hex"00 01 0002 ff 2400 00 1000" ++ p ++ hex"1000" ++ g ++ hex"0000010307000000").bits "decode" in { - val res = Codec.decode[ClientChallengeXchg](string) + val res = Codec.decode[ClientChallengeXchg](string) val value = res.require.value value.time mustEqual timeDecoded @@ -73,14 +73,14 @@ class CryptoPacketTest extends Specification { } "ServerChallengeXchg" should { - val time = hex"962d8453" + val time = hex"962d8453" val timeDecoded = scodec.codecs.uint32L.decode(time.bits).require.value - val challenge = hex"1b0e6408 cd935ec2 429aeb58" - val pubKey = hex"51f83ce6 45e86c3e 79c8fc70 f6ddf14b" - val string = (hex"0201" ++ time ++ challenge ++ hex"00 01 03070000000c00 1000 " ++ pubKey ++ hex"0e").bits + val challenge = hex"1b0e6408 cd935ec2 429aeb58" + val pubKey = hex"51f83ce6 45e86c3e 79c8fc70 f6ddf14b" + val string = (hex"0201" ++ time ++ challenge ++ hex"00 01 03070000000c00 1000 " ++ pubKey ++ hex"0e").bits "decode" in { - val res = Codec.decode[ServerChallengeXchg](string) + val res = Codec.decode[ServerChallengeXchg](string) val value = res.require.value value.time mustEqual timeDecoded @@ -97,11 +97,11 @@ class CryptoPacketTest extends Specification { "ClientFinished" should { val challengeResult = hex"ea3cf05d a5cb4256 8bb91aa7" - val pubKey = hex"eddc35f2 52b02d0e 496ba273 54578e73" - val string = (hex"10 1000" ++ pubKey ++ hex"0114 " ++ challengeResult).bits + val pubKey = hex"eddc35f2 52b02d0e 496ba273 54578e73" + val string = (hex"10 1000" ++ pubKey ++ hex"0114 " ++ challengeResult).bits "decode" in { - val res = Codec.decode[ClientFinished](string) + val res = Codec.decode[ClientFinished](string) val value = res.require.value value.challengeResult mustEqual challengeResult @@ -117,10 +117,10 @@ class CryptoPacketTest extends Specification { "ServerFinished" should { val challengeResult = hex"d64ffb8e 526311b4 af46bece" - val string = (hex"0114" ++ challengeResult).bits + val string = (hex"0114" ++ challengeResult).bits "decode" in { - val res = Codec.decode[ServerFinished](string) + val res = Codec.decode[ServerFinished](string) val value = res.require.value value.challengeResult mustEqual challengeResult diff --git a/common/src/test/scala/PacketCodingTest.scala b/common/src/test/scala/PacketCodingTest.scala index b02c6eb5..dadbb59c 100644 --- a/common/src/test/scala/PacketCodingTest.scala +++ b/common/src/test/scala/PacketCodingTest.scala @@ -32,7 +32,7 @@ class PacketCodingTest extends Specification { val serverNonce = 848483 val packetUnderTest = ServerStart(clientNonce, serverNonce) - val pkt = PacketCoding.MarshalPacket(ControlPacket(packetUnderTest.opcode, packetUnderTest)).require + val pkt = PacketCoding.MarshalPacket(ControlPacket(packetUnderTest.opcode, packetUnderTest)).require val decoded = PacketCoding.UnmarshalPacket(pkt.toByteVector).require.asInstanceOf[ControlPacket] val recvPkt = decoded.packet.asInstanceOf[ServerStart] diff --git a/common/src/test/scala/Vector3Test.scala b/common/src/test/scala/Vector3Test.scala index aed9abcf..0566066e 100644 --- a/common/src/test/scala/Vector3Test.scala +++ b/common/src/test/scala/Vector3Test.scala @@ -78,14 +78,14 @@ class Vector3Test extends Specification { } "calculate the unit vector (zero)" in { - Vector3.Unit(Vector3.Zero) mustEqual Vector3(0,0,0) + Vector3.Unit(Vector3.Zero) mustEqual Vector3(0, 0, 0) } "calculate the unit vector (normal)" in { import Vector3._ - val one_root_two : Float = (1/math.sqrt(2)).toFloat - val one_root_three : Float = (1/math.sqrt(3)).toFloat - val ulp : Float = math.ulp(1) //measure of insignificance + val one_root_two: Float = (1 / math.sqrt(2)).toFloat + val one_root_three: Float = (1 / math.sqrt(3)).toFloat + val ulp: Float = math.ulp(1) //measure of insignificance Unit(Vector3(1, 0, 0)) mustEqual Vector3(1, 0, 0) 1 - Magnitude(Vector3(1, 0, 0)) < ulp mustEqual true @@ -110,9 +110,9 @@ class Vector3Test extends Specification { } "calculate the cross product (identity)" in { - val Vx : Vector3 = Vector3(1, 0, 0) - val Vy : Vector3 = Vector3(0, 1, 0) - val Vz : Vector3 = Vector3(0, 0, 1) + val Vx: Vector3 = Vector3(1, 0, 0) + val Vy: Vector3 = Vector3(0, 1, 0) + val Vz: Vector3 = Vector3(0, 0, 1) Vector3.CrossProduct(Vx, Vy) mustEqual Vz Vector3.CrossProduct(Vy, Vz) mustEqual Vx @@ -124,86 +124,86 @@ class Vector3Test extends Specification { } "calculate the cross product (full)" in { - val A : Vector3 = Vector3(2, 1, -1) - val B : Vector3 = Vector3(-3, 4, 1) + val A: Vector3 = Vector3(2, 1, -1) + val B: Vector3 = Vector3(-3, 4, 1) Vector3.CrossProduct(A, B) mustEqual Vector3(5, 1, 11) Vector3.CrossProduct(B, A) mustEqual Vector3(-5, -1, -11) } "find a perpendicular vector with cross product" in { - val A : Vector3 = Vector3(2, 1, -1) - val B : Vector3 = Vector3(-3, 4, 1) - val C : Vector3 = Vector3.CrossProduct(A, B) + val A: Vector3 = Vector3(2, 1, -1) + val B: Vector3 = Vector3(-3, 4, 1) + val C: Vector3 = Vector3.CrossProduct(A, B) Vector3.DotProduct(A, C) mustEqual 0 Vector3.DotProduct(B, C) mustEqual 0 } "calculate the scalar projection (perpendicular vectors)" in { - val Vx : Vector3 = Vector3(1, 0, 0) - val Vy : Vector3 = Vector3(0, 1, 0) + val Vx: Vector3 = Vector3(1, 0, 0) + val Vy: Vector3 = Vector3(0, 1, 0) Vector3.ScalarProjection(Vx, Vy) mustEqual 0 } "calculate the scalar projection (parallel vectors)" in { - val A : Vector3 = Vector3(2, 0, 0) - val B : Vector3 = Vector3(10, 0, 0) + val A: Vector3 = Vector3(2, 0, 0) + val B: Vector3 = Vector3(10, 0, 0) Vector3.ScalarProjection(A, B) mustEqual 2 Vector3.ScalarProjection(B, A) mustEqual 10 } "calculate the scalar projection (antiparallel vectors)" in { - val A : Vector3 = Vector3(2, 0, 0) - val B : Vector3 = Vector3(-10, 0, 0) + val A: Vector3 = Vector3(2, 0, 0) + val B: Vector3 = Vector3(-10, 0, 0) Vector3.ScalarProjection(A, B) mustEqual -2 Vector3.ScalarProjection(B, A) mustEqual -10 } "calculate the scalar projection (normal)" in { - val A : Vector3 = Vector3(2, 1, -1) - val B : Vector3 = Vector3(3, 4, 1) + val A: Vector3 = Vector3(2, 1, -1) + val B: Vector3 = Vector3(3, 4, 1) Vector3.ScalarProjection(A, B) mustEqual 1.7650452f Vector3.ScalarProjection(B, A) mustEqual 3.6742344f } "calculate the vector projection (perpendicular vectors)" in { - val Vx : Vector3 = Vector3(1, 0, 0) - val Vy : Vector3 = Vector3(0, 1, 0) + val Vx: Vector3 = Vector3(1, 0, 0) + val Vy: Vector3 = Vector3(0, 1, 0) Vector3.VectorProjection(Vx, Vy) mustEqual Vector3.Zero } "calculate the vector projection (parallel vectors)" in { - val A : Vector3 = Vector3(2, 0, 0) - val B : Vector3 = Vector3(10, 0, 0) + val A: Vector3 = Vector3(2, 0, 0) + val B: Vector3 = Vector3(10, 0, 0) Vector3.VectorProjection(A, B) mustEqual A Vector3.VectorProjection(B, A) mustEqual B } "calculate the vector projection (antiparallel vectors)" in { - val A : Vector3 = Vector3(2, 0, 0) - val B : Vector3 = Vector3(-10, 0, 0) + val A: Vector3 = Vector3(2, 0, 0) + val B: Vector3 = Vector3(-10, 0, 0) Vector3.VectorProjection(A, B) mustEqual A Vector3.VectorProjection(B, A) mustEqual B } "calculate the vector projection (normal)" in { - val A : Vector3 = Vector3(2, 1, -1) - val B : Vector3 = Vector3(3, 4, 1) + val A: Vector3 = Vector3(2, 1, -1) + val B: Vector3 = Vector3(3, 4, 1) Vector3.VectorProjection(A, B) mustEqual Vector3(1.0384614f, 1.3846153f, 0.34615383f) Vector3.VectorProjection(B, A) mustEqual Vector3(2.9999998f, 1.4999999f, -1.4999999f) } "rotate positive x-axis-vector 90-degrees around the z-axis" in { - val A : Vector3 = Vector3(1, 0, 0) + val A: Vector3 = Vector3(1, 0, 0) A.Rz(0) mustEqual A A.Rz(90) mustEqual Vector3(0, 1, 0) A.Rz(180) mustEqual Vector3(-1, 0, 0) @@ -212,7 +212,7 @@ class Vector3Test extends Specification { } "rotate positive y-axis-vector 90-degrees around the x-axis" in { - val A : Vector3 = Vector3(0, 1, 0) + val A: Vector3 = Vector3(0, 1, 0) A.Rx(0) mustEqual A A.Rx(90) mustEqual Vector3(0, 0, 1) A.Rx(180) mustEqual Vector3(0, -1, 0) @@ -221,7 +221,7 @@ class Vector3Test extends Specification { } "rotate positive x-axis-vector 90-degrees around the y-axis" in { - val A : Vector3 = Vector3(1, 0, 0) + val A: Vector3 = Vector3(1, 0, 0) A.Ry(0) mustEqual A A.Ry(90) mustEqual Vector3(0, 0, -1) A.Ry(180) mustEqual Vector3(-1, 0, 0) @@ -230,14 +230,14 @@ class Vector3Test extends Specification { } "compound rotation" in { - val A : Vector3 = Vector3(1, 0, 0) + val A: Vector3 = Vector3(1, 0, 0) A.Rz(90) .Rx(90) .Ry(90) mustEqual A } "45-degree rotation" in { - val A : Vector3 = Vector3(1, 0, 0) + val A: Vector3 = Vector3(1, 0, 0) A.Rz(45) mustEqual Vector3(0.70710677f, 0.70710677f, 0) } } diff --git a/common/src/test/scala/base/ActorTest.scala b/common/src/test/scala/base/ActorTest.scala index 2e736a67..fe207658 100644 --- a/common/src/test/scala/base/ActorTest.scala +++ b/common/src/test/scala/base/ActorTest.scala @@ -12,9 +12,14 @@ import org.specs2.specification.Scope import scala.collection.mutable import scala.concurrent.duration.FiniteDuration -abstract class ActorTest(sys : ActorSystem = ActorSystem("system", ConfigFactory.parseMap(ActorTest.LoggingConfig))) - extends TestKit(sys) with Scope with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll { - override def afterAll : Unit = { +abstract class ActorTest(sys: ActorSystem = ActorSystem("system", ConfigFactory.parseMap(ActorTest.LoggingConfig))) + extends TestKit(sys) + with Scope + with ImplicitSender + with AnyWordSpecLike + with Matchers + with BeforeAndAfterAll { + override def afterAll: Unit = { TestKit.shutdownActorSystem(system) } } @@ -22,9 +27,9 @@ abstract class ActorTest(sys : ActorSystem = ActorSystem("system", ConfigFactory object ActorTest { import scala.jdk.CollectionConverters._ private val LoggingConfig = Map( - "akka.loggers" -> List("akka.testkit.TestEventListener").asJava, - "akka.loglevel" -> "OFF", - "akka.stdout-loglevel" -> "OFF", + "akka.loggers" -> List("akka.testkit.TestEventListener").asJava, + "akka.loglevel" -> "OFF", + "akka.stdout-loglevel" -> "OFF", "akka.log-dead-letters" -> "OFF" ).asJava @@ -39,7 +44,7 @@ object ActorTest { * @param sys what to poll * @return a list of messages */ - def receiveMultiple(n : Int, timeout : FiniteDuration, sys : TestKit) : List[Any] = { + def receiveMultiple(n: Int, timeout: FiniteDuration, sys: TestKit): List[Any] = { assert(0 < n, s"number of expected messages must be positive non-zero integer - $n") val out = { val msgs = mutable.ListBuffer[Any]() @@ -61,17 +66,16 @@ object ActorTest { * @param sendTo where to send mesages that have originated from an `actorProps` object; * typically should point back to the test environment constructed by `TestKit` */ - class SupportActorInterface(actorProps : Props, sendTo : ActorRef) extends Actor { + class SupportActorInterface(actorProps: Props, sendTo: ActorRef) extends Actor { val test = context.actorOf(actorProps, "support-actor") - def receive : Receive = { + def receive: Receive = { case msg => - (if(sender == test) { - sendTo - } - else { - test - }) ! msg + (if (sender == test) { + sendTo + } else { + test + }) ! msg } } } diff --git a/common/src/test/scala/base/FreedContextActorTest.scala b/common/src/test/scala/base/FreedContextActorTest.scala index 759b85fe..7c8c09c2 100644 --- a/common/src/test/scala/base/FreedContextActorTest.scala +++ b/common/src/test/scala/base/FreedContextActorTest.scala @@ -21,20 +21,20 @@ abstract class FreedContextActorTest extends ActorTest { various bizarre mechanisms have to be developed to use any methods that would pass in a context object. We create a middleman Actor whose main purpose is to surrender its context object to the test environment directly and then direct all messages sent to that object to the test environment. - */ - private val _testContextHandler = system.actorOf(Props(classOf[ContextSensitive]), "actor-test-cs") - private implicit val timeout = Timeout(5 seconds) + */ + private val _testContextHandler = system.actorOf(Props(classOf[ContextSensitive]), "actor-test-cs") + private implicit val timeout = Timeout(5 seconds) private val _testContextHandlerResult = ask(_testContextHandler, message = "", self) - implicit val context = Await.result(_testContextHandlerResult, timeout.duration).asInstanceOf[ActorContext] + implicit val context = Await.result(_testContextHandlerResult, timeout.duration).asInstanceOf[ActorContext] } /** * Surrender your `context` object for a greater good! */ private class ContextSensitive extends Actor { - var output : ActorRef = ActorRef.noSender + var output: ActorRef = ActorRef.noSender - def receive : Receive = { + def receive: Receive = { case _ => context.become(PassThroughBehavior) output = sender @@ -48,7 +48,7 @@ private class ContextSensitive extends Actor { * will now refer to whatever was the contact to gain access to it - the test environment. * @return something to `become` */ - def PassThroughBehavior : Receive = { + def PassThroughBehavior: Receive = { case msg => output forward msg } } diff --git a/common/src/test/scala/control/ControlSyncRespTest.scala b/common/src/test/scala/control/ControlSyncRespTest.scala index dec5fa70..43be4027 100644 --- a/common/src/test/scala/control/ControlSyncRespTest.scala +++ b/common/src/test/scala/control/ControlSyncRespTest.scala @@ -14,7 +14,7 @@ class ControlSyncRespTest extends Specification { case ControlSyncResp(a, b, c, d, e, f) => a mustEqual 21096 - b mustEqual 0x21392D92 + b mustEqual 0x21392d92 c mustEqual 0x276 d mustEqual 0x275 e mustEqual 0x275 @@ -25,7 +25,7 @@ class ControlSyncRespTest extends Specification { } "encode" in { - val encoded = PacketCoding.EncodePacket(ControlSyncResp(21096, 0x21392D92, 0x276, 0x275, 0x275, 0x276)).require + val encoded = PacketCoding.EncodePacket(ControlSyncResp(21096, 0x21392d92, 0x276, 0x275, 0x275, 0x276)).require encoded.toByteVector mustEqual string } diff --git a/common/src/test/scala/control/HandleGamePacketTest.scala b/common/src/test/scala/control/HandleGamePacketTest.scala index 840f7e3b..c3f85878 100644 --- a/common/src/test/scala/control/HandleGamePacketTest.scala +++ b/common/src/test/scala/control/HandleGamePacketTest.scala @@ -8,7 +8,8 @@ import scodec.bits._ class HandleGamePacketTest extends Specification { //this is the first from a series of SlottedMetaPacket4s; the length field was modified from 12 DC to pass the test - val base = hex"18 D5 96 00 00 BC 8E 00 03 A2 16 5D A4 5F B0 80 00 04 30 40 00 08 30 46 00 4A 00 48 00 02 02 F0 62 1E 80 80 00 00 00 00 00 3F FF CC 0D 40 00 20 00 03 00 27 C3 01 C8 00 00 03 08 00 00 03 FF FF FF FC A4 04 00 00 62 00 18 02 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 C8 00 00 01 00 7E C8 00 C8 00 00 00 5D B0 81 40 00 00 00 00 00 00 00 00 00 00 00 00 02 C0 00 40 83 85 46 86 C7 07 8A 4A 80 70 0C 00 01 98 00 00 01 24 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 30 90 78 70 65 5F 6A 6F 69 6E 5F 70 6C 61 74 6F 6F 6E 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 34 8F 78 70 65 5F 6A 6F 69 6E 5F 6F 75 74 66 69 74 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 31 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 39 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 38 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 33 93 78 70 65 5F 77 61 72 70 5F 67 61 74 65 5F 75 73 61 67 65 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 32 92 78 70 65 5F 69 6E 73 74 61 6E 74 5F 61 63 74 69 6F 6E 8E 78 70 65 5F 66 6F 72 6D 5F 73 71 75 61 64 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 36 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 37 8E 78 70 65 5F 6A 6F 69 6E 5F 73 71 75 61 64 8C 78 70 65 5F 62 69 6E 64 5F 61 6D 73 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 35 91 78 70 65 5F 62 69 6E 64 5F 66 61 63 69 6C 69 74" + val base = + hex"18 D5 96 00 00 BC 8E 00 03 A2 16 5D A4 5F B0 80 00 04 30 40 00 08 30 46 00 4A 00 48 00 02 02 F0 62 1E 80 80 00 00 00 00 00 3F FF CC 0D 40 00 20 00 03 00 27 C3 01 C8 00 00 03 08 00 00 03 FF FF FF FC A4 04 00 00 62 00 18 02 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 C8 00 00 01 00 7E C8 00 C8 00 00 00 5D B0 81 40 00 00 00 00 00 00 00 00 00 00 00 00 02 C0 00 40 83 85 46 86 C7 07 8A 4A 80 70 0C 00 01 98 00 00 01 24 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 30 90 78 70 65 5F 6A 6F 69 6E 5F 70 6C 61 74 6F 6F 6E 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 34 8F 78 70 65 5F 6A 6F 69 6E 5F 6F 75 74 66 69 74 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 31 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 39 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 38 92 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 31 33 93 78 70 65 5F 77 61 72 70 5F 67 61 74 65 5F 75 73 61 67 65 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 32 92 78 70 65 5F 69 6E 73 74 61 6E 74 5F 61 63 74 69 6F 6E 8E 78 70 65 5F 66 6F 72 6D 5F 73 71 75 61 64 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 36 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 37 8E 78 70 65 5F 6A 6F 69 6E 5F 73 71 75 61 64 8C 78 70 65 5F 62 69 6E 64 5F 61 6D 73 91 78 70 65 5F 62 61 74 74 6C 65 5F 72 61 6E 6B 5F 35 91 78 70 65 5F 62 69 6E 64 5F 66 61 63 69 6C 69 74" val string = hex"00 00 01 CB" ++ base "decode" in { diff --git a/common/src/test/scala/control/MultiPacketCollectorTest.scala b/common/src/test/scala/control/MultiPacketCollectorTest.scala index 71dbae0e..c626ece8 100644 --- a/common/src/test/scala/control/MultiPacketCollectorTest.scala +++ b/common/src/test/scala/control/MultiPacketCollectorTest.scala @@ -108,7 +108,7 @@ class MultiPacketCollectorTest extends Specification { "clear packets after being asked to bundle" in { val list = List(packet1, packet2) - val obj = MultiPacketCollector(list) + val obj = MultiPacketCollector(list) obj.Bundle match { case Some(MultiPacketBundle(bundle)) => @@ -182,7 +182,7 @@ class MultiPacketCollectorTest extends Specification { obj2.Add(packet3) obj2.Add(bundle1) obj2.Bundle match { - case Some(MultiPacketBundle(list))=> + case Some(MultiPacketBundle(list)) => list.size mustEqual 3 list.head mustEqual packet3 list(1) mustEqual packet1 diff --git a/common/src/test/scala/control/MultiPacketExTest.scala b/common/src/test/scala/control/MultiPacketExTest.scala index 3909f6c1..1ad2fb30 100644 --- a/common/src/test/scala/control/MultiPacketExTest.scala +++ b/common/src/test/scala/control/MultiPacketExTest.scala @@ -31,13 +31,13 @@ class MultiPacketExTest extends Specification { "decode" in { Fragment.foreach(strings.indices) { i => - "test "+i ! { MultiPacketEx.decode(strings{i}.bits).require.value mustEqual packets{i} } + "test " + i ! { MultiPacketEx.decode(strings { i }.bits).require.value mustEqual packets { i } } } } "encode" in { Fragment.foreach(packets.indices) { i => - "test "+i ! { MultiPacketEx.encode(packets{i}).require.toByteVector mustEqual strings{i} } + "test " + i ! { MultiPacketEx.encode(packets { i }).require.toByteVector mustEqual strings { i } } } } diff --git a/common/src/test/scala/control/MultiPacketTest.scala b/common/src/test/scala/control/MultiPacketTest.scala index 35a7489d..6ca39a49 100644 --- a/common/src/test/scala/control/MultiPacketTest.scala +++ b/common/src/test/scala/control/MultiPacketTest.scala @@ -7,14 +7,17 @@ import net.psforever.packet.control._ import scodec.bits._ class MultiPacketTest extends Specification { - val string = hex"00 03 04 00 15 13 23 3A 00 09 03 E3 00 19 16 6D 56 05 68 05 40 A0 EF 45 00 15 0E 44 00 A0 A2 41 00 00 0F 88 00 06 E4 C0 60 00 00 00 15 E4 32 40 74 72 61 69 6E 69 6E 67 5F 77 65 61 70 6F 6E 73 30 31 13 BD 68 05 53 F6 EF 90 D1 6E 03 14 FE 78 8C 20 1C C0 00 00 1F 00 09 03 E4 6D 56 05 68 05 40 A0 EF 45 00 15 0E 44 30 89 A1 41 00 00 0F 8A 01 00 04 18 EF 80" + val string = + hex"00 03 04 00 15 13 23 3A 00 09 03 E3 00 19 16 6D 56 05 68 05 40 A0 EF 45 00 15 0E 44 00 A0 A2 41 00 00 0F 88 00 06 E4 C0 60 00 00 00 15 E4 32 40 74 72 61 69 6E 69 6E 67 5F 77 65 61 70 6F 6E 73 30 31 13 BD 68 05 53 F6 EF 90 D1 6E 03 14 FE 78 8C 20 1C C0 00 00 1F 00 09 03 E4 6D 56 05 68 05 40 A0 EF 45 00 15 0E 44 30 89 A1 41 00 00 0F 8A 01 00 04 18 EF 80" "decode" in { PacketCoding.DecodePacket(string).require match { case MultiPacket(data) => data.size mustEqual 4 data(0) mustEqual hex"00151323" - data(1) mustEqual hex"000903e30019166d5605680540a0ef4500150e4400a0a24100000f880006e4c06000000015e43240747261696e696e675f776561706f6e733031" + data( + 1 + ) mustEqual hex"000903e30019166d5605680540a0ef4500150e4400a0a24100000f880006e4c06000000015e43240747261696e696e675f776561706f6e733031" data(2) mustEqual hex"bd680553f6ef90d16e0314fe788c201cc00000" data(3) mustEqual hex"000903e46d5605680540a0ef4500150e443089a14100000f8a01000418ef80" case _ => diff --git a/common/src/test/scala/control/SlottedMetaPacketTest.scala b/common/src/test/scala/control/SlottedMetaPacketTest.scala index 7f5569ec..4b5f88f6 100644 --- a/common/src/test/scala/control/SlottedMetaPacketTest.scala +++ b/common/src/test/scala/control/SlottedMetaPacketTest.scala @@ -19,10 +19,14 @@ class SlottedMetaPacketTest extends Specification { hex"0069006400650021002000018667656D" ++ hex"696E690100040001459E2540377540" - def createMetaPacket(slot : Int, subslot : Int, rest : ByteVector) = hex"00" ++ - ControlPacketOpcode.codec.encode( - ControlPacketOpcode(ControlPacketOpcode.SlottedMetaPacket0.id + slot) - ).require.toByteVector ++ uint16.encode(subslot).require.toByteVector ++ rest + def createMetaPacket(slot: Int, subslot: Int, rest: ByteVector) = + hex"00" ++ + ControlPacketOpcode.codec + .encode( + ControlPacketOpcode(ControlPacketOpcode.SlottedMetaPacket0.id + slot) + ) + .require + .toByteVector ++ uint16.encode(subslot).require.toByteVector ++ rest "decode as the base slot and subslot" in { PacketCoding.DecodePacket(string).require match { @@ -42,11 +46,10 @@ class SlottedMetaPacketTest extends Specification { Fragment.foreach(0 to maxSlots) { i => "slot " + i ! { val subslot = 12323 - val pkt = createMetaPacket(i, subslot, ByteVector.empty) + val pkt = createMetaPacket(i, subslot, ByteVector.empty) PacketCoding.DecodePacket(pkt).require match { case SlottedMetaPacket(slot, subslotDecoded, rest) => - // XXX: there isn't a simple solution to Slot0 and Slot4 be aliases of each other structurally // This is probably best left to higher layers //slot mustEqual i % 4 // this is seen at 0x00A3FBFA @@ -61,7 +64,7 @@ class SlottedMetaPacketTest extends Specification { } "encode" in { - val encoded = PacketCoding.EncodePacket(SlottedMetaPacket(0, 0x1000, ByteVector.empty)).require + val encoded = PacketCoding.EncodePacket(SlottedMetaPacket(0, 0x1000, ByteVector.empty)).require val encoded2 = PacketCoding.EncodePacket(SlottedMetaPacket(3, 0xffff, hex"414243")).require val encoded3 = PacketCoding.EncodePacket(SlottedMetaPacket(7, 0, hex"00")).require diff --git a/common/src/test/scala/game/AvatarDeadStateMessageTest.scala b/common/src/test/scala/game/AvatarDeadStateMessageTest.scala index f1db1008..68e404af 100644 --- a/common/src/test/scala/game/AvatarDeadStateMessageTest.scala +++ b/common/src/test/scala/game/AvatarDeadStateMessageTest.scala @@ -8,16 +8,16 @@ import net.psforever.types.{PlanetSideEmpire, Vector3} import scodec.bits._ class AvatarDeadStateMessageTest extends Specification { - val string = hex"ad3c1260801c12608009f99861fb0741e040000010" + val string = hex"ad3c1260801c12608009f99861fb0741e040000010" val string_invalid = hex"ad3c1260801c12608009f99861fb0741e0400000F0" "decode" in { PacketCoding.DecodePacket(string).require match { - case AvatarDeadStateMessage(unk1,unk2,unk3,pos,unk4,unk5) => + case AvatarDeadStateMessage(unk1, unk2, unk3, pos, unk4, unk5) => unk1 mustEqual DeadState.Dead unk2 mustEqual 300000 unk3 mustEqual 300000 - pos mustEqual Vector3(6552.617f,4602.375f,60.90625f) + pos mustEqual Vector3(6552.617f, 4602.375f, 60.90625f) unk4 mustEqual PlanetSideEmpire.VS unk5 mustEqual true case _ => @@ -30,7 +30,14 @@ class AvatarDeadStateMessageTest extends Specification { } "encode" in { - val msg = AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, Vector3(6552.617f,4602.375f,60.90625f), PlanetSideEmpire.VS, true) + val msg = AvatarDeadStateMessage( + DeadState.Dead, + 300000, + 300000, + Vector3(6552.617f, 4602.375f, 60.90625f), + PlanetSideEmpire.VS, + true + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/AvatarStatisticsMessageTest.scala b/common/src/test/scala/game/AvatarStatisticsMessageTest.scala index bca185fb..ddbc966d 100644 --- a/common/src/test/scala/game/AvatarStatisticsMessageTest.scala +++ b/common/src/test/scala/game/AvatarStatisticsMessageTest.scala @@ -8,7 +8,8 @@ import scodec.bits._ class AvatarStatisticsMessageTest extends Specification { val string_long = hex"7F 4 00000000 0" - val string_complex = hex"7F 01 3C 40 20 00 00 00 C0 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00" + val string_complex = + hex"7F 01 3C 40 20 00 00 00 C0 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00" "decode (long)" in { PacketCoding.DecodePacket(string_long).require match { @@ -51,29 +52,29 @@ class AvatarStatisticsMessageTest extends Specification { } "encode (complex)" in { - val msg = AvatarStatisticsMessage(0, Statistics(1, 572, List[Long](1,6,0,1,1,2,0,0))) + val msg = AvatarStatisticsMessage(0, Statistics(1, 572, List[Long](1, 6, 0, 1, 1, 2, 0, 0))) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_complex } "encode (failure; long; missing value)" in { - val msg = AvatarStatisticsMessage(0, Statistics(None, None,List(0L))) + val msg = AvatarStatisticsMessage(0, Statistics(None, None, List(0L))) PacketCoding.EncodePacket(msg).isFailure mustEqual true } "encode (failure; complex; missing value (5-bit))" in { - val msg = AvatarStatisticsMessage(0, Statistics(None, Some(572), List[Long](1,6,0,1,1,2,0,0))) + val msg = AvatarStatisticsMessage(0, Statistics(None, Some(572), List[Long](1, 6, 0, 1, 1, 2, 0, 0))) PacketCoding.EncodePacket(msg).isFailure mustEqual true } "encode (failure; complex; missing value (11-bit))" in { - val msg = AvatarStatisticsMessage(0, Statistics(Some(1), None, List[Long](1,6,0,1,1,2,0,0))) + val msg = AvatarStatisticsMessage(0, Statistics(Some(1), None, List[Long](1, 6, 0, 1, 1, 2, 0, 0))) PacketCoding.EncodePacket(msg).isFailure mustEqual true } "encode (failure; complex; wrong number of list entries)" in { - val msg = AvatarStatisticsMessage(0, Statistics(Some(1), None, List[Long](1,6,0,1))) + val msg = AvatarStatisticsMessage(0, Statistics(Some(1), None, List[Long](1, 6, 0, 1))) PacketCoding.EncodePacket(msg).isFailure mustEqual true } } diff --git a/common/src/test/scala/game/AvatarVehicleTimerMessageTest.scala b/common/src/test/scala/game/AvatarVehicleTimerMessageTest.scala index db489dfa..897e98b9 100644 --- a/common/src/test/scala/game/AvatarVehicleTimerMessageTest.scala +++ b/common/src/test/scala/game/AvatarVehicleTimerMessageTest.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scodec.bits._ class AvatarVehicleTimerMessageTest extends Specification { - val string = hex"57bd16866d65646b69740500000000" + val string = hex"57bd16866d65646b69740500000000" val string2 = hex"57971b84667572794800000080" "decode medkit" in { @@ -35,13 +35,13 @@ class AvatarVehicleTimerMessageTest extends Specification { } "encode medkit" in { - val msg = AvatarVehicleTimerMessage(PlanetSideGUID(5821),"medkit",5,false) + val msg = AvatarVehicleTimerMessage(PlanetSideGUID(5821), "medkit", 5, false) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode fury" in { - val msg = AvatarVehicleTimerMessage(PlanetSideGUID(7063),"fury",72,true) + val msg = AvatarVehicleTimerMessage(PlanetSideGUID(7063), "fury", 72, true) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string2 diff --git a/common/src/test/scala/game/BattleplanMessageTest.scala b/common/src/test/scala/game/BattleplanMessageTest.scala index 811ebcd7..ed3804c1 100644 --- a/common/src/test/scala/game/BattleplanMessageTest.scala +++ b/common/src/test/scala/game/BattleplanMessageTest.scala @@ -7,11 +7,15 @@ import net.psforever.packet.game._ import scodec.bits._ class BattleplanMessageTest extends Specification { - val string_start = hex"b3 3a197902 94 59006500740041006e006f0074006800650072004600610069006c0075007200650041006c007400 0000 01 e0" - val string_stop = hex"b3 3a197902 94 59006500740041006e006f0074006800650072004600610069006c0075007200650041006c007400 0000 01 f0" - val string_line = hex"b3 85647702 8c 4f0075007400730074006100620075006c006f0075007300 0a00 20 2aba2b4aae8bd2aba334aae8dd2aca3b4ab28fd2aca414ab29152aca474ab292d2ada4d4ab69452ada534ab695d2ada594ab696d2ada5d4ab697d2ada614ab698d2ada654ab699d2ada694ab69ad2aea6d4aba9bd2aea714aba9cd2aea754aba9dd2aea794aba9ed" + val string_start = + hex"b3 3a197902 94 59006500740041006e006f0074006800650072004600610069006c0075007200650041006c007400 0000 01 e0" + val string_stop = + hex"b3 3a197902 94 59006500740041006e006f0074006800650072004600610069006c0075007200650041006c007400 0000 01 f0" + val string_line = + hex"b3 85647702 8c 4f0075007400730074006100620075006c006f0075007300 0a00 20 2aba2b4aae8bd2aba334aae8dd2aca3b4ab28fd2aca414ab29152aca474ab292d2ada4d4ab69452ada534ab695d2ada594ab696d2ada5d4ab697d2ada614ab698d2ada654ab699d2ada694ab69ad2aea6d4aba9bd2aea714aba9cd2aea754aba9dd2aea794aba9ed" val string_style = hex"b3856477028c4f0075007400730074006100620075006c006f00750073000a00031d22aba2f4aae8cd" - val string_message = hex"b3 85647702 8c 4f0075007400730074006100620075006c006f0075007300 0a00 01 6aba2b5011c0480065006c006c006f00200041007500720061007800690073002100" + val string_message = + hex"b3 85647702 8c 4f0075007400730074006100620075006c006f0075007300 0a00 01 6aba2b5011c0480065006c006c006f00200041007500720061007800690073002100" //0xb3856477028c4f0075007400730074006100620075006c006f00750073000a000130 "decode (start)" in { diff --git a/common/src/test/scala/game/BindPlayerMessageTest.scala b/common/src/test/scala/game/BindPlayerMessageTest.scala index a179e2e0..d4f0fc40 100644 --- a/common/src/test/scala/game/BindPlayerMessageTest.scala +++ b/common/src/test/scala/game/BindPlayerMessageTest.scala @@ -9,9 +9,9 @@ import scodec.bits._ class BindPlayerMessageTest extends Specification { val string_standard = hex"16028004000000000000000000000000000000" - val string_ams = hex"16 05 8440616D73 08 28000000 00000000 00000 00000 0000" - val string_tech = hex"16 01 8b40746563685f706c616e74 d4 28000000 38000000 00064 012b1 a044" - val string_akkan = hex"16048440616d7388100000001400000214e171a8e33024" + val string_ams = hex"16 05 8440616D73 08 28000000 00000000 00000 00000 0000" + val string_tech = hex"16 01 8b40746563685f706c616e74 d4 28000000 38000000 00064 012b1 a044" + val string_akkan = hex"16048440616d7388100000001400000214e171a8e33024" "decode (standard)" in { PacketCoding.DecodePacket(string_standard).require match { @@ -92,14 +92,32 @@ class BindPlayerMessageTest extends Specification { } "encode (tech)" in { - val msg = BindPlayerMessage(BindStatus.Bind, "@tech_plant", true, true, SpawnGroup.BoundFacility, 10, 14, Vector3(4610.0f, 6292, 69.625f)) + val msg = BindPlayerMessage( + BindStatus.Bind, + "@tech_plant", + true, + true, + SpawnGroup.BoundFacility, + 10, + 14, + Vector3(4610.0f, 6292, 69.625f) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_tech } "encode (akkan)" in { - val msg = BindPlayerMessage(BindStatus.Available, "@ams", true, false, SpawnGroup.AMS, 4, 5, Vector3(2673.039f, 4423.547f, 39.1875f)) + val msg = BindPlayerMessage( + BindStatus.Available, + "@ams", + true, + false, + SpawnGroup.AMS, + 4, + 5, + Vector3(2673.039f, 4423.547f, 39.1875f) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_akkan diff --git a/common/src/test/scala/game/BugReportMessageTest.scala b/common/src/test/scala/game/BugReportMessageTest.scala index 0caa467e..511db98d 100644 --- a/common/src/test/scala/game/BugReportMessageTest.scala +++ b/common/src/test/scala/game/BugReportMessageTest.scala @@ -8,7 +8,8 @@ import net.psforever.types.Vector3 import scodec.bits._ class BugReportMessageTest extends Specification { - val string = hex"89 03000000 0F000000 8B4465632020322032303039 1 1 0 19 6C511 656B1 7A11 830610062006300 843100320033003400" + val string = + hex"89 03000000 0F000000 8B4465632020322032303039 1 1 0 19 6C511 656B1 7A11 830610062006300 843100320033003400" "decode" in { PacketCoding.DecodePacket(string).require match { @@ -30,9 +31,18 @@ class BugReportMessageTest extends Specification { } "encode" in { - val msg = BugReportMessage(3, 15, "Dec 2 2009", - BugType.GAMEPLAY, true, 0, 25, Vector3(674.84375f, 726.78906f, 69.90625f), - "abc", "1234") + val msg = BugReportMessage( + 3, + 15, + "Dec 2 2009", + BugType.GAMEPLAY, + true, + 0, + 25, + Vector3(674.84375f, 726.78906f, 69.90625f), + "abc", + "1234" + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/BuildingInfoUpdateMessageTest.scala b/common/src/test/scala/game/BuildingInfoUpdateMessageTest.scala index d9ec3e17..1c3b1f7c 100644 --- a/common/src/test/scala/game/BuildingInfoUpdateMessageTest.scala +++ b/common/src/test/scala/game/BuildingInfoUpdateMessageTest.scala @@ -12,27 +12,29 @@ class BuildingInfoUpdateMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case BuildingInfoUpdateMessage(continent_guid, - building_guid, - ntu_level, - is_hacked, - empire_hack, - hack_time_remaining, - empire_own, - unk1, - unk1x, - generator_state, - spawn_tubes_normal, - force_dome_active, - lattice_benefit, - unk3, - unk4, - unk5, - unk6, - unk7, - unk7x, - boost_spawn_pain, - boost_generator_pain) => + case BuildingInfoUpdateMessage( + continent_guid, + building_guid, + ntu_level, + is_hacked, + empire_hack, + hack_time_remaining, + empire_own, + unk1, + unk1x, + generator_state, + spawn_tubes_normal, + force_dome_active, + lattice_benefit, + unk3, + unk4, + unk5, + unk6, + unk7, + unk7x, + boost_spawn_pain, + boost_generator_pain + ) => continent_guid mustEqual 4 building_guid mustEqual 9 ntu_level mustEqual 1 @@ -61,7 +63,8 @@ class BuildingInfoUpdateMessageTest extends Specification { } "encode" in { - val msg = BuildingInfoUpdateMessage(4, + val msg = BuildingInfoUpdateMessage( + 4, 9, 1, false, @@ -81,7 +84,8 @@ class BuildingInfoUpdateMessageTest extends Specification { 8, None, false, - false) + false + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala b/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala index f1840669..266d1755 100644 --- a/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala +++ b/common/src/test/scala/game/CharacterCreateRequestMessageTest.scala @@ -24,10 +24,10 @@ class CharacterCreateRequestMessageTest extends Specification { } "encode" in { - val msg = CharacterCreateRequestMessage("TestChar", 50, CharacterVoice.Voice5, CharacterGender.Female, PlanetSideEmpire.NC) + val msg = + CharacterCreateRequestMessage("TestChar", 50, CharacterVoice.Voice5, CharacterGender.Female, PlanetSideEmpire.NC) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } } - diff --git a/common/src/test/scala/game/CharacterRequestMessageTest.scala b/common/src/test/scala/game/CharacterRequestMessageTest.scala index 8c715244..599ec230 100644 --- a/common/src/test/scala/game/CharacterRequestMessageTest.scala +++ b/common/src/test/scala/game/CharacterRequestMessageTest.scala @@ -27,4 +27,3 @@ class CharacterRequestMessageTest extends Specification { pkt mustEqual string } } - diff --git a/common/src/test/scala/game/ChatMsgTest.scala b/common/src/test/scala/game/ChatMsgTest.scala index 24c7cf81..ffe4c034 100644 --- a/common/src/test/scala/game/ChatMsgTest.scala +++ b/common/src/test/scala/game/ChatMsgTest.scala @@ -48,11 +48,9 @@ class ChatMsgTest extends Specification { } "allow and disallow note" in { - ChatMsg(ChatMessageType.CMT_ARMOR, - false, - "DontCare", "DontCare", Some("Should be here")) must throwA[AssertionError] - ChatMsg(ChatMessageType.CMT_NOTE, - false, - "DontCare", "DontCare", None) must throwA[AssertionError] + ChatMsg(ChatMessageType.CMT_ARMOR, false, "DontCare", "DontCare", Some("Should be here")) must throwA[ + AssertionError + ] + ChatMsg(ChatMessageType.CMT_NOTE, false, "DontCare", "DontCare", None) must throwA[AssertionError] } } diff --git a/common/src/test/scala/game/ConnectToWorldRequestMessageTest.scala b/common/src/test/scala/game/ConnectToWorldRequestMessageTest.scala index 56e0d4d2..0f729b17 100644 --- a/common/src/test/scala/game/ConnectToWorldRequestMessageTest.scala +++ b/common/src/test/scala/game/ConnectToWorldRequestMessageTest.scala @@ -7,7 +7,8 @@ import org.specs2.mutable._ import scodec.bits._ class ConnectToWorldRequestMessageTest extends Specification { - val string = hex"03 8667656D696E69 0000000000000000 00000000 00000000 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 " + val string = + hex"03 8667656D696E69 0000000000000000 00000000 00000000 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 " "decode" in { PacketCoding.DecodePacket(string).require match { diff --git a/common/src/test/scala/game/CreateShortcutMessageTest.scala b/common/src/test/scala/game/CreateShortcutMessageTest.scala index 6a4b3bde..971c0789 100644 --- a/common/src/test/scala/game/CreateShortcutMessageTest.scala +++ b/common/src/test/scala/game/CreateShortcutMessageTest.scala @@ -9,7 +9,8 @@ import scodec.bits._ class CreateShortcutMessageTest extends Specification { val stringMedkit = hex"28 7210 01 00 90 C0 6D65646B6974 80 80" - val stringMacro = hex"28 4C05 08 00 B1 C0 73686F72746375745F6D6163726F 83 4E00 5400 5500 9B 2F00 7000 6C00 6100 7400 6F00 6F00 6E00 2000 4900 6E00 6300 6F00 6D00 6900 6E00 6700 2000 4E00 5400 5500 2000 7300 7000 6100 6D00 2100" + val stringMacro = + hex"28 4C05 08 00 B1 C0 73686F72746375745F6D6163726F 83 4E00 5400 5500 9B 2F00 7000 6C00 6100 7400 6F00 6F00 6E00 2000 4900 6E00 6300 6F00 6D00 6900 6E00 6700 2000 4E00 5400 5500 2000 7300 7000 6100 6D00 2100" val stringRemove = hex"28 4C05 01 00 00" "decode (medkit)" in { @@ -67,7 +68,13 @@ class CreateShortcutMessageTest extends Specification { } "encode (macro)" in { - val msg = CreateShortcutMessage(PlanetSideGUID(1356), 8, 0, true, Some(Shortcut(1, "shortcut_macro", "NTU", "/platoon Incoming NTU spam!"))) + val msg = CreateShortcutMessage( + PlanetSideGUID(1356), + 8, + 0, + true, + Some(Shortcut(1, "shortcut_macro", "NTU", "/platoon Incoming NTU spam!")) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringMacro @@ -81,7 +88,7 @@ class CreateShortcutMessageTest extends Specification { } "macro" in { - val MACRO : Some[Shortcut] = Shortcut.MACRO("NTU", "/platoon Incoming NTU spam!") + val MACRO: Some[Shortcut] = Shortcut.MACRO("NTU", "/platoon Incoming NTU spam!") MACRO.get.purpose mustEqual 1 MACRO.get.tile mustEqual "shortcut_macro" MACRO.get.effect1 mustEqual "NTU" diff --git a/common/src/test/scala/game/DamageFeedbackMessageTest.scala b/common/src/test/scala/game/DamageFeedbackMessageTest.scala index fab21f3f..f1ec2bbc 100644 --- a/common/src/test/scala/game/DamageFeedbackMessageTest.scala +++ b/common/src/test/scala/game/DamageFeedbackMessageTest.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scodec.bits._ class DamageFeedbackMessageTest extends Specification { - val string = hex"7b 3d842f610b2040000000" + val string = hex"7b 3d842f610b2040000000" val string_2 = hex"7B 5E5826D8001DC0400000" "decode (string 1)" in { @@ -54,14 +54,42 @@ class DamageFeedbackMessageTest extends Specification { } "encode (string 1)" in { - val msg = DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) + val msg = DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (string 2)" in { - val msg = DamageFeedbackMessage(5, true, Some(PlanetSideGUID(2454)), None, None, false, Some(PlanetSideGUID(216)), None, None, None, 0, 750, 0) + val msg = DamageFeedbackMessage( + 5, + true, + Some(PlanetSideGUID(2454)), + None, + None, + false, + Some(PlanetSideGUID(216)), + None, + None, + None, + 0, + 750, + 0 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_2 @@ -69,30 +97,254 @@ class DamageFeedbackMessageTest extends Specification { "assert catches" in { //unk2: no parameters - DamageFeedbackMessage(3, true, None, None, None, true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + None, + None, + None, + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk2: two exclusive parameters - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), Some("error"), None, true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, Some(5), true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, None, Some("error"), Some(5), true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + Some("error"), + None, + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + Some(5), + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + None, + Some("error"), + Some(5), + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk2: all parameters - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), Some("error"), Some(5), true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + Some("error"), + Some(5), + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk2: mismatched flag for strings - DamageFeedbackMessage(3, true, None, None, Some(5), true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, false, None, Some("error"), None, true, Some(PlanetSideGUID(2913)), None, None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + None, + None, + Some(5), + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + false, + None, + Some("error"), + None, + true, + Some(PlanetSideGUID(2913)), + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk3: no parameters - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, None, None, None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + None, + None, + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk3: two exclusive parameters - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, Some(PlanetSideGUID(2913)), Some("error"), None, None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, Some(PlanetSideGUID(2913)), None, Some(5), None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, None, Some("error"), Some(5), Some(1), 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + Some(PlanetSideGUID(2913)), + Some("error"), + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + Some(PlanetSideGUID(2913)), + None, + Some(5), + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + None, + Some("error"), + Some(5), + Some(1), + 1, + 2, + 0 + ) must throwA[AssertionError] //unk3: all parameters - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, Some(PlanetSideGUID(2913)), Some("error"), Some(5), None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + Some(PlanetSideGUID(2913)), + Some("error"), + Some(5), + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk3: mismatched fields - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, Some(PlanetSideGUID(2913)), None, None, Some(5), 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, None, Some("Error"), None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + Some(PlanetSideGUID(2913)), + None, + None, + Some(5), + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + None, + Some("Error"), + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] //unk3: mismatched flag for strings - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, true, None, None, Some(5), None, 1, 2, 0) must throwA[AssertionError] - DamageFeedbackMessage(3, true, Some(PlanetSideGUID(2913)), None, None, false, None, Some("error"), None, None, 1, 2, 0) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + true, + None, + None, + Some(5), + None, + 1, + 2, + 0 + ) must throwA[AssertionError] + DamageFeedbackMessage( + 3, + true, + Some(PlanetSideGUID(2913)), + None, + None, + false, + None, + Some("error"), + None, + None, + 1, + 2, + 0 + ) must throwA[AssertionError] } } diff --git a/common/src/test/scala/game/DelayedPathMountMsgTest.scala b/common/src/test/scala/game/DelayedPathMountMsgTest.scala index b7dcc6c2..429be8ed 100644 --- a/common/src/test/scala/game/DelayedPathMountMsgTest.scala +++ b/common/src/test/scala/game/DelayedPathMountMsgTest.scala @@ -12,7 +12,7 @@ class DelayedPathMountMsgTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case DelayedPathMountMsg(player_guid, vehicle_guid,u3,u4) => + case DelayedPathMountMsg(player_guid, vehicle_guid, u3, u4) => player_guid mustEqual PlanetSideGUID(1525) vehicle_guid mustEqual PlanetSideGUID(1155) u3 mustEqual 70 @@ -23,7 +23,7 @@ class DelayedPathMountMsgTest extends Specification { } "encode" in { - val msg = DelayedPathMountMsg(PlanetSideGUID(1525), PlanetSideGUID(1155),70,true) + val msg = DelayedPathMountMsg(PlanetSideGUID(1525), PlanetSideGUID(1155), 70, true) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/DensityLevelUpdateMessageTest.scala b/common/src/test/scala/game/DensityLevelUpdateMessageTest.scala index aa5e1f55..cb5c3e66 100644 --- a/common/src/test/scala/game/DensityLevelUpdateMessageTest.scala +++ b/common/src/test/scala/game/DensityLevelUpdateMessageTest.scala @@ -29,7 +29,7 @@ class DensityLevelUpdateMessageTest extends Specification { } "encode" in { - val msg = DensityLevelUpdateMessage(1, 19999, List(0,0, 0,0, 0,0, 0,0)) + val msg = DensityLevelUpdateMessage(1, 19999, List(0, 0, 0, 0, 0, 0, 0, 0)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string @@ -41,12 +41,12 @@ class DensityLevelUpdateMessageTest extends Specification { } "encode (failure; list number too big)" in { - val msg = DensityLevelUpdateMessage(1, 19999, List(0,0, 0,0, 0,0, 0,8)) + val msg = DensityLevelUpdateMessage(1, 19999, List(0, 0, 0, 0, 0, 0, 0, 8)) PacketCoding.EncodePacket(msg).isSuccessful mustEqual false } "encode (failure; list number too small)" in { - val msg = DensityLevelUpdateMessage(1, 19999, List(0,0, 0,0, 0,-1, 0,0)) + val msg = DensityLevelUpdateMessage(1, 19999, List(0, 0, 0, 0, 0, -1, 0, 0)) PacketCoding.EncodePacket(msg).isSuccessful mustEqual false } } diff --git a/common/src/test/scala/game/DeployObjectMessageTest.scala b/common/src/test/scala/game/DeployObjectMessageTest.scala index 418bda35..c9ac48c1 100644 --- a/common/src/test/scala/game/DeployObjectMessageTest.scala +++ b/common/src/test/scala/game/DeployObjectMessageTest.scala @@ -24,7 +24,13 @@ class DeployObjectMessageTest extends Specification { } "encode" in { - val msg = DeployObjectMessage(PlanetSideGUID(2932), 1000L, Vector3(5769.297f, 3192.8594f, 97.96875f), Vector3.z(272.8125f), 1L) + val msg = DeployObjectMessage( + PlanetSideGUID(2932), + 1000L, + Vector3(5769.297f, 3192.8594f, 97.96875f), + Vector3.z(272.8125f), + 1L + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/DeployRequestMessageTest.scala b/common/src/test/scala/game/DeployRequestMessageTest.scala index e928e3d6..8e8a44b6 100644 --- a/common/src/test/scala/game/DeployRequestMessageTest.scala +++ b/common/src/test/scala/game/DeployRequestMessageTest.scala @@ -31,7 +31,8 @@ class DeployRequestMessageTest extends Specification { PlanetSideGUID(75), PlanetSideGUID(380), DriveState.Deploying, - 0, false, + 0, + false, Vector3(4060.1953f, 2218.8281f, 155.32812f) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/DeployableObjectsInfoMessageTest.scala b/common/src/test/scala/game/DeployableObjectsInfoMessageTest.scala index 554a9696..c9ad04e1 100644 --- a/common/src/test/scala/game/DeployableObjectsInfoMessageTest.scala +++ b/common/src/test/scala/game/DeployableObjectsInfoMessageTest.scala @@ -30,7 +30,12 @@ class DeployableObjectsInfoMessageTest extends Specification { "encode" in { val msg = DeployableObjectsInfoMessage( DeploymentAction.Dismiss, - DeployableInfo(PlanetSideGUID(2659), DeployableIcon.TRAP, Vector3(3572.4453f, 3277.9766f, 114.0f), PlanetSideGUID(2502)) + DeployableInfo( + PlanetSideGUID(2659), + DeployableIcon.TRAP, + Vector3(3572.4453f, 3277.9766f, 114.0f), + PlanetSideGUID(2502) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/DestroyDisplayMessageTest.scala b/common/src/test/scala/game/DestroyDisplayMessageTest.scala index e486b9df..c283f4d8 100644 --- a/common/src/test/scala/game/DestroyDisplayMessageTest.scala +++ b/common/src/test/scala/game/DestroyDisplayMessageTest.scala @@ -8,11 +8,23 @@ import net.psforever.types.PlanetSideEmpire import scodec.bits._ class DestroyDisplayMessageTest extends Specification { - val string = hex"81 87 41006E00670065006C006C006F00 35BCD801 8 F201 9207 0A 0 48004D00460049004300 B18ED901 00" // Angello-VS (???) HMFIC-TR + val string = + hex"81 87 41006E00670065006C006C006F00 35BCD801 8 F201 9207 0A 0 48004D00460049004300 B18ED901 00" // Angello-VS (???) HMFIC-TR "decode" in { PacketCoding.DecodePacket(string).require match { - case DestroyDisplayMessage(killer, killer_charId, killer_empire, killer_inVehicle, unk, method, victim, victim_charId, victim_empire, victim_inVehicle) => + case DestroyDisplayMessage( + killer, + killer_charId, + killer_empire, + killer_inVehicle, + unk, + method, + victim, + victim_charId, + victim_empire, + victim_inVehicle + ) => killer mustEqual "Angello" killer_charId mustEqual 30981173 killer_empire mustEqual PlanetSideEmpire.VS @@ -29,7 +41,18 @@ class DestroyDisplayMessageTest extends Specification { } "encode" in { - val msg = DestroyDisplayMessage("Angello", 30981173, PlanetSideEmpire.VS, false, 121, 969, "HMFIC", 31035057, PlanetSideEmpire.TR, false) + val msg = DestroyDisplayMessage( + "Angello", + 30981173, + PlanetSideEmpire.VS, + false, + 121, + 969, + "HMFIC", + 31035057, + PlanetSideEmpire.TR, + false + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } diff --git a/common/src/test/scala/game/DestroyMessageTest.scala b/common/src/test/scala/game/DestroyMessageTest.scala index 877b9fa9..6fcd185d 100644 --- a/common/src/test/scala/game/DestroyMessageTest.scala +++ b/common/src/test/scala/game/DestroyMessageTest.scala @@ -24,7 +24,12 @@ class DestroyMessageTest extends Specification { } "encode" in { - val msg = DestroyMessage(PlanetSideGUID(2420), PlanetSideGUID(2420), PlanetSideGUID(0), Vector3(1642.0469f, 4091.6172f, 32.59375f)) + val msg = DestroyMessage( + PlanetSideGUID(2420), + PlanetSideGUID(2420), + PlanetSideGUID(0), + Vector3(1642.0469f, 4091.6172f, 32.59375f) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/DroppodFreefallingMessageTest.scala b/common/src/test/scala/game/DroppodFreefallingMessageTest.scala index 51ce1637..17046f16 100644 --- a/common/src/test/scala/game/DroppodFreefallingMessageTest.scala +++ b/common/src/test/scala/game/DroppodFreefallingMessageTest.scala @@ -8,7 +8,8 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scodec.bits._ class DroppodFreefallingMessageTest extends Specification { - val string = hex"68 220e 00e0b245 00c06145 00a08744 00000000 00000000 ffff79c4 0740b245 22c66145 00608144 00 67 3f 00 00 3f" + val string = + hex"68 220e 00e0b245 00c06145 00a08744 00000000 00000000 ffff79c4 0740b245 22c66145 00608144 00 67 3f 00 00 3f" "DroppodFreefallingMessage" should { "decode" in { @@ -31,7 +32,9 @@ class DroppodFreefallingMessageTest extends Specification { Vector3(5724, 3612, 1085), Vector3(0, 0, -999.99994f), Vector3(5704.0034f, 3612.3833f, 1035.0f), - Vector3(0, 70.3125f, 272.8125f), Vector3(0, 0, 272.8125f)) + Vector3(0, 70.3125f, 272.8125f), + Vector3(0, 0, 272.8125f) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/FacilityBenefitShieldChargeRequestMessageTest.scala b/common/src/test/scala/game/FacilityBenefitShieldChargeRequestMessageTest.scala index 3f21c215..7230c2cc 100644 --- a/common/src/test/scala/game/FacilityBenefitShieldChargeRequestMessageTest.scala +++ b/common/src/test/scala/game/FacilityBenefitShieldChargeRequestMessageTest.scala @@ -26,4 +26,3 @@ class FacilityBenefitShieldChargeRequestMessageTest extends Specification { pkt mustEqual string } } - diff --git a/common/src/test/scala/game/FavoritesRequestTest.scala b/common/src/test/scala/game/FavoritesRequestTest.scala index 951c45ab..2f50715e 100644 --- a/common/src/test/scala/game/FavoritesRequestTest.scala +++ b/common/src/test/scala/game/FavoritesRequestTest.scala @@ -31,4 +31,3 @@ class FavoritesRequestTest extends Specification { pkt mustEqual stringInfantry } } - diff --git a/common/src/test/scala/game/FireHintMessageTest.scala b/common/src/test/scala/game/FireHintMessageTest.scala index d5c8c891..5d16b371 100644 --- a/common/src/test/scala/game/FireHintMessageTest.scala +++ b/common/src/test/scala/game/FireHintMessageTest.scala @@ -15,7 +15,7 @@ class FireHintMessageTest extends Specification { PacketCoding.DecodePacket(string).require match { case FireHintMessage(weapon_guid, pos, u1, u2, u3, u4, u5) => weapon_guid mustEqual PlanetSideGUID(5889) - pos mustEqual Vector3(3482.2734f,3642.4922f,53.125f) + pos mustEqual Vector3(3482.2734f, 3642.4922f, 53.125f) u1 mustEqual 0 u2 mustEqual 65399 u3 mustEqual 7581 @@ -29,25 +29,33 @@ class FireHintMessageTest extends Specification { PacketCoding.DecodePacket(string2).require match { case FireHintMessage(weapon_guid, pos, u1, u2, u3, u4, u5) => weapon_guid mustEqual PlanetSideGUID(3592) - pos mustEqual Vector3(2910.789f,3744.875f,69.0625f) + pos mustEqual Vector3(2910.789f, 3744.875f, 69.0625f) u1 mustEqual 0 u2 mustEqual 65231 u3 mustEqual 64736 u4 mustEqual 3 - u5 mustEqual Some(Vector3(21.5f,-6.8125f,2.65625f)) + u5 mustEqual Some(Vector3(21.5f, -6.8125f, 2.65625f)) case _ => ko } } "encode" in { - val msg = FireHintMessage(PlanetSideGUID(5889), Vector3(3482.2734f,3642.4922f,53.125f), 0, 65399, 7581, 0) + val msg = FireHintMessage(PlanetSideGUID(5889), Vector3(3482.2734f, 3642.4922f, 53.125f), 0, 65399, 7581, 0) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode string2" in { - val msg = FireHintMessage(PlanetSideGUID(3592), Vector3(2910.789f,3744.875f,69.0625f), 0, 65231, 64736, 3, Some(Vector3(21.5f,-6.8125f,2.65625f))) + val msg = FireHintMessage( + PlanetSideGUID(3592), + Vector3(2910.789f, 3744.875f, 69.0625f), + 0, + 65231, + 64736, + 3, + Some(Vector3(21.5f, -6.8125f, 2.65625f)) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string2 diff --git a/common/src/test/scala/game/FriendsResponseTest.scala b/common/src/test/scala/game/FriendsResponseTest.scala index 3b30d6b5..09a0d212 100644 --- a/common/src/test/scala/game/FriendsResponseTest.scala +++ b/common/src/test/scala/game/FriendsResponseTest.scala @@ -8,7 +8,8 @@ import scodec.bits._ class FriendsResponseTest extends Specification { val stringOneFriend = hex"73 61 8C 60 4B007500720074004800650063007400690063002D004700 00" - val stringManyFriends = hex"73 01 AC 48 4100 6E00 6700 6500 6C00 6C00 6F00 2D00 5700 47 00 7400 6800 6500 7000 6800 6100 7400 7400 7000 6800 7200 6F00 6700 6700 46 80 4B00 6900 6D00 7000 6F00 7300 7300 6900 6200 6C00 6500 3100 3200 45 00 5A00 6500 6100 7200 7400 6800 6C00 6900 6E00 6700 46 00 4B00 7500 7200 7400 4800 6500 6300 7400 6900 6300 2D00 4700 00" + val stringManyFriends = + hex"73 01 AC 48 4100 6E00 6700 6500 6C00 6C00 6F00 2D00 5700 47 00 7400 6800 6500 7000 6800 6100 7400 7400 7000 6800 7200 6F00 6700 6700 46 80 4B00 6900 6D00 7000 6F00 7300 7300 6900 6200 6C00 6500 3100 3200 45 00 5A00 6500 6100 7200 7400 6800 6C00 6900 6E00 6700 46 00 4B00 7500 7200 7400 4800 6500 6300 7400 6900 6300 2D00 4700 00" val stringShort = hex"73 81 80" "decode (one friend)" in { @@ -63,22 +64,32 @@ class FriendsResponseTest extends Specification { } "encode (one friend)" in { - val msg = FriendsResponse(FriendAction.UpdateFriend, 0, true, true, + val msg = FriendsResponse( + FriendAction.UpdateFriend, + 0, + true, + true, Friend("KurtHectic-G", false) :: - Nil) + Nil + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringOneFriend } "encode (multiple friends)" in { - val msg = FriendsResponse(FriendAction.InitializeFriendList, 0, true, true, + val msg = FriendsResponse( + FriendAction.InitializeFriendList, + 0, + true, + true, Friend("Angello-W", false) :: Friend("thephattphrogg", false) :: Friend("Kimpossible12", false) :: Friend("Zearthling", false) :: Friend("KurtHectic-G", false) :: - Nil) + Nil + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringManyFriends diff --git a/common/src/test/scala/game/GenericCollisionMsgTest.scala b/common/src/test/scala/game/GenericCollisionMsgTest.scala index 94571737..6c020a46 100644 --- a/common/src/test/scala/game/GenericCollisionMsgTest.scala +++ b/common/src/test/scala/game/GenericCollisionMsgTest.scala @@ -9,7 +9,8 @@ import scodec.bits._ class GenericCollisionMsgTest extends Specification { //TODO find a better test later - val string = hex"3C 92C00000190000001B2A8010932CEF505C70946F00000000000000000000000017725EBC6D6A058000000000000000000000000000003F8FF45140" + val string = + hex"3C 92C00000190000001B2A8010932CEF505C70946F00000000000000000000000017725EBC6D6A058000000000000000000000000000003F8FF45140" "decode" in { PacketCoding.DecodePacket(string).require match { case GenericCollisionMsg(unk1, p, t, php, thp, pv, tv, ppos, tpos, unk2, unk3, unk4) => @@ -38,7 +39,20 @@ class GenericCollisionMsgTest extends Specification { } } "encode" in { - val msg = GenericCollisionMsg(2, PlanetSideGUID(75), PlanetSideGUID(0), 100, 0, Vector3(32.166428f, 23.712547f, -0.012802706f), Vector3(0.0f, 0.0f, 0.0f), Vector3(3986.7266f, 2615.3672f, 90.625f), Vector3(0.0f, 0.0f, 0.0f), 0L, 0L, 1171341310L) + val msg = GenericCollisionMsg( + 2, + PlanetSideGUID(75), + PlanetSideGUID(0), + 100, + 0, + Vector3(32.166428f, 23.712547f, -0.012802706f), + Vector3(0.0f, 0.0f, 0.0f), + Vector3(3986.7266f, 2615.3672f, 90.625f), + Vector3(0.0f, 0.0f, 0.0f), + 0L, + 0L, + 1171341310L + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } diff --git a/common/src/test/scala/game/HitMessageTest.scala b/common/src/test/scala/game/HitMessageTest.scala index 8dd9cac8..bd9187f7 100644 --- a/common/src/test/scala/game/HitMessageTest.scala +++ b/common/src/test/scala/game/HitMessageTest.scala @@ -9,7 +9,7 @@ import scodec.bits._ class HitMessageTest extends Specification { val string_hitgeneric = hex"09 09E9A70200" - val string_hitobj = hex"09 99292705F4B1FB9514585F08BDD3D454CC5EE80300" + val string_hitobj = hex"09 99292705F4B1FB9514585F08BDD3D454CC5EE80300" "decode (generic)" in { PacketCoding.DecodePacket(string_hitgeneric).require match { @@ -32,7 +32,13 @@ class HitMessageTest extends Specification { seq_time mustEqual 153 projectile_guid mustEqual PlanetSideGUID(40100) unk1 mustEqual 0 - hit_info mustEqual Some(HitInfo(Vector3(3672.9766f, 2729.8594f, 92.34375f), Vector3(3679.5156f, 2722.6172f, 92.796875f), Some(PlanetSideGUID(372)))) + hit_info mustEqual Some( + HitInfo( + Vector3(3672.9766f, 2729.8594f, 92.34375f), + Vector3(3679.5156f, 2722.6172f, 92.796875f), + Some(PlanetSideGUID(372)) + ) + ) unk2 mustEqual true unk3 mustEqual false unk4 mustEqual None @@ -48,7 +54,21 @@ class HitMessageTest extends Specification { } "encode (object)" in { - val msg_hitobj = HitMessage(153, PlanetSideGUID(40100), 0, Some(HitInfo(Vector3(3672.9766f, 2729.8594f, 92.34375f), Vector3(3679.5156f, 2722.6172f, 92.796875f), Some(PlanetSideGUID(372)))), true, false, None) + val msg_hitobj = HitMessage( + 153, + PlanetSideGUID(40100), + 0, + Some( + HitInfo( + Vector3(3672.9766f, 2729.8594f, 92.34375f), + Vector3(3679.5156f, 2722.6172f, 92.796875f), + Some(PlanetSideGUID(372)) + ) + ), + true, + false, + None + ) val pkt_hitobj = PacketCoding.EncodePacket(msg_hitobj).require.toByteVector pkt_hitobj mustEqual string_hitobj diff --git a/common/src/test/scala/game/HotSpotUpdateMessageTest.scala b/common/src/test/scala/game/HotSpotUpdateMessageTest.scala index 72413f28..2e9fb838 100644 --- a/common/src/test/scala/game/HotSpotUpdateMessageTest.scala +++ b/common/src/test/scala/game/HotSpotUpdateMessageTest.scala @@ -9,8 +9,8 @@ import scodec.bits._ class HotSpotUpdateMessageTest extends Specification { val stringClear = hex"9F 0500 1 000" - val stringOne = hex"9F 0500 1 010 002E9 00145 80000 0" - val stringTwo = hex"9F 0500 5 020 00D07 008CA 80000 00BEA 004C4 80000" + val stringOne = hex"9F 0500 1 010 002E9 00145 80000 0" + val stringTwo = hex"9F 0500 5 020 00D07 008CA 80000 00BEA 004C4 80000" val stringThree = hex"9F 0A00 4 030 00FC8 00F0A 80000 002E9 00BEA 80000 00FC8 00BEA 80000 0" "decode (clear)" in { @@ -64,25 +64,34 @@ class HotSpotUpdateMessageTest extends Specification { } "encode (clear)" in { - val msg = HotSpotUpdateMessage(5,1, Nil) + val msg = HotSpotUpdateMessage(5, 1, Nil) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringClear } "encode (one)" in { - val msg = HotSpotUpdateMessage(5,1, List(HotSpotInfo(4700.0f, 2600.0f, 64.0f))) + val msg = HotSpotUpdateMessage(5, 1, List(HotSpotInfo(4700.0f, 2600.0f, 64.0f))) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringOne } "encode (two)" in { - val msg = HotSpotUpdateMessage(5,5, List(HotSpotInfo(4000.0f, 5400.0f, 64.0f), HotSpotInfo(5500.0f, 2200.0f, 64.0f))) + val msg = + HotSpotUpdateMessage(5, 5, List(HotSpotInfo(4000.0f, 5400.0f, 64.0f), HotSpotInfo(5500.0f, 2200.0f, 64.0f))) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringTwo } "encode (three)" in { - val msg = HotSpotUpdateMessage(10,4, List(HotSpotInfo(4600.0f, 5600.0f, 64.0f), HotSpotInfo(4700.0f, 5500.0f, 64.0f), HotSpotInfo(4600.0f, 5500.0f, 64.0f))) + val msg = HotSpotUpdateMessage( + 10, + 4, + List( + HotSpotInfo(4600.0f, 5600.0f, 64.0f), + HotSpotInfo(4700.0f, 5500.0f, 64.0f), + HotSpotInfo(4600.0f, 5500.0f, 64.0f) + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringThree } diff --git a/common/src/test/scala/game/InventoryStateMessageTest.scala b/common/src/test/scala/game/InventoryStateMessageTest.scala index d11f5372..9fb94a8f 100644 --- a/common/src/test/scala/game/InventoryStateMessageTest.scala +++ b/common/src/test/scala/game/InventoryStateMessageTest.scala @@ -29,4 +29,3 @@ class InventoryStateMessageTest extends Specification { pkt mustEqual string } } - diff --git a/common/src/test/scala/game/ItemTransactionMessageTest.scala b/common/src/test/scala/game/ItemTransactionMessageTest.scala index 8574cc96..d6dcc1bb 100644 --- a/common/src/test/scala/game/ItemTransactionMessageTest.scala +++ b/common/src/test/scala/game/ItemTransactionMessageTest.scala @@ -8,8 +8,8 @@ import net.psforever.types.{PlanetSideGUID, TransactionType} import scodec.bits._ class ItemTransactionMessageTest extends Specification { - val string_buy = hex"44 4C03 4000110070756E6973686572000000" - val string_sell = hex"44 5303 60001000004E00" + val string_buy = hex"44 4C03 4000110070756E6973686572000000" + val string_sell = hex"44 5303 60001000004E00" val string_forget = hex"44 BA00 600011006861726173736572000000" "decode (buy)" in { @@ -68,7 +68,8 @@ class ItemTransactionMessageTest extends Specification { } "encode (forget)" in { - val msg_forget = ItemTransactionMessage(PlanetSideGUID(186), TransactionType.Sell, 0, "harasser", 0, PlanetSideGUID(0)) + val msg_forget = + ItemTransactionMessage(PlanetSideGUID(186), TransactionType.Sell, 0, "harasser", 0, PlanetSideGUID(0)) val pkt_forget = PacketCoding.EncodePacket(msg_forget).require.toByteVector pkt_forget mustEqual string_forget diff --git a/common/src/test/scala/game/ItemTransactionResultMessageTest.scala b/common/src/test/scala/game/ItemTransactionResultMessageTest.scala index 4a49c551..a1db8bc9 100644 --- a/common/src/test/scala/game/ItemTransactionResultMessageTest.scala +++ b/common/src/test/scala/game/ItemTransactionResultMessageTest.scala @@ -10,7 +10,7 @@ import scodec.bits._ class ItemTransactionResultMessageTest extends Specification { //these are paried packets come from the same capture val string_request = hex"44 DD 03 40 00 11 40 73 75 70 70 72 65 73 73 6F 72 00 00 00" - val string_result = hex"45 DD 03 50 00" + val string_result = hex"45 DD 03 50 00" "decode" in { PacketCoding.DecodePacket(string_result).require match { case ItemTransactionResultMessage(terminal_guid, transaction_type, is_success, error_code) => @@ -33,12 +33,11 @@ class ItemTransactionResultMessageTest extends Specification { "proper reply" in { try { val request = PacketCoding.DecodePacket(string_request).require.asInstanceOf[ItemTransactionMessage] - val result = PacketCoding.DecodePacket(string_result).require.asInstanceOf[ItemTransactionResultMessage] + val result = PacketCoding.DecodePacket(string_result).require.asInstanceOf[ItemTransactionResultMessage] request.terminal_guid mustEqual result.terminal_guid request.transaction_type mustEqual result.transaction_type - } - catch { - case e : Exception => + } catch { + case e: Exception => ko } } diff --git a/common/src/test/scala/game/KeepAliveMessageTest.scala b/common/src/test/scala/game/KeepAliveMessageTest.scala index 4f7a4d2d..f3190561 100644 --- a/common/src/test/scala/game/KeepAliveMessageTest.scala +++ b/common/src/test/scala/game/KeepAliveMessageTest.scala @@ -25,4 +25,3 @@ class KeepAliveMessageTest extends Specification { pkt mustEqual string } } - diff --git a/common/src/test/scala/game/LashMessageTest.scala b/common/src/test/scala/game/LashMessageTest.scala index 2e43143e..8e23bc02 100644 --- a/common/src/test/scala/game/LashMessageTest.scala +++ b/common/src/test/scala/game/LashMessageTest.scala @@ -12,12 +12,12 @@ class LashMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case LashMessage(seq_time,player,victim,bullet,pos,unk1) => + case LashMessage(seq_time, player, victim, bullet, pos, unk1) => seq_time mustEqual 356 player mustEqual PlanetSideGUID(2858) victim mustEqual PlanetSideGUID(2699) bullet mustEqual PlanetSideGUID(40030) - pos mustEqual Vector3(5903.7656f,3456.5156f,111.53125f) + pos mustEqual Vector3(5903.7656f, 3456.5156f, 111.53125f) unk1 mustEqual 0 case _ => ko @@ -25,7 +25,14 @@ class LashMessageTest extends Specification { } "encode" in { - val msg = LashMessage(356, PlanetSideGUID(2858), PlanetSideGUID(2699), PlanetSideGUID(40030), Vector3(5903.7656f,3456.5156f,111.53125f), 0) + val msg = LashMessage( + 356, + PlanetSideGUID(2858), + PlanetSideGUID(2699), + PlanetSideGUID(40030), + Vector3(5903.7656f, 3456.5156f, 111.53125f), + 0 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/LoadMapMessageTest.scala b/common/src/test/scala/game/LoadMapMessageTest.scala index 766e6cfd..96907ab6 100644 --- a/common/src/test/scala/game/LoadMapMessageTest.scala +++ b/common/src/test/scala/game/LoadMapMessageTest.scala @@ -24,7 +24,7 @@ class LoadMapMessageTest extends Specification { } "encode" in { - val msg = LoadMapMessage("map10","z10",40975,25,true,230810349) + val msg = LoadMapMessage("map10", "z10", 40975, 25, true, 230810349) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } diff --git a/common/src/test/scala/game/LoginMessageTest.scala b/common/src/test/scala/game/LoginMessageTest.scala index 098109fd..e43c3e92 100644 --- a/common/src/test/scala/game/LoginMessageTest.scala +++ b/common/src/test/scala/game/LoginMessageTest.scala @@ -8,7 +8,8 @@ import scodec.bits._ class LoginMessageTest extends Specification { val string_password = hex"0x01030000000f0000008b4465632020322032303039408061816154000000" - val string_token = hex"0x01030000000f0000008b4465632020322032303039a0a0a0a0a121212121a1a1a1a222222222a2a2a2a323232323a3a3a3a424240040806154000000" + val string_token = + hex"0x01030000000f0000008b4465632020322032303039a0a0a0a0a121212121a1a1a1a222222222a2a2a2a323232323a3a3a3a424240040806154000000" "LoginMessage" should { "decode (username)" in { diff --git a/common/src/test/scala/game/LoginRespMessageTest.scala b/common/src/test/scala/game/LoginRespMessageTest.scala index 5ec77433..419c07ba 100644 --- a/common/src/test/scala/game/LoginRespMessageTest.scala +++ b/common/src/test/scala/game/LoginRespMessageTest.scala @@ -20,16 +20,30 @@ class LoginRespMessageTest extends Specification { hex"00000000 01000000 02000000 6B7BD828 8C4169666671756F7469656E74 11270000 80" "encode" in { - val msg = LoginRespMessage("HaHLdYzs0VASjksR", LoginError.Success, StationError.AccountActive, - StationSubscriptionStatus.Active, 685276011, "Aiffquotient", 0) + val msg = LoginRespMessage( + "HaHLdYzs0VASjksR", + LoginError.Success, + StationError.AccountActive, + StationSubscriptionStatus.Active, + 685276011, + "Aiffquotient", + 0 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode with privilege" in { - val msg = LoginRespMessage("HaHLdYzs0VASjksR", LoginError.Success, StationError.AccountActive, - StationSubscriptionStatus.Active, 685276011, "Aiffquotient", 10001) + val msg = LoginRespMessage( + "HaHLdYzs0VASjksR", + LoginError.Success, + StationError.AccountActive, + StationSubscriptionStatus.Active, + 685276011, + "Aiffquotient", + 10001 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_priv diff --git a/common/src/test/scala/game/LootItemMessageTest.scala b/common/src/test/scala/game/LootItemMessageTest.scala index d28b086a..f82e34e2 100644 --- a/common/src/test/scala/game/LootItemMessageTest.scala +++ b/common/src/test/scala/game/LootItemMessageTest.scala @@ -21,7 +21,7 @@ class LootItemMessageTest extends Specification { } "encode" in { - val msg = LootItemMessage(PlanetSideGUID(3549),PlanetSideGUID(5212)) + val msg = LootItemMessage(PlanetSideGUID(3549), PlanetSideGUID(5212)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } diff --git a/common/src/test/scala/game/ObjectAttachMessageTest.scala b/common/src/test/scala/game/ObjectAttachMessageTest.scala index e025cd3e..350c92b2 100644 --- a/common/src/test/scala/game/ObjectAttachMessageTest.scala +++ b/common/src/test/scala/game/ObjectAttachMessageTest.scala @@ -9,7 +9,7 @@ import scodec.bits._ class ObjectAttachMessageTest extends Specification { val stringToInventory = hex"2A 9F05 D405 86" - val stringToCursor = hex"2A 9F05 D405 00FA" + val stringToCursor = hex"2A 9F05 D405 00FA" "decode (inventory 1,1)" in { PacketCoding.DecodePacket(stringToInventory).require match { diff --git a/common/src/test/scala/game/ObjectDeployedMessageTest.scala b/common/src/test/scala/game/ObjectDeployedMessageTest.scala index 0678da13..a9dbba5a 100644 --- a/common/src/test/scala/game/ObjectDeployedMessageTest.scala +++ b/common/src/test/scala/game/ObjectDeployedMessageTest.scala @@ -11,7 +11,7 @@ class ObjectDeployedMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string_boomer).require match { - case ObjectDeployedMessage(unk : Int, desc : String, act : DeployOutcome.Value, count : Long, max : Long) => + case ObjectDeployedMessage(unk: Int, desc: String, act: DeployOutcome.Value, count: Long, max: Long) => unk mustEqual 0 desc mustEqual "boomer" act mustEqual DeployOutcome.Success diff --git a/common/src/test/scala/game/ObjectDetachMessageTest.scala b/common/src/test/scala/game/ObjectDetachMessageTest.scala index 2e2847dd..ed881cc9 100644 --- a/common/src/test/scala/game/ObjectDetachMessageTest.scala +++ b/common/src/test/scala/game/ObjectDetachMessageTest.scala @@ -27,21 +27,34 @@ class ObjectDetachMessageTest extends Specification { } "encode (1)" in { - val msg = ObjectDetachMessage(PlanetSideGUID(2916), PlanetSideGUID(2502), Vector3(3567.1406f, 2988.0078f, 71.84375f), 0f, 0f, 270f) + val msg = ObjectDetachMessage( + PlanetSideGUID(2916), + PlanetSideGUID(2502), + Vector3(3567.1406f, 2988.0078f, 71.84375f), + 0f, + 0f, + 270f + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (2)" in { - val msg = ObjectDetachMessage(PlanetSideGUID(2916), PlanetSideGUID(2502), Vector3(3567.1406f, 2988.0078f, 71.84375f), Vector3(0f, 0f, 270f)) + val msg = ObjectDetachMessage( + PlanetSideGUID(2916), + PlanetSideGUID(2502), + Vector3(3567.1406f, 2988.0078f, 71.84375f), + Vector3(0f, 0f, 270f) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (3)" in { - val msg = ObjectDetachMessage(PlanetSideGUID(2916), PlanetSideGUID(2502), Vector3(3567.1406f, 2988.0078f, 71.84375f), 270f) + val msg = + ObjectDetachMessage(PlanetSideGUID(2916), PlanetSideGUID(2502), Vector3(3567.1406f, 2988.0078f, 71.84375f), 270f) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/OrbitalStrikeWaypointMessageTest.scala b/common/src/test/scala/game/OrbitalStrikeWaypointMessageTest.scala index 59f36c3b..8d10b334 100644 --- a/common/src/test/scala/game/OrbitalStrikeWaypointMessageTest.scala +++ b/common/src/test/scala/game/OrbitalStrikeWaypointMessageTest.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scodec.bits._ class OrbitalStrikeWaypointMessageTest extends Specification { - val string_on = hex"B9 46 0C AA E3 D2 2A 92 00" + val string_on = hex"B9 46 0C AA E3 D2 2A 92 00" val string_off = hex"B9 46 0C 00" "decode (on)" in { diff --git a/common/src/test/scala/game/OxygenStateMessageTest.scala b/common/src/test/scala/game/OxygenStateMessageTest.scala index 6631ef0a..7bd31f6a 100644 --- a/common/src/test/scala/game/OxygenStateMessageTest.scala +++ b/common/src/test/scala/game/OxygenStateMessageTest.scala @@ -8,7 +8,7 @@ import net.psforever.types.PlanetSideGUID import scodec.bits._ class OxygenStateMessageTest extends Specification { - val string_self = hex"78 4b00f430" + val string_self = hex"78 4b00f430" val string_vehicle = hex"78 4b00f4385037a180" "decode (self)" in { @@ -46,7 +46,8 @@ class OxygenStateMessageTest extends Specification { } "encode (vehicle)" in { - val msg = OxygenStateMessage(PlanetSideGUID(75), 50.0f, true, WaterloggedVehicleState(PlanetSideGUID(1546), 50.0f, true)) + val msg = + OxygenStateMessage(PlanetSideGUID(75), 50.0f, true, WaterloggedVehicleState(PlanetSideGUID(1546), 50.0f, true)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_vehicle diff --git a/common/src/test/scala/game/PlayerStateMessageTest.scala b/common/src/test/scala/game/PlayerStateMessageTest.scala index 0f54fde6..7842aca6 100644 --- a/common/src/test/scala/game/PlayerStateMessageTest.scala +++ b/common/src/test/scala/game/PlayerStateMessageTest.scala @@ -9,12 +9,25 @@ import scodec.bits._ class PlayerStateMessageTest extends Specification { val string_short = hex"08 A006 DFD17 B5AEB 380B 0F80002990" - val string_mod = hex"08 A006 DFD17 B5AEB 380B 0F80002985" //slightly modified from above to demonstrate active booleans + val string_mod = + hex"08 A006 DFD17 B5AEB 380B 0F80002985" //slightly modified from above to demonstrate active booleans val string_vel = hex"08 A006 4DD47 CDB1B 0C0B A8C1A5000403008014A4" "decode (short)" in { PacketCoding.DecodePacket(string_short).require match { - case PlayerStateMessage(guid, pos, vel, facingYaw, facingPitch, facingUpper, unk1, crouching, jumping, jthrust, cloaked) => + case PlayerStateMessage( + guid, + pos, + vel, + facingYaw, + facingPitch, + facingUpper, + unk1, + crouching, + jumping, + jthrust, + cloaked + ) => guid mustEqual PlanetSideGUID(1696) pos.x mustEqual 4003.7422f pos.y mustEqual 5981.414f @@ -35,7 +48,19 @@ class PlayerStateMessageTest extends Specification { "decode (mod)" in { PacketCoding.DecodePacket(string_mod).require match { - case PlayerStateMessage(guid, pos, vel, facingYaw, facingPitch, facingUpper, unk1, crouching, jumping, jthrust, cloaked) => + case PlayerStateMessage( + guid, + pos, + vel, + facingYaw, + facingPitch, + facingUpper, + unk1, + crouching, + jumping, + jthrust, + cloaked + ) => guid mustEqual PlanetSideGUID(1696) pos.x mustEqual 4003.7422f pos.y mustEqual 5981.414f @@ -56,7 +81,19 @@ class PlayerStateMessageTest extends Specification { "decode (vel)" in { PacketCoding.DecodePacket(string_vel).require match { - case PlayerStateMessage(guid, pos, vel, facingYaw, facingPitch, facingUpper, unk1, crouching, jumping, jthrust, cloaked) => + case PlayerStateMessage( + guid, + pos, + vel, + facingYaw, + facingPitch, + facingUpper, + unk1, + crouching, + jumping, + jthrust, + cloaked + ) => guid mustEqual PlanetSideGUID(1696) pos.x mustEqual 4008.6016f pos.y mustEqual 5987.6016f @@ -83,8 +120,15 @@ class PlayerStateMessageTest extends Specification { PlanetSideGUID(1696), Vector3(4003.7422f, 5981.414f, 44.875f), None, - 2.8125f, 0f, 0f, 83, - false, false, false, false) + 2.8125f, + 0f, + 0f, + 83, + false, + false, + false, + false + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_short } @@ -94,8 +138,15 @@ class PlayerStateMessageTest extends Specification { PlanetSideGUID(1696), Vector3(4003.7422f, 5981.414f, 44.875f), None, - 2.8125f, 0f, 0f, 83, - false, true, false, true) + 2.8125f, + 0f, + 0f, + 83, + false, + true, + false, + true + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_mod } @@ -105,8 +156,15 @@ class PlayerStateMessageTest extends Specification { PlanetSideGUID(1696), Vector3(4008.6016f, 5987.6016f, 44.1875f), Some(Vector3(2.53125f, 6.5625f, 0f)), - 22.5f, -11.25f, 0f, 165, - false, false, false, false) + 22.5f, + -11.25f, + 0f, + 165, + false, + false, + false, + false + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_vel } diff --git a/common/src/test/scala/game/PlayerStateMessageUpstreamTest.scala b/common/src/test/scala/game/PlayerStateMessageUpstreamTest.scala index 8dcd4d33..019cc758 100644 --- a/common/src/test/scala/game/PlayerStateMessageUpstreamTest.scala +++ b/common/src/test/scala/game/PlayerStateMessageUpstreamTest.scala @@ -12,7 +12,22 @@ class PlayerStateMessageUpstreamTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case PlayerStateMessageUpstream(avatar_guid, pos, vel, facingYaw, facingPitch, facingYawUpper, seq_time, unk1, is_crouching, is_jumping, jump_thrust, is_cloaked, unk2, unk3) => + case PlayerStateMessageUpstream( + avatar_guid, + pos, + vel, + facingYaw, + facingPitch, + facingYawUpper, + seq_time, + unk1, + is_crouching, + is_jumping, + jump_thrust, + is_cloaked, + unk2, + unk3 + ) => avatar_guid mustEqual PlanetSideGUID(75) pos mustEqual Vector3(3694.1094f, 2735.4531f, 90.84375f) vel.contains(Vector3(4.375f, 2.59375f, 0.0f)) mustEqual true @@ -33,7 +48,22 @@ class PlayerStateMessageUpstreamTest extends Specification { } "encode" in { - val msg = PlayerStateMessageUpstream(PlanetSideGUID(75), Vector3(3694.1094f, 2735.4531f, 90.84375f), Some(Vector3(4.375f, 2.59375f, 0.0f)), 61.875f, -8.4375f, 0.0f, 136, 0, false, false, false, false, 112, 0) + val msg = PlayerStateMessageUpstream( + PlanetSideGUID(75), + Vector3(3694.1094f, 2735.4531f, 90.84375f), + Some(Vector3(4.375f, 2.59375f, 0.0f)), + 61.875f, + -8.4375f, + 0.0f, + 136, + 0, + false, + false, + false, + false, + 112, + 0 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/PlayerStateShiftMessageTest.scala b/common/src/test/scala/game/PlayerStateShiftMessageTest.scala index db411a31..8c9c3f69 100644 --- a/common/src/test/scala/game/PlayerStateShiftMessageTest.scala +++ b/common/src/test/scala/game/PlayerStateShiftMessageTest.scala @@ -8,8 +8,8 @@ import net.psforever.types.Vector3 import scodec.bits._ class PlayerStateShiftMessageTest extends Specification { - val string_short = hex"BE 68" - val string_pos = hex"BE 95 A0 89 13 91 B8 B0 B7 F0" //orig: ... B0 BF F0 + val string_short = hex"BE 68" + val string_pos = hex"BE 95 A0 89 13 91 B8 B0 B7 F0" //orig: ... B0 BF F0 val string_posAndVel = hex"BE AE 01 29 CD 59 B9 40 C0 EA D4 00 0F 86 40" "decode (short)" in { @@ -73,7 +73,9 @@ class PlayerStateShiftMessageTest extends Specification { } "encode (pos and vel)" in { - val msg = PlayerStateShiftMessage(ShiftState(2, Vector3(4645.75f, 5811.6016f, 50.3125f), 50.625f, Vector3(2.8125f, -8.0f, 0.375f))) + val msg = PlayerStateShiftMessage( + ShiftState(2, Vector3(4645.75f, 5811.6016f, 50.3125f), 50.625f, Vector3(2.8125f, -8.0f, 0.375f)) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_posAndVel diff --git a/common/src/test/scala/game/ProjectileStateMessageTest.scala b/common/src/test/scala/game/ProjectileStateMessageTest.scala index 3794e093..2db34e84 100644 --- a/common/src/test/scala/game/ProjectileStateMessageTest.scala +++ b/common/src/test/scala/game/ProjectileStateMessageTest.scala @@ -8,7 +8,7 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scodec.bits._ class ProjectileStateMessageTest extends Specification { - val string = hex"3f 259d c5019 30e4a 9514 c52c9541 d9ba05c2 c5973941 00 f8 ec 02000000" + val string = hex"3f 259d c5019 30e4a 9514 c52c9541 d9ba05c2 c5973941 00 f8 ec 02000000" "decode" in { PacketCoding.DecodePacket(string).require match { @@ -40,7 +40,7 @@ class ProjectileStateMessageTest extends Specification { //pkt mustEqual string val pkt_bits = pkt.toBitVector val str_bits = string.toBitVector - pkt_bits.take(184) mustEqual str_bits.take(184) //skip 1 bit + pkt_bits.take(184) mustEqual str_bits.take(184) //skip 1 bit pkt_bits.drop(185).take(7) mustEqual str_bits.drop(185).take(7) //skip 1 bit pkt_bits.drop(193) mustEqual str_bits.drop(193) } diff --git a/common/src/test/scala/game/PropertyOverrideMessageTest.scala b/common/src/test/scala/game/PropertyOverrideMessageTest.scala index 4eb301cd..3a20c939 100644 --- a/common/src/test/scala/game/PropertyOverrideMessageTest.scala +++ b/common/src/test/scala/game/PropertyOverrideMessageTest.scala @@ -8,7 +8,8 @@ import net.psforever.packet.game.objectcreate.ObjectClass import scodec.bits._ class PropertyOverrideMessageTest extends Specification { - val string = hex"D5 0B 00 00 00 01 0A E4 0C 02 48 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 76 73 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 74 72 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 6E 63 80 11 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 12 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 13 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 14 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 15 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 16 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1D 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1E 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1F 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 20 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65" + val string = + hex"D5 0B 00 00 00 01 0A E4 0C 02 48 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 76 73 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 74 72 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 6E 63 80 11 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 12 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 13 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 14 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 15 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 16 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1D 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1E 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1F 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 20 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65" "decode" in { PacketCoding.DecodePacket(string).require match { @@ -423,123 +424,127 @@ class PropertyOverrideMessageTest extends Specification { "encode" in { val msg = PropertyOverrideMessage( List( - GamePropertyScope(0, - GamePropertyTarget(GamePropertyTarget.game_properties, List( - "purchase_exempt_vs" -> "", - "purchase_exempt_tr" -> "", - "purchase_exempt_nc" -> "" + GamePropertyScope( + 0, + GamePropertyTarget( + GamePropertyTarget.game_properties, + List( + "purchase_exempt_vs" -> "", + "purchase_exempt_tr" -> "", + "purchase_exempt_nc" -> "" + ) ) - )), - GamePropertyScope(17, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") ), - GamePropertyScope(18, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope(17, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(18, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(19, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(20, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(21, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(22, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope( + 29, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(19, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 30, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(20, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 31, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(21, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(22, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(29, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(30, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(31, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(32, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )) + GamePropertyScope( + 32, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) + ) ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/ReplicationStreamMessageTest.scala b/common/src/test/scala/game/ReplicationStreamMessageTest.scala index 057a0abf..78fdd888 100644 --- a/common/src/test/scala/game/ReplicationStreamMessageTest.scala +++ b/common/src/test/scala/game/ReplicationStreamMessageTest.scala @@ -9,18 +9,22 @@ import scodec.bits._ class ReplicationStreamMessageTest extends Specification { val stringListClear = hex"E6 B9 FE" - val stringListOne = hex"E6 B8 01 06 01 00 8B 46007200610067004C0041004E00640049004E004300 84 4600720061006700 0A00 00 00 0A FF" - val stringListTwo = hex"E6 B8 01 06 06 00 8E 470065006E006500720061006C0047006F0072006700750074007A00 A1 46004C0059002C0041006C006C002000770065006C0063006F006D0065002C0063006E0020006C0061007300740020006E0069006700680074002100210021002100 0400 00 00 7A 01 83 02 00 45 80 4B004F004B006B006900610073004D00460043004E00 87 5300710075006100640020003200 0400 00 00 6A FF" - val stringListThree = hex"E6 B8 01 06 06 00 8E 470065006E006500720061006C0047006F0072006700750074007A00 A1 46004C0059002C0041006C006C002000770065006C0063006F006D0065002C0063006E0020006C0061007300740020006E0069006700680074002100210021002100 0400 00 00 7A 01 83 01 80 4600 4E0049004700480054003800380052004100560045004E00 8B 41006C006C002000570065006C0063006F006D006500 0A 00 00 00 4A 02 83 02 00 45 80 4B004F004B006B006900610073004D00460043004E00 87 5300710075006100640020003200 0400 00 00 6A FF" - val stringListRemove = hex"E6 20 A0 19 FE" + val stringListOne = + hex"E6 B8 01 06 01 00 8B 46007200610067004C0041004E00640049004E004300 84 4600720061006700 0A00 00 00 0A FF" + val stringListTwo = + hex"E6 B8 01 06 06 00 8E 470065006E006500720061006C0047006F0072006700750074007A00 A1 46004C0059002C0041006C006C002000770065006C0063006F006D0065002C0063006E0020006C0061007300740020006E0069006700680074002100210021002100 0400 00 00 7A 01 83 02 00 45 80 4B004F004B006B006900610073004D00460043004E00 87 5300710075006100640020003200 0400 00 00 6A FF" + val stringListThree = + hex"E6 B8 01 06 06 00 8E 470065006E006500720061006C0047006F0072006700750074007A00 A1 46004C0059002C0041006C006C002000770065006C0063006F006D0065002C0063006E0020006C0061007300740020006E0069006700680074002100210021002100 0400 00 00 7A 01 83 01 80 4600 4E0049004700480054003800380052004100560045004E00 8B 41006C006C002000570065006C0063006F006D006500 0A 00 00 00 4A 02 83 02 00 45 80 4B004F004B006B006900610073004D00460043004E00 87 5300710075006100640020003200 0400 00 00 6A FF" + val stringListRemove = hex"E6 20 A0 19 FE" val stringUpdateLeader = hex"E6 C0 28 08 C4 00 46006100740065004A0048004E004300 FF" - val stringUpdateTask = hex"E6 C0 58 094E00 52004900500020005000530031002C0020007600690073006900740020005000530046006F00720065007600650072002E006E0065007400 FF" - val stringUpdateContinent = hex"E6 C0 38 09 85000000 7F80" - val stringUpdateSize = hex"E6 C0 18 0A 37 F8" - val stringUpdateLeaderSize = hex"E6 C0 58 10 C3 00 4A0069006D006D0079006E00 43 FF" + val stringUpdateTask = + hex"E6 C0 58 094E00 52004900500020005000530031002C0020007600690073006900740020005000530046006F00720065007600650072002E006E0065007400 FF" + val stringUpdateContinent = hex"E6 C0 38 09 85000000 7F80" + val stringUpdateSize = hex"E6 C0 18 0A 37 F8" + val stringUpdateLeaderSize = hex"E6 C0 58 10 C3 00 4A0069006D006D0079006E00 43 FF" val stringUpdateTaskContinent = hex"E6 C0 58 11 40 80 3200 3 04000000 FF0" - val stringUpdateAll = hex"E6 C0 78 30 58 0430 6D00610064006D0075006A00 80 040000000A FF" - val stringRemoveUpdate = hex"e6 20201801014aff" + val stringUpdateAll = hex"E6 C0 78 30 58 0430 6D00610064006D0075006A00 80 040000000A FF" + val stringRemoveUpdate = hex"e6 20201801014aff" "SquadInfo (w/out squad_guid)" in { val o = SquadInfo("FragLANdINC", "Frag", PlanetSideZoneID(10), 0, 10) @@ -379,7 +383,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (remove)" in { - val msg = ReplicationStreamMessage(1, None, + val msg = ReplicationStreamMessage( + 1, + None, Vector( SquadListing(5, None) ) @@ -390,7 +396,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update leader)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(2, SquadInfo("FateJHNC")) ) @@ -401,7 +409,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update task)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(5, SquadInfo(None, "RIP PS1, visit PSForever.net")) ) @@ -412,7 +422,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update continent)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(3, SquadInfo(PlanetSideZoneID(10))) ) @@ -423,7 +435,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update size)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(1, SquadInfo(6)) ) @@ -434,7 +448,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update leader and size)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(5, SquadInfo("Jimmyn").And(SquadInfo(3))) ) @@ -445,7 +461,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update task and continent)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(5, SquadInfo(None, "2").And(SquadInfo(PlanetSideZoneID(4)))) ) @@ -456,7 +474,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (update all)" in { - val msg = ReplicationStreamMessage(6, None, + val msg = ReplicationStreamMessage( + 6, + None, Vector( SquadListing(7, SquadInfo("madmuj", "", PlanetSideZoneID(4), 0, 10, PlanetSideGUID(11))) ) @@ -467,7 +487,9 @@ class ReplicationStreamMessageTest extends Specification { } "encode (remove 1 and update 0)" in { - val msg = ReplicationStreamMessage(1, None, + val msg = ReplicationStreamMessage( + 1, + None, Vector( SquadListing(1, None), SquadListing(0, SquadInfo(10)) diff --git a/common/src/test/scala/game/SetChatFilterMessageTest.scala b/common/src/test/scala/game/SetChatFilterMessageTest.scala index 7bf9f518..27bc0e92 100644 --- a/common/src/test/scala/game/SetChatFilterMessageTest.scala +++ b/common/src/test/scala/game/SetChatFilterMessageTest.scala @@ -7,7 +7,7 @@ import net.psforever.packet.game._ import scodec.bits._ class SetChatFilterMessageTest extends Specification { - val string = hex"63 05FF80" + val string = hex"63 05FF80" val string_custom = hex"63 05C180" "decode" in { @@ -46,28 +46,76 @@ class SetChatFilterMessageTest extends Specification { } "encode" in { - val msg = SetChatFilterMessage(ChatChannel.Local, true, List(ChatChannel.Unknown, ChatChannel.Tells, ChatChannel.Local, ChatChannel.Squad, ChatChannel.Outfit, ChatChannel.Command, ChatChannel.Platoon, ChatChannel.Broadcast, ChatChannel.SquadLeader)) + val msg = SetChatFilterMessage( + ChatChannel.Local, + true, + List( + ChatChannel.Unknown, + ChatChannel.Tells, + ChatChannel.Local, + ChatChannel.Squad, + ChatChannel.Outfit, + ChatChannel.Command, + ChatChannel.Platoon, + ChatChannel.Broadcast, + ChatChannel.SquadLeader + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (success; same channel listed multiple times)" in { - val msg = SetChatFilterMessage(ChatChannel.Local, true, List(ChatChannel.Unknown, ChatChannel.Unknown, ChatChannel.Tells, ChatChannel.Tells, ChatChannel.Local, ChatChannel.Squad, ChatChannel.Outfit, ChatChannel.Command, ChatChannel.Platoon, ChatChannel.Broadcast, ChatChannel.SquadLeader)) + val msg = SetChatFilterMessage( + ChatChannel.Local, + true, + List( + ChatChannel.Unknown, + ChatChannel.Unknown, + ChatChannel.Tells, + ChatChannel.Tells, + ChatChannel.Local, + ChatChannel.Squad, + ChatChannel.Outfit, + ChatChannel.Command, + ChatChannel.Platoon, + ChatChannel.Broadcast, + ChatChannel.SquadLeader + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (success; out of order)" in { - val msg = SetChatFilterMessage(ChatChannel.Local, true, List(ChatChannel.Squad, ChatChannel.Outfit, ChatChannel.SquadLeader, ChatChannel.Unknown, ChatChannel.Command, ChatChannel.Platoon, ChatChannel.Broadcast, ChatChannel.Tells, ChatChannel.Local)) + val msg = SetChatFilterMessage( + ChatChannel.Local, + true, + List( + ChatChannel.Squad, + ChatChannel.Outfit, + ChatChannel.SquadLeader, + ChatChannel.Unknown, + ChatChannel.Command, + ChatChannel.Platoon, + ChatChannel.Broadcast, + ChatChannel.Tells, + ChatChannel.Local + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string } "encode (success; custom)" in { - val msg = SetChatFilterMessage(ChatChannel.Local, true, List(ChatChannel.Unknown, ChatChannel.Tells, ChatChannel.Broadcast, ChatChannel.SquadLeader)) + val msg = SetChatFilterMessage( + ChatChannel.Local, + true, + List(ChatChannel.Unknown, ChatChannel.Tells, ChatChannel.Broadcast, ChatChannel.SquadLeader) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_custom diff --git a/common/src/test/scala/game/SpawnRequestMessageTest.scala b/common/src/test/scala/game/SpawnRequestMessageTest.scala index bc9149c6..2b593909 100644 --- a/common/src/test/scala/game/SpawnRequestMessageTest.scala +++ b/common/src/test/scala/game/SpawnRequestMessageTest.scala @@ -12,7 +12,7 @@ class SpawnRequestMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case SpawnRequestMessage(unk1,unk2,unk3,unk4,unk5) => + case SpawnRequestMessage(unk1, unk2, unk3, unk4, unk5) => unk1 mustEqual 0 unk2 mustEqual SpawnGroup.Facility unk3 mustEqual 0 diff --git a/common/src/test/scala/game/SplashHitMessageTest.scala b/common/src/test/scala/game/SplashHitMessageTest.scala index b55390b0..40e978b4 100644 --- a/common/src/test/scala/game/SplashHitMessageTest.scala +++ b/common/src/test/scala/game/SplashHitMessageTest.scala @@ -8,7 +8,8 @@ import net.psforever.types.{PlanetSideGUID, Vector3} import scodec.bits._ class SplashHitMessageTest extends Specification { - val string = hex"62 7129e72b0c1dd1516ec58000051e01d8371f0100000025803616bb2a9ae50b000008889d00644bdd35454c45c000000400" + val string = + hex"62 7129e72b0c1dd1516ec58000051e01d8371f0100000025803616bb2a9ae50b000008889d00644bdd35454c45c000000400" "decode" in { PacketCoding.DecodePacket(string).require match { @@ -46,10 +47,15 @@ class SplashHitMessageTest extends Specification { } "encode" in { - val msg = SplashHitMessage(113, PlanetSideGUID(40103), - Vector3(3681.3438f, 2728.9062f, 90.921875f), 0, 0, - Some(Vector3(2.21875f, 0.90625f, -1.125f)), None, - SplashedTarget(PlanetSideGUID(75), Vector3(3674.8438f, 2726.789f, 91.15625f), 286326784L, None) :: + val msg = SplashHitMessage( + 113, + PlanetSideGUID(40103), + Vector3(3681.3438f, 2728.9062f, 90.921875f), + 0, + 0, + Some(Vector3(2.21875f, 0.90625f, -1.125f)), + None, + SplashedTarget(PlanetSideGUID(75), Vector3(3674.8438f, 2726.789f, 91.15625f), 286326784L, None) :: SplashedTarget(PlanetSideGUID(372), Vector3(3679.1328f, 2722.6016f, 92.765625f), 268435456L, None) :: Nil ) diff --git a/common/src/test/scala/game/SquadDefinitionActionMessageTest.scala b/common/src/test/scala/game/SquadDefinitionActionMessageTest.scala index db3f1242..9111cbb3 100644 --- a/common/src/test/scala/game/SquadDefinitionActionMessageTest.scala +++ b/common/src/test/scala/game/SquadDefinitionActionMessageTest.scala @@ -13,29 +13,35 @@ class SquadDefinitionActionMessageTest extends Specification { val string_00 = hex"e7 00 0c0000" //guid: 3 val string_03 = hex"E7 0c 0000c0" //index: 3 val string_04 = hex"E7 10 0000c0" //index: 3 - val string_07 = hex"e7 1c 0000e68043006f0070007300200061006e00640020004d0069006c006900740061007200790020004f006600660069006300650072007300" + val string_07 = + hex"e7 1c 0000e68043006f0070007300200061006e00640020004d0069006c006900740061007200790020004f006600660069006300650072007300" val string_08 = hex"E7 20 000000" - val string_10 = hex"E7 28 000004" //index: 1 + val string_10 = hex"E7 28 000004" //index: 1 val string_19 = hex"E7 4c 0000218041002d005400650061006d00" //"A-Team" val string_20 = hex"E7 50 0000004000" - val string_21 = hex"E7 54 000008" //index: 2 - val string_22 = hex"E7 58 000008" //index: 2 + val string_21 = hex"E7 54 000008" //index: 2 + val string_22 = hex"E7 58 000008" //index: 2 val string_23 = hex"E7 5c 0000061842004c00550046004f005200" //"BLUFOR", index: 1 - val string_24 = hex"E7 60 000006386b0069006c006c002000620061006400200064007500640065007300" //"kill bad dudes", index: 1 + val string_24 = + hex"E7 60 000006386b0069006c006c002000620061006400200064007500640065007300" //"kill bad dudes", index: 1 val string_25 = hex"E7 64 000004400000800000" //"Anti-Vehicular" (former), "Infiltration Suit" (latter), index: 1 val string_26 = hex"E7 68 000000" - val string_28 = hex"E7 70 000020" //On - val string_31 = hex"E7 7c 000020" //On - val string_34a = hex"E7 88 00002180420061006400610073007300000000000000040000" //"Badass", Solsar, Any matching position - val string_34b = hex"E7 88 00002180420061006400610073007300000000000000080000" //"Badass", Hossin, Any matching position + val string_28 = hex"E7 70 000020" //On + val string_31 = hex"E7 7c 000020" //On + val string_34a = + hex"E7 88 00002180420061006400610073007300000000000000040000" //"Badass", Solsar, Any matching position + val string_34b = + hex"E7 88 00002180420061006400610073007300000000000000080000" //"Badass", Hossin, Any matching position val string_34c = hex"E7 88 00002180420061006400610073007300000000000000080080" //"Badass", Hossin, Any position - val string_34d = hex"E7 88 00002180420061006400610073007300100000200000080100" //"Badass", Hossin, Some("Anti-Vehicular", "Infiltration Suit") - val string_34e = hex"E7 88 00002180420061006400610073007300100000200000080180" //"Badass", Hossin, All("Anti-Vehicular", "Infiltration Suit") + val string_34d = + hex"E7 88 00002180420061006400610073007300100000200000080100" //"Badass", Hossin, Some("Anti-Vehicular", "Infiltration Suit") + val string_34e = + hex"E7 88 00002180420061006400610073007300100000200000080180" //"Badass", Hossin, All("Anti-Vehicular", "Infiltration Suit") val string_35 = hex"E7 8c 000000" val string_40 = hex"E7 a0 000004" //index: 1 val string_41 = hex"E7 a4 000000" - val string_43 = hex"e7 ac 000000" + val string_43 = hex"e7 ac 000000" val string_failure = hex"E7 ff" "decode (00)" in { @@ -255,7 +261,12 @@ class SquadDefinitionActionMessageTest extends Specification { case SquadDefinitionActionMessage(unk1, unk2, action) => unk1 mustEqual PlanetSideGUID(0) unk2 mustEqual 0 - action mustEqual SearchForSquadsWithParticularRole("Badass", Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), 2, SearchMode.SomeCertifications) + action mustEqual SearchForSquadsWithParticularRole( + "Badass", + Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), + 2, + SearchMode.SomeCertifications + ) case _ => ko } @@ -266,7 +277,12 @@ class SquadDefinitionActionMessageTest extends Specification { case SquadDefinitionActionMessage(unk1, unk2, action) => unk1 mustEqual PlanetSideGUID(0) unk2 mustEqual 0 - action mustEqual SearchForSquadsWithParticularRole("Badass", Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), 2, SearchMode.AllCertifications) + action mustEqual SearchForSquadsWithParticularRole( + "Badass", + Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), + 2, + SearchMode.AllCertifications + ) case _ => ko } @@ -398,17 +414,25 @@ class SquadDefinitionActionMessageTest extends Specification { } "encode (24)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, ChangeSquadMemberRequirementsDetailedOrders(1, "kill bad dudes")) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + ChangeSquadMemberRequirementsDetailedOrders(1, "kill bad dudes") + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_24 } "encode (25)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, ChangeSquadMemberRequirementsCertifications( - 1, - Set(CertificationType.AntiVehicular, CertificationType.InfiltrationSuit) - )) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + ChangeSquadMemberRequirementsCertifications( + 1, + Set(CertificationType.AntiVehicular, CertificationType.InfiltrationSuit) + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_25 @@ -436,35 +460,65 @@ class SquadDefinitionActionMessageTest extends Specification { } "encode (34a)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SearchForSquadsWithParticularRole("Badass", Set(), 1, SearchMode.AnyPositions)) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + SearchForSquadsWithParticularRole("Badass", Set(), 1, SearchMode.AnyPositions) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_34a } "encode (34b)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SearchForSquadsWithParticularRole("Badass", Set(), 2, SearchMode.AnyPositions)) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + SearchForSquadsWithParticularRole("Badass", Set(), 2, SearchMode.AnyPositions) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_34b } "encode (34c)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SearchForSquadsWithParticularRole("Badass", Set(), 2, SearchMode.AvailablePositions)) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + SearchForSquadsWithParticularRole("Badass", Set(), 2, SearchMode.AvailablePositions) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_34c } "encode (34d)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SearchForSquadsWithParticularRole("Badass", Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), 2, SearchMode.SomeCertifications)) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + SearchForSquadsWithParticularRole( + "Badass", + Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), + 2, + SearchMode.SomeCertifications + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_34d } "encode (34e)" in { - val msg = SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SearchForSquadsWithParticularRole("Badass", Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), 2, SearchMode.AllCertifications)) + val msg = SquadDefinitionActionMessage( + PlanetSideGUID(0), + 0, + SearchForSquadsWithParticularRole( + "Badass", + Set(CertificationType.InfiltrationSuit, CertificationType.AntiVehicular), + 2, + SearchMode.AllCertifications + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_34e diff --git a/common/src/test/scala/game/SquadDetailDefinitionUpdateMessageTest.scala b/common/src/test/scala/game/SquadDetailDefinitionUpdateMessageTest.scala index 8bdb7603..eeea594a 100644 --- a/common/src/test/scala/game/SquadDetailDefinitionUpdateMessageTest.scala +++ b/common/src/test/scala/game/SquadDetailDefinitionUpdateMessageTest.scala @@ -8,20 +8,25 @@ import org.specs2.mutable._ import scodec.bits._ class SquadDetailDefinitionUpdateMessageTest extends Specification { - val string_unk1 = hex"e80300818800015c5189004603408c000000012000ff" + val string_unk1 = hex"e80300818800015c5189004603408c000000012000ff" val string_leader_char_id = hex"e8050080904d56b808" val string_unk3LeaderName = hex"e80300821104145011b9be840024284a00610061006b006f008c008118000000024000ff" - val string_task = hex"e8050080ac6041006c006c002000570065006c0063006f006d0065002000" - val string_zone = hex"e8030080b0a8000000" - val string_taskZone = hex"e80200812ce05c002300460046003000300030003000200054006800650020005c002300660066006600660066006600200042006c0061006400650073006040000000" - val string_unk7 = hex"e8030081ac8054006800650020004b0069006e00670027007300200053007100750061006400788c09808c4854006800650020004700750061007200640008808c5054006800650020004b006e00690067006800740007808c4054006800650020004500610072006c0006808c4054006800650020004c006f007200640005808c405400680065002000440075006b00650004808c4854006800650020004200610072006f006e0003808c6054006800650020005000720069006e00630065007300730002808c5054006800650020005000720069006e006300650001808c48540068006500200051007500650065006e0000808c4054006800650020004b0069006e006700ff" - val string_member_closed = hex"e8030080c602c043fe" - val string_member_role = hex"e8070080c60040462443006f006d006d0061006e00640065007200ff" + val string_task = hex"e8050080ac6041006c006c002000570065006c0063006f006d0065002000" + val string_zone = hex"e8030080b0a8000000" + val string_taskZone = + hex"e80200812ce05c002300460046003000300030003000200054006800650020005c002300660066006600660066006600200042006c0061006400650073006040000000" + val string_unk7 = + hex"e8030081ac8054006800650020004b0069006e00670027007300200053007100750061006400788c09808c4854006800650020004700750061007200640008808c5054006800650020004b006e00690067006800740007808c4054006800650020004500610072006c0006808c4054006800650020004c006f007200640005808c405400680065002000440075006b00650004808c4854006800650020004200610072006f006e0003808c6054006800650020005000720069006e00630065007300730002808c5054006800650020005000720069006e006300650001808c48540068006500200051007500650065006e0000808c4054006800650020004b0069006e006700ff" + val string_member_closed = hex"e8030080c602c043fe" + val string_member_role = hex"e8070080c60040462443006f006d006d0061006e00640065007200ff" val string_member_roleRequirements = hex"e8010080c60340862841004400560020004800610063006b00650072005000000002003fc0" - val string_member_charIdName = hex"e8030080c602c08f2658480123004400750063006b006d006100730074006500720034003300ff" - val string_task_memberEtc = hex"e80100812ce05c002300460046003000300030003000200054006800650020005c002300660066006600660066006600200042006c0061006400650073008c09810c005000000000000220230007808c0006808c0005808c0004808c0003808c0002808c0001808c0000808c00ff" - val string_full = hex"e80300848180038021514601288a8400420048006f0066004400bf5c0023006600660064006300300030002a002a002a005c0023003900360034003000660066003d004b004f004b002b005300500043002b0046004c0059003d005c0023006600660064006300300030002a002a002a005c002300460046003400300034003000200041006c006c002000570065006c0063006f006d006500070000009814010650005c00230066006600300030003000300020007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c008000000000800100000c00020c8c5c00230066006600640063003000300020002000200043008000000000800100000c00020c8c5c002300660066006400630030003000200020002000480080eab58a02854f0070006f006c0045000100000c00020c8d5c002300660066006400630030003000200020002000200049008072d47a028b42006f006200610046003300740074003900300037000100000c00020c8c5c0023006600660064006300300030002000200020004e008000000000800100000c00020c8c5c00230066006600640063003000300020002000200041008000000000800100000c00020ca05c00230066006600300030003000300020007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c008000000000800100000c00020c8c5c0023003900360034003000660066002000200020004b008000000000800100000c00020c8c5c0023003900360034003000660066002000200020004f008042a28c028448006f00660044000100000c00020c8c5c0023003900360034003000660066002000200020004b008000000000800100000c0000" - val string_mixed = hex"e80300812cd85000530046006f007200650076006500720020005000610063006b0065007400200043006f006c006c0065006300740069006f006e00841400000181306400800000000080000000000000220c808000000000800000000000001e0c808000000000800000000000001a0c80800000000080000000000000160c80800000000080000000000000120c808000000000800000000000000e0c808000000000800000000000000a0c80800000000080000000000000060c80800000000080000000000000020c80800000000080000000000003fc" + val string_member_charIdName = hex"e8030080c602c08f2658480123004400750063006b006d006100730074006500720034003300ff" + val string_task_memberEtc = + hex"e80100812ce05c002300460046003000300030003000200054006800650020005c002300660066006600660066006600200042006c0061006400650073008c09810c005000000000000220230007808c0006808c0005808c0004808c0003808c0002808c0001808c0000808c00ff" + val string_full = + hex"e80300848180038021514601288a8400420048006f0066004400bf5c0023006600660064006300300030002a002a002a005c0023003900360034003000660066003d004b004f004b002b005300500043002b0046004c0059003d005c0023006600660064006300300030002a002a002a005c002300460046003400300034003000200041006c006c002000570065006c0063006f006d006500070000009814010650005c00230066006600300030003000300020007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c008000000000800100000c00020c8c5c00230066006600640063003000300020002000200043008000000000800100000c00020c8c5c002300660066006400630030003000200020002000480080eab58a02854f0070006f006c0045000100000c00020c8d5c002300660066006400630030003000200020002000200049008072d47a028b42006f006200610046003300740074003900300037000100000c00020c8c5c0023006600660064006300300030002000200020004e008000000000800100000c00020c8c5c00230066006600640063003000300020002000200041008000000000800100000c00020ca05c00230066006600300030003000300020007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c007c008000000000800100000c00020c8c5c0023003900360034003000660066002000200020004b008000000000800100000c00020c8c5c0023003900360034003000660066002000200020004f008042a28c028448006f00660044000100000c00020c8c5c0023003900360034003000660066002000200020004b008000000000800100000c0000" + val string_mixed = + hex"e80300812cd85000530046006f007200650076006500720020005000610063006b0065007400200043006f006c006c0065006300740069006f006e00841400000181306400800000000080000000000000220c808000000000800000000000001e0c808000000000800000000000001a0c80800000000080000000000000160c80800000000080000000000000120c808000000000800000000000000e0c808000000000800000000000000a0c80800000000080000000000000060c80800000000080000000000000020c80800000000080000000000003fc" "SquadDetailDefinitionUpdateMessage" should { "decode (unk1 + members)" in { @@ -32,7 +37,7 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { case SquadDetail(Some(unk1), None, Some(char_id), None, None, None, None, None, Some(_)) => unk1 mustEqual 0 char_id mustEqual 1221560L - //members tests follow ... + //members tests follow ... case _ => ko } @@ -66,7 +71,7 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { char_id mustEqual 42631712L unk3 mustEqual 556403L leader mustEqual "Jaako" - //members tests follow ... + //members tests follow ... case _ => ko } @@ -123,22 +128,22 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { ok } - "decode (unk7 + members)" in { - PacketCoding.DecodePacket(string_unk7).require match { - case SquadDetailDefinitionUpdateMessage(guid, detail) => - guid mustEqual PlanetSideGUID(3) - detail match { - case SquadDetail(None, None, None, None, None, Some(task), None, Some(unk7), Some(_)) => - task mustEqual "The King's Squad" - unk7 mustEqual 8 - //members tests follow ... - case _ => - ko - } - case _ => - ko - } + "decode (unk7 + members)" in { + PacketCoding.DecodePacket(string_unk7).require match { + case SquadDetailDefinitionUpdateMessage(guid, detail) => + guid mustEqual PlanetSideGUID(3) + detail match { + case SquadDetail(None, None, None, None, None, Some(task), None, Some(unk7), Some(_)) => + task mustEqual "The King's Squad" + unk7 mustEqual 8 + //members tests follow ... + case _ => + ko + } + case _ => + ko } + } "decode (member closed)" in { PacketCoding.DecodePacket(string_member_closed).require match { @@ -276,7 +281,17 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { case SquadDetailDefinitionUpdateMessage(guid, detail) => guid mustEqual PlanetSideGUID(3) detail match { - case SquadDetail(Some(u1), Some(u2), Some(char_id), Some(u3), Some(leader), Some(task), Some(zone), Some(unk7), Some(member_list)) => + case SquadDetail( + Some(u1), + Some(u2), + Some(char_id), + Some(u3), + Some(leader), + Some(task), + Some(zone), + Some(unk7), + Some(member_list) + ) => u1 mustEqual 3 u2 mustEqual 1792 char_id mustEqual 42771010L @@ -286,104 +301,196 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { zone mustEqual PlanetSideZoneID(7) unk7 mustEqual 4983296 member_list.size mustEqual 10 - member_list.head mustEqual SquadPositionEntry(0,Some( - SquadPositionDetail( - Some(false), - Some("\\#ff0000 |||||||||||||||||||||||"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some(""))) + member_list.head mustEqual SquadPositionEntry( + 0, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ff0000 |||||||||||||||||||||||"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) + ) ) - member_list(1) mustEqual SquadPositionEntry(1,Some( - SquadPositionDetail( - Some(false), - Some("\\#ffdc00 C"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some(""))) + member_list(1) mustEqual SquadPositionEntry( + 1, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ffdc00 C"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) + ) ) - member_list(2) mustEqual SquadPositionEntry(2,Some( - SquadPositionDetail( - Some(false), - Some("\\#ffdc00 H"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(42644970L), - Some("OpolE") + member_list(2) mustEqual SquadPositionEntry( + 2, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ffdc00 H"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(42644970L), + Some("OpolE") + ) ) - )) - member_list(3) mustEqual SquadPositionEntry(3,Some( - SquadPositionDetail( - Some(false), - Some("\\#ffdc00 I"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(41604210L), - Some("BobaF3tt907") + ) + member_list(3) mustEqual SquadPositionEntry( + 3, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ffdc00 I"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(41604210L), + Some("BobaF3tt907") + ) ) - )) - member_list(4) mustEqual SquadPositionEntry(4,Some( - SquadPositionDetail( - Some(false), - Some("\\#ffdc00 N"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some("") + ) + member_list(4) mustEqual SquadPositionEntry( + 4, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ffdc00 N"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) ) - )) - member_list(5) mustEqual SquadPositionEntry(5,Some( - SquadPositionDetail( - Some(false), - Some("\\#ffdc00 A"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some("") + ) + member_list(5) mustEqual SquadPositionEntry( + 5, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ffdc00 A"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) ) - )) - member_list(6) mustEqual SquadPositionEntry(6,Some( - SquadPositionDetail( - Some(false), - Some("\\#ff0000 |||||||||||||||||||||||"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some("") + ) + member_list(6) mustEqual SquadPositionEntry( + 6, + Some( + SquadPositionDetail( + Some(false), + Some("\\#ff0000 |||||||||||||||||||||||"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) ) - )) - member_list(7) mustEqual SquadPositionEntry(7,Some( - SquadPositionDetail( - Some(false), - Some("\\#9640ff K"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some("") + ) + member_list(7) mustEqual SquadPositionEntry( + 7, + Some( + SquadPositionDetail( + Some(false), + Some("\\#9640ff K"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) ) - )) - member_list(8) mustEqual SquadPositionEntry(8,Some( - SquadPositionDetail( - Some(false), - Some("\\#9640ff O"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(42771010L), - Some("HofD") + ) + member_list(8) mustEqual SquadPositionEntry( + 8, + Some( + SquadPositionDetail( + Some(false), + Some("\\#9640ff O"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(42771010L), + Some("HofD") + ) ) - )) - member_list(9) mustEqual SquadPositionEntry(9,Some( - SquadPositionDetail( - Some(false), - Some("\\#9640ff K"), - Some(""), - Some(Set(CertificationType.StandardAssault, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit)), - Some(0), - Some("") + ) + member_list(9) mustEqual SquadPositionEntry( + 9, + Some( + SquadPositionDetail( + Some(false), + Some("\\#9640ff K"), + Some(""), + Some( + Set( + CertificationType.StandardAssault, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit + ) + ), + Some(0), + Some("") + ) ) - )) + ) case _ => ko } @@ -400,106 +507,136 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { case SquadDetail(None, None, None, None, None, Some(task), None, None, Some(member_list)) => task mustEqual "PSForever Packet Collection" member_list.size mustEqual 10 - member_list.head mustEqual SquadPositionEntry(9,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") - )) + member_list.head mustEqual SquadPositionEntry( + 9, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) + ) ) - member_list(1) mustEqual SquadPositionEntry(8,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") - )) + member_list(1) mustEqual SquadPositionEntry( + 8, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) + ) ) - member_list(2) mustEqual SquadPositionEntry(7,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + member_list(2) mustEqual SquadPositionEntry( + 7, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(3) mustEqual SquadPositionEntry(6,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(3) mustEqual SquadPositionEntry( + 6, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(4) mustEqual SquadPositionEntry(5,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(4) mustEqual SquadPositionEntry( + 5, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(5) mustEqual SquadPositionEntry(4,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(5) mustEqual SquadPositionEntry( + 4, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(6) mustEqual SquadPositionEntry(3,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(6) mustEqual SquadPositionEntry( + 3, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(7) mustEqual SquadPositionEntry(2,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(7) mustEqual SquadPositionEntry( + 2, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(8) mustEqual SquadPositionEntry(1,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(8) mustEqual SquadPositionEntry( + 1, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) - member_list(9) mustEqual SquadPositionEntry(0,Some( - SquadPositionDetail( - Some(false), - Some(""), - Some(""), - Some(Set.empty), - Some(0), - Some("") + ) + member_list(9) mustEqual SquadPositionEntry( + 0, + Some( + SquadPositionDetail( + Some(false), + Some(""), + Some(""), + Some(Set.empty), + Some(0), + Some("") + ) ) - )) + ) case _ => ko } @@ -515,9 +652,11 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { SquadDetail() .Field1(0) .LeaderCharId(1221560L) - .Members(List( - SquadPositionEntry(6, SquadPositionDetail().Player(0L, "")) - )) + .Members( + List( + SquadPositionEntry(6, SquadPositionDetail().Player(0L, "")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_unk1 @@ -538,9 +677,11 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { SquadDetail() .Leader(42631712L, "Jaako") .Field3(556403L) - .Members(List( - SquadPositionEntry(0, SquadPositionDetail().Player(0L, "")) - )) + .Members( + List( + SquadPositionEntry(0, SquadPositionDetail().Player(0L, "")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_unk3LeaderName @@ -581,18 +722,20 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { SquadDetail() .Task("The King's Squad") .Field7(8) - .Members(List( - SquadPositionEntry(9, SquadPositionDetail().Role("The Guard")), - SquadPositionEntry(8, SquadPositionDetail().Role("The Knight")), - SquadPositionEntry(7, SquadPositionDetail().Role("The Earl")), - SquadPositionEntry(6, SquadPositionDetail().Role("The Lord")), - SquadPositionEntry(5, SquadPositionDetail().Role("The Duke")), - SquadPositionEntry(4, SquadPositionDetail().Role("The Baron")), - SquadPositionEntry(3, SquadPositionDetail().Role("The Princess")), - SquadPositionEntry(2, SquadPositionDetail().Role("The Prince")), - SquadPositionEntry(1, SquadPositionDetail().Role("The Queen")), - SquadPositionEntry(0, SquadPositionDetail().Role("The King")) - )) + .Members( + List( + SquadPositionEntry(9, SquadPositionDetail().Role("The Guard")), + SquadPositionEntry(8, SquadPositionDetail().Role("The Knight")), + SquadPositionEntry(7, SquadPositionDetail().Role("The Earl")), + SquadPositionEntry(6, SquadPositionDetail().Role("The Lord")), + SquadPositionEntry(5, SquadPositionDetail().Role("The Duke")), + SquadPositionEntry(4, SquadPositionDetail().Role("The Baron")), + SquadPositionEntry(3, SquadPositionDetail().Role("The Princess")), + SquadPositionEntry(2, SquadPositionDetail().Role("The Prince")), + SquadPositionEntry(1, SquadPositionDetail().Role("The Queen")), + SquadPositionEntry(0, SquadPositionDetail().Role("The King")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_unk7 @@ -602,22 +745,25 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { val msg = SquadDetailDefinitionUpdateMessage( PlanetSideGUID(3), SquadDetail() - .Members(List( - SquadPositionEntry(5, SquadPositionDetail.Closed) - )) + .Members( + List( + SquadPositionEntry(5, SquadPositionDetail.Closed) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_member_closed } - "encode (member role)" in { val msg = SquadDetailDefinitionUpdateMessage( PlanetSideGUID(7), SquadDetail() - .Members(List( - SquadPositionEntry(0, SquadPositionDetail().Role("Commander")) - )) + .Members( + List( + SquadPositionEntry(0, SquadPositionDetail().Role("Commander")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_member_role @@ -627,11 +773,16 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { val msg = SquadDetailDefinitionUpdateMessage( PlanetSideGUID(1), SquadDetail() - .Members(List( - SquadPositionEntry(6, SquadPositionDetail() - .Role("ADV Hacker") - .Requirements(Set(CertificationType.AdvancedHacking))) - )) + .Members( + List( + SquadPositionEntry( + 6, + SquadPositionDetail() + .Role("ADV Hacker") + .Requirements(Set(CertificationType.AdvancedHacking)) + ) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_member_roleRequirements @@ -641,9 +792,11 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { val msg = SquadDetailDefinitionUpdateMessage( PlanetSideGUID(3), SquadDetail() - .Members(List( - SquadPositionEntry(5, SquadPositionDetail().Player(1218249L, "Duckmaster43")) - )) + .Members( + List( + SquadPositionEntry(5, SquadPositionDetail().Player(1218249L, "Duckmaster43")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_member_charIdName @@ -654,18 +807,20 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { PlanetSideGUID(1), SquadDetail() .Task("\\#FF0000 The \\#ffffff Blades") - .Members(List( - SquadPositionEntry(9, SquadPositionDetail().Role("").Requirements(Set())), - SquadPositionEntry(8, SquadPositionDetail().Role("")), - SquadPositionEntry(7, SquadPositionDetail().Role("")), - SquadPositionEntry(6, SquadPositionDetail().Role("")), - SquadPositionEntry(5, SquadPositionDetail().Role("")), - SquadPositionEntry(4, SquadPositionDetail().Role("")), - SquadPositionEntry(3, SquadPositionDetail().Role("")), - SquadPositionEntry(2, SquadPositionDetail().Role("")), - SquadPositionEntry(1, SquadPositionDetail().Role("")), - SquadPositionEntry(0, SquadPositionDetail().Role("")) - )) + .Members( + List( + SquadPositionEntry(9, SquadPositionDetail().Role("").Requirements(Set())), + SquadPositionEntry(8, SquadPositionDetail().Role("")), + SquadPositionEntry(7, SquadPositionDetail().Role("")), + SquadPositionEntry(6, SquadPositionDetail().Role("")), + SquadPositionEntry(5, SquadPositionDetail().Role("")), + SquadPositionEntry(4, SquadPositionDetail().Role("")), + SquadPositionEntry(3, SquadPositionDetail().Role("")), + SquadPositionEntry(2, SquadPositionDetail().Role("")), + SquadPositionEntry(1, SquadPositionDetail().Role("")), + SquadPositionEntry(0, SquadPositionDetail().Role("")) + ) + ) ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_task_memberEtc @@ -692,7 +847,7 @@ class SquadDetailDefinitionUpdateMessageTest extends Specification { SquadPositionEntry(5, SquadPositionDetail("\\#ffdc00 A", "", Set(), 0, "")), SquadPositionEntry(6, SquadPositionDetail("\\#ff0000 |||||||||||||||||||||||", "", Set(), 0, "")), SquadPositionEntry(7, SquadPositionDetail("\\#9640ff K", "", Set(), 0, "")), - SquadPositionEntry(8, SquadPositionDetail("\\#9640ff O", "", Set(), 42771010L ,"HofD")), + SquadPositionEntry(8, SquadPositionDetail("\\#9640ff O", "", Set(), 42771010L, "HofD")), SquadPositionEntry(9, SquadPositionDetail("\\#9640ff K", "", Set(), 0, "")) ) ) diff --git a/common/src/test/scala/game/SquadMembershipResponseTest.scala b/common/src/test/scala/game/SquadMembershipResponseTest.scala index f9ff10c2..0212c783 100644 --- a/common/src/test/scala/game/SquadMembershipResponseTest.scala +++ b/common/src/test/scala/game/SquadMembershipResponseTest.scala @@ -307,7 +307,8 @@ class SquadMembershipResponseTest extends Specification { } "encode (0-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.Invite, 0, 0, 1176612L, Some(1004937L), "SPOILERS", true, None) + val msg = + SquadMembershipResponse(SquadResponseType.Invite, 0, 0, 1176612L, Some(1004937L), "SPOILERS", true, None) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_02 @@ -328,49 +329,96 @@ class SquadMembershipResponseTest extends Specification { } "encode (2-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.Accept, 0, 0, 1300870L, Some(42771010L), "VirusGiver", true, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.Accept, + 0, + 0, + 1300870L, + Some(42771010L), + "VirusGiver", + true, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_21 } "encode (2-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.Accept, 0, 0, 1300870L, Some(30736877L), "VirusGiver", true, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.Accept, + 0, + 0, + 1300870L, + Some(30736877L), + "VirusGiver", + true, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_22 } "encode (3-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.Reject, 0, 3, 31035057L, Some(42771010L), "HMFIC", false, Some(None)) + val msg = + SquadMembershipResponse(SquadResponseType.Reject, 0, 3, 31035057L, Some(42771010L), "HMFIC", false, Some(None)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_31 } "encode (3-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.Reject, 0, 2, 31106913L, Some(42771010L), "DAN1111", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.Reject, + 0, + 2, + 31106913L, + Some(42771010L), + "DAN1111", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_32 } "encode (4-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.Cancel, 0, 2, 41578085L, Some(41607133L), "SAraisVanu", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.Cancel, + 0, + 2, + 41578085L, + Some(41607133L), + "SAraisVanu", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_41 } "encode (4-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.Cancel, 0, 2, 41607396L, Some(41324011L), "AirInjector", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.Cancel, + 0, + 2, + 41607396L, + Some(41324011L), + "AirInjector", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_42 } "encode (5-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.Leave, 0, 1, 1176612L, Some(1176612L), "CCRIDER", true, Some(None)) + val msg = + SquadMembershipResponse(SquadResponseType.Leave, 0, 1, 1176612L, Some(1176612L), "CCRIDER", true, Some(None)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_51 @@ -384,35 +432,72 @@ class SquadMembershipResponseTest extends Specification { } "encode (7-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.PlatoonInvite, 0, 0, 41578085L, Some(30910985L), "Wizkid45", true, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.PlatoonInvite, + 0, + 0, + 41578085L, + Some(30910985L), + "Wizkid45", + true, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_72 } "encode (8-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.PlatoonAccept, 0, 0, 30910985L, Some(41578085L), "Wizkid45", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.PlatoonAccept, + 0, + 0, + 30910985L, + Some(41578085L), + "Wizkid45", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_81 } "encode (9-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.PlatoonReject, 0, 0, 297025L, Some(41605002L), "", true, Some(None)) + val msg = + SquadMembershipResponse(SquadResponseType.PlatoonReject, 0, 0, 297025L, Some(41605002L), "", true, Some(None)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_91 } "encode (9-2)" in { - val msg = SquadMembershipResponse(SquadResponseType.PlatoonReject, 0, 0, 30910985L, Some(41578085L), "Wizkid45", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.PlatoonReject, + 0, + 0, + 30910985L, + Some(41578085L), + "Wizkid45", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_92 } "encode (b-1)" in { - val msg = SquadMembershipResponse(SquadResponseType.PlatoonLeave, 0, 1, 30910985L, Some(41578085L), "SAraisVanu", false, Some(None)) + val msg = SquadMembershipResponse( + SquadResponseType.PlatoonLeave, + 0, + 1, + 30910985L, + Some(41578085L), + "SAraisVanu", + false, + Some(None) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_b1 diff --git a/common/src/test/scala/game/SquadStateTest.scala b/common/src/test/scala/game/SquadStateTest.scala index b7fb925c..2ae1b595 100644 --- a/common/src/test/scala/game/SquadStateTest.scala +++ b/common/src/test/scala/game/SquadStateTest.scala @@ -10,7 +10,8 @@ import scodec.bits._ class SquadStateTest extends Specification { val string1 = hex"770700186d9130081001b11b27c1c041680000" val string2 = hex"770700242a28c020003e9237a90e3382695004eab58a0281017eb95613df4c42950040" - val stringx = hex"7704008dd9ccf010042a9837310e1b82a8c006646c7a028103984f34759c904a800014f01c26f3d014081ddd3896931bc25478037680ea80c081d699a147b01e154000031c0bc81407e08c1a3a890de1542c022070bd0140815958bf29efa6214300108023c01000ae491ac68d1a61342c023623c50140011d6ea0878f3026a00009e014" + val stringx = + hex"7704008dd9ccf010042a9837310e1b82a8c006646c7a028103984f34759c904a800014f01c26f3d014081ddd3896931bc25478037680ea80c081d699a147b01e154000031c0bc81407e08c1a3a890de1542c022070bd0140815958bf29efa6214300108023c01000ae491ac68d1a61342c023623c50140011d6ea0878f3026a00009e014" "decode (1)" in { PacketCoding.DecodePacket(string1).require match { @@ -180,7 +181,7 @@ class SquadStateTest extends Specification { char_id mustEqual 41419792L u2 mustEqual 0 u3 mustEqual 5 - pos mustEqual Vector3(6800.8906f ,4236.7734f, 39.296875f) + pos mustEqual Vector3(6800.8906f, 4236.7734f, 39.296875f) u4 mustEqual 2 u5 mustEqual 2 u6 mustEqual false @@ -211,34 +212,43 @@ class SquadStateTest extends Specification { } "encode (1)" in { - val msg = SquadState(PlanetSideGUID(7), List( - SquadStateInfo(1300870L, 64, 64, Vector3(3464.0469f, 4065.5703f, 20.015625f), 2, 2, false, 0) - )) + val msg = SquadState( + PlanetSideGUID(7), + List( + SquadStateInfo(1300870L, 64, 64, Vector3(3464.0469f, 4065.5703f, 20.015625f), 2, 2, false, 0) + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string1 } "encode (2)" in { - val msg = SquadState(PlanetSideGUID(7), List( - SquadStateInfo(42771010L, 0, 0, Vector3(6801.953f, 4231.828f, 39.21875f), 2, 2, false, 680), - SquadStateInfo(42644970L, 64, 64, Vector3(2908.7422f, 3742.6875f, 67.296875f), 2, 2, false, 680) - )) + val msg = SquadState( + PlanetSideGUID(7), + List( + SquadStateInfo(42771010L, 0, 0, Vector3(6801.953f, 4231.828f, 39.21875f), 2, 2, false, 680), + SquadStateInfo(42644970L, 64, 64, Vector3(2908.7422f, 3742.6875f, 67.296875f), 2, 2, false, 680) + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string2 } "encode (8)" in { - val msg = SquadState(PlanetSideGUID(4), List( - SquadStateInfo(30383325L, 0, 16, Vector3(6849.328f, 4231.5938f, 41.71875f), 2, 2, false, 864), - SquadStateInfo(41577572L, 64, 64, Vector3(6183.797f, 4013.6328f, 72.5625f), 2, 2, false, 0, 335, true), - SquadStateInfo(41606788L, 64, 64, Vector3(6611.8594f, 4242.586f, 75.46875f), 2, 2, false, 888), - SquadStateInfo(30736877L, 64, 64, Vector3(6809.836f, 4218.078f, 40.234375f), 2, 2, false, 0), - SquadStateInfo(41517411L, 64, 63, Vector3(6848.0312f, 4232.2266f, 41.734375f), 2, 2, false, 556), - SquadStateInfo(41607488L, 64, 64, Vector3(2905.3438f, 3743.9453f, 67.296875f), 2, 2, false, 304), - SquadStateInfo(41419792L, 0, 5, Vector3(6800.8906f, 4236.7734f, 39.296875f), 2, 2, false, 556), - SquadStateInfo(42616684L, 64, 0, Vector3(2927.1094f, 3704.0312f, 78.375f), 1, 1, false, 0, 572, true) - )) + val msg = SquadState( + PlanetSideGUID(4), + List( + SquadStateInfo(30383325L, 0, 16, Vector3(6849.328f, 4231.5938f, 41.71875f), 2, 2, false, 864), + SquadStateInfo(41577572L, 64, 64, Vector3(6183.797f, 4013.6328f, 72.5625f), 2, 2, false, 0, 335, true), + SquadStateInfo(41606788L, 64, 64, Vector3(6611.8594f, 4242.586f, 75.46875f), 2, 2, false, 888), + SquadStateInfo(30736877L, 64, 64, Vector3(6809.836f, 4218.078f, 40.234375f), 2, 2, false, 0), + SquadStateInfo(41517411L, 64, 63, Vector3(6848.0312f, 4232.2266f, 41.734375f), 2, 2, false, 556), + SquadStateInfo(41607488L, 64, 64, Vector3(2905.3438f, 3743.9453f, 67.296875f), 2, 2, false, 304), + SquadStateInfo(41419792L, 0, 5, Vector3(6800.8906f, 4236.7734f, 39.296875f), 2, 2, false, 556), + SquadStateInfo(42616684L, 64, 0, Vector3(2927.1094f, 3704.0312f, 78.375f), 1, 1, false, 0, 572, true) + ) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual stringx } -} \ No newline at end of file +} diff --git a/common/src/test/scala/game/SquadWaypointEventTest.scala b/common/src/test/scala/game/SquadWaypointEventTest.scala index 199b0bb1..2084d7d2 100644 --- a/common/src/test/scala/game/SquadWaypointEventTest.scala +++ b/common/src/test/scala/game/SquadWaypointEventTest.scala @@ -49,7 +49,7 @@ class SquadWaypointEventTest extends Specification { unk3 mustEqual 41581052L unk4 mustEqual SquadWaypoints.Two unk5.isEmpty mustEqual true - unk6.contains( WaypointEvent(10, Vector3(3457.9688f, 5514.4688f, 0.0f), 1) ) mustEqual true + unk6.contains(WaypointEvent(10, Vector3(3457.9688f, 5514.4688f, 0.0f), 1)) mustEqual true case _ => ko } @@ -62,7 +62,7 @@ class SquadWaypointEventTest extends Specification { unk2 mustEqual 3 unk3 mustEqual 41581052L unk4 mustEqual SquadWaypoints.Two - unk5.contains( 4L ) mustEqual true + unk5.contains(4L) mustEqual true unk6.isEmpty mustEqual true case _ => ko @@ -84,7 +84,12 @@ class SquadWaypointEventTest extends Specification { } "encode (3)" in { - val msg = SquadWaypointEvent.Add(3, 41581052L, SquadWaypoints.Two, WaypointEvent(10, Vector3(3457.9688f, 5514.4688f, 0.0f), 1)) + val msg = SquadWaypointEvent.Add( + 3, + 41581052L, + SquadWaypoints.Two, + WaypointEvent(10, Vector3(3457.9688f, 5514.4688f, 0.0f), 1) + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_3 diff --git a/common/src/test/scala/game/TargetingImplantRequestTest.scala b/common/src/test/scala/game/TargetingImplantRequestTest.scala index 6832b444..d6ebd609 100644 --- a/common/src/test/scala/game/TargetingImplantRequestTest.scala +++ b/common/src/test/scala/game/TargetingImplantRequestTest.scala @@ -9,7 +9,8 @@ import scodec.bits._ class TargetingImplantRequestTest extends Specification { val string_single = hex"b5 061016" - val string_long = hex"b5 41edeb12d4409f0144053f8010541ba91d03df376831b1e26000611041e1107c0209c0"//0510085013d9ffb6720d5b132900003770? + val string_long = + hex"b5 41edeb12d4409f0144053f8010541ba91d03df376831b1e26000611041e1107c0209c0" //0510085013d9ffb6720d5b132900003770? "decode (single)" in { PacketCoding.DecodePacket(string_single).require match { diff --git a/common/src/test/scala/game/TriggerEffectMessageTest.scala b/common/src/test/scala/game/TriggerEffectMessageTest.scala index a26a7cf9..5e4647e1 100644 --- a/common/src/test/scala/game/TriggerEffectMessageTest.scala +++ b/common/src/test/scala/game/TriggerEffectMessageTest.scala @@ -9,8 +9,8 @@ import scodec.bits._ class TriggerEffectMessageTest extends Specification { val string_motionalarmsensor = hex"51 970B 82 6F6E FA00C00000" - val string_boomer = hex"51 0000 93 737061776E5F6F626A6563745F656666656374 417BB2CB3B4F8E00000000" - val string_boomer_explode = hex"51 DF09 8F 6465746F6E6174655F626F6F6D6572 00" + val string_boomer = hex"51 0000 93 737061776E5F6F626A6563745F656666656374 417BB2CB3B4F8E00000000" + val string_boomer_explode = hex"51 DF09 8F 6465746F6E6174655F626F6F6D6572 00" "decode (motion alarm sensor)" in { PacketCoding.DecodePacket(string_motionalarmsensor).require match { @@ -60,7 +60,8 @@ class TriggerEffectMessageTest extends Specification { } "encode (boomer)" in { - val msg = TriggerEffectMessage("spawn_object_effect", Vector3(3567.0156f, 3278.6953f, 114.484375f), Vector3(0, 0, 90)) + val msg = + TriggerEffectMessage("spawn_object_effect", Vector3(3567.0156f, 3278.6953f, 114.484375f), Vector3(0, 0, 90)) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_boomer @@ -73,4 +74,3 @@ class TriggerEffectMessageTest extends Specification { pkt mustEqual string_boomer_explode } } - diff --git a/common/src/test/scala/game/UseItemMessageTest.scala b/common/src/test/scala/game/UseItemMessageTest.scala index 091b5135..26e38dc6 100644 --- a/common/src/test/scala/game/UseItemMessageTest.scala +++ b/common/src/test/scala/game/UseItemMessageTest.scala @@ -16,7 +16,7 @@ class UseItemMessageTest extends Specification { avatar_guid mustEqual PlanetSideGUID(75) unk1 mustEqual PlanetSideGUID(0) object_guid mustEqual PlanetSideGUID(372) - unk2 mustEqual 0xFFFFFFFFL + unk2 mustEqual 0xffffffffL unk3 mustEqual false unk4 mustEqual Vector3(5.0f, 0.0f, 0.0f) unk5 mustEqual Vector3(0.0f, 0.0f, 0.0f) @@ -30,7 +30,19 @@ class UseItemMessageTest extends Specification { } "encode" in { - val msg = UseItemMessage(PlanetSideGUID(75), PlanetSideGUID(0), PlanetSideGUID(372), 0xFFFFFFFFL, false, Vector3(5.0f, 0.0f, 0.0f), Vector3(0.0f, 0.0f, 0.0f), 11, 25, 0, 364) + val msg = UseItemMessage( + PlanetSideGUID(75), + PlanetSideGUID(0), + PlanetSideGUID(372), + 0xffffffffL, + false, + Vector3(5.0f, 0.0f, 0.0f), + Vector3(0.0f, 0.0f, 0.0f), + 11, + 25, + 0, + 364 + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/VNLWorldStatusMessageTest.scala b/common/src/test/scala/game/VNLWorldStatusMessageTest.scala index 86913ac2..1230349d 100644 --- a/common/src/test/scala/game/VNLWorldStatusMessageTest.scala +++ b/common/src/test/scala/game/VNLWorldStatusMessageTest.scala @@ -11,8 +11,9 @@ import scodec.bits._ class VNLWorldStatusMessageTest extends Specification { // NOTE: the ServerType is encoded as 0x03 here, but the real planetside server will encode it as 0x04 - val string = hex"0597570065006c0063006f006d006500200074006f00200050006c0061006e00650074005300690064006500210020000186" ++ - hex"67656d696e69" ++ hex"0100 03 00 01459e2540 3775" ++ bin"01".toByteVector + val string = + hex"0597570065006c0063006f006d006500200074006f00200050006c0061006e00650074005300690064006500210020000186" ++ + hex"67656d696e69" ++ hex"0100 03 00 01459e2540 3775" ++ bin"01".toByteVector "decode" in { PacketCoding.DecodePacket(string).require match { @@ -27,24 +28,38 @@ class VNLWorldStatusMessageTest extends Specification { world.status mustEqual WorldStatus.Up world.serverType mustEqual ServerType.Released world.connections.length mustEqual 1 - world.connections { - 0 - }.address.getPort mustEqual 30007 - world.connections { - 0 - }.address.getAddress.toString mustEqual "/64.37.158.69" + world + .connections { + 0 + } + .address + .getPort mustEqual 30007 + world + .connections { + 0 + } + .address + .getAddress + .toString mustEqual "/64.37.158.69" case _ => ko } } "encode" in { - val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", - Vector(WorldInformation("gemini", WorldStatus.Up, ServerType.Released, - Vector( - WorldConnectionInfo(new InetSocketAddress(InetAddress.getByName("64.37.158.69"), 30007)) - ), PlanetSideEmpire.NC - )) + val msg = VNLWorldStatusMessage( + "Welcome to PlanetSide! ", + Vector( + WorldInformation( + "gemini", + WorldStatus.Up, + ServerType.Released, + Vector( + WorldConnectionInfo(new InetSocketAddress(InetAddress.getByName("64.37.158.69"), 30007)) + ), + PlanetSideEmpire.NC + ) + ) ) //0100 04 00 01459e2540377540 @@ -55,7 +70,7 @@ class VNLWorldStatusMessageTest extends Specification { } "encode and decode empty messages" in { - val string = hex"0584410041004100410000" + val string = hex"0584410041004100410000" val empty_msg = VNLWorldStatusMessage("AAAA", Vector()) val empty_pkt = PacketCoding.EncodePacket(empty_msg).require.toByteVector @@ -71,16 +86,17 @@ class VNLWorldStatusMessageTest extends Specification { } "encode and decode multiple worlds" in { - var string = hex"0597570065006c0063006f006d006500200074006f00200050006c0061006e0065007400530069006400650021002000048941424344414243443101000300006240414243444142434432000002020022404142434441424344330000010100a2404142434441424344340500040000c0" + var string = + hex"0597570065006c0063006f006d006500200074006f00200050006c0061006e0065007400530069006400650021002000048941424344414243443101000300006240414243444142434432000002020022404142434441424344330000010100a2404142434441424344340500040000c0" val worlds = Vector( - WorldInformation("ABCDABCD1", WorldStatus.Up, ServerType.Released, Vector(), PlanetSideEmpire.NC), - WorldInformation("ABCDABCD2", WorldStatus.Down, ServerType.Beta, Vector(), PlanetSideEmpire.TR), - WorldInformation("ABCDABCD3", WorldStatus.Locked, ServerType.Development, Vector(), PlanetSideEmpire.VS), - WorldInformation("ABCDABCD4", WorldStatus.Full, ServerType.Released_Gemini, Vector(), PlanetSideEmpire.NEUTRAL) + WorldInformation("ABCDABCD1", WorldStatus.Up, ServerType.Released, Vector(), PlanetSideEmpire.NC), + WorldInformation("ABCDABCD2", WorldStatus.Down, ServerType.Beta, Vector(), PlanetSideEmpire.TR), + WorldInformation("ABCDABCD3", WorldStatus.Locked, ServerType.Development, Vector(), PlanetSideEmpire.VS), + WorldInformation("ABCDABCD4", WorldStatus.Full, ServerType.ReleasedGemini, Vector(), PlanetSideEmpire.NEUTRAL) ) - val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", worlds) + val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", worlds) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string @@ -91,7 +107,7 @@ class VNLWorldStatusMessageTest extends Specification { pkt_worlds.length mustEqual worlds.length - for (i <- 0 to pkt_worlds.length-1) + for (i <- 0 to pkt_worlds.length - 1) pkt_worlds(i) mustEqual worlds(i) ok diff --git a/common/src/test/scala/game/VehicleStateMessageTest.scala b/common/src/test/scala/game/VehicleStateMessageTest.scala index e3df9ace..df4765de 100644 --- a/common/src/test/scala/game/VehicleStateMessageTest.scala +++ b/common/src/test/scala/game/VehicleStateMessageTest.scala @@ -44,8 +44,11 @@ class VehicleStateMessageTest extends Specification { Vector3(359.29688f, 1.0546875f, 90.35156f), Some(Vector3(0.0f, 0.0f, 0.03125f)), None, - 0, 0, 15, - false, false + 0, + 0, + 15, + false, + false ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/VehicleSubStateMessageTest.scala b/common/src/test/scala/game/VehicleSubStateMessageTest.scala index 4059c2c7..2fbc19c3 100644 --- a/common/src/test/scala/game/VehicleSubStateMessageTest.scala +++ b/common/src/test/scala/game/VehicleSubStateMessageTest.scala @@ -27,7 +27,15 @@ class VehicleSubStateMessageTest extends Specification { } "encode" in { - val msg = VehicleSubStateMessage(PlanetSideGUID(7385), PlanetSideGUID(3376), Vector3(3465.9575f, 2873.3635f, 91.05253f), Vector3(11.6015625f, 0.0f, 3.515625f), Some(Vector3(-0.40625f, 0.03125f, -0.8125f)), false, None) + val msg = VehicleSubStateMessage( + PlanetSideGUID(7385), + PlanetSideGUID(3376), + Vector3(3465.9575f, 2873.3635f, 91.05253f), + Vector3(11.6015625f, 0.0f, 3.515625f), + Some(Vector3(-0.40625f, 0.03125f, -0.8125f)), + false, + None + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/WeaponFireMessageTest.scala b/common/src/test/scala/game/WeaponFireMessageTest.scala index c1a9699d..7304a52d 100644 --- a/common/src/test/scala/game/WeaponFireMessageTest.scala +++ b/common/src/test/scala/game/WeaponFireMessageTest.scala @@ -12,7 +12,19 @@ class WeaponFireMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case WeaponFireMessage(seq_time, weapon_guid, projectile_guid, shot_origin, unk1, unk2, unk3, unk4, unk5, unk6, unk7) => + case WeaponFireMessage( + seq_time, + weapon_guid, + projectile_guid, + shot_origin, + unk1, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7 + ) => seq_time mustEqual 68 weapon_guid mustEqual PlanetSideGUID(76) projectile_guid mustEqual PlanetSideGUID(40100) @@ -30,7 +42,19 @@ class WeaponFireMessageTest extends Specification { } "encode" in { - val msg = WeaponFireMessage(68, PlanetSideGUID(76), PlanetSideGUID(40100), Vector3(3675.4688f, 2726.9922f, 92.921875f), 0, 64294, 1502, 200, 255, 0, None) + val msg = WeaponFireMessage( + 68, + PlanetSideGUID(76), + PlanetSideGUID(40100), + Vector3(3675.4688f, 2726.9922f, 92.921875f), + 0, + 64294, + 1502, + 200, + 255, + 0, + None + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string diff --git a/common/src/test/scala/game/WeatherMessageTest.scala b/common/src/test/scala/game/WeatherMessageTest.scala index 438517f1..23da1d13 100644 --- a/common/src/test/scala/game/WeatherMessageTest.scala +++ b/common/src/test/scala/game/WeatherMessageTest.scala @@ -8,7 +8,8 @@ import net.psforever.types.Vector3 import scodec.bits._ class WeatherMessageTest extends Specification { - val string = hex"9501000000004A0807C0D65B8FBF2427663F178608BE0B000000006CE13E0C390E3F64445CB7BF3E0C2FF23DA46264A3193FBA522E3F597D9A96093F95B99E3D0800096FE53E6CD6523F39198EAF683F9BA0363D01009C35503F9E5F3E3F3C304E46F23EF9668E3E6B56C8277F3FB084F33EB6C10291423FB17F663F00008C077F3E3135D03E320A" + val string = + hex"9501000000004A0807C0D65B8FBF2427663F178608BE0B000000006CE13E0C390E3F64445CB7BF3E0C2FF23DA46264A3193FBA522E3F597D9A96093F95B99E3D0800096FE53E6CD6523F39198EAF683F9BA0363D01009C35503F9E5F3E3F3C304E46F23EF9668E3E6B56C8277F3FB084F33EB6C10291423FB17F663F00008C077F3E3135D03E320A" "decode" in { PacketCoding.DecodePacket(string).require match { @@ -90,7 +91,7 @@ class WeatherMessageTest extends Specification { StormInfo(Vector3(0.6001494f, 0.6809498f, 0.0f), 89, 125) :: StormInfo(Vector3(0.53745425f, 0.07750241f, 0.0f), 8, 0) :: StormInfo(Vector3(0.44811276f, 0.8235843f, 0.0f), 57, 25) :: - StormInfo(Vector3(0.90892875f, 0.04458676f, 0.0f),1 ,0) :: + StormInfo(Vector3(0.90892875f, 0.04458676f, 0.0f), 1, 0) :: StormInfo(Vector3(0.813318f, 0.7436465f, 0.0f), 60, 48) :: StormInfo(Vector3(0.47319263f, 0.27812937f, 0.0f), 107, 86) :: StormInfo(Vector3(0.99670076f, 0.4756217f, 0.0f), 182, 193) :: diff --git a/common/src/test/scala/game/ZoneInfoMessageTest.scala b/common/src/test/scala/game/ZoneInfoMessageTest.scala index 1ed5f4d7..ad161e52 100644 --- a/common/src/test/scala/game/ZoneInfoMessageTest.scala +++ b/common/src/test/scala/game/ZoneInfoMessageTest.scala @@ -7,7 +7,7 @@ import net.psforever.packet.game._ import scodec.bits._ class ZoneInfoMessageTest extends Specification { - val string = hex"C6 0C 00 80 00 00 00 00" + val string = hex"C6 0C 00 80 00 00 00 00" val string_cavern = hex"C6 1B 00 1D F9 F3 00 00" "decode (normal)" in { diff --git a/common/src/test/scala/game/ZonePopulationUpdateMessageTest.scala b/common/src/test/scala/game/ZonePopulationUpdateMessageTest.scala index 46800218..5a4784e8 100644 --- a/common/src/test/scala/game/ZonePopulationUpdateMessageTest.scala +++ b/common/src/test/scala/game/ZonePopulationUpdateMessageTest.scala @@ -11,7 +11,18 @@ class ZonePopulationUpdateMessageTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case ZonePopulationUpdateMessage(continent_guid, zone_queue, tr_queue, tr_pop, nc_queue, nc_pop, vs_queue, vs_pop, bo_queue, bo_pop) => + case ZonePopulationUpdateMessage( + continent_guid, + zone_queue, + tr_queue, + tr_pop, + nc_queue, + nc_pop, + vs_queue, + vs_pop, + bo_queue, + bo_pop + ) => continent_guid mustEqual 4 zone_queue mustEqual 414 tr_queue mustEqual 138 diff --git a/common/src/test/scala/game/objectcreate/AegisShieldGeneratorDataTest.scala b/common/src/test/scala/game/objectcreate/AegisShieldGeneratorDataTest.scala index 1f8f24e5..a301f90e 100644 --- a/common/src/test/scala/game/objectcreate/AegisShieldGeneratorDataTest.scala +++ b/common/src/test/scala/game/objectcreate/AegisShieldGeneratorDataTest.scala @@ -46,7 +46,9 @@ class AegisShieldGeneratorDataTest extends Specification { val obj = AegisShieldGeneratorData( CommonFieldDataWithPlacement( PlacementData(Vector3(3571.2266f, 3278.0938f, 114.0f), Vector3(0, 0, 90)), - PlanetSideEmpire.VS, 2, PlanetSideGUID(2366) + PlanetSideEmpire.VS, + 2, + PlanetSideGUID(2366) ), 255 ) diff --git a/common/src/test/scala/game/objectcreate/CaptureFlagDataTest.scala b/common/src/test/scala/game/objectcreate/CaptureFlagDataTest.scala index bbe7d71e..0fec7e4f 100644 --- a/common/src/test/scala/game/objectcreate/CaptureFlagDataTest.scala +++ b/common/src/test/scala/game/objectcreate/CaptureFlagDataTest.scala @@ -9,7 +9,8 @@ import org.specs2.mutable._ import scodec.bits._ class CaptureFlagDataTest extends Specification { - val string_captureflag = hex"17 E5000000 CE8EA10 04A47 B818A FE0E 00 00 0F 24000015000400160B09000" //LLU for Qumu on Amerish + val string_captureflag = + hex"17 E5000000 CE8EA10 04A47 B818A FE0E 00 00 0F 24000015000400160B09000" //LLU for Qumu on Amerish "CaptureFlagData" in { "decode" in { @@ -38,7 +39,14 @@ class CaptureFlagDataTest extends Specification { } "encode" in { - val obj = CaptureFlagData(PlacementData(3912.0312f, 5169.4375f, 59.96875f, 0f, 0f, 47.8125f), PlanetSideEmpire.NC, 21, 4, 2838, 9) + val obj = CaptureFlagData( + PlacementData(3912.0312f, 5169.4375f, 59.96875f, 0f, 0f, 47.8125f), + PlanetSideEmpire.NC, + 21, + 4, + 2838, + 9 + ) val msg = ObjectCreateMessage(ObjectClass.capture_flag, PlanetSideGUID(4330), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_captureflag diff --git a/common/src/test/scala/game/objectcreate/CharacterDataTest.scala b/common/src/test/scala/game/objectcreate/CharacterDataTest.scala index b43d043e..a1735126 100644 --- a/common/src/test/scala/game/objectcreate/CharacterDataTest.scala +++ b/common/src/test/scala/game/objectcreate/CharacterDataTest.scala @@ -9,14 +9,16 @@ import org.specs2.mutable._ import scodec.bits._ class CharacterDataTest extends Specification { - val string = hex"17 73070000 BC8 3E0F 6C2D7 65535 CA16 00 00 09 9741E4F804000000 234530063007200610077006E00790052006F006E006E0069006500 220B7 E67B540404001000000000022B50100 268042006C00610063006B002000420065007200650074002000410072006D006F007500720065006400200043006F00720070007300 1700E0030050040003BC00000234040001A004000 3FFF67A8F A0A5424E0E800000000080952A9C3A03000001081103E040000000A023782F1080C0000016244108200000000808382403A030000014284C3A0C0000000202512F00B80C00000578F80F840000000280838B3C320300000080" + val string = + hex"17 73070000 BC8 3E0F 6C2D7 65535 CA16 00 00 09 9741E4F804000000 234530063007200610077006E00790052006F006E006E0069006500 220B7 E67B540404001000000000022B50100 268042006C00610063006B002000420065007200650074002000410072006D006F007500720065006400200043006F00720070007300 1700E0030050040003BC00000234040001A004000 3FFF67A8F A0A5424E0E800000000080952A9C3A03000001081103E040000000A023782F1080C0000016244108200000000808382403A030000014284C3A0C0000000202512F00B80C00000578F80F840000000280838B3C320300000080" //string seated was intentionally-produced test data val string_seated = hex"170307000069023c83e0f800000011a0530063007200610077006e00790052006f006e006e0069006500220b700000000000000000000000" ++ - hex"06800000268042006c00610063006b002000420065007200650074002000410072006d006f007500720065006400200043006f0072007000" ++ - hex"73001700e0030050040003bc00000234040001a00400020a8fa0a5424e0e800000000080952a9c3a03000001081103e040000000a023782f" ++ - hex"1080c0000016244108200000000808382403a030000014284c3a0c0000000202512f00b80c00000578f80f840000000280838b3c320300000080" - val string_backpack = hex"17 9C030000 BC8 340D F20A9 3956C AF0D 00 00 73 480000 87041006E00670065006C006C006F00 4A148 0000000000000000000000005C54200 24404F0072006900670069006E0061006C00200044006900730074007200690063007400 1740180181E8000000C202000042000000D202000000010A3C00" + hex"06800000268042006c00610063006b002000420065007200650074002000410072006d006f007500720065006400200043006f0072007000" ++ + hex"73001700e0030050040003bc00000234040001a00400020a8fa0a5424e0e800000000080952a9c3a03000001081103e040000000a023782f" ++ + hex"1080c0000016244108200000000808382403a030000014284c3a0c0000000202512f00b80c00000578f80f840000000280838b3c320300000080" + val string_backpack = + hex"17 9C030000 BC8 340D F20A9 3956C AF0D 00 00 73 480000 87041006E00670065006C006C006F00 4A148 0000000000000000000000005C54200 24404F0072006900670069006E0061006C00200044006900730074007200690063007400 1740180181E8000000C202000042000000D202000000010A3C00" "CharacterData" should { "decode" in { @@ -88,8 +90,13 @@ class CharacterDataTest extends Specification { char.implant_effects.length mustEqual 1 char.implant_effects.head mustEqual ImplantEffects.NoEffects char.cosmetics match { - case Some(c : Cosmetics) => - c.Styles mustEqual Set(PersonalStyle.NoHelmet, PersonalStyle.Beret, PersonalStyle.Sunglasses, PersonalStyle.Earpiece) + case Some(c: Cosmetics) => + c.Styles mustEqual Set( + PersonalStyle.NoHelmet, + PersonalStyle.Beret, + PersonalStyle.Sunglasses, + PersonalStyle.Earpiece + ) case None => ko } @@ -196,7 +203,7 @@ class CharacterDataTest extends Specification { ribbons.middle mustEqual MeritCommendation.HeavyInfantry4 ribbons.lower mustEqual MeritCommendation.TankBuster7 ribbons.tos mustEqual MeritCommendation.SixYearTR - //etc.. + //etc.. case _ => ko } @@ -276,8 +283,13 @@ class CharacterDataTest extends Specification { char.command_rank mustEqual 2 char.implant_effects.isEmpty mustEqual true char.cosmetics match { - case Some(c : Cosmetics) => - c.Styles mustEqual Set(PersonalStyle.NoHelmet, PersonalStyle.Beret, PersonalStyle.Sunglasses, PersonalStyle.Earpiece) + case Some(c: Cosmetics) => + c.Styles mustEqual Set( + PersonalStyle.NoHelmet, + PersonalStyle.Beret, + PersonalStyle.Sunglasses, + PersonalStyle.Earpiece + ) case None => ko } @@ -293,12 +305,12 @@ class CharacterDataTest extends Specification { } "encode" in { - val pos : PlacementData = PlacementData( + val pos: PlacementData = PlacementData( Vector3(3674.8438f, 2726.789f, 91.15625f), Vector3(0f, 0f, 64.6875f), Some(Vector3(1.4375f, -0.4375f, 0f)) ) - val a : Int=>CharacterAppearanceA = CharacterAppearanceA( + val a: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "ScrawnyRonnie", PlanetSideEmpire.TR, @@ -325,7 +337,7 @@ class CharacterDataTest extends Specification { 0, 0 ) - val b : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val b: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 316554L, "Black Beret Armoured Corps", 23, @@ -334,7 +346,8 @@ class CharacterDataTest extends Specification { false, false, false, - -39.375f, 0f, + -39.375f, + 0f, false, GrenadeState.None, false, @@ -345,8 +358,9 @@ class CharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - a, b, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + a, + b, RibbonBars( MeritCommendation.MarkovVeteran, MeritCommendation.HeavyInfantry4, @@ -354,8 +368,9 @@ class CharacterDataTest extends Specification { MeritCommendation.SixYearTR ) ) - val char : (Boolean,Boolean)=>CharacterData = CharacterData( - 255, 253, + val char: (Boolean, Boolean) => CharacterData = CharacterData( + 255, + 253, UniformStyle.ThirdUpgrade, 7, 5, @@ -363,11 +378,36 @@ class CharacterDataTest extends Specification { Some(Cosmetics(true, true, true, true, false)) ) val inv = InventoryData( - InventoryItemData(ObjectClass.plasma_grenade, PlanetSideGUID(3662), 0, WeaponData(0, 0, ObjectClass.plasma_grenade_ammo, PlanetSideGUID(3751), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.bank, PlanetSideGUID(3908), 1, WeaponData(0, 0, 1, ObjectClass.armor_canister, PlanetSideGUID(4143), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.mini_chaingun, PlanetSideGUID(4164), 2, WeaponData(0, 0, ObjectClass.bullet_9mm, PlanetSideGUID(3728), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.phoenix, PlanetSideGUID(3603), 3, WeaponData(0, 0, ObjectClass.phoenix_missile, PlanetSideGUID(3056), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.chainblade, PlanetSideGUID(4088), 4, WeaponData(0, 0, 1, ObjectClass.melee_ammo, PlanetSideGUID(3279), 0, CommonFieldData()(false))) :: + InventoryItemData( + ObjectClass.plasma_grenade, + PlanetSideGUID(3662), + 0, + WeaponData(0, 0, ObjectClass.plasma_grenade_ammo, PlanetSideGUID(3751), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.bank, + PlanetSideGUID(3908), + 1, + WeaponData(0, 0, 1, ObjectClass.armor_canister, PlanetSideGUID(4143), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.mini_chaingun, + PlanetSideGUID(4164), + 2, + WeaponData(0, 0, ObjectClass.bullet_9mm, PlanetSideGUID(3728), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.phoenix, + PlanetSideGUID(3603), + 3, + WeaponData(0, 0, ObjectClass.phoenix_missile, PlanetSideGUID(3056), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.chainblade, + PlanetSideGUID(4088), + 4, + WeaponData(0, 0, 1, ObjectClass.melee_ammo, PlanetSideGUID(3279), 0, CommonFieldData()(false)) + ) :: Nil ) val obj = PlayerData(pos, app, char, inv, DrawnSlot.Rifle1) @@ -378,7 +418,7 @@ class CharacterDataTest extends Specification { } "encode (seated)" in { - val a : Int=>CharacterAppearanceA = CharacterAppearanceA( + val a: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "ScrawnyRonnie", PlanetSideEmpire.TR, @@ -405,7 +445,7 @@ class CharacterDataTest extends Specification { 0, 0 ) - val b : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val b: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 26L, "Black Beret Armoured Corps", 23, @@ -414,7 +454,8 @@ class CharacterDataTest extends Specification { false, false, false, - -39.375f, 0f, + -39.375f, + 0f, false, GrenadeState.None, false, @@ -425,8 +466,9 @@ class CharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - a, b, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + a, + b, RibbonBars( MeritCommendation.MarkovVeteran, MeritCommendation.HeavyInfantry4, @@ -434,24 +476,55 @@ class CharacterDataTest extends Specification { MeritCommendation.SixYearTR ) ) - val char : (Boolean,Boolean)=>CharacterData = CharacterData( - 255, 253, + val char: (Boolean, Boolean) => CharacterData = CharacterData( + 255, + 253, UniformStyle.ThirdUpgrade, 5, List(ImplantEffects.NoEffects), Some(Cosmetics(true, true, true, true, false)) ) val inv = InventoryData( - InventoryItemData(ObjectClass.plasma_grenade, PlanetSideGUID(3662), 0, WeaponData(0, 0, ObjectClass.plasma_grenade_ammo, PlanetSideGUID(3751), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.bank, PlanetSideGUID(3908), 1, WeaponData(0, 0, 1, ObjectClass.armor_canister, PlanetSideGUID(4143), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.mini_chaingun, PlanetSideGUID(4164), 2, WeaponData(0, 0, ObjectClass.bullet_9mm, PlanetSideGUID(3728), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.phoenix, PlanetSideGUID(3603), 3, WeaponData(0, 0, ObjectClass.phoenix_missile, PlanetSideGUID(3056), 0, CommonFieldData()(false))) :: - InventoryItemData(ObjectClass.chainblade, PlanetSideGUID(4088), 4, WeaponData(0, 0, 1, ObjectClass.melee_ammo, PlanetSideGUID(3279), 0, CommonFieldData()(false))) :: + InventoryItemData( + ObjectClass.plasma_grenade, + PlanetSideGUID(3662), + 0, + WeaponData(0, 0, ObjectClass.plasma_grenade_ammo, PlanetSideGUID(3751), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.bank, + PlanetSideGUID(3908), + 1, + WeaponData(0, 0, 1, ObjectClass.armor_canister, PlanetSideGUID(4143), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.mini_chaingun, + PlanetSideGUID(4164), + 2, + WeaponData(0, 0, ObjectClass.bullet_9mm, PlanetSideGUID(3728), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.phoenix, + PlanetSideGUID(3603), + 3, + WeaponData(0, 0, ObjectClass.phoenix_missile, PlanetSideGUID(3056), 0, CommonFieldData()(false)) + ) :: + InventoryItemData( + ObjectClass.chainblade, + PlanetSideGUID(4088), + 4, + WeaponData(0, 0, 1, ObjectClass.melee_ammo, PlanetSideGUID(3279), 0, CommonFieldData()(false)) + ) :: Nil ) val obj = PlayerData(app, char, inv, DrawnSlot.Rifle1) - val msg = ObjectCreateMessage(ObjectClass.avatar, PlanetSideGUID(3902), ObjectCreateMessageParent(PlanetSideGUID(1234), 0), obj) + val msg = ObjectCreateMessage( + ObjectClass.avatar, + PlanetSideGUID(3902), + ObjectCreateMessageParent(PlanetSideGUID(1234), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_seated } @@ -461,7 +534,7 @@ class CharacterDataTest extends Specification { Vector3(4629.8906f, 6316.4453f, 54.734375f), Vector3(0, 0, 126.5625f) ) - val a : Int=>CharacterAppearanceA = CharacterAppearanceA( + val a: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "Angello", PlanetSideEmpire.VS, @@ -488,16 +561,17 @@ class CharacterDataTest extends Specification { 0, 0 ) - val b : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val b: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 529687L, "Original District", 23, false, //unk1 - true, //backpack + true, //backpack false, //unk2 false, //unk3 false, //unk4 - 351.5625f, 0f, //also: -8.4375f, 0f + 351.5625f, + 0f, //also: -8.4375f, 0f false, //lfs GrenadeState.None, false, //is_cloaking @@ -508,8 +582,9 @@ class CharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - a, b, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + a, + b, RibbonBars( MeritCommendation.Jacking2, MeritCommendation.ScavengerVS1, @@ -517,8 +592,9 @@ class CharacterDataTest extends Specification { MeritCommendation.SixYearVS ) ) - val char : (Boolean,Boolean)=>CharacterData = CharacterData( - 0, 0, + val char: (Boolean, Boolean) => CharacterData = CharacterData( + 0, + 0, UniformStyle.ThirdUpgrade, 1, List(), diff --git a/common/src/test/scala/game/objectcreate/CommonFieldDataTest.scala b/common/src/test/scala/game/objectcreate/CommonFieldDataTest.scala index c550d02c..95070b79 100644 --- a/common/src/test/scala/game/objectcreate/CommonFieldDataTest.scala +++ b/common/src/test/scala/game/objectcreate/CommonFieldDataTest.scala @@ -10,8 +10,8 @@ import scodec.bits._ object CommonFieldDataTest extends Specification { val string_shotgunshell_dropped = hex"17 A5000000 F9A7D0D 5E269 BED5A F114 0000596000000" - val string_implant_interface = hex"17 6C000000 01014C93304818000000" - val string_order_terminala = hex"17 A5000000 B2AF30EACF1889F7A3D1200007D2000000" + val string_implant_interface = hex"17 6C000000 01014C93304818000000" + val string_order_terminala = hex"17 A5000000 B2AF30EACF1889F7A3D1200007D2000000" "AmmoBoxData" should { "decode (shotgun shells, dropped)" in { @@ -59,7 +59,6 @@ object CommonFieldDataTest extends Specification { } } - "TerminalData" should { "decode (implant interface)" in { PacketCoding.DecodePacket(string_implant_interface).require match { @@ -116,7 +115,12 @@ object CommonFieldDataTest extends Specification { } "InternalSlot" in { - TerminalData(ObjectClass.order_terminala, PlanetSideGUID(1), 1, CommonFieldData(PlanetSideEmpire.NC)(false)) mustEqual + TerminalData( + ObjectClass.order_terminala, + PlanetSideGUID(1), + 1, + CommonFieldData(PlanetSideEmpire.NC)(false) + ) mustEqual InternalSlot(ObjectClass.order_terminala, PlanetSideGUID(1), 1, CommonFieldData(PlanetSideEmpire.NC)(false)) } } diff --git a/common/src/test/scala/game/objectcreate/HandheldDataTest.scala b/common/src/test/scala/game/objectcreate/HandheldDataTest.scala index 837dcf25..6337fc67 100644 --- a/common/src/test/scala/game/objectcreate/HandheldDataTest.scala +++ b/common/src/test/scala/game/objectcreate/HandheldDataTest.scala @@ -9,7 +9,7 @@ import org.specs2.mutable._ import scodec.bits._ class HandheldDataTest extends Specification { - val string_ace_held = hex"17 76000000 0406900650C80480000000" + val string_ace_held = hex"17 76000000 0406900650C80480000000" val string_ace_dropped = hex"17 AF000000 90024113B329C5D5A2D1200005B440000000" "ACE" should { @@ -50,7 +50,10 @@ class HandheldDataTest extends Specification { parent.isDefined mustEqual false data.isInstanceOf[DroppedItemData[_]] mustEqual true data match { - case DroppedItemData(pos, HandheldData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), mode, unk)) => + case DroppedItemData( + pos, + HandheldData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), mode, unk) + ) => pos.coord mustEqual Vector3(4708.461f, 5547.539f, 72.703125f) pos.orient mustEqual Vector3.z(194.0625f) @@ -72,8 +75,15 @@ class HandheldDataTest extends Specification { } "encode (held)" in { - val obj = HandheldData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0))) - val msg = ObjectCreateMessage(ObjectClass.ace, PlanetSideGUID(3173), ObjectCreateMessageParent(PlanetSideGUID(3336), 0), obj) + val obj = HandheldData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateMessage( + ObjectClass.ace, + PlanetSideGUID(3173), + ObjectCreateMessageParent(PlanetSideGUID(3336), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_ace_held } @@ -81,7 +91,9 @@ class HandheldDataTest extends Specification { "encode (dropped)" in { val obj = DroppedItemData( PlacementData(4708.461f, 5547.539f, 72.703125f, 0f, 0f, 194.0625f), - HandheldData(CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0))) + HandheldData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)) + ) ) val msg = ObjectCreateMessage(ObjectClass.ace, PlanetSideGUID(4388), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector @@ -121,8 +133,15 @@ class HandheldDataTest extends Specification { } "encode" in { - val obj = HandheldData(CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, None, Some(385), PlanetSideGUID(0))) - val msg = ObjectCreateMessage(ObjectClass.router_telepad, PlanetSideGUID(418), ObjectCreateMessageParent(PlanetSideGUID(430), 0), obj) + val obj = HandheldData( + CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, None, Some(385), PlanetSideGUID(0)) + ) + val msg = ObjectCreateMessage( + ObjectClass.router_telepad, + PlanetSideGUID(418), + ObjectCreateMessageParent(PlanetSideGUID(430), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_telepad @@ -161,14 +180,21 @@ class HandheldDataTest extends Specification { } "encode" in { - val obj = HandheldData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0))) - val msg = ObjectCreateMessage(ObjectClass.boomer_trigger, PlanetSideGUID(3600), ObjectCreateMessageParent(PlanetSideGUID(4272), 0), obj) + val obj = HandheldData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateMessage( + ObjectClass.boomer_trigger, + PlanetSideGUID(3600), + ObjectCreateMessageParent(PlanetSideGUID(4272), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_boomertrigger } } - val string_detonater_held = hex"17 76000000 1A886A8421080400000000" + val string_detonater_held = hex"17 76000000 1A886A8421080400000000" val string_detonater_dropped = hex"17 AF000000 EA8620ED1549B4B6A741500001B000000000" "Command Detonater" should { @@ -208,7 +234,10 @@ class HandheldDataTest extends Specification { guid mustEqual PlanetSideGUID(3682) parent.isDefined mustEqual false data match { - case DroppedItemData(pos, HandheldData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), mode, unk)) => + case DroppedItemData( + pos, + HandheldData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), mode, unk) + ) => pos.coord mustEqual Vector3(4777.633f, 5485.4062f, 85.8125f) pos.orient mustEqual Vector3.z(14.0625f) @@ -230,8 +259,15 @@ class HandheldDataTest extends Specification { } "encode (held)" in { - val obj = HandheldData(CommonFieldData(PlanetSideEmpire.NC, false, false, false, None, false, None, None, PlanetSideGUID(0))) - val msg = ObjectCreateMessage(ObjectClass.command_detonater, PlanetSideGUID(4162), ObjectCreateMessageParent(PlanetSideGUID(4149), 0), obj) + val obj = HandheldData( + CommonFieldData(PlanetSideEmpire.NC, false, false, false, None, false, None, None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateMessage( + ObjectClass.command_detonater, + PlanetSideGUID(4162), + ObjectCreateMessageParent(PlanetSideGUID(4149), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_detonater_held } @@ -239,7 +275,9 @@ class HandheldDataTest extends Specification { "encode (dropped)" in { val obj = DroppedItemData( PlacementData(4777.633f, 5485.4062f, 85.8125f, 0f, 0f, 14.0625f), - HandheldData(CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, None, None, PlanetSideGUID(0))) + HandheldData( + CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, None, None, PlanetSideGUID(0)) + ) ) val msg = ObjectCreateMessage(ObjectClass.command_detonater, PlanetSideGUID(3682), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/LockerContainerDataTest.scala b/common/src/test/scala/game/objectcreate/LockerContainerDataTest.scala index 427cd68f..239f5dce 100644 --- a/common/src/test/scala/game/objectcreate/LockerContainerDataTest.scala +++ b/common/src/test/scala/game/objectcreate/LockerContainerDataTest.scala @@ -9,7 +9,8 @@ import org.specs2.mutable._ import scodec.bits._ class LockerContainerDataTest extends Specification { - val string_locker_container = hex"17 AF010000 E414C0C00000000000000000000600000818829DC2E030000000202378620D80C00000378FA0FADC000006F1FC199D800000" + val string_locker_container = + hex"17 AF010000 E414C0C00000000000000000000600000818829DC2E030000000202378620D80C00000378FA0FADC000006F1FC199D800000" "LockerContainerData" should { "decode" in { @@ -63,17 +64,32 @@ class LockerContainerDataTest extends Specification { "encode" in { val obj = LockerContainerData( - InventoryData(List( - InventoryItemData(ObjectClass.nano_dispenser, PlanetSideGUID(2935), 0, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), + InventoryData( + List( + InventoryItemData( + ObjectClass.nano_dispenser, + PlanetSideGUID(2935), 0, - List(InternalSlot(ObjectClass.armor_canister, PlanetSideGUID(3426), 0, CommonFieldData()(false))) - ) - ), - InventoryItemData(ObjectClass.armor_canister, PlanetSideGUID(4090), 45, CommonFieldData()(false)), - InventoryItemData(ObjectClass.armor_canister, PlanetSideGUID(3326), 78, CommonFieldData()(false)) - )) + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(ObjectClass.armor_canister, PlanetSideGUID(3426), 0, CommonFieldData()(false))) + ) + ), + InventoryItemData(ObjectClass.armor_canister, PlanetSideGUID(4090), 45, CommonFieldData()(false)), + InventoryItemData(ObjectClass.armor_canister, PlanetSideGUID(3326), 78, CommonFieldData()(false)) + ) + ) ) val msg = ObjectCreateMessage(ObjectClass.locker_container, PlanetSideGUID(3148), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/OneMannedFieldTurretDataTest.scala b/common/src/test/scala/game/objectcreate/OneMannedFieldTurretDataTest.scala index 401db007..cc01167a 100644 --- a/common/src/test/scala/game/objectcreate/OneMannedFieldTurretDataTest.scala +++ b/common/src/test/scala/game/objectcreate/OneMannedFieldTurretDataTest.scala @@ -9,7 +9,8 @@ import org.specs2.mutable._ import scodec.bits._ class OneMannedFieldTurretDataTest extends Specification { - val string_orion = hex"17 5E010000 D82640B 92F76 01D65 F611 00 00 5E 4400006304BFC1E4041826E1503900000010104CE704C06400000" + val string_orion = + hex"17 5E010000 D82640B 92F76 01D65 F611 00 00 5E 4400006304BFC1E4041826E1503900000010104CE704C06400000" "OneMannedFieldTurretData" should { "decode (orion)" in { @@ -20,7 +21,11 @@ class OneMannedFieldTurretDataTest extends Specification { guid mustEqual PlanetSideGUID(2916) parent.isDefined mustEqual false data match { - case OneMannedFieldTurretData(CommonFieldDataWithPlacement(pos, deploy), health, Some(InventoryData(inv))) => + case OneMannedFieldTurretData( + CommonFieldDataWithPlacement(pos, deploy), + health, + Some(InventoryData(inv)) + ) => pos.coord mustEqual Vector3(3567.1406f, 2988.0078f, 71.84375f) pos.orient mustEqual Vector3.z(185.625f) deploy.faction mustEqual PlanetSideEmpire.VS @@ -39,7 +44,12 @@ class OneMannedFieldTurretDataTest extends Specification { inv.head.guid mustEqual PlanetSideGUID(2615) inv.head.parentSlot mustEqual 1 inv.head.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -87,17 +97,47 @@ class OneMannedFieldTurretDataTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(2502)) ), 255, - InventoryData(List( - InternalSlot(ObjectClass.energy_gun_vs, PlanetSideGUID(2615), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(ObjectClass.energy_gun_ammo, PlanetSideGUID(2510), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, Some(false), None, PlanetSideGUID(0))) + InventoryData( + List( + InternalSlot( + ObjectClass.energy_gun_vs, + PlanetSideGUID(2615), + 1, + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + ObjectClass.energy_gun_ammo, + PlanetSideGUID(2510), + 0, + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) ) ) ) - )) + ) ) val msg = ObjectCreateMessage(ObjectClass.portable_manned_turret_vs, PlanetSideGUID(2916), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/REKDataTest.scala b/common/src/test/scala/game/objectcreate/REKDataTest.scala index 29c05703..552e5850 100644 --- a/common/src/test/scala/game/objectcreate/REKDataTest.scala +++ b/common/src/test/scala/game/objectcreate/REKDataTest.scala @@ -9,7 +9,7 @@ import org.specs2.mutable._ import scodec.bits._ class REKDataTest extends Specification { - val string_rek_held = hex"17 86000000 27086C2350F800800000000000" + val string_rek_held = hex"17 86000000 27086C2350F800800000000000" val string_rek_dropped = hex"17 BF000000 EC20311 85219 7AC1A 2D12 00 00 4E 4000000001800" "REKData" should { @@ -51,7 +51,10 @@ class REKDataTest extends Specification { guid mustEqual PlanetSideGUID(4355) parent.isDefined mustEqual false data match { - case DroppedItemData(pos, REKData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), unk1, unk2)) => + case DroppedItemData( + pos, + REKData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), unk1, unk2) + ) => pos.coord mustEqual Vector3(4675.039f, 5506.953f, 72.703125f) pos.orient mustEqual Vector3.z(230.625f) @@ -76,8 +79,15 @@ class REKDataTest extends Specification { } "encode (held)" in { - val obj = REKData(CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, Some(false), None, PlanetSideGUID(0))) - val msg = ObjectCreateMessage(ObjectClass.remote_electronics_kit, PlanetSideGUID(3893), ObjectCreateMessageParent(PlanetSideGUID(4174), 0), obj) + val obj = REKData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateMessage( + ObjectClass.remote_electronics_kit, + PlanetSideGUID(3893), + ObjectCreateMessageParent(PlanetSideGUID(4174), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_rek_held } @@ -85,7 +95,11 @@ class REKDataTest extends Specification { "encode (dropped)" in { val obj = DroppedItemData( PlacementData(4675.039f, 5506.953f, 72.703125f, 0f, 0f, 230.625f), - REKData(CommonFieldData(PlanetSideEmpire.VS, false, false, false, None, false, Some(false), None, PlanetSideGUID(0)), 3, 0) + REKData( + CommonFieldData(PlanetSideEmpire.VS, false, false, false, None, false, Some(false), None, PlanetSideGUID(0)), + 3, + 0 + ) ) val msg = ObjectCreateMessage(ObjectClass.remote_electronics_kit, PlanetSideGUID(4355), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/RemoteProjectileDataTest.scala b/common/src/test/scala/game/objectcreate/RemoteProjectileDataTest.scala index 88112f05..b88d3c2a 100644 --- a/common/src/test/scala/game/objectcreate/RemoteProjectileDataTest.scala +++ b/common/src/test/scala/game/objectcreate/RemoteProjectileDataTest.scala @@ -9,7 +9,7 @@ import org.specs2.mutable._ import scodec.bits._ class RemoteProjectileDataTest extends Specification { - val string_striker_projectile = hex"17 C5000000 A4B 009D 4C129 0CB0A 9814 00 F5 E3 040000666686400" + val string_striker_projectile = hex"17 C5000000 A4B 009D 4C129 0CB0A 9814 00 F5 E3 040000666686400" val string_hunter_seeker_missile_projectile = hex"17 c5000000 ca9 ab9e af127 ec465 3723 00 15 c4 2400009a99c9400" "RemoteProjectileData" should { @@ -87,7 +87,11 @@ class RemoteProjectileDataTest extends Specification { PlacementData(4644.5938f, 5472.0938f, 82.375f, 0f, 30.9375f, 171.5625f), CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)) ), - 26214, 134, FlightPhysics.State4, 0, 0 + 26214, + 134, + FlightPhysics.State4, + 0, + 0 ) val msg = ObjectCreateMessage(ObjectClass.striker_missile_targeting_projectile, PlanetSideGUID(40192), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector @@ -105,7 +109,11 @@ class RemoteProjectileDataTest extends Specification { PlacementData(3621.3672f, 2701.8438f, 140.85938f, 0, 300.9375f, 258.75f), CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)) ), - 39577, 201, FlightPhysics.State4, 0, 0 + 39577, + 201, + FlightPhysics.State4, + 0, + 0 ) val msg = ObjectCreateMessage(ObjectClass.hunter_seeker_missile_projectile, PlanetSideGUID(40619), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/SmallTurretDataTest.scala b/common/src/test/scala/game/objectcreate/SmallTurretDataTest.scala index d885404a..1c179691 100644 --- a/common/src/test/scala/game/objectcreate/SmallTurretDataTest.scala +++ b/common/src/test/scala/game/objectcreate/SmallTurretDataTest.scala @@ -10,7 +10,8 @@ import scodec.bits._ class SmallTurretDataTest extends Specification { val string_spitfire_short = hex"17 BB000000 9D37010 E4F08 6AFCA 0312 00 7F 42 2C1F0F0000F00" - val string_spitfire = hex"17 4F010000 9D3A910 D1D78 AE3FC 9111 00 00 69 4488107F80F2021DBF80B80C80000008086EDB83A03200000" + val string_spitfire = + hex"17 4F010000 9D3A910 D1D78 AE3FC 9111 00 00 69 4488107F80F2021DBF80B80C80000008086EDB83A03200000" "SmallTurretData" should { "decode (spitfire, short)" in { @@ -73,7 +74,12 @@ class SmallTurretDataTest extends Specification { inv.head.parentSlot mustEqual 0 inv.head.obj.isInstanceOf[WeaponData] mustEqual true inv.head.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -134,18 +140,48 @@ class SmallTurretDataTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(true), None, PlanetSideGUID(8208)) ), 255, - InventoryData(List( - InternalSlot(ObjectClass.spitfire_weapon, PlanetSideGUID(3064), 0, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + InventoryData( + List( + InternalSlot( + ObjectClass.spitfire_weapon, + PlanetSideGUID(3064), 0, - List(InternalSlot(ObjectClass.spitfire_ammo, PlanetSideGUID(3694), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)) - )) + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + ObjectClass.spitfire_ammo, + PlanetSideGUID(3694), + 0, + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) + ) ) + //SmallTurretData.spitfire(PlanetSideGUID(3064), 0x6, 0x8, PlanetSideGUID(3694), 8) ) - //SmallTurretData.spitfire(PlanetSideGUID(3064), 0x6, 0x8, PlanetSideGUID(3694), 8) - )) + ) ) val msg = ObjectCreateMessage(ObjectClass.spitfire_turret, PlanetSideGUID(4265), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreate/TRAPDataTest.scala b/common/src/test/scala/game/objectcreate/TRAPDataTest.scala index 57222dd1..cba08bd6 100644 --- a/common/src/test/scala/game/objectcreate/TRAPDataTest.scala +++ b/common/src/test/scala/game/objectcreate/TRAPDataTest.scala @@ -49,8 +49,8 @@ class TRAPDataTest extends Specification { ), 255 ) - val msg = ObjectCreateMessage(ObjectClass.tank_traps, PlanetSideGUID(2659), obj) - val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + val msg = ObjectCreateMessage(ObjectClass.tank_traps, PlanetSideGUID(2659), obj) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector val pkt_bitv = pkt.toBitVector val ori_bitv = string_trap.toBitVector pkt_bitv.take(173) mustEqual ori_bitv.take(173) diff --git a/common/src/test/scala/game/objectcreate/TelepadDeployableDataTest.scala b/common/src/test/scala/game/objectcreate/TelepadDeployableDataTest.scala index 4fcdf290..ac58d661 100644 --- a/common/src/test/scala/game/objectcreate/TelepadDeployableDataTest.scala +++ b/common/src/test/scala/game/objectcreate/TelepadDeployableDataTest.scala @@ -27,7 +27,11 @@ class TelepadDeployableDataTest extends Specification { pos.vel.isDefined mustEqual false telepad match { - case TelepadDeployableData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), u1, u2) => + case TelepadDeployableData( + CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), + u1, + u2 + ) => faction mustEqual PlanetSideEmpire.TR bops mustEqual false alternate mustEqual false @@ -69,7 +73,8 @@ class TelepadDeployableDataTest extends Specification { Some(385), PlanetSideGUID(430) ), - 87, 12 + 87, + 12 ) ) val msg = ObjectCreateMessage(ObjectClass.router_telepad_deployable, PlanetSideGUID(353), obj) diff --git a/common/src/test/scala/game/objectcreate/WeaponDataTest.scala b/common/src/test/scala/game/objectcreate/WeaponDataTest.scala index 61894762..7c7197ec 100644 --- a/common/src/test/scala/game/objectcreate/WeaponDataTest.scala +++ b/common/src/test/scala/game/objectcreate/WeaponDataTest.scala @@ -9,10 +9,11 @@ import org.specs2.mutable._ import scodec.bits._ class WeaponDataTest extends Specification { - val string_lasher_held = hex"17 BB000000 1688569D90B83 880000008082077036032000000" - val string_punisher_held = hex"17 F6000000 0A06612331083 88000000810381383E03200003793287C0E400000" + val string_lasher_held = hex"17 BB000000 1688569D90B83 880000008082077036032000000" + val string_punisher_held = hex"17 F6000000 0A06612331083 88000000810381383E03200003793287C0E400000" val string_lasher_dropped = hex"17 F4000000 D69020C 99299 85D0A 5F10 00 00 20 400000004041038819018000000" - val string_punisher_dropped = hex"17 2F010000 E12A20B 915A9 28C9A 1412 00 00 33 200000004081C1901B01800001BCB5C2E07000000" + val string_punisher_dropped = + hex"17 2F010000 E12A20B 915A9 28C9A 1412 00 00 33 200000004081C1901B01800001BCB5C2E07000000" "WeaponData" should { "decode (lasher, held)" in { @@ -25,7 +26,12 @@ class WeaponDataTest extends Specification { parent.get.guid mustEqual PlanetSideGUID(4141) parent.get.slot mustEqual 3 data match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.VS wbops mustEqual false walternate mustEqual false @@ -73,7 +79,12 @@ class WeaponDataTest extends Specification { parent.get.guid mustEqual PlanetSideGUID(3092) parent.get.slot mustEqual 3 data match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, ammo, _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + ammo, + _ + ) => wfaction mustEqual PlanetSideEmpire.VS wbops mustEqual false walternate mustEqual false @@ -146,7 +157,12 @@ class WeaponDataTest extends Specification { drop.pos.orient.y mustEqual 0f drop.pos.orient.z mustEqual 0f drop.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.VS wbops mustEqual false walternate mustEqual false @@ -200,7 +216,12 @@ class WeaponDataTest extends Specification { drop.pos.orient.y mustEqual 0f drop.pos.orient.z mustEqual 306.5625f drop.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, ammo, _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + ammo, + _ + ) => wfaction mustEqual PlanetSideEmpire.NC wbops mustEqual false walternate mustEqual false @@ -261,9 +282,21 @@ class WeaponDataTest extends Specification { val obj = WeaponData( CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, - List(InternalSlot(ObjectClass.energy_cell, PlanetSideGUID(3548), 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false))) + List( + InternalSlot( + ObjectClass.energy_cell, + PlanetSideGUID(3548), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) + ) + val msg = ObjectCreateMessage( + ObjectClass.lasher, + PlanetSideGUID(3033), + ObjectCreateMessageParent(PlanetSideGUID(4141), 3), + obj ) - val msg = ObjectCreateMessage(ObjectClass.lasher, PlanetSideGUID(3033), ObjectCreateMessageParent(PlanetSideGUID(4141), 3), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_lasher_held } @@ -274,11 +307,26 @@ class WeaponDataTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - AmmoBoxData(ObjectClass.bullet_9mm, PlanetSideGUID(3918), 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)), - AmmoBoxData(ObjectClass.rocket, PlanetSideGUID(3941), 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) + AmmoBoxData( + ObjectClass.bullet_9mm, + PlanetSideGUID(3918), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ), + AmmoBoxData( + ObjectClass.rocket, + PlanetSideGUID(3941), + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) ) ) - val msg = ObjectCreateMessage(ObjectClass.punisher, PlanetSideGUID(4147), ObjectCreateMessageParent(PlanetSideGUID(3092), 3), obj) + val msg = ObjectCreateMessage( + ObjectClass.punisher, + PlanetSideGUID(4147), + ObjectCreateMessageParent(PlanetSideGUID(3092), 3), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_punisher_held } diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedAmmoBoxDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedAmmoBoxDataTest.scala index 93eaf283..b16e88ed 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedAmmoBoxDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedAmmoBoxDataTest.scala @@ -29,7 +29,12 @@ class DetailedAmmoBoxDataTest extends Specification { "encode (9mm)" in { val obj = DetailedAmmoBoxData(8, 50) - val msg = ObjectCreateDetailedMessage(ObjectClass.bullet_9mm, PlanetSideGUID(1280), ObjectCreateMessageParent(PlanetSideGUID(75), 33), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.bullet_9mm, + PlanetSideGUID(1280), + ObjectCreateMessageParent(PlanetSideGUID(75), 33), + obj + ) val out = PacketCoding.EncodePacket(msg) val pkt = out.require.toByteVector diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala index 81b17668..c21844d3 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedCharacterDataTest.scala @@ -9,7 +9,8 @@ import net.psforever.types._ import scodec.bits._ class DetailedCharacterDataTest extends Specification { - val string = hex"18 570C0000 BC8 4B00 6C2D7 65535 CA16 0 00 01 34 40 00 0970 49006C006C006C004900490049006C006C006C0049006C0049006C006C0049006C006C006C0049006C006C004900 84 52 70 76 1E 80 80 00 00 00 00 00 3FFFC 0 00 00 00 20 00 00 0F F6 A7 03 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 64 00 00 01 00 7E C8 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 C0 00 42 C5 46 86 C7 00 00 00 80 00 00 12 40 78 70 65 5F 73 61 6E 63 74 75 61 72 79 5F 68 65 6C 70 90 78 70 65 5F 74 68 5F 66 69 72 65 6D 6F 64 65 73 8B 75 73 65 64 5F 62 65 61 6D 65 72 85 6D 61 70 31 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0A 23 02 60 04 04 40 00 00 10 00 06 02 08 14 D0 08 0C 80 00 02 00 02 6B 4E 00 82 88 00 00 02 00 00 C0 41 C0 9E 01 01 90 00 00 64 00 44 2A 00 10 91 00 00 00 40 00 18 08 38 94 40 20 32 00 00 00 80 19 05 48 02 17 20 00 00 08 00 70 29 80 43 64 00 00 32 00 0E 05 40 08 9C 80 00 06 40 01 C0 AA 01 19 90 00 00 C8 00 3A 15 80 28 72 00 00 19 00 04 0A B8 05 26 40 00 03 20 06 C2 58 00 A7 88 00 00 02 00 00 80 00 00" + val string = + hex"18 570C0000 BC8 4B00 6C2D7 65535 CA16 0 00 01 34 40 00 0970 49006C006C006C004900490049006C006C006C0049006C0049006C006C0049006C006C006C0049006C006C004900 84 52 70 76 1E 80 80 00 00 00 00 00 3FFFC 0 00 00 00 20 00 00 0F F6 A7 03 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 64 00 00 01 00 7E C8 00 C8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 C0 00 42 C5 46 86 C7 00 00 00 80 00 00 12 40 78 70 65 5F 73 61 6E 63 74 75 61 72 79 5F 68 65 6C 70 90 78 70 65 5F 74 68 5F 66 69 72 65 6D 6F 64 65 73 8B 75 73 65 64 5F 62 65 61 6D 65 72 85 6D 61 70 31 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0A 23 02 60 04 04 40 00 00 10 00 06 02 08 14 D0 08 0C 80 00 02 00 02 6B 4E 00 82 88 00 00 02 00 00 C0 41 C0 9E 01 01 90 00 00 64 00 44 2A 00 10 91 00 00 00 40 00 18 08 38 94 40 20 32 00 00 00 80 19 05 48 02 17 20 00 00 08 00 70 29 80 43 64 00 00 32 00 0E 05 40 08 9C 80 00 06 40 01 C0 AA 01 19 90 00 00 C8 00 3A 15 80 28 72 00 00 19 00 04 0A B8 05 26 40 00 03 20 06 C2 58 00 A7 88 00 00 02 00 00 80 00 00" val string_seated = hex"181f0c000066d5bc84b00808000012e049006c006c006c004900490049006c006c006c0049006c0049006c006c0049006c006c006c004900" ++ hex"6c006c0049008452700000000000000000000000000000002000000fe6a703fffffffffffffffffffffffffffffffc000000000000000000" ++ @@ -43,9 +44,12 @@ class DetailedCharacterDataTest extends Specification { hex"490d00c6c80000c8000921c019590000190001243c033b20000320002488006964000064000c211000086c80000020018424000115900000" ++ hex"04003084c00023b2000000800610a00004964000001000c2150000a6c8000002001842c00015590000004003085c0002bb2000000800610c" ++ hex"000059640000010000" - val string_br32 = hex"18 2c e0 00 00 bc 84 B0 00 0b ea 00 6c 7d f1 10 00 00 02 40 00 08 60 4b 00 69 00 43 00 6b 00 4a 00 72 00 02 31 3a cc 82 c0 00 00 00 00 00 00 00 00 3e df 42 00 20 00 0e 00 40 43 40 4c 04 00 02 e8 00 00 03 a8 00 00 01 9c 04 00 00 b8 99 84 00 0e 68 28 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 c8 00 00 01 00 7e c8 00 5c 00 00 01 29 c1 cc 80 00 00 00 00 00 00 00 00 00 00 00 00 03 c0 00 40 81 01 c4 45 46 86 c8 88 c9 09 4a 4a 80 50 0c 13 00 00 15 00 80 00 48 00 7870655f6f766572686561645f6d6170 8d7870655f776172705f676174658f7870655f666f726d5f6f75746669748c7870655f626c61636b6f7073927870655f636f6d6d616e645f72616e6b5f35927870655f636f6d6d616e645f72616e6b5f33927870655f73616e6374756172795f68656c70927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135937870655f6f72626974616c5f73687574746c658c7870655f64726f705f706f64917870655f62696e645f666163696c697479917870655f626174746c655f72616e6b5f33917870655f626174746c655f72616e6b5f35917870655f626174746c655f72616e6b5f348e7870655f6a6f696e5f73717561648e7870655f666f726d5f7371756164927870655f696e7374616e745f616374696f6e917870655f626174746c655f72616e6b5f32937870655f776172705f676174655f7573616765917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131917870655f626174746c655f72616e6b5f368e7870655f6d61696c5f616c657274927870655f636f6d6d616e645f72616e6b5f31927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974927870655f626174746c655f72616e6b5f3235927870655f626174746c655f72616e6b5f3234927870655f636f6d6d616e645f72616e6b5f34907870655f666f726d5f706c61746f6f6e8c7870655f62696e645f616d73917870655f626174746c655f72616e6b5f39917870655f626174746c655f72616e6b5f378d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738f7870655f74685f67726f756e645f708c7870655f74685f6169725f708c7870655f74685f686f7665728d7870655f74685f67726f756e648a7870655f74685f626672927870655f74685f61667465726275726e65728a7870655f74685f6169728c7870655f74685f636c6f616b89757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f6e63a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f74728e757365645f6d61676375747465728f757365645f636861696e626c6164658f757365645f666f726365626c61646593766973697465645f77616c6c5f74757272657498766973697465645f616e6369656e745f7465726d696e616c8b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e6790766973697465645f6d616772696465728f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f737769746368626c6164658e766973697465645f6175726f726193766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f74728e766973697465645f6170635f767390766973697465645f6c6f64657374617290766973697465645f7068616e7461736d91766973697465645f7468756e64657265728e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f617068656c696f6e5f666c6967687497766973697465645f617068656c696f6e5f67756e6e657297766973697465645f636f6c6f737375735f666c6967687497766973697465645f636f6c6f737375735f67756e6e657298766973697465645f706572656772696e655f666c6967687498766973697465645f706572656772696e655f67756e6e657289757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7894757365645f7068616c616e785f6176636f6d626f96757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657492757365645f656e657267795f67756e5f6e6397766973697465645f6d656469756d7472616e73706f72749f757365645f617068656c696f6e5f696d6d6f6c6174696f6e5f63616e6e6f6e93757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7296766973697465645f6865616c74685f6372797374616c96766973697465645f7265706169725f6372797374616c97766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c8b757365645f6265616d657290757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d7065729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e6970657293757365645f636f6d6d616e645f75706c696e6b8d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d89757365645f696c63399a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e8b757365645f73637974686598766973697465645f7265737061776e5f7465726d696e616c8c757365645f62616c6c67756e92757365645f656e657267795f67756e5f747295757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6294757365645f616e6e69766572736172795f67756e90757365645f37356d6d5f63616e6e6f6e92757365645f6170635f6e635f776561706f6e92757365645f6170635f74725f776561706f6e92757365645f6170635f76735f776561706f6e90757365645f666c75785f63616e6e6f6e9f757365645f617068656c696f6e5f706c61736d615f726f636b65745f706f6491757365645f617068656c696f6e5f7070618c757365645f666c7578706f6494766973697465645f6266725f7465726d696e616c9e757365645f636f6c6f737375735f636c75737465725f626f6d625f706f64a0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e96766973697465645f656e657267795f6372797374616c9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e98766973697465645f6d6f6e6f6c6974685f616d657269736899766973697465645f6d6f6e6f6c6974685f636572797368656e97766973697465645f6d6f6e6f6c6974685f637973736f7297766973697465645f6d6f6e6f6c6974685f6573616d697299766973697465645f6d6f6e6f6c6974685f666f72736572616c99766973697465645f6d6f6e6f6c6974685f697368756e64617298766973697465645f6d6f6e6f6c6974685f7365617268757397766973697465645f6d6f6e6f6c6974685f736f6c73617292757365645f6e635f6865765f66616c636f6e99757365645f6e635f6865765f7363617474657263616e6e6f6e93757365645f6e635f6865765f73706172726f7791757365645f61726d6f725f736970686f6e9f757365645f706572656772696e655f6475616c5f6d616368696e655f67756e9f757365645f706572656772696e655f6475616c5f726f636b65745f706f647399757365645f706572656772696e655f6d65636868616d6d65729e757365645f706572656772696e655f7061727469636c655f63616e6e6f6e96757365645f706572656772696e655f73706172726f7791757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756ea0757365645f70756c7365645f7061727469636c655f616363656c657261746f7293757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7291757365645f67617573735f63616e6e6f6e89757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616ca7766973697465645f616e6369656e745f67726f756e645f76656869636c655f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d91766973697465645f636861726c6965303191766973697465645f636861726c6965303291766973697465645f636861726c6965303391766973697465645f636861726c6965303491766973697465645f636861726c6965303591766973697465645f636861726c6965303691766973697465645f636861726c6965303791766973697465645f636861726c6965303891766973697465645f636861726c6965303996766973697465645f67696e6765726d616e5f6174617298766973697465645f67696e6765726d616e5f646168616b6196766973697465645f67696e6765726d616e5f6876617296766973697465645f67696e6765726d616e5f697a686199766973697465645f67696e6765726d616e5f6a616d7368696498766973697465645f67696e6765726d616e5f6d697468726198766973697465645f67696e6765726d616e5f726173686e7599766973697465645f67696e6765726d616e5f7372616f73686198766973697465645f67696e6765726d616e5f79617a61746195766973697465645f67696e6765726d616e5f7a616c8e766973697465645f736c656430318e766973697465645f736c656430328e766973697465645f736c656430348e766973697465645f736c656430358e766973697465645f736c656430368e766973697465645f736c656430378e766973697465645f736c6564303897766973697465645f736e6f776d616e5f616d657269736898766973697465645f736e6f776d616e5f636572797368656e96766973697465645f736e6f776d616e5f637973736f7296766973697465645f736e6f776d616e5f6573616d697298766973697465645f736e6f776d616e5f666f72736572616c96766973697465645f736e6f776d616e5f686f7373696e98766973697465645f736e6f776d616e5f697368756e64617297766973697465645f736e6f776d616e5f7365617268757396766973697465645f736e6f776d616e5f736f6c736172857567643036857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703936856d61703135856d61703134856d61703131856d61703038856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300300000091747261696e696e675f73746172745f6e638b747261696e696e675f75698c747261696e696e675f6d61700000000000000000000000000000000000000000800000003d0c04d350840240000010000602429660f80c80000c8004200c1b81480000020000c046f18a47019000019000ca4644304900000040001809e6bb052032000008001a84787211200000080003010714889c06400000100320ff0a42e4000001009e95a7342e03200000080003010408c914064000000001198990c4e4000001000060223b9b2180c800000a00081c20c92c800003600414ec172d900000040001808de1284a0320000320008ef1c336b20000078011d830e6f6400000600569c417e2c80000020000c04102502f019000008c00ce31027d99000000400018099e6146203200004b0015a7d44002f720000008000301040c18dc064000023000b1240800636400000100006020e0e92280c80000c800081650c00cfc800006400ce32a1801a59000000400018099e6fc3e03200004b00058b14680463200000080003010742610c064000043000b16c8880916400000100006020e0d01580c80000c8006714e24012cc80000020000c04cf25c190190000258001032e240307900000c8019c74470061b2000000800030133ced8fc0640000960012d9a8d00f0640000010025b9c1401e4c8000002004b6b23c03d1900000040098f585007b3200000080131a58c00f864000001002536f1c01f4c8000002004a64e2a03f190000004015e1b4580873200000080003010711f8a406400000100110a00c010ee400000100006020e2a51380c8000002002218d21021ec80000020000c041c40249019000000400af18a44043f90000004000180838b44760320000008015e38c80088320000008000301071490cc064000001002bc35890110e400000100006020e2052180c800000200221f90d0222c80000020000c041c5e447019000000400442e62e044790000004000180838af032032000000800886d08c089320000008000301071738740640000010011098898112e400000100006020e2361c80c8000002002212a1b0226c80000020000c041c512170190000004004420a32044f900000040001808389104a0320000008008874c8808a3200000080003010715907c06400000100110c0898114e400000100006020e2771a80c800000200578bd13022ac80000020000c041c424330190000004004423848045790000004000180838bfc32032000000801a86506008b320000008000301071030dc06400000100129f68a0117640000010026353110232c8000002004b69438046d90000004015e2887008eb200000080003010715909406400000100350fb8e011de400000100006020e2881980c8000002005786d0f023cc80000020000c041c4cc3b019000000400af1ba1c047b90000004000180838af872032000000800886344408fb20000008000301071620d406400000100110c10b011fe400000100006020e2870d80c800000200578f30c0240c80000020000c041c5863b019000000400442ee300483900000040001808388605e032000000801a86f03c090b200000080003010712a8fc064000001002bc0d858121e400000100006020e2521c80c800000200578b7230244c80000020000c041c49629019000000400d434026048b90000004000180838afc42032000000801a86d864091b200000080003010711989c064000001003508c8c8123e400000100006020e2a82280c8000002006a14f110248c80000020000c041c4be21019000000400af12640049390000004000180838a54720320000008015e33430092b20000008000301071228cc064000001003546e8d432400000100004f34a631139000004001b0834723120000008000204000c2ed0fa1c800000200a8432234a90000004000180952b248a0320000018004024c569d20000008000250a4d0ebc480000020000c04a24bc43019000000c00e0" - val string_ccrider = hex"18 4a c7 00 00 bc 84 B0 0c 0b 95 59 9a 84 40 b0 00 01 32 00 00 08 70 43 00 43 00 52 00 49 00 44 00 45 00 52 00 82 28 c9 3d 04 40 03 c0 01 40 02 80 00 40 35 18 40 00 25 40 42 00 6c 00 61 00 63 00 6b 00 20 00 41 00 72 00 6d 00 6f 00 72 00 65 00 64 00 20 00 52 00 65 00 61 00 70 00 65 00 72 00 73 00 0f 00 00 03 02 0c 00 00 03 88 00 00 00 d4 00 00 01 9c 04 00 00 09 19 90 02 04 3c 28 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 64 00 00 01 00 7e c8 00 c8 00 00 01 b9 53 4c 00 00 00 00 00 00 00 00 00 00 00 00 00 03 40 00 40 81 c6 86 c8 48 88 c9 09 49 8a 67 86 e0 00 01 25 e0 32 d8 09 6c 00 00 3c 04 00 02 30 7870655f626c61636b6f7073917870655f626174746c655f72616e6b5f39927870655f626174746c655f72616e6b5f3233927870655f636f6d6d616e645f72616e6b5f318f7870655f666f726d5f6f75746669748e7870655f6d61696c5f616c657274927870655f626174746c655f72616e6b5f3232927870655f636f6d6d616e645f72616e6b5f33907870655f666f726d5f706c61746f6f6e927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131927870655f626174746c655f72616e6b5f3231927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974927870655f626174746c655f72616e6b5f3235927870655f626174746c655f72616e6b5f3234917870655f626174746c655f72616e6b5f37917870655f62696e645f666163696c6974798c7870655f62696e645f616d73927870655f636f6d6d616e645f72616e6b5f35927870655f636f6d6d616e645f72616e6b5f32927870655f696e7374616e745f616374696f6e8e7870655f666f726d5f7371756164917870655f626174746c655f72616e6b5f34937870655f776172705f676174655f7573616765917870655f626174746c655f72616e6b5f32917870655f626174746c655f72616e6b5f33927870655f73616e6374756172795f68656c708c7870655f64726f705f706f64937870655f6f72626974616c5f73687574746c65917870655f626174746c655f72616e6b5f368e7870655f6a6f696e5f7371756164917870655f626174746c655f72616e6b5f35927870655f74685f737769746368626c6164658d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738a7870655f74685f62667289757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f6e638e757365645f6d616763757474657293766973697465645f77616c6c5f7475727265748b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e6790766973697465645f6d616772696465728f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f737769746368626c6164658e766973697465645f6175726f726193766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f74728e766973697465645f6170635f767390766973697465645f6c6f64657374617290766973697465645f7068616e7461736d91766973697465645f7468756e64657265728e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f617068656c696f6e5f666c6967687497766973697465645f617068656c696f6e5f67756e6e657297766973697465645f636f6c6f737375735f666c6967687497766973697465645f636f6c6f737375735f67756e6e657298766973697465645f706572656772696e655f666c6967687498766973697465645f706572656772696e655f67756e6e657289757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7894757365645f7068616c616e785f6176636f6d626f96757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657492757365645f656e657267795f67756e5f6e6397766973697465645f6d656469756d7472616e73706f72749f757365645f617068656c696f6e5f696d6d6f6c6174696f6e5f63616e6e6f6e93757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7296766973697465645f6865616c74685f6372797374616c96766973697465645f7265706169725f6372797374616c97766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c8b757365645f6265616d657290757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d7065729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e6970657293757365645f636f6d6d616e645f75706c696e6b8d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d89757365645f696c63399a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e8b757365645f73637974686598766973697465645f7265737061776e5f7465726d696e616c8c757365645f62616c6c67756e95757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6294757365645f616e6e69766572736172795f67756e90757365645f37356d6d5f63616e6e6f6e92757365645f6170635f6e635f776561706f6e92757365645f6170635f74725f776561706f6e92757365645f6170635f76735f776561706f6e90757365645f666c75785f63616e6e6f6e93757365645f617068656c696f6e5f6c617365729f757365645f617068656c696f6e5f706c61736d615f726f636b65745f706f6491757365645f617068656c696f6e5f70706196757365645f617068656c696f6e5f73746172666972658c757365645f666c7578706f6494766973697465645f6266725f7465726d696e616c95757365645f636f6c6f737375735f6275727374657296757365645f636f6c6f737375735f636861696e67756e9e757365645f636f6c6f737375735f636c75737465725f626f6d625f706f64a0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e96766973697465645f64616d6167655f6372797374616c96766973697465645f656e657267795f6372797374616c9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e98766973697465645f6d6f6e6f6c6974685f616d657269736899766973697465645f6d6f6e6f6c6974685f636572797368656e97766973697465645f6d6f6e6f6c6974685f637973736f7297766973697465645f6d6f6e6f6c6974685f6573616d697299766973697465645f6d6f6e6f6c6974685f666f72736572616c97766973697465645f6d6f6e6f6c6974685f686f7373696e99766973697465645f6d6f6e6f6c6974685f697368756e64617298766973697465645f6d6f6e6f6c6974685f7365617268757397766973697465645f6d6f6e6f6c6974685f736f6c73617292757365645f6e635f6865765f66616c636f6e99757365645f6e635f6865765f7363617474657263616e6e6f6e93757365645f6e635f6865765f73706172726f7791757365645f61726d6f725f736970686f6e9f757365645f706572656772696e655f6475616c5f6d616368696e655f67756e9f757365645f706572656772696e655f6475616c5f726f636b65745f706f647399757365645f706572656772696e655f6d65636868616d6d65728f757365645f6e74755f736970686f6e9e757365645f706572656772696e655f7061727469636c655f63616e6e6f6e96757365645f706572656772696e655f73706172726f7791757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756ea0757365645f70756c7365645f7061727469636c655f616363656c657261746f7293757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7291757365645f67617573735f63616e6e6f6e89757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616ca7766973697465645f616e6369656e745f67726f756e645f76656869636c655f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d91766973697465645f636861726c6965303591766973697465645f636861726c6965303691766973697465645f636861726c6965303791766973697465645f636861726c6965303891766973697465645f636861726c696530398e766973697465645f736c656430348e766973697465645f736c656430358e766973697465645f736c656430368e766973697465645f736c656430378e766973697465645f736c65643038857567643036857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703936856d61703135856d61703134856d61703133856d61703132856d61703131856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300800000092747261696e696e675f776561706f6e73303192747261696e696e675f7761727067617465738c747261696e696e675f6d617092747261696e696e675f696e76656e746f727990747261696e696e675f6865616c696e678d747261696e696e675f686172748f747261696e696e675f61726d6f727390747261696e696e675f77656c636f6d650000000000000000000000000000000000000000ab000480000005000000058000000800000008800000090000000f0000000f8000001000000012800000130000001a0000001a8000001c800000228000002e00000031800000320000003580000036000000368000003700000039000000398000003a0000003a8000003b0000003f800000400000004080000041000000418000004e000000518000005580000059000000598000005a0000005a800000610000006180000063000000648000006b8000006c0000006c8000006f0000006f800000700000007080000071000000718000007280000073000000798000007a0000000080800004808000050080000a8080000b0080000d8080000e0080000e8080000f0080001080800011008000140080001c808000270080002a8080002b00800033808000388080003c0080003c8080004000800043808000440080004480800045008000470080004c0080004f808000520080005400800000002f0a26c9313c024000001000060279a272780c80000100026b271682480000020000c041c0464f019000006400d43541d08900000040001808388946a0320000008019041c821700000008046ce915631018000000400018083822c6a030000019001d2338421b00000008000301070438ac060000032003a4630c466000000100006020e06c1e80c000006400748e01c92c00000020000c041c11e4101800000c800e90a02331800000040001808381b06e030000019001989ec436b000000080003010c81d924060000019003310e87f0600000010000602190d31780c000003200662fa22e6c00000020000c04320a82f018000006400e90683bd9800000040001808381205a030000019000205808bcb000001900040e4908058e0000032006629c1d00b4c00000020000c043209c35018000006400cc480320175800000040001808642084a03000000c80198880540303000000080003010c87d86c060000019000b17e9100636000000100006020e01f2080c00000c800081580f010bc000006400414961a022f800000040001808de0004603000003200082818840477000000080003011bc0a11406000006400040a28680b2e000003200569271a017ac00000020000c041037435018000008c00ce2e04003498000000400018099e6c46e03000004b0019c4483406b70000000800030133cc28ec06000009600040ad8e80dfe0000032006710e1201fec00000020000c04cf2a837018000025800ce37432040f8000000400018099e7586a03000004b00058b18480843000000080003010702f11406000006400040f690010ce0000032000e0222786c8000064001c1d82b13900000c800380205233200001900074559050e40000320079afa0fa4c800002000d84b64f4e9000000400010300380" - val string_xrider912 = hex"18cf8c0000bc83e0d97fc6204c5f20800008e00000089078005200690064006500720039003100320082084295c4c000c000c0000000001ed00000248048006f006f006b006500640020004f006e00200049006e00730061006e006900740079000500000302ac0000016c04000114000001a004000220e46c03cb4000000000000000000000000000019001900064000001007ec800c8000001abc44480000000000000000000000000030000408101c686c888c9094a7e8a40000125e012d8196c000344000002487870655f636f6d6d616e645f72616e6b5f32907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3231927870655f626174746c655f72616e6b5f32328f7870655f666f726d5f6f75746669748c7870655f626c61636b6f7073927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135917870655f626174746c655f72616e6b5f358e7870655f6a6f696e5f73717561648e7870655f666f726d5f7371756164927870655f696e7374616e745f616374696f6e917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131917870655f626174746c655f72616e6b5f36927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974917870655f626174746c655f72616e6b5f39917870655f626174746c655f72616e6b5f37927870655f636f6d6d616e645f72616e6b5f31937870655f6f72626974616c5f73687574746c658c7870655f64726f705f706f64927870655f73616e6374756172795f68656c70917870655f62696e645f666163696c697479917870655f626174746c655f72616e6b5f33917870655f626174746c655f72616e6b5f32937870655f776172705f676174655f75736167658c7870655f62696e645f616d73917870655f626174746c655f72616e6b5f348e7870655f74685f6e6f6e73616e638d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738f7870655f74685f67726f756e645f708c7870655f74685f6169725f708c7870655f74685f686f7665728d7870655f74685f67726f756e648a7870655f74685f626672927870655f74685f61667465726275726e65728a7870655f74685f6169728b7870655f74685f616d6d6f907870655f74685f666972656d6f6465738c7870655f74685f636c6f616b8a7870655f74685f6d617889757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f74728f757365645f636861696e626c61646593766973697465645f77616c6c5f7475727265748b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e678f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f747290766973697465645f6c6f64657374617290766973697465645f7068616e7461736d8e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f636f6c6f737375735f666c6967687489757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7896757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657497766973697465645f6d656469756d7472616e73706f727493757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7297766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c90757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d70657292757365645f74726865765f6275727374657295757365645f74726865765f6475616c6379636c657292757365645f74726865765f706f756e6465729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e697065728d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d9a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e98766973697465645f7265737061776e5f7465726d696e616c92757365645f656e657267795f67756e5f747295757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6292757365645f6170635f74725f776561706f6e90757365645f666c75785f63616e6e6f6e94766973697465645f6266725f7465726d696e616ca0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e99766973697465645f6d6f6e6f6c6974685f666f72736572616c91757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756e93757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7289757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703135856d61703134856d61703132856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300000000000000000000000000000000000000000000000008b00048000000800000008800000228000003580000036000000390000003980000043000000558000005900000062000000638000006f000000728000000d808000148080002d8080003400800043808000478080005280800000002146d2890d80080000020000c041c1141d0190000050004d6822704100000040001808382004a03200000c8015e0103610200000080003010716107406400000100320db0a42e000000100889949102a03000000080003013cd5d8b4060000010003294084c4e0000001000060279a2b0e80c0000020006524c0f92c00000020000c04f35fa17018000004000443142b3b800000040001808389304e0300000008019c5b42b6b0000000800030133cf284406000009600338fa8a71e00000010000602679e41580c000012c00652fc16ecc00000020000c04f350a2d018000004000ce2222801698000000400018099e7202e03000004b0019c5ec4402f70000000800030133cc688406000009600338808780636000000100006026796d1580c000012c00671eb0f010ec00000020000c04cf2c623018000025800ce21824022f8000000400018099e4d42603000004b0019499c300483000000080003013cd798a406000001000329078a80b8e0000001000060279af10a80c0000020006522011017ac00000020000c04f34001d018000004000415ec100397800000040001808de1385603000002700194bdc4c0747000000080003013cd6609c06000000f000701108c364000032000e0dc0d89c8000064001c00e2119900000c800380ec52872000019000744a875264000032006c27b12a708000002000081001c" + val string_br32 = + hex"18 2c e0 00 00 bc 84 B0 00 0b ea 00 6c 7d f1 10 00 00 02 40 00 08 60 4b 00 69 00 43 00 6b 00 4a 00 72 00 02 31 3a cc 82 c0 00 00 00 00 00 00 00 00 3e df 42 00 20 00 0e 00 40 43 40 4c 04 00 02 e8 00 00 03 a8 00 00 01 9c 04 00 00 b8 99 84 00 0e 68 28 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 c8 00 00 01 00 7e c8 00 5c 00 00 01 29 c1 cc 80 00 00 00 00 00 00 00 00 00 00 00 00 03 c0 00 40 81 01 c4 45 46 86 c8 88 c9 09 4a 4a 80 50 0c 13 00 00 15 00 80 00 48 00 7870655f6f766572686561645f6d6170 8d7870655f776172705f676174658f7870655f666f726d5f6f75746669748c7870655f626c61636b6f7073927870655f636f6d6d616e645f72616e6b5f35927870655f636f6d6d616e645f72616e6b5f33927870655f73616e6374756172795f68656c70927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135937870655f6f72626974616c5f73687574746c658c7870655f64726f705f706f64917870655f62696e645f666163696c697479917870655f626174746c655f72616e6b5f33917870655f626174746c655f72616e6b5f35917870655f626174746c655f72616e6b5f348e7870655f6a6f696e5f73717561648e7870655f666f726d5f7371756164927870655f696e7374616e745f616374696f6e917870655f626174746c655f72616e6b5f32937870655f776172705f676174655f7573616765917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131917870655f626174746c655f72616e6b5f368e7870655f6d61696c5f616c657274927870655f636f6d6d616e645f72616e6b5f31927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974927870655f626174746c655f72616e6b5f3235927870655f626174746c655f72616e6b5f3234927870655f636f6d6d616e645f72616e6b5f34907870655f666f726d5f706c61746f6f6e8c7870655f62696e645f616d73917870655f626174746c655f72616e6b5f39917870655f626174746c655f72616e6b5f378d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738f7870655f74685f67726f756e645f708c7870655f74685f6169725f708c7870655f74685f686f7665728d7870655f74685f67726f756e648a7870655f74685f626672927870655f74685f61667465726275726e65728a7870655f74685f6169728c7870655f74685f636c6f616b89757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f6e63a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f74728e757365645f6d61676375747465728f757365645f636861696e626c6164658f757365645f666f726365626c61646593766973697465645f77616c6c5f74757272657498766973697465645f616e6369656e745f7465726d696e616c8b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e6790766973697465645f6d616772696465728f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f737769746368626c6164658e766973697465645f6175726f726193766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f74728e766973697465645f6170635f767390766973697465645f6c6f64657374617290766973697465645f7068616e7461736d91766973697465645f7468756e64657265728e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f617068656c696f6e5f666c6967687497766973697465645f617068656c696f6e5f67756e6e657297766973697465645f636f6c6f737375735f666c6967687497766973697465645f636f6c6f737375735f67756e6e657298766973697465645f706572656772696e655f666c6967687498766973697465645f706572656772696e655f67756e6e657289757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7894757365645f7068616c616e785f6176636f6d626f96757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657492757365645f656e657267795f67756e5f6e6397766973697465645f6d656469756d7472616e73706f72749f757365645f617068656c696f6e5f696d6d6f6c6174696f6e5f63616e6e6f6e93757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7296766973697465645f6865616c74685f6372797374616c96766973697465645f7265706169725f6372797374616c97766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c8b757365645f6265616d657290757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d7065729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e6970657293757365645f636f6d6d616e645f75706c696e6b8d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d89757365645f696c63399a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e8b757365645f73637974686598766973697465645f7265737061776e5f7465726d696e616c8c757365645f62616c6c67756e92757365645f656e657267795f67756e5f747295757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6294757365645f616e6e69766572736172795f67756e90757365645f37356d6d5f63616e6e6f6e92757365645f6170635f6e635f776561706f6e92757365645f6170635f74725f776561706f6e92757365645f6170635f76735f776561706f6e90757365645f666c75785f63616e6e6f6e9f757365645f617068656c696f6e5f706c61736d615f726f636b65745f706f6491757365645f617068656c696f6e5f7070618c757365645f666c7578706f6494766973697465645f6266725f7465726d696e616c9e757365645f636f6c6f737375735f636c75737465725f626f6d625f706f64a0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e96766973697465645f656e657267795f6372797374616c9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e98766973697465645f6d6f6e6f6c6974685f616d657269736899766973697465645f6d6f6e6f6c6974685f636572797368656e97766973697465645f6d6f6e6f6c6974685f637973736f7297766973697465645f6d6f6e6f6c6974685f6573616d697299766973697465645f6d6f6e6f6c6974685f666f72736572616c99766973697465645f6d6f6e6f6c6974685f697368756e64617298766973697465645f6d6f6e6f6c6974685f7365617268757397766973697465645f6d6f6e6f6c6974685f736f6c73617292757365645f6e635f6865765f66616c636f6e99757365645f6e635f6865765f7363617474657263616e6e6f6e93757365645f6e635f6865765f73706172726f7791757365645f61726d6f725f736970686f6e9f757365645f706572656772696e655f6475616c5f6d616368696e655f67756e9f757365645f706572656772696e655f6475616c5f726f636b65745f706f647399757365645f706572656772696e655f6d65636868616d6d65729e757365645f706572656772696e655f7061727469636c655f63616e6e6f6e96757365645f706572656772696e655f73706172726f7791757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756ea0757365645f70756c7365645f7061727469636c655f616363656c657261746f7293757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7291757365645f67617573735f63616e6e6f6e89757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616ca7766973697465645f616e6369656e745f67726f756e645f76656869636c655f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d91766973697465645f636861726c6965303191766973697465645f636861726c6965303291766973697465645f636861726c6965303391766973697465645f636861726c6965303491766973697465645f636861726c6965303591766973697465645f636861726c6965303691766973697465645f636861726c6965303791766973697465645f636861726c6965303891766973697465645f636861726c6965303996766973697465645f67696e6765726d616e5f6174617298766973697465645f67696e6765726d616e5f646168616b6196766973697465645f67696e6765726d616e5f6876617296766973697465645f67696e6765726d616e5f697a686199766973697465645f67696e6765726d616e5f6a616d7368696498766973697465645f67696e6765726d616e5f6d697468726198766973697465645f67696e6765726d616e5f726173686e7599766973697465645f67696e6765726d616e5f7372616f73686198766973697465645f67696e6765726d616e5f79617a61746195766973697465645f67696e6765726d616e5f7a616c8e766973697465645f736c656430318e766973697465645f736c656430328e766973697465645f736c656430348e766973697465645f736c656430358e766973697465645f736c656430368e766973697465645f736c656430378e766973697465645f736c6564303897766973697465645f736e6f776d616e5f616d657269736898766973697465645f736e6f776d616e5f636572797368656e96766973697465645f736e6f776d616e5f637973736f7296766973697465645f736e6f776d616e5f6573616d697298766973697465645f736e6f776d616e5f666f72736572616c96766973697465645f736e6f776d616e5f686f7373696e98766973697465645f736e6f776d616e5f697368756e64617297766973697465645f736e6f776d616e5f7365617268757396766973697465645f736e6f776d616e5f736f6c736172857567643036857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703936856d61703135856d61703134856d61703131856d61703038856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300300000091747261696e696e675f73746172745f6e638b747261696e696e675f75698c747261696e696e675f6d61700000000000000000000000000000000000000000800000003d0c04d350840240000010000602429660f80c80000c8004200c1b81480000020000c046f18a47019000019000ca4644304900000040001809e6bb052032000008001a84787211200000080003010714889c06400000100320ff0a42e4000001009e95a7342e03200000080003010408c914064000000001198990c4e4000001000060223b9b2180c800000a00081c20c92c800003600414ec172d900000040001808de1284a0320000320008ef1c336b20000078011d830e6f6400000600569c417e2c80000020000c04102502f019000008c00ce31027d99000000400018099e6146203200004b0015a7d44002f720000008000301040c18dc064000023000b1240800636400000100006020e0e92280c80000c800081650c00cfc800006400ce32a1801a59000000400018099e6fc3e03200004b00058b14680463200000080003010742610c064000043000b16c8880916400000100006020e0d01580c80000c8006714e24012cc80000020000c04cf25c190190000258001032e240307900000c8019c74470061b2000000800030133ced8fc0640000960012d9a8d00f0640000010025b9c1401e4c8000002004b6b23c03d1900000040098f585007b3200000080131a58c00f864000001002536f1c01f4c8000002004a64e2a03f190000004015e1b4580873200000080003010711f8a406400000100110a00c010ee400000100006020e2a51380c8000002002218d21021ec80000020000c041c40249019000000400af18a44043f90000004000180838b44760320000008015e38c80088320000008000301071490cc064000001002bc35890110e400000100006020e2052180c800000200221f90d0222c80000020000c041c5e447019000000400442e62e044790000004000180838af032032000000800886d08c089320000008000301071738740640000010011098898112e400000100006020e2361c80c8000002002212a1b0226c80000020000c041c512170190000004004420a32044f900000040001808389104a0320000008008874c8808a3200000080003010715907c06400000100110c0898114e400000100006020e2771a80c800000200578bd13022ac80000020000c041c424330190000004004423848045790000004000180838bfc32032000000801a86506008b320000008000301071030dc06400000100129f68a0117640000010026353110232c8000002004b69438046d90000004015e2887008eb200000080003010715909406400000100350fb8e011de400000100006020e2881980c8000002005786d0f023cc80000020000c041c4cc3b019000000400af1ba1c047b90000004000180838af872032000000800886344408fb20000008000301071620d406400000100110c10b011fe400000100006020e2870d80c800000200578f30c0240c80000020000c041c5863b019000000400442ee300483900000040001808388605e032000000801a86f03c090b200000080003010712a8fc064000001002bc0d858121e400000100006020e2521c80c800000200578b7230244c80000020000c041c49629019000000400d434026048b90000004000180838afc42032000000801a86d864091b200000080003010711989c064000001003508c8c8123e400000100006020e2a82280c8000002006a14f110248c80000020000c041c4be21019000000400af12640049390000004000180838a54720320000008015e33430092b20000008000301071228cc064000001003546e8d432400000100004f34a631139000004001b0834723120000008000204000c2ed0fa1c800000200a8432234a90000004000180952b248a0320000018004024c569d20000008000250a4d0ebc480000020000c04a24bc43019000000c00e0" + val string_ccrider = + hex"18 4a c7 00 00 bc 84 B0 0c 0b 95 59 9a 84 40 b0 00 01 32 00 00 08 70 43 00 43 00 52 00 49 00 44 00 45 00 52 00 82 28 c9 3d 04 40 03 c0 01 40 02 80 00 40 35 18 40 00 25 40 42 00 6c 00 61 00 63 00 6b 00 20 00 41 00 72 00 6d 00 6f 00 72 00 65 00 64 00 20 00 52 00 65 00 61 00 70 00 65 00 72 00 73 00 0f 00 00 03 02 0c 00 00 03 88 00 00 00 d4 00 00 01 9c 04 00 00 09 19 90 02 04 3c 28 00 00 00 00 00 00 00 00 00 00 00 00 01 90 01 90 00 64 00 00 01 00 7e c8 00 c8 00 00 01 b9 53 4c 00 00 00 00 00 00 00 00 00 00 00 00 00 03 40 00 40 81 c6 86 c8 48 88 c9 09 49 8a 67 86 e0 00 01 25 e0 32 d8 09 6c 00 00 3c 04 00 02 30 7870655f626c61636b6f7073917870655f626174746c655f72616e6b5f39927870655f626174746c655f72616e6b5f3233927870655f636f6d6d616e645f72616e6b5f318f7870655f666f726d5f6f75746669748e7870655f6d61696c5f616c657274927870655f626174746c655f72616e6b5f3232927870655f636f6d6d616e645f72616e6b5f33907870655f666f726d5f706c61746f6f6e927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131927870655f626174746c655f72616e6b5f3231927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974927870655f626174746c655f72616e6b5f3235927870655f626174746c655f72616e6b5f3234917870655f626174746c655f72616e6b5f37917870655f62696e645f666163696c6974798c7870655f62696e645f616d73927870655f636f6d6d616e645f72616e6b5f35927870655f636f6d6d616e645f72616e6b5f32927870655f696e7374616e745f616374696f6e8e7870655f666f726d5f7371756164917870655f626174746c655f72616e6b5f34937870655f776172705f676174655f7573616765917870655f626174746c655f72616e6b5f32917870655f626174746c655f72616e6b5f33927870655f73616e6374756172795f68656c708c7870655f64726f705f706f64937870655f6f72626974616c5f73687574746c65917870655f626174746c655f72616e6b5f368e7870655f6a6f696e5f7371756164917870655f626174746c655f72616e6b5f35927870655f74685f737769746368626c6164658d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738a7870655f74685f62667289757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f6e638e757365645f6d616763757474657293766973697465645f77616c6c5f7475727265748b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e6790766973697465645f6d616772696465728f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f737769746368626c6164658e766973697465645f6175726f726193766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f74728e766973697465645f6170635f767390766973697465645f6c6f64657374617290766973697465645f7068616e7461736d91766973697465645f7468756e64657265728e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f617068656c696f6e5f666c6967687497766973697465645f617068656c696f6e5f67756e6e657297766973697465645f636f6c6f737375735f666c6967687497766973697465645f636f6c6f737375735f67756e6e657298766973697465645f706572656772696e655f666c6967687498766973697465645f706572656772696e655f67756e6e657289757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7894757365645f7068616c616e785f6176636f6d626f96757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657492757365645f656e657267795f67756e5f6e6397766973697465645f6d656469756d7472616e73706f72749f757365645f617068656c696f6e5f696d6d6f6c6174696f6e5f63616e6e6f6e93757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7296766973697465645f6865616c74685f6372797374616c96766973697465645f7265706169725f6372797374616c97766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c8b757365645f6265616d657290757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d7065729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e6970657293757365645f636f6d6d616e645f75706c696e6b8d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d89757365645f696c63399a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e8b757365645f73637974686598766973697465645f7265737061776e5f7465726d696e616c8c757365645f62616c6c67756e95757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6294757365645f616e6e69766572736172795f67756e90757365645f37356d6d5f63616e6e6f6e92757365645f6170635f6e635f776561706f6e92757365645f6170635f74725f776561706f6e92757365645f6170635f76735f776561706f6e90757365645f666c75785f63616e6e6f6e93757365645f617068656c696f6e5f6c617365729f757365645f617068656c696f6e5f706c61736d615f726f636b65745f706f6491757365645f617068656c696f6e5f70706196757365645f617068656c696f6e5f73746172666972658c757365645f666c7578706f6494766973697465645f6266725f7465726d696e616c95757365645f636f6c6f737375735f6275727374657296757365645f636f6c6f737375735f636861696e67756e9e757365645f636f6c6f737375735f636c75737465725f626f6d625f706f64a0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e96766973697465645f64616d6167655f6372797374616c96766973697465645f656e657267795f6372797374616c9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e98766973697465645f6d6f6e6f6c6974685f616d657269736899766973697465645f6d6f6e6f6c6974685f636572797368656e97766973697465645f6d6f6e6f6c6974685f637973736f7297766973697465645f6d6f6e6f6c6974685f6573616d697299766973697465645f6d6f6e6f6c6974685f666f72736572616c97766973697465645f6d6f6e6f6c6974685f686f7373696e99766973697465645f6d6f6e6f6c6974685f697368756e64617298766973697465645f6d6f6e6f6c6974685f7365617268757397766973697465645f6d6f6e6f6c6974685f736f6c73617292757365645f6e635f6865765f66616c636f6e99757365645f6e635f6865765f7363617474657263616e6e6f6e93757365645f6e635f6865765f73706172726f7791757365645f61726d6f725f736970686f6e9f757365645f706572656772696e655f6475616c5f6d616368696e655f67756e9f757365645f706572656772696e655f6475616c5f726f636b65745f706f647399757365645f706572656772696e655f6d65636868616d6d65728f757365645f6e74755f736970686f6e9e757365645f706572656772696e655f7061727469636c655f63616e6e6f6e96757365645f706572656772696e655f73706172726f7791757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756ea0757365645f70756c7365645f7061727469636c655f616363656c657261746f7293757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7291757365645f67617573735f63616e6e6f6e89757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616ca7766973697465645f616e6369656e745f67726f756e645f76656869636c655f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d91766973697465645f636861726c6965303591766973697465645f636861726c6965303691766973697465645f636861726c6965303791766973697465645f636861726c6965303891766973697465645f636861726c696530398e766973697465645f736c656430348e766973697465645f736c656430358e766973697465645f736c656430368e766973697465645f736c656430378e766973697465645f736c65643038857567643036857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703936856d61703135856d61703134856d61703133856d61703132856d61703131856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300800000092747261696e696e675f776561706f6e73303192747261696e696e675f7761727067617465738c747261696e696e675f6d617092747261696e696e675f696e76656e746f727990747261696e696e675f6865616c696e678d747261696e696e675f686172748f747261696e696e675f61726d6f727390747261696e696e675f77656c636f6d650000000000000000000000000000000000000000ab000480000005000000058000000800000008800000090000000f0000000f8000001000000012800000130000001a0000001a8000001c800000228000002e00000031800000320000003580000036000000368000003700000039000000398000003a0000003a8000003b0000003f800000400000004080000041000000418000004e000000518000005580000059000000598000005a0000005a800000610000006180000063000000648000006b8000006c0000006c8000006f0000006f800000700000007080000071000000718000007280000073000000798000007a0000000080800004808000050080000a8080000b0080000d8080000e0080000e8080000f0080001080800011008000140080001c808000270080002a8080002b00800033808000388080003c0080003c8080004000800043808000440080004480800045008000470080004c0080004f808000520080005400800000002f0a26c9313c024000001000060279a272780c80000100026b271682480000020000c041c0464f019000006400d43541d08900000040001808388946a0320000008019041c821700000008046ce915631018000000400018083822c6a030000019001d2338421b00000008000301070438ac060000032003a4630c466000000100006020e06c1e80c000006400748e01c92c00000020000c041c11e4101800000c800e90a02331800000040001808381b06e030000019001989ec436b000000080003010c81d924060000019003310e87f0600000010000602190d31780c000003200662fa22e6c00000020000c04320a82f018000006400e90683bd9800000040001808381205a030000019000205808bcb000001900040e4908058e0000032006629c1d00b4c00000020000c043209c35018000006400cc480320175800000040001808642084a03000000c80198880540303000000080003010c87d86c060000019000b17e9100636000000100006020e01f2080c00000c800081580f010bc000006400414961a022f800000040001808de0004603000003200082818840477000000080003011bc0a11406000006400040a28680b2e000003200569271a017ac00000020000c041037435018000008c00ce2e04003498000000400018099e6c46e03000004b0019c4483406b70000000800030133cc28ec06000009600040ad8e80dfe0000032006710e1201fec00000020000c04cf2a837018000025800ce37432040f8000000400018099e7586a03000004b00058b18480843000000080003010702f11406000006400040f690010ce0000032000e0222786c8000064001c1d82b13900000c800380205233200001900074559050e40000320079afa0fa4c800002000d84b64f4e9000000400010300380" + val string_xrider912 = + hex"18cf8c0000bc83e0d97fc6204c5f20800008e00000089078005200690064006500720039003100320082084295c4c000c000c0000000001ed00000248048006f006f006b006500640020004f006e00200049006e00730061006e006900740079000500000302ac0000016c04000114000001a004000220e46c03cb4000000000000000000000000000019001900064000001007ec800c8000001abc44480000000000000000000000000030000408101c686c888c9094a7e8a40000125e012d8196c000344000002487870655f636f6d6d616e645f72616e6b5f32907870655f6a6f696e5f706c61746f6f6e927870655f626174746c655f72616e6b5f3230927870655f626174746c655f72616e6b5f3231927870655f626174746c655f72616e6b5f32328f7870655f666f726d5f6f75746669748c7870655f626c61636b6f7073927870655f626174746c655f72616e6b5f3133927870655f626174746c655f72616e6b5f3132927870655f626174746c655f72616e6b5f3130927870655f626174746c655f72616e6b5f3134927870655f626174746c655f72616e6b5f3135917870655f626174746c655f72616e6b5f358e7870655f6a6f696e5f73717561648e7870655f666f726d5f7371756164927870655f696e7374616e745f616374696f6e917870655f626174746c655f72616e6b5f38927870655f626174746c655f72616e6b5f3131917870655f626174746c655f72616e6b5f36927870655f626174746c655f72616e6b5f3138927870655f626174746c655f72616e6b5f3139927870655f626174746c655f72616e6b5f3137927870655f626174746c655f72616e6b5f31368f7870655f6a6f696e5f6f7574666974917870655f626174746c655f72616e6b5f39917870655f626174746c655f72616e6b5f37927870655f636f6d6d616e645f72616e6b5f31937870655f6f72626974616c5f73687574746c658c7870655f64726f705f706f64927870655f73616e6374756172795f68656c70917870655f62696e645f666163696c697479917870655f626174746c655f72616e6b5f33917870655f626174746c655f72616e6b5f32937870655f776172705f676174655f75736167658c7870655f62696e645f616d73917870655f626174746c655f72616e6b5f348e7870655f74685f6e6f6e73616e638d7870655f74685f726f757465728c7870655f74685f666c61696c8a7870655f74685f616e748a7870655f74685f616d738f7870655f74685f67726f756e645f708c7870655f74685f6169725f708c7870655f74685f686f7665728d7870655f74685f67726f756e648a7870655f74685f626672927870655f74685f61667465726275726e65728a7870655f74685f6169728b7870655f74685f616d6d6f907870655f74685f666972656d6f6465738c7870655f74685f636c6f616b8a7870655f74685f6d617889757365645f6f69637791757365645f616476616e6365645f61636597766973697465645f73706974666972655f74757272657498766973697465645f73706974666972655f636c6f616b656493766973697465645f73706974666972655f616192766973697465645f74616e6b5f7472617073a1766973697465645f706f727461626c655f6d616e6e65645f7475727265745f74728f757365645f636861696e626c61646593766973697465645f77616c6c5f7475727265748b766973697465645f616d738b766973697465645f616e7490766973697465645f64726f707368697091766973697465645f6c6962657261746f7294766973697465645f6c6967687467756e7368697091766973697465645f6c696768746e696e678f766973697465645f70726f776c657293766973697465645f71756164737465616c746890766973697465645f736b7967756172649a766973697465645f74687265656d616e686561767962756767799d766973697465645f74776f5f6d616e5f61737361756c745f627567677998766973697465645f74776f6d616e6865617679627567677998766973697465645f74776f6d616e686f766572627567677990766973697465645f76616e67756172648d766973697465645f666c61696c8e766973697465645f726f7574657293766973697465645f626174746c657761676f6e8c766973697465645f6675727993766973697465645f7175616461737361756c7496766973697465645f67616c6178795f67756e736869708e766973697465645f6170635f747290766973697465645f6c6f64657374617290766973697465645f7068616e7461736d8e766973697465645f6170635f6e638f766973697465645f76756c747572658c766973697465645f7761737090766973697465645f6d6f73717569746f97766973697465645f636f6c6f737375735f666c6967687489757365645f62616e6b95766973697465645f7265736f757263655f73696c6f9e766973697465645f63657274696669636174696f6e5f7465726d696e616c94766973697465645f6d65645f7465726d696e616c93757365645f6e616e6f5f64697370656e73657295766973697465645f73656e736f725f736869656c649a766973697465645f62726f6164636173745f77617270676174658c757365645f7068616c616e7896757365645f7068616c616e785f666c616b636f6d626f96766973697465645f77617270676174655f736d616c6c91757365645f666c616d657468726f7765729a757365645f616e6369656e745f7475727265745f776561706f6e92766973697465645f4c4c555f736f636b657497766973697465645f6d656469756d7472616e73706f727493757365645f6772656e6164655f706c61736d6193757365645f6772656e6164655f6a616d6d657298766973697465645f736869656c645f67656e657261746f7295766973697465645f6d6f74696f6e5f73656e736f7297766973697465645f76656869636c655f6372797374616c91757365645f6772656e6164655f6672616788757365645f61636598766973697465645f6164765f6d65645f7465726d696e616c90757365645f626f6c745f6472697665728b757365645f6379636c65728a757365645f676175737391757365645f68756e7465727365656b657288757365645f6973708b757365645f6c616e6365728b757365645f6c61736865728e757365645f6d61656c7374726f6d8c757365645f70686f656e69788b757365645f70756c7361728d757365645f70756e69736865728e757365645f725f73686f7467756e8d757365645f7261646961746f7288757365645f72656b8d757365645f72657065617465728c757365645f726f636b6c65748c757365645f737472696b65728f757365645f73757070726573736f728c757365645f7468756d70657292757365645f74726865765f6275727374657295757365645f74726865765f6475616c6379636c657292757365645f74726865765f706f756e6465729c766973697465645f76616e755f636f6e74726f6c5f636f6e736f6c6598766973697465645f636170747572655f7465726d696e616c92757365645f6d696e695f636861696e67756e91757365645f6c617a655f706f696e7465728c757365645f74656c657061648b757365645f7370696b657291757365645f68656176795f736e697065728d757365645f66697265626972648e757365645f666c6563686574746594757365645f68656176795f7261696c5f6265616d9a766973697465645f67656e657261746f725f7465726d696e616c8e766973697465645f6c6f636b65729a766973697465645f65787465726e616c5f646f6f725f6c6f636b9c766973697465645f6169725f76656869636c655f7465726d696e616c97766973697465645f67616c6178795f7465726d696e616c98766973697465645f696d706c616e745f7465726d696e616c99766973697465645f7365636f6e646172795f6361707475726590757365645f32356d6d5f63616e6e6f6e99757365645f6c6962657261746f725f626f6d6261726469657293766973697465645f7265706169725f73696c6f93766973697465645f76616e755f6d6f64756c6591757365645f666c61696c5f776561706f6e98766973697465645f7265737061776e5f7465726d696e616c92757365645f656e657267795f67756e5f747295757365645f616e6e69766572736172795f67756e6195757365645f616e6e69766572736172795f67756e6292757365645f6170635f74725f776561706f6e90757365645f666c75785f63616e6e6f6e94766973697465645f6266725f7465726d696e616ca0757365645f636f6c6f737375735f6475616c5f3130306d6d5f63616e6e6f6e7399757365645f636f6c6f737375735f74616e6b5f63616e6e6f6e9b757365645f68656176795f6772656e6164655f6c61756e6368657298757365645f33356d6d5f726f74617279636861696e67756e8b757365645f6b6174616e6190757365645f33356d6d5f63616e6e6f6e93757365645f7265617665725f776561706f6e7396757365645f6c696768746e696e675f776561706f6e738c757365645f6d65645f61707090757365645f32306d6d5f63616e6e6f6e99766973697465645f6d6f6e6f6c6974685f666f72736572616c91757365645f3130356d6d5f63616e6e6f6e92757365645f31356d6d5f636861696e67756e93757365645f726f74617279636861696e67756e9f766973697465645f6465636f6e737472756374696f6e5f7465726d696e616c95757365645f736b7967756172645f776561706f6e7391766973697465645f67656e657261746f7289757365645f7472656b95757365645f76616e67756172645f776561706f6e73a4766973697465645f616e6369656e745f6169725f76656869636c655f7465726d696e616ca2766973697465645f616e6369656e745f65717569706d656e745f7465726d696e616c96766973697465645f6f726465725f7465726d696e616c9f766973697465645f67726f756e645f76656869636c655f7465726d696e616c97757365645f76756c747572655f626f6d6261726469657298757365645f76756c747572655f6e6f73655f63616e6e6f6e98757365645f76756c747572655f7461696c5f63616e6e6f6e97757365645f776173705f776561706f6e5f73797374656d857567643035857567643034857567643033857567643032857567643031856d61703939856d61703938856d61703937856d61703135856d61703134856d61703132856d61703034856d61703035856d61703033856d61703031856d61703036856d61703032856d61703039856d61703037856d617031300000000000000000000000000000000000000000000000008b00048000000800000008800000228000003580000036000000390000003980000043000000558000005900000062000000638000006f000000728000000d808000148080002d8080003400800043808000478080005280800000002146d2890d80080000020000c041c1141d0190000050004d6822704100000040001808382004a03200000c8015e0103610200000080003010716107406400000100320db0a42e000000100889949102a03000000080003013cd5d8b4060000010003294084c4e0000001000060279a2b0e80c0000020006524c0f92c00000020000c04f35fa17018000004000443142b3b800000040001808389304e0300000008019c5b42b6b0000000800030133cf284406000009600338fa8a71e00000010000602679e41580c000012c00652fc16ecc00000020000c04f350a2d018000004000ce2222801698000000400018099e7202e03000004b0019c5ec4402f70000000800030133cc688406000009600338808780636000000100006026796d1580c000012c00671eb0f010ec00000020000c04cf2c623018000025800ce21824022f8000000400018099e4d42603000004b0019499c300483000000080003013cd798a406000001000329078a80b8e0000001000060279af10a80c0000020006522011017ac00000020000c04f34001d018000004000415ec100397800000040001808de1385603000002700194bdc4c0747000000080003013cd6609c06000000f000701108c364000032000e0dc0d89c8000064001c00e2119900000c800380ec52872000019000744a875264000032006c27b12a708000002000081001c" "DetailedCharacterData" should { "decode" in { @@ -583,30 +587,51 @@ class DetailedCharacterDataTest extends Specification { inv.get.contents.size mustEqual 19 val contents = inv.get.contents //0 - contents.head mustEqual InternalSlot(889, PlanetSideGUID(2), 0, + contents.head mustEqual InternalSlot( + 889, + PlanetSideGUID(2), + 0, DetailedWeaponData( CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - InternalSlot(265, PlanetSideGUID(3), 0, DetailedAmmoBoxData(8,200)), - InternalSlot(265, PlanetSideGUID(4), 1, DetailedAmmoBoxData(8,200)), - InternalSlot(265, PlanetSideGUID(5), 2, DetailedAmmoBoxData(8,200)) + InternalSlot(265, PlanetSideGUID(3), 0, DetailedAmmoBoxData(8, 200)), + InternalSlot(265, PlanetSideGUID(4), 1, DetailedAmmoBoxData(8, 200)), + InternalSlot(265, PlanetSideGUID(5), 2, DetailedAmmoBoxData(8, 200)) ) ) ) - contents(1) mustEqual InternalSlot(175, PlanetSideGUID(6), 4, + contents(1) mustEqual InternalSlot( + 175, + PlanetSideGUID(6), + 4, DetailedWeaponData( CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - InternalSlot(540, PlanetSideGUID(7), 0, DetailedAmmoBoxData(8,1)) + InternalSlot(540, PlanetSideGUID(7), 0, DetailedAmmoBoxData(8, 1)) ) ) ) - contents(2) mustEqual InternalSlot(456, PlanetSideGUID(8), 5, DetailedLockerContainerData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - None - )) + contents(2) mustEqual InternalSlot( + 456, + PlanetSideGUID(8), + 5, + DetailedLockerContainerData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + None + ) + ) contents(3) mustEqual InternalSlot(265, PlanetSideGUID(9), 6, DetailedAmmoBoxData(8, 36)) contents(4) mustEqual InternalSlot(265, PlanetSideGUID(10), 10, DetailedAmmoBoxData(8, 100)) contents(5) mustEqual InternalSlot(265, PlanetSideGUID(11), 14, DetailedAmmoBoxData(8, 100)) @@ -624,7 +649,6 @@ class DetailedCharacterDataTest extends Specification { contents(17) mustEqual InternalSlot(536, PlanetSideGUID(23), 174, DetailedAmmoBoxData(8, 1)) contents(18) mustEqual InternalSlot(536, PlanetSideGUID(24), 178, DetailedAmmoBoxData(8, 1)) - hand mustEqual DrawnSlot.Pistol1 case _ => ko @@ -1039,8 +1063,13 @@ class DetailedCharacterDataTest extends Specification { "training_map" ) b.cosmetics match { - case Some(c : Cosmetics) => - c.Styles mustEqual Set(PersonalStyle.NoHelmet, PersonalStyle.Beret, PersonalStyle.Sunglasses, PersonalStyle.Earpiece) + case Some(c: Cosmetics) => + c.Styles mustEqual Set( + PersonalStyle.NoHelmet, + PersonalStyle.Beret, + PersonalStyle.Sunglasses, + PersonalStyle.Earpiece + ) case None => ko } @@ -1067,7 +1096,12 @@ class DetailedCharacterDataTest extends Specification { inv.get.contents.head.guid mustEqual PlanetSideGUID(4202) inv.get.contents.head.parentSlot mustEqual 0 inv.get.contents.head.obj match { - case DetailedWeaponData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), fmode, ammo, _) => + case DetailedWeaponData( + CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), + fmode, + ammo, + _ + ) => faction mustEqual PlanetSideEmpire.NC bops mustEqual false alternate mustEqual false @@ -1098,7 +1132,7 @@ class DetailedCharacterDataTest extends Specification { inv.get.contents(10).guid mustEqual PlanetSideGUID(5523) inv.get.contents(10).parentSlot mustEqual 39 inv.get.contents(10).obj match { - case cdata : DetailedConstructionToolData => + case cdata: DetailedConstructionToolData => cdata.data.faction mustEqual PlanetSideEmpire.NC cdata.data.bops mustEqual false cdata.data.alternate mustEqual false @@ -1116,7 +1150,12 @@ class DetailedCharacterDataTest extends Specification { inv.get.contents(11).guid mustEqual PlanetSideGUID(3661) inv.get.contents(11).parentSlot mustEqual 60 inv.get.contents(11).obj match { - case DetailedWeaponData(CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), fmode, ammo, _) => + case DetailedWeaponData( + CommonFieldData(faction, bops, alternate, v1, v2, v3, v4, v5, fguid), + fmode, + ammo, + _ + ) => faction mustEqual PlanetSideEmpire.NC bops mustEqual false alternate mustEqual false @@ -1155,7 +1194,13 @@ class DetailedCharacterDataTest extends Specification { case DetailedPlayerData(_, basic, char, inv, _) => basic match { case CharacterAppearanceData(a, b, ribbons) => - a.app mustEqual BasicCharacterData("CCRIDER", PlanetSideEmpire.NC, CharacterGender.Male, 20, CharacterVoice.Voice3) + a.app mustEqual BasicCharacterData( + "CCRIDER", + PlanetSideEmpire.NC, + CharacterGender.Male, + 20, + CharacterVoice.Voice3 + ) a.data.bops mustEqual false a.data.alternate mustEqual false a.data.v1 mustEqual false @@ -1260,22 +1305,22 @@ class DetailedCharacterDataTest extends Specification { b.unk9.isEmpty mustEqual true b.unkA.size mustEqual 86 b.unkA mustEqual List( - 9, - 10, 11, 16, 17, 18, 30, 31, 32, - 37, 38, 52, 53, 57, 69, 92, 99, - 100, 107, 108, 109, 110, 114, 115, 116, 117, 118, - 127, 128, 129, 130, 131, 156, 163, 171, 178, 179, - 180, 181, 194, 195, 198, 201, 215, 216, 217, 222, - 223, 224, 225, 226, 227, 229, 230, 243, 244, 257, - 265, 266, 277, 278, 283, 284, 285, 286, 289, 290, - 296, 313, 334, 341, 342, 359, 369, 376, 377, 384, - 391, 392, 393, 394, 398, 408, 415, 420, 424 + 9, 10, 11, 16, 17, 18, 30, 31, 32, 37, 38, 52, 53, 57, 69, 92, 99, 100, 107, 108, 109, 110, 114, + 115, 116, 117, 118, 127, 128, 129, 130, 131, 156, 163, 171, 178, 179, 180, 181, 194, 195, 198, 201, + 215, 216, 217, 222, 223, 224, 225, 226, 227, 229, 230, 243, 244, 257, 265, 266, 277, 278, 283, 284, + 285, 286, 289, 290, 296, 313, 334, 341, 342, 359, 369, 376, 377, 384, 391, 392, 393, 394, 398, 408, + 415, 420, 424 ) b.unkB mustEqual List() b.unkC mustEqual false b.cosmetics match { - case Some(c : Cosmetics) => - c.Styles mustEqual Set(PersonalStyle.NoHelmet, PersonalStyle.Sunglasses, PersonalStyle.Earpiece, PersonalStyle.BrimmedCap) + case Some(c: Cosmetics) => + c.Styles mustEqual Set( + PersonalStyle.NoHelmet, + PersonalStyle.Sunglasses, + PersonalStyle.Earpiece, + PersonalStyle.BrimmedCap + ) case None => ko } @@ -1300,12 +1345,18 @@ class DetailedCharacterDataTest extends Specification { parentInfo.isEmpty mustEqual true data match { - case DetailedPlayerData(Some(pos), basic , char, Some(inv), hand) => + case DetailedPlayerData(Some(pos), basic, char, Some(inv), hand) => pos mustEqual PlacementData(3577.1797f, 2712.25f, 35.78125f, 0, 0, 50.625f) basic match { case CharacterAppearanceData(a, b, ribbons) => - a.app mustEqual BasicCharacterData("xRider912", PlanetSideEmpire.TR, CharacterGender.Male, 4, CharacterVoice.Voice1) + a.app mustEqual BasicCharacterData( + "xRider912", + PlanetSideEmpire.TR, + CharacterGender.Male, + 4, + CharacterVoice.Voice1 + ) a.data.bops mustEqual false a.data.alternate mustEqual false a.data.v1 mustEqual false @@ -1400,10 +1451,8 @@ class DetailedCharacterDataTest extends Specification { b.unk8 mustEqual 0L b.unk9.isEmpty mustEqual true b.unkA mustEqual List( - 9, 16, 17, 69, 107, 108, - 114, 115, 134, 171, 178, - 196, 199, 222, 229, 283, - 297, 347, 360, 391, 399, 421 + 9, 16, 17, 69, 107, 108, 114, 115, 134, 171, 178, 196, 199, 222, 229, 283, 297, 347, 360, 391, 399, + 421 ) b.unkB mustEqual List() b.unkC mustEqual false @@ -1415,17 +1464,55 @@ class DetailedCharacterDataTest extends Specification { inv.contents.length mustEqual 10 //check first and last entries of inventory for accuracy inv.contents.head mustEqual InternalSlot( - 730, PlanetSideGUID(3465), 0, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - InternalSlot(28, PlanetSideGUID(3722), 0, - DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 20) - ) - ), false) + 730, + PlanetSideGUID(3465), + 0, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List( + InternalSlot( + 28, + PlanetSideGUID(3722), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 20 + ) + ) + ), + false + ) ) //... inv.contents(9) mustEqual InternalSlot( - 728, PlanetSideGUID(4731), 39, - DetailedREKData(CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), 16) + 728, + PlanetSideGUID(4731), + 39, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.TR, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ), + 16 + ) ) hand mustEqual DrawnSlot.None @@ -1438,11 +1525,10 @@ class DetailedCharacterDataTest extends Specification { } "encode" in { - val pos : PlacementData = PlacementData( - 3674.8438f, 2726.789f, 91.15625f, - 0, 0, 36.5625f + val pos: PlacementData = PlacementData( + 3674.8438f, 2726.789f, 91.15625f, 0, 0, 36.5625f ) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, @@ -1469,7 +1555,7 @@ class DetailedCharacterDataTest extends Specification { 0, 65535 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, "", 0, @@ -1478,7 +1564,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - 2.8125f, 61.875f, + 2.8125f, + 61.875f, true, GrenadeState.None, false, @@ -1489,8 +1576,9 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars( MeritCommendation.None, MeritCommendation.None, @@ -1498,17 +1586,23 @@ class DetailedCharacterDataTest extends Specification { MeritCommendation.None ) ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 0L, 0L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 50, 32831L, - 100, 100, + 100, + 100, None, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), List( CertificationType.StandardAssault, @@ -1520,10 +1614,11 @@ class DetailedCharacterDataTest extends Specification { CertificationType.ReinforcedExoSuit ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, Nil, - Nil, Nil, + Nil, + Nil, List( "xpe_sanctuary_help", "xpe_th_firemodes", @@ -1531,47 +1626,82 @@ class DetailedCharacterDataTest extends Specification { "map13" ), Nil, - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, None ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) - val inv = InventoryData(List( - InventoryItemData(ObjectClass.beamer, PlanetSideGUID(76), 0, - DetailedWeaponData( - CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + val inv = InventoryData( + List( + InventoryItemData( + ObjectClass.beamer, + PlanetSideGUID(76), 0, - List(InternalSlot(ObjectClass.energy_cell, PlanetSideGUID(77), 0, DetailedAmmoBoxData(8, 16))) + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.energy_cell, PlanetSideGUID(77), 0, DetailedAmmoBoxData(8, 16))) + ) + ), + InventoryItemData( + ObjectClass.suppressor, + PlanetSideGUID(78), + 2, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(79), 0, DetailedAmmoBoxData(8, 25))) + ) + ), + InventoryItemData( + ObjectClass.forceblade, + PlanetSideGUID(80), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(81), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InventoryItemData(ObjectClass.locker_container, PlanetSideGUID(82), 5, DetailedLockerContainerData(8)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(83), 6, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(84), 9, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(85), 12, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm_AP, PlanetSideGUID(86), 33, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.energy_cell, PlanetSideGUID(87), 36, DetailedAmmoBoxData(8, 50)), + InventoryItemData( + ObjectClass.remote_electronics_kit, + PlanetSideGUID(88), + 39, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.VS, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) ) - ), - InventoryItemData(ObjectClass.suppressor, PlanetSideGUID(78), 2, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(79), 0, DetailedAmmoBoxData(8, 25))) - ) - ), - InventoryItemData(ObjectClass.forceblade, PlanetSideGUID(80), 4, - DetailedWeaponData( - CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(81), 0, DetailedAmmoBoxData(8, 1))) - ) - ), - InventoryItemData(ObjectClass.locker_container, PlanetSideGUID(82), 5, DetailedLockerContainerData(8)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(83), 6, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(84), 9, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(85), 12, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm_AP, PlanetSideGUID(86), 33, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.energy_cell, PlanetSideGUID(87), 36, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.remote_electronics_kit, PlanetSideGUID(88), 39, DetailedREKData(CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)))) - )) + ) + ) val obj = DetailedPlayerData.apply(pos, app, char, inv, DrawnSlot.Pistol1) - val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj) - val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector val pkt_bitv = pkt.toBitVector val ori_bitv = string.toBitVector pkt_bitv.take(724) mustEqual ori_bitv.take(724) //skip 1; this is the highest bit of facingPitch @@ -1580,7 +1710,7 @@ class DetailedCharacterDataTest extends Specification { } "encode (character, seated)" in { - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, @@ -1607,7 +1737,7 @@ class DetailedCharacterDataTest extends Specification { 0, 0 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, "", 0, @@ -1616,7 +1746,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - 5.625f, 61.875f, + 5.625f, + 61.875f, true, GrenadeState.None, false, @@ -1627,8 +1758,9 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars( MeritCommendation.None, MeritCommendation.None, @@ -1636,17 +1768,23 @@ class DetailedCharacterDataTest extends Specification { MeritCommendation.None ) ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 0L, 0L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 50, 32831L, - 100, 100, + 100, + 100, None, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), List( CertificationType.StandardAssault, @@ -1658,10 +1796,11 @@ class DetailedCharacterDataTest extends Specification { CertificationType.ReinforcedExoSuit ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, Nil, - Nil, Nil, + Nil, + Nil, List( "xpe_sanctuary_help", "xpe_th_firemodes", @@ -1669,48 +1808,84 @@ class DetailedCharacterDataTest extends Specification { "map13" ), Nil, - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, None ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) - val inv = InventoryData(List( - InventoryItemData(ObjectClass.beamer, PlanetSideGUID(76), 0, - DetailedWeaponData( - CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + val inv = InventoryData( + List( + InventoryItemData( + ObjectClass.beamer, + PlanetSideGUID(76), 0, - List(InternalSlot(ObjectClass.energy_cell, PlanetSideGUID(77), 0, DetailedAmmoBoxData(8, 16))) + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.energy_cell, PlanetSideGUID(77), 0, DetailedAmmoBoxData(8, 16))) + ) + ), + InventoryItemData( + ObjectClass.suppressor, + PlanetSideGUID(78), + 2, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(79), 0, DetailedAmmoBoxData(8, 25))) + ) + ), + InventoryItemData( + ObjectClass.forceblade, + PlanetSideGUID(80), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(81), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InventoryItemData(ObjectClass.locker_container, PlanetSideGUID(82), 5, DetailedLockerContainerData(8)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(83), 6, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(84), 9, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(85), 12, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.bullet_9mm_AP, PlanetSideGUID(86), 33, DetailedAmmoBoxData(8, 50)), + InventoryItemData(ObjectClass.energy_cell, PlanetSideGUID(87), 36, DetailedAmmoBoxData(8, 50)), + InventoryItemData( + ObjectClass.remote_electronics_kit, + PlanetSideGUID(88), + 39, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.VS, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) ) - ), - InventoryItemData(ObjectClass.suppressor, PlanetSideGUID(78), 2, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(79), 0, DetailedAmmoBoxData(8, 25))) - ) - ), - InventoryItemData(ObjectClass.forceblade, PlanetSideGUID(80), 4, - DetailedWeaponData( - CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(81), 0, DetailedAmmoBoxData(8, 1))) - ) - ), - InventoryItemData(ObjectClass.locker_container, PlanetSideGUID(82), 5, DetailedLockerContainerData(8)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(83), 6, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(84), 9, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm, PlanetSideGUID(85), 12, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.bullet_9mm_AP, PlanetSideGUID(86), 33, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.energy_cell, PlanetSideGUID(87), 36, DetailedAmmoBoxData(8, 50)), - InventoryItemData(ObjectClass.remote_electronics_kit, PlanetSideGUID(88), 39, DetailedREKData(CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)))) - )) + ) + ) val obj = DetailedPlayerData.apply(app, char, inv, DrawnSlot.Pistol1) //it shouldn't be Pistol1 if he's seated but it's fine for the test - val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), ObjectCreateMessageParent(PlanetSideGUID(43981), 0), obj) - val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + val msg = + ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), ObjectCreateMessageParent(PlanetSideGUID(43981), 0), obj) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector val pkt_bitv = pkt.toBitVector val ori_bitv = string_seated.toBitVector pkt_bitv.take(668) mustEqual ori_bitv.take(668) //skip 1; this is the highest bit of facingPitch @@ -1719,19 +1894,20 @@ class DetailedCharacterDataTest extends Specification { } "encode (max)" in { - val pos : PlacementData = PlacementData( + val pos: PlacementData = PlacementData( Vector3(3990.7734f, 3656.5781f, 230.70312f), Vector3(0, 0, 67.5f), None ) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "HaHaATRMax", PlanetSideEmpire.TR, CharacterGender.Male, 57, CharacterVoice.Voice1 - ),CommonFieldData( + ), + CommonFieldData( PlanetSideEmpire.TR, false, false, @@ -1750,7 +1926,7 @@ class DetailedCharacterDataTest extends Specification { 0, 65535 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, "", 0, @@ -1759,7 +1935,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - -11.25f, 0, + -11.25f, + 0, true, GrenadeState.None, false, @@ -1770,21 +1947,28 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars() ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 15301L, 0L, - 0L, 0L, 0L, - 120, 120, + 0L, + 0L, + 0L, + 120, + 120, false, 641, 32831L, - 100, 100, + 100, + 100, Some(0), - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), List( CertificationType.StandardAssault, @@ -1794,10 +1978,11 @@ class DetailedCharacterDataTest extends Specification { CertificationType.UniMAX ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, Nil, - Nil, Nil, + Nil, + Nil, List( "xpe_battle_rank_3", "xpe_bind_facility", @@ -1849,39 +2034,57 @@ class DetailedCharacterDataTest extends Specification { "map02" ), Nil, - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, None ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) val inv = InventoryData( List( - InternalSlot(889, PlanetSideGUID(2), 0, + InternalSlot( + 889, + PlanetSideGUID(2), + 0, DetailedWeaponData( CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - InternalSlot(265, PlanetSideGUID(3), 0, DetailedAmmoBoxData(8,200)), - InternalSlot(265, PlanetSideGUID(4), 1, DetailedAmmoBoxData(8,200)), - InternalSlot(265, PlanetSideGUID(5), 2, DetailedAmmoBoxData(8,200)) + InternalSlot(265, PlanetSideGUID(3), 0, DetailedAmmoBoxData(8, 200)), + InternalSlot(265, PlanetSideGUID(4), 1, DetailedAmmoBoxData(8, 200)), + InternalSlot(265, PlanetSideGUID(5), 2, DetailedAmmoBoxData(8, 200)) ) ) ), - InternalSlot(175, PlanetSideGUID(6), 4, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), + InternalSlot( + 175, + PlanetSideGUID(6), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List( - InternalSlot(540, PlanetSideGUID(7), 0, DetailedAmmoBoxData(8,1)) + InternalSlot(540, PlanetSideGUID(7), 0, DetailedAmmoBoxData(8, 1)) ) ) ), - InternalSlot(456, PlanetSideGUID(8), 5, DetailedLockerContainerData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - None - )), + InternalSlot( + 456, + PlanetSideGUID(8), + 5, + DetailedLockerContainerData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + None + ) + ), InternalSlot(265, PlanetSideGUID(9), 6, DetailedAmmoBoxData(8, 36)), InternalSlot(265, PlanetSideGUID(10), 10, DetailedAmmoBoxData(8, 100)), InternalSlot(265, PlanetSideGUID(11), 14, DetailedAmmoBoxData(8, 100)), @@ -1908,12 +2111,12 @@ class DetailedCharacterDataTest extends Specification { } "encode (BR32)" in { - val pos : PlacementData = PlacementData( + val pos: PlacementData = PlacementData( Vector3(5500.0f, 3800.0f, 71.484375f), Vector3(0, 0, 90.0f), None ) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "KiCkJr", PlanetSideEmpire.NC, @@ -1940,7 +2143,7 @@ class DetailedCharacterDataTest extends Specification { 0, 0 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 556539L, "", 14, @@ -1949,7 +2152,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - -11.25f, -11.25f, + -11.25f, + -11.25f, false, GrenadeState.None, false, @@ -1960,8 +2164,9 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars( MeritCommendation.Loser4, MeritCommendation.EventNCElite, @@ -1969,17 +2174,23 @@ class DetailedCharacterDataTest extends Specification { MeritCommendation.SixYearNC ) ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 6366766L, 694787L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 100, 32831L, - 100, 46, + 100, + 46, None, - 0, 4, 3278759L, + 0, + 4, + 3278759L, List(0, 0, 0, 0, 0, 0), List( CertificationType.StandardAssault, @@ -1999,14 +2210,15 @@ class DetailedCharacterDataTest extends Specification { CertificationType.CombatEngineering ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, List( ImplantEntry(ImplantType.AudioAmplifier, None), ImplantEntry(ImplantType.Targeting, None), ImplantEntry(ImplantType.Surge, None) ), - Nil, Nil, + Nil, + Nil, List( "xpe_overhead_map", "xpe_warp_gate", @@ -2312,200 +2524,1067 @@ class DetailedCharacterDataTest extends Specification { "training_ui", "training_map" ), - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, None, - Nil, Nil, false, + Nil, + Nil, + false, Some(Cosmetics(true, true, true, true, false)) ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) val inv = InventoryData( List( - InternalSlot(531, PlanetSideGUID(4202), 0, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(389, PlanetSideGUID(3942), 0,DetailedAmmoBoxData(8, 100)))) + InternalSlot( + 531, + PlanetSideGUID(4202), + 0, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(389, PlanetSideGUID(3942), 0, DetailedAmmoBoxData(8, 100))) + ) ), - InternalSlot(132, PlanetSideGUID(6924), 1, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(111, PlanetSideGUID(9157), 0, DetailedAmmoBoxData(8, 100)))) + InternalSlot( + 132, + PlanetSideGUID(6924), + 1, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(111, PlanetSideGUID(9157), 0, DetailedAmmoBoxData(8, 100))) + ) ), - InternalSlot(714, PlanetSideGUID(8498), 2, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(755, PlanetSideGUID(5356), 0, DetailedAmmoBoxData(8, 16)))) + InternalSlot( + 714, + PlanetSideGUID(8498), + 2, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(755, PlanetSideGUID(5356), 0, DetailedAmmoBoxData(8, 16))) + ) ), - InternalSlot(468, PlanetSideGUID(7198), 4, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(5009), 0, DetailedAmmoBoxData(8, 1)))) + InternalSlot( + 468, + PlanetSideGUID(7198), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(540, PlanetSideGUID(5009), 0, DetailedAmmoBoxData(8, 1))) + ) ), - InternalSlot(456, PlanetSideGUID(5374), 5, + InternalSlot( + 456, + PlanetSideGUID(5374), + 5, DetailedLockerContainerData( CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - Some(InventoryData(List( - InternalSlot(429, PlanetSideGUID(3021), 0, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(272, PlanetSideGUID(8729), 0, DetailedAmmoBoxData(8, 0)))) - ), - InternalSlot(838, PlanetSideGUID(8467), 9, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(839, PlanetSideGUID(8603), 0, DetailedAmmoBoxData(8, 5)))) - ), - InternalSlot(272, PlanetSideGUID(3266), 18, DetailedAmmoBoxData(8, 27)), - InternalSlot(577, PlanetSideGUID(2934), 22, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(111, PlanetSideGUID(4682), 0, DetailedAmmoBoxData(8, 100)))) - ), - InternalSlot(839, PlanetSideGUID(3271), 90, DetailedAmmoBoxData(8, 15)), - InternalSlot(839, PlanetSideGUID(7174), 94, DetailedAmmoBoxData(8, 6)), - InternalSlot(429, PlanetSideGUID(6084), 98, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(272, PlanetSideGUID(5928), 0, DetailedAmmoBoxData(8, 35)))) - ), - InternalSlot(462, PlanetSideGUID(5000), 108, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(6277), 0, DetailedAmmoBoxData(8, 150)))) - ), - InternalSlot(429, PlanetSideGUID(4341), 189, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(272, PlanetSideGUID(7043), 0, DetailedAmmoBoxData(8, 35)))) - ), - InternalSlot(556, PlanetSideGUID(4168), 198, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(8937), 0, DetailedAmmoBoxData(8, 100)))) - ), - InternalSlot(272, PlanetSideGUID(3173), 207, DetailedAmmoBoxData(8, 50)), - InternalSlot(462, PlanetSideGUID(3221), 210, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(4031), 0, DetailedAmmoBoxData(8, 150)))) - ), - InternalSlot(556, PlanetSideGUID(6853), 280, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(29, PlanetSideGUID(8524), 0, DetailedAmmoBoxData(8, 67)))) - ), - InternalSlot(556, PlanetSideGUID(4569), 290, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(5584), 0, DetailedAmmoBoxData(8, 100)))) - ), - InternalSlot(462, PlanetSideGUID(9294), 300, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(3118), 0, DetailedAmmoBoxData(8, 150)))) - ), - InternalSlot(272, PlanetSideGUID(4759), 387, DetailedAmmoBoxData(8, 50)), - InternalSlot(462, PlanetSideGUID(7377), 390, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(8155), 0, DetailedAmmoBoxData(8, 150)))) - ), - InternalSlot(843, PlanetSideGUID(6709), 480, DetailedAmmoBoxData(8, 1)), - InternalSlot(843, PlanetSideGUID(5276), 484, DetailedAmmoBoxData(8, 1)), - InternalSlot(843, PlanetSideGUID(7769), 488, DetailedAmmoBoxData(8, 1)), - InternalSlot(844, PlanetSideGUID(5334), 492, DetailedAmmoBoxData(8, 1)), - InternalSlot(844, PlanetSideGUID(6219), 496, DetailedAmmoBoxData(8, 1)), - InternalSlot(842, PlanetSideGUID(7279), 500, DetailedAmmoBoxData(8, 1)), - InternalSlot(842, PlanetSideGUID(5415), 504, DetailedAmmoBoxData(8, 1)), - InternalSlot(175, PlanetSideGUID(5741), 540, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(5183), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(6208), 541, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(5029), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(8589), 542, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(9217), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(8901), 543, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7633), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(8419), 544, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(6546), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(4715), 545, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(8453), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(3577), 546, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(9202), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(6003), 547, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(3260), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(9140), 548, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(3815),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(4913), 549, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(7222),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(6954), 550, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(2953),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(6405), 551, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(4676),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(8915), 552, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(4018),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(4993), 553, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(6775),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(5053), 554, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(6418),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(9244), 555, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(3327),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(6292), 556, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540,PlanetSideGUID(6918),0,DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(842, PlanetSideGUID(5357), 558, DetailedAmmoBoxData(8, 1)), - InternalSlot(844, PlanetSideGUID(4435), 562, DetailedAmmoBoxData(8, 1)), - InternalSlot(843, PlanetSideGUID(7242), 566, DetailedAmmoBoxData(8, 1)), - InternalSlot(175, PlanetSideGUID(7330), 570, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(4786), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(7415), 571, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(6536), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(3949), 572, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7526), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(3805), 573, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7358), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(4493), 574, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(6852), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(5762), 575, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(3463), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(3315), 576, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7619), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(324, PlanetSideGUID(6263), 577, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(5912), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(4028), 578, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(8021), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(2843), 579, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7250), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(9143), 580, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(5195), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(5024), 581, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(4287), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(6582), 582, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(4915), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(6425), 583, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(8872), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(468, PlanetSideGUID(4431), 584, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(4191), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(8339), 585, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(7317), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(175, PlanetSideGUID(3277), 586, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(6469), 0, DetailedAmmoBoxData(8, 1)))) + Some( + InventoryData( + List( + InternalSlot( + 429, + PlanetSideGUID(3021), + 0, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(272, PlanetSideGUID(8729), 0, DetailedAmmoBoxData(8, 0))) + ) + ), + InternalSlot( + 838, + PlanetSideGUID(8467), + 9, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(839, PlanetSideGUID(8603), 0, DetailedAmmoBoxData(8, 5))) + ) + ), + InternalSlot(272, PlanetSideGUID(3266), 18, DetailedAmmoBoxData(8, 27)), + InternalSlot( + 577, + PlanetSideGUID(2934), + 22, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(111, PlanetSideGUID(4682), 0, DetailedAmmoBoxData(8, 100))) + ) + ), + InternalSlot(839, PlanetSideGUID(3271), 90, DetailedAmmoBoxData(8, 15)), + InternalSlot(839, PlanetSideGUID(7174), 94, DetailedAmmoBoxData(8, 6)), + InternalSlot( + 429, + PlanetSideGUID(6084), + 98, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(272, PlanetSideGUID(5928), 0, DetailedAmmoBoxData(8, 35))) + ) + ), + InternalSlot( + 462, + PlanetSideGUID(5000), + 108, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(6277), 0, DetailedAmmoBoxData(8, 150))) + ) + ), + InternalSlot( + 429, + PlanetSideGUID(4341), + 189, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(272, PlanetSideGUID(7043), 0, DetailedAmmoBoxData(8, 35))) + ) + ), + InternalSlot( + 556, + PlanetSideGUID(4168), + 198, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(8937), 0, DetailedAmmoBoxData(8, 100))) + ) + ), + InternalSlot(272, PlanetSideGUID(3173), 207, DetailedAmmoBoxData(8, 50)), + InternalSlot( + 462, + PlanetSideGUID(3221), + 210, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(4031), 0, DetailedAmmoBoxData(8, 150))) + ) + ), + InternalSlot( + 556, + PlanetSideGUID(6853), + 280, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(29, PlanetSideGUID(8524), 0, DetailedAmmoBoxData(8, 67))) + ) + ), + InternalSlot( + 556, + PlanetSideGUID(4569), + 290, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(5584), 0, DetailedAmmoBoxData(8, 100))) + ) + ), + InternalSlot( + 462, + PlanetSideGUID(9294), + 300, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(3118), 0, DetailedAmmoBoxData(8, 150))) + ) + ), + InternalSlot(272, PlanetSideGUID(4759), 387, DetailedAmmoBoxData(8, 50)), + InternalSlot( + 462, + PlanetSideGUID(7377), + 390, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(8155), 0, DetailedAmmoBoxData(8, 150))) + ) + ), + InternalSlot(843, PlanetSideGUID(6709), 480, DetailedAmmoBoxData(8, 1)), + InternalSlot(843, PlanetSideGUID(5276), 484, DetailedAmmoBoxData(8, 1)), + InternalSlot(843, PlanetSideGUID(7769), 488, DetailedAmmoBoxData(8, 1)), + InternalSlot(844, PlanetSideGUID(5334), 492, DetailedAmmoBoxData(8, 1)), + InternalSlot(844, PlanetSideGUID(6219), 496, DetailedAmmoBoxData(8, 1)), + InternalSlot(842, PlanetSideGUID(7279), 500, DetailedAmmoBoxData(8, 1)), + InternalSlot(842, PlanetSideGUID(5415), 504, DetailedAmmoBoxData(8, 1)), + InternalSlot( + 175, + PlanetSideGUID(5741), + 540, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(5183), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(6208), + 541, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(5029), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(8589), + 542, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(9217), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(8901), + 543, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7633), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(8419), + 544, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6546), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(4715), + 545, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(8453), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(3577), + 546, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(9202), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(6003), + 547, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(3260), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(9140), + 548, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(3815), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(4913), + 549, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7222), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(6954), + 550, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(2953), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(6405), + 551, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4676), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(8915), + 552, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4018), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(4993), + 553, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6775), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(5053), + 554, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6418), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(9244), + 555, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(3327), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(6292), + 556, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6918), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot(842, PlanetSideGUID(5357), 558, DetailedAmmoBoxData(8, 1)), + InternalSlot(844, PlanetSideGUID(4435), 562, DetailedAmmoBoxData(8, 1)), + InternalSlot(843, PlanetSideGUID(7242), 566, DetailedAmmoBoxData(8, 1)), + InternalSlot( + 175, + PlanetSideGUID(7330), + 570, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4786), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(7415), + 571, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6536), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(3949), + 572, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7526), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(3805), + 573, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7358), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(4493), + 574, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6852), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(5762), + 575, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(3463), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(3315), + 576, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7619), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 324, + PlanetSideGUID(6263), + 577, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(5912), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(4028), + 578, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(8021), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(2843), + 579, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7250), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(9143), + 580, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(5195), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(5024), + 581, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4287), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(6582), + 582, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4915), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(6425), + 583, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(8872), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(4431), + 584, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(4191), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(8339), + 585, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(7317), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 175, + PlanetSideGUID(3277), + 586, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(540, PlanetSideGUID(6469), 0, DetailedAmmoBoxData(8, 1))) + ) + ) + ) ) ) - ))) + ) + ), + InternalSlot( + 213, + PlanetSideGUID(6877), + 6, + DetailedCommandDetonaterData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)) + ) ), - InternalSlot(213, PlanetSideGUID(6877), 6, DetailedCommandDetonaterData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)))), InternalSlot(755, PlanetSideGUID(6227), 9, DetailedAmmoBoxData(8, 16)), - InternalSlot(728, PlanetSideGUID(7181), 12, DetailedREKData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), 16)), - InternalSlot(536, PlanetSideGUID(4077), 33, DetailedAmmoBoxData(8, 1)), - InternalSlot(680, PlanetSideGUID(4377), 37, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(681, PlanetSideGUID(8905), 0, DetailedAmmoBoxData(8, 3)))) + InternalSlot( + 728, + PlanetSideGUID(7181), + 12, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.NC, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ), + 16 + ) ), - InternalSlot(32, PlanetSideGUID(5523), 39, DetailedConstructionToolData( - CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)) - )), - InternalSlot(673, PlanetSideGUID(3661), 60, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(674, PlanetSideGUID(8542), 0, DetailedAmmoBoxData(8, 3)))) + InternalSlot(536, PlanetSideGUID(4077), 33, DetailedAmmoBoxData(8, 1)), + InternalSlot( + 680, + PlanetSideGUID(4377), + 37, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(681, PlanetSideGUID(8905), 0, DetailedAmmoBoxData(8, 3))) + ) + ), + InternalSlot( + 32, + PlanetSideGUID(5523), + 39, + DetailedConstructionToolData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)) + ) + ), + InternalSlot( + 673, + PlanetSideGUID(3661), + 60, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(674, PlanetSideGUID(8542), 0, DetailedAmmoBoxData(8, 3))) + ) ) ) ) @@ -2517,12 +3596,12 @@ class DetailedCharacterDataTest extends Specification { } "encode (ccrider)" in { - val pos : PlacementData = PlacementData( + val pos: PlacementData = PlacementData( Vector3(2931.5f, 4404.6953f, 45.0625f), Vector3.z(36.5625f), None ) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "CCRIDER", PlanetSideEmpire.NC, @@ -2549,7 +3628,7 @@ class DetailedCharacterDataTest extends Specification { 10, 1 ) - val ab : (Boolean, Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 25044L, "Black Armored Reapers", 15, @@ -2558,7 +3637,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - 0, 0, + 0, + 0, false, GrenadeState.None, false, @@ -2569,8 +3649,9 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars( MeritCommendation.DefenseNC5, MeritCommendation.HackingSupport5, @@ -2578,15 +3659,19 @@ class DetailedCharacterDataTest extends Specification { MeritCommendation.SixYearNC ) ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 6571522L, 659329L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 50, 32831, - 100, 100, + 100, + 100, None, 0, 6, @@ -2608,14 +3693,15 @@ class DetailedCharacterDataTest extends Specification { CertificationType.Engineering ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( Some(14140), List( ImplantEntry(ImplantType.Surge, Some(94), false), ImplantEntry(ImplantType.DarklightVision, Some(91), false), ImplantEntry(ImplantType.Targeting, Some(91), false) ), - List(), List(), + List(), + List(), List( "xpe_blackops", "xpe_battle_rank_9", @@ -2906,117 +3992,526 @@ class DetailedCharacterDataTest extends Specification { 0, None, List( - 9, - 10, 11, 16, 17, 18, 30, 31, 32, - 37, 38, 52, 53, 57, 69, 92, 99, - 100, 107, 108, 109, 110, 114, 115, 116, 117, 118, - 127, 128, 129, 130, 131, 156, 163, 171, 178, 179, - 180, 181, 194, 195, 198, 201, 215, 216, 217, 222, - 223, 224, 225, 226, 227, 229, 230, 243, 244, 257, - 265, 266, 277, 278, 283, 284, 285, 286, 289, 290, - 296, 313, 334, 341, 342, 359, 369, 376, 377, 384, - 391, 392, 393, 394, 398, 408, 415, 420, 424 + 9, 10, 11, 16, 17, 18, 30, 31, 32, 37, 38, 52, 53, 57, 69, 92, 99, 100, 107, 108, 109, 110, 114, 115, 116, + 117, 118, 127, 128, 129, 130, 131, 156, 163, 171, 178, 179, 180, 181, 194, 195, 198, 201, 215, 216, 217, 222, + 223, 224, 225, 226, 227, 229, 230, 243, 244, 257, 265, 266, 277, 278, 283, 284, 285, 286, 289, 290, 296, 313, + 334, 341, 342, 359, 369, 376, 377, 384, 391, 392, 393, 394, 398, 408, 415, 420, 424 ), List(), false, Some(Cosmetics(true, false, true, true, true)) ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) - val inv : InventoryData = InventoryData(List( - InternalSlot(411, PlanetSideGUID(10022), 0, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(755, PlanetSideGUID(10023), 0, DetailedAmmoBoxData(8, 8)))) - ), - InternalSlot(845, PlanetSideGUID(5671), 2, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(10019), 0, DetailedAmmoBoxData(8, 25)))) - ), - InternalSlot(468, PlanetSideGUID(3754), 4, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(540, PlanetSideGUID(6693), 0, DetailedAmmoBoxData(8, 1)))) - ), - InternalSlot(456, PlanetSideGUID(8199), 5, - DetailedLockerContainerData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), - Some(InventoryData(List( - InternalSlot(233, PlanetSideGUID(6315), 0, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(6795), 0, DetailedAmmoBoxData(0, 50)))) + val inv: InventoryData = InventoryData( + List( + InternalSlot( + 411, + PlanetSideGUID(10022), + 0, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(755, PlanetSideGUID(10023), 0, DetailedAmmoBoxData(8, 8))) + ) + ), + InternalSlot( + 845, + PlanetSideGUID(5671), + 2, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(28, PlanetSideGUID(10019), 0, DetailedAmmoBoxData(8, 25))) + ) + ), + InternalSlot( + 468, + PlanetSideGUID(3754), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List(InternalSlot(540, PlanetSideGUID(6693), 0, DetailedAmmoBoxData(8, 1))) + ) + ), + InternalSlot( + 456, + PlanetSideGUID(8199), + 5, + DetailedLockerContainerData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) ), - InternalSlot(233, PlanetSideGUID(4302), 6, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(5511), 0, DetailedAmmoBoxData(0, 50)))) + Some( + InventoryData( + List( + InternalSlot( + 233, + PlanetSideGUID(6315), + 0, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(6795), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot( + 233, + PlanetSideGUID(4302), + 6, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(5511), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot( + 233, + PlanetSideGUID(6342), + 12, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(7788), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot( + 233, + PlanetSideGUID(7392), + 18, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(8335), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot( + 233, + PlanetSideGUID(4432), + 24, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(7020), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot( + 716, + PlanetSideGUID(4219), + 90, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(9275), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 716, + PlanetSideGUID(3869), + 96, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(6099), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 716, + PlanetSideGUID(8954), + 102, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(5972), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 233, + PlanetSideGUID(7476), + 108, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(5704), 0, DetailedAmmoBoxData(0, 50))) + ) + ), + InternalSlot(272, PlanetSideGUID(8800), 114, DetailedAmmoBoxData(0, 50)), + InternalSlot(272, PlanetSideGUID(8649), 177, DetailedAmmoBoxData(0, 50)), + InternalSlot( + 716, + PlanetSideGUID(7580), + 180, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(6734), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 716, + PlanetSideGUID(6464), + 186, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(4738), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 716, + PlanetSideGUID(5408), + 192, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(50, PlanetSideGUID(3579), 0, DetailedAmmoBoxData(0, 25))) + ) + ), + InternalSlot( + 556, + PlanetSideGUID(8957), + 198, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(8223), 0, DetailedAmmoBoxData(0, 100))) + ) + ), + InternalSlot(272, PlanetSideGUID(3928), 267, DetailedAmmoBoxData(0, 50)), + InternalSlot( + 577, + PlanetSideGUID(3403), + 279, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(111, PlanetSideGUID(4352), 0, DetailedAmmoBoxData(0, 100))) + ) + ), + InternalSlot( + 577, + PlanetSideGUID(8454), + 285, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(111, PlanetSideGUID(8724), 0, DetailedAmmoBoxData(0, 100))) + ) + ), + InternalSlot(272, PlanetSideGUID(3397), 357, DetailedAmmoBoxData(0, 50)), + InternalSlot( + 429, + PlanetSideGUID(6695), + 378, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(272, PlanetSideGUID(6842), 0, DetailedAmmoBoxData(0, 35))) + ) + ), + InternalSlot( + 462, + PlanetSideGUID(8304), + 420, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(7089), 0, DetailedAmmoBoxData(0, 150))) + ) + ), + InternalSlot( + 462, + PlanetSideGUID(3346), + 429, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(7557), 0, DetailedAmmoBoxData(0, 150))) + ) + ), + InternalSlot(272, PlanetSideGUID(7515), 447, DetailedAmmoBoxData(0, 50)), + InternalSlot( + 462, + PlanetSideGUID(4622), + 510, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(6996), 0, DetailedAmmoBoxData(0, 150))) + ) + ), + InternalSlot( + 462, + PlanetSideGUID(6586), + 519, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(463, PlanetSideGUID(6870), 0, DetailedAmmoBoxData(0, 150))) + ) + ), + InternalSlot( + 556, + PlanetSideGUID(4806), + 528, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List(InternalSlot(28, PlanetSideGUID(8798), 0, DetailedAmmoBoxData(0, 100))) + ) + ), + InternalSlot(272, PlanetSideGUID(8429), 537, DetailedAmmoBoxData(0, 50)) + ) + ) + ) + ) + ), + InternalSlot(28, PlanetSideGUID(10018), 6, DetailedAmmoBoxData(8, 50)), + InternalSlot(28, PlanetSideGUID(5612), 9, DetailedAmmoBoxData(8, 50)), + InternalSlot(28, PlanetSideGUID(5128), 12, DetailedAmmoBoxData(8, 50)), + InternalSlot(29, PlanetSideGUID(8363), 33, DetailedAmmoBoxData(8, 50)), + InternalSlot(755, PlanetSideGUID(4090), 36, DetailedAmmoBoxData(8, 16)), + InternalSlot( + 728, + PlanetSideGUID(10075), + 39, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.NC, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) ), - InternalSlot(233, PlanetSideGUID(6342), 12, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(7788), 0, DetailedAmmoBoxData(0, 50)))) - ), - InternalSlot(233, PlanetSideGUID(7392), 18, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(8335), 0, DetailedAmmoBoxData(0, 50)))) - ), - InternalSlot(233, PlanetSideGUID(4432), 24, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(7020), 0, DetailedAmmoBoxData(0,50)))) - ), - InternalSlot(716, PlanetSideGUID(4219), 90, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(9275), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(716, PlanetSideGUID(3869), 96, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(6099), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(716, PlanetSideGUID(8954), 102, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(5972), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(233, PlanetSideGUID(7476), 108, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(5704), 0, DetailedAmmoBoxData(0, 50)))) - ), - InternalSlot(272, PlanetSideGUID(8800), 114, DetailedAmmoBoxData(0, 50)), - InternalSlot(272, PlanetSideGUID(8649), 177, DetailedAmmoBoxData(0, 50)), - InternalSlot(716, PlanetSideGUID(7580), 180, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(6734), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(716, PlanetSideGUID(6464), 186, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(4738), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(716, PlanetSideGUID(5408), 192, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(50, PlanetSideGUID(3579), 0, DetailedAmmoBoxData(0, 25)))) - ), - InternalSlot(556, PlanetSideGUID(8957), 198, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(8223), 0, DetailedAmmoBoxData(0, 100)))) - ), - InternalSlot(272, PlanetSideGUID(3928), 267, DetailedAmmoBoxData(0, 50)), - InternalSlot(577, PlanetSideGUID(3403), 279, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(111, PlanetSideGUID(4352), 0, DetailedAmmoBoxData(0, 100)))) - ), - InternalSlot(577, PlanetSideGUID(8454), 285, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(111, PlanetSideGUID(8724), 0, DetailedAmmoBoxData(0,100)))) - ), - InternalSlot(272, PlanetSideGUID(3397), 357, DetailedAmmoBoxData(0, 50)), - InternalSlot(429, PlanetSideGUID(6695), 378, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(272, PlanetSideGUID(6842), 0, DetailedAmmoBoxData(0, 35)))) - ), - InternalSlot(462, PlanetSideGUID(8304), 420, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(7089), 0, DetailedAmmoBoxData(0, 150)))) - ), - InternalSlot(462, PlanetSideGUID(3346), 429, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(7557), 0, DetailedAmmoBoxData(0, 150)))) - ), - InternalSlot(272, PlanetSideGUID(7515), 447, DetailedAmmoBoxData(0, 50)), - InternalSlot(462, PlanetSideGUID(4622), 510, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(6996), 0, DetailedAmmoBoxData(0, 150)))) - ), - InternalSlot(462, PlanetSideGUID(6586), 519, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(463, PlanetSideGUID(6870), 0, DetailedAmmoBoxData(0, 150)))) - ), - InternalSlot(556, PlanetSideGUID(4806), 528, - DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, None, None, PlanetSideGUID(0)), 0, List(InternalSlot(28, PlanetSideGUID(8798), 0, DetailedAmmoBoxData(0, 100)))) - ), - InternalSlot(272, PlanetSideGUID(8429), 537, DetailedAmmoBoxData(0, 50)) - )) - )) - ), - InternalSlot(28, PlanetSideGUID(10018), 6, DetailedAmmoBoxData(8, 50)), - InternalSlot(28, PlanetSideGUID(5612), 9, DetailedAmmoBoxData(8, 50)), - InternalSlot(28, PlanetSideGUID(5128), 12, DetailedAmmoBoxData(8, 50)), - InternalSlot(29, PlanetSideGUID(8363), 33, DetailedAmmoBoxData(8, 50)), - InternalSlot(755, PlanetSideGUID(4090), 36, DetailedAmmoBoxData(8, 16)), - InternalSlot(728, PlanetSideGUID(10075), 39, DetailedREKData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), 24)) - )) + 24 + ) + ) + ) + ) val obj = DetailedPlayerData.apply(pos, app, char, inv, DrawnSlot.None) val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj) @@ -3025,12 +4520,12 @@ class DetailedCharacterDataTest extends Specification { } "encode (xRider912)" in { - val pos : PlacementData = PlacementData( + val pos: PlacementData = PlacementData( Vector3(3577.1797f, 2712.25f, 35.78125f), Vector3.z(50.625f), None ) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "xRider912", PlanetSideEmpire.TR, @@ -3058,7 +4553,7 @@ class DetailedCharacterDataTest extends Specification { 0 ) - val ab : (Boolean, Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 16507L, "Hooked On Insanity", 5, @@ -3067,7 +4562,8 @@ class DetailedCharacterDataTest extends Specification { false, false, false, - 0, 0, + 0, + 0, false, GrenadeState.None, false, @@ -3078,8 +4574,9 @@ class DetailedCharacterDataTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars( MeritCommendation.EmeraldVeteran, MeritCommendation.ScavengerTR1, @@ -3088,15 +4585,19 @@ class DetailedCharacterDataTest extends Specification { ) ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 1784200L, 53490L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 50, 32831, - 100, 100, + 100, + 100, None, 0, 6, @@ -3117,14 +4618,15 @@ class DetailedCharacterDataTest extends Specification { CertificationType.Engineering ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( Some(21236), List( ImplantEntry(ImplantType.Surge, Some(94), false), ImplantEntry(ImplantType.Targeting, Some(91), false), ImplantEntry(ImplantType.DarklightVision, Some(91), false) ), - List(), List(), + List(), + List(), List( "xpe_command_rank_2", "xpe_join_platoon", @@ -3344,50 +4846,901 @@ class DetailedCharacterDataTest extends Specification { 0, None, List( - 9, 16, 17, 69, 107, 108, 114, 115, 134, 171, 178, 196, - 199, 222, 229, 283, 297, 347, 360, 391, 399, 421 + 9, 16, 17, 69, 107, 108, 114, 115, 134, 171, 178, 196, 199, 222, 229, 283, 297, 347, 360, 391, 399, 421 ), List(), false, None ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) - val inv : InventoryData = InventoryData(List( - InternalSlot(730,PlanetSideGUID(3465),0,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.TR,false,false,true,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(28,PlanetSideGUID(3722),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),20))),false)), - InternalSlot(845,PlanetSideGUID(4929),2,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.TR,false,false,true,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(28,PlanetSideGUID(4736),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),25))),false)), - InternalSlot(175,PlanetSideGUID(3332),4,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.TR,false,false,true,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(540,PlanetSideGUID(3778),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),1))),false)), - InternalSlot(456,PlanetSideGUID(5302),5,DetailedLockerContainerData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),Some(InventoryData(List( - InternalSlot(714,PlanetSideGUID(2628),0,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(5819),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(714,PlanetSideGUID(2433),9,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(3627),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(714,PlanetSideGUID(3916),18,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(3069),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(324,PlanetSideGUID(5514),29,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(540,PlanetSideGUID(4940),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),1))),false)), - InternalSlot(462,PlanetSideGUID(2669),90,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(2277),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(462,PlanetSideGUID(5365),99,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(5604),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(714,PlanetSideGUID(5884),108,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(5765),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(462,PlanetSideGUID(5137),180,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(3016),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(462,PlanetSideGUID(4475),189,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(4237),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(462,PlanetSideGUID(3841),198,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(5485),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(462,PlanetSideGUID(4075),270,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(4451),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(462,PlanetSideGUID(4620),279,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(463,PlanetSideGUID(2357),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),150))),false)), - InternalSlot(714,PlanetSideGUID(3175),288,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(5363),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(714,PlanetSideGUID(5391),369,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(2801),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(714,PlanetSideGUID(4384),378,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(3584),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),16))),false)), - InternalSlot(577,PlanetSideGUID(2294),459,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(111,PlanetSideGUID(5454),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),78))),false)), - InternalSlot(714,PlanetSideGUID(5111),465,DetailedWeaponData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),0,List(InternalSlot(755,PlanetSideGUID(5068),0,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,false,None,false,None,None,PlanetSideGUID(0)),15))),false)) - ))))), - InternalSlot(28,PlanetSideGUID(4386),6,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),50)), - InternalSlot(28,PlanetSideGUID(3548),9,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),50)), - InternalSlot(28,PlanetSideGUID(4103),12,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),50)), - InternalSlot(28,PlanetSideGUID(5179),33,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),50)), - InternalSlot(29,PlanetSideGUID(3733),36,DetailedAmmoBoxData(CommonFieldData(PlanetSideEmpire.NEUTRAL,false,false,true,None,false,None,None,PlanetSideGUID(0)),50)), - InternalSlot(728,PlanetSideGUID(4731),39,DetailedREKData(CommonFieldData(PlanetSideEmpire.TR,false,false,true,None,false,Some(false),None,PlanetSideGUID(0)),16)) - )) + val inv: InventoryData = InventoryData( + List( + InternalSlot( + 730, + PlanetSideGUID(3465), + 0, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List( + InternalSlot( + 28, + PlanetSideGUID(3722), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 20 + ) + ) + ), + false + ) + ), + InternalSlot( + 845, + PlanetSideGUID(4929), + 2, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List( + InternalSlot( + 28, + PlanetSideGUID(4736), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 25 + ) + ) + ), + false + ) + ), + InternalSlot( + 175, + PlanetSideGUID(3332), + 4, + DetailedWeaponData( + CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 0, + List( + InternalSlot( + 540, + PlanetSideGUID(3778), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 1 + ) + ) + ), + false + ) + ), + InternalSlot( + 456, + PlanetSideGUID(5302), + 5, + DetailedLockerContainerData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + Some( + InventoryData( + List( + InternalSlot( + 714, + PlanetSideGUID(2628), + 0, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(5819), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(2433), + 9, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(3627), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(3916), + 18, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(3069), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 324, + PlanetSideGUID(5514), + 29, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 540, + PlanetSideGUID(4940), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 1 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(2669), + 90, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(2277), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(5365), + 99, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(5604), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(5884), + 108, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(5765), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(5137), + 180, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(3016), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(4475), + 189, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(4237), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(3841), + 198, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(5485), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(4075), + 270, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(4451), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 462, + PlanetSideGUID(4620), + 279, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 463, + PlanetSideGUID(2357), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 150 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(3175), + 288, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(5363), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(5391), + 369, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(2801), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(4384), + 378, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(3584), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ), + false + ) + ), + InternalSlot( + 577, + PlanetSideGUID(2294), + 459, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 111, + PlanetSideGUID(5454), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 78 + ) + ) + ), + false + ) + ), + InternalSlot( + 714, + PlanetSideGUID(5111), + 465, + DetailedWeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + 755, + PlanetSideGUID(5068), + 0, + DetailedAmmoBoxData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 15 + ) + ) + ), + false + ) + ) + ) + ) + ) + ) + ), + InternalSlot( + 28, + PlanetSideGUID(4386), + 6, + DetailedAmmoBoxData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 50 + ) + ), + InternalSlot( + 28, + PlanetSideGUID(3548), + 9, + DetailedAmmoBoxData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 50 + ) + ), + InternalSlot( + 28, + PlanetSideGUID(4103), + 12, + DetailedAmmoBoxData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 50 + ) + ), + InternalSlot( + 28, + PlanetSideGUID(5179), + 33, + DetailedAmmoBoxData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 50 + ) + ), + InternalSlot( + 29, + PlanetSideGUID(3733), + 36, + DetailedAmmoBoxData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + 50 + ) + ), + InternalSlot( + 728, + PlanetSideGUID(4731), + 39, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.TR, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ), + 16 + ) + ) + ) + ) val obj = DetailedPlayerData.apply(pos, app, char, inv, DrawnSlot.None) - val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(3390), obj) - val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + val msg = ObjectCreateDetailedMessage(0x79, PlanetSideGUID(3390), obj) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector val pkt_bitv = pkt.toBitVector val ori_bitv = string_xrider912.toBitVector pkt_bitv.take(140) mustEqual ori_bitv.take(140) //skip 1; this is the highest bit of PlacementData::Orientation::z diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedCommandDetonaterDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedCommandDetonaterDataTest.scala index b0ecf1e5..6fa78c7e 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedCommandDetonaterDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedCommandDetonaterDataTest.scala @@ -43,8 +43,15 @@ class DetailedCommandDetonaterDataTest extends Specification { } "encode" in { - val obj = DetailedCommandDetonaterData(CommonFieldData(PlanetSideEmpire.VS, false, false, false, None, false, None, None, PlanetSideGUID(0))) - val msg = ObjectCreateDetailedMessage(ObjectClass.command_detonater, PlanetSideGUID(8308), ObjectCreateMessageParent(PlanetSideGUID(3530), 0), obj) + val obj = DetailedCommandDetonaterData( + CommonFieldData(PlanetSideEmpire.VS, false, false, false, None, false, None, None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateDetailedMessage( + ObjectClass.command_detonater, + PlanetSideGUID(8308), + ObjectCreateMessageParent(PlanetSideGUID(3530), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_detonater } diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedConstructionToolDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedConstructionToolDataTest.scala index 53e0d3f3..56b07814 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedConstructionToolDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedConstructionToolDataTest.scala @@ -9,10 +9,10 @@ import org.specs2.mutable._ import scodec.bits._ class DetailedConstructionToolDataTest extends Specification { - val string_ace = hex"18 87000000 1006 100 C70B 80 8800000200008" + val string_ace = hex"18 87000000 1006 100 C70B 80 8800000200008" val string_boomer_trigger = hex"18 87000000 6304CA8760B 80 C800000200008" - val string_telepad = hex"18 97000000 4f00 f3a e301 80 4a680400000200008" - val string_telepad_short = hex"18 87000000 2a00 f3a 5d01 89 8000000200008" + val string_telepad = hex"18 97000000 4f00 f3a e301 80 4a680400000200008" + val string_telepad_short = hex"18 87000000 2a00 f3a 5d01 89 8000000200008" "ACE (detailed)" should { "decode" in { @@ -47,7 +47,12 @@ class DetailedConstructionToolDataTest extends Specification { val obj = DetailedConstructionToolData( CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, None, None, PlanetSideGUID(0)) ) - val msg = ObjectCreateDetailedMessage(ObjectClass.ace, PlanetSideGUID(3015), ObjectCreateMessageParent(PlanetSideGUID(3104), 0), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.ace, + PlanetSideGUID(3015), + ObjectCreateMessageParent(PlanetSideGUID(3104), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_ace @@ -87,7 +92,12 @@ class DetailedConstructionToolDataTest extends Specification { val obj = DetailedConstructionToolData( CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)) ) - val msg = ObjectCreateDetailedMessage(ObjectClass.boomer_trigger, PlanetSideGUID(2934), ObjectCreateMessageParent(PlanetSideGUID(2502), 0), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.boomer_trigger, + PlanetSideGUID(2934), + ObjectCreateMessageParent(PlanetSideGUID(2502), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_boomer_trigger @@ -155,7 +165,12 @@ class DetailedConstructionToolDataTest extends Specification { val obj = DetailedConstructionToolData( CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, Some(564), PlanetSideGUID(0)) ) - val msg = ObjectCreateDetailedMessage(ObjectClass.router_telepad, PlanetSideGUID(483), ObjectCreateMessageParent(PlanetSideGUID(414), 0), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.router_telepad, + PlanetSideGUID(483), + ObjectCreateMessageParent(PlanetSideGUID(414), 0), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_telepad @@ -163,7 +178,12 @@ class DetailedConstructionToolDataTest extends Specification { "encode (short)" in { val obj = DetailedConstructionToolData(CommonFieldData(PlanetSideEmpire.VS)) - val msg = ObjectCreateDetailedMessage(ObjectClass.router_telepad, PlanetSideGUID(349), ObjectCreateMessageParent(PlanetSideGUID(340), 9), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.router_telepad, + PlanetSideGUID(349), + ObjectCreateMessageParent(PlanetSideGUID(340), 9), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_telepad_short diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedREKDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedREKDataTest.scala index 53963f3a..856fe4e6 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedREKDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedREKDataTest.scala @@ -42,8 +42,15 @@ class DetailedREKDataTest extends Specification { } "encode" in { - val obj = DetailedREKData(CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, Some(false), None, PlanetSideGUID(0))) - val msg = ObjectCreateDetailedMessage(ObjectClass.remote_electronics_kit, PlanetSideGUID(1439), ObjectCreateMessageParent(PlanetSideGUID(75), 1), obj) + val obj = DetailedREKData( + CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)) + ) + val msg = ObjectCreateDetailedMessage( + ObjectClass.remote_electronics_kit, + PlanetSideGUID(1439), + ObjectCreateMessageParent(PlanetSideGUID(75), 1), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_rek diff --git a/common/src/test/scala/game/objectcreatedetailed/DetailedWeaponDataTest.scala b/common/src/test/scala/game/objectcreatedetailed/DetailedWeaponDataTest.scala index 048ea3c0..79d35e0f 100644 --- a/common/src/test/scala/game/objectcreatedetailed/DetailedWeaponDataTest.scala +++ b/common/src/test/scala/game/objectcreatedetailed/DetailedWeaponDataTest.scala @@ -9,7 +9,7 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID} import scodec.bits._ class DetailedWeaponDataTest extends Specification { - val string_gauss = hex"18 DC000000 2580 2C9 B905 82 480000020000C04 1C00C0B0190000078000" + val string_gauss = hex"18 DC000000 2580 2C9 B905 82 480000020000C04 1C00C0B0190000078000" val string_punisher = hex"18 27010000 2580 612 a706 82 080000020000c08 1c13a0d01900000780 13a4701a072000000800" "DetailedWeaponData" should { @@ -105,7 +105,12 @@ class DetailedWeaponDataTest extends Specification { 0, List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(1286), 0, DetailedAmmoBoxData(8, 30))) ) - val msg = ObjectCreateDetailedMessage(ObjectClass.gauss, PlanetSideGUID(1465), ObjectCreateMessageParent(PlanetSideGUID(75), 2), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.gauss, + PlanetSideGUID(1465), + ObjectCreateMessageParent(PlanetSideGUID(75), 2), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_gauss @@ -130,7 +135,12 @@ class DetailedWeaponDataTest extends Specification { DetailedAmmoBoxData(ObjectClass.jammer_cartridge, PlanetSideGUID(1564), 1, DetailedAmmoBoxData(8, 1)) ) ) - val msg = ObjectCreateDetailedMessage(ObjectClass.punisher, PlanetSideGUID(1703), ObjectCreateMessageParent(PlanetSideGUID(75), 2), obj) + val msg = ObjectCreateDetailedMessage( + ObjectClass.punisher, + PlanetSideGUID(1703), + ObjectCreateMessageParent(PlanetSideGUID(75), 2), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_punisher diff --git a/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala index ece00f39..9781baf1 100644 --- a/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/MountedVehiclesTest.scala @@ -24,7 +24,7 @@ class MountedVehiclesTest extends Specification { guid mustEqual PlanetSideGUID(4308) parent.isEmpty mustEqual true data match { - case vdata : VehicleData => + case vdata: VehicleData => vdata.pos.coord mustEqual Vector3(4571.6875f, 5602.1875f, 93) vdata.pos.orient mustEqual Vector3(11.25f, 2.8125f, 92.8125f) vdata.pos.vel.contains(Vector3(31.71875f, 8.875f, -0.03125f)) mustEqual true @@ -53,7 +53,13 @@ class MountedVehiclesTest extends Specification { case PlayerData(None, app, char, Some(InventoryData(inv)), DrawnSlot.None) => app match { case CharacterAppearanceData(a, b, ribbons) => - a.app mustEqual BasicCharacterData("ScrawnyRonnie", PlanetSideEmpire.TR, CharacterGender.Male, 5, CharacterVoice.Voice5) + a.app mustEqual BasicCharacterData( + "ScrawnyRonnie", + PlanetSideEmpire.TR, + CharacterGender.Male, + 5, + CharacterVoice.Voice5 + ) a.data.bops mustEqual false a.data.v1 mustEqual false a.data.v2.isEmpty mustEqual true @@ -131,7 +137,7 @@ class MountedVehiclesTest extends Specification { } "encode (Scrawny Ronnie's mosquito)" in { - val a : Int=>CharacterAppearanceA = CharacterAppearanceA( + val a: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "ScrawnyRonnie", PlanetSideEmpire.TR, @@ -158,7 +164,7 @@ class MountedVehiclesTest extends Specification { 0, 0 ) - val b : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val b: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 316554L, "Black Beret Armoured Corps", 23, @@ -167,7 +173,8 @@ class MountedVehiclesTest extends Specification { false, false, false, - -11.25f, 0, + -11.25f, + 0, false, GrenadeState.None, false, @@ -178,8 +185,9 @@ class MountedVehiclesTest extends Specification { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - a, b, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + a, + b, RibbonBars( MeritCommendation.MarkovVeteran, MeritCommendation.HeavyInfantry4, @@ -187,31 +195,66 @@ class MountedVehiclesTest extends Specification { MeritCommendation.SixYearTR ) ) - val char : (Boolean,Boolean)=>CharacterData = CharacterData( - 100, 0, + val char: (Boolean, Boolean) => CharacterData = CharacterData( + 100, + 0, UniformStyle.ThirdUpgrade, 7, 5, Nil, Some(Cosmetics(true, true, true, true, false)) ) - val inv : InventoryData = InventoryData( + val inv: InventoryData = InventoryData( List( - InternalSlot(ObjectClass.medicalapplicator, PlanetSideGUID(4201), 0, - WeaponData(CommonFieldData(PlanetSideEmpire.TR), 0, List(InternalSlot(ObjectClass.health_canister, PlanetSideGUID(3472), 0, CommonFieldData()(false)))) + InternalSlot( + ObjectClass.medicalapplicator, + PlanetSideGUID(4201), + 0, + WeaponData( + CommonFieldData(PlanetSideEmpire.TR), + 0, + List(InternalSlot(ObjectClass.health_canister, PlanetSideGUID(3472), 0, CommonFieldData()(false))) + ) ), - InternalSlot(ObjectClass.bank, PlanetSideGUID(2952), 1, - WeaponData(CommonFieldData(PlanetSideEmpire.TR), 0, List(InternalSlot(ObjectClass.armor_canister, PlanetSideGUID(3758), 0, CommonFieldData()(false)))) + InternalSlot( + ObjectClass.bank, + PlanetSideGUID(2952), + 1, + WeaponData( + CommonFieldData(PlanetSideEmpire.TR), + 0, + List(InternalSlot(ObjectClass.armor_canister, PlanetSideGUID(3758), 0, CommonFieldData()(false))) + ) ), - InternalSlot(ObjectClass.mini_chaingun, PlanetSideGUID(2929), 2, - WeaponData(CommonFieldData(PlanetSideEmpire.TR), 0, List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(3292), 0, CommonFieldData()(false)))) + InternalSlot( + ObjectClass.mini_chaingun, + PlanetSideGUID(2929), + 2, + WeaponData( + CommonFieldData(PlanetSideEmpire.TR), + 0, + List(InternalSlot(ObjectClass.bullet_9mm, PlanetSideGUID(3292), 0, CommonFieldData()(false))) + ) ), - InternalSlot(ObjectClass.chainblade, PlanetSideGUID(3222), 4, - WeaponData(CommonFieldData(PlanetSideEmpire.TR), 0, List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(3100), 0, CommonFieldData()(false)))) + InternalSlot( + ObjectClass.chainblade, + PlanetSideGUID(3222), + 4, + WeaponData( + CommonFieldData(PlanetSideEmpire.TR), + 0, + List(InternalSlot(ObjectClass.melee_ammo, PlanetSideGUID(3100), 0, CommonFieldData()(false))) + ) ) ) ) - val player = VehicleData.PlayerData(app, char, inv, DrawnSlot.None, VehicleData.InitialStreamLengthToSeatEntries(true, VehicleFormat.Variant)) + val player = VehicleData.PlayerData( + app, + char, + inv, + DrawnSlot.None, + VehicleData.InitialStreamLengthToSeatEntries(true, VehicleFormat.Variant) + ) val obj = VehicleData( PlacementData( Vector3(4571.6875f, 5602.1875f, 93), @@ -221,16 +264,26 @@ class MountedVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, Some(false), None, PlanetSideGUID(3776)), false, 255, - false, false, + false, + false, DriveState.Mobile, - false, false, false, + false, + false, + false, Some(VariantVehicleData(7)), Some( InventoryData( List( InternalSlot(ObjectClass.avatar, PlanetSideGUID(3776), 0, player), - InternalSlot(ObjectClass.rotarychaingun_mosquito, PlanetSideGUID(3602), 1, - WeaponData(CommonFieldData(), 0, List(InternalSlot(ObjectClass.bullet_12mm, PlanetSideGUID(3538), 0, CommonFieldData()(false)))) + InternalSlot( + ObjectClass.rotarychaingun_mosquito, + PlanetSideGUID(3602), + 1, + WeaponData( + CommonFieldData(), + 0, + List(InternalSlot(ObjectClass.bullet_12mm, PlanetSideGUID(3538), 0, CommonFieldData()(false))) + ) ) ) ) @@ -241,4 +294,3 @@ class MountedVehiclesTest extends Specification { pkt mustEqual string_mosquito_seated } } - diff --git a/common/src/test/scala/game/objectcreatevehicle/NonstandardVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/NonstandardVehiclesTest.scala index 5c191169..03b538bb 100644 --- a/common/src/test/scala/game/objectcreatevehicle/NonstandardVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/NonstandardVehiclesTest.scala @@ -9,7 +9,7 @@ import org.specs2.mutable._ import scodec.bits._ class NonstandardVehiclesTest extends Specification { - val string_droppod = hex"17 C1000000 8110B0E00FA9000ACFFFF000000 4400007F83C0900" + val string_droppod = hex"17 C1000000 8110B0E00FA9000ACFFFF000000 4400007F83C0900" val string_orbital_shuttle_1 = hex"17 82000000 0901B026904838000001FE0700" val string_orbital_shuttle_2 = hex"17 C3000000 B02670402F5AA14F88C210000604000007F8FF03C0" @@ -99,7 +99,12 @@ class NonstandardVehiclesTest extends Specification { "encode (shuttle 1)" in { val obj = OrbitalShuttleData(PlanetSideEmpire.VS) - val msg = ObjectCreateMessage(ObjectClass.orbital_shuttle, PlanetSideGUID(1129), ObjectCreateMessageParent(PlanetSideGUID(786), 3), obj) + val msg = ObjectCreateMessage( + ObjectClass.orbital_shuttle, + PlanetSideGUID(1129), + ObjectCreateMessageParent(PlanetSideGUID(786), 3), + obj + ) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string_orbital_shuttle_1 diff --git a/common/src/test/scala/game/objectcreatevehicle/NormalVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/NormalVehiclesTest.scala index 7695a2bb..560b4e6d 100644 --- a/common/src/test/scala/game/objectcreatevehicle/NormalVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/NormalVehiclesTest.scala @@ -9,9 +9,12 @@ import org.specs2.mutable._ import scodec.bits._ class NormalVehiclesTest extends Specification { - val string_fury = hex"17 50010000 A79 9D01 FBC1C 12A83 2F06 00 00 21 4400003FC00101140C800C0E40000004048F3600301900000" - val string_lightning = hex"17 8b010000 df1 5a00 6c2d7 65535 ca16 00 00 00 4400003fc00101300ad8040c4000000408190b801018000002617402070000000" - val string_mediumtransport = hex"17 DA010000 8A2 8301 FBC1C 12A83 2F06 00 00 21 2400003FC079020593F80C2E400000040410148030190000017458050D90000001010401F814064000000" + val string_fury = + hex"17 50010000 A79 9D01 FBC1C 12A83 2F06 00 00 21 4400003FC00101140C800C0E40000004048F3600301900000" + val string_lightning = + hex"17 8b010000 df1 5a00 6c2d7 65535 ca16 00 00 00 4400003fc00101300ad8040c4000000408190b801018000002617402070000000" + val string_mediumtransport = + hex"17 DA010000 8A2 8301 FBC1C 12A83 2F06 00 00 21 2400003FC079020593F80C2E400000040410148030190000017458050D90000001010401F814064000000" "Normal vehicles" should { "decode (fury)" in { @@ -23,7 +26,7 @@ class NormalVehiclesTest extends Specification { parent.isDefined mustEqual false data.isInstanceOf[VehicleData] mustEqual true val fury = data.asInstanceOf[VehicleData] - fury.pos.coord mustEqual Vector3(6531.961f, 1872.1406f,24.734375f) + fury.pos.coord mustEqual Vector3(6531.961f, 1872.1406f, 24.734375f) fury.pos.orient mustEqual Vector3(0, 0, 357.1875f) fury.pos.vel.isEmpty mustEqual true fury.data.faction mustEqual PlanetSideEmpire.VS @@ -39,7 +42,12 @@ class NormalVehiclesTest extends Specification { mounting.parentSlot mustEqual 1 mounting.obj.isInstanceOf[WeaponData] mustEqual true mounting.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, ammo, _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + ammo, + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -101,7 +109,12 @@ class NormalVehiclesTest extends Specification { mounting.guid mustEqual PlanetSideGUID(91) mounting.parentSlot mustEqual 1 mounting.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, ammo, _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + ammo, + _ + ) => wfaction mustEqual PlanetSideEmpire.VS wbops mustEqual false walternate mustEqual false @@ -166,7 +179,20 @@ class NormalVehiclesTest extends Specification { guid mustEqual PlanetSideGUID(387) parent.isDefined mustEqual false data match { - case VehicleData(pos, vdata, unk3, health, unk4, _, driveState, unk5, unk6, _, format, Some(InventoryData(inv))) => + case VehicleData( + pos, + vdata, + unk3, + health, + unk4, + _, + driveState, + unk5, + unk6, + _, + format, + Some(InventoryData(inv)) + ) => pos.coord mustEqual Vector3(6531.961f, 1872.1406f, 24.734375f) pos.orient mustEqual Vector3.z(357.1875f) @@ -189,7 +215,12 @@ class NormalVehiclesTest extends Specification { inv.head.guid mustEqual PlanetSideGUID(383) inv.head.parentSlot mustEqual 5 inv.head.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -227,7 +258,12 @@ class NormalVehiclesTest extends Specification { inv(1).guid mustEqual PlanetSideGUID(556) inv(1).parentSlot mustEqual 6 inv(1).obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, List(ammo), _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + List(ammo), + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -274,23 +310,36 @@ class NormalVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), false, 255, - false, false, + false, + false, DriveState.Mobile, - false, false, false, + false, + false, + false, None, - Some(InventoryData(List( - InventoryItemData(ObjectClass.fury_weapon_systema, PlanetSideGUID(400), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), - 0, - List( - InternalSlot(ObjectClass.hellfire_ammo, PlanetSideGUID(432), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + Some( + InventoryData( + List( + InventoryItemData( + ObjectClass.fury_weapon_systema, + PlanetSideGUID(400), + 1, + WeaponData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + 0, + List( + InternalSlot( + ObjectClass.hellfire_ammo, + PlanetSideGUID(432), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) ) ) ) ) - ))) + ) )(VehicleFormat.Normal) val msg = ObjectCreateMessage(ObjectClass.fury, PlanetSideGUID(413), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector @@ -304,22 +353,32 @@ class NormalVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), false, 255, - false, false, + false, + false, DriveState.Mobile, - false, false, false, + false, + false, + false, None, - Some(InventoryData(List( - InventoryItemData(ObjectClass.lightning_weapon_system, PlanetSideGUID(91), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.VS, 2), - 0, - List( - InternalSlot(ObjectClass.bullet_75mm, PlanetSideGUID(92), 0, CommonFieldData()(false)), - InternalSlot(ObjectClass.bullet_25mm, PlanetSideGUID(93), 1, CommonFieldData()(false)) + Some( + InventoryData( + List( + InventoryItemData( + ObjectClass.lightning_weapon_system, + PlanetSideGUID(91), + 1, + WeaponData( + CommonFieldData(PlanetSideEmpire.VS, 2), + 0, + List( + InternalSlot(ObjectClass.bullet_75mm, PlanetSideGUID(92), 0, CommonFieldData()(false)), + InternalSlot(ObjectClass.bullet_25mm, PlanetSideGUID(93), 1, CommonFieldData()(false)) + ) + ) ) ) ) - ))) + ) )(VehicleFormat.Normal) val msg = ObjectCreateMessage(ObjectClass.lightning, PlanetSideGUID(90), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector @@ -333,34 +392,53 @@ class NormalVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), false, 255, - false, false, + false, + false, DriveState.State7, - true, false, false, + true, + false, + false, None, - Some(InventoryData(List( - InventoryItemData(ObjectClass.mediumtransport_weapon_systemA, PlanetSideGUID(383), 5, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), - 0, - List( - InternalSlot(ObjectClass.bullet_20mm, PlanetSideGUID(420), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + Some( + InventoryData( + List( + InventoryItemData( + ObjectClass.mediumtransport_weapon_systemA, + PlanetSideGUID(383), + 5, + WeaponData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + 0, + List( + InternalSlot( + ObjectClass.bullet_20mm, + PlanetSideGUID(420), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) ) - ) - ) - ), - InventoryItemData(ObjectClass.mediumtransport_weapon_systemB, PlanetSideGUID(556), 6, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), - 0, - List( - InternalSlot(ObjectClass.bullet_20mm, PlanetSideGUID(575), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ), + InventoryItemData( + ObjectClass.mediumtransport_weapon_systemB, + PlanetSideGUID(556), + 6, + WeaponData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2), + 0, + List( + InternalSlot( + ObjectClass.bullet_20mm, + PlanetSideGUID(575), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) ) ) ) ) - ))) + ) )(VehicleFormat.Normal) val msg = ObjectCreateMessage(ObjectClass.mediumtransport, PlanetSideGUID(387), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreatevehicle/UtilityVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/UtilityVehiclesTest.scala index 2ae36f14..569f71ba 100644 --- a/common/src/test/scala/game/objectcreatevehicle/UtilityVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/UtilityVehiclesTest.scala @@ -9,8 +9,9 @@ import org.specs2.mutable._ import scodec.bits._ class UtilityVehiclesTest extends Specification { - val string_ant = hex"17 C2000000 9E0 7C01 6C2D7 65535 CA16 00 00 00 4400003FC000000" - val string_ams = hex"17 B8010000 970 3D10 002D765535CA16000000 402285BB0037E4100749E1D03000000620D83A0A00000195798741C00000332E40D84800000" + val string_ant = hex"17 C2000000 9E0 7C01 6C2D7 65535 CA16 00 00 00 4400003FC000000" + val string_ams = + hex"17 B8010000 970 3D10 002D765535CA16000000 402285BB0037E4100749E1D03000000620D83A0A00000195798741C00000332E40D84800000" // val string_ams_seated = // hex"17ec060000970fe0f030898abda28127f007ff9c1f2f80c0001e18ff00001051e40786400000008c50004c0041006d0069006e006700790075006500540052007c00000304217c859e8080000000000000002503420022c02a002a002a002a0050004c0041002a002a002a002a00010027e300940000016c0400023c040002285a086c2f00c80000000000300210288740800000004046f17423018000002c4d6190400000001010704a86406000002bc770842000000004041c5f21d01800000e075821902000000623e84208000001950588c1800000332ea0f840000000" @@ -100,9 +101,12 @@ class UtilityVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), false, 255, - false, false, + false, + false, DriveState.Mobile, - false, false, false, + false, + false, + false, Some(UtilityVehicleData(0)), None )(VehicleFormat.Utility) @@ -113,21 +117,48 @@ class UtilityVehiclesTest extends Specification { } "encode (ams)" in { - val obj = VehicleData( + val obj = VehicleData( PlacementData(3674.0f, 2726.789f, 91.15625f, 0f, 0f, 90.0f), CommonFieldData(PlanetSideEmpire.VS, false, false, false, None, false, Some(false), None, PlanetSideGUID(2885)), false, 236, - false, false, + false, + false, DriveState.Deployed, - false, true, true, + false, + true, + true, Some(UtilityVehicleData(60)), //what does this mean? - Some(InventoryData(List( - InternalSlot(ObjectClass.matrix_terminalc, PlanetSideGUID(3663), 1, CommonFieldData(PlanetSideEmpire.VS)(false)), - InternalSlot(ObjectClass.ams_respawn_tube, PlanetSideGUID(3638), 2, CommonFieldData(PlanetSideEmpire.VS)(false)), - InternalSlot(ObjectClass.order_terminala, PlanetSideGUID(3827), 3, CommonFieldData(PlanetSideEmpire.VS)(false)), - InternalSlot(ObjectClass.order_terminalb, PlanetSideGUID(3556), 4, CommonFieldData(PlanetSideEmpire.VS)(false)) - ))) + Some( + InventoryData( + List( + InternalSlot( + ObjectClass.matrix_terminalc, + PlanetSideGUID(3663), + 1, + CommonFieldData(PlanetSideEmpire.VS)(false) + ), + InternalSlot( + ObjectClass.ams_respawn_tube, + PlanetSideGUID(3638), + 2, + CommonFieldData(PlanetSideEmpire.VS)(false) + ), + InternalSlot( + ObjectClass.order_terminala, + PlanetSideGUID(3827), + 3, + CommonFieldData(PlanetSideEmpire.VS)(false) + ), + InternalSlot( + ObjectClass.order_terminalb, + PlanetSideGUID(3556), + 4, + CommonFieldData(PlanetSideEmpire.VS)(false) + ) + ) + ) + ) )(VehicleFormat.Utility) val msg = ObjectCreateMessage(ObjectClass.ams, PlanetSideGUID(4157), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/game/objectcreatevehicle/VariantVehiclesTest.scala b/common/src/test/scala/game/objectcreatevehicle/VariantVehiclesTest.scala index 70dd9253..a418385a 100644 --- a/common/src/test/scala/game/objectcreatevehicle/VariantVehiclesTest.scala +++ b/common/src/test/scala/game/objectcreatevehicle/VariantVehiclesTest.scala @@ -9,7 +9,8 @@ import org.specs2.mutable._ import scodec.bits._ class VariantVehiclesTest extends Specification { - val string_switchblade = hex"17 93010000 A7B A201 FBC1C12A832F06000021 4400003FC00001013AD3180C0E4000000408330DC03019000006620406072000000" + val string_switchblade = + hex"17 93010000 A7B A201 FBC1C12A832F06000021 4400003FC00001013AD3180C0E4000000408330DC03019000006620406072000000" "Variant vehicles" should { "decode (switchblade)" in { @@ -39,7 +40,12 @@ class VariantVehiclesTest extends Specification { weapon.guid mustEqual PlanetSideGUID(355) weapon.parentSlot mustEqual 1 weapon.obj match { - case WeaponData(CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), fmode, ammo, _) => + case WeaponData( + CommonFieldData(wfaction, wbops, walternate, wv1, wv2, wv3, wv4, wv5, wfguid), + fmode, + ammo, + _ + ) => wfaction mustEqual PlanetSideEmpire.NEUTRAL wbops mustEqual false walternate mustEqual false @@ -102,22 +108,52 @@ class VariantVehiclesTest extends Specification { CommonFieldData(PlanetSideEmpire.VS, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)), false, 255, - false, false, + false, + false, DriveState.Mobile, - false, false, false, + false, + false, + false, Some(VariantVehicleData(0)), - Some(InventoryData(List( - InventoryItemData(ObjectClass.scythe, PlanetSideGUID(355), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List( - InternalSlot(ObjectClass.ancient_ammo_vehicle, PlanetSideGUID(366), 0, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)), - InternalSlot(ObjectClass.ancient_ammo_vehicle, PlanetSideGUID(385), 1, CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false)) + Some( + InventoryData( + List( + InventoryItemData( + ObjectClass.scythe, + PlanetSideGUID(355), + 1, + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + ObjectClass.ancient_ammo_vehicle, + PlanetSideGUID(366), + 0, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ), + InternalSlot( + ObjectClass.ancient_ammo_vehicle, + PlanetSideGUID(385), + 1, + CommonFieldData(PlanetSideEmpire.NEUTRAL, 2)(false) + ) + ) + ) ) ) ) - ))) + ) )(VehicleFormat.Variant) val msg = ObjectCreateMessage(ObjectClass.switchblade, PlanetSideGUID(418), obj) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector diff --git a/common/src/test/scala/objects/AvatarTest.scala b/common/src/test/scala/objects/AvatarTest.scala index 6c0ff545..ab411381 100644 --- a/common/src/test/scala/objects/AvatarTest.scala +++ b/common/src/test/scala/objects/AvatarTest.scala @@ -9,10 +9,9 @@ import net.psforever.types.{CharacterGender, CharacterVoice, ImplantType, Planet import org.specs2.mutable._ class AvatarTest extends Specification { - def CreatePlayer() : (Player, Avatar) = { + def CreatePlayer(): (Player, Avatar) = { val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) - val - player = Player(avatar) + val player = Player(avatar) player.Slot(0).Equipment = Tool(beamer) player.Slot(2).Equipment = Tool(suppressor) player.Slot(4).Equipment = Tool(forceblade) @@ -139,11 +138,11 @@ class AvatarTest extends Specification { } "can install an implant" in { - val testplant : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant: ImplantDefinition = ImplantDefinition(1) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.InstallImplant(testplant).contains(0) mustEqual true - obj.Implants.find({p => p.Implant == ImplantType(1)}) match { //find the installed implant + obj.Implants.find({ p => p.Implant == ImplantType(1) }) match { //find the installed implant case Some(slot) => slot.Installed.contains(testplant) mustEqual true case _ => @@ -153,9 +152,9 @@ class AvatarTest extends Specification { } "can install implants in sequential slots" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -164,9 +163,9 @@ class AvatarTest extends Specification { } "can not install the same type of implant twice" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(1) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -175,10 +174,10 @@ class AvatarTest extends Specification { } "can not install more implants than slots available (two unlocked)" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val testplant3: ImplantDefinition = ImplantDefinition(3) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true @@ -188,11 +187,11 @@ class AvatarTest extends Specification { } "can not install more implants than slots available (four implants)" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val testplant3 : ImplantDefinition = ImplantDefinition(3) - val testplant4 : ImplantDefinition = ImplantDefinition(4) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val testplant3: ImplantDefinition = ImplantDefinition(3) + val testplant4: ImplantDefinition = ImplantDefinition(4) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -204,8 +203,8 @@ class AvatarTest extends Specification { } "can uninstall an implant" in { - val testplant : ImplantDefinition = ImplantDefinition(1) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant: ImplantDefinition = ImplantDefinition(1) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.InstallImplant(testplant).contains(0) mustEqual true obj.Implants(0).Installed.contains(testplant) mustEqual true @@ -215,10 +214,10 @@ class AvatarTest extends Specification { } "can uninstall just a specific implant" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val testplant3: ImplantDefinition = ImplantDefinition(3) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -236,10 +235,10 @@ class AvatarTest extends Specification { } "can install implants to any available slot" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val testplant3 : ImplantDefinition = ImplantDefinition(3) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val testplant3: ImplantDefinition = ImplantDefinition(3) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.Implants(2).Unlocked = true @@ -251,7 +250,7 @@ class AvatarTest extends Specification { obj.Implant(1) mustEqual ImplantType.None obj.Implant(2) mustEqual testplant3.Type - val testplant4 : ImplantDefinition = ImplantDefinition(4) + val testplant4: ImplantDefinition = ImplantDefinition(4) obj.InstallImplant(testplant4).contains(1) mustEqual true obj.Implant(0) mustEqual testplant1.Type obj.Implant(1) mustEqual testplant4.Type @@ -259,9 +258,9 @@ class AvatarTest extends Specification { } "can reset implants to uninitialized state" in { - val testplant1 : ImplantDefinition = ImplantDefinition(1) - val testplant2 : ImplantDefinition = ImplantDefinition(2) - val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val testplant1: ImplantDefinition = ImplantDefinition(1) + val testplant2: ImplantDefinition = ImplantDefinition(2) + val obj = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Implants(0).Unlocked = true obj.Implants(1).Unlocked = true obj.InstallImplant(testplant1).contains(0) mustEqual true @@ -287,12 +286,12 @@ class AvatarTest extends Specification { "save player's current inventory as a loadout" in { val (obj, avatar) = CreatePlayer() - obj.Slot(0).Equipment.get.asInstanceOf[Tool].Magazine = 1 //non-standard but legal + obj.Slot(0).Equipment.get.asInstanceOf[Tool].Magazine = 1 //non-standard but legal obj.Slot(2).Equipment.get.asInstanceOf[Tool].AmmoSlot.Magazine = 100 //non-standard (and out of range, real=25) avatar.EquipmentLoadouts.SaveLoadout(obj, "test", 0) avatar.EquipmentLoadouts.LoadLoadout(0) match { - case Some(items : InfantryLoadout) => + case Some(items: InfantryLoadout) => items.label mustEqual "test" items.exosuit mustEqual obj.ExoSuit items.subtype mustEqual 0 @@ -348,7 +347,7 @@ class AvatarTest extends Specification { avatar.EquipmentLoadouts.SaveLoadout(obj, "test", 0) avatar.EquipmentLoadouts.LoadLoadout(0) match { - case Some(items : InfantryLoadout) => + case Some(items: InfantryLoadout) => items.label mustEqual "test" items.exosuit mustEqual obj.ExoSuit items.subtype mustEqual 0 @@ -367,7 +366,7 @@ class AvatarTest extends Specification { avatar.EquipmentLoadouts.SaveLoadout(obj, "test", 0) avatar.EquipmentLoadouts.LoadLoadout(0) match { - case Some(items : InfantryLoadout) => + case Some(items: InfantryLoadout) => items.label mustEqual "test" items.exosuit mustEqual obj.ExoSuit items.subtype mustEqual 0 @@ -390,8 +389,8 @@ class AvatarTest extends Specification { "the fifth slot is the locker wrapped in an EquipmentSlot" in { val (_, avatar) = CreatePlayer() avatar.FifthSlot.Equipment match { - case Some(slot : LockerEquipment) => slot.Inventory mustEqual avatar.Locker.Inventory - case _ => ko + case Some(slot: LockerEquipment) => slot.Inventory mustEqual avatar.Locker.Inventory + case _ => ko } } diff --git a/common/src/test/scala/objects/BuildingTest.scala b/common/src/test/scala/objects/BuildingTest.scala index c605ffda..cbf4274a 100644 --- a/common/src/test/scala/objects/BuildingTest.scala +++ b/common/src/test/scala/objects/BuildingTest.scala @@ -20,7 +20,7 @@ class AmenityTest extends Specification { //intentionally blank } class AmenityObject extends Amenity { - def Definition : AmenityDefinition = definition + def Definition: AmenityDefinition = definition } "Amenity" should { @@ -30,7 +30,7 @@ class AmenityTest extends Specification { } "can be owned by a building" in { - val ao = new AmenityObject() + val ao = new AmenityObject() val bldg = Building("Building", 0, 10, Zone.Nowhere, StructureType.Building) ao.Owner = bldg @@ -39,7 +39,7 @@ class AmenityTest extends Specification { "be owned by a vehicle" in { import net.psforever.objects.Vehicle - val ao = new AmenityObject() + val ao = new AmenityObject() val veh = Vehicle(GlobalDefinitions.quadstealth) ao.Owner = veh @@ -54,7 +54,7 @@ class AmenityTest extends Specification { "confer faction allegiance through ownership" in { //see FactionAffinityTest - val ao = new AmenityObject() + val ao = new AmenityObject() val bldg = Building("Building", 0, 10, Zone.Nowhere, StructureType.Building) ao.Owner = bldg bldg.Faction mustEqual PlanetSideEmpire.NEUTRAL @@ -87,7 +87,7 @@ class BuildingTest extends Specification { } "keep track of amenities" in { - val bldg = Building("Building", 0, 10, Zone.Nowhere, StructureType.Building) + val bldg = Building("Building", 0, 10, Zone.Nowhere, StructureType.Building) val door1 = Door(GlobalDefinitions.door) val door2 = Door(GlobalDefinitions.door) @@ -176,14 +176,14 @@ class BuildingControl3Test extends ActorTest { //val reply = receiveN(3, Duration.create(5000, "ms")) assert(reply.length == 3) var building_count = 0 - var door_count = 0 + var door_count = 0 reply.foreach(item => { assert(item.isInstanceOf[FactionAffinity.AssertFactionAffinity]) val item2 = item.asInstanceOf[FactionAffinity.AssertFactionAffinity] item2.obj match { - case _ : Building => + case _: Building => building_count += 1 - case _ : Door => + case _: Door => door_count += 1 case _ => assert(false) diff --git a/common/src/test/scala/objects/CertificationTest.scala b/common/src/test/scala/objects/CertificationTest.scala index 7bdcc25a..727c6c54 100644 --- a/common/src/test/scala/objects/CertificationTest.scala +++ b/common/src/test/scala/objects/CertificationTest.scala @@ -33,11 +33,13 @@ class CertificationTest extends Specification { } "find all certifications dependent on a given certification (multiple)" in { - Certification.Dependencies.FromAll(MediumAssault) mustEqual Set(AntiVehicular, HeavyAssault, Sniping, SpecialAssault, EliteAssault) + Certification.Dependencies + .FromAll(MediumAssault) mustEqual Set(AntiVehicular, HeavyAssault, Sniping, SpecialAssault, EliteAssault) } "find all certifications dependent on a given certification (intermediate)" in { - Certification.Dependencies.FromAll(ArmoredAssault2) mustEqual Set(BattleFrameRobotics, Flail, BFRAntiInfantry, BFRAntiAircraft) + Certification.Dependencies + .FromAll(ArmoredAssault2) mustEqual Set(BattleFrameRobotics, Flail, BFRAntiInfantry, BFRAntiAircraft) } //For "find any certifications that are immediate dependencies for a given certification (nothing)" in { @@ -103,7 +105,9 @@ class CertificationTest extends Specification { } "calculate the sum-point-value of all certifications (large collection)" in { - Certification.Cost.Of(Set(StandardAssault, MediumAssault, StandardExoSuit, AgileExoSuit, ReinforcedExoSuit, ATV, Harasser)) mustEqual 7 + Certification.Cost.Of( + Set(StandardAssault, MediumAssault, StandardExoSuit, AgileExoSuit, ReinforcedExoSuit, ATV, Harasser) + ) mustEqual 7 } "calculate the sum-point-value of all unique certifications (no value)" in { @@ -122,8 +126,17 @@ class CertificationTest extends Specification { "calculate the sum-point-value of all unique certifications (large collection)" in { Certification.Cost.Of( List( - StandardAssault, MediumAssault, StandardExoSuit, AgileExoSuit, ReinforcedExoSuit, ATV, Harasser, - MediumAssault, StandardExoSuit, ReinforcedExoSuit, ATV + StandardAssault, + MediumAssault, + StandardExoSuit, + AgileExoSuit, + ReinforcedExoSuit, + ATV, + Harasser, + MediumAssault, + StandardExoSuit, + ReinforcedExoSuit, + ATV ) ) mustEqual 7 } @@ -131,8 +144,17 @@ class CertificationTest extends Specification { "calculate the sum-point-value of all certifications (count duplicates)" in { Certification.Cost.OfAll( List( - StandardAssault, MediumAssault, StandardExoSuit, AgileExoSuit, ReinforcedExoSuit, ATV, Harasser, - MediumAssault, StandardExoSuit, ReinforcedExoSuit, ATV + StandardAssault, + MediumAssault, + StandardExoSuit, + AgileExoSuit, + ReinforcedExoSuit, + ATV, + Harasser, + MediumAssault, + StandardExoSuit, + ReinforcedExoSuit, + ATV ) ) mustEqual 13 } diff --git a/common/src/test/scala/objects/ContainerTest.scala b/common/src/test/scala/objects/ContainerTest.scala index f64eb401..4aafa588 100644 --- a/common/src/test/scala/objects/ContainerTest.scala +++ b/common/src/test/scala/objects/ContainerTest.scala @@ -26,7 +26,7 @@ class ContainerTest extends Specification { } "Collisions can Find items in Inventory (default behavior)" in { - val obj = new ContainerTest.CObject + val obj = new ContainerTest.CObject val weapon = Tool(GlobalDefinitions.beamer) weapon.GUID = PlanetSideGUID(1) @@ -37,11 +37,11 @@ class ContainerTest extends Specification { case None => ko } - obj.Collisions(1,1,1) match { + obj.Collisions(1, 1, 1) match { case Success(items) => items.length mustEqual 1 items.head.obj mustEqual weapon - case _ =>; + case _ => ; ko } } @@ -52,8 +52,8 @@ object ContainerTest { class CObject extends Container { private val inv = GridInventory(3, 3) - def Inventory : GridInventory = inv + def Inventory: GridInventory = inv - def VisibleSlots :Set[Int] = Set[Int](0,1,2, 3,4,5, 6,7,8) + def VisibleSlots: Set[Int] = Set[Int](0, 1, 2, 3, 4, 5, 6, 7, 8) } } diff --git a/common/src/test/scala/objects/ConverterTest.scala b/common/src/test/scala/objects/ConverterTest.scala index bd1eaaa5..4705ccc9 100644 --- a/common/src/test/scala/objects/ConverterTest.scala +++ b/common/src/test/scala/objects/ConverterTest.scala @@ -18,7 +18,7 @@ import scala.util.{Failure, Success} class ConverterTest extends Specification { "AmmoBox" should { val bullet_9mm = AmmoBoxDefinition(28) - bullet_9mm.Capacity = 50 + bullet_9mm.Capacity = 50 "convert to packet" in { val obj = AmmoBox(bullet_9mm) @@ -62,7 +62,7 @@ class ConverterTest extends Specification { "Tool" should { "convert to packet (1 fire mode slot)" in { - val obj : Tool = Tool(GlobalDefinitions.flechette) + val obj: Tool = Tool(GlobalDefinitions.flechette) obj.AmmoSlot.Box.GUID = PlanetSideGUID(90) obj.Definition.Packet.DetailedConstructorData(obj) match { @@ -80,8 +80,23 @@ class ConverterTest extends Specification { pkt mustEqual WeaponData( CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), 0, - List(InternalSlot(Ammo.shotgun_shell.id, PlanetSideGUID(90), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, Some(false), None, PlanetSideGUID(0))) + List( + InternalSlot( + Ammo.shotgun_shell.id, + PlanetSideGUID(90), + 0, + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) ) ) case _ => @@ -90,7 +105,7 @@ class ConverterTest extends Specification { } "convert to packet (2 fire mode slots)" in { - val obj : Tool = Tool(GlobalDefinitions.punisher) + val obj: Tool = Tool(GlobalDefinitions.punisher) obj.AmmoSlots.head.Box.GUID = PlanetSideGUID(90) obj.AmmoSlots(1).Box.GUID = PlanetSideGUID(91) @@ -136,7 +151,7 @@ class ConverterTest extends Specification { "Kit" should { "convert to packet" in { val kdef = KitDefinition(Kits.medkit) - val obj = Kit(kdef) + val obj = Kit(kdef) obj.GUID = PlanetSideGUID(90) obj.Definition.Packet.DetailedConstructorData(obj) match { case Success(pkt) => @@ -281,7 +296,17 @@ class ConverterTest extends Specification { obj.Definition.Packet.DetailedConstructorData(obj) match { case Success(pkt) => pkt mustEqual DetailedConstructionToolData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, Some(1001), PlanetSideGUID(0)) + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + Some(1001), + PlanetSideGUID(0) + ) ) case _ => ko @@ -293,7 +318,6 @@ class ConverterTest extends Specification { //obj.Router = PlanetSideGUID(1001) obj.Definition.Packet.ConstructorData(obj).isFailure mustEqual true - obj.Definition.Packet.DetailedConstructorData(obj).isFailure mustEqual true } } @@ -340,17 +364,57 @@ class ConverterTest extends Specification { pkt mustEqual SmallTurretData( CommonFieldDataWithPlacement( PlacementData(Vector3.Zero, Vector3.Zero), - CommonFieldData(PlanetSideEmpire.TR, false, false, false, None, false, Some(true), None, PlanetSideGUID(0)) + CommonFieldData( + PlanetSideEmpire.TR, + false, + false, + false, + None, + false, + Some(true), + None, + PlanetSideGUID(0) + ) ), 255, InventoryData( - List(InternalSlot(ObjectClass.spitfire_weapon, PlanetSideGUID(91), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(Ammo.spitfire_ammo.id, PlanetSideGUID(92), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, Some(false), None, PlanetSideGUID(0))) - )) + List( + InternalSlot( + ObjectClass.spitfire_weapon, + PlanetSideGUID(91), + 1, + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + Ammo.spitfire_ammo.id, + PlanetSideGUID(92), + 0, + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) + ) ) ) ) @@ -375,17 +439,57 @@ class ConverterTest extends Specification { pkt mustEqual OneMannedFieldTurretData( CommonFieldDataWithPlacement( PlacementData(Vector3.Zero, Vector3.Zero), - CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)) + CommonFieldData( + PlanetSideEmpire.TR, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) ), 255, InventoryData( - List(InternalSlot(ObjectClass.energy_gun_tr, PlanetSideGUID(91), 1, - WeaponData( - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), - 0, - List(InternalSlot(Ammo.energy_gun_ammo.id, PlanetSideGUID(92), 0, - CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, false, None, false, Some(false), None, PlanetSideGUID(0))) - )) + List( + InternalSlot( + ObjectClass.energy_gun_tr, + PlanetSideGUID(91), + 1, + WeaponData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + None, + None, + PlanetSideGUID(0) + ), + 0, + List( + InternalSlot( + Ammo.energy_gun_ammo.id, + PlanetSideGUID(92), + 0, + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + false, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) + ) ) ) ) @@ -542,7 +646,7 @@ class ConverterTest extends Specification { "Player" should { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj : Player = { + val obj: Player = { /* Create an AmmoBoxDefinition with which to build two AmmoBoxes Create a ToolDefinition with which to create a Tool @@ -634,7 +738,10 @@ class ConverterTest extends Specification { val obj = new LockerEquipment(LockerContainer()) obj.Definition.Packet.DetailedConstructorData(obj) match { case Success(pkt) => - pkt mustEqual DetailedLockerContainerData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), None) + pkt mustEqual DetailedLockerContainerData( + CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, None, None, PlanetSideGUID(0)), + None + ) case _ => ko } @@ -655,13 +762,54 @@ class ConverterTest extends Specification { obj.Definition.Packet.DetailedConstructorData(obj) match { case Success(pkt) => - pkt mustEqual DetailedLockerContainerData(8, InternalSlot(remote_electronics_kit.ObjectId, PlanetSideGUID(1), 0, DetailedREKData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)))) :: Nil) + pkt mustEqual DetailedLockerContainerData( + 8, + InternalSlot( + remote_electronics_kit.ObjectId, + PlanetSideGUID(1), + 0, + DetailedREKData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) :: Nil + ) case _ => ko } obj.Definition.Packet.ConstructorData(obj) match { case Success(pkt) => - pkt mustEqual LockerContainerData(InventoryData(InternalSlot(remote_electronics_kit.ObjectId, PlanetSideGUID(1), 0, REKData(CommonFieldData(PlanetSideEmpire.NEUTRAL, false, false, true, None, false, Some(false), None, PlanetSideGUID(0)))) :: Nil)) + pkt mustEqual LockerContainerData( + InventoryData( + InternalSlot( + remote_electronics_kit.ObjectId, + PlanetSideGUID(1), + 0, + REKData( + CommonFieldData( + PlanetSideEmpire.NEUTRAL, + false, + false, + true, + None, + false, + Some(false), + None, + PlanetSideGUID(0) + ) + ) + ) :: Nil + ) + ) case _ => ko } @@ -713,41 +861,40 @@ class ConverterTest extends Specification { val hellfire_ammo = AmmoBoxDefinition(Ammo.hellfire_ammo.id) val fury_weapon_systema_def = ToolDefinition(ObjectClass.fury_weapon_systema) - fury_weapon_systema_def.Size = EquipmentSize.VehicleWeapon - fury_weapon_systema_def.AmmoTypes += GlobalDefinitions.hellfire_ammo - fury_weapon_systema_def.FireModes += new FireModeDefinition - fury_weapon_systema_def.FireModes.head.AmmoTypeIndices += 0 - fury_weapon_systema_def.FireModes.head.AmmoSlotIndex = 0 - fury_weapon_systema_def.FireModes.head.Magazine = 2 + fury_weapon_systema_def.Size = EquipmentSize.VehicleWeapon + fury_weapon_systema_def.AmmoTypes += GlobalDefinitions.hellfire_ammo + fury_weapon_systema_def.FireModes += new FireModeDefinition + fury_weapon_systema_def.FireModes.head.AmmoTypeIndices += 0 + fury_weapon_systema_def.FireModes.head.AmmoSlotIndex = 0 + fury_weapon_systema_def.FireModes.head.Magazine = 2 val fury_def = VehicleDefinition(ObjectClass.fury) - fury_def.Seats += 0 -> new SeatDefinition() - fury_def.Seats(0).Bailable = true - fury_def.Seats(0).ControlledWeapon = Some(1) - fury_def.MountPoints += 0 -> 0 - fury_def.MountPoints += 2 -> 0 - fury_def.Weapons += 1 -> fury_weapon_systema_def - fury_def.TrunkSize = InventoryTile(11, 11) - fury_def.TrunkOffset = 30 + fury_def.Seats += 0 -> new SeatDefinition() + fury_def.Seats(0).Bailable = true + fury_def.Seats(0).ControlledWeapon = Some(1) + fury_def.MountPoints += 0 -> 0 + fury_def.MountPoints += 2 -> 0 + fury_def.Weapons += 1 -> fury_weapon_systema_def + fury_def.TrunkSize = InventoryTile(11, 11) + fury_def.TrunkOffset = 30 val hellfire_ammo_box = AmmoBox(hellfire_ammo) - hellfire_ammo_box.GUID = PlanetSideGUID(432) + hellfire_ammo_box.GUID = PlanetSideGUID(432) val fury = Vehicle(fury_def) - fury.GUID = PlanetSideGUID(413) - fury.Faction = PlanetSideEmpire.VS - fury.Position = Vector3(3674.8438f, 2732f, 91.15625f) - fury.Orientation = Vector3(0.0f, 0.0f, 90.0f) - fury.WeaponControlledFromSeat(0).get.GUID = PlanetSideGUID(400) - fury.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = hellfire_ammo_box + fury.GUID = PlanetSideGUID(413) + fury.Faction = PlanetSideEmpire.VS + fury.Position = Vector3(3674.8438f, 2732f, 91.15625f) + fury.Orientation = Vector3(0.0f, 0.0f, 90.0f) + fury.WeaponControlledFromSeat(0).get.GUID = PlanetSideGUID(400) + fury.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = hellfire_ammo_box fury.Definition.Packet.ConstructorData(fury).isSuccess mustEqual true ok //TODO write more of this test } "convert to packet (2)" in { - val - ams = Vehicle(GlobalDefinitions.ams) + val ams = Vehicle(GlobalDefinitions.ams) ams.GUID = PlanetSideGUID(413) ams.Utilities(1)().GUID = PlanetSideGUID(414) ams.Utilities(2)().GUID = PlanetSideGUID(415) @@ -758,8 +905,7 @@ class ConverterTest extends Specification { } "convert to packet (3)" in { - val - ams = Vehicle(GlobalDefinitions.ams) + val ams = Vehicle(GlobalDefinitions.ams) ams.GUID = PlanetSideGUID(413) ams.Health = 0 //destroyed vehicle @@ -768,8 +914,7 @@ class ConverterTest extends Specification { } "convert to packet (4)" in { - val - router = Vehicle(GlobalDefinitions.router) + val router = Vehicle(GlobalDefinitions.router) router.GUID = PlanetSideGUID(413) router.Utility(UtilityType.teleportpad_terminal).get.GUID = PlanetSideGUID(1413) router.Utility(UtilityType.internal_router_telepad_deployable).get.GUID = PlanetSideGUID(2413) @@ -800,4 +945,4 @@ class ConverterTest extends Specification { DestroyedVehicleConverter.converter.DetailedConstructorData(ams).isFailure mustEqual true } } -} \ No newline at end of file +} diff --git a/common/src/test/scala/objects/DamageModelTests.scala b/common/src/test/scala/objects/DamageModelTests.scala index 536612bb..a157190c 100644 --- a/common/src/test/scala/objects/DamageModelTests.scala +++ b/common/src/test/scala/objects/DamageModelTests.scala @@ -15,16 +15,22 @@ import org.specs2.mutable.Specification class DamageCalculationsTests extends Specification { "DamageCalculations" should { - val wep = GlobalDefinitions.galaxy_gunship_cannon - val wep_fmode = Tool(wep).FireMode - val wep_prof = wep_fmode.Modifiers.asInstanceOf[DamageProfile] - val proj = wep.ProjectileTypes.head - val proj_prof = proj.asInstanceOf[DamageProfile] - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val wep = GlobalDefinitions.galaxy_gunship_cannon + val wep_fmode = Tool(wep).FireMode + val wep_prof = wep_fmode.Modifiers.asInstanceOf[DamageProfile] + val proj = wep.ProjectileTypes.head + val proj_prof = proj.asInstanceOf[DamageProfile] + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) - val target = Vehicle(GlobalDefinitions.fury) + val target = Vehicle(GlobalDefinitions.fury) target.Position = Vector3(10, 0, 0) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3(50, 50, 0)) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3(50, 50, 0) + ) "extract no damage numbers" in { NoDamageAgainst(proj_prof) mustEqual 0 } @@ -50,14 +56,14 @@ class DamageCalculationsTests extends Specification { } "extract a complete damage profile (1)" in { - val result = DamageAgainstVehicle(proj_prof) + DamageAgainstVehicle(wep_prof) - val func : (DamageProfile, List[DamageProfile]) => Int = DamageWithModifiers(DamageAgainstVehicle) + val result = DamageAgainstVehicle(proj_prof) + DamageAgainstVehicle(wep_prof) + val func: (DamageProfile, List[DamageProfile]) => Int = DamageWithModifiers(DamageAgainstVehicle) func(proj_prof, List(wep_prof)) mustEqual result } "extract a complete damage profile (2)" in { - val result = 2 * DamageAgainstVehicle(proj_prof) + DamageAgainstVehicle(wep_prof) - val func : (DamageProfile, List[DamageProfile]) => Int = DamageWithModifiers(DamageAgainstVehicle) + val result = 2 * DamageAgainstVehicle(proj_prof) + DamageAgainstVehicle(wep_prof) + val func: (DamageProfile, List[DamageProfile]) => Int = DamageWithModifiers(DamageAgainstVehicle) func(proj_prof, List(proj_prof, wep_prof)) mustEqual result } @@ -78,28 +84,46 @@ class DamageCalculationsTests extends Specification { } "calculate no damage from components" in { - val result = DamageWithModifiers(DamageAgainstVehicle)(proj_prof, List(wep_prof)) + val result = DamageWithModifiers(DamageAgainstVehicle)(proj_prof, List(wep_prof)) val distance = DistanceFromExplosionToTarget(resprojectile) DamageCalculations.NoDamage(projectile, result, distance) mustEqual 0 } "calculate degraded damage from components (near)" in { - val projectile_alt = Projectile(GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade - wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) + val projectile_alt = Projectile( + GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade + wep, + wep_fmode, + player, + Vector3(2, 2, 0), + Vector3.Zero + ) val result = DamageWithModifiers(DamageAgainstVehicle)(proj_prof, List(wep_prof)) DirectHitDamageWithDegrade(projectile_alt, result, 0) mustEqual 132 } "calculate degraded damage from components (medium)" in { - val projectile_alt = Projectile(GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade - wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) + val projectile_alt = Projectile( + GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade + wep, + wep_fmode, + player, + Vector3(2, 2, 0), + Vector3.Zero + ) val result = DamageWithModifiers(DamageAgainstVehicle)(proj_prof, List(wep_prof)) DirectHitDamageWithDegrade(projectile_alt, result, 250) mustEqual 103 } "calculate degraded damage from components (far)" in { - val projectile_alt = Projectile(GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade - wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) + val projectile_alt = Projectile( + GlobalDefinitions.galaxy_gunship_gun_projectile, //need projectile with degrade + wep, + wep_fmode, + player, + Vector3(2, 2, 0), + Vector3.Zero + ) val result = DamageWithModifiers(DamageAgainstVehicle)(proj_prof, List(wep_prof)) DirectHitDamageWithDegrade(projectile_alt, result, 1000) mustEqual 0 } @@ -122,22 +146,34 @@ class DamageCalculationsTests extends Specification { } class ResistanceCalculationsTests extends Specification { - val wep = GlobalDefinitions.galaxy_gunship_cannon - val wep_fmode = Tool(wep).FireMode - val proj = wep.ProjectileTypes.head //GlobalDefinitions.heavy_grenade_projectile - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2,2,0), Vector3.Zero) + val wep = GlobalDefinitions.galaxy_gunship_cannon + val wep_fmode = Tool(wep).FireMode + val proj = wep.ProjectileTypes.head //GlobalDefinitions.heavy_grenade_projectile + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) "ResistanceCalculations" should { "ignore all targets" in { val target = Vehicle(GlobalDefinitions.fury) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) InvalidTarget(resprojectile).isFailure mustEqual true } "discern standard infantry targets" in { val target = player - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) ValidInfantryTarget(resprojectile).isSuccess mustEqual true ValidMaxTarget(resprojectile).isSuccess mustEqual false ValidVehicleTarget(resprojectile).isSuccess mustEqual false @@ -147,7 +183,13 @@ class ResistanceCalculationsTests extends Specification { "discern mechanized infantry targets" in { val target = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) target.ExoSuit = ExoSuitType.MAX - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) ValidInfantryTarget(resprojectile).isSuccess mustEqual false ValidMaxTarget(resprojectile).isSuccess mustEqual true ValidVehicleTarget(resprojectile).isSuccess mustEqual false @@ -156,7 +198,13 @@ class ResistanceCalculationsTests extends Specification { "discern ground vehicle targets" in { val target = Vehicle(GlobalDefinitions.fury) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) ValidInfantryTarget(resprojectile).isSuccess mustEqual false ValidMaxTarget(resprojectile).isSuccess mustEqual false ValidVehicleTarget(resprojectile).isSuccess mustEqual true @@ -165,7 +213,13 @@ class ResistanceCalculationsTests extends Specification { "discern flying vehicle targets" in { val target = Vehicle(GlobalDefinitions.mosquito) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) ValidInfantryTarget(resprojectile).isSuccess mustEqual false ValidMaxTarget(resprojectile).isSuccess mustEqual false ValidVehicleTarget(resprojectile).isSuccess mustEqual false @@ -195,47 +249,65 @@ class ResistanceCalculationsTests extends Specification { } class ResolutionCalculationsTests extends Specification { - val wep = GlobalDefinitions.suppressor + val wep = GlobalDefinitions.suppressor val wep_fmode = Tool(wep).FireMode - val proj = wep.ProjectileTypes.head - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val proj = wep.ProjectileTypes.head + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player.Spawn - val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2,2,0), Vector3.Zero) + val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) "ResolutionCalculations" should { "calculate no damage" in { val target = player - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target), target.DamageModel, Vector3.Zero) - ResolutionCalculations.NoDamage(resprojectile)(50,50) mustEqual 0 + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target), + target.DamageModel, + Vector3.Zero + ) + ResolutionCalculations.NoDamage(resprojectile)(50, 50) mustEqual 0 } "calculate no infantry damage for vehicles" in { val target1 = Vehicle(GlobalDefinitions.fury) //! - val resprojectile1 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target1), target1.DamageModel, Vector3.Zero) - InfantryDamageAfterResist(resprojectile1)(50, 10) mustEqual (0,0) + val resprojectile1 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target1), + target1.DamageModel, + Vector3.Zero + ) + InfantryDamageAfterResist(resprojectile1)(50, 10) mustEqual (0, 0) val target2 = player - val resprojectile2 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target2), target2.DamageModel, Vector3.Zero) - InfantryDamageAfterResist(resprojectile2)(50, 10) mustEqual (40,10) + val resprojectile2 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target2), + target2.DamageModel, + Vector3.Zero + ) + InfantryDamageAfterResist(resprojectile2)(50, 10) mustEqual (40, 10) } "calculate health and armor damage for infantry target" in { - InfantryDamageAfterResist(100,100)(50, 10) mustEqual (40,10) + InfantryDamageAfterResist(100, 100)(50, 10) mustEqual (40, 10) } "calculate health and armor damage, with bleed through damage, for infantry target" in { //health = 100, armor = 5 -> resist 10 but only have 5, so rollover extra -> damages (40+5, 5) - InfantryDamageAfterResist(100,5)(50, 10) mustEqual (45,5) + InfantryDamageAfterResist(100, 5)(50, 10) mustEqual (45, 5) } "calculate health damage for infantry target" in { //health = 100, armor = 0 - InfantryDamageAfterResist(100,0)(50, 10) mustEqual (50,0) + InfantryDamageAfterResist(100, 0)(50, 10) mustEqual (50, 0) } "calculate armor damage for infantry target" in { //resistance > damage - InfantryDamageAfterResist(100,100)(50, 60) mustEqual (0,50) + InfantryDamageAfterResist(100, 100)(50, 60) mustEqual (0, 50) } val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) @@ -243,35 +315,59 @@ class ResolutionCalculationsTests extends Specification { player2.Spawn "calculate no max damage for vehicles" in { val target1 = Vehicle(GlobalDefinitions.fury) //! - val resprojectile1 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target1), target1.DamageModel, Vector3.Zero) - MaxDamageAfterResist(resprojectile1)(50, 10) mustEqual (0,0) + val resprojectile1 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target1), + target1.DamageModel, + Vector3.Zero + ) + MaxDamageAfterResist(resprojectile1)(50, 10) mustEqual (0, 0) val target2 = player2 - val resprojectile2 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target2), target2.DamageModel, Vector3.Zero) - MaxDamageAfterResist(resprojectile2)(50, 10) mustEqual (0,40) + val resprojectile2 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target2), + target2.DamageModel, + Vector3.Zero + ) + MaxDamageAfterResist(resprojectile2)(50, 10) mustEqual (0, 40) } "calculate health and armor damage for max target" in { - MaxDamageAfterResist(100,5)(50, 10) mustEqual (35,5) + MaxDamageAfterResist(100, 5)(50, 10) mustEqual (35, 5) } "calculate health damage for max target" in { //health = 100, armor = 0 - MaxDamageAfterResist(100,0)(50, 10) mustEqual (40,0) + MaxDamageAfterResist(100, 0)(50, 10) mustEqual (40, 0) } "calculate armor damage for max target" in { //resistance > damage - MaxDamageAfterResist(100,100)(50, 10) mustEqual (0,40) + MaxDamageAfterResist(100, 100)(50, 10) mustEqual (0, 40) } "do not care if target is infantry for vehicle calculations" in { val target1 = player - val resprojectile1 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target1), target1.DamageModel, Vector3.Zero) + val resprojectile1 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target1), + target1.DamageModel, + Vector3.Zero + ) VehicleDamageAfterResist(resprojectile1)(50, 10) mustEqual 40 val target2 = Vehicle(GlobalDefinitions.fury) //! - val resprojectile2 = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(target2), target2.DamageModel, Vector3.Zero) + val resprojectile2 = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(target2), + target2.DamageModel, + Vector3.Zero + ) VehicleDamageAfterResist(resprojectile2)(50, 10) mustEqual 40 } } @@ -286,22 +382,21 @@ class ResolutionCalculationsTests extends Specification { } class DamageModelTests extends Specification { - val wep = GlobalDefinitions.suppressor - val wep_tool = Tool(wep) + val wep = GlobalDefinitions.suppressor + val wep_tool = Tool(wep) val wep_fmode = wep_tool.FireMode - val proj = wep.ProjectileTypes.head - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val proj = wep.ProjectileTypes.head + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) player.Spawn - val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2,2,0), Vector3.Zero) + val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) "DamageModel" should { "be a part of vitality" in { player.isInstanceOf[Vitality] mustEqual true try { player.getClass.getDeclaredMethod("DamageModel").hashCode() - } - catch { - case _ : Exception => + } catch { + case _: Exception => ko //the method doesn't exist } @@ -309,9 +404,8 @@ class DamageModelTests extends Specification { try { wep_tool.getClass.getDeclaredMethod("DamageModel").hashCode() ko - } - catch { - case _ : Exception => + } catch { + case _: Exception => ok //the method doesn't exist } ok @@ -323,8 +417,14 @@ class DamageModelTests extends Specification { tplayer.Health mustEqual 100 tplayer.Armor mustEqual 50 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(tplayer), tplayer.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(tplayer), + tplayer.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) func(tplayer) tplayer.Health mustEqual 87 @@ -337,8 +437,15 @@ class DamageModelTests extends Specification { tplayer.Health mustEqual 100 tplayer.Armor mustEqual 50 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(tplayer), tplayer.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile, ProjectileResolution.Splash) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(tplayer), + tplayer.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = + resprojectile.damage_model.Calculate(resprojectile, ProjectileResolution.Splash) func(tplayer) tplayer.Health mustEqual 98 @@ -351,8 +458,14 @@ class DamageModelTests extends Specification { tplayer.Health mustEqual 100 tplayer.Armor mustEqual 50 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(tplayer), tplayer.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(tplayer), + tplayer.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) tplayer.Armor = 0 func(tplayer) @@ -364,8 +477,14 @@ class DamageModelTests extends Specification { val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.Health mustEqual 650 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(vehicle), vehicle.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(vehicle), + vehicle.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) func(vehicle) vehicle.Health mustEqual 641 @@ -377,8 +496,14 @@ class DamageModelTests extends Specification { vehicle.Health mustEqual 650 vehicle.Shields mustEqual 10 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(vehicle), vehicle.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(vehicle), + vehicle.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) func(vehicle) vehicle.Health mustEqual 650 @@ -391,8 +516,14 @@ class DamageModelTests extends Specification { vehicle.Health mustEqual 650 vehicle.Shields mustEqual 10 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(vehicle), vehicle.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(vehicle), + vehicle.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile) func(vehicle) vehicle.Health mustEqual 650 @@ -406,8 +537,15 @@ class DamageModelTests extends Specification { val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.Health mustEqual 650 - val resprojectile = ResolvedProjectile(ProjectileResolution.Hit, projectile, SourceEntry(vehicle), vehicle.DamageModel, Vector3.Zero) - val func : Any=>ResolvedProjectile = resprojectile.damage_model.Calculate(resprojectile, ProjectileResolution.Splash) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + SourceEntry(vehicle), + vehicle.DamageModel, + Vector3.Zero + ) + val func: Any => ResolvedProjectile = + resprojectile.damage_model.Calculate(resprojectile, ProjectileResolution.Splash) func(vehicle) vehicle.Health mustEqual 641 diff --git a/common/src/test/scala/objects/DamageableTest.scala b/common/src/test/scala/objects/DamageableTest.scala index b1c20231..3d8ade48 100644 --- a/common/src/test/scala/objects/DamageableTest.scala +++ b/common/src/test/scala/objects/DamageableTest.scala @@ -31,9 +31,9 @@ import org.specs2.mutable.Specification import scala.concurrent.duration._ class DamageableTest extends Specification { - val player1 = Player(Avatar("TestCharacter1",PlanetSideEmpire.TR,CharacterGender.Male,0,CharacterVoice.Mute)) - val pSource = PlayerSource(player1) - val weaponA = Tool(GlobalDefinitions.phoenix) //decimator + val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val pSource = PlayerSource(player1) + val weaponA = Tool(GlobalDefinitions.phoenix) //decimator val projectileA = weaponA.Projectile "Damageable" should { @@ -54,7 +54,15 @@ class DamageableTest extends Specification { val target = new SensorDeployable(GlobalDefinitions.motionalarmsensor) val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectileA, weaponA.Definition, weaponA.FireMode, PlayerSource(player1), 0, Vector3.Zero, Vector3.Zero), + Projectile( + projectileA, + weaponA.Definition, + weaponA.FireMode, + PlayerSource(player1), + 0, + Vector3.Zero, + Vector3.Zero + ), SourceEntry(target), target.DamageModel, Vector3.Zero @@ -65,9 +73,10 @@ class DamageableTest extends Specification { "ignore attempts at damaging friendly targets not designated for friendly fire" in { val target = new Generator(GlobalDefinitions.generator) - target.Owner = new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { - Faction = player1.Faction - } + target.Owner = + new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { + Faction = player1.Faction + } val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectileA, weaponA.Definition, weaponA.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -87,9 +96,10 @@ class DamageableTest extends Specification { "ignore attempts at damaging a target that is not damageable" in { val target = new SpawnTube(GlobalDefinitions.respawn_tube_sanctuary) - target.Owner = new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { - Faction = PlanetSideEmpire.NC - } + target.Owner = + new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { + Faction = PlanetSideEmpire.NC + } val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectileA, weaponA.Definition, weaponA.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -104,16 +114,17 @@ class DamageableTest extends Specification { } "permit damaging friendly targets, even those not designated for friendly fire, if the target is hacked" in { - val player2 = Player(Avatar("TestCharacter2",PlanetSideEmpire.NC,CharacterGender.Male,0,CharacterVoice.Mute)) + val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(1) val target = new Terminal(new TerminalDefinition(0) { Damageable = true DamageableByFriendlyFire = false - override def Request(player : Player, msg : Any) : Terminal.Exchange = null + override def Request(player: Player, msg: Any): Terminal.Exchange = null }) - target.Owner = new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { - Faction = player1.Faction - } + target.Owner = + new Building("test-building", 0, 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) { + Faction = player1.Faction + } val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectileA, weaponA.Definition, weaponA.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -133,7 +144,7 @@ class DamageableTest extends Specification { Damageable.CanDamage(target, projectileA.Damage0, resolved) mustEqual true } - val weaponB = Tool(GlobalDefinitions.jammer_grenade) + val weaponB = Tool(GlobalDefinitions.jammer_grenade) val projectileB = weaponB.Projectile "permit jamming" in { @@ -197,7 +208,7 @@ class DamageableTest extends Specification { } "permit jamming friendly targets if the target is hacked" in { - val player2 = Player(Avatar("TestCharacter2",PlanetSideEmpire.NC,CharacterGender.Male,0,CharacterVoice.Mute)) + val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(1) val target = new SensorDeployable(GlobalDefinitions.motionalarmsensor) target.Faction = player1.Faction @@ -226,40 +237,49 @@ class DamageableTest extends Specification { the damage targets, Generator, Terminal, etc., are used to test basic destruction essentially, treat them more as generic entities whose object types are damageable (because they are) see specific object type tests in relation to what those object types does above and beyond that during damage -*/ + */ class DamageableEntityDamageTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val gen = Generator(GlobalDefinitions.generator) //guid=2 - val player1 = Player(Avatar("TestCharacter1",PlanetSideEmpire.TR,CharacterGender.Male,0,CharacterVoice.Mute)) //guid=3 + val gen = Generator(GlobalDefinitions.generator) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 guid.register(building, 1) guid.register(gen, 2) guid.register(player1, 3) - building.Position = Vector3(1,0,0) + building.Position = Vector3(1, 0, 0) building.Zone = zone building.Amenities = gen - gen.Position = Vector3(1,0,0) + gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2,0,0), Vector3(-1,0,0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, - Vector3(1,0,0) + Vector3(1, 0, 0) ) val applyDamageTo = resolved.damage_model.Calculate(resolved) expectNoMessage(200 milliseconds) @@ -267,20 +287,20 @@ class DamageableEntityDamageTest extends ActorTest { "DamageableEntity" should { "handle taking damage" in { gen.Actor ! Vitality.Damage(applyDamageTo) - val msg1 = avatarProbe.receiveOne( 500 milliseconds) + val msg1 = avatarProbe.receiveOne(500 milliseconds) val msg2 = activityProbe.receiveOne(500 milliseconds) assert( msg1 match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg2 match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == SourceEntry(gen) && - activity.location == Vector3(1,0,0) + activity.location == Vector3(1, 0, 0) case _ => false } ) @@ -301,8 +321,9 @@ class DamageableEntityDestroyedTest extends ActorTest { val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 mech.Position = Vector3(1, 0, 0) mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 building.Position = Vector3(1, 0, 0) @@ -313,11 +334,19 @@ class DamageableEntityDestroyedTest extends ActorTest { guid.register(building, 1) guid.register(mech, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(mech), mech.DamageModel, Vector3(1, 0, 0) @@ -337,13 +366,13 @@ class DamageableEntityDestroyedTest extends ActorTest { assert( msg1_2.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg1_2(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert(mech.Health == 0) @@ -359,8 +388,9 @@ class DamageableEntityNotDestroyTwice extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val gen = Generator(GlobalDefinitions.generator) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val gen = Generator(GlobalDefinitions.generator) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(gen, 2) @@ -371,17 +401,25 @@ class DamageableEntityNotDestroyTwice extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -401,9 +439,9 @@ class DamageableEntityNotDestroyTwice extends ActorTest { assert(originalHealth > gen.Definition.DamageDestroysAt) gen.Actor ! Vitality.Damage(applyDamageTo) - avatarProbe.receiveOne(500 milliseconds) //only one message + avatarProbe.receiveOne(500 milliseconds) //only one message avatarProbe.expectNoMessage(500 milliseconds) //only one message - activityProbe.receiveOne(500 milliseconds) //triggers activity hotspot, like it's not a killing blow + activityProbe.receiveOne(500 milliseconds) //triggers activity hotspot, like it's not a killing blow assert(gen.Health < originalHealth) assert(gen.Destroyed) assert(originalHealth < gen.Definition.DefaultHealth) @@ -420,8 +458,9 @@ class DamageableAmenityTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(term, 2) @@ -432,17 +471,25 @@ class DamageableAmenityTest extends ActorTest { term.Position = Vector3(1, 0, 0) term.Actor = system.actorOf(Props(classOf[TerminalControl], term), "terminal-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(term), term.DamageModel, Vector3(1, 0, 0) @@ -463,25 +510,25 @@ class DamageableAmenityTest extends ActorTest { assert( msg1234.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg1234(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg1234(2) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 50, 1)) => true - case _ => false + case _ => false } ) assert( msg1234(3) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 51, 1)) => true - case _ => false + case _ => false } ) assert(term.Health <= term.Definition.DamageDestroysAt) @@ -498,11 +545,13 @@ class DamageableMountableDamageTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn - player1.Position = Vector3(2,2,2) - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + player1.Position = Vector3(2, 2, 2) + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn guid.register(building, 1) guid.register(mech, 2) @@ -514,23 +563,31 @@ class DamageableMountableDamageTest extends ActorTest { mech.Position = Vector3(1, 0, 0) mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(mech), mech.DamageModel, Vector3(1, 0, 0) ) val applyDamageTo = resolved.damage_model.Calculate(resolved) - mech.Seats(0).Occupant = player2 //seat the player + mech.Seats(0).Occupant = player2 //seat the player player2.VehicleSeated = Some(mech.GUID) //seat the player expectNoMessage(200 milliseconds) //we're not testing that the math is correct @@ -541,25 +598,29 @@ class DamageableMountableDamageTest extends ActorTest { mech.Actor ! Vitality.Damage(applyDamageTo) val msg1_3 = avatarProbe.receiveN(2, 500 milliseconds) - val msg2 = activityProbe.receiveOne(500 milliseconds) + val msg2 = activityProbe.receiveOne(500 milliseconds) assert( msg1_3.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg2 match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == SourceEntry(mech) && - activity.location == Vector3(1,0,0) + activity.location == Vector3(1, 0, 0) case _ => false } ) assert( msg1_3(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2,2,2)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 2, 2))) + ) => + true case _ => false } ) @@ -575,13 +636,15 @@ class DamageableMountableDestroyTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val mech = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -595,22 +658,30 @@ class DamageableMountableDestroyTest extends ActorTest { mech.Position = Vector3(1, 0, 0) mech.Actor = system.actorOf(Props(classOf[ImplantTerminalMechControl], mech), "mech-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(mech), mech.DamageModel, Vector3(1, 0, 0) ) val applyDamageTo = resolved.damage_model.Calculate(resolved) - mech.Seats(0).Occupant = player2 //seat the player + mech.Seats(0).Occupant = player2 //seat the player player2.VehicleSeated = Some(mech.GUID) //seat the player expectNoMessage(200 milliseconds) //we're not testing that the math is correct @@ -628,19 +699,19 @@ class DamageableMountableDestroyTest extends ActorTest { assert( msg12.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg12(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg3 match { case Player.Die() => true - case _ => false + case _ => false } ) assert(mech.Health <= mech.Definition.DamageDestroysAt) @@ -656,19 +727,21 @@ class DamageableWeaponTurretDamageTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref val turret = new TurretDeployable(GlobalDefinitions.portable_manned_turret_tr) //2 turret.Actor = system.actorOf(Props(classOf[TurretControl], turret), "turret-control") turret.Zone = zone - turret.Position = Vector3(1,0,0) - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + turret.Position = Vector3(1, 0, 0) + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -678,12 +751,20 @@ class DamageableWeaponTurretDamageTest extends ActorTest { turret.Seats(0).Occupant = player2 player2.VehicleSeated = turret.GUID - val weapon = Tool(GlobalDefinitions.suppressor) - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.suppressor) + val projectile = weapon.Projectile val turretSource = SourceEntry(turret) val resolved = ResolvedProjectile( ProjectileResolution.Hit, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), turretSource, turret.DamageModel, Vector3(1, 0, 0) @@ -698,25 +779,29 @@ class DamageableWeaponTurretDamageTest extends ActorTest { turret.Actor ! Vitality.Damage(applyDamageTo) val msg1_3 = avatarProbe.receiveN(2, 500 milliseconds) - val msg2 = activityProbe.receiveOne(500 milliseconds) + val msg2 = activityProbe.receiveOne(500 milliseconds) assert( msg1_3.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg2 match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == turretSource && - activity.location == Vector3(1,0,0) + activity.location == Vector3(1, 0, 0) case _ => false } ) assert( msg1_3(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2,2,2)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 2, 2))) + ) => + true case _ => false } ) @@ -732,8 +817,8 @@ class DamageableWeaponTurretJammerTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref @@ -744,12 +829,14 @@ class DamageableWeaponTurretJammerTest extends ActorTest { turret.Position = Vector3(1, 0, 0) val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -762,12 +849,20 @@ class DamageableWeaponTurretJammerTest extends ActorTest { turret.Seats(0).Occupant = player2 player2.VehicleSeated = turret.GUID - val weapon = Tool(GlobalDefinitions.jammer_grenade) - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.jammer_grenade) + val projectile = weapon.Projectile val turretSource = SourceEntry(turret) val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), turretSource, turret.DamageModel, Vector3(1, 0, 0) @@ -785,13 +880,21 @@ class DamageableWeaponTurretJammerTest extends ActorTest { val msg12 = vehicleProbe.receiveN(2, 500 milliseconds) assert( msg12.head match { - case VehicleServiceMessage("test", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(2), 27, 1))=> true + case VehicleServiceMessage( + "test", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(2), 27, 1) + ) => + true case _ => false } ) assert( msg12(1) match { - case VehicleServiceMessage("test", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(5), 27, 1))=> true + case VehicleServiceMessage( + "test", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(5), 27, 1) + ) => + true case _ => false } ) @@ -807,10 +910,10 @@ class DamageableWeaponTurretDestructionTest extends ActorTest { override def SetupNumberPools() = {} GUID(guid) } - val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 + val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -823,12 +926,14 @@ class DamageableWeaponTurretDestructionTest extends ActorTest { turret.Position = Vector3(1, 0, 0) val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -846,22 +951,38 @@ class DamageableWeaponTurretDestructionTest extends ActorTest { building.Amenities = turret val turretSource = SourceEntry(turret) - val weaponA = Tool(GlobalDefinitions.jammer_grenade) - val projectileA = weaponA.Projectile + val weaponA = Tool(GlobalDefinitions.jammer_grenade) + val projectileA = weaponA.Projectile val resolvedA = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectileA, weaponA.Definition, weaponA.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectileA, + weaponA.Definition, + weaponA.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), turretSource, turret.DamageModel, Vector3(1, 0, 0) ) val applyDamageToA = resolvedA.damage_model.Calculate(resolvedA) - val weaponB = Tool(GlobalDefinitions.phoenix) //decimator + val weaponB = Tool(GlobalDefinitions.phoenix) //decimator val projectileB = weaponB.Projectile val resolvedB = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectileB, weaponB.Definition, weaponB.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectileB, + weaponB.Definition, + weaponB.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), turretSource, turret.DamageModel, Vector3(1, 0, 0) @@ -873,13 +994,13 @@ class DamageableWeaponTurretDestructionTest extends ActorTest { "DamageableWeaponTurret" should { "handle being destroyed gracefully" in { turret.Health = turret.Definition.DamageDestroysAt + 1 //initial state manip - turret.Upgrade = TurretUpgrade.AVCombo //initial state manip; act like having being upgraded properly + turret.Upgrade = TurretUpgrade.AVCombo //initial state manip; act like having being upgraded properly assert(turret.Health > turret.Definition.DamageDestroysAt) assert(!turret.Jammed) assert(!turret.Destroyed) turret.Actor ! Vitality.Damage(applyDamageToA) //also test destruction while jammered - vehicleProbe.receiveN(2, 500 milliseconds) //flush jammered messages (see above) + vehicleProbe.receiveN(2, 500 milliseconds) //flush jammered messages (see above) assert(turret.Health > turret.Definition.DamageDestroysAt) assert(turret.Jammed) assert(!turret.Destroyed) @@ -887,41 +1008,43 @@ class DamageableWeaponTurretDestructionTest extends ActorTest { turret.Actor ! Vitality.Damage(applyDamageToB) //destroy val msg12_4 = avatarProbe.receiveN(3, 500 milliseconds) player1Probe.expectNoMessage(500 milliseconds) - val msg3 = player2Probe.receiveOne(200 milliseconds) + val msg3 = player2Probe.receiveOne(200 milliseconds) val msg56 = vehicleProbe.receiveN(2, 200 milliseconds) assert( msg12_4.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg12_4(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg3 match { case Player.Die() => true - case _ => false + case _ => false } ) assert( msg12_4(2) match { case AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(0), PlanetSideGUID(5), _)) => true - case _ => false + case _ => false } ) assert( msg56.head match { case VehicleServiceMessage.TurretUpgrade(SupportActor.ClearSpecific(List(t), _)) if t eq turret => true - case _ => false + case _ => false } ) assert( msg56(1) match { - case VehicleServiceMessage.TurretUpgrade(TurretUpgrader.AddTask(t, _, TurretUpgrade.None, _)) if t eq turret => true + case VehicleServiceMessage.TurretUpgrade(TurretUpgrader.AddTask(t, _, TurretUpgrade.None, _)) + if t eq turret => + true case _ => false } ) @@ -939,22 +1062,24 @@ class DamageableVehicleDamageTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref val atv = Vehicle(GlobalDefinitions.quadstealth) //guid=1 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "vehicle-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -966,12 +1091,20 @@ class DamageableVehicleDamageTest extends ActorTest { atv.Seats(0).Occupant = player2 player2.VehicleSeated = atv.GUID - val weapon = Tool(GlobalDefinitions.suppressor) - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.suppressor) + val projectile = weapon.Projectile val vehicleSource = SourceEntry(atv) val resolved = ResolvedProjectile( ProjectileResolution.Hit, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, atv.DamageModel, Vector3(1, 0, 0) @@ -987,34 +1120,41 @@ class DamageableVehicleDamageTest extends ActorTest { assert(atv.Shields == 1) atv.Actor ! Vitality.Damage(applyDamageTo) - val msg1_3 = avatarProbe.receiveN(2,500 milliseconds) - val msg2 = activityProbe.receiveOne(200 milliseconds) - val msg4 = vehicleProbe.receiveOne(200 milliseconds) + val msg1_3 = avatarProbe.receiveN(2, 500 milliseconds) + val msg2 = activityProbe.receiveOne(200 milliseconds) + val msg4 = vehicleProbe.receiveOne(200 milliseconds) assert( msg1_3.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) assert( msg2 match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == vehicleSource && - activity.location == Vector3(1,0,0) + activity.location == Vector3(1, 0, 0) case _ => false } ) assert( msg1_3(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2,0,0)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 0, 0))) + ) => + true case _ => false } ) assert( msg4 match { - case VehicleServiceMessage(channel, VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), PlanetSideGUID(1), 68, _)) - if channel.equals(atv.Actor.toString) => true + case VehicleServiceMessage( + channel, + VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), PlanetSideGUID(1), 68, _) + ) if channel.equals(atv.Actor.toString) => + true case _ => false } ) @@ -1031,28 +1171,31 @@ class DamageableVehicleDamageMountedTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref val lodestar = Vehicle(GlobalDefinitions.lodestar) //guid=1 & 4,5,6,7,8,9 - lodestar.Position = Vector3(1,0,0) + lodestar.Position = Vector3(1, 0, 0) val atv = Vehicle(GlobalDefinitions.quadstealth) //guid=11 - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref - val player3 = Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=10 + val player3 = + Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=10 player3.Spawn val player3Probe = TestProbe() player3.Actor = player3Probe.ref @@ -1080,12 +1223,20 @@ class DamageableVehicleDamageMountedTest extends ActorTest { lodestar.CargoHolds(1).Occupant = atv atv.MountedIn = lodestar.GUID - val weapon = Tool(GlobalDefinitions.phoenix) //decimator - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val projectile = weapon.Projectile val vehicleSource = SourceEntry(lodestar) val resolved = ResolvedProjectile( ProjectileResolution.Hit, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, lodestar.DamageModel, Vector3(1, 0, 0) @@ -1096,47 +1247,58 @@ class DamageableVehicleDamageMountedTest extends ActorTest { "handle damage with mounted vehicles" in { lodestar.Shields = 1 //initial state manip - atv.Shields = 1 //initial state manip + atv.Shields = 1 //initial state manip assert(lodestar.Health == lodestar.Definition.DefaultHealth) assert(lodestar.Shields == 1) assert(atv.Health == atv.Definition.DefaultHealth) assert(atv.Shields == 1) lodestar.Actor ! Vitality.Damage(applyDamageTo) - val msg1_35 = avatarProbe.receiveN(3,500 milliseconds) - val msg2 = activityProbe.receiveOne(200 milliseconds) - val msg4 = vehicleProbe.receiveOne(200 milliseconds) + val msg1_35 = avatarProbe.receiveN(3, 500 milliseconds) + val msg2 = activityProbe.receiveOne(200 milliseconds) + val msg4 = vehicleProbe.receiveOne(200 milliseconds) assert( msg1_35.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) assert( msg2 match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == vehicleSource && - activity.location == Vector3(1,0,0) + activity.location == Vector3(1, 0, 0) case _ => false } ) assert( msg1_35(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2,0,0)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 0, 0))) + ) => + true case _ => false } ) assert( msg4 match { - case VehicleServiceMessage(channel, VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), PlanetSideGUID(1), 68, _)) - if channel.equals(lodestar.Actor.toString) => true + case VehicleServiceMessage( + channel, + VehicleAction.PlanetsideAttribute(PlanetSideGUID(0), PlanetSideGUID(1), 68, _) + ) if channel.equals(lodestar.Actor.toString) => + true case _ => false } ) assert( msg1_35(2) match { - case AvatarServiceMessage("TestCharacter3", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2,0,0)))) => true + case AvatarServiceMessage( + "TestCharacter3", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 0, 0))) + ) => + true case _ => false } ) @@ -1154,30 +1316,33 @@ class DamageableVehicleJammeringMountedTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref val atv = Vehicle(GlobalDefinitions.quadassault) //guid=1 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] //guid=4 & 5 val lodestar = Vehicle(GlobalDefinitions.lodestar) //guid=6 - lodestar.Position = Vector3(1,0,0) + lodestar.Position = Vector3(1, 0, 0) - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref - val player3 = Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 + val player3 = + Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 player3.Spawn val player3Probe = TestProbe() player3.Actor = player3Probe.ref @@ -1207,11 +1372,19 @@ class DamageableVehicleJammeringMountedTest extends ActorTest { atv.MountedIn = lodestar.GUID val vehicleSource = SourceEntry(lodestar) - val weapon = Tool(GlobalDefinitions.jammer_grenade) - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.jammer_grenade) + val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, lodestar.DamageModel, Vector3(1, 0, 0) @@ -1234,7 +1407,11 @@ class DamageableVehicleJammeringMountedTest extends ActorTest { player3Probe.expectNoMessage(200 milliseconds) assert( msg12 match { - case VehicleServiceMessage("test", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(4), 27, 1))=> true + case VehicleServiceMessage( + "test", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(4), 27, 1) + ) => + true case _ => false } ) @@ -1252,23 +1429,25 @@ class DamageableVehicleDestroyTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref val atv = Vehicle(GlobalDefinitions.quadassault) //guid=1 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "vehicle-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] //guid=4 & 5 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -1282,12 +1461,20 @@ class DamageableVehicleDestroyTest extends ActorTest { atv.Seats(0).Occupant = player2 player2.VehicleSeated = atv.GUID - val weapon = Tool(GlobalDefinitions.suppressor) - val projectile = weapon.Projectile + val weapon = Tool(GlobalDefinitions.suppressor) + val projectile = weapon.Projectile val vehicleSource = SourceEntry(atv) val resolved = ResolvedProjectile( ProjectileResolution.Hit, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, atv.DamageModel, Vector3(1, 0, 0) @@ -1306,29 +1493,29 @@ class DamageableVehicleDestroyTest extends ActorTest { atv.Actor ! Vitality.Damage(applyDamageTo) val msg124 = avatarProbe.receiveN(3, 500 milliseconds) - val msg3 = player2Probe.receiveOne(200 milliseconds) + val msg3 = player2Probe.receiveOne(200 milliseconds) assert( msg124.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) assert( msg124(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(1), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg3 match { case Player.Die() => true - case _ => false + case _ => false } ) assert( msg124(2) match { case AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(0), PlanetSideGUID(4), _)) => true - case _ => false + case _ => false } ) assert(atv.Health <= atv.Definition.DamageDestroysAt) @@ -1345,30 +1532,33 @@ class DamageableVehicleDestroyMountedTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.VehicleEvents = vehicleProbe.ref val atv = Vehicle(GlobalDefinitions.quadassault) //guid=1 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "atv-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] //guid=4 & 5 val lodestar = Vehicle(GlobalDefinitions.lodestar) //guid=6 - lodestar.Position = Vector3(1,0,0) + lodestar.Position = Vector3(1, 0, 0) - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=7 player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=8 player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref - val player3 = Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 + val player3 = + Player(Avatar("TestCharacter3", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=9 player3.Spawn val player3Probe = TestProbe() player3.Actor = player3Probe.ref @@ -1398,22 +1588,38 @@ class DamageableVehicleDestroyMountedTest extends ActorTest { atv.MountedIn = lodestar.GUID val vehicleSource = SourceEntry(lodestar) - val weaponA = Tool(GlobalDefinitions.jammer_grenade) - val projectileA = weaponA.Projectile + val weaponA = Tool(GlobalDefinitions.jammer_grenade) + val projectileA = weaponA.Projectile val resolvedA = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectileA, weaponA.Definition, weaponA.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectileA, + weaponA.Definition, + weaponA.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, lodestar.DamageModel, Vector3(1, 0, 0) ) val applyDamageToA = resolvedA.damage_model.Calculate(resolvedA) - val weaponB = Tool(GlobalDefinitions.phoenix) //decimator + val weaponB = Tool(GlobalDefinitions.phoenix) //decimator val projectileB = weaponB.Projectile val resolvedB = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectileB, weaponB.Definition, weaponB.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectileB, + weaponB.Definition, + weaponB.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), vehicleSource, lodestar.DamageModel, Vector3(1, 0, 0) @@ -1424,7 +1630,7 @@ class DamageableVehicleDestroyMountedTest extends ActorTest { "handle jammering with mounted vehicles" in { lodestar.Health = lodestar.Definition.DamageDestroysAt + 1 //initial state manip - atv.Shields = 1 //initial state manip + atv.Shields = 1 //initial state manip assert(lodestar.Health > lodestar.Definition.DamageDestroysAt) assert(!lodestar.Jammered) assert(!lodestar.Destroyed) @@ -1457,56 +1663,64 @@ class DamageableVehicleDestroyMountedTest extends ActorTest { val msg_vehicle = vehicleProbe.receiveN(2, 200 milliseconds) vehicleProbe.expectNoMessage(10 milliseconds) assert( - msg_avatar.exists( { + msg_avatar.exists({ case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(4), 0, _)) => true - case _ => false + case _ => false }) ) assert( - msg_avatar.exists( { + msg_avatar.exists({ case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(4), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false }) ) assert( - msg_avatar.exists( { + msg_avatar.exists({ case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false }) ) assert( - msg_avatar.exists( { + msg_avatar.exists({ case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(1), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false }) ) assert( - msg_avatar.exists( { + msg_avatar.exists({ case AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(0), PlanetSideGUID(2), _)) => true - case _ => false + case _ => false }) ) assert( msg_player2 match { case Player.Die() => true - case _ => false + case _ => false } ) assert( msg_player3 match { case Player.Die() => true - case _ => false + case _ => false } ) assert( - msg_vehicle.exists( { - case VehicleServiceMessage("test", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(4), 27, 0))=> true + msg_vehicle.exists({ + case VehicleServiceMessage( + "test", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(4), 27, 0) + ) => + true case _ => false }) ) assert( - msg_vehicle.exists( { - case VehicleServiceMessage("test", VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(1), 68, 0))=> true + msg_vehicle.exists({ + case VehicleServiceMessage( + "test", + VehicleAction.PlanetsideAttribute(Service.defaultPlayerGUID, PlanetSideGUID(1), 68, 0) + ) => + true case _ => false }) ) @@ -1520,4 +1734,4 @@ class DamageableVehicleDestroyMountedTest extends ActorTest { } } -object DamageableTest { } +object DamageableTest {} diff --git a/common/src/test/scala/objects/DeployableTest.scala b/common/src/test/scala/objects/DeployableTest.scala index cc318f97..416e73ea 100644 --- a/common/src/test/scala/objects/DeployableTest.scala +++ b/common/src/test/scala/objects/DeployableTest.scala @@ -121,11 +121,16 @@ class TurretDeployableTest extends Specification { "TurretDeployable" should { "define (valid turret objects)" in { List( - DeployedItem.spitfire_turret.id, DeployedItem.spitfire_cloaked.id, DeployedItem.spitfire_aa.id, - DeployedItem.portable_manned_turret.id, DeployedItem.portable_manned_turret_tr.id, - DeployedItem.portable_manned_turret_nc.id, DeployedItem.portable_manned_turret_vs.id + DeployedItem.spitfire_turret.id, + DeployedItem.spitfire_cloaked.id, + DeployedItem.spitfire_aa.id, + DeployedItem.portable_manned_turret.id, + DeployedItem.portable_manned_turret_tr.id, + DeployedItem.portable_manned_turret_nc.id, + DeployedItem.portable_manned_turret_vs.id ).foreach(id => { - try { new TurretDeployableDefinition(id) } catch { case _ : Exception => ko } + try { new TurretDeployableDefinition(id) } + catch { case _: Exception => ko } }) ok } @@ -158,120 +163,120 @@ class DeployableMake extends Specification { "construct a boomer" in { val func = Deployables.Make(DeployedItem.boomer) func() match { - case _ : BoomerDeployable => ok - case _ => ko + case _: BoomerDeployable => ok + case _ => ko } } "construct an he mine" in { val func = Deployables.Make(DeployedItem.he_mine) func() match { - case obj : ExplosiveDeployable if obj.Definition == GlobalDefinitions.he_mine => ok - case _ => ko + case obj: ExplosiveDeployable if obj.Definition == GlobalDefinitions.he_mine => ok + case _ => ko } } "construct a disruptor mine" in { val func = Deployables.Make(DeployedItem.jammer_mine) func() match { - case obj : ExplosiveDeployable if obj.Definition == GlobalDefinitions.jammer_mine => ok - case _ => ko + case obj: ExplosiveDeployable if obj.Definition == GlobalDefinitions.jammer_mine => ok + case _ => ko } } "construct a spitfire turret" in { val func = Deployables.Make(DeployedItem.spitfire_turret) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_turret => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_turret => ok + case _ => ko } } "construct a shadow turret" in { val func = Deployables.Make(DeployedItem.spitfire_cloaked) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_cloaked => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_cloaked => ok + case _ => ko } } "construct a cerebus turret" in { val func = Deployables.Make(DeployedItem.spitfire_aa) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_aa => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.spitfire_aa => ok + case _ => ko } } "construct a motion sensor" in { val func = Deployables.Make(DeployedItem.motionalarmsensor) func() match { - case obj : SensorDeployable if obj.Definition == GlobalDefinitions.motionalarmsensor => ok - case _ => ko + case obj: SensorDeployable if obj.Definition == GlobalDefinitions.motionalarmsensor => ok + case _ => ko } } "construct a sensor disruptor" in { val func = Deployables.Make(DeployedItem.sensor_shield) func() match { - case obj : SensorDeployable if obj.Definition == GlobalDefinitions.sensor_shield => ok - case _ => ko + case obj: SensorDeployable if obj.Definition == GlobalDefinitions.sensor_shield => ok + case _ => ko } } "construct three metal i-beams so huge that a driver must be blind to drive into them but does anyway" in { val func = Deployables.Make(DeployedItem.tank_traps) func() match { - case obj : TrapDeployable if obj.Definition == GlobalDefinitions.tank_traps => ok - case _ => ko + case obj: TrapDeployable if obj.Definition == GlobalDefinitions.tank_traps => ok + case _ => ko } } "construct a generic field turret" in { val func = Deployables.Make(DeployedItem.portable_manned_turret) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret => ok + case _ => ko } } "construct an avenger turret" in { val func = Deployables.Make(DeployedItem.portable_manned_turret_tr) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_tr => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_tr => ok + case _ => ko } } "construct an aegis shield generator" in { val func = Deployables.Make(DeployedItem.deployable_shield_generator) func() match { - case obj : ShieldGeneratorDeployable if obj.Definition == GlobalDefinitions.deployable_shield_generator => ok - case _ => ko + case obj: ShieldGeneratorDeployable if obj.Definition == GlobalDefinitions.deployable_shield_generator => ok + case _ => ko } } "construct a telepad" in { val func = Deployables.Make(DeployedItem.router_telepad_deployable) func() match { - case obj : TelepadDeployable if obj.Definition == GlobalDefinitions.router_telepad_deployable => ok - case _ => ko + case obj: TelepadDeployable if obj.Definition == GlobalDefinitions.router_telepad_deployable => ok + case _ => ko } } "construct an osprey turret" in { val func = Deployables.Make(DeployedItem.portable_manned_turret_nc) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_nc => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_nc => ok + case _ => ko } } "construct an orion turret" in { val func = Deployables.Make(DeployedItem.portable_manned_turret_vs) func() match { - case obj : TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_vs => ok - case _ => ko + case obj: TurretDeployable if obj.Definition == GlobalDefinitions.portable_manned_turret_vs => ok + case _ => ko } } } @@ -293,7 +298,6 @@ class ShieldGeneratorDeployableTest extends Specification { } } - class ExplosiveDeployableJammerTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(10)) val zone = new Zone("test", new ZoneMap("test"), 0) { @@ -301,16 +305,18 @@ class ExplosiveDeployableJammerTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val localProbe = TestProbe() + val avatarProbe = TestProbe() + val localProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.LocalEvents = localProbe.ref val j_mine = Deployables.Make(DeployedItem.jammer_mine)().asInstanceOf[ExplosiveDeployable] //guid=1 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5 guid.register(j_mine, 1) @@ -324,8 +330,8 @@ class ExplosiveDeployableJammerTest extends ActorTest { j_mine.Actor = system.actorOf(Props(classOf[ExplosiveDeployableControl], j_mine), "j-mine-control") val jMineSource = SourceEntry(j_mine) - val pSource = PlayerSource(player1) - val projectile = weapon.Projectile + val pSource = PlayerSource(player1) + val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectile, weapon.Definition, weapon.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -340,40 +346,48 @@ class ExplosiveDeployableJammerTest extends ActorTest { assert(!j_mine.Destroyed) j_mine.Actor ! Vitality.Damage(applyDamageToJ) - val msg_local = localProbe.receiveN(4, 200 milliseconds) + val msg_local = localProbe.receiveN(4, 200 milliseconds) val msg_avatar = avatarProbe.receiveOne(200 milliseconds) activityProbe.expectNoMessage(200 milliseconds) assert( msg_local.head match { - case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => target eq j_mine + case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => + target eq j_mine case _ => false } ) assert( msg_local(1) match { - case LocalServiceMessage("NC", LocalAction.DeployableMapIcon( - PlanetSideGUID(0), - DeploymentAction.Dismiss, - DeployableInfo(PlanetSideGUID(1), DeployableIcon.DisruptorMine, _, PlanetSideGUID(0)) - )) => true + case LocalServiceMessage( + "NC", + LocalAction.DeployableMapIcon( + PlanetSideGUID(0), + DeploymentAction.Dismiss, + DeployableInfo(PlanetSideGUID(1), DeployableIcon.DisruptorMine, _, PlanetSideGUID(0)) + ) + ) => + true case _ => false } ) assert( msg_local(2) match { - case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => (target eq j_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => + (target eq j_mine) && (_zone eq zone) case _ => false } ) assert( msg_local(3) match { - case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => (target eq j_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => + (target eq j_mine) && (_zone eq zone) case _ => false } ) assert( msg_avatar match { - case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(1), _, Service.defaultPlayerGUID, _)) => true + case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(1), _, Service.defaultPlayerGUID, _)) => + true case _ => false } ) @@ -389,16 +403,18 @@ class ExplosiveDeployableJammerExplodeTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val localProbe = TestProbe() + val avatarProbe = TestProbe() + val localProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.LocalEvents = localProbe.ref val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val weapon = Tool(GlobalDefinitions.jammer_grenade) //guid=5 guid.register(h_mine, 2) @@ -412,8 +428,8 @@ class ExplosiveDeployableJammerExplodeTest extends ActorTest { h_mine.Actor = system.actorOf(Props(classOf[ExplosiveDeployableControl], h_mine), "h-mine-control") val hMineSource = SourceEntry(h_mine) - val pSource = PlayerSource(player1) - val projectile = weapon.Projectile + val pSource = PlayerSource(player1) + val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectile, weapon.Definition, weapon.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -428,53 +444,61 @@ class ExplosiveDeployableJammerExplodeTest extends ActorTest { assert(!h_mine.Destroyed) h_mine.Actor ! Vitality.Damage(applyDamageToH) - val msg_local = localProbe.receiveN(5, 200 milliseconds) - val msg_avatar = avatarProbe.receiveOne(200 milliseconds) + val msg_local = localProbe.receiveN(5, 200 milliseconds) + val msg_avatar = avatarProbe.receiveOne(200 milliseconds) val msg_activity = activityProbe.receiveOne(200 milliseconds) assert( msg_local.head match { case LocalServiceMessage("test", LocalAction.Detonate(PlanetSideGUID(2), target)) => target eq h_mine - case _ => false + case _ => false } ) assert( msg_local(1) match { - case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => target eq h_mine + case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => + target eq h_mine case _ => false } ) assert( msg_local(2) match { - case LocalServiceMessage("NC", LocalAction.DeployableMapIcon( - PlanetSideGUID(0), - DeploymentAction.Dismiss, - DeployableInfo(PlanetSideGUID(2), DeployableIcon.HEMine, _, PlanetSideGUID(0)) - )) => true + case LocalServiceMessage( + "NC", + LocalAction.DeployableMapIcon( + PlanetSideGUID(0), + DeploymentAction.Dismiss, + DeployableInfo(PlanetSideGUID(2), DeployableIcon.HEMine, _, PlanetSideGUID(0)) + ) + ) => + true case _ => false } ) assert( msg_local(3) match { - case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => (target eq h_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => + (target eq h_mine) && (_zone eq zone) case _ => false } ) assert( msg_local(4) match { - case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => (target eq h_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => + (target eq h_mine) && (_zone eq zone) case _ => false } ) assert( msg_avatar match { - case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, Service.defaultPlayerGUID, _)) => true + case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, Service.defaultPlayerGUID, _)) => + true case _ => false } ) assert( msg_activity match { case Zone.HotSpot.Activity(target, attacker, _) => (target eq hMineSource) && (attacker eq pSource) - case _ => false + case _ => false } ) assert(h_mine.Destroyed) @@ -489,16 +513,18 @@ class ExplosiveDeployableDestructionTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val localProbe = TestProbe() + val avatarProbe = TestProbe() + val localProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref zone.LocalEvents = localProbe.ref val h_mine = Deployables.Make(DeployedItem.he_mine)().asInstanceOf[ExplosiveDeployable] //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player2.Spawn val weapon = Tool(GlobalDefinitions.suppressor) //guid=5 guid.register(h_mine, 2) @@ -512,8 +538,8 @@ class ExplosiveDeployableDestructionTest extends ActorTest { h_mine.Actor = system.actorOf(Props(classOf[ExplosiveDeployableControl], h_mine), "h-mine-control") val hMineSource = SourceEntry(h_mine) - val pSource = PlayerSource(player1) - val projectile = weapon.Projectile + val pSource = PlayerSource(player1) + val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, Projectile(projectile, weapon.Definition, weapon.FireMode, pSource, 0, Vector3.Zero, Vector3.Zero), @@ -530,46 +556,55 @@ class ExplosiveDeployableDestructionTest extends ActorTest { assert(!h_mine.Destroyed) h_mine.Actor ! Vitality.Damage(applyDamageTo) - val msg_local = localProbe.receiveN(5, 200 milliseconds) + val msg_local = localProbe.receiveN(5, 200 milliseconds) val msg_avatar = avatarProbe.receiveOne(200 milliseconds) activityProbe.expectNoMessage(200 milliseconds) assert( msg_local.head match { - case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => target eq h_mine + case LocalServiceMessage("TestCharacter2", LocalAction.AlertDestroyDeployable(PlanetSideGUID(0), target)) => + target eq h_mine case _ => false } ) assert( msg_local(1) match { - case LocalServiceMessage("NC", LocalAction.DeployableMapIcon( - PlanetSideGUID(0), - DeploymentAction.Dismiss, - DeployableInfo(PlanetSideGUID(2), DeployableIcon.HEMine, _, PlanetSideGUID(0)) - )) => true + case LocalServiceMessage( + "NC", + LocalAction.DeployableMapIcon( + PlanetSideGUID(0), + DeploymentAction.Dismiss, + DeployableInfo(PlanetSideGUID(2), DeployableIcon.HEMine, _, PlanetSideGUID(0)) + ) + ) => + true case _ => false } ) assert( msg_local(2) match { - case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => (target eq h_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(SupportActor.ClearSpecific(List(target), _zone)) => + (target eq h_mine) && (_zone eq zone) case _ => false } ) assert( msg_local(3) match { - case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => (target eq h_mine) && (_zone eq zone) + case LocalServiceMessage.Deployables(RemoverActor.AddTask(target, _zone, _)) => + (target eq h_mine) && (_zone eq zone) case _ => false } ) assert( msg_local(4) match { - case LocalServiceMessage("test", LocalAction.TriggerEffect(_, "detonate_damaged_mine", PlanetSideGUID(2))) => true + case LocalServiceMessage("test", LocalAction.TriggerEffect(_, "detonate_damaged_mine", PlanetSideGUID(2))) => + true case _ => false } ) assert( msg_avatar match { - case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, Service.defaultPlayerGUID, _)) => true + case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, Service.defaultPlayerGUID, _)) => + true case _ => false } ) @@ -604,7 +639,7 @@ class TurretControlInitializeTest extends ActorTest { class TurretControlUninitializeTest extends ActorTest { "TurretControl" should { "uninitialize" in { - val obj = new TurretDeployable(GlobalDefinitions.spitfire_turret) + val obj = new TurretDeployable(GlobalDefinitions.spitfire_turret) val init = system.actorOf(Props(classOf[DeployableTest.TurretInitializer], obj), "init_turret_test") obj.GUID = PlanetSideGUID(1) init ! "initialize" @@ -770,8 +805,8 @@ class TelepadDeployableTest extends Specification { } object DeployableTest { - class TurretInitializer(obj : TurretDeployable) extends Actor { - def receive : Receive = { + class TurretInitializer(obj: TurretDeployable) extends Actor { + def receive: Receive = { case "initialize" => obj.Definition.Initialize(obj, context) case "uninitialize" => diff --git a/common/src/test/scala/objects/DeployableToolboxTest.scala b/common/src/test/scala/objects/DeployableToolboxTest.scala index 7bfe6f38..3ea48db2 100644 --- a/common/src/test/scala/objects/DeployableToolboxTest.scala +++ b/common/src/test/scala/objects/DeployableToolboxTest.scala @@ -20,10 +20,11 @@ class DeployableToolboxTest extends Specification { obj.Initialize(Set()) val list = obj.UpdateUI() list.size mustEqual DeployedItem.values.size - 3 //extra field turrets - val (routers, allOthers) = list.partition({ case((_,_,_,max)) => max == 1024 }) - allOthers.foreach({case(_,curr,_,max) => - curr mustEqual 0 - max mustEqual 0 + val (routers, allOthers) = list.partition({ case ((_, _, _, max)) => max == 1024 }) + allOthers.foreach({ + case (_, curr, _, max) => + curr mustEqual 0 + max mustEqual 0 }) routers.length mustEqual 1 ok @@ -428,7 +429,9 @@ class DeployableToolboxTest extends Specification { "change accessible fields by removing by certification types (all)" in { val obj = new DeployableToolbox - obj.Initialize(Set(CombatEngineering, AssaultEngineering, FortificationEngineering, AdvancedHacking, GroundSupport)) + obj.Initialize( + Set(CombatEngineering, AssaultEngineering, FortificationEngineering, AdvancedHacking, GroundSupport) + ) obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 25 obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 25 obj.CountDeployable(DeployedItem.spitfire_turret)._2 mustEqual 15 @@ -601,7 +604,7 @@ class DeployableToolboxTest extends Specification { val boomer = new BoomerDeployable(GlobalDefinitions.boomer) obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20 obj.Add(boomer) mustEqual true - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20) obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20) obj.Remove(boomer) mustEqual true obj.CountDeployable(DeployedItem.boomer)._2 mustEqual 20 @@ -648,7 +651,7 @@ class DeployableToolboxTest extends Specification { obj.CountDeployable(DeployedItem.he_mine)._2 mustEqual 20 (1 to 19).foreach(_ => { val o1 = new ExplosiveDeployable(GlobalDefinitions.he_mine) - obj.Accept(o1)mustEqual true + obj.Accept(o1) mustEqual true obj.Add(o1) mustEqual true }) obj.CountDeployable(DeployedItem.he_mine).productIterator.toList mustEqual List(19, 20) @@ -678,22 +681,22 @@ class DeployableToolboxTest extends Specification { obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20 (1 to 10).foreach(_ => { val o = new SensorDeployable(GlobalDefinitions.motionalarmsensor) - obj.Accept(o)mustEqual true + obj.Accept(o) mustEqual true obj.Add(o) mustEqual true }) (1 to 10).foreach(_ => { val o = new SensorDeployable(GlobalDefinitions.sensor_shield) - obj.Accept(o)mustEqual true + obj.Accept(o) mustEqual true obj.Add(o) mustEqual true }) obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(10, 20) obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(10, 20) val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) - obj.Accept(o1)mustEqual false + obj.Accept(o1) mustEqual false obj.Add(o1) mustEqual false val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield) - obj.Accept(o2)mustEqual false + obj.Accept(o2) mustEqual false obj.Add(o2) mustEqual false } @@ -703,30 +706,34 @@ class DeployableToolboxTest extends Specification { obj.CountDeployable(DeployedItem.motionalarmsensor)._2 mustEqual 20 obj.CountDeployable(DeployedItem.sensor_shield)._2 mustEqual 20 val o1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) - obj.Accept(o1)mustEqual true + obj.Accept(o1) mustEqual true obj.Add(o1) mustEqual true val o2 = new SensorDeployable(GlobalDefinitions.sensor_shield) - obj.Accept(o2)mustEqual true + obj.Accept(o2) mustEqual true obj.Add(o2) mustEqual true obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20) obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20) - val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield) + val o3 = new SensorDeployable(GlobalDefinitions.sensor_shield) val displaced1a = obj.DisplaceFirst(o3) //remove the first sensor_shield's deployable displaced1a.nonEmpty mustEqual true displaced1a.get.Definition == o3.Definition mustEqual true - obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20) + obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(1, 20) obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(0, 20) //test: add o2 again and try to remove the motionalarmsensor obj.Add(o2) - val displaced1b = obj.DisplaceFirst(o3, {(d) => d.Definition.Item != DeployedItem.sensor_shield}) //remove the first sensor_shield's deployable + val displaced1b = + obj.DisplaceFirst( + o3, + { (d) => d.Definition.Item != DeployedItem.sensor_shield } + ) //remove the first sensor_shield's deployable displaced1b.nonEmpty mustEqual true displaced1b.get.Definition == o3.Definition mustEqual false displaced1b.get.Definition mustEqual GlobalDefinitions.motionalarmsensor - obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20) + obj.CountDeployable(DeployedItem.motionalarmsensor).productIterator.toList mustEqual List(0, 20) obj.CountDeployable(DeployedItem.sensor_shield).productIterator.toList mustEqual List(1, 20) - val o4 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) + val o4 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) val displaced2 = obj.DisplaceFirst(o3) //remove the first deployable of motionalarmsensor's category displaced2.nonEmpty mustEqual true displaced2.get.Definition == o4.Definition mustEqual false @@ -793,7 +800,7 @@ class DeployableToolboxTest extends Specification { val test1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) val test2 = new SensorDeployable(GlobalDefinitions.sensor_shield) - obj.Category(test1) mustEqual List(PlanetSideGUID(1),PlanetSideGUID(3),PlanetSideGUID(4),PlanetSideGUID(2)) + obj.Category(test1) mustEqual List(PlanetSideGUID(1), PlanetSideGUID(3), PlanetSideGUID(4), PlanetSideGUID(2)) obj.Category(test1) mustEqual obj.Category(test2) } @@ -819,8 +826,8 @@ class DeployableToolboxTest extends Specification { val test1 = new SensorDeployable(GlobalDefinitions.motionalarmsensor) val test2 = new SensorDeployable(GlobalDefinitions.sensor_shield) - obj.Deployables(test1) mustEqual List(PlanetSideGUID(1),PlanetSideGUID(4)) - obj.Deployables(test2) mustEqual List(PlanetSideGUID(3),PlanetSideGUID(2)) + obj.Deployables(test1) mustEqual List(PlanetSideGUID(1), PlanetSideGUID(4)) + obj.Deployables(test2) mustEqual List(PlanetSideGUID(3), PlanetSideGUID(2)) } "three tests: 'contains' detects same deployable" in { @@ -842,63 +849,63 @@ class DeployableToolboxTest extends Specification { val cerebus = new TurretDeployable(GlobalDefinitions.spitfire_aa) //cerebus turret obj.Valid(cerebus) mustEqual false - obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0,0) + obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0, 0) obj.AddToDeployableQuantities(AdvancedEngineering, Set(CombatEngineering, AdvancedEngineering)) obj.Valid(cerebus) mustEqual true - obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0,5) + obj.CountDeployable(DeployedItem.spitfire_aa).productIterator.toList mustEqual List(0, 5) } "three tests: 'available' tests whether there is enough space to add more deployables of a type" in { val obj = new DeployableToolbox obj.Initialize(Set(CombatEngineering)) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0, 20) (1 to 20).foreach(_ => { val boomer = new BoomerDeployable(GlobalDefinitions.boomer) obj.Available(boomer) mustEqual true obj.Add(boomer) mustEqual true }) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20, 20) val boomer = new BoomerDeployable(GlobalDefinitions.boomer) obj.Available(boomer) mustEqual false obj.Add(boomer) mustEqual false } "three tests: 'accept' ensures that all three of the previous tests are passable" in { - val obj = new DeployableToolbox + val obj = new DeployableToolbox val boomer = new BoomerDeployable(GlobalDefinitions.boomer) obj.Initialize(Set()) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,0) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0, 0) obj.Accept(boomer) mustEqual false obj.Available(boomer) mustEqual false obj.Contains(boomer) mustEqual false //false is being passable obj.Valid(boomer) mustEqual false obj.AddToDeployableQuantities(CombatEngineering, Set(CombatEngineering)) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(0, 20) obj.Accept(boomer) mustEqual true obj.Available(boomer) mustEqual true //true is being passable obj.Contains(boomer) mustEqual false //false is being passable - obj.Valid(boomer) mustEqual true //true is being passable + obj.Valid(boomer) mustEqual true //true is being passable obj.Add(boomer) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(1, 20) obj.Accept(boomer) mustEqual false obj.Available(boomer) mustEqual true //true is being passable obj.Contains(boomer) mustEqual true obj.Valid(boomer) mustEqual true //true is being passable (1 to 20).foreach(_ => { obj.Add(new BoomerDeployable(GlobalDefinitions.boomer)) }) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,20) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20, 20) obj.Accept(boomer) mustEqual false obj.Available(boomer) mustEqual false obj.Contains(boomer) mustEqual true obj.Valid(boomer) mustEqual true //true is being passable obj.RemoveFromDeployableQuantities(CombatEngineering, Set()) - obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20,0) + obj.CountDeployable(DeployedItem.boomer).productIterator.toList mustEqual List(20, 0) obj.Accept(boomer) mustEqual false obj.Available(boomer) mustEqual false obj.Contains(boomer) mustEqual true @@ -943,9 +950,11 @@ class DeployableToolboxTest extends Specification { val obj = new DeployableToolbox obj.Initialize(Set(CombatEngineering, AdvancedEngineering, AdvancedHacking)) - obj.UpdateUI( - List(AssaultEngineering, FortificationEngineering) - ).flatMap(tuple => tuple.productIterator.toList) mustEqual + obj + .UpdateUI( + List(AssaultEngineering, FortificationEngineering) + ) + .flatMap(tuple => tuple.productIterator.toList) mustEqual obj.UpdateUI(AdvancedEngineering).flatMap(tuple => tuple.productIterator.toList) } @@ -955,16 +964,16 @@ class DeployableToolboxTest extends Specification { (obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++ - obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs) - ).toSet mustEqual Set((103, 0, 92, 0)) //note: four elements become one common element + obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)).toSet mustEqual Set( + (103, 0, 92, 0) + ) //note: four elements become one common element //initialized state obj.Initialize(Set(CombatEngineering, AdvancedEngineering)) (obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++ - obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs) - ).toSet mustEqual Set((103, 0, 92, 1)) + obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)).toSet mustEqual Set((103, 0, 92, 1)) //portable_manned_turret_vs added val obj1 = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) @@ -975,8 +984,7 @@ class DeployableToolboxTest extends Specification { (obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++ - obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs) - ).toSet mustEqual Set((103, 1, 92, 1)) + obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)).toSet mustEqual Set((103, 1, 92, 1)) //portable_manned_turret_nc fails to add val obj2 = new TurretDeployable(GlobalDefinitions.portable_manned_turret_nc) @@ -993,8 +1001,7 @@ class DeployableToolboxTest extends Specification { (obj.UpdateUIElement(DeployedItem.portable_manned_turret) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_nc) ++ obj.UpdateUIElement(DeployedItem.portable_manned_turret_tr) ++ - obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs) - ).toSet mustEqual Set((103, 1, 92, 1)) + obj.UpdateUIElement(DeployedItem.portable_manned_turret_vs)).toSet mustEqual Set((103, 1, 92, 1)) obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(1)) mustEqual false obj.Category(DeployableCategory.FieldTurrets).contains(PlanetSideGUID(2)) mustEqual true //included } diff --git a/common/src/test/scala/objects/DeploymentTest.scala b/common/src/test/scala/objects/DeploymentTest.scala index c0bf4bf2..dad0d74a 100644 --- a/common/src/test/scala/objects/DeploymentTest.scala +++ b/common/src/test/scala/objects/DeploymentTest.scala @@ -36,7 +36,7 @@ class DeploymentTest extends Specification { "have custom deployment time by object" in { val ams = Vehicle(GlobalDefinitions.ams) - (ams.DeployTime == 0) mustEqual false //not default + (ams.DeployTime == 0) mustEqual false //not default (ams.UndeployTime == 0) mustEqual false //not default } } @@ -180,17 +180,16 @@ class DeploymentBehavior6Test extends ActorTest { object DeploymentTest { class DeploymentObject extends PlanetSideServerObject with Deployment { - def Faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - def Definition = null + def Faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + def Definition = null } - private class DeploymentControl(obj : Deployment.DeploymentObject) extends Actor - with DeploymentBehavior { + private class DeploymentControl(obj: Deployment.DeploymentObject) extends Actor with DeploymentBehavior { override def DeploymentObject = obj - def receive = deployBehavior.orElse { case _ => } + def receive = deployBehavior.orElse { case _ => } } - def SetUpAgent(implicit system : ActorSystem) = { + def SetUpAgent(implicit system: ActorSystem) = { val obj = new DeploymentObject() obj.Actor = system.actorOf(Props(classOf[DeploymentControl], obj), "test") obj diff --git a/common/src/test/scala/objects/DoorTest.scala b/common/src/test/scala/objects/DoorTest.scala index b488aa48..1d330031 100644 --- a/common/src/test/scala/objects/DoorTest.scala +++ b/common/src/test/scala/objects/DoorTest.scala @@ -43,7 +43,19 @@ class DoorTest extends Specification { } "be opened and closed (2; toggle)" in { - val msg = UseItemMessage(PlanetSideGUID(6585), PlanetSideGUID(0), PlanetSideGUID(372), 4294967295L, false, Vector3(5.0f, 0.0f, 0.0f), Vector3(0.0f, 0.0f, 0.0f), 11, 25, 0, 364) + val msg = UseItemMessage( + PlanetSideGUID(6585), + PlanetSideGUID(0), + PlanetSideGUID(372), + 4294967295L, + false, + Vector3(5.0f, 0.0f, 0.0f), + Vector3(0.0f, 0.0f, 0.0f), + 11, + 25, + 0, + 364 + ) val door = Door(GlobalDefinitions.door) door.Open mustEqual None door.Use(player, msg) @@ -68,7 +80,19 @@ class DoorControl2Test extends ActorTest { "DoorControl" should { "open on use" in { val (player, door) = DoorControlTest.SetUpAgents(PlanetSideEmpire.TR) - val msg = UseItemMessage(PlanetSideGUID(1), PlanetSideGUID(0), PlanetSideGUID(2), 0L, false, Vector3(0f,0f,0f),Vector3(0f,0f,0f),0,0,0,0L) //faked + val msg = UseItemMessage( + PlanetSideGUID(1), + PlanetSideGUID(0), + PlanetSideGUID(2), + 0L, + false, + Vector3(0f, 0f, 0f), + Vector3(0f, 0f, 0f), + 0, + 0, + 0, + 0L + ) //faked assert(door.Open.isEmpty) door.Actor ! Door.Use(player, msg) @@ -98,10 +122,17 @@ class DoorControl3Test extends ActorTest { } object DoorControlTest { - def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, Door) = { + 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", building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) + door.Owner = new Building( + "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) } diff --git a/common/src/test/scala/objects/EntityTest.scala b/common/src/test/scala/objects/EntityTest.scala index 5636ac7e..013113bc 100644 --- a/common/src/test/scala/objects/EntityTest.scala +++ b/common/src/test/scala/objects/EntityTest.scala @@ -10,7 +10,7 @@ import org.specs2.mutable._ class EntityTest extends Specification { //both WorldEntity and IdentifiableEntity are components of PlanetSideGameObject private class EntityTestClass extends PlanetSideGameObject { - def Definition : ObjectDefinition = new ObjectDefinition(0) { } + def Definition: ObjectDefinition = new ObjectDefinition(0) {} } "PlanetSideGUID" should { @@ -36,17 +36,17 @@ class EntityTest extends Specification { } "valid and stale are pattern-matchable" in { - val guid1 : PlanetSideGUID = ValidPlanetSideGUID(1) - val guid2 : PlanetSideGUID = StalePlanetSideGUID(1) - def getGuid(o : PlanetSideGUID) : PlanetSideGUID = o //distancing the proper type + val guid1: PlanetSideGUID = ValidPlanetSideGUID(1) + val guid2: PlanetSideGUID = StalePlanetSideGUID(1) + def getGuid(o: PlanetSideGUID): PlanetSideGUID = o //distancing the proper type getGuid(guid1) match { case ValidPlanetSideGUID(1) => ok - case _ => ko + case _ => ko } getGuid(guid2) match { case StalePlanetSideGUID(1) => ok - case _ => ko + case _ => ko } } } @@ -58,14 +58,14 @@ class EntityTest extends Specification { } "initialize" in { - val obj : EntityTestClass = new EntityTestClass() + val obj: EntityTestClass = new EntityTestClass() obj.Position mustEqual Vector3(0f, 0f, 0f) obj.Orientation mustEqual Vector3(0f, 0f, 0f) obj.Velocity.isEmpty mustEqual true } "mutate and access" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.Position = Vector3(1f, 1f, 1f) obj.Orientation = Vector3(2f, 2f, 2f) obj.Velocity = Vector3(3f, 3f, 3f) @@ -76,61 +76,61 @@ class EntityTest extends Specification { } "clamp Orientation" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.Orientation = Vector3(-1f, 361f, -0f) obj.Orientation mustEqual Vector3(359f, 1f, 0f) } "is moving (at all)" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.Velocity.isEmpty mustEqual true obj.isMoving mustEqual false obj.Velocity = Vector3.Zero obj.isMoving mustEqual false - obj.Velocity = Vector3(1,0,0) + obj.Velocity = Vector3(1, 0, 0) obj.isMoving mustEqual true obj.Velocity = None obj.isMoving mustEqual false } "is moving (Vector3 comparison)" in { - val obj : EntityTestClass = new EntityTestClass - val test1 = Vector3(1,0,0) - val test2 = Vector3(2,0,0) + val obj: EntityTestClass = new EntityTestClass + val test1 = Vector3(1, 0, 0) + val test2 = Vector3(2, 0, 0) obj.Velocity.isEmpty mustEqual true obj.isMoving mustEqual false obj.isMoving(test1) mustEqual false obj.isMoving(test2) mustEqual false - obj.Velocity = Vector3(1,0,0) + obj.Velocity = Vector3(1, 0, 0) obj.isMoving(test1) mustEqual true obj.isMoving(test2) mustEqual false - obj.Velocity = Vector3(3,0,0) + obj.Velocity = Vector3(3, 0, 0) obj.isMoving(test1) mustEqual true obj.isMoving(test2) mustEqual true - obj.Velocity = Vector3(1,1,0) + obj.Velocity = Vector3(1, 1, 0) obj.isMoving(test1) mustEqual true obj.isMoving(test2) mustEqual false } "is moving (Float comparison)" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.Velocity.isEmpty mustEqual true obj.isMoving mustEqual false obj.isMoving(1) mustEqual false obj.isMoving(2) mustEqual false obj.isMoving(4) mustEqual false - obj.Velocity = Vector3(1,0,0) + obj.Velocity = Vector3(1, 0, 0) obj.isMoving(1) mustEqual true obj.isMoving(2) mustEqual false obj.isMoving(4) mustEqual false - obj.Velocity = Vector3(3,0,0) + obj.Velocity = Vector3(3, 0, 0) obj.isMoving(1) mustEqual true obj.isMoving(2) mustEqual true obj.isMoving(4) mustEqual true - obj.Velocity = Vector3(1,1,1) + obj.Velocity = Vector3(1, 1, 1) obj.isMoving(1) mustEqual true obj.isMoving(2) mustEqual true obj.isMoving(4) mustEqual false @@ -144,65 +144,62 @@ class EntityTest extends Specification { } "error while not set" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID must throwA[NoGUIDException] } "error if set to an invalid GUID before being set to a valid GUID" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID must throwA[NoGUIDException] try { obj.GUID = StalePlanetSideGUID(1) ko - } - catch { - case AssigningGUIDException(_, _, _, _ : StalePlanetSideGUID) => ok - case _ : Throwable => ko + } catch { + case AssigningGUIDException(_, _, _, _: StalePlanetSideGUID) => ok + case _: Throwable => ko } } "work after valid mutation" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) } "raise complaint about subsequent mutations using a valid GUID" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) try { obj.GUID = ValidPlanetSideGUID(1) ko - } - catch { + } catch { case AssigningGUIDException(_, _, _, ValidPlanetSideGUID(1)) => ok - case _ : Throwable => ko + case _: Throwable => ko } } "ignore subsequent mutations using an invalid GUID" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) try { obj.GUID = StalePlanetSideGUID(1) ko - } - catch { - case AssigningGUIDException(_, _, _, _ : StalePlanetSideGUID) => ok - case _ : Throwable => ko + } catch { + case AssigningGUIDException(_, _, _, _: StalePlanetSideGUID) => ok + case _: Throwable => ko } } "invalidate does nothing by default" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.Invalidate() obj.GUID must throwA[NoGUIDException] } "invalidate changes the nature of the previous valid mutation" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) obj.GUID.isInstanceOf[ValidPlanetSideGUID] mustEqual true @@ -212,7 +209,7 @@ class EntityTest extends Specification { } "setting an invalid GUID after invalidating the previous valid mutation still raises complaint" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) obj.GUID.isInstanceOf[ValidPlanetSideGUID] mustEqual true @@ -224,7 +221,7 @@ class EntityTest extends Specification { } "setting a valid GUID after invalidating correctly sets the new valid GUID" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) obj.GUID.isInstanceOf[ValidPlanetSideGUID] mustEqual true @@ -237,7 +234,7 @@ class EntityTest extends Specification { } "setting the same valid GUID after invalidating correctly resets the valid GUID" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.GUID = PlanetSideGUID(1051) obj.GUID mustEqual PlanetSideGUID(1051) obj.GUID.isInstanceOf[ValidPlanetSideGUID] mustEqual true @@ -250,19 +247,19 @@ class EntityTest extends Specification { } "report not having a GUID when not set" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.HasGUID mustEqual false } "report having a GUID when a valid GUID is set" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.HasGUID mustEqual false obj.GUID = PlanetSideGUID(1051) obj.HasGUID mustEqual true } "report not having a GUID after invalidating (staleness)" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.HasGUID mustEqual false obj.GUID = PlanetSideGUID(1051) obj.HasGUID mustEqual true @@ -273,7 +270,7 @@ class EntityTest extends Specification { } "report having a GUID after setting a valid GUID, after invalidating" in { - val obj : EntityTestClass = new EntityTestClass + val obj: EntityTestClass = new EntityTestClass obj.HasGUID mustEqual false obj.GUID = PlanetSideGUID(1051) obj.HasGUID mustEqual true diff --git a/common/src/test/scala/objects/EquipmentSlotTest.scala b/common/src/test/scala/objects/EquipmentSlotTest.scala index 08af787d..4697cac7 100644 --- a/common/src/test/scala/objects/EquipmentSlotTest.scala +++ b/common/src/test/scala/objects/EquipmentSlotTest.scala @@ -27,7 +27,7 @@ class EquipmentSlotTest extends Specification { } "hold equipment" in { - val obj = new EquipmentSlot() + val obj = new EquipmentSlot() val equipment = Tool(beamer) obj.Equipment = None @@ -68,7 +68,7 @@ class EquipmentSlotTest extends Specification { obj.Equipment = Tool(beamer) obj.Equipment match { case Some(_) => ; - case None => ko + case None => ko } obj.Size mustEqual EquipmentSize.Pistol @@ -77,7 +77,7 @@ class EquipmentSlotTest extends Specification { } "not hold wrong-sized equipment" in { - val obj = new EquipmentSlot() + val obj = new EquipmentSlot() val equipment = Tool(suppressor) obj.Equipment = None @@ -116,7 +116,7 @@ class EquipmentSlotTest extends Specification { } "hold equipment" in { - val obj = new OffhandEquipmentSlot(EquipmentSize.Pistol) + val obj = new OffhandEquipmentSlot(EquipmentSize.Pistol) val equipment = Tool(beamer) obj.Equipment = None diff --git a/common/src/test/scala/objects/EquipmentTest.scala b/common/src/test/scala/objects/EquipmentTest.scala index f95ae025..2cdad93d 100644 --- a/common/src/test/scala/objects/EquipmentTest.scala +++ b/common/src/test/scala/objects/EquipmentTest.scala @@ -143,13 +143,13 @@ class EquipmentTest extends Specification { } "construct" in { - val obj : Tool = Tool(fury_weapon_systema) + val obj: Tool = Tool(fury_weapon_systema) obj.Definition.ObjectId mustEqual fury_weapon_systema.ObjectId } "fire mode" in { //explanation: fury_weapon_systema has one fire mode and that fire mode is our only option - val obj : Tool = Tool(fury_weapon_systema) + val obj: Tool = Tool(fury_weapon_systema) obj.Magazine = obj.MaxMagazine obj.Magazine mustEqual obj.Definition.FireModes.head.Magazine //fmode = 0 @@ -188,7 +188,7 @@ class EquipmentTest extends Specification { "multiple fire modes" in { //explanation: sample_weapon has two fire modes; each fire mode has a different ammunition type - val obj : Tool = Tool(punisher) + val obj: Tool = Tool(punisher) //fmode = 0 obj.FireModeIndex mustEqual 0 obj.FireMode.Magazine mustEqual 30 @@ -207,7 +207,7 @@ class EquipmentTest extends Specification { "multiple types of ammunition" in { //explanation: obj has one fire mode and two ammunitions; adjusting the AmmoType changes between them - val obj : Tool = Tool(flechette) + val obj: Tool = Tool(flechette) //ammo = 0 obj.AmmoTypeIndex mustEqual 0 obj.AmmoType mustEqual Ammo.shotgun_shell @@ -348,19 +348,19 @@ class EquipmentTest extends Specification { } "construct" in { - val obj : Kit = Kit(medkit) + val obj: Kit = Kit(medkit) obj.Definition.ObjectId mustEqual medkit.ObjectId } } "ConstructionItem" should { "construct" in { - val obj : ConstructionItem = ConstructionItem(GlobalDefinitions.ace) + val obj: ConstructionItem = ConstructionItem(GlobalDefinitions.ace) obj.Definition.ObjectId mustEqual GlobalDefinitions.ace.ObjectId } "fire modes" in { - val obj : ConstructionItem = ConstructionItem(GlobalDefinitions.ace) + val obj: ConstructionItem = ConstructionItem(GlobalDefinitions.ace) obj.AmmoType mustEqual DeployedItem.boomer obj.NextFireMode obj.AmmoType mustEqual DeployedItem.he_mine @@ -373,7 +373,7 @@ class EquipmentTest extends Specification { } "ammo types" in { - val obj : ConstructionItem = ConstructionItem(GlobalDefinitions.ace) + val obj: ConstructionItem = ConstructionItem(GlobalDefinitions.ace) obj.NextFireMode obj.AmmoType mustEqual DeployedItem.he_mine obj.NextAmmoType @@ -383,7 +383,7 @@ class EquipmentTest extends Specification { } "when switching fire modes, ammo mode resets to the first entry" in { - val obj : ConstructionItem = ConstructionItem(GlobalDefinitions.ace) + val obj: ConstructionItem = ConstructionItem(GlobalDefinitions.ace) obj.NextFireMode obj.AmmoType mustEqual DeployedItem.he_mine obj.NextAmmoType @@ -396,7 +396,7 @@ class EquipmentTest extends Specification { } "qualify certifications that must be met before ammo types may be used" in { - val obj : ConstructionItem = ConstructionItem(GlobalDefinitions.ace) + val obj: ConstructionItem = ConstructionItem(GlobalDefinitions.ace) obj.AmmoType mustEqual DeployedItem.boomer obj.ModePermissions mustEqual Set(CertificationType.CombatEngineering) obj.NextFireMode @@ -415,20 +415,20 @@ class EquipmentTest extends Specification { } "construct" in { - val obj : SimpleItem = SimpleItem(remote_electronics_kit) + val obj: SimpleItem = SimpleItem(remote_electronics_kit) obj.Definition.ObjectId mustEqual remote_electronics_kit.ObjectId } } "BoomerTrigger" should { "construct" in { - val obj : BoomerTrigger = new BoomerTrigger + val obj: BoomerTrigger = new BoomerTrigger obj.Definition.ObjectId mustEqual boomer_trigger.ObjectId obj.Companion mustEqual None } "boomer trigger has a companion object referenced by GUID" in { - val obj : BoomerTrigger = new BoomerTrigger + val obj: BoomerTrigger = new BoomerTrigger obj.Companion mustEqual None obj.Companion = PlanetSideGUID(1) obj.Companion.contains(PlanetSideGUID(1)) mustEqual true diff --git a/common/src/test/scala/objects/ExoSuitTest.scala b/common/src/test/scala/objects/ExoSuitTest.scala index f1437dc7..2e2f13c6 100644 --- a/common/src/test/scala/objects/ExoSuitTest.scala +++ b/common/src/test/scala/objects/ExoSuitTest.scala @@ -17,7 +17,7 @@ class ExoSuitTest extends Specification { obj.InventoryOffset mustEqual 0 obj.SuitType mustEqual ExoSuitType.Standard obj.Holsters.length mustEqual 5 - obj.Holsters.foreach(slot => { if(slot != EquipmentSize.Blocked) { ko } }) + obj.Holsters.foreach(slot => { if (slot != EquipmentSize.Blocked) { ko } }) ok } @@ -89,7 +89,7 @@ class ExoSuitTest extends Specification { } "produce a copy of the definition" in { - val obj = ExoSuitDefinition(ExoSuitType.Standard) + val obj = ExoSuitDefinition(ExoSuitType.Standard) val obj2 = obj.Use obj eq obj2 } @@ -103,7 +103,7 @@ class ExoSuitTest extends Specification { obj.InventoryOffset mustEqual 0 obj.SuitType mustEqual ExoSuitType.Standard obj.Holsters.length mustEqual 5 - obj.Holsters.foreach(slot => { if(slot != EquipmentSize.Blocked) { ko } }) + obj.Holsters.foreach(slot => { if (slot != EquipmentSize.Blocked) { ko } }) obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal } @@ -120,7 +120,7 @@ class ExoSuitTest extends Specification { } "produce a separate copy of the definition" in { - val obj = SpecialExoSuitDefinition(ExoSuitType.Standard) + val obj = SpecialExoSuitDefinition(ExoSuitType.Standard) val obj2 = obj.Use obj ne obj2 } @@ -128,24 +128,60 @@ class ExoSuitTest extends Specification { "ExoSuitDefinition.Select" should { "produce common, shared instances of exo suits" in { - ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) - ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) - ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) - ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) + ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Standard, + PlanetSideEmpire.VS + ) + ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Agile, + PlanetSideEmpire.VS + ) + ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Reinforced, + PlanetSideEmpire.VS + ) + ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Infiltration, + PlanetSideEmpire.VS + ) } "produce common, shared instances of exo suits across factions" in { - ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.TR) - ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.NC) + ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Standard, + PlanetSideEmpire.TR + ) + ExoSuitDefinition.Select(ExoSuitType.Standard, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Standard, + PlanetSideEmpire.NC + ) - ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.TR) - ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.NC) + ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Agile, + PlanetSideEmpire.TR + ) + ExoSuitDefinition.Select(ExoSuitType.Agile, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Agile, + PlanetSideEmpire.NC + ) - ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.TR) - ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.NC) + ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Reinforced, + PlanetSideEmpire.TR + ) + ExoSuitDefinition.Select(ExoSuitType.Reinforced, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Reinforced, + PlanetSideEmpire.NC + ) - ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.TR) - ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.NC) + ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Infiltration, + PlanetSideEmpire.TR + ) + ExoSuitDefinition.Select(ExoSuitType.Infiltration, PlanetSideEmpire.VS) eq ExoSuitDefinition.Select( + ExoSuitType.Infiltration, + PlanetSideEmpire.NC + ) } "can select max for TR" in { diff --git a/common/src/test/scala/objects/FacilityTurretTest.scala b/common/src/test/scala/objects/FacilityTurretTest.scala index 23f6ab9b..c43e6071 100644 --- a/common/src/test/scala/objects/FacilityTurretTest.scala +++ b/common/src/test/scala/objects/FacilityTurretTest.scala @@ -30,14 +30,14 @@ class FacilityTurretTest extends Specification { obj.ReserveAmmunition mustEqual false obj.FactionLocked mustEqual true obj.MaxHealth mustEqual 0 - obj.MountPoints mustEqual mutable.HashMap.empty[Int,Int] + obj.MountPoints mustEqual mutable.HashMap.empty[Int, Int] } "construct" in { val obj = FacilityTurret(GlobalDefinitions.manned_turret) obj.Weapons.size mustEqual 1 obj.Weapons(1).Equipment match { - case Some(tool : Tool) => + case Some(tool: Tool) => tool.Definition mustEqual GlobalDefinitions.phalanx_sgl_hevgatcan case _ => ko @@ -56,7 +56,7 @@ class FacilityTurretTest extends Specification { val obj = FacilityTurret(GlobalDefinitions.manned_turret) obj.Upgrade = TurretUpgrade.None obj.Weapons(1).Equipment match { - case Some(tool : Tool) => + case Some(tool: Tool) => tool.Definition mustEqual GlobalDefinitions.phalanx_sgl_hevgatcan tool.FireModeIndex mustEqual 0 tool.NextFireMode @@ -67,7 +67,7 @@ class FacilityTurretTest extends Specification { //upgrade obj.Upgrade = TurretUpgrade.AVCombo obj.Weapons(1).Equipment match { - case Some(tool : Tool) => + case Some(tool: Tool) => tool.Definition mustEqual GlobalDefinitions.phalanx_avcombo tool.FireModeIndex mustEqual 0 tool.ProjectileType mustEqual GlobalDefinitions.phalanx_projectile.ProjectileType @@ -80,7 +80,7 @@ class FacilityTurretTest extends Specification { //revert obj.Upgrade = TurretUpgrade.None obj.Weapons(1).Equipment match { - case Some(tool : Tool) => + case Some(tool: Tool) => tool.Definition mustEqual GlobalDefinitions.phalanx_sgl_hevgatcan case _ => ko @@ -101,7 +101,7 @@ class FacilityTurretControl1Test extends ActorTest { class FacilityTurretControl2Test extends ActorTest { val player = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj = FacilityTurret(GlobalDefinitions.manned_turret) + val obj = FacilityTurret(GlobalDefinitions.manned_turret) obj.GUID = PlanetSideGUID(1) obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control") val bldg = Building("Building", guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building) @@ -117,7 +117,7 @@ class FacilityTurretControl2Test extends ActorTest { obj.Actor ! Mountable.TryMount(player, 0) val reply = receiveOne(300 milliseconds) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -128,7 +128,7 @@ class FacilityTurretControl2Test extends ActorTest { class FacilityTurretControl3Test extends ActorTest { val player = Player(Avatar("", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj = FacilityTurret(GlobalDefinitions.manned_turret) + val obj = FacilityTurret(GlobalDefinitions.manned_turret) obj.GUID = PlanetSideGUID(1) obj.Actor = system.actorOf(Props(classOf[FacilityTurretControl], obj), "turret-control") val bldg = Building("Building", guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building) @@ -143,7 +143,7 @@ class FacilityTurretControl3Test extends ActorTest { obj.Actor ! Mountable.TryMount(player, 0) val reply = receiveOne(300 milliseconds) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanNotMount]) case _ => assert(false) @@ -171,7 +171,7 @@ class FacilityTurretControl4Test extends ActorTest { obj.Actor ! Mountable.TryMount(player, 0) val reply = receiveOne(300 milliseconds) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -186,10 +186,10 @@ class FacilityTurretControlRestorationTest extends ActorTest { override def SetupNumberPools() = {} GUID(guid) } - val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 + val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -202,7 +202,8 @@ class FacilityTurretControlRestorationTest extends ActorTest { turret.Position = Vector3(1, 0, 0) val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() @@ -224,47 +225,57 @@ class FacilityTurretControlRestorationTest extends ActorTest { "RepairableTurretWeapon" should { "handle repairs and restoration" in { turret.Health = turret.Definition.RepairRestoresAt - 1 //initial state manip - turret.Destroyed = true //initial state manip + turret.Destroyed = true //initial state manip assert(turret.Health < turret.Definition.RepairRestoresAt) assert(turret.Destroyed) turret.Actor ! CommonMessages.Use(player1, Some(tool)) val msg12345 = avatarProbe.receiveN(5, 500 milliseconds) - val msg4 = vehicleProbe.receiveOne(500 milliseconds) + val msg4 = vehicleProbe.receiveOne(500 milliseconds) assert( msg12345.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(8), _, PlanetSideGUID(7), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(8), _, PlanetSideGUID(7), _)) + ) => + true case _ => false } ) assert( msg12345(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg12345(2) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 50, 0)) => true - case _ => false + case _ => false } ) assert( msg12345(3) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 51, 0)) => true - case _ => false + case _ => false } ) assert( msg12345(4) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) assert( msg4 match { - case VehicleServiceMessage("test", VehicleAction.EquipmentInSlot(_, PlanetSideGUID(2), 1, t)) if t eq turretWeapon => true + case VehicleServiceMessage("test", VehicleAction.EquipmentInSlot(_, PlanetSideGUID(2), 1, t)) + if t eq turretWeapon => + true case _ => false } ) diff --git a/common/src/test/scala/objects/FactionAffinityTest.scala b/common/src/test/scala/objects/FactionAffinityTest.scala index c06f822e..1f3b4bc0 100644 --- a/common/src/test/scala/objects/FactionAffinityTest.scala +++ b/common/src/test/scala/objects/FactionAffinityTest.scala @@ -43,7 +43,14 @@ class FactionAffinityTest extends Specification { "inherits affinity from owner 2" in { val obj = new Door(GlobalDefinitions.door) - val bldg = new Building("Building", building_guid = 0, map_id = 1, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) + val bldg = new Building( + "Building", + building_guid = 0, + map_id = 1, + Zone.Nowhere, + StructureType.Building, + GlobalDefinitions.building + ) obj.Owner = bldg obj.Faction mustEqual PlanetSideEmpire.NEUTRAL @@ -108,25 +115,27 @@ class FactionAffinity3Test extends ActorTest { object FactionAffinityTest { import net.psforever.objects.serverobject.affinity.FactionAffinityBehavior - private class AffinityControl(obj : FactionAffinity) extends Actor - with FactionAffinityBehavior.Check - with FactionAffinityBehavior.Convert { + private class AffinityControl(obj: FactionAffinity) + extends Actor + with FactionAffinityBehavior.Check + with FactionAffinityBehavior.Convert { override def FactionObject = obj - def receive = checkBehavior.orElse(convertBehavior).orElse { case _ => } + def receive = checkBehavior.orElse(convertBehavior).orElse { case _ => } } - def SetUpAgent(implicit system : ActorSystem) = { + def SetUpAgent(implicit system: ActorSystem) = { val obj = new Vehicle(GlobalDefinitions.quadstealth) obj.Actor = system.actorOf(Props(classOf[FactionAffinityTest.AffinityControl], obj), "test") obj } - def FreeFactionObject : FactionAffinity = new FactionAffinity() { - private var faction : PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL - def Faction : PlanetSideEmpire.Value = faction - override def Faction_=(fac : PlanetSideEmpire.Value) : PlanetSideEmpire.Value = { - faction = fac - faction + def FreeFactionObject: FactionAffinity = + new FactionAffinity() { + private var faction: PlanetSideEmpire.Value = PlanetSideEmpire.NEUTRAL + def Faction: PlanetSideEmpire.Value = faction + override def Faction_=(fac: PlanetSideEmpire.Value): PlanetSideEmpire.Value = { + faction = fac + faction + } } - } -} \ No newline at end of file +} diff --git a/common/src/test/scala/objects/FireModeTest.scala b/common/src/test/scala/objects/FireModeTest.scala index b6a49056..9764b27e 100644 --- a/common/src/test/scala/objects/FireModeTest.scala +++ b/common/src/test/scala/objects/FireModeTest.scala @@ -3,7 +3,12 @@ package objects import net.psforever.objects.definition.ToolDefinition import net.psforever.objects.{GlobalDefinitions, Tool} -import net.psforever.objects.equipment.{EquipmentSize, FireModeDefinition, InfiniteFireModeDefinition, PelletFireModeDefinition} +import net.psforever.objects.equipment.{ + EquipmentSize, + FireModeDefinition, + InfiniteFireModeDefinition, + PelletFireModeDefinition +} import org.specs2.mutable._ class FireModeTest extends Specification { diff --git a/common/src/test/scala/objects/GeneratorTest.scala b/common/src/test/scala/objects/GeneratorTest.scala index 2f3cceaa..3cedfac8 100644 --- a/common/src/test/scala/objects/GeneratorTest.scala +++ b/common/src/test/scala/objects/GeneratorTest.scala @@ -47,7 +47,7 @@ class GeneratorControlConstructTest extends ActorTest { class GeneratorControlDamageTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -59,8 +59,9 @@ class GeneratorControlDamageTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 @@ -75,11 +76,19 @@ class GeneratorControlDamageTest extends ActorTest { guid.register(gen, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -100,12 +109,13 @@ class GeneratorControlDamageTest extends ActorTest { assert( msg_avatar.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(1) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 15)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 15)) => + true case _ => false } ) @@ -119,7 +129,7 @@ class GeneratorControlDamageTest extends ActorTest { class GeneratorControlCriticalTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -131,8 +141,9 @@ class GeneratorControlCriticalTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 @@ -147,17 +158,25 @@ class GeneratorControlCriticalTest extends ActorTest { guid.register(gen, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) ) val applyDamageTo = resolved.damage_model.Calculate(resolved) - val halfHealth = gen.Definition.MaxHealth / 2 + val halfHealth = gen.Definition.MaxHealth / 2 expectNoMessage(200 milliseconds) //we're not testing that the math is correct @@ -169,24 +188,25 @@ class GeneratorControlCriticalTest extends ActorTest { assert(gen.Condition == PlanetSideGeneratorState.Normal) gen.Actor ! Vitality.Damage(applyDamageTo) - val msg_avatar = avatarProbe.receiveN(2, 500 milliseconds) + val msg_avatar = avatarProbe.receiveN(2, 500 milliseconds) val msg_building = buildingProbe.receiveOne(500 milliseconds) assert( msg_avatar.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(1) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 15)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 15)) => + true case _ => false } ) assert( msg_building match { case Building.AmenityStateChange(o) => o eq gen - case _ => false + case _ => false } ) assert(gen.Health < halfHealth) @@ -199,7 +219,7 @@ class GeneratorControlCriticalTest extends ActorTest { class GeneratorControlDestroyedTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -211,8 +231,9 @@ class GeneratorControlDestroyedTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn player1.Actor = TestProbe().ref @@ -228,11 +249,19 @@ class GeneratorControlDestroyedTest extends ActorTest { guid.register(gen, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -253,7 +282,8 @@ class GeneratorControlDestroyedTest extends ActorTest { buildingProbe.expectNoMessage(200 milliseconds) assert( msg_avatar1 match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => + true case _ => false } ) @@ -263,31 +293,33 @@ class GeneratorControlDestroyedTest extends ActorTest { avatarProbe.expectNoMessage(9 seconds) buildingProbe.expectNoMessage(50 milliseconds) //no prior messages - val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file + val msg_avatar2 = avatarProbe.receiveN(3, 1000 milliseconds) //see DamageableEntity test file val msg_building = buildingProbe.receiveOne(200 milliseconds) assert( msg_building match { case Building.AmenityStateChange(o) => o eq gen - case _ => false + case _ => false } ) assert( msg_avatar2.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar2(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg_avatar2(2) match { - case AvatarServiceMessage("test", - AvatarAction.SendResponse(_, TriggerEffectMessage(PlanetSideGUID(2), "explosion_generator", None, None)) - ) => true + case AvatarServiceMessage( + "test", + AvatarAction.SendResponse(_, TriggerEffectMessage(PlanetSideGUID(2), "explosion_generator", None, None)) + ) => + true case _ => false } ) @@ -310,7 +342,7 @@ class GeneratorControlKillsTest extends ActorTest { */ val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -322,13 +354,15 @@ class GeneratorControlKillsTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val player1Probe = TestProbe() player1.Actor = player1Probe.ref - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Female, 1, CharacterVoice.Mute)) //guid=4 - player2.Position = Vector3(15, 0, 0) //>14m from generator; lives + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Female, 1, CharacterVoice.Mute)) //guid=4 + player2.Position = Vector3(15, 0, 0) //>14m from generator; lives player2.Spawn val player2Probe = TestProbe() player2.Actor = player2Probe.ref @@ -346,11 +380,19 @@ class GeneratorControlKillsTest extends ActorTest { guid.register(player1, 3) guid.register(player2, 4) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -373,13 +415,15 @@ class GeneratorControlKillsTest extends ActorTest { player2Probe.expectNoMessage(200 milliseconds) assert( msg_avatar1.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => + true case _ => false } ) assert( msg_avatar1(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => true + case AvatarServiceMessage("TestCharacter2", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => + true case _ => false } ) @@ -388,39 +432,41 @@ class GeneratorControlKillsTest extends ActorTest { assert(gen.Condition == PlanetSideGeneratorState.Normal) val msg_building = buildingProbe.receiveOne(10500 milliseconds) - val msg_avatar2 = avatarProbe.receiveN(3, 200 milliseconds) - val msg_player1 = player1Probe.receiveOne(100 milliseconds) + val msg_avatar2 = avatarProbe.receiveN(3, 200 milliseconds) + val msg_player1 = player1Probe.receiveOne(100 milliseconds) player2Probe.expectNoMessage(200 milliseconds) assert( msg_building match { case Building.AmenityStateChange(o) => o eq gen - case _ => false + case _ => false } ) assert( msg_avatar2.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar2(1) match { case AvatarServiceMessage("test", AvatarAction.Destroy(PlanetSideGUID(2), _, _, Vector3(1, 0, 0))) => true - case _ => false + case _ => false } ) assert( msg_avatar2(2) match { - case AvatarServiceMessage("test", - AvatarAction.SendResponse(_, TriggerEffectMessage(PlanetSideGUID(2), "explosion_generator", None, None)) - ) => true + case AvatarServiceMessage( + "test", + AvatarAction.SendResponse(_, TriggerEffectMessage(PlanetSideGUID(2), "explosion_generator", None, None)) + ) => + true case _ => false } ) assert( msg_player1 match { - case _ @ Player.Die() => true - case _ => false + case _ @Player.Die() => true + case _ => false } ) assert(gen.Health == 0) @@ -437,8 +483,9 @@ class GeneratorControlNotDestroyTwice extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val gen = Generator(GlobalDefinitions.generator) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val gen = Generator(GlobalDefinitions.generator) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(gen, 2) @@ -449,17 +496,25 @@ class GeneratorControlNotDestroyTwice extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref building.Actor = buildingProbe.ref - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -506,7 +561,7 @@ class GeneratorControlNotDestroyTwice extends ActorTest { class GeneratorControlNotDamageIfExplodingTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -518,8 +573,9 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val player1Probe = TestProbe() player1.Actor = player1Probe.ref @@ -536,11 +592,19 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest { guid.register(gen, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -562,7 +626,8 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest { player1Probe.expectNoMessage(200 milliseconds) assert( msg_avatar match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => + true case _ => false } ) @@ -590,7 +655,7 @@ class GeneratorControlNotDamageIfExplodingTest extends ActorTest { class GeneratorControlNotRepairIfExplodingTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -602,8 +667,9 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val player1Probe = TestProbe() player1.Actor = player1Probe.ref @@ -620,11 +686,19 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest { guid.register(gen, 2) guid.register(player1, 3) - val weapon = Tool(GlobalDefinitions.phoenix) //decimator + val weapon = Tool(GlobalDefinitions.phoenix) //decimator val projectile = weapon.Projectile val resolved = ResolvedProjectile( ProjectileResolution.Splash, - Projectile(projectile, weapon.Definition, weapon.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + weapon.Definition, + weapon.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), SourceEntry(gen), gen.DamageModel, Vector3(1, 0, 0) @@ -650,7 +724,8 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest { player1Probe.expectNoMessage(200 milliseconds) assert( msg_avatar1 match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 16)) => + true case _ => false } ) @@ -661,13 +736,13 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest { //once gen.Actor ! CommonMessages.Use(player1, Some(tool)) //repair? - avatarProbe.expectNoMessage(1000 milliseconds) //no messages + avatarProbe.expectNoMessage(1000 milliseconds) //no messages buildingProbe.expectNoMessage(200 milliseconds) player1Probe.expectNoMessage(200 milliseconds) assert(gen.Health == 1) //twice gen.Actor ! CommonMessages.Use(player1, Some(tool)) //repair? - avatarProbe.expectNoMessage(1000 milliseconds) //no messages + avatarProbe.expectNoMessage(1000 milliseconds) //no messages buildingProbe.expectNoMessage(200 milliseconds) player1Probe.expectNoMessage(200 milliseconds) assert(gen.Health == 1) @@ -678,7 +753,7 @@ class GeneratorControlNotRepairIfExplodingTest extends ActorTest { class GeneratorControlRepairPastRestorePoint extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(5)) val zone = new Zone("test", new ZoneMap("test"), 0) { - override def SetupNumberPools() = { } + override def SetupNumberPools() = {} GUID(guid) } val avatarProbe = TestProbe() @@ -690,8 +765,9 @@ class GeneratorControlRepairPastRestorePoint extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 - player1.Position = Vector3(14, 0, 0) //<14m from generator; dies + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + player1.Position = Vector3(14, 0, 0) //<14m from generator; dies player1.Spawn val player1Probe = TestProbe() player1.Actor = player1Probe.ref @@ -724,38 +800,46 @@ class GeneratorControlRepairPastRestorePoint extends ActorTest { assert(gen.Destroyed) gen.Actor ! CommonMessages.Use(player1, Some(tool)) //repair - val msg_avatar = avatarProbe.receiveN(4, 500 milliseconds) //expected + val msg_avatar = avatarProbe.receiveN(4, 500 milliseconds) //expected val msg_building = buildingProbe.receiveOne(200 milliseconds) assert( msg_avatar.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(_, InventoryStateMessage(ValidPlanetSideGUID(5), _, ValidPlanetSideGUID(4), _)) - ) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(_, InventoryStateMessage(ValidPlanetSideGUID(5), _, ValidPlanetSideGUID(4), _)) + ) => + true case _ => false } ) assert( msg_avatar(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(2) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 17)) => true + case AvatarServiceMessage("TestCharacter1", AvatarAction.GenericObjectAction(_, PlanetSideGUID(1), 17)) => + true case _ => false } ) assert( msg_avatar(3) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, RepairMessage(ValidPlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, RepairMessage(ValidPlanetSideGUID(2), _)) + ) => + true case _ => false } ) assert( msg_building match { case Building.AmenityStateChange(o) => o eq gen - case _ => false + case _ => false } ) assert(gen.Condition == PlanetSideGeneratorState.Normal) diff --git a/common/src/test/scala/objects/IFFLockTest.scala b/common/src/test/scala/objects/IFFLockTest.scala index a82973ad..2f72ce5f 100644 --- a/common/src/test/scala/objects/IFFLockTest.scala +++ b/common/src/test/scala/objects/IFFLockTest.scala @@ -21,7 +21,7 @@ class IFFLockTest extends Specification { //TODO internal hacking logic will be re-written later "keep track of its orientation as a North-corrected vector" in { - val ulp = math.ulp(1) + val ulp = math.ulp(1) val lock = IFFLock(GlobalDefinitions.lock_external) lock.Orientation = Vector3(0, 0, 0) //face North @@ -61,7 +61,7 @@ class IFFLockControl2Test extends ActorTest { assert(lock.HackedBy.isEmpty) lock.Actor ! CommonMessages.Hack(player, lock) - Thread.sleep(500L) //blocking + Thread.sleep(500L) //blocking assert(lock.HackedBy.nonEmpty) //TODO rewrite later } } @@ -75,20 +75,27 @@ class IFFLockControl3Test extends ActorTest { assert(lock.HackedBy.isEmpty) lock.Actor ! CommonMessages.Hack(player, lock) - Thread.sleep(500L) //blocking + Thread.sleep(500L) //blocking assert(lock.HackedBy.nonEmpty) //TODO rewrite later lock.Actor ! CommonMessages.ClearHack() - Thread.sleep(500L) //blocking + Thread.sleep(500L) //blocking assert(lock.HackedBy.isEmpty) //TODO rewrite } } } object IFFLockControlTest { - def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, IFFLock) = { + 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", building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) + lock.Owner = new Building( + "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) } diff --git a/common/src/test/scala/objects/ImplantTest.scala b/common/src/test/scala/objects/ImplantTest.scala index 81b3d797..056deb52 100644 --- a/common/src/test/scala/objects/ImplantTest.scala +++ b/common/src/test/scala/objects/ImplantTest.scala @@ -8,11 +8,11 @@ import org.specs2.mutable._ class ImplantTest extends Specification { val sample = new ImplantDefinition(8) //variant of sensor shield/silent run - sample.InitializationDuration = 90 //1:30 - sample.ActivationStaminaCost = 3 - sample.StaminaCost = 1 - sample.CostIntervalDefault = 1000 - sample.CostIntervalByExoSuitHashMap += ExoSuitType.Agile -> 500 + sample.InitializationDuration = 90 //1:30 + sample.ActivationStaminaCost = 3 + sample.StaminaCost = 1 + sample.CostIntervalDefault = 1000 + sample.CostIntervalByExoSuitHashMap += ExoSuitType.Agile -> 500 "ImplantDefinition" should { "define" in { @@ -20,7 +20,7 @@ class ImplantTest extends Specification { sample.ActivationStaminaCost mustEqual 3 sample.StaminaCost mustEqual 1 sample.GetCostIntervalByExoSuit(ExoSuitType.Reinforced) mustEqual 1000 // Default value - sample.GetCostIntervalByExoSuit(ExoSuitType.Agile) mustEqual 500 // Overridden value + sample.GetCostIntervalByExoSuit(ExoSuitType.Agile) mustEqual 500 // Overridden value sample.Type mustEqual ImplantType.SilentRun } } diff --git a/common/src/test/scala/objects/InventoryTest.scala b/common/src/test/scala/objects/InventoryTest.scala index b5b1b4d6..534dee6f 100644 --- a/common/src/test/scala/objects/InventoryTest.scala +++ b/common/src/test/scala/objects/InventoryTest.scala @@ -9,14 +9,12 @@ import net.psforever.types.PlanetSideGUID import org.specs2.mutable._ import scala.collection.mutable.ListBuffer -import scala.util.Success +import scala.util.{Success, Failure} class InventoryTest extends Specification { - val - bullet9mmBox1 = AmmoBox(bullet_9mm) + val bullet9mmBox1 = AmmoBox(bullet_9mm) bullet9mmBox1.GUID = PlanetSideGUID(1) - val - bullet9mmBox2 = AmmoBox(bullet_9mm) + val bullet9mmBox2 = AmmoBox(bullet_9mm) bullet9mmBox2.GUID = PlanetSideGUID(2) "InventoryDisarrayException" should { @@ -33,67 +31,67 @@ class InventoryTest extends Specification { "GridInventory" should { "construct" in { - val obj : GridInventory = GridInventory() + val obj: GridInventory = GridInventory() obj.TotalCapacity mustEqual 1 obj.Capacity mustEqual 1 } "resize" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj.TotalCapacity mustEqual 54 obj.Capacity mustEqual 54 obj.Size mustEqual 0 } "check for collision with inventory border" in { - val obj : GridInventory = GridInventory(3, 3) + val obj: GridInventory = GridInventory(3, 3) //safe obj.CheckCollisionsAsList(0, 3, 3) mustEqual Success(Nil) //right obj.CheckCollisionsAsList(-1, 3, 3) match { - case scala.util.Failure(fail) => + case Failure(fail) => fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true case _ => ko } //left obj.CheckCollisionsAsList(1, 3, 3) match { - case scala.util.Failure(fail) => + case Failure(fail) => fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true case _ => ko } //bottom obj.CheckCollisionsAsList(3, 3, 3) match { - case scala.util.Failure(fail) => + case Failure(fail) => fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true case _ => ko } } "check for item collision (right insert)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 0 -> bullet9mmBox1 obj.Capacity mustEqual 45 - val w = bullet9mmBox2.Tile.Width - val h = bullet9mmBox2.Tile.Height + val w = bullet9mmBox2.Tile.Width + val h = bullet9mmBox2.Tile.Height val list0 = obj.CheckCollisionsAsList(0, w, h) obj.CheckCollisionsAsList(0, w, h) match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list1 = obj.CheckCollisionsAsList(1, w, h) list1 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list2 = obj.CheckCollisionsAsList(2, w, h) list2 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list3 = obj.CheckCollisionsAsList(3, w, h) list3 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0 obj.CheckCollisionsAsGrid(1, w, h) mustEqual list1 @@ -104,30 +102,30 @@ class InventoryTest extends Specification { } "check for item collision (left insert)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 3 -> bullet9mmBox1 obj.Capacity mustEqual 45 - val w = bullet9mmBox2.Tile.Width - val h = bullet9mmBox2.Tile.Height + val w = bullet9mmBox2.Tile.Width + val h = bullet9mmBox2.Tile.Height val list0 = obj.CheckCollisionsAsList(3, w, h) list0 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list1 = obj.CheckCollisionsAsList(2, w, h) list1 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list2 = obj.CheckCollisionsAsList(1, w, h) list2 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list3 = obj.CheckCollisionsAsList(0, w, h) list3 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } obj.CheckCollisionsAsGrid(3, w, h) mustEqual list0 obj.CheckCollisionsAsGrid(2, w, h) mustEqual list1 @@ -138,30 +136,30 @@ class InventoryTest extends Specification { } "check for item collision (below insert)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 0 -> bullet9mmBox1 obj.Capacity mustEqual 45 - val w = bullet9mmBox2.Tile.Width - val h = bullet9mmBox2.Tile.Height + val w = bullet9mmBox2.Tile.Width + val h = bullet9mmBox2.Tile.Height val list0 = obj.CheckCollisionsAsList(0, w, h) list0 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list1 = obj.CheckCollisionsAsList(9, w, h) list1 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list2 = obj.CheckCollisionsAsList(18, w, h) list2 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list3 = obj.CheckCollisionsAsList(27, w, h) list3 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0 obj.CheckCollisionsAsGrid(9, w, h) mustEqual list1 @@ -172,30 +170,30 @@ class InventoryTest extends Specification { } "check for item collision (above insert)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 27 -> bullet9mmBox1 obj.Capacity mustEqual 45 - val w = bullet9mmBox2.Tile.Width - val h = bullet9mmBox2.Tile.Height + val w = bullet9mmBox2.Tile.Width + val h = bullet9mmBox2.Tile.Height val list0 = obj.CheckCollisionsAsList(27, w, h) list0 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list1 = obj.CheckCollisionsAsList(18, w, h) list1 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list2 = obj.CheckCollisionsAsList(9, w, h) list2 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list3 = obj.CheckCollisionsAsList(0, w, h) list3 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } obj.CheckCollisionsAsGrid(27, w, h) mustEqual list0 obj.CheckCollisionsAsGrid(18, w, h) mustEqual list1 @@ -218,50 +216,50 @@ class InventoryTest extends Specification { - - - - - - - - - - - - - - - - - - - - - - - - */ - val obj : GridInventory = GridInventory(12, 9) + val obj: GridInventory = GridInventory(12, 9) obj += 39 -> bullet9mmBox1 obj.Capacity mustEqual 99 //108 - 9 - val w = bullet9mmBox2.Tile.Width - val h = bullet9mmBox2.Tile.Height + val w = bullet9mmBox2.Tile.Width + val h = bullet9mmBox2.Tile.Height val list0 = obj.CheckCollisionsAsList(0, w, h) list0 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } val list1 = obj.CheckCollisionsAsList(13, w, h) list1 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list2 = obj.CheckCollisionsAsList(6, w, h) list2 match { - case scala.util.Success(list) =>list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } val list3 = obj.CheckCollisionsAsList(17, w, h) list3 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list4 = obj.CheckCollisionsAsList(72, w, h) list4 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } val list5 = obj.CheckCollisionsAsList(61, w, h) list5 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } val list6 = obj.CheckCollisionsAsList(78, w, h) list6 match { - case scala.util.Success(list) => list.isEmpty mustEqual true - case scala.util.Failure(_) => ko + case Success(list) => list.isEmpty mustEqual true + case Failure(_) => ko } val list7 = obj.CheckCollisionsAsList(65, w, h) list7 match { - case scala.util.Success(list) => list.length mustEqual 1 - case scala.util.Failure(_) => ko + case Success(list) => list.length mustEqual 1 + case Failure(_) => ko } obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0 obj.CheckCollisionsAsGrid(13, w, h) mustEqual list1 @@ -276,7 +274,7 @@ class InventoryTest extends Specification { } "insert item" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(Nil) obj += 2 -> bullet9mmBox1 obj.TotalCapacity mustEqual 54 @@ -288,7 +286,7 @@ class InventoryTest extends Specification { } "not insert into an invalid slot (n < 0)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj.Capacity mustEqual 54 obj.Size mustEqual 0 obj.Insert(-1, bullet9mmBox1) must throwA[IndexOutOfBoundsException] @@ -297,7 +295,7 @@ class InventoryTest extends Specification { } "not insert into an invalid slot (n > capacity)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj.Capacity mustEqual 54 obj.Size mustEqual 0 obj.Insert(55, bullet9mmBox1) must throwA[IndexOutOfBoundsException] @@ -306,7 +304,7 @@ class InventoryTest extends Specification { } "block insertion if item collision" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 0 -> bullet9mmBox1 obj.Capacity mustEqual 45 obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) mustEqual true @@ -315,44 +313,44 @@ class InventoryTest extends Specification { } "insert items quickly (risk overwriting entries)" in { - val obj : GridInventory = GridInventory(6, 6) + val obj: GridInventory = GridInventory(6, 6) (obj += 0 -> bullet9mmBox1) mustEqual true - val collision1 = obj.CheckCollisions(0,1,1) - obj.CheckCollisions(1,1,1) mustEqual collision1 - obj.CheckCollisions(2,1,1) mustEqual collision1 - obj.CheckCollisions(6,1,1) mustEqual collision1 - obj.CheckCollisions(7,1,1) mustEqual collision1 - obj.CheckCollisions(8,1,1) mustEqual collision1 - obj.CheckCollisions(12,1,1) mustEqual collision1 - obj.CheckCollisions(13,1,1) mustEqual collision1 - obj.CheckCollisions(14,1,1) mustEqual collision1 + val collision1 = obj.CheckCollisions(0, 1, 1) + obj.CheckCollisions(1, 1, 1) mustEqual collision1 + obj.CheckCollisions(2, 1, 1) mustEqual collision1 + obj.CheckCollisions(6, 1, 1) mustEqual collision1 + obj.CheckCollisions(7, 1, 1) mustEqual collision1 + obj.CheckCollisions(8, 1, 1) mustEqual collision1 + obj.CheckCollisions(12, 1, 1) mustEqual collision1 + obj.CheckCollisions(13, 1, 1) mustEqual collision1 + obj.CheckCollisions(14, 1, 1) mustEqual collision1 (obj += 7 -> bullet9mmBox2) mustEqual false //can not insert overlapping object - obj.CheckCollisions(0,1,1) mustEqual collision1 - obj.CheckCollisions(1,1,1) mustEqual collision1 - obj.CheckCollisions(2,1,1) mustEqual collision1 - obj.CheckCollisions(6,1,1) mustEqual collision1 - obj.CheckCollisions(7,1,1) mustEqual collision1 - obj.CheckCollisions(8,1,1) mustEqual collision1 - obj.CheckCollisions(12,1,1) mustEqual collision1 - obj.CheckCollisions(13,1,1) mustEqual collision1 - obj.CheckCollisions(14,1,1) mustEqual collision1 + obj.CheckCollisions(0, 1, 1) mustEqual collision1 + obj.CheckCollisions(1, 1, 1) mustEqual collision1 + obj.CheckCollisions(2, 1, 1) mustEqual collision1 + obj.CheckCollisions(6, 1, 1) mustEqual collision1 + obj.CheckCollisions(7, 1, 1) mustEqual collision1 + obj.CheckCollisions(8, 1, 1) mustEqual collision1 + obj.CheckCollisions(12, 1, 1) mustEqual collision1 + obj.CheckCollisions(13, 1, 1) mustEqual collision1 + obj.CheckCollisions(14, 1, 1) mustEqual collision1 obj.InsertQuickly(7, bullet9mmBox2) mustEqual true //overwrite - val collision2 = obj.CheckCollisions(7,1,1) - obj.CheckCollisions(0,1,1) mustEqual collision1 - obj.CheckCollisions(1,1,1) mustEqual collision1 - obj.CheckCollisions(2,1,1) mustEqual collision1 - obj.CheckCollisions(6,1,1) mustEqual collision1 - obj.CheckCollisions(7,1,1) mustEqual collision2 - obj.CheckCollisions(8,1,1) mustEqual collision2 - obj.CheckCollisions(12,1,1) mustEqual collision1 - obj.CheckCollisions(13,1,1) mustEqual collision2 - obj.CheckCollisions(14,1,1) mustEqual collision2 + val collision2 = obj.CheckCollisions(7, 1, 1) + obj.CheckCollisions(0, 1, 1) mustEqual collision1 + obj.CheckCollisions(1, 1, 1) mustEqual collision1 + obj.CheckCollisions(2, 1, 1) mustEqual collision1 + obj.CheckCollisions(6, 1, 1) mustEqual collision1 + obj.CheckCollisions(7, 1, 1) mustEqual collision2 + obj.CheckCollisions(8, 1, 1) mustEqual collision2 + obj.CheckCollisions(12, 1, 1) mustEqual collision1 + obj.CheckCollisions(13, 1, 1) mustEqual collision2 + obj.CheckCollisions(14, 1, 1) mustEqual collision2 } "clear all items" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 2 -> bullet9mmBox1 obj.Size mustEqual 1 obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) mustEqual true @@ -362,7 +360,7 @@ class InventoryTest extends Specification { } "remove item" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj += 0 -> bullet9mmBox1 obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) mustEqual true obj -= PlanetSideGUID(1) @@ -372,17 +370,17 @@ class InventoryTest extends Specification { } "fail to remove from an invalid slot (n < 0)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) (obj -= -1) mustEqual false } "fail to remove from an invalid slot (n > capacity)" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) (obj -= 55) mustEqual false } "unblock insertion on item removal" in { - val obj : GridInventory = GridInventory(9, 6) + val obj: GridInventory = GridInventory(9, 6) obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(Nil) obj += 23 -> bullet9mmBox1 obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) mustEqual true @@ -402,8 +400,8 @@ class InventoryTest extends Specification { val sampleDef63 = new SimpleItemDefinition(149) sampleDef63.Tile = InventoryTile.Tile63 - val obj : GridInventory = GridInventory(9, 9) - obj += 0 -> SimpleItem(sampleDef22) + val obj: GridInventory = GridInventory(9, 9) + obj += 0 -> SimpleItem(sampleDef22) obj += 20 -> SimpleItem(sampleDef63) obj += 56 -> SimpleItem(sampleDef33) obj.Fit(InventoryTile.Tile33) match { @@ -425,7 +423,7 @@ class InventoryTest extends Specification { val sampleDef4 = new SimpleItemDefinition(149) sampleDef4.Tile = InventoryTile.Tile63 - val list : ListBuffer[InventoryItem] = ListBuffer() + val list: ListBuffer[InventoryItem] = ListBuffer() list += new InventoryItem(SimpleItem(sampleDef2), -1) list += new InventoryItem(SimpleItem(sampleDef3), -1) list += new InventoryItem(SimpleItem(sampleDef1), -1) @@ -434,7 +432,7 @@ class InventoryTest extends Specification { list += new InventoryItem(SimpleItem(sampleDef4), -1) list += new InventoryItem(SimpleItem(sampleDef2), -1) list += new InventoryItem(SimpleItem(sampleDef3), -1) - val obj : GridInventory = GridInventory(9, 9) + val obj: GridInventory = GridInventory(9, 9) val (elements, out) = GridInventory.recoverInventory(list.toList, obj) elements.length mustEqual 6 @@ -443,13 +441,13 @@ class InventoryTest extends Specification { obj.Insert(item.start, item.obj) mustEqual true }) out.head.Definition.Tile mustEqual InventoryTile.Tile22 //did not fit - out(1).Definition.Tile mustEqual InventoryTile.Tile22 //did not fit + out(1).Definition.Tile mustEqual InventoryTile.Tile22 //did not fit ok } "confirm integrity of inventory as a grid" in { - val obj : GridInventory = GridInventory(6, 6) - (obj += 0 -> bullet9mmBox1) mustEqual true + val obj: GridInventory = GridInventory(6, 6) + (obj += 0 -> bullet9mmBox1) mustEqual true (obj += 21 -> bullet9mmBox2) mustEqual true //artificially pollute the inventory grid-space obj.SetCells(10, 1, 1, 3) @@ -458,8 +456,8 @@ class InventoryTest extends Specification { } "confirm integrity of inventory as a list (no overlap)" in { - val obj : GridInventory = GridInventory(9, 9) - val gun = Tool(suppressor) + val obj: GridInventory = GridInventory(9, 9) + val gun = Tool(suppressor) obj.InsertQuickly(0, gun) obj.InsertQuickly(33, bullet9mmBox1) //nothing should overlap @@ -468,9 +466,9 @@ class InventoryTest extends Specification { } "confirm integrity of inventory as a list (normal overlap)" in { - val obj : GridInventory = GridInventory(9, 9) - val gun = Tool(suppressor) - val bullet9mmBox3 = AmmoBox(bullet_9mm) + val obj: GridInventory = GridInventory(9, 9) + val gun = Tool(suppressor) + val bullet9mmBox3 = AmmoBox(bullet_9mm) obj.InsertQuickly(0, gun) obj.InsertQuickly(18, bullet9mmBox1) obj.InsertQuickly(38, bullet9mmBox2) @@ -482,13 +480,11 @@ class InventoryTest extends Specification { lists.size mustEqual 2 lists.foreach { list => val out = list.map { _.obj } - if(out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) { + if (out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) { ok - } - else if(out.size == 2 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2)) { + } else if (out.size == 2 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2)) { ok - } - else { + } else { ko } } @@ -496,10 +492,10 @@ class InventoryTest extends Specification { } "confirm integrity of inventory as a list (triple overlap)" in { - val obj : GridInventory = GridInventory(9, 9) - val gun = Tool(suppressor) - val bullet9mmBox3 = AmmoBox(bullet_9mm) - val bullet9mmBox4 = AmmoBox(bullet_9mm) + val obj: GridInventory = GridInventory(9, 9) + val gun = Tool(suppressor) + val bullet9mmBox3 = AmmoBox(bullet_9mm) + val bullet9mmBox4 = AmmoBox(bullet_9mm) obj.InsertQuickly(0, gun) obj.InsertQuickly(18, bullet9mmBox1) obj.InsertQuickly(36, bullet9mmBox2) @@ -512,13 +508,13 @@ class InventoryTest extends Specification { lists.size mustEqual 2 lists.foreach { list => val out = list.map { _.obj } - if(out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) { + if (out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) { ok - } - else if(out.size == 3 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2) && out.contains(bullet9mmBox3)) { + } else if ( + out.size == 3 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2) && out.contains(bullet9mmBox3) + ) { ok - } - else { + } else { ko } } @@ -528,14 +524,14 @@ class InventoryTest extends Specification { "InventoryEquiupmentSlot" should { "insert, collide, insert" in { - val obj : GridInventory = GridInventory(7, 7) + val obj: GridInventory = GridInventory(7, 7) obj.Slot(16).Equipment = bullet9mmBox1 //confirm all squares - obj.Slot( 8).Equipment.nonEmpty mustEqual false - obj.Slot( 9).Equipment.nonEmpty mustEqual false - obj.Slot( 10).Equipment.nonEmpty mustEqual false - obj.Slot( 11).Equipment.nonEmpty mustEqual false - obj.Slot( 12).Equipment.nonEmpty mustEqual false + obj.Slot(8).Equipment.nonEmpty mustEqual false + obj.Slot(9).Equipment.nonEmpty mustEqual false + obj.Slot(10).Equipment.nonEmpty mustEqual false + obj.Slot(11).Equipment.nonEmpty mustEqual false + obj.Slot(12).Equipment.nonEmpty mustEqual false // obj.Slot(15).Equipment.nonEmpty mustEqual false obj.Slot(16).Equipment.nonEmpty mustEqual true @@ -563,11 +559,11 @@ class InventoryTest extends Specification { // //remove obj.Slot(16).Equipment = None - obj.Slot( 8).Equipment.nonEmpty mustEqual false - obj.Slot( 9).Equipment.nonEmpty mustEqual false - obj.Slot( 10).Equipment.nonEmpty mustEqual false - obj.Slot( 11).Equipment.nonEmpty mustEqual false - obj.Slot( 12).Equipment.nonEmpty mustEqual false + obj.Slot(8).Equipment.nonEmpty mustEqual false + obj.Slot(9).Equipment.nonEmpty mustEqual false + obj.Slot(10).Equipment.nonEmpty mustEqual false + obj.Slot(11).Equipment.nonEmpty mustEqual false + obj.Slot(12).Equipment.nonEmpty mustEqual false // obj.Slot(15).Equipment.nonEmpty mustEqual false obj.Slot(16).Equipment.nonEmpty mustEqual false @@ -594,11 +590,11 @@ class InventoryTest extends Specification { obj.Slot(40).Equipment.nonEmpty mustEqual false //insert again obj.Slot(16).Equipment = bullet9mmBox2 - obj.Slot( 8).Equipment.nonEmpty mustEqual false - obj.Slot( 9).Equipment.nonEmpty mustEqual false - obj.Slot( 10).Equipment.nonEmpty mustEqual false - obj.Slot( 11).Equipment.nonEmpty mustEqual false - obj.Slot( 12).Equipment.nonEmpty mustEqual false + obj.Slot(8).Equipment.nonEmpty mustEqual false + obj.Slot(9).Equipment.nonEmpty mustEqual false + obj.Slot(10).Equipment.nonEmpty mustEqual false + obj.Slot(11).Equipment.nonEmpty mustEqual false + obj.Slot(12).Equipment.nonEmpty mustEqual false // obj.Slot(15).Equipment.nonEmpty mustEqual false obj.Slot(16).Equipment.nonEmpty mustEqual true @@ -626,11 +622,11 @@ class InventoryTest extends Specification { // //remove obj.Slot(16).Equipment = None - obj.Slot( 8).Equipment.nonEmpty mustEqual false - obj.Slot( 9).Equipment.nonEmpty mustEqual false - obj.Slot( 10).Equipment.nonEmpty mustEqual false - obj.Slot( 11).Equipment.nonEmpty mustEqual false - obj.Slot( 12).Equipment.nonEmpty mustEqual false + obj.Slot(8).Equipment.nonEmpty mustEqual false + obj.Slot(9).Equipment.nonEmpty mustEqual false + obj.Slot(10).Equipment.nonEmpty mustEqual false + obj.Slot(11).Equipment.nonEmpty mustEqual false + obj.Slot(12).Equipment.nonEmpty mustEqual false // obj.Slot(15).Equipment.nonEmpty mustEqual false obj.Slot(16).Equipment.nonEmpty mustEqual false diff --git a/common/src/test/scala/objects/LoadoutTest.scala b/common/src/test/scala/objects/LoadoutTest.scala index a5b98381..b4188051 100644 --- a/common/src/test/scala/objects/LoadoutTest.scala +++ b/common/src/test/scala/objects/LoadoutTest.scala @@ -10,7 +10,7 @@ import org.specs2.mutable._ class LoadoutTest extends Specification { val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1) - def CreatePlayer() : Player = { + def CreatePlayer(): Player = { new Player(avatar) { Slot(0).Equipment = Tool(beamer) Slot(2).Equipment = Tool(suppressor) @@ -37,7 +37,7 @@ class LoadoutTest extends Specification { "create a loadout that contains a player's inventory" in { val player = CreatePlayer() - val obj = Loadout.Create(player, "test").asInstanceOf[InfantryLoadout] + val obj = Loadout.Create(player, "test").asInstanceOf[InfantryLoadout] obj.label mustEqual "test" obj.exosuit mustEqual ExoSuitType.Standard @@ -92,7 +92,7 @@ class LoadoutTest extends Specification { "distinguish MAX subtype information" in { val player = CreatePlayer() - val slot = player.Slot(0) + val slot = player.Slot(0) slot.Equipment = None //only an unequipped slot can have its Equipment Size changed (Rifle -> Max) player.ExoSuit = ExoSuitType.MAX @@ -115,7 +115,7 @@ class LoadoutTest extends Specification { "players have additional uniform subtype" in { val player = CreatePlayer() - val slot = player.Slot(0) + val slot = player.Slot(0) slot.Equipment = None //only an unequipped slot can have its Equipment Size changed (Rifle -> Max) player.ExoSuit = ExoSuitType.Standard diff --git a/common/src/test/scala/objects/MountableTest.scala b/common/src/test/scala/objects/MountableTest.scala index 42248537..2c03598c 100644 --- a/common/src/test/scala/objects/MountableTest.scala +++ b/common/src/test/scala/objects/MountableTest.scala @@ -26,7 +26,7 @@ class MountableControl2Test extends ActorTest { "MountableControl" should { "let a player mount" in { val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj = new MountableTest.MountableTestObject + val obj = new MountableTest.MountableTestObject obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") val msg = Mountable.TryMount(player, 0) @@ -48,7 +48,7 @@ class MountableControl3Test extends ActorTest { "block a player from mounting" in { val player1 = Player(Avatar("test1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj = new MountableTest.MountableTestObject + val obj = new MountableTest.MountableTestObject obj.Actor = system.actorOf(Props(classOf[MountableTest.MountableTestControl], obj), "mountable") obj.Actor ! Mountable.TryMount(player1, 0) receiveOne(Duration.create(100, "ms")) //consume reply @@ -68,28 +68,30 @@ class MountableControl3Test extends ActorTest { object MountableTest { class MountableTestObject extends PlanetSideServerObject with Mountable { - private val seats : Map[Int, Seat] = Map( 0 -> new Seat(new SeatDefinition()) ) - def Seats : Map[Int, Seat] = seats - def Seat(seatNum : Int) : Option[Seat] = seats.get(seatNum) - def MountPoints : Map[Int, Int] = Map(1 -> 0) - def GetSeatFromMountPoint(mount : Int) : Option[Int] = MountPoints.get(mount) - def PassengerInSeat(user : Player) : Option[Int] = { - if(seats(0).Occupant.contains(user)) { + private val seats: Map[Int, Seat] = Map(0 -> new Seat(new SeatDefinition())) + def Seats: Map[Int, Seat] = seats + def Seat(seatNum: Int): Option[Seat] = seats.get(seatNum) + def MountPoints: Map[Int, Int] = Map(1 -> 0) + def GetSeatFromMountPoint(mount: Int): Option[Int] = MountPoints.get(mount) + def PassengerInSeat(user: Player): Option[Int] = { + if (seats(0).Occupant.contains(user)) { Some(0) - } - else { + } else { None } } GUID = PlanetSideGUID(1) //eh whatever - def Faction = PlanetSideEmpire.TR - def Definition : ObjectDefinition = null + def Faction = PlanetSideEmpire.TR + def Definition: ObjectDefinition = null } - class MountableTestControl(obj : PlanetSideServerObject with Mountable) extends Actor with MountableBehavior.Mount with MountableBehavior.Dismount { + class MountableTestControl(obj: PlanetSideServerObject with Mountable) + extends Actor + with MountableBehavior.Mount + with MountableBehavior.Dismount { override def MountableObject = obj - def receive : Receive = mountBehavior.orElse(dismountBehavior) + def receive: Receive = mountBehavior.orElse(dismountBehavior) } } diff --git a/common/src/test/scala/objects/PlayerControlTest.scala b/common/src/test/scala/objects/PlayerControlTest.scala index 7c4da5c4..3068e065 100644 --- a/common/src/test/scala/objects/PlayerControlTest.scala +++ b/common/src/test/scala/objects/PlayerControlTest.scala @@ -28,13 +28,15 @@ class PlayerControlHealTest extends ActorTest { val avatarProbe = TestProbe() zone.AvatarEvents = avatarProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn player1.Position = Vector3(2, 0, 0) guid.register(player1.Locker, 5) player1.Actor = system.actorOf(Props(classOf[PlayerControl], player1), "player1-control") - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player2.Zone = zone player2.Spawn guid.register(player2.Locker, 6) @@ -49,7 +51,7 @@ class PlayerControlHealTest extends ActorTest { "PlayerControl" should { "handle being healed by another player" in { - val originalHealth = player2.Health = 0 //initial state manip + val originalHealth = player2.Health = 0 //initial state manip val originalMagazine = tool.Magazine assert(originalHealth < player2.MaxHealth) @@ -57,25 +59,37 @@ class PlayerControlHealTest extends ActorTest { val msg_avatar = avatarProbe.receiveN(4, 500 milliseconds) assert( msg_avatar.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(2) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 55, 1)) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 55, 1) + ) => + true case _ => false } ) assert( msg_avatar(3) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) @@ -83,7 +97,7 @@ class PlayerControlHealTest extends ActorTest { assert(raisedHealth > originalHealth) assert(tool.Magazine < originalMagazine) - player1.Position = Vector3(10,0,0) //moved more than 5m away + player1.Position = Vector3(10, 0, 0) //moved more than 5m away player2.Actor ! CommonMessages.Use(player1, Some(tool)) avatarProbe.expectNoMessage(500 milliseconds) assert(raisedHealth == player2.Health) @@ -100,7 +114,8 @@ class PlayerControlHealSelfTest extends ActorTest { val avatarProbe = TestProbe() zone.AvatarEvents = avatarProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn player1.Position = Vector3(2, 0, 0) @@ -115,7 +130,7 @@ class PlayerControlHealSelfTest extends ActorTest { "PlayerControl" should { "handle healing own self" in { - val originalHealth = player1.Health = 1 //initial state manip + val originalHealth = player1.Health = 1 //initial state manip val originalMagazine = tool.Magazine assert(originalHealth < player1.MaxHealth) @@ -123,33 +138,41 @@ class PlayerControlHealSelfTest extends ActorTest { val msg_avatar1 = avatarProbe.receiveN(2, 500 milliseconds) assert( msg_avatar1.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar1(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) val raisedHealth = player1.Health assert(raisedHealth > originalHealth) assert(tool.Magazine < originalMagazine) - player1.Position = Vector3(10,0,0) //trying to move away from oneself doesn't work + player1.Position = Vector3(10, 0, 0) //trying to move away from oneself doesn't work player1.Actor ! CommonMessages.Use(player1, Some(tool)) val msg_avatar2 = avatarProbe.receiveN(2, 500 milliseconds) assert( msg_avatar2.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar2(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) assert(player1.Health > raisedHealth) @@ -166,13 +189,15 @@ class PlayerControlRepairTest extends ActorTest { val avatarProbe = TestProbe() zone.AvatarEvents = avatarProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn player1.Position = Vector3(2, 0, 0) guid.register(player1.Locker, 5) player1.Actor = system.actorOf(Props(classOf[PlayerControl], player1), "player1-control") - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player2.Zone = zone player2.Spawn guid.register(player2.Locker, 6) @@ -187,7 +212,7 @@ class PlayerControlRepairTest extends ActorTest { "PlayerControl" should { "handle being repaired by another player" in { - val originalArmor = player2.Armor = 0 //initial state manip + val originalArmor = player2.Armor = 0 //initial state manip val originalMagazine = tool.Magazine assert(originalArmor < player2.MaxArmor) @@ -195,31 +220,47 @@ class PlayerControlRepairTest extends ActorTest { val msg_avatar = avatarProbe.receiveN(5, 1000 milliseconds) assert( msg_avatar.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 4, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(2) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 56, 1)) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 56, 1) + ) => + true case _ => false } ) assert( msg_avatar(3) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) assert( msg_avatar(4) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 56, 1)) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 56, 1) + ) => + true case _ => false } ) @@ -227,7 +268,7 @@ class PlayerControlRepairTest extends ActorTest { assert(tool.Magazine < originalMagazine) val fixedArmor = player2.Armor - player1.Position = Vector3(10,0,0) //moved more than 5m away + player1.Position = Vector3(10, 0, 0) //moved more than 5m away player2.Actor ! CommonMessages.Use(player1, Some(tool)) avatarProbe.expectNoMessage(500 milliseconds) assert(fixedArmor == player2.Armor) @@ -244,7 +285,8 @@ class PlayerControlRepairSelfTest extends ActorTest { val avatarProbe = TestProbe() zone.AvatarEvents = avatarProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn player1.Position = Vector3(2, 0, 0) @@ -259,7 +301,7 @@ class PlayerControlRepairSelfTest extends ActorTest { "PlayerControl" should { "handle repairing own self" in { - val originalArmor = player1.Armor = 0 //initial state manip + val originalArmor = player1.Armor = 0 //initial state manip val originalMagazine = tool.Magazine assert(originalArmor < player1.MaxArmor) @@ -267,33 +309,41 @@ class PlayerControlRepairSelfTest extends ActorTest { val msg_avatar1 = avatarProbe.receiveN(2, 500 milliseconds) assert( msg_avatar1.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar1(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 4, _)) => true - case _ => false + case _ => false } ) val fixedArmor = player1.Armor assert(fixedArmor > originalArmor) assert(tool.Magazine < originalMagazine) - player1.Position = Vector3(10,0,0) //trying to move away from oneself doesn't work + player1.Position = Vector3(10, 0, 0) //trying to move away from oneself doesn't work player1.Actor ! CommonMessages.Use(player1, Some(tool)) val msg_avatar2 = avatarProbe.receiveN(2, 500 milliseconds) assert( msg_avatar2.head match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(_, InventoryStateMessage(PlanetSideGUID(4), _, PlanetSideGUID(3), _)) + ) => + true case _ => false } ) assert( msg_avatar2(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 4, _)) => true - case _ => false + case _ => false } ) assert(player1.Armor > fixedArmor) @@ -308,26 +358,36 @@ class PlayerControlDamageTest extends ActorTest { GUID(guid) } val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn player1.Position = Vector3(2, 0, 0) guid.register(player1.Locker, 5) player1.Actor = system.actorOf(Props(classOf[PlayerControl], player1), "player1-control") - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player2.Zone = zone player2.Spawn guid.register(player2.Locker, 6) player2.Actor = system.actorOf(Props(classOf[PlayerControl], player2), "player2-control") - val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 - val projectile = tool.Projectile + val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 + val projectile = tool.Projectile val playerSource = SourceEntry(player2) val resolved = ResolvedProjectile( ProjectileResolution.Hit, - Projectile(projectile, tool.Definition, tool.FireMode, PlayerSource(player1), 0, Vector3(2, 0, 0), Vector3(-1, 0, 0)), + Projectile( + projectile, + tool.Definition, + tool.FireMode, + PlayerSource(player1), + 0, + Vector3(2, 0, 0), + Vector3(-1, 0, 0) + ), playerSource, player1.DamageModel, Vector3(1, 0, 0) @@ -343,29 +403,30 @@ class PlayerControlDamageTest extends ActorTest { assert(player2.Health == player2.Definition.DefaultHealth) assert(player2.Armor == player2.MaxArmor) player2.Actor ! Vitality.Damage(applyDamageTo) - val msg_avatar = avatarProbe.receiveN(4, 500 milliseconds) + val msg_avatar = avatarProbe.receiveN(4, 500 milliseconds) val msg_activity = activityProbe.receiveOne(200 milliseconds) assert( msg_avatar.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 4, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(2) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => true + case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => + true case _ => false } ) assert( msg_activity match { - case activity : Zone.HotSpot.Activity => + case activity: Zone.HotSpot.Activity => activity.attacker == PlayerSource(player1) && activity.defender == playerSource && activity.location == Vector3(1, 0, 0) @@ -374,7 +435,11 @@ class PlayerControlDamageTest extends ActorTest { ) assert( msg_avatar(3) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 0, 0)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(Service.defaultPlayerGUID, DamageWithPositionMessage(10, Vector3(2, 0, 0))) + ) => + true case _ => false } ) @@ -395,20 +460,22 @@ class PlayerControlDeathStandingTest extends ActorTest { val activityProbe = TestProbe() zone.Activity = activityProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) guid.register(player1.Locker, 5) player1.Actor = system.actorOf(Props(classOf[PlayerControl], player1), "player1-control") - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player2.Zone = zone player2.Spawn guid.register(player2.Locker, 6) player2.Actor = system.actorOf(Props(classOf[PlayerControl], player2), "player2-control") - val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 - val projectile = tool.Projectile + val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 + val projectile = tool.Projectile val player1Source = SourceEntry(player1) val resolved = ResolvedProjectile( ProjectileResolution.Hit, @@ -428,7 +495,7 @@ class PlayerControlDeathStandingTest extends ActorTest { "handle death" in { player2.Health = player2.Definition.DamageDestroysAt + 1 //initial state manip player2.ExoSuit = ExoSuitType.MAX - player2.Armor = 1 //initial state manip + player2.Armor = 1 //initial state manip player2.Capacitor = 1 //initial state manip assert(player2.Health > player2.Definition.DamageDestroysAt) assert(player2.Armor == 1) @@ -441,49 +508,63 @@ class PlayerControlDeathStandingTest extends ActorTest { assert( msg_avatar.head match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 4, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => true + case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => + true case _ => false } ) assert( msg_avatar(2) match { case AvatarServiceMessage("TestCharacter2", AvatarAction.Killed(PlanetSideGUID(2), None)) => true - case _ => false + case _ => false } ) assert( msg_avatar(3) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(4) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 7, _)) => true + case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 7, _)) => + true case _ => false } ) assert( msg_avatar(5) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(_, DestroyMessage(PlanetSideGUID(2), PlanetSideGUID(2), _, Vector3.Zero))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(_, DestroyMessage(PlanetSideGUID(2), PlanetSideGUID(2), _, Vector3.Zero)) + ) => + true case _ => false } ) assert( msg_avatar(6) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(_, AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, Vector3.Zero, PlanetSideEmpire.NC, true))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse( + _, + AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, Vector3.Zero, PlanetSideEmpire.NC, true) + ) + ) => + true case _ => false } ) assert( msg_avatar(7) match { case AvatarServiceMessage("test", AvatarAction.DestroyDisplay(killer, victim, _, _)) - if killer.Name.equals(player1.Name) && victim.Name.equals(player2.Name) => true + if killer.Name.equals(player1.Name) && victim.Name.equals(player2.Name) => + true case _ => false } ) @@ -505,13 +586,15 @@ class PlayerControlDeathSeatedTest extends ActorTest { val activityProbe = TestProbe() zone.Activity = activityProbe.ref - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=1 player1.Zone = zone player1.Spawn - player1.Position = Vector3(2,0,0) + player1.Position = Vector3(2, 0, 0) guid.register(player1.Locker, 6) player1.Actor = system.actorOf(Props(classOf[PlayerControl], player1), "player1-control") - val player2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 + val player2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=2 player2.Zone = zone player2.Spawn guid.register(player2.Locker, 7) @@ -520,8 +603,8 @@ class PlayerControlDeathSeatedTest extends ActorTest { val vehicle = Vehicle(GlobalDefinitions.quadstealth) //guid=5 vehicle.Faction = player2.Faction - val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 - val projectile = tool.Projectile + val tool = Tool(GlobalDefinitions.suppressor) //guid 3 & 4 + val projectile = tool.Projectile val player1Source = SourceEntry(player1) val resolved = ResolvedProjectile( ProjectileResolution.Hit, @@ -541,7 +624,7 @@ class PlayerControlDeathSeatedTest extends ActorTest { "PlayerControl" should { "handle death when seated (in something)" in { player2.Health = player2.Definition.DamageDestroysAt + 1 //initial state manip - player2.VehicleSeated = vehicle.GUID //initial state manip, anything + player2.VehicleSeated = vehicle.GUID //initial state manip, anything vehicle.Seats(0).Occupant = player2 player2.Armor = 0 //initial state manip assert(player2.Health > player2.Definition.DamageDestroysAt) @@ -552,58 +635,81 @@ class PlayerControlDeathSeatedTest extends ActorTest { activityProbe.expectNoMessage(200 milliseconds) assert( msg_avatar.head match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => true + case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 2, _)) => + true case _ => false } ) assert( msg_avatar(1) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.Killed(PlanetSideGUID(2), Some(PlanetSideGUID(5)))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.Killed(PlanetSideGUID(2), Some(PlanetSideGUID(5))) + ) => + true case _ => false } ) assert( msg_avatar(2) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(_, - ObjectDetachMessage(PlanetSideGUID(5), PlanetSideGUID(2), _, _, _, _)) - ) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(_, ObjectDetachMessage(PlanetSideGUID(5), PlanetSideGUID(2), _, _, _, _)) + ) => + true case _ => false } ) assert( msg_avatar(3) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 29, 1)) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 29, 1) + ) => + true case _ => false } ) assert( msg_avatar(4) match { case AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(2), PlanetSideGUID(2), _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(5) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg_avatar(6) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(_, DestroyMessage(PlanetSideGUID(2), PlanetSideGUID(2), _, Vector3.Zero))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse(_, DestroyMessage(PlanetSideGUID(2), PlanetSideGUID(2), _, Vector3.Zero)) + ) => + true case _ => false } ) assert( msg_avatar(7) match { - case AvatarServiceMessage("TestCharacter2", AvatarAction.SendResponse(_, AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, Vector3.Zero, PlanetSideEmpire.NC, true))) => true + case AvatarServiceMessage( + "TestCharacter2", + AvatarAction.SendResponse( + _, + AvatarDeadStateMessage(DeadState.Dead, 300000, 300000, Vector3.Zero, PlanetSideEmpire.NC, true) + ) + ) => + true case _ => false } ) assert( msg_avatar(8) match { case AvatarServiceMessage("test", AvatarAction.DestroyDisplay(killer, victim, _, _)) - if killer.Name.equals(player1.Name) && victim.Name.equals(player2.Name) => true + if killer.Name.equals(player1.Name) && victim.Name.equals(player2.Name) => + true case _ => false } ) @@ -613,4 +719,4 @@ class PlayerControlDeathSeatedTest extends ActorTest { } } -object PlayerControlTest { } +object PlayerControlTest {} diff --git a/common/src/test/scala/objects/PlayerTest.scala b/common/src/test/scala/objects/PlayerTest.scala index ee9e43c6..54cd2589 100644 --- a/common/src/test/scala/objects/PlayerTest.scala +++ b/common/src/test/scala/objects/PlayerTest.scala @@ -12,7 +12,13 @@ import org.specs2.mutable._ import scala.util.Success class PlayerTest extends Specification { - def TestPlayer(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : CharacterVoice.Value) : Player = { + def TestPlayer( + name: String, + faction: PlanetSideEmpire.Value, + sex: CharacterGender.Value, + head: Int, + voice: CharacterVoice.Value + ): Player = { new Player(Avatar(name, faction, sex, head, voice)) } @@ -158,13 +164,13 @@ class PlayerTest extends Specification { "has visible slots" in { val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - obj.VisibleSlots mustEqual Set(0,2,4) //Standard + obj.VisibleSlots mustEqual Set(0, 2, 4) //Standard obj.ExoSuit = ExoSuitType.Agile - obj.VisibleSlots mustEqual Set(0,1,2,4) + obj.VisibleSlots mustEqual Set(0, 1, 2, 4) obj.ExoSuit = ExoSuitType.Reinforced - obj.VisibleSlots mustEqual Set(0,1,2,3,4) + obj.VisibleSlots mustEqual Set(0, 1, 2, 3, 4) obj.ExoSuit = ExoSuitType.Infiltration - obj.VisibleSlots mustEqual Set(0,4) + obj.VisibleSlots mustEqual Set(0, 4) obj.ExoSuit = ExoSuitType.MAX obj.VisibleSlots mustEqual Set(0) } @@ -197,12 +203,12 @@ class PlayerTest extends Specification { "remember the last drawn holster" in { val wep1 = SimpleItem(SimpleItemDefinition(149)) val wep2 = SimpleItem(SimpleItemDefinition(149)) - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) obj.Slot(0).Size = EquipmentSize.Pistol obj.Slot(0).Equipment = wep1 obj.Slot(1).Size = EquipmentSize.Pistol obj.Slot(1).Equipment = wep2 - obj.DrawnSlot mustEqual Player.HandsDownSlot //default value + obj.DrawnSlot mustEqual Player.HandsDownSlot //default value obj.LastDrawnSlot mustEqual Player.HandsDownSlot //default value obj.DrawnSlot = 1 @@ -252,13 +258,13 @@ class PlayerTest extends Specification { "search for the smallest available slot in which to store equipment" in { val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - obj.Inventory.Resize(3,3) //fits one item + obj.Inventory.Resize(3, 3) //fits one item obj.Fit(Tool(GlobalDefinitions.beamer)).contains(0) mustEqual true obj.Fit(Tool(GlobalDefinitions.suppressor)).contains(2) mustEqual true - val ammo = AmmoBox(GlobalDefinitions.bullet_9mm) + val ammo = AmmoBox(GlobalDefinitions.bullet_9mm) val ammo2 = AmmoBox(GlobalDefinitions.bullet_9mm) val ammo3 = AmmoBox(GlobalDefinitions.bullet_9mm) obj.Fit(ammo).contains(6) mustEqual true @@ -269,7 +275,7 @@ class PlayerTest extends Specification { } "can use their free hand to hold things" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val ammo = AmmoBox(GlobalDefinitions.bullet_9mm) obj.FreeHand.Equipment.isEmpty mustEqual true @@ -310,16 +316,16 @@ class PlayerTest extends Specification { item } - obj.Find(PlanetSideGUID(1)).contains(0) mustEqual true //holsters - obj.Find(PlanetSideGUID(2)).contains(4) mustEqual true //holsters, melee - obj.Find(PlanetSideGUID(3)).contains(6) mustEqual true //inventory - obj.Find(PlanetSideGUID(4)).isEmpty mustEqual true //can not find in locker-space + obj.Find(PlanetSideGUID(1)).contains(0) mustEqual true //holsters + obj.Find(PlanetSideGUID(2)).contains(4) mustEqual true //holsters, melee + obj.Find(PlanetSideGUID(3)).contains(6) mustEqual true //inventory + obj.Find(PlanetSideGUID(4)).isEmpty mustEqual true //can not find in locker-space obj.Find(PlanetSideGUID(5)).contains(Player.FreeHandSlot) mustEqual true //free hand - obj.Find(PlanetSideGUID(6)).isEmpty mustEqual true //not here + obj.Find(PlanetSideGUID(6)).isEmpty mustEqual true //not here } "does equipment collision checking (are we already holding something there?)" in { - val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val item1 = Tool(beamer) val item2 = Kit(medkit) val item3 = AmmoBox(GlobalDefinitions.bullet_9mm) @@ -341,7 +347,7 @@ class PlayerTest extends Specification { ko } //holsters, nothing - obj.Collisions(6, 1, 1)match { + obj.Collisions(6, 1, 1) match { case Success(List(item)) => item.obj mustEqual item2 item.start mustEqual 6 @@ -349,7 +355,7 @@ class PlayerTest extends Specification { ko } //inventory - obj.Collisions(Player.FreeHandSlot, 1, 1)match { + obj.Collisions(Player.FreeHandSlot, 1, 1) match { case Success(List(item)) => item.obj mustEqual item3 item.start mustEqual Player.FreeHandSlot @@ -386,7 +392,7 @@ class PlayerTest extends Specification { "can get a quick summary of implant slots (two unlocked, one installed)" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) - val temp = new ImplantDefinition(1) + val temp = new ImplantDefinition(1) avatar.Implants(0).Unlocked = true avatar.InstallImplant(new ImplantDefinition(1)) avatar.Implants(1).Unlocked = true @@ -525,12 +531,18 @@ class PlayerTest extends Specification { } "start with a nonexistent cosmetic state" in { - TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5).PersonalStyleFeatures.isEmpty mustEqual true + TestPlayer( + "Chord", + PlanetSideEmpire.TR, + CharacterGender.Male, + 0, + CharacterVoice.Voice5 + ).PersonalStyleFeatures.isEmpty mustEqual true } "will not gain cosmetic state if player does not have a certain amount of BEP" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) obj.PersonalStyleFeatures.isEmpty mustEqual true val (a1, b1) = obj.AddToPersonalStyle(PersonalStyle.Beret) a1.isEmpty mustEqual true @@ -541,7 +553,7 @@ class PlayerTest extends Specification { val (a2, b2) = obj.AddToPersonalStyle(PersonalStyle.Beret) a2.isEmpty mustEqual true b2 match { - case Some(c : Cosmetics) => + case Some(c: Cosmetics) => c.Styles mustEqual Set(PersonalStyle.Beret) case _ => ko @@ -551,19 +563,19 @@ class PlayerTest extends Specification { "will lose cosmetic state" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) avatar.BEP = 2286231 //BR24 obj.AddToPersonalStyle(PersonalStyle.Beret) obj.PersonalStyleFeatures.contains(Cosmetics(Set(PersonalStyle.Beret))) mustEqual true val (a2, b2) = obj.RemoveFromPersonalStyle(PersonalStyle.Beret) a2 match { - case Some(c : Cosmetics) => + case Some(c: Cosmetics) => c.Styles mustEqual Set(PersonalStyle.Beret) case _ => ko } b2 match { - case Some(c : Cosmetics) => + case Some(c: Cosmetics) => c.Styles mustEqual Set.empty case _ => ko @@ -572,7 +584,7 @@ class PlayerTest extends Specification { "will not lose cosmetic state if the player doesn't have any cosmetic state to begin with" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) obj.PersonalStyleFeatures.isEmpty mustEqual true val (a1, b1) = obj.RemoveFromPersonalStyle(PersonalStyle.Beret) a1.isEmpty mustEqual true @@ -581,7 +593,7 @@ class PlayerTest extends Specification { "toggle helmet" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) avatar.BEP = 2286231 obj.PersonalStyleFeatures.isEmpty mustEqual true obj.ToggleHelmet @@ -594,7 +606,7 @@ class PlayerTest extends Specification { "toggle suglasses" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) avatar.BEP = 2286231 obj.PersonalStyleFeatures.isEmpty mustEqual true obj.ToggleShades @@ -607,7 +619,7 @@ class PlayerTest extends Specification { "toggle earpiece" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) avatar.BEP = 2286231 obj.PersonalStyleFeatures.isEmpty mustEqual true obj.ToggleEarpiece @@ -620,7 +632,7 @@ class PlayerTest extends Specification { "toggle between brimmed cap and beret" in { val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) - val obj = Player(avatar) + val obj = Player(avatar) avatar.BEP = 2286231 obj.PersonalStyleFeatures.isEmpty mustEqual true obj.ToggleHat diff --git a/common/src/test/scala/objects/ProjectileTest.scala b/common/src/test/scala/objects/ProjectileTest.scala index 315c8c28..ff50eea7 100644 --- a/common/src/test/scala/objects/ProjectileTest.scala +++ b/common/src/test/scala/objects/ProjectileTest.scala @@ -11,7 +11,7 @@ import org.specs2.mutable.Specification class ProjectileTest extends Specification { val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val fury = Vehicle(GlobalDefinitions.fury) + val fury = Vehicle(GlobalDefinitions.fury) "LocalProjectile" should { "construct" in { @@ -90,9 +90,8 @@ class ProjectileTest extends Specification { Projectiles(31) mustEqual Projectiles.bullet_9mm_projectile try { ProjectileDefinition(Projectiles.bullet_9mm_projectile) //passes - } - catch { - case _ : NoSuchElementException => + } catch { + case _: NoSuchElementException => ko } @@ -163,7 +162,7 @@ class ProjectileTest extends Specification { "SourceEntry" should { "construct for players" in { SourceEntry(player) match { - case o : PlayerSource => + case o: PlayerSource => o.Name mustEqual "TestCharacter" o.Faction mustEqual PlanetSideEmpire.TR o.Seated mustEqual false @@ -181,7 +180,7 @@ class ProjectileTest extends Specification { "construct for vehicles" in { SourceEntry(fury) match { - case o : VehicleSource => + case o: VehicleSource => o.Name mustEqual "Fury" o.Faction mustEqual PlanetSideEmpire.NEUTRAL o.Definition mustEqual GlobalDefinitions.fury @@ -198,7 +197,7 @@ class ProjectileTest extends Specification { "construct for generic object" in { val obj = Locker() SourceEntry(obj) match { - case o : ObjectSource => + case o: ObjectSource => o.obj mustEqual obj o.Name mustEqual "Mb Locker" o.Faction mustEqual PlanetSideEmpire.NEUTRAL @@ -225,7 +224,7 @@ class ProjectileTest extends Specification { obj.ExoSuit = ExoSuitType.Agile sobj match { - case o : PlayerSource => + case o: PlayerSource => o.Name mustEqual "TestCharacter-alt" o.Faction mustEqual PlanetSideEmpire.TR o.Seated mustEqual true @@ -243,16 +242,24 @@ class ProjectileTest extends Specification { "Projectile" should { val beamer_def = GlobalDefinitions.beamer val beamer_wep = Tool(beamer_def) - val firemode = beamer_wep.FireMode + val firemode = beamer_wep.FireMode val projectile = beamer_wep.Projectile "construct" in { - val obj = Projectile(beamer_wep.Projectile, beamer_wep.Definition, beamer_wep.FireMode, PlayerSource(player), beamer_def.ObjectId, Vector3(1.2f, 3.4f, 5.6f), Vector3(0.2f, 0.4f, 0.6f)) + val obj = Projectile( + beamer_wep.Projectile, + beamer_wep.Definition, + beamer_wep.FireMode, + PlayerSource(player), + beamer_def.ObjectId, + Vector3(1.2f, 3.4f, 5.6f), + Vector3(0.2f, 0.4f, 0.6f) + ) obj.profile mustEqual projectile obj.tool_def mustEqual beamer_def obj.fire_mode mustEqual firemode obj.owner match { - case _ : PlayerSource => + case _: PlayerSource => ok case _ => ko @@ -265,16 +272,39 @@ class ProjectileTest extends Specification { } "construct (different attribute)" in { - val obj1 = Projectile(beamer_wep.Projectile, beamer_wep.Definition, beamer_wep.FireMode, player, Vector3(1.2f, 3.4f, 5.6f), Vector3(0.2f, 0.4f, 0.6f)) + val obj1 = Projectile( + beamer_wep.Projectile, + beamer_wep.Definition, + beamer_wep.FireMode, + player, + Vector3(1.2f, 3.4f, 5.6f), + Vector3(0.2f, 0.4f, 0.6f) + ) obj1.attribute_to mustEqual obj1.tool_def.ObjectId - val obj2 = Projectile(beamer_wep.Projectile, beamer_wep.Definition, beamer_wep.FireMode, PlayerSource(player), 65, Vector3(1.2f, 3.4f, 5.6f), Vector3(0.2f, 0.4f, 0.6f)) + val obj2 = Projectile( + beamer_wep.Projectile, + beamer_wep.Definition, + beamer_wep.FireMode, + PlayerSource(player), + 65, + Vector3(1.2f, 3.4f, 5.6f), + Vector3(0.2f, 0.4f, 0.6f) + ) obj2.attribute_to == obj2.tool_def.ObjectId mustEqual false obj2.attribute_to mustEqual 65 } "resolve" in { - val obj = Projectile(projectile, beamer_def, firemode, PlayerSource(player), beamer_def.ObjectId, Vector3.Zero, Vector3.Zero) + val obj = Projectile( + projectile, + beamer_def, + firemode, + PlayerSource(player), + beamer_def.ObjectId, + Vector3.Zero, + Vector3.Zero + ) obj.isResolved mustEqual false obj.isMiss mustEqual false @@ -284,7 +314,15 @@ class ProjectileTest extends Specification { } "missed" in { - val obj = Projectile(projectile, beamer_def, firemode, PlayerSource(player), beamer_def.ObjectId, Vector3.Zero, Vector3.Zero) + val obj = Projectile( + projectile, + beamer_def, + firemode, + PlayerSource(player), + beamer_def.ObjectId, + Vector3.Zero, + Vector3.Zero + ) obj.isResolved mustEqual false obj.isMiss mustEqual false @@ -296,14 +334,28 @@ class ProjectileTest extends Specification { "ResolvedProjectile" should { val beamer_wep = Tool(GlobalDefinitions.beamer) - val p_source = PlayerSource(player) - val player2 = Player(Avatar("TestTarget", PlanetSideEmpire.NC, CharacterGender.Female, 1, CharacterVoice.Mute)) - val p2_source = PlayerSource(player2) - val projectile = Projectile(beamer_wep.Projectile, GlobalDefinitions.beamer, beamer_wep.FireMode, p_source, GlobalDefinitions.beamer.ObjectId, Vector3.Zero, Vector3.Zero) + val p_source = PlayerSource(player) + val player2 = Player(Avatar("TestTarget", PlanetSideEmpire.NC, CharacterGender.Female, 1, CharacterVoice.Mute)) + val p2_source = PlayerSource(player2) + val projectile = Projectile( + beamer_wep.Projectile, + GlobalDefinitions.beamer, + beamer_wep.FireMode, + p_source, + GlobalDefinitions.beamer.ObjectId, + Vector3.Zero, + Vector3.Zero + ) val fury_dm = fury.DamageModel "construct" in { - val obj = ResolvedProjectile(ProjectileResolution.Hit, projectile, PlayerSource(player2), fury_dm, Vector3(1.2f, 3.4f, 5.6f)) + val obj = ResolvedProjectile( + ProjectileResolution.Hit, + projectile, + PlayerSource(player2), + fury_dm, + Vector3(1.2f, 3.4f, 5.6f) + ) obj.resolution mustEqual ProjectileResolution.Hit obj.projectile mustEqual projectile obj.target mustEqual p2_source diff --git a/common/src/test/scala/objects/RepairableTest.scala b/common/src/test/scala/objects/RepairableTest.scala index 9d72fd33..518bf965 100644 --- a/common/src/test/scala/objects/RepairableTest.scala +++ b/common/src/test/scala/objects/RepairableTest.scala @@ -25,7 +25,7 @@ import scala.concurrent.duration._ the generator is used to test basic entity repair essentially, treat it more as a generic entity whose object type is repairable see GeneratorTest in relation to what the generator does above and beyond that during repair -*/ + */ class RepairableEntityRepairTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(10)) val zone = new Zone("test", new ZoneMap("test"), 0) { @@ -33,8 +33,9 @@ class RepairableEntityRepairTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val gen = Generator(GlobalDefinitions.generator) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val gen = Generator(GlobalDefinitions.generator) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(gen, 2) @@ -45,7 +46,7 @@ class RepairableEntityRepairTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -60,26 +61,34 @@ class RepairableEntityRepairTest extends ActorTest { "handle repairs" in { assert(gen.Health == gen.Definition.DefaultHealth) //ideal val originalHealth = gen.Health -= 50 - assert(gen.Health < gen.Definition.DefaultHealth) //damage + assert(gen.Health < gen.Definition.DefaultHealth) //damage gen.Actor ! CommonMessages.Use(player1, Some(tool)) //repair val msg123 = avatarProbe.receiveN(3, 500 milliseconds) assert( msg123.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(5), _, PlanetSideGUID(4), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(5), _, PlanetSideGUID(4), _)) + ) => + true case _ => false } ) assert( msg123(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg123(2) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) @@ -95,8 +104,9 @@ class RepairableEntityNotRepairTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val gen = Generator(GlobalDefinitions.generator) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val gen = Generator(GlobalDefinitions.generator) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(gen, 2) @@ -107,7 +117,7 @@ class RepairableEntityNotRepairTest extends ActorTest { gen.Position = Vector3(1, 0, 0) gen.Actor = system.actorOf(Props(classOf[GeneratorControl], gen), "generator-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -120,9 +130,9 @@ class RepairableEntityNotRepairTest extends ActorTest { "RepairableEntity" should { "not repair if health is already full" in { - assert(gen.Health == gen.Definition.DefaultHealth) //ideal + assert(gen.Health == gen.Definition.DefaultHealth) //ideal gen.Actor ! CommonMessages.Use(player1, Some(tool)) //repair? - avatarProbe.expectNoMessage(1000 milliseconds) //no messages + avatarProbe.expectNoMessage(1000 milliseconds) //no messages } } } @@ -134,8 +144,9 @@ class RepairableAmenityTest extends ActorTest { GUID(guid) } val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 - val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val term = Terminal(GlobalDefinitions.order_terminal) //guid=2 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn guid.register(building, 1) guid.register(term, 2) @@ -146,7 +157,7 @@ class RepairableAmenityTest extends ActorTest { term.Position = Vector3(1, 0, 0) term.Actor = system.actorOf(Props(classOf[TerminalControl], term), "terminal-control") val activityProbe = TestProbe() - val avatarProbe = TestProbe() + val avatarProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -170,32 +181,40 @@ class RepairableAmenityTest extends ActorTest { val msg12345 = avatarProbe.receiveN(5, 500 milliseconds) assert( msg12345.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(5), _, PlanetSideGUID(4), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(5), _, PlanetSideGUID(4), _)) + ) => + true case _ => false } ) assert( msg12345(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) assert( msg12345(2) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 50, 0)) => true - case _ => false + case _ => false } ) assert( msg12345(3) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 51, 0)) => true - case _ => false + case _ => false } ) assert( msg12345(4) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) @@ -211,10 +230,10 @@ class RepairableTurretWeapon extends ActorTest { override def SetupNumberPools() = {} GUID(guid) } - val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 + val building = Building("test-building", 1, 1, zone, StructureType.Facility) //guid=1 val activityProbe = TestProbe() - val avatarProbe = TestProbe() - val vehicleProbe = TestProbe() + val avatarProbe = TestProbe() + val vehicleProbe = TestProbe() val buildingProbe = TestProbe() zone.Activity = activityProbe.ref zone.AvatarEvents = avatarProbe.ref @@ -227,7 +246,8 @@ class RepairableTurretWeapon extends ActorTest { turret.Position = Vector3(1, 0, 0) val turretWeapon = turret.Weapons.values.head.Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() @@ -249,36 +269,46 @@ class RepairableTurretWeapon extends ActorTest { "RepairableTurretWeapon" should { "handle repairs and restoration" in { turret.Health = turret.Definition.RepairRestoresAt - 1 //initial state manip - turret.Destroyed = true //initial state manip + turret.Destroyed = true //initial state manip assert(turret.Health < turret.Definition.RepairRestoresAt) assert(turret.Destroyed) turret.Actor ! CommonMessages.Use(player1, Some(tool)) val msg12345 = avatarProbe.receiveN(5, 500 milliseconds) - val msg4 = vehicleProbe.receiveOne(500 milliseconds) + val msg4 = vehicleProbe.receiveOne(500 milliseconds) assert( msg12345.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(8), _, PlanetSideGUID(7), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(8), _, PlanetSideGUID(7), _)) + ) => + true case _ => false } ) assert( msg12345(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(2), 0, _)) => true - case _ => false + case _ => false } ) //msg12345(2) and msg12345(3) are related to RepairableAmenity assert( msg12345(4) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(2), _)) + ) => + true case _ => false } ) assert( msg4 match { - case VehicleServiceMessage("test", VehicleAction.EquipmentInSlot(_, PlanetSideGUID(2), 1, t)) if t eq turretWeapon => true + case VehicleServiceMessage("test", VehicleAction.EquipmentInSlot(_, PlanetSideGUID(2), 1, t)) + if t eq turretWeapon => + true case _ => false } ) @@ -299,10 +329,11 @@ class RepairableVehicleRepair extends ActorTest { val atv = Vehicle(GlobalDefinitions.quadassault) //guid=1, 2, 3 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "vehicle-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() @@ -327,20 +358,28 @@ class RepairableVehicleRepair extends ActorTest { val msg123 = avatarProbe.receiveN(3, 500 milliseconds) assert( msg123.head match { - case AvatarServiceMessage("TestCharacter1", - AvatarAction.SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(6), _, PlanetSideGUID(5), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction + .SendResponse(PlanetSideGUID(0), InventoryStateMessage(PlanetSideGUID(6), _, PlanetSideGUID(5), _)) + ) => + true case _ => false } ) assert( msg123(1) match { case AvatarServiceMessage("test", AvatarAction.PlanetsideAttributeToAll(PlanetSideGUID(1), 0, _)) => true - case _ => false + case _ => false } ) assert( msg123(2) match { - case AvatarServiceMessage("TestCharacter1", AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(1), _))) => true + case AvatarServiceMessage( + "TestCharacter1", + AvatarAction.SendResponse(PlanetSideGUID(0), RepairMessage(PlanetSideGUID(1), _)) + ) => + true case _ => false } ) @@ -352,7 +391,7 @@ class RepairableVehicleRepair extends ActorTest { class RepairableVehicleRestoration extends ActorTest { /* no messages are dispatched, in this case, because most vehicles are flagged to not be repairable if destroyed - */ + */ val guid = new NumberPoolHub(new LimitedNumberSource(10)) val zone = new Zone("test", new ZoneMap("test"), 0) { override def SetupNumberPools() = {} @@ -363,10 +402,11 @@ class RepairableVehicleRestoration extends ActorTest { val atv = Vehicle(GlobalDefinitions.quadassault) //guid=1, 2, 3 atv.Actor = system.actorOf(Props(classOf[VehicleControl], atv), "vehicle-control") - atv.Position = Vector3(1,0,0) + atv.Position = Vector3(1, 0, 0) val atvWeapon = atv.Weapons(1).Equipment.get.asInstanceOf[Tool] - val player1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 + val player1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=4 player1.Spawn player1.Position = Vector3(2, 2, 2) val player1Probe = TestProbe() @@ -385,7 +425,7 @@ class RepairableVehicleRestoration extends ActorTest { "RepairableVehicle" should { "will not restore a destroyed vehicle to working order" in { atv.Health = atv.Definition.DamageDestroysAt - 1 //initial state manip - atv.Destroyed = true //initial state manip + atv.Destroyed = true //initial state manip assert(atv.Health <= atv.Definition.DamageDestroysAt) assert(atv.Destroyed) @@ -397,4 +437,4 @@ class RepairableVehicleRestoration extends ActorTest { } } -object RepairableTest { } +object RepairableTest {} diff --git a/common/src/test/scala/objects/ResourceSiloTest.scala b/common/src/test/scala/objects/ResourceSiloTest.scala index a72d989a..8ababc82 100644 --- a/common/src/test/scala/objects/ResourceSiloTest.scala +++ b/common/src/test/scala/objects/ResourceSiloTest.scala @@ -53,7 +53,19 @@ class ResourceSiloTest extends Specification { } "using the silo generates a charge event" in { - val msg = UseItemMessage(PlanetSideGUID(1), PlanetSideGUID(0), PlanetSideGUID(2), 0L, false, Vector3(0f,0f,0f),Vector3(0f,0f,0f),0,0,0,0L) //faked + val msg = UseItemMessage( + PlanetSideGUID(1), + PlanetSideGUID(0), + PlanetSideGUID(2), + 0L, + false, + Vector3(0f, 0f, 0f), + Vector3(0f, 0f, 0f), + 0, + 0, + 0, + 0L + ) //faked ResourceSilo().Use(ResourceSiloTest.player, msg) mustEqual ResourceSilo.ChargeEvent() } } @@ -78,21 +90,30 @@ class ResourceSiloControlStartupTest extends ActorTest { class ResourceSiloControlUseTest extends ActorTest { val guid = new NumberPoolHub(new LimitedNumberSource(10)) - val map = new ZoneMap("test") + val map = new ZoneMap("test") val zone = new Zone("test", map, 0) { override def SetupNumberPools() = {} GUID(guid) } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-zone-actor") zone.Actor ! Zone.Init() - val building = new Building("Building", building_guid = 0, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) //guid=1 + val building = new Building( + "Building", + building_guid = 0, + map_id = 0, + zone, + StructureType.Building, + GlobalDefinitions.building + ) //guid=1 val obj = ResourceSilo() //guid=2 obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo") obj.Owner = building obj.Actor ! "startup" - val player = Player(new Avatar(0L, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //guid=3 + val player = Player( + new Avatar(0L, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) + ) //guid=3 val vehicle = Vehicle(GlobalDefinitions.ant) //guid=4 guid.register(building, 1) @@ -103,7 +124,19 @@ class ResourceSiloControlUseTest extends ActorTest { zone.Transport ! Zone.Vehicle.Spawn(vehicle) vehicle.Seats(0).Occupant = player player.VehicleSeated = vehicle.GUID - val msg = UseItemMessage(PlanetSideGUID(1), PlanetSideGUID(0), PlanetSideGUID(2), 0L, false, Vector3.Zero,Vector3.Zero,0,0,0,0L) //faked + val msg = UseItemMessage( + PlanetSideGUID(1), + PlanetSideGUID(0), + PlanetSideGUID(2), + 0L, + false, + Vector3.Zero, + Vector3.Zero, + 0, + 0, + 0, + 0L + ) //faked expectNoMessage(200 milliseconds) "Resource silo" should { @@ -126,7 +159,8 @@ class ResourceSiloControlNtuWarningTest extends ActorTest { obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo") obj.Actor ! "startup" val zone = new Zone("nowhere", new ZoneMap("nowhere-map"), 0) - obj.Owner = new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) + obj.Owner = + new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) obj.Owner.GUID = PlanetSideGUID(6) val zoneEvents = TestProbe("zone-events") @@ -140,14 +174,28 @@ class ResourceSiloControlNtuWarningTest extends ActorTest { assert(!obj.LowNtuWarningOn) assert(reply.isInstanceOf[AvatarServiceMessage]) assert(reply.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(6)) - assert(reply.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 47) - assert(reply.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 0) + assert(reply.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(6) + ) + assert( + reply + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 47 + ) + assert( + reply + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 0 + ) } } } @@ -158,10 +206,11 @@ class ResourceSiloControlUpdate1Test extends ActorTest { obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo") obj.Actor ! "startup" val zone = new Zone("nowhere", new ZoneMap("nowhere-map"), 0) - val bldg = new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) + val bldg = + new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) bldg.GUID = PlanetSideGUID(6) obj.Owner = bldg - val zoneEvents = TestProbe("zone-events") + val zoneEvents = TestProbe("zone-events") val buildingEvents = TestProbe("building-events") "Resource silo" should { @@ -179,41 +228,83 @@ class ResourceSiloControlUpdate1Test extends ActorTest { assert(obj.CapacitorDisplay == 4) assert(reply1.isInstanceOf[AvatarServiceMessage]) assert(reply1.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(1)) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 45) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 4) + assert(reply1.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(1) + ) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 45 + ) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 4 + ) assert(reply2.isInstanceOf[Building.SendMapUpdate]) val reply3 = zoneEvents.receiveOne(500 milliseconds) assert(reply3.isInstanceOf[AvatarServiceMessage]) assert(reply3.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(6)) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 48) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 0) + assert(reply3.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(6) + ) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 48 + ) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 0 + ) val reply4 = zoneEvents.receiveOne(500 milliseconds) assert(!obj.LowNtuWarningOn) assert(reply4.isInstanceOf[AvatarServiceMessage]) assert(reply4.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply4.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply4.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(6)) - assert(reply4.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 47) - assert(reply4.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 0) + assert(reply4.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply4 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(6) + ) + assert( + reply4 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 47 + ) + assert( + reply4 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 0 + ) } } } @@ -224,10 +315,11 @@ class ResourceSiloControlUpdate2Test extends ActorTest { obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo") obj.Actor ! "startup" val zone = new Zone("nowhere", new ZoneMap("nowhere-map"), 0) - val bldg = new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) + val bldg = + new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) bldg.GUID = PlanetSideGUID(6) obj.Owner = bldg - val zoneEvents = TestProbe("zone-events") + val zoneEvents = TestProbe("zone-events") val buildingEvents = TestProbe("building-events") "Resource silo" should { @@ -248,14 +340,28 @@ class ResourceSiloControlUpdate2Test extends ActorTest { assert(obj.CapacitorDisplay == 3) assert(reply1.isInstanceOf[AvatarServiceMessage]) assert(reply1.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(1)) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 45) - assert(reply1.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 3) + assert(reply1.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(1) + ) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 45 + ) + assert( + reply1 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 3 + ) assert(reply2.isInstanceOf[Building.SendMapUpdate]) @@ -263,14 +369,28 @@ class ResourceSiloControlUpdate2Test extends ActorTest { assert(!obj.LowNtuWarningOn) assert(reply3.isInstanceOf[AvatarServiceMessage]) assert(reply3.asInstanceOf[AvatarServiceMessage].forChannel == "nowhere") - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].player_guid == PlanetSideGUID(6)) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_type == 47) - assert(reply3.asInstanceOf[AvatarServiceMessage] - .actionMessage.asInstanceOf[AvatarAction.PlanetsideAttribute].attribute_value == 0) + assert(reply3.asInstanceOf[AvatarServiceMessage].actionMessage.isInstanceOf[AvatarAction.PlanetsideAttribute]) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .player_guid == PlanetSideGUID(6) + ) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_type == 47 + ) + assert( + reply3 + .asInstanceOf[AvatarServiceMessage] + .actionMessage + .asInstanceOf[AvatarAction.PlanetsideAttribute] + .attribute_value == 0 + ) } } } @@ -281,10 +401,11 @@ class ResourceSiloControlNoUpdateTest extends ActorTest { obj.Actor = system.actorOf(Props(classOf[ResourceSiloControl], obj), "test-silo") obj.Actor ! "startup" val zone = new Zone("nowhere", new ZoneMap("nowhere-map"), 0) - val bldg = new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) + val bldg = + new Building("Building", building_guid = 6, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) bldg.GUID = PlanetSideGUID(6) obj.Owner = bldg - val zoneEvents = TestProbe("zone-events") + val zoneEvents = TestProbe("zone-events") val buildingEvents = TestProbe("building-events") "Resource silo" should { @@ -302,7 +423,9 @@ class ResourceSiloControlNoUpdateTest extends ActorTest { expectNoMessage(500 milliseconds) zoneEvents.expectNoMessage(500 milliseconds) buildingEvents.expectNoMessage(500 milliseconds) - assert(obj.ChargeLevel == 299 || obj.ChargeLevel == 300) // Just in case the capacitor level drops while waiting for the message check 299 & 300 + assert( + obj.ChargeLevel == 299 || obj.ChargeLevel == 300 + ) // Just in case the capacitor level drops while waiting for the message check 299 & 300 assert(obj.CapacitorDisplay == 3) assert(!obj.LowNtuWarningOn) } @@ -310,27 +433,29 @@ class ResourceSiloControlNoUpdateTest extends ActorTest { } object ResourceSiloTest { - val player = Player(new Avatar(0L, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val player = Player( + new Avatar(0L, "TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) + ) - class ProbedAvatarService(probe : TestProbe) extends Actor { - override def receive : Receive = { + class ProbedAvatarService(probe: TestProbe) extends Actor { + override def receive: Receive = { case msg => probe.ref ! msg } } - class ProbedBuildingControl(probe : TestProbe) extends Actor { - override def receive : Receive = { + class ProbedBuildingControl(probe: TestProbe) extends Actor { + override def receive: Receive = { case msg => probe.ref ! msg } } - class ProbedResourceSiloControl(silo : ResourceSilo, probe : TestProbe) extends ResourceSiloControl(silo) { - override def receive : Receive = { + class ProbedResourceSiloControl(silo: ResourceSilo, probe: TestProbe) extends ResourceSiloControl(silo) { + override def receive: Receive = { case msg => - super.receive.apply(msg) - probe.ref ! msg - } + super.receive.apply(msg) + probe.ref ! msg + } } } diff --git a/common/src/test/scala/objects/ServerObjectBuilderTest.scala b/common/src/test/scala/objects/ServerObjectBuilderTest.scala index 54f85176..0dec7217 100644 --- a/common/src/test/scala/objects/ServerObjectBuilderTest.scala +++ b/common/src/test/scala/objects/ServerObjectBuilderTest.scala @@ -16,8 +16,11 @@ import scala.concurrent.duration.Duration class BuildingBuilderTest extends ActorTest { "Building object" should { "build" in { - val structure : (String, Int,Int,Zone,ActorContext)=>Building = Building.Structure(StructureType.Building) - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, "Building", 10, 10, Zone.Nowhere), "building") + val structure: (String, Int, Int, Zone, ActorContext) => Building = Building.Structure(StructureType.Building) + val actor = system.actorOf( + Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, "Building", 10, 10, Zone.Nowhere), + "building" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -31,8 +34,11 @@ class BuildingBuilderTest extends ActorTest { class WarpGateBuilderTest extends ActorTest { "WarpGate object" should { "build" in { - val structure : (String,Int,Int,Zone,ActorContext)=>Building = WarpGate.Structure - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, "wgate", 10, 10, Zone.Nowhere), "wgate") + val structure: (String, Int, Int, Zone, ActorContext) => Building = WarpGate.Structure + val actor = system.actorOf( + Props(classOf[ServerObjectBuilderTest.BuildingTestActor], structure, "wgate", 10, 10, Zone.Nowhere), + "wgate" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -48,7 +54,10 @@ class DoorObjectBuilderTest1 extends ActorTest { "Door object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor), hub), "door") + val actor = system.actorOf( + Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor), hub), + "door" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -65,7 +74,14 @@ class DoorObjectBuilderTest2 extends ActorTest { "Door object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor(Vector3(1, 2, 3))), hub), "door") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, Door.Constructor(Vector3(1, 2, 3))), + hub + ), + "door" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -83,7 +99,14 @@ class IFFLockObjectBuilderTest extends ActorTest { "IFFLock object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, IFFLock.Constructor(Vector3(0f, 0f, 0f), Vector3(0f, 0f, 0f))), hub), "lock") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, IFFLock.Constructor(Vector3(0f, 0f, 0f), Vector3(0f, 0f, 0f))), + hub + ), + "lock" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -100,7 +123,14 @@ class ImplantTerminalMechObjectBuilderTest extends ActorTest { "Implant terminal mech object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, ImplantTerminalMech.Constructor(Vector3.Zero)), hub), "mech") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, ImplantTerminalMech.Constructor(Vector3.Zero)), + hub + ), + "mech" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -118,7 +148,14 @@ class TerminalObjectBuilderTest extends ActorTest { "Terminal object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Terminal.Constructor(Vector3(1.1f, 2.2f, 3.3f), order_terminal)), hub), "term") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, Terminal.Constructor(Vector3(1.1f, 2.2f, 3.3f), order_terminal)), + hub + ), + "term" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -137,8 +174,14 @@ class ProximityTerminalObjectBuilderTest extends ActorTest { "Terminal object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - ProximityTerminal.Constructor(medical_terminal)), hub), "term") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, ProximityTerminal.Constructor(medical_terminal)), + hub + ), + "term" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -155,9 +198,18 @@ class VehicleSpawnPadObjectBuilderTest extends ActorTest { "Vehicle spawn pad object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - VehicleSpawnPad.Constructor(Vector3(1.1f, 2.2f, 3.3f), GlobalDefinitions.mb_pad_creation, Vector3(4.4f, 5.5f, 6.6f)) - ), hub), "pad") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder( + 1, + VehicleSpawnPad + .Constructor(Vector3(1.1f, 2.2f, 3.3f), GlobalDefinitions.mb_pad_creation, Vector3(4.4f, 5.5f, 6.6f)) + ), + hub + ), + "pad" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -176,8 +228,14 @@ class LocalProjectileBuilderTest extends ActorTest { "Local projectile object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - LocalProjectile.Constructor), hub), "locker") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, LocalProjectile.Constructor), + hub + ), + "locker" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -194,8 +252,10 @@ class LockerObjectBuilderTest extends ActorTest { "Locker object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - Locker.Constructor), hub), "locker") + val actor = system.actorOf( + Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Locker.Constructor), hub), + "locker" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -212,8 +272,14 @@ class ResourceSiloObjectBuilderTest extends ActorTest { "Resource silo object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - ResourceSilo.Constructor(Vector3(0f, 0f, 0f))), hub), "resource-silo") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, ResourceSilo.Constructor(Vector3(0f, 0f, 0f))), + hub + ), + "resource-silo" + ) actor ! "startup" val reply = receiveOne(Duration.create(1000, "ms")) @@ -230,8 +296,14 @@ class SpawnTubeObjectBuilderTest extends ActorTest { "Spawn tube object" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - SpawnTube.Constructor(Vector3(3980.4062f, 4267.3047f, 257.5625f), Vector3(0, 0, 90))), hub), "spawn-tube") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, SpawnTube.Constructor(Vector3(3980.4062f, 4267.3047f, 257.5625f), Vector3(0, 0, 90))), + hub + ), + "spawn-tube" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -251,8 +323,14 @@ class FacilityTurretObjectBuilderTest extends ActorTest { "FacilityTurretObjectBuilder" should { "build" in { val hub = ServerObjectBuilderTest.NumberPoolHub - val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, - FacilityTurret.Constructor(manned_turret)), hub), "manned-turret") + val actor = system.actorOf( + Props( + classOf[ServerObjectBuilderTest.BuilderTestActor], + ServerObjectBuilder(1, FacilityTurret.Constructor(manned_turret)), + hub + ), + "manned-turret" + ) actor ! "!" val reply = receiveOne(Duration.create(1000, "ms")) @@ -266,20 +344,26 @@ class FacilityTurretObjectBuilderTest extends ActorTest { object ServerObjectBuilderTest { import net.psforever.objects.guid.source.LimitedNumberSource - def NumberPoolHub : NumberPoolHub = { + def NumberPoolHub: NumberPoolHub = { val obj = new NumberPoolHub(new LimitedNumberSource(2)) obj } - class BuilderTestActor(builder : ServerObjectBuilder[_], hub : NumberPoolHub) extends Actor { - def receive : Receive = { + class BuilderTestActor(builder: ServerObjectBuilder[_], hub: NumberPoolHub) extends Actor { + def receive: Receive = { case _ => sender ! builder.Build(context, hub) } } - class BuildingTestActor(structure_con : (String,Int,Int,Zone,ActorContext)=>Building, name: String, building_guid : Int, map_id : Int, zone : Zone) extends Actor { - def receive : Receive = { + class BuildingTestActor( + structure_con: (String, Int, Int, Zone, ActorContext) => Building, + name: String, + building_guid: Int, + map_id: Int, + zone: Zone + ) extends Actor { + def receive: Receive = { case _ => sender ! FoundationBuilder(structure_con).Build(name, building_guid, map_id, zone)(context) } diff --git a/common/src/test/scala/objects/UtilityTest.scala b/common/src/test/scala/objects/UtilityTest.scala index afd88a43..e6cafd86 100644 --- a/common/src/test/scala/objects/UtilityTest.scala +++ b/common/src/test/scala/objects/UtilityTest.scala @@ -58,17 +58,19 @@ class UtilityTest extends Specification { "produce a telepad object through the teleportpad_terminal" in { val veh = Vehicle(GlobalDefinitions.quadstealth) veh.Faction = PlanetSideEmpire.TR - val obj = Utility(UtilityType.teleportpad_terminal, UtilityTest.vehicle) + val obj = Utility(UtilityType.teleportpad_terminal, UtilityTest.vehicle) val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) veh.GUID = PlanetSideGUID(101) obj().Owner = veh //hack obj().GUID = PlanetSideGUID(1) player.GUID = PlanetSideGUID(2) - val msg = obj().asInstanceOf[Terminal].Request( - player, - ItemTransactionMessage(PlanetSideGUID(853), TransactionType.Buy, 0, "router_telepad", 0, PlanetSideGUID(0)) - ) + val msg = obj() + .asInstanceOf[Terminal] + .Request( + player, + ItemTransactionMessage(PlanetSideGUID(853), TransactionType.Buy, 0, "router_telepad", 0, PlanetSideGUID(0)) + ) msg.isInstanceOf[Terminal.BuyEquipment] mustEqual true msg.asInstanceOf[Terminal.BuyEquipment].item.isInstanceOf[Telepad] mustEqual true } @@ -82,7 +84,7 @@ class UtilityTest extends Specification { } "internal_router_telepad_deployable can keep track of an object's GUID (presumedly, it's a Telepad)" in { - val obj = Utility(UtilityType.internal_router_telepad_deployable, UtilityTest.vehicle) + val obj = Utility(UtilityType.internal_router_telepad_deployable, UtilityTest.vehicle) val inpad = obj().asInstanceOf[Utility.InternalTelepad] inpad.Telepad.isEmpty mustEqual true @@ -225,8 +227,8 @@ class UtilityInternalTelepadTest extends ActorTest { object UtilityTest { val vehicle = Vehicle(GlobalDefinitions.quadstealth) - class SetupControl(obj : Utility) extends Actor { - def receive : Receive = { + class SetupControl(obj: Utility) extends Actor { + def receive: Receive = { case _ => obj.Setup(context) sender ! "" diff --git a/common/src/test/scala/objects/VehicleTest.scala b/common/src/test/scala/objects/VehicleTest.scala index 07a1c0fa..689f6c7a 100644 --- a/common/src/test/scala/objects/VehicleTest.scala +++ b/common/src/test/scala/objects/VehicleTest.scala @@ -212,7 +212,9 @@ class VehicleTest extends Specification { "set new permission level" in { val fury_vehicle = Vehicle(GlobalDefinitions.fury) fury_vehicle.PermissionGroup(AccessPermissionGroup.Driver.id).contains(VehicleLockState.Locked) - fury_vehicle.PermissionGroup(AccessPermissionGroup.Driver.id, VehicleLockState.Group.id).contains(VehicleLockState.Group) + fury_vehicle + .PermissionGroup(AccessPermissionGroup.Driver.id, VehicleLockState.Group.id) + .contains(VehicleLockState.Group) } "set the same permission level" in { @@ -229,7 +231,9 @@ class VehicleTest extends Specification { fury_vehicle.PermissionGroup(AccessPermissionGroup.Trunk.id) mustEqual fury_vehicle.PermissionGroup(13) (AccessPermissionGroup.Driver.id + 10) mustEqual 10 - fury_vehicle.PermissionGroup(AccessPermissionGroup.Driver.id, VehicleLockState.Group.id).contains(VehicleLockState.Group) + fury_vehicle + .PermissionGroup(AccessPermissionGroup.Driver.id, VehicleLockState.Group.id) + .contains(VehicleLockState.Group) fury_vehicle.PermissionGroup(AccessPermissionGroup.Driver.id) mustEqual fury_vehicle.PermissionGroup(10) } @@ -243,7 +247,7 @@ class VehicleTest extends Specification { "can find a passenger in a seat" in { val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) - val player1 = Player(avatar1) + val player1 = Player(avatar1) player1.GUID = PlanetSideGUID(1) val player2 = Player(avatar2) player2.GUID = PlanetSideGUID(2) @@ -259,7 +263,7 @@ class VehicleTest extends Specification { "can find a weapon controlled from seat" in { val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) - val chaingun_p = harasser_vehicle.Weapons(2).Equipment + val chaingun_p = harasser_vehicle.Weapons(2).Equipment chaingun_p.isDefined mustEqual true harasser_vehicle.WeaponControlledFromSeat(0).isEmpty mustEqual true @@ -269,8 +273,8 @@ class VehicleTest extends Specification { "can filter utilities with indices that are natural numbers" in { val objDef = VehicleDefinition(1) objDef.Utilities += -1 -> UtilityType.order_terminala - objDef.Utilities += 0 -> UtilityType.order_terminalb - objDef.Utilities += 2 -> UtilityType.order_terminalb + objDef.Utilities += 0 -> UtilityType.order_terminalb + objDef.Utilities += 2 -> UtilityType.order_terminalb val obj = Vehicle(objDef) obj.Utilities.size mustEqual 3 @@ -295,7 +299,7 @@ class VehicleTest extends Specification { "access its trunk by Slot" in { val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) - val ammobox = AmmoBox(GlobalDefinitions.armor_canister) + val ammobox = AmmoBox(GlobalDefinitions.armor_canister) ammobox.GUID = PlanetSideGUID(10) harasser_vehicle.Inventory += 30 -> ammobox @@ -311,7 +315,7 @@ class VehicleTest extends Specification { "find items in its trunk by GUID" in { val harasser_vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) - val ammobox = AmmoBox(GlobalDefinitions.armor_canister) + val ammobox = AmmoBox(GlobalDefinitions.armor_canister) ammobox.GUID = PlanetSideGUID(10) harasser_vehicle.Inventory += 30 -> ammobox @@ -340,14 +344,15 @@ class VehicleControlPrepareForDeletionTest extends ActorTest { assert( vehicle_msg.head match { case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z, _)) => (v eq vehicle) && (z == vehicle.Zone) - case _ => false + case _ => false } ) val vehicle_msg_final = vehicleProbe.receiveN(1, 6 seconds) assert( vehicle_msg_final.head match { - case VehicleServiceMessage("test", VehicleAction.UnloadVehicle(_, z, v, PlanetSideGUID(1))) => (v eq vehicle) && (z == vehicle.Zone) + case VehicleServiceMessage("test", VehicleAction.UnloadVehicle(_, z, v, PlanetSideGUID(1))) => + (v eq vehicle) && (z == vehicle.Zone) case _ => false } ) @@ -378,7 +383,11 @@ class VehicleControlPrepareForDeletionPassengerTest extends ActorTest { val vehicle_msg = vehicleProbe.receiveN(2, 500 milliseconds) assert( vehicle_msg.head match { - case VehicleServiceMessage("test", VehicleAction.KickPassenger(PlanetSideGUID(2), 4, false, PlanetSideGUID(1))) => true + case VehicleServiceMessage( + "test", + VehicleAction.KickPassenger(PlanetSideGUID(2), 4, false, PlanetSideGUID(1)) + ) => + true case _ => false } ) @@ -387,7 +396,7 @@ class VehicleControlPrepareForDeletionPassengerTest extends ActorTest { assert( vehicle_msg(1) match { case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z, _)) => (v eq vehicle) && (z == vehicle.Zone) - case _ => false + case _ => false } ) } @@ -399,7 +408,7 @@ class VehicleControlPrepareForDeletionMountedInTest extends FreedContextActorTes val guid = new NumberPoolHub(new LimitedNumberSource(10)) val zone = new Zone("test", new ZoneMap("test"), 0) { GUID(guid) - override def SetupNumberPools() : Unit = { } + override def SetupNumberPools(): Unit = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-zone-actor") zone.Init(context) @@ -441,37 +450,57 @@ class VehicleControlPrepareForDeletionMountedInTest extends FreedContextActorTes //dismounting as cargo messages assert( vehicle_msg.head match { - case VehicleServiceMessage(_, VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 0, _))) => true + case VehicleServiceMessage( + _, + VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 0, _)) + ) => + true case _ => false } ) assert( vehicle_msg(1) match { - case VehicleServiceMessage(_, VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 68, _))) => true + case VehicleServiceMessage( + _, + VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 68, _)) + ) => + true case _ => false } ) assert( vehicle_msg(2) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - CargoMountPointStatusMessage(PlanetSideGUID(2), _, PlanetSideGUID(1), _, 1, CargoStatus.InProgress, 0) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse( + _, + CargoMountPointStatusMessage(PlanetSideGUID(2), _, PlanetSideGUID(1), _, 1, CargoStatus.InProgress, 0) + ) + ) => + true case _ => false } ) assert( vehicle_msg(3) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - ObjectDetachMessage(PlanetSideGUID(2), PlanetSideGUID(1), _, _, _, _) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse(_, ObjectDetachMessage(PlanetSideGUID(2), PlanetSideGUID(1), _, _, _, _)) + ) => + true case _ => false } ) assert( vehicle_msg(4) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - CargoMountPointStatusMessage(PlanetSideGUID(2), _, _, PlanetSideGUID(1), 1, CargoStatus.Empty, 0) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse( + _, + CargoMountPointStatusMessage(PlanetSideGUID(2), _, _, PlanetSideGUID(1), 1, CargoStatus.Empty, 0) + ) + ) => + true case _ => false } ) @@ -479,7 +508,11 @@ class VehicleControlPrepareForDeletionMountedInTest extends FreedContextActorTes //TODO: does not actually kick out the cargo, but instigates the process assert( vehicle_msg(5) match { - case VehicleServiceMessage("test", VehicleAction.KickPassenger(PlanetSideGUID(3), 4, false, PlanetSideGUID(1))) => true + case VehicleServiceMessage( + "test", + VehicleAction.KickPassenger(PlanetSideGUID(3), 4, false, PlanetSideGUID(1)) + ) => + true case _ => false } ) @@ -488,7 +521,7 @@ class VehicleControlPrepareForDeletionMountedInTest extends FreedContextActorTes assert( vehicle_msg(6) match { case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z, _)) => (v eq vehicle) && (z == vehicle.Zone) - case _ => false + case _ => false } ) } @@ -500,7 +533,7 @@ class VehicleControlPrepareForDeletionMountedCargoTest extends FreedContextActor ServiceManager.boot val zone = new Zone("test", new ZoneMap("test"), 0) { GUID(guid) - override def SetupNumberPools() : Unit = { } + override def SetupNumberPools(): Unit = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-zone-actor") zone.Init(context) @@ -543,7 +576,11 @@ class VehicleControlPrepareForDeletionMountedCargoTest extends FreedContextActor val vehicle_msg = vehicleProbe.receiveN(7, 500 milliseconds) assert( vehicle_msg.head match { - case VehicleServiceMessage("test", VehicleAction.KickPassenger(PlanetSideGUID(4), 4, false, PlanetSideGUID(2))) => true + case VehicleServiceMessage( + "test", + VehicleAction.KickPassenger(PlanetSideGUID(4), 4, false, PlanetSideGUID(2)) + ) => + true case _ => false } ) @@ -552,37 +589,57 @@ class VehicleControlPrepareForDeletionMountedCargoTest extends FreedContextActor //cargo dismounting messages assert( vehicle_msg(1) match { - case VehicleServiceMessage(_, VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 0, _))) => true + case VehicleServiceMessage( + _, + VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 0, _)) + ) => + true case _ => false } ) assert( vehicle_msg(2) match { - case VehicleServiceMessage(_, VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 68, _))) => true + case VehicleServiceMessage( + _, + VehicleAction.SendResponse(_, PlanetsideAttributeMessage(PlanetSideGUID(1), 68, _)) + ) => + true case _ => false } ) assert( vehicle_msg(3) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - CargoMountPointStatusMessage(PlanetSideGUID(2), _, PlanetSideGUID(1), _, 1, CargoStatus.InProgress, 0) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse( + _, + CargoMountPointStatusMessage(PlanetSideGUID(2), _, PlanetSideGUID(1), _, 1, CargoStatus.InProgress, 0) + ) + ) => + true case _ => false } ) assert( vehicle_msg(4) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - ObjectDetachMessage(PlanetSideGUID(2), PlanetSideGUID(1), _, _, _, _) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse(_, ObjectDetachMessage(PlanetSideGUID(2), PlanetSideGUID(1), _, _, _, _)) + ) => + true case _ => false } ) assert( vehicle_msg(5) match { - case VehicleServiceMessage("test", VehicleAction.SendResponse(_, - CargoMountPointStatusMessage(PlanetSideGUID(2), _, _, PlanetSideGUID(1), 1, CargoStatus.Empty, 0) - )) => true + case VehicleServiceMessage( + "test", + VehicleAction.SendResponse( + _, + CargoMountPointStatusMessage(PlanetSideGUID(2), _, _, PlanetSideGUID(1), 1, CargoStatus.Empty, 0) + ) + ) => + true case _ => false } ) @@ -590,7 +647,7 @@ class VehicleControlPrepareForDeletionMountedCargoTest extends FreedContextActor assert( vehicle_msg(6) match { case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z, _)) => (v eq lodestar) && (z == vehicle.Zone) - case _ => false + case _ => false } ) } @@ -599,20 +656,20 @@ class VehicleControlPrepareForDeletionMountedCargoTest extends FreedContextActor class VehicleControlMountingBlockedExosuitTest extends ActorTest { val probe = new TestProbe(system) - def checkCanNotMount() : Unit = { + def checkCanNotMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanNotMount]) case _ => assert(false) } } - def checkCanMount() : Unit = { + def checkCanMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -660,20 +717,20 @@ class VehicleControlMountingBlockedExosuitTest extends ActorTest { class VehicleControlMountingBlockedSeatPermissionTest extends ActorTest { val probe = new TestProbe(system) - def checkCanNotMount() : Unit = { + def checkCanNotMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanNotMount]) case _ => assert(false) } } - def checkCanMount() : Unit = { + def checkCanMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -693,10 +750,10 @@ class VehicleControlMountingBlockedSeatPermissionTest extends ActorTest { //11 June 2018: Group is not supported yet so do not bother testing it "block players from sitting if the seat does not allow it" in { - vehicle.PermissionGroup(2,3) //passenger group -> empire + vehicle.PermissionGroup(2, 3) //passenger group -> empire vehicle.Actor.tell(Mountable.TryMount(player1, 3), probe.ref) //passenger seat checkCanMount() - vehicle.PermissionGroup(2,0) //passenger group -> locked + vehicle.PermissionGroup(2, 0) //passenger group -> locked vehicle.Actor.tell(Mountable.TryMount(player2, 4), probe.ref) //passenger seat checkCanNotMount() } @@ -705,10 +762,10 @@ class VehicleControlMountingBlockedSeatPermissionTest extends ActorTest { class VehicleControlMountingDriverSeatTest extends ActorTest { val probe = new TestProbe(system) - def checkCanMount() : Unit = { + def checkCanMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -735,20 +792,20 @@ class VehicleControlMountingDriverSeatTest extends ActorTest { class VehicleControlMountingOwnedLockedDriverSeatTest extends ActorTest { val probe = new TestProbe(system) - def checkCanNotMount() : Unit = { + def checkCanNotMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanNotMount]) case _ => assert(false) } } - def checkCanMount() : Unit = { + def checkCanMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -785,10 +842,10 @@ class VehicleControlMountingOwnedLockedDriverSeatTest extends ActorTest { class VehicleControlMountingOwnedUnlockedDriverSeatTest extends ActorTest { val probe = new TestProbe(system) - def checkCanMount() : Unit = { + def checkCanMount(): Unit = { val reply = probe.receiveOne(Duration.create(100, "ms")) reply match { - case msg : Mountable.MountMessages => + case msg: Mountable.MountMessages => assert(msg.response.isInstanceOf[Mountable.CanMount]) case _ => assert(false) @@ -805,7 +862,7 @@ class VehicleControlMountingOwnedUnlockedDriverSeatTest extends ActorTest { "Vehicle Control" should { "allow players that are not the current owner to sit in the driver seat (empire)" in { - vehicle.PermissionGroup(0,3) //passenger group -> empire + vehicle.PermissionGroup(0, 3) //passenger group -> empire assert(vehicle.PermissionGroup(0).contains(VehicleLockState.Empire)) //driver group -> empire assert(vehicle.Seats(0).Occupant.isEmpty) vehicle.Owner = player1.GUID //owner set @@ -825,7 +882,7 @@ class VehicleControlMountingOwnedUnlockedDriverSeatTest extends ActorTest { } class VehicleControlShieldsChargingTest extends ActorTest { - val probe = new TestProbe(system) + val probe = new TestProbe(system) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.GUID = PlanetSideGUID(10) vehicle.Actor = system.actorOf(Props(classOf[VehicleControl], vehicle), "vehicle-test") @@ -835,21 +892,21 @@ class VehicleControlShieldsChargingTest extends ActorTest { "charge vehicle shields" in { assert(vehicle.Shields == 0) - assert(!vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(!vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) vehicle.Actor ! Vehicle.ChargeShields(15) val msg = probe.receiveOne(500 milliseconds) assert(msg match { case VehicleServiceMessage(_, VehicleAction.PlanetsideAttribute(_, PlanetSideGUID(10), 68, 15)) => true - case _ => false + case _ => false }) assert(vehicle.Shields == 15) - assert(vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) } } class VehicleControlShieldsNotChargingVehicleDeadTest extends ActorTest { - val probe = new TestProbe(system) + val probe = new TestProbe(system) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.GUID = PlanetSideGUID(10) vehicle.Actor = system.actorOf(Props(classOf[VehicleControl], vehicle), "vehicle-test") @@ -862,17 +919,17 @@ class VehicleControlShieldsNotChargingVehicleDeadTest extends ActorTest { vehicle.Health = 0 assert(vehicle.Health == 0) assert(vehicle.Shields == 0) - assert(!vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(!vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) vehicle.Actor.tell(Vehicle.ChargeShields(15), probe.ref) probe.expectNoMessage(1 seconds) assert(vehicle.Shields == 0) - assert(!vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(!vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) } } class VehicleControlShieldsNotChargingVehicleShieldsFullTest extends ActorTest { - val probe = new TestProbe(system) + val probe = new TestProbe(system) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.GUID = PlanetSideGUID(10) vehicle.Actor = system.actorOf(Props(classOf[VehicleControl], vehicle), "vehicle-test") @@ -884,16 +941,16 @@ class VehicleControlShieldsNotChargingVehicleShieldsFullTest extends ActorTest { assert(vehicle.Shields == 0) vehicle.Shields = vehicle.MaxShields assert(vehicle.Shields == vehicle.MaxShields) - assert(!vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(!vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) vehicle.Actor ! Vehicle.ChargeShields(15) probe.expectNoMessage(1 seconds) - assert(!vehicle.History.exists({p => p.isInstanceOf[VehicleShieldCharge]})) + assert(!vehicle.History.exists({ p => p.isInstanceOf[VehicleShieldCharge] })) } } class VehicleControlShieldsNotChargingTooEarlyTest extends ActorTest { - val probe = new TestProbe(system) + val probe = new TestProbe(system) val vehicle = Vehicle(GlobalDefinitions.fury) vehicle.GUID = PlanetSideGUID(10) vehicle.Actor = system.actorOf(Props(classOf[VehicleControl], vehicle), "vehicle-test") @@ -909,7 +966,7 @@ class VehicleControlShieldsNotChargingTooEarlyTest extends ActorTest { //assert(msg.isInstanceOf[Vehicle.UpdateShieldsCharge]) assert(msg match { case VehicleServiceMessage(_, VehicleAction.PlanetsideAttribute(_, PlanetSideGUID(10), 68, 15)) => true - case _ => false + case _ => false }) assert(vehicle.Shields == 15) diff --git a/common/src/test/scala/objects/VitalityTest.scala b/common/src/test/scala/objects/VitalityTest.scala index ca527ea0..790dc5d9 100644 --- a/common/src/test/scala/objects/VitalityTest.scala +++ b/common/src/test/scala/objects/VitalityTest.scala @@ -9,17 +9,23 @@ import org.specs2.mutable.Specification class VitalityTest extends Specification { "Vitality" should { - val wep = GlobalDefinitions.galaxy_gunship_cannon + val wep = GlobalDefinitions.galaxy_gunship_cannon val wep_fmode = Tool(wep).FireMode - val proj = wep.ProjectileTypes.head - val vehicle = Vehicle(GlobalDefinitions.fury) - val vSource = VehicleSource(vehicle) + val proj = wep.ProjectileTypes.head + val vehicle = Vehicle(GlobalDefinitions.fury) + val vSource = VehicleSource(vehicle) "accept a variety of events" in { - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val pSource = PlayerSource(player) + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val pSource = PlayerSource(player) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(player), player.DamageModel, Vector3(50, 50, 0)) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(player), + player.DamageModel, + Vector3(50, 50, 0) + ) player.History(resprojectile) //ResolvedProjectile, straight-up player.History(DamageFromProjectile(resprojectile)) @@ -34,7 +40,7 @@ class VitalityTest extends Specification { } "return and clear the former list of vital activities" in { - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) val pSource = PlayerSource(player) player.History(HealFromKit(pSource, 10, GlobalDefinitions.medkit)) @@ -58,10 +64,16 @@ class VitalityTest extends Specification { } "get exactly one entry that was caused by projectile damage" in { - val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val pSource = PlayerSource(player) + val player = Player(Avatar("TestCharacter", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val pSource = PlayerSource(player) val projectile = Projectile(proj, wep, wep_fmode, player, Vector3(2, 2, 0), Vector3.Zero) - val resprojectile = ResolvedProjectile(ProjectileResolution.Splash, projectile, SourceEntry(player), player.DamageModel, Vector3(50, 50, 0)) + val resprojectile = ResolvedProjectile( + ProjectileResolution.Splash, + projectile, + SourceEntry(player), + player.DamageModel, + Vector3(50, 50, 0) + ) player.History(DamageFromProjectile(resprojectile)) player.History(HealFromKit(pSource, 10, GlobalDefinitions.medkit)) diff --git a/common/src/test/scala/objects/ZoneTest.scala b/common/src/test/scala/objects/ZoneTest.scala index 3fdc0538..92694351 100644 --- a/common/src/test/scala/objects/ZoneTest.scala +++ b/common/src/test/scala/objects/ZoneTest.scala @@ -21,7 +21,7 @@ import org.specs2.mutable.Specification import scala.concurrent.duration._ class ZoneTest extends Specification { - def test(a: String, b: Int, c: Int, d : Zone, e : ActorContext) : Building = { Building.NoBuilding } + def test(a: String, b: Int, c: Int, d: Zone, e: ActorContext): Building = { Building.NoBuilding } "ZoneMap" should { "construct" in { @@ -99,8 +99,8 @@ class ZoneTest extends Specification { } "can have its unique identifier system changed if no objects were added to it" in { - val zone = new Zone("home3", map13, 13) - val guid1 : NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100)) + val zone = new Zone("home3", map13, 13) + val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100)) zone.GUID(guid1) mustEqual true zone.AddPool("pool1", (0 to 50).toList) zone.AddPool("pool2", (51 to 75).toList) @@ -117,44 +117,44 @@ class ZoneTest extends Specification { class ZoneActorTest extends ActorTest { "Zone" should { "have an Actor" in { - val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-actor") expectNoMessage(Duration.create(100, "ms")) assert(zone.Actor != ActorRef.noSender) } "create new number pools before the Actor is started" in { - val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = {} } zone.GUID(new NumberPoolHub(new LimitedNumberSource(10))) - assert( zone.AddPool("test1", 1 to 2) ) + assert(zone.AddPool("test1", 1 to 2)) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-add-pool-actor") //note: not Init'd yet - assert( zone.AddPool("test2", 3 to 4) ) + assert(zone.AddPool("test2", 3 to 4)) } "remove existing number pools before the Actor is started" in { - val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = {} } zone.GUID(new NumberPoolHub(new LimitedNumberSource(10))) - assert( zone.AddPool("test1", 1 to 2) ) - assert( zone.RemovePool("test1") ) + assert(zone.AddPool("test1", 1 to 2)) + assert(zone.RemovePool("test1")) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-remove-pool-actor") //note: not Init'd yet - assert( zone.AddPool("test2", 3 to 4) ) - assert( zone.RemovePool("test2") ) + assert(zone.AddPool("test2", 3 to 4)) + assert(zone.RemovePool("test2")) } "refuse new number pools after the Actor is started" in { - val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = {} } zone.GUID(new NumberPoolHub(new LimitedNumberSource(40150))) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-add-pool-actor-init") zone.Actor ! Zone.Init() expectNoMessage(Duration.create(500, "ms")) - assert( !zone.AddPool("test1", 1 to 2) ) + assert(!zone.AddPool("test1", 1 to 2)) } "refuse to remove number pools after the Actor is started" in { - val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("map6"), 1) { override def SetupNumberPools() = {} } zone.GUID(new NumberPoolHub(new LimitedNumberSource(10))) zone.AddPool("test", 1 to 2) @@ -162,70 +162,96 @@ class ZoneActorTest extends ActorTest { zone.Actor ! Zone.Init() expectNoMessage(Duration.create(300, "ms")) - assert( !zone.RemovePool("test") ) + assert(!zone.RemovePool("test")) } "set up spawn groups based on buildings" in { val map6 = new ZoneMap("map6") { - LocalBuilding("Building", building_guid = 1, map_id = 1, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1,1,1)))) - LocalObject(2, SpawnTube.Constructor(Vector3(1,0,0), Vector3.Zero)) + LocalBuilding( + "Building", + building_guid = 1, + map_id = 1, + FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1, 1, 1))) + ) + LocalObject(2, SpawnTube.Constructor(Vector3(1, 0, 0), Vector3.Zero)) LocalObject(3, Terminal.Constructor(Vector3.Zero, GlobalDefinitions.dropship_vehicle_terminal)) - LocalObject(4, SpawnTube.Constructor(Vector3(1,0,0), Vector3.Zero)) + LocalObject(4, SpawnTube.Constructor(Vector3(1, 0, 0), Vector3.Zero)) ObjectToBuilding(2, 1) ObjectToBuilding(3, 1) ObjectToBuilding(4, 1) - LocalBuilding("Building", building_guid = 5, map_id = 2, FoundationBuilder(Building.Structure(StructureType.Building))) + LocalBuilding( + "Building", + building_guid = 5, + map_id = 2, + FoundationBuilder(Building.Structure(StructureType.Building)) + ) LocalObject(6, SpawnTube.Constructor(Vector3.Zero, Vector3.Zero)) ObjectToBuilding(6, 5) - LocalBuilding("Building", building_guid = 7, map_id = 3, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1,1,1)))) + LocalBuilding( + "Building", + building_guid = 7, + map_id = 3, + FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1, 1, 1))) + ) LocalObject(8, Terminal.Constructor(Vector3.Zero, GlobalDefinitions.dropship_vehicle_terminal)) - LocalObject(9, SpawnTube.Constructor(Vector3(1,0,0), Vector3.Zero)) + LocalObject(9, SpawnTube.Constructor(Vector3(1, 0, 0), Vector3.Zero)) LocalObject(10, Terminal.Constructor(Vector3.Zero, GlobalDefinitions.dropship_vehicle_terminal)) ObjectToBuilding(8, 7) ObjectToBuilding(9, 7) ObjectToBuilding(10, 7) } - val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-init") zone.Actor ! Zone.Init() expectNoMessage(Duration.create(1, "seconds")) val groups = zone.SpawnGroups() assert(groups.size == 2) - zone.SpawnGroups().foreach({ case(building, tubes) => - if(building.MapId == 1) { - val building1 = zone.SpawnGroups(building) - assert(tubes.length == 2) - assert(tubes.head == building1.head) - assert(tubes.head.GUID == PlanetSideGUID(2)) - assert(tubes(1) == building1(1)) - assert(tubes(1).GUID == PlanetSideGUID(4)) - } - else if(building.MapId == 3) { - val building2 = zone.SpawnGroups(building) - assert(tubes.length == 1) - assert(tubes.head == building2.head) - assert(tubes.head.GUID == PlanetSideGUID(9)) - } - else { - assert(false) - } - }) + zone + .SpawnGroups() + .foreach({ + case (building, tubes) => + if (building.MapId == 1) { + val building1 = zone.SpawnGroups(building) + assert(tubes.length == 2) + assert(tubes.head == building1.head) + assert(tubes.head.GUID == PlanetSideGUID(2)) + assert(tubes(1) == building1(1)) + assert(tubes(1).GUID == PlanetSideGUID(4)) + } else if (building.MapId == 3) { + val building2 = zone.SpawnGroups(building) + assert(tubes.length == 1) + assert(tubes.head == building2.head) + assert(tubes.head.GUID == PlanetSideGUID(9)) + } else { + assert(false) + } + }) } "select spawn points based on the position of the player in reference to buildings" in { val map6 = new ZoneMap("map6") { - LocalBuilding("Building", building_guid = 1, map_id = 1, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1,1,1)))) - LocalObject(2, SpawnTube.Constructor(Vector3(1,0,0), Vector3.Zero)) + LocalBuilding( + "Building", + building_guid = 1, + map_id = 1, + FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1, 1, 1))) + ) + LocalObject(2, SpawnTube.Constructor(Vector3(1, 0, 0), Vector3.Zero)) ObjectToBuilding(2, 1) - LocalBuilding("Building", building_guid = 3, map_id = 3, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4,4,4)))) - LocalObject(4, SpawnTube.Constructor(Vector3(1,0,0), Vector3.Zero)) + LocalBuilding( + "Building", + building_guid = 3, + map_id = 3, + FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4, 4, 4))) + ) + LocalObject(4, SpawnTube.Constructor(Vector3(1, 0, 0), Vector3.Zero)) ObjectToBuilding(4, 3) } - val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-spawn") zone.Actor ! Zone.Init() expectNoMessage(Duration.create(1, "seconds")) @@ -233,14 +259,14 @@ class ZoneActorTest extends ActorTest { val bldg1 = zone.Building(1).get val bldg3 = zone.Building(3).get - player.Position = Vector3(1,1,1) //closer to bldg1 + player.Position = Vector3(1, 1, 1) //closer to bldg1 zone.Actor ! Zone.Lattice.RequestSpawnPoint(1, player, 7) 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_point.Owner == bldg1) - player.Position = Vector3(3,3,3) //closer to bldg3 + 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]) @@ -250,13 +276,23 @@ class ZoneActorTest extends ActorTest { "will report if no spawn points have been found in a zone" in { val map6 = new ZoneMap("map6") { - LocalBuilding("Building", building_guid = 1, map_id = 1, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1,1,1)))) + LocalBuilding( + "Building", + building_guid = 1, + map_id = 1, + FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1, 1, 1))) + ) - LocalBuilding("Building", building_guid = 3, map_id = 3, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4,4,4)))) + LocalBuilding( + "Building", + building_guid = 3, + map_id = 3, + FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4, 4, 4))) + ) LocalObject(5, SpawnTube.Constructor(Vector3.Zero, Vector3.Zero)) ObjectToBuilding(5, 3) } - val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = { } } + val zone = new Zone("test", map6, 1) { override def SetupNumberPools() = {} } zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "test-no-spawn") zone.Actor ! Zone.Init() expectNoMessage(Duration.create(300, "ms")) @@ -274,7 +310,7 @@ class ZoneActorTest extends ActorTest { class ZonePopulationTest extends ActorTest { "ZonePopulationActor" should { "add new user to zones" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -290,7 +326,7 @@ class ZonePopulationTest extends ActorTest { } "remove user from zones" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -306,7 +342,7 @@ class ZonePopulationTest extends ActorTest { } "associate user with a character" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -327,7 +363,7 @@ class ZonePopulationTest extends ActorTest { } "disassociate character from a user" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -350,7 +386,7 @@ class ZonePopulationTest extends ActorTest { } "user tries to Leave, but still has an associated character" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) player.GUID = PlanetSideGUID(1) @@ -376,8 +412,8 @@ class ZonePopulationTest extends ActorTest { } "user tries to Spawn a character, but an associated character already exists" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } - val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } + val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player1 = Player(avatar) val player2 = Player(avatar) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -403,7 +439,7 @@ class ZonePopulationTest extends ActorTest { } "user tries to Spawn a character, but did not Join first" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val player = Player(avatar) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -422,7 +458,7 @@ class ZonePopulationTest extends ActorTest { } "user tries to Release a character, but did not Spawn a character first" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -444,7 +480,7 @@ class ZonePopulationTest extends ActorTest { } "user adds character to list of retired characters" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player.Release zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -459,7 +495,7 @@ class ZonePopulationTest extends ActorTest { } "user removes character from the list of retired characters" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player.Release zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -476,7 +512,7 @@ class ZonePopulationTest extends ActorTest { } "user removes THE CORRECT character from the list of retired characters" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val player1 = Player(Avatar("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) player1.Release val player2 = Player(Avatar("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) @@ -503,7 +539,7 @@ class ZonePopulationTest extends ActorTest { } "user tries to add character to list of retired characters, but is not in correct state" in { - val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val player = Player(Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) //player.Release !!important zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) @@ -520,9 +556,9 @@ class ZonePopulationTest extends ActorTest { class ZoneGroundDropItemTest extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -546,9 +582,9 @@ class ZoneGroundDropItemTest extends ActorTest { class ZoneGroundCanNotDropItem1Test extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) //hub.register(item, 10) //!important - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -572,9 +608,9 @@ class ZoneGroundCanNotDropItem1Test extends ActorTest { class ZoneGroundCanNotDropItem2Test extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) //!important - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } //zone.GUID(hub) //!important zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -598,9 +634,9 @@ class ZoneGroundCanNotDropItem2Test extends ActorTest { class ZoneGroundCanNotDropItem3Test extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) //!important - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) //!important zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -632,9 +668,9 @@ class ZoneGroundCanNotDropItem3Test extends ActorTest { class ZoneGroundPickupItemTest extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -661,9 +697,9 @@ class ZoneGroundPickupItemTest extends ActorTest { class ZoneGroundCanNotPickupItemTest extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) //still registered to this zone zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -686,9 +722,9 @@ class ZoneGroundCanNotPickupItemTest extends ActorTest { class ZoneGroundRemoveItemTest extends ActorTest { val item = AmmoBox(GlobalDefinitions.bullet_9mm) - val hub = new NumberPoolHub(new LimitedNumberSource(20)) + val hub = new NumberPoolHub(new LimitedNumberSource(20)) hub.register(item, 10) - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { } } + val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = {} } zone.GUID(hub) //still registered to this zone zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), ZoneTest.TestName) zone.Actor ! Zone.Init() @@ -714,6 +750,6 @@ class ZoneGroundRemoveItemTest extends ActorTest { } object ZoneTest { - val testNum = new AtomicInteger(1) - def TestName : String = s"test${testNum.getAndIncrement()}" + val testNum = new AtomicInteger(1) + def TestName: String = s"test${testNum.getAndIncrement()}" } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAmmoTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAmmoTest.scala index 69902bea..089f3d53 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAmmoTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAmmoTest.scala @@ -8,10 +8,13 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskRegisterAmmoTest extends ActorTest { "RegisterEquipment -> RegisterObjectTask" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = AmmoBox(GlobalDefinitions.energy_cell) + val obj = AmmoBox(GlobalDefinitions.energy_cell) assert(!obj.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterEquipment(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAvatarTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAvatarTest.scala index 632b827e..e0001b76 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAvatarTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterAvatarTest.scala @@ -9,14 +9,14 @@ import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} class GUIDTaskRegisterAvatarTest extends ActorTest { "RegisterAvatar" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj_wep = Tool(GlobalDefinitions.beamer) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_wep.AmmoSlots.head.Box = obj_wep_ammo val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj.Slot(6).Equipment = obj_inv_ammo - val obj_locker = obj.Slot(5).Equipment.get + val obj_locker = obj.Slot(5).Equipment.get val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_locker.asInstanceOf[LockerEquipment].Inventory += 0 -> obj_locker_ammo @@ -26,7 +26,10 @@ class GUIDTaskRegisterAvatarTest extends ActorTest { assert(!obj_inv_ammo.HasGUID) assert(!obj_locker.HasGUID) assert(!obj_locker_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterAvatar(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterAvatar(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) assert(obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterObjectTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterObjectTest.scala index cd1e5c28..7f424f30 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterObjectTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterObjectTest.scala @@ -7,10 +7,13 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskRegisterObjectTest extends ActorTest { "RegisterObjectTask" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = new GUIDTaskTest.TestObject + val obj = new GUIDTaskTest.TestObject assert(!obj.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterObjectTask(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterObjectTask(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterPlayerTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterPlayerTest.scala index e60349b3..138cb1d3 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterPlayerTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterPlayerTest.scala @@ -9,14 +9,14 @@ import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} class GUIDTaskRegisterPlayerTest extends ActorTest { "RegisterPlayer" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj_wep = Tool(GlobalDefinitions.beamer) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_wep.AmmoSlots.head.Box = obj_wep_ammo val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj.Slot(6).Equipment = obj_inv_ammo - val obj_locker = obj.Slot(5).Equipment.get + val obj_locker = obj.Slot(5).Equipment.get val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_locker.asInstanceOf[LockerEquipment].Inventory += 0 -> obj_locker_ammo @@ -26,7 +26,10 @@ class GUIDTaskRegisterPlayerTest extends ActorTest { assert(!obj_inv_ammo.HasGUID) assert(!obj_locker.HasGUID) assert(!obj_locker_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterPlayer(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterPlayer(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) assert(obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterToolTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterToolTest.scala index 3da02707..9bf0a1ff 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterToolTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterToolTest.scala @@ -8,12 +8,15 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskRegisterToolTest extends ActorTest { "RegisterEquipment -> RegisterTool" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Tool(GlobalDefinitions.beamer) + val obj = Tool(GlobalDefinitions.beamer) obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell) assert(!obj.HasGUID) assert(!obj.AmmoSlots.head.Box.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterEquipment(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterEquipment(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) assert(obj.AmmoSlots.head.Box.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterTurretTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterTurretTest.scala index 59b381da..c53cd747 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterTurretTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterTurretTest.scala @@ -8,16 +8,19 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskRegisterTurretTest extends ActorTest { "RegisterDeployableTurret" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) - val obj_wep = obj.Weapons(1).Equipment.get - val obj_ammo = obj_wep.asInstanceOf[Tool].AmmoSlot.Box - val obj_res = obj.Inventory.Items.map(_.obj) + val obj = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) + val obj_wep = obj.Weapons(1).Equipment.get + val obj_ammo = obj_wep.asInstanceOf[Tool].AmmoSlot.Box + val obj_res = obj.Inventory.Items.map(_.obj) assert(!obj.HasGUID) assert(!obj_wep.HasGUID) assert(!obj_ammo.HasGUID) obj_res.foreach(box => !box.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterDeployableTurret(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterDeployableTurret(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) assert(obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterVehicleTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterVehicleTest.scala index 841b2b71..f33e7b71 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskRegisterVehicleTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskRegisterVehicleTest.scala @@ -8,9 +8,10 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskRegisterVehicleTest extends ActorTest { "RegisterVehicle" in { val (_, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Vehicle(GlobalDefinitions.fury) - val obj_wep = obj.WeaponControlledFromSeat(0).get - val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get + val obj = Vehicle(GlobalDefinitions.fury) + val obj_wep = obj.WeaponControlledFromSeat(0).get + val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = + AmmoBox(GlobalDefinitions.hellfire_ammo)).get obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo) val obj_trunk_ammo = obj.Trunk.Items(0).obj @@ -18,7 +19,10 @@ class GUIDTaskRegisterVehicleTest extends ActorTest { assert(!obj_wep.HasGUID) assert(!obj_wep_ammo.HasGUID) assert(!obj_trunk_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.RegisterVehicle(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.RegisterVehicle(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(obj.HasGUID) assert(obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala index f67ce272..760627bd 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskTest.scala @@ -2,7 +2,7 @@ package objects.guidtask import java.util.logging.LogManager - +import scala.util.Success import akka.actor.{ActorRef, ActorSystem, Props} import akka.testkit.TestProbe import net.psforever.objects.entity.IdentifiableEntity @@ -14,21 +14,24 @@ import net.psforever.objects.guid.{NumberPoolHub, Task, TaskResolver} object GUIDTaskTest { class TestObject extends IdentifiableEntity - class RegisterTestTask(probe : ActorRef) extends Task { - def Execute(resolver : ActorRef) : Unit = { - probe ! scala.util.Success - resolver ! scala.util.Success(this) + class RegisterTestTask(probe: ActorRef) extends Task { + def Execute(resolver: ActorRef): Unit = { + probe ! Success + resolver ! Success(this) } } - def CommonTestSetup(implicit system : ActorSystem) : (NumberPoolHub, ActorRef, ActorRef, TestProbe) = { + def CommonTestSetup(implicit system: ActorSystem): (NumberPoolHub, ActorRef, ActorRef, TestProbe) = { import akka.actor.Props import akka.routing.RandomPool import akka.testkit.TestProbe - val guid : NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(110)) + val guid: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(110)) guid.AddPool("dynamic", (1 to 100).toList).Selector = new RandomSelector //TODO name is hardcoded for now - val uns = system.actorOf(RandomPool(25).props(Props(classOf[UniqueNumberSystem], guid, GUIDTaskTest.AllocateNumberPoolActors(guid))), "uns") + val uns = system.actorOf( + RandomPool(25).props(Props(classOf[UniqueNumberSystem], guid, GUIDTaskTest.AllocateNumberPoolActors(guid))), + "uns" + ) val taskResolver = system.actorOf(RandomPool(15).props(Props[TaskResolver]), "resolver") LogManager.getLogManager.reset() //suppresses any internal loggers created by the above elements (guid, uns, taskResolver, TestProbe()) @@ -37,9 +40,12 @@ object GUIDTaskTest { /** * @see `UniqueNumberSystem.AllocateNumberPoolActors(NumberPoolHub)(implicit ActorContext)` */ - def AllocateNumberPoolActors(poolSource : NumberPoolHub)(implicit system : ActorSystem) : Map[String, ActorRef] = { - poolSource.Pools.map({ case ((pname, pool)) => - pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname) - }).toMap + def AllocateNumberPoolActors(poolSource: NumberPoolHub)(implicit system: ActorSystem): Map[String, ActorRef] = { + poolSource.Pools + .map({ + case ((pname, pool)) => + pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname) + }) + .toMap } } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAmmoTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAmmoTest.scala index 77ea65dd..fb15d1b1 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAmmoTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAmmoTest.scala @@ -8,11 +8,14 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskUnregisterAmmoTest extends ActorTest { "UnregisterEquipment -> UnregisterObjectTask" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = AmmoBox(GlobalDefinitions.energy_cell) + val obj = AmmoBox(GlobalDefinitions.energy_cell) guid.register(obj, "dynamic") assert(obj.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterEquipment(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAvatarTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAvatarTest.scala index 09d8f8e3..3d705df0 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAvatarTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterAvatarTest.scala @@ -9,14 +9,14 @@ import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} class GUIDTaskUnregisterAvatarTest extends ActorTest { "UnregisterAvatar" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj_wep = Tool(GlobalDefinitions.beamer) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_wep.AmmoSlots.head.Box = obj_wep_ammo val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj.Slot(6).Equipment = obj_inv_ammo - val obj_locker = obj.Slot(5).Equipment.get + val obj_locker = obj.Slot(5).Equipment.get val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_locker.asInstanceOf[LockerEquipment].Inventory += 0 -> obj_locker_ammo guid.register(obj, "dynamic") @@ -32,7 +32,10 @@ class GUIDTaskUnregisterAvatarTest extends ActorTest { assert(obj_inv_ammo.HasGUID) assert(obj_locker.HasGUID) assert(obj_locker_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterAvatar(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterAvatar(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) assert(!obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterObjectTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterObjectTest.scala index 9f91dc7b..3318b579 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterObjectTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterObjectTest.scala @@ -7,11 +7,14 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskUnregisterObjectTest extends ActorTest { "UnregisterObjectTask" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = new GUIDTaskTest.TestObject + val obj = new GUIDTaskTest.TestObject guid.register(obj, "dynamic") assert(obj.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterObjectTask(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterObjectTask(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) } diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterPlayerTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterPlayerTest.scala index 03ef7b34..f48489fb 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterPlayerTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterPlayerTest.scala @@ -9,14 +9,14 @@ import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire} class GUIDTaskUnregisterPlayerTest extends ActorTest { "UnregisterPlayer" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj_wep = Tool(GlobalDefinitions.beamer) + val obj = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val obj_wep = Tool(GlobalDefinitions.beamer) obj.Slot(0).Equipment = obj_wep val obj_wep_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_wep.AmmoSlots.head.Box = obj_wep_ammo val obj_inv_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj.Slot(6).Equipment = obj_inv_ammo - val obj_locker = obj.Slot(5).Equipment.get + val obj_locker = obj.Slot(5).Equipment.get val obj_locker_ammo = AmmoBox(GlobalDefinitions.energy_cell) obj_locker.asInstanceOf[LockerEquipment].Inventory += 0 -> obj_locker_ammo guid.register(obj, "dynamic") @@ -32,7 +32,10 @@ class GUIDTaskUnregisterPlayerTest extends ActorTest { assert(obj_inv_ammo.HasGUID) assert(obj_locker.HasGUID) assert(obj_locker_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterPlayer(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterPlayer(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) assert(!obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterToolTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterToolTest.scala index 49352784..7f9fc5f4 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterToolTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterToolTest.scala @@ -8,14 +8,17 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskUnregisterToolTest extends ActorTest { "UnregisterEquipment -> UnregisterTool" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Tool(GlobalDefinitions.beamer) + val obj = Tool(GlobalDefinitions.beamer) obj.AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.energy_cell) guid.register(obj, "dynamic") guid.register(obj.AmmoSlots.head.Box, "dynamic") assert(obj.HasGUID) assert(obj.AmmoSlots.head.Box.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterEquipment(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterEquipment(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) assert(!obj.AmmoSlots.head.Box.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterTurretTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterTurretTest.scala index 35821890..a8e3629a 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterTurretTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterTurretTest.scala @@ -8,10 +8,10 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskUnregisterTurretTest extends ActorTest { "UnregisterDeployableTurret" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) - val obj_wep = obj.Weapons(1).Equipment.get - val obj_ammo = obj_wep.asInstanceOf[Tool].AmmoSlot.Box - val obj_res = obj.Inventory.Items.map(_.obj) + val obj = new TurretDeployable(GlobalDefinitions.portable_manned_turret_vs) + val obj_wep = obj.Weapons(1).Equipment.get + val obj_ammo = obj_wep.asInstanceOf[Tool].AmmoSlot.Box + val obj_res = obj.Inventory.Items.map(_.obj) guid.register(obj, "dynamic") guid.register(obj_wep, "dynamic") guid.register(obj_ammo, "dynamic") @@ -21,7 +21,10 @@ class GUIDTaskUnregisterTurretTest extends ActorTest { assert(obj_wep.HasGUID) assert(obj_ammo.HasGUID) obj_res.foreach(box => box.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterDeployableTurret(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterDeployableTurret(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) assert(!obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterVehicleTest.scala b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterVehicleTest.scala index 6e3d9121..11317a94 100644 --- a/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterVehicleTest.scala +++ b/common/src/test/scala/objects/guidtask/GUIDTaskUnregisterVehicleTest.scala @@ -8,9 +8,10 @@ import net.psforever.objects.guid.{GUIDTask, TaskResolver} class GUIDTaskUnregisterVehicleTest extends ActorTest { "RegisterVehicle" in { val (guid, uns, taskResolver, probe) = GUIDTaskTest.CommonTestSetup - val obj = Vehicle(GlobalDefinitions.fury) - val obj_wep = obj.WeaponControlledFromSeat(0).get - val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = AmmoBox(GlobalDefinitions.hellfire_ammo)).get + val obj = Vehicle(GlobalDefinitions.fury) + val obj_wep = obj.WeaponControlledFromSeat(0).get + val obj_wep_ammo = (obj.WeaponControlledFromSeat(0).get.asInstanceOf[Tool].AmmoSlots.head.Box = + AmmoBox(GlobalDefinitions.hellfire_ammo)).get obj.Trunk += 30 -> AmmoBox(GlobalDefinitions.hellfire_ammo) val obj_trunk_ammo = obj.Trunk.Items(0).obj guid.register(obj, "dynamic") @@ -22,7 +23,10 @@ class GUIDTaskUnregisterVehicleTest extends ActorTest { assert(obj_wep.HasGUID) assert(obj_wep_ammo.HasGUID) assert(obj_trunk_ammo.HasGUID) - taskResolver ! TaskResolver.GiveTask(new GUIDTaskTest.RegisterTestTask(probe.ref), List(GUIDTask.UnregisterVehicle(obj)(uns))) + taskResolver ! TaskResolver.GiveTask( + new GUIDTaskTest.RegisterTestTask(probe.ref), + List(GUIDTask.UnregisterVehicle(obj)(uns)) + ) probe.expectMsg(scala.util.Success) assert(!obj.HasGUID) assert(!obj_wep.HasGUID) diff --git a/common/src/test/scala/objects/number/NumberPoolHubTest.scala b/common/src/test/scala/objects/number/NumberPoolHubTest.scala index 290e59b1..f2f38588 100644 --- a/common/src/test/scala/objects/number/NumberPoolHubTest.scala +++ b/common/src/test/scala/objects/number/NumberPoolHubTest.scala @@ -11,11 +11,11 @@ import org.specs2.mutable.Specification import scala.util.Success class NumberPoolHubTest extends Specification { - val numberList = 0 :: 1 :: 2 :: 3 :: 5 :: 8 :: 13 :: 21 :: Nil + val numberList = 0 :: 1 :: 2 :: 3 :: 5 :: 8 :: 13 :: 21 :: Nil val numberList1 = 0 :: 1 :: 2 :: 3 :: 5 :: Nil val numberList2 = 8 :: 13 :: 21 :: 34 :: Nil - val numberSet1 = numberList1.toSet - val numberSet2 = numberList2.toSet + val numberSet1 = numberList1.toSet + val numberSet2 = numberList2.toSet class EntityTestClass extends IdentifiableEntity "NumberPoolHub" should { diff --git a/common/src/test/scala/objects/number/NumberPoolTest.scala b/common/src/test/scala/objects/number/NumberPoolTest.scala index 6c51f3db..628b8838 100644 --- a/common/src/test/scala/objects/number/NumberPoolTest.scala +++ b/common/src/test/scala/objects/number/NumberPoolTest.scala @@ -25,10 +25,10 @@ class NumberPoolTest extends Specification { } "get a number" in { - val min = 10 - val max = 20 + val min = 10 + val max = 20 val domain = (min to max).toList - val obj = new SimplePool(domain) + val obj = new SimplePool(domain) obj.Get() match { case Success(number) => (min <= number && number <= max) mustEqual true @@ -74,10 +74,10 @@ class NumberPoolTest extends Specification { } "get a number" in { - val min = 10 - val max = 20 + val min = 10 + val max = 20 val domain = (min to max).toList - val obj = new ExclusivePool(domain) + val obj = new ExclusivePool(domain) obj.Get() match { case Success(number) => (min <= number && number <= max) mustEqual true @@ -88,10 +88,10 @@ class NumberPoolTest extends Specification { } "get all the numbers" in { - val min = 10 - val max = 20 + val min = 10 + val max = 20 val domain = (min to max).toList - val obj = new ExclusivePool(domain) + val obj = new ExclusivePool(domain) domain.foreach(_ => { obj.Get() match { case Success(number) => @@ -107,16 +107,17 @@ class NumberPoolTest extends Specification { val obj = new ExclusivePool((0 to 10).toList) obj.Get() match { case Success(number) => - try { obj.Return(number) mustEqual true } catch { case _ : Exception => ko } + try { obj.Return(number) mustEqual true } + catch { case _: Exception => ko } case _ => ko } } "return all the numbers" in { - val range = 0 to 10 - val obj = new ExclusivePool((0 to 10).toList) - val list : ListBuffer[Int] = ListBuffer[Int]() + val range = 0 to 10 + val obj = new ExclusivePool((0 to 10).toList) + val list: ListBuffer[Int] = ListBuffer[Int]() range.foreach(_ => { obj.Get() match { case Success(number) => @@ -125,7 +126,8 @@ class NumberPoolTest extends Specification { } }) list.foreach(number => { - try { obj.Return(number) mustEqual true } catch { case _ : Exception => ko } + try { obj.Return(number) mustEqual true } + catch { case _: Exception => ko } }) ok } diff --git a/common/src/test/scala/objects/number/NumberSelectorTest.scala b/common/src/test/scala/objects/number/NumberSelectorTest.scala index b690417f..cee7172e 100644 --- a/common/src/test/scala/objects/number/NumberSelectorTest.scala +++ b/common/src/test/scala/objects/number/NumberSelectorTest.scala @@ -5,9 +5,9 @@ import net.psforever.objects.guid.selector.{RandomSequenceSelector, _} import org.specs2.mutable.Specification class NumberSelectorTest extends Specification { - def randArrayGen(n : Int = 26, dx : Int = 0) : Array[Int] = { + def randArrayGen(n: Int = 26, dx: Int = 0): Array[Int] = { val obj = Array.ofDim[Int](n) - (0 to 25).foreach(x => { obj(x) = x + dx } ) + (0 to 25).foreach(x => { obj(x) = x + dx }) obj } @@ -18,15 +18,15 @@ class NumberSelectorTest extends Specification { } "get a number" in { - val n : Int = 26 - val obj = new RandomSequenceSelector + val n: Int = 26 + val obj = new RandomSequenceSelector obj.Get(randArrayGen(n)) mustNotEqual -1 } "return a number" in { - val n : Int = 26 - val obj = new RandomSequenceSelector - val ary = randArrayGen(n) + val n: Int = 26 + val obj = new RandomSequenceSelector + val ary = randArrayGen(n) val number = obj.Get(ary) number mustNotEqual -1 ary.head mustEqual -1 //regardless of which number we actually got, the head of the array is now -1 @@ -35,29 +35,29 @@ class NumberSelectorTest extends Specification { } "get all numbers" in { - val n = 26 + val n = 26 val obj = new RandomSequenceSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) ok } "return all numbers" in { - val n = 26 - val obj = new RandomSequenceSelector + val n = 26 + val obj = new RandomSequenceSelector val ary1 = randArrayGen(n) val ary2 = randArrayGen(n) - (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) } ) //move numbers from ary1 to ary2 - ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match - (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true } ) //return numbers from ary2 to ary1 - ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 + (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) }) //move numbers from ary1 to ary2 + ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match + (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true }) //return numbers from ary2 to ary1 + ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 } "gets invalid index when exhausted" in { - val n = 26 + val n = 26 val obj = new RandomSequenceSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) obj.Get(ary) mustEqual -1 } @@ -80,8 +80,8 @@ class NumberSelectorTest extends Specification { } "return a number" in { - val obj = new RandomSelector - val ary = randArrayGen() + val obj = new RandomSelector + val ary = randArrayGen() val number = obj.Get(ary) number mustNotEqual -1 ary.head mustEqual -1 //regardless of which number we actually got, the head of the array is now -1 @@ -90,29 +90,29 @@ class NumberSelectorTest extends Specification { } "get all numbers" in { - val n = 26 + val n = 26 val obj = new RandomSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) ok } "return all numbers" in { - val n = 26 - val obj = new RandomSelector + val n = 26 + val obj = new RandomSelector val ary1 = randArrayGen(n) val ary2 = randArrayGen(n) - (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) } ) //move numbers from ary1 to ary2 - ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match - (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true } ) //return numbers from ary2 to ary1 - ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 + (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) }) //move numbers from ary1 to ary2 + ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match + (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true }) //return numbers from ary2 to ary1 + ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 } "gets invalid index when exhausted" in { - val n = 26 + val n = 26 val obj = new RandomSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) obj.Get(ary) mustEqual -1 } @@ -135,8 +135,8 @@ class NumberSelectorTest extends Specification { } "return a number" in { - val obj = new StrictInOrderSelector - val ary = randArrayGen() + val obj = new StrictInOrderSelector + val ary = randArrayGen() val number = obj.Get(ary) number mustNotEqual -1 ary.head mustEqual -1 //regardless of which number we actually got, the head of the array is now -1 @@ -145,37 +145,37 @@ class NumberSelectorTest extends Specification { } "get all numbers" in { - val n = 26 + val n = 26 val obj = new StrictInOrderSelector val ary = randArrayGen() - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) ok } "return all numbers" in { - val n = 26 - val obj = new StrictInOrderSelector + val n = 26 + val obj = new StrictInOrderSelector val ary1 = randArrayGen(n) val ary2 = randArrayGen(n) - (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) } ) //move numbers from ary1 to ary2 - ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match - (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true } ) //return numbers from ary2 to ary1 - ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 + (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) }) //move numbers from ary1 to ary2 + ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match + (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true }) //return numbers from ary2 to ary1 + ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 } "gets invalid index when exhausted" in { - val n = 26 + val n = 26 val obj = new StrictInOrderSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) obj.Get(ary) mustEqual -1 } "wait until number is available" in { - val n = 26 + val n = 26 val obj = new StrictInOrderSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) obj.Get(ary) mustEqual -1 obj.Return(1, ary) //return a number that isn't the one StrictOrder is waiting on obj.Get(ary) mustEqual -1 @@ -203,8 +203,8 @@ class NumberSelectorTest extends Specification { } "return a number" in { - val obj = new OpportunisticSelector - val ary = randArrayGen() + val obj = new OpportunisticSelector + val ary = randArrayGen() val number = obj.Get(ary) number mustNotEqual -1 ary.head mustEqual -1 //regardless of which number we actually got, the head of the array is now -1 @@ -215,26 +215,26 @@ class NumberSelectorTest extends Specification { "get all numbers" in { val obj = new OpportunisticSelector val ary = randArrayGen() - (0 to 25).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 to 25).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) ok } "return all numbers" in { - val n = 26 - val obj = new OpportunisticSelector + val n = 26 + val obj = new OpportunisticSelector val ary1 = randArrayGen(n) val ary2 = randArrayGen(n) - (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) } ) //move numbers from ary1 to ary2 - ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match - (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true } ) //return numbers from ary2 to ary1 - ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 + (0 until n).foreach(index => { ary2(index) = obj.Get(ary1) }) //move numbers from ary1 to ary2 + ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match + (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true }) //return numbers from ary2 to ary1 + ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 } "gets invalid index when exhausted" in { - val n = 26 + val n = 26 val obj = new OpportunisticSelector val ary = randArrayGen(n) - (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 } ) + (0 until n).foreach(_ => { obj.Get(ary) mustNotEqual -1 }) obj.Get(ary) mustEqual -1 } @@ -282,11 +282,13 @@ class NumberSelectorTest extends Specification { obj.SelectionIndex = 10 //even if we move the selection index, the number will return to its last position obj.Return(number, ary) ary(number) mustEqual number //the returned number at the original index - obj.Get(ary) mustEqual 10 //of course, with the selection index changed, we will not get the same position next time + obj.Get( + ary + ) mustEqual 10 //of course, with the selection index changed, we will not get the same position next time } "get all numbers" in { - val n = 26 + val n = 26 val obj = new SpecificSelector val ary = randArrayGen(n) (0 until n).foreach(i => { @@ -297,17 +299,17 @@ class NumberSelectorTest extends Specification { } "return all numbers" in { - val n = 26 - val obj = new SpecificSelector + val n = 26 + val obj = new SpecificSelector val ary1 = randArrayGen(n) val ary2 = randArrayGen(n) (0 until n).foreach(index => { obj.SelectionIndex = index ary2(index) = obj.Get(ary1) - }) //move numbers from ary1 to ary2 - ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match - (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true } ) //return numbers from ary2 to ary1 - ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 + }) //move numbers from ary1 to ary2 + ary2.toSet.diff(ary1.toSet).size mustEqual n //no numbers between ary2 and ary1 match + (0 until n).foreach(index => { obj.Return(ary2(index), ary1) mustEqual true }) //return numbers from ary2 to ary1 + ary2.toSet.diff(ary1.toSet).size mustEqual 0 //no difference in the content between ary2 and ary1 } "gets invalid index when exhausted" in { diff --git a/common/src/test/scala/objects/number/NumberSourceTest.scala b/common/src/test/scala/objects/number/NumberSourceTest.scala index 3b66fce2..4601cfb7 100644 --- a/common/src/test/scala/objects/number/NumberSourceTest.scala +++ b/common/src/test/scala/objects/number/NumberSourceTest.scala @@ -20,8 +20,8 @@ class NumberSourceTest extends Specification { } "get a number" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Leased @@ -32,16 +32,16 @@ class NumberSourceTest extends Specification { } "assign the number" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.Object = new TestClass() ok } "return a number (unused)" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 obj.CountUsed mustEqual 1 @@ -51,9 +51,9 @@ class NumberSourceTest extends Specification { } "return a number (assigned)" in { - val obj = LimitedNumberSource(25) - val test = new TestClass() - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val test = new TestClass() + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 result.get.Object = test @@ -64,8 +64,8 @@ class NumberSourceTest extends Specification { } "restrict a number (unassigned)" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Restrict(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Restrict(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Restricted @@ -73,112 +73,112 @@ class NumberSourceTest extends Specification { } "restrict a number (assigned + multiple assignments)" in { - val obj = LimitedNumberSource(25) - val test1 = new TestClass() - val test2 = new TestClass() - val result : Option[LoanedKey] = obj.Restrict(5) + val obj = LimitedNumberSource(25) + val test1 = new TestClass() + val test2 = new TestClass() + val result: Option[LoanedKey] = obj.Restrict(5) result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Restricted result.get.Object.isEmpty mustEqual true - result.get.Object = None //assignment 1 + result.get.Object = None //assignment 1 result.get.Object.isEmpty mustEqual true //still unassigned - result.get.Object = test1 //assignment 2 + result.get.Object = test1 //assignment 2 result.get.Object.contains(test1) mustEqual true - result.get.Object = test2 //assignment 3 + result.get.Object = test2 //assignment 3 result.get.Object.contains(test1) mustEqual true //same as above } "return a restricted number (correctly fail)" in { - val obj = LimitedNumberSource(25) - val test = new TestClass() - val result : Option[LoanedKey] = obj.Restrict(5) + val obj = LimitedNumberSource(25) + val test = new TestClass() + val result: Option[LoanedKey] = obj.Restrict(5) result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Restricted result.get.Object = test obj.Return(5) - val result2 : Option[SecureKey] = obj.Get(5) + val result2: Option[SecureKey] = obj.Get(5) result2.get.GUID mustEqual 5 result2.get.Policy mustEqual AvailabilityPolicy.Restricted result2.get.Object.contains(test) mustEqual true } "return a secure key" in { - val obj = LimitedNumberSource(25) + val obj = LimitedNumberSource(25) val test = new TestClass() - val result1 : Option[LoanedKey] = obj.Available(5) + val result1: Option[LoanedKey] = obj.Available(5) result1.get.Object = test test.GUID mustEqual PlanetSideGUID(5) - val result2 : Option[SecureKey] = obj.Get(5) + val result2: Option[SecureKey] = obj.Get(5) obj.Return(result2.get).contains(test) mustEqual true } "restrict a previously-assigned number" in { - val obj = LimitedNumberSource(25) - val test = new TestClass() - val result1 : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val test = new TestClass() + val result1: Option[LoanedKey] = obj.Available(5) result1.isDefined mustEqual true result1.get.Policy mustEqual AvailabilityPolicy.Leased result1.get.Object = test - val result2 : Option[LoanedKey] = obj.Restrict(5) + val result2: Option[LoanedKey] = obj.Restrict(5) result2.isDefined mustEqual true result2.get.Policy mustEqual AvailabilityPolicy.Restricted result2.get.Object.contains(test) mustEqual true } "check a number (not previously gotten)" in { - val obj = LimitedNumberSource(25) - val result2 : Option[SecureKey] = obj.Get(5) + val obj = LimitedNumberSource(25) + val result2: Option[SecureKey] = obj.Get(5) result2.get.GUID mustEqual 5 result2.get.Policy mustEqual AvailabilityPolicy.Available result2.get.Object.isEmpty mustEqual true } "check a number (previously gotten)" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Leased result.get.Object.isEmpty mustEqual true - val result2 : Option[SecureKey] = obj.Get(5) + val result2: Option[SecureKey] = obj.Get(5) result2.get.GUID mustEqual 5 result2.get.Policy mustEqual AvailabilityPolicy.Leased result2.get.Object.isEmpty mustEqual true } "check a number (assigned)" in { - val obj = LimitedNumberSource(25) - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val result: Option[LoanedKey] = obj.Available(5) result.isDefined mustEqual true result.get.GUID mustEqual 5 result.get.Policy mustEqual AvailabilityPolicy.Leased result.get.Object = new TestClass() - val result2 : Option[SecureKey] = obj.Get(5) + val result2: Option[SecureKey] = obj.Get(5) result2.get.GUID mustEqual 5 result2.get.Policy mustEqual AvailabilityPolicy.Leased result2.get.Object mustEqual result.get.Object } "check a number (assigned and returned)" in { - val obj = LimitedNumberSource(25) - val test = new TestClass() - val result : Option[LoanedKey] = obj.Available(5) + val obj = LimitedNumberSource(25) + val test = new TestClass() + val result: Option[LoanedKey] = obj.Available(5) result.get.Policy mustEqual AvailabilityPolicy.Leased result.get.Object = test - val result2 : Option[SecureKey] = obj.Get(5) + val result2: Option[SecureKey] = obj.Get(5) result2.get.Policy mustEqual AvailabilityPolicy.Leased result2.get.Object.get mustEqual test obj.Return(5).contains(test) mustEqual true - val result3 : Option[SecureKey] = obj.Get(5) + val result3: Option[SecureKey] = obj.Get(5) result3.get.Policy mustEqual AvailabilityPolicy.Available result3.get.Object.isEmpty mustEqual true } "clear" in { - val obj = LimitedNumberSource(25) + val obj = LimitedNumberSource(25) val test1 = new TestClass() val test2 = new TestClass() val test3 = new TestClass() @@ -189,7 +189,7 @@ class NumberSourceTest extends Specification { obj.Restrict(20).get.Object = test3 obj.CountUsed mustEqual 4 - val list : List[IdentifiableEntity] = obj.Clear() + val list: List[IdentifiableEntity] = obj.Clear() obj.CountUsed mustEqual 0 list.size mustEqual 3 list.count(obj => obj == test1) mustEqual 1 diff --git a/common/src/test/scala/objects/number/UniqueNumberSystemTest.scala b/common/src/test/scala/objects/number/UniqueNumberSystemTest.scala index 01b1706e..bff5ab53 100644 --- a/common/src/test/scala/objects/number/UniqueNumberSystemTest.scala +++ b/common/src/test/scala/objects/number/UniqueNumberSystemTest.scala @@ -15,8 +15,8 @@ import scala.util.{Failure, Success} class AllocateNumberPoolActors extends ActorTest { "AllocateNumberPoolActors" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList) guid.AddPool("pool2", (3001 to 4000).toList) guid.AddPool("pool3", (5001 to 6000).toList) @@ -32,12 +32,15 @@ class AllocateNumberPoolActors extends ActorTest { class UniqueNumberSystemTest extends ActorTest() { "UniqueNumberSystem" should { "constructor" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList) guid.AddPool("pool2", (3001 to 4000).toList) guid.AddPool("pool3", (5001 to 6000).toList) - system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) //as long as it constructs ... } } @@ -48,18 +51,21 @@ class UniqueNumberSystemTest1 extends ActorTest() { "UniqueNumberSystem" should { "Register (success)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) - val pool1 = (1001 to 2000).toList - val pool2 = (3001 to 4000).toList - val pool3 = (5001 to 6000).toList + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) + val pool1 = (1001 to 2000).toList + val pool2 = (3001 to 4000).toList + val pool3 = (5001 to 6000).toList guid.AddPool("pool1", pool1).Selector = new RandomSelector guid.AddPool("pool2", pool2).Selector = new RandomSelector guid.AddPool("pool3", pool3).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) assert(src.CountUsed == 0) //pool1 - for(_ <- 1 to 100) { + for (_ <- 1 to 100) { val testObj = new EntityTestClass() uns ! Register(testObj, "pool1") val msg = receiveOne(Duration.create(500, "ms")) @@ -67,7 +73,7 @@ class UniqueNumberSystemTest1 extends ActorTest() { assert(pool1.contains(testObj.GUID.guid)) } //pool2 - for(_ <- 1 to 100) { + for (_ <- 1 to 100) { val testObj = new EntityTestClass() uns ! Register(testObj, "pool2") val msg = receiveOne(Duration.create(500, "ms")) @@ -75,7 +81,7 @@ class UniqueNumberSystemTest1 extends ActorTest() { assert(pool2.contains(testObj.GUID.guid)) } //pool3 - for(_ <- 1 to 100) { + for (_ <- 1 to 100) { val testObj = new EntityTestClass() uns ! Register(testObj, "pool3") val msg = receiveOne(Duration.create(500, "ms")) @@ -92,12 +98,15 @@ class UniqueNumberSystemTest2 extends ActorTest() { "UniqueNumberSystem" should { "Register (success; already registered)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() assert(!testObj.HasGUID) assert(src.CountUsed == 0) @@ -125,12 +134,15 @@ class UniqueNumberSystemTest3 extends ActorTest() { "UniqueNumberSystem" should { "Register (failure; no pool)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() assert(!testObj.HasGUID) assert(src.CountUsed == 0) @@ -149,13 +161,16 @@ class UniqueNumberSystemTest4 extends ActorTest() { "UniqueNumberSystem" should { "Register (failure; empty pool)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector guid.AddPool("pool4", 50 :: Nil).Selector = new RandomSelector //list of one element; can not add an empty list - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj1 = new EntityTestClass() uns ! Register(testObj1, "pool4") @@ -175,13 +190,16 @@ class UniqueNumberSystemTest5 extends ActorTest() { "UniqueNumberSystem" should { "Unregister (success)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) - val pool2 = (3001 to 4000).toList + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) + val pool2 = (3001 to 4000).toList guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", pool2).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() assert(!testObj.HasGUID) assert(src.CountUsed == 0) @@ -207,12 +225,15 @@ class UniqueNumberSystemTest6 extends ActorTest() { "UniqueNumberSystem" should { "Unregister (success; object not registered at all)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() assert(!testObj.HasGUID) assert(src.CountUsed == 0) @@ -231,14 +252,17 @@ class UniqueNumberSystemTest7 extends ActorTest() { "UniqueNumberSystem" should { "Unregister (failure; number not in system)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() - testObj.GUID =PlanetSideGUID(6001) //fake registering; number too high + testObj.GUID = PlanetSideGUID(6001) //fake registering; number too high assert(testObj.HasGUID) assert(src.CountUsed == 0) @@ -256,12 +280,15 @@ class UniqueNumberSystemTest8 extends ActorTest() { "UniqueNumberSystem" should { "Unregister (failure; object is not registered to that number)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val testObj = new EntityTestClass() testObj.GUID = PlanetSideGUID(3500) //fake registering assert(testObj.HasGUID) @@ -281,19 +308,22 @@ class UniqueNumberSystemTest9 extends ActorTest() { "UniqueNumberSystem" should { "Failures (manually walking the failure cases)" in { - val src : LimitedNumberSource = LimitedNumberSource(6000) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(6000) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (1001 to 2000).toList).Selector = new RandomSelector guid.AddPool("pool2", (3001 to 4000).toList).Selector = new RandomSelector guid.AddPool("pool3", (5001 to 6000).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) val excp = new Exception("EXCEPTION MESSAGE") expectNoMessage(Duration.create(200, "ms")) //GiveNumber uns ! NumberPoolActor.GiveNumber(1001, Some("test")) //no task associated with id="test" uns ! NumberPoolActor.GiveNumber(1000, Some("test")) //no task associated with id="test" and number is not pooled - uns ! NumberPoolActor.GiveNumber(1000, Some(1)) //the task could theoretically exist, but does not + uns ! NumberPoolActor.GiveNumber(1000, Some(1)) //the task could theoretically exist, but does not //NoNumber uns ! NumberPoolActor.NoNumber(excp, Some(1)) uns ! NumberPoolActor.NoNumber(excp, None) @@ -315,10 +345,13 @@ class UniqueNumberSystemTestA extends ActorTest { "UniqueNumberSystem" should { "remain consistent between registrations" in { - val src : LimitedNumberSource = LimitedNumberSource(10) - val guid : NumberPoolHub = new NumberPoolHub(src) + val src: LimitedNumberSource = LimitedNumberSource(10) + val guid: NumberPoolHub = new NumberPoolHub(src) guid.AddPool("pool1", (0 until 10).toList).Selector = new RandomSelector - val uns = system.actorOf(Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), "uns") + val uns = system.actorOf( + Props(classOf[UniqueNumberSystem], guid, UniqueNumberSystemTest.AllocateNumberPoolActors(guid)), + "uns" + ) expectNoMessage(Duration.create(200, "ms")) assert(src.CountUsed == 0) @@ -338,12 +371,16 @@ class UniqueNumberSystemTestA extends ActorTest { } object UniqueNumberSystemTest { + /** * @see `UniqueNumberSystem.AllocateNumberPoolActors(NumberPoolHub)(implicit ActorContext)` */ - def AllocateNumberPoolActors(poolSource : NumberPoolHub)(implicit system : ActorSystem) : Map[String, ActorRef] = { - poolSource.Pools.map({ case (pname, pool) => - pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname) - }).toMap + def AllocateNumberPoolActors(poolSource: NumberPoolHub)(implicit system: ActorSystem): Map[String, ActorRef] = { + poolSource.Pools + .map({ + case (pname, pool) => + pname -> system.actorOf(Props(classOf[NumberPoolActor], pool), pname) + }) + .toMap } } diff --git a/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala b/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala index d9193af9..ac220538 100644 --- a/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala +++ b/common/src/test/scala/objects/terminal/ImplantTerminalMechTest.scala @@ -26,7 +26,9 @@ class ImplantTerminalMechTest extends Specification { implant_terminal_mech.MountPoints mustEqual Map(1 -> 0) implant_terminal_mech.Seats.keySet mustEqual Set(0) implant_terminal_mech.Seats(0).isInstanceOf[SeatDefinition] mustEqual true - implant_terminal_mech.Seats(0).ArmorRestriction mustEqual net.psforever.objects.vehicles.SeatArmorRestriction.NoMax + implant_terminal_mech + .Seats(0) + .ArmorRestriction mustEqual net.psforever.objects.vehicles.SeatArmorRestriction.NoMax implant_terminal_mech.Seats(0).Bailable mustEqual false implant_terminal_mech.Seats(0).ControlledWeapon.isEmpty mustEqual true } @@ -50,7 +52,7 @@ class ImplantTerminalMechTest extends Specification { "get passenger in a seat" in { val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) + val obj = ImplantTerminalMech(GlobalDefinitions.implant_terminal_mech) obj.PassengerInSeat(player).isEmpty mustEqual true obj.Seats(0).Occupant = player obj.PassengerInSeat(player).contains(0) mustEqual true @@ -74,7 +76,7 @@ class ImplantTerminalMechControl2Test extends ActorTest { "ImplantTerminalMechControl" should { "let a player mount" in { val (player, mech) = ImplantTerminalMechTest.SetUpAgents(PlanetSideEmpire.TR) - val msg = Mountable.TryMount(player, 0) + val msg = Mountable.TryMount(player, 0) mech.Actor ! msg val reply = receiveOne(Duration.create(200, "ms")) @@ -94,7 +96,7 @@ class ImplantTerminalMechControl3Test extends ActorTest { "ImplantTerminalMechControl" should { "block a player from mounting" in { val (player1, mech) = ImplantTerminalMechTest.SetUpAgents(PlanetSideEmpire.TR) - val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val player2 = Player(Avatar("test2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) mech.Actor ! Mountable.TryMount(player1, 0) receiveOne(Duration.create(100, "ms")) //consume reply @@ -142,7 +144,7 @@ class ImplantTerminalMechControl5Test extends ActorTest { receiveOne(Duration.create(100, "ms")) //consume reply assert(mech.Seat(0).get.isOccupied) - mech.Velocity = Vector3(1,0,0) //makes no sense, but it works as the "seat" is not bailable + mech.Velocity = Vector3(1, 0, 0) //makes no sense, but it works as the "seat" is not bailable mech.Actor ! Mountable.TryDismount(player, 0) val reply = receiveOne(Duration.create(100, "ms")) assert(reply.isInstanceOf[Mountable.MountMessages]) @@ -158,14 +160,21 @@ class ImplantTerminalMechControl5Test extends ActorTest { } object ImplantTerminalMechTest { - def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, ImplantTerminalMech) = { + def SetUpAgents(faction: PlanetSideEmpire.Value)(implicit system: ActorSystem): (Player, ImplantTerminalMech) = { val guid = new NumberPoolHub(new LimitedNumberSource(10)) - val map = new ZoneMap("test") + val map = new ZoneMap("test") val zone = new Zone("test", map, 0) { override def SetupNumberPools() = {} GUID(guid) } - val building = new Building("Building", building_guid = 0, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) //guid=3 + val building = new Building( + "Building", + building_guid = 0, + map_id = 0, + zone, + StructureType.Building, + GlobalDefinitions.building + ) //guid=3 building.Faction = faction val interface = Terminal(GlobalDefinitions.implant_terminal_interface) //guid=2 diff --git a/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala b/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala index cbdcc22a..f4b4d480 100644 --- a/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/MatrixTerminalTest.scala @@ -20,8 +20,8 @@ class MatrixTerminalTest extends Specification { } "invalid message" in { - val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) + val player = Player(Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "lite_armor", 0, PlanetSideGUID(0)) val terminal = Terminal(new MatrixTerminalDefinition(519)) terminal.Owner = Vehicle(GlobalDefinitions.quadstealth) terminal.Owner.Faction = PlanetSideEmpire.TR diff --git a/common/src/test/scala/objects/terminal/OrderTerminalTest.scala b/common/src/test/scala/objects/terminal/OrderTerminalTest.scala index c54c79ad..d55234c1 100644 --- a/common/src/test/scala/objects/terminal/OrderTerminalTest.scala +++ b/common/src/test/scala/objects/terminal/OrderTerminalTest.scala @@ -13,7 +13,14 @@ class OrderTerminalTest extends Specification { val avatar = Avatar("test", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute) val player = Player(avatar) - val building = new Building("Building", building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) + val building = new Building( + "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 @@ -28,7 +35,7 @@ class OrderTerminalTest extends Specification { "Infantry Order Terminal" should { "player can buy a box of ammunition ('9mmbullet_AP')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "9mmbullet_AP", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "9mmbullet_AP", 0, PlanetSideGUID(0)) val reply = infantryTerminal.Request(player, msg) reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true val reply2 = reply.asInstanceOf[Terminal.BuyEquipment] @@ -37,7 +44,7 @@ class OrderTerminalTest extends Specification { } "player can buy a weapon ('suppressor')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "suppressor", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "suppressor", 0, PlanetSideGUID(0)) val reply = infantryTerminal.Request(player, msg) reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true val reply2 = reply.asInstanceOf[Terminal.BuyEquipment] @@ -52,7 +59,8 @@ class OrderTerminalTest extends Specification { } "player can buy a box of ammunition belonging to a special armor type ('dualcycler_ammo')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "dualcycler_ammo", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 1, "dualcycler_ammo", 0, PlanetSideGUID(0)) val reply = infantryTerminal.Request(player, msg) reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true val reply2 = reply.asInstanceOf[Terminal.BuyEquipment] @@ -61,7 +69,7 @@ class OrderTerminalTest extends Specification { } "player can buy a support tool ('bank')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 2, "bank", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 2, "bank", 0, PlanetSideGUID(0)) val reply = infantryTerminal.Request(player, msg) reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true val reply2 = reply.asInstanceOf[Terminal.BuyEquipment] @@ -70,7 +78,7 @@ class OrderTerminalTest extends Specification { } "player can buy a box of vehicle ammunition ('105mmbullet')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 3, "105mmbullet", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 3, "105mmbullet", 0, PlanetSideGUID(0)) val reply = infantryTerminal.Request(player, msg) reply.isInstanceOf[Terminal.BuyEquipment] mustEqual true val reply2 = reply.asInstanceOf[Terminal.BuyEquipment] @@ -89,7 +97,10 @@ class OrderTerminalTest extends Specification { player.Slot(6).Equipment = Tool(GlobalDefinitions.beamer) avatar.EquipmentLoadouts.SaveLoadout(player, "test", 0) - val msg = infantryTerminal.Request(player, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 0, PlanetSideGUID(0))) + val msg = infantryTerminal.Request( + player, + ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 0, PlanetSideGUID(0)) + ) msg.isInstanceOf[Terminal.InfantryLoadout] mustEqual true val loadout = msg.asInstanceOf[Terminal.InfantryLoadout] loadout.exosuit mustEqual ExoSuitType.Agile @@ -102,7 +113,10 @@ class OrderTerminalTest extends Specification { } "player can not retrieve an infantry loadout from the wrong line" in { - val msg = infantryTerminal.Request(player, ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 1, PlanetSideGUID(0))) + val msg = infantryTerminal.Request( + player, + ItemTransactionMessage(PlanetSideGUID(10), TransactionType.Loadout, 4, "", 1, PlanetSideGUID(0)) + ) msg.isInstanceOf[Terminal.NoDeal] mustEqual true } } @@ -112,7 +126,8 @@ class OrderTerminalTest extends Specification { terminal.Owner = building "player can spawn a vehicle and its default trunk contents" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 46769, "quadassault", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 46769, "quadassault", 0, PlanetSideGUID(0)) terminal.Request(player, msg) match { case Terminal.BuyVehicle(vehicle, weapons, trunk) => vehicle.Definition mustEqual GlobalDefinitions.quadassault @@ -162,7 +177,8 @@ class OrderTerminalTest extends Specification { terminal.Owner = building "player can learn a certification ('medium_assault')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "medium_assault", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "medium_assault", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.LearnCertification(CertificationType.MediumAssault) } @@ -172,7 +188,8 @@ class OrderTerminalTest extends Specification { } "player can forget a certification ('medium_assault')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "medium_assault", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "medium_assault", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.SellCertification(CertificationType.MediumAssault) } @@ -187,7 +204,8 @@ class OrderTerminalTest extends Specification { terminal.Owner = building "player can learn an implant ('darklight_vision')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "darklight_vision", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "darklight_vision", 0, PlanetSideGUID(0)) val reply = terminal.Request(player, msg) reply.isInstanceOf[Terminal.LearnImplant] mustEqual true @@ -202,7 +220,8 @@ class OrderTerminalTest extends Specification { } "player can un-learn an implant ('darklight_vision')" in { - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "darklight_vision", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "darklight_vision", 0, PlanetSideGUID(0)) val reply = terminal.Request(player, msg) reply.isInstanceOf[Terminal.SellImplant] mustEqual true @@ -212,7 +231,7 @@ class OrderTerminalTest extends Specification { "player can not un-learn a fake implant ('aimbot')" in { val terminal = Terminal(GlobalDefinitions.implant_terminal_interface) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "aimbot", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "aimbot", 0, PlanetSideGUID(0)) terminal.Request(player, msg) mustEqual Terminal.NoDeal() } diff --git a/common/src/test/scala/objects/terminal/ProximityTest.scala b/common/src/test/scala/objects/terminal/ProximityTest.scala index b869dcc4..8646b79e 100644 --- a/common/src/test/scala/objects/terminal/ProximityTest.scala +++ b/common/src/test/scala/objects/terminal/ProximityTest.scala @@ -6,7 +6,12 @@ import akka.testkit.TestProbe import base.ActorTest import net.psforever.objects.serverobject.CommonMessages import net.psforever.objects.serverobject.structures.{Building, StructureType} -import net.psforever.objects.serverobject.terminals.{ProximityTerminal, ProximityTerminalControl, ProximityUnit, Terminal} +import net.psforever.objects.serverobject.terminals.{ + ProximityTerminal, + ProximityTerminalControl, + ProximityUnit, + Terminal +} import net.psforever.objects.zones.{Zone, ZoneActor, ZoneMap} import net.psforever.objects.{Avatar, GlobalDefinitions, Player} import net.psforever.types.{CharacterGender, CharacterVoice, PlanetSideEmpire, PlanetSideGUID} @@ -24,10 +29,12 @@ class ProximityTest extends Specification { } "keep track of users (add)" in { - val avatar1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar1.Spawn avatar1.Health = 50 - val avatar2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar2.Spawn avatar2.Health = 50 @@ -40,10 +47,12 @@ class ProximityTest extends Specification { } "keep track of users (remove)" in { - val avatar1 = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar1 = + Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar1.Spawn avatar1.Health = 50 - val avatar2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar2.Spawn avatar2.Health = 50 @@ -61,19 +70,21 @@ class ProximityTest extends Specification { } "can not add a user twice" in { - val avatar = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar = + Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar.Spawn avatar.Health = 50 val obj = new ProximityTerminal(GlobalDefinitions.medical_terminal) obj.AddUser(avatar) mustEqual true obj.NumberUsers mustEqual 1 - obj.AddUser(avatar)// mustEqual false + obj.AddUser(avatar) // mustEqual false obj.NumberUsers mustEqual 1 } "can not remove a user that was not added" in { - val avatar = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar = + Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar.Spawn avatar.Health = 50 @@ -94,7 +105,7 @@ class ProximityTest extends Specification { class ProximityTerminalControlStartTest extends ActorTest { "ProximityTerminalControl" should { //setup - val zone : Zone = new Zone("test", new ZoneMap("test-map"), 0) { + val zone: Zone = new Zone("test", new ZoneMap("test-map"), 0) { Actor = system.actorOf(Props(classOf[ZoneActor], this), "test-zone") override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) @@ -134,7 +145,7 @@ class ProximityTerminalControlStartTest extends ActorTest { class ProximityTerminalControlTwoUsersTest extends ActorTest { "ProximityTerminalControl" should { //setup - val zone : Zone = new Zone("test", new ZoneMap("test-map"), 0) { + val zone: Zone = new Zone("test", new ZoneMap("test-map"), 0) { Actor = system.actorOf(Props(classOf[ZoneActor], this), "test-zone") override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) @@ -151,7 +162,8 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest { avatar.Continent = "test" avatar.Spawn avatar.Health = 50 - val avatar2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar2.Continent = "test" avatar2.Spawn avatar2.Health = 50 @@ -186,7 +198,7 @@ class ProximityTerminalControlTwoUsersTest extends ActorTest { class ProximityTerminalControlStopTest extends ActorTest { "ProximityTerminalControl" should { //setup - val zone : Zone = new Zone("test", new ZoneMap("test-map"), 0) { + val zone: Zone = new Zone("test", new ZoneMap("test-map"), 0) { Actor = system.actorOf(Props(classOf[ZoneActor], this), "test-zone") override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) @@ -229,7 +241,7 @@ class ProximityTerminalControlStopTest extends ActorTest { class ProximityTerminalControlNotStopTest extends ActorTest { "ProximityTerminalControl" should { //setup - val zone : Zone = new Zone("test", new ZoneMap("test-map"), 0) { + val zone: Zone = new Zone("test", new ZoneMap("test-map"), 0) { Actor = system.actorOf(Props(classOf[ZoneActor], this), "test-zone") override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) @@ -246,7 +258,8 @@ class ProximityTerminalControlNotStopTest extends ActorTest { avatar.Continent = "test" avatar.Spawn avatar.Health = 50 - val avatar2 = Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val avatar2 = + Player(Avatar("TestCharacter2", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) avatar2.Continent = "test" avatar2.Spawn avatar2.Health = 50 @@ -287,7 +300,7 @@ class ProximityTerminalControlNotStopTest extends ActorTest { object ProximityTest { class SampleTerminal extends Terminal(GlobalDefinitions.dropship_vehicle_terminal) with ProximityUnit - class ProbedLocalService(probe : TestProbe, zone : Zone) extends LocalService(zone) { + class ProbedLocalService(probe: TestProbe, zone: Zone) extends LocalService(zone) { self.tell(Service.Join("test"), probe.ref) } } diff --git a/common/src/test/scala/objects/terminal/TerminalControlTest.scala b/common/src/test/scala/objects/terminal/TerminalControlTest.scala index 027438d3..2f2813d6 100644 --- a/common/src/test/scala/objects/terminal/TerminalControlTest.scala +++ b/common/src/test/scala/objects/terminal/TerminalControlTest.scala @@ -25,7 +25,7 @@ class TerminalControl2Test extends ActorTest { "TerminalControl can not process wrong messages" in { val (_, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR) - terminal.Actor !"hello" + terminal.Actor ! "hello" expectNoMessage(Duration.create(500, "ms")) } } @@ -35,7 +35,8 @@ class TerminalControl2Test extends ActorTest { class CertTerminalControl1Test extends ActorTest { "TerminalControl can be used to learn a certification ('medium_assault')" in { val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "medium_assault", 0, PlanetSideGUID(0)) + val msg = + ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "medium_assault", 0, PlanetSideGUID(0)) terminal.Actor ! Terminal.Request(player, msg) val reply = receiveOne(Duration.create(500, "ms")) @@ -50,7 +51,7 @@ class CertTerminalControl1Test extends ActorTest { class CertTerminalControl2Test extends ActorTest { "TerminalControl can be used to warn about not learning a fake certification ('juggling')" in { val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "juggling", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Learn, 0, "juggling", 0, PlanetSideGUID(0)) terminal.Actor ! Terminal.Request(player, msg) val reply = receiveOne(Duration.create(500, "ms")) @@ -65,7 +66,7 @@ class CertTerminalControl2Test extends ActorTest { class CertTerminalControl3Test extends ActorTest { "TerminalControl can be used to forget a certification ('medium_assault')" in { val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.cert_terminal, PlanetSideEmpire.TR) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "medium_assault", 0, PlanetSideGUID(0)) + val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Sell, 0, "medium_assault", 0, PlanetSideGUID(0)) terminal.Actor ! Terminal.Request(player, msg) val reply = receiveOne(Duration.create(500, "ms")) @@ -79,8 +80,16 @@ class CertTerminalControl3Test extends ActorTest { class VehicleTerminalControl1Test extends ActorTest { "TerminalControl can be used to buy a vehicle ('two_man_assault_buggy')" in { - val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR) - val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 46769, "two_man_assault_buggy", 0, PlanetSideGUID(0)) + val (player, terminal) = + TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR) + val msg = ItemTransactionMessage( + PlanetSideGUID(1), + TransactionType.Buy, + 46769, + "two_man_assault_buggy", + 0, + PlanetSideGUID(0) + ) terminal.Actor ! Terminal.Request(player, msg) val reply = receiveOne(Duration.create(500, "ms")) @@ -104,7 +113,8 @@ class VehicleTerminalControl1Test extends ActorTest { class VehicleTerminalControl2Test extends ActorTest { "TerminalControl can be used to warn about not buy a vehicle ('harasser')" in { - val (player, terminal) = TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR) + val (player, terminal) = + TerminalControlTest.SetUpAgents(GlobalDefinitions.ground_vehicle_terminal, PlanetSideEmpire.TR) val msg = ItemTransactionMessage(PlanetSideGUID(1), TransactionType.Buy, 0, "harasser", 0, PlanetSideGUID(0)) terminal.Actor ! Terminal.Request(player, msg) @@ -118,10 +128,19 @@ class VehicleTerminalControl2Test extends ActorTest { } object TerminalControlTest { - def SetUpAgents(tdef : TerminalDefinition, faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Player, Terminal) = { + 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", building_guid = 0, map_id = 0, Zone.Nowhere, StructureType.Building, GlobalDefinitions.building) + terminal.Owner = new Building( + "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) } diff --git a/common/src/test/scala/service/LocalServiceTest.scala b/common/src/test/scala/service/LocalServiceTest.scala index 3ef697c2..5e5dc554 100644 --- a/common/src/test/scala/service/LocalServiceTest.scala +++ b/common/src/test/scala/service/LocalServiceTest.scala @@ -96,19 +96,24 @@ class DeployableMapIconTest extends ActorTest { "pass DeployableMapIcon" in { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") - service ! LocalServiceMessage("test", + service ! LocalServiceMessage( + "test", LocalAction.DeployableMapIcon( PlanetSideGUID(10), DeploymentAction.Build, - DeployableInfo(PlanetSideGUID(40), DeployableIcon.Boomer, Vector3(1,2,3), PlanetSideGUID(11)) + DeployableInfo(PlanetSideGUID(40), DeployableIcon.Boomer, Vector3(1, 2, 3), PlanetSideGUID(11)) ) ) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), - LocalResponse.DeployableMapIcon( - DeploymentAction.Build, - DeployableInfo(PlanetSideGUID(40), DeployableIcon.Boomer, Vector3(1,2,3), PlanetSideGUID(11)) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.DeployableMapIcon( + DeploymentAction.Build, + DeployableInfo(PlanetSideGUID(40), DeployableIcon.Boomer, Vector3(1, 2, 3), PlanetSideGUID(11)) + ) ) - )) + ) } } } @@ -129,7 +134,7 @@ class DoorClosesTest extends ActorTest { class HackClearTest extends ActorTest { ServiceManager.boot(system) val obj = new PlanetSideServerObject() { - def Faction = PlanetSideEmpire.NEUTRAL + def Faction = PlanetSideEmpire.NEUTRAL def Definition = null GUID = PlanetSideGUID(40) } @@ -139,14 +144,16 @@ class HackClearTest extends ActorTest { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") service ! LocalServiceMessage("test", LocalAction.HackClear(PlanetSideGUID(10), obj, 0L, 1000L)) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.HackClear(PlanetSideGUID(40), 0L, 1000L))) + expectMsg( + LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.HackClear(PlanetSideGUID(40), 0L, 1000L)) + ) } } } class ProximityTerminalEffectOnTest extends ActorTest { ServiceManager.boot(system) - val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") + val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") val terminal = new ProximityTerminal(GlobalDefinitions.medical_terminal) terminal.GUID = PlanetSideGUID(1) @@ -154,14 +161,20 @@ class ProximityTerminalEffectOnTest extends ActorTest { "pass ProximityTerminalEffect (true)" in { service ! Service.Join("nowhere") service ! Terminal.StartProximityEffect(terminal) - expectMsg(LocalServiceResponse("/nowhere/Local", PlanetSideGUID(0), LocalResponse.ProximityTerminalEffect(PlanetSideGUID(1), true))) + expectMsg( + LocalServiceResponse( + "/nowhere/Local", + PlanetSideGUID(0), + LocalResponse.ProximityTerminalEffect(PlanetSideGUID(1), true) + ) + ) } } } class ProximityTerminalEffectOffTest extends ActorTest { ServiceManager.boot(system) - val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") + val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") val terminal = new ProximityTerminal(GlobalDefinitions.medical_terminal) terminal.GUID = PlanetSideGUID(1) @@ -169,7 +182,13 @@ class ProximityTerminalEffectOffTest extends ActorTest { "pass ProximityTerminalEffect (false)" in { service ! Service.Join("nowhere") service ! Terminal.StopProximityEffect(terminal) - expectMsg(LocalServiceResponse("/nowhere/Local", PlanetSideGUID(0), LocalResponse.ProximityTerminalEffect(PlanetSideGUID(1), false))) + expectMsg( + LocalServiceResponse( + "/nowhere/Local", + PlanetSideGUID(0), + LocalResponse.ProximityTerminalEffect(PlanetSideGUID(1), false) + ) + ) } } } @@ -181,8 +200,22 @@ class RouterTelepadTransportTest extends ActorTest { "pass RouterTelepadTransport" in { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") - service ! LocalServiceMessage("test", LocalAction.RouterTelepadTransport(PlanetSideGUID(10), PlanetSideGUID(11), PlanetSideGUID(12), PlanetSideGUID(13))) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.RouterTelepadTransport(PlanetSideGUID(11), PlanetSideGUID(12), PlanetSideGUID(13)))) + service ! LocalServiceMessage( + "test", + LocalAction.RouterTelepadTransport( + PlanetSideGUID(10), + PlanetSideGUID(11), + PlanetSideGUID(12), + PlanetSideGUID(13) + ) + ) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.RouterTelepadTransport(PlanetSideGUID(11), PlanetSideGUID(12), PlanetSideGUID(13)) + ) + ) } } } @@ -196,7 +229,13 @@ class SetEmpireTest extends ActorTest { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") service ! LocalServiceMessage("test", LocalAction.SetEmpire(PlanetSideGUID(10), PlanetSideEmpire.TR)) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(0), LocalResponse.SetEmpire(PlanetSideGUID(10), PlanetSideEmpire.TR))) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(0), + LocalResponse.SetEmpire(PlanetSideGUID(10), PlanetSideEmpire.TR) + ) + ) } } } @@ -211,7 +250,9 @@ class ToggleTeleportSystemTest extends ActorTest { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") service ! LocalServiceMessage("test", LocalAction.ToggleTeleportSystem(PlanetSideGUID(10), router, None)) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.ToggleTeleportSystem(router, None))) + expectMsg( + LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.ToggleTeleportSystem(router, None)) + ) } } } @@ -224,7 +265,13 @@ class TriggerEffectTest extends ActorTest { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") service ! LocalServiceMessage("test", LocalAction.TriggerEffect(PlanetSideGUID(10), "on", PlanetSideGUID(40))) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.TriggerEffect(PlanetSideGUID(40), "on", None, None))) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.TriggerEffect(PlanetSideGUID(40), "on", None, None) + ) + ) } } } @@ -236,8 +283,17 @@ class TriggerEffectInfoTest extends ActorTest { "pass TriggerEffect (2)" in { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") - service ! LocalServiceMessage("test", LocalAction.TriggerEffectInfo(PlanetSideGUID(10), "on", PlanetSideGUID(40), true, 1000)) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.TriggerEffect(PlanetSideGUID(40), "on", Some(TriggeredEffect(true, 1000)), None))) + service ! LocalServiceMessage( + "test", + LocalAction.TriggerEffectInfo(PlanetSideGUID(10), "on", PlanetSideGUID(40), true, 1000) + ) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.TriggerEffect(PlanetSideGUID(40), "on", Some(TriggeredEffect(true, 1000)), None) + ) + ) } } } @@ -249,8 +305,27 @@ class TriggerEffectLocationTest extends ActorTest { "pass TriggerEffect (3)" in { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") - service ! LocalServiceMessage("test", LocalAction.TriggerEffectLocation(PlanetSideGUID(10), "spawn_object_failed_effect", Vector3(1.1f, 2.2f, 3.3f), Vector3(4.4f, 5.5f, 6.6f))) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.TriggerEffect(PlanetSideGUID(0), "spawn_object_failed_effect", None, Some(TriggeredEffectLocation(Vector3(1.1f, 2.2f, 3.3f), Vector3(4.4f, 5.5f, 6.6f)))))) + service ! LocalServiceMessage( + "test", + LocalAction.TriggerEffectLocation( + PlanetSideGUID(10), + "spawn_object_failed_effect", + Vector3(1.1f, 2.2f, 3.3f), + Vector3(4.4f, 5.5f, 6.6f) + ) + ) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.TriggerEffect( + PlanetSideGUID(0), + "spawn_object_failed_effect", + None, + Some(TriggeredEffectLocation(Vector3(1.1f, 2.2f, 3.3f), Vector3(4.4f, 5.5f, 6.6f))) + ) + ) + ) } } } @@ -263,8 +338,17 @@ class TriggerSoundTest extends ActorTest { "pass TriggerSound" in { val service = system.actorOf(Props(classOf[LocalService], Zone.Nowhere), "l_service") service ! Service.Join("test") - service ! LocalServiceMessage("test", LocalAction.TriggerSound(PlanetSideGUID(10), TriggeredSound.LockedOut, Vector3(1.1f, 2.2f, 3.3f), 0, 0.75f)) - expectMsg(LocalServiceResponse("/test/Local", PlanetSideGUID(10), LocalResponse.TriggerSound(TriggeredSound.LockedOut, Vector3(1.1f, 2.2f, 3.3f), 0, 0.75f))) + service ! LocalServiceMessage( + "test", + LocalAction.TriggerSound(PlanetSideGUID(10), TriggeredSound.LockedOut, Vector3(1.1f, 2.2f, 3.3f), 0, 0.75f) + ) + expectMsg( + LocalServiceResponse( + "/test/Local", + PlanetSideGUID(10), + LocalResponse.TriggerSound(TriggeredSound.LockedOut, Vector3(1.1f, 2.2f, 3.3f), 0, 0.75f) + ) + ) } } } diff --git a/common/src/test/scala/service/RemoverActorTest.scala b/common/src/test/scala/service/RemoverActorTest.scala index d19e6579..8f4d3732 100644 --- a/common/src/test/scala/service/RemoverActorTest.scala +++ b/common/src/test/scala/service/RemoverActorTest.scala @@ -14,6 +14,7 @@ import net.psforever.types.PlanetSideGUID import services.{RemoverActor, ServiceManager} import scala.concurrent.duration._ +import scala.util.Success //class StandardRemoverActorTest extends ActorTest { // ServiceManager.boot ! ServiceManager.Register(RandomPool(2).props(Props[TaskResolver]), "taskResolver") @@ -507,39 +508,39 @@ object RemoverActorTest { val SecondStandardDuration = 100 milliseconds - def InclusionTest(entry : RemoverActor.Entry) : Boolean = { + def InclusionTest(entry: RemoverActor.Entry): Boolean = { context.parent ! InclusionTestAlert() true } - def InitialJob(entry : RemoverActor.Entry) : Unit = { + def InitialJob(entry: RemoverActor.Entry): Unit = { context.parent ! InitialJobAlert() } - def FirstJob(entry : RemoverActor.Entry) : Unit = { + def FirstJob(entry: RemoverActor.Entry): Unit = { context.parent ! FirstJobAlert() } - override def SecondJob(entry : RemoverActor.Entry) : Unit = { + override def SecondJob(entry: RemoverActor.Entry): Unit = { context.parent ! SecondJobAlert() super.SecondJob(entry) } - def ClearanceTest(entry : RemoverActor.Entry) : Boolean = { + def ClearanceTest(entry: RemoverActor.Entry): Boolean = { context.parent ! ClearanceTestAlert() true } - def DeletionTask(entry : RemoverActor.Entry) : TaskResolver.GiveTask = { + def DeletionTask(entry: RemoverActor.Entry): TaskResolver.GiveTask = { context.parent ! DeletionTaskAlert() TaskResolver.GiveTask(new Task() { private val localProbe = context.parent override def isComplete = Task.Resolution.Success - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { context.parent ! DeletionTaskRunAlert() - resolver ! scala.util.Success(this) + resolver ! Success(this) } }) } diff --git a/common/src/test/scala/service/RouterTelepadActivationTest.scala b/common/src/test/scala/service/RouterTelepadActivationTest.scala index 542c8fa0..77dc5826 100644 --- a/common/src/test/scala/service/RouterTelepadActivationTest.scala +++ b/common/src/test/scala/service/RouterTelepadActivationTest.scala @@ -111,7 +111,11 @@ class RouterTelepadActivationHurryAllTest extends ActorTest { obj ! RouterTelepadActivation.AddTask(telepad2, Zone.Nowhere, Some(5 seconds)) obj ! RouterTelepadActivation.AddTask(telepad3, Zone.Nowhere, Some(6 seconds)) obj ! SupportActor.HurryAll() - val msgs = receiveN(3, 4 seconds) //organized by duration; note: all messages received before the earliest task should be performed + val msgs = + receiveN( + 3, + 4 seconds + ) //organized by duration; note: all messages received before the earliest task should be performed assert(msgs.head.isInstanceOf[RouterTelepadActivation.ActivateTeleportSystem]) assert(msgs.head.asInstanceOf[RouterTelepadActivation.ActivateTeleportSystem].telepad == telepad2) assert(msgs(1).isInstanceOf[RouterTelepadActivation.ActivateTeleportSystem]) diff --git a/common/src/test/scala/service/VehicleServiceTest.scala b/common/src/test/scala/service/VehicleServiceTest.scala index e59343f3..6b9b8321 100644 --- a/common/src/test/scala/service/VehicleServiceTest.scala +++ b/common/src/test/scala/service/VehicleServiceTest.scala @@ -80,7 +80,9 @@ class OwnershipTest extends ActorTest { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") service ! VehicleServiceMessage("test", VehicleAction.Ownership(PlanetSideGUID(10), PlanetSideGUID(11))) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.Ownership(PlanetSideGUID(11)))) + expectMsg( + VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.Ownership(PlanetSideGUID(11))) + ) } } } @@ -92,8 +94,17 @@ class ChildObjectStateTest extends ActorTest { "pass ChildObjectState" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.ChildObjectState(PlanetSideGUID(10), PlanetSideGUID(11), 1.2f, 3.4f)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.ChildObjectState(PlanetSideGUID(11), 1.2f, 3.4f))) + service ! VehicleServiceMessage( + "test", + VehicleAction.ChildObjectState(PlanetSideGUID(10), PlanetSideGUID(11), 1.2f, 3.4f) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.ChildObjectState(PlanetSideGUID(11), 1.2f, 3.4f) + ) + ) } } } @@ -105,8 +116,24 @@ class DeployRequestTest extends ActorTest { "pass DeployRequest" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.DeployRequest(PlanetSideGUID(10), PlanetSideGUID(11), DriveState.Mobile, 0, false, Vector3(1.2f, 3.4f, 5.6f))) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.DeployRequest(PlanetSideGUID(11), DriveState.Mobile, 0, false, Vector3(1.2f, 3.4f, 5.6f)))) + service ! VehicleServiceMessage( + "test", + VehicleAction.DeployRequest( + PlanetSideGUID(10), + PlanetSideGUID(11), + DriveState.Mobile, + 0, + false, + Vector3(1.2f, 3.4f, 5.6f) + ) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.DeployRequest(PlanetSideGUID(11), DriveState.Mobile, 0, false, Vector3(1.2f, 3.4f, 5.6f)) + ) + ) } } } @@ -119,7 +146,13 @@ class DismountVehicleTest extends ActorTest { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") service ! VehicleServiceMessage("test", VehicleAction.DismountVehicle(PlanetSideGUID(10), BailType.Normal, false)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.DismountVehicle(BailType.Normal, false))) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.DismountVehicle(BailType.Normal, false) + ) + ) } } } @@ -134,8 +167,17 @@ class InventoryStateTest extends ActorTest { "pass InventoryState" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.InventoryState(PlanetSideGUID(10), tool, PlanetSideGUID(11), 0, cdata)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.InventoryState(tool, PlanetSideGUID(11), 0, cdata))) + service ! VehicleServiceMessage( + "test", + VehicleAction.InventoryState(PlanetSideGUID(10), tool, PlanetSideGUID(11), 0, cdata) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.InventoryState(tool, PlanetSideGUID(11), 0, cdata) + ) + ) } } } @@ -150,8 +192,17 @@ class InventoryState2Test extends ActorTest { "pass InventoryState2" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.InventoryState2(PlanetSideGUID(10), PlanetSideGUID(11), PlanetSideGUID(12), 13)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.InventoryState2(PlanetSideGUID(11), PlanetSideGUID(12), 13))) + service ! VehicleServiceMessage( + "test", + VehicleAction.InventoryState2(PlanetSideGUID(10), PlanetSideGUID(11), PlanetSideGUID(12), 13) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.InventoryState2(PlanetSideGUID(11), PlanetSideGUID(12), 13) + ) + ) } } } @@ -163,8 +214,17 @@ class KickPassengerTest extends ActorTest { "pass KickPassenger" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.KickPassenger(PlanetSideGUID(10), 0, false, PlanetSideGUID(11))) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.KickPassenger(0, false, PlanetSideGUID(11)))) + service ! VehicleServiceMessage( + "test", + VehicleAction.KickPassenger(PlanetSideGUID(10), 0, false, PlanetSideGUID(11)) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.KickPassenger(0, false, PlanetSideGUID(11)) + ) + ) } } } @@ -179,8 +239,17 @@ class LoadVehicleTest extends ActorTest { "pass LoadVehicle" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.LoadVehicle(PlanetSideGUID(10), vehicle, 12, PlanetSideGUID(11), cdata)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.LoadVehicle(vehicle, 12, PlanetSideGUID(11), cdata))) + service ! VehicleServiceMessage( + "test", + VehicleAction.LoadVehicle(PlanetSideGUID(10), vehicle, 12, PlanetSideGUID(11), cdata) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.LoadVehicle(vehicle, 12, PlanetSideGUID(11), cdata) + ) + ) } } } @@ -193,7 +262,9 @@ class MountVehicleTest extends ActorTest { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") service ! VehicleServiceMessage("test", VehicleAction.MountVehicle(PlanetSideGUID(10), PlanetSideGUID(11), 0)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.MountVehicle(PlanetSideGUID(11), 0))) + expectMsg( + VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.MountVehicle(PlanetSideGUID(11), 0)) + ) } } } @@ -205,8 +276,17 @@ class SeatPermissionsTest extends ActorTest { "pass SeatPermissions" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.SeatPermissions(PlanetSideGUID(10), PlanetSideGUID(11), 0, 12L)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.SeatPermissions(PlanetSideGUID(11), 0, 12L))) + service ! VehicleServiceMessage( + "test", + VehicleAction.SeatPermissions(PlanetSideGUID(10), PlanetSideGUID(11), 0, 12L) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.SeatPermissions(PlanetSideGUID(11), 0, 12L) + ) + ) } } } @@ -217,14 +297,23 @@ class StowEquipmentTest extends ActorTest { tool.GUID = PlanetSideGUID(12) tool.AmmoSlots.head.Box.GUID = PlanetSideGUID(13) val toolDef = tool.Definition - val cdata = tool.Definition.Packet.DetailedConstructorData(tool).get + val cdata = tool.Definition.Packet.DetailedConstructorData(tool).get "StowEquipment" should { "pass StowEquipment" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.StowEquipment(PlanetSideGUID(10), PlanetSideGUID(11), 0, tool)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.StowEquipment(PlanetSideGUID(11), 0, toolDef.ObjectId, tool.GUID, cdata))) + service ! VehicleServiceMessage( + "test", + VehicleAction.StowEquipment(PlanetSideGUID(10), PlanetSideGUID(11), 0, tool) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.StowEquipment(PlanetSideGUID(11), 0, toolDef.ObjectId, tool.GUID, cdata) + ) + ) } } } @@ -237,7 +326,9 @@ class UnstowEquipmentTest extends ActorTest { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") service ! VehicleServiceMessage("test", VehicleAction.UnstowEquipment(PlanetSideGUID(10), PlanetSideGUID(11))) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.UnstowEquipment(PlanetSideGUID(11)))) + expectMsg( + VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.UnstowEquipment(PlanetSideGUID(11))) + ) } } } @@ -249,8 +340,42 @@ class VehicleStateTest extends ActorTest { "pass VehicleState" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.VehicleState(PlanetSideGUID(10), PlanetSideGUID(11), 0, Vector3(1.2f, 3.4f, 5.6f), Vector3(7.8f, 9.1f, 2.3f), Some(Vector3(4.5f, 6.7f, 8.9f)), Option(1), 2, 3, 4, false, true)) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.VehicleState(PlanetSideGUID(11), 0, Vector3(1.2f, 3.4f, 5.6f), Vector3(7.8f, 9.1f, 2.3f), Some(Vector3(4.5f, 6.7f, 8.9f)), Option(1), 2, 3, 4, false, true))) + service ! VehicleServiceMessage( + "test", + VehicleAction.VehicleState( + PlanetSideGUID(10), + PlanetSideGUID(11), + 0, + Vector3(1.2f, 3.4f, 5.6f), + Vector3(7.8f, 9.1f, 2.3f), + Some(Vector3(4.5f, 6.7f, 8.9f)), + Option(1), + 2, + 3, + 4, + false, + true + ) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.VehicleState( + PlanetSideGUID(11), + 0, + Vector3(1.2f, 3.4f, 5.6f), + Vector3(7.8f, 9.1f, 2.3f), + Some(Vector3(4.5f, 6.7f, 8.9f)), + Option(1), + 2, + 3, + 4, + false, + true + ) + ) + ) } } } @@ -261,11 +386,26 @@ class TransferPassengerChannelTest extends ActorTest { "VehicleService" should { "pass TransferPassengerChannel" in { val service = system.actorOf(Props(classOf[VehicleService], Zone.Nowhere), "v-service") - val fury = Vehicle(GlobalDefinitions.fury) + val fury = Vehicle(GlobalDefinitions.fury) fury.Actor = system.actorOf(Props(classOf[VehicleControl], fury), "test-fury") service ! Service.Join("test") - service ! VehicleServiceMessage("test", VehicleAction.TransferPassengerChannel(PlanetSideGUID(10), "old_channel", "new_channel", fury, PlanetSideGUID(11))) - expectMsg(VehicleServiceResponse("/test/Vehicle", PlanetSideGUID(10), VehicleResponse.TransferPassengerChannel("old_channel", "new_channel", fury, PlanetSideGUID(11)))) + service ! VehicleServiceMessage( + "test", + VehicleAction.TransferPassengerChannel( + PlanetSideGUID(10), + "old_channel", + "new_channel", + fury, + PlanetSideGUID(11) + ) + ) + expectMsg( + VehicleServiceResponse( + "/test/Vehicle", + PlanetSideGUID(10), + VehicleResponse.TransferPassengerChannel("old_channel", "new_channel", fury, PlanetSideGUID(11)) + ) + ) } } } diff --git a/config/logback.xml b/config/logback.xml index dc63568a..7fd13ebe 100644 --- a/config/logback.xml +++ b/config/logback.xml @@ -38,6 +38,5 @@ - diff --git a/config/worldserver.ini.dist b/config/worldserver.ini.dist deleted file mode 100644 index 4a623cd8..00000000 --- a/config/worldserver.ini.dist +++ /dev/null @@ -1,259 +0,0 @@ -####################################### -# PSForever Server configuration file # -####################################### - -################################################################################################### -# EXAMPLE CONFIG -# -# Variable (type) -# Description: Brief description what the variable is doing. -# Important: Annotation for important things about this variable. -# Example: "Example, i.e. if the value is a string" -# Range: [0, 10] - (Disabled, Enabled) -# Default: 10 - (Enabled|Comment|Variable name in case of grouped config options) -# 0 - (Disabled|Comment|Variable name in case of grouped config options) -# -# Note to developers: -# - Copy this example to keep the formatting. -# - Line breaks should be at column 100. -################################################################################################### - -################################################################################################### -# DATABASE SETTINGS -################################################################################################### - -[database] - -# Hostname (string) -# Description: The hostname of the PostgreSQL server. -# Important: Make sure your database isn't accessible outside of localhost without a -# strong username and password! -# Default: "localhost" - -Hostname = "localhost" - -# Port (int) -# Description: The TCP port to connect to the database with. -# Range: [1, 65535] - (TCP port 1, TCP port 65535) -# Default: 5432 - (Connect to TCP port 5432 -- the default for PostgreSQL) - -Port = 5432 - -# SSL (enum) -# Description: The SSL configuration of the database connection. -# Values: Disable - (Do not use SSL -- not recommended for public servers) -# Prefer - (Try SSL first, but fallback to unencrypted) -# Require - (Use SSL and fail if it is not enabled or configured correctly -# Verify - (Use SSL and verify that the certificate is authentic) -# Default: Prefer - -SSL = Prefer - -# Database (string) -# Description: The database name to use on the SQL server. -# Important: Make sure your username has been GRANTed ALL PRIVILEGES to the database. -# See the setup documentation for instructions on achieving this. -# Default: "psforever" - -Database = "psforever" - -# Username (string) -# Description: The username to connect to the SQL server with. -# Default: "psforever" - -Username = "psforever" - -# Password (string) -# Description: The password to connect to the SQL server with. -# Important: CHANGE THIS PASSWORD BEFORE RUNNING A PUBLIC SERVER. -# Default: "psforever" - -Password = "psforever" - -################################################################################################### -# WORLDSERVER SETTINGS -################################################################################################### - -[worldserver] - -# ListeningPort (int) -# Description: The UDP listening port for the worldserver. -# Important: Must be different from the loginserver.ListeningPort. Ports below 1024 are -# privileged on Linux and may require root. -# Range: [1, 65535] - (UDP port 1, UDP port 65535) -# Default: 51001 - (Listen on UDP port 51001) - -ListeningPort = 51001 - -# Hostname (string) -# Description: The server's public hostname or IP address. Required when the server is -# behind a proxy or running in a container/virtual machine. -# Important: If left as the default, the hostname will be the same as the primary -# internet interface. -# Default: "" - -Hostname = "" - -# ServerName (string) -# Description: The name of the server as displayed in the server browser. -# Range: Length = [1, 31] -# Default: "PSForever" - -ServerName = "PSForever" - -# ServerType (enum) -# Description: How the server is displayed in the server browser. -# Values: Released, Beta, Development -# Default: Released - -ServerType = Released - -################################################################################################### -# LOGINSERVER SETTINGS -################################################################################################### - -[loginserver] - -# ListeningPort (int) -# Description: The UDP listening port for the loginserver. -# Important: Must be different from the worldserver.ListeningPort. Ports below 1024 are -# privileged on Linux and may require root. -# Range: [1, 65535] - (UDP port 1, UDP port 65535) -# Default: 51000 - (Listen on UDP port 51000) - -ListeningPort = 51000 - -# CreateMissingAccounts (boolean) -# Description: Account usernames that don't exist yet will be automatically created in the -# database. Useful for test servers and development testing. -# Important: Not recommended for production servers as typos are easy to make on -# first registration. Use PSFPortal (https://github.com/psforever/PSFPortal) -# instead. -# Default: yes - (Enabled) -# no - (Disabled) - -CreateMissingAccounts = yes - -################################################################################################### -# PSADMIN SETTINGS -################################################################################################### - -[psadmin] - -# ListeningPort (int) -# Description: The TCP listening port for the server admin interface. -# Important: Must be different from the worldserver and loginserver ListeningPort. -# Ports below 1024 are privileged on Linux and may require root. -# NEVER EXPOSE THIS PORT TO THE INTERNET! CHECK YOUR FIREWALL CONFIG. -# Range: [1, 65535] - (TCP port 1, TCP port 65535) -# Default: 51002 - (Listen on TCP port 51002) - -ListeningPort = 51002 - -################################################################################################### -# NETWORK SETTINGS -################################################################################################### - -[network] - -# Session.InboundGraceTime (time) -# Description: The maximum amount of time since the last inbound packet from a UDP session -# before it is dropped. -# Important: Lower values will cause legitimate clients to be dropped during loading -# screens, but higher values will make the server be more susceptible to -# denial of service attacks and running out of memory. -# Range: [10 seconds, 10 minutes] - (10 second grace, 10 minute grace) -# Default: 1 minute - (Clients sending a packet at least -# once a minute stay alive) - -Session.InboundGraceTime = 1 minute - -# Session.OutboundGraceTime (time) -# Description: The maximum amount of time since the last outbound packet for a UDP session -# before it is dropped. Can be used as a watchdog for hung server sessions. -# Important: Lower values will cause legitimate clients to be dropped during server -# lag spikes or Zone transitions. -# Range: [10 seconds, 10 minutes] - (10 second grace, 10 minute grace) -# Default: 1 minute - (Clients receiving a packet at least -# once a minute stay alive) - -Session.OutboundGraceTime = 1 minute - -################################################################################################### -# DEVELOPER SETTINGS -# - NETWORK SIMULATOR -################################################################################################### - -[developer] - -################################################################################################### -# NETWORK SIMULATOR -# -# NetSim.Active (boolean) -# Description: Enable artificial packet unreliability. Used for development testing. -# Active equally on upstream and downstream packets. -# Important: DO NOT enable on servers with a high packet rate as buffering increases -# the memory load of the server and it will (by design) affect performance. -# Default: no - (Disabled) -# yes - (Enabled) - -NetSim.Active = no - -# NetSim.Loss (float) -# Description: The percentage of outgoing and incoming packets that are dropped. -# Range: [0.0, 1.0] - (0% loss, 100% packet loss) -# Default: 0.02 - (2% packet loss) - -NetSim.Loss = 0.02 - -# NetSim.Delay (time) -# Description: The time a packet is buffered before being delivered to simulate delay. -# The artificial delay is in addition to any real network latency. -# Important: Longer delays will lead to larger packet buffering, which may cause -# out-of-memory errors depending on packet rate. -# Range: [0, 2 seconds] - (No delay, 2 seconds delay) -# Default: 150 milliseconds - (Packets lag for 150 milliseconds) - -NetSim.Delay = 150 milliseconds - -# NetSim.ReorderChance (float) -# Description: The percentage chance that a packet will be ordered randomly in the delay -# buffer. If the NetSim.Delay is too small then packets won't be reordered. -# Range: [0.0, 1.0] - (No packet reordering, reorder every packet) -# Default: 0.005 - (0.5% chance of a packet being reordered) - -NetSim.ReorderChance = 0.005 - -# NetSim.ReorderTime (time) -# Description: If a packet is reordered, the maximum time in the future or the past where -# it will randomly appear. -# Range: [0, 2 seconds] - (No packet reordering, randomly shift +/- 2 seconds) -# Default: 150 milliseconds - (+/- 150 milliseconds) - -NetSim.ReorderTime = 150 milliseconds - -# -################################################################################################### - - -[kamon] - -# Kamon -# -# Active (boolean) -# Description: Enables reporting of metrics to Kamon.io -# Important: Ensure the API key is set in application.conf in the same -# folder as PsLogin.scala -# Default: no - (Disabled) -# yes - (Enabled) - -Active = no - -[antihack] - -# HitPositionDiscrepancyThreshold (int) -# Description: The distance (squared) threshold that triggers if the reported hit location of a shot does not match the object being hit's location on the server -# Range: [1, 1000000] -# Default: 10000 (sqrt 10000 = ~100 ingame units) - -HitPositionDiscrepancyThreshold = 10000 diff --git a/docker-compose.yml b/docker-compose.yml index 59210ff1..f7938773 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,9 +28,9 @@ services: - 51010:8080 db: image: postgres - volumes: - - ./schema.sql:/docker-entrypoint-initdb.d/schema.sql:z + ports: + - 5432:5432 environment: POSTGRES_USER: psforever POSTGRES_PASSWORD: psforever - POSTGRES_DATABASE: psforever \ No newline at end of file + POSTGRES_DATABASE: psforever diff --git a/project/build.properties b/project/build.properties index 616536b2..dcfaffb4 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 1.3.6 +sbt.version = 1.3.8 diff --git a/project/plugins.sbt b/project/plugins.sbt index 3861b528..0de191a5 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,8 @@ logLevel := Level.Warn -addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.12") -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") -addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.6") -// https://github.com/sbt/sbt-unidoc -addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.2") +addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.12") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") +addSbtPlugin("io.kamon" % "sbt-kanela-runner" % "2.0.6") +addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.2") +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.17") diff --git a/pslogin/src/main/resources/akka.conf b/pslogin/src/main/resources/akka.conf new file mode 100644 index 00000000..01953b2e --- /dev/null +++ b/pslogin/src/main/resources/akka.conf @@ -0,0 +1,252 @@ +akka { + loggers = ["akka.event.slf4j.Slf4jLogger"] + loglevel = INFO + logging-filter = akka.event.slf4j.Slf4jLoggingFilter +} + +akka.actor.deployment { + "/login-udp-endpoint" { + dispatcher = network-listener + } + + "/login-udp-endpoint/login-session-router" { + dispatcher = login-session-router + } + + "/login-udp-endpoint/login-session-router/*" { + dispatcher = login-session + } + + # Extremely performance critical (dedicated thread) + "/world-udp-endpoint" { + dispatcher = network-listener + } + + # Extremely performance critical (dedicated thread) + "/world-udp-endpoint/world-session-router" { + dispatcher = world-session-router + } + + # Most likely to crash (isolate) + "/world-udp-endpoint/world-session-router/*" { + dispatcher = world-session + } + + # Service dedicated pool + "/service" { + dispatcher = service-dispatcher + } + + "/service/*" { + dispatcher = service-dispatcher + } + + # Bottleneck (dedicated thread) + "/service/galaxy" { + dispatcher = galaxy-service + } + + # Isolate tasks + "/service/taskResolver*" { + dispatcher = task-dispatcher + } + + # Bottleneck (dedicated thread) + "/service/cluster" { + dispatcher = interstellar-cluster-service + } + + # Zone actors (lots of messages) + "/service/cluster/c1-actor" { + dispatcher = c1-zone-dispatcher + } + "/service/cluster/c1-actor/*" { + dispatcher = c1-zone-dispatcher + } + "/service/cluster/c2-actor" { + dispatcher = c2-zone-dispatcher + } + "/service/cluster/c2-actor/*" { + dispatcher = c2-zone-dispatcher + } + "/service/cluster/c3-actor" { + dispatcher = c3-zone-dispatcher + } + "/service/cluster/c3-actor/*" { + dispatcher = c3-zone-dispatcher + } + "/service/cluster/c4-actor" { + dispatcher = c4-zone-dispatcher + } + "/service/cluster/c4-actor/*" { + dispatcher = c4-zone-dispatcher + } + "/service/cluster/c5-actor" { + dispatcher = c5-zone-dispatcher + } + "/service/cluster/c5-actor/*" { + dispatcher = c5-zone-dispatcher + } + "/service/cluster/c6-actor" { + dispatcher = c6-zone-dispatcher + } + "/service/cluster/c6-actor/*" { + dispatcher = c6-zone-dispatcher + } + "/service/cluster/i1-actor" { + dispatcher = i1-zone-dispatcher + } + "/service/cluster/i1-actor/*" { + dispatcher = i1-zone-dispatcher + } + "/service/cluster/i2-actor" { + dispatcher = i2-zone-dispatcher + } + "/service/cluster/i2-actor/*" { + dispatcher = i2-zone-dispatcher + } + "/service/cluster/i3-actor" { + dispatcher = i3-zone-dispatcher + } + "/service/cluster/i3-actor/*" { + dispatcher = i3-zone-dispatcher + } + "/service/cluster/i4-actor" { + dispatcher = i4-zone-dispatcher + } + "/service/cluster/i4-actor/*" { + dispatcher = i4-zone-dispatcher + } + "/service/cluster/z1-actor" { + dispatcher = z1-zone-dispatcher + } + "/service/cluster/z1-actor/*" { + dispatcher = z1-zone-dispatcher + } + "/service/cluster/z2-actor" { + dispatcher = z2-zone-dispatcher + } + "/service/cluster/z2-actor/*" { + dispatcher = z2-zone-dispatcher + } + "/service/cluster/z3-actor" { + dispatcher = z3-zone-dispatcher + } + "/service/cluster/z3-actor/*" { + dispatcher = z3-zone-dispatcher + } + "/service/cluster/z4-actor" { + dispatcher = z4-zone-dispatcher + } + "/service/cluster/z4-actor/*" { + dispatcher = z4-zone-dispatcher + } + "/service/cluster/z5-actor" { + dispatcher = z5-zone-dispatcher + } + "/service/cluster/z5-actor/*" { + dispatcher = z5-zone-dispatcher + } + "/service/cluster/z6-actor" { + dispatcher = z6-zone-dispatcher + } + "/service/cluster/z6-actor/*" { + dispatcher = z6-zone-dispatcher + } + "/service/cluster/z7-actor" { + dispatcher = z7-zone-dispatcher + } + "/service/cluster/z7-actor/*" { + dispatcher = z7-zone-dispatcher + } + "/service/cluster/z8-actor" { + dispatcher = z8-zone-dispatcher + } + "/service/cluster/z8-actor/*" { + dispatcher = z8-zone-dispatcher + } + "/service/cluster/z9-actor" { + dispatcher = z9-zone-dispatcher + } + "/service/cluster/z9-actor/*" { + dispatcher = z9-zone-dispatcher + } + "/service/cluster/z10-actor" { + dispatcher = z10-zone-dispatcher + } + "/service/cluster/z10-actor/*" { + dispatcher = z10-zone-dispatcher + } + "/service/cluster/home1-actor" { + dispatcher = home1-zone-dispatcher + } + "/service/cluster/home1-actor/*" { + dispatcher = home1-zone-dispatcher + } + "/service/cluster/home2-actor" { + dispatcher = home2-zone-dispatcher + } + "/service/cluster/home2-actor/*" { + dispatcher = home2-zone-dispatcher + } + "/service/cluster/home3-actor" { + dispatcher = home3-zone-dispatcher + } + "/service/cluster/home3-actor/*" { + dispatcher = home3-zone-dispatcher + } + "/service/cluster/tzconc-actor" { + dispatcher = tzconc-zone-dispatcher + } + "/service/cluster/tzconc-actor/*" { + dispatcher = tzconc-zone-dispatcher + } + "/service/cluster/tzcotr-actor" { + dispatcher = tzcotr-zone-dispatcher + } + "/service/cluster/tzcotr-actor/*" { + dispatcher = tzcotr-zone-dispatcher + } + "/service/cluster/tzcovs-actor" { + dispatcher = tzcovs-zone-dispatcher + } + "/service/cluster/tzcovs-actor/*" { + dispatcher = tzcovs-zone-dispatcher + } + "/service/cluster/tzdrnc-actor" { + dispatcher = tzdrnc-zone-dispatcher + } + "/service/cluster/tzdrnc-actor/*" { + dispatcher = tzdrnc-zone-dispatcher + } + "/service/cluster/tzdrvs-actor" { + dispatcher = tzdrvs-zone-dispatcher + } + "/service/cluster/tzdrvs-actor/*" { + dispatcher = tzdrvs-zone-dispatcher + } + "/service/cluster/tzsdrtr-actor" { + dispatcher = tzsdrtr-zone-dispatcher + } + "/service/cluster/tzsdrtr-actor/*" { + dispatcher = tzsdrtr-zone-dispatcher + } + "/service/cluster/tzshnc-actor" { + dispatcher = tzshnc-zone-dispatcher + } + "/service/cluster/tzshnc-actor/*" { + dispatcher = tzshnc-zone-dispatcher + } + "/service/cluster/tzshtr-actor" { + dispatcher = tzshtr-zone-dispatcher + } + "/service/cluster/tzshtr-actor/*" { + dispatcher = tzshtr-zone-dispatcher + } + "/service/cluster/tzshvs-actor" { + dispatcher = tzshvs-zone-dispatcher + } + "/service/cluster/tzshvs-actor/*" { + dispatcher = tzshvs-zone-dispatcher + } +} diff --git a/pslogin/src/main/resources/application.conf b/pslogin/src/main/resources/application.conf index 76fe0685..25344e9e 100644 --- a/pslogin/src/main/resources/application.conf +++ b/pslogin/src/main/resources/application.conf @@ -1,269 +1,114 @@ -##################################################### -## PSForever application.conf -## -## Do not edit this directly! -## Instead override variables by creating user.conf -##################################################### +# The socket bind address for all services except admin. 127.0.0.1 is the +# default for local testing, for public servers use 0.0.0.0 instead. +bind = 127.0.0.1 + +# The public host name or IP address. Used to forward clients from the login +# server to the world server. The default value will only allow local connections. +public = 127.0.0.1 + +# Login server configuration +login { + # UDP listening port + port = 51000 + + # Account usernames that don't exist yet will be automatically created in the + # database. Useful for test servers and development testing. + create-missing-accounts = yes +} + +# World server configuration +world { + # UDP listening port + port = 51001 + + # The name of the server as displayed in the server browser. + server-name = PSForever + + # How the server is displayed in the server browser. + # One of: released beta development + server-type = released +} + +# Admin API configuration +admin { + # TCP listening port + port = 51002 + + # The socket bind address + bind = 127.0.0.1 +} + +# Database configuration +database { + # The hostname of the PostgreSQL server. + host = localhost + + # The TCP port to connect to the database with. + port = 5432 + + # The username to connect to the SQL server with. + username = psforever + + # The password to connect to the SQL server with. + password = psforever + + # The database name to use on the SQL server. + database = psforever + + # The SSL configuration of the database connection. + # One of: disable prefer require verify-full + sslmode = prefer +} + +anti-cheat { + # The distance (squared) threshold that triggers if the reported hit location + # of a shot does not match the object being hit's location on the server + # One of 1-1000000 (sqrt 10000 = ~100 ingame units) + hit-position-discrepancy-threshold = 10000 +} + +network { + session { + # The maximum amount of time since the last inbound packet from a UDP session + # before it is dropped. + inbound-grace-time = 1 minute + + # The maximum amount of time since the last outbound packet for a UDP session + # before it is dropped. Can be used as a watchdog for hung server sessions. + outbound-grace-time = 1 minute + } +} + +developer { + net-sim { + # Enable artificial packet unreliability. Used for development testing. + # Active equally on upstream and downstream packets. + enable = no + + # The percentage of outgoing and incoming packets that are dropped. + loss = 0.02 + + # The time a packet is buffered before being delivered to simulate delay. + # The artificial delay is in addition to any real network latency. + delay = 150 milliseconds + + # The percentage chance that a packet will be ordered randomly in the delay + # buffer. If the delay is too small then packets won't be reordered. + reorder-chance = 0.005 + + # If a packet is reordered, the maximum time in the future or the past where + # it will randomly appear. + reorder-time = 150 milliseconds + } +} kamon { + # Enables reporting of metrics to Kamon.io + enable = no + environment.service = "PSForever" apm.api-key = "" } -akka { - loggers = ["akka.event.slf4j.Slf4jLogger"] - loglevel = INFO - logging-filter = akka.event.slf4j.Slf4jLoggingFilter -} - -akka.actor.deployment { - "/login-udp-endpoint" { - dispatcher = network-listener - } - - "/login-udp-endpoint/login-session-router" { - dispatcher = login-session-router - } - - "/login-udp-endpoint/login-session-router/*" { - dispatcher = login-session - } - - # Extremely performance critical (dedicated thread) - "/world-udp-endpoint" { - dispatcher = network-listener - } - - # Extremely performance critical (dedicated thread) - "/world-udp-endpoint/world-session-router" { - dispatcher = world-session-router - } - - # Most likely to crash (isolate) - "/world-udp-endpoint/world-session-router/*" { - dispatcher = world-session - } - - # Service dedicated pool - "/service" { - dispatcher = service-dispatcher - } - - "/service/*" { - dispatcher = service-dispatcher - } - - # Bottleneck (dedicated thread) - "/service/galaxy" { - dispatcher = galaxy-service - } - - # Isolate tasks - "/service/taskResolver*" { - dispatcher = task-dispatcher - } - - # Bottleneck (dedicated thread) - "/service/cluster" { - dispatcher = interstellar-cluster-service - } - - # Zone actors (lots of messages) - "/service/cluster/c1-actor" { - dispatcher = c1-zone-dispatcher - } - "/service/cluster/c1-actor/*" { - dispatcher = c1-zone-dispatcher - } - "/service/cluster/c2-actor" { - dispatcher = c2-zone-dispatcher - } - "/service/cluster/c2-actor/*" { - dispatcher = c2-zone-dispatcher - } - "/service/cluster/c3-actor" { - dispatcher = c3-zone-dispatcher - } - "/service/cluster/c3-actor/*" { - dispatcher = c3-zone-dispatcher - } - "/service/cluster/c4-actor" { - dispatcher = c4-zone-dispatcher - } - "/service/cluster/c4-actor/*" { - dispatcher = c4-zone-dispatcher - } - "/service/cluster/c5-actor" { - dispatcher = c5-zone-dispatcher - } - "/service/cluster/c5-actor/*" { - dispatcher = c5-zone-dispatcher - } - "/service/cluster/c6-actor" { - dispatcher = c6-zone-dispatcher - } - "/service/cluster/c6-actor/*" { - dispatcher = c6-zone-dispatcher - } - "/service/cluster/i1-actor" { - dispatcher = i1-zone-dispatcher - } - "/service/cluster/i1-actor/*" { - dispatcher = i1-zone-dispatcher - } - "/service/cluster/i2-actor" { - dispatcher = i2-zone-dispatcher - } - "/service/cluster/i2-actor/*" { - dispatcher = i2-zone-dispatcher - } - "/service/cluster/i3-actor" { - dispatcher = i3-zone-dispatcher - } - "/service/cluster/i3-actor/*" { - dispatcher = i3-zone-dispatcher - } - "/service/cluster/i4-actor" { - dispatcher = i4-zone-dispatcher - } - "/service/cluster/i4-actor/*" { - dispatcher = i4-zone-dispatcher - } - "/service/cluster/z1-actor" { - dispatcher = z1-zone-dispatcher - } - "/service/cluster/z1-actor/*" { - dispatcher = z1-zone-dispatcher - } - "/service/cluster/z2-actor" { - dispatcher = z2-zone-dispatcher - } - "/service/cluster/z2-actor/*" { - dispatcher = z2-zone-dispatcher - } - "/service/cluster/z3-actor" { - dispatcher = z3-zone-dispatcher - } - "/service/cluster/z3-actor/*" { - dispatcher = z3-zone-dispatcher - } - "/service/cluster/z4-actor" { - dispatcher = z4-zone-dispatcher - } - "/service/cluster/z4-actor/*" { - dispatcher = z4-zone-dispatcher - } - "/service/cluster/z5-actor" { - dispatcher = z5-zone-dispatcher - } - "/service/cluster/z5-actor/*" { - dispatcher = z5-zone-dispatcher - } - "/service/cluster/z6-actor" { - dispatcher = z6-zone-dispatcher - } - "/service/cluster/z6-actor/*" { - dispatcher = z6-zone-dispatcher - } - "/service/cluster/z7-actor" { - dispatcher = z7-zone-dispatcher - } - "/service/cluster/z7-actor/*" { - dispatcher = z7-zone-dispatcher - } - "/service/cluster/z8-actor" { - dispatcher = z8-zone-dispatcher - } - "/service/cluster/z8-actor/*" { - dispatcher = z8-zone-dispatcher - } - "/service/cluster/z9-actor" { - dispatcher = z9-zone-dispatcher - } - "/service/cluster/z9-actor/*" { - dispatcher = z9-zone-dispatcher - } - "/service/cluster/z10-actor" { - dispatcher = z10-zone-dispatcher - } - "/service/cluster/z10-actor/*" { - dispatcher = z10-zone-dispatcher - } - "/service/cluster/home1-actor" { - dispatcher = home1-zone-dispatcher - } - "/service/cluster/home1-actor/*" { - dispatcher = home1-zone-dispatcher - } - "/service/cluster/home2-actor" { - dispatcher = home2-zone-dispatcher - } - "/service/cluster/home2-actor/*" { - dispatcher = home2-zone-dispatcher - } - "/service/cluster/home3-actor" { - dispatcher = home3-zone-dispatcher - } - "/service/cluster/home3-actor/*" { - dispatcher = home3-zone-dispatcher - } - "/service/cluster/tzconc-actor" { - dispatcher = tzconc-zone-dispatcher - } - "/service/cluster/tzconc-actor/*" { - dispatcher = tzconc-zone-dispatcher - } - "/service/cluster/tzcotr-actor" { - dispatcher = tzcotr-zone-dispatcher - } - "/service/cluster/tzcotr-actor/*" { - dispatcher = tzcotr-zone-dispatcher - } - "/service/cluster/tzcovs-actor" { - dispatcher = tzcovs-zone-dispatcher - } - "/service/cluster/tzcovs-actor/*" { - dispatcher = tzcovs-zone-dispatcher - } - "/service/cluster/tzdrnc-actor" { - dispatcher = tzdrnc-zone-dispatcher - } - "/service/cluster/tzdrnc-actor/*" { - dispatcher = tzdrnc-zone-dispatcher - } - "/service/cluster/tzdrvs-actor" { - dispatcher = tzdrvs-zone-dispatcher - } - "/service/cluster/tzdrvs-actor/*" { - dispatcher = tzdrvs-zone-dispatcher - } - "/service/cluster/tzsdrtr-actor" { - dispatcher = tzsdrtr-zone-dispatcher - } - "/service/cluster/tzsdrtr-actor/*" { - dispatcher = tzsdrtr-zone-dispatcher - } - "/service/cluster/tzshnc-actor" { - dispatcher = tzshnc-zone-dispatcher - } - "/service/cluster/tzshnc-actor/*" { - dispatcher = tzshnc-zone-dispatcher - } - "/service/cluster/tzshtr-actor" { - dispatcher = tzshtr-zone-dispatcher - } - "/service/cluster/tzshtr-actor/*" { - dispatcher = tzshtr-zone-dispatcher - } - "/service/cluster/tzshvs-actor" { - dispatcher = tzshvs-zone-dispatcher - } - "/service/cluster/tzshvs-actor/*" { - dispatcher = tzshvs-zone-dispatcher - } -} - -include "psfdispatchers" - -# create user.conf and add your overrides -include "user" +include "akka" +include "dispatchers" diff --git a/schema.sql b/pslogin/src/main/resources/db/migration/V001__Init.sql similarity index 100% rename from schema.sql rename to pslogin/src/main/resources/db/migration/V001__Init.sql diff --git a/pslogin/src/main/resources/psfdispatchers.conf b/pslogin/src/main/resources/dispatchers.conf similarity index 97% rename from pslogin/src/main/resources/psfdispatchers.conf rename to pslogin/src/main/resources/dispatchers.conf index 47371591..c471f16d 100644 --- a/pslogin/src/main/resources/psfdispatchers.conf +++ b/pslogin/src/main/resources/dispatchers.conf @@ -1,10 +1,3 @@ -##################################################### -## PSForever psfdispatchers.conf -## -## Do not edit this directly! -## Instead override variables by creating user.conf -##################################################### - login-session { # Dispatcher is the name of the event-based dispatcher type = Dispatcher diff --git a/pslogin/src/main/resources/game_objects0.adb.lst b/pslogin/src/main/resources/overrides/game_objects0.adb.lst similarity index 100% rename from pslogin/src/main/resources/game_objects0.adb.lst rename to pslogin/src/main/resources/overrides/game_objects0.adb.lst diff --git a/pslogin/src/main/resources/game_objects29.adb.lst b/pslogin/src/main/resources/overrides/game_objects29.adb.lst similarity index 100% rename from pslogin/src/main/resources/game_objects29.adb.lst rename to pslogin/src/main/resources/overrides/game_objects29.adb.lst diff --git a/pslogin/src/main/resources/game_objects30.adb.lst b/pslogin/src/main/resources/overrides/game_objects30.adb.lst similarity index 100% rename from pslogin/src/main/resources/game_objects30.adb.lst rename to pslogin/src/main/resources/overrides/game_objects30.adb.lst diff --git a/pslogin/src/main/resources/game_objects31.adb.lst b/pslogin/src/main/resources/overrides/game_objects31.adb.lst similarity index 100% rename from pslogin/src/main/resources/game_objects31.adb.lst rename to pslogin/src/main/resources/overrides/game_objects31.adb.lst diff --git a/pslogin/src/main/resources/game_objects32.adb.lst b/pslogin/src/main/resources/overrides/game_objects32.adb.lst similarity index 100% rename from pslogin/src/main/resources/game_objects32.adb.lst rename to pslogin/src/main/resources/overrides/game_objects32.adb.lst diff --git a/pslogin/src/main/scala/Config.scala b/pslogin/src/main/scala/Config.scala new file mode 100644 index 00000000..4455b4c8 --- /dev/null +++ b/pslogin/src/main/scala/Config.scala @@ -0,0 +1,121 @@ +package net.psforever.pslogin + +import java.nio.file.Paths + +import com.typesafe.config.{Config => TypesafeConfig} + +import scala.concurrent.duration._ +import net.psforever.packet.game.ServerType +import pureconfig.{ConfigConvert, ConfigSource} +import pureconfig.ConfigConvert.{viaNonEmptyStringOpt} +import enumeratum.values.{IntEnum, IntEnumEntry} +import pureconfig.generic.auto._ // intellij: this is not unused + +import scala.reflect.ClassTag + +object Config { + // prog.home is defined when we are running from SBT pack + val directory: String = System.getProperty("prog.home") match { + case null => + Paths.get("config").toAbsolutePath().toString() + case home => + Paths.get(home, "config").toAbsolutePath().toString() + } + + implicit def enumeratumIntConfigConvert[A <: IntEnumEntry](implicit + enum: IntEnum[A], + ct: ClassTag[A] + ): ConfigConvert[A] = + viaNonEmptyStringOpt[A]( + v => + enum.values.toList.collectFirst { + case (e: ServerType) if e.name == v => e.asInstanceOf[A] + }, + _.value.toString + ) + + private val source = { + val configFile = Paths.get(directory, "psforever.conf").toFile() + if (configFile.exists) + ConfigSource.file(configFile).withFallback(ConfigSource.defaultApplication) + else + ConfigSource.defaultApplication + } + + val result = source.load[AppConfig] + + // Raw config object - prefer app when possible + lazy val config: TypesafeConfig = source.config().toOption.get + + // Typed config object + lazy val app: AppConfig = result.toOption.get +} + +case class AppConfig( + bind: String, + public: String, + login: LoginConfig, + world: WorldConfig, + admin: AdminConfig, + database: DatabaseConfig, + antiCheat: AntiCheatConfig, + network: NetworkConfig, + developer: DeveloperConfig, + kamon: KamonConfig +) + +case class LoginConfig( + port: Int, + createMissingAccounts: Boolean +) + +case class WorldConfig( + port: Int, + serverName: String, + serverType: ServerType +) + +case class AdminConfig( + port: Int, + bind: String +) + +case class DatabaseConfig( + host: String, + port: Int, + username: String, + password: String, + database: String, + sslmode: String +) { + def toJdbc = s"jdbc:postgresql://${host}:${port}/${database}" +} + +case class AntiCheatConfig( + hitPositionDiscrepancyThreshold: Int +) + +case class NetworkConfig( + session: SessionConfig +) + +case class SessionConfig( + inboundGraceTime: Duration, + outboundGraceTime: Duration +) + +case class DeveloperConfig( + netSim: NetSimConfig +) + +case class NetSimConfig( + enable: Boolean, + loss: Double, + delay: Duration, + reorderChance: Double, + reorderTime: Duration +) + +case class KamonConfig( + enable: Boolean +) diff --git a/pslogin/src/main/scala/CryptoSessionActor.scala b/pslogin/src/main/scala/CryptoSessionActor.scala index 4aadc1ee..e0cf5c62 100644 --- a/pslogin/src/main/scala/CryptoSessionActor.scala +++ b/pslogin/src/main/scala/CryptoSessionActor.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import akka.actor.{Actor, ActorRef, MDCContextAware} import net.psforever.crypto.CryptoInterface.CryptoStateWithMAC import net.psforever.crypto.CryptoInterface @@ -23,25 +24,25 @@ final case class DropCryptoSession() extends CryptoSessionAPI class CryptoSessionActor extends Actor with MDCContextAware { private[this] val log = org.log4s.getLogger - var sessionId : Long = 0 - var leftRef : ActorRef = ActorRef.noSender - var rightRef : ActorRef = ActorRef.noSender + var sessionId: Long = 0 + var leftRef: ActorRef = ActorRef.noSender + var rightRef: ActorRef = ActorRef.noSender - var cryptoDHState : Option[CryptoInterface.CryptoDHState] = None - var cryptoState : Option[CryptoInterface.CryptoStateWithMAC] = None - val random = new SecureRandom() + var cryptoDHState: Option[CryptoInterface.CryptoDHState] = None + var cryptoState: Option[CryptoInterface.CryptoStateWithMAC] = None + val random = new SecureRandom() // crypto handshake state - var serverChallenge = ByteVector.empty + var serverChallenge = ByteVector.empty var serverChallengeResult = ByteVector.empty - var serverMACBuffer = ByteVector.empty + var serverMACBuffer = ByteVector.empty - var clientPublicKey = ByteVector.empty - var clientChallenge = ByteVector.empty + var clientPublicKey = ByteVector.empty + var clientChallenge = ByteVector.empty var clientChallengeResult = ByteVector.empty - var clientNonce : Long = 0 - var serverNonce : Long = 0 + var clientNonce: Long = 0 + var serverNonce: Long = 0 // Don't leak crypto object memory even on an exception override def postStop() = { @@ -50,12 +51,12 @@ class CryptoSessionActor extends Actor with MDCContextAware { def receive = Initializing - def Initializing : Receive = { + def Initializing: Receive = { case HelloFriend(sharedSessionId, pipe) => import MDCContextAware.Implicits._ this.sessionId = sharedSessionId leftRef = sender() - if(pipe.hasNext) { + if (pipe.hasNext) { rightRef = pipe.next // who ever we send to has to send something back to us rightRef !> HelloFriend(sessionId, pipe) } else { @@ -69,7 +70,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { context.stop(self) } - def NewClient : Receive = { + def NewClient: Receive = { case RawPacket(msg) => PacketCoding.UnmarshalPacket(msg) match { case Successful(p) => @@ -107,7 +108,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { log.error(s"Invalid message '$default' received in state NewClient") } - def CryptoExchange : Receive = { + def CryptoExchange: Receive = { case RawPacket(msg) => PacketCoding.UnmarshalPacket(msg, CryptoPacketOpcode.ClientChallengeXchg) match { case Failure(e) => @@ -125,13 +126,12 @@ class CryptoSessionActor extends Actor with MDCContextAware { clientChallenge = ServerChallengeXchg.getCompleteChallenge(time, challenge) // save the packet we got for a MAC check later. drop the first 3 bytes serverMACBuffer ++= msg.drop(3) - val serverTime = System.currentTimeMillis() / 1000L + val serverTime = System.currentTimeMillis() / 1000L val randomChallenge = getRandBytes(0xc) // store the complete server challenge for later serverChallenge = ServerChallengeXchg.getCompleteChallenge(serverTime, randomChallenge) - val packet = PacketCoding.CreateCryptoPacket(seq, - ServerChallengeXchg(serverTime, randomChallenge, dh.getPublicKey) - ) + val packet = + PacketCoding.CreateCryptoPacket(seq, ServerChallengeXchg(serverTime, randomChallenge, dh.getPublicKey)) val sentPacket = sendResponse(packet) // save the sent packet a MAC check serverMACBuffer ++= sentPacket.drop(3) @@ -145,7 +145,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { log.error(s"Invalid message '$default' received in state CryptoExchange") } - def CryptoSetupFinishing : Receive = { + def CryptoSetupFinishing: Receive = { case RawPacket(msg) => PacketCoding.UnmarshalPacket(msg, CryptoPacketOpcode.ClientFinished) match { case Failure(e) => log.error("Could not decode packet in state CryptoSetupFinishing: " + e) @@ -160,7 +160,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { // save the packet we got for a MAC check later serverMACBuffer ++= msg.drop(3) - val dh = cryptoDHState.get + val dh = cryptoDHState.get val agreedValue = dh.agree(clientPublicKey) // we are now done with the DH crypto object @@ -173,15 +173,15 @@ class CryptoSessionActor extends Actor with MDCContextAware { //println("In message: " + agreedMessage) - val masterSecret = CryptoInterface.MD5MAC(agreedValue, - agreedMessage, - 20) + val masterSecret = CryptoInterface.MD5MAC(agreedValue, agreedMessage, 20) //println("Master secret: " + masterSecret) - serverChallengeResult = CryptoInterface.MD5MAC(masterSecret, + serverChallengeResult = CryptoInterface.MD5MAC( + masterSecret, ByteVector("server finished".getBytes) ++ serverMACBuffer ++ hex"01", - 0xc) + 0xc + ) // val clientChallengeResultCheck = CryptoInterface.MD5MAC(masterSecret, // ByteVector("client finished".getBytes) ++ serverMACBuffer ++ hex"01" ++ clientChallengeResult ++ hex"01", @@ -199,16 +199,13 @@ class CryptoSessionActor extends Actor with MDCContextAware { // expand the encryption and decryption keys // The first 20 bytes are for RC5, and the next 16 are for the MAC'ing keys - val expandedDecKey = CryptoInterface.MD5MAC(masterSecret, - decExpansion, - 0x40) // this is what is visible in IDA + val expandedDecKey = + CryptoInterface.MD5MAC(masterSecret, decExpansion, 0x40) // this is what is visible in IDA - val expandedEncKey = CryptoInterface.MD5MAC(masterSecret, - encExpansion, - 0x40) + val expandedEncKey = CryptoInterface.MD5MAC(masterSecret, encExpansion, 0x40) - val decKey = expandedDecKey.take(20) - val encKey = expandedEncKey.take(20) + val decKey = expandedDecKey.take(20) + val encKey = expandedEncKey.take(20) val decMACKey = expandedDecKey.drop(20).take(16) val encMACKey = expandedEncKey.drop(20).take(16) @@ -220,8 +217,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { // spin up our encryption program cryptoState = Some(new CryptoStateWithMAC(decKey, encKey, decMACKey, encMACKey)) - val packet = PacketCoding.CreateCryptoPacket(seq, - ServerFinished(serverChallengeResult)) + val packet = PacketCoding.CreateCryptoPacket(seq, ServerFinished(serverChallengeResult)) sendResponse(packet) @@ -232,17 +228,17 @@ class CryptoSessionActor extends Actor with MDCContextAware { case default => failWithError(s"Invalid message '$default' received in state CryptoSetupFinished") } - def Established : Receive = { + def Established: Receive = { //same as having received ad hoc hexadecimal case RawPacket(msg) => - if(sender() == rightRef) { + if (sender() == rightRef) { val packet = PacketCoding.encryptPacket(cryptoState.get, 0, msg).require sendResponse(packet) } else { //from network-side PacketCoding.UnmarshalPacket(msg) match { case Successful(p) => p match { - case encPacket @ EncryptedPacket(_/*seq*/, _) => + case encPacket @ EncryptedPacket(_ /*seq*/, _) => PacketCoding.decryptPacketData(cryptoState.get, encPacket) match { case Successful(packet) => MDC("sessionId") = sessionId.toString @@ -259,7 +255,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { } } //message to self? - case api : CryptoSessionAPI => + case api: CryptoSessionAPI => api match { case DropCryptoSession() => handleEstablishedPacket( @@ -268,30 +264,30 @@ class CryptoSessionActor extends Actor with MDCContextAware { ) } //echo the session router? isn't that normally the leftRef? - case sessionAPI : SessionRouterAPI => + case sessionAPI: SessionRouterAPI => leftRef !> sessionAPI //error case default => failWithError(s"Invalid message '$default' received in state Established") } - def failWithError(error : String) = { + def failWithError(error: String) = { log.error(error) } def cleanupCrypto() = { - if(cryptoDHState.isDefined) { + if (cryptoDHState.isDefined) { cryptoDHState.get.close cryptoDHState = None } - if(cryptoState.isDefined) { + if (cryptoState.isDefined) { cryptoState.get.close cryptoState = None } } - def resetState() : Unit = { + def resetState(): Unit = { context.become(receive) // reset the crypto primitives @@ -305,11 +301,11 @@ class CryptoSessionActor extends Actor with MDCContextAware { clientChallengeResult = ByteVector.empty } - def handleEstablishedPacket(from : ActorRef, cont : PlanetSidePacketContainer) : Unit = { + def handleEstablishedPacket(from: ActorRef, cont: PlanetSidePacketContainer): Unit = { //we are processing a packet that we decrypted - if(from == self) { //to WSA, LSA, etc. + if (from == self) { //to WSA, LSA, etc. rightRef !> cont - } else if(from == rightRef) { //processing a completed packet from the right; to network-side + } else if (from == rightRef) { //processing a completed packet from the right; to network-side PacketCoding.getPacketDataForEncryption(cont) match { case Successful((seq, data)) => val packet = PacketCoding.encryptPacket(cryptoState.get, seq, data).require @@ -322,7 +318,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { } } - def sendResponse(cont : PlanetSidePacketContainer) : ByteVector = { + def sendResponse(cont: PlanetSidePacketContainer): ByteVector = { log.trace("CRYPTO SEND: " + cont) val pkt = PacketCoding.MarshalPacket(cont) pkt match { @@ -338,7 +334,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { } } - def sendResponse(pkt : PlanetSideGamePacket) : ByteVector = { + def sendResponse(pkt: PlanetSideGamePacket): ByteVector = { log.trace("CRYPTO SEND GAME: " + pkt) val pktEncoded = PacketCoding.EncodePacket(pkt) pktEncoded match { @@ -354,7 +350,7 @@ class CryptoSessionActor extends Actor with MDCContextAware { } } - def getRandBytes(amount : Int) : ByteVector = { + def getRandBytes(amount: Int): ByteVector = { val array = Array.ofDim[Byte](amount) random.nextBytes(array) ByteVector.view(array) diff --git a/pslogin/src/main/scala/Database.scala b/pslogin/src/main/scala/Database.scala index cfe09a04..1e406518 100644 --- a/pslogin/src/main/scala/Database.scala +++ b/pslogin/src/main/scala/Database.scala @@ -1,69 +1,21 @@ -// Copyright (c) 2017 PSForever -import net.psforever.WorldConfig -import com.github.mauricio.async.db.postgresql.PostgreSQLConnection -import com.github.mauricio.async.db.{Configuration, QueryResult, RowData, SSLConfiguration} -import scala.util.{Try,Success,Failure} -import scala.concurrent._ -import scala.concurrent.duration._ -import ExecutionContext.Implicits.global +package net.psforever.pslogin -import scala.concurrent.Future +import io.getquill.PostgresJAsyncContext +import io.getquill.SnakeCase +import net.psforever.persistence object Database { - private val logger = org.log4s.getLogger + implicit val accountSchemaMeta = ctx.schemaMeta[persistence.Account]("accounts", _.id -> "id") + implicit val characterSchemaMeta = ctx.schemaMeta[persistence.Character]("characters", _.id -> "id") + implicit val loadoutSchemaMeta = ctx.schemaMeta[persistence.Loadout]("loadouts", _.id -> "id") + implicit val lockerSchemaMeta = ctx.schemaMeta[persistence.Locker]("lockers", _.id -> "id") + implicit val loginSchemaMeta = ctx.schemaMeta[persistence.Login]("logins", _.id -> "id") - import WorldConfig.ConfigDatabaseSSL._ - - val UNKNOWN_ERROR : Int = -1 - val EMPTY_RESULT : Int = -2 - val config = Configuration( - WorldConfig.Get[String]("database.Username"), - WorldConfig.Get[String]("database.Hostname"), - WorldConfig.Get[Int]("database.Port"), - Some(WorldConfig.Get[String]("database.Password")), - Some(WorldConfig.Get[String]("database.Database")), - WorldConfig.Get[WorldConfig.ConfigDatabaseSSL.Value]("database.SSL") match { - case Disable => SSLConfiguration(SSLConfiguration.Mode.Disable) - case Prefer => SSLConfiguration(SSLConfiguration.Mode.Prefer) - case Require => SSLConfiguration(SSLConfiguration.Mode.Require) - // not including VerifyCA as full is more secure - case Verify => SSLConfiguration(SSLConfiguration.Mode.VerifyFull) - } - ) - - def testConnection : Try[Boolean] = { - try { - val connection = Await.result(getConnection.connect, 2 seconds) - val result = Await.result(query(connection.sendQuery("SELECT 0")), 2 seconds) - connection.disconnect - Success(true) - } catch { - case e : com.github.mauricio.async.db.postgresql.exceptions.GenericDatabaseException => - logger.error(e.errorMessage.message) - Failure(e) - case e : javax.net.ssl.SSLHandshakeException => - logger.error(s"${e.getMessage} (make sure your database supports SSL and the certificate matches)") - Failure(e) - case e : Throwable => - logger.error(s"Unknown database error: ${e.toString}") - Failure(e) - } + // TODO remove if this gets merged https://github.com/getquill/quill/pull/1765 + implicit class ILike(s1: String) { + import ctx._ + def ilike(s2: String) = quote(infix"$s1 ilike $s2".as[Boolean]) } - // TODO Will probably want to use the ConnectionPool, although I don't know the implications for multithreaded apps - def getConnection = new PostgreSQLConnection(config) - - def query(query : Future[QueryResult]) : Future[Any] = { - query.map(queryResult => queryResult.rows match { - case Some(resultSet) => - if(resultSet.nonEmpty) { - val row : RowData = resultSet.head - row - } else { - EMPTY_RESULT - } - case None => - UNKNOWN_ERROR - }) - } + val ctx = new PostgresJAsyncContext(SnakeCase, Config.config.getConfig("database")) } diff --git a/pslogin/src/main/scala/LoginConfig.scala b/pslogin/src/main/scala/LoginConfig.scala deleted file mode 100644 index 77f74314..00000000 --- a/pslogin/src/main/scala/LoginConfig.scala +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) 2017 PSForever -import java.net.InetAddress - -object LoginConfig { - var serverIpAddress : InetAddress = InetAddress.getLoopbackAddress -} diff --git a/pslogin/src/main/scala/LoginSessionActor.scala b/pslogin/src/main/scala/LoginSessionActor.scala index 1e667374..c2c44a0c 100644 --- a/pslogin/src/main/scala/LoginSessionActor.scala +++ b/pslogin/src/main/scala/LoginSessionActor.scala @@ -1,7 +1,6 @@ -// Copyright (c) 2017 PSForever -import java.net.InetSocketAddress -import java.net.InetAddress +package net.psforever.pslogin +import java.net.InetSocketAddress import akka.actor.{Actor, ActorRef, Cancellable, MDCContextAware} import net.psforever.packet.{PlanetSideGamePacket, _} import net.psforever.packet.control._ @@ -9,25 +8,20 @@ import net.psforever.packet.game._ import org.log4s.MDC import scodec.bits._ import MDCContextAware.Implicits._ -import com.github.mauricio.async.db.general.ArrayRowData -import com.github.mauricio.async.db.{Connection, QueryResult} import net.psforever.objects.Account import net.psforever.objects.Default import net.psforever.types.PlanetSideEmpire -import net.psforever.WorldConfig import services.ServiceManager import services.ServiceManager.Lookup import services.account.{ReceiveIPAddress, RetrieveIPAddress, StoreAccountData} import com.github.t3hnar.bcrypt._ import net.psforever.packet.game.LoginRespMessage.{LoginError, StationError, StationSubscriptionStatus} - +import net.psforever.persistence import scala.concurrent.duration._ import scala.util.{Failure, Success} - -case class StartAccountAuthentication(connection: Option[Connection], username: String, password: String, newToken: String, queryResult: Any) -case class FinishAccountLogin(connection: Option[Connection], username: String, newToken: String, isSuccessfulLogin: Boolean, isInactive:Boolean = false) -case class CreateNewAccount(connection: Option[Connection], username: String, password: String, newToken: String) -case class LogTheLoginOccurrence(connection: Option[Connection], username: String, newToken: String, isSuccessfulLogin: Boolean, accountId: Int) +import scala.concurrent.Future +import Database._ +import java.net.InetAddress class LoginSessionActor extends Actor with MDCContextAware { private[this] val log = org.log4s.getLogger @@ -37,43 +31,36 @@ class LoginSessionActor extends Actor with MDCContextAware { val usernameRegex = """[A-Za-z0-9]{3,}""".r - var sessionId : Long = 0 - var leftRef : ActorRef = ActorRef.noSender - var rightRef : ActorRef = ActorRef.noSender - var accountIntermediary : ActorRef = ActorRef.noSender + var sessionId: Long = 0 + var leftRef: ActorRef = ActorRef.noSender + var rightRef: ActorRef = ActorRef.noSender + var accountIntermediary: ActorRef = ActorRef.noSender - var updateServerListTask : Cancellable = Default.Cancellable + var updateServerListTask: Cancellable = Default.Cancellable - var ipAddress : String = "" - var hostName : String = "" - var canonicalHostName : String = "" - var port : Int = 0 + var ipAddress: String = "" + var hostName: String = "" + var canonicalHostName: String = "" + var port: Int = 0 - val serverName = WorldConfig.Get[String]("worldserver.ServerName") - - // This MUST be an IP address. The client DOES NOT do name resolution - var serverHost : String = if (WorldConfig.Get[String]("worldserver.Hostname") != "") - InetAddress.getByName(WorldConfig.Get[String]("worldserver.Hostname")).getHostAddress - else - LoginConfig.serverIpAddress.getHostAddress - - val serverAddress = new InetSocketAddress(serverHost, WorldConfig.Get[Int]("worldserver.ListeningPort")) + val serverName = Config.app.world.serverName + val publicAddress = new InetSocketAddress(InetAddress.getByName(Config.app.public), Config.app.world.port) // Reference: https://stackoverflow.com/a/50470009 private val numBcryptPasses = 10 override def postStop() = { - if(updateServerListTask != null) + if (updateServerListTask != null) updateServerListTask.cancel() } def receive = Initializing - def Initializing : Receive = { + def Initializing: Receive = { case HelloFriend(aSessionId, pipe) => this.sessionId = aSessionId leftRef = sender() - if(pipe.hasNext) { + if (pipe.hasNext) { rightRef = pipe.next rightRef !> HelloFriend(aSessionId, pipe) } else { @@ -87,7 +74,7 @@ class LoginSessionActor extends Actor with MDCContextAware { context.stop(self) } - def Started : Receive = { + def Started: Receive = { case ServiceManager.LookupResult("accountIntermediary", endpoint) => accountIntermediary = endpoint case ReceiveIPAddress(address) => @@ -104,7 +91,7 @@ class LoginSessionActor extends Actor with MDCContextAware { case default => failWithError(s"Invalid packet class received: $default") } - def handleControlPkt(pkt : PlanetSideControlPacket) = { + def handleControlPkt(pkt: PlanetSideControlPacket) = { pkt match { /// TODO: figure out what this is what what it does for the PS client /// I believe it has something to do with reliable packet transmission and resending @@ -121,248 +108,174 @@ class LoginSessionActor extends Actor with MDCContextAware { } } - def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match { - case LoginMessage(majorVersion, minorVersion, buildDate, username, password, token, revision) => - // TODO: prevent multiple LoginMessages from being processed in a row!! We need a state machine + def handleGamePkt(pkt: PlanetSideGamePacket) = + pkt match { + case LoginMessage(majorVersion, minorVersion, buildDate, username, password, token, revision) => + // TODO: prevent multiple LoginMessages from being processed in a row!! We need a state machine - val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate" + val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate" - accountIntermediary ! RetrieveIPAddress(sessionId) + accountIntermediary ! RetrieveIPAddress(sessionId) - if(token.isDefined) - log.info(s"New login UN:$username Token:${token.get}. $clientVersion") - else { + if (token.isDefined) + log.info(s"New login UN:$username Token:${token.get}. $clientVersion") + else { // log.info(s"New login UN:$username PW:$password. $clientVersion") - log.info(s"New login UN:$username. $clientVersion") - } + log.info(s"New login UN:$username. $clientVersion") + } - startAccountLogin(username, password.get) + accountLogin(username, password.get) - case ConnectToWorldRequestMessage(name, _, _, _, _, _, _) => - log.info(s"Connect to world request for '$name'") - val response = ConnectToWorldMessage(serverName, serverAddress.getHostString, serverAddress.getPort) - sendResponse(PacketCoding.CreateGamePacket(0, response)) - sendResponse(DropSession(sessionId, "user transferring to world")) + case ConnectToWorldRequestMessage(name, _, _, _, _, _, _) => + log.info(s"Connect to world request for '$name'") + val response = ConnectToWorldMessage(serverName, publicAddress.getHostString, publicAddress.getPort) + sendResponse(PacketCoding.CreateGamePacket(0, response)) + sendResponse(DropSession(sessionId, "user transferring to world")) - case _ => - log.debug(s"Unhandled GamePacket $pkt") - } + case _ => + log.debug(s"Unhandled GamePacket $pkt") + } - def startAccountLogin(username: String, password: String) : Unit = { + def accountLogin(username: String, password: String): Unit = { + import ctx._ val newToken = this.generateToken() - Database.getConnection.connect.onComplete { - case Success(connection) => - Database.query(connection.sendPreparedStatement( - "SELECT id, passhash, inactive, gm FROM accounts where username=?", List(username) - )).onComplete { - case Success(queryResult) => - context.become(startAccountAuthentication) - self ! StartAccountAuthentication(Some(connection), username, password, newToken, queryResult) - case Failure(e) => - log.error("Failed account lookup query " + e.getMessage) - connection.disconnect - context.become(finishAccountLogin) - self ! FinishAccountLogin(Some(connection), username, newToken, false) - } - case Failure(e) => - log.error("Failed connecting to database for account lookup " + e.getMessage) - context.become(finishAccountLogin) - self ! FinishAccountLogin(None, username, newToken, false) - } - } - def startAccountAuthentication : Receive = { - case StartAccountAuthentication(connection, username, password, newToken, queryResult) => - queryResult match { - - // If we got a row from the database - case row: ArrayRowData => - val (isSuccessfulLogin, accountId) = authenticateExistingAccount(connection.get, username, password, newToken, row) - if(isSuccessfulLogin) { // login OK - context.become(logTheLoginOccurrence) - self ! LogTheLoginOccurrence(connection, username, newToken, isSuccessfulLogin, accountId) - } else { - if (accountId == 0) { // Bad password - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, isSuccessfulLogin) - } else { // Account inactive - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, isSuccessfulLogin, true) - } - } - - // If the account didn't exist in the database - case errorCode: Int => errorCode match { - case Database.EMPTY_RESULT => - if (WorldConfig.Get[Boolean]("loginserver.CreateMissingAccounts")) { - self ! CreateNewAccount(connection, username, password, newToken) - context.become(createNewAccount) - } else { - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - } - - case _ => - log.error(s"Issue retrieving result set from database for account $username") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - } + val result = for { + // backwards compatibility: prefer exact match first, then try lowercase + accountsExact <- ctx.run(query[persistence.Account].filter(_.username == lift(username))) + accountsLower <- accountsExact.headOption match { + case None => + ctx.run(query[persistence.Account].filter(_.username.toLowerCase == lift(username).toLowerCase)) + case Some(_) => + Future.successful(Seq()) } - case default => - failWithError(s"Invalid message '$default' received in startAccountAuthentication") - } - - def createNewAccount : Receive = { - case CreateNewAccount(connection, username, password, newToken) => - log.info(s"Account $username does not exist, creating new account...") - - username match { - case usernameRegex(_*) => ; - val bcryptPassword : String = password.bcrypt(numBcryptPasses) - - connection.get.inTransaction { - c => c.sendPreparedStatement( - "INSERT INTO accounts (username, passhash) VALUES(?,?) RETURNING id", - List(username, bcryptPassword) - ) - }.onComplete { - case Success(insertResult) => - insertResult match { - case result: QueryResult => - if (result.rows.nonEmpty) { - val accountId = result.rows.get.head(0).asInstanceOf[Int] - accountIntermediary ! StoreAccountData(newToken, new Account(accountId, username)) - log.info(s"Successfully created new account for $username") - context.become(logTheLoginOccurrence) - self ! LogTheLoginOccurrence(connection, username, newToken, true, accountId) - } else { - log.error(s"No result from account create insert for $username") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - } - case default => - log.error(s"Error creating new account for $username - $default") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) + accountOption <- accountsExact.headOption orElse accountsLower.headOption match { + case Some(account) => Future.successful(Some(account)) + case None => { + Config.app.login.createMissingAccounts match { + case true => + val passhash: String = password.bcrypt(numBcryptPasses) + ctx.run( + query[persistence.Account] + .insert(_.passhash -> lift(passhash), _.username -> lift(username)) + .returningGenerated(_.id) + ) flatMap { id => ctx.run(query[persistence.Account].filter(_.id == lift(id))) } map { accounts => + Some(accounts.head) } - case Failure(e : com.github.mauricio.async.db.postgresql.exceptions.GenericDatabaseException) => - log.error(s"Error creating new account - ${e.errorMessage.message}") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - - case Failure(e : java.sql.SQLException) => - log.error(s"Error creating new account - ${e.getMessage}") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - - case _ => - failWithError(s"Something to do?") + case false => + loginFailureResponse(username, newToken) + Future.successful(None) } - case _ => - log.warn(s"Account '$username' does not match regex") - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, false) - } - - case default => - failWithError(s"Invalid message '$default' received in createNewAccount") - } - - // Essentially keeps a record of this individual login occurrence - def logTheLoginOccurrence : Receive = { - case LogTheLoginOccurrence(connection, username, newToken, isSuccessfulLogin, accountId) => - connection.get.inTransaction { - c => c.sendPreparedStatement( - "INSERT INTO logins (account_id, login_time, ip_address, canonical_hostName, hostname, port) VALUES(?,?,?,?,?,?)", - List(accountId, new java.sql.Timestamp(System.currentTimeMillis), ipAddress, canonicalHostName, hostName, port) - ) - }.onComplete { - _ => - context.become(finishAccountLogin) - self ! FinishAccountLogin(connection, username, newToken, isSuccessfulLogin) - } - case default => failWithError(s"Invalid message '$default' received in logTheLoginOccurrence") - } - - def finishAccountLogin : Receive = { - case FinishAccountLogin(connection, username, newToken, isSuccessfulLogin, isInactive) => - if(isSuccessfulLogin) { // Login OK - loginSuccessfulResponse(username, newToken) - updateServerListTask = context.system.scheduler.scheduleWithFixedDelay(0 seconds, 2 seconds, self, UpdateServerList()) - } else { - if (!isInactive && connection.nonEmpty) { // Bad Password - loginPwdFailureResponse(username, newToken) - } else if (connection.nonEmpty) { // Account inactive - loginAccountFailureResponse(username, newToken) - } else { - loginFailureResponse(username, newToken) } } - if(connection.nonEmpty) { - connection.get.disconnect + login <- accountOption match { + case Some(account) => + (account.inactive, password.isBcrypted(account.passhash)) match { + case (false, true) => + accountIntermediary ! StoreAccountData(newToken, new Account(account.id, account.username, account.gm)) + val future = ctx.run( + query[persistence.Login].insert( + _.accountId -> lift(account.id), + _.ipAddress -> lift(ipAddress), + _.canonicalHostname -> lift(canonicalHostName), + _.hostname -> lift(hostName), + _.port -> lift(port) + ) + ) + loginSuccessfulResponse(username, newToken) + updateServerListTask = + context.system.scheduler.scheduleWithFixedDelay(0 seconds, 2 seconds, self, UpdateServerList()) + future + case (_, false) => + loginPwdFailureResponse(username, newToken) + Future.successful(None) + case (true, _) => + loginAccountFailureResponse(username, newToken) + Future.successful(None) + } + case None => Future.successful(None) } - context.become(Started) - case default => - failWithError(s"Invalid message '$default' received in finishAccountLogin") - } + } yield login - def authenticateExistingAccount( - connection: Connection, username: String, password: String, newToken: String, row: ArrayRowData - ) : (Boolean, Int) = { - val accountId : Int = row(0).asInstanceOf[Int] - val dbPassHash : String = row(1).asInstanceOf[String] - val inactive : Boolean = row(2).asInstanceOf[Boolean] - val gm : Boolean = row(3).asInstanceOf[Boolean] - - if (password.isBcrypted(dbPassHash)) { - if (!inactive) { - log.info(s"Account password correct for $username!") - accountIntermediary ! StoreAccountData(newToken, new Account(accountId, username, gm)) - return (true, accountId) - } else { - log.info(s"Account password correct for $username but account inactive !") - return (false, accountId) - } - } else { - log.info(s"Account password incorrect for $username") + result.onComplete { + case Success(_) => + case Failure(e) => log.error(e.getMessage()) } - - (false, 0) } def loginSuccessfulResponse(username: String, newToken: String) = { - sendResponse(PacketCoding.CreateGamePacket(0, LoginRespMessage( - newToken, LoginError.Success, StationError.AccountActive, - StationSubscriptionStatus.Active, 0, username, 10001 - ))) + sendResponse( + PacketCoding.CreateGamePacket( + 0, + LoginRespMessage( + newToken, + LoginError.Success, + StationError.AccountActive, + StationSubscriptionStatus.Active, + 0, + username, + 10001 + ) + ) + ) } def loginPwdFailureResponse(username: String, newToken: String) = { log.info(s"Failed login to account $username") - sendResponse(PacketCoding.CreateGamePacket(0, LoginRespMessage( - newToken, LoginError.BadUsernameOrPassword, StationError.AccountActive, - StationSubscriptionStatus.Active, 685276011, username, 10001 - ))) + sendResponse( + PacketCoding.CreateGamePacket( + 0, + LoginRespMessage( + newToken, + LoginError.BadUsernameOrPassword, + StationError.AccountActive, + StationSubscriptionStatus.Active, + 685276011, + username, + 10001 + ) + ) + ) } def loginFailureResponse(username: String, newToken: String) = { log.info("DB problem") - sendResponse(PacketCoding.CreateGamePacket(0, LoginRespMessage( - newToken, LoginError.unk1, StationError.AccountActive, - StationSubscriptionStatus.Active, 685276011, username, 10001 - ))) + sendResponse( + PacketCoding.CreateGamePacket( + 0, + LoginRespMessage( + newToken, + LoginError.unk1, + StationError.AccountActive, + StationSubscriptionStatus.Active, + 685276011, + username, + 10001 + ) + ) + ) } def loginAccountFailureResponse(username: String, newToken: String) = { log.info(s"Account $username inactive") - sendResponse(PacketCoding.CreateGamePacket(0, LoginRespMessage( - newToken, LoginError.BadUsernameOrPassword, StationError.AccountClosed, - StationSubscriptionStatus.Active, 685276011, username, 10001 - ))) + sendResponse( + PacketCoding.CreateGamePacket( + 0, + LoginRespMessage( + newToken, + LoginError.BadUsernameOrPassword, + StationError.AccountClosed, + StationSubscriptionStatus.Active, + 685276011, + username, + 10001 + ) + ) + ) } def generateToken() = { - val r = new scala.util.Random + val r = new scala.util.Random val sb = new StringBuilder for (_ <- 1 to 31) { sb.append(r.nextPrintableChar) @@ -371,29 +284,33 @@ class LoginSessionActor extends Actor with MDCContextAware { } def updateServerList() = { - val msg = VNLWorldStatusMessage("Welcome to PlanetSide! ", + val msg = VNLWorldStatusMessage( + "Welcome to PlanetSide! ", Vector( WorldInformation( - serverName, WorldStatus.Up, - WorldConfig.Get[ServerType.Value]("worldserver.ServerType"), Vector(WorldConnectionInfo(serverAddress)), PlanetSideEmpire.VS + serverName, + WorldStatus.Up, + Config.app.world.serverType, + Vector(WorldConnectionInfo(publicAddress)), + PlanetSideEmpire.VS ) ) ) sendResponse(PacketCoding.CreateGamePacket(0, msg)) } - def failWithError(error : String) = { + def failWithError(error: String) = { log.error(error) //sendResponse(PacketCoding.CreateControlPacket(ConnectionClose())) } - def sendResponse(cont : Any) = { + def sendResponse(cont: Any) = { log.trace("LOGIN SEND: " + cont) MDC("sessionId") = sessionId.toString rightRef !> cont } - def sendRawResponse(pkt : ByteVector) = { + def sendRawResponse(pkt: ByteVector) = { log.trace("LOGIN SEND RAW: " + pkt) MDC("sessionId") = sessionId.toString rightRef !> RawPacket(pkt) diff --git a/pslogin/src/main/scala/MDCPropagatingExecutionContext.scala b/pslogin/src/main/scala/MDCPropagatingExecutionContext.scala deleted file mode 100644 index ef44827a..00000000 --- a/pslogin/src/main/scala/MDCPropagatingExecutionContext.scala +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2017 PSForever -// Taken from http://code.hootsuite.com/logging-contextual-info-in-an-asynchronous-scala-application/ - -import org.slf4j.MDC - -import scala.concurrent.ExecutionContext - -trait MDCPropagatingExecutionContext extends ExecutionContext { - // name the self-type "self" so we can refer to it inside the nested class - self => - - override def prepare(): ExecutionContext = new ExecutionContext { - // Save the call-site MDC state - val context = MDC.getCopyOfContextMap - - def execute(r: Runnable): Unit = self.execute(new Runnable { - def run(): Unit = { - // Save the existing execution-site MDC state - val oldContext = MDC.getCopyOfContextMap - try { - // Set the call-site MDC state into the execution-site MDC - if (context != null ) - MDC.setContextMap(context) - else - MDC.clear() - - r.run() - } finally { - // Restore the existing execution-site MDC state - if (oldContext != null) - MDC.setContextMap(oldContext) - else - MDC.clear() - } - } - }) - - def reportFailure(t: Throwable): Unit = self.reportFailure(t) - } -} - -object MDCPropagatingExecutionContext { - object Implicits { - // Convenience wrapper around the Scala global ExecutionContext so you can just do: - // import MDCPropagatingExecutionContext.Implicits.global - implicit lazy val global = MDCPropagatingExecutionContextWrapper(ExecutionContext.Implicits.global) - } -} - -/** - * Wrapper around an existing ExecutionContext that makes it propagate MDC information. - */ -class MDCPropagatingExecutionContextWrapper(wrapped: ExecutionContext) - extends ExecutionContext with MDCPropagatingExecutionContext { - - override def execute(r: Runnable): Unit = wrapped.execute(r) - - override def reportFailure(t: Throwable): Unit = wrapped.reportFailure(t) -} - -object MDCPropagatingExecutionContextWrapper { - def apply(wrapped: ExecutionContext): MDCPropagatingExecutionContextWrapper = { - new MDCPropagatingExecutionContextWrapper(wrapped) - } -} \ No newline at end of file diff --git a/pslogin/src/main/scala/Maps.scala b/pslogin/src/main/scala/Maps.scala index 4de4e26a..801b67a2 100644 --- a/pslogin/src/main/scala/Maps.scala +++ b/pslogin/src/main/scala/Maps.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import net.psforever.objects.LocalProjectile import net.psforever.objects.ballistics.Projectile import net.psforever.objects.zones.ZoneMap @@ -54,11 +55,11 @@ object Maps { } } - def InitZoneMap(future : Future[ZoneMap]): Future[ZoneMap] = { + def InitZoneMap(future: Future[ZoneMap]): Future[ZoneMap] = { future onComplete { case Success(x) => Projectiles(x) case Failure(_) => throw new RuntimeException("Maps: failure when setting up map") //should not fail? } future } -} \ No newline at end of file +} diff --git a/pslogin/src/main/scala/PacketCodingActor.scala b/pslogin/src/main/scala/PacketCodingActor.scala index 42559447..9cd1e1c5 100644 --- a/pslogin/src/main/scala/PacketCodingActor.scala +++ b/pslogin/src/main/scala/PacketCodingActor.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import akka.actor.{Actor, ActorRef, Cancellable, MDCContextAware} import net.psforever.packet._ import scodec.Attempt.{Failure, Successful} @@ -35,32 +36,32 @@ import scala.concurrent.duration._ * It resets to 0 each time this `Actor` starts up and the client reflects this functionality. */ class PacketCodingActor extends Actor with MDCContextAware { - private var sessionId : Long = 0 - private var subslotOutbound : Int = 0 - private var subslotInbound : Int = 0 - private var leftRef : ActorRef = ActorRef.noSender - private var rightRef : ActorRef = ActorRef.noSender - private[this] val log = org.log4s.getLogger + private var sessionId: Long = 0 + private var subslotOutbound: Int = 0 + private var subslotInbound: Int = 0 + private var leftRef: ActorRef = ActorRef.noSender + private var rightRef: ActorRef = ActorRef.noSender + private[this] val log = org.log4s.getLogger /* Since the client can indicate missing packets when sending SlottedMetaPackets we should keep a history of them to resend to the client when requested with a RelatedA packet Since the subslot counter can wrap around, we need to use a LinkedHashMap to maintain the order packets are inserted, then we can drop older entries as required For example when a RelatedB packet arrives we can remove any entries to the left of the received ones without risking removing newer entries if the subslot counter wraps around back to 0 - */ - private var slottedPacketLog : mutable.LinkedHashMap[Int, ByteVector] = mutable.LinkedHashMap() + */ + private var slottedPacketLog: mutable.LinkedHashMap[Int, ByteVector] = mutable.LinkedHashMap() // Due to the fact the client can send `RelatedA` packets out of order, we need to keep a buffer of which subslots arrived correctly, order them // and then act accordingly to send the missing subslot packet after a specified timeout - private var relatedALog : ArrayBuffer[Int] = ArrayBuffer() - private var relatedABufferTimeout : Cancellable = Default.Cancellable + private var relatedALog: ArrayBuffer[Int] = ArrayBuffer() + private var relatedABufferTimeout: Cancellable = Default.Cancellable - def AddSlottedPacketToLog(subslot: Int, packet : ByteVector): Unit = { + def AddSlottedPacketToLog(subslot: Int, packet: ByteVector): Unit = { val log_limit = 500 // Number of SlottedMetaPackets to keep in history - if(slottedPacketLog.size > log_limit) { + if (slottedPacketLog.size > log_limit) { slottedPacketLog = slottedPacketLog.drop(slottedPacketLog.size - log_limit) } - slottedPacketLog{subslot} = packet + slottedPacketLog { subslot } = packet } override def postStop() = { @@ -70,16 +71,15 @@ class PacketCodingActor extends Actor with MDCContextAware { def receive = Initializing - def Initializing : Receive = { + def Initializing: Receive = { case HelloFriend(sharedSessionId, pipe) => import MDCContextAware.Implicits._ this.sessionId = sharedSessionId leftRef = sender() - if(pipe.hasNext) { + if (pipe.hasNext) { rightRef = pipe.next rightRef !> HelloFriend(sessionId, pipe) - } - else { + } else { rightRef = sender() } log.trace(s"Left sender ${leftRef.path.name}") @@ -90,7 +90,7 @@ class PacketCodingActor extends Actor with MDCContextAware { context.stop(self) } - def Established : Receive = { + def Established: Receive = { case PacketCodingActor.SubslotResend() => { log.trace(s"Subslot resend timeout reached, session: ${sessionId}") relatedABufferTimeout.cancel() @@ -99,22 +99,22 @@ class PacketCodingActor extends Actor with MDCContextAware { // If a non-contiguous range of RelatedA packets were received we may need to send multiple missing packets, thus split the array into contiguous ranges val sorted_log = relatedALog.sortBy(x => x) - val split_logs : ArrayBuffer[ArrayBuffer[Int]] = new ArrayBuffer[ArrayBuffer[Int]]() - var curr : ArrayBuffer[Int] = ArrayBuffer() - for(i <- 0 to sorted_log.size - 1) { - if(i == 0 || (sorted_log(i) != sorted_log(i-1)+1)) { + val split_logs: ArrayBuffer[ArrayBuffer[Int]] = new ArrayBuffer[ArrayBuffer[Int]]() + var curr: ArrayBuffer[Int] = ArrayBuffer() + for (i <- 0 to sorted_log.size - 1) { + if (i == 0 || (sorted_log(i) != sorted_log(i - 1) + 1)) { curr = new ArrayBuffer() split_logs.append(curr) } curr.append(sorted_log(i)) } - if(split_logs.size > 1) log.trace(s"Split successful subslots into ${split_logs.size} contiguous chunks") + if (split_logs.size > 1) log.trace(s"Split successful subslots into ${split_logs.size} contiguous chunks") for (range <- split_logs) { log.trace(s"Processing chunk ${range.mkString(" ")}") val first_accepted_subslot = range.min - val missing_subslot = first_accepted_subslot - 1 + val missing_subslot = first_accepted_subslot - 1 slottedPacketLog.get(missing_subslot) match { case Some(packet: ByteVector) => log.info(s"Resending packet with subslot: $missing_subslot to session: ${sessionId}") @@ -127,38 +127,35 @@ class PacketCodingActor extends Actor with MDCContextAware { relatedALog.clear() } case RawPacket(msg) => - if(sender == rightRef) { //from LSA, WSA, etc., to network - encode + if (sender == rightRef) { //from LSA, WSA, etc., to network - encode mtuLimit(msg) - } - else {//from network, to LSA, WSA, etc. - decode + } else { //from network, to LSA, WSA, etc. - decode UnmarshalInnerPacket(msg, "a packet") } //known elevated packet type case ctrl @ ControlPacket(_, packet) => - if(sender == rightRef) { //from LSA, WSA, to network - encode + if (sender == rightRef) { //from LSA, WSA, to network - encode PacketCoding.EncodePacket(packet) match { case Successful(data) => mtuLimit(data.toByteVector) case Failure(ex) => log.error(s"Failed to encode a ControlPacket: $ex") } - } - else { //deprecated; ControlPackets should not be coming from this direction + } else { //deprecated; ControlPackets should not be coming from this direction log.warn(s"DEPRECATED CONTROL PACKET SEND: $ctrl") MDC("sessionId") = sessionId.toString handlePacketContainer(ctrl) //sendResponseRight } //known elevated packet type case game @ GamePacket(_, _, packet) => - if(sender == rightRef) { //from LSA, WSA, etc., to network - encode + if (sender == rightRef) { //from LSA, WSA, etc., to network - encode PacketCoding.EncodePacket(packet) match { case Successful(data) => mtuLimit(data.toByteVector) case Failure(ex) => log.error(s"Failed to encode a GamePacket: $ex") } - } - else { //deprecated; GamePackets should not be coming from this direction + } else { //deprecated; GamePackets should not be coming from this direction log.warn(s"DEPRECATED GAME PACKET SEND: $game") MDC("sessionId") = sessionId.toString sendResponseRight(game) @@ -169,12 +166,11 @@ class PacketCodingActor extends Actor with MDCContextAware { handleBundlePacket(list) //etc case msg => - if(sender == rightRef) { + if (sender == rightRef) { log.trace(s"BASE CASE PACKET SEND, LEFT: $msg") MDC("sessionId") = sessionId.toString leftRef !> msg - } - else { + } else { log.trace(s"BASE CASE PACKET SEND, RIGHT: $msg") MDC("sessionId") = sessionId.toString rightRef !> msg @@ -186,8 +182,8 @@ class PacketCodingActor extends Actor with MDCContextAware { * Increment the `subslot` for the next time it is needed. * @return a `16u` number starting at 0 */ - def Subslot : Int = { - if(subslotOutbound == 65536) { //TODO what is the actual wrap number? + def Subslot: Int = { + if (subslotOutbound == 65536) { //TODO what is the actual wrap number? subslotOutbound = 0 subslotOutbound } else { @@ -203,11 +199,10 @@ class PacketCodingActor extends Actor with MDCContextAware { * Otherwise, send the data out like normal. * @param msg the encoded packet data */ - def mtuLimit(msg : ByteVector) : Unit = { - if(msg.length > PacketCodingActor.MTU_LIMIT_BYTES) { + def mtuLimit(msg: ByteVector): Unit = { + if (msg.length > PacketCodingActor.MTU_LIMIT_BYTES) { handleSplitPacket(PacketCoding.CreateControlPacket(HandleGamePacket(msg))) - } - else { + } else { sendResponseLeft(msg) } } @@ -216,7 +211,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * Transform a `ControlPacket` into `ByteVector` data for splitting. * @param cont the original `ControlPacket` */ - def handleSplitPacket(cont : ControlPacket) : Unit = { + def handleSplitPacket(cont: ControlPacket): Unit = { PacketCoding.getPacketDataForEncryption(cont) match { case Successful((_, data)) => handleSplitPacket(data) @@ -231,18 +226,20 @@ class PacketCodingActor extends Actor with MDCContextAware { * Send each chunk (towards the network) as it is converted. * @param data `ByteVector` data to be split */ - def handleSplitPacket(data : ByteVector) : Unit = { + def handleSplitPacket(data: ByteVector): Unit = { val lim = PacketCodingActor.MTU_LIMIT_BYTES - 4 //4 bytes is the base size of SlottedMetaPacket - data.grouped(lim).foreach(bvec => { - val subslot = Subslot - PacketCoding.EncodePacket(SlottedMetaPacket(4, subslot, bvec)) match { - case Successful(bdata) => - AddSlottedPacketToLog(subslot, bdata.toByteVector) - sendResponseLeft(bdata.toByteVector) - case f : Failure => - log.error(s"$f") - } - }) + data + .grouped(lim) + .foreach(bvec => { + val subslot = Subslot + PacketCoding.EncodePacket(SlottedMetaPacket(4, subslot, bvec)) match { + case Successful(bdata) => + AddSlottedPacketToLog(subslot, bdata.toByteVector) + sendResponseLeft(bdata.toByteVector) + case f: Failure => + log.error(s"$f") + } + }) } /** @@ -254,10 +251,10 @@ class PacketCodingActor extends Actor with MDCContextAware { * less by the base sizes of `MultiPacketEx` (2) and of `SlottedMetaPacket` (4). * @param bundle the packets to be bundled */ - def handleBundlePacket(bundle : List[PlanetSidePacket]) : Unit = { - val packets : List[ByteVector] = recursiveEncode(bundle.iterator) + def handleBundlePacket(bundle: List[PlanetSidePacket]): Unit = { + val packets: List[ByteVector] = recursiveEncode(bundle.iterator) recursiveFillPacketBuckets(packets.iterator, PacketCodingActor.MTU_LIMIT_BYTES - 6) - .foreach( list => { + .foreach(list => { handleBundlePacket(list.toVector) }) } @@ -270,17 +267,15 @@ class PacketCodingActor extends Actor with MDCContextAware { * Splitting should preserve `Subslot` ordering with the rest of the bundling. * @param vec a specific number of byte streams */ - def handleBundlePacket(vec : Vector[ByteVector]) : Unit = { - if(vec.size == 1) { + def handleBundlePacket(vec: Vector[ByteVector]): Unit = { + if (vec.size == 1) { val elem = vec.head - if(elem.length > PacketCodingActor.MTU_LIMIT_BYTES - 4) { + if (elem.length > PacketCodingActor.MTU_LIMIT_BYTES - 4) { handleSplitPacket(PacketCoding.CreateControlPacket(HandleGamePacket(elem))) - } - else { + } else { handleBundlePacket(elem) } - } - else { + } else { PacketCoding.EncodePacket(MultiPacketEx(vec)) match { case Successful(bdata) => handleBundlePacket(bdata.toByteVector) @@ -295,7 +290,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * Send it (towards the network) upon successful encoding. * @param data an encoded packet */ - def handleBundlePacket(data : ByteVector) : Unit = { + def handleBundlePacket(data: ByteVector): Unit = { val subslot = Subslot PacketCoding.EncodePacket(SlottedMetaPacket(0, subslot, data)) match { case Successful(bdata) => @@ -310,7 +305,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * Encoded sequence of data going towards the network. * @param cont the data */ - def sendResponseLeft(cont : ByteVector) : Unit = { + def sendResponseLeft(cont: ByteVector): Unit = { log.trace("PACKET SEND, LEFT: " + cont) MDC("sessionId") = sessionId.toString leftRef !> RawPacket(cont) @@ -321,7 +316,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * @param data the packet data * @param description an explanation of the input `data` */ - def UnmarshalInnerPacket(data : ByteVector, description : String) : Unit = { + def UnmarshalInnerPacket(data: ByteVector, description: String): Unit = { PacketCoding.unmarshalPayload(0, data) match { //TODO is it safe for this to always be 0? case Successful(packet) => handlePacketContainer(packet) @@ -337,9 +332,9 @@ class PacketCodingActor extends Actor with MDCContextAware { * All other container types are invalid. * @param container the container packet */ - def handlePacketContainer(container : PlanetSidePacketContainer) : Unit = { + def handlePacketContainer(container: PlanetSidePacketContainer): Unit = { container match { - case _ : GamePacket => + case _: GamePacket => sendResponseRight(container) case ControlPacket(_, ctrlPkt) => handleControlPacket(container, ctrlPkt) @@ -358,7 +353,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * @param container the original container packet * @param packet the packet that was extracted from the container */ - def handleControlPacket(container : PlanetSidePacketContainer, packet : PlanetSideControlPacket) = { + def handleControlPacket(container: PlanetSidePacketContainer, packet: PlanetSideControlPacket) = { packet match { case SlottedMetaPacket(slot, subslot, innerPacket) => subslotInbound = subslot @@ -379,17 +374,18 @@ class PacketCodingActor extends Actor with MDCContextAware { // (re)start the timeout period, if no more RelatedA packets are sent before the timeout period elapses the missing packet(s) will be resent import scala.concurrent.ExecutionContext.Implicits.global relatedABufferTimeout.cancel() - relatedABufferTimeout = context.system.scheduler.scheduleOnce(100 milliseconds, self, PacketCodingActor.SubslotResend()) + relatedABufferTimeout = + context.system.scheduler.scheduleOnce(100 milliseconds, self, PacketCodingActor.SubslotResend()) case RelatedB(slot, subslot) => log.trace(s"result $slot: subslot $subslot accepted, session: ${sessionId}") // The client has indicated it's received up to a certain subslot, that means we can purge the log of any subslots prior to and including the confirmed subslot // Find where this subslot is stored in the packet log (if at all) and drop anything to the left of it, including itself - if(relatedABufferTimeout.isCancelled || relatedABufferTimeout == Default.Cancellable) { + if (relatedABufferTimeout.isCancelled || relatedABufferTimeout == Default.Cancellable) { val pos = slottedPacketLog.keySet.toArray.indexOf(subslot) - if(pos != -1) { - slottedPacketLog = slottedPacketLog.drop(pos+1) + if (pos != -1) { + slottedPacketLog = slottedPacketLog.drop(pos + 1) log.trace(s"Subslots left in log: ${slottedPacketLog.keySet.toString()}") } } @@ -402,7 +398,7 @@ class PacketCodingActor extends Actor with MDCContextAware { * Decoded packet going towards the simulation. * @param cont the packet */ - def sendResponseRight(cont : PlanetSidePacketContainer) : Unit = { + def sendResponseRight(cont: PlanetSidePacketContainer): Unit = { log.trace("PACKET SEND, RIGHT: " + cont) MDC("sessionId") = sessionId.toString rightRef !> cont @@ -417,14 +413,16 @@ class PacketCodingActor extends Actor with MDCContextAware { * defaults to an empty list * @return a series of byte stream data produced through successful packet encoding */ - @tailrec private def recursiveEncode(iter : Iterator[PlanetSidePacket], out : List[ByteVector] = List()) : List[ByteVector] = { - if(!iter.hasNext) { + @tailrec private def recursiveEncode( + iter: Iterator[PlanetSidePacket], + out: List[ByteVector] = List() + ): List[ByteVector] = { + if (!iter.hasNext) { out - } - else { + } else { import net.psforever.packet.{PlanetSideControlPacket, PlanetSideGamePacket} iter.next match { - case msg : PlanetSideGamePacket => + case msg: PlanetSideGamePacket => PacketCoding.EncodePacket(msg) match { case Successful(bytecode) => recursiveEncode(iter, out :+ bytecode.toByteVector) @@ -432,7 +430,7 @@ class PacketCodingActor extends Actor with MDCContextAware { log.warn(s"game packet $msg, part of a bundle, did not encode - $e") recursiveEncode(iter, out) } - case msg : PlanetSideControlPacket => + case msg: PlanetSideControlPacket => PacketCoding.EncodePacket(msg) match { case Successful(bytecode) => recursiveEncode(iter, out :+ bytecode.toByteVector) @@ -455,18 +453,23 @@ class PacketCodingActor extends Actor with MDCContextAware { * @param out updated series of byte stream data stored in buckets * @return a series of byte stream data stored in buckets */ - @tailrec private def recursiveFillPacketBuckets(iter : Iterator[ByteVector], lim : Int, curr : Int = 0, out : List[mutable.ListBuffer[ByteVector]] = List(mutable.ListBuffer())) : List[mutable.ListBuffer[ByteVector]] = { - if(!iter.hasNext) { + @tailrec private def recursiveFillPacketBuckets( + iter: Iterator[ByteVector], + lim: Int, + curr: Int = 0, + out: List[mutable.ListBuffer[ByteVector]] = List(mutable.ListBuffer()) + ): List[mutable.ListBuffer[ByteVector]] = { + if (!iter.hasNext) { out - } - else { + } else { val data = iter.next - var len = data.length.toInt - len = len + (if(len < 256) { 1 } else if(len < 65536) { 2 } else { 4 }) //space for the prefixed length byte(s) - if(curr + len > lim && out.last.nonEmpty) { //bucket must have something in it before swapping + var len = data.length.toInt + len = len + (if (len < 256) { 1 } + else if (len < 65536) { 2 } + else { 4 }) //space for the prefixed length byte(s) + if (curr + len > lim && out.last.nonEmpty) { //bucket must have something in it before swapping recursiveFillPacketBuckets(iter, lim, len, out :+ mutable.ListBuffer(data)) - } - else { + } else { out.last += data recursiveFillPacketBuckets(iter, lim, curr + len, out) } @@ -475,7 +478,7 @@ class PacketCodingActor extends Actor with MDCContextAware { } object PacketCodingActor { - final val MTU_LIMIT_BYTES : Int = 467 + final val MTU_LIMIT_BYTES: Int = 467 private final case class SubslotResend() } diff --git a/pslogin/src/main/scala/PsLogin.scala b/pslogin/src/main/scala/PsLogin.scala index 075b7969..d59e3e2e 100644 --- a/pslogin/src/main/scala/PsLogin.scala +++ b/pslogin/src/main/scala/PsLogin.scala @@ -1,23 +1,17 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import java.net.InetAddress -import java.io.File import java.util.Locale -import akka.actor.{ActorRef, ActorSystem, Props} +import akka.actor.{ActorSystem, Props} import akka.routing.RandomPool import ch.qos.logback.classic.LoggerContext import ch.qos.logback.classic.joran.JoranConfigurator -import ch.qos.logback.core.joran.spi.JoranException -import ch.qos.logback.core.status._ -import ch.qos.logback.core.util.StatusPrinter -import com.typesafe.config.ConfigFactory -import net.psforever.config.{Invalid, Valid} import net.psforever.crypto.CryptoInterface import net.psforever.objects.Default import net.psforever.objects.zones._ import net.psforever.objects.guid.TaskResolver -import net.psforever.psadmin.PsAdminActor -import net.psforever.WorldConfig +import net.psforever.pslogin.psadmin.PsAdminActor import org.slf4j import org.fusesource.jansi.Ansi._ import org.fusesource.jansi.Ansi.Color._ @@ -26,24 +20,16 @@ import services.account.{AccountIntermediaryService, AccountPersistenceService} import services.chat.ChatService import services.galaxy.GalaxyService import services.teamwork.SquadService - -import scala.collection.JavaConverters._ -import scala.concurrent.Await -import scala.concurrent.duration._ import kamon.Kamon +import org.apache.commons.io.FileUtils import services.properties.PropertyOverrideManager +import org.flywaydb.core.Flyway +import java.nio.file.Paths object PsLogin { private val logger = org.log4s.getLogger - var args : Array[String] = Array() - implicit var system : ActorSystem = null - var loginRouter : Props = Props.empty - var worldRouter : Props = Props.empty - var loginListener : ActorRef = ActorRef.noSender - var worldListener : ActorRef = ActorRef.noSender - - def banner() : Unit = { + def printBanner(): Unit = { println(ansi().fgBright(BLUE).a(""" ___ ________""")) println(ansi().fgBright(BLUE).a(""" / _ \/ __/ __/__ _______ _ _____ ____""")) println(ansi().fgBright(MAGENTA).a(""" / ___/\ \/ _// _ \/ __/ -_) |/ / -_) __/""")) @@ -53,134 +39,48 @@ object PsLogin { println } - /** Grabs the most essential system information and returns it as a preformatted string */ - def systemInformation : String = { - val procNum = Runtime.getRuntime.availableProcessors(); - val processorString = if(procNum == 1) { - "Detected 1 available logical processor" - } - else { - s"Detected $procNum available logical processors" - } - - val freeMemory = Runtime.getRuntime.freeMemory() / 1048576; - // how much memory has been allocated out of the maximum that can be - val totalMemory = Runtime.getRuntime.totalMemory() / 1048576; - // the maximum amount of memory that the JVM can hold before OOM errors - val maxMemory = Runtime.getRuntime.maxMemory() / 1048576; + def systemInformation: String = { + val processors = Runtime.getRuntime.availableProcessors() + val maxMemory = FileUtils.byteCountToDisplaySize(Runtime.getRuntime.maxMemory()) s"""|~~~ System Information ~~~ |SYS: ${System.getProperty("os.name")} (v. ${System.getProperty("os.version")}, ${System.getProperty("os.arch")}) - |CPU: $processorString - |MEM: ${maxMemory}MB available to the JVM (tune with -Xmx flag) - |JVM: ${System.getProperty("java.vm.name")} (build ${System.getProperty("java.version")}), ${System.getProperty("java.vendor")} - ${System.getProperty("java.vendor.url")} + |CPU: Detected $processors available logical processor${if (processors != 1) "s" else ""} + |MEM: ${maxMemory} available to the JVM (tune with -Xmx flag) + |JVM: ${System.getProperty("java.vm.name")} (build ${System.getProperty("java.version")}), ${System.getProperty( + "java.vendor" + )} - ${System.getProperty("java.vendor.url")} """.stripMargin } - /** Used to enumerate all of the Java properties. Used in testing only */ - def enumerateAllProperties() : Unit = { - val props = System.getProperties - val enums = props.propertyNames() + def main(args: Array[String]): Unit = { + Locale.setDefault(Locale.US); // to have floats with dots, not comma - while(enums.hasMoreElements) { - val key = enums.nextElement.toString - System.out.println(key + " : " + props.getProperty(key)) - } - } - - /** - * Checks the current logger context - * @param context SLF4J logger context - * @return Boolean return true if context has errors - */ - def loggerHasErrors(context : LoggerContext) = { - val statusUtil = new StatusUtil(context) - - statusUtil.getHighestLevel(0) >= Status.WARN - } - - /** Loads the logging configuration and starts logging */ - def initializeLogging(logfile : String) : Unit = { - // assume SLF4J is bound to logback in the current environment - val lc = slf4j.LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext] - - try { - val configurator = new JoranConfigurator() - configurator.setContext(lc) - - // reset any loaded settings - lc.reset() - configurator.doConfigure(logfile) - } - catch { - case _ : JoranException => ; - } - - if(loggerHasErrors(lc)) { - println("Loading log settings failed") - StatusPrinter.printInCaseOfErrorsOrWarnings(lc) - sys.exit(1) - } - } - - def loadConfig(configDirectory : String) = { - val worldConfigFile = configDirectory + File.separator + "worldserver.ini" - // For fallback when no user-specific config file has been created - val worldDefaultConfigFile = configDirectory + File.separator + "worldserver.ini.dist" - - val worldConfigToLoad = if ((new File(worldConfigFile)).exists()) { - worldConfigFile - } else if ((new File(worldDefaultConfigFile)).exists()) { - println("WARNING: loading the default worldserver.ini.dist config file") - println("WARNING: Please create a worldserver.ini file to override server defaults") - - worldDefaultConfigFile - } else { - println("FATAL: unable to load any worldserver.ini file") - sys.exit(1) - } - - WorldConfig.Load(worldConfigToLoad) match { - case Valid => - println("Loaded world config from " + worldConfigToLoad) - case i : Invalid => - println("FATAL: Error loading config from " + worldConfigToLoad) - println(WorldConfig.FormatErrors(i).mkString("\n")) - sys.exit(1) - } - } - - def parseArgs(args : Array[String]) : Unit = { - if(args.length == 1) { - LoginConfig.serverIpAddress = InetAddress.getByName(args{0}) - } - else { - LoginConfig.serverIpAddress = InetAddress.getLocalHost - } - } - - def run() : Unit = { - // Early start up - banner() + printBanner() println(systemInformation) - // Config directory - // Assume a default of the current directory - var configDirectory = "config" + val loggerConfigPath = Paths.get(Config.directory, "logback.xml").toAbsolutePath().toString() + val loggerContext = slf4j.LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext] + val configurator = new JoranConfigurator() + configurator.setContext(loggerContext) + loggerContext.reset() + configurator.doConfigure(loggerConfigPath) - // This is defined when we are running from SBT pack - if(System.getProperty("prog.home") != null) { - configDirectory = System.getProperty("prog.home") + File.separator + "config" + Config.result match { + case Left(failures) => + logger.error("Loading config failed") + failures.toList.foreach { failure => + logger.error(failure.toString) + } + sys.exit(1) + case Right(_) => } - parseArgs(this.args) - - val loggingConfigFile = configDirectory + File.separator + "logback.xml" - - loadConfig(configDirectory) - - println(s"Initializing logging from $loggingConfigFile") - initializeLogging(loggingConfigFile) + val bindAddress: InetAddress = + args.lift(0) match { + case Some(address) => InetAddress.getByName(address) // address from first argument + case None => InetAddress.getByName(Config.app.bind) // address from config + } /** Initialize the PSCrypto native library * @@ -189,46 +89,41 @@ object PsLogin { * cryptographic primitives (MD5MAC). See https://github.com/psforever/PSCrypto for more information. */ try { - logger.info("Initializing PSCrypto") CryptoInterface.initialize() - logger.info("PSCrypto initialized") - } - catch { - case e : UnsatisfiedLinkError => + } catch { + case e: UnsatisfiedLinkError => logger.error("Unable to initialize " + CryptoInterface.libName) - logger.error(e)("This means that your PSCrypto version is out of date. Get the latest version from the README" + - " https://github.com/psforever/PSF-LoginServer#downloading-pscrypto") + logger.error(e)( + "This means that your PSCrypto version is out of date. Get the latest version from the README" + + " https://github.com/psforever/PSF-LoginServer#downloading-pscrypto" + ) sys.exit(1) - case e : IllegalArgumentException => + case e: IllegalArgumentException => logger.error("Unable to initialize " + CryptoInterface.libName) - logger.error(e)("This means that your PSCrypto version is out of date. Get the latest version from the README" + - " https://github.com/psforever/PSF-LoginServer#downloading-pscrypto") + logger.error(e)( + "This means that your PSCrypto version is out of date. Get the latest version from the README" + + " https://github.com/psforever/PSF-LoginServer#downloading-pscrypto" + ) sys.exit(1) } - logger.info("Testing database connection") - Database.testConnection match { - case scala.util.Failure(e) => - logger.error("Unable to connect to the database") - sys.exit(1) - case _ => - } + val flyway = Flyway + .configure() + .dataSource(Config.app.database.toJdbc, Config.app.database.username, Config.app.database.password) + .load(); + flyway.migrate(); - WorldConfig.Get[Boolean]("kamon.Active") match { + Config.app.kamon.enable match { case true => logger.info("Starting Kamon") - Kamon.init() case _ => ; } - logger.info("Starting actor subsystems") - /** Start up the main actor system. This "system" is the home for all actors running on this server */ - system = ActorSystem("PsLogin") + implicit val system = ActorSystem("PsLogin") Default(system) - logger.info("Starting actor pipelines") /** Create pipelines for the login and world servers * * The first node in the pipe is an Actor that handles the crypto for protecting packets. @@ -249,17 +144,13 @@ object PsLogin { SessionPipeline("world-session-", Props[WorldSessionActor]) ) - val loginServerPort = WorldConfig.Get[Int]("loginserver.ListeningPort") - val worldServerPort = WorldConfig.Get[Int]("worldserver.ListeningPort") - val psAdminPort = WorldConfig.Get[Int]("psadmin.ListeningPort") - - val netSim : Option[NetworkSimulatorParameters] = WorldConfig.Get[Boolean]("developer.NetSim.Active") match { + val netSim: Option[NetworkSimulatorParameters] = Config.app.developer.netSim.enable match { case true => val params = NetworkSimulatorParameters( - WorldConfig.Get[Float]("developer.NetSim.Loss"), - WorldConfig.Get[Duration]("developer.NetSim.Delay").toMillis, - WorldConfig.Get[Float]("developer.NetSim.ReorderChance"), - WorldConfig.Get[Duration]("developer.NetSim.ReorderTime").toMillis + Config.app.developer.netSim.loss, + Config.app.developer.netSim.delay.toMillis, + Config.app.developer.netSim.reorderChance, + Config.app.developer.netSim.reorderTime.toMillis ) logger.warn("NetSim is active") logger.warn(params.toString) @@ -267,30 +158,44 @@ object PsLogin { case false => None } - logger.info("Creating continents") - val continentList = createContinents() + val continents = Zones.zones.values ++ Seq(Zone.Nowhere) - logger.info("Initializing ServiceManager") val serviceManager = ServiceManager.boot serviceManager ! ServiceManager.Register(Props[AccountIntermediaryService], "accountIntermediary") serviceManager ! ServiceManager.Register(RandomPool(150).props(Props[TaskResolver]), "taskResolver") serviceManager ! ServiceManager.Register(Props[ChatService], "chat") serviceManager ! ServiceManager.Register(Props[GalaxyService], "galaxy") serviceManager ! ServiceManager.Register(Props[SquadService], "squad") - serviceManager ! ServiceManager.Register(Props(classOf[InterstellarCluster], continentList), "cluster") + serviceManager ! ServiceManager.Register(Props(classOf[InterstellarCluster], continents), "cluster") serviceManager ! ServiceManager.Register(Props[AccountPersistenceService], "accountPersistence") serviceManager ! ServiceManager.Register(Props[PropertyOverrideManager], "propertyOverrideManager") - logger.info("Initializing loginRouter & worldRouter") - /** Create two actors for handling the login and world server endpoints */ - loginRouter = Props(new SessionRouter("Login", loginTemplate)) - worldRouter = Props(new SessionRouter("World", worldTemplate)) - loginListener = system.actorOf(Props(new UdpListener(loginRouter, "login-session-router", LoginConfig.serverIpAddress, loginServerPort, netSim)), "login-udp-endpoint") - worldListener = system.actorOf(Props(new UdpListener(worldRouter, "world-session-router", LoginConfig.serverIpAddress, worldServerPort, netSim)), "world-udp-endpoint") + val loginRouter = Props(new SessionRouter("Login", loginTemplate)) + val worldRouter = Props(new SessionRouter("World", worldTemplate)) + val loginListener = system.actorOf( + Props(new UdpListener(loginRouter, "login-session-router", bindAddress, Config.app.login.port, netSim)), + "login-udp-endpoint" + ) + val worldListener = system.actorOf( + Props(new UdpListener(worldRouter, "world-session-router", bindAddress, Config.app.world.port, netSim)), + "world-udp-endpoint" + ) - val adminListener = system.actorOf(Props(new TcpListener(classOf[PsAdminActor], "psadmin-client-", InetAddress.getLoopbackAddress, psAdminPort)), "psadmin-tcp-endpoint") + val adminListener = system.actorOf( + Props( + new TcpListener( + classOf[PsAdminActor], + "psadmin-client-", + InetAddress.getByName(Config.app.admin.bind), + Config.app.admin.port + ) + ), + "psadmin-tcp-endpoint" + ) - logger.info(s"NOTE: Set client.ini to point to ${LoginConfig.serverIpAddress.getHostAddress}:$loginServerPort") + logger.info( + s"Login server is running on ${InetAddress.getByName(Config.app.public).getHostAddress}:${Config.app.login.port}" + ) // Add our shutdown hook (this works for Control+C as well, but not in Cygwin) sys addShutdownHook { @@ -298,23 +203,4 @@ object PsLogin { logger.info("Login server now shutting down...") } } - - def createContinents() : List[Zone] = { - import Zones._ - List( - Zone.Nowhere, - z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, - home1, tzshtr, tzdrtr, tzcotr, - home2, tzshnc, tzdrnc, tzconc, - home3, tzshvs, tzdrvs, tzcovs, - c1, c2, c3, c4, c5, c6, - i1, i2, i3, i4 - ) - } - - def main(args : Array[String]) : Unit = { - Locale.setDefault(Locale.US); // to have floats with dots, not comma... - this.args = args - run() - } } diff --git a/pslogin/src/main/scala/Session.scala b/pslogin/src/main/scala/Session.scala index b0fbd643..dd13c9a7 100644 --- a/pslogin/src/main/scala/Session.scala +++ b/pslogin/src/main/scala/Session.scala @@ -1,9 +1,8 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin import java.net.InetSocketAddress import akka.actor._ -import org.log4s.MDC import scodec.bits._ import akka.actor.{ActorContext, ActorRef, PoisonPill} @@ -11,23 +10,26 @@ import com.github.nscala_time.time.Imports._ import MDCContextAware.Implicits._ sealed trait SessionState -final case class New() extends SessionState -final case class Related() extends SessionState +final case class New() extends SessionState +final case class Related() extends SessionState final case class Handshaking() extends SessionState final case class Established() extends SessionState -final case class Closing() extends SessionState -final case class Closed() extends SessionState +final case class Closing() extends SessionState +final case class Closed() extends SessionState +class Session( + val sessionId: Long, + val socketAddress: InetSocketAddress, + returnActor: ActorRef, + sessionPipeline: List[SessionPipeline] +)( + implicit val context: ActorContext, + implicit val self: ActorRef +) { -class Session(val sessionId : Long, - val socketAddress : InetSocketAddress, - returnActor : ActorRef, - sessionPipeline : List[SessionPipeline]) - (implicit val context: ActorContext, implicit val self : ActorRef) { - - var state : SessionState = New() - val sessionCreatedTime : DateTime = DateTime.now - var sessionEndedTime : DateTime = DateTime.now + var state: SessionState = New() + val sessionCreatedTime: DateTime = DateTime.now + var sessionEndedTime: DateTime = DateTime.now val pipeline = sessionPipeline.map { actor => val a = context.actorOf(actor.props, actor.nameTemplate + sessionId.toString) @@ -36,25 +38,25 @@ class Session(val sessionId : Long, } val pipelineIter = pipeline.iterator - if(pipelineIter.hasNext) { + if (pipelineIter.hasNext) { pipelineIter.next ! HelloFriend(sessionId, pipelineIter) } // statistics - var bytesSent : Long = 0 - var bytesReceived : Long = 0 - var inboundPackets : Long = 0 - var outboundPackets : Long = 0 + var bytesSent: Long = 0 + var bytesReceived: Long = 0 + var inboundPackets: Long = 0 + var outboundPackets: Long = 0 - var lastInboundEvent : Long = System.nanoTime() - var lastOutboundEvent : Long = System.nanoTime() + var lastInboundEvent: Long = System.nanoTime() + var lastOutboundEvent: Long = System.nanoTime() - var inboundPacketRate : Double = 0.0 - var outboundPacketRate : Double = 0.0 - var inboundBytesPerSecond : Double = 0.0 - var outboundBytesPerSecond : Double = 0.0 + var inboundPacketRate: Double = 0.0 + var outboundPacketRate: Double = 0.0 + var inboundBytesPerSecond: Double = 0.0 + var outboundBytesPerSecond: Double = 0.0 - def receive(packet : RawPacket) : Unit = { + def receive(packet: RawPacket): Unit = { bytesReceived += packet.data.size inboundPackets += 1 lastInboundEvent = System.nanoTime() @@ -62,7 +64,7 @@ class Session(val sessionId : Long, pipeline.head !> packet } - def send(packet : ByteVector) : Unit = { + def send(packet: ByteVector): Unit = { bytesSent += packet.size outboundPackets += 1 lastOutboundEvent = System.nanoTime() @@ -70,7 +72,7 @@ class Session(val sessionId : Long, returnActor ! SendPacket(packet, socketAddress) } - def dropSession(graceful : Boolean) = { + def dropSession(graceful: Boolean) = { pipeline.foreach(context.unwatch) pipeline.foreach(_ ! PoisonPill) @@ -80,25 +82,24 @@ class Session(val sessionId : Long, def getState = state - def setState(newState : SessionState) : Unit = { + def setState(newState: SessionState): Unit = { state = newState } - def getPipeline : List[ActorRef] = pipeline + def getPipeline: List[ActorRef] = pipeline def getTotalBytes = { bytesSent + bytesReceived } def timeSinceLastInboundEvent = { - (System.nanoTime() - lastInboundEvent)/1000000 + (System.nanoTime() - lastInboundEvent) / 1000000 } def timeSinceLastOutboundEvent = { - (System.nanoTime() - lastOutboundEvent)/1000000 + (System.nanoTime() - lastOutboundEvent) / 1000000 } - - override def toString : String = { + override def toString: String = { s"Session($sessionId, $getTotalBytes)" } } diff --git a/pslogin/src/main/scala/SessionRouter.scala b/pslogin/src/main/scala/SessionRouter.scala index f911e31d..b6261aeb 100644 --- a/pslogin/src/main/scala/SessionRouter.scala +++ b/pslogin/src/main/scala/SessionRouter.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import java.net.InetSocketAddress import akka.actor._ @@ -9,7 +10,6 @@ import scala.collection.mutable import akka.actor.SupervisorStrategy.Stop import net.psforever.packet.PacketCoding import net.psforever.packet.control.ConnectionClose -import net.psforever.WorldConfig import services.ServiceManager import services.ServiceManager.Lookup import services.account.{IPAddress, StoreIPAddress} @@ -17,12 +17,12 @@ import services.account.{IPAddress, StoreIPAddress} import scala.concurrent.duration._ sealed trait SessionRouterAPI -final case class RawPacket(data : ByteVector) extends SessionRouterAPI -final case class ResponsePacket(data : ByteVector) extends SessionRouterAPI -final case class DropSession(id : Long, reason : String) extends SessionRouterAPI -final case class SessionReaper() extends SessionRouterAPI +final case class RawPacket(data: ByteVector) extends SessionRouterAPI +final case class ResponsePacket(data: ByteVector) extends SessionRouterAPI +final case class DropSession(id: Long, reason: String) extends SessionRouterAPI +final case class SessionReaper() extends SessionRouterAPI -case class SessionPipeline(nameTemplate : String, props : Props) +case class SessionPipeline(nameTemplate: String, props: Props) /** * Login sessions are divided between two actors. The crypto session actor transparently handles all of the cryptographic @@ -38,20 +38,20 @@ case class SessionPipeline(nameTemplate : String, props : Props) * | write() | | encrypt | | response | * +--------------+ +-----------+ +-----------------+ */ -class SessionRouter(role : String, pipeline : List[SessionPipeline]) extends Actor with MDCContextAware { +class SessionRouter(role: String, pipeline: List[SessionPipeline]) extends Actor with MDCContextAware { private[this] val log = org.log4s.getLogger(self.path.name) import scala.concurrent.ExecutionContext.Implicits.global val sessionReaper = context.system.scheduler.scheduleWithFixedDelay(10 seconds, 5 seconds, self, SessionReaper()) - val idBySocket = mutable.Map[InetSocketAddress, Long]() - val sessionById = mutable.Map[Long, Session]() - val sessionByActor = mutable.Map[ActorRef, Session]() - val closePacket = PacketCoding.EncodePacket(ConnectionClose()).require.bytes - var accountIntermediary : ActorRef = ActorRef.noSender + val idBySocket = mutable.Map[InetSocketAddress, Long]() + val sessionById = mutable.Map[Long, Session]() + val sessionByActor = mutable.Map[ActorRef, Session]() + val closePacket = PacketCoding.EncodePacket(ConnectionClose()).require.bytes + var accountIntermediary: ActorRef = ActorRef.noSender - var sessionId = 0L // this is a connection session, not an actual logged in session ID - var inputRef : ActorRef = ActorRef.noSender + var sessionId = 0L // this is a connection session, not an actual logged in session ID + var inputRef: ActorRef = ActorRef.noSender override def supervisorStrategy = OneForOneStrategy() { case _ => Stop } @@ -61,7 +61,7 @@ class SessionRouter(role : String, pipeline : List[SessionPipeline]) extends Act def receive = initializing - def initializing : Receive = { + def initializing: Receive = { case Hello() => inputRef = sender() ServiceManager.serviceManager ! Lookup("accountIntermediary") @@ -78,32 +78,31 @@ class SessionRouter(role : String, pipeline : List[SessionPipeline]) extends Act sessionReaper.cancel() } - def started : Receive = { - case _ @ ReceivedPacket(msg, from) => - var session : Session = null + def started: Receive = { + case _ @ReceivedPacket(msg, from) => + var session: Session = null - if(!idBySocket.contains(from)) { + if (!idBySocket.contains(from)) { session = createNewSession(from) - } - else { - val id = idBySocket{from} - session = sessionById{id} + } else { + val id = idBySocket { from } + session = sessionById { id } } - if(session.state != Closed()) { + if (session.state != Closed()) { MDC("sessionId") = session.sessionId.toString - log.trace(s"RECV: $msg -> ${session.getPipeline.head.path.name}") - session.receive(RawPacket(msg)) + log.trace(s"RECV: $msg -> ${session.getPipeline.head.path.name}") + session.receive(RawPacket(msg)) MDC.clear() } case ResponsePacket(msg) => val session = sessionByActor.get(sender()) - if(session.isDefined) { - if(session.get.state != Closed()) { + if (session.isDefined) { + if (session.get.state != Closed()) { MDC("sessionId") = session.get.sessionId.toString - log.trace(s"SEND: $msg -> ${inputRef.path.name}") - session.get.send(msg) + log.trace(s"SEND: $msg -> ${inputRef.path.name}") + session.get.send(msg) MDC.clear() } } else { @@ -112,35 +111,35 @@ class SessionRouter(role : String, pipeline : List[SessionPipeline]) extends Act case DropSession(id, reason) => val session = sessionById.get(id) - if(session.isDefined) { + if (session.isDefined) { removeSessionById(id, reason, graceful = true) } else { log.error(s"Requested to drop non-existent session ID=$id from ${sender()}") } case SessionReaper() => - val inboundGrace = WorldConfig.Get[Duration]("network.Session.InboundGraceTime").toMillis - val outboundGrace = WorldConfig.Get[Duration]("network.Session.OutboundGraceTime").toMillis + val inboundGrace = Config.app.network.session.inboundGraceTime.toMillis + val outboundGrace = Config.app.network.session.outboundGraceTime.toMillis - sessionById.foreach { case (id, session) => - log.trace(session.toString) - if(session.getState == Closed()) { - // clear mappings - session.getPipeline.foreach(sessionByActor remove) - sessionById.remove(id) - idBySocket.remove(session.socketAddress) - log.debug(s"Reaped session ID=$id") - } else if(session.timeSinceLastInboundEvent > inboundGrace) { - removeSessionById(id, "session timed out (inbound)", graceful = false) - } else if(session.timeSinceLastOutboundEvent > outboundGrace) { - removeSessionById(id, "session timed out (outbound)", graceful = true) // tell client to STFU - } + sessionById.foreach { + case (id, session) => + log.trace(session.toString) + if (session.getState == Closed()) { + // clear mappings + session.getPipeline.foreach(sessionByActor remove) + sessionById.remove(id) + idBySocket.remove(session.socketAddress) + log.debug(s"Reaped session ID=$id") + } else if (session.timeSinceLastInboundEvent > inboundGrace) { + removeSessionById(id, "session timed out (inbound)", graceful = false) + } else if (session.timeSinceLastOutboundEvent > outboundGrace) { + removeSessionById(id, "session timed out (outbound)", graceful = true) // tell client to STFU + } } case Terminated(actor) => val terminatedSession = sessionByActor.get(actor) - if(terminatedSession.isDefined) { - removeSessionById(terminatedSession.get.sessionId, s"${actor.path.name} died", - graceful = true) + if (terminatedSession.isDefined) { + removeSessionById(terminatedSession.get.sessionId, s"${actor.path.name} died", graceful = true) } else { log.error("Received an invalid actor Termination from " + actor.path.name) } @@ -148,37 +147,37 @@ class SessionRouter(role : String, pipeline : List[SessionPipeline]) extends Act log.error(s"Unknown message $default from " + sender().path) } - def createNewSession(address : InetSocketAddress) = { - val id = newSessionId + def createNewSession(address: InetSocketAddress) = { + val id = newSessionId val session = new Session(id, address, inputRef, pipeline) // establish mappings for easy lookup - idBySocket{address} = id - sessionById{id} = session + idBySocket { address } = id + sessionById { id } = session session.getPipeline.foreach { actor => - sessionByActor{actor} = session + sessionByActor { actor } = session } log.info(s"New session ID=$id from " + address.toString) - if(role == "Login") { - accountIntermediary ! StoreIPAddress(id, new IPAddress(address)) + if (role == "Login") { + accountIntermediary ! StoreIPAddress(id, new IPAddress(address)) } session } - def removeSessionById(id : Long, reason : String, graceful : Boolean) : Unit = { + def removeSessionById(id: Long, reason: String, graceful: Boolean): Unit = { val sessionOption = sessionById.get(id) - if(sessionOption.isEmpty) + if (sessionOption.isEmpty) return - val session : Session = sessionOption.get + val session: Session = sessionOption.get - if(graceful) { - for(_ <- 0 to 5) { + if (graceful) { + for (_ <- 0 to 5) { session.send(closePacket) } } diff --git a/pslogin/src/main/scala/TcpListener.scala b/pslogin/src/main/scala/TcpListener.scala index 39280caf..f221071b 100644 --- a/pslogin/src/main/scala/TcpListener.scala +++ b/pslogin/src/main/scala/TcpListener.scala @@ -1,31 +1,28 @@ -// Copyright (c) 2020 PSForever +package net.psforever.pslogin + import java.net.{InetAddress, InetSocketAddress} import akka.actor.SupervisorStrategy.Stop -import akka.actor.{Actor, ActorRef, OneForOneStrategy, Props, Terminated} +import akka.actor.{Actor, ActorRef, OneForOneStrategy, Props} import akka.io._ -import scodec.bits._ -import scodec.interop.akka._ -import akka.util.ByteString -class TcpListener[T <: Actor](actorClass : Class[T], - nextActorName : String, - listenAddress : InetAddress, - port : Int) extends Actor { +class TcpListener[T <: Actor](actorClass: Class[T], nextActorName: String, listenAddress: InetAddress, port: Int) + extends Actor { private val log = org.log4s.getLogger(self.path.name) - override def supervisorStrategy = OneForOneStrategy() { - case _ => Stop - } + override def supervisorStrategy = + OneForOneStrategy() { + case _ => Stop + } import context.system IO(Tcp) ! Tcp.Bind(self, new InetSocketAddress(listenAddress, port)) - var sessionId = 0L - var bytesRecevied = 0L - var bytesSent = 0L - var nextActor : ActorRef = ActorRef.noSender + var sessionId = 0L + var bytesRecevied = 0L + var bytesSent = 0L + var nextActor: ActorRef = ActorRef.noSender def receive = { case Tcp.Bound(local) => @@ -42,12 +39,12 @@ class TcpListener[T <: Actor](actorClass : Class[T], def ready(socket: ActorRef): Receive = { case Tcp.Connected(remote, local) => val connection = sender() - val session = sessionId - val handler = context.actorOf(Props(actorClass, remote, connection), nextActorName + session) + val session = sessionId + val handler = context.actorOf(Props(actorClass, remote, connection), nextActorName + session) connection ! Tcp.Register(handler) sessionId += 1 case Tcp.Unbind => socket ! Tcp.Unbind case Tcp.Unbound => context.stop(self) - case default => log.error(s"Unhandled message: $default") + case default => log.error(s"Unhandled message: $default") } } diff --git a/pslogin/src/main/scala/UdpListener.scala b/pslogin/src/main/scala/UdpListener.scala index 73a145e3..dc281810 100644 --- a/pslogin/src/main/scala/UdpListener.scala +++ b/pslogin/src/main/scala/UdpListener.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import java.net.{InetAddress, InetSocketAddress} import akka.actor.SupervisorStrategy.Stop @@ -6,28 +7,30 @@ import akka.actor.{Actor, ActorRef, OneForOneStrategy, Props, Terminated} import akka.io._ import scodec.bits._ import scodec.interop.akka._ -import akka.util.ByteString -final case class ReceivedPacket(msg : ByteVector, from : InetSocketAddress) -final case class SendPacket(msg : ByteVector, to : InetSocketAddress) +final case class ReceivedPacket(msg: ByteVector, from: InetSocketAddress) +final case class SendPacket(msg: ByteVector, to: InetSocketAddress) final case class Hello() -final case class HelloFriend(sessionId : Long, next: Iterator[ActorRef]) +final case class HelloFriend(sessionId: Long, next: Iterator[ActorRef]) -class UdpListener(nextActorProps : Props, - nextActorName : String, - listenAddress : InetAddress, - port : Int, - netParams : Option[NetworkSimulatorParameters]) extends Actor { +class UdpListener( + nextActorProps: Props, + nextActorName: String, + listenAddress: InetAddress, + port: Int, + netParams: Option[NetworkSimulatorParameters] +) extends Actor { private val log = org.log4s.getLogger(self.path.name) - override def supervisorStrategy = OneForOneStrategy() { - case _ => Stop - } + override def supervisorStrategy = + OneForOneStrategy() { + case _ => Stop + } import context.system // If we have network parameters, start the network simulator - if(netParams.isDefined) { + if (netParams.isDefined) { // See http://www.cakesolutions.net/teamblogs/understanding-akkas-recommended-practice-for-actor-creation-in-scala // For why we cant do Props(new Actor) here val sim = context.actorOf(Props(classOf[UdpNetworkSimulator], self, netParams.get)) @@ -36,9 +39,9 @@ class UdpListener(nextActorProps : Props, IO(Udp) ! Udp.Bind(self, new InetSocketAddress(listenAddress, port)) } - var bytesRecevied = 0L - var bytesSent = 0L - var nextActor : ActorRef = ActorRef.noSender + var bytesRecevied = 0L + var bytesSent = 0L + var nextActor: ActorRef = ActorRef.noSender def receive = { case Udp.Bound(local) => @@ -73,4 +76,4 @@ class UdpListener(nextActorProps : Props, context.watch(nextActor) nextActor ! Hello() } -} \ No newline at end of file +} diff --git a/pslogin/src/main/scala/UdpNetworkSimulator.scala b/pslogin/src/main/scala/UdpNetworkSimulator.scala index 24ffe6e3..378e71b8 100644 --- a/pslogin/src/main/scala/UdpNetworkSimulator.scala +++ b/pslogin/src/main/scala/UdpNetworkSimulator.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import akka.actor.{Actor, ActorRef} import akka.io._ @@ -14,37 +15,43 @@ import scala.concurrent.duration._ * @param packetReorderingTime The absolute adjustment in milliseconds that a packet can have (either * forward or backwards in time) */ -case class NetworkSimulatorParameters(packetLoss : Double, - packetDelay : Long, - packetReorderingChance : Double, - packetReorderingTime : Long) { +case class NetworkSimulatorParameters( + packetLoss: Double, + packetDelay: Long, + packetReorderingChance: Double, + packetReorderingTime: Long +) { assert(packetLoss >= 0.0 && packetLoss <= 1.0) assert(packetDelay >= 0) assert(packetReorderingChance >= 0.0 && packetReorderingChance <= 1.0) assert(packetReorderingTime >= 0) - override def toString = "NetSimParams: loss %.2f%% / delay %dms / reorder %.2f%% / reorder +/- %dms".format( - packetLoss*100, packetDelay, packetReorderingChance*100, packetReorderingTime) + override def toString = + "NetSimParams: loss %.2f%% / delay %dms / reorder %.2f%% / reorder +/- %dms".format( + packetLoss * 100, + packetDelay, + packetReorderingChance * 100, + packetReorderingTime + ) } - -class UdpNetworkSimulator(server : ActorRef, params : NetworkSimulatorParameters) extends Actor { +class UdpNetworkSimulator(server: ActorRef, params: NetworkSimulatorParameters) extends Actor { private val log = org.log4s.getLogger import scala.concurrent.ExecutionContext.Implicits.global //******* Variables - val packetDelayDuration = (params.packetDelay/2).milliseconds + val packetDelayDuration = (params.packetDelay / 2).milliseconds type QueueItem = (Udp.Message, Long) // sort in ascending order (older things get dequeued first) implicit val QueueItem = Ordering.by[QueueItem, Long](_._2).reverse - val inPacketQueue = mutable.PriorityQueue[QueueItem]() + val inPacketQueue = mutable.PriorityQueue[QueueItem]() val outPacketQueue = mutable.PriorityQueue[QueueItem]() - val chaos = new Random() + val chaos = new Random() var interface = ActorRef.noSender def receive = { @@ -52,7 +59,7 @@ class UdpNetworkSimulator(server : ActorRef, params : NetworkSimulatorParameters val time = System.nanoTime() var exit = false - while(inPacketQueue.nonEmpty && !exit) { + while (inPacketQueue.nonEmpty && !exit) { val lastTime = time - inPacketQueue.head._2 // this packet needs to be sent within 20 milliseconds or more @@ -67,7 +74,7 @@ class UdpNetworkSimulator(server : ActorRef, params : NetworkSimulatorParameters val time = System.nanoTime() var exit = false - while(outPacketQueue.nonEmpty && !exit) { + while (outPacketQueue.nonEmpty && !exit) { val lastTime = time - outPacketQueue.head._2 // this packet needs to be sent within 20 milliseconds or more @@ -91,29 +98,29 @@ class UdpNetworkSimulator(server : ActorRef, params : NetworkSimulatorParameters case default => val from = sender() - if(from == server) + if (from == server) interface.tell(default, server) - else if(from == interface) + else if (from == interface) server.tell(default, interface) else log.error("Unexpected sending Actor " + from.path) } - def handlePacket(message : Udp.Message, queue : mutable.PriorityQueue[QueueItem], outbound : Boolean) = { - val name : String = if(outbound) "OUT" else "IN" - val queue : mutable.PriorityQueue[QueueItem] = if(outbound) outPacketQueue else inPacketQueue + def handlePacket(message: Udp.Message, queue: mutable.PriorityQueue[QueueItem], outbound: Boolean) = { + val name: String = if (outbound) "OUT" else "IN" + val queue: mutable.PriorityQueue[QueueItem] = if (outbound) outPacketQueue else inPacketQueue - if(chaos.nextDouble() > params.packetLoss) { + if (chaos.nextDouble() > params.packetLoss) { // if the message queue is empty, then we need to reschedule our task - if(queue.isEmpty) + if (queue.isEmpty) schedule(packetDelayDuration, outbound) // perform a reordering - if(chaos.nextDouble() <= params.packetReorderingChance) { + if (chaos.nextDouble() <= params.packetReorderingChance) { // creates the range (-1.0, 1.0) // time adjustment to move the packet (forward or backwards in time) - val adj = (2*(chaos.nextDouble()-0.5)*params.packetReorderingTime).toLong - queue += ((message, System.nanoTime() + adj*1000000)) + val adj = (2 * (chaos.nextDouble() - 0.5) * params.packetReorderingTime).toLong + queue += ((message, System.nanoTime() + adj * 1000000)) log.debug(s"Reordered $name by ${adj}ms - $message") } else { // normal message @@ -124,11 +131,12 @@ class UdpNetworkSimulator(server : ActorRef, params : NetworkSimulatorParameters } } - def schedule(duration : FiniteDuration, outbound : Boolean) = context.system.scheduler.scheduleOnce( - packetDelayDuration, - self, - if(outbound) UdpNetworkSimulator.ProcessOutputQueue() else UdpNetworkSimulator.ProcessInputQueue() - ) + def schedule(duration: FiniteDuration, outbound: Boolean) = + context.system.scheduler.scheduleOnce( + packetDelayDuration, + self, + if (outbound) UdpNetworkSimulator.ProcessOutputQueue() else UdpNetworkSimulator.ProcessInputQueue() + ) } object UdpNetworkSimulator { diff --git a/pslogin/src/main/scala/WorldConfig.scala b/pslogin/src/main/scala/WorldConfig.scala deleted file mode 100644 index a2f02a83..00000000 --- a/pslogin/src/main/scala/WorldConfig.scala +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) 2019 PSForever -package net.psforever - -import scala.util.matching.Regex -import net.psforever.config._ -import scala.concurrent.duration._ -import net.psforever.packet.game._ - -object WorldConfig extends ConfigParser { - // hostname, but allow for empty string - protected val hostname_pattern = Constraints.pattern(raw"^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))|()$$".r, "hostname") - - protected val config_template = Seq( - ConfigSection("database", - ConfigEntryString("Hostname", "localhost", hostname_pattern, Constraints.minLength(1)), - ConfigEntryInt("Port", 5432, Constraints.min(1), Constraints.max(65535)), - ConfigEntryEnum[ConfigDatabaseSSL.type]("SSL", ConfigDatabaseSSL.Prefer), - ConfigEntryString("Database", "psforever", Constraints.minLength(1)), - ConfigEntryString("Username", "psforever", Constraints.minLength(1)), - ConfigEntryString("Password", "psforever", Constraints.minLength(1)) - ), - ConfigSection("loginserver", - ConfigEntryInt("ListeningPort", 51000, Constraints.min(1), Constraints.max(65535)), - ConfigEntryBool("CreateMissingAccounts", true) - ), - ConfigSection("worldserver", - ConfigEntryInt("ListeningPort", 51001, Constraints.min(1), Constraints.max(65535)), - ConfigEntryString("Hostname", "", hostname_pattern), - ConfigEntryString("ServerName", "PSForever", Constraints.minLength(1), Constraints.maxLength(31)), - ConfigEntryEnum[ServerType.type]("ServerType", ServerType.Released) - ), - ConfigSection("network", - ConfigEntryTime("Session.InboundGraceTime", 1 minute, Constraints.min(10 seconds)), - ConfigEntryTime("Session.OutboundGraceTime", 1 minute, Constraints.min(10 seconds)) - ), - ConfigSection("psadmin", - ConfigEntryInt("ListeningPort", 51002, Constraints.min(1), Constraints.max(65535)) - ), - ConfigSection("developer", - ConfigEntryBool ("NetSim.Active", false), - ConfigEntryFloat("NetSim.Loss", 0.02f, Constraints.min(0.0f), Constraints.max(1.0f)), - ConfigEntryTime ("NetSim.Delay", 150 milliseconds, Constraints.min(0 seconds), Constraints.max(2 seconds)), - ConfigEntryFloat("NetSim.ReorderChance", 0.005f, Constraints.min(0.0f), Constraints.max(1.0f)), - ConfigEntryTime ("NetSim.ReorderTime", 150 milliseconds, Constraints.min(0 seconds), Constraints.max(2 seconds)) - ), - ConfigSection("kamon", - ConfigEntryBool("Active", false) - ), - ConfigSection("antihack", - ConfigEntryInt("HitPositionDiscrepancyThreshold", 10000, Constraints.min(1), Constraints.max(1000000)) - ) - ) - - object ConfigDatabaseSSL extends Enumeration { - type Type = Value - val Disable, Prefer, Require, Verify = Value - } - - override def postParseChecks : ValidationResult = { - var errors : Invalid = Invalid("") - - if (Get[Int]("worldserver.ListeningPort") == Get[Int]("loginserver.ListeningPort")) - errors = errors ++ Invalid("worldserver.ListeningPort must be different from loginserver.ListeningPort") - - if (errors.errors.length > 1) - // drop the first error using tail (it was a placeholder) - Invalid(errors.errors.tail) - else - Valid - } -} diff --git a/pslogin/src/main/scala/WorldSession.scala b/pslogin/src/main/scala/WorldSession.scala index a16f0c33..a43e1b26 100644 --- a/pslogin/src/main/scala/WorldSession.scala +++ b/pslogin/src/main/scala/WorldSession.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2020 PSForever +package net.psforever.pslogin + import akka.actor.ActorRef import akka.pattern.{AskTimeoutException, ask} import akka.util.Timeout @@ -18,16 +19,18 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future import scala.concurrent.duration._ import scala.language.implicitConversions +import scala.util.{Success, Failure} object WorldSession { + /** * Convert a boolean value into an integer value. * Use: `true:Int` or `false:Int` * @param b `true` or `false` (or `null`) * @return 1 for `true`; 0 for `false` */ - implicit def boolToInt(b : Boolean) : Int = if(b) 1 else 0 - private implicit val timeout = new Timeout(5000 milliseconds) + implicit def boolToInt(b: Boolean): Int = if (b) 1 else 0 + private implicit val timeout = new Timeout(5000 milliseconds) /** * Use this for placing equipment that has yet to be registered into a container, @@ -47,13 +50,16 @@ object WorldSession { * @param item the item being manipulated * @return a `Future` that anticipates the resolution to this manipulation */ - def PutEquipmentInInventoryOrDrop(obj : PlanetSideServerObject with Container)(item : Equipment) : Future[Any] = { + def PutEquipmentInInventoryOrDrop(obj: PlanetSideServerObject with Container)(item: Equipment): Future[Any] = { val localContainer = obj - val localItem = item - val result = ask(localContainer.Actor, Containable.PutItemAway(localItem)) + val localItem = item + val result = ask(localContainer.Actor, Containable.PutItemAway(localItem)) result.onComplete { - case scala.util.Failure(_) | scala.util.Success(_ : Containable.CanNotPutItemInSlot) => - localContainer.Zone.Ground.tell(Zone.Ground.DropItem(localItem, localContainer.Position, Vector3.z(localContainer.Orientation.z)), localContainer.Actor) + case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) => + localContainer.Zone.Ground.tell( + Zone.Ground.DropItem(localItem, localContainer.Position, Vector3.z(localContainer.Orientation.z)), + localContainer.Actor + ) case _ => ; } result @@ -73,18 +79,20 @@ object WorldSession { * @param item the item being manipulated * @return a `TaskResolver` object */ - def PutNewEquipmentInInventoryOrDrop(obj : PlanetSideServerObject with Container)(item : Equipment) : TaskResolver.GiveTask = { + def PutNewEquipmentInInventoryOrDrop( + obj: PlanetSideServerObject with Container + )(item: Equipment): TaskResolver.GiveTask = { val localZone = obj.Zone TaskResolver.GiveTask( new Task() { private val localContainer = obj - private val localItem = item + private val localItem = item - override def isComplete : Task.Resolution.Value = Task.Resolution.Success + override def isComplete: Task.Resolution.Value = Task.Resolution.Success - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { PutEquipmentInInventoryOrDrop(localContainer)(localItem) - resolver ! scala.util.Success(this) + resolver ! Success(this) } }, List(GUIDTask.RegisterEquipment(item)(localZone.GUID)) @@ -113,13 +121,16 @@ object WorldSession { * @param slot na * @return a `Future` that anticipates the resolution to this manipulation */ - def PutEquipmentInInventorySlot(obj : PlanetSideServerObject with Container, taskResolver : ActorRef)(item : Equipment, slot : Int) : Future[Any] = { + def PutEquipmentInInventorySlot( + obj: PlanetSideServerObject with Container, + taskResolver: ActorRef + )(item: Equipment, slot: Int): Future[Any] = { val localContainer = obj - val localItem = item - val localResolver = taskResolver - val result = ask(localContainer.Actor, Containable.PutItemInSlotOnly(localItem, slot)) + val localItem = item + val localResolver = taskResolver + val result = ask(localContainer.Actor, Containable.PutItemInSlotOnly(localItem, slot)) result.onComplete { - case scala.util.Failure(_) | scala.util.Success(_ : Containable.CanNotPutItemInSlot) => + case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) => localResolver ! GUIDTask.UnregisterEquipment(localItem)(localContainer.Zone.GUID) case _ => ; } @@ -142,29 +153,32 @@ object WorldSession { * @param slot where the item will be placed in the container * @return a `TaskResolver` object */ - def PutLoadoutEquipmentInInventory(obj : PlanetSideServerObject with Container, taskResolver : ActorRef)(item : Equipment, slot : Int) : TaskResolver.GiveTask = { + def PutLoadoutEquipmentInInventory( + obj: PlanetSideServerObject with Container, + taskResolver: ActorRef + )(item: Equipment, slot: Int): TaskResolver.GiveTask = { val localZone = obj.Zone TaskResolver.GiveTask( new Task() { - private val localContainer = obj - private val localItem = item - private val localSlot = slot - private val localFunc : (Equipment,Int)=>Future[Any] = PutEquipmentInInventorySlot(obj, taskResolver) + private val localContainer = obj + private val localItem = item + private val localSlot = slot + private val localFunc: (Equipment, Int) => Future[Any] = PutEquipmentInInventorySlot(obj, taskResolver) - override def Timeout : Long = 1000 + override def Timeout: Long = 1000 - override def isComplete : Task.Resolution.Value = { - if(localItem.HasGUID && localContainer.Find(localItem).nonEmpty) + override def isComplete: Task.Resolution.Value = { + if (localItem.HasGUID && localContainer.Find(localItem).nonEmpty) Task.Resolution.Success else Task.Resolution.Incomplete } - override def Description : String = s"PutEquipmentInInventorySlot - ${localItem.Definition.Name}" + override def Description: String = s"PutEquipmentInInventorySlot - ${localItem.Definition.Name}" - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localFunc(localItem, localSlot) - resolver ! scala.util.Success(this) + resolver ! Success(this) } }, List(GUIDTask.RegisterEquipment(item)(localZone.GUID)) @@ -193,52 +207,56 @@ object WorldSession { * @param item the item being manipulated * @return a `TaskResolver` object */ - def BuyNewEquipmentPutInInventory(obj : PlanetSideServerObject with Container, taskResolver : ActorRef, player : Player, term : PlanetSideGUID)(item : Equipment) : TaskResolver.GiveTask = { + def BuyNewEquipmentPutInInventory( + obj: PlanetSideServerObject with Container, + taskResolver: ActorRef, + player: Player, + term: PlanetSideGUID + )(item: Equipment): TaskResolver.GiveTask = { val localZone = obj.Zone TaskResolver.GiveTask( new Task() { - private val localContainer = obj - private val localItem = item - private val localPlayer = player - private val localResolver = taskResolver - private val localTermMsg : Boolean=>Unit = TerminalResult(term, localPlayer, TransactionType.Buy) + private val localContainer = obj + private val localItem = item + private val localPlayer = player + private val localResolver = taskResolver + private val localTermMsg: Boolean => Unit = TerminalResult(term, localPlayer, TransactionType.Buy) - override def Timeout : Long = 1000 + override def Timeout: Long = 1000 - override def isComplete : Task.Resolution.Value = { - if(localItem.HasGUID && localContainer.Find(localItem).nonEmpty) + override def isComplete: Task.Resolution.Value = { + if (localItem.HasGUID && localContainer.Find(localItem).nonEmpty) Task.Resolution.Success else Task.Resolution.Incomplete } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { TerminalMessageOnTimeout( ask(localContainer.Actor, Containable.PutItemAway(localItem)), localTermMsg ) .onComplete { - case scala.util.Failure(_) | scala.util.Success(_ : Containable.CanNotPutItemInSlot) => - if(localContainer != localPlayer) { + case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) => + if (localContainer != localPlayer) { TerminalMessageOnTimeout( PutEquipmentInInventorySlot(localPlayer, localResolver)(localItem, Player.FreeHandSlot), localTermMsg ) .onComplete { - case scala.util.Failure(_) | scala.util.Success(_ : Containable.CanNotPutItemInSlot) => + case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) => localTermMsg(false) case _ => localTermMsg(true) } - } - else { + } else { localResolver ! GUIDTask.UnregisterEquipment(localItem)(localContainer.Zone.GUID) localTermMsg(false) } case _ => localTermMsg(true) } - resolver ! scala.util.Success(this) + resolver ! Success(this) } }, List(GUIDTask.RegisterEquipment(item)(localZone.GUID)) @@ -274,51 +292,58 @@ object WorldSession { * @param slot the slot in which the item will be equipped * @return a `TaskResolver` object */ - def HoldNewEquipmentUp(player : Player, taskResolver : ActorRef)(item : Equipment, slot : Int) : TaskResolver.GiveTask = { - if(player.VisibleSlots.contains(slot)) { + def HoldNewEquipmentUp(player: Player, taskResolver: ActorRef)(item: Equipment, slot: Int): TaskResolver.GiveTask = { + if (player.VisibleSlots.contains(slot)) { val localZone = player.Zone TaskResolver.GiveTask( new Task() { - private val localPlayer = player - private val localGUID = player.GUID - private val localItem = item - private val localSlot = slot + private val localPlayer = player + private val localGUID = player.GUID + private val localItem = item + private val localSlot = slot private val localResolver = taskResolver - override def Timeout : Long = 1000 + override def Timeout: Long = 1000 - override def isComplete : Task.Resolution.Value = { - if(localPlayer.DrawnSlot == localSlot) + override def isComplete: Task.Resolution.Value = { + if (localPlayer.DrawnSlot == localSlot) Task.Resolution.Success else Task.Resolution.Incomplete } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { ask(localPlayer.Actor, Containable.PutItemInSlotOnly(localItem, localSlot)) .onComplete { - case scala.util.Failure(_) | scala.util.Success(_ : Containable.CanNotPutItemInSlot) => + case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) => localResolver ! GUIDTask.UnregisterEquipment(localItem)(localZone.GUID) case _ => - if(localPlayer.DrawnSlot != Player.HandsDownSlot) { + if (localPlayer.DrawnSlot != Player.HandsDownSlot) { localPlayer.DrawnSlot = Player.HandsDownSlot - localZone.AvatarEvents ! AvatarServiceMessage(localPlayer.Name, - AvatarAction.SendResponse(Service.defaultPlayerGUID, ObjectHeldMessage(localGUID, Player.HandsDownSlot, false)) + localZone.AvatarEvents ! AvatarServiceMessage( + localPlayer.Name, + AvatarAction.SendResponse( + Service.defaultPlayerGUID, + ObjectHeldMessage(localGUID, Player.HandsDownSlot, false) + ) + ) + localZone.AvatarEvents ! AvatarServiceMessage( + localZone.Id, + AvatarAction.ObjectHeld(localGUID, localPlayer.LastDrawnSlot) ) - localZone.AvatarEvents ! AvatarServiceMessage(localZone.Id, AvatarAction.ObjectHeld(localGUID, localPlayer.LastDrawnSlot)) } localPlayer.DrawnSlot = localSlot - localZone.AvatarEvents ! AvatarServiceMessage(localZone.Id, + localZone.AvatarEvents ! AvatarServiceMessage( + localZone.Id, AvatarAction.SendResponse(Service.defaultPlayerGUID, ObjectHeldMessage(localGUID, localSlot, false)) ) } - resolver ! scala.util.Success(this) + resolver ! Success(this) } }, List(GUIDTask.RegisterEquipment(item)(localZone.GUID)) ) - } - else { + } else { //TODO log.error throw new RuntimeException(s"provided slot $slot is not a player visible slot (holsters)") } @@ -342,19 +367,22 @@ object WorldSession { * @param item the item being collected from off the ground of the container's zone * @return a `Future` that anticipates the resolution to this manipulation */ - def PickUpEquipmentFromGround(obj : PlanetSideServerObject with Container)(item : Equipment) : Future[Any] = { - val localZone = obj.Zone + def PickUpEquipmentFromGround(obj: PlanetSideServerObject with Container)(item: Equipment): Future[Any] = { + val localZone = obj.Zone val localContainer = obj - val localItem = item - val future = ask(localZone.Ground, Zone.Ground.PickupItem(item.GUID)) + val localItem = item + val future = ask(localZone.Ground, Zone.Ground.PickupItem(item.GUID)) future.onComplete { - case scala.util.Success(Zone.Ground.ItemInHand(_)) => + case Success(Zone.Ground.ItemInHand(_)) => PutEquipmentInInventoryOrDrop(localContainer)(localItem) - case scala.util.Success(Zone.Ground.CanNotPickupItem(_, item_guid, _)) => + case Success(Zone.Ground.CanNotPickupItem(_, item_guid, _)) => localZone.GUID(item_guid) match { case Some(_) => ; case None => //acting on old data? - localZone.AvatarEvents ! AvatarServiceMessage(localZone.Id, AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item_guid)) + localZone.AvatarEvents ! AvatarServiceMessage( + localZone.Id, + AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item_guid) + ) } case _ => ; } @@ -378,14 +406,20 @@ object WorldSession { * expected override from original container's position * @return a `Future` that anticipates the resolution to this manipulation */ - def DropEquipmentFromInventory(obj : PlanetSideServerObject with Container)(item : Equipment, pos : Option[Vector3] = None) : Future[Any] = { + def DropEquipmentFromInventory( + obj: PlanetSideServerObject with Container + )(item: Equipment, pos: Option[Vector3] = None): Future[Any] = { val localContainer = obj - val localItem = item - val localPos = pos - val result = ask(localContainer.Actor, Containable.RemoveItemFromSlot(localItem)) + val localItem = item + val localPos = pos + val result = ask(localContainer.Actor, Containable.RemoveItemFromSlot(localItem)) result.onComplete { - case scala.util.Success(Containable.ItemFromSlot(_, Some(_), Some(_))) => - localContainer.Zone.Ground.tell(Zone.Ground.DropItem(localItem, localPos.getOrElse(localContainer.Position), Vector3.z(localContainer.Orientation.z)), localContainer.Actor) + case Success(Containable.ItemFromSlot(_, Some(_), Some(_))) => + localContainer.Zone.Ground.tell( + Zone.Ground + .DropItem(localItem, localPos.getOrElse(localContainer.Position), Vector3.z(localContainer.Orientation.z)), + localContainer.Actor + ) case _ => ; } result @@ -406,13 +440,15 @@ object WorldSession { * @param item the item to find and remove from the container * @return a `Future` that anticipates the resolution to this manipulation */ - def RemoveOldEquipmentFromInventory(obj : PlanetSideServerObject with Container, taskResolver : ActorRef)(item : Equipment) : Future[Any] = { + def RemoveOldEquipmentFromInventory(obj: PlanetSideServerObject with Container, taskResolver: ActorRef)( + item: Equipment + ): Future[Any] = { val localContainer = obj - val localItem = item - val localResolver = taskResolver - val result = ask(localContainer.Actor, Containable.RemoveItemFromSlot(localItem)) + val localItem = item + val localResolver = taskResolver + val result = ask(localContainer.Actor, Containable.RemoveItemFromSlot(localItem)) result.onComplete { - case scala.util.Success(Containable.ItemFromSlot(_, Some(_), Some(_))) => + case Success(Containable.ItemFromSlot(_, Some(_), Some(_))) => localResolver ! GUIDTask.UnregisterEquipment(localItem)(localContainer.Zone.GUID) case _ => } @@ -442,18 +478,23 @@ object WorldSession { * @param slot from which slot the equipment is to be removed * @return a `Future` that anticipates the resolution to this manipulation */ - def SellEquipmentFromInventory(obj : PlanetSideServerObject with Container, taskResolver : ActorRef, player : Player, term : PlanetSideGUID)(slot : Int) : Future[Any] = { - val localContainer = obj - val localPlayer = player - val localSlot = slot - val localResolver = taskResolver - val localTermMsg : Boolean=>Unit = TerminalResult(term, localPlayer, TransactionType.Sell) + def SellEquipmentFromInventory( + obj: PlanetSideServerObject with Container, + taskResolver: ActorRef, + player: Player, + term: PlanetSideGUID + )(slot: Int): Future[Any] = { + val localContainer = obj + val localPlayer = player + val localSlot = slot + val localResolver = taskResolver + val localTermMsg: Boolean => Unit = TerminalResult(term, localPlayer, TransactionType.Sell) val result = TerminalMessageOnTimeout( ask(localContainer.Actor, Containable.RemoveItemFromSlot(localSlot)), localTermMsg ) result.onComplete { - case scala.util.Success(Containable.ItemFromSlot(_, Some(item), Some(_))) => + case Success(Containable.ItemFromSlot(_, Some(item), Some(_))) => localResolver ! GUIDTask.UnregisterEquipment(item)(localContainer.Zone.GUID) localTermMsg(true) case _ => @@ -470,9 +511,9 @@ object WorldSession { * @param terminalMessage how to call the terminal message * @return a `Future` that anticipates the resolution to this manipulation */ - def TerminalMessageOnTimeout(future : Future[Any], terminalMessage : Boolean=>Unit) : Future[Any] = { + def TerminalMessageOnTimeout(future: Future[Any], terminalMessage: Boolean => Unit): Future[Any] = { future.recover { - case _ : AskTimeoutException => + case _: AskTimeoutException => terminalMessage(false) } } @@ -488,8 +529,13 @@ object WorldSession { * @param transaction what kind of transaction was involved in terminal use * @param result the result of that transaction */ - def TerminalResult(guid : PlanetSideGUID, player : Player, transaction : TransactionType.Value)(result : Boolean) : Unit = { - player.Zone.AvatarEvents ! AvatarServiceMessage(player.Name, AvatarAction.TerminalOrderResult(guid, transaction, result)) + def TerminalResult(guid: PlanetSideGUID, player: Player, transaction: TransactionType.Value)( + result: Boolean + ): Unit = { + player.Zone.AvatarEvents ! AvatarServiceMessage( + player.Name, + AvatarAction.TerminalOrderResult(guid, transaction, result) + ) } /** @@ -499,10 +545,10 @@ object WorldSession { * @param container the original object that contained the items * @param drops the items to be dropped on the ground */ - def DropLeftovers(container : PlanetSideServerObject with Container)(drops : List[InventoryItem]) : Unit = { + def DropLeftovers(container: PlanetSideServerObject with Container)(drops: List[InventoryItem]): Unit = { //drop or retire - val zone = container.Zone - val pos = container.Position + val zone = container.Zone + val pos = container.Position val orient = Vector3.z(container.Orientation.z) //TODO make a sound when dropping stuff? drops.foreach { entry => zone.Ground.tell(Zone.Ground.DropItem(entry.obj, pos, orient), container.Actor) } @@ -521,11 +567,13 @@ object WorldSession { * defaults to one per entry * @return a `List` of all discovered entries totaling approximately the amount requested */ - def FindEquipmentStock(obj : Container, - filterTest : Equipment=>Boolean, - desiredAmount : Int, - counting : Equipment=>Int = DefaultCount) : List[InventoryItem] = { - var currentAmount : Int = 0 + def FindEquipmentStock( + obj: Container, + filterTest: Equipment => Boolean, + desiredAmount: Int, + counting: Equipment => Int = DefaultCount + ): List[InventoryItem] = { + var currentAmount: Int = 0 obj.Inventory.Items .filter(item => filterTest(item.obj)) .sortBy(_.start) @@ -536,7 +584,6 @@ object WorldSession { }) } - /** * The default counting function for an item. * Counts the number of item(s). @@ -544,7 +591,7 @@ object WorldSession { * @return the quantity; * always one */ - def DefaultCount(e : Equipment) : Int = 1 + def DefaultCount(e: Equipment): Int = 1 /** * The counting function for an item of `AmmoBox`. @@ -552,10 +599,10 @@ object WorldSession { * @param e the `Equipment` object * @return the quantity */ - def CountAmmunition(e : Equipment) : Int = { + def CountAmmunition(e: Equipment): Int = { e match { - case a : AmmoBox => a.Capacity - case _ => 0 + case a: AmmoBox => a.Capacity + case _ => 0 } } @@ -566,10 +613,10 @@ object WorldSession { * @param e the `Equipment` object * @return the quantity */ - def CountGrenades(e : Equipment) : Int = { + def CountGrenades(e: Equipment): Int = { e match { - case t : Tool => (GlobalDefinitions.isGrenade(t.Definition):Int) * t.Magazine - case _ => 0 + case t: Tool => (GlobalDefinitions.isGrenade(t.Definition): Int) * t.Magazine + case _ => 0 } } @@ -579,10 +626,10 @@ object WorldSession { * @param e the `Equipment` object * @return `true`, if the object is an `AmmoBox` of the correct ammunition type; `false`, otherwise */ - def FindAmmoBoxThatUses(ammo : Ammo.Value)(e : Equipment) : Boolean = { + def FindAmmoBoxThatUses(ammo: Ammo.Value)(e: Equipment): Boolean = { e match { - case t : AmmoBox => t.AmmoType == ammo - case _ => false + case t: AmmoBox => t.AmmoType == ammo + case _ => false } } @@ -592,9 +639,9 @@ object WorldSession { * @param e the `Equipment` object * @return `true`, if the object is a `Tool` that loads the correct ammunition type; `false`, otherwise */ - def FindToolThatUses(ammo : Ammo.Value)(e : Equipment) : Boolean = { + def FindToolThatUses(ammo: Ammo.Value)(e: Equipment): Boolean = { e match { - case t : Tool => + case t: Tool => t.Definition.AmmoTypes.map { _.AmmoType }.contains(ammo) case _ => false diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index a5d6c022..ac6cf100 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -1,139 +1,176 @@ -// Copyright (c) 2017-2020 PSForever -//language imports +package net.psforever.pslogin + import akka.actor.{Actor, ActorRef, Cancellable, MDCContextAware} -import akka.pattern.ask -import akka.util.Timeout -import com.github.mauricio.async.db.general.ArrayRowData -import com.github.mauricio.async.db.{Connection, QueryResult} import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicInteger -import org.log4s.{Logger, MDC} -import scala.annotation.{switch, tailrec} +import org.log4s.MDC import scala.collection.mutable.LongMap -import scala.concurrent.{Await, Future, Promise} +import scala.concurrent.{Await, Future} import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global -import scala.util.Success +import scala.util.{Success, Failure} import scodec.bits.ByteVector import services.properties.PropertyOverrideManager -//project imports +import org.joda.time.{LocalDateTime, Period} import csr.{CSRWarp, CSRZone, Traveler} import MDCContextAware.Implicits._ import net.psforever.objects._ import net.psforever.objects.avatar.{Certification, DeployableToolbox, FirstTimeEvents} -import net.psforever.objects.ballistics.{PlayerSource, Projectile, ProjectileResolution, ResolvedProjectile, SourceEntry} -import net.psforever.objects.ce.{ComplexDeployable, Deployable, DeployableCategory, DeployedItem, SimpleDeployable, TelepadLike} +import net.psforever.objects.ballistics.{ + PlayerSource, + Projectile, + ProjectileResolution, + ResolvedProjectile, + SourceEntry +} +import net.psforever.objects.ce.{ + ComplexDeployable, + Deployable, + DeployableCategory, + DeployedItem, + SimpleDeployable, + TelepadLike +} import net.psforever.objects.definition._ import net.psforever.objects.definition.converter.{CorpseConverter, DestroyedVehicleConverter} import net.psforever.objects.entity.{SimpleWorldEntity, WorldEntity} -import net.psforever.objects.equipment.{Ammo, CItem, EffectTarget, Equipment, EquipmentSize, EquipmentSlot, FireModeSwitch, JammableUnit} +import net.psforever.objects.equipment.{EffectTarget, Equipment, FireModeSwitch, JammableUnit} import net.psforever.objects.GlobalDefinitions import net.psforever.objects.guid.{GUIDTask, Task, TaskResolver} -import net.psforever.objects.inventory.{Container, GridInventory, InventoryItem} -import net.psforever.objects.loadouts.{InfantryLoadout, Loadout, SquadLoadout, VehicleLoadout} +import net.psforever.objects.inventory.{Container, InventoryItem} +import net.psforever.objects.loadouts.{InfantryLoadout, SquadLoadout, VehicleLoadout} import net.psforever.objects.serverobject.{CommonMessages, PlanetSideServerObject} import net.psforever.objects.serverobject.affinity.FactionAffinity import net.psforever.objects.serverobject.damage.Damageable -import net.psforever.objects.serverobject.containable.{Containable, ContainableBehavior} +import net.psforever.objects.serverobject.containable.Containable import net.psforever.objects.serverobject.deploy.Deployment import net.psforever.objects.serverobject.doors.Door import net.psforever.objects.serverobject.generator.Generator -import net.psforever.objects.serverobject.hackable.{Hackable, GenericHackables} +import net.psforever.objects.serverobject.hackable.Hackable import net.psforever.objects.serverobject.implantmech.ImplantTerminalMech -import net.psforever.objects.serverobject.locks.{IFFLock, IFFLocks} +import net.psforever.objects.serverobject.locks.IFFLock import net.psforever.objects.serverobject.mblocker.Locker import net.psforever.objects.serverobject.mount.Mountable import net.psforever.objects.serverobject.pad.{VehicleSpawnControl, VehicleSpawnPad} import net.psforever.objects.serverobject.painbox.Painbox import net.psforever.objects.serverobject.resourcesilo.ResourceSilo -import net.psforever.objects.serverobject.structures.{Amenity, Building, SphereOfInfluence, StructureType, WarpGate} -import net.psforever.objects.serverobject.terminals.{CaptureTerminal, CaptureTerminals, MatrixTerminalDefinition, MedicalTerminalDefinition, ProximityDefinition, ProximityTerminal, ProximityUnit, Terminal} -import net.psforever.objects.serverobject.terminals.Terminal.TerminalMessage +import net.psforever.objects.serverobject.structures.{Amenity, Building, StructureType, WarpGate} +import net.psforever.objects.serverobject.terminals.{ + CaptureTerminal, + MatrixTerminalDefinition, + MedicalTerminalDefinition, + ProximityDefinition, + ProximityUnit, + Terminal +} import net.psforever.objects.serverobject.tube.SpawnTube import net.psforever.objects.serverobject.turret.{FacilityTurret, TurretUpgrade, WeaponTurret, WeaponTurrets} import net.psforever.objects.serverobject.zipline.ZipLinePath import net.psforever.objects.teamwork.Squad -import net.psforever.objects.vehicles.{AccessPermissionGroup, Cargo, CargoBehavior, MountedWeapons, Utility, UtilityType, VehicleLockState} +import net.psforever.objects.vehicles.{ + AccessPermissionGroup, + CargoBehavior, + MountedWeapons, + Utility, + UtilityType, + VehicleLockState +} import net.psforever.objects.vehicles.Utility.InternalTelepad -import net.psforever.objects.vital.{DamageFromPainbox, HealFromExoSuitChange, HealFromKit, HealFromTerm, PlayerSuicide, RepairFromKit, Vitality, VitalityDefinition} +import net.psforever.objects.vital.{ + DamageFromPainbox, + HealFromKit, + HealFromTerm, + PlayerSuicide, + RepairFromKit, + Vitality +} import net.psforever.objects.zones.{InterstellarCluster, Zone, ZoneHotSpotProjector, Zoning} import net.psforever.packet._ import net.psforever.packet.control._ import net.psforever.packet.game._ -import net.psforever.packet.game.objectcreate.{ConstructorData, DetailedCharacterData, DroppedItemData, ObjectClass, ObjectCreateMessageParent, PlacementData} +import net.psforever.packet.game.objectcreate.{ + DetailedCharacterData, + DroppedItemData, + ObjectClass, + ObjectCreateMessageParent, + PlacementData +} import net.psforever.packet.game.{HotSpotInfo => PacketHotSpotInfo} +import net.psforever.persistence import net.psforever.types._ -import net.psforever.WorldConfig import services.{RemoverActor, Service, ServiceManager} import services.account.{AccountPersistenceService, PlayerToken, ReceiveAccountData, RetrieveAccountData} import services.avatar.{AvatarAction, AvatarResponse, AvatarServiceMessage, AvatarServiceResponse} -import services.chat.{ChatAction, ChatResponse, ChatServiceMessage, ChatServiceResponse} +import services.chat.{ChatAction, ChatServiceMessage, ChatServiceResponse} import services.galaxy.{GalaxyAction, GalaxyResponse, GalaxyServiceMessage, GalaxyServiceResponse} import services.local.{LocalAction, LocalResponse, LocalServiceMessage, LocalServiceResponse} -import services.local.support.{HackCaptureActor, RouterTelepadActivation} +import services.local.support.RouterTelepadActivation import services.ServiceManager.LookupResult import services.support.SupportActor -import services.teamwork.{SquadResponse, SquadService, SquadServiceMessage, SquadServiceResponse, SquadAction => SquadServiceAction} +import services.teamwork.{SquadResponse, SquadServiceMessage, SquadServiceResponse, SquadAction => SquadServiceAction} import services.vehicle.{VehicleAction, VehicleResponse, VehicleServiceMessage, VehicleServiceResponse} +import Database._ -class WorldSessionActor extends Actor - with MDCContextAware { +class WorldSessionActor extends Actor with MDCContextAware { import WorldSessionActor._ import WorldSession._ - private[this] val log = org.log4s.getLogger - private[this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) - var sessionId : Long = 0 - var leftRef : ActorRef = ActorRef.noSender - var rightRef : ActorRef = ActorRef.noSender - var accountIntermediary : ActorRef = ActorRef.noSender - var accountPersistence : ActorRef = ActorRef.noSender - var chatService : ActorRef = ActorRef.noSender - var galaxyService : ActorRef = ActorRef.noSender - var squadService : ActorRef = ActorRef.noSender - var taskResolver : ActorRef = Actor.noSender - var propertyOverrideManager : ActorRef = Actor.noSender - var cluster : ActorRef = Actor.noSender - var continent : Zone = Zone.Nowhere - var account : Account = null - var player : Player = null - var avatar : Avatar = null - var progressBarValue : Option[Float] = None - var shooting : Option[PlanetSideGUID] = None //ChangeFireStateMessage_Start - var prefire : Option[PlanetSideGUID] = None //if WeaponFireMessage precedes ChangeFireStateMessage_Start - var shotsWhileDead : Int = 0 - var accessedContainer : Option[PlanetSideGameObject with Container] = None - var connectionState : Int = 25 - var flying : Boolean = false - var speed : Float = 1.0f - var admin : Boolean = false - var loadConfZone : Boolean = false - var noSpawnPointHere : Boolean = false - var usingMedicalTerminal : Option[PlanetSideGUID] = None - var controlled : Option[Int] = None + private[this] val log = org.log4s.getLogger + private[this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) + var sessionId: Long = 0 + var leftRef: ActorRef = ActorRef.noSender + var rightRef: ActorRef = ActorRef.noSender + var accountIntermediary: ActorRef = ActorRef.noSender + var accountPersistence: ActorRef = ActorRef.noSender + var chatService: ActorRef = ActorRef.noSender + var galaxyService: ActorRef = ActorRef.noSender + var squadService: ActorRef = ActorRef.noSender + var taskResolver: ActorRef = Actor.noSender + var propertyOverrideManager: ActorRef = Actor.noSender + var cluster: ActorRef = Actor.noSender + var continent: Zone = Zone.Nowhere + var account: Account = null + var player: Player = null + var avatar: Avatar = null + var progressBarValue: Option[Float] = None + var shooting: Option[PlanetSideGUID] = None //ChangeFireStateMessage_Start + var prefire: Option[PlanetSideGUID] = None //if WeaponFireMessage precedes ChangeFireStateMessage_Start + var shotsWhileDead: Int = 0 + var accessedContainer: Option[PlanetSideGameObject with Container] = None + var connectionState: Int = 25 + var flying: Boolean = false + var speed: Float = 1.0f + var admin: Boolean = false + var loadConfZone: Boolean = false + var noSpawnPointHere: Boolean = false + var usingMedicalTerminal: Option[PlanetSideGUID] = None + var controlled: Option[Int] = None //keep track of avatar's ServerVehicleOverride state - var traveler : Traveler = null - var deadState : DeadState.Value = DeadState.Dead - var whenUsedLastMAXName : Array[String] = Array.fill[String](4)("") - val projectiles : Array[Option[Projectile]] = Array.fill[Option[Projectile]](Projectile.RangeUID - Projectile.BaseUID)(None) - val projectilesToCleanUp : Array[Boolean] = Array.fill[Boolean](Projectile.RangeUID - Projectile.BaseUID)(false) - var drawDeloyableIcon : PlanetSideGameObject with Deployable => Unit = RedrawDeployableIcons - var updateSquad : () => Unit = NoSquadUpdates - var recentTeleportAttempt : Long = 0 - var lastTerminalOrderFulfillment : Boolean = true - var shiftPosition : Option[Vector3] = None - var shiftOrientation : Option[Vector3] = None - var setupAvatarFunc : () => Unit = AvatarCreate - var setCurrentAvatarFunc : (Player) => Unit = SetCurrentAvatarNormally - var persist : () => Unit = NoPersistence + var traveler: Traveler = null + var deadState: DeadState.Value = DeadState.Dead + var whenUsedLastMAXName: Array[String] = Array.fill[String](4)("") + val projectiles: Array[Option[Projectile]] = + Array.fill[Option[Projectile]](Projectile.RangeUID - Projectile.BaseUID)(None) + val projectilesToCleanUp: Array[Boolean] = Array.fill[Boolean](Projectile.RangeUID - Projectile.BaseUID)(false) + var drawDeloyableIcon: PlanetSideGameObject with Deployable => Unit = RedrawDeployableIcons + var updateSquad: () => Unit = NoSquadUpdates + var recentTeleportAttempt: Long = 0 + var lastTerminalOrderFulfillment: Boolean = true + var shiftPosition: Option[Vector3] = None + var shiftOrientation: Option[Vector3] = None + var setupAvatarFunc: () => Unit = AvatarCreate + var setCurrentAvatarFunc: (Player) => Unit = SetCurrentAvatarNormally + var persist: () => Unit = NoPersistence + /** * used during zone transfers to maintain reference to seated vehicle (which does not yet exist in the new zone) * used during intrazone gate transfers, but not in a way distinct from prior zone transfer procedures * should only be set during the transient period when moving between one spawn point and the next * leaving set prior to a subsequent transfers may cause unstable vehicle associations, with memory leak potential */ - var interstellarFerry : Option[Vehicle] = None + var interstellarFerry: Option[Vehicle] = None + /** * used during zone transfers for cleanup to refer to the vehicle that instigated a transfer * "top level" is the carrier in a carrier/ferried association or a projected carrier/(ferried carrier)/ferried association @@ -141,9 +178,10 @@ class WorldSessionActor extends Actor * the old-zone unique identifier for the carrier * no harm should come from leaving the field set to an old unique identifier value after the transfer period */ - var interstellarFerryTopLevelGUID : Option[PlanetSideGUID] = None - val squadUI : LongMap[SquadUIElement] = new LongMap[SquadUIElement]() - var squad_supplement_id : Int = 0 + var interstellarFerryTopLevelGUID: Option[PlanetSideGUID] = None + val squadUI: LongMap[SquadUIElement] = new LongMap[SquadUIElement]() + var squad_supplement_id: Int = 0 + /** * When joining or creating a squad, the original state of the avatar's internal LFS variable is blanked. * This `WorldSessionActor`-local variable is then used to indicate the ongoing state of the LFS UI component, @@ -152,52 +190,56 @@ class WorldSessionActor extends Actor * Upon leaving or disbanding a squad, this value is made false. * Control switching between the `Avatar`-local and the `WorldSessionActor`-local variable is contingent on `squadUI` being populated. */ - var lfsm : Boolean = false - var squadChannel : Option[String] = None - var squadSetup : () => Unit = FirstTimeSquadSetup - var squadUpdateCounter : Int = 0 - val queuedSquadActions : Seq[() => Unit] = Seq(SquadUpdates, NoSquadUpdates, NoSquadUpdates, NoSquadUpdates) + var lfsm: Boolean = false + var squadChannel: Option[String] = None + var squadSetup: () => Unit = FirstTimeSquadSetup + var squadUpdateCounter: Int = 0 + val queuedSquadActions: Seq[() => Unit] = Seq(SquadUpdates, NoSquadUpdates, NoSquadUpdates, NoSquadUpdates) + /** Upstream message counter
* Checks for server acknowledgement of the following messages in the following conditions:
* `PlayerStateMessageUpstream` (infantry)
* `VehicleStateMessage` (driver seat only)
* `ChildObjectStateMessage` (any gunner seat that is not the driver)
* `KeepAliveMessage` (any passenger seat that is not the driver)
- * As they should arrive roughly every 250 milliseconds this allows for a very crude method of scheduling tasks up to four times per second */ - var upstreamMessageCount : Int = 0 - var zoningType : Zoning.Method.Value = Zoning.Method.None - var zoningChatMessageType : ChatMessageType.Value = ChatMessageType.CMT_QUIT - var zoningStatus : Zoning.Status.Value = Zoning.Status.None - var zoningCounter : Int = 0 - var instantActionFallbackDestination : Option[Zoning.InstantAction.Located] = None - lazy val unsignedIntMaxValue : Long = Int.MaxValue.toLong * 2L + 1L - var serverTime : Long = 0 - var amsSpawnPoints : List[SpawnPoint] = Nil + * As they should arrive roughly every 250 milliseconds this allows for a very crude method of scheduling tasks up to four times per second + */ + var upstreamMessageCount: Int = 0 + var zoningType: Zoning.Method.Value = Zoning.Method.None + var zoningChatMessageType: ChatMessageType.Value = ChatMessageType.CMT_QUIT + var zoningStatus: Zoning.Status.Value = Zoning.Status.None + var zoningCounter: Int = 0 + var instantActionFallbackDestination: Option[Zoning.InstantAction.Located] = None + lazy val unsignedIntMaxValue: Long = Int.MaxValue.toLong * 2L + 1L + var serverTime: Long = 0 + var amsSpawnPoints: List[SpawnPoint] = Nil + /** a flag for the zone having finished loading during zoning * `None` when no zone is loaded * `Some(true)` when a zone has successfully loaded * `Some(false)` when the loading process has failed or was executed but did not complete for some reason - * */ - var zoneLoaded : Option[Boolean] = None + */ + var zoneLoaded: Option[Boolean] = None + /** a flag that forces the current zone to reload itself during a zoning operation */ - var zoneReload : Boolean = false - var interimUngunnedVehicle : Option[PlanetSideGUID] = None - var interimUngunnedVehicleSeat : Option[Int] = None - var keepAliveFunc : ()=>Unit = NormalKeepAlive - var turnCounterFunc : PlanetSideGUID=>Unit = TurnCounterDuringInterim + var zoneReload: Boolean = false + var interimUngunnedVehicle: Option[PlanetSideGUID] = None + var interimUngunnedVehicleSeat: Option[Int] = None + var keepAliveFunc: () => Unit = NormalKeepAlive + var turnCounterFunc: PlanetSideGUID => Unit = TurnCounterDuringInterim - var clientKeepAlive : Cancellable = Default.Cancellable - var progressBarUpdate : Cancellable = Default.Cancellable - var reviveTimer : Cancellable = Default.Cancellable - var respawnTimer : Cancellable = Default.Cancellable - var cargoMountTimer : Cancellable = Default.Cancellable - var cargoDismountTimer : Cancellable = Default.Cancellable - var antChargingTick : Cancellable = Default.Cancellable - var antDischargingTick : Cancellable = Default.Cancellable - var zoningTimer : Cancellable = Default.Cancellable - var zoningReset : Cancellable = Default.Cancellable + var clientKeepAlive: Cancellable = Default.Cancellable + var progressBarUpdate: Cancellable = Default.Cancellable + var reviveTimer: Cancellable = Default.Cancellable + var respawnTimer: Cancellable = Default.Cancellable + var cargoMountTimer: Cancellable = Default.Cancellable + var cargoDismountTimer: Cancellable = Default.Cancellable + var antChargingTick: Cancellable = Default.Cancellable + var antDischargingTick: Cancellable = Default.Cancellable + var zoningTimer: Cancellable = Default.Cancellable + var zoningReset: Cancellable = Default.Cancellable - override def postStop() : Unit = { + override def postStop(): Unit = { //normally, the player avatar persists a minute or so after disconnect; we are subject to the SessionReaper clientKeepAlive.cancel progressBarUpdate.cancel @@ -212,13 +254,16 @@ class WorldSessionActor extends Actor continent.AvatarEvents ! Service.Leave() continent.LocalEvents ! Service.Leave() continent.VehicleEvents ! Service.Leave() - if(avatar != null) { + if (avatar != null) { //TODO put any temporary values back into the avatar squadService ! Service.Leave(Some(s"${avatar.faction}")) - if(player != null && player.HasGUID) { + if (player != null && player.HasGUID) { prefire.orElse(shooting) match { case Some(guid) => - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, guid)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, guid) + ) case None => ; } } @@ -227,15 +272,14 @@ class WorldSessionActor extends Actor def receive = Initializing - def Initializing : Receive = { + def Initializing: Receive = { case HelloFriend(inSessionId, pipe) => this.sessionId = inSessionId leftRef = sender() - if(pipe.hasNext) { + if (pipe.hasNext) { rightRef = pipe.next rightRef !> HelloFriend(sessionId, pipe) - } - else { + } else { rightRef = sender() } context.become(Started) @@ -255,23 +299,24 @@ class WorldSessionActor extends Actor context.stop(self) } - def ValidObject(id : Int) : Option[PlanetSideGameObject] = ValidObject(Some(PlanetSideGUID(id))) + def ValidObject(id: Int): Option[PlanetSideGameObject] = ValidObject(Some(PlanetSideGUID(id))) - def ValidObject(id : PlanetSideGUID) : Option[PlanetSideGameObject] = ValidObject(Some(id)) + def ValidObject(id: PlanetSideGUID): Option[PlanetSideGameObject] = ValidObject(Some(id)) - def ValidObject(id : Option[PlanetSideGUID]) : Option[PlanetSideGameObject] = continent.GUID(id) match { - case out@Some(obj) if obj.HasGUID => - out - case None if id.nonEmpty && id.get != PlanetSideGUID(0) => - //delete stale entity reference from client - log.warn(s"Player ${player.Name} has an invalid reference to GUID ${id.get} in zone ${continent.Id}.") - sendResponse(ObjectDeleteMessage(id.get, 0)) - None - case _ => - None - } + def ValidObject(id: Option[PlanetSideGUID]): Option[PlanetSideGameObject] = + continent.GUID(id) match { + case out @ Some(obj) if obj.HasGUID => + out + case None if id.nonEmpty && id.get != PlanetSideGUID(0) => + //delete stale entity reference from client + log.warn(s"Player ${player.Name} has an invalid reference to GUID ${id.get} in zone ${continent.Id}.") + sendResponse(ObjectDeleteMessage(id.get, 0)) + None + case _ => + None + } - def Started : Receive = { + def Started: Receive = { case LookupResult("accountIntermediary", endpoint) => accountIntermediary = endpoint log.info("ID: " + sessionId + " Got account intermediary service " + endpoint) @@ -309,7 +354,7 @@ class WorldSessionActor extends Actor HandleAvatarServiceResponse(toChannel, guid, reply) case CommonMessages.Progress(rate, finishedAction, stepAction) => - if(progressBarValue.isEmpty) { + if (progressBarValue.isEmpty) { progressBarValue = Some(-rate) self ! ProgressEvent(rate, finishedAction, stepAction) } @@ -358,8 +403,7 @@ class WorldSessionActor extends Actor } case None => None - }) - ) match { + })) match { case Some(v) => galaxyService ! Service.Leave(Some(temp_channel)) //temporary vehicle-specific channel (see above) deadState = DeadState.Release @@ -396,7 +440,7 @@ class WorldSessionActor extends Actor HandleVehicleServiceResponse(toChannel, guid, reply) case SquadServiceResponse(_, excluded, response) => - if(!excluded.exists(_ == avatar.CharId)) { + if (!excluded.exists(_ == avatar.CharId)) { response match { case SquadResponse.ListSquadFavorite(line, task) => sendResponse(SquadDefinitionActionMessage(PlanetSideGUID(0), line, SquadAction.ListSquadFavorite(task))) @@ -406,16 +450,21 @@ class WorldSessionActor extends Actor case SquadResponse.UpdateList(infos) if infos.nonEmpty => sendResponse( - ReplicationStreamMessage(6, None, - infos.map { case (index, squadInfo) => - SquadListing(index, squadInfo) + ReplicationStreamMessage( + 6, + None, + infos.map { + case (index, squadInfo) => + SquadListing(index, squadInfo) }.toVector ) ) case SquadResponse.RemoveFromList(infos) if infos.nonEmpty => sendResponse( - ReplicationStreamMessage(1, None, + ReplicationStreamMessage( + 1, + None, infos.map { index => SquadListing(index, None) }.toVector @@ -435,7 +484,7 @@ class WorldSessionActor extends Actor val name = request_type match { case SquadResponseType.Invite if unk5 => //player_name is our name; the name of the player indicated by unk3 is needed - LivePlayerList.WorldPopulation({ case (_, a : Avatar) => char_id == a.CharId }).headOption match { + LivePlayerList.WorldPopulation({ case (_, a: Avatar) => char_id == a.CharId }).headOption match { case Some(player) => player.name case None => @@ -449,14 +498,16 @@ class WorldSessionActor extends Actor case SquadResponse.WantsSquadPosition(_, name) => sendResponse( ChatMsg( - ChatMessageType.CMT_SQUAD, true, name, + ChatMessageType.CMT_SQUAD, + true, + name, s"\\#6 would like to join your squad. (respond with \\#3/accept\\#6 or \\#3/reject\\#6)", None ) ) case SquadResponse.Join(squad, positionsToUpdate, toChannel) => - val leader = squad.Leader + val leader = squad.Leader val membershipPositions = positionsToUpdate map squad.Membership.zipWithIndex StartBundlingPackets() membershipPositions.find({ case (member, _) => member.CharId == avatar.CharId }) match { @@ -464,23 +515,49 @@ class WorldSessionActor extends Actor //we are joining the squad //load each member's entry (our own too) squad_supplement_id = squad.GUID.guid + 1 - membershipPositions.foreach { case (member, index) => - sendResponse(SquadMemberEvent.Add(squad_supplement_id, member.CharId, index, member.Name, member.ZoneId, unk7 = 0)) - squadUI(member.CharId) = SquadUIElement(member.Name, index, member.ZoneId, member.Health, member.Armor, member.Position) + membershipPositions.foreach { + case (member, index) => + sendResponse( + SquadMemberEvent.Add( + squad_supplement_id, + member.CharId, + index, + member.Name, + member.ZoneId, + unk7 = 0 + ) + ) + squadUI(member.CharId) = + SquadUIElement(member.Name, index, member.ZoneId, member.Health, member.Armor, member.Position) } //repeat our entry - sendResponse(SquadMemberEvent.Add(squad_supplement_id, ourMember.CharId, ourIndex, ourMember.Name, ourMember.ZoneId, unk7 = 0)) //repeat of our entry - val playerGuid = player.GUID + sendResponse( + SquadMemberEvent.Add( + squad_supplement_id, + ourMember.CharId, + ourIndex, + ourMember.Name, + ourMember.ZoneId, + unk7 = 0 + ) + ) //repeat of our entry + val playerGuid = player.GUID //turn lfs off val factionChannel = s"${player.Faction}" - if(avatar.LFS) { + if (avatar.LFS) { avatar.LFS = false sendResponse(PlanetsideAttributeMessage(playerGuid, 53, 0)) - continent.AvatarEvents ! AvatarServiceMessage(factionChannel, AvatarAction.PlanetsideAttribute(playerGuid, 53, 0)) + continent.AvatarEvents ! AvatarServiceMessage( + factionChannel, + AvatarAction.PlanetsideAttribute(playerGuid, 53, 0) + ) } //squad colors GiveSquadColorsInZone() - continent.AvatarEvents ! AvatarServiceMessage(factionChannel, AvatarAction.PlanetsideAttribute(playerGuid, 31, squad_supplement_id)) + continent.AvatarEvents ! AvatarServiceMessage( + factionChannel, + AvatarAction.PlanetsideAttribute(playerGuid, 31, squad_supplement_id) + ) //associate with member position in squad sendResponse(PlanetsideAttributeMessage(playerGuid, 32, ourIndex)) //a finalization? what does this do? @@ -492,22 +569,43 @@ class WorldSessionActor extends Actor //other player is joining our squad //load each member's entry GiveSquadColorsInZone( - membershipPositions.map { case (member, index) => - val charId = member.CharId - sendResponse(SquadMemberEvent.Add(squad_supplement_id, charId, index, member.Name, member.ZoneId, unk7 = 0)) - squadUI(charId) = SquadUIElement(member.Name, index, member.ZoneId, member.Health, member.Armor, member.Position) - charId + membershipPositions.map { + case (member, index) => + val charId = member.CharId + sendResponse( + SquadMemberEvent.Add(squad_supplement_id, charId, index, member.Name, member.ZoneId, unk7 = 0) + ) + squadUI(charId) = + SquadUIElement(member.Name, index, member.ZoneId, member.Health, member.Armor, member.Position) + charId } ) } StopBundlingPackets() //send an initial dummy update for map icon(s) - sendResponse(SquadState(PlanetSideGUID(squad_supplement_id), - membershipPositions - .filterNot { case (member, _) => member.CharId == avatar.CharId } - .map { case (member, _) => SquadStateInfo(member.CharId, member.Health, member.Armor, member.Position, 2, 2, false, 429, None, None) } - .toList - )) + sendResponse( + SquadState( + PlanetSideGUID(squad_supplement_id), + membershipPositions + .filterNot { case (member, _) => member.CharId == avatar.CharId } + .map { + case (member, _) => + SquadStateInfo( + member.CharId, + member.Health, + member.Armor, + member.Position, + 2, + 2, + false, + 429, + None, + None + ) + } + .toList + ) + ) case SquadResponse.Leave(squad, positionsToUpdate) => StartBundlingPackets() @@ -515,16 +613,22 @@ class WorldSessionActor extends Actor case Some((ourMember, ourIndex)) => //we are leaving the squad //remove each member's entry (our own too) - positionsToUpdate.foreach { case (member, index) => - sendResponse(SquadMemberEvent.Remove(squad_supplement_id, member, index)) - squadUI.remove(member) + positionsToUpdate.foreach { + case (member, index) => + sendResponse(SquadMemberEvent.Remove(squad_supplement_id, member, index)) + squadUI.remove(member) } //uninitialize val playerGuid = player.GUID sendResponse(SquadMemberEvent.Remove(squad_supplement_id, ourMember, ourIndex)) //repeat of our entry - sendResponse(PlanetsideAttributeMessage(playerGuid, 31, 0)) //disassociate with squad? - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(playerGuid, 31, 0)) - sendResponse(PlanetsideAttributeMessage(playerGuid, 32, 0)) //disassociate with member position in squad? + sendResponse(PlanetsideAttributeMessage(playerGuid, 31, 0)) //disassociate with squad? + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(playerGuid, 31, 0) + ) + sendResponse( + PlanetsideAttributeMessage(playerGuid, 32, 0) + ) //disassociate with member position in squad? sendResponse(PlanetsideAttributeMessage(playerGuid, 34, 4294967295L)) //unknown, perhaps unrelated? lfsm = false //a finalization? what does this do? @@ -537,10 +641,11 @@ class WorldSessionActor extends Actor case _ => //remove each member's entry GiveSquadColorsInZone( - positionsToUpdate.map { case (member, index) => - sendResponse(SquadMemberEvent.Remove(squad_supplement_id, member, index)) - squadUI.remove(member) - member + positionsToUpdate.map { + case (member, index) => + sendResponse(SquadMemberEvent.Remove(squad_supplement_id, member, index)) + squadUI.remove(member) + member }, value = 0 ) @@ -552,24 +657,30 @@ class WorldSessionActor extends Actor SwapSquadUIElements(squad, from_index, to_index) case SquadResponse.PromoteMember(squad, char_id, from_index, to_index) => - val charId = player.CharId - val guid = player.GUID + val charId = player.CharId + val guid = player.GUID lazy val factionChannel = s"${player.Faction}" //are we being demoted? - if(squadUI(charId).index == 0) { + if (squadUI(charId).index == 0) { //lfsm -> lfs - if(lfsm) { + if (lfsm) { sendResponse(PlanetsideAttributeMessage(guid, 53, 0)) - continent.AvatarEvents ! AvatarServiceMessage(factionChannel, AvatarAction.PlanetsideAttribute(guid, 53, 0)) + continent.AvatarEvents ! AvatarServiceMessage( + factionChannel, + AvatarAction.PlanetsideAttribute(guid, 53, 0) + ) } lfsm = false sendResponse(PlanetsideAttributeMessage(guid, 32, from_index)) //associate with member position in squad } //are we being promoted? - else if(charId == char_id) { + else if (charId == char_id) { sendResponse(PlanetsideAttributeMessage(guid, 32, 0)) //associate with member position in squad } - continent.AvatarEvents ! AvatarServiceMessage(factionChannel, AvatarAction.PlanetsideAttribute(guid, 31, squad_supplement_id)) + continent.AvatarEvents ! AvatarServiceMessage( + factionChannel, + AvatarAction.PlanetsideAttribute(guid, 31, squad_supplement_id) + ) //we must fix the squad cards backend SwapSquadUIElements(squad, from_index, to_index) @@ -583,20 +694,27 @@ class WorldSessionActor extends Actor .collect({ case (entry, element) if entry.zone_number != element.zone => //zone gets updated for these entries - sendResponse(SquadMemberEvent.UpdateZone(squad_supplement_id, entry.char_id, element.index, entry.zone_number)) - squadUI(entry.char_id) = SquadUIElement(element.name, element.index, entry.zone_number, entry.health, entry.armor, entry.pos) + sendResponse( + SquadMemberEvent.UpdateZone(squad_supplement_id, entry.char_id, element.index, entry.zone_number) + ) + squadUI(entry.char_id) = + SquadUIElement(element.name, element.index, entry.zone_number, entry.health, entry.armor, entry.pos) entry - case (entry, element) if entry.health != element.health || entry.armor != element.armor || entry.pos != element.position => + case (entry, element) + if entry.health != element.health || entry.armor != element.armor || entry.pos != element.position => //other elements that need to be updated - squadUI(entry.char_id) = SquadUIElement(element.name, element.index, entry.zone_number, entry.health, entry.armor, entry.pos) + squadUI(entry.char_id) = + SquadUIElement(element.name, element.index, entry.zone_number, entry.health, entry.armor, entry.pos) entry }) .filterNot(_.char_id == avatar.CharId) //we want to update our backend, but not our frontend - if(updatedEntries.nonEmpty) { + if (updatedEntries.nonEmpty) { sendResponse( SquadState( PlanetSideGUID(squad_supplement_id), - updatedEntries.map { entry => SquadStateInfo(entry.char_id, entry.health, entry.armor, entry.pos, 2, 2, false, 429, None, None) } + updatedEntries.map { entry => + SquadStateInfo(entry.char_id, entry.health, entry.armor, entry.pos, 2, 2, false, 429, None, None) + } ) ) } @@ -607,13 +725,28 @@ class WorldSessionActor extends Actor case SquadResponse.InitWaypoints(char_id, waypoints) => StartBundlingPackets() - waypoints.foreach { case (waypoint_type, info, unk) => - sendResponse(SquadWaypointEvent.Add(squad_supplement_id, char_id, waypoint_type, WaypointEvent(info.zone_number, info.pos, unk))) + waypoints.foreach { + case (waypoint_type, info, unk) => + sendResponse( + SquadWaypointEvent.Add( + squad_supplement_id, + char_id, + waypoint_type, + WaypointEvent(info.zone_number, info.pos, unk) + ) + ) } StopBundlingPackets() case SquadResponse.WaypointEvent(WaypointEventAction.Add, char_id, waypoint_type, _, Some(info), unk) => - sendResponse(SquadWaypointEvent.Add(squad_supplement_id, char_id, waypoint_type, WaypointEvent(info.zone_number, info.pos, unk))) + sendResponse( + SquadWaypointEvent.Add( + squad_supplement_id, + char_id, + waypoint_type, + WaypointEvent(info.zone_number, info.pos, unk) + ) + ) case SquadResponse.WaypointEvent(WaypointEventAction.Remove, char_id, waypoint_type, _, _, _) => sendResponse(SquadWaypointEvent.Remove(squad_supplement_id, char_id, waypoint_type)) @@ -625,49 +758,64 @@ class WorldSessionActor extends Actor case Deployment.CanDeploy(obj, state) => val vehicle_guid = obj.GUID //TODO remove this arbitrary allowance angle when no longer helpful - if(obj.Orientation.x > 30 && obj.Orientation.x < 330) { + if (obj.Orientation.x > 30 && obj.Orientation.x < 330) { obj.DeploymentState = DriveState.Mobile CanNotChangeDeployment(obj, state, "ground too steep") - } - else if(state == DriveState.Deploying) { + } else if (state == DriveState.Deploying) { log.info(s"DeployRequest: $obj transitioning to deploy state") obj.Velocity = Some(Vector3.Zero) //no velocity sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero) + ) DeploymentActivities(obj) import scala.concurrent.ExecutionContext.Implicits.global - context.system.scheduler.scheduleOnce(obj.DeployTime milliseconds, obj.Actor, Deployment.TryDeploy(DriveState.Deployed)) - } - else if(state == DriveState.Deployed) { + context.system.scheduler.scheduleOnce( + obj.DeployTime milliseconds, + obj.Actor, + Deployment.TryDeploy(DriveState.Deployed) + ) + } else if (state == DriveState.Deployed) { log.info(s"DeployRequest: $obj has been Deployed") obj.Velocity = Some(Vector3.Zero) sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero) + ) DeploymentActivities(obj) //... - } - else { + } else { CanNotChangeDeployment(obj, state, "incorrect deploy state") } case Deployment.CanUndeploy(obj, state) => val vehicle_guid = obj.GUID - if(state == DriveState.Undeploying) { + if (state == DriveState.Undeploying) { log.info(s"DeployRequest: $obj transitioning to undeploy state") sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero) + ) DeploymentActivities(obj) import scala.concurrent.ExecutionContext.Implicits.global - context.system.scheduler.scheduleOnce(obj.UndeployTime milliseconds, obj.Actor, Deployment.TryUndeploy(DriveState.Mobile)) - } - else if(state == DriveState.Mobile) { + context.system.scheduler.scheduleOnce( + obj.UndeployTime milliseconds, + obj.Actor, + Deployment.TryUndeploy(DriveState.Mobile) + ) + } else if (state == DriveState.Mobile) { log.info(s"DeployRequest: $obj is Mobile") sendResponse(DeployRequestMessage(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DeployRequest(player.GUID, vehicle_guid, state, 0, false, Vector3.Zero) + ) DeploymentActivities(obj) //... - } - else { + } else { CanNotChangeDeployment(obj, state, "incorrect undeploy state") } @@ -676,133 +824,101 @@ class WorldSessionActor extends Actor case ResourceSilo.ResourceSiloMessage(tplayer, msg, order) => continent.GUID(msg.avatar_guid) match { - case Some(vehicle : Vehicle) => + case Some(vehicle: Vehicle) => val silo_guid = msg.object_guid order match { case ResourceSilo.ChargeEvent() => - antChargingTick.cancel() // If an ANT is refilling an NTU silo it isn't in a warpgate, so disable NTU regeneration + antChargingTick + .cancel() // If an ANT is refilling an NTU silo it isn't in a warpgate, so disable NTU regeneration antDischargingTick.cancel() - antDischargingTick = context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuDischarging(player, vehicle, msg.object_guid)) + antDischargingTick = context.system.scheduler.scheduleOnce( + 1000 milliseconds, + self, + NtuDischarging(player, vehicle, msg.object_guid) + ) case _ => ; } case _ => ; } case CreateCharacter(name, head, voice, gender, empire) => - log.info(s"Creating new character $name...") - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - val accountUserName : String = account.Username - connection.inTransaction { - c => - c.sendPreparedStatement( - "INSERT INTO characters (name, account_id, faction_id, gender_id, head_id, voice_id) VALUES(?,?,?,?,?,?) RETURNING id", - List(name, account.AccountId, empire.id, gender.id, head, voice.id) - ) - }.onComplete { - case scala.util.Success(insertResult) => - if(connection.isConnected) connection.disconnect - insertResult match { - case result : QueryResult => - if(result.rows.nonEmpty) { - log.info(s"CreateCharacter: successfully created new character for $accountUserName") - sendResponse(ActionResultMessage.Pass) - self ! ListAccountCharacters() - } - else { - log.error(s"CreateCharacter: new character for $accountUserName was not created") - sendResponse(ActionResultMessage.Fail(0)) - self ! ListAccountCharacters() - } - case e => - log.error(s"CreateCharacter: unexpected error while creating new character for $accountUserName") - sendResponse(ActionResultMessage.Fail(3)) - self ! ListAccountCharacters() - } - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - failWithError(s"CreateCharacter: query failed - ${e.getMessage}") - } - case scala.util.Failure(e) => - log.error(s"CreateCharacter: no connection - ${e.getMessage}?") + import ctx._ + log.info(s"Creating new character $name") + + val result = ctx.run( + query[persistence.Character].insert( + _.name -> lift(name), + _.accountId -> lift(account.AccountId), + _.factionId -> lift(empire.id), + _.headId -> lift(head), + _.voiceId -> lift(voice.id), + _.genderId -> lift(gender.id) + ) + ) + result.onComplete { + case Success(_) => + log.info(s"CreateCharacter: successfully created new character for ${account.Username}") + sendResponse(ActionResultMessage.Pass) + self ! ListAccountCharacters() + case Failure(e) => + failWithError(s"CreateCharacter: query failed - ${e.getMessage}") } case ListAccountCharacters() => - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - val accountUserName : String = account.Username - connection.sendPreparedStatement( - "SELECT id, name, faction_id, gender_id, head_id, voice_id, deleted, last_login FROM characters where account_id=? ORDER BY last_login", Array(account.AccountId).toIndexedSeq - ).onComplete { - case scala.util.Success(result : QueryResult) => - if(connection.isConnected) connection.disconnect - if(result.rows.nonEmpty) { - import net.psforever.objects.definition.converter.CharacterSelectConverter - val gen : AtomicInteger = new AtomicInteger(1) - val converter : CharacterSelectConverter = new CharacterSelectConverter - result.rows foreach { row => - log.trace(s"char list : ${row.toString()}") - val nowTimeInSeconds = System.currentTimeMillis() / 1000 - var avatarArray : Array[Avatar] = Array.ofDim(row.length) - var playerArray : Array[Player] = Array.ofDim(row.length) - row.zipWithIndex.foreach { case (value, i) => - val lName : String = value(1).asInstanceOf[String] - val lFaction : PlanetSideEmpire.Value = PlanetSideEmpire(value(2).asInstanceOf[Int]) - val lGender : CharacterGender.Value = CharacterGender(value(3).asInstanceOf[Int]) - val lHead : Int = value(4).asInstanceOf[Int] - val lVoice : CharacterVoice.Value = CharacterVoice(value(5).asInstanceOf[Int]) - val lDeleted : Boolean = value(6).asInstanceOf[Boolean] - val lTime = value(7).asInstanceOf[org.joda.time.LocalDateTime].toDateTime().getMillis() / 1000 - val secondsSinceLastLogin = nowTimeInSeconds - lTime - if(!lDeleted) { - avatarArray(i) = new Avatar(value(0).asInstanceOf[Int], lName, lFaction, lGender, lHead, lVoice) - AwardCharacterSelectBattleExperiencePoints(avatarArray(i), 20000000L) - avatarArray(i).CEP = 600000 - playerArray(i) = new Player(avatarArray(i)) - playerArray(i).ExoSuit = ExoSuitType.Reinforced - playerArray(i).Slot(0).Equipment = Tool(GlobalDefinitions.StandardPistol(playerArray(i).Faction)) - playerArray(i).Slot(1).Equipment = Tool(GlobalDefinitions.MediumPistol(playerArray(i).Faction)) - playerArray(i).Slot(2).Equipment = Tool(GlobalDefinitions.HeavyRifle(playerArray(i).Faction)) - playerArray(i).Slot(3).Equipment = Tool(GlobalDefinitions.AntiVehicularLauncher(playerArray(i).Faction)) - playerArray(i).Slot(4).Equipment = Tool(GlobalDefinitions.katana) - SetCharacterSelectScreenGUID(playerArray(i), gen) - val health = playerArray(i).Health - val stamina = playerArray(i).Stamina - val armor = playerArray(i).Armor - playerArray(i).Spawn - sendResponse(ObjectCreateDetailedMessage(ObjectClass.avatar, playerArray(i).GUID, converter.DetailedConstructorData(playerArray(i)).get)) - if(health > 0) { //player can not be dead; stay spawned as alive - playerArray(i).Health = health - playerArray(i).Stamina = stamina - playerArray(i).Armor = armor - } - sendResponse(CharacterInfoMessage(15, PlanetSideZoneID(4), value(0).asInstanceOf[Int], playerArray(i).GUID, false, secondsSinceLastLogin)) - RemoveCharacterSelectScreenGUID(playerArray(i)) - } - } - sendResponse(CharacterInfoMessage(0, PlanetSideZoneID(1), 0, PlanetSideGUID(0), true, 0)) - } - } - Thread.sleep(50) + import ctx._ + val result = ctx.run(query[persistence.Character].filter(c => c.accountId == lift(account.AccountId))) + result.onComplete { + case Success(characters) => + import net.psforever.objects.definition.converter.CharacterSelectConverter + val gen: AtomicInteger = new AtomicInteger(1) + val converter: CharacterSelectConverter = new CharacterSelectConverter - case scala.util.Success(result) => - if(connection.isConnected) connection.disconnect //pre-empt failWithError - failWithError(s"ListAccountCharacters: unexpected query result format - ${result.getClass}") - - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect //pre-empt failWithError - failWithError(s"ListAccountCharacters: query failed - ${e.getMessage}") + characters.filter(!_.deleted) foreach { character => + val secondsSinceLastLogin = + new Period(character.lastLogin, LocalDateTime.now()).toStandardSeconds().getSeconds() + val avatar = character.toAvatar + AwardCharacterSelectBattleExperiencePoints(avatar, 20000000L) + avatar.CEP = 600000 + val player = new Player(avatar) + player.ExoSuit = ExoSuitType.Reinforced + player.Slot(0).Equipment = Tool(GlobalDefinitions.StandardPistol(player.Faction)) + player.Slot(1).Equipment = Tool(GlobalDefinitions.MediumPistol(player.Faction)) + player.Slot(2).Equipment = Tool(GlobalDefinitions.HeavyRifle(player.Faction)) + player.Slot(3).Equipment = Tool(GlobalDefinitions.AntiVehicularLauncher(player.Faction)) + player.Slot(4).Equipment = Tool(GlobalDefinitions.katana) + SetCharacterSelectScreenGUID(player, gen) + val health = player.Health + val stamina = player.Stamina + val armor = player.Armor + player.Spawn + sendResponse( + ObjectCreateDetailedMessage( + ObjectClass.avatar, + player.GUID, + converter.DetailedConstructorData(player).get + ) + ) + if (health > 0) { // player can not be dead; stay spawned as alive + player.Health = health + player.Stamina = stamina + player.Armor = armor + } + sendResponse( + CharacterInfoMessage(15, PlanetSideZoneID(4), character.id, player.GUID, false, secondsSinceLastLogin) + ) + RemoveCharacterSelectScreenGUID(player) } - case scala.util.Failure(e) => - failWithError(s"ListAccountCharacters: no connection - ${e.getMessage}") + sendResponse(CharacterInfoMessage(0, PlanetSideZoneID(1), 0, PlanetSideGUID(0), true, 0)) + case Failure(e) => + failWithError(s"ListAccountCharacters: query failed - ${e.getMessage}") } case Zone.ClientInitialization(zone) => Thread.sleep(connectionState) val continentNumber = zone.Number - val poplist = zone.Players - val popBO = 0 + val poplist = zone.Players + val popBO = 0 //TODO black ops test (partition) val popTR = poplist.count(_.faction == PlanetSideEmpire.TR) val popNC = poplist.count(_.faction == PlanetSideEmpire.NC) @@ -812,9 +928,18 @@ class WorldSessionActor extends Actor StartBundlingPackets() zone.Buildings.foreach({ case (id, building) => initBuilding(continentNumber, building.MapId, building) }) sendResponse(ZonePopulationUpdateMessage(continentNumber, 414, 138, popTR, 138, popNC, 138, popVS, 138, popBO)) - if(continentNumber == 11) sendResponse(ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.NC)) // "The NC have captured the NC Sanctuary." - else if(continentNumber == 12) sendResponse(ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.TR)) // "The TR have captured the TR Sanctuary." - else if(continentNumber == 13) sendResponse(ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.VS)) // "The VS have captured the VS Sanctuary." + if (continentNumber == 11) + sendResponse( + ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.NC) + ) // "The NC have captured the NC Sanctuary." + else if (continentNumber == 12) + sendResponse( + ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.TR) + ) // "The TR have captured the TR Sanctuary." + else if (continentNumber == 13) + sendResponse( + ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.VS) + ) // "The VS have captured the VS Sanctuary." else sendResponse(ContinentalLockUpdateMessage(continentNumber, PlanetSideEmpire.NEUTRAL)) //CaptureFlagUpdateMessage() //VanuModuleUpdateMessage() @@ -822,19 +947,22 @@ class WorldSessionActor extends Actor sendResponse(ZoneInfoMessage(continentNumber, true, 0)) sendResponse(ZoneLockInfoMessage(continentNumber, false, true)) sendResponse(ZoneForcedCavernConnectionsMessage(continentNumber, 0)) - sendResponse(HotSpotUpdateMessage( - continentNumber, - 1, - ZoneHotSpotProjector.SpecificHotSpotInfo(player.Faction, zone.HotSpots) - .map { spot => PacketHotSpotInfo(spot.DisplayLocation.x, spot.DisplayLocation.y, 40) } - )) //normally set for all zones in bulk; should be fine manually updating per zone like this + sendResponse( + HotSpotUpdateMessage( + continentNumber, + 1, + ZoneHotSpotProjector + .SpecificHotSpotInfo(player.Faction, zone.HotSpots) + .map { spot => PacketHotSpotInfo(spot.DisplayLocation.x, spot.DisplayLocation.y, 40) } + ) + ) //normally set for all zones in bulk; should be fine manually updating per zone like this StopBundlingPackets() case Zone.Population.PlayerHasLeft(zone, None) => log.info(s"$avatar does not have a body on ${zone.Id}") case Zone.Population.PlayerHasLeft(zone, Some(tplayer)) => - if(tplayer.isAlive) { + if (tplayer.isAlive) { log.info(s"${tplayer.Name} has left zone ${zone.Id}") } @@ -847,18 +975,20 @@ class WorldSessionActor extends Actor case Zone.Lattice.SpawnPoint(zone_id, spawn_tube) => CancelZoningProcess() var (pos, ori) = spawn_tube.SpecificPoint(continent.GUID(player.VehicleSeated) match { - case Some(obj : Vehicle) if !obj.Destroyed => + case Some(obj: Vehicle) if !obj.Destroyed => obj case _ => player }) spawn_tube.Owner match { - case building : Building => + case building: Building => log.info(s"Zone.Lattice.SpawnPoint: spawn point on $zone_id in building ${building.MapId} selected") - case vehicle : Vehicle => + case vehicle: Vehicle => log.info(s"Zone.Lattice.SpawnPoint: spawn point on $zone_id at ams ${vehicle.GUID.guid} selected") case owner => - log.warn(s"Zone.Lattice.SpawnPoint: spawn point on $zone_id at ${spawn_tube.Position} has unexpected owner $owner") + log.warn( + s"Zone.Lattice.SpawnPoint: spawn point on $zone_id at ${spawn_tube.Position} has unexpected owner $owner" + ) } LoadZonePhysicalSpawnPoint(zone_id, pos, ori, CountSpawnDelay(zone_id, spawn_tube, continent.Id)) @@ -868,20 +998,21 @@ class WorldSessionActor extends Actor RequestSanctuaryZoneSpawn(player, zone_number) case Zone.Lattice.NoValidSpawnPoint(zone_number, Some(spawn_group)) => - log.warn(s"Zone.Lattice.SpawnPoint: zone $zone_number has no available ${player.Faction} targets in spawn group $spawn_group") + log.warn( + s"Zone.Lattice.SpawnPoint: zone $zone_number has no available ${player.Faction} targets in spawn group $spawn_group" + ) reviveTimer.cancel - if(spawn_group == 2) { + if (spawn_group == 2) { sendResponse(ChatMsg(ChatMessageType.CMT_OPEN, false, "", "No friendly AMS is deployed in this region.", None)) cluster ! Zone.Lattice.RequestSpawnPoint(zone_number, player, 0) - } - else { + } else { RequestSanctuaryZoneSpawn(player, zone_number) } - case msg@Zone.Vehicle.CanNotSpawn(zone, vehicle, reason) => + case msg @ Zone.Vehicle.CanNotSpawn(zone, vehicle, reason) => log.warn(s"$msg") - case msg@Zone.Vehicle.CanNotDespawn(zone, vehicle, reason) => + case msg @ Zone.Vehicle.CanNotDespawn(zone, vehicle, reason) => log.warn(s"$msg") case Zone.Deployable.DeployableIsBuilt(obj, tool) => @@ -891,16 +1022,23 @@ class WorldSessionActor extends Actor case None => player.LastDrawnSlot } - if(avatar.Deployables.Accept(obj) || (avatar.Deployables.Valid(obj) && !avatar.Deployables.Contains(obj))) { + if (avatar.Deployables.Accept(obj) || (avatar.Deployables.Valid(obj) && !avatar.Deployables.Contains(obj))) { tool.Definition match { case GlobalDefinitions.ace => - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.TriggerEffectLocation(player.GUID, "spawn_object_effect", obj.Position, obj.Orientation)) + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.TriggerEffectLocation(player.GUID, "spawn_object_effect", obj.Position, obj.Orientation) + ) case GlobalDefinitions.advanced_ace => - sendResponse(GenericObjectActionMessage(player.GUID, 53)) //put fdu down; it will be removed from the client's holster + sendResponse( + GenericObjectActionMessage(player.GUID, 53) + ) //put fdu down; it will be removed from the client's holster continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PutDownFDU(player.GUID)) case GlobalDefinitions.router_telepad => ; case _ => - log.warn(s"Zone.Deployable.DeployableIsBuilt: not sure what kind of construction item to animate - ${tool.Definition}") + log.warn( + s"Zone.Deployable.DeployableIsBuilt: not sure what kind of construction item to animate - ${tool.Definition}" + ) } import scala.concurrent.ExecutionContext.Implicits.global context.system.scheduler.scheduleOnce( @@ -908,8 +1046,7 @@ class WorldSessionActor extends Actor self, WorldSessionActor.FinalizeDeployable(obj, tool, index) ) - } - else { + } else { TryDropFDU(tool, index, obj.Position) sendResponse(ObjectDeployedMessage.Failure(obj.Definition.Name)) obj.Position = Vector3.Zero @@ -917,16 +1054,19 @@ class WorldSessionActor extends Actor continent.Deployables ! Zone.Deployable.Dismiss(obj) } - case WorldSessionActor.FinalizeDeployable(obj : SensorDeployable, tool, index) => + case WorldSessionActor.FinalizeDeployable(obj: SensorDeployable, tool, index) => //motion alarm sensor and sensor disruptor StartBundlingPackets() DeployableBuildActivity(obj) - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.TriggerEffectInfo(player.GUID, "on", obj.GUID, true, 1000)) + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.TriggerEffectInfo(player.GUID, "on", obj.GUID, true, 1000) + ) CommonDestroyConstructionItem(tool, index) FindReplacementConstructionItem(tool, index) StopBundlingPackets() - case WorldSessionActor.FinalizeDeployable(obj : BoomerDeployable, tool, index) => + case WorldSessionActor.FinalizeDeployable(obj: BoomerDeployable, tool, index) => //boomers StartBundlingPackets() DeployableBuildActivity(obj) @@ -938,17 +1078,16 @@ class WorldSessionActor extends Actor trigger.Companion = obj.GUID obj.Trigger = trigger val holster = player.Slot(index) - if(holster.Equipment.contains(tool)) { + if (holster.Equipment.contains(tool)) { holster.Equipment = None taskResolver ! HoldNewEquipmentUp(player, taskResolver)(trigger, index) - } - else { + } else { //don't know where boomer trigger should go; drop it on the ground taskResolver ! NewItemDrop(player, continent)(trigger) } StopBundlingPackets() - case WorldSessionActor.FinalizeDeployable(obj : ExplosiveDeployable, tool, index) => + case WorldSessionActor.FinalizeDeployable(obj: ExplosiveDeployable, tool, index) => //mines StartBundlingPackets() DeployableBuildActivity(obj) @@ -956,7 +1095,7 @@ class WorldSessionActor extends Actor FindReplacementConstructionItem(tool, index) StopBundlingPackets() - case WorldSessionActor.FinalizeDeployable(obj : ComplexDeployable, tool, index) => + case WorldSessionActor.FinalizeDeployable(obj: ComplexDeployable, tool, index) => //tank_traps, spitfires, deployable field turrets and the deployable_shield_generator StartBundlingPackets() DeployableBuildActivity(obj) @@ -964,22 +1103,23 @@ class WorldSessionActor extends Actor FindReplacementConstructionItem(tool, index) StopBundlingPackets() - case WorldSessionActor.FinalizeDeployable(obj : TelepadDeployable, tool, index) => + case WorldSessionActor.FinalizeDeployable(obj: TelepadDeployable, tool, index) => StartBundlingPackets() - if(obj.Health > 0) { + if (obj.Health > 0) { val guid = obj.GUID //router telepad deployable val router = tool.asInstanceOf[Telepad].Router //router must exist and be deployed continent.GUID(router) match { - case Some(vehicle : Vehicle) => + case Some(vehicle: Vehicle) => val routerGUID = router.get - if(vehicle.Destroyed) { + if (vehicle.Destroyed) { //the Telepad was successfully deployed; but, before it could configure, its Router was destroyed sendResponse(ChatMsg(ChatMessageType.UNK_229, false, "", "@Telepad_NoDeploy_RouterLost", None)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent, Some(0 seconds))) - } - else { + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(obj, continent, Some(0 seconds)) + ) + } else { log.info(s"FinalizeDeployable: setup for telepad #${guid.guid} in zone ${continent.Id}") obj.Router = routerGUID //necessary; forwards link to the router DeployableBuildActivity(obj) @@ -992,18 +1132,22 @@ class WorldSessionActor extends Actor case _ => //the Telepad was successfully deployed; but, before it could configure, its Router was deconstructed sendResponse(ChatMsg(ChatMessageType.UNK_229, false, "", "@Telepad_NoDeploy_RouterLost", None)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent, Some(0 seconds))) + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(obj, continent, Some(0 seconds)) + ) } } StopBundlingPackets() - case WorldSessionActor.FinalizeDeployable(obj : PlanetSideGameObject with Deployable, tool, index) => - val guid = obj.GUID + case WorldSessionActor.FinalizeDeployable(obj: PlanetSideGameObject with Deployable, tool, index) => + val guid = obj.GUID val definition = obj.Definition StartBundlingPackets() sendResponse(GenericObjectActionMessage(guid, 21)) //reset build cooldown sendResponse(ObjectDeployedMessage.Failure(definition.Name)) - log.warn(s"FinalizeDeployable: deployable ${definition.asInstanceOf[BaseDeployableDefinition].Item}@$guid not handled by specific case") + log.warn( + s"FinalizeDeployable: deployable ${definition.asInstanceOf[BaseDeployableDefinition].Item}@$guid not handled by specific case" + ) log.warn(s"FinalizeDeployable: deployable will be cleaned up, but may not get unregistered properly") TryDropFDU(tool, index, obj.Position) obj.Position = Vector3.Zero @@ -1011,7 +1155,7 @@ class WorldSessionActor extends Actor StopBundlingPackets() //!!only dispatch Zone.Deployable.Dismiss from WorldSessionActor as cleanup if the target deployable was never fully introduced - case Zone.Deployable.DeployableIsDismissed(obj : TurretDeployable) => + case Zone.Deployable.DeployableIsDismissed(obj: TurretDeployable) => taskResolver ! GUIDTask.UnregisterDeployableTurret(obj)(continent.GUID) //!!only dispatch Zone.Deployable.Dismiss from WorldSessionActor as cleanup if the target deployable was never fully introduced @@ -1027,13 +1171,14 @@ class WorldSessionActor extends Actor import akka.pattern.ask import akka.util.Timeout implicit val timeout = Timeout(1 seconds) - val future = ask(propertyOverrideManager, PropertyOverrideManager.GetOverridesMessage).mapTo[List[PropertyOverrideMessage.GamePropertyScope]] + val future = ask(propertyOverrideManager, PropertyOverrideManager.GetOverridesMessage) + .mapTo[List[PropertyOverrideMessage.GamePropertyScope]] val overrides = Await.result(future, 1 second) sendResponse(PropertyOverrideMessage(overrides)) sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 112, 0)) // disable festive backpacks - sendResponse(ReplicationStreamMessage(5, Some(6), Vector.empty)) //clear squad list + sendResponse(ReplicationStreamMessage(5, Some(6), Vector.empty)) //clear squad list sendResponse(FriendsResponse(FriendAction.InitializeFriendList, 0, true, true, Nil)) sendResponse(FriendsResponse(FriendAction.InitializeIgnoreList, 0, true, true, Nil)) //the following subscriptions last until character switch/logout @@ -1045,10 +1190,10 @@ class WorldSessionActor extends Actor chatService ! Service.Join("broadcast") chatService ! Service.Join("note") chatService ! Service.Join("gm") - galaxyService ! Service.Join("galaxy") //for galaxy-wide messages + galaxyService ! Service.Join("galaxy") //for galaxy-wide messages galaxyService ! Service.Join(s"${avatar.faction}") //for hotspots - squadService ! Service.Join(s"${avatar.faction}") //channel will be player.Faction - squadService ! Service.Join(s"${avatar.CharId}") //channel will be player.CharId (in order to work with packets) + squadService ! Service.Join(s"${avatar.faction}") //channel will be player.Faction + squadService ! Service.Join(s"${avatar.CharId}") //channel will be player.CharId (in order to work with packets) player.Zone match { case Zone.Nowhere => RequestSanctuaryZoneSpawn(player, currentZone = 0) @@ -1063,10 +1208,9 @@ class WorldSessionActor extends Actor oldZone.AvatarEvents ! Service.Leave() oldZone.LocalEvents ! Service.Leave() oldZone.VehicleEvents ! Service.Leave() - if(player.isAlive) { + if (player.isAlive) { self ! NewPlayerLoaded(player) - } - else { + } else { zoneReload = true cluster ! Zone.Lattice.RequestSpawnPoint(zone.Number, player, 0) } @@ -1092,25 +1236,24 @@ class WorldSessionActor extends Actor taskResolver ! RegisterNewAvatar(player) } - case msg@Zoning.InstantAction.Located(zone, _, spawn_point) => + case msg @ Zoning.InstantAction.Located(zone, _, spawn_point) => //in between subsequent reply messages, it does not matter if the destination changes //so long as there is at least one destination at all (including the fallback) - if(ContemplateZoningResponse(Zoning.InstantAction.Request(player.Faction), cluster)) { + if (ContemplateZoningResponse(Zoning.InstantAction.Request(player.Faction), cluster)) { val (pos, ori) = spawn_point.SpecificPoint(player) SpawnThroughZoningProcess(zone, pos, ori) - } - else if(zoningStatus != Zoning.Status.None) { + } else if (zoningStatus != Zoning.Status.None) { instantActionFallbackDestination = Some(msg) } case Zoning.InstantAction.NotLocated() => instantActionFallbackDestination match { - case Some(Zoning.InstantAction.Located(zone, _, spawn_point)) if spawn_point.Owner.Faction == player.Faction && !spawn_point.Offline => - if(ContemplateZoningResponse(Zoning.InstantAction.Request(player.Faction), cluster)) { + case Some(Zoning.InstantAction.Located(zone, _, spawn_point)) + if spawn_point.Owner.Faction == player.Faction && !spawn_point.Offline => + if (ContemplateZoningResponse(Zoning.InstantAction.Request(player.Faction), cluster)) { val (pos, ori) = spawn_point.SpecificPoint(player) SpawnThroughZoningProcess(zone, pos, ori) - } - else if(zoningCounter == 0) { + } else if (zoningCounter == 0) { CancelZoningProcessWithReason("@InstantActionNoHotspotsAvailable") } case _ => @@ -1119,7 +1262,7 @@ class WorldSessionActor extends Actor } case Zoning.Recall.Located(zone, spawn_point) => - if(ContemplateZoningResponse(Zoning.Recall.Request(player.Faction, zone.Id), cluster)) { + if (ContemplateZoningResponse(Zoning.Recall.Request(player.Faction, zone.Id), cluster)) { val (pos, ori) = spawn_point.SpecificPoint(player) SpawnThroughZoningProcess(zone, pos, ori) } @@ -1128,7 +1271,7 @@ class WorldSessionActor extends Actor CancelZoningProcessWithReason(s"@norecall_sanctuary_$reason", Some(ChatMessageType.CMT_QUIT)) case Zoning.Quit() => - if(ContemplateZoningResponse(Zoning.Quit(), self)) { + if (ContemplateZoningResponse(Zoning.Quit(), self)) { log.info("Good-bye") ImmediateDisconnect() } @@ -1140,7 +1283,8 @@ class WorldSessionActor extends Actor //new zone log.info(s"Player ${tplayer.Name} has been loaded") //LoadMapMessage causes the client to send BeginZoningMessage, eventually leading to SetCurrentAvatar - val weaponsEnabled = (continent.Map.Name != "map11" && continent.Map.Name != "map12" && continent.Map.Name != "map13") + val weaponsEnabled = + (continent.Map.Name != "map11" && continent.Map.Name != "map12" && continent.Map.Name != "map13") sendResponse(LoadMapMessage(continent.Map.Name, continent.Id, 40100, 25, weaponsEnabled, continent.Map.Checksum)) //important! the LoadMapMessage must be processed by the client before the avatar is created player = tplayer @@ -1178,7 +1322,7 @@ class WorldSessionActor extends Actor failWithError(s"${tplayer.Name} failed to load anywhere") } - /* + /* The user is either already in the current zone and merely transporting himself from one location to another, also called "dying", or occasionally "deconstructing," or is completely switching in between zones. @@ -1195,21 +1339,29 @@ class WorldSessionActor extends Actor If the maximum number of unsuccessful attempts is reached, some course of action is taken. If the player dies, the process does not need to continue. He may or may not be accompanied by a vehicle at any stage of this process. - */ + */ case SetCurrentAvatar(tplayer, max_attempts, attempt) => respawnTimer.cancel val waitingOnUpstream = upstreamMessageCount == 0 - if(attempt >= max_attempts && waitingOnUpstream) { - log.warn(s"SetCurrentAvatar-max attempt failure: " + - s"zone=${if(zoneLoaded.contains(true)) "loaded" else if(zoneLoaded.contains(false)) "failed" else "unloaded" }," + - s"guid=${tplayer.HasGUID}, control=${(tplayer.Actor != Default.Actor)}, avatar=$waitingOnUpstream") + if (attempt >= max_attempts && waitingOnUpstream) { + log.warn( + s"SetCurrentAvatar-max attempt failure: " + + s"zone=${if (zoneLoaded.contains(true)) "loaded" + else if (zoneLoaded.contains(false)) "failed" + else "unloaded"}," + + s"guid=${tplayer.HasGUID}, control=${(tplayer.Actor != Default.Actor)}, avatar=$waitingOnUpstream" + ) zoneLoaded match { case None | Some(false) => - log.warn("SetCurrentAvatar-max attempt failure: failed to load intended destination zone; routing to faction sanctuary") + log.warn( + "SetCurrentAvatar-max attempt failure: failed to load intended destination zone; routing to faction sanctuary" + ) RequestSanctuaryZoneSpawn(tplayer, continent.Number) case _ => - log.warn("SetCurrentAvatar-max attempt failure: the zone loaded but elements remain unready; restarting the process ...") - val pos = shiftPosition.getOrElse(player.Position) + log.warn( + "SetCurrentAvatar-max attempt failure: the zone loaded but elements remain unready; restarting the process ..." + ) + val pos = shiftPosition.getOrElse(player.Position) val orient = shiftOrientation.getOrElse(player.Orientation) deadState = DeadState.Release sendResponse(AvatarDeadStateMessage(DeadState.Release, 0, 0, pos, player.Faction, true)) @@ -1220,27 +1372,29 @@ class WorldSessionActor extends Actor zoneReload = true LoadZonePhysicalSpawnPoint(toZoneId, pos, orient, respawnTime = 0L) } - } - else if(tplayer.isAlive) { - if( + } else if (tplayer.isAlive) { + if ( zoneLoaded.contains(true) && - tplayer.HasGUID && tplayer.Actor != Default.Actor && (continent.GUID(tplayer.VehicleSeated) match { - case Some(o : Vehicle) => o.HasGUID && o.Actor != Default.Actor && !o.Destroyed - case _ => true + tplayer.HasGUID && tplayer.Actor != Default.Actor && (continent.GUID(tplayer.VehicleSeated) match { + case Some(o: Vehicle) => o.HasGUID && o.Actor != Default.Actor && !o.Destroyed + case _ => true }) ) { - if(waitingOnUpstream) { + if (waitingOnUpstream) { setCurrentAvatarFunc(tplayer) respawnTimer = context.system.scheduler.scheduleOnce( - delay = (if(attempt <= max_attempts / 2) 10 else 5) seconds, + delay = (if (attempt <= max_attempts / 2) 10 else 5) seconds, self, SetCurrentAvatar(tplayer, max_attempts, attempt + max_attempts / 3) ) } //if not the condition above, player has started playing normally - } - else { - respawnTimer = context.system.scheduler.scheduleOnce(500 milliseconds, self, SetCurrentAvatar(tplayer, max_attempts, attempt + 1)) + } else { + respawnTimer = context.system.scheduler.scheduleOnce( + 500 milliseconds, + self, + SetCurrentAvatar(tplayer, max_attempts, attempt + 1) + ) } } @@ -1250,9 +1404,9 @@ class WorldSessionActor extends Actor case NtuDischarging(tplayer, vehicle, silo_guid) => HandleNtuDischarging(tplayer, vehicle, silo_guid) - case Vitality.DamageResolution(target : TelepadDeployable, _) => + case Vitality.DamageResolution(target: TelepadDeployable, _) => //telepads - if(target.Health <= 0) { + if (target.Health <= 0) { //update if destroyed target.Destroyed = true val guid = target.GUID @@ -1260,7 +1414,7 @@ class WorldSessionActor extends Actor Deployables.AnnounceDestroyDeployable(target, Some(0 seconds)) } - case Vitality.DamageResolution(target : PlanetSideGameObject, _) => + case Vitality.DamageResolution(target: PlanetSideGameObject, _) => log.warn(s"Vital target ${target.Definition.Name} damage resolution not supported using this method") case ResponseToSelf(pkt) => @@ -1268,41 +1422,36 @@ class WorldSessionActor extends Actor sendResponse(pkt) case ReceiveAccountData(account) => - log.info(s"Retrieved account data for accountId = ${account.AccountId}") + import ctx._ + log.info(s"Received account data for accountId = ${account.AccountId}") this.account = account admin = account.GM - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "SELECT gm FROM accounts where id=?", Array(account.AccountId).toIndexedSeq - )).onComplete { - case scala.util.Success(queryResult) => - if(connection.isConnected) connection.disconnect - queryResult match { - case row : ArrayRowData => // If we got a row from the database - log.info(s"ReceiveAccountData: ready to load character list for ${account.Username}") - self ! ListAccountCharacters() - case _ => // If the account didn't exist in the database - log.error(s"ReceiveAccountData: ${account.Username} data not found, or unexpected query result format - ${queryResult.getClass}") - Thread.sleep(50) - sendResponse(DropSession(sessionId, "You should not exist!")) - } - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - log.error(s"ReceiveAccountData: ${e.getMessage}") - Thread.sleep(50) + ctx.run(query[persistence.Account].filter(_.id == lift(account.AccountId)).map(_.id)).onComplete { + case Success(accounts) => + accounts.headOption match { + case Some(_) => + log.info(s"ReceiveAccountData: ready to load character list for ${account.Username}") + self ! ListAccountCharacters() + case None => + log.error(s"ReceiveAccountData: ${account.Username} data not found") + sendResponse(DropSession(sessionId, "You should not exist!")) } - case scala.util.Failure(e) => - log.error(s"RetrieveAccountData: no connection ${e.getMessage}") + case Failure(e) => + log.error(s"ReceiveAccountData: ${e.getMessage}") } case LoadedRemoteProjectile(projectile_guid, Some(projectile)) => - if(projectile.profile.ExistsOnRemoteClients) { + if (projectile.profile.ExistsOnRemoteClients) { //spawn projectile on other clients val definition = projectile.Definition continent.AvatarEvents ! AvatarServiceMessage( continent.Id, - AvatarAction.LoadProjectile(player.GUID, definition.ObjectId, projectile_guid, definition.Packet.ConstructorData(projectile).get) + AvatarAction.LoadProjectile( + player.GUID, + definition.ObjectId, + projectile_guid, + definition.Packet.ConstructorData(projectile).get + ) ) } //immediately slated for deletion? @@ -1310,12 +1459,17 @@ class WorldSessionActor extends Actor case LoadedRemoteProjectile(projectile_guid, None) => continent.GUID(projectile_guid) match { - case Some(obj : Projectile) if obj.profile.ExistsOnRemoteClients => + case Some(obj: Projectile) if obj.profile.ExistsOnRemoteClients => //spawn projectile on other clients val definition = obj.Definition continent.AvatarEvents ! AvatarServiceMessage( continent.Id, - AvatarAction.LoadProjectile(player.GUID, definition.ObjectId, projectile_guid, definition.Packet.ConstructorData(obj).get) + AvatarAction.LoadProjectile( + player.GUID, + definition.ObjectId, + projectile_guid, + definition.Packet.ConstructorData(obj).get + ) ) case _ => ; } @@ -1381,9 +1535,9 @@ class WorldSessionActor extends Actor //xy-coordinates indicate sanctuary spawn bias: player.Position = math.abs(scala.util.Random.nextInt() % avatar.name.hashCode % 4) match { case 0 => Vector3(8192, 8192, 0) //NE - case 1 => Vector3(8192, 0, 0) //SE - case 2 => Vector3(0, 0, 0) //SW - case 3 => Vector3(0, 8192, 0) //NW + case 1 => Vector3(8192, 0, 0) //SE + case 2 => Vector3(0, 0, 0) //SW + case 3 => Vector3(0, 8192, 0) //NW } LoadClassicDefault(player) LoadDataBaseLoadouts(player).onComplete { @@ -1397,7 +1551,10 @@ class WorldSessionActor extends Actor //tell the old WorldSessionActor to kill itself by using its own subscriptions against itself inZone.AvatarEvents ! AvatarServiceMessage(playerName, AvatarAction.TeardownConnection()) //find and reload previous player - (inZone.Players.find(p => p.name.equals(playerName)), inZone.LivePlayers.find(p => p.Name.equals(playerName))) match { + ( + inZone.Players.find(p => p.name.equals(playerName)), + inZone.LivePlayers.find(p => p.Name.equals(playerName)) + ) match { case (_, Some(p)) if p.death_by == -1 => //player is not allowed KickedByAdministration() @@ -1450,13 +1607,18 @@ class WorldSessionActor extends Actor log.warn(s"LoginInfo: player $playerName is denied login for reason: $reason") reason match { case PlayerToken.DeniedLoginReason.Kicked => KickedByAdministration() - case _ => sendResponse(DisconnectMessage("You will be logged out.")) + case _ => sendResponse(DisconnectMessage("You will be logged out.")) } - case msg @ Containable.ItemPutInSlot(_ : PlanetSideServerObject with Container, _ : Equipment, _ : Int, _ : Option[Equipment]) => + case msg @ Containable.ItemPutInSlot( + _: PlanetSideServerObject with Container, + _: Equipment, + _: Int, + _: Option[Equipment] + ) => log.info(s"$msg") - case msg @ Containable.CanNotPutItemInSlot(_ : PlanetSideServerObject with Container, _ : Equipment, _ : Int) => + case msg @ Containable.CanNotPutItemInSlot(_: PlanetSideServerObject with Container, _: Equipment, _: Int) => log.info(s"$msg") case default => @@ -1467,20 +1629,20 @@ class WorldSessionActor extends Actor * Update this player avatar for persistence. * @param persistRef reference to the persistence monitor */ - def UpdatePersistence(persistRef : ActorRef)() : Unit = { + def UpdatePersistence(persistRef: ActorRef)(): Unit = { persistRef ! AccountPersistenceService.Update(player.Name, continent, player.Position) } /** * Do not update this player avatar for persistence. */ - def NoPersistence() : Unit = {} + def NoPersistence(): Unit = {} /** * Common action to perform before starting the transition to client initialization. * That the operation completes before client initialization begins is important. */ - def UpdateLoginTimeThenDoClientInitialization() : Unit = { + def UpdateLoginTimeThenDoClientInitialization(): Unit = { UpdateCharacterLoginTime(avatar.CharId).onComplete { case _ => cluster ! InterstellarCluster.RequestClientInitialization() @@ -1489,36 +1651,19 @@ class WorldSessionActor extends Actor /** * Updating the character login time is an important bookkeeping aspect of a player who is (re)joining the server. - * Logging into the server or relogging from an unexpected connection loss both qualify to update the time.
- *
- * The operation requires a database connection and completion of a database transaction, - * both of which must completed independently of any subsequent tasking, - * especially if that future tasking may require database use. - * @see `Connection.sendPreparedStatement` - * @see `Database.getConnection` - * @see `Future` - * @see `java.sql.Timestamp` - * @see `Promise` - * @param charId the character unique identifier number to update in the system - * @return a `Future` predicated by the "promise" of the task being completed + * Logging into the server or relogging from an unexpected connection loss both qualify to update the time. */ - def UpdateCharacterLoginTime(charId : Long) : Future[Any] = { - val result : Promise[Any] = Promise[Any]() - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "UPDATE characters SET last_login = ? where id=?", List(new java.sql.Timestamp(System.currentTimeMillis), charId) - )).onComplete { - case _ => - if(connection.isConnected) connection.disconnect - result success true - } - case _ => - val msg = s"UpdateCharacterLoginTime: could not update login time for $charId" - log.error(msg) - result failure new Throwable(msg) + def UpdateCharacterLoginTime(charId: Long): Future[Any] = { + import ctx._ + val result = ctx.run( + query[persistence.Character].filter(_.id == lift(charId)).update(_.lastLogin -> lift(LocalDateTime.now())) + ) + result.onComplete { + case Success(_) => + case Failure(e) => + log.error(s"UpdateCharacterLoginTime: ${e.getMessage}") } - result.future + result } /** @@ -1540,9 +1685,9 @@ class WorldSessionActor extends Actor * @return `true`, if the zoning transportation process should start; * `false`, otherwise */ - def ContemplateZoningResponse(nextStepMsg : Any, to : ActorRef) : Boolean = { + def ContemplateZoningResponse(nextStepMsg: Any, to: ActorRef): Boolean = { val descriptor = zoningType.toString.toLowerCase - if(zoningStatus == Zoning.Status.Request) { + if (zoningStatus == Zoning.Status.Request) { DeactivateImplants() zoningStatus = Zoning.Status.Countdown val (time, origin) = ZoningStartInitialMessageAndTimer() @@ -1554,26 +1699,23 @@ class WorldSessionActor extends Actor zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) zoningTimer = context.system.scheduler.scheduleOnce(5 seconds, to, nextStepMsg) false - } - else if(zoningStatus == Zoning.Status.Countdown) { + } else if (zoningStatus == Zoning.Status.Countdown) { zoningCounter -= 5 zoningReset.cancel zoningTimer.cancel - if(zoningCounter > 0) { - if(zoningCountdownMessages.contains(zoningCounter)) { + if (zoningCounter > 0) { + if (zoningCountdownMessages.contains(zoningCounter)) { sendResponse(ChatMsg(zoningChatMessageType, false, "", s"@${descriptor}_$zoningCounter", None)) } //again zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) zoningTimer = context.system.scheduler.scheduleOnce(5 seconds, to, nextStepMsg) false - } - else { + } else { //zoning deployment true } - } - else { + } else { false } } @@ -1587,30 +1729,28 @@ class WorldSessionActor extends Actor * Being anywhere in one's faction's own sanctuary is a special case. * @return a `Tuple` composed of the initial countdown time and the descriptor for message composition */ - def ZoningStartInitialMessageAndTimer() : (Int, String) = { - val location = (if(Zones.SanctuaryZoneNumber(player.Faction) == continent.Number) { - Zoning.Time.Sanctuary - } - else { - val playerPosition = player.Position.xy - (continent.Buildings - .values - .filter { building => - val radius = building.Definition.SOIRadius - Vector3.DistanceSquared(building.Position.xy, playerPosition) < radius * radius - }) match { - case Nil => - Zoning.Time.None - case List(building) => - if(building.Faction == player.Faction) Zoning.Time.Friendly - else if(building.Faction == PlanetSideEmpire.NEUTRAL) Zoning.Time.Neutral - else Zoning.Time.Enemy - case buildings => - if(buildings.exists(_.Faction == player.Faction)) Zoning.Time.Friendly - else if(buildings.exists(_.Faction == PlanetSideEmpire.NEUTRAL)) Zoning.Time.Neutral - else Zoning.Time.Enemy - } - }) + def ZoningStartInitialMessageAndTimer(): (Int, String) = { + val location = (if (Zones.SanctuaryZoneNumber(player.Faction) == continent.Number) { + Zoning.Time.Sanctuary + } else { + val playerPosition = player.Position.xy + (continent.Buildings.values + .filter { building => + val radius = building.Definition.SOIRadius + Vector3.DistanceSquared(building.Position.xy, playerPosition) < radius * radius + }) match { + case Nil => + Zoning.Time.None + case List(building) => + if (building.Faction == player.Faction) Zoning.Time.Friendly + else if (building.Faction == PlanetSideEmpire.NEUTRAL) Zoning.Time.Neutral + else Zoning.Time.Enemy + case buildings => + if (buildings.exists(_.Faction == player.Faction)) Zoning.Time.Friendly + else if (buildings.exists(_.Faction == PlanetSideEmpire.NEUTRAL)) Zoning.Time.Neutral + else Zoning.Time.Enemy + } + }) (location.id, location.descriptor.toLowerCase) } @@ -1620,17 +1760,16 @@ class WorldSessionActor extends Actor * @param spawnPosition the destination spawn position * @param spawnOrientation the destination spawn orientation */ - def SpawnThroughZoningProcess(zone : Zone, spawnPosition : Vector3, spawnOrientation : Vector3) : Unit = { + def SpawnThroughZoningProcess(zone: Zone, spawnPosition: Vector3, spawnOrientation: Vector3): Unit = { CancelZoningProcess() PlayerActionsToCancel() CancelAllProximityUnits() continent.Population ! Zone.Population.Release(avatar) - val respawnTime : Long = if(zone.Number == continent.Number) { + val respawnTime: Long = if (zone.Number == continent.Number) { //distract the user while he slips through the cracks of reality GoToDeploymentMap() 1L - } - else { + } else { //zone loading will take long enough 0L } @@ -1645,14 +1784,14 @@ class WorldSessionActor extends Actor * @param hotspotPosition where is the hotspot that is being addressed * @param spawnPosition the destination spawn position (may not be related to a literal `SpawnPoint` entity) */ - def YouCantInstantActionUsingDroppod(zone : Zone, hotspotPosition : Vector3, spawnPosition : Vector3) : Unit = { + def YouCantInstantActionUsingDroppod(zone: Zone, hotspotPosition: Vector3, spawnPosition: Vector3): Unit = { CancelZoningProcess() PlayerActionsToCancel() CancelAllProximityUnits() //find a safe drop point var targetBuildings = zone.Buildings.values - var whereToDroppod = spawnPosition.xy - while(targetBuildings.nonEmpty) { + var whereToDroppod = spawnPosition.xy + while (targetBuildings.nonEmpty) { (targetBuildings .filter { building => val radius = building.Definition.SOIRadius @@ -1664,12 +1803,14 @@ class WorldSessionActor extends Actor case List(building) => //blocked by a single soi; find space just outside of this soi and confirm no new overlap val radius = Vector3(0, building.Definition.SOIRadius.toFloat + 5f, 0) - whereToDroppod = building.Position.xy + Vector3.Rz(radius, math.abs(scala.util.Random.nextInt() % 360).toFloat) + whereToDroppod = + building.Position.xy + Vector3.Rz(radius, math.abs(scala.util.Random.nextInt() % 360).toFloat) case buildings => //probably blocked by a facility and its tower (maximum overlap potential is 2?); find space outside of largest soi val largestBuilding = buildings.maxBy(_.Definition.SOIRadius) - val radius = Vector3(0, largestBuilding.Definition.SOIRadius.toFloat + 5f, 0) - whereToDroppod = largestBuilding.Position.xy + Vector3.Rz(radius, math.abs(scala.util.Random.nextInt() % 360).toFloat) + val radius = Vector3(0, largestBuilding.Definition.SOIRadius.toFloat + 5f, 0) + whereToDroppod = + largestBuilding.Position.xy + Vector3.Rz(radius, math.abs(scala.util.Random.nextInt() % 360).toFloat) targetBuildings = buildings } } @@ -1679,8 +1820,8 @@ class WorldSessionActor extends Actor droppod.Position = whereToDroppod.xy + Vector3.z(1024) droppod.Orientation = Vector3.z(180) //you always seems to land looking south; don't know why droppod.Seats(0).Occupant = player - droppod.GUID = PlanetSideGUID(0) //droppod is not registered, we must jury-rig this - droppod.Invalidate() //now, we must short-circuit the jury-rig + droppod.GUID = PlanetSideGUID(0) //droppod is not registered, we must jury-rig this + droppod.Invalidate() //now, we must short-circuit the jury-rig interstellarFerry = Some(droppod) //leverage vehicle gating player.Position = droppod.Position LoadZonePhysicalSpawnPoint(zone.Id, droppod.Position, Vector3.Zero, 0L) @@ -1691,7 +1832,7 @@ class WorldSessionActor extends Actor * The user no longer expects to perform a zoning event for this reason. * @param msg the message to the user */ - def CancelZoningProcessWithDescriptiveReason(msg : String) : Unit = { + def CancelZoningProcessWithDescriptiveReason(msg: String): Unit = { CancelZoningProcessWithReason(s"@${zoningType.toString.toLowerCase}_$msg", Some(zoningChatMessageType)) } @@ -1702,8 +1843,8 @@ class WorldSessionActor extends Actor * normally, this message uses the same value as `zoningChatMessageType`s * defaults to `None` */ - def CancelZoningProcessWithReason(msg : String, msgType : Option[ChatMessageType.Value] = None) : Unit = { - if(zoningStatus > Zoning.Status.None) { + def CancelZoningProcessWithReason(msg: String, msgType: Option[ChatMessageType.Value] = None): Unit = { + if (zoningStatus > Zoning.Status.None) { sendResponse(ChatMsg(msgType.getOrElse(zoningChatMessageType), false, "", msg, None)) } CancelZoningProcess() @@ -1713,7 +1854,7 @@ class WorldSessionActor extends Actor * The user no longer expects to perform a zoning event, * or the process is merely resetting its internal state. */ - def CancelZoningProcess() : Unit = { + def CancelZoningProcess(): Unit = { zoningTimer.cancel zoningReset.cancel zoningType = Zoning.Method.None @@ -1729,9 +1870,10 @@ class WorldSessionActor extends Actor * @param guid na * @param reply na */ - def HandleAvatarServiceResponse(toChannel : String, guid : PlanetSideGUID, reply : AvatarResponse.Response) : Unit = { - val tplayer_guid = if(player.HasGUID) player.GUID - else PlanetSideGUID(0) + def HandleAvatarServiceResponse(toChannel: String, guid: PlanetSideGUID, reply: AvatarResponse.Response): Unit = { + val tplayer_guid = + if (player.HasGUID) player.GUID + else PlanetSideGUID(0) reply match { case AvatarResponse.TeardownConnection() => log.info("ending session by event system request (relog)") @@ -1741,28 +1883,31 @@ class WorldSessionActor extends Actor sendResponse(msg) case AvatarResponse.SendResponseTargeted(target_guid, msg) => - if(tplayer_guid == target_guid) { + if (tplayer_guid == target_guid) { sendResponse(msg) } case AvatarResponse.Revive(target_guid) => - if(tplayer_guid == target_guid) { + if (tplayer_guid == target_guid) { reviveTimer.cancel deadState = DeadState.Alive player.Revive val health = player.Health sendResponse(PlanetsideAttributeMessage(target_guid, 0, health)) sendResponse(AvatarDeadStateMessage(DeadState.Alive, 0, 0, player.Position, player.Faction, true)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttributeToAll(target_guid, 0, health)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttributeToAll(target_guid, 0, health) + ) } case AvatarResponse.ArmorChanged(suit, subtype) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ArmorChangedMessage(guid, suit, subtype)) } case AvatarResponse.ChangeAmmo(weapon_guid, weapon_slot, previous_guid, ammo_id, ammo_guid, ammo_data) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectDetachMessage(weapon_guid, previous_guid, Vector3.Zero, 0)) sendResponse( ObjectCreateMessage( @@ -1776,17 +1921,17 @@ class WorldSessionActor extends Actor } case AvatarResponse.ChangeFireMode(item_guid, mode) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ChangeFireModeMessage(item_guid, mode)) } case AvatarResponse.ChangeFireState_Start(weapon_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ChangeFireStateMessage_Start(weapon_guid)) } case AvatarResponse.ChangeFireState_Stop(weapon_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ChangeFireStateMessage_Stop(weapon_guid)) } @@ -1794,23 +1939,28 @@ class WorldSessionActor extends Actor sendResponse(GenericObjectActionMessage(guid, 9)) case AvatarResponse.EnvironmentalDamage(target, source, amount) => - if(player.isAlive && amount > 0) { - val playerGUID = player.GUID - val armor = player.Armor - val capacitor = player.Capacitor + if (player.isAlive && amount > 0) { + val playerGUID = player.GUID + val armor = player.Armor + val capacitor = player.Capacitor val originalHealth = player.Health //history continent.GUID(source) match { - case Some(obj : Painbox) => + case Some(obj: Painbox) => player.History(DamageFromPainbox(PlayerSource(player), obj, amount)) case _ => ; } CancelZoningProcessWithDescriptiveReason("cancel_dmg") player.Health = originalHealth - amount sendResponse(PlanetsideAttributeMessage(target, 0, player.Health)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(target, 0, player.Health)) - damageLog.info(s"${player.Name}-infantry: BEFORE=$originalHealth/$armor/$capacitor, AFTER=${player.Health}/$armor/$capacitor, CHANGE=$amount/0/0") - if(player.Health == 0 && player.isAlive) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(target, 0, player.Health) + ) + damageLog.info( + s"${player.Name}-infantry: BEFORE=$originalHealth/$armor/$capacitor, AFTER=${player.Health}/$armor/$capacitor, CHANGE=$amount/0/0" + ) + if (player.Health == 0 && player.isAlive) { player.Actor ! Player.Die() } } @@ -1829,22 +1979,22 @@ class WorldSessionActor extends Actor sendResponse(DestroyDisplayMessage(killer, victim, method, unk)) case AvatarResponse.DropItem(pkt) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(pkt) } case AvatarResponse.EquipmentInHand(pkt) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(pkt) } case AvatarResponse.GenericObjectAction(object_guid, action_code) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(GenericObjectActionMessage(object_guid, action_code)) } case AvatarResponse.HitHint(source_guid) => - if(player.isAlive) { + if (player.isAlive) { sendResponse(HitHint(source_guid, guid)) CancelZoningProcessWithDescriptiveReason("cancel_dmg") } @@ -1856,7 +2006,7 @@ class WorldSessionActor extends Actor zoningStatus = Zoning.Status.None deadState = DeadState.Dead continent.GUID(mount) match { - case Some(obj : Vehicle) => + case Some(obj: Vehicle) => TotalDriverVehicleControl(obj) UnAccessContents(obj) case _ => ; @@ -1864,42 +2014,46 @@ class WorldSessionActor extends Actor PlayerActionsToCancel() CancelAllProximityUnits() CancelZoningProcessWithDescriptiveReason("cancel") - if(shotsWhileDead > 0) { - log.warn(s"KillPlayer/SHOTS_WHILE_DEAD: client of ${avatar.name} fired $shotsWhileDead rounds while character was dead on server") + if (shotsWhileDead > 0) { + log.warn( + s"KillPlayer/SHOTS_WHILE_DEAD: client of ${avatar.name} fired $shotsWhileDead rounds while character was dead on server" + ) shotsWhileDead = 0 } - import scala.concurrent.ExecutionContext.Implicits.global reviveTimer.cancel - if(player.death_by == 0) { + if (player.death_by == 0) { import scala.concurrent.ExecutionContext.Implicits.global - reviveTimer = context.system.scheduler.scheduleOnce(respawnTimer milliseconds, cluster, Zone.Lattice.RequestSpawnPoint(Zones.SanctuaryZoneNumber(player.Faction), player, 7)) - } - else { + reviveTimer = context.system.scheduler.scheduleOnce( + respawnTimer milliseconds, + cluster, + Zone.Lattice.RequestSpawnPoint(Zones.SanctuaryZoneNumber(player.Faction), player, 7) + ) + } else { HandleReleaseAvatar(player, continent) } case AvatarResponse.LoadPlayer(pkt) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(pkt) } case AvatarResponse.LoadProjectile(pkt) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(pkt) } case AvatarResponse.ObjectDelete(item_guid, unk) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectDeleteMessage(item_guid, unk)) } case AvatarResponse.ObjectHeld(slot) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectHeldMessage(guid, slot, false)) } case AvatarResponse.PlanetsideAttribute(attribute_type, attribute_value) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(PlanetsideAttributeMessage(guid, attribute_type, attribute_value)) } @@ -1907,25 +2061,37 @@ class WorldSessionActor extends Actor sendResponse(PlanetsideAttributeMessage(guid, attribute_type, attribute_value)) case AvatarResponse.PlanetsideAttributeSelf(attribute_type, attribute_value) => - if(tplayer_guid == guid) { + if (tplayer_guid == guid) { sendResponse(PlanetsideAttributeMessage(guid, attribute_type, attribute_value)) } - case AvatarResponse.PlayerState(pos, vel, yaw, pitch, yaw_upper, seq_time, is_crouching, is_jumping, jump_thrust, is_cloaking, spectating, weaponInHand) => - if(tplayer_guid != guid) { + case AvatarResponse.PlayerState( + pos, + vel, + yaw, + pitch, + yaw_upper, + seq_time, + is_crouching, + is_jumping, + jump_thrust, + is_cloaking, + spectating, + weaponInHand + ) => + if (tplayer_guid != guid) { val now = System.currentTimeMillis() - val (location, time, distanceSq) : (Vector3, Long, Float) = if(spectating) { - val r = new scala.util.Random + val (location, time, distanceSq): (Vector3, Long, Float) = if (spectating) { + val r = new scala.util.Random val r1 = 2 + r.nextInt(30).toFloat val r2 = 2 + r.nextInt(4000).toFloat (Vector3(r2, r2, r1), 0L, 0f) - } - else { + } else { val before = player.lastSeenStreamMessage(guid.guid) - val dist = Vector3.DistanceSquared(player.Position, pos) + val dist = Vector3.DistanceSquared(player.Position, pos) (pos, now - before, dist) } - if(distanceSq < 302500 || time > 5000) { // Render distance seems to be approx 525m. Reduce update rate at ~550m to be safe + if (distanceSq < 302500 || time > 5000) { // Render distance seems to be approx 525m. Reduce update rate at ~550m to be safe sendResponse( PlayerStateMessage( guid, @@ -1946,39 +2112,49 @@ class WorldSessionActor extends Actor } case AvatarResponse.ProjectileExplodes(projectile_guid, projectile) => - sendResponse(ProjectileStateMessage(projectile_guid, projectile.Position, Vector3.Zero, projectile.Orientation, 0, true, PlanetSideGUID(0))) + sendResponse( + ProjectileStateMessage( + projectile_guid, + projectile.Position, + Vector3.Zero, + projectile.Orientation, + 0, + true, + PlanetSideGUID(0) + ) + ) sendResponse(ObjectDeleteMessage(projectile_guid, 2)) case AvatarResponse.ProjectileAutoLockAwareness(mode) => sendResponse(GenericActionMessage(mode)) case AvatarResponse.ProjectileState(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ProjectileStateMessage(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid)) } case AvatarResponse.PutDownFDU(target) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(GenericObjectActionMessage(target, 53)) } case AvatarResponse.Release(tplayer) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { DepictPlayerAsCorpse(tplayer) } case AvatarResponse.Reload(item_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ReloadMessage(item_guid, 1, 0)) } case AvatarResponse.SetEmpire(object_guid, faction) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(SetEmpireMessage(object_guid, faction)) } case AvatarResponse.StowEquipment(target, slot, item) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { val definition = item.Definition sendResponse( ObjectCreateDetailedMessage( @@ -1991,12 +2167,12 @@ class WorldSessionActor extends Actor } case AvatarResponse.WeaponDryFire(weapon_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { // Check that the magazine is still empty before sending WeaponDryFireMessage // As it could have been reloaded since the packet was dispatched, which would make other clients not see it firing continent.GUID(weapon_guid) match { - case Some(tool : Tool) => { - if(tool.Magazine == 0) { + case Some(tool: Tool) => { + if (tool.Magazine == 0) { sendResponse(WeaponDryFireMessage(weapon_guid)) } } @@ -2008,23 +2184,40 @@ class WorldSessionActor extends Actor sendResponse(ItemTransactionResultMessage(terminal_guid, action, result)) lastTerminalOrderFulfillment = true - case AvatarResponse.ChangeExosuit(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drop, delete) => + case AvatarResponse.ChangeExosuit( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drop, + delete + ) => StartBundlingPackets() sendResponse(ArmorChangedMessage(target, exosuit, subtype)) sendResponse(PlanetsideAttributeMessage(target, 4, player.Armor)) - if(tplayer_guid == target) { + if (tplayer_guid == target) { //happening to this player - if(exosuit == ExoSuitType.MAX) { + if (exosuit == ExoSuitType.MAX) { sendResponse(AvatarVehicleTimerMessage(player.GUID, whenUsedLastMAXName(subtype), 300, true)) } //cleanup sendResponse(ObjectHeldMessage(target, Player.HandsDownSlot, false)) - (old_holsters ++ old_inventory ++ delete).foreach { case (_, guid) => sendResponse(ObjectDeleteMessage(guid, 0)) } + (old_holsters ++ old_inventory ++ delete).foreach { + case (_, guid) => sendResponse(ObjectDeleteMessage(guid, 0)) + } //functionally delete delete.foreach { case (obj, _) => taskResolver ! GUIDTask.UnregisterEquipment(obj)(continent.GUID) } //redraw - if(maxhand) { - taskResolver ! HoldNewEquipmentUp(player, taskResolver)(Tool(GlobalDefinitions.MAXArms(subtype, player.Faction)), 0) + if (maxhand) { + taskResolver ! HoldNewEquipmentUp(player, taskResolver)( + Tool(GlobalDefinitions.MAXArms(subtype, player.Faction)), + 0 + ) } //draw free hand player.FreeHand.Equipment match { @@ -2041,62 +2234,77 @@ class WorldSessionActor extends Actor case None => ; } //draw holsters and inventory - (holsters ++ inventory).foreach { case InventoryItem(obj, index) => - val definition = obj.Definition - sendResponse( - ObjectCreateDetailedMessage( - definition.ObjectId, - obj.GUID, - ObjectCreateMessageParent(target, index), - definition.Packet.DetailedConstructorData(obj).get + (holsters ++ inventory).foreach { + case InventoryItem(obj, index) => + val definition = obj.Definition + sendResponse( + ObjectCreateDetailedMessage( + definition.ObjectId, + obj.GUID, + ObjectCreateMessageParent(target, index), + definition.Packet.DetailedConstructorData(obj).get + ) ) - ) } DropLeftovers(player)(drop) - } - else { + } else { //happening to some other player sendResponse(ObjectHeldMessage(target, slot, false)) //cleanup (old_holsters ++ delete).foreach { case (_, guid) => sendResponse(ObjectDeleteMessage(guid, 0)) } //draw holsters - holsters.foreach { case InventoryItem(obj, index) => - val definition = obj.Definition - sendResponse( - ObjectCreateMessage( - definition.ObjectId, - obj.GUID, - ObjectCreateMessageParent(target, index), - definition.Packet.ConstructorData(obj).get + holsters.foreach { + case InventoryItem(obj, index) => + val definition = obj.Definition + sendResponse( + ObjectCreateMessage( + definition.ObjectId, + obj.GUID, + ObjectCreateMessageParent(target, index), + definition.Packet.ConstructorData(obj).get + ) ) - ) } } StopBundlingPackets() - case AvatarResponse.ChangeLoadout(target, exosuit, subtype, slot, maxhand, old_holsters, holsters, old_inventory, inventory, drops) => + case AvatarResponse.ChangeLoadout( + target, + exosuit, + subtype, + slot, + maxhand, + old_holsters, + holsters, + old_inventory, + inventory, + drops + ) => StartBundlingPackets() sendResponse(ArmorChangedMessage(target, exosuit, subtype)) sendResponse(PlanetsideAttributeMessage(target, 4, player.Armor)) - if(tplayer_guid == target) { + if (tplayer_guid == target) { //happening to this player - if(exosuit == ExoSuitType.MAX) { + if (exosuit == ExoSuitType.MAX) { sendResponse(AvatarVehicleTimerMessage(player.GUID, whenUsedLastMAXName(subtype), 300, true)) } sendResponse(ObjectHeldMessage(target, Player.HandsDownSlot, false)) //cleanup - (old_holsters ++ old_inventory).foreach { case (obj, guid) => - sendResponse(ObjectDeleteMessage(guid, 0)) - taskResolver ! GUIDTask.UnregisterEquipment(obj)(continent.GUID) + (old_holsters ++ old_inventory).foreach { + case (obj, guid) => + sendResponse(ObjectDeleteMessage(guid, 0)) + taskResolver ! GUIDTask.UnregisterEquipment(obj)(continent.GUID) } //redraw - if(maxhand) { - taskResolver ! HoldNewEquipmentUp(player, taskResolver)(Tool(GlobalDefinitions.MAXArms(subtype, player.Faction)), 0) + if (maxhand) { + taskResolver ! HoldNewEquipmentUp(player, taskResolver)( + Tool(GlobalDefinitions.MAXArms(subtype, player.Faction)), + 0 + ) } ApplyPurchaseTimersBeforePackingLoadout(player, player, holsters ++ inventory) DropLeftovers(player)(drops) - } - else { + } else { //happening to some other player sendResponse(ObjectHeldMessage(target, slot, false)) //cleanup @@ -2125,31 +2333,36 @@ class WorldSessionActor extends Actor * @param target the location in which the equipment will be stowed * @param slots the equipment, in the standard object-slot format container */ - def ApplyPurchaseTimersBeforePackingLoadout(player : Player, target : PlanetSideServerObject with Container, slots : List[InventoryItem]) : Unit = { + def ApplyPurchaseTimersBeforePackingLoadout( + player: Player, + target: PlanetSideServerObject with Container, + slots: List[InventoryItem] + ): Unit = { //depiction of packed equipment is handled through callbacks - val loadoutEquipmentFunc : (Equipment, Int)=>TaskResolver.GiveTask = PutLoadoutEquipmentInInventory(target, taskResolver) + val loadoutEquipmentFunc: (Equipment, Int) => TaskResolver.GiveTask = + PutLoadoutEquipmentInInventory(target, taskResolver) val time = System.currentTimeMillis - slots.collect { case _obj@InventoryItem(obj, slot) - if { - val id = obj.Definition.ObjectId + slots.collect { + case _obj @ InventoryItem(obj, slot) if { + val id = obj.Definition.ObjectId + delayedPurchaseEntries.get(id) match { + case Some(delay) => + val lastUse = player.GetLastPurchaseTime(id) + time - lastUse > delay + case None => + true + } + } => + val definition = obj.Definition + val id = definition.ObjectId + player.SetLastPurchaseTime(id, time) + player.ObjectTypeNameReference(id.toLong, definition.Name) delayedPurchaseEntries.get(id) match { case Some(delay) => - val lastUse = player.GetLastPurchaseTime(id) - time - lastUse > delay - case None => - true + sendResponse(AvatarVehicleTimerMessage(player.GUID, definition.Name, delay / 1000, true)) + case _ => ; } - } => - val definition = obj.Definition - val id = definition.ObjectId - player.SetLastPurchaseTime(id, time) - player.ObjectTypeNameReference(id.toLong, definition.Name) - delayedPurchaseEntries.get(id) match { - case Some(delay) => - sendResponse(AvatarVehicleTimerMessage(player.GUID, definition.Name, delay / 1000, true)) - case _ => ; - } - taskResolver ! loadoutEquipmentFunc(obj, slot) + taskResolver ! loadoutEquipmentFunc(obj, slot) } } @@ -2159,14 +2372,17 @@ class WorldSessionActor extends Actor * @param msg na * @param order na */ - def HandleDoorMessage(tplayer : Player, msg : UseItemMessage, order : Door.Exchange) : Unit = { + def HandleDoorMessage(tplayer: Player, msg: UseItemMessage, order: Door.Exchange): Unit = { val door_guid = msg.object_guid order match { case Door.OpenEvent() => continent.GUID(door_guid) match { - case Some(door : Door) => + case Some(door: Door) => sendResponse(GenericObjectStateMsg(door_guid, 16)) - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.DoorOpens(tplayer.GUID, continent, door)) + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.DoorOpens(tplayer.GUID, continent, door) + ) case _ => log.warn(s"door $door_guid wanted to be opened but could not be found") @@ -2186,9 +2402,10 @@ class WorldSessionActor extends Actor * @param guid na * @param reply na */ - def HandleLocalServiceResponse(toChannel : String, guid : PlanetSideGUID, reply : LocalResponse.Response) : Unit = { - val tplayer_guid = if(player.HasGUID) player.GUID - else PlanetSideGUID(0) + def HandleLocalServiceResponse(toChannel: String, guid: PlanetSideGUID, reply: LocalResponse.Response): Unit = { + val tplayer_guid = + if (player.HasGUID) player.GUID + else PlanetSideGUID(0) reply match { case LocalResponse.AlertDestroyDeployable(obj) => //the (former) owner (obj.OwnerName) should process this message @@ -2196,16 +2413,16 @@ class WorldSessionActor extends Actor UpdateDeployableUIElements(avatar.Deployables.UpdateUIElement(obj.Definition.Item)) case LocalResponse.DeployableMapIcon(behavior, deployInfo) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(DeployableObjectsInfoMessage(behavior, deployInfo)) } - case LocalResponse.Detonate(guid, obj : BoomerDeployable) => + case LocalResponse.Detonate(guid, obj: BoomerDeployable) => sendResponse(TriggerEffectMessage(guid, "detonate_boomer")) sendResponse(PlanetsideAttributeMessage(guid, 29, 1)) sendResponse(ObjectDeleteMessage(guid, 0)) - case LocalResponse.Detonate(guid, obj : ExplosiveDeployable) => + case LocalResponse.Detonate(guid, obj: ExplosiveDeployable) => sendResponse(GenericObjectActionMessage(guid, 19)) sendResponse(PlanetsideAttributeMessage(guid, 29, 1)) sendResponse(ObjectDeleteMessage(guid, 0)) @@ -2214,75 +2431,79 @@ class WorldSessionActor extends Actor log.warn(s"LocalResponse.Detonate: ${obj.Definition.Name} not configured to explode correctly") case LocalResponse.DoorOpens(door_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(GenericObjectStateMsg(door_guid, 16)) } case LocalResponse.DoorCloses(door_guid) => //door closes for everyone sendResponse(GenericObjectStateMsg(door_guid, 17)) - case LocalResponse.EliminateDeployable(obj : TurretDeployable, guid, pos) => - if(obj.Destroyed) { + case LocalResponse.EliminateDeployable(obj: TurretDeployable, guid, pos) => + if (obj.Destroyed) { DeconstructDeployable(obj, guid, pos) - } - else { + } else { obj.Destroyed = true - DeconstructDeployable(obj, guid, pos, obj.Orientation, if(obj.MountPoints.isEmpty) 2 - else 1) + DeconstructDeployable( + obj, + guid, + pos, + obj.Orientation, + if (obj.MountPoints.isEmpty) 2 + else 1 + ) } - case LocalResponse.EliminateDeployable(obj : ExplosiveDeployable, guid, pos) => - if(obj.Destroyed || obj.Jammed || obj.Health == 0) { + case LocalResponse.EliminateDeployable(obj: ExplosiveDeployable, guid, pos) => + if (obj.Destroyed || obj.Jammed || obj.Health == 0) { DeconstructDeployable(obj, guid, pos) - } - else { + } else { obj.Destroyed = true DeconstructDeployable(obj, guid, pos, obj.Orientation, 2) } - case LocalResponse.EliminateDeployable(obj : ComplexDeployable, guid, pos) => - if(obj.Destroyed) { + case LocalResponse.EliminateDeployable(obj: ComplexDeployable, guid, pos) => + if (obj.Destroyed) { DeconstructDeployable(obj, guid, pos) - } - else { + } else { obj.Destroyed = true DeconstructDeployable(obj, guid, pos, obj.Orientation, 1) } - case LocalResponse.EliminateDeployable(obj : TelepadDeployable, guid, pos) => + case LocalResponse.EliminateDeployable(obj: TelepadDeployable, guid, pos) => //if active, deactivate - if(obj.Active) { + if (obj.Active) { obj.Active = false sendResponse(GenericObjectActionMessage(guid, 29)) sendResponse(GenericObjectActionMessage(guid, 30)) } //determine if no replacement teleport system exists continent.GUID(obj.Router) match { - case Some(router : Vehicle) => + case Some(router: Vehicle) => //if the telepad was replaced, the new system is physically in place but not yet functional - if(router.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(internalTelepad : Utility.InternalTelepad) => internalTelepad.Telepad.contains(guid) //same telepad - case _ => true - }) { + if ( + router.Utility(UtilityType.internal_router_telepad_deployable) match { + case Some(internalTelepad: Utility.InternalTelepad) => + internalTelepad.Telepad.contains(guid) //same telepad + case _ => true + } + ) { //there is no replacement telepad; shut down the system ToggleTeleportSystem(router, None) } case _ => ; } //standard deployable elimination behavior - if(obj.Destroyed) { + if (obj.Destroyed) { DeconstructDeployable(obj, guid, pos) - } - else { + } else { obj.Destroyed = true DeconstructDeployable(obj, guid, pos, obj.Orientation, 2) } case LocalResponse.EliminateDeployable(obj, guid, pos) => - if(obj.Destroyed) { + if (obj.Destroyed) { DeconstructDeployable(obj, guid, pos) - } - else { + } else { obj.Destroyed = true DeconstructDeployable(obj, guid, pos, obj.Orientation, 2) } @@ -2299,7 +2520,7 @@ class WorldSessionActor extends Actor HackCaptureTerminal(target_guid, unk1, unk2, isResecured) case LocalResponse.ObjectDelete(object_guid, unk) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectDeleteMessage(object_guid, unk)) } @@ -2331,20 +2552,19 @@ class WorldSessionActor extends Actor sendResponse(TriggerSoundMessage(sound, pos, unk, volume)) case LocalResponse.UpdateForceDomeStatus(building_guid, activated) => { - if(activated) { + if (activated) { sendResponse(GenericObjectActionMessage(building_guid, 11)) - } - else { + } else { sendResponse(GenericObjectActionMessage(building_guid, 12)) } } case LocalResponse.RechargeVehicleWeapon(vehicle_guid, weapon_guid) => { - if(tplayer_guid == guid) { + if (tplayer_guid == guid) { continent.GUID(vehicle_guid) match { - case Some(vehicle : Mountable with MountedWeapons) => + case Some(vehicle: Mountable with MountedWeapons) => vehicle.PassengerInSeat(player) match { - case Some(seat_num : Int) => + case Some(seat_num: Int) => vehicle.WeaponControlledFromSeat(seat_num) match { case Some(equipment) if equipment.GUID == weapon_guid => val weapon = equipment.asInstanceOf[Tool] @@ -2369,36 +2589,59 @@ class WorldSessionActor extends Actor * @param target na * @param reply na */ - def HandleChatServiceResponse(toChannel : String, avatar_guid : PlanetSideGUID, avatar_name : String, cont : Zone, avatar_pos : Vector3, avatar_faction : PlanetSideEmpire.Value, target : Int, reply : ChatMsg) : Unit = { - val tplayer_guid = if(player.HasGUID) player.GUID - else PlanetSideGUID(0) + def HandleChatServiceResponse( + toChannel: String, + avatar_guid: PlanetSideGUID, + avatar_name: String, + cont: Zone, + avatar_pos: Vector3, + avatar_faction: PlanetSideEmpire.Value, + target: Int, + reply: ChatMsg + ): Unit = { + val tplayer_guid = + if (player.HasGUID) player.GUID + else PlanetSideGUID(0) target match { case 0 => // for other(s) user(s) - if(player.GUID != avatar_guid) { + if (player.GUID != avatar_guid) { reply.messageType match { case ChatMessageType.CMT_TELL => if (player.Name.equalsIgnoreCase(reply.recipient)) { sendResponse(ChatMsg(reply.messageType, reply.wideContents, avatar_name, reply.contents, reply.note)) } case ChatMessageType.CMT_SILENCE => - val args = avatar_name.split(" ") - var silence_name : String = "" - var silence_time : Int = 5 - if(args.length == 1) { + val args = avatar_name.split(" ") + var silence_name: String = "" + var silence_time: Int = 5 + if (args.length == 1) { silence_name = args(0) - } - else if(args.length == 2) { + } else if (args.length == 2) { silence_name = args(0) silence_time = args(1).toInt } - if(player.Name == args(0)) { - if(!player.silenced) { - sendResponse(ChatMsg(ChatMessageType.UNK_71, reply.wideContents, reply.recipient, "@silence_on", reply.note)) + if (player.Name == args(0)) { + if (!player.silenced) { + sendResponse( + ChatMsg(ChatMessageType.UNK_71, reply.wideContents, reply.recipient, "@silence_on", reply.note) + ) player.silenced = true - context.system.scheduler.scheduleOnce(silence_time minutes, chatService, ChatServiceMessage("gm", ChatAction.GM(PlanetSideGUID(0), player.Name, ChatMsg(ChatMessageType.CMT_SILENCE, true, "", player.Name, None)))) - } - else { - sendResponse(ChatMsg(ChatMessageType.UNK_71, reply.wideContents, reply.recipient, "@silence_off", reply.note)) + context.system.scheduler.scheduleOnce( + silence_time minutes, + chatService, + ChatServiceMessage( + "gm", + ChatAction.GM( + PlanetSideGUID(0), + player.Name, + ChatMsg(ChatMessageType.CMT_SILENCE, true, "", player.Name, None) + ) + ) + ) + } else { + sendResponse( + ChatMsg(ChatMessageType.UNK_71, reply.wideContents, reply.recipient, "@silence_off", reply.note) + ) player.silenced = false } } @@ -2407,33 +2650,54 @@ class WorldSessionActor extends Actor } } case 1 => // for player - if(player.Name == avatar_name) { - if((reply.contents.length > 1 && (reply.contents.dropRight(reply.contents.length - 1) != "!" || reply.contents.drop(1).dropRight(reply.contents.length - 2) == "!")) || reply.contents.length == 1) { + if (player.Name == avatar_name) { + if ( + (reply.contents.length > 1 && (reply.contents.dropRight(reply.contents.length - 1) != "!" || reply.contents + .drop(1) + .dropRight(reply.contents.length - 2) == "!")) || reply.contents.length == 1 + ) { sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) } } case 2 => // both case - if((reply.contents.length > 1 && (reply.contents.dropRight(reply.contents.length - 1) != "!" || reply.contents.drop(1).dropRight(reply.contents.length - 2) == "!")) || reply.contents.length == 1) { + if ( + (reply.contents.length > 1 && (reply.contents.dropRight(reply.contents.length - 1) != "!" || reply.contents + .drop(1) + .dropRight(reply.contents.length - 2) == "!")) || reply.contents.length == 1 + ) { reply.messageType match { case ChatMessageType.CMT_OPEN => - if(Vector3.Distance(player.Position, avatar_pos) < 25 && player.Faction == avatar_faction && player.Continent == cont.Id) { - sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) + if ( + Vector3.Distance( + player.Position, + avatar_pos + ) < 25 && player.Faction == avatar_faction && player.Continent == cont.Id + ) { + sendResponse( + ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note) + ) } case ChatMessageType.CMT_COMMAND => sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) case ChatMessageType.CMT_SQUAD => - if(squadChannel.nonEmpty) { - if("/Chat/"+squadChannel.get == toChannel) { - sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) + if (squadChannel.nonEmpty) { + if ("/Chat/" + squadChannel.get == toChannel) { + sendResponse( + ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note) + ) } } case ChatMessageType.CMT_PLATOON => if (player.Faction == avatar_faction) { - sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) + sendResponse( + ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note) + ) } case ChatMessageType.CMT_VOICE => - if(Vector3.Distance(player.Position, avatar_pos) < 25 && player.Continent == cont.Id) { - sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) + if (Vector3.Distance(player.Position, avatar_pos) < 25 && player.Continent == cont.Id) { + sendResponse( + ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note) + ) } case _ => sendResponse(ChatMsg(reply.messageType, reply.wideContents, reply.recipient, reply.contents, reply.note)) @@ -2447,36 +2711,35 @@ class WorldSessionActor extends Actor * @param tplayer na * @param reply na */ - def HandleMountMessages(tplayer : Player, reply : Mountable.Exchange) : Unit = { + def HandleMountMessages(tplayer: Player, reply: Mountable.Exchange): Unit = { reply match { - case Mountable.CanMount(obj : ImplantTerminalMech, seat_num) => + case Mountable.CanMount(obj: ImplantTerminalMech, seat_num) => CancelZoningProcessWithDescriptiveReason("cancel_use") CancelAllProximityUnits() MountingAction(tplayer, obj, seat_num) - case Mountable.CanMount(obj : Vehicle, seat_num) => + case Mountable.CanMount(obj: Vehicle, seat_num) => CancelZoningProcessWithDescriptiveReason("cancel_mount") - val obj_guid : PlanetSideGUID = obj.GUID - val player_guid : PlanetSideGUID = tplayer.GUID + val obj_guid: PlanetSideGUID = obj.GUID + val player_guid: PlanetSideGUID = tplayer.GUID log.info(s"MountVehicleMsg: ${player.Name}_guid mounts $obj_guid @ $seat_num") CancelAllProximityUnits() sendResponse(PlanetsideAttributeMessage(obj_guid, 0, obj.Health)) sendResponse(PlanetsideAttributeMessage(obj_guid, 68, obj.Shields)) //shield health - if(obj.Definition.MaxNtuCapacitor > 0) { + if (obj.Definition.MaxNtuCapacitor > 0) { sendResponse(PlanetsideAttributeMessage(obj_guid, 45, obj.NtuCapacitorScaled)) } - if(obj.Definition.MaxCapacitor > 0) { + if (obj.Definition.MaxCapacitor > 0) { val capacitor = scala.math.ceil((obj.Capacitor.toFloat / obj.Definition.MaxCapacitor.toFloat) * 10).toInt sendResponse(PlanetsideAttributeMessage(obj_guid, 113, capacitor)) } - if(seat_num == 0) { - if(obj.Definition == GlobalDefinitions.quadstealth) { + if (seat_num == 0) { + if (obj.Definition == GlobalDefinitions.quadstealth) { //wraith cloak state matches the cloak state of the driver //phantasm doesn't uncloak if the driver is uncloaked and no other vehicle cloaks obj.Cloaked = tplayer.Cloaked } - } - else if(obj.Seats(seat_num).ControlledWeapon.isEmpty) { + } else if (obj.Seats(seat_num).ControlledWeapon.isEmpty) { //the player will receive no messages consistently except the KeepAliveMessage echo keepAliveFunc = KeepAlivePersistence } @@ -2484,65 +2747,70 @@ class WorldSessionActor extends Actor UpdateWeaponAtSeatPosition(obj, seat_num) MountingAction(tplayer, obj, seat_num) - case Mountable.CanMount(obj : FacilityTurret, seat_num) => + case Mountable.CanMount(obj: FacilityTurret, seat_num) => CancelZoningProcessWithDescriptiveReason("cancel_mount") - if(!obj.isUpgrading) { - if(obj.Definition == GlobalDefinitions.vanu_sentry_turret) { + if (!obj.isUpgrading) { + if (obj.Definition == GlobalDefinitions.vanu_sentry_turret) { obj.Zone.LocalEvents ! LocalServiceMessage(obj.Zone.Id, LocalAction.SetEmpire(obj.GUID, player.Faction)) } sendResponse(PlanetsideAttributeMessage(obj.GUID, 0, obj.Health)) UpdateWeaponAtSeatPosition(obj, seat_num) MountingAction(tplayer, obj, seat_num) - } - else { - log.warn(s"MountVehicleMsg: ${tplayer.Name} wants to mount turret ${obj.GUID.guid}, but needs to wait until it finishes updating") + } else { + log.warn( + s"MountVehicleMsg: ${tplayer.Name} wants to mount turret ${obj.GUID.guid}, but needs to wait until it finishes updating" + ) } - case Mountable.CanMount(obj : PlanetSideGameObject with WeaponTurret, seat_num) => + case Mountable.CanMount(obj: PlanetSideGameObject with WeaponTurret, seat_num) => CancelZoningProcessWithDescriptiveReason("cancel_mount") sendResponse(PlanetsideAttributeMessage(obj.GUID, 0, obj.Health)) UpdateWeaponAtSeatPosition(obj, seat_num) MountingAction(tplayer, obj, seat_num) - case Mountable.CanMount(obj : Mountable, _) => + case Mountable.CanMount(obj: Mountable, _) => log.warn(s"MountVehicleMsg: $obj is some generic mountable object and nothing will happen") - case Mountable.CanDismount(obj : ImplantTerminalMech, seat_num) => + case Mountable.CanDismount(obj: ImplantTerminalMech, seat_num) => DismountAction(tplayer, obj, seat_num) - case Mountable.CanDismount(obj : Vehicle, seat_num) if obj.Definition == GlobalDefinitions.droppod => + case Mountable.CanDismount(obj: Vehicle, seat_num) if obj.Definition == GlobalDefinitions.droppod => UnAccessContents(obj) DismountAction(tplayer, obj, seat_num) - case Mountable.CanDismount(obj : Vehicle, seat_num) => - val player_guid : PlanetSideGUID = tplayer.GUID - if(player_guid == player.GUID) { + case Mountable.CanDismount(obj: Vehicle, seat_num) => + val player_guid: PlanetSideGUID = tplayer.GUID + if (player_guid == player.GUID) { //disembarking self TotalDriverVehicleControl(obj) UnAccessContents(obj) DismountAction(tplayer, obj, seat_num) - } - else { - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.KickPassenger(player_guid, seat_num, true, obj.GUID)) + } else { + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.KickPassenger(player_guid, seat_num, true, obj.GUID) + ) } - case Mountable.CanDismount(obj : PlanetSideGameObject with WeaponTurret, seat_num) => + case Mountable.CanDismount(obj: PlanetSideGameObject with WeaponTurret, seat_num) => DismountAction(tplayer, obj, seat_num) - case Mountable.CanDismount(obj : Mountable, _) => + case Mountable.CanDismount(obj: Mountable, _) => log.warn(s"DismountVehicleMsg: $obj is some generic mountable object and nothing will happen") - case Mountable.CanNotMount(obj : Vehicle, seat_num) => + case Mountable.CanNotMount(obj: Vehicle, seat_num) => log.warn(s"MountVehicleMsg: ${tplayer.Name} attempted to mount $obj's seat $seat_num, but was not allowed") - if(obj.SeatPermissionGroup(seat_num).contains(AccessPermissionGroup.Driver)) { + if (obj.SeatPermissionGroup(seat_num).contains(AccessPermissionGroup.Driver)) { sendResponse(ChatMsg(ChatMessageType.CMT_OPEN, false, "", "You are not the driver of this vehicle.", None)) } - case Mountable.CanNotMount(obj : Mountable, seat_num) => + case Mountable.CanNotMount(obj: Mountable, seat_num) => log.warn(s"MountVehicleMsg: ${tplayer.Name} attempted to mount $obj's seat $seat_num, but was not allowed") case Mountable.CanNotDismount(obj, seat_num) => - log.warn(s"DismountVehicleMsg: ${tplayer.Name} attempted to dismount $obj's seat $seat_num, but was not allowed") + log.warn( + s"DismountVehicleMsg: ${tplayer.Name} attempted to dismount $obj's seat $seat_num, but was not allowed" + ) } } @@ -2552,31 +2820,32 @@ class WorldSessionActor extends Actor * @param msg na * @param order na */ - def HandleTerminalMessage(tplayer : Player, msg : ItemTransactionMessage, order : Terminal.Exchange) : Unit = { + def HandleTerminalMessage(tplayer: Player, msg: ItemTransactionMessage, order: Terminal.Exchange): Unit = { order match { case Terminal.BuyEquipment(item) => val definition = item.Definition - val itemid = definition.ObjectId - val time = System.currentTimeMillis - if(delayedPurchaseEntries.get(itemid) match { - case Some(delay) if time - tplayer.GetLastPurchaseTime(itemid) > delay => - player.SetLastPurchaseTime(itemid, time) - player.ObjectTypeNameReference(itemid.toLong, definition.Name) - sendResponse(AvatarVehicleTimerMessage(tplayer.GUID, definition.Name, delay / 1000, true)) - true - case Some(_) => - false - case _ => ; - true - }) { + val itemid = definition.ObjectId + val time = System.currentTimeMillis + if ( + delayedPurchaseEntries.get(itemid) match { + case Some(delay) if time - tplayer.GetLastPurchaseTime(itemid) > delay => + player.SetLastPurchaseTime(itemid, time) + player.ObjectTypeNameReference(itemid.toLong, definition.Name) + sendResponse(AvatarVehicleTimerMessage(tplayer.GUID, definition.Name, delay / 1000, true)) + true + case Some(_) => + false + case _ => ; + true + } + ) { taskResolver ! BuyNewEquipmentPutInInventory( - continent.GUID(tplayer.VehicleSeated) match { case Some(v : Vehicle) => v; case _ => player }, + continent.GUID(tplayer.VehicleSeated) match { case Some(v: Vehicle) => v; case _ => player }, taskResolver, tplayer, msg.terminal_guid )(item) - } - else { + } else { lastTerminalOrderFulfillment = true sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Buy, false)) } @@ -2586,22 +2855,25 @@ class WorldSessionActor extends Actor case Terminal.LearnCertification(cert) => val name = tplayer.Name - if(!tplayer.Certifications.contains(cert)) { + if (!tplayer.Certifications.contains(cert)) { val guid = tplayer.GUID log.info(s"$name is learning the $cert certification for ${Certification.Cost.Of(cert)} points") avatar.Certifications += cert StartBundlingPackets() UpdateDeployableUIElements(Deployables.AddToDeployableQuantities(avatar, cert, player.Certifications)) sendResponse(PlanetsideAttributeMessage(guid, 24, cert.id)) - tplayer.Certifications.intersect(Certification.Dependencies.Like(cert)).foreach(entry => { - log.info(s"$cert replaces the learned certification $entry that cost ${Certification.Cost.Of(entry)} points") - avatar.Certifications -= entry - sendResponse(PlanetsideAttributeMessage(guid, 25, entry.id)) - }) + tplayer.Certifications + .intersect(Certification.Dependencies.Like(cert)) + .foreach(entry => { + log.info( + s"$cert replaces the learned certification $entry that cost ${Certification.Cost.Of(entry)} points" + ) + avatar.Certifications -= entry + sendResponse(PlanetsideAttributeMessage(guid, 25, entry.id)) + }) StopBundlingPackets() sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Learn, true)) - } - else { + } else { log.warn(s"$name already knows the $cert certification, so he can't learn it") sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Learn, false)) } @@ -2609,23 +2881,28 @@ class WorldSessionActor extends Actor case Terminal.SellCertification(cert) => val name = tplayer.Name - if(tplayer.Certifications.contains(cert)) { + if (tplayer.Certifications.contains(cert)) { val guid = tplayer.GUID log.info(s"$name is forgetting the $cert certification for ${Certification.Cost.Of(cert)} points") avatar.Certifications -= cert StartBundlingPackets() UpdateDeployableUIElements(Deployables.RemoveFromDeployableQuantities(avatar, cert, player.Certifications)) sendResponse(PlanetsideAttributeMessage(guid, 25, cert.id)) - tplayer.Certifications.intersect(Certification.Dependencies.FromAll(cert)).foreach(entry => { - log.info(s"$name is also forgetting the ${Certification.Cost.Of(entry)}-point $entry certification which depends on $cert") - avatar.Certifications -= entry - UpdateDeployableUIElements(Deployables.RemoveFromDeployableQuantities(avatar, entry, player.Certifications)) - sendResponse(PlanetsideAttributeMessage(guid, 25, entry.id)) - }) + tplayer.Certifications + .intersect(Certification.Dependencies.FromAll(cert)) + .foreach(entry => { + log.info( + s"$name is also forgetting the ${Certification.Cost.Of(entry)}-point $entry certification which depends on $cert" + ) + avatar.Certifications -= entry + UpdateDeployableUIElements( + Deployables.RemoveFromDeployableQuantities(avatar, entry, player.Certifications) + ) + sendResponse(PlanetsideAttributeMessage(guid, 25, entry.id)) + }) StopBundlingPackets() sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Sell, true)) - } - else { + } else { log.warn(s"$name doesn't know what a $cert certification is, so he can't forget it") sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Learn, false)) } @@ -2635,21 +2912,23 @@ class WorldSessionActor extends Actor continent.Map.TerminalToSpawnPad.get(msg.terminal_guid.guid) match { case Some(pad_guid) => val definition = vehicle.Definition - val vid = definition.ObjectId - val time = System.currentTimeMillis - if(delayedPurchaseEntries.get(vid) match { - case Some(delay) if time - tplayer.GetLastPurchaseTime(vid) > delay => - tplayer.SetLastPurchaseTime(vid, time) - tplayer.ObjectTypeNameReference(vid.toLong, definition.Name) - sendResponse(AvatarVehicleTimerMessage(tplayer.GUID, definition.Name, delay / 1000, true)) - true - case Some(_) => - false - case None => ; - true - }) { + val vid = definition.ObjectId + val time = System.currentTimeMillis + if ( + delayedPurchaseEntries.get(vid) match { + case Some(delay) if time - tplayer.GetLastPurchaseTime(vid) > delay => + tplayer.SetLastPurchaseTime(vid, time) + tplayer.ObjectTypeNameReference(vid.toLong, definition.Name) + sendResponse(AvatarVehicleTimerMessage(tplayer.GUID, definition.Name, delay / 1000, true)) + true + case Some(_) => + false + case None => ; + true + } + ) { val toFaction = tplayer.Faction - val pad = continent.GUID(pad_guid).get.asInstanceOf[VehicleSpawnPad] + val pad = continent.GUID(pad_guid).get.asInstanceOf[VehicleSpawnPad] vehicle.Faction = toFaction vehicle.Position = pad.Position vehicle.Orientation = pad.Orientation + Vector3.z(pad.Definition.VehicleCreationZOrientOffset) @@ -2663,7 +2942,9 @@ class WorldSessionActor extends Actor slot.Equipment = None slot.Equipment = entry.obj case None => - log.warn(s"applying default loadout to $vehicle on spawn, but can not find a mounted weapon @ $index") + log.warn( + s"applying default loadout to $vehicle on spawn, but can not find a mounted weapon @ $index" + ) } }) //default loadout, trunk @@ -2675,21 +2956,21 @@ class WorldSessionActor extends Actor }) taskResolver ! RegisterVehicleFromSpawnPad(vehicle, pad) sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Buy, true)) - } - else { + } else { sendResponse(ItemTransactionResultMessage(msg.terminal_guid, TransactionType.Buy, false)) } case None => - log.error(s"${tplayer.Name} wanted to spawn a vehicle, but there was no spawn pad associated with terminal ${msg.terminal_guid} to accept it") + log.error( + s"${tplayer.Name} wanted to spawn a vehicle, but there was no spawn pad associated with terminal ${msg.terminal_guid} to accept it" + ) } lastTerminalOrderFulfillment = true case Terminal.NoDeal() => - val order : String = if(msg == null) { + val order: String = if (msg == null) { s"order $msg" - } - else { + } else { "missing order" } log.warn(s"${tplayer.Name} made a request but the terminal rejected the $order") @@ -2706,14 +2987,14 @@ class WorldSessionActor extends Actor * @param guid na * @param reply na */ - def HandleVehicleServiceResponse(toChannel : String, guid : PlanetSideGUID, reply : VehicleResponse.Response) : Unit = { - val tplayer_guid = if(player.HasGUID) player.GUID else PlanetSideGUID(0) + def HandleVehicleServiceResponse(toChannel: String, guid: PlanetSideGUID, reply: VehicleResponse.Response): Unit = { + val tplayer_guid = if (player.HasGUID) player.GUID else PlanetSideGUID(0) reply match { case VehicleResponse.AttachToRails(vehicle_guid, pad_guid) => sendResponse(ObjectAttachMessage(pad_guid, vehicle_guid, 3)) case VehicleResponse.ChildObjectState(object_guid, pitch, yaw) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ChildObjectStateMessage(object_guid, pitch, yaw)) } @@ -2721,31 +3002,38 @@ class WorldSessionActor extends Actor sendResponse(GenericObjectActionMessage(player_guid, 9)) case VehicleResponse.DismountVehicle(bailType, wasKickedByDriver) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(DismountVehicleMsg(guid, bailType, wasKickedByDriver)) } case VehicleResponse.DeployRequest(object_guid, state, unk1, unk2, pos) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(DeployRequestMessage(guid, object_guid, state, unk1, unk2, pos)) } case VehicleResponse.DetachFromRails(vehicle_guid, pad_guid, pad_position, pad_orientation_z) => val pad = continent.GUID(pad_guid).get.asInstanceOf[VehicleSpawnPad].Definition - sendResponse(ObjectDetachMessage(pad_guid, vehicle_guid, pad_position + Vector3(0, 0, pad.VehicleCreationZOffset), pad_orientation_z + pad.VehicleCreationZOrientOffset)) + sendResponse( + ObjectDetachMessage( + pad_guid, + vehicle_guid, + pad_position + Vector3(0, 0, pad.VehicleCreationZOffset), + pad_orientation_z + pad.VehicleCreationZOrientOffset + ) + ) case VehicleResponse.EquipmentInSlot(pkt) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(pkt) } case VehicleResponse.HitHint(source_guid) => - if(player.isAlive) { + if (player.isAlive) { sendResponse(HitHint(source_guid, player.GUID)) } case VehicleResponse.InventoryState(obj, parent_guid, start, con_data) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { //TODO prefer ObjectDetachMessage, but how to force ammo pools to update properly? val obj_guid = obj.GUID sendResponse(ObjectDeleteMessage(obj_guid, 0)) @@ -2762,39 +3050,39 @@ class WorldSessionActor extends Actor case VehicleResponse.KickPassenger(seat_num, wasKickedByDriver, vehicle_guid) => // seat_num seems to be correct if passenger is kicked manually by driver, but always seems to return 4 if user is kicked by seat permissions sendResponse(DismountVehicleMsg(guid, BailType.Kicked, wasKickedByDriver)) - if(tplayer_guid == guid) { + if (tplayer_guid == guid) { continent.GUID(vehicle_guid) match { - case Some(obj : Vehicle) => + case Some(obj: Vehicle) => UnAccessContents(obj) case _ => ; } } case VehicleResponse.InventoryState2(obj_guid, parent_guid, value) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(InventoryStateMessage(obj_guid, 0, parent_guid, value)) } case VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata) => //this is not be suitable for vehicles with people who are seated in it before it spawns (if that is possible) - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectCreateMessage(vtype, vguid, vdata)) Vehicles.ReloadAccessPermissions(vehicle, player.Name) } case VehicleResponse.MountVehicle(vehicle_guid, seat) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(ObjectAttachMessage(vehicle_guid, guid, seat)) } case VehicleResponse.Ownership(vehicle_guid) => - if(tplayer_guid == guid) { // Only the player that owns this vehicle needs the ownership packet + if (tplayer_guid == guid) { // Only the player that owns this vehicle needs the ownership packet player.VehicleOwned = Some(vehicle_guid) sendResponse(PlanetsideAttributeMessage(tplayer_guid, 21, vehicle_guid)) } case VehicleResponse.PlanetsideAttribute(vehicle_guid, attribute_type, attribute_value) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(PlanetsideAttributeMessage(vehicle_guid, attribute_type, attribute_value)) } @@ -2805,12 +3093,12 @@ class WorldSessionActor extends Actor sendResponse(GenericObjectActionMessage(player_guid, 10)) case VehicleResponse.SeatPermissions(vehicle_guid, seat_group, permission) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { sendResponse(PlanetsideAttributeMessage(vehicle_guid, seat_group, permission)) } case VehicleResponse.StowEquipment(vehicle_guid, slot, item_type, item_guid, item_data) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { //TODO prefer ObjectAttachMessage, but how to force ammo pools to update properly? sendResponse( ObjectCreateDetailedMessage(item_type, item_guid, ObjectCreateMessageParent(vehicle_guid, slot), item_data) @@ -2824,15 +3112,29 @@ class WorldSessionActor extends Actor //} case VehicleResponse.UnstowEquipment(item_guid) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { //TODO prefer ObjectDetachMessage, but how to force ammo pools to update properly? sendResponse(ObjectDeleteMessage(item_guid, 0)) } - case VehicleResponse.VehicleState(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6) => - if(tplayer_guid != guid) { - sendResponse(VehicleStateMessage(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6)) - if(player.VehicleSeated.contains(vehicle_guid)) { + case VehicleResponse.VehicleState( + vehicle_guid, + unk1, + pos, + ang, + vel, + unk2, + unk3, + unk4, + wheel_direction, + unk5, + unk6 + ) => + if (tplayer_guid != guid) { + sendResponse( + VehicleStateMessage(vehicle_guid, unk1, pos, ang, vel, unk2, unk3, unk4, wheel_direction, unk5, unk6) + ) + if (player.VehicleSeated.contains(vehicle_guid)) { player.Position = pos } } @@ -2844,27 +3146,34 @@ class WorldSessionActor extends Actor DrawCurrentAmsSpawnPoint() case VehicleResponse.TransferPassengerChannel(old_channel, temp_channel, vehicle, vehicle_to_delete) => - if(tplayer_guid != guid) { + if (tplayer_guid != guid) { interstellarFerry = Some(vehicle) interstellarFerryTopLevelGUID = Some(vehicle_to_delete) - continent.VehicleEvents ! Service.Leave(Some(old_channel)) //old vehicle-specific channel (was s"${vehicle.Actor}") + continent.VehicleEvents ! Service.Leave( + Some(old_channel) + ) //old vehicle-specific channel (was s"${vehicle.Actor}") galaxyService ! Service.Join(temp_channel) //temporary vehicle-specific channel } case VehicleResponse.KickCargo(vehicle, speed, delay) => - if(player.VehicleSeated.nonEmpty && deadState == DeadState.Alive) { - if(speed > 0) { - val strafe = if(Vehicles.CargoOrientation(vehicle) == 1) 2 - else 1 - val reverseSpeed = if(strafe > 1) 0 - else speed + if (player.VehicleSeated.nonEmpty && deadState == DeadState.Alive) { + if (speed > 0) { + val strafe = + if (Vehicles.CargoOrientation(vehicle) == 1) 2 + else 1 + val reverseSpeed = + if (strafe > 1) 0 + else speed //strafe or reverse, not both controlled = Some(reverseSpeed) sendResponse(ServerVehicleOverrideMsg(true, true, true, false, 0, strafe, reverseSpeed, Some(0))) import scala.concurrent.ExecutionContext.Implicits.global - context.system.scheduler.scheduleOnce(delay milliseconds, self, VehicleServiceResponse(toChannel, PlanetSideGUID(0), VehicleResponse.KickCargo(vehicle, 0, delay))) - } - else { + context.system.scheduler.scheduleOnce( + delay milliseconds, + self, + VehicleServiceResponse(toChannel, PlanetSideGUID(0), VehicleResponse.KickCargo(vehicle, 0, delay)) + ) + } else { controlled = None sendResponse(ServerVehicleOverrideMsg(false, false, false, false, 0, 0, 0, None)) } @@ -2874,12 +3183,15 @@ class WorldSessionActor extends Actor val vehicle_guid = vehicle.GUID PlayerActionsToCancel() CancelAllProximityUnits() - if(player.VisibleSlots.contains(player.DrawnSlot)) { + if (player.VisibleSlots.contains(player.DrawnSlot)) { player.DrawnSlot = Player.HandsDownSlot sendResponse(ObjectHeldMessage(player.GUID, Player.HandsDownSlot, true)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectHeld(player.GUID, player.LastDrawnSlot)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ObjectHeld(player.GUID, player.LastDrawnSlot) + ) } - sendResponse(PlanetsideAttributeMessage(vehicle_guid, 22, 1L)) //mount points off + sendResponse(PlanetsideAttributeMessage(vehicle_guid, 22, 1L)) //mount points off sendResponse(PlanetsideAttributeMessage(player.GUID, 21, vehicle_guid)) //ownership vehicle.Actor ! Mountable.TryMount(player, 0) @@ -2891,13 +3203,13 @@ class WorldSessionActor extends Actor case VehicleResponse.ServerVehicleOverrideStart(vehicle, pad) => val vdef = vehicle.Definition - ServerVehicleOverride(vehicle, vdef.AutoPilotSpeed1, GlobalDefinitions.isFlightVehicle(vdef) : Int) + ServerVehicleOverride(vehicle, vdef.AutoPilotSpeed1, GlobalDefinitions.isFlightVehicle(vdef): Int) case VehicleResponse.ServerVehicleOverrideEnd(vehicle, pad) => DriverVehicleControl(vehicle, vehicle.Definition.AutoPilotSpeed2) case VehicleResponse.PeriodicReminder(cause, data) => - val msg : String = (cause match { + val msg: String = (cause match { case VehicleSpawnPad.Reminders.Blocked => s"The vehicle spawn where you placed your order is blocked. ${data.getOrElse("")}" case VehicleSpawnPad.Reminders.Queue => @@ -2910,17 +3222,17 @@ class WorldSessionActor extends Actor case VehicleResponse.ChangeLoadout(target, old_weapons, added_weapons, old_inventory, new_inventory) => //TODO when vehicle weapons can be changed without visual glitches, rewrite this continent.GUID(target) match { - case Some(vehicle : Vehicle) => + case Some(vehicle: Vehicle) => StartBundlingPackets() - if(player.VehicleOwned.contains(target)) { + if (player.VehicleOwned.contains(target)) { //owner: must unregister old equipment, and register and install new equipment - (old_weapons ++ old_inventory).foreach { case (obj, guid) => - sendResponse(ObjectDeleteMessage(guid, 0)) - taskResolver ! GUIDTask.UnregisterEquipment(obj)(continent.GUID) + (old_weapons ++ old_inventory).foreach { + case (obj, guid) => + sendResponse(ObjectDeleteMessage(guid, 0)) + taskResolver ! GUIDTask.UnregisterEquipment(obj)(continent.GUID) } ApplyPurchaseTimersBeforePackingLoadout(player, vehicle, added_weapons ++ new_inventory) - } - else if(accessedContainer.contains(target)) { + } else if (accessedContainer.contains(target)) { //external participant: observe changes to equipment (old_weapons ++ old_inventory).foreach { case (_, guid) => sendResponse(ObjectDeleteMessage(guid, 0)) } } @@ -2950,8 +3262,12 @@ class WorldSessionActor extends Actor * @param mountPoint the point on the ferryoing vehicle where the ferried vehicle is attached * @return a tuple composed of an `ObjectAttachMessage` packet and a `CargoMountPointStatusMessage` packet */ - def CargoMountBehaviorForUs(carrier : Vehicle, cargo : Vehicle, mountPoint : Int) : (ObjectAttachMessage, CargoMountPointStatusMessage) = { - val msgs@(attachMessage, mountPointStatusMessage) = CargoBehavior.CargoMountMessages(carrier, cargo, mountPoint) + def CargoMountBehaviorForUs( + carrier: Vehicle, + cargo: Vehicle, + mountPoint: Int + ): (ObjectAttachMessage, CargoMountPointStatusMessage) = { + val msgs @ (attachMessage, mountPointStatusMessage) = CargoBehavior.CargoMountMessages(carrier, cargo, mountPoint) CargoMountMessagesForUs(attachMessage, mountPointStatusMessage) msgs } @@ -2963,7 +3279,10 @@ class WorldSessionActor extends Actor * @param attachMessage an `ObjectAttachMessage` packet suitable for initializing cargo operations * @param mountPointStatusMessage a `CargoMountPointStatusMessage` packet suitable for initializing cargo operations */ - def CargoMountMessagesForUs(attachMessage : ObjectAttachMessage, mountPointStatusMessage : CargoMountPointStatusMessage) : Unit = { + def CargoMountMessagesForUs( + attachMessage: ObjectAttachMessage, + mountPointStatusMessage: CargoMountPointStatusMessage + ): Unit = { sendResponse(attachMessage) sendResponse(mountPointStatusMessage) } @@ -2973,23 +3292,48 @@ class WorldSessionActor extends Actor * @param tplayer na * @param vehicle na */ - def HandleNtuCharging(tplayer : Player, vehicle : Vehicle) : Unit = { + def HandleNtuCharging(tplayer: Player, vehicle: Vehicle): Unit = { log.trace(s"NtuCharging: Vehicle ${vehicle.GUID} is charging NTU capacitor.") - if(vehicle.NtuCapacitor < vehicle.Definition.MaxNtuCapacitor) { + if (vehicle.NtuCapacitor < vehicle.Definition.MaxNtuCapacitor) { // Charging - ANTs would charge from 0-100% in roughly 75s on live (https://www.youtube.com/watch?v=veOWToR2nSk&feature=youtu.be&t=1194) vehicle.NtuCapacitor += vehicle.Definition.MaxNtuCapacitor / 75 - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 1L)) // panel glow on - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 1L)) // orb particle effect on + sendResponse( + PlanetsideAttributeMessage( + vehicle.GUID, + 45, + vehicle.NtuCapacitorScaled + ) + ) // set ntu on vehicle UI + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 1L) + ) // panel glow on + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 1L) + ) // orb particle effect on - antChargingTick = context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuCharging(player, vehicle)) // Repeat until fully charged - } - else { + antChargingTick = context.system.scheduler.scheduleOnce( + 1000 milliseconds, + self, + NtuCharging(player, vehicle) + ) // Repeat until fully charged + } else { // Fully charged - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI + sendResponse( + PlanetsideAttributeMessage( + vehicle.GUID, + 45, + scala.math.ceil((vehicle.NtuCapacitor.toFloat / vehicle.Definition.MaxNtuCapacitor.toFloat) * 10).toInt + ) + ) // set ntu on vehicle UI // Turning off glow/orb effects on ANT doesn't seem to work when deployed. Try to undeploy ANT from server side - context.system.scheduler.scheduleOnce(vehicle.UndeployTime milliseconds, vehicle.Actor, Deployment.TryUndeploy(DriveState.Undeploying)) + context.system.scheduler.scheduleOnce( + vehicle.UndeployTime milliseconds, + vehicle.Actor, + Deployment.TryUndeploy(DriveState.Undeploying) + ) } } @@ -2999,56 +3343,92 @@ class WorldSessionActor extends Actor * @param vehicle na * @param silo_guid na */ - def HandleNtuDischarging(tplayer : Player, vehicle : Vehicle, silo_guid : PlanetSideGUID) : Unit = { + def HandleNtuDischarging(tplayer: Player, vehicle: Vehicle, silo_guid: PlanetSideGUID): Unit = { log.trace(s"NtuDischarging: Vehicle ${vehicle.GUID} is discharging NTU into silo $silo_guid") - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 0L)) // orb particle effect off - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 1L)) // panel glow on + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 0L) + ) // orb particle effect off + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 1L) + ) // panel glow on var silo = continent.GUID(silo_guid).get.asInstanceOf[ResourceSilo] // Check vehicle is still deployed before continuing. User can undeploy manually or vehicle may not longer be present. - if(vehicle.DeploymentState == DriveState.Deployed) { - if(vehicle.NtuCapacitor > 0 && silo.ChargeLevel < silo.MaximumCharge) { + if (vehicle.DeploymentState == DriveState.Deployed) { + if (vehicle.NtuCapacitor > 0 && silo.ChargeLevel < silo.MaximumCharge) { // Make sure we don't exceed the silo maximum charge or remove much NTU from ANT if maximum is reached, or try to make ANT go below 0 NTU // Silos would charge from 0-100% in roughly 105s on live (~20%-100% https://youtu.be/veOWToR2nSk?t=1402) - var chargeToDeposit = Math.min(Math.min(vehicle.NtuCapacitor, silo.MaximumCharge / 105), silo.MaximumCharge - silo.ChargeLevel) + var chargeToDeposit = + Math.min(Math.min(vehicle.NtuCapacitor, silo.MaximumCharge / 105), silo.MaximumCharge - silo.ChargeLevel) vehicle.NtuCapacitor -= chargeToDeposit silo.Actor ! ResourceSilo.UpdateChargeLevel(chargeToDeposit) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(silo_guid, 49, 1L)) // panel glow on & orb particles on - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(silo_guid, 49, 1L) + ) // panel glow on & orb particles on + sendResponse( + PlanetsideAttributeMessage( + vehicle.GUID, + 45, + vehicle.NtuCapacitorScaled + ) + ) // set ntu on vehicle UI //todo: grant BEP to user //todo: grant BEP to squad in range //todo: handle silo orb / panel glow properly if more than one person is refilling silo and one player stops. effects should stay on until all players stop - if(vehicle.NtuCapacitor > 0 && silo.ChargeLevel < silo.MaximumCharge) { + if (vehicle.NtuCapacitor > 0 && silo.ChargeLevel < silo.MaximumCharge) { log.trace(s"NtuDischarging: ANT not empty and Silo not full. Scheduling another discharge") // Silo still not full and ant still has charge left - keep rescheduling ticks - antDischargingTick = context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuDischarging(player, vehicle, silo_guid)) - } - else { + antDischargingTick = + context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuDischarging(player, vehicle, silo_guid)) + } else { log.trace(s"NtuDischarging: ANT NTU empty or Silo NTU full.") // Turning off glow/orb effects on ANT doesn't seem to work when deployed. Try to undeploy ANT from server side - context.system.scheduler.scheduleOnce(vehicle.UndeployTime milliseconds, vehicle.Actor, Deployment.TryUndeploy(DriveState.Undeploying)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L)) // panel glow off & orb particles off + context.system.scheduler.scheduleOnce( + vehicle.UndeployTime milliseconds, + vehicle.Actor, + Deployment.TryUndeploy(DriveState.Undeploying) + ) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L) + ) // panel glow off & orb particles off antDischargingTick.cancel() } - } - else { + } else { // This shouldn't normally be run, only if the client thinks the ANT has capacitor charge when it doesn't, or thinks the silo isn't full when it is. - log.warn(s"NtuDischarging: Invalid discharge state. ANT Capacitor: ${vehicle.NtuCapacitor} Silo Capacitor: ${silo.ChargeLevel}") + log.warn( + s"NtuDischarging: Invalid discharge state. ANT Capacitor: ${vehicle.NtuCapacitor} Silo Capacitor: ${silo.ChargeLevel}" + ) // Turning off glow/orb effects on ANT doesn't seem to work when deployed. Try to undeploy ANT from server side - context.system.scheduler.scheduleOnce(vehicle.UndeployTime milliseconds, vehicle.Actor, Deployment.TryUndeploy(DriveState.Undeploying)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L)) // panel glow off & orb particles off + context.system.scheduler.scheduleOnce( + vehicle.UndeployTime milliseconds, + vehicle.Actor, + Deployment.TryUndeploy(DriveState.Undeploying) + ) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L) + ) // panel glow off & orb particles off antDischargingTick.cancel() } - } - else { + } else { log.trace(s"NtuDischarging: Vehicle is no longer deployed. Removing effects") // Vehicle has changed from deployed and this should be the last timer tick sent - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 0L)) // panel glow off - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L)) // panel glow off & orb particles off + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 0L) + ) // panel glow off + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(silo_guid, 49, 0L) + ) // panel glow off & orb particles off antDischargingTick.cancel() } } @@ -3076,7 +3456,7 @@ class WorldSessionActor extends Actor * @param tickAction an optional action is is performed for each tick of progress; * also performs a continuity check to determine if the process has been disrupted */ - def HandleProgressChange(delta : Float, completionAction : () => Unit, tickAction : Float => Boolean) : Unit = { + def HandleProgressChange(delta: Float, completionAction: () => Unit, tickAction: Float => Boolean): Unit = { progressBarUpdate.cancel progressBarValue match { case Some(value) => @@ -3086,30 +3466,30 @@ class WorldSessionActor extends Actor progressBarValue = None tickAction(100) completionAction() - } - else if (value < 100f && next >= 100f) { + } else if (value < 100f && next >= 100f) { if (tickAction(99)) { //will complete after this turn progressBarValue = Some(next) import scala.concurrent.ExecutionContext.Implicits.global - progressBarUpdate = context.system.scheduler.scheduleOnce(100 milliseconds, self, + progressBarUpdate = context.system.scheduler.scheduleOnce( + 100 milliseconds, + self, ProgressEvent(delta, completionAction, tickAction) ) - } - else { + } else { progressBarValue = None } - } - else { + } else { if (tickAction(next)) { //normal progress activity progressBarValue = Some(next) import scala.concurrent.ExecutionContext.Implicits.global - progressBarUpdate = context.system.scheduler.scheduleOnce(250 milliseconds, self, + progressBarUpdate = context.system.scheduler.scheduleOnce( + 250 milliseconds, + self, ProgressEvent(delta, completionAction, tickAction) ) - } - else { + } else { progressBarValue = None } } @@ -3122,7 +3502,7 @@ class WorldSessionActor extends Actor * Initialize all client-specific data that is dependent on some player being declared the "avatar". * @param tplayer the target player */ - def HandleSetCurrentAvatar(tplayer : Player) : Unit = { + def HandleSetCurrentAvatar(tplayer: Player): Unit = { log.info(s"HandleSetCurrentAvatar - ${tplayer.Name}") player = tplayer val guid = tplayer.GUID @@ -3131,21 +3511,21 @@ class WorldSessionActor extends Actor sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 75, 0)) sendResponse(SetCurrentAvatarMessage(guid, 0, 0)) sendResponse(ChatMsg(ChatMessageType.CMT_EXPANSIONS, true, "", "1 on", None)) //CC on //TODO once per respawn? - val pos = player.Position = shiftPosition.getOrElse(tplayer.Position) + val pos = player.Position = shiftPosition.getOrElse(tplayer.Position) val orient = player.Orientation = shiftOrientation.getOrElse(tplayer.Orientation) sendResponse(PlayerStateShiftMessage(ShiftState(1, pos, orient.z))) shiftPosition = None shiftOrientation = None - if(player.spectator) { + if (player.spectator) { sendResponse(ChatMsg(ChatMessageType.CMT_TOGGLESPECTATORMODE, false, "", "on", None)) } - if(player.Jammed) { + if (player.Jammed) { //TODO something better than just canceling? player.Actor ! JammableUnit.ClearJammeredStatus() player.Actor ! JammableUnit.ClearJammeredSound() } val fatigued = player.Fatigued - (0 until DetailedCharacterData.numberOfImplantSlots(tplayer.BEP)).foreach {slot => + (0 until DetailedCharacterData.numberOfImplantSlots(tplayer.BEP)).foreach { slot => val implantSlot = player.ImplantSlot(slot) implantSlot.Installed match { case Some(_) => @@ -3154,8 +3534,7 @@ class WorldSessionActor extends Actor if (fatigued) { sendResponse(AvatarImplantMessage(guid, ImplantAction.OutOfStamina, slot, 1)) } - } - else if (!fatigued) { + } else if (!fatigued) { player.Actor ! Player.ImplantInitializationStart(slot) } //TODO if this implant is Installed but does not have shortcut, add to a free slot or write over slot 61/62/63 @@ -3179,23 +3558,33 @@ class WorldSessionActor extends Actor //Favorites lists val (inf, veh) = avatar.EquipmentLoadouts.Loadouts.partition { case (index, _) => index < 10 } inf.foreach { - case (index, loadout : InfantryLoadout) => - sendResponse(FavoritesMessage(LoadoutType.Infantry, guid, index, loadout.label, InfantryLoadout.DetermineSubtypeB(loadout.exosuit, loadout.subtype))) + case (index, loadout: InfantryLoadout) => + sendResponse( + FavoritesMessage( + LoadoutType.Infantry, + guid, + index, + loadout.label, + InfantryLoadout.DetermineSubtypeB(loadout.exosuit, loadout.subtype) + ) + ) case (_, data) => log.warn(s"HandleSetCurrentAvatar: unknown loadout information $data in infantry list") } veh.foreach { - case (index, loadout : VehicleLoadout) => + case (index, loadout: VehicleLoadout) => sendResponse(FavoritesMessage(LoadoutType.Vehicle, guid, index - 10, loadout.label)) case (_, data) => log.warn(s"HandleSetCurrentAvatar: unknown loadout information $data in vehicle list") } - sendResponse(SetChatFilterMessage(ChatChannel.Platoon, false, ChatChannel.values.toList)) //TODO will not always be "on" like this + sendResponse( + SetChatFilterMessage(ChatChannel.Platoon, false, ChatChannel.values.toList) + ) //TODO will not always be "on" like this val originalDeadState = deadState deadState = DeadState.Alive sendResponse(AvatarDeadStateMessage(DeadState.Alive, 0, 0, tplayer.Position, player.Faction, true)) //looking for squad (members) - if(tplayer.LFS || lfsm) { + if (tplayer.LFS || lfsm) { sendResponse(PlanetsideAttributeMessage(guid, 53, 1)) continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(guid, 53, 1)) } @@ -3216,7 +3605,7 @@ class WorldSessionActor extends Actor //MapObjectStateBlockMessage and ObjectCreateMessage? //TacticsMessage? //change the owner on our deployables (re-draw the icons for our deployables too) - val name = tplayer.Name + val name = tplayer.Name val faction = tplayer.Faction continent.DeployableList .filter(_.OwnerName.contains(name)) @@ -3229,38 +3618,46 @@ class WorldSessionActor extends Actor //assert or transfer vehicle ownership continent.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) if vehicle.OwnerName.contains(tplayer.Name) => + case Some(vehicle: Vehicle) if vehicle.OwnerName.contains(tplayer.Name) => vehicle.Owner = guid - continent.VehicleEvents ! VehicleServiceMessage(s"${tplayer.Faction}", VehicleAction.Ownership(guid, vehicle.GUID)) + continent.VehicleEvents ! VehicleServiceMessage( + s"${tplayer.Faction}", + VehicleAction.Ownership(guid, vehicle.GUID) + ) case _ => player.VehicleOwned = None } GetVehicleAndSeat() match { //we're falling case (Some(vehicle), _) if vehicle.Definition == GlobalDefinitions.droppod => - sendResponse(DroppodFreefallingMessage( - vehicle.GUID, - vehicle.Position + Vector3.z(50), - Vector3.z(-999), - vehicle.Position + Vector3.z(25), - Vector3(0, 70.3125f, 90), Vector3(0, 0, 90) - )) + sendResponse( + DroppodFreefallingMessage( + vehicle.GUID, + vehicle.Position + Vector3.z(50), + Vector3.z(-999), + vehicle.Position + Vector3.z(25), + Vector3(0, 70.3125f, 90), + Vector3(0, 0, 90) + ) + ) case (Some(vehicle), Some(0)) => //summon any passengers and cargo vehicles left behind on previous continent - if(vehicle.Jammed) { + if (vehicle.Jammed) { //TODO something better than just canceling? vehicle.Actor ! JammableUnit.ClearJammeredStatus() vehicle.Actor ! JammableUnit.ClearJammeredSound() } //positive shield strength - if(vehicle.Shields > 0) { + if (vehicle.Shields > 0) { sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 68, vehicle.Shields)) } // ANT capacitor - if(vehicle.Definition.MaxNtuCapacitor > 0) { - sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled)) // set ntu on vehicle UI + if (vehicle.Definition.MaxNtuCapacitor > 0) { + sendResponse( + PlanetsideAttributeMessage(vehicle.GUID, 45, vehicle.NtuCapacitorScaled) + ) // set ntu on vehicle UI } LoadZoneTransferPassengerMessages( @@ -3271,18 +3668,16 @@ class WorldSessionActor extends Actor case _ => ; } interstellarFerryTopLevelGUID = None - if(loadConfZone && connectionState == 100) { + if (loadConfZone && connectionState == 100) { configZone(continent) loadConfZone = false } - if(noSpawnPointHere) { + if (noSpawnPointHere) { RequestSanctuaryZoneSpawn(player, continent.Number) - } - else if(originalDeadState == DeadState.Dead || player.Health == 0) { + } else if (originalDeadState == DeadState.Dead || player.Health == 0) { //killed during spawn setup or possibly a relog into a corpse (by accident?) player.Actor ! Player.Die() - } - else { + } else { tplayer.Actor ! Player.StaminaRegen() } upstreamMessageCount = 0 @@ -3293,7 +3688,7 @@ class WorldSessionActor extends Actor * @see `SetCurrentAvatar` * @param tplayer the target player */ - def SetCurrentAvatarNormally(tplayer : Player) : Unit = { + def SetCurrentAvatarNormally(tplayer: Player): Unit = { HandleSetCurrentAvatar(tplayer) } @@ -3301,14 +3696,16 @@ class WorldSessionActor extends Actor * These messages are dispatched when first starting up the client and connecting to the server for the first time. * While many of thee messages will be reused for other situations, they appear in this order only during startup. */ - def FirstTimeSquadSetup() : Unit = { + def FirstTimeSquadSetup(): Unit = { sendResponse(SquadDetailDefinitionUpdateMessage.Init) sendResponse(ReplicationStreamMessage(5, Some(6), Vector.empty)) //clear squad list sendResponse(SquadDefinitionActionMessage(PlanetSideGUID(0), 0, SquadAction.Unknown(6))) //only need to load these once - they persist between zone transfers and respawns avatar.SquadLoadouts.Loadouts.foreach { - case (index, loadout : SquadLoadout) => - sendResponse(SquadDefinitionActionMessage(PlanetSideGUID(0), index, SquadAction.ListSquadFavorite(loadout.task))) + case (index, loadout: SquadLoadout) => + sendResponse( + SquadDefinitionActionMessage(PlanetSideGUID(0), index, SquadAction.ListSquadFavorite(loadout.task)) + ) case (_, data) => log.warn(s"HandleSetCurrentAvatar: unknown loadout information $data in squad definition list") } @@ -3327,10 +3724,13 @@ class WorldSessionActor extends Actor * especially the unique character identifier number, * only the zone-specific squad members will receive the important messages about their squad member's spawn. */ - def RespawnSquadSetup() : Unit = { - if(squadUI.nonEmpty) { + def RespawnSquadSetup(): Unit = { + if (squadUI.nonEmpty) { sendResponse(PlanetsideAttributeMessage(player.GUID, 31, squad_supplement_id)) - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(player.GUID, 31, squad_supplement_id)) + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(player.GUID, 31, squad_supplement_id) + ) sendResponse(PlanetsideAttributeMessage(player.GUID, 32, squadUI(player.CharId).index)) } } @@ -3342,7 +3742,7 @@ class WorldSessionActor extends Actor * the player must also set squad colors for each other squad members. * Default respawn functionality may resume afterwards. */ - def ZoneChangeSquadSetup() : Unit = { + def ZoneChangeSquadSetup(): Unit = { RespawnSquadSetup() GiveSquadColorsInZone() squadSetup = RespawnSquadSetup @@ -3351,7 +3751,7 @@ class WorldSessionActor extends Actor /** * Allocate all squad members in zone and give their nameplates and their marquees the appropriate squad color. */ - def GiveSquadColorsInZone() : Unit = { + def GiveSquadColorsInZone(): Unit = { GiveSquadColorsInZone(squadUI.keys, squad_supplement_id) } @@ -3359,7 +3759,7 @@ class WorldSessionActor extends Actor * Allocate the listed squad members in zone and give their nameplates and their marquees the appropriate squad color. * @param members members of the squad to target */ - def GiveSquadColorsInZone(members : Iterable[Long]) : Unit = { + def GiveSquadColorsInZone(members: Iterable[Long]): Unit = { GiveSquadColorsInZone(members, squad_supplement_id) } @@ -3369,9 +3769,9 @@ class WorldSessionActor extends Actor * @param members members of the squad to target * @param value the assignment value */ - def GiveSquadColorsInZone(members : Iterable[Long], value : Long) : Unit = { - SquadMembersInZone(members).foreach { - members => sendResponse(PlanetsideAttributeMessage(members.GUID, 31, value)) + def GiveSquadColorsInZone(members: Iterable[Long], value: Long): Unit = { + SquadMembersInZone(members).foreach { members => + sendResponse(PlanetsideAttributeMessage(members.GUID, 31, value)) } } @@ -3381,7 +3781,7 @@ class WorldSessionActor extends Actor * @param members members of the squad to target * @return a list of `Player` objects */ - def SquadMembersInZone(members : Iterable[Long]) : Iterable[Player] = { + def SquadMembersInZone(members: Iterable[Long]): Iterable[Player] = { val players = continent.LivePlayers for { charId <- members @@ -3392,14 +3792,13 @@ class WorldSessionActor extends Actor } yield player.get } - def handleControlPkt(pkt : PlanetSideControlPacket) = { + def handleControlPkt(pkt: PlanetSideControlPacket) = { pkt match { - case sync@ControlSync(diff, _, _, _, _, _, fa, fb) => + case sync @ ControlSync(diff, _, _, _, _, _, fa, fb) => log.trace(s"SYNC: $sync") - val nextDiff = if(diff == 65535) { + val nextDiff = if (diff == 65535) { 0 - } - else { + } else { diff + 1 } val serverTick = ServerTick @@ -3421,2644 +3820,3003 @@ class WorldSessionActor extends Actor * @see `System.nanoTime` * @return a number that indicates server tick time */ - def ServerTick : Long = { + def ServerTick: Long = { serverTime = System.currentTimeMillis() & unsignedIntMaxValue serverTime } - def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match { - case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) => - val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate" - log.info(s"New world login to $server with Token:$token. $clientVersion") - sendResponse(ChatMsg(ChatMessageType.CMT_CULLWATERMARK, false, "", "", None)) - Thread.sleep(40) - import scala.concurrent.ExecutionContext.Implicits.global - clientKeepAlive.cancel - clientKeepAlive = context.system.scheduler.scheduleWithFixedDelay(0 seconds, 500 milliseconds, self, PokeClient()) - accountIntermediary ! RetrieveAccountData(token) + def handleGamePkt(pkt: PlanetSideGamePacket) = + pkt match { + case ConnectToWorldRequestMessage(server, token, majorVersion, minorVersion, revision, buildDate, unk) => + val clientVersion = s"Client Version: $majorVersion.$minorVersion.$revision, $buildDate" + log.info(s"New world login to $server with Token:$token. $clientVersion") + sendResponse(ChatMsg(ChatMessageType.CMT_CULLWATERMARK, false, "", "", None)) + Thread.sleep(40) + import scala.concurrent.ExecutionContext.Implicits.global + clientKeepAlive.cancel + clientKeepAlive = + context.system.scheduler.scheduleWithFixedDelay(0 seconds, 500 milliseconds, self, PokeClient()) + accountIntermediary ! RetrieveAccountData(token) - case msg@MountVehicleCargoMsg(player_guid, cargo_guid, carrier_guid, unk4) => - log.info(msg.toString) - (continent.GUID(cargo_guid), continent.GUID(carrier_guid)) match { - case (Some(cargo : Vehicle), Some(carrier : Vehicle)) => - carrier.CargoHolds.find({ case (_, hold) => !hold.isOccupied }) match { - case Some((mountPoint, _)) => //try begin the mount process - cargo.Actor ! CargoBehavior.CheckCargoMounting(carrier_guid, mountPoint, 0) - case _ => - log.warn(s"MountVehicleCargoMsg: target carrier vehicle (${carrier.Definition.Name}) does not have a cargo hold") - } - case (None, _) | (Some(_), None) => - log.warn(s"MountVehicleCargoMsg: one or more of the target vehicles do not exist - $carrier_guid or $cargo_guid") - case _ => ; - } - - case msg@DismountVehicleCargoMsg(player_guid, cargo_guid, bailed, requestedByPassenger, kicked) => - log.info(msg.toString) - //when kicked by carrier driver, player_guid will be PlanetSideGUID(0) - //when exiting of the cargo vehicle driver's own accord, player_guid will be the cargo vehicle driver - continent.GUID(cargo_guid) match { - case Some(cargo : Vehicle) if !requestedByPassenger => - continent.GUID(cargo.MountedIn) match { - case Some(carrier : Vehicle) => - CargoBehavior.HandleVehicleCargoDismount(continent, cargo_guid, bailed, requestedByPassenger, kicked) - case _ => ; - } - case _ => ; - } - - case msg@CharacterCreateRequestMessage(name, head, voice, gender, empire) => - log.info("Handling " + msg) - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "SELECT account_id FROM characters where name ILIKE ? AND deleted = false", List(name) - )).onComplete { - case scala.util.Success(queryResult) => - if(connection.isConnected) connection.disconnect - queryResult match { - case row : ArrayRowData => // If we got a row from the database - if(row(0).asInstanceOf[Int] == account.AccountId) { // create char - self ! CreateCharacter(name, head, voice, gender, empire) - sendResponse(ActionResultMessage.Fail(1)) - Thread.sleep(50) - } - else { // send "char already exist" - sendResponse(ActionResultMessage.Fail(1)) - Thread.sleep(50) - } - case _ => // If the char name didn't exist in the database, create char - self ! CreateCharacter(name, head, voice, gender, empire) - } - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - sendResponse(ActionResultMessage.Fail(4)) - log.error("Returning to character list due to error " + e.getMessage) - self ! ListAccountCharacters() - } - case scala.util.Failure(e) => - log.error(s"CharacterCreateRequest: no connection - ${e.getMessage}") - sendResponse(ActionResultMessage.Fail(5)) - } - - case msg@CharacterRequestMessage(charId, action) => - log.info(s"Handling $msg") - action match { - case CharacterRequestAction.Delete => - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "UPDATE characters SET deleted = true where id=?", Array(charId).toIndexedSeq - )).onComplete { - case scala.util.Success(_) => - if(connection.isConnected) connection.disconnect - log.info(s"CharacterRequest/Delete: character id $charId deleted") - sendResponse(ActionResultMessage.Pass) - self ! ListAccountCharacters() - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - log.info(s"CharacterRequest/Delete: character id $charId NOT deleted - ${e.getMessage}") - sendResponse(ActionResultMessage.Fail(6)) - Thread.sleep(50) - } - case scala.util.Failure(e) => - log.error(s"CharacterRequest/Delete: no connection - ${e.getMessage}") - } - - case CharacterRequestAction.Select => - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "SELECT id, name, faction_id, gender_id, head_id, voice_id FROM characters where id=?", Array(charId).toIndexedSeq - )).onComplete { - case Success(queryResult) => - if(connection.isConnected) connection.disconnect - queryResult match { - case row : ArrayRowData => - val lName : String = row(1).asInstanceOf[String] - val lFaction : PlanetSideEmpire.Value = PlanetSideEmpire(row(2).asInstanceOf[Int]) - val lGender : CharacterGender.Value = CharacterGender(row(3).asInstanceOf[Int]) - val lHead : Int = row(4).asInstanceOf[Int] - val lVoice : CharacterVoice.Value = CharacterVoice(row(5).asInstanceOf[Int]) - log.info(s"CharacterRequest/Select: character $lName found in records") - avatar = new Avatar(charId, lName, lFaction, lGender, lHead, lVoice) - var faction : String = lFaction.toString.toLowerCase - whenUsedLastMAXName(0) = faction + "hev" - whenUsedLastMAXName(1) = faction + "hev_antipersonnel" - whenUsedLastMAXName(2) = faction + "hev_antivehicular" - whenUsedLastMAXName(3) = faction + "hev_antiaircraft" - avatar.FirstTimeEvents = ftes - accountPersistence ! AccountPersistenceService.Login(lName) - case _ => - log.error(s"CharacterRequest/Select: no character for $charId found") - } - case e => - if(connection.isConnected) connection.disconnect - log.error(s"CharacterRequest/Select: toto tata; unexpected query result format - ${e.getClass}") - } - - case scala.util.Failure(e) => - log.error(s"CharacterRequest/Select: no connection - ${e.getMessage}") - } - - case default => - log.error("Unsupported " + default + " in " + msg) - } - - case KeepAliveMessage(_) => - keepAliveFunc() - - case msg@BeginZoningMessage() => - log.info("Reticulating splines ...") - zoneLoaded = None - val continentId = continent.Id - traveler.zone = continentId - val faction = player.Faction - val factionChannel = s"$faction" - continent.AvatarEvents ! Service.Join(continentId) - continent.AvatarEvents ! Service.Join(factionChannel) - continent.LocalEvents ! Service.Join(avatar.name) - continent.LocalEvents ! Service.Join(continentId) - continent.LocalEvents ! Service.Join(factionChannel) - continent.VehicleEvents ! Service.Join(avatar.name) - continent.VehicleEvents ! Service.Join(continentId) - continent.VehicleEvents ! Service.Join(factionChannel) - if(connectionState != 100) configZone(continent) - sendResponse(TimeOfDayMessage(1191182336)) - //custom - sendResponse(ReplicationStreamMessage(5, Some(6), Vector.empty)) //clear squad list - sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 112, 0)) // disable festive backpacks - - //find and reclaim own deployables, if any - val guid = player.GUID - val foundDeployables = continent.DeployableList.filter(obj => obj.OwnerName.contains(player.Name) && obj.Health > 0) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(foundDeployables, continent)) - foundDeployables.foreach(obj => { - if(avatar.Deployables.Add(obj)) { - obj.Owner = guid - log.info(s"Found a ${obj.Definition.Name} of ours while loading the zone") - } - }) - //render deployable objects - val (turrets, normal) = continent.DeployableList.partition(obj => - DeployableToolbox.UnifiedType(obj.Definition.Item) == DeployedItem.portable_manned_turret - ) - normal.foreach(obj => { - val definition = obj.Definition - sendResponse( - ObjectCreateMessage( - definition.ObjectId, - obj.GUID, - definition.Packet.ConstructorData(obj).get - ) - ) - }) - turrets.foreach(obj => { - val objGUID = obj.GUID - val definition = obj.Definition - sendResponse( - ObjectCreateMessage( - definition.ObjectId, - objGUID, - definition.Packet.ConstructorData(obj).get - ) - ) - //seated players - obj.asInstanceOf[Mountable].Seats.values - .map(_.Occupant) - .collect { - case Some(occupant) => - if(occupant.isAlive) { - val tdefintion = occupant.Definition - sendResponse( - ObjectCreateMessage( - tdefintion.ObjectId, - occupant.GUID, - ObjectCreateMessageParent(objGUID, 0), - tdefintion.Packet.ConstructorData(occupant).get - ) + case msg @ MountVehicleCargoMsg(player_guid, cargo_guid, carrier_guid, unk4) => + log.info(msg.toString) + (continent.GUID(cargo_guid), continent.GUID(carrier_guid)) match { + case (Some(cargo: Vehicle), Some(carrier: Vehicle)) => + carrier.CargoHolds.find({ case (_, hold) => !hold.isOccupied }) match { + case Some((mountPoint, _)) => //try begin the mount process + cargo.Actor ! CargoBehavior.CheckCargoMounting(carrier_guid, mountPoint, 0) + case _ => + log.warn( + s"MountVehicleCargoMsg: target carrier vehicle (${carrier.Definition.Name}) does not have a cargo hold" ) - } - } - }) - //sensor animation - normal - .filter(obj => - obj.Definition.DeployCategory == DeployableCategory.Sensors && - !obj.Destroyed && - (obj match { - case jObj : JammableUnit => !jObj.Jammed; - case _ => true - }) - ) - .foreach(obj => { - sendResponse(TriggerEffectMessage(obj.GUID, "on", true, 1000)) - }) - //update the health of our faction's deployables (if necessary) - //draw our faction's deployables on the map - continent.DeployableList - .filter(obj => obj.Faction == faction && !obj.Destroyed) - .foreach(obj => { - if(obj.Health != obj.DefaultHealth) { - sendResponse(PlanetsideAttributeMessage(obj.GUID, 0, obj.Health)) - } - val deployInfo = DeployableInfo(obj.GUID, Deployable.Icon(obj.Definition.Item), obj.Position, obj.Owner.getOrElse(PlanetSideGUID(0))) - sendResponse(DeployableObjectsInfoMessage(DeploymentAction.Build, deployInfo)) - }) - //render Equipment that was dropped into zone before the player arrived - continent.EquipmentOnGround.foreach(item => { - val definition = item.Definition - sendResponse( - ObjectCreateMessage( - definition.ObjectId, - item.GUID, - DroppedItemData(PlacementData(item.Position, item.Orientation), definition.Packet.ConstructorData(item).get) - ) - ) - }) - //load active players in zone (excepting players who are seated or players who are us) - val live = continent.LivePlayers - live.filterNot(tplayer => { - tplayer.GUID == player.GUID || tplayer.VehicleSeated.nonEmpty - }) - .foreach(char => { - val tdefintion = char.Definition - sendResponse(ObjectCreateMessage(tdefintion.ObjectId, char.GUID, char.Definition.Packet.ConstructorData(char).get)) - if(char.UsingSpecial == SpecialExoSuitDefinition.Mode.Anchored) { - sendResponse(PlanetsideAttributeMessage(char.GUID, 19, 1)) - } - }) - //load corpses in zone - continent.Corpses.foreach { - DepictPlayerAsCorpse - } - //load vehicles in zone (put separate the one we may be using) - val (wreckages, (vehicles, usedVehicle)) = { - val (a, b) = continent.Vehicles.partition(vehicle => { - vehicle.Destroyed && vehicle.Definition.DestroyedModel.nonEmpty - }) - (a, (continent.GUID(player.VehicleSeated) match { - case Some(vehicle : Vehicle) if vehicle.PassengerInSeat(player).isDefined => - b.partition { - _.GUID != vehicle.GUID } - case Some(_) => - //vehicle, but we're not seated in it - player.VehicleSeated = None - (b, List.empty[Vehicle]) - case None => - //throw error since VehicleSeated didn't point to a vehicle? - player.VehicleSeated = None - (b, List.empty[Vehicle]) - })) - } - //active vehicles (and some wreckage) - vehicles.foreach(vehicle => { - val vguid = vehicle.GUID - val vdefinition = vehicle.Definition - sendResponse(ObjectCreateMessage(vdefinition.ObjectId, vguid, vdefinition.Packet.ConstructorData(vehicle).get)) - //occupants other than driver - vehicle.Seats - .filter({ case (index, seat) => seat.isOccupied && live.contains(seat.Occupant.get) && index > 0 }) - .foreach({ case (index, seat) => - val tplayer = seat.Occupant.get - val tdefintion = tplayer.Definition - sendResponse( - ObjectCreateMessage( - tdefintion.ObjectId, - tplayer.GUID, - ObjectCreateMessageParent(vguid, index), - tdefintion.Packet.ConstructorData(tplayer).get - ) - ) - }) - }) - vehicles.collect { case vehicle if vehicle.Faction == faction => - Vehicles.ReloadAccessPermissions(vehicle, player.Name) - } - //our vehicle would have already been loaded; see NewPlayerLoaded/AvatarCreate - usedVehicle.headOption match { - case Some(vehicle) => - //depict any other passengers already in this zone - val vguid = vehicle.GUID - vehicle.Seats - .filter({ case (index, seat) => seat.isOccupied && !seat.Occupant.contains(player) && live.contains(seat.Occupant.get) && index > 0 }) - .foreach({ case (index, seat) => - val tplayer = seat.Occupant.get - val tdefintion = tplayer.Definition - sendResponse( - ObjectCreateMessage( - tdefintion.ObjectId, - tplayer.GUID, - ObjectCreateMessageParent(vguid, index), - tdefintion.Packet.ConstructorData(tplayer).get - ) - ) - }) - //since we would have only subscribed recently, we need to reload seat access states - (0 to 3).foreach { group => - sendResponse(PlanetsideAttributeMessage(vguid, group + 10, vehicle.PermissionGroup(group).get.id)) - } - case _ => ; //no vehicle - } - //vehicle wreckages - wreckages.foreach(vehicle => { - sendResponse( - ObjectCreateMessage( - vehicle.Definition.DestroyedModel.get.id, - vehicle.GUID, - DestroyedVehicleConverter.converter.ConstructorData(vehicle).get - ) - ) - }) - //cargo occupants (including our own vehicle as cargo) - vehicles.collect { case vehicle if vehicle.CargoHolds.nonEmpty => - vehicle.CargoHolds.collect({ case (index, hold) if hold.isOccupied => { - CargoBehavior.CargoMountBehaviorForAll(vehicle, hold.Occupant.get, index) //CargoMountBehaviorForUs can fail to attach the cargo vehicle on some clients - } - }) - } - //special deploy states - val deployedVehicles = vehicles.filter(_.DeploymentState == DriveState.Deployed) - deployedVehicles.filter(_.Definition == GlobalDefinitions.ams).foreach(obj => { - sendResponse(PlanetsideAttributeMessage(obj.GUID, 81, 1)) - }) - deployedVehicles.filter(_.Definition == GlobalDefinitions.router).foreach(obj => { - sendResponse(DeployRequestMessage(player.GUID, obj.GUID, DriveState.Deploying, 0, false, Vector3.Zero)) - sendResponse(DeployRequestMessage(player.GUID, obj.GUID, DriveState.Deployed, 0, false, Vector3.Zero)) - ToggleTeleportSystem(obj, TelepadLike.AppraiseTeleportationSystem(obj, continent)) - }) - - //implant terminals - continent.Map.TerminalToInterface.foreach({ case ((terminal_guid, interface_guid)) => - val parent_guid = PlanetSideGUID(terminal_guid) - continent.GUID(interface_guid) match { - case Some(obj : Terminal) => - val objDef = obj.Definition - sendResponse( - ObjectCreateMessage( - objDef.ObjectId, - PlanetSideGUID(interface_guid), - ObjectCreateMessageParent(parent_guid, 1), - objDef.Packet.ConstructorData(obj).get - ) + case (None, _) | (Some(_), None) => + log.warn( + s"MountVehicleCargoMsg: one or more of the target vehicles do not exist - $carrier_guid or $cargo_guid" ) case _ => ; } - //seat terminal occupants - continent.GUID(terminal_guid) match { - case Some(obj : Mountable) => - obj.Seats(0).Occupant match { - case Some(tplayer) => + + case msg @ DismountVehicleCargoMsg(player_guid, cargo_guid, bailed, requestedByPassenger, kicked) => + log.info(msg.toString) + //when kicked by carrier driver, player_guid will be PlanetSideGUID(0) + //when exiting of the cargo vehicle driver's own accord, player_guid will be the cargo vehicle driver + continent.GUID(cargo_guid) match { + case Some(cargo: Vehicle) if !requestedByPassenger => + continent.GUID(cargo.MountedIn) match { + case Some(carrier: Vehicle) => + CargoBehavior.HandleVehicleCargoDismount(continent, cargo_guid, bailed, requestedByPassenger, kicked) + case _ => ; + } + case _ => ; + } + + case msg @ CharacterCreateRequestMessage(name, head, voice, gender, empire) => + import ctx._ + log.info("Handling " + msg) + + ctx.run(query[persistence.Character].filter(_.name ilike lift(name)).filter(!_.deleted)).onComplete { + case Success(characters) => + characters.headOption match { + case None => + self ! CreateCharacter(name, head, voice, gender, empire) + case Some(_) => + // send "char already exist" + sendResponse(ActionResultMessage.Fail(1)) + } + case Failure(e) => + log.error(s"CharacterCreateRequest: ${e.getMessage}") + sendResponse(ActionResultMessage.Fail(4)) + self ! ListAccountCharacters() + } + + case msg @ CharacterRequestMessage(charId, action) => + import ctx._ + log.info(s"Handling $msg") + action match { + case CharacterRequestAction.Delete => + ctx.run(query[persistence.Character].filter(_.id == lift(charId)).delete).onComplete { + case Success(_) => + log.info(s"CharacterRequest/Delete: character id $charId deleted") + sendResponse(ActionResultMessage.Pass) + self ! ListAccountCharacters() + case Failure(e) => + log.error(s"CharacterRequest/Delete: ${e.getMessage}") + } + + case CharacterRequestAction.Select => + ctx.run(query[persistence.Character].filter(_.id == lift(charId))).onComplete { + case Success(characters) => + characters.headOption match { + case Some(character) => + log.info(s"CharacterRequest/Select: character ${character.name} found in records") + avatar = character.toAvatar + val faction: String = avatar.faction.toString.toLowerCase + whenUsedLastMAXName(0) = faction + "hev" + whenUsedLastMAXName(1) = faction + "hev_antipersonnel" + whenUsedLastMAXName(2) = faction + "hev_antivehicular" + whenUsedLastMAXName(3) = faction + "hev_antiaircraft" + avatar.FirstTimeEvents = ftes + accountPersistence ! AccountPersistenceService.Login(character.name) + case None => + log.error(s"CharacterRequest/Select: no character for $charId found") + } + + case Failure(e) => + log.error(s"CharacterRequest/Select: ${e.getMessage}") + } + + case default => + log.error("Unsupported " + default + " in " + msg) + } + + case KeepAliveMessage(_) => + keepAliveFunc() + + case msg @ BeginZoningMessage() => + log.info("Reticulating splines ...") + zoneLoaded = None + val continentId = continent.Id + traveler.zone = continentId + val faction = player.Faction + val factionChannel = s"$faction" + continent.AvatarEvents ! Service.Join(continentId) + continent.AvatarEvents ! Service.Join(factionChannel) + continent.LocalEvents ! Service.Join(avatar.name) + continent.LocalEvents ! Service.Join(continentId) + continent.LocalEvents ! Service.Join(factionChannel) + continent.VehicleEvents ! Service.Join(avatar.name) + continent.VehicleEvents ! Service.Join(continentId) + continent.VehicleEvents ! Service.Join(factionChannel) + if (connectionState != 100) configZone(continent) + sendResponse(TimeOfDayMessage(1191182336)) + //custom + sendResponse(ReplicationStreamMessage(5, Some(6), Vector.empty)) //clear squad list + sendResponse(PlanetsideAttributeMessage(PlanetSideGUID(0), 112, 0)) // disable festive backpacks + + //find and reclaim own deployables, if any + val guid = player.GUID + val foundDeployables = + continent.DeployableList.filter(obj => obj.OwnerName.contains(player.Name) && obj.Health > 0) + continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(foundDeployables, continent)) + foundDeployables.foreach(obj => { + if (avatar.Deployables.Add(obj)) { + obj.Owner = guid + log.info(s"Found a ${obj.Definition.Name} of ours while loading the zone") + } + }) + //render deployable objects + val (turrets, normal) = continent.DeployableList.partition(obj => + DeployableToolbox.UnifiedType(obj.Definition.Item) == DeployedItem.portable_manned_turret + ) + normal.foreach(obj => { + val definition = obj.Definition + sendResponse( + ObjectCreateMessage( + definition.ObjectId, + obj.GUID, + definition.Packet.ConstructorData(obj).get + ) + ) + }) + turrets.foreach(obj => { + val objGUID = obj.GUID + val definition = obj.Definition + sendResponse( + ObjectCreateMessage( + definition.ObjectId, + objGUID, + definition.Packet.ConstructorData(obj).get + ) + ) + //seated players + obj + .asInstanceOf[Mountable] + .Seats + .values + .map(_.Occupant) + .collect { + case Some(occupant) => + if (occupant.isAlive) { + val tdefintion = occupant.Definition + sendResponse( + ObjectCreateMessage( + tdefintion.ObjectId, + occupant.GUID, + ObjectCreateMessageParent(objGUID, 0), + tdefintion.Packet.ConstructorData(occupant).get + ) + ) + } + } + }) + //sensor animation + normal + .filter(obj => + obj.Definition.DeployCategory == DeployableCategory.Sensors && + !obj.Destroyed && + (obj match { + case jObj: JammableUnit => !jObj.Jammed; + case _ => true + }) + ) + .foreach(obj => { + sendResponse(TriggerEffectMessage(obj.GUID, "on", true, 1000)) + }) + //update the health of our faction's deployables (if necessary) + //draw our faction's deployables on the map + continent.DeployableList + .filter(obj => obj.Faction == faction && !obj.Destroyed) + .foreach(obj => { + if (obj.Health != obj.DefaultHealth) { + sendResponse(PlanetsideAttributeMessage(obj.GUID, 0, obj.Health)) + } + val deployInfo = DeployableInfo( + obj.GUID, + Deployable.Icon(obj.Definition.Item), + obj.Position, + obj.Owner.getOrElse(PlanetSideGUID(0)) + ) + sendResponse(DeployableObjectsInfoMessage(DeploymentAction.Build, deployInfo)) + }) + //render Equipment that was dropped into zone before the player arrived + continent.EquipmentOnGround.foreach(item => { + val definition = item.Definition + sendResponse( + ObjectCreateMessage( + definition.ObjectId, + item.GUID, + DroppedItemData( + PlacementData(item.Position, item.Orientation), + definition.Packet.ConstructorData(item).get + ) + ) + ) + }) + //load active players in zone (excepting players who are seated or players who are us) + val live = continent.LivePlayers + live + .filterNot(tplayer => { + tplayer.GUID == player.GUID || tplayer.VehicleSeated.nonEmpty + }) + .foreach(char => { + val tdefintion = char.Definition + sendResponse( + ObjectCreateMessage(tdefintion.ObjectId, char.GUID, char.Definition.Packet.ConstructorData(char).get) + ) + if (char.UsingSpecial == SpecialExoSuitDefinition.Mode.Anchored) { + sendResponse(PlanetsideAttributeMessage(char.GUID, 19, 1)) + } + }) + //load corpses in zone + continent.Corpses.foreach { + DepictPlayerAsCorpse + } + //load vehicles in zone (put separate the one we may be using) + val (wreckages, (vehicles, usedVehicle)) = { + val (a, b) = continent.Vehicles.partition(vehicle => { + vehicle.Destroyed && vehicle.Definition.DestroyedModel.nonEmpty + }) + ( + a, + (continent.GUID(player.VehicleSeated) match { + case Some(vehicle: Vehicle) if vehicle.PassengerInSeat(player).isDefined => + b.partition { + _.GUID != vehicle.GUID + } + case Some(_) => + //vehicle, but we're not seated in it + player.VehicleSeated = None + (b, List.empty[Vehicle]) + case None => + //throw error since VehicleSeated didn't point to a vehicle? + player.VehicleSeated = None + (b, List.empty[Vehicle]) + }) + ) + } + //active vehicles (and some wreckage) + vehicles.foreach(vehicle => { + val vguid = vehicle.GUID + val vdefinition = vehicle.Definition + sendResponse( + ObjectCreateMessage(vdefinition.ObjectId, vguid, vdefinition.Packet.ConstructorData(vehicle).get) + ) + //occupants other than driver + vehicle.Seats + .filter({ case (index, seat) => seat.isOccupied && live.contains(seat.Occupant.get) && index > 0 }) + .foreach({ + case (index, seat) => + val tplayer = seat.Occupant.get val tdefintion = tplayer.Definition sendResponse( ObjectCreateMessage( tdefintion.ObjectId, tplayer.GUID, - ObjectCreateMessageParent(parent_guid, 0), + ObjectCreateMessageParent(vguid, index), tdefintion.Packet.ConstructorData(tplayer).get ) ) - case None => ; - } - case _ => ; + }) + }) + vehicles.collect { + case vehicle if vehicle.Faction == faction => + Vehicles.ReloadAccessPermissions(vehicle, player.Name) } - }) + //our vehicle would have already been loaded; see NewPlayerLoaded/AvatarCreate + usedVehicle.headOption match { + case Some(vehicle) => + //depict any other passengers already in this zone + val vguid = vehicle.GUID + vehicle.Seats + .filter({ + case (index, seat) => + seat.isOccupied && !seat.Occupant.contains(player) && live.contains(seat.Occupant.get) && index > 0 + }) + .foreach({ + case (index, seat) => + val tplayer = seat.Occupant.get + val tdefintion = tplayer.Definition + sendResponse( + ObjectCreateMessage( + tdefintion.ObjectId, + tplayer.GUID, + ObjectCreateMessageParent(vguid, index), + tdefintion.Packet.ConstructorData(tplayer).get + ) + ) + }) + //since we would have only subscribed recently, we need to reload seat access states + (0 to 3).foreach { group => + sendResponse(PlanetsideAttributeMessage(vguid, group + 10, vehicle.PermissionGroup(group).get.id)) + } + case _ => ; //no vehicle + } + //vehicle wreckages + wreckages.foreach(vehicle => { + sendResponse( + ObjectCreateMessage( + vehicle.Definition.DestroyedModel.get.id, + vehicle.GUID, + DestroyedVehicleConverter.converter.ConstructorData(vehicle).get + ) + ) + }) + //cargo occupants (including our own vehicle as cargo) + vehicles.collect { + case vehicle if vehicle.CargoHolds.nonEmpty => + vehicle.CargoHolds.collect({ + case (index, hold) if hold.isOccupied => { + CargoBehavior.CargoMountBehaviorForAll( + vehicle, + hold.Occupant.get, + index + ) //CargoMountBehaviorForUs can fail to attach the cargo vehicle on some clients + } + }) + } + //special deploy states + val deployedVehicles = vehicles.filter(_.DeploymentState == DriveState.Deployed) + deployedVehicles + .filter(_.Definition == GlobalDefinitions.ams) + .foreach(obj => { + sendResponse(PlanetsideAttributeMessage(obj.GUID, 81, 1)) + }) + deployedVehicles + .filter(_.Definition == GlobalDefinitions.router) + .foreach(obj => { + sendResponse(DeployRequestMessage(player.GUID, obj.GUID, DriveState.Deploying, 0, false, Vector3.Zero)) + sendResponse(DeployRequestMessage(player.GUID, obj.GUID, DriveState.Deployed, 0, false, Vector3.Zero)) + ToggleTeleportSystem(obj, TelepadLike.AppraiseTeleportationSystem(obj, continent)) + }) - //base turrets - continent.Map.TurretToWeapon - .map { case ((turret_guid, _)) => continent.GUID(turret_guid) } - .collect { case Some(turret : FacilityTurret) => - val pguid = turret.GUID - //attached weapon - if(!turret.isUpgrading) { - turret.ControlledWeapon(wepNumber = 1) match { - case Some(obj : Tool) => + //implant terminals + continent.Map.TerminalToInterface.foreach({ + case ((terminal_guid, interface_guid)) => + val parent_guid = PlanetSideGUID(terminal_guid) + continent.GUID(interface_guid) match { + case Some(obj: Terminal) => val objDef = obj.Definition sendResponse( ObjectCreateMessage( objDef.ObjectId, - obj.GUID, - ObjectCreateMessageParent(pguid, 1), + PlanetSideGUID(interface_guid), + ObjectCreateMessageParent(parent_guid, 1), objDef.Packet.ConstructorData(obj).get ) ) case _ => ; } - } - //reserved ammunition? - //TODO need to register if it exists - //seat turret occupant - turret.Seats(0).Occupant match { - case Some(tplayer) => - val tdefintion = tplayer.Definition - sendResponse( - ObjectCreateMessage( - tdefintion.ObjectId, - tplayer.GUID, - ObjectCreateMessageParent(pguid, 0), - tdefintion.Packet.ConstructorData(tplayer).get - ) - ) - case None => ; - } - } - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.UpdateAmsSpawnPoint(continent)) - upstreamMessageCount = 0 - zoneLoaded = Some(true) - - case msg @ PlayerStateMessageUpstream(avatar_guid, pos, vel, yaw, pitch, yaw_upper, seq_time, unk3, is_crouching, is_jumping, jump_thrust, is_cloaking, unk5, unk6) => - //log.info(s"$msg") - persist() - turnCounterFunc(avatar_guid) - val isMoving = WorldEntity.isMoving(vel) - val isMovingPlus = isMoving || is_jumping || jump_thrust - if(isMovingPlus) { - CancelZoningProcessWithDescriptiveReason("cancel_motion") - } - player.Position = pos - player.Velocity = vel - player.Orientation = Vector3(player.Orientation.x, pitch, yaw) - player.FacingYawUpper = yaw_upper - player.Crouching = is_crouching - player.Jumping = is_jumping - if(is_cloaking && !player.Cloaked) { - CancelZoningProcessWithDescriptiveReason("cancel_cloak") - } - player.Cloaked = player.ExoSuit == ExoSuitType.Infiltration && is_cloaking - CapacitorTick(jump_thrust) - if(isMovingPlus && usingMedicalTerminal.isDefined) { - continent.GUID(usingMedicalTerminal) match { - case Some(term : Terminal with ProximityUnit) => - StopUsingProximityUnit(term) - case _ => ; - } - } - accessedContainer match { - case Some(veh : Vehicle) => - if(isMoving || veh.isMoving(1) || Vector3.DistanceSquared(player.Position, veh.TrunkLocation) > 9) { - val guid = player.GUID - sendResponse(UnuseItemMessage(guid, veh.GUID)) - sendResponse(UnuseItemMessage(guid, guid)) - veh.AccessingTrunk = None - UnAccessContents(veh) - accessedContainer = None - } - case Some(container) => //just in case - if(isMovingPlus) { - val guid = player.GUID - // If the container is a corpse and gets removed just as this runs it can cause a client disconnect, so we'll check the container has a GUID first. - if(container.HasGUID) { - sendResponse(UnuseItemMessage(guid, container.GUID)) - } - sendResponse(UnuseItemMessage(guid, guid)) - accessedContainer = None - } - case None => ; - } - val wepInHand : Boolean = player.Slot(player.DrawnSlot).Equipment match { - case Some(item) => item.Definition == GlobalDefinitions.bolt_driver - case None => false - } - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlayerState(avatar_guid, player.Position, player.Velocity, yaw, pitch, yaw_upper, seq_time, is_crouching, is_jumping, jump_thrust, is_cloaking, player.spectator, wepInHand)) - updateSquad() - if(player.death_by == -1) { - KickedByAdministration() - } - - case msg@ChildObjectStateMessage(object_guid, pitch, yaw) => - //log.info(s"$msg") - //the majority of the following check retrieves information to determine if we are in control of the child - FindContainedWeapon match { - case (Some(o), Some(tool)) => - (o match { - case mount : Mountable => mount.PassengerInSeat(player) - case _ => None - }) match { - case None | Some(0) => ; - case Some(_) => - persist() - turnCounterFunc(player.GUID) - } - if(tool.GUID == object_guid) { - //TODO set tool orientation? - player.Orientation = Vector3(0f, pitch, yaw) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.ChildObjectState(player.GUID, object_guid, pitch, yaw)) - } - else { - log.warn(s"ChildObjectState: ${player.Name} is using a different controllable agent than #${object_guid.guid}") - } - case (Some(obj), None) => - log.warn(s"ChildObjectState: ${player.Name} can not find any controllable agent, let alone #${object_guid.guid}") - case (None, _) => ; - //TODO status condition of "playing getting out of vehicle to allow for late packets without warning - //log.warn(s"ChildObjectState: player ${player.Name} not related to anything with a controllable agent") - } - if (player.death_by == -1) { - KickedByAdministration() - } - - case msg@VehicleStateMessage(vehicle_guid, unk1, pos, ang, vel, flying, unk6, unk7, wheels, is_decelerating, is_cloaked) => - //log.info(s"$msg") - GetVehicleAndSeat() match { - case (Some(obj), Some(0)) => - //we're driving the vehicle - persist() - turnCounterFunc(player.GUID) - val seat = obj.Seats(0) - player.Position = pos //convenient - if(seat.ControlledWeapon.isEmpty) { - player.Orientation = Vector3.z(ang.z) //convenient - } - obj.Position = pos - obj.Orientation = ang - if(obj.MountedIn.isEmpty) { - if(obj.DeploymentState != DriveState.Deployed) { - obj.Velocity = vel - } else { - obj.Velocity = Some(Vector3.Zero) - } - if(obj.Definition.CanFly) { - obj.Flying = flying.nonEmpty //usually Some(7) - } - obj.Cloaked = obj.Definition.CanCloak && is_cloaked - } - else { - obj.Velocity = None - obj.Flying = false - } - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.VehicleState(player.GUID, vehicle_guid, unk1, obj.Position, ang, obj.Velocity, if(obj.Flying) { - flying - } - else { - None - }, unk6, unk7, wheels, is_decelerating, obj.Cloaked)) - updateSquad() - case (None, _) => - //log.error(s"VehicleState: no vehicle $vehicle_guid found in zone") - //TODO placing a "not driving" warning here may trigger as we are disembarking the vehicle - case (_, Some(index)) => - log.error(s"VehicleState: player should not be dispatching this kind of packet from vehicle#$vehicle_guid when not the driver ($index)") - case _ => ; - } - if (player.death_by == -1) { - KickedByAdministration() - } - - case msg@VehicleSubStateMessage(vehicle_guid, player_guid, vehicle_pos, vehicle_ang, vel, unk1, unk2) => - //log.info(s"VehicleSubState: $vehicle_guid, ${player.Name}_guid, $vehicle_pos, $vehicle_ang, $vel, $unk1, $unk2") - - case msg@ProjectileStateMessage(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid) => - //log.trace(s"ProjectileState: $msg") - val index = projectile_guid.guid - Projectile.BaseUID - projectiles(index) match { - case Some(projectile) if projectile.HasGUID => - val projectileGlobalUID = projectile.GUID - projectile.Position = shot_pos - projectile.Orientation = shot_orient - projectile.Velocity = shot_vel - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ProjectileState(player.GUID, projectileGlobalUID, shot_pos, shot_vel, shot_orient, seq, end, target_guid)) - case _ if seq == 0 => - /* missing the first packet in the sequence is permissible */ - case _ => - log.warn(s"ProjectileState: constructed projectile ${projectile_guid.guid} can not be found") - } - - case msg @ ReleaseAvatarRequestMessage() => - log.info(s"ReleaseAvatarRequest: ${player.GUID} on ${continent.Id} has released") - reviveTimer.cancel - GoToDeploymentMap() - HandleReleaseAvatar(player, continent) - - case msg@SpawnRequestMessage(u1, spawn_type, u3, u4, zone_number) => - log.info(s"SpawnRequestMessage: $msg") - if(deadState != DeadState.RespawnTime) { - deadState = DeadState.RespawnTime - cluster ! Zone.Lattice.RequestSpawnPoint(zone_number.toInt, player, spawn_type.id.toInt) - } - else { - log.warn("SpawnRequestMessage: request consumed; already respawning ...") - } - - case msg@SetChatFilterMessage(send_channel, origin, whitelist) => - //log.info("SetChatFilters: " + msg) - - case msg@ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) => - var makeReply : Boolean = false - var echoContents : String = contents - val trimContents = contents.trim - val trimRecipient = recipient.trim - //TODO messy on/off strings may work - if(messagetype == ChatMessageType.CMT_FLY && admin) { - makeReply = false - if(!flying) { - flying = true - sendResponse(ChatMsg(ChatMessageType.CMT_FLY, msg.wideContents, msg.recipient, "on", msg.note)) - } - else { - flying = false - sendResponse(ChatMsg(ChatMessageType.CMT_FLY, msg.wideContents, msg.recipient, "off", msg.note)) - } - } - else if(messagetype == ChatMessageType.CMT_SPEED && admin) { - makeReply = true - speed = { - try { - trimContents.toFloat - } - catch { - case _ : Exception => - echoContents = "1.000" - 1f - } - } - } - else if(messagetype == ChatMessageType.CMT_TOGGLESPECTATORMODE && admin) { - makeReply = false - if(!player.spectator) { - player.spectator = true - sendResponse(ChatMsg(ChatMessageType.CMT_TOGGLESPECTATORMODE, msg.wideContents, msg.recipient, "on", msg.note)) - } - else { - player.spectator = false - sendResponse(ChatMsg(ChatMessageType.CMT_TOGGLESPECTATORMODE, msg.wideContents, msg.recipient, "off", msg.note)) - } - } - else if(messagetype == ChatMessageType.CMT_RECALL) { - makeReply = false - val sanctuary = Zones.SanctuaryZoneId(player.Faction) - if(zoningType == Zoning.Method.Quit) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You can't recall to your sanctuary continent while quitting", None)) - } - else if(zoningType == Zoning.Method.InstantAction) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You can't recall to your sanctuary continent while instant actioning", None)) - } - else if(zoningType == Zoning.Method.Recall) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You already requested to recall to your sanctuary continent", None)) - } - else if(continent.Id.equals(sanctuary)) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You can't recall to your sanctuary continent when you are already on your faction's sanctuary continent", None)) - } - else if(!player.isAlive || deadState != DeadState.Alive) { - if (player.isAlive) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@norecall_deconstructing", None)) - //sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You can't recall to your sanctuary continent while deconstructing.", None)) - } - else { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@norecall_dead", None)) - } - } - else if(player.VehicleSeated.nonEmpty) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@norecall_invehicle", None)) - } - else { - zoningType = Zoning.Method.Recall - zoningChatMessageType = messagetype - zoningStatus = Zoning.Status.Request - zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) - cluster ! Zoning.Recall.Request(player.Faction, sanctuary) - } - } - else if(messagetype == ChatMessageType.CMT_INSTANTACTION) { - makeReply = false - if(zoningType == Zoning.Method.Quit) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You can't instant action while quitting.", None)) - } - else if(zoningType == Zoning.Method.InstantAction) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noinstantaction_instantactionting", None)) - } - else if(zoningType == Zoning.Method.Recall) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "You won't instant action. You already requested to recall to your sanctuary continent", None)) - } - else if(!player.isAlive || deadState != DeadState.Alive) { - if(player.isAlive) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noinstantaction_deconstructing", None)) - } - else { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noinstantaction_dead", None)) - } - } - else if(player.VehicleSeated.nonEmpty) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noinstantaction_invehicle", None)) - } - else { - zoningType = Zoning.Method.InstantAction - zoningChatMessageType = messagetype - zoningStatus = Zoning.Status.Request - zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) - cluster ! Zoning.InstantAction.Request(player.Faction) - } - } - else if(messagetype == ChatMessageType.CMT_QUIT) { - makeReply = false - if(zoningType == Zoning.Method.Quit) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noquit_quitting", None)) - } - else if(!player.isAlive || deadState != DeadState.Alive) { - if(player.isAlive) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noquit_deconstructing", None)) - } - else { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noquit_dead", None)) - } - } - else if(player.VehicleSeated.nonEmpty) { - sendResponse(ChatMsg(ChatMessageType.CMT_QUIT, false, "", "@noquit_invehicle", None)) - } - else { - //priority to quitting is given to quit over other zoning methods - if(zoningType == Zoning.Method.InstantAction || zoningType == Zoning.Method.Recall) { - CancelZoningProcessWithDescriptiveReason("cancel") - } - zoningType = Zoning.Method.Quit - zoningChatMessageType = messagetype - zoningStatus = Zoning.Status.Request - self ! Zoning.Quit() - } - } - CSRZone.read(traveler, msg) match { - case (true, zone, pos) => - if (player.isAlive && zone != player.Continent && (admin || zone == "z8" || zone == "c1" || zone == "c2" || zone == "c3" || zone == "c4" || zone == "c5" || zone == "c6" || - zone == "tzshtr" || zone == "tzcotr" || zone == "tzdrtr" || - zone == "tzshnc" || zone == "tzconc" || zone == "tzdrnc" || - zone == "tzshvs" || zone == "tzcovs" || zone == "tzdrvs")) { - deadState = DeadState.Release //cancel movement updates - PlayerActionsToCancel() - continent.GUID(player.VehicleSeated) match { - case Some(vehicle : Vehicle) if vehicle.MountedIn.isEmpty => - vehicle.PassengerInSeat(player) match { - case Some(0) => - vehicle.Position = pos - LoadZonePhysicalSpawnPoint(zone, pos, Vector3.Zero, 0) - case _ => //not seated as the driver, in which case we can't move - deadState = DeadState.Alive + //seat terminal occupants + continent.GUID(terminal_guid) match { + case Some(obj: Mountable) => + obj.Seats(0).Occupant match { + case Some(tplayer) => + val tdefintion = tplayer.Definition + sendResponse( + ObjectCreateMessage( + tdefintion.ObjectId, + tplayer.GUID, + ObjectCreateMessageParent(parent_guid, 0), + tdefintion.Packet.ConstructorData(tplayer).get + ) + ) + case None => ; } - case None => - player.Position = pos - //continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, player.GUID)) - LoadZonePhysicalSpawnPoint(zone, pos, Vector3.Zero, 0) - case _ => //seated in something that is not a vehicle or the vehicle is cargo, in which case we can't move - deadState = DeadState.Alive - } - } - case (_, _, _) => ; - } - - CSRWarp.read(traveler, msg) match { - case (true, pos) => - // continent.Id == "c1" || continent.Id == "c2" || continent.Id == "c3" || continent.Id == "c4" || continent.Id == "c5" || continent.Id == "c6" || - if (player.isAlive && (admin || continent.Id == "z8" || - continent.Id == "tzshtr" || continent.Id == "tzcotr" || continent.Id == "tzdrtr" || - continent.Id == "tzshnc" || continent.Id == "tzconc" || continent.Id == "tzdrnc" || - continent.Id == "tzshvs" || continent.Id == "tzcovs" || continent.Id == "tzdrvs")) { - deadState = DeadState.Release //cancel movement updates - PlayerActionsToCancel() - continent.GUID(player.VehicleSeated) match { - case Some(vehicle : Vehicle) if vehicle.MountedIn.isEmpty => - vehicle.PassengerInSeat(player) match { - case Some(0) => - vehicle.Position = pos - LoadZonePhysicalSpawnPoint(continent.Id, pos, Vector3.z(vehicle.Orientation.z), 0) - case _ => //not seated as the driver, in which case we can't move - deadState = DeadState.Alive - } - case None => - player.Position = pos - sendResponse(PlayerStateShiftMessage(ShiftState(0, pos, player.Orientation.z, None))) - deadState = DeadState.Alive //must be set here - case _ => //seated in something that is not a vehicle or the vehicle is cargo, in which case we can't move - deadState = DeadState.Alive - } - } - case (_, _) => ; - } - - // TODO: Prevents log spam, but should be handled correctly - if(messagetype != ChatMessageType.CMT_TOGGLE_GM) { - log.info("Chat: " + msg) - } - else { - log.info("Chat: " + msg) - makeReply = false - } - if(messagetype == ChatMessageType.CMT_SUICIDE) { - if(player.isAlive && deadState != DeadState.Release) { - Suicide(player) - } - } - else if(messagetype == ChatMessageType.CMT_CULLWATERMARK) { - if(trimContents.contains("40 80")) connectionState = 100 - else if(trimContents.contains("120 200")) connectionState = 25 - else connectionState = 50 - } - else if(messagetype == ChatMessageType.CMT_DESTROY) { - makeReply = true - val guid = contents.toInt - continent.GUID(continent.Map.TerminalToSpawnPad.getOrElse(guid, guid)) match { - case Some(pad : VehicleSpawnPad) => - pad.Actor ! VehicleSpawnControl.ProcessControl.Flush - case Some(turret : FacilityTurret) if turret.isUpgrading => - WeaponTurrets.FinishUpgradingMannedTurret(turret, TurretUpgrade.None) - case _ => - self ! PacketCoding.CreateGamePacket(0, RequestDestroyMessage(PlanetSideGUID(guid))) - } - } - //dev hack; consider bang-commands to complement slash-commands in future - if(trimContents.equals("!loc")) { - makeReply = true - echoContents = s"zone=${continent.Id} pos=${player.Position.x},${player.Position.y},${player.Position.z}; ori=${player.Orientation.x},${player.Orientation.y},${player.Orientation.z}" - log.info(echoContents) - } - else if (trimContents.contains("!list") && admin) { - // StartBundlingPackets() - val localString : String = contents.drop(contents.indexOf(" ") + 1) - - if(localString.equalsIgnoreCase("!list")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID] at PosX PosY PosZ", note_contents)) - continent.LivePlayers.filterNot(_.GUID == player.GUID).sortBy(_.Name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", - char.Name + " (" + char.Faction + ") [" + char.CharId + "] at " + char.Position.x.toInt + " " + char.Position.y.toInt + " " + char.Position.z.toInt, note_contents)) - }) - continent.Corpses.filterNot(_.GUID == player.GUID).sortBy(_.Name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", - "\\#7" + char.Name + " (" + char.Faction + ") [" + char.CharId + "] at " + char.Position.x.toInt + " " + char.Position.y.toInt + " " + char.Position.z.toInt, note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z1")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z1.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z2")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z2.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z3")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z3.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z4")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z4.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z5")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z5.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z6")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z6.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z7")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z7.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z8")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z8.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z9")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z9.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("z10")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.z10.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("home1")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.home1.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("home2")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.home2.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("home3")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.home3.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c1")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c1.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c2")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c2.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c3")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c3.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c4")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c4.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c5")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c5.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("c6")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.c6.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("i1")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.i1.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("i2")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.i2.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("i3")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.i3.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else if(localString.equalsIgnoreCase("i4")) { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID]", note_contents)) - Zones.i4.Players.filterNot(_.CharId == player.CharId).sortBy(_.name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", char.name + " (" + char.faction + ") [" + char.CharId + "]", note_contents)) - }) - } - else { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", "\\#8Name (Faction) [ID] in Zone at PosX PosY PosZ", note_contents)) - continent.LivePlayers.filter(_.Name.contains(localString)).sortBy(_.Name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", - char.Name + " (" + char.Faction + ") [" + char.CharId + "] in " + char.Continent + " at " + char.Position.x.toInt + " " + char.Position.y.toInt + " " + char.Position.z.toInt, note_contents)) - }) - continent.Corpses.filter(_.Name.contains(localString)).sortBy(_.Name).foreach(char => { - sendResponse(ChatMsg(ChatMessageType.CMT_GMOPEN, has_wide_contents, "Server", - "\\#7" + char.Name + " (" + char.Faction + ") [" + char.CharId + "] in " + char.Continent + " at " + char.Position.x.toInt + " " + char.Position.y.toInt + " " + char.Position.z.toInt, note_contents)) - }) - } - // StopBundlingPackets() - } - else if (trimContents.contains("!kick") && admin) { - val input = trimContents.split("\\s+").drop(1) - if(input.length > 0) { - val numRegex = raw"(\d+)".r - val id = input(0) - val determination : Player=>Boolean = id match { - case numRegex(_) => { _.CharId == id.toLong } - case _ => { _.Name.equals(id) } - } - continent.LivePlayers.find(determination).orElse(continent.Corpses.find(determination)) match { - case Some(tplayer) if AdministrativeKick(tplayer) => - if(input.length > 1) { - val time = input(1) - time match { - case numRegex(_) => - accountPersistence ! AccountPersistenceService.Kick(tplayer.Name, Some(time.toLong)) - case _ => - accountPersistence ! AccountPersistenceService.Kick(tplayer.Name, None) - } - } - case _ => ; - } - } - } - else if(trimRecipient.equals("tr")) { - sendResponse(ZonePopulationUpdateMessage(4, 414, 138, contents.toInt, 138, contents.toInt / 2, 138, 0, 138, 0)) - } - else if(trimRecipient.equals("nc")) { - sendResponse(ZonePopulationUpdateMessage(4, 414, 138, 0, 138, contents.toInt, 138, contents.toInt / 3, 138, 0)) - } - else if(trimRecipient.equals("vs")) { - sendResponse(ZonePopulationUpdateMessage(4, 414, 138, contents.toInt * 2, 138, 0, 138, contents.toInt, 138, 0)) - } - else if(trimRecipient.equals("bo")){ - sendResponse(ZonePopulationUpdateMessage(4, 414, 138, 0, 138, 0, 138, 0, 138, contents.toInt)) - - // sendResponse(ZoneInfoMessage(contents.toInt, true, 25200000)) - // sendResponse(ZoneInfoMessage(contents.toInt-1, false, 25200000)) - // sendResponse(ChatMsg(ChatMessageType.UNK_229, false, "", "@cavern_switched^@c1~^@c5~", None)) - } - else if(trimContents.startsWith("!ntu") && admin){ - continent.Buildings.values.foreach(building => - building.Amenities.foreach(amenity => - amenity.Definition match { - case GlobalDefinitions.resource_silo => - val r = new scala.util.Random - val silo = amenity.asInstanceOf[ResourceSilo] - val ntu: Int = 900 + r.nextInt(100) - silo.ChargeLevel - // val ntu: Int = 0 + r.nextInt(100) - silo.ChargeLevel - silo.Actor ! ResourceSilo.UpdateChargeLevel(ntu) - case _ => ; } - ) - ) - } - else if(trimContents.startsWith("!hack") && admin){ - var hackFaction = PlanetSideEmpire.NEUTRAL - val args = trimContents.split(" ") - if (args.length == 3) { - var bad : Boolean = false - if(args(2).equalsIgnoreCase("tr")) hackFaction = PlanetSideEmpire.TR - else if(args(2).equalsIgnoreCase("nc")) hackFaction = PlanetSideEmpire.NC - else if(args(2).equalsIgnoreCase("vs")) hackFaction = PlanetSideEmpire.VS - else if(args(2).equalsIgnoreCase("bo")) hackFaction = PlanetSideEmpire.NEUTRAL - else bad = true - if(bad) { - sendResponse(ChatMsg(ChatMessageType.UNK_229, true, "", "USE !hack tr|vs|nc|bo OR !hack BaseName tr|vs|nc|bo", None)) - } - else { - continent.Buildings.find(x => !x._2.Name.isEmpty && args(1).equalsIgnoreCase(x._2.Name) && x._2.CaptureTerminal.isDefined) match { - case Some((_, building)) => - log.info(s"Setting Name: ${building.Name} / GUID: ${building.GUID} / MapId: ${building.MapId} to empire : ${args(1)}") - building.Faction = hackFaction - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.SetEmpire(building.GUID, hackFaction)) - case _ => - sendResponse(ChatMsg(ChatMessageType.UNK_229, true, "", "Base not found or does not have control console", None)) - } - } - } else if (args.length == 2) { - var bad : Boolean = false - if(args(1).equalsIgnoreCase("tr")) hackFaction = PlanetSideEmpire.TR - else if(args(1).equalsIgnoreCase("nc")) hackFaction = PlanetSideEmpire.NC - else if(args(1).equalsIgnoreCase("vs")) hackFaction = PlanetSideEmpire.VS - else if(args(1).equalsIgnoreCase("bo")) hackFaction = PlanetSideEmpire.NEUTRAL - else bad = true - if(bad) { - sendResponse(ChatMsg(ChatMessageType.UNK_229, true, "", "USE !hack tr|vs|nc|bo OR !hack BaseName tr|vs|nc|bo", None)) - } - else { - continent.Buildings.foreach({ - case (_, building) => - if (!building.Name.isEmpty && building.CaptureTerminal.isDefined) { - log.info(s"Setting Name: ${building.Name} / GUID: ${building.GUID} / MapId: ${building.MapId} to empire : ${args(1)}") - building.Faction = hackFaction - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.SetEmpire(building.GUID, hackFaction)) - } - }) - } - } - else { - sendResponse(ChatMsg(ChatMessageType.UNK_229, true, "", "USE !hack tr|vs|nc|bo OR !hack BaseName tr|vs|nc|bo", None)) - } - } - // TODO: Depending on messagetype, may need to prepend sender's name to contents with proper spacing - // TODO: Just replays the packet straight back to sender; actually needs to be routed to recipients! - if(makeReply) { - sendResponse(ChatMsg(messagetype, has_wide_contents, recipient, echoContents, note_contents)) - } - if(messagetype == ChatMessageType.CMT_OPEN && !player.silenced) { - chatService ! ChatServiceMessage("local", ChatAction.Local(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - else if(messagetype == ChatMessageType.CMT_VOICE) { - chatService ! ChatServiceMessage("voice", ChatAction.Voice(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - else if(messagetype == ChatMessageType.CMT_TELL && !player.silenced) { - chatService ! ChatServiceMessage("tell", ChatAction.Tell(player.GUID, player.Name, msg)) - } - else if(messagetype == ChatMessageType.CMT_BROADCAST && !player.silenced) { - chatService ! ChatServiceMessage("broadcast", ChatAction.Broadcast(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - else if(messagetype == ChatMessageType.CMT_NOTE) { - chatService ! ChatServiceMessage("note", ChatAction.Note(player.GUID, player.Name, msg)) - } - else if(messagetype == ChatMessageType.CMT_SILENCE && admin) { - chatService ! ChatServiceMessage("gm", ChatAction.GM(player.GUID, player.Name, msg)) - } - else if (messagetype == ChatMessageType.CMT_SQUAD && !player.silenced) { - if(squadChannel.nonEmpty) { - chatService ! ChatServiceMessage(squadChannel.get, ChatAction.Squad(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - } - else if (messagetype == ChatMessageType.CMT_PLATOON && !player.silenced) { - chatService ! ChatServiceMessage("platoon", ChatAction.Platoon(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - else if (messagetype == ChatMessageType.CMT_COMMAND && admin) { - chatService ! ChatServiceMessage("command", ChatAction.Command(player.GUID, player.Name, continent, player.Position, player.Faction, msg)) - } - else if(messagetype == ChatMessageType.CMT_WHO || messagetype == ChatMessageType.CMT_WHO_CSR || messagetype == ChatMessageType.CMT_WHO_CR || - messagetype == ChatMessageType.CMT_WHO_PLATOONLEADERS || messagetype == ChatMessageType.CMT_WHO_SQUADLEADERS || messagetype == ChatMessageType.CMT_WHO_TEAMS) { - val poplist = continent.Players - val popTR = poplist.count(_.faction == PlanetSideEmpire.TR) - val popNC = poplist.count(_.faction == PlanetSideEmpire.NC) - val popVS = poplist.count(_.faction == PlanetSideEmpire.VS) - val contName = continent.Map.Name - StartBundlingPackets() - sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "That command doesn't work for now, but : ", None)) - sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "NC online : " + popNC + " on " + contName, None)) - sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "TR online : " + popTR + " on " + contName, None)) - sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "VS online : " + popVS + " on " + contName, None)) - StopBundlingPackets() - } + }) - case msg@VoiceHostRequest(unk, PlanetSideGUID(player_guid), data) => - log.info("Player " + player_guid + " requested in-game voice chat.") - sendResponse(VoiceHostKill()) - - case msg@VoiceHostInfo(player_guid, data) => - sendResponse(VoiceHostKill()) - - case msg@ChangeAmmoMessage(item_guid, unk1) => - log.info("ChangeAmmo: " + msg) - FindContainedEquipment match { - case (Some(_), Some(obj : ConstructionItem)) => - PerformConstructionItemAmmoChange(obj, obj.AmmoTypeIndex) - case (Some(obj), Some(tool : Tool)) => - PerformToolAmmoChange(tool, obj) - case (_, Some(obj)) => - log.error(s"ChangeAmmo: the object ${obj.Definition.Name} is not a valid type") - case (_, None) => - log.error(s"ChangeAmmo: can not find $item_guid") - } - - case msg@ChangeFireModeMessage(item_guid, fire_mode) => - log.info("ChangeFireMode: " + msg) - FindEquipment match { - case Some(obj : PlanetSideGameObject with FireModeSwitch[_]) => - val originalModeIndex = obj.FireModeIndex - obj match { - case cItem : ConstructionItem => - NextConstructionItemFireMode(cItem, originalModeIndex) - case _ => - obj.NextFireMode - } - val modeIndex = obj.FireModeIndex - val tool_guid = obj.GUID - if(originalModeIndex == modeIndex) { - obj.FireModeIndex = originalModeIndex - sendResponse(ChangeFireModeMessage(tool_guid, originalModeIndex)) //reinforcement - } - else { - log.info(s"ChangeFireMode: changing $tool_guid to fire mode $modeIndex") - sendResponse(ChangeFireModeMessage(tool_guid, modeIndex)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireMode(player.GUID, tool_guid, modeIndex)) - } - case Some(_) => - log.error(s"ChangeFireMode: the object that was found for $item_guid does not possess fire modes") - case None => - log.error(s"ChangeFireMode: can not find $item_guid") - } - - case msg@ChangeFireStateMessage_Start(item_guid) => - log.trace("ChangeFireState_Start: " + msg) - if(shooting.isEmpty) { - FindEquipment match { - case Some(tool : Tool) => - if(tool.Magazine > 0 || prefire.contains(item_guid)) { - prefire = None - shooting = Some(item_guid) - //special case - suppress the decimator's alternate fire mode, by projectile - if(tool.Projectile != GlobalDefinitions.phoenix_missile_guided_projectile) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) - } - } - else { - log.warn(s"ChangeFireState_Start: ${tool.Definition.Name} magazine is empty before trying to shoot bullet") - EmptyMagazine(item_guid, tool) - } - case Some(_) => //permissible, for now - prefire = None - shooting = Some(item_guid) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) - case None => - log.error(s"ChangeFireState_Start: can not find $item_guid") - } - } - - case msg@ChangeFireStateMessage_Stop(item_guid) => - log.trace("ChangeFireState_Stop: " + msg) - prefire = None - val weapon : Option[Equipment] = if(shooting.contains(item_guid)) { - shooting = None - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, item_guid)) - FindEquipment - } - else { - FindEquipment match { - case Some(tool : Tool) => - //the decimator does not send a ChangeFireState_Start on the last shot - if(tool.Definition == GlobalDefinitions.phoenix && - tool.Projectile != GlobalDefinitions.phoenix_missile_guided_projectile) { - //suppress the decimator's alternate fire mode, however - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) - } - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, item_guid)) - Some(tool) - case Some(tool) => //permissible, for now - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, item_guid)) - Some(tool) - case _ => - log.warn(s"ChangeFireState_Stop: received an unexpected message about $item_guid") - None - } - } - weapon match { - case Some(tool : Tool) => - if(tool.Magazine == 0) { - FireCycleCleanup(tool) - } - case Some(trigger : BoomerTrigger) => - val playerGUID = player.GUID - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(playerGUID, item_guid)) - continent.GUID(trigger.Companion) match { - case Some(boomer : BoomerDeployable) => - boomer.Destroyed = true - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.Detonate(boomer.GUID, boomer)) - Deployables.AnnounceDestroyDeployable(boomer, Some(500 milliseconds)) - case Some(_) | None => ; - } - FindEquipmentToDelete(item_guid, trigger) - trigger.Companion = None - case _ => ; - } - progressBarUpdate.cancel - progressBarValue = None - - case msg@EmoteMsg(avatar_guid, emote) => - log.info("Emote: " + msg) - sendResponse(EmoteMsg(avatar_guid, emote)) - - case msg@DropItemMessage(item_guid) => - log.info(s"DropItem: $msg") - ValidObject(item_guid) match { - case Some(anItem : Equipment) => - player.FreeHand.Equipment match { - case Some(item) => - if(item.GUID == item_guid) { - CancelZoningProcessWithDescriptiveReason("cancel_use") - continent.GUID(player.VehicleSeated) match { - case Some(_) => - RemoveOldEquipmentFromInventory(player, taskResolver)(item) - case None => - DropEquipmentFromInventory(player)(item) + //base turrets + continent.Map.TurretToWeapon + .map { case ((turret_guid, _)) => continent.GUID(turret_guid) } + .collect { + case Some(turret: FacilityTurret) => + val pguid = turret.GUID + //attached weapon + if (!turret.isUpgrading) { + turret.ControlledWeapon(wepNumber = 1) match { + case Some(obj: Tool) => + val objDef = obj.Definition + sendResponse( + ObjectCreateMessage( + objDef.ObjectId, + obj.GUID, + ObjectCreateMessageParent(pguid, 1), + objDef.Packet.ConstructorData(obj).get + ) + ) + case _ => ; } } - case None => - log.warn(s"DropItem: ${player.Name} wanted to drop a $anItem, but it wasn't at hand") - } - case Some(obj) => //TODO LLU - log.warn(s"DropItem: ${player.Name} wanted to drop a $obj, but that isn't possible") - case None => - sendResponse(ObjectDeleteMessage(item_guid, 0)) //this is fine; item doesn't exist to the server anyway - log.warn(s"DropItem: ${player.Name} wanted to drop an item ($item_guid), but it was nowhere to be found") - } - - case msg@PickupItemMessage(item_guid, player_guid, unk1, unk2) => - log.info(s"PickupItem: $msg") - ValidObject(item_guid) match { - case Some(item : Equipment) => - player.Fit(item) match { - case Some(_) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - PickUpEquipmentFromGround(player)(item) - case None => //skip - sendResponse(ActionResultMessage.Fail(16)) //error code? - } - case _ => - log.warn(s"PickupItem: ${player.Name} requested an item that doesn't exist in this zone; assume client-side garbage data") - sendResponse(ObjectDeleteMessage(item_guid, 0)) - } - - case msg@ReloadMessage(item_guid, ammo_clip, unk1) => - log.info("Reload: " + msg) - FindContainedWeapon match { - case (Some(obj), Some(tool : Tool)) => - val currentMagazine : Int = tool.Magazine - val magazineSize : Int = tool.MaxMagazine - val reloadValue : Int = magazineSize - currentMagazine - if(magazineSize > 0 && reloadValue > 0) { - FindEquipmentStock(obj, FindAmmoBoxThatUses(tool.AmmoType), reloadValue, CountAmmunition).reverse match { - case Nil => - log.warn(s"ReloadMessage: no ammunition could be found for $item_guid") - case x :: xs => - val (deleteFunc, modifyFunc) : (Equipment=>Future[Any], (AmmoBox, Int) => Unit) = obj match { - case (veh : Vehicle) => - (RemoveOldEquipmentFromInventory(veh, taskResolver), ModifyAmmunitionInVehicle(veh)) - case o : PlanetSideServerObject with Container => - (RemoveOldEquipmentFromInventory(o, taskResolver), ModifyAmmunition(o)) - case _ => - throw new Exception("ReloadMessage: should be a server object, not a regular game object") - } - xs.foreach { item => deleteFunc(item.obj) } - val box = x.obj.asInstanceOf[AmmoBox] - val tailReloadValue : Int = if(xs.isEmpty) { - 0 - } - else { - xs.map(_.obj.asInstanceOf[AmmoBox].Capacity).sum - } - val sumReloadValue : Int = box.Capacity + tailReloadValue - val actualReloadValue = (if(sumReloadValue <= reloadValue) { - deleteFunc(box) - sumReloadValue - } - else { - modifyFunc(box, reloadValue - tailReloadValue) - reloadValue - }) + currentMagazine - log.info(s"ReloadMessage: success, $tool <- $actualReloadValue ${tool.AmmoType}") - tool.Magazine = actualReloadValue - sendResponse(ReloadMessage(item_guid, actualReloadValue, unk1)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.Reload(player.GUID, item_guid)) - } - } - else { - log.warn(s"ReloadMessage: item $item_guid can not reload (full=$magazineSize, want=$reloadValue)") - } - case (_, Some(_)) => - log.error(s"ReloadMessage: the object that was found for $item_guid was not a Tool") - case (_, None) => - log.error(s"ReloadMessage: can not find $item_guid") - } - - case msg@ObjectHeldMessage(avatar_guid, held_holsters, unk1) => - log.info(s"ObjectHeld: $msg") - val before = player.DrawnSlot - if(before != held_holsters) { - if(player.ExoSuit == ExoSuitType.MAX && held_holsters != 0) { - log.info(s"ObjectHeld: ${player.Name} is denied changing hands to $held_holsters as a MAX") - player.DrawnSlot = 0 - sendResponse(ObjectHeldMessage(avatar_guid, 0, true)) - } - else if((player.DrawnSlot = held_holsters) != before) { - continent.AvatarEvents ! AvatarServiceMessage(player.Continent, AvatarAction.ObjectHeld(player.GUID, player.LastDrawnSlot)) - - // Ignore non-equipment holsters - //todo: check current suit holster slots? - if(held_holsters >= 0 && held_holsters < 5) { - player.Holsters()(held_holsters).Equipment match { - case Some(unholsteredItem : Equipment) => - if(unholsteredItem.Definition == GlobalDefinitions.remote_electronics_kit) { - // Player has unholstered a REK - we need to set an atttribute on the REK itself to change the beam/icon colour to the correct one for the player's hack level - continent.AvatarEvents ! AvatarServiceMessage(player.Continent, AvatarAction.PlanetsideAttribute(unholsteredItem.GUID, 116, Player.GetHackLevel(player))) - } - case None => ; - } - } - - // Stop using proximity terminals if player unholsters a weapon (which should re-trigger the proximity effect and re-holster the weapon) - if(player.VisibleSlots.contains(held_holsters)) { - continent.GUID(usingMedicalTerminal) match { - case Some(term : Terminal with ProximityUnit) => - StopUsingProximityUnit(term) - case _ => ; - } - } - } - } - - case msg@AvatarJumpMessage(state) => - //log.info("AvatarJump: " + msg) - player.Actor ! Player.StaminaChanged(-10) - player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 5) - - case msg@ZipLineMessage(player_guid, forwards, action, path_id, pos) => - log.info("ZipLineMessage: " + msg) - val (isTeleporter : Boolean, path : Option[ZipLinePath]) = continent.ZipLinePaths.find(x => x.PathId == path_id) match { - case Some(x) => (x.IsTeleporter, Some(x)) - case _ => - log.warn(s"Couldn't find zipline path ${path_id} in zone ${continent.Number} / ${continent.Id}") - (false, None) - } - if(isTeleporter) { - CancelZoningProcessWithDescriptiveReason("cancel") - val endPoint = path.get.ZipLinePoints.last - sendResponse(ZipLineMessage(PlanetSideGUID(0), forwards, 0, path_id, pos)) // todo: send to zone to show teleport animation to all clients - sendResponse(PlayerStateShiftMessage(ShiftState(0, endPoint, player.Orientation.z, None))) - } - else { - CancelZoningProcessWithDescriptiveReason("cancel_motion") - action match { - case 0 => - // Travel along the zipline in the direction specified - sendResponse(ZipLineMessage(player_guid, forwards, action, path_id, pos)) - case 1 => - //disembark from zipline at destination ! - sendResponse(ZipLineMessage(player_guid, forwards, action, 0, pos)) - case 2 => - //get off by force - sendResponse(ZipLineMessage(player_guid, forwards, action, 0, pos)) - case _ => - log.warn(s"Tried to do something with a zipline but can't handle it. forwards: ${forwards} action: ${action} path_id: ${path_id} zone: ${continent.Number} / ${continent.Id}") - } - } - - case msg@RequestDestroyMessage(object_guid) => - // TODO: Make sure this is the correct response for all cases - ValidObject(object_guid) match { - case Some(vehicle : Vehicle) => - /* line 1a: player is admin (and overrules other access requirements) */ - /* line 1b: vehicle and player (as the owner) acknowledge each other */ - /* line 1c: vehicle is the same faction as player and either the owner is absent or the vehicle is destroyed */ - /* line 2: vehicle is not mounted in anything or, if it is, its seats are empty */ - if( - (admin || - (player.VehicleOwned.contains(object_guid) && vehicle.Owner.contains(player.GUID)) || - (player.Faction == vehicle.Faction && ((vehicle.Owner.isEmpty || continent.GUID(vehicle.Owner.get).isEmpty) || vehicle.Destroyed)) - ) && - (vehicle.MountedIn.isEmpty || !vehicle.Seats.values.exists(_.isOccupied)) - ) { - vehicle.Actor ! Vehicle.Deconstruct() - log.info(s"RequestDestroy: vehicle $vehicle") - } - else { - log.info(s"RequestDestroy: must own vehicle in order to deconstruct it") - } - - case Some(obj : BoomerTrigger) => - if(FindEquipmentToDelete(object_guid, obj)) { - continent.GUID(obj.Companion) match { - case Some(boomer : BoomerDeployable) => - boomer.Trigger = None - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(boomer, continent, Some(0 seconds))) - //continent.Deployables ! Zone.Deployable.Dismiss(boomer) - case Some(thing) => - log.info(s"RequestDestroy: BoomerTrigger object connected to wrong object - $thing") - case None => ; - } - } - - case Some(obj : Equipment) => - FindEquipmentToDelete(object_guid, obj) - - case Some(_ : LocalProjectile) => - FindProjectileEntry(object_guid) match { - case Some(projectile) => - if(projectile.isResolved) { - log.warn(s"RequestDestroy: tried to clean up projectile ${object_guid.guid} but it was already resolved") - } - else { - projectile.Miss() - if(projectile.profile.ExistsOnRemoteClients && projectile.HasGUID) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ProjectileExplodes(player.GUID, projectile.GUID, projectile)) - taskResolver ! UnregisterProjectile(projectile) - } - } - case None => - log.warn(s"RequestDestroy: projectile ${object_guid.guid} has never been fired") - } - - case Some(obj : BoomerDeployable) => - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent, Some(0 seconds))) - obj.Trigger match { - case Some(trigger) => - obj.Trigger = None - val guid = trigger.GUID - Zone.EquipmentIs.Where(trigger, guid, continent) match { - case Some(Zone.EquipmentIs.InContainer(container, index)) => - container.Slot(index).Equipment = None - case Some(Zone.EquipmentIs.OnGround()) => - continent.Ground ! Zone.Ground.RemoveItem(guid) - case Some(Zone.EquipmentIs.Orphaned()) => - log.warn(s"RequestDestroy: boomer_trigger@$guid has been found but it seems to be orphaned") - case _ => ; - } - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(PlanetSideGUID(0), guid)) - GUIDTask.UnregisterObjectTask(trigger)(continent.GUID) - - case None => ; - } - - case Some(obj : TelepadDeployable) => - continent.LocalEvents ! LocalServiceMessage.Telepads(SupportActor.ClearSpecific(List(obj), continent)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(obj), continent)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent, Some(0 seconds))) - - case Some(obj : PlanetSideGameObject with Deployable) => - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(obj), continent)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent, Some(0 seconds))) - - case Some(thing) => - log.warn(s"RequestDestroy: not allowed to delete object $thing") - - case None => - log.warn(s"RequestDestroy: object ${object_guid.guid} not found") - } - - case msg@ObjectDeleteMessage(object_guid, unk1) => - sendResponse(ObjectDeleteMessage(object_guid, 0)) - log.info("ObjectDelete: " + msg) - - case msg@MoveItemMessage(item_guid, source_guid, destination_guid, dest, _) => - log.info(s"MoveItem: $msg") - (continent.GUID(source_guid), continent.GUID(destination_guid), ValidObject(item_guid)) match { - case (Some(source : PlanetSideServerObject with Container), Some(destination : PlanetSideServerObject with Container), Some(item : Equipment)) => - source.Actor ! Containable.MoveItem(destination, item, dest) - case (None, _, _) => - log.error(s"MoveItem: wanted to move $item_guid from $source_guid, but could not find source object") - case (_, None, _) => - log.error(s"MoveItem: wanted to move $item_guid to $destination_guid, but could not find destination object") - case (_, _, None) => - log.error(s"MoveItem: wanted to move $item_guid, but could not find it") - case _ => - log.error(s"MoveItem: wanted to move $item_guid from $source_guid to $destination_guid, but multiple problems were encountered") - } - - case msg@LootItemMessage(item_guid, target_guid) => - log.info(s"LootItem: $msg") - (ValidObject(item_guid), continent.GUID(target_guid)) match { - case (Some(item : Equipment), Some(destination : PlanetSideServerObject with Container)) => - //figure out the source - ( { - val findFunc : PlanetSideServerObject with Container => Option[(PlanetSideServerObject with Container, Option[Int])] = FindInLocalContainer(item_guid) - findFunc(player.Locker) - .orElse(findFunc(player)) - .orElse(accessedContainer match { - case Some(parent : PlanetSideServerObject) => - findFunc(parent) - case _ => - None - } - ) - }, destination.Fit(item)) match { - case (Some((source, Some(_))), Some(dest)) => - source.Actor ! Containable.MoveItem(destination, item, dest) - case (None, _) => - log.error(s"LootItem: can not find where $item is put currently") - case (_, None) => - log.error(s"LootItem: can not find somwhere to put $item in $destination") - case _ => - log.error(s"LootItem: wanted to move $item_guid to $target_guid, but multiple problems were encountered") - } - case (Some(obj), _) => - log.warn(s"LootItem: item $obj is (probably) not lootable") - case (None, _) => - log.warn(s"LootItem: can not find $item_guid") - case (_, None) => - log.warn(s"LootItem: can not find where to put $item_guid") - } - - case msg @ AvatarImplantMessage(player_guid, action, slot, status) => - log.info("AvatarImplantMessage: " + msg) - if(action == ImplantAction.Activation) { - CancelZoningProcessWithDescriptiveReason("cancel_implant") - player.Actor ! Player.ImplantActivation(slot, status) - } - - case msg @ UseItemMessage(avatar_guid, item_used_guid, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType) => - //log.info("UseItem: " + msg) - // TODO: Not all fields in the response are identical to source in real packet logs (but seems to be ok) - // TODO: Not all incoming UseItemMessage's respond with another UseItemMessage (i.e. doors only send out GenericObjectStateMsg) - val equipment = player.Slot(player.DrawnSlot).Equipment match { - case out@Some(item) if item.GUID == item_used_guid => out - case _ => None - } - ValidObject(object_guid) match { - case Some(door : Door) => - if(player.Faction == door.Faction || (continent.Map.DoorToLock.get(object_guid.guid) match { - case Some(lock_guid) => - val lock = continent.GUID(lock_guid).get.asInstanceOf[IFFLock] - val owner = lock.Owner.asInstanceOf[Building] - val playerIsOnInside = Vector3.ScalarProjection(lock.Outwards, player.Position - door.Position) < 0f - - // If an IFF lock exists and the IFF lock faction doesn't match the current player and one of the following conditions are met open the door: - // The player is on the inside of the door, determined by the lock orientation - // The lock is hacked - // A base is hacked - // A base is neutral - // todo: A base is out of power (generator down) - - playerIsOnInside || lock.HackedBy.isDefined || owner.CaptureTerminalIsHacked || lock.Faction == PlanetSideEmpire.NEUTRAL - case None => !door.isOpen // If there's no linked IFF lock just open the door if it's closed. - })) { - door.Actor ! Door.Use(player, msg) - } - else if(door.isOpen) { - //the door is open globally ... except on our screen - sendResponse(GenericObjectStateMsg(object_guid, 16)) - } - - case Some(resourceSilo : ResourceSilo) => - resourceSilo.Actor ! ResourceSilo.Use(player, msg) - - case Some(panel : IFFLock) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - panel.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : Player) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - if(obj.isBackpack) { - if(equipment.isEmpty) { - log.info(s"UseItem: ${player.Name} looting the corpse of $obj") - sendResponse(UseItemMessage(avatar_guid, item_used_guid, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType)) - accessedContainer = Some(obj) - } - } - else if(!unk3 && player.isAlive) { //potential kit use - ValidObject(item_used_guid) match { - case Some(kit : Kit) => - val kid = kit.Definition.ObjectId - val time = System.currentTimeMillis - val lastUse = player.GetLastUsedTime(kid) - val delay = delayedGratificationEntries.getOrElse(kid, 0L) - if((time - lastUse) < delay) { - val displayedDelay = math.min(5, ((delay.toDouble / 1000) - math.ceil((time - lastUse).toDouble) / 1000) + 1).toInt - sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", s"@TimeUntilNextUse^$displayedDelay~", None)) - } - else { - val indexOpt = player.Find(kit) - val kitIsUsed = indexOpt match { - case Some(index) => - if(kit.Definition == GlobalDefinitions.medkit) { - if(player.Health == player.MaxHealth) { - sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "@HealComplete", None)) - false - } - else { - player.History(HealFromKit(PlayerSource(player), 25, kit.Definition)) - player.Health = player.Health + 25 - sendResponse(PlanetsideAttributeMessage(avatar_guid, 0, player.Health)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(avatar_guid, 0, player.Health)) - true - } - } - else if(kit.Definition == GlobalDefinitions.super_medkit) { - if(player.Health == player.MaxHealth) { - sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "@HealComplete", None)) - false - } - else { - player.History(HealFromKit(PlayerSource(player), 100, kit.Definition)) - player.Health = player.Health + 100 - sendResponse(PlanetsideAttributeMessage(avatar_guid, 0, player.Health)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(avatar_guid, 0, player.Health)) - true - } - } - else if(kit.Definition == GlobalDefinitions.super_armorkit) { - if(player.Armor == player.MaxArmor) { - sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "Armor at maximum - No repairing required.", None)) - false - } - else { - player.History(RepairFromKit(PlayerSource(player), 200, kit.Definition)) - player.Armor = player.Armor + 200 - sendResponse(PlanetsideAttributeMessage(avatar_guid, 4, player.Armor)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(avatar_guid, 4, player.Armor)) - true - } - } - else if(kit.Definition == GlobalDefinitions.super_staminakit) { - if(player.Stamina == player.MaxStamina) { - sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "Stamina at maximum - No recharge required.", None)) - false - } - else { - player.Actor ! Player.StaminaChanged(100) - sendResponse(PlanetsideAttributeMessage(avatar_guid, 2, player.Stamina)) - true - } - } - else { - log.warn(s"UseItem: $kit behavior not supported") - false - } - - case None => - log.error(s"UseItem: anticipated a $kit, but can't find it") - false - } - if(kitIsUsed) { - //kit was found belonging to player and was used - player.SetLastUsedTime(kid, time) - player.Slot(indexOpt.get).Equipment = None //remove from slot immediately; must exist on client for next packet - sendResponse(UseItemMessage(avatar_guid, item_used_guid, object_guid, 0, unk3, unk4, unk5, unk6, unk7, unk8, itemType)) - sendResponse(ObjectDeleteMessage(kit.GUID, 0)) - taskResolver ! GUIDTask.UnregisterEquipment(kit)(continent.GUID) - } - } - - case Some(item) => - log.warn(s"UseItem: looking for Kit to use, but found $item instead") - case None => - log.warn(s"UseItem: anticipated a Kit $item_used_guid, but can't find it") - } - } - else if(itemType == ObjectClass.avatar && unk3) { - equipment match { - case Some(tool : Tool) if tool.Definition == GlobalDefinitions.bank => - obj.Actor ! CommonMessages.Use(player, equipment) - - case Some(tool : Tool) if tool.Definition == GlobalDefinitions.medicalapplicator => - obj.Actor ! CommonMessages.Use(player, equipment) - case _ => ; - } - } - - case Some(locker : Locker) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - locker.Actor ! CommonMessages.Use(player, Some(item)) - case None if locker.Faction == player.Faction || !locker.HackedBy.isEmpty => - log.trace(s"UseItem: ${player.Name} accessing a locker") - CancelZoningProcessWithDescriptiveReason("cancel_use") - val container = player.Locker - accessedContainer = Some(container) - sendResponse(UseItemMessage(avatar_guid, item_used_guid, container.GUID, unk2, unk3, unk4, unk5, unk6, unk7, unk8, 456)) - case _ => ; - } - - case Some(gen : Generator) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - gen.Actor ! CommonMessages.Use(player, Some(item)) - case None => ; - } - - case Some(mech : ImplantTerminalMech) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - mech.Actor ! CommonMessages.Use(player, Some(item)) - case None => ; - } - - case Some(captureTerminal : CaptureTerminal) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - captureTerminal.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : FacilityTurret) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) //try generic - obj.Actor ! CommonMessages.Use(player, Some((item, unk2.toInt))) //try upgrade path - case _ => ; - } - - case Some(obj : Vehicle) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - - case None if player.Faction == obj.Faction => - //access to trunk - if(obj.AccessingTrunk.isEmpty && - (!obj.PermissionGroup(AccessPermissionGroup.Trunk.id).contains(VehicleLockState.Locked) || obj.Owner.contains(player.GUID))) { - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.AccessingTrunk = player.GUID - accessedContainer = Some(obj) - AccessContents(obj) - sendResponse(UseItemMessage(avatar_guid, item_used_guid, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType)) - } - case _ => ; - } - - case Some(terminal : Terminal) => - log.info(s"$msg") - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - terminal.Actor ! CommonMessages.Use(player, Some(item)) - - case None if terminal.Owner == Building.NoBuilding || terminal.Faction == player.Faction || terminal.HackedBy.nonEmpty => - val tdef = terminal.Definition - if(tdef.isInstanceOf[MatrixTerminalDefinition]) { - //TODO matrix spawn point; for now, just blindly bind to show work (and hope nothing breaks) - CancelZoningProcessWithDescriptiveReason("cancel_use") - sendResponse(BindPlayerMessage(BindStatus.Bind, "", true, true, SpawnGroup.Sanctuary, 0, 0, terminal.Position)) - } - else if(tdef == GlobalDefinitions.multivehicle_rearm_terminal || tdef == GlobalDefinitions.bfr_rearm_terminal || - tdef == GlobalDefinitions.air_rearm_terminal || tdef == GlobalDefinitions.ground_rearm_terminal) { - FindLocalVehicle match { - case Some(vehicle) => - sendResponse(UseItemMessage(avatar_guid, item_used_guid, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType)) - sendResponse(UseItemMessage(avatar_guid, item_used_guid, vehicle.GUID, unk2, unk3, unk4, unk5, unk6, unk7, unk8, vehicle.Definition.ObjectId)) - case None => - log.error("UseItem: expected seated vehicle, but found none") - } - } - else if(tdef == GlobalDefinitions.teleportpad_terminal) { - //explicit request - CancelZoningProcessWithDescriptiveReason("cancel_use") - terminal.Actor ! Terminal.Request( - player, - ItemTransactionMessage(object_guid, TransactionType.Buy, 0, "router_telepad", 0, PlanetSideGUID(0)) - ) - } - else { - CancelZoningProcessWithDescriptiveReason("cancel_use") - sendResponse(UseItemMessage(avatar_guid, item_used_guid, object_guid, unk2, unk3, unk4, unk5, unk6, unk7, unk8, itemType)) - } - - case _ => ; - } - - case Some(obj : SpawnTube) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - case None if player.Faction == obj.Faction => - //deconstruction - CancelZoningProcessWithDescriptiveReason("cancel_use") - PlayerActionsToCancel() - CancelAllProximityUnits() - GoToDeploymentMap() - case _ => ; - } - - case Some(obj : SensorDeployable) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : TurretDeployable) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : TrapDeployable) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : ShieldGeneratorDeployable) => - equipment match { - case Some(item) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - obj.Actor ! CommonMessages.Use(player, Some(item)) - case _ => ; - } - - case Some(obj : TelepadDeployable) => - if(equipment.isEmpty) { - continent.GUID(obj.Router) match { - case Some(vehicle : Vehicle) => - vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => - CancelZoningProcessWithDescriptiveReason("cancel") - UseRouterTelepadSystem(router = vehicle, internalTelepad = util, remoteTelepad = obj, src = obj, dest = util) - case _ => - log.error(s"telepad@${object_guid.guid} is not linked to a router - ${vehicle.Definition.Name}, ${obj.Router}") - } - case Some(o) => - log.error(s"telepad@${object_guid.guid} is linked to wrong kind of object - ${o.Definition.Name}, ${obj.Router}") - case None => ; - } - } - - case Some(obj : Utility.InternalTelepad) => - continent.GUID(obj.Telepad) match { - case Some(pad : TelepadDeployable) => - CancelZoningProcessWithDescriptiveReason("cancel") - UseRouterTelepadSystem(router = obj.Owner.asInstanceOf[Vehicle], internalTelepad = obj, remoteTelepad = pad, src = obj, dest = pad) - case Some(o) => - log.error(s"internal telepad@${object_guid.guid} is not linked to a remote telepad - ${o.Definition.Name}@${o.GUID.guid}") - case None => ; - } - - case Some(obj) => - CancelZoningProcessWithDescriptiveReason("cancel_use") - log.warn(s"UseItem: don't know how to handle $obj") - - case None => - log.error(s"UseItem: can not find object $object_guid") - } - - case msg @ ProximityTerminalUseMessage(player_guid, object_guid, _) => - log.trace(s"ProximityTerminalUse: $msg") - continent.GUID(object_guid) match { - case Some(obj : Terminal with ProximityUnit) => - HandleProximityTerminalUse(obj) - case Some(obj) => ; - log.warn(s"ProximityTerminalUse: object does not have proximity effects - $obj") - case None => - log.warn(s"ProximityTerminalUse: no object with guid $object_guid found") - } - - case msg @ UnuseItemMessage(player_guid, object_guid) => - log.info(s"UnuseItem: $msg") - //TODO check for existing accessedContainer value? - ValidObject(object_guid) match { - case Some(obj : Vehicle) => - if(obj.AccessingTrunk.contains(player.GUID)) { - obj.AccessingTrunk = None - UnAccessContents(obj) - } - case Some(obj : Player) => - TryDisposeOfLootedCorpse(obj) - - case _ =>; - } - accessedContainer = None - - case msg @ DeployObjectMessage(guid, unk1, pos, orient, unk2) => - log.info(s"DeployObject: $msg") - //the hand with the construction item is no longer drawn - //TODO consider player.Slot(player.LastDrawnSlot) - (player.Holsters.find(slot => slot.Equipment.nonEmpty && slot.Equipment.get.GUID == guid) match { - case Some(slot) => - slot.Equipment - case None => - None - }) match { - case Some(obj : ConstructionItem) => - val ammoType = obj.AmmoType match { - case DeployedItem.portable_manned_turret => - GlobalDefinitions.PortableMannedTurret(player.Faction).Item //faction-specific turret - case turret => - turret - } - log.info(s"DeployObject: Constructing a ${ammoType}") - CancelZoningProcessWithDescriptiveReason("cancel_use") - val dObj : PlanetSideGameObject with Deployable = Deployables.Make(ammoType)() - dObj.Position = pos - dObj.Orientation = orient - dObj.Faction = player.Faction - dObj.AssignOwnership(player) - val tasking : TaskResolver.GiveTask = dObj match { - case turret : TurretDeployable => - GUIDTask.RegisterDeployableTurret(turret)(continent.GUID) - case _ => - GUIDTask.RegisterObjectTask(dObj)(continent.GUID) - } - taskResolver ! CallBackForTask(tasking, continent.Deployables, Zone.Deployable.Build(dObj, obj)) - - case Some(obj) => - log.warn(s"DeployObject: $obj is something?") - case None => - log.warn("DeployObject: nothing?") - } - - case msg @ GenericObjectStateMsg(object_guid, unk1) => - log.info("GenericObjectState: " + msg) - - case msg @ GenericActionMessage(action) => - log.info(s"GenericAction: $msg") - if(player == null) { - if(action == 29) { - log.info("AFK state reported during login") - } - } - else { - val (toolOpt, definition) = player.Slot(0).Equipment match { - case Some(tool : Tool) => - (Some(tool), tool.Definition) - case _ => - (None, GlobalDefinitions.bullet_9mm) - } - if(action == 29) { - log.info(s"${player.Name} is AFK") - player.AwayFromKeyboard = true - } - else if(action == 30) { - log.info(s"${player.Name} is back") - player.AwayFromKeyboard = false - } - if(action == 15) { //max deployment - log.info(s"GenericObject: $player is anchored") - player.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(player.GUID, 19, 1)) - definition match { - case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.trhev_burster => - val tool = toolOpt.get - tool.ToFireMode = 1 - sendResponse(ChangeFireModeMessage(tool.GUID, 1)) - case GlobalDefinitions.trhev_pounder => - val tool = toolOpt.get - val convertFireModeIndex = if(tool.FireModeIndex == 0) { 1 } else { 4 } - tool.ToFireMode = convertFireModeIndex - sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) - case _ => - log.warn(s"GenericObject: $player is MAX with an unexpected weapon - ${definition.Name}") - } - } - else if(action == 16) { //max deployment - log.info(s"GenericObject: $player has released the anchors") - player.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(player.GUID, 19, 0)) - definition match { - case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.trhev_burster => - val tool = toolOpt.get - tool.ToFireMode = 0 - sendResponse(ChangeFireModeMessage(tool.GUID, 0)) - case GlobalDefinitions.trhev_pounder => - val tool = toolOpt.get - val convertFireModeIndex = if(tool.FireModeIndex == 1) { 0 } else { 3 } - tool.ToFireMode = convertFireModeIndex - sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) - case _ => - log.warn(s"GenericObject: $player is MAX with an unexpected weapon - ${definition.Name}") - } - } - else if (action == 20) { - if(player.ExoSuit == ExoSuitType.MAX) { - ToggleMaxSpecialState(enable = true) - } else { - log.warn("Got GenericActionMessage 20 but can't handle it") - } - } - else if (action == 21) { - if(player.ExoSuit == ExoSuitType.MAX) { - player.Faction match { - case PlanetSideEmpire.NC => - ToggleMaxSpecialState(enable = false) - case _ => log.warn(s"Player ${player.Name} tried to cancel an uncancellable MAX special ability") - } - } else { - log.warn("Got GenericActionMessage 21 but can't handle it") - } - } - else if(action == 36) { //Looking For Squad ON - if(squadUI.nonEmpty) { - if(!lfsm && squadUI(player.CharId).index == 0) { - lfsm = true - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(player.GUID, 53, 1)) - } - } - else if(!avatar.LFS) { - avatar.LFS = true - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(player.GUID, 53, 1)) - } - } - else if(action == 37) { //Looking For Squad OFF - if(squadUI.nonEmpty) { - if(lfsm && squadUI(player.CharId).index == 0) { - lfsm = false - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(player.GUID, 53, 0)) - } - } - else if(avatar.LFS) { - avatar.LFS = false - continent.AvatarEvents ! AvatarServiceMessage(s"${player.Faction}", AvatarAction.PlanetsideAttribute(player.GUID, 53, 0)) - } - } - } - - case msg @ ItemTransactionMessage(terminal_guid, transaction_type, _, _, _, _) => - log.info("ItemTransaction: " + msg) - continent.GUID(terminal_guid) match { - case Some(term : Terminal) => - log.info(s"ItemTransaction: ${term.Definition.Name} found") - if(lastTerminalOrderFulfillment) { - lastTerminalOrderFulfillment = false - CancelZoningProcessWithDescriptiveReason("cancel_use") - term.Actor ! Terminal.Request(player, msg) - } - case Some(obj : PlanetSideGameObject) => - log.error(s"ItemTransaction: $obj is not a terminal") - case _ => - log.error(s"ItemTransaction: $terminal_guid does not exist") - } - - case msg @ FavoritesRequest(player_guid, list, action, line, label) => - log.info(s"FavoritesRequest: $msg") - if(player.GUID == player_guid) { - val lineno = if(list == LoadoutType.Vehicle) { line + 10 } else { line } - val name = label.getOrElse(s"missing_loadout_${line+1}") - action match { - case FavoritesAction.Save => - (if(list == LoadoutType.Infantry) { - Some(player) - } - else if(list == LoadoutType.Vehicle) { - player.VehicleSeated match { - case Some(vehicle_guid) => - continent.GUID(vehicle_guid) - case None => - None - } - } - else { - None - }) match { - case Some(owner : Player) => //InfantryLoadout - CancelZoningProcessWithDescriptiveReason("cancel_use") - avatar.EquipmentLoadouts.SaveLoadout(owner, name, lineno) - SaveLoadoutToDB(owner, name, lineno) - import InfantryLoadout._ -// println(player_guid, line, name, DetermineSubtypeB(player.ExoSuit, DetermineSubtype(player)), player.ExoSuit, DetermineSubtype(player)) - sendResponse(FavoritesMessage(list, player_guid, line, name, DetermineSubtypeB(player.ExoSuit, DetermineSubtype(player)))) - case Some(owner : Vehicle) => //VehicleLoadout - avatar.EquipmentLoadouts.SaveLoadout(owner, name, lineno) - sendResponse(FavoritesMessage(list, player_guid, line, name)) - case Some(_) | None => - log.error("FavoritesRequest: unexpected owner for favorites") - } - - case FavoritesAction.Delete => - CancelZoningProcessWithDescriptiveReason("cancel_use") - avatar.EquipmentLoadouts.DeleteLoadout(lineno) - sendResponse(FavoritesMessage(list, player_guid, line, "")) - - case FavoritesAction.Unknown => - log.warn("FavoritesRequest: unknown favorites action") - } - } - - case msg @ WeaponDelayFireMessage(seq_time, weapon_guid) => - log.info("WeaponDelayFire: " + msg) - - case msg @ WeaponDryFireMessage(weapon_guid) => - log.info("WeaponDryFireMessage: "+msg) - FindWeapon match { - case Some(tool : Tool) => - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.WeaponDryFire(player.GUID, weapon_guid)) - case _ => ; - } - - case msg @ WeaponFireMessage(seq_time, weapon_guid, projectile_guid, shot_origin, unk1, unk2, unk3, unk4, unk5, unk6, unk7) => - log.info(s"WeaponFire: $msg") - CancelZoningProcessWithDescriptiveReason("cancel_fire") - if(player.isShielded) { - // Cancel NC MAX shield if it's active - ToggleMaxSpecialState(enable = false) - } - FindContainedWeapon match { - case (Some(obj), Some(tool : Tool)) => - if(tool.Magazine <= 0) { //safety: enforce ammunition depletion - prefire = None - EmptyMagazine(weapon_guid, tool) - } - else if(!player.isAlive) { //proper internal accounting, but no projectile - prefire = shooting.orElse(Some(weapon_guid)) - tool.Discharge() - projectiles(projectile_guid.guid - Projectile.BaseUID) = None - shotsWhileDead += 1 - } - else { //shooting - if (tool.FireModeIndex == 1 && (tool.Definition.Name == "anniversary_guna" || tool.Definition.Name == "anniversary_gun" || tool.Definition.Name == "anniversary_gunb")) { - player.Actor ! Player.StaminaChanged(-player.Stamina) - player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 3) - } - - prefire = shooting.orElse(Some(weapon_guid)) - tool.Discharge() //always - val projectileIndex = projectile_guid.guid - Projectile.BaseUID - val projectilePlace = projectiles(projectileIndex) - if(projectilePlace match { - case Some(projectile) => !projectile.isResolved - case None => false - }) { - log.trace(s"WeaponFireMessage: overwriting unresolved projectile ${projectile_guid.guid}") - } - val (angle, attribution, acceptableDistanceToOwner) = obj match { - case p : Player => - (SimpleWorldEntity.validateOrientationEntry(p.Orientation + Vector3.z(p.FacingYawUpper)), tool.Definition.ObjectId, 10f + (if(p.Velocity.nonEmpty) { 5f } else { 0f })) - case v : Vehicle if v.Definition.CanFly => - (tool.Orientation, obj.Definition.ObjectId, 1000f) //TODO this is too simplistic to find proper angle - case _ : Vehicle => - (tool.Orientation, obj.Definition.ObjectId, 225f) //TODO this is too simplistic to find proper angle - case _ => - (obj.Orientation, obj.Definition.ObjectId, 300f) - } - val distanceToOwner = Vector3.DistanceSquared(shot_origin, player.Position) - if(distanceToOwner <= acceptableDistanceToOwner) { - val projectile_info = tool.Projectile - val projectile = Projectile(projectile_info, tool.Definition, tool.FireMode, player, attribution, shot_origin, angle) - projectiles(projectileIndex) = Some(projectile) - if(projectile_info.ExistsOnRemoteClients) { - log.trace(s"WeaponFireMessage: ${projectile_info.Name} is a remote projectile") - taskResolver ! (if(projectile.HasGUID) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ProjectileExplodes(player.GUID, projectile.GUID, projectile)) - ReregisterProjectile(projectile) - } - else { - RegisterProjectile(projectile) - }) - } - projectilesToCleanUp(projectileIndex) = false - - obj match { - case turret : FacilityTurret if turret.Definition == GlobalDefinitions.vanu_sentry_turret => - turret.Actor ! FacilityTurret.WeaponDischarged() - case _ => ; - } - } - else { - log.warn(s"WeaponFireMessage: ${player.Name}'s ${tool.Definition.Name} projectile is too far from owner position at time of discharge ($distanceToOwner > $acceptableDistanceToOwner); suspect") - } - } - case _ => ; - } - - case msg @ WeaponLazeTargetPositionMessage(weapon, pos1, pos2) => - log.info("Lazing position: " + pos2.toString) - - case msg @ ObjectDetectedMessage(guid1, guid2, unk, targets) => - //log.info(s"Detection: $msg") - FindWeapon match { - case Some(weapon) if weapon.Projectile.AutoLock => - //projectile with auto-lock instigates a warning on the target - val detectedTargets = FindDetectedProjectileTargets(targets) - if(detectedTargets.nonEmpty) { - val mode = 7 + (weapon.Projectile == GlobalDefinitions.wasp_rocket_projectile) - detectedTargets.foreach { target => - continent.AvatarEvents ! AvatarServiceMessage(target, AvatarAction.ProjectileAutoLockAwareness(mode)) - } - } - case _ => ; - } - - case msg @ HitMessage(seq_time, projectile_guid, unk1, hit_info, unk2, unk3, unk4) => - log.info(s"Hit: $msg") - (hit_info match { - case Some(hitInfo) => - ValidObject(hitInfo.hitobject_guid) match { - case Some(target : PlanetSideGameObject with FactionAffinity with Vitality) => - CheckForHitPositionDiscrepancy(projectile_guid, hitInfo.hit_pos, target) - Some((target, hitInfo.shot_origin, hitInfo.hit_pos)) - case _ => - None - } - case None => ; - None - }) match { - case Some((target, shotOrigin, hitPos)) => - ResolveProjectileEntry(projectile_guid, ProjectileResolution.Hit, target, hitPos) match { - case Some(projectile) => - HandleDealingDamage(target, projectile) - case None => ; - } - case None => ; - } - - case msg @ SplashHitMessage(seq_time, projectile_guid, explosion_pos, direct_victim_uid, unk3, projectile_vel, unk4, targets) => - log.info(s"Splash: $msg") - FindProjectileEntry(projectile_guid) match { - case Some(projectile) => - projectile.Position = explosion_pos - projectile.Velocity = projectile_vel - //direct_victim_uid - ValidObject(direct_victim_uid) match { - case Some(target : PlanetSideGameObject with FactionAffinity with Vitality) => - CheckForHitPositionDiscrepancy(projectile_guid, explosion_pos, target) - ResolveProjectileEntry(projectile, ProjectileResolution.Splash, target, target.Position) match { - case Some(projectile) => - HandleDealingDamage(target, projectile) + //reserved ammunition? + //TODO need to register if it exists + //seat turret occupant + turret.Seats(0).Occupant match { + case Some(tplayer) => + val tdefintion = tplayer.Definition + sendResponse( + ObjectCreateMessage( + tdefintion.ObjectId, + tplayer.GUID, + ObjectCreateMessageParent(pguid, 0), + tdefintion.Packet.ConstructorData(tplayer).get + ) + ) case None => ; } + } + continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.UpdateAmsSpawnPoint(continent)) + upstreamMessageCount = 0 + zoneLoaded = Some(true) + + case msg @ PlayerStateMessageUpstream( + avatar_guid, + pos, + vel, + yaw, + pitch, + yaw_upper, + seq_time, + unk3, + is_crouching, + is_jumping, + jump_thrust, + is_cloaking, + unk5, + unk6 + ) => + //log.info(s"$msg") + persist() + turnCounterFunc(avatar_guid) + val isMoving = WorldEntity.isMoving(vel) + val isMovingPlus = isMoving || is_jumping || jump_thrust + if (isMovingPlus) { + CancelZoningProcessWithDescriptiveReason("cancel_motion") + } + player.Position = pos + player.Velocity = vel + player.Orientation = Vector3(player.Orientation.x, pitch, yaw) + player.FacingYawUpper = yaw_upper + player.Crouching = is_crouching + player.Jumping = is_jumping + if (is_cloaking && !player.Cloaked) { + CancelZoningProcessWithDescriptiveReason("cancel_cloak") + } + player.Cloaked = player.ExoSuit == ExoSuitType.Infiltration && is_cloaking + CapacitorTick(jump_thrust) + if (isMovingPlus && usingMedicalTerminal.isDefined) { + continent.GUID(usingMedicalTerminal) match { + case Some(term: Terminal with ProximityUnit) => + StopUsingProximityUnit(term) case _ => ; } - //other victims - targets.foreach(elem => { - ValidObject(elem.uid) match { - case Some(target : PlanetSideGameObject with FactionAffinity with Vitality) => + } + accessedContainer match { + case Some(veh: Vehicle) => + if (isMoving || veh.isMoving(1) || Vector3.DistanceSquared(player.Position, veh.TrunkLocation) > 9) { + val guid = player.GUID + sendResponse(UnuseItemMessage(guid, veh.GUID)) + sendResponse(UnuseItemMessage(guid, guid)) + veh.AccessingTrunk = None + UnAccessContents(veh) + accessedContainer = None + } + case Some(container) => //just in case + if (isMovingPlus) { + val guid = player.GUID + // If the container is a corpse and gets removed just as this runs it can cause a client disconnect, so we'll check the container has a GUID first. + if (container.HasGUID) { + sendResponse(UnuseItemMessage(guid, container.GUID)) + } + sendResponse(UnuseItemMessage(guid, guid)) + accessedContainer = None + } + case None => ; + } + val wepInHand: Boolean = player.Slot(player.DrawnSlot).Equipment match { + case Some(item) => item.Definition == GlobalDefinitions.bolt_driver + case None => false + } + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlayerState( + avatar_guid, + player.Position, + player.Velocity, + yaw, + pitch, + yaw_upper, + seq_time, + is_crouching, + is_jumping, + jump_thrust, + is_cloaking, + player.spectator, + wepInHand + ) + ) + updateSquad() + if (player.death_by == -1) { + KickedByAdministration() + } + + case msg @ ChildObjectStateMessage(object_guid, pitch, yaw) => + //log.info(s"$msg") + //the majority of the following check retrieves information to determine if we are in control of the child + FindContainedWeapon match { + case (Some(o), Some(tool)) => + (o match { + case mount: Mountable => mount.PassengerInSeat(player) + case _ => None + }) match { + case None | Some(0) => ; + case Some(_) => + persist() + turnCounterFunc(player.GUID) + } + if (tool.GUID == object_guid) { + //TODO set tool orientation? + player.Orientation = Vector3(0f, pitch, yaw) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.ChildObjectState(player.GUID, object_guid, pitch, yaw) + ) + } else { + log.warn( + s"ChildObjectState: ${player.Name} is using a different controllable agent than #${object_guid.guid}" + ) + } + case (Some(obj), None) => + log.warn( + s"ChildObjectState: ${player.Name} can not find any controllable agent, let alone #${object_guid.guid}" + ) + case (None, _) => ; + //TODO status condition of "playing getting out of vehicle to allow for late packets without warning + //log.warn(s"ChildObjectState: player ${player.Name} not related to anything with a controllable agent") + } + if (player.death_by == -1) { + KickedByAdministration() + } + + case msg @ VehicleStateMessage( + vehicle_guid, + unk1, + pos, + ang, + vel, + flying, + unk6, + unk7, + wheels, + is_decelerating, + is_cloaked + ) => + //log.info(s"$msg") + GetVehicleAndSeat() match { + case (Some(obj), Some(0)) => + //we're driving the vehicle + persist() + turnCounterFunc(player.GUID) + val seat = obj.Seats(0) + player.Position = pos //convenient + if (seat.ControlledWeapon.isEmpty) { + player.Orientation = Vector3.z(ang.z) //convenient + } + obj.Position = pos + obj.Orientation = ang + if (obj.MountedIn.isEmpty) { + if (obj.DeploymentState != DriveState.Deployed) { + obj.Velocity = vel + } else { + obj.Velocity = Some(Vector3.Zero) + } + if (obj.Definition.CanFly) { + obj.Flying = flying.nonEmpty //usually Some(7) + } + obj.Cloaked = obj.Definition.CanCloak && is_cloaked + } else { + obj.Velocity = None + obj.Flying = false + } + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.VehicleState( + player.GUID, + vehicle_guid, + unk1, + obj.Position, + ang, + obj.Velocity, + if (obj.Flying) { + flying + } else { + None + }, + unk6, + unk7, + wheels, + is_decelerating, + obj.Cloaked + ) + ) + updateSquad() + case (None, _) => + //log.error(s"VehicleState: no vehicle $vehicle_guid found in zone") + //TODO placing a "not driving" warning here may trigger as we are disembarking the vehicle + case (_, Some(index)) => + log.error( + s"VehicleState: player should not be dispatching this kind of packet from vehicle#$vehicle_guid when not the driver ($index)" + ) + case _ => ; + } + if (player.death_by == -1) { + KickedByAdministration() + } + + case msg @ VehicleSubStateMessage(vehicle_guid, player_guid, vehicle_pos, vehicle_ang, vel, unk1, unk2) => + //log.info(s"VehicleSubState: $vehicle_guid, ${player.Name}_guid, $vehicle_pos, $vehicle_ang, $vel, $unk1, $unk2") + + case msg @ ProjectileStateMessage(projectile_guid, shot_pos, shot_vel, shot_orient, seq, end, target_guid) => + //log.trace(s"ProjectileState: $msg") + val index = projectile_guid.guid - Projectile.BaseUID + projectiles(index) match { + case Some(projectile) if projectile.HasGUID => + val projectileGlobalUID = projectile.GUID + projectile.Position = shot_pos + projectile.Orientation = shot_orient + projectile.Velocity = shot_vel + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ProjectileState( + player.GUID, + projectileGlobalUID, + shot_pos, + shot_vel, + shot_orient, + seq, + end, + target_guid + ) + ) + case _ if seq == 0 => + /* missing the first packet in the sequence is permissible */ + case _ => + log.warn(s"ProjectileState: constructed projectile ${projectile_guid.guid} can not be found") + } + + case msg @ ReleaseAvatarRequestMessage() => + log.info(s"ReleaseAvatarRequest: ${player.GUID} on ${continent.Id} has released") + reviveTimer.cancel + GoToDeploymentMap() + HandleReleaseAvatar(player, continent) + + case msg @ SpawnRequestMessage(u1, spawn_type, u3, u4, zone_number) => + log.info(s"SpawnRequestMessage: $msg") + if (deadState != DeadState.RespawnTime) { + deadState = DeadState.RespawnTime + cluster ! Zone.Lattice.RequestSpawnPoint(zone_number.toInt, player, spawn_type.id.toInt) + } else { + log.warn("SpawnRequestMessage: request consumed; already respawning ...") + } + + case msg @ SetChatFilterMessage(send_channel, origin, whitelist) => + //log.info("SetChatFilters: " + msg) + + case msg @ ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) => + import ChatMessageType._ + log.info("Chat: " + msg) + + (messagetype, admin, recipient.trim, contents.trim) match { + case (CMT_FLY, true, _, _) => + flying = !flying + sendResponse( + ChatMsg(CMT_FLY, msg.wideContents, recipient, if (flying) "on" else "off", msg.note) + ) + + case (CMT_SPEED, true, _, _) => + speed = + try { + contents.toFloat + } catch { + case _: Throwable => + 1f + } + sendResponse(ChatMsg(messagetype, has_wide_contents, recipient, f"$speed%.3f", note_contents)) + + case (CMT_TOGGLESPECTATORMODE, true, _, _) => + player.spectator = !player.spectator + sendResponse( + ChatMsg( + CMT_TOGGLESPECTATORMODE, + msg.wideContents, + msg.recipient, + if (player.spectator) "on" else "off", + msg.note + ) + ) + + case (CMT_RECALL, _, _, _) => + val sanctuary = Zones.SanctuaryZoneId(player.Faction) + val errorMessage = zoningType match { + case Zoning.Method.Quit => Some("You can't recall to your sanctuary continent while quitting") + case Zoning.Method.InstantAction => + Some("You can't recall to your sanctuary continent while instant actioning") + case Zoning.Method.Recall => Some("You already requested to recall to your sanctuary continent") + case _ if continent.Id == sanctuary => + Some("You can't recall to your sanctuary when you are already in your sanctuary") + case _$msg if !player.isAlive || deadState != DeadState.Alive => + Some(if (player.isAlive) "@norecall_deconstructing" else "@norecall_dead") + case _ if player.VehicleSeated.nonEmpty => Some("@norecall_invehicle") + case _ => None + } + errorMessage match { + case Some(errorMessage) => + sendResponse( + ChatMsg( + CMT_QUIT, + false, + "", + errorMessage, + None + ) + ) + case None => + zoningType = Zoning.Method.Recall + zoningChatMessageType = messagetype + zoningStatus = Zoning.Status.Request + zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) + cluster ! Zoning.Recall.Request(player.Faction, sanctuary) + } + + case (CMT_INSTANTACTION, _, _, _) => + if (zoningType == Zoning.Method.Quit) { + sendResponse( + ChatMsg(CMT_QUIT, false, "", "You can't instant action while quitting.", None) + ) + } else if (zoningType == Zoning.Method.InstantAction) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noinstantaction_instantactionting", None)) + } else if (zoningType == Zoning.Method.Recall) { + sendResponse( + ChatMsg( + CMT_QUIT, + false, + "", + "You won't instant action. You already requested to recall to your sanctuary continent", + None + ) + ) + } else if (!player.isAlive || deadState != DeadState.Alive) { + if (player.isAlive) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noinstantaction_deconstructing", None)) + } else { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noinstantaction_dead", None)) + } + } else if (player.VehicleSeated.nonEmpty) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noinstantaction_invehicle", None)) + } else { + zoningType = Zoning.Method.InstantAction + zoningChatMessageType = messagetype + zoningStatus = Zoning.Status.Request + zoningReset = context.system.scheduler.scheduleOnce(10 seconds, self, ZoningReset()) + cluster ! Zoning.InstantAction.Request(player.Faction) + } + + case (CMT_QUIT, _, _, _) => + if (zoningType == Zoning.Method.Quit) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noquit_quitting", None)) + } else if (!player.isAlive || deadState != DeadState.Alive) { + if (player.isAlive) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noquit_deconstructing", None)) + } else { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noquit_dead", None)) + } + } else if (player.VehicleSeated.nonEmpty) { + sendResponse(ChatMsg(CMT_QUIT, false, "", "@noquit_invehicle", None)) + } else { + //priority to quitting is given to quit over other zoning methods + if (zoningType == Zoning.Method.InstantAction || zoningType == Zoning.Method.Recall) { + CancelZoningProcessWithDescriptiveReason("cancel") + } + zoningType = Zoning.Method.Quit + zoningChatMessageType = messagetype + zoningStatus = Zoning.Status.Request + self ! Zoning.Quit() + } + + case (CMT_SUICIDE, _, _, _) => + if (player.isAlive && deadState != DeadState.Release) { + Suicide(player) + } + + case (CMT_CULLWATERMARK, _, _, contents) => + if (contents.contains("40 80")) connectionState = 100 + else if (contents.contains("120 200")) connectionState = 25 + else connectionState = 50 + + case (CMT_DESTROY, _, _, contents) => + val guid = contents.toInt + continent.GUID(continent.Map.TerminalToSpawnPad.getOrElse(guid, guid)) match { + case Some(pad: VehicleSpawnPad) => + pad.Actor ! VehicleSpawnControl.ProcessControl.Flush + case Some(turret: FacilityTurret) if turret.isUpgrading => + WeaponTurrets.FinishUpgradingMannedTurret(turret, TurretUpgrade.None) + case _ => + self ! PacketCoding.CreateGamePacket(0, RequestDestroyMessage(PlanetSideGUID(guid))) + } + sendResponse(ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents)) + + case (_, _, _, "!loc") => + val loc = + s"zone=${continent.Id} pos=${player.Position.x},${player.Position.y},${player.Position.z}; ori=${player.Orientation.x},${player.Orientation.y},${player.Orientation.z}" + log.info(loc) + sendResponse(ChatMsg(messagetype, has_wide_contents, recipient, loc, note_contents)) + + case (_, _, _, contents) if contents.startsWith("!list") => + val localString: String = contents.drop(contents.indexOf(" ") + 1) + val zone = contents.split(" ").lift(1) match { + case None => + Some(continent) + case Some(id) => + Zones.zones.get(id) + } + + zone match { + case Some(zone) => + sendResponse( + ChatMsg( + CMT_GMOPEN, + has_wide_contents, + "Server", + "\\#8Name (Faction) [ID] at PosX PosY PosZ", + note_contents + ) + ) + + (zone.LivePlayers ++ zone.Corpses) + .filter(_.CharId != player.CharId) + .sortBy(_.Name) + .foreach(player => { + sendResponse( + ChatMsg( + CMT_GMOPEN, + has_wide_contents, + "Server", + s"\\#7${player.Name} (${player.Faction}) [${player.CharId}] at ${player.Position.x.toInt} ${player.Position.y.toInt} ${player.Position.z.toInt}", + note_contents + ) + ) + }) + case None => + sendResponse( + ChatMsg( + CMT_GMOPEN, + has_wide_contents, + "Server", + "Invalid zone ID", + note_contents + ) + ) + } + + case (_, true, _, contents) if contents.startsWith("!kick") => + val input = contents.split("\\s+").drop(1) + if (input.length > 0) { + val numRegex = raw"(\d+)".r + val id = input(0) + val determination: Player => Boolean = id match { + case numRegex(_) => { _.CharId == id.toLong } + case _ => { _.Name.equals(id) } + } + continent.LivePlayers.find(determination).orElse(continent.Corpses.find(determination)) match { + case Some(tplayer) if AdministrativeKick(tplayer) => + if (input.length > 1) { + val time = input(1) + time match { + case numRegex(_) => + accountPersistence ! AccountPersistenceService.Kick(tplayer.Name, Some(time.toLong)) + case _ => + accountPersistence ! AccountPersistenceService.Kick(tplayer.Name, None) + } + } + case None => + sendResponse( + ChatMsg( + CMT_GMOPEN, + has_wide_contents, + "Server", + "Invalid player", + note_contents + ) + ) + } + } + + case (CMT_CAPTUREBASE, true, _, contents) => + val args = contents.split(" ").filter(_ != "") + + val (faction, factionPos) = args.zipWithIndex + .map { case (faction, pos) => (faction.toLowerCase, pos) } + .map { + case ("tr", pos) => Some(PlanetSideEmpire.TR, pos) + case ("nc", pos) => Some(PlanetSideEmpire.NC, pos) + case ("vs", pos) => Some(PlanetSideEmpire.VS, pos) + case ("none", pos) => Some(PlanetSideEmpire.NEUTRAL, pos) + case _ => None + } + .flatten + .headOption match { + case Some((faction, pos)) => (faction, Some(pos)) + case None => (player.Faction, None) + } + + val (buildingsOption, buildingPos) = args.zipWithIndex + .map { + case (_, pos) if (factionPos.isDefined && factionPos.get == pos) => None + case ("all", pos) => + Some( + Some( + continent.Buildings + .filter { + case (_, building) => building.CaptureTerminal.isDefined + } + .values + .toSeq + ), + Some(pos) + ) + case (name, pos) => + continent.Buildings.find { + case (_, building) => name.equalsIgnoreCase(building.Name) && building.CaptureTerminal.isDefined + } match { + case Some((_, building)) => Some(Some(Seq(building)), Some(pos)) + case None => + try { + // check if we have a timer + name.toInt + None + } catch { + case _: Throwable => + Some(None, Some(pos)) + } + } + } + .flatten + .headOption match { + case Some((buildings, pos)) => (buildings, pos) + case None => (None, None) + } + + val (timerOption, timerPos) = args.zipWithIndex + .map { + case (_, pos) + if (factionPos.isDefined && factionPos.get == pos || buildingPos.isDefined && buildingPos.get == pos) => + None + case (timer, pos) => + try { + val t = timer.toInt // TODO what is the timer format supposed to be? + Some(Some(t), Some(pos)) + } catch { + case _: Throwable => + Some(None, Some(pos)) + } + } + .flatten + .headOption match { + case Some((timer, posOption)) => (timer, posOption) + case None => (None, None) + } + + (factionPos, buildingPos, timerPos, buildingsOption, timerOption) match { + case // [[|none []] + (Some(0), None, Some(1), None, Some(_)) | (Some(0), None, None, None, None) | + (None, None, None, None, None) | + // [ [|none [timer]]] + (None | Some(1), Some(0), None, Some(_), None) | (Some(1), Some(0), Some(2), Some(_), Some(_)) | + // [all [|none]] + (Some(1) | None, Some(0), None, Some(_), None) => + val buildings = buildingsOption.getOrElse( + continent.Buildings + .filter { + case (_, building) => + building.PlayersInSOI.find { soiPlayer => + player.CharId == soiPlayer.CharId + }.isDefined + } + .map { case (_, building) => building } + ) + buildings foreach { building => + // TODO implement timer + building.Faction = faction + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.SetEmpire(building.GUID, faction) + ) + } + case (_, Some(0), _, None, _) => + sendResponse( + ChatMsg( + UNK_229, + true, + "", + s"\\#FF4040ERROR - \'${args(0)}\' is not a valid building name.", + None + ) + ) + case (Some(0), _, Some(1), _, None) | (Some(1), Some(0), Some(2), _, None) => + sendResponse( + ChatMsg( + UNK_229, + true, + "", + s"\\#FF4040ERROR - \'${args(timerPos.get)}\' is not a valid timer value.", + None + ) + ) + case _ => + sendResponse( + ChatMsg( + UNK_229, + true, + "", + "usage: /capturebase [[|none []] | [ [|none [timer]]] | [all [|none]]", + None + ) + ) + } + + case (_, _, "tr", _) => + sendResponse( + ZonePopulationUpdateMessage(4, 414, 138, contents.toInt, 138, contents.toInt / 2, 138, 0, 138, 0) + ) + + case (_, _, "nc", _) => + sendResponse( + ZonePopulationUpdateMessage(4, 414, 138, 0, 138, contents.toInt, 138, contents.toInt / 3, 138, 0) + ) + + case (_, _, "vs", _) => + ZonePopulationUpdateMessage(4, 414, 138, contents.toInt * 2, 138, 0, 138, contents.toInt, 138, 0) + + case (_, _, "bo", _) => + sendResponse(ZonePopulationUpdateMessage(4, 414, 138, 0, 138, 0, 138, 0, 138, contents.toInt)) + + case (_, _, _, contents) if contents.startsWith("!ntu") => + continent.Buildings.values.foreach(building => + building.Amenities.foreach(amenity => + amenity.Definition match { + case GlobalDefinitions.resource_silo => + val r = new scala.util.Random + val silo = amenity.asInstanceOf[ResourceSilo] + val ntu: Int = 900 + r.nextInt(100) - silo.ChargeLevel + // val ntu: Int = 0 + r.nextInt(100) - silo.ChargeLevel + silo.Actor ! ResourceSilo.UpdateChargeLevel(ntu) + + case _ => ; + } + ) + ) + + case (CMT_OPEN, _, _, _) if !player.silenced => + chatService ! ChatServiceMessage( + "local", + ChatAction.Local(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + + case (CMT_VOICE, _, _, _) => + chatService ! ChatServiceMessage( + "voice", + ChatAction.Voice(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + case (CMT_TELL, _, _, _) if !player.silenced => + chatService ! ChatServiceMessage("tell", ChatAction.Tell(player.GUID, player.Name, msg)) + + case (CMT_BROADCAST, _, _, _) if !player.silenced => + chatService ! ChatServiceMessage( + "broadcast", + ChatAction.Broadcast(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + + case (CMT_NOTE, _, _, _) => + chatService ! ChatServiceMessage("note", ChatAction.Note(player.GUID, player.Name, msg)) + + case (CMT_SILENCE, true, _, _) => + chatService ! ChatServiceMessage("gm", ChatAction.GM(player.GUID, player.Name, msg)) + + case (CMT_SQUAD, _, _, _) => + if (squadChannel.nonEmpty) { + chatService ! ChatServiceMessage( + squadChannel.get, + ChatAction.Squad(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + } + + case (CMT_PLATOON, _, _, _) if !player.silenced => + chatService ! ChatServiceMessage( + "platoon", + ChatAction.Platoon(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + + case (CMT_COMMAND, true, _, _) => + chatService ! ChatServiceMessage( + "command", + ChatAction.Command(player.GUID, player.Name, continent, player.Position, player.Faction, msg) + ) + + case ( + CMT_WHO | CMT_WHO_CSR | CMT_WHO_CR | CMT_WHO_PLATOONLEADERS | CMT_WHO_SQUADLEADERS | CMT_WHO_TEAMS, + _, + _, + _ + ) => + val poplist = continent.Players + val popTR = poplist.count(_.faction == PlanetSideEmpire.TR) + val popNC = poplist.count(_.faction == PlanetSideEmpire.NC) + val popVS = poplist.count(_.faction == PlanetSideEmpire.VS) + val contName = continent.Map.Name + StartBundlingPackets() + sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "That command doesn't work for now, but : ", None)) + sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "NC online : " + popNC + " on " + contName, None)) + sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "TR online : " + popTR + " on " + contName, None)) + sendResponse(ChatMsg(ChatMessageType.CMT_WHO, true, "", "VS online : " + popVS + " on " + contName, None)) + StopBundlingPackets() + + case _ => + } + + CSRZone.read(traveler, msg) match { + case (true, zone, pos) => + if ( + player.isAlive && zone != player.Continent && (admin || zone == "z8" || zone == "c1" || zone == "c2" || zone == "c3" || zone == "c4" || zone == "c5" || zone == "c6" || + zone == "tzshtr" || zone == "tzcotr" || zone == "tzdrtr" || + zone == "tzshnc" || zone == "tzconc" || zone == "tzdrnc" || + zone == "tzshvs" || zone == "tzcovs" || zone == "tzdrvs") + ) { + deadState = DeadState.Release //cancel movement updates + PlayerActionsToCancel() + continent.GUID(player.VehicleSeated) match { + case Some(vehicle: Vehicle) if vehicle.MountedIn.isEmpty => + vehicle.PassengerInSeat(player) match { + case Some(0) => + vehicle.Position = pos + LoadZonePhysicalSpawnPoint(zone, pos, Vector3.Zero, 0) + case _ => //not seated as the driver, in which case we can't move + deadState = DeadState.Alive + } + case None => + player.Position = pos + //continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, player.GUID)) + LoadZonePhysicalSpawnPoint(zone, pos, Vector3.Zero, 0) + case _ => //seated in something that is not a vehicle or the vehicle is cargo, in which case we can't move + deadState = DeadState.Alive + } + } + case (_, _, _) => ; + } + + CSRWarp.read(traveler, msg) match { + case (true, pos) => + // continent.Id == "c1" || continent.Id == "c2" || continent.Id == "c3" || continent.Id == "c4" || continent.Id == "c5" || continent.Id == "c6" || + if ( + player.isAlive && (admin || continent.Id == "z8" || + continent.Id == "tzshtr" || continent.Id == "tzcotr" || continent.Id == "tzdrtr" || + continent.Id == "tzshnc" || continent.Id == "tzconc" || continent.Id == "tzdrnc" || + continent.Id == "tzshvs" || continent.Id == "tzcovs" || continent.Id == "tzdrvs") + ) { + deadState = DeadState.Release //cancel movement updates + PlayerActionsToCancel() + continent.GUID(player.VehicleSeated) match { + case Some(vehicle: Vehicle) if vehicle.MountedIn.isEmpty => + vehicle.PassengerInSeat(player) match { + case Some(0) => + vehicle.Position = pos + LoadZonePhysicalSpawnPoint(continent.Id, pos, Vector3.z(vehicle.Orientation.z), 0) + case _ => //not seated as the driver, in which case we can't move + deadState = DeadState.Alive + } + case None => + player.Position = pos + sendResponse(PlayerStateShiftMessage(ShiftState(0, pos, player.Orientation.z, None))) + deadState = DeadState.Alive //must be set here + case _ => //seated in something that is not a vehicle or the vehicle is cargo, in which case we can't move + deadState = DeadState.Alive + } + } + case (_, _) => ; + } + + case msg @ VoiceHostRequest(unk, PlanetSideGUID(player_guid), data) => + log.info("Player " + player_guid + " requested in-game voice chat.") + sendResponse(VoiceHostKill()) + + case msg @ VoiceHostInfo(player_guid, data) => + sendResponse(VoiceHostKill()) + + case msg @ ChangeAmmoMessage(item_guid, unk1) => + log.info("ChangeAmmo: " + msg) + FindContainedEquipment match { + case (Some(_), Some(obj: ConstructionItem)) => + PerformConstructionItemAmmoChange(obj, obj.AmmoTypeIndex) + case (Some(obj), Some(tool: Tool)) => + PerformToolAmmoChange(tool, obj) + case (_, Some(obj)) => + log.error(s"ChangeAmmo: the object ${obj.Definition.Name} is not a valid type") + case (_, None) => + log.error(s"ChangeAmmo: can not find $item_guid") + } + + case msg @ ChangeFireModeMessage(item_guid, fire_mode) => + log.info("ChangeFireMode: " + msg) + FindEquipment match { + case Some(obj: PlanetSideGameObject with FireModeSwitch[_]) => + val originalModeIndex = obj.FireModeIndex + obj match { + case cItem: ConstructionItem => + NextConstructionItemFireMode(cItem, originalModeIndex) + case _ => + obj.NextFireMode + } + val modeIndex = obj.FireModeIndex + val tool_guid = obj.GUID + if (originalModeIndex == modeIndex) { + obj.FireModeIndex = originalModeIndex + sendResponse(ChangeFireModeMessage(tool_guid, originalModeIndex)) //reinforcement + } else { + log.info(s"ChangeFireMode: changing $tool_guid to fire mode $modeIndex") + sendResponse(ChangeFireModeMessage(tool_guid, modeIndex)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireMode(player.GUID, tool_guid, modeIndex) + ) + } + case Some(_) => + log.error(s"ChangeFireMode: the object that was found for $item_guid does not possess fire modes") + case None => + log.error(s"ChangeFireMode: can not find $item_guid") + } + + case msg @ ChangeFireStateMessage_Start(item_guid) => + log.trace("ChangeFireState_Start: " + msg) + if (shooting.isEmpty) { + FindEquipment match { + case Some(tool: Tool) => + if (tool.Magazine > 0 || prefire.contains(item_guid)) { + prefire = None + shooting = Some(item_guid) + //special case - suppress the decimator's alternate fire mode, by projectile + if (tool.Projectile != GlobalDefinitions.phoenix_missile_guided_projectile) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Start(player.GUID, item_guid) + ) + } + } else { + log.warn( + s"ChangeFireState_Start: ${tool.Definition.Name} magazine is empty before trying to shoot bullet" + ) + EmptyMagazine(item_guid, tool) + } + case Some(_) => //permissible, for now + prefire = None + shooting = Some(item_guid) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Start(player.GUID, item_guid) + ) + case None => + log.error(s"ChangeFireState_Start: can not find $item_guid") + } + } + + case msg @ ChangeFireStateMessage_Stop(item_guid) => + log.trace("ChangeFireState_Stop: " + msg) + prefire = None + val weapon: Option[Equipment] = if (shooting.contains(item_guid)) { + shooting = None + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, item_guid) + ) + FindEquipment + } else { + FindEquipment match { + case Some(tool: Tool) => + //the decimator does not send a ChangeFireState_Start on the last shot + if ( + tool.Definition == GlobalDefinitions.phoenix && + tool.Projectile != GlobalDefinitions.phoenix_missile_guided_projectile + ) { + //suppress the decimator's alternate fire mode, however + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Start(player.GUID, item_guid) + ) + } + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, item_guid) + ) + Some(tool) + case Some(tool) => //permissible, for now + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, item_guid) + ) + Some(tool) + case _ => + log.warn(s"ChangeFireState_Stop: received an unexpected message about $item_guid") + None + } + } + weapon match { + case Some(tool: Tool) => + if (tool.Magazine == 0) { + FireCycleCleanup(tool) + } + case Some(trigger: BoomerTrigger) => + val playerGUID = player.GUID + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Start(playerGUID, item_guid) + ) + continent.GUID(trigger.Companion) match { + case Some(boomer: BoomerDeployable) => + boomer.Destroyed = true + continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.Detonate(boomer.GUID, boomer)) + Deployables.AnnounceDestroyDeployable(boomer, Some(500 milliseconds)) + case Some(_) | None => ; + } + FindEquipmentToDelete(item_guid, trigger) + trigger.Companion = None + case _ => ; + } + progressBarUpdate.cancel + progressBarValue = None + + case msg @ EmoteMsg(avatar_guid, emote) => + log.info("Emote: " + msg) + sendResponse(EmoteMsg(avatar_guid, emote)) + + case msg @ DropItemMessage(item_guid) => + log.info(s"DropItem: $msg") + ValidObject(item_guid) match { + case Some(anItem: Equipment) => + player.FreeHand.Equipment match { + case Some(item) => + if (item.GUID == item_guid) { + CancelZoningProcessWithDescriptiveReason("cancel_use") + continent.GUID(player.VehicleSeated) match { + case Some(_) => + RemoveOldEquipmentFromInventory(player, taskResolver)(item) + case None => + DropEquipmentFromInventory(player)(item) + } + } + case None => + log.warn(s"DropItem: ${player.Name} wanted to drop a $anItem, but it wasn't at hand") + } + case Some(obj) => //TODO LLU + log.warn(s"DropItem: ${player.Name} wanted to drop a $obj, but that isn't possible") + case None => + sendResponse(ObjectDeleteMessage(item_guid, 0)) //this is fine; item doesn't exist to the server anyway + log.warn(s"DropItem: ${player.Name} wanted to drop an item ($item_guid), but it was nowhere to be found") + } + + case msg @ PickupItemMessage(item_guid, player_guid, unk1, unk2) => + log.info(s"PickupItem: $msg") + ValidObject(item_guid) match { + case Some(item: Equipment) => + player.Fit(item) match { + case Some(_) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + PickUpEquipmentFromGround(player)(item) + case None => //skip + sendResponse(ActionResultMessage.Fail(16)) //error code? + } + case _ => + log.warn( + s"PickupItem: ${player.Name} requested an item that doesn't exist in this zone; assume client-side garbage data" + ) + sendResponse(ObjectDeleteMessage(item_guid, 0)) + } + + case msg @ ReloadMessage(item_guid, ammo_clip, unk1) => + log.info("Reload: " + msg) + FindContainedWeapon match { + case (Some(obj), Some(tool: Tool)) => + val currentMagazine: Int = tool.Magazine + val magazineSize: Int = tool.MaxMagazine + val reloadValue: Int = magazineSize - currentMagazine + if (magazineSize > 0 && reloadValue > 0) { + FindEquipmentStock(obj, FindAmmoBoxThatUses(tool.AmmoType), reloadValue, CountAmmunition).reverse match { + case Nil => + log.warn(s"ReloadMessage: no ammunition could be found for $item_guid") + case x :: xs => + val (deleteFunc, modifyFunc): (Equipment => Future[Any], (AmmoBox, Int) => Unit) = obj match { + case (veh: Vehicle) => + (RemoveOldEquipmentFromInventory(veh, taskResolver), ModifyAmmunitionInVehicle(veh)) + case o: PlanetSideServerObject with Container => + (RemoveOldEquipmentFromInventory(o, taskResolver), ModifyAmmunition(o)) + case _ => + throw new Exception("ReloadMessage: should be a server object, not a regular game object") + } + xs.foreach { item => deleteFunc(item.obj) } + val box = x.obj.asInstanceOf[AmmoBox] + val tailReloadValue: Int = if (xs.isEmpty) { + 0 + } else { + xs.map(_.obj.asInstanceOf[AmmoBox].Capacity).sum + } + val sumReloadValue: Int = box.Capacity + tailReloadValue + val actualReloadValue = (if (sumReloadValue <= reloadValue) { + deleteFunc(box) + sumReloadValue + } else { + modifyFunc(box, reloadValue - tailReloadValue) + reloadValue + }) + currentMagazine + log.info(s"ReloadMessage: success, $tool <- $actualReloadValue ${tool.AmmoType}") + tool.Magazine = actualReloadValue + sendResponse(ReloadMessage(item_guid, actualReloadValue, unk1)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.Reload(player.GUID, item_guid) + ) + } + } else { + log.warn(s"ReloadMessage: item $item_guid can not reload (full=$magazineSize, want=$reloadValue)") + } + case (_, Some(_)) => + log.error(s"ReloadMessage: the object that was found for $item_guid was not a Tool") + case (_, None) => + log.error(s"ReloadMessage: can not find $item_guid") + } + + case msg @ ObjectHeldMessage(avatar_guid, held_holsters, unk1) => + log.info(s"ObjectHeld: $msg") + val before = player.DrawnSlot + if (before != held_holsters) { + if (player.ExoSuit == ExoSuitType.MAX && held_holsters != 0) { + log.info(s"ObjectHeld: ${player.Name} is denied changing hands to $held_holsters as a MAX") + player.DrawnSlot = 0 + sendResponse(ObjectHeldMessage(avatar_guid, 0, true)) + } else if ((player.DrawnSlot = held_holsters) != before) { + continent.AvatarEvents ! AvatarServiceMessage( + player.Continent, + AvatarAction.ObjectHeld(player.GUID, player.LastDrawnSlot) + ) + + // Ignore non-equipment holsters + //todo: check current suit holster slots? + if (held_holsters >= 0 && held_holsters < 5) { + player.Holsters()(held_holsters).Equipment match { + case Some(unholsteredItem: Equipment) => + if (unholsteredItem.Definition == GlobalDefinitions.remote_electronics_kit) { + // Player has unholstered a REK - we need to set an atttribute on the REK itself to change the beam/icon colour to the correct one for the player's hack level + continent.AvatarEvents ! AvatarServiceMessage( + player.Continent, + AvatarAction.PlanetsideAttribute(unholsteredItem.GUID, 116, Player.GetHackLevel(player)) + ) + } + case None => ; + } + } + + // Stop using proximity terminals if player unholsters a weapon (which should re-trigger the proximity effect and re-holster the weapon) + if (player.VisibleSlots.contains(held_holsters)) { + continent.GUID(usingMedicalTerminal) match { + case Some(term: Terminal with ProximityUnit) => + StopUsingProximityUnit(term) + case _ => ; + } + } + } + } + + case msg @ AvatarJumpMessage(state) => + //log.info("AvatarJump: " + msg) + player.Actor ! Player.StaminaChanged(-10) + player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 5) + + case msg @ ZipLineMessage(player_guid, forwards, action, path_id, pos) => + log.info("ZipLineMessage: " + msg) + val (isTeleporter: Boolean, path: Option[ZipLinePath]) = + continent.ZipLinePaths.find(x => x.PathId == path_id) match { + case Some(x) => (x.IsTeleporter, Some(x)) + case _ => + log.warn(s"Couldn't find zipline path ${path_id} in zone ${continent.Number} / ${continent.Id}") + (false, None) + } + if (isTeleporter) { + CancelZoningProcessWithDescriptiveReason("cancel") + val endPoint = path.get.ZipLinePoints.last + sendResponse( + ZipLineMessage(PlanetSideGUID(0), forwards, 0, path_id, pos) + ) // todo: send to zone to show teleport animation to all clients + sendResponse(PlayerStateShiftMessage(ShiftState(0, endPoint, player.Orientation.z, None))) + } else { + CancelZoningProcessWithDescriptiveReason("cancel_motion") + action match { + case 0 => + // Travel along the zipline in the direction specified + sendResponse(ZipLineMessage(player_guid, forwards, action, path_id, pos)) + case 1 => + //disembark from zipline at destination ! + sendResponse(ZipLineMessage(player_guid, forwards, action, 0, pos)) + case 2 => + //get off by force + sendResponse(ZipLineMessage(player_guid, forwards, action, 0, pos)) + case _ => + log.warn( + s"Tried to do something with a zipline but can't handle it. forwards: ${forwards} action: ${action} path_id: ${path_id} zone: ${continent.Number} / ${continent.Id}" + ) + } + } + + case msg @ RequestDestroyMessage(object_guid) => + // TODO: Make sure this is the correct response for all cases + ValidObject(object_guid) match { + case Some(vehicle: Vehicle) => + /* line 1a: player is admin (and overrules other access requirements) */ + /* line 1b: vehicle and player (as the owner) acknowledge each other */ + /* line 1c: vehicle is the same faction as player and either the owner is absent or the vehicle is destroyed */ + /* line 2: vehicle is not mounted in anything or, if it is, its seats are empty */ + if ( + (admin || + (player.VehicleOwned.contains(object_guid) && vehicle.Owner.contains(player.GUID)) || + (player.Faction == vehicle.Faction && ((vehicle.Owner.isEmpty || continent + .GUID(vehicle.Owner.get) + .isEmpty) || vehicle.Destroyed))) && + (vehicle.MountedIn.isEmpty || !vehicle.Seats.values.exists(_.isOccupied)) + ) { + vehicle.Actor ! Vehicle.Deconstruct() + log.info(s"RequestDestroy: vehicle $vehicle") + } else { + log.info(s"RequestDestroy: must own vehicle in order to deconstruct it") + } + + case Some(obj: BoomerTrigger) => + if (FindEquipmentToDelete(object_guid, obj)) { + continent.GUID(obj.Companion) match { + case Some(boomer: BoomerDeployable) => + boomer.Trigger = None + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(boomer, continent, Some(0 seconds)) + ) + //continent.Deployables ! Zone.Deployable.Dismiss(boomer) + case Some(thing) => + log.info(s"RequestDestroy: BoomerTrigger object connected to wrong object - $thing") + case None => ; + } + } + + case Some(obj: Equipment) => + FindEquipmentToDelete(object_guid, obj) + + case Some(_: LocalProjectile) => + FindProjectileEntry(object_guid) match { + case Some(projectile) => + if (projectile.isResolved) { + log.warn( + s"RequestDestroy: tried to clean up projectile ${object_guid.guid} but it was already resolved" + ) + } else { + projectile.Miss() + if (projectile.profile.ExistsOnRemoteClients && projectile.HasGUID) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ProjectileExplodes(player.GUID, projectile.GUID, projectile) + ) + taskResolver ! UnregisterProjectile(projectile) + } + } + case None => + log.warn(s"RequestDestroy: projectile ${object_guid.guid} has never been fired") + } + + case Some(obj: BoomerDeployable) => + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(obj, continent, Some(0 seconds)) + ) + obj.Trigger match { + case Some(trigger) => + obj.Trigger = None + val guid = trigger.GUID + Zone.EquipmentIs.Where(trigger, guid, continent) match { + case Some(Zone.EquipmentIs.InContainer(container, index)) => + container.Slot(index).Equipment = None + case Some(Zone.EquipmentIs.OnGround()) => + continent.Ground ! Zone.Ground.RemoveItem(guid) + case Some(Zone.EquipmentIs.Orphaned()) => + log.warn(s"RequestDestroy: boomer_trigger@$guid has been found but it seems to be orphaned") + case _ => ; + } + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ObjectDelete(PlanetSideGUID(0), guid) + ) + GUIDTask.UnregisterObjectTask(trigger)(continent.GUID) + + case None => ; + } + + case Some(obj: TelepadDeployable) => + continent.LocalEvents ! LocalServiceMessage.Telepads(SupportActor.ClearSpecific(List(obj), continent)) + continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(obj), continent)) + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(obj, continent, Some(0 seconds)) + ) + + case Some(obj: PlanetSideGameObject with Deployable) => + continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(obj), continent)) + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(obj, continent, Some(0 seconds)) + ) + + case Some(thing) => + log.warn(s"RequestDestroy: not allowed to delete object $thing") + + case None => + log.warn(s"RequestDestroy: object ${object_guid.guid} not found") + } + + case msg @ ObjectDeleteMessage(object_guid, unk1) => + sendResponse(ObjectDeleteMessage(object_guid, 0)) + log.info("ObjectDelete: " + msg) + + case msg @ MoveItemMessage(item_guid, source_guid, destination_guid, dest, _) => + log.info(s"MoveItem: $msg") + (continent.GUID(source_guid), continent.GUID(destination_guid), ValidObject(item_guid)) match { + case ( + Some(source: PlanetSideServerObject with Container), + Some(destination: PlanetSideServerObject with Container), + Some(item: Equipment) + ) => + source.Actor ! Containable.MoveItem(destination, item, dest) + case (None, _, _) => + log.error(s"MoveItem: wanted to move $item_guid from $source_guid, but could not find source object") + case (_, None, _) => + log.error( + s"MoveItem: wanted to move $item_guid to $destination_guid, but could not find destination object" + ) + case (_, _, None) => + log.error(s"MoveItem: wanted to move $item_guid, but could not find it") + case _ => + log.error( + s"MoveItem: wanted to move $item_guid from $source_guid to $destination_guid, but multiple problems were encountered" + ) + } + + case msg @ LootItemMessage(item_guid, target_guid) => + log.info(s"LootItem: $msg") + (ValidObject(item_guid), continent.GUID(target_guid)) match { + case (Some(item: Equipment), Some(destination: PlanetSideServerObject with Container)) => + //figure out the source + ( + { + val findFunc: PlanetSideServerObject with Container => Option[ + (PlanetSideServerObject with Container, Option[Int]) + ] = FindInLocalContainer(item_guid) + findFunc(player.Locker) + .orElse(findFunc(player)) + .orElse(accessedContainer match { + case Some(parent: PlanetSideServerObject) => + findFunc(parent) + case _ => + None + }) + }, + destination.Fit(item) + ) match { + case (Some((source, Some(_))), Some(dest)) => + source.Actor ! Containable.MoveItem(destination, item, dest) + case (None, _) => + log.error(s"LootItem: can not find where $item is put currently") + case (_, None) => + log.error(s"LootItem: can not find somwhere to put $item in $destination") + case _ => + log.error( + s"LootItem: wanted to move $item_guid to $target_guid, but multiple problems were encountered" + ) + } + case (Some(obj), _) => + log.warn(s"LootItem: item $obj is (probably) not lootable") + case (None, _) => + log.warn(s"LootItem: can not find $item_guid") + case (_, None) => + log.warn(s"LootItem: can not find where to put $item_guid") + } + + case msg @ AvatarImplantMessage(player_guid, action, slot, status) => + log.info("AvatarImplantMessage: " + msg) + if (action == ImplantAction.Activation) { + CancelZoningProcessWithDescriptiveReason("cancel_implant") + player.Actor ! Player.ImplantActivation(slot, status) + } + + case msg @ UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) => + //log.info("UseItem: " + msg) + // TODO: Not all fields in the response are identical to source in real packet logs (but seems to be ok) + // TODO: Not all incoming UseItemMessage's respond with another UseItemMessage (i.e. doors only send out GenericObjectStateMsg) + val equipment = player.Slot(player.DrawnSlot).Equipment match { + case out @ Some(item) if item.GUID == item_used_guid => out + case _ => None + } + ValidObject(object_guid) match { + case Some(door: Door) => + if ( + player.Faction == door.Faction || (continent.Map.DoorToLock.get(object_guid.guid) match { + case Some(lock_guid) => + val lock = continent.GUID(lock_guid).get.asInstanceOf[IFFLock] + val owner = lock.Owner.asInstanceOf[Building] + val playerIsOnInside = Vector3.ScalarProjection(lock.Outwards, player.Position - door.Position) < 0f + + // If an IFF lock exists and the IFF lock faction doesn't match the current player and one of the following conditions are met open the door: + // The player is on the inside of the door, determined by the lock orientation + // The lock is hacked + // A base is hacked + // A base is neutral + // todo: A base is out of power (generator down) + + playerIsOnInside || lock.HackedBy.isDefined || owner.CaptureTerminalIsHacked || lock.Faction == PlanetSideEmpire.NEUTRAL + case None => !door.isOpen // If there's no linked IFF lock just open the door if it's closed. + }) + ) { + door.Actor ! Door.Use(player, msg) + } else if (door.isOpen) { + //the door is open globally ... except on our screen + sendResponse(GenericObjectStateMsg(object_guid, 16)) + } + + case Some(resourceSilo: ResourceSilo) => + resourceSilo.Actor ! ResourceSilo.Use(player, msg) + + case Some(panel: IFFLock) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + panel.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: Player) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + if (obj.isBackpack) { + if (equipment.isEmpty) { + log.info(s"UseItem: ${player.Name} looting the corpse of $obj") + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) + ) + accessedContainer = Some(obj) + } + } else if (!unk3 && player.isAlive) { //potential kit use + ValidObject(item_used_guid) match { + case Some(kit: Kit) => + val kid = kit.Definition.ObjectId + val time = System.currentTimeMillis + val lastUse = player.GetLastUsedTime(kid) + val delay = delayedGratificationEntries.getOrElse(kid, 0L) + if ((time - lastUse) < delay) { + val displayedDelay = + math.min(5, ((delay.toDouble / 1000) - math.ceil((time - lastUse).toDouble) / 1000) + 1).toInt + sendResponse( + ChatMsg(ChatMessageType.UNK_225, false, "", s"@TimeUntilNextUse^$displayedDelay~", None) + ) + } else { + val indexOpt = player.Find(kit) + val kitIsUsed = indexOpt match { + case Some(index) => + if (kit.Definition == GlobalDefinitions.medkit) { + if (player.Health == player.MaxHealth) { + sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "@HealComplete", None)) + false + } else { + player.History(HealFromKit(PlayerSource(player), 25, kit.Definition)) + player.Health = player.Health + 25 + sendResponse(PlanetsideAttributeMessage(avatar_guid, 0, player.Health)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(avatar_guid, 0, player.Health) + ) + true + } + } else if (kit.Definition == GlobalDefinitions.super_medkit) { + if (player.Health == player.MaxHealth) { + sendResponse(ChatMsg(ChatMessageType.UNK_225, false, "", "@HealComplete", None)) + false + } else { + player.History(HealFromKit(PlayerSource(player), 100, kit.Definition)) + player.Health = player.Health + 100 + sendResponse(PlanetsideAttributeMessage(avatar_guid, 0, player.Health)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(avatar_guid, 0, player.Health) + ) + true + } + } else if (kit.Definition == GlobalDefinitions.super_armorkit) { + if (player.Armor == player.MaxArmor) { + sendResponse( + ChatMsg( + ChatMessageType.UNK_225, + false, + "", + "Armor at maximum - No repairing required.", + None + ) + ) + false + } else { + player.History(RepairFromKit(PlayerSource(player), 200, kit.Definition)) + player.Armor = player.Armor + 200 + sendResponse(PlanetsideAttributeMessage(avatar_guid, 4, player.Armor)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(avatar_guid, 4, player.Armor) + ) + true + } + } else if (kit.Definition == GlobalDefinitions.super_staminakit) { + if (player.Stamina == player.MaxStamina) { + sendResponse( + ChatMsg( + ChatMessageType.UNK_225, + false, + "", + "Stamina at maximum - No recharge required.", + None + ) + ) + false + } else { + player.Actor ! Player.StaminaChanged(100) + sendResponse(PlanetsideAttributeMessage(avatar_guid, 2, player.Stamina)) + true + } + } else { + log.warn(s"UseItem: $kit behavior not supported") + false + } + + case None => + log.error(s"UseItem: anticipated a $kit, but can't find it") + false + } + if (kitIsUsed) { + //kit was found belonging to player and was used + player.SetLastUsedTime(kid, time) + player.Slot(indexOpt.get).Equipment = + None //remove from slot immediately; must exist on client for next packet + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + 0, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) + ) + sendResponse(ObjectDeleteMessage(kit.GUID, 0)) + taskResolver ! GUIDTask.UnregisterEquipment(kit)(continent.GUID) + } + } + + case Some(item) => + log.warn(s"UseItem: looking for Kit to use, but found $item instead") + case None => + log.warn(s"UseItem: anticipated a Kit $item_used_guid, but can't find it") + } + } else if (itemType == ObjectClass.avatar && unk3) { + equipment match { + case Some(tool: Tool) if tool.Definition == GlobalDefinitions.bank => + obj.Actor ! CommonMessages.Use(player, equipment) + + case Some(tool: Tool) if tool.Definition == GlobalDefinitions.medicalapplicator => + obj.Actor ! CommonMessages.Use(player, equipment) + case _ => ; + } + } + + case Some(locker: Locker) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + locker.Actor ! CommonMessages.Use(player, Some(item)) + case None if locker.Faction == player.Faction || !locker.HackedBy.isEmpty => + log.trace(s"UseItem: ${player.Name} accessing a locker") + CancelZoningProcessWithDescriptiveReason("cancel_use") + val container = player.Locker + accessedContainer = Some(container) + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + container.GUID, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + 456 + ) + ) + case _ => ; + } + + case Some(gen: Generator) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + gen.Actor ! CommonMessages.Use(player, Some(item)) + case None => ; + } + + case Some(mech: ImplantTerminalMech) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + mech.Actor ! CommonMessages.Use(player, Some(item)) + case None => ; + } + + case Some(captureTerminal: CaptureTerminal) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + captureTerminal.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: FacilityTurret) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) //try generic + obj.Actor ! CommonMessages.Use(player, Some((item, unk2.toInt))) //try upgrade path + case _ => ; + } + + case Some(obj: Vehicle) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + + case None if player.Faction == obj.Faction => + //access to trunk + if ( + obj.AccessingTrunk.isEmpty && + (!obj.PermissionGroup(AccessPermissionGroup.Trunk.id).contains(VehicleLockState.Locked) || obj.Owner + .contains(player.GUID)) + ) { + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.AccessingTrunk = player.GUID + accessedContainer = Some(obj) + AccessContents(obj) + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) + ) + } + case _ => ; + } + + case Some(terminal: Terminal) => + log.info(s"$msg") + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + terminal.Actor ! CommonMessages.Use(player, Some(item)) + + case None + if terminal.Owner == Building.NoBuilding || terminal.Faction == player.Faction || terminal.HackedBy.nonEmpty => + val tdef = terminal.Definition + if (tdef.isInstanceOf[MatrixTerminalDefinition]) { + //TODO matrix spawn point; for now, just blindly bind to show work (and hope nothing breaks) + CancelZoningProcessWithDescriptiveReason("cancel_use") + sendResponse( + BindPlayerMessage(BindStatus.Bind, "", true, true, SpawnGroup.Sanctuary, 0, 0, terminal.Position) + ) + } else if ( + tdef == GlobalDefinitions.multivehicle_rearm_terminal || tdef == GlobalDefinitions.bfr_rearm_terminal || + tdef == GlobalDefinitions.air_rearm_terminal || tdef == GlobalDefinitions.ground_rearm_terminal + ) { + FindLocalVehicle match { + case Some(vehicle) => + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) + ) + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + vehicle.GUID, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + vehicle.Definition.ObjectId + ) + ) + case None => + log.error("UseItem: expected seated vehicle, but found none") + } + } else if (tdef == GlobalDefinitions.teleportpad_terminal) { + //explicit request + CancelZoningProcessWithDescriptiveReason("cancel_use") + terminal.Actor ! Terminal.Request( + player, + ItemTransactionMessage(object_guid, TransactionType.Buy, 0, "router_telepad", 0, PlanetSideGUID(0)) + ) + } else { + CancelZoningProcessWithDescriptiveReason("cancel_use") + sendResponse( + UseItemMessage( + avatar_guid, + item_used_guid, + object_guid, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7, + unk8, + itemType + ) + ) + } + + case _ => ; + } + + case Some(obj: SpawnTube) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + case None if player.Faction == obj.Faction => + //deconstruction + CancelZoningProcessWithDescriptiveReason("cancel_use") + PlayerActionsToCancel() + CancelAllProximityUnits() + GoToDeploymentMap() + case _ => ; + } + + case Some(obj: SensorDeployable) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: TurretDeployable) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: TrapDeployable) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: ShieldGeneratorDeployable) => + equipment match { + case Some(item) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + obj.Actor ! CommonMessages.Use(player, Some(item)) + case _ => ; + } + + case Some(obj: TelepadDeployable) => + if (equipment.isEmpty) { + continent.GUID(obj.Router) match { + case Some(vehicle: Vehicle) => + vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { + case Some(util: Utility.InternalTelepad) => + CancelZoningProcessWithDescriptiveReason("cancel") + UseRouterTelepadSystem( + router = vehicle, + internalTelepad = util, + remoteTelepad = obj, + src = obj, + dest = util + ) + case _ => + log.error( + s"telepad@${object_guid.guid} is not linked to a router - ${vehicle.Definition.Name}, ${obj.Router}" + ) + } + case Some(o) => + log.error( + s"telepad@${object_guid.guid} is linked to wrong kind of object - ${o.Definition.Name}, ${obj.Router}" + ) + case None => ; + } + } + + case Some(obj: Utility.InternalTelepad) => + continent.GUID(obj.Telepad) match { + case Some(pad: TelepadDeployable) => + CancelZoningProcessWithDescriptiveReason("cancel") + UseRouterTelepadSystem( + router = obj.Owner.asInstanceOf[Vehicle], + internalTelepad = obj, + remoteTelepad = pad, + src = obj, + dest = pad + ) + case Some(o) => + log.error( + s"internal telepad@${object_guid.guid} is not linked to a remote telepad - ${o.Definition.Name}@${o.GUID.guid}" + ) + case None => ; + } + + case Some(obj) => + CancelZoningProcessWithDescriptiveReason("cancel_use") + log.warn(s"UseItem: don't know how to handle $obj") + + case None => + log.error(s"UseItem: can not find object $object_guid") + } + + case msg @ ProximityTerminalUseMessage(player_guid, object_guid, _) => + log.trace(s"ProximityTerminalUse: $msg") + continent.GUID(object_guid) match { + case Some(obj: Terminal with ProximityUnit) => + HandleProximityTerminalUse(obj) + case Some(obj) => ; + log.warn(s"ProximityTerminalUse: object does not have proximity effects - $obj") + case None => + log.warn(s"ProximityTerminalUse: no object with guid $object_guid found") + } + + case msg @ UnuseItemMessage(player_guid, object_guid) => + log.info(s"UnuseItem: $msg") + //TODO check for existing accessedContainer value? + ValidObject(object_guid) match { + case Some(obj: Vehicle) => + if (obj.AccessingTrunk.contains(player.GUID)) { + obj.AccessingTrunk = None + UnAccessContents(obj) + } + case Some(obj: Player) => + TryDisposeOfLootedCorpse(obj) + + case _ => ; + } + accessedContainer = None + + case msg @ DeployObjectMessage(guid, unk1, pos, orient, unk2) => + log.info(s"DeployObject: $msg") + //the hand with the construction item is no longer drawn + //TODO consider player.Slot(player.LastDrawnSlot) + (player.Holsters.find(slot => slot.Equipment.nonEmpty && slot.Equipment.get.GUID == guid) match { + case Some(slot) => + slot.Equipment + case None => + None + }) match { + case Some(obj: ConstructionItem) => + val ammoType = obj.AmmoType match { + case DeployedItem.portable_manned_turret => + GlobalDefinitions.PortableMannedTurret(player.Faction).Item //faction-specific turret + case turret => + turret + } + log.info(s"DeployObject: Constructing a ${ammoType}") + CancelZoningProcessWithDescriptiveReason("cancel_use") + val dObj: PlanetSideGameObject with Deployable = Deployables.Make(ammoType)() + dObj.Position = pos + dObj.Orientation = orient + dObj.Faction = player.Faction + dObj.AssignOwnership(player) + val tasking: TaskResolver.GiveTask = dObj match { + case turret: TurretDeployable => + GUIDTask.RegisterDeployableTurret(turret)(continent.GUID) + case _ => + GUIDTask.RegisterObjectTask(dObj)(continent.GUID) + } + taskResolver ! CallBackForTask(tasking, continent.Deployables, Zone.Deployable.Build(dObj, obj)) + + case Some(obj) => + log.warn(s"DeployObject: $obj is something?") + case None => + log.warn("DeployObject: nothing?") + } + + case msg @ GenericObjectStateMsg(object_guid, unk1) => + log.info("GenericObjectState: " + msg) + + case msg @ GenericActionMessage(action) => + log.info(s"GenericAction: $msg") + if (player == null) { + if (action == 29) { + log.info("AFK state reported during login") + } + } else { + val (toolOpt, definition) = player.Slot(0).Equipment match { + case Some(tool: Tool) => + (Some(tool), tool.Definition) + case _ => + (None, GlobalDefinitions.bullet_9mm) + } + if (action == 29) { + log.info(s"${player.Name} is AFK") + player.AwayFromKeyboard = true + } else if (action == 30) { + log.info(s"${player.Name} is back") + player.AwayFromKeyboard = false + } + if (action == 15) { //max deployment + log.info(s"GenericObject: $player is anchored") + player.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(player.GUID, 19, 1) + ) + definition match { + case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.trhev_burster => + val tool = toolOpt.get + tool.ToFireMode = 1 + sendResponse(ChangeFireModeMessage(tool.GUID, 1)) + case GlobalDefinitions.trhev_pounder => + val tool = toolOpt.get + val convertFireModeIndex = if (tool.FireModeIndex == 0) { 1 } + else { 4 } + tool.ToFireMode = convertFireModeIndex + sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) + case _ => + log.warn(s"GenericObject: $player is MAX with an unexpected weapon - ${definition.Name}") + } + } else if (action == 16) { //max deployment + log.info(s"GenericObject: $player has released the anchors") + player.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(player.GUID, 19, 0) + ) + definition match { + case GlobalDefinitions.trhev_dualcycler | GlobalDefinitions.trhev_burster => + val tool = toolOpt.get + tool.ToFireMode = 0 + sendResponse(ChangeFireModeMessage(tool.GUID, 0)) + case GlobalDefinitions.trhev_pounder => + val tool = toolOpt.get + val convertFireModeIndex = if (tool.FireModeIndex == 1) { 0 } + else { 3 } + tool.ToFireMode = convertFireModeIndex + sendResponse(ChangeFireModeMessage(tool.GUID, convertFireModeIndex)) + case _ => + log.warn(s"GenericObject: $player is MAX with an unexpected weapon - ${definition.Name}") + } + } else if (action == 20) { + if (player.ExoSuit == ExoSuitType.MAX) { + ToggleMaxSpecialState(enable = true) + } else { + log.warn("Got GenericActionMessage 20 but can't handle it") + } + } else if (action == 21) { + if (player.ExoSuit == ExoSuitType.MAX) { + player.Faction match { + case PlanetSideEmpire.NC => + ToggleMaxSpecialState(enable = false) + case _ => log.warn(s"Player ${player.Name} tried to cancel an uncancellable MAX special ability") + } + } else { + log.warn("Got GenericActionMessage 21 but can't handle it") + } + } else if (action == 36) { //Looking For Squad ON + if (squadUI.nonEmpty) { + if (!lfsm && squadUI(player.CharId).index == 0) { + lfsm = true + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(player.GUID, 53, 1) + ) + } + } else if (!avatar.LFS) { + avatar.LFS = true + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(player.GUID, 53, 1) + ) + } + } else if (action == 37) { //Looking For Squad OFF + if (squadUI.nonEmpty) { + if (lfsm && squadUI(player.CharId).index == 0) { + lfsm = false + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(player.GUID, 53, 0) + ) + } + } else if (avatar.LFS) { + avatar.LFS = false + continent.AvatarEvents ! AvatarServiceMessage( + s"${player.Faction}", + AvatarAction.PlanetsideAttribute(player.GUID, 53, 0) + ) + } + } + } + + case msg @ ItemTransactionMessage(terminal_guid, transaction_type, _, _, _, _) => + log.info("ItemTransaction: " + msg) + continent.GUID(terminal_guid) match { + case Some(term: Terminal) => + log.info(s"ItemTransaction: ${term.Definition.Name} found") + if (lastTerminalOrderFulfillment) { + lastTerminalOrderFulfillment = false + CancelZoningProcessWithDescriptiveReason("cancel_use") + term.Actor ! Terminal.Request(player, msg) + } + case Some(obj: PlanetSideGameObject) => + log.error(s"ItemTransaction: $obj is not a terminal") + case _ => + log.error(s"ItemTransaction: $terminal_guid does not exist") + } + + case msg @ FavoritesRequest(player_guid, list, action, line, label) => + log.info(s"FavoritesRequest: $msg") + if (player.GUID == player_guid) { + val lineno = if (list == LoadoutType.Vehicle) { line + 10 } + else { line } + val name = label.getOrElse(s"missing_loadout_${line + 1}") + action match { + case FavoritesAction.Save => + (if (list == LoadoutType.Infantry) { + Some(player) + } else if (list == LoadoutType.Vehicle) { + player.VehicleSeated match { + case Some(vehicle_guid) => + continent.GUID(vehicle_guid) + case None => + None + } + } else { + None + }) match { + case Some(owner: Player) => //InfantryLoadout + CancelZoningProcessWithDescriptiveReason("cancel_use") + avatar.EquipmentLoadouts.SaveLoadout(owner, name, lineno) + SaveLoadoutToDB(owner, name, lineno) + import InfantryLoadout._ +// println(player_guid, line, name, DetermineSubtypeB(player.ExoSuit, DetermineSubtype(player)), player.ExoSuit, DetermineSubtype(player)) + sendResponse( + FavoritesMessage( + list, + player_guid, + line, + name, + DetermineSubtypeB(player.ExoSuit, DetermineSubtype(player)) + ) + ) + case Some(owner: Vehicle) => //VehicleLoadout + avatar.EquipmentLoadouts.SaveLoadout(owner, name, lineno) + sendResponse(FavoritesMessage(list, player_guid, line, name)) + case Some(_) | None => + log.error("FavoritesRequest: unexpected owner for favorites") + } + + case FavoritesAction.Delete => + CancelZoningProcessWithDescriptiveReason("cancel_use") + avatar.EquipmentLoadouts.DeleteLoadout(lineno) + sendResponse(FavoritesMessage(list, player_guid, line, "")) + + case FavoritesAction.Unknown => + log.warn("FavoritesRequest: unknown favorites action") + } + } + + case msg @ WeaponDelayFireMessage(seq_time, weapon_guid) => + log.info("WeaponDelayFire: " + msg) + + case msg @ WeaponDryFireMessage(weapon_guid) => + log.info("WeaponDryFireMessage: " + msg) + FindWeapon match { + case Some(tool: Tool) => + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.WeaponDryFire(player.GUID, weapon_guid) + ) + case _ => ; + } + + case msg @ WeaponFireMessage( + seq_time, + weapon_guid, + projectile_guid, + shot_origin, + unk1, + unk2, + unk3, + unk4, + unk5, + unk6, + unk7 + ) => + log.info(s"WeaponFire: $msg") + CancelZoningProcessWithDescriptiveReason("cancel_fire") + if (player.isShielded) { + // Cancel NC MAX shield if it's active + ToggleMaxSpecialState(enable = false) + } + FindContainedWeapon match { + case (Some(obj), Some(tool: Tool)) => + if (tool.Magazine <= 0) { //safety: enforce ammunition depletion + prefire = None + EmptyMagazine(weapon_guid, tool) + } else if (!player.isAlive) { //proper internal accounting, but no projectile + prefire = shooting.orElse(Some(weapon_guid)) + tool.Discharge() + projectiles(projectile_guid.guid - Projectile.BaseUID) = None + shotsWhileDead += 1 + } else { //shooting + if ( + tool.FireModeIndex == 1 && (tool.Definition.Name == "anniversary_guna" || tool.Definition.Name == "anniversary_gun" || tool.Definition.Name == "anniversary_gunb") + ) { + player.Actor ! Player.StaminaChanged(-player.Stamina) + player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 3) + } + + prefire = shooting.orElse(Some(weapon_guid)) + tool.Discharge() //always + val projectileIndex = projectile_guid.guid - Projectile.BaseUID + val projectilePlace = projectiles(projectileIndex) + if ( + projectilePlace match { + case Some(projectile) => !projectile.isResolved + case None => false + } + ) { + log.trace(s"WeaponFireMessage: overwriting unresolved projectile ${projectile_guid.guid}") + } + val (angle, attribution, acceptableDistanceToOwner) = obj match { + case p: Player => + ( + SimpleWorldEntity.validateOrientationEntry(p.Orientation + Vector3.z(p.FacingYawUpper)), + tool.Definition.ObjectId, + 10f + (if (p.Velocity.nonEmpty) { 5f } + else { 0f }) + ) + case v: Vehicle if v.Definition.CanFly => + (tool.Orientation, obj.Definition.ObjectId, 1000f) //TODO this is too simplistic to find proper angle + case _: Vehicle => + (tool.Orientation, obj.Definition.ObjectId, 225f) //TODO this is too simplistic to find proper angle + case _ => + (obj.Orientation, obj.Definition.ObjectId, 300f) + } + val distanceToOwner = Vector3.DistanceSquared(shot_origin, player.Position) + if (distanceToOwner <= acceptableDistanceToOwner) { + val projectile_info = tool.Projectile + val projectile = + Projectile(projectile_info, tool.Definition, tool.FireMode, player, attribution, shot_origin, angle) + projectiles(projectileIndex) = Some(projectile) + if (projectile_info.ExistsOnRemoteClients) { + log.trace(s"WeaponFireMessage: ${projectile_info.Name} is a remote projectile") + taskResolver ! (if (projectile.HasGUID) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ProjectileExplodes(player.GUID, projectile.GUID, projectile) + ) + ReregisterProjectile(projectile) + } else { + RegisterProjectile(projectile) + }) + } + projectilesToCleanUp(projectileIndex) = false + + obj match { + case turret: FacilityTurret if turret.Definition == GlobalDefinitions.vanu_sentry_turret => + turret.Actor ! FacilityTurret.WeaponDischarged() + case _ => ; + } + } else { + log.warn( + s"WeaponFireMessage: ${player.Name}'s ${tool.Definition.Name} projectile is too far from owner position at time of discharge ($distanceToOwner > $acceptableDistanceToOwner); suspect" + ) + } + } + case _ => ; + } + + case msg @ WeaponLazeTargetPositionMessage(weapon, pos1, pos2) => + log.info("Lazing position: " + pos2.toString) + + case msg @ ObjectDetectedMessage(guid1, guid2, unk, targets) => + //log.info(s"Detection: $msg") + FindWeapon match { + case Some(weapon) if weapon.Projectile.AutoLock => + //projectile with auto-lock instigates a warning on the target + val detectedTargets = FindDetectedProjectileTargets(targets) + if (detectedTargets.nonEmpty) { + val mode = 7 + (weapon.Projectile == GlobalDefinitions.wasp_rocket_projectile) + detectedTargets.foreach { target => + continent.AvatarEvents ! AvatarServiceMessage(target, AvatarAction.ProjectileAutoLockAwareness(mode)) + } + } + case _ => ; + } + + case msg @ HitMessage(seq_time, projectile_guid, unk1, hit_info, unk2, unk3, unk4) => + log.info(s"Hit: $msg") + (hit_info match { + case Some(hitInfo) => + ValidObject(hitInfo.hitobject_guid) match { + case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) => + CheckForHitPositionDiscrepancy(projectile_guid, hitInfo.hit_pos, target) + Some((target, hitInfo.shot_origin, hitInfo.hit_pos)) + case _ => + None + } + case None => ; + None + }) match { + case Some((target, shotOrigin, hitPos)) => + ResolveProjectileEntry(projectile_guid, ProjectileResolution.Hit, target, hitPos) match { + case Some(projectile) => + HandleDealingDamage(target, projectile) + case None => ; + } + case None => ; + } + + case msg @ SplashHitMessage( + seq_time, + projectile_guid, + explosion_pos, + direct_victim_uid, + unk3, + projectile_vel, + unk4, + targets + ) => + log.info(s"Splash: $msg") + FindProjectileEntry(projectile_guid) match { + case Some(projectile) => + projectile.Position = explosion_pos + projectile.Velocity = projectile_vel + //direct_victim_uid + ValidObject(direct_victim_uid) match { + case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) => CheckForHitPositionDiscrepancy(projectile_guid, explosion_pos, target) - ResolveProjectileEntry(projectile, ProjectileResolution.Splash, target, explosion_pos) match { + ResolveProjectileEntry(projectile, ProjectileResolution.Splash, target, target.Position) match { case Some(projectile) => HandleDealingDamage(target, projectile) case None => ; } case _ => ; } - }) - if(projectile.profile.ExistsOnRemoteClients && projectile.HasGUID) { - //cleanup - val localIndex = projectile_guid.guid - Projectile.BaseUID - if(projectile.HasGUID) { - CleanUpRemoteProjectile(projectile.GUID, projectile, localIndex) + //other victims + targets.foreach(elem => { + ValidObject(elem.uid) match { + case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) => + CheckForHitPositionDiscrepancy(projectile_guid, explosion_pos, target) + ResolveProjectileEntry(projectile, ProjectileResolution.Splash, target, explosion_pos) match { + case Some(projectile) => + HandleDealingDamage(target, projectile) + case None => ; + } + case _ => ; + } + }) + if (projectile.profile.ExistsOnRemoteClients && projectile.HasGUID) { + //cleanup + val localIndex = projectile_guid.guid - Projectile.BaseUID + if (projectile.HasGUID) { + CleanUpRemoteProjectile(projectile.GUID, projectile, localIndex) + } else { + projectilesToCleanUp(localIndex) = true + } } - else { - projectilesToCleanUp(localIndex) = true + case None => ; + } + + case msg @ LashMessage(seq_time, killer_guid, victim_guid, projectile_guid, hit_pos, unk1) => + log.info(s"Lash: $msg") + ValidObject(victim_guid) match { + case Some(target: PlanetSideGameObject with FactionAffinity with Vitality) => + CheckForHitPositionDiscrepancy(projectile_guid, hit_pos, target) + ResolveProjectileEntry(projectile_guid, ProjectileResolution.Lash, target, hit_pos) match { + case Some(projectile) => + HandleDealingDamage(target, projectile) + case None => ; } - } - case None => ; - } + case _ => ; + } - case msg @ LashMessage(seq_time, killer_guid, victim_guid, projectile_guid, hit_pos, unk1) => - log.info(s"Lash: $msg") - ValidObject(victim_guid) match { - case Some(target : PlanetSideGameObject with FactionAffinity with Vitality) => - CheckForHitPositionDiscrepancy(projectile_guid, hit_pos, target) - ResolveProjectileEntry(projectile_guid, ProjectileResolution.Lash, target, hit_pos) match { - case Some(projectile) => - HandleDealingDamage(target, projectile) - case None => ; - } - case _ => ; - } + case msg @ AvatarFirstTimeEventMessage(avatar_guid, object_guid, unk1, event_name) => + log.info(s"AvatarFirstTimeEvent: $event_name") + avatar.FirstTimeEvents = avatar.FirstTimeEvents :+ event_name - case msg @ AvatarFirstTimeEventMessage(avatar_guid, object_guid, unk1, event_name) => - log.info(s"AvatarFirstTimeEvent: $event_name") - avatar.FirstTimeEvents = avatar.FirstTimeEvents :+ event_name + case msg @ WarpgateRequest(continent_guid, building_guid, dest_building_guid, dest_continent_guid, unk1, unk2) => + log.info(s"WarpgateRequest: $msg") + CancelZoningProcessWithDescriptiveReason("cancel_use") + if (deadState != DeadState.RespawnTime) { + continent.Buildings.values.find(building => building.GUID == building_guid) match { + case Some(wg: WarpGate) if (wg.Active && (GetKnownVehicleAndSeat() match { + case (Some(vehicle), _) => + wg.Definition.VehicleAllowance && !wg.Definition.NoWarp.contains(vehicle.Definition) + case _ => + true + })) => + deadState = DeadState.RespawnTime + cluster ! Zone.Lattice.RequestSpecificSpawnPoint(dest_continent_guid.guid, player, dest_building_guid) + + case Some(wg: WarpGate) if (!wg.Active) => + log.info(s"WarpgateRequest: inactive WarpGate") - case msg @ WarpgateRequest(continent_guid, building_guid, dest_building_guid, dest_continent_guid, unk1, unk2) => - log.info(s"WarpgateRequest: $msg") - CancelZoningProcessWithDescriptiveReason("cancel_use") - if(deadState != DeadState.RespawnTime) { - continent.Buildings.values.find(building => building.GUID == building_guid) match { - case Some(wg : WarpGate) if (wg.Active && (GetKnownVehicleAndSeat() match { - case (Some(vehicle), _) => - wg.Definition.VehicleAllowance && !wg.Definition.NoWarp.contains(vehicle.Definition) case _ => - true - })) => - deadState = DeadState.RespawnTime - cluster ! Zone.Lattice.RequestSpecificSpawnPoint(dest_continent_guid.guid, player, dest_building_guid) - - case Some(wg : WarpGate) if(!wg.Active) => - log.info(s"WarpgateRequest: inactive WarpGate") - - case _ => - deadState = DeadState.RespawnTime - RequestSanctuaryZoneSpawn(player, continent.Number) - } - } - else { - log.warn("WarpgateRequest: request consumed; already respawning ...") - } - - case msg @ MountVehicleMsg(player_guid, mountable_guid, entry_point) => - log.info("MountVehicleMsg: "+msg) - ValidObject(mountable_guid) match { - case Some(obj : Mountable) => - obj.GetSeatFromMountPoint(entry_point) match { - case Some(seat_num) => - obj.Actor ! Mountable.TryMount(player, seat_num) - case None => - log.warn(s"MountVehicleMsg: attempted to board mountable $mountable_guid's seat $entry_point, but no seat exists there") + deadState = DeadState.RespawnTime + RequestSanctuaryZoneSpawn(player, continent.Number) } - case None | Some(_) => - log.warn(s"MountVehicleMsg: not a mountable thing") - } - - case msg @ DismountVehicleMsg(player_guid, bailType, wasKickedByDriver) => - //TODO optimize this later - log.info(s"DismountVehicleMsg: $msg") - //common warning for this section - def dismountWarning(msg : String) : Unit = { - log.warn(s"$msg; some vehicle might not know that a player is no longer sitting in it") - } - if(player.GUID == player_guid) { - //normally disembarking from a seat - (interstellarFerry.orElse(continent.GUID(player.VehicleSeated)) match { - case out @ Some(obj : Vehicle) => - if(obj.MountedIn.isEmpty) out else None - case out @ Some(_ : Mountable) => - out - case _ => - dismountWarning(s"DismountVehicleMsg: player ${player.Name}_guid not considered seated in a mountable entity") - None - }) match { - case Some(obj : Mountable) => - obj.PassengerInSeat(player) match { - case Some(0) if controlled.nonEmpty => - log.warn(s"DismountVehicleMsg: can not dismount from vehicle as driver while server has asserted control; please wait ...") - case Some(seat_num : Int) => - obj.Actor ! Mountable.TryDismount(player, seat_num) - if(interstellarFerry.isDefined) { - //short-circuit the temporary channel for transferring between zones, the player is no longer doing that - //see above in VehicleResponse.TransferPassenger case - interstellarFerry = None - } - // Deconstruct the vehicle if the driver has bailed out and the vehicle is capable of flight - //todo: implement auto landing procedure if the pilot bails but passengers are still present instead of deconstructing the vehicle - //todo: continue flight path until aircraft crashes if no passengers present (or no passenger seats), then deconstruct. - //todo: kick cargo passengers out. To be added after PR #216 is merged - obj match { - case v : Vehicle if bailType == BailType.Bailed && seat_num == 0 && v.Flying => - v.Actor ! Vehicle.Deconstruct(None) //immediate deconstruction - case _ => ; - } + } else { + log.warn("WarpgateRequest: request consumed; already respawning ...") + } + case msg @ MountVehicleMsg(player_guid, mountable_guid, entry_point) => + log.info("MountVehicleMsg: " + msg) + ValidObject(mountable_guid) match { + case Some(obj: Mountable) => + obj.GetSeatFromMountPoint(entry_point) match { + case Some(seat_num) => + obj.Actor ! Mountable.TryMount(player, seat_num) case None => - dismountWarning(s"DismountVehicleMsg: can not find where player ${player.Name}_guid is seated in mountable ${player.VehicleSeated}") + log.warn( + s"MountVehicleMsg: attempted to board mountable $mountable_guid's seat $entry_point, but no seat exists there" + ) } - case _ => - dismountWarning(s"DismountVehicleMsg: can not find mountable entity ${player.VehicleSeated}") + case None | Some(_) => + log.warn(s"MountVehicleMsg: not a mountable thing") } - } - else { - //kicking someone else out of a seat; need to own that seat/mountable - player.VehicleOwned match { - case Some(obj_guid) => - ((ValidObject(obj_guid), ValidObject(player_guid)) match { - case (vehicle @ Some(obj : Vehicle), tplayer) => - if(obj.MountedIn.isEmpty) (vehicle, tplayer) else (None, None) - case (mount @ Some(obj : Mountable), tplayer) => - (mount, tplayer) - case _ => - (None, None) - }) match { - case (Some(obj : Mountable), Some(tplayer : Player)) => - obj.PassengerInSeat(tplayer) match { - case Some(seat_num : Int) => - obj.Actor ! Mountable.TryDismount(tplayer, seat_num) - case None => - dismountWarning(s"DismountVehicleMsg: can not find where other player ${player.Name}_guid is seated in mountable $obj_guid") - } - case (None, _) => ; - log.warn(s"DismountVehicleMsg: ${player.Name} can not find his vehicle") - case (_, None) => ; - log.warn(s"DismountVehicleMsg: player $player_guid could not be found to kick") - case _ => - log.warn(s"DismountVehicleMsg: object is either not a Mountable or not a Player") - } - case None => - log.warn(s"DismountVehicleMsg: ${player.Name} does not own a vehicle") + + case msg @ DismountVehicleMsg(player_guid, bailType, wasKickedByDriver) => + //TODO optimize this later + log.info(s"DismountVehicleMsg: $msg") + //common warning for this section + def dismountWarning(msg: String): Unit = { + log.warn(s"$msg; some vehicle might not know that a player is no longer sitting in it") } - } + if (player.GUID == player_guid) { + //normally disembarking from a seat + (interstellarFerry.orElse(continent.GUID(player.VehicleSeated)) match { + case out @ Some(obj: Vehicle) => + if (obj.MountedIn.isEmpty) out else None + case out @ Some(_: Mountable) => + out + case _ => + dismountWarning( + s"DismountVehicleMsg: player ${player.Name}_guid not considered seated in a mountable entity" + ) + None + }) match { + case Some(obj: Mountable) => + obj.PassengerInSeat(player) match { + case Some(0) if controlled.nonEmpty => + log.warn( + s"DismountVehicleMsg: can not dismount from vehicle as driver while server has asserted control; please wait ..." + ) + case Some(seat_num: Int) => + obj.Actor ! Mountable.TryDismount(player, seat_num) + if (interstellarFerry.isDefined) { + //short-circuit the temporary channel for transferring between zones, the player is no longer doing that + //see above in VehicleResponse.TransferPassenger case + interstellarFerry = None + } + // Deconstruct the vehicle if the driver has bailed out and the vehicle is capable of flight + //todo: implement auto landing procedure if the pilot bails but passengers are still present instead of deconstructing the vehicle + //todo: continue flight path until aircraft crashes if no passengers present (or no passenger seats), then deconstruct. + //todo: kick cargo passengers out. To be added after PR #216 is merged + obj match { + case v: Vehicle if bailType == BailType.Bailed && seat_num == 0 && v.Flying => + v.Actor ! Vehicle.Deconstruct(None) //immediate deconstruction + case _ => ; + } - case msg @ DeployRequestMessage(player_guid, vehicle_guid, deploy_state, unk2, unk3, pos) => - log.info(s"DeployRequest: $msg") - if(player.VehicleOwned.contains(vehicle_guid) && player.VehicleOwned == player.VehicleSeated) { - continent.GUID(vehicle_guid) match { - case Some(obj : Vehicle) => - obj.Actor ! Deployment.TryDeploymentChange(deploy_state) - - case _ => - log.error(s"DeployRequest: can not find $vehicle_guid in scope") - player.VehicleOwned = None + case None => + dismountWarning( + s"DismountVehicleMsg: can not find where player ${player.Name}_guid is seated in mountable ${player.VehicleSeated}" + ) + } + case _ => + dismountWarning(s"DismountVehicleMsg: can not find mountable entity ${player.VehicleSeated}") + } + } else { + //kicking someone else out of a seat; need to own that seat/mountable + player.VehicleOwned match { + case Some(obj_guid) => + ((ValidObject(obj_guid), ValidObject(player_guid)) match { + case (vehicle @ Some(obj: Vehicle), tplayer) => + if (obj.MountedIn.isEmpty) (vehicle, tplayer) else (None, None) + case (mount @ Some(obj: Mountable), tplayer) => + (mount, tplayer) + case _ => + (None, None) + }) match { + case (Some(obj: Mountable), Some(tplayer: Player)) => + obj.PassengerInSeat(tplayer) match { + case Some(seat_num: Int) => + obj.Actor ! Mountable.TryDismount(tplayer, seat_num) + case None => + dismountWarning( + s"DismountVehicleMsg: can not find where other player ${player.Name}_guid is seated in mountable $obj_guid" + ) + } + case (None, _) => ; + log.warn(s"DismountVehicleMsg: ${player.Name} can not find his vehicle") + case (_, None) => ; + log.warn(s"DismountVehicleMsg: player $player_guid could not be found to kick") + case _ => + log.warn(s"DismountVehicleMsg: object is either not a Mountable or not a Player") + } + case None => + log.warn(s"DismountVehicleMsg: ${player.Name} does not own a vehicle") + } } - } - else { - log.warn(s"DeployRequest: ${player.Name} does not own the deploying $vehicle_guid object") - } - case msg @ AvatarGrenadeStateMessage(player_guid, state) => - log.info("AvatarGrenadeStateMessage: " + msg) + case msg @ DeployRequestMessage(player_guid, vehicle_guid, deploy_state, unk2, unk3, pos) => + log.info(s"DeployRequest: $msg") + if (player.VehicleOwned.contains(vehicle_guid) && player.VehicleOwned == player.VehicleSeated) { + continent.GUID(vehicle_guid) match { + case Some(obj: Vehicle) => + obj.Actor ! Deployment.TryDeploymentChange(deploy_state) - case msg @ SquadDefinitionActionMessage(u1, u2, action) => - log.info(s"SquadDefinitionAction: $msg") + case _ => + log.error(s"DeployRequest: can not find $vehicle_guid in scope") + player.VehicleOwned = None + } + } else { + log.warn(s"DeployRequest: ${player.Name} does not own the deploying $vehicle_guid object") + } + + case msg @ AvatarGrenadeStateMessage(player_guid, state) => + log.info("AvatarGrenadeStateMessage: " + msg) + + case msg @ SquadDefinitionActionMessage(u1, u2, action) => + log.info(s"SquadDefinitionAction: $msg") squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Definition(u1, u2, action)) - case msg @ SquadMembershipRequest(request_type, char_id, unk3, player_name, unk5) => - log.info(s"$msg") - squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Membership(request_type, char_id, unk3, player_name, unk5)) + case msg @ SquadMembershipRequest(request_type, char_id, unk3, player_name, unk5) => + log.info(s"$msg") + squadService ! SquadServiceMessage( + player, + continent, + SquadServiceAction.Membership(request_type, char_id, unk3, player_name, unk5) + ) - case msg @ SquadWaypointRequest(request, _, wtype, unk, info) => - log.info(s"Waypoint Request: $msg") - squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Waypoint(request, wtype, unk, info)) + case msg @ SquadWaypointRequest(request, _, wtype, unk, info) => + log.info(s"Waypoint Request: $msg") + squadService ! SquadServiceMessage(player, continent, SquadServiceAction.Waypoint(request, wtype, unk, info)) - case msg @ GenericCollisionMsg(u1, p, t, php, thp, pv, tv, ppos, tpos, u2, u3, u4) => - log.info("Ouch! " + msg) + case msg @ GenericCollisionMsg(u1, p, t, php, thp, pv, tv, ppos, tpos, u2, u3, u4) => + log.info("Ouch! " + msg) - case msg @ BugReportMessage(version_major,version_minor,version_date,bug_type,repeatable,location,zone,pos,summary,desc) => - log.info("BugReportMessage: " + msg) + case msg @ BugReportMessage( + version_major, + version_minor, + version_date, + bug_type, + repeatable, + location, + zone, + pos, + summary, + desc + ) => + log.info("BugReportMessage: " + msg) - case msg @ BindPlayerMessage(action, bindDesc, unk1, logging, unk2, unk3, unk4, pos) => - log.info("BindPlayerMessage: " + msg) + case msg @ BindPlayerMessage(action, bindDesc, unk1, logging, unk2, unk3, unk4, pos) => + log.info("BindPlayerMessage: " + msg) - case msg @ PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value) => - log.info("PlanetsideAttributeMessage: "+msg) - ValidObject(object_guid) match { - case Some(vehicle : Vehicle) => - if(player.VehicleOwned.contains(vehicle.GUID)) { - if(9 < attribute_type && attribute_type < 14) { - vehicle.PermissionGroup(attribute_type, attribute_value) match { - case Some(allow) => - val group = AccessPermissionGroup(attribute_type - 10) - log.info(s"Vehicle attributes: vehicle ${vehicle.GUID} access permission $group changed to $allow") - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.SeatPermissions(player.GUID, vehicle.GUID, attribute_type, attribute_value)) - //kick players who should not be seated in the vehicle due to permission changes - if(allow == VehicleLockState.Locked) { //TODO only important permission atm - vehicle.Definition.MountPoints.values.foreach(mountpoint_num => { - vehicle.Seat(mountpoint_num) match { - case Some(seat) => - seat.Occupant match { - case Some(tplayer) => - if(vehicle.SeatPermissionGroup(mountpoint_num).contains(group) && tplayer != player) { //can not kick self - seat.Occupant = None - tplayer.VehicleSeated = None - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.KickPassenger(tplayer.GUID, 4, false, object_guid)) + case msg @ PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value) => + log.info("PlanetsideAttributeMessage: " + msg) + ValidObject(object_guid) match { + case Some(vehicle: Vehicle) => + if (player.VehicleOwned.contains(vehicle.GUID)) { + if (9 < attribute_type && attribute_type < 14) { + vehicle.PermissionGroup(attribute_type, attribute_value) match { + case Some(allow) => + val group = AccessPermissionGroup(attribute_type - 10) + log.info(s"Vehicle attributes: vehicle ${vehicle.GUID} access permission $group changed to $allow") + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.SeatPermissions(player.GUID, vehicle.GUID, attribute_type, attribute_value) + ) + //kick players who should not be seated in the vehicle due to permission changes + if (allow == VehicleLockState.Locked) { //TODO only important permission atm + vehicle.Definition.MountPoints.values + .foreach(mountpoint_num => { + vehicle.Seat(mountpoint_num) match { + case Some(seat) => + seat.Occupant match { + case Some(tplayer) => + if ( + vehicle.SeatPermissionGroup(mountpoint_num).contains(group) && tplayer != player + ) { //can not kick self + seat.Occupant = None + tplayer.VehicleSeated = None + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.KickPassenger(tplayer.GUID, 4, false, object_guid) + ) + } + case None => ; // No player seated } - case None => ; // No player seated + case None => ; // Not a seat mounting point } - case None => ; // Not a seat mounting point - } - vehicle.CargoHold(mountpoint_num) match { - case Some(cargo) => - cargo.Occupant match { - case Some(vehicle) => - if(vehicle.SeatPermissionGroup(mountpoint_num).contains(group)) { - //todo: this probably doesn't work for passengers within the cargo vehicle - // Instruct client to start bail dismount procedure - self ! DismountVehicleCargoMsg(player.GUID, vehicle.GUID, true, false, false) + vehicle.CargoHold(mountpoint_num) match { + case Some(cargo) => + cargo.Occupant match { + case Some(vehicle) => + if (vehicle.SeatPermissionGroup(mountpoint_num).contains(group)) { + //todo: this probably doesn't work for passengers within the cargo vehicle + // Instruct client to start bail dismount procedure + self ! DismountVehicleCargoMsg(player.GUID, vehicle.GUID, true, false, false) + } + case None => ; // No vehicle in cargo } - case None => ; // No vehicle in cargo + case None => ; // Not a cargo mounting point } - case None => ; // Not a cargo mounting point - } - }) - } - case None => ; + }) + } + case None => ; + } + } else { + log.warn(s"Vehicle attributes: unsupported change on vehicle $object_guid - $attribute_type") } - } - else { - log.warn(s"Vehicle attributes: unsupported change on vehicle $object_guid - $attribute_type") - } - } - else { - log.warn(s"Vehicle attributes: ${player.Name} does not own vehicle ${vehicle.GUID} and can not change it") - } - case _ => - log.warn(s"echo unknown attributes behavior") - sendResponse(PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value)) - } - - case msg @ FacilityBenefitShieldChargeRequestMessage(guid) => - player.VehicleSeated match { - case Some(vehicleGUID) => - continent.GUID(vehicleGUID) match { - case Some(obj : Vehicle) => - if(!obj.Destroyed) { //vehicle will try to charge even if destroyed - obj.Actor ! Vehicle.ChargeShields(15) - } - case _ => - log.warn(s"FacilityBenefitShieldChargeRequest: can not find vehicle ${vehicleGUID.guid} in zone ${continent.Id}") - } - case None => - log.warn(s"FacilityBenefitShieldChargeRequest: player ${player.Name} is not seated in a vehicle") - } - - case msg @ BattleplanMessage(char_id, player_name, zone_id, diagrams) => - log.info("Battleplan: "+msg) - - case msg @ CreateShortcutMessage(player_guid, slot, unk, add, shortcut) => - log.info("CreateShortcutMessage: "+msg) - - case msg @ FriendsRequest(action, friend) => - log.info("FriendsRequest: "+msg) - - case msg @ HitHint(source_guid, player_guid) => - log.trace(s"HitHint: $msg") //HitHint is manually distributed for proper operation - - case msg @ TargetingImplantRequest(list) => - log.info("TargetingImplantRequest: "+msg) - val targetInfo: List[TargetInfo] = list.flatMap(x => { - continent.GUID(x.target_guid) match { - case Some(player: Player) => - val health = player.Health.toFloat / player.MaxHealth - val armor = if (player.MaxArmor > 0) { - player.Armor.toFloat / player.MaxArmor } else { - 0 + log.warn(s"Vehicle attributes: ${player.Name} does not own vehicle ${vehicle.GUID} and can not change it") } - - Some(TargetInfo(player.GUID, health, armor)) case _ => - log.warn(s"Target info requested for guid ${x.target_guid} but is not a player") - None + log.warn(s"echo unknown attributes behavior") + sendResponse(PlanetsideAttributeMessage(object_guid, attribute_type, attribute_value)) } - }) - sendResponse(TargetingInfoMessage(targetInfo)) - case msg @ ActionCancelMessage(u1, u2, u3) => - log.info("Cancelled: "+msg) - progressBarUpdate.cancel - progressBarValue = None + case msg @ FacilityBenefitShieldChargeRequestMessage(guid) => + player.VehicleSeated match { + case Some(vehicleGUID) => + continent.GUID(vehicleGUID) match { + case Some(obj: Vehicle) => + if (!obj.Destroyed) { //vehicle will try to charge even if destroyed + obj.Actor ! Vehicle.ChargeShields(15) + } + case _ => + log.warn( + s"FacilityBenefitShieldChargeRequest: can not find vehicle ${vehicleGUID.guid} in zone ${continent.Id}" + ) + } + case None => + log.warn(s"FacilityBenefitShieldChargeRequest: player ${player.Name} is not seated in a vehicle") + } - case default => log.error(s"Unhandled GamePacket $pkt") - } + case msg @ BattleplanMessage(char_id, player_name, zone_id, diagrams) => + log.info("Battleplan: " + msg) + + case msg @ CreateShortcutMessage(player_guid, slot, unk, add, shortcut) => + log.info("CreateShortcutMessage: " + msg) + + case msg @ FriendsRequest(action, friend) => + log.info("FriendsRequest: " + msg) + + case msg @ HitHint(source_guid, player_guid) => + log.trace(s"HitHint: $msg") //HitHint is manually distributed for proper operation + + case msg @ TargetingImplantRequest(list) => + log.info("TargetingImplantRequest: " + msg) + val targetInfo: List[TargetInfo] = list.flatMap(x => { + continent.GUID(x.target_guid) match { + case Some(player: Player) => + val health = player.Health.toFloat / player.MaxHealth + val armor = if (player.MaxArmor > 0) { + player.Armor.toFloat / player.MaxArmor + } else { + 0 + } + + Some(TargetInfo(player.GUID, health, armor)) + case _ => + log.warn(s"Target info requested for guid ${x.target_guid} but is not a player") + None + } + }) + + sendResponse(TargetingInfoMessage(targetInfo)) + case msg @ ActionCancelMessage(u1, u2, u3) => + log.info("Cancelled: " + msg) + progressBarUpdate.cancel + progressBarValue = None + + case default => log.error(s"Unhandled GamePacket $pkt") + } /** * Construct tasking that registers all aspects of a `Player` avatar. @@ -6066,33 +6824,33 @@ class WorldSessionActor extends Actor * @param tplayer the avatar `Player` * @return a `TaskResolver.GiveTask` message */ - private def RegisterNewAvatar(tplayer : Player) : TaskResolver.GiveTask = { + private def RegisterNewAvatar(tplayer: Player): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localPlayer = tplayer + private val localPlayer = tplayer private val localAnnounce = self - override def Description : String = s"register new player avatar ${localPlayer.Name}" + override def Description: String = s"register new player avatar ${localPlayer.Name}" - override def isComplete : Task.Resolution.Value = { - if(localPlayer.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localPlayer.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { log.info(s"Player $localPlayer is registered") - resolver ! scala.util.Success(this) + resolver ! Success(this) localAnnounce ! NewPlayerLoaded(localPlayer) //alerts WorldSessionActor } - override def onFailure(ex : Throwable) : Unit = { + override def onFailure(ex: Throwable): Unit = { localAnnounce ! PlayerFailedToLoad(localPlayer) //alerts WorldSessionActor } - }, List(GUIDTask.RegisterAvatar(tplayer)(continent.GUID)) + }, + List(GUIDTask.RegisterAvatar(tplayer)(continent.GUID)) ) } @@ -6102,33 +6860,33 @@ class WorldSessionActor extends Actor * @param tplayer the avatar `Player` * @return a `TaskResolver.GiveTask` message */ - private def RegisterAvatar(tplayer : Player) : TaskResolver.GiveTask = { + private def RegisterAvatar(tplayer: Player): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localPlayer = tplayer + private val localPlayer = tplayer private val localAnnounce = self - override def Description : String = s"register player avatar ${localPlayer.Name}" + override def Description: String = s"register player avatar ${localPlayer.Name}" - override def isComplete : Task.Resolution.Value = { - if(localPlayer.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localPlayer.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { log.info(s"Player $localPlayer is registered") - resolver ! scala.util.Success(this) + resolver ! Success(this) localAnnounce ! PlayerLoaded(localPlayer) //alerts WorldSessionActor } - override def onFailure(ex : Throwable) : Unit = { + override def onFailure(ex: Throwable): Unit = { localAnnounce ! PlayerFailedToLoad(localPlayer) //alerts WorldSessionActor } - }, List(GUIDTask.RegisterPlayer(tplayer)(continent.GUID)) + }, + List(GUIDTask.RegisterPlayer(tplayer)(continent.GUID)) ) } @@ -6139,27 +6897,27 @@ class WorldSessionActor extends Actor * @see `RegisterVehicleFromSpawnPad` * @return a `TaskResolver.GiveTask` message */ - def RegisterVehicle(vehicle : Vehicle) : TaskResolver.GiveTask = { + def RegisterVehicle(vehicle: Vehicle): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { private val localVehicle = vehicle - override def Description : String = s"register a ${localVehicle.Definition.Name}" + override def Description: String = s"register a ${localVehicle.Definition.Name}" - override def isComplete : Task.Resolution.Value = { - if(localVehicle.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localVehicle.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { log.info(s"Vehicle $localVehicle is registered") - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(GUIDTask.RegisterVehicle(vehicle)(continent.GUID)) + }, + List(GUIDTask.RegisterVehicle(vehicle)(continent.GUID)) ) } @@ -6189,32 +6947,32 @@ class WorldSessionActor extends Actor * should already be the driver of the droppod * @return a `TaskResolver.GiveTask` message */ - def RegisterDroppod(vehicle : Vehicle, tplayer : Player) : TaskResolver.GiveTask = { + def RegisterDroppod(vehicle: Vehicle, tplayer: Player): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localDriver = tplayer - private val localVehicle = vehicle + private val localDriver = tplayer + private val localVehicle = vehicle private val localAnnounce = self - override def Description : String = s"register a ${localVehicle.Definition.Name} manned by ${localDriver.Name}" + override def Description: String = s"register a ${localVehicle.Definition.Name} manned by ${localDriver.Name}" - override def isComplete : Task.Resolution.Value = { - if(localVehicle.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localVehicle.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { log.info(s"Vehicle $localVehicle is registered") localDriver.VehicleSeated = localVehicle.GUID Vehicles.Own(localVehicle, localDriver) localAnnounce ! PlayerLoaded(localDriver) - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(GUIDTask.RegisterObjectTask(vehicle)(continent.GUID)) + }, + List(GUIDTask.RegisterObjectTask(vehicle)(continent.GUID)) ) } @@ -6228,63 +6986,65 @@ class WorldSessionActor extends Actor * @see `RegisterVehicle` * @return a `TaskResolver.GiveTask` message */ - def RegisterVehicleFromSpawnPad(obj : Vehicle, pad : VehicleSpawnPad) : TaskResolver.GiveTask = { + def RegisterVehicleFromSpawnPad(obj: Vehicle, pad: VehicleSpawnPad): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localVehicle = obj - private val localPad = pad.Actor - private val localSession : String = sessionId.toString - private val localPlayer = player - private val localVehicleService = continent.VehicleEvents - private val localZone = continent + private val localVehicle = obj + private val localPad = pad.Actor + private val localSession: String = sessionId.toString + private val localPlayer = player + private val localVehicleService = continent.VehicleEvents + private val localZone = continent - override def Description : String = s"register a ${localVehicle.Definition.Name} for spawn pad" + override def Description: String = s"register a ${localVehicle.Definition.Name} for spawn pad" - override def isComplete : Task.Resolution.Value = { - if(localVehicle.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localVehicle.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localPad ! VehicleSpawnPad.VehicleOrder(localPlayer, localVehicle) - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(RegisterVehicle(obj))) + }, + List(RegisterVehicle(obj)) + ) } - def RegisterDrivenVehicle(obj : Vehicle, driver : Player) : TaskResolver.GiveTask = { + def RegisterDrivenVehicle(obj: Vehicle, driver: Player): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localVehicle = obj - private val localDriver = driver + private val localVehicle = obj + private val localDriver = driver private val localAnnounce = self - override def Description : String = s"register a ${localVehicle.Definition.Name} driven by ${localDriver.Name}" + override def Description: String = s"register a ${localVehicle.Definition.Name} driven by ${localDriver.Name}" - override def isComplete : Task.Resolution.Value = { - if(localVehicle.HasGUID && localDriver.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (localVehicle.HasGUID && localDriver.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localDriver.VehicleSeated = localVehicle.GUID Vehicles.Own(localVehicle, localDriver) localAnnounce ! NewPlayerLoaded(localDriver) //alerts WorldSessionActor - resolver ! scala.util.Success(this) + resolver ! Success(this) } - override def onFailure(ex : Throwable) : Unit = { + override def onFailure(ex: Throwable): Unit = { localAnnounce ! PlayerFailedToLoad(localDriver) //alerts WorldSessionActor } - }, List(GUIDTask.RegisterAvatar(driver)(continent.GUID), GUIDTask.RegisterVehicle(obj)(continent.GUID))) + }, + List(GUIDTask.RegisterAvatar(driver)(continent.GUID), GUIDTask.RegisterVehicle(obj)(continent.GUID)) + ) } /** @@ -6294,53 +7054,54 @@ class WorldSessionActor extends Actor * @param obj the projectile to be registered * @return a `TaskResolver.GiveTask` message */ - def RegisterProjectile(obj : Projectile) : TaskResolver.GiveTask = { + def RegisterProjectile(obj: Projectile): TaskResolver.GiveTask = { val definition = obj.Definition TaskResolver.GiveTask( new Task() { private val globalProjectile = obj - private val localAnnounce = self + private val localAnnounce = self - override def Description : String = s"register a ${globalProjectile.profile.Name}" + override def Description: String = s"register a ${globalProjectile.profile.Name}" - override def isComplete : Task.Resolution.Value = { - if(globalProjectile.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (globalProjectile.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localAnnounce ! LoadedRemoteProjectile(globalProjectile.GUID, Some(globalProjectile)) - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(GUIDTask.RegisterObjectTask(obj)(continent.GUID)) + }, + List(GUIDTask.RegisterObjectTask(obj)(continent.GUID)) ) } - def UnregisterDrivenVehicle(obj : Vehicle, driver : Player) : TaskResolver.GiveTask = { + def UnregisterDrivenVehicle(obj: Vehicle, driver: Player): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { private val localVehicle = obj - private val localDriver = driver + private val localDriver = driver - override def Description : String = s"unregister a ${localVehicle.Definition.Name} driven by ${localDriver.Name}" + override def Description: String = s"unregister a ${localVehicle.Definition.Name} driven by ${localDriver.Name}" - override def isComplete : Task.Resolution.Value = { - if(!localVehicle.HasGUID && !localDriver.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (!localVehicle.HasGUID && !localDriver.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { - resolver ! scala.util.Success(this) + def Execute(resolver: ActorRef): Unit = { + resolver ! Success(this) } - }, List(GUIDTask.UnregisterAvatar(driver)(continent.GUID), GUIDTask.UnregisterVehicle(obj)(continent.GUID))) + }, + List(GUIDTask.UnregisterAvatar(driver)(continent.GUID), GUIDTask.UnregisterVehicle(obj)(continent.GUID)) + ) } /** @@ -6350,29 +7111,29 @@ class WorldSessionActor extends Actor * @param obj the projectile to be unregistered * @return a `TaskResolver.GiveTask` message */ - def UnregisterProjectile(obj : Projectile) : TaskResolver.GiveTask = { + def UnregisterProjectile(obj: Projectile): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { private val globalProjectile = obj - private val localAnnounce = continent.AvatarEvents - private val localMsg = AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, obj.GUID, 2)) + private val localAnnounce = continent.AvatarEvents + private val localMsg = AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, obj.GUID, 2)) - override def Description : String = s"unregister a ${globalProjectile.profile.Name}" + override def Description: String = s"unregister a ${globalProjectile.profile.Name}" - override def isComplete : Task.Resolution.Value = { - if(!globalProjectile.HasGUID) { + override def isComplete: Task.Resolution.Value = { + if (!globalProjectile.HasGUID) { Task.Resolution.Success - } - else { + } else { Task.Resolution.Incomplete } } - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localAnnounce ! localMsg - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(GUIDTask.UnregisterObjectTask(obj)(continent.GUID)) + }, + List(GUIDTask.UnregisterObjectTask(obj)(continent.GUID)) ) } @@ -6384,18 +7145,19 @@ class WorldSessionActor extends Actor * @param obj the projectile to be registered (a second time?) * @return a `TaskResolver.GiveTask` message */ - def ReregisterProjectile(obj : Projectile) : TaskResolver.GiveTask = { + def ReregisterProjectile(obj: Projectile): TaskResolver.GiveTask = { val reg = RegisterProjectile(obj) - if(obj.HasGUID) { + if (obj.HasGUID) { TaskResolver.GiveTask( reg.task, - List(TaskResolver.GiveTask( - reg.subs(0).task, - List(UnregisterProjectile(obj)) - )) + List( + TaskResolver.GiveTask( + reg.subs(0).task, + List(UnregisterProjectile(obj)) + ) + ) ) - } - else { + } else { reg } } @@ -6406,42 +7168,45 @@ class WorldSessionActor extends Actor * @param zoneId the zone to load afterwards * @return a `TaskResolver.GiveTask` message */ - def TaskBeforeZoneChange(priorTask : TaskResolver.GiveTask, zoneId : String) : TaskResolver.GiveTask = { + def TaskBeforeZoneChange(priorTask: TaskResolver.GiveTask, zoneId: String): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localZone = continent - private val localNewZone = zoneId - private val localAvatarMsg = Zone.Population.Leave(avatar) - private val localService = cluster + private val localZone = continent + private val localNewZone = zoneId + private val localAvatarMsg = Zone.Population.Leave(avatar) + private val localService = cluster private val localServiceMsg = InterstellarCluster.GetWorld(zoneId) - override def Description : String = s"additional tasking in zone ${localZone.Id} before switching to zone $localNewZone" + override def Description: String = + s"additional tasking in zone ${localZone.Id} before switching to zone $localNewZone" - override def isComplete : Task.Resolution.Value = priorTask.task.isComplete + override def isComplete: Task.Resolution.Value = priorTask.task.isComplete - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localZone.Population ! localAvatarMsg localService ! localServiceMsg - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(priorTask) + }, + List(priorTask) ) } - def CallBackForTask(task : TaskResolver.GiveTask, sendTo : ActorRef, pass : Any) : TaskResolver.GiveTask = { + def CallBackForTask(task: TaskResolver.GiveTask, sendTo: ActorRef, pass: Any): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localDesc = task.task.Description + private val localDesc = task.task.Description private val destination = sendTo - private val passMsg = pass + private val passMsg = pass - override def Description : String = s"callback for tasking $localDesc" + override def Description: String = s"callback for tasking $localDesc" - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { destination ! passMsg - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(task) + }, + List(task) ) } @@ -6453,10 +7218,12 @@ class WorldSessionActor extends Actor * @param tplayer the `Player` object * @param gen a constant source of incremental unique numbers */ - private def SetCharacterSelectScreenGUID(tplayer : Player, gen : AtomicInteger) : Unit = { - tplayer.Holsters().foreach(holster => { - SetCharacterSelectScreenGUID_SelectEquipment(holster.Equipment, gen) - }) + private def SetCharacterSelectScreenGUID(tplayer: Player, gen: AtomicInteger): Unit = { + tplayer + .Holsters() + .foreach(holster => { + SetCharacterSelectScreenGUID_SelectEquipment(holster.Equipment, gen) + }) tplayer.GUID = PlanetSideGUID(gen.getAndIncrement) } @@ -6467,12 +7234,12 @@ class WorldSessionActor extends Actor * @param item the piece of `Equipment` * @param gen a constant source of incremental unique numbers */ - private def SetCharacterSelectScreenGUID_SelectEquipment(item : Option[Equipment], gen : AtomicInteger) : Unit = { + private def SetCharacterSelectScreenGUID_SelectEquipment(item: Option[Equipment], gen: AtomicInteger): Unit = { item match { - case Some(tool : Tool) => + case Some(tool: Tool) => tool.AmmoSlots.foreach(slot => { slot.Box.GUID = PlanetSideGUID(gen.getAndIncrement) }) tool.GUID = PlanetSideGUID(gen.getAndIncrement) - case Some(item : Equipment) => + case Some(item: Equipment) => item.GUID = PlanetSideGUID(gen.getAndIncrement) case None => ; } @@ -6484,10 +7251,12 @@ class WorldSessionActor extends Actor * Characters that were not selected may be destroyed along with their temporary GUIDs. * @param tplayer the `Player` object */ - private def RemoveCharacterSelectScreenGUID(tplayer : Player) : Unit = { - tplayer.Holsters().foreach(holster => { - RemoveCharacterSelectScreenGUID_SelectEquipment(holster.Equipment) - }) + private def RemoveCharacterSelectScreenGUID(tplayer: Player): Unit = { + tplayer + .Holsters() + .foreach(holster => { + RemoveCharacterSelectScreenGUID_SelectEquipment(holster.Equipment) + }) tplayer.Invalidate() } @@ -6497,12 +7266,12 @@ class WorldSessionActor extends Actor * Whether or not, remove the GUID from the object itself. * @param item the piece of `Equipment` */ - private def RemoveCharacterSelectScreenGUID_SelectEquipment(item : Option[Equipment]) : Unit = { + private def RemoveCharacterSelectScreenGUID_SelectEquipment(item: Option[Equipment]): Unit = { item match { - case Some(item : Tool) => + case Some(item: Tool) => item.AmmoSlots.foreach(slot => { slot.Box.Invalidate() }) item.Invalidate() - case Some(item : Equipment) => + case Some(item: Equipment) => item.Invalidate() case None => ; } @@ -6515,18 +7284,17 @@ class WorldSessionActor extends Actor * @param bep the change in experience points, positive by assertion * @return the player's current battle experience points */ - def AwardBattleExperiencePoints(avatar : Avatar, bep : Long) : Long = { + def AwardBattleExperiencePoints(avatar: Avatar, bep: Long): Long = { val oldBep = avatar.BEP - if(bep <= 0) { + if (bep <= 0) { log.error(s"trying to set $bep battle experience points on $avatar; value can not be negative") oldBep - } - else { + } else { val oldSlots = DetailedCharacterData.numberOfImplantSlots(oldBep) - val newBep = oldBep + bep + val newBep = oldBep + bep val newSlots = DetailedCharacterData.numberOfImplantSlots(newBep) avatar.BEP = newBep - if(newSlots > oldSlots) { + if (newSlots > oldSlots) { (oldSlots until newSlots).foreach(slotNumber => { avatar.Implants(slotNumber).Unlocked = true log.info(s"unlocking implant slot $slotNumber for $avatar") @@ -6546,16 +7314,13 @@ class WorldSessionActor extends Actor * @param bep the total amount of experience points, positive by assertion * @return the player's current battle experience points */ - def AwardCharacterSelectBattleExperiencePoints(avatar : Avatar, bep : Long) : Long = { - if(bep <= 0) { + def AwardCharacterSelectBattleExperiencePoints(avatar: Avatar, bep: Long): Long = { + if (bep <= 0) { log.error(s"trying to set $bep battle experience points on $avatar; value can not be negative") - } - else { + } else { avatar.BEP = bep val slots = DetailedCharacterData.numberOfImplantSlots(bep) - (0 until slots).foreach(slotNumber => - avatar.Implants(slotNumber).Unlocked = true - ) + (0 until slots).foreach(slotNumber => avatar.Implants(slotNumber).Unlocked = true) } bep } @@ -6566,11 +7331,11 @@ class WorldSessionActor extends Actor * Construct every object in the vehicle's inventory for shared manipulation updates. * @param vehicle the vehicle */ - def AccessContents(vehicle : Vehicle) : Unit = { + def AccessContents(vehicle: Vehicle): Unit = { AccessContentsChannel(vehicle) val parent_guid = vehicle.GUID vehicle.Trunk.Items.foreach(entry => { - val obj = entry.obj + val obj = entry.obj val objDef = obj.Definition sendResponse( ObjectCreateDetailedMessage( @@ -6583,7 +7348,7 @@ class WorldSessionActor extends Actor }) } - def AccessContentsChannel(container : PlanetSideServerObject) : Unit = { + def AccessContentsChannel(container: PlanetSideServerObject): Unit = { continent.VehicleEvents ! Service.Join(s"${container.Actor}") } @@ -6593,15 +7358,14 @@ class WorldSessionActor extends Actor * Deconstruct every object in the vehicle's inventory. * @param vehicle the vehicle */ - def UnAccessContents(vehicle : Vehicle) : Unit = { + def UnAccessContents(vehicle: Vehicle): Unit = { continent.VehicleEvents ! Service.Leave(Some(s"${vehicle.Actor}")) - vehicle.Trunk.Items.foreach(entry =>{ + vehicle.Trunk.Items.foreach(entry => { sendResponse(ObjectDeleteMessage(entry.obj.GUID, 0)) }) } - - def UnAccessContentsChannel(container : PlanetSideServerObject) : Unit = { + def UnAccessContentsChannel(container: PlanetSideServerObject): Unit = { continent.VehicleEvents ! Service.Leave(Some(s"${container.Actor}")) } @@ -6623,11 +7387,11 @@ class WorldSessionActor extends Actor * the first value is a `Container` object; * the second value is an `Equipment` object in the former */ - def FindContainedEquipment : (Option[PlanetSideGameObject with Container], Option[Equipment]) = { + def FindContainedEquipment: (Option[PlanetSideGameObject with Container], Option[Equipment]) = { player.VehicleSeated match { case Some(vehicle_guid) => //weapon is vehicle turret? continent.GUID(vehicle_guid) match { - case Some(vehicle : Mountable with MountedWeapons with Container) => + case Some(vehicle: Mountable with MountedWeapons with Container) => vehicle.PassengerInSeat(player) match { case Some(seat_num) => (Some(vehicle), vehicle.WeaponControlledFromSeat(seat_num)) @@ -6646,7 +7410,7 @@ class WorldSessionActor extends Actor * Runs `FindContainedEquipment` but ignores the `Container` object output. * @return an `Equipment` object */ - def FindEquipment : Option[Equipment] = FindContainedEquipment._2 + def FindEquipment: Option[Equipment] = FindContainedEquipment._2 /** * Check two locations for a controlled piece of equipment that is associated with the `player`. @@ -6655,9 +7419,9 @@ class WorldSessionActor extends Actor * the first value is a `Container` object; * the second value is an `Tool` object in the former */ - def FindContainedWeapon : (Option[PlanetSideGameObject with Container], Option[Tool]) = { + def FindContainedWeapon: (Option[PlanetSideGameObject with Container], Option[Tool]) = { FindContainedEquipment match { - case (container, Some(tool : Tool)) => + case (container, Some(tool: Tool)) => (container, Some(tool)) case _ => (None, None) @@ -6668,18 +7432,18 @@ class WorldSessionActor extends Actor * Runs `FindContainedWeapon` but ignores the `Container` object output. * @return a `Tool` object */ - def FindWeapon : Option[Tool] = FindContainedWeapon._2 + def FindWeapon: Option[Tool] = FindContainedWeapon._2 /** * Get the current `Vehicle` object that the player is riding/driving. * The vehicle must be found solely through use of `player.VehicleSeated`. * @return the vehicle */ - def FindLocalVehicle : Option[Vehicle] = { + def FindLocalVehicle: Option[Vehicle] = { player.VehicleSeated match { case Some(vehicle_guid) => continent.GUID(vehicle_guid) match { - case Some(obj : Vehicle) => + case Some(obj: Vehicle) => Some(obj) case _ => None @@ -6697,7 +7461,7 @@ class WorldSessionActor extends Actor * @param reloadValue the value to modify the `AmmoBox`; * subtracted from the current `Capacity` of `Box` */ - private def ModifyAmmunition(obj : PlanetSideGameObject with Container)(box : AmmoBox, reloadValue : Int) : Unit = { + private def ModifyAmmunition(obj: PlanetSideGameObject with Container)(box: AmmoBox, reloadValue: Int): Unit = { val capacity = box.Capacity - reloadValue box.Capacity = capacity sendResponse(InventoryStateMessage(box.GUID, obj.GUID, capacity)) @@ -6711,11 +7475,20 @@ class WorldSessionActor extends Actor * @param reloadValue the value to modify the `AmmoBox`; * subtracted from the current `Capacity` of `Box` */ - private def ModifyAmmunitionInVehicle(obj : Vehicle)(box : AmmoBox, reloadValue : Int) : Unit = { + private def ModifyAmmunitionInVehicle(obj: Vehicle)(box: AmmoBox, reloadValue: Int): Unit = { val capacity = ModifyAmmunition(obj)(box, reloadValue) obj.Find(box) match { case Some(index) => - continent.VehicleEvents ! VehicleServiceMessage(s"${obj.Actor}", VehicleAction.InventoryState(player.GUID, box, obj.GUID, index, box.Definition.Packet.DetailedConstructorData(box).get)) + continent.VehicleEvents ! VehicleServiceMessage( + s"${obj.Actor}", + VehicleAction.InventoryState( + player.GUID, + box, + obj.GUID, + index, + box.Definition.Packet.DetailedConstructorData(box).get + ) + ) case None => ; } } @@ -6725,28 +7498,32 @@ class WorldSessionActor extends Actor * @param tool na * @param obj na */ - def PerformToolAmmoChange(tool : Tool, obj : PlanetSideGameObject with Container) : Unit = { + def PerformToolAmmoChange(tool: Tool, obj: PlanetSideGameObject with Container): Unit = { val originalAmmoType = tool.AmmoType do { val requestedAmmoType = tool.NextAmmoType - val fullMagazine = tool.MaxMagazine - if(requestedAmmoType != tool.AmmoSlot.Box.AmmoType) { + val fullMagazine = tool.MaxMagazine + if (requestedAmmoType != tool.AmmoSlot.Box.AmmoType) { FindEquipmentStock(obj, FindAmmoBoxThatUses(requestedAmmoType), fullMagazine, CountAmmunition).reverse match { case Nil => ; case x :: xs => - val (deleteFunc, modifyFunc) : (Equipment=>Future[Any], (AmmoBox, Int) => Unit) = obj match { - case (veh : Vehicle) => + val (deleteFunc, modifyFunc): (Equipment => Future[Any], (AmmoBox, Int) => Unit) = obj match { + case (veh: Vehicle) => (RemoveOldEquipmentFromInventory(veh, taskResolver), ModifyAmmunitionInVehicle(veh)) - case o : PlanetSideServerObject with Container => + case o: PlanetSideServerObject with Container => (RemoveOldEquipmentFromInventory(o, taskResolver), ModifyAmmunition(o)) case _ => - throw new Exception("PerformToolAmmoChange: (remove/modify) should be a server object, not a regular game object") + throw new Exception( + "PerformToolAmmoChange: (remove/modify) should be a server object, not a regular game object" + ) } - val (stowNewFunc, stowFunc) : (Equipment=>TaskResolver.GiveTask, Equipment=>Future[Any]) = obj match { - case o : PlanetSideServerObject with Container => + val (stowNewFunc, stowFunc): (Equipment => TaskResolver.GiveTask, Equipment => Future[Any]) = obj match { + case o: PlanetSideServerObject with Container => (PutNewEquipmentInInventoryOrDrop(o), PutEquipmentInInventoryOrDrop(o)) case _ => - throw new Exception("PerformToolAmmoChange: (new/put) should be a server object, not a regular game object") + throw new Exception( + "PerformToolAmmoChange: (new/put) should be a server object, not a regular game object" + ) } xs.foreach(item => { obj.Inventory -= x.start @@ -6754,11 +7531,12 @@ class WorldSessionActor extends Actor }) //box will be the replacement ammo; give it the discovered magazine and load it into the weapon @ 0 - val box = x.obj.asInstanceOf[AmmoBox] + val box = x.obj.asInstanceOf[AmmoBox] val originalBoxCapacity = box.Capacity - val tailReloadValue : Int = if(xs.isEmpty) { 0 } else { xs.map(_.obj.asInstanceOf[AmmoBox].Capacity).reduceLeft(_ + _) } - val sumReloadValue : Int = originalBoxCapacity + tailReloadValue - val previousBox = tool.AmmoSlot.Box //current magazine in tool + val tailReloadValue: Int = if (xs.isEmpty) { 0 } + else { xs.map(_.obj.asInstanceOf[AmmoBox].Capacity).reduceLeft(_ + _) } + val sumReloadValue: Int = originalBoxCapacity + tailReloadValue + val previousBox = tool.AmmoSlot.Box //current magazine in tool sendResponse(ObjectDetachMessage(tool.GUID, previousBox.GUID, Vector3.Zero, 0f)) sendResponse(ObjectDetachMessage(player.GUID, box.GUID, Vector3.Zero, 0f)) obj.Inventory -= x.start //remove replacement ammo from inventory @@ -6768,32 +7546,46 @@ class WorldSessionActor extends Actor //announce swapped ammunition box in weapon val previous_box_guid = previousBox.GUID - val boxDef = box.Definition - val box_guid = box.GUID - val tool_guid = tool.GUID + val boxDef = box.Definition + val box_guid = box.GUID + val tool_guid = tool.GUID sendResponse(ChangeAmmoMessage(tool_guid, box.Capacity)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeAmmo(player.GUID, tool_guid, ammoSlotIndex,previous_box_guid, boxDef.ObjectId, box.GUID, boxDef.Packet.ConstructorData(box).get)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeAmmo( + player.GUID, + tool_guid, + ammoSlotIndex, + previous_box_guid, + boxDef.ObjectId, + box.GUID, + boxDef.Packet.ConstructorData(box).get + ) + ) //handle inventory contents - box.Capacity = (if(sumReloadValue <= fullMagazine) { - sumReloadValue - } - else { - val splitReloadAmmo : Int = sumReloadValue - fullMagazine - log.info(s"ChangeAmmo: taking ${originalBoxCapacity - splitReloadAmmo} from a box of ${originalBoxCapacity} $requestedAmmoType") - val boxForInventory = AmmoBox(box.Definition, splitReloadAmmo) - taskResolver ! stowNewFunc(boxForInventory) - fullMagazine - }) - sendResponse(InventoryStateMessage(box.GUID, tool.GUID, box.Capacity)) //should work for both players and vehicles + box.Capacity = (if (sumReloadValue <= fullMagazine) { + sumReloadValue + } else { + val splitReloadAmmo: Int = sumReloadValue - fullMagazine + log.info( + s"ChangeAmmo: taking ${originalBoxCapacity - splitReloadAmmo} from a box of ${originalBoxCapacity} $requestedAmmoType" + ) + val boxForInventory = AmmoBox(box.Definition, splitReloadAmmo) + taskResolver ! stowNewFunc(boxForInventory) + fullMagazine + }) + sendResponse( + InventoryStateMessage(box.GUID, tool.GUID, box.Capacity) + ) //should work for both players and vehicles log.info(s"ChangeAmmo: loading ${box.Capacity} $requestedAmmoType into ${tool.GUID} @ $ammoSlotIndex") - if(previousBox.Capacity > 0) { + if (previousBox.Capacity > 0) { //divide capacity across other existing and not full boxes of that ammo type var capacity = previousBox.Capacity val iter = obj.Inventory.Items .filter(entry => { entry.obj match { - case (item : AmmoBox) => + case (item: AmmoBox) => item.AmmoType == originalAmmoType && item.FullCapacity != item.Capacity case _ => false @@ -6802,9 +7594,9 @@ class WorldSessionActor extends Actor .toList .sortBy(_.start) .iterator - while(capacity > 0 && iter.hasNext) { - val entry = iter.next - val item : AmmoBox = entry.obj.asInstanceOf[AmmoBox] + while (capacity > 0 && iter.hasNext) { + val entry = iter.next + val item: AmmoBox = entry.obj.asInstanceOf[AmmoBox] val ammoAllocated = math.min(item.FullCapacity - item.Capacity, capacity) log.info(s"ChangeAmmo: putting $ammoAllocated back into a box of ${item.Capacity} $originalAmmoType") capacity -= ammoAllocated @@ -6813,7 +7605,7 @@ class WorldSessionActor extends Actor previousBox.Capacity = capacity } - if(previousBox.Capacity > 0) { + if (previousBox.Capacity > 0) { //split previousBox into AmmoBox objects of appropriate max capacity, e.g., 100 9mm -> 2 x 50 9mm obj.Inventory.Fit(previousBox) match { case Some(_) => @@ -6822,19 +7614,17 @@ class WorldSessionActor extends Actor NormalItemDrop(player, continent)(previousBox) } AmmoBox.Split(previousBox) match { - case Nil | List(_) => ; //done (the former case is technically not possible) + case Nil | List(_) => ; //done (the former case is technically not possible) case _ :: xs => modifyFunc(previousBox, 0) //update to changed capacity value xs.foreach(box => { taskResolver ! stowNewFunc(box) }) } - } - else { + } else { taskResolver ! GUIDTask.UnregisterObjectTask(previousBox)(continent.GUID) } } } - } - while(tool.AmmoType != originalAmmoType && tool.AmmoType != tool.AmmoSlot.Box.AmmoType) + } while (tool.AmmoType != originalAmmoType && tool.AmmoType != tool.AmmoSlot.Box.AmmoType) } /** @@ -6848,7 +7638,7 @@ class WorldSessionActor extends Actor * curried for callback * @param item the item */ - def NormalItemDrop(obj : PlanetSideServerObject with Container, zone : Zone)(item : Equipment) : Unit = { + def NormalItemDrop(obj: PlanetSideServerObject with Container, zone: Zone)(item: Equipment): Unit = { zone.Ground.tell(Zone.Ground.DropItem(item, obj.Position, Vector3.z(obj.Orientation.z)), obj.Actor) } @@ -6861,19 +7651,20 @@ class WorldSessionActor extends Actor * curried for callback * @param item the item */ - def NewItemDrop(obj : PlanetSideServerObject with Container, zone : Zone)(item : Equipment) : TaskResolver.GiveTask = { + def NewItemDrop(obj: PlanetSideServerObject with Container, zone: Zone)(item: Equipment): TaskResolver.GiveTask = { TaskResolver.GiveTask( new Task() { - private val localItem = item - private val localFunc : (Equipment)=>Unit = NormalItemDrop(obj, zone) + private val localItem = item + private val localFunc: (Equipment) => Unit = NormalItemDrop(obj, zone) - override def Description : String = s"dropping a new ${localItem.Definition.Name} on the ground" + override def Description: String = s"dropping a new ${localItem.Definition.Name} on the ground" - def Execute(resolver : ActorRef) : Unit = { + def Execute(resolver: ActorRef): Unit = { localFunc(localItem) - resolver ! scala.util.Success(this) + resolver ! Success(this) } - }, List(GUIDTask.RegisterEquipment(item)(zone.GUID)) + }, + List(GUIDTask.RegisterEquipment(item)(zone.GUID)) ) } @@ -6881,10 +7672,10 @@ class WorldSessionActor extends Actor * After a weapon has finished shooting, determine if it needs to be sorted in a special way. * @param tool a weapon */ - def FireCycleCleanup(tool : Tool) : Unit = { + def FireCycleCleanup(tool: Tool): Unit = { //TODO replaced by more appropriate functionality in the future val tdef = tool.Definition - if(GlobalDefinitions.isGrenade(tdef)) { + if (GlobalDefinitions.isGrenade(tdef)) { val ammoType = tool.AmmoType FindEquipmentStock(player, FindToolThatUses(ammoType), 3, CountGrenades).reverse match { //do not search sidearm holsters case Nil => @@ -6893,22 +7684,24 @@ class WorldSessionActor extends Actor case x :: xs => //this is similar to ReloadMessage val box = x.obj.asInstanceOf[Tool] - val tailReloadValue : Int = if(xs.isEmpty) { 0 } else { xs.map(_.obj.asInstanceOf[Tool].Magazine).reduce(_ + _) } - val sumReloadValue : Int = box.Magazine + tailReloadValue - val actualReloadValue = (if(sumReloadValue <= 3) { - RemoveOldEquipmentFromInventory(player, taskResolver)(x.obj) - sumReloadValue - } - else { - ModifyAmmunition(player)(box.AmmoSlot.Box, 3 - tailReloadValue) - 3 - }) + val tailReloadValue: Int = if (xs.isEmpty) { 0 } + else { xs.map(_.obj.asInstanceOf[Tool].Magazine).reduce(_ + _) } + val sumReloadValue: Int = box.Magazine + tailReloadValue + val actualReloadValue = (if (sumReloadValue <= 3) { + RemoveOldEquipmentFromInventory(player, taskResolver)(x.obj) + sumReloadValue + } else { + ModifyAmmunition(player)(box.AmmoSlot.Box, 3 - tailReloadValue) + 3 + }) log.info(s"found $actualReloadValue more $ammoType grenades to throw") - ModifyAmmunition(player)(tool.AmmoSlot.Box, -actualReloadValue) //grenade item already in holster (negative because empty) + ModifyAmmunition(player)( + tool.AmmoSlot.Box, + -actualReloadValue + ) //grenade item already in holster (negative because empty) xs.foreach(item => { RemoveOldEquipmentFromInventory(player, taskResolver)(item.obj) }) } - } - else if(tdef == GlobalDefinitions.phoenix) { + } else if (tdef == GlobalDefinitions.phoenix) { RemoveOldEquipmentFromInventory(player, taskResolver)(tool) } } @@ -6921,8 +7714,10 @@ class WorldSessionActor extends Actor * the first value is the container that matched correctly with the object's GUID; * the second value is the slot position of the object */ - def FindInLocalContainer(object_guid : PlanetSideGUID)(parent : PlanetSideServerObject with Container) : Option[(PlanetSideServerObject with Container, Option[Int])] = { - val slot : Option[Int] = parent.Find(object_guid) + def FindInLocalContainer( + object_guid: PlanetSideGUID + )(parent: PlanetSideServerObject with Container): Option[(PlanetSideServerObject with Container, Option[Int])] = { + val slot: Option[Int] = parent.Find(object_guid) slot match { case place @ Some(_) => Some(parent, slot) @@ -6935,7 +7730,7 @@ class WorldSessionActor extends Actor * Perform specific operations depending on the target of deployment. * @param obj the object that has had its deployment state changed */ - def DeploymentActivities(obj : Deployment.DeploymentObject) : Unit = { + def DeploymentActivities(obj: Deployment.DeploymentObject): Unit = { DeploymentActivities(obj, obj.DeploymentState) } @@ -6944,12 +7739,12 @@ class WorldSessionActor extends Actor * @param obj the object that has had its deployment state changed * @param state the new deployment state */ - def DeploymentActivities(obj : Deployment.DeploymentObject, state : DriveState.Value) : Unit = { + def DeploymentActivities(obj: Deployment.DeploymentObject, state: DriveState.Value): Unit = { obj match { - case vehicle : Vehicle => + case vehicle: Vehicle => Vehicles.ReloadAccessPermissions(vehicle, player.Name) //TODO we should not have to do this imho //ams - if(vehicle.Definition == GlobalDefinitions.ams) { + if (vehicle.Definition == GlobalDefinitions.ams) { state match { case DriveState.Deployed => continent.VehicleEvents ! VehicleServiceMessage.AMSDeploymentChange(continent) @@ -6958,59 +7753,84 @@ class WorldSessionActor extends Actor continent.VehicleEvents ! VehicleServiceMessage.AMSDeploymentChange(continent) sendResponse(PlanetsideAttributeMessage(vehicle.GUID, 81, 0)) case DriveState.Mobile | DriveState.State7 => - case _ => ; + case _ => ; } } //ant - else if(vehicle.Definition == GlobalDefinitions.ant) { + else if (vehicle.Definition == GlobalDefinitions.ant) { state match { case DriveState.Deployed => // We only want this WorldSessionActor (not other player's WorldSessionActor) to manage timers - if(vehicle.Seats(0).Occupant.contains(player)){ + if (vehicle.Seats(0).Occupant.contains(player)) { // Start ntu regeneration // If vehicle sends UseItemMessage with silo as target NTU regeneration will be disabled and orb particles will be disabled - antChargingTick = context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuCharging(player, vehicle)) + antChargingTick = + context.system.scheduler.scheduleOnce(1000 milliseconds, self, NtuCharging(player, vehicle)) } case DriveState.Undeploying => // We only want this WorldSessionActor (not other player's WorldSessionActor) to manage timers - if(vehicle.Seats(0).Occupant.contains(player)){ + if (vehicle.Seats(0).Occupant.contains(player)) { antChargingTick.cancel() // Stop charging NTU if charging } - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 0L)) // panel glow off - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 0L)) // orb particles off + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 52, 0L) + ) // panel glow off + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(vehicle.GUID, 49, 0L) + ) // orb particles off case DriveState.Mobile | DriveState.State7 | DriveState.Deploying => - case _ => ; + case _ => ; } } //router - else if(vehicle.Definition == GlobalDefinitions.router) { + else if (vehicle.Definition == GlobalDefinitions.router) { state match { case DriveState.Deploying => vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => util.Active = true case _ => - log.warn(s"DeploymentActivities: could not find internal telepad in router@${vehicle.GUID.guid} while $state") + log.warn( + s"DeploymentActivities: could not find internal telepad in router@${vehicle.GUID.guid} while $state" + ) } case DriveState.Deployed => //let the timer do all the work - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.ToggleTeleportSystem(PlanetSideGUID(0), vehicle, TelepadLike.AppraiseTeleportationSystem(vehicle, continent))) + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.ToggleTeleportSystem( + PlanetSideGUID(0), + vehicle, + TelepadLike.AppraiseTeleportationSystem(vehicle, continent) + ) + ) case DriveState.Undeploying => //deactivate internal router before trying to reset the system vehicle.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => //any telepads linked with internal mechanism must be deconstructed continent.GUID(util.Telepad) match { - case Some(telepad : TelepadDeployable) => - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(telepad), continent)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(telepad, continent, Some(0 milliseconds))) + case Some(telepad: TelepadDeployable) => + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.ClearSpecific(List(telepad), continent) + ) + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(telepad, continent, Some(0 milliseconds)) + ) case Some(_) | None => ; } util.Active = false - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.ToggleTeleportSystem(PlanetSideGUID(0), vehicle, None)) + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.ToggleTeleportSystem(PlanetSideGUID(0), vehicle, None) + ) case _ => - log.warn(s"DeploymentActivities: could not find internal telepad in router@${vehicle.GUID.guid} while $state") + log.warn( + s"DeploymentActivities: could not find internal telepad in router@${vehicle.GUID.guid} while $state" + ) } case _ => ; } @@ -7025,14 +7845,20 @@ class WorldSessionActor extends Actor * @param state the `DriveState` that could not be promoted * @param reason a string explaining why the state can not or will not change */ - def CanNotChangeDeployment(obj : PlanetSideServerObject with Deployment, state : DriveState.Value, reason : String) : Unit = { - val mobileShift : String = if(obj.DeploymentState != DriveState.Mobile) { + def CanNotChangeDeployment( + obj: PlanetSideServerObject with Deployment, + state: DriveState.Value, + reason: String + ): Unit = { + val mobileShift: String = if (obj.DeploymentState != DriveState.Mobile) { obj.DeploymentState = DriveState.Mobile sendResponse(DeployRequestMessage(player.GUID, obj.GUID, DriveState.Mobile, 0, false, Vector3.Zero)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DeployRequest(player.GUID, obj.GUID, DriveState.Mobile, 0, false, Vector3.Zero)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DeployRequest(player.GUID, obj.GUID, DriveState.Mobile, 0, false, Vector3.Zero) + ) "; enforcing Mobile deployment state" - } - else { + } else { "" } log.error(s"DeployRequest: $obj can not transition to $state - $reason$mobileShift") @@ -7044,7 +7870,7 @@ class WorldSessionActor extends Actor * @param buildingNumber the building id * @param building the building object */ - def initBuilding(continentNumber : Int, buildingNumber : Int, building : Building) : Unit = { + def initBuilding(continentNumber: Int, buildingNumber: Int, building: Building): Unit = { building.BuildingType match { case StructureType.WarpGate => initGate(continentNumber, buildingNumber, building) @@ -7065,32 +7891,54 @@ class WorldSessionActor extends Actor * @param buildingNumber the building id * @param building the building object */ - def initFacility(continentNumber : Int, buildingNumber : Int, building : Building) : Unit = { + def initFacility(continentNumber: Int, buildingNumber: Int, building: Building): Unit = { val ( ntuLevel, - isHacked, empireHack, hackTimeRemaining, controllingEmpire, - unk1, unk1x, - generatorState, spawnTubesNormal, forceDomeActive, - latticeBenefit, cavernBenefit, - unk4, unk5, unk6, - unk7, unk7x, - boostSpawnPain, boostGeneratorPain - ) = building.Info + isHacked, + empireHack, + hackTimeRemaining, + controllingEmpire, + unk1, + unk1x, + generatorState, + spawnTubesNormal, + forceDomeActive, + latticeBenefit, + cavernBenefit, + unk4, + unk5, + unk6, + unk7, + unk7x, + boostSpawnPain, + boostGeneratorPain + ) = building.Info sendResponse( BuildingInfoUpdateMessage( building.Zone.Number, building.MapId, ntuLevel, - isHacked, empireHack, hackTimeRemaining, controllingEmpire, - unk1, unk1x, - generatorState, spawnTubesNormal, forceDomeActive, - latticeBenefit, cavernBenefit, - unk4, unk5, unk6, - unk7, unk7x, - boostSpawnPain, boostGeneratorPain + isHacked, + empireHack, + hackTimeRemaining, + controllingEmpire, + unk1, + unk1x, + generatorState, + spawnTubesNormal, + forceDomeActive, + latticeBenefit, + cavernBenefit, + unk4, + unk5, + unk6, + unk7, + unk7x, + boostSpawnPain, + boostGeneratorPain ) ) - sendResponse(DensityLevelUpdateMessage(continentNumber, buildingNumber, List(0,0, 0,0, 0,0, 0,0))) + sendResponse(DensityLevelUpdateMessage(continentNumber, buildingNumber, List(0, 0, 0, 0, 0, 0, 0, 0))) } /** @@ -7104,9 +7952,9 @@ class WorldSessionActor extends Actor * @param buildingNumber the building id * @param building the building object */ - def initGate(continentNumber : Int, buildingNumber : Int, building : Building) : Unit = { + def initGate(continentNumber: Int, buildingNumber: Int, building: Building): Unit = { building match { - case wg : WarpGate => + case wg: WarpGate => sendResponse( BuildingInfoUpdateMessage( building.Zone.Number, @@ -7132,7 +7980,7 @@ class WorldSessionActor extends Actor boost_generator_pain = false ) ) - sendResponse(DensityLevelUpdateMessage(continentNumber, buildingNumber, List(0,0, 0,0, 0,0, 0,0))) + sendResponse(DensityLevelUpdateMessage(continentNumber, buildingNumber, List(0, 0, 0, 0, 0, 0, 0, 0))) //TODO one faction knows which gates are broadcast for another faction? sendResponse( BroadcastWarpgateUpdateMessage( @@ -7155,18 +8003,18 @@ class WorldSessionActor extends Actor * `HackMessage` * @param zone the zone being loaded */ - def configZone(zone : Zone) : Unit = { + def configZone(zone: Zone): Unit = { zone.Buildings.values.foreach(building => { sendResponse(SetEmpireMessage(building.GUID, building.Faction)) // Synchronise capitol force dome state - if(building.IsCapitol && building.ForceDomeActive) { + if (building.IsCapitol && building.ForceDomeActive) { sendResponse(GenericObjectActionMessage(building.GUID, 13)) } // Synchronise amenities building.Amenities.collect { case obj if obj.Destroyed => configAmenityAsDestroyed(obj) - case obj => configAmenityAsWorking(obj) + case obj => configAmenityAsWorking(obj) } Thread.sleep(connectionState) }) @@ -7187,34 +8035,34 @@ class WorldSessionActor extends Actor * @see `VitalityDefinition.Damageable` * @param amenity the facility object */ - def configAmenityAsWorking(amenity : Amenity) : Unit = { + def configAmenityAsWorking(amenity: Amenity): Unit = { val amenityId = amenity.GUID //sync model access state sendResponse(PlanetsideAttributeMessage(amenityId, 50, 0)) sendResponse(PlanetsideAttributeMessage(amenityId, 51, 0)) //sync damageable, if val health = amenity.Health - if(amenity.Definition.Damageable && health < amenity.MaxHealth) { + if (amenity.Definition.Damageable && health < amenity.MaxHealth) { sendResponse(PlanetsideAttributeMessage(amenityId, 0, health)) } //sync special object type cases amenity match { - case silo : ResourceSilo => + case silo: ResourceSilo => //silo capacity sendResponse(PlanetsideAttributeMessage(amenityId, 45, silo.CapacitorDisplay)) //warning lights - sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, if(silo.LowNtuWarningOn) 1 else 0)) - if(silo.ChargeLevel == 0) { + sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, if (silo.LowNtuWarningOn) 1 else 0)) + if (silo.ChargeLevel == 0) { sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 48, 1)) } - case door : Door if door.isOpen => + case door: Door if door.isOpen => sendResponse(GenericObjectStateMsg(amenityId, 16)) case _ => ; } //sync hack state amenity match { - case obj : Hackable if obj.HackedBy.nonEmpty => + case obj: Hackable if obj.HackedBy.nonEmpty => amenity.Definition match { case GlobalDefinitions.capture_terminal => HackCaptureTerminal(amenity.GUID, 0L, 0L, false) @@ -7234,18 +8082,18 @@ class WorldSessionActor extends Actor * @see `PlanetSideGameObject.Destroyed` * @param amenity the facility object */ - def configAmenityAsDestroyed(amenity : Amenity) : Unit = { + def configAmenityAsDestroyed(amenity: Amenity): Unit = { val amenityId = amenity.GUID val configValue = amenity match { - case _ : ImplantTerminalMech => 0 - case _ : Generator => 0 - case _ => 1 + case _: ImplantTerminalMech => 0 + case _: Generator => 0 + case _ => 1 } //sync model access state sendResponse(PlanetsideAttributeMessage(amenityId, 50, configValue)) sendResponse(PlanetsideAttributeMessage(amenityId, 51, configValue)) //sync damageable, if - if(amenity.Definition.Damageable) { + if (amenity.Definition.Damageable) { sendResponse(PlanetsideAttributeMessage(amenityId, 0, 0)) } } @@ -7256,7 +8104,7 @@ class WorldSessionActor extends Actor * @param unk1 na * @param unk2 na */ - def HackObject(target_guid : PlanetSideGUID, unk1 : Long, unk2 : Long) : Unit = { + def HackObject(target_guid: PlanetSideGUID, unk1: Long, unk2: Long): Unit = { sendResponse(HackMessage(0, target_guid, PlanetSideGUID(0), 100, unk1, HackState.Hacked, unk2)) } @@ -7267,18 +8115,18 @@ class WorldSessionActor extends Actor * @param unk2 na * @param isResecured na */ - def HackCaptureTerminal(target_guid : PlanetSideGUID, unk1 : Long, unk2 : Long, isResecured : Boolean) : Unit = { + def HackCaptureTerminal(target_guid: PlanetSideGUID, unk1: Long, unk2: Long, isResecured: Boolean): Unit = { var value = 0L - if(isResecured) { + if (isResecured) { value = 17039360L sendResponse(PlanetsideAttributeMessage(target_guid, 20, value)) - } - else { + } else { continent.GUID(target_guid) match { - case Some(capture_terminal : Amenity with Hackable) => + case Some(capture_terminal: Amenity with Hackable) => capture_terminal.HackedBy match { case Some(Hackable.HackInfo(_, _, hfaction, _, start, length)) => - val hack_time_remaining_ms = TimeUnit.MILLISECONDS.convert(math.max(0, start + length - System.nanoTime), TimeUnit.NANOSECONDS) + val hack_time_remaining_ms = + TimeUnit.MILLISECONDS.convert(math.max(0, start + length - System.nanoTime), TimeUnit.NANOSECONDS) val deciseconds_remaining = (hack_time_remaining_ms / 100) //See PlanetSideAttributeMessage #20 documentation for an explanation of how the timer is calculated val start_num = hfaction match { @@ -7289,15 +8137,21 @@ class WorldSessionActor extends Actor value = start_num + deciseconds_remaining sendResponse(PlanetsideAttributeMessage(target_guid, 20, value)) GetMountableAndSeat(None, player, continent) match { - case (Some(mountable : Amenity), Some(seat)) if mountable.Owner.GUID == capture_terminal.Owner.GUID => + case (Some(mountable: Amenity), Some(seat)) if mountable.Owner.GUID == capture_terminal.Owner.GUID => mountable.Seats(seat).Occupant = None player.VehicleSeated = None - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.KickPassenger(player.GUID, seat, true, mountable.GUID)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.KickPassenger(player.GUID, seat, true, mountable.GUID) + ) case _ => ; } case _ => log.warn("HackCaptureTerminal: hack state monitor not defined") } - case _ => log.warn(s"HackCaptureTerminal: couldn't find capture terminal with GUID ${target_guid} in zone ${continent.Id}") + case _ => + log.warn( + s"HackCaptureTerminal: couldn't find capture terminal with GUID ${target_guid} in zone ${continent.Id}" + ) } } } @@ -7308,7 +8162,7 @@ class WorldSessionActor extends Actor * `PlayerSuicide` * @param tplayer the player to be killed */ - def Suicide(tplayer : Player) : Unit = { + def Suicide(tplayer: Player): Unit = { tplayer.History(PlayerSuicide(PlayerSource(tplayer))) tplayer.Actor ! Player.Die() } @@ -7323,14 +8177,14 @@ class WorldSessionActor extends Actor * - if the player is anchored
* This is not a complete list but, for the purpose of enforcement, some pointers will be documented here. */ - def PlayerActionsToCancel() : Unit = { + def PlayerActionsToCancel(): Unit = { progressBarUpdate.cancel progressBarValue = None lastTerminalOrderFulfillment = true player.skipStaminaRegenForTurns = 0 accessedContainer match { - case Some(obj : Vehicle) => - if(obj.AccessingTrunk.contains(player.GUID)) { + case Some(obj: Vehicle) => + if (obj.AccessingTrunk.contains(player.GUID)) { obj.AccessingTrunk = None UnAccessContents(obj) } @@ -7344,16 +8198,19 @@ class WorldSessionActor extends Actor prefire.orElse(shooting) match { case Some(guid) => sendResponse(ChangeFireStateMessage_Stop(guid)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, guid)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, guid) + ) prefire = None shooting = None case None => ; } - if(flying) { + if (flying) { sendResponse(ChatMsg(ChatMessageType.CMT_FLY, false, "", "off", None)) flying = false } - if(speed > 1) { + if (speed > 1) { sendResponse(ChatMsg(ChatMessageType.CMT_SPEED, false, "", "1.000", None)) speed = 1f } @@ -7381,32 +8238,32 @@ class WorldSessionActor extends Actor * @see `Vehicles.Own` * @see `Vehicles.ReloadAccessPermissions` */ - def AvatarCreate() : Unit = { - val health = player.Health - val armor = player.Armor + def AvatarCreate(): Unit = { + val health = player.Health + val armor = player.Armor val stamina = player.Stamina player.Spawn - if(health != 0) { + if (health != 0) { player.Health = health player.Armor = armor player.Stamina = stamina } GetKnownVehicleAndSeat() match { - case (Some(vehicle : Vehicle), Some(seat : Int)) => + case (Some(vehicle: Vehicle), Some(seat: Int)) => //if the vehicle is the cargo of another vehicle in this zone val carrierInfo = continent.GUID(vehicle.MountedIn) match { - case Some(carrier : Vehicle) => - (Some(carrier), carrier.CargoHolds.find({ case (index, hold) => hold.Occupant.contains(vehicle)})) + case Some(carrier: Vehicle) => + (Some(carrier), carrier.CargoHolds.find({ case (index, hold) => hold.Occupant.contains(vehicle) })) case _ => (None, None) } //vehicle and driver/passenger interstellarFerry = None - val vdef = vehicle.Definition + val vdef = vehicle.Definition val vguid = vehicle.GUID vehicle.Position = shiftPosition.getOrElse(vehicle.Position) vehicle.Orientation = shiftOrientation.getOrElse(vehicle.Orientation) - val vdata = if(seat == 0) { + val vdata = if (seat == 0) { //driver continent.Transport ! Zone.Vehicle.Spawn(vehicle) //as the driver, we must temporarily exclude ourselves from being in the vehicle during its creation @@ -7419,7 +8276,10 @@ class WorldSessionActor extends Actor vehicle.CargoHolds.values .collect { case hold if hold.isOccupied => hold.Occupant.get } .foreach { _.MountedIn = vguid } - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.LoadVehicle(player.GUID, vehicle, vdef.ObjectId, vguid, data)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.LoadVehicle(player.GUID, vehicle, vdef.ObjectId, vguid, data) + ) carrierInfo match { case (Some(carrier), Some((index, _))) => CargoBehavior.CargoMountBehaviorForOthers(carrier, vehicle, index, player.GUID) @@ -7427,8 +8287,7 @@ class WorldSessionActor extends Actor vehicle.MountedIn = None } data - } - else { + } else { //passenger //non-drivers are not rendered in the vehicle at this time val data = vdef.Packet.ConstructorData(vehicle).get @@ -7442,12 +8301,17 @@ class WorldSessionActor extends Actor } val originalSeated = player.VehicleSeated player.VehicleSeated = vguid - if(Vehicles.AllGatedOccupantsInSameZone(vehicle)) { + if (Vehicles.AllGatedOccupantsInSameZone(vehicle)) { //do not dispatch delete action if any hierarchical occupant has not gotten this far through the summoning process val vehicleToDelete = interstellarFerryTopLevelGUID.orElse(originalSeated).getOrElse(PlanetSideGUID(0)) - val zone = vehicle.PreviousGatingManifest().get.origin - zone.VehicleEvents ! VehicleServiceMessage(zone.Id, VehicleAction.UnloadVehicle(player.GUID, zone, vehicle, vehicleToDelete)) - log.info(s"AvatarCreate: cleaning up ghost of transitioning vehicle ${vehicle.Definition.Name}@${vehicleToDelete.guid} in zone ${zone.Id}") + val zone = vehicle.PreviousGatingManifest().get.origin + zone.VehicleEvents ! VehicleServiceMessage( + zone.Id, + VehicleAction.UnloadVehicle(player.GUID, zone, vehicle, vehicleToDelete) + ) + log.info( + s"AvatarCreate: cleaning up ghost of transitioning vehicle ${vehicle.Definition.Name}@${vehicleToDelete.guid} in zone ${zone.Id}" + ) } Vehicles.ReloadAccessPermissions(vehicle, player.Name) //log.info(s"AvatarCreate (vehicle): $guid -> $data") @@ -7456,10 +8320,13 @@ class WorldSessionActor extends Actor case _ => player.VehicleSeated = None val packet = player.Definition.Packet - val data = packet.DetailedConstructorData(player).get - val guid = player.GUID + val data = packet.DetailedConstructorData(player).get + val guid = player.GUID sendResponse(ObjectCreateDetailedMessage(ObjectClass.avatar, guid, data)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.LoadPlayer(guid, ObjectClass.avatar, guid, packet.ConstructorData(player).get, None)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.LoadPlayer(guid, ObjectClass.avatar, guid, packet.ConstructorData(player).get, None) + ) //log.info(s"AvatarCreate: $guid -> $data") log.trace(s"AvatarCreate: ${player.Name}") } @@ -7481,9 +8348,13 @@ class WorldSessionActor extends Actor * if and only if the vehicle is known to this client and the `WorldSessioNActor`-global `player` occupies it; * `(None, None)`, otherwise (even if the vehicle can be determined) */ - def GetMountableAndSeat(direct : Option[PlanetSideGameObject with Mountable], occupant : Player, zone : Zone) : (Option[PlanetSideGameObject with Mountable], Option[Int]) = + def GetMountableAndSeat( + direct: Option[PlanetSideGameObject with Mountable], + occupant: Player, + zone: Zone + ): (Option[PlanetSideGameObject with Mountable], Option[Int]) = direct.orElse(zone.GUID(occupant.VehicleSeated)) match { - case Some(obj : PlanetSideGameObject with Mountable) => + case Some(obj: PlanetSideGameObject with Mountable) => obj.PassengerInSeat(occupant) match { case index @ Some(_) => (Some(obj), index) @@ -7508,10 +8379,11 @@ class WorldSessionActor extends Actor * if and only if the vehicle is known to this client and the `WorldSessioNActor`-global `player` occupies it; * `(None, None)`, otherwise (even if the vehicle can be determined) */ - def GetKnownVehicleAndSeat() : (Option[Vehicle], Option[Int]) = GetMountableAndSeat(interstellarFerry, player, continent) match { - case (Some(v : Vehicle), Some(seat)) => (Some(v), Some(seat)) - case _ => (None, None) - } + def GetKnownVehicleAndSeat(): (Option[Vehicle], Option[Int]) = + GetMountableAndSeat(interstellarFerry, player, continent) match { + case (Some(v: Vehicle), Some(seat)) => (Some(v), Some(seat)) + case _ => (None, None) + } /** * If the player is seated in a vehicle, find that vehicle and get the seat index number at which the player is sat. @@ -7520,10 +8392,11 @@ class WorldSessionActor extends Actor * if and only if the vehicle is known to this client and the `WorldSessioNActor`-global `player` occupies it; * `(None, None)`, otherwise (even if the vehicle can be determined) */ - def GetVehicleAndSeat() : (Option[Vehicle], Option[Int]) = GetMountableAndSeat(None, player, continent) match { - case (Some(v : Vehicle), Some(seat)) => (Some(v), Some(seat)) - case _ => (None, None) - } + def GetVehicleAndSeat(): (Option[Vehicle], Option[Int]) = + GetMountableAndSeat(None, player, continent) match { + case (Some(v: Vehicle), Some(seat)) => (Some(v), Some(seat)) + case _ => (None, None) + } /** * Create an avatar character so that avatar's player is mounted in a vehicle's seat. @@ -7543,20 +8416,19 @@ class WorldSessionActor extends Actor * @param vehicle the vehicle the player is riding * @param seat the seat index */ - def AvatarCreateInVehicle(tplayer : Player, vehicle : Vehicle, seat : Int) : Unit = { - val pdef = tplayer.Definition + def AvatarCreateInVehicle(tplayer: Player, vehicle: Vehicle, seat: Int): Unit = { + val pdef = tplayer.Definition val pguid = tplayer.GUID val vguid = vehicle.GUID tplayer.VehicleSeated = None val pdata = pdef.Packet.DetailedConstructorData(tplayer).get tplayer.VehicleSeated = vguid sendResponse(ObjectCreateDetailedMessage(pdef.ObjectId, pguid, pdata)) - if(seat == 0 || vehicle.Seats(seat).ControlledWeapon.nonEmpty) { + if (seat == 0 || vehicle.Seats(seat).ControlledWeapon.nonEmpty) { sendResponse(ObjectAttachMessage(vguid, pguid, seat)) AccessContents(vehicle) UpdateWeaponAtSeatPosition(vehicle, seat) - } - else { + } else { interimUngunnedVehicle = Some(vguid) interimUngunnedVehicleSeat = Some(seat) } @@ -7611,39 +8483,37 @@ class WorldSessionActor extends Actor * @see `UpdateWeaponAtSeatPosition` * @see `Vehicles.ReloadAccessPermissions` */ - def AvatarRejoin() : Unit = { + def AvatarRejoin(): Unit = { GetKnownVehicleAndSeat() match { - case (Some(vehicle : Vehicle), Some(seat : Int)) => + case (Some(vehicle: Vehicle), Some(seat: Int)) => //vehicle and driver/passenger - val vdef = vehicle.Definition + val vdef = vehicle.Definition val vguid = vehicle.GUID - if(seat == 0) { + if (seat == 0) { val seat = vehicle.Seats(0) seat.Occupant = None val vdata = vdef.Packet.ConstructorData(vehicle).get sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, vdata)) seat.Occupant = player - } - else { + } else { val vdata = vdef.Packet.ConstructorData(vehicle).get sendResponse(ObjectCreateMessage(vehicle.Definition.ObjectId, vguid, vdata)) } Vehicles.ReloadAccessPermissions(vehicle, continent.Id) //log.info(s"AvatarCreate (vehicle): $vguid -> $vdata") - val pdef = player.Definition - val pguid = player.GUID + val pdef = player.Definition + val pguid = player.GUID val parent = ObjectCreateMessageParent(vguid, seat) player.VehicleSeated = None val pdata = pdef.Packet.DetailedConstructorData(player).get player.VehicleSeated = vguid sendResponse(ObjectCreateDetailedMessage(pdef.ObjectId, pguid, pdata)) //log.info(s"AvatarRejoin: $vguid -> $vdata") - if(seat == 0 || vehicle.Seats(seat).ControlledWeapon.nonEmpty) { + if (seat == 0 || vehicle.Seats(seat).ControlledWeapon.nonEmpty) { sendResponse(ObjectAttachMessage(vguid, pguid, seat)) AccessContents(vehicle) UpdateWeaponAtSeatPosition(vehicle, seat) - } - else { + } else { interimUngunnedVehicle = Some(vguid) interimUngunnedVehicleSeat = Some(seat) } @@ -7652,8 +8522,8 @@ class WorldSessionActor extends Actor case _ => player.VehicleSeated = None val packet = player.Definition.Packet - val data = packet.DetailedConstructorData(player).get - val guid = player.GUID + val data = packet.DetailedConstructorData(player).get + val guid = player.GUID sendResponse(ObjectCreateDetailedMessage(ObjectClass.avatar, guid, data)) //log.info(s"AvatarRejoin: $guid -> $data") log.trace(s"AvatarRejoin: ${player.Name}") @@ -7671,31 +8541,54 @@ class WorldSessionActor extends Actor * This is called "skill". * @see `AvatarVehicleTimerMessage` */ - def ReloadItemCoolDownTimes() : Unit = { + def ReloadItemCoolDownTimes(): Unit = { val time = System.currentTimeMillis //purchases val lastPurchases = avatar.GetAllLastPurchaseTimes - delayedPurchaseEntries.collect { case (id, delay) if lastPurchases.contains(id) => - val lastTime = lastPurchases.getOrElse(id, 0L) - val delay = delayedPurchaseEntries(id.toInt) - if (time - lastTime < delay) { - sendResponse(AvatarVehicleTimerMessage(player.GUID, player.ObjectTypeNameReference(id), ((delay - (time - lastTime)) / 1000) toInt, true)) - } + delayedPurchaseEntries.collect { + case (id, delay) if lastPurchases.contains(id) => + val lastTime = lastPurchases.getOrElse(id, 0L) + val delay = delayedPurchaseEntries(id.toInt) + if (time - lastTime < delay) { + sendResponse( + AvatarVehicleTimerMessage( + player.GUID, + player.ObjectTypeNameReference(id), + ((delay - (time - lastTime)) / 1000) toInt, + true + ) + ) + } } //uses val lastUses = avatar.GetAllLastUsedTimes - delayedGratificationEntries.collect { case (id, delay) if lastUses.contains(id) => - val lastTime = lastUses.getOrElse(id, 0L) - val delay = delayedGratificationEntries(id.toInt) - if (time - lastTime < delay) { - sendResponse(AvatarVehicleTimerMessage(player.GUID, player.ObjectTypeNameReference(id), ((delay - (time - lastTime)) / 1000) toInt, true)) - } + delayedGratificationEntries.collect { + case (id, delay) if lastUses.contains(id) => + val lastTime = lastUses.getOrElse(id, 0L) + val delay = delayedGratificationEntries(id.toInt) + if (time - lastTime < delay) { + sendResponse( + AvatarVehicleTimerMessage( + player.GUID, + player.ObjectTypeNameReference(id), + ((delay - (time - lastTime)) / 1000) toInt, + true + ) + ) + } } //max exo-suits (specifically) (1 to 3).foreach { subtype => val maxTime = player.GetLastUsedTime(ExoSuitType.MAX, subtype) if (maxTime > 0 && time - maxTime < 300000) { //5min - sendResponse(AvatarVehicleTimerMessage(player.GUID, whenUsedLastMAXName(subtype), 300 - ((time - maxTime) / 1000 toInt), true)) + sendResponse( + AvatarVehicleTimerMessage( + player.GUID, + whenUsedLastMAXName(subtype), + 300 - ((time - maxTime) / 1000 toInt), + true + ) + ) } } } @@ -7707,9 +8600,9 @@ class WorldSessionActor extends Actor * @param tplayer the original player * @return the duplication of the player, in Standard Exo-Suit and with default equipment loadout */ - def RespawnClone(tplayer : Player) : Player = { + def RespawnClone(tplayer: Player): Player = { val faction = tplayer.Faction - val obj = Player.Respawn(tplayer) + val obj = Player.Respawn(tplayer) obj.ResetAllImplants() LoadClassicDefault(obj) obj.death_by = tplayer.death_by @@ -7722,16 +8615,16 @@ class WorldSessionActor extends Actor * MAX's have their primary weapon in the designated slot removed. * @param obj the player to be turned into a corpse */ - def FriskDeadBody(obj : Player) : Unit = { - if(!obj.isAlive) { + def FriskDeadBody(obj: Player): Unit = { + if (!obj.isAlive) { obj.Slot(4).Equipment match { case None => ; case Some(knife) => RemoveOldEquipmentFromInventory(obj, taskResolver)(knife) } obj.Slot(0).Equipment match { - case Some(arms : Tool) => - if(GlobalDefinitions.isMaxArms(arms.Definition)) { + case Some(arms: Tool) => + if (GlobalDefinitions.isMaxArms(arms.Definition)) { RemoveOldEquipmentFromInventory(obj, taskResolver)(arms) } case _ => ; @@ -7740,7 +8633,7 @@ class WorldSessionActor extends Actor val boomers = avatar.Deployables.ClearDeployable(DeployedItem.boomer) boomers.foreach(boomer => { continent.GUID(boomer) match { - case Some(obj : BoomerDeployable) => + case Some(obj: BoomerDeployable) => obj.OwnerName = None continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(obj, continent)) case Some(_) | None => ; @@ -7766,13 +8659,12 @@ class WorldSessionActor extends Actor * @see `Zone.Corpse.Add` * @param tplayer the player */ - def PrepareToTurnPlayerIntoCorpse(tplayer : Player, zone : Zone) : Unit = { + def PrepareToTurnPlayerIntoCorpse(tplayer: Player, zone: Zone): Unit = { tplayer.Release FriskDeadBody(tplayer) - if(!WellLootedDeadBody(tplayer)) { + if (!WellLootedDeadBody(tplayer)) { TurnPlayerIntoCorpse(tplayer, zone) - } - else { + } else { //no items in inventory; leave no corpse val pguid = tplayer.GUID zone.Population ! Zone.Population.Release(avatar) @@ -7796,7 +8688,7 @@ class WorldSessionActor extends Actor * @see `Zone.Population` * @param tplayer the player */ - def TurnPlayerIntoCorpse(tplayer : Player, zone : Zone) : Unit = { + def TurnPlayerIntoCorpse(tplayer: Player, zone: Zone): Unit = { tplayer.Release DepictPlayerAsCorpse(tplayer) zone.Population ! Zone.Corpse.Add(tplayer) @@ -7809,10 +8701,14 @@ class WorldSessionActor extends Actor * @see `CorpseConverter.converter` * @param tplayer the player */ - def DepictPlayerAsCorpse(tplayer : Player) : Unit = { + def DepictPlayerAsCorpse(tplayer: Player): Unit = { val guid = tplayer.GUID sendResponse( - ObjectCreateDetailedMessage(ObjectClass.avatar, guid, CorpseConverter.converter.DetailedConstructorData(tplayer).get) + ObjectCreateDetailedMessage( + ObjectClass.avatar, + guid, + CorpseConverter.converter.DetailedConstructorData(tplayer).get + ) ) } @@ -7822,7 +8718,7 @@ class WorldSessionActor extends Actor * @return `true`, if the `obj` is actually a corpse and has no objects in its holsters or backpack; * `false`, otherwise */ - def WellLootedDeadBody(obj : Player) : Boolean = { + def WellLootedDeadBody(obj: Player): Boolean = { !obj.isAlive && obj.Holsters().count(_.Equipment.nonEmpty) == 0 && obj.Inventory.Size == 0 } @@ -7832,12 +8728,11 @@ class WorldSessionActor extends Actor * @return `true`, if the `obj` is actually a corpse and has no objects in its holsters or backpack; * `false`, otherwise */ - def TryDisposeOfLootedCorpse(obj : Player) : Boolean = { - if(obj.isBackpack && WellLootedDeadBody(obj)) { + def TryDisposeOfLootedCorpse(obj: Player): Boolean = { + if (obj.isBackpack && WellLootedDeadBody(obj)) { obj.Zone.AvatarEvents ! AvatarServiceMessage.Corpse(RemoverActor.HurrySpecific(List(obj), obj.Zone)) true - } - else { + } else { false } } @@ -7852,17 +8747,16 @@ class WorldSessionActor extends Actor * @param tplayer the player * @param currentZone the current zone number */ - def RequestSanctuaryZoneSpawn(tplayer : Player, currentZone : Int) : Unit = { + def RequestSanctuaryZoneSpawn(tplayer: Player, currentZone: Int): Unit = { val sanctNumber = Zones.SanctuaryZoneNumber(tplayer.Faction) - if(currentZone == sanctNumber) { - if(!player.isAlive) { + if (currentZone == sanctNumber) { + if (!player.isAlive) { sendResponse(DisconnectMessage("Player failed to load on faction's sanctuary continent. Oh no.")) } //we are already on sanctuary, alive; what more is there to do? - } - else { + } else { continent.GUID(player.VehicleSeated) match { - case Some(obj : Vehicle) if !obj.Destroyed => + case Some(obj: Vehicle) if !obj.Destroyed => cluster ! Zone.Lattice.RequestSpawnPoint(sanctNumber, tplayer, 12) //warp gates for functioning vehicles case _ => cluster ! Zone.Lattice.RequestSpawnPoint(sanctNumber, tplayer, 7) //player character spawns @@ -7874,16 +8768,17 @@ class WorldSessionActor extends Actor * na * @param terminal na */ - def HandleProximityTerminalUse(terminal : Terminal with ProximityUnit) : Unit = { - val term_guid = terminal.GUID - val targets = FindProximityUnitTargetsInScope(terminal) + def HandleProximityTerminalUse(terminal: Terminal with ProximityUnit): Unit = { + val term_guid = terminal.GUID + val targets = FindProximityUnitTargetsInScope(terminal) val currentTargets = terminal.Targets targets.foreach(target => { - if(!currentTargets.contains(target)) { + if (!currentTargets.contains(target)) { StartUsingProximityUnit(terminal, target) - } - else if(targets.isEmpty) { - log.warn(s"HandleProximityTerminalUse: ${player.Name} could not find valid targets to give to proximity unit ${terminal.Definition.Name}@${term_guid.guid}") + } else if (targets.isEmpty) { + log.warn( + s"HandleProximityTerminalUse: ${player.Name} could not find valid targets to give to proximity unit ${terminal.Definition.Name}@${term_guid.guid}" + ) } }) } @@ -7893,9 +8788,9 @@ class WorldSessionActor extends Actor * @param terminal na * @return na */ - def FindProximityUnitTargetsInScope(terminal : Terminal with ProximityUnit) : Seq[PlanetSideGameObject] = { + def FindProximityUnitTargetsInScope(terminal: Terminal with ProximityUnit): Seq[PlanetSideGameObject] = { terminal.Definition.asInstanceOf[ProximityDefinition].TargetValidation.keySet collect { - case EffectTarget.Category.Player => Some(player) + case EffectTarget.Category.Player => Some(player) case EffectTarget.Category.Vehicle | EffectTarget.Category.Aircraft => continent.GUID(player.VehicleSeated) } collect { case Some(a) => a @@ -7907,14 +8802,14 @@ class WorldSessionActor extends Actor * @param terminal the proximity-based unit * @param target the entity that is being considered for terminal operation */ - def StartUsingProximityUnit(terminal : Terminal with ProximityUnit, target : PlanetSideGameObject) : Unit = { + def StartUsingProximityUnit(terminal: Terminal with ProximityUnit, target: PlanetSideGameObject): Unit = { val term_guid = terminal.GUID //log.trace(s"StartUsingProximityUnit: ${player.Name} wants to use ${terminal.Definition.Name}@${term_guid.guid} on $target") - if(player.isAlive) { + if (player.isAlive) { target match { - case _ : Player => + case _: Player => terminal.Actor ! CommonMessages.Use(player, Some(target)) - case _ : Vehicle => + case _: Vehicle => terminal.Actor ! CommonMessages.Use(player, Some((target, continent.VehicleEvents))) case _ => log.error(s"StartUsingProximityUnit: can not deal with target $target") @@ -7933,9 +8828,9 @@ class WorldSessionActor extends Actor * @param terminal the proximity-based unit * @param target the object being affected by the unit */ - def SelectProximityUnitBehavior(terminal : Terminal with ProximityUnit, target : PlanetSideGameObject) : Unit = { + def SelectProximityUnitBehavior(terminal: Terminal with ProximityUnit, target: PlanetSideGameObject): Unit = { target match { - case o : Player => + case o: Player => HealthAndArmorTerminal(terminal, o) case _ => ; } @@ -7948,28 +8843,27 @@ class WorldSessionActor extends Actor * Other sorts of proximity-based units are put on a timer. * @param terminal the proximity-based unit */ - def StopUsingProximityUnit(terminal : Terminal with ProximityUnit) : Unit = { + def StopUsingProximityUnit(terminal: Terminal with ProximityUnit): Unit = { val term_guid = terminal.GUID //log.trace(s"StopUsingProximityUnit: attempting to stop using proximity unit ${terminal.Definition.Name}@${term_guid.guid}") val targets = FindProximityUnitTargetsInScope(terminal) - if(targets.nonEmpty) { - if(usingMedicalTerminal.contains(term_guid)) { + if (targets.nonEmpty) { + if (usingMedicalTerminal.contains(term_guid)) { usingMedicalTerminal = None } - targets.foreach(target => - terminal.Actor ! CommonMessages.Unuse(player, Some(target)) + targets.foreach(target => terminal.Actor ! CommonMessages.Unuse(player, Some(target))) + } else { + log.warn( + s"StopUsingProximityUnit: ${player.Name} could not find valid targets for proximity unit ${terminal.Definition.Name}@${term_guid.guid}" ) } - else { - log.warn(s"StopUsingProximityUnit: ${player.Name} could not find valid targets for proximity unit ${terminal.Definition.Name}@${term_guid.guid}") - } } /** * na */ - def ForgetAllProximityTerminals(term_guid : PlanetSideGUID) : Unit = { - if(usingMedicalTerminal.contains(term_guid)) { + def ForgetAllProximityTerminals(term_guid: PlanetSideGUID): Unit = { + if (usingMedicalTerminal.contains(term_guid)) { usingMedicalTerminal = None } } @@ -7980,9 +8874,9 @@ class WorldSessionActor extends Actor * This operations may invoke callback messages. * @see `postStop` */ - def CancelAllProximityUnits() : Unit = { + def CancelAllProximityUnits(): Unit = { continent.GUID(usingMedicalTerminal) match { - case Some(terminal : Terminal with ProximityUnit) => + case Some(terminal: Terminal with ProximityUnit) => FindProximityUnitTargetsInScope(terminal).foreach(target => terminal.Actor ! CommonMessages.Unuse(player, Some(target)) ) @@ -7998,25 +8892,23 @@ class WorldSessionActor extends Actor * @param unit the medical terminal * @param target the player being healed */ - def HealthAndArmorTerminal(unit : Terminal with ProximityUnit, target : Player) : Unit = { - val medDef = unit.Definition.asInstanceOf[MedicalTerminalDefinition] + def HealthAndArmorTerminal(unit: Terminal with ProximityUnit, target: Player): Unit = { + val medDef = unit.Definition.asInstanceOf[MedicalTerminalDefinition] val healAmount = medDef.HealAmount - val healthFull : Boolean = if(healAmount != 0 && target.Health < target.MaxHealth) { + val healthFull: Boolean = if (healAmount != 0 && target.Health < target.MaxHealth) { target.History(HealFromTerm(PlayerSource(target), healAmount, 0, medDef)) HealAction(target, healAmount) - } - else { + } else { true } val repairAmount = medDef.ArmorAmount - val armorFull : Boolean = if(repairAmount != 0 && target.Armor < target.MaxArmor) { + val armorFull: Boolean = if (repairAmount != 0 && target.Armor < target.MaxArmor) { target.History(HealFromTerm(PlayerSource(target), 0, repairAmount, medDef)) ArmorRepairAction(target, repairAmount) - } - else { + } else { true } - if(healthFull && armorFull) { + if (healthFull && armorFull) { StopUsingProximityUnit(unit) } } @@ -8029,11 +8921,14 @@ class WorldSessionActor extends Actor * 10 by default * @return whether the player can be repaired for any more health points */ - def HealAction(tplayer : Player, healValue : Int = 10) : Boolean = { + def HealAction(tplayer: Player, healValue: Int = 10): Boolean = { val player_guid = tplayer.GUID tplayer.Health = tplayer.Health + healValue sendResponse(PlanetsideAttributeMessage(player_guid, 0, tplayer.Health)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(player_guid, 0, tplayer.Health)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(player_guid, 0, tplayer.Health) + ) tplayer.Health == tplayer.MaxHealth } @@ -8045,11 +8940,14 @@ class WorldSessionActor extends Actor * 10 by default * @return whether the player can be repaired for any more armor points */ - def ArmorRepairAction(tplayer : Player, repairValue : Int = 10) : Boolean = { + def ArmorRepairAction(tplayer: Player, repairValue: Int = 10): Boolean = { val player_guid = tplayer.GUID tplayer.Armor = tplayer.Armor + repairValue sendResponse(PlanetsideAttributeMessage(player_guid, 4, tplayer.Armor)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttribute(player_guid, 4, tplayer.Armor)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttribute(player_guid, 4, tplayer.Armor) + ) tplayer.Armor == tplayer.MaxArmor } @@ -8058,9 +8956,20 @@ class WorldSessionActor extends Actor * Lock all applicable controls of the current vehicle * Set the vehicle to move in reverse */ - def ServerVehicleLockReverse() : Unit = { + def ServerVehicleLockReverse(): Unit = { controlled = Some(0) - sendResponse(ServerVehicleOverrideMsg(lock_accelerator = true, lock_wheel = true, reverse = true, unk4 = true, lock_vthrust = 0, lock_strafe = 1, movement_speed = 2, unk8 = Some(0))) + sendResponse( + ServerVehicleOverrideMsg( + lock_accelerator = true, + lock_wheel = true, + reverse = true, + unk4 = true, + lock_vthrust = 0, + lock_strafe = 1, + movement_speed = 2, + unk8 = Some(0) + ) + ) } /** @@ -8068,9 +8977,20 @@ class WorldSessionActor extends Actor * Lock all applicable controls of the current vehicle * Set the vehicle to strafe right */ - def ServerVehicleLockStrafeRight() : Unit = { + def ServerVehicleLockStrafeRight(): Unit = { controlled = Some(0) - sendResponse(ServerVehicleOverrideMsg(lock_accelerator = true, lock_wheel = true, reverse = false, unk4 = true, lock_vthrust = 0, lock_strafe = 3, movement_speed = 0, unk8 = Some(0))) + sendResponse( + ServerVehicleOverrideMsg( + lock_accelerator = true, + lock_wheel = true, + reverse = false, + unk4 = true, + lock_vthrust = 0, + lock_strafe = 3, + movement_speed = 0, + unk8 = Some(0) + ) + ) } /** @@ -8078,9 +8998,20 @@ class WorldSessionActor extends Actor * Lock all applicable controls of the current vehicle * Set the vehicle to strafe left */ - def ServerVehicleLockStrafeLeft() : Unit = { + def ServerVehicleLockStrafeLeft(): Unit = { controlled = Some(0) - sendResponse(ServerVehicleOverrideMsg(lock_accelerator = true, lock_wheel = true, reverse = false, unk4 = true, lock_vthrust = 0, lock_strafe = 2, movement_speed = 0, unk8 = Some(0))) + sendResponse( + ServerVehicleOverrideMsg( + lock_accelerator = true, + lock_wheel = true, + reverse = false, + unk4 = true, + lock_vthrust = 0, + lock_strafe = 2, + movement_speed = 0, + unk8 = Some(0) + ) + ) } /** @@ -8088,7 +9019,7 @@ class WorldSessionActor extends Actor * This includes forward motion, turning, and, if applicable, strafing. * @param vehicle the vehicle being controlled */ - def ServerVehicleLock(vehicle : Vehicle) : Unit = { + def ServerVehicleLock(vehicle: Vehicle): Unit = { controlled = Some(0) sendResponse(ServerVehicleOverrideMsg(true, true, false, false, 0, 1, 0, Some(0))) } @@ -8099,7 +9030,7 @@ class WorldSessionActor extends Actor * @param speed how fast the vehicle is moving forward * @param flight whether the vehicle is ascending or not, if the vehicle is an applicable type */ - def ServerVehicleOverride(vehicle : Vehicle, speed : Int = 0, flight : Int = 0) : Unit = { + def ServerVehicleOverride(vehicle: Vehicle, speed: Int = 0, flight: Int = 0): Unit = { controlled = Some(speed) sendResponse(ServerVehicleOverrideMsg(true, true, false, false, flight, 0, speed, Some(0))) } @@ -8111,8 +9042,8 @@ class WorldSessionActor extends Actor * @param speed how fast the vehicle is moving forward * @param flight whether the vehicle is ascending or not, if the vehicle is an applicable type */ - def DriverVehicleControl(vehicle : Vehicle, speed : Int = 0, flight : Int = 0) : Unit = { - if(controlled.nonEmpty) { + def DriverVehicleControl(vehicle: Vehicle, speed: Int = 0, flight: Int = 0): Unit = { + if (controlled.nonEmpty) { controlled = None sendResponse(ServerVehicleOverrideMsg(false, false, false, true, flight, 0, speed, None)) } @@ -8124,8 +9055,8 @@ class WorldSessionActor extends Actor * Stop all movement entirely. * @param vehicle the vehicle */ - def TotalDriverVehicleControl(vehicle : Vehicle) : Unit = { - if(controlled.nonEmpty) { + def TotalDriverVehicleControl(vehicle: Vehicle): Unit = { + if (controlled.nonEmpty) { controlled = None sendResponse(ServerVehicleOverrideMsg(false, false, false, false, 0, 0, 0, None)) } @@ -8138,12 +9069,11 @@ class WorldSessionActor extends Actor * @param projectile_guid the projectile's GUID * @return the discovered projectile */ - def FindProjectileEntry(projectile_guid : PlanetSideGUID) : Option[Projectile] = { + def FindProjectileEntry(projectile_guid: PlanetSideGUID): Option[Projectile] = { val index = projectile_guid.guid - Projectile.BaseUID - if(0 <= index && index < projectiles.length) { + if (0 <= index && index < projectiles.length) { projectiles(index) - } - else { + } else { log.warn(s"ResolveProjectile: expected projectile, but ${projectile_guid.guid} not found") None } @@ -8156,7 +9086,12 @@ class WorldSessionActor extends Actor * @param resolution the resolution status to promote the projectile * @return the projectile */ - def ResolveProjectileEntry(projectile_guid : PlanetSideGUID, resolution : ProjectileResolution.Value, target : PlanetSideGameObject with FactionAffinity with Vitality, pos : Vector3) : Option[ResolvedProjectile] = { + def ResolveProjectileEntry( + projectile_guid: PlanetSideGUID, + resolution: ProjectileResolution.Value, + target: PlanetSideGameObject with FactionAffinity with Vitality, + pos: Vector3 + ): Option[ResolvedProjectile] = { FindProjectileEntry(projectile_guid) match { case Some(projectile) => ResolveProjectileEntry(projectile, resolution, target, pos) @@ -8173,12 +9108,17 @@ class WorldSessionActor extends Actor * @param resolution the resolution status to promote the projectile * @return a copy of the projectile */ - def ResolveProjectileEntry(projectile : Projectile, index : Int, resolution : ProjectileResolution.Value, target : PlanetSideGameObject with FactionAffinity with Vitality, pos : Vector3) : Option[ResolvedProjectile] = { - if(!projectiles(index).contains(projectile)) { + def ResolveProjectileEntry( + projectile: Projectile, + index: Int, + resolution: ProjectileResolution.Value, + target: PlanetSideGameObject with FactionAffinity with Vitality, + pos: Vector3 + ): Option[ResolvedProjectile] = { + if (!projectiles(index).contains(projectile)) { log.error(s"expected projectile could not be found at $index; can not resolve") None - } - else { + } else { ResolveProjectileEntry(projectile, resolution, target, pos) } } @@ -8189,12 +9129,16 @@ class WorldSessionActor extends Actor * @param resolution the resolution status to promote the projectile * @return a copy of the projectile */ - def ResolveProjectileEntry(projectile : Projectile, resolution : ProjectileResolution.Value, target : PlanetSideGameObject with FactionAffinity with Vitality, pos : Vector3) : Option[ResolvedProjectile] = { - if(projectile.isMiss) { + def ResolveProjectileEntry( + projectile: Projectile, + resolution: ProjectileResolution.Value, + target: PlanetSideGameObject with FactionAffinity with Vitality, + pos: Vector3 + ): Option[ResolvedProjectile] = { + if (projectile.isMiss) { log.error("expected projectile was already counted as a missed shot; can not resolve any further") None - } - else { + } else { projectile.Resolve() Some(ResolvedProjectile(resolution, projectile, SourceEntry(target), target.DamageModel, pos)) } @@ -8206,14 +9150,14 @@ class WorldSessionActor extends Actor * @param obj the mountable object * @param seatNum the seat into which the player is mounting */ - def MountingAction(tplayer : Player, obj : PlanetSideGameObject with Mountable, seatNum : Int) : Unit = { - val player_guid : PlanetSideGUID = tplayer.GUID - val obj_guid : PlanetSideGUID = obj.GUID + def MountingAction(tplayer: Player, obj: PlanetSideGameObject with Mountable, seatNum: Int): Unit = { + val player_guid: PlanetSideGUID = tplayer.GUID + val obj_guid: PlanetSideGUID = obj.GUID PlayerActionsToCancel() //deactivate non-passive implants tplayer.Implants.indices.foreach { index => val implantSlot = tplayer.ImplantSlot(index) - if(implantSlot.Active && implantSlot.Charge(tplayer.ExoSuit) > 0) { + if (implantSlot.Active && implantSlot.Charge(tplayer.ExoSuit) > 0) { tplayer.Actor ! Player.ImplantActivation(index, 0) } } @@ -8221,7 +9165,10 @@ class WorldSessionActor extends Actor player.skipStaminaRegenForTurns = math.max(player.skipStaminaRegenForTurns, 6) log.info(s"MountVehicleMsg: ${player.Name}_guid mounts $obj @ $seatNum") sendResponse(ObjectAttachMessage(obj_guid, player_guid, seatNum)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.MountVehicle(player_guid, obj_guid, seatNum)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.MountVehicle(player_guid, obj_guid, seatNum) + ) } /** @@ -8230,12 +9177,15 @@ class WorldSessionActor extends Actor * @param obj the mountable object * @param seatNum the seat out of which which the player is disembarking */ - def DismountAction(tplayer : Player, obj : PlanetSideGameObject with Mountable, seatNum : Int) : Unit = { - val player_guid : PlanetSideGUID = tplayer.GUID + def DismountAction(tplayer: Player, obj: PlanetSideGameObject with Mountable, seatNum: Int): Unit = { + val player_guid: PlanetSideGUID = tplayer.GUID log.info(s"DismountVehicleMsg: ${tplayer.Name} dismounts $obj from $seatNum") keepAliveFunc = NormalKeepAlive sendResponse(DismountVehicleMsg(player_guid, BailType.Normal, false)) - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.DismountVehicle(player_guid, BailType.Normal, false)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.DismountVehicle(player_guid, BailType.Normal, false) + ) } /** @@ -8250,21 +9200,20 @@ class WorldSessionActor extends Actor * @param target a valid game object that is known to the server * @param data a projectile that will affect the target */ - def HandleDealingDamage(target : PlanetSideGameObject with Vitality, data : ResolvedProjectile) : Unit = { + def HandleDealingDamage(target: PlanetSideGameObject with Vitality, data: ResolvedProjectile): Unit = { val func = data.damage_model.Calculate(data) target match { - case obj : Player if obj.CanDamage && obj.Actor != Default.Actor => - if(obj.spectator) { + case obj: Player if obj.CanDamage && obj.Actor != Default.Actor => + if (obj.spectator) { AdministrativeKick(player, obj != player) // little thing for auto kick - } - else { + } else { obj.Actor ! Vitality.Damage(func) } - case obj : Vehicle if obj.CanDamage => obj.Actor ! Vitality.Damage(func) - case obj : Amenity if obj.CanDamage => obj.Actor ! Vitality.Damage(func) - case obj : ComplexDeployable if obj.CanDamage => obj.Actor ! Vitality.Damage(func) + case obj: Vehicle if obj.CanDamage => obj.Actor ! Vitality.Damage(func) + case obj: Amenity if obj.CanDamage => obj.Actor ! Vitality.Damage(func) + case obj: ComplexDeployable if obj.CanDamage => obj.Actor ! Vitality.Damage(func) - case obj : SimpleDeployable if obj.CanDamage => + case obj: SimpleDeployable if obj.CanDamage => //damage is synchronized on `LSA` (results returned to and distributed from this `WorldSessionActor`) continent.LocalEvents ! Vitality.DamageOn(obj, func) case _ => ; @@ -8282,19 +9231,31 @@ class WorldSessionActor extends Actor * defaults to 121, the object id of `avatar` * @return a `DestroyDisplayMessage` packet that is properly formatted */ - def DestroyDisplayMessage(killer : SourceEntry, victim : SourceEntry, method : Int, unk : Int = 121) : DestroyDisplayMessage = { + def DestroyDisplayMessage( + killer: SourceEntry, + victim: SourceEntry, + method: Int, + unk: Int = 121 + ): DestroyDisplayMessage = { val killer_seated = killer match { - case obj : PlayerSource => obj.Seated - case _ => false + case obj: PlayerSource => obj.Seated + case _ => false } val victim_seated = victim match { - case obj : PlayerSource => obj.Seated - case _ => false + case obj: PlayerSource => obj.Seated + case _ => false } new DestroyDisplayMessage( - killer.Name, killer.CharId, killer.Faction, killer_seated, - unk, method, - victim.Name, victim.CharId, victim.Faction, victim_seated + killer.Name, + killer.CharId, + killer.Faction, + killer_seated, + unk, + method, + victim.Name, + victim.CharId, + victim.Faction, + victim_seated ) } @@ -8314,12 +9275,13 @@ class WorldSessionActor extends Actor * first pair is current quantity; * second pair is maximum quantity */ - def UpdateDeployableUIElements(list : List[(Int,Int,Int,Int)]) : Unit = { + def UpdateDeployableUIElements(list: List[(Int, Int, Int, Int)]): Unit = { val guid = PlanetSideGUID(0) - list.foreach({ case((currElem, curr, maxElem, max)) => - //fields must update in ordered pairs: max, curr - sendResponse(PlanetsideAttributeMessage(guid, maxElem, max)) - sendResponse(PlanetsideAttributeMessage(guid, currElem, curr)) + list.foreach({ + case ((currElem, curr, maxElem, max)) => + //fields must update in ordered pairs: max, curr + sendResponse(PlanetsideAttributeMessage(guid, maxElem, max)) + sendResponse(PlanetsideAttributeMessage(guid, currElem, curr)) }) } @@ -8344,8 +9306,13 @@ class WorldSessionActor extends Actor * @see `SetCurrentAvatar` * @param obj a `Deployable` object */ - def RedrawDeployableIcons(obj : PlanetSideGameObject with Deployable) : Unit = { - val deployInfo = DeployableInfo(obj.GUID, Deployable.Icon(obj.Definition.Item), obj.Position, obj.Owner.getOrElse(PlanetSideGUID(0))) + def RedrawDeployableIcons(obj: PlanetSideGameObject with Deployable): Unit = { + val deployInfo = DeployableInfo( + obj.GUID, + Deployable.Icon(obj.Definition.Item), + obj.Position, + obj.Owner.getOrElse(PlanetSideGUID(0)) + ) sendResponse(DeployableObjectsInfoMessage(DeploymentAction.Build, deployInfo)) } @@ -8370,7 +9337,7 @@ class WorldSessionActor extends Actor * @see `SetCurrentAvatar` * @param obj a `Deployable` object */ - def DontRedrawIcons(obj : PlanetSideGameObject with Deployable) : Unit = { } + def DontRedrawIcons(obj: PlanetSideGameObject with Deployable): Unit = {} /** * The custom behavior responding to the message `ChangeFireModeMessage` for `ConstructionItem` game objects. @@ -8384,16 +9351,18 @@ class WorldSessionActor extends Actor * @param originalModeIndex the starting point fire mode index * @return the changed fire mode */ - def NextConstructionItemFireMode(obj : ConstructionItem, originalModeIndex : Int) : ConstructionFireMode = { + def NextConstructionItemFireMode(obj: ConstructionItem, originalModeIndex: Int): ConstructionFireMode = { val certifications = player.Certifications do { obj.NextFireMode - if(!ConstructionItemPermissionComparison(certifications, obj.ModePermissions)) { + if (!ConstructionItemPermissionComparison(certifications, obj.ModePermissions)) { PerformConstructionItemAmmoChange(obj, obj.AmmoTypeIndex) } sendResponse(ChangeFireModeMessage(obj.GUID, obj.FireModeIndex)) - } - while(!ConstructionItemPermissionComparison(certifications, obj.ModePermissions) && originalModeIndex != obj.FireModeIndex) + } while (!ConstructionItemPermissionComparison( + certifications, + obj.ModePermissions + ) && originalModeIndex != obj.FireModeIndex) obj.FireMode } @@ -8406,13 +9375,17 @@ class WorldSessionActor extends Actor * @param obj the `ConstructionItem` object * @param originalAmmoIndex the starting point ammunition type mode index */ - def PerformConstructionItemAmmoChange(obj : ConstructionItem, originalAmmoIndex : Int) : Unit = { + def PerformConstructionItemAmmoChange(obj: ConstructionItem, originalAmmoIndex: Int): Unit = { val certifications = player.Certifications do { obj.NextAmmoType - } - while(!ConstructionItemPermissionComparison(certifications, obj.ModePermissions) && originalAmmoIndex != obj.AmmoTypeIndex) - log.info(s"ChangeFireMode: construction object ${obj.Definition.Name} changed to ${obj.AmmoType} (mode ${obj.FireModeIndex})") + } while (!ConstructionItemPermissionComparison( + certifications, + obj.ModePermissions + ) && originalAmmoIndex != obj.AmmoTypeIndex) + log.info( + s"ChangeFireMode: construction object ${obj.Definition.Name} changed to ${obj.AmmoType} (mode ${obj.FireModeIndex})" + ) sendResponse(ChangeAmmoMessage(obj.GUID, obj.AmmoTypeIndex)) } @@ -8424,21 +9397,22 @@ class WorldSessionActor extends Actor * @param test the desired certifications * @return `true`, if the desired certification requirements are met; `false`, otherwise */ - def ConstructionItemPermissionComparison(sample : Set[CertificationType.Value], test : Set[CertificationType.Value]) : Boolean = { + def ConstructionItemPermissionComparison( + sample: Set[CertificationType.Value], + test: Set[CertificationType.Value] + ): Boolean = { import CertificationType._ - val engineeringCerts : Set[CertificationType.Value] = Set(AssaultEngineering, FortificationEngineering) - val testDiff : Set[CertificationType.Value] = test diff (engineeringCerts ++ Set(AdvancedEngineering)) + val engineeringCerts: Set[CertificationType.Value] = Set(AssaultEngineering, FortificationEngineering) + val testDiff: Set[CertificationType.Value] = test diff (engineeringCerts ++ Set(AdvancedEngineering)) //substitute `AssaultEngineering` and `FortificationEngineering` for `AdvancedEngineering` - val sampleIntersect = if(sample contains AdvancedEngineering) { + val sampleIntersect = if (sample contains AdvancedEngineering) { engineeringCerts - } - else { + } else { sample intersect engineeringCerts } - val testIntersect = if(test contains AdvancedEngineering) { + val testIntersect = if (test contains AdvancedEngineering) { engineeringCerts - } - else { + } else { test intersect engineeringCerts } (sample intersect testDiff equals testDiff) && (sampleIntersect intersect testIntersect equals testIntersect) @@ -8466,47 +9440,48 @@ class WorldSessionActor extends Actor * the owner has no other means of controlling the created object that it is associated with. * @param obj the `Deployable` object to be built */ - def DeployableBuildActivity(obj : PlanetSideGameObject with Deployable) : Unit = { - val guid = obj.GUID - val definition = obj.Definition - val item = definition.Item + def DeployableBuildActivity(obj: PlanetSideGameObject with Deployable): Unit = { + val guid = obj.GUID + val definition = obj.Definition + val item = definition.Item val deployables = avatar.Deployables val (curr, max) = deployables.CountDeployable(item) log.info(s"DeployableBuildActivity: ${definition.Name}") //two potential messages related to numerical limitations of deployables - if(!avatar.Deployables.Available(obj)) { + if (!avatar.Deployables.Available(obj)) { val (removed, msg) = { - if(curr == max) { //too many of a specific type of deployable + if (curr == max) { //too many of a specific type of deployable (deployables.DisplaceFirst(obj), max > 1) - } - else { //make room by eliminating a different type of deployable + } else { //make room by eliminating a different type of deployable (deployables.DisplaceFirst(obj, { d => d.Definition.Item != item }), true) } } removed match { - case Some(telepad : TelepadDeployable) => + case Some(telepad: TelepadDeployable) => telepad.AssignOwnership(None) continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(telepad), continent)) - continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(telepad, continent, Some(0 seconds))) //normal decay + continent.LocalEvents ! LocalServiceMessage.Deployables( + RemoverActor.AddTask(telepad, continent, Some(0 seconds)) + ) //normal decay case Some(old) => old.AssignOwnership(None) continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.ClearSpecific(List(old), continent)) continent.LocalEvents ! LocalServiceMessage.Deployables(RemoverActor.AddTask(old, continent, Some(0 seconds))) - if(msg) { //max test + if (msg) { //max test sendResponse(ChatMsg(ChatMessageType.UNK_229, false, "", s"@${definition.Descriptor}OldestDestroyed", None)) } case None => ; //should be an invalid case - log.warn(s"DeployableBuildActivity: how awkward: we probably shouldn't be allowed to build this deployable right now") + log.warn( + s"DeployableBuildActivity: how awkward: we probably shouldn't be allowed to build this deployable right now" + ) } - } - else if(obj.isInstanceOf[TelepadDeployable]) { + } else if (obj.isInstanceOf[TelepadDeployable]) { //always treat the telepad we are putting down as the first and only one sendResponse(ObjectDeployedMessage.Success(definition.Name, 1, 1)) - } - else { + } else { sendResponse(ObjectDeployedMessage.Success(definition.Name, curr + 1, max)) val (catCurr, catMax) = deployables.CountCategory(item) - if((max > 1 && curr + 1 == max) || (catMax > 1 && catCurr + 1 == catMax)) { + if ((max > 1 && curr + 1 == max) || (catMax > 1 && catCurr + 1 == catMax)) { sendResponse(ChatMsg(ChatMessageType.UNK_229, false, "", s"@${definition.Descriptor}LimitReached", None)) } } @@ -8518,7 +9493,10 @@ class WorldSessionActor extends Actor //map icon val deployInfo = DeployableInfo(guid, Deployable.Icon(item), obj.Position, obj.Owner.getOrElse(PlanetSideGUID(0))) sendResponse(DeployableObjectsInfoMessage(DeploymentAction.Build, deployInfo)) - continent.LocalEvents ! LocalServiceMessage(s"${player.Faction}", LocalAction.DeployableMapIcon(player.GUID, DeploymentAction.Build, deployInfo)) + continent.LocalEvents ! LocalServiceMessage( + s"${player.Faction}", + LocalAction.DeployableMapIcon(player.GUID, DeploymentAction.Build, deployInfo) + ) } /** @@ -8530,8 +9508,8 @@ class WorldSessionActor extends Actor * @param index the slot index * @param pos where to drop the object in the game world */ - def TryDropFDU(tool : ConstructionItem, index : Int, pos : Vector3) : Unit = { - if(tool.Definition == GlobalDefinitions.advanced_ace) { + def TryDropFDU(tool: ConstructionItem, index: Int, pos: Vector3): Unit = { + if (tool.Definition == GlobalDefinitions.advanced_ace) { DropEquipmentFromInventory(player)(tool, Some(pos)) } } @@ -8542,8 +9520,8 @@ class WorldSessionActor extends Actor * @param tool the `ConstructionItem` object currently in the slot (checked) * @param index the slot index */ - def CommonDestroyConstructionItem(tool : ConstructionItem, index : Int) : Unit = { - if(SafelyRemoveConstructionItemFromSlot(tool, index, "CommonDestroyConstructionItem")) { + def CommonDestroyConstructionItem(tool: ConstructionItem, index: Int): Unit = { + if (SafelyRemoveConstructionItemFromSlot(tool, index, "CommonDestroyConstructionItem")) { taskResolver ! GUIDTask.UnregisterEquipment(tool)(continent.GUID) } } @@ -8564,14 +9542,17 @@ class WorldSessionActor extends Actor * @return `true`, if the target object was found and removed; * `false`, otherwise */ - def SafelyRemoveConstructionItemFromSlot(tool : ConstructionItem, index : Int, logDecorator : String = "SafelyRemoveConstructionItemFromSlot") : Boolean = { - if({ + def SafelyRemoveConstructionItemFromSlot( + tool: ConstructionItem, + index: Int, + logDecorator: String = "SafelyRemoveConstructionItemFromSlot" + ): Boolean = { + if ({ val holster = player.Slot(index) - if(holster.Equipment.contains(tool)) { + if (holster.Equipment.contains(tool)) { holster.Equipment = None true - } - else { + } else { player.Find(tool) match { case Some(newIndex) => log.warn(s"$logDecorator: looking for item in $index, but item was found at $newIndex instead") @@ -8586,8 +9567,7 @@ class WorldSessionActor extends Actor sendResponse(ObjectDeleteMessage(tool.GUID, 0)) continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, tool.GUID)) true - } - else { + } else { false } } @@ -8607,31 +9587,34 @@ class WorldSessionActor extends Actor * @param tool the `ConstructionItem` object to match * @param index where to put the discovered replacement */ - def FindReplacementConstructionItem(tool : ConstructionItem, index : Int) : Unit = { - val fireMode = tool.FireModeIndex - val ammoType = tool.AmmoTypeIndex + def FindReplacementConstructionItem(tool: ConstructionItem, index: Int): Unit = { + val fireMode = tool.FireModeIndex + val ammoType = tool.AmmoTypeIndex val definition = tool.Definition - if(player.Slot(index).Equipment.isEmpty) { + if (player.Slot(index).Equipment.isEmpty) { FindEquipmentStock(player, { (e) => e.Definition == definition }, 1) match { case x :: _ => val guid = player.GUID - val obj = x.obj.asInstanceOf[ConstructionItem] - if((player.Slot(index).Equipment = obj).contains(obj)) { + val obj = x.obj.asInstanceOf[ConstructionItem] + if ((player.Slot(index).Equipment = obj).contains(obj)) { player.Inventory -= x.start sendResponse(ObjectAttachMessage(guid, obj.GUID, index)) - if(obj.FireModeIndex != fireMode) { + if (obj.FireModeIndex != fireMode) { obj.FireModeIndex = fireMode sendResponse(ChangeFireModeMessage(obj.GUID, fireMode)) } - if(obj.AmmoTypeIndex != ammoType) { + if (obj.AmmoTypeIndex != ammoType) { obj.AmmoTypeIndex = ammoType sendResponse(ChangeAmmoMessage(obj.GUID, ammoType)) } - if(player.VisibleSlots.contains(index)) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.EquipmentInHand(guid, guid, index, obj)) - if(player.DrawnSlot == Player.HandsDownSlot) { + if (player.VisibleSlots.contains(index)) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.EquipmentInHand(guid, guid, index, obj) + ) + if (player.DrawnSlot == Player.HandsDownSlot) { player.DrawnSlot = index sendResponse(ObjectHeldMessage(guid, index, false)) continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectHeld(guid, index)) @@ -8640,9 +9623,10 @@ class WorldSessionActor extends Actor } case Nil => ; //no replacements found } - } - else { - log.warn(s"FindReplacementConstructionItem: slot $index needs to be empty before a replacement ${definition.Name} can be installed") + } else { + log.warn( + s"FindReplacementConstructionItem: slot $index needs to be empty before a replacement ${definition.Name} can be installed" + ) } } @@ -8659,25 +9643,25 @@ class WorldSessionActor extends Actor * @return `true`, if the target object was discovered and removed; * `false`, otherwise */ - def FindEquipmentToDelete(object_guid : PlanetSideGUID, obj : Equipment) : Boolean = { - val findFunc : PlanetSideServerObject with Container => Option[(PlanetSideServerObject with Container, Option[Int])] = + def FindEquipmentToDelete(object_guid: PlanetSideGUID, obj: Equipment): Boolean = { + val findFunc + : PlanetSideServerObject with Container => Option[(PlanetSideServerObject with Container, Option[Int])] = FindInLocalContainer(object_guid) findFunc(player.Locker) .orElse(findFunc(player)) .orElse(accessedContainer match { - case Some(parent : PlanetSideServerObject) => + case Some(parent: PlanetSideServerObject) => findFunc(parent) case _ => None }) .orElse(FindLocalVehicle match { - case Some(parent : PlanetSideServerObject) => + case Some(parent: PlanetSideServerObject) => findFunc(parent) case _ => None - }) - match { + }) match { case Some((parent, Some(slot))) => obj.Position = Vector3.Zero RemoveOldEquipmentFromInventory(parent, taskResolver)(obj) @@ -8685,14 +9669,13 @@ class WorldSessionActor extends Actor true case _ => - if(continent.EquipmentOnGround.contains(obj)) { + if (continent.EquipmentOnGround.contains(obj)) { obj.Position = Vector3.Zero continent.Ground ! Zone.Ground.RemoveItem(object_guid) continent.AvatarEvents ! AvatarServiceMessage.Ground(RemoverActor.ClearSpecific(List(obj), continent)) log.info(s"RequestDestroy: equipment $obj on ground") true - } - else { + } else { log.warn(s"RequestDestroy: equipment $obj exists, but can not be reached") false } @@ -8705,11 +9688,11 @@ class WorldSessionActor extends Actor * @param guid the globally unique identifier for the deployable * @param pos the previous position of the deployable */ - def DeconstructDeployable(obj : PlanetSideGameObject with Deployable, guid : PlanetSideGUID, pos : Vector3) : Unit = { + def DeconstructDeployable(obj: PlanetSideGameObject with Deployable, guid: PlanetSideGUID, pos: Vector3): Unit = { StartBundlingPackets() sendResponse(SetEmpireMessage(guid, PlanetSideEmpire.NEUTRAL)) //for some, removes the green marker circle sendResponse(ObjectDeleteMessage(guid, 0)) - if(player.Faction == obj.Faction) { + if (player.Faction == obj.Faction) { sendResponse( DeployableObjectsInfoMessage( DeploymentAction.Dismiss, @@ -8728,13 +9711,19 @@ class WorldSessionActor extends Actor * @param orient the previous orientation of the deployable * @param deletionType the value passed to `ObjectDeleteMessage` concerning the deconstruction animation */ - def DeconstructDeployable(obj : PlanetSideGameObject with Deployable, guid : PlanetSideGUID, pos : Vector3, orient : Vector3, deletionType : Int) : Unit = { + def DeconstructDeployable( + obj: PlanetSideGameObject with Deployable, + guid: PlanetSideGUID, + pos: Vector3, + orient: Vector3, + deletionType: Int + ): Unit = { StartBundlingPackets() sendResponse(SetEmpireMessage(guid, PlanetSideEmpire.NEUTRAL)) //for some, removes the green marker circle sendResponse(TriggerEffectMessage("spawn_object_failed_effect", pos, orient)) sendResponse(PlanetsideAttributeMessage(guid, 29, 1)) //make deployable vanish sendResponse(ObjectDeleteMessage(guid, deletionType)) - if(player.Faction == obj.Faction) { + if (player.Faction == obj.Faction) { sendResponse( DeployableObjectsInfoMessage( DeploymentAction.Dismiss, @@ -8750,21 +9739,23 @@ class WorldSessionActor extends Actor * and remove all `BoomerTrigger` objects, both functionally and visually. * @return all discovered `BoomTrigger` objects */ - def RemoveBoomerTriggersFromInventory() : List[BoomerTrigger] = { + def RemoveBoomerTriggersFromInventory(): List[BoomerTrigger] = { val holstersWithIndex = player.Holsters().zipWithIndex - ((player.Inventory.Items.collect({ case InventoryItem(obj : BoomerTrigger, index) => (obj, index) })) ++ + ((player.Inventory.Items.collect({ case InventoryItem(obj: BoomerTrigger, index) => (obj, index) })) ++ (holstersWithIndex .map({ case ((slot, index)) => (slot.Equipment, index) }) - .collect { case ((Some(obj : BoomerTrigger), index)) => (obj, index) } - ) - ) - .map({ case ((obj, index)) => - player.Slot(index).Equipment = None - sendResponse(ObjectDeleteMessage(obj.GUID, 0)) - if(player.VisibleSlots.contains(index) && player.HasGUID) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player.GUID, obj.GUID)) - } - obj + .collect { case ((Some(obj: BoomerTrigger), index)) => (obj, index) })) + .map({ + case ((obj, index)) => + player.Slot(index).Equipment = None + sendResponse(ObjectDeleteMessage(obj.GUID, 0)) + if (player.VisibleSlots.contains(index) && player.HasGUID) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ObjectDelete(player.GUID, obj.GUID) + ) + } + obj }) } @@ -8802,49 +9793,61 @@ class WorldSessionActor extends Actor * @param respawnTime the character downtime spent respawning, as clocked on the redeployment screen; * does not factor in any time required for loading zone or game objects */ - def LoadZonePhysicalSpawnPoint(zone_id : String, pos : Vector3, ori : Vector3, respawnTime : Long) : Unit = { + def LoadZonePhysicalSpawnPoint(zone_id: String, pos: Vector3, ori: Vector3, respawnTime: Long): Unit = { log.info(s"Load in zone $zone_id at position $pos in $respawnTime seconds") respawnTimer.cancel reviveTimer.cancel - val backpack = player.isBackpack + val backpack = player.isBackpack val respawnTimeMillis = respawnTime * 1000 //ms deadState = DeadState.RespawnTime - sendResponse(AvatarDeadStateMessage(DeadState.RespawnTime, respawnTimeMillis, respawnTimeMillis, Vector3.Zero, player.Faction, true)) + sendResponse( + AvatarDeadStateMessage( + DeadState.RespawnTime, + respawnTimeMillis, + respawnTimeMillis, + Vector3.Zero, + player.Faction, + true + ) + ) shiftPosition = Some(pos) shiftOrientation = Some(ori) - val (target, msg) = if(backpack) { //if the player is dead, he is handled as dead infantry, even if he died in a vehicle - //new player is spawning - val newPlayer = RespawnClone(player) - newPlayer.Position = pos - newPlayer.Orientation = ori - LoadZoneAsPlayer(newPlayer, zone_id) - } - else { - //deactivate non-passive implants - player.Implants.indices.foreach { index => - val implantSlot = player.ImplantSlot(index) - if(implantSlot.Active && implantSlot.Charge(player.ExoSuit) > 0) { - player.Actor ! Player.ImplantActivation(index, 0) + val (target, msg) = + if (backpack) { //if the player is dead, he is handled as dead infantry, even if he died in a vehicle + //new player is spawning + val newPlayer = RespawnClone(player) + newPlayer.Position = pos + newPlayer.Orientation = ori + LoadZoneAsPlayer(newPlayer, zone_id) + } else { + //deactivate non-passive implants + player.Implants.indices.foreach { index => + val implantSlot = player.ImplantSlot(index) + if (implantSlot.Active && implantSlot.Charge(player.ExoSuit) > 0) { + player.Actor ! Player.ImplantActivation(index, 0) + } + } + interstellarFerry.orElse(continent.GUID(player.VehicleSeated)) match { + case Some(vehicle: Vehicle) => //driver or passenger in vehicle using a warp gate, or a droppod + LoadZoneInVehicle(vehicle, pos, ori, zone_id) + + case _ if player.HasGUID => //player is deconstructing self or instant action + val player_guid = player.GUID + sendResponse(ObjectDeleteMessage(player_guid, 4)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ObjectDelete(player_guid, player_guid, 4) + ) + player.Position = pos + player.Orientation = ori + LoadZoneAsPlayer(player, zone_id) + + case _ => //player is logging in + player.Position = pos + player.Orientation = ori + LoadZoneAsPlayer(player, zone_id) } } - interstellarFerry.orElse(continent.GUID(player.VehicleSeated)) match { - case Some(vehicle : Vehicle) => //driver or passenger in vehicle using a warp gate, or a droppod - LoadZoneInVehicle(vehicle, pos, ori, zone_id) - - case _ if player.HasGUID => //player is deconstructing self or instant action - val player_guid = player.GUID - sendResponse(ObjectDeleteMessage(player_guid, 4)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ObjectDelete(player_guid, player_guid, 4)) - player.Position = pos - player.Orientation = ori - LoadZoneAsPlayer(player, zone_id) - - case _ => //player is logging in - player.Position = pos - player.Orientation = ori - LoadZoneAsPlayer(player, zone_id) - } - } import scala.concurrent.ExecutionContext.Implicits.global respawnTimer = context.system.scheduler.scheduleOnce(respawnTime seconds, target, msg) } @@ -8868,30 +9871,26 @@ class WorldSessionActor extends Actor * @param zone_id the zone in which the player will be placed * @return a tuple composed of an `ActorRef` destination and a message to send to that destination */ - def LoadZoneAsPlayer(tplayer : Player, zone_id : String) : (ActorRef, Any) = { - if(!zoneReload && zone_id == continent.Id) { - if(player.isBackpack) { //important! test the actor-wide player ref, not the parameter + def LoadZoneAsPlayer(tplayer: Player, zone_id: String): (ActorRef, Any) = { + if (!zoneReload && zone_id == continent.Id) { + if (player.isBackpack) { //important! test the actor-wide player ref, not the parameter //respawning from unregistered player (taskResolver, RegisterAvatar(tplayer)) - } - else { + } else { //move existing player; this is the one case where the original GUID is retained by the player (self, PlayerLoaded(tplayer)) } - } - else { + } else { LoadZoneCommonTransferActivity() val original = player - if(player.isBackpack) { + if (player.isBackpack) { //unregister avatar locker + GiveWorld player = tplayer (taskResolver, TaskBeforeZoneChange(GUIDTask.UnregisterLocker(original.Locker)(continent.GUID), zone_id)) - } - else if(player.HasGUID) { + } else if (player.HasGUID) { //unregister avatar whole + GiveWorld (taskResolver, TaskBeforeZoneChange(GUIDTask.UnregisterAvatar(original)(continent.GUID), zone_id)) - } - else { + } else { //not currently registered; so we'll just GiveWorld (cluster, InterstellarCluster.GetWorld(zone_id)) } @@ -8918,15 +9917,14 @@ class WorldSessionActor extends Actor * @param zone_id the zone in which the vehicle and driver will be placed, * or in which the vehicle has already been placed * @return a tuple composed of an ActorRef` destination and a message to send to that destination - **/ - def LoadZoneInVehicle(vehicle : Vehicle, pos : Vector3, ori : Vector3, zone_id : String) : (ActorRef, Any) = { + */ + def LoadZoneInVehicle(vehicle: Vehicle, pos: Vector3, ori: Vector3, zone_id: String): (ActorRef, Any) = { interstellarFerry = Some(vehicle) - if(vehicle.PassengerInSeat(player).contains(0)) { + if (vehicle.PassengerInSeat(player).contains(0)) { vehicle.Position = pos vehicle.Orientation = ori LoadZoneInVehicleAsDriver(vehicle, zone_id) - } - else { + } else { LoadZoneInVehicleAsPassenger(vehicle, zone_id) } } @@ -8956,14 +9954,14 @@ class WorldSessionActor extends Actor * @param zone_id the zone in which the vehicle and driver will be placed, * or in which the vehicle has already been placed * @return a tuple composed of an `ActorRef` destination and a message to send to that destination - **/ - def LoadZoneInVehicleAsDriver(vehicle : Vehicle, zone_id : String) : (ActorRef, Any) = { + */ + def LoadZoneInVehicleAsDriver(vehicle: Vehicle, zone_id: String): (ActorRef, Any) = { log.info(s"LoadZoneInVehicleAsDriver: ${player.Name} is driving a ${vehicle.Definition.Name}") val manifest = vehicle.PrepareGatingManifest() log.info(s"$manifest") - val pguid = player.GUID + val pguid = player.GUID val toChannel = manifest.file - val topLevel = interstellarFerryTopLevelGUID.getOrElse(vehicle.GUID) + val topLevel = interstellarFerryTopLevelGUID.getOrElse(vehicle.GUID) continent.VehicleEvents ! VehicleServiceMessage( s"${vehicle.Actor}", VehicleAction.TransferPassengerChannel(pguid, s"${vehicle.Actor}", toChannel, vehicle, topLevel) @@ -8975,37 +9973,42 @@ class WorldSessionActor extends Actor CargoBehavior.HandleVehicleCargoDismount(cargo.GUID, cargo, vehicle.GUID, vehicle, false, false, true) case (name, index) => val cargo = vehicle.CargoHolds(index).Occupant.get - continent.VehicleEvents ! VehicleServiceMessage(name, VehicleAction.TransferPassengerChannel(pguid, s"${cargo.Actor}", toChannel, cargo, topLevel)) + continent.VehicleEvents ! VehicleServiceMessage( + name, + VehicleAction.TransferPassengerChannel(pguid, s"${cargo.Actor}", toChannel, cargo, topLevel) + ) } // - if(!zoneReload && zone_id == continent.Id) { - if(vehicle.Definition == GlobalDefinitions.droppod) { + if (!zoneReload && zone_id == continent.Id) { + if (vehicle.Definition == GlobalDefinitions.droppod) { //instant action droppod in the same zone (taskResolver, RegisterDroppod(vehicle, player)) - } - else { + } else { //transferring a vehicle between spawn points (warp gates) in the same zone (self, PlayerLoaded(player)) } - } - else if(vehicle.Definition == GlobalDefinitions.droppod) { + } else if (vehicle.Definition == GlobalDefinitions.droppod) { LoadZoneCommonTransferActivity() player.Continent = zone_id //forward-set the continent id to perform a test (taskResolver, TaskBeforeZoneChange(GUIDTask.UnregisterAvatar(player)(continent.GUID), zone_id)) - } - else { + } else { UnAccessContents(vehicle) LoadZoneCommonTransferActivity() player.VehicleSeated = vehicle.GUID player.Continent = zone_id //forward-set the continent id to perform a test - interstellarFerryTopLevelGUID = (if(manifest.passengers.isEmpty && manifest.cargo.count { case (name, _) => !name.equals("MISSING_DRIVER") } == 0) { - //do not delete if vehicle has passengers or cargo - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.UnloadVehicle(pguid, continent, vehicle, topLevel)) - None - } - else { - Some(topLevel) - }) + interstellarFerryTopLevelGUID = + (if ( + manifest.passengers.isEmpty && manifest.cargo.count { case (name, _) => !name.equals("MISSING_DRIVER") } == 0 + ) { + //do not delete if vehicle has passengers or cargo + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.UnloadVehicle(pguid, continent, vehicle, topLevel) + ) + None + } else { + Some(topLevel) + }) //unregister vehicle and driver whole + GiveWorld continent.Transport ! Zone.Vehicle.Despawn(vehicle) (taskResolver, TaskBeforeZoneChange(UnregisterDrivenVehicle(vehicle, player), zone_id)) @@ -9035,14 +10038,13 @@ class WorldSessionActor extends Actor * @param vehicle the target vehicle being moved around * @param zone_id the zone in which the vehicle and driver will be placed * @return a tuple composed of an `ActorRef` destination and a message to send to that destination - **/ - def LoadZoneInVehicleAsPassenger(vehicle : Vehicle, zone_id : String) : (ActorRef, Any) = { + */ + def LoadZoneInVehicleAsPassenger(vehicle: Vehicle, zone_id: String): (ActorRef, Any) = { log.info(s"LoadZoneInVehicleAsPassenger: ${player.Name} is the passenger of a ${vehicle.Definition.Name}") - if(!zoneReload && zone_id == continent.Id) { + if (!zoneReload && zone_id == continent.Id) { //transferring a vehicle between spawn points (warp gates) in the same zone (self, PlayerLoaded(player)) - } - else { + } else { LoadZoneCommonTransferActivity() player.VehicleSeated = vehicle.GUID player.Continent = zone_id //forward-set the continent id to perform a test @@ -9064,19 +10066,25 @@ class WorldSessionActor extends Actor * @param toChannel the vehicle-specific channel with which all passengers are coordinated to the vehicle * @param vehicle the vehicle (object) */ - def LoadZoneTransferPassengerMessages(player_guid : PlanetSideGUID, toZoneId : String, vehicle : Vehicle) : Unit = { + def LoadZoneTransferPassengerMessages(player_guid: PlanetSideGUID, toZoneId: String, vehicle: Vehicle): Unit = { vehicle.PublishGatingManifest() match { case Some(manifest) => val toChannel = manifest.file - val topLevel = interstellarFerryTopLevelGUID.getOrElse(vehicle.GUID) - galaxyService ! GalaxyServiceMessage(toChannel, GalaxyAction.TransferPassenger(player_guid, toChannel, vehicle, topLevel, manifest)) + val topLevel = interstellarFerryTopLevelGUID.getOrElse(vehicle.GUID) + galaxyService ! GalaxyServiceMessage( + toChannel, + GalaxyAction.TransferPassenger(player_guid, toChannel, vehicle, topLevel, manifest) + ) vehicle.CargoHolds.values .collect { case hold if hold.isOccupied => val cargo = hold.Occupant.get cargo.Continent = toZoneId //point to the cargo vehicle to instigate cargo vehicle driver transportation - galaxyService ! GalaxyServiceMessage(toChannel, GalaxyAction.TransferPassenger(player_guid, toChannel, vehicle, topLevel, manifest)) + galaxyService ! GalaxyServiceMessage( + toChannel, + GalaxyAction.TransferPassenger(player_guid, toChannel, vehicle, topLevel, manifest) + ) } case None => log.error("LoadZoneTransferPassengerMessages: expected a manifest for zone transfer; got nothing") @@ -9088,12 +10096,12 @@ class WorldSessionActor extends Actor * encompassing actions that disassociate the player with entities they left (will leave) in the previous zone. * It also sets up actions for the new zone loading process. */ - def LoadZoneCommonTransferActivity() : Unit = { + def LoadZoneCommonTransferActivity(): Unit = { zoneLoaded = None zoneReload = false - if(player.VehicleOwned.nonEmpty && player.VehicleSeated != player.VehicleOwned) { + if (player.VehicleOwned.nonEmpty && player.VehicleSeated != player.VehicleOwned) { continent.GUID(player.VehicleOwned) match { - case Some(vehicle : Vehicle) if vehicle.Actor != Default.Actor => + case Some(vehicle: Vehicle) if vehicle.Actor != Default.Actor => vehicle.Actor ! Vehicle.Ownership(None) case _ => ; } @@ -9116,14 +10124,14 @@ class WorldSessionActor extends Actor * @param systemPlan specific object identification of the two endpoints of the teleportation system; * if absent, the knowable endpoint is deleted from the client reflexively */ - def ToggleTeleportSystem(router : Vehicle, systemPlan : Option[(Utility.InternalTelepad, TelepadDeployable)]) : Unit = { + def ToggleTeleportSystem(router: Vehicle, systemPlan: Option[(Utility.InternalTelepad, TelepadDeployable)]): Unit = { StartBundlingPackets() systemPlan match { case Some((internalTelepad, remoteTelepad)) => LinkRouterToRemoteTelepad(router, internalTelepad, remoteTelepad) case _ => router.Utility(UtilityType.internal_router_telepad_deployable) match { - case Some(util : Utility.InternalTelepad) => + case Some(util: Utility.InternalTelepad) => sendResponse(ObjectDeleteMessage(util.GUID, 0)) case _ => ; } @@ -9138,7 +10146,11 @@ class WorldSessionActor extends Actor * @param internalTelepad the endpoint of the teleportation system housed by the router * @param remoteTelepad the endpoint of the teleportation system that exists in the environment */ - def LinkRouterToRemoteTelepad(router : Vehicle, internalTelepad : Utility.InternalTelepad, remoteTelepad : TelepadDeployable) : Unit = { + def LinkRouterToRemoteTelepad( + router: Vehicle, + internalTelepad: Utility.InternalTelepad, + remoteTelepad: TelepadDeployable + ): Unit = { internalTelepad.Telepad = remoteTelepad.GUID //necessary; backwards link to the (new) telepad CreateRouterInternalTelepad(router, internalTelepad) LinkRemoteTelepad(remoteTelepad.GUID) @@ -9153,11 +10165,11 @@ class WorldSessionActor extends Actor * @param router the vehicle that houses one end of the teleportation system (the `internalTelepad`) * @param internalTelepad the endpoint of the teleportation system housed by the router */ - def CreateRouterInternalTelepad(router : Vehicle, internalTelepad : PlanetSideGameObject with TelepadLike) : Unit = { + def CreateRouterInternalTelepad(router: Vehicle, internalTelepad: PlanetSideGameObject with TelepadLike): Unit = { //create the interal telepad each time the link is made val rguid = router.GUID val uguid = internalTelepad.GUID - val udef = internalTelepad.Definition + val udef = internalTelepad.Definition /* the following instantiation and configuration creates the internal Router component normally dispatched while the Router is transitioned into its Deploying state @@ -9185,7 +10197,7 @@ class WorldSessionActor extends Actor * na * @param telepadGUID na */ - def LinkRemoteTelepad(telepadGUID: PlanetSideGUID) : Unit = { + def LinkRemoteTelepad(telepadGUID: PlanetSideGUID): Unit = { sendResponse(GenericObjectActionMessage(telepadGUID, 27)) sendResponse(GenericObjectActionMessage(telepadGUID, 28)) } @@ -9198,9 +10210,17 @@ class WorldSessionActor extends Actor * @param src the origin of the teleportation (where the player starts) * @param dest the destination of the teleportation (where the player is going) */ - def UseRouterTelepadSystem(router: Vehicle, internalTelepad: InternalTelepad, remoteTelepad: TelepadDeployable, src: PlanetSideGameObject with TelepadLike, dest: PlanetSideGameObject with TelepadLike) = { + def UseRouterTelepadSystem( + router: Vehicle, + internalTelepad: InternalTelepad, + remoteTelepad: TelepadDeployable, + src: PlanetSideGameObject with TelepadLike, + dest: PlanetSideGameObject with TelepadLike + ) = { val time = System.nanoTime - if(time - recentTeleportAttempt > (2 seconds).toNanos && router.DeploymentState == DriveState.Deployed && internalTelepad.Active && remoteTelepad.Active) { + if ( + time - recentTeleportAttempt > (2 seconds).toNanos && router.DeploymentState == DriveState.Deployed && internalTelepad.Active && remoteTelepad.Active + ) { val pguid = player.GUID val sguid = src.GUID val dguid = dest.GUID @@ -9208,9 +10228,11 @@ class WorldSessionActor extends Actor sendResponse(PlayerStateShiftMessage(ShiftState(0, dest.Position, player.Orientation.z))) UseRouterTelepadEffect(pguid, sguid, dguid) StopBundlingPackets() - continent.LocalEvents ! LocalServiceMessage(continent.Id, LocalAction.RouterTelepadTransport(pguid, pguid, sguid, dguid)) - } - else { + continent.LocalEvents ! LocalServiceMessage( + continent.Id, + LocalAction.RouterTelepadTransport(pguid, pguid, sguid, dguid) + ) + } else { log.warn(s"UseRouterTelepadSystem: can not teleport") } recentTeleportAttempt = time @@ -9223,7 +10245,7 @@ class WorldSessionActor extends Actor * @param srcGUID the origin of the teleportation * @param destGUID the destination of the teleportation */ - def UseRouterTelepadEffect(playerGUID : PlanetSideGUID, srcGUID : PlanetSideGUID, destGUID : PlanetSideGUID) : Unit = { + def UseRouterTelepadEffect(playerGUID: PlanetSideGUID, srcGUID: PlanetSideGUID, destGUID: PlanetSideGUID): Unit = { sendResponse(PlanetsideAttributeMessage(playerGUID, 64, 1)) //what does this do? sendResponse(GenericObjectActionMessage(srcGUID, 31)) sendResponse(GenericObjectActionMessage(destGUID, 32)) @@ -9233,7 +10255,7 @@ class WorldSessionActor extends Actor * Before a vehicle is removed from the game world, the following actions must be performed. * @param vehicle the vehicle */ - def BeforeUnloadVehicle(vehicle : Vehicle) : Unit = { + def BeforeUnloadVehicle(vehicle: Vehicle): Unit = { vehicle.Definition match { case GlobalDefinitions.ams if vehicle.Faction == player.Faction => log.info("BeforeUnload: cleaning up after a mobile spawn vehicle ...") @@ -9250,9 +10272,9 @@ class WorldSessionActor extends Actor * For a certain weapon that cna load ammunition, enforce that its magazine is empty. * @param weapon_guid the weapon */ - def EmptyMagazine(weapon_guid : PlanetSideGUID) : Unit = { + def EmptyMagazine(weapon_guid: PlanetSideGUID): Unit = { continent.GUID(weapon_guid) match { - case Some(tool : Tool) => + case Some(tool: Tool) => EmptyMagazine(weapon_guid, tool) case _ => ; } @@ -9264,63 +10286,68 @@ class WorldSessionActor extends Actor * @param weapon_guid the weapon (GUID) * @param tool the weapon (object) */ - def EmptyMagazine(weapon_guid : PlanetSideGUID, tool : Tool) : Unit = { + def EmptyMagazine(weapon_guid: PlanetSideGUID, tool: Tool): Unit = { tool.Magazine = 0 sendResponse(InventoryStateMessage(tool.AmmoSlot.Box.GUID, weapon_guid, 0)) sendResponse(ChangeFireStateMessage_Stop(weapon_guid)) - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Stop(player.GUID, weapon_guid)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ChangeFireState_Stop(player.GUID, weapon_guid) + ) sendResponse(WeaponDryFireMessage(weapon_guid)) continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.WeaponDryFire(player.GUID, weapon_guid)) } - def SaveLoadoutToDB(owner : Player, label : String, line : Int) = { - val charId = owner.CharId - val exosuitId = owner.ExoSuit.id - var clob : String = { - val clobber : StringBuilder = new StringBuilder() + def SaveLoadoutToDB(owner: Player, label: String, line: Int) = { + import ctx._ + + val items: String = { + val clobber: StringBuilder = new StringBuilder() //encode holsters - owner.Holsters() + owner + .Holsters() .zipWithIndex - .collect { case (slot, index) if slot.Equipment.nonEmpty => - clobber.append(EncodeLoadoutCLOBFragment(slot.Equipment.get, index)) + .collect { + case (slot, index) if slot.Equipment.nonEmpty => + clobber.append(EncodeLoadoutCLOBFragment(slot.Equipment.get, index)) } //encode inventory - owner.Inventory.Items.foreach { case InventoryItem(obj, index) => - clobber.append(EncodeLoadoutCLOBFragment(obj, index)) + owner.Inventory.Items.foreach { + case InventoryItem(obj, index) => + clobber.append(EncodeLoadoutCLOBFragment(obj, index)) } - clobber.mkString + clobber.mkString.drop(1) } - //database - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - Database.query(connection.sendPreparedStatement( - "SELECT id, exosuit_id, name, items FROM loadouts where characters_id = ? AND loadout_number = ?", Array(charId, line).toIndexedSeq - )).onComplete { - case scala.util.Success(queryResult) => - queryResult match { - case row: ArrayRowData => // Update - connection.sendPreparedStatement( - "UPDATE loadouts SET exosuit_id=?, name=?, items=? where id=?", List(exosuitId, label, clob.drop(1), row(0)) - ).onComplete { - case _ => - if(connection.isConnected) connection.disconnect - } - Thread.sleep(50) - case _ => // Save - connection.sendPreparedStatement( - "INSERT INTO loadouts (characters_id, loadout_number, exosuit_id, name, items) VALUES(?,?,?,?,?) RETURNING id", - List(charId, line, exosuitId, label, clob.drop(1)) - ).onComplete { - case _ => - if(connection.isConnected) connection.disconnect - } - Thread.sleep(50) - } - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - log.error(s"SaveLoadoutToDB: query failed - ${e.getMessage}") - } - case scala.util.Failure(e) => + + val result = for { + loadouts <- ctx.run( + query[persistence.Loadout].filter(_.charactersId == lift(owner.CharId)).filter(_.loadoutNumber == lift(line)) + ) + loadout <- loadouts.headOption match { + case Some(loadout) => + ctx.run( + query[persistence.Loadout] + .filter(_.id == lift(loadout.id)) + .update(_.exosuitId -> lift(owner.ExoSuit.id), _.name -> lift(label), _.items -> lift(items)) + ) + case None => + // FIXME id is long in objects but int in schema + val charId: Int = owner.CharId.toInt + ctx.run( + query[persistence.Loadout].insert( + _.exosuitId -> lift(owner.ExoSuit.id), + _.name -> lift(label), + _.items -> lift(items), + _.charactersId -> lift(charId), + _.loadoutNumber -> lift(line) + ) + ) + } + } yield loadout + + result.onComplete { + case Success(_) => + case Failure(e) => log.error(s"SaveLoadoutToDB: no connection ${e.getMessage}") } } @@ -9331,15 +10358,13 @@ class WorldSessionActor extends Actor * @param index * @return */ - def EncodeLoadoutCLOBFragment(equipment : Equipment, index : Int) : String = { - val ammoInfo : String = equipment match { - case tool : Tool => - tool.AmmoSlots - .zipWithIndex - .collect { case (ammoSlot, index2) if ammoSlot.AmmoTypeIndex != 0 => + def EncodeLoadoutCLOBFragment(equipment: Equipment, index: Int): String = { + val ammoInfo: String = equipment match { + case tool: Tool => + tool.AmmoSlots.zipWithIndex.collect { + case (ammoSlot, index2) if ammoSlot.AmmoTypeIndex != 0 => s"_$index2-${ammoSlot.AmmoTypeIndex}-${ammoSlot.AmmoType.id}" - } - .mkString + }.mkString case _ => "" } @@ -9369,84 +10394,64 @@ class WorldSessionActor extends Actor * @param owner the player who will be stipped of equipment * @return a `Future` predicated by the "promise" of the task being completed */ - def LoadDataBaseLoadouts(owner : Player) : Future[Any] = { - val result : Promise[Any] = Promise[Any]() - Database.getConnection.connect.onComplete { - case scala.util.Success(connection) => - connection.sendPreparedStatement( - "SELECT id, loadout_number, exosuit_id, name, items FROM loadouts where characters_id = ?", Array(owner.CharId).toIndexedSeq - ).onComplete { - case Success(queryResult) => - if(connection.isConnected) connection.disconnect - queryResult match { - case result: QueryResult => - if (result.rows.nonEmpty) { - val doll = new Player(Avatar("doll", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) //play dress up - log.debug(s"LoadDataBaseLoadouts: ${result.rows.size} saved loadout(s) for character with id ${owner.CharId}") - result.rows foreach{ row => - row.zipWithIndex.foreach{ case (value,i) => - val lLoadoutNumber : Int = value(1).asInstanceOf[Int] - val lExosuitId : Int = value(2).asInstanceOf[Int] - val lName : String = value(3).asInstanceOf[String] - val lItems : String = value(4).asInstanceOf[String] + def LoadDataBaseLoadouts(owner: Player): Future[Any] = { + import ctx._ - doll.ExoSuit = ExoSuitType(lExosuitId) + val result = ctx.run(query[persistence.Loadout].filter(_.charactersId == lift(owner.CharId))) - val args = lItems.split("/") - args.indices.foreach(i => { - val args2 = args(i).split(",") - val lType = args2(0) - val lIndex : Int = args2(1).toInt - val lObjectId : Int = args2(2).toInt + result.onComplete { + case Success(loadouts) => + loadouts foreach { loadout => + val doll = new Player(Avatar("doll", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Mute)) + doll.ExoSuit = ExoSuitType(loadout.exosuitId) - lType match { - case "Tool" => - doll.Slot(lIndex).Equipment = Tool(GetToolDefFromObjectID(lObjectId).asInstanceOf[ToolDefinition]) - case "AmmoBox" => - doll.Slot(lIndex).Equipment = AmmoBox(GetToolDefFromObjectID(lObjectId).asInstanceOf[AmmoBoxDefinition]) - case "ConstructionItem" => - doll.Slot(lIndex).Equipment = ConstructionItem(GetToolDefFromObjectID(lObjectId).asInstanceOf[ConstructionItemDefinition]) - case "SimpleItem" => - doll.Slot(lIndex).Equipment = SimpleItem(GetToolDefFromObjectID(lObjectId).asInstanceOf[SimpleItemDefinition]) - case "Kit" => - doll.Slot(lIndex).Equipment = Kit(GetToolDefFromObjectID(lObjectId).asInstanceOf[KitDefinition]) - case thing => - log.warn(s"LoadDataBaseLoadouts: what's that $thing doing in the loadout?") - } - if (args2.length == 4) { //tool ammo info - val args3 = args2(3).split("_") - (1 until args3.length).foreach(j => { - val args4 = args3(j).split("-") - val lAmmoSlots = args4(0).toInt - val lAmmoTypeIndex = args4(1).toInt - val lAmmoBoxDefinition = args4(2).toInt - doll.Slot(lIndex).Equipment.get.asInstanceOf[Tool].AmmoSlots(lAmmoSlots).AmmoTypeIndex = lAmmoTypeIndex - doll.Slot(lIndex).Equipment.get.asInstanceOf[Tool].AmmoSlots(lAmmoSlots).Box = AmmoBox(AmmoBoxDefinition(lAmmoBoxDefinition)) - }) - } - }) - owner.EquipmentLoadouts.SaveLoadout(doll, lName, lLoadoutNumber) - ClearHolstersAndInventory(doll) - } - // something to do at end of loading ? + loadout.items.split("/").zipWithIndex foreach { + case (value, i) => + val (objectType, objectIndex, objectId, toolAmmo) = value.split(",") match { + case Array(a, b, c) => (a, b.toInt, c.toInt, None) + case Array(a, b, c, d) => (a, b.toInt, c.toInt, Some(d)) + } + + objectType match { + case "Tool" => + doll.Slot(objectIndex).Equipment = Tool(GetToolDefFromObjectID(objectId).asInstanceOf[ToolDefinition]) + case "AmmoBox" => + doll.Slot(objectIndex).Equipment = + AmmoBox(GetToolDefFromObjectID(objectId).asInstanceOf[AmmoBoxDefinition]) + case "ConstructionItem" => + doll.Slot(objectIndex).Equipment = + ConstructionItem(GetToolDefFromObjectID(objectId).asInstanceOf[ConstructionItemDefinition]) + case "SimpleItem" => + doll.Slot(objectIndex).Equipment = + SimpleItem(GetToolDefFromObjectID(objectId).asInstanceOf[SimpleItemDefinition]) + case "Kit" => + doll.Slot(objectIndex).Equipment = Kit(GetToolDefFromObjectID(objectId).asInstanceOf[KitDefinition]) + case thing => + log.warn(s"LoadDataBaseLoadouts: what's that $thing doing in the loadout?") + } + + toolAmmo foreach { toolAmmo => + toolAmmo.split("_").drop(1).foreach { value => + val (ammoSlots, ammoTypeIndex, ammoBoxDefinition) = value.split("-") match { + case Array(a, b, c) => (a.toInt, b.toInt, c.toInt) } + doll.Slot(objectIndex).Equipment.get.asInstanceOf[Tool].AmmoSlots(ammoSlots).AmmoTypeIndex = + ammoTypeIndex + doll.Slot(objectIndex).Equipment.get.asInstanceOf[Tool].AmmoSlots(ammoSlots).Box = + AmmoBox(AmmoBoxDefinition(ammoBoxDefinition)) } - case _ => - log.debug(s"LoadDataBaseLoadouts: no saved loadout(s) for character with id ${owner.CharId}") - } - result success queryResult - case scala.util.Failure(e) => - if(connection.isConnected) connection.disconnect - val msg = s"LoadDataBaseLoadouts: unexpected query result - ${e.getMessage}" - log.error(msg) - result failure new Throwable(msg) + } + } + + owner.EquipmentLoadouts.SaveLoadout(doll, loadout.name, loadout.loadoutNumber) + ClearHolstersAndInventory(doll) } - case scala.util.Failure(e) => - val msg = s"LoadDataBaseLoadouts: no connection - ${e.getMessage}" - log.error(msg) - result failure new Throwable(msg) + + case Failure(e) => + log.error(s"LoadDataBaseLoadouts: ${e.getMessage}") } - result.future + + result } /** @@ -9454,8 +10459,8 @@ class WorldSessionActor extends Actor * no matter how spacious it is. * @param target the player who will be stipped of equipment */ - def ClearHolstersAndInventory(target : Player) : Unit = { - (0 until 4).foreach( index => { + def ClearHolstersAndInventory(target: Player): Unit = { + (0 until 4).foreach(index => { target.Slot(index).Equipment = None }) target.Inventory.Clear() @@ -9469,7 +10474,7 @@ class WorldSessionActor extends Actor * All equipment belongs to the implicit `Standard` certification. * @param target the player who will be assigned this selection of equipment */ - def LoadClassicDefault(target : Player) : Unit = { + def LoadClassicDefault(target: Player): Unit = { val faction = target.Faction target.ExoSuit = ExoSuitType.Standard target.Slot(0).Equipment = Tool(GlobalDefinitions.StandardPistol(faction)) @@ -9495,30 +10500,30 @@ class WorldSessionActor extends Actor * @see `Player.Slot` * @param target the player who will be assigned these loadouts */ - def LoadDefaultLoadouts(target : Player) : Unit = { + def LoadDefaultLoadouts(target: Player): Unit = { //cached defaults - val faction = target.Faction - val aiMaxAmmo = AmmoBox(GlobalDefinitions.AI_MAXAmmo(faction)) - val avMaxAmmo = AmmoBox(GlobalDefinitions.AV_MAXAmmo(faction)) + val faction = target.Faction + val aiMaxAmmo = AmmoBox(GlobalDefinitions.AI_MAXAmmo(faction)) + val avMaxAmmo = AmmoBox(GlobalDefinitions.AV_MAXAmmo(faction)) val antiVehicularAmmo = AmmoBox(GlobalDefinitions.AntiVehicularAmmo(faction)) - val armorCanister = AmmoBox(GlobalDefinitions.armor_canister) - val bank = Tool(GlobalDefinitions.bank) - val bolt = AmmoBox(GlobalDefinitions.bolt) - val decimator = Tool(GlobalDefinitions.phoenix) - val fragGrenade = Tool(GlobalDefinitions.frag_grenade) - val fragCartridge = AmmoBox(GlobalDefinitions.frag_cartridge) - val healthCanister = AmmoBox(GlobalDefinitions.health_canister) - val heavyRifle = Tool(GlobalDefinitions.HeavyRifle(faction)) - val heavyRifleAmmo= AmmoBox(GlobalDefinitions.HeavyRifleAmmo(faction)) - val heavyRifleAPAmmo= AmmoBox(GlobalDefinitions.HeavyRifleAPAmmo(faction)) - val jammerGrenade = Tool(GlobalDefinitions.jammer_grenade) + val armorCanister = AmmoBox(GlobalDefinitions.armor_canister) + val bank = Tool(GlobalDefinitions.bank) + val bolt = AmmoBox(GlobalDefinitions.bolt) + val decimator = Tool(GlobalDefinitions.phoenix) + val fragGrenade = Tool(GlobalDefinitions.frag_grenade) + val fragCartridge = AmmoBox(GlobalDefinitions.frag_cartridge) + val healthCanister = AmmoBox(GlobalDefinitions.health_canister) + val heavyRifle = Tool(GlobalDefinitions.HeavyRifle(faction)) + val heavyRifleAmmo = AmmoBox(GlobalDefinitions.HeavyRifleAmmo(faction)) + val heavyRifleAPAmmo = AmmoBox(GlobalDefinitions.HeavyRifleAPAmmo(faction)) + val jammerGrenade = Tool(GlobalDefinitions.jammer_grenade) val medicalApplicator = Tool(GlobalDefinitions.medicalapplicator) - val mediumRifle = Tool(GlobalDefinitions.MediumRifle(faction)) - val mediumRifleAmmo = AmmoBox(GlobalDefinitions.MediumRifleAmmo(faction)) - val medkit = Kit(GlobalDefinitions.medkit) - val rek = SimpleItem(GlobalDefinitions.remote_electronics_kit) - val rocket = AmmoBox(GlobalDefinitions.rocket) - val shotgunAmmo = AmmoBox(GlobalDefinitions.shotgun_shell) + val mediumRifle = Tool(GlobalDefinitions.MediumRifle(faction)) + val mediumRifleAmmo = AmmoBox(GlobalDefinitions.MediumRifleAmmo(faction)) + val medkit = Kit(GlobalDefinitions.medkit) + val rek = SimpleItem(GlobalDefinitions.remote_electronics_kit) + val rocket = AmmoBox(GlobalDefinitions.rocket) + val shotgunAmmo = AmmoBox(GlobalDefinitions.shotgun_shell) // val doll = new Player(Avatar("doll", faction, CharacterGender.Male, 0, CharacterVoice.Mute)) //play dress up doll.Slot(4).Equipment = Tool(GlobalDefinitions.StandardMelee(faction)) //will not be cleared @@ -9726,198 +10731,198 @@ class WorldSessionActor extends Actor target.EquipmentLoadouts.SaveLoadout(doll, "AV MAX", 9) } - def GetToolDefFromObjectID(objectID : Int) : Any = { + def GetToolDefFromObjectID(objectID: Int): Any = { import net.psforever.objects.GlobalDefinitions._ objectID match { //ammunition - case 0 => bullet_105mm - case 3 => bullet_12mm - case 6 => bullet_150mm - case 9 => bullet_15mm - case 16 => bullet_20mm - case 19 => bullet_25mm - case 21 => bullet_35mm - case 25 => bullet_75mm - case 28 => bullet_9mm - case 29 => bullet_9mm_AP - case 50 => ancient_ammo_combo - case 51 => ancient_ammo_vehicle - case 54 => anniversary_ammo - case 86 => aphelion_immolation_cannon_ammo - case 89 => aphelion_laser_ammo - case 97 => aphelion_plasma_rocket_ammo - case 101 => aphelion_ppa_ammo - case 106 => aphelion_starfire_ammo - case 111 => armor_canister - case 145 => bolt - case 154 => burster_ammo - case 180 => colossus_100mm_cannon_ammo - case 186 => colossus_burster_ammo - case 191 => colossus_chaingun_ammo - case 195 => colossus_cluster_bomb_ammo - case 205 => colossus_tank_cannon_ammo - case 209 => comet_ammo - case 265 => dualcycler_ammo - case 272 => energy_cell - case 275 => energy_gun_ammo - case 285 => falcon_ammo - case 287 => firebird_missile - case 300 => flamethrower_ammo - case 307 => flux_cannon_thresher_battery - case 310 => fluxpod_ammo - case 327 => frag_cartridge - case 331 => frag_grenade_ammo - case 347 => gauss_cannon_ammo - case 389 => health_canister - case 391 => heavy_grenade_mortar - case 393 => heavy_rail_beam_battery - case 399 => hellfire_ammo - case 403 => hunter_seeker_missile - case 413 => jammer_cartridge - case 417 => jammer_grenade_ammo - case 426 => lancer_cartridge - case 434 => liberator_bomb - case 463 => maelstrom_ammo - case 540 => melee_ammo - case 600 => oicw_ammo - case 630 => pellet_gun_ammo - case 637 => peregrine_dual_machine_gun_ammo - case 645 => peregrine_mechhammer_ammo - case 653 => peregrine_particle_cannon_ammo - case 656 => peregrine_rocket_pod_ammo - case 659 => peregrine_sparrow_ammo - case 664 => phalanx_ammo - case 674 => phoenix_missile - case 677 => plasma_cartridge - case 681 => plasma_grenade_ammo - case 693 => pounder_ammo - case 704 => pulse_battery - case 712 => quasar_ammo - case 722 => reaver_rocket - case 734 => rocket - case 745 => scattercannon_ammo - case 755 => shotgun_shell - case 756 => shotgun_shell_AP - case 762 => six_shooter_ammo - case 786 => skyguard_flak_cannon_ammo - case 791 => sparrow_ammo - case 820 => spitfire_aa_ammo - case 823 => spitfire_ammo - case 830 => starfire_ammo - case 839 => striker_missile_ammo - case 877 => trek_ammo - case 922 => upgrade_canister - case 998 => wasp_gun_ammo + case 0 => bullet_105mm + case 3 => bullet_12mm + case 6 => bullet_150mm + case 9 => bullet_15mm + case 16 => bullet_20mm + case 19 => bullet_25mm + case 21 => bullet_35mm + case 25 => bullet_75mm + case 28 => bullet_9mm + case 29 => bullet_9mm_AP + case 50 => ancient_ammo_combo + case 51 => ancient_ammo_vehicle + case 54 => anniversary_ammo + case 86 => aphelion_immolation_cannon_ammo + case 89 => aphelion_laser_ammo + case 97 => aphelion_plasma_rocket_ammo + case 101 => aphelion_ppa_ammo + case 106 => aphelion_starfire_ammo + case 111 => armor_canister + case 145 => bolt + case 154 => burster_ammo + case 180 => colossus_100mm_cannon_ammo + case 186 => colossus_burster_ammo + case 191 => colossus_chaingun_ammo + case 195 => colossus_cluster_bomb_ammo + case 205 => colossus_tank_cannon_ammo + case 209 => comet_ammo + case 265 => dualcycler_ammo + case 272 => energy_cell + case 275 => energy_gun_ammo + case 285 => falcon_ammo + case 287 => firebird_missile + case 300 => flamethrower_ammo + case 307 => flux_cannon_thresher_battery + case 310 => fluxpod_ammo + case 327 => frag_cartridge + case 331 => frag_grenade_ammo + case 347 => gauss_cannon_ammo + case 389 => health_canister + case 391 => heavy_grenade_mortar + case 393 => heavy_rail_beam_battery + case 399 => hellfire_ammo + case 403 => hunter_seeker_missile + case 413 => jammer_cartridge + case 417 => jammer_grenade_ammo + case 426 => lancer_cartridge + case 434 => liberator_bomb + case 463 => maelstrom_ammo + case 540 => melee_ammo + case 600 => oicw_ammo + case 630 => pellet_gun_ammo + case 637 => peregrine_dual_machine_gun_ammo + case 645 => peregrine_mechhammer_ammo + case 653 => peregrine_particle_cannon_ammo + case 656 => peregrine_rocket_pod_ammo + case 659 => peregrine_sparrow_ammo + case 664 => phalanx_ammo + case 674 => phoenix_missile + case 677 => plasma_cartridge + case 681 => plasma_grenade_ammo + case 693 => pounder_ammo + case 704 => pulse_battery + case 712 => quasar_ammo + case 722 => reaver_rocket + case 734 => rocket + case 745 => scattercannon_ammo + case 755 => shotgun_shell + case 756 => shotgun_shell_AP + case 762 => six_shooter_ammo + case 786 => skyguard_flak_cannon_ammo + case 791 => sparrow_ammo + case 820 => spitfire_aa_ammo + case 823 => spitfire_ammo + case 830 => starfire_ammo + case 839 => striker_missile_ammo + case 877 => trek_ammo + case 922 => upgrade_canister + case 998 => wasp_gun_ammo case 1000 => wasp_rocket_ammo case 1004 => winchester_ammo //weapons - case 14 => cannon_dropship_20mm - case 40 => advanced_missile_launcher_t - case 55 => anniversary_gun - case 56 => anniversary_guna - case 57 => anniversary_gunb - case 63 => apc_ballgun_l - case 64 => apc_ballgun_r - case 69 => apc_weapon_systema - case 70 => apc_weapon_systemb - case 72 => apc_weapon_systemc_nc - case 73 => apc_weapon_systemc_tr - case 74 => apc_weapon_systemc_vs - case 76 => apc_weapon_systemd_nc - case 77 => apc_weapon_systemd_tr - case 78 => apc_weapon_systemd_vs - case 119 => aurora_weapon_systema - case 120 => aurora_weapon_systemb - case 136 => battlewagon_weapon_systema - case 137 => battlewagon_weapon_systemb - case 138 => battlewagon_weapon_systemc - case 139 => battlewagon_weapon_systemd - case 140 => beamer - case 146 => bolt_driver - case 175 => chainblade - case 177 => chaingun_p - case 233 => cycler - case 262 => dropship_rear_turret - case 274 => energy_gun - case 276 => energy_gun_nc - case 278 => energy_gun_tr - case 280 => energy_gun_vs - case 298 => flail_weapon - case 299 => flamethrower - case 304 => flechette - case 306 => flux_cannon_thresher - case 324 => forceblade - case 336 => fury_weapon_systema - case 339 => galaxy_gunship_cannon - case 340 => galaxy_gunship_gun - case 342 => galaxy_gunship_tailgun - case 345 => gauss - case 371 => grenade_launcher_marauder - case 394 => heavy_rail_beam_magrider - case 396 => heavy_sniper - case 406 => hunterseeker - case 407 => ilc9 - case 411 => isp - case 421 => katana - case 425 => lancer - case 429 => lasher - case 433 => liberator_25mm_cannon - case 435 => liberator_bomb_bay - case 440 => liberator_weapon_system - case 445 => lightgunship_weapon_system - case 448 => lightning_weapon_system - case 462 => maelstrom - case 468 => magcutter - case 534 => mediumtransport_weapon_systemA - case 535 => mediumtransport_weapon_systemB - case 556 => mini_chaingun - case 587 => nchev_falcon - case 588 => nchev_scattercannon - case 589 => nchev_sparrow - case 599 => oicw - case 628 => particle_beam_magrider - case 629 => pellet_gun - case 666 => phalanx_avcombo - case 668 => phalanx_flakcombo - case 670 => phalanx_sgl_hevgatcan - case 673 => phoenix - case 699 => prowler_weapon_systemA - case 700 => prowler_weapon_systemB - case 701 => pulsar - case 706 => punisher - case 709 => quadassault_weapon_system - case 714 => r_shotgun - case 716 => radiator - case 730 => repeater - case 737 => rocklet - case 740 => rotarychaingun_mosquito - case 747 => scythe - case 761 => six_shooter - case 788 => skyguard_weapon_system - case 817 => spiker - case 822 => spitfire_aa_weapon - case 827 => spitfire_weapon - case 838 => striker - case 845 => suppressor - case 864 => thumper - case 866 => thunderer_weapon_systema - case 867 => thunderer_weapon_systemb - case 888 => trhev_burster - case 889 => trhev_dualcycler - case 890 => trhev_pounder - case 927 => vanguard_weapon_system - case 968 => vshev_comet - case 969 => vshev_quasar - case 970 => vshev_starfire - case 987 => vulture_bomb_bay - case 990 => vulture_nose_weapon_system - case 992 => vulture_tail_cannon + case 14 => cannon_dropship_20mm + case 40 => advanced_missile_launcher_t + case 55 => anniversary_gun + case 56 => anniversary_guna + case 57 => anniversary_gunb + case 63 => apc_ballgun_l + case 64 => apc_ballgun_r + case 69 => apc_weapon_systema + case 70 => apc_weapon_systemb + case 72 => apc_weapon_systemc_nc + case 73 => apc_weapon_systemc_tr + case 74 => apc_weapon_systemc_vs + case 76 => apc_weapon_systemd_nc + case 77 => apc_weapon_systemd_tr + case 78 => apc_weapon_systemd_vs + case 119 => aurora_weapon_systema + case 120 => aurora_weapon_systemb + case 136 => battlewagon_weapon_systema + case 137 => battlewagon_weapon_systemb + case 138 => battlewagon_weapon_systemc + case 139 => battlewagon_weapon_systemd + case 140 => beamer + case 146 => bolt_driver + case 175 => chainblade + case 177 => chaingun_p + case 233 => cycler + case 262 => dropship_rear_turret + case 274 => energy_gun + case 276 => energy_gun_nc + case 278 => energy_gun_tr + case 280 => energy_gun_vs + case 298 => flail_weapon + case 299 => flamethrower + case 304 => flechette + case 306 => flux_cannon_thresher + case 324 => forceblade + case 336 => fury_weapon_systema + case 339 => galaxy_gunship_cannon + case 340 => galaxy_gunship_gun + case 342 => galaxy_gunship_tailgun + case 345 => gauss + case 371 => grenade_launcher_marauder + case 394 => heavy_rail_beam_magrider + case 396 => heavy_sniper + case 406 => hunterseeker + case 407 => ilc9 + case 411 => isp + case 421 => katana + case 425 => lancer + case 429 => lasher + case 433 => liberator_25mm_cannon + case 435 => liberator_bomb_bay + case 440 => liberator_weapon_system + case 445 => lightgunship_weapon_system + case 448 => lightning_weapon_system + case 462 => maelstrom + case 468 => magcutter + case 534 => mediumtransport_weapon_systemA + case 535 => mediumtransport_weapon_systemB + case 556 => mini_chaingun + case 587 => nchev_falcon + case 588 => nchev_scattercannon + case 589 => nchev_sparrow + case 599 => oicw + case 628 => particle_beam_magrider + case 629 => pellet_gun + case 666 => phalanx_avcombo + case 668 => phalanx_flakcombo + case 670 => phalanx_sgl_hevgatcan + case 673 => phoenix + case 699 => prowler_weapon_systemA + case 700 => prowler_weapon_systemB + case 701 => pulsar + case 706 => punisher + case 709 => quadassault_weapon_system + case 714 => r_shotgun + case 716 => radiator + case 730 => repeater + case 737 => rocklet + case 740 => rotarychaingun_mosquito + case 747 => scythe + case 761 => six_shooter + case 788 => skyguard_weapon_system + case 817 => spiker + case 822 => spitfire_aa_weapon + case 827 => spitfire_weapon + case 838 => striker + case 845 => suppressor + case 864 => thumper + case 866 => thunderer_weapon_systema + case 867 => thunderer_weapon_systemb + case 888 => trhev_burster + case 889 => trhev_dualcycler + case 890 => trhev_pounder + case 927 => vanguard_weapon_system + case 968 => vshev_comet + case 969 => vshev_quasar + case 970 => vshev_starfire + case 987 => vulture_bomb_bay + case 990 => vulture_nose_weapon_system + case 992 => vulture_tail_cannon case 1002 => wasp_weapon_system case 1003 => winchester - case 267 => dynomite - case 330 => frag_grenade - case 416 => jammer_grenade - case 680 => plasma_grenade + case 267 => dynomite + case 330 => frag_grenade + case 416 => jammer_grenade + case 680 => plasma_grenade //medkits case 536 => medkit case 842 => super_armorkit @@ -9932,20 +10937,21 @@ class WorldSessionActor extends Actor case 213 => command_detonater case 297 => flail_targeting_laser //deployables - case 32 => ace - case 39 => advanced_ace + case 32 => ace + case 39 => advanced_ace case 148 => boomer case 149 => boomer_trigger - case _ => frag_grenade + case _ => frag_grenade } } + /** * Make this client display the deployment map, and all its available destination spawn points. * @see `AvatarDeadStateMessage` * @see `DeadState.Release` * @see `Player.Release` */ - def GoToDeploymentMap() : Unit = { + def GoToDeploymentMap(): Unit = { deadState = DeadState.Release //we may be alive or dead, may or may not be a corpse sendResponse(AvatarDeadStateMessage(DeadState.Release, 0, 0, player.Position, player.Faction, true)) DrawCurrentAmsSpawnPoint() @@ -9956,9 +10962,9 @@ class WorldSessionActor extends Actor * @param objWithSeat the object that owns seats (and weaponry) * @param seatNum the seat */ - def UpdateWeaponAtSeatPosition(objWithSeat : MountedWeapons, seatNum : Int) : Unit = { + def UpdateWeaponAtSeatPosition(objWithSeat: MountedWeapons, seatNum: Int): Unit = { objWithSeat.WeaponControlledFromSeat(seatNum) match { - case Some(weapon : Tool) => + case Some(weapon: Tool) => //update mounted weapon belonging to seat weapon.AmmoSlots.foreach(slot => { //update the magazine(s) in the weapon, specifically @@ -9978,15 +10984,13 @@ class WorldSessionActor extends Actor * @param fromZoneId the zone where the target current is located * @return how long in seconds the spawning process will take */ - def CountSpawnDelay(toZoneId : String, toSpawnPoint : SpawnPoint, fromZoneId : String) : Long = { + def CountSpawnDelay(toZoneId: String, toSpawnPoint: SpawnPoint, fromZoneId: String): Long = { val sanctuaryZoneId = Zones.SanctuaryZoneId(player.Faction) - if(fromZoneId.equals("Nowhere") || sanctuaryZoneId.equals(toZoneId)) { //to sanctuary + if (fromZoneId.equals("Nowhere") || sanctuaryZoneId.equals(toZoneId)) { //to sanctuary 0L - } - else if(!player.isAlive) { + } else if (!player.isAlive) { toSpawnPoint.Definition.Delay //TODO +cumulative death penalty - } - else { + } else { toSpawnPoint.Definition.Delay } } @@ -9998,34 +11002,58 @@ class WorldSessionActor extends Actor * @see `BindPlayerMessage` * @see `DeadState.Release` */ - def DrawCurrentAmsSpawnPoint() : Unit = { - if(deadState == DeadState.Release) { + def DrawCurrentAmsSpawnPoint(): Unit = { + if (deadState == DeadState.Release) { amsSpawnPoints .sortBy(tube => Vector3.DistanceSquared(tube.Position, player.Position)) .headOption match { case Some(tube) => log.info("DrawCurrentAmsSpawnPoint - new @ams spawn point drawn") - sendResponse(BindPlayerMessage(BindStatus.Available, "@ams", true, false, SpawnGroup.AMS, continent.Number, 5, tube.Position)) + sendResponse( + BindPlayerMessage( + BindStatus.Available, + "@ams", + true, + false, + SpawnGroup.AMS, + continent.Number, + 5, + tube.Position + ) + ) case None => log.info("DrawCurrentAmsSpawnPoint - no @ams spawn point drawn") - sendResponse(BindPlayerMessage(BindStatus.Unavailable, "@ams", false, false, SpawnGroup.AMS, continent.Number, 0, Vector3.Zero)) + sendResponse( + BindPlayerMessage( + BindStatus.Unavailable, + "@ams", + false, + false, + SpawnGroup.AMS, + continent.Number, + 0, + Vector3.Zero + ) + ) } } } - def SwapSquadUIElements(squad : Squad, fromIndex : Int, toIndex : Int) : Unit = { - if(squadUI.nonEmpty) { - val fromMember = squad.Membership(toIndex) //the players have already been swapped in the backend object + def SwapSquadUIElements(squad: Squad, fromIndex: Int, toIndex: Int): Unit = { + if (squadUI.nonEmpty) { + val fromMember = squad.Membership(toIndex) //the players have already been swapped in the backend object val fromCharId = fromMember.CharId - val toMember = squad.Membership(fromIndex) //the players have already been swapped in the backend object - val toCharId = toMember.CharId - val id = 11 - if(toCharId > 0) { + val toMember = squad.Membership(fromIndex) //the players have already been swapped in the backend object + val toCharId = toMember.CharId + val id = 11 + if (toCharId > 0) { //toMember and fromMember have swapped places val fromElem = squadUI(fromCharId) - val toElem = squadUI(toCharId) - squadUI(toCharId) = SquadUIElement(fromElem.name, toIndex, fromElem.zone, fromElem.health, fromElem.armor, fromElem.position) - squadUI(fromCharId) = SquadUIElement(toElem.name, fromIndex, toElem.zone, toElem.health, toElem.armor, toElem.position) + val toElem = squadUI(toCharId) + squadUI(toCharId) = + SquadUIElement(fromElem.name, toIndex, fromElem.zone, fromElem.health, fromElem.armor, fromElem.position) + squadUI(fromCharId) = + SquadUIElement(toElem.name, fromIndex, toElem.zone, toElem.health, toElem.armor, toElem.position) sendResponse(SquadMemberEvent.Add(id, toCharId, toIndex, fromElem.name, fromElem.zone, unk7 = 0)) sendResponse(SquadMemberEvent.Add(id, fromCharId, fromIndex, toElem.name, toElem.zone, unk7 = 0)) sendResponse( @@ -10037,8 +11065,7 @@ class WorldSessionActor extends Actor ) ) ) - } - else { + } else { //previous fromMember has moved toMember val elem = squadUI(fromCharId) squadUI(fromCharId) = SquadUIElement(elem.name, toIndex, elem.zone, elem.health, elem.armor, elem.position) @@ -10052,37 +11079,44 @@ class WorldSessionActor extends Actor ) } val charId = avatar.CharId - if(toCharId == charId) { + if (toCharId == charId) { sendResponse(PlanetsideAttributeMessage(player.GUID, 32, toIndex)) - } - else if(fromCharId == charId) { + } else if (fromCharId == charId) { sendResponse(PlanetsideAttributeMessage(player.GUID, 32, fromIndex)) } } } - def NoSquadUpdates() : Unit = { } + def NoSquadUpdates(): Unit = {} - def SquadUpdates() : Unit = { + def SquadUpdates(): Unit = { squadService ! SquadServiceMessage( player, continent, - SquadServiceAction.Update(player.CharId, player.Health, player.MaxHealth, player.Armor, player.MaxArmor, player.Position, continent.Number) + SquadServiceAction.Update( + player.CharId, + player.Health, + player.MaxHealth, + player.Armor, + player.MaxArmor, + player.Position, + continent.Number + ) ) } - def PeriodicUpdatesWhenEnrolledInSquad() : Unit = { + def PeriodicUpdatesWhenEnrolledInSquad(): Unit = { queuedSquadActions(squadUpdateCounter)() squadUpdateCounter = (squadUpdateCounter + 1) % queuedSquadActions.length } - def CapacitorTick(jump_thrust : Boolean): Unit = { - if(player.ExoSuit == ExoSuitType.MAX) { + def CapacitorTick(jump_thrust: Boolean): Unit = { + if (player.ExoSuit == ExoSuitType.MAX) { //Discharge - if(jump_thrust || player.isOverdrived || player.isShielded) { - if(player.CapacitorState == CapacitorStateType.Discharging) { + if (jump_thrust || player.isOverdrived || player.isShielded) { + if (player.CapacitorState == CapacitorStateType.Discharging) { // Previous tick was already discharging, calculate how much energy to drain from time between the two ticks - val timeDiff = (System.currentTimeMillis() - player.CapacitorLastUsedMillis).toFloat / 1000 + val timeDiff = (System.currentTimeMillis() - player.CapacitorLastUsedMillis).toFloat / 1000 val drainAmount = player.ExoSuitDef.CapacitorDrainPerSecond.toFloat * timeDiff player.Capacitor -= drainAmount sendResponse(PlanetsideAttributeMessage(player.GUID, 7, player.Capacitor.toInt)) @@ -10092,11 +11126,13 @@ class WorldSessionActor extends Actor } } // Charge - else if(player.Capacitor < player.ExoSuitDef.MaxCapacitor - && (player.CapacitorState == CapacitorStateType.Idle || player.CapacitorState == CapacitorStateType.Charging || (player.CapacitorState == CapacitorStateType.ChargeDelay && System.currentTimeMillis() - player.CapacitorLastUsedMillis > player.ExoSuitDef.CapacitorRechargeDelayMillis))) - { - if(player.CapacitorState == CapacitorStateType.Charging) { - val timeDiff = (System.currentTimeMillis() - player.CapacitorLastChargedMillis).toFloat / 1000 + else if ( + player.Capacitor < player.ExoSuitDef.MaxCapacitor + && (player.CapacitorState == CapacitorStateType.Idle || player.CapacitorState == CapacitorStateType.Charging || (player.CapacitorState == CapacitorStateType.ChargeDelay && System + .currentTimeMillis() - player.CapacitorLastUsedMillis > player.ExoSuitDef.CapacitorRechargeDelayMillis)) + ) { + if (player.CapacitorState == CapacitorStateType.Charging) { + val timeDiff = (System.currentTimeMillis() - player.CapacitorLastChargedMillis).toFloat / 1000 val chargeAmount = player.ExoSuitDef.CapacitorRechargePerSecond * timeDiff player.Capacitor += chargeAmount sendResponse(PlanetsideAttributeMessage(player.GUID, 7, player.Capacitor.toInt)) @@ -10105,42 +11141,53 @@ class WorldSessionActor extends Actor } } - if(player.Faction == PlanetSideEmpire.VS) { + if (player.Faction == PlanetSideEmpire.VS) { // Start charge delay for VS when not boosting - if(!jump_thrust && player.CapacitorState == CapacitorStateType.Discharging ) { + if (!jump_thrust && player.CapacitorState == CapacitorStateType.Discharging) { player.CapacitorState = CapacitorStateType.ChargeDelay } - } - else { + } else { // Start charge delay for other factions if capacitor is empty or special ability is off - if(player.CapacitorState == CapacitorStateType.Discharging && (player.Capacitor == 0 || (!player.isOverdrived && !player.isShielded))) { + if ( + player.CapacitorState == CapacitorStateType.Discharging && (player.Capacitor == 0 || (!player.isOverdrived && !player.isShielded)) + ) { player.CapacitorState = CapacitorStateType.ChargeDelay ToggleMaxSpecialState(enable = false) } } - } - else { - if(player.CapacitorState != CapacitorStateType.Idle) { + } else { + if (player.CapacitorState != CapacitorStateType.Idle) { player.CapacitorState = CapacitorStateType.Idle } } } - def ToggleMaxSpecialState(enable : Boolean): Unit = { - if(player.ExoSuit == ExoSuitType.MAX) { - if(enable) { + def ToggleMaxSpecialState(enable: Boolean): Unit = { + if (player.ExoSuit == ExoSuitType.MAX) { + if (enable) { player.Faction match { - case PlanetSideEmpire.TR => if(player.Capacitor == player.ExoSuitDef.MaxCapacitor) player.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive - case PlanetSideEmpire.NC => if(player.Capacitor > 0) player.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded - case _ => log.warn(s"Player ${player.Name} tried to use a MAX special ability but their faction doesn't have one") + case PlanetSideEmpire.TR => + if (player.Capacitor == player.ExoSuitDef.MaxCapacitor) + player.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive + case PlanetSideEmpire.NC => + if (player.Capacitor > 0) player.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded + case _ => + log.warn(s"Player ${player.Name} tried to use a MAX special ability but their faction doesn't have one") } - if(player.UsingSpecial == SpecialExoSuitDefinition.Mode.Overdrive || player.UsingSpecial == SpecialExoSuitDefinition.Mode.Shielded) { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttributeToAll(player.GUID, 8, 1)) + if ( + player.UsingSpecial == SpecialExoSuitDefinition.Mode.Overdrive || player.UsingSpecial == SpecialExoSuitDefinition.Mode.Shielded + ) { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttributeToAll(player.GUID, 8, 1) + ) } - } - else { + } else { player.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.PlanetsideAttributeToAll(player.GUID, 8, 0)) + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.PlanetsideAttributeToAll(player.GUID, 8, 0) + ) } } } @@ -10153,16 +11200,16 @@ class WorldSessionActor extends Actor * @param targets the globally unique identifiers of the immediate detected targets * @return channels names that allow direct communication to specific realized targets */ - def FindDetectedProjectileTargets(targets : Iterable[PlanetSideGUID]) : Iterable[String] = { + def FindDetectedProjectileTargets(targets: Iterable[PlanetSideGUID]): Iterable[String] = { targets .map { ValidObject } .flatMap { - case Some(obj : Vehicle) if !obj.Cloaked => + case Some(obj: Vehicle) if !obj.Cloaked => //TODO hint: vehicleService ! VehicleServiceMessage(s"${obj.Actor}", VehicleAction.ProjectileAutoLockAwareness(mode)) obj.Seats.values.collect { case seat if seat.isOccupied => seat.Occupant.get.Name } - case Some(obj : Mountable) => + case Some(obj: Mountable) => obj.Seats.values.collect { case seat if seat.isOccupied => seat.Occupant.get.Name } - case Some(obj : Player) if obj.ExoSuit == ExoSuitType.MAX => + case Some(obj: Player) if obj.ExoSuit == ExoSuitType.MAX => Seq(obj.Name) case _ => Seq.empty[String] @@ -10179,10 +11226,10 @@ class WorldSessionActor extends Actor * @param projectile_guid the globally unique identifier of the projectile * @param projectile the projectile */ - def CleanUpRemoteProjectile(projectile_guid : PlanetSideGUID, projectile : Projectile) : Unit = { + def CleanUpRemoteProjectile(projectile_guid: PlanetSideGUID, projectile: Projectile): Unit = { projectiles.indexWhere({ case Some(p) => p eq projectile - case None => false + case None => false }) match { case -1 => ; //required catch case index if projectilesToCleanUp(index) => @@ -10201,30 +11248,39 @@ class WorldSessionActor extends Actor * @param projectile the projectile * @param local_index an index of the absolute sequence of the projectile, for internal lists */ - def CleanUpRemoteProjectile(projectile_guid : PlanetSideGUID, projectile : Projectile, local_index : Int) : Unit = { - continent.AvatarEvents ! AvatarServiceMessage(continent.Id, AvatarAction.ProjectileExplodes(player.GUID, projectile_guid, projectile)) + def CleanUpRemoteProjectile(projectile_guid: PlanetSideGUID, projectile: Projectile, local_index: Int): Unit = { + continent.AvatarEvents ! AvatarServiceMessage( + continent.Id, + AvatarAction.ProjectileExplodes(player.GUID, projectile_guid, projectile) + ) taskResolver ! UnregisterProjectile(projectile) projectiles(local_index) match { case Some(obj) if !obj.isResolved => obj.Miss - case _ => ; + case _ => ; } projectilesToCleanUp(local_index) = false } - def DeactivateImplants() : Unit = { + def DeactivateImplants(): Unit = { //TODO 3 implant slots? player.Implants.indices.foreach { slot => - if(player.ImplantSlot(slot).Active) { + if (player.ImplantSlot(slot).Active) { player.Actor ! Player.ImplantActivation(slot, 0) } } } - def CheckForHitPositionDiscrepancy(projectile_guid: PlanetSideGUID, hitPos : Vector3, target : PlanetSideGameObject with FactionAffinity with Vitality): Unit = { + def CheckForHitPositionDiscrepancy( + projectile_guid: PlanetSideGUID, + hitPos: Vector3, + target: PlanetSideGameObject with FactionAffinity with Vitality + ): Unit = { val hitPositionDiscrepancy = Vector3.DistanceSquared(hitPos, target.Position) - if(hitPositionDiscrepancy > WorldConfig.Get[Int]("antihack.HitPositionDiscrepancyThreshold")) { + if (hitPositionDiscrepancy > Config.app.antiCheat.hitPositionDiscrepancyThreshold) { // If the target position on the server does not match the position where the projectile landed within reason there may be foul play - log.warn(s"Shot guid ${projectile_guid} has hit location discrepancy with target location. Target: ${target.Position} Reported: ${hitPos}, Distance: ${hitPositionDiscrepancy} / ${math.sqrt(hitPositionDiscrepancy).toFloat}; suspect") + log.warn( + s"Shot guid ${projectile_guid} has hit location discrepancy with target location. Target: ${target.Position} Reported: ${hitPos}, Distance: ${hitPositionDiscrepancy} / ${math.sqrt(hitPositionDiscrepancy).toFloat}; suspect" + ) } } @@ -10233,7 +11289,7 @@ class WorldSessionActor extends Actor * @param tplayer na * @param zone na */ - def HandleReleaseAvatar(tplayer : Player, zone : Zone) : Unit = { + def HandleReleaseAvatar(tplayer: Player, zone: Zone): Unit = { tplayer.Release tplayer.VehicleSeated match { case None => @@ -10253,7 +11309,7 @@ class WorldSessionActor extends Actor * it starts counting at one rather than zero. * @param p the player's globally unique identifier number */ - def NormalTurnCounter(p : PlanetSideGUID) : Unit = { + def NormalTurnCounter(p: PlanetSideGUID): Unit = { upstreamMessageCount = 1 + upstreamMessageCount % Int.MaxValue } @@ -10266,9 +11322,9 @@ class WorldSessionActor extends Actor * the counter does not accumulate properly. * @param guid the player's globally unique identifier number */ - def TurnCounterDuringInterim(guid : PlanetSideGUID) : Unit = { + def TurnCounterDuringInterim(guid: PlanetSideGUID): Unit = { upstreamMessageCount = 0 - if(player.GUID == guid && player.Zone == continent) { + if (player.GUID == guid && player.Zone == continent) { turnCounterFunc = NormalTurnCounter } } @@ -10295,12 +11351,12 @@ class WorldSessionActor extends Actor * and only at that time will begin registering `KeepAliveMessage` to mark the end of their interim period. * @param guid the player's globally unique identifier number */ - def TurnCounterDuringInterimWhileInPassengerSeat(guid : PlanetSideGUID) : Unit = { + def TurnCounterDuringInterimWhileInPassengerSeat(guid: PlanetSideGUID): Unit = { upstreamMessageCount = 0 val pguid = player.GUID - if(pguid == guid && player.Zone == continent) { + if (pguid == guid && player.Zone == continent) { (continent.GUID(interimUngunnedVehicle), interimUngunnedVehicle, interimUngunnedVehicleSeat) match { - case (Some(vehicle : Vehicle), Some(vguid), Some(seat)) => + case (Some(vehicle: Vehicle), Some(vguid), Some(seat)) => //sit down sendResponse(ObjectAttachMessage(vguid, pguid, seat)) AccessContents(vehicle) @@ -10323,7 +11379,7 @@ class WorldSessionActor extends Actor * @see `KeepAliveMessage` * @see `keepAliveFunc` */ - def NormalKeepAlive() : Unit = { } + def NormalKeepAlive(): Unit = {} /** * The atypical response to receiving a `KeepAliveMessage` packet from the client.
@@ -10335,15 +11391,15 @@ class WorldSessionActor extends Actor * @see `turnCounterFunc` * @see `persist` */ - def KeepAlivePersistence() : Unit = { + def KeepAlivePersistence(): Unit = { //log.info(s"KeepAlive in a vehicle - $upstreamMessageCount") interimUngunnedVehicle = None persist() turnCounterFunc(player.GUID) } - def AdministrativeKick(tplayer : Player, permitKickSelf : Boolean = false) : Boolean = { - if(permitKickSelf || tplayer != player) { //stop kicking yourself + def AdministrativeKick(tplayer: Player, permitKickSelf: Boolean = false): Boolean = { + if (permitKickSelf || tplayer != player) { //stop kicking yourself tplayer.death_by = -1 accountPersistence ! AccountPersistenceService.Kick(tplayer.Name) //get out of that vehicle @@ -10351,31 +11407,33 @@ class WorldSessionActor extends Actor case (Some(obj), Some(seatNum)) => tplayer.VehicleSeated = None obj.Seats(seatNum).Occupant = None - continent.VehicleEvents ! VehicleServiceMessage(continent.Id, VehicleAction.KickPassenger(tplayer.GUID, seatNum, false, obj.GUID)) + continent.VehicleEvents ! VehicleServiceMessage( + continent.Id, + VehicleAction.KickPassenger(tplayer.GUID, seatNum, false, obj.GUID) + ) case _ => ; } true - } - else { + } else { false } } - def KickedByAdministration() : Unit = { + def KickedByAdministration(): Unit = { sendResponse(DisconnectMessage("Your account has been logged out by a Customer Service Representative.")) Thread.sleep(300) sendResponse(DropSession(sessionId, "kick by GM")) } - def ImmediateDisconnect() : Unit = { - if(avatar != null) { + def ImmediateDisconnect(): Unit = { + if (avatar != null) { accountPersistence ! AccountPersistenceService.Logout(avatar.name) } sendResponse(DropCryptoSession()) sendResponse(DropSession(sessionId, "user quit")) } - def failWithError(error : String) = { + def failWithError(error: String) = { log.error(error) sendResponse(ConnectionClose()) } @@ -10383,18 +11441,19 @@ class WorldSessionActor extends Actor /** * Persistent collector that intercepts `GamePacket` and `ControlPacket` messages that are being sent towards the network. */ - private val packetBundlingCollector : MultiPacketCollector = new MultiPacketCollector() + private val packetBundlingCollector: MultiPacketCollector = new MultiPacketCollector() + /** * Re-assigned function used to direct/intercept packets being sent towards the network. * Defaults to directing the packets. */ - private var packetBundlingFunc : (PlanetSidePacket)=>Option[PlanetSidePacket] = NoBundlingAction + private var packetBundlingFunc: (PlanetSidePacket) => Option[PlanetSidePacket] = NoBundlingAction /** * Start packet bundling by assigning the appropriate function. * @see `sendResponse(PlanetSidePacket) : Unit` */ - def StartBundlingPackets() : Unit = { + def StartBundlingPackets(): Unit = { log.trace("WORLD SEND: STARTED BUNDLING PACKETS") packetBundlingFunc = PerformBundlingAction } @@ -10404,7 +11463,7 @@ class WorldSessionActor extends Actor * If any bundles are in the collector's buffer, push that bundle out towards the network. * @see `sendResponse(PlanetSidePacket) : Unit` */ - def StopBundlingPackets() : Unit = { + def StopBundlingPackets(): Unit = { log.trace("WORLD SEND: PACKET BUNDLING SUSPENDED") packetBundlingFunc = NoBundlingAction packetBundlingCollector.Bundle match { @@ -10419,11 +11478,11 @@ class WorldSessionActor extends Actor * @param cont the packet * @return the same packet, to indicate it was sent */ - private def NoBundlingAction(cont : PlanetSidePacket) : Option[PlanetSidePacket] = { + private def NoBundlingAction(cont: PlanetSidePacket): Option[PlanetSidePacket] = { cont match { - case game : PlanetSideGamePacket => + case game: PlanetSideGamePacket => sendResponse(PacketCoding.CreateGamePacket(0, game)) - case control : PlanetSideControlPacket => + case control: PlanetSideControlPacket => sendResponse(PacketCoding.CreateControlPacket(control)) case _ => ; } @@ -10436,7 +11495,7 @@ class WorldSessionActor extends Actor * @param cont the packet * @return always `None`, to indicate the packet was not sent */ - private def PerformBundlingAction(cont : PlanetSidePacket) : Option[PlanetSidePacket] = { + private def PerformBundlingAction(cont: PlanetSidePacket): Option[PlanetSidePacket] = { log.trace("WORLD SEND, BUNDLED: " + cont) packetBundlingCollector.Add(cont) None @@ -10447,7 +11506,7 @@ class WorldSessionActor extends Actor * Alternately, catch those packets and retain them to send out a bundled message. * @param cont the packet */ - def sendResponse(cont : PlanetSidePacket) : Unit = packetBundlingFunc(cont) + def sendResponse(cont: PlanetSidePacket): Unit = packetBundlingFunc(cont) /** * `KeepAliveMessage` is a special `PlanetSideGamePacket` that is excluded from being bundled when it is sent to the network.
@@ -10461,7 +11520,7 @@ class WorldSessionActor extends Actor * @see `clientKeepAlive` * @param cont a `KeepAliveMessage` packet */ - def sendResponse(cont : KeepAliveMessage) : Unit = { + def sendResponse(cont: KeepAliveMessage): Unit = { sendResponse(PacketCoding.CreateGamePacket(0, cont)) packetBundlingCollector.Bundle match { case Some(bundle) => @@ -10471,88 +11530,96 @@ class WorldSessionActor extends Actor } } - def sendResponse(cont : PlanetSidePacketContainer) : Unit = { + def sendResponse(cont: PlanetSidePacketContainer): Unit = { log.trace("WORLD SEND: " + cont) sendResponse(cont.asInstanceOf[Any]) } - def sendResponse(cont : MultiPacketBundle) : Unit = { + def sendResponse(cont: MultiPacketBundle): Unit = { sendResponse(cont.asInstanceOf[Any]) } - def sendResponse(msg : Any) : Unit = { + def sendResponse(msg: Any): Unit = { MDC("sessionId") = sessionId.toString rightRef !> msg } - def sendRawResponse(pkt : ByteVector) = { + def sendRawResponse(pkt: ByteVector) = { log.trace("WORLD SEND RAW: " + pkt) sendResponse(RawPacket(pkt)) } } object WorldSessionActor { + /** Object purchasing cooldowns.
* key - object id
* value - time last used (ms) - * */ - val delayedPurchaseEntries : Map[Int, Long] = Map( - GlobalDefinitions.ams.ObjectId -> 300000, //5min - GlobalDefinitions.ant.ObjectId -> 300000, //5min - GlobalDefinitions.apc_nc.ObjectId -> 300000, //5min - GlobalDefinitions.apc_tr.ObjectId -> 300000, //5min - GlobalDefinitions.apc_vs.ObjectId -> 300000, //5min - GlobalDefinitions.aurora.ObjectId -> 300000, //5min - GlobalDefinitions.battlewagon.ObjectId -> 300000, //5min - GlobalDefinitions.dropship.ObjectId -> 300000, //5min - GlobalDefinitions.flail.ObjectId -> 300000, //5min - GlobalDefinitions.fury.ObjectId -> 300000, //5min - GlobalDefinitions.galaxy_gunship.ObjectId -> 600000, //10min - GlobalDefinitions.lodestar.ObjectId -> 300000, //5min - GlobalDefinitions.liberator.ObjectId -> 300000, //5min - GlobalDefinitions.lightgunship.ObjectId -> 300000, //5min - GlobalDefinitions.lightning.ObjectId -> 300000, //5min - GlobalDefinitions.magrider.ObjectId -> 300000, //5min - GlobalDefinitions.mediumtransport.ObjectId -> 300000, //5min - GlobalDefinitions.mosquito.ObjectId -> 300000, //5min - GlobalDefinitions.phantasm.ObjectId -> 300000, //5min - GlobalDefinitions.prowler.ObjectId -> 300000, //5min - GlobalDefinitions.quadassault.ObjectId -> 300000, //5min - GlobalDefinitions.quadstealth.ObjectId -> 300000, //5min - GlobalDefinitions.router.ObjectId -> 300000, //5min - GlobalDefinitions.switchblade.ObjectId -> 300000, //5min - GlobalDefinitions.skyguard.ObjectId -> 300000, //5min - GlobalDefinitions.threemanheavybuggy.ObjectId -> 300000, //5min - GlobalDefinitions.thunderer.ObjectId -> 300000, //5min + */ + val delayedPurchaseEntries: Map[Int, Long] = Map( + GlobalDefinitions.ams.ObjectId -> 300000, //5min + GlobalDefinitions.ant.ObjectId -> 300000, //5min + GlobalDefinitions.apc_nc.ObjectId -> 300000, //5min + GlobalDefinitions.apc_tr.ObjectId -> 300000, //5min + GlobalDefinitions.apc_vs.ObjectId -> 300000, //5min + GlobalDefinitions.aurora.ObjectId -> 300000, //5min + GlobalDefinitions.battlewagon.ObjectId -> 300000, //5min + GlobalDefinitions.dropship.ObjectId -> 300000, //5min + GlobalDefinitions.flail.ObjectId -> 300000, //5min + GlobalDefinitions.fury.ObjectId -> 300000, //5min + GlobalDefinitions.galaxy_gunship.ObjectId -> 600000, //10min + GlobalDefinitions.lodestar.ObjectId -> 300000, //5min + GlobalDefinitions.liberator.ObjectId -> 300000, //5min + GlobalDefinitions.lightgunship.ObjectId -> 300000, //5min + GlobalDefinitions.lightning.ObjectId -> 300000, //5min + GlobalDefinitions.magrider.ObjectId -> 300000, //5min + GlobalDefinitions.mediumtransport.ObjectId -> 300000, //5min + GlobalDefinitions.mosquito.ObjectId -> 300000, //5min + GlobalDefinitions.phantasm.ObjectId -> 300000, //5min + GlobalDefinitions.prowler.ObjectId -> 300000, //5min + GlobalDefinitions.quadassault.ObjectId -> 300000, //5min + GlobalDefinitions.quadstealth.ObjectId -> 300000, //5min + GlobalDefinitions.router.ObjectId -> 300000, //5min + GlobalDefinitions.switchblade.ObjectId -> 300000, //5min + GlobalDefinitions.skyguard.ObjectId -> 300000, //5min + GlobalDefinitions.threemanheavybuggy.ObjectId -> 300000, //5min + GlobalDefinitions.thunderer.ObjectId -> 300000, //5min GlobalDefinitions.two_man_assault_buggy.ObjectId -> 300000, //5min - GlobalDefinitions.twomanhoverbuggy.ObjectId -> 300000, //5min - GlobalDefinitions.twomanheavybuggy.ObjectId -> 300000, //5min - GlobalDefinitions.vanguard.ObjectId -> 300000, //5min - GlobalDefinitions.vulture.ObjectId -> 300000, //5min - GlobalDefinitions.wasp.ObjectId -> 300000, //5min - GlobalDefinitions.flamethrower.ObjectId -> 180000 //3min + GlobalDefinitions.twomanhoverbuggy.ObjectId -> 300000, //5min + GlobalDefinitions.twomanheavybuggy.ObjectId -> 300000, //5min + GlobalDefinitions.vanguard.ObjectId -> 300000, //5min + GlobalDefinitions.vulture.ObjectId -> 300000, //5min + GlobalDefinitions.wasp.ObjectId -> 300000, //5min + GlobalDefinitions.flamethrower.ObjectId -> 180000 //3min ) + /** Object use cooldowns.
* key - object id
* value - time last used (ms) - * */ - val delayedGratificationEntries : Map[Int, Long] = Map( - GlobalDefinitions.medkit.ObjectId -> 5000, //5s - GlobalDefinitions.super_armorkit.ObjectId -> 1200000, //20min - GlobalDefinitions.super_medkit.ObjectId -> 1200000, //20min + */ + val delayedGratificationEntries: Map[Int, Long] = Map( + GlobalDefinitions.medkit.ObjectId -> 5000, //5s + GlobalDefinitions.super_armorkit.ObjectId -> 1200000, //20min + GlobalDefinitions.super_medkit.ObjectId -> 1200000, //20min GlobalDefinitions.super_staminakit.ObjectId -> 1200000 //20min ) - final case class ResponseToSelf(pkt : PlanetSideGamePacket) + final case class ResponseToSelf(pkt: PlanetSideGamePacket) private final case class PokeClient() private final case class ServerLoaded() - private final case class NewPlayerLoaded(tplayer : Player) - private final case class PlayerLoaded(tplayer : Player) - private final case class PlayerFailedToLoad(tplayer : Player) - private final case class CreateCharacter(name : String, head : Int, voice : CharacterVoice.Value, gender : CharacterGender.Value, empire : PlanetSideEmpire.Value) + private final case class NewPlayerLoaded(tplayer: Player) + private final case class PlayerLoaded(tplayer: Player) + private final case class PlayerFailedToLoad(tplayer: Player) + private final case class CreateCharacter( + name: String, + head: Int, + voice: CharacterVoice.Value, + gender: CharacterGender.Value, + empire: PlanetSideEmpire.Value + ) private final case class ListAccountCharacters() - private final case class SetCurrentAvatar(tplayer : Player, max_attempts : Int, attempt : Int = 0) + private final case class SetCurrentAvatar(tplayer: Player, max_attempts: Int, attempt: Int = 0) private final case class ZoningReset() final val ftes = ( @@ -10560,7 +11627,7 @@ object WorldSessionActor { FirstTimeEvents.Standard.All ++ FirstTimeEvents.Cavern.All ++ FirstTimeEvents.TR.All ++ FirstTimeEvents.NC.All ++ FirstTimeEvents.VS.All ++ FirstTimeEvents.Generic - ).toList + ).toList /** * The message that progresses some form of user-driven activity with a certain eventual outcome @@ -10570,17 +11637,28 @@ object WorldSessionActor { * @param completionAction a finalizing action performed once the progress reaches 100(%) * @param tickAction an action that is performed for each increase of progress */ - final case class ProgressEvent(delta : Float, completionAction : ()=>Unit, tickAction : Float=>Boolean) + final case class ProgressEvent(delta: Float, completionAction: () => Unit, tickAction: Float => Boolean) - private final val zoningCountdownMessages : Seq[Int] = Seq(5,10,20) + private final val zoningCountdownMessages: Seq[Int] = Seq(5, 10, 20) - protected final case class SquadUIElement(name : String, index : Int, zone : Int, health : Int, armor : Int, position : Vector3) + protected final case class SquadUIElement( + name: String, + index: Int, + zone: Int, + health: Int, + armor: Int, + position: Vector3 + ) private final case class NtuCharging(tplayer: Player, vehicle: Vehicle) private final case class NtuDischarging(tplayer: Player, vehicle: Vehicle, silo_guid: PlanetSideGUID) - private final case class FinalizeDeployable(obj : PlanetSideGameObject with Deployable, tool : ConstructionItem, index : Int) + private final case class FinalizeDeployable( + obj: PlanetSideGameObject with Deployable, + tool: ConstructionItem, + index: Int + ) - private final case class LoadedRemoteProjectile(projectile_guid : PlanetSideGUID, projectile : Option[Projectile]) + private final case class LoadedRemoteProjectile(projectile_guid: PlanetSideGUID, projectile: Option[Projectile]) } diff --git a/pslogin/src/main/scala/Zones.scala b/pslogin/src/main/scala/Zones.scala index fd51684f..00e96082 100644 --- a/pslogin/src/main/scala/Zones.scala +++ b/pslogin/src/main/scala/Zones.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import akka.actor.ActorContext import net.psforever.objects.GlobalDefinitions import net.psforever.objects.serverobject.resourcesilo.ResourceSilo @@ -8,325 +9,393 @@ import net.psforever.types.PlanetSideEmpire import scala.concurrent.duration._ import scala.concurrent.Await +import scala.collection.immutable.HashMap object Zones { - val z1 = new Zone("z1", Await.result(Maps.map01, 30 seconds), 1) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + val zones: HashMap[String, Zone] = HashMap( + ( + "z1", + new Zone("z1", Await.result(Maps.map01, 30 seconds), 1) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "z2", + new Zone("z2", Await.result(Maps.map02, 30 seconds), 2) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z2 = new Zone("z2", Await.result(Maps.map02, 30 seconds), 2) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "z3", + new Zone("z3", Await.result(Maps.map03, 30 seconds), 3) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "z4", + new Zone("z4", Await.result(Maps.map04, 30 seconds), 4) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z3 = new Zone("z3", Await.result(Maps.map03, 30 seconds), 3) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) - InitZoneAmenities(zone = this) - } - } + 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 + } + } + ), + ( + "z5", + new Zone("z5", Await.result(Maps.map05, 30 seconds), 5) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z4 = new Zone("z4", Await.result(Maps.map04, 30 seconds), 4) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "z6", + new Zone("z6", Await.result(Maps.map06, 30 seconds), 6) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) + import net.psforever.types.PlanetSideEmpire + BuildingByMapId(2).get.Faction = PlanetSideEmpire.VS + BuildingByMapId(48).get.Faction = PlanetSideEmpire.VS + BuildingByMapId(49).get.Faction = PlanetSideEmpire.VS - 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 - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "z7", + new Zone("z7", Await.result(Maps.map07, 30 seconds), 7) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z5 = new Zone("z5", Await.result(Maps.map05, 30 seconds), 5) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "z8", + new Zone("z8", Await.result(Maps.map08, 30 seconds), 8) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "z9", + new Zone("z9", Await.result(Maps.map09, 30 seconds), 9) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z6 = new Zone("z6", Await.result(Maps.map06, 30 seconds), 6) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "z10", + new Zone("z10", Await.result(Maps.map10, 30 seconds), 10) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - import net.psforever.types.PlanetSideEmpire - BuildingByMapId(2).get.Faction = PlanetSideEmpire.VS - BuildingByMapId(48).get.Faction = PlanetSideEmpire.VS - BuildingByMapId(49).get.Faction = PlanetSideEmpire.VS + InitZoneAmenities(zone = this) + } + } + ), + ( + "home1", + new Zone("home1", Await.result(Maps.map11, 30 seconds), 11) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) - InitZoneAmenities(zone = this) - } - } + import net.psforever.types.PlanetSideEmpire + Buildings.values.foreach { _.Faction = PlanetSideEmpire.NC } - val z7 = new Zone("z7", Await.result(Maps.map07, 30 seconds), 7) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "home2", + new Zone("home2", Await.result(Maps.map12, 30 seconds), 12) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) - InitZoneAmenities(zone = this) - } - } + import net.psforever.types.PlanetSideEmpire + Buildings.values.foreach { _.Faction = PlanetSideEmpire.TR } - val z8 = new Zone("z8", Await.result(Maps.map08, 30 seconds), 8) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "home3", + new Zone("home3", Await.result(Maps.map13, 30 seconds), 13) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) - InitZoneAmenities(zone = this) - } - } + import net.psforever.types.PlanetSideEmpire + Buildings.values.foreach { _.Faction = PlanetSideEmpire.VS } - val z9 = new Zone("z9", Await.result(Maps.map09, 30 seconds), 9) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "tzshtr", + new Zone("tzshtr", Maps.map14, 14) + ), + ( + "tzdrtr", + new Zone("tzsdrtr", Maps.map15, 15) + ), + ( + "tzcotr", + new Zone("tzcotr", Maps.map16, 16) + ), + ( + "tzshnc", + new Zone("tzshnc", Maps.map14, 17) + ), + ( + "tzdrnc", + new Zone("tzdrnc", Maps.map15, 18) + ), + ( + "tzconc", + new Zone("tzconc", Maps.map16, 19) + ), + ( + "tzshvs", + new Zone("tzshvs", Maps.map14, 20) + ), + ( + "tzdrvs", + new Zone("tzdrvs", Maps.map15, 21) + ), + ( + "tzcovs", + new Zone("tzcovs", Maps.map16, 22) + ), + ( + "c1", + new Zone("c1", Await.result(Maps.ugd01, 30 seconds), 23) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "c2", + new Zone("c2", Await.result(Maps.ugd02, 30 seconds), 24) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val z10 = new Zone("z10", Await.result(Maps.map10, 30 seconds), 10) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules + InitZoneAmenities(zone = this) + } + } + ), + ( + "c3", + new Zone("c3", Await.result(Maps.ugd03, 30 seconds), 25) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "c4", + new Zone("c4", Await.result(Maps.ugd04, 30 seconds), 26) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val home1 = new Zone("home1", Await.result(Maps.map11, 30 seconds), 11){ - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) + InitZoneAmenities(zone = this) + } + } + ), + ( + "c5", + new Zone("c5", Await.result(Maps.ugd05, 30 seconds), 27) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - import net.psforever.types.PlanetSideEmpire - Buildings.values.foreach { _.Faction = PlanetSideEmpire.NC } + InitZoneAmenities(zone = this) + } + } + ), + ( + "c6", + new Zone("c6", Await.result(Maps.ugd06, 30 seconds), 28) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "i1", + new Zone("i1", Await.result(Maps.map99, 30 seconds), 29) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val home2 = new Zone("home2", Await.result(Maps.map12, 30 seconds), 12){ - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) + InitZoneAmenities(zone = this) + } + } + ), + ( + "i2", + new Zone("i2", Await.result(Maps.map98, 30 seconds), 30) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - import net.psforever.types.PlanetSideEmpire - Buildings.values.foreach { _.Faction = PlanetSideEmpire.TR } + InitZoneAmenities(zone = this) + } + } + ), + ( + "i3", + new Zone("i3", Await.result(Maps.map97, 30 seconds), 31) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ), + ( + "i4", + new Zone("i4", Await.result(Maps.map96, 30 seconds), 32) { + override def Init(implicit context: ActorContext): Unit = { + super.Init(context) + HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) + HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - val home3 = new Zone("home3", Await.result(Maps.map13, 30 seconds), 13) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - - import net.psforever.types.PlanetSideEmpire - Buildings.values.foreach { _.Faction = PlanetSideEmpire.VS } - - InitZoneAmenities(zone = this) - } - } - - val tzshtr = new Zone("tzshtr", Maps.map14, 14) - - val tzdrtr = new Zone("tzsdrtr", Maps.map15, 15) - - val tzcotr = new Zone("tzcotr", Maps.map16, 16) - - val tzshnc = new Zone("tzshnc", Maps.map14, 17) - - val tzdrnc = new Zone("tzdrnc", Maps.map15, 18) - - val tzconc = new Zone("tzconc", Maps.map16, 19) - - val tzshvs = new Zone("tzshvs", Maps.map14, 20) - - val tzdrvs = new Zone("tzdrvs", Maps.map15, 21) - - val tzcovs = new Zone("tzcovs", Maps.map16, 22) - - val c1 = new Zone("c1", Await.result(Maps.ugd01, 30 seconds), 23) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val c2 = new Zone("c2", Await.result(Maps.ugd02, 30 seconds), 24) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val c3 = new Zone("c3", Await.result(Maps.ugd03, 30 seconds), 25) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val c4 = new Zone("c4", Await.result(Maps.ugd04, 30 seconds), 26) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val c5 = new Zone("c5", Await.result(Maps.ugd05, 30 seconds), 27) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val c6 = new Zone("c6", Await.result(Maps.ugd06, 30 seconds), 28) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val i1 = new Zone("i1", Await.result(Maps.map99, 30 seconds), 29) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val i2 = new Zone("i2", Await.result(Maps.map98, 30 seconds), 30) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val i3 = new Zone("i3", Await.result(Maps.map97, 30 seconds), 31) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } - - val i4 = new Zone("i4", Await.result(Maps.map96, 30 seconds), 32) { - override def Init(implicit context : ActorContext) : Unit = { - super.Init(context) - HotSpotCoordinateFunction = Zones.HotSpots.StandardRemapping(Map.Scale, 80, 80) - HotSpotTimeFunction = Zones.HotSpots.StandardTimeRules - - InitZoneAmenities(zone = this) - } - } + InitZoneAmenities(zone = this) + } + } + ) + ) def InitZoneAmenities(zone: Zone): Unit = { InitResourceSilos(zone) @@ -336,21 +405,23 @@ object Zones { // todo: work out which faction owns links to this warpgate and if they should be marked as broadcast or not // todo: enable geowarps to go to the correct cave zone.Buildings.values.collect { - case wg : WarpGate if wg.Definition == GlobalDefinitions.warpgate || wg.Definition == GlobalDefinitions.warpgate_small => + case wg: WarpGate + if wg.Definition == GlobalDefinitions.warpgate || wg.Definition == GlobalDefinitions.warpgate_small => wg.Active = true wg.Faction = PlanetSideEmpire.NEUTRAL wg.Broadcast = true - case geowarp : WarpGate if geowarp.Definition == GlobalDefinitions.warpgate_cavern || geowarp.Definition == GlobalDefinitions.hst => + case geowarp: WarpGate + if geowarp.Definition == GlobalDefinitions.warpgate_cavern || geowarp.Definition == GlobalDefinitions.hst => geowarp.Faction = PlanetSideEmpire.NEUTRAL geowarp.Active = false } - } + } def InitResourceSilos(zone: Zone): Unit = { // todo: load silo charge from database zone.Buildings.values.flatMap { _.Amenities.collect { - case silo : ResourceSilo => + case silo: ResourceSilo => silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaximumCharge) } } @@ -362,11 +433,11 @@ object Zones { * @param faction the empire * @return the zone id, with a blank string as an invalidating result */ - def SanctuaryZoneId(faction : PlanetSideEmpire.Value) : String = { + def SanctuaryZoneId(faction: PlanetSideEmpire.Value): String = { faction match { - case PlanetSideEmpire.NC => "home1" - case PlanetSideEmpire.TR => "home2" - case PlanetSideEmpire.VS => "home3" + case PlanetSideEmpire.NC => "home1" + case PlanetSideEmpire.TR => "home2" + case PlanetSideEmpire.VS => "home3" case PlanetSideEmpire.NEUTRAL => "" //invalid, not black ops } } @@ -376,11 +447,11 @@ object Zones { * @param faction the empire * @return the zone number, within the sequence 1-32, and with 0 as an invalidating result */ - def SanctuaryZoneNumber(faction : PlanetSideEmpire.Value) : Int = { + def SanctuaryZoneNumber(faction: PlanetSideEmpire.Value): Int = { faction match { - case PlanetSideEmpire.NC => 11 - case PlanetSideEmpire.TR => 12 - case PlanetSideEmpire.VS => 13 + case PlanetSideEmpire.NC => 11 + case PlanetSideEmpire.TR => 12 + case PlanetSideEmpire.VS => 13 case PlanetSideEmpire.NEUTRAL => 0 //invalid, not black ops } } @@ -392,23 +463,18 @@ object Zones { * @param id a zone id string * @return a zone number */ - def NumberFromId(id : String) : Int = { - if(id.startsWith("z")) { //z2 -> 2 + def NumberFromId(id: String): Int = { + if (id.startsWith("z")) { //z2 -> 2 id.substring(1).toInt - } - else if(id.startsWith("home")) { //home2 -> 2 + 10 = 12 + } 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 + } 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 + } else if (id.startsWith("c")) { //c2 -> 2 + 21 = 23 id.substring(1).toInt + 21 - } - else if(id.startsWith("i")) { //i2 -> 2 + 28 = 30 + } else if (id.startsWith("i")) { //i2 -> 2 + 28 = 30 id.substring(1).toInt + 28 - } - else { + } else { 0 } } @@ -429,7 +495,7 @@ object Zones { * @param pos the absolute position of the activity reported * @return the position for a hotspot */ - def StandardRemapping(scale : MapScale, longDivNum : Int, latDivNum : Int)(pos : Vector3) : Vector3 = { + def StandardRemapping(scale: MapScale, longDivNum: Int, latDivNum: Int)(pos: Vector3): Vector3 = { Vector3( //x FindClosestDivision(pos.x, scale.width, longDivNum.toFloat), @@ -456,22 +522,19 @@ object Zones { * @param divisions the number of division lines spanning across the `scale` * @return the closest regular division */ - private def FindClosestDivision(coordinate : Float, scale : Float, divisions : Float) : Float = { - val divLength : Float = scale / divisions - if(coordinate >= scale - divLength) { + private def FindClosestDivision(coordinate: Float, scale: Float, divisions: Float): Float = { + val divLength: Float = scale / divisions + if (coordinate >= scale - divLength) { scale - divLength - } - else if(coordinate >= divLength) { - val sector : Float = (coordinate * divisions / scale).toInt * divLength - val nextSector : Float = sector + divLength - if(coordinate - sector < nextSector - coordinate) { + } else if (coordinate >= divLength) { + val sector: Float = (coordinate * divisions / scale).toInt * divLength + val nextSector: Float = sector + divLength + if (coordinate - sector < nextSector - coordinate) { sector - } - else { + } else { nextSector } - } - else { + } else { divLength } } @@ -483,24 +546,23 @@ object Zones { * @param attacker the attacking party * @return the duration */ - def StandardTimeRules(defender : SourceEntry, attacker : SourceEntry) : FiniteDuration = { + def StandardTimeRules(defender: SourceEntry, attacker: SourceEntry): FiniteDuration = { import net.psforever.objects.ballistics._ import net.psforever.objects.GlobalDefinitions - if(attacker.Faction == defender.Faction) { + if (attacker.Faction == defender.Faction) { 0 seconds - } - else { + } else { //TODO is target occupy-able and occupied, or jammer-able and jammered? defender match { - case _ : PlayerSource => + case _: PlayerSource => 60 seconds - case _ : VehicleSource => + case _: VehicleSource => 60 seconds - case t : ObjectSource if t.Definition == GlobalDefinitions.manned_turret => + case t: ObjectSource if t.Definition == GlobalDefinitions.manned_turret => 60 seconds - case _ : DeployableSource => + case _: DeployableSource => 30 seconds - case _ : ComplexDeployableSource => + case _: ComplexDeployableSource => 30 seconds case _ => 0 seconds diff --git a/pslogin/src/main/scala/csr/CSRWarp.scala b/pslogin/src/main/scala/csr/CSRWarp.scala index a736475a..dab5a74e 100644 --- a/pslogin/src/main/scala/csr/CSRWarp.scala +++ b/pslogin/src/main/scala/csr/CSRWarp.scala @@ -1,4 +1,4 @@ -package csr +package net.psforever.pslogin.csr import net.psforever.packet.PacketCoding import net.psforever.packet.game.ChatMsg @@ -9,12 +9,13 @@ import scala.util.Try /* The following is STILL for development and fun. -*/ + */ /** * An implementation of the CSR command `/warp`, highly modified to serve the purposes of the testing phases of the server. * See `help()` for details. */ object CSRWarp { + /** * Accept and confirm that a message sent to a player is a valid `/warp` invocation. * If so, parse the message and send the player to whichever destination in this zone was requested. @@ -22,51 +23,52 @@ object CSRWarp { * @param msg the message the player received * @return true, if the player is being transported to another place; false, otherwise */ - def read(traveler : Traveler, msg : ChatMsg) : (Boolean, Vector3) = { - if(!isProperRequest(msg)) + def read(traveler: Traveler, msg: ChatMsg): (Boolean, Vector3) = { + if (!isProperRequest(msg)) return (false, Vector3.Zero) //we do not handle this message val buffer = decomposeMessage(msg.contents) - if(buffer.length == 0 || buffer(0).equals("") || buffer(0).equals("-help")) { + if (buffer.length == 0 || buffer(0).equals("") || buffer(0).equals("-help")) { CSRWarp.help(traveler) //print usage information to chat return (false, Vector3.Zero) } - var destId : String = "" - var coords : ArrayBuffer[Int] = ArrayBuffer.empty[Int] - var list : Boolean = false - var failedCoordInput = false - for(o <- buffer) { + var destId: String = "" + var coords: ArrayBuffer[Int] = ArrayBuffer.empty[Int] + var list: Boolean = false + var failedCoordInput = false + for (o <- buffer) { val toInt = Try(o.toInt) - if(toInt.isSuccess) { + if (toInt.isSuccess) { coords += toInt.get - } - else if(coords.nonEmpty && coords.size < 3) + } else if (coords.nonEmpty && coords.size < 3) failedCoordInput = true - if(o.equals("-list")) + if (o.equals("-list")) list = true - else if(destId.equals("")) + else if (destId.equals("")) destId = o } - if(failedCoordInput || (coords.nonEmpty && coords.size < 3)) { + if (failedCoordInput || (coords.nonEmpty && coords.size < 3)) { CSRWarp.error(traveler, "Needs three integer components ( )") return (false, Vector3.Zero) - } - else { - coords.slice(0, 3).foreach(x => { - if(x < 0 || x > 8191) { - CSRWarp.error(traveler, "Out of range - 0 < n < 8191, but n = " + x) - return (false, Vector3.Zero) - } - }) + } else { + coords + .slice(0, 3) + .foreach(x => { + if (x < 0 || x > 8191) { + CSRWarp.error(traveler, "Out of range - 0 < n < 8191, but n = " + x) + return (false, Vector3.Zero) + } + }) } val zone = CSRZoneImpl.get(traveler.zone).get //the traveler is already in the appropriate zone - if(list && coords.isEmpty && destId.equals("")) { + if (list && coords.isEmpty && destId.equals("")) { CSRWarp.reply(traveler, CSRZoneImpl.listLocations(zone) + "; " + CSRZoneImpl.listWarpgates(zone)) return (false, Vector3.Zero) } - val dest : Option[Vector3] = if(coords.nonEmpty) Some(Vector3(coords(0).toFloat, coords(1).toFloat, coords(2).toFloat)) - else CSRZoneImpl.getWarpLocation(zone, destId) //coords before destId - if(dest.isEmpty) { + val dest: Option[Vector3] = + if (coords.nonEmpty) Some(Vector3(coords(0).toFloat, coords(1).toFloat, coords(2).toFloat)) + else CSRZoneImpl.getWarpLocation(zone, destId) //coords before destId + if (dest.isEmpty) { CSRWarp.error(traveler, "Invalid location") return (false, Vector3.Zero) } @@ -78,7 +80,7 @@ object CSRWarp { * @param msg the message * @return true, if we will handle it; false, otherwise */ - def isProperRequest(msg : ChatMsg) : Boolean = { + def isProperRequest(msg: ChatMsg): Boolean = { msg.messageType == ChatMessageType.CMT_WARP } @@ -87,7 +89,7 @@ object CSRWarp { * @param msg the contents portion of the message, a space-separated `String` * @return the contents portion of the message, transformed into an `Array` */ - private def decomposeMessage(msg : String) : Array[String] = { + private def decomposeMessage(msg: String): Array[String] = { msg.trim.toLowerCase.split("\\s+") } @@ -96,7 +98,7 @@ object CSRWarp { * @param traveler the player * @param msg the message to be sent */ - private def reply(traveler : Traveler, msg : String) : Unit = { + private def reply(traveler: Traveler, msg: String): Unit = { traveler ! PacketCoding.CreateGamePacket(0, ChatMsg(ChatMessageType.CMT_OPEN, true, "", msg, None)) } @@ -114,7 +116,7 @@ object CSRWarp { * "-list" is accepted while no serious attempt is made to indicate a destination (no location string or not enough coordinates). * @param traveler the player */ - private def help(traveler : Traveler) : Unit = { + private def help(traveler: Traveler): Unit = { CSRWarp.reply(traveler, "usage: /warp | | | [-list]") } @@ -123,7 +125,7 @@ object CSRWarp { * The most common reason for error is the lack of information, or wrong information. * @param traveler the player */ - private def error(traveler : Traveler, msg : String) : Unit = { + private def error(traveler: Traveler, msg: String): Unit = { CSRWarp.reply(traveler, "Error! " + msg) } } diff --git a/pslogin/src/main/scala/csr/CSRZone.scala b/pslogin/src/main/scala/csr/CSRZone.scala index a2f5329c..8c2d03d1 100644 --- a/pslogin/src/main/scala/csr/CSRZone.scala +++ b/pslogin/src/main/scala/csr/CSRZone.scala @@ -1,4 +1,4 @@ -package csr +package net.psforever.pslogin.csr import net.psforever.packet.PacketCoding import net.psforever.packet.game.ChatMsg @@ -6,11 +6,12 @@ import net.psforever.types.{ChatMessageType, Vector3} /* The following is STILL for development and fun. -*/ + */ /** * An implementation of the CSR command `/zone`, slightly modified to serve the purposes of the testing phases of the server. */ object CSRZone { + /** * Accept and confirm that a message sent to a player is a valid `/zone` invocation. * If so, parse the message and send the player to whichever zone was requested. @@ -18,52 +19,50 @@ object CSRZone { * @param msg the message the player received * @return true, if the player is being transported to another zone; false, otherwise */ - def read(traveler : Traveler, msg : ChatMsg) : (Boolean, String , Vector3 ) = { - if(!isProperRequest(msg)) - return (false,"", Vector3.Zero) //we do not handle this message + def read(traveler: Traveler, msg: ChatMsg): (Boolean, String, Vector3) = { + if (!isProperRequest(msg)) + return (false, "", Vector3.Zero) //we do not handle this message val buffer = decomposeMessage(msg.contents) - if(buffer.length == 0 || buffer(0).equals("-help")) { + if (buffer.length == 0 || buffer(0).equals("-help")) { CSRZone.help(traveler) //print usage information to chat - return (false,"", Vector3.Zero) + return (false, "", Vector3.Zero) } var zoneId = "" - var gateId = "" //the user can define which warpgate they may visit (actual keyword protocol missing) - var list = false //if the user wants a printed list of destination locations - for(o <- buffer) { - if(o.equals("-list")) { - if(zoneId.equals("") || gateId.equals("")) { + var gateId = "" //the user can define which warpgate they may visit (actual keyword protocol missing) + var list = false //if the user wants a printed list of destination locations + for (o <- buffer) { + if (o.equals("-list")) { + if (zoneId.equals("") || gateId.equals("")) { list = true } - } - else if(zoneId.equals("")) + } else if (zoneId.equals("")) zoneId = o - else if(gateId.equals("")) + else if (gateId.equals("")) gateId = o } val zoneOpt = CSRZoneImpl.get(zoneId) - if(zoneOpt.isEmpty) { - if(list) + if (zoneOpt.isEmpty) { + if (list) CSRZone.reply(traveler, CSRZoneImpl.list) else CSRZone.error(traveler, "Give a valid zonename (use '/zone -list')") - return (false,"", Vector3.Zero) + return (false, "", Vector3.Zero) } - val zone = zoneOpt.get - var destination : Vector3 = CSRZoneImpl.selectRandom(zone) //the destination in the new zone starts as random + val zone = zoneOpt.get + var destination: Vector3 = CSRZoneImpl.selectRandom(zone) //the destination in the new zone starts as random - if(!gateId.equals("")) { //if we've defined a warpgate, and can find that warpgate, we re-assign the destination - val gateOpt = CSRZoneImpl.getWarpgate(zone, gateId) - if(gateOpt.isDefined) + if (!gateId.equals("")) { //if we've defined a warpgate, and can find that warpgate, we re-assign the destination + val gateOpt = CSRZoneImpl.getWarpgate(zone, gateId) + if (gateOpt.isDefined) destination = gateOpt.get else CSRZone.error(traveler, "Gate id not defined (use '/zone -list')") - } - else if(list) { + } else if (list) { CSRZone.reply(traveler, CSRZoneImpl.listWarpgates(zone)) - return (false,"",Vector3.Zero) + return (false, "", Vector3.Zero) } (true, zone.zonename, destination) } @@ -73,7 +72,7 @@ object CSRZone { * @param msg the message * @return true, if we will handle it; false, otherwise */ - def isProperRequest(msg : ChatMsg) : Boolean ={ + def isProperRequest(msg: ChatMsg): Boolean = { msg.messageType == ChatMessageType.CMT_ZONE } @@ -82,7 +81,7 @@ object CSRZone { * @param msg the contents portion of the message, a space-separated `String` * @return the contents portion of the message, transformed into an `Array` */ - private def decomposeMessage(msg : String) : Array[String] = { + private def decomposeMessage(msg: String): Array[String] = { msg.trim.toLowerCase.split("\\s+") } @@ -91,15 +90,15 @@ object CSRZone { * @param traveler the player * @param msg the message to be sent */ - private def reply(traveler : Traveler, msg : String) : Unit = { - traveler ! PacketCoding.CreateGamePacket(0, ChatMsg(ChatMessageType.CMT_OPEN,true,"", msg, None)) + private def reply(traveler: Traveler, msg: String): Unit = { + traveler ! PacketCoding.CreateGamePacket(0, ChatMsg(ChatMessageType.CMT_OPEN, true, "", msg, None)) } /** * Print usage information to the `Traveler`'s chat window. * @param traveler the player */ - private def help(traveler : Traveler) : Unit = { + private def help(traveler: Traveler): Unit = { CSRZone.reply(traveler, "usage: /zone [gatename] | [-list]") } @@ -108,7 +107,7 @@ object CSRZone { * The most common reason for error is the lack of information, or wrong information. * @param traveler the player */ - private def error(traveler : Traveler, msg : String) : Unit = { - CSRZone.reply(traveler, "Error! "+msg) + private def error(traveler: Traveler, msg: String): Unit = { + CSRZone.reply(traveler, "Error! " + msg) } } diff --git a/pslogin/src/main/scala/csr/CSRZoneImpl.scala b/pslogin/src/main/scala/csr/CSRZoneImpl.scala index cb7f4f3f..c3c20ebc 100644 --- a/pslogin/src/main/scala/csr/CSRZoneImpl.scala +++ b/pslogin/src/main/scala/csr/CSRZoneImpl.scala @@ -1,6 +1,5 @@ -package csr +package net.psforever.pslogin.csr -// Copyright (c) 2017 PSForever import net.psforever.types.Vector3 import scala.collection.mutable @@ -8,7 +7,7 @@ import scala.util.Random /* The following is STILL for development and fun. -*/ + */ /** * A crude representation of the information needed to describe a continent (hitherto, a "zone"). * The information is mainly catered to the simulation of the CSR commands `/zone` and `/warp`. @@ -17,107 +16,112 @@ The following is STILL for development and fun. * @param map the map name of the zone (this map is loaded) * @param zonename the zone's internal name */ -class CSRZoneImpl(val alias : String, val map : String, val zonename : String) { +class CSRZoneImpl(val alias: String, val map: String, val zonename: String) { + /** * A listing of warpgates, geowarps, and island warpgates in this zone. * The coordinates specified will only ever drop the user on a specific point within the protective bubble of the warpgate. * This breaks from the expected zoning functionality where the user is placed in a random spot under the bubble. * There is no prior usage details for the searchability format of this field's key values. */ - private val gates : mutable.HashMap[String, Vector3] = mutable.HashMap() + private val gates: mutable.HashMap[String, Vector3] = mutable.HashMap() + /** * A listing of special locations in this zone, i.e., major faciities, and some landmarks of interest. * There is no prior usage details for the searchability format of this field's key values. */ - private val locations : mutable.HashMap[String, Vector3] = mutable.HashMap() + private val locations: mutable.HashMap[String, Vector3] = mutable.HashMap() } object CSRZoneImpl { + /** * A listing of all zones that can be visited by their internal name. * The keys in this map should be directly usable by the `/zone` command. */ private val zones = Map[String, CSRZoneImpl]( - "z1" -> CSRZoneImpl("Solsar", "map01", "z1"), - "z2" -> CSRZoneImpl("Hossin", "map02", "z2"), - "z3" -> CSRZoneImpl("Cyssor", "map03", "z3"), - "z4" -> CSRZoneImpl("Ishundar", "map04", "z4"), - "z5" -> CSRZoneImpl("Forseral", "map05", "z5"), - "z6" -> CSRZoneImpl("Ceryshen", "map06", "z6"), - "z7" -> CSRZoneImpl("Esamir", "map07", "z7"), - "z8" -> CSRZoneImpl("Oshur", "map08", "z8"), - "z9" -> CSRZoneImpl("Searhus", "map09", "z9"), - "z10" -> CSRZoneImpl("Amerish", "map10", "z10"), - "home1" -> CSRZoneImpl("NC Sanctuary", "map11", "home1"), - "home2" -> CSRZoneImpl("TR Sanctuary", "map12", "home2"), - "home3" -> CSRZoneImpl("VS Sanctuary", "map13", "home3"), - "tzshtr" -> CSRZoneImpl("VR Shooting Range TR", "map14", "tzshtr"), - "tzdrtr" -> CSRZoneImpl("VR Driving Range TR", "map15", "tzdrtr"), - "tzcotr" -> CSRZoneImpl("VR Combat Zone TR", "map16", "tzcotr"), - "tzshvs" -> CSRZoneImpl("VR Shooting Range VS", "map14", "tzshvs"), - "tzdrvs" -> CSRZoneImpl("VR Driving Range VS", "map15", "tzdrvs"), - "tzcovs" -> CSRZoneImpl("VR Combat Zone VS", "map16", "tzcovs"), - "tzshnc" -> CSRZoneImpl("VR Shooting Range NC", "map14", "tzshnc"), - "tzdrnc" -> CSRZoneImpl("VR Driving Range NC", "map15", "tzdrnc"), - "tzconc" -> CSRZoneImpl("VR Combat Zone NC", "map16", "tzconc"), - "c1" -> CSRZoneImpl("Supai", "ugd01", "c1"), - "c2" -> CSRZoneImpl("Hunhau", "ugd02", "c2"), - "c3" -> CSRZoneImpl("Adlivun", "ugd03", "c3"), - "c4" -> CSRZoneImpl("Byblos", "ugd04", "c4"), - "c5" -> CSRZoneImpl("Annwn", "ugd05", "c5"), - "c6" -> CSRZoneImpl("Drugaskan", "ugd06", "c6"), - "i4" -> CSRZoneImpl("Nexus", "map96", "i4"), - "i3" -> CSRZoneImpl("Desolation", "map97", "i3"), - "i2" -> CSRZoneImpl("Ascension", "map98", "i2"), - "i1" -> CSRZoneImpl("Extinction", "map99", "i1"), - "homebo" -> CSRZoneImpl("Black_ops_hq", "Black_ops_hq", "homebo"), + "z1" -> CSRZoneImpl("Solsar", "map01", "z1"), + "z2" -> CSRZoneImpl("Hossin", "map02", "z2"), + "z3" -> CSRZoneImpl("Cyssor", "map03", "z3"), + "z4" -> CSRZoneImpl("Ishundar", "map04", "z4"), + "z5" -> CSRZoneImpl("Forseral", "map05", "z5"), + "z6" -> CSRZoneImpl("Ceryshen", "map06", "z6"), + "z7" -> CSRZoneImpl("Esamir", "map07", "z7"), + "z8" -> CSRZoneImpl("Oshur", "map08", "z8"), + "z9" -> CSRZoneImpl("Searhus", "map09", "z9"), + "z10" -> CSRZoneImpl("Amerish", "map10", "z10"), + "home1" -> CSRZoneImpl("NC Sanctuary", "map11", "home1"), + "home2" -> CSRZoneImpl("TR Sanctuary", "map12", "home2"), + "home3" -> CSRZoneImpl("VS Sanctuary", "map13", "home3"), + "tzshtr" -> CSRZoneImpl("VR Shooting Range TR", "map14", "tzshtr"), + "tzdrtr" -> CSRZoneImpl("VR Driving Range TR", "map15", "tzdrtr"), + "tzcotr" -> CSRZoneImpl("VR Combat Zone TR", "map16", "tzcotr"), + "tzshvs" -> CSRZoneImpl("VR Shooting Range VS", "map14", "tzshvs"), + "tzdrvs" -> CSRZoneImpl("VR Driving Range VS", "map15", "tzdrvs"), + "tzcovs" -> CSRZoneImpl("VR Combat Zone VS", "map16", "tzcovs"), + "tzshnc" -> CSRZoneImpl("VR Shooting Range NC", "map14", "tzshnc"), + "tzdrnc" -> CSRZoneImpl("VR Driving Range NC", "map15", "tzdrnc"), + "tzconc" -> CSRZoneImpl("VR Combat Zone NC", "map16", "tzconc"), + "c1" -> CSRZoneImpl("Supai", "ugd01", "c1"), + "c2" -> CSRZoneImpl("Hunhau", "ugd02", "c2"), + "c3" -> CSRZoneImpl("Adlivun", "ugd03", "c3"), + "c4" -> CSRZoneImpl("Byblos", "ugd04", "c4"), + "c5" -> CSRZoneImpl("Annwn", "ugd05", "c5"), + "c6" -> CSRZoneImpl("Drugaskan", "ugd06", "c6"), + "i4" -> CSRZoneImpl("Nexus", "map96", "i4"), + "i3" -> CSRZoneImpl("Desolation", "map97", "i3"), + "i2" -> CSRZoneImpl("Ascension", "map98", "i2"), + "i1" -> CSRZoneImpl("Extinction", "map99", "i1"), + "homebo" -> CSRZoneImpl("Black_ops_hq", "Black_ops_hq", "homebo"), "station1" -> CSRZoneImpl("TR Station", "Station1", "station1"), "station2" -> CSRZoneImpl("NC Station", "Station2", "station2"), "station3" -> CSRZoneImpl("VS Station", "Station3", "station3") ) + /** * A listing of all zones that can be visited by their common name. * The keys in this map should be directly usable by the `/zone` command. * Though the behavior is undocumented, access to this alias list is for the benefit of the user. */ private val alias = Map[String, String]( - "solsar" -> "z1", - "hossin" -> "z2", - "cyssor" -> "z3", - "ishundar" -> "z4", - "forseral" -> "z5", - "ceryshen" -> "z6", - "esamir" -> "z7", - "oshur" -> "z8", - "searhus" -> "z9", - "amerish" -> "z10", + "solsar" -> "z1", + "hossin" -> "z2", + "cyssor" -> "z3", + "ishundar" -> "z4", + "forseral" -> "z5", + "ceryshen" -> "z6", + "esamir" -> "z7", + "oshur" -> "z8", + "searhus" -> "z9", + "amerish" -> "z10", "nc-sanctuary" -> "home1", "tr-sanctuary" -> "home2", "vs-sanctuary" -> "home3", - "tr-shooting" -> "tzshtr", - "tr-driving" -> "tzdrtr", - "tr-combat" -> "tzcotr", - "vs-shooting" -> "tzshvs", - "vs-driving" -> "tzdrvs", - "vs-combat" -> "tzcovs", - "nc-shooting" -> "tzshnc", - "nc-driving" -> "tzdrnc", - "nc-combat" -> "tzconc", - "supai" -> "c1", - "hunhau" -> "c2", - "adlivun" -> "c3", - "byblos" -> "c4", - "annwn" -> "c5", - "drugaskan" -> "c6", - "nexus" -> "i4", - "desolation" -> "i3", - "ascension" -> "i2", - "extinction" -> "i1", + "tr-shooting" -> "tzshtr", + "tr-driving" -> "tzdrtr", + "tr-combat" -> "tzcotr", + "vs-shooting" -> "tzshvs", + "vs-driving" -> "tzdrvs", + "vs-combat" -> "tzcovs", + "nc-shooting" -> "tzshnc", + "nc-driving" -> "tzdrnc", + "nc-combat" -> "tzconc", + "supai" -> "c1", + "hunhau" -> "c2", + "adlivun" -> "c3", + "byblos" -> "c4", + "annwn" -> "c5", + "drugaskan" -> "c6", + "nexus" -> "i4", + "desolation" -> "i3", + "ascension" -> "i2", + "extinction" -> "i1", "Black_ops_hq" -> "homebo", - "TR-Station" -> "station1", - "NC-Station" -> "station2", - "VS-Station" -> "station3" + "TR-Station" -> "station1", + "NC-Station" -> "station2", + "VS-Station" -> "station3" ) + /** * A value used for selecting where to appear in a zone from the list of locations when the user has no indicated one. */ @@ -130,16 +134,16 @@ object CSRZoneImpl { * @param map the map name of the zone (this map is loaded) * @param zonename the zone's internal name */ - def apply(alias : String, map : String, zonename : String) : CSRZoneImpl = new CSRZoneImpl(alias, map, zonename) + def apply(alias: String, map: String, zonename: String): CSRZoneImpl = new CSRZoneImpl(alias, map, zonename) /** * Get a valid `CSRZone`'s information. * @param zoneId a name that describes the zone and should be searchable * @return the `CSRZone`, or `None` */ - def get(zoneId : String) : Option[CSRZoneImpl] = { + def get(zoneId: String): Option[CSRZoneImpl] = { var zId = zoneId.toLowerCase - if(alias.get(zId).isDefined) + if (alias.get(zId).isDefined) zId = alias(zId) zones.get(zId) } @@ -151,10 +155,10 @@ object CSRZoneImpl { * @param locId a name that describes a known location in the provided `CSRZone` and is searchable * @return the coordinates of that location, or None */ - def getWarpLocation(zone : CSRZoneImpl, locId : String) : Option[Vector3] = { + def getWarpLocation(zone: CSRZoneImpl, locId: String): Option[Vector3] = { val low_locId = locId.toLowerCase - var location = zone.locations.get(low_locId) - if(location.isEmpty) + var location = zone.locations.get(low_locId) + if (location.isEmpty) location = zone.gates.get(low_locId) location } @@ -165,7 +169,7 @@ object CSRZoneImpl { * @param gateId a name that describes a known warpgate in the provided `CSRZone` and is searchable * @return the coordinates of that warpgate, or None */ - def getWarpgate(zone : CSRZoneImpl, gateId : String) : Option[Vector3] = { + def getWarpgate(zone: CSRZoneImpl, gateId: String): Option[Vector3] = { zone.gates.get(gateId.toLowerCase) } @@ -173,7 +177,7 @@ object CSRZoneImpl { * Get the names for all of the `CSRZones` that can be visited. * @return all of the zonenames */ - def list : String = { + def list: String = { "zonenames: z1 - z10, home1 - home3, tzshnc, tzdrnc, tzconc, tzshtr, tzdrtr, tzcotr, tzshvs, tzdrvs, tzcovs, c1 - c6, i1 - i4; zones are also aliased to their continent name" } @@ -182,12 +186,11 @@ object CSRZoneImpl { * @param zone the `CSRZone` * @return all of the location keys */ - def listLocations(zone : CSRZoneImpl) : String = { - var out : String = "warps: " - if(zone.locations.nonEmpty) { + def listLocations(zone: CSRZoneImpl): String = { + var out: String = "warps: " + if (zone.locations.nonEmpty) { out += zone.locations.keys.toArray.sorted.mkString(", ") - } - else + } else out = "none" out } @@ -197,9 +200,9 @@ object CSRZoneImpl { * @param zone the `CSRZone` * @return all of the warpgate keys */ - def listWarpgates(zone : CSRZoneImpl) : String = { - var out : String = "gatenames: " - if(zone.gates.isEmpty) + def listWarpgates(zone: CSRZoneImpl): String = { + var out: String = "gatenames: " + if (zone.gates.isEmpty) out += "none" else out += zone.gates.keys.toArray.sorted.mkString(", ") @@ -211,13 +214,13 @@ object CSRZoneImpl { * @param zone the `CSRZone` * @return the coordinates of the spawn point */ - def selectRandom(zone : CSRZoneImpl) : Vector3 = { + def selectRandom(zone: CSRZoneImpl): Vector3 = { var outlets = zone.locations //random location? - if(outlets.nonEmpty) { + if (outlets.nonEmpty) { return outlets.values.toArray.apply(rand.nextInt(outlets.size)) } outlets = zone.gates //random warpgate? - if(outlets.nonEmpty) { + if (outlets.nonEmpty) { return outlets.values.toArray.apply(rand.nextInt(outlets.size)) } Vector3.Zero //fallback coordinates (that will always be valid) @@ -228,238 +231,238 @@ object CSRZoneImpl { * All of these keys should be searchable under the `/warp` command. * Only the warpgate keys are searchable by the `/zone` command. */ - def setup() : Unit = { + def setup(): Unit = { zones("z1").gates ++= Map( - "gate1" -> Vector3(4150, 7341, 82), - "gate2" -> Vector3(5698, 3404, 129), - "gate3" -> Vector3(2650, 5363, 176), - "gate4" -> Vector3(3022, 1225, 66), + "gate1" -> Vector3(4150, 7341, 82), + "gate2" -> Vector3(5698, 3404, 129), + "gate3" -> Vector3(2650, 5363, 176), + "gate4" -> Vector3(3022, 1225, 66), "geowarp1" -> Vector3(3678, 2895, 108), "geowarp2" -> Vector3(5672, 4750, 70) ) zones("z1").locations ++= Map( - "amun" -> Vector3(4337, 2278, 68), - "aton" -> Vector3(3772, 5463, 54), - "bastet" -> Vector3(5412, 5588, 56), - "hapi" -> Vector3(4256, 4436, 59), - "horus" -> Vector3(3725, 2114, 73), - "mont" -> Vector3(3354, 4205, 83), - "seth" -> Vector3(4495, 6026, 58), - "sobek" -> Vector3(3094, 3027, 75), - "thoth" -> Vector3(4615, 3373, 53), - "lake" -> Vector3(4317, 4008, 37), + "amun" -> Vector3(4337, 2278, 68), + "aton" -> Vector3(3772, 5463, 54), + "bastet" -> Vector3(5412, 5588, 56), + "hapi" -> Vector3(4256, 4436, 59), + "horus" -> Vector3(3725, 2114, 73), + "mont" -> Vector3(3354, 4205, 83), + "seth" -> Vector3(4495, 6026, 58), + "sobek" -> Vector3(3094, 3027, 75), + "thoth" -> Vector3(4615, 3373, 53), + "lake" -> Vector3(4317, 4008, 37), "monolith" -> Vector3(5551, 5047, 64) ) zones("z2").gates ++= Map( - "gate1" -> Vector3(1881, 4873, 19), - "gate2" -> Vector3(4648, 4625, 28), - "gate3" -> Vector3(3296, 2045, 21), - "gate4" -> Vector3(5614, 1781, 32), + "gate1" -> Vector3(1881, 4873, 19), + "gate2" -> Vector3(4648, 4625, 28), + "gate3" -> Vector3(3296, 2045, 21), + "gate4" -> Vector3(5614, 1781, 32), "geowarp1" -> Vector3(5199, 4869, 39), "geowarp2" -> Vector3(3911, 2407, 15) ) zones("z2").locations ++= Map( - "acan" -> Vector3(3534, 4015, 30), - "bitol" -> Vector3(4525, 2632, 30), - "chac" -> Vector3(4111, 5950, 39), - "ghanon" -> Vector3(2565, 3707, 41), - "hurakan" -> Vector3(1840, 2934, 38), - "ixtab" -> Vector3(3478, 3143, 40), - "kisin" -> Vector3(3356, 5374, 31), - "mulac" -> Vector3(5592, 2738, 37), - "naum" -> Vector3(5390, 3454, 28), - "voltan" -> Vector3(4529, 3414, 28), - "zotz" -> Vector3(6677, 2342, 129), + "acan" -> Vector3(3534, 4015, 30), + "bitol" -> Vector3(4525, 2632, 30), + "chac" -> Vector3(4111, 5950, 39), + "ghanon" -> Vector3(2565, 3707, 41), + "hurakan" -> Vector3(1840, 2934, 38), + "ixtab" -> Vector3(3478, 3143, 40), + "kisin" -> Vector3(3356, 5374, 31), + "mulac" -> Vector3(5592, 2738, 37), + "naum" -> Vector3(5390, 3454, 28), + "voltan" -> Vector3(4529, 3414, 28), + "zotz" -> Vector3(6677, 2342, 129), "monolith" -> Vector3(2938, 2485, 14) ) zones("z3").gates ++= Map( - "gate1" -> Vector3(2616, 6567, 58), - "gate2" -> Vector3(6980, 5336, 57), - "gate3" -> Vector3(1199, 1332, 66), - "gate4" -> Vector3(5815, 1974, 63), + "gate1" -> Vector3(2616, 6567, 58), + "gate2" -> Vector3(6980, 5336, 57), + "gate3" -> Vector3(1199, 1332, 66), + "gate4" -> Vector3(5815, 1974, 63), "geowarp1" -> Vector3(2403, 4278, 60), "geowarp2" -> Vector3(4722, 2665, 78) ) zones("z3").locations ++= Map( - "aja" -> Vector3(754, 5435, 48), - "chuku" -> Vector3(4208, 7021, 54), - "bomazi" -> Vector3(1198, 4492, 58), - "ekera" -> Vector3(5719, 6555, 51), - "faro" -> Vector3(5030, 5700, 57), - "gunuku" -> Vector3(4994, 4286, 54), - "honsi" -> Vector3(4042, 4588, 89), - "itan" -> Vector3(5175, 3393, 48), - "kaang" -> Vector3(5813, 3862, 62), - "leza" -> Vector3(2691, 1561, 64), - "mukuru" -> Vector3(661, 2380, 54), - "nzame" -> Vector3(1670, 2706, 45), - "orisha" -> Vector3(7060, 1327, 59), - "pamba" -> Vector3(7403, 3123, 63), - "shango" -> Vector3(6846, 2319, 63), - "tore" -> Vector3(3017, 2272, 58), - "wele" -> Vector3(436, 7040, 60), + "aja" -> Vector3(754, 5435, 48), + "chuku" -> Vector3(4208, 7021, 54), + "bomazi" -> Vector3(1198, 4492, 58), + "ekera" -> Vector3(5719, 6555, 51), + "faro" -> Vector3(5030, 5700, 57), + "gunuku" -> Vector3(4994, 4286, 54), + "honsi" -> Vector3(4042, 4588, 89), + "itan" -> Vector3(5175, 3393, 48), + "kaang" -> Vector3(5813, 3862, 62), + "leza" -> Vector3(2691, 1561, 64), + "mukuru" -> Vector3(661, 2380, 54), + "nzame" -> Vector3(1670, 2706, 45), + "orisha" -> Vector3(7060, 1327, 59), + "pamba" -> Vector3(7403, 3123, 63), + "shango" -> Vector3(6846, 2319, 63), + "tore" -> Vector3(3017, 2272, 58), + "wele" -> Vector3(436, 7040, 60), "monolith" -> Vector3(4515, 4105, 38), - "peak" -> Vector3(3215, 5063, 579) + "peak" -> Vector3(3215, 5063, 579) ) zones("z4").gates ++= Map( - "gate1" -> Vector3(4702, 6768, 30), - "gate2" -> Vector3(5515, 3368, 69), - "gate3" -> Vector3(1564, 3356, 46), - "gate4" -> Vector3(3889, 1118, 56), + "gate1" -> Vector3(4702, 6768, 30), + "gate2" -> Vector3(5515, 3368, 69), + "gate3" -> Vector3(1564, 3356, 46), + "gate4" -> Vector3(3889, 1118, 56), "geowarp1" -> Vector3(4202, 4325, 68), "geowarp2" -> Vector3(2384, 1925, 37) ) zones("z4").locations ++= Map( - "akkan" -> Vector3(2746, 4260, 39), - "baal" -> Vector3(825, 5470, 72), - "dagon" -> Vector3(1739, 5681, 40), - "enkidu" -> Vector3(3217, 3574, 37), - "girru" -> Vector3(4475, 5853, 78), - "hanish" -> Vector3(3794, 5540, 89), - "irkalla" -> Vector3(4742, 5270, 66), - "kusag" -> Vector3(6532, 4692, 46), - "lahar" -> Vector3(6965, 5306, 38), - "marduk" -> Vector3(3059, 2144, 70), - "neti" -> Vector3(3966, 2417, 80), - "zaqar" -> Vector3(4796, 2177, 75), - "monolith" -> Vector3(5165, 4083, 35), + "akkan" -> Vector3(2746, 4260, 39), + "baal" -> Vector3(825, 5470, 72), + "dagon" -> Vector3(1739, 5681, 40), + "enkidu" -> Vector3(3217, 3574, 37), + "girru" -> Vector3(4475, 5853, 78), + "hanish" -> Vector3(3794, 5540, 89), + "irkalla" -> Vector3(4742, 5270, 66), + "kusag" -> Vector3(6532, 4692, 46), + "lahar" -> Vector3(6965, 5306, 38), + "marduk" -> Vector3(3059, 2144, 70), + "neti" -> Vector3(3966, 2417, 80), + "zaqar" -> Vector3(4796, 2177, 75), + "monolith" -> Vector3(5165, 4083, 35), "stonehenge" -> Vector3(4992, 3776, 56) ) zones("z5").gates ++= Map( - "gate1" -> Vector3(3432, 6498, 73), - "gate2" -> Vector3(7196, 3917, 47), - "gate3" -> Vector3(1533, 3540, 56), - "gate4" -> Vector3(3197, 1390, 45), + "gate1" -> Vector3(3432, 6498, 73), + "gate2" -> Vector3(7196, 3917, 47), + "gate3" -> Vector3(1533, 3540, 56), + "gate4" -> Vector3(3197, 1390, 45), "geowarp1" -> Vector3(4899, 5633, 38), "geowarp2" -> Vector3(5326, 2558, 54) ) zones("z5").locations ++= Map( - "anu" -> Vector3(3479, 2556, 56), - "bel" -> Vector3(3665, 4626, 58), - "caer" -> Vector3(4570, 2601, 56), - "dagda" -> Vector3(5825, 4449, 55), - "eadon" -> Vector3(2725, 2853, 53), - "gwydion" -> Vector3(5566, 3739, 61), - "lugh" -> Vector3(6083, 5069, 72), - "neit" -> Vector3(4345, 4319, 76), - "ogma" -> Vector3(3588, 3227, 114), - "pwyll" -> Vector3(4683, 4764, 104), + "anu" -> Vector3(3479, 2556, 56), + "bel" -> Vector3(3665, 4626, 58), + "caer" -> Vector3(4570, 2601, 56), + "dagda" -> Vector3(5825, 4449, 55), + "eadon" -> Vector3(2725, 2853, 53), + "gwydion" -> Vector3(5566, 3739, 61), + "lugh" -> Vector3(6083, 5069, 72), + "neit" -> Vector3(4345, 4319, 76), + "ogma" -> Vector3(3588, 3227, 114), + "pwyll" -> Vector3(4683, 4764, 104), "monolith" -> Vector3(3251, 3245, 160), "islands1" -> Vector3(6680, 6217, 125), "islands2" -> Vector3(1059, 6213, 120) ) zones("z6").gates ++= Map( - "gate1" -> Vector3(5040, 4327, 46), - "gate2" -> Vector3(2187, 5338, 30), - "gate3" -> Vector3(4960, 1922, 15), - "gate4" -> Vector3(2464, 3088, 189), + "gate1" -> Vector3(5040, 4327, 46), + "gate2" -> Vector3(2187, 5338, 30), + "gate3" -> Vector3(4960, 1922, 15), + "gate4" -> Vector3(2464, 3088, 189), "geowarp1" -> Vector3(3221, 5328, 242), "geowarp2" -> Vector3(2237, 1783, 238) ) zones("z6").locations ++= Map( - "akna" -> Vector3(4509, 3732, 219), - "anguta" -> Vector3(3999, 4170, 266), - "igaluk" -> Vector3(3241, 5658, 235), - "keelut" -> Vector3(3630, 1904, 265), + "akna" -> Vector3(4509, 3732, 219), + "anguta" -> Vector3(3999, 4170, 266), + "igaluk" -> Vector3(3241, 5658, 235), + "keelut" -> Vector3(3630, 1904, 265), "nerrivik" -> Vector3(3522, 3703, 322), - "pinga" -> Vector3(5938, 3545, 96), - "sedna" -> Vector3(3932, 5160, 232), - "tarqaq" -> Vector3(2980, 2155, 237), - "tootega" -> Vector3(5171, 3251, 217), + "pinga" -> Vector3(5938, 3545, 96), + "sedna" -> Vector3(3932, 5160, 232), + "tarqaq" -> Vector3(2980, 2155, 237), + "tootega" -> Vector3(5171, 3251, 217), "monolith" -> Vector3(4011, 4851, 32), - "bridge" -> Vector3(3729, 4859, 234) + "bridge" -> Vector3(3729, 4859, 234) ) zones("z7").gates ++= Map( - "gate1" -> Vector3(1516, 6448, 61), - "gate2" -> Vector3(5249, 3819, 69), - "gate3" -> Vector3(2763, 2961, 86), - "gate4" -> Vector3(6224, 1152, 78), + "gate1" -> Vector3(1516, 6448, 61), + "gate2" -> Vector3(5249, 3819, 69), + "gate3" -> Vector3(2763, 2961, 86), + "gate4" -> Vector3(6224, 1152, 78), "geowarp1" -> Vector3(6345, 4802, 90), "geowarp2" -> Vector3(3800, 2197, 64) ) zones("z7").locations ++= Map( - "andvari" -> Vector3(3233, 7207, 78), - "dagur" -> Vector3(4026, 6191, 60), - "eisa" -> Vector3(3456, 4513, 75), - "freyr" -> Vector3(2853, 3840, 56), - "gjallar" -> Vector3(1056, 2656, 74), - "helheim" -> Vector3(5542, 2532, 53), - "jarl" -> Vector3(1960, 5462, 68), - "kvasir" -> Vector3(4096, 1571, 69), - "mani" -> Vector3(5057, 4989, 58), - "nott" -> Vector3(6783, 4329, 46), - "ran" -> Vector3(2378, 1919, 85), - "vidar" -> Vector3(3772, 3024, 67), - "ymir" -> Vector3(1911, 4008, 69), + "andvari" -> Vector3(3233, 7207, 78), + "dagur" -> Vector3(4026, 6191, 60), + "eisa" -> Vector3(3456, 4513, 75), + "freyr" -> Vector3(2853, 3840, 56), + "gjallar" -> Vector3(1056, 2656, 74), + "helheim" -> Vector3(5542, 2532, 53), + "jarl" -> Vector3(1960, 5462, 68), + "kvasir" -> Vector3(4096, 1571, 69), + "mani" -> Vector3(5057, 4989, 58), + "nott" -> Vector3(6783, 4329, 46), + "ran" -> Vector3(2378, 1919, 85), + "vidar" -> Vector3(3772, 3024, 67), + "ymir" -> Vector3(1911, 4008, 69), "monolith" -> Vector3(6390, 1622, 63) ) zones("z8").gates ++= Map( - "gate1" -> Vector3(5437, 5272, 32), - "gate2" -> Vector3(3251, 5650, 60), - "gate3" -> Vector3(5112, 2616, 40), - "gate4" -> Vector3(2666, 1665, 45), + "gate1" -> Vector3(5437, 5272, 32), + "gate2" -> Vector3(3251, 5650, 60), + "gate3" -> Vector3(5112, 2616, 40), + "gate4" -> Vector3(2666, 1665, 45), "geowarp1" -> Vector3(3979, 5370, 47), "geowarp2" -> Vector3(6018, 3136, 35) ) zones("z8").locations ++= Map( - "atar" -> Vector3(3609, 2730, 47), - "dahaka" -> Vector3(4633, 5379, 54), - "hvar" -> Vector3(3857, 4764, 49), - "izha" -> Vector3(5396, 3852, 51), + "atar" -> Vector3(3609, 2730, 47), + "dahaka" -> Vector3(4633, 5379, 54), + "hvar" -> Vector3(3857, 4764, 49), + "izha" -> Vector3(5396, 3852, 51), "jamshid" -> Vector3(2371, 3378, 52), - "mithra" -> Vector3(2480, 4456, 44), - "rashnu" -> Vector3(3098, 3961, 59), - "yazata" -> Vector3(4620, 3983, 62), - "zal" -> Vector3(3966, 2164, 61), - "arch1" -> Vector3(4152, 3285, 31), - "arch2" -> Vector3(4688, 5272, 68), - "pride" -> Vector3(2913, 4412, 63) + "mithra" -> Vector3(2480, 4456, 44), + "rashnu" -> Vector3(3098, 3961, 59), + "yazata" -> Vector3(4620, 3983, 62), + "zal" -> Vector3(3966, 2164, 61), + "arch1" -> Vector3(4152, 3285, 31), + "arch2" -> Vector3(4688, 5272, 68), + "pride" -> Vector3(2913, 4412, 63) ) zones("z9").gates ++= Map( - "gate1" -> Vector3(1505, 6981, 65), - "gate2" -> Vector3(6835, 3517, 56), - "gate3" -> Vector3(1393, 1376, 53), + "gate1" -> Vector3(1505, 6981, 65), + "gate2" -> Vector3(6835, 3517, 56), + "gate3" -> Vector3(1393, 1376, 53), "geowarp1" -> Vector3(7081, 5552, 46), "geowarp2" -> Vector3(3776, 1092, 49) ) zones("z9").locations ++= Map( - "akua" -> Vector3(5258, 4041, 346), - "drakulu" -> Vector3(3806, 2647, 151), - "hiro" -> Vector3(4618, 5761, 190), - "iva" -> Vector3(6387, 5199, 55), - "karihi" -> Vector3(3879, 5574, 236), - "laka" -> Vector3(4720, 6718, 49), - "matagi" -> Vector3(5308, 5093, 239), - "ngaru" -> Vector3(4103, 4077, 205), - "oro" -> Vector3(4849, 4456, 208), - "pele" -> Vector3(4549, 3712, 208), - "rehua" -> Vector3(3843, 2195, 60), - "sina" -> Vector3(5919, 2177, 91), - "tara" -> Vector3(1082, 4225, 60), - "wakea" -> Vector3(1785, 5241, 63), + "akua" -> Vector3(5258, 4041, 346), + "drakulu" -> Vector3(3806, 2647, 151), + "hiro" -> Vector3(4618, 5761, 190), + "iva" -> Vector3(6387, 5199, 55), + "karihi" -> Vector3(3879, 5574, 236), + "laka" -> Vector3(4720, 6718, 49), + "matagi" -> Vector3(5308, 5093, 239), + "ngaru" -> Vector3(4103, 4077, 205), + "oro" -> Vector3(4849, 4456, 208), + "pele" -> Vector3(4549, 3712, 208), + "rehua" -> Vector3(3843, 2195, 60), + "sina" -> Vector3(5919, 2177, 91), + "tara" -> Vector3(1082, 4225, 60), + "wakea" -> Vector3(1785, 5241, 63), "monolith" -> Vector3(3246, 6507, 105) ) zones("z10").gates ++= Map( - "gate1" -> Vector3(6140, 6599, 71), - "gate2" -> Vector3(4814, 4608, 59), - "gate3" -> Vector3(3152, 3480, 54), - "gate4" -> Vector3(1605, 1446, 40), + "gate1" -> Vector3(6140, 6599, 71), + "gate2" -> Vector3(4814, 4608, 59), + "gate3" -> Vector3(3152, 3480, 54), + "gate4" -> Vector3(1605, 1446, 40), "geowarp1" -> Vector3(3612, 6918, 38), "geowarp2" -> Vector3(3668, 3327, 55) ) zones("z10").locations ++= Map( - "azeban" -> Vector3(6316, 5160, 62), - "cetan" -> Vector3(3587, 2522, 48), - "heyoka" -> Vector3(4395, 2327, 47), - "ikanam" -> Vector3(2740, 2412, 57), - "kyoi" -> Vector3(5491, 2284, 62), - "mekala" -> Vector3(6087, 2925, 59), - "onatha" -> Vector3(3397, 5799, 48), - "qumu" -> Vector3(3990, 5152, 46), - "sungrey" -> Vector3(4609, 5624, 72), - "tumas" -> Vector3(4687, 6392, 69), - "verica" -> Vector3(4973, 3459, 47), - "xelas" -> Vector3(6609, 4479, 56), + "azeban" -> Vector3(6316, 5160, 62), + "cetan" -> Vector3(3587, 2522, 48), + "heyoka" -> Vector3(4395, 2327, 47), + "ikanam" -> Vector3(2740, 2412, 57), + "kyoi" -> Vector3(5491, 2284, 62), + "mekala" -> Vector3(6087, 2925, 59), + "onatha" -> Vector3(3397, 5799, 48), + "qumu" -> Vector3(3990, 5152, 46), + "sungrey" -> Vector3(4609, 5624, 72), + "tumas" -> Vector3(4687, 6392, 69), + "verica" -> Vector3(4973, 3459, 47), + "xelas" -> Vector3(6609, 4479, 56), "monolith" -> Vector3(5651, 6024, 38) ) zones("home1").gates ++= Map( @@ -480,22 +483,22 @@ object CSRZoneImpl { "gate3" -> Vector3(4079, 2467, 155) ) zones("home3").locations += "hart_c" -> Vector3(3675, 2727, 91) - zones("tzshtr").locations += "roof" -> Vector3(499, 1568, 25) + zones("tzshtr").locations += "roof" -> Vector3(499, 1568, 25) zones("tzcotr").locations += "spawn" -> Vector3(960, 1002, 32) zones("tzdrtr").locations ++= Map( - "start" -> Vector3(2457, 1864, 23), + "start" -> Vector3(2457, 1864, 23), "air_pad" -> Vector3(1700, 1900, 32) ) - zones("tzshvs").locations += "roof" -> Vector3(499, 1568, 25) + zones("tzshvs").locations += "roof" -> Vector3(499, 1568, 25) zones("tzcovs").locations += "spawn" -> Vector3(960, 1002, 32) zones("tzdrvs").locations ++= Map( - "start" -> Vector3(2457, 1864, 23), + "start" -> Vector3(2457, 1864, 23), "air_pad" -> Vector3(1700, 1900, 32) ) - zones("tzshnc").locations += "roof" -> Vector3(499, 1568, 25) + zones("tzshnc").locations += "roof" -> Vector3(499, 1568, 25) zones("tzconc").locations += "spawn" -> Vector3(960, 1002, 32) zones("tzdrnc").locations ++= Map( - "start" -> Vector3(2457, 1864, 23), + "start" -> Vector3(2457, 1864, 23), "air_pad" -> Vector3(1700, 1900, 32) ) zones("c1").gates ++= Map( @@ -540,10 +543,10 @@ object CSRZoneImpl { "gate3" -> Vector3(2886, 1235, 32) ) zones("i3").locations ++= Map( - "dahaka" -> Vector3(1421, 2216, 30), + "dahaka" -> Vector3(1421, 2216, 30), "jamshid" -> Vector3(2500, 2543, 30), - "izha" -> Vector3(2569, 1544, 30), - "oasis" -> Vector3(2084, 1935, 40) + "izha" -> Vector3(2569, 1544, 30), + "oasis" -> Vector3(2084, 1935, 40) ) zones("i2").gates ++= Map( "gate1" -> Vector3(1243, 1393, 12), @@ -551,11 +554,11 @@ object CSRZoneImpl { "gate3" -> Vector3(2634, 1477, 12) ) zones("i2").locations ++= Map( - "rashnu" -> Vector3(1709, 1802, 91), + "rashnu" -> Vector3(1709, 1802, 91), "sraosha" -> Vector3(2729, 2349, 91), - "zal" -> Vector3(1888, 2728, 91), - "center" -> Vector3(2082, 2192, 160), - "vpad" -> Vector3(1770, 2686, 92) + "zal" -> Vector3(1888, 2728, 91), + "center" -> Vector3(2082, 2192, 160), + "vpad" -> Vector3(1770, 2686, 92) ) zones("i1").gates ++= Map( "gate1" -> Vector3(1225, 2036, 67), @@ -563,14 +566,14 @@ object CSRZoneImpl { "gate3" -> Vector3(2481, 1194, 89) ) zones("i1").locations ++= Map( - "hvar" -> Vector3(1559, 1268, 88), - "mithra" -> Vector3(2855, 2850, 89), - "yazata" -> Vector3(1254, 2583, 88), + "hvar" -> Vector3(1559, 1268, 88), + "mithra" -> Vector3(2855, 2850, 89), + "yazata" -> Vector3(1254, 2583, 88), "south_of_volcano" -> Vector3(2068, 1686, 88) ) zones("i4").gates ++= Map( - "gate1" -> Vector3(2359, 2717, 36), - "gate2" -> Vector3(2732, 1355, 36), + "gate1" -> Vector3(2359, 2717, 36), + "gate2" -> Vector3(2732, 1355, 36), "geowarp" -> Vector3(1424, 1640, 45) ) zones("i4").locations += "atar" -> Vector3(1915, 1936, 43) diff --git a/pslogin/src/main/scala/csr/Traveler.scala b/pslogin/src/main/scala/csr/Traveler.scala index a60d4188..62b7c2cb 100644 --- a/pslogin/src/main/scala/csr/Traveler.scala +++ b/pslogin/src/main/scala/csr/Traveler.scala @@ -1,37 +1,38 @@ -package csr +package net.psforever.pslogin.csr -// Copyright (c) 2017 PSForever import akka.actor.ActorRef import net.psforever.packet.PlanetSidePacketContainer /* The following is STILL for development and fun. -*/ + */ /** * The traveler is synonymous with the player. * The primary purpose of the object is to keep track of but not expose the player's session so that packets may be relayed back to him. * csr.Traveler also keeps track of which zone the player currently occupies. * @param session the player's session */ -class Traveler(private val session : ActorRef, var zone : String) { +class Traveler(private val session: ActorRef, var zone: String) { + /** * `sendToSelf` is a call that permits the session to gain access to its internal `rightRef` so that it can dispatch a packet. * @param msg the byte-code translation of a packet */ - def sendToSelf(msg : PlanetSidePacketContainer) : Unit = { + def sendToSelf(msg: PlanetSidePacketContainer): Unit = { // this.session.sendResponse(msg) } - def !(msg : Any) : Unit = { + def !(msg: Any): Unit = { session ! msg } } object Traveler { + /** * An abbreviated constructor for creating `csr.Traveler`s without invocation of `new`. * @param session the player's session * @return a traveler object for this player */ - def apply(session : ActorRef, zoneId : String) : Traveler = new Traveler(session, zoneId) + def apply(session: ActorRef, zoneId: String): Traveler = new Traveler(session, zoneId) } diff --git a/pslogin/src/main/scala/psadmin/CmdInternal.scala b/pslogin/src/main/scala/psadmin/CmdInternal.scala index af1f3d73..8197b8a4 100644 --- a/pslogin/src/main/scala/psadmin/CmdInternal.scala +++ b/pslogin/src/main/scala/psadmin/CmdInternal.scala @@ -1,21 +1,22 @@ -package net.psforever.psadmin +package net.psforever.pslogin.psadmin -import net.psforever.WorldConfig -import scala.collection.mutable.Map +import scala.collection.mutable +import net.psforever.pslogin.Config + +import scala.jdk.CollectionConverters._ object CmdInternal { - def cmdDumpConfig(args : Array[String]) = { - val config = WorldConfig.GetRawConfig - - CommandGoodResponse(s"Dump of WorldConfig", config) + def cmdDumpConfig(args: Array[String]) = { + val config = + Config.config.root.keySet.asScala.map(key => key -> Config.config.getAnyRef(key).asInstanceOf[Any]).toMap + CommandGoodResponse(s"Dump of WorldConfig", mutable.Map(config.toSeq: _*)) } - def cmdThreadDump(args : Array[String]) = { - import scala.jdk.CollectionConverters._ + def cmdThreadDump(args: Array[String]) = { - var data = Map[String,Any]() - val traces = Thread.getAllStackTraces().asScala + var data = mutable.Map[String, Any]() + val traces = Thread.getAllStackTraces().asScala var traces_fmt = List[String]() for ((thread, trace) <- traces) { @@ -23,7 +24,7 @@ object CmdInternal { traces_fmt = traces_fmt ++ List(info + trace.mkString("\n")) } - data{"trace"} = traces_fmt + data { "trace" } = traces_fmt CommandGoodResponse(s"Dump of ${traces.size} threads", data) } diff --git a/pslogin/src/main/scala/psadmin/CmdListPlayers.scala b/pslogin/src/main/scala/psadmin/CmdListPlayers.scala index e8bad111..639aa612 100644 --- a/pslogin/src/main/scala/psadmin/CmdListPlayers.scala +++ b/pslogin/src/main/scala/psadmin/CmdListPlayers.scala @@ -1,39 +1,27 @@ -// Copyright (c) 2020 PSForever -package net.psforever.psadmin +package net.psforever.pslogin.psadmin -import java.net.InetAddress -import java.net.InetSocketAddress -import akka.actor.{ActorRef, ActorSystem, Props} -import akka.actor.{Actor, Stash} -import akka.io.Tcp -import scodec.bits._ -import scodec.interop.akka._ +import akka.actor.ActorRef +import akka.actor.Actor import scala.collection.mutable.Map -import akka.util.ByteString -import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ import net.psforever.objects.zones.InterstellarCluster -import services.ServiceManager.Lookup -import services._ - -class CmdListPlayers(args : Array[String], services : Map[String,ActorRef]) extends Actor { - private [this] val log = org.log4s.getLogger(self.path.name) +class CmdListPlayers(args: Array[String], services: Map[String, ActorRef]) extends Actor { + private[this] val log = org.log4s.getLogger(self.path.name) override def preStart = { - services{"cluster"} ! InterstellarCluster.ListPlayers() + services { "cluster" } ! InterstellarCluster.ListPlayers() } override def receive = { case InterstellarCluster.PlayerList(players) => - val data = Map[String,Any]() - data{"player_count"} = players.size - data{"player_list"} = Array[String]() + val data = Map[String, Any]() + data { "player_count" } = players.size + data { "player_list" } = Array[String]() if (players.isEmpty) { context.parent ! CommandGoodResponse("No players currently online!", data) } else { - data{"player_list"} = players + data { "player_list" } = players context.parent ! CommandGoodResponse(s"${players.length} players online\n", data) } case default => log.error(s"Unexpected message $default") diff --git a/pslogin/src/main/scala/psadmin/CmdShutdown.scala b/pslogin/src/main/scala/psadmin/CmdShutdown.scala index ff76131d..75037125 100644 --- a/pslogin/src/main/scala/psadmin/CmdShutdown.scala +++ b/pslogin/src/main/scala/psadmin/CmdShutdown.scala @@ -1,12 +1,11 @@ -// Copyright (c) 2020 PSForever -package net.psforever.psadmin +package net.psforever.pslogin.psadmin -import akka.actor.{Actor,ActorRef} +import akka.actor.{Actor, ActorRef} import scala.collection.mutable.Map -class CmdShutdown(args : Array[String], services : Map[String,ActorRef]) extends Actor { +class CmdShutdown(args: Array[String], services: Map[String, ActorRef]) extends Actor { override def preStart = { - var data = Map[String,Any]() + var data = Map[String, Any]() context.parent ! CommandGoodResponse("Shutting down", data) context.system.terminate() } diff --git a/pslogin/src/main/scala/psadmin/PsAdminActor.scala b/pslogin/src/main/scala/psadmin/PsAdminActor.scala index d41d985c..ac0896eb 100644 --- a/pslogin/src/main/scala/psadmin/PsAdminActor.scala +++ b/pslogin/src/main/scala/psadmin/PsAdminActor.scala @@ -1,21 +1,15 @@ -// Copyright (c) 2020 PSForever -package net.psforever.psadmin +package net.psforever.pslogin.psadmin -import java.net.InetAddress import java.net.InetSocketAddress -import akka.actor.{ActorRef, ActorSystem, Props} +import akka.actor.{ActorRef, Props} import akka.actor.{Actor, Stash} import akka.io.Tcp import scodec.bits._ import scodec.interop.akka._ import scala.collection.mutable.Map import akka.util.ByteString -import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ -import net.psforever.objects.zones.InterstellarCluster import org.json4s._ -import org.json4s.Formats._ import org.json4s.native.Serialization.write import services.ServiceManager.Lookup @@ -25,16 +19,16 @@ object PsAdminActor { val whiteSpaceRegex = """\s+""".r } -class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) extends Actor with Stash { - private [this] val log = org.log4s.getLogger(self.path.name) +class PsAdminActor(peerAddress: InetSocketAddress, connection: ActorRef) extends Actor with Stash { + private[this] val log = org.log4s.getLogger(self.path.name) - val services = Map[String,ActorRef]() + val services = Map[String, ActorRef]() val servicesToResolve = Array("cluster") - var buffer = ByteString() + var buffer = ByteString() implicit val formats = DefaultFormats // for JSON serialization - case class CommandCall(operation : String, args : Array[String]) + case class CommandCall(operation: String, args: Array[String]) override def preStart() = { log.trace(s"PsAdmin connection started $peerAddress") @@ -46,9 +40,9 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten override def receive = ServiceLookup - def ServiceLookup : Receive = { + def ServiceLookup: Receive = { case ServiceManager.LookupResult(service, endpoint) => - services{service} = endpoint + services { service } = endpoint if (services.size == servicesToResolve.size) { unstashAll() @@ -58,11 +52,11 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten case default => stash() } - def ReceiveCommand : Receive = { + def ReceiveCommand: Receive = { case Tcp.Received(data) => buffer ++= data - var pos = -1; + var pos = -1; var amount = 0 do { pos = buffer.indexOf('\n') @@ -75,9 +69,8 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten if (line != "") { val tokens = PsAdminActor.whiteSpaceRegex.split(line) - val cmd = tokens.head - val args = tokens.tail - + val cmd = tokens.head + val args = tokens.tail amount += 1 self ! CommandCall(cmd, args) @@ -96,8 +89,8 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten } /// Process all buffered commands and stash other ones - def ProcessCommands : Receive = { - case c : CommandCall => + def ProcessCommands: Receive = { + case c: CommandCall => stash() unstashAll() context.become(ProcessCommand) @@ -109,9 +102,9 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten } /// Process a single command - def ProcessCommand : Receive = { + def ProcessCommand: Receive = { case CommandCall(cmd, args) => - val data = Map[String,Any]() + val data = Map[String, Any]() if (cmd == "help" || cmd == "?") { if (args.size == 0) { @@ -121,21 +114,21 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten resp += s"${command} - ${info.usage}\n" } - data{"message"} = resp + data { "message" } = resp } else { if (PsAdminCommands.commands.contains(args(0))) { - val info = PsAdminCommands.commands{args(0)} + val info = PsAdminCommands.commands { args(0) } - data{"message"} = s"${args(0)} - ${info.usage}" + data { "message" } = s"${args(0)} - ${info.usage}" } else { - data{"message"} = s"Unknown command ${args(0)}" - data{"error"} = true + data { "message" } = s"Unknown command ${args(0)}" + data { "error" } = true } } sendLine(write(data.toMap)) } else if (PsAdminCommands.commands.contains(cmd)) { - val cmd_template = PsAdminCommands.commands{cmd} + val cmd_template = PsAdminCommands.commands { cmd } cmd_template match { case PsAdminCommands.Command(usage, handler) => @@ -146,33 +139,33 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten resp match { case CommandGoodResponse(msg, data) => - data{"message"} = msg + data { "message" } = msg sendLine(write(data.toMap)) case CommandErrorResponse(msg, data) => - data{"message"} = msg - data{"error"} = true + data { "message" } = msg + data { "error" } = true sendLine(write(data.toMap)) } context.become(ProcessCommands) } } else { - data{"message"} = "Unknown command" - data{"error"} = true + data { "message" } = "Unknown command" + data { "error" } = true sendLine(write(data.toMap)) context.become(ProcessCommands) } - case resp : CommandResponse => + case resp: CommandResponse => resp match { case CommandGoodResponse(msg, data) => - data{"message"} = msg + data { "message" } = msg sendLine(write(data.toMap)) case CommandErrorResponse(msg, data) => - data{"message"} = msg - data{"error"} = true + data { "message" } = msg + data { "error" } = true sendLine(write(data.toMap)) } @@ -184,7 +177,7 @@ class PsAdminActor(peerAddress : InetSocketAddress, connection : ActorRef) exten context.become(ProcessCommands) } - def sendLine(line : String) = { + def sendLine(line: String) = { ByteVector.encodeUtf8(line + "\n") match { case Left(e) => log.error(s"Message encoding failure: $e") diff --git a/pslogin/src/main/scala/psadmin/PsAdminCommands.scala b/pslogin/src/main/scala/psadmin/PsAdminCommands.scala index 03944844..a8ea6311 100644 --- a/pslogin/src/main/scala/psadmin/PsAdminCommands.scala +++ b/pslogin/src/main/scala/psadmin/PsAdminCommands.scala @@ -1,19 +1,21 @@ -// Copyright (c) 2020 PSForever -package net.psforever.psadmin +package net.psforever.pslogin.psadmin -import scala.collection.mutable.Map +import scala.collection.mutable sealed trait CommandResponse -case class CommandGoodResponse(message : String, data : Map[String,Any]) extends CommandResponse -case class CommandErrorResponse(message : String, data : Map[String,Any]) extends CommandResponse +case class CommandGoodResponse(message: String, data: mutable.Map[String, Any]) extends CommandResponse +case class CommandErrorResponse(message: String, data: mutable.Map[String, Any]) extends CommandResponse object PsAdminCommands { import CmdInternal._ - val commands : Map[String,CommandInfo] = Map( - "list_players" -> Command("""Return a list of players connected to the interstellar cluster.""", classOf[CmdListPlayers]), + val commands: Map[String, CommandInfo] = Map( + "list_players" -> Command( + """Return a list of players connected to the interstellar cluster.""", + classOf[CmdListPlayers] + ), "dump_config" -> CommandInternal("""Dumps entire running config.""", cmdDumpConfig), - "shutdown" -> Command("""Shuts down the server forcefully.""", classOf[CmdShutdown]), + "shutdown" -> Command("""Shuts down the server forcefully.""", classOf[CmdShutdown]), "thread_dump" -> CommandInternal("""Returns all thread's stack traces.""", cmdThreadDump) ) @@ -23,9 +25,8 @@ object PsAdminCommands { /// A command with full access to the ActorSystem and WorldServer services. /// Spawns an Actor to handle the request and the service queries - case class Command[T](usage : String, handler : Class[T]) extends CommandInfo + case class Command[T](usage: String, handler: Class[T]) extends CommandInfo /// A command without access to the ActorSystem or any services - case class CommandInternal(usage : String, handler : ((Array[String]) => CommandResponse)) extends CommandInfo + case class CommandInternal(usage: String, handler: ((Array[String]) => CommandResponse)) extends CommandInfo } - diff --git a/pslogin/src/main/scala/zonemaps/Map01.scala b/pslogin/src/main/scala/zonemaps/Map01.scala index ce13ab67..8ff2b91a 100644 --- a/pslogin/src/main/scala/zonemaps/Map01.scala +++ b/pslogin/src/main/scala/zonemaps/Map01.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map01 { // Solsar Building10() def Building10(): Unit = { // Name: Mont Type: amp_station GUID: 1, MapID: 10 - LocalBuilding("Mont", 1, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3380f, 4300f, 82.74789f), Vector3(0f, 0f, 209f), amp_station))) - LocalObject(153, CaptureTerminal.Constructor(Vector3(3382.919f, 4301.615f, 94.25589f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Mont", + 1, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3380f, 4300f, 82.74789f), + Vector3(0f, 0f, 209f), + amp_station + ) + ) + ) + LocalObject( + 153, + CaptureTerminal.Constructor(Vector3(3382.919f, 4301.615f, 94.25589f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(121, Door.Constructor(Vector3(3376.516f, 4305.85f, 95.64989f)), owning_building_guid = 1) LocalObject(122, Door.Constructor(Vector3(3383.112f, 4293.944f, 95.64989f)), owning_building_guid = 1) LocalObject(268, Door.Constructor(Vector3(3296.951f, 4325.646f, 92.46289f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map01 { // Solsar LocalObject(1974, Door.Constructor(Vector3(3391.926f, 4318.35f, 77.30189f)), owning_building_guid = 1) LocalObject(1975, Door.Constructor(Vector3(3395.462f, 4311.971f, 77.30189f)), owning_building_guid = 1) LocalObject(1976, Door.Constructor(Vector3(3398.996f, 4305.596f, 77.30189f)), owning_building_guid = 1) - LocalObject(686, IFFLock.Constructor(Vector3(3353.573f, 4281.846f, 84.42789f), Vector3(0, 0, 241)), owning_building_guid = 1, door_guid = 650) - LocalObject(736, IFFLock.Constructor(Vector3(3360.615f, 4330.759f, 89.40989f), Vector3(0, 0, 331)), owning_building_guid = 1, door_guid = 273) - LocalObject(737, IFFLock.Constructor(Vector3(3361.332f, 4322.247f, 94.40889f), Vector3(0, 0, 241)), owning_building_guid = 1, door_guid = 272) - LocalObject(738, IFFLock.Constructor(Vector3(3368.696f, 4331.004f, 94.40889f), Vector3(0, 0, 61)), owning_building_guid = 1, door_guid = 274) - LocalObject(739, IFFLock.Constructor(Vector3(3374.242f, 4312.326f, 69.28389f), Vector3(0, 0, 61)), owning_building_guid = 1, door_guid = 479) - LocalObject(740, IFFLock.Constructor(Vector3(3380.971f, 4319.758f, 76.78389f), Vector3(0, 0, 331)), owning_building_guid = 1, door_guid = 483) - LocalObject(741, IFFLock.Constructor(Vector3(3390.974f, 4268.771f, 94.40889f), Vector3(0, 0, 241)), owning_building_guid = 1, door_guid = 276) - LocalObject(742, IFFLock.Constructor(Vector3(3396.205f, 4298.76f, 76.78389f), Vector3(0, 0, 151)), owning_building_guid = 1, door_guid = 487) - LocalObject(743, IFFLock.Constructor(Vector3(3398.335f, 4277.532f, 94.40889f), Vector3(0, 0, 61)), owning_building_guid = 1, door_guid = 278) - LocalObject(744, IFFLock.Constructor(Vector3(3399.396f, 4269.224f, 89.40989f), Vector3(0, 0, 151)), owning_building_guid = 1, door_guid = 277) - LocalObject(745, IFFLock.Constructor(Vector3(3420.096f, 4325.002f, 69.28389f), Vector3(0, 0, 241)), owning_building_guid = 1, door_guid = 494) - LocalObject(746, IFFLock.Constructor(Vector3(3487.444f, 4267.145f, 84.40789f), Vector3(0, 0, 151)), owning_building_guid = 1, door_guid = 285) + LocalObject( + 686, + IFFLock.Constructor(Vector3(3353.573f, 4281.846f, 84.42789f), Vector3(0, 0, 241)), + owning_building_guid = 1, + door_guid = 650 + ) + LocalObject( + 736, + IFFLock.Constructor(Vector3(3360.615f, 4330.759f, 89.40989f), Vector3(0, 0, 331)), + owning_building_guid = 1, + door_guid = 273 + ) + LocalObject( + 737, + IFFLock.Constructor(Vector3(3361.332f, 4322.247f, 94.40889f), Vector3(0, 0, 241)), + owning_building_guid = 1, + door_guid = 272 + ) + LocalObject( + 738, + IFFLock.Constructor(Vector3(3368.696f, 4331.004f, 94.40889f), Vector3(0, 0, 61)), + owning_building_guid = 1, + door_guid = 274 + ) + LocalObject( + 739, + IFFLock.Constructor(Vector3(3374.242f, 4312.326f, 69.28389f), Vector3(0, 0, 61)), + owning_building_guid = 1, + door_guid = 479 + ) + LocalObject( + 740, + IFFLock.Constructor(Vector3(3380.971f, 4319.758f, 76.78389f), Vector3(0, 0, 331)), + owning_building_guid = 1, + door_guid = 483 + ) + LocalObject( + 741, + IFFLock.Constructor(Vector3(3390.974f, 4268.771f, 94.40889f), Vector3(0, 0, 241)), + owning_building_guid = 1, + door_guid = 276 + ) + LocalObject( + 742, + IFFLock.Constructor(Vector3(3396.205f, 4298.76f, 76.78389f), Vector3(0, 0, 151)), + owning_building_guid = 1, + door_guid = 487 + ) + LocalObject( + 743, + IFFLock.Constructor(Vector3(3398.335f, 4277.532f, 94.40889f), Vector3(0, 0, 61)), + owning_building_guid = 1, + door_guid = 278 + ) + LocalObject( + 744, + IFFLock.Constructor(Vector3(3399.396f, 4269.224f, 89.40989f), Vector3(0, 0, 151)), + owning_building_guid = 1, + door_guid = 277 + ) + LocalObject( + 745, + IFFLock.Constructor(Vector3(3420.096f, 4325.002f, 69.28389f), Vector3(0, 0, 241)), + owning_building_guid = 1, + door_guid = 494 + ) + LocalObject( + 746, + IFFLock.Constructor(Vector3(3487.444f, 4267.145f, 84.40789f), Vector3(0, 0, 151)), + owning_building_guid = 1, + door_guid = 285 + ) LocalObject(933, Locker.Constructor(Vector3(3370.107f, 4287.468f, 67.94788f)), owning_building_guid = 1) LocalObject(934, Locker.Constructor(Vector3(3371.277f, 4288.116f, 67.94788f)), owning_building_guid = 1) LocalObject(935, Locker.Constructor(Vector3(3372.445f, 4288.764f, 67.94788f)), owning_building_guid = 1) @@ -94,65 +170,258 @@ object Map01 { // Solsar LocalObject(942, Locker.Constructor(Vector3(3379.912f, 4292.902f, 67.94788f)), owning_building_guid = 1) LocalObject(943, Locker.Constructor(Vector3(3380.66f, 4316.212f, 75.70889f)), owning_building_guid = 1) LocalObject(944, Locker.Constructor(Vector3(3381.07f, 4293.544f, 67.94788f)), owning_building_guid = 1) - LocalObject(1338, Terminal.Constructor(Vector3(3369.105f, 4319.66f, 84.27689f), order_terminal), owning_building_guid = 1) - LocalObject(1339, Terminal.Constructor(Vector3(3380.51f, 4310.106f, 77.03789f), order_terminal), owning_building_guid = 1) - LocalObject(1340, Terminal.Constructor(Vector3(3382.319f, 4306.843f, 77.03789f), order_terminal), owning_building_guid = 1) - LocalObject(1341, Terminal.Constructor(Vector3(3384.156f, 4303.529f, 77.03789f), order_terminal), owning_building_guid = 1) - LocalObject(1342, Terminal.Constructor(Vector3(3390.899f, 4280.342f, 84.27689f), order_terminal), owning_building_guid = 1) - LocalObject(1343, Terminal.Constructor(Vector3(3399.648f, 4310.896f, 84.27689f), order_terminal), owning_building_guid = 1) - LocalObject(1906, Terminal.Constructor(Vector3(3382.632f, 4306.604f, 89.47588f), spawn_terminal), owning_building_guid = 1) - LocalObject(1907, Terminal.Constructor(Vector3(3390.458f, 4320.383f, 77.58189f), spawn_terminal), owning_building_guid = 1) - LocalObject(1908, Terminal.Constructor(Vector3(3393.997f, 4314.007f, 77.58189f), spawn_terminal), owning_building_guid = 1) - LocalObject(1909, Terminal.Constructor(Vector3(3397.528f, 4307.631f, 77.58189f), spawn_terminal), owning_building_guid = 1) - LocalObject(1910, Terminal.Constructor(Vector3(3408.411f, 4298.13f, 69.50488f), spawn_terminal), owning_building_guid = 1) - LocalObject(1911, Terminal.Constructor(Vector3(3441.037f, 4288.775f, 77.00488f), spawn_terminal), owning_building_guid = 1) - LocalObject(2081, Terminal.Constructor(Vector3(3461.9f, 4251.102f, 84.84988f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1285, VehicleSpawnPad.Constructor(Vector3(3455.209f, 4262.986f, 80.69289f), mb_pad_creation, Vector3(0, 0, -29)), owning_building_guid = 1, terminal_guid = 2081) + LocalObject( + 1338, + Terminal.Constructor(Vector3(3369.105f, 4319.66f, 84.27689f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1339, + Terminal.Constructor(Vector3(3380.51f, 4310.106f, 77.03789f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1340, + Terminal.Constructor(Vector3(3382.319f, 4306.843f, 77.03789f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1341, + Terminal.Constructor(Vector3(3384.156f, 4303.529f, 77.03789f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1342, + Terminal.Constructor(Vector3(3390.899f, 4280.342f, 84.27689f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1343, + Terminal.Constructor(Vector3(3399.648f, 4310.896f, 84.27689f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1906, + Terminal.Constructor(Vector3(3382.632f, 4306.604f, 89.47588f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1907, + Terminal.Constructor(Vector3(3390.458f, 4320.383f, 77.58189f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1908, + Terminal.Constructor(Vector3(3393.997f, 4314.007f, 77.58189f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1909, + Terminal.Constructor(Vector3(3397.528f, 4307.631f, 77.58189f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1910, + Terminal.Constructor(Vector3(3408.411f, 4298.13f, 69.50488f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1911, + Terminal.Constructor(Vector3(3441.037f, 4288.775f, 77.00488f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2081, + Terminal.Constructor(Vector3(3461.9f, 4251.102f, 84.84988f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1285, + VehicleSpawnPad.Constructor(Vector3(3455.209f, 4262.986f, 80.69289f), mb_pad_creation, Vector3(0, 0, -29)), + owning_building_guid = 1, + terminal_guid = 2081 + ) LocalObject(1802, ResourceSilo.Constructor(Vector3(3292.507f, 4349.253f, 89.98289f)), owning_building_guid = 1) - LocalObject(1825, SpawnTube.Constructor(Vector3(3391.802f, 4319.481f, 75.44788f), Vector3(0, 0, 151)), owning_building_guid = 1) - LocalObject(1826, SpawnTube.Constructor(Vector3(3395.337f, 4313.104f, 75.44788f), Vector3(0, 0, 151)), owning_building_guid = 1) - LocalObject(1827, SpawnTube.Constructor(Vector3(3398.87f, 4306.73f, 75.44788f), Vector3(0, 0, 151)), owning_building_guid = 1) - LocalObject(1299, ProximityTerminal.Constructor(Vector3(3375.339f, 4290.991f, 67.94788f), medical_terminal), owning_building_guid = 1) - LocalObject(1300, ProximityTerminal.Constructor(Vector3(3399.281f, 4310.694f, 87.94788f), medical_terminal), owning_building_guid = 1) - LocalObject(1480, ProximityTerminal.Constructor(Vector3(3327.2f, 4293.409f, 91.25288f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1481, Terminal.Constructor(Vector3(3327.2f, 4293.409f, 91.25288f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1483, ProximityTerminal.Constructor(Vector3(3337.111f, 4360.257f, 91.27589f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1484, Terminal.Constructor(Vector3(3337.111f, 4360.257f, 91.27589f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1486, ProximityTerminal.Constructor(Vector3(3384.572f, 4236.892f, 93.41389f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1487, Terminal.Constructor(Vector3(3384.572f, 4236.892f, 93.41389f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1489, ProximityTerminal.Constructor(Vector3(3439.656f, 4310.462f, 91.25288f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1490, Terminal.Constructor(Vector3(3439.656f, 4310.462f, 91.25288f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1737, ProximityTerminal.Constructor(Vector3(3325.68f, 4269.44f, 82.14789f), repair_silo), owning_building_guid = 1) - LocalObject(1738, Terminal.Constructor(Vector3(3325.68f, 4269.44f, 82.14789f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1741, ProximityTerminal.Constructor(Vector3(3441.406f, 4333.806f, 82.14789f), repair_silo), owning_building_guid = 1) - LocalObject(1742, Terminal.Constructor(Vector3(3441.406f, 4333.806f, 82.14789f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1219, FacilityTurret.Constructor(Vector3(3269.344f, 4349.394f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1825, + SpawnTube.Constructor(Vector3(3391.802f, 4319.481f, 75.44788f), Vector3(0, 0, 151)), + owning_building_guid = 1 + ) + LocalObject( + 1826, + SpawnTube.Constructor(Vector3(3395.337f, 4313.104f, 75.44788f), Vector3(0, 0, 151)), + owning_building_guid = 1 + ) + LocalObject( + 1827, + SpawnTube.Constructor(Vector3(3398.87f, 4306.73f, 75.44788f), Vector3(0, 0, 151)), + owning_building_guid = 1 + ) + LocalObject( + 1299, + ProximityTerminal.Constructor(Vector3(3375.339f, 4290.991f, 67.94788f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1300, + ProximityTerminal.Constructor(Vector3(3399.281f, 4310.694f, 87.94788f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1480, + ProximityTerminal.Constructor(Vector3(3327.2f, 4293.409f, 91.25288f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1481, + Terminal.Constructor(Vector3(3327.2f, 4293.409f, 91.25288f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1483, + ProximityTerminal.Constructor(Vector3(3337.111f, 4360.257f, 91.27589f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1484, + Terminal.Constructor(Vector3(3337.111f, 4360.257f, 91.27589f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1486, + ProximityTerminal.Constructor(Vector3(3384.572f, 4236.892f, 93.41389f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1487, + Terminal.Constructor(Vector3(3384.572f, 4236.892f, 93.41389f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1489, + ProximityTerminal.Constructor(Vector3(3439.656f, 4310.462f, 91.25288f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1490, + Terminal.Constructor(Vector3(3439.656f, 4310.462f, 91.25288f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1737, + ProximityTerminal.Constructor(Vector3(3325.68f, 4269.44f, 82.14789f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1738, + Terminal.Constructor(Vector3(3325.68f, 4269.44f, 82.14789f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1741, + ProximityTerminal.Constructor(Vector3(3441.406f, 4333.806f, 82.14789f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1742, + Terminal.Constructor(Vector3(3441.406f, 4333.806f, 82.14789f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1219, + FacilityTurret.Constructor(Vector3(3269.344f, 4349.394f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1219, 5000) - LocalObject(1220, FacilityTurret.Constructor(Vector3(3334.443f, 4227.359f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1220, + FacilityTurret.Constructor(Vector3(3334.443f, 4227.359f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1220, 5001) - LocalObject(1221, FacilityTurret.Constructor(Vector3(3350.346f, 4396.83f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1221, + FacilityTurret.Constructor(Vector3(3350.346f, 4396.83f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1221, 5002) - LocalObject(1222, FacilityTurret.Constructor(Vector3(3367.111f, 4172.999f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1222, + FacilityTurret.Constructor(Vector3(3367.111f, 4172.999f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1222, 5003) - LocalObject(1223, FacilityTurret.Constructor(Vector3(3403.542f, 4423.77f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1223, + FacilityTurret.Constructor(Vector3(3403.542f, 4423.77f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1223, 5004) - LocalObject(1224, FacilityTurret.Constructor(Vector3(3501.342f, 4247.393f, 91.45589f), manned_turret), owning_building_guid = 1) + LocalObject( + 1224, + FacilityTurret.Constructor(Vector3(3501.342f, 4247.393f, 91.45589f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1224, 5005) - LocalObject(1616, Painbox.Constructor(Vector3(3429.009f, 4335.035f, 72.81889f), painbox), owning_building_guid = 1) - LocalObject(1625, Painbox.Constructor(Vector3(3390.156f, 4307.246f, 80.39629f), painbox_continuous), owning_building_guid = 1) - LocalObject(1634, Painbox.Constructor(Vector3(3417.756f, 4326.366f, 69.40689f), painbox_door_radius), owning_building_guid = 1) - LocalObject(1645, Painbox.Constructor(Vector3(3380.635f, 4295.828f, 78.62649f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1646, Painbox.Constructor(Vector3(3382.222f, 4320.742f, 76.64789f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1647, Painbox.Constructor(Vector3(3394.932f, 4297.662f, 76.71239f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 1616, + Painbox.Constructor(Vector3(3429.009f, 4335.035f, 72.81889f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 1625, + Painbox.Constructor(Vector3(3390.156f, 4307.246f, 80.39629f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1634, + Painbox.Constructor(Vector3(3417.756f, 4326.366f, 69.40689f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 1645, + Painbox.Constructor(Vector3(3380.635f, 4295.828f, 78.62649f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1646, + Painbox.Constructor(Vector3(3382.222f, 4320.742f, 76.64789f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1647, + Painbox.Constructor(Vector3(3394.932f, 4297.662f, 76.71239f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(214, Generator.Constructor(Vector3(3433.635f, 4334.333f, 66.65388f)), owning_building_guid = 1) - LocalObject(205, Terminal.Constructor(Vector3(3426.493f, 4330.32f, 67.94788f), gen_control), owning_building_guid = 1) + LocalObject( + 205, + Terminal.Constructor(Vector3(3426.493f, 4330.32f, 67.94788f), gen_control), + owning_building_guid = 1 + ) } Building6() def Building6(): Unit = { // Name: Bastet Type: amp_station GUID: 4, MapID: 6 - LocalBuilding("Bastet", 4, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5346f, 5518f, 56.43483f), Vector3(0f, 0f, 360f), amp_station))) - LocalObject(160, CaptureTerminal.Constructor(Vector3(5342.664f, 5518.003f, 67.94283f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Bastet", + 4, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5346f, 5518f, 56.43483f), + Vector3(0f, 0f, 360f), + amp_station + ) + ) + ) + LocalObject( + 160, + CaptureTerminal.Constructor(Vector3(5342.664f, 5518.003f, 67.94283f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(123, Door.Constructor(Vector3(5346.211f, 5511.195f, 69.33682f)), owning_building_guid = 4) LocalObject(124, Door.Constructor(Vector3(5346.214f, 5524.805f, 69.33682f)), owning_building_guid = 4) LocalObject(420, Door.Constructor(Vector3(5270f, 5598f, 58.15583f)), owning_building_guid = 4) @@ -198,18 +467,78 @@ object Map01 { // Solsar LocalObject(2017, Door.Constructor(Vector3(5326.673f, 5507.733f, 50.98883f)), owning_building_guid = 4) LocalObject(2018, Door.Constructor(Vector3(5326.673f, 5515.026f, 50.98883f)), owning_building_guid = 4) LocalObject(2019, Door.Constructor(Vector3(5326.673f, 5522.315f, 50.98883f)), owning_building_guid = 4) - LocalObject(693, IFFLock.Constructor(Vector3(5377.915f, 5521.066f, 58.11483f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 657) - LocalObject(850, IFFLock.Constructor(Vector3(5267.956f, 5598.826f, 58.09483f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 420) - LocalObject(851, IFFLock.Constructor(Vector3(5298.81f, 5515.572f, 42.97083f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 628) - LocalObject(852, IFFLock.Constructor(Vector3(5332.428f, 5526.941f, 50.47083f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 635) - LocalObject(853, IFFLock.Constructor(Vector3(5335.572f, 5501.19f, 50.47083f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 634) - LocalObject(854, IFFLock.Constructor(Vector3(5340.856f, 5485.403f, 68.09583f), Vector3(0, 0, 270)), owning_building_guid = 4, door_guid = 427) - LocalObject(855, IFFLock.Constructor(Vector3(5340.856f, 5546.54f, 68.09583f), Vector3(0, 0, 270)), owning_building_guid = 4, door_guid = 428) - LocalObject(856, IFFLock.Constructor(Vector3(5343.956f, 5554.321f, 63.09682f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 430) - LocalObject(857, IFFLock.Constructor(Vector3(5345.06f, 5504.428f, 42.97083f), Vector3(0, 0, 270)), owning_building_guid = 4, door_guid = 642) - LocalObject(858, IFFLock.Constructor(Vector3(5348.042f, 5481.7f, 63.09682f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 429) - LocalObject(859, IFFLock.Constructor(Vector3(5351.542f, 5489.492f, 68.09583f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 431) - LocalObject(860, IFFLock.Constructor(Vector3(5351.542f, 5550.633f, 68.09583f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 432) + LocalObject( + 693, + IFFLock.Constructor(Vector3(5377.915f, 5521.066f, 58.11483f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 657 + ) + LocalObject( + 850, + IFFLock.Constructor(Vector3(5267.956f, 5598.826f, 58.09483f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 420 + ) + LocalObject( + 851, + IFFLock.Constructor(Vector3(5298.81f, 5515.572f, 42.97083f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 628 + ) + LocalObject( + 852, + IFFLock.Constructor(Vector3(5332.428f, 5526.941f, 50.47083f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 635 + ) + LocalObject( + 853, + IFFLock.Constructor(Vector3(5335.572f, 5501.19f, 50.47083f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 634 + ) + LocalObject( + 854, + IFFLock.Constructor(Vector3(5340.856f, 5485.403f, 68.09583f), Vector3(0, 0, 270)), + owning_building_guid = 4, + door_guid = 427 + ) + LocalObject( + 855, + IFFLock.Constructor(Vector3(5340.856f, 5546.54f, 68.09583f), Vector3(0, 0, 270)), + owning_building_guid = 4, + door_guid = 428 + ) + LocalObject( + 856, + IFFLock.Constructor(Vector3(5343.956f, 5554.321f, 63.09682f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 430 + ) + LocalObject( + 857, + IFFLock.Constructor(Vector3(5345.06f, 5504.428f, 42.97083f), Vector3(0, 0, 270)), + owning_building_guid = 4, + door_guid = 642 + ) + LocalObject( + 858, + IFFLock.Constructor(Vector3(5348.042f, 5481.7f, 63.09682f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 429 + ) + LocalObject( + 859, + IFFLock.Constructor(Vector3(5351.542f, 5489.492f, 68.09583f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 431 + ) + LocalObject( + 860, + IFFLock.Constructor(Vector3(5351.542f, 5550.633f, 68.09583f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 432 + ) LocalObject(1132, Locker.Constructor(Vector3(5337.563f, 5504.141f, 49.39582f)), owning_building_guid = 4) LocalObject(1133, Locker.Constructor(Vector3(5338.727f, 5504.141f, 49.39582f)), owning_building_guid = 4) LocalObject(1134, Locker.Constructor(Vector3(5339.874f, 5504.141f, 49.39582f)), owning_building_guid = 4) @@ -222,64 +551,253 @@ object Map01 { // Solsar LocalObject(1141, Locker.Constructor(Vector3(5358.055f, 5524.165f, 41.63483f)), owning_building_guid = 4) LocalObject(1142, Locker.Constructor(Vector3(5359.391f, 5524.165f, 41.63483f)), owning_building_guid = 4) LocalObject(1143, Locker.Constructor(Vector3(5360.728f, 5524.165f, 41.63483f)), owning_building_guid = 4) - LocalObject(1404, Terminal.Constructor(Vector3(5323.533f, 5517.996f, 57.96383f), order_terminal), owning_building_guid = 4) - LocalObject(1405, Terminal.Constructor(Vector3(5340.654f, 5509.408f, 50.72483f), order_terminal), owning_building_guid = 4) - LocalObject(1406, Terminal.Constructor(Vector3(5340.654f, 5513.139f, 50.72483f), order_terminal), owning_building_guid = 4) - LocalObject(1407, Terminal.Constructor(Vector3(5340.654f, 5516.928f, 50.72483f), order_terminal), owning_building_guid = 4) - LocalObject(1408, Terminal.Constructor(Vector3(5345.998f, 5495.523f, 57.96383f), order_terminal), owning_building_guid = 4) - LocalObject(1409, Terminal.Constructor(Vector3(5345.998f, 5540.477f, 57.96383f), order_terminal), owning_building_guid = 4) - LocalObject(1953, Terminal.Constructor(Vector3(5298.058f, 5557.409f, 50.69183f), spawn_terminal), owning_building_guid = 4) - LocalObject(1954, Terminal.Constructor(Vector3(5322.058f, 5533.409f, 43.19183f), spawn_terminal), owning_building_guid = 4) - LocalObject(1955, Terminal.Constructor(Vector3(5326.971f, 5505.243f, 51.26883f), spawn_terminal), owning_building_guid = 4) - LocalObject(1956, Terminal.Constructor(Vector3(5326.967f, 5512.535f, 51.26883f), spawn_terminal), owning_building_guid = 4) - LocalObject(1957, Terminal.Constructor(Vector3(5326.97f, 5519.823f, 51.26883f), spawn_terminal), owning_building_guid = 4) - LocalObject(1958, Terminal.Constructor(Vector3(5340.496f, 5513.5f, 63.16283f), spawn_terminal), owning_building_guid = 4) - LocalObject(2088, Terminal.Constructor(Vector3(5298.075f, 5600.473f, 58.53683f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(1296, VehicleSpawnPad.Constructor(Vector3(5298.165f, 5586.835f, 54.37983f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 4, terminal_guid = 2088) + LocalObject( + 1404, + Terminal.Constructor(Vector3(5323.533f, 5517.996f, 57.96383f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1405, + Terminal.Constructor(Vector3(5340.654f, 5509.408f, 50.72483f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1406, + Terminal.Constructor(Vector3(5340.654f, 5513.139f, 50.72483f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1407, + Terminal.Constructor(Vector3(5340.654f, 5516.928f, 50.72483f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1408, + Terminal.Constructor(Vector3(5345.998f, 5495.523f, 57.96383f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1409, + Terminal.Constructor(Vector3(5345.998f, 5540.477f, 57.96383f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1953, + Terminal.Constructor(Vector3(5298.058f, 5557.409f, 50.69183f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1954, + Terminal.Constructor(Vector3(5322.058f, 5533.409f, 43.19183f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(5326.971f, 5505.243f, 51.26883f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1956, + Terminal.Constructor(Vector3(5326.967f, 5512.535f, 51.26883f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1957, + Terminal.Constructor(Vector3(5326.97f, 5519.823f, 51.26883f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(5340.496f, 5513.5f, 63.16283f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2088, + Terminal.Constructor(Vector3(5298.075f, 5600.473f, 58.53683f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 1296, + VehicleSpawnPad.Constructor(Vector3(5298.165f, 5586.835f, 54.37983f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 4, + terminal_guid = 2088 + ) LocalObject(1809, ResourceSilo.Constructor(Vector3(5398.645f, 5432.505f, 63.66983f)), owning_building_guid = 4) - LocalObject(1868, SpawnTube.Constructor(Vector3(5326.233f, 5506.683f, 49.13483f), Vector3(0, 0, 0)), owning_building_guid = 4) - LocalObject(1869, SpawnTube.Constructor(Vector3(5326.233f, 5513.974f, 49.13483f), Vector3(0, 0, 0)), owning_building_guid = 4) - LocalObject(1870, SpawnTube.Constructor(Vector3(5326.233f, 5521.262f, 49.13483f), Vector3(0, 0, 0)), owning_building_guid = 4) - LocalObject(1310, ProximityTerminal.Constructor(Vector3(5323.952f, 5517.994f, 61.63483f), medical_terminal), owning_building_guid = 4) - LocalObject(1311, ProximityTerminal.Constructor(Vector3(5354.444f, 5523.62f, 41.63483f), medical_terminal), owning_building_guid = 4) - LocalObject(1567, ProximityTerminal.Constructor(Vector3(5288.752f, 5537.771f, 64.93983f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1568, Terminal.Constructor(Vector3(5288.752f, 5537.771f, 64.93983f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1570, ProximityTerminal.Constructor(Vector3(5354.298f, 5444.505f, 64.96283f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1571, Terminal.Constructor(Vector3(5354.298f, 5444.505f, 64.96283f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1573, ProximityTerminal.Constructor(Vector3(5372.597f, 5575.412f, 67.10083f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1574, Terminal.Constructor(Vector3(5372.597f, 5575.412f, 67.10083f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1576, ProximityTerminal.Constructor(Vector3(5395.375f, 5498.167f, 64.93983f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1577, Terminal.Constructor(Vector3(5395.375f, 5498.167f, 64.93983f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1793, ProximityTerminal.Constructor(Vector3(5275.903f, 5518.204f, 55.83483f), repair_silo), owning_building_guid = 4) - LocalObject(1794, Terminal.Constructor(Vector3(5275.903f, 5518.204f, 55.83483f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1797, ProximityTerminal.Constructor(Vector3(5408.325f, 5518.393f, 55.83483f), repair_silo), owning_building_guid = 4) - LocalObject(1798, Terminal.Constructor(Vector3(5408.325f, 5518.393f, 55.83483f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1272, FacilityTurret.Constructor(Vector3(5265.376f, 5622.839f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1868, + SpawnTube.Constructor(Vector3(5326.233f, 5506.683f, 49.13483f), Vector3(0, 0, 0)), + owning_building_guid = 4 + ) + LocalObject( + 1869, + SpawnTube.Constructor(Vector3(5326.233f, 5513.974f, 49.13483f), Vector3(0, 0, 0)), + owning_building_guid = 4 + ) + LocalObject( + 1870, + SpawnTube.Constructor(Vector3(5326.233f, 5521.262f, 49.13483f), Vector3(0, 0, 0)), + owning_building_guid = 4 + ) + LocalObject( + 1310, + ProximityTerminal.Constructor(Vector3(5323.952f, 5517.994f, 61.63483f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1311, + ProximityTerminal.Constructor(Vector3(5354.444f, 5523.62f, 41.63483f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1567, + ProximityTerminal.Constructor(Vector3(5288.752f, 5537.771f, 64.93983f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1568, + Terminal.Constructor(Vector3(5288.752f, 5537.771f, 64.93983f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1570, + ProximityTerminal.Constructor(Vector3(5354.298f, 5444.505f, 64.96283f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1571, + Terminal.Constructor(Vector3(5354.298f, 5444.505f, 64.96283f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1573, + ProximityTerminal.Constructor(Vector3(5372.597f, 5575.412f, 67.10083f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1574, + Terminal.Constructor(Vector3(5372.597f, 5575.412f, 67.10083f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1576, + ProximityTerminal.Constructor(Vector3(5395.375f, 5498.167f, 64.93983f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1577, + Terminal.Constructor(Vector3(5395.375f, 5498.167f, 64.93983f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1793, + ProximityTerminal.Constructor(Vector3(5275.903f, 5518.204f, 55.83483f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 1794, + Terminal.Constructor(Vector3(5275.903f, 5518.204f, 55.83483f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1797, + ProximityTerminal.Constructor(Vector3(5408.325f, 5518.393f, 55.83483f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 1798, + Terminal.Constructor(Vector3(5408.325f, 5518.393f, 55.83483f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1272, + FacilityTurret.Constructor(Vector3(5265.376f, 5622.839f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1272, 5006) - LocalObject(1273, FacilityTurret.Constructor(Vector3(5265.405f, 5421.162f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1273, + FacilityTurret.Constructor(Vector3(5265.405f, 5421.162f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1273, 5007) - LocalObject(1274, FacilityTurret.Constructor(Vector3(5324.992f, 5418.934f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1274, + FacilityTurret.Constructor(Vector3(5324.992f, 5418.934f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1274, 5008) - LocalObject(1275, FacilityTurret.Constructor(Vector3(5418.835f, 5421.152f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1275, + FacilityTurret.Constructor(Vector3(5418.835f, 5421.152f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1275, 5009) - LocalObject(1276, FacilityTurret.Constructor(Vector3(5418.844f, 5622.829f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1276, + FacilityTurret.Constructor(Vector3(5418.844f, 5622.829f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1276, 5010) - LocalObject(1277, FacilityTurret.Constructor(Vector3(5421.062f, 5559.447f, 65.14282f), manned_turret), owning_building_guid = 4) + LocalObject( + 1277, + FacilityTurret.Constructor(Vector3(5421.062f, 5559.447f, 65.14282f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1277, 5011) - LocalObject(1623, Painbox.Constructor(Vector3(5286.151f, 5511.117f, 46.50583f), painbox), owning_building_guid = 4) - LocalObject(1632, Painbox.Constructor(Vector3(5333.604f, 5516.586f, 54.08323f), painbox_continuous), owning_building_guid = 4) - LocalObject(1641, Painbox.Constructor(Vector3(5300.195f, 5513.244f, 43.09383f), painbox_door_radius), owning_building_guid = 4) - LocalObject(1666, Painbox.Constructor(Vector3(5334f, 5500.937f, 50.33483f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(1667, Painbox.Constructor(Vector3(5334.074f, 5527.284f, 50.39933f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(1668, Painbox.Constructor(Vector3(5347.467f, 5521.957f, 52.31343f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 1623, + Painbox.Constructor(Vector3(5286.151f, 5511.117f, 46.50583f), painbox), + owning_building_guid = 4 + ) + LocalObject( + 1632, + Painbox.Constructor(Vector3(5333.604f, 5516.586f, 54.08323f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1641, + Painbox.Constructor(Vector3(5300.195f, 5513.244f, 43.09383f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 1666, + Painbox.Constructor(Vector3(5334f, 5500.937f, 50.33483f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1667, + Painbox.Constructor(Vector3(5334.074f, 5527.284f, 50.39933f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1668, + Painbox.Constructor(Vector3(5347.467f, 5521.957f, 52.31343f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(221, Generator.Constructor(Vector3(5282.445f, 5513.975f, 40.34083f)), owning_building_guid = 4) - LocalObject(212, Terminal.Constructor(Vector3(5290.637f, 5514.022f, 41.63483f), gen_control), owning_building_guid = 4) + LocalObject( + 212, + Terminal.Constructor(Vector3(5290.637f, 5514.022f, 41.63483f), gen_control), + owning_building_guid = 4 + ) } Building34() def Building34(): Unit = { // Name: bunkerg2 Type: bunker_gauntlet GUID: 7, MapID: 34 - LocalBuilding("bunkerg2", 7, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4318f, 4604f, 59.17406f), Vector3(0f, 0f, 335f), bunker_gauntlet))) + LocalBuilding( + "bunkerg2", + 7, + 34, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4318f, 4604f, 59.17406f), + Vector3(0f, 0f, 335f), + bunker_gauntlet + ) + ) + ) LocalObject(339, Door.Constructor(Vector3(4294.626f, 4612.79f, 60.69506f)), owning_building_guid = 7) LocalObject(348, Door.Constructor(Vector3(4339.785f, 4591.744f, 60.69506f)), owning_building_guid = 7) } @@ -287,7 +805,19 @@ object Map01 { // Solsar Building35() def Building35(): Unit = { // Name: bunkerg3 Type: bunker_gauntlet GUID: 8, MapID: 35 - LocalBuilding("bunkerg3", 8, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4460f, 3330f, 53.19434f), Vector3(0f, 0f, 62f), bunker_gauntlet))) + LocalBuilding( + "bunkerg3", + 8, + 35, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4460f, 3330f, 53.19434f), + Vector3(0f, 0f, 62f), + bunker_gauntlet + ) + ) + ) LocalObject(359, Door.Constructor(Vector3(4450f, 3307.119f, 54.71534f)), owning_building_guid = 8) LocalObject(362, Door.Constructor(Vector3(4473.379f, 3351.113f, 54.71534f)), owning_building_guid = 8) } @@ -295,7 +825,19 @@ object Map01 { // Solsar Building33() def Building33(): Unit = { // Name: bunkerg1 Type: bunker_gauntlet GUID: 9, MapID: 33 - LocalBuilding("bunkerg1", 9, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4678f, 6156f, 57.799f), Vector3(0f, 0f, 263f), bunker_gauntlet))) + LocalBuilding( + "bunkerg1", + 9, + 33, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4678f, 6156f, 57.799f), + Vector3(0f, 0f, 263f), + bunker_gauntlet + ) + ) + ) LocalObject(410, Door.Constructor(Vector3(4673.076f, 6131.495f, 59.32f)), owning_building_guid = 9) LocalObject(411, Door.Constructor(Vector3(4679.137f, 6180.945f, 59.32f)), owning_building_guid = 9) } @@ -303,50 +845,108 @@ object Map01 { // Solsar Building27() def Building27(): Unit = { // Name: bunker2 Type: bunker_lg GUID: 10, MapID: 27 - LocalBuilding("bunker2", 10, 27, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3730f, 2238f, 72.89651f), Vector3(0f, 0f, 220f), bunker_lg))) + LocalBuilding( + "bunker2", + 10, + 27, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3730f, 2238f, 72.89651f), Vector3(0f, 0f, 220f), bunker_lg) + ) + ) LocalObject(305, Door.Constructor(Vector3(3729.647f, 2234.366f, 74.41752f)), owning_building_guid = 10) } Building30() def Building30(): Unit = { // Name: bunker5 Type: bunker_lg GUID: 11, MapID: 30 - LocalBuilding("bunker5", 11, 30, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3846f, 5334f, 54.1717f), Vector3(0f, 0f, 45f), bunker_lg))) + LocalBuilding( + "bunker5", + 11, + 30, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3846f, 5334f, 54.1717f), Vector3(0f, 0f, 45f), bunker_lg) + ) + ) LocalObject(314, Door.Constructor(Vector3(3846.035f, 5337.651f, 55.6927f)), owning_building_guid = 11) } Building28() def Building28(): Unit = { // Name: bunker3 Type: bunker_sm GUID: 12, MapID: 28 - LocalBuilding("bunker3", 12, 28, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3068f, 2992f, 74.51704f), Vector3(0f, 0f, 96f), bunker_sm))) + LocalBuilding( + "bunker3", + 12, + 28, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3068f, 2992f, 74.51704f), Vector3(0f, 0f, 96f), bunker_sm) + ) + ) LocalObject(240, Door.Constructor(Vector3(3067.927f, 2993.224f, 76.03805f)), owning_building_guid = 12) } Building29() def Building29(): Unit = { // Name: bunker4 Type: bunker_sm GUID: 13, MapID: 29 - LocalBuilding("bunker4", 13, 29, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3376f, 4166f, 82.73873f), Vector3(0f, 0f, 130f), bunker_sm))) + LocalBuilding( + "bunker4", + 13, + 29, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3376f, 4166f, 82.73873f), Vector3(0f, 0f, 130f), bunker_sm) + ) + ) LocalObject(275, Door.Constructor(Vector3(3375.255f, 4166.974f, 84.25974f)), owning_building_guid = 13) } Building26() def Building26(): Unit = { // Name: bunker1 Type: bunker_sm GUID: 14, MapID: 26 - LocalBuilding("bunker1", 14, 26, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4494f, 2102f, 68.3874f), Vector3(0f, 0f, 82f), bunker_sm))) + LocalBuilding( + "bunker1", + 14, + 26, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4494f, 2102f, 68.3874f), Vector3(0f, 0f, 82f), bunker_sm) + ) + ) LocalObject(368, Door.Constructor(Vector3(4494.225f, 2103.205f, 69.9084f)), owning_building_guid = 14) } Building31() def Building31(): Unit = { // Name: bunker6 Type: bunker_sm GUID: 15, MapID: 31 - LocalBuilding("bunker6", 15, 31, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4656f, 6084f, 57.799f), Vector3(0f, 0f, 200f), bunker_sm))) + LocalBuilding( + "bunker6", + 15, + 31, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4656f, 6084f, 57.799f), Vector3(0f, 0f, 200f), bunker_sm) + ) + ) LocalObject(409, Door.Constructor(Vector3(4654.83f, 6083.633f, 59.32f)), owning_building_guid = 15) } Building8() def Building8(): Unit = { // Name: Hapi Type: comm_station GUID: 16, MapID: 8 - LocalBuilding("Hapi", 16, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4276f, 4512f, 59.18149f), Vector3(0f, 0f, 300f), comm_station))) - LocalObject(156, CaptureTerminal.Constructor(Vector3(4364.498f, 4512.185f, 41.88149f), capture_terminal), owning_building_guid = 16) + LocalBuilding( + "Hapi", + 16, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4276f, 4512f, 59.18149f), + Vector3(0f, 0f, 300f), + comm_station + ) + ) + ) + LocalObject( + 156, + CaptureTerminal.Constructor(Vector3(4364.498f, 4512.185f, 41.88149f), capture_terminal), + owning_building_guid = 16 + ) LocalObject(332, Door.Constructor(Vector3(4195.935f, 4515.072f, 68.89649f)), owning_building_guid = 16) LocalObject(333, Door.Constructor(Vector3(4205.031f, 4499.316f, 60.93249f)), owning_building_guid = 16) LocalObject(334, Door.Constructor(Vector3(4208.426f, 4542.042f, 60.93249f)), owning_building_guid = 16) @@ -388,18 +988,78 @@ object Map01 { // Solsar LocalObject(1995, Door.Constructor(Vector3(4306.229f, 4487.107f, 51.23549f)), owning_building_guid = 16) LocalObject(1996, Door.Constructor(Vector3(4312.545f, 4490.753f, 51.23549f)), owning_building_guid = 16) LocalObject(1997, Door.Constructor(Vector3(4318.858f, 4494.398f, 51.23549f)), owning_building_guid = 16) - LocalObject(689, IFFLock.Constructor(Vector3(4285.473f, 4493.852f, 60.83349f), Vector3(0, 0, 150)), owning_building_guid = 16, door_guid = 653) - LocalObject(785, IFFLock.Constructor(Vector3(4258.727f, 4522.758f, 65.84249f), Vector3(0, 0, 240)), owning_building_guid = 16, door_guid = 336) - LocalObject(786, IFFLock.Constructor(Vector3(4265.191f, 4511.744f, 73.26249f), Vector3(0, 0, 330)), owning_building_guid = 16, door_guid = 338) - LocalObject(787, IFFLock.Constructor(Vector3(4265.936f, 4531.642f, 65.84249f), Vector3(0, 0, 60)), owning_building_guid = 16, door_guid = 337) - LocalObject(788, IFFLock.Constructor(Vector3(4286.756f, 4539.489f, 43.21749f), Vector3(0, 0, 240)), owning_building_guid = 16, door_guid = 548) - LocalObject(789, IFFLock.Constructor(Vector3(4295.143f, 4514.753f, 65.84249f), Vector3(0, 0, 330)), owning_building_guid = 16, door_guid = 341) - LocalObject(792, IFFLock.Constructor(Vector3(4305.013f, 4476.128f, 50.71749f), Vector3(0, 0, 240)), owning_building_guid = 16, door_guid = 554) - LocalObject(795, IFFLock.Constructor(Vector3(4312.561f, 4469.531f, 43.21749f), Vector3(0, 0, 330)), owning_building_guid = 16, door_guid = 558) - LocalObject(796, IFFLock.Constructor(Vector3(4325.628f, 4491.661f, 50.71749f), Vector3(0, 0, 60)), owning_building_guid = 16, door_guid = 560) - LocalObject(797, IFFLock.Constructor(Vector3(4353.122f, 4511.277f, 43.21749f), Vector3(0, 0, 330)), owning_building_guid = 16, door_guid = 564) - LocalObject(798, IFFLock.Constructor(Vector3(4359.968f, 4522.63f, 60.83149f), Vector3(0, 0, 150)), owning_building_guid = 16, door_guid = 352) - LocalObject(799, IFFLock.Constructor(Vector3(4360.658f, 4504.513f, 43.21749f), Vector3(0, 0, 150)), owning_building_guid = 16, door_guid = 565) + LocalObject( + 689, + IFFLock.Constructor(Vector3(4285.473f, 4493.852f, 60.83349f), Vector3(0, 0, 150)), + owning_building_guid = 16, + door_guid = 653 + ) + LocalObject( + 785, + IFFLock.Constructor(Vector3(4258.727f, 4522.758f, 65.84249f), Vector3(0, 0, 240)), + owning_building_guid = 16, + door_guid = 336 + ) + LocalObject( + 786, + IFFLock.Constructor(Vector3(4265.191f, 4511.744f, 73.26249f), Vector3(0, 0, 330)), + owning_building_guid = 16, + door_guid = 338 + ) + LocalObject( + 787, + IFFLock.Constructor(Vector3(4265.936f, 4531.642f, 65.84249f), Vector3(0, 0, 60)), + owning_building_guid = 16, + door_guid = 337 + ) + LocalObject( + 788, + IFFLock.Constructor(Vector3(4286.756f, 4539.489f, 43.21749f), Vector3(0, 0, 240)), + owning_building_guid = 16, + door_guid = 548 + ) + LocalObject( + 789, + IFFLock.Constructor(Vector3(4295.143f, 4514.753f, 65.84249f), Vector3(0, 0, 330)), + owning_building_guid = 16, + door_guid = 341 + ) + LocalObject( + 792, + IFFLock.Constructor(Vector3(4305.013f, 4476.128f, 50.71749f), Vector3(0, 0, 240)), + owning_building_guid = 16, + door_guid = 554 + ) + LocalObject( + 795, + IFFLock.Constructor(Vector3(4312.561f, 4469.531f, 43.21749f), Vector3(0, 0, 330)), + owning_building_guid = 16, + door_guid = 558 + ) + LocalObject( + 796, + IFFLock.Constructor(Vector3(4325.628f, 4491.661f, 50.71749f), Vector3(0, 0, 60)), + owning_building_guid = 16, + door_guid = 560 + ) + LocalObject( + 797, + IFFLock.Constructor(Vector3(4353.122f, 4511.277f, 43.21749f), Vector3(0, 0, 330)), + owning_building_guid = 16, + door_guid = 564 + ) + LocalObject( + 798, + IFFLock.Constructor(Vector3(4359.968f, 4522.63f, 60.83149f), Vector3(0, 0, 150)), + owning_building_guid = 16, + door_guid = 352 + ) + LocalObject( + 799, + IFFLock.Constructor(Vector3(4360.658f, 4504.513f, 43.21749f), Vector3(0, 0, 150)), + owning_building_guid = 16, + door_guid = 565 + ) LocalObject(1031, Locker.Constructor(Vector3(4308.564f, 4475.88f, 49.64249f)), owning_building_guid = 16) LocalObject(1032, Locker.Constructor(Vector3(4309.146f, 4474.872f, 49.64249f)), owning_building_guid = 16) LocalObject(1033, Locker.Constructor(Vector3(4309.719f, 4473.878f, 49.64249f)), owning_building_guid = 16) @@ -412,60 +1072,233 @@ object Map01 { // Solsar LocalObject(1044, Locker.Constructor(Vector3(4336.151f, 4468.145f, 41.88149f)), owning_building_guid = 16) LocalObject(1045, Locker.Constructor(Vector3(4336.819f, 4466.988f, 41.88149f)), owning_building_guid = 16) LocalObject(1046, Locker.Constructor(Vector3(4337.488f, 4465.83f, 41.88149f)), owning_building_guid = 16) - LocalObject(1367, Terminal.Constructor(Vector3(4251.19f, 4508.786f, 65.74149f), order_terminal), owning_building_guid = 16) - LocalObject(1368, Terminal.Constructor(Vector3(4268.877f, 4505.196f, 73.13649f), order_terminal), owning_building_guid = 16) - LocalObject(1369, Terminal.Constructor(Vector3(4269.583f, 4508.208f, 73.13649f), order_terminal), owning_building_guid = 16) - LocalObject(1370, Terminal.Constructor(Vector3(4272.684f, 4507.393f, 73.13649f), order_terminal), owning_building_guid = 16) - LocalObject(1374, Terminal.Constructor(Vector3(4314.671f, 4475.836f, 50.97149f), order_terminal), owning_building_guid = 16) - LocalObject(1375, Terminal.Constructor(Vector3(4317.902f, 4477.702f, 50.97149f), order_terminal), owning_building_guid = 16) - LocalObject(1376, Terminal.Constructor(Vector3(4321.183f, 4479.596f, 50.97149f), order_terminal), owning_building_guid = 16) - LocalObject(1926, Terminal.Constructor(Vector3(4254.443f, 4501.275f, 65.99849f), spawn_terminal), owning_building_guid = 16) - LocalObject(1927, Terminal.Constructor(Vector3(4275.412f, 4530.201f, 43.43849f), spawn_terminal), owning_building_guid = 16) - LocalObject(1928, Terminal.Constructor(Vector3(4304.222f, 4485.604f, 51.51549f), spawn_terminal), owning_building_guid = 16) - LocalObject(1929, Terminal.Constructor(Vector3(4310.295f, 4532.483f, 53.43849f), spawn_terminal), owning_building_guid = 16) - LocalObject(1930, Terminal.Constructor(Vector3(4310.535f, 4489.253f, 51.51549f), spawn_terminal), owning_building_guid = 16) - LocalObject(1931, Terminal.Constructor(Vector3(4316.848f, 4492.895f, 51.51549f), spawn_terminal), owning_building_guid = 16) - LocalObject(2084, Terminal.Constructor(Vector3(4349.665f, 4493.957f, 62.06849f), vehicle_terminal_combined), owning_building_guid = 16) - LocalObject(1288, VehicleSpawnPad.Constructor(Vector3(4342.719f, 4505.68f, 57.91049f), mb_pad_creation, Vector3(0, 0, -30)), owning_building_guid = 16, terminal_guid = 2084) + LocalObject( + 1367, + Terminal.Constructor(Vector3(4251.19f, 4508.786f, 65.74149f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1368, + Terminal.Constructor(Vector3(4268.877f, 4505.196f, 73.13649f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1369, + Terminal.Constructor(Vector3(4269.583f, 4508.208f, 73.13649f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1370, + Terminal.Constructor(Vector3(4272.684f, 4507.393f, 73.13649f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1374, + Terminal.Constructor(Vector3(4314.671f, 4475.836f, 50.97149f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1375, + Terminal.Constructor(Vector3(4317.902f, 4477.702f, 50.97149f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1376, + Terminal.Constructor(Vector3(4321.183f, 4479.596f, 50.97149f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1926, + Terminal.Constructor(Vector3(4254.443f, 4501.275f, 65.99849f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1927, + Terminal.Constructor(Vector3(4275.412f, 4530.201f, 43.43849f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1928, + Terminal.Constructor(Vector3(4304.222f, 4485.604f, 51.51549f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1929, + Terminal.Constructor(Vector3(4310.295f, 4532.483f, 53.43849f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1930, + Terminal.Constructor(Vector3(4310.535f, 4489.253f, 51.51549f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1931, + Terminal.Constructor(Vector3(4316.848f, 4492.895f, 51.51549f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 2084, + Terminal.Constructor(Vector3(4349.665f, 4493.957f, 62.06849f), vehicle_terminal_combined), + owning_building_guid = 16 + ) + LocalObject( + 1288, + VehicleSpawnPad.Constructor(Vector3(4342.719f, 4505.68f, 57.91049f), mb_pad_creation, Vector3(0, 0, -30)), + owning_building_guid = 16, + terminal_guid = 2084 + ) LocalObject(1805, ResourceSilo.Constructor(Vector3(4188.28f, 4525.752f, 66.39849f)), owning_building_guid = 16) - LocalObject(1846, SpawnTube.Constructor(Vector3(4305.1f, 4486.963f, 49.38149f), Vector3(0, 0, 60)), owning_building_guid = 16) - LocalObject(1847, SpawnTube.Constructor(Vector3(4311.415f, 4490.608f, 49.38149f), Vector3(0, 0, 60)), owning_building_guid = 16) - LocalObject(1848, SpawnTube.Constructor(Vector3(4317.726f, 4494.252f, 49.38149f), Vector3(0, 0, 60)), owning_building_guid = 16) - LocalObject(1303, ProximityTerminal.Constructor(Vector3(4251.337f, 4496.763f, 59.38149f), medical_terminal), owning_building_guid = 16) - LocalObject(1304, ProximityTerminal.Constructor(Vector3(4333.874f, 4471f, 41.88149f), medical_terminal), owning_building_guid = 16) - LocalObject(1516, ProximityTerminal.Constructor(Vector3(4314.369f, 4555.914f, 67.62249f), pad_landing_frame), owning_building_guid = 16) - LocalObject(1517, Terminal.Constructor(Vector3(4314.369f, 4555.914f, 67.62249f), air_rearm_terminal), owning_building_guid = 16) - LocalObject(1761, ProximityTerminal.Constructor(Vector3(4265.53f, 4576.494f, 58.93149f), repair_silo), owning_building_guid = 16) - LocalObject(1762, Terminal.Constructor(Vector3(4265.53f, 4576.494f, 58.93149f), ground_rearm_terminal), owning_building_guid = 16) - LocalObject(1765, ProximityTerminal.Constructor(Vector3(4285.75f, 4446.452f, 58.93149f), repair_silo), owning_building_guid = 16) - LocalObject(1766, Terminal.Constructor(Vector3(4285.75f, 4446.452f, 58.93149f), ground_rearm_terminal), owning_building_guid = 16) - LocalObject(1243, FacilityTurret.Constructor(Vector3(4170.118f, 4534.522f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1846, + SpawnTube.Constructor(Vector3(4305.1f, 4486.963f, 49.38149f), Vector3(0, 0, 60)), + owning_building_guid = 16 + ) + LocalObject( + 1847, + SpawnTube.Constructor(Vector3(4311.415f, 4490.608f, 49.38149f), Vector3(0, 0, 60)), + owning_building_guid = 16 + ) + LocalObject( + 1848, + SpawnTube.Constructor(Vector3(4317.726f, 4494.252f, 49.38149f), Vector3(0, 0, 60)), + owning_building_guid = 16 + ) + LocalObject( + 1303, + ProximityTerminal.Constructor(Vector3(4251.337f, 4496.763f, 59.38149f), medical_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1304, + ProximityTerminal.Constructor(Vector3(4333.874f, 4471f, 41.88149f), medical_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1516, + ProximityTerminal.Constructor(Vector3(4314.369f, 4555.914f, 67.62249f), pad_landing_frame), + owning_building_guid = 16 + ) + LocalObject( + 1517, + Terminal.Constructor(Vector3(4314.369f, 4555.914f, 67.62249f), air_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1761, + ProximityTerminal.Constructor(Vector3(4265.53f, 4576.494f, 58.93149f), repair_silo), + owning_building_guid = 16 + ) + LocalObject( + 1762, + Terminal.Constructor(Vector3(4265.53f, 4576.494f, 58.93149f), ground_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1765, + ProximityTerminal.Constructor(Vector3(4285.75f, 4446.452f, 58.93149f), repair_silo), + owning_building_guid = 16 + ) + LocalObject( + 1766, + Terminal.Constructor(Vector3(4285.75f, 4446.452f, 58.93149f), ground_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1243, + FacilityTurret.Constructor(Vector3(4170.118f, 4534.522f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1243, 5012) - LocalObject(1244, FacilityTurret.Constructor(Vector3(4220.754f, 4444.464f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1244, + FacilityTurret.Constructor(Vector3(4220.754f, 4444.464f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1244, 5013) - LocalObject(1245, FacilityTurret.Constructor(Vector3(4272.686f, 4595.045f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1245, + FacilityTurret.Constructor(Vector3(4272.686f, 4595.045f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1245, 5014) - LocalObject(1246, FacilityTurret.Constructor(Vector3(4279.664f, 4428.656f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1246, + FacilityTurret.Constructor(Vector3(4279.664f, 4428.656f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1246, 5015) - LocalObject(1249, FacilityTurret.Constructor(Vector3(4331.572f, 4579.246f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1249, + FacilityTurret.Constructor(Vector3(4331.572f, 4579.246f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1249, 5016) - LocalObject(1253, FacilityTurret.Constructor(Vector3(4382.079f, 4489.135f, 67.8895f), manned_turret), owning_building_guid = 16) + LocalObject( + 1253, + FacilityTurret.Constructor(Vector3(4382.079f, 4489.135f, 67.8895f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1253, 5017) - LocalObject(1619, Painbox.Constructor(Vector3(4297.323f, 4547.246f, 46.78349f), painbox), owning_building_guid = 16) - LocalObject(1628, Painbox.Constructor(Vector3(4321.771f, 4485.062f, 53.82629f), painbox_continuous), owning_building_guid = 16) - LocalObject(1637, Painbox.Constructor(Vector3(4284.368f, 4539.652f, 44.64019f), painbox_door_radius), owning_building_guid = 16) - LocalObject(1654, Painbox.Constructor(Vector3(4303.219f, 4477.007f, 51.20749f), painbox_door_radius_continuous), owning_building_guid = 16) - LocalObject(1655, Painbox.Constructor(Vector3(4327.348f, 4489.903f, 50.98919f), painbox_door_radius_continuous), owning_building_guid = 16) - LocalObject(1656, Painbox.Constructor(Vector3(4329.026f, 4475.81f, 52.20749f), painbox_door_radius_continuous), owning_building_guid = 16) + LocalObject( + 1619, + Painbox.Constructor(Vector3(4297.323f, 4547.246f, 46.78349f), painbox), + owning_building_guid = 16 + ) + LocalObject( + 1628, + Painbox.Constructor(Vector3(4321.771f, 4485.062f, 53.82629f), painbox_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1637, + Painbox.Constructor(Vector3(4284.368f, 4539.652f, 44.64019f), painbox_door_radius), + owning_building_guid = 16 + ) + LocalObject( + 1654, + Painbox.Constructor(Vector3(4303.219f, 4477.007f, 51.20749f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1655, + Painbox.Constructor(Vector3(4327.348f, 4489.903f, 50.98919f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1656, + Painbox.Constructor(Vector3(4329.026f, 4475.81f, 52.20749f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) LocalObject(217, Generator.Constructor(Vector3(4300.243f, 4549.12f, 40.58749f)), owning_building_guid = 16) - LocalObject(208, Terminal.Constructor(Vector3(4293.172f, 4544.983f, 41.88149f), gen_control), owning_building_guid = 16) + LocalObject( + 208, + Terminal.Constructor(Vector3(4293.172f, 4544.983f, 41.88149f), gen_control), + owning_building_guid = 16 + ) } Building13() def Building13(): Unit = { // Name: Sobek Type: comm_station_dsp GUID: 19, MapID: 13 - LocalBuilding("Sobek", 19, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3044f, 3086f, 74.5262f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(152, CaptureTerminal.Constructor(Vector3(3120.089f, 3066.734f, 57.1262f), capture_terminal), owning_building_guid = 19) + LocalBuilding( + "Sobek", + 19, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3044f, 3086f, 74.5262f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 152, + CaptureTerminal.Constructor(Vector3(3120.089f, 3066.734f, 57.1262f), capture_terminal), + owning_building_guid = 19 + ) LocalObject(199, Door.Constructor(Vector3(3112.339f, 3156.464f, 77.9042f)), owning_building_guid = 19) LocalObject(230, Door.Constructor(Vector3(2984.196f, 3042.501f, 76.1772f)), owning_building_guid = 19) LocalObject(231, Door.Constructor(Vector3(2984.196f, 3060.693f, 84.1412f)), owning_building_guid = 19) @@ -511,20 +1344,90 @@ object Map01 { // Solsar LocalObject(1963, Door.Constructor(Vector3(3080.673f, 3099.733f, 66.4802f)), owning_building_guid = 19) LocalObject(1964, Door.Constructor(Vector3(3080.673f, 3107.026f, 66.4802f)), owning_building_guid = 19) LocalObject(1965, Door.Constructor(Vector3(3080.673f, 3114.315f, 66.4802f)), owning_building_guid = 19) - LocalObject(685, IFFLock.Constructor(Vector3(3064.454f, 3085.09f, 76.0942f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 649) - LocalObject(704, IFFLock.Constructor(Vector3(3021.959f, 3087.104f, 81.0942f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 235) - LocalObject(705, IFFLock.Constructor(Vector3(3026.04f, 3076.42f, 81.0942f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 234) - LocalObject(706, IFFLock.Constructor(Vector3(3038.817f, 3076.514f, 88.5942f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 237) - LocalObject(707, IFFLock.Constructor(Vector3(3051.193f, 3103.962f, 81.0942f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 239) - LocalObject(708, IFFLock.Constructor(Vector3(3084.94f, 3147.572f, 58.4622f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 462) - LocalObject(709, IFFLock.Constructor(Vector3(3086.428f, 3118.94f, 65.9622f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 465) - LocalObject(710, IFFLock.Constructor(Vector3(3089.572f, 3093.19f, 65.9622f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 464) - LocalObject(711, IFFLock.Constructor(Vector3(3095.907f, 3191.163f, 81.0732f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 242) - LocalObject(712, IFFLock.Constructor(Vector3(3099.06f, 3096.428f, 58.4622f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 466) - LocalObject(713, IFFLock.Constructor(Vector3(3099.124f, 3158.312f, 76.1382f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 243) - LocalObject(714, IFFLock.Constructor(Vector3(3115.06f, 3056.428f, 58.4622f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 469) - LocalObject(716, IFFLock.Constructor(Vector3(3124.813f, 3059.572f, 58.4622f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 470) - LocalObject(723, IFFLock.Constructor(Vector3(3157.953f, 3166.808f, 76.0372f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 255) + LocalObject( + 685, + IFFLock.Constructor(Vector3(3064.454f, 3085.09f, 76.0942f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 649 + ) + LocalObject( + 704, + IFFLock.Constructor(Vector3(3021.959f, 3087.104f, 81.0942f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 235 + ) + LocalObject( + 705, + IFFLock.Constructor(Vector3(3026.04f, 3076.42f, 81.0942f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 234 + ) + LocalObject( + 706, + IFFLock.Constructor(Vector3(3038.817f, 3076.514f, 88.5942f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 237 + ) + LocalObject( + 707, + IFFLock.Constructor(Vector3(3051.193f, 3103.962f, 81.0942f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 239 + ) + LocalObject( + 708, + IFFLock.Constructor(Vector3(3084.94f, 3147.572f, 58.4622f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 462 + ) + LocalObject( + 709, + IFFLock.Constructor(Vector3(3086.428f, 3118.94f, 65.9622f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 465 + ) + LocalObject( + 710, + IFFLock.Constructor(Vector3(3089.572f, 3093.19f, 65.9622f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 464 + ) + LocalObject( + 711, + IFFLock.Constructor(Vector3(3095.907f, 3191.163f, 81.0732f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 242 + ) + LocalObject( + 712, + IFFLock.Constructor(Vector3(3099.06f, 3096.428f, 58.4622f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 466 + ) + LocalObject( + 713, + IFFLock.Constructor(Vector3(3099.124f, 3158.312f, 76.1382f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 243 + ) + LocalObject( + 714, + IFFLock.Constructor(Vector3(3115.06f, 3056.428f, 58.4622f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 469 + ) + LocalObject( + 716, + IFFLock.Constructor(Vector3(3124.813f, 3059.572f, 58.4622f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 470 + ) + LocalObject( + 723, + IFFLock.Constructor(Vector3(3157.953f, 3166.808f, 76.0372f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 255 + ) LocalObject(889, Locker.Constructor(Vector3(3091.563f, 3096.141f, 64.8872f)), owning_building_guid = 19) LocalObject(890, Locker.Constructor(Vector3(3092.727f, 3096.141f, 64.8872f)), owning_building_guid = 19) LocalObject(891, Locker.Constructor(Vector3(3093.874f, 3096.141f, 64.8872f)), owning_building_guid = 19) @@ -537,76 +1440,306 @@ object Map01 { // Solsar LocalObject(898, Locker.Constructor(Vector3(3112.055f, 3116.165f, 57.1262f)), owning_building_guid = 19) LocalObject(899, Locker.Constructor(Vector3(3113.391f, 3116.165f, 57.1262f)), owning_building_guid = 19) LocalObject(900, Locker.Constructor(Vector3(3114.728f, 3116.165f, 57.1262f)), owning_building_guid = 19) - LocalObject(201, Terminal.Constructor(Vector3(3103.879f, 3188.918f, 80.2302f), dropship_vehicle_terminal), owning_building_guid = 19) - LocalObject(200, VehicleSpawnPad.Constructor(Vector3(3112.328f, 3210.856f, 74.5542f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 19, terminal_guid = 201) - LocalObject(1318, Terminal.Constructor(Vector3(3034.378f, 3062.897f, 80.9862f), order_terminal), owning_building_guid = 19) - LocalObject(1319, Terminal.Constructor(Vector3(3044.075f, 3078.547f, 88.3812f), order_terminal), owning_building_guid = 19) - LocalObject(1320, Terminal.Constructor(Vector3(3046.331f, 3076.43f, 88.3812f), order_terminal), owning_building_guid = 19) - LocalObject(1321, Terminal.Constructor(Vector3(3046.332f, 3080.825f, 88.3812f), order_terminal), owning_building_guid = 19) - LocalObject(1322, Terminal.Constructor(Vector3(3048.592f, 3078.59f, 88.3812f), order_terminal), owning_building_guid = 19) - LocalObject(1323, Terminal.Constructor(Vector3(3094.654f, 3101.408f, 66.2162f), order_terminal), owning_building_guid = 19) - LocalObject(1324, Terminal.Constructor(Vector3(3094.654f, 3105.139f, 66.2162f), order_terminal), owning_building_guid = 19) - LocalObject(1325, Terminal.Constructor(Vector3(3094.654f, 3108.928f, 66.2162f), order_terminal), owning_building_guid = 19) - LocalObject(1897, Terminal.Constructor(Vector3(3042.509f, 3061.959f, 81.2432f), spawn_terminal), owning_building_guid = 19) - LocalObject(1898, Terminal.Constructor(Vector3(3080.971f, 3097.243f, 66.7602f), spawn_terminal), owning_building_guid = 19) - LocalObject(1899, Terminal.Constructor(Vector3(3080.967f, 3104.535f, 66.7602f), spawn_terminal), owning_building_guid = 19) - LocalObject(1900, Terminal.Constructor(Vector3(3080.97f, 3111.823f, 66.7602f), spawn_terminal), owning_building_guid = 19) - LocalObject(1901, Terminal.Constructor(Vector3(3099.103f, 3180.906f, 81.1742f), spawn_terminal), owning_building_guid = 19) - LocalObject(1902, Terminal.Constructor(Vector3(3108.058f, 3085.409f, 58.6542f), spawn_terminal), owning_building_guid = 19) - LocalObject(1903, Terminal.Constructor(Vector3(3115.409f, 3141.942f, 58.6542f), spawn_terminal), owning_building_guid = 19) - LocalObject(1904, Terminal.Constructor(Vector3(3124.058f, 3093.409f, 66.1832f), spawn_terminal), owning_building_guid = 19) - LocalObject(1905, Terminal.Constructor(Vector3(3124.058f, 3133.409f, 66.1832f), spawn_terminal), owning_building_guid = 19) - LocalObject(2080, Terminal.Constructor(Vector3(3061.698f, 3194.044f, 77.3132f), ground_vehicle_terminal), owning_building_guid = 19) - LocalObject(1284, VehicleSpawnPad.Constructor(Vector3(3061.786f, 3180.411f, 73.1552f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 19, terminal_guid = 2080) + LocalObject( + 201, + Terminal.Constructor(Vector3(3103.879f, 3188.918f, 80.2302f), dropship_vehicle_terminal), + owning_building_guid = 19 + ) + LocalObject( + 200, + VehicleSpawnPad.Constructor(Vector3(3112.328f, 3210.856f, 74.5542f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 19, + terminal_guid = 201 + ) + LocalObject( + 1318, + Terminal.Constructor(Vector3(3034.378f, 3062.897f, 80.9862f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1319, + Terminal.Constructor(Vector3(3044.075f, 3078.547f, 88.3812f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1320, + Terminal.Constructor(Vector3(3046.331f, 3076.43f, 88.3812f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1321, + Terminal.Constructor(Vector3(3046.332f, 3080.825f, 88.3812f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1322, + Terminal.Constructor(Vector3(3048.592f, 3078.59f, 88.3812f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1323, + Terminal.Constructor(Vector3(3094.654f, 3101.408f, 66.2162f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1324, + Terminal.Constructor(Vector3(3094.654f, 3105.139f, 66.2162f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1325, + Terminal.Constructor(Vector3(3094.654f, 3108.928f, 66.2162f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1897, + Terminal.Constructor(Vector3(3042.509f, 3061.959f, 81.2432f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1898, + Terminal.Constructor(Vector3(3080.971f, 3097.243f, 66.7602f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1899, + Terminal.Constructor(Vector3(3080.967f, 3104.535f, 66.7602f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1900, + Terminal.Constructor(Vector3(3080.97f, 3111.823f, 66.7602f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1901, + Terminal.Constructor(Vector3(3099.103f, 3180.906f, 81.1742f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1902, + Terminal.Constructor(Vector3(3108.058f, 3085.409f, 58.6542f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1903, + Terminal.Constructor(Vector3(3115.409f, 3141.942f, 58.6542f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1904, + Terminal.Constructor(Vector3(3124.058f, 3093.409f, 66.1832f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1905, + Terminal.Constructor(Vector3(3124.058f, 3133.409f, 66.1832f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 2080, + Terminal.Constructor(Vector3(3061.698f, 3194.044f, 77.3132f), ground_vehicle_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1284, + VehicleSpawnPad.Constructor(Vector3(3061.786f, 3180.411f, 73.1552f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 19, + terminal_guid = 2080 + ) LocalObject(1801, ResourceSilo.Constructor(Vector3(3142.212f, 3251.642f, 81.6432f)), owning_building_guid = 19) - LocalObject(1814, SpawnTube.Constructor(Vector3(3080.233f, 3098.683f, 64.6262f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1815, SpawnTube.Constructor(Vector3(3080.233f, 3105.974f, 64.6262f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1816, SpawnTube.Constructor(Vector3(3080.233f, 3113.262f, 64.6262f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1297, ProximityTerminal.Constructor(Vector3(3044.863f, 3057.013f, 74.6262f), medical_terminal), owning_building_guid = 19) - LocalObject(1298, ProximityTerminal.Constructor(Vector3(3108.444f, 3115.62f, 57.1262f), medical_terminal), owning_building_guid = 19) - LocalObject(1468, ProximityTerminal.Constructor(Vector3(3025.153f, 3179.398f, 82.9362f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1469, Terminal.Constructor(Vector3(3025.153f, 3179.398f, 82.9362f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1471, ProximityTerminal.Constructor(Vector3(3041.514f, 3133.467f, 80.2202f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1472, Terminal.Constructor(Vector3(3041.514f, 3133.467f, 80.2202f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1474, ProximityTerminal.Constructor(Vector3(3093.804f, 3097.901f, 87.4022f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1475, Terminal.Constructor(Vector3(3093.804f, 3097.901f, 87.4022f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1477, ProximityTerminal.Constructor(Vector3(3129.071f, 3114.159f, 82.9492f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1478, Terminal.Constructor(Vector3(3129.071f, 3114.159f, 82.9492f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1729, ProximityTerminal.Constructor(Vector3(2982.642f, 3124.24f, 74.2762f), repair_silo), owning_building_guid = 19) - LocalObject(1730, Terminal.Constructor(Vector3(2982.642f, 3124.24f, 74.2762f), ground_rearm_terminal), owning_building_guid = 19) - LocalObject(1733, ProximityTerminal.Constructor(Vector3(3152.57f, 3127.152f, 74.2762f), repair_silo), owning_building_guid = 19) - LocalObject(1734, Terminal.Constructor(Vector3(3152.57f, 3127.152f, 74.2762f), ground_rearm_terminal), owning_building_guid = 19) - LocalObject(1205, FacilityTurret.Constructor(Vector3(2970.401f, 3159.113f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1814, + SpawnTube.Constructor(Vector3(3080.233f, 3098.683f, 64.6262f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1815, + SpawnTube.Constructor(Vector3(3080.233f, 3105.974f, 64.6262f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1816, + SpawnTube.Constructor(Vector3(3080.233f, 3113.262f, 64.6262f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1297, + ProximityTerminal.Constructor(Vector3(3044.863f, 3057.013f, 74.6262f), medical_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1298, + ProximityTerminal.Constructor(Vector3(3108.444f, 3115.62f, 57.1262f), medical_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1468, + ProximityTerminal.Constructor(Vector3(3025.153f, 3179.398f, 82.9362f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1469, + Terminal.Constructor(Vector3(3025.153f, 3179.398f, 82.9362f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1471, + ProximityTerminal.Constructor(Vector3(3041.514f, 3133.467f, 80.2202f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1472, + Terminal.Constructor(Vector3(3041.514f, 3133.467f, 80.2202f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1474, + ProximityTerminal.Constructor(Vector3(3093.804f, 3097.901f, 87.4022f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1475, + Terminal.Constructor(Vector3(3093.804f, 3097.901f, 87.4022f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1477, + ProximityTerminal.Constructor(Vector3(3129.071f, 3114.159f, 82.9492f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1478, + Terminal.Constructor(Vector3(3129.071f, 3114.159f, 82.9492f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1729, + ProximityTerminal.Constructor(Vector3(2982.642f, 3124.24f, 74.2762f), repair_silo), + owning_building_guid = 19 + ) + LocalObject( + 1730, + Terminal.Constructor(Vector3(2982.642f, 3124.24f, 74.2762f), ground_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1733, + ProximityTerminal.Constructor(Vector3(3152.57f, 3127.152f, 74.2762f), repair_silo), + owning_building_guid = 19 + ) + LocalObject( + 1734, + Terminal.Constructor(Vector3(3152.57f, 3127.152f, 74.2762f), ground_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1205, + FacilityTurret.Constructor(Vector3(2970.401f, 3159.113f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1205, 5018) - LocalObject(1206, FacilityTurret.Constructor(Vector3(2971.554f, 3005.565f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1206, + FacilityTurret.Constructor(Vector3(2971.554f, 3005.565f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1206, 5019) - LocalObject(1207, FacilityTurret.Constructor(Vector3(3015.445f, 3205.667f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1207, + FacilityTurret.Constructor(Vector3(3015.445f, 3205.667f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1207, 5020) - LocalObject(1208, FacilityTurret.Constructor(Vector3(3074.428f, 3004.396f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1208, + FacilityTurret.Constructor(Vector3(3074.428f, 3004.396f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1208, 5021) - LocalObject(1209, FacilityTurret.Constructor(Vector3(3075.449f, 3264.154f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1209, + FacilityTurret.Constructor(Vector3(3075.449f, 3264.154f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1209, 5022) - LocalObject(1211, FacilityTurret.Constructor(Vector3(3116.537f, 3045.011f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1211, + FacilityTurret.Constructor(Vector3(3116.537f, 3045.011f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1211, 5023) - LocalObject(1215, FacilityTurret.Constructor(Vector3(3163.619f, 3262.985f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1215, + FacilityTurret.Constructor(Vector3(3163.619f, 3262.985f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1215, 5024) - LocalObject(1216, FacilityTurret.Constructor(Vector3(3164.773f, 3094.733f, 83.1342f), manned_turret), owning_building_guid = 19) + LocalObject( + 1216, + FacilityTurret.Constructor(Vector3(3164.773f, 3094.733f, 83.1342f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1216, 5025) - LocalObject(1615, Painbox.Constructor(Vector3(3072.428f, 3146.057f, 61.0205f), painbox), owning_building_guid = 19) - LocalObject(1624, Painbox.Constructor(Vector3(3089.857f, 3106.408f, 68.6537f), painbox_continuous), owning_building_guid = 19) - LocalObject(1633, Painbox.Constructor(Vector3(3086.203f, 3144.915f, 60.2584f), painbox_door_radius), owning_building_guid = 19) - LocalObject(1642, Painbox.Constructor(Vector3(3087.087f, 3091.386f, 67.0554f), painbox_door_radius_continuous), owning_building_guid = 19) - LocalObject(1643, Painbox.Constructor(Vector3(3087.895f, 3120.081f, 67.5262f), painbox_door_radius_continuous), owning_building_guid = 19) - LocalObject(1644, Painbox.Constructor(Vector3(3102.317f, 3113.888f, 67.9565f), painbox_door_radius_continuous), owning_building_guid = 19) + LocalObject( + 1615, + Painbox.Constructor(Vector3(3072.428f, 3146.057f, 61.0205f), painbox), + owning_building_guid = 19 + ) + LocalObject( + 1624, + Painbox.Constructor(Vector3(3089.857f, 3106.408f, 68.6537f), painbox_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1633, + Painbox.Constructor(Vector3(3086.203f, 3144.915f, 60.2584f), painbox_door_radius), + owning_building_guid = 19 + ) + LocalObject( + 1642, + Painbox.Constructor(Vector3(3087.087f, 3091.386f, 67.0554f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1643, + Painbox.Constructor(Vector3(3087.895f, 3120.081f, 67.5262f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1644, + Painbox.Constructor(Vector3(3102.317f, 3113.888f, 67.9565f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) LocalObject(213, Generator.Constructor(Vector3(3068.445f, 3145.975f, 55.8322f)), owning_building_guid = 19) - LocalObject(204, Terminal.Constructor(Vector3(3076.637f, 3146.022f, 57.1262f), gen_control), owning_building_guid = 19) + LocalObject( + 204, + Terminal.Constructor(Vector3(3076.637f, 3146.022f, 57.1262f), gen_control), + owning_building_guid = 19 + ) } Building12() def Building12(): Unit = { // Name: Horus Type: cryo_facility GUID: 22, MapID: 12 - LocalBuilding("Horus", 22, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3690f, 2158f, 72.89651f), Vector3(0f, 0f, 265f), cryo_facility))) - LocalObject(154, CaptureTerminal.Constructor(Vector3(3751.489f, 2180.817f, 62.89651f), capture_terminal), owning_building_guid = 22) + LocalBuilding( + "Horus", + 22, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3690f, 2158f, 72.89651f), + Vector3(0f, 0f, 265f), + cryo_facility + ) + ) + ) + LocalObject( + 154, + CaptureTerminal.Constructor(Vector3(3751.489f, 2180.817f, 62.89651f), capture_terminal), + owning_building_guid = 22 + ) LocalObject(290, Door.Constructor(Vector3(3595.561f, 2134.14f, 74.41752f)), owning_building_guid = 22) LocalObject(291, Door.Constructor(Vector3(3605.34f, 2141.817f, 74.44752f)), owning_building_guid = 22) LocalObject(292, Door.Constructor(Vector3(3606.926f, 2159.941f, 82.41151f)), owning_building_guid = 22) @@ -647,15 +1780,60 @@ object Map01 { // Solsar LocalObject(1979, Door.Constructor(Vector3(3695.304f, 2152.845f, 64.75052f)), owning_building_guid = 22) LocalObject(1980, Door.Constructor(Vector3(3702.569f, 2152.209f, 64.75052f)), owning_building_guid = 22) LocalObject(1982, Door.Constructor(Vector3(3709.83f, 2151.574f, 64.75052f)), owning_building_guid = 22) - LocalObject(687, IFFLock.Constructor(Vector3(3717.649f, 2154.808f, 74.37852f), Vector3(0, 0, 95)), owning_building_guid = 22, door_guid = 651) - LocalObject(751, IFFLock.Constructor(Vector3(3597.524f, 2133.151f, 74.34852f), Vector3(0, 0, 185)), owning_building_guid = 22, door_guid = 290) - LocalObject(752, IFFLock.Constructor(Vector3(3688.01f, 2144.55f, 64.23251f), Vector3(0, 0, 275)), owning_building_guid = 22, door_guid = 504) - LocalObject(753, IFFLock.Constructor(Vector3(3690.398f, 2134.687f, 56.73251f), Vector3(0, 0, 5)), owning_building_guid = 22, door_guid = 506) - LocalObject(754, IFFLock.Constructor(Vector3(3693.773f, 2155.708f, 84.34851f), Vector3(0, 0, 95)), owning_building_guid = 22, door_guid = 295) - LocalObject(758, IFFLock.Constructor(Vector3(3713.283f, 2171.207f, 84.34851f), Vector3(0, 0, 185)), owning_building_guid = 22, door_guid = 300) - LocalObject(759, IFFLock.Constructor(Vector3(3713.807f, 2145.449f, 64.23251f), Vector3(0, 0, 95)), owning_building_guid = 22, door_guid = 512) - LocalObject(763, IFFLock.Constructor(Vector3(3759.046f, 2185.025f, 64.23251f), Vector3(0, 0, 5)), owning_building_guid = 22, door_guid = 518) - LocalObject(765, IFFLock.Constructor(Vector3(3761.328f, 2175.035f, 64.23251f), Vector3(0, 0, 185)), owning_building_guid = 22, door_guid = 517) + LocalObject( + 687, + IFFLock.Constructor(Vector3(3717.649f, 2154.808f, 74.37852f), Vector3(0, 0, 95)), + owning_building_guid = 22, + door_guid = 651 + ) + LocalObject( + 751, + IFFLock.Constructor(Vector3(3597.524f, 2133.151f, 74.34852f), Vector3(0, 0, 185)), + owning_building_guid = 22, + door_guid = 290 + ) + LocalObject( + 752, + IFFLock.Constructor(Vector3(3688.01f, 2144.55f, 64.23251f), Vector3(0, 0, 275)), + owning_building_guid = 22, + door_guid = 504 + ) + LocalObject( + 753, + IFFLock.Constructor(Vector3(3690.398f, 2134.687f, 56.73251f), Vector3(0, 0, 5)), + owning_building_guid = 22, + door_guid = 506 + ) + LocalObject( + 754, + IFFLock.Constructor(Vector3(3693.773f, 2155.708f, 84.34851f), Vector3(0, 0, 95)), + owning_building_guid = 22, + door_guid = 295 + ) + LocalObject( + 758, + IFFLock.Constructor(Vector3(3713.283f, 2171.207f, 84.34851f), Vector3(0, 0, 185)), + owning_building_guid = 22, + door_guid = 300 + ) + LocalObject( + 759, + IFFLock.Constructor(Vector3(3713.807f, 2145.449f, 64.23251f), Vector3(0, 0, 95)), + owning_building_guid = 22, + door_guid = 512 + ) + LocalObject( + 763, + IFFLock.Constructor(Vector3(3759.046f, 2185.025f, 64.23251f), Vector3(0, 0, 5)), + owning_building_guid = 22, + door_guid = 518 + ) + LocalObject( + 765, + IFFLock.Constructor(Vector3(3761.328f, 2175.035f, 64.23251f), Vector3(0, 0, 185)), + owning_building_guid = 22, + door_guid = 517 + ) LocalObject(953, Locker.Constructor(Vector3(3689.031f, 2119.841f, 62.80452f)), owning_building_guid = 22) LocalObject(954, Locker.Constructor(Vector3(3689.123f, 2120.892f, 62.80452f)), owning_building_guid = 22) LocalObject(955, Locker.Constructor(Vector3(3689.215f, 2121.948f, 62.80452f)), owning_building_guid = 22) @@ -685,76 +1863,309 @@ object Map01 { // Solsar LocalObject(1173, Locker.Constructor(Vector3(3682.89f, 2140.292f, 72.66752f)), owning_building_guid = 22) LocalObject(1174, Locker.Constructor(Vector3(3685.402f, 2140.073f, 72.89651f)), owning_building_guid = 22) LocalObject(1175, Locker.Constructor(Vector3(3686.432f, 2139.982f, 72.89651f)), owning_building_guid = 22) - LocalObject(161, Terminal.Constructor(Vector3(3735.192f, 2137.559f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(162, Terminal.Constructor(Vector3(3736.299f, 2150.211f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(163, Terminal.Constructor(Vector3(3736.509f, 2135.991f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(164, Terminal.Constructor(Vector3(3737.868f, 2151.527f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(165, Terminal.Constructor(Vector3(3743.806f, 2135.352f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(166, Terminal.Constructor(Vector3(3745.165f, 2150.889f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(167, Terminal.Constructor(Vector3(3745.375f, 2136.669f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(168, Terminal.Constructor(Vector3(3746.481f, 2149.32f, 62.88651f), cert_terminal), owning_building_guid = 22) - LocalObject(1347, Terminal.Constructor(Vector3(3695.754f, 2138.771f, 64.48651f), order_terminal), owning_building_guid = 22) - LocalObject(1348, Terminal.Constructor(Vector3(3699.471f, 2138.446f, 64.48651f), order_terminal), owning_building_guid = 22) - LocalObject(1349, Terminal.Constructor(Vector3(3700.364f, 2167.16f, 74.19151f), order_terminal), owning_building_guid = 22) - LocalObject(1350, Terminal.Constructor(Vector3(3703.245f, 2138.116f, 64.48651f), order_terminal), owning_building_guid = 22) - LocalObject(1912, Terminal.Constructor(Vector3(3635.028f, 2178.961f, 67.00951f), spawn_terminal), owning_building_guid = 22) - LocalObject(1913, Terminal.Constructor(Vector3(3676.245f, 2157.291f, 74.47552f), spawn_terminal), owning_building_guid = 22) - LocalObject(1914, Terminal.Constructor(Vector3(3692.797f, 2152.765f, 65.03052f), spawn_terminal), owning_building_guid = 22) - LocalObject(1915, Terminal.Constructor(Vector3(3692.896f, 2197.899f, 64.50951f), spawn_terminal), owning_building_guid = 22) - LocalObject(1916, Terminal.Constructor(Vector3(3700.062f, 2152.134f, 65.03052f), spawn_terminal), owning_building_guid = 22) - LocalObject(1917, Terminal.Constructor(Vector3(3707.322f, 2151.496f, 65.03052f), spawn_terminal), owning_building_guid = 22) - LocalObject(1918, Terminal.Constructor(Vector3(3753.808f, 2153.013f, 64.50951f), spawn_terminal), owning_building_guid = 22) - LocalObject(2082, Terminal.Constructor(Vector3(3623.775f, 2126.022f, 75.20152f), vehicle_terminal_combined), owning_building_guid = 22) - LocalObject(1286, VehicleSpawnPad.Constructor(Vector3(3624.874f, 2139.617f, 71.04352f), mb_pad_creation, Vector3(0, 0, 5)), owning_building_guid = 22, terminal_guid = 2082) + LocalObject( + 161, + Terminal.Constructor(Vector3(3735.192f, 2137.559f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 162, + Terminal.Constructor(Vector3(3736.299f, 2150.211f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 163, + Terminal.Constructor(Vector3(3736.509f, 2135.991f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 164, + Terminal.Constructor(Vector3(3737.868f, 2151.527f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 165, + Terminal.Constructor(Vector3(3743.806f, 2135.352f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 166, + Terminal.Constructor(Vector3(3745.165f, 2150.889f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 167, + Terminal.Constructor(Vector3(3745.375f, 2136.669f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 168, + Terminal.Constructor(Vector3(3746.481f, 2149.32f, 62.88651f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1347, + Terminal.Constructor(Vector3(3695.754f, 2138.771f, 64.48651f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1348, + Terminal.Constructor(Vector3(3699.471f, 2138.446f, 64.48651f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1349, + Terminal.Constructor(Vector3(3700.364f, 2167.16f, 74.19151f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1350, + Terminal.Constructor(Vector3(3703.245f, 2138.116f, 64.48651f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1912, + Terminal.Constructor(Vector3(3635.028f, 2178.961f, 67.00951f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1913, + Terminal.Constructor(Vector3(3676.245f, 2157.291f, 74.47552f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1914, + Terminal.Constructor(Vector3(3692.797f, 2152.765f, 65.03052f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1915, + Terminal.Constructor(Vector3(3692.896f, 2197.899f, 64.50951f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1916, + Terminal.Constructor(Vector3(3700.062f, 2152.134f, 65.03052f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1917, + Terminal.Constructor(Vector3(3707.322f, 2151.496f, 65.03052f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1918, + Terminal.Constructor(Vector3(3753.808f, 2153.013f, 64.50951f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2082, + Terminal.Constructor(Vector3(3623.775f, 2126.022f, 75.20152f), vehicle_terminal_combined), + owning_building_guid = 22 + ) + LocalObject( + 1286, + VehicleSpawnPad.Constructor(Vector3(3624.874f, 2139.617f, 71.04352f), mb_pad_creation, Vector3(0, 0, 5)), + owning_building_guid = 22, + terminal_guid = 2082 + ) LocalObject(1803, ResourceSilo.Constructor(Vector3(3745.911f, 2213.606f, 79.91351f)), owning_building_guid = 22) - LocalObject(1830, SpawnTube.Constructor(Vector3(3694.296f, 2153.375f, 62.89651f), Vector3(0, 0, 95)), owning_building_guid = 22) - LocalObject(1831, SpawnTube.Constructor(Vector3(3701.56f, 2152.74f, 62.89651f), Vector3(0, 0, 95)), owning_building_guid = 22) - LocalObject(1833, SpawnTube.Constructor(Vector3(3708.82f, 2152.104f, 62.89651f), Vector3(0, 0, 95)), owning_building_guid = 22) - LocalObject(114, ProximityTerminal.Constructor(Vector3(3682.746f, 2156.644f, 72.70651f), adv_med_terminal), owning_building_guid = 22) - LocalObject(1301, ProximityTerminal.Constructor(Vector3(3691.528f, 2130.119f, 62.89651f), medical_terminal), owning_building_guid = 22) - LocalObject(1492, ProximityTerminal.Constructor(Vector3(3621.198f, 2165.828f, 81.24851f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1493, Terminal.Constructor(Vector3(3621.198f, 2165.828f, 81.24851f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1495, ProximityTerminal.Constructor(Vector3(3629.876f, 2181.446f, 83.18951f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1496, Terminal.Constructor(Vector3(3629.876f, 2181.446f, 83.18951f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1498, ProximityTerminal.Constructor(Vector3(3734.966f, 2152.738f, 83.22852f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1499, Terminal.Constructor(Vector3(3734.966f, 2152.738f, 83.22852f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1501, ProximityTerminal.Constructor(Vector3(3744.745f, 2168.166f, 81.23852f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1502, Terminal.Constructor(Vector3(3744.745f, 2168.166f, 81.23852f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1745, ProximityTerminal.Constructor(Vector3(3608.569f, 2200.735f, 72.64651f), repair_silo), owning_building_guid = 22) - LocalObject(1746, Terminal.Constructor(Vector3(3608.569f, 2200.735f, 72.64651f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(1749, ProximityTerminal.Constructor(Vector3(3701.222f, 2104.288f, 72.64651f), repair_silo), owning_building_guid = 22) - LocalObject(1750, Terminal.Constructor(Vector3(3701.222f, 2104.288f, 72.64651f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(1226, FacilityTurret.Constructor(Vector3(3588.193f, 2103.038f, 81.29852f), manned_turret), owning_building_guid = 22) + LocalObject( + 1830, + SpawnTube.Constructor(Vector3(3694.296f, 2153.375f, 62.89651f), Vector3(0, 0, 95)), + owning_building_guid = 22 + ) + LocalObject( + 1831, + SpawnTube.Constructor(Vector3(3701.56f, 2152.74f, 62.89651f), Vector3(0, 0, 95)), + owning_building_guid = 22 + ) + LocalObject( + 1833, + SpawnTube.Constructor(Vector3(3708.82f, 2152.104f, 62.89651f), Vector3(0, 0, 95)), + owning_building_guid = 22 + ) + LocalObject( + 114, + ProximityTerminal.Constructor(Vector3(3682.746f, 2156.644f, 72.70651f), adv_med_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1301, + ProximityTerminal.Constructor(Vector3(3691.528f, 2130.119f, 62.89651f), medical_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1492, + ProximityTerminal.Constructor(Vector3(3621.198f, 2165.828f, 81.24851f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1493, + Terminal.Constructor(Vector3(3621.198f, 2165.828f, 81.24851f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1495, + ProximityTerminal.Constructor(Vector3(3629.876f, 2181.446f, 83.18951f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1496, + Terminal.Constructor(Vector3(3629.876f, 2181.446f, 83.18951f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1498, + ProximityTerminal.Constructor(Vector3(3734.966f, 2152.738f, 83.22852f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1499, + Terminal.Constructor(Vector3(3734.966f, 2152.738f, 83.22852f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1501, + ProximityTerminal.Constructor(Vector3(3744.745f, 2168.166f, 81.23852f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1502, + Terminal.Constructor(Vector3(3744.745f, 2168.166f, 81.23852f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1745, + ProximityTerminal.Constructor(Vector3(3608.569f, 2200.735f, 72.64651f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 1746, + Terminal.Constructor(Vector3(3608.569f, 2200.735f, 72.64651f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1749, + ProximityTerminal.Constructor(Vector3(3701.222f, 2104.288f, 72.64651f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 1750, + Terminal.Constructor(Vector3(3701.222f, 2104.288f, 72.64651f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1226, + FacilityTurret.Constructor(Vector3(3588.193f, 2103.038f, 81.29852f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1226, 5026) - LocalObject(1228, FacilityTurret.Constructor(Vector3(3599.987f, 2237.749f, 81.29852f), manned_turret), owning_building_guid = 22) + LocalObject( + 1228, + FacilityTurret.Constructor(Vector3(3599.987f, 2237.749f, 81.29852f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1228, 5027) - LocalObject(1229, FacilityTurret.Constructor(Vector3(3722.701f, 2090.078f, 81.29852f), manned_turret), owning_building_guid = 22) + LocalObject( + 1229, + FacilityTurret.Constructor(Vector3(3722.701f, 2090.078f, 81.29852f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1229, 5028) - LocalObject(1232, FacilityTurret.Constructor(Vector3(3769.406f, 2129.305f, 81.29852f), manned_turret), owning_building_guid = 22) + LocalObject( + 1232, + FacilityTurret.Constructor(Vector3(3769.406f, 2129.305f, 81.29852f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1232, 5029) - LocalObject(1233, FacilityTurret.Constructor(Vector3(3776.407f, 2222.322f, 81.29852f), manned_turret), owning_building_guid = 22) + LocalObject( + 1233, + FacilityTurret.Constructor(Vector3(3776.407f, 2222.322f, 81.29852f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1233, 5030) - LocalObject(670, ImplantTerminalMech.Constructor(Vector3(3733.322f, 2144.105f, 62.37352f)), owning_building_guid = 22) - LocalObject(664, Terminal.Constructor(Vector3(3733.34f, 2144.104f, 62.37352f), implant_terminal_interface), owning_building_guid = 22) + LocalObject( + 670, + ImplantTerminalMech.Constructor(Vector3(3733.322f, 2144.105f, 62.37352f)), + owning_building_guid = 22 + ) + LocalObject( + 664, + Terminal.Constructor(Vector3(3733.34f, 2144.104f, 62.37352f), implant_terminal_interface), + owning_building_guid = 22 + ) TerminalToInterface(670, 664) - LocalObject(671, ImplantTerminalMech.Constructor(Vector3(3748.62f, 2142.779f, 62.37352f)), owning_building_guid = 22) - LocalObject(665, Terminal.Constructor(Vector3(3748.603f, 2142.781f, 62.37352f), implant_terminal_interface), owning_building_guid = 22) + LocalObject( + 671, + ImplantTerminalMech.Constructor(Vector3(3748.62f, 2142.779f, 62.37352f)), + owning_building_guid = 22 + ) + LocalObject( + 665, + Terminal.Constructor(Vector3(3748.603f, 2142.781f, 62.37352f), implant_terminal_interface), + owning_building_guid = 22 + ) TerminalToInterface(671, 665) - LocalObject(1617, Painbox.Constructor(Vector3(3669.921f, 2154.142f, 86.92532f), painbox), owning_building_guid = 22) - LocalObject(1626, Painbox.Constructor(Vector3(3696.397f, 2142.631f, 66.96642f), painbox_continuous), owning_building_guid = 22) - LocalObject(1635, Painbox.Constructor(Vector3(3684.453f, 2154.287f, 87.13042f), painbox_door_radius), owning_building_guid = 22) - LocalObject(1648, Painbox.Constructor(Vector3(3686.883f, 2147.693f, 65.25241f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(1649, Painbox.Constructor(Vector3(3706.548f, 2128.564f, 66.43742f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(1650, Painbox.Constructor(Vector3(3714.642f, 2143.281f, 64.61072f), painbox_door_radius_continuous), owning_building_guid = 22) + LocalObject( + 1617, + Painbox.Constructor(Vector3(3669.921f, 2154.142f, 86.92532f), painbox), + owning_building_guid = 22 + ) + LocalObject( + 1626, + Painbox.Constructor(Vector3(3696.397f, 2142.631f, 66.96642f), painbox_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1635, + Painbox.Constructor(Vector3(3684.453f, 2154.287f, 87.13042f), painbox_door_radius), + owning_building_guid = 22 + ) + LocalObject( + 1648, + Painbox.Constructor(Vector3(3686.883f, 2147.693f, 65.25241f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1649, + Painbox.Constructor(Vector3(3706.548f, 2128.564f, 66.43742f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1650, + Painbox.Constructor(Vector3(3714.642f, 2143.281f, 64.61072f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) LocalObject(215, Generator.Constructor(Vector3(3666.184f, 2156.043f, 81.60252f)), owning_building_guid = 22) - LocalObject(206, Terminal.Constructor(Vector3(3674.349f, 2155.376f, 82.89651f), gen_control), owning_building_guid = 22) + LocalObject( + 206, + Terminal.Constructor(Vector3(3674.349f, 2155.376f, 82.89651f), gen_control), + owning_building_guid = 22 + ) } Building7() def Building7(): Unit = { // Name: Aton Type: cryo_facility GUID: 25, MapID: 7 - LocalBuilding("Aton", 25, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3830f, 5418f, 54.14594f), Vector3(0f, 0f, 90f), cryo_facility))) - LocalObject(155, CaptureTerminal.Constructor(Vector3(3770.734f, 5389.911f, 44.14594f), capture_terminal), owning_building_guid = 25) + LocalBuilding( + "Aton", + 25, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3830f, 5418f, 54.14594f), + Vector3(0f, 0f, 90f), + cryo_facility + ) + ) + ) + LocalObject( + 155, + CaptureTerminal.Constructor(Vector3(3770.734f, 5389.911f, 44.14594f), capture_terminal), + owning_building_guid = 25 + ) LocalObject(308, Door.Constructor(Vector3(3762.197f, 5375.674f, 55.69694f)), owning_building_guid = 25) LocalObject(309, Door.Constructor(Vector3(3762.197f, 5393.867f, 63.66094f)), owning_building_guid = 25) LocalObject(310, Door.Constructor(Vector3(3807.307f, 5359.023f, 63.66094f)), owning_building_guid = 25) @@ -795,15 +2206,60 @@ object Map01 { // Solsar LocalObject(1984, Door.Constructor(Vector3(3809.685f, 5422.673f, 45.99994f)), owning_building_guid = 25) LocalObject(1985, Door.Constructor(Vector3(3816.974f, 5422.673f, 45.99994f)), owning_building_guid = 25) LocalObject(1986, Door.Constructor(Vector3(3824.267f, 5422.673f, 45.99994f)), owning_building_guid = 25) - LocalObject(688, IFFLock.Constructor(Vector3(3802.178f, 5418.77f, 55.62794f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 652) - LocalObject(764, IFFLock.Constructor(Vector3(3760.428f, 5394.813f, 45.48194f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 520) - LocalObject(766, IFFLock.Constructor(Vector3(3763.572f, 5385.06f, 45.48194f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 519) - LocalObject(767, IFFLock.Constructor(Vector3(3805.19f, 5428.428f, 45.48194f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 525) - LocalObject(768, IFFLock.Constructor(Vector3(3807.957f, 5402.814f, 65.59794f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 311) - LocalObject(769, IFFLock.Constructor(Vector3(3826.042f, 5419.954f, 65.59794f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 313) - LocalObject(770, IFFLock.Constructor(Vector3(3827.572f, 5441.19f, 37.98194f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 530) - LocalObject(771, IFFLock.Constructor(Vector3(3830.81f, 5431.572f, 45.48194f), Vector3(0, 0, 90)), owning_building_guid = 25, door_guid = 533) - LocalObject(776, IFFLock.Constructor(Vector3(3919.958f, 5450.814f, 55.59794f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 323) + LocalObject( + 688, + IFFLock.Constructor(Vector3(3802.178f, 5418.77f, 55.62794f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 652 + ) + LocalObject( + 764, + IFFLock.Constructor(Vector3(3760.428f, 5394.813f, 45.48194f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 520 + ) + LocalObject( + 766, + IFFLock.Constructor(Vector3(3763.572f, 5385.06f, 45.48194f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 519 + ) + LocalObject( + 767, + IFFLock.Constructor(Vector3(3805.19f, 5428.428f, 45.48194f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 525 + ) + LocalObject( + 768, + IFFLock.Constructor(Vector3(3807.957f, 5402.814f, 65.59794f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 311 + ) + LocalObject( + 769, + IFFLock.Constructor(Vector3(3826.042f, 5419.954f, 65.59794f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 313 + ) + LocalObject( + 770, + IFFLock.Constructor(Vector3(3827.572f, 5441.19f, 37.98194f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 530 + ) + LocalObject( + 771, + IFFLock.Constructor(Vector3(3830.81f, 5431.572f, 45.48194f), Vector3(0, 0, 90)), + owning_building_guid = 25, + door_guid = 533 + ) + LocalObject( + 776, + IFFLock.Constructor(Vector3(3919.958f, 5450.814f, 55.59794f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 323 + ) LocalObject(982, Locker.Constructor(Vector3(3775.473f, 5437.997f, 44.14094f)), owning_building_guid = 25) LocalObject(983, Locker.Constructor(Vector3(3776.725f, 5437.997f, 44.14094f)), owning_building_guid = 25) LocalObject(984, Locker.Constructor(Vector3(3777.987f, 5437.997f, 44.14094f)), owning_building_guid = 25) @@ -833,76 +2289,309 @@ object Map01 { // Solsar LocalObject(1181, Locker.Constructor(Vector3(3838.662f, 5436.26f, 53.91694f)), owning_building_guid = 25) LocalObject(1182, Locker.Constructor(Vector3(3841.179f, 5436.26f, 54.14594f)), owning_building_guid = 25) LocalObject(1183, Locker.Constructor(Vector3(3842.213f, 5436.26f, 54.14594f)), owning_building_guid = 25) - LocalObject(169, Terminal.Constructor(Vector3(3772.977f, 5421.724f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(170, Terminal.Constructor(Vector3(3772.977f, 5434.424f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(171, Terminal.Constructor(Vector3(3774.425f, 5420.276f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(172, Terminal.Constructor(Vector3(3774.425f, 5435.872f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(173, Terminal.Constructor(Vector3(3781.75f, 5420.276f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(174, Terminal.Constructor(Vector3(3781.75f, 5435.872f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(175, Terminal.Constructor(Vector3(3783.198f, 5421.724f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(176, Terminal.Constructor(Vector3(3783.198f, 5434.424f, 44.13594f), cert_terminal), owning_building_guid = 25) - LocalObject(1354, Terminal.Constructor(Vector3(3815.072f, 5436.654f, 45.73594f), order_terminal), owning_building_guid = 25) - LocalObject(1355, Terminal.Constructor(Vector3(3818.861f, 5436.654f, 45.73594f), order_terminal), owning_building_guid = 25) - LocalObject(1356, Terminal.Constructor(Vector3(3820.474f, 5407.972f, 55.44094f), order_terminal), owning_building_guid = 25) - LocalObject(1357, Terminal.Constructor(Vector3(3822.592f, 5436.654f, 45.73594f), order_terminal), owning_building_guid = 25) - LocalObject(1919, Terminal.Constructor(Vector3(3766f, 5417.407f, 45.75894f), spawn_terminal), owning_building_guid = 25) - LocalObject(1920, Terminal.Constructor(Vector3(3812.177f, 5422.97f, 46.27994f), spawn_terminal), owning_building_guid = 25) - LocalObject(1921, Terminal.Constructor(Vector3(3819.465f, 5422.967f, 46.27994f), spawn_terminal), owning_building_guid = 25) - LocalObject(1922, Terminal.Constructor(Vector3(3826.757f, 5422.971f, 46.27994f), spawn_terminal), owning_building_guid = 25) - LocalObject(1923, Terminal.Constructor(Vector3(3830.593f, 5378f, 45.75894f), spawn_terminal), owning_building_guid = 25) - LocalObject(1924, Terminal.Constructor(Vector3(3843.641f, 5419.905f, 55.72494f), spawn_terminal), owning_building_guid = 25) - LocalObject(1925, Terminal.Constructor(Vector3(3886.59f, 5401.91f, 48.25894f), spawn_terminal), owning_building_guid = 25) - LocalObject(2083, Terminal.Constructor(Vector3(3893.186f, 5455.628f, 56.45094f), vehicle_terminal_combined), owning_building_guid = 25) - LocalObject(1287, VehicleSpawnPad.Constructor(Vector3(3893.276f, 5441.989f, 52.29294f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 25, terminal_guid = 2083) + LocalObject( + 169, + Terminal.Constructor(Vector3(3772.977f, 5421.724f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 170, + Terminal.Constructor(Vector3(3772.977f, 5434.424f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 171, + Terminal.Constructor(Vector3(3774.425f, 5420.276f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 172, + Terminal.Constructor(Vector3(3774.425f, 5435.872f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(3781.75f, 5420.276f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 174, + Terminal.Constructor(Vector3(3781.75f, 5435.872f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(3783.198f, 5421.724f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 176, + Terminal.Constructor(Vector3(3783.198f, 5434.424f, 44.13594f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1354, + Terminal.Constructor(Vector3(3815.072f, 5436.654f, 45.73594f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1355, + Terminal.Constructor(Vector3(3818.861f, 5436.654f, 45.73594f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1356, + Terminal.Constructor(Vector3(3820.474f, 5407.972f, 55.44094f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1357, + Terminal.Constructor(Vector3(3822.592f, 5436.654f, 45.73594f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1919, + Terminal.Constructor(Vector3(3766f, 5417.407f, 45.75894f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1920, + Terminal.Constructor(Vector3(3812.177f, 5422.97f, 46.27994f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1921, + Terminal.Constructor(Vector3(3819.465f, 5422.967f, 46.27994f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1922, + Terminal.Constructor(Vector3(3826.757f, 5422.971f, 46.27994f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1923, + Terminal.Constructor(Vector3(3830.593f, 5378f, 45.75894f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1924, + Terminal.Constructor(Vector3(3843.641f, 5419.905f, 55.72494f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1925, + Terminal.Constructor(Vector3(3886.59f, 5401.91f, 48.25894f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2083, + Terminal.Constructor(Vector3(3893.186f, 5455.628f, 56.45094f), vehicle_terminal_combined), + owning_building_guid = 25 + ) + LocalObject( + 1287, + VehicleSpawnPad.Constructor(Vector3(3893.276f, 5441.989f, 52.29294f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 25, + terminal_guid = 2083 + ) LocalObject(1804, ResourceSilo.Constructor(Vector3(3779.148f, 5357.733f, 61.16294f)), owning_building_guid = 25) - LocalObject(1835, SpawnTube.Constructor(Vector3(3810.738f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), owning_building_guid = 25) - LocalObject(1836, SpawnTube.Constructor(Vector3(3818.026f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), owning_building_guid = 25) - LocalObject(1837, SpawnTube.Constructor(Vector3(3825.317f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), owning_building_guid = 25) - LocalObject(115, ProximityTerminal.Constructor(Vector3(3837.108f, 5419.983f, 53.95594f), adv_med_terminal), owning_building_guid = 25) - LocalObject(1302, ProximityTerminal.Constructor(Vector3(3826.048f, 5445.642f, 44.14594f), medical_terminal), owning_building_guid = 25) - LocalObject(1504, ProximityTerminal.Constructor(Vector3(3776.349f, 5403.101f, 62.48794f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1505, Terminal.Constructor(Vector3(3776.349f, 5403.101f, 62.48794f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1507, ProximityTerminal.Constructor(Vector3(3784.747f, 5419.323f, 64.47794f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1508, Terminal.Constructor(Vector3(3784.747f, 5419.323f, 64.47794f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1510, ProximityTerminal.Constructor(Vector3(3891.939f, 5399.883f, 64.43894f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1511, Terminal.Constructor(Vector3(3891.939f, 5399.883f, 64.43894f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1513, ProximityTerminal.Constructor(Vector3(3899.223f, 5416.198f, 62.49794f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1514, Terminal.Constructor(Vector3(3899.223f, 5416.198f, 62.49794f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1753, ProximityTerminal.Constructor(Vector3(3814.139f, 5470.53f, 53.89594f), repair_silo), owning_building_guid = 25) - LocalObject(1754, Terminal.Constructor(Vector3(3814.139f, 5470.53f, 53.89594f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(1757, ProximityTerminal.Constructor(Vector3(3914.846f, 5382.524f, 53.89594f), repair_silo), owning_building_guid = 25) - LocalObject(1758, Terminal.Constructor(Vector3(3914.846f, 5382.524f, 53.89594f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(1230, FacilityTurret.Constructor(Vector3(3748.395f, 5439.665f, 62.54794f), manned_turret), owning_building_guid = 25) + LocalObject( + 1835, + SpawnTube.Constructor(Vector3(3810.738f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), + owning_building_guid = 25 + ) + LocalObject( + 1836, + SpawnTube.Constructor(Vector3(3818.026f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), + owning_building_guid = 25 + ) + LocalObject( + 1837, + SpawnTube.Constructor(Vector3(3825.317f, 5422.233f, 44.14594f), Vector3(0, 0, 270)), + owning_building_guid = 25 + ) + LocalObject( + 115, + ProximityTerminal.Constructor(Vector3(3837.108f, 5419.983f, 53.95594f), adv_med_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1302, + ProximityTerminal.Constructor(Vector3(3826.048f, 5445.642f, 44.14594f), medical_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1504, + ProximityTerminal.Constructor(Vector3(3776.349f, 5403.101f, 62.48794f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1505, + Terminal.Constructor(Vector3(3776.349f, 5403.101f, 62.48794f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1507, + ProximityTerminal.Constructor(Vector3(3784.747f, 5419.323f, 64.47794f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1508, + Terminal.Constructor(Vector3(3784.747f, 5419.323f, 64.47794f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1510, + ProximityTerminal.Constructor(Vector3(3891.939f, 5399.883f, 64.43894f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1511, + Terminal.Constructor(Vector3(3891.939f, 5399.883f, 64.43894f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1513, + ProximityTerminal.Constructor(Vector3(3899.223f, 5416.198f, 62.49794f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1514, + Terminal.Constructor(Vector3(3899.223f, 5416.198f, 62.49794f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1753, + ProximityTerminal.Constructor(Vector3(3814.139f, 5470.53f, 53.89594f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 1754, + Terminal.Constructor(Vector3(3814.139f, 5470.53f, 53.89594f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1757, + ProximityTerminal.Constructor(Vector3(3914.846f, 5382.524f, 53.89594f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 1758, + Terminal.Constructor(Vector3(3914.846f, 5382.524f, 53.89594f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1230, + FacilityTurret.Constructor(Vector3(3748.395f, 5439.665f, 62.54794f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1230, 5031) - LocalObject(1231, FacilityTurret.Constructor(Vector3(3749.528f, 5346.392f, 62.54794f), manned_turret), owning_building_guid = 25) + LocalObject( + 1231, + FacilityTurret.Constructor(Vector3(3749.528f, 5346.392f, 62.54794f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1231, 5032) - LocalObject(1234, FacilityTurret.Constructor(Vector3(3791.504f, 5482.813f, 62.54794f), manned_turret), owning_building_guid = 25) + LocalObject( + 1234, + FacilityTurret.Constructor(Vector3(3791.504f, 5482.813f, 62.54794f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1234, 5033) - LocalObject(1237, FacilityTurret.Constructor(Vector3(3926.621f, 5346.4f, 62.54794f), manned_turret), owning_building_guid = 25) + LocalObject( + 1237, + FacilityTurret.Constructor(Vector3(3926.621f, 5346.4f, 62.54794f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1237, 5034) - LocalObject(1238, FacilityTurret.Constructor(Vector3(3926.629f, 5481.626f, 62.54794f), manned_turret), owning_building_guid = 25) + LocalObject( + 1238, + FacilityTurret.Constructor(Vector3(3926.629f, 5481.626f, 62.54794f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1238, 5035) - LocalObject(672, ImplantTerminalMech.Constructor(Vector3(3770.276f, 5428.054f, 43.62294f)), owning_building_guid = 25) - LocalObject(666, Terminal.Constructor(Vector3(3770.294f, 5428.054f, 43.62294f), implant_terminal_interface), owning_building_guid = 25) + LocalObject( + 672, + ImplantTerminalMech.Constructor(Vector3(3770.276f, 5428.054f, 43.62294f)), + owning_building_guid = 25 + ) + LocalObject( + 666, + Terminal.Constructor(Vector3(3770.294f, 5428.054f, 43.62294f), implant_terminal_interface), + owning_building_guid = 25 + ) TerminalToInterface(672, 666) - LocalObject(673, ImplantTerminalMech.Constructor(Vector3(3785.632f, 5428.066f, 43.62294f)), owning_building_guid = 25) - LocalObject(667, Terminal.Constructor(Vector3(3785.614f, 5428.066f, 43.62294f), implant_terminal_interface), owning_building_guid = 25) + LocalObject( + 673, + ImplantTerminalMech.Constructor(Vector3(3785.632f, 5428.066f, 43.62294f)), + owning_building_guid = 25 + ) + LocalObject( + 667, + Terminal.Constructor(Vector3(3785.614f, 5428.066f, 43.62294f), implant_terminal_interface), + owning_building_guid = 25 + ) TerminalToInterface(673, 667) - LocalObject(1618, Painbox.Constructor(Vector3(3849.666f, 5423.593f, 68.17474f), painbox), owning_building_guid = 25) - LocalObject(1627, Painbox.Constructor(Vector3(3822.288f, 5432.753f, 48.21584f), painbox_continuous), owning_building_guid = 25) - LocalObject(1636, Painbox.Constructor(Vector3(3835.202f, 5422.182f, 68.37984f), painbox_door_radius), owning_building_guid = 25) - LocalObject(1651, Painbox.Constructor(Vector3(3804.169f, 5430.516f, 45.86014f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(1652, Painbox.Constructor(Vector3(3810.95f, 5445.882f, 47.68684f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(1653, Painbox.Constructor(Vector3(3832.207f, 5428.54f, 46.50184f), painbox_door_radius_continuous), owning_building_guid = 25) + LocalObject( + 1618, + Painbox.Constructor(Vector3(3849.666f, 5423.593f, 68.17474f), painbox), + owning_building_guid = 25 + ) + LocalObject( + 1627, + Painbox.Constructor(Vector3(3822.288f, 5432.753f, 48.21584f), painbox_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1636, + Painbox.Constructor(Vector3(3835.202f, 5422.182f, 68.37984f), painbox_door_radius), + owning_building_guid = 25 + ) + LocalObject( + 1651, + Painbox.Constructor(Vector3(3804.169f, 5430.516f, 45.86014f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1652, + Painbox.Constructor(Vector3(3810.95f, 5445.882f, 47.68684f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1653, + Painbox.Constructor(Vector3(3832.207f, 5428.54f, 46.50184f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) LocalObject(216, Generator.Constructor(Vector3(3853.555f, 5422.025f, 62.85194f)), owning_building_guid = 25) - LocalObject(207, Terminal.Constructor(Vector3(3845.363f, 5421.978f, 64.14594f), gen_control), owning_building_guid = 25) + LocalObject( + 207, + Terminal.Constructor(Vector3(3845.363f, 5421.978f, 64.14594f), gen_control), + owning_building_guid = 25 + ) } Building9() def Building9(): Unit = { // Name: Thoth Type: cryo_facility GUID: 28, MapID: 9 - LocalBuilding("Thoth", 28, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4556f, 3338f, 53.19376f), Vector3(0f, 0f, 335f), cryo_facility))) - LocalObject(159, CaptureTerminal.Constructor(Vector3(4555.59f, 3403.584f, 43.19376f), capture_terminal), owning_building_guid = 28) + LocalBuilding( + "Thoth", + 28, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4556f, 3338f, 53.19376f), + Vector3(0f, 0f, 335f), + cryo_facility + ) + ) + ) + LocalObject( + 159, + CaptureTerminal.Constructor(Vector3(4555.59f, 3403.584f, 43.19376f), capture_terminal), + owning_building_guid = 28 + ) LocalObject(377, Door.Constructor(Vector3(4504.451f, 3367.003f, 54.74476f)), owning_building_guid = 28) LocalObject(387, Door.Constructor(Vector3(4512.139f, 3383.492f, 62.70876f)), owning_building_guid = 28) LocalObject(393, Door.Constructor(Vector3(4525.763f, 3260.6f, 62.70876f)), owning_building_guid = 28) @@ -943,15 +2632,60 @@ object Map01 { // Solsar LocalObject(2010, Door.Constructor(Vector3(4562.658f, 3341.221f, 45.04776f)), owning_building_guid = 28) LocalObject(2011, Door.Constructor(Vector3(4565.74f, 3347.831f, 45.04776f)), owning_building_guid = 28) LocalObject(2012, Door.Constructor(Vector3(4568.821f, 3354.437f, 45.04776f)), owning_building_guid = 28) - LocalObject(692, IFFLock.Constructor(Vector3(4568.456f, 3362.89f, 54.67576f), Vector3(0, 0, 25)), owning_building_guid = 28, door_guid = 656) - LocalObject(834, IFFLock.Constructor(Vector3(4547.722f, 3242.603f, 54.64576f), Vector3(0, 0, 115)), owning_building_guid = 28, door_guid = 397) - LocalObject(835, IFFLock.Constructor(Vector3(4551.553f, 3364.396f, 64.64577f), Vector3(0, 0, 115)), owning_building_guid = 28, door_guid = 399) - LocalObject(836, IFFLock.Constructor(Vector3(4554.22f, 3412.125f, 44.52976f), Vector3(0, 0, 295)), owning_building_guid = 28, door_guid = 617) - LocalObject(837, IFFLock.Constructor(Vector3(4559.444f, 3340.761f, 64.64577f), Vector3(0, 0, 25)), owning_building_guid = 28, door_guid = 400) - LocalObject(838, IFFLock.Constructor(Vector3(4564.388f, 3410.853f, 44.52976f), Vector3(0, 0, 115)), owning_building_guid = 28, door_guid = 620) - LocalObject(839, IFFLock.Constructor(Vector3(4567.958f, 3331.53f, 44.52976f), Vector3(0, 0, 205)), owning_building_guid = 28, door_guid = 621) - LocalObject(840, IFFLock.Constructor(Vector3(4575.936f, 3356.078f, 44.52976f), Vector3(0, 0, 25)), owning_building_guid = 28, door_guid = 623) - LocalObject(841, IFFLock.Constructor(Vector3(4578.043f, 3330.4f, 37.02976f), Vector3(0, 0, 295)), owning_building_guid = 28, door_guid = 625) + LocalObject( + 692, + IFFLock.Constructor(Vector3(4568.456f, 3362.89f, 54.67576f), Vector3(0, 0, 25)), + owning_building_guid = 28, + door_guid = 656 + ) + LocalObject( + 834, + IFFLock.Constructor(Vector3(4547.722f, 3242.603f, 54.64576f), Vector3(0, 0, 115)), + owning_building_guid = 28, + door_guid = 397 + ) + LocalObject( + 835, + IFFLock.Constructor(Vector3(4551.553f, 3364.396f, 64.64577f), Vector3(0, 0, 115)), + owning_building_guid = 28, + door_guid = 399 + ) + LocalObject( + 836, + IFFLock.Constructor(Vector3(4554.22f, 3412.125f, 44.52976f), Vector3(0, 0, 295)), + owning_building_guid = 28, + door_guid = 617 + ) + LocalObject( + 837, + IFFLock.Constructor(Vector3(4559.444f, 3340.761f, 64.64577f), Vector3(0, 0, 25)), + owning_building_guid = 28, + door_guid = 400 + ) + LocalObject( + 838, + IFFLock.Constructor(Vector3(4564.388f, 3410.853f, 44.52976f), Vector3(0, 0, 115)), + owning_building_guid = 28, + door_guid = 620 + ) + LocalObject( + 839, + IFFLock.Constructor(Vector3(4567.958f, 3331.53f, 44.52976f), Vector3(0, 0, 205)), + owning_building_guid = 28, + door_guid = 621 + ) + LocalObject( + 840, + IFFLock.Constructor(Vector3(4575.936f, 3356.078f, 44.52976f), Vector3(0, 0, 25)), + owning_building_guid = 28, + door_guid = 623 + ) + LocalObject( + 841, + IFFLock.Constructor(Vector3(4578.043f, 3330.4f, 37.02976f), Vector3(0, 0, 295)), + owning_building_guid = 28, + door_guid = 625 + ) LocalObject(1095, Locker.Constructor(Vector3(4571.01f, 3333.363f, 43.45477f)), owning_building_guid = 28) LocalObject(1096, Locker.Constructor(Vector3(4572.064f, 3332.871f, 43.45477f)), owning_building_guid = 28) LocalObject(1097, Locker.Constructor(Vector3(4573.104f, 3332.386f, 43.45477f)), owning_building_guid = 28) @@ -981,88 +2715,326 @@ object Map01 { // Solsar LocalObject(1189, Locker.Constructor(Vector3(4570.208f, 3325.262f, 52.96476f)), owning_building_guid = 28) LocalObject(1190, Locker.Constructor(Vector3(4571.274f, 3327.548f, 53.19376f)), owning_building_guid = 28) LocalObject(1191, Locker.Constructor(Vector3(4571.711f, 3328.485f, 53.19376f)), owning_building_guid = 28) - LocalObject(177, Terminal.Constructor(Vector3(4578.454f, 3380.768f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(178, Terminal.Constructor(Vector3(4579.154f, 3378.843f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(179, Terminal.Constructor(Vector3(4581.55f, 3387.406f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(180, Terminal.Constructor(Vector3(4583.474f, 3388.106f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(181, Terminal.Constructor(Vector3(4590.665f, 3373.476f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(182, Terminal.Constructor(Vector3(4592.589f, 3374.176f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(183, Terminal.Constructor(Vector3(4594.984f, 3382.739f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(184, Terminal.Constructor(Vector3(4595.685f, 3380.815f, 43.18376f), cert_terminal), owning_building_guid = 28) - LocalObject(1394, Terminal.Constructor(Vector3(4550.938f, 3350.872f, 54.48876f), order_terminal), owning_building_guid = 28) - LocalObject(1395, Terminal.Constructor(Vector3(4576.037f, 3336.83f, 44.78376f), order_terminal), owning_building_guid = 28) - LocalObject(1396, Terminal.Constructor(Vector3(4577.614f, 3340.212f, 44.78376f), order_terminal), owning_building_guid = 28) - LocalObject(1397, Terminal.Constructor(Vector3(4579.215f, 3343.646f, 44.78376f), order_terminal), owning_building_guid = 28) - LocalObject(1940, Terminal.Constructor(Vector3(4517.501f, 3293.512f, 47.30676f), spawn_terminal), owning_building_guid = 28) - LocalObject(1942, Terminal.Constructor(Vector3(4519.497f, 3354.367f, 44.80676f), spawn_terminal), owning_building_guid = 28) - LocalObject(1947, Terminal.Constructor(Vector3(4551.961f, 3324.832f, 54.77276f), spawn_terminal), owning_building_guid = 28) - LocalObject(1948, Terminal.Constructor(Vector3(4561.876f, 3338.838f, 45.32776f), spawn_terminal), owning_building_guid = 28) - LocalObject(1949, Terminal.Constructor(Vector3(4564.954f, 3345.449f, 45.32776f), spawn_terminal), owning_building_guid = 28) - LocalObject(1951, Terminal.Constructor(Vector3(4568.037f, 3352.053f, 45.32776f), spawn_terminal), owning_building_guid = 28) - LocalObject(1952, Terminal.Constructor(Vector3(4582.51f, 3396.254f, 44.80676f), spawn_terminal), owning_building_guid = 28) - LocalObject(2087, Terminal.Constructor(Vector3(4563.399f, 3264.832f, 55.49876f), vehicle_terminal_combined), owning_building_guid = 28) - LocalObject(1293, VehicleSpawnPad.Constructor(Vector3(4551f, 3270.514f, 51.34076f), mb_pad_creation, Vector3(0, 0, -65)), owning_building_guid = 28, terminal_guid = 2087) + LocalObject( + 177, + Terminal.Constructor(Vector3(4578.454f, 3380.768f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 178, + Terminal.Constructor(Vector3(4579.154f, 3378.843f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(4581.55f, 3387.406f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 180, + Terminal.Constructor(Vector3(4583.474f, 3388.106f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 181, + Terminal.Constructor(Vector3(4590.665f, 3373.476f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 182, + Terminal.Constructor(Vector3(4592.589f, 3374.176f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 183, + Terminal.Constructor(Vector3(4594.984f, 3382.739f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 184, + Terminal.Constructor(Vector3(4595.685f, 3380.815f, 43.18376f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1394, + Terminal.Constructor(Vector3(4550.938f, 3350.872f, 54.48876f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1395, + Terminal.Constructor(Vector3(4576.037f, 3336.83f, 44.78376f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1396, + Terminal.Constructor(Vector3(4577.614f, 3340.212f, 44.78376f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1397, + Terminal.Constructor(Vector3(4579.215f, 3343.646f, 44.78376f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1940, + Terminal.Constructor(Vector3(4517.501f, 3293.512f, 47.30676f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1942, + Terminal.Constructor(Vector3(4519.497f, 3354.367f, 44.80676f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1947, + Terminal.Constructor(Vector3(4551.961f, 3324.832f, 54.77276f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1948, + Terminal.Constructor(Vector3(4561.876f, 3338.838f, 45.32776f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(4564.954f, 3345.449f, 45.32776f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1951, + Terminal.Constructor(Vector3(4568.037f, 3352.053f, 45.32776f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(4582.51f, 3396.254f, 44.80676f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2087, + Terminal.Constructor(Vector3(4563.399f, 3264.832f, 55.49876f), vehicle_terminal_combined), + owning_building_guid = 28 + ) + LocalObject( + 1293, + VehicleSpawnPad.Constructor(Vector3(4551f, 3270.514f, 51.34076f), mb_pad_creation, Vector3(0, 0, -65)), + owning_building_guid = 28, + terminal_guid = 2087 + ) LocalObject(1807, ResourceSilo.Constructor(Vector3(4522.871f, 3409.558f, 60.21076f)), owning_building_guid = 28) - LocalObject(1861, SpawnTube.Constructor(Vector3(4561.815f, 3340.455f, 43.19376f), Vector3(0, 0, 25)), owning_building_guid = 28) - LocalObject(1862, SpawnTube.Constructor(Vector3(4564.897f, 3347.063f, 43.19376f), Vector3(0, 0, 25)), owning_building_guid = 28) - LocalObject(1863, SpawnTube.Constructor(Vector3(4567.977f, 3353.668f, 43.19376f), Vector3(0, 0, 25)), owning_building_guid = 28) - LocalObject(116, ProximityTerminal.Constructor(Vector3(4554.793f, 3330.72f, 53.00377f), adv_med_terminal), owning_building_guid = 28) - LocalObject(1309, ProximityTerminal.Constructor(Vector3(4582.722f, 3329.9f, 43.19376f), medical_terminal), owning_building_guid = 28) - LocalObject(1543, ProximityTerminal.Constructor(Vector3(4513.404f, 3289.521f, 63.48676f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1544, Terminal.Constructor(Vector3(4513.404f, 3289.521f, 63.48676f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1549, ProximityTerminal.Constructor(Vector3(4525.112f, 3276.024f, 61.54576f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1550, Terminal.Constructor(Vector3(4525.112f, 3276.024f, 61.54576f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1561, ProximityTerminal.Constructor(Vector3(4565.171f, 3392.921f, 61.53576f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1562, Terminal.Constructor(Vector3(4565.171f, 3392.921f, 61.53576f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1564, ProximityTerminal.Constructor(Vector3(4576.324f, 3378.454f, 63.52576f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1565, Terminal.Constructor(Vector3(4576.324f, 3378.454f, 63.52576f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1781, ProximityTerminal.Constructor(Vector3(4487.991f, 3276.096f, 52.94376f), repair_silo), owning_building_guid = 28) - LocalObject(1782, Terminal.Constructor(Vector3(4487.991f, 3276.096f, 52.94376f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(1789, ProximityTerminal.Constructor(Vector3(4610.312f, 3330.175f, 52.94376f), repair_silo), owning_building_guid = 28) - LocalObject(1790, Terminal.Constructor(Vector3(4610.312f, 3330.175f, 52.94376f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(1255, FacilityTurret.Constructor(Vector3(4450.274f, 3280.691f, 61.59576f), manned_turret), owning_building_guid = 28) + LocalObject( + 1861, + SpawnTube.Constructor(Vector3(4561.815f, 3340.455f, 43.19376f), Vector3(0, 0, 25)), + owning_building_guid = 28 + ) + LocalObject( + 1862, + SpawnTube.Constructor(Vector3(4564.897f, 3347.063f, 43.19376f), Vector3(0, 0, 25)), + owning_building_guid = 28 + ) + LocalObject( + 1863, + SpawnTube.Constructor(Vector3(4567.977f, 3353.668f, 43.19376f), Vector3(0, 0, 25)), + owning_building_guid = 28 + ) + LocalObject( + 116, + ProximityTerminal.Constructor(Vector3(4554.793f, 3330.72f, 53.00377f), adv_med_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1309, + ProximityTerminal.Constructor(Vector3(4582.722f, 3329.9f, 43.19376f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1543, + ProximityTerminal.Constructor(Vector3(4513.404f, 3289.521f, 63.48676f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1544, + Terminal.Constructor(Vector3(4513.404f, 3289.521f, 63.48676f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1549, + ProximityTerminal.Constructor(Vector3(4525.112f, 3276.024f, 61.54576f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1550, + Terminal.Constructor(Vector3(4525.112f, 3276.024f, 61.54576f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1561, + ProximityTerminal.Constructor(Vector3(4565.171f, 3392.921f, 61.53576f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1562, + Terminal.Constructor(Vector3(4565.171f, 3392.921f, 61.53576f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1564, + ProximityTerminal.Constructor(Vector3(4576.324f, 3378.454f, 63.52576f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1565, + Terminal.Constructor(Vector3(4576.324f, 3378.454f, 63.52576f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1781, + ProximityTerminal.Constructor(Vector3(4487.991f, 3276.096f, 52.94376f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 1782, + Terminal.Constructor(Vector3(4487.991f, 3276.096f, 52.94376f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1789, + ProximityTerminal.Constructor(Vector3(4610.312f, 3330.175f, 52.94376f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 1790, + Terminal.Constructor(Vector3(4610.312f, 3330.175f, 52.94376f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1255, + FacilityTurret.Constructor(Vector3(4450.274f, 3280.691f, 61.59576f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1255, 5036) - LocalObject(1261, FacilityTurret.Constructor(Vector3(4525.11f, 3441.195f, 61.59576f), manned_turret), owning_building_guid = 28) + LocalObject( + 1261, + FacilityTurret.Constructor(Vector3(4525.11f, 3441.195f, 61.59576f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1261, 5037) - LocalObject(1262, FacilityTurret.Constructor(Vector3(4572.828f, 3223.535f, 61.59576f), manned_turret), owning_building_guid = 28) + LocalObject( + 1262, + FacilityTurret.Constructor(Vector3(4572.828f, 3223.535f, 61.59576f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1262, 5038) - LocalObject(1264, FacilityTurret.Constructor(Vector3(4610.123f, 3402.803f, 61.59576f), manned_turret), owning_building_guid = 28) + LocalObject( + 1264, + FacilityTurret.Constructor(Vector3(4610.123f, 3402.803f, 61.59576f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1264, 5039) - LocalObject(1265, FacilityTurret.Constructor(Vector3(4631.01f, 3345.498f, 61.59576f), manned_turret), owning_building_guid = 28) + LocalObject( + 1265, + FacilityTurret.Constructor(Vector3(4631.01f, 3345.498f, 61.59576f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1265, 5040) - LocalObject(674, ImplantTerminalMech.Constructor(Vector3(4583.874f, 3373.957f, 42.67076f)), owning_building_guid = 28) - LocalObject(668, Terminal.Constructor(Vector3(4583.881f, 3373.973f, 42.67076f), implant_terminal_interface), owning_building_guid = 28) + LocalObject( + 674, + ImplantTerminalMech.Constructor(Vector3(4583.874f, 3373.957f, 42.67076f)), + owning_building_guid = 28 + ) + LocalObject( + 668, + Terminal.Constructor(Vector3(4583.881f, 3373.973f, 42.67076f), implant_terminal_interface), + owning_building_guid = 28 + ) TerminalToInterface(674, 668) - LocalObject(675, ImplantTerminalMech.Constructor(Vector3(4590.353f, 3387.879f, 42.67076f)), owning_building_guid = 28) - LocalObject(669, Terminal.Constructor(Vector3(4590.345f, 3387.863f, 42.67076f), implant_terminal_interface), owning_building_guid = 28) + LocalObject( + 675, + ImplantTerminalMech.Constructor(Vector3(4590.353f, 3387.879f, 42.67076f)), + owning_building_guid = 28 + ) + LocalObject( + 669, + Terminal.Constructor(Vector3(4590.345f, 3387.863f, 42.67076f), implant_terminal_interface), + owning_building_guid = 28 + ) TerminalToInterface(675, 669) - LocalObject(1621, Painbox.Constructor(Vector3(4552.758f, 3317.812f, 67.22256f), painbox), owning_building_guid = 28) - LocalObject(1631, Painbox.Constructor(Vector3(4572.629f, 3338.754f, 47.26366f), painbox_continuous), owning_building_guid = 28) - LocalObject(1640, Painbox.Constructor(Vector3(4557.592f, 3331.518f, 67.42767f), painbox_door_radius), owning_building_guid = 28) - LocalObject(1663, Painbox.Constructor(Vector3(4564.62f, 3331.546f, 45.54966f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(1664, Painbox.Constructor(Vector3(4578.26f, 3356.122f, 44.90796f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(1665, Painbox.Constructor(Vector3(4589.32f, 3343.482f, 46.73466f), painbox_door_radius_continuous), owning_building_guid = 28) + LocalObject( + 1621, + Painbox.Constructor(Vector3(4552.758f, 3317.812f, 67.22256f), painbox), + owning_building_guid = 28 + ) + LocalObject( + 1631, + Painbox.Constructor(Vector3(4572.629f, 3338.754f, 47.26366f), painbox_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1640, + Painbox.Constructor(Vector3(4557.592f, 3331.518f, 67.42767f), painbox_door_radius), + owning_building_guid = 28 + ) + LocalObject( + 1663, + Painbox.Constructor(Vector3(4564.62f, 3331.546f, 45.54966f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1664, + Painbox.Constructor(Vector3(4578.26f, 3356.122f, 44.90796f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1665, + Painbox.Constructor(Vector3(4589.32f, 3343.482f, 46.73466f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) LocalObject(219, Generator.Constructor(Vector3(4549.693f, 3314.951f, 61.89977f)), owning_building_guid = 28) - LocalObject(210, Terminal.Constructor(Vector3(4553.113f, 3322.395f, 63.19376f), gen_control), owning_building_guid = 28) + LocalObject( + 210, + Terminal.Constructor(Vector3(4553.113f, 3322.395f, 63.19376f), gen_control), + owning_building_guid = 28 + ) } Building19998() def Building19998(): Unit = { // Name: GW_Solsar_S Type: hst GUID: 32, MapID: 19998 - LocalBuilding("GW_Solsar_S", 32, 19998, FoundationBuilder(WarpGate.Structure(Vector3(3735.49f, 2916.53f, 85.87f), hst))) + LocalBuilding( + "GW_Solsar_S", + 32, + 19998, + FoundationBuilder(WarpGate.Structure(Vector3(3735.49f, 2916.53f, 85.87f), hst)) + ) } Building19999() def Building19999(): Unit = { // Name: GW_Solsar_N Type: hst GUID: 33, MapID: 19999 - LocalBuilding("GW_Solsar_N", 33, 19999, FoundationBuilder(WarpGate.Structure(Vector3(5712.8f, 4800.53f, 63.29f), hst))) + LocalBuilding( + "GW_Solsar_N", + 33, + 19999, + FoundationBuilder(WarpGate.Structure(Vector3(5712.8f, 4800.53f, 63.29f), hst)) + ) } Building11() def Building11(): Unit = { // Name: Amun Type: tech_plant GUID: 35, MapID: 11 - LocalBuilding("Amun", 35, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4428f, 2220f, 68.3462f), Vector3(0f, 0f, 179f), tech_plant))) - LocalObject(157, CaptureTerminal.Constructor(Vector3(4424.036f, 2264.165f, 83.4462f), capture_terminal), owning_building_guid = 35) + LocalBuilding( + "Amun", + 35, + 11, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(4428f, 2220f, 68.3462f), Vector3(0f, 0f, 179f), tech_plant) + ) + ) + LocalObject( + 157, + CaptureTerminal.Constructor(Vector3(4424.036f, 2264.165f, 83.4462f), capture_terminal), + owning_building_guid = 35 + ) LocalObject(350, Door.Constructor(Vector3(4348.938f, 2218.272f, 69.8882f)), owning_building_guid = 35) LocalObject(351, Door.Constructor(Vector3(4349.255f, 2236.463f, 77.8512f)), owning_building_guid = 35) LocalObject(353, Door.Constructor(Vector3(4384.709f, 2189.485f, 77.8512f)), owning_building_guid = 35) @@ -1101,16 +3073,66 @@ object Map01 { // Solsar LocalObject(1998, Door.Constructor(Vector3(4415.812f, 2247.902f, 62.8002f)), owning_building_guid = 35) LocalObject(1999, Door.Constructor(Vector3(4415.939f, 2255.19f, 62.8002f)), owning_building_guid = 35) LocalObject(2000, Door.Constructor(Vector3(4416.066f, 2262.482f, 62.8002f)), owning_building_guid = 35) - LocalObject(690, IFFLock.Constructor(Vector3(4385.494f, 2269.146f, 69.9262f), Vector3(0, 0, 1)), owning_building_guid = 35, door_guid = 654) - LocalObject(694, IFFLock.Constructor(Vector3(4469.999f, 2176.907f, 70.0342f), Vector3(0, 0, 181)), owning_building_guid = 35, door_guid = 449) - LocalObject(800, IFFLock.Constructor(Vector3(4397.74f, 2266.107f, 54.7822f), Vector3(0, 0, 91)), owning_building_guid = 35, door_guid = 567) - LocalObject(801, IFFLock.Constructor(Vector3(4398.728f, 2237.457f, 54.7822f), Vector3(0, 0, 1)), owning_building_guid = 35, door_guid = 568) - LocalObject(802, IFFLock.Constructor(Vector3(4407.283f, 2269.179f, 62.2822f), Vector3(0, 0, 1)), owning_building_guid = 35, door_guid = 571) - LocalObject(803, IFFLock.Constructor(Vector3(4409.209f, 2260.559f, 84.8922f), Vector3(0, 0, 1)), owning_building_guid = 35, door_guid = 355) - LocalObject(804, IFFLock.Constructor(Vector3(4409.979f, 2243.508f, 62.2822f), Vector3(0, 0, 181)), owning_building_guid = 35, door_guid = 569) - LocalObject(805, IFFLock.Constructor(Vector3(4419.842f, 2242.763f, 84.8922f), Vector3(0, 0, 181)), owning_building_guid = 35, door_guid = 356) - LocalObject(806, IFFLock.Constructor(Vector3(4434.253f, 2258.957f, 84.7822f), Vector3(0, 0, 181)), owning_building_guid = 35, door_guid = 578) - LocalObject(808, IFFLock.Constructor(Vector3(4470.589f, 2321.318f, 69.8982f), Vector3(0, 0, 91)), owning_building_guid = 35, door_guid = 360) + LocalObject( + 690, + IFFLock.Constructor(Vector3(4385.494f, 2269.146f, 69.9262f), Vector3(0, 0, 1)), + owning_building_guid = 35, + door_guid = 654 + ) + LocalObject( + 694, + IFFLock.Constructor(Vector3(4469.999f, 2176.907f, 70.0342f), Vector3(0, 0, 181)), + owning_building_guid = 35, + door_guid = 449 + ) + LocalObject( + 800, + IFFLock.Constructor(Vector3(4397.74f, 2266.107f, 54.7822f), Vector3(0, 0, 91)), + owning_building_guid = 35, + door_guid = 567 + ) + LocalObject( + 801, + IFFLock.Constructor(Vector3(4398.728f, 2237.457f, 54.7822f), Vector3(0, 0, 1)), + owning_building_guid = 35, + door_guid = 568 + ) + LocalObject( + 802, + IFFLock.Constructor(Vector3(4407.283f, 2269.179f, 62.2822f), Vector3(0, 0, 1)), + owning_building_guid = 35, + door_guid = 571 + ) + LocalObject( + 803, + IFFLock.Constructor(Vector3(4409.209f, 2260.559f, 84.8922f), Vector3(0, 0, 1)), + owning_building_guid = 35, + door_guid = 355 + ) + LocalObject( + 804, + IFFLock.Constructor(Vector3(4409.979f, 2243.508f, 62.2822f), Vector3(0, 0, 181)), + owning_building_guid = 35, + door_guid = 569 + ) + LocalObject( + 805, + IFFLock.Constructor(Vector3(4419.842f, 2242.763f, 84.8922f), Vector3(0, 0, 181)), + owning_building_guid = 35, + door_guid = 356 + ) + LocalObject( + 806, + IFFLock.Constructor(Vector3(4434.253f, 2258.957f, 84.7822f), Vector3(0, 0, 181)), + owning_building_guid = 35, + door_guid = 578 + ) + LocalObject( + 808, + IFFLock.Constructor(Vector3(4470.589f, 2321.318f, 69.8982f), Vector3(0, 0, 91)), + owning_building_guid = 35, + door_guid = 360 + ) LocalObject(1047, Locker.Constructor(Vector3(4381.73f, 2246.646f, 53.4462f)), owning_building_guid = 35) LocalObject(1048, Locker.Constructor(Vector3(4383.067f, 2246.623f, 53.4462f)), owning_building_guid = 35) LocalObject(1049, Locker.Constructor(Vector3(4384.403f, 2246.6f, 53.4462f)), owning_building_guid = 35) @@ -1123,72 +3145,290 @@ object Map01 { // Solsar LocalObject(1056, Locker.Constructor(Vector3(4402.93f, 2266.303f, 61.2072f)), owning_building_guid = 35) LocalObject(1057, Locker.Constructor(Vector3(4404.077f, 2266.283f, 61.2072f)), owning_building_guid = 35) LocalObject(1058, Locker.Constructor(Vector3(4405.241f, 2266.263f, 61.2072f)), owning_building_guid = 35) - LocalObject(117, Terminal.Constructor(Vector3(4411.832f, 2245.145f, 84.0492f), air_vehicle_terminal), owning_building_guid = 35) - LocalObject(1289, VehicleSpawnPad.Constructor(Vector3(4406.988f, 2224.532f, 80.9242f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 35, terminal_guid = 117) - LocalObject(118, Terminal.Constructor(Vector3(4423.762f, 2244.937f, 84.0492f), air_vehicle_terminal), owning_building_guid = 35) - LocalObject(1290, VehicleSpawnPad.Constructor(Vector3(4428.003f, 2224.166f, 80.9242f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 35, terminal_guid = 118) - LocalObject(1377, Terminal.Constructor(Vector3(4401.927f, 2253.532f, 62.5362f), order_terminal), owning_building_guid = 35) - LocalObject(1378, Terminal.Constructor(Vector3(4401.993f, 2257.321f, 62.5362f), order_terminal), owning_building_guid = 35) - LocalObject(1379, Terminal.Constructor(Vector3(4402.059f, 2261.051f, 62.5362f), order_terminal), owning_building_guid = 35) - LocalObject(1380, Terminal.Constructor(Vector3(4425.405f, 2246.563f, 74.7762f), order_terminal), owning_building_guid = 35) - LocalObject(1932, Terminal.Constructor(Vector3(4391.119f, 2241.008f, 75.0282f), spawn_terminal), owning_building_guid = 35) - LocalObject(1933, Terminal.Constructor(Vector3(4413.414f, 2217.039f, 80.3692f), spawn_terminal), owning_building_guid = 35) - LocalObject(1934, Terminal.Constructor(Vector3(4415.559f, 2250.399f, 63.0802f), spawn_terminal), owning_building_guid = 35) - LocalObject(1935, Terminal.Constructor(Vector3(4415.689f, 2257.686f, 63.0802f), spawn_terminal), owning_building_guid = 35) - LocalObject(1936, Terminal.Constructor(Vector3(4415.812f, 2264.977f, 63.0802f), spawn_terminal), owning_building_guid = 35) - LocalObject(1937, Terminal.Constructor(Vector3(4420.887f, 2267.54f, 55.0032f), spawn_terminal), owning_building_guid = 35) - LocalObject(1938, Terminal.Constructor(Vector3(4453.719f, 2314.975f, 62.5032f), spawn_terminal), owning_building_guid = 35) - LocalObject(2085, Terminal.Constructor(Vector3(4476.705f, 2259.733f, 54.1602f), ground_vehicle_terminal), owning_building_guid = 35) - LocalObject(1291, VehicleSpawnPad.Constructor(Vector3(4476.565f, 2248.818f, 45.8832f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 35, terminal_guid = 2085) + LocalObject( + 117, + Terminal.Constructor(Vector3(4411.832f, 2245.145f, 84.0492f), air_vehicle_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1289, + VehicleSpawnPad.Constructor(Vector3(4406.988f, 2224.532f, 80.9242f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 35, + terminal_guid = 117 + ) + LocalObject( + 118, + Terminal.Constructor(Vector3(4423.762f, 2244.937f, 84.0492f), air_vehicle_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1290, + VehicleSpawnPad.Constructor(Vector3(4428.003f, 2224.166f, 80.9242f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 35, + terminal_guid = 118 + ) + LocalObject( + 1377, + Terminal.Constructor(Vector3(4401.927f, 2253.532f, 62.5362f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1378, + Terminal.Constructor(Vector3(4401.993f, 2257.321f, 62.5362f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1379, + Terminal.Constructor(Vector3(4402.059f, 2261.051f, 62.5362f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1380, + Terminal.Constructor(Vector3(4425.405f, 2246.563f, 74.7762f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1932, + Terminal.Constructor(Vector3(4391.119f, 2241.008f, 75.0282f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1933, + Terminal.Constructor(Vector3(4413.414f, 2217.039f, 80.3692f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1934, + Terminal.Constructor(Vector3(4415.559f, 2250.399f, 63.0802f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1935, + Terminal.Constructor(Vector3(4415.689f, 2257.686f, 63.0802f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1936, + Terminal.Constructor(Vector3(4415.812f, 2264.977f, 63.0802f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1937, + Terminal.Constructor(Vector3(4420.887f, 2267.54f, 55.0032f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1938, + Terminal.Constructor(Vector3(4453.719f, 2314.975f, 62.5032f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2085, + Terminal.Constructor(Vector3(4476.705f, 2259.733f, 54.1602f), ground_vehicle_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1291, + VehicleSpawnPad.Constructor(Vector3(4476.565f, 2248.818f, 45.8832f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 35, + terminal_guid = 2085 + ) LocalObject(1806, ResourceSilo.Constructor(Vector3(4365.689f, 2188.528f, 75.3542f)), owning_building_guid = 35) - LocalObject(1849, SpawnTube.Constructor(Vector3(4416.271f, 2248.947f, 60.9462f), Vector3(0, 0, 181)), owning_building_guid = 35) - LocalObject(1850, SpawnTube.Constructor(Vector3(4416.397f, 2256.234f, 60.9462f), Vector3(0, 0, 181)), owning_building_guid = 35) - LocalObject(1851, SpawnTube.Constructor(Vector3(4416.525f, 2263.524f, 60.9462f), Vector3(0, 0, 181)), owning_building_guid = 35) - LocalObject(1305, ProximityTerminal.Constructor(Vector3(4388.022f, 2247.082f, 53.4462f), medical_terminal), owning_building_guid = 35) - LocalObject(1306, ProximityTerminal.Constructor(Vector3(4425.589f, 2257.147f, 73.4432f), medical_terminal), owning_building_guid = 35) - LocalObject(1519, ProximityTerminal.Constructor(Vector3(4360.183f, 2247.086f, 76.5542f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1520, Terminal.Constructor(Vector3(4360.183f, 2247.086f, 76.5542f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1522, ProximityTerminal.Constructor(Vector3(4366.758f, 2263.22f, 78.9982f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1523, Terminal.Constructor(Vector3(4366.758f, 2263.22f, 78.9982f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1525, ProximityTerminal.Constructor(Vector3(4403.89f, 2301.805f, 76.5542f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1526, Terminal.Constructor(Vector3(4403.89f, 2301.805f, 76.5542f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1528, ProximityTerminal.Constructor(Vector3(4419.749f, 2284.68f, 83.7932f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1529, Terminal.Constructor(Vector3(4419.749f, 2284.68f, 83.7932f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1531, ProximityTerminal.Constructor(Vector3(4469.156f, 2227.45f, 78.8962f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1532, Terminal.Constructor(Vector3(4469.156f, 2227.45f, 78.8962f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1537, ProximityTerminal.Constructor(Vector3(4489.711f, 2243.266f, 76.5412f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1538, Terminal.Constructor(Vector3(4489.711f, 2243.266f, 76.5412f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1769, ProximityTerminal.Constructor(Vector3(4370.992f, 2313.802f, 68.0962f), repair_silo), owning_building_guid = 35) - LocalObject(1770, Terminal.Constructor(Vector3(4370.992f, 2313.802f, 68.0962f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(1773, ProximityTerminal.Constructor(Vector3(4426.965f, 2178.375f, 68.0747f), repair_silo), owning_building_guid = 35) - LocalObject(1774, Terminal.Constructor(Vector3(4426.965f, 2178.375f, 68.0747f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(1250, FacilityTurret.Constructor(Vector3(4334.737f, 2256.21f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1849, + SpawnTube.Constructor(Vector3(4416.271f, 2248.947f, 60.9462f), Vector3(0, 0, 181)), + owning_building_guid = 35 + ) + LocalObject( + 1850, + SpawnTube.Constructor(Vector3(4416.397f, 2256.234f, 60.9462f), Vector3(0, 0, 181)), + owning_building_guid = 35 + ) + LocalObject( + 1851, + SpawnTube.Constructor(Vector3(4416.525f, 2263.524f, 60.9462f), Vector3(0, 0, 181)), + owning_building_guid = 35 + ) + LocalObject( + 1305, + ProximityTerminal.Constructor(Vector3(4388.022f, 2247.082f, 53.4462f), medical_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1306, + ProximityTerminal.Constructor(Vector3(4425.589f, 2257.147f, 73.4432f), medical_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1519, + ProximityTerminal.Constructor(Vector3(4360.183f, 2247.086f, 76.5542f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1520, + Terminal.Constructor(Vector3(4360.183f, 2247.086f, 76.5542f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1522, + ProximityTerminal.Constructor(Vector3(4366.758f, 2263.22f, 78.9982f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1523, + Terminal.Constructor(Vector3(4366.758f, 2263.22f, 78.9982f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1525, + ProximityTerminal.Constructor(Vector3(4403.89f, 2301.805f, 76.5542f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1526, + Terminal.Constructor(Vector3(4403.89f, 2301.805f, 76.5542f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1528, + ProximityTerminal.Constructor(Vector3(4419.749f, 2284.68f, 83.7932f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1529, + Terminal.Constructor(Vector3(4419.749f, 2284.68f, 83.7932f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1531, + ProximityTerminal.Constructor(Vector3(4469.156f, 2227.45f, 78.8962f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1532, + Terminal.Constructor(Vector3(4469.156f, 2227.45f, 78.8962f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1537, + ProximityTerminal.Constructor(Vector3(4489.711f, 2243.266f, 76.5412f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1538, + Terminal.Constructor(Vector3(4489.711f, 2243.266f, 76.5412f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1769, + ProximityTerminal.Constructor(Vector3(4370.992f, 2313.802f, 68.0962f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 1770, + Terminal.Constructor(Vector3(4370.992f, 2313.802f, 68.0962f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1773, + ProximityTerminal.Constructor(Vector3(4426.965f, 2178.375f, 68.0747f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 1774, + Terminal.Constructor(Vector3(4426.965f, 2178.375f, 68.0747f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1250, + FacilityTurret.Constructor(Vector3(4334.737f, 2256.21f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1250, 5041) - LocalObject(1251, FacilityTurret.Constructor(Vector3(4341.189f, 2183.111f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1251, + FacilityTurret.Constructor(Vector3(4341.189f, 2183.111f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1251, 5042) - LocalObject(1252, FacilityTurret.Constructor(Vector3(4343.593f, 2320.832f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1252, + FacilityTurret.Constructor(Vector3(4343.593f, 2320.832f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1252, 5043) - LocalObject(1254, FacilityTurret.Constructor(Vector3(4420.675f, 2121.258f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1254, + FacilityTurret.Constructor(Vector3(4420.675f, 2121.258f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1254, 5044) - LocalObject(1258, FacilityTurret.Constructor(Vector3(4508.309f, 2317.948f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1258, + FacilityTurret.Constructor(Vector3(4508.309f, 2317.948f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1258, 5045) - LocalObject(1259, FacilityTurret.Constructor(Vector3(4510.356f, 2119.692f, 76.8452f), manned_turret), owning_building_guid = 35) + LocalObject( + 1259, + FacilityTurret.Constructor(Vector3(4510.356f, 2119.692f, 76.8452f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1259, 5046) - LocalObject(1620, Painbox.Constructor(Vector3(4402.333f, 2224.242f, 56.9195f), painbox), owning_building_guid = 35) - LocalObject(1629, Painbox.Constructor(Vector3(4407.813f, 2257.146f, 65.2161f), painbox_continuous), owning_building_guid = 35) - LocalObject(1638, Painbox.Constructor(Vector3(4400.628f, 2239.009f, 56.6056f), painbox_door_radius), owning_building_guid = 35) - LocalObject(1657, Painbox.Constructor(Vector3(4392.878f, 2250.048f, 64.5285f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(1658, Painbox.Constructor(Vector3(4408.53f, 2242.574f, 63.6224f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(1659, Painbox.Constructor(Vector3(4409.836f, 2270.046f, 63.0741f), painbox_door_radius_continuous), owning_building_guid = 35) + LocalObject( + 1620, + Painbox.Constructor(Vector3(4402.333f, 2224.242f, 56.9195f), painbox), + owning_building_guid = 35 + ) + LocalObject( + 1629, + Painbox.Constructor(Vector3(4407.813f, 2257.146f, 65.2161f), painbox_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1638, + Painbox.Constructor(Vector3(4400.628f, 2239.009f, 56.6056f), painbox_door_radius), + owning_building_guid = 35 + ) + LocalObject( + 1657, + Painbox.Constructor(Vector3(4392.878f, 2250.048f, 64.5285f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1658, + Painbox.Constructor(Vector3(4408.53f, 2242.574f, 63.6224f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1659, + Painbox.Constructor(Vector3(4409.836f, 2270.046f, 63.0741f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) LocalObject(218, Generator.Constructor(Vector3(4400.037f, 2220.933f, 52.1522f)), owning_building_guid = 35) - LocalObject(209, Terminal.Constructor(Vector3(4400.133f, 2229.125f, 53.4462f), gen_control), owning_building_guid = 35) + LocalObject( + 209, + Terminal.Constructor(Vector3(4400.133f, 2229.125f, 53.4462f), gen_control), + owning_building_guid = 35 + ) } Building5() def Building5(): Unit = { // Name: Seth Type: tech_plant GUID: 38, MapID: 5 - LocalBuilding("Seth", 38, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4566f, 6116f, 57.799f), Vector3(0f, 0f, 265f), tech_plant))) - LocalObject(158, CaptureTerminal.Constructor(Vector3(4521.666f, 6115.126f, 72.899f), capture_terminal), owning_building_guid = 38) + LocalBuilding( + "Seth", + 38, + 5, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(4566f, 6116f, 57.799f), Vector3(0f, 0f, 265f), tech_plant) + ) + ) + LocalObject( + 158, + CaptureTerminal.Constructor(Vector3(4521.666f, 6115.126f, 72.899f), capture_terminal), + owning_building_guid = 38 + ) LocalObject(361, Door.Constructor(Vector3(4469.867f, 6164.563f, 59.42f)), owning_building_guid = 38) LocalObject(363, Door.Constructor(Vector3(4474.748f, 6119.361f, 59.45f)), owning_building_guid = 38) LocalObject(364, Door.Constructor(Vector3(4476.333f, 6137.485f, 67.413f)), owning_building_guid = 38) @@ -1227,16 +3467,66 @@ object Map01 { // Solsar LocalObject(2007, Door.Constructor(Vector3(4522.79f, 6107.059f, 52.253f)), owning_building_guid = 38) LocalObject(2008, Door.Constructor(Vector3(4530.055f, 6106.423f, 52.253f)), owning_building_guid = 38) LocalObject(2009, Door.Constructor(Vector3(4537.316f, 6105.788f, 52.253f)), owning_building_guid = 38) - LocalObject(691, IFFLock.Constructor(Vector3(4514.008f, 6077.026f, 59.37901f), Vector3(0, 0, 275)), owning_building_guid = 38, door_guid = 655) - LocalObject(695, IFFLock.Constructor(Vector3(4611.917f, 6154.89f, 59.487f), Vector3(0, 0, 95)), owning_building_guid = 38, door_guid = 450) - LocalObject(807, IFFLock.Constructor(Vector3(4467.899f, 6165.553f, 59.35101f), Vector3(0, 0, 5)), owning_building_guid = 38, door_guid = 361) - LocalObject(824, IFFLock.Constructor(Vector3(4515.496f, 6098.764f, 51.735f), Vector3(0, 0, 275)), owning_building_guid = 38, door_guid = 594) - LocalObject(828, IFFLock.Constructor(Vector3(4517.895f, 6089.03f, 44.235f), Vector3(0, 0, 5)), owning_building_guid = 38, door_guid = 595) - LocalObject(829, IFFLock.Constructor(Vector3(4524.229f, 6100.084f, 74.345f), Vector3(0, 0, 275)), owning_building_guid = 38, door_guid = 392) - LocalObject(830, IFFLock.Constructor(Vector3(4527.574f, 6124.955f, 74.235f), Vector3(0, 0, 95)), owning_building_guid = 38, door_guid = 600) - LocalObject(831, IFFLock.Constructor(Vector3(4541.292f, 6099.663f, 51.735f), Vector3(0, 0, 95)), owning_building_guid = 38, door_guid = 608) - LocalObject(832, IFFLock.Constructor(Vector3(4542.724f, 6109.45f, 74.345f), Vector3(0, 0, 95)), owning_building_guid = 38, door_guid = 394) - LocalObject(833, IFFLock.Constructor(Vector3(4546.544f, 6088.017f, 44.235f), Vector3(0, 0, 275)), owning_building_guid = 38, door_guid = 612) + LocalObject( + 691, + IFFLock.Constructor(Vector3(4514.008f, 6077.026f, 59.37901f), Vector3(0, 0, 275)), + owning_building_guid = 38, + door_guid = 655 + ) + LocalObject( + 695, + IFFLock.Constructor(Vector3(4611.917f, 6154.89f, 59.487f), Vector3(0, 0, 95)), + owning_building_guid = 38, + door_guid = 450 + ) + LocalObject( + 807, + IFFLock.Constructor(Vector3(4467.899f, 6165.553f, 59.35101f), Vector3(0, 0, 5)), + owning_building_guid = 38, + door_guid = 361 + ) + LocalObject( + 824, + IFFLock.Constructor(Vector3(4515.496f, 6098.764f, 51.735f), Vector3(0, 0, 275)), + owning_building_guid = 38, + door_guid = 594 + ) + LocalObject( + 828, + IFFLock.Constructor(Vector3(4517.895f, 6089.03f, 44.235f), Vector3(0, 0, 5)), + owning_building_guid = 38, + door_guid = 595 + ) + LocalObject( + 829, + IFFLock.Constructor(Vector3(4524.229f, 6100.084f, 74.345f), Vector3(0, 0, 275)), + owning_building_guid = 38, + door_guid = 392 + ) + LocalObject( + 830, + IFFLock.Constructor(Vector3(4527.574f, 6124.955f, 74.235f), Vector3(0, 0, 95)), + owning_building_guid = 38, + door_guid = 600 + ) + LocalObject( + 831, + IFFLock.Constructor(Vector3(4541.292f, 6099.663f, 51.735f), Vector3(0, 0, 95)), + owning_building_guid = 38, + door_guid = 608 + ) + LocalObject( + 832, + IFFLock.Constructor(Vector3(4542.724f, 6109.45f, 74.345f), Vector3(0, 0, 95)), + owning_building_guid = 38, + door_guid = 394 + ) + LocalObject( + 833, + IFFLock.Constructor(Vector3(4546.544f, 6088.017f, 44.235f), Vector3(0, 0, 275)), + owning_building_guid = 38, + door_guid = 612 + ) LocalObject(1078, Locker.Constructor(Vector3(4517.96f, 6093.077f, 50.66f)), owning_building_guid = 38) LocalObject(1079, Locker.Constructor(Vector3(4518.061f, 6094.221f, 50.66f)), owning_building_guid = 38) LocalObject(1080, Locker.Constructor(Vector3(4518.161f, 6095.364f, 50.66f)), owning_building_guid = 38) @@ -1249,82 +3539,320 @@ object Map01 { // Solsar LocalObject(1092, Locker.Constructor(Vector3(4537.051f, 6081.538f, 42.899f)), owning_building_guid = 38) LocalObject(1093, Locker.Constructor(Vector3(4537.167f, 6082.869f, 42.899f)), owning_building_guid = 38) LocalObject(1094, Locker.Constructor(Vector3(4537.283f, 6084.188f, 42.899f)), owning_building_guid = 38) - LocalObject(119, Terminal.Constructor(Vector3(4539.789f, 6101.625f, 73.50201f), air_vehicle_terminal), owning_building_guid = 38) - LocalObject(1294, VehicleSpawnPad.Constructor(Vector3(4560.013f, 6095.355f, 70.37701f), mb_pad_creation, Vector3(0, 0, 95)), owning_building_guid = 38, terminal_guid = 119) - LocalObject(120, Terminal.Constructor(Vector3(4540.828f, 6113.511f, 73.50201f), air_vehicle_terminal), owning_building_guid = 38) - LocalObject(1295, VehicleSpawnPad.Constructor(Vector3(4561.845f, 6116.293f, 70.37701f), mb_pad_creation, Vector3(0, 0, 95)), owning_building_guid = 38, terminal_guid = 120) - LocalObject(1390, Terminal.Constructor(Vector3(4523.239f, 6092.985f, 51.989f), order_terminal), owning_building_guid = 38) - LocalObject(1391, Terminal.Constructor(Vector3(4526.956f, 6092.66f, 51.989f), order_terminal), owning_building_guid = 38) - LocalObject(1392, Terminal.Constructor(Vector3(4530.731f, 6092.33f, 51.989f), order_terminal), owning_building_guid = 38) - LocalObject(1393, Terminal.Constructor(Vector3(4539.32f, 6115.265f, 64.229f), order_terminal), owning_building_guid = 38) - LocalObject(1939, Terminal.Constructor(Vector3(4473.051f, 6148.282f, 51.95601f), spawn_terminal), owning_building_guid = 38) - LocalObject(1941, Terminal.Constructor(Vector3(4518.079f, 6112.22f, 44.456f), spawn_terminal), owning_building_guid = 38) - LocalObject(1943, Terminal.Constructor(Vector3(4520.283f, 6106.979f, 52.533f), spawn_terminal), owning_building_guid = 38) - LocalObject(1944, Terminal.Constructor(Vector3(4527.547f, 6106.348f, 52.533f), spawn_terminal), owning_building_guid = 38) - LocalObject(1945, Terminal.Constructor(Vector3(4534.808f, 6105.709f, 52.533f), spawn_terminal), owning_building_guid = 38) - LocalObject(1946, Terminal.Constructor(Vector3(4542.471f, 6080.674f, 64.481f), spawn_terminal), owning_building_guid = 38) - LocalObject(1950, Terminal.Constructor(Vector3(4567.936f, 6101.243f, 69.82201f), spawn_terminal), owning_building_guid = 38) - LocalObject(2086, Terminal.Constructor(Vector3(4529.761f, 6167.358f, 43.613f), ground_vehicle_terminal), owning_building_guid = 38) - LocalObject(1292, VehicleSpawnPad.Constructor(Vector3(4540.64f, 6166.457f, 35.33601f), mb_pad_creation, Vector3(0, 0, 95)), owning_building_guid = 38, terminal_guid = 2086) + LocalObject( + 119, + Terminal.Constructor(Vector3(4539.789f, 6101.625f, 73.50201f), air_vehicle_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1294, + VehicleSpawnPad.Constructor(Vector3(4560.013f, 6095.355f, 70.37701f), mb_pad_creation, Vector3(0, 0, 95)), + owning_building_guid = 38, + terminal_guid = 119 + ) + LocalObject( + 120, + Terminal.Constructor(Vector3(4540.828f, 6113.511f, 73.50201f), air_vehicle_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1295, + VehicleSpawnPad.Constructor(Vector3(4561.845f, 6116.293f, 70.37701f), mb_pad_creation, Vector3(0, 0, 95)), + owning_building_guid = 38, + terminal_guid = 120 + ) + LocalObject( + 1390, + Terminal.Constructor(Vector3(4523.239f, 6092.985f, 51.989f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1391, + Terminal.Constructor(Vector3(4526.956f, 6092.66f, 51.989f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1392, + Terminal.Constructor(Vector3(4530.731f, 6092.33f, 51.989f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1393, + Terminal.Constructor(Vector3(4539.32f, 6115.265f, 64.229f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1939, + Terminal.Constructor(Vector3(4473.051f, 6148.282f, 51.95601f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1941, + Terminal.Constructor(Vector3(4518.079f, 6112.22f, 44.456f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1943, + Terminal.Constructor(Vector3(4520.283f, 6106.979f, 52.533f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1944, + Terminal.Constructor(Vector3(4527.547f, 6106.348f, 52.533f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1945, + Terminal.Constructor(Vector3(4534.808f, 6105.709f, 52.533f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1946, + Terminal.Constructor(Vector3(4542.471f, 6080.674f, 64.481f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1950, + Terminal.Constructor(Vector3(4567.936f, 6101.243f, 69.82201f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2086, + Terminal.Constructor(Vector3(4529.761f, 6167.358f, 43.613f), ground_vehicle_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1292, + VehicleSpawnPad.Constructor(Vector3(4540.64f, 6166.457f, 35.33601f), mb_pad_creation, Vector3(0, 0, 95)), + owning_building_guid = 38, + terminal_guid = 2086 + ) LocalObject(1808, ResourceSilo.Constructor(Vector3(4593.049f, 6051.646f, 64.80701f)), owning_building_guid = 38) - LocalObject(1858, SpawnTube.Constructor(Vector3(4521.782f, 6107.589f, 50.399f), Vector3(0, 0, 95)), owning_building_guid = 38) - LocalObject(1859, SpawnTube.Constructor(Vector3(4529.045f, 6106.954f, 50.399f), Vector3(0, 0, 95)), owning_building_guid = 38) - LocalObject(1860, SpawnTube.Constructor(Vector3(4536.305f, 6106.318f, 50.399f), Vector3(0, 0, 95)), owning_building_guid = 38) - LocalObject(1307, ProximityTerminal.Constructor(Vector3(4528.775f, 6116.186f, 62.896f), medical_terminal), owning_building_guid = 38) - LocalObject(1308, ProximityTerminal.Constructor(Vector3(4536.195f, 6078.009f, 42.899f), medical_terminal), owning_building_guid = 38) - LocalObject(1534, ProximityTerminal.Constructor(Vector3(4482.712f, 6097.655f, 66.007f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1535, Terminal.Constructor(Vector3(4482.712f, 6097.655f, 66.007f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1540, ProximityTerminal.Constructor(Vector3(4500.902f, 6112.28f, 73.246f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1541, Terminal.Constructor(Vector3(4500.902f, 6112.28f, 73.246f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1546, ProximityTerminal.Constructor(Vector3(4518.613f, 6057.922f, 68.451f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1547, Terminal.Constructor(Vector3(4518.613f, 6057.922f, 68.451f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1552, ProximityTerminal.Constructor(Vector3(4534.25f, 6050.237f, 66.007f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1553, Terminal.Constructor(Vector3(4534.25f, 6050.237f, 66.007f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1555, ProximityTerminal.Constructor(Vector3(4547.096f, 6179.184f, 65.994f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1556, Terminal.Constructor(Vector3(4547.096f, 6179.184f, 65.994f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1558, ProximityTerminal.Constructor(Vector3(4561.439f, 6157.576f, 68.34901f), pad_landing_frame), owning_building_guid = 38) - LocalObject(1559, Terminal.Constructor(Vector3(4561.439f, 6157.576f, 68.34901f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1777, ProximityTerminal.Constructor(Vector3(4468.45f, 6065.674f, 57.549f), repair_silo), owning_building_guid = 38) - LocalObject(1778, Terminal.Constructor(Vector3(4468.45f, 6065.674f, 57.549f), ground_rearm_terminal), owning_building_guid = 38) - LocalObject(1785, ProximityTerminal.Constructor(Vector3(4607.451f, 6112.063f, 57.5275f), repair_silo), owning_building_guid = 38) - LocalObject(1786, Terminal.Constructor(Vector3(4607.451f, 6112.063f, 57.5275f), ground_rearm_terminal), owning_building_guid = 38) - LocalObject(1256, FacilityTurret.Constructor(Vector3(4459.526f, 6038.832f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1858, + SpawnTube.Constructor(Vector3(4521.782f, 6107.589f, 50.399f), Vector3(0, 0, 95)), + owning_building_guid = 38 + ) + LocalObject( + 1859, + SpawnTube.Constructor(Vector3(4529.045f, 6106.954f, 50.399f), Vector3(0, 0, 95)), + owning_building_guid = 38 + ) + LocalObject( + 1860, + SpawnTube.Constructor(Vector3(4536.305f, 6106.318f, 50.399f), Vector3(0, 0, 95)), + owning_building_guid = 38 + ) + LocalObject( + 1307, + ProximityTerminal.Constructor(Vector3(4528.775f, 6116.186f, 62.896f), medical_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1308, + ProximityTerminal.Constructor(Vector3(4536.195f, 6078.009f, 42.899f), medical_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1534, + ProximityTerminal.Constructor(Vector3(4482.712f, 6097.655f, 66.007f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1535, + Terminal.Constructor(Vector3(4482.712f, 6097.655f, 66.007f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1540, + ProximityTerminal.Constructor(Vector3(4500.902f, 6112.28f, 73.246f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1541, + Terminal.Constructor(Vector3(4500.902f, 6112.28f, 73.246f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1546, + ProximityTerminal.Constructor(Vector3(4518.613f, 6057.922f, 68.451f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1547, + Terminal.Constructor(Vector3(4518.613f, 6057.922f, 68.451f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1552, + ProximityTerminal.Constructor(Vector3(4534.25f, 6050.237f, 66.007f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1553, + Terminal.Constructor(Vector3(4534.25f, 6050.237f, 66.007f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1555, + ProximityTerminal.Constructor(Vector3(4547.096f, 6179.184f, 65.994f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1556, + Terminal.Constructor(Vector3(4547.096f, 6179.184f, 65.994f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1558, + ProximityTerminal.Constructor(Vector3(4561.439f, 6157.576f, 68.34901f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 1559, + Terminal.Constructor(Vector3(4561.439f, 6157.576f, 68.34901f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1777, + ProximityTerminal.Constructor(Vector3(4468.45f, 6065.674f, 57.549f), repair_silo), + owning_building_guid = 38 + ) + LocalObject( + 1778, + Terminal.Constructor(Vector3(4468.45f, 6065.674f, 57.549f), ground_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1785, + ProximityTerminal.Constructor(Vector3(4607.451f, 6112.063f, 57.5275f), repair_silo), + owning_building_guid = 38 + ) + LocalObject( + 1786, + Terminal.Constructor(Vector3(4607.451f, 6112.063f, 57.5275f), ground_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1256, + FacilityTurret.Constructor(Vector3(4459.526f, 6038.832f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1256, 5047) - LocalObject(1257, FacilityTurret.Constructor(Vector3(4473.892f, 6202.946f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1257, + FacilityTurret.Constructor(Vector3(4473.892f, 6202.946f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1257, 5048) - LocalObject(1260, FacilityTurret.Constructor(Vector3(4523.372f, 6025.49f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1260, + FacilityTurret.Constructor(Vector3(4523.372f, 6025.49f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1260, 5049) - LocalObject(1263, FacilityTurret.Constructor(Vector3(4596.743f, 6026.827f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1263, + FacilityTurret.Constructor(Vector3(4596.743f, 6026.827f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1263, 5050) - LocalObject(1266, FacilityTurret.Constructor(Vector3(4663.991f, 6101.805f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1266, + FacilityTurret.Constructor(Vector3(4663.991f, 6101.805f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1266, 5051) - LocalObject(1267, FacilityTurret.Constructor(Vector3(4671.808f, 6191.158f, 66.298f), manned_turret), owning_building_guid = 38) + LocalObject( + 1267, + FacilityTurret.Constructor(Vector3(4671.808f, 6191.158f, 66.298f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1267, 5052) - LocalObject(1622, Painbox.Constructor(Vector3(4559.978f, 6090.691f, 46.3723f), painbox), owning_building_guid = 38) - LocalObject(1630, Painbox.Constructor(Vector3(4527.537f, 6098.453f, 54.6689f), painbox_continuous), owning_building_guid = 38) - LocalObject(1639, Painbox.Constructor(Vector3(4545.127f, 6090.021f, 46.0584f), painbox_door_radius), owning_building_guid = 38) - LocalObject(1660, Painbox.Constructor(Vector3(4514.809f, 6101.371f, 52.52691f), painbox_door_radius_continuous), owning_building_guid = 38) - LocalObject(1661, Painbox.Constructor(Vector3(4533.576f, 6083.06f, 53.9813f), painbox_door_radius_continuous), owning_building_guid = 38) - LocalObject(1662, Painbox.Constructor(Vector3(4542.123f, 6098.152f, 53.0752f), painbox_door_radius_continuous), owning_building_guid = 38) + LocalObject( + 1622, + Painbox.Constructor(Vector3(4559.978f, 6090.691f, 46.3723f), painbox), + owning_building_guid = 38 + ) + LocalObject( + 1630, + Painbox.Constructor(Vector3(4527.537f, 6098.453f, 54.6689f), painbox_continuous), + owning_building_guid = 38 + ) + LocalObject( + 1639, + Painbox.Constructor(Vector3(4545.127f, 6090.021f, 46.0584f), painbox_door_radius), + owning_building_guid = 38 + ) + LocalObject( + 1660, + Painbox.Constructor(Vector3(4514.809f, 6101.371f, 52.52691f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 1661, + Painbox.Constructor(Vector3(4533.576f, 6083.06f, 53.9813f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 1662, + Painbox.Constructor(Vector3(4542.123f, 6098.152f, 53.0752f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) LocalObject(220, Generator.Constructor(Vector3(4563.119f, 6088.17f, 41.605f)), owning_building_guid = 38) - LocalObject(211, Terminal.Constructor(Vector3(4554.954f, 6088.837f, 42.899f), gen_control), owning_building_guid = 38) + LocalObject( + 211, + Terminal.Constructor(Vector3(4554.954f, 6088.837f, 42.899f), gen_control), + owning_building_guid = 38 + ) } Building20() def Building20(): Unit = { // Name: W_Sobek_Tower Type: tower_a GUID: 41, MapID: 20 - LocalBuilding("W_Sobek_Tower", 41, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2600f, 3180f, 73.48247f), Vector3(0f, 0f, 256f), tower_a))) - LocalObject(1877, CaptureTerminal.Constructor(Vector3(2595.887f, 3163.931f, 83.48147f), secondary_capture), owning_building_guid = 41) + LocalBuilding( + "W_Sobek_Tower", + 41, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2600f, 3180f, 73.48247f), Vector3(0f, 0f, 256f), tower_a) + ) + ) + LocalObject( + 1877, + CaptureTerminal.Constructor(Vector3(2595.887f, 3163.931f, 83.48147f), secondary_capture), + owning_building_guid = 41 + ) LocalObject(222, Door.Constructor(Vector3(2589.334f, 3170.292f, 75.00347f)), owning_building_guid = 41) LocalObject(223, Door.Constructor(Vector3(2589.334f, 3170.292f, 95.00247f)), owning_building_guid = 41) LocalObject(224, Door.Constructor(Vector3(2604.859f, 3166.421f, 75.00347f)), owning_building_guid = 41) LocalObject(225, Door.Constructor(Vector3(2604.859f, 3166.421f, 95.00247f)), owning_building_guid = 41) LocalObject(1959, Door.Constructor(Vector3(2586.43f, 3171.896f, 64.81847f)), owning_building_guid = 41) LocalObject(1960, Door.Constructor(Vector3(2602.353f, 3167.926f, 64.81847f)), owning_building_guid = 41) - LocalObject(696, IFFLock.Constructor(Vector3(2588.052f, 3168.502f, 74.94347f), Vector3(0, 0, 284)), owning_building_guid = 41, door_guid = 222) - LocalObject(697, IFFLock.Constructor(Vector3(2588.052f, 3168.502f, 94.94347f), Vector3(0, 0, 284)), owning_building_guid = 41, door_guid = 223) - LocalObject(698, IFFLock.Constructor(Vector3(2606.14f, 3168.207f, 74.94347f), Vector3(0, 0, 104)), owning_building_guid = 41, door_guid = 224) - LocalObject(699, IFFLock.Constructor(Vector3(2606.14f, 3168.207f, 94.94347f), Vector3(0, 0, 104)), owning_building_guid = 41, door_guid = 225) + LocalObject( + 696, + IFFLock.Constructor(Vector3(2588.052f, 3168.502f, 74.94347f), Vector3(0, 0, 284)), + owning_building_guid = 41, + door_guid = 222 + ) + LocalObject( + 697, + IFFLock.Constructor(Vector3(2588.052f, 3168.502f, 94.94347f), Vector3(0, 0, 284)), + owning_building_guid = 41, + door_guid = 223 + ) + LocalObject( + 698, + IFFLock.Constructor(Vector3(2606.14f, 3168.207f, 74.94347f), Vector3(0, 0, 104)), + owning_building_guid = 41, + door_guid = 224 + ) + LocalObject( + 699, + IFFLock.Constructor(Vector3(2606.14f, 3168.207f, 94.94347f), Vector3(0, 0, 104)), + owning_building_guid = 41, + door_guid = 225 + ) LocalObject(873, Locker.Constructor(Vector3(2580.295f, 3163.123f, 63.47647f)), owning_building_guid = 41) LocalObject(874, Locker.Constructor(Vector3(2580.634f, 3164.483f, 63.47647f)), owning_building_guid = 41) LocalObject(875, Locker.Constructor(Vector3(2581.284f, 3167.091f, 63.47647f)), owning_building_guid = 41) @@ -1333,35 +3861,106 @@ object Map01 { // Solsar LocalObject(878, Locker.Constructor(Vector3(2601.856f, 3159.192f, 63.47647f)), owning_building_guid = 41) LocalObject(879, Locker.Constructor(Vector3(2602.498f, 3161.766f, 63.47647f)), owning_building_guid = 41) LocalObject(880, Locker.Constructor(Vector3(2602.822f, 3163.063f, 63.47647f)), owning_building_guid = 41) - LocalObject(1312, Terminal.Constructor(Vector3(2585.234f, 3161.58f, 64.81447f), order_terminal), owning_building_guid = 41) - LocalObject(1313, Terminal.Constructor(Vector3(2590.788f, 3160.195f, 64.81447f), order_terminal), owning_building_guid = 41) - LocalObject(1314, Terminal.Constructor(Vector3(2596.009f, 3158.894f, 64.81447f), order_terminal), owning_building_guid = 41) - LocalObject(1810, SpawnTube.Constructor(Vector3(2585.516f, 3172.577f, 62.96447f), respawn_tube_tower, Vector3(0, 0, 104)), owning_building_guid = 41) - LocalObject(1811, SpawnTube.Constructor(Vector3(2601.439f, 3168.608f, 62.96447f), respawn_tube_tower, Vector3(0, 0, 104)), owning_building_guid = 41) - LocalObject(1201, FacilityTurret.Constructor(Vector3(2590.74f, 3195.377f, 92.42447f), manned_turret), owning_building_guid = 41) + LocalObject( + 1312, + Terminal.Constructor(Vector3(2585.234f, 3161.58f, 64.81447f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1313, + Terminal.Constructor(Vector3(2590.788f, 3160.195f, 64.81447f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1314, + Terminal.Constructor(Vector3(2596.009f, 3158.894f, 64.81447f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1810, + SpawnTube.Constructor(Vector3(2585.516f, 3172.577f, 62.96447f), respawn_tube_tower, Vector3(0, 0, 104)), + owning_building_guid = 41 + ) + LocalObject( + 1811, + SpawnTube.Constructor(Vector3(2601.439f, 3168.608f, 62.96447f), respawn_tube_tower, Vector3(0, 0, 104)), + owning_building_guid = 41 + ) + LocalObject( + 1201, + FacilityTurret.Constructor(Vector3(2590.74f, 3195.377f, 92.42447f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1201, 5053) - LocalObject(1202, FacilityTurret.Constructor(Vector3(2606.851f, 3154.952f, 92.42447f), manned_turret), owning_building_guid = 41) + LocalObject( + 1202, + FacilityTurret.Constructor(Vector3(2606.851f, 3154.952f, 92.42447f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1202, 5054) - LocalObject(1669, Painbox.Constructor(Vector3(2586.406f, 3165.895f, 63.58247f), painbox_radius_continuous), owning_building_guid = 41) - LocalObject(1670, Painbox.Constructor(Vector3(2592.721f, 3176.42f, 64.98157f), painbox_radius_continuous), owning_building_guid = 41) - LocalObject(1671, Painbox.Constructor(Vector3(2597.938f, 3163.108f, 63.58247f), painbox_radius_continuous), owning_building_guid = 41) + LocalObject( + 1669, + Painbox.Constructor(Vector3(2586.406f, 3165.895f, 63.58247f), painbox_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 1670, + Painbox.Constructor(Vector3(2592.721f, 3176.42f, 64.98157f), painbox_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 1671, + Painbox.Constructor(Vector3(2597.938f, 3163.108f, 63.58247f), painbox_radius_continuous), + owning_building_guid = 41 + ) } Building21() def Building21(): Unit = { // Name: S_Mont_Tower Type: tower_a GUID: 42, MapID: 21 - LocalBuilding("S_Mont_Tower", 42, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3124f, 3784f, 97.89117f), Vector3(0f, 0f, 5f), tower_a))) - LocalObject(1879, CaptureTerminal.Constructor(Vector3(3140.533f, 3785.343f, 107.8902f), secondary_capture), owning_building_guid = 42) + LocalBuilding( + "S_Mont_Tower", + 42, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3124f, 3784f, 97.89117f), Vector3(0f, 0f, 5f), tower_a) + ) + ) + LocalObject( + 1879, + CaptureTerminal.Constructor(Vector3(3140.533f, 3785.343f, 107.8902f), secondary_capture), + owning_building_guid = 42 + ) LocalObject(246, Door.Constructor(Vector3(3135.257f, 3793.015f, 99.41218f)), owning_building_guid = 42) LocalObject(247, Door.Constructor(Vector3(3135.257f, 3793.015f, 119.4112f)), owning_building_guid = 42) LocalObject(248, Door.Constructor(Vector3(3136.652f, 3777.076f, 99.41218f)), owning_building_guid = 42) LocalObject(249, Door.Constructor(Vector3(3136.652f, 3777.076f, 119.4112f)), owning_building_guid = 42) LocalObject(1966, Door.Constructor(Vector3(3134.65f, 3790.156f, 89.22717f)), owning_building_guid = 42) LocalObject(1967, Door.Constructor(Vector3(3136.08f, 3773.808f, 89.22717f)), owning_building_guid = 42) - LocalObject(717, IFFLock.Constructor(Vector3(3133.151f, 3793.645f, 99.35217f), Vector3(0, 0, 355)), owning_building_guid = 42, door_guid = 246) - LocalObject(718, IFFLock.Constructor(Vector3(3133.151f, 3793.645f, 119.3522f), Vector3(0, 0, 355)), owning_building_guid = 42, door_guid = 247) - LocalObject(719, IFFLock.Constructor(Vector3(3138.761f, 3776.447f, 99.35217f), Vector3(0, 0, 175)), owning_building_guid = 42, door_guid = 248) - LocalObject(720, IFFLock.Constructor(Vector3(3138.761f, 3776.447f, 119.3522f), Vector3(0, 0, 175)), owning_building_guid = 42, door_guid = 249) + LocalObject( + 717, + IFFLock.Constructor(Vector3(3133.151f, 3793.645f, 99.35217f), Vector3(0, 0, 355)), + owning_building_guid = 42, + door_guid = 246 + ) + LocalObject( + 718, + IFFLock.Constructor(Vector3(3133.151f, 3793.645f, 119.3522f), Vector3(0, 0, 355)), + owning_building_guid = 42, + door_guid = 247 + ) + LocalObject( + 719, + IFFLock.Constructor(Vector3(3138.761f, 3776.447f, 99.35217f), Vector3(0, 0, 175)), + owning_building_guid = 42, + door_guid = 248 + ) + LocalObject( + 720, + IFFLock.Constructor(Vector3(3138.761f, 3776.447f, 119.3522f), Vector3(0, 0, 175)), + owning_building_guid = 42, + door_guid = 249 + ) LocalObject(901, Locker.Constructor(Vector3(3139.095f, 3792.182f, 87.88518f)), owning_building_guid = 42) LocalObject(902, Locker.Constructor(Vector3(3140.427f, 3792.298f, 87.88518f)), owning_building_guid = 42) LocalObject(903, Locker.Constructor(Vector3(3140.967f, 3770.39f, 87.88518f)), owning_building_guid = 42) @@ -1370,35 +3969,106 @@ object Map01 { // Solsar LocalObject(906, Locker.Constructor(Vector3(3144.467f, 3792.652f, 87.88518f)), owning_building_guid = 42) LocalObject(907, Locker.Constructor(Vector3(3144.977f, 3770.741f, 87.88518f)), owning_building_guid = 42) LocalObject(908, Locker.Constructor(Vector3(3146.373f, 3770.863f, 87.88518f)), owning_building_guid = 42) - LocalObject(1326, Terminal.Constructor(Vector3(3145.256f, 3787.098f, 89.22318f), order_terminal), owning_building_guid = 42) - LocalObject(1327, Terminal.Constructor(Vector3(3145.725f, 3781.738f, 89.22318f), order_terminal), owning_building_guid = 42) - LocalObject(1328, Terminal.Constructor(Vector3(3146.224f, 3776.036f, 89.22318f), order_terminal), owning_building_guid = 42) - LocalObject(1817, SpawnTube.Constructor(Vector3(3134.303f, 3789.069f, 87.37318f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 42) - LocalObject(1818, SpawnTube.Constructor(Vector3(3135.734f, 3772.722f, 87.37318f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 42) - LocalObject(1210, FacilityTurret.Constructor(Vector3(3112.476f, 3770.238f, 116.8332f), manned_turret), owning_building_guid = 42) + LocalObject( + 1326, + Terminal.Constructor(Vector3(3145.256f, 3787.098f, 89.22318f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1327, + Terminal.Constructor(Vector3(3145.725f, 3781.738f, 89.22318f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1328, + Terminal.Constructor(Vector3(3146.224f, 3776.036f, 89.22318f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1817, + SpawnTube.Constructor(Vector3(3134.303f, 3789.069f, 87.37318f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 42 + ) + LocalObject( + 1818, + SpawnTube.Constructor(Vector3(3135.734f, 3772.722f, 87.37318f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 42 + ) + LocalObject( + 1210, + FacilityTurret.Constructor(Vector3(3112.476f, 3770.238f, 116.8332f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1210, 5055) - LocalObject(1213, FacilityTurret.Constructor(Vector3(3145.453f, 3798.633f, 116.8332f), manned_turret), owning_building_guid = 42) + LocalObject( + 1213, + FacilityTurret.Constructor(Vector3(3145.453f, 3798.633f, 116.8332f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1213, 5056) - LocalObject(1675, Painbox.Constructor(Vector3(3129.755f, 3778.283f, 89.39027f), painbox_radius_continuous), owning_building_guid = 42) - LocalObject(1676, Painbox.Constructor(Vector3(3140.643f, 3787.55f, 87.99117f), painbox_radius_continuous), owning_building_guid = 42) - LocalObject(1677, Painbox.Constructor(Vector3(3141.763f, 3775.739f, 87.99117f), painbox_radius_continuous), owning_building_guid = 42) + LocalObject( + 1675, + Painbox.Constructor(Vector3(3129.755f, 3778.283f, 89.39027f), painbox_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1676, + Painbox.Constructor(Vector3(3140.643f, 3787.55f, 87.99117f), painbox_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1677, + Painbox.Constructor(Vector3(3141.763f, 3775.739f, 87.99117f), painbox_radius_continuous), + owning_building_guid = 42 + ) } Building14() def Building14(): Unit = { // Name: NE_Amerish_Warpgate_Tower Type: tower_a GUID: 43, MapID: 14 - LocalBuilding("NE_Amerish_Warpgate_Tower", 43, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3148f, 1398f, 56.7095f), Vector3(0f, 0f, 34f), tower_a))) - LocalObject(1880, CaptureTerminal.Constructor(Vector3(3161.809f, 1407.19f, 66.7085f), secondary_capture), owning_building_guid = 43) + LocalBuilding( + "NE_Amerish_Warpgate_Tower", + 43, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3148f, 1398f, 56.7095f), Vector3(0f, 0f, 34f), tower_a) + ) + ) + LocalObject( + 1880, + CaptureTerminal.Constructor(Vector3(3161.809f, 1407.19f, 66.7085f), secondary_capture), + owning_building_guid = 43 + ) LocalObject(253, Door.Constructor(Vector3(3153.475f, 1411.343f, 58.2305f)), owning_building_guid = 43) LocalObject(254, Door.Constructor(Vector3(3153.475f, 1411.343f, 78.22949f)), owning_building_guid = 43) LocalObject(256, Door.Constructor(Vector3(3162.422f, 1398.078f, 58.2305f)), owning_building_guid = 43) LocalObject(257, Door.Constructor(Vector3(3162.422f, 1398.078f, 78.22949f)), owning_building_guid = 43) LocalObject(1968, Door.Constructor(Vector3(3154.33f, 1408.547f, 48.04549f)), owning_building_guid = 43) LocalObject(1969, Door.Constructor(Vector3(3163.507f, 1394.943f, 48.04549f)), owning_building_guid = 43) - LocalObject(721, IFFLock.Constructor(Vector3(3151.328f, 1410.873f, 58.17049f), Vector3(0, 0, 326)), owning_building_guid = 43, door_guid = 253) - LocalObject(722, IFFLock.Constructor(Vector3(3151.328f, 1410.873f, 78.17049f), Vector3(0, 0, 326)), owning_building_guid = 43, door_guid = 254) - LocalObject(727, IFFLock.Constructor(Vector3(3164.573f, 1398.55f, 58.17049f), Vector3(0, 0, 146)), owning_building_guid = 43, door_guid = 256) - LocalObject(728, IFFLock.Constructor(Vector3(3164.573f, 1398.55f, 78.17049f), Vector3(0, 0, 146)), owning_building_guid = 43, door_guid = 257) + LocalObject( + 721, + IFFLock.Constructor(Vector3(3151.328f, 1410.873f, 58.17049f), Vector3(0, 0, 326)), + owning_building_guid = 43, + door_guid = 253 + ) + LocalObject( + 722, + IFFLock.Constructor(Vector3(3151.328f, 1410.873f, 78.17049f), Vector3(0, 0, 326)), + owning_building_guid = 43, + door_guid = 254 + ) + LocalObject( + 727, + IFFLock.Constructor(Vector3(3164.573f, 1398.55f, 58.17049f), Vector3(0, 0, 146)), + owning_building_guid = 43, + door_guid = 256 + ) + LocalObject( + 728, + IFFLock.Constructor(Vector3(3164.573f, 1398.55f, 78.17049f), Vector3(0, 0, 146)), + owning_building_guid = 43, + door_guid = 257 + ) LocalObject(909, Locker.Constructor(Vector3(3157.236f, 1412.474f, 46.7035f)), owning_building_guid = 43) LocalObject(910, Locker.Constructor(Vector3(3158.344f, 1413.222f, 46.7035f)), owning_building_guid = 43) LocalObject(911, Locker.Constructor(Vector3(3160.544f, 1414.705f, 46.7035f)), owning_building_guid = 43) @@ -1407,35 +4077,106 @@ object Map01 { // Solsar LocalObject(918, Locker.Constructor(Vector3(3170.546f, 1395.07f, 46.7035f)), owning_building_guid = 43) LocalObject(919, Locker.Constructor(Vector3(3172.775f, 1396.573f, 46.7035f)), owning_building_guid = 43) LocalObject(920, Locker.Constructor(Vector3(3173.937f, 1397.357f, 46.7035f)), owning_building_guid = 43) - LocalObject(1329, Terminal.Constructor(Vector3(3165.089f, 1411.015f, 48.0415f), order_terminal), owning_building_guid = 43) - LocalObject(1330, Terminal.Constructor(Vector3(3168.098f, 1406.554f, 48.0415f), order_terminal), owning_building_guid = 43) - LocalObject(1331, Terminal.Constructor(Vector3(3171.299f, 1401.808f, 48.0415f), order_terminal), owning_building_guid = 43) - LocalObject(1819, SpawnTube.Constructor(Vector3(3154.554f, 1407.429f, 46.1915f), respawn_tube_tower, Vector3(0, 0, 326)), owning_building_guid = 43) - LocalObject(1820, SpawnTube.Constructor(Vector3(3163.73f, 1393.824f, 46.1915f), respawn_tube_tower, Vector3(0, 0, 326)), owning_building_guid = 43) - LocalObject(1212, FacilityTurret.Constructor(Vector3(3144.592f, 1380.376f, 75.6515f), manned_turret), owning_building_guid = 43) + LocalObject( + 1329, + Terminal.Constructor(Vector3(3165.089f, 1411.015f, 48.0415f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1330, + Terminal.Constructor(Vector3(3168.098f, 1406.554f, 48.0415f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1331, + Terminal.Constructor(Vector3(3171.299f, 1401.808f, 48.0415f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1819, + SpawnTube.Constructor(Vector3(3154.554f, 1407.429f, 46.1915f), respawn_tube_tower, Vector3(0, 0, 326)), + owning_building_guid = 43 + ) + LocalObject( + 1820, + SpawnTube.Constructor(Vector3(3163.73f, 1393.824f, 46.1915f), respawn_tube_tower, Vector3(0, 0, 326)), + owning_building_guid = 43 + ) + LocalObject( + 1212, + FacilityTurret.Constructor(Vector3(3144.592f, 1380.376f, 75.6515f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1212, 5057) - LocalObject(1214, FacilityTurret.Constructor(Vector3(3159.669f, 1421.199f, 75.6515f), manned_turret), owning_building_guid = 43) + LocalObject( + 1214, + FacilityTurret.Constructor(Vector3(3159.669f, 1421.199f, 75.6515f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1214, 5058) - LocalObject(1678, Painbox.Constructor(Vector3(3155.805f, 1395.79f, 48.2086f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(1679, Painbox.Constructor(Vector3(3160.835f, 1409.174f, 46.80949f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(1680, Painbox.Constructor(Vector3(3167.541f, 1399.386f, 46.80949f), painbox_radius_continuous), owning_building_guid = 43) + LocalObject( + 1678, + Painbox.Constructor(Vector3(3155.805f, 1395.79f, 48.2086f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 1679, + Painbox.Constructor(Vector3(3160.835f, 1409.174f, 46.80949f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 1680, + Painbox.Constructor(Vector3(3167.541f, 1399.386f, 46.80949f), painbox_radius_continuous), + owning_building_guid = 43 + ) } Building32() def Building32(): Unit = { // Name: SW__Aton_Tower Type: tower_a GUID: 44, MapID: 32 - LocalBuilding("SW__Aton_Tower", 44, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3572f, 4886f, 68.03491f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1883, CaptureTerminal.Constructor(Vector3(3588.587f, 4885.897f, 78.03391f), secondary_capture), owning_building_guid = 44) + LocalBuilding( + "SW__Aton_Tower", + 44, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3572f, 4886f, 68.03491f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1883, + CaptureTerminal.Constructor(Vector3(3588.587f, 4885.897f, 78.03391f), secondary_capture), + owning_building_guid = 44 + ) LocalObject(286, Door.Constructor(Vector3(3584f, 4878f, 69.55592f)), owning_building_guid = 44) LocalObject(287, Door.Constructor(Vector3(3584f, 4878f, 89.55492f)), owning_building_guid = 44) LocalObject(288, Door.Constructor(Vector3(3584f, 4894f, 69.55592f)), owning_building_guid = 44) LocalObject(289, Door.Constructor(Vector3(3584f, 4894f, 89.55492f)), owning_building_guid = 44) LocalObject(1977, Door.Constructor(Vector3(3583.146f, 4874.794f, 59.37091f)), owning_building_guid = 44) LocalObject(1978, Door.Constructor(Vector3(3583.146f, 4891.204f, 59.37091f)), owning_building_guid = 44) - LocalObject(747, IFFLock.Constructor(Vector3(3581.957f, 4894.811f, 69.49591f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 288) - LocalObject(748, IFFLock.Constructor(Vector3(3581.957f, 4894.811f, 89.49591f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 289) - LocalObject(749, IFFLock.Constructor(Vector3(3586.047f, 4877.189f, 69.49591f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 286) - LocalObject(750, IFFLock.Constructor(Vector3(3586.047f, 4877.189f, 89.49591f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 287) + LocalObject( + 747, + IFFLock.Constructor(Vector3(3581.957f, 4894.811f, 69.49591f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 288 + ) + LocalObject( + 748, + IFFLock.Constructor(Vector3(3581.957f, 4894.811f, 89.49591f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 289 + ) + LocalObject( + 749, + IFFLock.Constructor(Vector3(3586.047f, 4877.189f, 69.49591f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 286 + ) + LocalObject( + 750, + IFFLock.Constructor(Vector3(3586.047f, 4877.189f, 89.49591f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 287 + ) LocalObject(945, Locker.Constructor(Vector3(3587.716f, 4870.963f, 58.02891f)), owning_building_guid = 44) LocalObject(946, Locker.Constructor(Vector3(3587.751f, 4892.835f, 58.02891f)), owning_building_guid = 44) LocalObject(947, Locker.Constructor(Vector3(3589.053f, 4870.963f, 58.02891f)), owning_building_guid = 44) @@ -1444,35 +4185,106 @@ object Map01 { // Solsar LocalObject(950, Locker.Constructor(Vector3(3591.741f, 4892.835f, 58.02891f)), owning_building_guid = 44) LocalObject(951, Locker.Constructor(Vector3(3593.143f, 4870.963f, 58.02891f)), owning_building_guid = 44) LocalObject(952, Locker.Constructor(Vector3(3593.143f, 4892.835f, 58.02891f)), owning_building_guid = 44) - LocalObject(1344, Terminal.Constructor(Vector3(3593.445f, 4876.129f, 59.36691f), order_terminal), owning_building_guid = 44) - LocalObject(1345, Terminal.Constructor(Vector3(3593.445f, 4881.853f, 59.36691f), order_terminal), owning_building_guid = 44) - LocalObject(1346, Terminal.Constructor(Vector3(3593.445f, 4887.234f, 59.36691f), order_terminal), owning_building_guid = 44) - LocalObject(1828, SpawnTube.Constructor(Vector3(3582.706f, 4873.742f, 57.51691f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(1829, SpawnTube.Constructor(Vector3(3582.706f, 4890.152f, 57.51691f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(1225, FacilityTurret.Constructor(Vector3(3559.32f, 4873.295f, 86.97691f), manned_turret), owning_building_guid = 44) + LocalObject( + 1344, + Terminal.Constructor(Vector3(3593.445f, 4876.129f, 59.36691f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1345, + Terminal.Constructor(Vector3(3593.445f, 4881.853f, 59.36691f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1346, + Terminal.Constructor(Vector3(3593.445f, 4887.234f, 59.36691f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1828, + SpawnTube.Constructor(Vector3(3582.706f, 4873.742f, 57.51691f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 1829, + SpawnTube.Constructor(Vector3(3582.706f, 4890.152f, 57.51691f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 1225, + FacilityTurret.Constructor(Vector3(3559.32f, 4873.295f, 86.97691f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1225, 5059) - LocalObject(1227, FacilityTurret.Constructor(Vector3(3594.647f, 4898.707f, 86.97691f), manned_turret), owning_building_guid = 44) + LocalObject( + 1227, + FacilityTurret.Constructor(Vector3(3594.647f, 4898.707f, 86.97691f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1227, 5060) - LocalObject(1687, Painbox.Constructor(Vector3(3577.235f, 4879.803f, 59.53401f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(1688, Painbox.Constructor(Vector3(3588.889f, 4888.086f, 58.13491f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(1689, Painbox.Constructor(Vector3(3588.975f, 4876.223f, 58.13491f), painbox_radius_continuous), owning_building_guid = 44) + LocalObject( + 1687, + Painbox.Constructor(Vector3(3577.235f, 4879.803f, 59.53401f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 1688, + Painbox.Constructor(Vector3(3588.889f, 4888.086f, 58.13491f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 1689, + Painbox.Constructor(Vector3(3588.975f, 4876.223f, 58.13491f), painbox_radius_continuous), + owning_building_guid = 44 + ) } Building38() def Building38(): Unit = { // Name: NE_Horus_Tower Type: tower_a GUID: 45, MapID: 38 - LocalBuilding("NE_Horus_Tower", 45, 38, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3862f, 2326f, 72.06335f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1885, CaptureTerminal.Constructor(Vector3(3878.587f, 2325.897f, 82.06236f), secondary_capture), owning_building_guid = 45) + LocalBuilding( + "NE_Horus_Tower", + 45, + 38, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3862f, 2326f, 72.06335f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1885, + CaptureTerminal.Constructor(Vector3(3878.587f, 2325.897f, 82.06236f), secondary_capture), + owning_building_guid = 45 + ) LocalObject(316, Door.Constructor(Vector3(3874f, 2318f, 73.58436f)), owning_building_guid = 45) LocalObject(317, Door.Constructor(Vector3(3874f, 2318f, 93.58336f)), owning_building_guid = 45) LocalObject(318, Door.Constructor(Vector3(3874f, 2334f, 73.58436f)), owning_building_guid = 45) LocalObject(319, Door.Constructor(Vector3(3874f, 2334f, 93.58336f)), owning_building_guid = 45) LocalObject(1987, Door.Constructor(Vector3(3873.146f, 2314.794f, 63.39935f)), owning_building_guid = 45) LocalObject(1988, Door.Constructor(Vector3(3873.146f, 2331.204f, 63.39935f)), owning_building_guid = 45) - LocalObject(772, IFFLock.Constructor(Vector3(3871.957f, 2334.811f, 73.52435f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 318) - LocalObject(773, IFFLock.Constructor(Vector3(3871.957f, 2334.811f, 93.52435f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 319) - LocalObject(774, IFFLock.Constructor(Vector3(3876.047f, 2317.189f, 73.52435f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 316) - LocalObject(775, IFFLock.Constructor(Vector3(3876.047f, 2317.189f, 93.52435f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 317) + LocalObject( + 772, + IFFLock.Constructor(Vector3(3871.957f, 2334.811f, 73.52435f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 318 + ) + LocalObject( + 773, + IFFLock.Constructor(Vector3(3871.957f, 2334.811f, 93.52435f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 319 + ) + LocalObject( + 774, + IFFLock.Constructor(Vector3(3876.047f, 2317.189f, 73.52435f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 316 + ) + LocalObject( + 775, + IFFLock.Constructor(Vector3(3876.047f, 2317.189f, 93.52435f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 317 + ) LocalObject(1003, Locker.Constructor(Vector3(3877.716f, 2310.963f, 62.05735f)), owning_building_guid = 45) LocalObject(1004, Locker.Constructor(Vector3(3877.751f, 2332.835f, 62.05735f)), owning_building_guid = 45) LocalObject(1005, Locker.Constructor(Vector3(3879.053f, 2310.963f, 62.05735f)), owning_building_guid = 45) @@ -1481,35 +4293,106 @@ object Map01 { // Solsar LocalObject(1008, Locker.Constructor(Vector3(3881.741f, 2332.835f, 62.05735f)), owning_building_guid = 45) LocalObject(1009, Locker.Constructor(Vector3(3883.143f, 2310.963f, 62.05735f)), owning_building_guid = 45) LocalObject(1010, Locker.Constructor(Vector3(3883.143f, 2332.835f, 62.05735f)), owning_building_guid = 45) - LocalObject(1358, Terminal.Constructor(Vector3(3883.445f, 2316.129f, 63.39536f), order_terminal), owning_building_guid = 45) - LocalObject(1359, Terminal.Constructor(Vector3(3883.445f, 2321.853f, 63.39536f), order_terminal), owning_building_guid = 45) - LocalObject(1360, Terminal.Constructor(Vector3(3883.445f, 2327.234f, 63.39536f), order_terminal), owning_building_guid = 45) - LocalObject(1838, SpawnTube.Constructor(Vector3(3872.706f, 2313.742f, 61.54536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1839, SpawnTube.Constructor(Vector3(3872.706f, 2330.152f, 61.54536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1235, FacilityTurret.Constructor(Vector3(3849.32f, 2313.295f, 91.00536f), manned_turret), owning_building_guid = 45) + LocalObject( + 1358, + Terminal.Constructor(Vector3(3883.445f, 2316.129f, 63.39536f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1359, + Terminal.Constructor(Vector3(3883.445f, 2321.853f, 63.39536f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1360, + Terminal.Constructor(Vector3(3883.445f, 2327.234f, 63.39536f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1838, + SpawnTube.Constructor(Vector3(3872.706f, 2313.742f, 61.54536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1839, + SpawnTube.Constructor(Vector3(3872.706f, 2330.152f, 61.54536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1235, + FacilityTurret.Constructor(Vector3(3849.32f, 2313.295f, 91.00536f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1235, 5061) - LocalObject(1236, FacilityTurret.Constructor(Vector3(3884.647f, 2338.707f, 91.00536f), manned_turret), owning_building_guid = 45) + LocalObject( + 1236, + FacilityTurret.Constructor(Vector3(3884.647f, 2338.707f, 91.00536f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1236, 5062) - LocalObject(1693, Painbox.Constructor(Vector3(3867.235f, 2319.803f, 63.56245f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1694, Painbox.Constructor(Vector3(3878.889f, 2328.086f, 62.16335f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1695, Painbox.Constructor(Vector3(3878.975f, 2316.223f, 62.16335f), painbox_radius_continuous), owning_building_guid = 45) + LocalObject( + 1693, + Painbox.Constructor(Vector3(3867.235f, 2319.803f, 63.56245f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1694, + Painbox.Constructor(Vector3(3878.889f, 2328.086f, 62.16335f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1695, + Painbox.Constructor(Vector3(3878.975f, 2316.223f, 62.16335f), painbox_radius_continuous), + owning_building_guid = 45 + ) } Building17() def Building17(): Unit = { // Name: W_Thoth_Tower Type: tower_a GUID: 46, MapID: 17 - LocalBuilding("W_Thoth_Tower", 46, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4290f, 3328f, 67.31162f), Vector3(0f, 0f, 25f), tower_a))) - LocalObject(1888, CaptureTerminal.Constructor(Vector3(4305.077f, 3334.917f, 77.31062f), secondary_capture), owning_building_guid = 46) + LocalBuilding( + "W_Thoth_Tower", + 46, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4290f, 3328f, 67.31162f), Vector3(0f, 0f, 25f), tower_a) + ) + ) + LocalObject( + 1888, + CaptureTerminal.Constructor(Vector3(4305.077f, 3334.917f, 77.31062f), secondary_capture), + owning_building_guid = 46 + ) LocalObject(342, Door.Constructor(Vector3(4297.495f, 3340.322f, 68.83263f)), owning_building_guid = 46) LocalObject(343, Door.Constructor(Vector3(4297.495f, 3340.322f, 88.83162f)), owning_building_guid = 46) LocalObject(344, Door.Constructor(Vector3(4304.257f, 3325.821f, 68.83263f)), owning_building_guid = 46) LocalObject(345, Door.Constructor(Vector3(4304.257f, 3325.821f, 88.83162f)), owning_building_guid = 46) LocalObject(1993, Door.Constructor(Vector3(4297.902f, 3337.427f, 58.64762f)), owning_building_guid = 46) LocalObject(1994, Door.Constructor(Vector3(4304.837f, 3322.554f, 58.64762f)), owning_building_guid = 46) - LocalObject(790, IFFLock.Constructor(Vector3(4295.3f, 3340.194f, 68.77262f), Vector3(0, 0, 335)), owning_building_guid = 46, door_guid = 342) - LocalObject(791, IFFLock.Constructor(Vector3(4295.3f, 3340.194f, 88.77262f), Vector3(0, 0, 335)), owning_building_guid = 46, door_guid = 343) - LocalObject(793, IFFLock.Constructor(Vector3(4306.455f, 3325.951f, 68.77262f), Vector3(0, 0, 155)), owning_building_guid = 46, door_guid = 344) - LocalObject(794, IFFLock.Constructor(Vector3(4306.455f, 3325.951f, 88.77262f), Vector3(0, 0, 155)), owning_building_guid = 46, door_guid = 345) + LocalObject( + 790, + IFFLock.Constructor(Vector3(4295.3f, 3340.194f, 68.77262f), Vector3(0, 0, 335)), + owning_building_guid = 46, + door_guid = 342 + ) + LocalObject( + 791, + IFFLock.Constructor(Vector3(4295.3f, 3340.194f, 88.77262f), Vector3(0, 0, 335)), + owning_building_guid = 46, + door_guid = 343 + ) + LocalObject( + 793, + IFFLock.Constructor(Vector3(4306.455f, 3325.951f, 68.77262f), Vector3(0, 0, 155)), + owning_building_guid = 46, + door_guid = 344 + ) + LocalObject( + 794, + IFFLock.Constructor(Vector3(4306.455f, 3325.951f, 88.77262f), Vector3(0, 0, 155)), + owning_building_guid = 46, + door_guid = 345 + ) LocalObject(1027, Locker.Constructor(Vector3(4301.387f, 3340.851f, 57.30562f)), owning_building_guid = 46) LocalObject(1028, Locker.Constructor(Vector3(4302.599f, 3341.416f, 57.30562f)), owning_building_guid = 46) LocalObject(1029, Locker.Constructor(Vector3(4305.003f, 3342.538f, 57.30562f)), owning_building_guid = 46) @@ -1518,35 +4401,106 @@ object Map01 { // Solsar LocalObject(1036, Locker.Constructor(Vector3(4311.81f, 3321.579f, 57.30562f)), owning_building_guid = 46) LocalObject(1037, Locker.Constructor(Vector3(4314.246f, 3322.715f, 57.30562f)), owning_building_guid = 46) LocalObject(1038, Locker.Constructor(Vector3(4315.517f, 3323.307f, 57.30562f)), owning_building_guid = 46) - LocalObject(1371, Terminal.Constructor(Vector3(4308.914f, 3338.181f, 58.64362f), order_terminal), owning_building_guid = 46) - LocalObject(1372, Terminal.Constructor(Vector3(4311.188f, 3333.305f, 58.64362f), order_terminal), owning_building_guid = 46) - LocalObject(1373, Terminal.Constructor(Vector3(4313.607f, 3328.117f, 58.64362f), order_terminal), owning_building_guid = 46) - LocalObject(1844, SpawnTube.Constructor(Vector3(4297.948f, 3336.288f, 56.79362f), respawn_tube_tower, Vector3(0, 0, 335)), owning_building_guid = 46) - LocalObject(1845, SpawnTube.Constructor(Vector3(4304.883f, 3321.415f, 56.79362f), respawn_tube_tower, Vector3(0, 0, 335)), owning_building_guid = 46) - LocalObject(1247, FacilityTurret.Constructor(Vector3(4283.877f, 3311.126f, 86.25362f), manned_turret), owning_building_guid = 46) + LocalObject( + 1371, + Terminal.Constructor(Vector3(4308.914f, 3338.181f, 58.64362f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1372, + Terminal.Constructor(Vector3(4311.188f, 3333.305f, 58.64362f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1373, + Terminal.Constructor(Vector3(4313.607f, 3328.117f, 58.64362f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1844, + SpawnTube.Constructor(Vector3(4297.948f, 3336.288f, 56.79362f), respawn_tube_tower, Vector3(0, 0, 335)), + owning_building_guid = 46 + ) + LocalObject( + 1845, + SpawnTube.Constructor(Vector3(4304.883f, 3321.415f, 56.79362f), respawn_tube_tower, Vector3(0, 0, 335)), + owning_building_guid = 46 + ) + LocalObject( + 1247, + FacilityTurret.Constructor(Vector3(4283.877f, 3311.126f, 86.25362f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1247, 5063) - LocalObject(1248, FacilityTurret.Constructor(Vector3(4305.155f, 3349.087f, 86.25362f), manned_turret), owning_building_guid = 46) + LocalObject( + 1248, + FacilityTurret.Constructor(Vector3(4305.155f, 3349.087f, 86.25362f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1248, 5064) - LocalObject(1702, Painbox.Constructor(Vector3(4297.363f, 3324.596f, 58.81072f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1703, Painbox.Constructor(Vector3(4304.425f, 3337.028f, 57.41162f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1704, Painbox.Constructor(Vector3(4309.517f, 3326.313f, 57.41162f), painbox_radius_continuous), owning_building_guid = 46) + LocalObject( + 1702, + Painbox.Constructor(Vector3(4297.363f, 3324.596f, 58.81072f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1703, + Painbox.Constructor(Vector3(4304.425f, 3337.028f, 57.41162f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1704, + Painbox.Constructor(Vector3(4309.517f, 3326.313f, 57.41162f), painbox_radius_continuous), + owning_building_guid = 46 + ) } Building36() def Building36(): Unit = { // Name: E_Tower_Seth Type: tower_a GUID: 47, MapID: 36 - LocalBuilding("E_Tower_Seth", 47, 36, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4828f, 6192f, 67.78428f), Vector3(0f, 0f, 33f), tower_a))) - LocalObject(1892, CaptureTerminal.Constructor(Vector3(4841.967f, 6200.948f, 77.78328f), secondary_capture), owning_building_guid = 47) + LocalBuilding( + "E_Tower_Seth", + 47, + 36, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4828f, 6192f, 67.78428f), Vector3(0f, 0f, 33f), tower_a) + ) + ) + LocalObject( + 1892, + CaptureTerminal.Constructor(Vector3(4841.967f, 6200.948f, 77.78328f), secondary_capture), + owning_building_guid = 47 + ) LocalObject(412, Door.Constructor(Vector3(4833.707f, 6205.245f, 69.30528f)), owning_building_guid = 47) LocalObject(413, Door.Constructor(Vector3(4833.707f, 6205.245f, 89.30428f)), owning_building_guid = 47) LocalObject(414, Door.Constructor(Vector3(4842.421f, 6191.826f, 69.30528f)), owning_building_guid = 47) LocalObject(415, Door.Constructor(Vector3(4842.421f, 6191.826f, 89.30428f)), owning_building_guid = 47) LocalObject(2013, Door.Constructor(Vector3(4834.514f, 6202.435f, 59.12028f)), owning_building_guid = 47) LocalObject(2014, Door.Constructor(Vector3(4843.451f, 6188.672f, 59.12028f)), owning_building_guid = 47) - LocalObject(842, IFFLock.Constructor(Vector3(4831.552f, 6204.812f, 69.24528f), Vector3(0, 0, 327)), owning_building_guid = 47, door_guid = 412) - LocalObject(843, IFFLock.Constructor(Vector3(4831.552f, 6204.812f, 89.24528f), Vector3(0, 0, 327)), owning_building_guid = 47, door_guid = 413) - LocalObject(844, IFFLock.Constructor(Vector3(4844.58f, 6192.261f, 69.24528f), Vector3(0, 0, 147)), owning_building_guid = 47, door_guid = 414) - LocalObject(845, IFFLock.Constructor(Vector3(4844.58f, 6192.261f, 89.24528f), Vector3(0, 0, 147)), owning_building_guid = 47, door_guid = 415) + LocalObject( + 842, + IFFLock.Constructor(Vector3(4831.552f, 6204.812f, 69.24528f), Vector3(0, 0, 327)), + owning_building_guid = 47, + door_guid = 412 + ) + LocalObject( + 843, + IFFLock.Constructor(Vector3(4831.552f, 6204.812f, 89.24528f), Vector3(0, 0, 327)), + owning_building_guid = 47, + door_guid = 413 + ) + LocalObject( + 844, + IFFLock.Constructor(Vector3(4844.58f, 6192.261f, 69.24528f), Vector3(0, 0, 147)), + owning_building_guid = 47, + door_guid = 414 + ) + LocalObject( + 845, + IFFLock.Constructor(Vector3(4844.58f, 6192.261f, 89.24528f), Vector3(0, 0, 147)), + owning_building_guid = 47, + door_guid = 415 + ) LocalObject(1116, Locker.Constructor(Vector3(4837.487f, 6206.311f, 57.77828f)), owning_building_guid = 47) LocalObject(1117, Locker.Constructor(Vector3(4838.608f, 6207.039f, 57.77828f)), owning_building_guid = 47) LocalObject(1118, Locker.Constructor(Vector3(4840.833f, 6208.484f, 57.77828f)), owning_building_guid = 47) @@ -1555,35 +4509,106 @@ object Map01 { // Solsar LocalObject(1121, Locker.Constructor(Vector3(4850.492f, 6188.677f, 57.77828f)), owning_building_guid = 47) LocalObject(1122, Locker.Constructor(Vector3(4852.746f, 6190.141f, 57.77828f)), owning_building_guid = 47) LocalObject(1123, Locker.Constructor(Vector3(4853.922f, 6190.904f, 57.77828f)), owning_building_guid = 47) - LocalObject(1398, Terminal.Constructor(Vector3(4845.313f, 6204.715f, 59.11628f), order_terminal), owning_building_guid = 47) - LocalObject(1399, Terminal.Constructor(Vector3(4848.244f, 6200.202f, 59.11628f), order_terminal), owning_building_guid = 47) - LocalObject(1400, Terminal.Constructor(Vector3(4851.361f, 6195.401f, 59.11628f), order_terminal), owning_building_guid = 47) - LocalObject(1864, SpawnTube.Constructor(Vector3(4834.717f, 6201.313f, 57.26628f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 47) - LocalObject(1865, SpawnTube.Constructor(Vector3(4843.655f, 6187.55f, 57.26628f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 47) - LocalObject(1268, FacilityTurret.Constructor(Vector3(4824.285f, 6174.438f, 86.72628f), manned_turret), owning_building_guid = 47) + LocalObject( + 1398, + Terminal.Constructor(Vector3(4845.313f, 6204.715f, 59.11628f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1399, + Terminal.Constructor(Vector3(4848.244f, 6200.202f, 59.11628f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1400, + Terminal.Constructor(Vector3(4851.361f, 6195.401f, 59.11628f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1864, + SpawnTube.Constructor(Vector3(4834.717f, 6201.313f, 57.26628f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 47 + ) + LocalObject( + 1865, + SpawnTube.Constructor(Vector3(4843.655f, 6187.55f, 57.26628f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 47 + ) + LocalObject( + 1268, + FacilityTurret.Constructor(Vector3(4824.285f, 6174.438f, 86.72628f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1268, 5065) - LocalObject(1269, FacilityTurret.Constructor(Vector3(4840.073f, 6214.991f, 86.72628f), manned_turret), owning_building_guid = 47) + LocalObject( + 1269, + FacilityTurret.Constructor(Vector3(4840.073f, 6214.991f, 86.72628f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1269, 5066) - LocalObject(1714, Painbox.Constructor(Vector3(4835.766f, 6189.654f, 59.28338f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1715, Painbox.Constructor(Vector3(4841.028f, 6202.948f, 57.88428f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1716, Painbox.Constructor(Vector3(4847.562f, 6193.045f, 57.88428f), painbox_radius_continuous), owning_building_guid = 47) + LocalObject( + 1714, + Painbox.Constructor(Vector3(4835.766f, 6189.654f, 59.28338f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1715, + Painbox.Constructor(Vector3(4841.028f, 6202.948f, 57.88428f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1716, + Painbox.Constructor(Vector3(4847.562f, 6193.045f, 57.88428f), painbox_radius_continuous), + owning_building_guid = 47 + ) } Building24() def Building24(): Unit = { // Name: E_Bastet_Tower Type: tower_a GUID: 48, MapID: 24 - LocalBuilding("E_Bastet_Tower", 48, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5524f, 5436f, 74.02264f), Vector3(0f, 0f, 332f), tower_a))) - LocalObject(1895, CaptureTerminal.Constructor(Vector3(5538.597f, 5428.122f, 84.02164f), secondary_capture), owning_building_guid = 48) + LocalBuilding( + "E_Bastet_Tower", + 48, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5524f, 5436f, 74.02264f), Vector3(0f, 0f, 332f), tower_a) + ) + ) + LocalObject( + 1895, + CaptureTerminal.Constructor(Vector3(5538.597f, 5428.122f, 84.02164f), secondary_capture), + owning_building_guid = 48 + ) LocalObject(441, Door.Constructor(Vector3(5530.839f, 5423.303f, 75.54365f)), owning_building_guid = 48) LocalObject(442, Door.Constructor(Vector3(5530.839f, 5423.303f, 95.54265f)), owning_building_guid = 48) LocalObject(443, Door.Constructor(Vector3(5538.351f, 5437.43f, 75.54365f)), owning_building_guid = 48) LocalObject(444, Door.Constructor(Vector3(5538.351f, 5437.43f, 95.54265f)), owning_building_guid = 48) LocalObject(2022, Door.Constructor(Vector3(5528.581f, 5420.873f, 65.35864f)), owning_building_guid = 48) LocalObject(2023, Door.Constructor(Vector3(5536.285f, 5435.362f, 65.35864f)), owning_building_guid = 48) - LocalObject(865, IFFLock.Constructor(Vector3(5532.266f, 5421.625f, 75.48364f), Vector3(0, 0, 208)), owning_building_guid = 48, door_guid = 441) - LocalObject(866, IFFLock.Constructor(Vector3(5532.266f, 5421.625f, 95.48364f), Vector3(0, 0, 208)), owning_building_guid = 48, door_guid = 442) - LocalObject(867, IFFLock.Constructor(Vector3(5536.928f, 5439.105f, 75.48364f), Vector3(0, 0, 28)), owning_building_guid = 48, door_guid = 443) - LocalObject(868, IFFLock.Constructor(Vector3(5536.928f, 5439.105f, 95.48364f), Vector3(0, 0, 28)), owning_building_guid = 48, door_guid = 444) + LocalObject( + 865, + IFFLock.Constructor(Vector3(5532.266f, 5421.625f, 75.48364f), Vector3(0, 0, 208)), + owning_building_guid = 48, + door_guid = 441 + ) + LocalObject( + 866, + IFFLock.Constructor(Vector3(5532.266f, 5421.625f, 95.48364f), Vector3(0, 0, 208)), + owning_building_guid = 48, + door_guid = 442 + ) + LocalObject( + 867, + IFFLock.Constructor(Vector3(5536.928f, 5439.105f, 75.48364f), Vector3(0, 0, 28)), + owning_building_guid = 48, + door_guid = 443 + ) + LocalObject( + 868, + IFFLock.Constructor(Vector3(5536.928f, 5439.105f, 95.48364f), Vector3(0, 0, 28)), + owning_building_guid = 48, + door_guid = 444 + ) LocalObject(1147, Locker.Constructor(Vector3(5530.817f, 5415.345f, 64.01665f)), owning_building_guid = 48) LocalObject(1150, Locker.Constructor(Vector3(5531.998f, 5414.717f, 64.01665f)), owning_building_guid = 48) LocalObject(1152, Locker.Constructor(Vector3(5534.371f, 5413.455f, 64.01665f)), owning_building_guid = 48) @@ -1592,35 +4617,106 @@ object Map01 { // Solsar LocalObject(1157, Locker.Constructor(Vector3(5542.297f, 5434.013f, 64.01665f)), owning_building_guid = 48) LocalObject(1158, Locker.Constructor(Vector3(5544.639f, 5432.767f, 64.01665f)), owning_building_guid = 48) LocalObject(1159, Locker.Constructor(Vector3(5545.877f, 5432.109f, 64.01665f)), owning_building_guid = 48) - LocalObject(1413, Terminal.Constructor(Vector3(5538.301f, 5417.217f, 65.35464f), order_terminal), owning_building_guid = 48) - LocalObject(1414, Terminal.Constructor(Vector3(5540.988f, 5422.271f, 65.35464f), order_terminal), owning_building_guid = 48) - LocalObject(1415, Terminal.Constructor(Vector3(5543.514f, 5427.022f, 65.35464f), order_terminal), owning_building_guid = 48) - LocalObject(1873, SpawnTube.Constructor(Vector3(5527.698f, 5420.151f, 63.50465f), respawn_tube_tower, Vector3(0, 0, 28)), owning_building_guid = 48) - LocalObject(1874, SpawnTube.Constructor(Vector3(5535.402f, 5434.64f, 63.50465f), respawn_tube_tower, Vector3(0, 0, 28)), owning_building_guid = 48) - LocalObject(1279, FacilityTurret.Constructor(Vector3(5506.839f, 5430.735f, 92.96465f), manned_turret), owning_building_guid = 48) + LocalObject( + 1413, + Terminal.Constructor(Vector3(5538.301f, 5417.217f, 65.35464f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1414, + Terminal.Constructor(Vector3(5540.988f, 5422.271f, 65.35464f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1415, + Terminal.Constructor(Vector3(5543.514f, 5427.022f, 65.35464f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1873, + SpawnTube.Constructor(Vector3(5527.698f, 5420.151f, 63.50465f), respawn_tube_tower, Vector3(0, 0, 28)), + owning_building_guid = 48 + ) + LocalObject( + 1874, + SpawnTube.Constructor(Vector3(5535.402f, 5434.64f, 63.50465f), respawn_tube_tower, Vector3(0, 0, 28)), + owning_building_guid = 48 + ) + LocalObject( + 1279, + FacilityTurret.Constructor(Vector3(5506.839f, 5430.735f, 92.96465f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1279, 5067) - LocalObject(1281, FacilityTurret.Constructor(Vector3(5549.962f, 5436.587f, 92.96465f), manned_turret), owning_building_guid = 48) + LocalObject( + 1281, + FacilityTurret.Constructor(Vector3(5549.962f, 5436.587f, 92.96465f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1281, 5068) - LocalObject(1721, Painbox.Constructor(Vector3(5525.713f, 5428.071f, 65.52174f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1724, Painbox.Constructor(Vector3(5534.398f, 5419.398f, 64.12264f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1725, Painbox.Constructor(Vector3(5539.892f, 5429.913f, 64.12264f), painbox_radius_continuous), owning_building_guid = 48) + LocalObject( + 1721, + Painbox.Constructor(Vector3(5525.713f, 5428.071f, 65.52174f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1724, + Painbox.Constructor(Vector3(5534.398f, 5419.398f, 64.12264f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1725, + Painbox.Constructor(Vector3(5539.892f, 5429.913f, 64.12264f), painbox_radius_continuous), + owning_building_guid = 48 + ) } Building25() def Building25(): Unit = { // Name: NW_Cyssor_Warpgate_Tower Type: tower_a GUID: 49, MapID: 25 - LocalBuilding("NW_Cyssor_Warpgate_Tower", 49, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5636f, 3622f, 162.7766f), Vector3(0f, 0f, 342f), tower_a))) - LocalObject(1896, CaptureTerminal.Constructor(Vector3(5651.743f, 3616.776f, 172.7756f), secondary_capture), owning_building_guid = 49) + LocalBuilding( + "NW_Cyssor_Warpgate_Tower", + 49, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5636f, 3622f, 162.7766f), Vector3(0f, 0f, 342f), tower_a) + ) + ) + LocalObject( + 1896, + CaptureTerminal.Constructor(Vector3(5651.743f, 3616.776f, 172.7756f), secondary_capture), + owning_building_guid = 49 + ) LocalObject(445, Door.Constructor(Vector3(5644.94f, 3610.683f, 164.2976f)), owning_building_guid = 49) LocalObject(446, Door.Constructor(Vector3(5644.94f, 3610.683f, 184.2966f)), owning_building_guid = 49) LocalObject(447, Door.Constructor(Vector3(5649.885f, 3625.9f, 164.2976f)), owning_building_guid = 49) LocalObject(448, Door.Constructor(Vector3(5649.885f, 3625.9f, 184.2966f)), owning_building_guid = 49) LocalObject(2024, Door.Constructor(Vector3(5643.138f, 3607.898f, 154.1126f)), owning_building_guid = 49) LocalObject(2025, Door.Constructor(Vector3(5648.208f, 3623.505f, 154.1126f)), owning_building_guid = 49) - LocalObject(869, IFFLock.Constructor(Vector3(5646.637f, 3609.28f, 164.2376f), Vector3(0, 0, 198)), owning_building_guid = 49, door_guid = 445) - LocalObject(870, IFFLock.Constructor(Vector3(5646.637f, 3609.28f, 184.2376f), Vector3(0, 0, 198)), owning_building_guid = 49, door_guid = 446) - LocalObject(871, IFFLock.Constructor(Vector3(5648.192f, 3627.303f, 164.2376f), Vector3(0, 0, 18)), owning_building_guid = 49, door_guid = 447) - LocalObject(872, IFFLock.Constructor(Vector3(5648.192f, 3627.303f, 184.2376f), Vector3(0, 0, 18)), owning_building_guid = 49, door_guid = 448) + LocalObject( + 869, + IFFLock.Constructor(Vector3(5646.637f, 3609.28f, 164.2376f), Vector3(0, 0, 198)), + owning_building_guid = 49, + door_guid = 445 + ) + LocalObject( + 870, + IFFLock.Constructor(Vector3(5646.637f, 3609.28f, 184.2376f), Vector3(0, 0, 198)), + owning_building_guid = 49, + door_guid = 446 + ) + LocalObject( + 871, + IFFLock.Constructor(Vector3(5648.192f, 3627.303f, 164.2376f), Vector3(0, 0, 18)), + owning_building_guid = 49, + door_guid = 447 + ) + LocalObject( + 872, + IFFLock.Constructor(Vector3(5648.192f, 3627.303f, 184.2376f), Vector3(0, 0, 18)), + owning_building_guid = 49, + door_guid = 448 + ) LocalObject(1160, Locker.Constructor(Vector3(5646.3f, 3602.843f, 152.7706f)), owning_building_guid = 49) LocalObject(1161, Locker.Constructor(Vector3(5647.572f, 3602.429f, 152.7706f)), owning_building_guid = 49) LocalObject(1162, Locker.Constructor(Vector3(5650.128f, 3601.599f, 152.7706f)), owning_building_guid = 49) @@ -1629,25 +4725,76 @@ object Map01 { // Solsar LocalObject(1165, Locker.Constructor(Vector3(5654.364f, 3623.22f, 152.7706f)), owning_building_guid = 49) LocalObject(1166, Locker.Constructor(Vector3(5656.887f, 3622.4f, 152.7706f)), owning_building_guid = 49) LocalObject(1167, Locker.Constructor(Vector3(5658.22f, 3621.967f, 152.7706f)), owning_building_guid = 49) - LocalObject(1416, Terminal.Constructor(Vector3(5653.345f, 3605.985f, 154.1086f), order_terminal), owning_building_guid = 49) - LocalObject(1417, Terminal.Constructor(Vector3(5655.114f, 3611.429f, 154.1086f), order_terminal), owning_building_guid = 49) - LocalObject(1418, Terminal.Constructor(Vector3(5656.777f, 3616.547f, 154.1086f), order_terminal), owning_building_guid = 49) - LocalObject(1875, SpawnTube.Constructor(Vector3(5642.394f, 3607.034f, 152.2586f), respawn_tube_tower, Vector3(0, 0, 18)), owning_building_guid = 49) - LocalObject(1876, SpawnTube.Constructor(Vector3(5647.465f, 3622.64f, 152.2586f), respawn_tube_tower, Vector3(0, 0, 18)), owning_building_guid = 49) - LocalObject(1282, FacilityTurret.Constructor(Vector3(5620.015f, 3613.835f, 181.7186f), manned_turret), owning_building_guid = 49) + LocalObject( + 1416, + Terminal.Constructor(Vector3(5653.345f, 3605.985f, 154.1086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1417, + Terminal.Constructor(Vector3(5655.114f, 3611.429f, 154.1086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1418, + Terminal.Constructor(Vector3(5656.777f, 3616.547f, 154.1086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1875, + SpawnTube.Constructor(Vector3(5642.394f, 3607.034f, 152.2586f), respawn_tube_tower, Vector3(0, 0, 18)), + owning_building_guid = 49 + ) + LocalObject( + 1876, + SpawnTube.Constructor(Vector3(5647.465f, 3622.64f, 152.2586f), respawn_tube_tower, Vector3(0, 0, 18)), + owning_building_guid = 49 + ) + LocalObject( + 1282, + FacilityTurret.Constructor(Vector3(5620.015f, 3613.835f, 181.7186f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1282, 5069) - LocalObject(1283, FacilityTurret.Constructor(Vector3(5661.465f, 3627.087f, 181.7186f), manned_turret), owning_building_guid = 49) + LocalObject( + 1283, + FacilityTurret.Constructor(Vector3(5661.465f, 3627.087f, 181.7186f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1283, 5070) - LocalObject(1726, Painbox.Constructor(Vector3(5639.064f, 3614.489f, 154.2757f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1727, Painbox.Constructor(Vector3(5649.123f, 3607.456f, 152.8766f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1728, Painbox.Constructor(Vector3(5652.707f, 3618.765f, 152.8766f), painbox_radius_continuous), owning_building_guid = 49) + LocalObject( + 1726, + Painbox.Constructor(Vector3(5639.064f, 3614.489f, 154.2757f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1727, + Painbox.Constructor(Vector3(5649.123f, 3607.456f, 152.8766f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1728, + Painbox.Constructor(Vector3(5652.707f, 3618.765f, 152.8766f), painbox_radius_continuous), + owning_building_guid = 49 + ) } Building22() def Building22(): Unit = { // Name: S_Sobek_Tower Type: tower_b GUID: 50, MapID: 22 - LocalBuilding("S_Sobek_Tower", 50, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3162f, 2856f, 70.09491f), Vector3(0f, 0f, 51f), tower_b))) - LocalObject(1881, CaptureTerminal.Constructor(Vector3(3172.519f, 2868.826f, 90.09391f), secondary_capture), owning_building_guid = 50) + LocalBuilding( + "S_Sobek_Tower", + 50, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3162f, 2856f, 70.09491f), Vector3(0f, 0f, 51f), tower_b) + ) + ) + LocalObject( + 1881, + CaptureTerminal.Constructor(Vector3(3172.519f, 2868.826f, 90.09391f), secondary_capture), + owning_building_guid = 50 + ) LocalObject(258, Door.Constructor(Vector3(3163.335f, 2870.36f, 71.61491f)), owning_building_guid = 50) LocalObject(259, Door.Constructor(Vector3(3163.335f, 2870.36f, 81.61491f)), owning_building_guid = 50) LocalObject(260, Door.Constructor(Vector3(3163.335f, 2870.36f, 101.6149f)), owning_building_guid = 50) @@ -1656,12 +4803,42 @@ object Map01 { // Solsar LocalObject(263, Door.Constructor(Vector3(3175.769f, 2860.291f, 101.6149f)), owning_building_guid = 50) LocalObject(1970, Door.Constructor(Vector3(3164.971f, 2867.938f, 61.43091f)), owning_building_guid = 50) LocalObject(1971, Door.Constructor(Vector3(3177.724f, 2857.611f, 61.43091f)), owning_building_guid = 50) - LocalObject(724, IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 71.55591f), Vector3(0, 0, 309)), owning_building_guid = 50, door_guid = 258) - LocalObject(725, IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 81.55591f), Vector3(0, 0, 309)), owning_building_guid = 50, door_guid = 259) - LocalObject(726, IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 101.5559f), Vector3(0, 0, 309)), owning_building_guid = 50, door_guid = 260) - LocalObject(729, IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 71.55591f), Vector3(0, 0, 129)), owning_building_guid = 50, door_guid = 261) - LocalObject(730, IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 81.55591f), Vector3(0, 0, 129)), owning_building_guid = 50, door_guid = 262) - LocalObject(731, IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 101.5559f), Vector3(0, 0, 129)), owning_building_guid = 50, door_guid = 263) + LocalObject( + 724, + IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 71.55591f), Vector3(0, 0, 309)), + owning_building_guid = 50, + door_guid = 258 + ) + LocalObject( + 725, + IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 81.55591f), Vector3(0, 0, 309)), + owning_building_guid = 50, + door_guid = 259 + ) + LocalObject( + 726, + IFFLock.Constructor(Vector3(3161.419f, 2869.283f, 101.5559f), Vector3(0, 0, 309)), + owning_building_guid = 50, + door_guid = 260 + ) + LocalObject( + 729, + IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 71.55591f), Vector3(0, 0, 129)), + owning_building_guid = 50, + door_guid = 261 + ) + LocalObject( + 730, + IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 81.55591f), Vector3(0, 0, 129)), + owning_building_guid = 50, + door_guid = 262 + ) + LocalObject( + 731, + IFFLock.Constructor(Vector3(3177.688f, 2861.372f, 101.5559f), Vector3(0, 0, 129)), + owning_building_guid = 50, + door_guid = 263 + ) LocalObject(913, Locker.Constructor(Vector3(3166.601f, 2872.542f, 60.08891f)), owning_building_guid = 50) LocalObject(914, Locker.Constructor(Vector3(3167.442f, 2873.581f, 60.08891f)), owning_building_guid = 50) LocalObject(915, Locker.Constructor(Vector3(3169.112f, 2875.643f, 60.08891f)), owning_building_guid = 50) @@ -1670,21 +4847,64 @@ object Map01 { // Solsar LocalObject(922, Locker.Constructor(Vector3(3184.418f, 2859.79f, 60.08891f)), owning_building_guid = 50) LocalObject(923, Locker.Constructor(Vector3(3186.109f, 2861.879f, 60.08891f)), owning_building_guid = 50) LocalObject(924, Locker.Constructor(Vector3(3186.992f, 2862.968f, 60.08891f)), owning_building_guid = 50) - LocalObject(1332, Terminal.Constructor(Vector3(3174.537f, 2873.443f, 61.42691f), order_terminal), owning_building_guid = 50) - LocalObject(1333, Terminal.Constructor(Vector3(3178.719f, 2870.057f, 61.42691f), order_terminal), owning_building_guid = 50) - LocalObject(1334, Terminal.Constructor(Vector3(3183.168f, 2866.455f, 61.42691f), order_terminal), owning_building_guid = 50) - LocalObject(1821, SpawnTube.Constructor(Vector3(3165.511f, 2866.933f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 309)), owning_building_guid = 50) - LocalObject(1822, SpawnTube.Constructor(Vector3(3178.264f, 2856.606f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 309)), owning_building_guid = 50) - LocalObject(1681, Painbox.Constructor(Vector3(3171.014f, 2855.769f, 61.38431f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1682, Painbox.Constructor(Vector3(3171.224f, 2870.739f, 60.19491f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1683, Painbox.Constructor(Vector3(3180.489f, 2863.066f, 60.19491f), painbox_radius_continuous), owning_building_guid = 50) + LocalObject( + 1332, + Terminal.Constructor(Vector3(3174.537f, 2873.443f, 61.42691f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1333, + Terminal.Constructor(Vector3(3178.719f, 2870.057f, 61.42691f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1334, + Terminal.Constructor(Vector3(3183.168f, 2866.455f, 61.42691f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1821, + SpawnTube.Constructor(Vector3(3165.511f, 2866.933f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 309)), + owning_building_guid = 50 + ) + LocalObject( + 1822, + SpawnTube.Constructor(Vector3(3178.264f, 2856.606f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 309)), + owning_building_guid = 50 + ) + LocalObject( + 1681, + Painbox.Constructor(Vector3(3171.014f, 2855.769f, 61.38431f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1682, + Painbox.Constructor(Vector3(3171.224f, 2870.739f, 60.19491f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1683, + Painbox.Constructor(Vector3(3180.489f, 2863.066f, 60.19491f), painbox_radius_continuous), + owning_building_guid = 50 + ) } Building37() def Building37(): Unit = { // Name: N_Aton_Tower Type: tower_b GUID: 51, MapID: 37 - LocalBuilding("N_Aton_Tower", 51, 37, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3708f, 5656f, 81.34708f), Vector3(0f, 0f, 302f), tower_b))) - LocalObject(1884, CaptureTerminal.Constructor(Vector3(3716.702f, 5641.879f, 101.3461f), secondary_capture), owning_building_guid = 51) + LocalBuilding( + "N_Aton_Tower", + 51, + 37, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3708f, 5656f, 81.34708f), Vector3(0f, 0f, 302f), tower_b) + ) + ) + LocalObject( + 1884, + CaptureTerminal.Constructor(Vector3(3716.702f, 5641.879f, 101.3461f), secondary_capture), + owning_building_guid = 51 + ) LocalObject(297, Door.Constructor(Vector3(3707.575f, 5641.584f, 82.86708f)), owning_building_guid = 51) LocalObject(298, Door.Constructor(Vector3(3707.575f, 5641.584f, 92.86708f)), owning_building_guid = 51) LocalObject(299, Door.Constructor(Vector3(3707.575f, 5641.584f, 112.8671f)), owning_building_guid = 51) @@ -1693,12 +4913,42 @@ object Map01 { // Solsar LocalObject(304, Door.Constructor(Vector3(3721.143f, 5650.063f, 112.8671f)), owning_building_guid = 51) LocalObject(1981, Door.Constructor(Vector3(3704.404f, 5640.608f, 72.68308f)), owning_building_guid = 51) LocalObject(1983, Door.Constructor(Vector3(3718.32f, 5649.305f, 72.68308f)), owning_building_guid = 51) - LocalObject(755, IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 82.80808f), Vector3(0, 0, 238)), owning_building_guid = 51, door_guid = 297) - LocalObject(756, IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 92.80808f), Vector3(0, 0, 238)), owning_building_guid = 51, door_guid = 298) - LocalObject(757, IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 112.8081f), Vector3(0, 0, 238)), owning_building_guid = 51, door_guid = 299) - LocalObject(760, IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 82.80808f), Vector3(0, 0, 58)), owning_building_guid = 51, door_guid = 302) - LocalObject(761, IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 92.80808f), Vector3(0, 0, 58)), owning_building_guid = 51, door_guid = 303) - LocalObject(762, IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 112.8081f), Vector3(0, 0, 58)), owning_building_guid = 51, door_guid = 304) + LocalObject( + 755, + IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 82.80808f), Vector3(0, 0, 238)), + owning_building_guid = 51, + door_guid = 297 + ) + LocalObject( + 756, + IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 92.80808f), Vector3(0, 0, 238)), + owning_building_guid = 51, + door_guid = 298 + ) + LocalObject( + 757, + IFFLock.Constructor(Vector3(3707.972f, 5639.418f, 112.8081f), Vector3(0, 0, 238)), + owning_building_guid = 51, + door_guid = 299 + ) + LocalObject( + 760, + IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 82.80808f), Vector3(0, 0, 58)), + owning_building_guid = 51, + door_guid = 302 + ) + LocalObject( + 761, + IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 92.80808f), Vector3(0, 0, 58)), + owning_building_guid = 51, + door_guid = 303 + ) + LocalObject( + 762, + IFFLock.Constructor(Vector3(3720.749f, 5652.225f, 112.8081f), Vector3(0, 0, 58)), + owning_building_guid = 51, + door_guid = 304 + ) LocalObject(963, Locker.Constructor(Vector3(3703.576f, 5634.704f, 71.34109f)), owning_building_guid = 51) LocalObject(964, Locker.Constructor(Vector3(3704.285f, 5633.57f, 71.34109f)), owning_building_guid = 51) LocalObject(965, Locker.Constructor(Vector3(3705.709f, 5631.291f, 71.34109f)), owning_building_guid = 51) @@ -1707,21 +4957,64 @@ object Map01 { // Solsar LocalObject(974, Locker.Constructor(Vector3(3722.852f, 5645.13f, 71.34109f)), owning_building_guid = 51) LocalObject(975, Locker.Constructor(Vector3(3724.258f, 5642.881f, 71.34109f)), owning_building_guid = 51) LocalObject(976, Locker.Constructor(Vector3(3725f, 5641.692f, 71.34109f)), owning_building_guid = 51) - LocalObject(1351, Terminal.Constructor(Vector3(3710.994f, 5632.582f, 72.67908f), order_terminal), owning_building_guid = 51) - LocalObject(1352, Terminal.Constructor(Vector3(3715.848f, 5635.615f, 72.67908f), order_terminal), owning_building_guid = 51) - LocalObject(1353, Terminal.Constructor(Vector3(3720.411f, 5638.467f, 72.67908f), order_terminal), owning_building_guid = 51) - LocalObject(1832, SpawnTube.Constructor(Vector3(3703.278f, 5640.425f, 70.82909f), respawn_tube_tower, Vector3(0, 0, 58)), owning_building_guid = 51) - LocalObject(1834, SpawnTube.Constructor(Vector3(3717.194f, 5649.121f, 70.82909f), respawn_tube_tower, Vector3(0, 0, 58)), owning_building_guid = 51) - LocalObject(1690, Painbox.Constructor(Vector3(3704.846f, 5647.552f, 72.63648f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1691, Painbox.Constructor(Vector3(3708.662f, 5636.217f, 71.44708f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1692, Painbox.Constructor(Vector3(3718.933f, 5642.479f, 71.44708f), painbox_radius_continuous), owning_building_guid = 51) + LocalObject( + 1351, + Terminal.Constructor(Vector3(3710.994f, 5632.582f, 72.67908f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1352, + Terminal.Constructor(Vector3(3715.848f, 5635.615f, 72.67908f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1353, + Terminal.Constructor(Vector3(3720.411f, 5638.467f, 72.67908f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1832, + SpawnTube.Constructor(Vector3(3703.278f, 5640.425f, 70.82909f), respawn_tube_tower, Vector3(0, 0, 58)), + owning_building_guid = 51 + ) + LocalObject( + 1834, + SpawnTube.Constructor(Vector3(3717.194f, 5649.121f, 70.82909f), respawn_tube_tower, Vector3(0, 0, 58)), + owning_building_guid = 51 + ) + LocalObject( + 1690, + Painbox.Constructor(Vector3(3704.846f, 5647.552f, 72.63648f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1691, + Painbox.Constructor(Vector3(3708.662f, 5636.217f, 71.44708f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1692, + Painbox.Constructor(Vector3(3718.933f, 5642.479f, 71.44708f), painbox_radius_continuous), + owning_building_guid = 51 + ) } Building41() def Building41(): Unit = { // Name: E_Hossin_Warpgate_Tower Type: tower_b GUID: 52, MapID: 41 - LocalBuilding("E_Hossin_Warpgate_Tower", 52, 41, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4484f, 7294f, 61.76336f), Vector3(0f, 0f, 337f), tower_b))) - LocalObject(1889, CaptureTerminal.Constructor(Vector3(4499.228f, 7287.424f, 81.76236f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "E_Hossin_Warpgate_Tower", + 52, + 41, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4484f, 7294f, 61.76336f), Vector3(0f, 0f, 337f), tower_b) + ) + ) + LocalObject( + 1889, + CaptureTerminal.Constructor(Vector3(4499.228f, 7287.424f, 81.76236f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(365, Door.Constructor(Vector3(4491.92f, 7281.947f, 63.28336f)), owning_building_guid = 52) LocalObject(366, Door.Constructor(Vector3(4491.92f, 7281.947f, 73.28336f)), owning_building_guid = 52) LocalObject(367, Door.Constructor(Vector3(4491.92f, 7281.947f, 93.28336f)), owning_building_guid = 52) @@ -1730,12 +5023,42 @@ object Map01 { // Solsar LocalObject(371, Door.Constructor(Vector3(4498.172f, 7296.675f, 93.28336f)), owning_building_guid = 52) LocalObject(2001, Door.Constructor(Vector3(4489.882f, 7279.329f, 53.09936f)), owning_building_guid = 52) LocalObject(2002, Door.Constructor(Vector3(4496.294f, 7294.435f, 53.09936f)), owning_building_guid = 52) - LocalObject(809, IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 63.22436f), Vector3(0, 0, 203)), owning_building_guid = 52, door_guid = 365) - LocalObject(810, IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 73.22436f), Vector3(0, 0, 203)), owning_building_guid = 52, door_guid = 366) - LocalObject(811, IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 93.22436f), Vector3(0, 0, 203)), owning_building_guid = 52, door_guid = 367) - LocalObject(812, IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 63.22436f), Vector3(0, 0, 23)), owning_building_guid = 52, door_guid = 369) - LocalObject(813, IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 73.22436f), Vector3(0, 0, 23)), owning_building_guid = 52, door_guid = 370) - LocalObject(814, IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 93.22436f), Vector3(0, 0, 23)), owning_building_guid = 52, door_guid = 371) + LocalObject( + 809, + IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 63.22436f), Vector3(0, 0, 203)), + owning_building_guid = 52, + door_guid = 365 + ) + LocalObject( + 810, + IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 73.22436f), Vector3(0, 0, 203)), + owning_building_guid = 52, + door_guid = 366 + ) + LocalObject( + 811, + IFFLock.Constructor(Vector3(4493.488f, 7280.401f, 93.22436f), Vector3(0, 0, 203)), + owning_building_guid = 52, + door_guid = 367 + ) + LocalObject( + 812, + IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 63.22436f), Vector3(0, 0, 23)), + owning_building_guid = 52, + door_guid = 369 + ) + LocalObject( + 813, + IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 73.22436f), Vector3(0, 0, 23)), + owning_building_guid = 52, + door_guid = 370 + ) + LocalObject( + 814, + IFFLock.Constructor(Vector3(4496.608f, 7298.22f, 93.22436f), Vector3(0, 0, 23)), + owning_building_guid = 52, + door_guid = 371 + ) LocalObject(1059, Locker.Constructor(Vector3(4492.591f, 7274.018f, 51.75736f)), owning_building_guid = 52) LocalObject(1060, Locker.Constructor(Vector3(4493.822f, 7273.495f, 51.75736f)), owning_building_guid = 52) LocalObject(1061, Locker.Constructor(Vector3(4496.296f, 7272.445f, 51.75736f)), owning_building_guid = 52) @@ -1744,21 +5067,64 @@ object Map01 { // Solsar LocalObject(1064, Locker.Constructor(Vector3(4502.4f, 7293.615f, 51.75736f)), owning_building_guid = 52) LocalObject(1065, Locker.Constructor(Vector3(4504.842f, 7292.578f, 51.75736f)), owning_building_guid = 52) LocalObject(1066, Locker.Constructor(Vector3(4506.133f, 7292.03f, 51.75736f)), owning_building_guid = 52) - LocalObject(1381, Terminal.Constructor(Vector3(4499.884f, 7276.534f, 53.09536f), order_terminal), owning_building_guid = 52) - LocalObject(1382, Terminal.Constructor(Vector3(4502.121f, 7281.803f, 53.09536f), order_terminal), owning_building_guid = 52) - LocalObject(1383, Terminal.Constructor(Vector3(4504.223f, 7286.756f, 53.09536f), order_terminal), owning_building_guid = 52) - LocalObject(1852, SpawnTube.Constructor(Vector3(4489.065f, 7278.533f, 51.24536f), respawn_tube_tower, Vector3(0, 0, 23)), owning_building_guid = 52) - LocalObject(1853, SpawnTube.Constructor(Vector3(4495.477f, 7293.639f, 51.24536f), respawn_tube_tower, Vector3(0, 0, 23)), owning_building_guid = 52) - LocalObject(1705, Painbox.Constructor(Vector3(4486.262f, 7285.271f, 53.05276f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1706, Painbox.Constructor(Vector3(4495.889f, 7278.175f, 51.86336f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1708, Painbox.Constructor(Vector3(4500.71f, 7289.195f, 51.86336f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 1381, + Terminal.Constructor(Vector3(4499.884f, 7276.534f, 53.09536f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1382, + Terminal.Constructor(Vector3(4502.121f, 7281.803f, 53.09536f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1383, + Terminal.Constructor(Vector3(4504.223f, 7286.756f, 53.09536f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1852, + SpawnTube.Constructor(Vector3(4489.065f, 7278.533f, 51.24536f), respawn_tube_tower, Vector3(0, 0, 23)), + owning_building_guid = 52 + ) + LocalObject( + 1853, + SpawnTube.Constructor(Vector3(4495.477f, 7293.639f, 51.24536f), respawn_tube_tower, Vector3(0, 0, 23)), + owning_building_guid = 52 + ) + LocalObject( + 1705, + Painbox.Constructor(Vector3(4486.262f, 7285.271f, 53.05276f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1706, + Painbox.Constructor(Vector3(4495.889f, 7278.175f, 51.86336f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1708, + Painbox.Constructor(Vector3(4500.71f, 7289.195f, 51.86336f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building18() def Building18(): Unit = { // Name: N_Hapi_Tower Type: tower_b GUID: 53, MapID: 18 - LocalBuilding("N_Hapi_Tower", 53, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4494f, 4884f, 74.691f), Vector3(0f, 0f, 5f), tower_b))) - LocalObject(1890, CaptureTerminal.Constructor(Vector3(4510.533f, 4885.343f, 94.69f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "N_Hapi_Tower", + 53, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4494f, 4884f, 74.691f), Vector3(0f, 0f, 5f), tower_b) + ) + ) + LocalObject( + 1890, + CaptureTerminal.Constructor(Vector3(4510.533f, 4885.343f, 94.69f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(378, Door.Constructor(Vector3(4505.257f, 4893.016f, 76.211f)), owning_building_guid = 53) LocalObject(379, Door.Constructor(Vector3(4505.257f, 4893.016f, 86.211f)), owning_building_guid = 53) LocalObject(380, Door.Constructor(Vector3(4505.257f, 4893.016f, 106.211f)), owning_building_guid = 53) @@ -1767,12 +5133,42 @@ object Map01 { // Solsar LocalObject(383, Door.Constructor(Vector3(4506.651f, 4877.076f, 106.211f)), owning_building_guid = 53) LocalObject(2003, Door.Constructor(Vector3(4504.651f, 4890.156f, 66.027f)), owning_building_guid = 53) LocalObject(2004, Door.Constructor(Vector3(4506.081f, 4873.808f, 66.027f)), owning_building_guid = 53) - LocalObject(815, IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 76.152f), Vector3(0, 0, 355)), owning_building_guid = 53, door_guid = 378) - LocalObject(816, IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 86.152f), Vector3(0, 0, 355)), owning_building_guid = 53, door_guid = 379) - LocalObject(817, IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 106.152f), Vector3(0, 0, 355)), owning_building_guid = 53, door_guid = 380) - LocalObject(821, IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 76.152f), Vector3(0, 0, 175)), owning_building_guid = 53, door_guid = 381) - LocalObject(822, IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 86.152f), Vector3(0, 0, 175)), owning_building_guid = 53, door_guid = 382) - LocalObject(823, IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 106.152f), Vector3(0, 0, 175)), owning_building_guid = 53, door_guid = 383) + LocalObject( + 815, + IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 76.152f), Vector3(0, 0, 355)), + owning_building_guid = 53, + door_guid = 378 + ) + LocalObject( + 816, + IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 86.152f), Vector3(0, 0, 355)), + owning_building_guid = 53, + door_guid = 379 + ) + LocalObject( + 817, + IFFLock.Constructor(Vector3(4503.151f, 4893.646f, 106.152f), Vector3(0, 0, 355)), + owning_building_guid = 53, + door_guid = 380 + ) + LocalObject( + 821, + IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 76.152f), Vector3(0, 0, 175)), + owning_building_guid = 53, + door_guid = 381 + ) + LocalObject( + 822, + IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 86.152f), Vector3(0, 0, 175)), + owning_building_guid = 53, + door_guid = 382 + ) + LocalObject( + 823, + IFFLock.Constructor(Vector3(4508.762f, 4876.447f, 106.152f), Vector3(0, 0, 175)), + owning_building_guid = 53, + door_guid = 383 + ) LocalObject(1067, Locker.Constructor(Vector3(4509.095f, 4892.182f, 64.68501f)), owning_building_guid = 53) LocalObject(1068, Locker.Constructor(Vector3(4510.427f, 4892.298f, 64.68501f)), owning_building_guid = 53) LocalObject(1069, Locker.Constructor(Vector3(4510.967f, 4870.39f, 64.68501f)), owning_building_guid = 53) @@ -1781,21 +5177,64 @@ object Map01 { // Solsar LocalObject(1073, Locker.Constructor(Vector3(4514.467f, 4892.652f, 64.68501f)), owning_building_guid = 53) LocalObject(1074, Locker.Constructor(Vector3(4514.977f, 4870.741f, 64.68501f)), owning_building_guid = 53) LocalObject(1076, Locker.Constructor(Vector3(4516.373f, 4870.863f, 64.68501f)), owning_building_guid = 53) - LocalObject(1384, Terminal.Constructor(Vector3(4515.257f, 4887.099f, 66.023f), order_terminal), owning_building_guid = 53) - LocalObject(1385, Terminal.Constructor(Vector3(4515.726f, 4881.738f, 66.023f), order_terminal), owning_building_guid = 53) - LocalObject(1386, Terminal.Constructor(Vector3(4516.225f, 4876.036f, 66.023f), order_terminal), owning_building_guid = 53) - LocalObject(1854, SpawnTube.Constructor(Vector3(4504.303f, 4889.069f, 64.173f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 53) - LocalObject(1855, SpawnTube.Constructor(Vector3(4505.733f, 4872.722f, 64.173f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 53) - LocalObject(1707, Painbox.Constructor(Vector3(4500.095f, 4877.355f, 65.9804f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1710, Painbox.Constructor(Vector3(4511.01f, 4887.603f, 64.791f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1711, Painbox.Constructor(Vector3(4511.927f, 4875.608f, 64.791f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 1384, + Terminal.Constructor(Vector3(4515.257f, 4887.099f, 66.023f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1385, + Terminal.Constructor(Vector3(4515.726f, 4881.738f, 66.023f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1386, + Terminal.Constructor(Vector3(4516.225f, 4876.036f, 66.023f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1854, + SpawnTube.Constructor(Vector3(4504.303f, 4889.069f, 64.173f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 53 + ) + LocalObject( + 1855, + SpawnTube.Constructor(Vector3(4505.733f, 4872.722f, 64.173f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 53 + ) + LocalObject( + 1707, + Painbox.Constructor(Vector3(4500.095f, 4877.355f, 65.9804f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1710, + Painbox.Constructor(Vector3(4511.01f, 4887.603f, 64.791f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1711, + Painbox.Constructor(Vector3(4511.927f, 4875.608f, 64.791f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building15() def Building15(): Unit = { // Name: S_Amun_Tower Type: tower_b GUID: 54, MapID: 15 - LocalBuilding("S_Amun_Tower", 54, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4500f, 1912f, 76.47633f), Vector3(0f, 0f, 12f), tower_b))) - LocalObject(1891, CaptureTerminal.Constructor(Vector3(4516.246f, 1915.348f, 96.47533f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "S_Amun_Tower", + 54, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4500f, 1912f, 76.47633f), Vector3(0f, 0f, 12f), tower_b) + ) + ) + LocalObject( + 1891, + CaptureTerminal.Constructor(Vector3(4516.246f, 1915.348f, 96.47533f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(384, Door.Constructor(Vector3(4510.075f, 1922.32f, 77.99633f)), owning_building_guid = 54) LocalObject(385, Door.Constructor(Vector3(4510.075f, 1922.32f, 87.99634f)), owning_building_guid = 54) LocalObject(386, Door.Constructor(Vector3(4510.075f, 1922.32f, 107.9963f)), owning_building_guid = 54) @@ -1804,12 +5243,42 @@ object Map01 { // Solsar LocalObject(390, Door.Constructor(Vector3(4513.401f, 1906.67f, 107.9963f)), owning_building_guid = 54) LocalObject(2005, Door.Constructor(Vector3(4509.821f, 1919.408f, 67.81233f)), owning_building_guid = 54) LocalObject(2006, Door.Constructor(Vector3(4513.233f, 1903.356f, 67.81233f)), owning_building_guid = 54) - LocalObject(818, IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 77.93733f), Vector3(0, 0, 348)), owning_building_guid = 54, door_guid = 384) - LocalObject(819, IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 87.93733f), Vector3(0, 0, 348)), owning_building_guid = 54, door_guid = 385) - LocalObject(820, IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 107.9373f), Vector3(0, 0, 348)), owning_building_guid = 54, door_guid = 386) - LocalObject(825, IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 77.93733f), Vector3(0, 0, 168)), owning_building_guid = 54, door_guid = 388) - LocalObject(826, IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 87.93733f), Vector3(0, 0, 168)), owning_building_guid = 54, door_guid = 389) - LocalObject(827, IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 107.9373f), Vector3(0, 0, 168)), owning_building_guid = 54, door_guid = 390) + LocalObject( + 818, + IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 77.93733f), Vector3(0, 0, 348)), + owning_building_guid = 54, + door_guid = 384 + ) + LocalObject( + 819, + IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 87.93733f), Vector3(0, 0, 348)), + owning_building_guid = 54, + door_guid = 385 + ) + LocalObject( + 820, + IFFLock.Constructor(Vector3(4507.908f, 1922.689f, 107.9373f), Vector3(0, 0, 348)), + owning_building_guid = 54, + door_guid = 386 + ) + LocalObject( + 825, + IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 77.93733f), Vector3(0, 0, 168)), + owning_building_guid = 54, + door_guid = 388 + ) + LocalObject( + 826, + IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 87.93733f), Vector3(0, 0, 168)), + owning_building_guid = 54, + door_guid = 389 + ) + LocalObject( + 827, + IFFLock.Constructor(Vector3(4515.572f, 1906.302f, 107.9373f), Vector3(0, 0, 168)), + owning_building_guid = 54, + door_guid = 390 + ) LocalObject(1072, Locker.Constructor(Vector3(4513.986f, 1921.96f, 66.47034f)), owning_building_guid = 54) LocalObject(1075, Locker.Constructor(Vector3(4515.293f, 1922.238f, 66.47034f)), owning_building_guid = 54) LocalObject(1077, Locker.Constructor(Vector3(4517.889f, 1922.79f, 66.47034f)), owning_building_guid = 54) @@ -1818,31 +5287,94 @@ object Map01 { // Solsar LocalObject(1084, Locker.Constructor(Vector3(4519.807f, 1900.837f, 66.47034f)), owning_building_guid = 54) LocalObject(1085, Locker.Constructor(Vector3(4522.436f, 1901.396f, 66.47034f)), owning_building_guid = 54) LocalObject(1086, Locker.Constructor(Vector3(4523.807f, 1901.688f, 66.47034f)), owning_building_guid = 54) - LocalObject(1387, Terminal.Constructor(Vector3(4520.721f, 1917.666f, 67.80833f), order_terminal), owning_building_guid = 54) - LocalObject(1388, Terminal.Constructor(Vector3(4521.839f, 1912.402f, 67.80833f), order_terminal), owning_building_guid = 54) - LocalObject(1389, Terminal.Constructor(Vector3(4523.03f, 1906.804f, 67.80833f), order_terminal), owning_building_guid = 54) - LocalObject(1856, SpawnTube.Constructor(Vector3(4509.609f, 1918.287f, 65.95834f), respawn_tube_tower, Vector3(0, 0, 348)), owning_building_guid = 54) - LocalObject(1857, SpawnTube.Constructor(Vector3(4513.021f, 1902.236f, 65.95834f), respawn_tube_tower, Vector3(0, 0, 348)), owning_building_guid = 54) - LocalObject(1709, Painbox.Constructor(Vector3(4506.859f, 1906.147f, 67.76573f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1712, Painbox.Constructor(Vector3(4516.444f, 1917.649f, 66.57633f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1713, Painbox.Constructor(Vector3(4518.816f, 1905.856f, 66.57633f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 1387, + Terminal.Constructor(Vector3(4520.721f, 1917.666f, 67.80833f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1388, + Terminal.Constructor(Vector3(4521.839f, 1912.402f, 67.80833f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1389, + Terminal.Constructor(Vector3(4523.03f, 1906.804f, 67.80833f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1856, + SpawnTube.Constructor(Vector3(4509.609f, 1918.287f, 65.95834f), respawn_tube_tower, Vector3(0, 0, 348)), + owning_building_guid = 54 + ) + LocalObject( + 1857, + SpawnTube.Constructor(Vector3(4513.021f, 1902.236f, 65.95834f), respawn_tube_tower, Vector3(0, 0, 348)), + owning_building_guid = 54 + ) + LocalObject( + 1709, + Painbox.Constructor(Vector3(4506.859f, 1906.147f, 67.76573f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1712, + Painbox.Constructor(Vector3(4516.444f, 1917.649f, 66.57633f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1713, + Painbox.Constructor(Vector3(4518.816f, 1905.856f, 66.57633f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building39() def Building39(): Unit = { // Name: E_Forseral_Warpgate_Tower Type: tower_c GUID: 55, MapID: 39 - LocalBuilding("E_Forseral_Warpgate_Tower", 55, 39, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2826f, 5330f, 175.1091f), Vector3(0f, 0f, 346f), tower_c))) - LocalObject(1878, CaptureTerminal.Constructor(Vector3(2842.069f, 5325.887f, 185.1081f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "E_Forseral_Warpgate_Tower", + 55, + 39, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2826f, 5330f, 175.1091f), Vector3(0f, 0f, 346f), tower_c) + ) + ) + LocalObject( + 1878, + CaptureTerminal.Constructor(Vector3(2842.069f, 5325.887f, 185.1081f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(226, Door.Constructor(Vector3(2835.708f, 5319.334f, 176.6301f)), owning_building_guid = 55) LocalObject(227, Door.Constructor(Vector3(2835.708f, 5319.334f, 196.6291f)), owning_building_guid = 55) LocalObject(228, Door.Constructor(Vector3(2839.579f, 5334.859f, 176.6301f)), owning_building_guid = 55) LocalObject(229, Door.Constructor(Vector3(2839.579f, 5334.859f, 196.6291f)), owning_building_guid = 55) LocalObject(1961, Door.Constructor(Vector3(2834.104f, 5316.43f, 166.4451f)), owning_building_guid = 55) LocalObject(1962, Door.Constructor(Vector3(2838.074f, 5332.353f, 166.4451f)), owning_building_guid = 55) - LocalObject(700, IFFLock.Constructor(Vector3(2837.498f, 5318.052f, 176.5701f), Vector3(0, 0, 194)), owning_building_guid = 55, door_guid = 226) - LocalObject(701, IFFLock.Constructor(Vector3(2837.498f, 5318.052f, 196.5701f), Vector3(0, 0, 194)), owning_building_guid = 55, door_guid = 227) - LocalObject(702, IFFLock.Constructor(Vector3(2837.793f, 5336.141f, 176.5701f), Vector3(0, 0, 14)), owning_building_guid = 55, door_guid = 228) - LocalObject(703, IFFLock.Constructor(Vector3(2837.793f, 5336.141f, 196.5701f), Vector3(0, 0, 14)), owning_building_guid = 55, door_guid = 229) + LocalObject( + 700, + IFFLock.Constructor(Vector3(2837.498f, 5318.052f, 176.5701f), Vector3(0, 0, 194)), + owning_building_guid = 55, + door_guid = 226 + ) + LocalObject( + 701, + IFFLock.Constructor(Vector3(2837.498f, 5318.052f, 196.5701f), Vector3(0, 0, 194)), + owning_building_guid = 55, + door_guid = 227 + ) + LocalObject( + 702, + IFFLock.Constructor(Vector3(2837.793f, 5336.141f, 176.5701f), Vector3(0, 0, 14)), + owning_building_guid = 55, + door_guid = 228 + ) + LocalObject( + 703, + IFFLock.Constructor(Vector3(2837.793f, 5336.141f, 196.5701f), Vector3(0, 0, 14)), + owning_building_guid = 55, + door_guid = 229 + ) LocalObject(881, Locker.Constructor(Vector3(2837.611f, 5311.607f, 165.1031f)), owning_building_guid = 55) LocalObject(882, Locker.Constructor(Vector3(2838.909f, 5311.284f, 165.1031f)), owning_building_guid = 55) LocalObject(883, Locker.Constructor(Vector3(2841.517f, 5310.634f, 165.1031f)), owning_building_guid = 55) @@ -1851,39 +5383,126 @@ object Map01 { // Solsar LocalObject(886, Locker.Constructor(Vector3(2844.234f, 5332.498f, 165.1031f)), owning_building_guid = 55) LocalObject(887, Locker.Constructor(Vector3(2846.808f, 5331.856f, 165.1031f)), owning_building_guid = 55) LocalObject(888, Locker.Constructor(Vector3(2848.168f, 5331.517f, 165.1031f)), owning_building_guid = 55) - LocalObject(1315, Terminal.Constructor(Vector3(2844.42f, 5315.234f, 166.4411f), order_terminal), owning_building_guid = 55) - LocalObject(1316, Terminal.Constructor(Vector3(2845.805f, 5320.788f, 166.4411f), order_terminal), owning_building_guid = 55) - LocalObject(1317, Terminal.Constructor(Vector3(2847.106f, 5326.009f, 166.4411f), order_terminal), owning_building_guid = 55) - LocalObject(1812, SpawnTube.Constructor(Vector3(2833.423f, 5315.516f, 164.5911f), respawn_tube_tower, Vector3(0, 0, 14)), owning_building_guid = 55) - LocalObject(1813, SpawnTube.Constructor(Vector3(2837.392f, 5331.438f, 164.5911f), respawn_tube_tower, Vector3(0, 0, 14)), owning_building_guid = 55) - LocalObject(1579, ProximityTerminal.Constructor(Vector3(2823.663f, 5325.146f, 202.6791f), pad_landing_tower_frame), owning_building_guid = 55) - LocalObject(1580, Terminal.Constructor(Vector3(2823.663f, 5325.146f, 202.6791f), air_rearm_terminal), owning_building_guid = 55) - LocalObject(1582, ProximityTerminal.Constructor(Vector3(2826.19f, 5335.281f, 202.6791f), pad_landing_tower_frame), owning_building_guid = 55) - LocalObject(1583, Terminal.Constructor(Vector3(2826.19f, 5335.281f, 202.6791f), air_rearm_terminal), owning_building_guid = 55) - LocalObject(1203, FacilityTurret.Constructor(Vector3(2807.896f, 5319.101f, 194.0511f), manned_turret), owning_building_guid = 55) + LocalObject( + 1315, + Terminal.Constructor(Vector3(2844.42f, 5315.234f, 166.4411f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1316, + Terminal.Constructor(Vector3(2845.805f, 5320.788f, 166.4411f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1317, + Terminal.Constructor(Vector3(2847.106f, 5326.009f, 166.4411f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1812, + SpawnTube.Constructor(Vector3(2833.423f, 5315.516f, 164.5911f), respawn_tube_tower, Vector3(0, 0, 14)), + owning_building_guid = 55 + ) + LocalObject( + 1813, + SpawnTube.Constructor(Vector3(2837.392f, 5331.438f, 164.5911f), respawn_tube_tower, Vector3(0, 0, 14)), + owning_building_guid = 55 + ) + LocalObject( + 1579, + ProximityTerminal.Constructor(Vector3(2823.663f, 5325.146f, 202.6791f), pad_landing_tower_frame), + owning_building_guid = 55 + ) + LocalObject( + 1580, + Terminal.Constructor(Vector3(2823.663f, 5325.146f, 202.6791f), air_rearm_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1582, + ProximityTerminal.Constructor(Vector3(2826.19f, 5335.281f, 202.6791f), pad_landing_tower_frame), + owning_building_guid = 55 + ) + LocalObject( + 1583, + Terminal.Constructor(Vector3(2826.19f, 5335.281f, 202.6791f), air_rearm_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1203, + FacilityTurret.Constructor(Vector3(2807.896f, 5319.101f, 194.0511f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1203, 5071) - LocalObject(1204, FacilityTurret.Constructor(Vector3(2852.417f, 5338.828f, 194.0511f), manned_turret), owning_building_guid = 55) + LocalObject( + 1204, + FacilityTurret.Constructor(Vector3(2852.417f, 5338.828f, 194.0511f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1204, 5072) - LocalObject(1672, Painbox.Constructor(Vector3(2828.592f, 5321.984f, 167.1286f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1673, Painbox.Constructor(Vector3(2839.89f, 5315.756f, 165.2091f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1674, Painbox.Constructor(Vector3(2843.094f, 5327.822f, 165.2091f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 1672, + Painbox.Constructor(Vector3(2828.592f, 5321.984f, 167.1286f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1673, + Painbox.Constructor(Vector3(2839.89f, 5315.756f, 165.2091f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1674, + Painbox.Constructor(Vector3(2843.094f, 5327.822f, 165.2091f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building23() def Building23(): Unit = { // Name: NW_Mont_Tower Type: tower_c GUID: 56, MapID: 23 - LocalBuilding("NW_Mont_Tower", 56, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3190f, 4412f, 105.591f), Vector3(0f, 0f, 323f), tower_c))) - LocalObject(1882, CaptureTerminal.Constructor(Vector3(3203.185f, 4401.936f, 115.59f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "NW_Mont_Tower", + 56, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3190f, 4412f, 105.591f), Vector3(0f, 0f, 323f), tower_c) + ) + ) + LocalObject( + 1882, + CaptureTerminal.Constructor(Vector3(3203.185f, 4401.936f, 115.59f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(264, Door.Constructor(Vector3(3194.769f, 4398.389f, 107.112f)), owning_building_guid = 56) LocalObject(265, Door.Constructor(Vector3(3194.769f, 4398.389f, 127.111f)), owning_building_guid = 56) LocalObject(266, Door.Constructor(Vector3(3204.398f, 4411.167f, 107.112f)), owning_building_guid = 56) LocalObject(267, Door.Constructor(Vector3(3204.398f, 4411.167f, 127.111f)), owning_building_guid = 56) LocalObject(1972, Door.Constructor(Vector3(3192.158f, 4396.343f, 96.92699f)), owning_building_guid = 56) LocalObject(1973, Door.Constructor(Vector3(3202.033f, 4409.448f, 96.92699f)), owning_building_guid = 56) - LocalObject(732, IFFLock.Constructor(Vector3(3195.916f, 4396.51f, 107.052f), Vector3(0, 0, 217)), owning_building_guid = 56, door_guid = 264) - LocalObject(733, IFFLock.Constructor(Vector3(3195.916f, 4396.51f, 127.052f), Vector3(0, 0, 217)), owning_building_guid = 56, door_guid = 265) - LocalObject(734, IFFLock.Constructor(Vector3(3203.255f, 4413.044f, 107.052f), Vector3(0, 0, 37)), owning_building_guid = 56, door_guid = 266) - LocalObject(735, IFFLock.Constructor(Vector3(3203.255f, 4413.044f, 127.052f), Vector3(0, 0, 37)), owning_building_guid = 56, door_guid = 267) + LocalObject( + 732, + IFFLock.Constructor(Vector3(3195.916f, 4396.51f, 107.052f), Vector3(0, 0, 217)), + owning_building_guid = 56, + door_guid = 264 + ) + LocalObject( + 733, + IFFLock.Constructor(Vector3(3195.916f, 4396.51f, 127.052f), Vector3(0, 0, 217)), + owning_building_guid = 56, + door_guid = 265 + ) + LocalObject( + 734, + IFFLock.Constructor(Vector3(3203.255f, 4413.044f, 107.052f), Vector3(0, 0, 37)), + owning_building_guid = 56, + door_guid = 266 + ) + LocalObject( + 735, + IFFLock.Constructor(Vector3(3203.255f, 4413.044f, 127.052f), Vector3(0, 0, 37)), + owning_building_guid = 56, + door_guid = 267 + ) LocalObject(925, Locker.Constructor(Vector3(3193.502f, 4390.533f, 95.58499f)), owning_building_guid = 56) LocalObject(926, Locker.Constructor(Vector3(3194.57f, 4389.728f, 95.58499f)), owning_building_guid = 56) LocalObject(927, Locker.Constructor(Vector3(3196.716f, 4388.11f, 95.58499f)), owning_building_guid = 56) @@ -1892,39 +5511,126 @@ object Map01 { // Solsar LocalObject(930, Locker.Constructor(Vector3(3207.76f, 4407.175f, 95.58499f)), owning_building_guid = 56) LocalObject(931, Locker.Constructor(Vector3(3209.879f, 4405.578f, 95.58499f)), owning_building_guid = 56) LocalObject(932, Locker.Constructor(Vector3(3210.999f, 4404.734f, 95.58499f)), owning_building_guid = 56) - LocalObject(1335, Terminal.Constructor(Vector3(3201.186f, 4391.211f, 96.92299f), order_terminal), owning_building_guid = 56) - LocalObject(1336, Terminal.Constructor(Vector3(3204.631f, 4395.782f, 96.92299f), order_terminal), owning_building_guid = 56) - LocalObject(1337, Terminal.Constructor(Vector3(3207.869f, 4400.08f, 96.92299f), order_terminal), owning_building_guid = 56) - LocalObject(1823, SpawnTube.Constructor(Vector3(3191.173f, 4395.767f, 95.07299f), respawn_tube_tower, Vector3(0, 0, 37)), owning_building_guid = 56) - LocalObject(1824, SpawnTube.Constructor(Vector3(3201.049f, 4408.873f, 95.07299f), respawn_tube_tower, Vector3(0, 0, 37)), owning_building_guid = 56) - LocalObject(1585, ProximityTerminal.Constructor(Vector3(3185.953f, 4408.445f, 133.161f), pad_landing_tower_frame), owning_building_guid = 56) - LocalObject(1586, Terminal.Constructor(Vector3(3185.953f, 4408.445f, 133.161f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(1588, ProximityTerminal.Constructor(Vector3(3192.239f, 4416.787f, 133.161f), pad_landing_tower_frame), owning_building_guid = 56) - LocalObject(1589, Terminal.Constructor(Vector3(3192.239f, 4416.787f, 133.161f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(1217, FacilityTurret.Constructor(Vector3(3169.076f, 4409.042f, 124.533f), manned_turret), owning_building_guid = 56) + LocalObject( + 1335, + Terminal.Constructor(Vector3(3201.186f, 4391.211f, 96.92299f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1336, + Terminal.Constructor(Vector3(3204.631f, 4395.782f, 96.92299f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1337, + Terminal.Constructor(Vector3(3207.869f, 4400.08f, 96.92299f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1823, + SpawnTube.Constructor(Vector3(3191.173f, 4395.767f, 95.07299f), respawn_tube_tower, Vector3(0, 0, 37)), + owning_building_guid = 56 + ) + LocalObject( + 1824, + SpawnTube.Constructor(Vector3(3201.049f, 4408.873f, 95.07299f), respawn_tube_tower, Vector3(0, 0, 37)), + owning_building_guid = 56 + ) + LocalObject( + 1585, + ProximityTerminal.Constructor(Vector3(3185.953f, 4408.445f, 133.161f), pad_landing_tower_frame), + owning_building_guid = 56 + ) + LocalObject( + 1586, + Terminal.Constructor(Vector3(3185.953f, 4408.445f, 133.161f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1588, + ProximityTerminal.Constructor(Vector3(3192.239f, 4416.787f, 133.161f), pad_landing_tower_frame), + owning_building_guid = 56 + ) + LocalObject( + 1589, + Terminal.Constructor(Vector3(3192.239f, 4416.787f, 133.161f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1217, + FacilityTurret.Constructor(Vector3(3169.076f, 4409.042f, 124.533f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1217, 5073) - LocalObject(1218, FacilityTurret.Constructor(Vector3(3217.767f, 4409.804f, 124.533f), manned_turret), owning_building_guid = 56) + LocalObject( + 1218, + FacilityTurret.Constructor(Vector3(3217.767f, 4409.804f, 124.533f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1218, 5074) - LocalObject(1684, Painbox.Constructor(Vector3(3189.254f, 4403.608f, 97.61049f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1685, Painbox.Constructor(Vector3(3197.22f, 4393.461f, 95.69099f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1686, Painbox.Constructor(Vector3(3204.884f, 4403.316f, 95.69099f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 1684, + Painbox.Constructor(Vector3(3189.254f, 4403.608f, 97.61049f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1685, + Painbox.Constructor(Vector3(3197.22f, 4393.461f, 95.69099f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1686, + Painbox.Constructor(Vector3(3204.884f, 4403.316f, 95.69099f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building42() def Building42(): Unit = { // Name: E_Amerish_Warpgate_Tower Type: tower_c GUID: 57, MapID: 42 - LocalBuilding("E_Amerish_Warpgate_Tower", 57, 42, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4058f, 1262f, 68.20887f), Vector3(0f, 0f, 28f), tower_c))) - LocalObject(1886, CaptureTerminal.Constructor(Vector3(4072.694f, 1269.696f, 78.20787f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "E_Amerish_Warpgate_Tower", + 57, + 42, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4058f, 1262f, 68.20887f), Vector3(0f, 0f, 28f), tower_c) + ) + ) + LocalObject( + 1886, + CaptureTerminal.Constructor(Vector3(4072.694f, 1269.696f, 78.20787f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(324, Door.Constructor(Vector3(4064.84f, 1274.697f, 69.72987f)), owning_building_guid = 57) LocalObject(325, Door.Constructor(Vector3(4064.84f, 1274.697f, 89.72887f)), owning_building_guid = 57) LocalObject(326, Door.Constructor(Vector3(4072.351f, 1260.57f, 69.72987f)), owning_building_guid = 57) LocalObject(327, Door.Constructor(Vector3(4072.351f, 1260.57f, 89.72887f)), owning_building_guid = 57) LocalObject(1989, Door.Constructor(Vector3(4065.398f, 1271.828f, 59.54487f)), owning_building_guid = 57) LocalObject(1990, Door.Constructor(Vector3(4073.102f, 1257.338f, 59.54487f)), owning_building_guid = 57) - LocalObject(777, IFFLock.Constructor(Vector3(4062.655f, 1274.454f, 69.66987f), Vector3(0, 0, 332)), owning_building_guid = 57, door_guid = 324) - LocalObject(778, IFFLock.Constructor(Vector3(4062.655f, 1274.454f, 89.66987f), Vector3(0, 0, 332)), owning_building_guid = 57, door_guid = 325) - LocalObject(779, IFFLock.Constructor(Vector3(4074.539f, 1260.815f, 69.66987f), Vector3(0, 0, 152)), owning_building_guid = 57, door_guid = 326) - LocalObject(780, IFFLock.Constructor(Vector3(4074.539f, 1260.815f, 89.66987f), Vector3(0, 0, 152)), owning_building_guid = 57, door_guid = 327) + LocalObject( + 777, + IFFLock.Constructor(Vector3(4062.655f, 1274.454f, 69.66987f), Vector3(0, 0, 332)), + owning_building_guid = 57, + door_guid = 324 + ) + LocalObject( + 778, + IFFLock.Constructor(Vector3(4062.655f, 1274.454f, 89.66987f), Vector3(0, 0, 332)), + owning_building_guid = 57, + door_guid = 325 + ) + LocalObject( + 779, + IFFLock.Constructor(Vector3(4074.539f, 1260.815f, 69.66987f), Vector3(0, 0, 152)), + owning_building_guid = 57, + door_guid = 326 + ) + LocalObject( + 780, + IFFLock.Constructor(Vector3(4074.539f, 1260.815f, 89.66987f), Vector3(0, 0, 152)), + owning_building_guid = 57, + door_guid = 327 + ) LocalObject(1011, Locker.Constructor(Vector3(4068.698f, 1275.43f, 58.20287f)), owning_building_guid = 57) LocalObject(1012, Locker.Constructor(Vector3(4069.879f, 1276.057f, 58.20287f)), owning_building_guid = 57) LocalObject(1013, Locker.Constructor(Vector3(4072.221f, 1277.303f, 58.20287f)), owning_building_guid = 57) @@ -1933,39 +5639,126 @@ object Map01 { // Solsar LocalObject(1016, Locker.Constructor(Vector3(4080.116f, 1256.729f, 58.20287f)), owning_building_guid = 57) LocalObject(1017, Locker.Constructor(Vector3(4082.49f, 1257.991f, 58.20287f)), owning_building_guid = 57) LocalObject(1018, Locker.Constructor(Vector3(4083.728f, 1258.649f, 58.20287f)), owning_building_guid = 57) - LocalObject(1361, Terminal.Constructor(Vector3(4076.355f, 1273.157f, 59.54087f), order_terminal), owning_building_guid = 57) - LocalObject(1362, Terminal.Constructor(Vector3(4078.882f, 1268.406f, 59.54087f), order_terminal), owning_building_guid = 57) - LocalObject(1363, Terminal.Constructor(Vector3(4081.569f, 1263.352f, 59.54087f), order_terminal), owning_building_guid = 57) - LocalObject(1840, SpawnTube.Constructor(Vector3(4065.504f, 1270.692f, 57.69087f), respawn_tube_tower, Vector3(0, 0, 332)), owning_building_guid = 57) - LocalObject(1841, SpawnTube.Constructor(Vector3(4073.208f, 1256.203f, 57.69087f), respawn_tube_tower, Vector3(0, 0, 332)), owning_building_guid = 57) - LocalObject(1591, ProximityTerminal.Constructor(Vector3(4054.608f, 1266.052f, 95.77887f), pad_landing_tower_frame), owning_building_guid = 57) - LocalObject(1592, Terminal.Constructor(Vector3(4054.608f, 1266.052f, 95.77887f), air_rearm_terminal), owning_building_guid = 57) - LocalObject(1594, ProximityTerminal.Constructor(Vector3(4059.511f, 1256.829f, 95.77887f), pad_landing_tower_frame), owning_building_guid = 57) - LocalObject(1595, Terminal.Constructor(Vector3(4059.511f, 1256.829f, 95.77887f), air_rearm_terminal), owning_building_guid = 57) - LocalObject(1239, FacilityTurret.Constructor(Vector3(4051.839f, 1241.786f, 87.15087f), manned_turret), owning_building_guid = 57) + LocalObject( + 1361, + Terminal.Constructor(Vector3(4076.355f, 1273.157f, 59.54087f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1362, + Terminal.Constructor(Vector3(4078.882f, 1268.406f, 59.54087f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1363, + Terminal.Constructor(Vector3(4081.569f, 1263.352f, 59.54087f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1840, + SpawnTube.Constructor(Vector3(4065.504f, 1270.692f, 57.69087f), respawn_tube_tower, Vector3(0, 0, 332)), + owning_building_guid = 57 + ) + LocalObject( + 1841, + SpawnTube.Constructor(Vector3(4073.208f, 1256.203f, 57.69087f), respawn_tube_tower, Vector3(0, 0, 332)), + owning_building_guid = 57 + ) + LocalObject( + 1591, + ProximityTerminal.Constructor(Vector3(4054.608f, 1266.052f, 95.77887f), pad_landing_tower_frame), + owning_building_guid = 57 + ) + LocalObject( + 1592, + Terminal.Constructor(Vector3(4054.608f, 1266.052f, 95.77887f), air_rearm_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1594, + ProximityTerminal.Constructor(Vector3(4059.511f, 1256.829f, 95.77887f), pad_landing_tower_frame), + owning_building_guid = 57 + ) + LocalObject( + 1595, + Terminal.Constructor(Vector3(4059.511f, 1256.829f, 95.77887f), air_rearm_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1239, + FacilityTurret.Constructor(Vector3(4051.839f, 1241.786f, 87.15087f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1239, 5075) - LocalObject(1240, FacilityTurret.Constructor(Vector3(4071.725f, 1286.237f, 87.15087f), manned_turret), owning_building_guid = 57) + LocalObject( + 1240, + FacilityTurret.Constructor(Vector3(4071.725f, 1286.237f, 87.15087f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1240, 5076) - LocalObject(1696, Painbox.Constructor(Vector3(4065.29f, 1257.777f, 60.22837f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1697, Painbox.Constructor(Vector3(4072.16f, 1271.819f, 58.30887f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1698, Painbox.Constructor(Vector3(4077.853f, 1260.709f, 58.30887f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 1696, + Painbox.Constructor(Vector3(4065.29f, 1257.777f, 60.22837f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1697, + Painbox.Constructor(Vector3(4072.16f, 1271.819f, 58.30887f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1698, + Painbox.Constructor(Vector3(4077.853f, 1260.709f, 58.30887f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building19() def Building19(): Unit = { // Name: NW_Seth_Tower Type: tower_c GUID: 58, MapID: 19 - LocalBuilding("NW_Seth_Tower", 58, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4148f, 6224f, 93.21268f), Vector3(0f, 0f, 31f), tower_c))) - LocalObject(1887, CaptureTerminal.Constructor(Vector3(4162.271f, 6232.455f, 103.2117f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "NW_Seth_Tower", + 58, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4148f, 6224f, 93.21268f), Vector3(0f, 0f, 31f), tower_c) + ) + ) + LocalObject( + 1887, + CaptureTerminal.Constructor(Vector3(4162.271f, 6232.455f, 103.2117f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(328, Door.Constructor(Vector3(4154.166f, 6237.038f, 94.73369f)), owning_building_guid = 58) LocalObject(329, Door.Constructor(Vector3(4154.166f, 6237.038f, 114.7327f)), owning_building_guid = 58) LocalObject(330, Door.Constructor(Vector3(4162.406f, 6223.323f, 94.73369f)), owning_building_guid = 58) LocalObject(331, Door.Constructor(Vector3(4162.406f, 6223.323f, 114.7327f)), owning_building_guid = 58) LocalObject(1991, Door.Constructor(Vector3(4154.874f, 6234.201f, 84.54868f)), owning_building_guid = 58) LocalObject(1992, Door.Constructor(Vector3(4163.326f, 6220.135f, 84.54868f)), owning_building_guid = 58) - LocalObject(781, IFFLock.Constructor(Vector3(4151.997f, 6236.681f, 94.67368f), Vector3(0, 0, 329)), owning_building_guid = 58, door_guid = 328) - LocalObject(782, IFFLock.Constructor(Vector3(4151.997f, 6236.681f, 114.6737f), Vector3(0, 0, 329)), owning_building_guid = 58, door_guid = 329) - LocalObject(783, IFFLock.Constructor(Vector3(4164.579f, 6223.682f, 94.67368f), Vector3(0, 0, 149)), owning_building_guid = 58, door_guid = 330) - LocalObject(784, IFFLock.Constructor(Vector3(4164.579f, 6223.682f, 114.6737f), Vector3(0, 0, 149)), owning_building_guid = 58, door_guid = 331) + LocalObject( + 781, + IFFLock.Constructor(Vector3(4151.997f, 6236.681f, 94.67368f), Vector3(0, 0, 329)), + owning_building_guid = 58, + door_guid = 328 + ) + LocalObject( + 782, + IFFLock.Constructor(Vector3(4151.997f, 6236.681f, 114.6737f), Vector3(0, 0, 329)), + owning_building_guid = 58, + door_guid = 329 + ) + LocalObject( + 783, + IFFLock.Constructor(Vector3(4164.579f, 6223.682f, 94.67368f), Vector3(0, 0, 149)), + owning_building_guid = 58, + door_guid = 330 + ) + LocalObject( + 784, + IFFLock.Constructor(Vector3(4164.579f, 6223.682f, 114.6737f), Vector3(0, 0, 149)), + owning_building_guid = 58, + door_guid = 331 + ) LocalObject(1019, Locker.Constructor(Vector3(4157.981f, 6237.971f, 83.20669f)), owning_building_guid = 58) LocalObject(1020, Locker.Constructor(Vector3(4159.127f, 6238.66f, 83.20669f)), owning_building_guid = 58) LocalObject(1021, Locker.Constructor(Vector3(4161.401f, 6240.026f, 83.20669f)), owning_building_guid = 58) @@ -1974,39 +5767,126 @@ object Map01 { // Solsar LocalObject(1024, Locker.Constructor(Vector3(4170.362f, 6219.894f, 83.20669f)), owning_building_guid = 58) LocalObject(1025, Locker.Constructor(Vector3(4172.666f, 6221.278f, 83.20669f)), owning_building_guid = 58) LocalObject(1026, Locker.Constructor(Vector3(4173.868f, 6222f, 83.20669f)), owning_building_guid = 58) - LocalObject(1364, Terminal.Constructor(Vector3(4165.747f, 6236.103f, 84.54469f), order_terminal), owning_building_guid = 58) - LocalObject(1365, Terminal.Constructor(Vector3(4168.518f, 6231.49f, 84.54469f), order_terminal), owning_building_guid = 58) - LocalObject(1366, Terminal.Constructor(Vector3(4171.466f, 6226.584f, 84.54469f), order_terminal), owning_building_guid = 58) - LocalObject(1842, SpawnTube.Constructor(Vector3(4155.039f, 6233.073f, 82.69469f), respawn_tube_tower, Vector3(0, 0, 329)), owning_building_guid = 58) - LocalObject(1843, SpawnTube.Constructor(Vector3(4163.49f, 6219.007f, 82.69469f), respawn_tube_tower, Vector3(0, 0, 329)), owning_building_guid = 58) - LocalObject(1597, ProximityTerminal.Constructor(Vector3(4144.4f, 6227.869f, 120.7827f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1598, Terminal.Constructor(Vector3(4144.4f, 6227.869f, 120.7827f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1600, ProximityTerminal.Constructor(Vector3(4149.78f, 6218.916f, 120.7827f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1601, Terminal.Constructor(Vector3(4149.78f, 6218.916f, 120.7827f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1241, FacilityTurret.Constructor(Vector3(4142.905f, 6203.492f, 112.1547f), manned_turret), owning_building_guid = 58) + LocalObject( + 1364, + Terminal.Constructor(Vector3(4165.747f, 6236.103f, 84.54469f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1365, + Terminal.Constructor(Vector3(4168.518f, 6231.49f, 84.54469f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1366, + Terminal.Constructor(Vector3(4171.466f, 6226.584f, 84.54469f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1842, + SpawnTube.Constructor(Vector3(4155.039f, 6233.073f, 82.69469f), respawn_tube_tower, Vector3(0, 0, 329)), + owning_building_guid = 58 + ) + LocalObject( + 1843, + SpawnTube.Constructor(Vector3(4163.49f, 6219.007f, 82.69469f), respawn_tube_tower, Vector3(0, 0, 329)), + owning_building_guid = 58 + ) + LocalObject( + 1597, + ProximityTerminal.Constructor(Vector3(4144.4f, 6227.869f, 120.7827f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1598, + Terminal.Constructor(Vector3(4144.4f, 6227.869f, 120.7827f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1600, + ProximityTerminal.Constructor(Vector3(4149.78f, 6218.916f, 120.7827f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1601, + Terminal.Constructor(Vector3(4149.78f, 6218.916f, 120.7827f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1241, + FacilityTurret.Constructor(Vector3(4142.905f, 6203.492f, 112.1547f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1241, 5077) - LocalObject(1242, FacilityTurret.Constructor(Vector3(4160.438f, 6248.922f, 112.1547f), manned_turret), owning_building_guid = 58) + LocalObject( + 1242, + FacilityTurret.Constructor(Vector3(4160.438f, 6248.922f, 112.1547f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1242, 5078) - LocalObject(1699, Painbox.Constructor(Vector3(4155.501f, 6220.165f, 85.23219f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1700, Painbox.Constructor(Vector3(4161.627f, 6234.547f, 83.31268f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1701, Painbox.Constructor(Vector3(4167.894f, 6223.75f, 83.31268f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 1699, + Painbox.Constructor(Vector3(4155.501f, 6220.165f, 85.23219f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1700, + Painbox.Constructor(Vector3(4161.627f, 6234.547f, 83.31268f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1701, + Painbox.Constructor(Vector3(4167.894f, 6223.75f, 83.31268f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building16() def Building16(): Unit = { // Name: E_Amun_Tower Type: tower_c GUID: 59, MapID: 16 - LocalBuilding("E_Amun_Tower", 59, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5080f, 1796f, 76.71438f), Vector3(0f, 0f, 35f), tower_c))) - LocalObject(1893, CaptureTerminal.Constructor(Vector3(5093.646f, 1805.43f, 86.71338f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "E_Amun_Tower", + 59, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5080f, 1796f, 76.71438f), Vector3(0f, 0f, 35f), tower_c) + ) + ) + LocalObject( + 1893, + CaptureTerminal.Constructor(Vector3(5093.646f, 1805.43f, 86.71338f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(416, Door.Constructor(Vector3(5085.241f, 1809.436f, 78.23538f)), owning_building_guid = 59) LocalObject(417, Door.Constructor(Vector3(5085.241f, 1809.436f, 98.23438f)), owning_building_guid = 59) LocalObject(418, Door.Constructor(Vector3(5094.418f, 1796.33f, 78.23538f)), owning_building_guid = 59) LocalObject(419, Door.Constructor(Vector3(5094.418f, 1796.33f, 98.23438f)), owning_building_guid = 59) LocalObject(2015, Door.Constructor(Vector3(5086.146f, 1806.656f, 68.05038f)), owning_building_guid = 59) LocalObject(2016, Door.Constructor(Vector3(5095.558f, 1793.214f, 68.05038f)), owning_building_guid = 59) - LocalObject(846, IFFLock.Constructor(Vector3(5083.103f, 1808.929f, 78.17538f), Vector3(0, 0, 325)), owning_building_guid = 59, door_guid = 416) - LocalObject(847, IFFLock.Constructor(Vector3(5083.103f, 1808.929f, 98.17538f), Vector3(0, 0, 325)), owning_building_guid = 59, door_guid = 417) - LocalObject(848, IFFLock.Constructor(Vector3(5096.561f, 1796.839f, 78.17538f), Vector3(0, 0, 145)), owning_building_guid = 59, door_guid = 418) - LocalObject(849, IFFLock.Constructor(Vector3(5096.561f, 1796.839f, 98.17538f), Vector3(0, 0, 145)), owning_building_guid = 59, door_guid = 419) + LocalObject( + 846, + IFFLock.Constructor(Vector3(5083.103f, 1808.929f, 78.17538f), Vector3(0, 0, 325)), + owning_building_guid = 59, + door_guid = 416 + ) + LocalObject( + 847, + IFFLock.Constructor(Vector3(5083.103f, 1808.929f, 98.17538f), Vector3(0, 0, 325)), + owning_building_guid = 59, + door_guid = 417 + ) + LocalObject( + 848, + IFFLock.Constructor(Vector3(5096.561f, 1796.839f, 78.17538f), Vector3(0, 0, 145)), + owning_building_guid = 59, + door_guid = 418 + ) + LocalObject( + 849, + IFFLock.Constructor(Vector3(5096.561f, 1796.839f, 98.17538f), Vector3(0, 0, 145)), + owning_building_guid = 59, + door_guid = 419 + ) LocalObject(1124, Locker.Constructor(Vector3(5088.982f, 1810.633f, 66.70838f)), owning_building_guid = 59) LocalObject(1125, Locker.Constructor(Vector3(5090.077f, 1811.4f, 66.70838f)), owning_building_guid = 59) LocalObject(1126, Locker.Constructor(Vector3(5092.25f, 1812.922f, 66.70838f)), owning_building_guid = 59) @@ -2015,39 +5895,126 @@ object Map01 { // Solsar LocalObject(1129, Locker.Constructor(Vector3(5102.594f, 1793.464f, 66.70838f)), owning_building_guid = 59) LocalObject(1130, Locker.Constructor(Vector3(5104.796f, 1795.005f, 66.70838f)), owning_building_guid = 59) LocalObject(1131, Locker.Constructor(Vector3(5105.944f, 1795.81f, 66.70838f)), owning_building_guid = 59) - LocalObject(1401, Terminal.Constructor(Vector3(5096.859f, 1809.311f, 68.04638f), order_terminal), owning_building_guid = 59) - LocalObject(1402, Terminal.Constructor(Vector3(5099.945f, 1804.903f, 68.04638f), order_terminal), owning_building_guid = 59) - LocalObject(1403, Terminal.Constructor(Vector3(5103.229f, 1800.214f, 68.04638f), order_terminal), owning_building_guid = 59) - LocalObject(1866, SpawnTube.Constructor(Vector3(5086.388f, 1805.542f, 66.19638f), respawn_tube_tower, Vector3(0, 0, 325)), owning_building_guid = 59) - LocalObject(1867, SpawnTube.Constructor(Vector3(5095.801f, 1792.099f, 66.19638f), respawn_tube_tower, Vector3(0, 0, 325)), owning_building_guid = 59) - LocalObject(1603, ProximityTerminal.Constructor(Vector3(5076.139f, 1799.608f, 104.2844f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1604, Terminal.Constructor(Vector3(5076.139f, 1799.608f, 104.2844f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1606, ProximityTerminal.Constructor(Vector3(5082.13f, 1791.052f, 104.2844f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1607, Terminal.Constructor(Vector3(5082.13f, 1791.052f, 104.2844f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1270, FacilityTurret.Constructor(Vector3(5076.348f, 1775.186f, 95.65638f), manned_turret), owning_building_guid = 59) + LocalObject( + 1401, + Terminal.Constructor(Vector3(5096.859f, 1809.311f, 68.04638f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1402, + Terminal.Constructor(Vector3(5099.945f, 1804.903f, 68.04638f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1403, + Terminal.Constructor(Vector3(5103.229f, 1800.214f, 68.04638f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1866, + SpawnTube.Constructor(Vector3(5086.388f, 1805.542f, 66.19638f), respawn_tube_tower, Vector3(0, 0, 325)), + owning_building_guid = 59 + ) + LocalObject( + 1867, + SpawnTube.Constructor(Vector3(5095.801f, 1792.099f, 66.19638f), respawn_tube_tower, Vector3(0, 0, 325)), + owning_building_guid = 59 + ) + LocalObject( + 1603, + ProximityTerminal.Constructor(Vector3(5076.139f, 1799.608f, 104.2844f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1604, + Terminal.Constructor(Vector3(5076.139f, 1799.608f, 104.2844f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1606, + ProximityTerminal.Constructor(Vector3(5082.13f, 1791.052f, 104.2844f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1607, + Terminal.Constructor(Vector3(5082.13f, 1791.052f, 104.2844f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1270, + FacilityTurret.Constructor(Vector3(5076.348f, 1775.186f, 95.65638f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1270, 5079) - LocalObject(1271, FacilityTurret.Constructor(Vector3(5090.668f, 1821.729f, 95.65638f), manned_turret), owning_building_guid = 59) + LocalObject( + 1271, + FacilityTurret.Constructor(Vector3(5090.668f, 1821.729f, 95.65638f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1271, 5080) - LocalObject(1717, Painbox.Constructor(Vector3(5087.75f, 1792.697f, 68.73388f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1718, Painbox.Constructor(Vector3(5092.858f, 1807.472f, 66.81438f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1719, Painbox.Constructor(Vector3(5099.862f, 1797.138f, 66.81438f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 1717, + Painbox.Constructor(Vector3(5087.75f, 1792.697f, 68.73388f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1718, + Painbox.Constructor(Vector3(5092.858f, 1807.472f, 66.81438f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1719, + Painbox.Constructor(Vector3(5099.862f, 1797.138f, 66.81438f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building40() def Building40(): Unit = { // Name: N_Bastet_Tower Type: tower_c GUID: 60, MapID: 40 - LocalBuilding("N_Bastet_Tower", 60, 40, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5514f, 5964f, 52.92538f), Vector3(0f, 0f, 353f), tower_c))) - LocalObject(1894, CaptureTerminal.Constructor(Vector3(5530.451f, 5961.876f, 62.92439f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "N_Bastet_Tower", + 60, + 40, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5514f, 5964f, 52.92538f), Vector3(0f, 0f, 353f), tower_c) + ) + ) + LocalObject( + 1894, + CaptureTerminal.Constructor(Vector3(5530.451f, 5961.876f, 62.92439f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(437, Door.Constructor(Vector3(5524.936f, 5954.597f, 54.44638f)), owning_building_guid = 60) LocalObject(438, Door.Constructor(Vector3(5524.936f, 5954.597f, 74.44539f)), owning_building_guid = 60) LocalObject(439, Door.Constructor(Vector3(5526.886f, 5970.478f, 54.44638f)), owning_building_guid = 60) LocalObject(440, Door.Constructor(Vector3(5526.886f, 5970.478f, 74.44539f)), owning_building_guid = 60) LocalObject(2020, Door.Constructor(Vector3(5523.697f, 5951.519f, 44.26138f)), owning_building_guid = 60) LocalObject(2021, Door.Constructor(Vector3(5525.697f, 5967.807f, 44.26138f)), owning_building_guid = 60) - LocalObject(861, IFFLock.Constructor(Vector3(5524.957f, 5971.532f, 54.38638f), Vector3(0, 0, 7)), owning_building_guid = 60, door_guid = 439) - LocalObject(862, IFFLock.Constructor(Vector3(5524.957f, 5971.532f, 74.38638f), Vector3(0, 0, 7)), owning_building_guid = 60, door_guid = 440) - LocalObject(863, IFFLock.Constructor(Vector3(5526.869f, 5953.543f, 54.38638f), Vector3(0, 0, 187)), owning_building_guid = 60, door_guid = 437) - LocalObject(864, IFFLock.Constructor(Vector3(5526.869f, 5953.543f, 74.38638f), Vector3(0, 0, 187)), owning_building_guid = 60, door_guid = 438) + LocalObject( + 861, + IFFLock.Constructor(Vector3(5524.957f, 5971.532f, 54.38638f), Vector3(0, 0, 7)), + owning_building_guid = 60, + door_guid = 439 + ) + LocalObject( + 862, + IFFLock.Constructor(Vector3(5524.957f, 5971.532f, 74.38638f), Vector3(0, 0, 7)), + owning_building_guid = 60, + door_guid = 440 + ) + LocalObject( + 863, + IFFLock.Constructor(Vector3(5526.869f, 5953.543f, 54.38638f), Vector3(0, 0, 187)), + owning_building_guid = 60, + door_guid = 437 + ) + LocalObject( + 864, + IFFLock.Constructor(Vector3(5526.869f, 5953.543f, 74.38638f), Vector3(0, 0, 187)), + owning_building_guid = 60, + door_guid = 438 + ) LocalObject(1144, Locker.Constructor(Vector3(5527.766f, 5947.16f, 42.91938f)), owning_building_guid = 60) LocalObject(1145, Locker.Constructor(Vector3(5529.093f, 5946.997f, 42.91938f)), owning_building_guid = 60) LocalObject(1146, Locker.Constructor(Vector3(5530.467f, 5968.864f, 42.91938f)), owning_building_guid = 60) @@ -2056,46 +6023,122 @@ object Map01 { // Solsar LocalObject(1151, Locker.Constructor(Vector3(5533.153f, 5946.499f, 42.91938f)), owning_building_guid = 60) LocalObject(1153, Locker.Constructor(Vector3(5534.427f, 5968.378f, 42.91938f)), owning_building_guid = 60) LocalObject(1155, Locker.Constructor(Vector3(5535.818f, 5968.208f, 42.91938f)), owning_building_guid = 60) - LocalObject(1410, Terminal.Constructor(Vector3(5534.082f, 5951.589f, 44.25739f), order_terminal), owning_building_guid = 60) - LocalObject(1411, Terminal.Constructor(Vector3(5534.78f, 5957.271f, 44.25739f), order_terminal), owning_building_guid = 60) - LocalObject(1412, Terminal.Constructor(Vector3(5535.436f, 5962.611f, 44.25739f), order_terminal), owning_building_guid = 60) - LocalObject(1871, SpawnTube.Constructor(Vector3(5523.132f, 5950.529f, 42.40739f), respawn_tube_tower, Vector3(0, 0, 7)), owning_building_guid = 60) - LocalObject(1872, SpawnTube.Constructor(Vector3(5525.132f, 5966.816f, 42.40739f), respawn_tube_tower, Vector3(0, 0, 7)), owning_building_guid = 60) - LocalObject(1609, ProximityTerminal.Constructor(Vector3(5512.272f, 5958.897f, 80.49538f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1610, Terminal.Constructor(Vector3(5512.272f, 5958.897f, 80.49538f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1612, ProximityTerminal.Constructor(Vector3(5513.545f, 5969.265f, 80.49538f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1613, Terminal.Constructor(Vector3(5513.545f, 5969.265f, 80.49538f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1278, FacilityTurret.Constructor(Vector3(5497.359f, 5950.976f, 71.86739f), manned_turret), owning_building_guid = 60) + LocalObject( + 1410, + Terminal.Constructor(Vector3(5534.082f, 5951.589f, 44.25739f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1411, + Terminal.Constructor(Vector3(5534.78f, 5957.271f, 44.25739f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1412, + Terminal.Constructor(Vector3(5535.436f, 5962.611f, 44.25739f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1871, + SpawnTube.Constructor(Vector3(5523.132f, 5950.529f, 42.40739f), respawn_tube_tower, Vector3(0, 0, 7)), + owning_building_guid = 60 + ) + LocalObject( + 1872, + SpawnTube.Constructor(Vector3(5525.132f, 5966.816f, 42.40739f), respawn_tube_tower, Vector3(0, 0, 7)), + owning_building_guid = 60 + ) + LocalObject( + 1609, + ProximityTerminal.Constructor(Vector3(5512.272f, 5958.897f, 80.49538f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1610, + Terminal.Constructor(Vector3(5512.272f, 5958.897f, 80.49538f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1612, + ProximityTerminal.Constructor(Vector3(5513.545f, 5969.265f, 80.49538f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1613, + Terminal.Constructor(Vector3(5513.545f, 5969.265f, 80.49538f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1278, + FacilityTurret.Constructor(Vector3(5497.359f, 5950.976f, 71.86739f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1278, 5081) - LocalObject(1280, FacilityTurret.Constructor(Vector3(5539.145f, 5975.982f, 71.86739f), manned_turret), owning_building_guid = 60) + LocalObject( + 1280, + FacilityTurret.Constructor(Vector3(5539.145f, 5975.982f, 71.86739f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1280, 5082) - LocalObject(1720, Painbox.Constructor(Vector3(5517.549f, 5956.359f, 44.94489f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1722, Painbox.Constructor(Vector3(5529.522f, 5951.555f, 43.02538f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1723, Painbox.Constructor(Vector3(5531.231f, 5963.921f, 43.02538f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1720, + Painbox.Constructor(Vector3(5517.549f, 5956.359f, 44.94489f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1722, + Painbox.Constructor(Vector3(5529.522f, 5951.555f, 43.02538f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1723, + Painbox.Constructor(Vector3(5531.231f, 5963.921f, 43.02538f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building1() def Building1(): Unit = { // Name: WG_Solsar_to_Forseral Type: warpgate GUID: 61, MapID: 1 - LocalBuilding("WG_Solsar_to_Forseral", 61, 1, FoundationBuilder(WarpGate.Structure(Vector3(2506f, 5278f, 176.0704f)))) + LocalBuilding( + "WG_Solsar_to_Forseral", + 61, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(2506f, 5278f, 176.0704f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Solsar_to_Amerish Type: warpgate GUID: 62, MapID: 3 - LocalBuilding("WG_Solsar_to_Amerish", 62, 3, FoundationBuilder(WarpGate.Structure(Vector3(2918f, 1122f, 66.00238f)))) + LocalBuilding( + "WG_Solsar_to_Amerish", + 62, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(2918f, 1122f, 66.00238f))) + ) } Building4() def Building4(): Unit = { // Name: WG_Solsar_to_Hossin Type: warpgate GUID: 63, MapID: 4 - LocalBuilding("WG_Solsar_to_Hossin", 63, 4, FoundationBuilder(WarpGate.Structure(Vector3(4132f, 7474f, 82.79366f)))) + LocalBuilding( + "WG_Solsar_to_Hossin", + 63, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(4132f, 7474f, 82.79366f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Solsar_to_Cyssor Type: warpgate GUID: 64, MapID: 2 - LocalBuilding("WG_Solsar_to_Cyssor", 64, 2, FoundationBuilder(WarpGate.Structure(Vector3(5872f, 3436f, 129.1208f)))) + LocalBuilding( + "WG_Solsar_to_Cyssor", + 64, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(5872f, 3436f, 129.1208f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map02.scala b/pslogin/src/main/scala/zonemaps/Map02.scala index 02a407fa..e479bcd8 100644 --- a/pslogin/src/main/scala/zonemaps/Map02.scala +++ b/pslogin/src/main/scala/zonemaps/Map02.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map02 { // Hossin Building12() def Building12(): Unit = { // Name: Ixtab Type: amp_station GUID: 1, MapID: 12 - LocalBuilding("Ixtab", 1, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3390f, 3150f, 39.97925f), Vector3(0f, 0f, 315f), amp_station))) - LocalObject(186, CaptureTerminal.Constructor(Vector3(3387.643f, 3152.361f, 51.48725f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Ixtab", + 1, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3390f, 3150f, 39.97925f), + Vector3(0f, 0f, 315f), + amp_station + ) + ) + ) + LocalObject( + 186, + CaptureTerminal.Constructor(Vector3(3387.643f, 3152.361f, 51.48725f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(148, Door.Constructor(Vector3(3385.337f, 3145.039f, 52.88125f)), owning_building_guid = 1) LocalObject(149, Door.Constructor(Vector3(3394.963f, 3154.661f, 52.88125f)), owning_building_guid = 1) LocalObject(334, Door.Constructor(Vector3(3302.688f, 3158.823f, 41.73025f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map02 { // Hossin LocalObject(2383, Door.Constructor(Vector3(3369.074f, 3156.406f, 34.53325f)), owning_building_guid = 1) LocalObject(2384, Door.Constructor(Vector3(3374.231f, 3161.563f, 34.53325f)), owning_building_guid = 1) LocalObject(2385, Door.Constructor(Vector3(3379.385f, 3166.718f, 34.53325f)), owning_building_guid = 1) - LocalObject(826, IFFLock.Constructor(Vector3(3414.735f, 3129.601f, 41.65925f), Vector3(0, 0, 135)), owning_building_guid = 1, door_guid = 786) - LocalObject(907, IFFLock.Constructor(Vector3(3354.915f, 3181.652f, 26.51525f), Vector3(0, 0, 135)), owning_building_guid = 1, door_guid = 609) - LocalObject(908, IFFLock.Constructor(Vector3(3363.313f, 3130.588f, 51.64025f), Vector3(0, 0, 315)), owning_building_guid = 1, door_guid = 350) - LocalObject(909, IFFLock.Constructor(Vector3(3365.776f, 3122.888f, 46.64125f), Vector3(0, 0, 225)), owning_building_guid = 1, door_guid = 349) - LocalObject(910, IFFLock.Constructor(Vector3(3370.74f, 3145.487f, 34.01525f), Vector3(0, 0, 225)), owning_building_guid = 1, door_guid = 616) - LocalObject(911, IFFLock.Constructor(Vector3(3373.76f, 3125.923f, 51.64025f), Vector3(0, 0, 135)), owning_building_guid = 1, door_guid = 351) - LocalObject(912, IFFLock.Constructor(Vector3(3379.739f, 3141.068f, 26.51525f), Vector3(0, 0, 315)), owning_building_guid = 1, door_guid = 619) - LocalObject(913, IFFLock.Constructor(Vector3(3386.725f, 3165.919f, 34.01525f), Vector3(0, 0, 45)), owning_building_guid = 1, door_guid = 620) - LocalObject(915, IFFLock.Constructor(Vector3(3391.967f, 3262.338f, 41.63925f), Vector3(0, 0, 45)), owning_building_guid = 1, door_guid = 356) - LocalObject(916, IFFLock.Constructor(Vector3(3406.543f, 3173.818f, 51.64025f), Vector3(0, 0, 315)), owning_building_guid = 1, door_guid = 360) - LocalObject(917, IFFLock.Constructor(Vector3(3414.238f, 3177.128f, 46.64125f), Vector3(0, 0, 45)), owning_building_guid = 1, door_guid = 362) - LocalObject(918, IFFLock.Constructor(Vector3(3416.994f, 3169.156f, 51.64025f), Vector3(0, 0, 135)), owning_building_guid = 1, door_guid = 361) + LocalObject( + 826, + IFFLock.Constructor(Vector3(3414.735f, 3129.601f, 41.65925f), Vector3(0, 0, 135)), + owning_building_guid = 1, + door_guid = 786 + ) + LocalObject( + 907, + IFFLock.Constructor(Vector3(3354.915f, 3181.652f, 26.51525f), Vector3(0, 0, 135)), + owning_building_guid = 1, + door_guid = 609 + ) + LocalObject( + 908, + IFFLock.Constructor(Vector3(3363.313f, 3130.588f, 51.64025f), Vector3(0, 0, 315)), + owning_building_guid = 1, + door_guid = 350 + ) + LocalObject( + 909, + IFFLock.Constructor(Vector3(3365.776f, 3122.888f, 46.64125f), Vector3(0, 0, 225)), + owning_building_guid = 1, + door_guid = 349 + ) + LocalObject( + 910, + IFFLock.Constructor(Vector3(3370.74f, 3145.487f, 34.01525f), Vector3(0, 0, 225)), + owning_building_guid = 1, + door_guid = 616 + ) + LocalObject( + 911, + IFFLock.Constructor(Vector3(3373.76f, 3125.923f, 51.64025f), Vector3(0, 0, 135)), + owning_building_guid = 1, + door_guid = 351 + ) + LocalObject( + 912, + IFFLock.Constructor(Vector3(3379.739f, 3141.068f, 26.51525f), Vector3(0, 0, 315)), + owning_building_guid = 1, + door_guid = 619 + ) + LocalObject( + 913, + IFFLock.Constructor(Vector3(3386.725f, 3165.919f, 34.01525f), Vector3(0, 0, 45)), + owning_building_guid = 1, + door_guid = 620 + ) + LocalObject( + 915, + IFFLock.Constructor(Vector3(3391.967f, 3262.338f, 41.63925f), Vector3(0, 0, 45)), + owning_building_guid = 1, + door_guid = 356 + ) + LocalObject( + 916, + IFFLock.Constructor(Vector3(3406.543f, 3173.818f, 51.64025f), Vector3(0, 0, 315)), + owning_building_guid = 1, + door_guid = 360 + ) + LocalObject( + 917, + IFFLock.Constructor(Vector3(3414.238f, 3177.128f, 46.64125f), Vector3(0, 0, 45)), + owning_building_guid = 1, + door_guid = 362 + ) + LocalObject( + 918, + IFFLock.Constructor(Vector3(3416.994f, 3169.156f, 51.64025f), Vector3(0, 0, 135)), + owning_building_guid = 1, + door_guid = 361 + ) LocalObject(1153, Locker.Constructor(Vector3(3374.234f, 3146.166f, 32.94025f)), owning_building_guid = 1) LocalObject(1154, Locker.Constructor(Vector3(3375.057f, 3145.343f, 32.94025f)), owning_building_guid = 1) LocalObject(1155, Locker.Constructor(Vector3(3375.868f, 3144.532f, 32.94025f)), owning_building_guid = 1) @@ -94,64 +170,253 @@ object Map02 { // Hossin LocalObject(1162, Locker.Constructor(Vector3(3402.884f, 3145.835f, 25.17925f)), owning_building_guid = 1) LocalObject(1163, Locker.Constructor(Vector3(3403.828f, 3144.89f, 25.17925f)), owning_building_guid = 1) LocalObject(1164, Locker.Constructor(Vector3(3404.774f, 3143.945f, 25.17925f)), owning_building_guid = 1) - LocalObject(1616, Terminal.Constructor(Vector3(3374.105f, 3134.108f, 41.50825f), order_terminal), owning_building_guid = 1) - LocalObject(1617, Terminal.Constructor(Vector3(3374.111f, 3165.884f, 41.50825f), order_terminal), owning_building_guid = 1) - LocalObject(1618, Terminal.Constructor(Vector3(3380.144f, 3147.705f, 34.26925f), order_terminal), owning_building_guid = 1) - LocalObject(1619, Terminal.Constructor(Vector3(3382.782f, 3150.343f, 34.26925f), order_terminal), owning_building_guid = 1) - LocalObject(1620, Terminal.Constructor(Vector3(3385.462f, 3153.022f, 34.26925f), order_terminal), owning_building_guid = 1) - LocalObject(1621, Terminal.Constructor(Vector3(3405.892f, 3165.895f, 41.50825f), order_terminal), owning_building_guid = 1) - LocalObject(2302, Terminal.Constructor(Vector3(3367.524f, 3154.435f, 34.81325f), spawn_terminal), owning_building_guid = 1) - LocalObject(2303, Terminal.Constructor(Vector3(3372.677f, 3159.594f, 34.81325f), spawn_terminal), owning_building_guid = 1) - LocalObject(2304, Terminal.Constructor(Vector3(3377.833f, 3164.745f, 34.81325f), spawn_terminal), owning_building_guid = 1) - LocalObject(2305, Terminal.Constructor(Vector3(3382.926f, 3150.71f, 46.70725f), spawn_terminal), owning_building_guid = 1) - LocalObject(2306, Terminal.Constructor(Vector3(3383.966f, 3177.825f, 26.73625f), spawn_terminal), owning_building_guid = 1) - LocalObject(2307, Terminal.Constructor(Vector3(3383.966f, 3211.767f, 34.23625f), spawn_terminal), owning_building_guid = 1) - LocalObject(2509, Terminal.Constructor(Vector3(3414.429f, 3242.205f, 42.08125f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1543, VehicleSpawnPad.Constructor(Vector3(3404.849f, 3232.498f, 37.92425f), mb_pad_creation, Vector3(0, 0, 225)), owning_building_guid = 1, terminal_guid = 2509) + LocalObject( + 1616, + Terminal.Constructor(Vector3(3374.105f, 3134.108f, 41.50825f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1617, + Terminal.Constructor(Vector3(3374.111f, 3165.884f, 41.50825f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1618, + Terminal.Constructor(Vector3(3380.144f, 3147.705f, 34.26925f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1619, + Terminal.Constructor(Vector3(3382.782f, 3150.343f, 34.26925f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1620, + Terminal.Constructor(Vector3(3385.462f, 3153.022f, 34.26925f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1621, + Terminal.Constructor(Vector3(3405.892f, 3165.895f, 41.50825f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2302, + Terminal.Constructor(Vector3(3367.524f, 3154.435f, 34.81325f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2303, + Terminal.Constructor(Vector3(3372.677f, 3159.594f, 34.81325f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2304, + Terminal.Constructor(Vector3(3377.833f, 3164.745f, 34.81325f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2305, + Terminal.Constructor(Vector3(3382.926f, 3150.71f, 46.70725f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2306, + Terminal.Constructor(Vector3(3383.966f, 3177.825f, 26.73625f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2307, + Terminal.Constructor(Vector3(3383.966f, 3211.767f, 34.23625f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2509, + Terminal.Constructor(Vector3(3414.429f, 3242.205f, 42.08125f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1543, + VehicleSpawnPad.Constructor(Vector3(3404.849f, 3232.498f, 37.92425f), mb_pad_creation, Vector3(0, 0, 225)), + owning_building_guid = 1, + terminal_guid = 2509 + ) LocalObject(2170, ResourceSilo.Constructor(Vector3(3366.771f, 3052.32f, 47.21425f)), owning_building_guid = 1) - LocalObject(2203, SpawnTube.Constructor(Vector3(3368.02f, 3155.975f, 32.67925f), Vector3(0, 0, 45)), owning_building_guid = 1) - LocalObject(2204, SpawnTube.Constructor(Vector3(3373.176f, 3161.131f, 32.67925f), Vector3(0, 0, 45)), owning_building_guid = 1) - LocalObject(2205, SpawnTube.Constructor(Vector3(3378.329f, 3166.284f, 32.67925f), Vector3(0, 0, 45)), owning_building_guid = 1) - LocalObject(1561, ProximityTerminal.Constructor(Vector3(3374.406f, 3165.586f, 45.17925f), medical_terminal), owning_building_guid = 1) - LocalObject(1562, ProximityTerminal.Constructor(Vector3(3399.945f, 3148.003f, 25.17925f), medical_terminal), owning_building_guid = 1) - LocalObject(1788, ProximityTerminal.Constructor(Vector3(3343.899f, 3092.164f, 48.50725f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1789, Terminal.Constructor(Vector3(3343.899f, 3092.164f, 48.50725f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1791, ProximityTerminal.Constructor(Vector3(3363.5f, 3204.461f, 48.48425f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1792, Terminal.Constructor(Vector3(3363.5f, 3204.461f, 48.48425f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1797, ProximityTerminal.Constructor(Vector3(3410.889f, 3101.062f, 48.48425f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1798, Terminal.Constructor(Vector3(3410.889f, 3101.062f, 48.48425f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1803, ProximityTerminal.Constructor(Vector3(3449.403f, 3171.79f, 50.64525f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1804, Terminal.Constructor(Vector3(3449.403f, 3171.79f, 50.64525f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2099, ProximityTerminal.Constructor(Vector3(3340.578f, 3199.71f, 39.37925f), repair_silo), owning_building_guid = 1) - LocalObject(2100, Terminal.Constructor(Vector3(3340.578f, 3199.71f, 39.37925f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2111, ProximityTerminal.Constructor(Vector3(3434.348f, 3106.208f, 39.37925f), repair_silo), owning_building_guid = 1) - LocalObject(2112, Terminal.Constructor(Vector3(3434.348f, 3106.208f, 39.37925f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1461, FacilityTurret.Constructor(Vector3(3264.536f, 3138.514f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 2203, + SpawnTube.Constructor(Vector3(3368.02f, 3155.975f, 32.67925f), Vector3(0, 0, 45)), + owning_building_guid = 1 + ) + LocalObject( + 2204, + SpawnTube.Constructor(Vector3(3373.176f, 3161.131f, 32.67925f), Vector3(0, 0, 45)), + owning_building_guid = 1 + ) + LocalObject( + 2205, + SpawnTube.Constructor(Vector3(3378.329f, 3166.284f, 32.67925f), Vector3(0, 0, 45)), + owning_building_guid = 1 + ) + LocalObject( + 1561, + ProximityTerminal.Constructor(Vector3(3374.406f, 3165.586f, 45.17925f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1562, + ProximityTerminal.Constructor(Vector3(3399.945f, 3148.003f, 25.17925f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1788, + ProximityTerminal.Constructor(Vector3(3343.899f, 3092.164f, 48.50725f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1789, + Terminal.Constructor(Vector3(3343.899f, 3092.164f, 48.50725f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1791, + ProximityTerminal.Constructor(Vector3(3363.5f, 3204.461f, 48.48425f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1792, + Terminal.Constructor(Vector3(3363.5f, 3204.461f, 48.48425f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1797, + ProximityTerminal.Constructor(Vector3(3410.889f, 3101.062f, 48.48425f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1798, + Terminal.Constructor(Vector3(3410.889f, 3101.062f, 48.48425f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1803, + ProximityTerminal.Constructor(Vector3(3449.403f, 3171.79f, 50.64525f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1804, + Terminal.Constructor(Vector3(3449.403f, 3171.79f, 50.64525f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2099, + ProximityTerminal.Constructor(Vector3(3340.578f, 3199.71f, 39.37925f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2100, + Terminal.Constructor(Vector3(3340.578f, 3199.71f, 39.37925f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2111, + ProximityTerminal.Constructor(Vector3(3434.348f, 3106.208f, 39.37925f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2112, + Terminal.Constructor(Vector3(3434.348f, 3106.208f, 39.37925f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1461, + FacilityTurret.Constructor(Vector3(3264.536f, 3138.514f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1461, 5000) - LocalObject(1463, FacilityTurret.Constructor(Vector3(3305.095f, 3094.805f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 1463, + FacilityTurret.Constructor(Vector3(3305.095f, 3094.805f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1463, 5001) - LocalObject(1467, FacilityTurret.Constructor(Vector3(3373.02f, 3030.016f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 1467, + FacilityTurret.Constructor(Vector3(3373.02f, 3030.016f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1467, 5002) - LocalObject(1470, FacilityTurret.Constructor(Vector3(3407.123f, 3281.142f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 1470, + FacilityTurret.Constructor(Vector3(3407.123f, 3281.142f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1470, 5003) - LocalObject(1474, FacilityTurret.Constructor(Vector3(3472.384f, 3126.231f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 1474, + FacilityTurret.Constructor(Vector3(3472.384f, 3126.231f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1474, 5004) - LocalObject(1477, FacilityTurret.Constructor(Vector3(3515.634f, 3172.617f, 48.68725f), manned_turret), owning_building_guid = 1) + LocalObject( + 1477, + FacilityTurret.Constructor(Vector3(3515.634f, 3172.617f, 48.68725f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1477, 5005) - LocalObject(1944, Painbox.Constructor(Vector3(3342.813f, 3187.453f, 30.05025f), painbox), owning_building_guid = 1) - LocalObject(1955, Painbox.Constructor(Vector3(3380.236f, 3157.765f, 37.62765f), painbox_continuous), owning_building_guid = 1) - LocalObject(1966, Painbox.Constructor(Vector3(3354.248f, 3179.026f, 26.63825f), painbox_door_radius), owning_building_guid = 1) - LocalObject(1983, Painbox.Constructor(Vector3(3369.449f, 3146.419f, 33.87925f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1984, Painbox.Constructor(Vector3(3388.132f, 3164.998f, 33.94375f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1985, Painbox.Constructor(Vector3(3393.836f, 3151.761f, 35.85785f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 1944, + Painbox.Constructor(Vector3(3342.813f, 3187.453f, 30.05025f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 1955, + Painbox.Constructor(Vector3(3380.236f, 3157.765f, 37.62765f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1966, + Painbox.Constructor(Vector3(3354.248f, 3179.026f, 26.63825f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 1983, + Painbox.Constructor(Vector3(3369.449f, 3146.419f, 33.87925f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1984, + Painbox.Constructor(Vector3(3388.132f, 3164.998f, 33.94375f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1985, + Painbox.Constructor(Vector3(3393.836f, 3151.761f, 35.85785f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(254, Generator.Constructor(Vector3(3342.214f, 3192.094f, 23.88525f)), owning_building_guid = 1) - LocalObject(243, Terminal.Constructor(Vector3(3348.04f, 3186.335f, 25.17925f), gen_control), owning_building_guid = 1) + LocalObject( + 243, + Terminal.Constructor(Vector3(3348.04f, 3186.335f, 25.17925f), gen_control), + owning_building_guid = 1 + ) } Building46() def Building46(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 46 - LocalBuilding("bunker_gauntlet", 4, 46, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2598f, 3700f, 41.29307f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 46, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2598f, 3700f, 41.29307f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(307, Door.Constructor(Vector3(2596.099f, 3675.077f, 42.81407f)), owning_building_guid = 4) LocalObject(308, Door.Constructor(Vector3(2596.088f, 3724.898f, 42.81407f)), owning_building_guid = 4) } @@ -159,7 +424,19 @@ object Map02 { // Hossin Building44() def Building44(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 44 - LocalBuilding("bunker_gauntlet", 5, 44, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3474f, 3242f, 39.97925f), Vector3(0f, 0f, 315f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 44, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3474f, 3242f, 39.97925f), + Vector3(0f, 0f, 315f), + bunker_gauntlet + ) + ) + ) LocalObject(372, Door.Constructor(Vector3(3455.042f, 3258.254f, 41.50025f)), owning_building_guid = 5) LocalObject(379, Door.Constructor(Vector3(3490.279f, 3223.032f, 41.50025f)), owning_building_guid = 5) } @@ -167,7 +444,19 @@ object Map02 { // Hossin Building47() def Building47(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 47 - LocalBuilding("bunker_gauntlet", 6, 47, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4580f, 3462f, 28.62407f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 47, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4580f, 3462f, 28.62407f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(450, Door.Constructor(Vector3(4578.099f, 3437.077f, 30.14507f)), owning_building_guid = 6) LocalObject(451, Door.Constructor(Vector3(4578.088f, 3486.898f, 30.14507f)), owning_building_guid = 6) } @@ -175,7 +464,19 @@ object Map02 { // Hossin Building45() def Building45(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 45 - LocalBuilding("bunker_gauntlet", 7, 45, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5404f, 3430f, 27.68258f), Vector3(0f, 0f, 180f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 45, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(5404f, 3430f, 27.68258f), + Vector3(0f, 0f, 180f), + bunker_gauntlet + ) + ) + ) LocalObject(479, Door.Constructor(Vector3(5379.077f, 3431.901f, 29.20358f)), owning_building_guid = 7) LocalObject(484, Door.Constructor(Vector3(5428.898f, 3431.912f, 29.20358f)), owning_building_guid = 7) } @@ -183,71 +484,150 @@ object Map02 { // Hossin Building36() def Building36(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 8, MapID: 36 - LocalBuilding("bunker_lg", 8, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2234f, 3870f, 33.47842f), Vector3(0f, 0f, 315f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 8, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2234f, 3870f, 33.47842f), Vector3(0f, 0f, 315f), bunker_lg) + ) + ) LocalObject(289, Door.Constructor(Vector3(2237.651f, 3869.965f, 34.99942f)), owning_building_guid = 8) } Building41() def Building41(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 41 - LocalBuilding("bunker_lg", 9, 41, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3218f, 5222f, 13.92865f), Vector3(0f, 0f, 44f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 41, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3218f, 5222f, 13.92865f), Vector3(0f, 0f, 44f), bunker_lg) + ) + ) LocalObject(325, Door.Constructor(Vector3(3218.098f, 5225.649f, 15.44965f)), owning_building_guid = 9) } Building34() def Building34(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 34 - LocalBuilding("bunker_lg", 10, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3448f, 2944f, 38.54488f), Vector3(0f, 0f, 360f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3448f, 2944f, 38.54488f), Vector3(0f, 0f, 360f), bunker_lg) + ) + ) LocalObject(370, Door.Constructor(Vector3(3450.606f, 2946.557f, 40.06588f)), owning_building_guid = 10) } Building43() def Building43(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 11, MapID: 43 - LocalBuilding("bunker_lg", 11, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3544f, 3970f, 30.07141f), Vector3(0f, 0f, 90f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 11, + 43, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3544f, 3970f, 30.07141f), Vector3(0f, 0f, 90f), bunker_lg) + ) + ) LocalObject(382, Door.Constructor(Vector3(3541.443f, 3972.606f, 31.59241f)), owning_building_guid = 11) } Building35() def Building35(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 12, MapID: 35 - LocalBuilding("bunker_lg", 12, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4028f, 3712f, 29.54496f), Vector3(0f, 0f, 270f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 12, + 35, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4028f, 3712f, 29.54496f), Vector3(0f, 0f, 270f), bunker_lg) + ) + ) LocalObject(405, Door.Constructor(Vector3(4030.557f, 3709.394f, 31.06596f)), owning_building_guid = 12) } Building38() def Building38(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 13, MapID: 38 - LocalBuilding("bunker_lg", 13, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5520f, 3804f, 18.05474f), Vector3(0f, 0f, 270f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 13, + 38, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5520f, 3804f, 18.05474f), Vector3(0f, 0f, 270f), bunker_lg) + ) + ) LocalObject(491, Door.Constructor(Vector3(5522.557f, 3801.394f, 19.57574f)), owning_building_guid = 13) } Building37() def Building37(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 37 - LocalBuilding("bunker_sm", 14, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3826f, 6192f, 29.88374f), Vector3(0f, 0f, 44f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 37, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3826f, 6192f, 29.88374f), Vector3(0f, 0f, 44f), bunker_sm) + ) + ) LocalObject(393, Door.Constructor(Vector3(3826.919f, 6192.812f, 31.40474f)), owning_building_guid = 14) } Building39() def Building39(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 15, MapID: 39 - LocalBuilding("bunker_sm", 15, 39, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4678f, 3042f, 24.19964f), Vector3(0f, 0f, 89f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 15, + 39, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4678f, 3042f, 24.19964f), Vector3(0f, 0f, 89f), bunker_sm) + ) + ) LocalObject(452, Door.Constructor(Vector3(4678.076f, 3043.224f, 25.72064f)), owning_building_guid = 15) } Building40() def Building40(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 40 - LocalBuilding("bunker_sm", 16, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6606f, 2274f, 130.5399f), Vector3(0f, 0f, 270f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6606f, 2274f, 130.5399f), Vector3(0f, 0f, 270f), bunker_sm) + ) + ) LocalObject(520, Door.Constructor(Vector3(6605.945f, 2272.775f, 132.0609f)), owning_building_guid = 16) } Building48() def Building48(): Unit = { // Name: Hurakan Type: comm_station GUID: 17, MapID: 48 - LocalBuilding("Hurakan", 17, 48, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1904f, 2988f, 38.46553f), Vector3(0f, 0f, 270f), comm_station))) - LocalObject(183, CaptureTerminal.Constructor(Vector3(1980.734f, 2943.911f, 21.16553f), capture_terminal), owning_building_guid = 17) + LocalBuilding( + "Hurakan", + 17, + 48, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1904f, 2988f, 38.46553f), + Vector3(0f, 0f, 270f), + comm_station + ) + ) + ) + LocalObject( + 183, + CaptureTerminal.Constructor(Vector3(1980.734f, 2943.911f, 21.16553f), capture_terminal), + owning_building_guid = 17 + ) LocalObject(266, Door.Constructor(Vector3(1836.197f, 3012.5f, 40.21653f)), owning_building_guid = 17) LocalObject(267, Door.Constructor(Vector3(1836.197f, 3030.693f, 48.18053f)), owning_building_guid = 17) LocalObject(268, Door.Constructor(Vector3(1860.5f, 3047.804f, 40.21653f)), owning_building_guid = 17) @@ -289,18 +669,78 @@ object Map02 { // Hossin LocalObject(2360, Door.Constructor(Vector3(1917.733f, 2951.327f, 30.51953f)), owning_building_guid = 17) LocalObject(2361, Door.Constructor(Vector3(1925.026f, 2951.327f, 30.51953f)), owning_building_guid = 17) LocalObject(2362, Door.Constructor(Vector3(1932.315f, 2951.327f, 30.51953f)), owning_building_guid = 17) - LocalObject(823, IFFLock.Constructor(Vector3(1903.13f, 2967.547f, 40.11753f), Vector3(0, 0, 180)), owning_building_guid = 17, door_guid = 783) - LocalObject(841, IFFLock.Constructor(Vector3(1894.42f, 3005.953f, 45.12653f), Vector3(0, 0, 270)), owning_building_guid = 17, door_guid = 271) - LocalObject(842, IFFLock.Constructor(Vector3(1894.511f, 2993.183f, 52.54653f), Vector3(0, 0, 0)), owning_building_guid = 17, door_guid = 272) - LocalObject(843, IFFLock.Constructor(Vector3(1905.105f, 3010.043f, 45.12653f), Vector3(0, 0, 90)), owning_building_guid = 17, door_guid = 273) - LocalObject(844, IFFLock.Constructor(Vector3(1911.19f, 2942.428f, 30.00153f), Vector3(0, 0, 270)), owning_building_guid = 17, door_guid = 544) - LocalObject(845, IFFLock.Constructor(Vector3(1914.428f, 2932.94f, 22.50153f), Vector3(0, 0, 0)), owning_building_guid = 17, door_guid = 548) - LocalObject(846, IFFLock.Constructor(Vector3(1921.955f, 2980.813f, 45.12653f), Vector3(0, 0, 0)), owning_building_guid = 17, door_guid = 275) - LocalObject(847, IFFLock.Constructor(Vector3(1927.06f, 3006.428f, 22.50153f), Vector3(0, 0, 270)), owning_building_guid = 17, door_guid = 554) - LocalObject(848, IFFLock.Constructor(Vector3(1936.81f, 2945.572f, 30.00153f), Vector3(0, 0, 90)), owning_building_guid = 17, door_guid = 556) - LocalObject(849, IFFLock.Constructor(Vector3(1970.428f, 2948.813f, 22.50153f), Vector3(0, 0, 0)), owning_building_guid = 17, door_guid = 565) - LocalObject(850, IFFLock.Constructor(Vector3(1973.572f, 2939.187f, 22.50153f), Vector3(0, 0, 180)), owning_building_guid = 17, door_guid = 564) - LocalObject(851, IFFLock.Constructor(Vector3(1982.033f, 2955.222f, 40.11553f), Vector3(0, 0, 180)), owning_building_guid = 17, door_guid = 278) + LocalObject( + 823, + IFFLock.Constructor(Vector3(1903.13f, 2967.547f, 40.11753f), Vector3(0, 0, 180)), + owning_building_guid = 17, + door_guid = 783 + ) + LocalObject( + 841, + IFFLock.Constructor(Vector3(1894.42f, 3005.953f, 45.12653f), Vector3(0, 0, 270)), + owning_building_guid = 17, + door_guid = 271 + ) + LocalObject( + 842, + IFFLock.Constructor(Vector3(1894.511f, 2993.183f, 52.54653f), Vector3(0, 0, 0)), + owning_building_guid = 17, + door_guid = 272 + ) + LocalObject( + 843, + IFFLock.Constructor(Vector3(1905.105f, 3010.043f, 45.12653f), Vector3(0, 0, 90)), + owning_building_guid = 17, + door_guid = 273 + ) + LocalObject( + 844, + IFFLock.Constructor(Vector3(1911.19f, 2942.428f, 30.00153f), Vector3(0, 0, 270)), + owning_building_guid = 17, + door_guid = 544 + ) + LocalObject( + 845, + IFFLock.Constructor(Vector3(1914.428f, 2932.94f, 22.50153f), Vector3(0, 0, 0)), + owning_building_guid = 17, + door_guid = 548 + ) + LocalObject( + 846, + IFFLock.Constructor(Vector3(1921.955f, 2980.813f, 45.12653f), Vector3(0, 0, 0)), + owning_building_guid = 17, + door_guid = 275 + ) + LocalObject( + 847, + IFFLock.Constructor(Vector3(1927.06f, 3006.428f, 22.50153f), Vector3(0, 0, 270)), + owning_building_guid = 17, + door_guid = 554 + ) + LocalObject( + 848, + IFFLock.Constructor(Vector3(1936.81f, 2945.572f, 30.00153f), Vector3(0, 0, 90)), + owning_building_guid = 17, + door_guid = 556 + ) + LocalObject( + 849, + IFFLock.Constructor(Vector3(1970.428f, 2948.813f, 22.50153f), Vector3(0, 0, 0)), + owning_building_guid = 17, + door_guid = 565 + ) + LocalObject( + 850, + IFFLock.Constructor(Vector3(1973.572f, 2939.187f, 22.50153f), Vector3(0, 0, 180)), + owning_building_guid = 17, + door_guid = 564 + ) + LocalObject( + 851, + IFFLock.Constructor(Vector3(1982.033f, 2955.222f, 40.11553f), Vector3(0, 0, 180)), + owning_building_guid = 17, + door_guid = 278 + ) LocalObject(1061, Locker.Constructor(Vector3(1914.141f, 2936.977f, 28.92653f)), owning_building_guid = 17) LocalObject(1062, Locker.Constructor(Vector3(1914.141f, 2938.126f, 28.92653f)), owning_building_guid = 17) LocalObject(1063, Locker.Constructor(Vector3(1914.141f, 2939.273f, 28.92653f)), owning_building_guid = 17) @@ -313,60 +753,233 @@ object Map02 { // Hossin LocalObject(1070, Locker.Constructor(Vector3(1934.165f, 2927.146f, 21.16553f)), owning_building_guid = 17) LocalObject(1071, Locker.Constructor(Vector3(1934.165f, 2928.482f, 21.16553f)), owning_building_guid = 17) LocalObject(1072, Locker.Constructor(Vector3(1934.165f, 2929.806f, 21.16553f)), owning_building_guid = 17) - LocalObject(1577, Terminal.Constructor(Vector3(1880.907f, 2997.621f, 45.02553f), order_terminal), owning_building_guid = 17) - LocalObject(1578, Terminal.Constructor(Vector3(1894.43f, 2985.669f, 52.42053f), order_terminal), owning_building_guid = 17) - LocalObject(1579, Terminal.Constructor(Vector3(1896.547f, 2987.925f, 52.42053f), order_terminal), owning_building_guid = 17) - LocalObject(1580, Terminal.Constructor(Vector3(1898.825f, 2985.668f, 52.42053f), order_terminal), owning_building_guid = 17) - LocalObject(1581, Terminal.Constructor(Vector3(1919.408f, 2937.346f, 30.25553f), order_terminal), owning_building_guid = 17) - LocalObject(1582, Terminal.Constructor(Vector3(1923.139f, 2937.346f, 30.25553f), order_terminal), owning_building_guid = 17) - LocalObject(1583, Terminal.Constructor(Vector3(1926.928f, 2937.346f, 30.25553f), order_terminal), owning_building_guid = 17) - LocalObject(2283, Terminal.Constructor(Vector3(1879.969f, 2989.49f, 45.28253f), spawn_terminal), owning_building_guid = 17) - LocalObject(2284, Terminal.Constructor(Vector3(1912.591f, 3004.057f, 22.72253f), spawn_terminal), owning_building_guid = 17) - LocalObject(2285, Terminal.Constructor(Vector3(1915.243f, 2951.029f, 30.79953f), spawn_terminal), owning_building_guid = 17) - LocalObject(2286, Terminal.Constructor(Vector3(1922.535f, 2951.033f, 30.79953f), spawn_terminal), owning_building_guid = 17) - LocalObject(2287, Terminal.Constructor(Vector3(1929.823f, 2951.03f, 30.79953f), spawn_terminal), owning_building_guid = 17) - LocalObject(2288, Terminal.Constructor(Vector3(1943.942f, 2988.591f, 32.72253f), spawn_terminal), owning_building_guid = 17) - LocalObject(2505, Terminal.Constructor(Vector3(1958.774f, 2935.542f, 41.35253f), vehicle_terminal_combined), owning_building_guid = 17) - LocalObject(1538, VehicleSpawnPad.Constructor(Vector3(1958.62f, 2949.167f, 37.19453f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 17, terminal_guid = 2505) + LocalObject( + 1577, + Terminal.Constructor(Vector3(1880.907f, 2997.621f, 45.02553f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1578, + Terminal.Constructor(Vector3(1894.43f, 2985.669f, 52.42053f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1579, + Terminal.Constructor(Vector3(1896.547f, 2987.925f, 52.42053f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1580, + Terminal.Constructor(Vector3(1898.825f, 2985.668f, 52.42053f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1581, + Terminal.Constructor(Vector3(1919.408f, 2937.346f, 30.25553f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1582, + Terminal.Constructor(Vector3(1923.139f, 2937.346f, 30.25553f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1583, + Terminal.Constructor(Vector3(1926.928f, 2937.346f, 30.25553f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2283, + Terminal.Constructor(Vector3(1879.969f, 2989.49f, 45.28253f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2284, + Terminal.Constructor(Vector3(1912.591f, 3004.057f, 22.72253f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2285, + Terminal.Constructor(Vector3(1915.243f, 2951.029f, 30.79953f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2286, + Terminal.Constructor(Vector3(1922.535f, 2951.033f, 30.79953f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2287, + Terminal.Constructor(Vector3(1929.823f, 2951.03f, 30.79953f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2288, + Terminal.Constructor(Vector3(1943.942f, 2988.591f, 32.72253f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2505, + Terminal.Constructor(Vector3(1958.774f, 2935.542f, 41.35253f), vehicle_terminal_combined), + owning_building_guid = 17 + ) + LocalObject( + 1538, + VehicleSpawnPad.Constructor(Vector3(1958.62f, 2949.167f, 37.19453f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 17, + terminal_guid = 2505 + ) LocalObject(2167, ResourceSilo.Constructor(Vector3(1834.908f, 3043.77f, 45.68253f)), owning_building_guid = 17) - LocalObject(2180, SpawnTube.Constructor(Vector3(1916.683f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), owning_building_guid = 17) - LocalObject(2181, SpawnTube.Constructor(Vector3(1923.974f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), owning_building_guid = 17) - LocalObject(2182, SpawnTube.Constructor(Vector3(1931.262f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), owning_building_guid = 17) - LocalObject(1555, ProximityTerminal.Constructor(Vector3(1875.023f, 2987.136f, 38.66553f), medical_terminal), owning_building_guid = 17) - LocalObject(1556, ProximityTerminal.Constructor(Vector3(1933.62f, 2923.556f, 21.16553f), medical_terminal), owning_building_guid = 17) - LocalObject(1764, ProximityTerminal.Constructor(Vector3(1959.185f, 3006.846f, 46.90653f), pad_landing_frame), owning_building_guid = 17) - LocalObject(1765, Terminal.Constructor(Vector3(1959.185f, 3006.846f, 46.90653f), air_rearm_terminal), owning_building_guid = 17) - LocalObject(2079, ProximityTerminal.Constructor(Vector3(1879.67f, 2926.359f, 38.21553f), repair_silo), owning_building_guid = 17) - LocalObject(2080, Terminal.Constructor(Vector3(1879.67f, 2926.359f, 38.21553f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(2083, ProximityTerminal.Constructor(Vector3(1927.18f, 3049.088f, 38.21553f), repair_silo), owning_building_guid = 17) - LocalObject(2084, Terminal.Constructor(Vector3(1927.18f, 3049.088f, 38.21553f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(1440, FacilityTurret.Constructor(Vector3(1822.388f, 2957.135f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 2180, + SpawnTube.Constructor(Vector3(1916.683f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), + owning_building_guid = 17 + ) + LocalObject( + 2181, + SpawnTube.Constructor(Vector3(1923.974f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), + owning_building_guid = 17 + ) + LocalObject( + 2182, + SpawnTube.Constructor(Vector3(1931.262f, 2951.767f, 28.66553f), Vector3(0, 0, 90)), + owning_building_guid = 17 + ) + LocalObject( + 1555, + ProximityTerminal.Constructor(Vector3(1875.023f, 2987.136f, 38.66553f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1556, + ProximityTerminal.Constructor(Vector3(1933.62f, 2923.556f, 21.16553f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1764, + ProximityTerminal.Constructor(Vector3(1959.185f, 3006.846f, 46.90653f), pad_landing_frame), + owning_building_guid = 17 + ) + LocalObject( + 1765, + Terminal.Constructor(Vector3(1959.185f, 3006.846f, 46.90653f), air_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2079, + ProximityTerminal.Constructor(Vector3(1879.67f, 2926.359f, 38.21553f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 2080, + Terminal.Constructor(Vector3(1879.67f, 2926.359f, 38.21553f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2083, + ProximityTerminal.Constructor(Vector3(1927.18f, 3049.088f, 38.21553f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 2084, + Terminal.Constructor(Vector3(1927.18f, 3049.088f, 38.21553f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1440, + FacilityTurret.Constructor(Vector3(1822.388f, 2957.135f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1440, 5006) - LocalObject(1441, FacilityTurret.Constructor(Vector3(1823.565f, 3060.446f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 1441, + FacilityTurret.Constructor(Vector3(1823.565f, 3060.446f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1441, 5007) - LocalObject(1443, FacilityTurret.Constructor(Vector3(1865.501f, 2913.99f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 1443, + FacilityTurret.Constructor(Vector3(1865.501f, 2913.99f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1443, 5008) - LocalObject(1444, FacilityTurret.Constructor(Vector3(1942.652f, 3061.576f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 1444, + FacilityTurret.Constructor(Vector3(1942.652f, 3061.576f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1444, 5009) - LocalObject(1445, FacilityTurret.Constructor(Vector3(1984.435f, 2915.159f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 1445, + FacilityTurret.Constructor(Vector3(1984.435f, 2915.159f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1445, 5010) - LocalObject(1446, FacilityTurret.Constructor(Vector3(1985.75f, 3018.451f, 47.17353f), manned_turret), owning_building_guid = 17) + LocalObject( + 1446, + FacilityTurret.Constructor(Vector3(1985.75f, 3018.451f, 47.17353f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1446, 5011) - LocalObject(1941, Painbox.Constructor(Vector3(1940.089f, 3007.862f, 26.06753f), painbox), owning_building_guid = 17) - LocalObject(1952, Painbox.Constructor(Vector3(1930.17f, 2941.785f, 33.11033f), painbox_continuous), owning_building_guid = 17) - LocalObject(1963, Painbox.Constructor(Vector3(1925.073f, 3007.763f, 23.92423f), painbox_door_radius), owning_building_guid = 17) - LocalObject(1974, Painbox.Constructor(Vector3(1910.076f, 2944.086f, 30.49153f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1975, Painbox.Constructor(Vector3(1931.827f, 2930.145f, 31.49153f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1976, Painbox.Constructor(Vector3(1937.42f, 2943.19f, 30.27323f), painbox_door_radius_continuous), owning_building_guid = 17) + LocalObject( + 1941, + Painbox.Constructor(Vector3(1940.089f, 3007.862f, 26.06753f), painbox), + owning_building_guid = 17 + ) + LocalObject( + 1952, + Painbox.Constructor(Vector3(1930.17f, 2941.785f, 33.11033f), painbox_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1963, + Painbox.Constructor(Vector3(1925.073f, 3007.763f, 23.92423f), painbox_door_radius), + owning_building_guid = 17 + ) + LocalObject( + 1974, + Painbox.Constructor(Vector3(1910.076f, 2944.086f, 30.49153f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1975, + Painbox.Constructor(Vector3(1931.827f, 2930.145f, 31.49153f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1976, + Painbox.Constructor(Vector3(1937.42f, 2943.19f, 30.27323f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) LocalObject(251, Generator.Constructor(Vector3(1943.555f, 3008.025f, 19.87153f)), owning_building_guid = 17) - LocalObject(240, Terminal.Constructor(Vector3(1935.363f, 3007.978f, 21.16553f), gen_control), owning_building_guid = 17) + LocalObject( + 240, + Terminal.Constructor(Vector3(1935.363f, 3007.978f, 21.16553f), gen_control), + owning_building_guid = 17 + ) } Building13() def Building13(): Unit = { // Name: Kisin Type: comm_station GUID: 20, MapID: 13 - LocalBuilding("Kisin", 20, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3296f, 5426f, 31.04343f), Vector3(0f, 0f, 360f), comm_station))) - LocalObject(185, CaptureTerminal.Constructor(Vector3(3340.089f, 5502.734f, 13.74343f), capture_terminal), owning_building_guid = 20) + LocalBuilding( + "Kisin", + 20, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3296f, 5426f, 31.04343f), + Vector3(0f, 0f, 360f), + comm_station + ) + ) + ) + LocalObject( + 185, + CaptureTerminal.Constructor(Vector3(3340.089f, 5502.734f, 13.74343f), capture_terminal), + owning_building_guid = 20 + ) LocalObject(326, Door.Constructor(Vector3(3236.196f, 5382.5f, 32.79443f)), owning_building_guid = 20) LocalObject(327, Door.Constructor(Vector3(3236.196f, 5400.693f, 40.75843f)), owning_building_guid = 20) LocalObject(328, Door.Constructor(Vector3(3253.307f, 5358.197f, 40.75843f)), owning_building_guid = 20) @@ -408,18 +1021,78 @@ object Map02 { // Hossin LocalObject(2380, Door.Constructor(Vector3(3332.673f, 5439.733f, 23.09743f)), owning_building_guid = 20) LocalObject(2381, Door.Constructor(Vector3(3332.673f, 5447.026f, 23.09743f)), owning_building_guid = 20) LocalObject(2382, Door.Constructor(Vector3(3332.673f, 5454.315f, 23.09743f)), owning_building_guid = 20) - LocalObject(825, IFFLock.Constructor(Vector3(3316.453f, 5425.13f, 32.69543f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 785) - LocalObject(890, IFFLock.Constructor(Vector3(3273.957f, 5427.105f, 37.70443f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 331) - LocalObject(891, IFFLock.Constructor(Vector3(3277.572f, 5449.06f, 15.07943f), Vector3(0, 0, 180)), owning_building_guid = 20, door_guid = 588) - LocalObject(892, IFFLock.Constructor(Vector3(3278.047f, 5416.42f, 37.70443f), Vector3(0, 0, 180)), owning_building_guid = 20, door_guid = 330) - LocalObject(893, IFFLock.Constructor(Vector3(3290.817f, 5416.511f, 45.12443f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 332) - LocalObject(894, IFFLock.Constructor(Vector3(3303.187f, 5443.955f, 37.70443f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 335) - LocalObject(901, IFFLock.Constructor(Vector3(3328.778f, 5504.033f, 32.69343f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 344) - LocalObject(902, IFFLock.Constructor(Vector3(3335.187f, 5492.428f, 15.07943f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 602) - LocalObject(903, IFFLock.Constructor(Vector3(3338.428f, 5458.81f, 22.57943f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 604) - LocalObject(904, IFFLock.Constructor(Vector3(3341.572f, 5433.19f, 22.57943f), Vector3(0, 0, 180)), owning_building_guid = 20, door_guid = 603) - LocalObject(905, IFFLock.Constructor(Vector3(3344.813f, 5495.572f, 15.07943f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 605) - LocalObject(906, IFFLock.Constructor(Vector3(3351.06f, 5436.428f, 15.07943f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 606) + LocalObject( + 825, + IFFLock.Constructor(Vector3(3316.453f, 5425.13f, 32.69543f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 785 + ) + LocalObject( + 890, + IFFLock.Constructor(Vector3(3273.957f, 5427.105f, 37.70443f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 331 + ) + LocalObject( + 891, + IFFLock.Constructor(Vector3(3277.572f, 5449.06f, 15.07943f), Vector3(0, 0, 180)), + owning_building_guid = 20, + door_guid = 588 + ) + LocalObject( + 892, + IFFLock.Constructor(Vector3(3278.047f, 5416.42f, 37.70443f), Vector3(0, 0, 180)), + owning_building_guid = 20, + door_guid = 330 + ) + LocalObject( + 893, + IFFLock.Constructor(Vector3(3290.817f, 5416.511f, 45.12443f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 332 + ) + LocalObject( + 894, + IFFLock.Constructor(Vector3(3303.187f, 5443.955f, 37.70443f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 335 + ) + LocalObject( + 901, + IFFLock.Constructor(Vector3(3328.778f, 5504.033f, 32.69343f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 344 + ) + LocalObject( + 902, + IFFLock.Constructor(Vector3(3335.187f, 5492.428f, 15.07943f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 602 + ) + LocalObject( + 903, + IFFLock.Constructor(Vector3(3338.428f, 5458.81f, 22.57943f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 604 + ) + LocalObject( + 904, + IFFLock.Constructor(Vector3(3341.572f, 5433.19f, 22.57943f), Vector3(0, 0, 180)), + owning_building_guid = 20, + door_guid = 603 + ) + LocalObject( + 905, + IFFLock.Constructor(Vector3(3344.813f, 5495.572f, 15.07943f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 605 + ) + LocalObject( + 906, + IFFLock.Constructor(Vector3(3351.06f, 5436.428f, 15.07943f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 606 + ) LocalObject(1141, Locker.Constructor(Vector3(3343.563f, 5436.141f, 21.50443f)), owning_building_guid = 20) LocalObject(1142, Locker.Constructor(Vector3(3344.727f, 5436.141f, 21.50443f)), owning_building_guid = 20) LocalObject(1143, Locker.Constructor(Vector3(3345.874f, 5436.141f, 21.50443f)), owning_building_guid = 20) @@ -432,60 +1105,233 @@ object Map02 { // Hossin LocalObject(1150, Locker.Constructor(Vector3(3364.055f, 5456.165f, 13.74343f)), owning_building_guid = 20) LocalObject(1151, Locker.Constructor(Vector3(3365.391f, 5456.165f, 13.74343f)), owning_building_guid = 20) LocalObject(1152, Locker.Constructor(Vector3(3366.728f, 5456.165f, 13.74343f)), owning_building_guid = 20) - LocalObject(1606, Terminal.Constructor(Vector3(3286.379f, 5402.907f, 37.60343f), order_terminal), owning_building_guid = 20) - LocalObject(1607, Terminal.Constructor(Vector3(3296.075f, 5418.547f, 44.99843f), order_terminal), owning_building_guid = 20) - LocalObject(1608, Terminal.Constructor(Vector3(3298.331f, 5416.43f, 44.99843f), order_terminal), owning_building_guid = 20) - LocalObject(1609, Terminal.Constructor(Vector3(3298.332f, 5420.825f, 44.99843f), order_terminal), owning_building_guid = 20) - LocalObject(1613, Terminal.Constructor(Vector3(3346.654f, 5441.408f, 22.83343f), order_terminal), owning_building_guid = 20) - LocalObject(1614, Terminal.Constructor(Vector3(3346.654f, 5445.139f, 22.83343f), order_terminal), owning_building_guid = 20) - LocalObject(1615, Terminal.Constructor(Vector3(3346.654f, 5448.928f, 22.83343f), order_terminal), owning_building_guid = 20) - LocalObject(2296, Terminal.Constructor(Vector3(3279.943f, 5434.591f, 15.30043f), spawn_terminal), owning_building_guid = 20) - LocalObject(2297, Terminal.Constructor(Vector3(3294.51f, 5401.969f, 37.86043f), spawn_terminal), owning_building_guid = 20) - LocalObject(2298, Terminal.Constructor(Vector3(3295.409f, 5465.942f, 25.30043f), spawn_terminal), owning_building_guid = 20) - LocalObject(2299, Terminal.Constructor(Vector3(3332.971f, 5437.243f, 23.37743f), spawn_terminal), owning_building_guid = 20) - LocalObject(2300, Terminal.Constructor(Vector3(3332.967f, 5444.535f, 23.37743f), spawn_terminal), owning_building_guid = 20) - LocalObject(2301, Terminal.Constructor(Vector3(3332.97f, 5451.823f, 23.37743f), spawn_terminal), owning_building_guid = 20) - LocalObject(2507, Terminal.Constructor(Vector3(3348.458f, 5480.774f, 33.93043f), vehicle_terminal_combined), owning_building_guid = 20) - LocalObject(1542, VehicleSpawnPad.Constructor(Vector3(3334.833f, 5480.62f, 29.77243f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 20, terminal_guid = 2507) + LocalObject( + 1606, + Terminal.Constructor(Vector3(3286.379f, 5402.907f, 37.60343f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1607, + Terminal.Constructor(Vector3(3296.075f, 5418.547f, 44.99843f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1608, + Terminal.Constructor(Vector3(3298.331f, 5416.43f, 44.99843f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1609, + Terminal.Constructor(Vector3(3298.332f, 5420.825f, 44.99843f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1613, + Terminal.Constructor(Vector3(3346.654f, 5441.408f, 22.83343f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1614, + Terminal.Constructor(Vector3(3346.654f, 5445.139f, 22.83343f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1615, + Terminal.Constructor(Vector3(3346.654f, 5448.928f, 22.83343f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2296, + Terminal.Constructor(Vector3(3279.943f, 5434.591f, 15.30043f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2297, + Terminal.Constructor(Vector3(3294.51f, 5401.969f, 37.86043f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2298, + Terminal.Constructor(Vector3(3295.409f, 5465.942f, 25.30043f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2299, + Terminal.Constructor(Vector3(3332.971f, 5437.243f, 23.37743f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2300, + Terminal.Constructor(Vector3(3332.967f, 5444.535f, 23.37743f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2301, + Terminal.Constructor(Vector3(3332.97f, 5451.823f, 23.37743f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2507, + Terminal.Constructor(Vector3(3348.458f, 5480.774f, 33.93043f), vehicle_terminal_combined), + owning_building_guid = 20 + ) + LocalObject( + 1542, + VehicleSpawnPad.Constructor(Vector3(3334.833f, 5480.62f, 29.77243f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 20, + terminal_guid = 2507 + ) LocalObject(2169, ResourceSilo.Constructor(Vector3(3240.23f, 5356.908f, 38.26043f)), owning_building_guid = 20) - LocalObject(2200, SpawnTube.Constructor(Vector3(3332.233f, 5438.683f, 21.24343f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(2201, SpawnTube.Constructor(Vector3(3332.233f, 5445.974f, 21.24343f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(2202, SpawnTube.Constructor(Vector3(3332.233f, 5453.262f, 21.24343f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(1559, ProximityTerminal.Constructor(Vector3(3296.864f, 5397.023f, 31.24343f), medical_terminal), owning_building_guid = 20) - LocalObject(1560, ProximityTerminal.Constructor(Vector3(3360.444f, 5455.62f, 13.74343f), medical_terminal), owning_building_guid = 20) - LocalObject(1785, ProximityTerminal.Constructor(Vector3(3277.154f, 5481.185f, 39.48443f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1786, Terminal.Constructor(Vector3(3277.154f, 5481.185f, 39.48443f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(2095, ProximityTerminal.Constructor(Vector3(3234.912f, 5449.18f, 30.79343f), repair_silo), owning_building_guid = 20) - LocalObject(2096, Terminal.Constructor(Vector3(3234.912f, 5449.18f, 30.79343f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(2103, ProximityTerminal.Constructor(Vector3(3357.641f, 5401.67f, 30.79343f), repair_silo), owning_building_guid = 20) - LocalObject(2104, Terminal.Constructor(Vector3(3357.641f, 5401.67f, 30.79343f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(1459, FacilityTurret.Constructor(Vector3(3222.424f, 5464.652f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 2200, + SpawnTube.Constructor(Vector3(3332.233f, 5438.683f, 21.24343f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 2201, + SpawnTube.Constructor(Vector3(3332.233f, 5445.974f, 21.24343f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 2202, + SpawnTube.Constructor(Vector3(3332.233f, 5453.262f, 21.24343f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 1559, + ProximityTerminal.Constructor(Vector3(3296.864f, 5397.023f, 31.24343f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1560, + ProximityTerminal.Constructor(Vector3(3360.444f, 5455.62f, 13.74343f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1785, + ProximityTerminal.Constructor(Vector3(3277.154f, 5481.185f, 39.48443f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1786, + Terminal.Constructor(Vector3(3277.154f, 5481.185f, 39.48443f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2095, + ProximityTerminal.Constructor(Vector3(3234.912f, 5449.18f, 30.79343f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 2096, + Terminal.Constructor(Vector3(3234.912f, 5449.18f, 30.79343f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2103, + ProximityTerminal.Constructor(Vector3(3357.641f, 5401.67f, 30.79343f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 2104, + Terminal.Constructor(Vector3(3357.641f, 5401.67f, 30.79343f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1459, + FacilityTurret.Constructor(Vector3(3222.424f, 5464.652f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1459, 5012) - LocalObject(1460, FacilityTurret.Constructor(Vector3(3223.554f, 5345.565f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 1460, + FacilityTurret.Constructor(Vector3(3223.554f, 5345.565f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1460, 5013) - LocalObject(1462, FacilityTurret.Constructor(Vector3(3265.549f, 5507.75f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 1462, + FacilityTurret.Constructor(Vector3(3265.549f, 5507.75f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1462, 5014) - LocalObject(1464, FacilityTurret.Constructor(Vector3(3326.865f, 5344.388f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 1464, + FacilityTurret.Constructor(Vector3(3326.865f, 5344.388f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1464, 5015) - LocalObject(1465, FacilityTurret.Constructor(Vector3(3368.841f, 5506.435f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 1465, + FacilityTurret.Constructor(Vector3(3368.841f, 5506.435f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1465, 5016) - LocalObject(1466, FacilityTurret.Constructor(Vector3(3370.01f, 5387.501f, 39.75143f), manned_turret), owning_building_guid = 20) + LocalObject( + 1466, + FacilityTurret.Constructor(Vector3(3370.01f, 5387.501f, 39.75143f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1466, 5017) - LocalObject(1943, Painbox.Constructor(Vector3(3276.138f, 5462.089f, 18.64543f), painbox), owning_building_guid = 20) - LocalObject(1954, Painbox.Constructor(Vector3(3342.215f, 5452.17f, 25.68823f), painbox_continuous), owning_building_guid = 20) - LocalObject(1965, Painbox.Constructor(Vector3(3276.237f, 5447.073f, 16.50213f), painbox_door_radius), owning_building_guid = 20) - LocalObject(1980, Painbox.Constructor(Vector3(3339.914f, 5432.076f, 23.06943f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1981, Painbox.Constructor(Vector3(3340.81f, 5459.42f, 22.85113f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1982, Painbox.Constructor(Vector3(3353.855f, 5453.827f, 24.06943f), painbox_door_radius_continuous), owning_building_guid = 20) + LocalObject( + 1943, + Painbox.Constructor(Vector3(3276.138f, 5462.089f, 18.64543f), painbox), + owning_building_guid = 20 + ) + LocalObject( + 1954, + Painbox.Constructor(Vector3(3342.215f, 5452.17f, 25.68823f), painbox_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1965, + Painbox.Constructor(Vector3(3276.237f, 5447.073f, 16.50213f), painbox_door_radius), + owning_building_guid = 20 + ) + LocalObject( + 1980, + Painbox.Constructor(Vector3(3339.914f, 5432.076f, 23.06943f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1981, + Painbox.Constructor(Vector3(3340.81f, 5459.42f, 22.85113f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1982, + Painbox.Constructor(Vector3(3353.855f, 5453.827f, 24.06943f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) LocalObject(253, Generator.Constructor(Vector3(3275.975f, 5465.555f, 12.44943f)), owning_building_guid = 20) - LocalObject(242, Terminal.Constructor(Vector3(3276.022f, 5457.363f, 13.74343f), gen_control), owning_building_guid = 20) + LocalObject( + 242, + Terminal.Constructor(Vector3(3276.022f, 5457.363f, 13.74343f), gen_control), + owning_building_guid = 20 + ) } Building5() def Building5(): Unit = { // Name: Voltan Type: comm_station GUID: 23, MapID: 5 - LocalBuilding("Voltan", 23, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4484f, 3482f, 28.31507f), Vector3(0f, 0f, 360f), comm_station))) - LocalObject(190, CaptureTerminal.Constructor(Vector3(4528.089f, 3558.734f, 11.01507f), capture_terminal), owning_building_guid = 23) + LocalBuilding( + "Voltan", + 23, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4484f, 3482f, 28.31507f), + Vector3(0f, 0f, 360f), + comm_station + ) + ) + ) + LocalObject( + 190, + CaptureTerminal.Constructor(Vector3(4528.089f, 3558.734f, 11.01507f), capture_terminal), + owning_building_guid = 23 + ) LocalObject(418, Door.Constructor(Vector3(4424.196f, 3438.5f, 30.06607f)), owning_building_guid = 23) LocalObject(419, Door.Constructor(Vector3(4424.196f, 3456.693f, 38.03008f)), owning_building_guid = 23) LocalObject(421, Door.Constructor(Vector3(4441.307f, 3414.197f, 38.03008f)), owning_building_guid = 23) @@ -527,18 +1373,78 @@ object Map02 { // Hossin LocalObject(2411, Door.Constructor(Vector3(4520.673f, 3495.733f, 20.36907f)), owning_building_guid = 23) LocalObject(2412, Door.Constructor(Vector3(4520.673f, 3503.026f, 20.36907f)), owning_building_guid = 23) LocalObject(2413, Door.Constructor(Vector3(4520.673f, 3510.315f, 20.36907f)), owning_building_guid = 23) - LocalObject(830, IFFLock.Constructor(Vector3(4504.453f, 3481.13f, 29.96707f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 790) - LocalObject(960, IFFLock.Constructor(Vector3(4461.957f, 3483.105f, 34.97607f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 426) - LocalObject(962, IFFLock.Constructor(Vector3(4465.572f, 3505.06f, 12.35107f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 688) - LocalObject(963, IFFLock.Constructor(Vector3(4466.047f, 3472.42f, 34.97607f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 425) - LocalObject(964, IFFLock.Constructor(Vector3(4478.817f, 3472.511f, 42.39607f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 427) - LocalObject(969, IFFLock.Constructor(Vector3(4491.187f, 3499.955f, 34.97607f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 431) - LocalObject(981, IFFLock.Constructor(Vector3(4516.778f, 3560.033f, 29.96507f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 445) - LocalObject(982, IFFLock.Constructor(Vector3(4523.187f, 3548.428f, 12.35107f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 713) - LocalObject(983, IFFLock.Constructor(Vector3(4526.428f, 3514.81f, 19.85107f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 715) - LocalObject(984, IFFLock.Constructor(Vector3(4529.572f, 3489.19f, 19.85107f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 714) - LocalObject(985, IFFLock.Constructor(Vector3(4532.813f, 3551.572f, 12.35107f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 716) - LocalObject(986, IFFLock.Constructor(Vector3(4539.06f, 3492.428f, 12.35107f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 717) + LocalObject( + 830, + IFFLock.Constructor(Vector3(4504.453f, 3481.13f, 29.96707f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 790 + ) + LocalObject( + 960, + IFFLock.Constructor(Vector3(4461.957f, 3483.105f, 34.97607f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 426 + ) + LocalObject( + 962, + IFFLock.Constructor(Vector3(4465.572f, 3505.06f, 12.35107f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 688 + ) + LocalObject( + 963, + IFFLock.Constructor(Vector3(4466.047f, 3472.42f, 34.97607f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 425 + ) + LocalObject( + 964, + IFFLock.Constructor(Vector3(4478.817f, 3472.511f, 42.39607f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 427 + ) + LocalObject( + 969, + IFFLock.Constructor(Vector3(4491.187f, 3499.955f, 34.97607f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 431 + ) + LocalObject( + 981, + IFFLock.Constructor(Vector3(4516.778f, 3560.033f, 29.96507f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 445 + ) + LocalObject( + 982, + IFFLock.Constructor(Vector3(4523.187f, 3548.428f, 12.35107f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 713 + ) + LocalObject( + 983, + IFFLock.Constructor(Vector3(4526.428f, 3514.81f, 19.85107f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 715 + ) + LocalObject( + 984, + IFFLock.Constructor(Vector3(4529.572f, 3489.19f, 19.85107f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 714 + ) + LocalObject( + 985, + IFFLock.Constructor(Vector3(4532.813f, 3551.572f, 12.35107f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 716 + ) + LocalObject( + 986, + IFFLock.Constructor(Vector3(4539.06f, 3492.428f, 12.35107f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 717 + ) LocalObject(1283, Locker.Constructor(Vector3(4531.563f, 3492.141f, 18.77607f)), owning_building_guid = 23) LocalObject(1284, Locker.Constructor(Vector3(4532.727f, 3492.141f, 18.77607f)), owning_building_guid = 23) LocalObject(1285, Locker.Constructor(Vector3(4533.874f, 3492.141f, 18.77607f)), owning_building_guid = 23) @@ -551,60 +1457,233 @@ object Map02 { // Hossin LocalObject(1292, Locker.Constructor(Vector3(4552.055f, 3512.165f, 11.01507f)), owning_building_guid = 23) LocalObject(1293, Locker.Constructor(Vector3(4553.391f, 3512.165f, 11.01507f)), owning_building_guid = 23) LocalObject(1294, Locker.Constructor(Vector3(4554.728f, 3512.165f, 11.01507f)), owning_building_guid = 23) - LocalObject(1649, Terminal.Constructor(Vector3(4474.379f, 3458.907f, 34.87507f), order_terminal), owning_building_guid = 23) - LocalObject(1650, Terminal.Constructor(Vector3(4484.075f, 3474.547f, 42.27007f), order_terminal), owning_building_guid = 23) - LocalObject(1651, Terminal.Constructor(Vector3(4486.331f, 3472.43f, 42.27007f), order_terminal), owning_building_guid = 23) - LocalObject(1652, Terminal.Constructor(Vector3(4486.332f, 3476.825f, 42.27007f), order_terminal), owning_building_guid = 23) - LocalObject(1662, Terminal.Constructor(Vector3(4534.654f, 3497.408f, 20.10507f), order_terminal), owning_building_guid = 23) - LocalObject(1663, Terminal.Constructor(Vector3(4534.654f, 3501.139f, 20.10507f), order_terminal), owning_building_guid = 23) - LocalObject(1664, Terminal.Constructor(Vector3(4534.654f, 3504.928f, 20.10507f), order_terminal), owning_building_guid = 23) - LocalObject(2324, Terminal.Constructor(Vector3(4467.943f, 3490.591f, 12.57207f), spawn_terminal), owning_building_guid = 23) - LocalObject(2327, Terminal.Constructor(Vector3(4482.51f, 3457.969f, 35.13207f), spawn_terminal), owning_building_guid = 23) - LocalObject(2328, Terminal.Constructor(Vector3(4483.409f, 3521.942f, 22.57207f), spawn_terminal), owning_building_guid = 23) - LocalObject(2332, Terminal.Constructor(Vector3(4520.971f, 3493.243f, 20.64907f), spawn_terminal), owning_building_guid = 23) - LocalObject(2333, Terminal.Constructor(Vector3(4520.967f, 3500.535f, 20.64907f), spawn_terminal), owning_building_guid = 23) - LocalObject(2334, Terminal.Constructor(Vector3(4520.97f, 3507.823f, 20.64907f), spawn_terminal), owning_building_guid = 23) - LocalObject(2512, Terminal.Constructor(Vector3(4536.458f, 3536.774f, 31.20207f), vehicle_terminal_combined), owning_building_guid = 23) - LocalObject(1549, VehicleSpawnPad.Constructor(Vector3(4522.833f, 3536.62f, 27.04407f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 23, terminal_guid = 2512) + LocalObject( + 1649, + Terminal.Constructor(Vector3(4474.379f, 3458.907f, 34.87507f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1650, + Terminal.Constructor(Vector3(4484.075f, 3474.547f, 42.27007f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1651, + Terminal.Constructor(Vector3(4486.331f, 3472.43f, 42.27007f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1652, + Terminal.Constructor(Vector3(4486.332f, 3476.825f, 42.27007f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1662, + Terminal.Constructor(Vector3(4534.654f, 3497.408f, 20.10507f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1663, + Terminal.Constructor(Vector3(4534.654f, 3501.139f, 20.10507f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1664, + Terminal.Constructor(Vector3(4534.654f, 3504.928f, 20.10507f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2324, + Terminal.Constructor(Vector3(4467.943f, 3490.591f, 12.57207f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2327, + Terminal.Constructor(Vector3(4482.51f, 3457.969f, 35.13207f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2328, + Terminal.Constructor(Vector3(4483.409f, 3521.942f, 22.57207f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2332, + Terminal.Constructor(Vector3(4520.971f, 3493.243f, 20.64907f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2333, + Terminal.Constructor(Vector3(4520.967f, 3500.535f, 20.64907f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2334, + Terminal.Constructor(Vector3(4520.97f, 3507.823f, 20.64907f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2512, + Terminal.Constructor(Vector3(4536.458f, 3536.774f, 31.20207f), vehicle_terminal_combined), + owning_building_guid = 23 + ) + LocalObject( + 1549, + VehicleSpawnPad.Constructor(Vector3(4522.833f, 3536.62f, 27.04407f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 23, + terminal_guid = 2512 + ) LocalObject(2174, ResourceSilo.Constructor(Vector3(4428.23f, 3412.908f, 35.53207f)), owning_building_guid = 23) - LocalObject(2231, SpawnTube.Constructor(Vector3(4520.233f, 3494.683f, 18.51507f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(2232, SpawnTube.Constructor(Vector3(4520.233f, 3501.974f, 18.51507f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(2233, SpawnTube.Constructor(Vector3(4520.233f, 3509.262f, 18.51507f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(1566, ProximityTerminal.Constructor(Vector3(4484.864f, 3453.023f, 28.51507f), medical_terminal), owning_building_guid = 23) - LocalObject(1568, ProximityTerminal.Constructor(Vector3(4548.444f, 3511.62f, 11.01507f), medical_terminal), owning_building_guid = 23) - LocalObject(1836, ProximityTerminal.Constructor(Vector3(4465.154f, 3537.185f, 36.75607f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1837, Terminal.Constructor(Vector3(4465.154f, 3537.185f, 36.75607f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(2127, ProximityTerminal.Constructor(Vector3(4422.912f, 3505.18f, 28.06507f), repair_silo), owning_building_guid = 23) - LocalObject(2128, Terminal.Constructor(Vector3(4422.912f, 3505.18f, 28.06507f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(2139, ProximityTerminal.Constructor(Vector3(4545.641f, 3457.67f, 28.06507f), repair_silo), owning_building_guid = 23) - LocalObject(2140, Terminal.Constructor(Vector3(4545.641f, 3457.67f, 28.06507f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(1496, FacilityTurret.Constructor(Vector3(4410.424f, 3520.652f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 2231, + SpawnTube.Constructor(Vector3(4520.233f, 3494.683f, 18.51507f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 2232, + SpawnTube.Constructor(Vector3(4520.233f, 3501.974f, 18.51507f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 2233, + SpawnTube.Constructor(Vector3(4520.233f, 3509.262f, 18.51507f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 1566, + ProximityTerminal.Constructor(Vector3(4484.864f, 3453.023f, 28.51507f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1568, + ProximityTerminal.Constructor(Vector3(4548.444f, 3511.62f, 11.01507f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1836, + ProximityTerminal.Constructor(Vector3(4465.154f, 3537.185f, 36.75607f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1837, + Terminal.Constructor(Vector3(4465.154f, 3537.185f, 36.75607f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2127, + ProximityTerminal.Constructor(Vector3(4422.912f, 3505.18f, 28.06507f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2128, + Terminal.Constructor(Vector3(4422.912f, 3505.18f, 28.06507f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2139, + ProximityTerminal.Constructor(Vector3(4545.641f, 3457.67f, 28.06507f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2140, + Terminal.Constructor(Vector3(4545.641f, 3457.67f, 28.06507f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1496, + FacilityTurret.Constructor(Vector3(4410.424f, 3520.652f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1496, 5018) - LocalObject(1497, FacilityTurret.Constructor(Vector3(4411.554f, 3401.565f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 1497, + FacilityTurret.Constructor(Vector3(4411.554f, 3401.565f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1497, 5019) - LocalObject(1498, FacilityTurret.Constructor(Vector3(4453.549f, 3563.75f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 1498, + FacilityTurret.Constructor(Vector3(4453.549f, 3563.75f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1498, 5020) - LocalObject(1502, FacilityTurret.Constructor(Vector3(4514.865f, 3400.388f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 1502, + FacilityTurret.Constructor(Vector3(4514.865f, 3400.388f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1502, 5021) - LocalObject(1505, FacilityTurret.Constructor(Vector3(4556.841f, 3562.435f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 1505, + FacilityTurret.Constructor(Vector3(4556.841f, 3562.435f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1505, 5022) - LocalObject(1506, FacilityTurret.Constructor(Vector3(4558.01f, 3443.501f, 37.02307f), manned_turret), owning_building_guid = 23) + LocalObject( + 1506, + FacilityTurret.Constructor(Vector3(4558.01f, 3443.501f, 37.02307f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1506, 5023) - LocalObject(1947, Painbox.Constructor(Vector3(4464.138f, 3518.089f, 15.91707f), painbox), owning_building_guid = 23) - LocalObject(1959, Painbox.Constructor(Vector3(4530.215f, 3508.17f, 22.95987f), painbox_continuous), owning_building_guid = 23) - LocalObject(1969, Painbox.Constructor(Vector3(4464.237f, 3503.073f, 13.77377f), painbox_door_radius), owning_building_guid = 23) - LocalObject(1995, Painbox.Constructor(Vector3(4527.914f, 3488.076f, 20.34107f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1996, Painbox.Constructor(Vector3(4528.81f, 3515.42f, 20.12277f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1997, Painbox.Constructor(Vector3(4541.855f, 3509.827f, 21.34107f), painbox_door_radius_continuous), owning_building_guid = 23) + LocalObject( + 1947, + Painbox.Constructor(Vector3(4464.138f, 3518.089f, 15.91707f), painbox), + owning_building_guid = 23 + ) + LocalObject( + 1959, + Painbox.Constructor(Vector3(4530.215f, 3508.17f, 22.95987f), painbox_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1969, + Painbox.Constructor(Vector3(4464.237f, 3503.073f, 13.77377f), painbox_door_radius), + owning_building_guid = 23 + ) + LocalObject( + 1995, + Painbox.Constructor(Vector3(4527.914f, 3488.076f, 20.34107f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1996, + Painbox.Constructor(Vector3(4528.81f, 3515.42f, 20.12277f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1997, + Painbox.Constructor(Vector3(4541.855f, 3509.827f, 21.34107f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) LocalObject(257, Generator.Constructor(Vector3(4463.975f, 3521.555f, 9.721073f)), owning_building_guid = 23) - LocalObject(246, Terminal.Constructor(Vector3(4464.022f, 3513.363f, 11.01507f), gen_control), owning_building_guid = 23) + LocalObject( + 246, + Terminal.Constructor(Vector3(4464.022f, 3513.363f, 11.01507f), gen_control), + owning_building_guid = 23 + ) } Building6() def Building6(): Unit = { // Name: Naum Type: comm_station_dsp GUID: 26, MapID: 6 - LocalBuilding("Naum", 26, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5408f, 3536f, 27.71691f), Vector3(0f, 0f, 315f), comm_station_dsp))) - LocalObject(191, CaptureTerminal.Constructor(Vector3(5448.18f, 3468.574f, 10.31691f), capture_terminal), owning_building_guid = 26) + LocalBuilding( + "Naum", + 26, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5408f, 3536f, 27.71691f), + Vector3(0f, 0f, 315f), + comm_station_dsp + ) + ) + ) + LocalObject( + 191, + CaptureTerminal.Constructor(Vector3(5448.18f, 3468.574f, 10.31691f), capture_terminal), + owning_building_guid = 26 + ) LocalObject(234, Door.Constructor(Vector3(5506.148f, 3537.503f, 31.09491f)), owning_building_guid = 26) LocalObject(471, Door.Constructor(Vector3(5329.868f, 3518.245f, 37.33191f)), owning_building_guid = 26) LocalObject(472, Door.Constructor(Vector3(5334.954f, 3547.529f, 29.36791f)), owning_building_guid = 26) @@ -650,20 +1729,90 @@ object Map02 { // Hossin LocalObject(2424, Door.Constructor(Vector3(5443.643f, 3519.779f, 19.67091f)), owning_building_guid = 26) LocalObject(2425, Door.Constructor(Vector3(5448.799f, 3524.936f, 19.67091f)), owning_building_guid = 26) LocalObject(2426, Door.Constructor(Vector3(5453.954f, 3530.09f, 19.67091f)), owning_building_guid = 26) - LocalObject(831, IFFLock.Constructor(Vector3(5421.82f, 3520.893f, 29.28491f), Vector3(0, 0, 135)), owning_building_guid = 26, door_guid = 791) - LocalObject(1009, IFFLock.Constructor(Vector3(5388.526f, 3541.926f, 34.28491f), Vector3(0, 0, 225)), owning_building_guid = 26, door_guid = 480) - LocalObject(1010, IFFLock.Constructor(Vector3(5393.195f, 3552.366f, 34.28491f), Vector3(0, 0, 45)), owning_building_guid = 26, door_guid = 481) - LocalObject(1011, IFFLock.Constructor(Vector3(5397.627f, 3532.957f, 41.78491f), Vector3(0, 0, 315)), owning_building_guid = 26, door_guid = 482) - LocalObject(1012, IFFLock.Constructor(Vector3(5425.787f, 3543.615f, 34.28491f), Vector3(0, 0, 315)), owning_building_guid = 26, door_guid = 483) - LocalObject(1013, IFFLock.Constructor(Vector3(5437.336f, 3464.843f, 11.65291f), Vector3(0, 0, 315)), owning_building_guid = 26, door_guid = 728) - LocalObject(1015, IFFLock.Constructor(Vector3(5445.309f, 3508.86f, 19.15291f), Vector3(0, 0, 225)), owning_building_guid = 26, door_guid = 730) - LocalObject(1016, IFFLock.Constructor(Vector3(5446.456f, 3460.169f, 11.65291f), Vector3(0, 0, 135)), owning_building_guid = 26, door_guid = 729) - LocalObject(1017, IFFLock.Constructor(Vector3(5454.307f, 3504.44f, 11.65291f), Vector3(0, 0, 315)), owning_building_guid = 26, door_guid = 733) - LocalObject(1018, IFFLock.Constructor(Vector3(5461.293f, 3529.291f, 19.15291f), Vector3(0, 0, 45)), owning_building_guid = 26, door_guid = 735) - LocalObject(1019, IFFLock.Constructor(Vector3(5480.487f, 3550.589f, 11.65291f), Vector3(0, 0, 135)), owning_building_guid = 26, door_guid = 738) - LocalObject(1020, IFFLock.Constructor(Vector3(5498.111f, 3548.154f, 29.32891f), Vector3(0, 0, 315)), owning_building_guid = 26, door_guid = 488) - LocalObject(1021, IFFLock.Constructor(Vector3(5519.065f, 3573.658f, 34.26391f), Vector3(0, 0, 45)), owning_building_guid = 26, door_guid = 490) - LocalObject(1022, IFFLock.Constructor(Vector3(5545.717f, 3512.563f, 29.22791f), Vector3(0, 0, 45)), owning_building_guid = 26, door_guid = 494) + LocalObject( + 831, + IFFLock.Constructor(Vector3(5421.82f, 3520.893f, 29.28491f), Vector3(0, 0, 135)), + owning_building_guid = 26, + door_guid = 791 + ) + LocalObject( + 1009, + IFFLock.Constructor(Vector3(5388.526f, 3541.926f, 34.28491f), Vector3(0, 0, 225)), + owning_building_guid = 26, + door_guid = 480 + ) + LocalObject( + 1010, + IFFLock.Constructor(Vector3(5393.195f, 3552.366f, 34.28491f), Vector3(0, 0, 45)), + owning_building_guid = 26, + door_guid = 481 + ) + LocalObject( + 1011, + IFFLock.Constructor(Vector3(5397.627f, 3532.957f, 41.78491f), Vector3(0, 0, 315)), + owning_building_guid = 26, + door_guid = 482 + ) + LocalObject( + 1012, + IFFLock.Constructor(Vector3(5425.787f, 3543.615f, 34.28491f), Vector3(0, 0, 315)), + owning_building_guid = 26, + door_guid = 483 + ) + LocalObject( + 1013, + IFFLock.Constructor(Vector3(5437.336f, 3464.843f, 11.65291f), Vector3(0, 0, 315)), + owning_building_guid = 26, + door_guid = 728 + ) + LocalObject( + 1015, + IFFLock.Constructor(Vector3(5445.309f, 3508.86f, 19.15291f), Vector3(0, 0, 225)), + owning_building_guid = 26, + door_guid = 730 + ) + LocalObject( + 1016, + IFFLock.Constructor(Vector3(5446.456f, 3460.169f, 11.65291f), Vector3(0, 0, 135)), + owning_building_guid = 26, + door_guid = 729 + ) + LocalObject( + 1017, + IFFLock.Constructor(Vector3(5454.307f, 3504.44f, 11.65291f), Vector3(0, 0, 315)), + owning_building_guid = 26, + door_guid = 733 + ) + LocalObject( + 1018, + IFFLock.Constructor(Vector3(5461.293f, 3529.291f, 19.15291f), Vector3(0, 0, 45)), + owning_building_guid = 26, + door_guid = 735 + ) + LocalObject( + 1019, + IFFLock.Constructor(Vector3(5480.487f, 3550.589f, 11.65291f), Vector3(0, 0, 135)), + owning_building_guid = 26, + door_guid = 738 + ) + LocalObject( + 1020, + IFFLock.Constructor(Vector3(5498.111f, 3548.154f, 29.32891f), Vector3(0, 0, 315)), + owning_building_guid = 26, + door_guid = 488 + ) + LocalObject( + 1021, + IFFLock.Constructor(Vector3(5519.065f, 3573.658f, 34.26391f), Vector3(0, 0, 45)), + owning_building_guid = 26, + door_guid = 490 + ) + LocalObject( + 1022, + IFFLock.Constructor(Vector3(5545.717f, 3512.563f, 29.22791f), Vector3(0, 0, 45)), + owning_building_guid = 26, + door_guid = 494 + ) LocalObject(1335, Locker.Constructor(Vector3(5448.803f, 3509.539f, 18.07791f)), owning_building_guid = 26) LocalObject(1336, Locker.Constructor(Vector3(5449.626f, 3508.716f, 18.07791f)), owning_building_guid = 26) LocalObject(1337, Locker.Constructor(Vector3(5450.437f, 3507.905f, 18.07791f)), owning_building_guid = 26) @@ -676,76 +1825,306 @@ object Map02 { // Hossin LocalObject(1344, Locker.Constructor(Vector3(5477.452f, 3509.208f, 10.31691f)), owning_building_guid = 26) LocalObject(1345, Locker.Constructor(Vector3(5478.396f, 3508.263f, 10.31691f)), owning_building_guid = 26) LocalObject(1346, Locker.Constructor(Vector3(5479.342f, 3507.318f, 10.31691f)), owning_building_guid = 26) - LocalObject(236, Terminal.Constructor(Vector3(5523.115f, 3566.433f, 33.42091f), dropship_vehicle_terminal), owning_building_guid = 26) - LocalObject(235, VehicleSpawnPad.Constructor(Vector3(5544.602f, 3575.971f, 27.74491f), dropship_pad_doors, Vector3(0, 0, 135)), owning_building_guid = 26, terminal_guid = 236) - LocalObject(1680, Terminal.Constructor(Vector3(5384.86f, 3526.468f, 34.17691f), order_terminal), owning_building_guid = 26) - LocalObject(1681, Terminal.Constructor(Vector3(5402.783f, 3530.677f, 41.57191f), order_terminal), owning_building_guid = 26) - LocalObject(1682, Terminal.Constructor(Vector3(5402.881f, 3527.585f, 41.57191f), order_terminal), owning_building_guid = 26) - LocalObject(1683, Terminal.Constructor(Vector3(5405.99f, 3530.692f, 41.57191f), order_terminal), owning_building_guid = 26) - LocalObject(1684, Terminal.Constructor(Vector3(5406.007f, 3527.513f, 41.57191f), order_terminal), owning_building_guid = 26) - LocalObject(1685, Terminal.Constructor(Vector3(5454.713f, 3511.077f, 19.40691f), order_terminal), owning_building_guid = 26) - LocalObject(1686, Terminal.Constructor(Vector3(5457.351f, 3513.716f, 19.40691f), order_terminal), owning_building_guid = 26) - LocalObject(1687, Terminal.Constructor(Vector3(5460.03f, 3516.395f, 19.40691f), order_terminal), owning_building_guid = 26) - LocalObject(2335, Terminal.Constructor(Vector3(5389.946f, 3520.055f, 34.43391f), spawn_terminal), owning_building_guid = 26) - LocalObject(2336, Terminal.Constructor(Vector3(5442.092f, 3517.808f, 19.95091f), spawn_terminal), owning_building_guid = 26) - LocalObject(2337, Terminal.Constructor(Vector3(5447.246f, 3522.967f, 19.95091f), spawn_terminal), owning_building_guid = 26) - LocalObject(2338, Terminal.Constructor(Vector3(5452.401f, 3528.118f, 19.95091f), spawn_terminal), owning_building_guid = 26) - LocalObject(2339, Terminal.Constructor(Vector3(5452.878f, 3490.286f, 11.84491f), spawn_terminal), owning_building_guid = 26) - LocalObject(2340, Terminal.Constructor(Vector3(5469.849f, 3484.629f, 19.37391f), spawn_terminal), owning_building_guid = 26) - LocalObject(2341, Terminal.Constructor(Vector3(5498.051f, 3525.063f, 11.84491f), spawn_terminal), owning_building_guid = 26) - LocalObject(2342, Terminal.Constructor(Vector3(5498.133f, 3512.914f, 19.37391f), spawn_terminal), owning_building_guid = 26) - LocalObject(2343, Terminal.Constructor(Vector3(5514.072f, 3564.145f, 34.36491f), spawn_terminal), owning_building_guid = 26) - LocalObject(2513, Terminal.Constructor(Vector3(5496.913f, 3599.884f, 30.50391f), ground_vehicle_terminal), owning_building_guid = 26) - LocalObject(1550, VehicleSpawnPad.Constructor(Vector3(5487.335f, 3590.182f, 26.34591f), mb_pad_creation, Vector3(0, 0, 225)), owning_building_guid = 26, terminal_guid = 2513) + LocalObject( + 236, + Terminal.Constructor(Vector3(5523.115f, 3566.433f, 33.42091f), dropship_vehicle_terminal), + owning_building_guid = 26 + ) + LocalObject( + 235, + VehicleSpawnPad.Constructor(Vector3(5544.602f, 3575.971f, 27.74491f), dropship_pad_doors, Vector3(0, 0, 135)), + owning_building_guid = 26, + terminal_guid = 236 + ) + LocalObject( + 1680, + Terminal.Constructor(Vector3(5384.86f, 3526.468f, 34.17691f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1681, + Terminal.Constructor(Vector3(5402.783f, 3530.677f, 41.57191f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1682, + Terminal.Constructor(Vector3(5402.881f, 3527.585f, 41.57191f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1683, + Terminal.Constructor(Vector3(5405.99f, 3530.692f, 41.57191f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1684, + Terminal.Constructor(Vector3(5406.007f, 3527.513f, 41.57191f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1685, + Terminal.Constructor(Vector3(5454.713f, 3511.077f, 19.40691f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1686, + Terminal.Constructor(Vector3(5457.351f, 3513.716f, 19.40691f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1687, + Terminal.Constructor(Vector3(5460.03f, 3516.395f, 19.40691f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2335, + Terminal.Constructor(Vector3(5389.946f, 3520.055f, 34.43391f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2336, + Terminal.Constructor(Vector3(5442.092f, 3517.808f, 19.95091f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2337, + Terminal.Constructor(Vector3(5447.246f, 3522.967f, 19.95091f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2338, + Terminal.Constructor(Vector3(5452.401f, 3528.118f, 19.95091f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2339, + Terminal.Constructor(Vector3(5452.878f, 3490.286f, 11.84491f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2340, + Terminal.Constructor(Vector3(5469.849f, 3484.629f, 19.37391f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2341, + Terminal.Constructor(Vector3(5498.051f, 3525.063f, 11.84491f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2342, + Terminal.Constructor(Vector3(5498.133f, 3512.914f, 19.37391f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2343, + Terminal.Constructor(Vector3(5514.072f, 3564.145f, 34.36491f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2513, + Terminal.Constructor(Vector3(5496.913f, 3599.884f, 30.50391f), ground_vehicle_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1550, + VehicleSpawnPad.Constructor(Vector3(5487.335f, 3590.182f, 26.34591f), mb_pad_creation, Vector3(0, 0, 225)), + owning_building_guid = 26, + terminal_guid = 2513 + ) LocalObject(2175, ResourceSilo.Constructor(Vector3(5594.573f, 3583.68f, 34.83391f)), owning_building_guid = 26) - LocalObject(2244, SpawnTube.Constructor(Vector3(5442.589f, 3519.348f, 17.81691f), Vector3(0, 0, 45)), owning_building_guid = 26) - LocalObject(2245, SpawnTube.Constructor(Vector3(5447.744f, 3524.503f, 17.81691f), Vector3(0, 0, 45)), owning_building_guid = 26) - LocalObject(2246, SpawnTube.Constructor(Vector3(5452.898f, 3529.656f, 17.81691f), Vector3(0, 0, 45)), owning_building_guid = 26) - LocalObject(1569, ProximityTerminal.Constructor(Vector3(5388.113f, 3514.893f, 27.81691f), medical_terminal), owning_building_guid = 26) - LocalObject(1570, ProximityTerminal.Constructor(Vector3(5474.513f, 3511.376f, 10.31691f), medical_terminal), owning_building_guid = 26) - LocalObject(1845, ProximityTerminal.Constructor(Vector3(5439.806f, 3571.322f, 33.41091f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1846, Terminal.Constructor(Vector3(5439.806f, 3571.322f, 33.41091f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1848, ProximityTerminal.Constructor(Vector3(5451.632f, 3509.198f, 40.59291f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1849, Terminal.Constructor(Vector3(5451.632f, 3509.198f, 40.59291f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1851, ProximityTerminal.Constructor(Vector3(5460.715f, 3615.369f, 36.12691f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1852, Terminal.Constructor(Vector3(5460.715f, 3615.369f, 36.12691f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1854, ProximityTerminal.Constructor(Vector3(5488.066f, 3495.757f, 36.13991f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1855, Terminal.Constructor(Vector3(5488.066f, 3495.757f, 36.13991f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(2143, ProximityTerminal.Constructor(Vector3(5391.654f, 3606.427f, 27.46691f), repair_silo), owning_building_guid = 26) - LocalObject(2144, Terminal.Constructor(Vector3(5391.654f, 3606.427f, 27.46691f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(2147, ProximityTerminal.Constructor(Vector3(5513.869f, 3488.328f, 27.46691f), repair_silo), owning_building_guid = 26) - LocalObject(2148, Terminal.Constructor(Vector3(5513.869f, 3488.328f, 27.46691f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(1512, FacilityTurret.Constructor(Vector3(5299.897f, 3530.351f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 2244, + SpawnTube.Constructor(Vector3(5442.589f, 3519.348f, 17.81691f), Vector3(0, 0, 45)), + owning_building_guid = 26 + ) + LocalObject( + 2245, + SpawnTube.Constructor(Vector3(5447.744f, 3524.503f, 17.81691f), Vector3(0, 0, 45)), + owning_building_guid = 26 + ) + LocalObject( + 2246, + SpawnTube.Constructor(Vector3(5452.898f, 3529.656f, 17.81691f), Vector3(0, 0, 45)), + owning_building_guid = 26 + ) + LocalObject( + 1569, + ProximityTerminal.Constructor(Vector3(5388.113f, 3514.893f, 27.81691f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1570, + ProximityTerminal.Constructor(Vector3(5474.513f, 3511.376f, 10.31691f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1845, + ProximityTerminal.Constructor(Vector3(5439.806f, 3571.322f, 33.41091f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1846, + Terminal.Constructor(Vector3(5439.806f, 3571.322f, 33.41091f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1848, + ProximityTerminal.Constructor(Vector3(5451.632f, 3509.198f, 40.59291f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1849, + Terminal.Constructor(Vector3(5451.632f, 3509.198f, 40.59291f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1851, + ProximityTerminal.Constructor(Vector3(5460.715f, 3615.369f, 36.12691f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1852, + Terminal.Constructor(Vector3(5460.715f, 3615.369f, 36.12691f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1854, + ProximityTerminal.Constructor(Vector3(5488.066f, 3495.757f, 36.13991f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1855, + Terminal.Constructor(Vector3(5488.066f, 3495.757f, 36.13991f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2143, + ProximityTerminal.Constructor(Vector3(5391.654f, 3606.427f, 27.46691f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2144, + Terminal.Constructor(Vector3(5391.654f, 3606.427f, 27.46691f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2147, + ProximityTerminal.Constructor(Vector3(5513.869f, 3488.328f, 27.46691f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2148, + Terminal.Constructor(Vector3(5513.869f, 3488.328f, 27.46691f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1512, + FacilityTurret.Constructor(Vector3(5299.897f, 3530.351f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1512, 5024) - LocalObject(1516, FacilityTurret.Constructor(Vector3(5371.813f, 3456.781f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1516, + FacilityTurret.Constructor(Vector3(5371.813f, 3456.781f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1516, 5025) - LocalObject(1517, FacilityTurret.Constructor(Vector3(5407.656f, 3639.741f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1517, + FacilityTurret.Constructor(Vector3(5407.656f, 3639.741f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1517, 5026) - LocalObject(1518, FacilityTurret.Constructor(Vector3(5430.308f, 3455.725f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1518, + FacilityTurret.Constructor(Vector3(5430.308f, 3455.725f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1518, 5027) - LocalObject(1519, FacilityTurret.Constructor(Vector3(5472.426f, 3640.809f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1519, + FacilityTurret.Constructor(Vector3(5472.426f, 3640.809f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1519, 5028) - LocalObject(1520, FacilityTurret.Constructor(Vector3(5499.575f, 3456.776f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1520, + FacilityTurret.Constructor(Vector3(5499.575f, 3456.776f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1520, 5029) - LocalObject(1521, FacilityTurret.Constructor(Vector3(5556.212f, 3639.736f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1521, + FacilityTurret.Constructor(Vector3(5556.212f, 3639.736f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1521, 5030) - LocalObject(1524, FacilityTurret.Constructor(Vector3(5617.73f, 3576.564f, 36.32491f), manned_turret), owning_building_guid = 26) + LocalObject( + 1524, + FacilityTurret.Constructor(Vector3(5617.73f, 3576.564f, 36.32491f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1524, 5031) - LocalObject(1949, Painbox.Constructor(Vector3(5470.568f, 3558.365f, 14.21121f), painbox), owning_building_guid = 26) - LocalObject(1960, Painbox.Constructor(Vector3(5454.856f, 3518.005f, 21.84441f), painbox_continuous), owning_building_guid = 26) - LocalObject(1971, Painbox.Constructor(Vector3(5479.501f, 3547.817f, 13.44911f), painbox_door_radius), owning_building_guid = 26) - LocalObject(1998, Painbox.Constructor(Vector3(5442.276f, 3509.341f, 20.24611f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(1999, Painbox.Constructor(Vector3(5463.137f, 3529.061f, 20.71691f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(2000, Painbox.Constructor(Vector3(5468.956f, 3514.484f, 21.14721f), painbox_door_radius_continuous), owning_building_guid = 26) + LocalObject( + 1949, + Painbox.Constructor(Vector3(5470.568f, 3558.365f, 14.21121f), painbox), + owning_building_guid = 26 + ) + LocalObject( + 1960, + Painbox.Constructor(Vector3(5454.856f, 3518.005f, 21.84441f), painbox_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1971, + Painbox.Constructor(Vector3(5479.501f, 3547.817f, 13.44911f), painbox_door_radius), + owning_building_guid = 26 + ) + LocalObject( + 1998, + Painbox.Constructor(Vector3(5442.276f, 3509.341f, 20.24611f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1999, + Painbox.Constructor(Vector3(5463.137f, 3529.061f, 20.71691f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 2000, + Painbox.Constructor(Vector3(5468.956f, 3514.484f, 21.14721f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) LocalObject(259, Generator.Constructor(Vector3(5467.694f, 3561.124f, 9.022909f)), owning_building_guid = 26) - LocalObject(248, Terminal.Constructor(Vector3(5473.52f, 3555.364f, 10.31691f), gen_control), owning_building_guid = 26) + LocalObject( + 248, + Terminal.Constructor(Vector3(5473.52f, 3555.364f, 10.31691f), gen_control), + owning_building_guid = 26 + ) } Building8() def Building8(): Unit = { // Name: Acan Type: cryo_facility GUID: 29, MapID: 8 - LocalBuilding("Acan", 29, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3478f, 4056f, 29.82269f), Vector3(0f, 0f, 269f), cryo_facility))) - LocalObject(187, CaptureTerminal.Constructor(Vector3(3537.747f, 4083.05f, 19.82269f), capture_terminal), owning_building_guid = 29) + LocalBuilding( + "Acan", + 29, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3478f, 4056f, 29.82269f), + Vector3(0f, 0f, 269f), + cryo_facility + ) + ) + ) + LocalObject( + 187, + CaptureTerminal.Constructor(Vector3(3537.747f, 4083.05f, 19.82269f), capture_terminal), + owning_building_guid = 29 + ) LocalObject(353, Door.Constructor(Vector3(3385.456f, 4025.611f, 31.34369f)), owning_building_guid = 29) LocalObject(357, Door.Constructor(Vector3(3394.676f, 4033.951f, 31.37369f)), owning_building_guid = 29) LocalObject(358, Door.Constructor(Vector3(3394.993f, 4052.141f, 39.33769f)), owning_building_guid = 29) @@ -786,15 +2165,60 @@ object Map02 { // Hossin LocalObject(2390, Door.Constructor(Vector3(3483.651f, 4051.228f, 21.67669f)), owning_building_guid = 29) LocalObject(2391, Door.Constructor(Vector3(3490.942f, 4051.1f, 21.67669f)), owning_building_guid = 29) LocalObject(2392, Door.Constructor(Vector3(3498.23f, 4050.973f, 21.67669f)), owning_building_guid = 29) - LocalObject(827, IFFLock.Constructor(Vector3(3505.804f, 4054.745f, 31.30469f), Vector3(0, 0, 91)), owning_building_guid = 29, door_guid = 787) - LocalObject(914, IFFLock.Constructor(Vector3(3387.483f, 4024.761f, 31.27469f), Vector3(0, 0, 181)), owning_building_guid = 29, door_guid = 353) - LocalObject(927, IFFLock.Constructor(Vector3(3476.953f, 4042.444f, 21.15869f), Vector3(0, 0, 271)), owning_building_guid = 29, door_guid = 639) - LocalObject(928, IFFLock.Constructor(Vector3(3480.023f, 4032.771f, 13.65869f), Vector3(0, 0, 1)), owning_building_guid = 29, door_guid = 642) - LocalObject(929, IFFLock.Constructor(Vector3(3481.923f, 4053.977f, 41.27469f), Vector3(0, 0, 91)), owning_building_guid = 29, door_guid = 377) - LocalObject(930, IFFLock.Constructor(Vector3(3500.305f, 4070.799f, 41.27469f), Vector3(0, 0, 181)), owning_building_guid = 29, door_guid = 380) - LocalObject(931, IFFLock.Constructor(Vector3(3502.624f, 4045.141f, 21.15869f), Vector3(0, 0, 91)), owning_building_guid = 29, door_guid = 647) - LocalObject(932, IFFLock.Constructor(Vector3(3544.993f, 4087.776f, 21.15869f), Vector3(0, 0, 1)), owning_building_guid = 29, door_guid = 653) - LocalObject(933, IFFLock.Constructor(Vector3(3547.966f, 4077.969f, 21.15869f), Vector3(0, 0, 181)), owning_building_guid = 29, door_guid = 652) + LocalObject( + 827, + IFFLock.Constructor(Vector3(3505.804f, 4054.745f, 31.30469f), Vector3(0, 0, 91)), + owning_building_guid = 29, + door_guid = 787 + ) + LocalObject( + 914, + IFFLock.Constructor(Vector3(3387.483f, 4024.761f, 31.27469f), Vector3(0, 0, 181)), + owning_building_guid = 29, + door_guid = 353 + ) + LocalObject( + 927, + IFFLock.Constructor(Vector3(3476.953f, 4042.444f, 21.15869f), Vector3(0, 0, 271)), + owning_building_guid = 29, + door_guid = 639 + ) + LocalObject( + 928, + IFFLock.Constructor(Vector3(3480.023f, 4032.771f, 13.65869f), Vector3(0, 0, 1)), + owning_building_guid = 29, + door_guid = 642 + ) + LocalObject( + 929, + IFFLock.Constructor(Vector3(3481.923f, 4053.977f, 41.27469f), Vector3(0, 0, 91)), + owning_building_guid = 29, + door_guid = 377 + ) + LocalObject( + 930, + IFFLock.Constructor(Vector3(3500.305f, 4070.799f, 41.27469f), Vector3(0, 0, 181)), + owning_building_guid = 29, + door_guid = 380 + ) + LocalObject( + 931, + IFFLock.Constructor(Vector3(3502.624f, 4045.141f, 21.15869f), Vector3(0, 0, 91)), + owning_building_guid = 29, + door_guid = 647 + ) + LocalObject( + 932, + IFFLock.Constructor(Vector3(3544.993f, 4087.776f, 21.15869f), Vector3(0, 0, 1)), + owning_building_guid = 29, + door_guid = 653 + ) + LocalObject( + 933, + IFFLock.Constructor(Vector3(3547.966f, 4077.969f, 21.15869f), Vector3(0, 0, 181)), + owning_building_guid = 29, + door_guid = 652 + ) LocalObject(1181, Locker.Constructor(Vector3(3479.695f, 4017.867f, 19.73069f)), owning_building_guid = 29) LocalObject(1182, Locker.Constructor(Vector3(3479.713f, 4018.921f, 19.73069f)), owning_building_guid = 29) LocalObject(1183, Locker.Constructor(Vector3(3479.732f, 4019.981f, 19.73069f)), owning_building_guid = 29) @@ -824,76 +2248,309 @@ object Map02 { // Hossin LocalObject(1409, Locker.Constructor(Vector3(3472.142f, 4037.839f, 29.59369f)), owning_building_guid = 29) LocalObject(1410, Locker.Constructor(Vector3(3474.664f, 4037.795f, 29.82269f)), owning_building_guid = 29) LocalObject(1411, Locker.Constructor(Vector3(3475.698f, 4037.777f, 29.82269f)), owning_building_guid = 29) - LocalObject(194, Terminal.Constructor(Vector3(3524.508f, 4038.762f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(195, Terminal.Constructor(Vector3(3524.73f, 4051.46f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(196, Terminal.Constructor(Vector3(3525.931f, 4037.289f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(197, Terminal.Constructor(Vector3(3526.203f, 4052.882f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(198, Terminal.Constructor(Vector3(3533.255f, 4037.161f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(199, Terminal.Constructor(Vector3(3533.527f, 4052.754f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(200, Terminal.Constructor(Vector3(3534.728f, 4038.583f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(201, Terminal.Constructor(Vector3(3534.949f, 4051.281f, 19.81269f), cert_terminal), owning_building_guid = 29) - LocalObject(1628, Terminal.Constructor(Vector3(3485.081f, 4037.219f, 21.41269f), order_terminal), owning_building_guid = 29) - LocalObject(1629, Terminal.Constructor(Vector3(3487.699f, 4065.86f, 31.11769f), order_terminal), owning_building_guid = 29) - LocalObject(1630, Terminal.Constructor(Vector3(3488.812f, 4037.155f, 21.41269f), order_terminal), owning_building_guid = 29) - LocalObject(1631, Terminal.Constructor(Vector3(3492.6f, 4037.088f, 21.41269f), order_terminal), owning_building_guid = 29) - LocalObject(2308, Terminal.Constructor(Vector3(3421.699f, 4073.075f, 23.93569f), spawn_terminal), owning_building_guid = 29) - LocalObject(2309, Terminal.Constructor(Vector3(3464.328f, 4054.333f, 31.40169f), spawn_terminal), owning_building_guid = 29) - LocalObject(2310, Terminal.Constructor(Vector3(3478.105f, 4096.004f, 21.43569f), spawn_terminal), owning_building_guid = 29) - LocalObject(2311, Terminal.Constructor(Vector3(3481.156f, 4050.973f, 21.95669f), spawn_terminal), owning_building_guid = 29) - LocalObject(2312, Terminal.Constructor(Vector3(3488.447f, 4050.85f, 21.95669f), spawn_terminal), owning_building_guid = 29) - LocalObject(2313, Terminal.Constructor(Vector3(3495.734f, 4050.72f, 21.95669f), spawn_terminal), owning_building_guid = 29) - LocalObject(2314, Terminal.Constructor(Vector3(3542f, 4055.476f, 21.43569f), spawn_terminal), owning_building_guid = 29) - LocalObject(2508, Terminal.Constructor(Vector3(3414.167f, 4019.48f, 32.12769f), vehicle_terminal_combined), owning_building_guid = 29) - LocalObject(1544, VehicleSpawnPad.Constructor(Vector3(3414.315f, 4033.119f, 27.96969f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 29, terminal_guid = 2508) + LocalObject( + 194, + Terminal.Constructor(Vector3(3524.508f, 4038.762f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 195, + Terminal.Constructor(Vector3(3524.73f, 4051.46f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 196, + Terminal.Constructor(Vector3(3525.931f, 4037.289f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 197, + Terminal.Constructor(Vector3(3526.203f, 4052.882f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 198, + Terminal.Constructor(Vector3(3533.255f, 4037.161f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 199, + Terminal.Constructor(Vector3(3533.527f, 4052.754f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 200, + Terminal.Constructor(Vector3(3534.728f, 4038.583f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 201, + Terminal.Constructor(Vector3(3534.949f, 4051.281f, 19.81269f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1628, + Terminal.Constructor(Vector3(3485.081f, 4037.219f, 21.41269f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1629, + Terminal.Constructor(Vector3(3487.699f, 4065.86f, 31.11769f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1630, + Terminal.Constructor(Vector3(3488.812f, 4037.155f, 21.41269f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1631, + Terminal.Constructor(Vector3(3492.6f, 4037.088f, 21.41269f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2308, + Terminal.Constructor(Vector3(3421.699f, 4073.075f, 23.93569f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2309, + Terminal.Constructor(Vector3(3464.328f, 4054.333f, 31.40169f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2310, + Terminal.Constructor(Vector3(3478.105f, 4096.004f, 21.43569f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2311, + Terminal.Constructor(Vector3(3481.156f, 4050.973f, 21.95669f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2312, + Terminal.Constructor(Vector3(3488.447f, 4050.85f, 21.95669f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2313, + Terminal.Constructor(Vector3(3495.734f, 4050.72f, 21.95669f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2314, + Terminal.Constructor(Vector3(3542f, 4055.476f, 21.43569f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2508, + Terminal.Constructor(Vector3(3414.167f, 4019.48f, 32.12769f), vehicle_terminal_combined), + owning_building_guid = 29 + ) + LocalObject( + 1544, + VehicleSpawnPad.Constructor(Vector3(3414.315f, 4033.119f, 27.96969f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 29, + terminal_guid = 2508 + ) LocalObject(2171, ResourceSilo.Constructor(Vector3(3529.896f, 4115.37f, 36.83969f)), owning_building_guid = 29) - LocalObject(2210, SpawnTube.Constructor(Vector3(3482.608f, 4051.686f, 19.82269f), Vector3(0, 0, 91)), owning_building_guid = 29) - LocalObject(2211, SpawnTube.Constructor(Vector3(3489.898f, 4051.559f, 19.82269f), Vector3(0, 0, 91)), owning_building_guid = 29) - LocalObject(2212, SpawnTube.Constructor(Vector3(3497.185f, 4051.431f, 19.82269f), Vector3(0, 0, 91)), owning_building_guid = 29) - LocalObject(139, ProximityTerminal.Constructor(Vector3(3470.858f, 4054.141f, 29.63269f), adv_med_terminal), owning_building_guid = 29) - LocalObject(1563, ProximityTerminal.Constructor(Vector3(3481.469f, 4028.293f, 19.82269f), medical_terminal), owning_building_guid = 29) - LocalObject(1794, ProximityTerminal.Constructor(Vector3(3408.819f, 4059.01f, 38.17469f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1795, Terminal.Constructor(Vector3(3408.819f, 4059.01f, 38.17469f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1800, ProximityTerminal.Constructor(Vector3(3416.387f, 4075.195f, 40.11569f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1801, Terminal.Constructor(Vector3(3416.387f, 4075.195f, 40.11569f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1806, ProximityTerminal.Constructor(Vector3(3523.223f, 4053.887f, 40.15469f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1807, Terminal.Constructor(Vector3(3523.223f, 4053.887f, 40.15469f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1809, ProximityTerminal.Constructor(Vector3(3531.903f, 4069.96f, 38.16469f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1810, Terminal.Constructor(Vector3(3531.903f, 4069.96f, 38.16469f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(2107, ProximityTerminal.Constructor(Vector3(3393.786f, 4092.951f, 29.57269f), repair_silo), owning_building_guid = 29) - LocalObject(2108, Terminal.Constructor(Vector3(3393.786f, 4092.951f, 29.57269f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(2115, ProximityTerminal.Constructor(Vector3(3492.942f, 4003.201f, 29.57269f), repair_silo), owning_building_guid = 29) - LocalObject(2116, Terminal.Constructor(Vector3(3492.942f, 4003.201f, 29.57269f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(1468, FacilityTurret.Constructor(Vector3(3380.275f, 3994.07f, 38.22469f), manned_turret), owning_building_guid = 29) + LocalObject( + 2210, + SpawnTube.Constructor(Vector3(3482.608f, 4051.686f, 19.82269f), Vector3(0, 0, 91)), + owning_building_guid = 29 + ) + LocalObject( + 2211, + SpawnTube.Constructor(Vector3(3489.898f, 4051.559f, 19.82269f), Vector3(0, 0, 91)), + owning_building_guid = 29 + ) + LocalObject( + 2212, + SpawnTube.Constructor(Vector3(3497.185f, 4051.431f, 19.82269f), Vector3(0, 0, 91)), + owning_building_guid = 29 + ) + LocalObject( + 139, + ProximityTerminal.Constructor(Vector3(3470.858f, 4054.141f, 29.63269f), adv_med_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1563, + ProximityTerminal.Constructor(Vector3(3481.469f, 4028.293f, 19.82269f), medical_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1794, + ProximityTerminal.Constructor(Vector3(3408.819f, 4059.01f, 38.17469f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1795, + Terminal.Constructor(Vector3(3408.819f, 4059.01f, 38.17469f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1800, + ProximityTerminal.Constructor(Vector3(3416.387f, 4075.195f, 40.11569f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1801, + Terminal.Constructor(Vector3(3416.387f, 4075.195f, 40.11569f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1806, + ProximityTerminal.Constructor(Vector3(3523.223f, 4053.887f, 40.15469f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1807, + Terminal.Constructor(Vector3(3523.223f, 4053.887f, 40.15469f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1809, + ProximityTerminal.Constructor(Vector3(3531.903f, 4069.96f, 38.16469f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1810, + Terminal.Constructor(Vector3(3531.903f, 4069.96f, 38.16469f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2107, + ProximityTerminal.Constructor(Vector3(3393.786f, 4092.951f, 29.57269f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2108, + Terminal.Constructor(Vector3(3393.786f, 4092.951f, 29.57269f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2115, + ProximityTerminal.Constructor(Vector3(3492.942f, 4003.201f, 29.57269f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2116, + Terminal.Constructor(Vector3(3492.942f, 4003.201f, 29.57269f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1468, + FacilityTurret.Constructor(Vector3(3380.275f, 3994.07f, 38.22469f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1468, 5032) - LocalObject(1469, FacilityTurret.Constructor(Vector3(3382.643f, 4129.275f, 38.22469f), manned_turret), owning_building_guid = 29) + LocalObject( + 1469, + FacilityTurret.Constructor(Vector3(3382.643f, 4129.275f, 38.22469f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1469, 5033) - LocalObject(1476, FacilityTurret.Constructor(Vector3(3515.359f, 3990.525f, 38.22469f), manned_turret), owning_building_guid = 29) + LocalObject( + 1476, + FacilityTurret.Constructor(Vector3(3515.359f, 3990.525f, 38.22469f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1476, 5034) - LocalObject(1478, FacilityTurret.Constructor(Vector3(3559.214f, 4032.914f, 38.22469f), manned_turret), owning_building_guid = 29) + LocalObject( + 1478, + FacilityTurret.Constructor(Vector3(3559.214f, 4032.914f, 38.22469f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1478, 5035) - LocalObject(1479, FacilityTurret.Constructor(Vector3(3559.709f, 4126.193f, 38.22469f), manned_turret), owning_building_guid = 29) + LocalObject( + 1479, + FacilityTurret.Constructor(Vector3(3559.709f, 4126.193f, 38.22469f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1479, 5036) - LocalObject(806, ImplantTerminalMech.Constructor(Vector3(3522.186f, 4045.161f, 19.29969f)), owning_building_guid = 29) - LocalObject(800, Terminal.Constructor(Vector3(3522.204f, 4045.161f, 19.29969f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 806, + ImplantTerminalMech.Constructor(Vector3(3522.186f, 4045.161f, 19.29969f)), + owning_building_guid = 29 + ) + LocalObject( + 800, + Terminal.Constructor(Vector3(3522.204f, 4045.161f, 19.29969f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(806, 800) - LocalObject(807, ImplantTerminalMech.Constructor(Vector3(3537.54f, 4044.905f, 19.29969f)), owning_building_guid = 29) - LocalObject(801, Terminal.Constructor(Vector3(3537.521f, 4044.906f, 19.29969f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 807, + ImplantTerminalMech.Constructor(Vector3(3537.54f, 4044.905f, 19.29969f)), + owning_building_guid = 29 + ) + LocalObject( + 801, + Terminal.Constructor(Vector3(3537.521f, 4044.906f, 19.29969f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(807, 801) - LocalObject(1945, Painbox.Constructor(Vector3(3458.239f, 4050.751f, 43.85149f), painbox), owning_building_guid = 29) - LocalObject(1956, Painbox.Constructor(Vector3(3485.453f, 4041.115f, 23.89259f), painbox_continuous), owning_building_guid = 29) - LocalObject(1967, Painbox.Constructor(Vector3(3472.726f, 4051.909f, 44.05659f), painbox_door_radius), owning_building_guid = 29) - LocalObject(1986, Painbox.Constructor(Vector3(3475.61f, 4045.5f, 22.17859f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1987, Painbox.Constructor(Vector3(3496.561f, 4027.79f, 23.36359f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1988, Painbox.Constructor(Vector3(3503.609f, 4043.036f, 21.53689f), painbox_door_radius_continuous), owning_building_guid = 29) + LocalObject( + 1945, + Painbox.Constructor(Vector3(3458.239f, 4050.751f, 43.85149f), painbox), + owning_building_guid = 29 + ) + LocalObject( + 1956, + Painbox.Constructor(Vector3(3485.453f, 4041.115f, 23.89259f), painbox_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1967, + Painbox.Constructor(Vector3(3472.726f, 4051.909f, 44.05659f), painbox_door_radius), + owning_building_guid = 29 + ) + LocalObject( + 1986, + Painbox.Constructor(Vector3(3475.61f, 4045.5f, 22.17859f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1987, + Painbox.Constructor(Vector3(3496.561f, 4027.79f, 23.36359f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1988, + Painbox.Constructor(Vector3(3503.609f, 4043.036f, 21.53689f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) LocalObject(255, Generator.Constructor(Vector3(3454.378f, 4052.387f, 38.52869f)), owning_building_guid = 29) - LocalObject(244, Terminal.Constructor(Vector3(3462.57f, 4052.291f, 39.82269f), gen_control), owning_building_guid = 29) + LocalObject( + 244, + Terminal.Constructor(Vector3(3462.57f, 4052.291f, 39.82269f), gen_control), + owning_building_guid = 29 + ) } Building9() def Building9(): Unit = { // Name: Bitol Type: cryo_facility GUID: 32, MapID: 9 - LocalBuilding("Bitol", 32, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4480f, 2570f, 30.43306f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(189, CaptureTerminal.Constructor(Vector3(4451.911f, 2629.266f, 20.43306f), capture_terminal), owning_building_guid = 32) + LocalBuilding( + "Bitol", + 32, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4480f, 2570f, 30.43306f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 189, + CaptureTerminal.Constructor(Vector3(4451.911f, 2629.266f, 20.43306f), capture_terminal), + owning_building_guid = 32 + ) LocalObject(416, Door.Constructor(Vector3(4421.023f, 2574.5f, 31.98406f)), owning_building_guid = 32) LocalObject(417, Door.Constructor(Vector3(4421.023f, 2592.693f, 39.94806f)), owning_building_guid = 32) LocalObject(420, Door.Constructor(Vector3(4437.674f, 2637.803f, 31.98406f)), owning_building_guid = 32) @@ -934,15 +2591,60 @@ object Map02 { // Hossin LocalObject(2404, Door.Constructor(Vector3(4484.673f, 2575.733f, 22.28706f)), owning_building_guid = 32) LocalObject(2405, Door.Constructor(Vector3(4484.673f, 2583.026f, 22.28706f)), owning_building_guid = 32) LocalObject(2406, Door.Constructor(Vector3(4484.673f, 2590.315f, 22.28706f)), owning_building_guid = 32) - LocalObject(829, IFFLock.Constructor(Vector3(4480.77f, 2597.822f, 31.91506f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 789) - LocalObject(958, IFFLock.Constructor(Vector3(4447.06f, 2636.428f, 21.76906f), Vector3(0, 0, 270)), owning_building_guid = 32, door_guid = 678) - LocalObject(959, IFFLock.Constructor(Vector3(4456.813f, 2639.572f, 21.76906f), Vector3(0, 0, 90)), owning_building_guid = 32, door_guid = 680) - LocalObject(961, IFFLock.Constructor(Vector3(4464.814f, 2592.043f, 41.88506f), Vector3(0, 0, 90)), owning_building_guid = 32, door_guid = 424) - LocalObject(965, IFFLock.Constructor(Vector3(4481.954f, 2573.958f, 41.88506f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 428) - LocalObject(968, IFFLock.Constructor(Vector3(4490.428f, 2594.81f, 21.76906f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 704) - LocalObject(970, IFFLock.Constructor(Vector3(4493.572f, 2569.19f, 21.76906f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 703) - LocalObject(973, IFFLock.Constructor(Vector3(4503.19f, 2572.428f, 14.26906f), Vector3(0, 0, 270)), owning_building_guid = 32, door_guid = 708) - LocalObject(980, IFFLock.Constructor(Vector3(4512.814f, 2480.042f, 31.88506f), Vector3(0, 0, 90)), owning_building_guid = 32, door_guid = 444) + LocalObject( + 829, + IFFLock.Constructor(Vector3(4480.77f, 2597.822f, 31.91506f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 789 + ) + LocalObject( + 958, + IFFLock.Constructor(Vector3(4447.06f, 2636.428f, 21.76906f), Vector3(0, 0, 270)), + owning_building_guid = 32, + door_guid = 678 + ) + LocalObject( + 959, + IFFLock.Constructor(Vector3(4456.813f, 2639.572f, 21.76906f), Vector3(0, 0, 90)), + owning_building_guid = 32, + door_guid = 680 + ) + LocalObject( + 961, + IFFLock.Constructor(Vector3(4464.814f, 2592.043f, 41.88506f), Vector3(0, 0, 90)), + owning_building_guid = 32, + door_guid = 424 + ) + LocalObject( + 965, + IFFLock.Constructor(Vector3(4481.954f, 2573.958f, 41.88506f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 428 + ) + LocalObject( + 968, + IFFLock.Constructor(Vector3(4490.428f, 2594.81f, 21.76906f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 704 + ) + LocalObject( + 970, + IFFLock.Constructor(Vector3(4493.572f, 2569.19f, 21.76906f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 703 + ) + LocalObject( + 973, + IFFLock.Constructor(Vector3(4503.19f, 2572.428f, 14.26906f), Vector3(0, 0, 270)), + owning_building_guid = 32, + door_guid = 708 + ) + LocalObject( + 980, + IFFLock.Constructor(Vector3(4512.814f, 2480.042f, 31.88506f), Vector3(0, 0, 90)), + owning_building_guid = 32, + door_guid = 444 + ) LocalObject(1246, Locker.Constructor(Vector3(4495.563f, 2572.141f, 20.69406f)), owning_building_guid = 32) LocalObject(1249, Locker.Constructor(Vector3(4496.727f, 2572.141f, 20.69406f)), owning_building_guid = 32) LocalObject(1252, Locker.Constructor(Vector3(4497.874f, 2572.141f, 20.69406f)), owning_building_guid = 32) @@ -972,76 +2674,309 @@ object Map02 { // Hossin LocalObject(1417, Locker.Constructor(Vector3(4498.26f, 2564.46f, 30.20406f)), owning_building_guid = 32) LocalObject(1418, Locker.Constructor(Vector3(4498.26f, 2566.982f, 30.43306f)), owning_building_guid = 32) LocalObject(1419, Locker.Constructor(Vector3(4498.26f, 2568.016f, 30.43306f)), owning_building_guid = 32) - LocalObject(202, Terminal.Constructor(Vector3(4482.276f, 2618.25f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(203, Terminal.Constructor(Vector3(4482.276f, 2625.575f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(204, Terminal.Constructor(Vector3(4483.724f, 2616.802f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(205, Terminal.Constructor(Vector3(4483.724f, 2627.023f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(206, Terminal.Constructor(Vector3(4496.424f, 2616.802f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(207, Terminal.Constructor(Vector3(4496.424f, 2627.023f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(208, Terminal.Constructor(Vector3(4497.872f, 2618.25f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(209, Terminal.Constructor(Vector3(4497.872f, 2625.575f, 20.42306f), cert_terminal), owning_building_guid = 32) - LocalObject(1648, Terminal.Constructor(Vector3(4469.972f, 2579.526f, 31.72806f), order_terminal), owning_building_guid = 32) - LocalObject(1653, Terminal.Constructor(Vector3(4498.654f, 2577.408f, 22.02306f), order_terminal), owning_building_guid = 32) - LocalObject(1654, Terminal.Constructor(Vector3(4498.654f, 2581.139f, 22.02306f), order_terminal), owning_building_guid = 32) - LocalObject(1655, Terminal.Constructor(Vector3(4498.654f, 2584.928f, 22.02306f), order_terminal), owning_building_guid = 32) - LocalObject(2322, Terminal.Constructor(Vector3(4440f, 2569.407f, 22.04606f), spawn_terminal), owning_building_guid = 32) - LocalObject(2323, Terminal.Constructor(Vector3(4463.91f, 2513.41f, 24.54606f), spawn_terminal), owning_building_guid = 32) - LocalObject(2325, Terminal.Constructor(Vector3(4479.407f, 2634f, 22.04606f), spawn_terminal), owning_building_guid = 32) - LocalObject(2326, Terminal.Constructor(Vector3(4481.905f, 2556.359f, 32.01206f), spawn_terminal), owning_building_guid = 32) - LocalObject(2329, Terminal.Constructor(Vector3(4484.971f, 2573.243f, 22.56706f), spawn_terminal), owning_building_guid = 32) - LocalObject(2330, Terminal.Constructor(Vector3(4484.967f, 2580.535f, 22.56706f), spawn_terminal), owning_building_guid = 32) - LocalObject(2331, Terminal.Constructor(Vector3(4484.97f, 2587.823f, 22.56706f), spawn_terminal), owning_building_guid = 32) - LocalObject(2511, Terminal.Constructor(Vector3(4517.628f, 2506.814f, 32.73806f), vehicle_terminal_combined), owning_building_guid = 32) - LocalObject(1548, VehicleSpawnPad.Constructor(Vector3(4503.989f, 2506.724f, 28.58006f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 32, terminal_guid = 2511) + LocalObject( + 202, + Terminal.Constructor(Vector3(4482.276f, 2618.25f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 203, + Terminal.Constructor(Vector3(4482.276f, 2625.575f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(4483.724f, 2616.802f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(4483.724f, 2627.023f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(4496.424f, 2616.802f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(4496.424f, 2627.023f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(4497.872f, 2618.25f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(4497.872f, 2625.575f, 20.42306f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1648, + Terminal.Constructor(Vector3(4469.972f, 2579.526f, 31.72806f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1653, + Terminal.Constructor(Vector3(4498.654f, 2577.408f, 22.02306f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1654, + Terminal.Constructor(Vector3(4498.654f, 2581.139f, 22.02306f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1655, + Terminal.Constructor(Vector3(4498.654f, 2584.928f, 22.02306f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2322, + Terminal.Constructor(Vector3(4440f, 2569.407f, 22.04606f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2323, + Terminal.Constructor(Vector3(4463.91f, 2513.41f, 24.54606f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2325, + Terminal.Constructor(Vector3(4479.407f, 2634f, 22.04606f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2326, + Terminal.Constructor(Vector3(4481.905f, 2556.359f, 32.01206f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2329, + Terminal.Constructor(Vector3(4484.971f, 2573.243f, 22.56706f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2330, + Terminal.Constructor(Vector3(4484.967f, 2580.535f, 22.56706f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2331, + Terminal.Constructor(Vector3(4484.97f, 2587.823f, 22.56706f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2511, + Terminal.Constructor(Vector3(4517.628f, 2506.814f, 32.73806f), vehicle_terminal_combined), + owning_building_guid = 32 + ) + LocalObject( + 1548, + VehicleSpawnPad.Constructor(Vector3(4503.989f, 2506.724f, 28.58006f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 32, + terminal_guid = 2511 + ) LocalObject(2173, ResourceSilo.Constructor(Vector3(4419.733f, 2620.852f, 37.45006f)), owning_building_guid = 32) - LocalObject(2224, SpawnTube.Constructor(Vector3(4484.233f, 2574.683f, 20.43306f), Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(2225, SpawnTube.Constructor(Vector3(4484.233f, 2581.974f, 20.43306f), Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(2226, SpawnTube.Constructor(Vector3(4484.233f, 2589.262f, 20.43306f), Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(140, ProximityTerminal.Constructor(Vector3(4481.983f, 2562.892f, 30.24306f), adv_med_terminal), owning_building_guid = 32) - LocalObject(1567, ProximityTerminal.Constructor(Vector3(4507.642f, 2573.952f, 20.43306f), medical_terminal), owning_building_guid = 32) - LocalObject(1830, ProximityTerminal.Constructor(Vector3(4461.883f, 2508.061f, 40.72606f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1831, Terminal.Constructor(Vector3(4461.883f, 2508.061f, 40.72606f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1833, ProximityTerminal.Constructor(Vector3(4465.101f, 2623.651f, 38.77506f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1834, Terminal.Constructor(Vector3(4465.101f, 2623.651f, 38.77506f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1839, ProximityTerminal.Constructor(Vector3(4478.198f, 2500.777f, 38.78506f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1840, Terminal.Constructor(Vector3(4478.198f, 2500.777f, 38.78506f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1842, ProximityTerminal.Constructor(Vector3(4481.323f, 2615.253f, 40.76506f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1843, Terminal.Constructor(Vector3(4481.323f, 2615.253f, 40.76506f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(2131, ProximityTerminal.Constructor(Vector3(4444.524f, 2485.154f, 30.18306f), repair_silo), owning_building_guid = 32) - LocalObject(2132, Terminal.Constructor(Vector3(4444.524f, 2485.154f, 30.18306f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(2135, ProximityTerminal.Constructor(Vector3(4532.53f, 2585.861f, 30.18306f), repair_silo), owning_building_guid = 32) - LocalObject(2136, Terminal.Constructor(Vector3(4532.53f, 2585.861f, 30.18306f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(1494, FacilityTurret.Constructor(Vector3(4408.392f, 2650.472f, 38.83506f), manned_turret), owning_building_guid = 32) + LocalObject( + 2224, + SpawnTube.Constructor(Vector3(4484.233f, 2574.683f, 20.43306f), Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 2225, + SpawnTube.Constructor(Vector3(4484.233f, 2581.974f, 20.43306f), Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 2226, + SpawnTube.Constructor(Vector3(4484.233f, 2589.262f, 20.43306f), Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 140, + ProximityTerminal.Constructor(Vector3(4481.983f, 2562.892f, 30.24306f), adv_med_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1567, + ProximityTerminal.Constructor(Vector3(4507.642f, 2573.952f, 20.43306f), medical_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1830, + ProximityTerminal.Constructor(Vector3(4461.883f, 2508.061f, 40.72606f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1831, + Terminal.Constructor(Vector3(4461.883f, 2508.061f, 40.72606f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1833, + ProximityTerminal.Constructor(Vector3(4465.101f, 2623.651f, 38.77506f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1834, + Terminal.Constructor(Vector3(4465.101f, 2623.651f, 38.77506f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1839, + ProximityTerminal.Constructor(Vector3(4478.198f, 2500.777f, 38.78506f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1840, + Terminal.Constructor(Vector3(4478.198f, 2500.777f, 38.78506f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1842, + ProximityTerminal.Constructor(Vector3(4481.323f, 2615.253f, 40.76506f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1843, + Terminal.Constructor(Vector3(4481.323f, 2615.253f, 40.76506f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2131, + ProximityTerminal.Constructor(Vector3(4444.524f, 2485.154f, 30.18306f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 2132, + Terminal.Constructor(Vector3(4444.524f, 2485.154f, 30.18306f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2135, + ProximityTerminal.Constructor(Vector3(4532.53f, 2585.861f, 30.18306f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 2136, + Terminal.Constructor(Vector3(4532.53f, 2585.861f, 30.18306f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1494, + FacilityTurret.Constructor(Vector3(4408.392f, 2650.472f, 38.83506f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1494, 5037) - LocalObject(1495, FacilityTurret.Constructor(Vector3(4408.4f, 2473.379f, 38.83506f), manned_turret), owning_building_guid = 32) + LocalObject( + 1495, + FacilityTurret.Constructor(Vector3(4408.4f, 2473.379f, 38.83506f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1495, 5038) - LocalObject(1500, FacilityTurret.Constructor(Vector3(4501.665f, 2651.605f, 38.83506f), manned_turret), owning_building_guid = 32) + LocalObject( + 1500, + FacilityTurret.Constructor(Vector3(4501.665f, 2651.605f, 38.83506f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1500, 5039) - LocalObject(1503, FacilityTurret.Constructor(Vector3(4543.626f, 2473.371f, 38.83506f), manned_turret), owning_building_guid = 32) + LocalObject( + 1503, + FacilityTurret.Constructor(Vector3(4543.626f, 2473.371f, 38.83506f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1503, 5040) - LocalObject(1504, FacilityTurret.Constructor(Vector3(4544.813f, 2608.496f, 38.83506f), manned_turret), owning_building_guid = 32) + LocalObject( + 1504, + FacilityTurret.Constructor(Vector3(4544.813f, 2608.496f, 38.83506f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1504, 5041) - LocalObject(808, ImplantTerminalMech.Constructor(Vector3(4490.066f, 2614.368f, 19.91006f)), owning_building_guid = 32) - LocalObject(802, Terminal.Constructor(Vector3(4490.066f, 2614.386f, 19.91006f), implant_terminal_interface), owning_building_guid = 32) + LocalObject( + 808, + ImplantTerminalMech.Constructor(Vector3(4490.066f, 2614.368f, 19.91006f)), + owning_building_guid = 32 + ) + LocalObject( + 802, + Terminal.Constructor(Vector3(4490.066f, 2614.386f, 19.91006f), implant_terminal_interface), + owning_building_guid = 32 + ) TerminalToInterface(808, 802) - LocalObject(809, ImplantTerminalMech.Constructor(Vector3(4490.054f, 2629.724f, 19.91006f)), owning_building_guid = 32) - LocalObject(803, Terminal.Constructor(Vector3(4490.054f, 2629.706f, 19.91006f), implant_terminal_interface), owning_building_guid = 32) + LocalObject( + 809, + ImplantTerminalMech.Constructor(Vector3(4490.054f, 2629.724f, 19.91006f)), + owning_building_guid = 32 + ) + LocalObject( + 803, + Terminal.Constructor(Vector3(4490.054f, 2629.706f, 19.91006f), implant_terminal_interface), + owning_building_guid = 32 + ) TerminalToInterface(809, 803) - LocalObject(1948, Painbox.Constructor(Vector3(4485.593f, 2550.334f, 44.46186f), painbox), owning_building_guid = 32) - LocalObject(1958, Painbox.Constructor(Vector3(4494.753f, 2577.712f, 24.50296f), painbox_continuous), owning_building_guid = 32) - LocalObject(1970, Painbox.Constructor(Vector3(4484.182f, 2564.798f, 44.66696f), painbox_door_radius), owning_building_guid = 32) - LocalObject(1992, Painbox.Constructor(Vector3(4490.54f, 2567.793f, 22.78896f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(1993, Painbox.Constructor(Vector3(4492.516f, 2595.831f, 22.14726f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(1994, Painbox.Constructor(Vector3(4507.882f, 2589.05f, 23.97396f), painbox_door_radius_continuous), owning_building_guid = 32) + LocalObject( + 1948, + Painbox.Constructor(Vector3(4485.593f, 2550.334f, 44.46186f), painbox), + owning_building_guid = 32 + ) + LocalObject( + 1958, + Painbox.Constructor(Vector3(4494.753f, 2577.712f, 24.50296f), painbox_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1970, + Painbox.Constructor(Vector3(4484.182f, 2564.798f, 44.66696f), painbox_door_radius), + owning_building_guid = 32 + ) + LocalObject( + 1992, + Painbox.Constructor(Vector3(4490.54f, 2567.793f, 22.78896f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1993, + Painbox.Constructor(Vector3(4492.516f, 2595.831f, 22.14726f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1994, + Painbox.Constructor(Vector3(4507.882f, 2589.05f, 23.97396f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) LocalObject(258, Generator.Constructor(Vector3(4484.025f, 2546.445f, 39.13906f)), owning_building_guid = 32) - LocalObject(247, Terminal.Constructor(Vector3(4483.978f, 2554.637f, 40.43306f), gen_control), owning_building_guid = 32) + LocalObject( + 247, + Terminal.Constructor(Vector3(4483.978f, 2554.637f, 40.43306f), gen_control), + owning_building_guid = 32 + ) } Building7() def Building7(): Unit = { // Name: Zotz Type: cryo_facility GUID: 35, MapID: 7 - LocalBuilding("Zotz", 35, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6730f, 2292f, 129.2093f), Vector3(0f, 0f, 90f), cryo_facility))) - LocalObject(193, CaptureTerminal.Constructor(Vector3(6670.734f, 2263.911f, 119.2093f), capture_terminal), owning_building_guid = 35) + LocalBuilding( + "Zotz", + 35, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6730f, 2292f, 129.2093f), + Vector3(0f, 0f, 90f), + cryo_facility + ) + ) + ) + LocalObject( + 193, + CaptureTerminal.Constructor(Vector3(6670.734f, 2263.911f, 119.2093f), capture_terminal), + owning_building_guid = 35 + ) LocalObject(521, Door.Constructor(Vector3(6662.197f, 2249.674f, 130.7603f)), owning_building_guid = 35) LocalObject(522, Door.Constructor(Vector3(6662.197f, 2267.867f, 138.7243f)), owning_building_guid = 35) LocalObject(527, Door.Constructor(Vector3(6707.307f, 2233.023f, 138.7243f)), owning_building_guid = 35) @@ -1082,15 +3017,60 @@ object Map02 { // Hossin LocalObject(2436, Door.Constructor(Vector3(6709.685f, 2296.673f, 121.0633f)), owning_building_guid = 35) LocalObject(2437, Door.Constructor(Vector3(6716.974f, 2296.673f, 121.0633f)), owning_building_guid = 35) LocalObject(2438, Door.Constructor(Vector3(6724.267f, 2296.673f, 121.0633f)), owning_building_guid = 35) - LocalObject(833, IFFLock.Constructor(Vector3(6702.178f, 2292.77f, 130.6913f), Vector3(0, 0, 270)), owning_building_guid = 35, door_guid = 793) - LocalObject(1041, IFFLock.Constructor(Vector3(6660.428f, 2268.813f, 120.5453f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 761) - LocalObject(1042, IFFLock.Constructor(Vector3(6663.572f, 2259.06f, 120.5453f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 760) - LocalObject(1047, IFFLock.Constructor(Vector3(6705.19f, 2302.428f, 120.5453f), Vector3(0, 0, 270)), owning_building_guid = 35, door_guid = 766) - LocalObject(1048, IFFLock.Constructor(Vector3(6707.957f, 2276.814f, 140.6613f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 528) - LocalObject(1049, IFFLock.Constructor(Vector3(6726.042f, 2293.954f, 140.6613f), Vector3(0, 0, 270)), owning_building_guid = 35, door_guid = 530) - LocalObject(1050, IFFLock.Constructor(Vector3(6727.572f, 2315.19f, 113.0453f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 771) - LocalObject(1051, IFFLock.Constructor(Vector3(6730.81f, 2305.572f, 120.5453f), Vector3(0, 0, 90)), owning_building_guid = 35, door_guid = 774) - LocalObject(1052, IFFLock.Constructor(Vector3(6819.958f, 2324.814f, 130.6613f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 535) + LocalObject( + 833, + IFFLock.Constructor(Vector3(6702.178f, 2292.77f, 130.6913f), Vector3(0, 0, 270)), + owning_building_guid = 35, + door_guid = 793 + ) + LocalObject( + 1041, + IFFLock.Constructor(Vector3(6660.428f, 2268.813f, 120.5453f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 761 + ) + LocalObject( + 1042, + IFFLock.Constructor(Vector3(6663.572f, 2259.06f, 120.5453f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 760 + ) + LocalObject( + 1047, + IFFLock.Constructor(Vector3(6705.19f, 2302.428f, 120.5453f), Vector3(0, 0, 270)), + owning_building_guid = 35, + door_guid = 766 + ) + LocalObject( + 1048, + IFFLock.Constructor(Vector3(6707.957f, 2276.814f, 140.6613f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 528 + ) + LocalObject( + 1049, + IFFLock.Constructor(Vector3(6726.042f, 2293.954f, 140.6613f), Vector3(0, 0, 270)), + owning_building_guid = 35, + door_guid = 530 + ) + LocalObject( + 1050, + IFFLock.Constructor(Vector3(6727.572f, 2315.19f, 113.0453f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 771 + ) + LocalObject( + 1051, + IFFLock.Constructor(Vector3(6730.81f, 2305.572f, 120.5453f), Vector3(0, 0, 90)), + owning_building_guid = 35, + door_guid = 774 + ) + LocalObject( + 1052, + IFFLock.Constructor(Vector3(6819.958f, 2324.814f, 130.6613f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 535 + ) LocalObject(1375, Locker.Constructor(Vector3(6675.473f, 2311.997f, 119.2043f)), owning_building_guid = 35) LocalObject(1376, Locker.Constructor(Vector3(6676.725f, 2311.997f, 119.2043f)), owning_building_guid = 35) LocalObject(1377, Locker.Constructor(Vector3(6677.987f, 2311.997f, 119.2043f)), owning_building_guid = 35) @@ -1120,88 +3100,331 @@ object Map02 { // Hossin LocalObject(1425, Locker.Constructor(Vector3(6738.662f, 2310.26f, 128.9803f)), owning_building_guid = 35) LocalObject(1426, Locker.Constructor(Vector3(6741.179f, 2310.26f, 129.2093f)), owning_building_guid = 35) LocalObject(1427, Locker.Constructor(Vector3(6742.213f, 2310.26f, 129.2093f)), owning_building_guid = 35) - LocalObject(210, Terminal.Constructor(Vector3(6672.977f, 2295.724f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(211, Terminal.Constructor(Vector3(6672.977f, 2308.424f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(212, Terminal.Constructor(Vector3(6674.425f, 2294.276f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(213, Terminal.Constructor(Vector3(6674.425f, 2309.872f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(214, Terminal.Constructor(Vector3(6681.75f, 2294.276f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(215, Terminal.Constructor(Vector3(6681.75f, 2309.872f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(216, Terminal.Constructor(Vector3(6683.198f, 2295.724f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(217, Terminal.Constructor(Vector3(6683.198f, 2308.424f, 119.1993f), cert_terminal), owning_building_guid = 35) - LocalObject(1701, Terminal.Constructor(Vector3(6715.072f, 2310.654f, 120.7993f), order_terminal), owning_building_guid = 35) - LocalObject(1702, Terminal.Constructor(Vector3(6718.861f, 2310.654f, 120.7993f), order_terminal), owning_building_guid = 35) - LocalObject(1703, Terminal.Constructor(Vector3(6720.474f, 2281.972f, 130.5043f), order_terminal), owning_building_guid = 35) - LocalObject(1704, Terminal.Constructor(Vector3(6722.592f, 2310.654f, 120.7993f), order_terminal), owning_building_guid = 35) - LocalObject(2351, Terminal.Constructor(Vector3(6666f, 2291.407f, 120.8223f), spawn_terminal), owning_building_guid = 35) - LocalObject(2352, Terminal.Constructor(Vector3(6712.177f, 2296.97f, 121.3433f), spawn_terminal), owning_building_guid = 35) - LocalObject(2353, Terminal.Constructor(Vector3(6719.465f, 2296.967f, 121.3433f), spawn_terminal), owning_building_guid = 35) - LocalObject(2354, Terminal.Constructor(Vector3(6726.757f, 2296.971f, 121.3433f), spawn_terminal), owning_building_guid = 35) - LocalObject(2355, Terminal.Constructor(Vector3(6730.593f, 2252f, 120.8223f), spawn_terminal), owning_building_guid = 35) - LocalObject(2356, Terminal.Constructor(Vector3(6743.641f, 2293.905f, 130.7883f), spawn_terminal), owning_building_guid = 35) - LocalObject(2357, Terminal.Constructor(Vector3(6786.59f, 2275.91f, 123.3223f), spawn_terminal), owning_building_guid = 35) - LocalObject(2515, Terminal.Constructor(Vector3(6793.186f, 2329.628f, 131.5143f), vehicle_terminal_combined), owning_building_guid = 35) - LocalObject(1554, VehicleSpawnPad.Constructor(Vector3(6793.276f, 2315.989f, 127.3563f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 35, terminal_guid = 2515) + LocalObject( + 210, + Terminal.Constructor(Vector3(6672.977f, 2295.724f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(6672.977f, 2308.424f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(6674.425f, 2294.276f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(6674.425f, 2309.872f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(6681.75f, 2294.276f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(6681.75f, 2309.872f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(6683.198f, 2295.724f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 217, + Terminal.Constructor(Vector3(6683.198f, 2308.424f, 119.1993f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1701, + Terminal.Constructor(Vector3(6715.072f, 2310.654f, 120.7993f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1702, + Terminal.Constructor(Vector3(6718.861f, 2310.654f, 120.7993f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1703, + Terminal.Constructor(Vector3(6720.474f, 2281.972f, 130.5043f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1704, + Terminal.Constructor(Vector3(6722.592f, 2310.654f, 120.7993f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2351, + Terminal.Constructor(Vector3(6666f, 2291.407f, 120.8223f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2352, + Terminal.Constructor(Vector3(6712.177f, 2296.97f, 121.3433f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2353, + Terminal.Constructor(Vector3(6719.465f, 2296.967f, 121.3433f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2354, + Terminal.Constructor(Vector3(6726.757f, 2296.971f, 121.3433f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2355, + Terminal.Constructor(Vector3(6730.593f, 2252f, 120.8223f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2356, + Terminal.Constructor(Vector3(6743.641f, 2293.905f, 130.7883f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2357, + Terminal.Constructor(Vector3(6786.59f, 2275.91f, 123.3223f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2515, + Terminal.Constructor(Vector3(6793.186f, 2329.628f, 131.5143f), vehicle_terminal_combined), + owning_building_guid = 35 + ) + LocalObject( + 1554, + VehicleSpawnPad.Constructor(Vector3(6793.276f, 2315.989f, 127.3563f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 35, + terminal_guid = 2515 + ) LocalObject(2177, ResourceSilo.Constructor(Vector3(6679.148f, 2231.733f, 136.2263f)), owning_building_guid = 35) - LocalObject(2256, SpawnTube.Constructor(Vector3(6710.738f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), owning_building_guid = 35) - LocalObject(2257, SpawnTube.Constructor(Vector3(6718.026f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), owning_building_guid = 35) - LocalObject(2258, SpawnTube.Constructor(Vector3(6725.317f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), owning_building_guid = 35) - LocalObject(141, ProximityTerminal.Constructor(Vector3(6737.108f, 2293.983f, 129.0193f), adv_med_terminal), owning_building_guid = 35) - LocalObject(1573, ProximityTerminal.Constructor(Vector3(6726.048f, 2319.642f, 119.2093f), medical_terminal), owning_building_guid = 35) - LocalObject(1875, ProximityTerminal.Constructor(Vector3(6676.349f, 2277.101f, 137.5513f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1876, Terminal.Constructor(Vector3(6676.349f, 2277.101f, 137.5513f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1878, ProximityTerminal.Constructor(Vector3(6684.747f, 2293.323f, 139.5413f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1879, Terminal.Constructor(Vector3(6684.747f, 2293.323f, 139.5413f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1881, ProximityTerminal.Constructor(Vector3(6791.939f, 2273.883f, 139.5023f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1882, Terminal.Constructor(Vector3(6791.939f, 2273.883f, 139.5023f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(1884, ProximityTerminal.Constructor(Vector3(6799.223f, 2290.198f, 137.5613f), pad_landing_frame), owning_building_guid = 35) - LocalObject(1885, Terminal.Constructor(Vector3(6799.223f, 2290.198f, 137.5613f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(2159, ProximityTerminal.Constructor(Vector3(6714.139f, 2344.53f, 128.9593f), repair_silo), owning_building_guid = 35) - LocalObject(2160, Terminal.Constructor(Vector3(6714.139f, 2344.53f, 128.9593f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(2163, ProximityTerminal.Constructor(Vector3(6814.846f, 2256.525f, 128.9593f), repair_silo), owning_building_guid = 35) - LocalObject(2164, Terminal.Constructor(Vector3(6814.846f, 2256.525f, 128.9593f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(1531, FacilityTurret.Constructor(Vector3(6648.395f, 2313.665f, 137.6113f), manned_turret), owning_building_guid = 35) + LocalObject( + 2256, + SpawnTube.Constructor(Vector3(6710.738f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), + owning_building_guid = 35 + ) + LocalObject( + 2257, + SpawnTube.Constructor(Vector3(6718.026f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), + owning_building_guid = 35 + ) + LocalObject( + 2258, + SpawnTube.Constructor(Vector3(6725.317f, 2296.233f, 119.2093f), Vector3(0, 0, 270)), + owning_building_guid = 35 + ) + LocalObject( + 141, + ProximityTerminal.Constructor(Vector3(6737.108f, 2293.983f, 129.0193f), adv_med_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1573, + ProximityTerminal.Constructor(Vector3(6726.048f, 2319.642f, 119.2093f), medical_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1875, + ProximityTerminal.Constructor(Vector3(6676.349f, 2277.101f, 137.5513f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1876, + Terminal.Constructor(Vector3(6676.349f, 2277.101f, 137.5513f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1878, + ProximityTerminal.Constructor(Vector3(6684.747f, 2293.323f, 139.5413f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1879, + Terminal.Constructor(Vector3(6684.747f, 2293.323f, 139.5413f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1881, + ProximityTerminal.Constructor(Vector3(6791.939f, 2273.883f, 139.5023f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1882, + Terminal.Constructor(Vector3(6791.939f, 2273.883f, 139.5023f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1884, + ProximityTerminal.Constructor(Vector3(6799.223f, 2290.198f, 137.5613f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 1885, + Terminal.Constructor(Vector3(6799.223f, 2290.198f, 137.5613f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2159, + ProximityTerminal.Constructor(Vector3(6714.139f, 2344.53f, 128.9593f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 2160, + Terminal.Constructor(Vector3(6714.139f, 2344.53f, 128.9593f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2163, + ProximityTerminal.Constructor(Vector3(6814.846f, 2256.525f, 128.9593f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 2164, + Terminal.Constructor(Vector3(6814.846f, 2256.525f, 128.9593f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1531, + FacilityTurret.Constructor(Vector3(6648.395f, 2313.665f, 137.6113f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1531, 5042) - LocalObject(1532, FacilityTurret.Constructor(Vector3(6649.528f, 2220.392f, 137.6113f), manned_turret), owning_building_guid = 35) + LocalObject( + 1532, + FacilityTurret.Constructor(Vector3(6649.528f, 2220.392f, 137.6113f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1532, 5043) - LocalObject(1534, FacilityTurret.Constructor(Vector3(6691.504f, 2356.813f, 137.6113f), manned_turret), owning_building_guid = 35) + LocalObject( + 1534, + FacilityTurret.Constructor(Vector3(6691.504f, 2356.813f, 137.6113f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1534, 5044) - LocalObject(1536, FacilityTurret.Constructor(Vector3(6826.621f, 2220.4f, 137.6113f), manned_turret), owning_building_guid = 35) + LocalObject( + 1536, + FacilityTurret.Constructor(Vector3(6826.621f, 2220.4f, 137.6113f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1536, 5045) - LocalObject(1537, FacilityTurret.Constructor(Vector3(6826.629f, 2355.626f, 137.6113f), manned_turret), owning_building_guid = 35) + LocalObject( + 1537, + FacilityTurret.Constructor(Vector3(6826.629f, 2355.626f, 137.6113f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1537, 5046) - LocalObject(810, ImplantTerminalMech.Constructor(Vector3(6670.276f, 2302.054f, 118.6863f)), owning_building_guid = 35) - LocalObject(804, Terminal.Constructor(Vector3(6670.294f, 2302.054f, 118.6863f), implant_terminal_interface), owning_building_guid = 35) + LocalObject( + 810, + ImplantTerminalMech.Constructor(Vector3(6670.276f, 2302.054f, 118.6863f)), + owning_building_guid = 35 + ) + LocalObject( + 804, + Terminal.Constructor(Vector3(6670.294f, 2302.054f, 118.6863f), implant_terminal_interface), + owning_building_guid = 35 + ) TerminalToInterface(810, 804) - LocalObject(811, ImplantTerminalMech.Constructor(Vector3(6685.632f, 2302.066f, 118.6863f)), owning_building_guid = 35) - LocalObject(805, Terminal.Constructor(Vector3(6685.614f, 2302.066f, 118.6863f), implant_terminal_interface), owning_building_guid = 35) + LocalObject( + 811, + ImplantTerminalMech.Constructor(Vector3(6685.632f, 2302.066f, 118.6863f)), + owning_building_guid = 35 + ) + LocalObject( + 805, + Terminal.Constructor(Vector3(6685.614f, 2302.066f, 118.6863f), implant_terminal_interface), + owning_building_guid = 35 + ) TerminalToInterface(811, 805) - LocalObject(1951, Painbox.Constructor(Vector3(6749.666f, 2297.594f, 143.2381f), painbox), owning_building_guid = 35) - LocalObject(1962, Painbox.Constructor(Vector3(6722.288f, 2306.753f, 123.2792f), painbox_continuous), owning_building_guid = 35) - LocalObject(1973, Painbox.Constructor(Vector3(6735.202f, 2296.182f, 143.4432f), painbox_door_radius), owning_building_guid = 35) - LocalObject(2004, Painbox.Constructor(Vector3(6704.169f, 2304.515f, 120.9235f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(2005, Painbox.Constructor(Vector3(6710.95f, 2319.882f, 122.7502f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(2006, Painbox.Constructor(Vector3(6732.207f, 2302.54f, 121.5652f), painbox_door_radius_continuous), owning_building_guid = 35) + LocalObject( + 1951, + Painbox.Constructor(Vector3(6749.666f, 2297.594f, 143.2381f), painbox), + owning_building_guid = 35 + ) + LocalObject( + 1962, + Painbox.Constructor(Vector3(6722.288f, 2306.753f, 123.2792f), painbox_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1973, + Painbox.Constructor(Vector3(6735.202f, 2296.182f, 143.4432f), painbox_door_radius), + owning_building_guid = 35 + ) + LocalObject( + 2004, + Painbox.Constructor(Vector3(6704.169f, 2304.515f, 120.9235f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 2005, + Painbox.Constructor(Vector3(6710.95f, 2319.882f, 122.7502f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 2006, + Painbox.Constructor(Vector3(6732.207f, 2302.54f, 121.5652f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) LocalObject(261, Generator.Constructor(Vector3(6753.555f, 2296.025f, 137.9153f)), owning_building_guid = 35) - LocalObject(250, Terminal.Constructor(Vector3(6745.363f, 2295.978f, 139.2093f), gen_control), owning_building_guid = 35) + LocalObject( + 250, + Terminal.Constructor(Vector3(6745.363f, 2295.978f, 139.2093f), gen_control), + owning_building_guid = 35 + ) } Building18907() def Building18907(): Unit = { // Name: GW_Hossin_S Type: hst GUID: 39, MapID: 18907 - LocalBuilding("GW_Hossin_S", 39, 18907, FoundationBuilder(WarpGate.Structure(Vector3(3949.24f, 2391.62f, 16.04f), hst))) + LocalBuilding( + "GW_Hossin_S", + 39, + 18907, + FoundationBuilder(WarpGate.Structure(Vector3(3949.24f, 2391.62f, 16.04f), hst)) + ) } Building18908() def Building18908(): Unit = { // Name: GW_Hossin_N Type: hst GUID: 40, MapID: 18908 - LocalBuilding("GW_Hossin_N", 40, 18908, FoundationBuilder(WarpGate.Structure(Vector3(5240.17f, 4912.36f, 39.88f), hst))) + LocalBuilding( + "GW_Hossin_N", + 40, + 18908, + FoundationBuilder(WarpGate.Structure(Vector3(5240.17f, 4912.36f, 39.88f), hst)) + ) } Building11() def Building11(): Unit = { // Name: Ghanon Type: tech_plant GUID: 42, MapID: 11 - LocalBuilding("Ghanon", 42, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2482f, 3762f, 41.20609f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(184, CaptureTerminal.Constructor(Vector3(2486.734f, 3717.911f, 56.30609f), capture_terminal), owning_building_guid = 42) + LocalBuilding( + "Ghanon", + 42, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2482f, 3762f, 41.20609f), + Vector3(0f, 0f, 360f), + tech_plant + ) + ) + ) + LocalObject( + 184, + CaptureTerminal.Constructor(Vector3(2486.734f, 3717.911f, 56.30609f), capture_terminal), + owning_building_guid = 42 + ) LocalObject(290, Door.Constructor(Vector3(2410.54f, 3691.929f, 42.74809f)), owning_building_guid = 42) LocalObject(291, Door.Constructor(Vector3(2410.54f, 3710.121f, 50.71109f)), owning_building_guid = 42) LocalObject(292, Door.Constructor(Vector3(2410.54f, 3765.673f, 42.74809f)), owning_building_guid = 42) @@ -1240,16 +3463,66 @@ object Map02 { // Hossin LocalObject(2367, Door.Constructor(Vector3(2494.673f, 3719.733f, 35.66009f)), owning_building_guid = 42) LocalObject(2368, Door.Constructor(Vector3(2494.673f, 3727.026f, 35.66009f)), owning_building_guid = 42) LocalObject(2369, Door.Constructor(Vector3(2494.673f, 3734.315f, 35.66009f)), owning_building_guid = 42) - LocalObject(824, IFFLock.Constructor(Vector3(2525.357f, 3713.603f, 42.78609f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 784) - LocalObject(834, IFFLock.Constructor(Vector3(2439.256f, 3804.353f, 42.89409f), Vector3(0, 0, 360)), owning_building_guid = 42, door_guid = 536) - LocalObject(862, IFFLock.Constructor(Vector3(2441.186f, 3659.954f, 42.75809f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 294) - LocalObject(863, IFFLock.Constructor(Vector3(2476.428f, 3722.94f, 57.64209f), Vector3(0, 0, 0)), owning_building_guid = 42, door_guid = 573) - LocalObject(864, IFFLock.Constructor(Vector3(2490.554f, 3739.383f, 57.75209f), Vector3(0, 0, 0)), owning_building_guid = 42, door_guid = 297) - LocalObject(865, IFFLock.Constructor(Vector3(2500.428f, 3738.81f, 35.14209f), Vector3(0, 0, 0)), owning_building_guid = 42, door_guid = 581) - LocalObject(866, IFFLock.Constructor(Vector3(2501.496f, 3721.775f, 57.75209f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 298) - LocalObject(867, IFFLock.Constructor(Vector3(2503.572f, 3713.19f, 35.14209f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 580) - LocalObject(868, IFFLock.Constructor(Vector3(2511.572f, 3745.057f, 27.64209f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 582) - LocalObject(869, IFFLock.Constructor(Vector3(2513.06f, 3716.428f, 27.64209f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 583) + LocalObject( + 824, + IFFLock.Constructor(Vector3(2525.357f, 3713.603f, 42.78609f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 784 + ) + LocalObject( + 834, + IFFLock.Constructor(Vector3(2439.256f, 3804.353f, 42.89409f), Vector3(0, 0, 360)), + owning_building_guid = 42, + door_guid = 536 + ) + LocalObject( + 862, + IFFLock.Constructor(Vector3(2441.186f, 3659.954f, 42.75809f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 294 + ) + LocalObject( + 863, + IFFLock.Constructor(Vector3(2476.428f, 3722.94f, 57.64209f), Vector3(0, 0, 0)), + owning_building_guid = 42, + door_guid = 573 + ) + LocalObject( + 864, + IFFLock.Constructor(Vector3(2490.554f, 3739.383f, 57.75209f), Vector3(0, 0, 0)), + owning_building_guid = 42, + door_guid = 297 + ) + LocalObject( + 865, + IFFLock.Constructor(Vector3(2500.428f, 3738.81f, 35.14209f), Vector3(0, 0, 0)), + owning_building_guid = 42, + door_guid = 581 + ) + LocalObject( + 866, + IFFLock.Constructor(Vector3(2501.496f, 3721.775f, 57.75209f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 298 + ) + LocalObject( + 867, + IFFLock.Constructor(Vector3(2503.572f, 3713.19f, 35.14209f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 580 + ) + LocalObject( + 868, + IFFLock.Constructor(Vector3(2511.572f, 3745.057f, 27.64209f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 582 + ) + LocalObject( + 869, + IFFLock.Constructor(Vector3(2513.06f, 3716.428f, 27.64209f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 583 + ) LocalObject(1089, Locker.Constructor(Vector3(2505.563f, 3716.141f, 34.06709f)), owning_building_guid = 42) LocalObject(1090, Locker.Constructor(Vector3(2506.727f, 3716.141f, 34.06709f)), owning_building_guid = 42) LocalObject(1091, Locker.Constructor(Vector3(2507.874f, 3716.141f, 34.06709f)), owning_building_guid = 42) @@ -1262,72 +3535,295 @@ object Map02 { // Hossin LocalObject(1104, Locker.Constructor(Vector3(2526.055f, 3736.165f, 26.30609f)), owning_building_guid = 42) LocalObject(1107, Locker.Constructor(Vector3(2527.391f, 3736.165f, 26.30609f)), owning_building_guid = 42) LocalObject(1108, Locker.Constructor(Vector3(2528.728f, 3736.165f, 26.30609f)), owning_building_guid = 42) - LocalObject(142, Terminal.Constructor(Vector3(2486.673f, 3737.141f, 56.90909f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1540, VehicleSpawnPad.Constructor(Vector3(2482.07f, 3757.835f, 53.78409f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 42, terminal_guid = 142) - LocalObject(143, Terminal.Constructor(Vector3(2498.605f, 3737.141f, 56.90909f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1541, VehicleSpawnPad.Constructor(Vector3(2503.088f, 3757.835f, 53.78409f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 42, terminal_guid = 143) - LocalObject(1590, Terminal.Constructor(Vector3(2485.058f, 3735.486f, 47.63609f), order_terminal), owning_building_guid = 42) - LocalObject(1591, Terminal.Constructor(Vector3(2508.654f, 3721.408f, 35.39609f), order_terminal), owning_building_guid = 42) - LocalObject(1592, Terminal.Constructor(Vector3(2508.654f, 3725.139f, 35.39609f), order_terminal), owning_building_guid = 42) - LocalObject(1593, Terminal.Constructor(Vector3(2508.654f, 3728.928f, 35.39609f), order_terminal), owning_building_guid = 42) - LocalObject(2289, Terminal.Constructor(Vector3(2457.942f, 3666.591f, 35.36309f), spawn_terminal), owning_building_guid = 42) - LocalObject(2290, Terminal.Constructor(Vector3(2489.942f, 3714.591f, 27.86309f), spawn_terminal), owning_building_guid = 42) - LocalObject(2291, Terminal.Constructor(Vector3(2494.971f, 3717.243f, 35.94009f), spawn_terminal), owning_building_guid = 42) - LocalObject(2292, Terminal.Constructor(Vector3(2494.967f, 3724.535f, 35.94009f), spawn_terminal), owning_building_guid = 42) - LocalObject(2293, Terminal.Constructor(Vector3(2494.97f, 3731.823f, 35.94009f), spawn_terminal), owning_building_guid = 42) - LocalObject(2294, Terminal.Constructor(Vector3(2496.532f, 3765.215f, 53.22909f), spawn_terminal), owning_building_guid = 42) - LocalObject(2295, Terminal.Constructor(Vector3(2519.242f, 3741.639f, 47.88809f), spawn_terminal), owning_building_guid = 42) - LocalObject(2506, Terminal.Constructor(Vector3(2433.996f, 3721.423f, 27.02009f), ground_vehicle_terminal), owning_building_guid = 42) - LocalObject(1539, VehicleSpawnPad.Constructor(Vector3(2433.945f, 3732.339f, 18.74309f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 42, terminal_guid = 2506) + LocalObject( + 142, + Terminal.Constructor(Vector3(2486.673f, 3737.141f, 56.90909f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1540, + VehicleSpawnPad.Constructor(Vector3(2482.07f, 3757.835f, 53.78409f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 42, + terminal_guid = 142 + ) + LocalObject( + 143, + Terminal.Constructor(Vector3(2498.605f, 3737.141f, 56.90909f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1541, + VehicleSpawnPad.Constructor(Vector3(2503.088f, 3757.835f, 53.78409f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 42, + terminal_guid = 143 + ) + LocalObject( + 1590, + Terminal.Constructor(Vector3(2485.058f, 3735.486f, 47.63609f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1591, + Terminal.Constructor(Vector3(2508.654f, 3721.408f, 35.39609f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1592, + Terminal.Constructor(Vector3(2508.654f, 3725.139f, 35.39609f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1593, + Terminal.Constructor(Vector3(2508.654f, 3728.928f, 35.39609f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2289, + Terminal.Constructor(Vector3(2457.942f, 3666.591f, 35.36309f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2290, + Terminal.Constructor(Vector3(2489.942f, 3714.591f, 27.86309f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2291, + Terminal.Constructor(Vector3(2494.971f, 3717.243f, 35.94009f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2292, + Terminal.Constructor(Vector3(2494.967f, 3724.535f, 35.94009f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2293, + Terminal.Constructor(Vector3(2494.97f, 3731.823f, 35.94009f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2294, + Terminal.Constructor(Vector3(2496.532f, 3765.215f, 53.22909f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2295, + Terminal.Constructor(Vector3(2519.242f, 3741.639f, 47.88809f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2506, + Terminal.Constructor(Vector3(2433.996f, 3721.423f, 27.02009f), ground_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1539, + VehicleSpawnPad.Constructor(Vector3(2433.945f, 3732.339f, 18.74309f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 42, + terminal_guid = 2506 + ) LocalObject(2168, ResourceSilo.Constructor(Vector3(2543.752f, 3794.555f, 48.21409f)), owning_building_guid = 42) - LocalObject(2187, SpawnTube.Constructor(Vector3(2494.233f, 3718.683f, 33.80609f), Vector3(0, 0, 0)), owning_building_guid = 42) - LocalObject(2188, SpawnTube.Constructor(Vector3(2494.233f, 3725.974f, 33.80609f), Vector3(0, 0, 0)), owning_building_guid = 42) - LocalObject(2189, SpawnTube.Constructor(Vector3(2494.233f, 3733.262f, 33.80609f), Vector3(0, 0, 0)), owning_building_guid = 42) - LocalObject(1557, ProximityTerminal.Constructor(Vector3(2485.059f, 3724.901f, 46.30309f), medical_terminal), owning_building_guid = 42) - LocalObject(1558, ProximityTerminal.Constructor(Vector3(2522.444f, 3735.62f, 26.30609f), medical_terminal), owning_building_guid = 42) - LocalObject(1767, ProximityTerminal.Constructor(Vector3(2420.704f, 3737.661f, 49.40109f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1768, Terminal.Constructor(Vector3(2420.704f, 3737.661f, 49.40109f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1770, ProximityTerminal.Constructor(Vector3(2440.98f, 3753.833f, 51.75609f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1771, Terminal.Constructor(Vector3(2440.98f, 3753.833f, 51.75609f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1773, ProximityTerminal.Constructor(Vector3(2491.379f, 3697.474f, 56.65309f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1774, Terminal.Constructor(Vector3(2491.379f, 3697.474f, 56.65309f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1776, ProximityTerminal.Constructor(Vector3(2507.534f, 3680.628f, 49.41409f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1777, Terminal.Constructor(Vector3(2507.534f, 3680.628f, 49.41409f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1779, ProximityTerminal.Constructor(Vector3(2543.987f, 3719.855f, 51.85809f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1780, Terminal.Constructor(Vector3(2543.987f, 3719.855f, 51.85809f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1782, ProximityTerminal.Constructor(Vector3(2550.28f, 3736.102f, 49.41409f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1783, Terminal.Constructor(Vector3(2550.28f, 3736.102f, 49.41409f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2087, ProximityTerminal.Constructor(Vector3(2482.309f, 3803.637f, 40.93459f), repair_silo), owning_building_guid = 42) - LocalObject(2088, Terminal.Constructor(Vector3(2482.309f, 3803.637f, 40.93459f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(2091, ProximityTerminal.Constructor(Vector3(2540.637f, 3669.208f, 40.95609f), repair_silo), owning_building_guid = 42) - LocalObject(2092, Terminal.Constructor(Vector3(2540.637f, 3669.208f, 40.95609f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(1449, FacilityTurret.Constructor(Vector3(2397.906f, 3860.855f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 2187, + SpawnTube.Constructor(Vector3(2494.233f, 3718.683f, 33.80609f), Vector3(0, 0, 0)), + owning_building_guid = 42 + ) + LocalObject( + 2188, + SpawnTube.Constructor(Vector3(2494.233f, 3725.974f, 33.80609f), Vector3(0, 0, 0)), + owning_building_guid = 42 + ) + LocalObject( + 2189, + SpawnTube.Constructor(Vector3(2494.233f, 3733.262f, 33.80609f), Vector3(0, 0, 0)), + owning_building_guid = 42 + ) + LocalObject( + 1557, + ProximityTerminal.Constructor(Vector3(2485.059f, 3724.901f, 46.30309f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1558, + ProximityTerminal.Constructor(Vector3(2522.444f, 3735.62f, 26.30609f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1767, + ProximityTerminal.Constructor(Vector3(2420.704f, 3737.661f, 49.40109f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1768, + Terminal.Constructor(Vector3(2420.704f, 3737.661f, 49.40109f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1770, + ProximityTerminal.Constructor(Vector3(2440.98f, 3753.833f, 51.75609f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1771, + Terminal.Constructor(Vector3(2440.98f, 3753.833f, 51.75609f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1773, + ProximityTerminal.Constructor(Vector3(2491.379f, 3697.474f, 56.65309f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1774, + Terminal.Constructor(Vector3(2491.379f, 3697.474f, 56.65309f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1776, + ProximityTerminal.Constructor(Vector3(2507.534f, 3680.628f, 49.41409f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1777, + Terminal.Constructor(Vector3(2507.534f, 3680.628f, 49.41409f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1779, + ProximityTerminal.Constructor(Vector3(2543.987f, 3719.855f, 51.85809f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1780, + Terminal.Constructor(Vector3(2543.987f, 3719.855f, 51.85809f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1782, + ProximityTerminal.Constructor(Vector3(2550.28f, 3736.102f, 49.41409f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1783, + Terminal.Constructor(Vector3(2550.28f, 3736.102f, 49.41409f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2087, + ProximityTerminal.Constructor(Vector3(2482.309f, 3803.637f, 40.93459f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2088, + Terminal.Constructor(Vector3(2482.309f, 3803.637f, 40.93459f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2091, + ProximityTerminal.Constructor(Vector3(2540.637f, 3669.208f, 40.95609f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2092, + Terminal.Constructor(Vector3(2540.637f, 3669.208f, 40.95609f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1449, + FacilityTurret.Constructor(Vector3(2397.906f, 3860.855f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1449, 5047) - LocalObject(1450, FacilityTurret.Constructor(Vector3(2403.413f, 3662.665f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 1450, + FacilityTurret.Constructor(Vector3(2403.413f, 3662.665f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1450, 5048) - LocalObject(1451, FacilityTurret.Constructor(Vector3(2487.601f, 3860.855f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 1451, + FacilityTurret.Constructor(Vector3(2487.601f, 3860.855f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1451, 5049) - LocalObject(1454, FacilityTurret.Constructor(Vector3(2568.154f, 3662.657f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 1454, + FacilityTurret.Constructor(Vector3(2568.154f, 3662.657f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1454, 5050) - LocalObject(1455, FacilityTurret.Constructor(Vector3(2568.154f, 3800.398f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 1455, + FacilityTurret.Constructor(Vector3(2568.154f, 3800.398f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1455, 5051) - LocalObject(1456, FacilityTurret.Constructor(Vector3(2575.881f, 3727.423f, 49.70509f), manned_turret), owning_building_guid = 42) + LocalObject( + 1456, + FacilityTurret.Constructor(Vector3(2575.881f, 3727.423f, 49.70509f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1456, 5052) - LocalObject(1942, Painbox.Constructor(Vector3(2507.737f, 3758.206f, 29.77939f), painbox), owning_building_guid = 42) - LocalObject(1953, Painbox.Constructor(Vector3(2502.832f, 3725.212f, 38.07599f), painbox_continuous), owning_building_guid = 42) - LocalObject(1964, Painbox.Constructor(Vector3(2509.7f, 3743.471f, 29.46549f), painbox_door_radius), owning_building_guid = 42) - LocalObject(1977, Painbox.Constructor(Vector3(2501.035f, 3712.278f, 35.93399f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1978, Painbox.Constructor(Vector3(2501.861f, 3739.769f, 36.48229f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1979, Painbox.Constructor(Vector3(2517.641f, 3732.57f, 37.38839f), painbox_door_radius_continuous), owning_building_guid = 42) + LocalObject( + 1942, + Painbox.Constructor(Vector3(2507.737f, 3758.206f, 29.77939f), painbox), + owning_building_guid = 42 + ) + LocalObject( + 1953, + Painbox.Constructor(Vector3(2502.832f, 3725.212f, 38.07599f), painbox_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1964, + Painbox.Constructor(Vector3(2509.7f, 3743.471f, 29.46549f), painbox_door_radius), + owning_building_guid = 42 + ) + LocalObject( + 1977, + Painbox.Constructor(Vector3(2501.035f, 3712.278f, 35.93399f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1978, + Painbox.Constructor(Vector3(2501.861f, 3739.769f, 36.48229f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1979, + Painbox.Constructor(Vector3(2517.641f, 3732.57f, 37.38839f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) LocalObject(252, Generator.Constructor(Vector3(2509.975f, 3761.555f, 25.01209f)), owning_building_guid = 42) - LocalObject(241, Terminal.Constructor(Vector3(2510.022f, 3753.363f, 26.30609f), gen_control), owning_building_guid = 42) + LocalObject( + 241, + Terminal.Constructor(Vector3(2510.022f, 3753.363f, 26.30609f), gen_control), + owning_building_guid = 42 + ) } Building10() def Building10(): Unit = { // Name: Chac Type: tech_plant GUID: 45, MapID: 10 - LocalBuilding("Chac", 45, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4020f, 6012f, 39.28953f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(188, CaptureTerminal.Constructor(Vector3(4024.734f, 5967.911f, 54.38953f), capture_terminal), owning_building_guid = 45) + LocalBuilding( + "Chac", + 45, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4020f, 6012f, 39.28953f), + Vector3(0f, 0f, 360f), + tech_plant + ) + ) + ) + LocalObject( + 188, + CaptureTerminal.Constructor(Vector3(4024.734f, 5967.911f, 54.38953f), capture_terminal), + owning_building_guid = 45 + ) LocalObject(398, Door.Constructor(Vector3(3948.54f, 5941.929f, 40.83153f)), owning_building_guid = 45) LocalObject(399, Door.Constructor(Vector3(3948.54f, 5960.121f, 48.79453f)), owning_building_guid = 45) LocalObject(400, Door.Constructor(Vector3(3948.54f, 6015.673f, 40.83153f)), owning_building_guid = 45) @@ -1366,16 +3862,66 @@ object Map02 { // Hossin LocalObject(2399, Door.Constructor(Vector3(4032.673f, 5969.733f, 33.74353f)), owning_building_guid = 45) LocalObject(2400, Door.Constructor(Vector3(4032.673f, 5977.026f, 33.74353f)), owning_building_guid = 45) LocalObject(2401, Door.Constructor(Vector3(4032.673f, 5984.315f, 33.74353f)), owning_building_guid = 45) - LocalObject(828, IFFLock.Constructor(Vector3(4063.357f, 5963.603f, 40.86953f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 788) - LocalObject(835, IFFLock.Constructor(Vector3(3977.256f, 6054.353f, 40.97753f), Vector3(0, 0, 360)), owning_building_guid = 45, door_guid = 537) - LocalObject(946, IFFLock.Constructor(Vector3(3979.186f, 5909.954f, 40.84153f), Vector3(0, 0, 270)), owning_building_guid = 45, door_guid = 402) - LocalObject(947, IFFLock.Constructor(Vector3(4014.428f, 5972.94f, 55.72553f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 661) - LocalObject(948, IFFLock.Constructor(Vector3(4028.554f, 5989.383f, 55.83553f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 406) - LocalObject(949, IFFLock.Constructor(Vector3(4038.428f, 5988.81f, 33.22553f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 669) - LocalObject(950, IFFLock.Constructor(Vector3(4039.496f, 5971.775f, 55.83553f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 407) - LocalObject(951, IFFLock.Constructor(Vector3(4041.572f, 5963.19f, 33.22553f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 668) - LocalObject(952, IFFLock.Constructor(Vector3(4049.572f, 5995.057f, 25.72553f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 670) - LocalObject(953, IFFLock.Constructor(Vector3(4051.06f, 5966.428f, 25.72553f), Vector3(0, 0, 270)), owning_building_guid = 45, door_guid = 671) + LocalObject( + 828, + IFFLock.Constructor(Vector3(4063.357f, 5963.603f, 40.86953f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 788 + ) + LocalObject( + 835, + IFFLock.Constructor(Vector3(3977.256f, 6054.353f, 40.97753f), Vector3(0, 0, 360)), + owning_building_guid = 45, + door_guid = 537 + ) + LocalObject( + 946, + IFFLock.Constructor(Vector3(3979.186f, 5909.954f, 40.84153f), Vector3(0, 0, 270)), + owning_building_guid = 45, + door_guid = 402 + ) + LocalObject( + 947, + IFFLock.Constructor(Vector3(4014.428f, 5972.94f, 55.72553f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 661 + ) + LocalObject( + 948, + IFFLock.Constructor(Vector3(4028.554f, 5989.383f, 55.83553f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 406 + ) + LocalObject( + 949, + IFFLock.Constructor(Vector3(4038.428f, 5988.81f, 33.22553f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 669 + ) + LocalObject( + 950, + IFFLock.Constructor(Vector3(4039.496f, 5971.775f, 55.83553f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 407 + ) + LocalObject( + 951, + IFFLock.Constructor(Vector3(4041.572f, 5963.19f, 33.22553f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 668 + ) + LocalObject( + 952, + IFFLock.Constructor(Vector3(4049.572f, 5995.057f, 25.72553f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 670 + ) + LocalObject( + 953, + IFFLock.Constructor(Vector3(4051.06f, 5966.428f, 25.72553f), Vector3(0, 0, 270)), + owning_building_guid = 45, + door_guid = 671 + ) LocalObject(1226, Locker.Constructor(Vector3(4043.563f, 5966.141f, 32.15053f)), owning_building_guid = 45) LocalObject(1227, Locker.Constructor(Vector3(4044.727f, 5966.141f, 32.15053f)), owning_building_guid = 45) LocalObject(1228, Locker.Constructor(Vector3(4045.874f, 5966.141f, 32.15053f)), owning_building_guid = 45) @@ -1388,72 +3934,295 @@ object Map02 { // Hossin LocalObject(1235, Locker.Constructor(Vector3(4064.055f, 5986.165f, 24.38953f)), owning_building_guid = 45) LocalObject(1236, Locker.Constructor(Vector3(4065.391f, 5986.165f, 24.38953f)), owning_building_guid = 45) LocalObject(1237, Locker.Constructor(Vector3(4066.728f, 5986.165f, 24.38953f)), owning_building_guid = 45) - LocalObject(144, Terminal.Constructor(Vector3(4024.673f, 5987.141f, 54.99253f), air_vehicle_terminal), owning_building_guid = 45) - LocalObject(1546, VehicleSpawnPad.Constructor(Vector3(4020.07f, 6007.835f, 51.86753f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 45, terminal_guid = 144) - LocalObject(145, Terminal.Constructor(Vector3(4036.605f, 5987.141f, 54.99253f), air_vehicle_terminal), owning_building_guid = 45) - LocalObject(1547, VehicleSpawnPad.Constructor(Vector3(4041.088f, 6007.835f, 51.86753f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 45, terminal_guid = 145) - LocalObject(1641, Terminal.Constructor(Vector3(4023.058f, 5985.486f, 45.71953f), order_terminal), owning_building_guid = 45) - LocalObject(1642, Terminal.Constructor(Vector3(4046.654f, 5971.408f, 33.47953f), order_terminal), owning_building_guid = 45) - LocalObject(1643, Terminal.Constructor(Vector3(4046.654f, 5975.139f, 33.47953f), order_terminal), owning_building_guid = 45) - LocalObject(1644, Terminal.Constructor(Vector3(4046.654f, 5978.928f, 33.47953f), order_terminal), owning_building_guid = 45) - LocalObject(2315, Terminal.Constructor(Vector3(3995.942f, 5916.591f, 33.44653f), spawn_terminal), owning_building_guid = 45) - LocalObject(2316, Terminal.Constructor(Vector3(4027.942f, 5964.591f, 25.94653f), spawn_terminal), owning_building_guid = 45) - LocalObject(2317, Terminal.Constructor(Vector3(4032.971f, 5967.243f, 34.02353f), spawn_terminal), owning_building_guid = 45) - LocalObject(2318, Terminal.Constructor(Vector3(4032.967f, 5974.535f, 34.02353f), spawn_terminal), owning_building_guid = 45) - LocalObject(2319, Terminal.Constructor(Vector3(4032.97f, 5981.823f, 34.02353f), spawn_terminal), owning_building_guid = 45) - LocalObject(2320, Terminal.Constructor(Vector3(4034.532f, 6015.215f, 51.31253f), spawn_terminal), owning_building_guid = 45) - LocalObject(2321, Terminal.Constructor(Vector3(4057.242f, 5991.639f, 45.97153f), spawn_terminal), owning_building_guid = 45) - LocalObject(2510, Terminal.Constructor(Vector3(3971.996f, 5971.423f, 25.10353f), ground_vehicle_terminal), owning_building_guid = 45) - LocalObject(1545, VehicleSpawnPad.Constructor(Vector3(3971.945f, 5982.339f, 16.82653f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 45, terminal_guid = 2510) + LocalObject( + 144, + Terminal.Constructor(Vector3(4024.673f, 5987.141f, 54.99253f), air_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1546, + VehicleSpawnPad.Constructor(Vector3(4020.07f, 6007.835f, 51.86753f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 45, + terminal_guid = 144 + ) + LocalObject( + 145, + Terminal.Constructor(Vector3(4036.605f, 5987.141f, 54.99253f), air_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1547, + VehicleSpawnPad.Constructor(Vector3(4041.088f, 6007.835f, 51.86753f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 45, + terminal_guid = 145 + ) + LocalObject( + 1641, + Terminal.Constructor(Vector3(4023.058f, 5985.486f, 45.71953f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1642, + Terminal.Constructor(Vector3(4046.654f, 5971.408f, 33.47953f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1643, + Terminal.Constructor(Vector3(4046.654f, 5975.139f, 33.47953f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1644, + Terminal.Constructor(Vector3(4046.654f, 5978.928f, 33.47953f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2315, + Terminal.Constructor(Vector3(3995.942f, 5916.591f, 33.44653f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2316, + Terminal.Constructor(Vector3(4027.942f, 5964.591f, 25.94653f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2317, + Terminal.Constructor(Vector3(4032.971f, 5967.243f, 34.02353f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2318, + Terminal.Constructor(Vector3(4032.967f, 5974.535f, 34.02353f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2319, + Terminal.Constructor(Vector3(4032.97f, 5981.823f, 34.02353f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2320, + Terminal.Constructor(Vector3(4034.532f, 6015.215f, 51.31253f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2321, + Terminal.Constructor(Vector3(4057.242f, 5991.639f, 45.97153f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2510, + Terminal.Constructor(Vector3(3971.996f, 5971.423f, 25.10353f), ground_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1545, + VehicleSpawnPad.Constructor(Vector3(3971.945f, 5982.339f, 16.82653f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 45, + terminal_guid = 2510 + ) LocalObject(2172, ResourceSilo.Constructor(Vector3(4081.752f, 6044.555f, 46.29753f)), owning_building_guid = 45) - LocalObject(2219, SpawnTube.Constructor(Vector3(4032.233f, 5968.683f, 31.88953f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(2220, SpawnTube.Constructor(Vector3(4032.233f, 5975.974f, 31.88953f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(2221, SpawnTube.Constructor(Vector3(4032.233f, 5983.262f, 31.88953f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1564, ProximityTerminal.Constructor(Vector3(4023.059f, 5974.901f, 44.38653f), medical_terminal), owning_building_guid = 45) - LocalObject(1565, ProximityTerminal.Constructor(Vector3(4060.444f, 5985.62f, 24.38953f), medical_terminal), owning_building_guid = 45) - LocalObject(1812, ProximityTerminal.Constructor(Vector3(3958.704f, 5987.661f, 47.48453f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1813, Terminal.Constructor(Vector3(3958.704f, 5987.661f, 47.48453f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(1815, ProximityTerminal.Constructor(Vector3(3978.98f, 6003.833f, 49.83953f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1816, Terminal.Constructor(Vector3(3978.98f, 6003.833f, 49.83953f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(1818, ProximityTerminal.Constructor(Vector3(4029.379f, 5947.474f, 54.73653f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1819, Terminal.Constructor(Vector3(4029.379f, 5947.474f, 54.73653f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(1821, ProximityTerminal.Constructor(Vector3(4045.534f, 5930.628f, 47.49753f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1822, Terminal.Constructor(Vector3(4045.534f, 5930.628f, 47.49753f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(1824, ProximityTerminal.Constructor(Vector3(4081.987f, 5969.855f, 49.94153f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1825, Terminal.Constructor(Vector3(4081.987f, 5969.855f, 49.94153f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(1827, ProximityTerminal.Constructor(Vector3(4088.28f, 5986.102f, 47.49753f), pad_landing_frame), owning_building_guid = 45) - LocalObject(1828, Terminal.Constructor(Vector3(4088.28f, 5986.102f, 47.49753f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2119, ProximityTerminal.Constructor(Vector3(4020.309f, 6053.637f, 39.01803f), repair_silo), owning_building_guid = 45) - LocalObject(2120, Terminal.Constructor(Vector3(4020.309f, 6053.637f, 39.01803f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(2123, ProximityTerminal.Constructor(Vector3(4078.637f, 5919.208f, 39.03953f), repair_silo), owning_building_guid = 45) - LocalObject(2124, Terminal.Constructor(Vector3(4078.637f, 5919.208f, 39.03953f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(1486, FacilityTurret.Constructor(Vector3(3935.906f, 6110.855f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 2219, + SpawnTube.Constructor(Vector3(4032.233f, 5968.683f, 31.88953f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 2220, + SpawnTube.Constructor(Vector3(4032.233f, 5975.974f, 31.88953f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 2221, + SpawnTube.Constructor(Vector3(4032.233f, 5983.262f, 31.88953f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1564, + ProximityTerminal.Constructor(Vector3(4023.059f, 5974.901f, 44.38653f), medical_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1565, + ProximityTerminal.Constructor(Vector3(4060.444f, 5985.62f, 24.38953f), medical_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1812, + ProximityTerminal.Constructor(Vector3(3958.704f, 5987.661f, 47.48453f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1813, + Terminal.Constructor(Vector3(3958.704f, 5987.661f, 47.48453f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1815, + ProximityTerminal.Constructor(Vector3(3978.98f, 6003.833f, 49.83953f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1816, + Terminal.Constructor(Vector3(3978.98f, 6003.833f, 49.83953f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1818, + ProximityTerminal.Constructor(Vector3(4029.379f, 5947.474f, 54.73653f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1819, + Terminal.Constructor(Vector3(4029.379f, 5947.474f, 54.73653f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1821, + ProximityTerminal.Constructor(Vector3(4045.534f, 5930.628f, 47.49753f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1822, + Terminal.Constructor(Vector3(4045.534f, 5930.628f, 47.49753f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1824, + ProximityTerminal.Constructor(Vector3(4081.987f, 5969.855f, 49.94153f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1825, + Terminal.Constructor(Vector3(4081.987f, 5969.855f, 49.94153f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1827, + ProximityTerminal.Constructor(Vector3(4088.28f, 5986.102f, 47.49753f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 1828, + Terminal.Constructor(Vector3(4088.28f, 5986.102f, 47.49753f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2119, + ProximityTerminal.Constructor(Vector3(4020.309f, 6053.637f, 39.01803f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 2120, + Terminal.Constructor(Vector3(4020.309f, 6053.637f, 39.01803f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2123, + ProximityTerminal.Constructor(Vector3(4078.637f, 5919.208f, 39.03953f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 2124, + Terminal.Constructor(Vector3(4078.637f, 5919.208f, 39.03953f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1486, + FacilityTurret.Constructor(Vector3(3935.906f, 6110.855f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1486, 5053) - LocalObject(1487, FacilityTurret.Constructor(Vector3(3941.413f, 5912.665f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 1487, + FacilityTurret.Constructor(Vector3(3941.413f, 5912.665f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1487, 5054) - LocalObject(1488, FacilityTurret.Constructor(Vector3(4025.601f, 6110.855f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 1488, + FacilityTurret.Constructor(Vector3(4025.601f, 6110.855f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1488, 5055) - LocalObject(1489, FacilityTurret.Constructor(Vector3(4106.154f, 5912.657f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 1489, + FacilityTurret.Constructor(Vector3(4106.154f, 5912.657f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1489, 5056) - LocalObject(1490, FacilityTurret.Constructor(Vector3(4106.154f, 6050.398f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 1490, + FacilityTurret.Constructor(Vector3(4106.154f, 6050.398f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1490, 5057) - LocalObject(1491, FacilityTurret.Constructor(Vector3(4113.881f, 5977.423f, 47.78853f), manned_turret), owning_building_guid = 45) + LocalObject( + 1491, + FacilityTurret.Constructor(Vector3(4113.881f, 5977.423f, 47.78853f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1491, 5058) - LocalObject(1946, Painbox.Constructor(Vector3(4045.737f, 6008.207f, 27.86283f), painbox), owning_building_guid = 45) - LocalObject(1957, Painbox.Constructor(Vector3(4040.832f, 5975.212f, 36.15943f), painbox_continuous), owning_building_guid = 45) - LocalObject(1968, Painbox.Constructor(Vector3(4047.7f, 5993.471f, 27.54893f), painbox_door_radius), owning_building_guid = 45) - LocalObject(1989, Painbox.Constructor(Vector3(4039.035f, 5962.278f, 34.01743f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(1990, Painbox.Constructor(Vector3(4039.861f, 5989.769f, 34.56573f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(1991, Painbox.Constructor(Vector3(4055.641f, 5982.57f, 35.47183f), painbox_door_radius_continuous), owning_building_guid = 45) + LocalObject( + 1946, + Painbox.Constructor(Vector3(4045.737f, 6008.207f, 27.86283f), painbox), + owning_building_guid = 45 + ) + LocalObject( + 1957, + Painbox.Constructor(Vector3(4040.832f, 5975.212f, 36.15943f), painbox_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1968, + Painbox.Constructor(Vector3(4047.7f, 5993.471f, 27.54893f), painbox_door_radius), + owning_building_guid = 45 + ) + LocalObject( + 1989, + Painbox.Constructor(Vector3(4039.035f, 5962.278f, 34.01743f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1990, + Painbox.Constructor(Vector3(4039.861f, 5989.769f, 34.56573f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1991, + Painbox.Constructor(Vector3(4055.641f, 5982.57f, 35.47183f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) LocalObject(256, Generator.Constructor(Vector3(4047.975f, 6011.555f, 23.09553f)), owning_building_guid = 45) - LocalObject(245, Terminal.Constructor(Vector3(4048.022f, 6003.363f, 24.38953f), gen_control), owning_building_guid = 45) + LocalObject( + 245, + Terminal.Constructor(Vector3(4048.022f, 6003.363f, 24.38953f), gen_control), + owning_building_guid = 45 + ) } Building14() def Building14(): Unit = { // Name: Mulac Type: tech_plant GUID: 48, MapID: 14 - LocalBuilding("Mulac", 48, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5668f, 2824f, 36.97623f), Vector3(0f, 0f, 268f), tech_plant))) - LocalObject(192, CaptureTerminal.Constructor(Vector3(5623.772f, 2820.808f, 52.07623f), capture_terminal), owning_building_guid = 48) + LocalBuilding( + "Mulac", + 48, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5668f, 2824f, 36.97623f), + Vector3(0f, 0f, 268f), + tech_plant + ) + ) + ) + LocalObject( + 192, + CaptureTerminal.Constructor(Vector3(5623.772f, 2820.808f, 52.07623f), capture_terminal), + owning_building_guid = 48 + ) LocalObject(496, Door.Constructor(Vector3(5569.457f, 2867.466f, 38.59723f)), owning_building_guid = 48) LocalObject(498, Door.Constructor(Vector3(5576.697f, 2822.581f, 38.62723f)), owning_building_guid = 48) LocalObject(499, Door.Constructor(Vector3(5577.332f, 2840.762f, 46.59023f)), owning_building_guid = 48) @@ -1492,16 +4261,66 @@ object Map02 { // Hossin LocalObject(2427, Door.Constructor(Vector3(5625.316f, 2812.81f, 31.43023f)), owning_building_guid = 48) LocalObject(2428, Door.Constructor(Vector3(5632.605f, 2812.555f, 31.43023f)), owning_building_guid = 48) LocalObject(2429, Door.Constructor(Vector3(5639.89f, 2812.301f, 31.43023f)), owning_building_guid = 48) - LocalObject(832, IFFLock.Constructor(Vector3(5618.119f, 2782.358f, 38.55623f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 792) - LocalObject(836, IFFLock.Constructor(Vector3(5711.819f, 2865.24f, 38.66423f), Vector3(0, 0, 92)), owning_building_guid = 48, door_guid = 538) - LocalObject(1023, IFFLock.Constructor(Vector3(5567.44f, 2868.351f, 38.52823f), Vector3(0, 0, 2)), owning_building_guid = 48, door_guid = 496) - LocalObject(1024, IFFLock.Constructor(Vector3(5618.467f, 2804.145f, 30.91223f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 746) - LocalObject(1025, IFFLock.Constructor(Vector3(5621.372f, 2794.549f, 23.41223f), Vector3(0, 0, 2)), owning_building_guid = 48, door_guid = 747) - LocalObject(1026, IFFLock.Constructor(Vector3(5627.119f, 2805.92f, 53.52222f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 502) - LocalObject(1027, IFFLock.Constructor(Vector3(5629.158f, 2830.932f, 53.41223f), Vector3(0, 0, 92)), owning_building_guid = 48, door_guid = 751) - LocalObject(1028, IFFLock.Constructor(Vector3(5644.181f, 2806.393f, 30.91223f), Vector3(0, 0, 92)), owning_building_guid = 48, door_guid = 756) - LocalObject(1029, IFFLock.Constructor(Vector3(5645.098f, 2816.24f, 53.52222f), Vector3(0, 0, 92)), owning_building_guid = 48, door_guid = 503) - LocalObject(1030, IFFLock.Constructor(Vector3(5650.035f, 2795.037f, 23.41223f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 759) + LocalObject( + 832, + IFFLock.Constructor(Vector3(5618.119f, 2782.358f, 38.55623f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 792 + ) + LocalObject( + 836, + IFFLock.Constructor(Vector3(5711.819f, 2865.24f, 38.66423f), Vector3(0, 0, 92)), + owning_building_guid = 48, + door_guid = 538 + ) + LocalObject( + 1023, + IFFLock.Constructor(Vector3(5567.44f, 2868.351f, 38.52823f), Vector3(0, 0, 2)), + owning_building_guid = 48, + door_guid = 496 + ) + LocalObject( + 1024, + IFFLock.Constructor(Vector3(5618.467f, 2804.145f, 30.91223f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 746 + ) + LocalObject( + 1025, + IFFLock.Constructor(Vector3(5621.372f, 2794.549f, 23.41223f), Vector3(0, 0, 2)), + owning_building_guid = 48, + door_guid = 747 + ) + LocalObject( + 1026, + IFFLock.Constructor(Vector3(5627.119f, 2805.92f, 53.52222f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 502 + ) + LocalObject( + 1027, + IFFLock.Constructor(Vector3(5629.158f, 2830.932f, 53.41223f), Vector3(0, 0, 92)), + owning_building_guid = 48, + door_guid = 751 + ) + LocalObject( + 1028, + IFFLock.Constructor(Vector3(5644.181f, 2806.393f, 30.91223f), Vector3(0, 0, 92)), + owning_building_guid = 48, + door_guid = 756 + ) + LocalObject( + 1029, + IFFLock.Constructor(Vector3(5645.098f, 2816.24f, 53.52222f), Vector3(0, 0, 92)), + owning_building_guid = 48, + door_guid = 503 + ) + LocalObject( + 1030, + IFFLock.Constructor(Vector3(5650.035f, 2795.037f, 23.41223f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 759 + ) LocalObject(1347, Locker.Constructor(Vector3(5621.226f, 2798.594f, 29.83723f)), owning_building_guid = 48) LocalObject(1348, Locker.Constructor(Vector3(5621.266f, 2799.742f, 29.83723f)), owning_building_guid = 48) LocalObject(1349, Locker.Constructor(Vector3(5621.306f, 2800.888f, 29.83723f)), owning_building_guid = 48) @@ -1514,82 +4333,320 @@ object Map02 { // Hossin LocalObject(1356, Locker.Constructor(Vector3(5640.895f, 2788.07f, 22.07623f)), owning_building_guid = 48) LocalObject(1357, Locker.Constructor(Vector3(5640.941f, 2789.405f, 22.07623f)), owning_building_guid = 48) LocalObject(1358, Locker.Constructor(Vector3(5640.987f, 2790.729f, 22.07623f)), owning_building_guid = 48) - LocalObject(146, Terminal.Constructor(Vector3(5642.577f, 2808.273f, 52.67923f), air_vehicle_terminal), owning_building_guid = 48) - LocalObject(1552, VehicleSpawnPad.Constructor(Vector3(5663.102f, 2803.07f, 49.55423f), mb_pad_creation, Vector3(0, 0, 92)), owning_building_guid = 48, terminal_guid = 146) - LocalObject(147, Terminal.Constructor(Vector3(5642.993f, 2820.198f, 52.67923f), air_vehicle_terminal), owning_building_guid = 48) - LocalObject(1553, VehicleSpawnPad.Constructor(Vector3(5663.835f, 2824.075f, 49.55423f), mb_pad_creation, Vector3(0, 0, 92)), owning_building_guid = 48, terminal_guid = 147) - LocalObject(1688, Terminal.Constructor(Vector3(5626.502f, 2798.779f, 31.16623f), order_terminal), owning_building_guid = 48) - LocalObject(1689, Terminal.Constructor(Vector3(5630.231f, 2798.649f, 31.16623f), order_terminal), owning_building_guid = 48) - LocalObject(1690, Terminal.Constructor(Vector3(5634.018f, 2798.516f, 31.16623f), order_terminal), owning_building_guid = 48) - LocalObject(1691, Terminal.Constructor(Vector3(5641.396f, 2821.869f, 43.40623f), order_terminal), owning_building_guid = 48) - LocalObject(2344, Terminal.Constructor(Vector3(5573.489f, 2851.373f, 31.13323f), spawn_terminal), owning_building_guid = 48) - LocalObject(2345, Terminal.Constructor(Vector3(5620.343f, 2817.717f, 23.63323f), spawn_terminal), owning_building_guid = 48) - LocalObject(2346, Terminal.Constructor(Vector3(5622.817f, 2812.599f, 31.71023f), spawn_terminal), owning_building_guid = 48) - LocalObject(2347, Terminal.Constructor(Vector3(5630.105f, 2812.348f, 31.71023f), spawn_terminal), owning_building_guid = 48) - LocalObject(2348, Terminal.Constructor(Vector3(5637.389f, 2812.091f, 31.71023f), spawn_terminal), owning_building_guid = 48) - LocalObject(2349, Terminal.Constructor(Vector3(5646.352f, 2787.491f, 43.65823f), spawn_terminal), owning_building_guid = 48) - LocalObject(2350, Terminal.Constructor(Vector3(5670.706f, 2809.365f, 48.99923f), spawn_terminal), owning_building_guid = 48) - LocalObject(2514, Terminal.Constructor(Vector3(5629.123f, 2873.391f, 22.79023f), ground_vehicle_terminal), owning_building_guid = 48) - LocalObject(1551, VehicleSpawnPad.Constructor(Vector3(5640.034f, 2873.061f, 14.51323f), mb_pad_creation, Vector3(0, 0, 92)), owning_building_guid = 48, terminal_guid = 2514) + LocalObject( + 146, + Terminal.Constructor(Vector3(5642.577f, 2808.273f, 52.67923f), air_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1552, + VehicleSpawnPad.Constructor(Vector3(5663.102f, 2803.07f, 49.55423f), mb_pad_creation, Vector3(0, 0, 92)), + owning_building_guid = 48, + terminal_guid = 146 + ) + LocalObject( + 147, + Terminal.Constructor(Vector3(5642.993f, 2820.198f, 52.67923f), air_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1553, + VehicleSpawnPad.Constructor(Vector3(5663.835f, 2824.075f, 49.55423f), mb_pad_creation, Vector3(0, 0, 92)), + owning_building_guid = 48, + terminal_guid = 147 + ) + LocalObject( + 1688, + Terminal.Constructor(Vector3(5626.502f, 2798.779f, 31.16623f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1689, + Terminal.Constructor(Vector3(5630.231f, 2798.649f, 31.16623f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1690, + Terminal.Constructor(Vector3(5634.018f, 2798.516f, 31.16623f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1691, + Terminal.Constructor(Vector3(5641.396f, 2821.869f, 43.40623f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2344, + Terminal.Constructor(Vector3(5573.489f, 2851.373f, 31.13323f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2345, + Terminal.Constructor(Vector3(5620.343f, 2817.717f, 23.63323f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2346, + Terminal.Constructor(Vector3(5622.817f, 2812.599f, 31.71023f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2347, + Terminal.Constructor(Vector3(5630.105f, 2812.348f, 31.71023f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2348, + Terminal.Constructor(Vector3(5637.389f, 2812.091f, 31.71023f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2349, + Terminal.Constructor(Vector3(5646.352f, 2787.491f, 43.65823f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2350, + Terminal.Constructor(Vector3(5670.706f, 2809.365f, 48.99923f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2514, + Terminal.Constructor(Vector3(5629.123f, 2873.391f, 22.79023f), ground_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1551, + VehicleSpawnPad.Constructor(Vector3(5640.034f, 2873.061f, 14.51323f), mb_pad_creation, Vector3(0, 0, 92)), + owning_building_guid = 48, + terminal_guid = 2514 + ) LocalObject(2176, ResourceSilo.Constructor(Vector3(5698.38f, 2761.149f, 43.98423f)), owning_building_guid = 48) - LocalObject(2247, SpawnTube.Constructor(Vector3(5624.282f, 2813.286f, 29.57623f), Vector3(0, 0, 92)), owning_building_guid = 48) - LocalObject(2248, SpawnTube.Constructor(Vector3(5631.569f, 2813.032f, 29.57623f), Vector3(0, 0, 92)), owning_building_guid = 48) - LocalObject(2249, SpawnTube.Constructor(Vector3(5638.853f, 2812.777f, 29.57623f), Vector3(0, 0, 92)), owning_building_guid = 48) - LocalObject(1571, ProximityTerminal.Constructor(Vector3(5630.817f, 2822.238f, 42.07323f), medical_terminal), owning_building_guid = 48) - LocalObject(1572, ProximityTerminal.Constructor(Vector3(5640.225f, 2784.501f, 22.07623f), medical_terminal), owning_building_guid = 48) - LocalObject(1857, ProximityTerminal.Constructor(Vector3(5585.787f, 2801.321f, 45.18423f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1858, Terminal.Constructor(Vector3(5585.787f, 2801.321f, 45.18423f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(1860, ProximityTerminal.Constructor(Vector3(5603.186f, 2816.879f, 52.42323f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1861, Terminal.Constructor(Vector3(5603.186f, 2816.879f, 52.42323f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(1863, ProximityTerminal.Constructor(Vector3(5623.717f, 2763.521f, 47.62823f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1864, Terminal.Constructor(Vector3(5623.717f, 2763.521f, 47.62823f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(1866, ProximityTerminal.Constructor(Vector3(5639.735f, 2756.666f, 45.18423f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1867, Terminal.Constructor(Vector3(5639.735f, 2756.666f, 45.18423f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(1869, ProximityTerminal.Constructor(Vector3(5645.815f, 2886.108f, 45.17123f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1870, Terminal.Constructor(Vector3(5645.815f, 2886.108f, 45.17123f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(1872, ProximityTerminal.Constructor(Vector3(5661.27f, 2865.28f, 47.52623f), pad_landing_frame), owning_building_guid = 48) - LocalObject(1873, Terminal.Constructor(Vector3(5661.27f, 2865.28f, 47.52623f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2151, ProximityTerminal.Constructor(Vector3(5573.218f, 2768.637f, 36.72623f), repair_silo), owning_building_guid = 48) - LocalObject(2152, Terminal.Constructor(Vector3(5573.218f, 2768.637f, 36.72623f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(2155, ProximityTerminal.Constructor(Vector3(5709.601f, 2822.239f, 36.70473f), repair_silo), owning_building_guid = 48) - LocalObject(2156, Terminal.Constructor(Vector3(5709.601f, 2822.239f, 36.70473f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(1522, FacilityTurret.Constructor(Vector3(5565.711f, 2741.365f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 2247, + SpawnTube.Constructor(Vector3(5624.282f, 2813.286f, 29.57623f), Vector3(0, 0, 92)), + owning_building_guid = 48 + ) + LocalObject( + 2248, + SpawnTube.Constructor(Vector3(5631.569f, 2813.032f, 29.57623f), Vector3(0, 0, 92)), + owning_building_guid = 48 + ) + LocalObject( + 2249, + SpawnTube.Constructor(Vector3(5638.853f, 2812.777f, 29.57623f), Vector3(0, 0, 92)), + owning_building_guid = 48 + ) + LocalObject( + 1571, + ProximityTerminal.Constructor(Vector3(5630.817f, 2822.238f, 42.07323f), medical_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1572, + ProximityTerminal.Constructor(Vector3(5640.225f, 2784.501f, 22.07623f), medical_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1857, + ProximityTerminal.Constructor(Vector3(5585.787f, 2801.321f, 45.18423f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1858, + Terminal.Constructor(Vector3(5585.787f, 2801.321f, 45.18423f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1860, + ProximityTerminal.Constructor(Vector3(5603.186f, 2816.879f, 52.42323f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1861, + Terminal.Constructor(Vector3(5603.186f, 2816.879f, 52.42323f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1863, + ProximityTerminal.Constructor(Vector3(5623.717f, 2763.521f, 47.62823f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1864, + Terminal.Constructor(Vector3(5623.717f, 2763.521f, 47.62823f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1866, + ProximityTerminal.Constructor(Vector3(5639.735f, 2756.666f, 45.18423f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1867, + Terminal.Constructor(Vector3(5639.735f, 2756.666f, 45.18423f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1869, + ProximityTerminal.Constructor(Vector3(5645.815f, 2886.108f, 45.17123f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1870, + Terminal.Constructor(Vector3(5645.815f, 2886.108f, 45.17123f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1872, + ProximityTerminal.Constructor(Vector3(5661.27f, 2865.28f, 47.52623f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 1873, + Terminal.Constructor(Vector3(5661.27f, 2865.28f, 47.52623f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2151, + ProximityTerminal.Constructor(Vector3(5573.218f, 2768.637f, 36.72623f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 2152, + Terminal.Constructor(Vector3(5573.218f, 2768.637f, 36.72623f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2155, + ProximityTerminal.Constructor(Vector3(5709.601f, 2822.239f, 36.70473f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 2156, + Terminal.Constructor(Vector3(5709.601f, 2822.239f, 36.70473f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1522, + FacilityTurret.Constructor(Vector3(5565.711f, 2741.365f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1522, 5059) - LocalObject(1523, FacilityTurret.Constructor(Vector3(5571.468f, 2906.006f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 1523, + FacilityTurret.Constructor(Vector3(5571.468f, 2906.006f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1523, 5060) - LocalObject(1525, FacilityTurret.Constructor(Vector3(5630.167f, 2731.383f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 1525, + FacilityTurret.Constructor(Vector3(5630.167f, 2731.383f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1525, 5061) - LocalObject(1526, FacilityTurret.Constructor(Vector3(5703.368f, 2736.558f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 1526, + FacilityTurret.Constructor(Vector3(5703.368f, 2736.558f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1526, 5062) - LocalObject(1527, FacilityTurret.Constructor(Vector3(5766.599f, 2814.952f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 1527, + FacilityTurret.Constructor(Vector3(5766.599f, 2814.952f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1527, 5063) - LocalObject(1528, FacilityTurret.Constructor(Vector3(5769.729f, 2904.593f, 45.47523f), manned_turret), owning_building_guid = 48) + LocalObject( + 1528, + FacilityTurret.Constructor(Vector3(5769.729f, 2904.593f, 45.47523f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1528, 5064) - LocalObject(1950, Painbox.Constructor(Vector3(5663.311f, 2798.411f, 25.54953f), painbox), owning_building_guid = 48) - LocalObject(1961, Painbox.Constructor(Vector3(5630.508f, 2804.464f, 33.84613f), painbox_continuous), owning_building_guid = 48) - LocalObject(1972, Painbox.Constructor(Vector3(5648.516f, 2796.964f, 25.23563f), painbox_door_radius), owning_building_guid = 48) - LocalObject(2001, Painbox.Constructor(Vector3(5617.645f, 2806.712f, 31.70413f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2002, Painbox.Constructor(Vector3(5637.344f, 2789.408f, 33.15853f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2003, Painbox.Constructor(Vector3(5645.089f, 2804.927f, 32.25243f), painbox_door_radius_continuous), owning_building_guid = 48) + LocalObject( + 1950, + Painbox.Constructor(Vector3(5663.311f, 2798.411f, 25.54953f), painbox), + owning_building_guid = 48 + ) + LocalObject( + 1961, + Painbox.Constructor(Vector3(5630.508f, 2804.464f, 33.84613f), painbox_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1972, + Painbox.Constructor(Vector3(5648.516f, 2796.964f, 25.23563f), painbox_door_radius), + owning_building_guid = 48 + ) + LocalObject( + 2001, + Painbox.Constructor(Vector3(5617.645f, 2806.712f, 31.70413f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2002, + Painbox.Constructor(Vector3(5637.344f, 2789.408f, 33.15853f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2003, + Painbox.Constructor(Vector3(5645.089f, 2804.927f, 32.25243f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) LocalObject(260, Generator.Constructor(Vector3(5666.579f, 2796.058f, 20.78223f)), owning_building_guid = 48) - LocalObject(249, Terminal.Constructor(Vector3(5658.39f, 2796.296f, 22.07623f), gen_control), owning_building_guid = 48) + LocalObject( + 249, + Terminal.Constructor(Vector3(5658.39f, 2796.296f, 22.07623f), gen_control), + owning_building_guid = 48 + ) } Building15() def Building15(): Unit = { // Name: S_Ceryshen_Warpgate_Tower Type: tower_a GUID: 51, MapID: 15 - LocalBuilding("S_Ceryshen_Warpgate_Tower", 51, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1816f, 4282f, 45.38713f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2259, CaptureTerminal.Constructor(Vector3(1832.587f, 4281.897f, 55.38613f), secondary_capture), owning_building_guid = 51) + LocalBuilding( + "S_Ceryshen_Warpgate_Tower", + 51, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1816f, 4282f, 45.38713f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2259, + CaptureTerminal.Constructor(Vector3(1832.587f, 4281.897f, 55.38613f), secondary_capture), + owning_building_guid = 51 + ) LocalObject(262, Door.Constructor(Vector3(1828f, 4274f, 46.90813f)), owning_building_guid = 51) LocalObject(263, Door.Constructor(Vector3(1828f, 4274f, 66.90713f)), owning_building_guid = 51) LocalObject(264, Door.Constructor(Vector3(1828f, 4290f, 46.90813f)), owning_building_guid = 51) LocalObject(265, Door.Constructor(Vector3(1828f, 4290f, 66.90713f)), owning_building_guid = 51) LocalObject(2358, Door.Constructor(Vector3(1827.146f, 4270.794f, 36.72313f)), owning_building_guid = 51) LocalObject(2359, Door.Constructor(Vector3(1827.146f, 4287.204f, 36.72313f)), owning_building_guid = 51) - LocalObject(837, IFFLock.Constructor(Vector3(1825.957f, 4290.811f, 46.84813f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 264) - LocalObject(838, IFFLock.Constructor(Vector3(1825.957f, 4290.811f, 66.84813f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 265) - LocalObject(839, IFFLock.Constructor(Vector3(1830.047f, 4273.189f, 46.84813f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 262) - LocalObject(840, IFFLock.Constructor(Vector3(1830.047f, 4273.189f, 66.84813f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 263) + LocalObject( + 837, + IFFLock.Constructor(Vector3(1825.957f, 4290.811f, 46.84813f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 264 + ) + LocalObject( + 838, + IFFLock.Constructor(Vector3(1825.957f, 4290.811f, 66.84813f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 265 + ) + LocalObject( + 839, + IFFLock.Constructor(Vector3(1830.047f, 4273.189f, 46.84813f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 262 + ) + LocalObject( + 840, + IFFLock.Constructor(Vector3(1830.047f, 4273.189f, 66.84813f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 263 + ) LocalObject(1053, Locker.Constructor(Vector3(1831.716f, 4266.963f, 35.38113f)), owning_building_guid = 51) LocalObject(1054, Locker.Constructor(Vector3(1831.751f, 4288.835f, 35.38113f)), owning_building_guid = 51) LocalObject(1055, Locker.Constructor(Vector3(1833.053f, 4266.963f, 35.38113f)), owning_building_guid = 51) @@ -1598,35 +4655,106 @@ object Map02 { // Hossin LocalObject(1058, Locker.Constructor(Vector3(1835.741f, 4288.835f, 35.38113f)), owning_building_guid = 51) LocalObject(1059, Locker.Constructor(Vector3(1837.143f, 4266.963f, 35.38113f)), owning_building_guid = 51) LocalObject(1060, Locker.Constructor(Vector3(1837.143f, 4288.835f, 35.38113f)), owning_building_guid = 51) - LocalObject(1574, Terminal.Constructor(Vector3(1837.445f, 4272.129f, 36.71913f), order_terminal), owning_building_guid = 51) - LocalObject(1575, Terminal.Constructor(Vector3(1837.445f, 4277.853f, 36.71913f), order_terminal), owning_building_guid = 51) - LocalObject(1576, Terminal.Constructor(Vector3(1837.445f, 4283.234f, 36.71913f), order_terminal), owning_building_guid = 51) - LocalObject(2178, SpawnTube.Constructor(Vector3(1826.706f, 4269.742f, 34.86913f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(2179, SpawnTube.Constructor(Vector3(1826.706f, 4286.152f, 34.86913f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1439, FacilityTurret.Constructor(Vector3(1803.32f, 4269.295f, 64.32912f), manned_turret), owning_building_guid = 51) + LocalObject( + 1574, + Terminal.Constructor(Vector3(1837.445f, 4272.129f, 36.71913f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1575, + Terminal.Constructor(Vector3(1837.445f, 4277.853f, 36.71913f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1576, + Terminal.Constructor(Vector3(1837.445f, 4283.234f, 36.71913f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2178, + SpawnTube.Constructor(Vector3(1826.706f, 4269.742f, 34.86913f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 2179, + SpawnTube.Constructor(Vector3(1826.706f, 4286.152f, 34.86913f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1439, + FacilityTurret.Constructor(Vector3(1803.32f, 4269.295f, 64.32912f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1439, 5065) - LocalObject(1442, FacilityTurret.Constructor(Vector3(1838.647f, 4294.707f, 64.32912f), manned_turret), owning_building_guid = 51) + LocalObject( + 1442, + FacilityTurret.Constructor(Vector3(1838.647f, 4294.707f, 64.32912f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1442, 5066) - LocalObject(2007, Painbox.Constructor(Vector3(1821.235f, 4275.803f, 36.88623f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(2008, Painbox.Constructor(Vector3(1832.889f, 4284.086f, 35.48713f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(2009, Painbox.Constructor(Vector3(1832.975f, 4272.223f, 35.48713f), painbox_radius_continuous), owning_building_guid = 51) + LocalObject( + 2007, + Painbox.Constructor(Vector3(1821.235f, 4275.803f, 36.88623f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2008, + Painbox.Constructor(Vector3(1832.889f, 4284.086f, 35.48713f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2009, + Painbox.Constructor(Vector3(1832.975f, 4272.223f, 35.48713f), painbox_radius_continuous), + owning_building_guid = 51 + ) } Building17() def Building17(): Unit = { // Name: NE_Ceryshen_Warpgate_Tower Type: tower_a GUID: 52, MapID: 17 - LocalBuilding("NE_Ceryshen_Warpgate_Tower", 52, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2196f, 5162f, 30.38423f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2261, CaptureTerminal.Constructor(Vector3(2212.587f, 5161.897f, 40.38323f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "NE_Ceryshen_Warpgate_Tower", + 52, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2196f, 5162f, 30.38423f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2261, + CaptureTerminal.Constructor(Vector3(2212.587f, 5161.897f, 40.38323f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(285, Door.Constructor(Vector3(2208f, 5154f, 31.90523f)), owning_building_guid = 52) LocalObject(286, Door.Constructor(Vector3(2208f, 5154f, 51.90423f)), owning_building_guid = 52) LocalObject(287, Door.Constructor(Vector3(2208f, 5170f, 31.90523f)), owning_building_guid = 52) LocalObject(288, Door.Constructor(Vector3(2208f, 5170f, 51.90423f)), owning_building_guid = 52) LocalObject(2365, Door.Constructor(Vector3(2207.146f, 5150.794f, 21.72023f)), owning_building_guid = 52) LocalObject(2366, Door.Constructor(Vector3(2207.146f, 5167.204f, 21.72023f)), owning_building_guid = 52) - LocalObject(858, IFFLock.Constructor(Vector3(2205.957f, 5170.811f, 31.84523f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 287) - LocalObject(859, IFFLock.Constructor(Vector3(2205.957f, 5170.811f, 51.84523f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 288) - LocalObject(860, IFFLock.Constructor(Vector3(2210.047f, 5153.189f, 31.84523f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 285) - LocalObject(861, IFFLock.Constructor(Vector3(2210.047f, 5153.189f, 51.84523f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 286) + LocalObject( + 858, + IFFLock.Constructor(Vector3(2205.957f, 5170.811f, 31.84523f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 287 + ) + LocalObject( + 859, + IFFLock.Constructor(Vector3(2205.957f, 5170.811f, 51.84523f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 288 + ) + LocalObject( + 860, + IFFLock.Constructor(Vector3(2210.047f, 5153.189f, 31.84523f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 285 + ) + LocalObject( + 861, + IFFLock.Constructor(Vector3(2210.047f, 5153.189f, 51.84523f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 286 + ) LocalObject(1081, Locker.Constructor(Vector3(2211.716f, 5146.963f, 20.37823f)), owning_building_guid = 52) LocalObject(1082, Locker.Constructor(Vector3(2211.751f, 5168.835f, 20.37823f)), owning_building_guid = 52) LocalObject(1083, Locker.Constructor(Vector3(2213.053f, 5146.963f, 20.37823f)), owning_building_guid = 52) @@ -1635,35 +4763,106 @@ object Map02 { // Hossin LocalObject(1086, Locker.Constructor(Vector3(2215.741f, 5168.835f, 20.37823f)), owning_building_guid = 52) LocalObject(1087, Locker.Constructor(Vector3(2217.143f, 5146.963f, 20.37823f)), owning_building_guid = 52) LocalObject(1088, Locker.Constructor(Vector3(2217.143f, 5168.835f, 20.37823f)), owning_building_guid = 52) - LocalObject(1587, Terminal.Constructor(Vector3(2217.445f, 5152.129f, 21.71623f), order_terminal), owning_building_guid = 52) - LocalObject(1588, Terminal.Constructor(Vector3(2217.445f, 5157.853f, 21.71623f), order_terminal), owning_building_guid = 52) - LocalObject(1589, Terminal.Constructor(Vector3(2217.445f, 5163.234f, 21.71623f), order_terminal), owning_building_guid = 52) - LocalObject(2185, SpawnTube.Constructor(Vector3(2206.706f, 5149.742f, 19.86623f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(2186, SpawnTube.Constructor(Vector3(2206.706f, 5166.152f, 19.86623f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1447, FacilityTurret.Constructor(Vector3(2183.32f, 5149.295f, 49.32623f), manned_turret), owning_building_guid = 52) + LocalObject( + 1587, + Terminal.Constructor(Vector3(2217.445f, 5152.129f, 21.71623f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1588, + Terminal.Constructor(Vector3(2217.445f, 5157.853f, 21.71623f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1589, + Terminal.Constructor(Vector3(2217.445f, 5163.234f, 21.71623f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 2185, + SpawnTube.Constructor(Vector3(2206.706f, 5149.742f, 19.86623f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 2186, + SpawnTube.Constructor(Vector3(2206.706f, 5166.152f, 19.86623f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1447, + FacilityTurret.Constructor(Vector3(2183.32f, 5149.295f, 49.32623f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1447, 5067) - LocalObject(1448, FacilityTurret.Constructor(Vector3(2218.647f, 5174.707f, 49.32623f), manned_turret), owning_building_guid = 52) + LocalObject( + 1448, + FacilityTurret.Constructor(Vector3(2218.647f, 5174.707f, 49.32623f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1448, 5068) - LocalObject(2013, Painbox.Constructor(Vector3(2201.235f, 5155.803f, 21.88333f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(2014, Painbox.Constructor(Vector3(2212.889f, 5164.086f, 20.48423f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(2015, Painbox.Constructor(Vector3(2212.975f, 5152.223f, 20.48423f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 2013, + Painbox.Constructor(Vector3(2201.235f, 5155.803f, 21.88333f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 2014, + Painbox.Constructor(Vector3(2212.889f, 5164.086f, 20.48423f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 2015, + Painbox.Constructor(Vector3(2212.975f, 5152.223f, 20.48423f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building28() def Building28(): Unit = { // Name: W_Oshur_Warpgate_Tower Type: tower_a GUID: 53, MapID: 28 - LocalBuilding("W_Oshur_Warpgate_Tower", 53, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2506f, 2050f, 30.77677f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2262, CaptureTerminal.Constructor(Vector3(2522.587f, 2049.897f, 40.77577f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "W_Oshur_Warpgate_Tower", + 53, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2506f, 2050f, 30.77677f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2262, + CaptureTerminal.Constructor(Vector3(2522.587f, 2049.897f, 40.77577f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(300, Door.Constructor(Vector3(2518f, 2042f, 32.29778f)), owning_building_guid = 53) LocalObject(301, Door.Constructor(Vector3(2518f, 2042f, 52.29678f)), owning_building_guid = 53) LocalObject(302, Door.Constructor(Vector3(2518f, 2058f, 32.29778f)), owning_building_guid = 53) LocalObject(303, Door.Constructor(Vector3(2518f, 2058f, 52.29678f)), owning_building_guid = 53) LocalObject(2370, Door.Constructor(Vector3(2517.146f, 2038.794f, 22.11277f)), owning_building_guid = 53) LocalObject(2371, Door.Constructor(Vector3(2517.146f, 2055.204f, 22.11277f)), owning_building_guid = 53) - LocalObject(870, IFFLock.Constructor(Vector3(2515.957f, 2058.811f, 32.23777f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 302) - LocalObject(871, IFFLock.Constructor(Vector3(2515.957f, 2058.811f, 52.23777f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 303) - LocalObject(872, IFFLock.Constructor(Vector3(2520.047f, 2041.189f, 32.23777f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 300) - LocalObject(873, IFFLock.Constructor(Vector3(2520.047f, 2041.189f, 52.23777f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 301) + LocalObject( + 870, + IFFLock.Constructor(Vector3(2515.957f, 2058.811f, 32.23777f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 302 + ) + LocalObject( + 871, + IFFLock.Constructor(Vector3(2515.957f, 2058.811f, 52.23777f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 303 + ) + LocalObject( + 872, + IFFLock.Constructor(Vector3(2520.047f, 2041.189f, 32.23777f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 300 + ) + LocalObject( + 873, + IFFLock.Constructor(Vector3(2520.047f, 2041.189f, 52.23777f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 301 + ) LocalObject(1097, Locker.Constructor(Vector3(2521.716f, 2034.963f, 20.77077f)), owning_building_guid = 53) LocalObject(1098, Locker.Constructor(Vector3(2521.751f, 2056.835f, 20.77077f)), owning_building_guid = 53) LocalObject(1099, Locker.Constructor(Vector3(2523.053f, 2034.963f, 20.77077f)), owning_building_guid = 53) @@ -1672,35 +4871,106 @@ object Map02 { // Hossin LocalObject(1103, Locker.Constructor(Vector3(2525.741f, 2056.835f, 20.77077f)), owning_building_guid = 53) LocalObject(1105, Locker.Constructor(Vector3(2527.143f, 2034.963f, 20.77077f)), owning_building_guid = 53) LocalObject(1106, Locker.Constructor(Vector3(2527.143f, 2056.835f, 20.77077f)), owning_building_guid = 53) - LocalObject(1594, Terminal.Constructor(Vector3(2527.445f, 2040.129f, 22.10877f), order_terminal), owning_building_guid = 53) - LocalObject(1595, Terminal.Constructor(Vector3(2527.445f, 2045.853f, 22.10877f), order_terminal), owning_building_guid = 53) - LocalObject(1596, Terminal.Constructor(Vector3(2527.445f, 2051.234f, 22.10877f), order_terminal), owning_building_guid = 53) - LocalObject(2190, SpawnTube.Constructor(Vector3(2516.706f, 2037.742f, 20.25877f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(2191, SpawnTube.Constructor(Vector3(2516.706f, 2054.152f, 20.25877f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1452, FacilityTurret.Constructor(Vector3(2493.32f, 2037.295f, 49.71877f), manned_turret), owning_building_guid = 53) + LocalObject( + 1594, + Terminal.Constructor(Vector3(2527.445f, 2040.129f, 22.10877f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1595, + Terminal.Constructor(Vector3(2527.445f, 2045.853f, 22.10877f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1596, + Terminal.Constructor(Vector3(2527.445f, 2051.234f, 22.10877f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2190, + SpawnTube.Constructor(Vector3(2516.706f, 2037.742f, 20.25877f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 2191, + SpawnTube.Constructor(Vector3(2516.706f, 2054.152f, 20.25877f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1452, + FacilityTurret.Constructor(Vector3(2493.32f, 2037.295f, 49.71877f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1452, 5069) - LocalObject(1453, FacilityTurret.Constructor(Vector3(2528.647f, 2062.707f, 49.71877f), manned_turret), owning_building_guid = 53) + LocalObject( + 1453, + FacilityTurret.Constructor(Vector3(2528.647f, 2062.707f, 49.71877f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1453, 5070) - LocalObject(2016, Painbox.Constructor(Vector3(2511.235f, 2043.803f, 22.27587f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(2017, Painbox.Constructor(Vector3(2522.889f, 2052.086f, 20.87677f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(2018, Painbox.Constructor(Vector3(2522.975f, 2040.223f, 20.87677f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 2016, + Painbox.Constructor(Vector3(2511.235f, 2043.803f, 22.27587f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2017, + Painbox.Constructor(Vector3(2522.889f, 2052.086f, 20.87677f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2018, + Painbox.Constructor(Vector3(2522.975f, 2040.223f, 20.87677f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building49() def Building49(): Unit = { // Name: Ixtab_tower Type: tower_a GUID: 54, MapID: 49 - LocalBuilding("Ixtab_tower", 54, 49, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3652f, 3042f, 38.52847f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2269, CaptureTerminal.Constructor(Vector3(3668.587f, 3041.897f, 48.52747f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "Ixtab_tower", + 54, + 49, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3652f, 3042f, 38.52847f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2269, + CaptureTerminal.Constructor(Vector3(3668.587f, 3041.897f, 48.52747f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(385, Door.Constructor(Vector3(3664f, 3034f, 40.04947f)), owning_building_guid = 54) LocalObject(386, Door.Constructor(Vector3(3664f, 3034f, 60.04847f)), owning_building_guid = 54) LocalObject(387, Door.Constructor(Vector3(3664f, 3050f, 40.04947f)), owning_building_guid = 54) LocalObject(388, Door.Constructor(Vector3(3664f, 3050f, 60.04847f)), owning_building_guid = 54) LocalObject(2393, Door.Constructor(Vector3(3663.146f, 3030.794f, 29.86447f)), owning_building_guid = 54) LocalObject(2394, Door.Constructor(Vector3(3663.146f, 3047.204f, 29.86447f)), owning_building_guid = 54) - LocalObject(934, IFFLock.Constructor(Vector3(3661.957f, 3050.811f, 39.98947f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 387) - LocalObject(935, IFFLock.Constructor(Vector3(3661.957f, 3050.811f, 59.98947f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 388) - LocalObject(936, IFFLock.Constructor(Vector3(3666.047f, 3033.189f, 39.98947f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 385) - LocalObject(937, IFFLock.Constructor(Vector3(3666.047f, 3033.189f, 59.98947f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 386) + LocalObject( + 934, + IFFLock.Constructor(Vector3(3661.957f, 3050.811f, 39.98947f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 387 + ) + LocalObject( + 935, + IFFLock.Constructor(Vector3(3661.957f, 3050.811f, 59.98947f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 388 + ) + LocalObject( + 936, + IFFLock.Constructor(Vector3(3666.047f, 3033.189f, 39.98947f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 385 + ) + LocalObject( + 937, + IFFLock.Constructor(Vector3(3666.047f, 3033.189f, 59.98947f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 386 + ) LocalObject(1202, Locker.Constructor(Vector3(3667.716f, 3026.963f, 28.52247f)), owning_building_guid = 54) LocalObject(1203, Locker.Constructor(Vector3(3667.751f, 3048.835f, 28.52247f)), owning_building_guid = 54) LocalObject(1204, Locker.Constructor(Vector3(3669.053f, 3026.963f, 28.52247f)), owning_building_guid = 54) @@ -1709,35 +4979,106 @@ object Map02 { // Hossin LocalObject(1207, Locker.Constructor(Vector3(3671.741f, 3048.835f, 28.52247f)), owning_building_guid = 54) LocalObject(1208, Locker.Constructor(Vector3(3673.143f, 3026.963f, 28.52247f)), owning_building_guid = 54) LocalObject(1209, Locker.Constructor(Vector3(3673.143f, 3048.835f, 28.52247f)), owning_building_guid = 54) - LocalObject(1632, Terminal.Constructor(Vector3(3673.445f, 3032.129f, 29.86047f), order_terminal), owning_building_guid = 54) - LocalObject(1633, Terminal.Constructor(Vector3(3673.445f, 3037.853f, 29.86047f), order_terminal), owning_building_guid = 54) - LocalObject(1634, Terminal.Constructor(Vector3(3673.445f, 3043.234f, 29.86047f), order_terminal), owning_building_guid = 54) - LocalObject(2213, SpawnTube.Constructor(Vector3(3662.706f, 3029.742f, 28.01047f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(2214, SpawnTube.Constructor(Vector3(3662.706f, 3046.152f, 28.01047f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1480, FacilityTurret.Constructor(Vector3(3639.32f, 3029.295f, 57.47047f), manned_turret), owning_building_guid = 54) + LocalObject( + 1632, + Terminal.Constructor(Vector3(3673.445f, 3032.129f, 29.86047f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1633, + Terminal.Constructor(Vector3(3673.445f, 3037.853f, 29.86047f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1634, + Terminal.Constructor(Vector3(3673.445f, 3043.234f, 29.86047f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2213, + SpawnTube.Constructor(Vector3(3662.706f, 3029.742f, 28.01047f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 2214, + SpawnTube.Constructor(Vector3(3662.706f, 3046.152f, 28.01047f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1480, + FacilityTurret.Constructor(Vector3(3639.32f, 3029.295f, 57.47047f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1480, 5071) - LocalObject(1481, FacilityTurret.Constructor(Vector3(3674.647f, 3054.707f, 57.47047f), manned_turret), owning_building_guid = 54) + LocalObject( + 1481, + FacilityTurret.Constructor(Vector3(3674.647f, 3054.707f, 57.47047f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1481, 5072) - LocalObject(2037, Painbox.Constructor(Vector3(3657.235f, 3035.803f, 30.02757f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2038, Painbox.Constructor(Vector3(3668.889f, 3044.086f, 28.62847f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2039, Painbox.Constructor(Vector3(3668.975f, 3032.223f, 28.62847f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 2037, + Painbox.Constructor(Vector3(3657.235f, 3035.803f, 30.02757f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2038, + Painbox.Constructor(Vector3(3668.889f, 3044.086f, 28.62847f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2039, + Painbox.Constructor(Vector3(3668.975f, 3032.223f, 28.62847f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building32() def Building32(): Unit = { // Name: S_Acan_Tower Type: tower_a GUID: 55, MapID: 32 - LocalBuilding("S_Acan_Tower", 55, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3834f, 4050f, 25.81256f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2271, CaptureTerminal.Constructor(Vector3(3850.587f, 4049.897f, 35.81155f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "S_Acan_Tower", + 55, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3834f, 4050f, 25.81256f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2271, + CaptureTerminal.Constructor(Vector3(3850.587f, 4049.897f, 35.81155f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(394, Door.Constructor(Vector3(3846f, 4042f, 27.33356f)), owning_building_guid = 55) LocalObject(395, Door.Constructor(Vector3(3846f, 4042f, 47.33256f)), owning_building_guid = 55) LocalObject(396, Door.Constructor(Vector3(3846f, 4058f, 27.33356f)), owning_building_guid = 55) LocalObject(397, Door.Constructor(Vector3(3846f, 4058f, 47.33256f)), owning_building_guid = 55) LocalObject(2397, Door.Constructor(Vector3(3845.146f, 4038.794f, 17.14856f)), owning_building_guid = 55) LocalObject(2398, Door.Constructor(Vector3(3845.146f, 4055.204f, 17.14856f)), owning_building_guid = 55) - LocalObject(942, IFFLock.Constructor(Vector3(3843.957f, 4058.811f, 27.27356f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 396) - LocalObject(943, IFFLock.Constructor(Vector3(3843.957f, 4058.811f, 47.27356f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 397) - LocalObject(944, IFFLock.Constructor(Vector3(3848.047f, 4041.189f, 27.27356f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 394) - LocalObject(945, IFFLock.Constructor(Vector3(3848.047f, 4041.189f, 47.27356f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 395) + LocalObject( + 942, + IFFLock.Constructor(Vector3(3843.957f, 4058.811f, 27.27356f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 396 + ) + LocalObject( + 943, + IFFLock.Constructor(Vector3(3843.957f, 4058.811f, 47.27356f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 397 + ) + LocalObject( + 944, + IFFLock.Constructor(Vector3(3848.047f, 4041.189f, 27.27356f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 394 + ) + LocalObject( + 945, + IFFLock.Constructor(Vector3(3848.047f, 4041.189f, 47.27356f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 395 + ) LocalObject(1218, Locker.Constructor(Vector3(3849.716f, 4034.963f, 15.80656f)), owning_building_guid = 55) LocalObject(1219, Locker.Constructor(Vector3(3849.751f, 4056.835f, 15.80656f)), owning_building_guid = 55) LocalObject(1220, Locker.Constructor(Vector3(3851.053f, 4034.963f, 15.80656f)), owning_building_guid = 55) @@ -1746,35 +5087,106 @@ object Map02 { // Hossin LocalObject(1223, Locker.Constructor(Vector3(3853.741f, 4056.835f, 15.80656f)), owning_building_guid = 55) LocalObject(1224, Locker.Constructor(Vector3(3855.143f, 4034.963f, 15.80656f)), owning_building_guid = 55) LocalObject(1225, Locker.Constructor(Vector3(3855.143f, 4056.835f, 15.80656f)), owning_building_guid = 55) - LocalObject(1638, Terminal.Constructor(Vector3(3855.445f, 4040.129f, 17.14455f), order_terminal), owning_building_guid = 55) - LocalObject(1639, Terminal.Constructor(Vector3(3855.445f, 4045.853f, 17.14455f), order_terminal), owning_building_guid = 55) - LocalObject(1640, Terminal.Constructor(Vector3(3855.445f, 4051.234f, 17.14455f), order_terminal), owning_building_guid = 55) - LocalObject(2217, SpawnTube.Constructor(Vector3(3844.706f, 4037.742f, 15.29456f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(2218, SpawnTube.Constructor(Vector3(3844.706f, 4054.152f, 15.29456f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1484, FacilityTurret.Constructor(Vector3(3821.32f, 4037.295f, 44.75455f), manned_turret), owning_building_guid = 55) + LocalObject( + 1638, + Terminal.Constructor(Vector3(3855.445f, 4040.129f, 17.14455f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1639, + Terminal.Constructor(Vector3(3855.445f, 4045.853f, 17.14455f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1640, + Terminal.Constructor(Vector3(3855.445f, 4051.234f, 17.14455f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 2217, + SpawnTube.Constructor(Vector3(3844.706f, 4037.742f, 15.29456f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 2218, + SpawnTube.Constructor(Vector3(3844.706f, 4054.152f, 15.29456f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1484, + FacilityTurret.Constructor(Vector3(3821.32f, 4037.295f, 44.75455f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1484, 5073) - LocalObject(1485, FacilityTurret.Constructor(Vector3(3856.647f, 4062.707f, 44.75455f), manned_turret), owning_building_guid = 55) + LocalObject( + 1485, + FacilityTurret.Constructor(Vector3(3856.647f, 4062.707f, 44.75455f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1485, 5074) - LocalObject(2043, Painbox.Constructor(Vector3(3839.235f, 4043.803f, 17.31166f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2044, Painbox.Constructor(Vector3(3850.889f, 4052.086f, 15.91256f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2045, Painbox.Constructor(Vector3(3850.975f, 4040.223f, 15.91256f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 2043, + Painbox.Constructor(Vector3(3839.235f, 4043.803f, 17.31166f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2044, + Painbox.Constructor(Vector3(3850.889f, 4052.086f, 15.91256f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2045, + Painbox.Constructor(Vector3(3850.975f, 4040.223f, 15.91256f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building50() def Building50(): Unit = { // Name: WG_Hossin_to_VSSanc_Tower Type: tower_a GUID: 56, MapID: 50 - LocalBuilding("WG_Hossin_to_VSSanc_Tower", 56, 50, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5238f, 1902f, 40.67507f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2277, CaptureTerminal.Constructor(Vector3(5254.587f, 1901.897f, 50.67407f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "WG_Hossin_to_VSSanc_Tower", + 56, + 50, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5238f, 1902f, 40.67507f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2277, + CaptureTerminal.Constructor(Vector3(5254.587f, 1901.897f, 50.67407f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(463, Door.Constructor(Vector3(5250f, 1894f, 42.19607f)), owning_building_guid = 56) LocalObject(464, Door.Constructor(Vector3(5250f, 1894f, 62.19507f)), owning_building_guid = 56) LocalObject(465, Door.Constructor(Vector3(5250f, 1910f, 42.19607f)), owning_building_guid = 56) LocalObject(466, Door.Constructor(Vector3(5250f, 1910f, 62.19507f)), owning_building_guid = 56) LocalObject(2418, Door.Constructor(Vector3(5249.146f, 1890.794f, 32.01107f)), owning_building_guid = 56) LocalObject(2419, Door.Constructor(Vector3(5249.146f, 1907.204f, 32.01107f)), owning_building_guid = 56) - LocalObject(997, IFFLock.Constructor(Vector3(5247.957f, 1910.811f, 42.13607f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 465) - LocalObject(998, IFFLock.Constructor(Vector3(5247.957f, 1910.811f, 62.13607f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 466) - LocalObject(999, IFFLock.Constructor(Vector3(5252.047f, 1893.189f, 42.13607f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 463) - LocalObject(1000, IFFLock.Constructor(Vector3(5252.047f, 1893.189f, 62.13607f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 464) + LocalObject( + 997, + IFFLock.Constructor(Vector3(5247.957f, 1910.811f, 42.13607f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 465 + ) + LocalObject( + 998, + IFFLock.Constructor(Vector3(5247.957f, 1910.811f, 62.13607f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 466 + ) + LocalObject( + 999, + IFFLock.Constructor(Vector3(5252.047f, 1893.189f, 42.13607f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 463 + ) + LocalObject( + 1000, + IFFLock.Constructor(Vector3(5252.047f, 1893.189f, 62.13607f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 464 + ) LocalObject(1311, Locker.Constructor(Vector3(5253.716f, 1886.963f, 30.66907f)), owning_building_guid = 56) LocalObject(1312, Locker.Constructor(Vector3(5253.751f, 1908.835f, 30.66907f)), owning_building_guid = 56) LocalObject(1313, Locker.Constructor(Vector3(5255.053f, 1886.963f, 30.66907f)), owning_building_guid = 56) @@ -1783,35 +5195,106 @@ object Map02 { // Hossin LocalObject(1316, Locker.Constructor(Vector3(5257.741f, 1908.835f, 30.66907f)), owning_building_guid = 56) LocalObject(1317, Locker.Constructor(Vector3(5259.143f, 1886.963f, 30.66907f)), owning_building_guid = 56) LocalObject(1318, Locker.Constructor(Vector3(5259.143f, 1908.835f, 30.66907f)), owning_building_guid = 56) - LocalObject(1671, Terminal.Constructor(Vector3(5259.445f, 1892.129f, 32.00707f), order_terminal), owning_building_guid = 56) - LocalObject(1672, Terminal.Constructor(Vector3(5259.445f, 1897.853f, 32.00707f), order_terminal), owning_building_guid = 56) - LocalObject(1673, Terminal.Constructor(Vector3(5259.445f, 1903.234f, 32.00707f), order_terminal), owning_building_guid = 56) - LocalObject(2238, SpawnTube.Constructor(Vector3(5248.706f, 1889.742f, 30.15707f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(2239, SpawnTube.Constructor(Vector3(5248.706f, 1906.152f, 30.15707f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1509, FacilityTurret.Constructor(Vector3(5225.32f, 1889.295f, 59.61707f), manned_turret), owning_building_guid = 56) + LocalObject( + 1671, + Terminal.Constructor(Vector3(5259.445f, 1892.129f, 32.00707f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1672, + Terminal.Constructor(Vector3(5259.445f, 1897.853f, 32.00707f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1673, + Terminal.Constructor(Vector3(5259.445f, 1903.234f, 32.00707f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2238, + SpawnTube.Constructor(Vector3(5248.706f, 1889.742f, 30.15707f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 2239, + SpawnTube.Constructor(Vector3(5248.706f, 1906.152f, 30.15707f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1509, + FacilityTurret.Constructor(Vector3(5225.32f, 1889.295f, 59.61707f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1509, 5075) - LocalObject(1510, FacilityTurret.Constructor(Vector3(5260.647f, 1914.707f, 59.61707f), manned_turret), owning_building_guid = 56) + LocalObject( + 1510, + FacilityTurret.Constructor(Vector3(5260.647f, 1914.707f, 59.61707f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1510, 5076) - LocalObject(2061, Painbox.Constructor(Vector3(5243.235f, 1895.803f, 32.17417f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2062, Painbox.Constructor(Vector3(5254.889f, 1904.086f, 30.77507f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2063, Painbox.Constructor(Vector3(5254.975f, 1892.223f, 30.77507f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 2061, + Painbox.Constructor(Vector3(5243.235f, 1895.803f, 32.17417f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2062, + Painbox.Constructor(Vector3(5254.889f, 1904.086f, 30.77507f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2063, + Painbox.Constructor(Vector3(5254.975f, 1892.223f, 30.77507f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building23() def Building23(): Unit = { // Name: N_Kisin_Tower Type: tower_a GUID: 57, MapID: 23 - LocalBuilding("N_Kisin_Tower", 57, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5332f, 4112f, 18.44539f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2279, CaptureTerminal.Constructor(Vector3(5348.587f, 4111.897f, 28.44439f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "N_Kisin_Tower", + 57, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5332f, 4112f, 18.44539f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2279, + CaptureTerminal.Constructor(Vector3(5348.587f, 4111.897f, 28.44439f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(474, Door.Constructor(Vector3(5344f, 4104f, 19.96639f)), owning_building_guid = 57) LocalObject(475, Door.Constructor(Vector3(5344f, 4104f, 39.96539f)), owning_building_guid = 57) LocalObject(476, Door.Constructor(Vector3(5344f, 4120f, 19.96639f)), owning_building_guid = 57) LocalObject(477, Door.Constructor(Vector3(5344f, 4120f, 39.96539f)), owning_building_guid = 57) LocalObject(2422, Door.Constructor(Vector3(5343.146f, 4100.794f, 9.781387f)), owning_building_guid = 57) LocalObject(2423, Door.Constructor(Vector3(5343.146f, 4117.204f, 9.781387f)), owning_building_guid = 57) - LocalObject(1005, IFFLock.Constructor(Vector3(5341.957f, 4120.811f, 19.90639f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 476) - LocalObject(1006, IFFLock.Constructor(Vector3(5341.957f, 4120.811f, 39.90639f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 477) - LocalObject(1007, IFFLock.Constructor(Vector3(5346.047f, 4103.189f, 19.90639f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 474) - LocalObject(1008, IFFLock.Constructor(Vector3(5346.047f, 4103.189f, 39.90639f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 475) + LocalObject( + 1005, + IFFLock.Constructor(Vector3(5341.957f, 4120.811f, 19.90639f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 476 + ) + LocalObject( + 1006, + IFFLock.Constructor(Vector3(5341.957f, 4120.811f, 39.90639f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 477 + ) + LocalObject( + 1007, + IFFLock.Constructor(Vector3(5346.047f, 4103.189f, 19.90639f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 474 + ) + LocalObject( + 1008, + IFFLock.Constructor(Vector3(5346.047f, 4103.189f, 39.90639f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 475 + ) LocalObject(1327, Locker.Constructor(Vector3(5347.716f, 4096.963f, 8.439387f)), owning_building_guid = 57) LocalObject(1328, Locker.Constructor(Vector3(5347.751f, 4118.835f, 8.439387f)), owning_building_guid = 57) LocalObject(1329, Locker.Constructor(Vector3(5349.053f, 4096.963f, 8.439387f)), owning_building_guid = 57) @@ -1820,35 +5303,106 @@ object Map02 { // Hossin LocalObject(1332, Locker.Constructor(Vector3(5351.741f, 4118.835f, 8.439387f)), owning_building_guid = 57) LocalObject(1333, Locker.Constructor(Vector3(5353.143f, 4096.963f, 8.439387f)), owning_building_guid = 57) LocalObject(1334, Locker.Constructor(Vector3(5353.143f, 4118.835f, 8.439387f)), owning_building_guid = 57) - LocalObject(1677, Terminal.Constructor(Vector3(5353.445f, 4102.129f, 9.777387f), order_terminal), owning_building_guid = 57) - LocalObject(1678, Terminal.Constructor(Vector3(5353.445f, 4107.853f, 9.777387f), order_terminal), owning_building_guid = 57) - LocalObject(1679, Terminal.Constructor(Vector3(5353.445f, 4113.234f, 9.777387f), order_terminal), owning_building_guid = 57) - LocalObject(2242, SpawnTube.Constructor(Vector3(5342.706f, 4099.742f, 7.927387f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(2243, SpawnTube.Constructor(Vector3(5342.706f, 4116.152f, 7.927387f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1513, FacilityTurret.Constructor(Vector3(5319.32f, 4099.295f, 37.38739f), manned_turret), owning_building_guid = 57) + LocalObject( + 1677, + Terminal.Constructor(Vector3(5353.445f, 4102.129f, 9.777387f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1678, + Terminal.Constructor(Vector3(5353.445f, 4107.853f, 9.777387f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1679, + Terminal.Constructor(Vector3(5353.445f, 4113.234f, 9.777387f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 2242, + SpawnTube.Constructor(Vector3(5342.706f, 4099.742f, 7.927387f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 2243, + SpawnTube.Constructor(Vector3(5342.706f, 4116.152f, 7.927387f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1513, + FacilityTurret.Constructor(Vector3(5319.32f, 4099.295f, 37.38739f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1513, 5077) - LocalObject(1515, FacilityTurret.Constructor(Vector3(5354.647f, 4124.707f, 37.38739f), manned_turret), owning_building_guid = 57) + LocalObject( + 1515, + FacilityTurret.Constructor(Vector3(5354.647f, 4124.707f, 37.38739f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1515, 5078) - LocalObject(2067, Painbox.Constructor(Vector3(5337.235f, 4105.803f, 9.944487f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2068, Painbox.Constructor(Vector3(5348.889f, 4114.086f, 8.545387f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2069, Painbox.Constructor(Vector3(5348.975f, 4102.223f, 8.545387f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 2067, + Painbox.Constructor(Vector3(5337.235f, 4105.803f, 9.944487f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2068, + Painbox.Constructor(Vector3(5348.889f, 4114.086f, 8.545387f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2069, + Painbox.Constructor(Vector3(5348.975f, 4102.223f, 8.545387f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building52() def Building52(): Unit = { // Name: E_Naum_Tower Type: tower_a GUID: 58, MapID: 52 - LocalBuilding("E_Naum_Tower", 58, 52, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6472f, 3562f, 46.96188f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2281, CaptureTerminal.Constructor(Vector3(6488.587f, 3561.897f, 56.96088f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "E_Naum_Tower", + 58, + 52, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6472f, 3562f, 46.96188f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2281, + CaptureTerminal.Constructor(Vector3(6488.587f, 3561.897f, 56.96088f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(516, Door.Constructor(Vector3(6484f, 3554f, 48.48288f)), owning_building_guid = 58) LocalObject(517, Door.Constructor(Vector3(6484f, 3554f, 68.48189f)), owning_building_guid = 58) LocalObject(518, Door.Constructor(Vector3(6484f, 3570f, 48.48288f)), owning_building_guid = 58) LocalObject(519, Door.Constructor(Vector3(6484f, 3570f, 68.48189f)), owning_building_guid = 58) LocalObject(2432, Door.Constructor(Vector3(6483.146f, 3550.794f, 38.29788f)), owning_building_guid = 58) LocalObject(2433, Door.Constructor(Vector3(6483.146f, 3567.204f, 38.29788f)), owning_building_guid = 58) - LocalObject(1037, IFFLock.Constructor(Vector3(6481.957f, 3570.811f, 48.42288f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 518) - LocalObject(1038, IFFLock.Constructor(Vector3(6481.957f, 3570.811f, 68.42288f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 519) - LocalObject(1039, IFFLock.Constructor(Vector3(6486.047f, 3553.189f, 48.42288f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 516) - LocalObject(1040, IFFLock.Constructor(Vector3(6486.047f, 3553.189f, 68.42288f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 517) + LocalObject( + 1037, + IFFLock.Constructor(Vector3(6481.957f, 3570.811f, 48.42288f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 518 + ) + LocalObject( + 1038, + IFFLock.Constructor(Vector3(6481.957f, 3570.811f, 68.42288f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 519 + ) + LocalObject( + 1039, + IFFLock.Constructor(Vector3(6486.047f, 3553.189f, 48.42288f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 516 + ) + LocalObject( + 1040, + IFFLock.Constructor(Vector3(6486.047f, 3553.189f, 68.42288f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 517 + ) LocalObject(1367, Locker.Constructor(Vector3(6487.716f, 3546.963f, 36.95588f)), owning_building_guid = 58) LocalObject(1368, Locker.Constructor(Vector3(6487.751f, 3568.835f, 36.95588f)), owning_building_guid = 58) LocalObject(1369, Locker.Constructor(Vector3(6489.053f, 3546.963f, 36.95588f)), owning_building_guid = 58) @@ -1857,25 +5411,76 @@ object Map02 { // Hossin LocalObject(1372, Locker.Constructor(Vector3(6491.741f, 3568.835f, 36.95588f)), owning_building_guid = 58) LocalObject(1373, Locker.Constructor(Vector3(6493.143f, 3546.963f, 36.95588f)), owning_building_guid = 58) LocalObject(1374, Locker.Constructor(Vector3(6493.143f, 3568.835f, 36.95588f)), owning_building_guid = 58) - LocalObject(1695, Terminal.Constructor(Vector3(6493.445f, 3552.129f, 38.29388f), order_terminal), owning_building_guid = 58) - LocalObject(1696, Terminal.Constructor(Vector3(6493.445f, 3557.853f, 38.29388f), order_terminal), owning_building_guid = 58) - LocalObject(1697, Terminal.Constructor(Vector3(6493.445f, 3563.234f, 38.29388f), order_terminal), owning_building_guid = 58) - LocalObject(2252, SpawnTube.Constructor(Vector3(6482.706f, 3549.742f, 36.44389f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(2253, SpawnTube.Constructor(Vector3(6482.706f, 3566.152f, 36.44389f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1529, FacilityTurret.Constructor(Vector3(6459.32f, 3549.295f, 65.90388f), manned_turret), owning_building_guid = 58) + LocalObject( + 1695, + Terminal.Constructor(Vector3(6493.445f, 3552.129f, 38.29388f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1696, + Terminal.Constructor(Vector3(6493.445f, 3557.853f, 38.29388f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1697, + Terminal.Constructor(Vector3(6493.445f, 3563.234f, 38.29388f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 2252, + SpawnTube.Constructor(Vector3(6482.706f, 3549.742f, 36.44389f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 2253, + SpawnTube.Constructor(Vector3(6482.706f, 3566.152f, 36.44389f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1529, + FacilityTurret.Constructor(Vector3(6459.32f, 3549.295f, 65.90388f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1529, 5079) - LocalObject(1530, FacilityTurret.Constructor(Vector3(6494.647f, 3574.707f, 65.90388f), manned_turret), owning_building_guid = 58) + LocalObject( + 1530, + FacilityTurret.Constructor(Vector3(6494.647f, 3574.707f, 65.90388f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1530, 5080) - LocalObject(2073, Painbox.Constructor(Vector3(6477.235f, 3555.803f, 38.46098f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2074, Painbox.Constructor(Vector3(6488.889f, 3564.086f, 37.06188f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2075, Painbox.Constructor(Vector3(6488.975f, 3552.223f, 37.06188f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 2073, + Painbox.Constructor(Vector3(6477.235f, 3555.803f, 38.46098f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2074, + Painbox.Constructor(Vector3(6488.889f, 3564.086f, 37.06188f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2075, + Painbox.Constructor(Vector3(6488.975f, 3552.223f, 37.06188f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building31() def Building31(): Unit = { // Name: SW_Ghanon_Tower Type: tower_b GUID: 59, MapID: 31 - LocalBuilding("SW_Ghanon_Tower", 59, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1994f, 3310f, 25.44633f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2260, CaptureTerminal.Constructor(Vector3(2010.587f, 3309.897f, 45.44534f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "SW_Ghanon_Tower", + 59, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1994f, 3310f, 25.44633f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2260, + CaptureTerminal.Constructor(Vector3(2010.587f, 3309.897f, 45.44534f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(279, Door.Constructor(Vector3(2006f, 3302f, 26.96633f)), owning_building_guid = 59) LocalObject(280, Door.Constructor(Vector3(2006f, 3302f, 36.96633f)), owning_building_guid = 59) LocalObject(281, Door.Constructor(Vector3(2006f, 3302f, 56.96633f)), owning_building_guid = 59) @@ -1884,12 +5489,42 @@ object Map02 { // Hossin LocalObject(284, Door.Constructor(Vector3(2006f, 3318f, 56.96633f)), owning_building_guid = 59) LocalObject(2363, Door.Constructor(Vector3(2005.147f, 3298.794f, 16.78233f)), owning_building_guid = 59) LocalObject(2364, Door.Constructor(Vector3(2005.147f, 3315.204f, 16.78233f)), owning_building_guid = 59) - LocalObject(852, IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 26.90733f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 282) - LocalObject(853, IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 36.90733f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 283) - LocalObject(854, IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 56.90733f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 284) - LocalObject(855, IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 26.90733f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 279) - LocalObject(856, IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 36.90733f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 280) - LocalObject(857, IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 56.90733f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 281) + LocalObject( + 852, + IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 26.90733f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 282 + ) + LocalObject( + 853, + IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 36.90733f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 283 + ) + LocalObject( + 854, + IFFLock.Constructor(Vector3(2003.957f, 3318.811f, 56.90733f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 284 + ) + LocalObject( + 855, + IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 26.90733f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 279 + ) + LocalObject( + 856, + IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 36.90733f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 280 + ) + LocalObject( + 857, + IFFLock.Constructor(Vector3(2008.047f, 3301.189f, 56.90733f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 281 + ) LocalObject(1073, Locker.Constructor(Vector3(2009.716f, 3294.963f, 15.44033f)), owning_building_guid = 59) LocalObject(1074, Locker.Constructor(Vector3(2009.751f, 3316.835f, 15.44033f)), owning_building_guid = 59) LocalObject(1075, Locker.Constructor(Vector3(2011.053f, 3294.963f, 15.44033f)), owning_building_guid = 59) @@ -1898,21 +5533,64 @@ object Map02 { // Hossin LocalObject(1078, Locker.Constructor(Vector3(2013.741f, 3316.835f, 15.44033f)), owning_building_guid = 59) LocalObject(1079, Locker.Constructor(Vector3(2015.143f, 3294.963f, 15.44033f)), owning_building_guid = 59) LocalObject(1080, Locker.Constructor(Vector3(2015.143f, 3316.835f, 15.44033f)), owning_building_guid = 59) - LocalObject(1584, Terminal.Constructor(Vector3(2015.446f, 3300.129f, 16.77833f), order_terminal), owning_building_guid = 59) - LocalObject(1585, Terminal.Constructor(Vector3(2015.446f, 3305.853f, 16.77833f), order_terminal), owning_building_guid = 59) - LocalObject(1586, Terminal.Constructor(Vector3(2015.446f, 3311.234f, 16.77833f), order_terminal), owning_building_guid = 59) - LocalObject(2183, SpawnTube.Constructor(Vector3(2004.706f, 3297.742f, 14.92833f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2184, SpawnTube.Constructor(Vector3(2004.706f, 3314.152f, 14.92833f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2010, Painbox.Constructor(Vector3(1999.493f, 3302.849f, 16.73573f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2011, Painbox.Constructor(Vector3(2011.127f, 3300.078f, 15.54633f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2012, Painbox.Constructor(Vector3(2011.259f, 3312.107f, 15.54633f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 1584, + Terminal.Constructor(Vector3(2015.446f, 3300.129f, 16.77833f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1585, + Terminal.Constructor(Vector3(2015.446f, 3305.853f, 16.77833f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1586, + Terminal.Constructor(Vector3(2015.446f, 3311.234f, 16.77833f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2183, + SpawnTube.Constructor(Vector3(2004.706f, 3297.742f, 14.92833f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2184, + SpawnTube.Constructor(Vector3(2004.706f, 3314.152f, 14.92833f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2010, + Painbox.Constructor(Vector3(1999.493f, 3302.849f, 16.73573f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2011, + Painbox.Constructor(Vector3(2011.127f, 3300.078f, 15.54633f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2012, + Painbox.Constructor(Vector3(2011.259f, 3312.107f, 15.54633f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building30() def Building30(): Unit = { // Name: SW_Ixtab_Tower Type: tower_b GUID: 60, MapID: 30 - LocalBuilding("SW_Ixtab_Tower", 60, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2950f, 2648f, 21.2714f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2264, CaptureTerminal.Constructor(Vector3(2966.587f, 2647.897f, 41.2704f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "SW_Ixtab_Tower", + 60, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2950f, 2648f, 21.2714f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2264, + CaptureTerminal.Constructor(Vector3(2966.587f, 2647.897f, 41.2704f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(313, Door.Constructor(Vector3(2962f, 2640f, 22.7914f)), owning_building_guid = 60) LocalObject(314, Door.Constructor(Vector3(2962f, 2640f, 32.7914f)), owning_building_guid = 60) LocalObject(315, Door.Constructor(Vector3(2962f, 2640f, 52.7914f)), owning_building_guid = 60) @@ -1921,12 +5599,42 @@ object Map02 { // Hossin LocalObject(318, Door.Constructor(Vector3(2962f, 2656f, 52.7914f)), owning_building_guid = 60) LocalObject(2374, Door.Constructor(Vector3(2961.147f, 2636.794f, 12.6074f)), owning_building_guid = 60) LocalObject(2375, Door.Constructor(Vector3(2961.147f, 2653.204f, 12.6074f)), owning_building_guid = 60) - LocalObject(878, IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 22.7324f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 316) - LocalObject(879, IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 32.7324f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 317) - LocalObject(880, IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 52.7324f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 318) - LocalObject(881, IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 22.7324f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 313) - LocalObject(882, IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 32.7324f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 314) - LocalObject(883, IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 52.7324f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 315) + LocalObject( + 878, + IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 22.7324f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 316 + ) + LocalObject( + 879, + IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 32.7324f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 317 + ) + LocalObject( + 880, + IFFLock.Constructor(Vector3(2959.957f, 2656.811f, 52.7324f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 318 + ) + LocalObject( + 881, + IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 22.7324f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 313 + ) + LocalObject( + 882, + IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 32.7324f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 314 + ) + LocalObject( + 883, + IFFLock.Constructor(Vector3(2964.047f, 2639.189f, 52.7324f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 315 + ) LocalObject(1117, Locker.Constructor(Vector3(2965.716f, 2632.963f, 11.2654f)), owning_building_guid = 60) LocalObject(1118, Locker.Constructor(Vector3(2965.751f, 2654.835f, 11.2654f)), owning_building_guid = 60) LocalObject(1119, Locker.Constructor(Vector3(2967.053f, 2632.963f, 11.2654f)), owning_building_guid = 60) @@ -1935,21 +5643,64 @@ object Map02 { // Hossin LocalObject(1122, Locker.Constructor(Vector3(2969.741f, 2654.835f, 11.2654f)), owning_building_guid = 60) LocalObject(1123, Locker.Constructor(Vector3(2971.143f, 2632.963f, 11.2654f)), owning_building_guid = 60) LocalObject(1124, Locker.Constructor(Vector3(2971.143f, 2654.835f, 11.2654f)), owning_building_guid = 60) - LocalObject(1600, Terminal.Constructor(Vector3(2971.446f, 2638.129f, 12.6034f), order_terminal), owning_building_guid = 60) - LocalObject(1601, Terminal.Constructor(Vector3(2971.446f, 2643.853f, 12.6034f), order_terminal), owning_building_guid = 60) - LocalObject(1602, Terminal.Constructor(Vector3(2971.446f, 2649.234f, 12.6034f), order_terminal), owning_building_guid = 60) - LocalObject(2194, SpawnTube.Constructor(Vector3(2960.706f, 2635.742f, 10.7534f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2195, SpawnTube.Constructor(Vector3(2960.706f, 2652.152f, 10.7534f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2022, Painbox.Constructor(Vector3(2955.493f, 2640.849f, 12.5608f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2023, Painbox.Constructor(Vector3(2967.127f, 2638.078f, 11.3714f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2024, Painbox.Constructor(Vector3(2967.259f, 2650.107f, 11.3714f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1600, + Terminal.Constructor(Vector3(2971.446f, 2638.129f, 12.6034f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1601, + Terminal.Constructor(Vector3(2971.446f, 2643.853f, 12.6034f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1602, + Terminal.Constructor(Vector3(2971.446f, 2649.234f, 12.6034f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2194, + SpawnTube.Constructor(Vector3(2960.706f, 2635.742f, 10.7534f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2195, + SpawnTube.Constructor(Vector3(2960.706f, 2652.152f, 10.7534f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2022, + Painbox.Constructor(Vector3(2955.493f, 2640.849f, 12.5608f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2023, + Painbox.Constructor(Vector3(2967.127f, 2638.078f, 11.3714f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2024, + Painbox.Constructor(Vector3(2967.259f, 2650.107f, 11.3714f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building16() def Building16(): Unit = { // Name: NW_Acan_Tower Type: tower_b GUID: 61, MapID: 16 - LocalBuilding("NW_Acan_Tower", 61, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3086f, 4562f, 22.34565f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2265, CaptureTerminal.Constructor(Vector3(3102.587f, 4561.897f, 42.34465f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "NW_Acan_Tower", + 61, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3086f, 4562f, 22.34565f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2265, + CaptureTerminal.Constructor(Vector3(3102.587f, 4561.897f, 42.34465f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(319, Door.Constructor(Vector3(3098f, 4554f, 23.86565f)), owning_building_guid = 61) LocalObject(320, Door.Constructor(Vector3(3098f, 4554f, 33.86565f)), owning_building_guid = 61) LocalObject(321, Door.Constructor(Vector3(3098f, 4554f, 53.86565f)), owning_building_guid = 61) @@ -1958,12 +5709,42 @@ object Map02 { // Hossin LocalObject(324, Door.Constructor(Vector3(3098f, 4570f, 53.86565f)), owning_building_guid = 61) LocalObject(2376, Door.Constructor(Vector3(3097.147f, 4550.794f, 13.68165f)), owning_building_guid = 61) LocalObject(2377, Door.Constructor(Vector3(3097.147f, 4567.204f, 13.68165f)), owning_building_guid = 61) - LocalObject(884, IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 23.80665f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 322) - LocalObject(885, IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 33.80666f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 323) - LocalObject(886, IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 53.80666f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 324) - LocalObject(887, IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 23.80665f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 319) - LocalObject(888, IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 33.80666f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 320) - LocalObject(889, IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 53.80666f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 321) + LocalObject( + 884, + IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 23.80665f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 322 + ) + LocalObject( + 885, + IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 33.80666f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 323 + ) + LocalObject( + 886, + IFFLock.Constructor(Vector3(3095.957f, 4570.811f, 53.80666f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 324 + ) + LocalObject( + 887, + IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 23.80665f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 319 + ) + LocalObject( + 888, + IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 33.80666f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 320 + ) + LocalObject( + 889, + IFFLock.Constructor(Vector3(3100.047f, 4553.189f, 53.80666f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 321 + ) LocalObject(1125, Locker.Constructor(Vector3(3101.716f, 4546.963f, 12.33965f)), owning_building_guid = 61) LocalObject(1126, Locker.Constructor(Vector3(3101.751f, 4568.835f, 12.33965f)), owning_building_guid = 61) LocalObject(1127, Locker.Constructor(Vector3(3103.053f, 4546.963f, 12.33965f)), owning_building_guid = 61) @@ -1972,21 +5753,64 @@ object Map02 { // Hossin LocalObject(1130, Locker.Constructor(Vector3(3105.741f, 4568.835f, 12.33965f)), owning_building_guid = 61) LocalObject(1131, Locker.Constructor(Vector3(3107.143f, 4546.963f, 12.33965f)), owning_building_guid = 61) LocalObject(1132, Locker.Constructor(Vector3(3107.143f, 4568.835f, 12.33965f)), owning_building_guid = 61) - LocalObject(1603, Terminal.Constructor(Vector3(3107.446f, 4552.129f, 13.67765f), order_terminal), owning_building_guid = 61) - LocalObject(1604, Terminal.Constructor(Vector3(3107.446f, 4557.853f, 13.67765f), order_terminal), owning_building_guid = 61) - LocalObject(1605, Terminal.Constructor(Vector3(3107.446f, 4563.234f, 13.67765f), order_terminal), owning_building_guid = 61) - LocalObject(2196, SpawnTube.Constructor(Vector3(3096.706f, 4549.742f, 11.82765f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2197, SpawnTube.Constructor(Vector3(3096.706f, 4566.152f, 11.82765f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2025, Painbox.Constructor(Vector3(3091.493f, 4554.849f, 13.63505f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2026, Painbox.Constructor(Vector3(3103.127f, 4552.078f, 12.44565f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2027, Painbox.Constructor(Vector3(3103.259f, 4564.107f, 12.44565f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1603, + Terminal.Constructor(Vector3(3107.446f, 4552.129f, 13.67765f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1604, + Terminal.Constructor(Vector3(3107.446f, 4557.853f, 13.67765f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1605, + Terminal.Constructor(Vector3(3107.446f, 4563.234f, 13.67765f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2196, + SpawnTube.Constructor(Vector3(3096.706f, 4549.742f, 11.82765f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2197, + SpawnTube.Constructor(Vector3(3096.706f, 4566.152f, 11.82765f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2025, + Painbox.Constructor(Vector3(3091.493f, 4554.849f, 13.63505f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2026, + Painbox.Constructor(Vector3(3103.127f, 4552.078f, 12.44565f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2027, + Painbox.Constructor(Vector3(3103.259f, 4564.107f, 12.44565f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building19() def Building19(): Unit = { // Name: N_Naum_Tower Type: tower_b GUID: 62, MapID: 19 - LocalBuilding("N_Naum_Tower", 62, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3306f, 5924f, 24.897f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2266, CaptureTerminal.Constructor(Vector3(3322.587f, 5923.897f, 44.896f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "N_Naum_Tower", + 62, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3306f, 5924f, 24.897f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2266, + CaptureTerminal.Constructor(Vector3(3322.587f, 5923.897f, 44.896f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(338, Door.Constructor(Vector3(3318f, 5916f, 26.417f)), owning_building_guid = 62) LocalObject(339, Door.Constructor(Vector3(3318f, 5916f, 36.417f)), owning_building_guid = 62) LocalObject(340, Door.Constructor(Vector3(3318f, 5916f, 56.417f)), owning_building_guid = 62) @@ -1995,12 +5819,42 @@ object Map02 { // Hossin LocalObject(343, Door.Constructor(Vector3(3318f, 5932f, 56.417f)), owning_building_guid = 62) LocalObject(2378, Door.Constructor(Vector3(3317.147f, 5912.794f, 16.233f)), owning_building_guid = 62) LocalObject(2379, Door.Constructor(Vector3(3317.147f, 5929.204f, 16.233f)), owning_building_guid = 62) - LocalObject(895, IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 26.358f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 341) - LocalObject(896, IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 36.358f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 342) - LocalObject(897, IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 56.358f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 343) - LocalObject(898, IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 26.358f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 338) - LocalObject(899, IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 36.358f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 339) - LocalObject(900, IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 56.358f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 340) + LocalObject( + 895, + IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 26.358f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 341 + ) + LocalObject( + 896, + IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 36.358f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 342 + ) + LocalObject( + 897, + IFFLock.Constructor(Vector3(3315.957f, 5932.811f, 56.358f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 343 + ) + LocalObject( + 898, + IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 26.358f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 338 + ) + LocalObject( + 899, + IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 36.358f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 339 + ) + LocalObject( + 900, + IFFLock.Constructor(Vector3(3320.047f, 5915.189f, 56.358f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 340 + ) LocalObject(1133, Locker.Constructor(Vector3(3321.716f, 5908.963f, 14.891f)), owning_building_guid = 62) LocalObject(1134, Locker.Constructor(Vector3(3321.751f, 5930.835f, 14.891f)), owning_building_guid = 62) LocalObject(1135, Locker.Constructor(Vector3(3323.053f, 5908.963f, 14.891f)), owning_building_guid = 62) @@ -2009,21 +5863,64 @@ object Map02 { // Hossin LocalObject(1138, Locker.Constructor(Vector3(3325.741f, 5930.835f, 14.891f)), owning_building_guid = 62) LocalObject(1139, Locker.Constructor(Vector3(3327.143f, 5908.963f, 14.891f)), owning_building_guid = 62) LocalObject(1140, Locker.Constructor(Vector3(3327.143f, 5930.835f, 14.891f)), owning_building_guid = 62) - LocalObject(1610, Terminal.Constructor(Vector3(3327.446f, 5914.129f, 16.229f), order_terminal), owning_building_guid = 62) - LocalObject(1611, Terminal.Constructor(Vector3(3327.446f, 5919.853f, 16.229f), order_terminal), owning_building_guid = 62) - LocalObject(1612, Terminal.Constructor(Vector3(3327.446f, 5925.234f, 16.229f), order_terminal), owning_building_guid = 62) - LocalObject(2198, SpawnTube.Constructor(Vector3(3316.706f, 5911.742f, 14.379f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2199, SpawnTube.Constructor(Vector3(3316.706f, 5928.152f, 14.379f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2028, Painbox.Constructor(Vector3(3311.493f, 5916.849f, 16.1864f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2029, Painbox.Constructor(Vector3(3323.127f, 5914.078f, 14.997f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2030, Painbox.Constructor(Vector3(3323.259f, 5926.107f, 14.997f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 1610, + Terminal.Constructor(Vector3(3327.446f, 5914.129f, 16.229f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1611, + Terminal.Constructor(Vector3(3327.446f, 5919.853f, 16.229f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1612, + Terminal.Constructor(Vector3(3327.446f, 5925.234f, 16.229f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2198, + SpawnTube.Constructor(Vector3(3316.706f, 5911.742f, 14.379f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2199, + SpawnTube.Constructor(Vector3(3316.706f, 5928.152f, 14.379f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2028, + Painbox.Constructor(Vector3(3311.493f, 5916.849f, 16.1864f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2029, + Painbox.Constructor(Vector3(3323.127f, 5914.078f, 14.997f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2030, + Painbox.Constructor(Vector3(3323.259f, 5926.107f, 14.997f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building22() def Building22(): Unit = { // Name: SW_Solsar_Warpgate_Tower Type: tower_b GUID: 63, MapID: 22 - LocalBuilding("SW_Solsar_Warpgate_Tower", 63, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4494f, 4096f, 26.09943f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2274, CaptureTerminal.Constructor(Vector3(4510.587f, 4095.897f, 46.09843f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "SW_Solsar_Warpgate_Tower", + 63, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4494f, 4096f, 26.09943f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2274, + CaptureTerminal.Constructor(Vector3(4510.587f, 4095.897f, 46.09843f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(438, Door.Constructor(Vector3(4506f, 4088f, 27.61943f)), owning_building_guid = 63) LocalObject(439, Door.Constructor(Vector3(4506f, 4088f, 37.61943f)), owning_building_guid = 63) LocalObject(440, Door.Constructor(Vector3(4506f, 4088f, 57.61943f)), owning_building_guid = 63) @@ -2032,12 +5929,42 @@ object Map02 { // Hossin LocalObject(443, Door.Constructor(Vector3(4506f, 4104f, 57.61943f)), owning_building_guid = 63) LocalObject(2409, Door.Constructor(Vector3(4505.147f, 4084.794f, 17.43543f)), owning_building_guid = 63) LocalObject(2410, Door.Constructor(Vector3(4505.147f, 4101.204f, 17.43543f)), owning_building_guid = 63) - LocalObject(974, IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 27.56043f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 441) - LocalObject(975, IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 37.56043f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 442) - LocalObject(976, IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 57.56043f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 443) - LocalObject(977, IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 27.56043f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 438) - LocalObject(978, IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 37.56043f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 439) - LocalObject(979, IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 57.56043f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 440) + LocalObject( + 974, + IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 27.56043f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 441 + ) + LocalObject( + 975, + IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 37.56043f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 442 + ) + LocalObject( + 976, + IFFLock.Constructor(Vector3(4503.957f, 4104.811f, 57.56043f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 443 + ) + LocalObject( + 977, + IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 27.56043f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 438 + ) + LocalObject( + 978, + IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 37.56043f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 439 + ) + LocalObject( + 979, + IFFLock.Constructor(Vector3(4508.047f, 4087.189f, 57.56043f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 440 + ) LocalObject(1263, Locker.Constructor(Vector3(4509.716f, 4080.963f, 16.09343f)), owning_building_guid = 63) LocalObject(1264, Locker.Constructor(Vector3(4509.751f, 4102.835f, 16.09343f)), owning_building_guid = 63) LocalObject(1265, Locker.Constructor(Vector3(4511.053f, 4080.963f, 16.09343f)), owning_building_guid = 63) @@ -2046,21 +5973,64 @@ object Map02 { // Hossin LocalObject(1270, Locker.Constructor(Vector3(4513.741f, 4102.835f, 16.09343f)), owning_building_guid = 63) LocalObject(1275, Locker.Constructor(Vector3(4515.143f, 4080.963f, 16.09343f)), owning_building_guid = 63) LocalObject(1276, Locker.Constructor(Vector3(4515.143f, 4102.835f, 16.09343f)), owning_building_guid = 63) - LocalObject(1659, Terminal.Constructor(Vector3(4515.446f, 4086.129f, 17.43143f), order_terminal), owning_building_guid = 63) - LocalObject(1660, Terminal.Constructor(Vector3(4515.446f, 4091.853f, 17.43143f), order_terminal), owning_building_guid = 63) - LocalObject(1661, Terminal.Constructor(Vector3(4515.446f, 4097.234f, 17.43143f), order_terminal), owning_building_guid = 63) - LocalObject(2229, SpawnTube.Constructor(Vector3(4504.706f, 4083.742f, 15.58143f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2230, SpawnTube.Constructor(Vector3(4504.706f, 4100.152f, 15.58143f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2052, Painbox.Constructor(Vector3(4499.493f, 4088.849f, 17.38883f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2053, Painbox.Constructor(Vector3(4511.127f, 4086.078f, 16.19943f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2054, Painbox.Constructor(Vector3(4511.259f, 4098.107f, 16.19943f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 1659, + Terminal.Constructor(Vector3(4515.446f, 4086.129f, 17.43143f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1660, + Terminal.Constructor(Vector3(4515.446f, 4091.853f, 17.43143f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1661, + Terminal.Constructor(Vector3(4515.446f, 4097.234f, 17.43143f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2229, + SpawnTube.Constructor(Vector3(4504.706f, 4083.742f, 15.58143f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2230, + SpawnTube.Constructor(Vector3(4504.706f, 4100.152f, 15.58143f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2052, + Painbox.Constructor(Vector3(4499.493f, 4088.849f, 17.38883f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2053, + Painbox.Constructor(Vector3(4511.127f, 4086.078f, 16.19943f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2054, + Painbox.Constructor(Vector3(4511.259f, 4098.107f, 16.19943f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building42() def Building42(): Unit = { // Name: Voltan_Tower Type: tower_b GUID: 64, MapID: 42 - LocalBuilding("Voltan_Tower", 64, 42, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4780f, 3522f, 21.20083f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2276, CaptureTerminal.Constructor(Vector3(4796.587f, 3521.897f, 41.19983f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "Voltan_Tower", + 64, + 42, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4780f, 3522f, 21.20083f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2276, + CaptureTerminal.Constructor(Vector3(4796.587f, 3521.897f, 41.19983f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(457, Door.Constructor(Vector3(4792f, 3514f, 22.72083f)), owning_building_guid = 64) LocalObject(458, Door.Constructor(Vector3(4792f, 3514f, 32.72083f)), owning_building_guid = 64) LocalObject(459, Door.Constructor(Vector3(4792f, 3514f, 52.72083f)), owning_building_guid = 64) @@ -2069,12 +6039,42 @@ object Map02 { // Hossin LocalObject(462, Door.Constructor(Vector3(4792f, 3530f, 52.72083f)), owning_building_guid = 64) LocalObject(2416, Door.Constructor(Vector3(4791.147f, 3510.794f, 12.53683f)), owning_building_guid = 64) LocalObject(2417, Door.Constructor(Vector3(4791.147f, 3527.204f, 12.53683f)), owning_building_guid = 64) - LocalObject(991, IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 22.66183f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 460) - LocalObject(992, IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 32.66183f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 461) - LocalObject(993, IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 52.66183f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 462) - LocalObject(994, IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 22.66183f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 457) - LocalObject(995, IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 32.66183f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 458) - LocalObject(996, IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 52.66183f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 459) + LocalObject( + 991, + IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 22.66183f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 460 + ) + LocalObject( + 992, + IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 32.66183f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 461 + ) + LocalObject( + 993, + IFFLock.Constructor(Vector3(4789.957f, 3530.811f, 52.66183f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 462 + ) + LocalObject( + 994, + IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 22.66183f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 457 + ) + LocalObject( + 995, + IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 32.66183f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 458 + ) + LocalObject( + 996, + IFFLock.Constructor(Vector3(4794.047f, 3513.189f, 52.66183f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 459 + ) LocalObject(1303, Locker.Constructor(Vector3(4795.716f, 3506.963f, 11.19483f)), owning_building_guid = 64) LocalObject(1304, Locker.Constructor(Vector3(4795.751f, 3528.835f, 11.19483f)), owning_building_guid = 64) LocalObject(1305, Locker.Constructor(Vector3(4797.053f, 3506.963f, 11.19483f)), owning_building_guid = 64) @@ -2083,21 +6083,64 @@ object Map02 { // Hossin LocalObject(1308, Locker.Constructor(Vector3(4799.741f, 3528.835f, 11.19483f)), owning_building_guid = 64) LocalObject(1309, Locker.Constructor(Vector3(4801.143f, 3506.963f, 11.19483f)), owning_building_guid = 64) LocalObject(1310, Locker.Constructor(Vector3(4801.143f, 3528.835f, 11.19483f)), owning_building_guid = 64) - LocalObject(1668, Terminal.Constructor(Vector3(4801.446f, 3512.129f, 12.53283f), order_terminal), owning_building_guid = 64) - LocalObject(1669, Terminal.Constructor(Vector3(4801.446f, 3517.853f, 12.53283f), order_terminal), owning_building_guid = 64) - LocalObject(1670, Terminal.Constructor(Vector3(4801.446f, 3523.234f, 12.53283f), order_terminal), owning_building_guid = 64) - LocalObject(2236, SpawnTube.Constructor(Vector3(4790.706f, 3509.742f, 10.68283f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2237, SpawnTube.Constructor(Vector3(4790.706f, 3526.152f, 10.68283f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2058, Painbox.Constructor(Vector3(4785.493f, 3514.849f, 12.49023f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2059, Painbox.Constructor(Vector3(4797.127f, 3512.078f, 11.30083f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2060, Painbox.Constructor(Vector3(4797.259f, 3524.107f, 11.30083f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 1668, + Terminal.Constructor(Vector3(4801.446f, 3512.129f, 12.53283f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1669, + Terminal.Constructor(Vector3(4801.446f, 3517.853f, 12.53283f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1670, + Terminal.Constructor(Vector3(4801.446f, 3523.234f, 12.53283f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2236, + SpawnTube.Constructor(Vector3(4790.706f, 3509.742f, 10.68283f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2237, + SpawnTube.Constructor(Vector3(4790.706f, 3526.152f, 10.68283f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2058, + Painbox.Constructor(Vector3(4785.493f, 3514.849f, 12.49023f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2059, + Painbox.Constructor(Vector3(4797.127f, 3512.078f, 11.30083f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2060, + Painbox.Constructor(Vector3(4797.259f, 3524.107f, 11.30083f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building24() def Building24(): Unit = { // Name: NE_Mulac_Tower Type: tower_b GUID: 65, MapID: 24 - LocalBuilding("NE_Mulac_Tower", 65, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5784f, 3474f, 24.29884f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2280, CaptureTerminal.Constructor(Vector3(5800.587f, 3473.897f, 44.29784f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "NE_Mulac_Tower", + 65, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5784f, 3474f, 24.29884f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2280, + CaptureTerminal.Constructor(Vector3(5800.587f, 3473.897f, 44.29784f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(510, Door.Constructor(Vector3(5796f, 3466f, 25.81884f)), owning_building_guid = 65) LocalObject(511, Door.Constructor(Vector3(5796f, 3466f, 35.81884f)), owning_building_guid = 65) LocalObject(512, Door.Constructor(Vector3(5796f, 3466f, 55.81884f)), owning_building_guid = 65) @@ -2106,12 +6149,42 @@ object Map02 { // Hossin LocalObject(515, Door.Constructor(Vector3(5796f, 3482f, 55.81884f)), owning_building_guid = 65) LocalObject(2430, Door.Constructor(Vector3(5795.147f, 3462.794f, 15.63484f)), owning_building_guid = 65) LocalObject(2431, Door.Constructor(Vector3(5795.147f, 3479.204f, 15.63484f)), owning_building_guid = 65) - LocalObject(1031, IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 25.75984f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 513) - LocalObject(1032, IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 35.75984f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 514) - LocalObject(1033, IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 55.75984f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 515) - LocalObject(1034, IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 25.75984f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 510) - LocalObject(1035, IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 35.75984f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 511) - LocalObject(1036, IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 55.75984f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 512) + LocalObject( + 1031, + IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 25.75984f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 513 + ) + LocalObject( + 1032, + IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 35.75984f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 514 + ) + LocalObject( + 1033, + IFFLock.Constructor(Vector3(5793.957f, 3482.811f, 55.75984f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 515 + ) + LocalObject( + 1034, + IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 25.75984f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 510 + ) + LocalObject( + 1035, + IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 35.75984f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 511 + ) + LocalObject( + 1036, + IFFLock.Constructor(Vector3(5798.047f, 3465.189f, 55.75984f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 512 + ) LocalObject(1359, Locker.Constructor(Vector3(5799.716f, 3458.963f, 14.29284f)), owning_building_guid = 65) LocalObject(1360, Locker.Constructor(Vector3(5799.751f, 3480.835f, 14.29284f)), owning_building_guid = 65) LocalObject(1361, Locker.Constructor(Vector3(5801.053f, 3458.963f, 14.29284f)), owning_building_guid = 65) @@ -2120,31 +6193,94 @@ object Map02 { // Hossin LocalObject(1364, Locker.Constructor(Vector3(5803.741f, 3480.835f, 14.29284f)), owning_building_guid = 65) LocalObject(1365, Locker.Constructor(Vector3(5805.143f, 3458.963f, 14.29284f)), owning_building_guid = 65) LocalObject(1366, Locker.Constructor(Vector3(5805.143f, 3480.835f, 14.29284f)), owning_building_guid = 65) - LocalObject(1692, Terminal.Constructor(Vector3(5805.446f, 3464.129f, 15.63084f), order_terminal), owning_building_guid = 65) - LocalObject(1693, Terminal.Constructor(Vector3(5805.446f, 3469.853f, 15.63084f), order_terminal), owning_building_guid = 65) - LocalObject(1694, Terminal.Constructor(Vector3(5805.446f, 3475.234f, 15.63084f), order_terminal), owning_building_guid = 65) - LocalObject(2250, SpawnTube.Constructor(Vector3(5794.706f, 3461.742f, 13.78084f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2251, SpawnTube.Constructor(Vector3(5794.706f, 3478.152f, 13.78084f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2070, Painbox.Constructor(Vector3(5789.493f, 3466.849f, 15.58824f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2071, Painbox.Constructor(Vector3(5801.127f, 3464.078f, 14.39884f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2072, Painbox.Constructor(Vector3(5801.259f, 3476.107f, 14.39884f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 1692, + Terminal.Constructor(Vector3(5805.446f, 3464.129f, 15.63084f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1693, + Terminal.Constructor(Vector3(5805.446f, 3469.853f, 15.63084f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1694, + Terminal.Constructor(Vector3(5805.446f, 3475.234f, 15.63084f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2250, + SpawnTube.Constructor(Vector3(5794.706f, 3461.742f, 13.78084f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2251, + SpawnTube.Constructor(Vector3(5794.706f, 3478.152f, 13.78084f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2070, + Painbox.Constructor(Vector3(5789.493f, 3466.849f, 15.58824f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2071, + Painbox.Constructor(Vector3(5801.127f, 3464.078f, 14.39884f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2072, + Painbox.Constructor(Vector3(5801.259f, 3476.107f, 14.39884f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building33() def Building33(): Unit = { // Name: SE_Ghanon_Tower Type: tower_c GUID: 66, MapID: 33 - LocalBuilding("SE_Ghanon_Tower", 66, 33, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2638f, 3496f, 35.68224f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2263, CaptureTerminal.Constructor(Vector3(2654.587f, 3495.897f, 45.68124f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "SE_Ghanon_Tower", + 66, + 33, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2638f, 3496f, 35.68224f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2263, + CaptureTerminal.Constructor(Vector3(2654.587f, 3495.897f, 45.68124f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(309, Door.Constructor(Vector3(2650f, 3488f, 37.20324f)), owning_building_guid = 66) LocalObject(310, Door.Constructor(Vector3(2650f, 3488f, 57.20224f)), owning_building_guid = 66) LocalObject(311, Door.Constructor(Vector3(2650f, 3504f, 37.20324f)), owning_building_guid = 66) LocalObject(312, Door.Constructor(Vector3(2650f, 3504f, 57.20224f)), owning_building_guid = 66) LocalObject(2372, Door.Constructor(Vector3(2649.146f, 3484.794f, 27.01824f)), owning_building_guid = 66) LocalObject(2373, Door.Constructor(Vector3(2649.146f, 3501.204f, 27.01824f)), owning_building_guid = 66) - LocalObject(874, IFFLock.Constructor(Vector3(2647.957f, 3504.811f, 37.14324f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 311) - LocalObject(875, IFFLock.Constructor(Vector3(2647.957f, 3504.811f, 57.14324f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 312) - LocalObject(876, IFFLock.Constructor(Vector3(2652.047f, 3487.189f, 37.14324f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 309) - LocalObject(877, IFFLock.Constructor(Vector3(2652.047f, 3487.189f, 57.14324f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 310) + LocalObject( + 874, + IFFLock.Constructor(Vector3(2647.957f, 3504.811f, 37.14324f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 311 + ) + LocalObject( + 875, + IFFLock.Constructor(Vector3(2647.957f, 3504.811f, 57.14324f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 312 + ) + LocalObject( + 876, + IFFLock.Constructor(Vector3(2652.047f, 3487.189f, 37.14324f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 309 + ) + LocalObject( + 877, + IFFLock.Constructor(Vector3(2652.047f, 3487.189f, 57.14324f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 310 + ) LocalObject(1109, Locker.Constructor(Vector3(2653.716f, 3480.963f, 25.67624f)), owning_building_guid = 66) LocalObject(1110, Locker.Constructor(Vector3(2653.751f, 3502.835f, 25.67624f)), owning_building_guid = 66) LocalObject(1111, Locker.Constructor(Vector3(2655.053f, 3480.963f, 25.67624f)), owning_building_guid = 66) @@ -2153,39 +6289,126 @@ object Map02 { // Hossin LocalObject(1114, Locker.Constructor(Vector3(2657.741f, 3502.835f, 25.67624f)), owning_building_guid = 66) LocalObject(1115, Locker.Constructor(Vector3(2659.143f, 3480.963f, 25.67624f)), owning_building_guid = 66) LocalObject(1116, Locker.Constructor(Vector3(2659.143f, 3502.835f, 25.67624f)), owning_building_guid = 66) - LocalObject(1597, Terminal.Constructor(Vector3(2659.445f, 3486.129f, 27.01424f), order_terminal), owning_building_guid = 66) - LocalObject(1598, Terminal.Constructor(Vector3(2659.445f, 3491.853f, 27.01424f), order_terminal), owning_building_guid = 66) - LocalObject(1599, Terminal.Constructor(Vector3(2659.445f, 3497.234f, 27.01424f), order_terminal), owning_building_guid = 66) - LocalObject(2192, SpawnTube.Constructor(Vector3(2648.706f, 3483.742f, 25.16424f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2193, SpawnTube.Constructor(Vector3(2648.706f, 3500.152f, 25.16424f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(1887, ProximityTerminal.Constructor(Vector3(2636.907f, 3490.725f, 63.25224f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(1888, Terminal.Constructor(Vector3(2636.907f, 3490.725f, 63.25224f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(1890, ProximityTerminal.Constructor(Vector3(2636.907f, 3501.17f, 63.25224f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(1891, Terminal.Constructor(Vector3(2636.907f, 3501.17f, 63.25224f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(1457, FacilityTurret.Constructor(Vector3(2623.07f, 3481.045f, 54.62424f), manned_turret), owning_building_guid = 66) + LocalObject( + 1597, + Terminal.Constructor(Vector3(2659.445f, 3486.129f, 27.01424f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1598, + Terminal.Constructor(Vector3(2659.445f, 3491.853f, 27.01424f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1599, + Terminal.Constructor(Vector3(2659.445f, 3497.234f, 27.01424f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2192, + SpawnTube.Constructor(Vector3(2648.706f, 3483.742f, 25.16424f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2193, + SpawnTube.Constructor(Vector3(2648.706f, 3500.152f, 25.16424f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 1887, + ProximityTerminal.Constructor(Vector3(2636.907f, 3490.725f, 63.25224f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 1888, + Terminal.Constructor(Vector3(2636.907f, 3490.725f, 63.25224f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1890, + ProximityTerminal.Constructor(Vector3(2636.907f, 3501.17f, 63.25224f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 1891, + Terminal.Constructor(Vector3(2636.907f, 3501.17f, 63.25224f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1457, + FacilityTurret.Constructor(Vector3(2623.07f, 3481.045f, 54.62424f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1457, 5081) - LocalObject(1458, FacilityTurret.Constructor(Vector3(2661.497f, 3510.957f, 54.62424f), manned_turret), owning_building_guid = 66) + LocalObject( + 1458, + FacilityTurret.Constructor(Vector3(2661.497f, 3510.957f, 54.62424f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1458, 5082) - LocalObject(2019, Painbox.Constructor(Vector3(2642.454f, 3488.849f, 27.70174f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2020, Painbox.Constructor(Vector3(2654.923f, 3485.54f, 25.78224f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2021, Painbox.Constructor(Vector3(2655.113f, 3498.022f, 25.78224f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 2019, + Painbox.Constructor(Vector3(2642.454f, 3488.849f, 27.70174f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2020, + Painbox.Constructor(Vector3(2654.923f, 3485.54f, 25.78224f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2021, + Painbox.Constructor(Vector3(2655.113f, 3498.022f, 25.78224f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building29() def Building29(): Unit = { // Name: NE_Oshur_Warpgate_Tower Type: tower_c GUID: 67, MapID: 29 - LocalBuilding("NE_Oshur_Warpgate_Tower", 67, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3434f, 2144f, 25.65386f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2267, CaptureTerminal.Constructor(Vector3(3450.587f, 2143.897f, 35.65286f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "NE_Oshur_Warpgate_Tower", + 67, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3434f, 2144f, 25.65386f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2267, + CaptureTerminal.Constructor(Vector3(3450.587f, 2143.897f, 35.65286f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(366, Door.Constructor(Vector3(3446f, 2136f, 27.17486f)), owning_building_guid = 67) LocalObject(367, Door.Constructor(Vector3(3446f, 2136f, 47.17386f)), owning_building_guid = 67) LocalObject(368, Door.Constructor(Vector3(3446f, 2152f, 27.17486f)), owning_building_guid = 67) LocalObject(369, Door.Constructor(Vector3(3446f, 2152f, 47.17386f)), owning_building_guid = 67) LocalObject(2386, Door.Constructor(Vector3(3445.146f, 2132.794f, 16.98986f)), owning_building_guid = 67) LocalObject(2387, Door.Constructor(Vector3(3445.146f, 2149.204f, 16.98986f)), owning_building_guid = 67) - LocalObject(919, IFFLock.Constructor(Vector3(3443.957f, 2152.811f, 27.11486f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 368) - LocalObject(920, IFFLock.Constructor(Vector3(3443.957f, 2152.811f, 47.11486f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 369) - LocalObject(921, IFFLock.Constructor(Vector3(3448.047f, 2135.189f, 27.11486f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 366) - LocalObject(922, IFFLock.Constructor(Vector3(3448.047f, 2135.189f, 47.11486f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 367) + LocalObject( + 919, + IFFLock.Constructor(Vector3(3443.957f, 2152.811f, 27.11486f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 368 + ) + LocalObject( + 920, + IFFLock.Constructor(Vector3(3443.957f, 2152.811f, 47.11486f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 369 + ) + LocalObject( + 921, + IFFLock.Constructor(Vector3(3448.047f, 2135.189f, 27.11486f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 366 + ) + LocalObject( + 922, + IFFLock.Constructor(Vector3(3448.047f, 2135.189f, 47.11486f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 367 + ) LocalObject(1165, Locker.Constructor(Vector3(3449.716f, 2128.963f, 15.64786f)), owning_building_guid = 67) LocalObject(1166, Locker.Constructor(Vector3(3449.751f, 2150.835f, 15.64786f)), owning_building_guid = 67) LocalObject(1167, Locker.Constructor(Vector3(3451.053f, 2128.963f, 15.64786f)), owning_building_guid = 67) @@ -2194,39 +6417,126 @@ object Map02 { // Hossin LocalObject(1170, Locker.Constructor(Vector3(3453.741f, 2150.835f, 15.64786f)), owning_building_guid = 67) LocalObject(1171, Locker.Constructor(Vector3(3455.143f, 2128.963f, 15.64786f)), owning_building_guid = 67) LocalObject(1172, Locker.Constructor(Vector3(3455.143f, 2150.835f, 15.64786f)), owning_building_guid = 67) - LocalObject(1622, Terminal.Constructor(Vector3(3455.445f, 2134.129f, 16.98586f), order_terminal), owning_building_guid = 67) - LocalObject(1623, Terminal.Constructor(Vector3(3455.445f, 2139.853f, 16.98586f), order_terminal), owning_building_guid = 67) - LocalObject(1624, Terminal.Constructor(Vector3(3455.445f, 2145.234f, 16.98586f), order_terminal), owning_building_guid = 67) - LocalObject(2206, SpawnTube.Constructor(Vector3(3444.706f, 2131.742f, 15.13586f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2207, SpawnTube.Constructor(Vector3(3444.706f, 2148.152f, 15.13586f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(1893, ProximityTerminal.Constructor(Vector3(3432.907f, 2138.725f, 53.22386f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(1894, Terminal.Constructor(Vector3(3432.907f, 2138.725f, 53.22386f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(1896, ProximityTerminal.Constructor(Vector3(3432.907f, 2149.17f, 53.22386f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(1897, Terminal.Constructor(Vector3(3432.907f, 2149.17f, 53.22386f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(1471, FacilityTurret.Constructor(Vector3(3419.07f, 2129.045f, 44.59586f), manned_turret), owning_building_guid = 67) + LocalObject( + 1622, + Terminal.Constructor(Vector3(3455.445f, 2134.129f, 16.98586f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1623, + Terminal.Constructor(Vector3(3455.445f, 2139.853f, 16.98586f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1624, + Terminal.Constructor(Vector3(3455.445f, 2145.234f, 16.98586f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2206, + SpawnTube.Constructor(Vector3(3444.706f, 2131.742f, 15.13586f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2207, + SpawnTube.Constructor(Vector3(3444.706f, 2148.152f, 15.13586f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 1893, + ProximityTerminal.Constructor(Vector3(3432.907f, 2138.725f, 53.22386f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 1894, + Terminal.Constructor(Vector3(3432.907f, 2138.725f, 53.22386f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1896, + ProximityTerminal.Constructor(Vector3(3432.907f, 2149.17f, 53.22386f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 1897, + Terminal.Constructor(Vector3(3432.907f, 2149.17f, 53.22386f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1471, + FacilityTurret.Constructor(Vector3(3419.07f, 2129.045f, 44.59586f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1471, 5083) - LocalObject(1473, FacilityTurret.Constructor(Vector3(3457.497f, 2158.957f, 44.59586f), manned_turret), owning_building_guid = 67) + LocalObject( + 1473, + FacilityTurret.Constructor(Vector3(3457.497f, 2158.957f, 44.59586f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1473, 5084) - LocalObject(2031, Painbox.Constructor(Vector3(3438.454f, 2136.849f, 17.67336f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2032, Painbox.Constructor(Vector3(3450.923f, 2133.54f, 15.75386f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2033, Painbox.Constructor(Vector3(3451.113f, 2146.022f, 15.75386f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 2031, + Painbox.Constructor(Vector3(3438.454f, 2136.849f, 17.67336f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2032, + Painbox.Constructor(Vector3(3450.923f, 2133.54f, 15.75386f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2033, + Painbox.Constructor(Vector3(3451.113f, 2146.022f, 15.75386f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building18() def Building18(): Unit = { // Name: SE_Naum_Tower Type: tower_c GUID: 68, MapID: 18 - LocalBuilding("SE_Naum_Tower", 68, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3456f, 5278f, 21.2775f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2268, CaptureTerminal.Constructor(Vector3(3472.587f, 5277.897f, 31.2765f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "SE_Naum_Tower", + 68, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3456f, 5278f, 21.2775f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2268, + CaptureTerminal.Constructor(Vector3(3472.587f, 5277.897f, 31.2765f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(373, Door.Constructor(Vector3(3468f, 5270f, 22.7985f)), owning_building_guid = 68) LocalObject(374, Door.Constructor(Vector3(3468f, 5270f, 42.7975f)), owning_building_guid = 68) LocalObject(375, Door.Constructor(Vector3(3468f, 5286f, 22.7985f)), owning_building_guid = 68) LocalObject(376, Door.Constructor(Vector3(3468f, 5286f, 42.7975f)), owning_building_guid = 68) LocalObject(2388, Door.Constructor(Vector3(3467.146f, 5266.794f, 12.6135f)), owning_building_guid = 68) LocalObject(2389, Door.Constructor(Vector3(3467.146f, 5283.204f, 12.6135f)), owning_building_guid = 68) - LocalObject(923, IFFLock.Constructor(Vector3(3465.957f, 5286.811f, 22.7385f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 375) - LocalObject(924, IFFLock.Constructor(Vector3(3465.957f, 5286.811f, 42.7385f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 376) - LocalObject(925, IFFLock.Constructor(Vector3(3470.047f, 5269.189f, 22.7385f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 373) - LocalObject(926, IFFLock.Constructor(Vector3(3470.047f, 5269.189f, 42.7385f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 374) + LocalObject( + 923, + IFFLock.Constructor(Vector3(3465.957f, 5286.811f, 22.7385f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 375 + ) + LocalObject( + 924, + IFFLock.Constructor(Vector3(3465.957f, 5286.811f, 42.7385f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 376 + ) + LocalObject( + 925, + IFFLock.Constructor(Vector3(3470.047f, 5269.189f, 22.7385f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 373 + ) + LocalObject( + 926, + IFFLock.Constructor(Vector3(3470.047f, 5269.189f, 42.7385f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 374 + ) LocalObject(1173, Locker.Constructor(Vector3(3471.716f, 5262.963f, 11.2715f)), owning_building_guid = 68) LocalObject(1174, Locker.Constructor(Vector3(3471.751f, 5284.835f, 11.2715f)), owning_building_guid = 68) LocalObject(1175, Locker.Constructor(Vector3(3473.053f, 5262.963f, 11.2715f)), owning_building_guid = 68) @@ -2235,39 +6545,126 @@ object Map02 { // Hossin LocalObject(1178, Locker.Constructor(Vector3(3475.741f, 5284.835f, 11.2715f)), owning_building_guid = 68) LocalObject(1179, Locker.Constructor(Vector3(3477.143f, 5262.963f, 11.2715f)), owning_building_guid = 68) LocalObject(1180, Locker.Constructor(Vector3(3477.143f, 5284.835f, 11.2715f)), owning_building_guid = 68) - LocalObject(1625, Terminal.Constructor(Vector3(3477.445f, 5268.129f, 12.6095f), order_terminal), owning_building_guid = 68) - LocalObject(1626, Terminal.Constructor(Vector3(3477.445f, 5273.853f, 12.6095f), order_terminal), owning_building_guid = 68) - LocalObject(1627, Terminal.Constructor(Vector3(3477.445f, 5279.234f, 12.6095f), order_terminal), owning_building_guid = 68) - LocalObject(2208, SpawnTube.Constructor(Vector3(3466.706f, 5265.742f, 10.7595f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2209, SpawnTube.Constructor(Vector3(3466.706f, 5282.152f, 10.7595f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(1899, ProximityTerminal.Constructor(Vector3(3454.907f, 5272.725f, 48.8475f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(1900, Terminal.Constructor(Vector3(3454.907f, 5272.725f, 48.8475f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(1902, ProximityTerminal.Constructor(Vector3(3454.907f, 5283.17f, 48.8475f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(1903, Terminal.Constructor(Vector3(3454.907f, 5283.17f, 48.8475f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(1472, FacilityTurret.Constructor(Vector3(3441.07f, 5263.045f, 40.21951f), manned_turret), owning_building_guid = 68) + LocalObject( + 1625, + Terminal.Constructor(Vector3(3477.445f, 5268.129f, 12.6095f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1626, + Terminal.Constructor(Vector3(3477.445f, 5273.853f, 12.6095f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1627, + Terminal.Constructor(Vector3(3477.445f, 5279.234f, 12.6095f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2208, + SpawnTube.Constructor(Vector3(3466.706f, 5265.742f, 10.7595f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2209, + SpawnTube.Constructor(Vector3(3466.706f, 5282.152f, 10.7595f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 1899, + ProximityTerminal.Constructor(Vector3(3454.907f, 5272.725f, 48.8475f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 1900, + Terminal.Constructor(Vector3(3454.907f, 5272.725f, 48.8475f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1902, + ProximityTerminal.Constructor(Vector3(3454.907f, 5283.17f, 48.8475f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 1903, + Terminal.Constructor(Vector3(3454.907f, 5283.17f, 48.8475f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1472, + FacilityTurret.Constructor(Vector3(3441.07f, 5263.045f, 40.21951f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1472, 5085) - LocalObject(1475, FacilityTurret.Constructor(Vector3(3479.497f, 5292.957f, 40.21951f), manned_turret), owning_building_guid = 68) + LocalObject( + 1475, + FacilityTurret.Constructor(Vector3(3479.497f, 5292.957f, 40.21951f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1475, 5086) - LocalObject(2034, Painbox.Constructor(Vector3(3460.454f, 5270.849f, 13.297f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2035, Painbox.Constructor(Vector3(3472.923f, 5267.54f, 11.3775f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2036, Painbox.Constructor(Vector3(3473.113f, 5280.022f, 11.3775f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 2034, + Painbox.Constructor(Vector3(3460.454f, 5270.849f, 13.297f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2035, + Painbox.Constructor(Vector3(3472.923f, 5267.54f, 11.3775f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2036, + Painbox.Constructor(Vector3(3473.113f, 5280.022f, 11.3775f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building27() def Building27(): Unit = { // Name: SE_Oshur_Warpgate_Tower Type: tower_c GUID: 69, MapID: 27 - LocalBuilding("SE_Oshur_Warpgate_Tower", 69, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3716f, 1182f, 34.80941f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2270, CaptureTerminal.Constructor(Vector3(3732.587f, 1181.897f, 44.80841f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "SE_Oshur_Warpgate_Tower", + 69, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3716f, 1182f, 34.80941f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2270, + CaptureTerminal.Constructor(Vector3(3732.587f, 1181.897f, 44.80841f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(389, Door.Constructor(Vector3(3728f, 1174f, 36.33041f)), owning_building_guid = 69) LocalObject(390, Door.Constructor(Vector3(3728f, 1174f, 56.32941f)), owning_building_guid = 69) LocalObject(391, Door.Constructor(Vector3(3728f, 1190f, 36.33041f)), owning_building_guid = 69) LocalObject(392, Door.Constructor(Vector3(3728f, 1190f, 56.32941f)), owning_building_guid = 69) LocalObject(2395, Door.Constructor(Vector3(3727.146f, 1170.794f, 26.14541f)), owning_building_guid = 69) LocalObject(2396, Door.Constructor(Vector3(3727.146f, 1187.204f, 26.14541f)), owning_building_guid = 69) - LocalObject(938, IFFLock.Constructor(Vector3(3725.957f, 1190.811f, 36.27041f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 391) - LocalObject(939, IFFLock.Constructor(Vector3(3725.957f, 1190.811f, 56.27041f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 392) - LocalObject(940, IFFLock.Constructor(Vector3(3730.047f, 1173.189f, 36.27041f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 389) - LocalObject(941, IFFLock.Constructor(Vector3(3730.047f, 1173.189f, 56.27041f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 390) + LocalObject( + 938, + IFFLock.Constructor(Vector3(3725.957f, 1190.811f, 36.27041f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 391 + ) + LocalObject( + 939, + IFFLock.Constructor(Vector3(3725.957f, 1190.811f, 56.27041f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 392 + ) + LocalObject( + 940, + IFFLock.Constructor(Vector3(3730.047f, 1173.189f, 36.27041f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 389 + ) + LocalObject( + 941, + IFFLock.Constructor(Vector3(3730.047f, 1173.189f, 56.27041f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 390 + ) LocalObject(1210, Locker.Constructor(Vector3(3731.716f, 1166.963f, 24.80341f)), owning_building_guid = 69) LocalObject(1211, Locker.Constructor(Vector3(3731.751f, 1188.835f, 24.80341f)), owning_building_guid = 69) LocalObject(1212, Locker.Constructor(Vector3(3733.053f, 1166.963f, 24.80341f)), owning_building_guid = 69) @@ -2276,39 +6673,126 @@ object Map02 { // Hossin LocalObject(1215, Locker.Constructor(Vector3(3735.741f, 1188.835f, 24.80341f)), owning_building_guid = 69) LocalObject(1216, Locker.Constructor(Vector3(3737.143f, 1166.963f, 24.80341f)), owning_building_guid = 69) LocalObject(1217, Locker.Constructor(Vector3(3737.143f, 1188.835f, 24.80341f)), owning_building_guid = 69) - LocalObject(1635, Terminal.Constructor(Vector3(3737.445f, 1172.129f, 26.14141f), order_terminal), owning_building_guid = 69) - LocalObject(1636, Terminal.Constructor(Vector3(3737.445f, 1177.853f, 26.14141f), order_terminal), owning_building_guid = 69) - LocalObject(1637, Terminal.Constructor(Vector3(3737.445f, 1183.234f, 26.14141f), order_terminal), owning_building_guid = 69) - LocalObject(2215, SpawnTube.Constructor(Vector3(3726.706f, 1169.742f, 24.29141f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2216, SpawnTube.Constructor(Vector3(3726.706f, 1186.152f, 24.29141f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(1905, ProximityTerminal.Constructor(Vector3(3714.907f, 1176.725f, 62.37941f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(1906, Terminal.Constructor(Vector3(3714.907f, 1176.725f, 62.37941f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(1908, ProximityTerminal.Constructor(Vector3(3714.907f, 1187.17f, 62.37941f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(1909, Terminal.Constructor(Vector3(3714.907f, 1187.17f, 62.37941f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(1482, FacilityTurret.Constructor(Vector3(3701.07f, 1167.045f, 53.75141f), manned_turret), owning_building_guid = 69) + LocalObject( + 1635, + Terminal.Constructor(Vector3(3737.445f, 1172.129f, 26.14141f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1636, + Terminal.Constructor(Vector3(3737.445f, 1177.853f, 26.14141f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1637, + Terminal.Constructor(Vector3(3737.445f, 1183.234f, 26.14141f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2215, + SpawnTube.Constructor(Vector3(3726.706f, 1169.742f, 24.29141f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2216, + SpawnTube.Constructor(Vector3(3726.706f, 1186.152f, 24.29141f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 1905, + ProximityTerminal.Constructor(Vector3(3714.907f, 1176.725f, 62.37941f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 1906, + Terminal.Constructor(Vector3(3714.907f, 1176.725f, 62.37941f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1908, + ProximityTerminal.Constructor(Vector3(3714.907f, 1187.17f, 62.37941f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 1909, + Terminal.Constructor(Vector3(3714.907f, 1187.17f, 62.37941f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1482, + FacilityTurret.Constructor(Vector3(3701.07f, 1167.045f, 53.75141f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1482, 5087) - LocalObject(1483, FacilityTurret.Constructor(Vector3(3739.497f, 1196.957f, 53.75141f), manned_turret), owning_building_guid = 69) + LocalObject( + 1483, + FacilityTurret.Constructor(Vector3(3739.497f, 1196.957f, 53.75141f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1483, 5088) - LocalObject(2040, Painbox.Constructor(Vector3(3720.454f, 1174.849f, 26.82891f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2041, Painbox.Constructor(Vector3(3732.923f, 1171.54f, 24.90941f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2042, Painbox.Constructor(Vector3(3733.113f, 1184.022f, 24.90941f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 2040, + Painbox.Constructor(Vector3(3720.454f, 1174.849f, 26.82891f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2041, + Painbox.Constructor(Vector3(3732.923f, 1171.54f, 24.90941f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2042, + Painbox.Constructor(Vector3(3733.113f, 1184.022f, 24.90941f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building20() def Building20(): Unit = { // Name: E_Chac_Tower Type: tower_c GUID: 70, MapID: 20 - LocalBuilding("E_Chac_Tower", 70, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4288f, 5776f, 26.28254f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2272, CaptureTerminal.Constructor(Vector3(4304.587f, 5775.897f, 36.28154f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "E_Chac_Tower", + 70, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4288f, 5776f, 26.28254f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2272, + CaptureTerminal.Constructor(Vector3(4304.587f, 5775.897f, 36.28154f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(412, Door.Constructor(Vector3(4300f, 5768f, 27.80354f)), owning_building_guid = 70) LocalObject(413, Door.Constructor(Vector3(4300f, 5768f, 47.80254f)), owning_building_guid = 70) LocalObject(414, Door.Constructor(Vector3(4300f, 5784f, 27.80354f)), owning_building_guid = 70) LocalObject(415, Door.Constructor(Vector3(4300f, 5784f, 47.80254f)), owning_building_guid = 70) LocalObject(2402, Door.Constructor(Vector3(4299.146f, 5764.794f, 17.61854f)), owning_building_guid = 70) LocalObject(2403, Door.Constructor(Vector3(4299.146f, 5781.204f, 17.61854f)), owning_building_guid = 70) - LocalObject(954, IFFLock.Constructor(Vector3(4297.957f, 5784.811f, 27.74354f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 414) - LocalObject(955, IFFLock.Constructor(Vector3(4297.957f, 5784.811f, 47.74354f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 415) - LocalObject(956, IFFLock.Constructor(Vector3(4302.047f, 5767.189f, 27.74354f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 412) - LocalObject(957, IFFLock.Constructor(Vector3(4302.047f, 5767.189f, 47.74354f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 413) + LocalObject( + 954, + IFFLock.Constructor(Vector3(4297.957f, 5784.811f, 27.74354f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 414 + ) + LocalObject( + 955, + IFFLock.Constructor(Vector3(4297.957f, 5784.811f, 47.74354f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 415 + ) + LocalObject( + 956, + IFFLock.Constructor(Vector3(4302.047f, 5767.189f, 27.74354f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 412 + ) + LocalObject( + 957, + IFFLock.Constructor(Vector3(4302.047f, 5767.189f, 47.74354f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 413 + ) LocalObject(1238, Locker.Constructor(Vector3(4303.716f, 5760.963f, 16.27654f)), owning_building_guid = 70) LocalObject(1239, Locker.Constructor(Vector3(4303.751f, 5782.835f, 16.27654f)), owning_building_guid = 70) LocalObject(1240, Locker.Constructor(Vector3(4305.053f, 5760.963f, 16.27654f)), owning_building_guid = 70) @@ -2317,39 +6801,126 @@ object Map02 { // Hossin LocalObject(1243, Locker.Constructor(Vector3(4307.741f, 5782.835f, 16.27654f)), owning_building_guid = 70) LocalObject(1244, Locker.Constructor(Vector3(4309.143f, 5760.963f, 16.27654f)), owning_building_guid = 70) LocalObject(1245, Locker.Constructor(Vector3(4309.143f, 5782.835f, 16.27654f)), owning_building_guid = 70) - LocalObject(1645, Terminal.Constructor(Vector3(4309.445f, 5766.129f, 17.61454f), order_terminal), owning_building_guid = 70) - LocalObject(1646, Terminal.Constructor(Vector3(4309.445f, 5771.853f, 17.61454f), order_terminal), owning_building_guid = 70) - LocalObject(1647, Terminal.Constructor(Vector3(4309.445f, 5777.234f, 17.61454f), order_terminal), owning_building_guid = 70) - LocalObject(2222, SpawnTube.Constructor(Vector3(4298.706f, 5763.742f, 15.76454f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2223, SpawnTube.Constructor(Vector3(4298.706f, 5780.152f, 15.76454f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(1911, ProximityTerminal.Constructor(Vector3(4286.907f, 5770.725f, 53.85254f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(1912, Terminal.Constructor(Vector3(4286.907f, 5770.725f, 53.85254f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(1914, ProximityTerminal.Constructor(Vector3(4286.907f, 5781.17f, 53.85254f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(1915, Terminal.Constructor(Vector3(4286.907f, 5781.17f, 53.85254f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(1492, FacilityTurret.Constructor(Vector3(4273.07f, 5761.045f, 45.22454f), manned_turret), owning_building_guid = 70) + LocalObject( + 1645, + Terminal.Constructor(Vector3(4309.445f, 5766.129f, 17.61454f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1646, + Terminal.Constructor(Vector3(4309.445f, 5771.853f, 17.61454f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1647, + Terminal.Constructor(Vector3(4309.445f, 5777.234f, 17.61454f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2222, + SpawnTube.Constructor(Vector3(4298.706f, 5763.742f, 15.76454f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2223, + SpawnTube.Constructor(Vector3(4298.706f, 5780.152f, 15.76454f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 1911, + ProximityTerminal.Constructor(Vector3(4286.907f, 5770.725f, 53.85254f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 1912, + Terminal.Constructor(Vector3(4286.907f, 5770.725f, 53.85254f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1914, + ProximityTerminal.Constructor(Vector3(4286.907f, 5781.17f, 53.85254f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 1915, + Terminal.Constructor(Vector3(4286.907f, 5781.17f, 53.85254f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1492, + FacilityTurret.Constructor(Vector3(4273.07f, 5761.045f, 45.22454f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1492, 5089) - LocalObject(1493, FacilityTurret.Constructor(Vector3(4311.497f, 5790.957f, 45.22454f), manned_turret), owning_building_guid = 70) + LocalObject( + 1493, + FacilityTurret.Constructor(Vector3(4311.497f, 5790.957f, 45.22454f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1493, 5090) - LocalObject(2046, Painbox.Constructor(Vector3(4292.454f, 5768.849f, 18.30204f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2047, Painbox.Constructor(Vector3(4304.923f, 5765.54f, 16.38254f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2048, Painbox.Constructor(Vector3(4305.113f, 5778.022f, 16.38254f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 2046, + Painbox.Constructor(Vector3(4292.454f, 5768.849f, 18.30204f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2047, + Painbox.Constructor(Vector3(4304.923f, 5765.54f, 16.38254f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2048, + Painbox.Constructor(Vector3(4305.113f, 5778.022f, 16.38254f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building21() def Building21(): Unit = { // Name: NW_Solsar_Warpgate_Tower Type: tower_c GUID: 71, MapID: 21 - LocalBuilding("NW_Solsar_Warpgate_Tower", 71, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4480f, 4726f, 35.56017f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2273, CaptureTerminal.Constructor(Vector3(4496.587f, 4725.897f, 45.55917f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "NW_Solsar_Warpgate_Tower", + 71, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4480f, 4726f, 35.56017f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2273, + CaptureTerminal.Constructor(Vector3(4496.587f, 4725.897f, 45.55917f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(432, Door.Constructor(Vector3(4492f, 4718f, 37.08117f)), owning_building_guid = 71) LocalObject(433, Door.Constructor(Vector3(4492f, 4718f, 57.08017f)), owning_building_guid = 71) LocalObject(434, Door.Constructor(Vector3(4492f, 4734f, 37.08117f)), owning_building_guid = 71) LocalObject(435, Door.Constructor(Vector3(4492f, 4734f, 57.08017f)), owning_building_guid = 71) LocalObject(2407, Door.Constructor(Vector3(4491.146f, 4714.794f, 26.89617f)), owning_building_guid = 71) LocalObject(2408, Door.Constructor(Vector3(4491.146f, 4731.204f, 26.89617f)), owning_building_guid = 71) - LocalObject(966, IFFLock.Constructor(Vector3(4489.957f, 4734.811f, 37.02116f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 434) - LocalObject(967, IFFLock.Constructor(Vector3(4489.957f, 4734.811f, 57.02116f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 435) - LocalObject(971, IFFLock.Constructor(Vector3(4494.047f, 4717.189f, 37.02116f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 432) - LocalObject(972, IFFLock.Constructor(Vector3(4494.047f, 4717.189f, 57.02116f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 433) + LocalObject( + 966, + IFFLock.Constructor(Vector3(4489.957f, 4734.811f, 37.02116f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 434 + ) + LocalObject( + 967, + IFFLock.Constructor(Vector3(4489.957f, 4734.811f, 57.02116f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 435 + ) + LocalObject( + 971, + IFFLock.Constructor(Vector3(4494.047f, 4717.189f, 37.02116f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 432 + ) + LocalObject( + 972, + IFFLock.Constructor(Vector3(4494.047f, 4717.189f, 57.02116f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 433 + ) LocalObject(1247, Locker.Constructor(Vector3(4495.716f, 4710.963f, 25.55416f)), owning_building_guid = 71) LocalObject(1248, Locker.Constructor(Vector3(4495.751f, 4732.835f, 25.55416f)), owning_building_guid = 71) LocalObject(1250, Locker.Constructor(Vector3(4497.053f, 4710.963f, 25.55416f)), owning_building_guid = 71) @@ -2358,39 +6929,126 @@ object Map02 { // Hossin LocalObject(1255, Locker.Constructor(Vector3(4499.741f, 4732.835f, 25.55416f)), owning_building_guid = 71) LocalObject(1261, Locker.Constructor(Vector3(4501.143f, 4710.963f, 25.55416f)), owning_building_guid = 71) LocalObject(1262, Locker.Constructor(Vector3(4501.143f, 4732.835f, 25.55416f)), owning_building_guid = 71) - LocalObject(1656, Terminal.Constructor(Vector3(4501.445f, 4716.129f, 26.89217f), order_terminal), owning_building_guid = 71) - LocalObject(1657, Terminal.Constructor(Vector3(4501.445f, 4721.853f, 26.89217f), order_terminal), owning_building_guid = 71) - LocalObject(1658, Terminal.Constructor(Vector3(4501.445f, 4727.234f, 26.89217f), order_terminal), owning_building_guid = 71) - LocalObject(2227, SpawnTube.Constructor(Vector3(4490.706f, 4713.742f, 25.04217f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2228, SpawnTube.Constructor(Vector3(4490.706f, 4730.152f, 25.04217f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(1917, ProximityTerminal.Constructor(Vector3(4478.907f, 4720.725f, 63.13017f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(1918, Terminal.Constructor(Vector3(4478.907f, 4720.725f, 63.13017f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(1920, ProximityTerminal.Constructor(Vector3(4478.907f, 4731.17f, 63.13017f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(1921, Terminal.Constructor(Vector3(4478.907f, 4731.17f, 63.13017f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(1499, FacilityTurret.Constructor(Vector3(4465.07f, 4711.045f, 54.50217f), manned_turret), owning_building_guid = 71) + LocalObject( + 1656, + Terminal.Constructor(Vector3(4501.445f, 4716.129f, 26.89217f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1657, + Terminal.Constructor(Vector3(4501.445f, 4721.853f, 26.89217f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1658, + Terminal.Constructor(Vector3(4501.445f, 4727.234f, 26.89217f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2227, + SpawnTube.Constructor(Vector3(4490.706f, 4713.742f, 25.04217f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2228, + SpawnTube.Constructor(Vector3(4490.706f, 4730.152f, 25.04217f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 1917, + ProximityTerminal.Constructor(Vector3(4478.907f, 4720.725f, 63.13017f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 1918, + Terminal.Constructor(Vector3(4478.907f, 4720.725f, 63.13017f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1920, + ProximityTerminal.Constructor(Vector3(4478.907f, 4731.17f, 63.13017f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 1921, + Terminal.Constructor(Vector3(4478.907f, 4731.17f, 63.13017f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1499, + FacilityTurret.Constructor(Vector3(4465.07f, 4711.045f, 54.50217f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1499, 5091) - LocalObject(1501, FacilityTurret.Constructor(Vector3(4503.497f, 4740.957f, 54.50217f), manned_turret), owning_building_guid = 71) + LocalObject( + 1501, + FacilityTurret.Constructor(Vector3(4503.497f, 4740.957f, 54.50217f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1501, 5092) - LocalObject(2049, Painbox.Constructor(Vector3(4484.454f, 4718.849f, 27.57967f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2050, Painbox.Constructor(Vector3(4496.923f, 4715.54f, 25.66017f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2051, Painbox.Constructor(Vector3(4497.113f, 4728.022f, 25.66017f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 2049, + Painbox.Constructor(Vector3(4484.454f, 4718.849f, 27.57967f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2050, + Painbox.Constructor(Vector3(4496.923f, 4715.54f, 25.66017f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2051, + Painbox.Constructor(Vector3(4497.113f, 4728.022f, 25.66017f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building26() def Building26(): Unit = { // Name: E_Bitol_Tower Type: tower_c GUID: 72, MapID: 26 - LocalBuilding("E_Bitol_Tower", 72, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4702f, 2460f, 28.31507f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2275, CaptureTerminal.Constructor(Vector3(4718.587f, 2459.897f, 38.31407f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "E_Bitol_Tower", + 72, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4702f, 2460f, 28.31507f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2275, + CaptureTerminal.Constructor(Vector3(4718.587f, 2459.897f, 38.31407f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(453, Door.Constructor(Vector3(4714f, 2452f, 29.83607f)), owning_building_guid = 72) LocalObject(454, Door.Constructor(Vector3(4714f, 2452f, 49.83508f)), owning_building_guid = 72) LocalObject(455, Door.Constructor(Vector3(4714f, 2468f, 29.83607f)), owning_building_guid = 72) LocalObject(456, Door.Constructor(Vector3(4714f, 2468f, 49.83508f)), owning_building_guid = 72) LocalObject(2414, Door.Constructor(Vector3(4713.146f, 2448.794f, 19.65107f)), owning_building_guid = 72) LocalObject(2415, Door.Constructor(Vector3(4713.146f, 2465.204f, 19.65107f)), owning_building_guid = 72) - LocalObject(987, IFFLock.Constructor(Vector3(4711.957f, 2468.811f, 29.77607f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 455) - LocalObject(988, IFFLock.Constructor(Vector3(4711.957f, 2468.811f, 49.77607f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 456) - LocalObject(989, IFFLock.Constructor(Vector3(4716.047f, 2451.189f, 29.77607f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 453) - LocalObject(990, IFFLock.Constructor(Vector3(4716.047f, 2451.189f, 49.77607f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 454) + LocalObject( + 987, + IFFLock.Constructor(Vector3(4711.957f, 2468.811f, 29.77607f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 455 + ) + LocalObject( + 988, + IFFLock.Constructor(Vector3(4711.957f, 2468.811f, 49.77607f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 456 + ) + LocalObject( + 989, + IFFLock.Constructor(Vector3(4716.047f, 2451.189f, 29.77607f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 453 + ) + LocalObject( + 990, + IFFLock.Constructor(Vector3(4716.047f, 2451.189f, 49.77607f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 454 + ) LocalObject(1295, Locker.Constructor(Vector3(4717.716f, 2444.963f, 18.30907f)), owning_building_guid = 72) LocalObject(1296, Locker.Constructor(Vector3(4717.751f, 2466.835f, 18.30907f)), owning_building_guid = 72) LocalObject(1297, Locker.Constructor(Vector3(4719.053f, 2444.963f, 18.30907f)), owning_building_guid = 72) @@ -2399,39 +7057,126 @@ object Map02 { // Hossin LocalObject(1300, Locker.Constructor(Vector3(4721.741f, 2466.835f, 18.30907f)), owning_building_guid = 72) LocalObject(1301, Locker.Constructor(Vector3(4723.143f, 2444.963f, 18.30907f)), owning_building_guid = 72) LocalObject(1302, Locker.Constructor(Vector3(4723.143f, 2466.835f, 18.30907f)), owning_building_guid = 72) - LocalObject(1665, Terminal.Constructor(Vector3(4723.445f, 2450.129f, 19.64707f), order_terminal), owning_building_guid = 72) - LocalObject(1666, Terminal.Constructor(Vector3(4723.445f, 2455.853f, 19.64707f), order_terminal), owning_building_guid = 72) - LocalObject(1667, Terminal.Constructor(Vector3(4723.445f, 2461.234f, 19.64707f), order_terminal), owning_building_guid = 72) - LocalObject(2234, SpawnTube.Constructor(Vector3(4712.706f, 2447.742f, 17.79707f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2235, SpawnTube.Constructor(Vector3(4712.706f, 2464.152f, 17.79707f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(1923, ProximityTerminal.Constructor(Vector3(4700.907f, 2454.725f, 55.88507f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(1924, Terminal.Constructor(Vector3(4700.907f, 2454.725f, 55.88507f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(1926, ProximityTerminal.Constructor(Vector3(4700.907f, 2465.17f, 55.88507f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(1927, Terminal.Constructor(Vector3(4700.907f, 2465.17f, 55.88507f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(1507, FacilityTurret.Constructor(Vector3(4687.07f, 2445.045f, 47.25707f), manned_turret), owning_building_guid = 72) + LocalObject( + 1665, + Terminal.Constructor(Vector3(4723.445f, 2450.129f, 19.64707f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1666, + Terminal.Constructor(Vector3(4723.445f, 2455.853f, 19.64707f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1667, + Terminal.Constructor(Vector3(4723.445f, 2461.234f, 19.64707f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2234, + SpawnTube.Constructor(Vector3(4712.706f, 2447.742f, 17.79707f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2235, + SpawnTube.Constructor(Vector3(4712.706f, 2464.152f, 17.79707f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 1923, + ProximityTerminal.Constructor(Vector3(4700.907f, 2454.725f, 55.88507f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 1924, + Terminal.Constructor(Vector3(4700.907f, 2454.725f, 55.88507f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1926, + ProximityTerminal.Constructor(Vector3(4700.907f, 2465.17f, 55.88507f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 1927, + Terminal.Constructor(Vector3(4700.907f, 2465.17f, 55.88507f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1507, + FacilityTurret.Constructor(Vector3(4687.07f, 2445.045f, 47.25707f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1507, 5093) - LocalObject(1508, FacilityTurret.Constructor(Vector3(4725.497f, 2474.957f, 47.25707f), manned_turret), owning_building_guid = 72) + LocalObject( + 1508, + FacilityTurret.Constructor(Vector3(4725.497f, 2474.957f, 47.25707f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1508, 5094) - LocalObject(2055, Painbox.Constructor(Vector3(4706.454f, 2452.849f, 20.33457f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2056, Painbox.Constructor(Vector3(4718.923f, 2449.54f, 18.41507f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2057, Painbox.Constructor(Vector3(4719.113f, 2462.022f, 18.41507f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 2055, + Painbox.Constructor(Vector3(4706.454f, 2452.849f, 20.33457f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2056, + Painbox.Constructor(Vector3(4718.923f, 2449.54f, 18.41507f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2057, + Painbox.Constructor(Vector3(4719.113f, 2462.022f, 18.41507f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building25() def Building25(): Unit = { // Name: NW_Mulac_Tower Type: tower_c GUID: 73, MapID: 25 - LocalBuilding("NW_Mulac_Tower", 73, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5308f, 2976f, 27.19199f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2278, CaptureTerminal.Constructor(Vector3(5324.587f, 2975.897f, 37.19099f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "NW_Mulac_Tower", + 73, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5308f, 2976f, 27.19199f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2278, + CaptureTerminal.Constructor(Vector3(5324.587f, 2975.897f, 37.19099f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(467, Door.Constructor(Vector3(5320f, 2968f, 28.71299f)), owning_building_guid = 73) LocalObject(468, Door.Constructor(Vector3(5320f, 2968f, 48.71199f)), owning_building_guid = 73) LocalObject(469, Door.Constructor(Vector3(5320f, 2984f, 28.71299f)), owning_building_guid = 73) LocalObject(470, Door.Constructor(Vector3(5320f, 2984f, 48.71199f)), owning_building_guid = 73) LocalObject(2420, Door.Constructor(Vector3(5319.146f, 2964.794f, 18.52799f)), owning_building_guid = 73) LocalObject(2421, Door.Constructor(Vector3(5319.146f, 2981.204f, 18.52799f)), owning_building_guid = 73) - LocalObject(1001, IFFLock.Constructor(Vector3(5317.957f, 2984.811f, 28.65299f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 469) - LocalObject(1002, IFFLock.Constructor(Vector3(5317.957f, 2984.811f, 48.65299f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 470) - LocalObject(1003, IFFLock.Constructor(Vector3(5322.047f, 2967.189f, 28.65299f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 467) - LocalObject(1004, IFFLock.Constructor(Vector3(5322.047f, 2967.189f, 48.65299f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 468) + LocalObject( + 1001, + IFFLock.Constructor(Vector3(5317.957f, 2984.811f, 28.65299f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 469 + ) + LocalObject( + 1002, + IFFLock.Constructor(Vector3(5317.957f, 2984.811f, 48.65299f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 470 + ) + LocalObject( + 1003, + IFFLock.Constructor(Vector3(5322.047f, 2967.189f, 28.65299f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 467 + ) + LocalObject( + 1004, + IFFLock.Constructor(Vector3(5322.047f, 2967.189f, 48.65299f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 468 + ) LocalObject(1319, Locker.Constructor(Vector3(5323.716f, 2960.963f, 17.18599f)), owning_building_guid = 73) LocalObject(1320, Locker.Constructor(Vector3(5323.751f, 2982.835f, 17.18599f)), owning_building_guid = 73) LocalObject(1321, Locker.Constructor(Vector3(5325.053f, 2960.963f, 17.18599f)), owning_building_guid = 73) @@ -2440,39 +7185,126 @@ object Map02 { // Hossin LocalObject(1324, Locker.Constructor(Vector3(5327.741f, 2982.835f, 17.18599f)), owning_building_guid = 73) LocalObject(1325, Locker.Constructor(Vector3(5329.143f, 2960.963f, 17.18599f)), owning_building_guid = 73) LocalObject(1326, Locker.Constructor(Vector3(5329.143f, 2982.835f, 17.18599f)), owning_building_guid = 73) - LocalObject(1674, Terminal.Constructor(Vector3(5329.445f, 2966.129f, 18.52399f), order_terminal), owning_building_guid = 73) - LocalObject(1675, Terminal.Constructor(Vector3(5329.445f, 2971.853f, 18.52399f), order_terminal), owning_building_guid = 73) - LocalObject(1676, Terminal.Constructor(Vector3(5329.445f, 2977.234f, 18.52399f), order_terminal), owning_building_guid = 73) - LocalObject(2240, SpawnTube.Constructor(Vector3(5318.706f, 2963.742f, 16.67399f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2241, SpawnTube.Constructor(Vector3(5318.706f, 2980.152f, 16.67399f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(1929, ProximityTerminal.Constructor(Vector3(5306.907f, 2970.725f, 54.76199f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(1930, Terminal.Constructor(Vector3(5306.907f, 2970.725f, 54.76199f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(1932, ProximityTerminal.Constructor(Vector3(5306.907f, 2981.17f, 54.76199f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(1933, Terminal.Constructor(Vector3(5306.907f, 2981.17f, 54.76199f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(1511, FacilityTurret.Constructor(Vector3(5293.07f, 2961.045f, 46.13399f), manned_turret), owning_building_guid = 73) + LocalObject( + 1674, + Terminal.Constructor(Vector3(5329.445f, 2966.129f, 18.52399f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1675, + Terminal.Constructor(Vector3(5329.445f, 2971.853f, 18.52399f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1676, + Terminal.Constructor(Vector3(5329.445f, 2977.234f, 18.52399f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2240, + SpawnTube.Constructor(Vector3(5318.706f, 2963.742f, 16.67399f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2241, + SpawnTube.Constructor(Vector3(5318.706f, 2980.152f, 16.67399f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 1929, + ProximityTerminal.Constructor(Vector3(5306.907f, 2970.725f, 54.76199f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 1930, + Terminal.Constructor(Vector3(5306.907f, 2970.725f, 54.76199f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1932, + ProximityTerminal.Constructor(Vector3(5306.907f, 2981.17f, 54.76199f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 1933, + Terminal.Constructor(Vector3(5306.907f, 2981.17f, 54.76199f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1511, + FacilityTurret.Constructor(Vector3(5293.07f, 2961.045f, 46.13399f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1511, 5095) - LocalObject(1514, FacilityTurret.Constructor(Vector3(5331.497f, 2990.957f, 46.13399f), manned_turret), owning_building_guid = 73) + LocalObject( + 1514, + FacilityTurret.Constructor(Vector3(5331.497f, 2990.957f, 46.13399f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1514, 5096) - LocalObject(2064, Painbox.Constructor(Vector3(5312.454f, 2968.849f, 19.21149f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2065, Painbox.Constructor(Vector3(5324.923f, 2965.54f, 17.29199f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2066, Painbox.Constructor(Vector3(5325.113f, 2978.022f, 17.29199f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 2064, + Painbox.Constructor(Vector3(5312.454f, 2968.849f, 19.21149f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2065, + Painbox.Constructor(Vector3(5324.923f, 2965.54f, 17.29199f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2066, + Painbox.Constructor(Vector3(5325.113f, 2978.022f, 17.29199f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building51() def Building51(): Unit = { // Name: Zotz_Tower Type: tower_c GUID: 74, MapID: 51 - LocalBuilding("Zotz_Tower", 74, 51, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6680f, 2510f, 181.3593f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2282, CaptureTerminal.Constructor(Vector3(6696.587f, 2509.897f, 191.3583f), secondary_capture), owning_building_guid = 74) + LocalBuilding( + "Zotz_Tower", + 74, + 51, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6680f, 2510f, 181.3593f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2282, + CaptureTerminal.Constructor(Vector3(6696.587f, 2509.897f, 191.3583f), secondary_capture), + owning_building_guid = 74 + ) LocalObject(523, Door.Constructor(Vector3(6692f, 2502f, 182.8803f)), owning_building_guid = 74) LocalObject(524, Door.Constructor(Vector3(6692f, 2502f, 202.8793f)), owning_building_guid = 74) LocalObject(525, Door.Constructor(Vector3(6692f, 2518f, 182.8803f)), owning_building_guid = 74) LocalObject(526, Door.Constructor(Vector3(6692f, 2518f, 202.8793f)), owning_building_guid = 74) LocalObject(2434, Door.Constructor(Vector3(6691.146f, 2498.794f, 172.6953f)), owning_building_guid = 74) LocalObject(2435, Door.Constructor(Vector3(6691.146f, 2515.204f, 172.6953f)), owning_building_guid = 74) - LocalObject(1043, IFFLock.Constructor(Vector3(6689.957f, 2518.811f, 182.8203f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 525) - LocalObject(1044, IFFLock.Constructor(Vector3(6689.957f, 2518.811f, 202.8203f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 526) - LocalObject(1045, IFFLock.Constructor(Vector3(6694.047f, 2501.189f, 182.8203f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 523) - LocalObject(1046, IFFLock.Constructor(Vector3(6694.047f, 2501.189f, 202.8203f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 524) + LocalObject( + 1043, + IFFLock.Constructor(Vector3(6689.957f, 2518.811f, 182.8203f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 525 + ) + LocalObject( + 1044, + IFFLock.Constructor(Vector3(6689.957f, 2518.811f, 202.8203f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 526 + ) + LocalObject( + 1045, + IFFLock.Constructor(Vector3(6694.047f, 2501.189f, 182.8203f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 523 + ) + LocalObject( + 1046, + IFFLock.Constructor(Vector3(6694.047f, 2501.189f, 202.8203f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 524 + ) LocalObject(1380, Locker.Constructor(Vector3(6695.716f, 2494.963f, 171.3533f)), owning_building_guid = 74) LocalObject(1381, Locker.Constructor(Vector3(6695.751f, 2516.835f, 171.3533f)), owning_building_guid = 74) LocalObject(1382, Locker.Constructor(Vector3(6697.053f, 2494.963f, 171.3533f)), owning_building_guid = 74) @@ -2481,46 +7313,122 @@ object Map02 { // Hossin LocalObject(1385, Locker.Constructor(Vector3(6699.741f, 2516.835f, 171.3533f)), owning_building_guid = 74) LocalObject(1386, Locker.Constructor(Vector3(6701.143f, 2494.963f, 171.3533f)), owning_building_guid = 74) LocalObject(1387, Locker.Constructor(Vector3(6701.143f, 2516.835f, 171.3533f)), owning_building_guid = 74) - LocalObject(1698, Terminal.Constructor(Vector3(6701.445f, 2500.129f, 172.6913f), order_terminal), owning_building_guid = 74) - LocalObject(1699, Terminal.Constructor(Vector3(6701.445f, 2505.853f, 172.6913f), order_terminal), owning_building_guid = 74) - LocalObject(1700, Terminal.Constructor(Vector3(6701.445f, 2511.234f, 172.6913f), order_terminal), owning_building_guid = 74) - LocalObject(2254, SpawnTube.Constructor(Vector3(6690.706f, 2497.742f, 170.8413f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2255, SpawnTube.Constructor(Vector3(6690.706f, 2514.152f, 170.8413f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(1935, ProximityTerminal.Constructor(Vector3(6678.907f, 2504.725f, 208.9293f), pad_landing_tower_frame), owning_building_guid = 74) - LocalObject(1936, Terminal.Constructor(Vector3(6678.907f, 2504.725f, 208.9293f), air_rearm_terminal), owning_building_guid = 74) - LocalObject(1938, ProximityTerminal.Constructor(Vector3(6678.907f, 2515.17f, 208.9293f), pad_landing_tower_frame), owning_building_guid = 74) - LocalObject(1939, Terminal.Constructor(Vector3(6678.907f, 2515.17f, 208.9293f), air_rearm_terminal), owning_building_guid = 74) - LocalObject(1533, FacilityTurret.Constructor(Vector3(6665.07f, 2495.045f, 200.3013f), manned_turret), owning_building_guid = 74) + LocalObject( + 1698, + Terminal.Constructor(Vector3(6701.445f, 2500.129f, 172.6913f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1699, + Terminal.Constructor(Vector3(6701.445f, 2505.853f, 172.6913f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1700, + Terminal.Constructor(Vector3(6701.445f, 2511.234f, 172.6913f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2254, + SpawnTube.Constructor(Vector3(6690.706f, 2497.742f, 170.8413f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2255, + SpawnTube.Constructor(Vector3(6690.706f, 2514.152f, 170.8413f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 1935, + ProximityTerminal.Constructor(Vector3(6678.907f, 2504.725f, 208.9293f), pad_landing_tower_frame), + owning_building_guid = 74 + ) + LocalObject( + 1936, + Terminal.Constructor(Vector3(6678.907f, 2504.725f, 208.9293f), air_rearm_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1938, + ProximityTerminal.Constructor(Vector3(6678.907f, 2515.17f, 208.9293f), pad_landing_tower_frame), + owning_building_guid = 74 + ) + LocalObject( + 1939, + Terminal.Constructor(Vector3(6678.907f, 2515.17f, 208.9293f), air_rearm_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1533, + FacilityTurret.Constructor(Vector3(6665.07f, 2495.045f, 200.3013f), manned_turret), + owning_building_guid = 74 + ) TurretToWeapon(1533, 5097) - LocalObject(1535, FacilityTurret.Constructor(Vector3(6703.497f, 2524.957f, 200.3013f), manned_turret), owning_building_guid = 74) + LocalObject( + 1535, + FacilityTurret.Constructor(Vector3(6703.497f, 2524.957f, 200.3013f), manned_turret), + owning_building_guid = 74 + ) TurretToWeapon(1535, 5098) - LocalObject(2076, Painbox.Constructor(Vector3(6684.454f, 2502.849f, 173.3788f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2077, Painbox.Constructor(Vector3(6696.923f, 2499.54f, 171.4593f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2078, Painbox.Constructor(Vector3(6697.113f, 2512.022f, 171.4593f), painbox_radius_continuous), owning_building_guid = 74) + LocalObject( + 2076, + Painbox.Constructor(Vector3(6684.454f, 2502.849f, 173.3788f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2077, + Painbox.Constructor(Vector3(6696.923f, 2499.54f, 171.4593f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2078, + Painbox.Constructor(Vector3(6697.113f, 2512.022f, 171.4593f), painbox_radius_continuous), + owning_building_guid = 74 + ) } Building1() def Building1(): Unit = { // Name: WG_Hossin_to_Ceryshen Type: warpgate GUID: 75, MapID: 1 - LocalBuilding("WG_Hossin_to_Ceryshen", 75, 1, FoundationBuilder(WarpGate.Structure(Vector3(1874f, 5018f, 18.43318f)))) + LocalBuilding( + "WG_Hossin_to_Ceryshen", + 75, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(1874f, 5018f, 18.43318f))) + ) } Building4() def Building4(): Unit = { // Name: WG_Hossin_to_Oshur Type: warpgate GUID: 76, MapID: 4 - LocalBuilding("WG_Hossin_to_Oshur", 76, 4, FoundationBuilder(WarpGate.Structure(Vector3(3180f, 1978f, 20.37416f)))) + LocalBuilding( + "WG_Hossin_to_Oshur", + 76, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(3180f, 1978f, 20.37416f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Hossin_to_Solsar Type: warpgate GUID: 77, MapID: 2 - LocalBuilding("WG_Hossin_to_Solsar", 77, 2, FoundationBuilder(WarpGate.Structure(Vector3(4774f, 4558f, 26.12384f)))) + LocalBuilding( + "WG_Hossin_to_Solsar", + 77, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(4774f, 4558f, 26.12384f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Hossin_to_VSSanc Type: warpgate GUID: 78, MapID: 3 - LocalBuilding("WG_Hossin_to_VSSanc", 78, 3, FoundationBuilder(WarpGate.Structure(Vector3(5466f, 1710f, 25.7149f)))) + LocalBuilding( + "WG_Hossin_to_VSSanc", + 78, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(5466f, 1710f, 25.7149f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map03.scala b/pslogin/src/main/scala/zonemaps/Map03.scala index 965bf2a3..3c8d0513 100644 --- a/pslogin/src/main/scala/zonemaps/Map03.scala +++ b/pslogin/src/main/scala/zonemaps/Map03.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,19 @@ object Map03 { // Cyssor Building1() def Building1(): Unit = { // Name: Aja Type: amp_station GUID: 1, MapID: 1 - LocalBuilding("Aja", 1, 1, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(710f, 5342f, 48.41151f), Vector3(0f, 0f, 20f), amp_station))) - LocalObject(279, CaptureTerminal.Constructor(Vector3(706.8641f, 5340.862f, 59.91951f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Aja", + 1, + 1, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(710f, 5342f, 48.41151f), Vector3(0f, 0f, 20f), amp_station) + ) + ) + LocalObject( + 279, + CaptureTerminal.Constructor(Vector3(706.8641f, 5340.862f, 59.91951f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(216, Door.Constructor(Vector3(707.8737f, 5348.468f, 61.31351f)), owning_building_guid = 1) LocalObject(217, Door.Constructor(Vector3(712.5257f, 5335.678f, 61.31351f)), owning_building_guid = 1) LocalObject(421, Door.Constructor(Vector3(611.2217f, 5391.182f, 50.13251f)), owning_building_guid = 1) @@ -70,18 +81,78 @@ object Map03 { // Cyssor LocalObject(3509, Door.Constructor(Vector3(690.3627f, 5339.444f, 42.96551f)), owning_building_guid = 1) LocalObject(3510, Door.Constructor(Vector3(692.8557f, 5332.595f, 42.96551f)), owning_building_guid = 1) LocalObject(3511, Door.Constructor(Vector3(695.3501f, 5325.742f, 42.96551f)), owning_building_guid = 1) - LocalObject(1253, IFFLock.Constructor(Vector3(738.9417f, 5355.797f, 50.09151f), Vector3(0, 0, 70)), owning_building_guid = 1, door_guid = 1189) - LocalObject(1285, IFFLock.Constructor(Vector3(609.0185f, 5391.259f, 50.07151f), Vector3(0, 0, 340)), owning_building_guid = 1, door_guid = 421) - LocalObject(1303, IFFLock.Constructor(Vector3(666.4863f, 5323.579f, 34.94751f), Vector3(0, 0, 70)), owning_building_guid = 1, door_guid = 860) - LocalObject(1304, IFFLock.Constructor(Vector3(694.1885f, 5345.76f, 42.44751f), Vector3(0, 0, 340)), owning_building_guid = 1, door_guid = 867) - LocalObject(1305, IFFLock.Constructor(Vector3(695.405f, 5367.06f, 60.07251f), Vector3(0, 0, 250)), owning_building_guid = 1, door_guid = 444) - LocalObject(1306, IFFLock.Constructor(Vector3(695.6567f, 5375.432f, 55.07351f), Vector3(0, 0, 340)), owning_building_guid = 1, door_guid = 445) - LocalObject(1307, IFFLock.Constructor(Vector3(704.0466f, 5374.561f, 60.07251f), Vector3(0, 0, 70)), owning_building_guid = 1, door_guid = 446) - LocalObject(1308, IFFLock.Constructor(Vector3(705.9503f, 5322.637f, 42.44751f), Vector3(0, 0, 160)), owning_building_guid = 1, door_guid = 872) - LocalObject(1309, IFFLock.Constructor(Vector3(713.7586f, 5328.925f, 34.94751f), Vector3(0, 0, 250)), owning_building_guid = 1, door_guid = 876) - LocalObject(1310, IFFLock.Constructor(Vector3(716.3151f, 5309.609f, 60.07251f), Vector3(0, 0, 250)), owning_building_guid = 1, door_guid = 448) - LocalObject(1311, IFFLock.Constructor(Vector3(724.3342f, 5308.587f, 55.07351f), Vector3(0, 0, 160)), owning_building_guid = 1, door_guid = 449) - LocalObject(1312, IFFLock.Constructor(Vector3(724.9581f, 5317.107f, 60.07251f), Vector3(0, 0, 70)), owning_building_guid = 1, door_guid = 450) + LocalObject( + 1253, + IFFLock.Constructor(Vector3(738.9417f, 5355.797f, 50.09151f), Vector3(0, 0, 70)), + owning_building_guid = 1, + door_guid = 1189 + ) + LocalObject( + 1285, + IFFLock.Constructor(Vector3(609.0185f, 5391.259f, 50.07151f), Vector3(0, 0, 340)), + owning_building_guid = 1, + door_guid = 421 + ) + LocalObject( + 1303, + IFFLock.Constructor(Vector3(666.4863f, 5323.579f, 34.94751f), Vector3(0, 0, 70)), + owning_building_guid = 1, + door_guid = 860 + ) + LocalObject( + 1304, + IFFLock.Constructor(Vector3(694.1885f, 5345.76f, 42.44751f), Vector3(0, 0, 340)), + owning_building_guid = 1, + door_guid = 867 + ) + LocalObject( + 1305, + IFFLock.Constructor(Vector3(695.405f, 5367.06f, 60.07251f), Vector3(0, 0, 250)), + owning_building_guid = 1, + door_guid = 444 + ) + LocalObject( + 1306, + IFFLock.Constructor(Vector3(695.6567f, 5375.432f, 55.07351f), Vector3(0, 0, 340)), + owning_building_guid = 1, + door_guid = 445 + ) + LocalObject( + 1307, + IFFLock.Constructor(Vector3(704.0466f, 5374.561f, 60.07251f), Vector3(0, 0, 70)), + owning_building_guid = 1, + door_guid = 446 + ) + LocalObject( + 1308, + IFFLock.Constructor(Vector3(705.9503f, 5322.637f, 42.44751f), Vector3(0, 0, 160)), + owning_building_guid = 1, + door_guid = 872 + ) + LocalObject( + 1309, + IFFLock.Constructor(Vector3(713.7586f, 5328.925f, 34.94751f), Vector3(0, 0, 250)), + owning_building_guid = 1, + door_guid = 876 + ) + LocalObject( + 1310, + IFFLock.Constructor(Vector3(716.3151f, 5309.609f, 60.07251f), Vector3(0, 0, 250)), + owning_building_guid = 1, + door_guid = 448 + ) + LocalObject( + 1311, + IFFLock.Constructor(Vector3(724.3342f, 5308.587f, 55.07351f), Vector3(0, 0, 160)), + owning_building_guid = 1, + door_guid = 449 + ) + LocalObject( + 1312, + IFFLock.Constructor(Vector3(724.9581f, 5317.107f, 60.07251f), Vector3(0, 0, 70)), + owning_building_guid = 1, + door_guid = 450 + ) LocalObject(1646, Locker.Constructor(Vector3(706.8119f, 5326.091f, 41.37251f)), owning_building_guid = 1) LocalObject(1647, Locker.Constructor(Vector3(707.9057f, 5326.489f, 41.37251f)), owning_building_guid = 1) LocalObject(1648, Locker.Constructor(Vector3(708.9835f, 5326.881f, 41.37251f)), owning_building_guid = 1) @@ -94,65 +165,258 @@ object Map03 { // Cyssor LocalObject(1655, Locker.Constructor(Vector3(719.2194f, 5351.916f, 33.61151f)), owning_building_guid = 1) LocalObject(1656, Locker.Constructor(Vector3(720.4749f, 5352.373f, 33.61151f)), owning_building_guid = 1) LocalObject(1657, Locker.Constructor(Vector3(721.7313f, 5352.831f, 33.61151f)), owning_building_guid = 1) - LocalObject(2373, Terminal.Constructor(Vector3(688.8893f, 5334.312f, 49.94051f), order_terminal), owning_building_guid = 1) - LocalObject(2374, Terminal.Constructor(Vector3(702.3105f, 5363.121f, 49.94051f), order_terminal), owning_building_guid = 1) - LocalObject(2375, Terminal.Constructor(Vector3(705.3431f, 5339.164f, 42.70151f), order_terminal), owning_building_guid = 1) - LocalObject(2376, Terminal.Constructor(Vector3(706.639f, 5335.604f, 42.70151f), order_terminal), owning_building_guid = 1) - LocalObject(2377, Terminal.Constructor(Vector3(707.915f, 5332.098f, 42.70151f), order_terminal), owning_building_guid = 1) - LocalObject(2378, Terminal.Constructor(Vector3(717.6857f, 5320.878f, 49.94051f), order_terminal), owning_building_guid = 1) - LocalObject(3396, Terminal.Constructor(Vector3(651.4706f, 5362.635f, 42.66851f), spawn_terminal), owning_building_guid = 1) - LocalObject(3398, Terminal.Constructor(Vector3(682.2317f, 5348.291f, 35.16851f), spawn_terminal), owning_building_guid = 1) - LocalObject(3399, Terminal.Constructor(Vector3(691.4941f, 5337.205f, 43.24551f), spawn_terminal), owning_building_guid = 1) - LocalObject(3400, Terminal.Constructor(Vector3(693.9839f, 5330.355f, 43.24551f), spawn_terminal), owning_building_guid = 1) - LocalObject(3401, Terminal.Constructor(Vector3(696.4818f, 5323.504f, 43.24551f), spawn_terminal), owning_building_guid = 1) - LocalObject(3402, Terminal.Constructor(Vector3(706.367f, 5335.889f, 55.13951f), spawn_terminal), owning_building_guid = 1) - LocalObject(3718, Terminal.Constructor(Vector3(636.7578f, 5403.108f, 50.51351f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(2306, VehicleSpawnPad.Constructor(Vector3(641.5068f, 5390.323f, 46.35651f), mb_pad_creation, Vector3(0, 0, 160)), owning_building_guid = 1, terminal_guid = 3718) + LocalObject( + 2373, + Terminal.Constructor(Vector3(688.8893f, 5334.312f, 49.94051f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2374, + Terminal.Constructor(Vector3(702.3105f, 5363.121f, 49.94051f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2375, + Terminal.Constructor(Vector3(705.3431f, 5339.164f, 42.70151f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2376, + Terminal.Constructor(Vector3(706.639f, 5335.604f, 42.70151f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2377, + Terminal.Constructor(Vector3(707.915f, 5332.098f, 42.70151f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2378, + Terminal.Constructor(Vector3(717.6857f, 5320.878f, 49.94051f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3396, + Terminal.Constructor(Vector3(651.4706f, 5362.635f, 42.66851f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3398, + Terminal.Constructor(Vector3(682.2317f, 5348.291f, 35.16851f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3399, + Terminal.Constructor(Vector3(691.4941f, 5337.205f, 43.24551f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3400, + Terminal.Constructor(Vector3(693.9839f, 5330.355f, 43.24551f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3401, + Terminal.Constructor(Vector3(696.4818f, 5323.504f, 43.24551f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3402, + Terminal.Constructor(Vector3(706.367f, 5335.889f, 55.13951f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3718, + Terminal.Constructor(Vector3(636.7578f, 5403.108f, 50.51351f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 2306, + VehicleSpawnPad.Constructor(Vector3(641.5068f, 5390.323f, 46.35651f), mb_pad_creation, Vector3(0, 0, 160)), + owning_building_guid = 1, + terminal_guid = 3718 + ) LocalObject(3218, ResourceSilo.Constructor(Vector3(788.7111f, 5279.667f, 55.64651f)), owning_building_guid = 1) - LocalObject(3245, SpawnTube.Constructor(Vector3(690.3094f, 5338.305f, 41.11151f), Vector3(0, 0, 340)), owning_building_guid = 1) - LocalObject(3246, SpawnTube.Constructor(Vector3(692.8021f, 5331.456f, 41.11151f), Vector3(0, 0, 340)), owning_building_guid = 1) - LocalObject(3247, SpawnTube.Constructor(Vector3(695.2957f, 5324.605f, 41.11151f), Vector3(0, 0, 340)), owning_building_guid = 1) - LocalObject(2330, ProximityTerminal.Constructor(Vector3(689.2837f, 5334.454f, 53.61151f), medical_terminal), owning_building_guid = 1) - LocalObject(2331, ProximityTerminal.Constructor(Vector3(716.0126f, 5350.169f, 33.61151f), medical_terminal), owning_building_guid = 1) - LocalObject(2657, ProximityTerminal.Constructor(Vector3(649.4424f, 5340.999f, 56.91651f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2658, Terminal.Constructor(Vector3(649.4424f, 5340.999f, 56.91651f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2660, ProximityTerminal.Constructor(Vector3(715.3569f, 5405.046f, 59.07751f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2661, Terminal.Constructor(Vector3(715.3569f, 5405.046f, 59.07751f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2663, ProximityTerminal.Constructor(Vector3(742.9343f, 5275.775f, 56.93951f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2664, Terminal.Constructor(Vector3(742.9343f, 5275.775f, 56.93951f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2666, ProximityTerminal.Constructor(Vector3(763.1806f, 5340.25f, 56.91651f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2667, Terminal.Constructor(Vector3(763.1806f, 5340.25f, 56.91651f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(3096, ProximityTerminal.Constructor(Vector3(644.0612f, 5318.217f, 47.81151f), repair_silo), owning_building_guid = 1) - LocalObject(3097, Terminal.Constructor(Vector3(644.0612f, 5318.217f, 47.81151f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(3100, ProximityTerminal.Constructor(Vector3(768.4315f, 5363.686f, 47.81151f), repair_silo), owning_building_guid = 1) - LocalObject(3101, Terminal.Constructor(Vector3(768.4315f, 5363.686f, 47.81151f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2165, FacilityTurret.Constructor(Vector3(598.3812f, 5412.941f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 3245, + SpawnTube.Constructor(Vector3(690.3094f, 5338.305f, 41.11151f), Vector3(0, 0, 340)), + owning_building_guid = 1 + ) + LocalObject( + 3246, + SpawnTube.Constructor(Vector3(692.8021f, 5331.456f, 41.11151f), Vector3(0, 0, 340)), + owning_building_guid = 1 + ) + LocalObject( + 3247, + SpawnTube.Constructor(Vector3(695.2957f, 5324.605f, 41.11151f), Vector3(0, 0, 340)), + owning_building_guid = 1 + ) + LocalObject( + 2330, + ProximityTerminal.Constructor(Vector3(689.2837f, 5334.454f, 53.61151f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2331, + ProximityTerminal.Constructor(Vector3(716.0126f, 5350.169f, 33.61151f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2657, + ProximityTerminal.Constructor(Vector3(649.4424f, 5340.999f, 56.91651f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2658, + Terminal.Constructor(Vector3(649.4424f, 5340.999f, 56.91651f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2660, + ProximityTerminal.Constructor(Vector3(715.3569f, 5405.046f, 59.07751f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2661, + Terminal.Constructor(Vector3(715.3569f, 5405.046f, 59.07751f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2663, + ProximityTerminal.Constructor(Vector3(742.9343f, 5275.775f, 56.93951f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2664, + Terminal.Constructor(Vector3(742.9343f, 5275.775f, 56.93951f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2666, + ProximityTerminal.Constructor(Vector3(763.1806f, 5340.25f, 56.91651f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2667, + Terminal.Constructor(Vector3(763.1806f, 5340.25f, 56.91651f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3096, + ProximityTerminal.Constructor(Vector3(644.0612f, 5318.217f, 47.81151f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 3097, + Terminal.Constructor(Vector3(644.0612f, 5318.217f, 47.81151f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3100, + ProximityTerminal.Constructor(Vector3(768.4315f, 5363.686f, 47.81151f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 3101, + Terminal.Constructor(Vector3(768.4315f, 5363.686f, 47.81151f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2165, + FacilityTurret.Constructor(Vector3(598.3812f, 5412.941f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2165, 5000) - LocalObject(2174, FacilityTurret.Constructor(Vector3(667.386f, 5223.437f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 2174, + FacilityTurret.Constructor(Vector3(667.386f, 5223.437f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2174, 5001) - LocalObject(2176, FacilityTurret.Constructor(Vector3(724.1415f, 5241.723f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 2176, + FacilityTurret.Constructor(Vector3(724.1415f, 5241.723f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2176, 5002) - LocalObject(2177, FacilityTurret.Constructor(Vector3(742.5974f, 5465.421f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 2177, + FacilityTurret.Constructor(Vector3(742.5974f, 5465.421f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2177, 5003) - LocalObject(2178, FacilityTurret.Constructor(Vector3(766.3595f, 5406.62f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 2178, + FacilityTurret.Constructor(Vector3(766.3595f, 5406.62f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2178, 5004) - LocalObject(2179, FacilityTurret.Constructor(Vector3(811.5665f, 5275.904f, 57.11951f), manned_turret), owning_building_guid = 1) + LocalObject( + 2179, + FacilityTurret.Constructor(Vector3(811.5665f, 5275.904f, 57.11951f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(2179, 5005) - LocalObject(2881, Painbox.Constructor(Vector3(656.1143f, 5315.063f, 38.48251f), painbox), owning_building_guid = 1) - LocalObject(2898, Painbox.Constructor(Vector3(698.8355f, 5336.432f, 46.05991f), painbox_continuous), owning_building_guid = 1) - LocalObject(2915, Painbox.Constructor(Vector3(668.5839f, 5321.865f, 35.07051f), painbox_door_radius), owning_building_guid = 1) - LocalObject(2936, Painbox.Constructor(Vector3(695.6177f, 5346.646f, 42.37601f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2937, Painbox.Constructor(Vector3(704.5602f, 5321.862f, 42.31151f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2938, Painbox.Constructor(Vector3(710.0254f, 5346.22f, 44.29011f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 2881, + Painbox.Constructor(Vector3(656.1143f, 5315.063f, 38.48251f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 2898, + Painbox.Constructor(Vector3(698.8355f, 5336.432f, 46.05991f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2915, + Painbox.Constructor(Vector3(668.5839f, 5321.865f, 35.07051f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 2936, + Painbox.Constructor(Vector3(695.6177f, 5346.646f, 42.37601f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2937, + Painbox.Constructor(Vector3(704.5602f, 5321.862f, 42.31151f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2938, + Painbox.Constructor(Vector3(710.0254f, 5346.22f, 44.29011f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(383, Generator.Constructor(Vector3(651.6545f, 5316.48f, 32.31751f)), owning_building_guid = 1) - LocalObject(366, Terminal.Constructor(Vector3(659.3364f, 5319.327f, 33.61151f), gen_control), owning_building_guid = 1) + LocalObject( + 366, + Terminal.Constructor(Vector3(659.3364f, 5319.327f, 33.61151f), gen_control), + owning_building_guid = 1 + ) } Building12() def Building12(): Unit = { // Name: Nzame Type: amp_station GUID: 4, MapID: 12 - LocalBuilding("Nzame", 4, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1568f, 2688f, 45.10147f), Vector3(0f, 0f, 325f), amp_station))) - LocalObject(281, CaptureTerminal.Constructor(Vector3(1565.269f, 2689.916f, 56.60947f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Nzame", + 4, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1568f, 2688f, 45.10147f), + Vector3(0f, 0f, 325f), + amp_station + ) + ) + ) + LocalObject( + 281, + CaptureTerminal.Constructor(Vector3(1565.269f, 2689.916f, 56.60947f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(218, Door.Constructor(Vector3(1564.27f, 2682.305f, 58.00348f)), owning_building_guid = 4) LocalObject(219, Door.Constructor(Vector3(1572.078f, 2693.452f, 58.00348f)), owning_building_guid = 4) LocalObject(487, Door.Constructor(Vector3(1480.483f, 2681.527f, 46.85247f)), owning_building_guid = 4) @@ -198,18 +462,78 @@ object Map03 { // Cyssor LocalObject(3525, Door.Constructor(Vector3(1546.279f, 2690.675f, 39.65548f)), owning_building_guid = 4) LocalObject(3526, Door.Constructor(Vector3(1550.462f, 2696.649f, 39.65548f)), owning_building_guid = 4) LocalObject(3527, Door.Constructor(Vector3(1554.643f, 2702.62f, 39.65548f)), owning_building_guid = 4) - LocalObject(1255, IFFLock.Constructor(Vector3(1595.902f, 2672.206f, 46.78148f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 1191) - LocalObject(1342, IFFLock.Constructor(Vector3(1527.952f, 2713.078f, 31.63747f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 906) - LocalObject(1343, IFFLock.Constructor(Vector3(1545.089f, 2664.249f, 56.76247f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 493) - LocalObject(1348, IFFLock.Constructor(Vector3(1548.852f, 2657.094f, 51.76347f), Vector3(0, 0, 215)), owning_building_guid = 4, door_guid = 496) - LocalObject(1349, IFFLock.Constructor(Vector3(1549.816f, 2680.211f, 39.13747f), Vector3(0, 0, 215)), owning_building_guid = 4, door_guid = 912) - LocalObject(1350, IFFLock.Constructor(Vector3(1550.43f, 2798.973f, 46.76147f), Vector3(0, 0, 35)), owning_building_guid = 4, door_guid = 499) - LocalObject(1351, IFFLock.Constructor(Vector3(1556.188f, 2661.469f, 56.76247f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 500) - LocalObject(1352, IFFLock.Constructor(Vector3(1559.445f, 2677.422f, 31.63747f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 916) - LocalObject(1353, IFFLock.Constructor(Vector3(1562.011f, 2703.109f, 39.13747f), Vector3(0, 0, 35)), owning_building_guid = 4, door_guid = 917) - LocalObject(1354, IFFLock.Constructor(Vector3(1580.156f, 2714.329f, 56.76247f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 502) - LocalObject(1355, IFFLock.Constructor(Vector3(1587.159f, 2718.925f, 51.76347f), Vector3(0, 0, 35)), owning_building_guid = 4, door_guid = 503) - LocalObject(1356, IFFLock.Constructor(Vector3(1591.257f, 2711.553f, 56.76247f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 504) + LocalObject( + 1255, + IFFLock.Constructor(Vector3(1595.902f, 2672.206f, 46.78148f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 1191 + ) + LocalObject( + 1342, + IFFLock.Constructor(Vector3(1527.952f, 2713.078f, 31.63747f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 906 + ) + LocalObject( + 1343, + IFFLock.Constructor(Vector3(1545.089f, 2664.249f, 56.76247f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 493 + ) + LocalObject( + 1348, + IFFLock.Constructor(Vector3(1548.852f, 2657.094f, 51.76347f), Vector3(0, 0, 215)), + owning_building_guid = 4, + door_guid = 496 + ) + LocalObject( + 1349, + IFFLock.Constructor(Vector3(1549.816f, 2680.211f, 39.13747f), Vector3(0, 0, 215)), + owning_building_guid = 4, + door_guid = 912 + ) + LocalObject( + 1350, + IFFLock.Constructor(Vector3(1550.43f, 2798.973f, 46.76147f), Vector3(0, 0, 35)), + owning_building_guid = 4, + door_guid = 499 + ) + LocalObject( + 1351, + IFFLock.Constructor(Vector3(1556.188f, 2661.469f, 56.76247f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 500 + ) + LocalObject( + 1352, + IFFLock.Constructor(Vector3(1559.445f, 2677.422f, 31.63747f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 916 + ) + LocalObject( + 1353, + IFFLock.Constructor(Vector3(1562.011f, 2703.109f, 39.13747f), Vector3(0, 0, 35)), + owning_building_guid = 4, + door_guid = 917 + ) + LocalObject( + 1354, + IFFLock.Constructor(Vector3(1580.156f, 2714.329f, 56.76247f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 502 + ) + LocalObject( + 1355, + IFFLock.Constructor(Vector3(1587.159f, 2718.925f, 51.76347f), Vector3(0, 0, 35)), + owning_building_guid = 4, + door_guid = 503 + ) + LocalObject( + 1356, + IFFLock.Constructor(Vector3(1591.257f, 2711.553f, 56.76247f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 504 + ) LocalObject(1708, Locker.Constructor(Vector3(1553.14f, 2681.487f, 38.06247f)), owning_building_guid = 4) LocalObject(1709, Locker.Constructor(Vector3(1554.093f, 2680.819f, 38.06247f)), owning_building_guid = 4) LocalObject(1711, Locker.Constructor(Vector3(1555.033f, 2680.161f, 38.06247f)), owning_building_guid = 4) @@ -222,65 +546,254 @@ object Map03 { // Cyssor LocalObject(1719, Locker.Constructor(Vector3(1581.411f, 2686.135f, 30.30148f)), owning_building_guid = 4) LocalObject(1720, Locker.Constructor(Vector3(1582.505f, 2685.369f, 30.30148f)), owning_building_guid = 4) LocalObject(1721, Locker.Constructor(Vector3(1583.601f, 2684.603f, 30.30148f)), owning_building_guid = 4) - LocalObject(2398, Terminal.Constructor(Vector3(1549.594f, 2700.883f, 46.63047f), order_terminal), owning_building_guid = 4) - LocalObject(2401, Terminal.Constructor(Vector3(1555.106f, 2669.589f, 46.63047f), order_terminal), owning_building_guid = 4) - LocalObject(2403, Terminal.Constructor(Vector3(1558.693f, 2684.028f, 39.39148f), order_terminal), owning_building_guid = 4) - LocalObject(2404, Terminal.Constructor(Vector3(1560.833f, 2687.084f, 39.39148f), order_terminal), owning_building_guid = 4) - LocalObject(2405, Terminal.Constructor(Vector3(1563.006f, 2690.188f, 39.39148f), order_terminal), owning_building_guid = 4) - LocalObject(2406, Terminal.Constructor(Vector3(1580.891f, 2706.413f, 46.63047f), order_terminal), owning_building_guid = 4) - LocalObject(3409, Terminal.Constructor(Vector3(1545.095f, 2688.465f, 39.93547f), spawn_terminal), owning_building_guid = 4) - LocalObject(3410, Terminal.Constructor(Vector3(1549.275f, 2694.44f, 39.93547f), spawn_terminal), owning_building_guid = 4) - LocalObject(3411, Terminal.Constructor(Vector3(1551.332f, 2747.78f, 39.35847f), spawn_terminal), owning_building_guid = 4) - LocalObject(3412, Terminal.Constructor(Vector3(1553.457f, 2700.408f, 39.93547f), spawn_terminal), owning_building_guid = 4) - LocalObject(3413, Terminal.Constructor(Vector3(1557.226f, 2714.355f, 31.85847f), spawn_terminal), owning_building_guid = 4) - LocalObject(3414, Terminal.Constructor(Vector3(1560.91f, 2687.471f, 51.82948f), spawn_terminal), owning_building_guid = 4) - LocalObject(3720, Terminal.Constructor(Vector3(1576.047f, 2783.047f, 47.20348f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(2308, VehicleSpawnPad.Constructor(Vector3(1568.298f, 2771.823f, 43.04647f), mb_pad_creation, Vector3(0, 0, 215)), owning_building_guid = 4, terminal_guid = 3720) + LocalObject( + 2398, + Terminal.Constructor(Vector3(1549.594f, 2700.883f, 46.63047f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2401, + Terminal.Constructor(Vector3(1555.106f, 2669.589f, 46.63047f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2403, + Terminal.Constructor(Vector3(1558.693f, 2684.028f, 39.39148f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2404, + Terminal.Constructor(Vector3(1560.833f, 2687.084f, 39.39148f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2405, + Terminal.Constructor(Vector3(1563.006f, 2690.188f, 39.39148f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2406, + Terminal.Constructor(Vector3(1580.891f, 2706.413f, 46.63047f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3409, + Terminal.Constructor(Vector3(1545.095f, 2688.465f, 39.93547f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3410, + Terminal.Constructor(Vector3(1549.275f, 2694.44f, 39.93547f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3411, + Terminal.Constructor(Vector3(1551.332f, 2747.78f, 39.35847f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3412, + Terminal.Constructor(Vector3(1553.457f, 2700.408f, 39.93547f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3413, + Terminal.Constructor(Vector3(1557.226f, 2714.355f, 31.85847f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3414, + Terminal.Constructor(Vector3(1560.91f, 2687.471f, 51.82948f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3720, + Terminal.Constructor(Vector3(1576.047f, 2783.047f, 47.20348f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 2308, + VehicleSpawnPad.Constructor(Vector3(1568.298f, 2771.823f, 43.04647f), mb_pad_creation, Vector3(0, 0, 215)), + owning_building_guid = 4, + terminal_guid = 3720 + ) LocalObject(3220, ResourceSilo.Constructor(Vector3(1562.086f, 2587.771f, 52.33648f)), owning_building_guid = 4) - LocalObject(3261, SpawnTube.Constructor(Vector3(1545.317f, 2690.068f, 37.80148f), Vector3(0, 0, 35)), owning_building_guid = 4) - LocalObject(3262, SpawnTube.Constructor(Vector3(1549.499f, 2696.04f, 37.80148f), Vector3(0, 0, 35)), owning_building_guid = 4) - LocalObject(3263, SpawnTube.Constructor(Vector3(1553.679f, 2702.01f, 37.80148f), Vector3(0, 0, 35)), owning_building_guid = 4) - LocalObject(2334, ProximityTerminal.Constructor(Vector3(1549.936f, 2700.641f, 50.30148f), medical_terminal), owning_building_guid = 4) - LocalObject(2335, ProximityTerminal.Constructor(Vector3(1578.14f, 2687.76f, 30.30148f), medical_terminal), owning_building_guid = 4) - LocalObject(2672, ProximityTerminal.Constructor(Vector3(1532.445f, 2737.031f, 53.60648f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2673, Terminal.Constructor(Vector3(1532.445f, 2737.031f, 53.60648f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2675, ProximityTerminal.Constructor(Vector3(1532.642f, 2623.037f, 53.62947f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2676, Terminal.Constructor(Vector3(1532.642f, 2623.037f, 53.62947f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2678, ProximityTerminal.Constructor(Vector3(1597.07f, 2643.433f, 53.60648f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2679, Terminal.Constructor(Vector3(1597.07f, 2643.433f, 53.60648f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2681, ProximityTerminal.Constructor(Vector3(1622.717f, 2719.774f, 55.76748f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2682, Terminal.Constructor(Vector3(1622.717f, 2719.774f, 55.76748f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(3112, ProximityTerminal.Constructor(Vector3(1510.697f, 2728.372f, 44.50148f), repair_silo), owning_building_guid = 4) - LocalObject(3113, Terminal.Constructor(Vector3(1510.697f, 2728.372f, 44.50148f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(3116, ProximityTerminal.Constructor(Vector3(1619.279f, 2652.574f, 44.50148f), repair_silo), owning_building_guid = 4) - LocalObject(3117, Terminal.Constructor(Vector3(1619.279f, 2652.574f, 44.50148f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(2191, FacilityTurret.Constructor(Vector3(1446.436f, 2654.902f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 3261, + SpawnTube.Constructor(Vector3(1545.317f, 2690.068f, 37.80148f), Vector3(0, 0, 35)), + owning_building_guid = 4 + ) + LocalObject( + 3262, + SpawnTube.Constructor(Vector3(1549.499f, 2696.04f, 37.80148f), Vector3(0, 0, 35)), + owning_building_guid = 4 + ) + LocalObject( + 3263, + SpawnTube.Constructor(Vector3(1553.679f, 2702.01f, 37.80148f), Vector3(0, 0, 35)), + owning_building_guid = 4 + ) + LocalObject( + 2334, + ProximityTerminal.Constructor(Vector3(1549.936f, 2700.641f, 50.30148f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2335, + ProximityTerminal.Constructor(Vector3(1578.14f, 2687.76f, 30.30148f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2672, + ProximityTerminal.Constructor(Vector3(1532.445f, 2737.031f, 53.60648f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2673, + Terminal.Constructor(Vector3(1532.445f, 2737.031f, 53.60648f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2675, + ProximityTerminal.Constructor(Vector3(1532.642f, 2623.037f, 53.62947f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2676, + Terminal.Constructor(Vector3(1532.642f, 2623.037f, 53.62947f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2678, + ProximityTerminal.Constructor(Vector3(1597.07f, 2643.433f, 53.60648f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2679, + Terminal.Constructor(Vector3(1597.07f, 2643.433f, 53.60648f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2681, + ProximityTerminal.Constructor(Vector3(1622.717f, 2719.774f, 55.76748f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2682, + Terminal.Constructor(Vector3(1622.717f, 2719.774f, 55.76748f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3112, + ProximityTerminal.Constructor(Vector3(1510.697f, 2728.372f, 44.50148f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 3113, + Terminal.Constructor(Vector3(1510.697f, 2728.372f, 44.50148f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 3116, + ProximityTerminal.Constructor(Vector3(1619.279f, 2652.574f, 44.50148f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 3117, + Terminal.Constructor(Vector3(1619.279f, 2652.574f, 44.50148f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2191, + FacilityTurret.Constructor(Vector3(1446.436f, 2654.902f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2191, 5006) - LocalObject(2193, FacilityTurret.Constructor(Vector3(1493.969f, 2618.9f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 2193, + FacilityTurret.Constructor(Vector3(1493.969f, 2618.9f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2193, 5007) - LocalObject(2196, FacilityTurret.Constructor(Vector3(1562.09f, 2820.123f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 2196, + FacilityTurret.Constructor(Vector3(1562.09f, 2820.123f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2196, 5008) - LocalObject(2197, FacilityTurret.Constructor(Vector3(1572.113f, 2566.89f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 2197, + FacilityTurret.Constructor(Vector3(1572.113f, 2566.89f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2197, 5009) - LocalObject(2198, FacilityTurret.Constructor(Vector3(1653.26f, 2678.898f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 2198, + FacilityTurret.Constructor(Vector3(1653.26f, 2678.898f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2198, 5010) - LocalObject(2199, FacilityTurret.Constructor(Vector3(1687.798f, 2732.089f, 53.80947f), manned_turret), owning_building_guid = 4) + LocalObject( + 2199, + FacilityTurret.Constructor(Vector3(1687.798f, 2732.089f, 53.80947f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(2199, 5011) LocalObject(2883, Painbox.Constructor(Vector3(1515.027f, 2716.69f, 35.17247f), painbox), owning_building_guid = 4) - LocalObject(2900, Painbox.Constructor(Vector3(1557.035f, 2693.952f, 42.74987f), painbox_continuous), owning_building_guid = 4) - LocalObject(2917, Painbox.Constructor(Vector3(1527.751f, 2710.377f, 31.76048f), painbox_door_radius), owning_building_guid = 4) - LocalObject(2942, Painbox.Constructor(Vector3(1548.383f, 2680.905f, 39.00148f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2943, Painbox.Constructor(Vector3(1563.556f, 2702.446f, 39.06598f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2944, Painbox.Constructor(Vector3(1571.472f, 2690.4f, 40.98008f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 2900, + Painbox.Constructor(Vector3(1557.035f, 2693.952f, 42.74987f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2917, + Painbox.Constructor(Vector3(1527.751f, 2710.377f, 31.76048f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 2942, + Painbox.Constructor(Vector3(1548.383f, 2680.905f, 39.00148f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2943, + Painbox.Constructor(Vector3(1563.556f, 2702.446f, 39.06598f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2944, + Painbox.Constructor(Vector3(1571.472f, 2690.4f, 40.98008f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(385, Generator.Constructor(Vector3(1513.63f, 2721.156f, 29.00747f)), owning_building_guid = 4) - LocalObject(368, Terminal.Constructor(Vector3(1520.368f, 2716.496f, 30.30148f), gen_control), owning_building_guid = 4) + LocalObject( + 368, + Terminal.Constructor(Vector3(1520.368f, 2716.496f, 30.30148f), gen_control), + owning_building_guid = 4 + ) } Building5() def Building5(): Unit = { // Name: Ekera Type: amp_station GUID: 7, MapID: 5 - LocalBuilding("Ekera", 7, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5636f, 6622f, 50.96042f), Vector3(0f, 0f, 275f), amp_station))) - LocalObject(289, CaptureTerminal.Constructor(Vector3(5635.712f, 6625.324f, 62.46842f), capture_terminal), owning_building_guid = 7) + LocalBuilding( + "Ekera", + 7, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5636f, 6622f, 50.96042f), + Vector3(0f, 0f, 275f), + amp_station + ) + ) + ) + LocalObject( + 289, + CaptureTerminal.Constructor(Vector3(5635.712f, 6625.324f, 62.46842f), capture_terminal), + owning_building_guid = 7 + ) LocalObject(220, Door.Constructor(Vector3(5629.239f, 6621.197f, 63.86242f)), owning_building_guid = 7) LocalObject(221, Door.Constructor(Vector3(5642.798f, 6622.38f, 63.86242f)), owning_building_guid = 7) LocalObject(693, Door.Constructor(Vector3(5553.628f, 6597.224f, 60.67542f)), owning_building_guid = 7) @@ -326,18 +839,78 @@ object Map03 { // Cyssor LocalObject(3585, Door.Constructor(Vector3(5624.087f, 6640.358f, 45.51442f)), owning_building_guid = 7) LocalObject(3586, Door.Constructor(Vector3(5631.353f, 6640.994f, 45.51442f)), owning_building_guid = 7) LocalObject(3587, Door.Constructor(Vector3(5638.614f, 6641.629f, 45.51442f)), owning_building_guid = 7) - LocalObject(1263, IFFLock.Constructor(Vector3(5641.836f, 6590.474f, 52.64042f), Vector3(0, 0, 175)), owning_building_guid = 7, door_guid = 1199) - LocalObject(1506, IFFLock.Constructor(Vector3(5600.016f, 6616.802f, 57.62242f), Vector3(0, 0, 265)), owning_building_guid = 7, door_guid = 703) - LocalObject(1507, IFFLock.Constructor(Vector3(5603.079f, 6624.283f, 62.62142f), Vector3(0, 0, 355)), owning_building_guid = 7, door_guid = 704) - LocalObject(1508, IFFLock.Constructor(Vector3(5608.083f, 6613.995f, 62.62142f), Vector3(0, 0, 175)), owning_building_guid = 7, door_guid = 705) - LocalObject(1509, IFFLock.Constructor(Vector3(5618.345f, 6630.923f, 44.99642f), Vector3(0, 0, 265)), owning_building_guid = 7, door_guid = 1084) - LocalObject(1510, IFFLock.Constructor(Vector3(5622.398f, 6621.753f, 37.49642f), Vector3(0, 0, 355)), owning_building_guid = 7, door_guid = 1086) - LocalObject(1511, IFFLock.Constructor(Vector3(5629.468f, 6668.799f, 37.49642f), Vector3(0, 0, 175)), owning_building_guid = 7, door_guid = 1087) - LocalObject(1512, IFFLock.Constructor(Vector3(5643.724f, 6636.3f, 44.99642f), Vector3(0, 0, 85)), owning_building_guid = 7, door_guid = 1092) - LocalObject(1513, IFFLock.Constructor(Vector3(5663.983f, 6629.612f, 62.62142f), Vector3(0, 0, 355)), owning_building_guid = 7, door_guid = 706) - LocalObject(1514, IFFLock.Constructor(Vector3(5668.992f, 6619.323f, 62.62142f), Vector3(0, 0, 175)), owning_building_guid = 7, door_guid = 707) - LocalObject(1515, IFFLock.Constructor(Vector3(5672.005f, 6627.202f, 57.62242f), Vector3(0, 0, 85)), owning_building_guid = 7, door_guid = 708) - LocalObject(1520, IFFLock.Constructor(Vector3(5709.716f, 6706.792f, 52.62042f), Vector3(0, 0, 85)), owning_building_guid = 7, door_guid = 716) + LocalObject( + 1263, + IFFLock.Constructor(Vector3(5641.836f, 6590.474f, 52.64042f), Vector3(0, 0, 175)), + owning_building_guid = 7, + door_guid = 1199 + ) + LocalObject( + 1506, + IFFLock.Constructor(Vector3(5600.016f, 6616.802f, 57.62242f), Vector3(0, 0, 265)), + owning_building_guid = 7, + door_guid = 703 + ) + LocalObject( + 1507, + IFFLock.Constructor(Vector3(5603.079f, 6624.283f, 62.62142f), Vector3(0, 0, 355)), + owning_building_guid = 7, + door_guid = 704 + ) + LocalObject( + 1508, + IFFLock.Constructor(Vector3(5608.083f, 6613.995f, 62.62142f), Vector3(0, 0, 175)), + owning_building_guid = 7, + door_guid = 705 + ) + LocalObject( + 1509, + IFFLock.Constructor(Vector3(5618.345f, 6630.923f, 44.99642f), Vector3(0, 0, 265)), + owning_building_guid = 7, + door_guid = 1084 + ) + LocalObject( + 1510, + IFFLock.Constructor(Vector3(5622.398f, 6621.753f, 37.49642f), Vector3(0, 0, 355)), + owning_building_guid = 7, + door_guid = 1086 + ) + LocalObject( + 1511, + IFFLock.Constructor(Vector3(5629.468f, 6668.799f, 37.49642f), Vector3(0, 0, 175)), + owning_building_guid = 7, + door_guid = 1087 + ) + LocalObject( + 1512, + IFFLock.Constructor(Vector3(5643.724f, 6636.3f, 44.99642f), Vector3(0, 0, 85)), + owning_building_guid = 7, + door_guid = 1092 + ) + LocalObject( + 1513, + IFFLock.Constructor(Vector3(5663.983f, 6629.612f, 62.62142f), Vector3(0, 0, 355)), + owning_building_guid = 7, + door_guid = 706 + ) + LocalObject( + 1514, + IFFLock.Constructor(Vector3(5668.992f, 6619.323f, 62.62142f), Vector3(0, 0, 175)), + owning_building_guid = 7, + door_guid = 707 + ) + LocalObject( + 1515, + IFFLock.Constructor(Vector3(5672.005f, 6627.202f, 57.62242f), Vector3(0, 0, 85)), + owning_building_guid = 7, + door_guid = 708 + ) + LocalObject( + 1520, + IFFLock.Constructor(Vector3(5709.716f, 6706.792f, 52.62042f), Vector3(0, 0, 85)), + owning_building_guid = 7, + door_guid = 716 + ) LocalObject(1977, Locker.Constructor(Vector3(5621.458f, 6629.197f, 43.92142f)), owning_building_guid = 7) LocalObject(1978, Locker.Constructor(Vector3(5621.56f, 6628.038f, 43.92142f)), owning_building_guid = 7) LocalObject(1979, Locker.Constructor(Vector3(5621.66f, 6626.895f, 43.92142f)), owning_building_guid = 7) @@ -350,65 +923,258 @@ object Map03 { // Cyssor LocalObject(1986, Locker.Constructor(Vector3(5643.192f, 6610.528f, 36.16042f)), owning_building_guid = 7) LocalObject(1987, Locker.Constructor(Vector3(5643.309f, 6609.197f, 36.16042f)), owning_building_guid = 7) LocalObject(1988, Locker.Constructor(Vector3(5643.425f, 6607.865f, 36.16042f)), owning_building_guid = 7) - LocalObject(2496, Terminal.Constructor(Vector3(5613.608f, 6620.043f, 52.48942f), order_terminal), owning_building_guid = 7) - LocalObject(2497, Terminal.Constructor(Vector3(5626.975f, 6626.577f, 45.25042f), order_terminal), owning_building_guid = 7) - LocalObject(2498, Terminal.Constructor(Vector3(5630.691f, 6626.902f, 45.25042f), order_terminal), owning_building_guid = 7) - LocalObject(2499, Terminal.Constructor(Vector3(5634.038f, 6644.381f, 52.48942f), order_terminal), owning_building_guid = 7) - LocalObject(2500, Terminal.Constructor(Vector3(5634.466f, 6627.232f, 45.25042f), order_terminal), owning_building_guid = 7) - LocalObject(2501, Terminal.Constructor(Vector3(5658.391f, 6623.961f, 52.48942f), order_terminal), owning_building_guid = 7) - LocalObject(3465, Terminal.Constructor(Vector3(5621.633f, 6639.845f, 45.79442f), spawn_terminal), owning_building_guid = 7) - LocalObject(3466, Terminal.Constructor(Vector3(5628.897f, 6640.484f, 45.79442f), spawn_terminal), owning_building_guid = 7) - LocalObject(3467, Terminal.Constructor(Vector3(5631.038f, 6627.091f, 57.68842f), spawn_terminal), owning_building_guid = 7) - LocalObject(3468, Terminal.Constructor(Vector3(5636.158f, 6641.117f, 45.79442f), spawn_terminal), owning_building_guid = 7) - LocalObject(3469, Terminal.Constructor(Vector3(5649.264f, 6647.194f, 37.71742f), spawn_terminal), owning_building_guid = 7) - LocalObject(3470, Terminal.Constructor(Vector3(5671.081f, 6673.194f, 45.21742f), spawn_terminal), owning_building_guid = 7) - LocalObject(3728, Terminal.Constructor(Vector3(5713.982f, 6676.931f, 53.06242f), vehicle_terminal_combined), owning_building_guid = 7) - LocalObject(2320, VehicleSpawnPad.Constructor(Vector3(5700.404f, 6675.652f, 48.90542f), mb_pad_creation, Vector3(0, 0, 265)), owning_building_guid = 7, terminal_guid = 3728) + LocalObject( + 2496, + Terminal.Constructor(Vector3(5613.608f, 6620.043f, 52.48942f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2497, + Terminal.Constructor(Vector3(5626.975f, 6626.577f, 45.25042f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2498, + Terminal.Constructor(Vector3(5630.691f, 6626.902f, 45.25042f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2499, + Terminal.Constructor(Vector3(5634.038f, 6644.381f, 52.48942f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2500, + Terminal.Constructor(Vector3(5634.466f, 6627.232f, 45.25042f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2501, + Terminal.Constructor(Vector3(5658.391f, 6623.961f, 52.48942f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3465, + Terminal.Constructor(Vector3(5621.633f, 6639.845f, 45.79442f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3466, + Terminal.Constructor(Vector3(5628.897f, 6640.484f, 45.79442f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3467, + Terminal.Constructor(Vector3(5631.038f, 6627.091f, 57.68842f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3468, + Terminal.Constructor(Vector3(5636.158f, 6641.117f, 45.79442f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3469, + Terminal.Constructor(Vector3(5649.264f, 6647.194f, 37.71742f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3470, + Terminal.Constructor(Vector3(5671.081f, 6673.194f, 45.21742f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3728, + Terminal.Constructor(Vector3(5713.982f, 6676.931f, 53.06242f), vehicle_terminal_combined), + owning_building_guid = 7 + ) + LocalObject( + 2320, + VehicleSpawnPad.Constructor(Vector3(5700.404f, 6675.652f, 48.90542f), mb_pad_creation, Vector3(0, 0, 265)), + owning_building_guid = 7, + terminal_guid = 3728 + ) LocalObject(3228, ResourceSilo.Constructor(Vector3(5555.418f, 6562.104f, 58.19542f)), owning_building_guid = 7) - LocalObject(3321, SpawnTube.Constructor(Vector3(5623.003f, 6640.706f, 43.66042f), Vector3(0, 0, 85)), owning_building_guid = 7) - LocalObject(3322, SpawnTube.Constructor(Vector3(5630.267f, 6641.341f, 43.66042f), Vector3(0, 0, 85)), owning_building_guid = 7) - LocalObject(3323, SpawnTube.Constructor(Vector3(5637.527f, 6641.976f, 43.66042f), Vector3(0, 0, 85)), owning_building_guid = 7) - LocalObject(2347, ProximityTerminal.Constructor(Vector3(5634.072f, 6643.963f, 56.16042f), medical_terminal), owning_building_guid = 7) - LocalObject(2348, ProximityTerminal.Constructor(Vector3(5642.334f, 6614.078f, 36.16042f), medical_terminal), owning_building_guid = 7) - LocalObject(2771, ProximityTerminal.Constructor(Vector3(5563.508f, 6607.328f, 59.48842f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2772, Terminal.Constructor(Vector3(5563.508f, 6607.328f, 59.48842f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2774, ProximityTerminal.Constructor(Vector3(5620.546f, 6571.084f, 59.46542f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2775, Terminal.Constructor(Vector3(5620.546f, 6571.084f, 59.46542f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2777, ProximityTerminal.Constructor(Vector3(5650.706f, 6680.753f, 59.46542f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2778, Terminal.Constructor(Vector3(5650.706f, 6680.753f, 59.46542f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2780, ProximityTerminal.Constructor(Vector3(5695.512f, 6600.508f, 61.62642f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2781, Terminal.Constructor(Vector3(5695.512f, 6600.508f, 61.62642f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(3176, ProximityTerminal.Constructor(Vector3(5630.093f, 6691.848f, 50.36042f), repair_silo), owning_building_guid = 7) - LocalObject(3177, Terminal.Constructor(Vector3(5630.093f, 6691.848f, 50.36042f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(3180, ProximityTerminal.Constructor(Vector3(5641.824f, 6559.947f, 50.36042f), repair_silo), owning_building_guid = 7) - LocalObject(3181, Terminal.Constructor(Vector3(5641.824f, 6559.947f, 50.36042f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(2263, FacilityTurret.Constructor(Vector3(5532.506f, 6693.848f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 3321, + SpawnTube.Constructor(Vector3(5623.003f, 6640.706f, 43.66042f), Vector3(0, 0, 85)), + owning_building_guid = 7 + ) + LocalObject( + 3322, + SpawnTube.Constructor(Vector3(5630.267f, 6641.341f, 43.66042f), Vector3(0, 0, 85)), + owning_building_guid = 7 + ) + LocalObject( + 3323, + SpawnTube.Constructor(Vector3(5637.527f, 6641.976f, 43.66042f), Vector3(0, 0, 85)), + owning_building_guid = 7 + ) + LocalObject( + 2347, + ProximityTerminal.Constructor(Vector3(5634.072f, 6643.963f, 56.16042f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2348, + ProximityTerminal.Constructor(Vector3(5642.334f, 6614.078f, 36.16042f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2771, + ProximityTerminal.Constructor(Vector3(5563.508f, 6607.328f, 59.48842f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2772, + Terminal.Constructor(Vector3(5563.508f, 6607.328f, 59.48842f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2774, + ProximityTerminal.Constructor(Vector3(5620.546f, 6571.084f, 59.46542f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2775, + Terminal.Constructor(Vector3(5620.546f, 6571.084f, 59.46542f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2777, + ProximityTerminal.Constructor(Vector3(5650.706f, 6680.753f, 59.46542f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2778, + Terminal.Constructor(Vector3(5650.706f, 6680.753f, 59.46542f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2780, + ProximityTerminal.Constructor(Vector3(5695.512f, 6600.508f, 61.62642f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2781, + Terminal.Constructor(Vector3(5695.512f, 6600.508f, 61.62642f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3176, + ProximityTerminal.Constructor(Vector3(5630.093f, 6691.848f, 50.36042f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 3177, + Terminal.Constructor(Vector3(5630.093f, 6691.848f, 50.36042f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 3180, + ProximityTerminal.Constructor(Vector3(5641.824f, 6559.947f, 50.36042f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 3181, + Terminal.Constructor(Vector3(5641.824f, 6559.947f, 50.36042f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2263, + FacilityTurret.Constructor(Vector3(5532.506f, 6693.848f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2263, 5012) - LocalObject(2264, FacilityTurret.Constructor(Vector3(5535.48f, 6634.294f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 2264, + FacilityTurret.Constructor(Vector3(5535.48f, 6634.294f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2264, 5013) - LocalObject(2265, FacilityTurret.Constructor(Vector3(5545.869f, 6541.001f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 2265, + FacilityTurret.Constructor(Vector3(5545.869f, 6541.001f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2265, 5014) - LocalObject(2269, FacilityTurret.Constructor(Vector3(5683.832f, 6550.836f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 2269, + FacilityTurret.Constructor(Vector3(5683.832f, 6550.836f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2269, 5015) - LocalObject(2271, FacilityTurret.Constructor(Vector3(5733.413f, 6711.455f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 2271, + FacilityTurret.Constructor(Vector3(5733.413f, 6711.455f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2271, 5016) - LocalObject(2273, FacilityTurret.Constructor(Vector3(5746.779f, 6558.57f, 59.66842f), manned_turret), owning_building_guid = 7) + LocalObject( + 2273, + FacilityTurret.Constructor(Vector3(5746.779f, 6558.57f, 59.66842f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(2273, 5017) - LocalObject(2891, Painbox.Constructor(Vector3(5623.927f, 6681.021f, 41.03142f), painbox), owning_building_guid = 7) - LocalObject(2908, Painbox.Constructor(Vector3(5633.512f, 6634.225f, 48.60882f), painbox_continuous), owning_building_guid = 7) - LocalObject(2925, Painbox.Constructor(Vector3(5627.27f, 6667.216f, 37.61942f), painbox_door_radius), owning_building_guid = 7) - LocalObject(2966, Painbox.Constructor(Vector3(5617.956f, 6632.467f, 44.86042f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2967, Painbox.Constructor(Vector3(5640.07f, 6620.883f, 46.83902f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2968, Painbox.Constructor(Vector3(5644.209f, 6634.69f, 44.92492f), painbox_door_radius_continuous), owning_building_guid = 7) + LocalObject( + 2891, + Painbox.Constructor(Vector3(5623.927f, 6681.021f, 41.03142f), painbox), + owning_building_guid = 7 + ) + LocalObject( + 2908, + Painbox.Constructor(Vector3(5633.512f, 6634.225f, 48.60882f), painbox_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2925, + Painbox.Constructor(Vector3(5627.27f, 6667.216f, 37.61942f), painbox_door_radius), + owning_building_guid = 7 + ) + LocalObject( + 2966, + Painbox.Constructor(Vector3(5617.956f, 6632.467f, 44.86042f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2967, + Painbox.Constructor(Vector3(5640.07f, 6620.883f, 46.83902f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2968, + Painbox.Constructor(Vector3(5644.209f, 6634.69f, 44.92492f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) LocalObject(393, Generator.Constructor(Vector3(5626.451f, 6684.962f, 34.86642f)), owning_building_guid = 7) - LocalObject(376, Terminal.Constructor(Vector3(5627.212f, 6676.806f, 36.16042f), gen_control), owning_building_guid = 7) + LocalObject( + 376, + Terminal.Constructor(Vector3(5627.212f, 6676.806f, 36.16042f), gen_control), + owning_building_guid = 7 + ) } Building20() def Building20(): Unit = { // Name: Kaang Type: amp_station GUID: 10, MapID: 20 - LocalBuilding("Kaang", 10, 20, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5846f, 3956f, 62.32429f), Vector3(0f, 0f, 205f), amp_station))) - LocalObject(290, CaptureTerminal.Constructor(Vector3(5849.025f, 3957.407f, 73.83229f), capture_terminal), owning_building_guid = 10) + LocalBuilding( + "Kaang", + 10, + 20, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5846f, 3956f, 62.32429f), + Vector3(0f, 0f, 205f), + amp_station + ) + ) + ) + LocalObject( + 290, + CaptureTerminal.Constructor(Vector3(5849.025f, 3957.407f, 73.83229f), capture_terminal), + owning_building_guid = 10 + ) LocalObject(222, Door.Constructor(Vector3(5842.933f, 3962.078f, 75.22629f)), owning_building_guid = 10) LocalObject(223, Door.Constructor(Vector3(5848.682f, 3949.742f, 75.22629f)), owning_building_guid = 10) LocalObject(719, Door.Constructor(Vector3(5764.942f, 3987.376f, 72.03929f)), owning_building_guid = 10) @@ -454,18 +1220,78 @@ object Map03 { // Cyssor LocalObject(3590, Door.Constructor(Vector3(5859.177f, 3973.473f, 56.87829f)), owning_building_guid = 10) LocalObject(3591, Door.Constructor(Vector3(5862.259f, 3966.863f, 56.87829f)), owning_building_guid = 10) LocalObject(3592, Door.Constructor(Vector3(5865.34f, 3960.257f, 56.87829f)), owning_building_guid = 10) - LocalObject(1264, IFFLock.Constructor(Vector3(5818.371f, 3939.733f, 64.00429f), Vector3(0, 0, 245)), owning_building_guid = 10, door_guid = 1200) - LocalObject(1521, IFFLock.Constructor(Vector3(5828.808f, 3988.036f, 68.98629f), Vector3(0, 0, 335)), owning_building_guid = 10, door_guid = 724) - LocalObject(1522, IFFLock.Constructor(Vector3(5828.929f, 3979.495f, 73.98529f), Vector3(0, 0, 245)), owning_building_guid = 10, door_guid = 723) - LocalObject(1523, IFFLock.Constructor(Vector3(5836.886f, 3987.717f, 73.98529f), Vector3(0, 0, 65)), owning_building_guid = 10, door_guid = 725) - LocalObject(1524, IFFLock.Constructor(Vector3(5841.116f, 3968.698f, 48.86029f), Vector3(0, 0, 65)), owning_building_guid = 10, door_guid = 1105) - LocalObject(1525, IFFLock.Constructor(Vector3(5848.347f, 3975.642f, 56.36029f), Vector3(0, 0, 335)), owning_building_guid = 10, door_guid = 1110) - LocalObject(1526, IFFLock.Constructor(Vector3(5854.769f, 3924.082f, 73.98529f), Vector3(0, 0, 245)), owning_building_guid = 10, door_guid = 726) - LocalObject(1527, IFFLock.Constructor(Vector3(5862.079f, 3953.633f, 56.36029f), Vector3(0, 0, 155)), owning_building_guid = 10, door_guid = 1114) - LocalObject(1528, IFFLock.Constructor(Vector3(5862.724f, 3932.308f, 73.98529f), Vector3(0, 0, 65)), owning_building_guid = 10, door_guid = 728) - LocalObject(1529, IFFLock.Constructor(Vector3(5863.203f, 3923.946f, 68.98629f), Vector3(0, 0, 155)), owning_building_guid = 10, door_guid = 727) - LocalObject(1530, IFFLock.Constructor(Vector3(5887.743f, 3978.144f, 48.86029f), Vector3(0, 0, 245)), owning_building_guid = 10, door_guid = 1121) - LocalObject(1535, IFFLock.Constructor(Vector3(5950.891f, 3915.729f, 63.98429f), Vector3(0, 0, 155)), owning_building_guid = 10, door_guid = 739) + LocalObject( + 1264, + IFFLock.Constructor(Vector3(5818.371f, 3939.733f, 64.00429f), Vector3(0, 0, 245)), + owning_building_guid = 10, + door_guid = 1200 + ) + LocalObject( + 1521, + IFFLock.Constructor(Vector3(5828.808f, 3988.036f, 68.98629f), Vector3(0, 0, 335)), + owning_building_guid = 10, + door_guid = 724 + ) + LocalObject( + 1522, + IFFLock.Constructor(Vector3(5828.929f, 3979.495f, 73.98529f), Vector3(0, 0, 245)), + owning_building_guid = 10, + door_guid = 723 + ) + LocalObject( + 1523, + IFFLock.Constructor(Vector3(5836.886f, 3987.717f, 73.98529f), Vector3(0, 0, 65)), + owning_building_guid = 10, + door_guid = 725 + ) + LocalObject( + 1524, + IFFLock.Constructor(Vector3(5841.116f, 3968.698f, 48.86029f), Vector3(0, 0, 65)), + owning_building_guid = 10, + door_guid = 1105 + ) + LocalObject( + 1525, + IFFLock.Constructor(Vector3(5848.347f, 3975.642f, 56.36029f), Vector3(0, 0, 335)), + owning_building_guid = 10, + door_guid = 1110 + ) + LocalObject( + 1526, + IFFLock.Constructor(Vector3(5854.769f, 3924.082f, 73.98529f), Vector3(0, 0, 245)), + owning_building_guid = 10, + door_guid = 726 + ) + LocalObject( + 1527, + IFFLock.Constructor(Vector3(5862.079f, 3953.633f, 56.36029f), Vector3(0, 0, 155)), + owning_building_guid = 10, + door_guid = 1114 + ) + LocalObject( + 1528, + IFFLock.Constructor(Vector3(5862.724f, 3932.308f, 73.98529f), Vector3(0, 0, 65)), + owning_building_guid = 10, + door_guid = 728 + ) + LocalObject( + 1529, + IFFLock.Constructor(Vector3(5863.203f, 3923.946f, 68.98629f), Vector3(0, 0, 155)), + owning_building_guid = 10, + door_guid = 727 + ) + LocalObject( + 1530, + IFFLock.Constructor(Vector3(5887.743f, 3978.144f, 48.86029f), Vector3(0, 0, 245)), + owning_building_guid = 10, + door_guid = 1121 + ) + LocalObject( + 1535, + IFFLock.Constructor(Vector3(5950.891f, 3915.729f, 63.98429f), Vector3(0, 0, 155)), + owning_building_guid = 10, + door_guid = 739 + ) LocalObject(1997, Locker.Constructor(Vector3(5835.257f, 3944.188f, 47.52429f)), owning_building_guid = 10) LocalObject(1998, Locker.Constructor(Vector3(5836.469f, 3944.753f, 47.52429f)), owning_building_guid = 10) LocalObject(1999, Locker.Constructor(Vector3(5837.68f, 3945.318f, 47.52429f)), owning_building_guid = 10) @@ -478,65 +1304,258 @@ object Map03 { // Cyssor LocalObject(2006, Locker.Constructor(Vector3(5846.617f, 3949.485f, 47.52429f)), owning_building_guid = 10) LocalObject(2007, Locker.Constructor(Vector3(5846.734f, 3971.634f, 55.28529f)), owning_building_guid = 10) LocalObject(2008, Locker.Constructor(Vector3(5847.79f, 3972.126f, 55.28529f)), owning_building_guid = 10) - LocalObject(2505, Terminal.Constructor(Vector3(5836.502f, 3976.372f, 63.85329f), order_terminal), owning_building_guid = 10) - LocalObject(2506, Terminal.Constructor(Vector3(5847.214f, 3966.046f, 56.61429f), order_terminal), owning_building_guid = 10) - LocalObject(2507, Terminal.Constructor(Vector3(5848.791f, 3962.665f, 56.61429f), order_terminal), owning_building_guid = 10) - LocalObject(2508, Terminal.Constructor(Vector3(5850.392f, 3959.231f, 56.61429f), order_terminal), owning_building_guid = 10) - LocalObject(2509, Terminal.Constructor(Vector3(5855.501f, 3935.63f, 63.85329f), order_terminal), owning_building_guid = 10) - LocalObject(2510, Terminal.Constructor(Vector3(5866.36f, 3965.499f, 63.85329f), order_terminal), owning_building_guid = 10) - LocalObject(3471, Terminal.Constructor(Vector3(5849.086f, 3962.405f, 69.05229f), spawn_terminal), owning_building_guid = 10) - LocalObject(3472, Terminal.Constructor(Vector3(5857.855f, 3975.604f, 57.15829f), spawn_terminal), owning_building_guid = 10) - LocalObject(3473, Terminal.Constructor(Vector3(5860.94f, 3968.997f, 57.15829f), spawn_terminal), owning_building_guid = 10) - LocalObject(3474, Terminal.Constructor(Vector3(5864.018f, 3962.39f, 57.15829f), spawn_terminal), owning_building_guid = 10) - LocalObject(3475, Terminal.Constructor(Vector3(5874.211f, 3952.153f, 49.08129f), spawn_terminal), owning_building_guid = 10) - LocalObject(3476, Terminal.Constructor(Vector3(5906.105f, 3940.544f, 56.58129f), spawn_terminal), owning_building_guid = 10) - LocalObject(3729, Terminal.Constructor(Vector3(5924.29f, 3901.508f, 64.42629f), vehicle_terminal_combined), owning_building_guid = 10) - LocalObject(2321, VehicleSpawnPad.Constructor(Vector3(5918.444f, 3913.83f, 60.26929f), mb_pad_creation, Vector3(0, 0, -25)), owning_building_guid = 10, terminal_guid = 3729) + LocalObject( + 2505, + Terminal.Constructor(Vector3(5836.502f, 3976.372f, 63.85329f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2506, + Terminal.Constructor(Vector3(5847.214f, 3966.046f, 56.61429f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2507, + Terminal.Constructor(Vector3(5848.791f, 3962.665f, 56.61429f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2508, + Terminal.Constructor(Vector3(5850.392f, 3959.231f, 56.61429f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2509, + Terminal.Constructor(Vector3(5855.501f, 3935.63f, 63.85329f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2510, + Terminal.Constructor(Vector3(5866.36f, 3965.499f, 63.85329f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3471, + Terminal.Constructor(Vector3(5849.086f, 3962.405f, 69.05229f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3472, + Terminal.Constructor(Vector3(5857.855f, 3975.604f, 57.15829f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3473, + Terminal.Constructor(Vector3(5860.94f, 3968.997f, 57.15829f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3474, + Terminal.Constructor(Vector3(5864.018f, 3962.39f, 57.15829f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3475, + Terminal.Constructor(Vector3(5874.211f, 3952.153f, 49.08129f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3476, + Terminal.Constructor(Vector3(5906.105f, 3940.544f, 56.58129f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3729, + Terminal.Constructor(Vector3(5924.29f, 3901.508f, 64.42629f), vehicle_terminal_combined), + owning_building_guid = 10 + ) + LocalObject( + 2321, + VehicleSpawnPad.Constructor(Vector3(5918.444f, 3913.83f, 60.26929f), mb_pad_creation, Vector3(0, 0, -25)), + owning_building_guid = 10, + terminal_guid = 3729 + ) LocalObject(3229, ResourceSilo.Constructor(Vector3(5762.156f, 4011.236f, 69.55929f)), owning_building_guid = 10) - LocalObject(3326, SpawnTube.Constructor(Vector3(5859.132f, 3974.611f, 55.02429f), Vector3(0, 0, 155)), owning_building_guid = 10) - LocalObject(3327, SpawnTube.Constructor(Vector3(5862.213f, 3968.003f, 55.02429f), Vector3(0, 0, 155)), owning_building_guid = 10) - LocalObject(3328, SpawnTube.Constructor(Vector3(5865.293f, 3961.397f, 55.02429f), Vector3(0, 0, 155)), owning_building_guid = 10) - LocalObject(2349, ProximityTerminal.Constructor(Vector3(5840.722f, 3947.338f, 47.52429f), medical_terminal), owning_building_guid = 10) - LocalObject(2350, ProximityTerminal.Constructor(Vector3(5865.98f, 3965.323f, 67.52429f), medical_terminal), owning_building_guid = 10) - LocalObject(2783, ProximityTerminal.Constructor(Vector3(5792.869f, 3953.108f, 70.82929f), pad_landing_frame), owning_building_guid = 10) - LocalObject(2784, Terminal.Constructor(Vector3(5792.869f, 3953.108f, 70.82929f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(2786, ProximityTerminal.Constructor(Vector3(5807.419f, 4019.102f, 70.85229f), pad_landing_frame), owning_building_guid = 10) - LocalObject(2787, Terminal.Constructor(Vector3(5807.419f, 4019.102f, 70.85229f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(2789, ProximityTerminal.Constructor(Vector3(5846.158f, 3892.727f, 72.9903f), pad_landing_frame), owning_building_guid = 10) - LocalObject(2790, Terminal.Constructor(Vector3(5846.158f, 3892.727f, 72.9903f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(2792, ProximityTerminal.Constructor(Vector3(5906.24f, 3962.275f, 70.82929f), pad_landing_frame), owning_building_guid = 10) - LocalObject(2793, Terminal.Constructor(Vector3(5906.24f, 3962.275f, 70.82929f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(3184, ProximityTerminal.Constructor(Vector3(5789.681f, 3929.304f, 61.72429f), repair_silo), owning_building_guid = 10) - LocalObject(3185, Terminal.Constructor(Vector3(5789.681f, 3929.304f, 61.72429f), ground_rearm_terminal), owning_building_guid = 10) - LocalObject(3188, ProximityTerminal.Constructor(Vector3(5909.615f, 3985.44f, 61.72429f), repair_silo), owning_building_guid = 10) - LocalObject(3189, Terminal.Constructor(Vector3(5909.615f, 3985.44f, 61.72429f), ground_rearm_terminal), owning_building_guid = 10) - LocalObject(2272, FacilityTurret.Constructor(Vector3(5739.06f, 4012.993f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 3326, + SpawnTube.Constructor(Vector3(5859.132f, 3974.611f, 55.02429f), Vector3(0, 0, 155)), + owning_building_guid = 10 + ) + LocalObject( + 3327, + SpawnTube.Constructor(Vector3(5862.213f, 3968.003f, 55.02429f), Vector3(0, 0, 155)), + owning_building_guid = 10 + ) + LocalObject( + 3328, + SpawnTube.Constructor(Vector3(5865.293f, 3961.397f, 55.02429f), Vector3(0, 0, 155)), + owning_building_guid = 10 + ) + LocalObject( + 2349, + ProximityTerminal.Constructor(Vector3(5840.722f, 3947.338f, 47.52429f), medical_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2350, + ProximityTerminal.Constructor(Vector3(5865.98f, 3965.323f, 67.52429f), medical_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2783, + ProximityTerminal.Constructor(Vector3(5792.869f, 3953.108f, 70.82929f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 2784, + Terminal.Constructor(Vector3(5792.869f, 3953.108f, 70.82929f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2786, + ProximityTerminal.Constructor(Vector3(5807.419f, 4019.102f, 70.85229f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 2787, + Terminal.Constructor(Vector3(5807.419f, 4019.102f, 70.85229f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2789, + ProximityTerminal.Constructor(Vector3(5846.158f, 3892.727f, 72.9903f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 2790, + Terminal.Constructor(Vector3(5846.158f, 3892.727f, 72.9903f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2792, + ProximityTerminal.Constructor(Vector3(5906.24f, 3962.275f, 70.82929f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 2793, + Terminal.Constructor(Vector3(5906.24f, 3962.275f, 70.82929f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3184, + ProximityTerminal.Constructor(Vector3(5789.681f, 3929.304f, 61.72429f), repair_silo), + owning_building_guid = 10 + ) + LocalObject( + 3185, + Terminal.Constructor(Vector3(5789.681f, 3929.304f, 61.72429f), ground_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 3188, + ProximityTerminal.Constructor(Vector3(5909.615f, 3985.44f, 61.72429f), repair_silo), + owning_building_guid = 10 + ) + LocalObject( + 3189, + Terminal.Constructor(Vector3(5909.615f, 3985.44f, 61.72429f), ground_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 2272, + FacilityTurret.Constructor(Vector3(5739.06f, 4012.993f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2272, 5018) - LocalObject(2274, FacilityTurret.Constructor(Vector3(5795.487f, 3886.714f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 2274, + FacilityTurret.Constructor(Vector3(5795.487f, 3886.714f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2274, 5019) - LocalObject(2275, FacilityTurret.Constructor(Vector3(5823.173f, 4054.663f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 2275, + FacilityTurret.Constructor(Vector3(5823.173f, 4054.663f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2275, 5020) - LocalObject(2276, FacilityTurret.Constructor(Vector3(5824.284f, 3830.208f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 2276, + FacilityTurret.Constructor(Vector3(5824.284f, 3830.208f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2276, 5021) - LocalObject(2278, FacilityTurret.Constructor(Vector3(5878.118f, 4077.826f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 2278, + FacilityTurret.Constructor(Vector3(5878.118f, 4077.826f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2278, 5022) - LocalObject(2280, FacilityTurret.Constructor(Vector3(5963.377f, 3895.057f, 71.03229f), manned_turret), owning_building_guid = 10) + LocalObject( + 2280, + FacilityTurret.Constructor(Vector3(5963.377f, 3895.057f, 71.03229f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(2280, 5023) - LocalObject(2892, Painbox.Constructor(Vector3(5897.333f, 3987.531f, 52.39529f), painbox), owning_building_guid = 10) - LocalObject(2909, Painbox.Constructor(Vector3(5856.637f, 3962.52f, 59.97269f), painbox_continuous), owning_building_guid = 10) - LocalObject(2926, Painbox.Constructor(Vector3(5885.503f, 3979.668f, 48.98329f), painbox_door_radius), owning_building_guid = 10) - LocalObject(2969, Painbox.Constructor(Vector3(5846.343f, 3951.793f, 58.20289f), painbox_door_radius_continuous), owning_building_guid = 10) - LocalObject(2970, Painbox.Constructor(Vector3(5849.664f, 3976.536f, 56.22429f), painbox_door_radius_continuous), owning_building_guid = 10) - LocalObject(2971, Painbox.Constructor(Vector3(5860.732f, 3952.626f, 56.28879f), painbox_door_radius_continuous), owning_building_guid = 10) + LocalObject( + 2892, + Painbox.Constructor(Vector3(5897.333f, 3987.531f, 52.39529f), painbox), + owning_building_guid = 10 + ) + LocalObject( + 2909, + Painbox.Constructor(Vector3(5856.637f, 3962.52f, 59.97269f), painbox_continuous), + owning_building_guid = 10 + ) + LocalObject( + 2926, + Painbox.Constructor(Vector3(5885.503f, 3979.668f, 48.98329f), painbox_door_radius), + owning_building_guid = 10 + ) + LocalObject( + 2969, + Painbox.Constructor(Vector3(5846.343f, 3951.793f, 58.20289f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) + LocalObject( + 2970, + Painbox.Constructor(Vector3(5849.664f, 3976.536f, 56.22429f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) + LocalObject( + 2971, + Painbox.Constructor(Vector3(5860.732f, 3952.626f, 56.28879f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) LocalObject(394, Generator.Constructor(Vector3(5901.899f, 3986.507f, 46.23029f)), owning_building_guid = 10) - LocalObject(377, Terminal.Constructor(Vector3(5894.495f, 3983.003f, 47.52429f), gen_control), owning_building_guid = 10) + LocalObject( + 377, + Terminal.Constructor(Vector3(5894.495f, 3983.003f, 47.52429f), gen_control), + owning_building_guid = 10 + ) } Building15() def Building15(): Unit = { // Name: Pamba Type: amp_station GUID: 13, MapID: 15 - LocalBuilding("Pamba", 13, 15, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(7310f, 3078f, 62.94272f), Vector3(0f, 0f, 339f), amp_station))) - LocalObject(293, CaptureTerminal.Constructor(Vector3(7306.887f, 3079.198f, 74.45072f), capture_terminal), owning_building_guid = 13) + LocalBuilding( + "Pamba", + 13, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(7310f, 3078f, 62.94272f), + Vector3(0f, 0f, 339f), + amp_station + ) + ) + ) + LocalObject( + 293, + CaptureTerminal.Constructor(Vector3(7306.887f, 3079.198f, 74.45072f), capture_terminal), + owning_building_guid = 13 + ) LocalObject(224, Door.Constructor(Vector3(7307.758f, 3071.571f, 75.84472f)), owning_building_guid = 13) LocalObject(225, Door.Constructor(Vector3(7312.639f, 3084.276f, 75.84472f)), owning_building_guid = 13) LocalObject(786, Door.Constructor(Vector3(7226.648f, 3050.547f, 64.69372f)), owning_building_guid = 13) @@ -582,18 +1601,78 @@ object Map03 { // Cyssor LocalObject(3609, Door.Constructor(Vector3(7288.277f, 3075.341f, 57.49672f)), owning_building_guid = 13) LocalObject(3610, Door.Constructor(Vector3(7290.891f, 3082.15f, 57.49672f)), owning_building_guid = 13) LocalObject(3611, Door.Constructor(Vector3(7293.503f, 3088.955f, 57.49672f)), owning_building_guid = 13) - LocalObject(1267, IFFLock.Constructor(Vector3(7340.894f, 3069.425f, 64.62272f), Vector3(0, 0, 111)), owning_building_guid = 13, door_guid = 1203) - LocalObject(1572, IFFLock.Constructor(Vector3(7265.074f, 3092.645f, 49.47872f), Vector3(0, 0, 111)), owning_building_guid = 13, door_guid = 1166) - LocalObject(1573, IFFLock.Constructor(Vector3(7266.105f, 3181.426f, 64.60272f), Vector3(0, 0, 21)), owning_building_guid = 13, door_guid = 789) - LocalObject(1574, IFFLock.Constructor(Vector3(7293.516f, 3049.412f, 74.60372f), Vector3(0, 0, 291)), owning_building_guid = 13, door_guid = 791) - LocalObject(1575, IFFLock.Constructor(Vector3(7294.24f, 3066.043f, 56.97872f), Vector3(0, 0, 201)), owning_building_guid = 13, door_guid = 1173) - LocalObject(1576, IFFLock.Constructor(Vector3(7298.897f, 3043.379f, 69.60472f), Vector3(0, 0, 201)), owning_building_guid = 13, door_guid = 793) - LocalObject(1577, IFFLock.Constructor(Vector3(7300.534f, 3091.211f, 56.97872f), Vector3(0, 0, 21)), owning_building_guid = 13, door_guid = 1176) - LocalObject(1578, IFFLock.Constructor(Vector3(7304.259f, 3065.666f, 49.47872f), Vector3(0, 0, 291)), owning_building_guid = 13, door_guid = 1177) - LocalObject(1579, IFFLock.Constructor(Vector3(7304.958f, 3049.399f, 74.60372f), Vector3(0, 0, 111)), owning_building_guid = 13, door_guid = 794) - LocalObject(1580, IFFLock.Constructor(Vector3(7315.425f, 3106.488f, 74.60372f), Vector3(0, 0, 291)), owning_building_guid = 13, door_guid = 796) - LocalObject(1581, IFFLock.Constructor(Vector3(7321.108f, 3112.641f, 69.60472f), Vector3(0, 0, 21)), owning_building_guid = 13, door_guid = 798) - LocalObject(1582, IFFLock.Constructor(Vector3(7326.869f, 3106.479f, 74.60372f), Vector3(0, 0, 111)), owning_building_guid = 13, door_guid = 799) + LocalObject( + 1267, + IFFLock.Constructor(Vector3(7340.894f, 3069.425f, 64.62272f), Vector3(0, 0, 111)), + owning_building_guid = 13, + door_guid = 1203 + ) + LocalObject( + 1572, + IFFLock.Constructor(Vector3(7265.074f, 3092.645f, 49.47872f), Vector3(0, 0, 111)), + owning_building_guid = 13, + door_guid = 1166 + ) + LocalObject( + 1573, + IFFLock.Constructor(Vector3(7266.105f, 3181.426f, 64.60272f), Vector3(0, 0, 21)), + owning_building_guid = 13, + door_guid = 789 + ) + LocalObject( + 1574, + IFFLock.Constructor(Vector3(7293.516f, 3049.412f, 74.60372f), Vector3(0, 0, 291)), + owning_building_guid = 13, + door_guid = 791 + ) + LocalObject( + 1575, + IFFLock.Constructor(Vector3(7294.24f, 3066.043f, 56.97872f), Vector3(0, 0, 201)), + owning_building_guid = 13, + door_guid = 1173 + ) + LocalObject( + 1576, + IFFLock.Constructor(Vector3(7298.897f, 3043.379f, 69.60472f), Vector3(0, 0, 201)), + owning_building_guid = 13, + door_guid = 793 + ) + LocalObject( + 1577, + IFFLock.Constructor(Vector3(7300.534f, 3091.211f, 56.97872f), Vector3(0, 0, 21)), + owning_building_guid = 13, + door_guid = 1176 + ) + LocalObject( + 1578, + IFFLock.Constructor(Vector3(7304.259f, 3065.666f, 49.47872f), Vector3(0, 0, 291)), + owning_building_guid = 13, + door_guid = 1177 + ) + LocalObject( + 1579, + IFFLock.Constructor(Vector3(7304.958f, 3049.399f, 74.60372f), Vector3(0, 0, 111)), + owning_building_guid = 13, + door_guid = 794 + ) + LocalObject( + 1580, + IFFLock.Constructor(Vector3(7315.425f, 3106.488f, 74.60372f), Vector3(0, 0, 291)), + owning_building_guid = 13, + door_guid = 796 + ) + LocalObject( + 1581, + IFFLock.Constructor(Vector3(7321.108f, 3112.641f, 69.60472f), Vector3(0, 0, 21)), + owning_building_guid = 13, + door_guid = 798 + ) + LocalObject( + 1582, + IFFLock.Constructor(Vector3(7326.869f, 3106.479f, 74.60372f), Vector3(0, 0, 111)), + owning_building_guid = 13, + door_guid = 799 + ) LocalObject(2082, Locker.Constructor(Vector3(7297.157f, 3068.085f, 55.90372f)), owning_building_guid = 13) LocalObject(2083, Locker.Constructor(Vector3(7298.244f, 3067.668f, 55.90372f)), owning_building_guid = 13) LocalObject(2084, Locker.Constructor(Vector3(7299.314f, 3067.257f, 55.90372f)), owning_building_guid = 13) @@ -606,64 +1685,253 @@ object Map03 { // Cyssor LocalObject(2091, Locker.Constructor(Vector3(7323.464f, 3079.435f, 48.14272f)), owning_building_guid = 13) LocalObject(2092, Locker.Constructor(Vector3(7324.711f, 3078.957f, 48.14272f)), owning_building_guid = 13) LocalObject(2093, Locker.Constructor(Vector3(7325.959f, 3078.478f, 48.14272f)), owning_building_guid = 13) - LocalObject(2534, Terminal.Constructor(Vector3(7289.024f, 3086.048f, 64.47172f), order_terminal), owning_building_guid = 13) - LocalObject(2535, Terminal.Constructor(Vector3(7301.943f, 3057.017f, 64.47172f), order_terminal), owning_building_guid = 13) - LocalObject(2536, Terminal.Constructor(Vector3(7301.93f, 3071.895f, 57.23272f), order_terminal), owning_building_guid = 13) - LocalObject(2537, Terminal.Constructor(Vector3(7303.267f, 3075.378f, 57.23272f), order_terminal), owning_building_guid = 13) - LocalObject(2538, Terminal.Constructor(Vector3(7304.625f, 3078.915f, 57.23272f), order_terminal), owning_building_guid = 13) - LocalObject(2539, Terminal.Constructor(Vector3(7318.053f, 3098.985f, 64.47172f), order_terminal), owning_building_guid = 13) - LocalObject(3491, Terminal.Constructor(Vector3(7279.365f, 3131.972f, 57.19972f), spawn_terminal), owning_building_guid = 13) - LocalObject(3492, Terminal.Constructor(Vector3(7287.663f, 3072.91f, 57.77672f), spawn_terminal), owning_building_guid = 13) - LocalObject(3493, Terminal.Constructor(Vector3(7290.272f, 3079.719f, 57.77672f), spawn_terminal), owning_building_guid = 13) - LocalObject(3494, Terminal.Constructor(Vector3(7292.887f, 3086.522f, 57.77672f), spawn_terminal), owning_building_guid = 13) - LocalObject(3495, Terminal.Constructor(Vector3(7293.17f, 3100.966f, 49.69972f), spawn_terminal), owning_building_guid = 13) - LocalObject(3496, Terminal.Constructor(Vector3(7303.249f, 3075.771f, 69.67072f), spawn_terminal), owning_building_guid = 13) - LocalObject(3732, Terminal.Constructor(Vector3(7294.814f, 3172.17f, 65.04472f), vehicle_terminal_combined), owning_building_guid = 13) - LocalObject(2326, VehicleSpawnPad.Constructor(Vector3(7290.01f, 3159.406f, 60.88772f), mb_pad_creation, Vector3(0, 0, 201)), owning_building_guid = 13, terminal_guid = 3732) + LocalObject( + 2534, + Terminal.Constructor(Vector3(7289.024f, 3086.048f, 64.47172f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2535, + Terminal.Constructor(Vector3(7301.943f, 3057.017f, 64.47172f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2536, + Terminal.Constructor(Vector3(7301.93f, 3071.895f, 57.23272f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2537, + Terminal.Constructor(Vector3(7303.267f, 3075.378f, 57.23272f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2538, + Terminal.Constructor(Vector3(7304.625f, 3078.915f, 57.23272f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2539, + Terminal.Constructor(Vector3(7318.053f, 3098.985f, 64.47172f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3491, + Terminal.Constructor(Vector3(7279.365f, 3131.972f, 57.19972f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3492, + Terminal.Constructor(Vector3(7287.663f, 3072.91f, 57.77672f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3493, + Terminal.Constructor(Vector3(7290.272f, 3079.719f, 57.77672f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3494, + Terminal.Constructor(Vector3(7292.887f, 3086.522f, 57.77672f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3495, + Terminal.Constructor(Vector3(7293.17f, 3100.966f, 49.69972f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3496, + Terminal.Constructor(Vector3(7303.249f, 3075.771f, 69.67072f), spawn_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3732, + Terminal.Constructor(Vector3(7294.814f, 3172.17f, 65.04472f), vehicle_terminal_combined), + owning_building_guid = 13 + ) + LocalObject( + 2326, + VehicleSpawnPad.Constructor(Vector3(7290.01f, 3159.406f, 60.88772f), mb_pad_creation, Vector3(0, 0, 201)), + owning_building_guid = 13, + terminal_guid = 3732 + ) LocalObject(3232, ResourceSilo.Constructor(Vector3(7328.51f, 2979.317f, 70.17772f)), owning_building_guid = 13) - LocalObject(3345, SpawnTube.Constructor(Vector3(7287.49f, 3074.519f, 55.64272f), Vector3(0, 0, 21)), owning_building_guid = 13) - LocalObject(3346, SpawnTube.Constructor(Vector3(7290.103f, 3081.325f, 55.64272f), Vector3(0, 0, 21)), owning_building_guid = 13) - LocalObject(3347, SpawnTube.Constructor(Vector3(7292.715f, 3088.129f, 55.64272f), Vector3(0, 0, 21)), owning_building_guid = 13) - LocalObject(2354, ProximityTerminal.Constructor(Vector3(7289.414f, 3085.896f, 68.14272f), medical_terminal), owning_building_guid = 13) - LocalObject(2355, ProximityTerminal.Constructor(Vector3(7319.897f, 3080.221f, 48.14272f), medical_terminal), owning_building_guid = 13) - LocalObject(2825, ProximityTerminal.Constructor(Vector3(7263.64f, 3116.974f, 71.44772f), pad_landing_frame), owning_building_guid = 13) - LocalObject(2826, Terminal.Constructor(Vector3(7263.64f, 3116.974f, 71.44772f), air_rearm_terminal), owning_building_guid = 13) - LocalObject(2828, ProximityTerminal.Constructor(Vector3(7291.409f, 3006.413f, 71.47072f), pad_landing_frame), owning_building_guid = 13) - LocalObject(2829, Terminal.Constructor(Vector3(7291.409f, 3006.413f, 71.47072f), air_rearm_terminal), owning_building_guid = 13) - LocalObject(2831, ProximityTerminal.Constructor(Vector3(7348.988f, 3041.79f, 71.44772f), pad_landing_frame), owning_building_guid = 13) - LocalObject(2832, Terminal.Constructor(Vector3(7348.988f, 3041.79f, 71.44772f), air_rearm_terminal), owning_building_guid = 13) - LocalObject(2834, ProximityTerminal.Constructor(Vector3(7355.405f, 3122.067f, 73.60872f), pad_landing_frame), owning_building_guid = 13) - LocalObject(2835, Terminal.Constructor(Vector3(7355.405f, 3122.067f, 73.60872f), air_rearm_terminal), owning_building_guid = 13) - LocalObject(3208, ProximityTerminal.Constructor(Vector3(7244.632f, 3103.31f, 62.34272f), repair_silo), owning_building_guid = 13) - LocalObject(3209, Terminal.Constructor(Vector3(7244.632f, 3103.31f, 62.34272f), ground_rearm_terminal), owning_building_guid = 13) - LocalObject(3212, ProximityTerminal.Constructor(Vector3(7368.326f, 3056.032f, 62.34272f), repair_silo), owning_building_guid = 13) - LocalObject(3213, Terminal.Constructor(Vector3(7368.326f, 3056.032f, 62.34272f), ground_rearm_terminal), owning_building_guid = 13) - LocalObject(2296, FacilityTurret.Constructor(Vector3(7200.055f, 3016.477f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 3345, + SpawnTube.Constructor(Vector3(7287.49f, 3074.519f, 55.64272f), Vector3(0, 0, 21)), + owning_building_guid = 13 + ) + LocalObject( + 3346, + SpawnTube.Constructor(Vector3(7290.103f, 3081.325f, 55.64272f), Vector3(0, 0, 21)), + owning_building_guid = 13 + ) + LocalObject( + 3347, + SpawnTube.Constructor(Vector3(7292.715f, 3088.129f, 55.64272f), Vector3(0, 0, 21)), + owning_building_guid = 13 + ) + LocalObject( + 2354, + ProximityTerminal.Constructor(Vector3(7289.414f, 3085.896f, 68.14272f), medical_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2355, + ProximityTerminal.Constructor(Vector3(7319.897f, 3080.221f, 48.14272f), medical_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2825, + ProximityTerminal.Constructor(Vector3(7263.64f, 3116.974f, 71.44772f), pad_landing_frame), + owning_building_guid = 13 + ) + LocalObject( + 2826, + Terminal.Constructor(Vector3(7263.64f, 3116.974f, 71.44772f), air_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2828, + ProximityTerminal.Constructor(Vector3(7291.409f, 3006.413f, 71.47072f), pad_landing_frame), + owning_building_guid = 13 + ) + LocalObject( + 2829, + Terminal.Constructor(Vector3(7291.409f, 3006.413f, 71.47072f), air_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2831, + ProximityTerminal.Constructor(Vector3(7348.988f, 3041.79f, 71.44772f), pad_landing_frame), + owning_building_guid = 13 + ) + LocalObject( + 2832, + Terminal.Constructor(Vector3(7348.988f, 3041.79f, 71.44772f), air_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2834, + ProximityTerminal.Constructor(Vector3(7355.405f, 3122.067f, 73.60872f), pad_landing_frame), + owning_building_guid = 13 + ) + LocalObject( + 2835, + Terminal.Constructor(Vector3(7355.405f, 3122.067f, 73.60872f), air_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3208, + ProximityTerminal.Constructor(Vector3(7244.632f, 3103.31f, 62.34272f), repair_silo), + owning_building_guid = 13 + ) + LocalObject( + 3209, + Terminal.Constructor(Vector3(7244.632f, 3103.31f, 62.34272f), ground_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 3212, + ProximityTerminal.Constructor(Vector3(7368.326f, 3056.032f, 62.34272f), repair_silo), + owning_building_guid = 13 + ) + LocalObject( + 3213, + Terminal.Constructor(Vector3(7368.326f, 3056.032f, 62.34272f), ground_rearm_terminal), + owning_building_guid = 13 + ) + LocalObject( + 2296, + FacilityTurret.Constructor(Vector3(7200.055f, 3016.477f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2296, 5024) - LocalObject(2297, FacilityTurret.Constructor(Vector3(7254.885f, 2993.042f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 2297, + FacilityTurret.Constructor(Vector3(7254.885f, 2993.042f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2297, 5025) - LocalObject(2298, FacilityTurret.Constructor(Vector3(7272.302f, 3204.769f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 2298, + FacilityTurret.Constructor(Vector3(7272.302f, 3204.769f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2298, 5026) - LocalObject(2299, FacilityTurret.Constructor(Vector3(7343.29f, 2961.483f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 2299, + FacilityTurret.Constructor(Vector3(7343.29f, 2961.483f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2299, 5027) - LocalObject(2300, FacilityTurret.Constructor(Vector3(7394.93f, 3089.794f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 2300, + FacilityTurret.Constructor(Vector3(7394.93f, 3089.794f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2300, 5028) - LocalObject(2301, FacilityTurret.Constructor(Vector3(7415.573f, 3149.761f, 71.65072f), manned_turret), owning_building_guid = 13) + LocalObject( + 2301, + FacilityTurret.Constructor(Vector3(7415.573f, 3149.761f, 71.65072f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(2301, 5029) - LocalObject(2895, Painbox.Constructor(Vector3(7251.66f, 3093.022f, 53.01372f), painbox), owning_building_guid = 13) - LocalObject(2912, Painbox.Constructor(Vector3(7297.921f, 3081.123f, 60.59112f), painbox_continuous), owning_building_guid = 13) - LocalObject(2929, Painbox.Constructor(Vector3(7265.533f, 3089.975f, 49.60172f), painbox_door_radius), owning_building_guid = 13) - LocalObject(2978, Painbox.Constructor(Vector3(7292.683f, 3066.37f, 56.84272f), painbox_door_radius_continuous), owning_building_guid = 13) - LocalObject(2979, Painbox.Constructor(Vector3(7302.193f, 3090.941f, 56.90722f), painbox_door_radius_continuous), owning_building_guid = 13) - LocalObject(2980, Painbox.Constructor(Vector3(7312.788f, 3081.168f, 58.82132f), painbox_door_radius_continuous), owning_building_guid = 13) + LocalObject( + 2895, + Painbox.Constructor(Vector3(7251.66f, 3093.022f, 53.01372f), painbox), + owning_building_guid = 13 + ) + LocalObject( + 2912, + Painbox.Constructor(Vector3(7297.921f, 3081.123f, 60.59112f), painbox_continuous), + owning_building_guid = 13 + ) + LocalObject( + 2929, + Painbox.Constructor(Vector3(7265.533f, 3089.975f, 49.60172f), painbox_door_radius), + owning_building_guid = 13 + ) + LocalObject( + 2978, + Painbox.Constructor(Vector3(7292.683f, 3066.37f, 56.84272f), painbox_door_radius_continuous), + owning_building_guid = 13 + ) + LocalObject( + 2979, + Painbox.Constructor(Vector3(7302.193f, 3090.941f, 56.90722f), painbox_door_radius_continuous), + owning_building_guid = 13 + ) + LocalObject( + 2980, + Painbox.Constructor(Vector3(7312.788f, 3081.168f, 58.82132f), painbox_door_radius_continuous), + owning_building_guid = 13 + ) LocalObject(397, Generator.Constructor(Vector3(7249.224f, 3097.018f, 46.84872f)), owning_building_guid = 13) - LocalObject(380, Terminal.Constructor(Vector3(7256.889f, 3094.126f, 48.14272f), gen_control), owning_building_guid = 13) + LocalObject( + 380, + Terminal.Constructor(Vector3(7256.889f, 3094.126f, 48.14272f), gen_control), + owning_building_guid = 13 + ) } Building59() def Building59(): Unit = { // Name: bunkerg2 Type: bunker_gauntlet GUID: 16, MapID: 59 - LocalBuilding("bunkerg2", 16, 59, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2610f, 1338f, 64.04956f), Vector3(0f, 0f, 123f), bunker_gauntlet))) + LocalBuilding( + "bunkerg2", + 16, + 59, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2610f, 1338f, 64.04956f), + Vector3(0f, 0f, 123f), + bunker_gauntlet + ) + ) + ) LocalObject(513, Door.Constructor(Vector3(2598.02f, 1359.938f, 65.57056f)), owning_building_guid = 16) LocalObject(514, Door.Constructor(Vector3(2625.164f, 1318.16f, 65.57056f)), owning_building_guid = 16) } @@ -671,7 +1939,19 @@ object Map03 { // Cyssor Building58() def Building58(): Unit = { // Name: bunkerg1 Type: bunker_gauntlet GUID: 17, MapID: 58 - LocalBuilding("bunkerg1", 17, 58, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3906f, 4474f, 88.9639f), Vector3(0f, 0f, 110f), bunker_gauntlet))) + LocalBuilding( + "bunkerg1", + 17, + 58, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3906f, 4474f, 88.9639f), + Vector3(0f, 0f, 110f), + bunker_gauntlet + ) + ) + ) LocalObject(574, Door.Constructor(Vector3(3899.262f, 4498.07f, 90.4849f)), owning_building_guid = 17) LocalObject(575, Door.Constructor(Vector3(3916.312f, 4451.257f, 90.4849f)), owning_building_guid = 17) } @@ -679,7 +1959,19 @@ object Map03 { // Cyssor Building60() def Building60(): Unit = { // Name: bunkerg3 Type: bunker_gauntlet GUID: 18, MapID: 60 - LocalBuilding("bunkerg3", 18, 60, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4870f, 4466f, 53.91644f), Vector3(0f, 0f, 350f), bunker_gauntlet))) + LocalBuilding( + "bunkerg3", + 18, + 60, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4870f, 4466f, 53.91644f), + Vector3(0f, 0f, 350f), + bunker_gauntlet + ) + ) + ) LocalObject(613, Door.Constructor(Vector3(4845.148f, 4468.44f, 55.43744f)), owning_building_guid = 18) LocalObject(623, Door.Constructor(Vector3(4894.214f, 4459.8f, 55.43744f)), owning_building_guid = 18) } @@ -687,106 +1979,220 @@ object Map03 { // Cyssor Building54() def Building54(): Unit = { // Name: bunker11 Type: bunker_lg GUID: 19, MapID: 54 - LocalBuilding("bunker11", 19, 54, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(600f, 6826f, 59.91754f), Vector3(0f, 0f, 354f), bunker_lg))) + LocalBuilding( + "bunker11", + 19, + 54, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(600f, 6826f, 59.91754f), Vector3(0f, 0f, 354f), bunker_lg) + ) + ) LocalObject(415, Door.Constructor(Vector3(602.859f, 6828.271f, 61.43854f)), owning_building_guid = 19) } Building56() def Building56(): Unit = { // Name: bunker6 Type: bunker_lg GUID: 20, MapID: 56 - LocalBuilding("bunker6", 20, 56, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(708f, 2384f, 53.85228f), Vector3(0f, 0f, 112f), bunker_lg))) + LocalBuilding( + "bunker6", + 20, + 56, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(708f, 2384f, 53.85228f), Vector3(0f, 0f, 112f), bunker_lg) + ) + ) LocalObject(447, Door.Constructor(Vector3(704.653f, 2385.458f, 55.37328f)), owning_building_guid = 20) } Building52() def Building52(): Unit = { // Name: bunker8 Type: bunker_lg GUID: 21, MapID: 52 - LocalBuilding("bunker8", 21, 52, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1464f, 2568f, 45.02957f), Vector3(0f, 0f, 355f), bunker_lg))) + LocalBuilding( + "bunker8", + 21, + 52, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1464f, 2568f, 45.02957f), Vector3(0f, 0f, 355f), bunker_lg) + ) + ) LocalObject(486, Door.Constructor(Vector3(1466.819f, 2570.32f, 46.55057f)), owning_building_guid = 21) } Building48() def Building48(): Unit = { // Name: bunker3 Type: bunker_lg GUID: 22, MapID: 48 - LocalBuilding("bunker3", 22, 48, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5132f, 4998f, 40.94622f), Vector3(0f, 0f, 107f), bunker_lg))) + LocalBuilding( + "bunker3", + 22, + 48, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5132f, 4998f, 40.94622f), Vector3(0f, 0f, 107f), bunker_lg) + ) + ) LocalObject(660, Door.Constructor(Vector3(5128.793f, 4999.745f, 42.46722f)), owning_building_guid = 22) } Building71() def Building71(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 23, MapID: 71 - LocalBuilding("bunker_lg", 23, 71, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5208f, 3856f, 37.32201f), Vector3(0f, 0f, 69f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 23, + 71, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5208f, 3856f, 37.32201f), Vector3(0f, 0f, 69f), bunker_lg) + ) + ) LocalObject(677, Door.Constructor(Vector3(5206.547f, 3859.349f, 38.84301f)), owning_building_guid = 23) } Building55() def Building55(): Unit = { // Name: bunker12 Type: bunker_lg GUID: 24, MapID: 55 - LocalBuilding("bunker12", 24, 55, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6632f, 2306f, 62.59754f), Vector3(0f, 0f, 238f), bunker_lg))) + LocalBuilding( + "bunker12", + 24, + 55, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6632f, 2306f, 62.59754f), Vector3(0f, 0f, 238f), bunker_lg) + ) + ) LocalObject(740, Door.Constructor(Vector3(6632.788f, 2302.435f, 64.11855f)), owning_building_guid = 24) } Building51() def Building51(): Unit = { // Name: bunker7 Type: bunker_sm GUID: 25, MapID: 51 - LocalBuilding("bunker7", 25, 51, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1700f, 2702f, 45.14794f), Vector3(0f, 0f, 141f), bunker_sm))) + LocalBuilding( + "bunker7", + 25, + 51, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1700f, 2702f, 45.14794f), Vector3(0f, 0f, 141f), bunker_sm) + ) + ) LocalObject(508, Door.Constructor(Vector3(1699.083f, 2702.814f, 46.66894f)), owning_building_guid = 25) } Building49() def Building49(): Unit = { // Name: bunker4 Type: bunker_sm GUID: 26, MapID: 49 - LocalBuilding("bunker4", 26, 49, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2958f, 1284f, 48.15265f), Vector3(0f, 0f, 195f), bunker_sm))) + LocalBuilding( + "bunker4", + 26, + 49, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2958f, 1284f, 48.15265f), Vector3(0f, 0f, 195f), bunker_sm) + ) + ) LocalObject(549, Door.Constructor(Vector3(2956.802f, 1283.736f, 49.67365f)), owning_building_guid = 26) } Building53() def Building53(): Unit = { // Name: bunker10 Type: bunker_sm GUID: 27, MapID: 53 - LocalBuilding("bunker10", 27, 53, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4238f, 7044f, 51.17726f), Vector3(0f, 0f, 225f), bunker_sm))) + LocalBuilding( + "bunker10", + 27, + 53, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4238f, 7044f, 51.17726f), Vector3(0f, 0f, 225f), bunker_sm) + ) + ) LocalObject(612, Door.Constructor(Vector3(4237.095f, 7043.173f, 52.69826f)), owning_building_guid = 27) } Building50() def Building50(): Unit = { // Name: bunker5 Type: bunker_sm GUID: 28, MapID: 50 - LocalBuilding("bunker5", 28, 50, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5022f, 4280f, 53.97397f), Vector3(0f, 0f, 79f), bunker_sm))) + LocalBuilding( + "bunker5", + 28, + 50, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5022f, 4280f, 53.97397f), Vector3(0f, 0f, 79f), bunker_sm) + ) + ) LocalObject(643, Door.Constructor(Vector3(5022.288f, 4281.192f, 55.49497f)), owning_building_guid = 28) } Building46() def Building46(): Unit = { // Name: bunker1 Type: bunker_sm GUID: 29, MapID: 46 - LocalBuilding("bunker1", 29, 46, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5160f, 3442f, 48.0232f), Vector3(0f, 0f, 225f), bunker_sm))) + LocalBuilding( + "bunker1", + 29, + 46, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5160f, 3442f, 48.0232f), Vector3(0f, 0f, 225f), bunker_sm) + ) + ) LocalObject(670, Door.Constructor(Vector3(5159.095f, 3441.173f, 49.5442f)), owning_building_guid = 29) } Building47() def Building47(): Unit = { // Name: bunker2 Type: bunker_sm GUID: 30, MapID: 47 - LocalBuilding("bunker2", 30, 47, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5220f, 5806f, 56.73086f), Vector3(0f, 0f, 163f), bunker_sm))) + LocalBuilding( + "bunker2", + 30, + 47, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5220f, 5806f, 56.73086f), Vector3(0f, 0f, 163f), bunker_sm) + ) + ) LocalObject(678, Door.Constructor(Vector3(5218.845f, 5806.411f, 58.25186f)), owning_building_guid = 30) } Building57() def Building57(): Unit = { // Name: bunker9 Type: bunker_sm GUID: 31, MapID: 57 - LocalBuilding("bunker9", 31, 57, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5694f, 6524f, 50.47251f), Vector3(0f, 0f, 119f), bunker_sm))) + LocalBuilding( + "bunker9", + 31, + 57, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5694f, 6524f, 50.47251f), Vector3(0f, 0f, 119f), bunker_sm) + ) + ) LocalObject(710, Door.Constructor(Vector3(5693.454f, 6525.098f, 51.99351f)), owning_building_guid = 31) } Building70() def Building70(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 32, MapID: 70 - LocalBuilding("bunker_sm", 32, 70, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6854f, 3344f, 36.82418f), Vector3(0f, 0f, 274f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 32, + 70, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6854f, 3344f, 36.82418f), Vector3(0f, 0f, 274f), bunker_sm) + ) + ) LocalObject(762, Door.Constructor(Vector3(6854.031f, 3342.774f, 38.34518f)), owning_building_guid = 32) } Building2() def Building2(): Unit = { // Name: Bomazi Type: comm_station GUID: 33, MapID: 2 - LocalBuilding("Bomazi", 33, 2, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1194f, 4574f, 57.8283f), Vector3(0f, 0f, 331f), comm_station))) - LocalObject(280, CaptureTerminal.Constructor(Vector3(1269.762f, 4619.738f, 40.52831f), capture_terminal), owning_building_guid = 33) + LocalBuilding( + "Bomazi", + 33, + 2, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1194f, 4574f, 57.8283f), + Vector3(0f, 0f, 331f), + comm_station + ) + ) + ) + LocalObject( + 280, + CaptureTerminal.Constructor(Vector3(1269.762f, 4619.738f, 40.52831f), capture_terminal), + owning_building_guid = 33 + ) LocalObject(465, Door.Constructor(Vector3(1120.605f, 4564.948f, 59.5793f)), owning_building_guid = 33) LocalObject(466, Door.Constructor(Vector3(1123.788f, 4535.396f, 67.5433f)), owning_building_guid = 33) LocalObject(467, Door.Constructor(Vector3(1129.425f, 4580.859f, 67.5433f)), owning_building_guid = 33) @@ -828,18 +2234,78 @@ object Map03 { // Cyssor LocalObject(3516, Door.Constructor(Vector3(1232.733f, 4568.232f, 49.88231f)), owning_building_guid = 33) LocalObject(3517, Door.Constructor(Vector3(1236.269f, 4574.61f, 49.88231f)), owning_building_guid = 33) LocalObject(3518, Door.Constructor(Vector3(1239.802f, 4580.985f, 49.88231f)), owning_building_guid = 33) - LocalObject(1254, IFFLock.Constructor(Vector3(1211.467f, 4563.323f, 59.4803f), Vector3(0, 0, 119)), owning_building_guid = 33, door_guid = 1190) - LocalObject(1323, IFFLock.Constructor(Vector3(1173.653f, 4574.325f, 64.4893f), Vector3(0, 0, 209)), owning_building_guid = 33, door_guid = 469) - LocalObject(1324, IFFLock.Constructor(Vector3(1175.256f, 4585.653f, 64.4893f), Vector3(0, 0, 29)), owning_building_guid = 33, door_guid = 470) - LocalObject(1325, IFFLock.Constructor(Vector3(1184.866f, 4568.213f, 71.9093f), Vector3(0, 0, 299)), owning_building_guid = 33, door_guid = 471) - LocalObject(1326, IFFLock.Constructor(Vector3(1189.062f, 4603.103f, 41.8643f), Vector3(0, 0, 209)), owning_building_guid = 33, door_guid = 885) - LocalObject(1327, IFFLock.Constructor(Vector3(1208.991f, 4586.219f, 64.4893f), Vector3(0, 0, 299)), owning_building_guid = 33, door_guid = 472) - LocalObject(1328, IFFLock.Constructor(Vector3(1237.344f, 4558.195f, 49.3643f), Vector3(0, 0, 209)), owning_building_guid = 33, door_guid = 897) - LocalObject(1329, IFFLock.Constructor(Vector3(1247.015f, 4582.127f, 49.3643f), Vector3(0, 0, 29)), owning_building_guid = 33, door_guid = 899) - LocalObject(1330, IFFLock.Constructor(Vector3(1247.212f, 4556.427f, 41.8643f), Vector3(0, 0, 299)), owning_building_guid = 33, door_guid = 900) - LocalObject(1331, IFFLock.Constructor(Vector3(1260.479f, 4613.101f, 41.8643f), Vector3(0, 0, 299)), owning_building_guid = 33, door_guid = 902) - LocalObject(1332, IFFLock.Constructor(Vector3(1260.499f, 4626.358f, 59.47831f), Vector3(0, 0, 119)), owning_building_guid = 33, door_guid = 477) - LocalObject(1333, IFFLock.Constructor(Vector3(1270.422f, 4611.184f, 41.8643f), Vector3(0, 0, 119)), owning_building_guid = 33, door_guid = 904) + LocalObject( + 1254, + IFFLock.Constructor(Vector3(1211.467f, 4563.323f, 59.4803f), Vector3(0, 0, 119)), + owning_building_guid = 33, + door_guid = 1190 + ) + LocalObject( + 1323, + IFFLock.Constructor(Vector3(1173.653f, 4574.325f, 64.4893f), Vector3(0, 0, 209)), + owning_building_guid = 33, + door_guid = 469 + ) + LocalObject( + 1324, + IFFLock.Constructor(Vector3(1175.256f, 4585.653f, 64.4893f), Vector3(0, 0, 29)), + owning_building_guid = 33, + door_guid = 470 + ) + LocalObject( + 1325, + IFFLock.Constructor(Vector3(1184.866f, 4568.213f, 71.9093f), Vector3(0, 0, 299)), + owning_building_guid = 33, + door_guid = 471 + ) + LocalObject( + 1326, + IFFLock.Constructor(Vector3(1189.062f, 4603.103f, 41.8643f), Vector3(0, 0, 209)), + owning_building_guid = 33, + door_guid = 885 + ) + LocalObject( + 1327, + IFFLock.Constructor(Vector3(1208.991f, 4586.219f, 64.4893f), Vector3(0, 0, 299)), + owning_building_guid = 33, + door_guid = 472 + ) + LocalObject( + 1328, + IFFLock.Constructor(Vector3(1237.344f, 4558.195f, 49.3643f), Vector3(0, 0, 209)), + owning_building_guid = 33, + door_guid = 897 + ) + LocalObject( + 1329, + IFFLock.Constructor(Vector3(1247.015f, 4582.127f, 49.3643f), Vector3(0, 0, 29)), + owning_building_guid = 33, + door_guid = 899 + ) + LocalObject( + 1330, + IFFLock.Constructor(Vector3(1247.212f, 4556.427f, 41.8643f), Vector3(0, 0, 299)), + owning_building_guid = 33, + door_guid = 900 + ) + LocalObject( + 1331, + IFFLock.Constructor(Vector3(1260.479f, 4613.101f, 41.8643f), Vector3(0, 0, 299)), + owning_building_guid = 33, + door_guid = 902 + ) + LocalObject( + 1332, + IFFLock.Constructor(Vector3(1260.499f, 4626.358f, 59.47831f), Vector3(0, 0, 119)), + owning_building_guid = 33, + door_guid = 477 + ) + LocalObject( + 1333, + IFFLock.Constructor(Vector3(1270.422f, 4611.184f, 41.8643f), Vector3(0, 0, 119)), + owning_building_guid = 33, + door_guid = 904 + ) LocalObject(1674, Locker.Constructor(Vector3(1240.516f, 4559.811f, 48.28931f)), owning_building_guid = 33) LocalObject(1675, Locker.Constructor(Vector3(1241.534f, 4559.246f, 48.28931f)), owning_building_guid = 33) LocalObject(1676, Locker.Constructor(Vector3(1242.537f, 4558.69f, 48.28931f)), owning_building_guid = 33) @@ -852,60 +2318,233 @@ object Map03 { // Cyssor LocalObject(1683, Locker.Constructor(Vector3(1268.146f, 4567.389f, 40.52831f)), owning_building_guid = 33) LocalObject(1684, Locker.Constructor(Vector3(1269.315f, 4566.742f, 40.52831f)), owning_building_guid = 33) LocalObject(1685, Locker.Constructor(Vector3(1270.484f, 4566.093f, 40.52831f)), owning_building_guid = 33) - LocalObject(2385, Terminal.Constructor(Vector3(1174.39f, 4558.467f, 64.38831f), order_terminal), owning_building_guid = 33) - LocalObject(2386, Terminal.Constructor(Vector3(1190.452f, 4567.445f, 71.7833f), order_terminal), owning_building_guid = 33) - LocalObject(2387, Terminal.Constructor(Vector3(1191.399f, 4564.5f, 71.7833f), order_terminal), owning_building_guid = 33) - LocalObject(2388, Terminal.Constructor(Vector3(1193.531f, 4568.343f, 71.7833f), order_terminal), owning_building_guid = 33) - LocalObject(2389, Terminal.Constructor(Vector3(1245.773f, 4562.918f, 49.61831f), order_terminal), owning_building_guid = 33) - LocalObject(2390, Terminal.Constructor(Vector3(1247.582f, 4566.182f, 49.61831f), order_terminal), owning_building_guid = 33) - LocalObject(2391, Terminal.Constructor(Vector3(1249.419f, 4569.496f, 49.61831f), order_terminal), owning_building_guid = 33) - LocalObject(3403, Terminal.Constructor(Vector3(1181.046f, 4553.705f, 64.6453f), spawn_terminal), owning_building_guid = 33) - LocalObject(3404, Terminal.Constructor(Vector3(1184.121f, 4589.298f, 42.0853f), spawn_terminal), owning_building_guid = 33) - LocalObject(3405, Terminal.Constructor(Vector3(1212.847f, 4609.221f, 52.0853f), spawn_terminal), owning_building_guid = 33) - LocalObject(3406, Terminal.Constructor(Vector3(1231.786f, 4565.91f, 50.1623f), spawn_terminal), owning_building_guid = 33) - LocalObject(3407, Terminal.Constructor(Vector3(1235.318f, 4572.289f, 50.1623f), spawn_terminal), owning_building_guid = 33) - LocalObject(3408, Terminal.Constructor(Vector3(1238.854f, 4578.662f, 50.1623f), spawn_terminal), owning_building_guid = 33) - LocalObject(3719, Terminal.Constructor(Vector3(1266.436f, 4596.474f, 60.71531f), vehicle_terminal_combined), owning_building_guid = 33) - LocalObject(2307, VehicleSpawnPad.Constructor(Vector3(1254.444f, 4602.945f, 56.5573f), mb_pad_creation, Vector3(0, 0, -61)), owning_building_guid = 33, terminal_guid = 3719) + LocalObject( + 2385, + Terminal.Constructor(Vector3(1174.39f, 4558.467f, 64.38831f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2386, + Terminal.Constructor(Vector3(1190.452f, 4567.445f, 71.7833f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2387, + Terminal.Constructor(Vector3(1191.399f, 4564.5f, 71.7833f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2388, + Terminal.Constructor(Vector3(1193.531f, 4568.343f, 71.7833f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2389, + Terminal.Constructor(Vector3(1245.773f, 4562.918f, 49.61831f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2390, + Terminal.Constructor(Vector3(1247.582f, 4566.182f, 49.61831f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2391, + Terminal.Constructor(Vector3(1249.419f, 4569.496f, 49.61831f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3403, + Terminal.Constructor(Vector3(1181.046f, 4553.705f, 64.6453f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3404, + Terminal.Constructor(Vector3(1184.121f, 4589.298f, 42.0853f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3405, + Terminal.Constructor(Vector3(1212.847f, 4609.221f, 52.0853f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3406, + Terminal.Constructor(Vector3(1231.786f, 4565.91f, 50.1623f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3407, + Terminal.Constructor(Vector3(1235.318f, 4572.289f, 50.1623f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3408, + Terminal.Constructor(Vector3(1238.854f, 4578.662f, 50.1623f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3719, + Terminal.Constructor(Vector3(1266.436f, 4596.474f, 60.71531f), vehicle_terminal_combined), + owning_building_guid = 33 + ) + LocalObject( + 2307, + VehicleSpawnPad.Constructor(Vector3(1254.444f, 4602.945f, 56.5573f), mb_pad_creation, Vector3(0, 0, -61)), + owning_building_guid = 33, + terminal_guid = 3719 + ) LocalObject(3219, ResourceSilo.Constructor(Vector3(1111.726f, 4540.608f, 65.0453f)), owning_building_guid = 33) - LocalObject(3252, SpawnTube.Constructor(Vector3(1231.839f, 4567.527f, 48.02831f), Vector3(0, 0, 29)), owning_building_guid = 33) - LocalObject(3253, SpawnTube.Constructor(Vector3(1235.374f, 4573.903f, 48.02831f), Vector3(0, 0, 29)), owning_building_guid = 33) - LocalObject(3254, SpawnTube.Constructor(Vector3(1238.907f, 4580.278f, 48.02831f), Vector3(0, 0, 29)), owning_building_guid = 33) - LocalObject(2332, ProximityTerminal.Constructor(Vector3(1180.707f, 4548.237f, 58.02831f), medical_terminal), owning_building_guid = 33) - LocalObject(2333, ProximityTerminal.Constructor(Vector3(1264.724f, 4568.663f, 40.52831f), medical_terminal), owning_building_guid = 33) - LocalObject(2669, ProximityTerminal.Constructor(Vector3(1204.271f, 4631.403f, 66.2693f), pad_landing_frame), owning_building_guid = 33) - LocalObject(2670, Terminal.Constructor(Vector3(1204.271f, 4631.403f, 66.2693f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(3104, ProximityTerminal.Constructor(Vector3(1151.809f, 4623.89f, 57.5783f), repair_silo), owning_building_guid = 33) - LocalObject(3105, Terminal.Constructor(Vector3(1151.809f, 4623.89f, 57.5783f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(3108, ProximityTerminal.Constructor(Vector3(1236.117f, 4522.836f, 57.5783f), repair_silo), owning_building_guid = 33) - LocalObject(3109, Terminal.Constructor(Vector3(1236.117f, 4522.836f, 57.5783f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(2181, FacilityTurret.Constructor(Vector3(1091.642f, 4538.772f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 3252, + SpawnTube.Constructor(Vector3(1231.839f, 4567.527f, 48.02831f), Vector3(0, 0, 29)), + owning_building_guid = 33 + ) + LocalObject( + 3253, + SpawnTube.Constructor(Vector3(1235.374f, 4573.903f, 48.02831f), Vector3(0, 0, 29)), + owning_building_guid = 33 + ) + LocalObject( + 3254, + SpawnTube.Constructor(Vector3(1238.907f, 4580.278f, 48.02831f), Vector3(0, 0, 29)), + owning_building_guid = 33 + ) + LocalObject( + 2332, + ProximityTerminal.Constructor(Vector3(1180.707f, 4548.237f, 58.02831f), medical_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2333, + ProximityTerminal.Constructor(Vector3(1264.724f, 4568.663f, 40.52831f), medical_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2669, + ProximityTerminal.Constructor(Vector3(1204.271f, 4631.403f, 66.2693f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 2670, + Terminal.Constructor(Vector3(1204.271f, 4631.403f, 66.2693f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3104, + ProximityTerminal.Constructor(Vector3(1151.809f, 4623.89f, 57.5783f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 3105, + Terminal.Constructor(Vector3(1151.809f, 4623.89f, 57.5783f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3108, + ProximityTerminal.Constructor(Vector3(1236.117f, 4522.836f, 57.5783f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 3109, + Terminal.Constructor(Vector3(1236.117f, 4522.836f, 57.5783f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2181, + FacilityTurret.Constructor(Vector3(1091.642f, 4538.772f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2181, 5030) - LocalObject(2183, FacilityTurret.Constructor(Vector3(1148.388f, 4643.476f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 2183, + FacilityTurret.Constructor(Vector3(1148.388f, 4643.476f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2183, 5031) - LocalObject(2184, FacilityTurret.Constructor(Vector3(1181.429f, 4487.657f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 2184, + FacilityTurret.Constructor(Vector3(1181.429f, 4487.657f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2184, 5032) - LocalObject(2185, FacilityTurret.Constructor(Vector3(1207f, 4660.263f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 2185, + FacilityTurret.Constructor(Vector3(1207f, 4660.263f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2185, 5033) - LocalObject(2186, FacilityTurret.Constructor(Vector3(1240.066f, 4504.447f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 2186, + FacilityTurret.Constructor(Vector3(1240.066f, 4504.447f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2186, 5034) - LocalObject(2187, FacilityTurret.Constructor(Vector3(1296.704f, 4609.036f, 66.5363f), manned_turret), owning_building_guid = 33) + LocalObject( + 2187, + FacilityTurret.Constructor(Vector3(1296.704f, 4609.036f, 66.5363f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(2187, 5035) - LocalObject(2882, Painbox.Constructor(Vector3(1194.125f, 4615.194f, 45.43031f), painbox), owning_building_guid = 33) - LocalObject(2899, Painbox.Constructor(Vector3(1247.108f, 4574.483f, 52.47311f), painbox_continuous), owning_building_guid = 33) - LocalObject(2916, Painbox.Constructor(Vector3(1186.931f, 4602.012f, 43.287f), painbox_door_radius), owning_building_guid = 33) - LocalObject(2939, Painbox.Constructor(Vector3(1235.354f, 4558.024f, 49.85431f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2940, Painbox.Constructor(Vector3(1249.394f, 4581.505f, 49.63601f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2941, Painbox.Constructor(Vector3(1258.092f, 4570.289f, 50.85431f), painbox_door_radius_continuous), owning_building_guid = 33) + LocalObject( + 2882, + Painbox.Constructor(Vector3(1194.125f, 4615.194f, 45.43031f), painbox), + owning_building_guid = 33 + ) + LocalObject( + 2899, + Painbox.Constructor(Vector3(1247.108f, 4574.483f, 52.47311f), painbox_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2916, + Painbox.Constructor(Vector3(1186.931f, 4602.012f, 43.287f), painbox_door_radius), + owning_building_guid = 33 + ) + LocalObject( + 2939, + Painbox.Constructor(Vector3(1235.354f, 4558.024f, 49.85431f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2940, + Painbox.Constructor(Vector3(1249.394f, 4581.505f, 49.63601f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2941, + Painbox.Constructor(Vector3(1258.092f, 4570.289f, 50.85431f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) LocalObject(384, Generator.Constructor(Vector3(1195.662f, 4618.304f, 39.23431f)), owning_building_guid = 33) - LocalObject(367, Terminal.Constructor(Vector3(1191.732f, 4611.116f, 40.52831f), gen_control), owning_building_guid = 33) + LocalObject( + 367, + Terminal.Constructor(Vector3(1191.732f, 4611.116f, 40.52831f), gen_control), + owning_building_guid = 33 + ) } Building11() def Building11(): Unit = { // Name: Tore Type: comm_station GUID: 36, MapID: 11 - LocalBuilding("Tore", 36, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2958f, 2328f, 58.28852f), Vector3(0f, 0f, 0f), comm_station))) - LocalObject(283, CaptureTerminal.Constructor(Vector3(3002.089f, 2404.734f, 40.98852f), capture_terminal), owning_building_guid = 36) + LocalBuilding( + "Tore", + 36, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2958f, 2328f, 58.28852f), + Vector3(0f, 0f, 0f), + comm_station + ) + ) + ) + LocalObject( + 283, + CaptureTerminal.Constructor(Vector3(3002.089f, 2404.734f, 40.98852f), capture_terminal), + owning_building_guid = 36 + ) LocalObject(542, Door.Constructor(Vector3(2898.196f, 2284.5f, 60.03952f)), owning_building_guid = 36) LocalObject(543, Door.Constructor(Vector3(2898.196f, 2302.693f, 68.00352f)), owning_building_guid = 36) LocalObject(544, Door.Constructor(Vector3(2915.307f, 2260.197f, 68.00352f)), owning_building_guid = 36) @@ -947,18 +2586,78 @@ object Map03 { // Cyssor LocalObject(3539, Door.Constructor(Vector3(2994.673f, 2341.733f, 50.34252f)), owning_building_guid = 36) LocalObject(3540, Door.Constructor(Vector3(2994.673f, 2349.026f, 50.34252f)), owning_building_guid = 36) LocalObject(3541, Door.Constructor(Vector3(2994.673f, 2356.315f, 50.34252f)), owning_building_guid = 36) - LocalObject(1257, IFFLock.Constructor(Vector3(2978.453f, 2327.13f, 59.94052f), Vector3(0, 0, 90)), owning_building_guid = 36, door_guid = 1193) - LocalObject(1383, IFFLock.Constructor(Vector3(2935.957f, 2329.105f, 64.94952f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 547) - LocalObject(1384, IFFLock.Constructor(Vector3(2939.572f, 2351.06f, 42.32452f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 949) - LocalObject(1385, IFFLock.Constructor(Vector3(2940.047f, 2318.42f, 64.94952f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 546) - LocalObject(1386, IFFLock.Constructor(Vector3(2952.817f, 2318.511f, 72.36952f), Vector3(0, 0, 270)), owning_building_guid = 36, door_guid = 548) - LocalObject(1387, IFFLock.Constructor(Vector3(2965.187f, 2345.955f, 64.94952f), Vector3(0, 0, 270)), owning_building_guid = 36, door_guid = 551) - LocalObject(1388, IFFLock.Constructor(Vector3(2990.778f, 2406.033f, 59.93852f), Vector3(0, 0, 90)), owning_building_guid = 36, door_guid = 553) - LocalObject(1389, IFFLock.Constructor(Vector3(2997.187f, 2394.428f, 42.32452f), Vector3(0, 0, 270)), owning_building_guid = 36, door_guid = 963) - LocalObject(1390, IFFLock.Constructor(Vector3(3000.428f, 2360.81f, 49.82452f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 965) - LocalObject(1391, IFFLock.Constructor(Vector3(3003.572f, 2335.19f, 49.82452f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 964) - LocalObject(1392, IFFLock.Constructor(Vector3(3006.813f, 2397.572f, 42.32452f), Vector3(0, 0, 90)), owning_building_guid = 36, door_guid = 966) - LocalObject(1393, IFFLock.Constructor(Vector3(3013.06f, 2338.428f, 42.32452f), Vector3(0, 0, 270)), owning_building_guid = 36, door_guid = 967) + LocalObject( + 1257, + IFFLock.Constructor(Vector3(2978.453f, 2327.13f, 59.94052f), Vector3(0, 0, 90)), + owning_building_guid = 36, + door_guid = 1193 + ) + LocalObject( + 1383, + IFFLock.Constructor(Vector3(2935.957f, 2329.105f, 64.94952f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 547 + ) + LocalObject( + 1384, + IFFLock.Constructor(Vector3(2939.572f, 2351.06f, 42.32452f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 949 + ) + LocalObject( + 1385, + IFFLock.Constructor(Vector3(2940.047f, 2318.42f, 64.94952f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 546 + ) + LocalObject( + 1386, + IFFLock.Constructor(Vector3(2952.817f, 2318.511f, 72.36952f), Vector3(0, 0, 270)), + owning_building_guid = 36, + door_guid = 548 + ) + LocalObject( + 1387, + IFFLock.Constructor(Vector3(2965.187f, 2345.955f, 64.94952f), Vector3(0, 0, 270)), + owning_building_guid = 36, + door_guid = 551 + ) + LocalObject( + 1388, + IFFLock.Constructor(Vector3(2990.778f, 2406.033f, 59.93852f), Vector3(0, 0, 90)), + owning_building_guid = 36, + door_guid = 553 + ) + LocalObject( + 1389, + IFFLock.Constructor(Vector3(2997.187f, 2394.428f, 42.32452f), Vector3(0, 0, 270)), + owning_building_guid = 36, + door_guid = 963 + ) + LocalObject( + 1390, + IFFLock.Constructor(Vector3(3000.428f, 2360.81f, 49.82452f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 965 + ) + LocalObject( + 1391, + IFFLock.Constructor(Vector3(3003.572f, 2335.19f, 49.82452f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 964 + ) + LocalObject( + 1392, + IFFLock.Constructor(Vector3(3006.813f, 2397.572f, 42.32452f), Vector3(0, 0, 90)), + owning_building_guid = 36, + door_guid = 966 + ) + LocalObject( + 1393, + IFFLock.Constructor(Vector3(3013.06f, 2338.428f, 42.32452f), Vector3(0, 0, 270)), + owning_building_guid = 36, + door_guid = 967 + ) LocalObject(1766, Locker.Constructor(Vector3(3005.563f, 2338.141f, 48.74952f)), owning_building_guid = 36) LocalObject(1767, Locker.Constructor(Vector3(3006.727f, 2338.141f, 48.74952f)), owning_building_guid = 36) LocalObject(1768, Locker.Constructor(Vector3(3007.874f, 2338.141f, 48.74952f)), owning_building_guid = 36) @@ -971,60 +2670,233 @@ object Map03 { // Cyssor LocalObject(1779, Locker.Constructor(Vector3(3026.055f, 2358.165f, 40.98852f)), owning_building_guid = 36) LocalObject(1780, Locker.Constructor(Vector3(3027.391f, 2358.165f, 40.98852f)), owning_building_guid = 36) LocalObject(1783, Locker.Constructor(Vector3(3028.728f, 2358.165f, 40.98852f)), owning_building_guid = 36) - LocalObject(2423, Terminal.Constructor(Vector3(2948.379f, 2304.907f, 64.84852f), order_terminal), owning_building_guid = 36) - LocalObject(2424, Terminal.Constructor(Vector3(2958.075f, 2320.547f, 72.24352f), order_terminal), owning_building_guid = 36) - LocalObject(2425, Terminal.Constructor(Vector3(2960.331f, 2318.43f, 72.24352f), order_terminal), owning_building_guid = 36) - LocalObject(2426, Terminal.Constructor(Vector3(2960.332f, 2322.825f, 72.24352f), order_terminal), owning_building_guid = 36) - LocalObject(2427, Terminal.Constructor(Vector3(3008.654f, 2343.408f, 50.07852f), order_terminal), owning_building_guid = 36) - LocalObject(2428, Terminal.Constructor(Vector3(3008.654f, 2347.139f, 50.07852f), order_terminal), owning_building_guid = 36) - LocalObject(2429, Terminal.Constructor(Vector3(3008.654f, 2350.928f, 50.07852f), order_terminal), owning_building_guid = 36) - LocalObject(3422, Terminal.Constructor(Vector3(2941.943f, 2336.591f, 42.54552f), spawn_terminal), owning_building_guid = 36) - LocalObject(3423, Terminal.Constructor(Vector3(2956.51f, 2303.969f, 65.10552f), spawn_terminal), owning_building_guid = 36) - LocalObject(3424, Terminal.Constructor(Vector3(2957.409f, 2367.942f, 52.54552f), spawn_terminal), owning_building_guid = 36) - LocalObject(3425, Terminal.Constructor(Vector3(2994.971f, 2339.243f, 50.62252f), spawn_terminal), owning_building_guid = 36) - LocalObject(3426, Terminal.Constructor(Vector3(2994.967f, 2346.535f, 50.62252f), spawn_terminal), owning_building_guid = 36) - LocalObject(3427, Terminal.Constructor(Vector3(2994.97f, 2353.823f, 50.62252f), spawn_terminal), owning_building_guid = 36) - LocalObject(3722, Terminal.Constructor(Vector3(3010.458f, 2382.774f, 61.17552f), vehicle_terminal_combined), owning_building_guid = 36) - LocalObject(2312, VehicleSpawnPad.Constructor(Vector3(2996.833f, 2382.62f, 57.01752f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 36, terminal_guid = 3722) + LocalObject( + 2423, + Terminal.Constructor(Vector3(2948.379f, 2304.907f, 64.84852f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2424, + Terminal.Constructor(Vector3(2958.075f, 2320.547f, 72.24352f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2425, + Terminal.Constructor(Vector3(2960.331f, 2318.43f, 72.24352f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2426, + Terminal.Constructor(Vector3(2960.332f, 2322.825f, 72.24352f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2427, + Terminal.Constructor(Vector3(3008.654f, 2343.408f, 50.07852f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2428, + Terminal.Constructor(Vector3(3008.654f, 2347.139f, 50.07852f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2429, + Terminal.Constructor(Vector3(3008.654f, 2350.928f, 50.07852f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3422, + Terminal.Constructor(Vector3(2941.943f, 2336.591f, 42.54552f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3423, + Terminal.Constructor(Vector3(2956.51f, 2303.969f, 65.10552f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3424, + Terminal.Constructor(Vector3(2957.409f, 2367.942f, 52.54552f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3425, + Terminal.Constructor(Vector3(2994.971f, 2339.243f, 50.62252f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3426, + Terminal.Constructor(Vector3(2994.967f, 2346.535f, 50.62252f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3427, + Terminal.Constructor(Vector3(2994.97f, 2353.823f, 50.62252f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3722, + Terminal.Constructor(Vector3(3010.458f, 2382.774f, 61.17552f), vehicle_terminal_combined), + owning_building_guid = 36 + ) + LocalObject( + 2312, + VehicleSpawnPad.Constructor(Vector3(2996.833f, 2382.62f, 57.01752f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 36, + terminal_guid = 3722 + ) LocalObject(3222, ResourceSilo.Constructor(Vector3(2902.23f, 2258.908f, 65.50552f)), owning_building_guid = 36) - LocalObject(3275, SpawnTube.Constructor(Vector3(2994.233f, 2340.683f, 48.48852f), Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(3276, SpawnTube.Constructor(Vector3(2994.233f, 2347.974f, 48.48852f), Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(3277, SpawnTube.Constructor(Vector3(2994.233f, 2355.262f, 48.48852f), Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(2338, ProximityTerminal.Constructor(Vector3(2958.864f, 2299.023f, 58.48852f), medical_terminal), owning_building_guid = 36) - LocalObject(2339, ProximityTerminal.Constructor(Vector3(3022.444f, 2357.62f, 40.98852f), medical_terminal), owning_building_guid = 36) - LocalObject(2702, ProximityTerminal.Constructor(Vector3(2939.154f, 2383.185f, 66.72952f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2703, Terminal.Constructor(Vector3(2939.154f, 2383.185f, 66.72952f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(3128, ProximityTerminal.Constructor(Vector3(2896.912f, 2351.18f, 58.03852f), repair_silo), owning_building_guid = 36) - LocalObject(3129, Terminal.Constructor(Vector3(2896.912f, 2351.18f, 58.03852f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(3132, ProximityTerminal.Constructor(Vector3(3019.641f, 2303.67f, 58.03852f), repair_silo), owning_building_guid = 36) - LocalObject(3133, Terminal.Constructor(Vector3(3019.641f, 2303.67f, 58.03852f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(2212, FacilityTurret.Constructor(Vector3(2884.424f, 2366.652f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 3275, + SpawnTube.Constructor(Vector3(2994.233f, 2340.683f, 48.48852f), Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 3276, + SpawnTube.Constructor(Vector3(2994.233f, 2347.974f, 48.48852f), Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 3277, + SpawnTube.Constructor(Vector3(2994.233f, 2355.262f, 48.48852f), Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 2338, + ProximityTerminal.Constructor(Vector3(2958.864f, 2299.023f, 58.48852f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2339, + ProximityTerminal.Constructor(Vector3(3022.444f, 2357.62f, 40.98852f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2702, + ProximityTerminal.Constructor(Vector3(2939.154f, 2383.185f, 66.72952f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2703, + Terminal.Constructor(Vector3(2939.154f, 2383.185f, 66.72952f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3128, + ProximityTerminal.Constructor(Vector3(2896.912f, 2351.18f, 58.03852f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 3129, + Terminal.Constructor(Vector3(2896.912f, 2351.18f, 58.03852f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3132, + ProximityTerminal.Constructor(Vector3(3019.641f, 2303.67f, 58.03852f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 3133, + Terminal.Constructor(Vector3(3019.641f, 2303.67f, 58.03852f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2212, + FacilityTurret.Constructor(Vector3(2884.424f, 2366.652f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2212, 5036) - LocalObject(2213, FacilityTurret.Constructor(Vector3(2885.554f, 2247.565f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 2213, + FacilityTurret.Constructor(Vector3(2885.554f, 2247.565f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2213, 5037) - LocalObject(2214, FacilityTurret.Constructor(Vector3(2927.549f, 2409.75f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 2214, + FacilityTurret.Constructor(Vector3(2927.549f, 2409.75f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2214, 5038) - LocalObject(2215, FacilityTurret.Constructor(Vector3(2988.865f, 2246.388f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 2215, + FacilityTurret.Constructor(Vector3(2988.865f, 2246.388f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2215, 5039) - LocalObject(2218, FacilityTurret.Constructor(Vector3(3030.841f, 2408.435f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 2218, + FacilityTurret.Constructor(Vector3(3030.841f, 2408.435f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2218, 5040) - LocalObject(2219, FacilityTurret.Constructor(Vector3(3032.01f, 2289.501f, 66.99652f), manned_turret), owning_building_guid = 36) + LocalObject( + 2219, + FacilityTurret.Constructor(Vector3(3032.01f, 2289.501f, 66.99652f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(2219, 5041) - LocalObject(2885, Painbox.Constructor(Vector3(2938.138f, 2364.089f, 45.89052f), painbox), owning_building_guid = 36) - LocalObject(2902, Painbox.Constructor(Vector3(3004.215f, 2354.17f, 52.93332f), painbox_continuous), owning_building_guid = 36) - LocalObject(2919, Painbox.Constructor(Vector3(2938.237f, 2349.073f, 43.74722f), painbox_door_radius), owning_building_guid = 36) - LocalObject(2948, Painbox.Constructor(Vector3(3001.914f, 2334.076f, 50.31452f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2949, Painbox.Constructor(Vector3(3002.81f, 2361.42f, 50.09622f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2950, Painbox.Constructor(Vector3(3015.855f, 2355.827f, 51.31452f), painbox_door_radius_continuous), owning_building_guid = 36) + LocalObject( + 2885, + Painbox.Constructor(Vector3(2938.138f, 2364.089f, 45.89052f), painbox), + owning_building_guid = 36 + ) + LocalObject( + 2902, + Painbox.Constructor(Vector3(3004.215f, 2354.17f, 52.93332f), painbox_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2919, + Painbox.Constructor(Vector3(2938.237f, 2349.073f, 43.74722f), painbox_door_radius), + owning_building_guid = 36 + ) + LocalObject( + 2948, + Painbox.Constructor(Vector3(3001.914f, 2334.076f, 50.31452f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2949, + Painbox.Constructor(Vector3(3002.81f, 2361.42f, 50.09622f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2950, + Painbox.Constructor(Vector3(3015.855f, 2355.827f, 51.31452f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) LocalObject(387, Generator.Constructor(Vector3(2937.975f, 2367.555f, 39.69452f)), owning_building_guid = 36) - LocalObject(370, Terminal.Constructor(Vector3(2938.022f, 2359.363f, 40.98852f), gen_control), owning_building_guid = 36) + LocalObject( + 370, + Terminal.Constructor(Vector3(2938.022f, 2359.363f, 40.98852f), gen_control), + owning_building_guid = 36 + ) } Building18() def Building18(): Unit = { // Name: Gunuku Type: comm_station_dsp GUID: 39, MapID: 18 - LocalBuilding("Gunuku", 39, 18, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4936f, 4344f, 53.91644f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(286, CaptureTerminal.Constructor(Vector3(5012.089f, 4324.734f, 36.51644f), capture_terminal), owning_building_guid = 39) + LocalBuilding( + "Gunuku", + 39, + 18, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4936f, 4344f, 53.91644f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 286, + CaptureTerminal.Constructor(Vector3(5012.089f, 4324.734f, 36.51644f), capture_terminal), + owning_building_guid = 39 + ) LocalObject(357, Door.Constructor(Vector3(5004.339f, 4414.464f, 57.29444f)), owning_building_guid = 39) LocalObject(620, Door.Constructor(Vector3(4876.196f, 4300.501f, 55.56744f)), owning_building_guid = 39) LocalObject(621, Door.Constructor(Vector3(4876.196f, 4318.693f, 63.53144f)), owning_building_guid = 39) @@ -1070,20 +2942,90 @@ object Map03 { // Cyssor LocalObject(3566, Door.Constructor(Vector3(4972.673f, 4357.733f, 45.87044f)), owning_building_guid = 39) LocalObject(3567, Door.Constructor(Vector3(4972.673f, 4365.026f, 45.87044f)), owning_building_guid = 39) LocalObject(3568, Door.Constructor(Vector3(4972.673f, 4372.315f, 45.87044f)), owning_building_guid = 39) - LocalObject(1260, IFFLock.Constructor(Vector3(4956.454f, 4343.09f, 55.48444f), Vector3(0, 0, 90)), owning_building_guid = 39, door_guid = 1196) - LocalObject(1448, IFFLock.Constructor(Vector3(4913.959f, 4345.104f, 60.48444f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 626) - LocalObject(1449, IFFLock.Constructor(Vector3(4918.04f, 4334.42f, 60.48444f), Vector3(0, 0, 180)), owning_building_guid = 39, door_guid = 625) - LocalObject(1450, IFFLock.Constructor(Vector3(4930.817f, 4334.514f, 67.98444f), Vector3(0, 0, 270)), owning_building_guid = 39, door_guid = 628) - LocalObject(1451, IFFLock.Constructor(Vector3(4943.193f, 4361.962f, 60.48444f), Vector3(0, 0, 270)), owning_building_guid = 39, door_guid = 630) - LocalObject(1456, IFFLock.Constructor(Vector3(4976.94f, 4405.572f, 37.85244f), Vector3(0, 0, 90)), owning_building_guid = 39, door_guid = 1025) - LocalObject(1457, IFFLock.Constructor(Vector3(4978.428f, 4376.94f, 45.35244f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 1028) - LocalObject(1458, IFFLock.Constructor(Vector3(4981.572f, 4351.19f, 45.35244f), Vector3(0, 0, 180)), owning_building_guid = 39, door_guid = 1027) - LocalObject(1459, IFFLock.Constructor(Vector3(4987.907f, 4449.163f, 60.46344f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 636) - LocalObject(1460, IFFLock.Constructor(Vector3(4991.06f, 4354.428f, 37.85244f), Vector3(0, 0, 270)), owning_building_guid = 39, door_guid = 1029) - LocalObject(1461, IFFLock.Constructor(Vector3(4991.124f, 4416.312f, 55.52844f), Vector3(0, 0, 270)), owning_building_guid = 39, door_guid = 637) - LocalObject(1462, IFFLock.Constructor(Vector3(5007.06f, 4314.428f, 37.85244f), Vector3(0, 0, 270)), owning_building_guid = 39, door_guid = 1032) - LocalObject(1465, IFFLock.Constructor(Vector3(5016.813f, 4317.572f, 37.85244f), Vector3(0, 0, 90)), owning_building_guid = 39, door_guid = 1033) - LocalObject(1466, IFFLock.Constructor(Vector3(5049.953f, 4424.808f, 55.42744f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 648) + LocalObject( + 1260, + IFFLock.Constructor(Vector3(4956.454f, 4343.09f, 55.48444f), Vector3(0, 0, 90)), + owning_building_guid = 39, + door_guid = 1196 + ) + LocalObject( + 1448, + IFFLock.Constructor(Vector3(4913.959f, 4345.104f, 60.48444f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 626 + ) + LocalObject( + 1449, + IFFLock.Constructor(Vector3(4918.04f, 4334.42f, 60.48444f), Vector3(0, 0, 180)), + owning_building_guid = 39, + door_guid = 625 + ) + LocalObject( + 1450, + IFFLock.Constructor(Vector3(4930.817f, 4334.514f, 67.98444f), Vector3(0, 0, 270)), + owning_building_guid = 39, + door_guid = 628 + ) + LocalObject( + 1451, + IFFLock.Constructor(Vector3(4943.193f, 4361.962f, 60.48444f), Vector3(0, 0, 270)), + owning_building_guid = 39, + door_guid = 630 + ) + LocalObject( + 1456, + IFFLock.Constructor(Vector3(4976.94f, 4405.572f, 37.85244f), Vector3(0, 0, 90)), + owning_building_guid = 39, + door_guid = 1025 + ) + LocalObject( + 1457, + IFFLock.Constructor(Vector3(4978.428f, 4376.94f, 45.35244f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 1028 + ) + LocalObject( + 1458, + IFFLock.Constructor(Vector3(4981.572f, 4351.19f, 45.35244f), Vector3(0, 0, 180)), + owning_building_guid = 39, + door_guid = 1027 + ) + LocalObject( + 1459, + IFFLock.Constructor(Vector3(4987.907f, 4449.163f, 60.46344f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 636 + ) + LocalObject( + 1460, + IFFLock.Constructor(Vector3(4991.06f, 4354.428f, 37.85244f), Vector3(0, 0, 270)), + owning_building_guid = 39, + door_guid = 1029 + ) + LocalObject( + 1461, + IFFLock.Constructor(Vector3(4991.124f, 4416.312f, 55.52844f), Vector3(0, 0, 270)), + owning_building_guid = 39, + door_guid = 637 + ) + LocalObject( + 1462, + IFFLock.Constructor(Vector3(5007.06f, 4314.428f, 37.85244f), Vector3(0, 0, 270)), + owning_building_guid = 39, + door_guid = 1032 + ) + LocalObject( + 1465, + IFFLock.Constructor(Vector3(5016.813f, 4317.572f, 37.85244f), Vector3(0, 0, 90)), + owning_building_guid = 39, + door_guid = 1033 + ) + LocalObject( + 1466, + IFFLock.Constructor(Vector3(5049.953f, 4424.808f, 55.42744f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 648 + ) LocalObject(1892, Locker.Constructor(Vector3(4983.563f, 4354.141f, 44.27744f)), owning_building_guid = 39) LocalObject(1893, Locker.Constructor(Vector3(4984.727f, 4354.141f, 44.27744f)), owning_building_guid = 39) LocalObject(1894, Locker.Constructor(Vector3(4985.874f, 4354.141f, 44.27744f)), owning_building_guid = 39) @@ -1096,76 +3038,306 @@ object Map03 { // Cyssor LocalObject(1901, Locker.Constructor(Vector3(5004.055f, 4374.165f, 36.51644f)), owning_building_guid = 39) LocalObject(1902, Locker.Constructor(Vector3(5005.391f, 4374.165f, 36.51644f)), owning_building_guid = 39) LocalObject(1903, Locker.Constructor(Vector3(5006.728f, 4374.165f, 36.51644f)), owning_building_guid = 39) - LocalObject(359, Terminal.Constructor(Vector3(4995.879f, 4446.918f, 59.62044f), dropship_vehicle_terminal), owning_building_guid = 39) - LocalObject(358, VehicleSpawnPad.Constructor(Vector3(5004.328f, 4468.856f, 53.94444f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 39, terminal_guid = 359) - LocalObject(2462, Terminal.Constructor(Vector3(4926.378f, 4320.897f, 60.37644f), order_terminal), owning_building_guid = 39) - LocalObject(2463, Terminal.Constructor(Vector3(4936.075f, 4336.547f, 67.77144f), order_terminal), owning_building_guid = 39) - LocalObject(2464, Terminal.Constructor(Vector3(4938.331f, 4334.43f, 67.77144f), order_terminal), owning_building_guid = 39) - LocalObject(2465, Terminal.Constructor(Vector3(4938.332f, 4338.825f, 67.77144f), order_terminal), owning_building_guid = 39) - LocalObject(2466, Terminal.Constructor(Vector3(4940.592f, 4336.59f, 67.77144f), order_terminal), owning_building_guid = 39) - LocalObject(2470, Terminal.Constructor(Vector3(4986.654f, 4359.408f, 45.60644f), order_terminal), owning_building_guid = 39) - LocalObject(2471, Terminal.Constructor(Vector3(4986.654f, 4363.139f, 45.60644f), order_terminal), owning_building_guid = 39) - LocalObject(2472, Terminal.Constructor(Vector3(4986.654f, 4366.928f, 45.60644f), order_terminal), owning_building_guid = 39) - LocalObject(3442, Terminal.Constructor(Vector3(4934.509f, 4319.959f, 60.63344f), spawn_terminal), owning_building_guid = 39) - LocalObject(3443, Terminal.Constructor(Vector3(4972.971f, 4355.243f, 46.15044f), spawn_terminal), owning_building_guid = 39) - LocalObject(3444, Terminal.Constructor(Vector3(4972.967f, 4362.535f, 46.15044f), spawn_terminal), owning_building_guid = 39) - LocalObject(3445, Terminal.Constructor(Vector3(4972.97f, 4369.823f, 46.15044f), spawn_terminal), owning_building_guid = 39) - LocalObject(3446, Terminal.Constructor(Vector3(4991.103f, 4438.906f, 60.56444f), spawn_terminal), owning_building_guid = 39) - LocalObject(3447, Terminal.Constructor(Vector3(5000.058f, 4343.409f, 38.04444f), spawn_terminal), owning_building_guid = 39) - LocalObject(3448, Terminal.Constructor(Vector3(5007.409f, 4399.942f, 38.04444f), spawn_terminal), owning_building_guid = 39) - LocalObject(3450, Terminal.Constructor(Vector3(5016.058f, 4351.409f, 45.57344f), spawn_terminal), owning_building_guid = 39) - LocalObject(3451, Terminal.Constructor(Vector3(5016.058f, 4391.409f, 45.57344f), spawn_terminal), owning_building_guid = 39) - LocalObject(3725, Terminal.Constructor(Vector3(4953.698f, 4452.044f, 56.70344f), ground_vehicle_terminal), owning_building_guid = 39) - LocalObject(2315, VehicleSpawnPad.Constructor(Vector3(4953.786f, 4438.411f, 52.54544f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 39, terminal_guid = 3725) + LocalObject( + 359, + Terminal.Constructor(Vector3(4995.879f, 4446.918f, 59.62044f), dropship_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 358, + VehicleSpawnPad.Constructor(Vector3(5004.328f, 4468.856f, 53.94444f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 39, + terminal_guid = 359 + ) + LocalObject( + 2462, + Terminal.Constructor(Vector3(4926.378f, 4320.897f, 60.37644f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2463, + Terminal.Constructor(Vector3(4936.075f, 4336.547f, 67.77144f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2464, + Terminal.Constructor(Vector3(4938.331f, 4334.43f, 67.77144f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2465, + Terminal.Constructor(Vector3(4938.332f, 4338.825f, 67.77144f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2466, + Terminal.Constructor(Vector3(4940.592f, 4336.59f, 67.77144f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2470, + Terminal.Constructor(Vector3(4986.654f, 4359.408f, 45.60644f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2471, + Terminal.Constructor(Vector3(4986.654f, 4363.139f, 45.60644f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2472, + Terminal.Constructor(Vector3(4986.654f, 4366.928f, 45.60644f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3442, + Terminal.Constructor(Vector3(4934.509f, 4319.959f, 60.63344f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3443, + Terminal.Constructor(Vector3(4972.971f, 4355.243f, 46.15044f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3444, + Terminal.Constructor(Vector3(4972.967f, 4362.535f, 46.15044f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3445, + Terminal.Constructor(Vector3(4972.97f, 4369.823f, 46.15044f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3446, + Terminal.Constructor(Vector3(4991.103f, 4438.906f, 60.56444f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3447, + Terminal.Constructor(Vector3(5000.058f, 4343.409f, 38.04444f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3448, + Terminal.Constructor(Vector3(5007.409f, 4399.942f, 38.04444f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3450, + Terminal.Constructor(Vector3(5016.058f, 4351.409f, 45.57344f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3451, + Terminal.Constructor(Vector3(5016.058f, 4391.409f, 45.57344f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3725, + Terminal.Constructor(Vector3(4953.698f, 4452.044f, 56.70344f), ground_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2315, + VehicleSpawnPad.Constructor(Vector3(4953.786f, 4438.411f, 52.54544f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 39, + terminal_guid = 3725 + ) LocalObject(3225, ResourceSilo.Constructor(Vector3(5034.212f, 4509.642f, 61.03344f)), owning_building_guid = 39) - LocalObject(3302, SpawnTube.Constructor(Vector3(4972.233f, 4356.683f, 44.01644f), Vector3(0, 0, 0)), owning_building_guid = 39) - LocalObject(3303, SpawnTube.Constructor(Vector3(4972.233f, 4363.974f, 44.01644f), Vector3(0, 0, 0)), owning_building_guid = 39) - LocalObject(3304, SpawnTube.Constructor(Vector3(4972.233f, 4371.262f, 44.01644f), Vector3(0, 0, 0)), owning_building_guid = 39) - LocalObject(2342, ProximityTerminal.Constructor(Vector3(4936.863f, 4315.013f, 54.01644f), medical_terminal), owning_building_guid = 39) - LocalObject(2343, ProximityTerminal.Constructor(Vector3(5000.444f, 4373.62f, 36.51644f), medical_terminal), owning_building_guid = 39) - LocalObject(2729, ProximityTerminal.Constructor(Vector3(4917.153f, 4437.398f, 62.32644f), pad_landing_frame), owning_building_guid = 39) - LocalObject(2730, Terminal.Constructor(Vector3(4917.153f, 4437.398f, 62.32644f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(2732, ProximityTerminal.Constructor(Vector3(4933.514f, 4391.467f, 59.61044f), pad_landing_frame), owning_building_guid = 39) - LocalObject(2733, Terminal.Constructor(Vector3(4933.514f, 4391.467f, 59.61044f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(2735, ProximityTerminal.Constructor(Vector3(4985.804f, 4355.901f, 66.79244f), pad_landing_frame), owning_building_guid = 39) - LocalObject(2736, Terminal.Constructor(Vector3(4985.804f, 4355.901f, 66.79244f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(2738, ProximityTerminal.Constructor(Vector3(5021.071f, 4372.159f, 62.33944f), pad_landing_frame), owning_building_guid = 39) - LocalObject(2739, Terminal.Constructor(Vector3(5021.071f, 4372.159f, 62.33944f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(3152, ProximityTerminal.Constructor(Vector3(4874.643f, 4382.241f, 53.66644f), repair_silo), owning_building_guid = 39) - LocalObject(3153, Terminal.Constructor(Vector3(4874.643f, 4382.241f, 53.66644f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(3160, ProximityTerminal.Constructor(Vector3(5044.57f, 4385.151f, 53.66644f), repair_silo), owning_building_guid = 39) - LocalObject(3161, Terminal.Constructor(Vector3(5044.57f, 4385.151f, 53.66644f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(2238, FacilityTurret.Constructor(Vector3(4862.401f, 4417.113f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 3302, + SpawnTube.Constructor(Vector3(4972.233f, 4356.683f, 44.01644f), Vector3(0, 0, 0)), + owning_building_guid = 39 + ) + LocalObject( + 3303, + SpawnTube.Constructor(Vector3(4972.233f, 4363.974f, 44.01644f), Vector3(0, 0, 0)), + owning_building_guid = 39 + ) + LocalObject( + 3304, + SpawnTube.Constructor(Vector3(4972.233f, 4371.262f, 44.01644f), Vector3(0, 0, 0)), + owning_building_guid = 39 + ) + LocalObject( + 2342, + ProximityTerminal.Constructor(Vector3(4936.863f, 4315.013f, 54.01644f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2343, + ProximityTerminal.Constructor(Vector3(5000.444f, 4373.62f, 36.51644f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2729, + ProximityTerminal.Constructor(Vector3(4917.153f, 4437.398f, 62.32644f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 2730, + Terminal.Constructor(Vector3(4917.153f, 4437.398f, 62.32644f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2732, + ProximityTerminal.Constructor(Vector3(4933.514f, 4391.467f, 59.61044f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 2733, + Terminal.Constructor(Vector3(4933.514f, 4391.467f, 59.61044f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2735, + ProximityTerminal.Constructor(Vector3(4985.804f, 4355.901f, 66.79244f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 2736, + Terminal.Constructor(Vector3(4985.804f, 4355.901f, 66.79244f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2738, + ProximityTerminal.Constructor(Vector3(5021.071f, 4372.159f, 62.33944f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 2739, + Terminal.Constructor(Vector3(5021.071f, 4372.159f, 62.33944f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3152, + ProximityTerminal.Constructor(Vector3(4874.643f, 4382.241f, 53.66644f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 3153, + Terminal.Constructor(Vector3(4874.643f, 4382.241f, 53.66644f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 3160, + ProximityTerminal.Constructor(Vector3(5044.57f, 4385.151f, 53.66644f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 3161, + Terminal.Constructor(Vector3(5044.57f, 4385.151f, 53.66644f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2238, + FacilityTurret.Constructor(Vector3(4862.401f, 4417.113f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2238, 5042) - LocalObject(2239, FacilityTurret.Constructor(Vector3(4863.554f, 4263.565f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2239, + FacilityTurret.Constructor(Vector3(4863.554f, 4263.565f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2239, 5043) - LocalObject(2240, FacilityTurret.Constructor(Vector3(4907.445f, 4463.667f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2240, + FacilityTurret.Constructor(Vector3(4907.445f, 4463.667f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2240, 5044) - LocalObject(2242, FacilityTurret.Constructor(Vector3(4966.428f, 4262.396f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2242, + FacilityTurret.Constructor(Vector3(4966.428f, 4262.396f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2242, 5045) - LocalObject(2243, FacilityTurret.Constructor(Vector3(4967.449f, 4522.154f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2243, + FacilityTurret.Constructor(Vector3(4967.449f, 4522.154f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2243, 5046) - LocalObject(2246, FacilityTurret.Constructor(Vector3(5008.537f, 4303.011f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2246, + FacilityTurret.Constructor(Vector3(5008.537f, 4303.011f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2246, 5047) - LocalObject(2248, FacilityTurret.Constructor(Vector3(5055.619f, 4520.985f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2248, + FacilityTurret.Constructor(Vector3(5055.619f, 4520.985f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2248, 5048) - LocalObject(2249, FacilityTurret.Constructor(Vector3(5056.773f, 4352.733f, 62.52444f), manned_turret), owning_building_guid = 39) + LocalObject( + 2249, + FacilityTurret.Constructor(Vector3(5056.773f, 4352.733f, 62.52444f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(2249, 5049) - LocalObject(2888, Painbox.Constructor(Vector3(4964.428f, 4404.057f, 40.41074f), painbox), owning_building_guid = 39) - LocalObject(2905, Painbox.Constructor(Vector3(4981.857f, 4364.408f, 48.04394f), painbox_continuous), owning_building_guid = 39) - LocalObject(2922, Painbox.Constructor(Vector3(4978.203f, 4402.915f, 39.64864f), painbox_door_radius), owning_building_guid = 39) - LocalObject(2957, Painbox.Constructor(Vector3(4979.087f, 4349.386f, 46.44564f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(2958, Painbox.Constructor(Vector3(4979.895f, 4378.081f, 46.91644f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(2959, Painbox.Constructor(Vector3(4994.317f, 4371.888f, 47.34674f), painbox_door_radius_continuous), owning_building_guid = 39) + LocalObject( + 2888, + Painbox.Constructor(Vector3(4964.428f, 4404.057f, 40.41074f), painbox), + owning_building_guid = 39 + ) + LocalObject( + 2905, + Painbox.Constructor(Vector3(4981.857f, 4364.408f, 48.04394f), painbox_continuous), + owning_building_guid = 39 + ) + LocalObject( + 2922, + Painbox.Constructor(Vector3(4978.203f, 4402.915f, 39.64864f), painbox_door_radius), + owning_building_guid = 39 + ) + LocalObject( + 2957, + Painbox.Constructor(Vector3(4979.087f, 4349.386f, 46.44564f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 2958, + Painbox.Constructor(Vector3(4979.895f, 4378.081f, 46.91644f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 2959, + Painbox.Constructor(Vector3(4994.317f, 4371.888f, 47.34674f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) LocalObject(390, Generator.Constructor(Vector3(4960.445f, 4403.975f, 35.22244f)), owning_building_guid = 39) - LocalObject(373, Terminal.Constructor(Vector3(4968.637f, 4404.022f, 36.51644f), gen_control), owning_building_guid = 39) + LocalObject( + 373, + Terminal.Constructor(Vector3(4968.637f, 4404.022f, 36.51644f), gen_control), + owning_building_guid = 39 + ) } Building21() def Building21(): Unit = { // Name: Mukuru Type: cryo_facility GUID: 42, MapID: 21 - LocalBuilding("Mukuru", 42, 21, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(590f, 2410f, 54.06358f), Vector3(0f, 0f, 284f), cryo_facility))) - LocalObject(278, CaptureTerminal.Constructor(Vector3(640.7102f, 2451.592f, 44.06358f), capture_terminal), owning_building_guid = 42) + LocalBuilding( + "Mukuru", + 42, + 21, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(590f, 2410f, 54.06358f), + Vector3(0f, 0f, 284f), + cryo_facility + ) + ) + ) + LocalObject( + 278, + CaptureTerminal.Constructor(Vector3(640.7102f, 2451.592f, 44.06358f), capture_terminal), + owning_building_guid = 42 + ) LocalObject(402, Door.Constructor(Vector3(508.4743f, 2356.694f, 55.58458f)), owning_building_guid = 42) LocalObject(403, Door.Constructor(Vector3(510.8202f, 2384.789f, 63.57858f)), owning_building_guid = 42) LocalObject(405, Door.Constructor(Vector3(515.2214f, 2367.136f, 55.61458f)), owning_building_guid = 42) @@ -1206,15 +3378,60 @@ object Map03 { // Cyssor LocalObject(3500, Door.Constructor(Vector3(596.6932f, 2406.853f, 45.91758f)), owning_building_guid = 42) LocalObject(3501, Door.Constructor(Vector3(603.7696f, 2408.617f, 45.91758f)), owning_building_guid = 42) LocalObject(3502, Door.Constructor(Vector3(610.842f, 2410.38f, 45.91758f)), owning_building_guid = 42) - LocalObject(1252, IFFLock.Constructor(Vector3(617.1818f, 2415.984f, 55.54558f), Vector3(0, 0, 76)), owning_building_guid = 42, door_guid = 1188) - LocalObject(1275, IFFLock.Constructor(Vector3(510.6526f, 2356.398f, 55.51558f), Vector3(0, 0, 166)), owning_building_guid = 42, door_guid = 402) - LocalObject(1281, IFFLock.Constructor(Vector3(592.4974f, 2396.635f, 45.39958f), Vector3(0, 0, 256)), owning_building_guid = 42, door_guid = 844) - LocalObject(1282, IFFLock.Constructor(Vector3(594.3132f, 2409.062f, 65.51558f), Vector3(0, 0, 76)), owning_building_guid = 42, door_guid = 413) - LocalObject(1283, IFFLock.Constructor(Vector3(597.9661f, 2388.086f, 37.89958f), Vector3(0, 0, 346)), owning_building_guid = 42, door_guid = 847) - LocalObject(1284, IFFLock.Constructor(Vector3(607.7144f, 2430.068f, 65.51558f), Vector3(0, 0, 166)), owning_building_guid = 42, door_guid = 420) - LocalObject(1292, IFFLock.Constructor(Vector3(616.5958f, 2405.884f, 45.39958f), Vector3(0, 0, 76)), owning_building_guid = 42, door_guid = 852) - LocalObject(1299, IFFLock.Constructor(Vector3(646.4859f, 2458.032f, 45.39958f), Vector3(0, 0, 346)), owning_building_guid = 42, door_guid = 857) - LocalObject(1300, IFFLock.Constructor(Vector3(651.896f, 2449.329f, 45.39958f), Vector3(0, 0, 166)), owning_building_guid = 42, door_guid = 858) + LocalObject( + 1252, + IFFLock.Constructor(Vector3(617.1818f, 2415.984f, 55.54558f), Vector3(0, 0, 76)), + owning_building_guid = 42, + door_guid = 1188 + ) + LocalObject( + 1275, + IFFLock.Constructor(Vector3(510.6526f, 2356.398f, 55.51558f), Vector3(0, 0, 166)), + owning_building_guid = 42, + door_guid = 402 + ) + LocalObject( + 1281, + IFFLock.Constructor(Vector3(592.4974f, 2396.635f, 45.39958f), Vector3(0, 0, 256)), + owning_building_guid = 42, + door_guid = 844 + ) + LocalObject( + 1282, + IFFLock.Constructor(Vector3(594.3132f, 2409.062f, 65.51558f), Vector3(0, 0, 76)), + owning_building_guid = 42, + door_guid = 413 + ) + LocalObject( + 1283, + IFFLock.Constructor(Vector3(597.9661f, 2388.086f, 37.89958f), Vector3(0, 0, 346)), + owning_building_guid = 42, + door_guid = 847 + ) + LocalObject( + 1284, + IFFLock.Constructor(Vector3(607.7144f, 2430.068f, 65.51558f), Vector3(0, 0, 166)), + owning_building_guid = 42, + door_guid = 420 + ) + LocalObject( + 1292, + IFFLock.Constructor(Vector3(616.5958f, 2405.884f, 45.39958f), Vector3(0, 0, 76)), + owning_building_guid = 42, + door_guid = 852 + ) + LocalObject( + 1299, + IFFLock.Constructor(Vector3(646.4859f, 2458.032f, 45.39958f), Vector3(0, 0, 346)), + owning_building_guid = 42, + door_guid = 857 + ) + LocalObject( + 1300, + IFFLock.Constructor(Vector3(651.896f, 2449.329f, 45.39958f), Vector3(0, 0, 166)), + owning_building_guid = 42, + door_guid = 858 + ) LocalObject(1601, Locker.Constructor(Vector3(595.8424f, 2395.417f, 44.32458f)), owning_building_guid = 42) LocalObject(1602, Locker.Constructor(Vector3(596.124f, 2394.288f, 44.32458f)), owning_building_guid = 42) LocalObject(1603, Locker.Constructor(Vector3(596.4015f, 2393.175f, 44.32458f)), owning_building_guid = 42) @@ -1244,76 +3461,309 @@ object Map03 { // Cyssor LocalObject(2107, Locker.Constructor(Vector3(589.0421f, 2390.942f, 53.83458f)), owning_building_guid = 42) LocalObject(2108, Locker.Constructor(Vector3(591.4891f, 2391.552f, 54.06358f)), owning_building_guid = 42) LocalObject(2109, Locker.Constructor(Vector3(592.4924f, 2391.802f, 54.06358f)), owning_building_guid = 42) - LocalObject(294, Terminal.Constructor(Vector3(636.3127f, 2417.709f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(295, Terminal.Constructor(Vector3(637.3674f, 2419.464f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(296, Terminal.Constructor(Vector3(639.3851f, 2405.386f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(297, Terminal.Constructor(Vector3(641.1404f, 2404.332f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(298, Terminal.Constructor(Vector3(644.4748f, 2421.236f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(299, Terminal.Constructor(Vector3(646.2301f, 2420.182f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(300, Terminal.Constructor(Vector3(648.2478f, 2406.104f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(301, Terminal.Constructor(Vector3(649.3025f, 2407.859f, 44.05358f), cert_terminal), owning_building_guid = 42) - LocalObject(2360, Terminal.Constructor(Vector3(596.817f, 2422.035f, 55.35858f), order_terminal), owning_building_guid = 42) - LocalObject(2361, Terminal.Constructor(Vector3(601.7007f, 2393.692f, 45.65358f), order_terminal), owning_building_guid = 42) - LocalObject(2362, Terminal.Constructor(Vector3(605.3209f, 2394.595f, 45.65358f), order_terminal), owning_building_guid = 42) - LocalObject(2363, Terminal.Constructor(Vector3(608.9974f, 2395.511f, 45.65358f), order_terminal), owning_building_guid = 42) - LocalObject(3389, Terminal.Constructor(Vector3(531.1984f, 2411.922f, 48.17658f), spawn_terminal), owning_building_guid = 42) - LocalObject(3391, Terminal.Constructor(Vector3(577.225f, 2404.852f, 55.64258f), spawn_terminal), owning_building_guid = 42) - LocalObject(3392, Terminal.Constructor(Vector3(579.7477f, 2448.668f, 45.67658f), spawn_terminal), owning_building_guid = 42) - LocalObject(3393, Terminal.Constructor(Vector3(594.3492f, 2405.961f, 46.19758f), spawn_terminal), owning_building_guid = 42) - LocalObject(3394, Terminal.Constructor(Vector3(601.4237f, 2407.729f, 46.19758f), spawn_terminal), owning_building_guid = 42) - LocalObject(3395, Terminal.Constructor(Vector3(608.4959f, 2409.49f, 46.19758f), spawn_terminal), owning_building_guid = 42) - LocalObject(3397, Terminal.Constructor(Vector3(651.9554f, 2426.058f, 45.67658f), spawn_terminal), owning_building_guid = 42) - LocalObject(3716, Terminal.Constructor(Vector3(537.7939f, 2358.204f, 56.36858f), vehicle_terminal_combined), owning_building_guid = 42) - LocalObject(2304, VehicleSpawnPad.Constructor(Vector3(534.407f, 2371.416f, 52.21058f), mb_pad_creation, Vector3(0, 0, -14)), owning_building_guid = 42, terminal_guid = 3716) + LocalObject( + 294, + Terminal.Constructor(Vector3(636.3127f, 2417.709f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 295, + Terminal.Constructor(Vector3(637.3674f, 2419.464f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 296, + Terminal.Constructor(Vector3(639.3851f, 2405.386f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 297, + Terminal.Constructor(Vector3(641.1404f, 2404.332f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 298, + Terminal.Constructor(Vector3(644.4748f, 2421.236f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 299, + Terminal.Constructor(Vector3(646.2301f, 2420.182f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 300, + Terminal.Constructor(Vector3(648.2478f, 2406.104f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 301, + Terminal.Constructor(Vector3(649.3025f, 2407.859f, 44.05358f), cert_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2360, + Terminal.Constructor(Vector3(596.817f, 2422.035f, 55.35858f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2361, + Terminal.Constructor(Vector3(601.7007f, 2393.692f, 45.65358f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2362, + Terminal.Constructor(Vector3(605.3209f, 2394.595f, 45.65358f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2363, + Terminal.Constructor(Vector3(608.9974f, 2395.511f, 45.65358f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3389, + Terminal.Constructor(Vector3(531.1984f, 2411.922f, 48.17658f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3391, + Terminal.Constructor(Vector3(577.225f, 2404.852f, 55.64258f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3392, + Terminal.Constructor(Vector3(579.7477f, 2448.668f, 45.67658f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3393, + Terminal.Constructor(Vector3(594.3492f, 2405.961f, 46.19758f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3394, + Terminal.Constructor(Vector3(601.4237f, 2407.729f, 46.19758f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3395, + Terminal.Constructor(Vector3(608.4959f, 2409.49f, 46.19758f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3397, + Terminal.Constructor(Vector3(651.9554f, 2426.058f, 45.67658f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3716, + Terminal.Constructor(Vector3(537.7939f, 2358.204f, 56.36858f), vehicle_terminal_combined), + owning_building_guid = 42 + ) + LocalObject( + 2304, + VehicleSpawnPad.Constructor(Vector3(534.407f, 2371.416f, 52.21058f), mb_pad_creation, Vector3(0, 0, -14)), + owning_building_guid = 42, + terminal_guid = 3716 + ) LocalObject(3217, ResourceSilo.Constructor(Vector3(624.7616f, 2480.779f, 61.08058f)), owning_building_guid = 42) - LocalObject(3236, SpawnTube.Constructor(Vector3(595.5679f, 2407.026f, 44.06358f), Vector3(0, 0, 76)), owning_building_guid = 42) - LocalObject(3237, SpawnTube.Constructor(Vector3(602.6424f, 2408.79f, 44.06358f), Vector3(0, 0, 76)), owning_building_guid = 42) - LocalObject(3238, SpawnTube.Constructor(Vector3(609.7139f, 2410.553f, 44.06358f), Vector3(0, 0, 76)), owning_building_guid = 42) - LocalObject(203, ProximityTerminal.Constructor(Vector3(583.5829f, 2406.356f, 53.87358f), adv_med_terminal), owning_building_guid = 42) - LocalObject(2329, ProximityTerminal.Constructor(Vector3(600.5218f, 2384.135f, 44.06358f), medical_terminal), owning_building_guid = 42) - LocalObject(2636, ProximityTerminal.Constructor(Vector3(522.3973f, 2395.002f, 62.41558f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2637, Terminal.Constructor(Vector3(522.3973f, 2395.002f, 62.41558f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2642, ProximityTerminal.Constructor(Vector3(525.5179f, 2412.594f, 64.35658f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2643, Terminal.Constructor(Vector3(525.5179f, 2412.594f, 64.35658f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2651, ProximityTerminal.Constructor(Vector3(634.2289f, 2419.664f, 64.39558f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2652, Terminal.Constructor(Vector3(634.2289f, 2419.664f, 64.39558f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2654, ProximityTerminal.Constructor(Vector3(638.4529f, 2437.436f, 62.40558f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2655, Terminal.Constructor(Vector3(638.4529f, 2437.436f, 62.40558f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(3084, ProximityTerminal.Constructor(Vector3(499.0919f, 2423.896f, 53.81358f), repair_silo), owning_building_guid = 42) - LocalObject(3085, Terminal.Constructor(Vector3(499.0919f, 2423.896f, 53.81358f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(3092, ProximityTerminal.Constructor(Vector3(618.0981f, 2362.868f, 53.81358f), repair_silo), owning_building_guid = 42) - LocalObject(3093, Terminal.Constructor(Vector3(618.0981f, 2362.868f, 53.81358f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(2162, FacilityTurret.Constructor(Vector3(478.9274f, 2456.098f, 62.46558f), manned_turret), owning_building_guid = 42) + LocalObject( + 3236, + SpawnTube.Constructor(Vector3(595.5679f, 2407.026f, 44.06358f), Vector3(0, 0, 76)), + owning_building_guid = 42 + ) + LocalObject( + 3237, + SpawnTube.Constructor(Vector3(602.6424f, 2408.79f, 44.06358f), Vector3(0, 0, 76)), + owning_building_guid = 42 + ) + LocalObject( + 3238, + SpawnTube.Constructor(Vector3(609.7139f, 2410.553f, 44.06358f), Vector3(0, 0, 76)), + owning_building_guid = 42 + ) + LocalObject( + 203, + ProximityTerminal.Constructor(Vector3(583.5829f, 2406.356f, 53.87358f), adv_med_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2329, + ProximityTerminal.Constructor(Vector3(600.5218f, 2384.135f, 44.06358f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2636, + ProximityTerminal.Constructor(Vector3(522.3973f, 2395.002f, 62.41558f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2637, + Terminal.Constructor(Vector3(522.3973f, 2395.002f, 62.41558f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2642, + ProximityTerminal.Constructor(Vector3(525.5179f, 2412.594f, 64.35658f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2643, + Terminal.Constructor(Vector3(525.5179f, 2412.594f, 64.35658f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2651, + ProximityTerminal.Constructor(Vector3(634.2289f, 2419.664f, 64.39558f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2652, + Terminal.Constructor(Vector3(634.2289f, 2419.664f, 64.39558f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2654, + ProximityTerminal.Constructor(Vector3(638.4529f, 2437.436f, 62.40558f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2655, + Terminal.Constructor(Vector3(638.4529f, 2437.436f, 62.40558f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3084, + ProximityTerminal.Constructor(Vector3(499.0919f, 2423.896f, 53.81358f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 3085, + Terminal.Constructor(Vector3(499.0919f, 2423.896f, 53.81358f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3092, + ProximityTerminal.Constructor(Vector3(618.0981f, 2362.868f, 53.81358f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 3093, + Terminal.Constructor(Vector3(618.0981f, 2362.868f, 53.81358f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2162, + FacilityTurret.Constructor(Vector3(478.9274f, 2456.098f, 62.46558f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(2162, 5050) - LocalObject(2163, FacilityTurret.Constructor(Vector3(511.6338f, 2324.887f, 62.46558f), manned_turret), owning_building_guid = 42) + LocalObject( + 2163, + FacilityTurret.Constructor(Vector3(511.6338f, 2324.887f, 62.46558f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(2163, 5051) - LocalObject(2171, FacilityTurret.Constructor(Vector3(643.0322f, 2356.425f, 62.46558f), manned_turret), owning_building_guid = 42) + LocalObject( + 2171, + FacilityTurret.Constructor(Vector3(643.0322f, 2356.425f, 62.46558f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(2171, 5052) - LocalObject(2172, FacilityTurret.Constructor(Vector3(650.7581f, 2498.949f, 62.46558f), manned_turret), owning_building_guid = 42) + LocalObject( + 2172, + FacilityTurret.Constructor(Vector3(650.7581f, 2498.949f, 62.46558f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(2172, 5053) - LocalObject(2175, FacilityTurret.Constructor(Vector3(674.4222f, 2408.72f, 62.46558f), manned_turret), owning_building_guid = 42) + LocalObject( + 2175, + FacilityTurret.Constructor(Vector3(674.4222f, 2408.72f, 62.46558f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(2175, 5054) - LocalObject(1224, ImplantTerminalMech.Constructor(Vector3(635.4853f, 2410.967f, 43.54058f)), owning_building_guid = 42) - LocalObject(1214, Terminal.Constructor(Vector3(635.5027f, 2410.971f, 43.54058f), implant_terminal_interface), owning_building_guid = 42) + LocalObject( + 1224, + ImplantTerminalMech.Constructor(Vector3(635.4853f, 2410.967f, 43.54058f)), + owning_building_guid = 42 + ) + LocalObject( + 1214, + Terminal.Constructor(Vector3(635.5027f, 2410.971f, 43.54058f), implant_terminal_interface), + owning_building_guid = 42 + ) TerminalToInterface(1224, 1214) - LocalObject(1225, ImplantTerminalMech.Constructor(Vector3(650.3822f, 2414.693f, 43.54058f)), owning_building_guid = 42) - LocalObject(1215, Terminal.Constructor(Vector3(650.3647f, 2414.689f, 43.54058f), implant_terminal_interface), owning_building_guid = 42) + LocalObject( + 1225, + ImplantTerminalMech.Constructor(Vector3(650.3822f, 2414.693f, 43.54058f)), + owning_building_guid = 42 + ) + LocalObject( + 1215, + Terminal.Constructor(Vector3(650.3647f, 2414.689f, 43.54058f), implant_terminal_interface), + owning_building_guid = 42 + ) TerminalToInterface(1225, 1215) - LocalObject(2880, Painbox.Constructor(Vector3(572.2711f, 2399.815f, 68.09238f), painbox), owning_building_guid = 42) - LocalObject(2897, Painbox.Constructor(Vector3(601.0518f, 2397.551f, 48.13348f), painbox_continuous), owning_building_guid = 42) - LocalObject(2914, Painbox.Constructor(Vector3(585.9642f, 2404.683f, 68.29749f), painbox_door_radius), owning_building_guid = 42) - LocalObject(2933, Painbox.Constructor(Vector3(590.4086f, 2399.24f, 46.41948f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(2934, Painbox.Constructor(Vector3(615.2295f, 2387.555f, 47.60448f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(2935, Painbox.Constructor(Vector3(618.0916f, 2404.105f, 45.77778f), painbox_door_radius_continuous), owning_building_guid = 42) + LocalObject( + 2880, + Painbox.Constructor(Vector3(572.2711f, 2399.815f, 68.09238f), painbox), + owning_building_guid = 42 + ) + LocalObject( + 2897, + Painbox.Constructor(Vector3(601.0518f, 2397.551f, 48.13348f), painbox_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2914, + Painbox.Constructor(Vector3(585.9642f, 2404.683f, 68.29749f), painbox_door_radius), + owning_building_guid = 42 + ) + LocalObject( + 2933, + Painbox.Constructor(Vector3(590.4086f, 2399.24f, 46.41948f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2934, + Painbox.Constructor(Vector3(615.2295f, 2387.555f, 47.60448f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2935, + Painbox.Constructor(Vector3(618.0916f, 2404.105f, 45.77778f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) LocalObject(382, Generator.Constructor(Vector3(568.1184f, 2400.396f, 62.76958f)), owning_building_guid = 42) - LocalObject(365, Terminal.Constructor(Vector3(576.0557f, 2402.424f, 64.06358f), gen_control), owning_building_guid = 42) + LocalObject( + 365, + Terminal.Constructor(Vector3(576.0557f, 2402.424f, 64.06358f), gen_control), + owning_building_guid = 42 + ) } Building19() def Building19(): Unit = { // Name: Honsi Type: cryo_facility GUID: 45, MapID: 19 - LocalBuilding("Honsi", 45, 19, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3996f, 4526f, 88.9639f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(284, CaptureTerminal.Constructor(Vector3(3967.911f, 4585.266f, 78.9639f), capture_terminal), owning_building_guid = 45) + LocalBuilding( + "Honsi", + 45, + 19, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3996f, 4526f, 88.9639f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 284, + CaptureTerminal.Constructor(Vector3(3967.911f, 4585.266f, 78.9639f), capture_terminal), + owning_building_guid = 45 + ) LocalObject(576, Door.Constructor(Vector3(3937.023f, 4530.5f, 90.5149f)), owning_building_guid = 45) LocalObject(577, Door.Constructor(Vector3(3937.023f, 4548.693f, 98.4789f)), owning_building_guid = 45) LocalObject(578, Door.Constructor(Vector3(3953.674f, 4593.803f, 90.5149f)), owning_building_guid = 45) @@ -1354,15 +3804,60 @@ object Map03 { // Cyssor LocalObject(3554, Door.Constructor(Vector3(4000.673f, 4531.733f, 80.8179f)), owning_building_guid = 45) LocalObject(3555, Door.Constructor(Vector3(4000.673f, 4539.026f, 80.8179f)), owning_building_guid = 45) LocalObject(3556, Door.Constructor(Vector3(4000.673f, 4546.315f, 80.8179f)), owning_building_guid = 45) - LocalObject(1258, IFFLock.Constructor(Vector3(3996.77f, 4553.822f, 90.4459f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 1194) - LocalObject(1412, IFFLock.Constructor(Vector3(3963.06f, 4592.428f, 80.2999f), Vector3(0, 0, 270)), owning_building_guid = 45, door_guid = 975) - LocalObject(1413, IFFLock.Constructor(Vector3(3972.813f, 4595.572f, 80.2999f), Vector3(0, 0, 90)), owning_building_guid = 45, door_guid = 976) - LocalObject(1417, IFFLock.Constructor(Vector3(3980.814f, 4548.043f, 100.4159f), Vector3(0, 0, 90)), owning_building_guid = 45, door_guid = 580) - LocalObject(1425, IFFLock.Constructor(Vector3(3997.954f, 4529.958f, 100.4159f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 591) - LocalObject(1426, IFFLock.Constructor(Vector3(4006.428f, 4550.81f, 80.2999f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 990) - LocalObject(1427, IFFLock.Constructor(Vector3(4009.572f, 4525.19f, 80.2999f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 989) - LocalObject(1430, IFFLock.Constructor(Vector3(4019.19f, 4528.428f, 72.7999f), Vector3(0, 0, 270)), owning_building_guid = 45, door_guid = 991) - LocalObject(1433, IFFLock.Constructor(Vector3(4028.814f, 4436.042f, 90.4159f), Vector3(0, 0, 90)), owning_building_guid = 45, door_guid = 598) + LocalObject( + 1258, + IFFLock.Constructor(Vector3(3996.77f, 4553.822f, 90.4459f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 1194 + ) + LocalObject( + 1412, + IFFLock.Constructor(Vector3(3963.06f, 4592.428f, 80.2999f), Vector3(0, 0, 270)), + owning_building_guid = 45, + door_guid = 975 + ) + LocalObject( + 1413, + IFFLock.Constructor(Vector3(3972.813f, 4595.572f, 80.2999f), Vector3(0, 0, 90)), + owning_building_guid = 45, + door_guid = 976 + ) + LocalObject( + 1417, + IFFLock.Constructor(Vector3(3980.814f, 4548.043f, 100.4159f), Vector3(0, 0, 90)), + owning_building_guid = 45, + door_guid = 580 + ) + LocalObject( + 1425, + IFFLock.Constructor(Vector3(3997.954f, 4529.958f, 100.4159f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 591 + ) + LocalObject( + 1426, + IFFLock.Constructor(Vector3(4006.428f, 4550.81f, 80.2999f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 990 + ) + LocalObject( + 1427, + IFFLock.Constructor(Vector3(4009.572f, 4525.19f, 80.2999f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 989 + ) + LocalObject( + 1430, + IFFLock.Constructor(Vector3(4019.19f, 4528.428f, 72.7999f), Vector3(0, 0, 270)), + owning_building_guid = 45, + door_guid = 991 + ) + LocalObject( + 1433, + IFFLock.Constructor(Vector3(4028.814f, 4436.042f, 90.4159f), Vector3(0, 0, 90)), + owning_building_guid = 45, + door_guid = 598 + ) LocalObject(1826, Locker.Constructor(Vector3(4011.563f, 4528.141f, 79.2249f)), owning_building_guid = 45) LocalObject(1827, Locker.Constructor(Vector3(4012.727f, 4528.141f, 79.2249f)), owning_building_guid = 45) LocalObject(1828, Locker.Constructor(Vector3(4013.874f, 4528.141f, 79.2249f)), owning_building_guid = 45) @@ -1392,76 +3887,309 @@ object Map03 { // Cyssor LocalObject(2115, Locker.Constructor(Vector3(4014.26f, 4520.46f, 88.7349f)), owning_building_guid = 45) LocalObject(2116, Locker.Constructor(Vector3(4014.26f, 4522.982f, 88.9639f)), owning_building_guid = 45) LocalObject(2117, Locker.Constructor(Vector3(4014.26f, 4524.016f, 88.9639f)), owning_building_guid = 45) - LocalObject(302, Terminal.Constructor(Vector3(3998.276f, 4574.25f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(303, Terminal.Constructor(Vector3(3998.276f, 4581.575f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(304, Terminal.Constructor(Vector3(3999.724f, 4572.802f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(305, Terminal.Constructor(Vector3(3999.724f, 4583.023f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(306, Terminal.Constructor(Vector3(4012.424f, 4572.802f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(307, Terminal.Constructor(Vector3(4012.424f, 4583.023f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(308, Terminal.Constructor(Vector3(4013.872f, 4574.25f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(309, Terminal.Constructor(Vector3(4013.872f, 4581.575f, 78.9539f), cert_terminal), owning_building_guid = 45) - LocalObject(2442, Terminal.Constructor(Vector3(3985.972f, 4535.526f, 90.2589f), order_terminal), owning_building_guid = 45) - LocalObject(2449, Terminal.Constructor(Vector3(4014.654f, 4533.408f, 80.55389f), order_terminal), owning_building_guid = 45) - LocalObject(2450, Terminal.Constructor(Vector3(4014.654f, 4537.139f, 80.55389f), order_terminal), owning_building_guid = 45) - LocalObject(2451, Terminal.Constructor(Vector3(4014.654f, 4540.928f, 80.55389f), order_terminal), owning_building_guid = 45) - LocalObject(3428, Terminal.Constructor(Vector3(3956f, 4525.407f, 80.5769f), spawn_terminal), owning_building_guid = 45) - LocalObject(3429, Terminal.Constructor(Vector3(3979.91f, 4469.41f, 83.0769f), spawn_terminal), owning_building_guid = 45) - LocalObject(3430, Terminal.Constructor(Vector3(3995.407f, 4590f, 80.5769f), spawn_terminal), owning_building_guid = 45) - LocalObject(3431, Terminal.Constructor(Vector3(3997.905f, 4512.359f, 90.5429f), spawn_terminal), owning_building_guid = 45) - LocalObject(3432, Terminal.Constructor(Vector3(4000.971f, 4529.243f, 81.0979f), spawn_terminal), owning_building_guid = 45) - LocalObject(3433, Terminal.Constructor(Vector3(4000.967f, 4536.535f, 81.0979f), spawn_terminal), owning_building_guid = 45) - LocalObject(3434, Terminal.Constructor(Vector3(4000.97f, 4543.823f, 81.0979f), spawn_terminal), owning_building_guid = 45) - LocalObject(3723, Terminal.Constructor(Vector3(4033.628f, 4462.814f, 91.2689f), vehicle_terminal_combined), owning_building_guid = 45) - LocalObject(2313, VehicleSpawnPad.Constructor(Vector3(4019.989f, 4462.724f, 87.1109f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 45, terminal_guid = 3723) + LocalObject( + 302, + Terminal.Constructor(Vector3(3998.276f, 4574.25f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 303, + Terminal.Constructor(Vector3(3998.276f, 4581.575f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 304, + Terminal.Constructor(Vector3(3999.724f, 4572.802f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 305, + Terminal.Constructor(Vector3(3999.724f, 4583.023f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 306, + Terminal.Constructor(Vector3(4012.424f, 4572.802f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 307, + Terminal.Constructor(Vector3(4012.424f, 4583.023f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 308, + Terminal.Constructor(Vector3(4013.872f, 4574.25f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 309, + Terminal.Constructor(Vector3(4013.872f, 4581.575f, 78.9539f), cert_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2442, + Terminal.Constructor(Vector3(3985.972f, 4535.526f, 90.2589f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2449, + Terminal.Constructor(Vector3(4014.654f, 4533.408f, 80.55389f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2450, + Terminal.Constructor(Vector3(4014.654f, 4537.139f, 80.55389f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2451, + Terminal.Constructor(Vector3(4014.654f, 4540.928f, 80.55389f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3428, + Terminal.Constructor(Vector3(3956f, 4525.407f, 80.5769f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3429, + Terminal.Constructor(Vector3(3979.91f, 4469.41f, 83.0769f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3430, + Terminal.Constructor(Vector3(3995.407f, 4590f, 80.5769f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3431, + Terminal.Constructor(Vector3(3997.905f, 4512.359f, 90.5429f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3432, + Terminal.Constructor(Vector3(4000.971f, 4529.243f, 81.0979f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3433, + Terminal.Constructor(Vector3(4000.967f, 4536.535f, 81.0979f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3434, + Terminal.Constructor(Vector3(4000.97f, 4543.823f, 81.0979f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3723, + Terminal.Constructor(Vector3(4033.628f, 4462.814f, 91.2689f), vehicle_terminal_combined), + owning_building_guid = 45 + ) + LocalObject( + 2313, + VehicleSpawnPad.Constructor(Vector3(4019.989f, 4462.724f, 87.1109f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 45, + terminal_guid = 3723 + ) LocalObject(3223, ResourceSilo.Constructor(Vector3(3935.733f, 4576.852f, 95.9809f)), owning_building_guid = 45) - LocalObject(3290, SpawnTube.Constructor(Vector3(4000.233f, 4530.683f, 78.9639f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(3291, SpawnTube.Constructor(Vector3(4000.233f, 4537.974f, 78.9639f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(3292, SpawnTube.Constructor(Vector3(4000.233f, 4545.262f, 78.9639f), Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(204, ProximityTerminal.Constructor(Vector3(3997.983f, 4518.892f, 88.7739f), adv_med_terminal), owning_building_guid = 45) - LocalObject(2340, ProximityTerminal.Constructor(Vector3(4023.642f, 4529.952f, 78.9639f), medical_terminal), owning_building_guid = 45) - LocalObject(2705, ProximityTerminal.Constructor(Vector3(3977.883f, 4464.061f, 99.2569f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2706, Terminal.Constructor(Vector3(3977.883f, 4464.061f, 99.2569f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2708, ProximityTerminal.Constructor(Vector3(3981.101f, 4579.651f, 97.3059f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2709, Terminal.Constructor(Vector3(3981.101f, 4579.651f, 97.3059f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2711, ProximityTerminal.Constructor(Vector3(3994.198f, 4456.777f, 97.3159f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2712, Terminal.Constructor(Vector3(3994.198f, 4456.777f, 97.3159f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2714, ProximityTerminal.Constructor(Vector3(3997.323f, 4571.253f, 99.2959f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2715, Terminal.Constructor(Vector3(3997.323f, 4571.253f, 99.2959f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(3136, ProximityTerminal.Constructor(Vector3(3960.525f, 4441.154f, 88.7139f), repair_silo), owning_building_guid = 45) - LocalObject(3137, Terminal.Constructor(Vector3(3960.525f, 4441.154f, 88.7139f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(3140, ProximityTerminal.Constructor(Vector3(4048.53f, 4541.861f, 88.7139f), repair_silo), owning_building_guid = 45) - LocalObject(3141, Terminal.Constructor(Vector3(4048.53f, 4541.861f, 88.7139f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(2224, FacilityTurret.Constructor(Vector3(3924.392f, 4606.472f, 97.3659f), manned_turret), owning_building_guid = 45) + LocalObject( + 3290, + SpawnTube.Constructor(Vector3(4000.233f, 4530.683f, 78.9639f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 3291, + SpawnTube.Constructor(Vector3(4000.233f, 4537.974f, 78.9639f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 3292, + SpawnTube.Constructor(Vector3(4000.233f, 4545.262f, 78.9639f), Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 204, + ProximityTerminal.Constructor(Vector3(3997.983f, 4518.892f, 88.7739f), adv_med_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2340, + ProximityTerminal.Constructor(Vector3(4023.642f, 4529.952f, 78.9639f), medical_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2705, + ProximityTerminal.Constructor(Vector3(3977.883f, 4464.061f, 99.2569f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2706, + Terminal.Constructor(Vector3(3977.883f, 4464.061f, 99.2569f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2708, + ProximityTerminal.Constructor(Vector3(3981.101f, 4579.651f, 97.3059f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2709, + Terminal.Constructor(Vector3(3981.101f, 4579.651f, 97.3059f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2711, + ProximityTerminal.Constructor(Vector3(3994.198f, 4456.777f, 97.3159f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2712, + Terminal.Constructor(Vector3(3994.198f, 4456.777f, 97.3159f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2714, + ProximityTerminal.Constructor(Vector3(3997.323f, 4571.253f, 99.2959f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2715, + Terminal.Constructor(Vector3(3997.323f, 4571.253f, 99.2959f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3136, + ProximityTerminal.Constructor(Vector3(3960.525f, 4441.154f, 88.7139f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 3137, + Terminal.Constructor(Vector3(3960.525f, 4441.154f, 88.7139f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3140, + ProximityTerminal.Constructor(Vector3(4048.53f, 4541.861f, 88.7139f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 3141, + Terminal.Constructor(Vector3(4048.53f, 4541.861f, 88.7139f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2224, + FacilityTurret.Constructor(Vector3(3924.392f, 4606.472f, 97.3659f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(2224, 5055) - LocalObject(2225, FacilityTurret.Constructor(Vector3(3924.4f, 4429.379f, 97.3659f), manned_turret), owning_building_guid = 45) + LocalObject( + 2225, + FacilityTurret.Constructor(Vector3(3924.4f, 4429.379f, 97.3659f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(2225, 5056) - LocalObject(2229, FacilityTurret.Constructor(Vector3(4017.665f, 4607.605f, 97.3659f), manned_turret), owning_building_guid = 45) + LocalObject( + 2229, + FacilityTurret.Constructor(Vector3(4017.665f, 4607.605f, 97.3659f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(2229, 5057) - LocalObject(2231, FacilityTurret.Constructor(Vector3(4059.626f, 4429.371f, 97.3659f), manned_turret), owning_building_guid = 45) + LocalObject( + 2231, + FacilityTurret.Constructor(Vector3(4059.626f, 4429.371f, 97.3659f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(2231, 5058) - LocalObject(2232, FacilityTurret.Constructor(Vector3(4060.813f, 4564.496f, 97.3659f), manned_turret), owning_building_guid = 45) + LocalObject( + 2232, + FacilityTurret.Constructor(Vector3(4060.813f, 4564.496f, 97.3659f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(2232, 5059) - LocalObject(1226, ImplantTerminalMech.Constructor(Vector3(4006.066f, 4570.368f, 78.4409f)), owning_building_guid = 45) - LocalObject(1216, Terminal.Constructor(Vector3(4006.066f, 4570.386f, 78.4409f), implant_terminal_interface), owning_building_guid = 45) + LocalObject( + 1226, + ImplantTerminalMech.Constructor(Vector3(4006.066f, 4570.368f, 78.4409f)), + owning_building_guid = 45 + ) + LocalObject( + 1216, + Terminal.Constructor(Vector3(4006.066f, 4570.386f, 78.4409f), implant_terminal_interface), + owning_building_guid = 45 + ) TerminalToInterface(1226, 1216) - LocalObject(1227, ImplantTerminalMech.Constructor(Vector3(4006.054f, 4585.724f, 78.4409f)), owning_building_guid = 45) - LocalObject(1217, Terminal.Constructor(Vector3(4006.054f, 4585.706f, 78.4409f), implant_terminal_interface), owning_building_guid = 45) + LocalObject( + 1227, + ImplantTerminalMech.Constructor(Vector3(4006.054f, 4585.724f, 78.4409f)), + owning_building_guid = 45 + ) + LocalObject( + 1217, + Terminal.Constructor(Vector3(4006.054f, 4585.706f, 78.4409f), implant_terminal_interface), + owning_building_guid = 45 + ) TerminalToInterface(1227, 1217) - LocalObject(2886, Painbox.Constructor(Vector3(4001.594f, 4506.334f, 102.9927f), painbox), owning_building_guid = 45) - LocalObject(2903, Painbox.Constructor(Vector3(4010.753f, 4533.712f, 83.0338f), painbox_continuous), owning_building_guid = 45) - LocalObject(2920, Painbox.Constructor(Vector3(4000.182f, 4520.798f, 103.1978f), painbox_door_radius), owning_building_guid = 45) - LocalObject(2951, Painbox.Constructor(Vector3(4006.54f, 4523.793f, 81.31979f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(2952, Painbox.Constructor(Vector3(4008.515f, 4551.831f, 80.6781f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(2953, Painbox.Constructor(Vector3(4023.882f, 4545.05f, 82.5048f), painbox_door_radius_continuous), owning_building_guid = 45) + LocalObject( + 2886, + Painbox.Constructor(Vector3(4001.594f, 4506.334f, 102.9927f), painbox), + owning_building_guid = 45 + ) + LocalObject( + 2903, + Painbox.Constructor(Vector3(4010.753f, 4533.712f, 83.0338f), painbox_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2920, + Painbox.Constructor(Vector3(4000.182f, 4520.798f, 103.1978f), painbox_door_radius), + owning_building_guid = 45 + ) + LocalObject( + 2951, + Painbox.Constructor(Vector3(4006.54f, 4523.793f, 81.31979f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2952, + Painbox.Constructor(Vector3(4008.515f, 4551.831f, 80.6781f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2953, + Painbox.Constructor(Vector3(4023.882f, 4545.05f, 82.5048f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) LocalObject(388, Generator.Constructor(Vector3(4000.025f, 4502.445f, 97.6699f)), owning_building_guid = 45) - LocalObject(371, Terminal.Constructor(Vector3(3999.978f, 4510.637f, 98.9639f), gen_control), owning_building_guid = 45) + LocalObject( + 371, + Terminal.Constructor(Vector3(3999.978f, 4510.637f, 98.9639f), gen_control), + owning_building_guid = 45 + ) } Building4() def Building4(): Unit = { // Name: Chuku Type: cryo_facility GUID: 48, MapID: 4 - LocalBuilding("Chuku", 48, 4, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4162f, 6962f, 54.02264f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(285, CaptureTerminal.Constructor(Vector3(4133.911f, 7021.266f, 44.02264f), capture_terminal), owning_building_guid = 48) + LocalBuilding( + "Chuku", + 48, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4162f, 6962f, 54.02264f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 285, + CaptureTerminal.Constructor(Vector3(4133.911f, 7021.266f, 44.02264f), capture_terminal), + owning_building_guid = 48 + ) LocalObject(601, Door.Constructor(Vector3(4103.023f, 6966.5f, 55.57364f)), owning_building_guid = 48) LocalObject(602, Door.Constructor(Vector3(4103.023f, 6984.693f, 63.53764f)), owning_building_guid = 48) LocalObject(603, Door.Constructor(Vector3(4119.674f, 7029.803f, 55.57364f)), owning_building_guid = 48) @@ -1502,15 +4230,60 @@ object Map03 { // Cyssor LocalObject(3559, Door.Constructor(Vector3(4166.673f, 6967.733f, 45.87664f)), owning_building_guid = 48) LocalObject(3560, Door.Constructor(Vector3(4166.673f, 6975.026f, 45.87664f)), owning_building_guid = 48) LocalObject(3561, Door.Constructor(Vector3(4166.673f, 6982.315f, 45.87664f)), owning_building_guid = 48) - LocalObject(1259, IFFLock.Constructor(Vector3(4162.77f, 6989.822f, 55.50464f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 1195) - LocalObject(1434, IFFLock.Constructor(Vector3(4129.06f, 7028.428f, 45.35864f), Vector3(0, 0, 270)), owning_building_guid = 48, door_guid = 998) - LocalObject(1435, IFFLock.Constructor(Vector3(4138.813f, 7031.572f, 45.35864f), Vector3(0, 0, 90)), owning_building_guid = 48, door_guid = 999) - LocalObject(1436, IFFLock.Constructor(Vector3(4146.814f, 6984.043f, 65.47464f), Vector3(0, 0, 90)), owning_building_guid = 48, door_guid = 605) - LocalObject(1437, IFFLock.Constructor(Vector3(4163.954f, 6965.958f, 65.47464f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 606) - LocalObject(1438, IFFLock.Constructor(Vector3(4172.428f, 6986.81f, 45.35864f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 1013) - LocalObject(1439, IFFLock.Constructor(Vector3(4175.572f, 6961.19f, 45.35864f), Vector3(0, 0, 180)), owning_building_guid = 48, door_guid = 1012) - LocalObject(1440, IFFLock.Constructor(Vector3(4185.19f, 6964.428f, 37.85864f), Vector3(0, 0, 270)), owning_building_guid = 48, door_guid = 1014) - LocalObject(1441, IFFLock.Constructor(Vector3(4194.814f, 6872.042f, 55.47464f), Vector3(0, 0, 90)), owning_building_guid = 48, door_guid = 609) + LocalObject( + 1259, + IFFLock.Constructor(Vector3(4162.77f, 6989.822f, 55.50464f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 1195 + ) + LocalObject( + 1434, + IFFLock.Constructor(Vector3(4129.06f, 7028.428f, 45.35864f), Vector3(0, 0, 270)), + owning_building_guid = 48, + door_guid = 998 + ) + LocalObject( + 1435, + IFFLock.Constructor(Vector3(4138.813f, 7031.572f, 45.35864f), Vector3(0, 0, 90)), + owning_building_guid = 48, + door_guid = 999 + ) + LocalObject( + 1436, + IFFLock.Constructor(Vector3(4146.814f, 6984.043f, 65.47464f), Vector3(0, 0, 90)), + owning_building_guid = 48, + door_guid = 605 + ) + LocalObject( + 1437, + IFFLock.Constructor(Vector3(4163.954f, 6965.958f, 65.47464f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 606 + ) + LocalObject( + 1438, + IFFLock.Constructor(Vector3(4172.428f, 6986.81f, 45.35864f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 1013 + ) + LocalObject( + 1439, + IFFLock.Constructor(Vector3(4175.572f, 6961.19f, 45.35864f), Vector3(0, 0, 180)), + owning_building_guid = 48, + door_guid = 1012 + ) + LocalObject( + 1440, + IFFLock.Constructor(Vector3(4185.19f, 6964.428f, 37.85864f), Vector3(0, 0, 270)), + owning_building_guid = 48, + door_guid = 1014 + ) + LocalObject( + 1441, + IFFLock.Constructor(Vector3(4194.814f, 6872.042f, 55.47464f), Vector3(0, 0, 90)), + owning_building_guid = 48, + door_guid = 609 + ) LocalObject(1855, Locker.Constructor(Vector3(4177.563f, 6964.141f, 44.28365f)), owning_building_guid = 48) LocalObject(1856, Locker.Constructor(Vector3(4178.727f, 6964.141f, 44.28365f)), owning_building_guid = 48) LocalObject(1857, Locker.Constructor(Vector3(4179.874f, 6964.141f, 44.28365f)), owning_building_guid = 48) @@ -1540,76 +4313,309 @@ object Map03 { // Cyssor LocalObject(2123, Locker.Constructor(Vector3(4180.26f, 6956.46f, 53.79364f)), owning_building_guid = 48) LocalObject(2124, Locker.Constructor(Vector3(4180.26f, 6958.982f, 54.02264f)), owning_building_guid = 48) LocalObject(2125, Locker.Constructor(Vector3(4180.26f, 6960.016f, 54.02264f)), owning_building_guid = 48) - LocalObject(310, Terminal.Constructor(Vector3(4164.276f, 7010.25f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(311, Terminal.Constructor(Vector3(4164.276f, 7017.575f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(312, Terminal.Constructor(Vector3(4165.724f, 7008.802f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(313, Terminal.Constructor(Vector3(4165.724f, 7019.023f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(314, Terminal.Constructor(Vector3(4178.424f, 7008.802f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(315, Terminal.Constructor(Vector3(4178.424f, 7019.023f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(316, Terminal.Constructor(Vector3(4179.872f, 7010.25f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(317, Terminal.Constructor(Vector3(4179.872f, 7017.575f, 44.01264f), cert_terminal), owning_building_guid = 48) - LocalObject(2455, Terminal.Constructor(Vector3(4151.972f, 6971.526f, 55.31764f), order_terminal), owning_building_guid = 48) - LocalObject(2456, Terminal.Constructor(Vector3(4180.654f, 6969.408f, 45.61264f), order_terminal), owning_building_guid = 48) - LocalObject(2457, Terminal.Constructor(Vector3(4180.654f, 6973.139f, 45.61264f), order_terminal), owning_building_guid = 48) - LocalObject(2458, Terminal.Constructor(Vector3(4180.654f, 6976.928f, 45.61264f), order_terminal), owning_building_guid = 48) - LocalObject(3435, Terminal.Constructor(Vector3(4122f, 6961.407f, 45.63564f), spawn_terminal), owning_building_guid = 48) - LocalObject(3436, Terminal.Constructor(Vector3(4145.91f, 6905.41f, 48.13564f), spawn_terminal), owning_building_guid = 48) - LocalObject(3437, Terminal.Constructor(Vector3(4161.407f, 7026f, 45.63564f), spawn_terminal), owning_building_guid = 48) - LocalObject(3438, Terminal.Constructor(Vector3(4163.905f, 6948.359f, 55.60164f), spawn_terminal), owning_building_guid = 48) - LocalObject(3439, Terminal.Constructor(Vector3(4166.971f, 6965.243f, 46.15664f), spawn_terminal), owning_building_guid = 48) - LocalObject(3440, Terminal.Constructor(Vector3(4166.967f, 6972.535f, 46.15664f), spawn_terminal), owning_building_guid = 48) - LocalObject(3441, Terminal.Constructor(Vector3(4166.97f, 6979.823f, 46.15664f), spawn_terminal), owning_building_guid = 48) - LocalObject(3724, Terminal.Constructor(Vector3(4199.628f, 6898.814f, 56.32764f), vehicle_terminal_combined), owning_building_guid = 48) - LocalObject(2314, VehicleSpawnPad.Constructor(Vector3(4185.989f, 6898.724f, 52.16964f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 48, terminal_guid = 3724) + LocalObject( + 310, + Terminal.Constructor(Vector3(4164.276f, 7010.25f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 311, + Terminal.Constructor(Vector3(4164.276f, 7017.575f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 312, + Terminal.Constructor(Vector3(4165.724f, 7008.802f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 313, + Terminal.Constructor(Vector3(4165.724f, 7019.023f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 314, + Terminal.Constructor(Vector3(4178.424f, 7008.802f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 315, + Terminal.Constructor(Vector3(4178.424f, 7019.023f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 316, + Terminal.Constructor(Vector3(4179.872f, 7010.25f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 317, + Terminal.Constructor(Vector3(4179.872f, 7017.575f, 44.01264f), cert_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2455, + Terminal.Constructor(Vector3(4151.972f, 6971.526f, 55.31764f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2456, + Terminal.Constructor(Vector3(4180.654f, 6969.408f, 45.61264f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2457, + Terminal.Constructor(Vector3(4180.654f, 6973.139f, 45.61264f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2458, + Terminal.Constructor(Vector3(4180.654f, 6976.928f, 45.61264f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3435, + Terminal.Constructor(Vector3(4122f, 6961.407f, 45.63564f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3436, + Terminal.Constructor(Vector3(4145.91f, 6905.41f, 48.13564f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3437, + Terminal.Constructor(Vector3(4161.407f, 7026f, 45.63564f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3438, + Terminal.Constructor(Vector3(4163.905f, 6948.359f, 55.60164f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3439, + Terminal.Constructor(Vector3(4166.971f, 6965.243f, 46.15664f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3440, + Terminal.Constructor(Vector3(4166.967f, 6972.535f, 46.15664f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3441, + Terminal.Constructor(Vector3(4166.97f, 6979.823f, 46.15664f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3724, + Terminal.Constructor(Vector3(4199.628f, 6898.814f, 56.32764f), vehicle_terminal_combined), + owning_building_guid = 48 + ) + LocalObject( + 2314, + VehicleSpawnPad.Constructor(Vector3(4185.989f, 6898.724f, 52.16964f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 48, + terminal_guid = 3724 + ) LocalObject(3224, ResourceSilo.Constructor(Vector3(4101.733f, 7012.852f, 61.03964f)), owning_building_guid = 48) - LocalObject(3295, SpawnTube.Constructor(Vector3(4166.233f, 6966.683f, 44.02264f), Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(3296, SpawnTube.Constructor(Vector3(4166.233f, 6973.974f, 44.02264f), Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(3297, SpawnTube.Constructor(Vector3(4166.233f, 6981.262f, 44.02264f), Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(205, ProximityTerminal.Constructor(Vector3(4163.983f, 6954.892f, 53.83265f), adv_med_terminal), owning_building_guid = 48) - LocalObject(2341, ProximityTerminal.Constructor(Vector3(4189.642f, 6965.952f, 44.02264f), medical_terminal), owning_building_guid = 48) - LocalObject(2717, ProximityTerminal.Constructor(Vector3(4143.883f, 6900.061f, 64.31564f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2718, Terminal.Constructor(Vector3(4143.883f, 6900.061f, 64.31564f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2720, ProximityTerminal.Constructor(Vector3(4147.101f, 7015.651f, 62.36464f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2721, Terminal.Constructor(Vector3(4147.101f, 7015.651f, 62.36464f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2723, ProximityTerminal.Constructor(Vector3(4160.198f, 6892.777f, 62.37465f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2724, Terminal.Constructor(Vector3(4160.198f, 6892.777f, 62.37465f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2726, ProximityTerminal.Constructor(Vector3(4163.323f, 7007.253f, 64.35464f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2727, Terminal.Constructor(Vector3(4163.323f, 7007.253f, 64.35464f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(3144, ProximityTerminal.Constructor(Vector3(4126.524f, 6877.154f, 53.77264f), repair_silo), owning_building_guid = 48) - LocalObject(3145, Terminal.Constructor(Vector3(4126.524f, 6877.154f, 53.77264f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(3148, ProximityTerminal.Constructor(Vector3(4214.53f, 6977.861f, 53.77264f), repair_silo), owning_building_guid = 48) - LocalObject(3149, Terminal.Constructor(Vector3(4214.53f, 6977.861f, 53.77264f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(2233, FacilityTurret.Constructor(Vector3(4090.392f, 7042.472f, 62.42464f), manned_turret), owning_building_guid = 48) + LocalObject( + 3295, + SpawnTube.Constructor(Vector3(4166.233f, 6966.683f, 44.02264f), Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 3296, + SpawnTube.Constructor(Vector3(4166.233f, 6973.974f, 44.02264f), Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 3297, + SpawnTube.Constructor(Vector3(4166.233f, 6981.262f, 44.02264f), Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 205, + ProximityTerminal.Constructor(Vector3(4163.983f, 6954.892f, 53.83265f), adv_med_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2341, + ProximityTerminal.Constructor(Vector3(4189.642f, 6965.952f, 44.02264f), medical_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2717, + ProximityTerminal.Constructor(Vector3(4143.883f, 6900.061f, 64.31564f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2718, + Terminal.Constructor(Vector3(4143.883f, 6900.061f, 64.31564f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2720, + ProximityTerminal.Constructor(Vector3(4147.101f, 7015.651f, 62.36464f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2721, + Terminal.Constructor(Vector3(4147.101f, 7015.651f, 62.36464f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2723, + ProximityTerminal.Constructor(Vector3(4160.198f, 6892.777f, 62.37465f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2724, + Terminal.Constructor(Vector3(4160.198f, 6892.777f, 62.37465f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2726, + ProximityTerminal.Constructor(Vector3(4163.323f, 7007.253f, 64.35464f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2727, + Terminal.Constructor(Vector3(4163.323f, 7007.253f, 64.35464f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3144, + ProximityTerminal.Constructor(Vector3(4126.524f, 6877.154f, 53.77264f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 3145, + Terminal.Constructor(Vector3(4126.524f, 6877.154f, 53.77264f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3148, + ProximityTerminal.Constructor(Vector3(4214.53f, 6977.861f, 53.77264f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 3149, + Terminal.Constructor(Vector3(4214.53f, 6977.861f, 53.77264f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2233, + FacilityTurret.Constructor(Vector3(4090.392f, 7042.472f, 62.42464f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(2233, 5060) - LocalObject(2234, FacilityTurret.Constructor(Vector3(4090.4f, 6865.379f, 62.42464f), manned_turret), owning_building_guid = 48) + LocalObject( + 2234, + FacilityTurret.Constructor(Vector3(4090.4f, 6865.379f, 62.42464f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(2234, 5061) - LocalObject(2235, FacilityTurret.Constructor(Vector3(4183.665f, 7043.605f, 62.42464f), manned_turret), owning_building_guid = 48) + LocalObject( + 2235, + FacilityTurret.Constructor(Vector3(4183.665f, 7043.605f, 62.42464f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(2235, 5062) - LocalObject(2236, FacilityTurret.Constructor(Vector3(4225.626f, 6865.371f, 62.42464f), manned_turret), owning_building_guid = 48) + LocalObject( + 2236, + FacilityTurret.Constructor(Vector3(4225.626f, 6865.371f, 62.42464f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(2236, 5063) - LocalObject(2237, FacilityTurret.Constructor(Vector3(4226.813f, 7000.496f, 62.42464f), manned_turret), owning_building_guid = 48) + LocalObject( + 2237, + FacilityTurret.Constructor(Vector3(4226.813f, 7000.496f, 62.42464f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(2237, 5064) - LocalObject(1228, ImplantTerminalMech.Constructor(Vector3(4172.066f, 7006.368f, 43.49965f)), owning_building_guid = 48) - LocalObject(1218, Terminal.Constructor(Vector3(4172.066f, 7006.386f, 43.49965f), implant_terminal_interface), owning_building_guid = 48) + LocalObject( + 1228, + ImplantTerminalMech.Constructor(Vector3(4172.066f, 7006.368f, 43.49965f)), + owning_building_guid = 48 + ) + LocalObject( + 1218, + Terminal.Constructor(Vector3(4172.066f, 7006.386f, 43.49965f), implant_terminal_interface), + owning_building_guid = 48 + ) TerminalToInterface(1228, 1218) - LocalObject(1229, ImplantTerminalMech.Constructor(Vector3(4172.054f, 7021.724f, 43.49965f)), owning_building_guid = 48) - LocalObject(1219, Terminal.Constructor(Vector3(4172.054f, 7021.706f, 43.49965f), implant_terminal_interface), owning_building_guid = 48) + LocalObject( + 1229, + ImplantTerminalMech.Constructor(Vector3(4172.054f, 7021.724f, 43.49965f)), + owning_building_guid = 48 + ) + LocalObject( + 1219, + Terminal.Constructor(Vector3(4172.054f, 7021.706f, 43.49965f), implant_terminal_interface), + owning_building_guid = 48 + ) TerminalToInterface(1229, 1219) - LocalObject(2887, Painbox.Constructor(Vector3(4167.593f, 6942.334f, 68.05145f), painbox), owning_building_guid = 48) - LocalObject(2904, Painbox.Constructor(Vector3(4176.753f, 6969.712f, 48.09254f), painbox_continuous), owning_building_guid = 48) - LocalObject(2921, Painbox.Constructor(Vector3(4166.182f, 6956.798f, 68.25655f), painbox_door_radius), owning_building_guid = 48) - LocalObject(2954, Painbox.Constructor(Vector3(4172.54f, 6959.793f, 46.37854f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2955, Painbox.Constructor(Vector3(4174.516f, 6987.831f, 45.73684f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2956, Painbox.Constructor(Vector3(4189.882f, 6981.05f, 47.56355f), painbox_door_radius_continuous), owning_building_guid = 48) + LocalObject( + 2887, + Painbox.Constructor(Vector3(4167.593f, 6942.334f, 68.05145f), painbox), + owning_building_guid = 48 + ) + LocalObject( + 2904, + Painbox.Constructor(Vector3(4176.753f, 6969.712f, 48.09254f), painbox_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2921, + Painbox.Constructor(Vector3(4166.182f, 6956.798f, 68.25655f), painbox_door_radius), + owning_building_guid = 48 + ) + LocalObject( + 2954, + Painbox.Constructor(Vector3(4172.54f, 6959.793f, 46.37854f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2955, + Painbox.Constructor(Vector3(4174.516f, 6987.831f, 45.73684f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2956, + Painbox.Constructor(Vector3(4189.882f, 6981.05f, 47.56355f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) LocalObject(389, Generator.Constructor(Vector3(4166.025f, 6938.445f, 62.72865f)), owning_building_guid = 48) - LocalObject(372, Terminal.Constructor(Vector3(4165.978f, 6946.637f, 64.02264f), gen_control), owning_building_guid = 48) + LocalObject( + 372, + Terminal.Constructor(Vector3(4165.978f, 6946.637f, 64.02264f), gen_control), + owning_building_guid = 48 + ) } Building8() def Building8(): Unit = { // Name: Itan Type: cryo_facility GUID: 51, MapID: 8 - LocalBuilding("Itan", 51, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5132f, 3334f, 48.0575f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(288, CaptureTerminal.Constructor(Vector3(5103.911f, 3393.266f, 38.0575f), capture_terminal), owning_building_guid = 51) + LocalBuilding( + "Itan", + 51, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5132f, 3334f, 48.0575f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 288, + CaptureTerminal.Constructor(Vector3(5103.911f, 3393.266f, 38.0575f), capture_terminal), + owning_building_guid = 51 + ) LocalObject(651, Door.Constructor(Vector3(5073.023f, 3338.5f, 49.60849f)), owning_building_guid = 51) LocalObject(652, Door.Constructor(Vector3(5073.023f, 3356.693f, 57.57249f)), owning_building_guid = 51) LocalObject(654, Door.Constructor(Vector3(5089.674f, 3401.803f, 49.60849f)), owning_building_guid = 51) @@ -1650,15 +4656,60 @@ object Map03 { // Cyssor LocalObject(3572, Door.Constructor(Vector3(5136.673f, 3339.733f, 39.9115f)), owning_building_guid = 51) LocalObject(3573, Door.Constructor(Vector3(5136.673f, 3347.026f, 39.9115f)), owning_building_guid = 51) LocalObject(3574, Door.Constructor(Vector3(5136.673f, 3354.315f, 39.9115f)), owning_building_guid = 51) - LocalObject(1262, IFFLock.Constructor(Vector3(5132.77f, 3361.822f, 49.53949f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 1198) - LocalObject(1474, IFFLock.Constructor(Vector3(5099.06f, 3400.428f, 39.39349f), Vector3(0, 0, 270)), owning_building_guid = 51, door_guid = 1061) - LocalObject(1475, IFFLock.Constructor(Vector3(5108.813f, 3403.572f, 39.39349f), Vector3(0, 0, 90)), owning_building_guid = 51, door_guid = 1062) - LocalObject(1476, IFFLock.Constructor(Vector3(5116.814f, 3356.043f, 59.50949f), Vector3(0, 0, 90)), owning_building_guid = 51, door_guid = 658) - LocalObject(1477, IFFLock.Constructor(Vector3(5133.954f, 3337.958f, 59.50949f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 662) - LocalObject(1478, IFFLock.Constructor(Vector3(5142.428f, 3358.81f, 39.39349f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 1076) - LocalObject(1479, IFFLock.Constructor(Vector3(5145.572f, 3333.19f, 39.39349f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 1075) - LocalObject(1480, IFFLock.Constructor(Vector3(5155.19f, 3336.428f, 31.8935f), Vector3(0, 0, 270)), owning_building_guid = 51, door_guid = 1077) - LocalObject(1487, IFFLock.Constructor(Vector3(5164.814f, 3244.042f, 49.50949f), Vector3(0, 0, 90)), owning_building_guid = 51, door_guid = 674) + LocalObject( + 1262, + IFFLock.Constructor(Vector3(5132.77f, 3361.822f, 49.53949f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 1198 + ) + LocalObject( + 1474, + IFFLock.Constructor(Vector3(5099.06f, 3400.428f, 39.39349f), Vector3(0, 0, 270)), + owning_building_guid = 51, + door_guid = 1061 + ) + LocalObject( + 1475, + IFFLock.Constructor(Vector3(5108.813f, 3403.572f, 39.39349f), Vector3(0, 0, 90)), + owning_building_guid = 51, + door_guid = 1062 + ) + LocalObject( + 1476, + IFFLock.Constructor(Vector3(5116.814f, 3356.043f, 59.50949f), Vector3(0, 0, 90)), + owning_building_guid = 51, + door_guid = 658 + ) + LocalObject( + 1477, + IFFLock.Constructor(Vector3(5133.954f, 3337.958f, 59.50949f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 662 + ) + LocalObject( + 1478, + IFFLock.Constructor(Vector3(5142.428f, 3358.81f, 39.39349f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 1076 + ) + LocalObject( + 1479, + IFFLock.Constructor(Vector3(5145.572f, 3333.19f, 39.39349f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 1075 + ) + LocalObject( + 1480, + IFFLock.Constructor(Vector3(5155.19f, 3336.428f, 31.8935f), Vector3(0, 0, 270)), + owning_building_guid = 51, + door_guid = 1077 + ) + LocalObject( + 1487, + IFFLock.Constructor(Vector3(5164.814f, 3244.042f, 49.50949f), Vector3(0, 0, 90)), + owning_building_guid = 51, + door_guid = 674 + ) LocalObject(1916, Locker.Constructor(Vector3(5147.563f, 3336.141f, 38.3185f)), owning_building_guid = 51) LocalObject(1917, Locker.Constructor(Vector3(5148.727f, 3336.141f, 38.3185f)), owning_building_guid = 51) LocalObject(1918, Locker.Constructor(Vector3(5149.874f, 3336.141f, 38.3185f)), owning_building_guid = 51) @@ -1688,76 +4739,309 @@ object Map03 { // Cyssor LocalObject(2131, Locker.Constructor(Vector3(5150.26f, 3328.46f, 47.8285f)), owning_building_guid = 51) LocalObject(2132, Locker.Constructor(Vector3(5150.26f, 3330.982f, 48.0575f)), owning_building_guid = 51) LocalObject(2133, Locker.Constructor(Vector3(5150.26f, 3332.016f, 48.0575f)), owning_building_guid = 51) - LocalObject(318, Terminal.Constructor(Vector3(5134.276f, 3382.25f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(319, Terminal.Constructor(Vector3(5134.276f, 3389.575f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(320, Terminal.Constructor(Vector3(5135.724f, 3380.802f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(321, Terminal.Constructor(Vector3(5135.724f, 3391.023f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(322, Terminal.Constructor(Vector3(5148.424f, 3380.802f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(323, Terminal.Constructor(Vector3(5148.424f, 3391.023f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(324, Terminal.Constructor(Vector3(5149.872f, 3382.25f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(325, Terminal.Constructor(Vector3(5149.872f, 3389.575f, 38.04749f), cert_terminal), owning_building_guid = 51) - LocalObject(2477, Terminal.Constructor(Vector3(5121.972f, 3343.526f, 49.35249f), order_terminal), owning_building_guid = 51) - LocalObject(2478, Terminal.Constructor(Vector3(5150.654f, 3341.408f, 39.6475f), order_terminal), owning_building_guid = 51) - LocalObject(2479, Terminal.Constructor(Vector3(5150.654f, 3345.139f, 39.6475f), order_terminal), owning_building_guid = 51) - LocalObject(2480, Terminal.Constructor(Vector3(5150.654f, 3348.928f, 39.6475f), order_terminal), owning_building_guid = 51) - LocalObject(3457, Terminal.Constructor(Vector3(5092f, 3333.407f, 39.67049f), spawn_terminal), owning_building_guid = 51) - LocalObject(3459, Terminal.Constructor(Vector3(5115.91f, 3277.41f, 42.17049f), spawn_terminal), owning_building_guid = 51) - LocalObject(3460, Terminal.Constructor(Vector3(5131.407f, 3398f, 39.67049f), spawn_terminal), owning_building_guid = 51) - LocalObject(3461, Terminal.Constructor(Vector3(5133.905f, 3320.359f, 49.63649f), spawn_terminal), owning_building_guid = 51) - LocalObject(3462, Terminal.Constructor(Vector3(5136.971f, 3337.243f, 40.19149f), spawn_terminal), owning_building_guid = 51) - LocalObject(3463, Terminal.Constructor(Vector3(5136.967f, 3344.535f, 40.19149f), spawn_terminal), owning_building_guid = 51) - LocalObject(3464, Terminal.Constructor(Vector3(5136.97f, 3351.823f, 40.19149f), spawn_terminal), owning_building_guid = 51) - LocalObject(3727, Terminal.Constructor(Vector3(5169.628f, 3270.814f, 50.3625f), vehicle_terminal_combined), owning_building_guid = 51) - LocalObject(2319, VehicleSpawnPad.Constructor(Vector3(5155.989f, 3270.724f, 46.20449f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 51, terminal_guid = 3727) + LocalObject( + 318, + Terminal.Constructor(Vector3(5134.276f, 3382.25f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 319, + Terminal.Constructor(Vector3(5134.276f, 3389.575f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 320, + Terminal.Constructor(Vector3(5135.724f, 3380.802f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 321, + Terminal.Constructor(Vector3(5135.724f, 3391.023f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 322, + Terminal.Constructor(Vector3(5148.424f, 3380.802f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 323, + Terminal.Constructor(Vector3(5148.424f, 3391.023f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 324, + Terminal.Constructor(Vector3(5149.872f, 3382.25f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 325, + Terminal.Constructor(Vector3(5149.872f, 3389.575f, 38.04749f), cert_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2477, + Terminal.Constructor(Vector3(5121.972f, 3343.526f, 49.35249f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2478, + Terminal.Constructor(Vector3(5150.654f, 3341.408f, 39.6475f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2479, + Terminal.Constructor(Vector3(5150.654f, 3345.139f, 39.6475f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2480, + Terminal.Constructor(Vector3(5150.654f, 3348.928f, 39.6475f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3457, + Terminal.Constructor(Vector3(5092f, 3333.407f, 39.67049f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3459, + Terminal.Constructor(Vector3(5115.91f, 3277.41f, 42.17049f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3460, + Terminal.Constructor(Vector3(5131.407f, 3398f, 39.67049f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3461, + Terminal.Constructor(Vector3(5133.905f, 3320.359f, 49.63649f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3462, + Terminal.Constructor(Vector3(5136.971f, 3337.243f, 40.19149f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3463, + Terminal.Constructor(Vector3(5136.967f, 3344.535f, 40.19149f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3464, + Terminal.Constructor(Vector3(5136.97f, 3351.823f, 40.19149f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3727, + Terminal.Constructor(Vector3(5169.628f, 3270.814f, 50.3625f), vehicle_terminal_combined), + owning_building_guid = 51 + ) + LocalObject( + 2319, + VehicleSpawnPad.Constructor(Vector3(5155.989f, 3270.724f, 46.20449f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 51, + terminal_guid = 3727 + ) LocalObject(3226, ResourceSilo.Constructor(Vector3(5071.733f, 3384.852f, 55.07449f)), owning_building_guid = 51) - LocalObject(3308, SpawnTube.Constructor(Vector3(5136.233f, 3338.683f, 38.0575f), Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(3309, SpawnTube.Constructor(Vector3(5136.233f, 3345.974f, 38.0575f), Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(3310, SpawnTube.Constructor(Vector3(5136.233f, 3353.262f, 38.0575f), Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(206, ProximityTerminal.Constructor(Vector3(5133.983f, 3326.892f, 47.8675f), adv_med_terminal), owning_building_guid = 51) - LocalObject(2346, ProximityTerminal.Constructor(Vector3(5159.642f, 3337.952f, 38.0575f), medical_terminal), owning_building_guid = 51) - LocalObject(2759, ProximityTerminal.Constructor(Vector3(5113.883f, 3272.061f, 58.35049f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2760, Terminal.Constructor(Vector3(5113.883f, 3272.061f, 58.35049f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2762, ProximityTerminal.Constructor(Vector3(5117.101f, 3387.651f, 56.39949f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2763, Terminal.Constructor(Vector3(5117.101f, 3387.651f, 56.39949f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2765, ProximityTerminal.Constructor(Vector3(5130.198f, 3264.777f, 56.4095f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2766, Terminal.Constructor(Vector3(5130.198f, 3264.777f, 56.4095f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2768, ProximityTerminal.Constructor(Vector3(5133.323f, 3379.253f, 58.3895f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2769, Terminal.Constructor(Vector3(5133.323f, 3379.253f, 58.3895f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(3164, ProximityTerminal.Constructor(Vector3(5096.524f, 3249.154f, 47.8075f), repair_silo), owning_building_guid = 51) - LocalObject(3165, Terminal.Constructor(Vector3(5096.524f, 3249.154f, 47.8075f), ground_rearm_terminal), owning_building_guid = 51) - LocalObject(3172, ProximityTerminal.Constructor(Vector3(5184.53f, 3349.861f, 47.8075f), repair_silo), owning_building_guid = 51) - LocalObject(3173, Terminal.Constructor(Vector3(5184.53f, 3349.861f, 47.8075f), ground_rearm_terminal), owning_building_guid = 51) - LocalObject(2250, FacilityTurret.Constructor(Vector3(5060.392f, 3414.472f, 56.4595f), manned_turret), owning_building_guid = 51) + LocalObject( + 3308, + SpawnTube.Constructor(Vector3(5136.233f, 3338.683f, 38.0575f), Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 3309, + SpawnTube.Constructor(Vector3(5136.233f, 3345.974f, 38.0575f), Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 3310, + SpawnTube.Constructor(Vector3(5136.233f, 3353.262f, 38.0575f), Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 206, + ProximityTerminal.Constructor(Vector3(5133.983f, 3326.892f, 47.8675f), adv_med_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2346, + ProximityTerminal.Constructor(Vector3(5159.642f, 3337.952f, 38.0575f), medical_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2759, + ProximityTerminal.Constructor(Vector3(5113.883f, 3272.061f, 58.35049f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2760, + Terminal.Constructor(Vector3(5113.883f, 3272.061f, 58.35049f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2762, + ProximityTerminal.Constructor(Vector3(5117.101f, 3387.651f, 56.39949f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2763, + Terminal.Constructor(Vector3(5117.101f, 3387.651f, 56.39949f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2765, + ProximityTerminal.Constructor(Vector3(5130.198f, 3264.777f, 56.4095f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2766, + Terminal.Constructor(Vector3(5130.198f, 3264.777f, 56.4095f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2768, + ProximityTerminal.Constructor(Vector3(5133.323f, 3379.253f, 58.3895f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2769, + Terminal.Constructor(Vector3(5133.323f, 3379.253f, 58.3895f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3164, + ProximityTerminal.Constructor(Vector3(5096.524f, 3249.154f, 47.8075f), repair_silo), + owning_building_guid = 51 + ) + LocalObject( + 3165, + Terminal.Constructor(Vector3(5096.524f, 3249.154f, 47.8075f), ground_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3172, + ProximityTerminal.Constructor(Vector3(5184.53f, 3349.861f, 47.8075f), repair_silo), + owning_building_guid = 51 + ) + LocalObject( + 3173, + Terminal.Constructor(Vector3(5184.53f, 3349.861f, 47.8075f), ground_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2250, + FacilityTurret.Constructor(Vector3(5060.392f, 3414.472f, 56.4595f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(2250, 5065) - LocalObject(2251, FacilityTurret.Constructor(Vector3(5060.4f, 3237.379f, 56.4595f), manned_turret), owning_building_guid = 51) + LocalObject( + 2251, + FacilityTurret.Constructor(Vector3(5060.4f, 3237.379f, 56.4595f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(2251, 5066) - LocalObject(2254, FacilityTurret.Constructor(Vector3(5153.665f, 3415.605f, 56.4595f), manned_turret), owning_building_guid = 51) + LocalObject( + 2254, + FacilityTurret.Constructor(Vector3(5153.665f, 3415.605f, 56.4595f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(2254, 5067) - LocalObject(2255, FacilityTurret.Constructor(Vector3(5195.626f, 3237.371f, 56.4595f), manned_turret), owning_building_guid = 51) + LocalObject( + 2255, + FacilityTurret.Constructor(Vector3(5195.626f, 3237.371f, 56.4595f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(2255, 5068) - LocalObject(2256, FacilityTurret.Constructor(Vector3(5196.813f, 3372.496f, 56.4595f), manned_turret), owning_building_guid = 51) + LocalObject( + 2256, + FacilityTurret.Constructor(Vector3(5196.813f, 3372.496f, 56.4595f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(2256, 5069) - LocalObject(1230, ImplantTerminalMech.Constructor(Vector3(5142.066f, 3378.368f, 37.5345f)), owning_building_guid = 51) - LocalObject(1220, Terminal.Constructor(Vector3(5142.066f, 3378.386f, 37.5345f), implant_terminal_interface), owning_building_guid = 51) + LocalObject( + 1230, + ImplantTerminalMech.Constructor(Vector3(5142.066f, 3378.368f, 37.5345f)), + owning_building_guid = 51 + ) + LocalObject( + 1220, + Terminal.Constructor(Vector3(5142.066f, 3378.386f, 37.5345f), implant_terminal_interface), + owning_building_guid = 51 + ) TerminalToInterface(1230, 1220) - LocalObject(1231, ImplantTerminalMech.Constructor(Vector3(5142.054f, 3393.724f, 37.5345f)), owning_building_guid = 51) - LocalObject(1221, Terminal.Constructor(Vector3(5142.054f, 3393.706f, 37.5345f), implant_terminal_interface), owning_building_guid = 51) + LocalObject( + 1231, + ImplantTerminalMech.Constructor(Vector3(5142.054f, 3393.724f, 37.5345f)), + owning_building_guid = 51 + ) + LocalObject( + 1221, + Terminal.Constructor(Vector3(5142.054f, 3393.706f, 37.5345f), implant_terminal_interface), + owning_building_guid = 51 + ) TerminalToInterface(1231, 1221) - LocalObject(2890, Painbox.Constructor(Vector3(5137.593f, 3314.334f, 62.0863f), painbox), owning_building_guid = 51) - LocalObject(2907, Painbox.Constructor(Vector3(5146.753f, 3341.712f, 42.1274f), painbox_continuous), owning_building_guid = 51) - LocalObject(2924, Painbox.Constructor(Vector3(5136.182f, 3328.798f, 62.2914f), painbox_door_radius), owning_building_guid = 51) - LocalObject(2963, Painbox.Constructor(Vector3(5142.54f, 3331.793f, 40.41339f), painbox_door_radius_continuous), owning_building_guid = 51) - LocalObject(2964, Painbox.Constructor(Vector3(5144.516f, 3359.831f, 39.77169f), painbox_door_radius_continuous), owning_building_guid = 51) - LocalObject(2965, Painbox.Constructor(Vector3(5159.882f, 3353.05f, 41.5984f), painbox_door_radius_continuous), owning_building_guid = 51) + LocalObject( + 2890, + Painbox.Constructor(Vector3(5137.593f, 3314.334f, 62.0863f), painbox), + owning_building_guid = 51 + ) + LocalObject( + 2907, + Painbox.Constructor(Vector3(5146.753f, 3341.712f, 42.1274f), painbox_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2924, + Painbox.Constructor(Vector3(5136.182f, 3328.798f, 62.2914f), painbox_door_radius), + owning_building_guid = 51 + ) + LocalObject( + 2963, + Painbox.Constructor(Vector3(5142.54f, 3331.793f, 40.41339f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2964, + Painbox.Constructor(Vector3(5144.516f, 3359.831f, 39.77169f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2965, + Painbox.Constructor(Vector3(5159.882f, 3353.05f, 41.5984f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) LocalObject(392, Generator.Constructor(Vector3(5136.025f, 3310.445f, 56.7635f)), owning_building_guid = 51) - LocalObject(375, Terminal.Constructor(Vector3(5135.978f, 3318.637f, 58.0575f), gen_control), owning_building_guid = 51) + LocalObject( + 375, + Terminal.Constructor(Vector3(5135.978f, 3318.637f, 58.0575f), gen_control), + owning_building_guid = 51 + ) } Building16() def Building16(): Unit = { // Name: Shango Type: cryo_facility GUID: 54, MapID: 16 - LocalBuilding("Shango", 54, 16, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6774f, 2288f, 62.96152f), Vector3(0f, 0f, 331f), cryo_facility))) - LocalObject(291, CaptureTerminal.Constructor(Vector3(6778.166f, 2353.453f, 52.96152f), capture_terminal), owning_building_guid = 54) + LocalBuilding( + "Shango", + 54, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6774f, 2288f, 62.96152f), + Vector3(0f, 0f, 331f), + cryo_facility + ) + ) + ) + LocalObject( + 291, + CaptureTerminal.Constructor(Vector3(6778.166f, 2353.453f, 52.96152f), capture_terminal), + owning_building_guid = 54 + ) LocalObject(751, Door.Constructor(Vector3(6724.599f, 2320.528f, 64.51252f)), owning_building_guid = 54) LocalObject(752, Door.Constructor(Vector3(6733.419f, 2336.44f, 72.47652f)), owning_building_guid = 54) LocalObject(753, Door.Constructor(Vector3(6738.438f, 2212.897f, 72.47652f)), owning_building_guid = 54) @@ -1798,15 +5082,60 @@ object Map03 { // Cyssor LocalObject(3599, Door.Constructor(Vector3(6780.867f, 2290.749f, 54.81552f)), owning_building_guid = 54) LocalObject(3600, Door.Constructor(Vector3(6784.402f, 2297.127f, 54.81552f)), owning_building_guid = 54) LocalObject(3601, Door.Constructor(Vector3(6787.936f, 2303.502f, 54.81552f)), owning_building_guid = 54) - LocalObject(1265, IFFLock.Constructor(Vector3(6788.162f, 2311.96f, 64.44352f), Vector3(0, 0, 29)), owning_building_guid = 54, door_guid = 1201) - LocalObject(1546, IFFLock.Constructor(Vector3(6759.087f, 2193.412f, 64.41352f), Vector3(0, 0, 119)), owning_building_guid = 54, door_guid = 755) - LocalObject(1547, IFFLock.Constructor(Vector3(6771.405f, 2314.642f, 74.41351f), Vector3(0, 0, 119)), owning_building_guid = 54, door_guid = 756) - LocalObject(1548, IFFLock.Constructor(Vector3(6777.395f, 2362.069f, 54.29752f), Vector3(0, 0, 299)), owning_building_guid = 54, door_guid = 1137) - LocalObject(1549, IFFLock.Constructor(Vector3(6777.628f, 2290.514f, 74.41351f), Vector3(0, 0, 29)), owning_building_guid = 54, door_guid = 758) - LocalObject(1550, IFFLock.Constructor(Vector3(6785.478f, 2280.712f, 54.29752f), Vector3(0, 0, 209)), owning_building_guid = 54, door_guid = 1139) - LocalObject(1551, IFFLock.Constructor(Vector3(6787.449f, 2360.09f, 54.29752f), Vector3(0, 0, 119)), owning_building_guid = 54, door_guid = 1140) - LocalObject(1552, IFFLock.Constructor(Vector3(6795.148f, 2304.644f, 54.29752f), Vector3(0, 0, 29)), owning_building_guid = 54, door_guid = 1142) - LocalObject(1553, IFFLock.Constructor(Vector3(6795.459f, 2278.881f, 46.79752f), Vector3(0, 0, 299)), owning_building_guid = 54, door_guid = 1143) + LocalObject( + 1265, + IFFLock.Constructor(Vector3(6788.162f, 2311.96f, 64.44352f), Vector3(0, 0, 29)), + owning_building_guid = 54, + door_guid = 1201 + ) + LocalObject( + 1546, + IFFLock.Constructor(Vector3(6759.087f, 2193.412f, 64.41352f), Vector3(0, 0, 119)), + owning_building_guid = 54, + door_guid = 755 + ) + LocalObject( + 1547, + IFFLock.Constructor(Vector3(6771.405f, 2314.642f, 74.41351f), Vector3(0, 0, 119)), + owning_building_guid = 54, + door_guid = 756 + ) + LocalObject( + 1548, + IFFLock.Constructor(Vector3(6777.395f, 2362.069f, 54.29752f), Vector3(0, 0, 299)), + owning_building_guid = 54, + door_guid = 1137 + ) + LocalObject( + 1549, + IFFLock.Constructor(Vector3(6777.628f, 2290.514f, 74.41351f), Vector3(0, 0, 29)), + owning_building_guid = 54, + door_guid = 758 + ) + LocalObject( + 1550, + IFFLock.Constructor(Vector3(6785.478f, 2280.712f, 54.29752f), Vector3(0, 0, 209)), + owning_building_guid = 54, + door_guid = 1139 + ) + LocalObject( + 1551, + IFFLock.Constructor(Vector3(6787.449f, 2360.09f, 54.29752f), Vector3(0, 0, 119)), + owning_building_guid = 54, + door_guid = 1140 + ) + LocalObject( + 1552, + IFFLock.Constructor(Vector3(6795.148f, 2304.644f, 54.29752f), Vector3(0, 0, 29)), + owning_building_guid = 54, + door_guid = 1142 + ) + LocalObject( + 1553, + IFFLock.Constructor(Vector3(6795.459f, 2278.881f, 46.79752f), Vector3(0, 0, 299)), + owning_building_guid = 54, + door_guid = 1143 + ) LocalObject(2033, Locker.Constructor(Vector3(6788.65f, 2282.327f, 53.22252f)), owning_building_guid = 54) LocalObject(2034, Locker.Constructor(Vector3(6789.668f, 2281.763f, 53.22252f)), owning_building_guid = 54) LocalObject(2035, Locker.Constructor(Vector3(6790.671f, 2281.207f, 53.22252f)), owning_building_guid = 54) @@ -1836,88 +5165,326 @@ object Map03 { // Cyssor LocalObject(2139, Locker.Constructor(Vector3(6787.285f, 2274.302f, 62.73252f)), owning_building_guid = 54) LocalObject(2140, Locker.Constructor(Vector3(6788.507f, 2276.508f, 62.96152f)), owning_building_guid = 54) LocalObject(2141, Locker.Constructor(Vector3(6789.009f, 2277.412f, 62.96152f)), owning_building_guid = 54) - LocalObject(326, Terminal.Constructor(Vector3(6799.383f, 2329.097f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(327, Terminal.Constructor(Vector3(6799.947f, 2327.128f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(328, Terminal.Constructor(Vector3(6802.934f, 2335.504f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(329, Terminal.Constructor(Vector3(6804.902f, 2336.068f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(330, Terminal.Constructor(Vector3(6811.055f, 2320.971f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(331, Terminal.Constructor(Vector3(6813.023f, 2321.536f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(332, Terminal.Constructor(Vector3(6816.01f, 2329.911f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(333, Terminal.Constructor(Vector3(6816.575f, 2327.942f, 52.95152f), cert_terminal), owning_building_guid = 54) - LocalObject(2520, Terminal.Constructor(Vector3(6769.848f, 2301.193f, 64.25652f), order_terminal), owning_building_guid = 54) - LocalObject(2521, Terminal.Constructor(Vector3(6793.907f, 2285.436f, 54.55152f), order_terminal), owning_building_guid = 54) - LocalObject(2522, Terminal.Constructor(Vector3(6795.715f, 2288.699f, 54.55152f), order_terminal), owning_building_guid = 54) - LocalObject(2523, Terminal.Constructor(Vector3(6797.552f, 2292.013f, 54.55152f), order_terminal), owning_building_guid = 54) - LocalObject(3477, Terminal.Constructor(Vector3(6732.492f, 2246.306f, 57.07452f), spawn_terminal), owning_building_guid = 54) - LocalObject(3478, Terminal.Constructor(Vector3(6738.728f, 2306.874f, 54.57452f), spawn_terminal), owning_building_guid = 54) - LocalObject(3479, Terminal.Constructor(Vector3(6769.053f, 2275.146f, 64.54052f), spawn_terminal), owning_building_guid = 54) - LocalObject(3480, Terminal.Constructor(Vector3(6779.92f, 2288.427f, 55.09552f), spawn_terminal), owning_building_guid = 54) - LocalObject(3481, Terminal.Constructor(Vector3(6783.452f, 2294.806f, 55.09552f), spawn_terminal), owning_building_guid = 54) - LocalObject(3482, Terminal.Constructor(Vector3(6786.988f, 2301.179f, 55.09552f), spawn_terminal), owning_building_guid = 54) - LocalObject(3483, Terminal.Constructor(Vector3(6804.509f, 2344.263f, 54.57452f), spawn_terminal), owning_building_guid = 54) - LocalObject(3730, Terminal.Constructor(Vector3(6776.277f, 2214.494f, 65.26652f), vehicle_terminal_combined), owning_building_guid = 54) - LocalObject(2322, VehicleSpawnPad.Constructor(Vector3(6764.304f, 2221.027f, 61.10852f), mb_pad_creation, Vector3(0, 0, -61)), owning_building_guid = 54, terminal_guid = 3730) + LocalObject( + 326, + Terminal.Constructor(Vector3(6799.383f, 2329.097f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 327, + Terminal.Constructor(Vector3(6799.947f, 2327.128f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 328, + Terminal.Constructor(Vector3(6802.934f, 2335.504f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 329, + Terminal.Constructor(Vector3(6804.902f, 2336.068f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 330, + Terminal.Constructor(Vector3(6811.055f, 2320.971f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 331, + Terminal.Constructor(Vector3(6813.023f, 2321.536f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 332, + Terminal.Constructor(Vector3(6816.01f, 2329.911f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 333, + Terminal.Constructor(Vector3(6816.575f, 2327.942f, 52.95152f), cert_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2520, + Terminal.Constructor(Vector3(6769.848f, 2301.193f, 64.25652f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2521, + Terminal.Constructor(Vector3(6793.907f, 2285.436f, 54.55152f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2522, + Terminal.Constructor(Vector3(6795.715f, 2288.699f, 54.55152f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2523, + Terminal.Constructor(Vector3(6797.552f, 2292.013f, 54.55152f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3477, + Terminal.Constructor(Vector3(6732.492f, 2246.306f, 57.07452f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3478, + Terminal.Constructor(Vector3(6738.728f, 2306.874f, 54.57452f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3479, + Terminal.Constructor(Vector3(6769.053f, 2275.146f, 64.54052f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3480, + Terminal.Constructor(Vector3(6779.92f, 2288.427f, 55.09552f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3481, + Terminal.Constructor(Vector3(6783.452f, 2294.806f, 55.09552f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3482, + Terminal.Constructor(Vector3(6786.988f, 2301.179f, 55.09552f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3483, + Terminal.Constructor(Vector3(6804.509f, 2344.263f, 54.57452f), spawn_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3730, + Terminal.Constructor(Vector3(6776.277f, 2214.494f, 65.26652f), vehicle_terminal_combined), + owning_building_guid = 54 + ) + LocalObject( + 2322, + VehicleSpawnPad.Constructor(Vector3(6764.304f, 2221.027f, 61.10852f), mb_pad_creation, Vector3(0, 0, -61)), + owning_building_guid = 54, + terminal_guid = 3730 + ) LocalObject(3230, ResourceSilo.Constructor(Vector3(6745.943f, 2361.694f, 69.97852f)), owning_building_guid = 54) - LocalObject(3335, SpawnTube.Constructor(Vector3(6779.973f, 2290.044f, 52.96152f), Vector3(0, 0, 29)), owning_building_guid = 54) - LocalObject(3336, SpawnTube.Constructor(Vector3(6783.507f, 2296.42f, 52.96152f), Vector3(0, 0, 29)), owning_building_guid = 54) - LocalObject(3337, SpawnTube.Constructor(Vector3(6787.041f, 2302.795f, 52.96152f), Vector3(0, 0, 29)), owning_building_guid = 54) - LocalObject(207, ProximityTerminal.Constructor(Vector3(6772.289f, 2280.822f, 62.77152f), adv_med_terminal), owning_building_guid = 54) - LocalObject(2351, ProximityTerminal.Constructor(Vector3(6800.092f, 2278.055f, 52.96152f), medical_terminal), owning_building_guid = 54) - LocalObject(2795, ProximityTerminal.Constructor(Vector3(6728.126f, 2242.61f, 73.25452f), pad_landing_frame), owning_building_guid = 54) - LocalObject(2796, Terminal.Constructor(Vector3(6728.126f, 2242.61f, 73.25452f), air_rearm_terminal), owning_building_guid = 54) - LocalObject(2798, ProximityTerminal.Constructor(Vector3(6738.864f, 2228.33f, 71.31351f), pad_landing_frame), owning_building_guid = 54) - LocalObject(2799, Terminal.Constructor(Vector3(6738.864f, 2228.33f, 71.31351f), air_rearm_terminal), owning_building_guid = 54) - LocalObject(2801, ProximityTerminal.Constructor(Vector3(6786.979f, 2342.147f, 71.30352f), pad_landing_frame), owning_building_guid = 54) - LocalObject(2802, Terminal.Constructor(Vector3(6786.979f, 2342.147f, 71.30352f), air_rearm_terminal), owning_building_guid = 54) - LocalObject(2804, ProximityTerminal.Constructor(Vector3(6797.096f, 2326.938f, 73.29352f), pad_landing_frame), owning_building_guid = 54) - LocalObject(2805, Terminal.Constructor(Vector3(6797.096f, 2326.938f, 73.29352f), air_rearm_terminal), owning_building_guid = 54) - LocalObject(3192, ProximityTerminal.Constructor(Vector3(6701.838f, 2230.991f, 62.71152f), repair_silo), owning_building_guid = 54) - LocalObject(3193, Terminal.Constructor(Vector3(6701.838f, 2230.991f, 62.71152f), ground_rearm_terminal), owning_building_guid = 54) - LocalObject(3196, ProximityTerminal.Constructor(Vector3(6827.633f, 2276.406f, 62.71152f), repair_silo), owning_building_guid = 54) - LocalObject(3197, Terminal.Constructor(Vector3(6827.633f, 2276.406f, 62.71152f), ground_rearm_terminal), owning_building_guid = 54) - LocalObject(2283, FacilityTurret.Constructor(Vector3(6664.535f, 2238.206f, 71.36352f), manned_turret), owning_building_guid = 54) + LocalObject( + 3335, + SpawnTube.Constructor(Vector3(6779.973f, 2290.044f, 52.96152f), Vector3(0, 0, 29)), + owning_building_guid = 54 + ) + LocalObject( + 3336, + SpawnTube.Constructor(Vector3(6783.507f, 2296.42f, 52.96152f), Vector3(0, 0, 29)), + owning_building_guid = 54 + ) + LocalObject( + 3337, + SpawnTube.Constructor(Vector3(6787.041f, 2302.795f, 52.96152f), Vector3(0, 0, 29)), + owning_building_guid = 54 + ) + LocalObject( + 207, + ProximityTerminal.Constructor(Vector3(6772.289f, 2280.822f, 62.77152f), adv_med_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2351, + ProximityTerminal.Constructor(Vector3(6800.092f, 2278.055f, 52.96152f), medical_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2795, + ProximityTerminal.Constructor(Vector3(6728.126f, 2242.61f, 73.25452f), pad_landing_frame), + owning_building_guid = 54 + ) + LocalObject( + 2796, + Terminal.Constructor(Vector3(6728.126f, 2242.61f, 73.25452f), air_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2798, + ProximityTerminal.Constructor(Vector3(6738.864f, 2228.33f, 71.31351f), pad_landing_frame), + owning_building_guid = 54 + ) + LocalObject( + 2799, + Terminal.Constructor(Vector3(6738.864f, 2228.33f, 71.31351f), air_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2801, + ProximityTerminal.Constructor(Vector3(6786.979f, 2342.147f, 71.30352f), pad_landing_frame), + owning_building_guid = 54 + ) + LocalObject( + 2802, + Terminal.Constructor(Vector3(6786.979f, 2342.147f, 71.30352f), air_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2804, + ProximityTerminal.Constructor(Vector3(6797.096f, 2326.938f, 73.29352f), pad_landing_frame), + owning_building_guid = 54 + ) + LocalObject( + 2805, + Terminal.Constructor(Vector3(6797.096f, 2326.938f, 73.29352f), air_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3192, + ProximityTerminal.Constructor(Vector3(6701.838f, 2230.991f, 62.71152f), repair_silo), + owning_building_guid = 54 + ) + LocalObject( + 3193, + Terminal.Constructor(Vector3(6701.838f, 2230.991f, 62.71152f), ground_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 3196, + ProximityTerminal.Constructor(Vector3(6827.633f, 2276.406f, 62.71152f), repair_silo), + owning_building_guid = 54 + ) + LocalObject( + 3197, + Terminal.Constructor(Vector3(6827.633f, 2276.406f, 62.71152f), ground_rearm_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2283, + FacilityTurret.Constructor(Vector3(6664.535f, 2238.206f, 71.36352f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(2283, 5070) - LocalObject(2284, FacilityTurret.Constructor(Vector3(6750.384f, 2393.099f, 71.36352f), manned_turret), owning_building_guid = 54) + LocalObject( + 2284, + FacilityTurret.Constructor(Vector3(6750.384f, 2393.099f, 71.36352f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(2284, 5071) - LocalObject(2285, FacilityTurret.Constructor(Vector3(6782.802f, 2172.64f, 71.36352f), manned_turret), owning_building_guid = 54) + LocalObject( + 2285, + FacilityTurret.Constructor(Vector3(6782.802f, 2172.64f, 71.36352f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(2285, 5072) - LocalObject(2286, FacilityTurret.Constructor(Vector3(6832.512f, 2348.87f, 71.36352f), manned_turret), owning_building_guid = 54) + LocalObject( + 2286, + FacilityTurret.Constructor(Vector3(6832.512f, 2348.87f, 71.36352f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(2286, 5073) - LocalObject(2287, FacilityTurret.Constructor(Vector3(6849.35f, 2290.247f, 71.36352f), manned_turret), owning_building_guid = 54) + LocalObject( + 2287, + FacilityTurret.Constructor(Vector3(6849.35f, 2290.247f, 71.36352f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(2287, 5074) - LocalObject(1232, ImplantTerminalMech.Constructor(Vector3(6804.314f, 2321.925f, 52.43852f)), owning_building_guid = 54) - LocalObject(1222, Terminal.Constructor(Vector3(6804.323f, 2321.941f, 52.43852f), implant_terminal_interface), owning_building_guid = 54) + LocalObject( + 1232, + ImplantTerminalMech.Constructor(Vector3(6804.314f, 2321.925f, 52.43852f)), + owning_building_guid = 54 + ) + LocalObject( + 1222, + Terminal.Constructor(Vector3(6804.323f, 2321.941f, 52.43852f), implant_terminal_interface), + owning_building_guid = 54 + ) TerminalToInterface(1232, 1222) - LocalObject(1233, ImplantTerminalMech.Constructor(Vector3(6811.748f, 2335.362f, 52.43852f)), owning_building_guid = 54) - LocalObject(1223, Terminal.Constructor(Vector3(6811.739f, 2335.346f, 52.43852f), implant_terminal_interface), owning_building_guid = 54) + LocalObject( + 1233, + ImplantTerminalMech.Constructor(Vector3(6811.748f, 2335.362f, 52.43852f)), + owning_building_guid = 54 + ) + LocalObject( + 1223, + Terminal.Constructor(Vector3(6811.739f, 2335.346f, 52.43852f), implant_terminal_interface), + owning_building_guid = 54 + ) TerminalToInterface(1233, 1223) - LocalObject(2893, Painbox.Constructor(Vector3(6769.358f, 2268.088f, 76.99032f), painbox), owning_building_guid = 54) - LocalObject(2910, Painbox.Constructor(Vector3(6790.642f, 2287.593f, 57.03142f), painbox_continuous), owning_building_guid = 54) - LocalObject(2927, Painbox.Constructor(Vector3(6775.136f, 2281.423f, 77.19542f), painbox_door_radius), owning_building_guid = 54) - LocalObject(2972, Painbox.Constructor(Vector3(6782.148f, 2280.96f, 55.31742f), painbox_door_radius_continuous), owning_building_guid = 54) - LocalObject(2973, Painbox.Constructor(Vector3(6797.469f, 2304.525f, 54.67572f), painbox_door_radius_continuous), owning_building_guid = 54) - LocalObject(2974, Painbox.Constructor(Vector3(6807.622f, 2291.145f, 56.50242f), painbox_door_radius_continuous), owning_building_guid = 54) + LocalObject( + 2893, + Painbox.Constructor(Vector3(6769.358f, 2268.088f, 76.99032f), painbox), + owning_building_guid = 54 + ) + LocalObject( + 2910, + Painbox.Constructor(Vector3(6790.642f, 2287.593f, 57.03142f), painbox_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2927, + Painbox.Constructor(Vector3(6775.136f, 2281.423f, 77.19542f), painbox_door_radius), + owning_building_guid = 54 + ) + LocalObject( + 2972, + Painbox.Constructor(Vector3(6782.148f, 2280.96f, 55.31742f), painbox_door_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2973, + Painbox.Constructor(Vector3(6797.469f, 2304.525f, 54.67572f), painbox_door_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2974, + Painbox.Constructor(Vector3(6807.622f, 2291.145f, 56.50242f), painbox_door_radius_continuous), + owning_building_guid = 54 + ) LocalObject(395, Generator.Constructor(Vector3(6766.101f, 2265.447f, 71.66752f)), owning_building_guid = 54) - LocalObject(378, Terminal.Constructor(Vector3(6770.031f, 2272.635f, 72.96152f), gen_control), owning_building_guid = 54) + LocalObject( + 378, + Terminal.Constructor(Vector3(6770.031f, 2272.635f, 72.96152f), gen_control), + owning_building_guid = 54 + ) } Building25936() def Building25936(): Unit = { // Name: GW_Cyssor_N Type: hst GUID: 57, MapID: 25936 - LocalBuilding("GW_Cyssor_N", 57, 25936, FoundationBuilder(WarpGate.Structure(Vector3(2467.29f, 4261.36f, 52.85f), hst))) + LocalBuilding( + "GW_Cyssor_N", + 57, + 25936, + FoundationBuilder(WarpGate.Structure(Vector3(2467.29f, 4261.36f, 52.85f), hst)) + ) } Building25937() def Building25937(): Unit = { // Name: GW_Cyssor_S Type: hst GUID: 58, MapID: 25937 - LocalBuilding("GW_Cyssor_S", 58, 25937, FoundationBuilder(WarpGate.Structure(Vector3(4762.97f, 2644.8f, 68.15f), hst))) + LocalBuilding( + "GW_Cyssor_S", + 58, + 25937, + FoundationBuilder(WarpGate.Structure(Vector3(4762.97f, 2644.8f, 68.15f), hst)) + ) } Building7() def Building7(): Unit = { // Name: Wele Type: tech_plant GUID: 66, MapID: 7 - LocalBuilding("Wele", 66, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(532f, 6966f, 59.89929f), Vector3(0f, 0f, 180f), tech_plant))) - LocalObject(277, CaptureTerminal.Constructor(Vector3(527.266f, 7010.089f, 74.99929f), capture_terminal), owning_building_guid = 66) + LocalBuilding( + "Wele", + 66, + 7, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(532f, 6966f, 59.89929f), Vector3(0f, 0f, 180f), tech_plant) + ) + ) + LocalObject( + 277, + CaptureTerminal.Constructor(Vector3(527.266f, 7010.089f, 74.99929f), capture_terminal), + owning_building_guid = 66 + ) LocalObject(398, Door.Constructor(Vector3(452.98f, 6962.893f, 61.44129f)), owning_building_guid = 66) LocalObject(399, Door.Constructor(Vector3(452.98f, 6981.086f, 69.40429f)), owning_building_guid = 66) LocalObject(400, Door.Constructor(Vector3(489.248f, 6934.734f, 69.40429f)), owning_building_guid = 66) @@ -1956,16 +5523,66 @@ object Map03 { // Cyssor LocalObject(3497, Door.Constructor(Vector3(519.327f, 6993.685f, 54.35329f)), owning_building_guid = 66) LocalObject(3498, Door.Constructor(Vector3(519.327f, 7000.974f, 54.35329f)), owning_building_guid = 66) LocalObject(3499, Door.Constructor(Vector3(519.327f, 7008.267f, 54.35329f)), owning_building_guid = 66) - LocalObject(1251, IFFLock.Constructor(Vector3(488.643f, 7014.397f, 61.47929f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 1187) - LocalObject(1268, IFFLock.Constructor(Vector3(574.744f, 6923.647f, 61.58729f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 809) - LocalObject(1272, IFFLock.Constructor(Vector3(500.94f, 7011.572f, 46.33529f), Vector3(0, 0, 90)), owning_building_guid = 66, door_guid = 818) - LocalObject(1273, IFFLock.Constructor(Vector3(502.428f, 6982.943f, 46.33529f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 820) - LocalObject(1274, IFFLock.Constructor(Vector3(510.428f, 7014.81f, 53.83529f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 823) - LocalObject(1276, IFFLock.Constructor(Vector3(512.504f, 7006.225f, 76.44529f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 404) - LocalObject(1277, IFFLock.Constructor(Vector3(513.572f, 6989.19f, 53.83529f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 821) - LocalObject(1278, IFFLock.Constructor(Vector3(523.446f, 6988.617f, 76.44529f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 406) - LocalObject(1279, IFFLock.Constructor(Vector3(537.572f, 7005.06f, 76.33529f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 832) - LocalObject(1280, IFFLock.Constructor(Vector3(572.814f, 7068.046f, 61.45129f), Vector3(0, 0, 90)), owning_building_guid = 66, door_guid = 411) + LocalObject( + 1251, + IFFLock.Constructor(Vector3(488.643f, 7014.397f, 61.47929f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 1187 + ) + LocalObject( + 1268, + IFFLock.Constructor(Vector3(574.744f, 6923.647f, 61.58729f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 809 + ) + LocalObject( + 1272, + IFFLock.Constructor(Vector3(500.94f, 7011.572f, 46.33529f), Vector3(0, 0, 90)), + owning_building_guid = 66, + door_guid = 818 + ) + LocalObject( + 1273, + IFFLock.Constructor(Vector3(502.428f, 6982.943f, 46.33529f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 820 + ) + LocalObject( + 1274, + IFFLock.Constructor(Vector3(510.428f, 7014.81f, 53.83529f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 823 + ) + LocalObject( + 1276, + IFFLock.Constructor(Vector3(512.504f, 7006.225f, 76.44529f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 404 + ) + LocalObject( + 1277, + IFFLock.Constructor(Vector3(513.572f, 6989.19f, 53.83529f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 821 + ) + LocalObject( + 1278, + IFFLock.Constructor(Vector3(523.446f, 6988.617f, 76.44529f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 406 + ) + LocalObject( + 1279, + IFFLock.Constructor(Vector3(537.572f, 7005.06f, 76.33529f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 832 + ) + LocalObject( + 1280, + IFFLock.Constructor(Vector3(572.814f, 7068.046f, 61.45129f), Vector3(0, 0, 90)), + owning_building_guid = 66, + door_guid = 411 + ) LocalObject(1589, Locker.Constructor(Vector3(485.272f, 6991.835f, 44.99929f)), owning_building_guid = 66) LocalObject(1590, Locker.Constructor(Vector3(486.609f, 6991.835f, 44.99929f)), owning_building_guid = 66) LocalObject(1591, Locker.Constructor(Vector3(487.945f, 6991.835f, 44.99929f)), owning_building_guid = 66) @@ -1978,72 +5595,295 @@ object Map03 { // Cyssor LocalObject(1598, Locker.Constructor(Vector3(506.126f, 7011.859f, 52.76029f)), owning_building_guid = 66) LocalObject(1599, Locker.Constructor(Vector3(507.273f, 7011.859f, 52.76029f)), owning_building_guid = 66) LocalObject(1600, Locker.Constructor(Vector3(508.437f, 7011.859f, 52.76029f)), owning_building_guid = 66) - LocalObject(208, Terminal.Constructor(Vector3(515.395f, 6990.859f, 75.60229f), air_vehicle_terminal), owning_building_guid = 66) - LocalObject(2302, VehicleSpawnPad.Constructor(Vector3(510.912f, 6970.165f, 72.47729f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 66, terminal_guid = 208) - LocalObject(209, Terminal.Constructor(Vector3(527.327f, 6990.859f, 75.60229f), air_vehicle_terminal), owning_building_guid = 66) - LocalObject(2303, VehicleSpawnPad.Constructor(Vector3(531.93f, 6970.165f, 72.47729f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 66, terminal_guid = 209) - LocalObject(2356, Terminal.Constructor(Vector3(505.346f, 6999.072f, 54.08929f), order_terminal), owning_building_guid = 66) - LocalObject(2357, Terminal.Constructor(Vector3(505.346f, 7002.861f, 54.08929f), order_terminal), owning_building_guid = 66) - LocalObject(2358, Terminal.Constructor(Vector3(505.346f, 7006.592f, 54.08929f), order_terminal), owning_building_guid = 66) - LocalObject(2359, Terminal.Constructor(Vector3(528.942f, 6992.514f, 66.32928f), order_terminal), owning_building_guid = 66) - LocalObject(3383, Terminal.Constructor(Vector3(494.758f, 6986.361f, 66.58129f), spawn_terminal), owning_building_guid = 66) - LocalObject(3384, Terminal.Constructor(Vector3(517.468f, 6962.785f, 71.92229f), spawn_terminal), owning_building_guid = 66) - LocalObject(3385, Terminal.Constructor(Vector3(519.03f, 6996.177f, 54.63329f), spawn_terminal), owning_building_guid = 66) - LocalObject(3386, Terminal.Constructor(Vector3(519.033f, 7003.465f, 54.63329f), spawn_terminal), owning_building_guid = 66) - LocalObject(3387, Terminal.Constructor(Vector3(519.029f, 7010.757f, 54.63329f), spawn_terminal), owning_building_guid = 66) - LocalObject(3388, Terminal.Constructor(Vector3(524.058f, 7013.409f, 46.55629f), spawn_terminal), owning_building_guid = 66) - LocalObject(3390, Terminal.Constructor(Vector3(556.058f, 7061.409f, 54.05629f), spawn_terminal), owning_building_guid = 66) - LocalObject(3717, Terminal.Constructor(Vector3(580.004f, 7006.577f, 45.71329f), ground_vehicle_terminal), owning_building_guid = 66) - LocalObject(2305, VehicleSpawnPad.Constructor(Vector3(580.055f, 6995.661f, 37.43629f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 66, terminal_guid = 3717) + LocalObject( + 208, + Terminal.Constructor(Vector3(515.395f, 6990.859f, 75.60229f), air_vehicle_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2302, + VehicleSpawnPad.Constructor(Vector3(510.912f, 6970.165f, 72.47729f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 66, + terminal_guid = 208 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(527.327f, 6990.859f, 75.60229f), air_vehicle_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2303, + VehicleSpawnPad.Constructor(Vector3(531.93f, 6970.165f, 72.47729f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 66, + terminal_guid = 209 + ) + LocalObject( + 2356, + Terminal.Constructor(Vector3(505.346f, 6999.072f, 54.08929f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2357, + Terminal.Constructor(Vector3(505.346f, 7002.861f, 54.08929f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2358, + Terminal.Constructor(Vector3(505.346f, 7006.592f, 54.08929f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2359, + Terminal.Constructor(Vector3(528.942f, 6992.514f, 66.32928f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3383, + Terminal.Constructor(Vector3(494.758f, 6986.361f, 66.58129f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3384, + Terminal.Constructor(Vector3(517.468f, 6962.785f, 71.92229f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3385, + Terminal.Constructor(Vector3(519.03f, 6996.177f, 54.63329f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3386, + Terminal.Constructor(Vector3(519.033f, 7003.465f, 54.63329f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3387, + Terminal.Constructor(Vector3(519.029f, 7010.757f, 54.63329f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3388, + Terminal.Constructor(Vector3(524.058f, 7013.409f, 46.55629f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3390, + Terminal.Constructor(Vector3(556.058f, 7061.409f, 54.05629f), spawn_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3717, + Terminal.Constructor(Vector3(580.004f, 7006.577f, 45.71329f), ground_vehicle_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2305, + VehicleSpawnPad.Constructor(Vector3(580.055f, 6995.661f, 37.43629f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 66, + terminal_guid = 3717 + ) LocalObject(3216, ResourceSilo.Constructor(Vector3(470.248f, 6933.445f, 66.90729f)), owning_building_guid = 66) - LocalObject(3233, SpawnTube.Constructor(Vector3(519.767f, 6994.738f, 52.49929f), Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(3234, SpawnTube.Constructor(Vector3(519.767f, 7002.026f, 52.49929f), Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(3235, SpawnTube.Constructor(Vector3(519.767f, 7009.317f, 52.49929f), Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(2327, ProximityTerminal.Constructor(Vector3(491.556f, 6992.38f, 44.99929f), medical_terminal), owning_building_guid = 66) - LocalObject(2328, ProximityTerminal.Constructor(Vector3(528.941f, 7003.099f, 64.99629f), medical_terminal), owning_building_guid = 66) - LocalObject(2627, ProximityTerminal.Constructor(Vector3(463.72f, 6991.898f, 68.10728f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2628, Terminal.Constructor(Vector3(463.72f, 6991.898f, 68.10728f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2630, ProximityTerminal.Constructor(Vector3(470.013f, 7008.145f, 70.55128f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2631, Terminal.Constructor(Vector3(470.013f, 7008.145f, 70.55128f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2633, ProximityTerminal.Constructor(Vector3(506.466f, 7047.372f, 68.10728f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2634, Terminal.Constructor(Vector3(506.466f, 7047.372f, 68.10728f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2639, ProximityTerminal.Constructor(Vector3(522.621f, 7030.526f, 75.34629f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2640, Terminal.Constructor(Vector3(522.621f, 7030.526f, 75.34629f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2645, ProximityTerminal.Constructor(Vector3(573.02f, 6974.167f, 70.44929f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2646, Terminal.Constructor(Vector3(573.02f, 6974.167f, 70.44929f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2648, ProximityTerminal.Constructor(Vector3(593.296f, 6990.339f, 68.09428f), pad_landing_frame), owning_building_guid = 66) - LocalObject(2649, Terminal.Constructor(Vector3(593.296f, 6990.339f, 68.09428f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(3080, ProximityTerminal.Constructor(Vector3(473.3634f, 7058.792f, 59.64929f), repair_silo), owning_building_guid = 66) - LocalObject(3081, Terminal.Constructor(Vector3(473.3634f, 7058.792f, 59.64929f), ground_rearm_terminal), owning_building_guid = 66) - LocalObject(3088, ProximityTerminal.Constructor(Vector3(531.6914f, 6924.363f, 59.62779f), repair_silo), owning_building_guid = 66) - LocalObject(3089, Terminal.Constructor(Vector3(531.6914f, 6924.363f, 59.62779f), ground_rearm_terminal), owning_building_guid = 66) - LocalObject(2159, FacilityTurret.Constructor(Vector3(438.119f, 7000.577f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 3233, + SpawnTube.Constructor(Vector3(519.767f, 6994.738f, 52.49929f), Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 3234, + SpawnTube.Constructor(Vector3(519.767f, 7002.026f, 52.49929f), Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 3235, + SpawnTube.Constructor(Vector3(519.767f, 7009.317f, 52.49929f), Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 2327, + ProximityTerminal.Constructor(Vector3(491.556f, 6992.38f, 44.99929f), medical_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2328, + ProximityTerminal.Constructor(Vector3(528.941f, 7003.099f, 64.99629f), medical_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2627, + ProximityTerminal.Constructor(Vector3(463.72f, 6991.898f, 68.10728f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2628, + Terminal.Constructor(Vector3(463.72f, 6991.898f, 68.10728f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2630, + ProximityTerminal.Constructor(Vector3(470.013f, 7008.145f, 70.55128f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2631, + Terminal.Constructor(Vector3(470.013f, 7008.145f, 70.55128f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2633, + ProximityTerminal.Constructor(Vector3(506.466f, 7047.372f, 68.10728f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2634, + Terminal.Constructor(Vector3(506.466f, 7047.372f, 68.10728f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2639, + ProximityTerminal.Constructor(Vector3(522.621f, 7030.526f, 75.34629f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2640, + Terminal.Constructor(Vector3(522.621f, 7030.526f, 75.34629f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2645, + ProximityTerminal.Constructor(Vector3(573.02f, 6974.167f, 70.44929f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2646, + Terminal.Constructor(Vector3(573.02f, 6974.167f, 70.44929f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2648, + ProximityTerminal.Constructor(Vector3(593.296f, 6990.339f, 68.09428f), pad_landing_frame), + owning_building_guid = 66 + ) + LocalObject( + 2649, + Terminal.Constructor(Vector3(593.296f, 6990.339f, 68.09428f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3080, + ProximityTerminal.Constructor(Vector3(473.3634f, 7058.792f, 59.64929f), repair_silo), + owning_building_guid = 66 + ) + LocalObject( + 3081, + Terminal.Constructor(Vector3(473.3634f, 7058.792f, 59.64929f), ground_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 3088, + ProximityTerminal.Constructor(Vector3(531.6914f, 6924.363f, 59.62779f), repair_silo), + owning_building_guid = 66 + ) + LocalObject( + 3089, + Terminal.Constructor(Vector3(531.6914f, 6924.363f, 59.62779f), ground_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2159, + FacilityTurret.Constructor(Vector3(438.119f, 7000.577f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2159, 5075) - LocalObject(2160, FacilityTurret.Constructor(Vector3(445.846f, 6927.602f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 2160, + FacilityTurret.Constructor(Vector3(445.846f, 6927.602f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2160, 5076) - LocalObject(2161, FacilityTurret.Constructor(Vector3(445.846f, 7065.343f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 2161, + FacilityTurret.Constructor(Vector3(445.846f, 7065.343f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2161, 5077) - LocalObject(2164, FacilityTurret.Constructor(Vector3(526.399f, 6867.145f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 2164, + FacilityTurret.Constructor(Vector3(526.399f, 6867.145f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2164, 5078) - LocalObject(2167, FacilityTurret.Constructor(Vector3(610.587f, 7065.335f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 2167, + FacilityTurret.Constructor(Vector3(610.587f, 7065.335f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2167, 5079) - LocalObject(2168, FacilityTurret.Constructor(Vector3(616.094f, 6867.145f, 68.39828f), manned_turret), owning_building_guid = 66) + LocalObject( + 2168, + FacilityTurret.Constructor(Vector3(616.094f, 6867.145f, 68.39828f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(2168, 5080) - LocalObject(2879, Painbox.Constructor(Vector3(506.2628f, 6969.793f, 48.47259f), painbox), owning_building_guid = 66) - LocalObject(2896, Painbox.Constructor(Vector3(511.1678f, 7002.788f, 56.76919f), painbox_continuous), owning_building_guid = 66) - LocalObject(2913, Painbox.Constructor(Vector3(504.3004f, 6984.529f, 48.15869f), painbox_door_radius), owning_building_guid = 66) - LocalObject(2930, Painbox.Constructor(Vector3(496.359f, 6995.43f, 56.08159f), painbox_door_radius_continuous), owning_building_guid = 66) - LocalObject(2931, Painbox.Constructor(Vector3(512.1394f, 6988.231f, 55.17549f), painbox_door_radius_continuous), owning_building_guid = 66) - LocalObject(2932, Painbox.Constructor(Vector3(512.9652f, 7015.722f, 54.62719f), painbox_door_radius_continuous), owning_building_guid = 66) + LocalObject( + 2879, + Painbox.Constructor(Vector3(506.2628f, 6969.793f, 48.47259f), painbox), + owning_building_guid = 66 + ) + LocalObject( + 2896, + Painbox.Constructor(Vector3(511.1678f, 7002.788f, 56.76919f), painbox_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2913, + Painbox.Constructor(Vector3(504.3004f, 6984.529f, 48.15869f), painbox_door_radius), + owning_building_guid = 66 + ) + LocalObject( + 2930, + Painbox.Constructor(Vector3(496.359f, 6995.43f, 56.08159f), painbox_door_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2931, + Painbox.Constructor(Vector3(512.1394f, 6988.231f, 55.17549f), painbox_door_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2932, + Painbox.Constructor(Vector3(512.9652f, 7015.722f, 54.62719f), painbox_door_radius_continuous), + owning_building_guid = 66 + ) LocalObject(381, Generator.Constructor(Vector3(504.025f, 6966.445f, 43.70529f)), owning_building_guid = 66) - LocalObject(364, Terminal.Constructor(Vector3(503.978f, 6974.637f, 44.99929f), gen_control), owning_building_guid = 66) + LocalObject( + 364, + Terminal.Constructor(Vector3(503.978f, 6974.637f, 44.99929f), gen_control), + owning_building_guid = 66 + ) } Building10() def Building10(): Unit = { // Name: Leza Type: tech_plant GUID: 69, MapID: 10 - LocalBuilding("Leza", 69, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2674f, 1440f, 63.98816f), Vector3(0f, 0f, 121f), tech_plant))) - LocalObject(282, CaptureTerminal.Constructor(Vector3(2709.354f, 1466.765f, 79.08816f), capture_terminal), owning_building_guid = 69) + LocalBuilding( + "Leza", + 69, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2674f, 1440f, 63.98816f), + Vector3(0f, 0f, 121f), + tech_plant + ) + ) + ) + LocalObject( + 282, + CaptureTerminal.Constructor(Vector3(2709.354f, 1466.765f, 79.08816f), capture_terminal), + owning_building_guid = 69 + ) LocalObject(515, Door.Constructor(Vector3(2625.181f, 1460.542f, 73.49316f)), owning_building_guid = 69) LocalObject(516, Door.Constructor(Vector3(2630.638f, 1506.133f, 65.53016f)), owning_building_guid = 69) LocalObject(517, Door.Constructor(Vector3(2634.551f, 1444.948f, 65.53016f)), owning_building_guid = 69) @@ -2082,16 +5922,66 @@ object Map03 { // Cyssor LocalObject(3530, Door.Constructor(Vector3(2691.204f, 1465.122f, 58.44215f)), owning_building_guid = 69) LocalObject(3531, Door.Constructor(Vector3(2697.451f, 1468.876f, 58.44215f)), owning_building_guid = 69) LocalObject(3532, Door.Constructor(Vector3(2703.703f, 1472.632f, 58.44215f)), owning_building_guid = 69) - LocalObject(1256, IFFLock.Constructor(Vector3(2693.154f, 1502.09f, 65.56815f), Vector3(0, 0, 59)), owning_building_guid = 69, door_guid = 1192) - LocalObject(1269, IFFLock.Constructor(Vector3(2659.711f, 1381.548f, 65.67616f), Vector3(0, 0, 239)), owning_building_guid = 69, door_guid = 810) - LocalObject(1361, IFFLock.Constructor(Vector3(2673.292f, 1474.074f, 50.42416f), Vector3(0, 0, 59)), owning_building_guid = 69, door_guid = 927) - LocalObject(1362, IFFLock.Constructor(Vector3(2684.386f, 1467.74f, 57.92416f), Vector3(0, 0, 239)), owning_building_guid = 69, door_guid = 929) - LocalObject(1363, IFFLock.Constructor(Vector3(2688.981f, 1458.981f, 80.53416f), Vector3(0, 0, 239)), owning_building_guid = 69, door_guid = 519) - LocalObject(1364, IFFLock.Constructor(Vector3(2697.066f, 1490.095f, 50.42416f), Vector3(0, 0, 149)), owning_building_guid = 69, door_guid = 930) - LocalObject(1365, IFFLock.Constructor(Vector3(2698.438f, 1477.429f, 80.53416f), Vector3(0, 0, 59)), owning_building_guid = 69, door_guid = 521) - LocalObject(1366, IFFLock.Constructor(Vector3(2704.728f, 1483.63f, 57.92416f), Vector3(0, 0, 59)), owning_building_guid = 69, door_guid = 936) - LocalObject(1367, IFFLock.Constructor(Vector3(2710.351f, 1455.341f, 80.42416f), Vector3(0, 0, 239)), owning_building_guid = 69, door_guid = 939) - LocalObject(1368, IFFLock.Constructor(Vector3(2782.491f, 1457.573f, 65.54015f), Vector3(0, 0, 149)), owning_building_guid = 69, door_guid = 527) + LocalObject( + 1256, + IFFLock.Constructor(Vector3(2693.154f, 1502.09f, 65.56815f), Vector3(0, 0, 59)), + owning_building_guid = 69, + door_guid = 1192 + ) + LocalObject( + 1269, + IFFLock.Constructor(Vector3(2659.711f, 1381.548f, 65.67616f), Vector3(0, 0, 239)), + owning_building_guid = 69, + door_guid = 810 + ) + LocalObject( + 1361, + IFFLock.Constructor(Vector3(2673.292f, 1474.074f, 50.42416f), Vector3(0, 0, 59)), + owning_building_guid = 69, + door_guid = 927 + ) + LocalObject( + 1362, + IFFLock.Constructor(Vector3(2684.386f, 1467.74f, 57.92416f), Vector3(0, 0, 239)), + owning_building_guid = 69, + door_guid = 929 + ) + LocalObject( + 1363, + IFFLock.Constructor(Vector3(2688.981f, 1458.981f, 80.53416f), Vector3(0, 0, 239)), + owning_building_guid = 69, + door_guid = 519 + ) + LocalObject( + 1364, + IFFLock.Constructor(Vector3(2697.066f, 1490.095f, 50.42416f), Vector3(0, 0, 149)), + owning_building_guid = 69, + door_guid = 930 + ) + LocalObject( + 1365, + IFFLock.Constructor(Vector3(2698.438f, 1477.429f, 80.53416f), Vector3(0, 0, 59)), + owning_building_guid = 69, + door_guid = 521 + ) + LocalObject( + 1366, + IFFLock.Constructor(Vector3(2704.728f, 1483.63f, 57.92416f), Vector3(0, 0, 59)), + owning_building_guid = 69, + door_guid = 936 + ) + LocalObject( + 1367, + IFFLock.Constructor(Vector3(2710.351f, 1455.341f, 80.42416f), Vector3(0, 0, 239)), + owning_building_guid = 69, + door_guid = 939 + ) + LocalObject( + 1368, + IFFLock.Constructor(Vector3(2782.491f, 1457.573f, 65.54015f), Vector3(0, 0, 149)), + owning_building_guid = 69, + door_guid = 527 + ) LocalObject(1730, Locker.Constructor(Vector3(2672.078f, 1493.36f, 49.08816f)), owning_building_guid = 69) LocalObject(1731, Locker.Constructor(Vector3(2672.767f, 1492.214f, 49.08816f)), owning_building_guid = 69) LocalObject(1732, Locker.Constructor(Vector3(2673.455f, 1491.068f, 49.08816f)), owning_building_guid = 69) @@ -2104,72 +5994,295 @@ object Map03 { // Cyssor LocalObject(1739, Locker.Constructor(Vector3(2699.983f, 1485.797f, 56.84916f)), owning_building_guid = 69) LocalObject(1740, Locker.Constructor(Vector3(2700.573f, 1484.814f, 56.84916f)), owning_building_guid = 69) LocalObject(1741, Locker.Constructor(Vector3(2701.173f, 1483.817f, 56.84916f)), owning_building_guid = 69) - LocalObject(210, Terminal.Constructor(Vector3(2686.756f, 1467.037f, 79.69115f), air_vehicle_terminal), owning_building_guid = 69) - LocalObject(2309, VehicleSpawnPad.Constructor(Vector3(2666.709f, 1460.221f, 76.56615f), mb_pad_creation, Vector3(0, 0, 239)), owning_building_guid = 69, terminal_guid = 210) - LocalObject(211, Terminal.Constructor(Vector3(2692.902f, 1456.809f, 79.69115f), air_vehicle_terminal), owning_building_guid = 69) - LocalObject(2310, VehicleSpawnPad.Constructor(Vector3(2677.534f, 1442.205f, 76.56615f), mb_pad_creation, Vector3(0, 0, 239)), owning_building_guid = 69, terminal_guid = 211) - LocalObject(2410, Terminal.Constructor(Vector3(2688.62f, 1479.88f, 58.17815f), order_terminal), owning_building_guid = 69) - LocalObject(2411, Terminal.Constructor(Vector3(2691.868f, 1481.832f, 58.17815f), order_terminal), owning_building_guid = 69) - LocalObject(2412, Terminal.Constructor(Vector3(2695.066f, 1483.753f, 58.17815f), order_terminal), owning_building_guid = 69) - LocalObject(2413, Terminal.Constructor(Vector3(2695.152f, 1456.277f, 70.41815f), order_terminal), owning_building_guid = 69) - LocalObject(3415, Terminal.Constructor(Vector3(2663.76f, 1450.801f, 76.01115f), spawn_terminal), owning_building_guid = 69) - LocalObject(3416, Terminal.Constructor(Vector3(2672.272f, 1482.409f, 70.67016f), spawn_terminal), owning_building_guid = 69) - LocalObject(3417, Terminal.Constructor(Vector3(2693.187f, 1466.66f, 58.72216f), spawn_terminal), owning_building_guid = 69) - LocalObject(3418, Terminal.Constructor(Vector3(2699.435f, 1470.411f, 58.72216f), spawn_terminal), owning_building_guid = 69) - LocalObject(3419, Terminal.Constructor(Vector3(2705.684f, 1474.17f, 58.72216f), spawn_terminal), owning_building_guid = 69) - LocalObject(3420, Terminal.Constructor(Vector3(2710.547f, 1471.225f, 50.64516f), spawn_terminal), owning_building_guid = 69) - LocalObject(3421, Terminal.Constructor(Vector3(2768.172f, 1468.518f, 58.14516f), spawn_terminal), owning_building_guid = 69) - LocalObject(3721, Terminal.Constructor(Vector3(2733.505f, 1419.751f, 49.80215f), ground_vehicle_terminal), owning_building_guid = 69) - LocalObject(2311, VehicleSpawnPad.Constructor(Vector3(2724.175f, 1414.085f, 41.52515f), mb_pad_creation, Vector3(0, 0, 239)), owning_building_guid = 69, terminal_guid = 3721) + LocalObject( + 210, + Terminal.Constructor(Vector3(2686.756f, 1467.037f, 79.69115f), air_vehicle_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2309, + VehicleSpawnPad.Constructor(Vector3(2666.709f, 1460.221f, 76.56615f), mb_pad_creation, Vector3(0, 0, 239)), + owning_building_guid = 69, + terminal_guid = 210 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(2692.902f, 1456.809f, 79.69115f), air_vehicle_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2310, + VehicleSpawnPad.Constructor(Vector3(2677.534f, 1442.205f, 76.56615f), mb_pad_creation, Vector3(0, 0, 239)), + owning_building_guid = 69, + terminal_guid = 211 + ) + LocalObject( + 2410, + Terminal.Constructor(Vector3(2688.62f, 1479.88f, 58.17815f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2411, + Terminal.Constructor(Vector3(2691.868f, 1481.832f, 58.17815f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2412, + Terminal.Constructor(Vector3(2695.066f, 1483.753f, 58.17815f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2413, + Terminal.Constructor(Vector3(2695.152f, 1456.277f, 70.41815f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3415, + Terminal.Constructor(Vector3(2663.76f, 1450.801f, 76.01115f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3416, + Terminal.Constructor(Vector3(2672.272f, 1482.409f, 70.67016f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3417, + Terminal.Constructor(Vector3(2693.187f, 1466.66f, 58.72216f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3418, + Terminal.Constructor(Vector3(2699.435f, 1470.411f, 58.72216f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3419, + Terminal.Constructor(Vector3(2705.684f, 1474.17f, 58.72216f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3420, + Terminal.Constructor(Vector3(2710.547f, 1471.225f, 50.64516f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3421, + Terminal.Constructor(Vector3(2768.172f, 1468.518f, 58.14516f), spawn_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3721, + Terminal.Constructor(Vector3(2733.505f, 1419.751f, 49.80215f), ground_vehicle_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2311, + VehicleSpawnPad.Constructor(Vector3(2724.175f, 1414.085f, 41.52515f), mb_pad_creation, Vector3(0, 0, 239)), + owning_building_guid = 69, + terminal_guid = 3721 + ) LocalObject(3221, ResourceSilo.Constructor(Vector3(2614.29f, 1476.165f, 70.99615f)), owning_building_guid = 69) - LocalObject(3266, SpawnTube.Constructor(Vector3(2692.333f, 1465.287f, 56.58815f), Vector3(0, 0, 239)), owning_building_guid = 69) - LocalObject(3267, SpawnTube.Constructor(Vector3(2698.58f, 1469.041f, 56.58815f), Vector3(0, 0, 239)), owning_building_guid = 69) - LocalObject(3268, SpawnTube.Constructor(Vector3(2704.829f, 1472.796f, 56.58815f), Vector3(0, 0, 239)), owning_building_guid = 69) - LocalObject(2336, ProximityTerminal.Constructor(Vector3(2675.782f, 1488.254f, 49.08816f), medical_terminal), owning_building_guid = 69) - LocalObject(2337, ProximityTerminal.Constructor(Vector3(2704.225f, 1461.729f, 69.08516f), medical_terminal), owning_building_guid = 69) - LocalObject(2684, ProximityTerminal.Constructor(Vector3(2661.032f, 1511.866f, 72.19615f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2685, Terminal.Constructor(Vector3(2661.032f, 1511.866f, 72.19615f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2687, ProximityTerminal.Constructor(Vector3(2678.2f, 1514.839f, 74.64015f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2688, Terminal.Constructor(Vector3(2678.2f, 1514.839f, 74.64015f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2690, ProximityTerminal.Constructor(Vector3(2702.127f, 1409.045f, 74.53815f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2691, Terminal.Constructor(Vector3(2702.127f, 1409.045f, 74.53815f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2693, ProximityTerminal.Constructor(Vector3(2724.479f, 1481.273f, 79.43516f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2694, Terminal.Constructor(Vector3(2724.479f, 1481.273f, 79.43516f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2696, ProximityTerminal.Constructor(Vector3(2726.432f, 1399.995f, 72.18315f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2697, Terminal.Constructor(Vector3(2726.432f, 1399.995f, 72.18315f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2699, ProximityTerminal.Constructor(Vector3(2730.598f, 1503.797f, 72.19615f), pad_landing_frame), owning_building_guid = 69) - LocalObject(2700, Terminal.Constructor(Vector3(2730.598f, 1503.797f, 72.19615f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(3120, ProximityTerminal.Constructor(Vector3(2638.152f, 1418.82f, 63.71666f), repair_silo), owning_building_guid = 69) - LocalObject(3121, Terminal.Constructor(Vector3(2638.152f, 1418.82f, 63.71666f), ground_rearm_terminal), owning_building_guid = 69) - LocalObject(3124, ProximityTerminal.Constructor(Vector3(2723.339f, 1538.053f, 63.73816f), repair_silo), owning_building_guid = 69) - LocalObject(3125, Terminal.Constructor(Vector3(2723.339f, 1538.053f, 63.73816f), ground_rearm_terminal), owning_building_guid = 69) - LocalObject(2202, FacilityTurret.Constructor(Vector3(2586.38f, 1393.887f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 3266, + SpawnTube.Constructor(Vector3(2692.333f, 1465.287f, 56.58815f), Vector3(0, 0, 239)), + owning_building_guid = 69 + ) + LocalObject( + 3267, + SpawnTube.Constructor(Vector3(2698.58f, 1469.041f, 56.58815f), Vector3(0, 0, 239)), + owning_building_guid = 69 + ) + LocalObject( + 3268, + SpawnTube.Constructor(Vector3(2704.829f, 1472.796f, 56.58815f), Vector3(0, 0, 239)), + owning_building_guid = 69 + ) + LocalObject( + 2336, + ProximityTerminal.Constructor(Vector3(2675.782f, 1488.254f, 49.08816f), medical_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2337, + ProximityTerminal.Constructor(Vector3(2704.225f, 1461.729f, 69.08516f), medical_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2684, + ProximityTerminal.Constructor(Vector3(2661.032f, 1511.866f, 72.19615f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2685, + Terminal.Constructor(Vector3(2661.032f, 1511.866f, 72.19615f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2687, + ProximityTerminal.Constructor(Vector3(2678.2f, 1514.839f, 74.64015f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2688, + Terminal.Constructor(Vector3(2678.2f, 1514.839f, 74.64015f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2690, + ProximityTerminal.Constructor(Vector3(2702.127f, 1409.045f, 74.53815f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2691, + Terminal.Constructor(Vector3(2702.127f, 1409.045f, 74.53815f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2693, + ProximityTerminal.Constructor(Vector3(2724.479f, 1481.273f, 79.43516f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2694, + Terminal.Constructor(Vector3(2724.479f, 1481.273f, 79.43516f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2696, + ProximityTerminal.Constructor(Vector3(2726.432f, 1399.995f, 72.18315f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2697, + Terminal.Constructor(Vector3(2726.432f, 1399.995f, 72.18315f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2699, + ProximityTerminal.Constructor(Vector3(2730.598f, 1503.797f, 72.19615f), pad_landing_frame), + owning_building_guid = 69 + ) + LocalObject( + 2700, + Terminal.Constructor(Vector3(2730.598f, 1503.797f, 72.19615f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3120, + ProximityTerminal.Constructor(Vector3(2638.152f, 1418.82f, 63.71666f), repair_silo), + owning_building_guid = 69 + ) + LocalObject( + 3121, + Terminal.Constructor(Vector3(2638.152f, 1418.82f, 63.71666f), ground_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 3124, + ProximityTerminal.Constructor(Vector3(2723.339f, 1538.053f, 63.73816f), repair_silo), + owning_building_guid = 69 + ) + LocalObject( + 3125, + Terminal.Constructor(Vector3(2723.339f, 1538.053f, 63.73816f), ground_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2202, + FacilityTurret.Constructor(Vector3(2586.38f, 1393.887f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2202, 5081) - LocalObject(2203, FacilityTurret.Constructor(Vector3(2596.714f, 1494.072f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 2203, + FacilityTurret.Constructor(Vector3(2596.714f, 1494.072f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2203, 5082) - LocalObject(2204, FacilityTurret.Constructor(Vector3(2632.576f, 1317.003f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 2204, + FacilityTurret.Constructor(Vector3(2632.576f, 1317.003f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2204, 5083) - LocalObject(2205, FacilityTurret.Constructor(Vector3(2655.286f, 1538.28f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 2205, + FacilityTurret.Constructor(Vector3(2655.286f, 1538.28f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2205, 5084) - LocalObject(2206, FacilityTurret.Constructor(Vector3(2714.781f, 1565.014f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 2206, + FacilityTurret.Constructor(Vector3(2714.781f, 1565.014f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2206, 5085) - LocalObject(2207, FacilityTurret.Constructor(Vector3(2799.622f, 1423.799f, 72.48715f), manned_turret), owning_building_guid = 69) + LocalObject( + 2207, + FacilityTurret.Constructor(Vector3(2799.622f, 1423.799f, 72.48715f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(2207, 5086) - LocalObject(2884, Painbox.Constructor(Vector3(2663.996f, 1464.015f, 52.56145f), painbox), owning_building_guid = 69) - LocalObject(2901, Painbox.Constructor(Vector3(2694.804f, 1476.804f, 60.85806f), painbox_continuous), owning_building_guid = 69) - LocalObject(2918, Painbox.Constructor(Vector3(2675.616f, 1473.286f, 52.24755f), painbox_door_radius), owning_building_guid = 69) - LocalObject(2945, Painbox.Constructor(Vector3(2680.87f, 1485.708f, 60.17046f), painbox_door_radius_continuous), owning_building_guid = 69) - LocalObject(2946, Painbox.Constructor(Vector3(2682.827f, 1468.474f, 59.26435f), painbox_door_radius_continuous), owning_building_guid = 69) - LocalObject(2947, Painbox.Constructor(Vector3(2706.816f, 1481.925f, 58.71606f), painbox_door_radius_continuous), owning_building_guid = 69) + LocalObject( + 2884, + Painbox.Constructor(Vector3(2663.996f, 1464.015f, 52.56145f), painbox), + owning_building_guid = 69 + ) + LocalObject( + 2901, + Painbox.Constructor(Vector3(2694.804f, 1476.804f, 60.85806f), painbox_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2918, + Painbox.Constructor(Vector3(2675.616f, 1473.286f, 52.24755f), painbox_door_radius), + owning_building_guid = 69 + ) + LocalObject( + 2945, + Painbox.Constructor(Vector3(2680.87f, 1485.708f, 60.17046f), painbox_door_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2946, + Painbox.Constructor(Vector3(2682.827f, 1468.474f, 59.26435f), painbox_door_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2947, + Painbox.Constructor(Vector3(2706.816f, 1481.925f, 58.71606f), painbox_door_radius_continuous), + owning_building_guid = 69 + ) LocalObject(386, Generator.Constructor(Vector3(2659.973f, 1464.208f, 47.79416f)), owning_building_guid = 69) - LocalObject(369, Terminal.Constructor(Vector3(2666.971f, 1468.468f, 49.08816f), gen_control), owning_building_guid = 69) + LocalObject( + 369, + Terminal.Constructor(Vector3(2666.971f, 1468.468f, 49.08816f), gen_control), + owning_building_guid = 69 + ) } Building6() def Building6(): Unit = { // Name: Faro Type: tech_plant GUID: 72, MapID: 6 - LocalBuilding("Faro", 72, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5110f, 5790f, 56.74856f), Vector3(0f, 0f, 267f), tech_plant))) - LocalObject(287, CaptureTerminal.Constructor(Vector3(5065.724f, 5787.58f, 71.84856f), capture_terminal), owning_building_guid = 72) + LocalBuilding( + "Faro", + 72, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5110f, 5790f, 56.74856f), + Vector3(0f, 0f, 267f), + tech_plant + ) + ) + ) + LocalObject( + 287, + CaptureTerminal.Constructor(Vector3(5065.724f, 5787.58f, 71.84856f), capture_terminal), + owning_building_guid = 72 + ) LocalObject(639, Door.Constructor(Vector3(5012.23f, 5835.179f, 58.36956f)), owning_building_guid = 72) LocalObject(641, Door.Constructor(Vector3(5018.686f, 5790.174f, 58.39956f)), owning_building_guid = 72) LocalObject(642, Door.Constructor(Vector3(5019.638f, 5808.342f, 66.36256f)), owning_building_guid = 72) @@ -2208,16 +6321,66 @@ object Map03 { // Cyssor LocalObject(3569, Door.Constructor(Vector3(5067.127f, 5779.557f, 51.20256f)), owning_building_guid = 72) LocalObject(3570, Door.Constructor(Vector3(5074.411f, 5779.175f, 51.20256f)), owning_building_guid = 72) LocalObject(3571, Door.Constructor(Vector3(5081.689f, 5778.793f, 51.20256f)), owning_building_guid = 72) - LocalObject(1261, IFFLock.Constructor(Vector3(5059.4f, 5749.235f, 58.32856f), Vector3(0, 0, 273)), owning_building_guid = 72, door_guid = 1197) - LocalObject(1270, IFFLock.Constructor(Vector3(5154.532f, 5830.469f, 58.43656f), Vector3(0, 0, 93)), owning_building_guid = 72, door_guid = 811) - LocalObject(1464, IFFLock.Constructor(Vector3(5010.23f, 5836.099f, 58.30056f), Vector3(0, 0, 3)), owning_building_guid = 72, door_guid = 639) - LocalObject(1467, IFFLock.Constructor(Vector3(5060.128f, 5771.012f, 50.68456f), Vector3(0, 0, 273)), owning_building_guid = 72, door_guid = 1042) - LocalObject(1468, IFFLock.Constructor(Vector3(5062.865f, 5761.368f, 43.18456f), Vector3(0, 0, 3)), owning_building_guid = 72, door_guid = 1043) - LocalObject(1469, IFFLock.Constructor(Vector3(5068.81f, 5772.636f, 73.29456f), Vector3(0, 0, 273)), owning_building_guid = 72, door_guid = 650) - LocalObject(1470, IFFLock.Constructor(Vector3(5071.285f, 5797.608f, 73.18456f), Vector3(0, 0, 93)), owning_building_guid = 72, door_guid = 1047) - LocalObject(1471, IFFLock.Constructor(Vector3(5085.877f, 5772.811f, 50.68456f), Vector3(0, 0, 93)), owning_building_guid = 72, door_guid = 1053) - LocalObject(1472, IFFLock.Constructor(Vector3(5086.966f, 5782.642f, 73.29456f), Vector3(0, 0, 93)), owning_building_guid = 72, door_guid = 653) - LocalObject(1473, IFFLock.Constructor(Vector3(5091.533f, 5761.355f, 43.18456f), Vector3(0, 0, 273)), owning_building_guid = 72, door_guid = 1057) + LocalObject( + 1261, + IFFLock.Constructor(Vector3(5059.4f, 5749.235f, 58.32856f), Vector3(0, 0, 273)), + owning_building_guid = 72, + door_guid = 1197 + ) + LocalObject( + 1270, + IFFLock.Constructor(Vector3(5154.532f, 5830.469f, 58.43656f), Vector3(0, 0, 93)), + owning_building_guid = 72, + door_guid = 811 + ) + LocalObject( + 1464, + IFFLock.Constructor(Vector3(5010.23f, 5836.099f, 58.30056f), Vector3(0, 0, 3)), + owning_building_guid = 72, + door_guid = 639 + ) + LocalObject( + 1467, + IFFLock.Constructor(Vector3(5060.128f, 5771.012f, 50.68456f), Vector3(0, 0, 273)), + owning_building_guid = 72, + door_guid = 1042 + ) + LocalObject( + 1468, + IFFLock.Constructor(Vector3(5062.865f, 5761.368f, 43.18456f), Vector3(0, 0, 3)), + owning_building_guid = 72, + door_guid = 1043 + ) + LocalObject( + 1469, + IFFLock.Constructor(Vector3(5068.81f, 5772.636f, 73.29456f), Vector3(0, 0, 273)), + owning_building_guid = 72, + door_guid = 650 + ) + LocalObject( + 1470, + IFFLock.Constructor(Vector3(5071.285f, 5797.608f, 73.18456f), Vector3(0, 0, 93)), + owning_building_guid = 72, + door_guid = 1047 + ) + LocalObject( + 1471, + IFFLock.Constructor(Vector3(5085.877f, 5772.811f, 50.68456f), Vector3(0, 0, 93)), + owning_building_guid = 72, + door_guid = 1053 + ) + LocalObject( + 1472, + IFFLock.Constructor(Vector3(5086.966f, 5782.642f, 73.29456f), Vector3(0, 0, 93)), + owning_building_guid = 72, + door_guid = 653 + ) + LocalObject( + 1473, + IFFLock.Constructor(Vector3(5091.533f, 5761.355f, 43.18456f), Vector3(0, 0, 273)), + owning_building_guid = 72, + door_guid = 1057 + ) LocalObject(1904, Locker.Constructor(Vector3(5062.79f, 5765.414f, 49.60956f)), owning_building_guid = 72) LocalObject(1905, Locker.Constructor(Vector3(5062.85f, 5766.562f, 49.60956f)), owning_building_guid = 72) LocalObject(1906, Locker.Constructor(Vector3(5062.91f, 5767.707f, 49.60956f)), owning_building_guid = 72) @@ -2230,72 +6393,290 @@ object Map03 { // Cyssor LocalObject(1913, Locker.Constructor(Vector3(5082.271f, 5754.549f, 41.84856f)), owning_building_guid = 72) LocalObject(1914, Locker.Constructor(Vector3(5082.341f, 5755.883f, 41.84856f)), owning_building_guid = 72) LocalObject(1915, Locker.Constructor(Vector3(5082.411f, 5757.205f, 41.84856f)), owning_building_guid = 72) - LocalObject(212, Terminal.Constructor(Vector3(5084.306f, 5774.719f, 72.45156f), air_vehicle_terminal), owning_building_guid = 72) - LocalObject(2317, VehicleSpawnPad.Constructor(Vector3(5104.737f, 5769.159f, 69.32656f), mb_pad_creation, Vector3(0, 0, 93)), owning_building_guid = 72, terminal_guid = 212) - LocalObject(213, Terminal.Constructor(Vector3(5084.931f, 5786.634f, 72.45156f), air_vehicle_terminal), owning_building_guid = 72) - LocalObject(2318, VehicleSpawnPad.Constructor(Vector3(5105.837f, 5790.148f, 69.32656f), mb_pad_creation, Vector3(0, 0, 93)), owning_building_guid = 72, terminal_guid = 213) - LocalObject(2473, Terminal.Constructor(Vector3(5068.069f, 5765.507f, 50.93856f), order_terminal), owning_building_guid = 72) - LocalObject(2474, Terminal.Constructor(Vector3(5071.794f, 5765.312f, 50.93856f), order_terminal), owning_building_guid = 72) - LocalObject(2475, Terminal.Constructor(Vector3(5075.578f, 5765.113f, 50.93856f), order_terminal), owning_building_guid = 72) - LocalObject(2476, Terminal.Constructor(Vector3(5083.362f, 5788.334f, 63.17856f), order_terminal), owning_building_guid = 72) - LocalObject(3449, Terminal.Constructor(Vector3(5015.981f, 5819.019f, 50.90556f), spawn_terminal), owning_building_guid = 72) - LocalObject(3452, Terminal.Constructor(Vector3(5062.24f, 5784.55f, 43.40556f), spawn_terminal), owning_building_guid = 72) - LocalObject(3453, Terminal.Constructor(Vector3(5064.625f, 5779.389f, 51.48256f), spawn_terminal), owning_building_guid = 72) - LocalObject(3454, Terminal.Constructor(Vector3(5071.908f, 5779.012f, 51.48256f), spawn_terminal), owning_building_guid = 72) - LocalObject(3455, Terminal.Constructor(Vector3(5079.186f, 5778.627f, 51.48256f), spawn_terminal), owning_building_guid = 72) - LocalObject(3456, Terminal.Constructor(Vector3(5087.718f, 5753.875f, 63.43056f), spawn_terminal), owning_building_guid = 72) - LocalObject(3458, Terminal.Constructor(Vector3(5112.45f, 5775.32f, 68.77156f), spawn_terminal), owning_building_guid = 72) - LocalObject(3726, Terminal.Constructor(Vector3(5071.991f, 5840.062f, 42.56256f), ground_vehicle_terminal), owning_building_guid = 72) - LocalObject(2316, VehicleSpawnPad.Constructor(Vector3(5082.895f, 5839.542f, 34.28556f), mb_pad_creation, Vector3(0, 0, 93)), owning_building_guid = 72, terminal_guid = 3726) + LocalObject( + 212, + Terminal.Constructor(Vector3(5084.306f, 5774.719f, 72.45156f), air_vehicle_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2317, + VehicleSpawnPad.Constructor(Vector3(5104.737f, 5769.159f, 69.32656f), mb_pad_creation, Vector3(0, 0, 93)), + owning_building_guid = 72, + terminal_guid = 212 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(5084.931f, 5786.634f, 72.45156f), air_vehicle_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2318, + VehicleSpawnPad.Constructor(Vector3(5105.837f, 5790.148f, 69.32656f), mb_pad_creation, Vector3(0, 0, 93)), + owning_building_guid = 72, + terminal_guid = 213 + ) + LocalObject( + 2473, + Terminal.Constructor(Vector3(5068.069f, 5765.507f, 50.93856f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2474, + Terminal.Constructor(Vector3(5071.794f, 5765.312f, 50.93856f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2475, + Terminal.Constructor(Vector3(5075.578f, 5765.113f, 50.93856f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2476, + Terminal.Constructor(Vector3(5083.362f, 5788.334f, 63.17856f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3449, + Terminal.Constructor(Vector3(5015.981f, 5819.019f, 50.90556f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3452, + Terminal.Constructor(Vector3(5062.24f, 5784.55f, 43.40556f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3453, + Terminal.Constructor(Vector3(5064.625f, 5779.389f, 51.48256f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3454, + Terminal.Constructor(Vector3(5071.908f, 5779.012f, 51.48256f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3455, + Terminal.Constructor(Vector3(5079.186f, 5778.627f, 51.48256f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3456, + Terminal.Constructor(Vector3(5087.718f, 5753.875f, 63.43056f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3458, + Terminal.Constructor(Vector3(5112.45f, 5775.32f, 68.77156f), spawn_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3726, + Terminal.Constructor(Vector3(5071.991f, 5840.062f, 42.56256f), ground_vehicle_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2316, + VehicleSpawnPad.Constructor(Vector3(5082.895f, 5839.542f, 34.28556f), mb_pad_creation, Vector3(0, 0, 93)), + owning_building_guid = 72, + terminal_guid = 3726 + ) LocalObject(3227, ResourceSilo.Constructor(Vector3(5139.278f, 5726.629f, 63.75656f)), owning_building_guid = 72) - LocalObject(3305, SpawnTube.Constructor(Vector3(5066.102f, 5780.051f, 49.34856f), Vector3(0, 0, 93)), owning_building_guid = 72) - LocalObject(3306, SpawnTube.Constructor(Vector3(5073.383f, 5779.669f, 49.34856f), Vector3(0, 0, 93)), owning_building_guid = 72) - LocalObject(3307, SpawnTube.Constructor(Vector3(5080.661f, 5779.288f, 49.34856f), Vector3(0, 0, 93)), owning_building_guid = 72) - LocalObject(2344, ProximityTerminal.Constructor(Vector3(5072.792f, 5788.887f, 61.84556f), medical_terminal), owning_building_guid = 72) - LocalObject(2345, ProximityTerminal.Constructor(Vector3(5081.54f, 5750.992f, 41.84856f), medical_terminal), owning_building_guid = 72) - LocalObject(2741, ProximityTerminal.Constructor(Vector3(5027.403f, 5768.76f, 64.95656f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2742, Terminal.Constructor(Vector3(5027.403f, 5768.76f, 64.95656f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2744, ProximityTerminal.Constructor(Vector3(5045.072f, 5784.011f, 72.19556f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2745, Terminal.Constructor(Vector3(5045.072f, 5784.011f, 72.19556f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2747, ProximityTerminal.Constructor(Vector3(5064.668f, 5730.304f, 67.40056f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2748, Terminal.Constructor(Vector3(5064.668f, 5730.304f, 67.40056f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2750, ProximityTerminal.Constructor(Vector3(5080.564f, 5723.169f, 64.95656f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2751, Terminal.Constructor(Vector3(5080.564f, 5723.169f, 64.95656f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2753, ProximityTerminal.Constructor(Vector3(5088.902f, 5852.486f, 64.94356f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2754, Terminal.Constructor(Vector3(5088.902f, 5852.486f, 64.94356f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2756, ProximityTerminal.Constructor(Vector3(5103.991f, 5831.391f, 67.29856f), pad_landing_frame), owning_building_guid = 72) - LocalObject(2757, Terminal.Constructor(Vector3(5103.991f, 5831.391f, 67.29856f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(3156, ProximityTerminal.Constructor(Vector3(5014.266f, 5736.3f, 56.49856f), repair_silo), owning_building_guid = 72) - LocalObject(3157, Terminal.Constructor(Vector3(5014.266f, 5736.3f, 56.49856f), ground_rearm_terminal), owning_building_guid = 72) - LocalObject(3168, ProximityTerminal.Constructor(Vector3(5151.563f, 5787.513f, 56.47706f), repair_silo), owning_building_guid = 72) - LocalObject(3169, Terminal.Constructor(Vector3(5151.563f, 5787.513f, 56.47706f), ground_rearm_terminal), owning_building_guid = 72) - LocalObject(2245, FacilityTurret.Constructor(Vector3(5006.284f, 5709.163f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 3305, + SpawnTube.Constructor(Vector3(5066.102f, 5780.051f, 49.34856f), Vector3(0, 0, 93)), + owning_building_guid = 72 + ) + LocalObject( + 3306, + SpawnTube.Constructor(Vector3(5073.383f, 5779.669f, 49.34856f), Vector3(0, 0, 93)), + owning_building_guid = 72 + ) + LocalObject( + 3307, + SpawnTube.Constructor(Vector3(5080.661f, 5779.288f, 49.34856f), Vector3(0, 0, 93)), + owning_building_guid = 72 + ) + LocalObject( + 2344, + ProximityTerminal.Constructor(Vector3(5072.792f, 5788.887f, 61.84556f), medical_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2345, + ProximityTerminal.Constructor(Vector3(5081.54f, 5750.992f, 41.84856f), medical_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2741, + ProximityTerminal.Constructor(Vector3(5027.403f, 5768.76f, 64.95656f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2742, + Terminal.Constructor(Vector3(5027.403f, 5768.76f, 64.95656f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2744, + ProximityTerminal.Constructor(Vector3(5045.072f, 5784.011f, 72.19556f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2745, + Terminal.Constructor(Vector3(5045.072f, 5784.011f, 72.19556f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2747, + ProximityTerminal.Constructor(Vector3(5064.668f, 5730.304f, 67.40056f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2748, + Terminal.Constructor(Vector3(5064.668f, 5730.304f, 67.40056f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2750, + ProximityTerminal.Constructor(Vector3(5080.564f, 5723.169f, 64.95656f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2751, + Terminal.Constructor(Vector3(5080.564f, 5723.169f, 64.95656f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2753, + ProximityTerminal.Constructor(Vector3(5088.902f, 5852.486f, 64.94356f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2754, + Terminal.Constructor(Vector3(5088.902f, 5852.486f, 64.94356f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2756, + ProximityTerminal.Constructor(Vector3(5103.991f, 5831.391f, 67.29856f), pad_landing_frame), + owning_building_guid = 72 + ) + LocalObject( + 2757, + Terminal.Constructor(Vector3(5103.991f, 5831.391f, 67.29856f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3156, + ProximityTerminal.Constructor(Vector3(5014.266f, 5736.3f, 56.49856f), repair_silo), + owning_building_guid = 72 + ) + LocalObject( + 3157, + Terminal.Constructor(Vector3(5014.266f, 5736.3f, 56.49856f), ground_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 3168, + ProximityTerminal.Constructor(Vector3(5151.563f, 5787.513f, 56.47706f), repair_silo), + owning_building_guid = 72 + ) + LocalObject( + 3169, + Terminal.Constructor(Vector3(5151.563f, 5787.513f, 56.47706f), ground_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2245, + FacilityTurret.Constructor(Vector3(5006.284f, 5709.163f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2245, 5087) - LocalObject(2247, FacilityTurret.Constructor(Vector3(5014.914f, 5873.678f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 2247, + FacilityTurret.Constructor(Vector3(5014.914f, 5873.678f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2247, 5088) - LocalObject(2252, FacilityTurret.Constructor(Vector3(5070.557f, 5698.057f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 2252, + FacilityTurret.Constructor(Vector3(5070.557f, 5698.057f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2252, 5089) - LocalObject(2253, FacilityTurret.Constructor(Vector3(5143.836f, 5701.955f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 2253, + FacilityTurret.Constructor(Vector3(5143.836f, 5701.955f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2253, 5090) - LocalObject(2257, FacilityTurret.Constructor(Vector3(5208.426f, 5779.233f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 2257, + FacilityTurret.Constructor(Vector3(5208.426f, 5779.233f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2257, 5091) - LocalObject(2258, FacilityTurret.Constructor(Vector3(5213.121f, 5868.805f, 65.24756f), manned_turret), owning_building_guid = 72) + LocalObject( + 2258, + FacilityTurret.Constructor(Vector3(5213.121f, 5868.805f, 65.24756f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(2258, 5092) - LocalObject(2889, Painbox.Constructor(Vector3(5104.865f, 5764.497f, 45.32186f), painbox), owning_building_guid = 72) - LocalObject(2906, Painbox.Constructor(Vector3(5072.172f, 5771.122f, 53.61846f), painbox_continuous), owning_building_guid = 72) - LocalObject(2923, Painbox.Constructor(Vector3(5090.047f, 5763.308f, 45.00796f), painbox_door_radius), owning_building_guid = 72) - LocalObject(2960, Painbox.Constructor(Vector3(5059.35f, 5773.594f, 51.47646f), painbox_door_radius_continuous), owning_building_guid = 72) - LocalObject(2961, Painbox.Constructor(Vector3(5078.745f, 5755.948f, 52.93086f), painbox_door_radius_continuous), owning_building_guid = 72) - LocalObject(2962, Painbox.Constructor(Vector3(5086.76f, 5771.33f, 52.02476f), painbox_door_radius_continuous), owning_building_guid = 72) + LocalObject( + 2889, + Painbox.Constructor(Vector3(5104.865f, 5764.497f, 45.32186f), painbox), + owning_building_guid = 72 + ) + LocalObject( + 2906, + Painbox.Constructor(Vector3(5072.172f, 5771.122f, 53.61846f), painbox_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2923, + Painbox.Constructor(Vector3(5090.047f, 5763.308f, 45.00796f), painbox_door_radius), + owning_building_guid = 72 + ) + LocalObject( + 2960, + Painbox.Constructor(Vector3(5059.35f, 5773.594f, 51.47646f), painbox_door_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2961, + Painbox.Constructor(Vector3(5078.745f, 5755.948f, 52.93086f), painbox_door_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2962, + Painbox.Constructor(Vector3(5086.76f, 5771.33f, 52.02476f), painbox_door_radius_continuous), + owning_building_guid = 72 + ) LocalObject(391, Generator.Constructor(Vector3(5108.091f, 5762.086f, 40.55456f)), owning_building_guid = 72) - LocalObject(374, Terminal.Constructor(Vector3(5099.908f, 5762.468f, 41.84856f), gen_control), owning_building_guid = 72) + LocalObject( + 374, + Terminal.Constructor(Vector3(5099.908f, 5762.468f, 41.84856f), gen_control), + owning_building_guid = 72 + ) } Building14() def Building14(): Unit = { // Name: Orisha Type: tech_plant GUID: 75, MapID: 14 - LocalBuilding("Orisha", 75, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6976f, 1240f, 56.97867f), Vector3(0f, 0f, 84f), tech_plant))) - LocalObject(292, CaptureTerminal.Constructor(Vector3(7020.342f, 1240.099f, 72.07867f), capture_terminal), owning_building_guid = 75) + LocalBuilding( + "Orisha", + 75, + 14, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(6976f, 1240f, 56.97867f), Vector3(0f, 0f, 84f), tech_plant) + ) + ) + LocalObject( + 292, + CaptureTerminal.Constructor(Vector3(7020.342f, 1240.099f, 72.07867f), capture_terminal), + owning_building_guid = 75 + ) LocalObject(767, Door.Constructor(Vector3(6946.785f, 1171.217f, 66.48367f)), owning_building_guid = 75) LocalObject(768, Door.Constructor(Vector3(6947.472f, 1267.693f, 58.52067f)), owning_building_guid = 75) LocalObject(769, Door.Constructor(Vector3(6949.374f, 1285.786f, 66.48367f)), owning_building_guid = 75) @@ -2334,16 +6715,66 @@ object Map03 { // Cyssor LocalObject(3604, Door.Constructor(Vector3(7004.858f, 1249.71f, 51.43267f)), owning_building_guid = 75) LocalObject(3605, Door.Constructor(Vector3(7012.107f, 1248.948f, 51.43267f)), owning_building_guid = 75) LocalObject(3606, Door.Constructor(Vector3(7019.36f, 1248.185f, 51.43267f)), owning_building_guid = 75) - LocalObject(1266, IFFLock.Constructor(Vector3(7028.664f, 1278.061f, 58.55867f), Vector3(0, 0, 96)), owning_building_guid = 75, door_guid = 1202) - LocalObject(1271, IFFLock.Constructor(Vector3(6929.411f, 1201.917f, 58.66667f), Vector3(0, 0, 276)), owning_building_guid = 75, door_guid = 812) - LocalObject(1558, IFFLock.Constructor(Vector3(6995.941f, 1267.639f, 43.41467f), Vector3(0, 0, 96)), owning_building_guid = 75, door_guid = 1147) - LocalObject(1559, IFFLock.Constructor(Vector3(6999.387f, 1246.143f, 73.52467f), Vector3(0, 0, 276)), owning_building_guid = 75, door_guid = 773) - LocalObject(1560, IFFLock.Constructor(Vector3(7000.989f, 1255.903f, 50.91467f), Vector3(0, 0, 276)), owning_building_guid = 75, door_guid = 1149) - LocalObject(1561, IFFLock.Constructor(Vector3(7014.264f, 1230.376f, 73.41467f), Vector3(0, 0, 276)), owning_building_guid = 75, door_guid = 1156) - LocalObject(1562, IFFLock.Constructor(Vector3(7018.042f, 1255.185f, 73.52467f), Vector3(0, 0, 96)), owning_building_guid = 75, door_guid = 774) - LocalObject(1563, IFFLock.Constructor(Vector3(7024.569f, 1266.126f, 43.41467f), Vector3(0, 0, 186)), owning_building_guid = 75, door_guid = 1158) - LocalObject(1564, IFFLock.Constructor(Vector3(7026.797f, 1256.352f, 50.91467f), Vector3(0, 0, 96)), owning_building_guid = 75, door_guid = 1160) - LocalObject(1571, IFFLock.Constructor(Vector3(7073.221f, 1188.743f, 58.53067f), Vector3(0, 0, 186)), owning_building_guid = 75, door_guid = 785) + LocalObject( + 1266, + IFFLock.Constructor(Vector3(7028.664f, 1278.061f, 58.55867f), Vector3(0, 0, 96)), + owning_building_guid = 75, + door_guid = 1202 + ) + LocalObject( + 1271, + IFFLock.Constructor(Vector3(6929.411f, 1201.917f, 58.66667f), Vector3(0, 0, 276)), + owning_building_guid = 75, + door_guid = 812 + ) + LocalObject( + 1558, + IFFLock.Constructor(Vector3(6995.941f, 1267.639f, 43.41467f), Vector3(0, 0, 96)), + owning_building_guid = 75, + door_guid = 1147 + ) + LocalObject( + 1559, + IFFLock.Constructor(Vector3(6999.387f, 1246.143f, 73.52467f), Vector3(0, 0, 276)), + owning_building_guid = 75, + door_guid = 773 + ) + LocalObject( + 1560, + IFFLock.Constructor(Vector3(7000.989f, 1255.903f, 50.91467f), Vector3(0, 0, 276)), + owning_building_guid = 75, + door_guid = 1149 + ) + LocalObject( + 1561, + IFFLock.Constructor(Vector3(7014.264f, 1230.376f, 73.41467f), Vector3(0, 0, 276)), + owning_building_guid = 75, + door_guid = 1156 + ) + LocalObject( + 1562, + IFFLock.Constructor(Vector3(7018.042f, 1255.185f, 73.52467f), Vector3(0, 0, 96)), + owning_building_guid = 75, + door_guid = 774 + ) + LocalObject( + 1563, + IFFLock.Constructor(Vector3(7024.569f, 1266.126f, 43.41467f), Vector3(0, 0, 186)), + owning_building_guid = 75, + door_guid = 1158 + ) + LocalObject( + 1564, + IFFLock.Constructor(Vector3(7026.797f, 1256.352f, 50.91467f), Vector3(0, 0, 96)), + owning_building_guid = 75, + door_guid = 1160 + ) + LocalObject( + 1571, + IFFLock.Constructor(Vector3(7073.221f, 1188.743f, 58.53067f), Vector3(0, 0, 186)), + owning_building_guid = 75, + door_guid = 785 + ) LocalObject(2062, Locker.Constructor(Vector3(7005.268f, 1271.306f, 42.07867f)), owning_building_guid = 75) LocalObject(2063, Locker.Constructor(Vector3(7005.406f, 1272.623f, 42.07867f)), owning_building_guid = 75) LocalObject(2064, Locker.Constructor(Vector3(7005.546f, 1273.952f, 42.07867f)), owning_building_guid = 75) @@ -2356,82 +6787,316 @@ object Map03 { // Cyssor LocalObject(2071, Locker.Constructor(Vector3(7024.192f, 1259.798f, 49.83967f)), owning_building_guid = 75) LocalObject(2072, Locker.Constructor(Vector3(7024.312f, 1260.939f, 49.83967f)), owning_building_guid = 75) LocalObject(2073, Locker.Constructor(Vector3(7024.433f, 1262.081f, 49.83967f)), owning_building_guid = 75) - LocalObject(214, Terminal.Constructor(Vector3(7001.211f, 1242.049f, 72.68167f), air_vehicle_terminal), owning_building_guid = 75) - LocalObject(2323, VehicleSpawnPad.Constructor(Vector3(6980.149f, 1239.634f, 69.55667f), mb_pad_creation, Vector3(0, 0, -84)), owning_building_guid = 75, terminal_guid = 214) - LocalObject(215, Terminal.Constructor(Vector3(7002.458f, 1253.916f, 72.68167f), air_vehicle_terminal), owning_building_guid = 75) - LocalObject(2324, VehicleSpawnPad.Constructor(Vector3(6982.347f, 1260.537f, 69.55667f), mb_pad_creation, Vector3(0, 0, -84)), owning_building_guid = 75, terminal_guid = 215) - LocalObject(2527, Terminal.Constructor(Vector3(7002.688f, 1240.27f, 63.40867f), order_terminal), owning_building_guid = 75) - LocalObject(2528, Terminal.Constructor(Vector3(7011.677f, 1263.051f, 51.16867f), order_terminal), owning_building_guid = 75) - LocalObject(2529, Terminal.Constructor(Vector3(7015.445f, 1262.655f, 51.16867f), order_terminal), owning_building_guid = 75) - LocalObject(2530, Terminal.Constructor(Vector3(7019.156f, 1262.265f, 51.16867f), order_terminal), owning_building_guid = 75) - LocalObject(3484, Terminal.Constructor(Vector3(6974.322f, 1254.788f, 69.00167f), spawn_terminal), owning_building_guid = 75) - LocalObject(3485, Terminal.Constructor(Vector3(7000.142f, 1274.91f, 63.66067f), spawn_terminal), owning_building_guid = 75) - LocalObject(3486, Terminal.Constructor(Vector3(7007.367f, 1249.745f, 51.71267f), spawn_terminal), owning_building_guid = 75) - LocalObject(3487, Terminal.Constructor(Vector3(7014.615f, 1248.98f, 51.71267f), spawn_terminal), owning_building_guid = 75) - LocalObject(3488, Terminal.Constructor(Vector3(7021.868f, 1248.222f, 51.71267f), spawn_terminal), owning_building_guid = 75) - LocalObject(3489, Terminal.Constructor(Vector3(7023.979f, 1242.943f, 43.63567f), spawn_terminal), owning_building_guid = 75) - LocalObject(3490, Terminal.Constructor(Vector3(7068.372f, 1206.101f, 51.13567f), spawn_terminal), owning_building_guid = 75) - LocalObject(3731, Terminal.Constructor(Vector3(7011.337f, 1188.018f, 42.79267f), ground_vehicle_terminal), owning_building_guid = 75) - LocalObject(2325, VehicleSpawnPad.Constructor(Vector3(7000.476f, 1189.108f, 34.51567f), mb_pad_creation, Vector3(0, 0, -84)), owning_building_guid = 75, terminal_guid = 3731) + LocalObject( + 214, + Terminal.Constructor(Vector3(7001.211f, 1242.049f, 72.68167f), air_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2323, + VehicleSpawnPad.Constructor(Vector3(6980.149f, 1239.634f, 69.55667f), mb_pad_creation, Vector3(0, 0, -84)), + owning_building_guid = 75, + terminal_guid = 214 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(7002.458f, 1253.916f, 72.68167f), air_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2324, + VehicleSpawnPad.Constructor(Vector3(6982.347f, 1260.537f, 69.55667f), mb_pad_creation, Vector3(0, 0, -84)), + owning_building_guid = 75, + terminal_guid = 215 + ) + LocalObject( + 2527, + Terminal.Constructor(Vector3(7002.688f, 1240.27f, 63.40867f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2528, + Terminal.Constructor(Vector3(7011.677f, 1263.051f, 51.16867f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2529, + Terminal.Constructor(Vector3(7015.445f, 1262.655f, 51.16867f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2530, + Terminal.Constructor(Vector3(7019.156f, 1262.265f, 51.16867f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3484, + Terminal.Constructor(Vector3(6974.322f, 1254.788f, 69.00167f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3485, + Terminal.Constructor(Vector3(7000.142f, 1274.91f, 63.66067f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3486, + Terminal.Constructor(Vector3(7007.367f, 1249.745f, 51.71267f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3487, + Terminal.Constructor(Vector3(7014.615f, 1248.98f, 51.71267f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3488, + Terminal.Constructor(Vector3(7021.868f, 1248.222f, 51.71267f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3489, + Terminal.Constructor(Vector3(7023.979f, 1242.943f, 43.63567f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3490, + Terminal.Constructor(Vector3(7068.372f, 1206.101f, 51.13567f), spawn_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3731, + Terminal.Constructor(Vector3(7011.337f, 1188.018f, 42.79267f), ground_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2325, + VehicleSpawnPad.Constructor(Vector3(7000.476f, 1189.108f, 34.51567f), mb_pad_creation, Vector3(0, 0, -84)), + owning_building_guid = 75, + terminal_guid = 3731 + ) LocalObject(3231, ResourceSilo.Constructor(Vector3(6950.078f, 1304.817f, 63.98667f)), owning_building_guid = 75) - LocalObject(3340, SpawnTube.Constructor(Vector3(7005.859f, 1249.162f, 49.57867f), Vector3(0, 0, 276)), owning_building_guid = 75) - LocalObject(3341, SpawnTube.Constructor(Vector3(7013.107f, 1248.4f, 49.57867f), Vector3(0, 0, 276)), owning_building_guid = 75) - LocalObject(3342, SpawnTube.Constructor(Vector3(7020.358f, 1247.638f, 49.57867f), Vector3(0, 0, 276)), owning_building_guid = 75) - LocalObject(2352, ProximityTerminal.Constructor(Vector3(7006.463f, 1277.465f, 42.07867f), medical_terminal), owning_building_guid = 75) - LocalObject(2353, ProximityTerminal.Constructor(Vector3(7013.215f, 1239.164f, 62.07567f), medical_terminal), owning_building_guid = 75) - LocalObject(2807, ProximityTerminal.Constructor(Vector3(6979.834f, 1198.351f, 67.52867f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2808, Terminal.Constructor(Vector3(6979.834f, 1198.351f, 67.52867f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2810, ProximityTerminal.Constructor(Vector3(6993.798f, 1176.496f, 65.17367f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2811, Terminal.Constructor(Vector3(6993.798f, 1176.496f, 65.17367f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2813, ProximityTerminal.Constructor(Vector3(7008.894f, 1305.199f, 65.18667f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2814, Terminal.Constructor(Vector3(7008.894f, 1305.199f, 65.18667f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2816, ProximityTerminal.Constructor(Vector3(7024.394f, 1297.242f, 67.63067f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2817, Terminal.Constructor(Vector3(7024.394f, 1297.242f, 67.63067f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2819, ProximityTerminal.Constructor(Vector3(7041.153f, 1242.583f, 72.42567f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2820, Terminal.Constructor(Vector3(7041.153f, 1242.583f, 72.42567f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2822, ProximityTerminal.Constructor(Vector3(7059.595f, 1256.888f, 65.18667f), pad_landing_frame), owning_building_guid = 75) - LocalObject(2823, Terminal.Constructor(Vector3(7059.595f, 1256.888f, 65.18667f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(3200, ProximityTerminal.Constructor(Vector3(6934.624f, 1244.659f, 56.70717f), repair_silo), owning_building_guid = 75) - LocalObject(3201, Terminal.Constructor(Vector3(6934.624f, 1244.659f, 56.70717f), ground_rearm_terminal), owning_building_guid = 75) - LocalObject(3204, ProximityTerminal.Constructor(Vector3(7074.414f, 1288.616f, 56.72867f), repair_silo), owning_building_guid = 75) - LocalObject(3205, Terminal.Constructor(Vector3(7074.414f, 1288.616f, 56.72867f), ground_rearm_terminal), owning_building_guid = 75) - LocalObject(2288, FacilityTurret.Constructor(Vector3(6868.896f, 1166.7f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 3340, + SpawnTube.Constructor(Vector3(7005.859f, 1249.162f, 49.57867f), Vector3(0, 0, 276)), + owning_building_guid = 75 + ) + LocalObject( + 3341, + SpawnTube.Constructor(Vector3(7013.107f, 1248.4f, 49.57867f), Vector3(0, 0, 276)), + owning_building_guid = 75 + ) + LocalObject( + 3342, + SpawnTube.Constructor(Vector3(7020.358f, 1247.638f, 49.57867f), Vector3(0, 0, 276)), + owning_building_guid = 75 + ) + LocalObject( + 2352, + ProximityTerminal.Constructor(Vector3(7006.463f, 1277.465f, 42.07867f), medical_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2353, + ProximityTerminal.Constructor(Vector3(7013.215f, 1239.164f, 62.07567f), medical_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2807, + ProximityTerminal.Constructor(Vector3(6979.834f, 1198.351f, 67.52867f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2808, + Terminal.Constructor(Vector3(6979.834f, 1198.351f, 67.52867f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2810, + ProximityTerminal.Constructor(Vector3(6993.798f, 1176.496f, 65.17367f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2811, + Terminal.Constructor(Vector3(6993.798f, 1176.496f, 65.17367f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2813, + ProximityTerminal.Constructor(Vector3(7008.894f, 1305.199f, 65.18667f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2814, + Terminal.Constructor(Vector3(7008.894f, 1305.199f, 65.18667f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2816, + ProximityTerminal.Constructor(Vector3(7024.394f, 1297.242f, 67.63067f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2817, + Terminal.Constructor(Vector3(7024.394f, 1297.242f, 67.63067f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2819, + ProximityTerminal.Constructor(Vector3(7041.153f, 1242.583f, 72.42567f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2820, + Terminal.Constructor(Vector3(7041.153f, 1242.583f, 72.42567f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2822, + ProximityTerminal.Constructor(Vector3(7059.595f, 1256.888f, 65.18667f), pad_landing_frame), + owning_building_guid = 75 + ) + LocalObject( + 2823, + Terminal.Constructor(Vector3(7059.595f, 1256.888f, 65.18667f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3200, + ProximityTerminal.Constructor(Vector3(6934.624f, 1244.659f, 56.70717f), repair_silo), + owning_building_guid = 75 + ) + LocalObject( + 3201, + Terminal.Constructor(Vector3(6934.624f, 1244.659f, 56.70717f), ground_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 3204, + ProximityTerminal.Constructor(Vector3(7074.414f, 1288.616f, 56.72867f), repair_silo), + owning_building_guid = 75 + ) + LocalObject( + 3205, + Terminal.Constructor(Vector3(7074.414f, 1288.616f, 56.72867f), ground_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2288, + FacilityTurret.Constructor(Vector3(6868.896f, 1166.7f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2288, 5093) - LocalObject(2289, FacilityTurret.Constructor(Vector3(6878.272f, 1255.903f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 2289, + FacilityTurret.Constructor(Vector3(6878.272f, 1255.903f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2289, 5094) - LocalObject(2292, FacilityTurret.Constructor(Vector3(6946.818f, 1329.696f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 2292, + FacilityTurret.Constructor(Vector3(6946.818f, 1329.696f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2292, 5095) - LocalObject(2293, FacilityTurret.Constructor(Vector3(7020.201f, 1329.752f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 2293, + FacilityTurret.Constructor(Vector3(7020.201f, 1329.752f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2293, 5096) - LocalObject(2294, FacilityTurret.Constructor(Vector3(7066.576f, 1151.46f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 2294, + FacilityTurret.Constructor(Vector3(7066.576f, 1151.46f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2294, 5097) - LocalObject(2295, FacilityTurret.Constructor(Vector3(7083.804f, 1315.298f, 65.47767f), manned_turret), owning_building_guid = 75) + LocalObject( + 2295, + FacilityTurret.Constructor(Vector3(7083.804f, 1315.298f, 65.47767f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(2295, 5098) LocalObject(2894, Painbox.Constructor(Vector3(6982.463f, 1265.2f, 45.55197f), painbox), owning_building_guid = 75) - LocalObject(2911, Painbox.Constructor(Vector3(7014.764f, 1256.873f, 53.84857f), painbox_continuous), owning_building_guid = 75) - LocalObject(2928, Painbox.Constructor(Vector3(6997.323f, 1265.611f, 45.23807f), painbox_door_radius), owning_building_guid = 75) - LocalObject(2975, Painbox.Constructor(Vector3(7000.186f, 1257.428f, 52.25487f), painbox_door_radius_continuous), owning_building_guid = 75) - LocalObject(2976, Painbox.Constructor(Vector3(7008.995f, 1272.37f, 53.16097f), painbox_door_radius_continuous), owning_building_guid = 75) - LocalObject(2977, Painbox.Constructor(Vector3(7027.439f, 1253.733f, 51.70657f), painbox_door_radius_continuous), owning_building_guid = 75) + LocalObject( + 2911, + Painbox.Constructor(Vector3(7014.764f, 1256.873f, 53.84857f), painbox_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2928, + Painbox.Constructor(Vector3(6997.323f, 1265.611f, 45.23807f), painbox_door_radius), + owning_building_guid = 75 + ) + LocalObject( + 2975, + Painbox.Constructor(Vector3(7000.186f, 1257.428f, 52.25487f), painbox_door_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2976, + Painbox.Constructor(Vector3(7008.995f, 1272.37f, 53.16097f), painbox_door_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2977, + Painbox.Constructor(Vector3(7027.439f, 1253.733f, 51.70657f), painbox_door_radius_continuous), + owning_building_guid = 75 + ) LocalObject(396, Generator.Constructor(Vector3(6979.367f, 1267.775f, 40.78467f)), owning_building_guid = 75) - LocalObject(379, Terminal.Constructor(Vector3(6987.519f, 1266.966f, 42.07867f), gen_control), owning_building_guid = 75) + LocalObject( + 379, + Terminal.Constructor(Vector3(6987.519f, 1266.966f, 42.07867f), gen_control), + owning_building_guid = 75 + ) } Building22() def Building22(): Unit = { // Name: S_Wele_Tower Type: tower_a GUID: 78, MapID: 22 - LocalBuilding("S_Wele_Tower", 78, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(618f, 6168f, 60.51881f), Vector3(0f, 0f, 17f), tower_a))) - LocalObject(3351, CaptureTerminal.Constructor(Vector3(633.8923f, 6172.751f, 70.51781f), secondary_capture), owning_building_guid = 78) + LocalBuilding( + "S_Wele_Tower", + 78, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(618f, 6168f, 60.51881f), Vector3(0f, 0f, 17f), tower_a) + ) + ) + LocalObject( + 3351, + CaptureTerminal.Constructor(Vector3(633.8923f, 6172.751f, 70.51781f), secondary_capture), + owning_building_guid = 78 + ) LocalObject(429, Door.Constructor(Vector3(627.1367f, 6179.159f, 62.03981f)), owning_building_guid = 78) LocalObject(430, Door.Constructor(Vector3(627.1367f, 6179.159f, 82.03882f)), owning_building_guid = 78) LocalObject(432, Door.Constructor(Vector3(631.8146f, 6163.858f, 62.03981f)), owning_building_guid = 78) LocalObject(433, Door.Constructor(Vector3(631.8146f, 6163.858f, 82.03882f)), owning_building_guid = 78) LocalObject(3505, Door.Constructor(Vector3(627.1375f, 6176.235f, 51.85481f)), owning_building_guid = 78) LocalObject(3506, Door.Constructor(Vector3(631.9353f, 6160.542f, 51.85481f)), owning_building_guid = 78) - LocalObject(1293, IFFLock.Constructor(Vector3(624.9459f, 6179.337f, 61.97981f), Vector3(0, 0, 343)), owning_building_guid = 78, door_guid = 429) - LocalObject(1294, IFFLock.Constructor(Vector3(624.9459f, 6179.337f, 81.97981f), Vector3(0, 0, 343)), owning_building_guid = 78, door_guid = 430) - LocalObject(1295, IFFLock.Constructor(Vector3(634.0093f, 6163.681f, 61.97981f), Vector3(0, 0, 163)), owning_building_guid = 78, door_guid = 432) - LocalObject(1296, IFFLock.Constructor(Vector3(634.0093f, 6163.681f, 81.97981f), Vector3(0, 0, 163)), owning_building_guid = 78, door_guid = 433) + LocalObject( + 1293, + IFFLock.Constructor(Vector3(624.9459f, 6179.337f, 61.97981f), Vector3(0, 0, 343)), + owning_building_guid = 78, + door_guid = 429 + ) + LocalObject( + 1294, + IFFLock.Constructor(Vector3(624.9459f, 6179.337f, 81.97981f), Vector3(0, 0, 343)), + owning_building_guid = 78, + door_guid = 430 + ) + LocalObject( + 1295, + IFFLock.Constructor(Vector3(634.0093f, 6163.681f, 61.97981f), Vector3(0, 0, 163)), + owning_building_guid = 78, + door_guid = 432 + ) + LocalObject( + 1296, + IFFLock.Constructor(Vector3(634.0093f, 6163.681f, 81.97981f), Vector3(0, 0, 163)), + owning_building_guid = 78, + door_guid = 433 + ) LocalObject(1625, Locker.Constructor(Vector3(631.0644f, 6179.142f, 50.51281f)), owning_building_guid = 78) LocalObject(1626, Locker.Constructor(Vector3(632.343f, 6179.532f, 50.51281f)), owning_building_guid = 78) LocalObject(1627, Locker.Constructor(Vector3(634.8801f, 6180.308f, 50.51281f)), owning_building_guid = 78) @@ -2440,35 +7105,106 @@ object Map03 { // Cyssor LocalObject(1630, Locker.Constructor(Vector3(638.7043f, 6158.606f, 50.51281f)), owning_building_guid = 78) LocalObject(1631, Locker.Constructor(Vector3(641.2748f, 6159.392f, 50.51281f)), owning_building_guid = 78) LocalObject(1632, Locker.Constructor(Vector3(642.6155f, 6159.802f, 50.51281f)), owning_building_guid = 78) - LocalObject(2367, Terminal.Constructor(Vector3(638.1472f, 6175.45f, 51.85081f), order_terminal), owning_building_guid = 78) - LocalObject(2368, Terminal.Constructor(Vector3(639.7204f, 6170.304f, 51.85081f), order_terminal), owning_building_guid = 78) - LocalObject(2369, Terminal.Constructor(Vector3(641.394f, 6164.83f, 51.85081f), order_terminal), owning_building_guid = 78) - LocalObject(3241, SpawnTube.Constructor(Vector3(627.0243f, 6175.101f, 50.00082f), respawn_tube_tower, Vector3(0, 0, 343)), owning_building_guid = 78) - LocalObject(3242, SpawnTube.Constructor(Vector3(631.8221f, 6159.408f, 50.00082f), respawn_tube_tower, Vector3(0, 0, 343)), owning_building_guid = 78) - LocalObject(2166, FacilityTurret.Constructor(Vector3(609.5886f, 6152.143f, 79.46082f), manned_turret), owning_building_guid = 78) + LocalObject( + 2367, + Terminal.Constructor(Vector3(638.1472f, 6175.45f, 51.85081f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2368, + Terminal.Constructor(Vector3(639.7204f, 6170.304f, 51.85081f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2369, + Terminal.Constructor(Vector3(641.394f, 6164.83f, 51.85081f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 3241, + SpawnTube.Constructor(Vector3(627.0243f, 6175.101f, 50.00082f), respawn_tube_tower, Vector3(0, 0, 343)), + owning_building_guid = 78 + ) + LocalObject( + 3242, + SpawnTube.Constructor(Vector3(631.8221f, 6159.408f, 50.00082f), respawn_tube_tower, Vector3(0, 0, 343)), + owning_building_guid = 78 + ) + LocalObject( + 2166, + FacilityTurret.Constructor(Vector3(609.5886f, 6152.143f, 79.46082f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(2166, 5099) - LocalObject(2170, FacilityTurret.Constructor(Vector3(635.9423f, 6186.773f, 79.46082f), manned_turret), owning_building_guid = 78) + LocalObject( + 2170, + FacilityTurret.Constructor(Vector3(635.9423f, 6186.773f, 79.46082f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(2170, 5100) - LocalObject(2984, Painbox.Constructor(Vector3(624.8181f, 6163.604f, 52.01791f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2985, Painbox.Constructor(Vector3(633.5413f, 6174.933f, 50.61881f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2986, Painbox.Constructor(Vector3(637.092f, 6163.613f, 50.61881f), painbox_radius_continuous), owning_building_guid = 78) + LocalObject( + 2984, + Painbox.Constructor(Vector3(624.8181f, 6163.604f, 52.01791f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2985, + Painbox.Constructor(Vector3(633.5413f, 6174.933f, 50.61881f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2986, + Painbox.Constructor(Vector3(637.092f, 6163.613f, 50.61881f), painbox_radius_continuous), + owning_building_guid = 78 + ) } Building61() def Building61(): Unit = { // Name: NE_Wele_Tower Type: tower_a GUID: 79, MapID: 61 - LocalBuilding("NE_Wele_Tower", 79, 61, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(638f, 7206f, 62.16609f), Vector3(0f, 0f, 16f), tower_a))) - LocalObject(3352, CaptureTerminal.Constructor(Vector3(653.9728f, 7210.473f, 72.16509f), secondary_capture), owning_building_guid = 79) + LocalBuilding( + "NE_Wele_Tower", + 79, + 61, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(638f, 7206f, 62.16609f), Vector3(0f, 0f, 16f), tower_a) + ) + ) + LocalObject( + 3352, + CaptureTerminal.Constructor(Vector3(653.9728f, 7210.473f, 72.16509f), secondary_capture), + owning_building_guid = 79 + ) LocalObject(435, Door.Constructor(Vector3(647.33f, 7216.998f, 63.68709f)), owning_building_guid = 79) LocalObject(436, Door.Constructor(Vector3(647.33f, 7216.998f, 83.6861f)), owning_building_guid = 79) LocalObject(438, Door.Constructor(Vector3(651.7402f, 7201.618f, 63.68709f)), owning_building_guid = 79) LocalObject(439, Door.Constructor(Vector3(651.7402f, 7201.618f, 83.6861f)), owning_building_guid = 79) LocalObject(3507, Door.Constructor(Vector3(647.2798f, 7214.075f, 53.50209f)), owning_building_guid = 79) LocalObject(3508, Door.Constructor(Vector3(651.803f, 7198.3f, 53.50209f)), owning_building_guid = 79) - LocalObject(1297, IFFLock.Constructor(Vector3(645.1426f, 7217.214f, 63.62709f), Vector3(0, 0, 344)), owning_building_guid = 79, door_guid = 435) - LocalObject(1298, IFFLock.Constructor(Vector3(645.1426f, 7217.214f, 83.62709f), Vector3(0, 0, 344)), owning_building_guid = 79, door_guid = 436) - LocalObject(1301, IFFLock.Constructor(Vector3(653.9315f, 7201.402f, 63.62709f), Vector3(0, 0, 164)), owning_building_guid = 79, door_guid = 438) - LocalObject(1302, IFFLock.Constructor(Vector3(653.9315f, 7201.402f, 83.62709f), Vector3(0, 0, 164)), owning_building_guid = 79, door_guid = 439) + LocalObject( + 1297, + IFFLock.Constructor(Vector3(645.1426f, 7217.214f, 63.62709f), Vector3(0, 0, 344)), + owning_building_guid = 79, + door_guid = 435 + ) + LocalObject( + 1298, + IFFLock.Constructor(Vector3(645.1426f, 7217.214f, 83.62709f), Vector3(0, 0, 344)), + owning_building_guid = 79, + door_guid = 436 + ) + LocalObject( + 1301, + IFFLock.Constructor(Vector3(653.9315f, 7201.402f, 63.62709f), Vector3(0, 0, 164)), + owning_building_guid = 79, + door_guid = 438 + ) + LocalObject( + 1302, + IFFLock.Constructor(Vector3(653.9315f, 7201.402f, 83.62709f), Vector3(0, 0, 164)), + owning_building_guid = 79, + door_guid = 439 + ) LocalObject(1638, Locker.Constructor(Vector3(651.2568f, 7216.912f, 52.16009f)), owning_building_guid = 79) LocalObject(1639, Locker.Constructor(Vector3(652.5421f, 7217.28f, 52.16009f)), owning_building_guid = 79) LocalObject(1640, Locker.Constructor(Vector3(655.0923f, 7218.012f, 52.16009f)), owning_building_guid = 79) @@ -2477,35 +7213,106 @@ object Map03 { // Cyssor LocalObject(1643, Locker.Constructor(Vector3(658.5372f, 7196.246f, 52.16009f)), owning_building_guid = 79) LocalObject(1644, Locker.Constructor(Vector3(661.121f, 7196.987f, 52.16009f)), owning_building_guid = 79) LocalObject(1645, Locker.Constructor(Vector3(662.4687f, 7197.374f, 52.16009f)), owning_building_guid = 79) - LocalObject(2370, Terminal.Constructor(Vector3(658.2741f, 7213.097f, 53.49809f), order_terminal), owning_building_guid = 79) - LocalObject(2371, Terminal.Constructor(Vector3(659.7573f, 7207.925f, 53.49809f), order_terminal), owning_building_guid = 79) - LocalObject(2372, Terminal.Constructor(Vector3(661.3351f, 7202.422f, 53.49809f), order_terminal), owning_building_guid = 79) - LocalObject(3243, SpawnTube.Constructor(Vector3(647.1469f, 7212.942f, 51.64809f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 79) - LocalObject(3244, SpawnTube.Constructor(Vector3(651.67f, 7197.168f, 51.64809f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 79) - LocalObject(2169, FacilityTurret.Constructor(Vector3(629.3132f, 7190.292f, 81.10809f), manned_turret), owning_building_guid = 79) + LocalObject( + 2370, + Terminal.Constructor(Vector3(658.2741f, 7213.097f, 53.49809f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2371, + Terminal.Constructor(Vector3(659.7573f, 7207.925f, 53.49809f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2372, + Terminal.Constructor(Vector3(661.3351f, 7202.422f, 53.49809f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 3243, + SpawnTube.Constructor(Vector3(647.1469f, 7212.942f, 51.64809f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 79 + ) + LocalObject( + 3244, + SpawnTube.Constructor(Vector3(651.67f, 7197.168f, 51.64809f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 79 + ) + LocalObject( + 2169, + FacilityTurret.Constructor(Vector3(629.3132f, 7190.292f, 81.10809f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(2169, 5101) - LocalObject(2173, FacilityTurret.Constructor(Vector3(656.2672f, 7224.457f, 81.10809f), manned_turret), owning_building_guid = 79) + LocalObject( + 2173, + FacilityTurret.Constructor(Vector3(656.2672f, 7224.457f, 81.10809f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(2173, 5102) - LocalObject(2987, Painbox.Constructor(Vector3(644.7404f, 7201.486f, 53.66519f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2988, Painbox.Constructor(Vector3(653.6599f, 7212.661f, 52.26609f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2989, Painbox.Constructor(Vector3(657.0125f, 7201.28f, 52.26609f), painbox_radius_continuous), owning_building_guid = 79) + LocalObject( + 2987, + Painbox.Constructor(Vector3(644.7404f, 7201.486f, 53.66519f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2988, + Painbox.Constructor(Vector3(653.6599f, 7212.661f, 52.26609f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2989, + Painbox.Constructor(Vector3(657.0125f, 7201.28f, 52.26609f), painbox_radius_continuous), + owning_building_guid = 79 + ) } Building62() def Building62(): Unit = { // Name: S_Nzame_Tower Type: tower_a GUID: 80, MapID: 62 - LocalBuilding("S_Nzame_Tower", 80, 62, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1432f, 2500f, 42.88556f), Vector3(0f, 0f, 334f), tower_a))) - LocalObject(3356, CaptureTerminal.Constructor(Vector3(1446.863f, 2492.636f, 52.88456f), secondary_capture), owning_building_guid = 80) + LocalBuilding( + "S_Nzame_Tower", + 80, + 62, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1432f, 2500f, 42.88556f), Vector3(0f, 0f, 334f), tower_a) + ) + ) + LocalObject( + 3356, + CaptureTerminal.Constructor(Vector3(1446.863f, 2492.636f, 52.88456f), secondary_capture), + owning_building_guid = 80 + ) LocalObject(482, Door.Constructor(Vector3(1439.279f, 2487.549f, 44.40656f)), owning_building_guid = 80) LocalObject(483, Door.Constructor(Vector3(1439.279f, 2487.549f, 64.40556f)), owning_building_guid = 80) LocalObject(484, Door.Constructor(Vector3(1446.292f, 2501.93f, 44.40656f)), owning_building_guid = 80) LocalObject(485, Door.Constructor(Vector3(1446.292f, 2501.93f, 64.40556f)), owning_building_guid = 80) LocalObject(3521, Door.Constructor(Vector3(1437.106f, 2485.042f, 34.22156f)), owning_building_guid = 80) LocalObject(3522, Door.Constructor(Vector3(1444.299f, 2499.791f, 34.22156f)), owning_building_guid = 80) - LocalObject(1338, IFFLock.Constructor(Vector3(1440.763f, 2485.923f, 44.34656f), Vector3(0, 0, 206)), owning_building_guid = 80, door_guid = 482) - LocalObject(1339, IFFLock.Constructor(Vector3(1440.763f, 2485.923f, 64.34656f), Vector3(0, 0, 206)), owning_building_guid = 80, door_guid = 483) - LocalObject(1340, IFFLock.Constructor(Vector3(1444.812f, 2503.554f, 44.34656f), Vector3(0, 0, 26)), owning_building_guid = 80, door_guid = 484) - LocalObject(1341, IFFLock.Constructor(Vector3(1444.812f, 2503.554f, 64.34656f), Vector3(0, 0, 26)), owning_building_guid = 80, door_guid = 485) + LocalObject( + 1338, + IFFLock.Constructor(Vector3(1440.763f, 2485.923f, 44.34656f), Vector3(0, 0, 206)), + owning_building_guid = 80, + door_guid = 482 + ) + LocalObject( + 1339, + IFFLock.Constructor(Vector3(1440.763f, 2485.923f, 64.34656f), Vector3(0, 0, 206)), + owning_building_guid = 80, + door_guid = 483 + ) + LocalObject( + 1340, + IFFLock.Constructor(Vector3(1444.812f, 2503.554f, 44.34656f), Vector3(0, 0, 26)), + owning_building_guid = 80, + door_guid = 484 + ) + LocalObject( + 1341, + IFFLock.Constructor(Vector3(1444.812f, 2503.554f, 64.34656f), Vector3(0, 0, 26)), + owning_building_guid = 80, + door_guid = 485 + ) LocalObject(1694, Locker.Constructor(Vector3(1439.534f, 2479.595f, 32.87956f)), owning_building_guid = 80) LocalObject(1695, Locker.Constructor(Vector3(1440.735f, 2479.009f, 32.87956f)), owning_building_guid = 80) LocalObject(1696, Locker.Constructor(Vector3(1443.151f, 2477.831f, 32.87956f)), owning_building_guid = 80) @@ -2514,35 +7321,106 @@ object Map03 { // Cyssor LocalObject(1699, Locker.Constructor(Vector3(1450.355f, 2498.652f, 32.87956f)), owning_building_guid = 80) LocalObject(1700, Locker.Constructor(Vector3(1452.739f, 2497.489f, 32.87956f)), owning_building_guid = 80) LocalObject(1701, Locker.Constructor(Vector3(1454f, 2496.875f, 32.87956f)), owning_building_guid = 80) - LocalObject(2395, Terminal.Constructor(Vector3(1446.948f, 2481.727f, 34.21756f), order_terminal), owning_building_guid = 80) - LocalObject(2396, Terminal.Constructor(Vector3(1449.457f, 2486.872f, 34.21756f), order_terminal), owning_building_guid = 80) - LocalObject(2397, Terminal.Constructor(Vector3(1451.816f, 2491.708f, 34.21756f), order_terminal), owning_building_guid = 80) - LocalObject(3257, SpawnTube.Constructor(Vector3(1436.249f, 2484.289f, 32.36756f), respawn_tube_tower, Vector3(0, 0, 26)), owning_building_guid = 80) - LocalObject(3258, SpawnTube.Constructor(Vector3(1443.443f, 2499.039f, 32.36756f), respawn_tube_tower, Vector3(0, 0, 26)), owning_building_guid = 80) - LocalObject(2189, FacilityTurret.Constructor(Vector3(1415.034f, 2494.139f, 61.82756f), manned_turret), owning_building_guid = 80) + LocalObject( + 2395, + Terminal.Constructor(Vector3(1446.948f, 2481.727f, 34.21756f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2396, + Terminal.Constructor(Vector3(1449.457f, 2486.872f, 34.21756f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2397, + Terminal.Constructor(Vector3(1451.816f, 2491.708f, 34.21756f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 3257, + SpawnTube.Constructor(Vector3(1436.249f, 2484.289f, 32.36756f), respawn_tube_tower, Vector3(0, 0, 26)), + owning_building_guid = 80 + ) + LocalObject( + 3258, + SpawnTube.Constructor(Vector3(1443.443f, 2499.039f, 32.36756f), respawn_tube_tower, Vector3(0, 0, 26)), + owning_building_guid = 80 + ) + LocalObject( + 2189, + FacilityTurret.Constructor(Vector3(1415.034f, 2494.139f, 61.82756f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(2189, 5103) - LocalObject(2192, FacilityTurret.Constructor(Vector3(1457.925f, 2501.493f, 61.82756f), manned_turret), owning_building_guid = 80) + LocalObject( + 2192, + FacilityTurret.Constructor(Vector3(1457.925f, 2501.493f, 61.82756f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(2192, 5104) - LocalObject(2999, Painbox.Constructor(Vector3(1433.989f, 2492.135f, 34.38466f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(3000, Painbox.Constructor(Vector3(1442.971f, 2483.771f, 32.98556f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(3001, Painbox.Constructor(Vector3(1448.094f, 2494.471f, 32.98556f), painbox_radius_continuous), owning_building_guid = 80) + LocalObject( + 2999, + Painbox.Constructor(Vector3(1433.989f, 2492.135f, 34.38466f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 3000, + Painbox.Constructor(Vector3(1442.971f, 2483.771f, 32.98556f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 3001, + Painbox.Constructor(Vector3(1448.094f, 2494.471f, 32.98556f), painbox_radius_continuous), + owning_building_guid = 80 + ) } Building27() def Building27(): Unit = { // Name: NE_Searhus_Warpgate_Tower Type: tower_a GUID: 81, MapID: 27 - LocalBuilding("NE_Searhus_Warpgate_Tower", 81, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1534f, 1914f, 40.9772f), Vector3(0f, 0f, 350f), tower_a))) - LocalObject(3357, CaptureTerminal.Constructor(Vector3(1550.317f, 1911.018f, 50.9762f), secondary_capture), owning_building_guid = 81) + LocalBuilding( + "NE_Searhus_Warpgate_Tower", + 81, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1534f, 1914f, 40.9772f), Vector3(0f, 0f, 350f), tower_a) + ) + ) + LocalObject( + 3357, + CaptureTerminal.Constructor(Vector3(1550.317f, 1911.018f, 50.9762f), secondary_capture), + owning_building_guid = 81 + ) LocalObject(491, Door.Constructor(Vector3(1544.428f, 1904.038f, 42.4982f)), owning_building_guid = 81) LocalObject(492, Door.Constructor(Vector3(1544.428f, 1904.038f, 62.4972f)), owning_building_guid = 81) LocalObject(494, Door.Constructor(Vector3(1547.207f, 1919.795f, 42.4982f)), owning_building_guid = 81) LocalObject(495, Door.Constructor(Vector3(1547.207f, 1919.795f, 62.4972f)), owning_building_guid = 81) LocalObject(3523, Door.Constructor(Vector3(1543.031f, 1901.029f, 32.3132f)), owning_building_guid = 81) LocalObject(3524, Door.Constructor(Vector3(1545.88f, 1917.189f, 32.3132f)), owning_building_guid = 81) - LocalObject(1344, IFFLock.Constructor(Vector3(1545.336f, 1920.948f, 42.4382f), Vector3(0, 0, 10)), owning_building_guid = 81, door_guid = 494) - LocalObject(1345, IFFLock.Constructor(Vector3(1545.336f, 1920.948f, 62.4382f), Vector3(0, 0, 10)), owning_building_guid = 81, door_guid = 495) - LocalObject(1346, IFFLock.Constructor(Vector3(1546.304f, 1902.884f, 42.4382f), Vector3(0, 0, 190)), owning_building_guid = 81, door_guid = 491) - LocalObject(1347, IFFLock.Constructor(Vector3(1546.304f, 1902.884f, 62.4382f), Vector3(0, 0, 190)), owning_building_guid = 81, door_guid = 492) + LocalObject( + 1344, + IFFLock.Constructor(Vector3(1545.336f, 1920.948f, 42.4382f), Vector3(0, 0, 10)), + owning_building_guid = 81, + door_guid = 494 + ) + LocalObject( + 1345, + IFFLock.Constructor(Vector3(1545.336f, 1920.948f, 62.4382f), Vector3(0, 0, 10)), + owning_building_guid = 81, + door_guid = 495 + ) + LocalObject( + 1346, + IFFLock.Constructor(Vector3(1546.304f, 1902.884f, 42.4382f), Vector3(0, 0, 190)), + owning_building_guid = 81, + door_guid = 491 + ) + LocalObject( + 1347, + IFFLock.Constructor(Vector3(1546.304f, 1902.884f, 62.4382f), Vector3(0, 0, 190)), + owning_building_guid = 81, + door_guid = 492 + ) LocalObject(1702, Locker.Constructor(Vector3(1546.866f, 1896.462f, 30.9712f)), owning_building_guid = 81) LocalObject(1703, Locker.Constructor(Vector3(1548.183f, 1896.23f, 30.9712f)), owning_building_guid = 81) LocalObject(1704, Locker.Constructor(Vector3(1550.699f, 1917.996f, 30.9712f)), owning_building_guid = 81) @@ -2551,35 +7429,106 @@ object Map03 { // Cyssor LocalObject(1707, Locker.Constructor(Vector3(1552.211f, 1895.52f, 30.9712f)), owning_building_guid = 81) LocalObject(1710, Locker.Constructor(Vector3(1554.628f, 1917.303f, 30.9712f)), owning_building_guid = 81) LocalObject(1713, Locker.Constructor(Vector3(1556.009f, 1917.06f, 30.9712f)), owning_building_guid = 81) - LocalObject(2399, Terminal.Constructor(Vector3(1553.405f, 1900.555f, 32.3092f), order_terminal), owning_building_guid = 81) - LocalObject(2400, Terminal.Constructor(Vector3(1554.399f, 1906.192f, 32.3092f), order_terminal), owning_building_guid = 81) - LocalObject(2402, Terminal.Constructor(Vector3(1555.333f, 1911.491f, 32.3092f), order_terminal), owning_building_guid = 81) - LocalObject(3259, SpawnTube.Constructor(Vector3(1542.415f, 1900.069f, 30.4592f), respawn_tube_tower, Vector3(0, 0, 10)), owning_building_guid = 81) - LocalObject(3260, SpawnTube.Constructor(Vector3(1545.264f, 1916.23f, 30.4592f), respawn_tube_tower, Vector3(0, 0, 10)), owning_building_guid = 81) - LocalObject(2194, FacilityTurret.Constructor(Vector3(1519.306f, 1903.69f, 59.9192f), manned_turret), owning_building_guid = 81) + LocalObject( + 2399, + Terminal.Constructor(Vector3(1553.405f, 1900.555f, 32.3092f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2400, + Terminal.Constructor(Vector3(1554.399f, 1906.192f, 32.3092f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2402, + Terminal.Constructor(Vector3(1555.333f, 1911.491f, 32.3092f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 3259, + SpawnTube.Constructor(Vector3(1542.415f, 1900.069f, 30.4592f), respawn_tube_tower, Vector3(0, 0, 10)), + owning_building_guid = 81 + ) + LocalObject( + 3260, + SpawnTube.Constructor(Vector3(1545.264f, 1916.23f, 30.4592f), respawn_tube_tower, Vector3(0, 0, 10)), + owning_building_guid = 81 + ) + LocalObject( + 2194, + FacilityTurret.Constructor(Vector3(1519.306f, 1903.69f, 59.9192f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(2194, 5105) - LocalObject(2195, FacilityTurret.Constructor(Vector3(1558.51f, 1922.581f, 59.9192f), manned_turret), owning_building_guid = 81) + LocalObject( + 2195, + FacilityTurret.Constructor(Vector3(1558.51f, 1922.581f, 59.9192f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(2195, 5106) - LocalObject(3002, Painbox.Constructor(Vector3(1538.079f, 1906.988f, 32.4763f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(3003, Painbox.Constructor(Vector3(1549.019f, 1901.423f, 31.0772f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(3004, Painbox.Constructor(Vector3(1550.995f, 1913.122f, 31.0772f), painbox_radius_continuous), owning_building_guid = 81) + LocalObject( + 3002, + Painbox.Constructor(Vector3(1538.079f, 1906.988f, 32.4763f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 3003, + Painbox.Constructor(Vector3(1549.019f, 1901.423f, 31.0772f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 3004, + Painbox.Constructor(Vector3(1550.995f, 1913.122f, 31.0772f), painbox_radius_continuous), + owning_building_guid = 81 + ) } Building26() def Building26(): Unit = { // Name: NE_Nzame_Tower Type: tower_a GUID: 82, MapID: 26 - LocalBuilding("NE_Nzame_Tower", 82, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1950f, 3610f, 55.32143f), Vector3(0f, 0f, 17f), tower_a))) - LocalObject(3358, CaptureTerminal.Constructor(Vector3(1965.892f, 3614.751f, 65.32043f), secondary_capture), owning_building_guid = 82) + LocalBuilding( + "NE_Nzame_Tower", + 82, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1950f, 3610f, 55.32143f), Vector3(0f, 0f, 17f), tower_a) + ) + ) + LocalObject( + 3358, + CaptureTerminal.Constructor(Vector3(1965.892f, 3614.751f, 65.32043f), secondary_capture), + owning_building_guid = 82 + ) LocalObject(509, Door.Constructor(Vector3(1959.137f, 3621.159f, 56.84243f)), owning_building_guid = 82) LocalObject(510, Door.Constructor(Vector3(1959.137f, 3621.159f, 76.84143f)), owning_building_guid = 82) LocalObject(511, Door.Constructor(Vector3(1963.815f, 3605.858f, 56.84243f)), owning_building_guid = 82) LocalObject(512, Door.Constructor(Vector3(1963.815f, 3605.858f, 76.84143f)), owning_building_guid = 82) LocalObject(3528, Door.Constructor(Vector3(1959.137f, 3618.235f, 46.65743f)), owning_building_guid = 82) LocalObject(3529, Door.Constructor(Vector3(1963.935f, 3602.542f, 46.65743f)), owning_building_guid = 82) - LocalObject(1357, IFFLock.Constructor(Vector3(1956.946f, 3621.337f, 56.78243f), Vector3(0, 0, 343)), owning_building_guid = 82, door_guid = 509) - LocalObject(1358, IFFLock.Constructor(Vector3(1956.946f, 3621.337f, 76.78243f), Vector3(0, 0, 343)), owning_building_guid = 82, door_guid = 510) - LocalObject(1359, IFFLock.Constructor(Vector3(1966.009f, 3605.681f, 56.78243f), Vector3(0, 0, 163)), owning_building_guid = 82, door_guid = 511) - LocalObject(1360, IFFLock.Constructor(Vector3(1966.009f, 3605.681f, 76.78243f), Vector3(0, 0, 163)), owning_building_guid = 82, door_guid = 512) + LocalObject( + 1357, + IFFLock.Constructor(Vector3(1956.946f, 3621.337f, 56.78243f), Vector3(0, 0, 343)), + owning_building_guid = 82, + door_guid = 509 + ) + LocalObject( + 1358, + IFFLock.Constructor(Vector3(1956.946f, 3621.337f, 76.78243f), Vector3(0, 0, 343)), + owning_building_guid = 82, + door_guid = 510 + ) + LocalObject( + 1359, + IFFLock.Constructor(Vector3(1966.009f, 3605.681f, 56.78243f), Vector3(0, 0, 163)), + owning_building_guid = 82, + door_guid = 511 + ) + LocalObject( + 1360, + IFFLock.Constructor(Vector3(1966.009f, 3605.681f, 76.78243f), Vector3(0, 0, 163)), + owning_building_guid = 82, + door_guid = 512 + ) LocalObject(1722, Locker.Constructor(Vector3(1963.064f, 3621.142f, 45.31543f)), owning_building_guid = 82) LocalObject(1723, Locker.Constructor(Vector3(1964.343f, 3621.532f, 45.31543f)), owning_building_guid = 82) LocalObject(1724, Locker.Constructor(Vector3(1966.88f, 3622.308f, 45.31543f)), owning_building_guid = 82) @@ -2588,35 +7537,106 @@ object Map03 { // Cyssor LocalObject(1727, Locker.Constructor(Vector3(1970.704f, 3600.606f, 45.31543f)), owning_building_guid = 82) LocalObject(1728, Locker.Constructor(Vector3(1973.275f, 3601.392f, 45.31543f)), owning_building_guid = 82) LocalObject(1729, Locker.Constructor(Vector3(1974.616f, 3601.802f, 45.31543f)), owning_building_guid = 82) - LocalObject(2407, Terminal.Constructor(Vector3(1970.147f, 3617.45f, 46.65343f), order_terminal), owning_building_guid = 82) - LocalObject(2408, Terminal.Constructor(Vector3(1971.72f, 3612.304f, 46.65343f), order_terminal), owning_building_guid = 82) - LocalObject(2409, Terminal.Constructor(Vector3(1973.394f, 3606.83f, 46.65343f), order_terminal), owning_building_guid = 82) - LocalObject(3264, SpawnTube.Constructor(Vector3(1959.024f, 3617.101f, 44.80343f), respawn_tube_tower, Vector3(0, 0, 343)), owning_building_guid = 82) - LocalObject(3265, SpawnTube.Constructor(Vector3(1963.822f, 3601.408f, 44.80343f), respawn_tube_tower, Vector3(0, 0, 343)), owning_building_guid = 82) - LocalObject(2200, FacilityTurret.Constructor(Vector3(1941.589f, 3594.143f, 74.26343f), manned_turret), owning_building_guid = 82) + LocalObject( + 2407, + Terminal.Constructor(Vector3(1970.147f, 3617.45f, 46.65343f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 2408, + Terminal.Constructor(Vector3(1971.72f, 3612.304f, 46.65343f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 2409, + Terminal.Constructor(Vector3(1973.394f, 3606.83f, 46.65343f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 3264, + SpawnTube.Constructor(Vector3(1959.024f, 3617.101f, 44.80343f), respawn_tube_tower, Vector3(0, 0, 343)), + owning_building_guid = 82 + ) + LocalObject( + 3265, + SpawnTube.Constructor(Vector3(1963.822f, 3601.408f, 44.80343f), respawn_tube_tower, Vector3(0, 0, 343)), + owning_building_guid = 82 + ) + LocalObject( + 2200, + FacilityTurret.Constructor(Vector3(1941.589f, 3594.143f, 74.26343f), manned_turret), + owning_building_guid = 82 + ) TurretToWeapon(2200, 5107) - LocalObject(2201, FacilityTurret.Constructor(Vector3(1967.942f, 3628.773f, 74.26343f), manned_turret), owning_building_guid = 82) + LocalObject( + 2201, + FacilityTurret.Constructor(Vector3(1967.942f, 3628.773f, 74.26343f), manned_turret), + owning_building_guid = 82 + ) TurretToWeapon(2201, 5108) - LocalObject(3005, Painbox.Constructor(Vector3(1956.818f, 3605.604f, 46.82053f), painbox_radius_continuous), owning_building_guid = 82) - LocalObject(3006, Painbox.Constructor(Vector3(1965.541f, 3616.933f, 45.42143f), painbox_radius_continuous), owning_building_guid = 82) - LocalObject(3007, Painbox.Constructor(Vector3(1969.092f, 3605.613f, 45.42143f), painbox_radius_continuous), owning_building_guid = 82) + LocalObject( + 3005, + Painbox.Constructor(Vector3(1956.818f, 3605.604f, 46.82053f), painbox_radius_continuous), + owning_building_guid = 82 + ) + LocalObject( + 3006, + Painbox.Constructor(Vector3(1965.541f, 3616.933f, 45.42143f), painbox_radius_continuous), + owning_building_guid = 82 + ) + LocalObject( + 3007, + Painbox.Constructor(Vector3(1969.092f, 3605.613f, 45.42143f), painbox_radius_continuous), + owning_building_guid = 82 + ) } Building36() def Building36(): Unit = { // Name: SE_NCSanc_Warpgate_Tower Type: tower_a GUID: 83, MapID: 36 - LocalBuilding("SE_NCSanc_Warpgate_Tower", 83, 36, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2838f, 6204f, 67.4752f), Vector3(0f, 0f, 8f), tower_a))) - LocalObject(3361, CaptureTerminal.Constructor(Vector3(2854.44f, 6206.207f, 77.47421f), secondary_capture), owning_building_guid = 83) + LocalBuilding( + "SE_NCSanc_Warpgate_Tower", + 83, + 36, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2838f, 6204f, 67.4752f), Vector3(0f, 0f, 8f), tower_a) + ) + ) + LocalObject( + 3361, + CaptureTerminal.Constructor(Vector3(2854.44f, 6206.207f, 77.47421f), secondary_capture), + owning_building_guid = 83 + ) LocalObject(538, Door.Constructor(Vector3(2848.77f, 6213.592f, 68.99621f)), owning_building_guid = 83) LocalObject(539, Door.Constructor(Vector3(2848.77f, 6213.592f, 88.99521f)), owning_building_guid = 83) LocalObject(540, Door.Constructor(Vector3(2850.997f, 6197.748f, 68.99621f)), owning_building_guid = 83) LocalObject(541, Door.Constructor(Vector3(2850.997f, 6197.748f, 88.99521f)), owning_building_guid = 83) LocalObject(3537, Door.Constructor(Vector3(2848.313f, 6210.705f, 58.8112f)), owning_building_guid = 83) LocalObject(3538, Door.Constructor(Vector3(2850.597f, 6194.454f, 58.8112f)), owning_building_guid = 83) - LocalObject(1379, IFFLock.Constructor(Vector3(2846.634f, 6214.111f, 68.9362f), Vector3(0, 0, 352)), owning_building_guid = 83, door_guid = 538) - LocalObject(1380, IFFLock.Constructor(Vector3(2846.634f, 6214.111f, 88.9362f), Vector3(0, 0, 352)), owning_building_guid = 83, door_guid = 539) - LocalObject(1381, IFFLock.Constructor(Vector3(2853.136f, 6197.229f, 68.9362f), Vector3(0, 0, 172)), owning_building_guid = 83, door_guid = 540) - LocalObject(1382, IFFLock.Constructor(Vector3(2853.136f, 6197.229f, 88.9362f), Vector3(0, 0, 172)), owning_building_guid = 83, door_guid = 541) + LocalObject( + 1379, + IFFLock.Constructor(Vector3(2846.634f, 6214.111f, 68.9362f), Vector3(0, 0, 352)), + owning_building_guid = 83, + door_guid = 538 + ) + LocalObject( + 1380, + IFFLock.Constructor(Vector3(2846.634f, 6214.111f, 88.9362f), Vector3(0, 0, 352)), + owning_building_guid = 83, + door_guid = 539 + ) + LocalObject( + 1381, + IFFLock.Constructor(Vector3(2853.136f, 6197.229f, 68.9362f), Vector3(0, 0, 172)), + owning_building_guid = 83, + door_guid = 540 + ) + LocalObject( + 1382, + IFFLock.Constructor(Vector3(2853.136f, 6197.229f, 88.9362f), Vector3(0, 0, 172)), + owning_building_guid = 83, + door_guid = 541 + ) LocalObject(1758, Locker.Constructor(Vector3(2852.646f, 6212.96f, 57.4692f)), owning_building_guid = 83) LocalObject(1759, Locker.Constructor(Vector3(2853.97f, 6213.146f, 57.4692f)), owning_building_guid = 83) LocalObject(1760, Locker.Constructor(Vector3(2855.656f, 6191.296f, 57.4692f)), owning_building_guid = 83) @@ -2625,35 +7645,106 @@ object Map03 { // Cyssor LocalObject(1763, Locker.Constructor(Vector3(2857.986f, 6213.711f, 57.4692f)), owning_building_guid = 83) LocalObject(1764, Locker.Constructor(Vector3(2859.642f, 6191.857f, 57.4692f)), owning_building_guid = 83) LocalObject(1765, Locker.Constructor(Vector3(2861.03f, 6192.052f, 57.4692f)), owning_building_guid = 83) - LocalObject(2420, Terminal.Constructor(Vector3(2859.064f, 6208.207f, 58.80721f), order_terminal), owning_building_guid = 83) - LocalObject(2421, Terminal.Constructor(Vector3(2859.813f, 6202.878f, 58.80721f), order_terminal), owning_building_guid = 83) - LocalObject(2422, Terminal.Constructor(Vector3(2860.61f, 6197.209f, 58.80721f), order_terminal), owning_building_guid = 83) - LocalObject(3273, SpawnTube.Constructor(Vector3(2848.024f, 6209.602f, 56.95721f), respawn_tube_tower, Vector3(0, 0, 352)), owning_building_guid = 83) - LocalObject(3274, SpawnTube.Constructor(Vector3(2850.308f, 6193.351f, 56.95721f), respawn_tube_tower, Vector3(0, 0, 352)), owning_building_guid = 83) - LocalObject(2209, FacilityTurret.Constructor(Vector3(2827.212f, 6189.654f, 86.41721f), manned_turret), owning_building_guid = 83) + LocalObject( + 2420, + Terminal.Constructor(Vector3(2859.064f, 6208.207f, 58.80721f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 2421, + Terminal.Constructor(Vector3(2859.813f, 6202.878f, 58.80721f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 2422, + Terminal.Constructor(Vector3(2860.61f, 6197.209f, 58.80721f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 3273, + SpawnTube.Constructor(Vector3(2848.024f, 6209.602f, 56.95721f), respawn_tube_tower, Vector3(0, 0, 352)), + owning_building_guid = 83 + ) + LocalObject( + 3274, + SpawnTube.Constructor(Vector3(2850.308f, 6193.351f, 56.95721f), respawn_tube_tower, Vector3(0, 0, 352)), + owning_building_guid = 83 + ) + LocalObject( + 2209, + FacilityTurret.Constructor(Vector3(2827.212f, 6189.654f, 86.41721f), manned_turret), + owning_building_guid = 83 + ) TurretToWeapon(2209, 5109) - LocalObject(2211, FacilityTurret.Constructor(Vector3(2858.658f, 6219.735f, 86.41721f), manned_turret), owning_building_guid = 83) + LocalObject( + 2211, + FacilityTurret.Constructor(Vector3(2858.658f, 6219.735f, 86.41721f), manned_turret), + owning_building_guid = 83 + ) TurretToWeapon(2211, 5110) - LocalObject(3012, Painbox.Constructor(Vector3(2844.047f, 6198.592f, 58.9743f), painbox_radius_continuous), owning_building_guid = 83) - LocalObject(3015, Painbox.Constructor(Vector3(2854.435f, 6208.417f, 57.5752f), painbox_radius_continuous), owning_building_guid = 83) - LocalObject(3016, Painbox.Constructor(Vector3(2856.171f, 6196.68f, 57.5752f), painbox_radius_continuous), owning_building_guid = 83) + LocalObject( + 3012, + Painbox.Constructor(Vector3(2844.047f, 6198.592f, 58.9743f), painbox_radius_continuous), + owning_building_guid = 83 + ) + LocalObject( + 3015, + Painbox.Constructor(Vector3(2854.435f, 6208.417f, 57.5752f), painbox_radius_continuous), + owning_building_guid = 83 + ) + LocalObject( + 3016, + Painbox.Constructor(Vector3(2856.171f, 6196.68f, 57.5752f), painbox_radius_continuous), + owning_building_guid = 83 + ) } Building64() def Building64(): Unit = { // Name: N_Tore_Tower Type: tower_a GUID: 84, MapID: 64 - LocalBuilding("N_Tore_Tower", 84, 64, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3008f, 2532f, 53.84287f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(3362, CaptureTerminal.Constructor(Vector3(3024.587f, 2531.897f, 63.84187f), secondary_capture), owning_building_guid = 84) + LocalBuilding( + "N_Tore_Tower", + 84, + 64, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3008f, 2532f, 53.84287f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 3362, + CaptureTerminal.Constructor(Vector3(3024.587f, 2531.897f, 63.84187f), secondary_capture), + owning_building_guid = 84 + ) LocalObject(556, Door.Constructor(Vector3(3020f, 2524f, 55.36387f)), owning_building_guid = 84) LocalObject(557, Door.Constructor(Vector3(3020f, 2524f, 75.36287f)), owning_building_guid = 84) LocalObject(558, Door.Constructor(Vector3(3020f, 2540f, 55.36387f)), owning_building_guid = 84) LocalObject(559, Door.Constructor(Vector3(3020f, 2540f, 75.36287f)), owning_building_guid = 84) LocalObject(3542, Door.Constructor(Vector3(3019.146f, 2520.794f, 45.17887f)), owning_building_guid = 84) LocalObject(3543, Door.Constructor(Vector3(3019.146f, 2537.204f, 45.17887f)), owning_building_guid = 84) - LocalObject(1394, IFFLock.Constructor(Vector3(3017.957f, 2540.811f, 55.30387f), Vector3(0, 0, 0)), owning_building_guid = 84, door_guid = 558) - LocalObject(1395, IFFLock.Constructor(Vector3(3017.957f, 2540.811f, 75.30387f), Vector3(0, 0, 0)), owning_building_guid = 84, door_guid = 559) - LocalObject(1396, IFFLock.Constructor(Vector3(3022.047f, 2523.189f, 55.30387f), Vector3(0, 0, 180)), owning_building_guid = 84, door_guid = 556) - LocalObject(1397, IFFLock.Constructor(Vector3(3022.047f, 2523.189f, 75.30387f), Vector3(0, 0, 180)), owning_building_guid = 84, door_guid = 557) + LocalObject( + 1394, + IFFLock.Constructor(Vector3(3017.957f, 2540.811f, 55.30387f), Vector3(0, 0, 0)), + owning_building_guid = 84, + door_guid = 558 + ) + LocalObject( + 1395, + IFFLock.Constructor(Vector3(3017.957f, 2540.811f, 75.30387f), Vector3(0, 0, 0)), + owning_building_guid = 84, + door_guid = 559 + ) + LocalObject( + 1396, + IFFLock.Constructor(Vector3(3022.047f, 2523.189f, 55.30387f), Vector3(0, 0, 180)), + owning_building_guid = 84, + door_guid = 556 + ) + LocalObject( + 1397, + IFFLock.Constructor(Vector3(3022.047f, 2523.189f, 75.30387f), Vector3(0, 0, 180)), + owning_building_guid = 84, + door_guid = 557 + ) LocalObject(1774, Locker.Constructor(Vector3(3023.716f, 2516.963f, 43.83687f)), owning_building_guid = 84) LocalObject(1775, Locker.Constructor(Vector3(3023.751f, 2538.835f, 43.83687f)), owning_building_guid = 84) LocalObject(1777, Locker.Constructor(Vector3(3025.053f, 2516.963f, 43.83687f)), owning_building_guid = 84) @@ -2662,35 +7753,106 @@ object Map03 { // Cyssor LocalObject(1782, Locker.Constructor(Vector3(3027.741f, 2538.835f, 43.83687f)), owning_building_guid = 84) LocalObject(1784, Locker.Constructor(Vector3(3029.143f, 2516.963f, 43.83687f)), owning_building_guid = 84) LocalObject(1785, Locker.Constructor(Vector3(3029.143f, 2538.835f, 43.83687f)), owning_building_guid = 84) - LocalObject(2430, Terminal.Constructor(Vector3(3029.445f, 2522.129f, 45.17487f), order_terminal), owning_building_guid = 84) - LocalObject(2431, Terminal.Constructor(Vector3(3029.445f, 2527.853f, 45.17487f), order_terminal), owning_building_guid = 84) - LocalObject(2432, Terminal.Constructor(Vector3(3029.445f, 2533.234f, 45.17487f), order_terminal), owning_building_guid = 84) - LocalObject(3278, SpawnTube.Constructor(Vector3(3018.706f, 2519.742f, 43.32487f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 84) - LocalObject(3279, SpawnTube.Constructor(Vector3(3018.706f, 2536.152f, 43.32487f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 84) - LocalObject(2216, FacilityTurret.Constructor(Vector3(2995.32f, 2519.295f, 72.78487f), manned_turret), owning_building_guid = 84) + LocalObject( + 2430, + Terminal.Constructor(Vector3(3029.445f, 2522.129f, 45.17487f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2431, + Terminal.Constructor(Vector3(3029.445f, 2527.853f, 45.17487f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2432, + Terminal.Constructor(Vector3(3029.445f, 2533.234f, 45.17487f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 3278, + SpawnTube.Constructor(Vector3(3018.706f, 2519.742f, 43.32487f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 84 + ) + LocalObject( + 3279, + SpawnTube.Constructor(Vector3(3018.706f, 2536.152f, 43.32487f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 84 + ) + LocalObject( + 2216, + FacilityTurret.Constructor(Vector3(2995.32f, 2519.295f, 72.78487f), manned_turret), + owning_building_guid = 84 + ) TurretToWeapon(2216, 5111) - LocalObject(2217, FacilityTurret.Constructor(Vector3(3030.647f, 2544.707f, 72.78487f), manned_turret), owning_building_guid = 84) + LocalObject( + 2217, + FacilityTurret.Constructor(Vector3(3030.647f, 2544.707f, 72.78487f), manned_turret), + owning_building_guid = 84 + ) TurretToWeapon(2217, 5112) - LocalObject(3017, Painbox.Constructor(Vector3(3013.235f, 2525.803f, 45.34197f), painbox_radius_continuous), owning_building_guid = 84) - LocalObject(3018, Painbox.Constructor(Vector3(3024.889f, 2534.086f, 43.94287f), painbox_radius_continuous), owning_building_guid = 84) - LocalObject(3019, Painbox.Constructor(Vector3(3024.975f, 2522.223f, 43.94287f), painbox_radius_continuous), owning_building_guid = 84) + LocalObject( + 3017, + Painbox.Constructor(Vector3(3013.235f, 2525.803f, 45.34197f), painbox_radius_continuous), + owning_building_guid = 84 + ) + LocalObject( + 3018, + Painbox.Constructor(Vector3(3024.889f, 2534.086f, 43.94287f), painbox_radius_continuous), + owning_building_guid = 84 + ) + LocalObject( + 3019, + Painbox.Constructor(Vector3(3024.975f, 2522.223f, 43.94287f), painbox_radius_continuous), + owning_building_guid = 84 + ) } Building35() def Building35(): Unit = { // Name: SW_Honsi_Tower Type: tower_a GUID: 85, MapID: 35 - LocalBuilding("SW_Honsi_Tower", 85, 35, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3430f, 4030f, 69.08597f), Vector3(0f, 0f, 302f), tower_a))) - LocalObject(3363, CaptureTerminal.Constructor(Vector3(3438.702f, 4015.879f, 79.08497f), secondary_capture), owning_building_guid = 85) + LocalBuilding( + "SW_Honsi_Tower", + 85, + 35, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3430f, 4030f, 69.08597f), Vector3(0f, 0f, 302f), tower_a) + ) + ) + LocalObject( + 3363, + CaptureTerminal.Constructor(Vector3(3438.702f, 4015.879f, 79.08497f), secondary_capture), + owning_building_guid = 85 + ) LocalObject(560, Door.Constructor(Vector3(3429.575f, 4015.584f, 70.60697f)), owning_building_guid = 85) LocalObject(561, Door.Constructor(Vector3(3429.575f, 4015.584f, 90.60597f)), owning_building_guid = 85) LocalObject(562, Door.Constructor(Vector3(3443.143f, 4024.063f, 70.60697f)), owning_building_guid = 85) LocalObject(563, Door.Constructor(Vector3(3443.143f, 4024.063f, 90.60597f)), owning_building_guid = 85) LocalObject(3544, Door.Constructor(Vector3(3426.403f, 4014.609f, 60.42197f)), owning_building_guid = 85) LocalObject(3545, Door.Constructor(Vector3(3440.32f, 4023.305f, 60.42197f)), owning_building_guid = 85) - LocalObject(1398, IFFLock.Constructor(Vector3(3429.972f, 4013.418f, 70.54697f), Vector3(0, 0, 238)), owning_building_guid = 85, door_guid = 560) - LocalObject(1399, IFFLock.Constructor(Vector3(3429.972f, 4013.418f, 90.54697f), Vector3(0, 0, 238)), owning_building_guid = 85, door_guid = 561) - LocalObject(1400, IFFLock.Constructor(Vector3(3442.749f, 4026.225f, 70.54697f), Vector3(0, 0, 58)), owning_building_guid = 85, door_guid = 562) - LocalObject(1401, IFFLock.Constructor(Vector3(3442.749f, 4026.225f, 90.54697f), Vector3(0, 0, 58)), owning_building_guid = 85, door_guid = 563) + LocalObject( + 1398, + IFFLock.Constructor(Vector3(3429.972f, 4013.418f, 70.54697f), Vector3(0, 0, 238)), + owning_building_guid = 85, + door_guid = 560 + ) + LocalObject( + 1399, + IFFLock.Constructor(Vector3(3429.972f, 4013.418f, 90.54697f), Vector3(0, 0, 238)), + owning_building_guid = 85, + door_guid = 561 + ) + LocalObject( + 1400, + IFFLock.Constructor(Vector3(3442.749f, 4026.225f, 70.54697f), Vector3(0, 0, 58)), + owning_building_guid = 85, + door_guid = 562 + ) + LocalObject( + 1401, + IFFLock.Constructor(Vector3(3442.749f, 4026.225f, 90.54697f), Vector3(0, 0, 58)), + owning_building_guid = 85, + door_guid = 563 + ) LocalObject(1786, Locker.Constructor(Vector3(3425.576f, 4008.704f, 59.07997f)), owning_building_guid = 85) LocalObject(1787, Locker.Constructor(Vector3(3426.285f, 4007.57f, 59.07997f)), owning_building_guid = 85) LocalObject(1788, Locker.Constructor(Vector3(3427.709f, 4005.29f, 59.07997f)), owning_building_guid = 85) @@ -2699,35 +7861,106 @@ object Map03 { // Cyssor LocalObject(1791, Locker.Constructor(Vector3(3444.852f, 4019.131f, 59.07997f)), owning_building_guid = 85) LocalObject(1792, Locker.Constructor(Vector3(3446.258f, 4016.881f, 59.07997f)), owning_building_guid = 85) LocalObject(1793, Locker.Constructor(Vector3(3447f, 4015.692f, 59.07997f)), owning_building_guid = 85) - LocalObject(2433, Terminal.Constructor(Vector3(3432.993f, 4006.583f, 60.41797f), order_terminal), owning_building_guid = 85) - LocalObject(2434, Terminal.Constructor(Vector3(3437.847f, 4009.616f, 60.41797f), order_terminal), owning_building_guid = 85) - LocalObject(2435, Terminal.Constructor(Vector3(3442.411f, 4012.468f, 60.41797f), order_terminal), owning_building_guid = 85) - LocalObject(3280, SpawnTube.Constructor(Vector3(3425.278f, 4014.425f, 58.56797f), respawn_tube_tower, Vector3(0, 0, 58)), owning_building_guid = 85) - LocalObject(3281, SpawnTube.Constructor(Vector3(3439.194f, 4023.121f, 58.56797f), respawn_tube_tower, Vector3(0, 0, 58)), owning_building_guid = 85) - LocalObject(2220, FacilityTurret.Constructor(Vector3(3412.506f, 4034.021f, 88.02797f), manned_turret), owning_building_guid = 85) + LocalObject( + 2433, + Terminal.Constructor(Vector3(3432.993f, 4006.583f, 60.41797f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2434, + Terminal.Constructor(Vector3(3437.847f, 4009.616f, 60.41797f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2435, + Terminal.Constructor(Vector3(3442.411f, 4012.468f, 60.41797f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 3280, + SpawnTube.Constructor(Vector3(3425.278f, 4014.425f, 58.56797f), respawn_tube_tower, Vector3(0, 0, 58)), + owning_building_guid = 85 + ) + LocalObject( + 3281, + SpawnTube.Constructor(Vector3(3439.194f, 4023.121f, 58.56797f), respawn_tube_tower, Vector3(0, 0, 58)), + owning_building_guid = 85 + ) + LocalObject( + 2220, + FacilityTurret.Constructor(Vector3(3412.506f, 4034.021f, 88.02797f), manned_turret), + owning_building_guid = 85 + ) TurretToWeapon(2220, 5113) - LocalObject(2221, FacilityTurret.Constructor(Vector3(3452.777f, 4017.528f, 88.02797f), manned_turret), owning_building_guid = 85) + LocalObject( + 2221, + FacilityTurret.Constructor(Vector3(3452.777f, 4017.528f, 88.02797f), manned_turret), + owning_building_guid = 85 + ) TurretToWeapon(2221, 5114) - LocalObject(3020, Painbox.Constructor(Vector3(3427.519f, 4022.277f, 60.58507f), painbox_radius_continuous), owning_building_guid = 85) - LocalObject(3021, Painbox.Constructor(Vector3(3430.704f, 4010.423f, 59.18597f), painbox_radius_continuous), owning_building_guid = 85) - LocalObject(3022, Painbox.Constructor(Vector3(3440.719f, 4016.783f, 59.18597f), painbox_radius_continuous), owning_building_guid = 85) + LocalObject( + 3020, + Painbox.Constructor(Vector3(3427.519f, 4022.277f, 60.58507f), painbox_radius_continuous), + owning_building_guid = 85 + ) + LocalObject( + 3021, + Painbox.Constructor(Vector3(3430.704f, 4010.423f, 59.18597f), painbox_radius_continuous), + owning_building_guid = 85 + ) + LocalObject( + 3022, + Painbox.Constructor(Vector3(3440.719f, 4016.783f, 59.18597f), painbox_radius_continuous), + owning_building_guid = 85 + ) } Building67() def Building67(): Unit = { // Name: S_Chuku_Tower Type: tower_a GUID: 86, MapID: 67 - LocalBuilding("S_Chuku_Tower", 86, 67, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4008f, 5982f, 61.10294f), Vector3(0f, 0f, 0f), tower_a))) - LocalObject(3368, CaptureTerminal.Constructor(Vector3(4024.587f, 5981.897f, 71.10194f), secondary_capture), owning_building_guid = 86) + LocalBuilding( + "S_Chuku_Tower", + 86, + 67, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4008f, 5982f, 61.10294f), Vector3(0f, 0f, 0f), tower_a) + ) + ) + LocalObject( + 3368, + CaptureTerminal.Constructor(Vector3(4024.587f, 5981.897f, 71.10194f), secondary_capture), + owning_building_guid = 86 + ) LocalObject(594, Door.Constructor(Vector3(4020f, 5974f, 62.62394f)), owning_building_guid = 86) LocalObject(595, Door.Constructor(Vector3(4020f, 5974f, 82.62294f)), owning_building_guid = 86) LocalObject(596, Door.Constructor(Vector3(4020f, 5990f, 62.62394f)), owning_building_guid = 86) LocalObject(597, Door.Constructor(Vector3(4020f, 5990f, 82.62294f)), owning_building_guid = 86) LocalObject(3557, Door.Constructor(Vector3(4019.146f, 5970.794f, 52.43894f)), owning_building_guid = 86) LocalObject(3558, Door.Constructor(Vector3(4019.146f, 5987.204f, 52.43894f)), owning_building_guid = 86) - LocalObject(1428, IFFLock.Constructor(Vector3(4017.957f, 5990.811f, 62.56394f), Vector3(0, 0, 0)), owning_building_guid = 86, door_guid = 596) - LocalObject(1429, IFFLock.Constructor(Vector3(4017.957f, 5990.811f, 82.56394f), Vector3(0, 0, 0)), owning_building_guid = 86, door_guid = 597) - LocalObject(1431, IFFLock.Constructor(Vector3(4022.047f, 5973.189f, 62.56394f), Vector3(0, 0, 180)), owning_building_guid = 86, door_guid = 594) - LocalObject(1432, IFFLock.Constructor(Vector3(4022.047f, 5973.189f, 82.56394f), Vector3(0, 0, 180)), owning_building_guid = 86, door_guid = 595) + LocalObject( + 1428, + IFFLock.Constructor(Vector3(4017.957f, 5990.811f, 62.56394f), Vector3(0, 0, 0)), + owning_building_guid = 86, + door_guid = 596 + ) + LocalObject( + 1429, + IFFLock.Constructor(Vector3(4017.957f, 5990.811f, 82.56394f), Vector3(0, 0, 0)), + owning_building_guid = 86, + door_guid = 597 + ) + LocalObject( + 1431, + IFFLock.Constructor(Vector3(4022.047f, 5973.189f, 62.56394f), Vector3(0, 0, 180)), + owning_building_guid = 86, + door_guid = 594 + ) + LocalObject( + 1432, + IFFLock.Constructor(Vector3(4022.047f, 5973.189f, 82.56394f), Vector3(0, 0, 180)), + owning_building_guid = 86, + door_guid = 595 + ) LocalObject(1835, Locker.Constructor(Vector3(4023.716f, 5966.963f, 51.09694f)), owning_building_guid = 86) LocalObject(1836, Locker.Constructor(Vector3(4023.751f, 5988.835f, 51.09694f)), owning_building_guid = 86) LocalObject(1837, Locker.Constructor(Vector3(4025.053f, 5966.963f, 51.09694f)), owning_building_guid = 86) @@ -2736,35 +7969,106 @@ object Map03 { // Cyssor LocalObject(1840, Locker.Constructor(Vector3(4027.741f, 5988.835f, 51.09694f)), owning_building_guid = 86) LocalObject(1843, Locker.Constructor(Vector3(4029.143f, 5966.963f, 51.09694f)), owning_building_guid = 86) LocalObject(1844, Locker.Constructor(Vector3(4029.143f, 5988.835f, 51.09694f)), owning_building_guid = 86) - LocalObject(2452, Terminal.Constructor(Vector3(4029.445f, 5972.129f, 52.43494f), order_terminal), owning_building_guid = 86) - LocalObject(2453, Terminal.Constructor(Vector3(4029.445f, 5977.853f, 52.43494f), order_terminal), owning_building_guid = 86) - LocalObject(2454, Terminal.Constructor(Vector3(4029.445f, 5983.234f, 52.43494f), order_terminal), owning_building_guid = 86) - LocalObject(3293, SpawnTube.Constructor(Vector3(4018.706f, 5969.742f, 50.58494f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 86) - LocalObject(3294, SpawnTube.Constructor(Vector3(4018.706f, 5986.152f, 50.58494f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 86) - LocalObject(2227, FacilityTurret.Constructor(Vector3(3995.32f, 5969.295f, 80.04494f), manned_turret), owning_building_guid = 86) + LocalObject( + 2452, + Terminal.Constructor(Vector3(4029.445f, 5972.129f, 52.43494f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2453, + Terminal.Constructor(Vector3(4029.445f, 5977.853f, 52.43494f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2454, + Terminal.Constructor(Vector3(4029.445f, 5983.234f, 52.43494f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 3293, + SpawnTube.Constructor(Vector3(4018.706f, 5969.742f, 50.58494f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 86 + ) + LocalObject( + 3294, + SpawnTube.Constructor(Vector3(4018.706f, 5986.152f, 50.58494f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 86 + ) + LocalObject( + 2227, + FacilityTurret.Constructor(Vector3(3995.32f, 5969.295f, 80.04494f), manned_turret), + owning_building_guid = 86 + ) TurretToWeapon(2227, 5115) - LocalObject(2230, FacilityTurret.Constructor(Vector3(4030.647f, 5994.707f, 80.04494f), manned_turret), owning_building_guid = 86) + LocalObject( + 2230, + FacilityTurret.Constructor(Vector3(4030.647f, 5994.707f, 80.04494f), manned_turret), + owning_building_guid = 86 + ) TurretToWeapon(2230, 5116) - LocalObject(3035, Painbox.Constructor(Vector3(4013.235f, 5975.803f, 52.60204f), painbox_radius_continuous), owning_building_guid = 86) - LocalObject(3036, Painbox.Constructor(Vector3(4024.889f, 5984.086f, 51.20294f), painbox_radius_continuous), owning_building_guid = 86) - LocalObject(3037, Painbox.Constructor(Vector3(4024.975f, 5972.223f, 51.20294f), painbox_radius_continuous), owning_building_guid = 86) + LocalObject( + 3035, + Painbox.Constructor(Vector3(4013.235f, 5975.803f, 52.60204f), painbox_radius_continuous), + owning_building_guid = 86 + ) + LocalObject( + 3036, + Painbox.Constructor(Vector3(4024.889f, 5984.086f, 51.20294f), painbox_radius_continuous), + owning_building_guid = 86 + ) + LocalObject( + 3037, + Painbox.Constructor(Vector3(4024.975f, 5972.223f, 51.20294f), painbox_radius_continuous), + owning_building_guid = 86 + ) } Building33() def Building33(): Unit = { // Name: N_Gunuku_Tower Type: tower_a GUID: 87, MapID: 33 - LocalBuilding("N_Gunuku_Tower", 87, 33, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4956f, 4786f, 44.49965f), Vector3(0f, 0f, 355f), tower_a))) - LocalObject(3370, CaptureTerminal.Constructor(Vector3(4972.515f, 4784.452f, 54.49865f), secondary_capture), owning_building_guid = 87) + LocalBuilding( + "N_Gunuku_Tower", + 87, + 33, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4956f, 4786f, 44.49965f), Vector3(0f, 0f, 355f), tower_a) + ) + ) + LocalObject( + 3370, + CaptureTerminal.Constructor(Vector3(4972.515f, 4784.452f, 54.49865f), secondary_capture), + owning_building_guid = 87 + ) LocalObject(631, Door.Constructor(Vector3(4967.257f, 4776.984f, 46.02065f)), owning_building_guid = 87) LocalObject(632, Door.Constructor(Vector3(4967.257f, 4776.984f, 66.01965f)), owning_building_guid = 87) LocalObject(633, Door.Constructor(Vector3(4968.651f, 4792.924f, 46.02065f)), owning_building_guid = 87) LocalObject(634, Door.Constructor(Vector3(4968.651f, 4792.924f, 66.01965f)), owning_building_guid = 87) LocalObject(3564, Door.Constructor(Vector3(4966.127f, 4773.865f, 35.83565f)), owning_building_guid = 87) LocalObject(3565, Door.Constructor(Vector3(4967.557f, 4790.213f, 35.83565f)), owning_building_guid = 87) - LocalObject(1452, IFFLock.Constructor(Vector3(4966.687f, 4793.91f, 45.96065f), Vector3(0, 0, 5)), owning_building_guid = 87, door_guid = 633) - LocalObject(1453, IFFLock.Constructor(Vector3(4966.687f, 4793.91f, 65.96065f), Vector3(0, 0, 5)), owning_building_guid = 87, door_guid = 634) - LocalObject(1454, IFFLock.Constructor(Vector3(4969.226f, 4775.998f, 45.96065f), Vector3(0, 0, 185)), owning_building_guid = 87, door_guid = 631) - LocalObject(1455, IFFLock.Constructor(Vector3(4969.226f, 4775.998f, 65.96065f), Vector3(0, 0, 185)), owning_building_guid = 87, door_guid = 632) + LocalObject( + 1452, + IFFLock.Constructor(Vector3(4966.687f, 4793.91f, 45.96065f), Vector3(0, 0, 5)), + owning_building_guid = 87, + door_guid = 633 + ) + LocalObject( + 1453, + IFFLock.Constructor(Vector3(4966.687f, 4793.91f, 65.96065f), Vector3(0, 0, 5)), + owning_building_guid = 87, + door_guid = 634 + ) + LocalObject( + 1454, + IFFLock.Constructor(Vector3(4969.226f, 4775.998f, 45.96065f), Vector3(0, 0, 185)), + owning_building_guid = 87, + door_guid = 631 + ) + LocalObject( + 1455, + IFFLock.Constructor(Vector3(4969.226f, 4775.998f, 65.96065f), Vector3(0, 0, 185)), + owning_building_guid = 87, + door_guid = 632 + ) LocalObject(1884, Locker.Constructor(Vector3(4970.346f, 4769.65f, 34.49365f)), owning_building_guid = 87) LocalObject(1885, Locker.Constructor(Vector3(4971.678f, 4769.534f, 34.49365f)), owning_building_guid = 87) LocalObject(1886, Locker.Constructor(Vector3(4972.287f, 4791.436f, 34.49365f)), owning_building_guid = 87) @@ -2773,35 +8077,106 @@ object Map03 { // Cyssor LocalObject(1889, Locker.Constructor(Vector3(4975.752f, 4769.177f, 34.49365f)), owning_building_guid = 87) LocalObject(1890, Locker.Constructor(Vector3(4976.262f, 4791.088f, 34.49365f)), owning_building_guid = 87) LocalObject(1891, Locker.Constructor(Vector3(4977.658f, 4790.966f, 34.49365f)), owning_building_guid = 87) - LocalObject(2467, Terminal.Constructor(Vector3(4976.503f, 4774.297f, 35.83165f), order_terminal), owning_building_guid = 87) - LocalObject(2468, Terminal.Constructor(Vector3(4977.002f, 4780f, 35.83165f), order_terminal), owning_building_guid = 87) - LocalObject(2469, Terminal.Constructor(Vector3(4977.471f, 4785.36f, 35.83165f), order_terminal), owning_building_guid = 87) - LocalObject(3300, SpawnTube.Constructor(Vector3(4965.597f, 4772.855f, 33.98165f), respawn_tube_tower, Vector3(0, 0, 5)), owning_building_guid = 87) - LocalObject(3301, SpawnTube.Constructor(Vector3(4967.027f, 4789.203f, 33.98165f), respawn_tube_tower, Vector3(0, 0, 5)), owning_building_guid = 87) - LocalObject(2241, FacilityTurret.Constructor(Vector3(4942.261f, 4774.448f, 63.44165f), manned_turret), owning_building_guid = 87) + LocalObject( + 2467, + Terminal.Constructor(Vector3(4976.503f, 4774.297f, 35.83165f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2468, + Terminal.Constructor(Vector3(4977.002f, 4780f, 35.83165f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2469, + Terminal.Constructor(Vector3(4977.471f, 4785.36f, 35.83165f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 3300, + SpawnTube.Constructor(Vector3(4965.597f, 4772.855f, 33.98165f), respawn_tube_tower, Vector3(0, 0, 5)), + owning_building_guid = 87 + ) + LocalObject( + 3301, + SpawnTube.Constructor(Vector3(4967.027f, 4789.203f, 33.98165f), respawn_tube_tower, Vector3(0, 0, 5)), + owning_building_guid = 87 + ) + LocalObject( + 2241, + FacilityTurret.Constructor(Vector3(4942.261f, 4774.448f, 63.44165f), manned_turret), + owning_building_guid = 87 + ) TurretToWeapon(2241, 5117) - LocalObject(2244, FacilityTurret.Constructor(Vector3(4979.668f, 4796.685f, 63.44165f), manned_turret), owning_building_guid = 87) + LocalObject( + 2244, + FacilityTurret.Constructor(Vector3(4979.668f, 4796.685f, 63.44165f), manned_turret), + owning_building_guid = 87 + ) TurretToWeapon(2244, 5118) - LocalObject(3041, Painbox.Constructor(Vector3(4960.675f, 4779.37f, 35.99875f), painbox_radius_continuous), owning_building_guid = 87) - LocalObject(3042, Painbox.Constructor(Vector3(4972.058f, 4774.78f, 34.59965f), painbox_radius_continuous), owning_building_guid = 87) - LocalObject(3043, Painbox.Constructor(Vector3(4973.007f, 4786.606f, 34.59965f), painbox_radius_continuous), owning_building_guid = 87) + LocalObject( + 3041, + Painbox.Constructor(Vector3(4960.675f, 4779.37f, 35.99875f), painbox_radius_continuous), + owning_building_guid = 87 + ) + LocalObject( + 3042, + Painbox.Constructor(Vector3(4972.058f, 4774.78f, 34.59965f), painbox_radius_continuous), + owning_building_guid = 87 + ) + LocalObject( + 3043, + Painbox.Constructor(Vector3(4973.007f, 4786.606f, 34.59965f), painbox_radius_continuous), + owning_building_guid = 87 + ) } Building38() def Building38(): Unit = { // Name: W_Ekera_Tower Type: tower_a GUID: 88, MapID: 38 - LocalBuilding("W_Ekera_Tower", 88, 38, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5432f, 6740f, 70.09491f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(3374, CaptureTerminal.Constructor(Vector3(5448.587f, 6739.897f, 80.09391f), secondary_capture), owning_building_guid = 88) + LocalBuilding( + "W_Ekera_Tower", + 88, + 38, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5432f, 6740f, 70.09491f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 3374, + CaptureTerminal.Constructor(Vector3(5448.587f, 6739.897f, 80.09391f), secondary_capture), + owning_building_guid = 88 + ) LocalObject(689, Door.Constructor(Vector3(5444f, 6732f, 71.61591f)), owning_building_guid = 88) LocalObject(690, Door.Constructor(Vector3(5444f, 6732f, 91.61491f)), owning_building_guid = 88) LocalObject(691, Door.Constructor(Vector3(5444f, 6748f, 71.61591f)), owning_building_guid = 88) LocalObject(692, Door.Constructor(Vector3(5444f, 6748f, 91.61491f)), owning_building_guid = 88) LocalObject(3581, Door.Constructor(Vector3(5443.146f, 6728.794f, 61.43091f)), owning_building_guid = 88) LocalObject(3582, Door.Constructor(Vector3(5443.146f, 6745.204f, 61.43091f)), owning_building_guid = 88) - LocalObject(1498, IFFLock.Constructor(Vector3(5441.957f, 6748.811f, 71.55591f), Vector3(0, 0, 0)), owning_building_guid = 88, door_guid = 691) - LocalObject(1499, IFFLock.Constructor(Vector3(5441.957f, 6748.811f, 91.55591f), Vector3(0, 0, 0)), owning_building_guid = 88, door_guid = 692) - LocalObject(1500, IFFLock.Constructor(Vector3(5446.047f, 6731.189f, 71.55591f), Vector3(0, 0, 180)), owning_building_guid = 88, door_guid = 689) - LocalObject(1501, IFFLock.Constructor(Vector3(5446.047f, 6731.189f, 91.55591f), Vector3(0, 0, 180)), owning_building_guid = 88, door_guid = 690) + LocalObject( + 1498, + IFFLock.Constructor(Vector3(5441.957f, 6748.811f, 71.55591f), Vector3(0, 0, 0)), + owning_building_guid = 88, + door_guid = 691 + ) + LocalObject( + 1499, + IFFLock.Constructor(Vector3(5441.957f, 6748.811f, 91.55591f), Vector3(0, 0, 0)), + owning_building_guid = 88, + door_guid = 692 + ) + LocalObject( + 1500, + IFFLock.Constructor(Vector3(5446.047f, 6731.189f, 71.55591f), Vector3(0, 0, 180)), + owning_building_guid = 88, + door_guid = 689 + ) + LocalObject( + 1501, + IFFLock.Constructor(Vector3(5446.047f, 6731.189f, 91.55591f), Vector3(0, 0, 180)), + owning_building_guid = 88, + door_guid = 690 + ) LocalObject(1961, Locker.Constructor(Vector3(5447.716f, 6724.963f, 60.08891f)), owning_building_guid = 88) LocalObject(1962, Locker.Constructor(Vector3(5447.751f, 6746.835f, 60.08891f)), owning_building_guid = 88) LocalObject(1963, Locker.Constructor(Vector3(5449.053f, 6724.963f, 60.08891f)), owning_building_guid = 88) @@ -2810,35 +8185,106 @@ object Map03 { // Cyssor LocalObject(1966, Locker.Constructor(Vector3(5451.741f, 6746.835f, 60.08891f)), owning_building_guid = 88) LocalObject(1967, Locker.Constructor(Vector3(5453.143f, 6724.963f, 60.08891f)), owning_building_guid = 88) LocalObject(1968, Locker.Constructor(Vector3(5453.143f, 6746.835f, 60.08891f)), owning_building_guid = 88) - LocalObject(2490, Terminal.Constructor(Vector3(5453.445f, 6730.129f, 61.42691f), order_terminal), owning_building_guid = 88) - LocalObject(2491, Terminal.Constructor(Vector3(5453.445f, 6735.853f, 61.42691f), order_terminal), owning_building_guid = 88) - LocalObject(2492, Terminal.Constructor(Vector3(5453.445f, 6741.234f, 61.42691f), order_terminal), owning_building_guid = 88) - LocalObject(3317, SpawnTube.Constructor(Vector3(5442.706f, 6727.742f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 88) - LocalObject(3318, SpawnTube.Constructor(Vector3(5442.706f, 6744.152f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 88) - LocalObject(2261, FacilityTurret.Constructor(Vector3(5419.32f, 6727.295f, 89.03691f), manned_turret), owning_building_guid = 88) + LocalObject( + 2490, + Terminal.Constructor(Vector3(5453.445f, 6730.129f, 61.42691f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2491, + Terminal.Constructor(Vector3(5453.445f, 6735.853f, 61.42691f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2492, + Terminal.Constructor(Vector3(5453.445f, 6741.234f, 61.42691f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 3317, + SpawnTube.Constructor(Vector3(5442.706f, 6727.742f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 88 + ) + LocalObject( + 3318, + SpawnTube.Constructor(Vector3(5442.706f, 6744.152f, 59.57691f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 88 + ) + LocalObject( + 2261, + FacilityTurret.Constructor(Vector3(5419.32f, 6727.295f, 89.03691f), manned_turret), + owning_building_guid = 88 + ) TurretToWeapon(2261, 5119) - LocalObject(2262, FacilityTurret.Constructor(Vector3(5454.647f, 6752.707f, 89.03691f), manned_turret), owning_building_guid = 88) + LocalObject( + 2262, + FacilityTurret.Constructor(Vector3(5454.647f, 6752.707f, 89.03691f), manned_turret), + owning_building_guid = 88 + ) TurretToWeapon(2262, 5120) - LocalObject(3053, Painbox.Constructor(Vector3(5437.235f, 6733.803f, 61.59401f), painbox_radius_continuous), owning_building_guid = 88) - LocalObject(3054, Painbox.Constructor(Vector3(5448.889f, 6742.086f, 60.19491f), painbox_radius_continuous), owning_building_guid = 88) - LocalObject(3055, Painbox.Constructor(Vector3(5448.975f, 6730.223f, 60.19491f), painbox_radius_continuous), owning_building_guid = 88) + LocalObject( + 3053, + Painbox.Constructor(Vector3(5437.235f, 6733.803f, 61.59401f), painbox_radius_continuous), + owning_building_guid = 88 + ) + LocalObject( + 3054, + Painbox.Constructor(Vector3(5448.889f, 6742.086f, 60.19491f), painbox_radius_continuous), + owning_building_guid = 88 + ) + LocalObject( + 3055, + Painbox.Constructor(Vector3(5448.975f, 6730.223f, 60.19491f), painbox_radius_continuous), + owning_building_guid = 88 + ) } Building31() def Building31(): Unit = { // Name: NW_TRSanc_Warpgate_Tower Type: tower_a GUID: 89, MapID: 31 - LocalBuilding("NW_TRSanc_Warpgate_Tower", 89, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5580f, 2080f, 59.54527f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(3375, CaptureTerminal.Constructor(Vector3(5596.587f, 2079.897f, 69.54427f), secondary_capture), owning_building_guid = 89) + LocalBuilding( + "NW_TRSanc_Warpgate_Tower", + 89, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5580f, 2080f, 59.54527f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 3375, + CaptureTerminal.Constructor(Vector3(5596.587f, 2079.897f, 69.54427f), secondary_capture), + owning_building_guid = 89 + ) LocalObject(697, Door.Constructor(Vector3(5592f, 2072f, 61.06627f)), owning_building_guid = 89) LocalObject(698, Door.Constructor(Vector3(5592f, 2072f, 81.06528f)), owning_building_guid = 89) LocalObject(699, Door.Constructor(Vector3(5592f, 2088f, 61.06627f)), owning_building_guid = 89) LocalObject(700, Door.Constructor(Vector3(5592f, 2088f, 81.06528f)), owning_building_guid = 89) LocalObject(3583, Door.Constructor(Vector3(5591.146f, 2068.794f, 50.88127f)), owning_building_guid = 89) LocalObject(3584, Door.Constructor(Vector3(5591.146f, 2085.204f, 50.88127f)), owning_building_guid = 89) - LocalObject(1502, IFFLock.Constructor(Vector3(5589.957f, 2088.811f, 61.00627f), Vector3(0, 0, 0)), owning_building_guid = 89, door_guid = 699) - LocalObject(1503, IFFLock.Constructor(Vector3(5589.957f, 2088.811f, 81.00627f), Vector3(0, 0, 0)), owning_building_guid = 89, door_guid = 700) - LocalObject(1504, IFFLock.Constructor(Vector3(5594.047f, 2071.189f, 61.00627f), Vector3(0, 0, 180)), owning_building_guid = 89, door_guid = 697) - LocalObject(1505, IFFLock.Constructor(Vector3(5594.047f, 2071.189f, 81.00627f), Vector3(0, 0, 180)), owning_building_guid = 89, door_guid = 698) + LocalObject( + 1502, + IFFLock.Constructor(Vector3(5589.957f, 2088.811f, 61.00627f), Vector3(0, 0, 0)), + owning_building_guid = 89, + door_guid = 699 + ) + LocalObject( + 1503, + IFFLock.Constructor(Vector3(5589.957f, 2088.811f, 81.00627f), Vector3(0, 0, 0)), + owning_building_guid = 89, + door_guid = 700 + ) + LocalObject( + 1504, + IFFLock.Constructor(Vector3(5594.047f, 2071.189f, 61.00627f), Vector3(0, 0, 180)), + owning_building_guid = 89, + door_guid = 697 + ) + LocalObject( + 1505, + IFFLock.Constructor(Vector3(5594.047f, 2071.189f, 81.00627f), Vector3(0, 0, 180)), + owning_building_guid = 89, + door_guid = 698 + ) LocalObject(1969, Locker.Constructor(Vector3(5595.716f, 2064.963f, 49.53927f)), owning_building_guid = 89) LocalObject(1970, Locker.Constructor(Vector3(5595.751f, 2086.835f, 49.53927f)), owning_building_guid = 89) LocalObject(1971, Locker.Constructor(Vector3(5597.053f, 2064.963f, 49.53927f)), owning_building_guid = 89) @@ -2847,35 +8293,106 @@ object Map03 { // Cyssor LocalObject(1974, Locker.Constructor(Vector3(5599.741f, 2086.835f, 49.53927f)), owning_building_guid = 89) LocalObject(1975, Locker.Constructor(Vector3(5601.143f, 2064.963f, 49.53927f)), owning_building_guid = 89) LocalObject(1976, Locker.Constructor(Vector3(5601.143f, 2086.835f, 49.53927f)), owning_building_guid = 89) - LocalObject(2493, Terminal.Constructor(Vector3(5601.445f, 2070.129f, 50.87727f), order_terminal), owning_building_guid = 89) - LocalObject(2494, Terminal.Constructor(Vector3(5601.445f, 2075.853f, 50.87727f), order_terminal), owning_building_guid = 89) - LocalObject(2495, Terminal.Constructor(Vector3(5601.445f, 2081.234f, 50.87727f), order_terminal), owning_building_guid = 89) - LocalObject(3319, SpawnTube.Constructor(Vector3(5590.706f, 2067.742f, 49.02728f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 89) - LocalObject(3320, SpawnTube.Constructor(Vector3(5590.706f, 2084.152f, 49.02728f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 89) - LocalObject(2266, FacilityTurret.Constructor(Vector3(5567.32f, 2067.295f, 78.48727f), manned_turret), owning_building_guid = 89) + LocalObject( + 2493, + Terminal.Constructor(Vector3(5601.445f, 2070.129f, 50.87727f), order_terminal), + owning_building_guid = 89 + ) + LocalObject( + 2494, + Terminal.Constructor(Vector3(5601.445f, 2075.853f, 50.87727f), order_terminal), + owning_building_guid = 89 + ) + LocalObject( + 2495, + Terminal.Constructor(Vector3(5601.445f, 2081.234f, 50.87727f), order_terminal), + owning_building_guid = 89 + ) + LocalObject( + 3319, + SpawnTube.Constructor(Vector3(5590.706f, 2067.742f, 49.02728f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 89 + ) + LocalObject( + 3320, + SpawnTube.Constructor(Vector3(5590.706f, 2084.152f, 49.02728f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 89 + ) + LocalObject( + 2266, + FacilityTurret.Constructor(Vector3(5567.32f, 2067.295f, 78.48727f), manned_turret), + owning_building_guid = 89 + ) TurretToWeapon(2266, 5121) - LocalObject(2267, FacilityTurret.Constructor(Vector3(5602.647f, 2092.707f, 78.48727f), manned_turret), owning_building_guid = 89) + LocalObject( + 2267, + FacilityTurret.Constructor(Vector3(5602.647f, 2092.707f, 78.48727f), manned_turret), + owning_building_guid = 89 + ) TurretToWeapon(2267, 5122) - LocalObject(3056, Painbox.Constructor(Vector3(5585.235f, 2073.803f, 51.04437f), painbox_radius_continuous), owning_building_guid = 89) - LocalObject(3057, Painbox.Constructor(Vector3(5596.889f, 2082.086f, 49.64527f), painbox_radius_continuous), owning_building_guid = 89) - LocalObject(3058, Painbox.Constructor(Vector3(5596.975f, 2070.223f, 49.64527f), painbox_radius_continuous), owning_building_guid = 89) + LocalObject( + 3056, + Painbox.Constructor(Vector3(5585.235f, 2073.803f, 51.04437f), painbox_radius_continuous), + owning_building_guid = 89 + ) + LocalObject( + 3057, + Painbox.Constructor(Vector3(5596.889f, 2082.086f, 49.64527f), painbox_radius_continuous), + owning_building_guid = 89 + ) + LocalObject( + 3058, + Painbox.Constructor(Vector3(5596.975f, 2070.223f, 49.64527f), painbox_radius_continuous), + owning_building_guid = 89 + ) } Building43() def Building43(): Unit = { // Name: S_Kaang_Tower Type: tower_a GUID: 90, MapID: 43 - LocalBuilding("S_Kaang_Tower", 90, 43, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5878f, 3642f, 93.63689f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(3377, CaptureTerminal.Constructor(Vector3(5894.587f, 3641.897f, 103.6359f), secondary_capture), owning_building_guid = 90) + LocalBuilding( + "S_Kaang_Tower", + 90, + 43, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5878f, 3642f, 93.63689f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 3377, + CaptureTerminal.Constructor(Vector3(5894.587f, 3641.897f, 103.6359f), secondary_capture), + owning_building_guid = 90 + ) LocalObject(731, Door.Constructor(Vector3(5890f, 3634f, 95.1579f)), owning_building_guid = 90) LocalObject(732, Door.Constructor(Vector3(5890f, 3634f, 115.1569f)), owning_building_guid = 90) LocalObject(733, Door.Constructor(Vector3(5890f, 3650f, 95.1579f)), owning_building_guid = 90) LocalObject(734, Door.Constructor(Vector3(5890f, 3650f, 115.1569f)), owning_building_guid = 90) LocalObject(3593, Door.Constructor(Vector3(5889.146f, 3630.794f, 84.97289f)), owning_building_guid = 90) LocalObject(3594, Door.Constructor(Vector3(5889.146f, 3647.204f, 84.97289f)), owning_building_guid = 90) - LocalObject(1531, IFFLock.Constructor(Vector3(5887.957f, 3650.811f, 95.09789f), Vector3(0, 0, 0)), owning_building_guid = 90, door_guid = 733) - LocalObject(1532, IFFLock.Constructor(Vector3(5887.957f, 3650.811f, 115.0979f), Vector3(0, 0, 0)), owning_building_guid = 90, door_guid = 734) - LocalObject(1533, IFFLock.Constructor(Vector3(5892.047f, 3633.189f, 95.09789f), Vector3(0, 0, 180)), owning_building_guid = 90, door_guid = 731) - LocalObject(1534, IFFLock.Constructor(Vector3(5892.047f, 3633.189f, 115.0979f), Vector3(0, 0, 180)), owning_building_guid = 90, door_guid = 732) + LocalObject( + 1531, + IFFLock.Constructor(Vector3(5887.957f, 3650.811f, 95.09789f), Vector3(0, 0, 0)), + owning_building_guid = 90, + door_guid = 733 + ) + LocalObject( + 1532, + IFFLock.Constructor(Vector3(5887.957f, 3650.811f, 115.0979f), Vector3(0, 0, 0)), + owning_building_guid = 90, + door_guid = 734 + ) + LocalObject( + 1533, + IFFLock.Constructor(Vector3(5892.047f, 3633.189f, 95.09789f), Vector3(0, 0, 180)), + owning_building_guid = 90, + door_guid = 731 + ) + LocalObject( + 1534, + IFFLock.Constructor(Vector3(5892.047f, 3633.189f, 115.0979f), Vector3(0, 0, 180)), + owning_building_guid = 90, + door_guid = 732 + ) LocalObject(2009, Locker.Constructor(Vector3(5893.716f, 3626.963f, 83.6309f)), owning_building_guid = 90) LocalObject(2010, Locker.Constructor(Vector3(5893.751f, 3648.835f, 83.6309f)), owning_building_guid = 90) LocalObject(2011, Locker.Constructor(Vector3(5895.053f, 3626.963f, 83.6309f)), owning_building_guid = 90) @@ -2884,35 +8401,106 @@ object Map03 { // Cyssor LocalObject(2014, Locker.Constructor(Vector3(5897.741f, 3648.835f, 83.6309f)), owning_building_guid = 90) LocalObject(2015, Locker.Constructor(Vector3(5899.143f, 3626.963f, 83.6309f)), owning_building_guid = 90) LocalObject(2016, Locker.Constructor(Vector3(5899.143f, 3648.835f, 83.6309f)), owning_building_guid = 90) - LocalObject(2511, Terminal.Constructor(Vector3(5899.445f, 3632.129f, 84.96889f), order_terminal), owning_building_guid = 90) - LocalObject(2512, Terminal.Constructor(Vector3(5899.445f, 3637.853f, 84.96889f), order_terminal), owning_building_guid = 90) - LocalObject(2513, Terminal.Constructor(Vector3(5899.445f, 3643.234f, 84.96889f), order_terminal), owning_building_guid = 90) - LocalObject(3329, SpawnTube.Constructor(Vector3(5888.706f, 3629.742f, 83.1189f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 90) - LocalObject(3330, SpawnTube.Constructor(Vector3(5888.706f, 3646.152f, 83.1189f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 90) - LocalObject(2277, FacilityTurret.Constructor(Vector3(5865.32f, 3629.295f, 112.5789f), manned_turret), owning_building_guid = 90) + LocalObject( + 2511, + Terminal.Constructor(Vector3(5899.445f, 3632.129f, 84.96889f), order_terminal), + owning_building_guid = 90 + ) + LocalObject( + 2512, + Terminal.Constructor(Vector3(5899.445f, 3637.853f, 84.96889f), order_terminal), + owning_building_guid = 90 + ) + LocalObject( + 2513, + Terminal.Constructor(Vector3(5899.445f, 3643.234f, 84.96889f), order_terminal), + owning_building_guid = 90 + ) + LocalObject( + 3329, + SpawnTube.Constructor(Vector3(5888.706f, 3629.742f, 83.1189f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 90 + ) + LocalObject( + 3330, + SpawnTube.Constructor(Vector3(5888.706f, 3646.152f, 83.1189f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 90 + ) + LocalObject( + 2277, + FacilityTurret.Constructor(Vector3(5865.32f, 3629.295f, 112.5789f), manned_turret), + owning_building_guid = 90 + ) TurretToWeapon(2277, 5123) - LocalObject(2279, FacilityTurret.Constructor(Vector3(5900.647f, 3654.707f, 112.5789f), manned_turret), owning_building_guid = 90) + LocalObject( + 2279, + FacilityTurret.Constructor(Vector3(5900.647f, 3654.707f, 112.5789f), manned_turret), + owning_building_guid = 90 + ) TurretToWeapon(2279, 5124) - LocalObject(3062, Painbox.Constructor(Vector3(5883.235f, 3635.803f, 85.13599f), painbox_radius_continuous), owning_building_guid = 90) - LocalObject(3063, Painbox.Constructor(Vector3(5894.889f, 3644.086f, 83.73689f), painbox_radius_continuous), owning_building_guid = 90) - LocalObject(3064, Painbox.Constructor(Vector3(5894.975f, 3632.223f, 83.73689f), painbox_radius_continuous), owning_building_guid = 90) + LocalObject( + 3062, + Painbox.Constructor(Vector3(5883.235f, 3635.803f, 85.13599f), painbox_radius_continuous), + owning_building_guid = 90 + ) + LocalObject( + 3063, + Painbox.Constructor(Vector3(5894.889f, 3644.086f, 83.73689f), painbox_radius_continuous), + owning_building_guid = 90 + ) + LocalObject( + 3064, + Painbox.Constructor(Vector3(5894.975f, 3632.223f, 83.73689f), painbox_radius_continuous), + owning_building_guid = 90 + ) } Building41() def Building41(): Unit = { // Name: NW_Pamba_Tower Type: tower_a GUID: 91, MapID: 41 - LocalBuilding("NW_Pamba_Tower", 91, 41, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6626f, 3680f, 47.49107f), Vector3(0f, 0f, 18f), tower_a))) - LocalObject(3378, CaptureTerminal.Constructor(Vector3(6641.807f, 3685.028f, 57.49007f), secondary_capture), owning_building_guid = 91) + LocalBuilding( + "NW_Pamba_Tower", + 91, + 41, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6626f, 3680f, 47.49107f), Vector3(0f, 0f, 18f), tower_a) + ) + ) + LocalObject( + 3378, + CaptureTerminal.Constructor(Vector3(6641.807f, 3685.028f, 57.49007f), secondary_capture), + owning_building_guid = 91 + ) LocalObject(741, Door.Constructor(Vector3(6634.94f, 3691.317f, 49.01207f)), owning_building_guid = 91) LocalObject(742, Door.Constructor(Vector3(6634.94f, 3691.317f, 69.01108f)), owning_building_guid = 91) LocalObject(743, Door.Constructor(Vector3(6639.885f, 3676.1f, 49.01207f)), owning_building_guid = 91) LocalObject(744, Door.Constructor(Vector3(6639.885f, 3676.1f, 69.01108f)), owning_building_guid = 91) LocalObject(3595, Door.Constructor(Vector3(6634.992f, 3688.394f, 38.82707f)), owning_building_guid = 91) LocalObject(3596, Door.Constructor(Vector3(6640.063f, 3672.787f, 38.82707f)), owning_building_guid = 91) - LocalObject(1536, IFFLock.Constructor(Vector3(6632.747f, 3691.457f, 48.95207f), Vector3(0, 0, 342)), owning_building_guid = 91, door_guid = 741) - LocalObject(1537, IFFLock.Constructor(Vector3(6632.747f, 3691.457f, 68.95207f), Vector3(0, 0, 342)), owning_building_guid = 91, door_guid = 742) - LocalObject(1538, IFFLock.Constructor(Vector3(6642.082f, 3675.961f, 48.95207f), Vector3(0, 0, 162)), owning_building_guid = 91, door_guid = 743) - LocalObject(1539, IFFLock.Constructor(Vector3(6642.082f, 3675.961f, 68.95207f), Vector3(0, 0, 162)), owning_building_guid = 91, door_guid = 744) + LocalObject( + 1536, + IFFLock.Constructor(Vector3(6632.747f, 3691.457f, 48.95207f), Vector3(0, 0, 342)), + owning_building_guid = 91, + door_guid = 741 + ) + LocalObject( + 1537, + IFFLock.Constructor(Vector3(6632.747f, 3691.457f, 68.95207f), Vector3(0, 0, 342)), + owning_building_guid = 91, + door_guid = 742 + ) + LocalObject( + 1538, + IFFLock.Constructor(Vector3(6642.082f, 3675.961f, 48.95207f), Vector3(0, 0, 162)), + owning_building_guid = 91, + door_guid = 743 + ) + LocalObject( + 1539, + IFFLock.Constructor(Vector3(6642.082f, 3675.961f, 68.95207f), Vector3(0, 0, 162)), + owning_building_guid = 91, + door_guid = 744 + ) LocalObject(2017, Locker.Constructor(Vector3(6638.868f, 3691.368f, 37.48507f)), owning_building_guid = 91) LocalObject(2018, Locker.Constructor(Vector3(6640.14f, 3691.781f, 37.48507f)), owning_building_guid = 91) LocalObject(2019, Locker.Constructor(Vector3(6642.663f, 3692.601f, 37.48507f)), owning_building_guid = 91) @@ -2921,35 +8509,106 @@ object Map03 { // Cyssor LocalObject(2022, Locker.Constructor(Vector3(6646.865f, 3670.969f, 37.48507f)), owning_building_guid = 91) LocalObject(2023, Locker.Constructor(Vector3(6649.421f, 3671.799f, 37.48507f)), owning_building_guid = 91) LocalObject(2024, Locker.Constructor(Vector3(6650.755f, 3672.232f, 37.48507f)), owning_building_guid = 91) - LocalObject(2514, Terminal.Constructor(Vector3(6646.014f, 3687.801f, 38.82307f), order_terminal), owning_building_guid = 91) - LocalObject(2515, Terminal.Constructor(Vector3(6647.677f, 3682.683f, 38.82307f), order_terminal), owning_building_guid = 91) - LocalObject(2516, Terminal.Constructor(Vector3(6649.446f, 3677.239f, 38.82307f), order_terminal), owning_building_guid = 91) - LocalObject(3331, SpawnTube.Constructor(Vector3(6634.899f, 3687.257f, 36.97308f), respawn_tube_tower, Vector3(0, 0, 342)), owning_building_guid = 91) - LocalObject(3332, SpawnTube.Constructor(Vector3(6639.97f, 3671.65f, 36.97308f), respawn_tube_tower, Vector3(0, 0, 342)), owning_building_guid = 91) - LocalObject(2281, FacilityTurret.Constructor(Vector3(6617.867f, 3663.999f, 66.43307f), manned_turret), owning_building_guid = 91) + LocalObject( + 2514, + Terminal.Constructor(Vector3(6646.014f, 3687.801f, 38.82307f), order_terminal), + owning_building_guid = 91 + ) + LocalObject( + 2515, + Terminal.Constructor(Vector3(6647.677f, 3682.683f, 38.82307f), order_terminal), + owning_building_guid = 91 + ) + LocalObject( + 2516, + Terminal.Constructor(Vector3(6649.446f, 3677.239f, 38.82307f), order_terminal), + owning_building_guid = 91 + ) + LocalObject( + 3331, + SpawnTube.Constructor(Vector3(6634.899f, 3687.257f, 36.97308f), respawn_tube_tower, Vector3(0, 0, 342)), + owning_building_guid = 91 + ) + LocalObject( + 3332, + SpawnTube.Constructor(Vector3(6639.97f, 3671.65f, 36.97308f), respawn_tube_tower, Vector3(0, 0, 342)), + owning_building_guid = 91 + ) + LocalObject( + 2281, + FacilityTurret.Constructor(Vector3(6617.867f, 3663.999f, 66.43307f), manned_turret), + owning_building_guid = 91 + ) TurretToWeapon(2281, 5125) - LocalObject(2282, FacilityTurret.Constructor(Vector3(6643.612f, 3699.083f, 66.43307f), manned_turret), owning_building_guid = 91) + LocalObject( + 2282, + FacilityTurret.Constructor(Vector3(6643.612f, 3699.083f, 66.43307f), manned_turret), + owning_building_guid = 91 + ) TurretToWeapon(2282, 5126) - LocalObject(3065, Painbox.Constructor(Vector3(6632.894f, 3675.724f, 38.99017f), painbox_radius_continuous), owning_building_guid = 91) - LocalObject(3066, Painbox.Constructor(Vector3(6641.418f, 3687.203f, 37.59107f), painbox_radius_continuous), owning_building_guid = 91) - LocalObject(3067, Painbox.Constructor(Vector3(6645.166f, 3675.947f, 37.59107f), painbox_radius_continuous), owning_building_guid = 91) + LocalObject( + 3065, + Painbox.Constructor(Vector3(6632.894f, 3675.724f, 38.99017f), painbox_radius_continuous), + owning_building_guid = 91 + ) + LocalObject( + 3066, + Painbox.Constructor(Vector3(6641.418f, 3687.203f, 37.59107f), painbox_radius_continuous), + owning_building_guid = 91 + ) + LocalObject( + 3067, + Painbox.Constructor(Vector3(6645.166f, 3675.947f, 37.59107f), painbox_radius_continuous), + owning_building_guid = 91 + ) } Building65() def Building65(): Unit = { // Name: E_Shango_Tower Type: tower_a GUID: 92, MapID: 65 - LocalBuilding("E_Shango_Tower", 92, 65, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6918f, 2176f, 78.13105f), Vector3(0f, 0f, 317f), tower_a))) - LocalObject(3380, CaptureTerminal.Constructor(Vector3(6930.061f, 2164.612f, 88.13005f), secondary_capture), owning_building_guid = 92) + LocalBuilding( + "E_Shango_Tower", + 92, + 65, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6918f, 2176f, 78.13105f), Vector3(0f, 0f, 317f), tower_a) + ) + ) + LocalObject( + 3380, + CaptureTerminal.Constructor(Vector3(6930.061f, 2164.612f, 88.13005f), secondary_capture), + owning_building_guid = 92 + ) LocalObject(763, Door.Constructor(Vector3(6921.32f, 2161.965f, 79.65205f)), owning_building_guid = 92) LocalObject(764, Door.Constructor(Vector3(6921.32f, 2161.965f, 99.65105f)), owning_building_guid = 92) LocalObject(765, Door.Constructor(Vector3(6932.232f, 2173.667f, 79.65205f)), owning_building_guid = 92) LocalObject(766, Door.Constructor(Vector3(6932.232f, 2173.667f, 99.65105f)), owning_building_guid = 92) LocalObject(3602, Door.Constructor(Vector3(6918.509f, 2160.203f, 69.46705f)), owning_building_guid = 92) LocalObject(3603, Door.Constructor(Vector3(6929.701f, 2172.204f, 69.46705f)), owning_building_guid = 92) - LocalObject(1554, IFFLock.Constructor(Vector3(6922.264f, 2159.976f, 79.59205f), Vector3(0, 0, 223)), owning_building_guid = 92, door_guid = 763) - LocalObject(1555, IFFLock.Constructor(Vector3(6922.264f, 2159.976f, 99.59205f), Vector3(0, 0, 223)), owning_building_guid = 92, door_guid = 764) - LocalObject(1556, IFFLock.Constructor(Vector3(6931.291f, 2175.653f, 79.59205f), Vector3(0, 0, 43)), owning_building_guid = 92, door_guid = 765) - LocalObject(1557, IFFLock.Constructor(Vector3(6931.291f, 2175.653f, 99.59205f), Vector3(0, 0, 43)), owning_building_guid = 92, door_guid = 766) + LocalObject( + 1554, + IFFLock.Constructor(Vector3(6922.264f, 2159.976f, 79.59205f), Vector3(0, 0, 223)), + owning_building_guid = 92, + door_guid = 763 + ) + LocalObject( + 1555, + IFFLock.Constructor(Vector3(6922.264f, 2159.976f, 99.59205f), Vector3(0, 0, 223)), + owning_building_guid = 92, + door_guid = 764 + ) + LocalObject( + 1556, + IFFLock.Constructor(Vector3(6931.291f, 2175.653f, 79.59205f), Vector3(0, 0, 43)), + owning_building_guid = 92, + door_guid = 765 + ) + LocalObject( + 1557, + IFFLock.Constructor(Vector3(6931.291f, 2175.653f, 99.59205f), Vector3(0, 0, 43)), + owning_building_guid = 92, + door_guid = 766 + ) LocalObject(2054, Locker.Constructor(Vector3(6919.239f, 2154.284f, 68.12505f)), owning_building_guid = 92) LocalObject(2055, Locker.Constructor(Vector3(6920.217f, 2153.373f, 68.12505f)), owning_building_guid = 92) LocalObject(2056, Locker.Constructor(Vector3(6922.183f, 2151.539f, 68.12505f)), owning_building_guid = 92) @@ -2958,25 +8617,76 @@ object Map03 { // Cyssor LocalObject(2059, Locker.Constructor(Vector3(6935.159f, 2169.345f, 68.12505f)), owning_building_guid = 92) LocalObject(2060, Locker.Constructor(Vector3(6937.099f, 2167.535f, 68.12505f)), owning_building_guid = 92) LocalObject(2061, Locker.Constructor(Vector3(6938.125f, 2166.579f, 68.12505f)), owning_building_guid = 92) - LocalObject(2524, Terminal.Constructor(Vector3(6926.952f, 2154.155f, 69.46305f), order_terminal), owning_building_guid = 92) - LocalObject(2525, Terminal.Constructor(Vector3(6930.855f, 2158.342f, 69.46305f), order_terminal), owning_building_guid = 92) - LocalObject(2526, Terminal.Constructor(Vector3(6934.525f, 2162.277f, 69.46305f), order_terminal), owning_building_guid = 92) - LocalObject(3338, SpawnTube.Constructor(Vector3(6917.47f, 2159.734f, 67.61305f), respawn_tube_tower, Vector3(0, 0, 43)), owning_building_guid = 92) - LocalObject(3339, SpawnTube.Constructor(Vector3(6928.662f, 2171.735f, 67.61305f), respawn_tube_tower, Vector3(0, 0, 43)), owning_building_guid = 92) - LocalObject(2290, FacilityTurret.Constructor(Vector3(6900.062f, 2175.356f, 97.07305f), manned_turret), owning_building_guid = 92) + LocalObject( + 2524, + Terminal.Constructor(Vector3(6926.952f, 2154.155f, 69.46305f), order_terminal), + owning_building_guid = 92 + ) + LocalObject( + 2525, + Terminal.Constructor(Vector3(6930.855f, 2158.342f, 69.46305f), order_terminal), + owning_building_guid = 92 + ) + LocalObject( + 2526, + Terminal.Constructor(Vector3(6934.525f, 2162.277f, 69.46305f), order_terminal), + owning_building_guid = 92 + ) + LocalObject( + 3338, + SpawnTube.Constructor(Vector3(6917.47f, 2159.734f, 67.61305f), respawn_tube_tower, Vector3(0, 0, 43)), + owning_building_guid = 92 + ) + LocalObject( + 3339, + SpawnTube.Constructor(Vector3(6928.662f, 2171.735f, 67.61305f), respawn_tube_tower, Vector3(0, 0, 43)), + owning_building_guid = 92 + ) + LocalObject( + 2290, + FacilityTurret.Constructor(Vector3(6900.062f, 2175.356f, 97.07305f), manned_turret), + owning_building_guid = 92 + ) TurretToWeapon(2290, 5127) - LocalObject(2291, FacilityTurret.Constructor(Vector3(6943.229f, 2169.848f, 97.07305f), manned_turret), owning_building_guid = 92) + LocalObject( + 2291, + FacilityTurret.Constructor(Vector3(6943.229f, 2169.848f, 97.07305f), manned_turret), + owning_building_guid = 92 + ) TurretToWeapon(2291, 5128) - LocalObject(3071, Painbox.Constructor(Vector3(6917.602f, 2167.897f, 69.63015f), painbox_radius_continuous), owning_building_guid = 92) - LocalObject(3072, Painbox.Constructor(Vector3(6923.747f, 2157.272f, 68.23105f), painbox_radius_continuous), owning_building_guid = 92) - LocalObject(3073, Painbox.Constructor(Vector3(6931.775f, 2166.007f, 68.23105f), painbox_radius_continuous), owning_building_guid = 92) + LocalObject( + 3071, + Painbox.Constructor(Vector3(6917.602f, 2167.897f, 69.63015f), painbox_radius_continuous), + owning_building_guid = 92 + ) + LocalObject( + 3072, + Painbox.Constructor(Vector3(6923.747f, 2157.272f, 68.23105f), painbox_radius_continuous), + owning_building_guid = 92 + ) + LocalObject( + 3073, + Painbox.Constructor(Vector3(6931.775f, 2166.007f, 68.23105f), painbox_radius_continuous), + owning_building_guid = 92 + ) } Building23() def Building23(): Unit = { // Name: N_Aja_Tower Type: tower_b GUID: 93, MapID: 23 - LocalBuilding("N_Aja_Tower", 93, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(602f, 5716f, 58.60714f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3350, CaptureTerminal.Constructor(Vector3(618.587f, 5715.897f, 78.60614f), secondary_capture), owning_building_guid = 93) + LocalBuilding( + "N_Aja_Tower", + 93, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(602f, 5716f, 58.60714f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3350, + CaptureTerminal.Constructor(Vector3(618.587f, 5715.897f, 78.60614f), secondary_capture), + owning_building_guid = 93 + ) LocalObject(422, Door.Constructor(Vector3(614f, 5708f, 60.12714f)), owning_building_guid = 93) LocalObject(423, Door.Constructor(Vector3(614f, 5708f, 70.12714f)), owning_building_guid = 93) LocalObject(424, Door.Constructor(Vector3(614f, 5708f, 90.12714f)), owning_building_guid = 93) @@ -2985,12 +8695,42 @@ object Map03 { // Cyssor LocalObject(427, Door.Constructor(Vector3(614f, 5724f, 90.12714f)), owning_building_guid = 93) LocalObject(3503, Door.Constructor(Vector3(613.147f, 5704.794f, 49.94314f)), owning_building_guid = 93) LocalObject(3504, Door.Constructor(Vector3(613.147f, 5721.204f, 49.94314f)), owning_building_guid = 93) - LocalObject(1286, IFFLock.Constructor(Vector3(611.957f, 5724.811f, 60.06813f), Vector3(0, 0, 0)), owning_building_guid = 93, door_guid = 425) - LocalObject(1287, IFFLock.Constructor(Vector3(611.957f, 5724.811f, 70.06814f), Vector3(0, 0, 0)), owning_building_guid = 93, door_guid = 426) - LocalObject(1288, IFFLock.Constructor(Vector3(611.957f, 5724.811f, 90.06814f), Vector3(0, 0, 0)), owning_building_guid = 93, door_guid = 427) - LocalObject(1289, IFFLock.Constructor(Vector3(616.047f, 5707.189f, 60.06813f), Vector3(0, 0, 180)), owning_building_guid = 93, door_guid = 422) - LocalObject(1290, IFFLock.Constructor(Vector3(616.047f, 5707.189f, 70.06814f), Vector3(0, 0, 180)), owning_building_guid = 93, door_guid = 423) - LocalObject(1291, IFFLock.Constructor(Vector3(616.047f, 5707.189f, 90.06814f), Vector3(0, 0, 180)), owning_building_guid = 93, door_guid = 424) + LocalObject( + 1286, + IFFLock.Constructor(Vector3(611.957f, 5724.811f, 60.06813f), Vector3(0, 0, 0)), + owning_building_guid = 93, + door_guid = 425 + ) + LocalObject( + 1287, + IFFLock.Constructor(Vector3(611.957f, 5724.811f, 70.06814f), Vector3(0, 0, 0)), + owning_building_guid = 93, + door_guid = 426 + ) + LocalObject( + 1288, + IFFLock.Constructor(Vector3(611.957f, 5724.811f, 90.06814f), Vector3(0, 0, 0)), + owning_building_guid = 93, + door_guid = 427 + ) + LocalObject( + 1289, + IFFLock.Constructor(Vector3(616.047f, 5707.189f, 60.06813f), Vector3(0, 0, 180)), + owning_building_guid = 93, + door_guid = 422 + ) + LocalObject( + 1290, + IFFLock.Constructor(Vector3(616.047f, 5707.189f, 70.06814f), Vector3(0, 0, 180)), + owning_building_guid = 93, + door_guid = 423 + ) + LocalObject( + 1291, + IFFLock.Constructor(Vector3(616.047f, 5707.189f, 90.06814f), Vector3(0, 0, 180)), + owning_building_guid = 93, + door_guid = 424 + ) LocalObject(1611, Locker.Constructor(Vector3(617.716f, 5700.963f, 48.60114f)), owning_building_guid = 93) LocalObject(1612, Locker.Constructor(Vector3(617.751f, 5722.835f, 48.60114f)), owning_building_guid = 93) LocalObject(1613, Locker.Constructor(Vector3(619.053f, 5700.963f, 48.60114f)), owning_building_guid = 93) @@ -2999,21 +8739,64 @@ object Map03 { // Cyssor LocalObject(1622, Locker.Constructor(Vector3(621.741f, 5722.835f, 48.60114f)), owning_building_guid = 93) LocalObject(1623, Locker.Constructor(Vector3(623.143f, 5700.963f, 48.60114f)), owning_building_guid = 93) LocalObject(1624, Locker.Constructor(Vector3(623.143f, 5722.835f, 48.60114f)), owning_building_guid = 93) - LocalObject(2364, Terminal.Constructor(Vector3(623.446f, 5706.129f, 49.93914f), order_terminal), owning_building_guid = 93) - LocalObject(2365, Terminal.Constructor(Vector3(623.446f, 5711.853f, 49.93914f), order_terminal), owning_building_guid = 93) - LocalObject(2366, Terminal.Constructor(Vector3(623.446f, 5717.234f, 49.93914f), order_terminal), owning_building_guid = 93) - LocalObject(3239, SpawnTube.Constructor(Vector3(612.706f, 5703.742f, 48.08913f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 93) - LocalObject(3240, SpawnTube.Constructor(Vector3(612.706f, 5720.152f, 48.08913f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 93) - LocalObject(2981, Painbox.Constructor(Vector3(607.4928f, 5708.849f, 49.89654f), painbox_radius_continuous), owning_building_guid = 93) - LocalObject(2982, Painbox.Constructor(Vector3(619.1271f, 5706.078f, 48.70714f), painbox_radius_continuous), owning_building_guid = 93) - LocalObject(2983, Painbox.Constructor(Vector3(619.2594f, 5718.107f, 48.70714f), painbox_radius_continuous), owning_building_guid = 93) + LocalObject( + 2364, + Terminal.Constructor(Vector3(623.446f, 5706.129f, 49.93914f), order_terminal), + owning_building_guid = 93 + ) + LocalObject( + 2365, + Terminal.Constructor(Vector3(623.446f, 5711.853f, 49.93914f), order_terminal), + owning_building_guid = 93 + ) + LocalObject( + 2366, + Terminal.Constructor(Vector3(623.446f, 5717.234f, 49.93914f), order_terminal), + owning_building_guid = 93 + ) + LocalObject( + 3239, + SpawnTube.Constructor(Vector3(612.706f, 5703.742f, 48.08913f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 93 + ) + LocalObject( + 3240, + SpawnTube.Constructor(Vector3(612.706f, 5720.152f, 48.08913f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 93 + ) + LocalObject( + 2981, + Painbox.Constructor(Vector3(607.4928f, 5708.849f, 49.89654f), painbox_radius_continuous), + owning_building_guid = 93 + ) + LocalObject( + 2982, + Painbox.Constructor(Vector3(619.1271f, 5706.078f, 48.70714f), painbox_radius_continuous), + owning_building_guid = 93 + ) + LocalObject( + 2983, + Painbox.Constructor(Vector3(619.2594f, 5718.107f, 48.70714f), painbox_radius_continuous), + owning_building_guid = 93 + ) } Building63() def Building63(): Unit = { // Name: E_Mukuru_Tower Type: tower_b GUID: 94, MapID: 63 - LocalBuilding("E_Mukuru_Tower", 94, 63, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(870f, 2290f, 48.92483f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3353, CaptureTerminal.Constructor(Vector3(886.587f, 2289.897f, 68.92383f), secondary_capture), owning_building_guid = 94) + LocalBuilding( + "E_Mukuru_Tower", + 94, + 63, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(870f, 2290f, 48.92483f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3353, + CaptureTerminal.Constructor(Vector3(886.587f, 2289.897f, 68.92383f), secondary_capture), + owning_building_guid = 94 + ) LocalObject(455, Door.Constructor(Vector3(882f, 2282f, 50.44483f)), owning_building_guid = 94) LocalObject(456, Door.Constructor(Vector3(882f, 2282f, 60.44483f)), owning_building_guid = 94) LocalObject(457, Door.Constructor(Vector3(882f, 2282f, 80.44483f)), owning_building_guid = 94) @@ -3022,12 +8805,42 @@ object Map03 { // Cyssor LocalObject(460, Door.Constructor(Vector3(882f, 2298f, 80.44483f)), owning_building_guid = 94) LocalObject(3512, Door.Constructor(Vector3(881.147f, 2278.794f, 40.26083f)), owning_building_guid = 94) LocalObject(3513, Door.Constructor(Vector3(881.147f, 2295.204f, 40.26083f)), owning_building_guid = 94) - LocalObject(1313, IFFLock.Constructor(Vector3(879.957f, 2298.811f, 50.38583f), Vector3(0, 0, 0)), owning_building_guid = 94, door_guid = 458) - LocalObject(1314, IFFLock.Constructor(Vector3(879.957f, 2298.811f, 60.38583f), Vector3(0, 0, 0)), owning_building_guid = 94, door_guid = 459) - LocalObject(1315, IFFLock.Constructor(Vector3(879.957f, 2298.811f, 80.38583f), Vector3(0, 0, 0)), owning_building_guid = 94, door_guid = 460) - LocalObject(1316, IFFLock.Constructor(Vector3(884.047f, 2281.189f, 50.38583f), Vector3(0, 0, 180)), owning_building_guid = 94, door_guid = 455) - LocalObject(1317, IFFLock.Constructor(Vector3(884.047f, 2281.189f, 60.38583f), Vector3(0, 0, 180)), owning_building_guid = 94, door_guid = 456) - LocalObject(1318, IFFLock.Constructor(Vector3(884.047f, 2281.189f, 80.38583f), Vector3(0, 0, 180)), owning_building_guid = 94, door_guid = 457) + LocalObject( + 1313, + IFFLock.Constructor(Vector3(879.957f, 2298.811f, 50.38583f), Vector3(0, 0, 0)), + owning_building_guid = 94, + door_guid = 458 + ) + LocalObject( + 1314, + IFFLock.Constructor(Vector3(879.957f, 2298.811f, 60.38583f), Vector3(0, 0, 0)), + owning_building_guid = 94, + door_guid = 459 + ) + LocalObject( + 1315, + IFFLock.Constructor(Vector3(879.957f, 2298.811f, 80.38583f), Vector3(0, 0, 0)), + owning_building_guid = 94, + door_guid = 460 + ) + LocalObject( + 1316, + IFFLock.Constructor(Vector3(884.047f, 2281.189f, 50.38583f), Vector3(0, 0, 180)), + owning_building_guid = 94, + door_guid = 455 + ) + LocalObject( + 1317, + IFFLock.Constructor(Vector3(884.047f, 2281.189f, 60.38583f), Vector3(0, 0, 180)), + owning_building_guid = 94, + door_guid = 456 + ) + LocalObject( + 1318, + IFFLock.Constructor(Vector3(884.047f, 2281.189f, 80.38583f), Vector3(0, 0, 180)), + owning_building_guid = 94, + door_guid = 457 + ) LocalObject(1658, Locker.Constructor(Vector3(885.716f, 2274.963f, 38.91883f)), owning_building_guid = 94) LocalObject(1659, Locker.Constructor(Vector3(885.751f, 2296.835f, 38.91883f)), owning_building_guid = 94) LocalObject(1660, Locker.Constructor(Vector3(887.053f, 2274.963f, 38.91883f)), owning_building_guid = 94) @@ -3036,21 +8849,64 @@ object Map03 { // Cyssor LocalObject(1663, Locker.Constructor(Vector3(889.741f, 2296.835f, 38.91883f)), owning_building_guid = 94) LocalObject(1664, Locker.Constructor(Vector3(891.143f, 2274.963f, 38.91883f)), owning_building_guid = 94) LocalObject(1665, Locker.Constructor(Vector3(891.143f, 2296.835f, 38.91883f)), owning_building_guid = 94) - LocalObject(2379, Terminal.Constructor(Vector3(891.446f, 2280.129f, 40.25683f), order_terminal), owning_building_guid = 94) - LocalObject(2380, Terminal.Constructor(Vector3(891.446f, 2285.853f, 40.25683f), order_terminal), owning_building_guid = 94) - LocalObject(2381, Terminal.Constructor(Vector3(891.446f, 2291.234f, 40.25683f), order_terminal), owning_building_guid = 94) - LocalObject(3248, SpawnTube.Constructor(Vector3(880.706f, 2277.742f, 38.40683f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 94) - LocalObject(3249, SpawnTube.Constructor(Vector3(880.706f, 2294.152f, 38.40683f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 94) - LocalObject(2990, Painbox.Constructor(Vector3(875.4928f, 2282.849f, 40.21423f), painbox_radius_continuous), owning_building_guid = 94) - LocalObject(2991, Painbox.Constructor(Vector3(887.1271f, 2280.078f, 39.02483f), painbox_radius_continuous), owning_building_guid = 94) - LocalObject(2992, Painbox.Constructor(Vector3(887.2594f, 2292.107f, 39.02483f), painbox_radius_continuous), owning_building_guid = 94) + LocalObject( + 2379, + Terminal.Constructor(Vector3(891.446f, 2280.129f, 40.25683f), order_terminal), + owning_building_guid = 94 + ) + LocalObject( + 2380, + Terminal.Constructor(Vector3(891.446f, 2285.853f, 40.25683f), order_terminal), + owning_building_guid = 94 + ) + LocalObject( + 2381, + Terminal.Constructor(Vector3(891.446f, 2291.234f, 40.25683f), order_terminal), + owning_building_guid = 94 + ) + LocalObject( + 3248, + SpawnTube.Constructor(Vector3(880.706f, 2277.742f, 38.40683f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 94 + ) + LocalObject( + 3249, + SpawnTube.Constructor(Vector3(880.706f, 2294.152f, 38.40683f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 94 + ) + LocalObject( + 2990, + Painbox.Constructor(Vector3(875.4928f, 2282.849f, 40.21423f), painbox_radius_continuous), + owning_building_guid = 94 + ) + LocalObject( + 2991, + Painbox.Constructor(Vector3(887.1271f, 2280.078f, 39.02483f), painbox_radius_continuous), + owning_building_guid = 94 + ) + LocalObject( + 2992, + Painbox.Constructor(Vector3(887.2594f, 2292.107f, 39.02483f), painbox_radius_continuous), + owning_building_guid = 94 + ) } Building28() def Building28(): Unit = { // Name: S_Leza_Tower Type: tower_b GUID: 95, MapID: 28 - LocalBuilding("S_Leza_Tower", 95, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2778f, 1254f, 64.07666f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3359, CaptureTerminal.Constructor(Vector3(2794.587f, 1253.897f, 84.07566f), secondary_capture), owning_building_guid = 95) + LocalBuilding( + "S_Leza_Tower", + 95, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2778f, 1254f, 64.07666f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3359, + CaptureTerminal.Constructor(Vector3(2794.587f, 1253.897f, 84.07566f), secondary_capture), + owning_building_guid = 95 + ) LocalObject(528, Door.Constructor(Vector3(2790f, 1246f, 65.59666f)), owning_building_guid = 95) LocalObject(529, Door.Constructor(Vector3(2790f, 1246f, 75.59666f)), owning_building_guid = 95) LocalObject(530, Door.Constructor(Vector3(2790f, 1246f, 95.59666f)), owning_building_guid = 95) @@ -3059,12 +8915,42 @@ object Map03 { // Cyssor LocalObject(533, Door.Constructor(Vector3(2790f, 1262f, 95.59666f)), owning_building_guid = 95) LocalObject(3533, Door.Constructor(Vector3(2789.147f, 1242.794f, 55.41266f)), owning_building_guid = 95) LocalObject(3534, Door.Constructor(Vector3(2789.147f, 1259.204f, 55.41266f)), owning_building_guid = 95) - LocalObject(1369, IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 65.53766f), Vector3(0, 0, 0)), owning_building_guid = 95, door_guid = 531) - LocalObject(1370, IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 75.53766f), Vector3(0, 0, 0)), owning_building_guid = 95, door_guid = 532) - LocalObject(1371, IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 95.53766f), Vector3(0, 0, 0)), owning_building_guid = 95, door_guid = 533) - LocalObject(1372, IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 65.53766f), Vector3(0, 0, 180)), owning_building_guid = 95, door_guid = 528) - LocalObject(1373, IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 75.53766f), Vector3(0, 0, 180)), owning_building_guid = 95, door_guid = 529) - LocalObject(1374, IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 95.53766f), Vector3(0, 0, 180)), owning_building_guid = 95, door_guid = 530) + LocalObject( + 1369, + IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 65.53766f), Vector3(0, 0, 0)), + owning_building_guid = 95, + door_guid = 531 + ) + LocalObject( + 1370, + IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 75.53766f), Vector3(0, 0, 0)), + owning_building_guid = 95, + door_guid = 532 + ) + LocalObject( + 1371, + IFFLock.Constructor(Vector3(2787.957f, 1262.811f, 95.53766f), Vector3(0, 0, 0)), + owning_building_guid = 95, + door_guid = 533 + ) + LocalObject( + 1372, + IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 65.53766f), Vector3(0, 0, 180)), + owning_building_guid = 95, + door_guid = 528 + ) + LocalObject( + 1373, + IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 75.53766f), Vector3(0, 0, 180)), + owning_building_guid = 95, + door_guid = 529 + ) + LocalObject( + 1374, + IFFLock.Constructor(Vector3(2792.047f, 1245.189f, 95.53766f), Vector3(0, 0, 180)), + owning_building_guid = 95, + door_guid = 530 + ) LocalObject(1742, Locker.Constructor(Vector3(2793.716f, 1238.963f, 54.07066f)), owning_building_guid = 95) LocalObject(1743, Locker.Constructor(Vector3(2793.751f, 1260.835f, 54.07066f)), owning_building_guid = 95) LocalObject(1744, Locker.Constructor(Vector3(2795.053f, 1238.963f, 54.07066f)), owning_building_guid = 95) @@ -3073,21 +8959,64 @@ object Map03 { // Cyssor LocalObject(1747, Locker.Constructor(Vector3(2797.741f, 1260.835f, 54.07066f)), owning_building_guid = 95) LocalObject(1748, Locker.Constructor(Vector3(2799.143f, 1238.963f, 54.07066f)), owning_building_guid = 95) LocalObject(1749, Locker.Constructor(Vector3(2799.143f, 1260.835f, 54.07066f)), owning_building_guid = 95) - LocalObject(2414, Terminal.Constructor(Vector3(2799.446f, 1244.129f, 55.40866f), order_terminal), owning_building_guid = 95) - LocalObject(2415, Terminal.Constructor(Vector3(2799.446f, 1249.853f, 55.40866f), order_terminal), owning_building_guid = 95) - LocalObject(2416, Terminal.Constructor(Vector3(2799.446f, 1255.234f, 55.40866f), order_terminal), owning_building_guid = 95) - LocalObject(3269, SpawnTube.Constructor(Vector3(2788.706f, 1241.742f, 53.55866f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 95) - LocalObject(3270, SpawnTube.Constructor(Vector3(2788.706f, 1258.152f, 53.55866f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 95) - LocalObject(3008, Painbox.Constructor(Vector3(2783.493f, 1246.849f, 55.36606f), painbox_radius_continuous), owning_building_guid = 95) - LocalObject(3009, Painbox.Constructor(Vector3(2795.127f, 1244.078f, 54.17666f), painbox_radius_continuous), owning_building_guid = 95) - LocalObject(3010, Painbox.Constructor(Vector3(2795.259f, 1256.107f, 54.17666f), painbox_radius_continuous), owning_building_guid = 95) + LocalObject( + 2414, + Terminal.Constructor(Vector3(2799.446f, 1244.129f, 55.40866f), order_terminal), + owning_building_guid = 95 + ) + LocalObject( + 2415, + Terminal.Constructor(Vector3(2799.446f, 1249.853f, 55.40866f), order_terminal), + owning_building_guid = 95 + ) + LocalObject( + 2416, + Terminal.Constructor(Vector3(2799.446f, 1255.234f, 55.40866f), order_terminal), + owning_building_guid = 95 + ) + LocalObject( + 3269, + SpawnTube.Constructor(Vector3(2788.706f, 1241.742f, 53.55866f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 95 + ) + LocalObject( + 3270, + SpawnTube.Constructor(Vector3(2788.706f, 1258.152f, 53.55866f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 95 + ) + LocalObject( + 3008, + Painbox.Constructor(Vector3(2783.493f, 1246.849f, 55.36606f), painbox_radius_continuous), + owning_building_guid = 95 + ) + LocalObject( + 3009, + Painbox.Constructor(Vector3(2795.127f, 1244.078f, 54.17666f), painbox_radius_continuous), + owning_building_guid = 95 + ) + LocalObject( + 3010, + Painbox.Constructor(Vector3(2795.259f, 1256.107f, 54.17666f), painbox_radius_continuous), + owning_building_guid = 95 + ) } Building30() def Building30(): Unit = { // Name: NE_Tore_Tower Type: tower_b GUID: 96, MapID: 30 - LocalBuilding("NE_Tore_Tower", 96, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3580f, 3226f, 46.48213f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3364, CaptureTerminal.Constructor(Vector3(3596.587f, 3225.897f, 66.48113f), secondary_capture), owning_building_guid = 96) + LocalBuilding( + "NE_Tore_Tower", + 96, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3580f, 3226f, 46.48213f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3364, + CaptureTerminal.Constructor(Vector3(3596.587f, 3225.897f, 66.48113f), secondary_capture), + owning_building_guid = 96 + ) LocalObject(564, Door.Constructor(Vector3(3592f, 3218f, 48.00213f)), owning_building_guid = 96) LocalObject(565, Door.Constructor(Vector3(3592f, 3218f, 58.00213f)), owning_building_guid = 96) LocalObject(566, Door.Constructor(Vector3(3592f, 3218f, 78.00214f)), owning_building_guid = 96) @@ -3096,12 +9025,42 @@ object Map03 { // Cyssor LocalObject(569, Door.Constructor(Vector3(3592f, 3234f, 78.00214f)), owning_building_guid = 96) LocalObject(3546, Door.Constructor(Vector3(3591.147f, 3214.794f, 37.81813f)), owning_building_guid = 96) LocalObject(3547, Door.Constructor(Vector3(3591.147f, 3231.204f, 37.81813f)), owning_building_guid = 96) - LocalObject(1402, IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 47.94313f), Vector3(0, 0, 0)), owning_building_guid = 96, door_guid = 567) - LocalObject(1403, IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 57.94313f), Vector3(0, 0, 0)), owning_building_guid = 96, door_guid = 568) - LocalObject(1404, IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 77.94313f), Vector3(0, 0, 0)), owning_building_guid = 96, door_guid = 569) - LocalObject(1405, IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 47.94313f), Vector3(0, 0, 180)), owning_building_guid = 96, door_guid = 564) - LocalObject(1406, IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 57.94313f), Vector3(0, 0, 180)), owning_building_guid = 96, door_guid = 565) - LocalObject(1407, IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 77.94313f), Vector3(0, 0, 180)), owning_building_guid = 96, door_guid = 566) + LocalObject( + 1402, + IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 47.94313f), Vector3(0, 0, 0)), + owning_building_guid = 96, + door_guid = 567 + ) + LocalObject( + 1403, + IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 57.94313f), Vector3(0, 0, 0)), + owning_building_guid = 96, + door_guid = 568 + ) + LocalObject( + 1404, + IFFLock.Constructor(Vector3(3589.957f, 3234.811f, 77.94313f), Vector3(0, 0, 0)), + owning_building_guid = 96, + door_guid = 569 + ) + LocalObject( + 1405, + IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 47.94313f), Vector3(0, 0, 180)), + owning_building_guid = 96, + door_guid = 564 + ) + LocalObject( + 1406, + IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 57.94313f), Vector3(0, 0, 180)), + owning_building_guid = 96, + door_guid = 565 + ) + LocalObject( + 1407, + IFFLock.Constructor(Vector3(3594.047f, 3217.189f, 77.94313f), Vector3(0, 0, 180)), + owning_building_guid = 96, + door_guid = 566 + ) LocalObject(1794, Locker.Constructor(Vector3(3595.716f, 3210.963f, 36.47613f)), owning_building_guid = 96) LocalObject(1795, Locker.Constructor(Vector3(3595.751f, 3232.835f, 36.47613f)), owning_building_guid = 96) LocalObject(1796, Locker.Constructor(Vector3(3597.053f, 3210.963f, 36.47613f)), owning_building_guid = 96) @@ -3110,21 +9069,64 @@ object Map03 { // Cyssor LocalObject(1799, Locker.Constructor(Vector3(3599.741f, 3232.835f, 36.47613f)), owning_building_guid = 96) LocalObject(1800, Locker.Constructor(Vector3(3601.143f, 3210.963f, 36.47613f)), owning_building_guid = 96) LocalObject(1801, Locker.Constructor(Vector3(3601.143f, 3232.835f, 36.47613f)), owning_building_guid = 96) - LocalObject(2436, Terminal.Constructor(Vector3(3601.446f, 3216.129f, 37.81413f), order_terminal), owning_building_guid = 96) - LocalObject(2437, Terminal.Constructor(Vector3(3601.446f, 3221.853f, 37.81413f), order_terminal), owning_building_guid = 96) - LocalObject(2438, Terminal.Constructor(Vector3(3601.446f, 3227.234f, 37.81413f), order_terminal), owning_building_guid = 96) - LocalObject(3282, SpawnTube.Constructor(Vector3(3590.706f, 3213.742f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 96) - LocalObject(3283, SpawnTube.Constructor(Vector3(3590.706f, 3230.152f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 96) - LocalObject(3023, Painbox.Constructor(Vector3(3585.493f, 3218.849f, 37.77153f), painbox_radius_continuous), owning_building_guid = 96) - LocalObject(3024, Painbox.Constructor(Vector3(3597.127f, 3216.078f, 36.58213f), painbox_radius_continuous), owning_building_guid = 96) - LocalObject(3025, Painbox.Constructor(Vector3(3597.259f, 3228.107f, 36.58213f), painbox_radius_continuous), owning_building_guid = 96) + LocalObject( + 2436, + Terminal.Constructor(Vector3(3601.446f, 3216.129f, 37.81413f), order_terminal), + owning_building_guid = 96 + ) + LocalObject( + 2437, + Terminal.Constructor(Vector3(3601.446f, 3221.853f, 37.81413f), order_terminal), + owning_building_guid = 96 + ) + LocalObject( + 2438, + Terminal.Constructor(Vector3(3601.446f, 3227.234f, 37.81413f), order_terminal), + owning_building_guid = 96 + ) + LocalObject( + 3282, + SpawnTube.Constructor(Vector3(3590.706f, 3213.742f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 96 + ) + LocalObject( + 3283, + SpawnTube.Constructor(Vector3(3590.706f, 3230.152f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 96 + ) + LocalObject( + 3023, + Painbox.Constructor(Vector3(3585.493f, 3218.849f, 37.77153f), painbox_radius_continuous), + owning_building_guid = 96 + ) + LocalObject( + 3024, + Painbox.Constructor(Vector3(3597.127f, 3216.078f, 36.58213f), painbox_radius_continuous), + owning_building_guid = 96 + ) + LocalObject( + 3025, + Painbox.Constructor(Vector3(3597.259f, 3228.107f, 36.58213f), painbox_radius_continuous), + owning_building_guid = 96 + ) } Building68() def Building68(): Unit = { // Name: N_Honsi_Tower Type: tower_b GUID: 97, MapID: 68 - LocalBuilding("N_Honsi_Tower", 97, 68, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3970f, 4816f, 91.19419f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3366, CaptureTerminal.Constructor(Vector3(3986.587f, 4815.897f, 111.1932f), secondary_capture), owning_building_guid = 97) + LocalBuilding( + "N_Honsi_Tower", + 97, + 68, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3970f, 4816f, 91.19419f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3366, + CaptureTerminal.Constructor(Vector3(3986.587f, 4815.897f, 111.1932f), secondary_capture), + owning_building_guid = 97 + ) LocalObject(581, Door.Constructor(Vector3(3982f, 4808f, 92.71419f)), owning_building_guid = 97) LocalObject(582, Door.Constructor(Vector3(3982f, 4808f, 102.7142f)), owning_building_guid = 97) LocalObject(583, Door.Constructor(Vector3(3982f, 4808f, 122.7142f)), owning_building_guid = 97) @@ -3133,12 +9135,42 @@ object Map03 { // Cyssor LocalObject(586, Door.Constructor(Vector3(3982f, 4824f, 122.7142f)), owning_building_guid = 97) LocalObject(3550, Door.Constructor(Vector3(3981.147f, 4804.794f, 82.53019f)), owning_building_guid = 97) LocalObject(3551, Door.Constructor(Vector3(3981.147f, 4821.204f, 82.53019f)), owning_building_guid = 97) - LocalObject(1414, IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 92.65519f), Vector3(0, 0, 0)), owning_building_guid = 97, door_guid = 584) - LocalObject(1415, IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 102.6552f), Vector3(0, 0, 0)), owning_building_guid = 97, door_guid = 585) - LocalObject(1416, IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 122.6552f), Vector3(0, 0, 0)), owning_building_guid = 97, door_guid = 586) - LocalObject(1418, IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 92.65519f), Vector3(0, 0, 180)), owning_building_guid = 97, door_guid = 581) - LocalObject(1419, IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 102.6552f), Vector3(0, 0, 180)), owning_building_guid = 97, door_guid = 582) - LocalObject(1420, IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 122.6552f), Vector3(0, 0, 180)), owning_building_guid = 97, door_guid = 583) + LocalObject( + 1414, + IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 92.65519f), Vector3(0, 0, 0)), + owning_building_guid = 97, + door_guid = 584 + ) + LocalObject( + 1415, + IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 102.6552f), Vector3(0, 0, 0)), + owning_building_guid = 97, + door_guid = 585 + ) + LocalObject( + 1416, + IFFLock.Constructor(Vector3(3979.957f, 4824.811f, 122.6552f), Vector3(0, 0, 0)), + owning_building_guid = 97, + door_guid = 586 + ) + LocalObject( + 1418, + IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 92.65519f), Vector3(0, 0, 180)), + owning_building_guid = 97, + door_guid = 581 + ) + LocalObject( + 1419, + IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 102.6552f), Vector3(0, 0, 180)), + owning_building_guid = 97, + door_guid = 582 + ) + LocalObject( + 1420, + IFFLock.Constructor(Vector3(3984.047f, 4807.189f, 122.6552f), Vector3(0, 0, 180)), + owning_building_guid = 97, + door_guid = 583 + ) LocalObject(1810, Locker.Constructor(Vector3(3985.716f, 4800.963f, 81.18819f)), owning_building_guid = 97) LocalObject(1811, Locker.Constructor(Vector3(3985.751f, 4822.835f, 81.18819f)), owning_building_guid = 97) LocalObject(1812, Locker.Constructor(Vector3(3987.053f, 4800.963f, 81.18819f)), owning_building_guid = 97) @@ -3147,21 +9179,64 @@ object Map03 { // Cyssor LocalObject(1815, Locker.Constructor(Vector3(3989.741f, 4822.835f, 81.18819f)), owning_building_guid = 97) LocalObject(1816, Locker.Constructor(Vector3(3991.143f, 4800.963f, 81.18819f)), owning_building_guid = 97) LocalObject(1817, Locker.Constructor(Vector3(3991.143f, 4822.835f, 81.18819f)), owning_building_guid = 97) - LocalObject(2443, Terminal.Constructor(Vector3(3991.446f, 4806.129f, 82.52619f), order_terminal), owning_building_guid = 97) - LocalObject(2444, Terminal.Constructor(Vector3(3991.446f, 4811.853f, 82.52619f), order_terminal), owning_building_guid = 97) - LocalObject(2445, Terminal.Constructor(Vector3(3991.446f, 4817.234f, 82.52619f), order_terminal), owning_building_guid = 97) - LocalObject(3286, SpawnTube.Constructor(Vector3(3980.706f, 4803.742f, 80.67619f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 97) - LocalObject(3287, SpawnTube.Constructor(Vector3(3980.706f, 4820.152f, 80.67619f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 97) - LocalObject(3029, Painbox.Constructor(Vector3(3975.493f, 4808.849f, 82.48359f), painbox_radius_continuous), owning_building_guid = 97) - LocalObject(3031, Painbox.Constructor(Vector3(3987.127f, 4806.078f, 81.29419f), painbox_radius_continuous), owning_building_guid = 97) - LocalObject(3032, Painbox.Constructor(Vector3(3987.259f, 4818.107f, 81.29419f), painbox_radius_continuous), owning_building_guid = 97) + LocalObject( + 2443, + Terminal.Constructor(Vector3(3991.446f, 4806.129f, 82.52619f), order_terminal), + owning_building_guid = 97 + ) + LocalObject( + 2444, + Terminal.Constructor(Vector3(3991.446f, 4811.853f, 82.52619f), order_terminal), + owning_building_guid = 97 + ) + LocalObject( + 2445, + Terminal.Constructor(Vector3(3991.446f, 4817.234f, 82.52619f), order_terminal), + owning_building_guid = 97 + ) + LocalObject( + 3286, + SpawnTube.Constructor(Vector3(3980.706f, 4803.742f, 80.67619f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 97 + ) + LocalObject( + 3287, + SpawnTube.Constructor(Vector3(3980.706f, 4820.152f, 80.67619f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 97 + ) + LocalObject( + 3029, + Painbox.Constructor(Vector3(3975.493f, 4808.849f, 82.48359f), painbox_radius_continuous), + owning_building_guid = 97 + ) + LocalObject( + 3031, + Painbox.Constructor(Vector3(3987.127f, 4806.078f, 81.29419f), painbox_radius_continuous), + owning_building_guid = 97 + ) + LocalObject( + 3032, + Painbox.Constructor(Vector3(3987.259f, 4818.107f, 81.29419f), painbox_radius_continuous), + owning_building_guid = 97 + ) } Building45() def Building45(): Unit = { // Name: SW_Itan_Tower Type: tower_b GUID: 98, MapID: 45 - LocalBuilding("SW_Itan_Tower", 98, 45, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4846f, 3116f, 59.06708f), Vector3(0f, 0f, 331f), tower_b))) - LocalObject(3369, CaptureTerminal.Constructor(Vector3(4860.458f, 3107.868f, 79.06608f), secondary_capture), owning_building_guid = 98) + LocalBuilding( + "SW_Itan_Tower", + 98, + 45, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4846f, 3116f, 59.06708f), Vector3(0f, 0f, 331f), tower_b) + ) + ) + LocalObject( + 3369, + CaptureTerminal.Constructor(Vector3(4860.458f, 3107.868f, 79.06608f), secondary_capture), + owning_building_guid = 98 + ) LocalObject(614, Door.Constructor(Vector3(4852.617f, 3103.185f, 60.58708f)), owning_building_guid = 98) LocalObject(615, Door.Constructor(Vector3(4852.617f, 3103.185f, 70.58708f)), owning_building_guid = 98) LocalObject(616, Door.Constructor(Vector3(4852.617f, 3103.185f, 90.58708f)), owning_building_guid = 98) @@ -3170,12 +9245,42 @@ object Map03 { // Cyssor LocalObject(619, Door.Constructor(Vector3(4860.374f, 3117.179f, 90.58708f)), owning_building_guid = 98) LocalObject(3562, Door.Constructor(Vector3(4850.316f, 3100.795f, 50.40308f)), owning_building_guid = 98) LocalObject(3563, Door.Constructor(Vector3(4858.272f, 3115.147f, 50.40308f)), owning_building_guid = 98) - LocalObject(1442, IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 60.52808f), Vector3(0, 0, 209)), owning_building_guid = 98, door_guid = 614) - LocalObject(1443, IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 70.52808f), Vector3(0, 0, 209)), owning_building_guid = 98, door_guid = 615) - LocalObject(1444, IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 90.52808f), Vector3(0, 0, 209)), owning_building_guid = 98, door_guid = 616) - LocalObject(1445, IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 60.52808f), Vector3(0, 0, 29)), owning_building_guid = 98, door_guid = 617) - LocalObject(1446, IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 70.52808f), Vector3(0, 0, 29)), owning_building_guid = 98, door_guid = 618) - LocalObject(1447, IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 90.52808f), Vector3(0, 0, 29)), owning_building_guid = 98, door_guid = 619) + LocalObject( + 1442, + IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 60.52808f), Vector3(0, 0, 209)), + owning_building_guid = 98, + door_guid = 614 + ) + LocalObject( + 1443, + IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 70.52808f), Vector3(0, 0, 209)), + owning_building_guid = 98, + door_guid = 615 + ) + LocalObject( + 1444, + IFFLock.Constructor(Vector3(4854.014f, 3101.484f, 90.52808f), Vector3(0, 0, 209)), + owning_building_guid = 98, + door_guid = 616 + ) + LocalObject( + 1445, + IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 60.52808f), Vector3(0, 0, 29)), + owning_building_guid = 98, + door_guid = 617 + ) + LocalObject( + 1446, + IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 70.52808f), Vector3(0, 0, 29)), + owning_building_guid = 98, + door_guid = 618 + ) + LocalObject( + 1447, + IFFLock.Constructor(Vector3(4858.98f, 3118.879f, 90.52808f), Vector3(0, 0, 29)), + owning_building_guid = 98, + door_guid = 619 + ) LocalObject(1876, Locker.Constructor(Vector3(4852.456f, 3095.229f, 49.06108f)), owning_building_guid = 98) LocalObject(1877, Locker.Constructor(Vector3(4853.625f, 3094.581f, 49.06108f)), owning_building_guid = 98) LocalObject(1878, Locker.Constructor(Vector3(4855.976f, 3093.278f, 49.06108f)), owning_building_guid = 98) @@ -3184,21 +9289,64 @@ object Map03 { // Cyssor LocalObject(1881, Locker.Constructor(Vector3(4864.259f, 3113.694f, 49.06108f)), owning_building_guid = 98) LocalObject(1882, Locker.Constructor(Vector3(4866.58f, 3112.407f, 49.06108f)), owning_building_guid = 98) LocalObject(1883, Locker.Constructor(Vector3(4867.806f, 3111.728f, 49.06108f)), owning_building_guid = 98) - LocalObject(2459, Terminal.Constructor(Vector3(4859.972f, 3096.969f, 50.39908f), order_terminal), owning_building_guid = 98) - LocalObject(2460, Terminal.Constructor(Vector3(4862.747f, 3101.976f, 50.39908f), order_terminal), owning_building_guid = 98) - LocalObject(2461, Terminal.Constructor(Vector3(4865.355f, 3106.682f, 50.39908f), order_terminal), owning_building_guid = 98) - LocalObject(3298, SpawnTube.Constructor(Vector3(4849.421f, 3100.089f, 48.54908f), respawn_tube_tower, Vector3(0, 0, 29)), owning_building_guid = 98) - LocalObject(3299, SpawnTube.Constructor(Vector3(4857.376f, 3114.441f, 48.54908f), respawn_tube_tower, Vector3(0, 0, 29)), owning_building_guid = 98) - LocalObject(3038, Painbox.Constructor(Vector3(4847.337f, 3107.083f, 50.35648f), painbox_radius_continuous), owning_building_guid = 98) - LocalObject(3039, Painbox.Constructor(Vector3(4856.169f, 3099.019f, 49.16708f), painbox_radius_continuous), owning_building_guid = 98) - LocalObject(3040, Painbox.Constructor(Vector3(4862.117f, 3109.475f, 49.16708f), painbox_radius_continuous), owning_building_guid = 98) + LocalObject( + 2459, + Terminal.Constructor(Vector3(4859.972f, 3096.969f, 50.39908f), order_terminal), + owning_building_guid = 98 + ) + LocalObject( + 2460, + Terminal.Constructor(Vector3(4862.747f, 3101.976f, 50.39908f), order_terminal), + owning_building_guid = 98 + ) + LocalObject( + 2461, + Terminal.Constructor(Vector3(4865.355f, 3106.682f, 50.39908f), order_terminal), + owning_building_guid = 98 + ) + LocalObject( + 3298, + SpawnTube.Constructor(Vector3(4849.421f, 3100.089f, 48.54908f), respawn_tube_tower, Vector3(0, 0, 29)), + owning_building_guid = 98 + ) + LocalObject( + 3299, + SpawnTube.Constructor(Vector3(4857.376f, 3114.441f, 48.54908f), respawn_tube_tower, Vector3(0, 0, 29)), + owning_building_guid = 98 + ) + LocalObject( + 3038, + Painbox.Constructor(Vector3(4847.337f, 3107.083f, 50.35648f), painbox_radius_continuous), + owning_building_guid = 98 + ) + LocalObject( + 3039, + Painbox.Constructor(Vector3(4856.169f, 3099.019f, 49.16708f), painbox_radius_continuous), + owning_building_guid = 98 + ) + LocalObject( + 3040, + Painbox.Constructor(Vector3(4862.117f, 3109.475f, 49.16708f), painbox_radius_continuous), + owning_building_guid = 98 + ) } Building32() def Building32(): Unit = { // Name: SE_Gunuku_Tower Type: tower_b GUID: 99, MapID: 32 - LocalBuilding("SE_Gunuku_Tower", 99, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5146f, 3968f, 50.28779f), Vector3(0f, 0f, 349f), tower_b))) - LocalObject(3371, CaptureTerminal.Constructor(Vector3(5162.263f, 3964.734f, 70.28679f), secondary_capture), owning_building_guid = 99) + LocalBuilding( + "SE_Gunuku_Tower", + 99, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5146f, 3968f, 50.28779f), Vector3(0f, 0f, 349f), tower_b) + ) + ) + LocalObject( + 3371, + CaptureTerminal.Constructor(Vector3(5162.263f, 3964.734f, 70.28679f), secondary_capture), + owning_building_guid = 99 + ) LocalObject(667, Door.Constructor(Vector3(5156.253f, 3957.857f, 51.80779f)), owning_building_guid = 99) LocalObject(668, Door.Constructor(Vector3(5156.253f, 3957.857f, 61.80779f)), owning_building_guid = 99) LocalObject(669, Door.Constructor(Vector3(5156.253f, 3957.857f, 81.80779f)), owning_building_guid = 99) @@ -3207,12 +9355,42 @@ object Map03 { // Cyssor LocalObject(673, Door.Constructor(Vector3(5159.306f, 3973.563f, 81.80779f)), owning_building_guid = 99) LocalObject(3575, Door.Constructor(Vector3(5154.804f, 3954.873f, 41.62379f)), owning_building_guid = 99) LocalObject(3576, Door.Constructor(Vector3(5157.935f, 3970.981f, 41.62379f)), owning_building_guid = 99) - LocalObject(1481, IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 51.74879f), Vector3(0, 0, 11)), owning_building_guid = 99, door_guid = 671) - LocalObject(1482, IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 61.74879f), Vector3(0, 0, 11)), owning_building_guid = 99, door_guid = 672) - LocalObject(1483, IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 81.74879f), Vector3(0, 0, 11)), owning_building_guid = 99, door_guid = 673) - LocalObject(1484, IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 51.74879f), Vector3(0, 0, 191)), owning_building_guid = 99, door_guid = 667) - LocalObject(1485, IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 61.74879f), Vector3(0, 0, 191)), owning_building_guid = 99, door_guid = 668) - LocalObject(1486, IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 81.74879f), Vector3(0, 0, 191)), owning_building_guid = 99, door_guid = 669) + LocalObject( + 1481, + IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 51.74879f), Vector3(0, 0, 11)), + owning_building_guid = 99, + door_guid = 671 + ) + LocalObject( + 1482, + IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 61.74879f), Vector3(0, 0, 11)), + owning_building_guid = 99, + door_guid = 672 + ) + LocalObject( + 1483, + IFFLock.Constructor(Vector3(5157.455f, 3974.749f, 81.74879f), Vector3(0, 0, 11)), + owning_building_guid = 99, + door_guid = 673 + ) + LocalObject( + 1484, + IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 51.74879f), Vector3(0, 0, 191)), + owning_building_guid = 99, + door_guid = 667 + ) + LocalObject( + 1485, + IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 61.74879f), Vector3(0, 0, 191)), + owning_building_guid = 99, + door_guid = 668 + ) + LocalObject( + 1486, + IFFLock.Constructor(Vector3(5158.108f, 3956.671f, 81.74879f), Vector3(0, 0, 191)), + owning_building_guid = 99, + door_guid = 669 + ) LocalObject(1925, Locker.Constructor(Vector3(5158.558f, 3950.24f, 40.28179f)), owning_building_guid = 99) LocalObject(1926, Locker.Constructor(Vector3(5159.871f, 3949.985f, 40.28179f)), owning_building_guid = 99) LocalObject(1927, Locker.Constructor(Vector3(5162.509f, 3949.472f, 40.28179f)), owning_building_guid = 99) @@ -3221,21 +9399,64 @@ object Map03 { // Cyssor LocalObject(1930, Locker.Constructor(Vector3(5164.078f, 3971.449f, 40.28179f)), owning_building_guid = 99) LocalObject(1935, Locker.Constructor(Vector3(5166.683f, 3970.943f, 40.28179f)), owning_building_guid = 99) LocalObject(1940, Locker.Constructor(Vector3(5168.059f, 3970.675f, 40.28179f)), owning_building_guid = 99) - LocalObject(2481, Terminal.Constructor(Vector3(5165.168f, 3954.218f, 41.61979f), order_terminal), owning_building_guid = 99) - LocalObject(2482, Terminal.Constructor(Vector3(5166.261f, 3959.837f, 41.61979f), order_terminal), owning_building_guid = 99) - LocalObject(2483, Terminal.Constructor(Vector3(5167.288f, 3965.119f, 41.61979f), order_terminal), owning_building_guid = 99) - LocalObject(3311, SpawnTube.Constructor(Vector3(5154.17f, 3953.924f, 39.76979f), respawn_tube_tower, Vector3(0, 0, 11)), owning_building_guid = 99) - LocalObject(3312, SpawnTube.Constructor(Vector3(5157.302f, 3970.033f, 39.76979f), respawn_tube_tower, Vector3(0, 0, 11)), owning_building_guid = 99) - LocalObject(3044, Painbox.Constructor(Vector3(5150.027f, 3959.932f, 41.57719f), painbox_radius_continuous), owning_building_guid = 99) - LocalObject(3045, Painbox.Constructor(Vector3(5160.919f, 3954.992f, 40.38779f), painbox_radius_continuous), owning_building_guid = 99) - LocalObject(3046, Painbox.Constructor(Vector3(5163.344f, 3966.775f, 40.38779f), painbox_radius_continuous), owning_building_guid = 99) + LocalObject( + 2481, + Terminal.Constructor(Vector3(5165.168f, 3954.218f, 41.61979f), order_terminal), + owning_building_guid = 99 + ) + LocalObject( + 2482, + Terminal.Constructor(Vector3(5166.261f, 3959.837f, 41.61979f), order_terminal), + owning_building_guid = 99 + ) + LocalObject( + 2483, + Terminal.Constructor(Vector3(5167.288f, 3965.119f, 41.61979f), order_terminal), + owning_building_guid = 99 + ) + LocalObject( + 3311, + SpawnTube.Constructor(Vector3(5154.17f, 3953.924f, 39.76979f), respawn_tube_tower, Vector3(0, 0, 11)), + owning_building_guid = 99 + ) + LocalObject( + 3312, + SpawnTube.Constructor(Vector3(5157.302f, 3970.033f, 39.76979f), respawn_tube_tower, Vector3(0, 0, 11)), + owning_building_guid = 99 + ) + LocalObject( + 3044, + Painbox.Constructor(Vector3(5150.027f, 3959.932f, 41.57719f), painbox_radius_continuous), + owning_building_guid = 99 + ) + LocalObject( + 3045, + Painbox.Constructor(Vector3(5160.919f, 3954.992f, 40.38779f), painbox_radius_continuous), + owning_building_guid = 99 + ) + LocalObject( + 3046, + Painbox.Constructor(Vector3(5163.344f, 3966.775f, 40.38779f), painbox_radius_continuous), + owning_building_guid = 99 + ) } Building34() def Building34(): Unit = { // Name: S_Faro_Tower Type: tower_b GUID: 100, MapID: 34 - LocalBuilding("S_Faro_Tower", 100, 34, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5266f, 5302f, 54.97296f), Vector3(0f, 0f, 286f), tower_b))) - LocalObject(3372, CaptureTerminal.Constructor(Vector3(5270.473f, 5286.027f, 74.97195f), secondary_capture), owning_building_guid = 100) + LocalBuilding( + "S_Faro_Tower", + 100, + 34, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5266f, 5302f, 54.97296f), Vector3(0f, 0f, 286f), tower_b) + ) + ) + LocalObject( + 3372, + CaptureTerminal.Constructor(Vector3(5270.473f, 5286.027f, 74.97195f), secondary_capture), + owning_building_guid = 100 + ) LocalObject(679, Door.Constructor(Vector3(5261.618f, 5288.26f, 56.49296f)), owning_building_guid = 100) LocalObject(680, Door.Constructor(Vector3(5261.618f, 5288.26f, 66.49296f)), owning_building_guid = 100) LocalObject(681, Door.Constructor(Vector3(5261.618f, 5288.26f, 86.49296f)), owning_building_guid = 100) @@ -3244,12 +9465,42 @@ object Map03 { // Cyssor LocalObject(684, Door.Constructor(Vector3(5276.998f, 5292.67f, 86.49296f)), owning_building_guid = 100) LocalObject(3577, Door.Constructor(Vector3(5258.301f, 5288.196f, 46.30896f)), owning_building_guid = 100) LocalObject(3578, Door.Constructor(Vector3(5274.075f, 5292.719f, 46.30896f)), owning_building_guid = 100) - LocalObject(1488, IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 56.43396f), Vector3(0, 0, 254)), owning_building_guid = 100, door_guid = 679) - LocalObject(1489, IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 66.43396f), Vector3(0, 0, 254)), owning_building_guid = 100, door_guid = 680) - LocalObject(1490, IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 86.43396f), Vector3(0, 0, 254)), owning_building_guid = 100, door_guid = 681) - LocalObject(1491, IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 56.43396f), Vector3(0, 0, 74)), owning_building_guid = 100, door_guid = 682) - LocalObject(1492, IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 66.43396f), Vector3(0, 0, 74)), owning_building_guid = 100, door_guid = 683) - LocalObject(1493, IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 86.43396f), Vector3(0, 0, 74)), owning_building_guid = 100, door_guid = 684) + LocalObject( + 1488, + IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 56.43396f), Vector3(0, 0, 254)), + owning_building_guid = 100, + door_guid = 679 + ) + LocalObject( + 1489, + IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 66.43396f), Vector3(0, 0, 254)), + owning_building_guid = 100, + door_guid = 680 + ) + LocalObject( + 1490, + IFFLock.Constructor(Vector3(5261.402f, 5286.068f, 86.43396f), Vector3(0, 0, 254)), + owning_building_guid = 100, + door_guid = 681 + ) + LocalObject( + 1491, + IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 56.43396f), Vector3(0, 0, 74)), + owning_building_guid = 100, + door_guid = 682 + ) + LocalObject( + 1492, + IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 66.43396f), Vector3(0, 0, 74)), + owning_building_guid = 100, + door_guid = 683 + ) + LocalObject( + 1493, + IFFLock.Constructor(Vector3(5277.214f, 5294.857f, 86.43396f), Vector3(0, 0, 74)), + owning_building_guid = 100, + door_guid = 684 + ) LocalObject(1945, Locker.Constructor(Vector3(5255.877f, 5282.748f, 44.96696f)), owning_building_guid = 100) LocalObject(1946, Locker.Constructor(Vector3(5256.246f, 5281.463f, 44.96696f)), owning_building_guid = 100) LocalObject(1947, Locker.Constructor(Vector3(5256.987f, 5278.879f, 44.96696f)), owning_building_guid = 100) @@ -3258,21 +9509,64 @@ object Map03 { // Cyssor LocalObject(1950, Locker.Constructor(Vector3(5277.28f, 5287.458f, 44.96696f)), owning_building_guid = 100) LocalObject(1951, Locker.Constructor(Vector3(5278.012f, 5284.908f, 44.96696f)), owning_building_guid = 100) LocalObject(1952, Locker.Constructor(Vector3(5278.398f, 5283.56f, 44.96696f)), owning_building_guid = 100) - LocalObject(2484, Terminal.Constructor(Vector3(5262.423f, 5278.664f, 46.30496f), order_terminal), owning_building_guid = 100) - LocalObject(2485, Terminal.Constructor(Vector3(5267.925f, 5280.242f, 46.30496f), order_terminal), owning_building_guid = 100) - LocalObject(2486, Terminal.Constructor(Vector3(5273.098f, 5281.725f, 46.30496f), order_terminal), owning_building_guid = 100) - LocalObject(3313, SpawnTube.Constructor(Vector3(5257.168f, 5288.33f, 44.45496f), respawn_tube_tower, Vector3(0, 0, 74)), owning_building_guid = 100) - LocalObject(3314, SpawnTube.Constructor(Vector3(5272.942f, 5292.853f, 44.45496f), respawn_tube_tower, Vector3(0, 0, 74)), owning_building_guid = 100) - LocalObject(3047, Painbox.Constructor(Vector3(5260.64f, 5294.749f, 46.26236f), painbox_radius_continuous), owning_building_guid = 100) - LocalObject(3048, Painbox.Constructor(Vector3(5261.183f, 5282.801f, 45.07296f), painbox_radius_continuous), owning_building_guid = 100) - LocalObject(3049, Painbox.Constructor(Vector3(5272.782f, 5285.99f, 45.07296f), painbox_radius_continuous), owning_building_guid = 100) + LocalObject( + 2484, + Terminal.Constructor(Vector3(5262.423f, 5278.664f, 46.30496f), order_terminal), + owning_building_guid = 100 + ) + LocalObject( + 2485, + Terminal.Constructor(Vector3(5267.925f, 5280.242f, 46.30496f), order_terminal), + owning_building_guid = 100 + ) + LocalObject( + 2486, + Terminal.Constructor(Vector3(5273.098f, 5281.725f, 46.30496f), order_terminal), + owning_building_guid = 100 + ) + LocalObject( + 3313, + SpawnTube.Constructor(Vector3(5257.168f, 5288.33f, 44.45496f), respawn_tube_tower, Vector3(0, 0, 74)), + owning_building_guid = 100 + ) + LocalObject( + 3314, + SpawnTube.Constructor(Vector3(5272.942f, 5292.853f, 44.45496f), respawn_tube_tower, Vector3(0, 0, 74)), + owning_building_guid = 100 + ) + LocalObject( + 3047, + Painbox.Constructor(Vector3(5260.64f, 5294.749f, 46.26236f), painbox_radius_continuous), + owning_building_guid = 100 + ) + LocalObject( + 3048, + Painbox.Constructor(Vector3(5261.183f, 5282.801f, 45.07296f), painbox_radius_continuous), + owning_building_guid = 100 + ) + LocalObject( + 3049, + Painbox.Constructor(Vector3(5272.782f, 5285.99f, 45.07296f), painbox_radius_continuous), + owning_building_guid = 100 + ) } Building42() def Building42(): Unit = { // Name: W_Orisha_Tower Type: tower_b GUID: 101, MapID: 42 - LocalBuilding("W_Orisha_Tower", 101, 42, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6660f, 1302f, 51.17282f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3379, CaptureTerminal.Constructor(Vector3(6676.587f, 1301.897f, 71.17183f), secondary_capture), owning_building_guid = 101) + LocalBuilding( + "W_Orisha_Tower", + 101, + 42, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6660f, 1302f, 51.17282f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3379, + CaptureTerminal.Constructor(Vector3(6676.587f, 1301.897f, 71.17183f), secondary_capture), + owning_building_guid = 101 + ) LocalObject(745, Door.Constructor(Vector3(6672f, 1294f, 52.69283f)), owning_building_guid = 101) LocalObject(746, Door.Constructor(Vector3(6672f, 1294f, 62.69283f)), owning_building_guid = 101) LocalObject(747, Door.Constructor(Vector3(6672f, 1294f, 82.69283f)), owning_building_guid = 101) @@ -3281,12 +9575,42 @@ object Map03 { // Cyssor LocalObject(750, Door.Constructor(Vector3(6672f, 1310f, 82.69283f)), owning_building_guid = 101) LocalObject(3597, Door.Constructor(Vector3(6671.147f, 1290.794f, 42.50883f)), owning_building_guid = 101) LocalObject(3598, Door.Constructor(Vector3(6671.147f, 1307.204f, 42.50883f)), owning_building_guid = 101) - LocalObject(1540, IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 52.63382f), Vector3(0, 0, 0)), owning_building_guid = 101, door_guid = 748) - LocalObject(1541, IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 62.63383f), Vector3(0, 0, 0)), owning_building_guid = 101, door_guid = 749) - LocalObject(1542, IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 82.63383f), Vector3(0, 0, 0)), owning_building_guid = 101, door_guid = 750) - LocalObject(1543, IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 52.63382f), Vector3(0, 0, 180)), owning_building_guid = 101, door_guid = 745) - LocalObject(1544, IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 62.63383f), Vector3(0, 0, 180)), owning_building_guid = 101, door_guid = 746) - LocalObject(1545, IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 82.63383f), Vector3(0, 0, 180)), owning_building_guid = 101, door_guid = 747) + LocalObject( + 1540, + IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 52.63382f), Vector3(0, 0, 0)), + owning_building_guid = 101, + door_guid = 748 + ) + LocalObject( + 1541, + IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 62.63383f), Vector3(0, 0, 0)), + owning_building_guid = 101, + door_guid = 749 + ) + LocalObject( + 1542, + IFFLock.Constructor(Vector3(6669.957f, 1310.811f, 82.63383f), Vector3(0, 0, 0)), + owning_building_guid = 101, + door_guid = 750 + ) + LocalObject( + 1543, + IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 52.63382f), Vector3(0, 0, 180)), + owning_building_guid = 101, + door_guid = 745 + ) + LocalObject( + 1544, + IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 62.63383f), Vector3(0, 0, 180)), + owning_building_guid = 101, + door_guid = 746 + ) + LocalObject( + 1545, + IFFLock.Constructor(Vector3(6674.047f, 1293.189f, 82.63383f), Vector3(0, 0, 180)), + owning_building_guid = 101, + door_guid = 747 + ) LocalObject(2025, Locker.Constructor(Vector3(6675.716f, 1286.963f, 41.16682f)), owning_building_guid = 101) LocalObject(2026, Locker.Constructor(Vector3(6675.751f, 1308.835f, 41.16682f)), owning_building_guid = 101) LocalObject(2027, Locker.Constructor(Vector3(6677.053f, 1286.963f, 41.16682f)), owning_building_guid = 101) @@ -3295,21 +9619,64 @@ object Map03 { // Cyssor LocalObject(2030, Locker.Constructor(Vector3(6679.741f, 1308.835f, 41.16682f)), owning_building_guid = 101) LocalObject(2031, Locker.Constructor(Vector3(6681.143f, 1286.963f, 41.16682f)), owning_building_guid = 101) LocalObject(2032, Locker.Constructor(Vector3(6681.143f, 1308.835f, 41.16682f)), owning_building_guid = 101) - LocalObject(2517, Terminal.Constructor(Vector3(6681.446f, 1292.129f, 42.50483f), order_terminal), owning_building_guid = 101) - LocalObject(2518, Terminal.Constructor(Vector3(6681.446f, 1297.853f, 42.50483f), order_terminal), owning_building_guid = 101) - LocalObject(2519, Terminal.Constructor(Vector3(6681.446f, 1303.234f, 42.50483f), order_terminal), owning_building_guid = 101) - LocalObject(3333, SpawnTube.Constructor(Vector3(6670.706f, 1289.742f, 40.65482f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 101) - LocalObject(3334, SpawnTube.Constructor(Vector3(6670.706f, 1306.152f, 40.65482f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 101) - LocalObject(3068, Painbox.Constructor(Vector3(6665.493f, 1294.849f, 42.46223f), painbox_radius_continuous), owning_building_guid = 101) - LocalObject(3069, Painbox.Constructor(Vector3(6677.127f, 1292.078f, 41.27283f), painbox_radius_continuous), owning_building_guid = 101) - LocalObject(3070, Painbox.Constructor(Vector3(6677.259f, 1304.107f, 41.27283f), painbox_radius_continuous), owning_building_guid = 101) + LocalObject( + 2517, + Terminal.Constructor(Vector3(6681.446f, 1292.129f, 42.50483f), order_terminal), + owning_building_guid = 101 + ) + LocalObject( + 2518, + Terminal.Constructor(Vector3(6681.446f, 1297.853f, 42.50483f), order_terminal), + owning_building_guid = 101 + ) + LocalObject( + 2519, + Terminal.Constructor(Vector3(6681.446f, 1303.234f, 42.50483f), order_terminal), + owning_building_guid = 101 + ) + LocalObject( + 3333, + SpawnTube.Constructor(Vector3(6670.706f, 1289.742f, 40.65482f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 101 + ) + LocalObject( + 3334, + SpawnTube.Constructor(Vector3(6670.706f, 1306.152f, 40.65482f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 101 + ) + LocalObject( + 3068, + Painbox.Constructor(Vector3(6665.493f, 1294.849f, 42.46223f), painbox_radius_continuous), + owning_building_guid = 101 + ) + LocalObject( + 3069, + Painbox.Constructor(Vector3(6677.127f, 1292.078f, 41.27283f), painbox_radius_continuous), + owning_building_guid = 101 + ) + LocalObject( + 3070, + Painbox.Constructor(Vector3(6677.259f, 1304.107f, 41.27283f), painbox_radius_continuous), + owning_building_guid = 101 + ) } Building40() def Building40(): Unit = { // Name: SW_Solsar_Warpgate_Tower Type: tower_b GUID: 102, MapID: 40 - LocalBuilding("SW_Solsar_Warpgate_Tower", 102, 40, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7036f, 4998f, 54.60317f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3381, CaptureTerminal.Constructor(Vector3(7052.587f, 4997.897f, 74.60217f), secondary_capture), owning_building_guid = 102) + LocalBuilding( + "SW_Solsar_Warpgate_Tower", + 102, + 40, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7036f, 4998f, 54.60317f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3381, + CaptureTerminal.Constructor(Vector3(7052.587f, 4997.897f, 74.60217f), secondary_capture), + owning_building_guid = 102 + ) LocalObject(777, Door.Constructor(Vector3(7048f, 4990f, 56.12317f)), owning_building_guid = 102) LocalObject(778, Door.Constructor(Vector3(7048f, 4990f, 66.12317f)), owning_building_guid = 102) LocalObject(779, Door.Constructor(Vector3(7048f, 4990f, 86.12317f)), owning_building_guid = 102) @@ -3318,12 +9685,42 @@ object Map03 { // Cyssor LocalObject(782, Door.Constructor(Vector3(7048f, 5006f, 86.12317f)), owning_building_guid = 102) LocalObject(3607, Door.Constructor(Vector3(7047.147f, 4986.794f, 45.93917f)), owning_building_guid = 102) LocalObject(3608, Door.Constructor(Vector3(7047.147f, 5003.204f, 45.93917f)), owning_building_guid = 102) - LocalObject(1565, IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 56.06417f), Vector3(0, 0, 0)), owning_building_guid = 102, door_guid = 780) - LocalObject(1566, IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 66.06417f), Vector3(0, 0, 0)), owning_building_guid = 102, door_guid = 781) - LocalObject(1567, IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 86.06417f), Vector3(0, 0, 0)), owning_building_guid = 102, door_guid = 782) - LocalObject(1568, IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 56.06417f), Vector3(0, 0, 180)), owning_building_guid = 102, door_guid = 777) - LocalObject(1569, IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 66.06417f), Vector3(0, 0, 180)), owning_building_guid = 102, door_guid = 778) - LocalObject(1570, IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 86.06417f), Vector3(0, 0, 180)), owning_building_guid = 102, door_guid = 779) + LocalObject( + 1565, + IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 56.06417f), Vector3(0, 0, 0)), + owning_building_guid = 102, + door_guid = 780 + ) + LocalObject( + 1566, + IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 66.06417f), Vector3(0, 0, 0)), + owning_building_guid = 102, + door_guid = 781 + ) + LocalObject( + 1567, + IFFLock.Constructor(Vector3(7045.957f, 5006.811f, 86.06417f), Vector3(0, 0, 0)), + owning_building_guid = 102, + door_guid = 782 + ) + LocalObject( + 1568, + IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 56.06417f), Vector3(0, 0, 180)), + owning_building_guid = 102, + door_guid = 777 + ) + LocalObject( + 1569, + IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 66.06417f), Vector3(0, 0, 180)), + owning_building_guid = 102, + door_guid = 778 + ) + LocalObject( + 1570, + IFFLock.Constructor(Vector3(7050.047f, 4989.189f, 86.06417f), Vector3(0, 0, 180)), + owning_building_guid = 102, + door_guid = 779 + ) LocalObject(2074, Locker.Constructor(Vector3(7051.716f, 4982.963f, 44.59717f)), owning_building_guid = 102) LocalObject(2075, Locker.Constructor(Vector3(7051.751f, 5004.835f, 44.59717f)), owning_building_guid = 102) LocalObject(2076, Locker.Constructor(Vector3(7053.053f, 4982.963f, 44.59717f)), owning_building_guid = 102) @@ -3332,21 +9729,64 @@ object Map03 { // Cyssor LocalObject(2079, Locker.Constructor(Vector3(7055.741f, 5004.835f, 44.59717f)), owning_building_guid = 102) LocalObject(2080, Locker.Constructor(Vector3(7057.143f, 4982.963f, 44.59717f)), owning_building_guid = 102) LocalObject(2081, Locker.Constructor(Vector3(7057.143f, 5004.835f, 44.59717f)), owning_building_guid = 102) - LocalObject(2531, Terminal.Constructor(Vector3(7057.446f, 4988.129f, 45.93517f), order_terminal), owning_building_guid = 102) - LocalObject(2532, Terminal.Constructor(Vector3(7057.446f, 4993.853f, 45.93517f), order_terminal), owning_building_guid = 102) - LocalObject(2533, Terminal.Constructor(Vector3(7057.446f, 4999.234f, 45.93517f), order_terminal), owning_building_guid = 102) - LocalObject(3343, SpawnTube.Constructor(Vector3(7046.706f, 4985.742f, 44.08517f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 102) - LocalObject(3344, SpawnTube.Constructor(Vector3(7046.706f, 5002.152f, 44.08517f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 102) - LocalObject(3074, Painbox.Constructor(Vector3(7041.493f, 4990.849f, 45.89257f), painbox_radius_continuous), owning_building_guid = 102) - LocalObject(3075, Painbox.Constructor(Vector3(7053.127f, 4988.078f, 44.70317f), painbox_radius_continuous), owning_building_guid = 102) - LocalObject(3076, Painbox.Constructor(Vector3(7053.259f, 5000.107f, 44.70317f), painbox_radius_continuous), owning_building_guid = 102) + LocalObject( + 2531, + Terminal.Constructor(Vector3(7057.446f, 4988.129f, 45.93517f), order_terminal), + owning_building_guid = 102 + ) + LocalObject( + 2532, + Terminal.Constructor(Vector3(7057.446f, 4993.853f, 45.93517f), order_terminal), + owning_building_guid = 102 + ) + LocalObject( + 2533, + Terminal.Constructor(Vector3(7057.446f, 4999.234f, 45.93517f), order_terminal), + owning_building_guid = 102 + ) + LocalObject( + 3343, + SpawnTube.Constructor(Vector3(7046.706f, 4985.742f, 44.08517f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 102 + ) + LocalObject( + 3344, + SpawnTube.Constructor(Vector3(7046.706f, 5002.152f, 44.08517f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 102 + ) + LocalObject( + 3074, + Painbox.Constructor(Vector3(7041.493f, 4990.849f, 45.89257f), painbox_radius_continuous), + owning_building_guid = 102 + ) + LocalObject( + 3075, + Painbox.Constructor(Vector3(7053.127f, 4988.078f, 44.70317f), painbox_radius_continuous), + owning_building_guid = 102 + ) + LocalObject( + 3076, + Painbox.Constructor(Vector3(7053.259f, 5000.107f, 44.70317f), painbox_radius_continuous), + owning_building_guid = 102 + ) } Building66() def Building66(): Unit = { // Name: SE_Pamba_Tower Type: tower_b GUID: 103, MapID: 66 - LocalBuilding("SE_Pamba_Tower", 103, 66, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7524f, 2910f, 56.98198f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(3382, CaptureTerminal.Constructor(Vector3(7540.587f, 2909.897f, 76.98099f), secondary_capture), owning_building_guid = 103) + LocalBuilding( + "SE_Pamba_Tower", + 103, + 66, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7524f, 2910f, 56.98198f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 3382, + CaptureTerminal.Constructor(Vector3(7540.587f, 2909.897f, 76.98099f), secondary_capture), + owning_building_guid = 103 + ) LocalObject(803, Door.Constructor(Vector3(7536f, 2902f, 58.50198f)), owning_building_guid = 103) LocalObject(804, Door.Constructor(Vector3(7536f, 2902f, 68.50198f)), owning_building_guid = 103) LocalObject(805, Door.Constructor(Vector3(7536f, 2902f, 88.50198f)), owning_building_guid = 103) @@ -3355,12 +9795,42 @@ object Map03 { // Cyssor LocalObject(808, Door.Constructor(Vector3(7536f, 2918f, 88.50198f)), owning_building_guid = 103) LocalObject(3612, Door.Constructor(Vector3(7535.147f, 2898.794f, 48.31799f)), owning_building_guid = 103) LocalObject(3613, Door.Constructor(Vector3(7535.147f, 2915.204f, 48.31799f)), owning_building_guid = 103) - LocalObject(1583, IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 58.44298f), Vector3(0, 0, 0)), owning_building_guid = 103, door_guid = 806) - LocalObject(1584, IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 68.44299f), Vector3(0, 0, 0)), owning_building_guid = 103, door_guid = 807) - LocalObject(1585, IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 88.44299f), Vector3(0, 0, 0)), owning_building_guid = 103, door_guid = 808) - LocalObject(1586, IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 58.44298f), Vector3(0, 0, 180)), owning_building_guid = 103, door_guid = 803) - LocalObject(1587, IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 68.44299f), Vector3(0, 0, 180)), owning_building_guid = 103, door_guid = 804) - LocalObject(1588, IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 88.44299f), Vector3(0, 0, 180)), owning_building_guid = 103, door_guid = 805) + LocalObject( + 1583, + IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 58.44298f), Vector3(0, 0, 0)), + owning_building_guid = 103, + door_guid = 806 + ) + LocalObject( + 1584, + IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 68.44299f), Vector3(0, 0, 0)), + owning_building_guid = 103, + door_guid = 807 + ) + LocalObject( + 1585, + IFFLock.Constructor(Vector3(7533.957f, 2918.811f, 88.44299f), Vector3(0, 0, 0)), + owning_building_guid = 103, + door_guid = 808 + ) + LocalObject( + 1586, + IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 58.44298f), Vector3(0, 0, 180)), + owning_building_guid = 103, + door_guid = 803 + ) + LocalObject( + 1587, + IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 68.44299f), Vector3(0, 0, 180)), + owning_building_guid = 103, + door_guid = 804 + ) + LocalObject( + 1588, + IFFLock.Constructor(Vector3(7538.047f, 2901.189f, 88.44299f), Vector3(0, 0, 180)), + owning_building_guid = 103, + door_guid = 805 + ) LocalObject(2094, Locker.Constructor(Vector3(7539.716f, 2894.963f, 46.97598f)), owning_building_guid = 103) LocalObject(2095, Locker.Constructor(Vector3(7539.751f, 2916.835f, 46.97598f)), owning_building_guid = 103) LocalObject(2096, Locker.Constructor(Vector3(7541.053f, 2894.963f, 46.97598f)), owning_building_guid = 103) @@ -3369,31 +9839,94 @@ object Map03 { // Cyssor LocalObject(2099, Locker.Constructor(Vector3(7543.741f, 2916.835f, 46.97598f)), owning_building_guid = 103) LocalObject(2100, Locker.Constructor(Vector3(7545.143f, 2894.963f, 46.97598f)), owning_building_guid = 103) LocalObject(2101, Locker.Constructor(Vector3(7545.143f, 2916.835f, 46.97598f)), owning_building_guid = 103) - LocalObject(2540, Terminal.Constructor(Vector3(7545.446f, 2900.129f, 48.31398f), order_terminal), owning_building_guid = 103) - LocalObject(2541, Terminal.Constructor(Vector3(7545.446f, 2905.853f, 48.31398f), order_terminal), owning_building_guid = 103) - LocalObject(2542, Terminal.Constructor(Vector3(7545.446f, 2911.234f, 48.31398f), order_terminal), owning_building_guid = 103) - LocalObject(3348, SpawnTube.Constructor(Vector3(7534.706f, 2897.742f, 46.46398f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 103) - LocalObject(3349, SpawnTube.Constructor(Vector3(7534.706f, 2914.152f, 46.46398f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 103) - LocalObject(3077, Painbox.Constructor(Vector3(7529.493f, 2902.849f, 48.27139f), painbox_radius_continuous), owning_building_guid = 103) - LocalObject(3078, Painbox.Constructor(Vector3(7541.127f, 2900.078f, 47.08199f), painbox_radius_continuous), owning_building_guid = 103) - LocalObject(3079, Painbox.Constructor(Vector3(7541.259f, 2912.107f, 47.08199f), painbox_radius_continuous), owning_building_guid = 103) + LocalObject( + 2540, + Terminal.Constructor(Vector3(7545.446f, 2900.129f, 48.31398f), order_terminal), + owning_building_guid = 103 + ) + LocalObject( + 2541, + Terminal.Constructor(Vector3(7545.446f, 2905.853f, 48.31398f), order_terminal), + owning_building_guid = 103 + ) + LocalObject( + 2542, + Terminal.Constructor(Vector3(7545.446f, 2911.234f, 48.31398f), order_terminal), + owning_building_guid = 103 + ) + LocalObject( + 3348, + SpawnTube.Constructor(Vector3(7534.706f, 2897.742f, 46.46398f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 103 + ) + LocalObject( + 3349, + SpawnTube.Constructor(Vector3(7534.706f, 2914.152f, 46.46398f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 103 + ) + LocalObject( + 3077, + Painbox.Constructor(Vector3(7529.493f, 2902.849f, 48.27139f), painbox_radius_continuous), + owning_building_guid = 103 + ) + LocalObject( + 3078, + Painbox.Constructor(Vector3(7541.127f, 2900.078f, 47.08199f), painbox_radius_continuous), + owning_building_guid = 103 + ) + LocalObject( + 3079, + Painbox.Constructor(Vector3(7541.259f, 2912.107f, 47.08199f), painbox_radius_continuous), + owning_building_guid = 103 + ) } Building25() def Building25(): Unit = { // Name: S_Bomazi_Tower Type: tower_c GUID: 104, MapID: 25 - LocalBuilding("S_Bomazi_Tower", 104, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1080f, 4328f, 68.30714f), Vector3(0f, 0f, 345f), tower_c))) - LocalObject(3354, CaptureTerminal.Constructor(Vector3(1095.995f, 4323.607f, 78.30614f), secondary_capture), owning_building_guid = 104) + LocalBuilding( + "S_Bomazi_Tower", + 104, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1080f, 4328f, 68.30714f), Vector3(0f, 0f, 345f), tower_c) + ) + ) + LocalObject( + 3354, + CaptureTerminal.Constructor(Vector3(1095.995f, 4323.607f, 78.30614f), secondary_capture), + owning_building_guid = 104 + ) LocalObject(461, Door.Constructor(Vector3(1089.521f, 4317.167f, 69.82814f)), owning_building_guid = 104) LocalObject(462, Door.Constructor(Vector3(1089.521f, 4317.167f, 89.82713f)), owning_building_guid = 104) LocalObject(463, Door.Constructor(Vector3(1093.662f, 4332.622f, 69.82814f)), owning_building_guid = 104) LocalObject(464, Door.Constructor(Vector3(1093.662f, 4332.622f, 89.82713f)), owning_building_guid = 104) LocalObject(3514, Door.Constructor(Vector3(1087.866f, 4314.291f, 59.64314f)), owning_building_guid = 104) LocalObject(3515, Door.Constructor(Vector3(1092.113f, 4330.142f, 59.64314f)), owning_building_guid = 104) - LocalObject(1319, IFFLock.Constructor(Vector3(1091.288f, 4315.854f, 69.76814f), Vector3(0, 0, 195)), owning_building_guid = 104, door_guid = 461) - LocalObject(1320, IFFLock.Constructor(Vector3(1091.288f, 4315.854f, 89.76814f), Vector3(0, 0, 195)), owning_building_guid = 104, door_guid = 462) - LocalObject(1321, IFFLock.Constructor(Vector3(1091.898f, 4333.934f, 69.76814f), Vector3(0, 0, 15)), owning_building_guid = 104, door_guid = 463) - LocalObject(1322, IFFLock.Constructor(Vector3(1091.898f, 4333.934f, 89.76814f), Vector3(0, 0, 15)), owning_building_guid = 104, door_guid = 464) + LocalObject( + 1319, + IFFLock.Constructor(Vector3(1091.288f, 4315.854f, 69.76814f), Vector3(0, 0, 195)), + owning_building_guid = 104, + door_guid = 461 + ) + LocalObject( + 1320, + IFFLock.Constructor(Vector3(1091.288f, 4315.854f, 89.76814f), Vector3(0, 0, 195)), + owning_building_guid = 104, + door_guid = 462 + ) + LocalObject( + 1321, + IFFLock.Constructor(Vector3(1091.898f, 4333.934f, 69.76814f), Vector3(0, 0, 15)), + owning_building_guid = 104, + door_guid = 463 + ) + LocalObject( + 1322, + IFFLock.Constructor(Vector3(1091.898f, 4333.934f, 89.76814f), Vector3(0, 0, 15)), + owning_building_guid = 104, + door_guid = 464 + ) LocalObject(1666, Locker.Constructor(Vector3(1091.289f, 4309.408f, 58.30114f)), owning_building_guid = 104) LocalObject(1667, Locker.Constructor(Vector3(1092.58f, 4309.062f, 58.30114f)), owning_building_guid = 104) LocalObject(1668, Locker.Constructor(Vector3(1095.177f, 4308.366f, 58.30114f)), owning_building_guid = 104) @@ -3402,39 +9935,126 @@ object Map03 { // Cyssor LocalObject(1671, Locker.Constructor(Vector3(1098.275f, 4330.179f, 58.30114f)), owning_building_guid = 104) LocalObject(1672, Locker.Constructor(Vector3(1100.837f, 4329.493f, 58.30114f)), owning_building_guid = 104) LocalObject(1673, Locker.Constructor(Vector3(1102.192f, 4329.13f, 58.30114f)), owning_building_guid = 104) - LocalObject(2382, Terminal.Constructor(Vector3(1098.159f, 4312.915f, 59.63914f), order_terminal), owning_building_guid = 104) - LocalObject(2383, Terminal.Constructor(Vector3(1099.641f, 4318.444f, 59.63914f), order_terminal), owning_building_guid = 104) - LocalObject(2384, Terminal.Constructor(Vector3(1101.034f, 4323.642f, 59.63914f), order_terminal), owning_building_guid = 104) - LocalObject(3250, SpawnTube.Constructor(Vector3(1087.169f, 4313.389f, 57.78914f), respawn_tube_tower, Vector3(0, 0, 15)), owning_building_guid = 104) - LocalObject(3251, SpawnTube.Constructor(Vector3(1091.416f, 4329.24f, 57.78914f), respawn_tube_tower, Vector3(0, 0, 15)), owning_building_guid = 104) - LocalObject(2837, ProximityTerminal.Constructor(Vector3(1077.579f, 4323.188f, 95.87714f), pad_landing_tower_frame), owning_building_guid = 104) - LocalObject(2838, Terminal.Constructor(Vector3(1077.579f, 4323.188f, 95.87714f), air_rearm_terminal), owning_building_guid = 104) - LocalObject(2840, ProximityTerminal.Constructor(Vector3(1080.282f, 4333.277f, 95.87714f), pad_landing_tower_frame), owning_building_guid = 104) - LocalObject(2841, Terminal.Constructor(Vector3(1080.282f, 4333.277f, 95.87714f), air_rearm_terminal), owning_building_guid = 104) - LocalObject(2180, FacilityTurret.Constructor(Vector3(1061.708f, 4317.419f, 87.24914f), manned_turret), owning_building_guid = 104) + LocalObject( + 2382, + Terminal.Constructor(Vector3(1098.159f, 4312.915f, 59.63914f), order_terminal), + owning_building_guid = 104 + ) + LocalObject( + 2383, + Terminal.Constructor(Vector3(1099.641f, 4318.444f, 59.63914f), order_terminal), + owning_building_guid = 104 + ) + LocalObject( + 2384, + Terminal.Constructor(Vector3(1101.034f, 4323.642f, 59.63914f), order_terminal), + owning_building_guid = 104 + ) + LocalObject( + 3250, + SpawnTube.Constructor(Vector3(1087.169f, 4313.389f, 57.78914f), respawn_tube_tower, Vector3(0, 0, 15)), + owning_building_guid = 104 + ) + LocalObject( + 3251, + SpawnTube.Constructor(Vector3(1091.416f, 4329.24f, 57.78914f), respawn_tube_tower, Vector3(0, 0, 15)), + owning_building_guid = 104 + ) + LocalObject( + 2837, + ProximityTerminal.Constructor(Vector3(1077.579f, 4323.188f, 95.87714f), pad_landing_tower_frame), + owning_building_guid = 104 + ) + LocalObject( + 2838, + Terminal.Constructor(Vector3(1077.579f, 4323.188f, 95.87714f), air_rearm_terminal), + owning_building_guid = 104 + ) + LocalObject( + 2840, + ProximityTerminal.Constructor(Vector3(1080.282f, 4333.277f, 95.87714f), pad_landing_tower_frame), + owning_building_guid = 104 + ) + LocalObject( + 2841, + Terminal.Constructor(Vector3(1080.282f, 4333.277f, 95.87714f), air_rearm_terminal), + owning_building_guid = 104 + ) + LocalObject( + 2180, + FacilityTurret.Constructor(Vector3(1061.708f, 4317.419f, 87.24914f), manned_turret), + owning_building_guid = 104 + ) TurretToWeapon(2180, 5129) - LocalObject(2182, FacilityTurret.Constructor(Vector3(1106.568f, 4336.366f, 87.24914f), manned_turret), owning_building_guid = 104) + LocalObject( + 2182, + FacilityTurret.Constructor(Vector3(1106.568f, 4336.366f, 87.24914f), manned_turret), + owning_building_guid = 104 + ) TurretToWeapon(2182, 5130) - LocalObject(2993, Painbox.Constructor(Vector3(1082.451f, 4319.94f, 60.32664f), painbox_radius_continuous), owning_building_guid = 104) - LocalObject(2994, Painbox.Constructor(Vector3(1093.639f, 4313.516f, 58.40714f), painbox_radius_continuous), owning_building_guid = 104) - LocalObject(2995, Painbox.Constructor(Vector3(1097.053f, 4325.524f, 58.40714f), painbox_radius_continuous), owning_building_guid = 104) + LocalObject( + 2993, + Painbox.Constructor(Vector3(1082.451f, 4319.94f, 60.32664f), painbox_radius_continuous), + owning_building_guid = 104 + ) + LocalObject( + 2994, + Painbox.Constructor(Vector3(1093.639f, 4313.516f, 58.40714f), painbox_radius_continuous), + owning_building_guid = 104 + ) + LocalObject( + 2995, + Painbox.Constructor(Vector3(1097.053f, 4325.524f, 58.40714f), painbox_radius_continuous), + owning_building_guid = 104 + ) } Building24() def Building24(): Unit = { // Name: NE_Aja_Tower Type: tower_c GUID: 105, MapID: 24 - LocalBuilding("NE_Aja_Tower", 105, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1410f, 5814f, 38.33094f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(3355, CaptureTerminal.Constructor(Vector3(1426.587f, 5813.897f, 48.32994f), secondary_capture), owning_building_guid = 105) + LocalBuilding( + "NE_Aja_Tower", + 105, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1410f, 5814f, 38.33094f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 3355, + CaptureTerminal.Constructor(Vector3(1426.587f, 5813.897f, 48.32994f), secondary_capture), + owning_building_guid = 105 + ) LocalObject(478, Door.Constructor(Vector3(1422f, 5806f, 39.85194f)), owning_building_guid = 105) LocalObject(479, Door.Constructor(Vector3(1422f, 5806f, 59.85094f)), owning_building_guid = 105) LocalObject(480, Door.Constructor(Vector3(1422f, 5822f, 39.85194f)), owning_building_guid = 105) LocalObject(481, Door.Constructor(Vector3(1422f, 5822f, 59.85094f)), owning_building_guid = 105) LocalObject(3519, Door.Constructor(Vector3(1421.146f, 5802.794f, 29.66694f)), owning_building_guid = 105) LocalObject(3520, Door.Constructor(Vector3(1421.146f, 5819.204f, 29.66694f)), owning_building_guid = 105) - LocalObject(1334, IFFLock.Constructor(Vector3(1419.957f, 5822.811f, 39.79193f), Vector3(0, 0, 0)), owning_building_guid = 105, door_guid = 480) - LocalObject(1335, IFFLock.Constructor(Vector3(1419.957f, 5822.811f, 59.79194f), Vector3(0, 0, 0)), owning_building_guid = 105, door_guid = 481) - LocalObject(1336, IFFLock.Constructor(Vector3(1424.047f, 5805.189f, 39.79193f), Vector3(0, 0, 180)), owning_building_guid = 105, door_guid = 478) - LocalObject(1337, IFFLock.Constructor(Vector3(1424.047f, 5805.189f, 59.79194f), Vector3(0, 0, 180)), owning_building_guid = 105, door_guid = 479) + LocalObject( + 1334, + IFFLock.Constructor(Vector3(1419.957f, 5822.811f, 39.79193f), Vector3(0, 0, 0)), + owning_building_guid = 105, + door_guid = 480 + ) + LocalObject( + 1335, + IFFLock.Constructor(Vector3(1419.957f, 5822.811f, 59.79194f), Vector3(0, 0, 0)), + owning_building_guid = 105, + door_guid = 481 + ) + LocalObject( + 1336, + IFFLock.Constructor(Vector3(1424.047f, 5805.189f, 39.79193f), Vector3(0, 0, 180)), + owning_building_guid = 105, + door_guid = 478 + ) + LocalObject( + 1337, + IFFLock.Constructor(Vector3(1424.047f, 5805.189f, 59.79194f), Vector3(0, 0, 180)), + owning_building_guid = 105, + door_guid = 479 + ) LocalObject(1686, Locker.Constructor(Vector3(1425.716f, 5798.963f, 28.32494f)), owning_building_guid = 105) LocalObject(1687, Locker.Constructor(Vector3(1425.751f, 5820.835f, 28.32494f)), owning_building_guid = 105) LocalObject(1688, Locker.Constructor(Vector3(1427.053f, 5798.963f, 28.32494f)), owning_building_guid = 105) @@ -3443,39 +10063,126 @@ object Map03 { // Cyssor LocalObject(1691, Locker.Constructor(Vector3(1429.741f, 5820.835f, 28.32494f)), owning_building_guid = 105) LocalObject(1692, Locker.Constructor(Vector3(1431.143f, 5798.963f, 28.32494f)), owning_building_guid = 105) LocalObject(1693, Locker.Constructor(Vector3(1431.143f, 5820.835f, 28.32494f)), owning_building_guid = 105) - LocalObject(2392, Terminal.Constructor(Vector3(1431.445f, 5804.129f, 29.66294f), order_terminal), owning_building_guid = 105) - LocalObject(2393, Terminal.Constructor(Vector3(1431.445f, 5809.853f, 29.66294f), order_terminal), owning_building_guid = 105) - LocalObject(2394, Terminal.Constructor(Vector3(1431.445f, 5815.234f, 29.66294f), order_terminal), owning_building_guid = 105) - LocalObject(3255, SpawnTube.Constructor(Vector3(1420.706f, 5801.742f, 27.81294f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 105) - LocalObject(3256, SpawnTube.Constructor(Vector3(1420.706f, 5818.152f, 27.81294f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 105) - LocalObject(2843, ProximityTerminal.Constructor(Vector3(1408.907f, 5808.725f, 65.90094f), pad_landing_tower_frame), owning_building_guid = 105) - LocalObject(2844, Terminal.Constructor(Vector3(1408.907f, 5808.725f, 65.90094f), air_rearm_terminal), owning_building_guid = 105) - LocalObject(2846, ProximityTerminal.Constructor(Vector3(1408.907f, 5819.17f, 65.90094f), pad_landing_tower_frame), owning_building_guid = 105) - LocalObject(2847, Terminal.Constructor(Vector3(1408.907f, 5819.17f, 65.90094f), air_rearm_terminal), owning_building_guid = 105) - LocalObject(2188, FacilityTurret.Constructor(Vector3(1395.07f, 5799.045f, 57.27293f), manned_turret), owning_building_guid = 105) + LocalObject( + 2392, + Terminal.Constructor(Vector3(1431.445f, 5804.129f, 29.66294f), order_terminal), + owning_building_guid = 105 + ) + LocalObject( + 2393, + Terminal.Constructor(Vector3(1431.445f, 5809.853f, 29.66294f), order_terminal), + owning_building_guid = 105 + ) + LocalObject( + 2394, + Terminal.Constructor(Vector3(1431.445f, 5815.234f, 29.66294f), order_terminal), + owning_building_guid = 105 + ) + LocalObject( + 3255, + SpawnTube.Constructor(Vector3(1420.706f, 5801.742f, 27.81294f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 105 + ) + LocalObject( + 3256, + SpawnTube.Constructor(Vector3(1420.706f, 5818.152f, 27.81294f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 105 + ) + LocalObject( + 2843, + ProximityTerminal.Constructor(Vector3(1408.907f, 5808.725f, 65.90094f), pad_landing_tower_frame), + owning_building_guid = 105 + ) + LocalObject( + 2844, + Terminal.Constructor(Vector3(1408.907f, 5808.725f, 65.90094f), air_rearm_terminal), + owning_building_guid = 105 + ) + LocalObject( + 2846, + ProximityTerminal.Constructor(Vector3(1408.907f, 5819.17f, 65.90094f), pad_landing_tower_frame), + owning_building_guid = 105 + ) + LocalObject( + 2847, + Terminal.Constructor(Vector3(1408.907f, 5819.17f, 65.90094f), air_rearm_terminal), + owning_building_guid = 105 + ) + LocalObject( + 2188, + FacilityTurret.Constructor(Vector3(1395.07f, 5799.045f, 57.27293f), manned_turret), + owning_building_guid = 105 + ) TurretToWeapon(2188, 5131) - LocalObject(2190, FacilityTurret.Constructor(Vector3(1433.497f, 5828.957f, 57.27293f), manned_turret), owning_building_guid = 105) + LocalObject( + 2190, + FacilityTurret.Constructor(Vector3(1433.497f, 5828.957f, 57.27293f), manned_turret), + owning_building_guid = 105 + ) TurretToWeapon(2190, 5132) - LocalObject(2996, Painbox.Constructor(Vector3(1414.454f, 5806.849f, 30.35044f), painbox_radius_continuous), owning_building_guid = 105) - LocalObject(2997, Painbox.Constructor(Vector3(1426.923f, 5803.54f, 28.43094f), painbox_radius_continuous), owning_building_guid = 105) - LocalObject(2998, Painbox.Constructor(Vector3(1427.113f, 5816.022f, 28.43094f), painbox_radius_continuous), owning_building_guid = 105) + LocalObject( + 2996, + Painbox.Constructor(Vector3(1414.454f, 5806.849f, 30.35044f), painbox_radius_continuous), + owning_building_guid = 105 + ) + LocalObject( + 2997, + Painbox.Constructor(Vector3(1426.923f, 5803.54f, 28.43094f), painbox_radius_continuous), + owning_building_guid = 105 + ) + LocalObject( + 2998, + Painbox.Constructor(Vector3(1427.113f, 5816.022f, 28.43094f), painbox_radius_continuous), + owning_building_guid = 105 + ) } Building69() def Building69(): Unit = { // Name: Outpost_Tower Type: tower_c GUID: 106, MapID: 69 - LocalBuilding("Outpost_Tower", 106, 69, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2830f, 4342f, 89.42412f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(3360, CaptureTerminal.Constructor(Vector3(2846.587f, 4341.897f, 99.42312f), secondary_capture), owning_building_guid = 106) + LocalBuilding( + "Outpost_Tower", + 106, + 69, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2830f, 4342f, 89.42412f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 3360, + CaptureTerminal.Constructor(Vector3(2846.587f, 4341.897f, 99.42312f), secondary_capture), + owning_building_guid = 106 + ) LocalObject(534, Door.Constructor(Vector3(2842f, 4334f, 90.94512f)), owning_building_guid = 106) LocalObject(535, Door.Constructor(Vector3(2842f, 4334f, 110.9441f)), owning_building_guid = 106) LocalObject(536, Door.Constructor(Vector3(2842f, 4350f, 90.94512f)), owning_building_guid = 106) LocalObject(537, Door.Constructor(Vector3(2842f, 4350f, 110.9441f)), owning_building_guid = 106) LocalObject(3535, Door.Constructor(Vector3(2841.146f, 4330.794f, 80.76012f)), owning_building_guid = 106) LocalObject(3536, Door.Constructor(Vector3(2841.146f, 4347.204f, 80.76012f)), owning_building_guid = 106) - LocalObject(1375, IFFLock.Constructor(Vector3(2839.957f, 4350.811f, 90.88512f), Vector3(0, 0, 0)), owning_building_guid = 106, door_guid = 536) - LocalObject(1376, IFFLock.Constructor(Vector3(2839.957f, 4350.811f, 110.8851f), Vector3(0, 0, 0)), owning_building_guid = 106, door_guid = 537) - LocalObject(1377, IFFLock.Constructor(Vector3(2844.047f, 4333.189f, 90.88512f), Vector3(0, 0, 180)), owning_building_guid = 106, door_guid = 534) - LocalObject(1378, IFFLock.Constructor(Vector3(2844.047f, 4333.189f, 110.8851f), Vector3(0, 0, 180)), owning_building_guid = 106, door_guid = 535) + LocalObject( + 1375, + IFFLock.Constructor(Vector3(2839.957f, 4350.811f, 90.88512f), Vector3(0, 0, 0)), + owning_building_guid = 106, + door_guid = 536 + ) + LocalObject( + 1376, + IFFLock.Constructor(Vector3(2839.957f, 4350.811f, 110.8851f), Vector3(0, 0, 0)), + owning_building_guid = 106, + door_guid = 537 + ) + LocalObject( + 1377, + IFFLock.Constructor(Vector3(2844.047f, 4333.189f, 90.88512f), Vector3(0, 0, 180)), + owning_building_guid = 106, + door_guid = 534 + ) + LocalObject( + 1378, + IFFLock.Constructor(Vector3(2844.047f, 4333.189f, 110.8851f), Vector3(0, 0, 180)), + owning_building_guid = 106, + door_guid = 535 + ) LocalObject(1750, Locker.Constructor(Vector3(2845.716f, 4326.963f, 79.41812f)), owning_building_guid = 106) LocalObject(1751, Locker.Constructor(Vector3(2845.751f, 4348.835f, 79.41812f)), owning_building_guid = 106) LocalObject(1752, Locker.Constructor(Vector3(2847.053f, 4326.963f, 79.41812f)), owning_building_guid = 106) @@ -3484,39 +10191,126 @@ object Map03 { // Cyssor LocalObject(1755, Locker.Constructor(Vector3(2849.741f, 4348.835f, 79.41812f)), owning_building_guid = 106) LocalObject(1756, Locker.Constructor(Vector3(2851.143f, 4326.963f, 79.41812f)), owning_building_guid = 106) LocalObject(1757, Locker.Constructor(Vector3(2851.143f, 4348.835f, 79.41812f)), owning_building_guid = 106) - LocalObject(2417, Terminal.Constructor(Vector3(2851.445f, 4332.129f, 80.75612f), order_terminal), owning_building_guid = 106) - LocalObject(2418, Terminal.Constructor(Vector3(2851.445f, 4337.853f, 80.75612f), order_terminal), owning_building_guid = 106) - LocalObject(2419, Terminal.Constructor(Vector3(2851.445f, 4343.234f, 80.75612f), order_terminal), owning_building_guid = 106) - LocalObject(3271, SpawnTube.Constructor(Vector3(2840.706f, 4329.742f, 78.90612f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 106) - LocalObject(3272, SpawnTube.Constructor(Vector3(2840.706f, 4346.152f, 78.90612f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 106) - LocalObject(2849, ProximityTerminal.Constructor(Vector3(2828.907f, 4336.725f, 116.9941f), pad_landing_tower_frame), owning_building_guid = 106) - LocalObject(2850, Terminal.Constructor(Vector3(2828.907f, 4336.725f, 116.9941f), air_rearm_terminal), owning_building_guid = 106) - LocalObject(2852, ProximityTerminal.Constructor(Vector3(2828.907f, 4347.17f, 116.9941f), pad_landing_tower_frame), owning_building_guid = 106) - LocalObject(2853, Terminal.Constructor(Vector3(2828.907f, 4347.17f, 116.9941f), air_rearm_terminal), owning_building_guid = 106) - LocalObject(2208, FacilityTurret.Constructor(Vector3(2815.07f, 4327.045f, 108.3661f), manned_turret), owning_building_guid = 106) + LocalObject( + 2417, + Terminal.Constructor(Vector3(2851.445f, 4332.129f, 80.75612f), order_terminal), + owning_building_guid = 106 + ) + LocalObject( + 2418, + Terminal.Constructor(Vector3(2851.445f, 4337.853f, 80.75612f), order_terminal), + owning_building_guid = 106 + ) + LocalObject( + 2419, + Terminal.Constructor(Vector3(2851.445f, 4343.234f, 80.75612f), order_terminal), + owning_building_guid = 106 + ) + LocalObject( + 3271, + SpawnTube.Constructor(Vector3(2840.706f, 4329.742f, 78.90612f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 106 + ) + LocalObject( + 3272, + SpawnTube.Constructor(Vector3(2840.706f, 4346.152f, 78.90612f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 106 + ) + LocalObject( + 2849, + ProximityTerminal.Constructor(Vector3(2828.907f, 4336.725f, 116.9941f), pad_landing_tower_frame), + owning_building_guid = 106 + ) + LocalObject( + 2850, + Terminal.Constructor(Vector3(2828.907f, 4336.725f, 116.9941f), air_rearm_terminal), + owning_building_guid = 106 + ) + LocalObject( + 2852, + ProximityTerminal.Constructor(Vector3(2828.907f, 4347.17f, 116.9941f), pad_landing_tower_frame), + owning_building_guid = 106 + ) + LocalObject( + 2853, + Terminal.Constructor(Vector3(2828.907f, 4347.17f, 116.9941f), air_rearm_terminal), + owning_building_guid = 106 + ) + LocalObject( + 2208, + FacilityTurret.Constructor(Vector3(2815.07f, 4327.045f, 108.3661f), manned_turret), + owning_building_guid = 106 + ) TurretToWeapon(2208, 5133) - LocalObject(2210, FacilityTurret.Constructor(Vector3(2853.497f, 4356.957f, 108.3661f), manned_turret), owning_building_guid = 106) + LocalObject( + 2210, + FacilityTurret.Constructor(Vector3(2853.497f, 4356.957f, 108.3661f), manned_turret), + owning_building_guid = 106 + ) TurretToWeapon(2210, 5134) - LocalObject(3011, Painbox.Constructor(Vector3(2834.454f, 4334.849f, 81.44362f), painbox_radius_continuous), owning_building_guid = 106) - LocalObject(3013, Painbox.Constructor(Vector3(2846.923f, 4331.54f, 79.52412f), painbox_radius_continuous), owning_building_guid = 106) - LocalObject(3014, Painbox.Constructor(Vector3(2847.113f, 4344.022f, 79.52412f), painbox_radius_continuous), owning_building_guid = 106) + LocalObject( + 3011, + Painbox.Constructor(Vector3(2834.454f, 4334.849f, 81.44362f), painbox_radius_continuous), + owning_building_guid = 106 + ) + LocalObject( + 3013, + Painbox.Constructor(Vector3(2846.923f, 4331.54f, 79.52412f), painbox_radius_continuous), + owning_building_guid = 106 + ) + LocalObject( + 3014, + Painbox.Constructor(Vector3(2847.113f, 4344.022f, 79.52412f), painbox_radius_continuous), + owning_building_guid = 106 + ) } Building29() def Building29(): Unit = { // Name: SE_Tore_Tower Type: tower_c GUID: 107, MapID: 29 - LocalBuilding("SE_Tore_Tower", 107, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3730f, 1642f, 46.48213f), Vector3(0f, 0f, 38f), tower_c))) - LocalObject(3365, CaptureTerminal.Constructor(Vector3(3743.134f, 1652.131f, 56.48113f), secondary_capture), owning_building_guid = 107) + LocalBuilding( + "SE_Tore_Tower", + 107, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3730f, 1642f, 46.48213f), Vector3(0f, 0f, 38f), tower_c) + ) + ) + LocalObject( + 3365, + CaptureTerminal.Constructor(Vector3(3743.134f, 1652.131f, 56.48113f), secondary_capture), + owning_building_guid = 107 + ) LocalObject(570, Door.Constructor(Vector3(3734.531f, 1655.692f, 48.00313f)), owning_building_guid = 107) LocalObject(571, Door.Constructor(Vector3(3734.531f, 1655.692f, 68.00214f)), owning_building_guid = 107) LocalObject(572, Door.Constructor(Vector3(3744.381f, 1643.084f, 48.00313f)), owning_building_guid = 107) LocalObject(573, Door.Constructor(Vector3(3744.381f, 1643.084f, 68.00214f)), owning_building_guid = 107) LocalObject(3548, Door.Constructor(Vector3(3735.579f, 1652.963f, 37.81813f)), owning_building_guid = 107) LocalObject(3549, Door.Constructor(Vector3(3745.682f, 1640.032f, 37.81813f)), owning_building_guid = 107) - LocalObject(1408, IFFLock.Constructor(Vector3(3732.422f, 1655.073f, 47.94313f), Vector3(0, 0, 322)), owning_building_guid = 107, door_guid = 570) - LocalObject(1409, IFFLock.Constructor(Vector3(3732.422f, 1655.073f, 67.94313f), Vector3(0, 0, 322)), owning_building_guid = 107, door_guid = 571) - LocalObject(1410, IFFLock.Constructor(Vector3(3746.494f, 1643.705f, 47.94313f), Vector3(0, 0, 142)), owning_building_guid = 107, door_guid = 572) - LocalObject(1411, IFFLock.Constructor(Vector3(3746.494f, 1643.705f, 67.94313f), Vector3(0, 0, 142)), owning_building_guid = 107, door_guid = 573) + LocalObject( + 1408, + IFFLock.Constructor(Vector3(3732.422f, 1655.073f, 47.94313f), Vector3(0, 0, 322)), + owning_building_guid = 107, + door_guid = 570 + ) + LocalObject( + 1409, + IFFLock.Constructor(Vector3(3732.422f, 1655.073f, 67.94313f), Vector3(0, 0, 322)), + owning_building_guid = 107, + door_guid = 571 + ) + LocalObject( + 1410, + IFFLock.Constructor(Vector3(3746.494f, 1643.705f, 47.94313f), Vector3(0, 0, 142)), + owning_building_guid = 107, + door_guid = 572 + ) + LocalObject( + 1411, + IFFLock.Constructor(Vector3(3746.494f, 1643.705f, 67.94313f), Vector3(0, 0, 142)), + owning_building_guid = 107, + door_guid = 573 + ) LocalObject(1802, Locker.Constructor(Vector3(3738.204f, 1657.083f, 36.47613f)), owning_building_guid = 107) LocalObject(1803, Locker.Constructor(Vector3(3739.258f, 1657.906f, 36.47613f)), owning_building_guid = 107) LocalObject(1804, Locker.Constructor(Vector3(3741.348f, 1659.54f, 36.47613f)), owning_building_guid = 107) @@ -3525,39 +10319,126 @@ object Map03 { // Cyssor LocalObject(1807, Locker.Constructor(Vector3(3752.696f, 1640.65f, 36.47613f)), owning_building_guid = 107) LocalObject(1808, Locker.Constructor(Vector3(3754.814f, 1642.304f, 36.47613f)), owning_building_guid = 107) LocalObject(1809, Locker.Constructor(Vector3(3755.919f, 1643.168f, 36.47613f)), owning_building_guid = 107) - LocalObject(2439, Terminal.Constructor(Vector3(3746.139f, 1656.175f, 37.81413f), order_terminal), owning_building_guid = 107) - LocalObject(2440, Terminal.Constructor(Vector3(3749.452f, 1651.935f, 37.81413f), order_terminal), owning_building_guid = 107) - LocalObject(2441, Terminal.Constructor(Vector3(3752.976f, 1647.424f, 37.81413f), order_terminal), owning_building_guid = 107) - LocalObject(3284, SpawnTube.Constructor(Vector3(3735.88f, 1651.863f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 322)), owning_building_guid = 107) - LocalObject(3285, SpawnTube.Constructor(Vector3(3745.983f, 1638.932f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 322)), owning_building_guid = 107) - LocalObject(2855, ProximityTerminal.Constructor(Vector3(3725.956f, 1645.401f, 74.05213f), pad_landing_tower_frame), owning_building_guid = 107) - LocalObject(2856, Terminal.Constructor(Vector3(3725.956f, 1645.401f, 74.05213f), air_rearm_terminal), owning_building_guid = 107) - LocalObject(2858, ProximityTerminal.Constructor(Vector3(3732.386f, 1637.17f, 74.05213f), pad_landing_tower_frame), owning_building_guid = 107) - LocalObject(2859, Terminal.Constructor(Vector3(3732.386f, 1637.17f, 74.05213f), air_rearm_terminal), owning_building_guid = 107) - LocalObject(2222, FacilityTurret.Constructor(Vector3(3727.442f, 1621.023f, 65.42413f), manned_turret), owning_building_guid = 107) + LocalObject( + 2439, + Terminal.Constructor(Vector3(3746.139f, 1656.175f, 37.81413f), order_terminal), + owning_building_guid = 107 + ) + LocalObject( + 2440, + Terminal.Constructor(Vector3(3749.452f, 1651.935f, 37.81413f), order_terminal), + owning_building_guid = 107 + ) + LocalObject( + 2441, + Terminal.Constructor(Vector3(3752.976f, 1647.424f, 37.81413f), order_terminal), + owning_building_guid = 107 + ) + LocalObject( + 3284, + SpawnTube.Constructor(Vector3(3735.88f, 1651.863f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 322)), + owning_building_guid = 107 + ) + LocalObject( + 3285, + SpawnTube.Constructor(Vector3(3745.983f, 1638.932f, 35.96413f), respawn_tube_tower, Vector3(0, 0, 322)), + owning_building_guid = 107 + ) + LocalObject( + 2855, + ProximityTerminal.Constructor(Vector3(3725.956f, 1645.401f, 74.05213f), pad_landing_tower_frame), + owning_building_guid = 107 + ) + LocalObject( + 2856, + Terminal.Constructor(Vector3(3725.956f, 1645.401f, 74.05213f), air_rearm_terminal), + owning_building_guid = 107 + ) + LocalObject( + 2858, + ProximityTerminal.Constructor(Vector3(3732.386f, 1637.17f, 74.05213f), pad_landing_tower_frame), + owning_building_guid = 107 + ) + LocalObject( + 2859, + Terminal.Constructor(Vector3(3732.386f, 1637.17f, 74.05213f), air_rearm_terminal), + owning_building_guid = 107 + ) + LocalObject( + 2222, + FacilityTurret.Constructor(Vector3(3727.442f, 1621.023f, 65.42413f), manned_turret), + owning_building_guid = 107 + ) TurretToWeapon(2222, 5135) - LocalObject(2223, FacilityTurret.Constructor(Vector3(3739.307f, 1668.252f, 65.42413f), manned_turret), owning_building_guid = 107) + LocalObject( + 2223, + FacilityTurret.Constructor(Vector3(3739.307f, 1668.252f, 65.42413f), manned_turret), + owning_building_guid = 107 + ) TurretToWeapon(2223, 5136) - LocalObject(3026, Painbox.Constructor(Vector3(3737.912f, 1639.107f, 38.50163f), painbox_radius_continuous), owning_building_guid = 107) - LocalObject(3027, Painbox.Constructor(Vector3(3742.24f, 1654.129f, 36.58213f), painbox_radius_continuous), owning_building_guid = 107) - LocalObject(3028, Painbox.Constructor(Vector3(3749.776f, 1644.176f, 36.58213f), painbox_radius_continuous), owning_building_guid = 107) + LocalObject( + 3026, + Painbox.Constructor(Vector3(3737.912f, 1639.107f, 38.50163f), painbox_radius_continuous), + owning_building_guid = 107 + ) + LocalObject( + 3027, + Painbox.Constructor(Vector3(3742.24f, 1654.129f, 36.58213f), painbox_radius_continuous), + owning_building_guid = 107 + ) + LocalObject( + 3028, + Painbox.Constructor(Vector3(3749.776f, 1644.176f, 36.58213f), painbox_radius_continuous), + owning_building_guid = 107 + ) } Building37() def Building37(): Unit = { // Name: W_Chuku_Tower Type: tower_c GUID: 108, MapID: 37 - LocalBuilding("W_Chuku_Tower", 108, 37, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3978f, 7028f, 49.14362f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(3367, CaptureTerminal.Constructor(Vector3(3994.587f, 7027.897f, 59.14262f), secondary_capture), owning_building_guid = 108) + LocalBuilding( + "W_Chuku_Tower", + 108, + 37, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3978f, 7028f, 49.14362f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 3367, + CaptureTerminal.Constructor(Vector3(3994.587f, 7027.897f, 59.14262f), secondary_capture), + owning_building_guid = 108 + ) LocalObject(587, Door.Constructor(Vector3(3990f, 7020f, 50.66462f)), owning_building_guid = 108) LocalObject(588, Door.Constructor(Vector3(3990f, 7020f, 70.66362f)), owning_building_guid = 108) LocalObject(589, Door.Constructor(Vector3(3990f, 7036f, 50.66462f)), owning_building_guid = 108) LocalObject(590, Door.Constructor(Vector3(3990f, 7036f, 70.66362f)), owning_building_guid = 108) LocalObject(3552, Door.Constructor(Vector3(3989.146f, 7016.794f, 40.47961f)), owning_building_guid = 108) LocalObject(3553, Door.Constructor(Vector3(3989.146f, 7033.204f, 40.47961f)), owning_building_guid = 108) - LocalObject(1421, IFFLock.Constructor(Vector3(3987.957f, 7036.811f, 50.60461f), Vector3(0, 0, 0)), owning_building_guid = 108, door_guid = 589) - LocalObject(1422, IFFLock.Constructor(Vector3(3987.957f, 7036.811f, 70.60461f), Vector3(0, 0, 0)), owning_building_guid = 108, door_guid = 590) - LocalObject(1423, IFFLock.Constructor(Vector3(3992.047f, 7019.189f, 50.60461f), Vector3(0, 0, 180)), owning_building_guid = 108, door_guid = 587) - LocalObject(1424, IFFLock.Constructor(Vector3(3992.047f, 7019.189f, 70.60461f), Vector3(0, 0, 180)), owning_building_guid = 108, door_guid = 588) + LocalObject( + 1421, + IFFLock.Constructor(Vector3(3987.957f, 7036.811f, 50.60461f), Vector3(0, 0, 0)), + owning_building_guid = 108, + door_guid = 589 + ) + LocalObject( + 1422, + IFFLock.Constructor(Vector3(3987.957f, 7036.811f, 70.60461f), Vector3(0, 0, 0)), + owning_building_guid = 108, + door_guid = 590 + ) + LocalObject( + 1423, + IFFLock.Constructor(Vector3(3992.047f, 7019.189f, 50.60461f), Vector3(0, 0, 180)), + owning_building_guid = 108, + door_guid = 587 + ) + LocalObject( + 1424, + IFFLock.Constructor(Vector3(3992.047f, 7019.189f, 70.60461f), Vector3(0, 0, 180)), + owning_building_guid = 108, + door_guid = 588 + ) LocalObject(1818, Locker.Constructor(Vector3(3993.716f, 7012.963f, 39.13762f)), owning_building_guid = 108) LocalObject(1819, Locker.Constructor(Vector3(3993.751f, 7034.835f, 39.13762f)), owning_building_guid = 108) LocalObject(1820, Locker.Constructor(Vector3(3995.053f, 7012.963f, 39.13762f)), owning_building_guid = 108) @@ -3566,39 +10447,126 @@ object Map03 { // Cyssor LocalObject(1823, Locker.Constructor(Vector3(3997.741f, 7034.835f, 39.13762f)), owning_building_guid = 108) LocalObject(1824, Locker.Constructor(Vector3(3999.143f, 7012.963f, 39.13762f)), owning_building_guid = 108) LocalObject(1825, Locker.Constructor(Vector3(3999.143f, 7034.835f, 39.13762f)), owning_building_guid = 108) - LocalObject(2446, Terminal.Constructor(Vector3(3999.445f, 7018.129f, 40.47562f), order_terminal), owning_building_guid = 108) - LocalObject(2447, Terminal.Constructor(Vector3(3999.445f, 7023.853f, 40.47562f), order_terminal), owning_building_guid = 108) - LocalObject(2448, Terminal.Constructor(Vector3(3999.445f, 7029.234f, 40.47562f), order_terminal), owning_building_guid = 108) - LocalObject(3288, SpawnTube.Constructor(Vector3(3988.706f, 7015.742f, 38.62562f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 108) - LocalObject(3289, SpawnTube.Constructor(Vector3(3988.706f, 7032.152f, 38.62562f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 108) - LocalObject(2861, ProximityTerminal.Constructor(Vector3(3976.907f, 7022.725f, 76.71362f), pad_landing_tower_frame), owning_building_guid = 108) - LocalObject(2862, Terminal.Constructor(Vector3(3976.907f, 7022.725f, 76.71362f), air_rearm_terminal), owning_building_guid = 108) - LocalObject(2864, ProximityTerminal.Constructor(Vector3(3976.907f, 7033.17f, 76.71362f), pad_landing_tower_frame), owning_building_guid = 108) - LocalObject(2865, Terminal.Constructor(Vector3(3976.907f, 7033.17f, 76.71362f), air_rearm_terminal), owning_building_guid = 108) - LocalObject(2226, FacilityTurret.Constructor(Vector3(3963.07f, 7013.045f, 68.08562f), manned_turret), owning_building_guid = 108) + LocalObject( + 2446, + Terminal.Constructor(Vector3(3999.445f, 7018.129f, 40.47562f), order_terminal), + owning_building_guid = 108 + ) + LocalObject( + 2447, + Terminal.Constructor(Vector3(3999.445f, 7023.853f, 40.47562f), order_terminal), + owning_building_guid = 108 + ) + LocalObject( + 2448, + Terminal.Constructor(Vector3(3999.445f, 7029.234f, 40.47562f), order_terminal), + owning_building_guid = 108 + ) + LocalObject( + 3288, + SpawnTube.Constructor(Vector3(3988.706f, 7015.742f, 38.62562f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 108 + ) + LocalObject( + 3289, + SpawnTube.Constructor(Vector3(3988.706f, 7032.152f, 38.62562f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 108 + ) + LocalObject( + 2861, + ProximityTerminal.Constructor(Vector3(3976.907f, 7022.725f, 76.71362f), pad_landing_tower_frame), + owning_building_guid = 108 + ) + LocalObject( + 2862, + Terminal.Constructor(Vector3(3976.907f, 7022.725f, 76.71362f), air_rearm_terminal), + owning_building_guid = 108 + ) + LocalObject( + 2864, + ProximityTerminal.Constructor(Vector3(3976.907f, 7033.17f, 76.71362f), pad_landing_tower_frame), + owning_building_guid = 108 + ) + LocalObject( + 2865, + Terminal.Constructor(Vector3(3976.907f, 7033.17f, 76.71362f), air_rearm_terminal), + owning_building_guid = 108 + ) + LocalObject( + 2226, + FacilityTurret.Constructor(Vector3(3963.07f, 7013.045f, 68.08562f), manned_turret), + owning_building_guid = 108 + ) TurretToWeapon(2226, 5137) - LocalObject(2228, FacilityTurret.Constructor(Vector3(4001.497f, 7042.957f, 68.08562f), manned_turret), owning_building_guid = 108) + LocalObject( + 2228, + FacilityTurret.Constructor(Vector3(4001.497f, 7042.957f, 68.08562f), manned_turret), + owning_building_guid = 108 + ) TurretToWeapon(2228, 5138) - LocalObject(3030, Painbox.Constructor(Vector3(3982.454f, 7020.849f, 41.16312f), painbox_radius_continuous), owning_building_guid = 108) - LocalObject(3033, Painbox.Constructor(Vector3(3994.923f, 7017.54f, 39.24361f), painbox_radius_continuous), owning_building_guid = 108) - LocalObject(3034, Painbox.Constructor(Vector3(3995.113f, 7030.022f, 39.24361f), painbox_radius_continuous), owning_building_guid = 108) + LocalObject( + 3030, + Painbox.Constructor(Vector3(3982.454f, 7020.849f, 41.16312f), painbox_radius_continuous), + owning_building_guid = 108 + ) + LocalObject( + 3033, + Painbox.Constructor(Vector3(3994.923f, 7017.54f, 39.24361f), painbox_radius_continuous), + owning_building_guid = 108 + ) + LocalObject( + 3034, + Painbox.Constructor(Vector3(3995.113f, 7030.022f, 39.24361f), painbox_radius_continuous), + owning_building_guid = 108 + ) } Building39() def Building39(): Unit = { // Name: E_Faro_Tower Type: tower_c GUID: 109, MapID: 39 - LocalBuilding("E_Faro_Tower", 109, 39, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5340f, 5834f, 72.75002f), Vector3(0f, 0f, 331f), tower_c))) - LocalObject(3373, CaptureTerminal.Constructor(Vector3(5354.458f, 5825.868f, 82.74902f), secondary_capture), owning_building_guid = 109) + LocalBuilding( + "E_Faro_Tower", + 109, + 39, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5340f, 5834f, 72.75002f), Vector3(0f, 0f, 331f), tower_c) + ) + ) + LocalObject( + 3373, + CaptureTerminal.Constructor(Vector3(5354.458f, 5825.868f, 82.74902f), secondary_capture), + owning_building_guid = 109 + ) LocalObject(685, Door.Constructor(Vector3(5346.617f, 5821.186f, 74.27103f)), owning_building_guid = 109) LocalObject(686, Door.Constructor(Vector3(5346.617f, 5821.186f, 94.27002f)), owning_building_guid = 109) LocalObject(687, Door.Constructor(Vector3(5354.374f, 5835.179f, 74.27103f)), owning_building_guid = 109) LocalObject(688, Door.Constructor(Vector3(5354.374f, 5835.179f, 94.27002f)), owning_building_guid = 109) LocalObject(3579, Door.Constructor(Vector3(5344.316f, 5818.795f, 64.08602f)), owning_building_guid = 109) LocalObject(3580, Door.Constructor(Vector3(5352.271f, 5833.148f, 64.08602f)), owning_building_guid = 109) - LocalObject(1494, IFFLock.Constructor(Vector3(5348.014f, 5819.483f, 74.21102f), Vector3(0, 0, 209)), owning_building_guid = 109, door_guid = 685) - LocalObject(1495, IFFLock.Constructor(Vector3(5348.014f, 5819.483f, 94.21102f), Vector3(0, 0, 209)), owning_building_guid = 109, door_guid = 686) - LocalObject(1496, IFFLock.Constructor(Vector3(5352.98f, 5836.879f, 74.21102f), Vector3(0, 0, 29)), owning_building_guid = 109, door_guid = 687) - LocalObject(1497, IFFLock.Constructor(Vector3(5352.98f, 5836.879f, 94.21102f), Vector3(0, 0, 29)), owning_building_guid = 109, door_guid = 688) + LocalObject( + 1494, + IFFLock.Constructor(Vector3(5348.014f, 5819.483f, 74.21102f), Vector3(0, 0, 209)), + owning_building_guid = 109, + door_guid = 685 + ) + LocalObject( + 1495, + IFFLock.Constructor(Vector3(5348.014f, 5819.483f, 94.21102f), Vector3(0, 0, 209)), + owning_building_guid = 109, + door_guid = 686 + ) + LocalObject( + 1496, + IFFLock.Constructor(Vector3(5352.98f, 5836.879f, 74.21102f), Vector3(0, 0, 29)), + owning_building_guid = 109, + door_guid = 687 + ) + LocalObject( + 1497, + IFFLock.Constructor(Vector3(5352.98f, 5836.879f, 94.21102f), Vector3(0, 0, 29)), + owning_building_guid = 109, + door_guid = 688 + ) LocalObject(1953, Locker.Constructor(Vector3(5346.456f, 5813.229f, 62.74402f)), owning_building_guid = 109) LocalObject(1954, Locker.Constructor(Vector3(5347.625f, 5812.581f, 62.74402f)), owning_building_guid = 109) LocalObject(1955, Locker.Constructor(Vector3(5349.976f, 5811.278f, 62.74402f)), owning_building_guid = 109) @@ -3607,39 +10575,126 @@ object Map03 { // Cyssor LocalObject(1958, Locker.Constructor(Vector3(5358.259f, 5831.693f, 62.74402f)), owning_building_guid = 109) LocalObject(1959, Locker.Constructor(Vector3(5360.58f, 5830.407f, 62.74402f)), owning_building_guid = 109) LocalObject(1960, Locker.Constructor(Vector3(5361.806f, 5829.728f, 62.74402f)), owning_building_guid = 109) - LocalObject(2487, Terminal.Constructor(Vector3(5353.971f, 5814.97f, 64.08202f), order_terminal), owning_building_guid = 109) - LocalObject(2488, Terminal.Constructor(Vector3(5356.746f, 5819.976f, 64.08202f), order_terminal), owning_building_guid = 109) - LocalObject(2489, Terminal.Constructor(Vector3(5359.354f, 5824.683f, 64.08202f), order_terminal), owning_building_guid = 109) - LocalObject(3315, SpawnTube.Constructor(Vector3(5343.421f, 5818.088f, 62.23203f), respawn_tube_tower, Vector3(0, 0, 29)), owning_building_guid = 109) - LocalObject(3316, SpawnTube.Constructor(Vector3(5351.376f, 5832.441f, 62.23203f), respawn_tube_tower, Vector3(0, 0, 29)), owning_building_guid = 109) - LocalObject(2867, ProximityTerminal.Constructor(Vector3(5336.487f, 5829.917f, 100.32f), pad_landing_tower_frame), owning_building_guid = 109) - LocalObject(2868, Terminal.Constructor(Vector3(5336.487f, 5829.917f, 100.32f), air_rearm_terminal), owning_building_guid = 109) - LocalObject(2870, ProximityTerminal.Constructor(Vector3(5341.55f, 5839.052f, 100.32f), pad_landing_tower_frame), owning_building_guid = 109) - LocalObject(2871, Terminal.Constructor(Vector3(5341.55f, 5839.052f, 100.32f), air_rearm_terminal), owning_building_guid = 109) - LocalObject(2259, FacilityTurret.Constructor(Vector3(5319.691f, 5828.158f, 91.69202f), manned_turret), owning_building_guid = 109) + LocalObject( + 2487, + Terminal.Constructor(Vector3(5353.971f, 5814.97f, 64.08202f), order_terminal), + owning_building_guid = 109 + ) + LocalObject( + 2488, + Terminal.Constructor(Vector3(5356.746f, 5819.976f, 64.08202f), order_terminal), + owning_building_guid = 109 + ) + LocalObject( + 2489, + Terminal.Constructor(Vector3(5359.354f, 5824.683f, 64.08202f), order_terminal), + owning_building_guid = 109 + ) + LocalObject( + 3315, + SpawnTube.Constructor(Vector3(5343.421f, 5818.088f, 62.23203f), respawn_tube_tower, Vector3(0, 0, 29)), + owning_building_guid = 109 + ) + LocalObject( + 3316, + SpawnTube.Constructor(Vector3(5351.376f, 5832.441f, 62.23203f), respawn_tube_tower, Vector3(0, 0, 29)), + owning_building_guid = 109 + ) + LocalObject( + 2867, + ProximityTerminal.Constructor(Vector3(5336.487f, 5829.917f, 100.32f), pad_landing_tower_frame), + owning_building_guid = 109 + ) + LocalObject( + 2868, + Terminal.Constructor(Vector3(5336.487f, 5829.917f, 100.32f), air_rearm_terminal), + owning_building_guid = 109 + ) + LocalObject( + 2870, + ProximityTerminal.Constructor(Vector3(5341.55f, 5839.052f, 100.32f), pad_landing_tower_frame), + owning_building_guid = 109 + ) + LocalObject( + 2871, + Terminal.Constructor(Vector3(5341.55f, 5839.052f, 100.32f), air_rearm_terminal), + owning_building_guid = 109 + ) + LocalObject( + 2259, + FacilityTurret.Constructor(Vector3(5319.691f, 5828.158f, 91.69202f), manned_turret), + owning_building_guid = 109 + ) TurretToWeapon(2259, 5139) - LocalObject(2260, FacilityTurret.Constructor(Vector3(5367.802f, 5835.69f, 91.69202f), manned_turret), owning_building_guid = 109) + LocalObject( + 2260, + FacilityTurret.Constructor(Vector3(5367.802f, 5835.69f, 91.69202f), manned_turret), + owning_building_guid = 109 + ) TurretToWeapon(2260, 5140) - LocalObject(3050, Painbox.Constructor(Vector3(5340.429f, 5825.586f, 64.76952f), painbox_radius_continuous), owning_building_guid = 109) - LocalObject(3051, Painbox.Constructor(Vector3(5349.73f, 5816.646f, 62.85002f), painbox_radius_continuous), owning_building_guid = 109) - LocalObject(3052, Painbox.Constructor(Vector3(5355.947f, 5827.472f, 62.85002f), painbox_radius_continuous), owning_building_guid = 109) + LocalObject( + 3050, + Painbox.Constructor(Vector3(5340.429f, 5825.586f, 64.76952f), painbox_radius_continuous), + owning_building_guid = 109 + ) + LocalObject( + 3051, + Painbox.Constructor(Vector3(5349.73f, 5816.646f, 62.85002f), painbox_radius_continuous), + owning_building_guid = 109 + ) + LocalObject( + 3052, + Painbox.Constructor(Vector3(5355.947f, 5827.472f, 62.85002f), painbox_radius_continuous), + owning_building_guid = 109 + ) } Building44() def Building44(): Unit = { // Name: N_Kanng_Tower Type: tower_c GUID: 110, MapID: 44 - LocalBuilding("N_Kanng_Tower", 110, 44, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5688f, 4896f, 46.99545f), Vector3(0f, 0f, 339f), tower_c))) - LocalObject(3376, CaptureTerminal.Constructor(Vector3(5703.448f, 4889.959f, 56.99445f), secondary_capture), owning_building_guid = 110) + LocalBuilding( + "N_Kanng_Tower", + 110, + 44, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5688f, 4896f, 46.99545f), Vector3(0f, 0f, 339f), tower_c) + ) + ) + LocalObject( + 3376, + CaptureTerminal.Constructor(Vector3(5703.448f, 4889.959f, 56.99445f), secondary_capture), + owning_building_guid = 110 + ) LocalObject(712, Door.Constructor(Vector3(5696.336f, 4884.231f, 48.51645f)), owning_building_guid = 110) LocalObject(713, Door.Constructor(Vector3(5696.336f, 4884.231f, 68.51546f)), owning_building_guid = 110) LocalObject(714, Door.Constructor(Vector3(5702.07f, 4899.168f, 48.51645f)), owning_building_guid = 110) LocalObject(715, Door.Constructor(Vector3(5702.07f, 4899.168f, 68.51546f)), owning_building_guid = 110) LocalObject(3588, Door.Constructor(Vector3(5694.39f, 4881.544f, 38.33145f)), owning_building_guid = 110) LocalObject(3589, Door.Constructor(Vector3(5700.271f, 4896.864f, 38.33145f)), owning_building_guid = 110) - LocalObject(1516, IFFLock.Constructor(Vector3(5697.957f, 4882.74f, 48.45645f), Vector3(0, 0, 201)), owning_building_guid = 110, door_guid = 712) - LocalObject(1517, IFFLock.Constructor(Vector3(5697.957f, 4882.74f, 68.45645f), Vector3(0, 0, 201)), owning_building_guid = 110, door_guid = 713) - LocalObject(1518, IFFLock.Constructor(Vector3(5700.453f, 4900.658f, 48.45645f), Vector3(0, 0, 21)), owning_building_guid = 110, door_guid = 714) - LocalObject(1519, IFFLock.Constructor(Vector3(5700.453f, 4900.658f, 68.45645f), Vector3(0, 0, 21)), owning_building_guid = 110, door_guid = 715) + LocalObject( + 1516, + IFFLock.Constructor(Vector3(5697.957f, 4882.74f, 48.45645f), Vector3(0, 0, 201)), + owning_building_guid = 110, + door_guid = 712 + ) + LocalObject( + 1517, + IFFLock.Constructor(Vector3(5697.957f, 4882.74f, 68.45645f), Vector3(0, 0, 201)), + owning_building_guid = 110, + door_guid = 713 + ) + LocalObject( + 1518, + IFFLock.Constructor(Vector3(5700.453f, 4900.658f, 48.45645f), Vector3(0, 0, 21)), + owning_building_guid = 110, + door_guid = 714 + ) + LocalObject( + 1519, + IFFLock.Constructor(Vector3(5700.453f, 4900.658f, 68.45645f), Vector3(0, 0, 21)), + owning_building_guid = 110, + door_guid = 715 + ) LocalObject(1989, Locker.Constructor(Vector3(5697.283f, 4876.33f, 36.98945f)), owning_building_guid = 110) LocalObject(1990, Locker.Constructor(Vector3(5698.532f, 4875.851f, 36.98945f)), owning_building_guid = 110) LocalObject(1991, Locker.Constructor(Vector3(5701.041f, 4874.887f, 36.98945f)), owning_building_guid = 110) @@ -3648,46 +10703,122 @@ object Map03 { // Cyssor LocalObject(1994, Locker.Constructor(Vector3(5706.402f, 4896.257f, 36.98945f)), owning_building_guid = 110) LocalObject(1995, Locker.Constructor(Vector3(5708.879f, 4895.307f, 36.98945f)), owning_building_guid = 110) LocalObject(1996, Locker.Constructor(Vector3(5710.188f, 4894.804f, 36.98945f)), owning_building_guid = 110) - LocalObject(2502, Terminal.Constructor(Vector3(5704.483f, 4879.1f, 38.32745f), order_terminal), owning_building_guid = 110) - LocalObject(2503, Terminal.Constructor(Vector3(5706.535f, 4884.443f, 38.32745f), order_terminal), owning_building_guid = 110) - LocalObject(2504, Terminal.Constructor(Vector3(5708.463f, 4889.467f, 38.32745f), order_terminal), owning_building_guid = 110) - LocalObject(3324, SpawnTube.Constructor(Vector3(5693.602f, 4880.72f, 36.47746f), respawn_tube_tower, Vector3(0, 0, 21)), owning_building_guid = 110) - LocalObject(3325, SpawnTube.Constructor(Vector3(5699.483f, 4896.04f, 36.47746f), respawn_tube_tower, Vector3(0, 0, 21)), owning_building_guid = 110) - LocalObject(2873, ProximityTerminal.Constructor(Vector3(5685.089f, 4891.467f, 74.56545f), pad_landing_tower_frame), owning_building_guid = 110) - LocalObject(2874, Terminal.Constructor(Vector3(5685.089f, 4891.467f, 74.56545f), air_rearm_terminal), owning_building_guid = 110) - LocalObject(2876, ProximityTerminal.Constructor(Vector3(5688.833f, 4901.218f, 74.56545f), pad_landing_tower_frame), owning_building_guid = 110) - LocalObject(2877, Terminal.Constructor(Vector3(5688.833f, 4901.218f, 74.56545f), air_rearm_terminal), owning_building_guid = 110) - LocalObject(2268, FacilityTurret.Constructor(Vector3(5668.702f, 4887.389f, 65.93745f), manned_turret), owning_building_guid = 110) + LocalObject( + 2502, + Terminal.Constructor(Vector3(5704.483f, 4879.1f, 38.32745f), order_terminal), + owning_building_guid = 110 + ) + LocalObject( + 2503, + Terminal.Constructor(Vector3(5706.535f, 4884.443f, 38.32745f), order_terminal), + owning_building_guid = 110 + ) + LocalObject( + 2504, + Terminal.Constructor(Vector3(5708.463f, 4889.467f, 38.32745f), order_terminal), + owning_building_guid = 110 + ) + LocalObject( + 3324, + SpawnTube.Constructor(Vector3(5693.602f, 4880.72f, 36.47746f), respawn_tube_tower, Vector3(0, 0, 21)), + owning_building_guid = 110 + ) + LocalObject( + 3325, + SpawnTube.Constructor(Vector3(5699.483f, 4896.04f, 36.47746f), respawn_tube_tower, Vector3(0, 0, 21)), + owning_building_guid = 110 + ) + LocalObject( + 2873, + ProximityTerminal.Constructor(Vector3(5685.089f, 4891.467f, 74.56545f), pad_landing_tower_frame), + owning_building_guid = 110 + ) + LocalObject( + 2874, + Terminal.Constructor(Vector3(5685.089f, 4891.467f, 74.56545f), air_rearm_terminal), + owning_building_guid = 110 + ) + LocalObject( + 2876, + ProximityTerminal.Constructor(Vector3(5688.833f, 4901.218f, 74.56545f), pad_landing_tower_frame), + owning_building_guid = 110 + ) + LocalObject( + 2877, + Terminal.Constructor(Vector3(5688.833f, 4901.218f, 74.56545f), air_rearm_terminal), + owning_building_guid = 110 + ) + LocalObject( + 2268, + FacilityTurret.Constructor(Vector3(5668.702f, 4887.389f, 65.93745f), manned_turret), + owning_building_guid = 110 + ) TurretToWeapon(2268, 5141) - LocalObject(2270, FacilityTurret.Constructor(Vector3(5715.296f, 4901.543f, 65.93745f), manned_turret), owning_building_guid = 110) + LocalObject( + 2270, + FacilityTurret.Constructor(Vector3(5715.296f, 4901.543f, 65.93745f), manned_turret), + owning_building_guid = 110 + ) TurretToWeapon(2270, 5142) - LocalObject(3059, Painbox.Constructor(Vector3(5689.596f, 4887.728f, 39.01495f), painbox_radius_continuous), owning_building_guid = 110) - LocalObject(3060, Painbox.Constructor(Vector3(5700.05f, 4880.169f, 37.09545f), painbox_radius_continuous), owning_building_guid = 110) - LocalObject(3061, Painbox.Constructor(Vector3(5704.701f, 4891.755f, 37.09545f), painbox_radius_continuous), owning_building_guid = 110) + LocalObject( + 3059, + Painbox.Constructor(Vector3(5689.596f, 4887.728f, 39.01495f), painbox_radius_continuous), + owning_building_guid = 110 + ) + LocalObject( + 3060, + Painbox.Constructor(Vector3(5700.05f, 4880.169f, 37.09545f), painbox_radius_continuous), + owning_building_guid = 110 + ) + LocalObject( + 3061, + Painbox.Constructor(Vector3(5704.701f, 4891.755f, 37.09545f), painbox_radius_continuous), + owning_building_guid = 110 + ) } Building9() def Building9(): Unit = { // Name: WG_Cyssor_to_Searhus Type: warpgate GUID: 111, MapID: 9 - LocalBuilding("WG_Cyssor_to_Searhus", 111, 9, FoundationBuilder(WarpGate.Structure(Vector3(1196f, 1470f, 67.54601f)))) + LocalBuilding( + "WG_Cyssor_to_Searhus", + 111, + 9, + FoundationBuilder(WarpGate.Structure(Vector3(1196f, 1470f, 67.54601f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Cyssor_to_NCSanc Type: warpgate GUID: 112, MapID: 3 - LocalBuilding("WG_Cyssor_to_NCSanc", 112, 3, FoundationBuilder(WarpGate.Structure(Vector3(2614f, 6722f, 61.31535f)))) + LocalBuilding( + "WG_Cyssor_to_NCSanc", + 112, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(2614f, 6722f, 61.31535f))) + ) } Building13() def Building13(): Unit = { // Name: WG_Cyssor_to_TRSanc Type: warpgate GUID: 113, MapID: 13 - LocalBuilding("WG_Cyssor_to_TRSanc", 113, 13, FoundationBuilder(WarpGate.Structure(Vector3(5946f, 1892f, 62.92611f)))) + LocalBuilding( + "WG_Cyssor_to_TRSanc", + 113, + 13, + FoundationBuilder(WarpGate.Structure(Vector3(5946f, 1892f, 62.92611f))) + ) } Building17() def Building17(): Unit = { // Name: WG_Cyssor_to_Solsar Type: warpgate GUID: 114, MapID: 17 - LocalBuilding("WG_Cyssor_to_Solsar", 114, 17, FoundationBuilder(WarpGate.Structure(Vector3(7112f, 5252f, 57.40348f)))) + LocalBuilding( + "WG_Cyssor_to_Solsar", + 114, + 17, + FoundationBuilder(WarpGate.Structure(Vector3(7112f, 5252f, 57.40348f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map04.scala b/pslogin/src/main/scala/zonemaps/Map04.scala index ee2a4776..277a6d20 100644 --- a/pslogin/src/main/scala/zonemaps/Map04.scala +++ b/pslogin/src/main/scala/zonemaps/Map04.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map04 { // Ishundar Building8() def Building8(): Unit = { // Name: Enkidu Type: amp_station GUID: 1, MapID: 8 - LocalBuilding("Enkidu", 1, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3318f, 3574f, 37.19054f), Vector3(0f, 0f, 134f), amp_station))) - LocalObject(222, CaptureTerminal.Constructor(Vector3(3320.315f, 3571.598f, 48.69854f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Enkidu", + 1, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3318f, 3574f, 37.19054f), + Vector3(0f, 0f, 134f), + amp_station + ) + ) + ) + LocalObject( + 222, + CaptureTerminal.Constructor(Vector3(3320.315f, 3571.598f, 48.69854f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(180, Door.Constructor(Vector3(3312.956f, 3569.427f, 50.09254f)), owning_building_guid = 1) LocalObject(181, Door.Constructor(Vector3(3322.749f, 3578.879f, 50.09254f)), owning_building_guid = 1) LocalObject(437, Door.Constructor(Vector3(3255.375f, 3506.143f, 46.90554f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map04 { // Ishundar LocalObject(2927, Door.Constructor(Vector3(3328.322f, 3557.1f, 31.74454f)), owning_building_guid = 1) LocalObject(2928, Door.Constructor(Vector3(3333.565f, 3562.163f, 31.74454f)), owning_building_guid = 1) LocalObject(2929, Door.Constructor(Vector3(3338.811f, 3567.229f, 31.74454f)), owning_building_guid = 1) - LocalObject(970, IFFLock.Constructor(Vector3(3293.625f, 3594.828f, 38.87054f), Vector3(0, 0, 316)), owning_building_guid = 1, door_guid = 922) - LocalObject(1084, IFFLock.Constructor(Vector3(3290.676f, 3555.318f, 48.85154f), Vector3(0, 0, 316)), owning_building_guid = 1, door_guid = 444) - LocalObject(1085, IFFLock.Constructor(Vector3(3293.293f, 3547.299f, 43.85254f), Vector3(0, 0, 226)), owning_building_guid = 1, door_guid = 443) - LocalObject(1086, IFFLock.Constructor(Vector3(3301.043f, 3550.474f, 48.85154f), Vector3(0, 0, 136)), owning_building_guid = 1, door_guid = 445) - LocalObject(1087, IFFLock.Constructor(Vector3(3314.073f, 3461.713f, 38.85054f), Vector3(0, 0, 226)), owning_building_guid = 1, door_guid = 447) - LocalObject(1088, IFFLock.Constructor(Vector3(3320.996f, 3558.026f, 31.22654f), Vector3(0, 0, 226)), owning_building_guid = 1, door_guid = 751) - LocalObject(1089, IFFLock.Constructor(Vector3(3328.416f, 3582.752f, 23.72654f), Vector3(0, 0, 136)), owning_building_guid = 1, door_guid = 752) - LocalObject(1090, IFFLock.Constructor(Vector3(3334.657f, 3597.79f, 48.85154f), Vector3(0, 0, 316)), owning_building_guid = 1, door_guid = 451) - LocalObject(1091, IFFLock.Constructor(Vector3(3337.336f, 3578.176f, 31.22654f), Vector3(0, 0, 46)), owning_building_guid = 1, door_guid = 756) - LocalObject(1092, IFFLock.Constructor(Vector3(3342.694f, 3600.685f, 43.85254f), Vector3(0, 0, 46)), owning_building_guid = 1, door_guid = 453) - LocalObject(1093, IFFLock.Constructor(Vector3(3345.022f, 3592.944f, 48.85154f), Vector3(0, 0, 136)), owning_building_guid = 1, door_guid = 452) - LocalObject(1094, IFFLock.Constructor(Vector3(3352.528f, 3541.741f, 23.72654f), Vector3(0, 0, 316)), owning_building_guid = 1, door_guid = 762) + LocalObject( + 970, + IFFLock.Constructor(Vector3(3293.625f, 3594.828f, 38.87054f), Vector3(0, 0, 316)), + owning_building_guid = 1, + door_guid = 922 + ) + LocalObject( + 1084, + IFFLock.Constructor(Vector3(3290.676f, 3555.318f, 48.85154f), Vector3(0, 0, 316)), + owning_building_guid = 1, + door_guid = 444 + ) + LocalObject( + 1085, + IFFLock.Constructor(Vector3(3293.293f, 3547.299f, 43.85254f), Vector3(0, 0, 226)), + owning_building_guid = 1, + door_guid = 443 + ) + LocalObject( + 1086, + IFFLock.Constructor(Vector3(3301.043f, 3550.474f, 48.85154f), Vector3(0, 0, 136)), + owning_building_guid = 1, + door_guid = 445 + ) + LocalObject( + 1087, + IFFLock.Constructor(Vector3(3314.073f, 3461.713f, 38.85054f), Vector3(0, 0, 226)), + owning_building_guid = 1, + door_guid = 447 + ) + LocalObject( + 1088, + IFFLock.Constructor(Vector3(3320.996f, 3558.026f, 31.22654f), Vector3(0, 0, 226)), + owning_building_guid = 1, + door_guid = 751 + ) + LocalObject( + 1089, + IFFLock.Constructor(Vector3(3328.416f, 3582.752f, 23.72654f), Vector3(0, 0, 136)), + owning_building_guid = 1, + door_guid = 752 + ) + LocalObject( + 1090, + IFFLock.Constructor(Vector3(3334.657f, 3597.79f, 48.85154f), Vector3(0, 0, 316)), + owning_building_guid = 1, + door_guid = 451 + ) + LocalObject( + 1091, + IFFLock.Constructor(Vector3(3337.336f, 3578.176f, 31.22654f), Vector3(0, 0, 46)), + owning_building_guid = 1, + door_guid = 756 + ) + LocalObject( + 1092, + IFFLock.Constructor(Vector3(3342.694f, 3600.685f, 43.85254f), Vector3(0, 0, 46)), + owning_building_guid = 1, + door_guid = 453 + ) + LocalObject( + 1093, + IFFLock.Constructor(Vector3(3345.022f, 3592.944f, 48.85154f), Vector3(0, 0, 136)), + owning_building_guid = 1, + door_guid = 452 + ) + LocalObject( + 1094, + IFFLock.Constructor(Vector3(3352.528f, 3541.741f, 23.72654f), Vector3(0, 0, 316)), + owning_building_guid = 1, + door_guid = 762 + ) LocalObject(1424, Locker.Constructor(Vector3(3303.334f, 3580.312f, 22.39054f)), owning_building_guid = 1) LocalObject(1425, Locker.Constructor(Vector3(3304.263f, 3579.35f, 22.39054f)), owning_building_guid = 1) LocalObject(1426, Locker.Constructor(Vector3(3305.191f, 3578.389f, 22.39054f)), owning_building_guid = 1) @@ -94,64 +170,253 @@ object Map04 { // Ishundar LocalObject(1433, Locker.Constructor(Vector3(3332.225f, 3579.221f, 30.15154f)), owning_building_guid = 1) LocalObject(1434, Locker.Constructor(Vector3(3333.021f, 3578.396f, 30.15154f)), owning_building_guid = 1) LocalObject(1435, Locker.Constructor(Vector3(3333.83f, 3577.558f, 30.15154f)), owning_building_guid = 1) - LocalObject(1979, Terminal.Constructor(Vector3(3301.833f, 3558.385f, 38.71954f), order_terminal), owning_building_guid = 1) - LocalObject(1980, Terminal.Constructor(Vector3(3322.485f, 3570.899f, 31.48055f), order_terminal), owning_building_guid = 1) - LocalObject(1981, Terminal.Constructor(Vector3(3325.21f, 3573.531f, 31.48055f), order_terminal), owning_building_guid = 1) - LocalObject(1982, Terminal.Constructor(Vector3(3327.894f, 3576.123f, 31.48055f), order_terminal), owning_building_guid = 1) - LocalObject(1983, Terminal.Constructor(Vector3(3333.61f, 3557.841f, 38.71954f), order_terminal), owning_building_guid = 1) - LocalObject(1984, Terminal.Constructor(Vector3(3334.17f, 3589.612f, 38.71954f), order_terminal), owning_building_guid = 1) - LocalObject(2834, Terminal.Constructor(Vector3(3322.955f, 3512.138f, 31.44754f), spawn_terminal), owning_building_guid = 1) - LocalObject(2835, Terminal.Constructor(Vector3(3323.547f, 3546.073f, 23.94754f), spawn_terminal), owning_building_guid = 1) - LocalObject(2836, Terminal.Constructor(Vector3(3325.061f, 3573.167f, 43.91854f), spawn_terminal), owning_building_guid = 1) - LocalObject(2837, Terminal.Constructor(Vector3(3329.908f, 3559.045f, 32.02454f), spawn_terminal), owning_building_guid = 1) - LocalObject(2838, Terminal.Constructor(Vector3(3335.153f, 3564.105f, 32.02454f), spawn_terminal), owning_building_guid = 1) - LocalObject(2839, Terminal.Constructor(Vector3(3340.395f, 3569.173f, 32.02454f), spawn_terminal), owning_building_guid = 1) - LocalObject(3069, Terminal.Constructor(Vector3(3291.965f, 3482.235f, 39.29255f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1885, VehicleSpawnPad.Constructor(Vector3(3301.713f, 3491.774f, 35.13554f), mb_pad_creation, Vector3(0, 0, 46)), owning_building_guid = 1, terminal_guid = 3069) + LocalObject( + 1979, + Terminal.Constructor(Vector3(3301.833f, 3558.385f, 38.71954f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1980, + Terminal.Constructor(Vector3(3322.485f, 3570.899f, 31.48055f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1981, + Terminal.Constructor(Vector3(3325.21f, 3573.531f, 31.48055f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1982, + Terminal.Constructor(Vector3(3327.894f, 3576.123f, 31.48055f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1983, + Terminal.Constructor(Vector3(3333.61f, 3557.841f, 38.71954f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1984, + Terminal.Constructor(Vector3(3334.17f, 3589.612f, 38.71954f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2834, + Terminal.Constructor(Vector3(3322.955f, 3512.138f, 31.44754f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2835, + Terminal.Constructor(Vector3(3323.547f, 3546.073f, 23.94754f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2836, + Terminal.Constructor(Vector3(3325.061f, 3573.167f, 43.91854f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2837, + Terminal.Constructor(Vector3(3329.908f, 3559.045f, 32.02454f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2838, + Terminal.Constructor(Vector3(3335.153f, 3564.105f, 32.02454f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2839, + Terminal.Constructor(Vector3(3340.395f, 3569.173f, 32.02454f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 3069, + Terminal.Constructor(Vector3(3291.965f, 3482.235f, 39.29255f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1885, + VehicleSpawnPad.Constructor(Vector3(3301.713f, 3491.774f, 35.13554f), mb_pad_creation, Vector3(0, 0, 46)), + owning_building_guid = 1, + terminal_guid = 3069 + ) LocalObject(2655, ResourceSilo.Constructor(Vector3(3342.93f, 3671.26f, 44.42554f)), owning_building_guid = 1) - LocalObject(2703, SpawnTube.Constructor(Vector3(3329.385f, 3557.515f, 29.89054f), Vector3(0, 0, 226)), owning_building_guid = 1) - LocalObject(2704, SpawnTube.Constructor(Vector3(3334.627f, 3562.577f, 29.89054f), Vector3(0, 0, 226)), owning_building_guid = 1) - LocalObject(2705, SpawnTube.Constructor(Vector3(3339.872f, 3567.642f, 29.89054f), Vector3(0, 0, 226)), owning_building_guid = 1) - LocalObject(1904, ProximityTerminal.Constructor(Vector3(3308.092f, 3576.17f, 22.39054f), medical_terminal), owning_building_guid = 1) - LocalObject(1905, ProximityTerminal.Constructor(Vector3(3333.32f, 3558.144f, 42.39054f), medical_terminal), owning_building_guid = 1) - LocalObject(2216, ProximityTerminal.Constructor(Vector3(3258.225f, 3553.25f, 47.85654f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2217, Terminal.Constructor(Vector3(3258.225f, 3553.25f, 47.85654f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2219, ProximityTerminal.Constructor(Vector3(3297.968f, 3623.295f, 45.69555f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2220, Terminal.Constructor(Vector3(3297.968f, 3623.295f, 45.69555f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2222, ProximityTerminal.Constructor(Vector3(3343.546f, 3519.085f, 45.69555f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2223, Terminal.Constructor(Vector3(3343.546f, 3519.085f, 45.69555f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2225, ProximityTerminal.Constructor(Vector3(3365.104f, 3631.023f, 45.71854f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2226, Terminal.Constructor(Vector3(3365.104f, 3631.023f, 45.71854f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2587, ProximityTerminal.Constructor(Vector3(3274.423f, 3618.559f, 36.59055f), repair_silo), owning_building_guid = 1) - LocalObject(2588, Terminal.Constructor(Vector3(3274.423f, 3618.559f, 36.59055f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2591, ProximityTerminal.Constructor(Vector3(3366.547f, 3523.436f, 36.59055f), repair_silo), owning_building_guid = 1) - LocalObject(2592, Terminal.Constructor(Vector3(3366.547f, 3523.436f, 36.59055f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1796, FacilityTurret.Constructor(Vector3(3191.991f, 3553.579f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 2703, + SpawnTube.Constructor(Vector3(3329.385f, 3557.515f, 29.89054f), Vector3(0, 0, 226)), + owning_building_guid = 1 + ) + LocalObject( + 2704, + SpawnTube.Constructor(Vector3(3334.627f, 3562.577f, 29.89054f), Vector3(0, 0, 226)), + owning_building_guid = 1 + ) + LocalObject( + 2705, + SpawnTube.Constructor(Vector3(3339.872f, 3567.642f, 29.89054f), Vector3(0, 0, 226)), + owning_building_guid = 1 + ) + LocalObject( + 1904, + ProximityTerminal.Constructor(Vector3(3308.092f, 3576.17f, 22.39054f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1905, + ProximityTerminal.Constructor(Vector3(3333.32f, 3558.144f, 42.39054f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2216, + ProximityTerminal.Constructor(Vector3(3258.225f, 3553.25f, 47.85654f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2217, + Terminal.Constructor(Vector3(3258.225f, 3553.25f, 47.85654f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2219, + ProximityTerminal.Constructor(Vector3(3297.968f, 3623.295f, 45.69555f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2220, + Terminal.Constructor(Vector3(3297.968f, 3623.295f, 45.69555f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2222, + ProximityTerminal.Constructor(Vector3(3343.546f, 3519.085f, 45.69555f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2223, + Terminal.Constructor(Vector3(3343.546f, 3519.085f, 45.69555f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2225, + ProximityTerminal.Constructor(Vector3(3365.104f, 3631.023f, 45.71854f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2226, + Terminal.Constructor(Vector3(3365.104f, 3631.023f, 45.71854f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2587, + ProximityTerminal.Constructor(Vector3(3274.423f, 3618.559f, 36.59055f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2588, + Terminal.Constructor(Vector3(3274.423f, 3618.559f, 36.59055f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2591, + ProximityTerminal.Constructor(Vector3(3366.547f, 3523.436f, 36.59055f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2592, + Terminal.Constructor(Vector3(3366.547f, 3523.436f, 36.59055f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1796, + FacilityTurret.Constructor(Vector3(3191.991f, 3553.579f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1796, 5000) - LocalObject(1801, FacilityTurret.Constructor(Vector3(3236.043f, 3599.204f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 1801, + FacilityTurret.Constructor(Vector3(3236.043f, 3599.204f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1801, 5001) - LocalObject(1806, FacilityTurret.Constructor(Vector3(3298.591f, 3443.177f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 1806, + FacilityTurret.Constructor(Vector3(3298.591f, 3443.177f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1806, 5002) - LocalObject(1807, FacilityTurret.Constructor(Vector3(3337.071f, 3693.669f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 1807, + FacilityTurret.Constructor(Vector3(3337.071f, 3693.669f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1807, 5003) - LocalObject(1808, FacilityTurret.Constructor(Vector3(3403.855f, 3627.705f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 1808, + FacilityTurret.Constructor(Vector3(3403.855f, 3627.705f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1808, 5004) - LocalObject(1809, FacilityTurret.Constructor(Vector3(3443.646f, 3583.294f, 45.89854f), manned_turret), owning_building_guid = 1) + LocalObject( + 1809, + FacilityTurret.Constructor(Vector3(3443.646f, 3583.294f, 45.89854f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1809, 5005) - LocalObject(2382, Painbox.Constructor(Vector3(3364.526f, 3535.729f, 27.26154f), painbox), owning_building_guid = 1) - LocalObject(2394, Painbox.Constructor(Vector3(3327.627f, 3566.065f, 34.83894f), painbox_continuous), owning_building_guid = 1) - LocalObject(2406, Painbox.Constructor(Vector3(3353.24f, 3544.354f, 23.84954f), painbox_door_radius), owning_building_guid = 1) - LocalObject(2426, Painbox.Constructor(Vector3(3314.134f, 3572.307f, 33.06915f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2427, Painbox.Constructor(Vector3(3319.606f, 3558.972f, 31.15504f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2428, Painbox.Constructor(Vector3(3338.61f, 3577.221f, 31.09054f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 2382, + Painbox.Constructor(Vector3(3364.526f, 3535.729f, 27.26154f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 2394, + Painbox.Constructor(Vector3(3327.627f, 3566.065f, 34.83894f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2406, + Painbox.Constructor(Vector3(3353.24f, 3544.354f, 23.84954f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 2426, + Painbox.Constructor(Vector3(3314.134f, 3572.307f, 33.06915f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2427, + Painbox.Constructor(Vector3(3319.606f, 3558.972f, 31.15504f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2428, + Painbox.Constructor(Vector3(3338.61f, 3577.221f, 31.09054f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(304, Generator.Constructor(Vector3(3365.044f, 3531.078f, 21.09654f)), owning_building_guid = 1) - LocalObject(292, Terminal.Constructor(Vector3(3359.32f, 3536.938f, 22.39054f), gen_control), owning_building_guid = 1) + LocalObject( + 292, + Terminal.Constructor(Vector3(3359.32f, 3536.938f, 22.39054f), gen_control), + owning_building_guid = 1 + ) } Building51() def Building51(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 51 - LocalBuilding("bunker_gauntlet", 4, 51, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(966f, 5404f, 72.35047f), Vector3(0f, 0f, 180f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 51, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(966f, 5404f, 72.35047f), + Vector3(0f, 0f, 180f), + bunker_gauntlet + ) + ) + ) LocalObject(320, Door.Constructor(Vector3(941.077f, 5405.901f, 73.87148f)), owning_building_guid = 4) LocalObject(324, Door.Constructor(Vector3(990.898f, 5405.912f, 73.87148f)), owning_building_guid = 4) } @@ -159,7 +424,19 @@ object Map04 { // Ishundar Building54() def Building54(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 54 - LocalBuilding("bunker_gauntlet", 5, 54, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2830f, 4464f, 39.29373f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 54, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2830f, 4464f, 39.29373f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(402, Door.Constructor(Vector3(2828.099f, 4439.077f, 40.81473f)), owning_building_guid = 5) LocalObject(403, Door.Constructor(Vector3(2828.088f, 4488.898f, 40.81473f)), owning_building_guid = 5) } @@ -167,7 +444,19 @@ object Map04 { // Ishundar Building50() def Building50(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 50 - LocalBuilding("bunker_gauntlet", 6, 50, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3212f, 2186f, 70.5193f), Vector3(0f, 0f, 225f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 50, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3212f, 2186f, 70.5193f), + Vector3(0f, 0f, 225f), + bunker_gauntlet + ) + ) + ) LocalObject(427, Door.Constructor(Vector3(3193.032f, 2169.721f, 72.04031f)), owning_building_guid = 6) LocalObject(432, Door.Constructor(Vector3(3228.254f, 2204.958f, 72.04031f)), owning_building_guid = 6) } @@ -175,7 +464,19 @@ object Map04 { // Ishundar Building52() def Building52(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 52 - LocalBuilding("bunker_gauntlet", 7, 52, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4288f, 5822f, 77.53156f), Vector3(0f, 0f, 134f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 52, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4288f, 5822f, 77.53156f), + Vector3(0f, 0f, 134f), + bunker_gauntlet + ) + ) + ) LocalObject(513, Door.Constructor(Vector3(4272.055f, 5841.249f, 79.05257f)), owning_building_guid = 7) LocalObject(514, Door.Constructor(Vector3(4306.671f, 5805.418f, 79.05257f)), owning_building_guid = 7) } @@ -183,7 +484,19 @@ object Map04 { // Ishundar Building53() def Building53(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 8, MapID: 53 - LocalBuilding("bunker_gauntlet", 8, 53, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(7108f, 5242f, 37.86362f), Vector3(0f, 0f, 225f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 8, + 53, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(7108f, 5242f, 37.86362f), + Vector3(0f, 0f, 225f), + bunker_gauntlet + ) + ) + ) LocalObject(648, Door.Constructor(Vector3(7089.033f, 5225.721f, 39.38462f)), owning_building_guid = 8) LocalObject(650, Door.Constructor(Vector3(7124.253f, 5260.958f, 39.38462f)), owning_building_guid = 8) } @@ -191,71 +504,150 @@ object Map04 { // Ishundar Building42() def Building42(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 42 - LocalBuilding("bunker_lg", 9, 42, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1740f, 5472f, 34.41663f), Vector3(0f, 0f, 44f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 42, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1740f, 5472f, 34.41663f), Vector3(0f, 0f, 44f), bunker_lg) + ) + ) LocalObject(355, Door.Constructor(Vector3(1740.098f, 5475.649f, 35.93763f)), owning_building_guid = 9) } Building43() def Building43(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 43 - LocalBuilding("bunker_lg", 10, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2642f, 4548f, 44.8345f), Vector3(0f, 0f, 180f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 43, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2642f, 4548f, 44.8345f), Vector3(0f, 0f, 180f), bunker_lg) + ) + ) LocalObject(380, Door.Constructor(Vector3(2639.394f, 4545.443f, 46.3555f)), owning_building_guid = 10) } Building45() def Building45(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 11, MapID: 45 - LocalBuilding("bunker_lg", 11, 45, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4034f, 2330f, 70.24219f), Vector3(0f, 0f, 45f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 11, + 45, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4034f, 2330f, 70.24219f), Vector3(0f, 0f, 45f), bunker_lg) + ) + ) LocalObject(494, Door.Constructor(Vector3(4034.035f, 2333.651f, 71.76319f)), owning_building_guid = 11) } Building48() def Building48(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 12, MapID: 48 - LocalBuilding("bunker_lg", 12, 48, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4740f, 2346f, 86.66288f), Vector3(0f, 0f, 180f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 12, + 48, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4740f, 2346f, 86.66288f), Vector3(0f, 0f, 180f), bunker_lg) + ) + ) LocalObject(557, Door.Constructor(Vector3(4737.394f, 2343.443f, 88.18388f)), owning_building_guid = 12) } Building64() def Building64(): Unit = { // Name: Dagon_Tower Type: bunker_sm GUID: 13, MapID: 64 - LocalBuilding("Dagon_Tower", 13, 64, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1972f, 5528f, 39.54084f), Vector3(0f, 0f, 90f), bunker_sm))) + LocalBuilding( + "Dagon_Tower", + 13, + 64, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1972f, 5528f, 39.54084f), Vector3(0f, 0f, 90f), bunker_sm) + ) + ) LocalObject(369, Door.Constructor(Vector3(1972.055f, 5529.225f, 41.06184f)), owning_building_guid = 13) } Building46() def Building46(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 46 - LocalBuilding("bunker_sm", 14, 46, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3472f, 5470f, 76.47643f), Vector3(0f, 0f, 360f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 46, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3472f, 5470f, 76.47643f), Vector3(0f, 0f, 360f), bunker_sm) + ) + ) LocalObject(464, Door.Constructor(Vector3(3473.225f, 5469.945f, 77.99744f)), owning_building_guid = 14) } Building44() def Building44(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 15, MapID: 44 - LocalBuilding("bunker_sm", 15, 44, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3540f, 3566f, 28.99432f), Vector3(0f, 0f, 224f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 15, + 44, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3540f, 3566f, 28.99432f), Vector3(0f, 0f, 224f), bunker_sm) + ) + ) LocalObject(465, Door.Constructor(Vector3(3539.081f, 3565.189f, 30.51532f)), owning_building_guid = 15) } Building47() def Building47(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 47 - LocalBuilding("bunker_sm", 16, 47, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4932f, 5166f, 78.77888f), Vector3(0f, 0f, 135f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 47, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4932f, 5166f, 78.77888f), Vector3(0f, 0f, 135f), bunker_sm) + ) + ) LocalObject(585, Door.Constructor(Vector3(4931.173f, 5166.905f, 80.29988f)), owning_building_guid = 16) } Building49() def Building49(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 17, MapID: 49 - LocalBuilding("bunker_sm", 17, 49, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6394f, 4556f, 41.16785f), Vector3(0f, 0f, 45f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 17, + 49, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6394f, 4556f, 41.16785f), Vector3(0f, 0f, 45f), bunker_sm) + ) + ) LocalObject(612, Door.Constructor(Vector3(6394.905f, 4556.827f, 42.68885f)), owning_building_guid = 17) } Building15() def Building15(): Unit = { // Name: Neti Type: comm_station GUID: 18, MapID: 15 - LocalBuilding("Neti", 18, 15, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3990f, 2502f, 79.94147f), Vector3(0f, 0f, 310f), comm_station))) - LocalObject(224, CaptureTerminal.Constructor(Vector3(4077.122f, 2517.55f, 62.64148f), capture_terminal), owning_building_guid = 18) + LocalBuilding( + "Neti", + 18, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3990f, 2502f, 79.94147f), + Vector3(0f, 0f, 310f), + comm_station + ) + ) + ) + LocalObject( + 224, + CaptureTerminal.Constructor(Vector3(4077.122f, 2517.55f, 62.64148f), capture_terminal), + owning_building_guid = 18 + ) LocalObject(485, Door.Constructor(Vector3(3910.617f, 2491.122f, 89.65648f)), owning_building_guid = 18) LocalObject(486, Door.Constructor(Vector3(3918.236f, 2519.851f, 81.69247f)), owning_building_guid = 18) LocalObject(487, Door.Constructor(Vector3(3922.312f, 2477.185f, 81.69247f)), owning_building_guid = 18) @@ -297,18 +689,78 @@ object Map04 { // Ishundar LocalObject(2939, Door.Constructor(Vector3(4024.093f, 2482.734f, 71.99548f)), owning_building_guid = 18) LocalObject(2940, Door.Constructor(Vector3(4029.68f, 2487.422f, 71.99548f)), owning_building_guid = 18) LocalObject(2941, Door.Constructor(Vector3(4035.263f, 2492.107f, 71.99548f)), owning_building_guid = 18) - LocalObject(972, IFFLock.Constructor(Vector3(4002.48f, 2485.773f, 81.59348f), Vector3(0, 0, 140)), owning_building_guid = 18, door_guid = 924) - LocalObject(1117, IFFLock.Constructor(Vector3(3971.121f, 2509.595f, 86.60248f), Vector3(0, 0, 230)), owning_building_guid = 18, door_guid = 489) - LocalObject(1118, IFFLock.Constructor(Vector3(3976.677f, 2519.596f, 86.60248f), Vector3(0, 0, 50)), owning_building_guid = 18, door_guid = 490) - LocalObject(1119, IFFLock.Constructor(Vector3(3979.399f, 2499.871f, 94.02248f), Vector3(0, 0, 320)), owning_building_guid = 18, door_guid = 491) - LocalObject(1120, IFFLock.Constructor(Vector3(3995.82f, 2530.939f, 63.97747f), Vector3(0, 0, 230)), owning_building_guid = 18, door_guid = 792) - LocalObject(1121, IFFLock.Constructor(Vector3(4008.374f, 2508.036f, 86.60248f), Vector3(0, 0, 320)), owning_building_guid = 18, door_guid = 492) - LocalObject(1122, IFFLock.Constructor(Vector3(4024.801f, 2471.711f, 71.47748f), Vector3(0, 0, 230)), owning_building_guid = 18, door_guid = 801) - LocalObject(1123, IFFLock.Constructor(Vector3(4033.38f, 2466.525f, 63.97747f), Vector3(0, 0, 320)), owning_building_guid = 18, door_guid = 803) - LocalObject(1124, IFFLock.Constructor(Vector3(4042.406f, 2490.588f, 71.47748f), Vector3(0, 0, 50)), owning_building_guid = 18, door_guid = 804) - LocalObject(1125, IFFLock.Constructor(Vector3(4066.076f, 2514.68f, 63.97747f), Vector3(0, 0, 320)), owning_building_guid = 18, door_guid = 808) - LocalObject(1126, IFFLock.Constructor(Vector3(4070.846f, 2527.049f, 81.59148f), Vector3(0, 0, 140)), owning_building_guid = 18, door_guid = 498) - LocalObject(1127, IFFLock.Constructor(Vector3(4074.672f, 2509.327f, 63.97747f), Vector3(0, 0, 140)), owning_building_guid = 18, door_guid = 809) + LocalObject( + 972, + IFFLock.Constructor(Vector3(4002.48f, 2485.773f, 81.59348f), Vector3(0, 0, 140)), + owning_building_guid = 18, + door_guid = 924 + ) + LocalObject( + 1117, + IFFLock.Constructor(Vector3(3971.121f, 2509.595f, 86.60248f), Vector3(0, 0, 230)), + owning_building_guid = 18, + door_guid = 489 + ) + LocalObject( + 1118, + IFFLock.Constructor(Vector3(3976.677f, 2519.596f, 86.60248f), Vector3(0, 0, 50)), + owning_building_guid = 18, + door_guid = 490 + ) + LocalObject( + 1119, + IFFLock.Constructor(Vector3(3979.399f, 2499.871f, 94.02248f), Vector3(0, 0, 320)), + owning_building_guid = 18, + door_guid = 491 + ) + LocalObject( + 1120, + IFFLock.Constructor(Vector3(3995.82f, 2530.939f, 63.97747f), Vector3(0, 0, 230)), + owning_building_guid = 18, + door_guid = 792 + ) + LocalObject( + 1121, + IFFLock.Constructor(Vector3(4008.374f, 2508.036f, 86.60248f), Vector3(0, 0, 320)), + owning_building_guid = 18, + door_guid = 492 + ) + LocalObject( + 1122, + IFFLock.Constructor(Vector3(4024.801f, 2471.711f, 71.47748f), Vector3(0, 0, 230)), + owning_building_guid = 18, + door_guid = 801 + ) + LocalObject( + 1123, + IFFLock.Constructor(Vector3(4033.38f, 2466.525f, 63.97747f), Vector3(0, 0, 320)), + owning_building_guid = 18, + door_guid = 803 + ) + LocalObject( + 1124, + IFFLock.Constructor(Vector3(4042.406f, 2490.588f, 71.47748f), Vector3(0, 0, 50)), + owning_building_guid = 18, + door_guid = 804 + ) + LocalObject( + 1125, + IFFLock.Constructor(Vector3(4066.076f, 2514.68f, 63.97747f), Vector3(0, 0, 320)), + owning_building_guid = 18, + door_guid = 808 + ) + LocalObject( + 1126, + IFFLock.Constructor(Vector3(4070.846f, 2527.049f, 81.59148f), Vector3(0, 0, 140)), + owning_building_guid = 18, + door_guid = 498 + ) + LocalObject( + 1127, + IFFLock.Constructor(Vector3(4074.672f, 2509.327f, 63.97747f), Vector3(0, 0, 140)), + owning_building_guid = 18, + door_guid = 809 + ) LocalObject(1481, Locker.Constructor(Vector3(4028.341f, 2472.083f, 70.40247f)), owning_building_guid = 18) LocalObject(1482, Locker.Constructor(Vector3(4029.09f, 2471.191f, 70.40247f)), owning_building_guid = 18) LocalObject(1483, Locker.Constructor(Vector3(4029.827f, 2470.313f, 70.40247f)), owning_building_guid = 18) @@ -321,60 +773,233 @@ object Map04 { // Ishundar LocalObject(1490, Locker.Constructor(Vector3(4056.853f, 2469.257f, 62.64148f)), owning_building_guid = 18) LocalObject(1491, Locker.Constructor(Vector3(4057.711f, 2468.233f, 62.64148f)), owning_building_guid = 18) LocalObject(1492, Locker.Constructor(Vector3(4058.571f, 2467.209f, 62.64148f)), owning_building_guid = 18) - LocalObject(1998, Terminal.Constructor(Vector3(3966.125f, 2494.526f, 86.50147f), order_terminal), owning_building_guid = 18) - LocalObject(1999, Terminal.Constructor(Vector3(3984.167f, 2494.063f, 93.89648f), order_terminal), owning_building_guid = 18) - LocalObject(2000, Terminal.Constructor(Vector3(3984.339f, 2497.152f, 93.89648f), order_terminal), owning_building_guid = 18) - LocalObject(2001, Terminal.Constructor(Vector3(3987.535f, 2496.887f, 93.89648f), order_terminal), owning_building_guid = 18) - LocalObject(2002, Terminal.Constructor(Vector3(4034.363f, 2473.101f, 71.73148f), order_terminal), owning_building_guid = 18) - LocalObject(2003, Terminal.Constructor(Vector3(4037.221f, 2475.499f, 71.73148f), order_terminal), owning_building_guid = 18) - LocalObject(2004, Terminal.Constructor(Vector3(4040.124f, 2477.935f, 71.73148f), order_terminal), owning_building_guid = 18) - LocalObject(2847, Terminal.Constructor(Vector3(3970.634f, 2487.695f, 86.75848f), spawn_terminal), owning_building_guid = 18) - LocalObject(2848, Terminal.Constructor(Vector3(3986.26f, 2519.823f, 64.19847f), spawn_terminal), owning_building_guid = 18) - LocalObject(2849, Terminal.Constructor(Vector3(4020.218f, 2528.127f, 74.19847f), spawn_terminal), owning_building_guid = 18) - LocalObject(2850, Terminal.Constructor(Vector3(4022.377f, 2480.906f, 72.27547f), spawn_terminal), owning_building_guid = 18) - LocalObject(2851, Terminal.Constructor(Vector3(4027.96f, 2485.596f, 72.27547f), spawn_terminal), owning_building_guid = 18) - LocalObject(2852, Terminal.Constructor(Vector3(4033.545f, 2490.278f, 72.27547f), spawn_terminal), owning_building_guid = 18) - LocalObject(3071, Terminal.Constructor(Vector3(4065.679f, 2497.023f, 82.82848f), vehicle_terminal_combined), owning_building_guid = 18) - LocalObject(1887, VehicleSpawnPad.Constructor(Vector3(4056.803f, 2507.361f, 78.67047f), mb_pad_creation, Vector3(0, 0, -40)), owning_building_guid = 18, terminal_guid = 3071) + LocalObject( + 1998, + Terminal.Constructor(Vector3(3966.125f, 2494.526f, 86.50147f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1999, + Terminal.Constructor(Vector3(3984.167f, 2494.063f, 93.89648f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2000, + Terminal.Constructor(Vector3(3984.339f, 2497.152f, 93.89648f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2001, + Terminal.Constructor(Vector3(3987.535f, 2496.887f, 93.89648f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2002, + Terminal.Constructor(Vector3(4034.363f, 2473.101f, 71.73148f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2003, + Terminal.Constructor(Vector3(4037.221f, 2475.499f, 71.73148f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2004, + Terminal.Constructor(Vector3(4040.124f, 2477.935f, 71.73148f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2847, + Terminal.Constructor(Vector3(3970.634f, 2487.695f, 86.75848f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2848, + Terminal.Constructor(Vector3(3986.26f, 2519.823f, 64.19847f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2849, + Terminal.Constructor(Vector3(4020.218f, 2528.127f, 74.19847f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2850, + Terminal.Constructor(Vector3(4022.377f, 2480.906f, 72.27547f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2851, + Terminal.Constructor(Vector3(4027.96f, 2485.596f, 72.27547f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2852, + Terminal.Constructor(Vector3(4033.545f, 2490.278f, 72.27547f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 3071, + Terminal.Constructor(Vector3(4065.679f, 2497.023f, 82.82848f), vehicle_terminal_combined), + owning_building_guid = 18 + ) + LocalObject( + 1887, + VehicleSpawnPad.Constructor(Vector3(4056.803f, 2507.361f, 78.67047f), mb_pad_creation, Vector3(0, 0, -40)), + owning_building_guid = 18, + terminal_guid = 3071 + ) LocalObject(2657, ResourceSilo.Constructor(Vector3(3901.224f, 2500.311f, 87.15848f)), owning_building_guid = 18) - LocalObject(2715, SpawnTube.Constructor(Vector3(4023.006f, 2482.396f, 70.14147f), Vector3(0, 0, 50)), owning_building_guid = 18) - LocalObject(2716, SpawnTube.Constructor(Vector3(4028.591f, 2487.083f, 70.14147f), Vector3(0, 0, 50)), owning_building_guid = 18) - LocalObject(2717, SpawnTube.Constructor(Vector3(4034.174f, 2491.768f, 70.14147f), Vector3(0, 0, 50)), owning_building_guid = 18) - LocalObject(1907, ProximityTerminal.Constructor(Vector3(3968.358f, 2482.712f, 80.14147f), medical_terminal), owning_building_guid = 18) - LocalObject(1908, ProximityTerminal.Constructor(Vector3(4054.114f, 2471.672f, 62.64148f), medical_terminal), owning_building_guid = 18) - LocalObject(2240, ProximityTerminal.Constructor(Vector3(4020.16f, 2551.909f, 88.38248f), pad_landing_frame), owning_building_guid = 18) - LocalObject(2241, Terminal.Constructor(Vector3(4020.16f, 2551.909f, 88.38248f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(2603, ProximityTerminal.Constructor(Vector3(3968.49f, 2563.696f, 79.69147f), repair_silo), owning_building_guid = 18) - LocalObject(2604, Terminal.Constructor(Vector3(3968.49f, 2563.696f, 79.69147f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(2607, ProximityTerminal.Constructor(Vector3(4010.984f, 2439.141f, 79.69147f), repair_silo), owning_building_guid = 18) - LocalObject(2608, Terminal.Constructor(Vector3(4010.984f, 2439.141f, 79.69147f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(1819, FacilityTurret.Constructor(Vector3(3881.816f, 2505.794f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 2715, + SpawnTube.Constructor(Vector3(4023.006f, 2482.396f, 70.14147f), Vector3(0, 0, 50)), + owning_building_guid = 18 + ) + LocalObject( + 2716, + SpawnTube.Constructor(Vector3(4028.591f, 2487.083f, 70.14147f), Vector3(0, 0, 50)), + owning_building_guid = 18 + ) + LocalObject( + 2717, + SpawnTube.Constructor(Vector3(4034.174f, 2491.768f, 70.14147f), Vector3(0, 0, 50)), + owning_building_guid = 18 + ) + LocalObject( + 1907, + ProximityTerminal.Constructor(Vector3(3968.358f, 2482.712f, 80.14147f), medical_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1908, + ProximityTerminal.Constructor(Vector3(4054.114f, 2471.672f, 62.64148f), medical_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2240, + ProximityTerminal.Constructor(Vector3(4020.16f, 2551.909f, 88.38248f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 2241, + Terminal.Constructor(Vector3(4020.16f, 2551.909f, 88.38248f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2603, + ProximityTerminal.Constructor(Vector3(3968.49f, 2563.696f, 79.69147f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 2604, + Terminal.Constructor(Vector3(3968.49f, 2563.696f, 79.69147f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2607, + ProximityTerminal.Constructor(Vector3(4010.984f, 2439.141f, 79.69147f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 2608, + Terminal.Constructor(Vector3(4010.984f, 2439.141f, 79.69147f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1819, + FacilityTurret.Constructor(Vector3(3881.816f, 2505.794f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1819, 5006) - LocalObject(1820, FacilityTurret.Constructor(Vector3(3947.321f, 2425.897f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 1820, + FacilityTurret.Constructor(Vector3(3947.321f, 2425.897f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1820, 5007) - LocalObject(1821, FacilityTurret.Constructor(Vector3(3972.315f, 2583.208f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 1821, + FacilityTurret.Constructor(Vector3(3972.315f, 2583.208f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1821, 5008) - LocalObject(1822, FacilityTurret.Constructor(Vector3(4008.081f, 2420.558f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 1822, + FacilityTurret.Constructor(Vector3(4008.081f, 2420.558f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1822, 5009) - LocalObject(1823, FacilityTurret.Constructor(Vector3(4033.051f, 2577.875f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 1823, + FacilityTurret.Constructor(Vector3(4033.051f, 2577.875f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1823, 5010) - LocalObject(1825, FacilityTurret.Constructor(Vector3(4098.438f, 2497.903f, 88.64948f), manned_turret), owning_building_guid = 18) + LocalObject( + 1825, + FacilityTurret.Constructor(Vector3(4098.438f, 2497.903f, 88.64948f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1825, 5011) - LocalObject(2384, Painbox.Constructor(Vector3(4004.879f, 2540.413f, 67.54347f), painbox), owning_building_guid = 18) - LocalObject(2396, Painbox.Constructor(Vector3(4039.754f, 2483.419f, 74.58627f), painbox_continuous), owning_building_guid = 18) - LocalObject(2408, Painbox.Constructor(Vector3(3993.439f, 2530.685f, 65.40018f), painbox_door_radius), owning_building_guid = 18) - LocalObject(2432, Painbox.Constructor(Vector3(4022.882f, 2472.265f, 71.96748f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(2433, Painbox.Constructor(Vector3(4044.405f, 2489.156f, 71.74918f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(2434, Painbox.Constructor(Vector3(4048.505f, 2475.567f, 72.96748f), painbox_door_radius_continuous), owning_building_guid = 18) + LocalObject( + 2384, + Painbox.Constructor(Vector3(4004.879f, 2540.413f, 67.54347f), painbox), + owning_building_guid = 18 + ) + LocalObject( + 2396, + Painbox.Constructor(Vector3(4039.754f, 2483.419f, 74.58627f), painbox_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2408, + Painbox.Constructor(Vector3(3993.439f, 2530.685f, 65.40018f), painbox_door_radius), + owning_building_guid = 18 + ) + LocalObject( + 2432, + Painbox.Constructor(Vector3(4022.882f, 2472.265f, 71.96748f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2433, + Painbox.Constructor(Vector3(4044.405f, 2489.156f, 71.74918f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2434, + Painbox.Constructor(Vector3(4048.505f, 2475.567f, 72.96748f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) LocalObject(306, Generator.Constructor(Vector3(4007.429f, 2542.766f, 61.34747f)), owning_building_guid = 18) - LocalObject(294, Terminal.Constructor(Vector3(4001.184f, 2537.464f, 62.64148f), gen_control), owning_building_guid = 18) + LocalObject( + 294, + Terminal.Constructor(Vector3(4001.184f, 2537.464f, 62.64148f), gen_control), + owning_building_guid = 18 + ) } Building11() def Building11(): Unit = { // Name: Irkalla Type: comm_station GUID: 21, MapID: 11 - LocalBuilding("Irkalla", 21, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4826f, 5252f, 65.77693f), Vector3(0f, 0f, 223f), comm_station))) - LocalObject(227, CaptureTerminal.Constructor(Vector3(4846.088f, 5165.812f, 48.47693f), capture_terminal), owning_building_guid = 21) + LocalBuilding( + "Irkalla", + 21, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4826f, 5252f, 65.77693f), + Vector3(0f, 0f, 223f), + comm_station + ) + ) + ) + LocalObject( + 227, + CaptureTerminal.Constructor(Vector3(4846.088f, 5165.812f, 48.47693f), capture_terminal), + owning_building_guid = 21 + ) LocalObject(562, Door.Constructor(Vector3(4774.679f, 5218.763f, 75.49193f)), owning_building_guid = 21) LocalObject(563, Door.Constructor(Vector3(4787.087f, 5205.458f, 67.52793f)), owning_building_guid = 21) LocalObject(566, Door.Constructor(Vector3(4797.677f, 5318.297f, 67.52793f)), owning_building_guid = 21) @@ -416,18 +1041,78 @@ object Map04 { // Ishundar LocalObject(2964, Door.Constructor(Vector3(4808.545f, 5216.945f, 57.83093f)), owning_building_guid = 21) LocalObject(2965, Door.Constructor(Vector3(4813.519f, 5211.612f, 57.83093f)), owning_building_guid = 21) LocalObject(2966, Door.Constructor(Vector3(4818.49f, 5206.281f, 57.83093f)), owning_building_guid = 21) - LocalObject(975, IFFLock.Constructor(Vector3(4810.448f, 5238.688f, 67.42893f), Vector3(0, 0, 227)), owning_building_guid = 21, door_guid = 927) - LocalObject(1182, IFFLock.Constructor(Vector3(4792.844f, 5206.823f, 49.81293f), Vector3(0, 0, 47)), owning_building_guid = 21, door_guid = 852) - LocalObject(1183, IFFLock.Constructor(Vector3(4797.574f, 5215.662f, 57.31293f), Vector3(0, 0, 317)), owning_building_guid = 21, door_guid = 853) - LocalObject(1184, IFFLock.Constructor(Vector3(4817.347f, 5199.068f, 57.31293f), Vector3(0, 0, 137)), owning_building_guid = 21, door_guid = 855) - LocalObject(1187, IFFLock.Constructor(Vector3(4823.319f, 5262.475f, 79.85793f), Vector3(0, 0, 47)), owning_building_guid = 21, door_guid = 572) - LocalObject(1190, IFFLock.Constructor(Vector3(4832.597f, 5271.25f, 72.43793f), Vector3(0, 0, 317)), owning_building_guid = 21, door_guid = 574) - LocalObject(1191, IFFLock.Constructor(Vector3(4832.989f, 5233.967f, 72.43793f), Vector3(0, 0, 47)), owning_building_guid = 21, door_guid = 573) - LocalObject(1192, IFFLock.Constructor(Vector3(4837.749f, 5167.828f, 49.81293f), Vector3(0, 0, 227)), owning_building_guid = 21, door_guid = 865) - LocalObject(1193, IFFLock.Constructor(Vector3(4842.644f, 5176.692f, 49.81293f), Vector3(0, 0, 47)), owning_building_guid = 21, door_guid = 866) - LocalObject(1194, IFFLock.Constructor(Vector3(4842.875f, 5266.225f, 72.43793f), Vector3(0, 0, 137)), owning_building_guid = 21, door_guid = 576) - LocalObject(1195, IFFLock.Constructor(Vector3(4855.246f, 5172.576f, 67.42693f), Vector3(0, 0, 227)), owning_building_guid = 21, door_guid = 578) - LocalObject(1196, IFFLock.Constructor(Vector3(4855.204f, 5247.703f, 49.81293f), Vector3(0, 0, 317)), owning_building_guid = 21, door_guid = 872) + LocalObject( + 975, + IFFLock.Constructor(Vector3(4810.448f, 5238.688f, 67.42893f), Vector3(0, 0, 227)), + owning_building_guid = 21, + door_guid = 927 + ) + LocalObject( + 1182, + IFFLock.Constructor(Vector3(4792.844f, 5206.823f, 49.81293f), Vector3(0, 0, 47)), + owning_building_guid = 21, + door_guid = 852 + ) + LocalObject( + 1183, + IFFLock.Constructor(Vector3(4797.574f, 5215.662f, 57.31293f), Vector3(0, 0, 317)), + owning_building_guid = 21, + door_guid = 853 + ) + LocalObject( + 1184, + IFFLock.Constructor(Vector3(4817.347f, 5199.068f, 57.31293f), Vector3(0, 0, 137)), + owning_building_guid = 21, + door_guid = 855 + ) + LocalObject( + 1187, + IFFLock.Constructor(Vector3(4823.319f, 5262.475f, 79.85793f), Vector3(0, 0, 47)), + owning_building_guid = 21, + door_guid = 572 + ) + LocalObject( + 1190, + IFFLock.Constructor(Vector3(4832.597f, 5271.25f, 72.43793f), Vector3(0, 0, 317)), + owning_building_guid = 21, + door_guid = 574 + ) + LocalObject( + 1191, + IFFLock.Constructor(Vector3(4832.989f, 5233.967f, 72.43793f), Vector3(0, 0, 47)), + owning_building_guid = 21, + door_guid = 573 + ) + LocalObject( + 1192, + IFFLock.Constructor(Vector3(4837.749f, 5167.828f, 49.81293f), Vector3(0, 0, 227)), + owning_building_guid = 21, + door_guid = 865 + ) + LocalObject( + 1193, + IFFLock.Constructor(Vector3(4842.644f, 5176.692f, 49.81293f), Vector3(0, 0, 47)), + owning_building_guid = 21, + door_guid = 866 + ) + LocalObject( + 1194, + IFFLock.Constructor(Vector3(4842.875f, 5266.225f, 72.43793f), Vector3(0, 0, 137)), + owning_building_guid = 21, + door_guid = 576 + ) + LocalObject( + 1195, + IFFLock.Constructor(Vector3(4855.246f, 5172.576f, 67.42693f), Vector3(0, 0, 227)), + owning_building_guid = 21, + door_guid = 578 + ) + LocalObject( + 1196, + IFFLock.Constructor(Vector3(4855.204f, 5247.703f, 49.81293f), Vector3(0, 0, 317)), + owning_building_guid = 21, + door_guid = 872 + ) LocalObject(1590, Locker.Constructor(Vector3(4794.845f, 5181.702f, 48.47693f)), owning_building_guid = 21) LocalObject(1591, Locker.Constructor(Vector3(4795.6f, 5209.786f, 56.23793f)), owning_building_guid = 21) LocalObject(1592, Locker.Constructor(Vector3(4795.823f, 5182.614f, 48.47693f)), owning_building_guid = 21) @@ -440,60 +1125,233 @@ object Map04 { // Ishundar LocalObject(1599, Locker.Constructor(Vector3(4802.067f, 5188.437f, 48.47693f)), owning_building_guid = 21) LocalObject(1600, Locker.Constructor(Vector3(4803.044f, 5189.348f, 48.47693f)), owning_building_guid = 21) LocalObject(1601, Locker.Constructor(Vector3(4804.012f, 5190.25f, 48.47693f)), owning_building_guid = 21) - LocalObject(2037, Terminal.Constructor(Vector3(4799.462f, 5206.186f, 57.56693f), order_terminal), owning_building_guid = 21) - LocalObject(2038, Terminal.Constructor(Vector3(4802.007f, 5203.457f, 57.56693f), order_terminal), owning_building_guid = 21) - LocalObject(2039, Terminal.Constructor(Vector3(4804.591f, 5200.686f, 57.56693f), order_terminal), owning_building_guid = 21) - LocalObject(2040, Terminal.Constructor(Vector3(4817.287f, 5275.451f, 72.33693f), order_terminal), owning_building_guid = 21) - LocalObject(2041, Terminal.Constructor(Vector3(4817.769f, 5257.409f, 79.73193f), order_terminal), owning_building_guid = 21) - LocalObject(2042, Terminal.Constructor(Vector3(4820.765f, 5254.194f, 79.73193f), order_terminal), owning_building_guid = 21) - LocalObject(2043, Terminal.Constructor(Vector3(4820.862f, 5257.399f, 79.73193f), order_terminal), owning_building_guid = 21) - LocalObject(2867, Terminal.Constructor(Vector3(4806.629f, 5218.563f, 58.11093f), spawn_terminal), owning_building_guid = 21) - LocalObject(2868, Terminal.Constructor(Vector3(4810.701f, 5270.591f, 72.59393f), spawn_terminal), owning_building_guid = 21) - LocalObject(2869, Terminal.Constructor(Vector3(4811.605f, 5213.233f, 58.11093f), spawn_terminal), owning_building_guid = 21) - LocalObject(2870, Terminal.Constructor(Vector3(4816.573f, 5207.901f, 58.11093f), spawn_terminal), owning_building_guid = 21) - LocalObject(2871, Terminal.Constructor(Vector3(4843.603f, 5256.668f, 50.03393f), spawn_terminal), owning_building_guid = 21) - LocalObject(2872, Terminal.Constructor(Vector3(4853.673f, 5223.191f, 60.03393f), spawn_terminal), owning_building_guid = 21) - LocalObject(3074, Terminal.Constructor(Vector3(4824.99f, 5176.165f, 68.66393f), vehicle_terminal_combined), owning_building_guid = 21) - LocalObject(1892, VehicleSpawnPad.Constructor(Vector3(4834.85f, 5185.569f, 64.50593f), mb_pad_creation, Vector3(0, 0, 47)), owning_building_guid = 21, terminal_guid = 3074) + LocalObject( + 2037, + Terminal.Constructor(Vector3(4799.462f, 5206.186f, 57.56693f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2038, + Terminal.Constructor(Vector3(4802.007f, 5203.457f, 57.56693f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2039, + Terminal.Constructor(Vector3(4804.591f, 5200.686f, 57.56693f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2040, + Terminal.Constructor(Vector3(4817.287f, 5275.451f, 72.33693f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2041, + Terminal.Constructor(Vector3(4817.769f, 5257.409f, 79.73193f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2042, + Terminal.Constructor(Vector3(4820.765f, 5254.194f, 79.73193f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2043, + Terminal.Constructor(Vector3(4820.862f, 5257.399f, 79.73193f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2867, + Terminal.Constructor(Vector3(4806.629f, 5218.563f, 58.11093f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2868, + Terminal.Constructor(Vector3(4810.701f, 5270.591f, 72.59393f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2869, + Terminal.Constructor(Vector3(4811.605f, 5213.233f, 58.11093f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2870, + Terminal.Constructor(Vector3(4816.573f, 5207.901f, 58.11093f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2871, + Terminal.Constructor(Vector3(4843.603f, 5256.668f, 50.03393f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2872, + Terminal.Constructor(Vector3(4853.673f, 5223.191f, 60.03393f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 3074, + Terminal.Constructor(Vector3(4824.99f, 5176.165f, 68.66393f), vehicle_terminal_combined), + owning_building_guid = 21 + ) + LocalObject( + 1892, + VehicleSpawnPad.Constructor(Vector3(4834.85f, 5185.569f, 64.50593f), mb_pad_creation, Vector3(0, 0, 47)), + owning_building_guid = 21, + terminal_guid = 3074 + ) LocalObject(2660, ResourceSilo.Constructor(Vector3(4819.667f, 5340.566f, 72.99393f)), owning_building_guid = 21) - LocalObject(2740, SpawnTube.Constructor(Vector3(4808.151f, 5218.013f, 55.97693f), Vector3(0, 0, 137)), owning_building_guid = 21) - LocalObject(2741, SpawnTube.Constructor(Vector3(4813.123f, 5212.681f, 55.97693f), Vector3(0, 0, 137)), owning_building_guid = 21) - LocalObject(2742, SpawnTube.Constructor(Vector3(4818.093f, 5207.351f, 55.97693f), Vector3(0, 0, 137)), owning_building_guid = 21) - LocalObject(1912, ProximityTerminal.Constructor(Vector3(4799.069f, 5186.387f, 48.47693f), medical_terminal), owning_building_guid = 21) - LocalObject(1913, ProximityTerminal.Constructor(Vector3(4805.606f, 5272.603f, 65.97693f), medical_terminal), owning_building_guid = 21) - LocalObject(2273, ProximityTerminal.Constructor(Vector3(4877.419f, 5224.493f, 74.21793f), pad_landing_frame), owning_building_guid = 21) - LocalObject(2274, Terminal.Constructor(Vector3(4877.419f, 5224.493f, 74.21793f), air_rearm_terminal), owning_building_guid = 21) - LocalObject(2623, ProximityTerminal.Constructor(Vector3(4764.326f, 5227.755f, 65.52693f), repair_silo), owning_building_guid = 21) - LocalObject(2624, Terminal.Constructor(Vector3(4764.326f, 5227.755f, 65.52693f), ground_rearm_terminal), owning_building_guid = 21) - LocalObject(2631, ProximityTerminal.Constructor(Vector3(4886.486f, 5276.709f, 65.52693f), repair_silo), owning_building_guid = 21) - LocalObject(2632, Terminal.Constructor(Vector3(4886.486f, 5276.709f, 65.52693f), ground_rearm_terminal), owning_building_guid = 21) - LocalObject(1843, FacilityTurret.Constructor(Vector3(4745.616f, 5229.682f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 2740, + SpawnTube.Constructor(Vector3(4808.151f, 5218.013f, 55.97693f), Vector3(0, 0, 137)), + owning_building_guid = 21 + ) + LocalObject( + 2741, + SpawnTube.Constructor(Vector3(4813.123f, 5212.681f, 55.97693f), Vector3(0, 0, 137)), + owning_building_guid = 21 + ) + LocalObject( + 2742, + SpawnTube.Constructor(Vector3(4818.093f, 5207.351f, 55.97693f), Vector3(0, 0, 137)), + owning_building_guid = 21 + ) + LocalObject( + 1912, + ProximityTerminal.Constructor(Vector3(4799.069f, 5186.387f, 48.47693f), medical_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1913, + ProximityTerminal.Constructor(Vector3(4805.606f, 5272.603f, 65.97693f), medical_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2273, + ProximityTerminal.Constructor(Vector3(4877.419f, 5224.493f, 74.21793f), pad_landing_frame), + owning_building_guid = 21 + ) + LocalObject( + 2274, + Terminal.Constructor(Vector3(4877.419f, 5224.493f, 74.21793f), air_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2623, + ProximityTerminal.Constructor(Vector3(4764.326f, 5227.755f, 65.52693f), repair_silo), + owning_building_guid = 21 + ) + LocalObject( + 2624, + Terminal.Constructor(Vector3(4764.326f, 5227.755f, 65.52693f), ground_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2631, + ProximityTerminal.Constructor(Vector3(4886.486f, 5276.709f, 65.52693f), repair_silo), + owning_building_guid = 21 + ) + LocalObject( + 2632, + Terminal.Constructor(Vector3(4886.486f, 5276.709f, 65.52693f), ground_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1843, + FacilityTurret.Constructor(Vector3(4745.616f, 5229.682f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1843, 5012) - LocalObject(1844, FacilityTurret.Constructor(Vector3(4747.768f, 5290.637f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 1844, + FacilityTurret.Constructor(Vector3(4747.768f, 5290.637f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1844, 5013) - LocalObject(1849, FacilityTurret.Constructor(Vector3(4824.127f, 5360.234f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 1849, + FacilityTurret.Constructor(Vector3(4824.127f, 5360.234f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1849, 5014) - LocalObject(1850, FacilityTurret.Constructor(Vector3(4827.584f, 5143.496f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 1850, + FacilityTurret.Constructor(Vector3(4827.584f, 5143.496f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1850, 5015) - LocalObject(1853, FacilityTurret.Constructor(Vector3(4904.024f, 5212.979f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 1853, + FacilityTurret.Constructor(Vector3(4904.024f, 5212.979f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1853, 5016) - LocalObject(1854, FacilityTurret.Constructor(Vector3(4906.171f, 5273.911f, 74.48493f), manned_turret), owning_building_guid = 21) + LocalObject( + 1854, + FacilityTurret.Constructor(Vector3(4906.171f, 5273.911f, 74.48493f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1854, 5017) - LocalObject(2387, Painbox.Constructor(Vector3(4865.139f, 5239.151f, 53.37893f), painbox), owning_building_guid = 21) - LocalObject(2399, Painbox.Constructor(Vector3(4810.048f, 5201.342f, 60.42173f), painbox_continuous), owning_building_guid = 21) - LocalObject(2411, Painbox.Constructor(Vector3(4854.826f, 5250.067f, 51.23563f), painbox_door_radius), owning_building_guid = 21) - LocalObject(2441, Painbox.Constructor(Vector3(4798.027f, 5217.607f, 57.80293f), painbox_door_radius_continuous), owning_building_guid = 21) - LocalObject(2442, Painbox.Constructor(Vector3(4802.666f, 5192.192f, 58.80293f), painbox_door_radius_continuous), owning_building_guid = 21) - LocalObject(2443, Painbox.Constructor(Vector3(4816.021f, 5196.998f, 57.58463f), painbox_door_radius_continuous), owning_building_guid = 21) + LocalObject( + 2387, + Painbox.Constructor(Vector3(4865.139f, 5239.151f, 53.37893f), painbox), + owning_building_guid = 21 + ) + LocalObject( + 2399, + Painbox.Constructor(Vector3(4810.048f, 5201.342f, 60.42173f), painbox_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2411, + Painbox.Constructor(Vector3(4854.826f, 5250.067f, 51.23563f), painbox_door_radius), + owning_building_guid = 21 + ) + LocalObject( + 2441, + Painbox.Constructor(Vector3(4798.027f, 5217.607f, 57.80293f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2442, + Painbox.Constructor(Vector3(4802.666f, 5192.192f, 58.80293f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2443, + Painbox.Constructor(Vector3(4816.021f, 5196.998f, 57.58463f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) LocalObject(309, Generator.Constructor(Vector3(4867.622f, 5236.729f, 47.18293f)), owning_building_guid = 21) - LocalObject(297, Terminal.Constructor(Vector3(4862f, 5242.688f, 48.47693f), gen_control), owning_building_guid = 21) + LocalObject( + 297, + Terminal.Constructor(Vector3(4862f, 5242.688f, 48.47693f), gen_control), + owning_building_guid = 21 + ) } Building5() def Building5(): Unit = { // Name: Akkan Type: comm_station_dsp GUID: 24, MapID: 5 - LocalBuilding("Akkan", 24, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2694f, 4324f, 39.29922f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(220, CaptureTerminal.Constructor(Vector3(2770.089f, 4304.734f, 21.89923f), capture_terminal), owning_building_guid = 24) + LocalBuilding( + "Akkan", + 24, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2694f, 4324f, 39.29922f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 220, + CaptureTerminal.Constructor(Vector3(2770.089f, 4304.734f, 21.89923f), capture_terminal), + owning_building_guid = 24 + ) LocalObject(281, Door.Constructor(Vector3(2762.339f, 4394.464f, 42.67722f)), owning_building_guid = 24) LocalObject(378, Door.Constructor(Vector3(2634.196f, 4280.501f, 40.95023f)), owning_building_guid = 24) LocalObject(379, Door.Constructor(Vector3(2634.196f, 4298.693f, 48.91422f)), owning_building_guid = 24) @@ -539,20 +1397,90 @@ object Map04 { // Ishundar LocalObject(2909, Door.Constructor(Vector3(2730.673f, 4337.733f, 31.25323f)), owning_building_guid = 24) LocalObject(2910, Door.Constructor(Vector3(2730.673f, 4345.026f, 31.25323f)), owning_building_guid = 24) LocalObject(2911, Door.Constructor(Vector3(2730.673f, 4352.315f, 31.25323f)), owning_building_guid = 24) - LocalObject(968, IFFLock.Constructor(Vector3(2714.454f, 4323.09f, 40.86723f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 920) - LocalObject(1036, IFFLock.Constructor(Vector3(2671.959f, 4325.104f, 45.86723f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 384) - LocalObject(1037, IFFLock.Constructor(Vector3(2676.04f, 4314.42f, 45.86723f), Vector3(0, 0, 180)), owning_building_guid = 24, door_guid = 383) - LocalObject(1038, IFFLock.Constructor(Vector3(2688.817f, 4314.514f, 53.36723f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 386) - LocalObject(1039, IFFLock.Constructor(Vector3(2701.193f, 4341.962f, 45.86723f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 388) - LocalObject(1040, IFFLock.Constructor(Vector3(2734.94f, 4385.572f, 23.23523f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 710) - LocalObject(1043, IFFLock.Constructor(Vector3(2736.428f, 4356.94f, 30.73523f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 713) - LocalObject(1044, IFFLock.Constructor(Vector3(2739.572f, 4331.19f, 30.73523f), Vector3(0, 0, 180)), owning_building_guid = 24, door_guid = 712) - LocalObject(1047, IFFLock.Constructor(Vector3(2745.907f, 4429.163f, 45.84623f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 394) - LocalObject(1048, IFFLock.Constructor(Vector3(2749.06f, 4334.428f, 23.23523f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 714) - LocalObject(1049, IFFLock.Constructor(Vector3(2749.124f, 4396.312f, 40.91122f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 395) - LocalObject(1050, IFFLock.Constructor(Vector3(2765.06f, 4294.428f, 23.23523f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 717) - LocalObject(1052, IFFLock.Constructor(Vector3(2774.813f, 4297.572f, 23.23523f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 718) - LocalObject(1053, IFFLock.Constructor(Vector3(2807.953f, 4404.808f, 40.81023f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 401) + LocalObject( + 968, + IFFLock.Constructor(Vector3(2714.454f, 4323.09f, 40.86723f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 920 + ) + LocalObject( + 1036, + IFFLock.Constructor(Vector3(2671.959f, 4325.104f, 45.86723f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 384 + ) + LocalObject( + 1037, + IFFLock.Constructor(Vector3(2676.04f, 4314.42f, 45.86723f), Vector3(0, 0, 180)), + owning_building_guid = 24, + door_guid = 383 + ) + LocalObject( + 1038, + IFFLock.Constructor(Vector3(2688.817f, 4314.514f, 53.36723f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 386 + ) + LocalObject( + 1039, + IFFLock.Constructor(Vector3(2701.193f, 4341.962f, 45.86723f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 388 + ) + LocalObject( + 1040, + IFFLock.Constructor(Vector3(2734.94f, 4385.572f, 23.23523f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 710 + ) + LocalObject( + 1043, + IFFLock.Constructor(Vector3(2736.428f, 4356.94f, 30.73523f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 713 + ) + LocalObject( + 1044, + IFFLock.Constructor(Vector3(2739.572f, 4331.19f, 30.73523f), Vector3(0, 0, 180)), + owning_building_guid = 24, + door_guid = 712 + ) + LocalObject( + 1047, + IFFLock.Constructor(Vector3(2745.907f, 4429.163f, 45.84623f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 394 + ) + LocalObject( + 1048, + IFFLock.Constructor(Vector3(2749.06f, 4334.428f, 23.23523f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 714 + ) + LocalObject( + 1049, + IFFLock.Constructor(Vector3(2749.124f, 4396.312f, 40.91122f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 395 + ) + LocalObject( + 1050, + IFFLock.Constructor(Vector3(2765.06f, 4294.428f, 23.23523f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 717 + ) + LocalObject( + 1052, + IFFLock.Constructor(Vector3(2774.813f, 4297.572f, 23.23523f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 718 + ) + LocalObject( + 1053, + IFFLock.Constructor(Vector3(2807.953f, 4404.808f, 40.81023f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 401 + ) LocalObject(1352, Locker.Constructor(Vector3(2741.563f, 4334.141f, 29.66022f)), owning_building_guid = 24) LocalObject(1355, Locker.Constructor(Vector3(2742.727f, 4334.141f, 29.66022f)), owning_building_guid = 24) LocalObject(1358, Locker.Constructor(Vector3(2743.874f, 4334.141f, 29.66022f)), owning_building_guid = 24) @@ -565,76 +1493,306 @@ object Map04 { // Ishundar LocalObject(1369, Locker.Constructor(Vector3(2762.055f, 4354.165f, 21.89923f)), owning_building_guid = 24) LocalObject(1370, Locker.Constructor(Vector3(2763.391f, 4354.165f, 21.89923f)), owning_building_guid = 24) LocalObject(1371, Locker.Constructor(Vector3(2764.728f, 4354.165f, 21.89923f)), owning_building_guid = 24) - LocalObject(283, Terminal.Constructor(Vector3(2753.879f, 4426.918f, 45.00322f), dropship_vehicle_terminal), owning_building_guid = 24) - LocalObject(282, VehicleSpawnPad.Constructor(Vector3(2762.328f, 4448.856f, 39.32722f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 24, terminal_guid = 283) - LocalObject(1949, Terminal.Constructor(Vector3(2684.378f, 4300.897f, 45.75922f), order_terminal), owning_building_guid = 24) - LocalObject(1950, Terminal.Constructor(Vector3(2694.075f, 4316.547f, 53.15422f), order_terminal), owning_building_guid = 24) - LocalObject(1951, Terminal.Constructor(Vector3(2696.331f, 4314.43f, 53.15422f), order_terminal), owning_building_guid = 24) - LocalObject(1952, Terminal.Constructor(Vector3(2696.332f, 4318.825f, 53.15422f), order_terminal), owning_building_guid = 24) - LocalObject(1953, Terminal.Constructor(Vector3(2698.592f, 4316.59f, 53.15422f), order_terminal), owning_building_guid = 24) - LocalObject(1954, Terminal.Constructor(Vector3(2744.654f, 4339.408f, 30.98922f), order_terminal), owning_building_guid = 24) - LocalObject(1955, Terminal.Constructor(Vector3(2744.654f, 4343.139f, 30.98922f), order_terminal), owning_building_guid = 24) - LocalObject(1956, Terminal.Constructor(Vector3(2744.654f, 4346.928f, 30.98922f), order_terminal), owning_building_guid = 24) - LocalObject(2818, Terminal.Constructor(Vector3(2692.509f, 4299.959f, 46.01622f), spawn_terminal), owning_building_guid = 24) - LocalObject(2819, Terminal.Constructor(Vector3(2730.971f, 4335.243f, 31.53323f), spawn_terminal), owning_building_guid = 24) - LocalObject(2820, Terminal.Constructor(Vector3(2730.967f, 4342.535f, 31.53323f), spawn_terminal), owning_building_guid = 24) - LocalObject(2821, Terminal.Constructor(Vector3(2730.97f, 4349.823f, 31.53323f), spawn_terminal), owning_building_guid = 24) - LocalObject(2822, Terminal.Constructor(Vector3(2749.103f, 4418.906f, 45.94722f), spawn_terminal), owning_building_guid = 24) - LocalObject(2823, Terminal.Constructor(Vector3(2758.058f, 4323.409f, 23.42723f), spawn_terminal), owning_building_guid = 24) - LocalObject(2824, Terminal.Constructor(Vector3(2765.409f, 4379.942f, 23.42723f), spawn_terminal), owning_building_guid = 24) - LocalObject(2825, Terminal.Constructor(Vector3(2774.058f, 4331.409f, 30.95622f), spawn_terminal), owning_building_guid = 24) - LocalObject(2826, Terminal.Constructor(Vector3(2774.058f, 4371.409f, 30.95622f), spawn_terminal), owning_building_guid = 24) - LocalObject(3067, Terminal.Constructor(Vector3(2711.698f, 4432.044f, 42.08622f), ground_vehicle_terminal), owning_building_guid = 24) - LocalObject(1881, VehicleSpawnPad.Constructor(Vector3(2711.786f, 4418.411f, 37.92823f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 24, terminal_guid = 3067) + LocalObject( + 283, + Terminal.Constructor(Vector3(2753.879f, 4426.918f, 45.00322f), dropship_vehicle_terminal), + owning_building_guid = 24 + ) + LocalObject( + 282, + VehicleSpawnPad.Constructor(Vector3(2762.328f, 4448.856f, 39.32722f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 24, + terminal_guid = 283 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(2684.378f, 4300.897f, 45.75922f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1950, + Terminal.Constructor(Vector3(2694.075f, 4316.547f, 53.15422f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1951, + Terminal.Constructor(Vector3(2696.331f, 4314.43f, 53.15422f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(2696.332f, 4318.825f, 53.15422f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1953, + Terminal.Constructor(Vector3(2698.592f, 4316.59f, 53.15422f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1954, + Terminal.Constructor(Vector3(2744.654f, 4339.408f, 30.98922f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(2744.654f, 4343.139f, 30.98922f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1956, + Terminal.Constructor(Vector3(2744.654f, 4346.928f, 30.98922f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2818, + Terminal.Constructor(Vector3(2692.509f, 4299.959f, 46.01622f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2819, + Terminal.Constructor(Vector3(2730.971f, 4335.243f, 31.53323f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2820, + Terminal.Constructor(Vector3(2730.967f, 4342.535f, 31.53323f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2821, + Terminal.Constructor(Vector3(2730.97f, 4349.823f, 31.53323f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2822, + Terminal.Constructor(Vector3(2749.103f, 4418.906f, 45.94722f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2823, + Terminal.Constructor(Vector3(2758.058f, 4323.409f, 23.42723f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2824, + Terminal.Constructor(Vector3(2765.409f, 4379.942f, 23.42723f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2825, + Terminal.Constructor(Vector3(2774.058f, 4331.409f, 30.95622f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2826, + Terminal.Constructor(Vector3(2774.058f, 4371.409f, 30.95622f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 3067, + Terminal.Constructor(Vector3(2711.698f, 4432.044f, 42.08622f), ground_vehicle_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1881, + VehicleSpawnPad.Constructor(Vector3(2711.786f, 4418.411f, 37.92823f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 24, + terminal_guid = 3067 + ) LocalObject(2653, ResourceSilo.Constructor(Vector3(2792.212f, 4489.642f, 46.41623f)), owning_building_guid = 24) - LocalObject(2685, SpawnTube.Constructor(Vector3(2730.233f, 4336.683f, 29.39923f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(2686, SpawnTube.Constructor(Vector3(2730.233f, 4343.974f, 29.39923f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(2687, SpawnTube.Constructor(Vector3(2730.233f, 4351.262f, 29.39923f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(1900, ProximityTerminal.Constructor(Vector3(2694.863f, 4295.013f, 39.39922f), medical_terminal), owning_building_guid = 24) - LocalObject(1901, ProximityTerminal.Constructor(Vector3(2758.444f, 4353.62f, 21.89923f), medical_terminal), owning_building_guid = 24) - LocalObject(2186, ProximityTerminal.Constructor(Vector3(2675.153f, 4417.398f, 47.70922f), pad_landing_frame), owning_building_guid = 24) - LocalObject(2187, Terminal.Constructor(Vector3(2675.153f, 4417.398f, 47.70922f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(2189, ProximityTerminal.Constructor(Vector3(2691.514f, 4371.467f, 44.99323f), pad_landing_frame), owning_building_guid = 24) - LocalObject(2190, Terminal.Constructor(Vector3(2691.514f, 4371.467f, 44.99323f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(2192, ProximityTerminal.Constructor(Vector3(2743.804f, 4335.901f, 52.17522f), pad_landing_frame), owning_building_guid = 24) - LocalObject(2193, Terminal.Constructor(Vector3(2743.804f, 4335.901f, 52.17522f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(2195, ProximityTerminal.Constructor(Vector3(2779.071f, 4352.159f, 47.72223f), pad_landing_frame), owning_building_guid = 24) - LocalObject(2196, Terminal.Constructor(Vector3(2779.071f, 4352.159f, 47.72223f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(2571, ProximityTerminal.Constructor(Vector3(2632.642f, 4362.241f, 39.04922f), repair_silo), owning_building_guid = 24) - LocalObject(2572, Terminal.Constructor(Vector3(2632.642f, 4362.241f, 39.04922f), ground_rearm_terminal), owning_building_guid = 24) - LocalObject(2575, ProximityTerminal.Constructor(Vector3(2802.57f, 4365.151f, 39.04922f), repair_silo), owning_building_guid = 24) - LocalObject(2576, Terminal.Constructor(Vector3(2802.57f, 4365.151f, 39.04922f), ground_rearm_terminal), owning_building_guid = 24) - LocalObject(1780, FacilityTurret.Constructor(Vector3(2620.401f, 4397.113f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 2685, + SpawnTube.Constructor(Vector3(2730.233f, 4336.683f, 29.39923f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 2686, + SpawnTube.Constructor(Vector3(2730.233f, 4343.974f, 29.39923f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 2687, + SpawnTube.Constructor(Vector3(2730.233f, 4351.262f, 29.39923f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 1900, + ProximityTerminal.Constructor(Vector3(2694.863f, 4295.013f, 39.39922f), medical_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1901, + ProximityTerminal.Constructor(Vector3(2758.444f, 4353.62f, 21.89923f), medical_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2186, + ProximityTerminal.Constructor(Vector3(2675.153f, 4417.398f, 47.70922f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 2187, + Terminal.Constructor(Vector3(2675.153f, 4417.398f, 47.70922f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2189, + ProximityTerminal.Constructor(Vector3(2691.514f, 4371.467f, 44.99323f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 2190, + Terminal.Constructor(Vector3(2691.514f, 4371.467f, 44.99323f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2192, + ProximityTerminal.Constructor(Vector3(2743.804f, 4335.901f, 52.17522f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 2193, + Terminal.Constructor(Vector3(2743.804f, 4335.901f, 52.17522f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2195, + ProximityTerminal.Constructor(Vector3(2779.071f, 4352.159f, 47.72223f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 2196, + Terminal.Constructor(Vector3(2779.071f, 4352.159f, 47.72223f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2571, + ProximityTerminal.Constructor(Vector3(2632.642f, 4362.241f, 39.04922f), repair_silo), + owning_building_guid = 24 + ) + LocalObject( + 2572, + Terminal.Constructor(Vector3(2632.642f, 4362.241f, 39.04922f), ground_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2575, + ProximityTerminal.Constructor(Vector3(2802.57f, 4365.151f, 39.04922f), repair_silo), + owning_building_guid = 24 + ) + LocalObject( + 2576, + Terminal.Constructor(Vector3(2802.57f, 4365.151f, 39.04922f), ground_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1780, + FacilityTurret.Constructor(Vector3(2620.401f, 4397.113f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1780, 5018) - LocalObject(1781, FacilityTurret.Constructor(Vector3(2621.554f, 4243.565f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1781, + FacilityTurret.Constructor(Vector3(2621.554f, 4243.565f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1781, 5019) - LocalObject(1782, FacilityTurret.Constructor(Vector3(2665.445f, 4443.667f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1782, + FacilityTurret.Constructor(Vector3(2665.445f, 4443.667f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1782, 5020) - LocalObject(1784, FacilityTurret.Constructor(Vector3(2724.428f, 4242.396f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1784, + FacilityTurret.Constructor(Vector3(2724.428f, 4242.396f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1784, 5021) - LocalObject(1785, FacilityTurret.Constructor(Vector3(2725.449f, 4502.154f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1785, + FacilityTurret.Constructor(Vector3(2725.449f, 4502.154f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1785, 5022) - LocalObject(1787, FacilityTurret.Constructor(Vector3(2766.537f, 4283.011f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1787, + FacilityTurret.Constructor(Vector3(2766.537f, 4283.011f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1787, 5023) - LocalObject(1788, FacilityTurret.Constructor(Vector3(2813.619f, 4500.985f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1788, + FacilityTurret.Constructor(Vector3(2813.619f, 4500.985f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1788, 5024) - LocalObject(1789, FacilityTurret.Constructor(Vector3(2814.773f, 4332.733f, 47.90723f), manned_turret), owning_building_guid = 24) + LocalObject( + 1789, + FacilityTurret.Constructor(Vector3(2814.773f, 4332.733f, 47.90723f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1789, 5025) - LocalObject(2380, Painbox.Constructor(Vector3(2722.428f, 4384.057f, 25.79353f), painbox), owning_building_guid = 24) - LocalObject(2392, Painbox.Constructor(Vector3(2739.857f, 4344.408f, 33.42672f), painbox_continuous), owning_building_guid = 24) - LocalObject(2404, Painbox.Constructor(Vector3(2736.203f, 4382.915f, 25.03143f), painbox_door_radius), owning_building_guid = 24) - LocalObject(2420, Painbox.Constructor(Vector3(2737.087f, 4329.386f, 31.82842f), painbox_door_radius_continuous), owning_building_guid = 24) - LocalObject(2421, Painbox.Constructor(Vector3(2737.895f, 4358.081f, 32.29922f), painbox_door_radius_continuous), owning_building_guid = 24) - LocalObject(2422, Painbox.Constructor(Vector3(2752.317f, 4351.888f, 32.72953f), painbox_door_radius_continuous), owning_building_guid = 24) + LocalObject( + 2380, + Painbox.Constructor(Vector3(2722.428f, 4384.057f, 25.79353f), painbox), + owning_building_guid = 24 + ) + LocalObject( + 2392, + Painbox.Constructor(Vector3(2739.857f, 4344.408f, 33.42672f), painbox_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2404, + Painbox.Constructor(Vector3(2736.203f, 4382.915f, 25.03143f), painbox_door_radius), + owning_building_guid = 24 + ) + LocalObject( + 2420, + Painbox.Constructor(Vector3(2737.087f, 4329.386f, 31.82842f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2421, + Painbox.Constructor(Vector3(2737.895f, 4358.081f, 32.29922f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2422, + Painbox.Constructor(Vector3(2752.317f, 4351.888f, 32.72953f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) LocalObject(302, Generator.Constructor(Vector3(2718.445f, 4383.975f, 20.60522f)), owning_building_guid = 24) - LocalObject(290, Terminal.Constructor(Vector3(2726.637f, 4384.022f, 21.89923f), gen_control), owning_building_guid = 24) + LocalObject( + 290, + Terminal.Constructor(Vector3(2726.637f, 4384.022f, 21.89923f), gen_control), + owning_building_guid = 24 + ) } Building7() def Building7(): Unit = { // Name: Dagon Type: cryo_facility GUID: 27, MapID: 7 - LocalBuilding("Dagon", 27, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1784f, 5738f, 39.73853f), Vector3(0f, 0f, 178f), cryo_facility))) - LocalObject(219, CaptureTerminal.Constructor(Vector3(1810.004f, 5677.79f, 29.73853f), capture_terminal), owning_building_guid = 27) + LocalBuilding( + "Dagon", + 27, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1784f, 5738f, 39.73853f), + Vector3(0f, 0f, 178f), + cryo_facility + ) + ) + ) + LocalObject( + 219, + CaptureTerminal.Constructor(Vector3(1810.004f, 5677.79f, 29.73853f), capture_terminal), + owning_building_guid = 27 + ) LocalObject(353, Door.Constructor(Vector3(1734.238f, 5772.257f, 41.28953f)), owning_building_guid = 27) LocalObject(354, Door.Constructor(Vector3(1734.873f, 5790.439f, 49.25353f)), owning_building_guid = 27) LocalObject(356, Door.Constructor(Vector3(1755.23f, 5831.061f, 41.25953f)), owning_building_guid = 27) @@ -675,15 +1833,60 @@ object Map04 { // Ishundar LocalObject(2900, Door.Constructor(Vector3(1778.621f, 5717.86f, 31.59253f)), owning_building_guid = 27) LocalObject(2901, Door.Constructor(Vector3(1778.875f, 5725.145f, 31.59253f)), owning_building_guid = 27) LocalObject(2902, Door.Constructor(Vector3(1779.13f, 5732.434f, 31.59253f)), owning_building_guid = 27) - LocalObject(967, IFFLock.Constructor(Vector3(1782.26f, 5710.222f, 41.22053f), Vector3(0, 0, 182)), owning_building_guid = 27, door_guid = 919) - LocalObject(1016, IFFLock.Constructor(Vector3(1754.345f, 5829.048f, 41.19053f), Vector3(0, 0, 272)), owning_building_guid = 27, door_guid = 356) - LocalObject(1017, IFFLock.Constructor(Vector3(1760.739f, 5736.383f, 23.57453f), Vector3(0, 0, 92)), owning_building_guid = 27, door_guid = 679) - LocalObject(1018, IFFLock.Constructor(Vector3(1770.464f, 5739.283f, 31.07453f), Vector3(0, 0, 2)), owning_building_guid = 27, door_guid = 681) - LocalObject(1019, IFFLock.Constructor(Vector3(1772.713f, 5713.569f, 31.07453f), Vector3(0, 0, 182)), owning_building_guid = 27, door_guid = 680) - LocalObject(1020, IFFLock.Constructor(Vector3(1781.909f, 5734.113f, 51.19053f), Vector3(0, 0, 182)), owning_building_guid = 27, door_guid = 358) - LocalObject(1021, IFFLock.Constructor(Vector3(1798.407f, 5715.44f, 51.19053f), Vector3(0, 0, 272)), owning_building_guid = 27, door_guid = 360) - LocalObject(1022, IFFLock.Constructor(Vector3(1804.745f, 5667.661f, 31.07453f), Vector3(0, 0, 272)), owning_building_guid = 27, door_guid = 693) - LocalObject(1023, IFFLock.Constructor(Vector3(1814.602f, 5670.463f, 31.07453f), Vector3(0, 0, 92)), owning_building_guid = 27, door_guid = 695) + LocalObject( + 967, + IFFLock.Constructor(Vector3(1782.26f, 5710.222f, 41.22053f), Vector3(0, 0, 182)), + owning_building_guid = 27, + door_guid = 919 + ) + LocalObject( + 1016, + IFFLock.Constructor(Vector3(1754.345f, 5829.048f, 41.19053f), Vector3(0, 0, 272)), + owning_building_guid = 27, + door_guid = 356 + ) + LocalObject( + 1017, + IFFLock.Constructor(Vector3(1760.739f, 5736.383f, 23.57453f), Vector3(0, 0, 92)), + owning_building_guid = 27, + door_guid = 679 + ) + LocalObject( + 1018, + IFFLock.Constructor(Vector3(1770.464f, 5739.283f, 31.07453f), Vector3(0, 0, 2)), + owning_building_guid = 27, + door_guid = 681 + ) + LocalObject( + 1019, + IFFLock.Constructor(Vector3(1772.713f, 5713.569f, 31.07453f), Vector3(0, 0, 182)), + owning_building_guid = 27, + door_guid = 680 + ) + LocalObject( + 1020, + IFFLock.Constructor(Vector3(1781.909f, 5734.113f, 51.19053f), Vector3(0, 0, 182)), + owning_building_guid = 27, + door_guid = 358 + ) + LocalObject( + 1021, + IFFLock.Constructor(Vector3(1798.407f, 5715.44f, 51.19053f), Vector3(0, 0, 272)), + owning_building_guid = 27, + door_guid = 360 + ) + LocalObject( + 1022, + IFFLock.Constructor(Vector3(1804.745f, 5667.661f, 31.07453f), Vector3(0, 0, 272)), + owning_building_guid = 27, + door_guid = 693 + ) + LocalObject( + 1023, + IFFLock.Constructor(Vector3(1814.602f, 5670.463f, 31.07453f), Vector3(0, 0, 92)), + owning_building_guid = 27, + door_guid = 695 + ) LocalObject(1307, Locker.Constructor(Vector3(1745.148f, 5716.982f, 29.64653f)), owning_building_guid = 27) LocalObject(1308, Locker.Constructor(Vector3(1745.843f, 5736.971f, 29.64653f)), owning_building_guid = 27) LocalObject(1309, Locker.Constructor(Vector3(1746.203f, 5716.945f, 29.64653f)), owning_building_guid = 27) @@ -713,76 +1916,309 @@ object Map04 { // Ishundar LocalObject(1720, Locker.Constructor(Vector3(1766.053f, 5747.294f, 39.50953f)), owning_building_guid = 27) LocalObject(1721, Locker.Constructor(Vector3(1766.141f, 5749.81f, 39.73853f)), owning_building_guid = 27) LocalObject(1722, Locker.Constructor(Vector3(1766.177f, 5750.843f, 39.73853f)), owning_building_guid = 27) - LocalObject(230, Terminal.Constructor(Vector3(1764.199f, 5683.083f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(231, Terminal.Constructor(Vector3(1764.455f, 5690.403f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(232, Terminal.Constructor(Vector3(1765.596f, 5681.585f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(233, Terminal.Constructor(Vector3(1765.953f, 5691.8f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(234, Terminal.Constructor(Vector3(1778.288f, 5681.142f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(235, Terminal.Constructor(Vector3(1778.645f, 5691.356f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(236, Terminal.Constructor(Vector3(1779.786f, 5682.538f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(237, Terminal.Constructor(Vector3(1780.042f, 5689.859f, 29.72853f), cert_terminal), owning_building_guid = 27) - LocalObject(1936, Terminal.Constructor(Vector3(1764.836f, 5723.732f, 31.32853f), order_terminal), owning_building_guid = 27) - LocalObject(1937, Terminal.Constructor(Vector3(1764.969f, 5727.519f, 31.32853f), order_terminal), owning_building_guid = 27) - LocalObject(1938, Terminal.Constructor(Vector3(1765.099f, 5731.248f, 31.32853f), order_terminal), owning_building_guid = 27) - LocalObject(1939, Terminal.Constructor(Vector3(1793.689f, 5728.13f, 41.03353f), order_terminal), owning_building_guid = 27) - LocalObject(2811, Terminal.Constructor(Vector3(1778.411f, 5720.361f, 31.87253f), spawn_terminal), owning_building_guid = 27) - LocalObject(2812, Terminal.Constructor(Vector3(1778.668f, 5727.645f, 31.87253f), spawn_terminal), owning_building_guid = 27) - LocalObject(2813, Terminal.Constructor(Vector3(1778.919f, 5734.933f, 31.87253f), spawn_terminal), owning_building_guid = 27) - LocalObject(2814, Terminal.Constructor(Vector3(1782.359f, 5674.018f, 31.35153f), spawn_terminal), owning_building_guid = 27) - LocalObject(2815, Terminal.Constructor(Vector3(1782.572f, 5751.699f, 41.31753f), spawn_terminal), owning_building_guid = 27) - LocalObject(2816, Terminal.Constructor(Vector3(1802.055f, 5793.994f, 33.85153f), spawn_terminal), owning_building_guid = 27) - LocalObject(2817, Terminal.Constructor(Vector3(1823.996f, 5737.197f, 31.35153f), spawn_terminal), owning_building_guid = 27) - LocalObject(3066, Terminal.Constructor(Vector3(1748.6f, 5802.461f, 42.04353f), vehicle_terminal_combined), owning_building_guid = 27) - LocalObject(1880, VehicleSpawnPad.Constructor(Vector3(1762.234f, 5802.075f, 37.88553f), mb_pad_creation, Vector3(0, 0, 92)), owning_building_guid = 27, terminal_guid = 3066) + LocalObject( + 230, + Terminal.Constructor(Vector3(1764.199f, 5683.083f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(1764.455f, 5690.403f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(1765.596f, 5681.585f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(1765.953f, 5691.8f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 234, + Terminal.Constructor(Vector3(1778.288f, 5681.142f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 235, + Terminal.Constructor(Vector3(1778.645f, 5691.356f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 236, + Terminal.Constructor(Vector3(1779.786f, 5682.538f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 237, + Terminal.Constructor(Vector3(1780.042f, 5689.859f, 29.72853f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1936, + Terminal.Constructor(Vector3(1764.836f, 5723.732f, 31.32853f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1937, + Terminal.Constructor(Vector3(1764.969f, 5727.519f, 31.32853f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1938, + Terminal.Constructor(Vector3(1765.099f, 5731.248f, 31.32853f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1939, + Terminal.Constructor(Vector3(1793.689f, 5728.13f, 41.03353f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2811, + Terminal.Constructor(Vector3(1778.411f, 5720.361f, 31.87253f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2812, + Terminal.Constructor(Vector3(1778.668f, 5727.645f, 31.87253f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2813, + Terminal.Constructor(Vector3(1778.919f, 5734.933f, 31.87253f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2814, + Terminal.Constructor(Vector3(1782.359f, 5674.018f, 31.35153f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2815, + Terminal.Constructor(Vector3(1782.572f, 5751.699f, 41.31753f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2816, + Terminal.Constructor(Vector3(1802.055f, 5793.994f, 33.85153f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2817, + Terminal.Constructor(Vector3(1823.996f, 5737.197f, 31.35153f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 3066, + Terminal.Constructor(Vector3(1748.6f, 5802.461f, 42.04353f), vehicle_terminal_combined), + owning_building_guid = 27 + ) + LocalObject( + 1880, + VehicleSpawnPad.Constructor(Vector3(1762.234f, 5802.075f, 37.88553f), mb_pad_creation, Vector3(0, 0, 92)), + owning_building_guid = 27, + terminal_guid = 3066 + ) LocalObject(2652, ResourceSilo.Constructor(Vector3(1842.456f, 5685.076f, 46.75553f)), owning_building_guid = 27) - LocalObject(2676, SpawnTube.Constructor(Vector3(1779.097f, 5718.897f, 29.73853f), Vector3(0, 0, 182)), owning_building_guid = 27) - LocalObject(2677, SpawnTube.Constructor(Vector3(1779.352f, 5726.181f, 29.73853f), Vector3(0, 0, 182)), owning_building_guid = 27) - LocalObject(2678, SpawnTube.Constructor(Vector3(1779.606f, 5733.468f, 29.73853f), Vector3(0, 0, 182)), owning_building_guid = 27) - LocalObject(168, ProximityTerminal.Constructor(Vector3(1782.266f, 5745.173f, 39.54853f), adv_med_terminal), owning_building_guid = 27) - LocalObject(1899, ProximityTerminal.Constructor(Vector3(1756.237f, 5735.015f, 29.73853f), medical_terminal), owning_building_guid = 27) - LocalObject(2174, ProximityTerminal.Constructor(Vector3(1781.099f, 5692.821f, 50.07053f), pad_landing_frame), owning_building_guid = 27) - LocalObject(2175, Terminal.Constructor(Vector3(1781.099f, 5692.821f, 50.07053f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(2177, ProximityTerminal.Constructor(Vector3(1788.217f, 5807.118f, 48.09053f), pad_landing_frame), owning_building_guid = 27) - LocalObject(2178, Terminal.Constructor(Vector3(1788.217f, 5807.118f, 48.09053f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(2180, ProximityTerminal.Constructor(Vector3(1797.018f, 5683.862f, 48.08053f), pad_landing_frame), owning_building_guid = 27) - LocalObject(2181, Terminal.Constructor(Vector3(1797.018f, 5683.862f, 48.08053f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(2183, ProximityTerminal.Constructor(Vector3(1804.268f, 5799.269f, 50.03153f), pad_landing_frame), owning_building_guid = 27) - LocalObject(2184, Terminal.Constructor(Vector3(1804.268f, 5799.269f, 50.03153f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(2563, ProximityTerminal.Constructor(Vector3(1730.949f, 5723.982f, 39.48853f), repair_silo), owning_building_guid = 27) - LocalObject(2564, Terminal.Constructor(Vector3(1730.949f, 5723.982f, 39.48853f), ground_rearm_terminal), owning_building_guid = 27) - LocalObject(2567, ProximityTerminal.Constructor(Vector3(1822.415f, 5821.556f, 39.48853f), repair_silo), owning_building_guid = 27) - LocalObject(2568, Terminal.Constructor(Vector3(1822.415f, 5821.556f, 39.48853f), ground_rearm_terminal), owning_building_guid = 27) - LocalObject(1769, FacilityTurret.Constructor(Vector3(1717.883f, 5701.79f, 48.14053f), manned_turret), owning_building_guid = 27) + LocalObject( + 2676, + SpawnTube.Constructor(Vector3(1779.097f, 5718.897f, 29.73853f), Vector3(0, 0, 182)), + owning_building_guid = 27 + ) + LocalObject( + 2677, + SpawnTube.Constructor(Vector3(1779.352f, 5726.181f, 29.73853f), Vector3(0, 0, 182)), + owning_building_guid = 27 + ) + LocalObject( + 2678, + SpawnTube.Constructor(Vector3(1779.606f, 5733.468f, 29.73853f), Vector3(0, 0, 182)), + owning_building_guid = 27 + ) + LocalObject( + 168, + ProximityTerminal.Constructor(Vector3(1782.266f, 5745.173f, 39.54853f), adv_med_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1899, + ProximityTerminal.Constructor(Vector3(1756.237f, 5735.015f, 29.73853f), medical_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2174, + ProximityTerminal.Constructor(Vector3(1781.099f, 5692.821f, 50.07053f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 2175, + Terminal.Constructor(Vector3(1781.099f, 5692.821f, 50.07053f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2177, + ProximityTerminal.Constructor(Vector3(1788.217f, 5807.118f, 48.09053f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 2178, + Terminal.Constructor(Vector3(1788.217f, 5807.118f, 48.09053f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2180, + ProximityTerminal.Constructor(Vector3(1797.018f, 5683.862f, 48.08053f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 2181, + Terminal.Constructor(Vector3(1797.018f, 5683.862f, 48.08053f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2183, + ProximityTerminal.Constructor(Vector3(1804.268f, 5799.269f, 50.03153f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 2184, + Terminal.Constructor(Vector3(1804.268f, 5799.269f, 50.03153f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2563, + ProximityTerminal.Constructor(Vector3(1730.949f, 5723.982f, 39.48853f), repair_silo), + owning_building_guid = 27 + ) + LocalObject( + 2564, + Terminal.Constructor(Vector3(1730.949f, 5723.982f, 39.48853f), ground_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2567, + ProximityTerminal.Constructor(Vector3(1822.415f, 5821.556f, 39.48853f), repair_silo), + owning_building_guid = 27 + ) + LocalObject( + 2568, + Terminal.Constructor(Vector3(1822.415f, 5821.556f, 39.48853f), ground_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1769, + FacilityTurret.Constructor(Vector3(1717.883f, 5701.79f, 48.14053f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1769, 5026) - LocalObject(1770, FacilityTurret.Constructor(Vector3(1723.785f, 5836.791f, 48.14053f), manned_turret), owning_building_guid = 27) + LocalObject( + 1770, + FacilityTurret.Constructor(Vector3(1723.785f, 5836.791f, 48.14053f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1770, 5027) - LocalObject(1771, FacilityTurret.Constructor(Vector3(1759.5f, 5657.201f, 48.14053f), manned_turret), owning_building_guid = 27) + LocalObject( + 1771, + FacilityTurret.Constructor(Vector3(1759.5f, 5657.201f, 48.14053f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1771, 5028) - LocalObject(1772, FacilityTurret.Constructor(Vector3(1852.756f, 5655.078f, 48.14053f), manned_turret), owning_building_guid = 27) + LocalObject( + 1772, + FacilityTurret.Constructor(Vector3(1852.756f, 5655.078f, 48.14053f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1772, 5029) - LocalObject(1773, FacilityTurret.Constructor(Vector3(1858.928f, 5832.063f, 48.14053f), manned_turret), owning_building_guid = 27) + LocalObject( + 1773, + FacilityTurret.Constructor(Vector3(1858.928f, 5832.063f, 48.14053f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1773, 5030) - LocalObject(946, ImplantTerminalMech.Constructor(Vector3(1771.868f, 5678.663f, 29.21553f)), owning_building_guid = 27) - LocalObject(938, Terminal.Constructor(Vector3(1771.868f, 5678.681f, 29.21553f), implant_terminal_interface), owning_building_guid = 27) + LocalObject( + 946, + ImplantTerminalMech.Constructor(Vector3(1771.868f, 5678.663f, 29.21553f)), + owning_building_guid = 27 + ) + LocalObject( + 938, + Terminal.Constructor(Vector3(1771.868f, 5678.681f, 29.21553f), implant_terminal_interface), + owning_building_guid = 27 + ) TerminalToInterface(946, 938) - LocalObject(947, ImplantTerminalMech.Constructor(Vector3(1772.392f, 5694.01f, 29.21553f)), owning_building_guid = 27) - LocalObject(939, Terminal.Constructor(Vector3(1772.391f, 5693.992f, 29.21553f), implant_terminal_interface), owning_building_guid = 27) + LocalObject( + 947, + ImplantTerminalMech.Constructor(Vector3(1772.392f, 5694.01f, 29.21553f)), + owning_building_guid = 27 + ) + LocalObject( + 939, + Terminal.Constructor(Vector3(1772.391f, 5693.992f, 29.21553f), implant_terminal_interface), + owning_building_guid = 27 + ) TerminalToInterface(947, 939) - LocalObject(2379, Painbox.Constructor(Vector3(1779.096f, 5757.85f, 53.76733f), painbox), owning_building_guid = 27) - LocalObject(2391, Painbox.Constructor(Vector3(1768.987f, 5730.808f, 33.80843f), painbox_continuous), owning_building_guid = 27) - LocalObject(2403, Painbox.Constructor(Vector3(1780.002f, 5743.345f, 53.97243f), painbox_door_radius), owning_building_guid = 27) - LocalObject(2417, Painbox.Constructor(Vector3(1755.471f, 5719.935f, 33.27943f), painbox_door_radius_continuous), owning_building_guid = 27) - LocalObject(2418, Painbox.Constructor(Vector3(1770.591f, 5712.622f, 31.45273f), painbox_door_radius_continuous), owning_building_guid = 27) - LocalObject(2419, Painbox.Constructor(Vector3(1773.544f, 5740.573f, 32.09443f), painbox_door_radius_continuous), owning_building_guid = 27) + LocalObject( + 2379, + Painbox.Constructor(Vector3(1779.096f, 5757.85f, 53.76733f), painbox), + owning_building_guid = 27 + ) + LocalObject( + 2391, + Painbox.Constructor(Vector3(1768.987f, 5730.808f, 33.80843f), painbox_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2403, + Painbox.Constructor(Vector3(1780.002f, 5743.345f, 53.97243f), painbox_door_radius), + owning_building_guid = 27 + ) + LocalObject( + 2417, + Painbox.Constructor(Vector3(1755.471f, 5719.935f, 33.27943f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2418, + Painbox.Constructor(Vector3(1770.591f, 5712.622f, 31.45273f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2419, + Painbox.Constructor(Vector3(1773.544f, 5740.573f, 32.09443f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) LocalObject(301, Generator.Constructor(Vector3(1780.8f, 5761.681f, 48.44453f)), owning_building_guid = 27) - LocalObject(289, Terminal.Constructor(Vector3(1780.561f, 5753.493f, 49.73853f), gen_control), owning_building_guid = 27) + LocalObject( + 289, + Terminal.Constructor(Vector3(1780.561f, 5753.493f, 49.73853f), gen_control), + owning_building_guid = 27 + ) } Building10() def Building10(): Unit = { // Name: Hanish Type: cryo_facility GUID: 30, MapID: 10 - LocalBuilding("Hanish", 30, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3738f, 5482f, 88.62722f), Vector3(0f, 0f, 269f), cryo_facility))) - LocalObject(223, CaptureTerminal.Constructor(Vector3(3797.747f, 5509.05f, 78.62722f), capture_terminal), owning_building_guid = 30) + LocalBuilding( + "Hanish", + 30, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3738f, 5482f, 88.62722f), + Vector3(0f, 0f, 269f), + cryo_facility + ) + ) + ) + LocalObject( + 223, + CaptureTerminal.Constructor(Vector3(3797.747f, 5509.05f, 78.62722f), capture_terminal), + owning_building_guid = 30 + ) LocalObject(470, Door.Constructor(Vector3(3645.456f, 5451.61f, 90.14822f)), owning_building_guid = 30) LocalObject(471, Door.Constructor(Vector3(3654.676f, 5459.951f, 90.17822f)), owning_building_guid = 30) LocalObject(472, Door.Constructor(Vector3(3654.993f, 5478.141f, 98.14222f)), owning_building_guid = 30) @@ -823,15 +2259,60 @@ object Map04 { // Ishundar LocalObject(2934, Door.Constructor(Vector3(3743.651f, 5477.228f, 80.48122f)), owning_building_guid = 30) LocalObject(2937, Door.Constructor(Vector3(3750.942f, 5477.101f, 80.48122f)), owning_building_guid = 30) LocalObject(2938, Door.Constructor(Vector3(3758.23f, 5476.973f, 80.48122f)), owning_building_guid = 30) - LocalObject(971, IFFLock.Constructor(Vector3(3765.804f, 5480.745f, 90.10922f), Vector3(0, 0, 91)), owning_building_guid = 30, door_guid = 923) - LocalObject(1105, IFFLock.Constructor(Vector3(3647.483f, 5450.761f, 90.07922f), Vector3(0, 0, 181)), owning_building_guid = 30, door_guid = 470) - LocalObject(1106, IFFLock.Constructor(Vector3(3736.953f, 5468.444f, 79.96322f), Vector3(0, 0, 271)), owning_building_guid = 30, door_guid = 771) - LocalObject(1107, IFFLock.Constructor(Vector3(3740.023f, 5458.771f, 72.46322f), Vector3(0, 0, 1)), owning_building_guid = 30, door_guid = 774) - LocalObject(1108, IFFLock.Constructor(Vector3(3741.923f, 5479.977f, 100.0792f), Vector3(0, 0, 91)), owning_building_guid = 30, door_guid = 475) - LocalObject(1113, IFFLock.Constructor(Vector3(3760.305f, 5496.799f, 100.0792f), Vector3(0, 0, 181)), owning_building_guid = 30, door_guid = 481) - LocalObject(1114, IFFLock.Constructor(Vector3(3762.624f, 5471.141f, 79.96322f), Vector3(0, 0, 91)), owning_building_guid = 30, door_guid = 779) - LocalObject(1115, IFFLock.Constructor(Vector3(3804.993f, 5513.776f, 79.96322f), Vector3(0, 0, 1)), owning_building_guid = 30, door_guid = 785) - LocalObject(1116, IFFLock.Constructor(Vector3(3807.966f, 5503.969f, 79.96322f), Vector3(0, 0, 181)), owning_building_guid = 30, door_guid = 784) + LocalObject( + 971, + IFFLock.Constructor(Vector3(3765.804f, 5480.745f, 90.10922f), Vector3(0, 0, 91)), + owning_building_guid = 30, + door_guid = 923 + ) + LocalObject( + 1105, + IFFLock.Constructor(Vector3(3647.483f, 5450.761f, 90.07922f), Vector3(0, 0, 181)), + owning_building_guid = 30, + door_guid = 470 + ) + LocalObject( + 1106, + IFFLock.Constructor(Vector3(3736.953f, 5468.444f, 79.96322f), Vector3(0, 0, 271)), + owning_building_guid = 30, + door_guid = 771 + ) + LocalObject( + 1107, + IFFLock.Constructor(Vector3(3740.023f, 5458.771f, 72.46322f), Vector3(0, 0, 1)), + owning_building_guid = 30, + door_guid = 774 + ) + LocalObject( + 1108, + IFFLock.Constructor(Vector3(3741.923f, 5479.977f, 100.0792f), Vector3(0, 0, 91)), + owning_building_guid = 30, + door_guid = 475 + ) + LocalObject( + 1113, + IFFLock.Constructor(Vector3(3760.305f, 5496.799f, 100.0792f), Vector3(0, 0, 181)), + owning_building_guid = 30, + door_guid = 481 + ) + LocalObject( + 1114, + IFFLock.Constructor(Vector3(3762.624f, 5471.141f, 79.96322f), Vector3(0, 0, 91)), + owning_building_guid = 30, + door_guid = 779 + ) + LocalObject( + 1115, + IFFLock.Constructor(Vector3(3804.993f, 5513.776f, 79.96322f), Vector3(0, 0, 1)), + owning_building_guid = 30, + door_guid = 785 + ) + LocalObject( + 1116, + IFFLock.Constructor(Vector3(3807.966f, 5503.969f, 79.96322f), Vector3(0, 0, 181)), + owning_building_guid = 30, + door_guid = 784 + ) LocalObject(1452, Locker.Constructor(Vector3(3739.695f, 5443.867f, 78.53522f)), owning_building_guid = 30) LocalObject(1453, Locker.Constructor(Vector3(3739.713f, 5444.921f, 78.53522f)), owning_building_guid = 30) LocalObject(1454, Locker.Constructor(Vector3(3739.732f, 5445.981f, 78.53522f)), owning_building_guid = 30) @@ -861,76 +2342,305 @@ object Map04 { // Ishundar LocalObject(1728, Locker.Constructor(Vector3(3732.142f, 5463.839f, 88.39822f)), owning_building_guid = 30) LocalObject(1729, Locker.Constructor(Vector3(3734.664f, 5463.795f, 88.62722f)), owning_building_guid = 30) LocalObject(1730, Locker.Constructor(Vector3(3735.698f, 5463.777f, 88.62722f)), owning_building_guid = 30) - LocalObject(238, Terminal.Constructor(Vector3(3784.508f, 5464.762f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(239, Terminal.Constructor(Vector3(3784.73f, 5477.46f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(240, Terminal.Constructor(Vector3(3785.931f, 5463.289f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(241, Terminal.Constructor(Vector3(3786.203f, 5478.882f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(242, Terminal.Constructor(Vector3(3793.255f, 5463.161f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(243, Terminal.Constructor(Vector3(3793.527f, 5478.754f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(244, Terminal.Constructor(Vector3(3794.728f, 5464.583f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(245, Terminal.Constructor(Vector3(3794.949f, 5477.281f, 78.61722f), cert_terminal), owning_building_guid = 30) - LocalObject(1991, Terminal.Constructor(Vector3(3745.081f, 5463.22f, 80.21722f), order_terminal), owning_building_guid = 30) - LocalObject(1992, Terminal.Constructor(Vector3(3747.699f, 5491.86f, 89.92222f), order_terminal), owning_building_guid = 30) - LocalObject(1993, Terminal.Constructor(Vector3(3748.812f, 5463.154f, 80.21722f), order_terminal), owning_building_guid = 30) - LocalObject(1994, Terminal.Constructor(Vector3(3752.6f, 5463.088f, 80.21722f), order_terminal), owning_building_guid = 30) - LocalObject(2840, Terminal.Constructor(Vector3(3681.699f, 5499.075f, 82.74022f), spawn_terminal), owning_building_guid = 30) - LocalObject(2841, Terminal.Constructor(Vector3(3724.328f, 5480.333f, 90.20622f), spawn_terminal), owning_building_guid = 30) - LocalObject(2842, Terminal.Constructor(Vector3(3738.105f, 5522.004f, 80.24022f), spawn_terminal), owning_building_guid = 30) - LocalObject(2843, Terminal.Constructor(Vector3(3741.156f, 5476.973f, 80.76122f), spawn_terminal), owning_building_guid = 30) - LocalObject(2844, Terminal.Constructor(Vector3(3748.447f, 5476.85f, 80.76122f), spawn_terminal), owning_building_guid = 30) - LocalObject(2845, Terminal.Constructor(Vector3(3755.734f, 5476.72f, 80.76122f), spawn_terminal), owning_building_guid = 30) - LocalObject(2846, Terminal.Constructor(Vector3(3802f, 5481.476f, 80.24022f), spawn_terminal), owning_building_guid = 30) - LocalObject(3070, Terminal.Constructor(Vector3(3674.167f, 5445.48f, 90.93222f), vehicle_terminal_combined), owning_building_guid = 30) - LocalObject(1886, VehicleSpawnPad.Constructor(Vector3(3674.315f, 5459.119f, 86.77422f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 30, terminal_guid = 3070) + LocalObject( + 238, + Terminal.Constructor(Vector3(3784.508f, 5464.762f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 239, + Terminal.Constructor(Vector3(3784.73f, 5477.46f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 240, + Terminal.Constructor(Vector3(3785.931f, 5463.289f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 241, + Terminal.Constructor(Vector3(3786.203f, 5478.882f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 242, + Terminal.Constructor(Vector3(3793.255f, 5463.161f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 243, + Terminal.Constructor(Vector3(3793.527f, 5478.754f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 244, + Terminal.Constructor(Vector3(3794.728f, 5464.583f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 245, + Terminal.Constructor(Vector3(3794.949f, 5477.281f, 78.61722f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1991, + Terminal.Constructor(Vector3(3745.081f, 5463.22f, 80.21722f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1992, + Terminal.Constructor(Vector3(3747.699f, 5491.86f, 89.92222f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1993, + Terminal.Constructor(Vector3(3748.812f, 5463.154f, 80.21722f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1994, + Terminal.Constructor(Vector3(3752.6f, 5463.088f, 80.21722f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2840, + Terminal.Constructor(Vector3(3681.699f, 5499.075f, 82.74022f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2841, + Terminal.Constructor(Vector3(3724.328f, 5480.333f, 90.20622f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2842, + Terminal.Constructor(Vector3(3738.105f, 5522.004f, 80.24022f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2843, + Terminal.Constructor(Vector3(3741.156f, 5476.973f, 80.76122f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2844, + Terminal.Constructor(Vector3(3748.447f, 5476.85f, 80.76122f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2845, + Terminal.Constructor(Vector3(3755.734f, 5476.72f, 80.76122f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2846, + Terminal.Constructor(Vector3(3802f, 5481.476f, 80.24022f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 3070, + Terminal.Constructor(Vector3(3674.167f, 5445.48f, 90.93222f), vehicle_terminal_combined), + owning_building_guid = 30 + ) + LocalObject( + 1886, + VehicleSpawnPad.Constructor(Vector3(3674.315f, 5459.119f, 86.77422f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 30, + terminal_guid = 3070 + ) LocalObject(2656, ResourceSilo.Constructor(Vector3(3789.896f, 5541.37f, 95.64422f)), owning_building_guid = 30) - LocalObject(2710, SpawnTube.Constructor(Vector3(3742.608f, 5477.686f, 78.62722f), Vector3(0, 0, 91)), owning_building_guid = 30) - LocalObject(2713, SpawnTube.Constructor(Vector3(3749.898f, 5477.559f, 78.62722f), Vector3(0, 0, 91)), owning_building_guid = 30) - LocalObject(2714, SpawnTube.Constructor(Vector3(3757.185f, 5477.432f, 78.62722f), Vector3(0, 0, 91)), owning_building_guid = 30) - LocalObject(169, ProximityTerminal.Constructor(Vector3(3730.858f, 5480.141f, 88.43722f), adv_med_terminal), owning_building_guid = 30) - LocalObject(1906, ProximityTerminal.Constructor(Vector3(3741.469f, 5454.293f, 78.62722f), medical_terminal), owning_building_guid = 30) - LocalObject(2228, ProximityTerminal.Constructor(Vector3(3668.819f, 5485.01f, 96.97922f), pad_landing_frame), owning_building_guid = 30) - LocalObject(2229, Terminal.Constructor(Vector3(3668.819f, 5485.01f, 96.97922f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(2231, ProximityTerminal.Constructor(Vector3(3676.387f, 5501.195f, 98.92022f), pad_landing_frame), owning_building_guid = 30) - LocalObject(2232, Terminal.Constructor(Vector3(3676.387f, 5501.195f, 98.92022f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(2234, ProximityTerminal.Constructor(Vector3(3783.223f, 5479.887f, 98.95922f), pad_landing_frame), owning_building_guid = 30) - LocalObject(2235, Terminal.Constructor(Vector3(3783.223f, 5479.887f, 98.95922f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(2237, ProximityTerminal.Constructor(Vector3(3791.903f, 5495.96f, 96.96922f), pad_landing_frame), owning_building_guid = 30) - LocalObject(2238, Terminal.Constructor(Vector3(3791.903f, 5495.96f, 96.96922f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(2595, ProximityTerminal.Constructor(Vector3(3653.786f, 5518.951f, 88.37722f), repair_silo), owning_building_guid = 30) - LocalObject(2596, Terminal.Constructor(Vector3(3653.786f, 5518.951f, 88.37722f), ground_rearm_terminal), owning_building_guid = 30) - LocalObject(2599, ProximityTerminal.Constructor(Vector3(3752.942f, 5429.201f, 88.37722f), repair_silo), owning_building_guid = 30) - LocalObject(2600, Terminal.Constructor(Vector3(3752.942f, 5429.201f, 88.37722f), ground_rearm_terminal), owning_building_guid = 30) - LocalObject(1812, FacilityTurret.Constructor(Vector3(3640.275f, 5420.07f, 97.02922f), manned_turret), owning_building_guid = 30) + LocalObject( + 2710, + SpawnTube.Constructor(Vector3(3742.608f, 5477.686f, 78.62722f), Vector3(0, 0, 91)), + owning_building_guid = 30 + ) + LocalObject( + 2713, + SpawnTube.Constructor(Vector3(3749.898f, 5477.559f, 78.62722f), Vector3(0, 0, 91)), + owning_building_guid = 30 + ) + LocalObject( + 2714, + SpawnTube.Constructor(Vector3(3757.185f, 5477.432f, 78.62722f), Vector3(0, 0, 91)), + owning_building_guid = 30 + ) + LocalObject( + 169, + ProximityTerminal.Constructor(Vector3(3730.858f, 5480.141f, 88.43722f), adv_med_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1906, + ProximityTerminal.Constructor(Vector3(3741.469f, 5454.293f, 78.62722f), medical_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2228, + ProximityTerminal.Constructor(Vector3(3668.819f, 5485.01f, 96.97922f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 2229, + Terminal.Constructor(Vector3(3668.819f, 5485.01f, 96.97922f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2231, + ProximityTerminal.Constructor(Vector3(3676.387f, 5501.195f, 98.92022f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 2232, + Terminal.Constructor(Vector3(3676.387f, 5501.195f, 98.92022f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2234, + ProximityTerminal.Constructor(Vector3(3783.223f, 5479.887f, 98.95922f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 2235, + Terminal.Constructor(Vector3(3783.223f, 5479.887f, 98.95922f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2237, + ProximityTerminal.Constructor(Vector3(3791.903f, 5495.96f, 96.96922f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 2238, + Terminal.Constructor(Vector3(3791.903f, 5495.96f, 96.96922f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2595, + ProximityTerminal.Constructor(Vector3(3653.786f, 5518.951f, 88.37722f), repair_silo), + owning_building_guid = 30 + ) + LocalObject( + 2596, + Terminal.Constructor(Vector3(3653.786f, 5518.951f, 88.37722f), ground_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2599, + ProximityTerminal.Constructor(Vector3(3752.942f, 5429.201f, 88.37722f), repair_silo), + owning_building_guid = 30 + ) + LocalObject( + 2600, + Terminal.Constructor(Vector3(3752.942f, 5429.201f, 88.37722f), ground_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1812, + FacilityTurret.Constructor(Vector3(3640.275f, 5420.07f, 97.02922f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1812, 5031) - LocalObject(1813, FacilityTurret.Constructor(Vector3(3642.643f, 5555.275f, 97.02922f), manned_turret), owning_building_guid = 30) + LocalObject( + 1813, + FacilityTurret.Constructor(Vector3(3642.643f, 5555.275f, 97.02922f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1813, 5032) - LocalObject(1816, FacilityTurret.Constructor(Vector3(3775.359f, 5416.525f, 97.02922f), manned_turret), owning_building_guid = 30) + LocalObject( + 1816, + FacilityTurret.Constructor(Vector3(3775.359f, 5416.525f, 97.02922f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1816, 5033) - LocalObject(1817, FacilityTurret.Constructor(Vector3(3819.214f, 5458.914f, 97.02922f), manned_turret), owning_building_guid = 30) + LocalObject( + 1817, + FacilityTurret.Constructor(Vector3(3819.214f, 5458.914f, 97.02922f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1817, 5034) - LocalObject(1818, FacilityTurret.Constructor(Vector3(3819.709f, 5552.193f, 97.02922f), manned_turret), owning_building_guid = 30) + LocalObject( + 1818, + FacilityTurret.Constructor(Vector3(3819.709f, 5552.193f, 97.02922f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1818, 5035) - LocalObject(948, ImplantTerminalMech.Constructor(Vector3(3782.186f, 5471.161f, 78.10422f)), owning_building_guid = 30) - LocalObject(940, Terminal.Constructor(Vector3(3782.204f, 5471.161f, 78.10422f), implant_terminal_interface), owning_building_guid = 30) + LocalObject( + 948, + ImplantTerminalMech.Constructor(Vector3(3782.186f, 5471.161f, 78.10422f)), + owning_building_guid = 30 + ) + LocalObject( + 940, + Terminal.Constructor(Vector3(3782.204f, 5471.161f, 78.10422f), implant_terminal_interface), + owning_building_guid = 30 + ) TerminalToInterface(948, 940) - LocalObject(949, ImplantTerminalMech.Constructor(Vector3(3797.54f, 5470.905f, 78.10422f)), owning_building_guid = 30) - LocalObject(941, Terminal.Constructor(Vector3(3797.521f, 5470.905f, 78.10422f), implant_terminal_interface), owning_building_guid = 30) + LocalObject( + 949, + ImplantTerminalMech.Constructor(Vector3(3797.54f, 5470.905f, 78.10422f)), + owning_building_guid = 30 + ) + LocalObject( + 941, + Terminal.Constructor(Vector3(3797.521f, 5470.905f, 78.10422f), implant_terminal_interface), + owning_building_guid = 30 + ) TerminalToInterface(949, 941) LocalObject(2383, Painbox.Constructor(Vector3(3718.239f, 5476.75f, 102.656f), painbox), owning_building_guid = 30) - LocalObject(2395, Painbox.Constructor(Vector3(3745.453f, 5467.115f, 82.69712f), painbox_continuous), owning_building_guid = 30) - LocalObject(2407, Painbox.Constructor(Vector3(3732.726f, 5477.909f, 102.8611f), painbox_door_radius), owning_building_guid = 30) - LocalObject(2429, Painbox.Constructor(Vector3(3735.61f, 5471.5f, 80.98312f), painbox_door_radius_continuous), owning_building_guid = 30) - LocalObject(2430, Painbox.Constructor(Vector3(3756.561f, 5453.79f, 82.16812f), painbox_door_radius_continuous), owning_building_guid = 30) - LocalObject(2431, Painbox.Constructor(Vector3(3763.609f, 5469.036f, 80.34142f), painbox_door_radius_continuous), owning_building_guid = 30) + LocalObject( + 2395, + Painbox.Constructor(Vector3(3745.453f, 5467.115f, 82.69712f), painbox_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2407, + Painbox.Constructor(Vector3(3732.726f, 5477.909f, 102.8611f), painbox_door_radius), + owning_building_guid = 30 + ) + LocalObject( + 2429, + Painbox.Constructor(Vector3(3735.61f, 5471.5f, 80.98312f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2430, + Painbox.Constructor(Vector3(3756.561f, 5453.79f, 82.16812f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2431, + Painbox.Constructor(Vector3(3763.609f, 5469.036f, 80.34142f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) LocalObject(305, Generator.Constructor(Vector3(3714.378f, 5478.387f, 97.33322f)), owning_building_guid = 30) - LocalObject(293, Terminal.Constructor(Vector3(3722.57f, 5478.291f, 98.62722f), gen_control), owning_building_guid = 30) + LocalObject( + 293, + Terminal.Constructor(Vector3(3722.57f, 5478.291f, 98.62722f), gen_control), + owning_building_guid = 30 + ) } Building16() def Building16(): Unit = { // Name: Zaqar Type: cryo_facility GUID: 33, MapID: 16 - LocalBuilding("Zaqar", 33, 16, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4740f, 2128f, 74.54427f), Vector3(0f, 0f, 359f), cryo_facility))) - LocalObject(226, CaptureTerminal.Constructor(Vector3(4712.95f, 2187.747f, 64.54427f), capture_terminal), owning_building_guid = 33) + LocalBuilding( + "Zaqar", + 33, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4740f, 2128f, 74.54427f), + Vector3(0f, 0f, 359f), + cryo_facility + ) + ) + ) + LocalObject( + 226, + CaptureTerminal.Constructor(Vector3(4712.95f, 2187.747f, 64.54427f), capture_terminal), + owning_building_guid = 33 + ) LocalObject(552, Door.Constructor(Vector3(4681.11f, 2133.529f, 76.09527f)), owning_building_guid = 33) LocalObject(553, Door.Constructor(Vector3(4681.428f, 2151.719f, 84.05927f)), owning_building_guid = 33) LocalObject(554, Door.Constructor(Vector3(4698.864f, 2196.531f, 76.09527f)), owning_building_guid = 33) @@ -971,15 +2681,60 @@ object Map04 { // Ishundar LocalObject(2961, Door.Constructor(Vector3(4744.772f, 2133.651f, 66.39827f)), owning_building_guid = 33) LocalObject(2962, Door.Constructor(Vector3(4744.899f, 2140.942f, 66.39827f)), owning_building_guid = 33) LocalObject(2963, Door.Constructor(Vector3(4745.027f, 2148.23f, 66.39827f)), owning_building_guid = 33) - LocalObject(974, IFFLock.Constructor(Vector3(4741.255f, 2155.804f, 76.02627f), Vector3(0, 0, 1)), owning_building_guid = 33, door_guid = 926) - LocalObject(1174, IFFLock.Constructor(Vector3(4708.224f, 2194.993f, 65.88026f), Vector3(0, 0, 271)), owning_building_guid = 33, door_guid = 834) - LocalObject(1175, IFFLock.Constructor(Vector3(4718.031f, 2197.966f, 65.88026f), Vector3(0, 0, 91)), owning_building_guid = 33, door_guid = 835) - LocalObject(1176, IFFLock.Constructor(Vector3(4725.201f, 2150.305f, 85.99626f), Vector3(0, 0, 91)), owning_building_guid = 33, door_guid = 556) - LocalObject(1177, IFFLock.Constructor(Vector3(4742.023f, 2131.923f, 85.99626f), Vector3(0, 0, 1)), owning_building_guid = 33, door_guid = 559) - LocalObject(1178, IFFLock.Constructor(Vector3(4750.859f, 2152.624f, 65.88026f), Vector3(0, 0, 1)), owning_building_guid = 33, door_guid = 849) - LocalObject(1179, IFFLock.Constructor(Vector3(4753.556f, 2126.953f, 65.88026f), Vector3(0, 0, 181)), owning_building_guid = 33, door_guid = 848) - LocalObject(1180, IFFLock.Constructor(Vector3(4763.229f, 2130.023f, 58.38026f), Vector3(0, 0, 271)), owning_building_guid = 33, door_guid = 850) - LocalObject(1181, IFFLock.Constructor(Vector3(4771.239f, 2037.483f, 75.99627f), Vector3(0, 0, 91)), owning_building_guid = 33, door_guid = 561) + LocalObject( + 974, + IFFLock.Constructor(Vector3(4741.255f, 2155.804f, 76.02627f), Vector3(0, 0, 1)), + owning_building_guid = 33, + door_guid = 926 + ) + LocalObject( + 1174, + IFFLock.Constructor(Vector3(4708.224f, 2194.993f, 65.88026f), Vector3(0, 0, 271)), + owning_building_guid = 33, + door_guid = 834 + ) + LocalObject( + 1175, + IFFLock.Constructor(Vector3(4718.031f, 2197.966f, 65.88026f), Vector3(0, 0, 91)), + owning_building_guid = 33, + door_guid = 835 + ) + LocalObject( + 1176, + IFFLock.Constructor(Vector3(4725.201f, 2150.305f, 85.99626f), Vector3(0, 0, 91)), + owning_building_guid = 33, + door_guid = 556 + ) + LocalObject( + 1177, + IFFLock.Constructor(Vector3(4742.023f, 2131.923f, 85.99626f), Vector3(0, 0, 1)), + owning_building_guid = 33, + door_guid = 559 + ) + LocalObject( + 1178, + IFFLock.Constructor(Vector3(4750.859f, 2152.624f, 65.88026f), Vector3(0, 0, 1)), + owning_building_guid = 33, + door_guid = 849 + ) + LocalObject( + 1179, + IFFLock.Constructor(Vector3(4753.556f, 2126.953f, 65.88026f), Vector3(0, 0, 181)), + owning_building_guid = 33, + door_guid = 848 + ) + LocalObject( + 1180, + IFFLock.Constructor(Vector3(4763.229f, 2130.023f, 58.38026f), Vector3(0, 0, 271)), + owning_building_guid = 33, + door_guid = 850 + ) + LocalObject( + 1181, + IFFLock.Constructor(Vector3(4771.239f, 2037.483f, 75.99627f), Vector3(0, 0, 91)), + owning_building_guid = 33, + door_guid = 561 + ) LocalObject(1569, Locker.Constructor(Vector3(4755.598f, 2129.869f, 64.80527f)), owning_building_guid = 33) LocalObject(1570, Locker.Constructor(Vector3(4756.762f, 2129.849f, 64.80527f)), owning_building_guid = 33) LocalObject(1571, Locker.Constructor(Vector3(4757.909f, 2129.829f, 64.80527f)), owning_building_guid = 33) @@ -1009,76 +2764,309 @@ object Map04 { // Ishundar LocalObject(1736, Locker.Constructor(Vector3(4758.161f, 2122.142f, 74.31527f)), owning_building_guid = 33) LocalObject(1737, Locker.Constructor(Vector3(4758.205f, 2124.664f, 74.54427f)), owning_building_guid = 33) LocalObject(1738, Locker.Constructor(Vector3(4758.223f, 2125.698f, 74.54427f)), owning_building_guid = 33) - LocalObject(246, Terminal.Constructor(Vector3(4743.118f, 2176.203f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(247, Terminal.Constructor(Vector3(4743.246f, 2183.527f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(248, Terminal.Constructor(Vector3(4744.54f, 2174.73f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(249, Terminal.Constructor(Vector3(4744.719f, 2184.949f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(250, Terminal.Constructor(Vector3(4757.238f, 2174.508f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(251, Terminal.Constructor(Vector3(4757.417f, 2184.728f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(252, Terminal.Constructor(Vector3(4758.711f, 2175.931f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(253, Terminal.Constructor(Vector3(4758.839f, 2183.255f, 64.53426f), cert_terminal), owning_building_guid = 33) - LocalObject(2033, Terminal.Constructor(Vector3(4730.14f, 2137.699f, 75.83926f), order_terminal), owning_building_guid = 33) - LocalObject(2034, Terminal.Constructor(Vector3(4758.78f, 2135.081f, 66.13426f), order_terminal), owning_building_guid = 33) - LocalObject(2035, Terminal.Constructor(Vector3(4758.846f, 2138.812f, 66.13426f), order_terminal), owning_building_guid = 33) - LocalObject(2036, Terminal.Constructor(Vector3(4758.912f, 2142.6f, 66.13426f), order_terminal), owning_building_guid = 33) - LocalObject(2860, Terminal.Constructor(Vector3(4699.996f, 2128.105f, 66.15726f), spawn_terminal), owning_building_guid = 33) - LocalObject(2861, Terminal.Constructor(Vector3(4722.925f, 2071.699f, 68.65726f), spawn_terminal), owning_building_guid = 33) - LocalObject(2862, Terminal.Constructor(Vector3(4740.524f, 2192f, 66.15726f), spawn_terminal), owning_building_guid = 33) - LocalObject(2863, Terminal.Constructor(Vector3(4741.667f, 2114.328f, 76.12327f), spawn_terminal), owning_building_guid = 33) - LocalObject(2864, Terminal.Constructor(Vector3(4745.027f, 2131.156f, 66.67827f), spawn_terminal), owning_building_guid = 33) - LocalObject(2865, Terminal.Constructor(Vector3(4745.15f, 2138.447f, 66.67827f), spawn_terminal), owning_building_guid = 33) - LocalObject(2866, Terminal.Constructor(Vector3(4745.28f, 2145.734f, 66.67827f), spawn_terminal), owning_building_guid = 33) - LocalObject(3073, Terminal.Constructor(Vector3(4776.52f, 2064.167f, 76.84927f), vehicle_terminal_combined), owning_building_guid = 33) - LocalObject(1891, VehicleSpawnPad.Constructor(Vector3(4762.881f, 2064.315f, 72.69127f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 33, terminal_guid = 3073) + LocalObject( + 246, + Terminal.Constructor(Vector3(4743.118f, 2176.203f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 247, + Terminal.Constructor(Vector3(4743.246f, 2183.527f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 248, + Terminal.Constructor(Vector3(4744.54f, 2174.73f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 249, + Terminal.Constructor(Vector3(4744.719f, 2184.949f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 250, + Terminal.Constructor(Vector3(4757.238f, 2174.508f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 251, + Terminal.Constructor(Vector3(4757.417f, 2184.728f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 252, + Terminal.Constructor(Vector3(4758.711f, 2175.931f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 253, + Terminal.Constructor(Vector3(4758.839f, 2183.255f, 64.53426f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2033, + Terminal.Constructor(Vector3(4730.14f, 2137.699f, 75.83926f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2034, + Terminal.Constructor(Vector3(4758.78f, 2135.081f, 66.13426f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2035, + Terminal.Constructor(Vector3(4758.846f, 2138.812f, 66.13426f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2036, + Terminal.Constructor(Vector3(4758.912f, 2142.6f, 66.13426f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2860, + Terminal.Constructor(Vector3(4699.996f, 2128.105f, 66.15726f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2861, + Terminal.Constructor(Vector3(4722.925f, 2071.699f, 68.65726f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2862, + Terminal.Constructor(Vector3(4740.524f, 2192f, 66.15726f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2863, + Terminal.Constructor(Vector3(4741.667f, 2114.328f, 76.12327f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2864, + Terminal.Constructor(Vector3(4745.027f, 2131.156f, 66.67827f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2865, + Terminal.Constructor(Vector3(4745.15f, 2138.447f, 66.67827f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2866, + Terminal.Constructor(Vector3(4745.28f, 2145.734f, 66.67827f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 3073, + Terminal.Constructor(Vector3(4776.52f, 2064.167f, 76.84927f), vehicle_terminal_combined), + owning_building_guid = 33 + ) + LocalObject( + 1891, + VehicleSpawnPad.Constructor(Vector3(4762.881f, 2064.315f, 72.69127f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 33, + terminal_guid = 3073 + ) LocalObject(2659, ResourceSilo.Constructor(Vector3(4680.63f, 2179.896f, 81.56126f)), owning_building_guid = 33) - LocalObject(2737, SpawnTube.Constructor(Vector3(4744.314f, 2132.608f, 64.54427f), Vector3(0, 0, 1)), owning_building_guid = 33) - LocalObject(2738, SpawnTube.Constructor(Vector3(4744.441f, 2139.898f, 64.54427f), Vector3(0, 0, 1)), owning_building_guid = 33) - LocalObject(2739, SpawnTube.Constructor(Vector3(4744.568f, 2147.185f, 64.54427f), Vector3(0, 0, 1)), owning_building_guid = 33) - LocalObject(170, ProximityTerminal.Constructor(Vector3(4741.859f, 2120.858f, 74.35426f), adv_med_terminal), owning_building_guid = 33) - LocalObject(1911, ProximityTerminal.Constructor(Vector3(4767.707f, 2131.469f, 64.54427f), medical_terminal), owning_building_guid = 33) - LocalObject(2261, ProximityTerminal.Constructor(Vector3(4720.805f, 2066.387f, 84.83727f), pad_landing_frame), owning_building_guid = 33) - LocalObject(2262, Terminal.Constructor(Vector3(4720.805f, 2066.387f, 84.83727f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(2264, ProximityTerminal.Constructor(Vector3(4726.04f, 2181.903f, 82.88627f), pad_landing_frame), owning_building_guid = 33) - LocalObject(2265, Terminal.Constructor(Vector3(4726.04f, 2181.903f, 82.88627f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(2267, ProximityTerminal.Constructor(Vector3(4736.99f, 2058.819f, 82.89626f), pad_landing_frame), owning_building_guid = 33) - LocalObject(2268, Terminal.Constructor(Vector3(4736.99f, 2058.819f, 82.89626f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(2270, ProximityTerminal.Constructor(Vector3(4742.113f, 2173.223f, 84.87627f), pad_landing_frame), owning_building_guid = 33) - LocalObject(2271, Terminal.Constructor(Vector3(4742.113f, 2173.223f, 84.87627f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(2619, ProximityTerminal.Constructor(Vector3(4703.049f, 2043.786f, 74.29427f), repair_silo), owning_building_guid = 33) - LocalObject(2620, Terminal.Constructor(Vector3(4703.049f, 2043.786f, 74.29427f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(2627, ProximityTerminal.Constructor(Vector3(4792.799f, 2142.942f, 74.29427f), repair_silo), owning_building_guid = 33) - LocalObject(2628, Terminal.Constructor(Vector3(4792.799f, 2142.942f, 74.29427f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(1841, FacilityTurret.Constructor(Vector3(4666.725f, 2032.643f, 82.94627f), manned_turret), owning_building_guid = 33) + LocalObject( + 2737, + SpawnTube.Constructor(Vector3(4744.314f, 2132.608f, 64.54427f), Vector3(0, 0, 1)), + owning_building_guid = 33 + ) + LocalObject( + 2738, + SpawnTube.Constructor(Vector3(4744.441f, 2139.898f, 64.54427f), Vector3(0, 0, 1)), + owning_building_guid = 33 + ) + LocalObject( + 2739, + SpawnTube.Constructor(Vector3(4744.568f, 2147.185f, 64.54427f), Vector3(0, 0, 1)), + owning_building_guid = 33 + ) + LocalObject( + 170, + ProximityTerminal.Constructor(Vector3(4741.859f, 2120.858f, 74.35426f), adv_med_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1911, + ProximityTerminal.Constructor(Vector3(4767.707f, 2131.469f, 64.54427f), medical_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2261, + ProximityTerminal.Constructor(Vector3(4720.805f, 2066.387f, 84.83727f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 2262, + Terminal.Constructor(Vector3(4720.805f, 2066.387f, 84.83727f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2264, + ProximityTerminal.Constructor(Vector3(4726.04f, 2181.903f, 82.88627f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 2265, + Terminal.Constructor(Vector3(4726.04f, 2181.903f, 82.88627f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2267, + ProximityTerminal.Constructor(Vector3(4736.99f, 2058.819f, 82.89626f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 2268, + Terminal.Constructor(Vector3(4736.99f, 2058.819f, 82.89626f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2270, + ProximityTerminal.Constructor(Vector3(4742.113f, 2173.223f, 84.87627f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 2271, + Terminal.Constructor(Vector3(4742.113f, 2173.223f, 84.87627f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2619, + ProximityTerminal.Constructor(Vector3(4703.049f, 2043.786f, 74.29427f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 2620, + Terminal.Constructor(Vector3(4703.049f, 2043.786f, 74.29427f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2627, + ProximityTerminal.Constructor(Vector3(4792.799f, 2142.942f, 74.29427f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 2628, + Terminal.Constructor(Vector3(4792.799f, 2142.942f, 74.29427f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1841, + FacilityTurret.Constructor(Vector3(4666.725f, 2032.643f, 82.94627f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1841, 5036) - LocalObject(1842, FacilityTurret.Constructor(Vector3(4669.807f, 2209.709f, 82.94627f), manned_turret), owning_building_guid = 33) + LocalObject( + 1842, + FacilityTurret.Constructor(Vector3(4669.807f, 2209.709f, 82.94627f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1842, 5037) - LocalObject(1845, FacilityTurret.Constructor(Vector3(4763.086f, 2209.214f, 82.94627f), manned_turret), owning_building_guid = 33) + LocalObject( + 1845, + FacilityTurret.Constructor(Vector3(4763.086f, 2209.214f, 82.94627f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1845, 5038) - LocalObject(1847, FacilityTurret.Constructor(Vector3(4801.93f, 2030.275f, 82.94627f), manned_turret), owning_building_guid = 33) + LocalObject( + 1847, + FacilityTurret.Constructor(Vector3(4801.93f, 2030.275f, 82.94627f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1847, 5039) - LocalObject(1848, FacilityTurret.Constructor(Vector3(4805.475f, 2165.359f, 82.94627f), manned_turret), owning_building_guid = 33) + LocalObject( + 1848, + FacilityTurret.Constructor(Vector3(4805.475f, 2165.359f, 82.94627f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1848, 5040) - LocalObject(950, ImplantTerminalMech.Constructor(Vector3(4750.839f, 2172.186f, 64.02126f)), owning_building_guid = 33) - LocalObject(942, Terminal.Constructor(Vector3(4750.839f, 2172.204f, 64.02126f), implant_terminal_interface), owning_building_guid = 33) + LocalObject( + 950, + ImplantTerminalMech.Constructor(Vector3(4750.839f, 2172.186f, 64.02126f)), + owning_building_guid = 33 + ) + LocalObject( + 942, + Terminal.Constructor(Vector3(4750.839f, 2172.204f, 64.02126f), implant_terminal_interface), + owning_building_guid = 33 + ) TerminalToInterface(950, 942) - LocalObject(951, ImplantTerminalMech.Constructor(Vector3(4751.095f, 2187.54f, 64.02126f)), owning_building_guid = 33) - LocalObject(943, Terminal.Constructor(Vector3(4751.095f, 2187.521f, 64.02126f), implant_terminal_interface), owning_building_guid = 33) + LocalObject( + 951, + ImplantTerminalMech.Constructor(Vector3(4751.095f, 2187.54f, 64.02126f)), + owning_building_guid = 33 + ) + LocalObject( + 943, + Terminal.Constructor(Vector3(4751.095f, 2187.521f, 64.02126f), implant_terminal_interface), + owning_building_guid = 33 + ) TerminalToInterface(951, 943) - LocalObject(2386, Painbox.Constructor(Vector3(4745.25f, 2108.239f, 88.57307f), painbox), owning_building_guid = 33) - LocalObject(2398, Painbox.Constructor(Vector3(4754.885f, 2135.453f, 68.61417f), painbox_continuous), owning_building_guid = 33) - LocalObject(2410, Painbox.Constructor(Vector3(4744.091f, 2122.726f, 88.77817f), painbox_door_radius), owning_building_guid = 33) - LocalObject(2438, Painbox.Constructor(Vector3(4750.5f, 2125.61f, 66.90016f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2439, Painbox.Constructor(Vector3(4752.964f, 2153.609f, 66.25847f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2440, Painbox.Constructor(Vector3(4768.21f, 2146.561f, 68.08517f), painbox_door_radius_continuous), owning_building_guid = 33) + LocalObject( + 2386, + Painbox.Constructor(Vector3(4745.25f, 2108.239f, 88.57307f), painbox), + owning_building_guid = 33 + ) + LocalObject( + 2398, + Painbox.Constructor(Vector3(4754.885f, 2135.453f, 68.61417f), painbox_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2410, + Painbox.Constructor(Vector3(4744.091f, 2122.726f, 88.77817f), painbox_door_radius), + owning_building_guid = 33 + ) + LocalObject( + 2438, + Painbox.Constructor(Vector3(4750.5f, 2125.61f, 66.90016f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2439, + Painbox.Constructor(Vector3(4752.964f, 2153.609f, 66.25847f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2440, + Painbox.Constructor(Vector3(4768.21f, 2146.561f, 68.08517f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) LocalObject(308, Generator.Constructor(Vector3(4743.613f, 2104.378f, 83.25027f)), owning_building_guid = 33) - LocalObject(296, Terminal.Constructor(Vector3(4743.709f, 2112.57f, 84.54427f), gen_control), owning_building_guid = 33) + LocalObject( + 296, + Terminal.Constructor(Vector3(4743.709f, 2112.57f, 84.54427f), gen_control), + owning_building_guid = 33 + ) } Building13() def Building13(): Unit = { // Name: Lahar Type: cryo_facility GUID: 36, MapID: 13 - LocalBuilding("Lahar", 36, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(7044f, 5314f, 37.85578f), Vector3(0f, 0f, 136f), cryo_facility))) - LocalObject(229, CaptureTerminal.Constructor(Vector3(7023.036f, 5251.855f, 27.85578f), capture_terminal), owning_building_guid = 36) + LocalBuilding( + "Lahar", + 36, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(7044f, 5314f, 37.85578f), + Vector3(0f, 0f, 136f), + cryo_facility + ) + ) + ) + LocalObject( + 229, + CaptureTerminal.Constructor(Vector3(7023.036f, 5251.855f, 27.85578f), capture_terminal), + owning_building_guid = 36 + ) LocalObject(634, Door.Constructor(Vector3(7014.26f, 5248.462f, 47.37078f)), owning_building_guid = 36) LocalObject(635, Door.Constructor(Vector3(7027.347f, 5235.825f, 39.40678f)), owning_building_guid = 36) LocalObject(636, Door.Constructor(Vector3(7029.942f, 5372.755f, 39.40678f)), owning_building_guid = 36) @@ -1119,15 +3107,60 @@ object Map04 { // Ishundar LocalObject(2988, Door.Constructor(Vector3(7026.526f, 5302.633f, 29.70978f)), owning_building_guid = 36) LocalObject(2991, Door.Constructor(Vector3(7031.59f, 5307.876f, 29.70978f)), owning_building_guid = 36) LocalObject(2992, Door.Constructor(Vector3(7036.656f, 5313.122f, 29.70978f)), owning_building_guid = 36) - LocalObject(977, IFFLock.Constructor(Vector3(7024.119f, 5294.521f, 39.33778f), Vector3(0, 0, 224)), owning_building_guid = 36, door_guid = 929) - LocalObject(1243, IFFLock.Constructor(Vector3(7012.351f, 5247.847f, 29.19178f), Vector3(0, 0, 314)), owning_building_guid = 36, door_guid = 898) - LocalObject(1244, IFFLock.Constructor(Vector3(7019.264f, 5303.397f, 29.19178f), Vector3(0, 0, 224)), owning_building_guid = 36, door_guid = 899) - LocalObject(1245, IFFLock.Constructor(Vector3(7021.55f, 5243.333f, 29.19178f), Vector3(0, 0, 134)), owning_building_guid = 36, door_guid = 900) - LocalObject(1246, IFFLock.Constructor(Vector3(7025.632f, 5328.363f, 21.69178f), Vector3(0, 0, 134)), owning_building_guid = 36, door_guid = 901) - LocalObject(1251, IFFLock.Constructor(Vector3(7034.8f, 5324.011f, 29.19178f), Vector3(0, 0, 44)), owning_building_guid = 36, door_guid = 903) - LocalObject(1252, IFFLock.Constructor(Vector3(7039.611f, 5287.595f, 49.30778f), Vector3(0, 0, 314)), owning_building_guid = 36, door_guid = 642) - LocalObject(1253, IFFLock.Constructor(Vector3(7039.845f, 5312.51f, 49.30778f), Vector3(0, 0, 224)), owning_building_guid = 36, door_guid = 641) - LocalObject(1254, IFFLock.Constructor(Vector3(7082.886f, 5401.505f, 39.30778f), Vector3(0, 0, 314)), owning_building_guid = 36, door_guid = 647) + LocalObject( + 977, + IFFLock.Constructor(Vector3(7024.119f, 5294.521f, 39.33778f), Vector3(0, 0, 224)), + owning_building_guid = 36, + door_guid = 929 + ) + LocalObject( + 1243, + IFFLock.Constructor(Vector3(7012.351f, 5247.847f, 29.19178f), Vector3(0, 0, 314)), + owning_building_guid = 36, + door_guid = 898 + ) + LocalObject( + 1244, + IFFLock.Constructor(Vector3(7019.264f, 5303.397f, 29.19178f), Vector3(0, 0, 224)), + owning_building_guid = 36, + door_guid = 899 + ) + LocalObject( + 1245, + IFFLock.Constructor(Vector3(7021.55f, 5243.333f, 29.19178f), Vector3(0, 0, 134)), + owning_building_guid = 36, + door_guid = 900 + ) + LocalObject( + 1246, + IFFLock.Constructor(Vector3(7025.632f, 5328.363f, 21.69178f), Vector3(0, 0, 134)), + owning_building_guid = 36, + door_guid = 901 + ) + LocalObject( + 1251, + IFFLock.Constructor(Vector3(7034.8f, 5324.011f, 29.19178f), Vector3(0, 0, 44)), + owning_building_guid = 36, + door_guid = 903 + ) + LocalObject( + 1252, + IFFLock.Constructor(Vector3(7039.611f, 5287.595f, 49.30778f), Vector3(0, 0, 314)), + owning_building_guid = 36, + door_guid = 642 + ) + LocalObject( + 1253, + IFFLock.Constructor(Vector3(7039.845f, 5312.51f, 49.30778f), Vector3(0, 0, 224)), + owning_building_guid = 36, + door_guid = 641 + ) + LocalObject( + 1254, + IFFLock.Constructor(Vector3(7082.886f, 5401.505f, 39.30778f), Vector3(0, 0, 314)), + owning_building_guid = 36, + door_guid = 647 + ) LocalObject(1686, Locker.Constructor(Vector3(6991.738f, 5288.667f, 27.85078f)), owning_building_guid = 36) LocalObject(1687, Locker.Constructor(Vector3(6992.607f, 5289.568f, 27.85078f)), owning_building_guid = 36) LocalObject(1688, Locker.Constructor(Vector3(6993.484f, 5290.476f, 27.85078f)), owning_building_guid = 36) @@ -1157,88 +3190,326 @@ object Map04 { // Ishundar LocalObject(1744, Locker.Constructor(Vector3(7036.882f, 5332.916f, 37.62678f)), owning_building_guid = 36) LocalObject(1745, Locker.Constructor(Vector3(7038.63f, 5334.726f, 37.85578f)), owning_building_guid = 36) LocalObject(1746, Locker.Constructor(Vector3(7039.349f, 5335.47f, 37.85578f)), owning_building_guid = 36) - LocalObject(254, Terminal.Constructor(Vector3(6992.574f, 5284.39f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(255, Terminal.Constructor(Vector3(6992.538f, 5286.438f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(256, Terminal.Constructor(Vector3(6997.626f, 5291.707f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(257, Terminal.Constructor(Vector3(6999.674f, 5291.743f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(258, Terminal.Constructor(Vector3(7001.709f, 5275.568f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(259, Terminal.Constructor(Vector3(7003.757f, 5275.604f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(260, Terminal.Constructor(Vector3(7008.846f, 5280.873f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(261, Terminal.Constructor(Vector3(7008.81f, 5282.92f, 27.84578f), cert_terminal), owning_building_guid = 36) - LocalObject(2075, Terminal.Constructor(Vector3(7020.211f, 5316.22f, 29.44578f), order_terminal), owning_building_guid = 36) - LocalObject(2076, Terminal.Constructor(Vector3(7022.844f, 5318.945f, 29.44578f), order_terminal), owning_building_guid = 36) - LocalObject(2077, Terminal.Constructor(Vector3(7025.436f, 5321.629f, 29.44578f), order_terminal), owning_building_guid = 36) - LocalObject(2081, Terminal.Constructor(Vector3(7044.596f, 5300.182f, 39.15078f), order_terminal), owning_building_guid = 36) - LocalObject(2880, Terminal.Constructor(Vector3(6999.968f, 5267.55f, 29.46878f), spawn_terminal), owning_building_guid = 36) - LocalObject(2881, Terminal.Constructor(Vector3(7028.044f, 5304.632f, 29.98978f), spawn_terminal), owning_building_guid = 36) - LocalObject(2882, Terminal.Constructor(Vector3(7033.109f, 5309.872f, 29.98978f), spawn_terminal), owning_building_guid = 36) - LocalObject(2883, Terminal.Constructor(Vector3(7038.171f, 5315.12f, 29.98978f), spawn_terminal), owning_building_guid = 36) - LocalObject(2884, Terminal.Constructor(Vector3(7052.105f, 5325.136f, 39.43478f), spawn_terminal), owning_building_guid = 36) - LocalObject(2885, Terminal.Constructor(Vector3(7073.186f, 5286.64f, 29.46878f), spawn_terminal), owning_building_guid = 36) - LocalObject(2886, Terminal.Constructor(Vector3(7094.885f, 5343.53f, 31.96878f), spawn_terminal), owning_building_guid = 36) - LocalObject(3076, Terminal.Constructor(Vector3(7060.825f, 5385.591f, 40.16078f), vehicle_terminal_combined), owning_building_guid = 36) - LocalObject(1896, VehicleSpawnPad.Constructor(Vector3(7070.699f, 5376.181f, 36.00278f), mb_pad_creation, Vector3(0, 0, 134)), owning_building_guid = 36, terminal_guid = 3076) + LocalObject( + 254, + Terminal.Constructor(Vector3(6992.574f, 5284.39f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 255, + Terminal.Constructor(Vector3(6992.538f, 5286.438f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 256, + Terminal.Constructor(Vector3(6997.626f, 5291.707f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 257, + Terminal.Constructor(Vector3(6999.674f, 5291.743f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 258, + Terminal.Constructor(Vector3(7001.709f, 5275.568f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 259, + Terminal.Constructor(Vector3(7003.757f, 5275.604f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 260, + Terminal.Constructor(Vector3(7008.846f, 5280.873f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 261, + Terminal.Constructor(Vector3(7008.81f, 5282.92f, 27.84578f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2075, + Terminal.Constructor(Vector3(7020.211f, 5316.22f, 29.44578f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2076, + Terminal.Constructor(Vector3(7022.844f, 5318.945f, 29.44578f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2077, + Terminal.Constructor(Vector3(7025.436f, 5321.629f, 29.44578f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2081, + Terminal.Constructor(Vector3(7044.596f, 5300.182f, 39.15078f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2880, + Terminal.Constructor(Vector3(6999.968f, 5267.55f, 29.46878f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2881, + Terminal.Constructor(Vector3(7028.044f, 5304.632f, 29.98978f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2882, + Terminal.Constructor(Vector3(7033.109f, 5309.872f, 29.98978f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2883, + Terminal.Constructor(Vector3(7038.171f, 5315.12f, 29.98978f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2884, + Terminal.Constructor(Vector3(7052.105f, 5325.136f, 39.43478f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2885, + Terminal.Constructor(Vector3(7073.186f, 5286.64f, 29.46878f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2886, + Terminal.Constructor(Vector3(7094.885f, 5343.53f, 31.96878f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 3076, + Terminal.Constructor(Vector3(7060.825f, 5385.591f, 40.16078f), vehicle_terminal_combined), + owning_building_guid = 36 + ) + LocalObject( + 1896, + VehicleSpawnPad.Constructor(Vector3(7070.699f, 5376.181f, 36.00278f), mb_pad_creation, Vector3(0, 0, 134)), + owning_building_guid = 36, + terminal_guid = 3076 + ) LocalObject(2662, ResourceSilo.Constructor(Vector3(7052.028f, 5235.555f, 44.87278f)), owning_building_guid = 36) - LocalObject(2764, SpawnTube.Constructor(Vector3(7027.575f, 5303.084f, 27.85578f), Vector3(0, 0, 224)), owning_building_guid = 36) - LocalObject(2767, SpawnTube.Constructor(Vector3(7032.637f, 5308.327f, 27.85578f), Vector3(0, 0, 224)), owning_building_guid = 36) - LocalObject(2768, SpawnTube.Constructor(Vector3(7037.702f, 5313.572f, 27.85578f), Vector3(0, 0, 224)), owning_building_guid = 36) - LocalObject(171, ProximityTerminal.Constructor(Vector3(7047.511f, 5320.491f, 37.66578f), adv_med_terminal), owning_building_guid = 36) - LocalObject(1916, ProximityTerminal.Constructor(Vector3(7021.371f, 5330.359f, 27.85578f), medical_terminal), owning_building_guid = 36) - LocalObject(2294, ProximityTerminal.Constructor(Vector3(7011.613f, 5282.367f, 48.18778f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2295, Terminal.Constructor(Vector3(7011.613f, 5282.367f, 48.18778f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2297, ProximityTerminal.Constructor(Vector3(7017.448f, 5265.057f, 46.19778f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2298, Terminal.Constructor(Vector3(7017.448f, 5265.057f, 46.19778f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2300, ProximityTerminal.Constructor(Vector3(7093.383f, 5362.543f, 46.20778f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2301, Terminal.Constructor(Vector3(7093.383f, 5362.543f, 46.20778f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2303, ProximityTerminal.Constructor(Vector3(7100.059f, 5345.97f, 48.14878f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2304, Terminal.Constructor(Vector3(7100.059f, 5345.97f, 48.14878f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2643, ProximityTerminal.Constructor(Vector3(6995.195f, 5339.081f, 37.60578f), repair_silo), owning_building_guid = 36) - LocalObject(2644, Terminal.Constructor(Vector3(6995.195f, 5339.081f, 37.60578f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(2647, ProximityTerminal.Constructor(Vector3(7128.458f, 5350.39f, 37.60578f), repair_silo), owning_building_guid = 36) - LocalObject(2648, Terminal.Constructor(Vector3(7128.458f, 5350.39f, 37.60578f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(1870, FacilityTurret.Constructor(Vector3(6970.636f, 5331.331f, 46.25778f), manned_turret), owning_building_guid = 36) + LocalObject( + 2764, + SpawnTube.Constructor(Vector3(7027.575f, 5303.084f, 27.85578f), Vector3(0, 0, 224)), + owning_building_guid = 36 + ) + LocalObject( + 2767, + SpawnTube.Constructor(Vector3(7032.637f, 5308.327f, 27.85578f), Vector3(0, 0, 224)), + owning_building_guid = 36 + ) + LocalObject( + 2768, + SpawnTube.Constructor(Vector3(7037.702f, 5313.572f, 27.85578f), Vector3(0, 0, 224)), + owning_building_guid = 36 + ) + LocalObject( + 171, + ProximityTerminal.Constructor(Vector3(7047.511f, 5320.491f, 37.66578f), adv_med_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1916, + ProximityTerminal.Constructor(Vector3(7021.371f, 5330.359f, 27.85578f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2294, + ProximityTerminal.Constructor(Vector3(7011.613f, 5282.367f, 48.18778f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2295, + Terminal.Constructor(Vector3(7011.613f, 5282.367f, 48.18778f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2297, + ProximityTerminal.Constructor(Vector3(7017.448f, 5265.057f, 46.19778f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2298, + Terminal.Constructor(Vector3(7017.448f, 5265.057f, 46.19778f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2300, + ProximityTerminal.Constructor(Vector3(7093.383f, 5362.543f, 46.20778f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2301, + Terminal.Constructor(Vector3(7093.383f, 5362.543f, 46.20778f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2303, + ProximityTerminal.Constructor(Vector3(7100.059f, 5345.97f, 48.14878f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2304, + Terminal.Constructor(Vector3(7100.059f, 5345.97f, 48.14878f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2643, + ProximityTerminal.Constructor(Vector3(6995.195f, 5339.081f, 37.60578f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2644, + Terminal.Constructor(Vector3(6995.195f, 5339.081f, 37.60578f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2647, + ProximityTerminal.Constructor(Vector3(7128.458f, 5350.39f, 37.60578f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2648, + Terminal.Constructor(Vector3(7128.458f, 5350.39f, 37.60578f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1870, + FacilityTurret.Constructor(Vector3(6970.636f, 5331.331f, 46.25778f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1870, 5041) - LocalObject(1871, FacilityTurret.Constructor(Vector3(6971.728f, 5270.348f, 46.25778f), manned_turret), owning_building_guid = 36) + LocalObject( + 1871, + FacilityTurret.Constructor(Vector3(6971.728f, 5270.348f, 46.25778f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1871, 5042) - LocalObject(1873, FacilityTurret.Constructor(Vector3(7039.61f, 5206.37f, 46.25778f), manned_turret), owning_building_guid = 36) + LocalObject( + 1873, + FacilityTurret.Constructor(Vector3(7039.61f, 5206.37f, 46.25778f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1873, 5043) - LocalObject(1875, FacilityTurret.Constructor(Vector3(7065.355f, 5427.708f, 46.25778f), manned_turret), owning_building_guid = 36) + LocalObject( + 1875, + FacilityTurret.Constructor(Vector3(7065.355f, 5427.708f, 46.25778f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1875, 5044) - LocalObject(1876, FacilityTurret.Constructor(Vector3(7162.624f, 5333.766f, 46.25778f), manned_turret), owning_building_guid = 36) + LocalObject( + 1876, + FacilityTurret.Constructor(Vector3(7162.624f, 5333.766f, 46.25778f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1876, 5045) - LocalObject(952, ImplantTerminalMech.Constructor(Vector3(6995.28f, 5278.022f, 27.33278f)), owning_building_guid = 36) - LocalObject(944, Terminal.Constructor(Vector3(6995.292f, 5278.035f, 27.33278f), implant_terminal_interface), owning_building_guid = 36) + LocalObject( + 952, + ImplantTerminalMech.Constructor(Vector3(6995.28f, 5278.022f, 27.33278f)), + owning_building_guid = 36 + ) + LocalObject( + 944, + Terminal.Constructor(Vector3(6995.292f, 5278.035f, 27.33278f), implant_terminal_interface), + owning_building_guid = 36 + ) TerminalToInterface(952, 944) - LocalObject(953, ImplantTerminalMech.Constructor(Vector3(7005.938f, 5289.077f, 27.33278f)), owning_building_guid = 36) - LocalObject(945, Terminal.Constructor(Vector3(7005.926f, 5289.064f, 27.33278f), implant_terminal_interface), owning_building_guid = 36) + LocalObject( + 953, + ImplantTerminalMech.Constructor(Vector3(7005.938f, 5289.077f, 27.33278f)), + owning_building_guid = 36 + ) + LocalObject( + 945, + Terminal.Constructor(Vector3(7005.926f, 5289.064f, 27.33278f), implant_terminal_interface), + owning_building_guid = 36 + ) TerminalToInterface(953, 945) - LocalObject(2389, Painbox.Constructor(Vector3(7053.638f, 5332.032f, 51.88458f), painbox), owning_building_guid = 36) - LocalObject(2401, Painbox.Constructor(Vector3(7028.031f, 5318.701f, 31.92568f), painbox_continuous), owning_building_guid = 36) - LocalObject(2413, Painbox.Constructor(Vector3(7044.605f, 5320.647f, 52.08968f), painbox_door_radius), owning_building_guid = 36) - LocalObject(2447, Painbox.Constructor(Vector3(7010.71f, 5319.665f, 31.39668f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2448, Painbox.Constructor(Vector3(7017.053f, 5304.113f, 29.56998f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2449, Painbox.Constructor(Vector3(7037.951f, 5322.909f, 30.21168f), painbox_door_radius_continuous), owning_building_guid = 36) + LocalObject( + 2389, + Painbox.Constructor(Vector3(7053.638f, 5332.032f, 51.88458f), painbox), + owning_building_guid = 36 + ) + LocalObject( + 2401, + Painbox.Constructor(Vector3(7028.031f, 5318.701f, 31.92568f), painbox_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2413, + Painbox.Constructor(Vector3(7044.605f, 5320.647f, 52.08968f), painbox_door_radius), + owning_building_guid = 36 + ) + LocalObject( + 2447, + Painbox.Constructor(Vector3(7010.71f, 5319.665f, 31.39668f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2448, + Painbox.Constructor(Vector3(7017.053f, 5304.113f, 29.56998f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2449, + Painbox.Constructor(Vector3(7037.951f, 5322.909f, 30.21168f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) LocalObject(311, Generator.Constructor(Vector3(7057.467f, 5333.74f, 46.56178f)), owning_building_guid = 36) - LocalObject(299, Terminal.Constructor(Vector3(7051.811f, 5327.814f, 47.85578f), gen_control), owning_building_guid = 36) + LocalObject( + 299, + Terminal.Constructor(Vector3(7051.811f, 5327.814f, 47.85578f), gen_control), + owning_building_guid = 36 + ) } Building26621() def Building26621(): Unit = { // Name: GW_Ishundar_S Type: hst GUID: 39, MapID: 26621 - LocalBuilding("GW_Ishundar_S", 39, 26621, FoundationBuilder(WarpGate.Structure(Vector3(2440.33f, 1921.26f, 35.77f), hst))) + LocalBuilding( + "GW_Ishundar_S", + 39, + 26621, + FoundationBuilder(WarpGate.Structure(Vector3(2440.33f, 1921.26f, 35.77f), hst)) + ) } Building26620() def Building26620(): Unit = { // Name: GW_Ishundar_N Type: hst GUID: 40, MapID: 26620 - LocalBuilding("GW_Ishundar_N", 40, 26620, FoundationBuilder(WarpGate.Structure(Vector3(4163.3f, 4368.72f, 65.16f), hst))) + LocalBuilding( + "GW_Ishundar_N", + 40, + 26620, + FoundationBuilder(WarpGate.Structure(Vector3(4163.3f, 4368.72f, 65.16f), hst)) + ) } Building6() def Building6(): Unit = { // Name: Baal Type: tech_plant GUID: 42, MapID: 6 - LocalBuilding("Baal", 42, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(942f, 5484f, 72.354f), Vector3(0f, 0f, 225f), tech_plant))) - LocalObject(218, CaptureTerminal.Constructor(Vector3(907.4769f, 5511.828f, 87.45399f), capture_terminal), owning_building_guid = 42) + LocalBuilding( + "Baal", + 42, + 6, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(942f, 5484f, 72.354f), Vector3(0f, 0f, 225f), tech_plant) + ) + ) + LocalObject( + 218, + CaptureTerminal.Constructor(Vector3(907.4769f, 5511.828f, 87.45399f), capture_terminal), + owning_building_guid = 42 + ) LocalObject(312, Door.Constructor(Vector3(874.2571f, 5545.23f, 74.005f)), owning_building_guid = 42) LocalObject(313, Door.Constructor(Vector3(875.457f, 5438.792f, 81.85899f)), owning_building_guid = 42) LocalObject(314, Door.Constructor(Vector3(887.1215f, 5558.095f, 81.96799f)), owning_building_guid = 42) @@ -1277,16 +3548,66 @@ object Map04 { // Ishundar LocalObject(2887, Door.Constructor(Vector3(903.1516f, 5504.926f, 66.808f)), owning_building_guid = 42) LocalObject(2888, Door.Constructor(Vector3(908.3085f, 5499.769f, 66.808f)), owning_building_guid = 42) LocalObject(2889, Door.Constructor(Vector3(913.4626f, 5494.615f, 66.808f)), owning_building_guid = 42) - LocalObject(966, IFFLock.Constructor(Vector3(877.1201f, 5487.564f, 73.934f), Vector3(0, 0, 315)), owning_building_guid = 42, door_guid = 918) - LocalObject(978, IFFLock.Constructor(Vector3(1002.173f, 5484.276f, 74.042f), Vector3(0, 0, 135)), owning_building_guid = 42, door_guid = 651) - LocalObject(982, IFFLock.Constructor(Vector3(887.813f, 5494.262f, 58.79f), Vector3(0, 0, 45)), owning_building_guid = 42, door_guid = 659) - LocalObject(983, IFFLock.Constructor(Vector3(892.2324f, 5503.26f, 66.28999f), Vector3(0, 0, 315)), owning_building_guid = 42, door_guid = 663) - LocalObject(984, IFFLock.Constructor(Vector3(898.7025f, 5585.017f, 73.906f), Vector3(0, 0, 45)), owning_building_guid = 42, door_guid = 316) - LocalObject(985, IFFLock.Constructor(Vector3(899.7709f, 5498.658f, 88.89999f), Vector3(0, 0, 315)), owning_building_guid = 42, door_guid = 317) - LocalObject(986, IFFLock.Constructor(Vector3(909.1089f, 5475.07f, 58.79f), Vector3(0, 0, 315)), owning_building_guid = 42, door_guid = 665) - LocalObject(987, IFFLock.Constructor(Vector3(912.5717f, 5487.367f, 66.28999f), Vector3(0, 0, 135)), owning_building_guid = 42, door_guid = 666) - LocalObject(988, IFFLock.Constructor(Vector3(918.3204f, 5515.56f, 88.78999f), Vector3(0, 0, 135)), owning_building_guid = 42, door_guid = 669) - LocalObject(989, IFFLock.Constructor(Vector3(919.9588f, 5493.944f, 88.89999f), Vector3(0, 0, 135)), owning_building_guid = 42, door_guid = 318) + LocalObject( + 966, + IFFLock.Constructor(Vector3(877.1201f, 5487.564f, 73.934f), Vector3(0, 0, 315)), + owning_building_guid = 42, + door_guid = 918 + ) + LocalObject( + 978, + IFFLock.Constructor(Vector3(1002.173f, 5484.276f, 74.042f), Vector3(0, 0, 135)), + owning_building_guid = 42, + door_guid = 651 + ) + LocalObject( + 982, + IFFLock.Constructor(Vector3(887.813f, 5494.262f, 58.79f), Vector3(0, 0, 45)), + owning_building_guid = 42, + door_guid = 659 + ) + LocalObject( + 983, + IFFLock.Constructor(Vector3(892.2324f, 5503.26f, 66.28999f), Vector3(0, 0, 315)), + owning_building_guid = 42, + door_guid = 663 + ) + LocalObject( + 984, + IFFLock.Constructor(Vector3(898.7025f, 5585.017f, 73.906f), Vector3(0, 0, 45)), + owning_building_guid = 42, + door_guid = 316 + ) + LocalObject( + 985, + IFFLock.Constructor(Vector3(899.7709f, 5498.658f, 88.89999f), Vector3(0, 0, 315)), + owning_building_guid = 42, + door_guid = 317 + ) + LocalObject( + 986, + IFFLock.Constructor(Vector3(909.1089f, 5475.07f, 58.79f), Vector3(0, 0, 315)), + owning_building_guid = 42, + door_guid = 665 + ) + LocalObject( + 987, + IFFLock.Constructor(Vector3(912.5717f, 5487.367f, 66.28999f), Vector3(0, 0, 135)), + owning_building_guid = 42, + door_guid = 666 + ) + LocalObject( + 988, + IFFLock.Constructor(Vector3(918.3204f, 5515.56f, 88.78999f), Vector3(0, 0, 135)), + owning_building_guid = 42, + door_guid = 669 + ) + LocalObject( + 989, + IFFLock.Constructor(Vector3(919.9588f, 5493.944f, 88.89999f), Vector3(0, 0, 135)), + owning_building_guid = 42, + door_guid = 318 + ) LocalObject(1255, Locker.Constructor(Vector3(890.4647f, 5497.319f, 65.215f)), owning_building_guid = 42) LocalObject(1256, Locker.Constructor(Vector3(890.6902f, 5469.227f, 57.45399f)), owning_building_guid = 42) LocalObject(1257, Locker.Constructor(Vector3(891.2771f, 5498.131f, 65.215f)), owning_building_guid = 42) @@ -1299,72 +3620,295 @@ object Map04 { // Ishundar LocalObject(1264, Locker.Constructor(Vector3(897.6722f, 5476.208f, 57.45399f)), owning_building_guid = 42) LocalObject(1265, Locker.Constructor(Vector3(898.6169f, 5477.153f, 57.45399f)), owning_building_guid = 42) LocalObject(1266, Locker.Constructor(Vector3(899.5531f, 5478.089f, 57.45399f)), owning_building_guid = 42) - LocalObject(172, Terminal.Constructor(Vector3(912.6805f, 5489.836f, 88.057f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1877, VehicleSpawnPad.Constructor(Vector3(924.1434f, 5472.034f, 84.932f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 42, terminal_guid = 172) - LocalObject(173, Terminal.Constructor(Vector3(921.1177f, 5498.273f, 88.057f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1878, VehicleSpawnPad.Constructor(Vector3(939.0054f, 5486.896f, 84.932f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 42, terminal_guid = 173) - LocalObject(1917, Terminal.Constructor(Vector3(894.4499f, 5493.855f, 66.544f), order_terminal), owning_building_guid = 42) - LocalObject(1918, Terminal.Constructor(Vector3(897.0881f, 5491.217f, 66.544f), order_terminal), owning_building_guid = 42) - LocalObject(1919, Terminal.Constructor(Vector3(899.7673f, 5488.538f, 66.544f), order_terminal), owning_building_guid = 42) - LocalObject(1920, Terminal.Constructor(Vector3(921.0894f, 5500.586f, 78.784f), order_terminal), owning_building_guid = 42) - LocalObject(2804, Terminal.Constructor(Vector3(891.5472f, 5568.476f, 66.51099f), spawn_terminal), owning_building_guid = 42) - LocalObject(2805, Terminal.Constructor(Vector3(901.1801f, 5506.476f, 67.088f), spawn_terminal), owning_building_guid = 42) - LocalObject(2806, Terminal.Constructor(Vector3(901.2686f, 5472.063f, 79.036f), spawn_terminal), owning_building_guid = 42) - LocalObject(2807, Terminal.Constructor(Vector3(902.861f, 5511.907f, 59.01099f), spawn_terminal), owning_building_guid = 42) - LocalObject(2808, Terminal.Constructor(Vector3(906.3392f, 5501.323f, 67.088f), spawn_terminal), owning_building_guid = 42) - LocalObject(2809, Terminal.Constructor(Vector3(911.4905f, 5496.167f, 67.088f), spawn_terminal), owning_building_guid = 42) - LocalObject(2810, Terminal.Constructor(Vector3(933.9977f, 5471.451f, 84.377f), spawn_terminal), owning_building_guid = 42) - LocalObject(3065, Terminal.Constructor(Vector3(947.2517f, 5546.636f, 58.168f), ground_vehicle_terminal), owning_building_guid = 42) - LocalObject(1879, VehicleSpawnPad.Constructor(Vector3(955.0065f, 5538.954f, 49.891f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 42, terminal_guid = 3065) + LocalObject( + 172, + Terminal.Constructor(Vector3(912.6805f, 5489.836f, 88.057f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1877, + VehicleSpawnPad.Constructor(Vector3(924.1434f, 5472.034f, 84.932f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 42, + terminal_guid = 172 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(921.1177f, 5498.273f, 88.057f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1878, + VehicleSpawnPad.Constructor(Vector3(939.0054f, 5486.896f, 84.932f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 42, + terminal_guid = 173 + ) + LocalObject( + 1917, + Terminal.Constructor(Vector3(894.4499f, 5493.855f, 66.544f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1918, + Terminal.Constructor(Vector3(897.0881f, 5491.217f, 66.544f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1919, + Terminal.Constructor(Vector3(899.7673f, 5488.538f, 66.544f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1920, + Terminal.Constructor(Vector3(921.0894f, 5500.586f, 78.784f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2804, + Terminal.Constructor(Vector3(891.5472f, 5568.476f, 66.51099f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2805, + Terminal.Constructor(Vector3(901.1801f, 5506.476f, 67.088f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2806, + Terminal.Constructor(Vector3(901.2686f, 5472.063f, 79.036f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2807, + Terminal.Constructor(Vector3(902.861f, 5511.907f, 59.01099f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2808, + Terminal.Constructor(Vector3(906.3392f, 5501.323f, 67.088f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2809, + Terminal.Constructor(Vector3(911.4905f, 5496.167f, 67.088f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2810, + Terminal.Constructor(Vector3(933.9977f, 5471.451f, 84.377f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 3065, + Terminal.Constructor(Vector3(947.2517f, 5546.636f, 58.168f), ground_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1879, + VehicleSpawnPad.Constructor(Vector3(955.0065f, 5538.954f, 49.891f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 42, + terminal_guid = 3065 + ) LocalObject(2651, ResourceSilo.Constructor(Vector3(921.3546f, 5417.315f, 79.362f)), owning_building_guid = 42) - LocalObject(2663, SpawnTube.Constructor(Vector3(902.7202f, 5505.979f, 64.95399f), Vector3(0, 0, 135)), owning_building_guid = 42) - LocalObject(2664, SpawnTube.Constructor(Vector3(907.8757f, 5500.824f, 64.95399f), Vector3(0, 0, 135)), owning_building_guid = 42) - LocalObject(2665, SpawnTube.Constructor(Vector3(913.0291f, 5495.671f, 64.95399f), Vector3(0, 0, 135)), owning_building_guid = 42) - LocalObject(1897, ProximityTerminal.Constructor(Vector3(894.7483f, 5474.055f, 57.45399f), medical_terminal), owning_building_guid = 42) - LocalObject(1898, ProximityTerminal.Constructor(Vector3(913.604f, 5508.07f, 77.451f), medical_terminal), owning_building_guid = 42) - LocalObject(2156, ProximityTerminal.Constructor(Vector3(866.4061f, 5523.483f, 80.562f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2157, Terminal.Constructor(Vector3(866.4061f, 5523.483f, 80.562f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2159, ProximityTerminal.Constructor(Vector3(868.3676f, 5469.97f, 83.006f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2160, Terminal.Constructor(Vector3(868.3676f, 5469.97f, 83.006f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2162, ProximityTerminal.Constructor(Vector3(875.4061f, 5454.031f, 80.562f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2163, Terminal.Constructor(Vector3(875.4061f, 5454.031f, 80.562f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2165, ProximityTerminal.Constructor(Vector3(889.7413f, 5522.995f, 87.80099f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2166, Terminal.Constructor(Vector3(889.7413f, 5522.995f, 87.80099f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2168, ProximityTerminal.Constructor(Vector3(965.2306f, 5518.78f, 82.904f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2169, Terminal.Constructor(Vector3(965.2306f, 5518.78f, 82.904f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2171, ProximityTerminal.Constructor(Vector3(968.1326f, 5544.553f, 80.549f), pad_landing_frame), owning_building_guid = 42) - LocalObject(2172, Terminal.Constructor(Vector3(968.1326f, 5544.553f, 80.549f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2555, ProximityTerminal.Constructor(Vector3(834.9235f, 5508.152f, 72.104f), repair_silo), owning_building_guid = 42) - LocalObject(2556, Terminal.Constructor(Vector3(834.9235f, 5508.152f, 72.104f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(2559, ProximityTerminal.Constructor(Vector3(971.2233f, 5454.34f, 72.0825f), repair_silo), owning_building_guid = 42) - LocalObject(2560, Terminal.Constructor(Vector3(971.2233f, 5454.34f, 72.0825f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(1759, FacilityTurret.Constructor(Vector3(810.8338f, 5493.326f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 2663, + SpawnTube.Constructor(Vector3(902.7202f, 5505.979f, 64.95399f), Vector3(0, 0, 135)), + owning_building_guid = 42 + ) + LocalObject( + 2664, + SpawnTube.Constructor(Vector3(907.8757f, 5500.824f, 64.95399f), Vector3(0, 0, 135)), + owning_building_guid = 42 + ) + LocalObject( + 2665, + SpawnTube.Constructor(Vector3(913.0291f, 5495.671f, 64.95399f), Vector3(0, 0, 135)), + owning_building_guid = 42 + ) + LocalObject( + 1897, + ProximityTerminal.Constructor(Vector3(894.7483f, 5474.055f, 57.45399f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1898, + ProximityTerminal.Constructor(Vector3(913.604f, 5508.07f, 77.451f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2156, + ProximityTerminal.Constructor(Vector3(866.4061f, 5523.483f, 80.562f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2157, + Terminal.Constructor(Vector3(866.4061f, 5523.483f, 80.562f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2159, + ProximityTerminal.Constructor(Vector3(868.3676f, 5469.97f, 83.006f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2160, + Terminal.Constructor(Vector3(868.3676f, 5469.97f, 83.006f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2162, + ProximityTerminal.Constructor(Vector3(875.4061f, 5454.031f, 80.562f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2163, + Terminal.Constructor(Vector3(875.4061f, 5454.031f, 80.562f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2165, + ProximityTerminal.Constructor(Vector3(889.7413f, 5522.995f, 87.80099f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2166, + Terminal.Constructor(Vector3(889.7413f, 5522.995f, 87.80099f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2168, + ProximityTerminal.Constructor(Vector3(965.2306f, 5518.78f, 82.904f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2169, + Terminal.Constructor(Vector3(965.2306f, 5518.78f, 82.904f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2171, + ProximityTerminal.Constructor(Vector3(968.1326f, 5544.553f, 80.549f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 2172, + Terminal.Constructor(Vector3(968.1326f, 5544.553f, 80.549f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2555, + ProximityTerminal.Constructor(Vector3(834.9235f, 5508.152f, 72.104f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2556, + Terminal.Constructor(Vector3(834.9235f, 5508.152f, 72.104f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2559, + ProximityTerminal.Constructor(Vector3(971.2233f, 5454.34f, 72.0825f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2560, + Terminal.Constructor(Vector3(971.2233f, 5454.34f, 72.0825f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1759, + FacilityTurret.Constructor(Vector3(810.8338f, 5493.326f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1759, 5046) - LocalObject(1760, FacilityTurret.Constructor(Vector3(851.1665f, 5442.066f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 1760, + FacilityTurret.Constructor(Vector3(851.1665f, 5442.066f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1760, 5047) - LocalObject(1761, FacilityTurret.Constructor(Vector3(908.2314f, 5395.928f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 1761, + FacilityTurret.Constructor(Vector3(908.2314f, 5395.928f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1761, 5048) - LocalObject(1762, FacilityTurret.Constructor(Vector3(927.3289f, 5609.81f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 1762, + FacilityTurret.Constructor(Vector3(927.3289f, 5609.81f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1762, 5049) - LocalObject(1763, FacilityTurret.Constructor(Vector3(1007.941f, 5410.139f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 1763, + FacilityTurret.Constructor(Vector3(1007.941f, 5410.139f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1763, 5050) - LocalObject(1764, FacilityTurret.Constructor(Vector3(1071.365f, 5473.562f, 80.853f), manned_turret), owning_building_guid = 42) + LocalObject( + 1764, + FacilityTurret.Constructor(Vector3(1071.365f, 5473.562f, 80.853f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1764, 5051) - LocalObject(2378, Painbox.Constructor(Vector3(921.1186f, 5468.483f, 60.9273f), painbox), owning_building_guid = 42) - LocalObject(2390, Painbox.Constructor(Vector3(901.2565f, 5495.282f, 69.2239f), painbox_continuous), owning_building_guid = 42) - LocalObject(2402, Painbox.Constructor(Vector3(909.3116f, 5477.515f, 60.6134f), painbox_door_radius), owning_building_guid = 42) - LocalObject(2414, Painbox.Constructor(Vector3(893.3819f, 5505.699f, 67.08189f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(2415, Painbox.Constructor(Vector3(895.9877f, 5479.608f, 68.53629f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(2416, Painbox.Constructor(Vector3(912.2366f, 5485.676f, 67.6302f), painbox_door_radius_continuous), owning_building_guid = 42) + LocalObject( + 2378, + Painbox.Constructor(Vector3(921.1186f, 5468.483f, 60.9273f), painbox), + owning_building_guid = 42 + ) + LocalObject( + 2390, + Painbox.Constructor(Vector3(901.2565f, 5495.282f, 69.2239f), painbox_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2402, + Painbox.Constructor(Vector3(909.3116f, 5477.515f, 60.6134f), painbox_door_radius), + owning_building_guid = 42 + ) + LocalObject( + 2414, + Painbox.Constructor(Vector3(893.3819f, 5505.699f, 67.08189f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2415, + Painbox.Constructor(Vector3(895.9877f, 5479.608f, 68.53629f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 2416, + Painbox.Constructor(Vector3(912.2366f, 5485.676f, 67.6302f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) LocalObject(300, Generator.Constructor(Vector3(921.9041f, 5464.533f, 56.16f)), owning_building_guid = 42) - LocalObject(288, Terminal.Constructor(Vector3(916.0782f, 5470.293f, 57.45399f), gen_control), owning_building_guid = 42) + LocalObject( + 288, + Terminal.Constructor(Vector3(916.0782f, 5470.293f, 57.45399f), gen_control), + owning_building_guid = 42 + ) } Building14() def Building14(): Unit = { // Name: Marduk Type: tech_plant GUID: 45, MapID: 14 - LocalBuilding("Marduk", 45, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3136f, 2234f, 70.51518f), Vector3(0f, 0f, 269f), tech_plant))) - LocalObject(221, CaptureTerminal.Constructor(Vector3(3091.835f, 2230.036f, 85.61518f), capture_terminal), owning_building_guid = 45) + LocalBuilding( + "Marduk", + 45, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3136f, 2234f, 70.51518f), + Vector3(0f, 0f, 269f), + tech_plant + ) + ) + ) + LocalObject( + 221, + CaptureTerminal.Constructor(Vector3(3091.835f, 2230.036f, 85.61518f), capture_terminal), + owning_building_guid = 45 + ) LocalObject(408, Door.Constructor(Vector3(3036.713f, 2275.739f, 72.13618f)), owning_building_guid = 45) LocalObject(409, Door.Constructor(Vector3(3044.736f, 2230.987f, 72.16618f)), owning_building_guid = 45) LocalObject(410, Door.Constructor(Vector3(3045.053f, 2249.177f, 80.12918f)), owning_building_guid = 45) @@ -1403,16 +3947,66 @@ object Map04 { // Ishundar LocalObject(2916, Door.Constructor(Vector3(3093.518f, 2222.067f, 64.96918f)), owning_building_guid = 45) LocalObject(2919, Door.Constructor(Vector3(3100.81f, 2221.939f, 64.96918f)), owning_building_guid = 45) LocalObject(2920, Door.Constructor(Vector3(3108.098f, 2221.812f, 64.96918f)), owning_building_guid = 45) - LocalObject(969, IFFLock.Constructor(Vector3(3086.854f, 2191.494f, 72.09518f), Vector3(0, 0, 271)), owning_building_guid = 45, door_guid = 921) - LocalObject(979, IFFLock.Constructor(Vector3(3179.093f, 2275.998f, 72.20319f), Vector3(0, 0, 91)), owning_building_guid = 45, door_guid = 652) - LocalObject(1058, IFFLock.Constructor(Vector3(3034.682f, 2276.589f, 72.06718f), Vector3(0, 0, 1)), owning_building_guid = 45, door_guid = 408) - LocalObject(1059, IFFLock.Constructor(Vector3(3086.821f, 2213.283f, 64.45118f), Vector3(0, 0, 271)), owning_building_guid = 45, door_guid = 727) - LocalObject(1060, IFFLock.Constructor(Vector3(3089.893f, 2203.74f, 56.95118f), Vector3(0, 0, 1)), owning_building_guid = 45, door_guid = 728) - LocalObject(1061, IFFLock.Constructor(Vector3(3095.441f, 2215.209f, 87.06118f), Vector3(0, 0, 271)), owning_building_guid = 45, door_guid = 413) - LocalObject(1065, IFFLock.Constructor(Vector3(3097.043f, 2240.253f, 86.95119f), Vector3(0, 0, 91)), owning_building_guid = 45, door_guid = 732) - LocalObject(1069, IFFLock.Constructor(Vector3(3112.492f, 2215.979f, 64.45118f), Vector3(0, 0, 91)), owning_building_guid = 45, door_guid = 737) - LocalObject(1070, IFFLock.Constructor(Vector3(3113.237f, 2225.842f, 87.06118f), Vector3(0, 0, 91)), owning_building_guid = 45, door_guid = 420) - LocalObject(1071, IFFLock.Constructor(Vector3(3118.543f, 2204.728f, 56.95118f), Vector3(0, 0, 271)), owning_building_guid = 45, door_guid = 740) + LocalObject( + 969, + IFFLock.Constructor(Vector3(3086.854f, 2191.494f, 72.09518f), Vector3(0, 0, 271)), + owning_building_guid = 45, + door_guid = 921 + ) + LocalObject( + 979, + IFFLock.Constructor(Vector3(3179.093f, 2275.998f, 72.20319f), Vector3(0, 0, 91)), + owning_building_guid = 45, + door_guid = 652 + ) + LocalObject( + 1058, + IFFLock.Constructor(Vector3(3034.682f, 2276.589f, 72.06718f), Vector3(0, 0, 1)), + owning_building_guid = 45, + door_guid = 408 + ) + LocalObject( + 1059, + IFFLock.Constructor(Vector3(3086.821f, 2213.283f, 64.45118f), Vector3(0, 0, 271)), + owning_building_guid = 45, + door_guid = 727 + ) + LocalObject( + 1060, + IFFLock.Constructor(Vector3(3089.893f, 2203.74f, 56.95118f), Vector3(0, 0, 1)), + owning_building_guid = 45, + door_guid = 728 + ) + LocalObject( + 1061, + IFFLock.Constructor(Vector3(3095.441f, 2215.209f, 87.06118f), Vector3(0, 0, 271)), + owning_building_guid = 45, + door_guid = 413 + ) + LocalObject( + 1065, + IFFLock.Constructor(Vector3(3097.043f, 2240.253f, 86.95119f), Vector3(0, 0, 91)), + owning_building_guid = 45, + door_guid = 732 + ) + LocalObject( + 1069, + IFFLock.Constructor(Vector3(3112.492f, 2215.979f, 64.45118f), Vector3(0, 0, 91)), + owning_building_guid = 45, + door_guid = 737 + ) + LocalObject( + 1070, + IFFLock.Constructor(Vector3(3113.237f, 2225.842f, 87.06118f), Vector3(0, 0, 91)), + owning_building_guid = 45, + door_guid = 420 + ) + LocalObject( + 1071, + IFFLock.Constructor(Vector3(3118.543f, 2204.728f, 56.95118f), Vector3(0, 0, 271)), + owning_building_guid = 45, + door_guid = 740 + ) LocalObject(1380, Locker.Constructor(Vector3(3089.676f, 2207.781f, 63.37618f)), owning_building_guid = 45) LocalObject(1381, Locker.Constructor(Vector3(3089.697f, 2208.93f, 63.37618f)), owning_building_guid = 45) LocalObject(1382, Locker.Constructor(Vector3(3089.717f, 2210.077f, 63.37618f)), owning_building_guid = 45) @@ -1425,72 +4019,295 @@ object Map04 { // Ishundar LocalObject(1397, Locker.Constructor(Vector3(3109.526f, 2197.603f, 55.61518f)), owning_building_guid = 45) LocalObject(1398, Locker.Constructor(Vector3(3109.549f, 2198.938f, 55.61518f)), owning_building_guid = 45) LocalObject(1399, Locker.Constructor(Vector3(3109.572f, 2200.262f, 55.61518f)), owning_building_guid = 45) - LocalObject(174, Terminal.Constructor(Vector3(3110.855f, 2217.831f, 86.21819f), air_vehicle_terminal), owning_building_guid = 45) - LocalObject(1883, VehicleSpawnPad.Constructor(Vector3(3131.468f, 2212.988f, 83.09319f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 45, terminal_guid = 174) - LocalObject(175, Terminal.Constructor(Vector3(3111.063f, 2229.761f, 86.21819f), air_vehicle_terminal), owning_building_guid = 45) - LocalObject(1884, VehicleSpawnPad.Constructor(Vector3(3131.834f, 2234.003f, 83.09319f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 45, terminal_guid = 175) - LocalObject(1963, Terminal.Constructor(Vector3(3094.949f, 2208.059f, 64.70518f), order_terminal), owning_building_guid = 45) - LocalObject(1964, Terminal.Constructor(Vector3(3098.679f, 2207.993f, 64.70518f), order_terminal), owning_building_guid = 45) - LocalObject(1965, Terminal.Constructor(Vector3(3102.468f, 2207.927f, 64.70518f), order_terminal), owning_building_guid = 45) - LocalObject(1969, Terminal.Constructor(Vector3(3109.437f, 2231.405f, 76.94518f), order_terminal), owning_building_guid = 45) - LocalObject(2827, Terminal.Constructor(Vector3(3041.025f, 2259.719f, 64.67218f), spawn_terminal), owning_building_guid = 45) - LocalObject(2828, Terminal.Constructor(Vector3(3088.46f, 2226.887f, 57.17218f), spawn_terminal), owning_building_guid = 45) - LocalObject(2829, Terminal.Constructor(Vector3(3091.023f, 2221.812f, 65.24918f), spawn_terminal), owning_building_guid = 45) - LocalObject(2830, Terminal.Constructor(Vector3(3098.314f, 2221.689f, 65.24918f), spawn_terminal), owning_building_guid = 45) - LocalObject(2831, Terminal.Constructor(Vector3(3105.601f, 2221.559f, 65.24918f), spawn_terminal), owning_building_guid = 45) - LocalObject(2832, Terminal.Constructor(Vector3(3114.992f, 2197.119f, 77.19718f), spawn_terminal), owning_building_guid = 45) - LocalObject(2833, Terminal.Constructor(Vector3(3138.961f, 2219.414f, 82.53819f), spawn_terminal), owning_building_guid = 45) - LocalObject(3068, Terminal.Constructor(Vector3(3096.267f, 2282.705f, 56.32918f), ground_vehicle_terminal), owning_building_guid = 45) - LocalObject(1882, VehicleSpawnPad.Constructor(Vector3(3107.182f, 2282.565f, 48.05219f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 45, terminal_guid = 3068) + LocalObject( + 174, + Terminal.Constructor(Vector3(3110.855f, 2217.831f, 86.21819f), air_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1883, + VehicleSpawnPad.Constructor(Vector3(3131.468f, 2212.988f, 83.09319f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 45, + terminal_guid = 174 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(3111.063f, 2229.761f, 86.21819f), air_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1884, + VehicleSpawnPad.Constructor(Vector3(3131.834f, 2234.003f, 83.09319f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 45, + terminal_guid = 175 + ) + LocalObject( + 1963, + Terminal.Constructor(Vector3(3094.949f, 2208.059f, 64.70518f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1964, + Terminal.Constructor(Vector3(3098.679f, 2207.993f, 64.70518f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1965, + Terminal.Constructor(Vector3(3102.468f, 2207.927f, 64.70518f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1969, + Terminal.Constructor(Vector3(3109.437f, 2231.405f, 76.94518f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2827, + Terminal.Constructor(Vector3(3041.025f, 2259.719f, 64.67218f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2828, + Terminal.Constructor(Vector3(3088.46f, 2226.887f, 57.17218f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2829, + Terminal.Constructor(Vector3(3091.023f, 2221.812f, 65.24918f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2830, + Terminal.Constructor(Vector3(3098.314f, 2221.689f, 65.24918f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2831, + Terminal.Constructor(Vector3(3105.601f, 2221.559f, 65.24918f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2832, + Terminal.Constructor(Vector3(3114.992f, 2197.119f, 77.19718f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2833, + Terminal.Constructor(Vector3(3138.961f, 2219.414f, 82.53819f), spawn_terminal), + owning_building_guid = 45 + ) + LocalObject( + 3068, + Terminal.Constructor(Vector3(3096.267f, 2282.705f, 56.32918f), ground_vehicle_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1882, + VehicleSpawnPad.Constructor(Vector3(3107.182f, 2282.565f, 48.05219f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 45, + terminal_guid = 3068 + ) LocalObject(2654, ResourceSilo.Constructor(Vector3(3167.472f, 2171.689f, 77.52319f)), owning_building_guid = 45) - LocalObject(2692, SpawnTube.Constructor(Vector3(3092.476f, 2222.525f, 63.11518f), Vector3(0, 0, 91)), owning_building_guid = 45) - LocalObject(2695, SpawnTube.Constructor(Vector3(3099.766f, 2222.398f, 63.11518f), Vector3(0, 0, 91)), owning_building_guid = 45) - LocalObject(2696, SpawnTube.Constructor(Vector3(3107.053f, 2222.271f, 63.11518f), Vector3(0, 0, 91)), owning_building_guid = 45) - LocalObject(1902, ProximityTerminal.Constructor(Vector3(3098.853f, 2231.589f, 75.61218f), medical_terminal), owning_building_guid = 45) - LocalObject(1903, ProximityTerminal.Constructor(Vector3(3108.918f, 2194.022f, 55.61518f), medical_terminal), owning_building_guid = 45) - LocalObject(2198, ProximityTerminal.Constructor(Vector3(3054.195f, 2209.89f, 78.72318f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2199, Terminal.Constructor(Vector3(3054.195f, 2209.89f, 78.72318f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2201, ProximityTerminal.Constructor(Vector3(3071.32f, 2225.749f, 85.96218f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2202, Terminal.Constructor(Vector3(3071.32f, 2225.749f, 85.96218f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2204, ProximityTerminal.Constructor(Vector3(3092.78f, 2172.758f, 81.16718f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2205, Terminal.Constructor(Vector3(3092.78f, 2172.758f, 81.16718f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2207, ProximityTerminal.Constructor(Vector3(3108.914f, 2166.182f, 78.72318f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2208, Terminal.Constructor(Vector3(3108.914f, 2166.182f, 78.72318f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2210, ProximityTerminal.Constructor(Vector3(3112.734f, 2295.711f, 78.71018f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2211, Terminal.Constructor(Vector3(3112.734f, 2295.711f, 78.71018f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2213, ProximityTerminal.Constructor(Vector3(3128.55f, 2275.156f, 81.06519f), pad_landing_frame), owning_building_guid = 45) - LocalObject(2214, Terminal.Constructor(Vector3(3128.55f, 2275.156f, 81.06519f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(2579, ProximityTerminal.Constructor(Vector3(3042.198f, 2176.992f, 70.26518f), repair_silo), owning_building_guid = 45) - LocalObject(2580, Terminal.Constructor(Vector3(3042.198f, 2176.992f, 70.26518f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(2583, ProximityTerminal.Constructor(Vector3(3177.625f, 2232.965f, 70.24368f), repair_silo), owning_building_guid = 45) - LocalObject(2584, Terminal.Constructor(Vector3(3177.625f, 2232.965f, 70.24368f), ground_rearm_terminal), owning_building_guid = 45) - LocalObject(1792, FacilityTurret.Constructor(Vector3(3035.168f, 2149.593f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 2692, + SpawnTube.Constructor(Vector3(3092.476f, 2222.525f, 63.11518f), Vector3(0, 0, 91)), + owning_building_guid = 45 + ) + LocalObject( + 2695, + SpawnTube.Constructor(Vector3(3099.766f, 2222.398f, 63.11518f), Vector3(0, 0, 91)), + owning_building_guid = 45 + ) + LocalObject( + 2696, + SpawnTube.Constructor(Vector3(3107.053f, 2222.271f, 63.11518f), Vector3(0, 0, 91)), + owning_building_guid = 45 + ) + LocalObject( + 1902, + ProximityTerminal.Constructor(Vector3(3098.853f, 2231.589f, 75.61218f), medical_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1903, + ProximityTerminal.Constructor(Vector3(3108.918f, 2194.022f, 55.61518f), medical_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2198, + ProximityTerminal.Constructor(Vector3(3054.195f, 2209.89f, 78.72318f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2199, + Terminal.Constructor(Vector3(3054.195f, 2209.89f, 78.72318f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2201, + ProximityTerminal.Constructor(Vector3(3071.32f, 2225.749f, 85.96218f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2202, + Terminal.Constructor(Vector3(3071.32f, 2225.749f, 85.96218f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2204, + ProximityTerminal.Constructor(Vector3(3092.78f, 2172.758f, 81.16718f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2205, + Terminal.Constructor(Vector3(3092.78f, 2172.758f, 81.16718f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2207, + ProximityTerminal.Constructor(Vector3(3108.914f, 2166.182f, 78.72318f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2208, + Terminal.Constructor(Vector3(3108.914f, 2166.182f, 78.72318f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2210, + ProximityTerminal.Constructor(Vector3(3112.734f, 2295.711f, 78.71018f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2211, + Terminal.Constructor(Vector3(3112.734f, 2295.711f, 78.71018f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2213, + ProximityTerminal.Constructor(Vector3(3128.55f, 2275.156f, 81.06519f), pad_landing_frame), + owning_building_guid = 45 + ) + LocalObject( + 2214, + Terminal.Constructor(Vector3(3128.55f, 2275.156f, 81.06519f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2579, + ProximityTerminal.Constructor(Vector3(3042.198f, 2176.992f, 70.26518f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 2580, + Terminal.Constructor(Vector3(3042.198f, 2176.992f, 70.26518f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2583, + ProximityTerminal.Constructor(Vector3(3177.625f, 2232.965f, 70.24368f), repair_silo), + owning_building_guid = 45 + ) + LocalObject( + 2584, + Terminal.Constructor(Vector3(3177.625f, 2232.965f, 70.24368f), ground_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1792, + FacilityTurret.Constructor(Vector3(3035.168f, 2149.593f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1792, 5052) - LocalObject(1793, FacilityTurret.Constructor(Vector3(3038.052f, 2314.309f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 1793, + FacilityTurret.Constructor(Vector3(3038.052f, 2314.309f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1793, 5053) - LocalObject(1794, FacilityTurret.Constructor(Vector3(3099.79f, 2140.737f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 1794, + FacilityTurret.Constructor(Vector3(3099.79f, 2140.737f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1794, 5054) - LocalObject(1795, FacilityTurret.Constructor(Vector3(3172.889f, 2147.189f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 1795, + FacilityTurret.Constructor(Vector3(3172.889f, 2147.189f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1795, 5055) - LocalObject(1800, FacilityTurret.Constructor(Vector3(3234.742f, 2226.675f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 1800, + FacilityTurret.Constructor(Vector3(3234.742f, 2226.675f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1800, 5056) - LocalObject(1802, FacilityTurret.Constructor(Vector3(3236.308f, 2316.356f, 79.01418f), manned_turret), owning_building_guid = 45) + LocalObject( + 1802, + FacilityTurret.Constructor(Vector3(3236.308f, 2316.356f, 79.01418f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1802, 5057) - LocalObject(2381, Painbox.Constructor(Vector3(3131.758f, 2208.333f, 59.08848f), painbox), owning_building_guid = 45) - LocalObject(2393, Painbox.Constructor(Vector3(3098.854f, 2213.813f, 67.38509f), painbox_continuous), owning_building_guid = 45) - LocalObject(2405, Painbox.Constructor(Vector3(3116.991f, 2206.628f, 58.77458f), painbox_door_radius), owning_building_guid = 45) - LocalObject(2423, Painbox.Constructor(Vector3(3085.954f, 2215.836f, 65.24308f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(2424, Painbox.Constructor(Vector3(3105.952f, 2198.878f, 66.69748f), painbox_door_radius_continuous), owning_building_guid = 45) - LocalObject(2425, Painbox.Constructor(Vector3(3113.426f, 2214.531f, 65.79138f), painbox_door_radius_continuous), owning_building_guid = 45) + LocalObject( + 2381, + Painbox.Constructor(Vector3(3131.758f, 2208.333f, 59.08848f), painbox), + owning_building_guid = 45 + ) + LocalObject( + 2393, + Painbox.Constructor(Vector3(3098.854f, 2213.813f, 67.38509f), painbox_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2405, + Painbox.Constructor(Vector3(3116.991f, 2206.628f, 58.77458f), painbox_door_radius), + owning_building_guid = 45 + ) + LocalObject( + 2423, + Painbox.Constructor(Vector3(3085.954f, 2215.836f, 65.24308f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2424, + Painbox.Constructor(Vector3(3105.952f, 2198.878f, 66.69748f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 2425, + Painbox.Constructor(Vector3(3113.426f, 2214.531f, 65.79138f), painbox_door_radius_continuous), + owning_building_guid = 45 + ) LocalObject(303, Generator.Constructor(Vector3(3135.067f, 2206.037f, 54.32118f)), owning_building_guid = 45) - LocalObject(291, Terminal.Constructor(Vector3(3126.875f, 2206.133f, 55.61518f), gen_control), owning_building_guid = 45) + LocalObject( + 291, + Terminal.Constructor(Vector3(3126.875f, 2206.133f, 55.61518f), gen_control), + owning_building_guid = 45 + ) } Building9() def Building9(): Unit = { // Name: Girru Type: tech_plant GUID: 48, MapID: 9 - LocalBuilding("Girru", 48, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4386f, 5932f, 77.53156f), Vector3(0f, 0f, 358f), tech_plant))) - LocalObject(225, CaptureTerminal.Constructor(Vector3(4389.192f, 5887.772f, 92.63155f), capture_terminal), owning_building_guid = 48) + LocalBuilding( + "Girru", + 48, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4386f, 5932f, 77.53156f), + Vector3(0f, 0f, 358f), + tech_plant + ) + ) + ) + LocalObject( + 225, + CaptureTerminal.Constructor(Vector3(4389.192f, 5887.772f, 92.63155f), capture_terminal), + owning_building_guid = 48 + ) LocalObject(515, Door.Constructor(Vector3(4312.138f, 5864.466f, 79.07355f)), owning_building_guid = 48) LocalObject(516, Door.Constructor(Vector3(4312.773f, 5882.646f, 87.03655f)), owning_building_guid = 48) LocalObject(517, Door.Constructor(Vector3(4314.712f, 5938.165f, 79.07355f)), owning_building_guid = 48) @@ -1529,16 +4346,66 @@ object Map04 { // Ishundar LocalObject(2948, Door.Constructor(Vector3(4397.19f, 5889.316f, 71.98556f)), owning_building_guid = 48) LocalObject(2949, Door.Constructor(Vector3(4397.445f, 5896.605f, 71.98556f)), owning_building_guid = 48) LocalObject(2950, Door.Constructor(Vector3(4397.699f, 5903.89f, 71.98556f)), owning_building_guid = 48) - LocalObject(973, IFFLock.Constructor(Vector3(4427.642f, 5882.119f, 79.11156f), Vector3(0, 0, 182)), owning_building_guid = 48, door_guid = 925) - LocalObject(980, IFFLock.Constructor(Vector3(4344.76f, 5975.819f, 79.21956f), Vector3(0, 0, 362)), owning_building_guid = 48, door_guid = 653) - LocalObject(1142, IFFLock.Constructor(Vector3(4341.649f, 5831.44f, 79.08356f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 519) - LocalObject(1143, IFFLock.Constructor(Vector3(4379.068f, 5893.158f, 93.96756f), Vector3(0, 0, 2)), owning_building_guid = 48, door_guid = 817) - LocalObject(1144, IFFLock.Constructor(Vector3(4393.759f, 5909.098f, 94.07755f), Vector3(0, 0, 2)), owning_building_guid = 48, door_guid = 522) - LocalObject(1145, IFFLock.Constructor(Vector3(4403.607f, 5908.181f, 71.46755f), Vector3(0, 0, 2)), owning_building_guid = 48, door_guid = 825) - LocalObject(1146, IFFLock.Constructor(Vector3(4404.08f, 5891.119f, 94.07755f), Vector3(0, 0, 182)), owning_building_guid = 48, door_guid = 523) - LocalObject(1147, IFFLock.Constructor(Vector3(4405.855f, 5882.467f, 71.46755f), Vector3(0, 0, 182)), owning_building_guid = 48, door_guid = 824) - LocalObject(1148, IFFLock.Constructor(Vector3(4414.963f, 5914.035f, 63.96756f), Vector3(0, 0, 182)), owning_building_guid = 48, door_guid = 826) - LocalObject(1149, IFFLock.Constructor(Vector3(4415.451f, 5885.372f, 63.96756f), Vector3(0, 0, 272)), owning_building_guid = 48, door_guid = 827) + LocalObject( + 973, + IFFLock.Constructor(Vector3(4427.642f, 5882.119f, 79.11156f), Vector3(0, 0, 182)), + owning_building_guid = 48, + door_guid = 925 + ) + LocalObject( + 980, + IFFLock.Constructor(Vector3(4344.76f, 5975.819f, 79.21956f), Vector3(0, 0, 362)), + owning_building_guid = 48, + door_guid = 653 + ) + LocalObject( + 1142, + IFFLock.Constructor(Vector3(4341.649f, 5831.44f, 79.08356f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 519 + ) + LocalObject( + 1143, + IFFLock.Constructor(Vector3(4379.068f, 5893.158f, 93.96756f), Vector3(0, 0, 2)), + owning_building_guid = 48, + door_guid = 817 + ) + LocalObject( + 1144, + IFFLock.Constructor(Vector3(4393.759f, 5909.098f, 94.07755f), Vector3(0, 0, 2)), + owning_building_guid = 48, + door_guid = 522 + ) + LocalObject( + 1145, + IFFLock.Constructor(Vector3(4403.607f, 5908.181f, 71.46755f), Vector3(0, 0, 2)), + owning_building_guid = 48, + door_guid = 825 + ) + LocalObject( + 1146, + IFFLock.Constructor(Vector3(4404.08f, 5891.119f, 94.07755f), Vector3(0, 0, 182)), + owning_building_guid = 48, + door_guid = 523 + ) + LocalObject( + 1147, + IFFLock.Constructor(Vector3(4405.855f, 5882.467f, 71.46755f), Vector3(0, 0, 182)), + owning_building_guid = 48, + door_guid = 824 + ) + LocalObject( + 1148, + IFFLock.Constructor(Vector3(4414.963f, 5914.035f, 63.96756f), Vector3(0, 0, 182)), + owning_building_guid = 48, + door_guid = 826 + ) + LocalObject( + 1149, + IFFLock.Constructor(Vector3(4415.451f, 5885.372f, 63.96756f), Vector3(0, 0, 272)), + owning_building_guid = 48, + door_guid = 827 + ) LocalObject(1517, Locker.Constructor(Vector3(4407.948f, 5885.347f, 70.39256f)), owning_building_guid = 48) LocalObject(1518, Locker.Constructor(Vector3(4409.111f, 5885.306f, 70.39256f)), owning_building_guid = 48) LocalObject(1519, Locker.Constructor(Vector3(4410.258f, 5885.266f, 70.39256f)), owning_building_guid = 48) @@ -1551,72 +4418,295 @@ object Map04 { // Ishundar LocalObject(1530, Locker.Constructor(Vector3(4429.126f, 5904.643f, 62.63155f)), owning_building_guid = 48) LocalObject(1533, Locker.Constructor(Vector3(4430.462f, 5904.597f, 62.63155f)), owning_building_guid = 48) LocalObject(1538, Locker.Constructor(Vector3(4431.798f, 5904.55f, 62.63155f)), owning_building_guid = 48) - LocalObject(176, Terminal.Constructor(Vector3(4389.803f, 5906.993f, 93.23456f), air_vehicle_terminal), owning_building_guid = 48) - LocalObject(1889, VehicleSpawnPad.Constructor(Vector3(4385.925f, 5927.835f, 90.10956f), mb_pad_creation, Vector3(0, 0, 2)), owning_building_guid = 48, terminal_guid = 176) - LocalObject(177, Terminal.Constructor(Vector3(4401.728f, 5906.577f, 93.23456f), air_vehicle_terminal), owning_building_guid = 48) - LocalObject(1890, VehicleSpawnPad.Constructor(Vector3(4406.93f, 5927.102f, 90.10956f), mb_pad_creation, Vector3(0, 0, 2)), owning_building_guid = 48, terminal_guid = 177) - LocalObject(2014, Terminal.Constructor(Vector3(4388.131f, 5905.396f, 83.96156f), order_terminal), owning_building_guid = 48) - LocalObject(2015, Terminal.Constructor(Vector3(4411.221f, 5890.502f, 71.72156f), order_terminal), owning_building_guid = 48) - LocalObject(2016, Terminal.Constructor(Vector3(4411.352f, 5894.231f, 71.72156f), order_terminal), owning_building_guid = 48) - LocalObject(2017, Terminal.Constructor(Vector3(4411.483f, 5898.018f, 71.72156f), order_terminal), owning_building_guid = 48) - LocalObject(2853, Terminal.Constructor(Vector3(4358.627f, 5837.489f, 71.68855f), spawn_terminal), owning_building_guid = 48) - LocalObject(2854, Terminal.Constructor(Vector3(4392.283f, 5884.343f, 64.18855f), spawn_terminal), owning_building_guid = 48) - LocalObject(2855, Terminal.Constructor(Vector3(4397.401f, 5886.817f, 72.26556f), spawn_terminal), owning_building_guid = 48) - LocalObject(2856, Terminal.Constructor(Vector3(4397.651f, 5894.105f, 72.26556f), spawn_terminal), owning_building_guid = 48) - LocalObject(2857, Terminal.Constructor(Vector3(4397.909f, 5901.389f, 72.26556f), spawn_terminal), owning_building_guid = 48) - LocalObject(2858, Terminal.Constructor(Vector3(4400.635f, 5934.706f, 89.55456f), spawn_terminal), owning_building_guid = 48) - LocalObject(2859, Terminal.Constructor(Vector3(4422.509f, 5910.352f, 84.21355f), spawn_terminal), owning_building_guid = 48) - LocalObject(3072, Terminal.Constructor(Vector3(4336.609f, 5893.123f, 63.34555f), ground_vehicle_terminal), owning_building_guid = 48) - LocalObject(1888, VehicleSpawnPad.Constructor(Vector3(4336.939f, 5904.034f, 55.06856f), mb_pad_creation, Vector3(0, 0, 2)), owning_building_guid = 48, terminal_guid = 3072) + LocalObject( + 176, + Terminal.Constructor(Vector3(4389.803f, 5906.993f, 93.23456f), air_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1889, + VehicleSpawnPad.Constructor(Vector3(4385.925f, 5927.835f, 90.10956f), mb_pad_creation, Vector3(0, 0, 2)), + owning_building_guid = 48, + terminal_guid = 176 + ) + LocalObject( + 177, + Terminal.Constructor(Vector3(4401.728f, 5906.577f, 93.23456f), air_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1890, + VehicleSpawnPad.Constructor(Vector3(4406.93f, 5927.102f, 90.10956f), mb_pad_creation, Vector3(0, 0, 2)), + owning_building_guid = 48, + terminal_guid = 177 + ) + LocalObject( + 2014, + Terminal.Constructor(Vector3(4388.131f, 5905.396f, 83.96156f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2015, + Terminal.Constructor(Vector3(4411.221f, 5890.502f, 71.72156f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2016, + Terminal.Constructor(Vector3(4411.352f, 5894.231f, 71.72156f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2017, + Terminal.Constructor(Vector3(4411.483f, 5898.018f, 71.72156f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2853, + Terminal.Constructor(Vector3(4358.627f, 5837.489f, 71.68855f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2854, + Terminal.Constructor(Vector3(4392.283f, 5884.343f, 64.18855f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2855, + Terminal.Constructor(Vector3(4397.401f, 5886.817f, 72.26556f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2856, + Terminal.Constructor(Vector3(4397.651f, 5894.105f, 72.26556f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2857, + Terminal.Constructor(Vector3(4397.909f, 5901.389f, 72.26556f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2858, + Terminal.Constructor(Vector3(4400.635f, 5934.706f, 89.55456f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2859, + Terminal.Constructor(Vector3(4422.509f, 5910.352f, 84.21355f), spawn_terminal), + owning_building_guid = 48 + ) + LocalObject( + 3072, + Terminal.Constructor(Vector3(4336.609f, 5893.123f, 63.34555f), ground_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1888, + VehicleSpawnPad.Constructor(Vector3(4336.939f, 5904.034f, 55.06856f), mb_pad_creation, Vector3(0, 0, 2)), + owning_building_guid = 48, + terminal_guid = 3072 + ) LocalObject(2658, ResourceSilo.Constructor(Vector3(4448.851f, 5962.38f, 84.53956f)), owning_building_guid = 48) - LocalObject(2724, SpawnTube.Constructor(Vector3(4396.714f, 5888.282f, 70.13155f), Vector3(0, 0, 2)), owning_building_guid = 48) - LocalObject(2725, SpawnTube.Constructor(Vector3(4396.968f, 5895.569f, 70.13155f), Vector3(0, 0, 2)), owning_building_guid = 48) - LocalObject(2726, SpawnTube.Constructor(Vector3(4397.223f, 5902.853f, 70.13155f), Vector3(0, 0, 2)), owning_building_guid = 48) - LocalObject(1909, ProximityTerminal.Constructor(Vector3(4387.762f, 5894.817f, 82.62856f), medical_terminal), owning_building_guid = 48) - LocalObject(1910, ProximityTerminal.Constructor(Vector3(4425.499f, 5904.225f, 62.63155f), medical_terminal), owning_building_guid = 48) - LocalObject(2243, ProximityTerminal.Constructor(Vector3(4323.892f, 5909.815f, 85.72655f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2244, Terminal.Constructor(Vector3(4323.892f, 5909.815f, 85.72655f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2246, ProximityTerminal.Constructor(Vector3(4344.72f, 5925.27f, 88.08156f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2247, Terminal.Constructor(Vector3(4344.72f, 5925.27f, 88.08156f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2249, ProximityTerminal.Constructor(Vector3(4393.122f, 5867.186f, 92.97855f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2250, Terminal.Constructor(Vector3(4393.122f, 5867.186f, 92.97855f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2252, ProximityTerminal.Constructor(Vector3(4408.679f, 5849.787f, 85.73956f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2253, Terminal.Constructor(Vector3(4408.679f, 5849.787f, 85.73956f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2255, ProximityTerminal.Constructor(Vector3(4446.479f, 5887.717f, 88.18356f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2256, Terminal.Constructor(Vector3(4446.479f, 5887.717f, 88.18356f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2258, ProximityTerminal.Constructor(Vector3(4453.334f, 5903.735f, 85.73956f), pad_landing_frame), owning_building_guid = 48) - LocalObject(2259, Terminal.Constructor(Vector3(4453.334f, 5903.735f, 85.73956f), air_rearm_terminal), owning_building_guid = 48) - LocalObject(2611, ProximityTerminal.Constructor(Vector3(4387.762f, 5973.601f, 77.26006f), repair_silo), owning_building_guid = 48) - LocalObject(2612, Terminal.Constructor(Vector3(4387.762f, 5973.601f, 77.26006f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(2615, ProximityTerminal.Constructor(Vector3(4441.362f, 5837.218f, 77.28156f), repair_silo), owning_building_guid = 48) - LocalObject(2616, Terminal.Constructor(Vector3(4441.362f, 5837.218f, 77.28156f), ground_rearm_terminal), owning_building_guid = 48) - LocalObject(1829, FacilityTurret.Constructor(Vector3(4303.994f, 5835.468f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 2724, + SpawnTube.Constructor(Vector3(4396.714f, 5888.282f, 70.13155f), Vector3(0, 0, 2)), + owning_building_guid = 48 + ) + LocalObject( + 2725, + SpawnTube.Constructor(Vector3(4396.968f, 5895.569f, 70.13155f), Vector3(0, 0, 2)), + owning_building_guid = 48 + ) + LocalObject( + 2726, + SpawnTube.Constructor(Vector3(4397.223f, 5902.853f, 70.13155f), Vector3(0, 0, 2)), + owning_building_guid = 48 + ) + LocalObject( + 1909, + ProximityTerminal.Constructor(Vector3(4387.762f, 5894.817f, 82.62856f), medical_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1910, + ProximityTerminal.Constructor(Vector3(4425.499f, 5904.225f, 62.63155f), medical_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2243, + ProximityTerminal.Constructor(Vector3(4323.892f, 5909.815f, 85.72655f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2244, + Terminal.Constructor(Vector3(4323.892f, 5909.815f, 85.72655f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2246, + ProximityTerminal.Constructor(Vector3(4344.72f, 5925.27f, 88.08156f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2247, + Terminal.Constructor(Vector3(4344.72f, 5925.27f, 88.08156f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2249, + ProximityTerminal.Constructor(Vector3(4393.122f, 5867.186f, 92.97855f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2250, + Terminal.Constructor(Vector3(4393.122f, 5867.186f, 92.97855f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2252, + ProximityTerminal.Constructor(Vector3(4408.679f, 5849.787f, 85.73956f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2253, + Terminal.Constructor(Vector3(4408.679f, 5849.787f, 85.73956f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2255, + ProximityTerminal.Constructor(Vector3(4446.479f, 5887.717f, 88.18356f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2256, + Terminal.Constructor(Vector3(4446.479f, 5887.717f, 88.18356f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2258, + ProximityTerminal.Constructor(Vector3(4453.334f, 5903.735f, 85.73956f), pad_landing_frame), + owning_building_guid = 48 + ) + LocalObject( + 2259, + Terminal.Constructor(Vector3(4453.334f, 5903.735f, 85.73956f), air_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2611, + ProximityTerminal.Constructor(Vector3(4387.762f, 5973.601f, 77.26006f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 2612, + Terminal.Constructor(Vector3(4387.762f, 5973.601f, 77.26006f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2615, + ProximityTerminal.Constructor(Vector3(4441.362f, 5837.218f, 77.28156f), repair_silo), + owning_building_guid = 48 + ) + LocalObject( + 2616, + Terminal.Constructor(Vector3(4441.362f, 5837.218f, 77.28156f), ground_rearm_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1829, + FacilityTurret.Constructor(Vector3(4303.994f, 5835.468f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1829, 5058) - LocalObject(1830, FacilityTurret.Constructor(Vector3(4305.407f, 6033.729f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 1830, + FacilityTurret.Constructor(Vector3(4305.407f, 6033.729f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1830, 5059) - LocalObject(1831, FacilityTurret.Constructor(Vector3(4395.047f, 6030.599f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 1831, + FacilityTurret.Constructor(Vector3(4395.047f, 6030.599f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1831, 5060) - LocalObject(1834, FacilityTurret.Constructor(Vector3(4468.634f, 5829.711f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 1834, + FacilityTurret.Constructor(Vector3(4468.634f, 5829.711f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1834, 5061) - LocalObject(1835, FacilityTurret.Constructor(Vector3(4473.441f, 5967.368f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 1835, + FacilityTurret.Constructor(Vector3(4473.441f, 5967.368f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1835, 5062) - LocalObject(1836, FacilityTurret.Constructor(Vector3(4478.617f, 5894.167f, 86.03056f), manned_turret), owning_building_guid = 48) + LocalObject( + 1836, + FacilityTurret.Constructor(Vector3(4478.617f, 5894.167f, 86.03056f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1836, 5063) - LocalObject(2385, Painbox.Constructor(Vector3(4411.589f, 5927.311f, 66.10486f), painbox), owning_building_guid = 48) - LocalObject(2397, Painbox.Constructor(Vector3(4405.536f, 5894.508f, 74.40146f), painbox_continuous), owning_building_guid = 48) - LocalObject(2409, Painbox.Constructor(Vector3(4413.036f, 5912.516f, 65.79095f), painbox_door_radius), owning_building_guid = 48) - LocalObject(2435, Painbox.Constructor(Vector3(4403.288f, 5881.645f, 72.25945f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2436, Painbox.Constructor(Vector3(4405.073f, 5909.089f, 72.80775f), painbox_door_radius_continuous), owning_building_guid = 48) - LocalObject(2437, Painbox.Constructor(Vector3(4420.592f, 5901.344f, 73.71385f), painbox_door_radius_continuous), owning_building_guid = 48) + LocalObject( + 2385, + Painbox.Constructor(Vector3(4411.589f, 5927.311f, 66.10486f), painbox), + owning_building_guid = 48 + ) + LocalObject( + 2397, + Painbox.Constructor(Vector3(4405.536f, 5894.508f, 74.40146f), painbox_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2409, + Painbox.Constructor(Vector3(4413.036f, 5912.516f, 65.79095f), painbox_door_radius), + owning_building_guid = 48 + ) + LocalObject( + 2435, + Painbox.Constructor(Vector3(4403.288f, 5881.645f, 72.25945f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2436, + Painbox.Constructor(Vector3(4405.073f, 5909.089f, 72.80775f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 2437, + Painbox.Constructor(Vector3(4420.592f, 5901.344f, 73.71385f), painbox_door_radius_continuous), + owning_building_guid = 48 + ) LocalObject(307, Generator.Constructor(Vector3(4413.942f, 5930.579f, 61.33755f)), owning_building_guid = 48) - LocalObject(295, Terminal.Constructor(Vector3(4413.704f, 5922.39f, 62.63155f), gen_control), owning_building_guid = 48) + LocalObject( + 295, + Terminal.Constructor(Vector3(4413.704f, 5922.39f, 62.63155f), gen_control), + owning_building_guid = 48 + ) } Building12() def Building12(): Unit = { // Name: Kusag Type: tech_plant GUID: 51, MapID: 12 - LocalBuilding("Kusag", 51, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6560f, 4574f, 45.59388f), Vector3(0f, 0f, 141f), tech_plant))) - LocalObject(228, CaptureTerminal.Constructor(Vector3(6584.067f, 4611.243f, 60.69388f), capture_terminal), owning_building_guid = 51) + LocalBuilding( + "Kusag", + 51, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6560f, 4574f, 45.59388f), + Vector3(0f, 0f, 141f), + tech_plant + ) + ) + ) + LocalObject( + 228, + CaptureTerminal.Constructor(Vector3(6584.067f, 4611.243f, 60.69388f), capture_terminal), + owning_building_guid = 51 + ) LocalObject(617, Door.Constructor(Vector3(6496.635f, 4621.314f, 47.13588f)), owning_building_guid = 51) LocalObject(618, Door.Constructor(Vector3(6507.099f, 4576.606f, 55.09888f)), owning_building_guid = 51) LocalObject(619, Door.Constructor(Vector3(6508.084f, 4635.453f, 55.09888f)), owning_building_guid = 51) @@ -1655,16 +4745,66 @@ object Map04 { // Ishundar LocalObject(2983, Door.Constructor(Vector3(6567.574f, 4603.491f, 40.04787f)), owning_building_guid = 51) LocalObject(2984, Door.Constructor(Vector3(6572.161f, 4609.155f, 40.04787f)), owning_building_guid = 51) LocalObject(2985, Door.Constructor(Vector3(6576.75f, 4614.823f, 40.04787f)), owning_building_guid = 51) - LocalObject(976, IFFLock.Constructor(Vector3(6556.763f, 4638.897f, 47.17388f), Vector3(0, 0, 39)), owning_building_guid = 51, door_guid = 928) - LocalObject(981, IFFLock.Constructor(Vector3(6566.565f, 4514.186f, 47.28188f), Vector3(0, 0, 219)), owning_building_guid = 51, door_guid = 654) - LocalObject(1231, IFFLock.Constructor(Vector3(6547.681f, 4605.777f, 32.02988f), Vector3(0, 0, 39)), owning_building_guid = 51, door_guid = 876) - LocalObject(1232, IFFLock.Constructor(Vector3(6560.272f, 4603.619f, 39.52988f), Vector3(0, 0, 219)), owning_building_guid = 51, door_guid = 878) - LocalObject(1233, IFFLock.Constructor(Vector3(6564.541f, 4628.963f, 32.02988f), Vector3(0, 0, 129)), owning_building_guid = 51, door_guid = 879) - LocalObject(1234, IFFLock.Constructor(Vector3(6567.585f, 4596.96f, 62.13988f), Vector3(0, 0, 219)), owning_building_guid = 51, door_guid = 621) - LocalObject(1235, IFFLock.Constructor(Vector3(6570.163f, 4617.53f, 62.13988f), Vector3(0, 0, 39)), owning_building_guid = 51, door_guid = 622) - LocalObject(1236, IFFLock.Constructor(Vector3(6573.953f, 4625.508f, 39.52988f), Vector3(0, 0, 39)), owning_building_guid = 51, door_guid = 881) - LocalObject(1237, IFFLock.Constructor(Vector3(6588.912f, 4600.849f, 62.02988f), Vector3(0, 0, 219)), owning_building_guid = 51, door_guid = 887) - LocalObject(1238, IFFLock.Constructor(Vector3(6655.938f, 4627.62f, 47.14587f), Vector3(0, 0, 129)), owning_building_guid = 51, door_guid = 628) + LocalObject( + 976, + IFFLock.Constructor(Vector3(6556.763f, 4638.897f, 47.17388f), Vector3(0, 0, 39)), + owning_building_guid = 51, + door_guid = 928 + ) + LocalObject( + 981, + IFFLock.Constructor(Vector3(6566.565f, 4514.186f, 47.28188f), Vector3(0, 0, 219)), + owning_building_guid = 51, + door_guid = 654 + ) + LocalObject( + 1231, + IFFLock.Constructor(Vector3(6547.681f, 4605.777f, 32.02988f), Vector3(0, 0, 39)), + owning_building_guid = 51, + door_guid = 876 + ) + LocalObject( + 1232, + IFFLock.Constructor(Vector3(6560.272f, 4603.619f, 39.52988f), Vector3(0, 0, 219)), + owning_building_guid = 51, + door_guid = 878 + ) + LocalObject( + 1233, + IFFLock.Constructor(Vector3(6564.541f, 4628.963f, 32.02988f), Vector3(0, 0, 129)), + owning_building_guid = 51, + door_guid = 879 + ) + LocalObject( + 1234, + IFFLock.Constructor(Vector3(6567.585f, 4596.96f, 62.13988f), Vector3(0, 0, 219)), + owning_building_guid = 51, + door_guid = 621 + ) + LocalObject( + 1235, + IFFLock.Constructor(Vector3(6570.163f, 4617.53f, 62.13988f), Vector3(0, 0, 39)), + owning_building_guid = 51, + door_guid = 622 + ) + LocalObject( + 1236, + IFFLock.Constructor(Vector3(6573.953f, 4625.508f, 39.52988f), Vector3(0, 0, 39)), + owning_building_guid = 51, + door_guid = 881 + ) + LocalObject( + 1237, + IFFLock.Constructor(Vector3(6588.912f, 4600.849f, 62.02988f), Vector3(0, 0, 219)), + owning_building_guid = 51, + door_guid = 887 + ) + LocalObject( + 1238, + IFFLock.Constructor(Vector3(6655.938f, 4627.62f, 47.14587f), Vector3(0, 0, 129)), + owning_building_guid = 51, + door_guid = 628 + ) LocalObject(1666, Locker.Constructor(Vector3(6539.944f, 4623.484f, 30.69388f)), owning_building_guid = 51) LocalObject(1667, Locker.Constructor(Vector3(6540.983f, 4622.643f, 30.69388f)), owning_building_guid = 51) LocalObject(1668, Locker.Constructor(Vector3(6542.021f, 4621.802f, 30.69388f)), owning_building_guid = 51) @@ -1677,82 +4817,320 @@ object Map04 { // Ishundar LocalObject(1675, Locker.Constructor(Vector3(6568.752f, 4625.922f, 38.45488f)), owning_building_guid = 51) LocalObject(1676, Locker.Constructor(Vector3(6569.644f, 4625.2f, 38.45488f)), owning_building_guid = 51) LocalObject(1677, Locker.Constructor(Vector3(6570.548f, 4624.468f, 38.45488f)), owning_building_guid = 51) - LocalObject(178, Terminal.Constructor(Vector3(6562.74f, 4603.769f, 61.29688f), air_vehicle_terminal), owning_building_guid = 51) - LocalObject(1893, VehicleSpawnPad.Constructor(Vector3(6546.232f, 4590.508f, 58.17188f), mb_pad_creation, Vector3(0, 0, 219)), owning_building_guid = 51, terminal_guid = 178) - LocalObject(179, Terminal.Constructor(Vector3(6572.013f, 4596.26f, 61.29688f), air_vehicle_terminal), owning_building_guid = 51) - LocalObject(1894, VehicleSpawnPad.Constructor(Vector3(6562.567f, 4577.281f, 58.17188f), mb_pad_creation, Vector3(0, 0, 219)), owning_building_guid = 51, terminal_guid = 179) - LocalObject(2068, Terminal.Constructor(Vector3(6560.099f, 4616.476f, 39.78387f), order_terminal), owning_building_guid = 51) - LocalObject(2069, Terminal.Constructor(Vector3(6562.483f, 4619.42f, 39.78387f), order_terminal), owning_building_guid = 51) - LocalObject(2070, Terminal.Constructor(Vector3(6564.832f, 4622.32f, 39.78387f), order_terminal), owning_building_guid = 51) - LocalObject(2071, Terminal.Constructor(Vector3(6574.309f, 4596.53f, 52.02388f), order_terminal), owning_building_guid = 51) - LocalObject(2873, Terminal.Constructor(Vector3(6543.871f, 4613.261f, 52.27588f), spawn_terminal), owning_building_guid = 51) - LocalObject(2874, Terminal.Constructor(Vector3(6546.683f, 4580.647f, 57.61687f), spawn_terminal), owning_building_guid = 51) - LocalObject(2875, Terminal.Constructor(Vector3(6568.912f, 4605.614f, 40.32788f), spawn_terminal), owning_building_guid = 51) - LocalObject(2876, Terminal.Constructor(Vector3(6573.5f, 4611.276f, 40.32788f), spawn_terminal), owning_building_guid = 51) - LocalObject(2877, Terminal.Constructor(Vector3(6578.086f, 4616.946f, 40.32788f), spawn_terminal), owning_building_guid = 51) - LocalObject(2878, Terminal.Constructor(Vector3(6583.664f, 4615.842f, 32.25088f), spawn_terminal), owning_building_guid = 51) - LocalObject(2879, Terminal.Constructor(Vector3(6638.739f, 4633.006f, 39.75088f), spawn_terminal), owning_building_guid = 51) - LocalObject(3075, Terminal.Constructor(Vector3(6622.842f, 4575.324f, 31.40788f), ground_vehicle_terminal), owning_building_guid = 51) - LocalObject(1895, VehicleSpawnPad.Constructor(Vector3(6616.012f, 4566.809f, 23.13088f), mb_pad_creation, Vector3(0, 0, 219)), owning_building_guid = 51, terminal_guid = 3075) + LocalObject( + 178, + Terminal.Constructor(Vector3(6562.74f, 4603.769f, 61.29688f), air_vehicle_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1893, + VehicleSpawnPad.Constructor(Vector3(6546.232f, 4590.508f, 58.17188f), mb_pad_creation, Vector3(0, 0, 219)), + owning_building_guid = 51, + terminal_guid = 178 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(6572.013f, 4596.26f, 61.29688f), air_vehicle_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1894, + VehicleSpawnPad.Constructor(Vector3(6562.567f, 4577.281f, 58.17188f), mb_pad_creation, Vector3(0, 0, 219)), + owning_building_guid = 51, + terminal_guid = 179 + ) + LocalObject( + 2068, + Terminal.Constructor(Vector3(6560.099f, 4616.476f, 39.78387f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2069, + Terminal.Constructor(Vector3(6562.483f, 4619.42f, 39.78387f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2070, + Terminal.Constructor(Vector3(6564.832f, 4622.32f, 39.78387f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2071, + Terminal.Constructor(Vector3(6574.309f, 4596.53f, 52.02388f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2873, + Terminal.Constructor(Vector3(6543.871f, 4613.261f, 52.27588f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2874, + Terminal.Constructor(Vector3(6546.683f, 4580.647f, 57.61687f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2875, + Terminal.Constructor(Vector3(6568.912f, 4605.614f, 40.32788f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2876, + Terminal.Constructor(Vector3(6573.5f, 4611.276f, 40.32788f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2877, + Terminal.Constructor(Vector3(6578.086f, 4616.946f, 40.32788f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2878, + Terminal.Constructor(Vector3(6583.664f, 4615.842f, 32.25088f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2879, + Terminal.Constructor(Vector3(6638.739f, 4633.006f, 39.75088f), spawn_terminal), + owning_building_guid = 51 + ) + LocalObject( + 3075, + Terminal.Constructor(Vector3(6622.842f, 4575.324f, 31.40788f), ground_vehicle_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1895, + VehicleSpawnPad.Constructor(Vector3(6616.012f, 4566.809f, 23.13088f), mb_pad_creation, Vector3(0, 0, 219)), + owning_building_guid = 51, + terminal_guid = 3075 + ) LocalObject(2661, ResourceSilo.Constructor(Vector3(6491.522f, 4587.562f, 52.60188f)), owning_building_guid = 51) - LocalObject(2759, SpawnTube.Constructor(Vector3(6568.579f, 4604.032f, 38.19387f), Vector3(0, 0, 219)), owning_building_guid = 51) - LocalObject(2760, SpawnTube.Constructor(Vector3(6573.165f, 4609.696f, 38.19387f), Vector3(0, 0, 219)), owning_building_guid = 51) - LocalObject(2761, SpawnTube.Constructor(Vector3(6577.753f, 4615.362f, 38.19387f), Vector3(0, 0, 219)), owning_building_guid = 51) - LocalObject(1914, ProximityTerminal.Constructor(Vector3(6545.17f, 4619.953f, 30.69388f), medical_terminal), owning_building_guid = 51) - LocalObject(1915, ProximityTerminal.Constructor(Vector3(6580.97f, 4604.756f, 50.69088f), medical_terminal), owning_building_guid = 51) - LocalObject(2276, ProximityTerminal.Constructor(Vector3(6523.234f, 4637.097f, 53.80188f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2277, Terminal.Constructor(Vector3(6523.234f, 4637.097f, 53.80188f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2279, ProximityTerminal.Constructor(Vector3(6538.35f, 4645.763f, 56.24588f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2280, Terminal.Constructor(Vector3(6538.35f, 4645.763f, 56.24588f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2282, ProximityTerminal.Constructor(Vector3(6591.365f, 4653.307f, 53.80188f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2283, Terminal.Constructor(Vector3(6591.365f, 4653.307f, 53.80188f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2285, ProximityTerminal.Constructor(Vector3(6593.319f, 4630.048f, 61.04087f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2286, Terminal.Constructor(Vector3(6593.319f, 4630.048f, 61.04087f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2288, ProximityTerminal.Constructor(Vector3(6597.018f, 4554.532f, 56.14388f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2289, Terminal.Constructor(Vector3(6597.018f, 4554.532f, 56.14388f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2291, ProximityTerminal.Constructor(Vector3(6622.953f, 4554.34f, 53.78888f), pad_landing_frame), owning_building_guid = 51) - LocalObject(2292, Terminal.Constructor(Vector3(6622.953f, 4554.34f, 53.78888f), air_rearm_terminal), owning_building_guid = 51) - LocalObject(2635, ProximityTerminal.Constructor(Vector3(6533.558f, 4541.836f, 45.32238f), repair_silo), owning_building_guid = 51) - LocalObject(2636, Terminal.Constructor(Vector3(6533.558f, 4541.836f, 45.32238f), ground_rearm_terminal), owning_building_guid = 51) - LocalObject(2639, ProximityTerminal.Constructor(Vector3(6572.827f, 4683.015f, 45.34388f), repair_silo), owning_building_guid = 51) - LocalObject(2640, Terminal.Constructor(Vector3(6572.827f, 4683.015f, 45.34388f), ground_rearm_terminal), owning_building_guid = 51) - LocalObject(1862, FacilityTurret.Constructor(Vector3(6468.881f, 4598.377f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 2759, + SpawnTube.Constructor(Vector3(6568.579f, 4604.032f, 38.19387f), Vector3(0, 0, 219)), + owning_building_guid = 51 + ) + LocalObject( + 2760, + SpawnTube.Constructor(Vector3(6573.165f, 4609.696f, 38.19387f), Vector3(0, 0, 219)), + owning_building_guid = 51 + ) + LocalObject( + 2761, + SpawnTube.Constructor(Vector3(6577.753f, 4615.362f, 38.19387f), Vector3(0, 0, 219)), + owning_building_guid = 51 + ) + LocalObject( + 1914, + ProximityTerminal.Constructor(Vector3(6545.17f, 4619.953f, 30.69388f), medical_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1915, + ProximityTerminal.Constructor(Vector3(6580.97f, 4604.756f, 50.69088f), medical_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2276, + ProximityTerminal.Constructor(Vector3(6523.234f, 4637.097f, 53.80188f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2277, + Terminal.Constructor(Vector3(6523.234f, 4637.097f, 53.80188f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2279, + ProximityTerminal.Constructor(Vector3(6538.35f, 4645.763f, 56.24588f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2280, + Terminal.Constructor(Vector3(6538.35f, 4645.763f, 56.24588f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2282, + ProximityTerminal.Constructor(Vector3(6591.365f, 4653.307f, 53.80188f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2283, + Terminal.Constructor(Vector3(6591.365f, 4653.307f, 53.80188f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2285, + ProximityTerminal.Constructor(Vector3(6593.319f, 4630.048f, 61.04087f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2286, + Terminal.Constructor(Vector3(6593.319f, 4630.048f, 61.04087f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2288, + ProximityTerminal.Constructor(Vector3(6597.018f, 4554.532f, 56.14388f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2289, + Terminal.Constructor(Vector3(6597.018f, 4554.532f, 56.14388f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2291, + ProximityTerminal.Constructor(Vector3(6622.953f, 4554.34f, 53.78888f), pad_landing_frame), + owning_building_guid = 51 + ) + LocalObject( + 2292, + Terminal.Constructor(Vector3(6622.953f, 4554.34f, 53.78888f), air_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2635, + ProximityTerminal.Constructor(Vector3(6533.558f, 4541.836f, 45.32238f), repair_silo), + owning_building_guid = 51 + ) + LocalObject( + 2636, + Terminal.Constructor(Vector3(6533.558f, 4541.836f, 45.32238f), ground_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2639, + ProximityTerminal.Constructor(Vector3(6572.827f, 4683.015f, 45.34388f), repair_silo), + owning_building_guid = 51 + ) + LocalObject( + 2640, + Terminal.Constructor(Vector3(6572.827f, 4683.015f, 45.34388f), ground_rearm_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1862, + FacilityTurret.Constructor(Vector3(6468.881f, 4598.377f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1862, 5064) - LocalObject(1863, FacilityTurret.Constructor(Vector3(6493.436f, 4500.7f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 1863, + FacilityTurret.Constructor(Vector3(6493.436f, 4500.7f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1863, 5065) - LocalObject(1864, FacilityTurret.Constructor(Vector3(6508.801f, 4659.953f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 1864, + FacilityTurret.Constructor(Vector3(6508.801f, 4659.953f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1864, 5066) - LocalObject(1865, FacilityTurret.Constructor(Vector3(6555.564f, 4705.422f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 1865, + FacilityTurret.Constructor(Vector3(6555.564f, 4705.422f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1865, 5067) - LocalObject(1866, FacilityTurret.Constructor(Vector3(6563.142f, 4444.253f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 1866, + FacilityTurret.Constructor(Vector3(6563.142f, 4444.253f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1866, 5068) - LocalObject(1867, FacilityTurret.Constructor(Vector3(6683.587f, 4601.741f, 54.09288f), manned_turret), owning_building_guid = 51) + LocalObject( + 1867, + FacilityTurret.Constructor(Vector3(6683.587f, 4601.741f, 54.09288f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1867, 5069) - LocalObject(2388, Painbox.Constructor(Vector3(6542.386f, 4593.145f, 34.16718f), painbox), owning_building_guid = 51) - LocalObject(2400, Painbox.Constructor(Vector3(6566.961f, 4615.7f, 42.46378f), painbox_continuous), owning_building_guid = 51) - LocalObject(2412, Painbox.Constructor(Vector3(6550.134f, 4605.832f, 33.85328f), painbox_door_radius), owning_building_guid = 51) - LocalObject(2444, Painbox.Constructor(Vector3(6550.823f, 4619.301f, 41.77618f), painbox_door_radius_continuous), owning_building_guid = 51) - LocalObject(2445, Painbox.Constructor(Vector3(6558.556f, 4603.775f, 40.87008f), painbox_door_radius_continuous), owning_building_guid = 51) - LocalObject(2446, Painbox.Constructor(Vector3(6576.498f, 4624.62f, 40.32178f), painbox_door_radius_continuous), owning_building_guid = 51) + LocalObject( + 2388, + Painbox.Constructor(Vector3(6542.386f, 4593.145f, 34.16718f), painbox), + owning_building_guid = 51 + ) + LocalObject( + 2400, + Painbox.Constructor(Vector3(6566.961f, 4615.7f, 42.46378f), painbox_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2412, + Painbox.Constructor(Vector3(6550.134f, 4605.832f, 33.85328f), painbox_door_radius), + owning_building_guid = 51 + ) + LocalObject( + 2444, + Painbox.Constructor(Vector3(6550.823f, 4619.301f, 41.77618f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2445, + Painbox.Constructor(Vector3(6558.556f, 4603.775f, 40.87008f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 2446, + Painbox.Constructor(Vector3(6576.498f, 4624.62f, 40.32178f), painbox_door_radius_continuous), + owning_building_guid = 51 + ) LocalObject(310, Generator.Constructor(Vector3(6538.54f, 4591.951f, 29.39988f)), owning_building_guid = 51) - LocalObject(298, Terminal.Constructor(Vector3(6543.658f, 4598.347f, 30.69388f), gen_control), owning_building_guid = 51) + LocalObject( + 298, + Terminal.Constructor(Vector3(6543.658f, 4598.347f, 30.69388f), gen_control), + owning_building_guid = 51 + ) } Building38() def Building38(): Unit = { // Name: NE_Baal_Tower Type: tower_a GUID: 54, MapID: 38 - LocalBuilding("NE_Baal_Tower", 54, 38, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1138f, 5212f, 91.18148f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2769, CaptureTerminal.Constructor(Vector3(1154.587f, 5211.897f, 101.1805f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "NE_Baal_Tower", + 54, + 38, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1138f, 5212f, 91.18148f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2769, + CaptureTerminal.Constructor(Vector3(1154.587f, 5211.897f, 101.1805f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(327, Door.Constructor(Vector3(1150f, 5204f, 92.70248f)), owning_building_guid = 54) LocalObject(328, Door.Constructor(Vector3(1150f, 5204f, 112.7015f)), owning_building_guid = 54) LocalObject(329, Door.Constructor(Vector3(1150f, 5220f, 92.70248f)), owning_building_guid = 54) LocalObject(330, Door.Constructor(Vector3(1150f, 5220f, 112.7015f)), owning_building_guid = 54) LocalObject(2890, Door.Constructor(Vector3(1149.146f, 5200.794f, 82.51748f)), owning_building_guid = 54) LocalObject(2891, Door.Constructor(Vector3(1149.146f, 5217.204f, 82.51748f)), owning_building_guid = 54) - LocalObject(990, IFFLock.Constructor(Vector3(1147.957f, 5220.811f, 92.64248f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 329) - LocalObject(991, IFFLock.Constructor(Vector3(1147.957f, 5220.811f, 112.6425f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 330) - LocalObject(992, IFFLock.Constructor(Vector3(1152.047f, 5203.189f, 92.64248f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 327) - LocalObject(993, IFFLock.Constructor(Vector3(1152.047f, 5203.189f, 112.6425f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 328) + LocalObject( + 990, + IFFLock.Constructor(Vector3(1147.957f, 5220.811f, 92.64248f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 329 + ) + LocalObject( + 991, + IFFLock.Constructor(Vector3(1147.957f, 5220.811f, 112.6425f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 330 + ) + LocalObject( + 992, + IFFLock.Constructor(Vector3(1152.047f, 5203.189f, 92.64248f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 327 + ) + LocalObject( + 993, + IFFLock.Constructor(Vector3(1152.047f, 5203.189f, 112.6425f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 328 + ) LocalObject(1267, Locker.Constructor(Vector3(1153.716f, 5196.963f, 81.17548f)), owning_building_guid = 54) LocalObject(1268, Locker.Constructor(Vector3(1153.751f, 5218.835f, 81.17548f)), owning_building_guid = 54) LocalObject(1269, Locker.Constructor(Vector3(1155.053f, 5196.963f, 81.17548f)), owning_building_guid = 54) @@ -1761,35 +5139,106 @@ object Map04 { // Ishundar LocalObject(1272, Locker.Constructor(Vector3(1157.741f, 5218.835f, 81.17548f)), owning_building_guid = 54) LocalObject(1273, Locker.Constructor(Vector3(1159.143f, 5196.963f, 81.17548f)), owning_building_guid = 54) LocalObject(1274, Locker.Constructor(Vector3(1159.143f, 5218.835f, 81.17548f)), owning_building_guid = 54) - LocalObject(1921, Terminal.Constructor(Vector3(1159.445f, 5202.129f, 82.51348f), order_terminal), owning_building_guid = 54) - LocalObject(1922, Terminal.Constructor(Vector3(1159.445f, 5207.853f, 82.51348f), order_terminal), owning_building_guid = 54) - LocalObject(1923, Terminal.Constructor(Vector3(1159.445f, 5213.234f, 82.51348f), order_terminal), owning_building_guid = 54) - LocalObject(2666, SpawnTube.Constructor(Vector3(1148.706f, 5199.742f, 80.66348f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(2667, SpawnTube.Constructor(Vector3(1148.706f, 5216.152f, 80.66348f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1765, FacilityTurret.Constructor(Vector3(1125.32f, 5199.295f, 110.1235f), manned_turret), owning_building_guid = 54) + LocalObject( + 1921, + Terminal.Constructor(Vector3(1159.445f, 5202.129f, 82.51348f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1922, + Terminal.Constructor(Vector3(1159.445f, 5207.853f, 82.51348f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1923, + Terminal.Constructor(Vector3(1159.445f, 5213.234f, 82.51348f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2666, + SpawnTube.Constructor(Vector3(1148.706f, 5199.742f, 80.66348f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 2667, + SpawnTube.Constructor(Vector3(1148.706f, 5216.152f, 80.66348f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1765, + FacilityTurret.Constructor(Vector3(1125.32f, 5199.295f, 110.1235f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1765, 5070) - LocalObject(1766, FacilityTurret.Constructor(Vector3(1160.647f, 5224.707f, 110.1235f), manned_turret), owning_building_guid = 54) + LocalObject( + 1766, + FacilityTurret.Constructor(Vector3(1160.647f, 5224.707f, 110.1235f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1766, 5071) - LocalObject(2450, Painbox.Constructor(Vector3(1143.235f, 5205.803f, 82.68058f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2451, Painbox.Constructor(Vector3(1154.889f, 5214.086f, 81.28148f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2452, Painbox.Constructor(Vector3(1154.975f, 5202.223f, 81.28148f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 2450, + Painbox.Constructor(Vector3(1143.235f, 5205.803f, 82.68058f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2451, + Painbox.Constructor(Vector3(1154.889f, 5214.086f, 81.28148f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2452, + Painbox.Constructor(Vector3(1154.975f, 5202.223f, 81.28148f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building37() def Building37(): Unit = { // Name: E_Dagon_Tower Type: tower_a GUID: 55, MapID: 37 - LocalBuilding("E_Dagon_Tower", 55, 37, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1904f, 6034f, 43.95589f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2774, CaptureTerminal.Constructor(Vector3(1920.587f, 6033.897f, 53.95489f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "E_Dagon_Tower", + 55, + 37, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1904f, 6034f, 43.95589f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2774, + CaptureTerminal.Constructor(Vector3(1920.587f, 6033.897f, 53.95489f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(365, Door.Constructor(Vector3(1916f, 6026f, 45.47689f)), owning_building_guid = 55) LocalObject(366, Door.Constructor(Vector3(1916f, 6026f, 65.47589f)), owning_building_guid = 55) LocalObject(367, Door.Constructor(Vector3(1916f, 6042f, 45.47689f)), owning_building_guid = 55) LocalObject(368, Door.Constructor(Vector3(1916f, 6042f, 65.47589f)), owning_building_guid = 55) LocalObject(2903, Door.Constructor(Vector3(1915.146f, 6022.794f, 35.29189f)), owning_building_guid = 55) LocalObject(2904, Door.Constructor(Vector3(1915.146f, 6039.204f, 35.29189f)), owning_building_guid = 55) - LocalObject(1024, IFFLock.Constructor(Vector3(1913.957f, 6042.811f, 45.41689f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 367) - LocalObject(1025, IFFLock.Constructor(Vector3(1913.957f, 6042.811f, 65.41689f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 368) - LocalObject(1026, IFFLock.Constructor(Vector3(1918.047f, 6025.189f, 45.41689f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 365) - LocalObject(1027, IFFLock.Constructor(Vector3(1918.047f, 6025.189f, 65.41689f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 366) + LocalObject( + 1024, + IFFLock.Constructor(Vector3(1913.957f, 6042.811f, 45.41689f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 367 + ) + LocalObject( + 1025, + IFFLock.Constructor(Vector3(1913.957f, 6042.811f, 65.41689f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 368 + ) + LocalObject( + 1026, + IFFLock.Constructor(Vector3(1918.047f, 6025.189f, 45.41689f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 365 + ) + LocalObject( + 1027, + IFFLock.Constructor(Vector3(1918.047f, 6025.189f, 65.41689f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 366 + ) LocalObject(1328, Locker.Constructor(Vector3(1919.716f, 6018.963f, 33.94989f)), owning_building_guid = 55) LocalObject(1329, Locker.Constructor(Vector3(1919.751f, 6040.835f, 33.94989f)), owning_building_guid = 55) LocalObject(1330, Locker.Constructor(Vector3(1921.053f, 6018.963f, 33.94989f)), owning_building_guid = 55) @@ -1798,35 +5247,106 @@ object Map04 { // Ishundar LocalObject(1333, Locker.Constructor(Vector3(1923.741f, 6040.835f, 33.94989f)), owning_building_guid = 55) LocalObject(1334, Locker.Constructor(Vector3(1925.143f, 6018.963f, 33.94989f)), owning_building_guid = 55) LocalObject(1335, Locker.Constructor(Vector3(1925.143f, 6040.835f, 33.94989f)), owning_building_guid = 55) - LocalObject(1940, Terminal.Constructor(Vector3(1925.445f, 6024.129f, 35.28789f), order_terminal), owning_building_guid = 55) - LocalObject(1941, Terminal.Constructor(Vector3(1925.445f, 6029.853f, 35.28789f), order_terminal), owning_building_guid = 55) - LocalObject(1942, Terminal.Constructor(Vector3(1925.445f, 6035.234f, 35.28789f), order_terminal), owning_building_guid = 55) - LocalObject(2679, SpawnTube.Constructor(Vector3(1914.706f, 6021.742f, 33.43789f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(2680, SpawnTube.Constructor(Vector3(1914.706f, 6038.152f, 33.43789f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1774, FacilityTurret.Constructor(Vector3(1891.32f, 6021.295f, 62.89789f), manned_turret), owning_building_guid = 55) + LocalObject( + 1940, + Terminal.Constructor(Vector3(1925.445f, 6024.129f, 35.28789f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1941, + Terminal.Constructor(Vector3(1925.445f, 6029.853f, 35.28789f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1942, + Terminal.Constructor(Vector3(1925.445f, 6035.234f, 35.28789f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 2679, + SpawnTube.Constructor(Vector3(1914.706f, 6021.742f, 33.43789f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 2680, + SpawnTube.Constructor(Vector3(1914.706f, 6038.152f, 33.43789f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1774, + FacilityTurret.Constructor(Vector3(1891.32f, 6021.295f, 62.89789f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1774, 5072) - LocalObject(1775, FacilityTurret.Constructor(Vector3(1926.647f, 6046.707f, 62.89789f), manned_turret), owning_building_guid = 55) + LocalObject( + 1775, + FacilityTurret.Constructor(Vector3(1926.647f, 6046.707f, 62.89789f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1775, 5073) - LocalObject(2465, Painbox.Constructor(Vector3(1909.235f, 6027.803f, 35.45499f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2466, Painbox.Constructor(Vector3(1920.889f, 6036.086f, 34.05589f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2467, Painbox.Constructor(Vector3(1920.975f, 6024.223f, 34.05589f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 2465, + Painbox.Constructor(Vector3(1909.235f, 6027.803f, 35.45499f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2466, + Painbox.Constructor(Vector3(1920.889f, 6036.086f, 34.05589f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2467, + Painbox.Constructor(Vector3(1920.975f, 6024.223f, 34.05589f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building65() def Building65(): Unit = { // Name: W_Hanish_Tower Type: tower_a GUID: 56, MapID: 65 - LocalBuilding("W_Hanish_Tower", 56, 65, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2992f, 5714f, 55.85485f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2778, CaptureTerminal.Constructor(Vector3(3008.587f, 5713.897f, 65.85385f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "W_Hanish_Tower", + 56, + 65, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2992f, 5714f, 55.85485f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2778, + CaptureTerminal.Constructor(Vector3(3008.587f, 5713.897f, 65.85385f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(404, Door.Constructor(Vector3(3004f, 5706f, 57.37585f)), owning_building_guid = 56) LocalObject(405, Door.Constructor(Vector3(3004f, 5706f, 77.37485f)), owning_building_guid = 56) LocalObject(406, Door.Constructor(Vector3(3004f, 5722f, 57.37585f)), owning_building_guid = 56) LocalObject(407, Door.Constructor(Vector3(3004f, 5722f, 77.37485f)), owning_building_guid = 56) LocalObject(2914, Door.Constructor(Vector3(3003.146f, 5702.794f, 47.19085f)), owning_building_guid = 56) LocalObject(2915, Door.Constructor(Vector3(3003.146f, 5719.204f, 47.19085f)), owning_building_guid = 56) - LocalObject(1054, IFFLock.Constructor(Vector3(3001.957f, 5722.811f, 57.31585f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 406) - LocalObject(1055, IFFLock.Constructor(Vector3(3001.957f, 5722.811f, 77.31585f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 407) - LocalObject(1056, IFFLock.Constructor(Vector3(3006.047f, 5705.189f, 57.31585f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 404) - LocalObject(1057, IFFLock.Constructor(Vector3(3006.047f, 5705.189f, 77.31585f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 405) + LocalObject( + 1054, + IFFLock.Constructor(Vector3(3001.957f, 5722.811f, 57.31585f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 406 + ) + LocalObject( + 1055, + IFFLock.Constructor(Vector3(3001.957f, 5722.811f, 77.31585f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 407 + ) + LocalObject( + 1056, + IFFLock.Constructor(Vector3(3006.047f, 5705.189f, 57.31585f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 404 + ) + LocalObject( + 1057, + IFFLock.Constructor(Vector3(3006.047f, 5705.189f, 77.31585f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 405 + ) LocalObject(1372, Locker.Constructor(Vector3(3007.716f, 5698.963f, 45.84885f)), owning_building_guid = 56) LocalObject(1373, Locker.Constructor(Vector3(3007.751f, 5720.835f, 45.84885f)), owning_building_guid = 56) LocalObject(1374, Locker.Constructor(Vector3(3009.053f, 5698.963f, 45.84885f)), owning_building_guid = 56) @@ -1835,35 +5355,106 @@ object Map04 { // Ishundar LocalObject(1377, Locker.Constructor(Vector3(3011.741f, 5720.835f, 45.84885f)), owning_building_guid = 56) LocalObject(1378, Locker.Constructor(Vector3(3013.143f, 5698.963f, 45.84885f)), owning_building_guid = 56) LocalObject(1379, Locker.Constructor(Vector3(3013.143f, 5720.835f, 45.84885f)), owning_building_guid = 56) - LocalObject(1960, Terminal.Constructor(Vector3(3013.445f, 5704.129f, 47.18685f), order_terminal), owning_building_guid = 56) - LocalObject(1961, Terminal.Constructor(Vector3(3013.445f, 5709.853f, 47.18685f), order_terminal), owning_building_guid = 56) - LocalObject(1962, Terminal.Constructor(Vector3(3013.445f, 5715.234f, 47.18685f), order_terminal), owning_building_guid = 56) - LocalObject(2690, SpawnTube.Constructor(Vector3(3002.706f, 5701.742f, 45.33685f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(2691, SpawnTube.Constructor(Vector3(3002.706f, 5718.152f, 45.33685f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1790, FacilityTurret.Constructor(Vector3(2979.32f, 5701.295f, 74.79685f), manned_turret), owning_building_guid = 56) + LocalObject( + 1960, + Terminal.Constructor(Vector3(3013.445f, 5704.129f, 47.18685f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1961, + Terminal.Constructor(Vector3(3013.445f, 5709.853f, 47.18685f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1962, + Terminal.Constructor(Vector3(3013.445f, 5715.234f, 47.18685f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2690, + SpawnTube.Constructor(Vector3(3002.706f, 5701.742f, 45.33685f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 2691, + SpawnTube.Constructor(Vector3(3002.706f, 5718.152f, 45.33685f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1790, + FacilityTurret.Constructor(Vector3(2979.32f, 5701.295f, 74.79685f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1790, 5074) - LocalObject(1791, FacilityTurret.Constructor(Vector3(3014.647f, 5726.707f, 74.79685f), manned_turret), owning_building_guid = 56) + LocalObject( + 1791, + FacilityTurret.Constructor(Vector3(3014.647f, 5726.707f, 74.79685f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1791, 5075) - LocalObject(2477, Painbox.Constructor(Vector3(2997.235f, 5707.803f, 47.35395f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2478, Painbox.Constructor(Vector3(3008.889f, 5716.086f, 45.95485f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2479, Painbox.Constructor(Vector3(3008.975f, 5704.223f, 45.95485f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 2477, + Painbox.Constructor(Vector3(2997.235f, 5707.803f, 47.35395f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2478, + Painbox.Constructor(Vector3(3008.889f, 5716.086f, 45.95485f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2479, + Painbox.Constructor(Vector3(3008.975f, 5704.223f, 45.95485f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building17() def Building17(): Unit = { // Name: S_Marduk_Tower Type: tower_a GUID: 57, MapID: 17 - LocalBuilding("S_Marduk_Tower", 57, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3212f, 1592f, 50.06226f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2780, CaptureTerminal.Constructor(Vector3(3228.587f, 1591.897f, 60.06126f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "S_Marduk_Tower", + 57, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3212f, 1592f, 50.06226f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2780, + CaptureTerminal.Constructor(Vector3(3228.587f, 1591.897f, 60.06126f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(428, Door.Constructor(Vector3(3224f, 1584f, 51.58326f)), owning_building_guid = 57) LocalObject(429, Door.Constructor(Vector3(3224f, 1584f, 71.58226f)), owning_building_guid = 57) LocalObject(430, Door.Constructor(Vector3(3224f, 1600f, 51.58326f)), owning_building_guid = 57) LocalObject(431, Door.Constructor(Vector3(3224f, 1600f, 71.58226f)), owning_building_guid = 57) LocalObject(2921, Door.Constructor(Vector3(3223.146f, 1580.794f, 41.39826f)), owning_building_guid = 57) LocalObject(2922, Door.Constructor(Vector3(3223.146f, 1597.204f, 41.39826f)), owning_building_guid = 57) - LocalObject(1072, IFFLock.Constructor(Vector3(3221.957f, 1600.811f, 51.52326f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 430) - LocalObject(1073, IFFLock.Constructor(Vector3(3221.957f, 1600.811f, 71.52326f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 431) - LocalObject(1074, IFFLock.Constructor(Vector3(3226.047f, 1583.189f, 51.52326f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 428) - LocalObject(1075, IFFLock.Constructor(Vector3(3226.047f, 1583.189f, 71.52326f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 429) + LocalObject( + 1072, + IFFLock.Constructor(Vector3(3221.957f, 1600.811f, 51.52326f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 430 + ) + LocalObject( + 1073, + IFFLock.Constructor(Vector3(3221.957f, 1600.811f, 71.52326f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 431 + ) + LocalObject( + 1074, + IFFLock.Constructor(Vector3(3226.047f, 1583.189f, 51.52326f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 428 + ) + LocalObject( + 1075, + IFFLock.Constructor(Vector3(3226.047f, 1583.189f, 71.52326f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 429 + ) LocalObject(1400, Locker.Constructor(Vector3(3227.716f, 1576.963f, 40.05626f)), owning_building_guid = 57) LocalObject(1401, Locker.Constructor(Vector3(3227.751f, 1598.835f, 40.05626f)), owning_building_guid = 57) LocalObject(1402, Locker.Constructor(Vector3(3229.053f, 1576.963f, 40.05626f)), owning_building_guid = 57) @@ -1872,35 +5463,106 @@ object Map04 { // Ishundar LocalObject(1405, Locker.Constructor(Vector3(3231.741f, 1598.835f, 40.05626f)), owning_building_guid = 57) LocalObject(1406, Locker.Constructor(Vector3(3233.143f, 1576.963f, 40.05626f)), owning_building_guid = 57) LocalObject(1407, Locker.Constructor(Vector3(3233.143f, 1598.835f, 40.05626f)), owning_building_guid = 57) - LocalObject(1970, Terminal.Constructor(Vector3(3233.445f, 1582.129f, 41.39426f), order_terminal), owning_building_guid = 57) - LocalObject(1971, Terminal.Constructor(Vector3(3233.445f, 1587.853f, 41.39426f), order_terminal), owning_building_guid = 57) - LocalObject(1972, Terminal.Constructor(Vector3(3233.445f, 1593.234f, 41.39426f), order_terminal), owning_building_guid = 57) - LocalObject(2697, SpawnTube.Constructor(Vector3(3222.706f, 1579.742f, 39.54427f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(2698, SpawnTube.Constructor(Vector3(3222.706f, 1596.152f, 39.54427f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1797, FacilityTurret.Constructor(Vector3(3199.32f, 1579.295f, 69.00426f), manned_turret), owning_building_guid = 57) + LocalObject( + 1970, + Terminal.Constructor(Vector3(3233.445f, 1582.129f, 41.39426f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1971, + Terminal.Constructor(Vector3(3233.445f, 1587.853f, 41.39426f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1972, + Terminal.Constructor(Vector3(3233.445f, 1593.234f, 41.39426f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 2697, + SpawnTube.Constructor(Vector3(3222.706f, 1579.742f, 39.54427f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 2698, + SpawnTube.Constructor(Vector3(3222.706f, 1596.152f, 39.54427f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1797, + FacilityTurret.Constructor(Vector3(3199.32f, 1579.295f, 69.00426f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1797, 5076) - LocalObject(1799, FacilityTurret.Constructor(Vector3(3234.647f, 1604.707f, 69.00426f), manned_turret), owning_building_guid = 57) + LocalObject( + 1799, + FacilityTurret.Constructor(Vector3(3234.647f, 1604.707f, 69.00426f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1799, 5077) - LocalObject(2483, Painbox.Constructor(Vector3(3217.235f, 1585.803f, 41.56136f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2485, Painbox.Constructor(Vector3(3228.889f, 1594.086f, 40.16226f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2486, Painbox.Constructor(Vector3(3228.975f, 1582.223f, 40.16226f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 2483, + Painbox.Constructor(Vector3(3217.235f, 1585.803f, 41.56136f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2485, + Painbox.Constructor(Vector3(3228.889f, 1594.086f, 40.16226f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2486, + Painbox.Constructor(Vector3(3228.975f, 1582.223f, 40.16226f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building29() def Building29(): Unit = { // Name: SE_Akkan_Tower Type: tower_a GUID: 58, MapID: 29 - LocalBuilding("SE_Akkan_Tower", 58, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3254f, 3908f, 28.96921f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2782, CaptureTerminal.Constructor(Vector3(3270.587f, 3907.897f, 38.96821f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "SE_Akkan_Tower", + 58, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3254f, 3908f, 28.96921f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2782, + CaptureTerminal.Constructor(Vector3(3270.587f, 3907.897f, 38.96821f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(438, Door.Constructor(Vector3(3266f, 3900f, 30.49021f)), owning_building_guid = 58) LocalObject(439, Door.Constructor(Vector3(3266f, 3900f, 50.48921f)), owning_building_guid = 58) LocalObject(440, Door.Constructor(Vector3(3266f, 3916f, 30.49021f)), owning_building_guid = 58) LocalObject(441, Door.Constructor(Vector3(3266f, 3916f, 50.48921f)), owning_building_guid = 58) LocalObject(2925, Door.Constructor(Vector3(3265.146f, 3896.794f, 20.30521f)), owning_building_guid = 58) LocalObject(2926, Door.Constructor(Vector3(3265.146f, 3913.204f, 20.30521f)), owning_building_guid = 58) - LocalObject(1080, IFFLock.Constructor(Vector3(3263.957f, 3916.811f, 30.43021f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 440) - LocalObject(1081, IFFLock.Constructor(Vector3(3263.957f, 3916.811f, 50.43021f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 441) - LocalObject(1082, IFFLock.Constructor(Vector3(3268.047f, 3899.189f, 30.43021f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 438) - LocalObject(1083, IFFLock.Constructor(Vector3(3268.047f, 3899.189f, 50.43021f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 439) + LocalObject( + 1080, + IFFLock.Constructor(Vector3(3263.957f, 3916.811f, 30.43021f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 440 + ) + LocalObject( + 1081, + IFFLock.Constructor(Vector3(3263.957f, 3916.811f, 50.43021f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 441 + ) + LocalObject( + 1082, + IFFLock.Constructor(Vector3(3268.047f, 3899.189f, 30.43021f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 438 + ) + LocalObject( + 1083, + IFFLock.Constructor(Vector3(3268.047f, 3899.189f, 50.43021f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 439 + ) LocalObject(1416, Locker.Constructor(Vector3(3269.716f, 3892.963f, 18.96321f)), owning_building_guid = 58) LocalObject(1417, Locker.Constructor(Vector3(3269.751f, 3914.835f, 18.96321f)), owning_building_guid = 58) LocalObject(1418, Locker.Constructor(Vector3(3271.053f, 3892.963f, 18.96321f)), owning_building_guid = 58) @@ -1909,35 +5571,106 @@ object Map04 { // Ishundar LocalObject(1421, Locker.Constructor(Vector3(3273.741f, 3914.835f, 18.96321f)), owning_building_guid = 58) LocalObject(1422, Locker.Constructor(Vector3(3275.143f, 3892.963f, 18.96321f)), owning_building_guid = 58) LocalObject(1423, Locker.Constructor(Vector3(3275.143f, 3914.835f, 18.96321f)), owning_building_guid = 58) - LocalObject(1976, Terminal.Constructor(Vector3(3275.445f, 3898.129f, 20.30121f), order_terminal), owning_building_guid = 58) - LocalObject(1977, Terminal.Constructor(Vector3(3275.445f, 3903.853f, 20.30121f), order_terminal), owning_building_guid = 58) - LocalObject(1978, Terminal.Constructor(Vector3(3275.445f, 3909.234f, 20.30121f), order_terminal), owning_building_guid = 58) - LocalObject(2701, SpawnTube.Constructor(Vector3(3264.706f, 3895.742f, 18.45121f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(2702, SpawnTube.Constructor(Vector3(3264.706f, 3912.152f, 18.45121f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1803, FacilityTurret.Constructor(Vector3(3241.32f, 3895.295f, 47.91121f), manned_turret), owning_building_guid = 58) + LocalObject( + 1976, + Terminal.Constructor(Vector3(3275.445f, 3898.129f, 20.30121f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1977, + Terminal.Constructor(Vector3(3275.445f, 3903.853f, 20.30121f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1978, + Terminal.Constructor(Vector3(3275.445f, 3909.234f, 20.30121f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 2701, + SpawnTube.Constructor(Vector3(3264.706f, 3895.742f, 18.45121f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 2702, + SpawnTube.Constructor(Vector3(3264.706f, 3912.152f, 18.45121f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1803, + FacilityTurret.Constructor(Vector3(3241.32f, 3895.295f, 47.91121f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1803, 5078) - LocalObject(1805, FacilityTurret.Constructor(Vector3(3276.647f, 3920.707f, 47.91121f), manned_turret), owning_building_guid = 58) + LocalObject( + 1805, + FacilityTurret.Constructor(Vector3(3276.647f, 3920.707f, 47.91121f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1805, 5079) - LocalObject(2489, Painbox.Constructor(Vector3(3259.235f, 3901.803f, 20.46831f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2490, Painbox.Constructor(Vector3(3270.889f, 3910.086f, 19.06921f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2491, Painbox.Constructor(Vector3(3270.975f, 3898.223f, 19.06921f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 2489, + Painbox.Constructor(Vector3(3259.235f, 3901.803f, 20.46831f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2490, + Painbox.Constructor(Vector3(3270.889f, 3910.086f, 19.06921f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2491, + Painbox.Constructor(Vector3(3270.975f, 3898.223f, 19.06921f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building18() def Building18(): Unit = { // Name: W_Neti_Tower Type: tower_a GUID: 59, MapID: 18 - LocalBuilding("W_Neti_Tower", 59, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4252f, 2648f, 108.6534f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2788, CaptureTerminal.Constructor(Vector3(4268.587f, 2647.897f, 118.6524f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "W_Neti_Tower", + 59, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4252f, 2648f, 108.6534f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2788, + CaptureTerminal.Constructor(Vector3(4268.587f, 2647.897f, 118.6524f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(509, Door.Constructor(Vector3(4264f, 2640f, 110.1744f)), owning_building_guid = 59) LocalObject(510, Door.Constructor(Vector3(4264f, 2640f, 130.1734f)), owning_building_guid = 59) LocalObject(511, Door.Constructor(Vector3(4264f, 2656f, 110.1744f)), owning_building_guid = 59) LocalObject(512, Door.Constructor(Vector3(4264f, 2656f, 130.1734f)), owning_building_guid = 59) LocalObject(2946, Door.Constructor(Vector3(4263.146f, 2636.794f, 99.98938f)), owning_building_guid = 59) LocalObject(2947, Door.Constructor(Vector3(4263.146f, 2653.204f, 99.98938f)), owning_building_guid = 59) - LocalObject(1138, IFFLock.Constructor(Vector3(4261.957f, 2656.811f, 110.1144f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 511) - LocalObject(1139, IFFLock.Constructor(Vector3(4261.957f, 2656.811f, 130.1144f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 512) - LocalObject(1140, IFFLock.Constructor(Vector3(4266.047f, 2639.189f, 110.1144f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 509) - LocalObject(1141, IFFLock.Constructor(Vector3(4266.047f, 2639.189f, 130.1144f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 510) + LocalObject( + 1138, + IFFLock.Constructor(Vector3(4261.957f, 2656.811f, 110.1144f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 511 + ) + LocalObject( + 1139, + IFFLock.Constructor(Vector3(4261.957f, 2656.811f, 130.1144f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 512 + ) + LocalObject( + 1140, + IFFLock.Constructor(Vector3(4266.047f, 2639.189f, 110.1144f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 509 + ) + LocalObject( + 1141, + IFFLock.Constructor(Vector3(4266.047f, 2639.189f, 130.1144f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 510 + ) LocalObject(1509, Locker.Constructor(Vector3(4267.716f, 2632.963f, 98.64738f)), owning_building_guid = 59) LocalObject(1510, Locker.Constructor(Vector3(4267.751f, 2654.835f, 98.64738f)), owning_building_guid = 59) LocalObject(1511, Locker.Constructor(Vector3(4269.053f, 2632.963f, 98.64738f)), owning_building_guid = 59) @@ -1946,35 +5679,106 @@ object Map04 { // Ishundar LocalObject(1514, Locker.Constructor(Vector3(4271.741f, 2654.835f, 98.64738f)), owning_building_guid = 59) LocalObject(1515, Locker.Constructor(Vector3(4273.143f, 2632.963f, 98.64738f)), owning_building_guid = 59) LocalObject(1516, Locker.Constructor(Vector3(4273.143f, 2654.835f, 98.64738f)), owning_building_guid = 59) - LocalObject(2011, Terminal.Constructor(Vector3(4273.445f, 2638.129f, 99.98538f), order_terminal), owning_building_guid = 59) - LocalObject(2012, Terminal.Constructor(Vector3(4273.445f, 2643.853f, 99.98538f), order_terminal), owning_building_guid = 59) - LocalObject(2013, Terminal.Constructor(Vector3(4273.445f, 2649.234f, 99.98538f), order_terminal), owning_building_guid = 59) - LocalObject(2722, SpawnTube.Constructor(Vector3(4262.706f, 2635.742f, 98.13538f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2723, SpawnTube.Constructor(Vector3(4262.706f, 2652.152f, 98.13538f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1827, FacilityTurret.Constructor(Vector3(4239.32f, 2635.295f, 127.5954f), manned_turret), owning_building_guid = 59) + LocalObject( + 2011, + Terminal.Constructor(Vector3(4273.445f, 2638.129f, 99.98538f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2012, + Terminal.Constructor(Vector3(4273.445f, 2643.853f, 99.98538f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2013, + Terminal.Constructor(Vector3(4273.445f, 2649.234f, 99.98538f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2722, + SpawnTube.Constructor(Vector3(4262.706f, 2635.742f, 98.13538f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2723, + SpawnTube.Constructor(Vector3(4262.706f, 2652.152f, 98.13538f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1827, + FacilityTurret.Constructor(Vector3(4239.32f, 2635.295f, 127.5954f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1827, 5080) - LocalObject(1828, FacilityTurret.Constructor(Vector3(4274.647f, 2660.707f, 127.5954f), manned_turret), owning_building_guid = 59) + LocalObject( + 1828, + FacilityTurret.Constructor(Vector3(4274.647f, 2660.707f, 127.5954f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1828, 5081) - LocalObject(2507, Painbox.Constructor(Vector3(4257.235f, 2641.803f, 100.1525f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2508, Painbox.Constructor(Vector3(4268.889f, 2650.086f, 98.75338f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2509, Painbox.Constructor(Vector3(4268.975f, 2638.223f, 98.75338f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 2507, + Painbox.Constructor(Vector3(4257.235f, 2641.803f, 100.1525f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2508, + Painbox.Constructor(Vector3(4268.889f, 2650.086f, 98.75338f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2509, + Painbox.Constructor(Vector3(4268.975f, 2638.223f, 98.75338f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building34() def Building34(): Unit = { // Name: SE_Hanish_Tower Type: tower_a GUID: 60, MapID: 34 - LocalBuilding("SE_Hanish_Tower", 60, 34, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4412f, 4858f, 85.94116f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2789, CaptureTerminal.Constructor(Vector3(4428.587f, 4857.897f, 95.94016f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "SE_Hanish_Tower", + 60, + 34, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4412f, 4858f, 85.94116f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2789, + CaptureTerminal.Constructor(Vector3(4428.587f, 4857.897f, 95.94016f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(525, Door.Constructor(Vector3(4424f, 4850f, 87.46217f)), owning_building_guid = 60) LocalObject(526, Door.Constructor(Vector3(4424f, 4850f, 107.4612f)), owning_building_guid = 60) LocalObject(527, Door.Constructor(Vector3(4424f, 4866f, 87.46217f)), owning_building_guid = 60) LocalObject(528, Door.Constructor(Vector3(4424f, 4866f, 107.4612f)), owning_building_guid = 60) LocalObject(2951, Door.Constructor(Vector3(4423.146f, 4846.794f, 77.27716f)), owning_building_guid = 60) LocalObject(2952, Door.Constructor(Vector3(4423.146f, 4863.204f, 77.27716f)), owning_building_guid = 60) - LocalObject(1150, IFFLock.Constructor(Vector3(4421.957f, 4866.811f, 87.40216f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 527) - LocalObject(1151, IFFLock.Constructor(Vector3(4421.957f, 4866.811f, 107.4022f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 528) - LocalObject(1155, IFFLock.Constructor(Vector3(4426.047f, 4849.189f, 87.40216f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 525) - LocalObject(1156, IFFLock.Constructor(Vector3(4426.047f, 4849.189f, 107.4022f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 526) + LocalObject( + 1150, + IFFLock.Constructor(Vector3(4421.957f, 4866.811f, 87.40216f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 527 + ) + LocalObject( + 1151, + IFFLock.Constructor(Vector3(4421.957f, 4866.811f, 107.4022f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 528 + ) + LocalObject( + 1155, + IFFLock.Constructor(Vector3(4426.047f, 4849.189f, 87.40216f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 525 + ) + LocalObject( + 1156, + IFFLock.Constructor(Vector3(4426.047f, 4849.189f, 107.4022f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 526 + ) LocalObject(1525, Locker.Constructor(Vector3(4427.716f, 4842.963f, 75.93517f)), owning_building_guid = 60) LocalObject(1526, Locker.Constructor(Vector3(4427.751f, 4864.835f, 75.93517f)), owning_building_guid = 60) LocalObject(1528, Locker.Constructor(Vector3(4429.053f, 4842.963f, 75.93517f)), owning_building_guid = 60) @@ -1983,35 +5787,106 @@ object Map04 { // Ishundar LocalObject(1537, Locker.Constructor(Vector3(4431.741f, 4864.835f, 75.93517f)), owning_building_guid = 60) LocalObject(1539, Locker.Constructor(Vector3(4433.143f, 4842.963f, 75.93517f)), owning_building_guid = 60) LocalObject(1540, Locker.Constructor(Vector3(4433.143f, 4864.835f, 75.93517f)), owning_building_guid = 60) - LocalObject(2018, Terminal.Constructor(Vector3(4433.445f, 4848.129f, 77.27316f), order_terminal), owning_building_guid = 60) - LocalObject(2019, Terminal.Constructor(Vector3(4433.445f, 4853.853f, 77.27316f), order_terminal), owning_building_guid = 60) - LocalObject(2020, Terminal.Constructor(Vector3(4433.445f, 4859.234f, 77.27316f), order_terminal), owning_building_guid = 60) - LocalObject(2727, SpawnTube.Constructor(Vector3(4422.706f, 4845.742f, 75.42316f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2728, SpawnTube.Constructor(Vector3(4422.706f, 4862.152f, 75.42316f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1832, FacilityTurret.Constructor(Vector3(4399.32f, 4845.295f, 104.8832f), manned_turret), owning_building_guid = 60) + LocalObject( + 2018, + Terminal.Constructor(Vector3(4433.445f, 4848.129f, 77.27316f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2019, + Terminal.Constructor(Vector3(4433.445f, 4853.853f, 77.27316f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2020, + Terminal.Constructor(Vector3(4433.445f, 4859.234f, 77.27316f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2727, + SpawnTube.Constructor(Vector3(4422.706f, 4845.742f, 75.42316f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2728, + SpawnTube.Constructor(Vector3(4422.706f, 4862.152f, 75.42316f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1832, + FacilityTurret.Constructor(Vector3(4399.32f, 4845.295f, 104.8832f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1832, 5082) - LocalObject(1833, FacilityTurret.Constructor(Vector3(4434.647f, 4870.707f, 104.8832f), manned_turret), owning_building_guid = 60) + LocalObject( + 1833, + FacilityTurret.Constructor(Vector3(4434.647f, 4870.707f, 104.8832f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1833, 5083) - LocalObject(2510, Painbox.Constructor(Vector3(4417.235f, 4851.803f, 77.44026f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2512, Painbox.Constructor(Vector3(4428.889f, 4860.086f, 76.04116f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2513, Painbox.Constructor(Vector3(4428.975f, 4848.223f, 76.04116f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 2510, + Painbox.Constructor(Vector3(4417.235f, 4851.803f, 77.44026f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2512, + Painbox.Constructor(Vector3(4428.889f, 4860.086f, 76.04116f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2513, + Painbox.Constructor(Vector3(4428.975f, 4848.223f, 76.04116f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building19() def Building19(): Unit = { // Name: W_Zaqar_Tower Type: tower_a GUID: 61, MapID: 19 - LocalBuilding("W_Zaqar_Tower", 61, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4598f, 1928f, 71.5507f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2791, CaptureTerminal.Constructor(Vector3(4614.587f, 1927.897f, 81.5497f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "W_Zaqar_Tower", + 61, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4598f, 1928f, 71.5507f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2791, + CaptureTerminal.Constructor(Vector3(4614.587f, 1927.897f, 81.5497f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(538, Door.Constructor(Vector3(4610f, 1920f, 73.0717f)), owning_building_guid = 61) LocalObject(539, Door.Constructor(Vector3(4610f, 1920f, 93.07069f)), owning_building_guid = 61) LocalObject(540, Door.Constructor(Vector3(4610f, 1936f, 73.0717f)), owning_building_guid = 61) LocalObject(541, Door.Constructor(Vector3(4610f, 1936f, 93.07069f)), owning_building_guid = 61) LocalObject(2955, Door.Constructor(Vector3(4609.146f, 1916.794f, 62.8867f)), owning_building_guid = 61) LocalObject(2956, Door.Constructor(Vector3(4609.146f, 1933.204f, 62.8867f)), owning_building_guid = 61) - LocalObject(1160, IFFLock.Constructor(Vector3(4607.957f, 1936.811f, 73.0117f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 540) - LocalObject(1161, IFFLock.Constructor(Vector3(4607.957f, 1936.811f, 93.0117f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 541) - LocalObject(1162, IFFLock.Constructor(Vector3(4612.047f, 1919.189f, 73.0117f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 538) - LocalObject(1163, IFFLock.Constructor(Vector3(4612.047f, 1919.189f, 93.0117f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 539) + LocalObject( + 1160, + IFFLock.Constructor(Vector3(4607.957f, 1936.811f, 73.0117f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 540 + ) + LocalObject( + 1161, + IFFLock.Constructor(Vector3(4607.957f, 1936.811f, 93.0117f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 541 + ) + LocalObject( + 1162, + IFFLock.Constructor(Vector3(4612.047f, 1919.189f, 73.0117f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 538 + ) + LocalObject( + 1163, + IFFLock.Constructor(Vector3(4612.047f, 1919.189f, 93.0117f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 539 + ) LocalObject(1545, Locker.Constructor(Vector3(4613.716f, 1912.963f, 61.5447f)), owning_building_guid = 61) LocalObject(1546, Locker.Constructor(Vector3(4613.751f, 1934.835f, 61.5447f)), owning_building_guid = 61) LocalObject(1547, Locker.Constructor(Vector3(4615.053f, 1912.963f, 61.5447f)), owning_building_guid = 61) @@ -2020,35 +5895,106 @@ object Map04 { // Ishundar LocalObject(1550, Locker.Constructor(Vector3(4617.741f, 1934.835f, 61.5447f)), owning_building_guid = 61) LocalObject(1551, Locker.Constructor(Vector3(4619.143f, 1912.963f, 61.5447f)), owning_building_guid = 61) LocalObject(1552, Locker.Constructor(Vector3(4619.143f, 1934.835f, 61.5447f)), owning_building_guid = 61) - LocalObject(2024, Terminal.Constructor(Vector3(4619.445f, 1918.129f, 62.8827f), order_terminal), owning_building_guid = 61) - LocalObject(2025, Terminal.Constructor(Vector3(4619.445f, 1923.853f, 62.8827f), order_terminal), owning_building_guid = 61) - LocalObject(2026, Terminal.Constructor(Vector3(4619.445f, 1929.234f, 62.8827f), order_terminal), owning_building_guid = 61) - LocalObject(2731, SpawnTube.Constructor(Vector3(4608.706f, 1915.742f, 61.0327f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2732, SpawnTube.Constructor(Vector3(4608.706f, 1932.152f, 61.0327f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1837, FacilityTurret.Constructor(Vector3(4585.32f, 1915.295f, 90.4927f), manned_turret), owning_building_guid = 61) + LocalObject( + 2024, + Terminal.Constructor(Vector3(4619.445f, 1918.129f, 62.8827f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2025, + Terminal.Constructor(Vector3(4619.445f, 1923.853f, 62.8827f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2026, + Terminal.Constructor(Vector3(4619.445f, 1929.234f, 62.8827f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2731, + SpawnTube.Constructor(Vector3(4608.706f, 1915.742f, 61.0327f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2732, + SpawnTube.Constructor(Vector3(4608.706f, 1932.152f, 61.0327f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1837, + FacilityTurret.Constructor(Vector3(4585.32f, 1915.295f, 90.4927f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1837, 5084) - LocalObject(1839, FacilityTurret.Constructor(Vector3(4620.647f, 1940.707f, 90.4927f), manned_turret), owning_building_guid = 61) + LocalObject( + 1839, + FacilityTurret.Constructor(Vector3(4620.647f, 1940.707f, 90.4927f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1839, 5085) - LocalObject(2516, Painbox.Constructor(Vector3(4603.235f, 1921.803f, 63.0498f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2517, Painbox.Constructor(Vector3(4614.889f, 1930.086f, 61.6507f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2518, Painbox.Constructor(Vector3(4614.975f, 1918.223f, 61.6507f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 2516, + Painbox.Constructor(Vector3(4603.235f, 1921.803f, 63.0498f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2517, + Painbox.Constructor(Vector3(4614.889f, 1930.086f, 61.6507f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2518, + Painbox.Constructor(Vector3(4614.975f, 1918.223f, 61.6507f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building33() def Building33(): Unit = { // Name: E_Girru_Tower Type: tower_a GUID: 62, MapID: 33 - LocalBuilding("E_Girru_Tower", 62, 33, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4614f, 5918f, 55.49086f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2792, CaptureTerminal.Constructor(Vector3(4630.587f, 5917.897f, 65.48985f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "E_Girru_Tower", + 62, + 33, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4614f, 5918f, 55.49086f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2792, + CaptureTerminal.Constructor(Vector3(4630.587f, 5917.897f, 65.48985f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(542, Door.Constructor(Vector3(4626f, 5910f, 57.01186f)), owning_building_guid = 62) LocalObject(543, Door.Constructor(Vector3(4626f, 5910f, 77.01086f)), owning_building_guid = 62) LocalObject(544, Door.Constructor(Vector3(4626f, 5926f, 57.01186f)), owning_building_guid = 62) LocalObject(545, Door.Constructor(Vector3(4626f, 5926f, 77.01086f)), owning_building_guid = 62) LocalObject(2957, Door.Constructor(Vector3(4625.146f, 5906.794f, 46.82686f)), owning_building_guid = 62) LocalObject(2958, Door.Constructor(Vector3(4625.146f, 5923.204f, 46.82686f)), owning_building_guid = 62) - LocalObject(1164, IFFLock.Constructor(Vector3(4623.957f, 5926.811f, 56.95185f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 544) - LocalObject(1165, IFFLock.Constructor(Vector3(4623.957f, 5926.811f, 76.95186f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 545) - LocalObject(1166, IFFLock.Constructor(Vector3(4628.047f, 5909.189f, 56.95185f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 542) - LocalObject(1167, IFFLock.Constructor(Vector3(4628.047f, 5909.189f, 76.95186f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 543) + LocalObject( + 1164, + IFFLock.Constructor(Vector3(4623.957f, 5926.811f, 56.95185f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 544 + ) + LocalObject( + 1165, + IFFLock.Constructor(Vector3(4623.957f, 5926.811f, 76.95186f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 545 + ) + LocalObject( + 1166, + IFFLock.Constructor(Vector3(4628.047f, 5909.189f, 56.95185f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 542 + ) + LocalObject( + 1167, + IFFLock.Constructor(Vector3(4628.047f, 5909.189f, 76.95186f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 543 + ) LocalObject(1553, Locker.Constructor(Vector3(4629.716f, 5902.963f, 45.48486f)), owning_building_guid = 62) LocalObject(1554, Locker.Constructor(Vector3(4629.751f, 5924.835f, 45.48486f)), owning_building_guid = 62) LocalObject(1555, Locker.Constructor(Vector3(4631.053f, 5902.963f, 45.48486f)), owning_building_guid = 62) @@ -2057,35 +6003,106 @@ object Map04 { // Ishundar LocalObject(1558, Locker.Constructor(Vector3(4633.741f, 5924.835f, 45.48486f)), owning_building_guid = 62) LocalObject(1559, Locker.Constructor(Vector3(4635.143f, 5902.963f, 45.48486f)), owning_building_guid = 62) LocalObject(1560, Locker.Constructor(Vector3(4635.143f, 5924.835f, 45.48486f)), owning_building_guid = 62) - LocalObject(2027, Terminal.Constructor(Vector3(4635.445f, 5908.129f, 46.82286f), order_terminal), owning_building_guid = 62) - LocalObject(2028, Terminal.Constructor(Vector3(4635.445f, 5913.853f, 46.82286f), order_terminal), owning_building_guid = 62) - LocalObject(2029, Terminal.Constructor(Vector3(4635.445f, 5919.234f, 46.82286f), order_terminal), owning_building_guid = 62) - LocalObject(2733, SpawnTube.Constructor(Vector3(4624.706f, 5905.742f, 44.97285f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2734, SpawnTube.Constructor(Vector3(4624.706f, 5922.152f, 44.97285f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(1838, FacilityTurret.Constructor(Vector3(4601.32f, 5905.295f, 74.43285f), manned_turret), owning_building_guid = 62) + LocalObject( + 2027, + Terminal.Constructor(Vector3(4635.445f, 5908.129f, 46.82286f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2028, + Terminal.Constructor(Vector3(4635.445f, 5913.853f, 46.82286f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2029, + Terminal.Constructor(Vector3(4635.445f, 5919.234f, 46.82286f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2733, + SpawnTube.Constructor(Vector3(4624.706f, 5905.742f, 44.97285f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2734, + SpawnTube.Constructor(Vector3(4624.706f, 5922.152f, 44.97285f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 1838, + FacilityTurret.Constructor(Vector3(4601.32f, 5905.295f, 74.43285f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1838, 5086) - LocalObject(1840, FacilityTurret.Constructor(Vector3(4636.647f, 5930.707f, 74.43285f), manned_turret), owning_building_guid = 62) + LocalObject( + 1840, + FacilityTurret.Constructor(Vector3(4636.647f, 5930.707f, 74.43285f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1840, 5087) - LocalObject(2519, Painbox.Constructor(Vector3(4619.235f, 5911.803f, 46.98996f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2520, Painbox.Constructor(Vector3(4630.889f, 5920.086f, 45.59086f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2521, Painbox.Constructor(Vector3(4630.975f, 5908.223f, 45.59086f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 2519, + Painbox.Constructor(Vector3(4619.235f, 5911.803f, 46.98996f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2520, + Painbox.Constructor(Vector3(4630.889f, 5920.086f, 45.59086f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2521, + Painbox.Constructor(Vector3(4630.975f, 5908.223f, 45.59086f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building26() def Building26(): Unit = { // Name: SE_Irkalla_Tower Type: tower_a GUID: 63, MapID: 26 - LocalBuilding("SE_Irkalla_Tower", 63, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5828f, 3676f, 68.67637f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2799, CaptureTerminal.Constructor(Vector3(5844.587f, 3675.897f, 78.67537f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "SE_Irkalla_Tower", + 63, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5828f, 3676f, 68.67637f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2799, + CaptureTerminal.Constructor(Vector3(5844.587f, 3675.897f, 78.67537f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(602, Door.Constructor(Vector3(5840f, 3668f, 70.19737f)), owning_building_guid = 63) LocalObject(603, Door.Constructor(Vector3(5840f, 3668f, 90.19637f)), owning_building_guid = 63) LocalObject(604, Door.Constructor(Vector3(5840f, 3684f, 70.19737f)), owning_building_guid = 63) LocalObject(605, Door.Constructor(Vector3(5840f, 3684f, 90.19637f)), owning_building_guid = 63) LocalObject(2977, Door.Constructor(Vector3(5839.146f, 3664.794f, 60.01237f)), owning_building_guid = 63) LocalObject(2978, Door.Constructor(Vector3(5839.146f, 3681.204f, 60.01237f)), owning_building_guid = 63) - LocalObject(1217, IFFLock.Constructor(Vector3(5837.957f, 3684.811f, 70.13737f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 604) - LocalObject(1218, IFFLock.Constructor(Vector3(5837.957f, 3684.811f, 90.13737f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 605) - LocalObject(1219, IFFLock.Constructor(Vector3(5842.047f, 3667.189f, 70.13737f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 602) - LocalObject(1220, IFFLock.Constructor(Vector3(5842.047f, 3667.189f, 90.13737f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 603) + LocalObject( + 1217, + IFFLock.Constructor(Vector3(5837.957f, 3684.811f, 70.13737f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 604 + ) + LocalObject( + 1218, + IFFLock.Constructor(Vector3(5837.957f, 3684.811f, 90.13737f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 605 + ) + LocalObject( + 1219, + IFFLock.Constructor(Vector3(5842.047f, 3667.189f, 70.13737f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 602 + ) + LocalObject( + 1220, + IFFLock.Constructor(Vector3(5842.047f, 3667.189f, 90.13737f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 603 + ) LocalObject(1642, Locker.Constructor(Vector3(5843.716f, 3660.963f, 58.67037f)), owning_building_guid = 63) LocalObject(1643, Locker.Constructor(Vector3(5843.751f, 3682.835f, 58.67037f)), owning_building_guid = 63) LocalObject(1644, Locker.Constructor(Vector3(5845.053f, 3660.963f, 58.67037f)), owning_building_guid = 63) @@ -2094,35 +6111,106 @@ object Map04 { // Ishundar LocalObject(1647, Locker.Constructor(Vector3(5847.741f, 3682.835f, 58.67037f)), owning_building_guid = 63) LocalObject(1648, Locker.Constructor(Vector3(5849.143f, 3660.963f, 58.67037f)), owning_building_guid = 63) LocalObject(1649, Locker.Constructor(Vector3(5849.143f, 3682.835f, 58.67037f)), owning_building_guid = 63) - LocalObject(2059, Terminal.Constructor(Vector3(5849.445f, 3666.129f, 60.00837f), order_terminal), owning_building_guid = 63) - LocalObject(2060, Terminal.Constructor(Vector3(5849.445f, 3671.853f, 60.00837f), order_terminal), owning_building_guid = 63) - LocalObject(2061, Terminal.Constructor(Vector3(5849.445f, 3677.234f, 60.00837f), order_terminal), owning_building_guid = 63) - LocalObject(2753, SpawnTube.Constructor(Vector3(5838.706f, 3663.742f, 58.15837f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2754, SpawnTube.Constructor(Vector3(5838.706f, 3680.152f, 58.15837f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1858, FacilityTurret.Constructor(Vector3(5815.32f, 3663.295f, 87.61837f), manned_turret), owning_building_guid = 63) + LocalObject( + 2059, + Terminal.Constructor(Vector3(5849.445f, 3666.129f, 60.00837f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2060, + Terminal.Constructor(Vector3(5849.445f, 3671.853f, 60.00837f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2061, + Terminal.Constructor(Vector3(5849.445f, 3677.234f, 60.00837f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2753, + SpawnTube.Constructor(Vector3(5838.706f, 3663.742f, 58.15837f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2754, + SpawnTube.Constructor(Vector3(5838.706f, 3680.152f, 58.15837f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1858, + FacilityTurret.Constructor(Vector3(5815.32f, 3663.295f, 87.61837f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1858, 5088) - LocalObject(1859, FacilityTurret.Constructor(Vector3(5850.647f, 3688.707f, 87.61837f), manned_turret), owning_building_guid = 63) + LocalObject( + 1859, + FacilityTurret.Constructor(Vector3(5850.647f, 3688.707f, 87.61837f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1859, 5089) - LocalObject(2540, Painbox.Constructor(Vector3(5833.235f, 3669.803f, 60.17547f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2541, Painbox.Constructor(Vector3(5844.889f, 3678.086f, 58.77637f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2542, Painbox.Constructor(Vector3(5844.975f, 3666.223f, 58.77637f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 2540, + Painbox.Constructor(Vector3(5833.235f, 3669.803f, 60.17547f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2541, + Painbox.Constructor(Vector3(5844.889f, 3678.086f, 58.77637f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2542, + Painbox.Constructor(Vector3(5844.975f, 3666.223f, 58.77637f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building23() def Building23(): Unit = { // Name: S_Kusag_Tower Type: tower_a GUID: 64, MapID: 23 - LocalBuilding("S_Kusag_Tower", 64, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6422f, 3936f, 51.51198f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2801, CaptureTerminal.Constructor(Vector3(6438.587f, 3935.897f, 61.51098f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "S_Kusag_Tower", + 64, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6422f, 3936f, 51.51198f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2801, + CaptureTerminal.Constructor(Vector3(6438.587f, 3935.897f, 61.51098f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(613, Door.Constructor(Vector3(6434f, 3928f, 53.03298f)), owning_building_guid = 64) LocalObject(614, Door.Constructor(Vector3(6434f, 3928f, 73.03198f)), owning_building_guid = 64) LocalObject(615, Door.Constructor(Vector3(6434f, 3944f, 53.03298f)), owning_building_guid = 64) LocalObject(616, Door.Constructor(Vector3(6434f, 3944f, 73.03198f)), owning_building_guid = 64) LocalObject(2981, Door.Constructor(Vector3(6433.146f, 3924.794f, 42.84798f)), owning_building_guid = 64) LocalObject(2982, Door.Constructor(Vector3(6433.146f, 3941.204f, 42.84798f)), owning_building_guid = 64) - LocalObject(1227, IFFLock.Constructor(Vector3(6431.957f, 3944.811f, 52.97298f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 615) - LocalObject(1228, IFFLock.Constructor(Vector3(6431.957f, 3944.811f, 72.97298f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 616) - LocalObject(1229, IFFLock.Constructor(Vector3(6436.047f, 3927.189f, 52.97298f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 613) - LocalObject(1230, IFFLock.Constructor(Vector3(6436.047f, 3927.189f, 72.97298f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 614) + LocalObject( + 1227, + IFFLock.Constructor(Vector3(6431.957f, 3944.811f, 52.97298f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 615 + ) + LocalObject( + 1228, + IFFLock.Constructor(Vector3(6431.957f, 3944.811f, 72.97298f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 616 + ) + LocalObject( + 1229, + IFFLock.Constructor(Vector3(6436.047f, 3927.189f, 52.97298f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 613 + ) + LocalObject( + 1230, + IFFLock.Constructor(Vector3(6436.047f, 3927.189f, 72.97298f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 614 + ) LocalObject(1658, Locker.Constructor(Vector3(6437.716f, 3920.963f, 41.50598f)), owning_building_guid = 64) LocalObject(1659, Locker.Constructor(Vector3(6437.751f, 3942.835f, 41.50598f)), owning_building_guid = 64) LocalObject(1660, Locker.Constructor(Vector3(6439.053f, 3920.963f, 41.50598f)), owning_building_guid = 64) @@ -2131,35 +6219,106 @@ object Map04 { // Ishundar LocalObject(1663, Locker.Constructor(Vector3(6441.741f, 3942.835f, 41.50598f)), owning_building_guid = 64) LocalObject(1664, Locker.Constructor(Vector3(6443.143f, 3920.963f, 41.50598f)), owning_building_guid = 64) LocalObject(1665, Locker.Constructor(Vector3(6443.143f, 3942.835f, 41.50598f)), owning_building_guid = 64) - LocalObject(2065, Terminal.Constructor(Vector3(6443.445f, 3926.129f, 42.84398f), order_terminal), owning_building_guid = 64) - LocalObject(2066, Terminal.Constructor(Vector3(6443.445f, 3931.853f, 42.84398f), order_terminal), owning_building_guid = 64) - LocalObject(2067, Terminal.Constructor(Vector3(6443.445f, 3937.234f, 42.84398f), order_terminal), owning_building_guid = 64) - LocalObject(2757, SpawnTube.Constructor(Vector3(6432.706f, 3923.742f, 40.99398f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2758, SpawnTube.Constructor(Vector3(6432.706f, 3940.152f, 40.99398f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(1860, FacilityTurret.Constructor(Vector3(6409.32f, 3923.295f, 70.45398f), manned_turret), owning_building_guid = 64) + LocalObject( + 2065, + Terminal.Constructor(Vector3(6443.445f, 3926.129f, 42.84398f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2066, + Terminal.Constructor(Vector3(6443.445f, 3931.853f, 42.84398f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2067, + Terminal.Constructor(Vector3(6443.445f, 3937.234f, 42.84398f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2757, + SpawnTube.Constructor(Vector3(6432.706f, 3923.742f, 40.99398f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2758, + SpawnTube.Constructor(Vector3(6432.706f, 3940.152f, 40.99398f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 1860, + FacilityTurret.Constructor(Vector3(6409.32f, 3923.295f, 70.45398f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1860, 5090) - LocalObject(1861, FacilityTurret.Constructor(Vector3(6444.647f, 3948.707f, 70.45398f), manned_turret), owning_building_guid = 64) + LocalObject( + 1861, + FacilityTurret.Constructor(Vector3(6444.647f, 3948.707f, 70.45398f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1861, 5091) - LocalObject(2546, Painbox.Constructor(Vector3(6427.235f, 3929.803f, 43.01108f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2547, Painbox.Constructor(Vector3(6438.889f, 3938.086f, 41.61198f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2548, Painbox.Constructor(Vector3(6438.975f, 3926.223f, 41.61198f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 2546, + Painbox.Constructor(Vector3(6427.235f, 3929.803f, 43.01108f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2547, + Painbox.Constructor(Vector3(6438.889f, 3938.086f, 41.61198f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2548, + Painbox.Constructor(Vector3(6438.975f, 3926.223f, 41.61198f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building58() def Building58(): Unit = { // Name: Lahar_Tower Type: tower_a GUID: 65, MapID: 58 - LocalBuilding("Lahar_Tower", 65, 58, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6928f, 5100f, 54.45535f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2802, CaptureTerminal.Constructor(Vector3(6944.587f, 5099.897f, 64.45435f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "Lahar_Tower", + 65, + 58, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6928f, 5100f, 54.45535f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2802, + CaptureTerminal.Constructor(Vector3(6944.587f, 5099.897f, 64.45435f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(630, Door.Constructor(Vector3(6940f, 5092f, 55.97635f)), owning_building_guid = 65) LocalObject(631, Door.Constructor(Vector3(6940f, 5092f, 75.97534f)), owning_building_guid = 65) LocalObject(632, Door.Constructor(Vector3(6940f, 5108f, 55.97635f)), owning_building_guid = 65) LocalObject(633, Door.Constructor(Vector3(6940f, 5108f, 75.97534f)), owning_building_guid = 65) LocalObject(2986, Door.Constructor(Vector3(6939.146f, 5088.794f, 45.79134f)), owning_building_guid = 65) LocalObject(2987, Door.Constructor(Vector3(6939.146f, 5105.204f, 45.79134f)), owning_building_guid = 65) - LocalObject(1239, IFFLock.Constructor(Vector3(6937.957f, 5108.811f, 55.91634f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 632) - LocalObject(1240, IFFLock.Constructor(Vector3(6937.957f, 5108.811f, 75.91634f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 633) - LocalObject(1241, IFFLock.Constructor(Vector3(6942.047f, 5091.189f, 55.91634f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 630) - LocalObject(1242, IFFLock.Constructor(Vector3(6942.047f, 5091.189f, 75.91634f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 631) + LocalObject( + 1239, + IFFLock.Constructor(Vector3(6937.957f, 5108.811f, 55.91634f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 632 + ) + LocalObject( + 1240, + IFFLock.Constructor(Vector3(6937.957f, 5108.811f, 75.91634f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 633 + ) + LocalObject( + 1241, + IFFLock.Constructor(Vector3(6942.047f, 5091.189f, 55.91634f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 630 + ) + LocalObject( + 1242, + IFFLock.Constructor(Vector3(6942.047f, 5091.189f, 75.91634f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 631 + ) LocalObject(1678, Locker.Constructor(Vector3(6943.716f, 5084.963f, 44.44934f)), owning_building_guid = 65) LocalObject(1679, Locker.Constructor(Vector3(6943.751f, 5106.835f, 44.44934f)), owning_building_guid = 65) LocalObject(1680, Locker.Constructor(Vector3(6945.053f, 5084.963f, 44.44934f)), owning_building_guid = 65) @@ -2168,25 +6327,76 @@ object Map04 { // Ishundar LocalObject(1683, Locker.Constructor(Vector3(6947.741f, 5106.835f, 44.44934f)), owning_building_guid = 65) LocalObject(1684, Locker.Constructor(Vector3(6949.143f, 5084.963f, 44.44934f)), owning_building_guid = 65) LocalObject(1685, Locker.Constructor(Vector3(6949.143f, 5106.835f, 44.44934f)), owning_building_guid = 65) - LocalObject(2072, Terminal.Constructor(Vector3(6949.445f, 5090.129f, 45.78735f), order_terminal), owning_building_guid = 65) - LocalObject(2073, Terminal.Constructor(Vector3(6949.445f, 5095.853f, 45.78735f), order_terminal), owning_building_guid = 65) - LocalObject(2074, Terminal.Constructor(Vector3(6949.445f, 5101.234f, 45.78735f), order_terminal), owning_building_guid = 65) - LocalObject(2762, SpawnTube.Constructor(Vector3(6938.706f, 5087.742f, 43.93735f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2763, SpawnTube.Constructor(Vector3(6938.706f, 5104.152f, 43.93735f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(1868, FacilityTurret.Constructor(Vector3(6915.32f, 5087.295f, 73.39735f), manned_turret), owning_building_guid = 65) + LocalObject( + 2072, + Terminal.Constructor(Vector3(6949.445f, 5090.129f, 45.78735f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2073, + Terminal.Constructor(Vector3(6949.445f, 5095.853f, 45.78735f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2074, + Terminal.Constructor(Vector3(6949.445f, 5101.234f, 45.78735f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2762, + SpawnTube.Constructor(Vector3(6938.706f, 5087.742f, 43.93735f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2763, + SpawnTube.Constructor(Vector3(6938.706f, 5104.152f, 43.93735f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 1868, + FacilityTurret.Constructor(Vector3(6915.32f, 5087.295f, 73.39735f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1868, 5092) - LocalObject(1869, FacilityTurret.Constructor(Vector3(6950.647f, 5112.707f, 73.39735f), manned_turret), owning_building_guid = 65) + LocalObject( + 1869, + FacilityTurret.Constructor(Vector3(6950.647f, 5112.707f, 73.39735f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1869, 5093) - LocalObject(2549, Painbox.Constructor(Vector3(6933.235f, 5093.803f, 45.95444f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2550, Painbox.Constructor(Vector3(6944.889f, 5102.086f, 44.55534f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2551, Painbox.Constructor(Vector3(6944.975f, 5090.223f, 44.55534f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 2549, + Painbox.Constructor(Vector3(6933.235f, 5093.803f, 45.95444f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2550, + Painbox.Constructor(Vector3(6944.889f, 5102.086f, 44.55534f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2551, + Painbox.Constructor(Vector3(6944.975f, 5090.223f, 44.55534f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building32() def Building32(): Unit = { // Name: N_Searhus_Warpgate_Tower Type: tower_b GUID: 66, MapID: 32 - LocalBuilding("N_Searhus_Warpgate_Tower", 66, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1210f, 3966f, 43.99354f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2770, CaptureTerminal.Constructor(Vector3(1226.587f, 3965.897f, 63.99254f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "N_Searhus_Warpgate_Tower", + 66, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1210f, 3966f, 43.99354f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2770, + CaptureTerminal.Constructor(Vector3(1226.587f, 3965.897f, 63.99254f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(331, Door.Constructor(Vector3(1222f, 3958f, 45.51354f)), owning_building_guid = 66) LocalObject(332, Door.Constructor(Vector3(1222f, 3958f, 55.51354f)), owning_building_guid = 66) LocalObject(333, Door.Constructor(Vector3(1222f, 3958f, 75.51354f)), owning_building_guid = 66) @@ -2195,12 +6405,42 @@ object Map04 { // Ishundar LocalObject(336, Door.Constructor(Vector3(1222f, 3974f, 75.51354f)), owning_building_guid = 66) LocalObject(2892, Door.Constructor(Vector3(1221.147f, 3954.794f, 35.32954f)), owning_building_guid = 66) LocalObject(2893, Door.Constructor(Vector3(1221.147f, 3971.204f, 35.32954f)), owning_building_guid = 66) - LocalObject(994, IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 45.45454f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 334) - LocalObject(995, IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 55.45454f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 335) - LocalObject(996, IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 75.45454f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 336) - LocalObject(997, IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 45.45454f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 331) - LocalObject(998, IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 55.45454f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 332) - LocalObject(999, IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 75.45454f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 333) + LocalObject( + 994, + IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 45.45454f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 334 + ) + LocalObject( + 995, + IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 55.45454f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 335 + ) + LocalObject( + 996, + IFFLock.Constructor(Vector3(1219.957f, 3974.811f, 75.45454f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 336 + ) + LocalObject( + 997, + IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 45.45454f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 331 + ) + LocalObject( + 998, + IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 55.45454f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 332 + ) + LocalObject( + 999, + IFFLock.Constructor(Vector3(1224.047f, 3957.189f, 75.45454f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 333 + ) LocalObject(1275, Locker.Constructor(Vector3(1225.716f, 3950.963f, 33.98754f)), owning_building_guid = 66) LocalObject(1276, Locker.Constructor(Vector3(1225.751f, 3972.835f, 33.98754f)), owning_building_guid = 66) LocalObject(1277, Locker.Constructor(Vector3(1227.053f, 3950.963f, 33.98754f)), owning_building_guid = 66) @@ -2209,21 +6449,64 @@ object Map04 { // Ishundar LocalObject(1280, Locker.Constructor(Vector3(1229.741f, 3972.835f, 33.98754f)), owning_building_guid = 66) LocalObject(1281, Locker.Constructor(Vector3(1231.143f, 3950.963f, 33.98754f)), owning_building_guid = 66) LocalObject(1282, Locker.Constructor(Vector3(1231.143f, 3972.835f, 33.98754f)), owning_building_guid = 66) - LocalObject(1924, Terminal.Constructor(Vector3(1231.446f, 3956.129f, 35.32554f), order_terminal), owning_building_guid = 66) - LocalObject(1925, Terminal.Constructor(Vector3(1231.446f, 3961.853f, 35.32554f), order_terminal), owning_building_guid = 66) - LocalObject(1926, Terminal.Constructor(Vector3(1231.446f, 3967.234f, 35.32554f), order_terminal), owning_building_guid = 66) - LocalObject(2668, SpawnTube.Constructor(Vector3(1220.706f, 3953.742f, 33.47554f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2669, SpawnTube.Constructor(Vector3(1220.706f, 3970.152f, 33.47554f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2453, Painbox.Constructor(Vector3(1215.493f, 3958.849f, 35.28294f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2454, Painbox.Constructor(Vector3(1227.127f, 3956.078f, 34.09354f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2455, Painbox.Constructor(Vector3(1227.259f, 3968.107f, 34.09354f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 1924, + Terminal.Constructor(Vector3(1231.446f, 3956.129f, 35.32554f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1925, + Terminal.Constructor(Vector3(1231.446f, 3961.853f, 35.32554f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1926, + Terminal.Constructor(Vector3(1231.446f, 3967.234f, 35.32554f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2668, + SpawnTube.Constructor(Vector3(1220.706f, 3953.742f, 33.47554f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2669, + SpawnTube.Constructor(Vector3(1220.706f, 3970.152f, 33.47554f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2453, + Painbox.Constructor(Vector3(1215.493f, 3958.849f, 35.28294f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2454, + Painbox.Constructor(Vector3(1227.127f, 3956.078f, 34.09354f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2455, + Painbox.Constructor(Vector3(1227.259f, 3968.107f, 34.09354f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building39() def Building39(): Unit = { // Name: SE_Baal_Tower Type: tower_b GUID: 67, MapID: 39 - LocalBuilding("SE_Baal_Tower", 67, 39, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1548f, 4666f, 89.42425f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2772, CaptureTerminal.Constructor(Vector3(1564.587f, 4665.897f, 109.4232f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "SE_Baal_Tower", + 67, + 39, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1548f, 4666f, 89.42425f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2772, + CaptureTerminal.Constructor(Vector3(1564.587f, 4665.897f, 109.4232f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(341, Door.Constructor(Vector3(1560f, 4658f, 90.94424f)), owning_building_guid = 67) LocalObject(342, Door.Constructor(Vector3(1560f, 4658f, 100.9442f)), owning_building_guid = 67) LocalObject(343, Door.Constructor(Vector3(1560f, 4658f, 120.9442f)), owning_building_guid = 67) @@ -2232,12 +6515,42 @@ object Map04 { // Ishundar LocalObject(346, Door.Constructor(Vector3(1560f, 4674f, 120.9442f)), owning_building_guid = 67) LocalObject(2896, Door.Constructor(Vector3(1559.147f, 4654.794f, 80.76025f)), owning_building_guid = 67) LocalObject(2897, Door.Constructor(Vector3(1559.147f, 4671.204f, 80.76025f)), owning_building_guid = 67) - LocalObject(1004, IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 90.88525f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 344) - LocalObject(1005, IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 100.8852f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 345) - LocalObject(1006, IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 120.8852f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 346) - LocalObject(1007, IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 90.88525f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 341) - LocalObject(1008, IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 100.8852f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 342) - LocalObject(1009, IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 120.8852f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 343) + LocalObject( + 1004, + IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 90.88525f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 344 + ) + LocalObject( + 1005, + IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 100.8852f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 345 + ) + LocalObject( + 1006, + IFFLock.Constructor(Vector3(1557.957f, 4674.811f, 120.8852f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 346 + ) + LocalObject( + 1007, + IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 90.88525f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 341 + ) + LocalObject( + 1008, + IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 100.8852f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 342 + ) + LocalObject( + 1009, + IFFLock.Constructor(Vector3(1562.047f, 4657.189f, 120.8852f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 343 + ) LocalObject(1291, Locker.Constructor(Vector3(1563.716f, 4650.963f, 79.41825f)), owning_building_guid = 67) LocalObject(1292, Locker.Constructor(Vector3(1563.751f, 4672.835f, 79.41825f)), owning_building_guid = 67) LocalObject(1293, Locker.Constructor(Vector3(1565.053f, 4650.963f, 79.41825f)), owning_building_guid = 67) @@ -2246,21 +6559,64 @@ object Map04 { // Ishundar LocalObject(1296, Locker.Constructor(Vector3(1567.741f, 4672.835f, 79.41825f)), owning_building_guid = 67) LocalObject(1297, Locker.Constructor(Vector3(1569.143f, 4650.963f, 79.41825f)), owning_building_guid = 67) LocalObject(1298, Locker.Constructor(Vector3(1569.143f, 4672.835f, 79.41825f)), owning_building_guid = 67) - LocalObject(1930, Terminal.Constructor(Vector3(1569.446f, 4656.129f, 80.75625f), order_terminal), owning_building_guid = 67) - LocalObject(1931, Terminal.Constructor(Vector3(1569.446f, 4661.853f, 80.75625f), order_terminal), owning_building_guid = 67) - LocalObject(1932, Terminal.Constructor(Vector3(1569.446f, 4667.234f, 80.75625f), order_terminal), owning_building_guid = 67) - LocalObject(2672, SpawnTube.Constructor(Vector3(1558.706f, 4653.742f, 78.90625f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2673, SpawnTube.Constructor(Vector3(1558.706f, 4670.152f, 78.90625f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2459, Painbox.Constructor(Vector3(1553.493f, 4658.849f, 80.71365f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2461, Painbox.Constructor(Vector3(1565.127f, 4656.078f, 79.52425f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2462, Painbox.Constructor(Vector3(1565.259f, 4668.107f, 79.52425f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 1930, + Terminal.Constructor(Vector3(1569.446f, 4656.129f, 80.75625f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1931, + Terminal.Constructor(Vector3(1569.446f, 4661.853f, 80.75625f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1932, + Terminal.Constructor(Vector3(1569.446f, 4667.234f, 80.75625f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2672, + SpawnTube.Constructor(Vector3(1558.706f, 4653.742f, 78.90625f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2673, + SpawnTube.Constructor(Vector3(1558.706f, 4670.152f, 78.90625f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2459, + Painbox.Constructor(Vector3(1553.493f, 4658.849f, 80.71365f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2461, + Painbox.Constructor(Vector3(1565.127f, 4656.078f, 79.52425f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2462, + Painbox.Constructor(Vector3(1565.259f, 4668.107f, 79.52425f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building31() def Building31(): Unit = { // Name: E_Searhus_Warpgate_Tower Type: tower_b GUID: 68, MapID: 31 - LocalBuilding("E_Searhus_Warpgate_Tower", 68, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1558f, 2872f, 31.19086f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2773, CaptureTerminal.Constructor(Vector3(1574.587f, 2871.897f, 51.18986f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "E_Searhus_Warpgate_Tower", + 68, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1558f, 2872f, 31.19086f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2773, + CaptureTerminal.Constructor(Vector3(1574.587f, 2871.897f, 51.18986f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(347, Door.Constructor(Vector3(1570f, 2864f, 32.71085f)), owning_building_guid = 68) LocalObject(348, Door.Constructor(Vector3(1570f, 2864f, 42.71085f)), owning_building_guid = 68) LocalObject(349, Door.Constructor(Vector3(1570f, 2864f, 62.71085f)), owning_building_guid = 68) @@ -2269,12 +6625,42 @@ object Map04 { // Ishundar LocalObject(352, Door.Constructor(Vector3(1570f, 2880f, 62.71085f)), owning_building_guid = 68) LocalObject(2898, Door.Constructor(Vector3(1569.147f, 2860.794f, 22.52686f)), owning_building_guid = 68) LocalObject(2899, Door.Constructor(Vector3(1569.147f, 2877.204f, 22.52686f)), owning_building_guid = 68) - LocalObject(1010, IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 32.65186f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 350) - LocalObject(1011, IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 42.65186f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 351) - LocalObject(1012, IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 62.65186f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 352) - LocalObject(1013, IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 32.65186f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 347) - LocalObject(1014, IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 42.65186f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 348) - LocalObject(1015, IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 62.65186f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 349) + LocalObject( + 1010, + IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 32.65186f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 350 + ) + LocalObject( + 1011, + IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 42.65186f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 351 + ) + LocalObject( + 1012, + IFFLock.Constructor(Vector3(1567.957f, 2880.811f, 62.65186f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 352 + ) + LocalObject( + 1013, + IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 32.65186f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 347 + ) + LocalObject( + 1014, + IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 42.65186f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 348 + ) + LocalObject( + 1015, + IFFLock.Constructor(Vector3(1572.047f, 2863.189f, 62.65186f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 349 + ) LocalObject(1299, Locker.Constructor(Vector3(1573.716f, 2856.963f, 21.18486f)), owning_building_guid = 68) LocalObject(1300, Locker.Constructor(Vector3(1573.751f, 2878.835f, 21.18486f)), owning_building_guid = 68) LocalObject(1301, Locker.Constructor(Vector3(1575.053f, 2856.963f, 21.18486f)), owning_building_guid = 68) @@ -2283,21 +6669,64 @@ object Map04 { // Ishundar LocalObject(1304, Locker.Constructor(Vector3(1577.741f, 2878.835f, 21.18486f)), owning_building_guid = 68) LocalObject(1305, Locker.Constructor(Vector3(1579.143f, 2856.963f, 21.18486f)), owning_building_guid = 68) LocalObject(1306, Locker.Constructor(Vector3(1579.143f, 2878.835f, 21.18486f)), owning_building_guid = 68) - LocalObject(1933, Terminal.Constructor(Vector3(1579.446f, 2862.129f, 22.52285f), order_terminal), owning_building_guid = 68) - LocalObject(1934, Terminal.Constructor(Vector3(1579.446f, 2867.853f, 22.52285f), order_terminal), owning_building_guid = 68) - LocalObject(1935, Terminal.Constructor(Vector3(1579.446f, 2873.234f, 22.52285f), order_terminal), owning_building_guid = 68) - LocalObject(2674, SpawnTube.Constructor(Vector3(1568.706f, 2859.742f, 20.67286f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2675, SpawnTube.Constructor(Vector3(1568.706f, 2876.152f, 20.67286f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2460, Painbox.Constructor(Vector3(1563.493f, 2864.849f, 22.48026f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2463, Painbox.Constructor(Vector3(1575.127f, 2862.078f, 21.29086f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2464, Painbox.Constructor(Vector3(1575.259f, 2874.107f, 21.29086f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 1933, + Terminal.Constructor(Vector3(1579.446f, 2862.129f, 22.52285f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1934, + Terminal.Constructor(Vector3(1579.446f, 2867.853f, 22.52285f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1935, + Terminal.Constructor(Vector3(1579.446f, 2873.234f, 22.52285f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2674, + SpawnTube.Constructor(Vector3(1568.706f, 2859.742f, 20.67286f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2675, + SpawnTube.Constructor(Vector3(1568.706f, 2876.152f, 20.67286f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2460, + Painbox.Constructor(Vector3(1563.493f, 2864.849f, 22.48026f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2463, + Painbox.Constructor(Vector3(1575.127f, 2862.078f, 21.29086f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2464, + Painbox.Constructor(Vector3(1575.259f, 2874.107f, 21.29086f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building35() def Building35(): Unit = { // Name: SW_Hanish_Tower Type: tower_b GUID: 69, MapID: 35 - LocalBuilding("SW_Hanish_Tower", 69, 35, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3086f, 5040f, 81.67988f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2779, CaptureTerminal.Constructor(Vector3(3102.587f, 5039.897f, 101.6789f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "SW_Hanish_Tower", + 69, + 35, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3086f, 5040f, 81.67988f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2779, + CaptureTerminal.Constructor(Vector3(3102.587f, 5039.897f, 101.6789f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(414, Door.Constructor(Vector3(3098f, 5032f, 83.19987f)), owning_building_guid = 69) LocalObject(415, Door.Constructor(Vector3(3098f, 5032f, 93.19987f)), owning_building_guid = 69) LocalObject(416, Door.Constructor(Vector3(3098f, 5032f, 113.1999f)), owning_building_guid = 69) @@ -2306,12 +6735,42 @@ object Map04 { // Ishundar LocalObject(419, Door.Constructor(Vector3(3098f, 5048f, 113.1999f)), owning_building_guid = 69) LocalObject(2917, Door.Constructor(Vector3(3097.147f, 5028.794f, 73.01588f)), owning_building_guid = 69) LocalObject(2918, Door.Constructor(Vector3(3097.147f, 5045.204f, 73.01588f)), owning_building_guid = 69) - LocalObject(1062, IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 83.14088f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 417) - LocalObject(1063, IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 93.14088f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 418) - LocalObject(1064, IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 113.1409f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 419) - LocalObject(1066, IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 83.14088f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 414) - LocalObject(1067, IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 93.14088f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 415) - LocalObject(1068, IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 113.1409f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 416) + LocalObject( + 1062, + IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 83.14088f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 417 + ) + LocalObject( + 1063, + IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 93.14088f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 418 + ) + LocalObject( + 1064, + IFFLock.Constructor(Vector3(3095.957f, 5048.811f, 113.1409f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 419 + ) + LocalObject( + 1066, + IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 83.14088f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 414 + ) + LocalObject( + 1067, + IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 93.14088f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 415 + ) + LocalObject( + 1068, + IFFLock.Constructor(Vector3(3100.047f, 5031.189f, 113.1409f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 416 + ) LocalObject(1384, Locker.Constructor(Vector3(3101.716f, 5024.963f, 71.67388f)), owning_building_guid = 69) LocalObject(1385, Locker.Constructor(Vector3(3101.751f, 5046.835f, 71.67388f)), owning_building_guid = 69) LocalObject(1386, Locker.Constructor(Vector3(3103.053f, 5024.963f, 71.67388f)), owning_building_guid = 69) @@ -2320,21 +6779,64 @@ object Map04 { // Ishundar LocalObject(1389, Locker.Constructor(Vector3(3105.741f, 5046.835f, 71.67388f)), owning_building_guid = 69) LocalObject(1390, Locker.Constructor(Vector3(3107.143f, 5024.963f, 71.67388f)), owning_building_guid = 69) LocalObject(1391, Locker.Constructor(Vector3(3107.143f, 5046.835f, 71.67388f)), owning_building_guid = 69) - LocalObject(1966, Terminal.Constructor(Vector3(3107.446f, 5030.129f, 73.01188f), order_terminal), owning_building_guid = 69) - LocalObject(1967, Terminal.Constructor(Vector3(3107.446f, 5035.853f, 73.01188f), order_terminal), owning_building_guid = 69) - LocalObject(1968, Terminal.Constructor(Vector3(3107.446f, 5041.234f, 73.01188f), order_terminal), owning_building_guid = 69) - LocalObject(2693, SpawnTube.Constructor(Vector3(3096.706f, 5027.742f, 71.16188f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2694, SpawnTube.Constructor(Vector3(3096.706f, 5044.152f, 71.16188f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2480, Painbox.Constructor(Vector3(3091.493f, 5032.849f, 72.96928f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2481, Painbox.Constructor(Vector3(3103.127f, 5030.078f, 71.77988f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2482, Painbox.Constructor(Vector3(3103.259f, 5042.107f, 71.77988f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 1966, + Terminal.Constructor(Vector3(3107.446f, 5030.129f, 73.01188f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1967, + Terminal.Constructor(Vector3(3107.446f, 5035.853f, 73.01188f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1968, + Terminal.Constructor(Vector3(3107.446f, 5041.234f, 73.01188f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2693, + SpawnTube.Constructor(Vector3(3096.706f, 5027.742f, 71.16188f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2694, + SpawnTube.Constructor(Vector3(3096.706f, 5044.152f, 71.16188f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2480, + Painbox.Constructor(Vector3(3091.493f, 5032.849f, 72.96928f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2481, + Painbox.Constructor(Vector3(3103.127f, 5030.078f, 71.77988f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2482, + Painbox.Constructor(Vector3(3103.259f, 5042.107f, 71.77988f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building28() def Building28(): Unit = { // Name: NE_Enkidu_Tower Type: tower_b GUID: 70, MapID: 28 - LocalBuilding("NE_Enkidu_Tower", 70, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3410f, 4294f, 30.17417f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2783, CaptureTerminal.Constructor(Vector3(3426.587f, 4293.897f, 50.17317f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "NE_Enkidu_Tower", + 70, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3410f, 4294f, 30.17417f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2783, + CaptureTerminal.Constructor(Vector3(3426.587f, 4293.897f, 50.17317f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(458, Door.Constructor(Vector3(3422f, 4286f, 31.69417f)), owning_building_guid = 70) LocalObject(459, Door.Constructor(Vector3(3422f, 4286f, 41.69417f)), owning_building_guid = 70) LocalObject(460, Door.Constructor(Vector3(3422f, 4286f, 61.69417f)), owning_building_guid = 70) @@ -2343,12 +6845,42 @@ object Map04 { // Ishundar LocalObject(463, Door.Constructor(Vector3(3422f, 4302f, 61.69417f)), owning_building_guid = 70) LocalObject(2930, Door.Constructor(Vector3(3421.147f, 4282.794f, 21.51017f)), owning_building_guid = 70) LocalObject(2931, Door.Constructor(Vector3(3421.147f, 4299.204f, 21.51017f)), owning_building_guid = 70) - LocalObject(1095, IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 31.63517f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 461) - LocalObject(1096, IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 41.63517f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 462) - LocalObject(1097, IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 61.63517f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 463) - LocalObject(1098, IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 31.63517f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 458) - LocalObject(1099, IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 41.63517f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 459) - LocalObject(1100, IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 61.63517f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 460) + LocalObject( + 1095, + IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 31.63517f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 461 + ) + LocalObject( + 1096, + IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 41.63517f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 462 + ) + LocalObject( + 1097, + IFFLock.Constructor(Vector3(3419.957f, 4302.811f, 61.63517f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 463 + ) + LocalObject( + 1098, + IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 31.63517f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 458 + ) + LocalObject( + 1099, + IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 41.63517f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 459 + ) + LocalObject( + 1100, + IFFLock.Constructor(Vector3(3424.047f, 4285.189f, 61.63517f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 460 + ) LocalObject(1436, Locker.Constructor(Vector3(3425.716f, 4278.963f, 20.16817f)), owning_building_guid = 70) LocalObject(1437, Locker.Constructor(Vector3(3425.751f, 4300.835f, 20.16817f)), owning_building_guid = 70) LocalObject(1438, Locker.Constructor(Vector3(3427.053f, 4278.963f, 20.16817f)), owning_building_guid = 70) @@ -2357,21 +6889,64 @@ object Map04 { // Ishundar LocalObject(1441, Locker.Constructor(Vector3(3429.741f, 4300.835f, 20.16817f)), owning_building_guid = 70) LocalObject(1442, Locker.Constructor(Vector3(3431.143f, 4278.963f, 20.16817f)), owning_building_guid = 70) LocalObject(1443, Locker.Constructor(Vector3(3431.143f, 4300.835f, 20.16817f)), owning_building_guid = 70) - LocalObject(1985, Terminal.Constructor(Vector3(3431.446f, 4284.129f, 21.50617f), order_terminal), owning_building_guid = 70) - LocalObject(1986, Terminal.Constructor(Vector3(3431.446f, 4289.853f, 21.50617f), order_terminal), owning_building_guid = 70) - LocalObject(1987, Terminal.Constructor(Vector3(3431.446f, 4295.234f, 21.50617f), order_terminal), owning_building_guid = 70) - LocalObject(2706, SpawnTube.Constructor(Vector3(3420.706f, 4281.742f, 19.65617f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2707, SpawnTube.Constructor(Vector3(3420.706f, 4298.152f, 19.65617f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2492, Painbox.Constructor(Vector3(3415.493f, 4286.849f, 21.46357f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2493, Painbox.Constructor(Vector3(3427.127f, 4284.078f, 20.27417f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2494, Painbox.Constructor(Vector3(3427.259f, 4296.107f, 20.27417f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 1985, + Terminal.Constructor(Vector3(3431.446f, 4284.129f, 21.50617f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1986, + Terminal.Constructor(Vector3(3431.446f, 4289.853f, 21.50617f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1987, + Terminal.Constructor(Vector3(3431.446f, 4295.234f, 21.50617f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2706, + SpawnTube.Constructor(Vector3(3420.706f, 4281.742f, 19.65617f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2707, + SpawnTube.Constructor(Vector3(3420.706f, 4298.152f, 19.65617f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2492, + Painbox.Constructor(Vector3(3415.493f, 4286.849f, 21.46357f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2493, + Painbox.Constructor(Vector3(3427.127f, 4284.078f, 20.27417f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2494, + Painbox.Constructor(Vector3(3427.259f, 4296.107f, 20.27417f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building21() def Building21(): Unit = { // Name: NE_Neti_Tower Type: tower_b GUID: 71, MapID: 21 - LocalBuilding("NE_Neti_Tower", 71, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4162f, 3218f, 95.02856f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2787, CaptureTerminal.Constructor(Vector3(4178.587f, 3217.897f, 115.0276f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "NE_Neti_Tower", + 71, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4162f, 3218f, 95.02856f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2787, + CaptureTerminal.Constructor(Vector3(4178.587f, 3217.897f, 115.0276f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(503, Door.Constructor(Vector3(4174f, 3210f, 96.54855f)), owning_building_guid = 71) LocalObject(504, Door.Constructor(Vector3(4174f, 3210f, 106.5486f)), owning_building_guid = 71) LocalObject(505, Door.Constructor(Vector3(4174f, 3210f, 126.5486f)), owning_building_guid = 71) @@ -2380,12 +6955,42 @@ object Map04 { // Ishundar LocalObject(508, Door.Constructor(Vector3(4174f, 3226f, 126.5486f)), owning_building_guid = 71) LocalObject(2944, Door.Constructor(Vector3(4173.147f, 3206.794f, 86.36456f)), owning_building_guid = 71) LocalObject(2945, Door.Constructor(Vector3(4173.147f, 3223.204f, 86.36456f)), owning_building_guid = 71) - LocalObject(1132, IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 96.48956f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 506) - LocalObject(1133, IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 106.4896f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 507) - LocalObject(1134, IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 126.4896f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 508) - LocalObject(1135, IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 96.48956f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 503) - LocalObject(1136, IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 106.4896f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 504) - LocalObject(1137, IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 126.4896f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 505) + LocalObject( + 1132, + IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 96.48956f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 506 + ) + LocalObject( + 1133, + IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 106.4896f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 507 + ) + LocalObject( + 1134, + IFFLock.Constructor(Vector3(4171.957f, 3226.811f, 126.4896f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 508 + ) + LocalObject( + 1135, + IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 96.48956f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 503 + ) + LocalObject( + 1136, + IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 106.4896f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 504 + ) + LocalObject( + 1137, + IFFLock.Constructor(Vector3(4176.047f, 3209.189f, 126.4896f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 505 + ) LocalObject(1501, Locker.Constructor(Vector3(4177.716f, 3202.963f, 85.02256f)), owning_building_guid = 71) LocalObject(1502, Locker.Constructor(Vector3(4177.751f, 3224.835f, 85.02256f)), owning_building_guid = 71) LocalObject(1503, Locker.Constructor(Vector3(4179.053f, 3202.963f, 85.02256f)), owning_building_guid = 71) @@ -2394,21 +6999,64 @@ object Map04 { // Ishundar LocalObject(1506, Locker.Constructor(Vector3(4181.741f, 3224.835f, 85.02256f)), owning_building_guid = 71) LocalObject(1507, Locker.Constructor(Vector3(4183.143f, 3202.963f, 85.02256f)), owning_building_guid = 71) LocalObject(1508, Locker.Constructor(Vector3(4183.143f, 3224.835f, 85.02256f)), owning_building_guid = 71) - LocalObject(2008, Terminal.Constructor(Vector3(4183.446f, 3208.129f, 86.36056f), order_terminal), owning_building_guid = 71) - LocalObject(2009, Terminal.Constructor(Vector3(4183.446f, 3213.853f, 86.36056f), order_terminal), owning_building_guid = 71) - LocalObject(2010, Terminal.Constructor(Vector3(4183.446f, 3219.234f, 86.36056f), order_terminal), owning_building_guid = 71) - LocalObject(2720, SpawnTube.Constructor(Vector3(4172.706f, 3205.742f, 84.51056f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2721, SpawnTube.Constructor(Vector3(4172.706f, 3222.152f, 84.51056f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2504, Painbox.Constructor(Vector3(4167.493f, 3210.849f, 86.31796f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2505, Painbox.Constructor(Vector3(4179.127f, 3208.078f, 85.12856f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2506, Painbox.Constructor(Vector3(4179.259f, 3220.107f, 85.12856f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 2008, + Terminal.Constructor(Vector3(4183.446f, 3208.129f, 86.36056f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2009, + Terminal.Constructor(Vector3(4183.446f, 3213.853f, 86.36056f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2010, + Terminal.Constructor(Vector3(4183.446f, 3219.234f, 86.36056f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2720, + SpawnTube.Constructor(Vector3(4172.706f, 3205.742f, 84.51056f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2721, + SpawnTube.Constructor(Vector3(4172.706f, 3222.152f, 84.51056f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2504, + Painbox.Constructor(Vector3(4167.493f, 3210.849f, 86.31796f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2505, + Painbox.Constructor(Vector3(4179.127f, 3208.078f, 85.12856f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2506, + Painbox.Constructor(Vector3(4179.259f, 3220.107f, 85.12856f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building27() def Building27(): Unit = { // Name: S_Irkalla_Tower Type: tower_b GUID: 72, MapID: 27 - LocalBuilding("S_Irkalla_Tower", 72, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4414f, 4176f, 63.80005f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2790, CaptureTerminal.Constructor(Vector3(4430.587f, 4175.897f, 83.79904f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "S_Irkalla_Tower", + 72, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4414f, 4176f, 63.80005f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2790, + CaptureTerminal.Constructor(Vector3(4430.587f, 4175.897f, 83.79904f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(529, Door.Constructor(Vector3(4426f, 4168f, 65.32005f)), owning_building_guid = 72) LocalObject(530, Door.Constructor(Vector3(4426f, 4168f, 75.32005f)), owning_building_guid = 72) LocalObject(531, Door.Constructor(Vector3(4426f, 4168f, 95.32005f)), owning_building_guid = 72) @@ -2417,12 +7065,42 @@ object Map04 { // Ishundar LocalObject(534, Door.Constructor(Vector3(4426f, 4184f, 95.32005f)), owning_building_guid = 72) LocalObject(2953, Door.Constructor(Vector3(4425.147f, 4164.794f, 55.13605f)), owning_building_guid = 72) LocalObject(2954, Door.Constructor(Vector3(4425.147f, 4181.204f, 55.13605f)), owning_building_guid = 72) - LocalObject(1152, IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 65.26105f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 532) - LocalObject(1153, IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 75.26105f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 533) - LocalObject(1154, IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 95.26105f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 534) - LocalObject(1157, IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 65.26105f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 529) - LocalObject(1158, IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 75.26105f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 530) - LocalObject(1159, IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 95.26105f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 531) + LocalObject( + 1152, + IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 65.26105f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 532 + ) + LocalObject( + 1153, + IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 75.26105f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 533 + ) + LocalObject( + 1154, + IFFLock.Constructor(Vector3(4423.957f, 4184.811f, 95.26105f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 534 + ) + LocalObject( + 1157, + IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 65.26105f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 529 + ) + LocalObject( + 1158, + IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 75.26105f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 530 + ) + LocalObject( + 1159, + IFFLock.Constructor(Vector3(4428.047f, 4167.189f, 95.26105f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 531 + ) LocalObject(1531, Locker.Constructor(Vector3(4429.716f, 4160.963f, 53.79404f)), owning_building_guid = 72) LocalObject(1532, Locker.Constructor(Vector3(4429.751f, 4182.835f, 53.79404f)), owning_building_guid = 72) LocalObject(1534, Locker.Constructor(Vector3(4431.053f, 4160.963f, 53.79404f)), owning_building_guid = 72) @@ -2431,21 +7109,64 @@ object Map04 { // Ishundar LocalObject(1542, Locker.Constructor(Vector3(4433.741f, 4182.835f, 53.79404f)), owning_building_guid = 72) LocalObject(1543, Locker.Constructor(Vector3(4435.143f, 4160.963f, 53.79404f)), owning_building_guid = 72) LocalObject(1544, Locker.Constructor(Vector3(4435.143f, 4182.835f, 53.79404f)), owning_building_guid = 72) - LocalObject(2021, Terminal.Constructor(Vector3(4435.446f, 4166.129f, 55.13205f), order_terminal), owning_building_guid = 72) - LocalObject(2022, Terminal.Constructor(Vector3(4435.446f, 4171.853f, 55.13205f), order_terminal), owning_building_guid = 72) - LocalObject(2023, Terminal.Constructor(Vector3(4435.446f, 4177.234f, 55.13205f), order_terminal), owning_building_guid = 72) - LocalObject(2729, SpawnTube.Constructor(Vector3(4424.706f, 4163.742f, 53.28204f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2730, SpawnTube.Constructor(Vector3(4424.706f, 4180.152f, 53.28204f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2511, Painbox.Constructor(Vector3(4419.493f, 4168.849f, 55.08945f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2514, Painbox.Constructor(Vector3(4431.127f, 4166.078f, 53.90005f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2515, Painbox.Constructor(Vector3(4431.259f, 4178.107f, 53.90005f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 2021, + Terminal.Constructor(Vector3(4435.446f, 4166.129f, 55.13205f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2022, + Terminal.Constructor(Vector3(4435.446f, 4171.853f, 55.13205f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2023, + Terminal.Constructor(Vector3(4435.446f, 4177.234f, 55.13205f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2729, + SpawnTube.Constructor(Vector3(4424.706f, 4163.742f, 53.28204f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2730, + SpawnTube.Constructor(Vector3(4424.706f, 4180.152f, 53.28204f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2511, + Painbox.Constructor(Vector3(4419.493f, 4168.849f, 55.08945f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2514, + Painbox.Constructor(Vector3(4431.127f, 4166.078f, 53.90005f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2515, + Painbox.Constructor(Vector3(4431.259f, 4178.107f, 53.90005f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building59() def Building59(): Unit = { // Name: VSSanc_Warpgate_Tower Type: tower_b GUID: 73, MapID: 59 - LocalBuilding("VSSanc_Warpgate_Tower", 73, 59, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4658f, 6628f, 42.60658f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2793, CaptureTerminal.Constructor(Vector3(4674.587f, 6627.897f, 62.60558f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "VSSanc_Warpgate_Tower", + 73, + 59, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4658f, 6628f, 42.60658f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2793, + CaptureTerminal.Constructor(Vector3(4674.587f, 6627.897f, 62.60558f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(546, Door.Constructor(Vector3(4670f, 6620f, 44.12658f)), owning_building_guid = 73) LocalObject(547, Door.Constructor(Vector3(4670f, 6620f, 54.12658f)), owning_building_guid = 73) LocalObject(548, Door.Constructor(Vector3(4670f, 6620f, 74.12659f)), owning_building_guid = 73) @@ -2454,12 +7175,42 @@ object Map04 { // Ishundar LocalObject(551, Door.Constructor(Vector3(4670f, 6636f, 74.12659f)), owning_building_guid = 73) LocalObject(2959, Door.Constructor(Vector3(4669.147f, 6616.794f, 33.94258f)), owning_building_guid = 73) LocalObject(2960, Door.Constructor(Vector3(4669.147f, 6633.204f, 33.94258f)), owning_building_guid = 73) - LocalObject(1168, IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 44.06758f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 549) - LocalObject(1169, IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 54.06758f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 550) - LocalObject(1170, IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 74.06758f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 551) - LocalObject(1171, IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 44.06758f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 546) - LocalObject(1172, IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 54.06758f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 547) - LocalObject(1173, IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 74.06758f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 548) + LocalObject( + 1168, + IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 44.06758f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 549 + ) + LocalObject( + 1169, + IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 54.06758f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 550 + ) + LocalObject( + 1170, + IFFLock.Constructor(Vector3(4667.957f, 6636.811f, 74.06758f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 551 + ) + LocalObject( + 1171, + IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 44.06758f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 546 + ) + LocalObject( + 1172, + IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 54.06758f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 547 + ) + LocalObject( + 1173, + IFFLock.Constructor(Vector3(4672.047f, 6619.189f, 74.06758f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 548 + ) LocalObject(1561, Locker.Constructor(Vector3(4673.716f, 6612.963f, 32.60058f)), owning_building_guid = 73) LocalObject(1562, Locker.Constructor(Vector3(4673.751f, 6634.835f, 32.60058f)), owning_building_guid = 73) LocalObject(1563, Locker.Constructor(Vector3(4675.053f, 6612.963f, 32.60058f)), owning_building_guid = 73) @@ -2468,21 +7219,64 @@ object Map04 { // Ishundar LocalObject(1566, Locker.Constructor(Vector3(4677.741f, 6634.835f, 32.60058f)), owning_building_guid = 73) LocalObject(1567, Locker.Constructor(Vector3(4679.143f, 6612.963f, 32.60058f)), owning_building_guid = 73) LocalObject(1568, Locker.Constructor(Vector3(4679.143f, 6634.835f, 32.60058f)), owning_building_guid = 73) - LocalObject(2030, Terminal.Constructor(Vector3(4679.446f, 6618.129f, 33.93858f), order_terminal), owning_building_guid = 73) - LocalObject(2031, Terminal.Constructor(Vector3(4679.446f, 6623.853f, 33.93858f), order_terminal), owning_building_guid = 73) - LocalObject(2032, Terminal.Constructor(Vector3(4679.446f, 6629.234f, 33.93858f), order_terminal), owning_building_guid = 73) - LocalObject(2735, SpawnTube.Constructor(Vector3(4668.706f, 6615.742f, 32.08858f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2736, SpawnTube.Constructor(Vector3(4668.706f, 6632.152f, 32.08858f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2522, Painbox.Constructor(Vector3(4663.493f, 6620.849f, 33.89598f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2523, Painbox.Constructor(Vector3(4675.127f, 6618.078f, 32.70658f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2524, Painbox.Constructor(Vector3(4675.259f, 6630.107f, 32.70658f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 2030, + Terminal.Constructor(Vector3(4679.446f, 6618.129f, 33.93858f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2031, + Terminal.Constructor(Vector3(4679.446f, 6623.853f, 33.93858f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2032, + Terminal.Constructor(Vector3(4679.446f, 6629.234f, 33.93858f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2735, + SpawnTube.Constructor(Vector3(4668.706f, 6615.742f, 32.08858f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2736, + SpawnTube.Constructor(Vector3(4668.706f, 6632.152f, 32.08858f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2522, + Painbox.Constructor(Vector3(4663.493f, 6620.849f, 33.89598f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2523, + Painbox.Constructor(Vector3(4675.127f, 6618.078f, 32.70658f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2524, + Painbox.Constructor(Vector3(4675.259f, 6630.107f, 32.70658f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building25() def Building25(): Unit = { // Name: N_Ceryshen_Warpgate_Tower Type: tower_b GUID: 74, MapID: 25 - LocalBuilding("N_Ceryshen_Warpgate_Tower", 74, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5394f, 4228f, 38.99171f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2797, CaptureTerminal.Constructor(Vector3(5410.587f, 4227.897f, 58.99071f), secondary_capture), owning_building_guid = 74) + LocalBuilding( + "N_Ceryshen_Warpgate_Tower", + 74, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5394f, 4228f, 38.99171f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2797, + CaptureTerminal.Constructor(Vector3(5410.587f, 4227.897f, 58.99071f), secondary_capture), + owning_building_guid = 74 + ) LocalObject(590, Door.Constructor(Vector3(5406f, 4220f, 40.51171f)), owning_building_guid = 74) LocalObject(591, Door.Constructor(Vector3(5406f, 4220f, 50.51171f)), owning_building_guid = 74) LocalObject(592, Door.Constructor(Vector3(5406f, 4220f, 70.5117f)), owning_building_guid = 74) @@ -2491,12 +7285,42 @@ object Map04 { // Ishundar LocalObject(595, Door.Constructor(Vector3(5406f, 4236f, 70.5117f)), owning_building_guid = 74) LocalObject(2973, Door.Constructor(Vector3(5405.147f, 4216.794f, 30.32771f)), owning_building_guid = 74) LocalObject(2974, Door.Constructor(Vector3(5405.147f, 4233.204f, 30.32771f)), owning_building_guid = 74) - LocalObject(1205, IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 40.45271f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 593) - LocalObject(1206, IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 50.45271f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 594) - LocalObject(1207, IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 70.45271f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 595) - LocalObject(1208, IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 40.45271f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 590) - LocalObject(1209, IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 50.45271f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 591) - LocalObject(1210, IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 70.45271f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 592) + LocalObject( + 1205, + IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 40.45271f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 593 + ) + LocalObject( + 1206, + IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 50.45271f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 594 + ) + LocalObject( + 1207, + IFFLock.Constructor(Vector3(5403.957f, 4236.811f, 70.45271f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 595 + ) + LocalObject( + 1208, + IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 40.45271f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 590 + ) + LocalObject( + 1209, + IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 50.45271f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 591 + ) + LocalObject( + 1210, + IFFLock.Constructor(Vector3(5408.047f, 4219.189f, 70.45271f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 592 + ) LocalObject(1626, Locker.Constructor(Vector3(5409.716f, 4212.963f, 28.98571f)), owning_building_guid = 74) LocalObject(1627, Locker.Constructor(Vector3(5409.751f, 4234.835f, 28.98571f)), owning_building_guid = 74) LocalObject(1628, Locker.Constructor(Vector3(5411.053f, 4212.963f, 28.98571f)), owning_building_guid = 74) @@ -2505,21 +7329,64 @@ object Map04 { // Ishundar LocalObject(1631, Locker.Constructor(Vector3(5413.741f, 4234.835f, 28.98571f)), owning_building_guid = 74) LocalObject(1632, Locker.Constructor(Vector3(5415.143f, 4212.963f, 28.98571f)), owning_building_guid = 74) LocalObject(1633, Locker.Constructor(Vector3(5415.143f, 4234.835f, 28.98571f)), owning_building_guid = 74) - LocalObject(2053, Terminal.Constructor(Vector3(5415.446f, 4218.129f, 30.32371f), order_terminal), owning_building_guid = 74) - LocalObject(2054, Terminal.Constructor(Vector3(5415.446f, 4223.853f, 30.32371f), order_terminal), owning_building_guid = 74) - LocalObject(2055, Terminal.Constructor(Vector3(5415.446f, 4229.234f, 30.32371f), order_terminal), owning_building_guid = 74) - LocalObject(2749, SpawnTube.Constructor(Vector3(5404.706f, 4215.742f, 28.47371f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2750, SpawnTube.Constructor(Vector3(5404.706f, 4232.152f, 28.47371f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2534, Painbox.Constructor(Vector3(5399.493f, 4220.849f, 30.28111f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2535, Painbox.Constructor(Vector3(5411.127f, 4218.078f, 29.09171f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2536, Painbox.Constructor(Vector3(5411.259f, 4230.107f, 29.09171f), painbox_radius_continuous), owning_building_guid = 74) + LocalObject( + 2053, + Terminal.Constructor(Vector3(5415.446f, 4218.129f, 30.32371f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2054, + Terminal.Constructor(Vector3(5415.446f, 4223.853f, 30.32371f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2055, + Terminal.Constructor(Vector3(5415.446f, 4229.234f, 30.32371f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2749, + SpawnTube.Constructor(Vector3(5404.706f, 4215.742f, 28.47371f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2750, + SpawnTube.Constructor(Vector3(5404.706f, 4232.152f, 28.47371f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2534, + Painbox.Constructor(Vector3(5399.493f, 4220.849f, 30.28111f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2535, + Painbox.Constructor(Vector3(5411.127f, 4218.078f, 29.09171f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2536, + Painbox.Constructor(Vector3(5411.259f, 4230.107f, 29.09171f), painbox_radius_continuous), + owning_building_guid = 74 + ) } Building22() def Building22(): Unit = { // Name: SE_Ceryshen_Warpgate_Tower Type: tower_b GUID: 75, MapID: 22 - LocalBuilding("SE_Ceryshen_Warpgate_Tower", 75, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5814f, 2996f, 41.7468f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2798, CaptureTerminal.Constructor(Vector3(5830.587f, 2995.897f, 61.7458f), secondary_capture), owning_building_guid = 75) + LocalBuilding( + "SE_Ceryshen_Warpgate_Tower", + 75, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5814f, 2996f, 41.7468f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2798, + CaptureTerminal.Constructor(Vector3(5830.587f, 2995.897f, 61.7458f), secondary_capture), + owning_building_guid = 75 + ) LocalObject(596, Door.Constructor(Vector3(5826f, 2988f, 43.2668f)), owning_building_guid = 75) LocalObject(597, Door.Constructor(Vector3(5826f, 2988f, 53.2668f)), owning_building_guid = 75) LocalObject(598, Door.Constructor(Vector3(5826f, 2988f, 73.2668f)), owning_building_guid = 75) @@ -2528,12 +7395,42 @@ object Map04 { // Ishundar LocalObject(601, Door.Constructor(Vector3(5826f, 3004f, 73.2668f)), owning_building_guid = 75) LocalObject(2975, Door.Constructor(Vector3(5825.147f, 2984.794f, 33.08279f)), owning_building_guid = 75) LocalObject(2976, Door.Constructor(Vector3(5825.147f, 3001.204f, 33.08279f)), owning_building_guid = 75) - LocalObject(1211, IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 43.20779f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 599) - LocalObject(1212, IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 53.20779f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 600) - LocalObject(1213, IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 73.20779f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 601) - LocalObject(1214, IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 43.20779f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 596) - LocalObject(1215, IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 53.20779f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 597) - LocalObject(1216, IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 73.20779f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 598) + LocalObject( + 1211, + IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 43.20779f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 599 + ) + LocalObject( + 1212, + IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 53.20779f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 600 + ) + LocalObject( + 1213, + IFFLock.Constructor(Vector3(5823.957f, 3004.811f, 73.20779f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 601 + ) + LocalObject( + 1214, + IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 43.20779f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 596 + ) + LocalObject( + 1215, + IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 53.20779f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 597 + ) + LocalObject( + 1216, + IFFLock.Constructor(Vector3(5828.047f, 2987.189f, 73.20779f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 598 + ) LocalObject(1634, Locker.Constructor(Vector3(5829.716f, 2980.963f, 31.7408f)), owning_building_guid = 75) LocalObject(1635, Locker.Constructor(Vector3(5829.751f, 3002.835f, 31.7408f)), owning_building_guid = 75) LocalObject(1636, Locker.Constructor(Vector3(5831.053f, 2980.963f, 31.7408f)), owning_building_guid = 75) @@ -2542,21 +7439,64 @@ object Map04 { // Ishundar LocalObject(1639, Locker.Constructor(Vector3(5833.741f, 3002.835f, 31.7408f)), owning_building_guid = 75) LocalObject(1640, Locker.Constructor(Vector3(5835.143f, 2980.963f, 31.7408f)), owning_building_guid = 75) LocalObject(1641, Locker.Constructor(Vector3(5835.143f, 3002.835f, 31.7408f)), owning_building_guid = 75) - LocalObject(2056, Terminal.Constructor(Vector3(5835.446f, 2986.129f, 33.0788f), order_terminal), owning_building_guid = 75) - LocalObject(2057, Terminal.Constructor(Vector3(5835.446f, 2991.853f, 33.0788f), order_terminal), owning_building_guid = 75) - LocalObject(2058, Terminal.Constructor(Vector3(5835.446f, 2997.234f, 33.0788f), order_terminal), owning_building_guid = 75) - LocalObject(2751, SpawnTube.Constructor(Vector3(5824.706f, 2983.742f, 31.2288f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 75) - LocalObject(2752, SpawnTube.Constructor(Vector3(5824.706f, 3000.152f, 31.2288f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 75) - LocalObject(2537, Painbox.Constructor(Vector3(5819.493f, 2988.849f, 33.03619f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2538, Painbox.Constructor(Vector3(5831.127f, 2986.078f, 31.8468f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2539, Painbox.Constructor(Vector3(5831.259f, 2998.107f, 31.8468f), painbox_radius_continuous), owning_building_guid = 75) + LocalObject( + 2056, + Terminal.Constructor(Vector3(5835.446f, 2986.129f, 33.0788f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2057, + Terminal.Constructor(Vector3(5835.446f, 2991.853f, 33.0788f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2058, + Terminal.Constructor(Vector3(5835.446f, 2997.234f, 33.0788f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2751, + SpawnTube.Constructor(Vector3(5824.706f, 2983.742f, 31.2288f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 75 + ) + LocalObject( + 2752, + SpawnTube.Constructor(Vector3(5824.706f, 3000.152f, 31.2288f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 75 + ) + LocalObject( + 2537, + Painbox.Constructor(Vector3(5819.493f, 2988.849f, 33.03619f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2538, + Painbox.Constructor(Vector3(5831.127f, 2986.078f, 31.8468f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2539, + Painbox.Constructor(Vector3(5831.259f, 2998.107f, 31.8468f), painbox_radius_continuous), + owning_building_guid = 75 + ) } Building24() def Building24(): Unit = { // Name: NW_Kusag_Tower Type: tower_b GUID: 76, MapID: 24 - LocalBuilding("NW_Kusag_Tower", 76, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6348f, 4802f, 38.76578f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2800, CaptureTerminal.Constructor(Vector3(6364.587f, 4801.897f, 58.76478f), secondary_capture), owning_building_guid = 76) + LocalBuilding( + "NW_Kusag_Tower", + 76, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6348f, 4802f, 38.76578f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2800, + CaptureTerminal.Constructor(Vector3(6364.587f, 4801.897f, 58.76478f), secondary_capture), + owning_building_guid = 76 + ) LocalObject(606, Door.Constructor(Vector3(6360f, 4794f, 40.28578f)), owning_building_guid = 76) LocalObject(607, Door.Constructor(Vector3(6360f, 4794f, 50.28578f)), owning_building_guid = 76) LocalObject(608, Door.Constructor(Vector3(6360f, 4794f, 70.28578f)), owning_building_guid = 76) @@ -2565,12 +7505,42 @@ object Map04 { // Ishundar LocalObject(611, Door.Constructor(Vector3(6360f, 4810f, 70.28578f)), owning_building_guid = 76) LocalObject(2979, Door.Constructor(Vector3(6359.147f, 4790.794f, 30.10178f)), owning_building_guid = 76) LocalObject(2980, Door.Constructor(Vector3(6359.147f, 4807.204f, 30.10178f)), owning_building_guid = 76) - LocalObject(1221, IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 40.22678f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 609) - LocalObject(1222, IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 50.22678f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 610) - LocalObject(1223, IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 70.22678f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 611) - LocalObject(1224, IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 40.22678f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 606) - LocalObject(1225, IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 50.22678f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 607) - LocalObject(1226, IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 70.22678f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 608) + LocalObject( + 1221, + IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 40.22678f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 609 + ) + LocalObject( + 1222, + IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 50.22678f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 610 + ) + LocalObject( + 1223, + IFFLock.Constructor(Vector3(6357.957f, 4810.811f, 70.22678f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 611 + ) + LocalObject( + 1224, + IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 40.22678f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 606 + ) + LocalObject( + 1225, + IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 50.22678f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 607 + ) + LocalObject( + 1226, + IFFLock.Constructor(Vector3(6362.047f, 4793.189f, 70.22678f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 608 + ) LocalObject(1650, Locker.Constructor(Vector3(6363.716f, 4786.963f, 28.75978f)), owning_building_guid = 76) LocalObject(1651, Locker.Constructor(Vector3(6363.751f, 4808.835f, 28.75978f)), owning_building_guid = 76) LocalObject(1652, Locker.Constructor(Vector3(6365.053f, 4786.963f, 28.75978f)), owning_building_guid = 76) @@ -2579,31 +7549,94 @@ object Map04 { // Ishundar LocalObject(1655, Locker.Constructor(Vector3(6367.741f, 4808.835f, 28.75978f)), owning_building_guid = 76) LocalObject(1656, Locker.Constructor(Vector3(6369.143f, 4786.963f, 28.75978f)), owning_building_guid = 76) LocalObject(1657, Locker.Constructor(Vector3(6369.143f, 4808.835f, 28.75978f)), owning_building_guid = 76) - LocalObject(2062, Terminal.Constructor(Vector3(6369.446f, 4792.129f, 30.09778f), order_terminal), owning_building_guid = 76) - LocalObject(2063, Terminal.Constructor(Vector3(6369.446f, 4797.853f, 30.09778f), order_terminal), owning_building_guid = 76) - LocalObject(2064, Terminal.Constructor(Vector3(6369.446f, 4803.234f, 30.09778f), order_terminal), owning_building_guid = 76) - LocalObject(2755, SpawnTube.Constructor(Vector3(6358.706f, 4789.742f, 28.24778f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2756, SpawnTube.Constructor(Vector3(6358.706f, 4806.152f, 28.24778f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2543, Painbox.Constructor(Vector3(6353.493f, 4794.849f, 30.05518f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2544, Painbox.Constructor(Vector3(6365.127f, 4792.078f, 28.86578f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2545, Painbox.Constructor(Vector3(6365.259f, 4804.107f, 28.86578f), painbox_radius_continuous), owning_building_guid = 76) + LocalObject( + 2062, + Terminal.Constructor(Vector3(6369.446f, 4792.129f, 30.09778f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2063, + Terminal.Constructor(Vector3(6369.446f, 4797.853f, 30.09778f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2064, + Terminal.Constructor(Vector3(6369.446f, 4803.234f, 30.09778f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2755, + SpawnTube.Constructor(Vector3(6358.706f, 4789.742f, 28.24778f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2756, + SpawnTube.Constructor(Vector3(6358.706f, 4806.152f, 28.24778f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2543, + Painbox.Constructor(Vector3(6353.493f, 4794.849f, 30.05518f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2544, + Painbox.Constructor(Vector3(6365.127f, 4792.078f, 28.86578f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2545, + Painbox.Constructor(Vector3(6365.259f, 4804.107f, 28.86578f), painbox_radius_continuous), + owning_building_guid = 76 + ) } Building63() def Building63(): Unit = { // Name: NW_Dagon_Tower Type: tower_c GUID: 77, MapID: 63 - LocalBuilding("NW_Dagon_Tower", 77, 63, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1302f, 6050f, 44.72154f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2771, CaptureTerminal.Constructor(Vector3(1318.587f, 6049.897f, 54.72054f), secondary_capture), owning_building_guid = 77) + LocalBuilding( + "NW_Dagon_Tower", + 77, + 63, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1302f, 6050f, 44.72154f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2771, + CaptureTerminal.Constructor(Vector3(1318.587f, 6049.897f, 54.72054f), secondary_capture), + owning_building_guid = 77 + ) LocalObject(337, Door.Constructor(Vector3(1314f, 6042f, 46.24254f)), owning_building_guid = 77) LocalObject(338, Door.Constructor(Vector3(1314f, 6042f, 66.24154f)), owning_building_guid = 77) LocalObject(339, Door.Constructor(Vector3(1314f, 6058f, 46.24254f)), owning_building_guid = 77) LocalObject(340, Door.Constructor(Vector3(1314f, 6058f, 66.24154f)), owning_building_guid = 77) LocalObject(2894, Door.Constructor(Vector3(1313.146f, 6038.794f, 36.05754f)), owning_building_guid = 77) LocalObject(2895, Door.Constructor(Vector3(1313.146f, 6055.204f, 36.05754f)), owning_building_guid = 77) - LocalObject(1000, IFFLock.Constructor(Vector3(1311.957f, 6058.811f, 46.18254f), Vector3(0, 0, 0)), owning_building_guid = 77, door_guid = 339) - LocalObject(1001, IFFLock.Constructor(Vector3(1311.957f, 6058.811f, 66.18254f), Vector3(0, 0, 0)), owning_building_guid = 77, door_guid = 340) - LocalObject(1002, IFFLock.Constructor(Vector3(1316.047f, 6041.189f, 46.18254f), Vector3(0, 0, 180)), owning_building_guid = 77, door_guid = 337) - LocalObject(1003, IFFLock.Constructor(Vector3(1316.047f, 6041.189f, 66.18254f), Vector3(0, 0, 180)), owning_building_guid = 77, door_guid = 338) + LocalObject( + 1000, + IFFLock.Constructor(Vector3(1311.957f, 6058.811f, 46.18254f), Vector3(0, 0, 0)), + owning_building_guid = 77, + door_guid = 339 + ) + LocalObject( + 1001, + IFFLock.Constructor(Vector3(1311.957f, 6058.811f, 66.18254f), Vector3(0, 0, 0)), + owning_building_guid = 77, + door_guid = 340 + ) + LocalObject( + 1002, + IFFLock.Constructor(Vector3(1316.047f, 6041.189f, 46.18254f), Vector3(0, 0, 180)), + owning_building_guid = 77, + door_guid = 337 + ) + LocalObject( + 1003, + IFFLock.Constructor(Vector3(1316.047f, 6041.189f, 66.18254f), Vector3(0, 0, 180)), + owning_building_guid = 77, + door_guid = 338 + ) LocalObject(1283, Locker.Constructor(Vector3(1317.716f, 6034.963f, 34.71554f)), owning_building_guid = 77) LocalObject(1284, Locker.Constructor(Vector3(1317.751f, 6056.835f, 34.71554f)), owning_building_guid = 77) LocalObject(1285, Locker.Constructor(Vector3(1319.053f, 6034.963f, 34.71554f)), owning_building_guid = 77) @@ -2612,39 +7645,126 @@ object Map04 { // Ishundar LocalObject(1288, Locker.Constructor(Vector3(1321.741f, 6056.835f, 34.71554f)), owning_building_guid = 77) LocalObject(1289, Locker.Constructor(Vector3(1323.143f, 6034.963f, 34.71554f)), owning_building_guid = 77) LocalObject(1290, Locker.Constructor(Vector3(1323.143f, 6056.835f, 34.71554f)), owning_building_guid = 77) - LocalObject(1927, Terminal.Constructor(Vector3(1323.445f, 6040.129f, 36.05354f), order_terminal), owning_building_guid = 77) - LocalObject(1928, Terminal.Constructor(Vector3(1323.445f, 6045.853f, 36.05354f), order_terminal), owning_building_guid = 77) - LocalObject(1929, Terminal.Constructor(Vector3(1323.445f, 6051.234f, 36.05354f), order_terminal), owning_building_guid = 77) - LocalObject(2670, SpawnTube.Constructor(Vector3(1312.706f, 6037.742f, 34.20354f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 77) - LocalObject(2671, SpawnTube.Constructor(Vector3(1312.706f, 6054.152f, 34.20354f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 77) - LocalObject(2306, ProximityTerminal.Constructor(Vector3(1300.907f, 6044.725f, 72.29153f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2307, Terminal.Constructor(Vector3(1300.907f, 6044.725f, 72.29153f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(2309, ProximityTerminal.Constructor(Vector3(1300.907f, 6055.17f, 72.29153f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2310, Terminal.Constructor(Vector3(1300.907f, 6055.17f, 72.29153f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(1767, FacilityTurret.Constructor(Vector3(1287.07f, 6035.045f, 63.66354f), manned_turret), owning_building_guid = 77) + LocalObject( + 1927, + Terminal.Constructor(Vector3(1323.445f, 6040.129f, 36.05354f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1928, + Terminal.Constructor(Vector3(1323.445f, 6045.853f, 36.05354f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1929, + Terminal.Constructor(Vector3(1323.445f, 6051.234f, 36.05354f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2670, + SpawnTube.Constructor(Vector3(1312.706f, 6037.742f, 34.20354f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 77 + ) + LocalObject( + 2671, + SpawnTube.Constructor(Vector3(1312.706f, 6054.152f, 34.20354f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 77 + ) + LocalObject( + 2306, + ProximityTerminal.Constructor(Vector3(1300.907f, 6044.725f, 72.29153f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2307, + Terminal.Constructor(Vector3(1300.907f, 6044.725f, 72.29153f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2309, + ProximityTerminal.Constructor(Vector3(1300.907f, 6055.17f, 72.29153f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2310, + Terminal.Constructor(Vector3(1300.907f, 6055.17f, 72.29153f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1767, + FacilityTurret.Constructor(Vector3(1287.07f, 6035.045f, 63.66354f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1767, 5094) - LocalObject(1768, FacilityTurret.Constructor(Vector3(1325.497f, 6064.957f, 63.66354f), manned_turret), owning_building_guid = 77) + LocalObject( + 1768, + FacilityTurret.Constructor(Vector3(1325.497f, 6064.957f, 63.66354f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1768, 5095) - LocalObject(2456, Painbox.Constructor(Vector3(1306.454f, 6042.849f, 36.74104f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2457, Painbox.Constructor(Vector3(1318.923f, 6039.54f, 34.82154f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2458, Painbox.Constructor(Vector3(1319.113f, 6052.022f, 34.82154f), painbox_radius_continuous), owning_building_guid = 77) + LocalObject( + 2456, + Painbox.Constructor(Vector3(1306.454f, 6042.849f, 36.74104f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2457, + Painbox.Constructor(Vector3(1318.923f, 6039.54f, 34.82154f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2458, + Painbox.Constructor(Vector3(1319.113f, 6052.022f, 34.82154f), painbox_radius_continuous), + owning_building_guid = 77 + ) } Building40() def Building40(): Unit = { // Name: S_Dagon_Tower Type: tower_c GUID: 78, MapID: 40 - LocalBuilding("S_Dagon_Tower", 78, 40, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2228f, 5158f, 46.85532f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2775, CaptureTerminal.Constructor(Vector3(2244.587f, 5157.897f, 56.85432f), secondary_capture), owning_building_guid = 78) + LocalBuilding( + "S_Dagon_Tower", + 78, + 40, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2228f, 5158f, 46.85532f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2775, + CaptureTerminal.Constructor(Vector3(2244.587f, 5157.897f, 56.85432f), secondary_capture), + owning_building_guid = 78 + ) LocalObject(370, Door.Constructor(Vector3(2240f, 5150f, 48.37632f)), owning_building_guid = 78) LocalObject(371, Door.Constructor(Vector3(2240f, 5150f, 68.37532f)), owning_building_guid = 78) LocalObject(372, Door.Constructor(Vector3(2240f, 5166f, 48.37632f)), owning_building_guid = 78) LocalObject(373, Door.Constructor(Vector3(2240f, 5166f, 68.37532f)), owning_building_guid = 78) LocalObject(2905, Door.Constructor(Vector3(2239.146f, 5146.794f, 38.19131f)), owning_building_guid = 78) LocalObject(2906, Door.Constructor(Vector3(2239.146f, 5163.204f, 38.19131f)), owning_building_guid = 78) - LocalObject(1028, IFFLock.Constructor(Vector3(2237.957f, 5166.811f, 48.31631f), Vector3(0, 0, 0)), owning_building_guid = 78, door_guid = 372) - LocalObject(1029, IFFLock.Constructor(Vector3(2237.957f, 5166.811f, 68.31631f), Vector3(0, 0, 0)), owning_building_guid = 78, door_guid = 373) - LocalObject(1030, IFFLock.Constructor(Vector3(2242.047f, 5149.189f, 48.31631f), Vector3(0, 0, 180)), owning_building_guid = 78, door_guid = 370) - LocalObject(1031, IFFLock.Constructor(Vector3(2242.047f, 5149.189f, 68.31631f), Vector3(0, 0, 180)), owning_building_guid = 78, door_guid = 371) + LocalObject( + 1028, + IFFLock.Constructor(Vector3(2237.957f, 5166.811f, 48.31631f), Vector3(0, 0, 0)), + owning_building_guid = 78, + door_guid = 372 + ) + LocalObject( + 1029, + IFFLock.Constructor(Vector3(2237.957f, 5166.811f, 68.31631f), Vector3(0, 0, 0)), + owning_building_guid = 78, + door_guid = 373 + ) + LocalObject( + 1030, + IFFLock.Constructor(Vector3(2242.047f, 5149.189f, 48.31631f), Vector3(0, 0, 180)), + owning_building_guid = 78, + door_guid = 370 + ) + LocalObject( + 1031, + IFFLock.Constructor(Vector3(2242.047f, 5149.189f, 68.31631f), Vector3(0, 0, 180)), + owning_building_guid = 78, + door_guid = 371 + ) LocalObject(1336, Locker.Constructor(Vector3(2243.716f, 5142.963f, 36.84932f)), owning_building_guid = 78) LocalObject(1337, Locker.Constructor(Vector3(2243.751f, 5164.835f, 36.84932f)), owning_building_guid = 78) LocalObject(1338, Locker.Constructor(Vector3(2245.053f, 5142.963f, 36.84932f)), owning_building_guid = 78) @@ -2653,39 +7773,126 @@ object Map04 { // Ishundar LocalObject(1341, Locker.Constructor(Vector3(2247.741f, 5164.835f, 36.84932f)), owning_building_guid = 78) LocalObject(1342, Locker.Constructor(Vector3(2249.143f, 5142.963f, 36.84932f)), owning_building_guid = 78) LocalObject(1343, Locker.Constructor(Vector3(2249.143f, 5164.835f, 36.84932f)), owning_building_guid = 78) - LocalObject(1943, Terminal.Constructor(Vector3(2249.445f, 5148.129f, 38.18732f), order_terminal), owning_building_guid = 78) - LocalObject(1944, Terminal.Constructor(Vector3(2249.445f, 5153.853f, 38.18732f), order_terminal), owning_building_guid = 78) - LocalObject(1945, Terminal.Constructor(Vector3(2249.445f, 5159.234f, 38.18732f), order_terminal), owning_building_guid = 78) - LocalObject(2681, SpawnTube.Constructor(Vector3(2238.706f, 5145.742f, 36.33732f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 78) - LocalObject(2682, SpawnTube.Constructor(Vector3(2238.706f, 5162.152f, 36.33732f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 78) - LocalObject(2312, ProximityTerminal.Constructor(Vector3(2226.907f, 5152.725f, 74.42532f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2313, Terminal.Constructor(Vector3(2226.907f, 5152.725f, 74.42532f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(2315, ProximityTerminal.Constructor(Vector3(2226.907f, 5163.17f, 74.42532f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2316, Terminal.Constructor(Vector3(2226.907f, 5163.17f, 74.42532f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(1776, FacilityTurret.Constructor(Vector3(2213.07f, 5143.045f, 65.79732f), manned_turret), owning_building_guid = 78) + LocalObject( + 1943, + Terminal.Constructor(Vector3(2249.445f, 5148.129f, 38.18732f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1944, + Terminal.Constructor(Vector3(2249.445f, 5153.853f, 38.18732f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1945, + Terminal.Constructor(Vector3(2249.445f, 5159.234f, 38.18732f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2681, + SpawnTube.Constructor(Vector3(2238.706f, 5145.742f, 36.33732f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 78 + ) + LocalObject( + 2682, + SpawnTube.Constructor(Vector3(2238.706f, 5162.152f, 36.33732f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 78 + ) + LocalObject( + 2312, + ProximityTerminal.Constructor(Vector3(2226.907f, 5152.725f, 74.42532f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2313, + Terminal.Constructor(Vector3(2226.907f, 5152.725f, 74.42532f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2315, + ProximityTerminal.Constructor(Vector3(2226.907f, 5163.17f, 74.42532f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2316, + Terminal.Constructor(Vector3(2226.907f, 5163.17f, 74.42532f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1776, + FacilityTurret.Constructor(Vector3(2213.07f, 5143.045f, 65.79732f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1776, 5096) - LocalObject(1777, FacilityTurret.Constructor(Vector3(2251.497f, 5172.957f, 65.79732f), manned_turret), owning_building_guid = 78) + LocalObject( + 1777, + FacilityTurret.Constructor(Vector3(2251.497f, 5172.957f, 65.79732f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1777, 5097) - LocalObject(2468, Painbox.Constructor(Vector3(2232.454f, 5150.849f, 38.87482f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2469, Painbox.Constructor(Vector3(2244.923f, 5147.54f, 36.95531f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2470, Painbox.Constructor(Vector3(2245.113f, 5160.022f, 36.95531f), painbox_radius_continuous), owning_building_guid = 78) + LocalObject( + 2468, + Painbox.Constructor(Vector3(2232.454f, 5150.849f, 38.87482f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2469, + Painbox.Constructor(Vector3(2244.923f, 5147.54f, 36.95531f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2470, + Painbox.Constructor(Vector3(2245.113f, 5160.022f, 36.95531f), painbox_radius_continuous), + owning_building_guid = 78 + ) } Building60() def Building60(): Unit = { // Name: Akkan_Tower Type: tower_c GUID: 79, MapID: 60 - LocalBuilding("Akkan_Tower", 79, 60, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2474f, 4454f, 51.89481f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2776, CaptureTerminal.Constructor(Vector3(2490.587f, 4453.897f, 61.89381f), secondary_capture), owning_building_guid = 79) + LocalBuilding( + "Akkan_Tower", + 79, + 60, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2474f, 4454f, 51.89481f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2776, + CaptureTerminal.Constructor(Vector3(2490.587f, 4453.897f, 61.89381f), secondary_capture), + owning_building_guid = 79 + ) LocalObject(374, Door.Constructor(Vector3(2486f, 4446f, 53.41581f)), owning_building_guid = 79) LocalObject(375, Door.Constructor(Vector3(2486f, 4446f, 73.41481f)), owning_building_guid = 79) LocalObject(376, Door.Constructor(Vector3(2486f, 4462f, 53.41581f)), owning_building_guid = 79) LocalObject(377, Door.Constructor(Vector3(2486f, 4462f, 73.41481f)), owning_building_guid = 79) LocalObject(2907, Door.Constructor(Vector3(2485.146f, 4442.794f, 43.2308f)), owning_building_guid = 79) LocalObject(2908, Door.Constructor(Vector3(2485.146f, 4459.204f, 43.2308f)), owning_building_guid = 79) - LocalObject(1032, IFFLock.Constructor(Vector3(2483.957f, 4462.811f, 53.3558f), Vector3(0, 0, 0)), owning_building_guid = 79, door_guid = 376) - LocalObject(1033, IFFLock.Constructor(Vector3(2483.957f, 4462.811f, 73.3558f), Vector3(0, 0, 0)), owning_building_guid = 79, door_guid = 377) - LocalObject(1034, IFFLock.Constructor(Vector3(2488.047f, 4445.189f, 53.3558f), Vector3(0, 0, 180)), owning_building_guid = 79, door_guid = 374) - LocalObject(1035, IFFLock.Constructor(Vector3(2488.047f, 4445.189f, 73.3558f), Vector3(0, 0, 180)), owning_building_guid = 79, door_guid = 375) + LocalObject( + 1032, + IFFLock.Constructor(Vector3(2483.957f, 4462.811f, 53.3558f), Vector3(0, 0, 0)), + owning_building_guid = 79, + door_guid = 376 + ) + LocalObject( + 1033, + IFFLock.Constructor(Vector3(2483.957f, 4462.811f, 73.3558f), Vector3(0, 0, 0)), + owning_building_guid = 79, + door_guid = 377 + ) + LocalObject( + 1034, + IFFLock.Constructor(Vector3(2488.047f, 4445.189f, 53.3558f), Vector3(0, 0, 180)), + owning_building_guid = 79, + door_guid = 374 + ) + LocalObject( + 1035, + IFFLock.Constructor(Vector3(2488.047f, 4445.189f, 73.3558f), Vector3(0, 0, 180)), + owning_building_guid = 79, + door_guid = 375 + ) LocalObject(1344, Locker.Constructor(Vector3(2489.716f, 4438.963f, 41.88881f)), owning_building_guid = 79) LocalObject(1345, Locker.Constructor(Vector3(2489.751f, 4460.835f, 41.88881f)), owning_building_guid = 79) LocalObject(1346, Locker.Constructor(Vector3(2491.053f, 4438.963f, 41.88881f)), owning_building_guid = 79) @@ -2694,39 +7901,126 @@ object Map04 { // Ishundar LocalObject(1349, Locker.Constructor(Vector3(2493.741f, 4460.835f, 41.88881f)), owning_building_guid = 79) LocalObject(1350, Locker.Constructor(Vector3(2495.143f, 4438.963f, 41.88881f)), owning_building_guid = 79) LocalObject(1351, Locker.Constructor(Vector3(2495.143f, 4460.835f, 41.88881f)), owning_building_guid = 79) - LocalObject(1946, Terminal.Constructor(Vector3(2495.445f, 4444.129f, 43.22681f), order_terminal), owning_building_guid = 79) - LocalObject(1947, Terminal.Constructor(Vector3(2495.445f, 4449.853f, 43.22681f), order_terminal), owning_building_guid = 79) - LocalObject(1948, Terminal.Constructor(Vector3(2495.445f, 4455.234f, 43.22681f), order_terminal), owning_building_guid = 79) - LocalObject(2683, SpawnTube.Constructor(Vector3(2484.706f, 4441.742f, 41.37681f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 79) - LocalObject(2684, SpawnTube.Constructor(Vector3(2484.706f, 4458.152f, 41.37681f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 79) - LocalObject(2318, ProximityTerminal.Constructor(Vector3(2472.907f, 4448.725f, 79.46481f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2319, Terminal.Constructor(Vector3(2472.907f, 4448.725f, 79.46481f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(2321, ProximityTerminal.Constructor(Vector3(2472.907f, 4459.17f, 79.46481f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2322, Terminal.Constructor(Vector3(2472.907f, 4459.17f, 79.46481f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(1778, FacilityTurret.Constructor(Vector3(2459.07f, 4439.045f, 70.83681f), manned_turret), owning_building_guid = 79) + LocalObject( + 1946, + Terminal.Constructor(Vector3(2495.445f, 4444.129f, 43.22681f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1947, + Terminal.Constructor(Vector3(2495.445f, 4449.853f, 43.22681f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1948, + Terminal.Constructor(Vector3(2495.445f, 4455.234f, 43.22681f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2683, + SpawnTube.Constructor(Vector3(2484.706f, 4441.742f, 41.37681f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 79 + ) + LocalObject( + 2684, + SpawnTube.Constructor(Vector3(2484.706f, 4458.152f, 41.37681f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 79 + ) + LocalObject( + 2318, + ProximityTerminal.Constructor(Vector3(2472.907f, 4448.725f, 79.46481f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2319, + Terminal.Constructor(Vector3(2472.907f, 4448.725f, 79.46481f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2321, + ProximityTerminal.Constructor(Vector3(2472.907f, 4459.17f, 79.46481f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2322, + Terminal.Constructor(Vector3(2472.907f, 4459.17f, 79.46481f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1778, + FacilityTurret.Constructor(Vector3(2459.07f, 4439.045f, 70.83681f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1778, 5098) - LocalObject(1779, FacilityTurret.Constructor(Vector3(2497.497f, 4468.957f, 70.83681f), manned_turret), owning_building_guid = 79) + LocalObject( + 1779, + FacilityTurret.Constructor(Vector3(2497.497f, 4468.957f, 70.83681f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1779, 5099) - LocalObject(2471, Painbox.Constructor(Vector3(2478.454f, 4446.849f, 43.91431f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2472, Painbox.Constructor(Vector3(2490.923f, 4443.54f, 41.9948f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2473, Painbox.Constructor(Vector3(2491.113f, 4456.022f, 41.9948f), painbox_radius_continuous), owning_building_guid = 79) + LocalObject( + 2471, + Painbox.Constructor(Vector3(2478.454f, 4446.849f, 43.91431f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2472, + Painbox.Constructor(Vector3(2490.923f, 4443.54f, 41.9948f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2473, + Painbox.Constructor(Vector3(2491.113f, 4456.022f, 41.9948f), painbox_radius_continuous), + owning_building_guid = 79 + ) } Building30() def Building30(): Unit = { // Name: SW_Enkidu_Tower Type: tower_c GUID: 80, MapID: 30 - LocalBuilding("SW_Enkidu_Tower", 80, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2726f, 3276f, 56.60795f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2777, CaptureTerminal.Constructor(Vector3(2742.587f, 3275.897f, 66.60695f), secondary_capture), owning_building_guid = 80) + LocalBuilding( + "SW_Enkidu_Tower", + 80, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2726f, 3276f, 56.60795f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2777, + CaptureTerminal.Constructor(Vector3(2742.587f, 3275.897f, 66.60695f), secondary_capture), + owning_building_guid = 80 + ) LocalObject(389, Door.Constructor(Vector3(2738f, 3268f, 58.12895f)), owning_building_guid = 80) LocalObject(390, Door.Constructor(Vector3(2738f, 3268f, 78.12795f)), owning_building_guid = 80) LocalObject(391, Door.Constructor(Vector3(2738f, 3284f, 58.12895f)), owning_building_guid = 80) LocalObject(392, Door.Constructor(Vector3(2738f, 3284f, 78.12795f)), owning_building_guid = 80) LocalObject(2912, Door.Constructor(Vector3(2737.146f, 3264.794f, 47.94395f)), owning_building_guid = 80) LocalObject(2913, Door.Constructor(Vector3(2737.146f, 3281.204f, 47.94395f)), owning_building_guid = 80) - LocalObject(1041, IFFLock.Constructor(Vector3(2735.957f, 3284.811f, 58.06895f), Vector3(0, 0, 0)), owning_building_guid = 80, door_guid = 391) - LocalObject(1042, IFFLock.Constructor(Vector3(2735.957f, 3284.811f, 78.06895f), Vector3(0, 0, 0)), owning_building_guid = 80, door_guid = 392) - LocalObject(1045, IFFLock.Constructor(Vector3(2740.047f, 3267.189f, 58.06895f), Vector3(0, 0, 180)), owning_building_guid = 80, door_guid = 389) - LocalObject(1046, IFFLock.Constructor(Vector3(2740.047f, 3267.189f, 78.06895f), Vector3(0, 0, 180)), owning_building_guid = 80, door_guid = 390) + LocalObject( + 1041, + IFFLock.Constructor(Vector3(2735.957f, 3284.811f, 58.06895f), Vector3(0, 0, 0)), + owning_building_guid = 80, + door_guid = 391 + ) + LocalObject( + 1042, + IFFLock.Constructor(Vector3(2735.957f, 3284.811f, 78.06895f), Vector3(0, 0, 0)), + owning_building_guid = 80, + door_guid = 392 + ) + LocalObject( + 1045, + IFFLock.Constructor(Vector3(2740.047f, 3267.189f, 58.06895f), Vector3(0, 0, 180)), + owning_building_guid = 80, + door_guid = 389 + ) + LocalObject( + 1046, + IFFLock.Constructor(Vector3(2740.047f, 3267.189f, 78.06895f), Vector3(0, 0, 180)), + owning_building_guid = 80, + door_guid = 390 + ) LocalObject(1353, Locker.Constructor(Vector3(2741.716f, 3260.963f, 46.60195f)), owning_building_guid = 80) LocalObject(1354, Locker.Constructor(Vector3(2741.751f, 3282.835f, 46.60195f)), owning_building_guid = 80) LocalObject(1356, Locker.Constructor(Vector3(2743.053f, 3260.963f, 46.60195f)), owning_building_guid = 80) @@ -2735,39 +8029,126 @@ object Map04 { // Ishundar LocalObject(1361, Locker.Constructor(Vector3(2745.741f, 3282.835f, 46.60195f)), owning_building_guid = 80) LocalObject(1362, Locker.Constructor(Vector3(2747.143f, 3260.963f, 46.60195f)), owning_building_guid = 80) LocalObject(1363, Locker.Constructor(Vector3(2747.143f, 3282.835f, 46.60195f)), owning_building_guid = 80) - LocalObject(1957, Terminal.Constructor(Vector3(2747.445f, 3266.129f, 47.93995f), order_terminal), owning_building_guid = 80) - LocalObject(1958, Terminal.Constructor(Vector3(2747.445f, 3271.853f, 47.93995f), order_terminal), owning_building_guid = 80) - LocalObject(1959, Terminal.Constructor(Vector3(2747.445f, 3277.234f, 47.93995f), order_terminal), owning_building_guid = 80) - LocalObject(2688, SpawnTube.Constructor(Vector3(2736.706f, 3263.742f, 46.08995f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 80) - LocalObject(2689, SpawnTube.Constructor(Vector3(2736.706f, 3280.152f, 46.08995f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 80) - LocalObject(2324, ProximityTerminal.Constructor(Vector3(2724.907f, 3270.725f, 84.17795f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2325, Terminal.Constructor(Vector3(2724.907f, 3270.725f, 84.17795f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(2327, ProximityTerminal.Constructor(Vector3(2724.907f, 3281.17f, 84.17795f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2328, Terminal.Constructor(Vector3(2724.907f, 3281.17f, 84.17795f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(1783, FacilityTurret.Constructor(Vector3(2711.07f, 3261.045f, 75.54995f), manned_turret), owning_building_guid = 80) + LocalObject( + 1957, + Terminal.Constructor(Vector3(2747.445f, 3266.129f, 47.93995f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(2747.445f, 3271.853f, 47.93995f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1959, + Terminal.Constructor(Vector3(2747.445f, 3277.234f, 47.93995f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2688, + SpawnTube.Constructor(Vector3(2736.706f, 3263.742f, 46.08995f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 80 + ) + LocalObject( + 2689, + SpawnTube.Constructor(Vector3(2736.706f, 3280.152f, 46.08995f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 80 + ) + LocalObject( + 2324, + ProximityTerminal.Constructor(Vector3(2724.907f, 3270.725f, 84.17795f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2325, + Terminal.Constructor(Vector3(2724.907f, 3270.725f, 84.17795f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2327, + ProximityTerminal.Constructor(Vector3(2724.907f, 3281.17f, 84.17795f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2328, + Terminal.Constructor(Vector3(2724.907f, 3281.17f, 84.17795f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1783, + FacilityTurret.Constructor(Vector3(2711.07f, 3261.045f, 75.54995f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1783, 5100) - LocalObject(1786, FacilityTurret.Constructor(Vector3(2749.497f, 3290.957f, 75.54995f), manned_turret), owning_building_guid = 80) + LocalObject( + 1786, + FacilityTurret.Constructor(Vector3(2749.497f, 3290.957f, 75.54995f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1786, 5101) - LocalObject(2474, Painbox.Constructor(Vector3(2730.454f, 3268.849f, 48.62745f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2475, Painbox.Constructor(Vector3(2742.923f, 3265.54f, 46.70795f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2476, Painbox.Constructor(Vector3(2743.113f, 3278.022f, 46.70795f), painbox_radius_continuous), owning_building_guid = 80) + LocalObject( + 2474, + Painbox.Constructor(Vector3(2730.454f, 3268.849f, 48.62745f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2475, + Painbox.Constructor(Vector3(2742.923f, 3265.54f, 46.70795f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2476, + Painbox.Constructor(Vector3(2743.113f, 3278.022f, 46.70795f), painbox_radius_continuous), + owning_building_guid = 80 + ) } Building62() def Building62(): Unit = { // Name: Marduk_Tower Type: tower_c GUID: 81, MapID: 62 - LocalBuilding("Marduk_Tower", 81, 62, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3218f, 2478f, 75.78687f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2781, CaptureTerminal.Constructor(Vector3(3234.587f, 2477.897f, 85.78587f), secondary_capture), owning_building_guid = 81) + LocalBuilding( + "Marduk_Tower", + 81, + 62, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3218f, 2478f, 75.78687f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2781, + CaptureTerminal.Constructor(Vector3(3234.587f, 2477.897f, 85.78587f), secondary_capture), + owning_building_guid = 81 + ) LocalObject(433, Door.Constructor(Vector3(3230f, 2470f, 77.30788f)), owning_building_guid = 81) LocalObject(434, Door.Constructor(Vector3(3230f, 2470f, 97.30687f)), owning_building_guid = 81) LocalObject(435, Door.Constructor(Vector3(3230f, 2486f, 77.30788f)), owning_building_guid = 81) LocalObject(436, Door.Constructor(Vector3(3230f, 2486f, 97.30687f)), owning_building_guid = 81) LocalObject(2923, Door.Constructor(Vector3(3229.146f, 2466.794f, 67.12287f)), owning_building_guid = 81) LocalObject(2924, Door.Constructor(Vector3(3229.146f, 2483.204f, 67.12287f)), owning_building_guid = 81) - LocalObject(1076, IFFLock.Constructor(Vector3(3227.957f, 2486.811f, 77.24787f), Vector3(0, 0, 0)), owning_building_guid = 81, door_guid = 435) - LocalObject(1077, IFFLock.Constructor(Vector3(3227.957f, 2486.811f, 97.24787f), Vector3(0, 0, 0)), owning_building_guid = 81, door_guid = 436) - LocalObject(1078, IFFLock.Constructor(Vector3(3232.047f, 2469.189f, 77.24787f), Vector3(0, 0, 180)), owning_building_guid = 81, door_guid = 433) - LocalObject(1079, IFFLock.Constructor(Vector3(3232.047f, 2469.189f, 97.24787f), Vector3(0, 0, 180)), owning_building_guid = 81, door_guid = 434) + LocalObject( + 1076, + IFFLock.Constructor(Vector3(3227.957f, 2486.811f, 77.24787f), Vector3(0, 0, 0)), + owning_building_guid = 81, + door_guid = 435 + ) + LocalObject( + 1077, + IFFLock.Constructor(Vector3(3227.957f, 2486.811f, 97.24787f), Vector3(0, 0, 0)), + owning_building_guid = 81, + door_guid = 436 + ) + LocalObject( + 1078, + IFFLock.Constructor(Vector3(3232.047f, 2469.189f, 77.24787f), Vector3(0, 0, 180)), + owning_building_guid = 81, + door_guid = 433 + ) + LocalObject( + 1079, + IFFLock.Constructor(Vector3(3232.047f, 2469.189f, 97.24787f), Vector3(0, 0, 180)), + owning_building_guid = 81, + door_guid = 434 + ) LocalObject(1408, Locker.Constructor(Vector3(3233.716f, 2462.963f, 65.78088f)), owning_building_guid = 81) LocalObject(1409, Locker.Constructor(Vector3(3233.751f, 2484.835f, 65.78088f)), owning_building_guid = 81) LocalObject(1410, Locker.Constructor(Vector3(3235.053f, 2462.963f, 65.78088f)), owning_building_guid = 81) @@ -2776,39 +8157,126 @@ object Map04 { // Ishundar LocalObject(1413, Locker.Constructor(Vector3(3237.741f, 2484.835f, 65.78088f)), owning_building_guid = 81) LocalObject(1414, Locker.Constructor(Vector3(3239.143f, 2462.963f, 65.78088f)), owning_building_guid = 81) LocalObject(1415, Locker.Constructor(Vector3(3239.143f, 2484.835f, 65.78088f)), owning_building_guid = 81) - LocalObject(1973, Terminal.Constructor(Vector3(3239.445f, 2468.129f, 67.11887f), order_terminal), owning_building_guid = 81) - LocalObject(1974, Terminal.Constructor(Vector3(3239.445f, 2473.853f, 67.11887f), order_terminal), owning_building_guid = 81) - LocalObject(1975, Terminal.Constructor(Vector3(3239.445f, 2479.234f, 67.11887f), order_terminal), owning_building_guid = 81) - LocalObject(2699, SpawnTube.Constructor(Vector3(3228.706f, 2465.742f, 65.26888f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 81) - LocalObject(2700, SpawnTube.Constructor(Vector3(3228.706f, 2482.152f, 65.26888f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 81) - LocalObject(2330, ProximityTerminal.Constructor(Vector3(3216.907f, 2472.725f, 103.3569f), pad_landing_tower_frame), owning_building_guid = 81) - LocalObject(2331, Terminal.Constructor(Vector3(3216.907f, 2472.725f, 103.3569f), air_rearm_terminal), owning_building_guid = 81) - LocalObject(2333, ProximityTerminal.Constructor(Vector3(3216.907f, 2483.17f, 103.3569f), pad_landing_tower_frame), owning_building_guid = 81) - LocalObject(2334, Terminal.Constructor(Vector3(3216.907f, 2483.17f, 103.3569f), air_rearm_terminal), owning_building_guid = 81) - LocalObject(1798, FacilityTurret.Constructor(Vector3(3203.07f, 2463.045f, 94.72887f), manned_turret), owning_building_guid = 81) + LocalObject( + 1973, + Terminal.Constructor(Vector3(3239.445f, 2468.129f, 67.11887f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1974, + Terminal.Constructor(Vector3(3239.445f, 2473.853f, 67.11887f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1975, + Terminal.Constructor(Vector3(3239.445f, 2479.234f, 67.11887f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2699, + SpawnTube.Constructor(Vector3(3228.706f, 2465.742f, 65.26888f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 81 + ) + LocalObject( + 2700, + SpawnTube.Constructor(Vector3(3228.706f, 2482.152f, 65.26888f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 81 + ) + LocalObject( + 2330, + ProximityTerminal.Constructor(Vector3(3216.907f, 2472.725f, 103.3569f), pad_landing_tower_frame), + owning_building_guid = 81 + ) + LocalObject( + 2331, + Terminal.Constructor(Vector3(3216.907f, 2472.725f, 103.3569f), air_rearm_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2333, + ProximityTerminal.Constructor(Vector3(3216.907f, 2483.17f, 103.3569f), pad_landing_tower_frame), + owning_building_guid = 81 + ) + LocalObject( + 2334, + Terminal.Constructor(Vector3(3216.907f, 2483.17f, 103.3569f), air_rearm_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1798, + FacilityTurret.Constructor(Vector3(3203.07f, 2463.045f, 94.72887f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(1798, 5102) - LocalObject(1804, FacilityTurret.Constructor(Vector3(3241.497f, 2492.957f, 94.72887f), manned_turret), owning_building_guid = 81) + LocalObject( + 1804, + FacilityTurret.Constructor(Vector3(3241.497f, 2492.957f, 94.72887f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(1804, 5103) - LocalObject(2484, Painbox.Constructor(Vector3(3222.454f, 2470.849f, 67.80637f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(2487, Painbox.Constructor(Vector3(3234.923f, 2467.54f, 65.88687f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(2488, Painbox.Constructor(Vector3(3235.113f, 2480.022f, 65.88687f), painbox_radius_continuous), owning_building_guid = 81) + LocalObject( + 2484, + Painbox.Constructor(Vector3(3222.454f, 2470.849f, 67.80637f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 2487, + Painbox.Constructor(Vector3(3234.923f, 2467.54f, 65.88687f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 2488, + Painbox.Constructor(Vector3(3235.113f, 2480.022f, 65.88687f), painbox_radius_continuous), + owning_building_guid = 81 + ) } Building56() def Building56(): Unit = { // Name: Hanish_Tower Type: tower_c GUID: 82, MapID: 56 - LocalBuilding("Hanish_Tower", 82, 56, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3580f, 5294f, 69.18471f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2784, CaptureTerminal.Constructor(Vector3(3596.587f, 5293.897f, 79.18371f), secondary_capture), owning_building_guid = 82) + LocalBuilding( + "Hanish_Tower", + 82, + 56, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3580f, 5294f, 69.18471f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2784, + CaptureTerminal.Constructor(Vector3(3596.587f, 5293.897f, 79.18371f), secondary_capture), + owning_building_guid = 82 + ) LocalObject(466, Door.Constructor(Vector3(3592f, 5286f, 70.70571f)), owning_building_guid = 82) LocalObject(467, Door.Constructor(Vector3(3592f, 5286f, 90.70471f)), owning_building_guid = 82) LocalObject(468, Door.Constructor(Vector3(3592f, 5302f, 70.70571f)), owning_building_guid = 82) LocalObject(469, Door.Constructor(Vector3(3592f, 5302f, 90.70471f)), owning_building_guid = 82) LocalObject(2932, Door.Constructor(Vector3(3591.146f, 5282.794f, 60.52071f)), owning_building_guid = 82) LocalObject(2933, Door.Constructor(Vector3(3591.146f, 5299.204f, 60.52071f)), owning_building_guid = 82) - LocalObject(1101, IFFLock.Constructor(Vector3(3589.957f, 5302.811f, 70.64571f), Vector3(0, 0, 0)), owning_building_guid = 82, door_guid = 468) - LocalObject(1102, IFFLock.Constructor(Vector3(3589.957f, 5302.811f, 90.64571f), Vector3(0, 0, 0)), owning_building_guid = 82, door_guid = 469) - LocalObject(1103, IFFLock.Constructor(Vector3(3594.047f, 5285.189f, 70.64571f), Vector3(0, 0, 180)), owning_building_guid = 82, door_guid = 466) - LocalObject(1104, IFFLock.Constructor(Vector3(3594.047f, 5285.189f, 90.64571f), Vector3(0, 0, 180)), owning_building_guid = 82, door_guid = 467) + LocalObject( + 1101, + IFFLock.Constructor(Vector3(3589.957f, 5302.811f, 70.64571f), Vector3(0, 0, 0)), + owning_building_guid = 82, + door_guid = 468 + ) + LocalObject( + 1102, + IFFLock.Constructor(Vector3(3589.957f, 5302.811f, 90.64571f), Vector3(0, 0, 0)), + owning_building_guid = 82, + door_guid = 469 + ) + LocalObject( + 1103, + IFFLock.Constructor(Vector3(3594.047f, 5285.189f, 70.64571f), Vector3(0, 0, 180)), + owning_building_guid = 82, + door_guid = 466 + ) + LocalObject( + 1104, + IFFLock.Constructor(Vector3(3594.047f, 5285.189f, 90.64571f), Vector3(0, 0, 180)), + owning_building_guid = 82, + door_guid = 467 + ) LocalObject(1444, Locker.Constructor(Vector3(3595.716f, 5278.963f, 59.17871f)), owning_building_guid = 82) LocalObject(1445, Locker.Constructor(Vector3(3595.751f, 5300.835f, 59.17871f)), owning_building_guid = 82) LocalObject(1446, Locker.Constructor(Vector3(3597.053f, 5278.963f, 59.17871f)), owning_building_guid = 82) @@ -2817,39 +8285,126 @@ object Map04 { // Ishundar LocalObject(1449, Locker.Constructor(Vector3(3599.741f, 5300.835f, 59.17871f)), owning_building_guid = 82) LocalObject(1450, Locker.Constructor(Vector3(3601.143f, 5278.963f, 59.17871f)), owning_building_guid = 82) LocalObject(1451, Locker.Constructor(Vector3(3601.143f, 5300.835f, 59.17871f)), owning_building_guid = 82) - LocalObject(1988, Terminal.Constructor(Vector3(3601.445f, 5284.129f, 60.51671f), order_terminal), owning_building_guid = 82) - LocalObject(1989, Terminal.Constructor(Vector3(3601.445f, 5289.853f, 60.51671f), order_terminal), owning_building_guid = 82) - LocalObject(1990, Terminal.Constructor(Vector3(3601.445f, 5295.234f, 60.51671f), order_terminal), owning_building_guid = 82) - LocalObject(2708, SpawnTube.Constructor(Vector3(3590.706f, 5281.742f, 58.66671f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 82) - LocalObject(2709, SpawnTube.Constructor(Vector3(3590.706f, 5298.152f, 58.66671f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 82) - LocalObject(2336, ProximityTerminal.Constructor(Vector3(3578.907f, 5288.725f, 96.75471f), pad_landing_tower_frame), owning_building_guid = 82) - LocalObject(2337, Terminal.Constructor(Vector3(3578.907f, 5288.725f, 96.75471f), air_rearm_terminal), owning_building_guid = 82) - LocalObject(2339, ProximityTerminal.Constructor(Vector3(3578.907f, 5299.17f, 96.75471f), pad_landing_tower_frame), owning_building_guid = 82) - LocalObject(2340, Terminal.Constructor(Vector3(3578.907f, 5299.17f, 96.75471f), air_rearm_terminal), owning_building_guid = 82) - LocalObject(1810, FacilityTurret.Constructor(Vector3(3565.07f, 5279.045f, 88.12671f), manned_turret), owning_building_guid = 82) + LocalObject( + 1988, + Terminal.Constructor(Vector3(3601.445f, 5284.129f, 60.51671f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 1989, + Terminal.Constructor(Vector3(3601.445f, 5289.853f, 60.51671f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 1990, + Terminal.Constructor(Vector3(3601.445f, 5295.234f, 60.51671f), order_terminal), + owning_building_guid = 82 + ) + LocalObject( + 2708, + SpawnTube.Constructor(Vector3(3590.706f, 5281.742f, 58.66671f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 82 + ) + LocalObject( + 2709, + SpawnTube.Constructor(Vector3(3590.706f, 5298.152f, 58.66671f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 82 + ) + LocalObject( + 2336, + ProximityTerminal.Constructor(Vector3(3578.907f, 5288.725f, 96.75471f), pad_landing_tower_frame), + owning_building_guid = 82 + ) + LocalObject( + 2337, + Terminal.Constructor(Vector3(3578.907f, 5288.725f, 96.75471f), air_rearm_terminal), + owning_building_guid = 82 + ) + LocalObject( + 2339, + ProximityTerminal.Constructor(Vector3(3578.907f, 5299.17f, 96.75471f), pad_landing_tower_frame), + owning_building_guid = 82 + ) + LocalObject( + 2340, + Terminal.Constructor(Vector3(3578.907f, 5299.17f, 96.75471f), air_rearm_terminal), + owning_building_guid = 82 + ) + LocalObject( + 1810, + FacilityTurret.Constructor(Vector3(3565.07f, 5279.045f, 88.12671f), manned_turret), + owning_building_guid = 82 + ) TurretToWeapon(1810, 5104) - LocalObject(1811, FacilityTurret.Constructor(Vector3(3603.497f, 5308.957f, 88.12671f), manned_turret), owning_building_guid = 82) + LocalObject( + 1811, + FacilityTurret.Constructor(Vector3(3603.497f, 5308.957f, 88.12671f), manned_turret), + owning_building_guid = 82 + ) TurretToWeapon(1811, 5105) - LocalObject(2495, Painbox.Constructor(Vector3(3584.454f, 5286.849f, 61.20421f), painbox_radius_continuous), owning_building_guid = 82) - LocalObject(2496, Painbox.Constructor(Vector3(3596.923f, 5283.54f, 59.28471f), painbox_radius_continuous), owning_building_guid = 82) - LocalObject(2497, Painbox.Constructor(Vector3(3597.113f, 5296.022f, 59.28471f), painbox_radius_continuous), owning_building_guid = 82) + LocalObject( + 2495, + Painbox.Constructor(Vector3(3584.454f, 5286.849f, 61.20421f), painbox_radius_continuous), + owning_building_guid = 82 + ) + LocalObject( + 2496, + Painbox.Constructor(Vector3(3596.923f, 5283.54f, 59.28471f), painbox_radius_continuous), + owning_building_guid = 82 + ) + LocalObject( + 2497, + Painbox.Constructor(Vector3(3597.113f, 5296.022f, 59.28471f), painbox_radius_continuous), + owning_building_guid = 82 + ) } Building36() def Building36(): Unit = { // Name: W_Girru_Tower Type: tower_c GUID: 83, MapID: 36 - LocalBuilding("W_Girru_Tower", 83, 36, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3738f, 6048f, 55.94899f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2785, CaptureTerminal.Constructor(Vector3(3754.587f, 6047.897f, 65.94799f), secondary_capture), owning_building_guid = 83) + LocalBuilding( + "W_Girru_Tower", + 83, + 36, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3738f, 6048f, 55.94899f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2785, + CaptureTerminal.Constructor(Vector3(3754.587f, 6047.897f, 65.94799f), secondary_capture), + owning_building_guid = 83 + ) LocalObject(477, Door.Constructor(Vector3(3750f, 6040f, 57.46999f)), owning_building_guid = 83) LocalObject(478, Door.Constructor(Vector3(3750f, 6040f, 77.46899f)), owning_building_guid = 83) LocalObject(479, Door.Constructor(Vector3(3750f, 6056f, 57.46999f)), owning_building_guid = 83) LocalObject(480, Door.Constructor(Vector3(3750f, 6056f, 77.46899f)), owning_building_guid = 83) LocalObject(2935, Door.Constructor(Vector3(3749.146f, 6036.794f, 47.28499f)), owning_building_guid = 83) LocalObject(2936, Door.Constructor(Vector3(3749.146f, 6053.204f, 47.28499f)), owning_building_guid = 83) - LocalObject(1109, IFFLock.Constructor(Vector3(3747.957f, 6056.811f, 57.40999f), Vector3(0, 0, 0)), owning_building_guid = 83, door_guid = 479) - LocalObject(1110, IFFLock.Constructor(Vector3(3747.957f, 6056.811f, 77.40999f), Vector3(0, 0, 0)), owning_building_guid = 83, door_guid = 480) - LocalObject(1111, IFFLock.Constructor(Vector3(3752.047f, 6039.189f, 57.40999f), Vector3(0, 0, 180)), owning_building_guid = 83, door_guid = 477) - LocalObject(1112, IFFLock.Constructor(Vector3(3752.047f, 6039.189f, 77.40999f), Vector3(0, 0, 180)), owning_building_guid = 83, door_guid = 478) + LocalObject( + 1109, + IFFLock.Constructor(Vector3(3747.957f, 6056.811f, 57.40999f), Vector3(0, 0, 0)), + owning_building_guid = 83, + door_guid = 479 + ) + LocalObject( + 1110, + IFFLock.Constructor(Vector3(3747.957f, 6056.811f, 77.40999f), Vector3(0, 0, 0)), + owning_building_guid = 83, + door_guid = 480 + ) + LocalObject( + 1111, + IFFLock.Constructor(Vector3(3752.047f, 6039.189f, 57.40999f), Vector3(0, 0, 180)), + owning_building_guid = 83, + door_guid = 477 + ) + LocalObject( + 1112, + IFFLock.Constructor(Vector3(3752.047f, 6039.189f, 77.40999f), Vector3(0, 0, 180)), + owning_building_guid = 83, + door_guid = 478 + ) LocalObject(1462, Locker.Constructor(Vector3(3753.716f, 6032.963f, 45.94299f)), owning_building_guid = 83) LocalObject(1463, Locker.Constructor(Vector3(3753.751f, 6054.835f, 45.94299f)), owning_building_guid = 83) LocalObject(1464, Locker.Constructor(Vector3(3755.053f, 6032.963f, 45.94299f)), owning_building_guid = 83) @@ -2858,39 +8413,126 @@ object Map04 { // Ishundar LocalObject(1467, Locker.Constructor(Vector3(3757.741f, 6054.835f, 45.94299f)), owning_building_guid = 83) LocalObject(1468, Locker.Constructor(Vector3(3759.143f, 6032.963f, 45.94299f)), owning_building_guid = 83) LocalObject(1469, Locker.Constructor(Vector3(3759.143f, 6054.835f, 45.94299f)), owning_building_guid = 83) - LocalObject(1995, Terminal.Constructor(Vector3(3759.445f, 6038.129f, 47.28099f), order_terminal), owning_building_guid = 83) - LocalObject(1996, Terminal.Constructor(Vector3(3759.445f, 6043.853f, 47.28099f), order_terminal), owning_building_guid = 83) - LocalObject(1997, Terminal.Constructor(Vector3(3759.445f, 6049.234f, 47.28099f), order_terminal), owning_building_guid = 83) - LocalObject(2711, SpawnTube.Constructor(Vector3(3748.706f, 6035.742f, 45.43099f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 83) - LocalObject(2712, SpawnTube.Constructor(Vector3(3748.706f, 6052.152f, 45.43099f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 83) - LocalObject(2342, ProximityTerminal.Constructor(Vector3(3736.907f, 6042.725f, 83.51899f), pad_landing_tower_frame), owning_building_guid = 83) - LocalObject(2343, Terminal.Constructor(Vector3(3736.907f, 6042.725f, 83.51899f), air_rearm_terminal), owning_building_guid = 83) - LocalObject(2345, ProximityTerminal.Constructor(Vector3(3736.907f, 6053.17f, 83.51899f), pad_landing_tower_frame), owning_building_guid = 83) - LocalObject(2346, Terminal.Constructor(Vector3(3736.907f, 6053.17f, 83.51899f), air_rearm_terminal), owning_building_guid = 83) - LocalObject(1814, FacilityTurret.Constructor(Vector3(3723.07f, 6033.045f, 74.89099f), manned_turret), owning_building_guid = 83) + LocalObject( + 1995, + Terminal.Constructor(Vector3(3759.445f, 6038.129f, 47.28099f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 1996, + Terminal.Constructor(Vector3(3759.445f, 6043.853f, 47.28099f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 1997, + Terminal.Constructor(Vector3(3759.445f, 6049.234f, 47.28099f), order_terminal), + owning_building_guid = 83 + ) + LocalObject( + 2711, + SpawnTube.Constructor(Vector3(3748.706f, 6035.742f, 45.43099f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 83 + ) + LocalObject( + 2712, + SpawnTube.Constructor(Vector3(3748.706f, 6052.152f, 45.43099f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 83 + ) + LocalObject( + 2342, + ProximityTerminal.Constructor(Vector3(3736.907f, 6042.725f, 83.51899f), pad_landing_tower_frame), + owning_building_guid = 83 + ) + LocalObject( + 2343, + Terminal.Constructor(Vector3(3736.907f, 6042.725f, 83.51899f), air_rearm_terminal), + owning_building_guid = 83 + ) + LocalObject( + 2345, + ProximityTerminal.Constructor(Vector3(3736.907f, 6053.17f, 83.51899f), pad_landing_tower_frame), + owning_building_guid = 83 + ) + LocalObject( + 2346, + Terminal.Constructor(Vector3(3736.907f, 6053.17f, 83.51899f), air_rearm_terminal), + owning_building_guid = 83 + ) + LocalObject( + 1814, + FacilityTurret.Constructor(Vector3(3723.07f, 6033.045f, 74.89099f), manned_turret), + owning_building_guid = 83 + ) TurretToWeapon(1814, 5106) - LocalObject(1815, FacilityTurret.Constructor(Vector3(3761.497f, 6062.957f, 74.89099f), manned_turret), owning_building_guid = 83) + LocalObject( + 1815, + FacilityTurret.Constructor(Vector3(3761.497f, 6062.957f, 74.89099f), manned_turret), + owning_building_guid = 83 + ) TurretToWeapon(1815, 5107) - LocalObject(2498, Painbox.Constructor(Vector3(3742.454f, 6040.849f, 47.96849f), painbox_radius_continuous), owning_building_guid = 83) - LocalObject(2499, Painbox.Constructor(Vector3(3754.923f, 6037.54f, 46.04899f), painbox_radius_continuous), owning_building_guid = 83) - LocalObject(2500, Painbox.Constructor(Vector3(3755.113f, 6050.022f, 46.04899f), painbox_radius_continuous), owning_building_guid = 83) + LocalObject( + 2498, + Painbox.Constructor(Vector3(3742.454f, 6040.849f, 47.96849f), painbox_radius_continuous), + owning_building_guid = 83 + ) + LocalObject( + 2499, + Painbox.Constructor(Vector3(3754.923f, 6037.54f, 46.04899f), painbox_radius_continuous), + owning_building_guid = 83 + ) + LocalObject( + 2500, + Painbox.Constructor(Vector3(3755.113f, 6050.022f, 46.04899f), painbox_radius_continuous), + owning_building_guid = 83 + ) } Building61() def Building61(): Unit = { // Name: TRSanc_Warpgate_Tower Type: tower_c GUID: 84, MapID: 61 - LocalBuilding("TRSanc_Warpgate_Tower", 84, 61, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4098f, 988f, 52.18349f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2786, CaptureTerminal.Constructor(Vector3(4114.587f, 987.897f, 62.1825f), secondary_capture), owning_building_guid = 84) + LocalBuilding( + "TRSanc_Warpgate_Tower", + 84, + 61, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4098f, 988f, 52.18349f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2786, + CaptureTerminal.Constructor(Vector3(4114.587f, 987.897f, 62.1825f), secondary_capture), + owning_building_guid = 84 + ) LocalObject(499, Door.Constructor(Vector3(4110f, 980f, 53.70449f)), owning_building_guid = 84) LocalObject(500, Door.Constructor(Vector3(4110f, 980f, 73.70349f)), owning_building_guid = 84) LocalObject(501, Door.Constructor(Vector3(4110f, 996f, 53.70449f)), owning_building_guid = 84) LocalObject(502, Door.Constructor(Vector3(4110f, 996f, 73.70349f)), owning_building_guid = 84) LocalObject(2942, Door.Constructor(Vector3(4109.146f, 976.794f, 43.51949f)), owning_building_guid = 84) LocalObject(2943, Door.Constructor(Vector3(4109.146f, 993.204f, 43.51949f)), owning_building_guid = 84) - LocalObject(1128, IFFLock.Constructor(Vector3(4107.957f, 996.811f, 53.64449f), Vector3(0, 0, 0)), owning_building_guid = 84, door_guid = 501) - LocalObject(1129, IFFLock.Constructor(Vector3(4107.957f, 996.811f, 73.64449f), Vector3(0, 0, 0)), owning_building_guid = 84, door_guid = 502) - LocalObject(1130, IFFLock.Constructor(Vector3(4112.047f, 979.189f, 53.64449f), Vector3(0, 0, 180)), owning_building_guid = 84, door_guid = 499) - LocalObject(1131, IFFLock.Constructor(Vector3(4112.047f, 979.189f, 73.64449f), Vector3(0, 0, 180)), owning_building_guid = 84, door_guid = 500) + LocalObject( + 1128, + IFFLock.Constructor(Vector3(4107.957f, 996.811f, 53.64449f), Vector3(0, 0, 0)), + owning_building_guid = 84, + door_guid = 501 + ) + LocalObject( + 1129, + IFFLock.Constructor(Vector3(4107.957f, 996.811f, 73.64449f), Vector3(0, 0, 0)), + owning_building_guid = 84, + door_guid = 502 + ) + LocalObject( + 1130, + IFFLock.Constructor(Vector3(4112.047f, 979.189f, 53.64449f), Vector3(0, 0, 180)), + owning_building_guid = 84, + door_guid = 499 + ) + LocalObject( + 1131, + IFFLock.Constructor(Vector3(4112.047f, 979.189f, 73.64449f), Vector3(0, 0, 180)), + owning_building_guid = 84, + door_guid = 500 + ) LocalObject(1493, Locker.Constructor(Vector3(4113.716f, 972.963f, 42.17749f)), owning_building_guid = 84) LocalObject(1494, Locker.Constructor(Vector3(4113.751f, 994.835f, 42.17749f)), owning_building_guid = 84) LocalObject(1495, Locker.Constructor(Vector3(4115.053f, 972.963f, 42.17749f)), owning_building_guid = 84) @@ -2899,39 +8541,126 @@ object Map04 { // Ishundar LocalObject(1498, Locker.Constructor(Vector3(4117.741f, 994.835f, 42.17749f)), owning_building_guid = 84) LocalObject(1499, Locker.Constructor(Vector3(4119.143f, 972.963f, 42.17749f)), owning_building_guid = 84) LocalObject(1500, Locker.Constructor(Vector3(4119.143f, 994.835f, 42.17749f)), owning_building_guid = 84) - LocalObject(2005, Terminal.Constructor(Vector3(4119.445f, 978.129f, 43.5155f), order_terminal), owning_building_guid = 84) - LocalObject(2006, Terminal.Constructor(Vector3(4119.445f, 983.853f, 43.5155f), order_terminal), owning_building_guid = 84) - LocalObject(2007, Terminal.Constructor(Vector3(4119.445f, 989.234f, 43.5155f), order_terminal), owning_building_guid = 84) - LocalObject(2718, SpawnTube.Constructor(Vector3(4108.706f, 975.742f, 41.6655f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 84) - LocalObject(2719, SpawnTube.Constructor(Vector3(4108.706f, 992.152f, 41.6655f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 84) - LocalObject(2348, ProximityTerminal.Constructor(Vector3(4096.907f, 982.725f, 79.75349f), pad_landing_tower_frame), owning_building_guid = 84) - LocalObject(2349, Terminal.Constructor(Vector3(4096.907f, 982.725f, 79.75349f), air_rearm_terminal), owning_building_guid = 84) - LocalObject(2351, ProximityTerminal.Constructor(Vector3(4096.907f, 993.17f, 79.75349f), pad_landing_tower_frame), owning_building_guid = 84) - LocalObject(2352, Terminal.Constructor(Vector3(4096.907f, 993.17f, 79.75349f), air_rearm_terminal), owning_building_guid = 84) - LocalObject(1824, FacilityTurret.Constructor(Vector3(4083.07f, 973.045f, 71.1255f), manned_turret), owning_building_guid = 84) + LocalObject( + 2005, + Terminal.Constructor(Vector3(4119.445f, 978.129f, 43.5155f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2006, + Terminal.Constructor(Vector3(4119.445f, 983.853f, 43.5155f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2007, + Terminal.Constructor(Vector3(4119.445f, 989.234f, 43.5155f), order_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2718, + SpawnTube.Constructor(Vector3(4108.706f, 975.742f, 41.6655f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 84 + ) + LocalObject( + 2719, + SpawnTube.Constructor(Vector3(4108.706f, 992.152f, 41.6655f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 84 + ) + LocalObject( + 2348, + ProximityTerminal.Constructor(Vector3(4096.907f, 982.725f, 79.75349f), pad_landing_tower_frame), + owning_building_guid = 84 + ) + LocalObject( + 2349, + Terminal.Constructor(Vector3(4096.907f, 982.725f, 79.75349f), air_rearm_terminal), + owning_building_guid = 84 + ) + LocalObject( + 2351, + ProximityTerminal.Constructor(Vector3(4096.907f, 993.17f, 79.75349f), pad_landing_tower_frame), + owning_building_guid = 84 + ) + LocalObject( + 2352, + Terminal.Constructor(Vector3(4096.907f, 993.17f, 79.75349f), air_rearm_terminal), + owning_building_guid = 84 + ) + LocalObject( + 1824, + FacilityTurret.Constructor(Vector3(4083.07f, 973.045f, 71.1255f), manned_turret), + owning_building_guid = 84 + ) TurretToWeapon(1824, 5108) - LocalObject(1826, FacilityTurret.Constructor(Vector3(4121.497f, 1002.957f, 71.1255f), manned_turret), owning_building_guid = 84) + LocalObject( + 1826, + FacilityTurret.Constructor(Vector3(4121.497f, 1002.957f, 71.1255f), manned_turret), + owning_building_guid = 84 + ) TurretToWeapon(1826, 5109) - LocalObject(2501, Painbox.Constructor(Vector3(4102.454f, 980.849f, 44.203f), painbox_radius_continuous), owning_building_guid = 84) - LocalObject(2502, Painbox.Constructor(Vector3(4114.923f, 977.5395f, 42.28349f), painbox_radius_continuous), owning_building_guid = 84) - LocalObject(2503, Painbox.Constructor(Vector3(4115.113f, 990.0219f, 42.28349f), painbox_radius_continuous), owning_building_guid = 84) + LocalObject( + 2501, + Painbox.Constructor(Vector3(4102.454f, 980.849f, 44.203f), painbox_radius_continuous), + owning_building_guid = 84 + ) + LocalObject( + 2502, + Painbox.Constructor(Vector3(4114.923f, 977.5395f, 42.28349f), painbox_radius_continuous), + owning_building_guid = 84 + ) + LocalObject( + 2503, + Painbox.Constructor(Vector3(4115.113f, 990.0219f, 42.28349f), painbox_radius_continuous), + owning_building_guid = 84 + ) } Building41() def Building41(): Unit = { // Name: W_Ceryshen_Warpgate_Tower Type: tower_c GUID: 85, MapID: 41 - LocalBuilding("W_Ceryshen_Warpgate_Tower", 85, 41, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4810f, 3474f, 38.48336f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2794, CaptureTerminal.Constructor(Vector3(4826.587f, 3473.897f, 48.48236f), secondary_capture), owning_building_guid = 85) + LocalBuilding( + "W_Ceryshen_Warpgate_Tower", + 85, + 41, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4810f, 3474f, 38.48336f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2794, + CaptureTerminal.Constructor(Vector3(4826.587f, 3473.897f, 48.48236f), secondary_capture), + owning_building_guid = 85 + ) LocalObject(568, Door.Constructor(Vector3(4822f, 3466f, 40.00436f)), owning_building_guid = 85) LocalObject(569, Door.Constructor(Vector3(4822f, 3466f, 60.00336f)), owning_building_guid = 85) LocalObject(570, Door.Constructor(Vector3(4822f, 3482f, 40.00436f)), owning_building_guid = 85) LocalObject(571, Door.Constructor(Vector3(4822f, 3482f, 60.00336f)), owning_building_guid = 85) LocalObject(2967, Door.Constructor(Vector3(4821.146f, 3462.794f, 29.81936f)), owning_building_guid = 85) LocalObject(2968, Door.Constructor(Vector3(4821.146f, 3479.204f, 29.81936f)), owning_building_guid = 85) - LocalObject(1185, IFFLock.Constructor(Vector3(4819.957f, 3482.811f, 39.94436f), Vector3(0, 0, 0)), owning_building_guid = 85, door_guid = 570) - LocalObject(1186, IFFLock.Constructor(Vector3(4819.957f, 3482.811f, 59.94437f), Vector3(0, 0, 0)), owning_building_guid = 85, door_guid = 571) - LocalObject(1188, IFFLock.Constructor(Vector3(4824.047f, 3465.189f, 39.94436f), Vector3(0, 0, 180)), owning_building_guid = 85, door_guid = 568) - LocalObject(1189, IFFLock.Constructor(Vector3(4824.047f, 3465.189f, 59.94437f), Vector3(0, 0, 180)), owning_building_guid = 85, door_guid = 569) + LocalObject( + 1185, + IFFLock.Constructor(Vector3(4819.957f, 3482.811f, 39.94436f), Vector3(0, 0, 0)), + owning_building_guid = 85, + door_guid = 570 + ) + LocalObject( + 1186, + IFFLock.Constructor(Vector3(4819.957f, 3482.811f, 59.94437f), Vector3(0, 0, 0)), + owning_building_guid = 85, + door_guid = 571 + ) + LocalObject( + 1188, + IFFLock.Constructor(Vector3(4824.047f, 3465.189f, 39.94436f), Vector3(0, 0, 180)), + owning_building_guid = 85, + door_guid = 568 + ) + LocalObject( + 1189, + IFFLock.Constructor(Vector3(4824.047f, 3465.189f, 59.94437f), Vector3(0, 0, 180)), + owning_building_guid = 85, + door_guid = 569 + ) LocalObject(1602, Locker.Constructor(Vector3(4825.716f, 3458.963f, 28.47736f)), owning_building_guid = 85) LocalObject(1603, Locker.Constructor(Vector3(4825.751f, 3480.835f, 28.47736f)), owning_building_guid = 85) LocalObject(1604, Locker.Constructor(Vector3(4827.053f, 3458.963f, 28.47736f)), owning_building_guid = 85) @@ -2940,39 +8669,126 @@ object Map04 { // Ishundar LocalObject(1607, Locker.Constructor(Vector3(4829.741f, 3480.835f, 28.47736f)), owning_building_guid = 85) LocalObject(1608, Locker.Constructor(Vector3(4831.143f, 3458.963f, 28.47736f)), owning_building_guid = 85) LocalObject(1609, Locker.Constructor(Vector3(4831.143f, 3480.835f, 28.47736f)), owning_building_guid = 85) - LocalObject(2044, Terminal.Constructor(Vector3(4831.445f, 3464.129f, 29.81536f), order_terminal), owning_building_guid = 85) - LocalObject(2045, Terminal.Constructor(Vector3(4831.445f, 3469.853f, 29.81536f), order_terminal), owning_building_guid = 85) - LocalObject(2046, Terminal.Constructor(Vector3(4831.445f, 3475.234f, 29.81536f), order_terminal), owning_building_guid = 85) - LocalObject(2743, SpawnTube.Constructor(Vector3(4820.706f, 3461.742f, 27.96536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 85) - LocalObject(2744, SpawnTube.Constructor(Vector3(4820.706f, 3478.152f, 27.96536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 85) - LocalObject(2354, ProximityTerminal.Constructor(Vector3(4808.907f, 3468.725f, 66.05336f), pad_landing_tower_frame), owning_building_guid = 85) - LocalObject(2355, Terminal.Constructor(Vector3(4808.907f, 3468.725f, 66.05336f), air_rearm_terminal), owning_building_guid = 85) - LocalObject(2357, ProximityTerminal.Constructor(Vector3(4808.907f, 3479.17f, 66.05336f), pad_landing_tower_frame), owning_building_guid = 85) - LocalObject(2358, Terminal.Constructor(Vector3(4808.907f, 3479.17f, 66.05336f), air_rearm_terminal), owning_building_guid = 85) - LocalObject(1846, FacilityTurret.Constructor(Vector3(4795.07f, 3459.045f, 57.42536f), manned_turret), owning_building_guid = 85) + LocalObject( + 2044, + Terminal.Constructor(Vector3(4831.445f, 3464.129f, 29.81536f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2045, + Terminal.Constructor(Vector3(4831.445f, 3469.853f, 29.81536f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2046, + Terminal.Constructor(Vector3(4831.445f, 3475.234f, 29.81536f), order_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2743, + SpawnTube.Constructor(Vector3(4820.706f, 3461.742f, 27.96536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 85 + ) + LocalObject( + 2744, + SpawnTube.Constructor(Vector3(4820.706f, 3478.152f, 27.96536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 85 + ) + LocalObject( + 2354, + ProximityTerminal.Constructor(Vector3(4808.907f, 3468.725f, 66.05336f), pad_landing_tower_frame), + owning_building_guid = 85 + ) + LocalObject( + 2355, + Terminal.Constructor(Vector3(4808.907f, 3468.725f, 66.05336f), air_rearm_terminal), + owning_building_guid = 85 + ) + LocalObject( + 2357, + ProximityTerminal.Constructor(Vector3(4808.907f, 3479.17f, 66.05336f), pad_landing_tower_frame), + owning_building_guid = 85 + ) + LocalObject( + 2358, + Terminal.Constructor(Vector3(4808.907f, 3479.17f, 66.05336f), air_rearm_terminal), + owning_building_guid = 85 + ) + LocalObject( + 1846, + FacilityTurret.Constructor(Vector3(4795.07f, 3459.045f, 57.42536f), manned_turret), + owning_building_guid = 85 + ) TurretToWeapon(1846, 5110) - LocalObject(1851, FacilityTurret.Constructor(Vector3(4833.497f, 3488.957f, 57.42536f), manned_turret), owning_building_guid = 85) + LocalObject( + 1851, + FacilityTurret.Constructor(Vector3(4833.497f, 3488.957f, 57.42536f), manned_turret), + owning_building_guid = 85 + ) TurretToWeapon(1851, 5111) - LocalObject(2525, Painbox.Constructor(Vector3(4814.454f, 3466.849f, 30.50286f), painbox_radius_continuous), owning_building_guid = 85) - LocalObject(2526, Painbox.Constructor(Vector3(4826.923f, 3463.54f, 28.58336f), painbox_radius_continuous), owning_building_guid = 85) - LocalObject(2527, Painbox.Constructor(Vector3(4827.113f, 3476.022f, 28.58336f), painbox_radius_continuous), owning_building_guid = 85) + LocalObject( + 2525, + Painbox.Constructor(Vector3(4814.454f, 3466.849f, 30.50286f), painbox_radius_continuous), + owning_building_guid = 85 + ) + LocalObject( + 2526, + Painbox.Constructor(Vector3(4826.923f, 3463.54f, 28.58336f), painbox_radius_continuous), + owning_building_guid = 85 + ) + LocalObject( + 2527, + Painbox.Constructor(Vector3(4827.113f, 3476.022f, 28.58336f), painbox_radius_continuous), + owning_building_guid = 85 + ) } Building55() def Building55(): Unit = { // Name: Irkalla_Tower Type: tower_c GUID: 86, MapID: 55 - LocalBuilding("Irkalla_Tower", 86, 55, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4884f, 4940f, 67.48396f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2795, CaptureTerminal.Constructor(Vector3(4900.587f, 4939.897f, 77.48296f), secondary_capture), owning_building_guid = 86) + LocalBuilding( + "Irkalla_Tower", + 86, + 55, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4884f, 4940f, 67.48396f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2795, + CaptureTerminal.Constructor(Vector3(4900.587f, 4939.897f, 77.48296f), secondary_capture), + owning_building_guid = 86 + ) LocalObject(581, Door.Constructor(Vector3(4896f, 4932f, 69.00496f)), owning_building_guid = 86) LocalObject(582, Door.Constructor(Vector3(4896f, 4932f, 89.00395f)), owning_building_guid = 86) LocalObject(583, Door.Constructor(Vector3(4896f, 4948f, 69.00496f)), owning_building_guid = 86) LocalObject(584, Door.Constructor(Vector3(4896f, 4948f, 89.00395f)), owning_building_guid = 86) LocalObject(2969, Door.Constructor(Vector3(4895.146f, 4928.794f, 58.81995f)), owning_building_guid = 86) LocalObject(2970, Door.Constructor(Vector3(4895.146f, 4945.204f, 58.81995f)), owning_building_guid = 86) - LocalObject(1197, IFFLock.Constructor(Vector3(4893.957f, 4948.811f, 68.94495f), Vector3(0, 0, 0)), owning_building_guid = 86, door_guid = 583) - LocalObject(1198, IFFLock.Constructor(Vector3(4893.957f, 4948.811f, 88.94495f), Vector3(0, 0, 0)), owning_building_guid = 86, door_guid = 584) - LocalObject(1199, IFFLock.Constructor(Vector3(4898.047f, 4931.189f, 68.94495f), Vector3(0, 0, 180)), owning_building_guid = 86, door_guid = 581) - LocalObject(1200, IFFLock.Constructor(Vector3(4898.047f, 4931.189f, 88.94495f), Vector3(0, 0, 180)), owning_building_guid = 86, door_guid = 582) + LocalObject( + 1197, + IFFLock.Constructor(Vector3(4893.957f, 4948.811f, 68.94495f), Vector3(0, 0, 0)), + owning_building_guid = 86, + door_guid = 583 + ) + LocalObject( + 1198, + IFFLock.Constructor(Vector3(4893.957f, 4948.811f, 88.94495f), Vector3(0, 0, 0)), + owning_building_guid = 86, + door_guid = 584 + ) + LocalObject( + 1199, + IFFLock.Constructor(Vector3(4898.047f, 4931.189f, 68.94495f), Vector3(0, 0, 180)), + owning_building_guid = 86, + door_guid = 581 + ) + LocalObject( + 1200, + IFFLock.Constructor(Vector3(4898.047f, 4931.189f, 88.94495f), Vector3(0, 0, 180)), + owning_building_guid = 86, + door_guid = 582 + ) LocalObject(1610, Locker.Constructor(Vector3(4899.716f, 4924.963f, 57.47795f)), owning_building_guid = 86) LocalObject(1611, Locker.Constructor(Vector3(4899.751f, 4946.835f, 57.47795f)), owning_building_guid = 86) LocalObject(1612, Locker.Constructor(Vector3(4901.053f, 4924.963f, 57.47795f)), owning_building_guid = 86) @@ -2981,39 +8797,126 @@ object Map04 { // Ishundar LocalObject(1615, Locker.Constructor(Vector3(4903.741f, 4946.835f, 57.47795f)), owning_building_guid = 86) LocalObject(1616, Locker.Constructor(Vector3(4905.143f, 4924.963f, 57.47795f)), owning_building_guid = 86) LocalObject(1617, Locker.Constructor(Vector3(4905.143f, 4946.835f, 57.47795f)), owning_building_guid = 86) - LocalObject(2047, Terminal.Constructor(Vector3(4905.445f, 4930.129f, 58.81596f), order_terminal), owning_building_guid = 86) - LocalObject(2048, Terminal.Constructor(Vector3(4905.445f, 4935.853f, 58.81596f), order_terminal), owning_building_guid = 86) - LocalObject(2049, Terminal.Constructor(Vector3(4905.445f, 4941.234f, 58.81596f), order_terminal), owning_building_guid = 86) - LocalObject(2745, SpawnTube.Constructor(Vector3(4894.706f, 4927.742f, 56.96596f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 86) - LocalObject(2746, SpawnTube.Constructor(Vector3(4894.706f, 4944.152f, 56.96596f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 86) - LocalObject(2360, ProximityTerminal.Constructor(Vector3(4882.907f, 4934.725f, 95.05396f), pad_landing_tower_frame), owning_building_guid = 86) - LocalObject(2361, Terminal.Constructor(Vector3(4882.907f, 4934.725f, 95.05396f), air_rearm_terminal), owning_building_guid = 86) - LocalObject(2363, ProximityTerminal.Constructor(Vector3(4882.907f, 4945.17f, 95.05396f), pad_landing_tower_frame), owning_building_guid = 86) - LocalObject(2364, Terminal.Constructor(Vector3(4882.907f, 4945.17f, 95.05396f), air_rearm_terminal), owning_building_guid = 86) - LocalObject(1852, FacilityTurret.Constructor(Vector3(4869.07f, 4925.045f, 86.42596f), manned_turret), owning_building_guid = 86) + LocalObject( + 2047, + Terminal.Constructor(Vector3(4905.445f, 4930.129f, 58.81596f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2048, + Terminal.Constructor(Vector3(4905.445f, 4935.853f, 58.81596f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2049, + Terminal.Constructor(Vector3(4905.445f, 4941.234f, 58.81596f), order_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2745, + SpawnTube.Constructor(Vector3(4894.706f, 4927.742f, 56.96596f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 86 + ) + LocalObject( + 2746, + SpawnTube.Constructor(Vector3(4894.706f, 4944.152f, 56.96596f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 86 + ) + LocalObject( + 2360, + ProximityTerminal.Constructor(Vector3(4882.907f, 4934.725f, 95.05396f), pad_landing_tower_frame), + owning_building_guid = 86 + ) + LocalObject( + 2361, + Terminal.Constructor(Vector3(4882.907f, 4934.725f, 95.05396f), air_rearm_terminal), + owning_building_guid = 86 + ) + LocalObject( + 2363, + ProximityTerminal.Constructor(Vector3(4882.907f, 4945.17f, 95.05396f), pad_landing_tower_frame), + owning_building_guid = 86 + ) + LocalObject( + 2364, + Terminal.Constructor(Vector3(4882.907f, 4945.17f, 95.05396f), air_rearm_terminal), + owning_building_guid = 86 + ) + LocalObject( + 1852, + FacilityTurret.Constructor(Vector3(4869.07f, 4925.045f, 86.42596f), manned_turret), + owning_building_guid = 86 + ) TurretToWeapon(1852, 5112) - LocalObject(1855, FacilityTurret.Constructor(Vector3(4907.497f, 4954.957f, 86.42596f), manned_turret), owning_building_guid = 86) + LocalObject( + 1855, + FacilityTurret.Constructor(Vector3(4907.497f, 4954.957f, 86.42596f), manned_turret), + owning_building_guid = 86 + ) TurretToWeapon(1855, 5113) - LocalObject(2528, Painbox.Constructor(Vector3(4888.454f, 4932.849f, 59.50346f), painbox_radius_continuous), owning_building_guid = 86) - LocalObject(2529, Painbox.Constructor(Vector3(4900.923f, 4929.54f, 57.58395f), painbox_radius_continuous), owning_building_guid = 86) - LocalObject(2530, Painbox.Constructor(Vector3(4901.113f, 4942.022f, 57.58395f), painbox_radius_continuous), owning_building_guid = 86) + LocalObject( + 2528, + Painbox.Constructor(Vector3(4888.454f, 4932.849f, 59.50346f), painbox_radius_continuous), + owning_building_guid = 86 + ) + LocalObject( + 2529, + Painbox.Constructor(Vector3(4900.923f, 4929.54f, 57.58395f), painbox_radius_continuous), + owning_building_guid = 86 + ) + LocalObject( + 2530, + Painbox.Constructor(Vector3(4901.113f, 4942.022f, 57.58395f), painbox_radius_continuous), + owning_building_guid = 86 + ) } Building20() def Building20(): Unit = { // Name: E_Zaqar_Tower Type: tower_c GUID: 87, MapID: 20 - LocalBuilding("E_Zaqar_Tower", 87, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5312f, 2240f, 31.13437f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2796, CaptureTerminal.Constructor(Vector3(5328.587f, 2239.897f, 41.13337f), secondary_capture), owning_building_guid = 87) + LocalBuilding( + "E_Zaqar_Tower", + 87, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5312f, 2240f, 31.13437f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2796, + CaptureTerminal.Constructor(Vector3(5328.587f, 2239.897f, 41.13337f), secondary_capture), + owning_building_guid = 87 + ) LocalObject(586, Door.Constructor(Vector3(5324f, 2232f, 32.65537f)), owning_building_guid = 87) LocalObject(587, Door.Constructor(Vector3(5324f, 2232f, 52.65437f)), owning_building_guid = 87) LocalObject(588, Door.Constructor(Vector3(5324f, 2248f, 32.65537f)), owning_building_guid = 87) LocalObject(589, Door.Constructor(Vector3(5324f, 2248f, 52.65437f)), owning_building_guid = 87) LocalObject(2971, Door.Constructor(Vector3(5323.146f, 2228.794f, 22.47037f)), owning_building_guid = 87) LocalObject(2972, Door.Constructor(Vector3(5323.146f, 2245.204f, 22.47037f)), owning_building_guid = 87) - LocalObject(1201, IFFLock.Constructor(Vector3(5321.957f, 2248.811f, 32.59537f), Vector3(0, 0, 0)), owning_building_guid = 87, door_guid = 588) - LocalObject(1202, IFFLock.Constructor(Vector3(5321.957f, 2248.811f, 52.59538f), Vector3(0, 0, 0)), owning_building_guid = 87, door_guid = 589) - LocalObject(1203, IFFLock.Constructor(Vector3(5326.047f, 2231.189f, 32.59537f), Vector3(0, 0, 180)), owning_building_guid = 87, door_guid = 586) - LocalObject(1204, IFFLock.Constructor(Vector3(5326.047f, 2231.189f, 52.59538f), Vector3(0, 0, 180)), owning_building_guid = 87, door_guid = 587) + LocalObject( + 1201, + IFFLock.Constructor(Vector3(5321.957f, 2248.811f, 32.59537f), Vector3(0, 0, 0)), + owning_building_guid = 87, + door_guid = 588 + ) + LocalObject( + 1202, + IFFLock.Constructor(Vector3(5321.957f, 2248.811f, 52.59538f), Vector3(0, 0, 0)), + owning_building_guid = 87, + door_guid = 589 + ) + LocalObject( + 1203, + IFFLock.Constructor(Vector3(5326.047f, 2231.189f, 32.59537f), Vector3(0, 0, 180)), + owning_building_guid = 87, + door_guid = 586 + ) + LocalObject( + 1204, + IFFLock.Constructor(Vector3(5326.047f, 2231.189f, 52.59538f), Vector3(0, 0, 180)), + owning_building_guid = 87, + door_guid = 587 + ) LocalObject(1618, Locker.Constructor(Vector3(5327.716f, 2224.963f, 21.12837f)), owning_building_guid = 87) LocalObject(1619, Locker.Constructor(Vector3(5327.751f, 2246.835f, 21.12837f)), owning_building_guid = 87) LocalObject(1620, Locker.Constructor(Vector3(5329.053f, 2224.963f, 21.12837f)), owning_building_guid = 87) @@ -3022,39 +8925,126 @@ object Map04 { // Ishundar LocalObject(1623, Locker.Constructor(Vector3(5331.741f, 2246.835f, 21.12837f)), owning_building_guid = 87) LocalObject(1624, Locker.Constructor(Vector3(5333.143f, 2224.963f, 21.12837f)), owning_building_guid = 87) LocalObject(1625, Locker.Constructor(Vector3(5333.143f, 2246.835f, 21.12837f)), owning_building_guid = 87) - LocalObject(2050, Terminal.Constructor(Vector3(5333.445f, 2230.129f, 22.46637f), order_terminal), owning_building_guid = 87) - LocalObject(2051, Terminal.Constructor(Vector3(5333.445f, 2235.853f, 22.46637f), order_terminal), owning_building_guid = 87) - LocalObject(2052, Terminal.Constructor(Vector3(5333.445f, 2241.234f, 22.46637f), order_terminal), owning_building_guid = 87) - LocalObject(2747, SpawnTube.Constructor(Vector3(5322.706f, 2227.742f, 20.61637f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 87) - LocalObject(2748, SpawnTube.Constructor(Vector3(5322.706f, 2244.152f, 20.61637f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 87) - LocalObject(2366, ProximityTerminal.Constructor(Vector3(5310.907f, 2234.725f, 58.70437f), pad_landing_tower_frame), owning_building_guid = 87) - LocalObject(2367, Terminal.Constructor(Vector3(5310.907f, 2234.725f, 58.70437f), air_rearm_terminal), owning_building_guid = 87) - LocalObject(2369, ProximityTerminal.Constructor(Vector3(5310.907f, 2245.17f, 58.70437f), pad_landing_tower_frame), owning_building_guid = 87) - LocalObject(2370, Terminal.Constructor(Vector3(5310.907f, 2245.17f, 58.70437f), air_rearm_terminal), owning_building_guid = 87) - LocalObject(1856, FacilityTurret.Constructor(Vector3(5297.07f, 2225.045f, 50.07637f), manned_turret), owning_building_guid = 87) + LocalObject( + 2050, + Terminal.Constructor(Vector3(5333.445f, 2230.129f, 22.46637f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2051, + Terminal.Constructor(Vector3(5333.445f, 2235.853f, 22.46637f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2052, + Terminal.Constructor(Vector3(5333.445f, 2241.234f, 22.46637f), order_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2747, + SpawnTube.Constructor(Vector3(5322.706f, 2227.742f, 20.61637f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 87 + ) + LocalObject( + 2748, + SpawnTube.Constructor(Vector3(5322.706f, 2244.152f, 20.61637f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 87 + ) + LocalObject( + 2366, + ProximityTerminal.Constructor(Vector3(5310.907f, 2234.725f, 58.70437f), pad_landing_tower_frame), + owning_building_guid = 87 + ) + LocalObject( + 2367, + Terminal.Constructor(Vector3(5310.907f, 2234.725f, 58.70437f), air_rearm_terminal), + owning_building_guid = 87 + ) + LocalObject( + 2369, + ProximityTerminal.Constructor(Vector3(5310.907f, 2245.17f, 58.70437f), pad_landing_tower_frame), + owning_building_guid = 87 + ) + LocalObject( + 2370, + Terminal.Constructor(Vector3(5310.907f, 2245.17f, 58.70437f), air_rearm_terminal), + owning_building_guid = 87 + ) + LocalObject( + 1856, + FacilityTurret.Constructor(Vector3(5297.07f, 2225.045f, 50.07637f), manned_turret), + owning_building_guid = 87 + ) TurretToWeapon(1856, 5114) - LocalObject(1857, FacilityTurret.Constructor(Vector3(5335.497f, 2254.957f, 50.07637f), manned_turret), owning_building_guid = 87) + LocalObject( + 1857, + FacilityTurret.Constructor(Vector3(5335.497f, 2254.957f, 50.07637f), manned_turret), + owning_building_guid = 87 + ) TurretToWeapon(1857, 5115) - LocalObject(2531, Painbox.Constructor(Vector3(5316.454f, 2232.849f, 23.15387f), painbox_radius_continuous), owning_building_guid = 87) - LocalObject(2532, Painbox.Constructor(Vector3(5328.923f, 2229.54f, 21.23437f), painbox_radius_continuous), owning_building_guid = 87) - LocalObject(2533, Painbox.Constructor(Vector3(5329.113f, 2242.022f, 21.23437f), painbox_radius_continuous), owning_building_guid = 87) + LocalObject( + 2531, + Painbox.Constructor(Vector3(5316.454f, 2232.849f, 23.15387f), painbox_radius_continuous), + owning_building_guid = 87 + ) + LocalObject( + 2532, + Painbox.Constructor(Vector3(5328.923f, 2229.54f, 21.23437f), painbox_radius_continuous), + owning_building_guid = 87 + ) + LocalObject( + 2533, + Painbox.Constructor(Vector3(5329.113f, 2242.022f, 21.23437f), painbox_radius_continuous), + owning_building_guid = 87 + ) } Building57() def Building57(): Unit = { // Name: E_Ceryshen_Warpgate_Tower Type: tower_c GUID: 88, MapID: 57 - LocalBuilding("E_Ceryshen_Warpgate_Tower", 88, 57, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7020f, 3444f, 28.58011f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2803, CaptureTerminal.Constructor(Vector3(7036.587f, 3443.897f, 38.57911f), secondary_capture), owning_building_guid = 88) + LocalBuilding( + "E_Ceryshen_Warpgate_Tower", + 88, + 57, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7020f, 3444f, 28.58011f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2803, + CaptureTerminal.Constructor(Vector3(7036.587f, 3443.897f, 38.57911f), secondary_capture), + owning_building_guid = 88 + ) LocalObject(637, Door.Constructor(Vector3(7032f, 3436f, 30.10111f)), owning_building_guid = 88) LocalObject(638, Door.Constructor(Vector3(7032f, 3436f, 50.10011f)), owning_building_guid = 88) LocalObject(639, Door.Constructor(Vector3(7032f, 3452f, 30.10111f)), owning_building_guid = 88) LocalObject(640, Door.Constructor(Vector3(7032f, 3452f, 50.10011f)), owning_building_guid = 88) LocalObject(2989, Door.Constructor(Vector3(7031.146f, 3432.794f, 19.91611f)), owning_building_guid = 88) LocalObject(2990, Door.Constructor(Vector3(7031.146f, 3449.204f, 19.91611f)), owning_building_guid = 88) - LocalObject(1247, IFFLock.Constructor(Vector3(7029.957f, 3452.811f, 30.04111f), Vector3(0, 0, 0)), owning_building_guid = 88, door_guid = 639) - LocalObject(1248, IFFLock.Constructor(Vector3(7029.957f, 3452.811f, 50.04111f), Vector3(0, 0, 0)), owning_building_guid = 88, door_guid = 640) - LocalObject(1249, IFFLock.Constructor(Vector3(7034.047f, 3435.189f, 30.04111f), Vector3(0, 0, 180)), owning_building_guid = 88, door_guid = 637) - LocalObject(1250, IFFLock.Constructor(Vector3(7034.047f, 3435.189f, 50.04111f), Vector3(0, 0, 180)), owning_building_guid = 88, door_guid = 638) + LocalObject( + 1247, + IFFLock.Constructor(Vector3(7029.957f, 3452.811f, 30.04111f), Vector3(0, 0, 0)), + owning_building_guid = 88, + door_guid = 639 + ) + LocalObject( + 1248, + IFFLock.Constructor(Vector3(7029.957f, 3452.811f, 50.04111f), Vector3(0, 0, 0)), + owning_building_guid = 88, + door_guid = 640 + ) + LocalObject( + 1249, + IFFLock.Constructor(Vector3(7034.047f, 3435.189f, 30.04111f), Vector3(0, 0, 180)), + owning_building_guid = 88, + door_guid = 637 + ) + LocalObject( + 1250, + IFFLock.Constructor(Vector3(7034.047f, 3435.189f, 50.04111f), Vector3(0, 0, 180)), + owning_building_guid = 88, + door_guid = 638 + ) LocalObject(1707, Locker.Constructor(Vector3(7035.716f, 3428.963f, 18.57411f)), owning_building_guid = 88) LocalObject(1708, Locker.Constructor(Vector3(7035.751f, 3450.835f, 18.57411f)), owning_building_guid = 88) LocalObject(1709, Locker.Constructor(Vector3(7037.053f, 3428.963f, 18.57411f)), owning_building_guid = 88) @@ -3063,46 +9053,122 @@ object Map04 { // Ishundar LocalObject(1712, Locker.Constructor(Vector3(7039.741f, 3450.835f, 18.57411f)), owning_building_guid = 88) LocalObject(1713, Locker.Constructor(Vector3(7041.143f, 3428.963f, 18.57411f)), owning_building_guid = 88) LocalObject(1714, Locker.Constructor(Vector3(7041.143f, 3450.835f, 18.57411f)), owning_building_guid = 88) - LocalObject(2078, Terminal.Constructor(Vector3(7041.445f, 3434.129f, 19.91211f), order_terminal), owning_building_guid = 88) - LocalObject(2079, Terminal.Constructor(Vector3(7041.445f, 3439.853f, 19.91211f), order_terminal), owning_building_guid = 88) - LocalObject(2080, Terminal.Constructor(Vector3(7041.445f, 3445.234f, 19.91211f), order_terminal), owning_building_guid = 88) - LocalObject(2765, SpawnTube.Constructor(Vector3(7030.706f, 3431.742f, 18.06211f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 88) - LocalObject(2766, SpawnTube.Constructor(Vector3(7030.706f, 3448.152f, 18.06211f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 88) - LocalObject(2372, ProximityTerminal.Constructor(Vector3(7018.907f, 3438.725f, 56.15011f), pad_landing_tower_frame), owning_building_guid = 88) - LocalObject(2373, Terminal.Constructor(Vector3(7018.907f, 3438.725f, 56.15011f), air_rearm_terminal), owning_building_guid = 88) - LocalObject(2375, ProximityTerminal.Constructor(Vector3(7018.907f, 3449.17f, 56.15011f), pad_landing_tower_frame), owning_building_guid = 88) - LocalObject(2376, Terminal.Constructor(Vector3(7018.907f, 3449.17f, 56.15011f), air_rearm_terminal), owning_building_guid = 88) - LocalObject(1872, FacilityTurret.Constructor(Vector3(7005.07f, 3429.045f, 47.52211f), manned_turret), owning_building_guid = 88) + LocalObject( + 2078, + Terminal.Constructor(Vector3(7041.445f, 3434.129f, 19.91211f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2079, + Terminal.Constructor(Vector3(7041.445f, 3439.853f, 19.91211f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2080, + Terminal.Constructor(Vector3(7041.445f, 3445.234f, 19.91211f), order_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2765, + SpawnTube.Constructor(Vector3(7030.706f, 3431.742f, 18.06211f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 88 + ) + LocalObject( + 2766, + SpawnTube.Constructor(Vector3(7030.706f, 3448.152f, 18.06211f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 88 + ) + LocalObject( + 2372, + ProximityTerminal.Constructor(Vector3(7018.907f, 3438.725f, 56.15011f), pad_landing_tower_frame), + owning_building_guid = 88 + ) + LocalObject( + 2373, + Terminal.Constructor(Vector3(7018.907f, 3438.725f, 56.15011f), air_rearm_terminal), + owning_building_guid = 88 + ) + LocalObject( + 2375, + ProximityTerminal.Constructor(Vector3(7018.907f, 3449.17f, 56.15011f), pad_landing_tower_frame), + owning_building_guid = 88 + ) + LocalObject( + 2376, + Terminal.Constructor(Vector3(7018.907f, 3449.17f, 56.15011f), air_rearm_terminal), + owning_building_guid = 88 + ) + LocalObject( + 1872, + FacilityTurret.Constructor(Vector3(7005.07f, 3429.045f, 47.52211f), manned_turret), + owning_building_guid = 88 + ) TurretToWeapon(1872, 5116) - LocalObject(1874, FacilityTurret.Constructor(Vector3(7043.497f, 3458.957f, 47.52211f), manned_turret), owning_building_guid = 88) + LocalObject( + 1874, + FacilityTurret.Constructor(Vector3(7043.497f, 3458.957f, 47.52211f), manned_turret), + owning_building_guid = 88 + ) TurretToWeapon(1874, 5117) - LocalObject(2552, Painbox.Constructor(Vector3(7024.454f, 3436.849f, 20.59961f), painbox_radius_continuous), owning_building_guid = 88) - LocalObject(2553, Painbox.Constructor(Vector3(7036.923f, 3433.54f, 18.68011f), painbox_radius_continuous), owning_building_guid = 88) - LocalObject(2554, Painbox.Constructor(Vector3(7037.113f, 3446.022f, 18.68011f), painbox_radius_continuous), owning_building_guid = 88) + LocalObject( + 2552, + Painbox.Constructor(Vector3(7024.454f, 3436.849f, 20.59961f), painbox_radius_continuous), + owning_building_guid = 88 + ) + LocalObject( + 2553, + Painbox.Constructor(Vector3(7036.923f, 3433.54f, 18.68011f), painbox_radius_continuous), + owning_building_guid = 88 + ) + LocalObject( + 2554, + Painbox.Constructor(Vector3(7037.113f, 3446.022f, 18.68011f), painbox_radius_continuous), + owning_building_guid = 88 + ) } Building4() def Building4(): Unit = { // Name: WG_Ishundar_to_Searhus Type: warpgate GUID: 89, MapID: 4 - LocalBuilding("WG_Ishundar_to_Searhus", 89, 4, FoundationBuilder(WarpGate.Structure(Vector3(1440f, 3294f, 45.92022f)))) + LocalBuilding( + "WG_Ishundar_to_Searhus", + 89, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(1440f, 3294f, 45.92022f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Ishundar_to_TRSanc Type: warpgate GUID: 90, MapID: 3 - LocalBuilding("WG_Ishundar_to_TRSanc", 90, 3, FoundationBuilder(WarpGate.Structure(Vector3(3752f, 1050f, 58.47187f)))) + LocalBuilding( + "WG_Ishundar_to_TRSanc", + 90, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(3752f, 1050f, 58.47187f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Ishundar_to_VSSanc Type: warpgate GUID: 91, MapID: 2 - LocalBuilding("WG_Ishundar_to_VSSanc", 91, 2, FoundationBuilder(WarpGate.Structure(Vector3(4728f, 6918f, 30.63858f)))) + LocalBuilding( + "WG_Ishundar_to_VSSanc", + 91, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(4728f, 6918f, 30.63858f))) + ) } Building1() def Building1(): Unit = { // Name: WG_Ishundar_to_Ceryshen Type: warpgate GUID: 92, MapID: 1 - LocalBuilding("WG_Ishundar_to_Ceryshen", 92, 1, FoundationBuilder(WarpGate.Structure(Vector3(5576f, 3538f, 67.25803f)))) + LocalBuilding( + "WG_Ishundar_to_Ceryshen", + 92, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(5576f, 3538f, 67.25803f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map05.scala b/pslogin/src/main/scala/zonemaps/Map05.scala index a61b767e..492e857e 100644 --- a/pslogin/src/main/scala/zonemaps/Map05.scala +++ b/pslogin/src/main/scala/zonemaps/Map05.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map05 { // Forseral Building13() def Building13(): Unit = { // Name: Eadon Type: amp_station GUID: 1, MapID: 13 - LocalBuilding("Eadon", 1, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2716f, 2956f, 53.31126f), Vector3(0f, 0f, 228f), amp_station))) - LocalObject(156, CaptureTerminal.Constructor(Vector3(2718.234f, 2958.477f, 64.81926f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Eadon", + 1, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2716f, 2956f, 53.31126f), + Vector3(0f, 0f, 228f), + amp_station + ) + ) + ) + LocalObject( + 156, + CaptureTerminal.Constructor(Vector3(2718.234f, 2958.477f, 64.81926f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(122, Door.Constructor(Vector3(2710.802f, 2960.397f, 66.21326f)), owning_building_guid = 1) LocalObject(123, Door.Constructor(Vector3(2720.914f, 2951.288f, 66.21326f)), owning_building_guid = 1) LocalObject(240, Door.Constructor(Vector3(2629.126f, 2953.21f, 63.02626f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map05 { // Forseral LocalObject(1983, Door.Constructor(Vector3(2721.302f, 2977.233f, 47.86526f)), owning_building_guid = 1) LocalObject(1984, Door.Constructor(Vector3(2726.722f, 2972.353f, 47.86526f)), owning_building_guid = 1) LocalObject(1985, Door.Constructor(Vector3(2732.139f, 2967.475f, 47.86526f)), owning_building_guid = 1) - LocalObject(721, IFFLock.Constructor(Vector3(2696.923f, 2930.231f, 54.99126f), Vector3(0, 0, 222)), owning_building_guid = 1, door_guid = 683) - LocalObject(743, IFFLock.Constructor(Vector3(2687.657f, 2978.772f, 59.97326f), Vector3(0, 0, 312)), owning_building_guid = 1, door_guid = 245) - LocalObject(744, IFFLock.Constructor(Vector3(2691.106f, 2970.957f, 64.97226f), Vector3(0, 0, 222)), owning_building_guid = 1, door_guid = 246) - LocalObject(745, IFFLock.Constructor(Vector3(2695.218f, 2981.634f, 64.97226f), Vector3(0, 0, 42)), owning_building_guid = 1, door_guid = 247) - LocalObject(746, IFFLock.Constructor(Vector3(2706.543f, 2965.78f, 39.84726f), Vector3(0, 0, 42)), owning_building_guid = 1, door_guid = 469) - LocalObject(747, IFFLock.Constructor(Vector3(2710.485f, 2974.998f, 47.34726f), Vector3(0, 0, 312)), owning_building_guid = 1, door_guid = 471) - LocalObject(748, IFFLock.Constructor(Vector3(2731.726f, 2960.103f, 47.34726f), Vector3(0, 0, 132)), owning_building_guid = 1, door_guid = 474) - LocalObject(749, IFFLock.Constructor(Vector3(2736.543f, 2930.046f, 64.97226f), Vector3(0, 0, 222)), owning_building_guid = 1, door_guid = 251) - LocalObject(750, IFFLock.Constructor(Vector3(2740.651f, 2940.726f, 64.97226f), Vector3(0, 0, 42)), owning_building_guid = 1, door_guid = 252) - LocalObject(751, IFFLock.Constructor(Vector3(2744.359f, 2933.216f, 59.97326f), Vector3(0, 0, 132)), owning_building_guid = 1, door_guid = 253) - LocalObject(752, IFFLock.Constructor(Vector3(2745.772f, 2992.694f, 39.84726f), Vector3(0, 0, 222)), owning_building_guid = 1, door_guid = 481) - LocalObject(753, IFFLock.Constructor(Vector3(2828.287f, 2959.915f, 54.97126f), Vector3(0, 0, 132)), owning_building_guid = 1, door_guid = 258) + LocalObject( + 721, + IFFLock.Constructor(Vector3(2696.923f, 2930.231f, 54.99126f), Vector3(0, 0, 222)), + owning_building_guid = 1, + door_guid = 683 + ) + LocalObject( + 743, + IFFLock.Constructor(Vector3(2687.657f, 2978.772f, 59.97326f), Vector3(0, 0, 312)), + owning_building_guid = 1, + door_guid = 245 + ) + LocalObject( + 744, + IFFLock.Constructor(Vector3(2691.106f, 2970.957f, 64.97226f), Vector3(0, 0, 222)), + owning_building_guid = 1, + door_guid = 246 + ) + LocalObject( + 745, + IFFLock.Constructor(Vector3(2695.218f, 2981.634f, 64.97226f), Vector3(0, 0, 42)), + owning_building_guid = 1, + door_guid = 247 + ) + LocalObject( + 746, + IFFLock.Constructor(Vector3(2706.543f, 2965.78f, 39.84726f), Vector3(0, 0, 42)), + owning_building_guid = 1, + door_guid = 469 + ) + LocalObject( + 747, + IFFLock.Constructor(Vector3(2710.485f, 2974.998f, 47.34726f), Vector3(0, 0, 312)), + owning_building_guid = 1, + door_guid = 471 + ) + LocalObject( + 748, + IFFLock.Constructor(Vector3(2731.726f, 2960.103f, 47.34726f), Vector3(0, 0, 132)), + owning_building_guid = 1, + door_guid = 474 + ) + LocalObject( + 749, + IFFLock.Constructor(Vector3(2736.543f, 2930.046f, 64.97226f), Vector3(0, 0, 222)), + owning_building_guid = 1, + door_guid = 251 + ) + LocalObject( + 750, + IFFLock.Constructor(Vector3(2740.651f, 2940.726f, 64.97226f), Vector3(0, 0, 42)), + owning_building_guid = 1, + door_guid = 252 + ) + LocalObject( + 751, + IFFLock.Constructor(Vector3(2744.359f, 2933.216f, 59.97326f), Vector3(0, 0, 132)), + owning_building_guid = 1, + door_guid = 253 + ) + LocalObject( + 752, + IFFLock.Constructor(Vector3(2745.772f, 2992.694f, 39.84726f), Vector3(0, 0, 222)), + owning_building_guid = 1, + door_guid = 481 + ) + LocalObject( + 753, + IFFLock.Constructor(Vector3(2828.287f, 2959.915f, 54.97126f), Vector3(0, 0, 132)), + owning_building_guid = 1, + door_guid = 258 + ) LocalObject(925, Locker.Constructor(Vector3(2709.031f, 2968.972f, 46.27225f)), owning_building_guid = 1) LocalObject(926, Locker.Constructor(Vector3(2709.8f, 2969.826f, 46.27225f)), owning_building_guid = 1) LocalObject(927, Locker.Constructor(Vector3(2710.567f, 2970.678f, 46.27225f)), owning_building_guid = 1) @@ -94,65 +170,258 @@ object Map05 { // Forseral LocalObject(934, Locker.Constructor(Vector3(2717.333f, 2948.268f, 38.51126f)), owning_building_guid = 1) LocalObject(935, Locker.Constructor(Vector3(2718.228f, 2949.26f, 38.51126f)), owning_building_guid = 1) LocalObject(936, Locker.Constructor(Vector3(2719.114f, 2950.244f, 38.51126f)), owning_building_guid = 1) - LocalObject(1346, Terminal.Constructor(Vector3(2699.298f, 2971.042f, 54.84026f), order_terminal), owning_building_guid = 1) - LocalObject(1347, Terminal.Constructor(Vector3(2713.192f, 2965.722f, 47.60126f), order_terminal), owning_building_guid = 1) - LocalObject(1348, Terminal.Constructor(Vector3(2715.965f, 2963.226f, 47.60126f), order_terminal), owning_building_guid = 1) - LocalObject(1349, Terminal.Constructor(Vector3(2718.781f, 2960.69f, 47.60126f), order_terminal), owning_building_guid = 1) - LocalObject(1350, Terminal.Constructor(Vector3(2731.03f, 2972.699f, 54.84026f), order_terminal), owning_building_guid = 1) - LocalObject(1351, Terminal.Constructor(Vector3(2732.705f, 2940.961f, 54.84026f), order_terminal), owning_building_guid = 1) - LocalObject(1911, Terminal.Constructor(Vector3(2716.339f, 2963.101f, 60.03926f), spawn_terminal), owning_building_guid = 1) - LocalObject(1912, Terminal.Constructor(Vector3(2719.253f, 2978.677f, 48.14526f), spawn_terminal), owning_building_guid = 1) - LocalObject(1913, Terminal.Constructor(Vector3(2724.674f, 2973.801f, 48.14526f), spawn_terminal), owning_building_guid = 1) - LocalObject(1914, Terminal.Constructor(Vector3(2730.088f, 2968.922f, 48.14526f), spawn_terminal), owning_building_guid = 1) - LocalObject(1915, Terminal.Constructor(Vector3(2743.471f, 2963.482f, 40.06826f), spawn_terminal), owning_building_guid = 1) - LocalObject(1916, Terminal.Constructor(Vector3(2777.366f, 2965.258f, 47.56826f), spawn_terminal), owning_building_guid = 1) - LocalObject(2103, Terminal.Constructor(Vector3(2809.357f, 2936.43f, 55.41326f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1309, VehicleSpawnPad.Constructor(Vector3(2799.162f, 2945.489f, 51.25626f), mb_pad_creation, Vector3(0, 0, -48)), owning_building_guid = 1, terminal_guid = 2103) + LocalObject( + 1346, + Terminal.Constructor(Vector3(2699.298f, 2971.042f, 54.84026f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1347, + Terminal.Constructor(Vector3(2713.192f, 2965.722f, 47.60126f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1348, + Terminal.Constructor(Vector3(2715.965f, 2963.226f, 47.60126f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1349, + Terminal.Constructor(Vector3(2718.781f, 2960.69f, 47.60126f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1350, + Terminal.Constructor(Vector3(2731.03f, 2972.699f, 54.84026f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1351, + Terminal.Constructor(Vector3(2732.705f, 2940.961f, 54.84026f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1911, + Terminal.Constructor(Vector3(2716.339f, 2963.101f, 60.03926f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1912, + Terminal.Constructor(Vector3(2719.253f, 2978.677f, 48.14526f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1913, + Terminal.Constructor(Vector3(2724.674f, 2973.801f, 48.14526f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1914, + Terminal.Constructor(Vector3(2730.088f, 2968.922f, 48.14526f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1915, + Terminal.Constructor(Vector3(2743.471f, 2963.482f, 40.06826f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1916, + Terminal.Constructor(Vector3(2777.366f, 2965.258f, 47.56826f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2103, + Terminal.Constructor(Vector3(2809.357f, 2936.43f, 55.41326f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1309, + VehicleSpawnPad.Constructor(Vector3(2799.162f, 2945.489f, 51.25626f), mb_pad_creation, Vector3(0, 0, -48)), + owning_building_guid = 1, + terminal_guid = 2103 + ) LocalObject(1820, ResourceSilo.Constructor(Vector3(2617.239f, 2974.084f, 60.54626f)), owning_building_guid = 1) - LocalObject(1834, SpawnTube.Constructor(Vector3(2720.817f, 2978.262f, 46.01126f), Vector3(0, 0, 132)), owning_building_guid = 1) - LocalObject(1835, SpawnTube.Constructor(Vector3(2726.235f, 2973.384f, 46.01126f), Vector3(0, 0, 132)), owning_building_guid = 1) - LocalObject(1836, SpawnTube.Constructor(Vector3(2731.651f, 2968.507f, 46.01126f), Vector3(0, 0, 132)), owning_building_guid = 1) - LocalObject(1323, ProximityTerminal.Constructor(Vector3(2714.526f, 2945.964f, 38.51126f), medical_terminal), owning_building_guid = 1) - LocalObject(1324, ProximityTerminal.Constructor(Vector3(2730.749f, 2972.389f, 58.51126f), medical_terminal), owning_building_guid = 1) - LocalObject(1491, ProximityTerminal.Constructor(Vector3(2655.83f, 2999.011f, 61.83926f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1492, Terminal.Constructor(Vector3(2655.83f, 2999.011f, 61.83926f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1494, ProximityTerminal.Constructor(Vector3(2668.223f, 2932.578f, 61.81626f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1495, Terminal.Constructor(Vector3(2668.223f, 2932.578f, 61.81626f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1497, ProximityTerminal.Constructor(Vector3(2740.869f, 2897.818f, 63.97726f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1498, Terminal.Constructor(Vector3(2740.869f, 2897.818f, 63.97726f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1500, ProximityTerminal.Constructor(Vector3(2768.999f, 2985.314f, 61.81626f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1501, Terminal.Constructor(Vector3(2768.999f, 2985.314f, 61.81626f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1740, ProximityTerminal.Constructor(Vector3(2674.589f, 2909.421f, 52.71126f), repair_silo), owning_building_guid = 1) - LocalObject(1741, Terminal.Constructor(Vector3(2674.589f, 2909.421f, 52.71126f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1744, ProximityTerminal.Constructor(Vector3(2763.055f, 3007.956f, 52.71126f), repair_silo), owning_building_guid = 1) - LocalObject(1745, Terminal.Constructor(Vector3(2763.055f, 3007.956f, 52.71126f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1228, FacilityTurret.Constructor(Vector3(2595.292f, 2966.677f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1834, + SpawnTube.Constructor(Vector3(2720.817f, 2978.262f, 46.01126f), Vector3(0, 0, 132)), + owning_building_guid = 1 + ) + LocalObject( + 1835, + SpawnTube.Constructor(Vector3(2726.235f, 2973.384f, 46.01126f), Vector3(0, 0, 132)), + owning_building_guid = 1 + ) + LocalObject( + 1836, + SpawnTube.Constructor(Vector3(2731.651f, 2968.507f, 46.01126f), Vector3(0, 0, 132)), + owning_building_guid = 1 + ) + LocalObject( + 1323, + ProximityTerminal.Constructor(Vector3(2714.526f, 2945.964f, 38.51126f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1324, + ProximityTerminal.Constructor(Vector3(2730.749f, 2972.389f, 58.51126f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1491, + ProximityTerminal.Constructor(Vector3(2655.83f, 2999.011f, 61.83926f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1492, + Terminal.Constructor(Vector3(2655.83f, 2999.011f, 61.83926f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1494, + ProximityTerminal.Constructor(Vector3(2668.223f, 2932.578f, 61.81626f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1495, + Terminal.Constructor(Vector3(2668.223f, 2932.578f, 61.81626f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1497, + ProximityTerminal.Constructor(Vector3(2740.869f, 2897.818f, 63.97726f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1498, + Terminal.Constructor(Vector3(2740.869f, 2897.818f, 63.97726f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1500, + ProximityTerminal.Constructor(Vector3(2768.999f, 2985.314f, 61.81626f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1501, + Terminal.Constructor(Vector3(2768.999f, 2985.314f, 61.81626f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1740, + ProximityTerminal.Constructor(Vector3(2674.589f, 2909.421f, 52.71126f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1741, + Terminal.Constructor(Vector3(2674.589f, 2909.421f, 52.71126f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1744, + ProximityTerminal.Constructor(Vector3(2763.055f, 3007.956f, 52.71126f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1745, + Terminal.Constructor(Vector3(2763.055f, 3007.956f, 52.71126f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1228, + FacilityTurret.Constructor(Vector3(2595.292f, 2966.677f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1228, 5000) - LocalObject(1229, FacilityTurret.Constructor(Vector3(2656.437f, 3037.9f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1229, + FacilityTurret.Constructor(Vector3(2656.437f, 3037.9f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1229, 5001) - LocalObject(1230, FacilityTurret.Constructor(Vector3(2696.575f, 2872.485f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1230, + FacilityTurret.Constructor(Vector3(2696.575f, 2872.485f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1230, 5002) - LocalObject(1231, FacilityTurret.Constructor(Vector3(2697.964f, 3080.691f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1231, + FacilityTurret.Constructor(Vector3(2697.964f, 3080.691f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1231, 5003) - LocalObject(1232, FacilityTurret.Constructor(Vector3(2745.161f, 2831.722f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1232, + FacilityTurret.Constructor(Vector3(2745.161f, 2831.722f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1232, 5004) - LocalObject(1233, FacilityTurret.Constructor(Vector3(2847.859f, 2945.764f, 62.01926f), manned_turret), owning_building_guid = 1) + LocalObject( + 1233, + FacilityTurret.Constructor(Vector3(2847.859f, 2945.764f, 62.01926f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1233, 5005) - LocalObject(1629, Painbox.Constructor(Vector3(2750.932f, 3005.082f, 43.38226f), painbox), owning_building_guid = 1) - LocalObject(1639, Painbox.Constructor(Vector3(2723.244f, 2966.157f, 50.95966f), painbox_continuous), owning_building_guid = 1) - LocalObject(1649, Painbox.Constructor(Vector3(2743.115f, 2993.222f, 39.97026f), painbox_door_radius), owning_building_guid = 1) - LocalObject(1659, Painbox.Constructor(Vector3(2711.349f, 2976.335f, 47.21126f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1660, Painbox.Constructor(Vector3(2717.959f, 2952.262f, 49.18986f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1661, Painbox.Constructor(Vector3(2730.88f, 2958.651f, 47.27576f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 1629, + Painbox.Constructor(Vector3(2750.932f, 3005.082f, 43.38226f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 1639, + Painbox.Constructor(Vector3(2723.244f, 2966.157f, 50.95966f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1649, + Painbox.Constructor(Vector3(2743.115f, 2993.222f, 39.97026f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 1659, + Painbox.Constructor(Vector3(2711.349f, 2976.335f, 47.21126f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1660, + Painbox.Constructor(Vector3(2717.959f, 2952.262f, 49.18986f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1661, + Painbox.Constructor(Vector3(2730.88f, 2958.651f, 47.27576f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(220, Generator.Constructor(Vector3(2755.535f, 3005.924f, 37.21725f)), owning_building_guid = 1) - LocalObject(210, Terminal.Constructor(Vector3(2750.089f, 2999.804f, 38.51126f), gen_control), owning_building_guid = 1) + LocalObject( + 210, + Terminal.Constructor(Vector3(2750.089f, 2999.804f, 38.51126f), gen_control), + owning_building_guid = 1 + ) } Building10() def Building10(): Unit = { // Name: Pwyll Type: amp_station GUID: 4, MapID: 10 - LocalBuilding("Pwyll", 4, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4738f, 4852f, 103.9842f), Vector3(0f, 0f, 191f), amp_station))) - LocalObject(162, CaptureTerminal.Constructor(Vector3(4741.275f, 4852.634f, 115.4922f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Pwyll", + 4, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4738f, 4852f, 103.9842f), + Vector3(0f, 0f, 191f), + amp_station + ) + ) + ) + LocalObject( + 162, + CaptureTerminal.Constructor(Vector3(4741.275f, 4852.634f, 115.4922f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(124, Door.Constructor(Vector3(4736.495f, 4858.64f, 116.8862f)), owning_building_guid = 4) LocalObject(125, Door.Constructor(Vector3(4739.088f, 4845.279f, 116.8862f)), owning_building_guid = 4) LocalObject(365, Door.Constructor(Vector3(4666.941f, 4902.054f, 113.6992f)), owning_building_guid = 4) @@ -198,18 +467,78 @@ object Map05 { // Forseral LocalObject(2019, Door.Constructor(Vector3(4755.013f, 4865.766f, 98.53819f)), owning_building_guid = 4) LocalObject(2020, Door.Constructor(Vector3(4756.404f, 4858.607f, 98.53819f)), owning_building_guid = 4) LocalObject(2021, Door.Constructor(Vector3(4757.795f, 4851.452f, 98.53819f)), owning_building_guid = 4) - LocalObject(727, IFFLock.Constructor(Vector3(4707.256f, 4842.901f, 105.6642f), Vector3(0, 0, 259)), owning_building_guid = 4, door_guid = 689) - LocalObject(839, IFFLock.Constructor(Vector3(4727.12f, 4878.927f, 115.6452f), Vector3(0, 0, 259)), owning_building_guid = 4, door_guid = 373) - LocalObject(840, IFFLock.Constructor(Vector3(4729.069f, 4887.244f, 110.6462f), Vector3(0, 0, 349)), owning_building_guid = 4, door_guid = 374) - LocalObject(841, IFFLock.Constructor(Vector3(4736.333f, 4865.502f, 90.5202f), Vector3(0, 0, 79)), owning_building_guid = 4, door_guid = 599) - LocalObject(842, IFFLock.Constructor(Vector3(4736.83f, 4884.979f, 115.6452f), Vector3(0, 0, 79)), owning_building_guid = 4, door_guid = 375) - LocalObject(845, IFFLock.Constructor(Vector3(4738.787f, 4818.909f, 115.6452f), Vector3(0, 0, 259)), owning_building_guid = 4, door_guid = 376) - LocalObject(848, IFFLock.Constructor(Vector3(4745.029f, 4870.491f, 98.0202f), Vector3(0, 0, 349)), owning_building_guid = 4, door_guid = 607) - LocalObject(849, IFFLock.Constructor(Vector3(4746.937f, 4816.736f, 110.6462f), Vector3(0, 0, 169)), owning_building_guid = 4, door_guid = 381) - LocalObject(850, IFFLock.Constructor(Vector3(4748.495f, 4824.966f, 115.6452f), Vector3(0, 0, 79)), owning_building_guid = 4, door_guid = 382) - LocalObject(851, IFFLock.Constructor(Vector3(4753.029f, 4845.813f, 98.0202f), Vector3(0, 0, 169)), owning_building_guid = 4, door_guid = 610) - LocalObject(852, IFFLock.Constructor(Vector3(4783.86f, 4863.388f, 90.5202f), Vector3(0, 0, 259)), owning_building_guid = 4, door_guid = 615) - LocalObject(856, IFFLock.Constructor(Vector3(4830.032f, 4787.55f, 105.6442f), Vector3(0, 0, 169)), owning_building_guid = 4, door_guid = 392) + LocalObject( + 727, + IFFLock.Constructor(Vector3(4707.256f, 4842.901f, 105.6642f), Vector3(0, 0, 259)), + owning_building_guid = 4, + door_guid = 689 + ) + LocalObject( + 839, + IFFLock.Constructor(Vector3(4727.12f, 4878.927f, 115.6452f), Vector3(0, 0, 259)), + owning_building_guid = 4, + door_guid = 373 + ) + LocalObject( + 840, + IFFLock.Constructor(Vector3(4729.069f, 4887.244f, 110.6462f), Vector3(0, 0, 349)), + owning_building_guid = 4, + door_guid = 374 + ) + LocalObject( + 841, + IFFLock.Constructor(Vector3(4736.333f, 4865.502f, 90.5202f), Vector3(0, 0, 79)), + owning_building_guid = 4, + door_guid = 599 + ) + LocalObject( + 842, + IFFLock.Constructor(Vector3(4736.83f, 4884.979f, 115.6452f), Vector3(0, 0, 79)), + owning_building_guid = 4, + door_guid = 375 + ) + LocalObject( + 845, + IFFLock.Constructor(Vector3(4738.787f, 4818.909f, 115.6452f), Vector3(0, 0, 259)), + owning_building_guid = 4, + door_guid = 376 + ) + LocalObject( + 848, + IFFLock.Constructor(Vector3(4745.029f, 4870.491f, 98.0202f), Vector3(0, 0, 349)), + owning_building_guid = 4, + door_guid = 607 + ) + LocalObject( + 849, + IFFLock.Constructor(Vector3(4746.937f, 4816.736f, 110.6462f), Vector3(0, 0, 169)), + owning_building_guid = 4, + door_guid = 381 + ) + LocalObject( + 850, + IFFLock.Constructor(Vector3(4748.495f, 4824.966f, 115.6452f), Vector3(0, 0, 79)), + owning_building_guid = 4, + door_guid = 382 + ) + LocalObject( + 851, + IFFLock.Constructor(Vector3(4753.029f, 4845.813f, 98.0202f), Vector3(0, 0, 169)), + owning_building_guid = 4, + door_guid = 610 + ) + LocalObject( + 852, + IFFLock.Constructor(Vector3(4783.86f, 4863.388f, 90.5202f), Vector3(0, 0, 259)), + owning_building_guid = 4, + door_guid = 615 + ) + LocalObject( + 856, + IFFLock.Constructor(Vector3(4830.032f, 4787.55f, 105.6442f), Vector3(0, 0, 169)), + owning_building_guid = 4, + door_guid = 392 + ) LocalObject(1079, Locker.Constructor(Vector3(4724.719f, 4843.138f, 89.18419f)), owning_building_guid = 4) LocalObject(1080, Locker.Constructor(Vector3(4726.031f, 4843.393f, 89.18419f)), owning_building_guid = 4) LocalObject(1081, Locker.Constructor(Vector3(4727.343f, 4843.648f, 89.18419f)), owning_building_guid = 4) @@ -222,64 +551,253 @@ object Map05 { // Forseral LocalObject(1088, Locker.Constructor(Vector3(4741.369f, 4866.773f, 96.94519f)), owning_building_guid = 4) LocalObject(1089, Locker.Constructor(Vector3(4742.495f, 4866.992f, 96.94519f)), owning_building_guid = 4) LocalObject(1090, Locker.Constructor(Vector3(4743.638f, 4867.214f, 96.94519f)), owning_building_guid = 4) - LocalObject(1403, Terminal.Constructor(Vector3(4733.713f, 4874.064f, 105.5132f), order_terminal), owning_building_guid = 4) - LocalObject(1404, Terminal.Constructor(Vector3(4741.608f, 4861.454f, 98.27419f), order_terminal), owning_building_guid = 4) - LocalObject(1405, Terminal.Constructor(Vector3(4742.291f, 4829.937f, 105.5132f), order_terminal), owning_building_guid = 4) - LocalObject(1406, Terminal.Constructor(Vector3(4742.32f, 4857.792f, 98.27419f), order_terminal), owning_building_guid = 4) - LocalObject(1407, Terminal.Constructor(Vector3(4743.043f, 4854.072f, 98.27419f), order_terminal), owning_building_guid = 4) - LocalObject(1411, Terminal.Constructor(Vector3(4760.053f, 4856.291f, 105.5132f), order_terminal), owning_building_guid = 4) - LocalObject(1953, Terminal.Constructor(Vector3(4742.544f, 4857.468f, 110.7122f), spawn_terminal), owning_building_guid = 4) - LocalObject(1954, Terminal.Constructor(Vector3(4754.245f, 4868.153f, 98.81819f), spawn_terminal), owning_building_guid = 4) - LocalObject(1955, Terminal.Constructor(Vector3(4755.641f, 4860.996f, 98.81819f), spawn_terminal), owning_building_guid = 4) - LocalObject(1956, Terminal.Constructor(Vector3(4757.028f, 4853.842f, 98.81819f), spawn_terminal), owning_building_guid = 4) - LocalObject(1957, Terminal.Constructor(Vector3(4764.442f, 4841.442f, 90.7412f), spawn_terminal), owning_building_guid = 4) - LocalObject(1958, Terminal.Constructor(Vector3(4792.581f, 4822.463f, 98.2412f), spawn_terminal), owning_building_guid = 4) - LocalObject(2109, Terminal.Constructor(Vector3(4800.781f, 4780.187f, 106.0862f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(1317, VehicleSpawnPad.Constructor(Vector3(4798.09f, 4793.557f, 101.9292f), mb_pad_creation, Vector3(0, 0, -11)), owning_building_guid = 4, terminal_guid = 2109) + LocalObject( + 1403, + Terminal.Constructor(Vector3(4733.713f, 4874.064f, 105.5132f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1404, + Terminal.Constructor(Vector3(4741.608f, 4861.454f, 98.27419f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1405, + Terminal.Constructor(Vector3(4742.291f, 4829.937f, 105.5132f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1406, + Terminal.Constructor(Vector3(4742.32f, 4857.792f, 98.27419f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1407, + Terminal.Constructor(Vector3(4743.043f, 4854.072f, 98.27419f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1411, + Terminal.Constructor(Vector3(4760.053f, 4856.291f, 105.5132f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1953, + Terminal.Constructor(Vector3(4742.544f, 4857.468f, 110.7122f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1954, + Terminal.Constructor(Vector3(4754.245f, 4868.153f, 98.81819f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(4755.641f, 4860.996f, 98.81819f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1956, + Terminal.Constructor(Vector3(4757.028f, 4853.842f, 98.81819f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1957, + Terminal.Constructor(Vector3(4764.442f, 4841.442f, 90.7412f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(4792.581f, 4822.463f, 98.2412f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2109, + Terminal.Constructor(Vector3(4800.781f, 4780.187f, 106.0862f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 1317, + VehicleSpawnPad.Constructor(Vector3(4798.09f, 4793.557f, 101.9292f), mb_pad_creation, Vector3(0, 0, -11)), + owning_building_guid = 4, + terminal_guid = 2109 + ) LocalObject(1826, ResourceSilo.Constructor(Vector3(4670.009f, 4925.879f, 111.2192f)), owning_building_guid = 4) - LocalObject(1870, SpawnTube.Constructor(Vector3(4755.245f, 4866.881f, 96.68419f), Vector3(0, 0, 169)), owning_building_guid = 4) - LocalObject(1871, SpawnTube.Constructor(Vector3(4756.636f, 4859.724f, 96.68419f), Vector3(0, 0, 169)), owning_building_guid = 4) - LocalObject(1872, SpawnTube.Constructor(Vector3(4758.026f, 4852.57f, 96.68419f), Vector3(0, 0, 169)), owning_building_guid = 4) - LocalObject(1333, ProximityTerminal.Constructor(Vector3(4730.784f, 4844.872f, 89.18419f), medical_terminal), owning_building_guid = 4) - LocalObject(1334, ProximityTerminal.Constructor(Vector3(4759.642f, 4856.213f, 109.1842f), medical_terminal), owning_building_guid = 4) - LocalObject(1557, ProximityTerminal.Constructor(Vector3(4685.748f, 4862.047f, 112.4892f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1558, Terminal.Constructor(Vector3(4685.748f, 4862.047f, 112.4892f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1560, ProximityTerminal.Constructor(Vector3(4715.831f, 4922.562f, 112.5122f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1561, Terminal.Constructor(Vector3(4715.831f, 4922.562f, 112.5122f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1566, ProximityTerminal.Constructor(Vector3(4722.846f, 4790.568f, 114.6502f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1567, Terminal.Constructor(Vector3(4722.846f, 4790.568f, 114.6502f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1569, ProximityTerminal.Constructor(Vector3(4797.969f, 4843.516f, 112.4892f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1570, Terminal.Constructor(Vector3(4797.969f, 4843.516f, 112.4892f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1784, ProximityTerminal.Constructor(Vector3(4676.896f, 4839.722f, 103.3842f), repair_silo), owning_building_guid = 4) - LocalObject(1785, Terminal.Constructor(Vector3(4676.896f, 4839.722f, 103.3842f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1792, ProximityTerminal.Constructor(Vector3(4806.848f, 4865.175f, 103.3842f), repair_silo), owning_building_guid = 4) - LocalObject(1793, Terminal.Constructor(Vector3(4806.848f, 4865.175f, 103.3842f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1273, FacilityTurret.Constructor(Vector3(4648.024f, 4933.171f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1870, + SpawnTube.Constructor(Vector3(4755.245f, 4866.881f, 96.68419f), Vector3(0, 0, 169)), + owning_building_guid = 4 + ) + LocalObject( + 1871, + SpawnTube.Constructor(Vector3(4756.636f, 4859.724f, 96.68419f), Vector3(0, 0, 169)), + owning_building_guid = 4 + ) + LocalObject( + 1872, + SpawnTube.Constructor(Vector3(4758.026f, 4852.57f, 96.68419f), Vector3(0, 0, 169)), + owning_building_guid = 4 + ) + LocalObject( + 1333, + ProximityTerminal.Constructor(Vector3(4730.784f, 4844.872f, 89.18419f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1334, + ProximityTerminal.Constructor(Vector3(4759.642f, 4856.213f, 109.1842f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1557, + ProximityTerminal.Constructor(Vector3(4685.748f, 4862.047f, 112.4892f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1558, + Terminal.Constructor(Vector3(4685.748f, 4862.047f, 112.4892f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1560, + ProximityTerminal.Constructor(Vector3(4715.831f, 4922.562f, 112.5122f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1561, + Terminal.Constructor(Vector3(4715.831f, 4922.562f, 112.5122f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1566, + ProximityTerminal.Constructor(Vector3(4722.846f, 4790.568f, 114.6502f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1567, + Terminal.Constructor(Vector3(4722.846f, 4790.568f, 114.6502f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1569, + ProximityTerminal.Constructor(Vector3(4797.969f, 4843.516f, 112.4892f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1570, + Terminal.Constructor(Vector3(4797.969f, 4843.516f, 112.4892f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1784, + ProximityTerminal.Constructor(Vector3(4676.896f, 4839.722f, 103.3842f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 1785, + Terminal.Constructor(Vector3(4676.896f, 4839.722f, 103.3842f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1792, + ProximityTerminal.Constructor(Vector3(4806.848f, 4865.175f, 103.3842f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 1793, + Terminal.Constructor(Vector3(4806.848f, 4865.175f, 103.3842f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1273, + FacilityTurret.Constructor(Vector3(4648.024f, 4933.171f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1273, 5006) - LocalObject(1274, FacilityTurret.Constructor(Vector3(4672.226f, 4796.992f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1274, + FacilityTurret.Constructor(Vector3(4672.226f, 4796.992f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1274, 5007) - LocalObject(1275, FacilityTurret.Constructor(Vector3(4686.497f, 4735.198f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1275, + FacilityTurret.Constructor(Vector3(4686.497f, 4735.198f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1275, 5008) - LocalObject(1279, FacilityTurret.Constructor(Vector3(4739.719f, 4953.254f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1279, + FacilityTurret.Constructor(Vector3(4739.719f, 4953.254f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1279, 5009) - LocalObject(1282, FacilityTurret.Constructor(Vector3(4798.637f, 4962.437f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1282, + FacilityTurret.Constructor(Vector3(4798.637f, 4962.437f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1282, 5010) - LocalObject(1283, FacilityTurret.Constructor(Vector3(4837.147f, 4764.471f, 112.6922f), manned_turret), owning_building_guid = 4) + LocalObject( + 1283, + FacilityTurret.Constructor(Vector3(4837.147f, 4764.471f, 112.6922f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1283, 5011) - LocalObject(1635, Painbox.Constructor(Vector3(4795.436f, 4870.176f, 94.05519f), painbox), owning_building_guid = 4) - LocalObject(1645, Painbox.Constructor(Vector3(4749.898f, 4855.753f, 101.6326f), painbox_continuous), owning_building_guid = 4) - LocalObject(1655, Painbox.Constructor(Vector3(4782.056f, 4865.409f, 90.64319f), painbox_door_radius), owning_building_guid = 4) - LocalObject(1677, Painbox.Constructor(Vector3(4737.315f, 4847.835f, 99.86279f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(1678, Painbox.Constructor(Vector3(4746.523f, 4871.04f, 97.88419f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(1679, Painbox.Constructor(Vector3(4751.479f, 4845.162f, 97.94869f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 1635, + Painbox.Constructor(Vector3(4795.436f, 4870.176f, 94.05519f), painbox), + owning_building_guid = 4 + ) + LocalObject( + 1645, + Painbox.Constructor(Vector3(4749.898f, 4855.753f, 101.6326f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1655, + Painbox.Constructor(Vector3(4782.056f, 4865.409f, 90.64319f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 1677, + Painbox.Constructor(Vector3(4737.315f, 4847.835f, 99.86279f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1678, + Painbox.Constructor(Vector3(4746.523f, 4871.04f, 97.88419f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 1679, + Painbox.Constructor(Vector3(4751.479f, 4845.162f, 97.94869f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(226, Generator.Constructor(Vector3(4799.619f, 4868.078f, 87.89019f)), owning_building_guid = 4) - LocalObject(216, Terminal.Constructor(Vector3(4791.587f, 4866.469f, 89.18419f), gen_control), owning_building_guid = 4) + LocalObject( + 216, + Terminal.Constructor(Vector3(4791.587f, 4866.469f, 89.18419f), gen_control), + owning_building_guid = 4 + ) } Building33() def Building33(): Unit = { // Name: bunkerg1 Type: bunker_gauntlet GUID: 7, MapID: 33 - LocalBuilding("bunkerg1", 7, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2700f, 2850f, 53.31126f), Vector3(0f, 0f, 138f), bunker_gauntlet))) + LocalBuilding( + "bunkerg1", + 7, + 33, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2700f, 2850f, 53.31126f), + Vector3(0f, 0f, 138f), + bunker_gauntlet + ) + ) + ) LocalObject(244, Door.Constructor(Vector3(2682.751f, 2868.089f, 54.83226f)), owning_building_guid = 7) LocalObject(248, Door.Constructor(Vector3(2719.782f, 2834.761f, 54.83226f)), owning_building_guid = 7) } @@ -287,7 +805,19 @@ object Map05 { // Forseral Building34() def Building34(): Unit = { // Name: bunkerg2 Type: bunker_gauntlet GUID: 8, MapID: 34 - LocalBuilding("bunkerg2", 8, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4314f, 4146f, 75.96667f), Vector3(0f, 0f, 132f), bunker_gauntlet))) + LocalBuilding( + "bunkerg2", + 8, + 34, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4314f, 4146f, 75.96667f), + Vector3(0f, 0f, 132f), + bunker_gauntlet + ) + ) + ) LocalObject(335, Door.Constructor(Vector3(4298.736f, 4165.793f, 77.48768f)), owning_building_guid = 8) LocalObject(339, Door.Constructor(Vector3(4332.081f, 4128.776f, 77.48768f)), owning_building_guid = 8) } @@ -295,7 +825,19 @@ object Map05 { // Forseral Building35() def Building35(): Unit = { // Name: bunkerg3 Type: bunker_gauntlet GUID: 9, MapID: 35 - LocalBuilding("bunkerg3", 9, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5806f, 4440f, 54.7853f), Vector3(0f, 0f, 91f), bunker_gauntlet))) + LocalBuilding( + "bunkerg3", + 9, + 35, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(5806f, 4440f, 54.7853f), + Vector3(0f, 0f, 91f), + bunker_gauntlet + ) + ) + ) LocalObject(415, Door.Constructor(Vector3(5807.466f, 4464.952f, 56.3063f)), owning_building_guid = 9) LocalObject(416, Door.Constructor(Vector3(5808.346f, 4415.139f, 56.3063f)), owning_building_guid = 9) } @@ -303,57 +845,122 @@ object Map05 { // Forseral Building29() def Building29(): Unit = { // Name: bunker2 Type: bunker_lg GUID: 10, MapID: 29 - LocalBuilding("bunker2", 10, 29, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4302f, 4344f, 75.92862f), Vector3(0f, 0f, 262f), bunker_lg))) + LocalBuilding( + "bunker2", + 10, + 29, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4302f, 4344f, 75.92862f), Vector3(0f, 0f, 262f), bunker_lg) + ) + ) LocalObject(337, Door.Constructor(Vector3(4304.169f, 4341.063f, 77.44962f)), owning_building_guid = 10) } Building30() def Building30(): Unit = { // Name: bunker3 Type: bunker_lg GUID: 11, MapID: 30 - LocalBuilding("bunker3", 11, 30, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5616f, 3768f, 60.98056f), Vector3(0f, 0f, 104f), bunker_lg))) + LocalBuilding( + "bunker3", + 11, + 30, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5616f, 3768f, 60.98056f), Vector3(0f, 0f, 104f), bunker_lg) + ) + ) LocalObject(414, Door.Constructor(Vector3(5612.889f, 3769.91f, 62.50156f)), owning_building_guid = 11) } Building31() def Building31(): Unit = { // Name: bunker4 Type: bunker_sm GUID: 12, MapID: 31 - LocalBuilding("bunker4", 12, 31, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3206f, 2552f, 56.18124f), Vector3(0f, 0f, 316f), bunker_sm))) + LocalBuilding( + "bunker4", + 12, + 31, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3206f, 2552f, 56.18124f), Vector3(0f, 0f, 316f), bunker_sm) + ) + ) LocalObject(259, Door.Constructor(Vector3(3206.843f, 2551.109f, 57.70224f)), owning_building_guid = 12) } Building32() def Building32(): Unit = { // Name: bunker5 Type: bunker_sm GUID: 13, MapID: 32 - LocalBuilding("bunker5", 13, 32, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3250f, 2604f, 56.18457f), Vector3(0f, 0f, 322f), bunker_sm))) + LocalBuilding( + "bunker5", + 13, + 32, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3250f, 2604f, 56.18457f), Vector3(0f, 0f, 322f), bunker_sm) + ) + ) LocalObject(260, Door.Constructor(Vector3(3250.931f, 2603.202f, 57.70557f)), owning_building_guid = 13) } Building40() def Building40(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 40 - LocalBuilding("bunker_sm", 14, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3650f, 5340f, 50.30309f), Vector3(0f, 0f, 308f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3650f, 5340f, 50.30309f), Vector3(0f, 0f, 308f), bunker_sm) + ) + ) LocalObject(309, Door.Constructor(Vector3(3650.711f, 5339.001f, 51.82409f)), owning_building_guid = 14) } Building28() def Building28(): Unit = { // Name: bunker1 Type: bunker_sm GUID: 15, MapID: 28 - LocalBuilding("bunker1", 15, 28, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3712f, 4644f, 58.56919f), Vector3(0f, 0f, 137f), bunker_sm))) + LocalBuilding( + "bunker1", + 15, + 28, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3712f, 4644f, 58.56919f), Vector3(0f, 0f, 137f), bunker_sm) + ) + ) LocalObject(324, Door.Constructor(Vector3(3711.142f, 4644.875f, 60.09019f)), owning_building_guid = 15) } Building41() def Building41(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 41 - LocalBuilding("bunker_sm", 16, 41, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4888f, 2866f, 61.5153f), Vector3(0f, 0f, 222f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 41, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4888f, 2866f, 61.5153f), Vector3(0f, 0f, 222f), bunker_sm) + ) + ) LocalObject(396, Door.Constructor(Vector3(4887.053f, 2865.221f, 63.0363f)), owning_building_guid = 16) } Building36() def Building36(): Unit = { // Name: Caer Type: comm_station GUID: 17, MapID: 36 - LocalBuilding("Caer", 17, 36, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4658f, 2644f, 55.99231f), Vector3(0f, 0f, 255f), comm_station))) - LocalObject(161, CaptureTerminal.Constructor(Vector3(4720.708f, 2581.553f, 38.69231f), capture_terminal), owning_building_guid = 17) + LocalBuilding( + "Caer", + 17, + 36, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4658f, 2644f, 55.99231f), + Vector3(0f, 0f, 255f), + comm_station + ) + ) + ) + LocalObject( + 161, + CaptureTerminal.Constructor(Vector3(4720.708f, 2581.553f, 38.69231f), capture_terminal), + owning_building_guid = 17 + ) LocalObject(356, Door.Constructor(Vector3(4598.849f, 2685.214f, 57.74331f)), owning_building_guid = 17) LocalObject(357, Door.Constructor(Vector3(4603.557f, 2702.787f, 65.70731f)), owning_building_guid = 17) LocalObject(358, Door.Constructor(Vector3(4631.46f, 2713.025f, 57.74331f)), owning_building_guid = 17) @@ -395,18 +1002,78 @@ object Map05 { // Forseral LocalObject(2014, Door.Constructor(Vector3(4661.773f, 2605.022f, 48.04631f)), owning_building_guid = 17) LocalObject(2015, Door.Constructor(Vector3(4668.818f, 2603.135f, 48.04631f)), owning_building_guid = 17) LocalObject(2016, Door.Constructor(Vector3(4675.858f, 2601.248f, 48.04631f)), owning_building_guid = 17) - LocalObject(726, IFFLock.Constructor(Vector3(4651.866f, 2624.469f, 57.64431f), Vector3(0, 0, 195)), owning_building_guid = 17, door_guid = 688) - LocalObject(828, IFFLock.Constructor(Vector3(4650.176f, 2651.462f, 70.07331f), Vector3(0, 0, 15)), owning_building_guid = 17, door_guid = 362) - LocalObject(829, IFFLock.Constructor(Vector3(4653.15f, 2598.12f, 47.52831f), Vector3(0, 0, 285)), owning_building_guid = 17, door_guid = 571) - LocalObject(830, IFFLock.Constructor(Vector3(4653.393f, 2663.821f, 62.65331f), Vector3(0, 0, 285)), owning_building_guid = 17, door_guid = 363) - LocalObject(831, IFFLock.Constructor(Vector3(4653.822f, 2588.117f, 40.02831f), Vector3(0, 0, 15)), owning_building_guid = 17, door_guid = 572) - LocalObject(832, IFFLock.Constructor(Vector3(4664.772f, 2665.006f, 62.65331f), Vector3(0, 0, 105)), owning_building_guid = 17, door_guid = 364) - LocalObject(833, IFFLock.Constructor(Vector3(4673.483f, 2632.411f, 62.65331f), Vector3(0, 0, 15)), owning_building_guid = 17, door_guid = 367) - LocalObject(834, IFFLock.Constructor(Vector3(4678.711f, 2594.526f, 47.52831f), Vector3(0, 0, 105)), owning_building_guid = 17, door_guid = 583) - LocalObject(835, IFFLock.Constructor(Vector3(4685.044f, 2655.832f, 40.02831f), Vector3(0, 0, 285)), owning_building_guid = 17, door_guid = 585) - LocalObject(836, IFFLock.Constructor(Vector3(4712.022f, 2588.955f, 40.02831f), Vector3(0, 0, 15)), owning_building_guid = 17, door_guid = 594) - LocalObject(837, IFFLock.Constructor(Vector3(4712.568f, 2578.844f, 40.02831f), Vector3(0, 0, 195)), owning_building_guid = 17, door_guid = 592) - LocalObject(838, IFFLock.Constructor(Vector3(4724.891f, 2592.143f, 57.64231f), Vector3(0, 0, 195)), owning_building_guid = 17, door_guid = 371) + LocalObject( + 726, + IFFLock.Constructor(Vector3(4651.866f, 2624.469f, 57.64431f), Vector3(0, 0, 195)), + owning_building_guid = 17, + door_guid = 688 + ) + LocalObject( + 828, + IFFLock.Constructor(Vector3(4650.176f, 2651.462f, 70.07331f), Vector3(0, 0, 15)), + owning_building_guid = 17, + door_guid = 362 + ) + LocalObject( + 829, + IFFLock.Constructor(Vector3(4653.15f, 2598.12f, 47.52831f), Vector3(0, 0, 285)), + owning_building_guid = 17, + door_guid = 571 + ) + LocalObject( + 830, + IFFLock.Constructor(Vector3(4653.393f, 2663.821f, 62.65331f), Vector3(0, 0, 285)), + owning_building_guid = 17, + door_guid = 363 + ) + LocalObject( + 831, + IFFLock.Constructor(Vector3(4653.822f, 2588.117f, 40.02831f), Vector3(0, 0, 15)), + owning_building_guid = 17, + door_guid = 572 + ) + LocalObject( + 832, + IFFLock.Constructor(Vector3(4664.772f, 2665.006f, 62.65331f), Vector3(0, 0, 105)), + owning_building_guid = 17, + door_guid = 364 + ) + LocalObject( + 833, + IFFLock.Constructor(Vector3(4673.483f, 2632.411f, 62.65331f), Vector3(0, 0, 15)), + owning_building_guid = 17, + door_guid = 367 + ) + LocalObject( + 834, + IFFLock.Constructor(Vector3(4678.711f, 2594.526f, 47.52831f), Vector3(0, 0, 105)), + owning_building_guid = 17, + door_guid = 583 + ) + LocalObject( + 835, + IFFLock.Constructor(Vector3(4685.044f, 2655.832f, 40.02831f), Vector3(0, 0, 285)), + owning_building_guid = 17, + door_guid = 585 + ) + LocalObject( + 836, + IFFLock.Constructor(Vector3(4712.022f, 2588.955f, 40.02831f), Vector3(0, 0, 15)), + owning_building_guid = 17, + door_guid = 594 + ) + LocalObject( + 837, + IFFLock.Constructor(Vector3(4712.568f, 2578.844f, 40.02831f), Vector3(0, 0, 195)), + owning_building_guid = 17, + door_guid = 592 + ) + LocalObject( + 838, + IFFLock.Constructor(Vector3(4724.891f, 2592.143f, 57.64231f), Vector3(0, 0, 195)), + owning_building_guid = 17, + door_guid = 371 + ) LocalObject(1067, Locker.Constructor(Vector3(4654.59f, 2592.091f, 46.45331f)), owning_building_guid = 17) LocalObject(1068, Locker.Constructor(Vector3(4654.887f, 2593.201f, 46.45331f)), owning_building_guid = 17) LocalObject(1069, Locker.Constructor(Vector3(4655.184f, 2594.309f, 46.45331f)), owning_building_guid = 17) @@ -419,60 +1086,229 @@ object Map05 { // Forseral LocalObject(1076, Locker.Constructor(Vector3(4671.387f, 2577.412f, 38.69231f)), owning_building_guid = 17) LocalObject(1077, Locker.Constructor(Vector3(4671.733f, 2578.703f, 38.69231f)), owning_building_guid = 17) LocalObject(1078, Locker.Constructor(Vector3(4672.075f, 2579.982f, 38.69231f)), owning_building_guid = 17) - LocalObject(1396, Terminal.Constructor(Vector3(4638.184f, 2659.27f, 62.55231f), order_terminal), owning_building_guid = 17) - LocalObject(1397, Terminal.Constructor(Vector3(4648.153f, 2644.225f, 69.94731f), order_terminal), owning_building_guid = 17) - LocalObject(1398, Terminal.Constructor(Vector3(4650.782f, 2645.856f, 69.94731f), order_terminal), owning_building_guid = 17) - LocalObject(1399, Terminal.Constructor(Vector3(4652.398f, 2643.087f, 69.94731f), order_terminal), owning_building_guid = 17) - LocalObject(1400, Terminal.Constructor(Vector3(4659.773f, 2591.084f, 47.78231f), order_terminal), owning_building_guid = 17) - LocalObject(1401, Terminal.Constructor(Vector3(4663.376f, 2590.118f, 47.78231f), order_terminal), owning_building_guid = 17) - LocalObject(1402, Terminal.Constructor(Vector3(4667.037f, 2589.138f, 47.78231f), order_terminal), owning_building_guid = 17) - LocalObject(1947, Terminal.Constructor(Vector3(4635.173f, 2651.659f, 62.80931f), spawn_terminal), owning_building_guid = 17) - LocalObject(1948, Terminal.Constructor(Vector3(4659.291f, 2605.379f, 48.32631f), spawn_terminal), owning_building_guid = 17) - LocalObject(1949, Terminal.Constructor(Vector3(4666.335f, 2603.495f, 48.32631f), spawn_terminal), owning_building_guid = 17) - LocalObject(1950, Terminal.Constructor(Vector3(4670.454f, 2657.286f, 40.24931f), spawn_terminal), owning_building_guid = 17) - LocalObject(1951, Terminal.Constructor(Vector3(4673.375f, 2601.606f, 48.32631f), spawn_terminal), owning_building_guid = 17) - LocalObject(1952, Terminal.Constructor(Vector3(4696.734f, 2634.233f, 50.24931f), spawn_terminal), owning_building_guid = 17) - LocalObject(2108, Terminal.Constructor(Vector3(4697.331f, 2579.153f, 58.87931f), vehicle_terminal_combined), owning_building_guid = 17) - LocalObject(1316, VehicleSpawnPad.Constructor(Vector3(4700.708f, 2592.354f, 54.72131f), mb_pad_creation, Vector3(0, 0, 15)), owning_building_guid = 17, terminal_guid = 2108) + LocalObject( + 1396, + Terminal.Constructor(Vector3(4638.184f, 2659.27f, 62.55231f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1397, + Terminal.Constructor(Vector3(4648.153f, 2644.225f, 69.94731f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1398, + Terminal.Constructor(Vector3(4650.782f, 2645.856f, 69.94731f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1399, + Terminal.Constructor(Vector3(4652.398f, 2643.087f, 69.94731f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1400, + Terminal.Constructor(Vector3(4659.773f, 2591.084f, 47.78231f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1401, + Terminal.Constructor(Vector3(4663.376f, 2590.118f, 47.78231f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1402, + Terminal.Constructor(Vector3(4667.037f, 2589.138f, 47.78231f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1947, + Terminal.Constructor(Vector3(4635.173f, 2651.659f, 62.80931f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1948, + Terminal.Constructor(Vector3(4659.291f, 2605.379f, 48.32631f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(4666.335f, 2603.495f, 48.32631f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1950, + Terminal.Constructor(Vector3(4670.454f, 2657.286f, 40.24931f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1951, + Terminal.Constructor(Vector3(4673.375f, 2601.606f, 48.32631f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(4696.734f, 2634.233f, 50.24931f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2108, + Terminal.Constructor(Vector3(4697.331f, 2579.153f, 58.87931f), vehicle_terminal_combined), + owning_building_guid = 17 + ) + LocalObject( + 1316, + VehicleSpawnPad.Constructor(Vector3(4700.708f, 2592.354f, 54.72131f), mb_pad_creation, Vector3(0, 0, 15)), + owning_building_guid = 17, + terminal_guid = 2108 + ) LocalObject(1825, ResourceSilo.Constructor(Vector3(4605.697f, 2715.752f, 63.20931f)), owning_building_guid = 17) - LocalObject(1865, SpawnTube.Constructor(Vector3(4660.873f, 2605.719f, 46.19231f), Vector3(0, 0, 105)), owning_building_guid = 17) - LocalObject(1866, SpawnTube.Constructor(Vector3(4667.916f, 2603.832f, 46.19231f), Vector3(0, 0, 105)), owning_building_guid = 17) - LocalObject(1867, SpawnTube.Constructor(Vector3(4674.955f, 2601.946f, 46.19231f), Vector3(0, 0, 105)), owning_building_guid = 17) - LocalObject(1331, ProximityTerminal.Constructor(Vector3(4629.787f, 2650.665f, 56.19231f), medical_terminal), owning_building_guid = 17) - LocalObject(1332, ProximityTerminal.Constructor(Vector3(4669.931f, 2574.086f, 38.69231f), medical_terminal), owning_building_guid = 17) - LocalObject(1563, ProximityTerminal.Constructor(Vector3(4716.182f, 2647.921f, 64.43331f), pad_landing_frame), owning_building_guid = 17) - LocalObject(1564, Terminal.Constructor(Vector3(4716.182f, 2647.921f, 64.43331f), air_rearm_terminal), owning_building_guid = 17) - LocalObject(1780, ProximityTerminal.Constructor(Vector3(4618.545f, 2590.757f, 55.74231f), repair_silo), owning_building_guid = 17) - LocalObject(1781, Terminal.Constructor(Vector3(4618.545f, 2590.757f, 55.74231f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(1788, ProximityTerminal.Constructor(Vector3(4696.201f, 2697.007f, 55.74231f), repair_silo), owning_building_guid = 17) - LocalObject(1789, Terminal.Constructor(Vector3(4696.201f, 2697.007f, 55.74231f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(1270, FacilityTurret.Constructor(Vector3(4571.18f, 2635.309f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1865, + SpawnTube.Constructor(Vector3(4660.873f, 2605.719f, 46.19231f), Vector3(0, 0, 105)), + owning_building_guid = 17 + ) + LocalObject( + 1866, + SpawnTube.Constructor(Vector3(4667.916f, 2603.832f, 46.19231f), Vector3(0, 0, 105)), + owning_building_guid = 17 + ) + LocalObject( + 1867, + SpawnTube.Constructor(Vector3(4674.955f, 2601.946f, 46.19231f), Vector3(0, 0, 105)), + owning_building_guid = 17 + ) + LocalObject( + 1331, + ProximityTerminal.Constructor(Vector3(4629.787f, 2650.665f, 56.19231f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1332, + ProximityTerminal.Constructor(Vector3(4669.931f, 2574.086f, 38.69231f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1563, + ProximityTerminal.Constructor(Vector3(4716.182f, 2647.921f, 64.43331f), pad_landing_frame), + owning_building_guid = 17 + ) + LocalObject( + 1564, + Terminal.Constructor(Vector3(4716.182f, 2647.921f, 64.43331f), air_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1780, + ProximityTerminal.Constructor(Vector3(4618.545f, 2590.757f, 55.74231f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 1781, + Terminal.Constructor(Vector3(4618.545f, 2590.757f, 55.74231f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1788, + ProximityTerminal.Constructor(Vector3(4696.201f, 2697.007f, 55.74231f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 1789, + Terminal.Constructor(Vector3(4696.201f, 2697.007f, 55.74231f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1270, + FacilityTurret.Constructor(Vector3(4571.18f, 2635.309f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1270, 5012) - LocalObject(1271, FacilityTurret.Constructor(Vector3(4599.056f, 2734.796f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1271, + FacilityTurret.Constructor(Vector3(4599.056f, 2734.796f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1271, 5013) - LocalObject(1272, FacilityTurret.Constructor(Vector3(4601.658f, 2582.476f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1272, + FacilityTurret.Constructor(Vector3(4601.658f, 2582.476f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1272, 5014) - LocalObject(1277, FacilityTurret.Constructor(Vector3(4714.378f, 2705.065f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1277, + FacilityTurret.Constructor(Vector3(4714.378f, 2705.065f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1277, 5015) - LocalObject(1278, FacilityTurret.Constructor(Vector3(4716.842f, 2552.823f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1278, + FacilityTurret.Constructor(Vector3(4716.842f, 2552.823f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1278, 5016) - LocalObject(1280, FacilityTurret.Constructor(Vector3(4744.846f, 2652.255f, 64.70031f), manned_turret), owning_building_guid = 17) + LocalObject( + 1280, + FacilityTurret.Constructor(Vector3(4744.846f, 2652.255f, 64.70031f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1280, 5017) LocalObject(1634, Painbox.Constructor(Vector3(4698f, 2653.844f, 43.59431f), painbox), owning_building_guid = 17) - LocalObject(1644, Painbox.Constructor(Vector3(4671.317f, 2592.586f, 50.63711f), painbox_continuous), owning_building_guid = 17) - LocalObject(1654, Painbox.Constructor(Vector3(4683.47f, 2657.636f, 41.45101f), painbox_door_radius), owning_building_guid = 17) - LocalObject(1674, Painbox.Constructor(Vector3(4652.503f, 2600.01f, 48.01831f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1675, Painbox.Constructor(Vector3(4669.905f, 2580.914f, 49.01831f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1676, Painbox.Constructor(Vector3(4678.684f, 2592.067f, 47.80001f), painbox_door_radius_continuous), owning_building_guid = 17) + LocalObject( + 1644, + Painbox.Constructor(Vector3(4671.317f, 2592.586f, 50.63711f), painbox_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1654, + Painbox.Constructor(Vector3(4683.47f, 2657.636f, 41.45101f), painbox_door_radius), + owning_building_guid = 17 + ) + LocalObject( + 1674, + Painbox.Constructor(Vector3(4652.503f, 2600.01f, 48.01831f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1675, + Painbox.Constructor(Vector3(4669.905f, 2580.914f, 49.01831f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1676, + Painbox.Constructor(Vector3(4678.684f, 2592.067f, 47.80001f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) LocalObject(225, Generator.Constructor(Vector3(4701.39f, 2653.105f, 37.39831f)), owning_building_guid = 17) - LocalObject(215, Terminal.Constructor(Vector3(4693.465f, 2655.18f, 38.69231f), gen_control), owning_building_guid = 17) + LocalObject( + 215, + Terminal.Constructor(Vector3(4693.465f, 2655.18f, 38.69231f), gen_control), + owning_building_guid = 17 + ) } Building9() def Building9(): Unit = { // Name: Dagda Type: comm_station GUID: 20, MapID: 9 - LocalBuilding("Dagda", 20, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5912f, 4436f, 54.7319f), Vector3(0f, 0f, 219f), comm_station))) - LocalObject(164, CaptureTerminal.Constructor(Vector3(5926.027f, 4348.621f, 37.4319f), capture_terminal), owning_building_guid = 20) + LocalBuilding( + "Dagda", + 20, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5912f, 4436f, 54.7319f), + Vector3(0f, 0f, 219f), + comm_station + ) + ) + ) + LocalObject( + 164, + CaptureTerminal.Constructor(Vector3(5926.027f, 4348.621f, 37.4319f), capture_terminal), + owning_building_guid = 20 + ) LocalObject(417, Door.Constructor(Vector3(5858.486f, 4406.424f, 64.4469f)), owning_building_guid = 20) LocalObject(418, Door.Constructor(Vector3(5869.935f, 4392.286f, 56.48289f)), owning_building_guid = 20) LocalObject(419, Door.Constructor(Vector3(5888.37f, 4504.111f, 56.48289f)), owning_building_guid = 20) @@ -514,18 +1350,78 @@ object Map05 { // Forseral LocalObject(2029, Door.Constructor(Vector3(5892.142f, 4402.249f, 46.7859f)), owning_building_guid = 20) LocalObject(2030, Door.Constructor(Vector3(5896.732f, 4396.581f, 46.7859f)), owning_building_guid = 20) LocalObject(2031, Door.Constructor(Vector3(5901.319f, 4390.916f, 46.7859f)), owning_building_guid = 20) - LocalObject(729, IFFLock.Constructor(Vector3(5895.558f, 4423.805f, 56.3839f), Vector3(0, 0, 231)), owning_building_guid = 20, door_guid = 691) - LocalObject(872, IFFLock.Constructor(Vector3(5875.773f, 4393.246f, 38.76789f), Vector3(0, 0, 51)), owning_building_guid = 20, door_guid = 636) - LocalObject(873, IFFLock.Constructor(Vector3(5881.109f, 4401.733f, 46.26789f), Vector3(0, 0, 321)), owning_building_guid = 20, door_guid = 637) - LocalObject(874, IFFLock.Constructor(Vector3(5899.675f, 4383.801f, 46.26789f), Vector3(0, 0, 141)), owning_building_guid = 20, door_guid = 639) - LocalObject(878, IFFLock.Constructor(Vector3(5910.056f, 4446.636f, 68.8129f), Vector3(0, 0, 51)), owning_building_guid = 20, door_guid = 427) - LocalObject(882, IFFLock.Constructor(Vector3(5917.714f, 4417.523f, 61.39289f), Vector3(0, 0, 51)), owning_building_guid = 20, door_guid = 428) - LocalObject(883, IFFLock.Constructor(Vector3(5917.848f, 4351.213f, 38.76789f), Vector3(0, 0, 231)), owning_building_guid = 20, door_guid = 646) - LocalObject(884, IFFLock.Constructor(Vector3(5919.923f, 4454.743f, 61.39289f), Vector3(0, 0, 321)), owning_building_guid = 20, door_guid = 429) - LocalObject(885, IFFLock.Constructor(Vector3(5923.351f, 4359.714f, 38.76789f), Vector3(0, 0, 51)), owning_building_guid = 20, door_guid = 650) - LocalObject(886, IFFLock.Constructor(Vector3(5929.826f, 4449.013f, 61.39289f), Vector3(0, 0, 141)), owning_building_guid = 20, door_guid = 430) - LocalObject(887, IFFLock.Constructor(Vector3(5935.634f, 4354.729f, 56.3819f), Vector3(0, 0, 231)), owning_building_guid = 20, door_guid = 432) - LocalObject(888, IFFLock.Constructor(Vector3(5940.833f, 4429.676f, 38.76789f), Vector3(0, 0, 321)), owning_building_guid = 20, door_guid = 656) + LocalObject( + 729, + IFFLock.Constructor(Vector3(5895.558f, 4423.805f, 56.3839f), Vector3(0, 0, 231)), + owning_building_guid = 20, + door_guid = 691 + ) + LocalObject( + 872, + IFFLock.Constructor(Vector3(5875.773f, 4393.246f, 38.76789f), Vector3(0, 0, 51)), + owning_building_guid = 20, + door_guid = 636 + ) + LocalObject( + 873, + IFFLock.Constructor(Vector3(5881.109f, 4401.733f, 46.26789f), Vector3(0, 0, 321)), + owning_building_guid = 20, + door_guid = 637 + ) + LocalObject( + 874, + IFFLock.Constructor(Vector3(5899.675f, 4383.801f, 46.26789f), Vector3(0, 0, 141)), + owning_building_guid = 20, + door_guid = 639 + ) + LocalObject( + 878, + IFFLock.Constructor(Vector3(5910.056f, 4446.636f, 68.8129f), Vector3(0, 0, 51)), + owning_building_guid = 20, + door_guid = 427 + ) + LocalObject( + 882, + IFFLock.Constructor(Vector3(5917.714f, 4417.523f, 61.39289f), Vector3(0, 0, 51)), + owning_building_guid = 20, + door_guid = 428 + ) + LocalObject( + 883, + IFFLock.Constructor(Vector3(5917.848f, 4351.213f, 38.76789f), Vector3(0, 0, 231)), + owning_building_guid = 20, + door_guid = 646 + ) + LocalObject( + 884, + IFFLock.Constructor(Vector3(5919.923f, 4454.743f, 61.39289f), Vector3(0, 0, 321)), + owning_building_guid = 20, + door_guid = 429 + ) + LocalObject( + 885, + IFFLock.Constructor(Vector3(5923.351f, 4359.714f, 38.76789f), Vector3(0, 0, 51)), + owning_building_guid = 20, + door_guid = 650 + ) + LocalObject( + 886, + IFFLock.Constructor(Vector3(5929.826f, 4449.013f, 61.39289f), Vector3(0, 0, 141)), + owning_building_guid = 20, + door_guid = 430 + ) + LocalObject( + 887, + IFFLock.Constructor(Vector3(5935.634f, 4354.729f, 56.3819f), Vector3(0, 0, 231)), + owning_building_guid = 20, + door_guid = 432 + ) + LocalObject( + 888, + IFFLock.Constructor(Vector3(5940.833f, 4429.676f, 38.76789f), Vector3(0, 0, 321)), + owning_building_guid = 20, + door_guid = 656 + ) LocalObject(1127, Locker.Constructor(Vector3(5876.018f, 4368.047f, 37.4319f)), owning_building_guid = 20) LocalObject(1128, Locker.Constructor(Vector3(5877.057f, 4368.888f, 37.4319f)), owning_building_guid = 20) LocalObject(1129, Locker.Constructor(Vector3(5878.095f, 4369.729f, 37.4319f)), owning_building_guid = 20) @@ -538,60 +1434,233 @@ object Map05 { // Forseral LocalObject(1136, Locker.Constructor(Vector3(5883.691f, 4374.261f, 37.4319f)), owning_building_guid = 20) LocalObject(1137, Locker.Constructor(Vector3(5884.729f, 4375.102f, 37.4319f)), owning_building_guid = 20) LocalObject(1138, Locker.Constructor(Vector3(5885.758f, 4375.935f, 37.4319f)), owning_building_guid = 20) - LocalObject(1422, Terminal.Constructor(Vector3(5882.331f, 4392.148f, 46.5219f), order_terminal), owning_building_guid = 20) - LocalObject(1423, Terminal.Constructor(Vector3(5884.679f, 4389.249f, 46.5219f), order_terminal), owning_building_guid = 20) - LocalObject(1424, Terminal.Constructor(Vector3(5887.063f, 4386.304f, 46.5219f), order_terminal), owning_building_guid = 20) - LocalObject(1425, Terminal.Constructor(Vector3(5904.166f, 4441.97f, 68.6869f), order_terminal), owning_building_guid = 20) - LocalObject(1426, Terminal.Constructor(Vector3(5904.944f, 4460.001f, 61.2919f), order_terminal), owning_building_guid = 20) - LocalObject(1427, Terminal.Constructor(Vector3(5906.931f, 4438.554f, 68.6869f), order_terminal), owning_building_guid = 20) - LocalObject(1428, Terminal.Constructor(Vector3(5907.251f, 4441.745f, 68.6869f), order_terminal), owning_building_guid = 20) - LocalObject(1966, Terminal.Constructor(Vector3(5890.344f, 4403.996f, 47.0659f), spawn_terminal), owning_building_guid = 20) - LocalObject(1967, Terminal.Constructor(Vector3(5894.936f, 4398.332f, 47.0659f), spawn_terminal), owning_building_guid = 20) - LocalObject(1968, Terminal.Constructor(Vector3(5898.035f, 4455.613f, 61.5489f), spawn_terminal), owning_building_guid = 20) - LocalObject(1969, Terminal.Constructor(Vector3(5899.52f, 4392.666f, 47.0659f), spawn_terminal), owning_building_guid = 20) - LocalObject(1970, Terminal.Constructor(Vector3(5929.885f, 4439.429f, 38.9889f), spawn_terminal), owning_building_guid = 20) - LocalObject(1971, Terminal.Constructor(Vector3(5937.596f, 4405.331f, 48.9889f), spawn_terminal), owning_building_guid = 20) - LocalObject(2111, Terminal.Constructor(Vector3(5905.703f, 4360.42f, 57.6189f), vehicle_terminal_combined), owning_building_guid = 20) - LocalObject(1321, VehicleSpawnPad.Constructor(Vector3(5916.194f, 4369.114f, 53.4609f), mb_pad_creation, Vector3(0, 0, 51)), owning_building_guid = 20, terminal_guid = 2111) + LocalObject( + 1422, + Terminal.Constructor(Vector3(5882.331f, 4392.148f, 46.5219f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1423, + Terminal.Constructor(Vector3(5884.679f, 4389.249f, 46.5219f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1424, + Terminal.Constructor(Vector3(5887.063f, 4386.304f, 46.5219f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1425, + Terminal.Constructor(Vector3(5904.166f, 4441.97f, 68.6869f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1426, + Terminal.Constructor(Vector3(5904.944f, 4460.001f, 61.2919f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1427, + Terminal.Constructor(Vector3(5906.931f, 4438.554f, 68.6869f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1428, + Terminal.Constructor(Vector3(5907.251f, 4441.745f, 68.6869f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1966, + Terminal.Constructor(Vector3(5890.344f, 4403.996f, 47.0659f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1967, + Terminal.Constructor(Vector3(5894.936f, 4398.332f, 47.0659f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1968, + Terminal.Constructor(Vector3(5898.035f, 4455.613f, 61.5489f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1969, + Terminal.Constructor(Vector3(5899.52f, 4392.666f, 47.0659f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1970, + Terminal.Constructor(Vector3(5929.885f, 4439.429f, 38.9889f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1971, + Terminal.Constructor(Vector3(5937.596f, 4405.331f, 48.9889f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2111, + Terminal.Constructor(Vector3(5905.703f, 4360.42f, 57.6189f), vehicle_terminal_combined), + owning_building_guid = 20 + ) + LocalObject( + 1321, + VehicleSpawnPad.Constructor(Vector3(5916.194f, 4369.114f, 53.4609f), mb_pad_creation, Vector3(0, 0, 51)), + owning_building_guid = 20, + terminal_guid = 2111 + ) LocalObject(1828, ResourceSilo.Constructor(Vector3(5911.86f, 4524.792f, 61.94889f)), owning_building_guid = 20) - LocalObject(1880, SpawnTube.Constructor(Vector3(5891.823f, 4403.341f, 44.9319f), Vector3(0, 0, 141)), owning_building_guid = 20) - LocalObject(1881, SpawnTube.Constructor(Vector3(5896.412f, 4397.675f, 44.9319f), Vector3(0, 0, 141)), owning_building_guid = 20) - LocalObject(1882, SpawnTube.Constructor(Vector3(5900.998f, 4392.011f, 44.9319f), Vector3(0, 0, 141)), owning_building_guid = 20) - LocalObject(1337, ProximityTerminal.Constructor(Vector3(5880.558f, 4372.425f, 37.4319f), medical_terminal), owning_building_guid = 20) - LocalObject(1338, ProximityTerminal.Constructor(Vector3(5893.093f, 4457.976f, 54.9319f), medical_terminal), owning_building_guid = 20) - LocalObject(1590, ProximityTerminal.Constructor(Vector3(5961.375f, 4404.973f, 63.1729f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1591, Terminal.Constructor(Vector3(5961.375f, 4404.973f, 63.1729f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(1804, ProximityTerminal.Constructor(Vector3(5848.785f, 4416.116f, 54.4819f), repair_silo), owning_building_guid = 20) - LocalObject(1805, Terminal.Constructor(Vector3(5848.785f, 4416.116f, 54.4819f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(1808, ProximityTerminal.Constructor(Vector3(5974.062f, 4456.43f, 54.4819f), repair_silo), owning_building_guid = 20) - LocalObject(1809, Terminal.Constructor(Vector3(5974.062f, 4456.43f, 54.4819f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(1292, FacilityTurret.Constructor(Vector3(5830.255f, 4419.343f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1880, + SpawnTube.Constructor(Vector3(5891.823f, 4403.341f, 44.9319f), Vector3(0, 0, 141)), + owning_building_guid = 20 + ) + LocalObject( + 1881, + SpawnTube.Constructor(Vector3(5896.412f, 4397.675f, 44.9319f), Vector3(0, 0, 141)), + owning_building_guid = 20 + ) + LocalObject( + 1882, + SpawnTube.Constructor(Vector3(5900.998f, 4392.011f, 44.9319f), Vector3(0, 0, 141)), + owning_building_guid = 20 + ) + LocalObject( + 1337, + ProximityTerminal.Constructor(Vector3(5880.558f, 4372.425f, 37.4319f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1338, + ProximityTerminal.Constructor(Vector3(5893.093f, 4457.976f, 54.9319f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1590, + ProximityTerminal.Constructor(Vector3(5961.375f, 4404.973f, 63.1729f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1591, + Terminal.Constructor(Vector3(5961.375f, 4404.973f, 63.1729f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1804, + ProximityTerminal.Constructor(Vector3(5848.785f, 4416.116f, 54.4819f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 1805, + Terminal.Constructor(Vector3(5848.785f, 4416.116f, 54.4819f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1808, + ProximityTerminal.Constructor(Vector3(5974.062f, 4456.43f, 54.4819f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 1809, + Terminal.Constructor(Vector3(5974.062f, 4456.43f, 54.4819f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1292, + FacilityTurret.Constructor(Vector3(5830.255f, 4419.343f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1292, 5018) - LocalObject(1293, FacilityTurret.Constructor(Vector3(5836.653f, 4480f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1293, + FacilityTurret.Constructor(Vector3(5836.653f, 4480f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1293, 5019) - LocalObject(1294, FacilityTurret.Constructor(Vector3(5906.011f, 4327.65f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1294, + FacilityTurret.Constructor(Vector3(5906.011f, 4327.65f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1294, 5020) - LocalObject(1295, FacilityTurret.Constructor(Vector3(5917.682f, 4544.102f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1295, + FacilityTurret.Constructor(Vector3(5917.682f, 4544.102f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1295, 5021) - LocalObject(1298, FacilityTurret.Constructor(Vector3(5987.112f, 4391.632f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1298, + FacilityTurret.Constructor(Vector3(5987.112f, 4391.632f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1298, 5022) - LocalObject(1299, FacilityTurret.Constructor(Vector3(5993.504f, 4452.265f, 63.4399f), manned_turret), owning_building_guid = 20) + LocalObject( + 1299, + FacilityTurret.Constructor(Vector3(5993.504f, 4452.265f, 63.4399f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1299, 5023) - LocalObject(1637, Painbox.Constructor(Vector3(5950.147f, 4420.453f, 42.3339f), painbox), owning_building_guid = 20) - LocalObject(1647, Painbox.Constructor(Vector3(5892.553f, 4386.578f, 49.37669f), painbox_continuous), owning_building_guid = 20) - LocalObject(1657, Painbox.Constructor(Vector3(5940.621f, 4432.061f, 40.1906f), painbox_door_radius), owning_building_guid = 20) - LocalObject(1683, Painbox.Constructor(Vector3(5881.696f, 4403.642f, 46.7579f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1684, Painbox.Constructor(Vector3(5884.55f, 4377.965f, 47.7579f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1685, Painbox.Constructor(Vector3(5898.208f, 4381.828f, 46.5396f), painbox_door_radius_continuous), owning_building_guid = 20) + LocalObject( + 1637, + Painbox.Constructor(Vector3(5950.147f, 4420.453f, 42.3339f), painbox), + owning_building_guid = 20 + ) + LocalObject( + 1647, + Painbox.Constructor(Vector3(5892.553f, 4386.578f, 49.37669f), painbox_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1657, + Painbox.Constructor(Vector3(5940.621f, 4432.061f, 40.1906f), painbox_door_radius), + owning_building_guid = 20 + ) + LocalObject( + 1683, + Painbox.Constructor(Vector3(5881.696f, 4403.642f, 46.7579f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1684, + Painbox.Constructor(Vector3(5884.55f, 4377.965f, 47.7579f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1685, + Painbox.Constructor(Vector3(5898.208f, 4381.828f, 46.5396f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) LocalObject(228, Generator.Constructor(Vector3(5952.455f, 4417.862f, 36.13789f)), owning_building_guid = 20) - LocalObject(218, Terminal.Constructor(Vector3(5947.263f, 4424.199f, 37.4319f), gen_control), owning_building_guid = 20) + LocalObject( + 218, + Terminal.Constructor(Vector3(5947.263f, 4424.199f, 37.4319f), gen_control), + owning_building_guid = 20 + ) } Building12() def Building12(): Unit = { // Name: Bel Type: comm_station_dsp GUID: 23, MapID: 12 - LocalBuilding("Bel", 23, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3612f, 4694f, 57.91497f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(159, CaptureTerminal.Constructor(Vector3(3688.089f, 4674.734f, 40.51498f), capture_terminal), owning_building_guid = 23) + LocalBuilding( + "Bel", + 23, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3612f, 4694f, 57.91497f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 159, + CaptureTerminal.Constructor(Vector3(3688.089f, 4674.734f, 40.51498f), capture_terminal), + owning_building_guid = 23 + ) LocalObject(205, Door.Constructor(Vector3(3680.339f, 4764.464f, 61.29297f)), owning_building_guid = 23) LocalObject(280, Door.Constructor(Vector3(3552.196f, 4650.501f, 59.56598f)), owning_building_guid = 23) LocalObject(281, Door.Constructor(Vector3(3552.196f, 4668.693f, 67.52998f)), owning_building_guid = 23) @@ -637,20 +1706,90 @@ object Map05 { // Forseral LocalObject(1998, Door.Constructor(Vector3(3648.673f, 4707.733f, 49.86897f)), owning_building_guid = 23) LocalObject(1999, Door.Constructor(Vector3(3648.673f, 4715.026f, 49.86897f)), owning_building_guid = 23) LocalObject(2000, Door.Constructor(Vector3(3648.673f, 4722.315f, 49.86897f)), owning_building_guid = 23) - LocalObject(724, IFFLock.Constructor(Vector3(3632.454f, 4693.09f, 59.48298f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 686) - LocalObject(778, IFFLock.Constructor(Vector3(3589.959f, 4695.104f, 64.48297f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 298) - LocalObject(779, IFFLock.Constructor(Vector3(3594.04f, 4684.42f, 64.48297f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 297) - LocalObject(780, IFFLock.Constructor(Vector3(3606.817f, 4684.514f, 71.98297f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 300) - LocalObject(783, IFFLock.Constructor(Vector3(3619.193f, 4711.962f, 64.48297f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 304) - LocalObject(788, IFFLock.Constructor(Vector3(3652.94f, 4755.572f, 41.85098f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 536) - LocalObject(789, IFFLock.Constructor(Vector3(3654.428f, 4726.94f, 49.35098f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 539) - LocalObject(790, IFFLock.Constructor(Vector3(3657.572f, 4701.19f, 49.35098f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 538) - LocalObject(791, IFFLock.Constructor(Vector3(3663.907f, 4799.163f, 64.46198f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 311) - LocalObject(792, IFFLock.Constructor(Vector3(3667.06f, 4704.428f, 41.85098f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 540) - LocalObject(793, IFFLock.Constructor(Vector3(3667.124f, 4766.312f, 59.52697f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 312) - LocalObject(798, IFFLock.Constructor(Vector3(3683.06f, 4664.428f, 41.85098f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 543) - LocalObject(800, IFFLock.Constructor(Vector3(3692.813f, 4667.572f, 41.85098f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 544) - LocalObject(805, IFFLock.Constructor(Vector3(3725.953f, 4774.808f, 59.42598f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 327) + LocalObject( + 724, + IFFLock.Constructor(Vector3(3632.454f, 4693.09f, 59.48298f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 686 + ) + LocalObject( + 778, + IFFLock.Constructor(Vector3(3589.959f, 4695.104f, 64.48297f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 298 + ) + LocalObject( + 779, + IFFLock.Constructor(Vector3(3594.04f, 4684.42f, 64.48297f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 297 + ) + LocalObject( + 780, + IFFLock.Constructor(Vector3(3606.817f, 4684.514f, 71.98297f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 300 + ) + LocalObject( + 783, + IFFLock.Constructor(Vector3(3619.193f, 4711.962f, 64.48297f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 304 + ) + LocalObject( + 788, + IFFLock.Constructor(Vector3(3652.94f, 4755.572f, 41.85098f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 536 + ) + LocalObject( + 789, + IFFLock.Constructor(Vector3(3654.428f, 4726.94f, 49.35098f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 539 + ) + LocalObject( + 790, + IFFLock.Constructor(Vector3(3657.572f, 4701.19f, 49.35098f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 538 + ) + LocalObject( + 791, + IFFLock.Constructor(Vector3(3663.907f, 4799.163f, 64.46198f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 311 + ) + LocalObject( + 792, + IFFLock.Constructor(Vector3(3667.06f, 4704.428f, 41.85098f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 540 + ) + LocalObject( + 793, + IFFLock.Constructor(Vector3(3667.124f, 4766.312f, 59.52697f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 312 + ) + LocalObject( + 798, + IFFLock.Constructor(Vector3(3683.06f, 4664.428f, 41.85098f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 543 + ) + LocalObject( + 800, + IFFLock.Constructor(Vector3(3692.813f, 4667.572f, 41.85098f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 544 + ) + LocalObject( + 805, + IFFLock.Constructor(Vector3(3725.953f, 4774.808f, 59.42598f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 327 + ) LocalObject(994, Locker.Constructor(Vector3(3659.563f, 4704.141f, 48.27597f)), owning_building_guid = 23) LocalObject(995, Locker.Constructor(Vector3(3660.727f, 4704.141f, 48.27597f)), owning_building_guid = 23) LocalObject(996, Locker.Constructor(Vector3(3661.874f, 4704.141f, 48.27597f)), owning_building_guid = 23) @@ -663,76 +1802,306 @@ object Map05 { // Forseral LocalObject(1007, Locker.Constructor(Vector3(3680.055f, 4724.165f, 40.51498f)), owning_building_guid = 23) LocalObject(1008, Locker.Constructor(Vector3(3681.391f, 4724.165f, 40.51498f)), owning_building_guid = 23) LocalObject(1011, Locker.Constructor(Vector3(3682.728f, 4724.165f, 40.51498f)), owning_building_guid = 23) - LocalObject(207, Terminal.Constructor(Vector3(3671.879f, 4796.918f, 63.61897f), dropship_vehicle_terminal), owning_building_guid = 23) - LocalObject(206, VehicleSpawnPad.Constructor(Vector3(3680.328f, 4818.856f, 57.94297f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 23, terminal_guid = 207) - LocalObject(1366, Terminal.Constructor(Vector3(3602.378f, 4670.897f, 64.37498f), order_terminal), owning_building_guid = 23) - LocalObject(1367, Terminal.Constructor(Vector3(3612.075f, 4686.547f, 71.76997f), order_terminal), owning_building_guid = 23) - LocalObject(1368, Terminal.Constructor(Vector3(3614.331f, 4684.43f, 71.76997f), order_terminal), owning_building_guid = 23) - LocalObject(1369, Terminal.Constructor(Vector3(3614.332f, 4688.825f, 71.76997f), order_terminal), owning_building_guid = 23) - LocalObject(1370, Terminal.Constructor(Vector3(3616.592f, 4686.59f, 71.76997f), order_terminal), owning_building_guid = 23) - LocalObject(1374, Terminal.Constructor(Vector3(3662.654f, 4709.408f, 49.60497f), order_terminal), owning_building_guid = 23) - LocalObject(1375, Terminal.Constructor(Vector3(3662.654f, 4713.139f, 49.60497f), order_terminal), owning_building_guid = 23) - LocalObject(1376, Terminal.Constructor(Vector3(3662.654f, 4716.928f, 49.60497f), order_terminal), owning_building_guid = 23) - LocalObject(1931, Terminal.Constructor(Vector3(3610.509f, 4669.959f, 64.63197f), spawn_terminal), owning_building_guid = 23) - LocalObject(1932, Terminal.Constructor(Vector3(3648.971f, 4705.243f, 50.14898f), spawn_terminal), owning_building_guid = 23) - LocalObject(1933, Terminal.Constructor(Vector3(3648.967f, 4712.535f, 50.14898f), spawn_terminal), owning_building_guid = 23) - LocalObject(1934, Terminal.Constructor(Vector3(3648.97f, 4719.823f, 50.14898f), spawn_terminal), owning_building_guid = 23) - LocalObject(1935, Terminal.Constructor(Vector3(3667.103f, 4788.906f, 64.56297f), spawn_terminal), owning_building_guid = 23) - LocalObject(1936, Terminal.Constructor(Vector3(3676.058f, 4693.409f, 42.04298f), spawn_terminal), owning_building_guid = 23) - LocalObject(1937, Terminal.Constructor(Vector3(3683.409f, 4749.942f, 42.04298f), spawn_terminal), owning_building_guid = 23) - LocalObject(1938, Terminal.Constructor(Vector3(3692.058f, 4701.409f, 49.57198f), spawn_terminal), owning_building_guid = 23) - LocalObject(1939, Terminal.Constructor(Vector3(3692.058f, 4741.409f, 49.57198f), spawn_terminal), owning_building_guid = 23) - LocalObject(2106, Terminal.Constructor(Vector3(3629.698f, 4802.044f, 60.70197f), ground_vehicle_terminal), owning_building_guid = 23) - LocalObject(1314, VehicleSpawnPad.Constructor(Vector3(3629.786f, 4788.411f, 56.54398f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 23, terminal_guid = 2106) + LocalObject( + 207, + Terminal.Constructor(Vector3(3671.879f, 4796.918f, 63.61897f), dropship_vehicle_terminal), + owning_building_guid = 23 + ) + LocalObject( + 206, + VehicleSpawnPad.Constructor(Vector3(3680.328f, 4818.856f, 57.94297f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 23, + terminal_guid = 207 + ) + LocalObject( + 1366, + Terminal.Constructor(Vector3(3602.378f, 4670.897f, 64.37498f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1367, + Terminal.Constructor(Vector3(3612.075f, 4686.547f, 71.76997f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1368, + Terminal.Constructor(Vector3(3614.331f, 4684.43f, 71.76997f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1369, + Terminal.Constructor(Vector3(3614.332f, 4688.825f, 71.76997f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1370, + Terminal.Constructor(Vector3(3616.592f, 4686.59f, 71.76997f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1374, + Terminal.Constructor(Vector3(3662.654f, 4709.408f, 49.60497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1375, + Terminal.Constructor(Vector3(3662.654f, 4713.139f, 49.60497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1376, + Terminal.Constructor(Vector3(3662.654f, 4716.928f, 49.60497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1931, + Terminal.Constructor(Vector3(3610.509f, 4669.959f, 64.63197f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1932, + Terminal.Constructor(Vector3(3648.971f, 4705.243f, 50.14898f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1933, + Terminal.Constructor(Vector3(3648.967f, 4712.535f, 50.14898f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1934, + Terminal.Constructor(Vector3(3648.97f, 4719.823f, 50.14898f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1935, + Terminal.Constructor(Vector3(3667.103f, 4788.906f, 64.56297f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1936, + Terminal.Constructor(Vector3(3676.058f, 4693.409f, 42.04298f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1937, + Terminal.Constructor(Vector3(3683.409f, 4749.942f, 42.04298f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1938, + Terminal.Constructor(Vector3(3692.058f, 4701.409f, 49.57198f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1939, + Terminal.Constructor(Vector3(3692.058f, 4741.409f, 49.57198f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2106, + Terminal.Constructor(Vector3(3629.698f, 4802.044f, 60.70197f), ground_vehicle_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1314, + VehicleSpawnPad.Constructor(Vector3(3629.786f, 4788.411f, 56.54398f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 23, + terminal_guid = 2106 + ) LocalObject(1823, ResourceSilo.Constructor(Vector3(3710.212f, 4859.642f, 65.03197f)), owning_building_guid = 23) - LocalObject(1849, SpawnTube.Constructor(Vector3(3648.233f, 4706.683f, 48.01498f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(1850, SpawnTube.Constructor(Vector3(3648.233f, 4713.974f, 48.01498f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(1851, SpawnTube.Constructor(Vector3(3648.233f, 4721.262f, 48.01498f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(1328, ProximityTerminal.Constructor(Vector3(3612.863f, 4665.013f, 58.01497f), medical_terminal), owning_building_guid = 23) - LocalObject(1329, ProximityTerminal.Constructor(Vector3(3676.444f, 4723.62f, 40.51498f), medical_terminal), owning_building_guid = 23) - LocalObject(1530, ProximityTerminal.Constructor(Vector3(3593.153f, 4787.398f, 66.32497f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1531, Terminal.Constructor(Vector3(3593.153f, 4787.398f, 66.32497f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1536, ProximityTerminal.Constructor(Vector3(3609.514f, 4741.467f, 63.60897f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1537, Terminal.Constructor(Vector3(3609.514f, 4741.467f, 63.60897f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1539, ProximityTerminal.Constructor(Vector3(3661.804f, 4705.901f, 70.79098f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1540, Terminal.Constructor(Vector3(3661.804f, 4705.901f, 70.79098f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1542, ProximityTerminal.Constructor(Vector3(3697.071f, 4722.159f, 66.33797f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1543, Terminal.Constructor(Vector3(3697.071f, 4722.159f, 66.33797f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1764, ProximityTerminal.Constructor(Vector3(3550.642f, 4732.241f, 57.66497f), repair_silo), owning_building_guid = 23) - LocalObject(1765, Terminal.Constructor(Vector3(3550.642f, 4732.241f, 57.66497f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(1768, ProximityTerminal.Constructor(Vector3(3720.57f, 4735.151f, 57.66497f), repair_silo), owning_building_guid = 23) - LocalObject(1769, Terminal.Constructor(Vector3(3720.57f, 4735.151f, 57.66497f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(1242, FacilityTurret.Constructor(Vector3(3538.401f, 4767.113f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1849, + SpawnTube.Constructor(Vector3(3648.233f, 4706.683f, 48.01498f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 1850, + SpawnTube.Constructor(Vector3(3648.233f, 4713.974f, 48.01498f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 1851, + SpawnTube.Constructor(Vector3(3648.233f, 4721.262f, 48.01498f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 1328, + ProximityTerminal.Constructor(Vector3(3612.863f, 4665.013f, 58.01497f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1329, + ProximityTerminal.Constructor(Vector3(3676.444f, 4723.62f, 40.51498f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1530, + ProximityTerminal.Constructor(Vector3(3593.153f, 4787.398f, 66.32497f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1531, + Terminal.Constructor(Vector3(3593.153f, 4787.398f, 66.32497f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1536, + ProximityTerminal.Constructor(Vector3(3609.514f, 4741.467f, 63.60897f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1537, + Terminal.Constructor(Vector3(3609.514f, 4741.467f, 63.60897f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1539, + ProximityTerminal.Constructor(Vector3(3661.804f, 4705.901f, 70.79098f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1540, + Terminal.Constructor(Vector3(3661.804f, 4705.901f, 70.79098f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1542, + ProximityTerminal.Constructor(Vector3(3697.071f, 4722.159f, 66.33797f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1543, + Terminal.Constructor(Vector3(3697.071f, 4722.159f, 66.33797f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1764, + ProximityTerminal.Constructor(Vector3(3550.642f, 4732.241f, 57.66497f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 1765, + Terminal.Constructor(Vector3(3550.642f, 4732.241f, 57.66497f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1768, + ProximityTerminal.Constructor(Vector3(3720.57f, 4735.151f, 57.66497f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 1769, + Terminal.Constructor(Vector3(3720.57f, 4735.151f, 57.66497f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1242, + FacilityTurret.Constructor(Vector3(3538.401f, 4767.113f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1242, 5024) - LocalObject(1243, FacilityTurret.Constructor(Vector3(3539.554f, 4613.565f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1243, + FacilityTurret.Constructor(Vector3(3539.554f, 4613.565f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1243, 5025) - LocalObject(1247, FacilityTurret.Constructor(Vector3(3583.445f, 4813.667f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1247, + FacilityTurret.Constructor(Vector3(3583.445f, 4813.667f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1247, 5026) - LocalObject(1252, FacilityTurret.Constructor(Vector3(3642.428f, 4612.396f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1252, + FacilityTurret.Constructor(Vector3(3642.428f, 4612.396f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1252, 5027) - LocalObject(1253, FacilityTurret.Constructor(Vector3(3643.449f, 4872.154f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1253, + FacilityTurret.Constructor(Vector3(3643.449f, 4872.154f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1253, 5028) - LocalObject(1256, FacilityTurret.Constructor(Vector3(3684.537f, 4653.011f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1256, + FacilityTurret.Constructor(Vector3(3684.537f, 4653.011f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1256, 5029) - LocalObject(1259, FacilityTurret.Constructor(Vector3(3731.619f, 4870.985f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1259, + FacilityTurret.Constructor(Vector3(3731.619f, 4870.985f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1259, 5030) - LocalObject(1260, FacilityTurret.Constructor(Vector3(3732.773f, 4702.733f, 66.52297f), manned_turret), owning_building_guid = 23) + LocalObject( + 1260, + FacilityTurret.Constructor(Vector3(3732.773f, 4702.733f, 66.52297f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1260, 5031) - LocalObject(1632, Painbox.Constructor(Vector3(3640.428f, 4754.057f, 44.40928f), painbox), owning_building_guid = 23) - LocalObject(1642, Painbox.Constructor(Vector3(3657.857f, 4714.408f, 52.04247f), painbox_continuous), owning_building_guid = 23) - LocalObject(1652, Painbox.Constructor(Vector3(3654.203f, 4752.915f, 43.64717f), painbox_door_radius), owning_building_guid = 23) - LocalObject(1668, Painbox.Constructor(Vector3(3655.087f, 4699.386f, 50.44418f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1669, Painbox.Constructor(Vector3(3655.895f, 4728.081f, 50.91497f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1670, Painbox.Constructor(Vector3(3670.317f, 4721.888f, 51.34528f), painbox_door_radius_continuous), owning_building_guid = 23) + LocalObject( + 1632, + Painbox.Constructor(Vector3(3640.428f, 4754.057f, 44.40928f), painbox), + owning_building_guid = 23 + ) + LocalObject( + 1642, + Painbox.Constructor(Vector3(3657.857f, 4714.408f, 52.04247f), painbox_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1652, + Painbox.Constructor(Vector3(3654.203f, 4752.915f, 43.64717f), painbox_door_radius), + owning_building_guid = 23 + ) + LocalObject( + 1668, + Painbox.Constructor(Vector3(3655.087f, 4699.386f, 50.44418f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1669, + Painbox.Constructor(Vector3(3655.895f, 4728.081f, 50.91497f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1670, + Painbox.Constructor(Vector3(3670.317f, 4721.888f, 51.34528f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) LocalObject(223, Generator.Constructor(Vector3(3636.445f, 4753.975f, 39.22097f)), owning_building_guid = 23) - LocalObject(213, Terminal.Constructor(Vector3(3644.637f, 4754.022f, 40.51498f), gen_control), owning_building_guid = 23) + LocalObject( + 213, + Terminal.Constructor(Vector3(3644.637f, 4754.022f, 40.51498f), gen_control), + owning_building_guid = 23 + ) } Building5() def Building5(): Unit = { // Name: Ogma Type: cryo_facility GUID: 26, MapID: 5 - LocalBuilding("Ogma", 26, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3538f, 3288f, 113.9927f), Vector3(0f, 0f, 260f), cryo_facility))) - LocalObject(158, CaptureTerminal.Constructor(Vector3(3601.243f, 3305.371f, 103.9927f), capture_terminal), owning_building_guid = 26) + LocalBuilding( + "Ogma", + 26, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3538f, 3288f, 113.9927f), + Vector3(0f, 0f, 260f), + cryo_facility + ) + ) + ) + LocalObject( + 158, + CaptureTerminal.Constructor(Vector3(3601.243f, 3305.371f, 103.9927f), capture_terminal), + owning_building_guid = 26 + ) LocalObject(274, Door.Constructor(Vector3(3441.841f, 3272.462f, 115.5137f)), owning_building_guid = 26) LocalObject(275, Door.Constructor(Vector3(3452.252f, 3279.257f, 115.5437f)), owning_building_guid = 26) LocalObject(276, Door.Constructor(Vector3(3455.411f, 3297.174f, 123.5077f)), owning_building_guid = 26) @@ -773,15 +2142,60 @@ object Map05 { // Forseral LocalObject(1989, Door.Constructor(Vector3(3542.834f, 3282.403f, 105.8467f)), owning_building_guid = 26) LocalObject(1990, Door.Constructor(Vector3(3550.017f, 3281.136f, 105.8467f)), owning_building_guid = 26) LocalObject(1991, Door.Constructor(Vector3(3557.195f, 3279.87f, 105.8467f)), owning_building_guid = 26) - LocalObject(723, IFFLock.Constructor(Vector3(3565.266f, 3282.41f, 115.4747f), Vector3(0, 0, 100)), owning_building_guid = 26, door_guid = 685) - LocalObject(762, IFFLock.Constructor(Vector3(3443.71f, 3271.306f, 115.4447f), Vector3(0, 0, 190)), owning_building_guid = 26, door_guid = 274) - LocalObject(763, IFFLock.Constructor(Vector3(3534.845f, 3274.775f, 105.3287f), Vector3(0, 0, 280)), owning_building_guid = 26, door_guid = 512) - LocalObject(764, IFFLock.Constructor(Vector3(3536.364f, 3264.741f, 97.82874f), Vector3(0, 0, 10)), owning_building_guid = 26, door_guid = 513) - LocalObject(765, IFFLock.Constructor(Vector3(3541.559f, 3285.388f, 125.4447f), Vector3(0, 0, 100)), owning_building_guid = 26, door_guid = 279) - LocalObject(766, IFFLock.Constructor(Vector3(3560.622f, 3273.422f, 105.3287f), Vector3(0, 0, 100)), owning_building_guid = 26, door_guid = 517) - LocalObject(767, IFFLock.Constructor(Vector3(3562.345f, 3299.127f, 125.4447f), Vector3(0, 0, 190)), owning_building_guid = 26, door_guid = 283) - LocalObject(781, IFFLock.Constructor(Vector3(3609.139f, 3308.905f, 105.3287f), Vector3(0, 0, 10)), owning_building_guid = 26, door_guid = 528) - LocalObject(782, IFFLock.Constructor(Vector3(3610.542f, 3298.754f, 105.3287f), Vector3(0, 0, 190)), owning_building_guid = 26, door_guid = 527) + LocalObject( + 723, + IFFLock.Constructor(Vector3(3565.266f, 3282.41f, 115.4747f), Vector3(0, 0, 100)), + owning_building_guid = 26, + door_guid = 685 + ) + LocalObject( + 762, + IFFLock.Constructor(Vector3(3443.71f, 3271.306f, 115.4447f), Vector3(0, 0, 190)), + owning_building_guid = 26, + door_guid = 274 + ) + LocalObject( + 763, + IFFLock.Constructor(Vector3(3534.845f, 3274.775f, 105.3287f), Vector3(0, 0, 280)), + owning_building_guid = 26, + door_guid = 512 + ) + LocalObject( + 764, + IFFLock.Constructor(Vector3(3536.364f, 3264.741f, 97.82874f), Vector3(0, 0, 10)), + owning_building_guid = 26, + door_guid = 513 + ) + LocalObject( + 765, + IFFLock.Constructor(Vector3(3541.559f, 3285.388f, 125.4447f), Vector3(0, 0, 100)), + owning_building_guid = 26, + door_guid = 279 + ) + LocalObject( + 766, + IFFLock.Constructor(Vector3(3560.622f, 3273.422f, 105.3287f), Vector3(0, 0, 100)), + owning_building_guid = 26, + door_guid = 517 + ) + LocalObject( + 767, + IFFLock.Constructor(Vector3(3562.345f, 3299.127f, 125.4447f), Vector3(0, 0, 190)), + owning_building_guid = 26, + door_guid = 283 + ) + LocalObject( + 781, + IFFLock.Constructor(Vector3(3609.139f, 3308.905f, 105.3287f), Vector3(0, 0, 10)), + owning_building_guid = 26, + door_guid = 528 + ) + LocalObject( + 782, + IFFLock.Constructor(Vector3(3610.542f, 3298.754f, 105.3287f), Vector3(0, 0, 190)), + owning_building_guid = 26, + door_guid = 527 + ) LocalObject(949, Locker.Constructor(Vector3(3533.708f, 3250.071f, 103.9007f)), owning_building_guid = 26) LocalObject(950, Locker.Constructor(Vector3(3533.892f, 3251.11f, 103.9007f)), owning_building_guid = 26) LocalObject(951, Locker.Constructor(Vector3(3534.076f, 3252.154f, 103.9007f)), owning_building_guid = 26) @@ -811,76 +2225,309 @@ object Map05 { // Forseral LocalObject(1197, Locker.Constructor(Vector3(3529.373f, 3270.979f, 113.7637f)), owning_building_guid = 26) LocalObject(1198, Locker.Constructor(Vector3(3531.857f, 3270.542f, 113.9927f)), owning_building_guid = 26) LocalObject(1199, Locker.Constructor(Vector3(3532.875f, 3270.362f, 113.9927f)), owning_building_guid = 26) - LocalObject(166, Terminal.Constructor(Vector3(3581.239f, 3263.698f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(167, Terminal.Constructor(Vector3(3582.414f, 3262.021f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(168, Terminal.Constructor(Vector3(3583.444f, 3276.206f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(169, Terminal.Constructor(Vector3(3585.122f, 3277.38f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(170, Terminal.Constructor(Vector3(3589.627f, 3260.749f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(171, Terminal.Constructor(Vector3(3591.305f, 3261.924f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(172, Terminal.Constructor(Vector3(3592.335f, 3276.108f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(173, Terminal.Constructor(Vector3(3593.51f, 3274.431f, 103.9827f), cert_terminal), owning_building_guid = 26) - LocalObject(1356, Terminal.Constructor(Vector3(3542.056f, 3268.343f, 105.5827f), order_terminal), owning_building_guid = 26) - LocalObject(1357, Terminal.Constructor(Vector3(3545.73f, 3267.695f, 105.5827f), order_terminal), owning_building_guid = 26) - LocalObject(1358, Terminal.Constructor(Vector3(3549.123f, 3296.221f, 115.2877f), order_terminal), owning_building_guid = 26) - LocalObject(1359, Terminal.Constructor(Vector3(3549.462f, 3267.037f, 105.5827f), order_terminal), owning_building_guid = 26) - LocalObject(1924, Terminal.Constructor(Vector3(3485.064f, 3313.672f, 108.1057f), spawn_terminal), owning_building_guid = 26) - LocalObject(1925, Terminal.Constructor(Vector3(3524.235f, 3288.493f, 115.5717f), spawn_terminal), owning_building_guid = 26) - LocalObject(1926, Terminal.Constructor(Vector3(3540.331f, 3282.541f, 106.1267f), spawn_terminal), owning_building_guid = 26) - LocalObject(1927, Terminal.Constructor(Vector3(3544.362f, 3327.495f, 105.6057f), spawn_terminal), owning_building_guid = 26) - LocalObject(1928, Terminal.Constructor(Vector3(3547.512f, 3281.279f, 106.1267f), spawn_terminal), owning_building_guid = 26) - LocalObject(1929, Terminal.Constructor(Vector3(3554.689f, 3280.01f, 106.1267f), spawn_terminal), owning_building_guid = 26) - LocalObject(1930, Terminal.Constructor(Vector3(3601.131f, 3277.47f, 105.6057f), spawn_terminal), owning_building_guid = 26) - LocalObject(2105, Terminal.Constructor(Vector3(3469.24f, 3261.916f, 116.2977f), vehicle_terminal_combined), owning_building_guid = 26) - LocalObject(1313, VehicleSpawnPad.Constructor(Vector3(3471.52f, 3275.363f, 112.1397f), mb_pad_creation, Vector3(0, 0, 10)), owning_building_guid = 26, terminal_guid = 2105) + LocalObject( + 166, + Terminal.Constructor(Vector3(3581.239f, 3263.698f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 167, + Terminal.Constructor(Vector3(3582.414f, 3262.021f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 168, + Terminal.Constructor(Vector3(3583.444f, 3276.206f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 169, + Terminal.Constructor(Vector3(3585.122f, 3277.38f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 170, + Terminal.Constructor(Vector3(3589.627f, 3260.749f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 171, + Terminal.Constructor(Vector3(3591.305f, 3261.924f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 172, + Terminal.Constructor(Vector3(3592.335f, 3276.108f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(3593.51f, 3274.431f, 103.9827f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1356, + Terminal.Constructor(Vector3(3542.056f, 3268.343f, 105.5827f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1357, + Terminal.Constructor(Vector3(3545.73f, 3267.695f, 105.5827f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1358, + Terminal.Constructor(Vector3(3549.123f, 3296.221f, 115.2877f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1359, + Terminal.Constructor(Vector3(3549.462f, 3267.037f, 105.5827f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1924, + Terminal.Constructor(Vector3(3485.064f, 3313.672f, 108.1057f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1925, + Terminal.Constructor(Vector3(3524.235f, 3288.493f, 115.5717f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1926, + Terminal.Constructor(Vector3(3540.331f, 3282.541f, 106.1267f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1927, + Terminal.Constructor(Vector3(3544.362f, 3327.495f, 105.6057f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1928, + Terminal.Constructor(Vector3(3547.512f, 3281.279f, 106.1267f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1929, + Terminal.Constructor(Vector3(3554.689f, 3280.01f, 106.1267f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1930, + Terminal.Constructor(Vector3(3601.131f, 3277.47f, 105.6057f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2105, + Terminal.Constructor(Vector3(3469.24f, 3261.916f, 116.2977f), vehicle_terminal_combined), + owning_building_guid = 26 + ) + LocalObject( + 1313, + VehicleSpawnPad.Constructor(Vector3(3471.52f, 3275.363f, 112.1397f), mb_pad_creation, Vector3(0, 0, 10)), + owning_building_guid = 26, + terminal_guid = 2105 + ) LocalObject(1822, ResourceSilo.Constructor(Vector3(3598.545f, 3338.521f, 121.0097f)), owning_building_guid = 26) - LocalObject(1840, SpawnTube.Constructor(Vector3(3541.877f, 3283.018f, 103.9927f), Vector3(0, 0, 100)), owning_building_guid = 26) - LocalObject(1841, SpawnTube.Constructor(Vector3(3549.057f, 3281.752f, 103.9927f), Vector3(0, 0, 100)), owning_building_guid = 26) - LocalObject(1842, SpawnTube.Constructor(Vector3(3556.234f, 3280.487f, 103.9927f), Vector3(0, 0, 100)), owning_building_guid = 26) - LocalObject(115, ProximityTerminal.Constructor(Vector3(3530.656f, 3287.281f, 113.8027f), adv_med_terminal), owning_building_guid = 26) - LocalObject(1327, ProximityTerminal.Constructor(Vector3(3537.092f, 3260.092f, 103.9927f), medical_terminal), owning_building_guid = 26) - LocalObject(1521, ProximityTerminal.Constructor(Vector3(3470.142f, 3301.795f, 122.3447f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1522, Terminal.Constructor(Vector3(3470.142f, 3301.795f, 122.3447f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1524, ProximityTerminal.Constructor(Vector3(3480.148f, 3316.597f, 124.2857f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1525, Terminal.Constructor(Vector3(3480.148f, 3316.597f, 124.2857f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1527, ProximityTerminal.Constructor(Vector3(3582.336f, 3278.839f, 124.3247f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1528, Terminal.Constructor(Vector3(3582.336f, 3278.839f, 124.3247f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1533, ProximityTerminal.Constructor(Vector3(3593.423f, 3293.356f, 122.3347f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1534, Terminal.Constructor(Vector3(3593.423f, 3293.356f, 122.3347f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1752, ProximityTerminal.Constructor(Vector3(3460.603f, 3337.67f, 113.7427f), repair_silo), owning_building_guid = 26) - LocalObject(1753, Terminal.Constructor(Vector3(3460.603f, 3337.67f, 113.7427f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(1760, ProximityTerminal.Constructor(Vector3(3544.499f, 3233.514f, 113.7427f), repair_silo), owning_building_guid = 26) - LocalObject(1761, Terminal.Constructor(Vector3(3544.499f, 3233.514f, 113.7427f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(1238, FacilityTurret.Constructor(Vector3(3431.791f, 3242.12f, 122.3947f), manned_turret), owning_building_guid = 26) + LocalObject( + 1840, + SpawnTube.Constructor(Vector3(3541.877f, 3283.018f, 103.9927f), Vector3(0, 0, 100)), + owning_building_guid = 26 + ) + LocalObject( + 1841, + SpawnTube.Constructor(Vector3(3549.057f, 3281.752f, 103.9927f), Vector3(0, 0, 100)), + owning_building_guid = 26 + ) + LocalObject( + 1842, + SpawnTube.Constructor(Vector3(3556.234f, 3280.487f, 103.9927f), Vector3(0, 0, 100)), + owning_building_guid = 26 + ) + LocalObject( + 115, + ProximityTerminal.Constructor(Vector3(3530.656f, 3287.281f, 113.8027f), adv_med_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1327, + ProximityTerminal.Constructor(Vector3(3537.092f, 3260.092f, 103.9927f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1521, + ProximityTerminal.Constructor(Vector3(3470.142f, 3301.795f, 122.3447f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1522, + Terminal.Constructor(Vector3(3470.142f, 3301.795f, 122.3447f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1524, + ProximityTerminal.Constructor(Vector3(3480.148f, 3316.597f, 124.2857f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1525, + Terminal.Constructor(Vector3(3480.148f, 3316.597f, 124.2857f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1527, + ProximityTerminal.Constructor(Vector3(3582.336f, 3278.839f, 124.3247f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1528, + Terminal.Constructor(Vector3(3582.336f, 3278.839f, 124.3247f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1533, + ProximityTerminal.Constructor(Vector3(3593.423f, 3293.356f, 122.3347f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1534, + Terminal.Constructor(Vector3(3593.423f, 3293.356f, 122.3347f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1752, + ProximityTerminal.Constructor(Vector3(3460.603f, 3337.67f, 113.7427f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 1753, + Terminal.Constructor(Vector3(3460.603f, 3337.67f, 113.7427f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1760, + ProximityTerminal.Constructor(Vector3(3544.499f, 3233.514f, 113.7427f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 1761, + Terminal.Constructor(Vector3(3544.499f, 3233.514f, 113.7427f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1238, + FacilityTurret.Constructor(Vector3(3431.791f, 3242.12f, 122.3947f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1238, 5032) - LocalObject(1240, FacilityTurret.Constructor(Vector3(3455.28f, 3375.29f, 122.3947f), manned_turret), owning_building_guid = 26) + LocalObject( + 1240, + FacilityTurret.Constructor(Vector3(3455.28f, 3375.29f, 122.3947f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1240, 5033) - LocalObject(1244, FacilityTurret.Constructor(Vector3(3564.656f, 3217.487f, 122.3947f), manned_turret), owning_building_guid = 26) + LocalObject( + 1244, + FacilityTurret.Constructor(Vector3(3564.656f, 3217.487f, 122.3947f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1244, 5034) - LocalObject(1249, FacilityTurret.Constructor(Vector3(3614.603f, 3252.494f, 122.3947f), manned_turret), owning_building_guid = 26) + LocalObject( + 1249, + FacilityTurret.Constructor(Vector3(3614.603f, 3252.494f, 122.3947f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1249, 5035) - LocalObject(1250, FacilityTurret.Constructor(Vector3(3629.684f, 3344.546f, 122.3947f), manned_turret), owning_building_guid = 26) + LocalObject( + 1250, + FacilityTurret.Constructor(Vector3(3629.684f, 3344.546f, 122.3947f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1250, 5036) - LocalObject(705, ImplantTerminalMech.Constructor(Vector3(3579.946f, 3270.383f, 103.4697f)), owning_building_guid = 26) - LocalObject(699, Terminal.Constructor(Vector3(3579.964f, 3270.379f, 103.4697f), implant_terminal_interface), owning_building_guid = 26) + LocalObject( + 705, + ImplantTerminalMech.Constructor(Vector3(3579.946f, 3270.383f, 103.4697f)), + owning_building_guid = 26 + ) + LocalObject( + 699, + Terminal.Constructor(Vector3(3579.964f, 3270.379f, 103.4697f), implant_terminal_interface), + owning_building_guid = 26 + ) TerminalToInterface(705, 699) - LocalObject(706, ImplantTerminalMech.Constructor(Vector3(3595.071f, 3267.728f, 103.4697f)), owning_building_guid = 26) - LocalObject(700, Terminal.Constructor(Vector3(3595.053f, 3267.731f, 103.4697f), implant_terminal_interface), owning_building_guid = 26) + LocalObject( + 706, + ImplantTerminalMech.Constructor(Vector3(3595.071f, 3267.728f, 103.4697f)), + owning_building_guid = 26 + ) + LocalObject( + 700, + Terminal.Constructor(Vector3(3595.053f, 3267.731f, 103.4697f), implant_terminal_interface), + owning_building_guid = 26 + ) TerminalToInterface(706, 700) - LocalObject(1631, Painbox.Constructor(Vector3(3517.661f, 3285.906f, 128.0215f), painbox), owning_building_guid = 26) - LocalObject(1641, Painbox.Constructor(Vector3(3543.033f, 3272.132f, 108.0626f), painbox_continuous), owning_building_guid = 26) - LocalObject(1651, Painbox.Constructor(Vector3(3532.151f, 3284.785f, 128.2266f), painbox_door_radius), owning_building_guid = 26) - LocalObject(1665, Painbox.Constructor(Vector3(3533.997f, 3278.003f, 106.3486f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(1666, Painbox.Constructor(Vector3(3551.919f, 3257.234f, 107.5336f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(1667, Painbox.Constructor(Vector3(3561.265f, 3271.189f, 105.7069f), painbox_door_radius_continuous), owning_building_guid = 26) + LocalObject( + 1631, + Painbox.Constructor(Vector3(3517.661f, 3285.906f, 128.0215f), painbox), + owning_building_guid = 26 + ) + LocalObject( + 1641, + Painbox.Constructor(Vector3(3543.033f, 3272.132f, 108.0626f), painbox_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1651, + Painbox.Constructor(Vector3(3532.151f, 3284.785f, 128.2266f), painbox_door_radius), + owning_building_guid = 26 + ) + LocalObject( + 1665, + Painbox.Constructor(Vector3(3533.997f, 3278.003f, 106.3486f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1666, + Painbox.Constructor(Vector3(3551.919f, 3257.234f, 107.5336f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1667, + Painbox.Constructor(Vector3(3561.265f, 3271.189f, 105.7069f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) LocalObject(222, Generator.Constructor(Vector3(3514.104f, 3288.126f, 122.6987f)), owning_building_guid = 26) - LocalObject(212, Terminal.Constructor(Vector3(3522.18f, 3286.75f, 123.9927f), gen_control), owning_building_guid = 26) + LocalObject( + 212, + Terminal.Constructor(Vector3(3522.18f, 3286.75f, 123.9927f), gen_control), + owning_building_guid = 26 + ) } Building6() def Building6(): Unit = { // Name: Neit Type: cryo_facility GUID: 29, MapID: 6 - LocalBuilding("Neit", 29, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4350f, 4238f, 75.96667f), Vector3(0f, 0f, 42f), cryo_facility))) - LocalObject(160, CaptureTerminal.Constructor(Vector3(4289.469f, 4263.248f, 65.96667f), capture_terminal), owning_building_guid = 29) + LocalBuilding( + "Neit", + 29, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4350f, 4238f, 75.96667f), + Vector3(0f, 0f, 42f), + cryo_facility + ) + ) + ) + LocalObject( + 160, + CaptureTerminal.Constructor(Vector3(4289.469f, 4263.248f, 65.96667f), capture_terminal), + owning_building_guid = 29 + ) LocalObject(332, Door.Constructor(Vector3(4273.177f, 4260.066f, 77.51768f)), owning_building_guid = 29) LocalObject(333, Door.Constructor(Vector3(4286.697f, 4272.239f, 85.48167f)), owning_building_guid = 29) LocalObject(334, Door.Constructor(Vector3(4290.987f, 4215.401f, 85.48167f)), owning_building_guid = 29) @@ -921,15 +2568,60 @@ object Map05 { // Forseral LocalObject(2007, Door.Constructor(Vector3(4339.879f, 4256.224f, 67.82068f)), owning_building_guid = 29) LocalObject(2008, Door.Constructor(Vector3(4344.757f, 4250.807f, 67.82068f)), owning_building_guid = 29) LocalObject(2009, Door.Constructor(Vector3(4349.637f, 4245.387f, 67.82068f)), owning_building_guid = 29) - LocalObject(725, IFFLock.Constructor(Vector3(4331.956f, 4259.191f, 77.44868f), Vector3(0, 0, 318)), owning_building_guid = 29, door_guid = 687) - LocalObject(810, IFFLock.Constructor(Vector3(4281.072f, 4265.325f, 67.30267f), Vector3(0, 0, 228)), owning_building_guid = 29, door_guid = 548) - LocalObject(811, IFFLock.Constructor(Vector3(4286.216f, 4274.187f, 67.30267f), Vector3(0, 0, 48)), owning_building_guid = 29, door_guid = 549) - LocalObject(812, IFFLock.Constructor(Vector3(4323.965f, 4244.22f, 87.41867f), Vector3(0, 0, 48)), owning_building_guid = 29, door_guid = 338) - LocalObject(813, IFFLock.Constructor(Vector3(4341.148f, 4263.415f, 67.30267f), Vector3(0, 0, 318)), owning_building_guid = 29, door_guid = 560) - LocalObject(814, IFFLock.Constructor(Vector3(4348.804f, 4242.249f, 87.41867f), Vector3(0, 0, 318)), owning_building_guid = 29, door_guid = 340) - LocalObject(815, IFFLock.Constructor(Vector3(4360.628f, 4246.479f, 67.30267f), Vector3(0, 0, 138)), owning_building_guid = 29, door_guid = 565) - LocalObject(816, IFFLock.Constructor(Vector3(4365.609f, 4255.321f, 59.80267f), Vector3(0, 0, 228)), owning_building_guid = 29, door_guid = 567) - LocalObject(817, IFFLock.Constructor(Vector3(4434.579f, 4193.105f, 77.41868f), Vector3(0, 0, 48)), owning_building_guid = 29, door_guid = 345) + LocalObject( + 725, + IFFLock.Constructor(Vector3(4331.956f, 4259.191f, 77.44868f), Vector3(0, 0, 318)), + owning_building_guid = 29, + door_guid = 687 + ) + LocalObject( + 810, + IFFLock.Constructor(Vector3(4281.072f, 4265.325f, 67.30267f), Vector3(0, 0, 228)), + owning_building_guid = 29, + door_guid = 548 + ) + LocalObject( + 811, + IFFLock.Constructor(Vector3(4286.216f, 4274.187f, 67.30267f), Vector3(0, 0, 48)), + owning_building_guid = 29, + door_guid = 549 + ) + LocalObject( + 812, + IFFLock.Constructor(Vector3(4323.965f, 4244.22f, 87.41867f), Vector3(0, 0, 48)), + owning_building_guid = 29, + door_guid = 338 + ) + LocalObject( + 813, + IFFLock.Constructor(Vector3(4341.148f, 4263.415f, 67.30267f), Vector3(0, 0, 318)), + owning_building_guid = 29, + door_guid = 560 + ) + LocalObject( + 814, + IFFLock.Constructor(Vector3(4348.804f, 4242.249f, 87.41867f), Vector3(0, 0, 318)), + owning_building_guid = 29, + door_guid = 340 + ) + LocalObject( + 815, + IFFLock.Constructor(Vector3(4360.628f, 4246.479f, 67.30267f), Vector3(0, 0, 138)), + owning_building_guid = 29, + door_guid = 565 + ) + LocalObject( + 816, + IFFLock.Constructor(Vector3(4365.609f, 4255.321f, 59.80267f), Vector3(0, 0, 228)), + owning_building_guid = 29, + door_guid = 567 + ) + LocalObject( + 817, + IFFLock.Constructor(Vector3(4434.579f, 4193.105f, 77.41868f), Vector3(0, 0, 48)), + owning_building_guid = 29, + door_guid = 345 + ) LocalObject(1030, Locker.Constructor(Vector3(4328.375f, 4291.902f, 65.96168f)), owning_building_guid = 29) LocalObject(1031, Locker.Constructor(Vector3(4329.213f, 4290.972f, 65.96168f)), owning_building_guid = 29) LocalObject(1032, Locker.Constructor(Vector3(4330.057f, 4290.034f, 65.96168f)), owning_building_guid = 29) @@ -959,76 +2651,309 @@ object Map05 { // Forseral LocalObject(1205, Locker.Constructor(Vector3(4369.366f, 4243.781f, 75.73768f)), owning_building_guid = 29) LocalObject(1206, Locker.Constructor(Vector3(4371.05f, 4241.911f, 75.96667f)), owning_building_guid = 29) LocalObject(1207, Locker.Constructor(Vector3(4371.742f, 4241.142f, 75.96667f)), owning_building_guid = 29) - LocalObject(174, Terminal.Constructor(Vector3(4314.504f, 4280.823f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(175, Terminal.Constructor(Vector3(4314.612f, 4282.868f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(176, Terminal.Constructor(Vector3(4319.406f, 4275.38f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(177, Terminal.Constructor(Vector3(4321.451f, 4275.272f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(178, Terminal.Constructor(Vector3(4324.05f, 4291.366f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(179, Terminal.Constructor(Vector3(4326.095f, 4291.259f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(180, Terminal.Constructor(Vector3(4330.889f, 4283.771f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(181, Terminal.Constructor(Vector3(4330.996f, 4285.815f, 65.95667f), cert_terminal), owning_building_guid = 29) - LocalObject(1386, Terminal.Constructor(Vector3(4336.174f, 4238.369f, 77.26167f), order_terminal), owning_building_guid = 29) - LocalObject(1387, Terminal.Constructor(Vector3(4353.874f, 4261.576f, 67.55667f), order_terminal), owning_building_guid = 29) - LocalObject(1388, Terminal.Constructor(Vector3(4356.409f, 4258.76f, 67.55667f), order_terminal), owning_building_guid = 29) - LocalObject(1389, Terminal.Constructor(Vector3(4358.906f, 4255.987f, 67.55667f), order_terminal), owning_building_guid = 29) - LocalObject(1940, Terminal.Constructor(Vector3(4306.735f, 4285.165f, 67.57967f), spawn_terminal), owning_building_guid = 29) - LocalObject(1941, Terminal.Constructor(Vector3(4320.671f, 4210.794f, 67.57967f), spawn_terminal), owning_building_guid = 29) - LocalObject(1942, Terminal.Constructor(Vector3(4341.768f, 4254.571f, 68.10068f), spawn_terminal), owning_building_guid = 29) - LocalObject(1943, Terminal.Constructor(Vector3(4346.642f, 4249.153f, 68.10068f), spawn_terminal), owning_building_guid = 29) - LocalObject(1944, Terminal.Constructor(Vector3(4351.524f, 4243.736f, 68.10068f), spawn_terminal), owning_building_guid = 29) - LocalObject(1945, Terminal.Constructor(Vector3(4360.543f, 4229.138f, 77.54568f), spawn_terminal), owning_building_guid = 29) - LocalObject(1946, Terminal.Constructor(Vector3(4375.909f, 4185.179f, 70.07967f), spawn_terminal), owning_building_guid = 29) - LocalObject(2107, Terminal.Constructor(Vector3(4420.243f, 4216.222f, 78.27168f), vehicle_terminal_combined), owning_building_guid = 29) - LocalObject(1315, VehicleSpawnPad.Constructor(Vector3(4410.167f, 4207.028f, 74.11368f), mb_pad_creation, Vector3(0, 0, 228)), owning_building_guid = 29, terminal_guid = 2107) + LocalObject( + 174, + Terminal.Constructor(Vector3(4314.504f, 4280.823f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(4314.612f, 4282.868f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 176, + Terminal.Constructor(Vector3(4319.406f, 4275.38f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 177, + Terminal.Constructor(Vector3(4321.451f, 4275.272f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 178, + Terminal.Constructor(Vector3(4324.05f, 4291.366f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(4326.095f, 4291.259f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 180, + Terminal.Constructor(Vector3(4330.889f, 4283.771f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 181, + Terminal.Constructor(Vector3(4330.996f, 4285.815f, 65.95667f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1386, + Terminal.Constructor(Vector3(4336.174f, 4238.369f, 77.26167f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1387, + Terminal.Constructor(Vector3(4353.874f, 4261.576f, 67.55667f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1388, + Terminal.Constructor(Vector3(4356.409f, 4258.76f, 67.55667f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1389, + Terminal.Constructor(Vector3(4358.906f, 4255.987f, 67.55667f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1940, + Terminal.Constructor(Vector3(4306.735f, 4285.165f, 67.57967f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1941, + Terminal.Constructor(Vector3(4320.671f, 4210.794f, 67.57967f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1942, + Terminal.Constructor(Vector3(4341.768f, 4254.571f, 68.10068f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1943, + Terminal.Constructor(Vector3(4346.642f, 4249.153f, 68.10068f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1944, + Terminal.Constructor(Vector3(4351.524f, 4243.736f, 68.10068f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1945, + Terminal.Constructor(Vector3(4360.543f, 4229.138f, 77.54568f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1946, + Terminal.Constructor(Vector3(4375.909f, 4185.179f, 70.07967f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2107, + Terminal.Constructor(Vector3(4420.243f, 4216.222f, 78.27168f), vehicle_terminal_combined), + owning_building_guid = 29 + ) + LocalObject( + 1315, + VehicleSpawnPad.Constructor(Vector3(4410.167f, 4207.028f, 74.11368f), mb_pad_creation, Vector3(0, 0, 228)), + owning_building_guid = 29, + terminal_guid = 2107 + ) LocalObject(1824, ResourceSilo.Constructor(Vector3(4271.186f, 4235.464f, 82.98367f)), owning_building_guid = 29) - LocalObject(1858, SpawnTube.Constructor(Vector3(4340.257f, 4255.147f, 65.96667f), Vector3(0, 0, 318)), owning_building_guid = 29) - LocalObject(1859, SpawnTube.Constructor(Vector3(4345.134f, 4249.731f, 65.96667f), Vector3(0, 0, 318)), owning_building_guid = 29) - LocalObject(1860, SpawnTube.Constructor(Vector3(4350.012f, 4244.312f, 65.96667f), Vector3(0, 0, 318)), owning_building_guid = 29) - LocalObject(116, ProximityTerminal.Constructor(Vector3(4356.23f, 4234.044f, 75.77667f), adv_med_terminal), owning_building_guid = 29) - LocalObject(1330, ProximityTerminal.Constructor(Vector3(4367.897f, 4259.433f, 65.96667f), medical_terminal), owning_building_guid = 29) - LocalObject(1545, ProximityTerminal.Constructor(Vector3(4303.028f, 4267.901f, 84.30868f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1546, Terminal.Constructor(Vector3(4303.028f, 4267.901f, 84.30868f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1548, ProximityTerminal.Constructor(Vector3(4320.703f, 4272.515f, 86.29868f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1549, Terminal.Constructor(Vector3(4320.703f, 4272.515f, 86.29868f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1551, ProximityTerminal.Constructor(Vector3(4377.982f, 4179.848f, 86.25967f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1552, Terminal.Constructor(Vector3(4377.982f, 4179.848f, 86.25967f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1554, ProximityTerminal.Constructor(Vector3(4394.98f, 4185.352f, 84.31867f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1555, Terminal.Constructor(Vector3(4394.98f, 4185.352f, 84.31867f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1772, ProximityTerminal.Constructor(Vector3(4378.424f, 4284.937f, 75.71667f), repair_silo), owning_building_guid = 29) - LocalObject(1773, Terminal.Constructor(Vector3(4378.424f, 4284.937f, 75.71667f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(1776, ProximityTerminal.Constructor(Vector3(4380.41f, 4151.209f, 75.71667f), repair_silo), owning_building_guid = 29) - LocalObject(1777, Terminal.Constructor(Vector3(4380.41f, 4151.209f, 75.71667f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(1263, FacilityTurret.Constructor(Vector3(4242.938f, 4249.887f, 84.36868f), manned_turret), owning_building_guid = 29) + LocalObject( + 1858, + SpawnTube.Constructor(Vector3(4340.257f, 4255.147f, 65.96667f), Vector3(0, 0, 318)), + owning_building_guid = 29 + ) + LocalObject( + 1859, + SpawnTube.Constructor(Vector3(4345.134f, 4249.731f, 65.96667f), Vector3(0, 0, 318)), + owning_building_guid = 29 + ) + LocalObject( + 1860, + SpawnTube.Constructor(Vector3(4350.012f, 4244.312f, 65.96667f), Vector3(0, 0, 318)), + owning_building_guid = 29 + ) + LocalObject( + 116, + ProximityTerminal.Constructor(Vector3(4356.23f, 4234.044f, 75.77667f), adv_med_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1330, + ProximityTerminal.Constructor(Vector3(4367.897f, 4259.433f, 65.96667f), medical_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1545, + ProximityTerminal.Constructor(Vector3(4303.028f, 4267.901f, 84.30868f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1546, + Terminal.Constructor(Vector3(4303.028f, 4267.901f, 84.30868f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1548, + ProximityTerminal.Constructor(Vector3(4320.703f, 4272.515f, 86.29868f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1549, + Terminal.Constructor(Vector3(4320.703f, 4272.515f, 86.29868f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1551, + ProximityTerminal.Constructor(Vector3(4377.982f, 4179.848f, 86.25967f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1552, + Terminal.Constructor(Vector3(4377.982f, 4179.848f, 86.25967f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1554, + ProximityTerminal.Constructor(Vector3(4394.98f, 4185.352f, 84.31867f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1555, + Terminal.Constructor(Vector3(4394.98f, 4185.352f, 84.31867f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1772, + ProximityTerminal.Constructor(Vector3(4378.424f, 4284.937f, 75.71667f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 1773, + Terminal.Constructor(Vector3(4378.424f, 4284.937f, 75.71667f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1776, + ProximityTerminal.Constructor(Vector3(4380.41f, 4151.209f, 75.71667f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 1777, + Terminal.Constructor(Vector3(4380.41f, 4151.209f, 75.71667f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1263, + FacilityTurret.Constructor(Vector3(4242.938f, 4249.887f, 84.36868f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1263, 5037) - LocalObject(1264, FacilityTurret.Constructor(Vector3(4311.496f, 4313.141f, 84.36868f), manned_turret), owning_building_guid = 29) + LocalObject( + 1264, + FacilityTurret.Constructor(Vector3(4311.496f, 4313.141f, 84.36868f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1264, 5038) - LocalObject(1265, FacilityTurret.Constructor(Vector3(4361.443f, 4118.287f, 84.36868f), manned_turret), owning_building_guid = 29) + LocalObject( + 1265, + FacilityTurret.Constructor(Vector3(4361.443f, 4118.287f, 84.36868f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1265, 5039) - LocalObject(1266, FacilityTurret.Constructor(Vector3(4372.407f, 4309.977f, 84.36868f), manned_turret), owning_building_guid = 29) + LocalObject( + 1266, + FacilityTurret.Constructor(Vector3(4372.407f, 4309.977f, 84.36868f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1266, 5040) - LocalObject(1267, FacilityTurret.Constructor(Vector3(4461.941f, 4208.765f, 84.36868f), manned_turret), owning_building_guid = 29) + LocalObject( + 1267, + FacilityTurret.Constructor(Vector3(4461.941f, 4208.765f, 84.36868f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1267, 5041) - LocalObject(707, ImplantTerminalMech.Constructor(Vector3(4317.508f, 4289.111f, 65.44367f)), owning_building_guid = 29) - LocalObject(701, Terminal.Constructor(Vector3(4317.521f, 4289.098f, 65.44367f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 707, + ImplantTerminalMech.Constructor(Vector3(4317.508f, 4289.111f, 65.44367f)), + owning_building_guid = 29 + ) + LocalObject( + 701, + Terminal.Constructor(Vector3(4317.521f, 4289.098f, 65.44367f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(707, 701) - LocalObject(708, ImplantTerminalMech.Constructor(Vector3(4327.792f, 4277.708f, 65.44367f)), owning_building_guid = 29) - LocalObject(702, Terminal.Constructor(Vector3(4327.78f, 4277.721f, 65.44367f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 708, + ImplantTerminalMech.Constructor(Vector3(4327.792f, 4277.708f, 65.44367f)), + owning_building_guid = 29 + ) + LocalObject( + 702, + Terminal.Constructor(Vector3(4327.78f, 4277.721f, 65.44367f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(708, 702) - LocalObject(1633, Painbox.Constructor(Vector3(4367.316f, 4227.128f, 89.99548f), painbox), owning_building_guid = 29) - LocalObject(1643, Painbox.Constructor(Vector3(4355.803f, 4253.603f, 70.03658f), painbox_continuous), owning_building_guid = 29) - LocalObject(1653, Painbox.Constructor(Vector3(4356.589f, 4236.933f, 90.20058f), painbox_door_radius), owning_building_guid = 29) - LocalObject(1671, Painbox.Constructor(Vector3(4342.017f, 4265.571f, 67.68088f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1672, Painbox.Constructor(Vector3(4357.973f, 4270.813f, 69.50758f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1673, Painbox.Constructor(Vector3(4359.309f, 4243.413f, 68.32257f), painbox_door_radius_continuous), owning_building_guid = 29) + LocalObject( + 1633, + Painbox.Constructor(Vector3(4367.316f, 4227.128f, 89.99548f), painbox), + owning_building_guid = 29 + ) + LocalObject( + 1643, + Painbox.Constructor(Vector3(4355.803f, 4253.603f, 70.03658f), painbox_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1653, + Painbox.Constructor(Vector3(4356.589f, 4236.933f, 90.20058f), painbox_door_radius), + owning_building_guid = 29 + ) + LocalObject( + 1671, + Painbox.Constructor(Vector3(4342.017f, 4265.571f, 67.68088f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1672, + Painbox.Constructor(Vector3(4357.973f, 4270.813f, 69.50758f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1673, + Painbox.Constructor(Vector3(4359.309f, 4243.413f, 68.32257f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) LocalObject(224, Generator.Constructor(Vector3(4368.752f, 4223.188f, 84.67268f)), owning_building_guid = 29) - LocalObject(214, Terminal.Constructor(Vector3(4363.236f, 4229.245f, 85.96667f), gen_control), owning_building_guid = 29) + LocalObject( + 214, + Terminal.Constructor(Vector3(4363.236f, 4229.245f, 85.96667f), gen_control), + owning_building_guid = 29 + ) } Building7() def Building7(): Unit = { // Name: Lugh Type: cryo_facility GUID: 32, MapID: 7 - LocalBuilding("Lugh", 32, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6148f, 5118f, 71.64068f), Vector3(0f, 0f, 165f), cryo_facility))) - LocalObject(165, CaptureTerminal.Constructor(Vector3(6159.792f, 5053.483f, 61.64068f), capture_terminal), owning_building_guid = 32) + LocalBuilding( + "Lugh", + 32, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6148f, 5118f, 71.64068f), + Vector3(0f, 0f, 165f), + cryo_facility + ) + ) + ) + LocalObject( + 165, + CaptureTerminal.Constructor(Vector3(6159.792f, 5053.483f, 61.64068f), capture_terminal), + owning_building_guid = 32 + ) LocalObject(444, Door.Constructor(Vector3(6107.22f, 5162.573f, 73.19168f)), owning_building_guid = 32) LocalObject(445, Door.Constructor(Vector3(6111.929f, 5180.146f, 81.15568f)), owning_building_guid = 32) LocalObject(446, Door.Constructor(Vector3(6140.902f, 5215.147f, 73.16168f)), owning_building_guid = 32) @@ -1069,15 +2994,60 @@ object Map05 { // Forseral LocalObject(2038, Door.Constructor(Vector3(6138.229f, 5099.587f, 63.49468f)), owning_building_guid = 32) LocalObject(2039, Door.Constructor(Vector3(6140.115f, 5106.627f, 63.49468f)), owning_building_guid = 32) LocalObject(2040, Door.Constructor(Vector3(6142.002f, 5113.672f, 63.49468f)), owning_building_guid = 32) - LocalObject(730, IFFLock.Constructor(Vector3(6140.055f, 5091.325f, 73.12268f), Vector3(0, 0, 195)), owning_building_guid = 32, door_guid = 692) - LocalObject(897, IFFLock.Constructor(Vector3(6124.972f, 5121.657f, 55.47668f), Vector3(0, 0, 105)), owning_building_guid = 32, door_guid = 661) - LocalObject(898, IFFLock.Constructor(Vector3(6131.506f, 5096.734f, 62.97668f), Vector3(0, 0, 195)), owning_building_guid = 32, door_guid = 662) - LocalObject(899, IFFLock.Constructor(Vector3(6135.1f, 5122.295f, 62.97668f), Vector3(0, 0, 15)), owning_building_guid = 32, door_guid = 664) - LocalObject(900, IFFLock.Constructor(Vector3(6139.587f, 5213.386f, 73.09268f), Vector3(0, 0, 285)), owning_building_guid = 32, door_guid = 446) - LocalObject(901, IFFLock.Constructor(Vector3(6145.088f, 5114.683f, 83.09268f), Vector3(0, 0, 195)), owning_building_guid = 32, door_guid = 447) - LocalObject(902, IFFLock.Constructor(Vector3(6152.39f, 5044.797f, 62.97668f), Vector3(0, 0, 285)), owning_building_guid = 32, door_guid = 669) - LocalObject(903, IFFLock.Constructor(Vector3(6156.963f, 5092.778f, 83.09268f), Vector3(0, 0, 285)), owning_building_guid = 32, door_guid = 450) - LocalObject(904, IFFLock.Constructor(Vector3(6162.625f, 5045.31f, 62.97668f), Vector3(0, 0, 105)), owning_building_guid = 32, door_guid = 674) + LocalObject( + 730, + IFFLock.Constructor(Vector3(6140.055f, 5091.325f, 73.12268f), Vector3(0, 0, 195)), + owning_building_guid = 32, + door_guid = 692 + ) + LocalObject( + 897, + IFFLock.Constructor(Vector3(6124.972f, 5121.657f, 55.47668f), Vector3(0, 0, 105)), + owning_building_guid = 32, + door_guid = 661 + ) + LocalObject( + 898, + IFFLock.Constructor(Vector3(6131.506f, 5096.734f, 62.97668f), Vector3(0, 0, 195)), + owning_building_guid = 32, + door_guid = 662 + ) + LocalObject( + 899, + IFFLock.Constructor(Vector3(6135.1f, 5122.295f, 62.97668f), Vector3(0, 0, 15)), + owning_building_guid = 32, + door_guid = 664 + ) + LocalObject( + 900, + IFFLock.Constructor(Vector3(6139.587f, 5213.386f, 73.09268f), Vector3(0, 0, 285)), + owning_building_guid = 32, + door_guid = 446 + ) + LocalObject( + 901, + IFFLock.Constructor(Vector3(6145.088f, 5114.683f, 83.09268f), Vector3(0, 0, 195)), + owning_building_guid = 32, + door_guid = 447 + ) + LocalObject( + 902, + IFFLock.Constructor(Vector3(6152.39f, 5044.797f, 62.97668f), Vector3(0, 0, 285)), + owning_building_guid = 32, + door_guid = 669 + ) + LocalObject( + 903, + IFFLock.Constructor(Vector3(6156.963f, 5092.778f, 83.09268f), Vector3(0, 0, 285)), + owning_building_guid = 32, + door_guid = 450 + ) + LocalObject( + 904, + IFFLock.Constructor(Vector3(6162.625f, 5045.31f, 62.97668f), Vector3(0, 0, 105)), + owning_building_guid = 32, + door_guid = 674 + ) LocalObject(1163, Locker.Constructor(Vector3(6105.416f, 5106.261f, 61.54868f)), owning_building_guid = 32) LocalObject(1164, Locker.Constructor(Vector3(6106.436f, 5105.987f, 61.54868f)), owning_building_guid = 32) LocalObject(1165, Locker.Constructor(Vector3(6107.455f, 5105.714f, 61.54868f)), owning_building_guid = 32) @@ -1107,88 +3077,326 @@ object Map05 { // Forseral LocalObject(1213, Locker.Constructor(Vector3(6132.604f, 5131.093f, 71.41168f)), owning_building_guid = 32) LocalObject(1214, Locker.Constructor(Vector3(6133.255f, 5133.524f, 71.64068f)), owning_building_guid = 32) LocalObject(1215, Locker.Constructor(Vector3(6133.523f, 5134.523f, 71.64068f)), owning_building_guid = 32) - LocalObject(182, Terminal.Constructor(Vector3(6116.353f, 5068.944f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(183, Terminal.Constructor(Vector3(6117.377f, 5067.171f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(184, Terminal.Constructor(Vector3(6118.249f, 5076.02f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(185, Terminal.Constructor(Vector3(6120.022f, 5077.043f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(186, Terminal.Constructor(Vector3(6129.644f, 5063.884f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(187, Terminal.Constructor(Vector3(6131.417f, 5064.908f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(188, Terminal.Constructor(Vector3(6132.29f, 5073.756f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(189, Terminal.Constructor(Vector3(6133.313f, 5071.983f, 61.63068f), cert_terminal), owning_building_guid = 32) - LocalObject(1438, Terminal.Constructor(Vector3(6126.118f, 5108.409f, 63.23068f), order_terminal), owning_building_guid = 32) - LocalObject(1439, Terminal.Constructor(Vector3(6127.099f, 5112.068f, 63.23068f), order_terminal), owning_building_guid = 32) - LocalObject(1440, Terminal.Constructor(Vector3(6128.064f, 5115.672f, 63.23068f), order_terminal), owning_building_guid = 32) - LocalObject(1441, Terminal.Constructor(Vector3(6155.221f, 5106.203f, 72.93568f), order_terminal), owning_building_guid = 32) - LocalObject(1972, Terminal.Constructor(Vector3(6132.008f, 5056.027f, 63.25368f), spawn_terminal), owning_building_guid = 32) - LocalObject(1973, Terminal.Constructor(Vector3(6138.586f, 5102.071f, 63.77468f), spawn_terminal), owning_building_guid = 32) - LocalObject(1974, Terminal.Constructor(Vector3(6140.476f, 5109.109f, 63.77468f), spawn_terminal), owning_building_guid = 32) - LocalObject(1975, Terminal.Constructor(Vector3(6142.359f, 5116.154f, 63.77468f), spawn_terminal), owning_building_guid = 32) - LocalObject(1976, Terminal.Constructor(Vector3(6149.69f, 5131.669f, 73.21968f), spawn_terminal), owning_building_guid = 32) - LocalObject(1977, Terminal.Constructor(Vector3(6178.188f, 5168.498f, 65.75368f), spawn_terminal), owning_building_guid = 32) - LocalObject(1978, Terminal.Constructor(Vector3(6186.791f, 5108.22f, 63.25368f), spawn_terminal), owning_building_guid = 32) - LocalObject(2112, Terminal.Constructor(Vector3(6128.008f, 5188.772f, 73.94568f), vehicle_terminal_combined), owning_building_guid = 32) - LocalObject(1322, VehicleSpawnPad.Constructor(Vector3(6141.206f, 5185.329f, 69.78768f), mb_pad_creation, Vector3(0, 0, 105)), owning_building_guid = 32, terminal_guid = 2112) + LocalObject( + 182, + Terminal.Constructor(Vector3(6116.353f, 5068.944f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 183, + Terminal.Constructor(Vector3(6117.377f, 5067.171f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 184, + Terminal.Constructor(Vector3(6118.249f, 5076.02f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 185, + Terminal.Constructor(Vector3(6120.022f, 5077.043f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 186, + Terminal.Constructor(Vector3(6129.644f, 5063.884f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(6131.417f, 5064.908f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(6132.29f, 5073.756f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(6133.313f, 5071.983f, 61.63068f), cert_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1438, + Terminal.Constructor(Vector3(6126.118f, 5108.409f, 63.23068f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1439, + Terminal.Constructor(Vector3(6127.099f, 5112.068f, 63.23068f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1440, + Terminal.Constructor(Vector3(6128.064f, 5115.672f, 63.23068f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1441, + Terminal.Constructor(Vector3(6155.221f, 5106.203f, 72.93568f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1972, + Terminal.Constructor(Vector3(6132.008f, 5056.027f, 63.25368f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1973, + Terminal.Constructor(Vector3(6138.586f, 5102.071f, 63.77468f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1974, + Terminal.Constructor(Vector3(6140.476f, 5109.109f, 63.77468f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1975, + Terminal.Constructor(Vector3(6142.359f, 5116.154f, 63.77468f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1976, + Terminal.Constructor(Vector3(6149.69f, 5131.669f, 73.21968f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1977, + Terminal.Constructor(Vector3(6178.188f, 5168.498f, 65.75368f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1978, + Terminal.Constructor(Vector3(6186.791f, 5108.22f, 63.25368f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2112, + Terminal.Constructor(Vector3(6128.008f, 5188.772f, 73.94568f), vehicle_terminal_combined), + owning_building_guid = 32 + ) + LocalObject( + 1322, + VehicleSpawnPad.Constructor(Vector3(6141.206f, 5185.329f, 69.78768f), mb_pad_creation, Vector3(0, 0, 105)), + owning_building_guid = 32, + terminal_guid = 2112 + ) LocalObject(1829, ResourceSilo.Constructor(Vector3(6193.052f, 5053.283f, 78.65768f)), owning_building_guid = 32) - LocalObject(1889, SpawnTube.Constructor(Vector3(6138.926f, 5100.49f, 61.64068f), Vector3(0, 0, 195)), owning_building_guid = 32) - LocalObject(1890, SpawnTube.Constructor(Vector3(6140.812f, 5107.53f, 61.64068f), Vector3(0, 0, 195)), owning_building_guid = 32) - LocalObject(1891, SpawnTube.Constructor(Vector3(6142.699f, 5114.572f, 61.64068f), Vector3(0, 0, 195)), owning_building_guid = 32) - LocalObject(117, ProximityTerminal.Constructor(Vector3(6147.924f, 5125.379f, 71.45068f), adv_med_terminal), owning_building_guid = 32) - LocalObject(1339, ProximityTerminal.Constructor(Vector3(6120.277f, 5121.337f, 61.64068f), medical_terminal), owning_building_guid = 32) - LocalObject(1593, ProximityTerminal.Constructor(Vector3(6135.01f, 5074.631f, 81.97268f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1594, Terminal.Constructor(Vector3(6135.01f, 5074.631f, 81.97268f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1596, ProximityTerminal.Constructor(Vector3(6148.505f, 5062.321f, 79.98268f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1597, Terminal.Constructor(Vector3(6148.505f, 5062.321f, 79.98268f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1599, ProximityTerminal.Constructor(Vector3(6167.657f, 5184.398f, 79.99268f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1600, Terminal.Constructor(Vector3(6167.657f, 5184.398f, 79.99268f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1602, ProximityTerminal.Constructor(Vector3(6181.531f, 5173.14f, 81.93368f), pad_landing_frame), owning_building_guid = 32) - LocalObject(1603, Terminal.Constructor(Vector3(6181.531f, 5173.14f, 81.93368f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(1812, ProximityTerminal.Constructor(Vector3(6093.155f, 5116.275f, 71.39068f), repair_silo), owning_building_guid = 32) - LocalObject(1813, Terminal.Constructor(Vector3(6093.155f, 5116.275f, 71.39068f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(1816, ProximityTerminal.Constructor(Vector3(6204.227f, 5190.773f, 71.39068f), repair_silo), owning_building_guid = 32) - LocalObject(1817, Terminal.Constructor(Vector3(6204.227f, 5190.773f, 71.39068f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(1302, FacilityTurret.Constructor(Vector3(6075.432f, 5097.59f, 80.04268f), manned_turret), owning_building_guid = 32) + LocalObject( + 1889, + SpawnTube.Constructor(Vector3(6138.926f, 5100.49f, 61.64068f), Vector3(0, 0, 195)), + owning_building_guid = 32 + ) + LocalObject( + 1890, + SpawnTube.Constructor(Vector3(6140.812f, 5107.53f, 61.64068f), Vector3(0, 0, 195)), + owning_building_guid = 32 + ) + LocalObject( + 1891, + SpawnTube.Constructor(Vector3(6142.699f, 5114.572f, 61.64068f), Vector3(0, 0, 195)), + owning_building_guid = 32 + ) + LocalObject( + 117, + ProximityTerminal.Constructor(Vector3(6147.924f, 5125.379f, 71.45068f), adv_med_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1339, + ProximityTerminal.Constructor(Vector3(6120.277f, 5121.337f, 61.64068f), medical_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1593, + ProximityTerminal.Constructor(Vector3(6135.01f, 5074.631f, 81.97268f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1594, + Terminal.Constructor(Vector3(6135.01f, 5074.631f, 81.97268f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1596, + ProximityTerminal.Constructor(Vector3(6148.505f, 5062.321f, 79.98268f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1597, + Terminal.Constructor(Vector3(6148.505f, 5062.321f, 79.98268f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1599, + ProximityTerminal.Constructor(Vector3(6167.657f, 5184.398f, 79.99268f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1600, + Terminal.Constructor(Vector3(6167.657f, 5184.398f, 79.99268f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1602, + ProximityTerminal.Constructor(Vector3(6181.531f, 5173.14f, 81.93368f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 1603, + Terminal.Constructor(Vector3(6181.531f, 5173.14f, 81.93368f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1812, + ProximityTerminal.Constructor(Vector3(6093.155f, 5116.275f, 71.39068f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 1813, + Terminal.Constructor(Vector3(6093.155f, 5116.275f, 71.39068f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1816, + ProximityTerminal.Constructor(Vector3(6204.227f, 5190.773f, 71.39068f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 1817, + Terminal.Constructor(Vector3(6204.227f, 5190.773f, 71.39068f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1302, + FacilityTurret.Constructor(Vector3(6075.432f, 5097.59f, 80.04268f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1302, 5042) - LocalObject(1303, FacilityTurret.Constructor(Vector3(6105.952f, 5044.783f, 80.04268f), manned_turret), owning_building_guid = 32) + LocalObject( + 1303, + FacilityTurret.Constructor(Vector3(6105.952f, 5044.783f, 80.04268f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1303, 5043) - LocalObject(1304, FacilityTurret.Constructor(Vector3(6111.551f, 5227.804f, 80.04268f), manned_turret), owning_building_guid = 32) + LocalObject( + 1304, + FacilityTurret.Constructor(Vector3(6111.551f, 5227.804f, 80.04268f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1304, 5044) - LocalObject(1305, FacilityTurret.Constructor(Vector3(6196.34f, 5021.736f, 80.04268f), manned_turret), owning_building_guid = 32) + LocalObject( + 1305, + FacilityTurret.Constructor(Vector3(6196.34f, 5021.736f, 80.04268f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1305, 5045) - LocalObject(1306, FacilityTurret.Constructor(Vector3(6242.167f, 5192.797f, 80.04268f), manned_turret), owning_building_guid = 32) + LocalObject( + 1306, + FacilityTurret.Constructor(Vector3(6242.167f, 5192.797f, 80.04268f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1306, 5046) - LocalObject(709, ImplantTerminalMech.Constructor(Vector3(6122.831f, 5062.913f, 61.11768f)), owning_building_guid = 32) - LocalObject(703, Terminal.Constructor(Vector3(6122.835f, 5062.931f, 61.11768f), implant_terminal_interface), owning_building_guid = 32) + LocalObject( + 709, + ImplantTerminalMech.Constructor(Vector3(6122.831f, 5062.913f, 61.11768f)), + owning_building_guid = 32 + ) + LocalObject( + 703, + Terminal.Constructor(Vector3(6122.835f, 5062.931f, 61.11768f), implant_terminal_interface), + owning_building_guid = 32 + ) TerminalToInterface(709, 703) - LocalObject(710, ImplantTerminalMech.Constructor(Vector3(6126.794f, 5077.749f, 61.11768f)), owning_building_guid = 32) - LocalObject(704, Terminal.Constructor(Vector3(6126.789f, 5077.731f, 61.11768f), implant_terminal_interface), owning_building_guid = 32) + LocalObject( + 710, + ImplantTerminalMech.Constructor(Vector3(6126.794f, 5077.749f, 61.11768f)), + owning_building_guid = 32 + ) + LocalObject( + 704, + Terminal.Constructor(Vector3(6126.789f, 5077.731f, 61.11768f), implant_terminal_interface), + owning_building_guid = 32 + ) TerminalToInterface(710, 704) - LocalObject(1638, Painbox.Constructor(Vector3(6147.687f, 5138.444f, 85.66948f), painbox), owning_building_guid = 32) - LocalObject(1648, Painbox.Constructor(Vector3(6131.754f, 5114.369f, 65.71058f), painbox_continuous), owning_building_guid = 32) - LocalObject(1658, Painbox.Constructor(Vector3(6145.307f, 5124.107f, 85.87458f), painbox_door_radius), owning_building_guid = 32) - LocalObject(1686, Painbox.Constructor(Vector3(6116.138f, 5106.815f, 65.18158f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(1687, Painbox.Constructor(Vector3(6129.226f, 5096.288f, 63.35488f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(1688, Painbox.Constructor(Vector3(6138.391f, 5122.859f, 63.99658f), painbox_door_radius_continuous), owning_building_guid = 32) + LocalObject( + 1638, + Painbox.Constructor(Vector3(6147.687f, 5138.444f, 85.66948f), painbox), + owning_building_guid = 32 + ) + LocalObject( + 1648, + Painbox.Constructor(Vector3(6131.754f, 5114.369f, 65.71058f), painbox_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1658, + Painbox.Constructor(Vector3(6145.307f, 5124.107f, 85.87458f), painbox_door_radius), + owning_building_guid = 32 + ) + LocalObject( + 1686, + Painbox.Constructor(Vector3(6116.138f, 5106.815f, 65.18158f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1687, + Painbox.Constructor(Vector3(6129.226f, 5096.288f, 63.35488f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1688, + Painbox.Constructor(Vector3(6138.391f, 5122.859f, 63.99658f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) LocalObject(229, Generator.Constructor(Vector3(6150.208f, 5141.794f, 80.34668f)), owning_building_guid = 32) - LocalObject(219, Terminal.Constructor(Vector3(6148.134f, 5133.869f, 81.64068f), gen_control), owning_building_guid = 32) + LocalObject( + 219, + Terminal.Constructor(Vector3(6148.134f, 5133.869f, 81.64068f), gen_control), + owning_building_guid = 32 + ) } Building21074() def Building21074(): Unit = { // Name: GW_Forseral_N Type: hst GUID: 36, MapID: 21074 - LocalBuilding("GW_Forseral_N", 36, 21074, FoundationBuilder(WarpGate.Structure(Vector3(4908.22f, 5684.55f, 39.16f), hst))) + LocalBuilding( + "GW_Forseral_N", + 36, + 21074, + FoundationBuilder(WarpGate.Structure(Vector3(4908.22f, 5684.55f, 39.16f), hst)) + ) } Building21078() def Building21078(): Unit = { // Name: GW_Forseral_S Type: hst GUID: 37, MapID: 21078 - LocalBuilding("GW_Forseral_S", 37, 21078, FoundationBuilder(WarpGate.Structure(Vector3(5364.4f, 2560.16f, 44.87f), hst))) + LocalBuilding( + "GW_Forseral_S", + 37, + 21078, + FoundationBuilder(WarpGate.Structure(Vector3(5364.4f, 2560.16f, 44.87f), hst)) + ) } Building11() def Building11(): Unit = { // Name: Anu Type: tech_plant GUID: 39, MapID: 11 - LocalBuilding("Anu", 39, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3360f, 2538f, 56.18457f), Vector3(0f, 0f, 47f), tech_plant))) - LocalObject(157, CaptureTerminal.Constructor(Vector3(3395.473f, 2511.394f, 71.28458f), capture_terminal), owning_building_guid = 39) + LocalBuilding( + "Anu", + 39, + 11, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(3360f, 2538f, 56.18457f), Vector3(0f, 0f, 47f), tech_plant) + ) + ) + LocalObject( + 157, + CaptureTerminal.Constructor(Vector3(3395.473f, 2511.394f, 71.28458f), capture_terminal), + owning_building_guid = 39 + ) LocalObject(261, Door.Constructor(Vector3(3295.273f, 2500.649f, 65.68958f)), owning_building_guid = 39) LocalObject(262, Door.Constructor(Vector3(3308.578f, 2488.242f, 57.72657f)), owning_building_guid = 39) LocalObject(263, Door.Constructor(Vector3(3349.206f, 2450.356f, 65.68958f)), owning_building_guid = 39) @@ -1227,16 +3435,66 @@ object Map05 { // Forseral LocalObject(1986, Door.Constructor(Vector3(3388.89f, 2528.387f, 50.63857f)), owning_building_guid = 39) LocalObject(1987, Door.Constructor(Vector3(3394.221f, 2523.416f, 50.63857f)), owning_building_guid = 39) LocalObject(1988, Door.Constructor(Vector3(3399.555f, 2518.442f, 50.63857f)), owning_building_guid = 39) - LocalObject(722, IFFLock.Constructor(Vector3(3424.965f, 2536.703f, 57.76458f), Vector3(0, 0, 133)), owning_building_guid = 39, door_guid = 684) - LocalObject(731, IFFLock.Constructor(Vector3(3299.874f, 2535.624f, 57.87257f), Vector3(0, 0, 313)), owning_building_guid = 39, door_guid = 459) - LocalObject(754, IFFLock.Constructor(Vector3(3382.375f, 2528.831f, 72.73058f), Vector3(0, 0, 313)), owning_building_guid = 39, door_guid = 267) - LocalObject(755, IFFLock.Constructor(Vector3(3384.767f, 2507.286f, 72.62057f), Vector3(0, 0, 313)), owning_building_guid = 39, door_guid = 494) - LocalObject(756, IFFLock.Constructor(Vector3(3389.528f, 2535.662f, 50.12057f), Vector3(0, 0, 313)), owning_building_guid = 39, door_guid = 497) - LocalObject(757, IFFLock.Constructor(Vector3(3392.559f, 2548.073f, 42.62057f), Vector3(0, 0, 133)), owning_building_guid = 39, door_guid = 496) - LocalObject(758, IFFLock.Constructor(Vector3(3402.715f, 2524.825f, 72.73058f), Vector3(0, 0, 133)), owning_building_guid = 39, door_guid = 268) - LocalObject(759, IFFLock.Constructor(Vector3(3406.797f, 2438.555f, 57.73657f), Vector3(0, 0, 223)), owning_building_guid = 39, door_guid = 269) - LocalObject(760, IFFLock.Constructor(Vector3(3410.409f, 2520.489f, 50.12057f), Vector3(0, 0, 133)), owning_building_guid = 39, door_guid = 500) - LocalObject(761, IFFLock.Constructor(Vector3(3414.512f, 2529.636f, 42.62057f), Vector3(0, 0, 223)), owning_building_guid = 39, door_guid = 501) + LocalObject( + 722, + IFFLock.Constructor(Vector3(3424.965f, 2536.703f, 57.76458f), Vector3(0, 0, 133)), + owning_building_guid = 39, + door_guid = 684 + ) + LocalObject( + 731, + IFFLock.Constructor(Vector3(3299.874f, 2535.624f, 57.87257f), Vector3(0, 0, 313)), + owning_building_guid = 39, + door_guid = 459 + ) + LocalObject( + 754, + IFFLock.Constructor(Vector3(3382.375f, 2528.831f, 72.73058f), Vector3(0, 0, 313)), + owning_building_guid = 39, + door_guid = 267 + ) + LocalObject( + 755, + IFFLock.Constructor(Vector3(3384.767f, 2507.286f, 72.62057f), Vector3(0, 0, 313)), + owning_building_guid = 39, + door_guid = 494 + ) + LocalObject( + 756, + IFFLock.Constructor(Vector3(3389.528f, 2535.662f, 50.12057f), Vector3(0, 0, 313)), + owning_building_guid = 39, + door_guid = 497 + ) + LocalObject( + 757, + IFFLock.Constructor(Vector3(3392.559f, 2548.073f, 42.62057f), Vector3(0, 0, 133)), + owning_building_guid = 39, + door_guid = 496 + ) + LocalObject( + 758, + IFFLock.Constructor(Vector3(3402.715f, 2524.825f, 72.73058f), Vector3(0, 0, 133)), + owning_building_guid = 39, + door_guid = 268 + ) + LocalObject( + 759, + IFFLock.Constructor(Vector3(3406.797f, 2438.555f, 57.73657f), Vector3(0, 0, 223)), + owning_building_guid = 39, + door_guid = 269 + ) + LocalObject( + 760, + IFFLock.Constructor(Vector3(3410.409f, 2520.489f, 50.12057f), Vector3(0, 0, 133)), + owning_building_guid = 39, + door_guid = 500 + ) + LocalObject( + 761, + IFFLock.Constructor(Vector3(3414.512f, 2529.636f, 42.62057f), Vector3(0, 0, 223)), + owning_building_guid = 39, + door_guid = 501 + ) LocalObject(937, Locker.Constructor(Vector3(3402.215f, 2545.388f, 41.28458f)), owning_building_guid = 39) LocalObject(938, Locker.Constructor(Vector3(3403.118f, 2546.357f, 41.28458f)), owning_building_guid = 39) LocalObject(939, Locker.Constructor(Vector3(3404.029f, 2547.334f, 41.28458f)), owning_building_guid = 39) @@ -1249,72 +3507,295 @@ object Map05 { // Forseral LocalObject(946, Locker.Constructor(Vector3(3410.763f, 2554.555f, 41.28458f)), owning_building_guid = 39) LocalObject(947, Locker.Constructor(Vector3(3411.185f, 2525.647f, 49.04557f)), owning_building_guid = 39) LocalObject(948, Locker.Constructor(Vector3(3411.969f, 2526.488f, 49.04557f)), owning_building_guid = 39) - LocalObject(118, Terminal.Constructor(Vector3(3381.368f, 2524.464f, 71.88757f), air_vehicle_terminal), owning_building_guid = 39) - LocalObject(1311, VehicleSpawnPad.Constructor(Vector3(3363.094f, 2535.211f, 68.76257f), mb_pad_creation, Vector3(0, 0, -47)), owning_building_guid = 39, terminal_guid = 118) - LocalObject(119, Terminal.Constructor(Vector3(3389.505f, 2533.19f, 71.88757f), air_vehicle_terminal), owning_building_guid = 39) - LocalObject(1312, VehicleSpawnPad.Constructor(Vector3(3377.428f, 2550.582f, 68.76257f), mb_pad_creation, Vector3(0, 0, -47)), owning_building_guid = 39, terminal_guid = 119) - LocalObject(1352, Terminal.Constructor(Vector3(3381.477f, 2522.154f, 62.61457f), order_terminal), owning_building_guid = 39) - LocalObject(1353, Terminal.Constructor(Vector3(3402.365f, 2534.938f, 50.37457f), order_terminal), owning_building_guid = 39) - LocalObject(1354, Terminal.Constructor(Vector3(3405.136f, 2532.354f, 50.37457f), order_terminal), owning_building_guid = 39) - LocalObject(1355, Terminal.Constructor(Vector3(3407.865f, 2529.81f, 50.37457f), order_terminal), owning_building_guid = 39) - LocalObject(1917, Terminal.Constructor(Vector3(3367.56f, 2550.821f, 68.20757f), spawn_terminal), owning_building_guid = 39) - LocalObject(1918, Terminal.Constructor(Vector3(3390.916f, 2526.905f, 50.91858f), spawn_terminal), owning_building_guid = 39) - LocalObject(1919, Terminal.Constructor(Vector3(3396.244f, 2521.932f, 50.91858f), spawn_terminal), owning_building_guid = 39) - LocalObject(1920, Terminal.Constructor(Vector3(3400.089f, 2511.476f, 42.84158f), spawn_terminal), owning_building_guid = 39) - LocalObject(1921, Terminal.Constructor(Vector3(3400.29f, 2551.351f, 62.86657f), spawn_terminal), owning_building_guid = 39) - LocalObject(1922, Terminal.Constructor(Vector3(3401.579f, 2516.962f, 50.91858f), spawn_terminal), owning_building_guid = 39) - LocalObject(1923, Terminal.Constructor(Vector3(3413.37f, 2455.336f, 50.34158f), spawn_terminal), owning_building_guid = 39) - LocalObject(2104, Terminal.Constructor(Vector3(3356.938f, 2475.219f, 41.99857f), ground_vehicle_terminal), owning_building_guid = 39) - LocalObject(1310, VehicleSpawnPad.Constructor(Vector3(3348.919f, 2482.626f, 33.72157f), mb_pad_creation, Vector3(0, 0, -47)), owning_building_guid = 39, terminal_guid = 2104) + LocalObject( + 118, + Terminal.Constructor(Vector3(3381.368f, 2524.464f, 71.88757f), air_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1311, + VehicleSpawnPad.Constructor(Vector3(3363.094f, 2535.211f, 68.76257f), mb_pad_creation, Vector3(0, 0, -47)), + owning_building_guid = 39, + terminal_guid = 118 + ) + LocalObject( + 119, + Terminal.Constructor(Vector3(3389.505f, 2533.19f, 71.88757f), air_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1312, + VehicleSpawnPad.Constructor(Vector3(3377.428f, 2550.582f, 68.76257f), mb_pad_creation, Vector3(0, 0, -47)), + owning_building_guid = 39, + terminal_guid = 119 + ) + LocalObject( + 1352, + Terminal.Constructor(Vector3(3381.477f, 2522.154f, 62.61457f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1353, + Terminal.Constructor(Vector3(3402.365f, 2534.938f, 50.37457f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1354, + Terminal.Constructor(Vector3(3405.136f, 2532.354f, 50.37457f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1355, + Terminal.Constructor(Vector3(3407.865f, 2529.81f, 50.37457f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1917, + Terminal.Constructor(Vector3(3367.56f, 2550.821f, 68.20757f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1918, + Terminal.Constructor(Vector3(3390.916f, 2526.905f, 50.91858f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1919, + Terminal.Constructor(Vector3(3396.244f, 2521.932f, 50.91858f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1920, + Terminal.Constructor(Vector3(3400.089f, 2511.476f, 42.84158f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1921, + Terminal.Constructor(Vector3(3400.29f, 2551.351f, 62.86657f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1922, + Terminal.Constructor(Vector3(3401.579f, 2516.962f, 50.91858f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1923, + Terminal.Constructor(Vector3(3413.37f, 2455.336f, 50.34158f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2104, + Terminal.Constructor(Vector3(3356.938f, 2475.219f, 41.99857f), ground_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1310, + VehicleSpawnPad.Constructor(Vector3(3348.919f, 2482.626f, 33.72157f), mb_pad_creation, Vector3(0, 0, -47)), + owning_building_guid = 39, + terminal_guid = 2104 + ) LocalObject(1821, ResourceSilo.Constructor(Vector3(3378.306f, 2605.365f, 63.19257f)), owning_building_guid = 39) - LocalObject(1837, SpawnTube.Constructor(Vector3(3389.361f, 2527.347f, 48.78457f), Vector3(0, 0, 313)), owning_building_guid = 39) - LocalObject(1838, SpawnTube.Constructor(Vector3(3394.691f, 2522.377f, 48.78457f), Vector3(0, 0, 313)), owning_building_guid = 39) - LocalObject(1839, SpawnTube.Constructor(Vector3(3400.023f, 2517.405f, 48.78457f), Vector3(0, 0, 313)), owning_building_guid = 39) - LocalObject(1325, ProximityTerminal.Constructor(Vector3(3389.219f, 2514.936f, 61.28157f), medical_terminal), owning_building_guid = 39) - LocalObject(1326, ProximityTerminal.Constructor(Vector3(3406.876f, 2549.588f, 41.28458f), medical_terminal), owning_building_guid = 39) - LocalObject(1503, ProximityTerminal.Constructor(Vector3(3335.997f, 2476.572f, 64.37958f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1504, Terminal.Constructor(Vector3(3335.997f, 2476.572f, 64.37958f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1506, ProximityTerminal.Constructor(Vector3(3337.997f, 2502.43f, 66.73457f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1507, Terminal.Constructor(Vector3(3337.997f, 2502.43f, 66.73457f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1509, ProximityTerminal.Constructor(Vector3(3413.588f, 2500.853f, 71.63158f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1510, Terminal.Constructor(Vector3(3413.588f, 2500.853f, 71.63158f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1512, ProximityTerminal.Constructor(Vector3(3425.507f, 2570.274f, 64.39258f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1513, Terminal.Constructor(Vector3(3425.507f, 2570.274f, 64.39258f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1515, ProximityTerminal.Constructor(Vector3(3433.098f, 2554.592f, 66.83658f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1516, Terminal.Constructor(Vector3(3433.098f, 2554.592f, 66.83658f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1518, ProximityTerminal.Constructor(Vector3(3436.926f, 2501.179f, 64.39258f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1519, Terminal.Constructor(Vector3(3436.926f, 2501.179f, 64.39258f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1748, ProximityTerminal.Constructor(Vector3(3329.759f, 2566.622f, 55.91307f), repair_silo), owning_building_guid = 39) - LocalObject(1749, Terminal.Constructor(Vector3(3329.759f, 2566.622f, 55.91307f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(1756, ProximityTerminal.Constructor(Vector3(3467.854f, 2517.6f, 55.93457f), repair_silo), owning_building_guid = 39) - LocalObject(1757, Terminal.Constructor(Vector3(3467.854f, 2517.6f, 55.93457f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(1234, FacilityTurret.Constructor(Vector3(3230.35f, 2543.917f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1837, + SpawnTube.Constructor(Vector3(3389.361f, 2527.347f, 48.78457f), Vector3(0, 0, 313)), + owning_building_guid = 39 + ) + LocalObject( + 1838, + SpawnTube.Constructor(Vector3(3394.691f, 2522.377f, 48.78457f), Vector3(0, 0, 313)), + owning_building_guid = 39 + ) + LocalObject( + 1839, + SpawnTube.Constructor(Vector3(3400.023f, 2517.405f, 48.78457f), Vector3(0, 0, 313)), + owning_building_guid = 39 + ) + LocalObject( + 1325, + ProximityTerminal.Constructor(Vector3(3389.219f, 2514.936f, 61.28157f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1326, + ProximityTerminal.Constructor(Vector3(3406.876f, 2549.588f, 41.28458f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1503, + ProximityTerminal.Constructor(Vector3(3335.997f, 2476.572f, 64.37958f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1504, + Terminal.Constructor(Vector3(3335.997f, 2476.572f, 64.37958f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1506, + ProximityTerminal.Constructor(Vector3(3337.997f, 2502.43f, 66.73457f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1507, + Terminal.Constructor(Vector3(3337.997f, 2502.43f, 66.73457f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1509, + ProximityTerminal.Constructor(Vector3(3413.588f, 2500.853f, 71.63158f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1510, + Terminal.Constructor(Vector3(3413.588f, 2500.853f, 71.63158f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1512, + ProximityTerminal.Constructor(Vector3(3425.507f, 2570.274f, 64.39258f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1513, + Terminal.Constructor(Vector3(3425.507f, 2570.274f, 64.39258f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1515, + ProximityTerminal.Constructor(Vector3(3433.098f, 2554.592f, 66.83658f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1516, + Terminal.Constructor(Vector3(3433.098f, 2554.592f, 66.83658f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1518, + ProximityTerminal.Constructor(Vector3(3436.926f, 2501.179f, 64.39258f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1519, + Terminal.Constructor(Vector3(3436.926f, 2501.179f, 64.39258f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1748, + ProximityTerminal.Constructor(Vector3(3329.759f, 2566.622f, 55.91307f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 1749, + Terminal.Constructor(Vector3(3329.759f, 2566.622f, 55.91307f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1756, + ProximityTerminal.Constructor(Vector3(3467.854f, 2517.6f, 55.93457f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 1757, + Terminal.Constructor(Vector3(3467.854f, 2517.6f, 55.93457f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1234, + FacilityTurret.Constructor(Vector3(3230.35f, 2543.917f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1234, 5047) - LocalObject(1235, FacilityTurret.Constructor(Vector3(3291.522f, 2609.515f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1235, + FacilityTurret.Constructor(Vector3(3291.522f, 2609.515f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1235, 5048) - LocalObject(1236, FacilityTurret.Constructor(Vector3(3379.053f, 2412.779f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1236, + FacilityTurret.Constructor(Vector3(3379.053f, 2412.779f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1236, 5049) - LocalObject(1237, FacilityTurret.Constructor(Vector3(3390.674f, 2627.197f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1237, + FacilityTurret.Constructor(Vector3(3390.674f, 2627.197f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1237, 5050) - LocalObject(1239, FacilityTurret.Constructor(Vector3(3449.315f, 2583.079f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1239, + FacilityTurret.Constructor(Vector3(3449.315f, 2583.079f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1239, 5051) - LocalObject(1241, FacilityTurret.Constructor(Vector3(3491.412f, 2533.257f, 64.68357f), manned_turret), owning_building_guid = 39) + LocalObject( + 1241, + FacilityTurret.Constructor(Vector3(3491.412f, 2533.257f, 64.68357f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1241, 5052) - LocalObject(1630, Painbox.Constructor(Vector3(3380.327f, 2554.236f, 44.75787f), painbox), owning_building_guid = 39) - LocalObject(1640, Painbox.Constructor(Vector3(3401.112f, 2528.146f, 53.05447f), painbox_continuous), owning_building_guid = 39) - LocalObject(1650, Painbox.Constructor(Vector3(3392.442f, 2545.622f, 44.44397f), painbox_door_radius), owning_building_guid = 39) - LocalObject(1662, Painbox.Constructor(Vector3(3389.804f, 2537.364f, 51.46077f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(1663, Painbox.Constructor(Vector3(3405.831f, 2543.995f, 52.36687f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(1664, Painbox.Constructor(Vector3(3409.346f, 2518.011f, 50.91248f), painbox_door_radius_continuous), owning_building_guid = 39) + LocalObject( + 1630, + Painbox.Constructor(Vector3(3380.327f, 2554.236f, 44.75787f), painbox), + owning_building_guid = 39 + ) + LocalObject( + 1640, + Painbox.Constructor(Vector3(3401.112f, 2528.146f, 53.05447f), painbox_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1650, + Painbox.Constructor(Vector3(3392.442f, 2545.622f, 44.44397f), painbox_door_radius), + owning_building_guid = 39 + ) + LocalObject( + 1662, + Painbox.Constructor(Vector3(3389.804f, 2537.364f, 51.46077f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1663, + Painbox.Constructor(Vector3(3405.831f, 2543.995f, 52.36687f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1664, + Painbox.Constructor(Vector3(3409.346f, 2518.011f, 50.91248f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) LocalObject(221, Generator.Constructor(Vector3(3379.404f, 2558.156f, 39.99057f)), owning_building_guid = 39) - LocalObject(211, Terminal.Constructor(Vector3(3385.428f, 2552.604f, 41.28458f), gen_control), owning_building_guid = 39) + LocalObject( + 211, + Terminal.Constructor(Vector3(3385.428f, 2552.604f, 41.28458f), gen_control), + owning_building_guid = 39 + ) } Building8() def Building8(): Unit = { // Name: Gwydion Type: tech_plant GUID: 42, MapID: 8 - LocalBuilding("Gwydion", 42, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5548f, 3858f, 60.98056f), Vector3(0f, 0f, 316f), tech_plant))) - LocalObject(163, CaptureTerminal.Constructor(Vector3(5520.778f, 3822.997f, 76.08056f), capture_terminal), owning_building_guid = 42) + LocalBuilding( + "Gwydion", + 42, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5548f, 3858f, 60.98056f), + Vector3(0f, 0f, 316f), + tech_plant + ) + ) + ) + LocalObject( + 163, + CaptureTerminal.Constructor(Vector3(5520.778f, 3822.997f, 76.08056f), capture_terminal), + owning_building_guid = 42 + ) LocalObject(401, Door.Constructor(Vector3(5447.92f, 3857.235f, 62.52256f)), owning_building_guid = 42) LocalObject(402, Door.Constructor(Vector3(5449.761f, 3813.852f, 62.60156f)), owning_building_guid = 42) LocalObject(403, Door.Constructor(Vector3(5460.558f, 3870.322f, 70.48556f)), owning_building_guid = 42) @@ -1353,16 +3834,66 @@ object Map05 { // Forseral LocalObject(2026, Door.Constructor(Vector3(5527.755f, 3818.792f, 55.43456f)), owning_building_guid = 42) LocalObject(2027, Door.Constructor(Vector3(5532.821f, 3824.038f, 55.43456f)), owning_building_guid = 42) LocalObject(2028, Door.Constructor(Vector3(5537.885f, 3829.282f, 55.43456f)), owning_building_guid = 42) - LocalObject(728, IFFLock.Constructor(Vector3(5545.569f, 3793.068f, 62.56056f), Vector3(0, 0, 224)), owning_building_guid = 42, door_guid = 690) - LocalObject(732, IFFLock.Constructor(Vector3(5546.673f, 3918.159f, 62.66856f), Vector3(0, 0, 404)), owning_building_guid = 42, door_guid = 460) - LocalObject(864, IFFLock.Constructor(Vector3(5447.754f, 3812.946f, 62.53256f), Vector3(0, 0, 314)), owning_building_guid = 42, door_guid = 402) - LocalObject(865, IFFLock.Constructor(Vector3(5516.858f, 3833.773f, 77.41656f), Vector3(0, 0, 44)), owning_building_guid = 42, door_guid = 625) - LocalObject(866, IFFLock.Constructor(Vector3(5529.611f, 3807.904f, 54.91656f), Vector3(0, 0, 224)), owning_building_guid = 42, door_guid = 631) - LocalObject(867, IFFLock.Constructor(Vector3(5534.082f, 3815.521f, 77.52656f), Vector3(0, 0, 224)), owning_building_guid = 42, door_guid = 408) - LocalObject(868, IFFLock.Constructor(Vector3(5538.442f, 3835.789f, 77.52656f), Vector3(0, 0, 44)), owning_building_guid = 42, door_guid = 409) - LocalObject(869, IFFLock.Constructor(Vector3(5538.686f, 3803.642f, 47.41656f), Vector3(0, 0, 314)), owning_building_guid = 42, door_guid = 632) - LocalObject(870, IFFLock.Constructor(Vector3(5545.147f, 3828.517f, 54.91656f), Vector3(0, 0, 44)), owning_building_guid = 42, door_guid = 633) - LocalObject(871, IFFLock.Constructor(Vector3(5557.503f, 3825.27f, 47.41656f), Vector3(0, 0, 224)), owning_building_guid = 42, door_guid = 635) + LocalObject( + 728, + IFFLock.Constructor(Vector3(5545.569f, 3793.068f, 62.56056f), Vector3(0, 0, 224)), + owning_building_guid = 42, + door_guid = 690 + ) + LocalObject( + 732, + IFFLock.Constructor(Vector3(5546.673f, 3918.159f, 62.66856f), Vector3(0, 0, 404)), + owning_building_guid = 42, + door_guid = 460 + ) + LocalObject( + 864, + IFFLock.Constructor(Vector3(5447.754f, 3812.946f, 62.53256f), Vector3(0, 0, 314)), + owning_building_guid = 42, + door_guid = 402 + ) + LocalObject( + 865, + IFFLock.Constructor(Vector3(5516.858f, 3833.773f, 77.41656f), Vector3(0, 0, 44)), + owning_building_guid = 42, + door_guid = 625 + ) + LocalObject( + 866, + IFFLock.Constructor(Vector3(5529.611f, 3807.904f, 54.91656f), Vector3(0, 0, 224)), + owning_building_guid = 42, + door_guid = 631 + ) + LocalObject( + 867, + IFFLock.Constructor(Vector3(5534.082f, 3815.521f, 77.52656f), Vector3(0, 0, 224)), + owning_building_guid = 42, + door_guid = 408 + ) + LocalObject( + 868, + IFFLock.Constructor(Vector3(5538.442f, 3835.789f, 77.52656f), Vector3(0, 0, 44)), + owning_building_guid = 42, + door_guid = 409 + ) + LocalObject( + 869, + IFFLock.Constructor(Vector3(5538.686f, 3803.642f, 47.41656f), Vector3(0, 0, 314)), + owning_building_guid = 42, + door_guid = 632 + ) + LocalObject( + 870, + IFFLock.Constructor(Vector3(5545.147f, 3828.517f, 54.91656f), Vector3(0, 0, 44)), + owning_building_guid = 42, + door_guid = 633 + ) + LocalObject( + 871, + IFFLock.Constructor(Vector3(5557.503f, 3825.27f, 47.41656f), Vector3(0, 0, 224)), + owning_building_guid = 42, + door_guid = 635 + ) LocalObject(1115, Locker.Constructor(Vector3(5533.093f, 3808.644f, 53.84156f)), owning_building_guid = 42) LocalObject(1116, Locker.Constructor(Vector3(5533.931f, 3807.835f, 53.84156f)), owning_building_guid = 42) LocalObject(1117, Locker.Constructor(Vector3(5534.756f, 3807.038f, 53.84156f)), owning_building_guid = 42) @@ -1375,82 +3906,320 @@ object Map05 { // Forseral LocalObject(1124, Locker.Constructor(Vector3(5561.744f, 3808.813f, 46.08056f)), owning_building_guid = 42) LocalObject(1125, Locker.Constructor(Vector3(5562.705f, 3807.885f, 46.08056f)), owning_building_guid = 42) LocalObject(1126, Locker.Constructor(Vector3(5563.667f, 3806.956f, 46.08056f)), owning_building_guid = 42) - LocalObject(120, Terminal.Constructor(Vector3(5534.093f, 3836.872f, 76.68356f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1319, VehicleSpawnPad.Constructor(Vector3(5545.157f, 3854.955f, 73.55856f), mb_pad_creation, Vector3(0, 0, 44)), owning_building_guid = 42, terminal_guid = 120) - LocalObject(121, Terminal.Constructor(Vector3(5542.676f, 3828.583f, 76.68356f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1320, VehicleSpawnPad.Constructor(Vector3(5560.276f, 3840.355f, 73.55856f), mb_pad_creation, Vector3(0, 0, 44)), owning_building_guid = 42, terminal_guid = 121) - LocalObject(1418, Terminal.Constructor(Vector3(5531.782f, 3836.803f, 67.41056f), order_terminal), owning_building_guid = 42) - LocalObject(1419, Terminal.Constructor(Vector3(5538.976f, 3810.285f, 55.17056f), order_terminal), owning_building_guid = 42) - LocalObject(1420, Terminal.Constructor(Vector3(5541.567f, 3812.969f, 55.17056f), order_terminal), owning_building_guid = 42) - LocalObject(1421, Terminal.Constructor(Vector3(5544.2f, 3815.695f, 55.17056f), order_terminal), owning_building_guid = 42) - LocalObject(1959, Terminal.Constructor(Vector3(5464.417f, 3806.081f, 55.13756f), spawn_terminal), owning_building_guid = 42) - LocalObject(1960, Terminal.Constructor(Vector3(5520.78f, 3818.38f, 47.63756f), spawn_terminal), owning_building_guid = 42) - LocalObject(1961, Terminal.Constructor(Vector3(5526.24f, 3816.794f, 55.71456f), spawn_terminal), owning_building_guid = 42) - LocalObject(1962, Terminal.Constructor(Vector3(5531.302f, 3822.042f, 55.71456f), spawn_terminal), owning_building_guid = 42) - LocalObject(1963, Terminal.Constructor(Vector3(5536.367f, 3827.283f, 55.71456f), spawn_terminal), owning_building_guid = 42) - LocalObject(1964, Terminal.Constructor(Vector3(5560.646f, 3817.483f, 67.66256f), spawn_terminal), owning_building_guid = 42) - LocalObject(1965, Terminal.Constructor(Vector3(5560.687f, 3850.218f, 73.00356f), spawn_terminal), owning_building_guid = 42) - LocalObject(2110, Terminal.Constructor(Vector3(5485.282f, 3862.158f, 46.79456f), ground_vehicle_terminal), owning_building_guid = 42) - LocalObject(1318, VehicleSpawnPad.Constructor(Vector3(5492.828f, 3870.045f, 38.51756f), mb_pad_creation, Vector3(0, 0, 44)), owning_building_guid = 42, terminal_guid = 2110) + LocalObject( + 120, + Terminal.Constructor(Vector3(5534.093f, 3836.872f, 76.68356f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1319, + VehicleSpawnPad.Constructor(Vector3(5545.157f, 3854.955f, 73.55856f), mb_pad_creation, Vector3(0, 0, 44)), + owning_building_guid = 42, + terminal_guid = 120 + ) + LocalObject( + 121, + Terminal.Constructor(Vector3(5542.676f, 3828.583f, 76.68356f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1320, + VehicleSpawnPad.Constructor(Vector3(5560.276f, 3840.355f, 73.55856f), mb_pad_creation, Vector3(0, 0, 44)), + owning_building_guid = 42, + terminal_guid = 121 + ) + LocalObject( + 1418, + Terminal.Constructor(Vector3(5531.782f, 3836.803f, 67.41056f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1419, + Terminal.Constructor(Vector3(5538.976f, 3810.285f, 55.17056f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1420, + Terminal.Constructor(Vector3(5541.567f, 3812.969f, 55.17056f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1421, + Terminal.Constructor(Vector3(5544.2f, 3815.695f, 55.17056f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1959, + Terminal.Constructor(Vector3(5464.417f, 3806.081f, 55.13756f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1960, + Terminal.Constructor(Vector3(5520.78f, 3818.38f, 47.63756f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1961, + Terminal.Constructor(Vector3(5526.24f, 3816.794f, 55.71456f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1962, + Terminal.Constructor(Vector3(5531.302f, 3822.042f, 55.71456f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1963, + Terminal.Constructor(Vector3(5536.367f, 3827.283f, 55.71456f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1964, + Terminal.Constructor(Vector3(5560.646f, 3817.483f, 67.66256f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1965, + Terminal.Constructor(Vector3(5560.687f, 3850.218f, 73.00356f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2110, + Terminal.Constructor(Vector3(5485.282f, 3862.158f, 46.79456f), ground_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1318, + VehicleSpawnPad.Constructor(Vector3(5492.828f, 3870.045f, 38.51756f), mb_pad_creation, Vector3(0, 0, 44)), + owning_building_guid = 42, + terminal_guid = 2110 + ) LocalObject(1827, ResourceSilo.Constructor(Vector3(5615.035f, 3838.521f, 67.98856f)), owning_building_guid = 42) - LocalObject(1877, SpawnTube.Constructor(Vector3(5526.709f, 3818.343f, 53.58056f), Vector3(0, 0, 44)), owning_building_guid = 42) - LocalObject(1878, SpawnTube.Constructor(Vector3(5531.774f, 3823.587f, 53.58056f), Vector3(0, 0, 44)), owning_building_guid = 42) - LocalObject(1879, SpawnTube.Constructor(Vector3(5536.836f, 3828.83f, 53.58056f), Vector3(0, 0, 44)), owning_building_guid = 42) - LocalObject(1335, ProximityTerminal.Constructor(Vector3(5524.429f, 3829.188f, 66.07756f), medical_terminal), owning_building_guid = 42) - LocalObject(1336, ProximityTerminal.Constructor(Vector3(5558.768f, 3810.929f, 46.08056f), medical_terminal), owning_building_guid = 42) - LocalObject(1572, ProximityTerminal.Constructor(Vector3(5487f, 3883.072f, 69.17556f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1573, Terminal.Constructor(Vector3(5487f, 3883.072f, 69.17556f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1575, ProximityTerminal.Constructor(Vector3(5509.842f, 3781.729f, 69.18856f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1576, Terminal.Constructor(Vector3(5509.842f, 3781.729f, 69.18856f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1578, ProximityTerminal.Constructor(Vector3(5509.923f, 3805.069f, 76.42756f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1579, Terminal.Constructor(Vector3(5509.923f, 3805.069f, 76.42756f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1581, ProximityTerminal.Constructor(Vector3(5512.819f, 3880.62f, 71.53056f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1582, Terminal.Constructor(Vector3(5512.819f, 3880.62f, 71.53056f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1584, ProximityTerminal.Constructor(Vector3(5563.313f, 3784.624f, 71.63256f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1585, Terminal.Constructor(Vector3(5563.313f, 3784.624f, 71.63256f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1587, ProximityTerminal.Constructor(Vector3(5579.126f, 3791.939f, 69.18856f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1588, Terminal.Constructor(Vector3(5579.126f, 3791.939f, 69.18856f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1796, ProximityTerminal.Constructor(Vector3(5525.721f, 3750.518f, 60.73056f), repair_silo), owning_building_guid = 42) - LocalObject(1797, Terminal.Constructor(Vector3(5525.721f, 3750.518f, 60.73056f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(1800, ProximityTerminal.Constructor(Vector3(5577.145f, 3887.737f, 60.70906f), repair_silo), owning_building_guid = 42) - LocalObject(1801, Terminal.Constructor(Vector3(5577.145f, 3887.737f, 60.70906f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(1285, FacilityTurret.Constructor(Vector3(5422.465f, 3841.135f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1877, + SpawnTube.Constructor(Vector3(5526.709f, 3818.343f, 53.58056f), Vector3(0, 0, 44)), + owning_building_guid = 42 + ) + LocalObject( + 1878, + SpawnTube.Constructor(Vector3(5531.774f, 3823.587f, 53.58056f), Vector3(0, 0, 44)), + owning_building_guid = 42 + ) + LocalObject( + 1879, + SpawnTube.Constructor(Vector3(5536.836f, 3828.83f, 53.58056f), Vector3(0, 0, 44)), + owning_building_guid = 42 + ) + LocalObject( + 1335, + ProximityTerminal.Constructor(Vector3(5524.429f, 3829.188f, 66.07756f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1336, + ProximityTerminal.Constructor(Vector3(5558.768f, 3810.929f, 46.08056f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1572, + ProximityTerminal.Constructor(Vector3(5487f, 3883.072f, 69.17556f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1573, + Terminal.Constructor(Vector3(5487f, 3883.072f, 69.17556f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1575, + ProximityTerminal.Constructor(Vector3(5509.842f, 3781.729f, 69.18856f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1576, + Terminal.Constructor(Vector3(5509.842f, 3781.729f, 69.18856f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1578, + ProximityTerminal.Constructor(Vector3(5509.923f, 3805.069f, 76.42756f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1579, + Terminal.Constructor(Vector3(5509.923f, 3805.069f, 76.42756f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1581, + ProximityTerminal.Constructor(Vector3(5512.819f, 3880.62f, 71.53056f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1582, + Terminal.Constructor(Vector3(5512.819f, 3880.62f, 71.53056f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1584, + ProximityTerminal.Constructor(Vector3(5563.313f, 3784.624f, 71.63256f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1585, + Terminal.Constructor(Vector3(5563.313f, 3784.624f, 71.63256f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1587, + ProximityTerminal.Constructor(Vector3(5579.126f, 3791.939f, 69.18856f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1588, + Terminal.Constructor(Vector3(5579.126f, 3791.939f, 69.18856f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1796, + ProximityTerminal.Constructor(Vector3(5525.721f, 3750.518f, 60.73056f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 1797, + Terminal.Constructor(Vector3(5525.721f, 3750.518f, 60.73056f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1800, + ProximityTerminal.Constructor(Vector3(5577.145f, 3887.737f, 60.70906f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 1801, + Terminal.Constructor(Vector3(5577.145f, 3887.737f, 60.70906f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1285, + FacilityTurret.Constructor(Vector3(5422.465f, 3841.135f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1285, 5053) - LocalObject(1287, FacilityTurret.Constructor(Vector3(5540.964f, 3726.691f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1287, + FacilityTurret.Constructor(Vector3(5540.964f, 3726.691f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1287, 5054) - LocalObject(1288, FacilityTurret.Constructor(Vector3(5556.178f, 3987.527f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1288, + FacilityTurret.Constructor(Vector3(5556.178f, 3987.527f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1288, 5055) - LocalObject(1289, FacilityTurret.Constructor(Vector3(5591.513f, 3767.912f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1289, + FacilityTurret.Constructor(Vector3(5591.513f, 3767.912f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1289, 5056) - LocalObject(1290, FacilityTurret.Constructor(Vector3(5620.7f, 3925.219f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1290, + FacilityTurret.Constructor(Vector3(5620.7f, 3925.219f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1290, 5057) - LocalObject(1291, FacilityTurret.Constructor(Vector3(5636.647f, 3825.774f, 69.47956f), manned_turret), owning_building_guid = 42) + LocalObject( + 1291, + FacilityTurret.Constructor(Vector3(5636.647f, 3825.774f, 69.47956f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1291, 5058) - LocalObject(1636, Painbox.Constructor(Vector3(5563.878f, 3837.393f, 49.55386f), painbox), owning_building_guid = 42) - LocalObject(1646, Painbox.Constructor(Vector3(5537.431f, 3817.066f, 57.85046f), painbox_continuous), owning_building_guid = 42) - LocalObject(1656, Painbox.Constructor(Vector3(5555.054f, 3825.43f, 49.23996f), painbox_door_radius), owning_building_guid = 42) - LocalObject(1680, Painbox.Constructor(Vector3(5527.153f, 3809.01f, 55.70846f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1681, Painbox.Constructor(Vector3(5546.843f, 3828.212f, 56.25676f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1682, Painbox.Constructor(Vector3(5553.194f, 3812.071f, 57.16286f), painbox_door_radius_continuous), owning_building_guid = 42) + LocalObject( + 1636, + Painbox.Constructor(Vector3(5563.878f, 3837.393f, 49.55386f), painbox), + owning_building_guid = 42 + ) + LocalObject( + 1646, + Painbox.Constructor(Vector3(5537.431f, 3817.066f, 57.85046f), painbox_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1656, + Painbox.Constructor(Vector3(5555.054f, 3825.43f, 49.23996f), painbox_door_radius), + owning_building_guid = 42 + ) + LocalObject( + 1680, + Painbox.Constructor(Vector3(5527.153f, 3809.01f, 55.70846f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1681, + Painbox.Constructor(Vector3(5546.843f, 3828.212f, 56.25676f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1682, + Painbox.Constructor(Vector3(5553.194f, 3812.071f, 57.16286f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) LocalObject(227, Generator.Constructor(Vector3(5567.814f, 3838.247f, 44.78656f)), owning_building_guid = 42) - LocalObject(217, Terminal.Constructor(Vector3(5562.158f, 3832.321f, 46.08056f), gen_control), owning_building_guid = 42) + LocalObject( + 217, + Terminal.Constructor(Vector3(5562.158f, 3832.321f, 46.08056f), gen_control), + owning_building_guid = 42 + ) } Building14() def Building14(): Unit = { // Name: S_Solsar_Warpgate_Tower Type: tower_a GUID: 45, MapID: 14 - LocalBuilding("S_Solsar_Warpgate_Tower", 45, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1598f, 3414f, 49.07939f), Vector3(0f, 0f, 335f), tower_a))) - LocalObject(1894, CaptureTerminal.Constructor(Vector3(1612.989f, 3406.897f, 59.07839f), secondary_capture), owning_building_guid = 45) + LocalBuilding( + "S_Solsar_Warpgate_Tower", + 45, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1598f, 3414f, 49.07939f), Vector3(0f, 0f, 335f), tower_a) + ) + ) + LocalObject( + 1894, + CaptureTerminal.Constructor(Vector3(1612.989f, 3406.897f, 59.07839f), secondary_capture), + owning_building_guid = 45 + ) LocalObject(230, Door.Constructor(Vector3(1605.495f, 3401.678f, 50.60039f)), owning_building_guid = 45) LocalObject(231, Door.Constructor(Vector3(1605.495f, 3401.678f, 70.5994f)), owning_building_guid = 45) LocalObject(232, Door.Constructor(Vector3(1612.257f, 3416.179f, 50.60039f)), owning_building_guid = 45) LocalObject(233, Door.Constructor(Vector3(1612.257f, 3416.179f, 70.5994f)), owning_building_guid = 45) LocalObject(1979, Door.Constructor(Vector3(1603.366f, 3399.133f, 40.41539f)), owning_building_guid = 45) LocalObject(1980, Door.Constructor(Vector3(1610.301f, 3414.006f, 40.41539f)), owning_building_guid = 45) - LocalObject(733, IFFLock.Constructor(Vector3(1607.007f, 3400.078f, 50.54039f), Vector3(0, 0, 205)), owning_building_guid = 45, door_guid = 230) - LocalObject(734, IFFLock.Constructor(Vector3(1607.007f, 3400.078f, 70.54039f), Vector3(0, 0, 205)), owning_building_guid = 45, door_guid = 231) - LocalObject(735, IFFLock.Constructor(Vector3(1610.748f, 3417.778f, 50.54039f), Vector3(0, 0, 25)), owning_building_guid = 45, door_guid = 232) - LocalObject(736, IFFLock.Constructor(Vector3(1610.748f, 3417.778f, 70.54039f), Vector3(0, 0, 25)), owning_building_guid = 45, door_guid = 233) + LocalObject( + 733, + IFFLock.Constructor(Vector3(1607.007f, 3400.078f, 50.54039f), Vector3(0, 0, 205)), + owning_building_guid = 45, + door_guid = 230 + ) + LocalObject( + 734, + IFFLock.Constructor(Vector3(1607.007f, 3400.078f, 70.54039f), Vector3(0, 0, 205)), + owning_building_guid = 45, + door_guid = 231 + ) + LocalObject( + 735, + IFFLock.Constructor(Vector3(1610.748f, 3417.778f, 50.54039f), Vector3(0, 0, 25)), + owning_building_guid = 45, + door_guid = 232 + ) + LocalObject( + 736, + IFFLock.Constructor(Vector3(1610.748f, 3417.778f, 70.54039f), Vector3(0, 0, 25)), + owning_building_guid = 45, + door_guid = 233 + ) LocalObject(909, Locker.Constructor(Vector3(1605.889f, 3393.73f, 39.07339f)), owning_building_guid = 45) LocalObject(910, Locker.Constructor(Vector3(1607.1f, 3393.165f, 39.07339f)), owning_building_guid = 45) LocalObject(911, Locker.Constructor(Vector3(1609.536f, 3392.029f, 39.07339f)), owning_building_guid = 45) @@ -1459,35 +4228,106 @@ object Map05 { // Forseral LocalObject(914, Locker.Constructor(Vector3(1616.376f, 3412.973f, 39.07339f)), owning_building_guid = 45) LocalObject(915, Locker.Constructor(Vector3(1618.78f, 3411.852f, 39.07339f)), owning_building_guid = 45) LocalObject(916, Locker.Constructor(Vector3(1620.051f, 3411.259f, 39.07339f)), owning_building_guid = 45) - LocalObject(1340, Terminal.Constructor(Vector3(1613.264f, 3395.991f, 40.41139f), order_terminal), owning_building_guid = 45) - LocalObject(1341, Terminal.Constructor(Vector3(1615.683f, 3401.178f, 40.41139f), order_terminal), owning_building_guid = 45) - LocalObject(1342, Terminal.Constructor(Vector3(1617.957f, 3406.055f, 40.41139f), order_terminal), owning_building_guid = 45) - LocalObject(1830, SpawnTube.Constructor(Vector3(1602.522f, 3398.366f, 38.56139f), respawn_tube_tower, Vector3(0, 0, 25)), owning_building_guid = 45) - LocalObject(1831, SpawnTube.Constructor(Vector3(1609.458f, 3413.239f, 38.56139f), respawn_tube_tower, Vector3(0, 0, 25)), owning_building_guid = 45) - LocalObject(1226, FacilityTurret.Constructor(Vector3(1581.139f, 3407.844f, 68.02139f), manned_turret), owning_building_guid = 45) + LocalObject( + 1340, + Terminal.Constructor(Vector3(1613.264f, 3395.991f, 40.41139f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1341, + Terminal.Constructor(Vector3(1615.683f, 3401.178f, 40.41139f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1342, + Terminal.Constructor(Vector3(1617.957f, 3406.055f, 40.41139f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1830, + SpawnTube.Constructor(Vector3(1602.522f, 3398.366f, 38.56139f), respawn_tube_tower, Vector3(0, 0, 25)), + owning_building_guid = 45 + ) + LocalObject( + 1831, + SpawnTube.Constructor(Vector3(1609.458f, 3413.239f, 38.56139f), respawn_tube_tower, Vector3(0, 0, 25)), + owning_building_guid = 45 + ) + LocalObject( + 1226, + FacilityTurret.Constructor(Vector3(1581.139f, 3407.844f, 68.02139f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1226, 5059) - LocalObject(1227, FacilityTurret.Constructor(Vector3(1623.895f, 3415.945f, 68.02139f), manned_turret), owning_building_guid = 45) + LocalObject( + 1227, + FacilityTurret.Constructor(Vector3(1623.895f, 3415.945f, 68.02139f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1227, 5060) - LocalObject(1689, Painbox.Constructor(Vector3(1600.126f, 3406.171f, 40.57849f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1690, Painbox.Constructor(Vector3(1609.253f, 3397.965f, 39.17939f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1691, Painbox.Constructor(Vector3(1614.188f, 3408.753f, 39.17939f), painbox_radius_continuous), owning_building_guid = 45) + LocalObject( + 1689, + Painbox.Constructor(Vector3(1600.126f, 3406.171f, 40.57849f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1690, + Painbox.Constructor(Vector3(1609.253f, 3397.965f, 39.17939f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1691, + Painbox.Constructor(Vector3(1614.188f, 3408.753f, 39.17939f), painbox_radius_continuous), + owning_building_guid = 45 + ) } Building17() def Building17(): Unit = { // Name: NE_TRSanc_Warpgate_Tower Type: tower_a GUID: 46, MapID: 17 - LocalBuilding("NE_TRSanc_Warpgate_Tower", 46, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3612f, 1746f, 51.49541f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1898, CaptureTerminal.Constructor(Vector3(3628.587f, 1745.897f, 61.49441f), secondary_capture), owning_building_guid = 46) + LocalBuilding( + "NE_TRSanc_Warpgate_Tower", + 46, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3612f, 1746f, 51.49541f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1898, + CaptureTerminal.Constructor(Vector3(3628.587f, 1745.897f, 61.49441f), secondary_capture), + owning_building_guid = 46 + ) LocalObject(305, Door.Constructor(Vector3(3624f, 1738f, 53.01641f)), owning_building_guid = 46) LocalObject(306, Door.Constructor(Vector3(3624f, 1738f, 73.01541f)), owning_building_guid = 46) LocalObject(307, Door.Constructor(Vector3(3624f, 1754f, 53.01641f)), owning_building_guid = 46) LocalObject(308, Door.Constructor(Vector3(3624f, 1754f, 73.01541f)), owning_building_guid = 46) LocalObject(1996, Door.Constructor(Vector3(3623.146f, 1734.794f, 42.83141f)), owning_building_guid = 46) LocalObject(1997, Door.Constructor(Vector3(3623.146f, 1751.204f, 42.83141f)), owning_building_guid = 46) - LocalObject(784, IFFLock.Constructor(Vector3(3621.957f, 1754.811f, 52.95641f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 307) - LocalObject(785, IFFLock.Constructor(Vector3(3621.957f, 1754.811f, 72.95641f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 308) - LocalObject(786, IFFLock.Constructor(Vector3(3626.047f, 1737.189f, 52.95641f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 305) - LocalObject(787, IFFLock.Constructor(Vector3(3626.047f, 1737.189f, 72.95641f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 306) + LocalObject( + 784, + IFFLock.Constructor(Vector3(3621.957f, 1754.811f, 52.95641f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 307 + ) + LocalObject( + 785, + IFFLock.Constructor(Vector3(3621.957f, 1754.811f, 72.95641f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 308 + ) + LocalObject( + 786, + IFFLock.Constructor(Vector3(3626.047f, 1737.189f, 52.95641f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 305 + ) + LocalObject( + 787, + IFFLock.Constructor(Vector3(3626.047f, 1737.189f, 72.95641f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 306 + ) LocalObject(986, Locker.Constructor(Vector3(3627.716f, 1730.963f, 41.48941f)), owning_building_guid = 46) LocalObject(987, Locker.Constructor(Vector3(3627.751f, 1752.835f, 41.48941f)), owning_building_guid = 46) LocalObject(988, Locker.Constructor(Vector3(3629.053f, 1730.963f, 41.48941f)), owning_building_guid = 46) @@ -1496,35 +4336,106 @@ object Map05 { // Forseral LocalObject(991, Locker.Constructor(Vector3(3631.741f, 1752.835f, 41.48941f)), owning_building_guid = 46) LocalObject(992, Locker.Constructor(Vector3(3633.143f, 1730.963f, 41.48941f)), owning_building_guid = 46) LocalObject(993, Locker.Constructor(Vector3(3633.143f, 1752.835f, 41.48941f)), owning_building_guid = 46) - LocalObject(1371, Terminal.Constructor(Vector3(3633.445f, 1736.129f, 42.82741f), order_terminal), owning_building_guid = 46) - LocalObject(1372, Terminal.Constructor(Vector3(3633.445f, 1741.853f, 42.82741f), order_terminal), owning_building_guid = 46) - LocalObject(1373, Terminal.Constructor(Vector3(3633.445f, 1747.234f, 42.82741f), order_terminal), owning_building_guid = 46) - LocalObject(1847, SpawnTube.Constructor(Vector3(3622.706f, 1733.742f, 40.97741f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(1848, SpawnTube.Constructor(Vector3(3622.706f, 1750.152f, 40.97741f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(1248, FacilityTurret.Constructor(Vector3(3599.32f, 1733.295f, 70.43741f), manned_turret), owning_building_guid = 46) + LocalObject( + 1371, + Terminal.Constructor(Vector3(3633.445f, 1736.129f, 42.82741f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1372, + Terminal.Constructor(Vector3(3633.445f, 1741.853f, 42.82741f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1373, + Terminal.Constructor(Vector3(3633.445f, 1747.234f, 42.82741f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1847, + SpawnTube.Constructor(Vector3(3622.706f, 1733.742f, 40.97741f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 1848, + SpawnTube.Constructor(Vector3(3622.706f, 1750.152f, 40.97741f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 1248, + FacilityTurret.Constructor(Vector3(3599.32f, 1733.295f, 70.43741f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1248, 5061) - LocalObject(1251, FacilityTurret.Constructor(Vector3(3634.647f, 1758.707f, 70.43741f), manned_turret), owning_building_guid = 46) + LocalObject( + 1251, + FacilityTurret.Constructor(Vector3(3634.647f, 1758.707f, 70.43741f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1251, 5062) - LocalObject(1701, Painbox.Constructor(Vector3(3617.235f, 1739.803f, 42.99451f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1702, Painbox.Constructor(Vector3(3628.889f, 1748.086f, 41.59541f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1703, Painbox.Constructor(Vector3(3628.975f, 1736.223f, 41.59541f), painbox_radius_continuous), owning_building_guid = 46) + LocalObject( + 1701, + Painbox.Constructor(Vector3(3617.235f, 1739.803f, 42.99451f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1702, + Painbox.Constructor(Vector3(3628.889f, 1748.086f, 41.59541f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1703, + Painbox.Constructor(Vector3(3628.975f, 1736.223f, 41.59541f), painbox_radius_continuous), + owning_building_guid = 46 + ) } Building37() def Building37(): Unit = { // Name: N_Ogma_Tower Type: tower_a GUID: 47, MapID: 37 - LocalBuilding("N_Ogma_Tower", 47, 37, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3662f, 3532f, 101.2391f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1899, CaptureTerminal.Constructor(Vector3(3678.587f, 3531.897f, 111.2381f), secondary_capture), owning_building_guid = 47) + LocalBuilding( + "N_Ogma_Tower", + 47, + 37, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3662f, 3532f, 101.2391f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1899, + CaptureTerminal.Constructor(Vector3(3678.587f, 3531.897f, 111.2381f), secondary_capture), + owning_building_guid = 47 + ) LocalObject(313, Door.Constructor(Vector3(3674f, 3524f, 102.7601f)), owning_building_guid = 47) LocalObject(314, Door.Constructor(Vector3(3674f, 3524f, 122.759f)), owning_building_guid = 47) LocalObject(315, Door.Constructor(Vector3(3674f, 3540f, 102.7601f)), owning_building_guid = 47) LocalObject(316, Door.Constructor(Vector3(3674f, 3540f, 122.759f)), owning_building_guid = 47) LocalObject(2001, Door.Constructor(Vector3(3673.146f, 3520.794f, 92.57505f)), owning_building_guid = 47) LocalObject(2002, Door.Constructor(Vector3(3673.146f, 3537.204f, 92.57505f)), owning_building_guid = 47) - LocalObject(794, IFFLock.Constructor(Vector3(3671.957f, 3540.811f, 102.7001f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 315) - LocalObject(795, IFFLock.Constructor(Vector3(3671.957f, 3540.811f, 122.7001f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 316) - LocalObject(796, IFFLock.Constructor(Vector3(3676.047f, 3523.189f, 102.7001f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 313) - LocalObject(797, IFFLock.Constructor(Vector3(3676.047f, 3523.189f, 122.7001f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 314) + LocalObject( + 794, + IFFLock.Constructor(Vector3(3671.957f, 3540.811f, 102.7001f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 315 + ) + LocalObject( + 795, + IFFLock.Constructor(Vector3(3671.957f, 3540.811f, 122.7001f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 316 + ) + LocalObject( + 796, + IFFLock.Constructor(Vector3(3676.047f, 3523.189f, 102.7001f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 313 + ) + LocalObject( + 797, + IFFLock.Constructor(Vector3(3676.047f, 3523.189f, 122.7001f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 314 + ) LocalObject(1002, Locker.Constructor(Vector3(3677.716f, 3516.963f, 91.23306f)), owning_building_guid = 47) LocalObject(1003, Locker.Constructor(Vector3(3677.751f, 3538.835f, 91.23306f)), owning_building_guid = 47) LocalObject(1005, Locker.Constructor(Vector3(3679.053f, 3516.963f, 91.23306f)), owning_building_guid = 47) @@ -1533,35 +4444,106 @@ object Map05 { // Forseral LocalObject(1010, Locker.Constructor(Vector3(3681.741f, 3538.835f, 91.23306f)), owning_building_guid = 47) LocalObject(1012, Locker.Constructor(Vector3(3683.143f, 3516.963f, 91.23306f)), owning_building_guid = 47) LocalObject(1013, Locker.Constructor(Vector3(3683.143f, 3538.835f, 91.23306f)), owning_building_guid = 47) - LocalObject(1377, Terminal.Constructor(Vector3(3683.445f, 3522.129f, 92.57105f), order_terminal), owning_building_guid = 47) - LocalObject(1378, Terminal.Constructor(Vector3(3683.445f, 3527.853f, 92.57105f), order_terminal), owning_building_guid = 47) - LocalObject(1379, Terminal.Constructor(Vector3(3683.445f, 3533.234f, 92.57105f), order_terminal), owning_building_guid = 47) - LocalObject(1852, SpawnTube.Constructor(Vector3(3672.706f, 3519.742f, 90.72105f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(1853, SpawnTube.Constructor(Vector3(3672.706f, 3536.152f, 90.72105f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(1254, FacilityTurret.Constructor(Vector3(3649.32f, 3519.295f, 120.1811f), manned_turret), owning_building_guid = 47) + LocalObject( + 1377, + Terminal.Constructor(Vector3(3683.445f, 3522.129f, 92.57105f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1378, + Terminal.Constructor(Vector3(3683.445f, 3527.853f, 92.57105f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1379, + Terminal.Constructor(Vector3(3683.445f, 3533.234f, 92.57105f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1852, + SpawnTube.Constructor(Vector3(3672.706f, 3519.742f, 90.72105f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 1853, + SpawnTube.Constructor(Vector3(3672.706f, 3536.152f, 90.72105f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 1254, + FacilityTurret.Constructor(Vector3(3649.32f, 3519.295f, 120.1811f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1254, 5063) - LocalObject(1257, FacilityTurret.Constructor(Vector3(3684.647f, 3544.707f, 120.1811f), manned_turret), owning_building_guid = 47) + LocalObject( + 1257, + FacilityTurret.Constructor(Vector3(3684.647f, 3544.707f, 120.1811f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1257, 5064) - LocalObject(1704, Painbox.Constructor(Vector3(3667.235f, 3525.803f, 92.73815f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1705, Painbox.Constructor(Vector3(3678.889f, 3534.086f, 91.33905f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1706, Painbox.Constructor(Vector3(3678.975f, 3522.223f, 91.33905f), painbox_radius_continuous), owning_building_guid = 47) + LocalObject( + 1704, + Painbox.Constructor(Vector3(3667.235f, 3525.803f, 92.73815f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1705, + Painbox.Constructor(Vector3(3678.889f, 3534.086f, 91.33905f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1706, + Painbox.Constructor(Vector3(3678.975f, 3522.223f, 91.33905f), painbox_radius_continuous), + owning_building_guid = 47 + ) } Building27() def Building27(): Unit = { // Name: S_Bel_Tower Type: tower_a GUID: 48, MapID: 27 - LocalBuilding("S_Bel_Tower", 48, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3694f, 4482f, 48.92117f), Vector3(0f, 0f, 304f), tower_a))) - LocalObject(1900, CaptureTerminal.Constructor(Vector3(3703.19f, 4468.191f, 58.92017f), secondary_capture), owning_building_guid = 48) + LocalBuilding( + "S_Bel_Tower", + 48, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3694f, 4482f, 48.92117f), Vector3(0f, 0f, 304f), tower_a) + ) + ) + LocalObject( + 1900, + CaptureTerminal.Constructor(Vector3(3703.19f, 4468.191f, 58.92017f), secondary_capture), + owning_building_guid = 48 + ) LocalObject(319, Door.Constructor(Vector3(3694.078f, 4467.578f, 50.44217f)), owning_building_guid = 48) LocalObject(320, Door.Constructor(Vector3(3694.078f, 4467.578f, 70.44117f)), owning_building_guid = 48) LocalObject(322, Door.Constructor(Vector3(3707.343f, 4476.525f, 50.44217f)), owning_building_guid = 48) LocalObject(323, Door.Constructor(Vector3(3707.343f, 4476.525f, 70.44117f)), owning_building_guid = 48) LocalObject(2003, Door.Constructor(Vector3(3690.943f, 4466.493f, 40.25717f)), owning_building_guid = 48) LocalObject(2004, Door.Constructor(Vector3(3704.547f, 4475.669f, 40.25717f)), owning_building_guid = 48) - LocalObject(801, IFFLock.Constructor(Vector3(3694.55f, 4465.427f, 50.38217f), Vector3(0, 0, 236)), owning_building_guid = 48, door_guid = 319) - LocalObject(802, IFFLock.Constructor(Vector3(3694.55f, 4465.427f, 70.38217f), Vector3(0, 0, 236)), owning_building_guid = 48, door_guid = 320) - LocalObject(803, IFFLock.Constructor(Vector3(3706.873f, 4478.672f, 50.38217f), Vector3(0, 0, 56)), owning_building_guid = 48, door_guid = 322) - LocalObject(804, IFFLock.Constructor(Vector3(3706.873f, 4478.672f, 70.38217f), Vector3(0, 0, 56)), owning_building_guid = 48, door_guid = 323) + LocalObject( + 801, + IFFLock.Constructor(Vector3(3694.55f, 4465.427f, 50.38217f), Vector3(0, 0, 236)), + owning_building_guid = 48, + door_guid = 319 + ) + LocalObject( + 802, + IFFLock.Constructor(Vector3(3694.55f, 4465.427f, 70.38217f), Vector3(0, 0, 236)), + owning_building_guid = 48, + door_guid = 320 + ) + LocalObject( + 803, + IFFLock.Constructor(Vector3(3706.873f, 4478.672f, 50.38217f), Vector3(0, 0, 56)), + owning_building_guid = 48, + door_guid = 322 + ) + LocalObject( + 804, + IFFLock.Constructor(Vector3(3706.873f, 4478.672f, 70.38217f), Vector3(0, 0, 56)), + owning_building_guid = 48, + door_guid = 323 + ) LocalObject(1014, Locker.Constructor(Vector3(3690.322f, 4460.562f, 38.91517f)), owning_building_guid = 48) LocalObject(1015, Locker.Constructor(Vector3(3691.07f, 4459.454f, 38.91517f)), owning_building_guid = 48) LocalObject(1016, Locker.Constructor(Vector3(3692.573f, 4457.226f, 38.91517f)), owning_building_guid = 48) @@ -1570,35 +4552,106 @@ object Map05 { // Forseral LocalObject(1019, Locker.Constructor(Vector3(3709.222f, 4471.655f, 38.91517f)), owning_building_guid = 48) LocalObject(1020, Locker.Constructor(Vector3(3710.706f, 4469.456f, 38.91517f)), owning_building_guid = 48) LocalObject(1021, Locker.Constructor(Vector3(3711.49f, 4468.294f, 38.91517f)), owning_building_guid = 48) - LocalObject(1380, Terminal.Constructor(Vector3(3697.808f, 4458.702f, 40.25317f), order_terminal), owning_building_guid = 48) - LocalObject(1381, Terminal.Constructor(Vector3(3702.554f, 4461.902f, 40.25317f), order_terminal), owning_building_guid = 48) - LocalObject(1382, Terminal.Constructor(Vector3(3707.015f, 4464.911f, 40.25317f), order_terminal), owning_building_guid = 48) - LocalObject(1854, SpawnTube.Constructor(Vector3(3689.824f, 4466.27f, 38.40317f), respawn_tube_tower, Vector3(0, 0, 56)), owning_building_guid = 48) - LocalObject(1855, SpawnTube.Constructor(Vector3(3703.429f, 4475.446f, 38.40317f), respawn_tube_tower, Vector3(0, 0, 56)), owning_building_guid = 48) - LocalObject(1255, FacilityTurret.Constructor(Vector3(3676.376f, 4485.408f, 67.86317f), manned_turret), owning_building_guid = 48) + LocalObject( + 1380, + Terminal.Constructor(Vector3(3697.808f, 4458.702f, 40.25317f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1381, + Terminal.Constructor(Vector3(3702.554f, 4461.902f, 40.25317f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1382, + Terminal.Constructor(Vector3(3707.015f, 4464.911f, 40.25317f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1854, + SpawnTube.Constructor(Vector3(3689.824f, 4466.27f, 38.40317f), respawn_tube_tower, Vector3(0, 0, 56)), + owning_building_guid = 48 + ) + LocalObject( + 1855, + SpawnTube.Constructor(Vector3(3703.429f, 4475.446f, 38.40317f), respawn_tube_tower, Vector3(0, 0, 56)), + owning_building_guid = 48 + ) + LocalObject( + 1255, + FacilityTurret.Constructor(Vector3(3676.376f, 4485.408f, 67.86317f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1255, 5065) - LocalObject(1258, FacilityTurret.Constructor(Vector3(3717.199f, 4470.331f, 67.86317f), manned_turret), owning_building_guid = 48) + LocalObject( + 1258, + FacilityTurret.Constructor(Vector3(3717.199f, 4470.331f, 67.86317f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1258, 5066) - LocalObject(1707, Painbox.Constructor(Vector3(3691.79f, 4474.195f, 40.42027f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1708, Painbox.Constructor(Vector3(3695.386f, 4462.459f, 39.02117f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1709, Painbox.Constructor(Vector3(3705.174f, 4469.165f, 39.02117f), painbox_radius_continuous), owning_building_guid = 48) + LocalObject( + 1707, + Painbox.Constructor(Vector3(3691.79f, 4474.195f, 40.42027f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1708, + Painbox.Constructor(Vector3(3695.386f, 4462.459f, 39.02117f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1709, + Painbox.Constructor(Vector3(3705.174f, 4469.165f, 39.02117f), painbox_radius_continuous), + owning_building_guid = 48 + ) } Building25() def Building25(): Unit = { // Name: SE_Ceryshen_Warpgate_Tower Type: tower_a GUID: 49, MapID: 25 - LocalBuilding("SE_Ceryshen_Warpgate_Tower", 49, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3832f, 6326f, 50.13886f), Vector3(0f, 0f, 314f), tower_a))) - LocalObject(1901, CaptureTerminal.Constructor(Vector3(3843.448f, 6313.997f, 60.13786f), secondary_capture), owning_building_guid = 49) + LocalBuilding( + "SE_Ceryshen_Warpgate_Tower", + 49, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3832f, 6326f, 50.13886f), Vector3(0f, 0f, 314f), tower_a) + ) + ) + LocalObject( + 1901, + CaptureTerminal.Constructor(Vector3(3843.448f, 6313.997f, 60.13786f), secondary_capture), + owning_building_guid = 49 + ) LocalObject(328, Door.Constructor(Vector3(3834.581f, 6311.811f, 51.65986f)), owning_building_guid = 49) LocalObject(329, Door.Constructor(Vector3(3834.581f, 6311.811f, 71.65886f)), owning_building_guid = 49) LocalObject(330, Door.Constructor(Vector3(3846.091f, 6322.925f, 51.65986f)), owning_building_guid = 49) LocalObject(331, Door.Constructor(Vector3(3846.091f, 6322.925f, 71.65886f)), owning_building_guid = 49) LocalObject(2005, Door.Constructor(Vector3(3831.682f, 6310.198f, 41.47486f)), owning_building_guid = 49) LocalObject(2006, Door.Constructor(Vector3(3843.486f, 6321.597f, 41.47486f)), owning_building_guid = 49) - LocalObject(806, IFFLock.Constructor(Vector3(3835.42f, 6309.775f, 51.59986f), Vector3(0, 0, 226)), owning_building_guid = 49, door_guid = 328) - LocalObject(807, IFFLock.Constructor(Vector3(3835.42f, 6309.775f, 71.59986f), Vector3(0, 0, 226)), owning_building_guid = 49, door_guid = 329) - LocalObject(808, IFFLock.Constructor(Vector3(3845.255f, 6324.958f, 51.59986f), Vector3(0, 0, 46)), owning_building_guid = 49, door_guid = 330) - LocalObject(809, IFFLock.Constructor(Vector3(3845.255f, 6324.958f, 71.59986f), Vector3(0, 0, 46)), owning_building_guid = 49, door_guid = 331) + LocalObject( + 806, + IFFLock.Constructor(Vector3(3835.42f, 6309.775f, 51.59986f), Vector3(0, 0, 226)), + owning_building_guid = 49, + door_guid = 328 + ) + LocalObject( + 807, + IFFLock.Constructor(Vector3(3835.42f, 6309.775f, 71.59986f), Vector3(0, 0, 226)), + owning_building_guid = 49, + door_guid = 329 + ) + LocalObject( + 808, + IFFLock.Constructor(Vector3(3845.255f, 6324.958f, 51.59986f), Vector3(0, 0, 46)), + owning_building_guid = 49, + door_guid = 330 + ) + LocalObject( + 809, + IFFLock.Constructor(Vector3(3845.255f, 6324.958f, 71.59986f), Vector3(0, 0, 46)), + owning_building_guid = 49, + door_guid = 331 + ) LocalObject(1022, Locker.Constructor(Vector3(3832.101f, 6304.25f, 40.13286f)), owning_building_guid = 49) LocalObject(1023, Locker.Constructor(Vector3(3833.029f, 6303.288f, 40.13286f)), owning_building_guid = 49) LocalObject(1024, Locker.Constructor(Vector3(3834.896f, 6301.354f, 40.13286f)), owning_building_guid = 49) @@ -1607,35 +4660,106 @@ object Map05 { // Forseral LocalObject(1027, Locker.Constructor(Vector3(3848.787f, 6318.456f, 40.13286f)), owning_building_guid = 49) LocalObject(1028, Locker.Constructor(Vector3(3850.63f, 6316.547f, 40.13286f)), owning_building_guid = 49) LocalObject(1029, Locker.Constructor(Vector3(3851.604f, 6315.539f, 40.13286f)), owning_building_guid = 49) - LocalObject(1383, Terminal.Constructor(Vector3(3839.796f, 6303.717f, 41.47086f), order_terminal), owning_building_guid = 49) - LocalObject(1384, Terminal.Constructor(Vector3(3843.914f, 6307.693f, 41.47086f), order_terminal), owning_building_guid = 49) - LocalObject(1385, Terminal.Constructor(Vector3(3847.785f, 6311.431f, 41.47086f), order_terminal), owning_building_guid = 49) - LocalObject(1856, SpawnTube.Constructor(Vector3(3830.619f, 6309.784f, 39.62086f), respawn_tube_tower, Vector3(0, 0, 46)), owning_building_guid = 49) - LocalObject(1857, SpawnTube.Constructor(Vector3(3842.424f, 6321.183f, 39.62086f), respawn_tube_tower, Vector3(0, 0, 46)), owning_building_guid = 49) - LocalObject(1261, FacilityTurret.Constructor(Vector3(3814.052f, 6326.295f, 69.08086f), manned_turret), owning_building_guid = 49) + LocalObject( + 1383, + Terminal.Constructor(Vector3(3839.796f, 6303.717f, 41.47086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1384, + Terminal.Constructor(Vector3(3843.914f, 6307.693f, 41.47086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1385, + Terminal.Constructor(Vector3(3847.785f, 6311.431f, 41.47086f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1856, + SpawnTube.Constructor(Vector3(3830.619f, 6309.784f, 39.62086f), respawn_tube_tower, Vector3(0, 0, 46)), + owning_building_guid = 49 + ) + LocalObject( + 1857, + SpawnTube.Constructor(Vector3(3842.424f, 6321.183f, 39.62086f), respawn_tube_tower, Vector3(0, 0, 46)), + owning_building_guid = 49 + ) + LocalObject( + 1261, + FacilityTurret.Constructor(Vector3(3814.052f, 6326.295f, 69.08086f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1261, 5067) - LocalObject(1262, FacilityTurret.Constructor(Vector3(3856.873f, 6318.536f, 69.08086f), manned_turret), owning_building_guid = 49) + LocalObject( + 1262, + FacilityTurret.Constructor(Vector3(3856.873f, 6318.536f, 69.08086f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1262, 5068) - LocalObject(1710, Painbox.Constructor(Vector3(3831.179f, 6317.93f, 41.63796f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1711, Painbox.Constructor(Vector3(3836.759f, 6306.997f, 40.23886f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1712, Painbox.Constructor(Vector3(3845.233f, 6315.3f, 40.23886f), painbox_radius_continuous), owning_building_guid = 49) + LocalObject( + 1710, + Painbox.Constructor(Vector3(3831.179f, 6317.93f, 41.63796f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1711, + Painbox.Constructor(Vector3(3836.759f, 6306.997f, 40.23886f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1712, + Painbox.Constructor(Vector3(3845.233f, 6315.3f, 40.23886f), painbox_radius_continuous), + owning_building_guid = 49 + ) } Building39() def Building39(): Unit = { // Name: W_Pwyll_Tower Type: tower_a GUID: 50, MapID: 39 - LocalBuilding("W_Pwyll_Tower", 50, 39, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4486f, 4862f, 90.87802f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1903, CaptureTerminal.Constructor(Vector3(4502.587f, 4861.897f, 100.877f), secondary_capture), owning_building_guid = 50) + LocalBuilding( + "W_Pwyll_Tower", + 50, + 39, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4486f, 4862f, 90.87802f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1903, + CaptureTerminal.Constructor(Vector3(4502.587f, 4861.897f, 100.877f), secondary_capture), + owning_building_guid = 50 + ) LocalObject(352, Door.Constructor(Vector3(4498f, 4854f, 92.39902f)), owning_building_guid = 50) LocalObject(353, Door.Constructor(Vector3(4498f, 4854f, 112.398f)), owning_building_guid = 50) LocalObject(354, Door.Constructor(Vector3(4498f, 4870f, 92.39902f)), owning_building_guid = 50) LocalObject(355, Door.Constructor(Vector3(4498f, 4870f, 112.398f)), owning_building_guid = 50) LocalObject(2012, Door.Constructor(Vector3(4497.146f, 4850.794f, 82.21402f)), owning_building_guid = 50) LocalObject(2013, Door.Constructor(Vector3(4497.146f, 4867.204f, 82.21402f)), owning_building_guid = 50) - LocalObject(824, IFFLock.Constructor(Vector3(4495.957f, 4870.811f, 92.33902f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 354) - LocalObject(825, IFFLock.Constructor(Vector3(4495.957f, 4870.811f, 112.339f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 355) - LocalObject(826, IFFLock.Constructor(Vector3(4500.047f, 4853.189f, 92.33902f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 352) - LocalObject(827, IFFLock.Constructor(Vector3(4500.047f, 4853.189f, 112.339f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 353) + LocalObject( + 824, + IFFLock.Constructor(Vector3(4495.957f, 4870.811f, 92.33902f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 354 + ) + LocalObject( + 825, + IFFLock.Constructor(Vector3(4495.957f, 4870.811f, 112.339f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 355 + ) + LocalObject( + 826, + IFFLock.Constructor(Vector3(4500.047f, 4853.189f, 92.33902f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 352 + ) + LocalObject( + 827, + IFFLock.Constructor(Vector3(4500.047f, 4853.189f, 112.339f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 353 + ) LocalObject(1059, Locker.Constructor(Vector3(4501.716f, 4846.963f, 80.87202f)), owning_building_guid = 50) LocalObject(1060, Locker.Constructor(Vector3(4501.751f, 4868.835f, 80.87202f)), owning_building_guid = 50) LocalObject(1061, Locker.Constructor(Vector3(4503.053f, 4846.963f, 80.87202f)), owning_building_guid = 50) @@ -1644,35 +4768,106 @@ object Map05 { // Forseral LocalObject(1064, Locker.Constructor(Vector3(4505.741f, 4868.835f, 80.87202f)), owning_building_guid = 50) LocalObject(1065, Locker.Constructor(Vector3(4507.143f, 4846.963f, 80.87202f)), owning_building_guid = 50) LocalObject(1066, Locker.Constructor(Vector3(4507.143f, 4868.835f, 80.87202f)), owning_building_guid = 50) - LocalObject(1393, Terminal.Constructor(Vector3(4507.445f, 4852.129f, 82.21002f), order_terminal), owning_building_guid = 50) - LocalObject(1394, Terminal.Constructor(Vector3(4507.445f, 4857.853f, 82.21002f), order_terminal), owning_building_guid = 50) - LocalObject(1395, Terminal.Constructor(Vector3(4507.445f, 4863.234f, 82.21002f), order_terminal), owning_building_guid = 50) - LocalObject(1863, SpawnTube.Constructor(Vector3(4496.706f, 4849.742f, 80.36002f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(1864, SpawnTube.Constructor(Vector3(4496.706f, 4866.152f, 80.36002f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(1268, FacilityTurret.Constructor(Vector3(4473.32f, 4849.295f, 109.82f), manned_turret), owning_building_guid = 50) + LocalObject( + 1393, + Terminal.Constructor(Vector3(4507.445f, 4852.129f, 82.21002f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1394, + Terminal.Constructor(Vector3(4507.445f, 4857.853f, 82.21002f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1395, + Terminal.Constructor(Vector3(4507.445f, 4863.234f, 82.21002f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1863, + SpawnTube.Constructor(Vector3(4496.706f, 4849.742f, 80.36002f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 1864, + SpawnTube.Constructor(Vector3(4496.706f, 4866.152f, 80.36002f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 1268, + FacilityTurret.Constructor(Vector3(4473.32f, 4849.295f, 109.82f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1268, 5069) - LocalObject(1269, FacilityTurret.Constructor(Vector3(4508.647f, 4874.707f, 109.82f), manned_turret), owning_building_guid = 50) + LocalObject( + 1269, + FacilityTurret.Constructor(Vector3(4508.647f, 4874.707f, 109.82f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1269, 5070) - LocalObject(1716, Painbox.Constructor(Vector3(4491.235f, 4855.803f, 82.37712f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1717, Painbox.Constructor(Vector3(4502.889f, 4864.086f, 80.97802f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1718, Painbox.Constructor(Vector3(4502.975f, 4852.223f, 80.97802f), painbox_radius_continuous), owning_building_guid = 50) + LocalObject( + 1716, + Painbox.Constructor(Vector3(4491.235f, 4855.803f, 82.37712f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1717, + Painbox.Constructor(Vector3(4502.889f, 4864.086f, 80.97802f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1718, + Painbox.Constructor(Vector3(4502.975f, 4852.223f, 80.97802f), painbox_radius_continuous), + owning_building_guid = 50 + ) } Building20() def Building20(): Unit = { // Name: NW_Gwydion_Tower Type: tower_a GUID: 51, MapID: 20 - LocalBuilding("NW_Gwydion_Tower", 51, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5410f, 4044f, 59.84832f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1906, CaptureTerminal.Constructor(Vector3(5426.587f, 4043.897f, 69.84732f), secondary_capture), owning_building_guid = 51) + LocalBuilding( + "NW_Gwydion_Tower", + 51, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5410f, 4044f, 59.84832f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1906, + CaptureTerminal.Constructor(Vector3(5426.587f, 4043.897f, 69.84732f), secondary_capture), + owning_building_guid = 51 + ) LocalObject(397, Door.Constructor(Vector3(5422f, 4036f, 61.36932f)), owning_building_guid = 51) LocalObject(398, Door.Constructor(Vector3(5422f, 4036f, 81.36832f)), owning_building_guid = 51) LocalObject(399, Door.Constructor(Vector3(5422f, 4052f, 61.36932f)), owning_building_guid = 51) LocalObject(400, Door.Constructor(Vector3(5422f, 4052f, 81.36832f)), owning_building_guid = 51) LocalObject(2024, Door.Constructor(Vector3(5421.146f, 4032.794f, 51.18433f)), owning_building_guid = 51) LocalObject(2025, Door.Constructor(Vector3(5421.146f, 4049.204f, 51.18433f)), owning_building_guid = 51) - LocalObject(860, IFFLock.Constructor(Vector3(5419.957f, 4052.811f, 61.30932f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 399) - LocalObject(861, IFFLock.Constructor(Vector3(5419.957f, 4052.811f, 81.30933f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 400) - LocalObject(862, IFFLock.Constructor(Vector3(5424.047f, 4035.189f, 61.30932f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 397) - LocalObject(863, IFFLock.Constructor(Vector3(5424.047f, 4035.189f, 81.30933f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 398) + LocalObject( + 860, + IFFLock.Constructor(Vector3(5419.957f, 4052.811f, 61.30932f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 399 + ) + LocalObject( + 861, + IFFLock.Constructor(Vector3(5419.957f, 4052.811f, 81.30933f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 400 + ) + LocalObject( + 862, + IFFLock.Constructor(Vector3(5424.047f, 4035.189f, 61.30932f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 397 + ) + LocalObject( + 863, + IFFLock.Constructor(Vector3(5424.047f, 4035.189f, 81.30933f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 398 + ) LocalObject(1107, Locker.Constructor(Vector3(5425.716f, 4028.963f, 49.84232f)), owning_building_guid = 51) LocalObject(1108, Locker.Constructor(Vector3(5425.751f, 4050.835f, 49.84232f)), owning_building_guid = 51) LocalObject(1109, Locker.Constructor(Vector3(5427.053f, 4028.963f, 49.84232f)), owning_building_guid = 51) @@ -1681,35 +4876,106 @@ object Map05 { // Forseral LocalObject(1112, Locker.Constructor(Vector3(5429.741f, 4050.835f, 49.84232f)), owning_building_guid = 51) LocalObject(1113, Locker.Constructor(Vector3(5431.143f, 4028.963f, 49.84232f)), owning_building_guid = 51) LocalObject(1114, Locker.Constructor(Vector3(5431.143f, 4050.835f, 49.84232f)), owning_building_guid = 51) - LocalObject(1415, Terminal.Constructor(Vector3(5431.445f, 4034.129f, 51.18032f), order_terminal), owning_building_guid = 51) - LocalObject(1416, Terminal.Constructor(Vector3(5431.445f, 4039.853f, 51.18032f), order_terminal), owning_building_guid = 51) - LocalObject(1417, Terminal.Constructor(Vector3(5431.445f, 4045.234f, 51.18032f), order_terminal), owning_building_guid = 51) - LocalObject(1875, SpawnTube.Constructor(Vector3(5420.706f, 4031.742f, 49.33032f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1876, SpawnTube.Constructor(Vector3(5420.706f, 4048.152f, 49.33032f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1284, FacilityTurret.Constructor(Vector3(5397.32f, 4031.295f, 78.79032f), manned_turret), owning_building_guid = 51) + LocalObject( + 1415, + Terminal.Constructor(Vector3(5431.445f, 4034.129f, 51.18032f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1416, + Terminal.Constructor(Vector3(5431.445f, 4039.853f, 51.18032f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1417, + Terminal.Constructor(Vector3(5431.445f, 4045.234f, 51.18032f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1875, + SpawnTube.Constructor(Vector3(5420.706f, 4031.742f, 49.33032f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1876, + SpawnTube.Constructor(Vector3(5420.706f, 4048.152f, 49.33032f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1284, + FacilityTurret.Constructor(Vector3(5397.32f, 4031.295f, 78.79032f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1284, 5071) - LocalObject(1286, FacilityTurret.Constructor(Vector3(5432.647f, 4056.707f, 78.79032f), manned_turret), owning_building_guid = 51) + LocalObject( + 1286, + FacilityTurret.Constructor(Vector3(5432.647f, 4056.707f, 78.79032f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1286, 5072) - LocalObject(1725, Painbox.Constructor(Vector3(5415.235f, 4037.803f, 51.34742f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1726, Painbox.Constructor(Vector3(5426.889f, 4046.086f, 49.94833f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1727, Painbox.Constructor(Vector3(5426.975f, 4034.223f, 49.94833f), painbox_radius_continuous), owning_building_guid = 51) + LocalObject( + 1725, + Painbox.Constructor(Vector3(5415.235f, 4037.803f, 51.34742f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1726, + Painbox.Constructor(Vector3(5426.889f, 4046.086f, 49.94833f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1727, + Painbox.Constructor(Vector3(5426.975f, 4034.223f, 49.94833f), painbox_radius_continuous), + owning_building_guid = 51 + ) } Building22() def Building22(): Unit = { // Name: NW_Lugh_Tower Type: tower_a GUID: 52, MapID: 22 - LocalBuilding("NW_Lugh_Tower", 52, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5940f, 5298f, 87.00064f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1908, CaptureTerminal.Constructor(Vector3(5956.587f, 5297.897f, 96.99964f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "NW_Lugh_Tower", + 52, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5940f, 5298f, 87.00064f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1908, + CaptureTerminal.Constructor(Vector3(5956.587f, 5297.897f, 96.99964f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(435, Door.Constructor(Vector3(5952f, 5290f, 88.52164f)), owning_building_guid = 52) LocalObject(436, Door.Constructor(Vector3(5952f, 5290f, 108.5206f)), owning_building_guid = 52) LocalObject(437, Door.Constructor(Vector3(5952f, 5306f, 88.52164f)), owning_building_guid = 52) LocalObject(438, Door.Constructor(Vector3(5952f, 5306f, 108.5206f)), owning_building_guid = 52) LocalObject(2034, Door.Constructor(Vector3(5951.146f, 5286.794f, 78.33664f)), owning_building_guid = 52) LocalObject(2035, Door.Constructor(Vector3(5951.146f, 5303.204f, 78.33664f)), owning_building_guid = 52) - LocalObject(889, IFFLock.Constructor(Vector3(5949.957f, 5306.811f, 88.46164f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 437) - LocalObject(890, IFFLock.Constructor(Vector3(5949.957f, 5306.811f, 108.4616f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 438) - LocalObject(891, IFFLock.Constructor(Vector3(5954.047f, 5289.189f, 88.46164f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 435) - LocalObject(892, IFFLock.Constructor(Vector3(5954.047f, 5289.189f, 108.4616f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 436) + LocalObject( + 889, + IFFLock.Constructor(Vector3(5949.957f, 5306.811f, 88.46164f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 437 + ) + LocalObject( + 890, + IFFLock.Constructor(Vector3(5949.957f, 5306.811f, 108.4616f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 438 + ) + LocalObject( + 891, + IFFLock.Constructor(Vector3(5954.047f, 5289.189f, 88.46164f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 435 + ) + LocalObject( + 892, + IFFLock.Constructor(Vector3(5954.047f, 5289.189f, 108.4616f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 436 + ) LocalObject(1147, Locker.Constructor(Vector3(5955.716f, 5282.963f, 76.99464f)), owning_building_guid = 52) LocalObject(1148, Locker.Constructor(Vector3(5955.751f, 5304.835f, 76.99464f)), owning_building_guid = 52) LocalObject(1149, Locker.Constructor(Vector3(5957.053f, 5282.963f, 76.99464f)), owning_building_guid = 52) @@ -1718,25 +4984,76 @@ object Map05 { // Forseral LocalObject(1152, Locker.Constructor(Vector3(5959.741f, 5304.835f, 76.99464f)), owning_building_guid = 52) LocalObject(1153, Locker.Constructor(Vector3(5961.143f, 5282.963f, 76.99464f)), owning_building_guid = 52) LocalObject(1154, Locker.Constructor(Vector3(5961.143f, 5304.835f, 76.99464f)), owning_building_guid = 52) - LocalObject(1432, Terminal.Constructor(Vector3(5961.445f, 5288.129f, 78.33264f), order_terminal), owning_building_guid = 52) - LocalObject(1433, Terminal.Constructor(Vector3(5961.445f, 5293.853f, 78.33264f), order_terminal), owning_building_guid = 52) - LocalObject(1434, Terminal.Constructor(Vector3(5961.445f, 5299.234f, 78.33264f), order_terminal), owning_building_guid = 52) - LocalObject(1885, SpawnTube.Constructor(Vector3(5950.706f, 5285.742f, 76.48264f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1886, SpawnTube.Constructor(Vector3(5950.706f, 5302.152f, 76.48264f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1296, FacilityTurret.Constructor(Vector3(5927.32f, 5285.295f, 105.9426f), manned_turret), owning_building_guid = 52) + LocalObject( + 1432, + Terminal.Constructor(Vector3(5961.445f, 5288.129f, 78.33264f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1433, + Terminal.Constructor(Vector3(5961.445f, 5293.853f, 78.33264f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1434, + Terminal.Constructor(Vector3(5961.445f, 5299.234f, 78.33264f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1885, + SpawnTube.Constructor(Vector3(5950.706f, 5285.742f, 76.48264f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1886, + SpawnTube.Constructor(Vector3(5950.706f, 5302.152f, 76.48264f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1296, + FacilityTurret.Constructor(Vector3(5927.32f, 5285.295f, 105.9426f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1296, 5073) - LocalObject(1297, FacilityTurret.Constructor(Vector3(5962.647f, 5310.707f, 105.9426f), manned_turret), owning_building_guid = 52) + LocalObject( + 1297, + FacilityTurret.Constructor(Vector3(5962.647f, 5310.707f, 105.9426f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1297, 5074) - LocalObject(1731, Painbox.Constructor(Vector3(5945.235f, 5291.803f, 78.49974f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1732, Painbox.Constructor(Vector3(5956.889f, 5300.086f, 77.10064f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1733, Painbox.Constructor(Vector3(5956.975f, 5288.223f, 77.10064f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 1731, + Painbox.Constructor(Vector3(5945.235f, 5291.803f, 78.49974f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1732, + Painbox.Constructor(Vector3(5956.889f, 5300.086f, 77.10064f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1733, + Painbox.Constructor(Vector3(5956.975f, 5288.223f, 77.10064f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building15() def Building15(): Unit = { // Name: NW_Eadon_Tower Type: tower_b GUID: 53, MapID: 15 - LocalBuilding("NW_Eadon_Tower", 53, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2588f, 3168f, 49.78637f), Vector3(0f, 0f, 318f), tower_b))) - LocalObject(1895, CaptureTerminal.Constructor(Vector3(2600.258f, 3156.825f, 69.78537f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "NW_Eadon_Tower", + 53, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2588f, 3168f, 49.78637f), Vector3(0f, 0f, 318f), tower_b) + ) + ) + LocalObject( + 1895, + CaptureTerminal.Constructor(Vector3(2600.258f, 3156.825f, 69.78537f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(234, Door.Constructor(Vector3(2591.565f, 3154.025f, 51.30637f)), owning_building_guid = 53) LocalObject(235, Door.Constructor(Vector3(2591.565f, 3154.025f, 61.30637f)), owning_building_guid = 53) LocalObject(236, Door.Constructor(Vector3(2591.565f, 3154.025f, 81.30637f)), owning_building_guid = 53) @@ -1745,12 +5062,42 @@ object Map05 { // Forseral LocalObject(239, Door.Constructor(Vector3(2602.271f, 3165.916f, 81.30637f)), owning_building_guid = 53) LocalObject(1981, Door.Constructor(Vector3(2588.786f, 3152.214f, 41.12237f)), owning_building_guid = 53) LocalObject(1982, Door.Constructor(Vector3(2599.766f, 3164.408f, 41.12237f)), owning_building_guid = 53) - LocalObject(737, IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 51.24737f), Vector3(0, 0, 222)), owning_building_guid = 53, door_guid = 234) - LocalObject(738, IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 61.24737f), Vector3(0, 0, 222)), owning_building_guid = 53, door_guid = 235) - LocalObject(739, IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 81.24737f), Vector3(0, 0, 222)), owning_building_guid = 53, door_guid = 236) - LocalObject(740, IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 51.24737f), Vector3(0, 0, 42)), owning_building_guid = 53, door_guid = 237) - LocalObject(741, IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 61.24737f), Vector3(0, 0, 42)), owning_building_guid = 53, door_guid = 238) - LocalObject(742, IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 81.24737f), Vector3(0, 0, 42)), owning_building_guid = 53, door_guid = 239) + LocalObject( + 737, + IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 51.24737f), Vector3(0, 0, 222)), + owning_building_guid = 53, + door_guid = 234 + ) + LocalObject( + 738, + IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 61.24737f), Vector3(0, 0, 222)), + owning_building_guid = 53, + door_guid = 235 + ) + LocalObject( + 739, + IFFLock.Constructor(Vector3(2592.543f, 3152.053f, 81.24737f), Vector3(0, 0, 222)), + owning_building_guid = 53, + door_guid = 236 + ) + LocalObject( + 740, + IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 51.24737f), Vector3(0, 0, 42)), + owning_building_guid = 53, + door_guid = 237 + ) + LocalObject( + 741, + IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 61.24737f), Vector3(0, 0, 42)), + owning_building_guid = 53, + door_guid = 238 + ) + LocalObject( + 742, + IFFLock.Constructor(Vector3(2601.295f, 3167.885f, 81.24737f), Vector3(0, 0, 42)), + owning_building_guid = 53, + door_guid = 239 + ) LocalObject(917, Locker.Constructor(Vector3(2589.617f, 3146.309f, 39.78037f)), owning_building_guid = 53) LocalObject(918, Locker.Constructor(Vector3(2590.611f, 3145.415f, 39.78037f)), owning_building_guid = 53) LocalObject(919, Locker.Constructor(Vector3(2592.609f, 3143.616f, 39.78037f)), owning_building_guid = 53) @@ -1759,21 +5106,64 @@ object Map05 { // Forseral LocalObject(922, Locker.Constructor(Vector3(2605.272f, 3161.645f, 39.78037f)), owning_building_guid = 53) LocalObject(923, Locker.Constructor(Vector3(2607.244f, 3159.87f, 39.78037f)), owning_building_guid = 53) LocalObject(924, Locker.Constructor(Vector3(2608.286f, 3158.932f, 39.78037f)), owning_building_guid = 53) - LocalObject(1343, Terminal.Constructor(Vector3(2597.333f, 3146.314f, 41.11837f), order_terminal), owning_building_guid = 53) - LocalObject(1344, Terminal.Constructor(Vector3(2601.163f, 3150.568f, 41.11837f), order_terminal), owning_building_guid = 53) - LocalObject(1345, Terminal.Constructor(Vector3(2604.763f, 3154.567f, 41.11837f), order_terminal), owning_building_guid = 53) - LocalObject(1832, SpawnTube.Constructor(Vector3(2587.754f, 3151.727f, 39.26837f), respawn_tube_tower, Vector3(0, 0, 42)), owning_building_guid = 53) - LocalObject(1833, SpawnTube.Constructor(Vector3(2598.734f, 3163.922f, 39.26837f), respawn_tube_tower, Vector3(0, 0, 42)), owning_building_guid = 53) - LocalObject(1692, Painbox.Constructor(Vector3(2587.297f, 3159.01f, 41.07577f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1693, Painbox.Constructor(Vector3(2594.089f, 3149.166f, 39.88637f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1694, Painbox.Constructor(Vector3(2602.236f, 3158.017f, 39.88637f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 1343, + Terminal.Constructor(Vector3(2597.333f, 3146.314f, 41.11837f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1344, + Terminal.Constructor(Vector3(2601.163f, 3150.568f, 41.11837f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1345, + Terminal.Constructor(Vector3(2604.763f, 3154.567f, 41.11837f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1832, + SpawnTube.Constructor(Vector3(2587.754f, 3151.727f, 39.26837f), respawn_tube_tower, Vector3(0, 0, 42)), + owning_building_guid = 53 + ) + LocalObject( + 1833, + SpawnTube.Constructor(Vector3(2598.734f, 3163.922f, 39.26837f), respawn_tube_tower, Vector3(0, 0, 42)), + owning_building_guid = 53 + ) + LocalObject( + 1692, + Painbox.Constructor(Vector3(2587.297f, 3159.01f, 41.07577f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1693, + Painbox.Constructor(Vector3(2594.089f, 3149.166f, 39.88637f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1694, + Painbox.Constructor(Vector3(2602.236f, 3158.017f, 39.88637f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building26() def Building26(): Unit = { // Name: N_Bel_Tower Type: tower_b GUID: 54, MapID: 26 - LocalBuilding("N_Bel_Tower", 54, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3568f, 5310f, 53.99487f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1897, CaptureTerminal.Constructor(Vector3(3584.587f, 5309.897f, 73.99387f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "N_Bel_Tower", + 54, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3568f, 5310f, 53.99487f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1897, + CaptureTerminal.Constructor(Vector3(3584.587f, 5309.897f, 73.99387f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(288, Door.Constructor(Vector3(3580f, 5302f, 55.51487f)), owning_building_guid = 54) LocalObject(289, Door.Constructor(Vector3(3580f, 5302f, 65.51488f)), owning_building_guid = 54) LocalObject(290, Door.Constructor(Vector3(3580f, 5302f, 85.51488f)), owning_building_guid = 54) @@ -1782,12 +5172,42 @@ object Map05 { // Forseral LocalObject(293, Door.Constructor(Vector3(3580f, 5318f, 85.51488f)), owning_building_guid = 54) LocalObject(1993, Door.Constructor(Vector3(3579.147f, 5298.794f, 45.33087f)), owning_building_guid = 54) LocalObject(1994, Door.Constructor(Vector3(3579.147f, 5315.204f, 45.33087f)), owning_building_guid = 54) - LocalObject(770, IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 55.45587f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 291) - LocalObject(771, IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 65.45587f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 292) - LocalObject(772, IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 85.45587f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 293) - LocalObject(773, IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 55.45587f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 288) - LocalObject(774, IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 65.45587f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 289) - LocalObject(775, IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 85.45587f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 290) + LocalObject( + 770, + IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 55.45587f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 291 + ) + LocalObject( + 771, + IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 65.45587f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 292 + ) + LocalObject( + 772, + IFFLock.Constructor(Vector3(3577.957f, 5318.811f, 85.45587f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 293 + ) + LocalObject( + 773, + IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 55.45587f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 288 + ) + LocalObject( + 774, + IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 65.45587f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 289 + ) + LocalObject( + 775, + IFFLock.Constructor(Vector3(3582.047f, 5301.189f, 85.45587f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 290 + ) LocalObject(970, Locker.Constructor(Vector3(3583.716f, 5294.963f, 43.98887f)), owning_building_guid = 54) LocalObject(971, Locker.Constructor(Vector3(3583.751f, 5316.835f, 43.98887f)), owning_building_guid = 54) LocalObject(973, Locker.Constructor(Vector3(3585.053f, 5294.963f, 43.98887f)), owning_building_guid = 54) @@ -1796,21 +5216,64 @@ object Map05 { // Forseral LocalObject(978, Locker.Constructor(Vector3(3587.741f, 5316.835f, 43.98887f)), owning_building_guid = 54) LocalObject(980, Locker.Constructor(Vector3(3589.143f, 5294.963f, 43.98887f)), owning_building_guid = 54) LocalObject(981, Locker.Constructor(Vector3(3589.143f, 5316.835f, 43.98887f)), owning_building_guid = 54) - LocalObject(1361, Terminal.Constructor(Vector3(3589.446f, 5300.129f, 45.32687f), order_terminal), owning_building_guid = 54) - LocalObject(1362, Terminal.Constructor(Vector3(3589.446f, 5305.853f, 45.32687f), order_terminal), owning_building_guid = 54) - LocalObject(1363, Terminal.Constructor(Vector3(3589.446f, 5311.234f, 45.32687f), order_terminal), owning_building_guid = 54) - LocalObject(1844, SpawnTube.Constructor(Vector3(3578.706f, 5297.742f, 43.47688f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1845, SpawnTube.Constructor(Vector3(3578.706f, 5314.152f, 43.47688f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1695, Painbox.Constructor(Vector3(3573.493f, 5302.849f, 45.28427f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1698, Painbox.Constructor(Vector3(3585.127f, 5300.078f, 44.09487f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1699, Painbox.Constructor(Vector3(3585.259f, 5312.107f, 44.09487f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 1361, + Terminal.Constructor(Vector3(3589.446f, 5300.129f, 45.32687f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1362, + Terminal.Constructor(Vector3(3589.446f, 5305.853f, 45.32687f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1363, + Terminal.Constructor(Vector3(3589.446f, 5311.234f, 45.32687f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1844, + SpawnTube.Constructor(Vector3(3578.706f, 5297.742f, 43.47688f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1845, + SpawnTube.Constructor(Vector3(3578.706f, 5314.152f, 43.47688f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1695, + Painbox.Constructor(Vector3(3573.493f, 5302.849f, 45.28427f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1698, + Painbox.Constructor(Vector3(3585.127f, 5300.078f, 44.09487f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1699, + Painbox.Constructor(Vector3(3585.259f, 5312.107f, 44.09487f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building38() def Building38(): Unit = { // Name: S_Neit_Tower Type: tower_b GUID: 55, MapID: 38 - LocalBuilding("S_Neit_Tower", 55, 38, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4440f, 3986f, 67.92352f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1902, CaptureTerminal.Constructor(Vector3(4456.587f, 3985.897f, 87.92252f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "S_Neit_Tower", + 55, + 38, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4440f, 3986f, 67.92352f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1902, + CaptureTerminal.Constructor(Vector3(4456.587f, 3985.897f, 87.92252f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(346, Door.Constructor(Vector3(4452f, 3978f, 69.44352f)), owning_building_guid = 55) LocalObject(347, Door.Constructor(Vector3(4452f, 3978f, 79.44353f)), owning_building_guid = 55) LocalObject(348, Door.Constructor(Vector3(4452f, 3978f, 99.44353f)), owning_building_guid = 55) @@ -1819,12 +5282,42 @@ object Map05 { // Forseral LocalObject(351, Door.Constructor(Vector3(4452f, 3994f, 99.44353f)), owning_building_guid = 55) LocalObject(2010, Door.Constructor(Vector3(4451.147f, 3974.794f, 59.25952f)), owning_building_guid = 55) LocalObject(2011, Door.Constructor(Vector3(4451.147f, 3991.204f, 59.25952f)), owning_building_guid = 55) - LocalObject(818, IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 69.38452f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 349) - LocalObject(819, IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 79.38452f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 350) - LocalObject(820, IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 99.38452f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 351) - LocalObject(821, IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 69.38452f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 346) - LocalObject(822, IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 79.38452f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 347) - LocalObject(823, IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 99.38452f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 348) + LocalObject( + 818, + IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 69.38452f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 349 + ) + LocalObject( + 819, + IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 79.38452f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 350 + ) + LocalObject( + 820, + IFFLock.Constructor(Vector3(4449.957f, 3994.811f, 99.38452f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 351 + ) + LocalObject( + 821, + IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 69.38452f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 346 + ) + LocalObject( + 822, + IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 79.38452f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 347 + ) + LocalObject( + 823, + IFFLock.Constructor(Vector3(4454.047f, 3977.189f, 99.38452f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 348 + ) LocalObject(1051, Locker.Constructor(Vector3(4455.716f, 3970.963f, 57.91752f)), owning_building_guid = 55) LocalObject(1052, Locker.Constructor(Vector3(4455.751f, 3992.835f, 57.91752f)), owning_building_guid = 55) LocalObject(1053, Locker.Constructor(Vector3(4457.053f, 3970.963f, 57.91752f)), owning_building_guid = 55) @@ -1833,21 +5326,64 @@ object Map05 { // Forseral LocalObject(1056, Locker.Constructor(Vector3(4459.741f, 3992.835f, 57.91752f)), owning_building_guid = 55) LocalObject(1057, Locker.Constructor(Vector3(4461.143f, 3970.963f, 57.91752f)), owning_building_guid = 55) LocalObject(1058, Locker.Constructor(Vector3(4461.143f, 3992.835f, 57.91752f)), owning_building_guid = 55) - LocalObject(1390, Terminal.Constructor(Vector3(4461.446f, 3976.129f, 59.25552f), order_terminal), owning_building_guid = 55) - LocalObject(1391, Terminal.Constructor(Vector3(4461.446f, 3981.853f, 59.25552f), order_terminal), owning_building_guid = 55) - LocalObject(1392, Terminal.Constructor(Vector3(4461.446f, 3987.234f, 59.25552f), order_terminal), owning_building_guid = 55) - LocalObject(1861, SpawnTube.Constructor(Vector3(4450.706f, 3973.742f, 57.40553f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1862, SpawnTube.Constructor(Vector3(4450.706f, 3990.152f, 57.40553f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1713, Painbox.Constructor(Vector3(4445.493f, 3978.849f, 59.21292f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1714, Painbox.Constructor(Vector3(4457.127f, 3976.078f, 58.02352f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1715, Painbox.Constructor(Vector3(4457.259f, 3988.107f, 58.02352f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 1390, + Terminal.Constructor(Vector3(4461.446f, 3976.129f, 59.25552f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1391, + Terminal.Constructor(Vector3(4461.446f, 3981.853f, 59.25552f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1392, + Terminal.Constructor(Vector3(4461.446f, 3987.234f, 59.25552f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1861, + SpawnTube.Constructor(Vector3(4450.706f, 3973.742f, 57.40553f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1862, + SpawnTube.Constructor(Vector3(4450.706f, 3990.152f, 57.40553f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1713, + Painbox.Constructor(Vector3(4445.493f, 3978.849f, 59.21292f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1714, + Painbox.Constructor(Vector3(4457.127f, 3976.078f, 58.02352f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1715, + Painbox.Constructor(Vector3(4457.259f, 3988.107f, 58.02352f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building18() def Building18(): Unit = { // Name: E_TRSanc_Warpgate_Tower Type: tower_b GUID: 56, MapID: 18 - LocalBuilding("E_TRSanc_Warpgate_Tower", 56, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4822f, 2820f, 67.8167f), Vector3(0f, 0f, 34f), tower_b))) - LocalObject(1905, CaptureTerminal.Constructor(Vector3(4835.809f, 2829.19f, 87.8157f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "E_TRSanc_Warpgate_Tower", + 56, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4822f, 2820f, 67.8167f), Vector3(0f, 0f, 34f), tower_b) + ) + ) + LocalObject( + 1905, + CaptureTerminal.Constructor(Vector3(4835.809f, 2829.19f, 87.8157f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(389, Door.Constructor(Vector3(4827.475f, 2833.343f, 69.3367f)), owning_building_guid = 56) LocalObject(390, Door.Constructor(Vector3(4827.475f, 2833.343f, 79.3367f)), owning_building_guid = 56) LocalObject(391, Door.Constructor(Vector3(4827.475f, 2833.343f, 99.3367f)), owning_building_guid = 56) @@ -1856,12 +5392,42 @@ object Map05 { // Forseral LocalObject(395, Door.Constructor(Vector3(4836.422f, 2820.078f, 99.3367f)), owning_building_guid = 56) LocalObject(2022, Door.Constructor(Vector3(4828.331f, 2830.548f, 59.1527f)), owning_building_guid = 56) LocalObject(2023, Door.Constructor(Vector3(4837.508f, 2816.943f, 59.1527f)), owning_building_guid = 56) - LocalObject(853, IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 69.2777f), Vector3(0, 0, 326)), owning_building_guid = 56, door_guid = 389) - LocalObject(854, IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 79.2777f), Vector3(0, 0, 326)), owning_building_guid = 56, door_guid = 390) - LocalObject(855, IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 99.2777f), Vector3(0, 0, 326)), owning_building_guid = 56, door_guid = 391) - LocalObject(857, IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 69.2777f), Vector3(0, 0, 146)), owning_building_guid = 56, door_guid = 393) - LocalObject(858, IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 79.2777f), Vector3(0, 0, 146)), owning_building_guid = 56, door_guid = 394) - LocalObject(859, IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 99.2777f), Vector3(0, 0, 146)), owning_building_guid = 56, door_guid = 395) + LocalObject( + 853, + IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 69.2777f), Vector3(0, 0, 326)), + owning_building_guid = 56, + door_guid = 389 + ) + LocalObject( + 854, + IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 79.2777f), Vector3(0, 0, 326)), + owning_building_guid = 56, + door_guid = 390 + ) + LocalObject( + 855, + IFFLock.Constructor(Vector3(4825.328f, 2832.873f, 99.2777f), Vector3(0, 0, 326)), + owning_building_guid = 56, + door_guid = 391 + ) + LocalObject( + 857, + IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 69.2777f), Vector3(0, 0, 146)), + owning_building_guid = 56, + door_guid = 393 + ) + LocalObject( + 858, + IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 79.2777f), Vector3(0, 0, 146)), + owning_building_guid = 56, + door_guid = 394 + ) + LocalObject( + 859, + IFFLock.Constructor(Vector3(4838.573f, 2820.55f, 99.2777f), Vector3(0, 0, 146)), + owning_building_guid = 56, + door_guid = 395 + ) LocalObject(1099, Locker.Constructor(Vector3(4831.236f, 2834.474f, 57.8107f)), owning_building_guid = 56) LocalObject(1100, Locker.Constructor(Vector3(4832.345f, 2835.222f, 57.8107f)), owning_building_guid = 56) LocalObject(1101, Locker.Constructor(Vector3(4834.544f, 2836.706f, 57.8107f)), owning_building_guid = 56) @@ -1870,21 +5436,64 @@ object Map05 { // Forseral LocalObject(1104, Locker.Constructor(Vector3(4844.546f, 2817.07f, 57.8107f)), owning_building_guid = 56) LocalObject(1105, Locker.Constructor(Vector3(4846.774f, 2818.573f, 57.8107f)), owning_building_guid = 56) LocalObject(1106, Locker.Constructor(Vector3(4847.937f, 2819.357f, 57.8107f)), owning_building_guid = 56) - LocalObject(1412, Terminal.Constructor(Vector3(4839.089f, 2833.015f, 59.1487f), order_terminal), owning_building_guid = 56) - LocalObject(1413, Terminal.Constructor(Vector3(4842.099f, 2828.554f, 59.1487f), order_terminal), owning_building_guid = 56) - LocalObject(1414, Terminal.Constructor(Vector3(4845.299f, 2823.809f, 59.1487f), order_terminal), owning_building_guid = 56) - LocalObject(1873, SpawnTube.Constructor(Vector3(4828.554f, 2829.429f, 57.29871f), respawn_tube_tower, Vector3(0, 0, 326)), owning_building_guid = 56) - LocalObject(1874, SpawnTube.Constructor(Vector3(4837.73f, 2815.824f, 57.29871f), respawn_tube_tower, Vector3(0, 0, 326)), owning_building_guid = 56) - LocalObject(1722, Painbox.Constructor(Vector3(4830.553f, 2817.143f, 59.1061f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1723, Painbox.Constructor(Vector3(4835.131f, 2831.398f, 57.9167f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1724, Painbox.Constructor(Vector3(4841.748f, 2821.352f, 57.9167f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 1412, + Terminal.Constructor(Vector3(4839.089f, 2833.015f, 59.1487f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1413, + Terminal.Constructor(Vector3(4842.099f, 2828.554f, 59.1487f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1414, + Terminal.Constructor(Vector3(4845.299f, 2823.809f, 59.1487f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1873, + SpawnTube.Constructor(Vector3(4828.554f, 2829.429f, 57.29871f), respawn_tube_tower, Vector3(0, 0, 326)), + owning_building_guid = 56 + ) + LocalObject( + 1874, + SpawnTube.Constructor(Vector3(4837.73f, 2815.824f, 57.29871f), respawn_tube_tower, Vector3(0, 0, 326)), + owning_building_guid = 56 + ) + LocalObject( + 1722, + Painbox.Constructor(Vector3(4830.553f, 2817.143f, 59.1061f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1723, + Painbox.Constructor(Vector3(4835.131f, 2831.398f, 57.9167f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1724, + Painbox.Constructor(Vector3(4841.748f, 2821.352f, 57.9167f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building21() def Building21(): Unit = { // Name: N_Dagda_Tower Type: tower_b GUID: 57, MapID: 21 - LocalBuilding("N_Dagda_Tower", 57, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5896f, 4678f, 50.33113f), Vector3(0f, 0f, 14f), tower_b))) - LocalObject(1907, CaptureTerminal.Constructor(Vector3(5912.119f, 4681.913f, 70.33012f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "N_Dagda_Tower", + 57, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5896f, 4678f, 50.33113f), Vector3(0f, 0f, 14f), tower_b) + ) + ) + LocalObject( + 1907, + CaptureTerminal.Constructor(Vector3(5912.119f, 4681.913f, 70.33012f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(421, Door.Constructor(Vector3(5905.708f, 4688.666f, 51.85113f)), owning_building_guid = 57) LocalObject(422, Door.Constructor(Vector3(5905.708f, 4688.666f, 61.85113f)), owning_building_guid = 57) LocalObject(423, Door.Constructor(Vector3(5905.708f, 4688.666f, 81.85113f)), owning_building_guid = 57) @@ -1893,12 +5502,42 @@ object Map05 { // Forseral LocalObject(426, Door.Constructor(Vector3(5909.579f, 4673.141f, 81.85113f)), owning_building_guid = 57) LocalObject(2032, Door.Constructor(Vector3(5905.557f, 4685.746f, 41.66713f)), owning_building_guid = 57) LocalObject(2033, Door.Constructor(Vector3(5909.527f, 4669.824f, 41.66713f)), owning_building_guid = 57) - LocalObject(875, IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 51.79213f), Vector3(0, 0, 346)), owning_building_guid = 57, door_guid = 421) - LocalObject(876, IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 61.79213f), Vector3(0, 0, 346)), owning_building_guid = 57, door_guid = 422) - LocalObject(877, IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 81.79213f), Vector3(0, 0, 346)), owning_building_guid = 57, door_guid = 423) - LocalObject(879, IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 51.79213f), Vector3(0, 0, 166)), owning_building_guid = 57, door_guid = 424) - LocalObject(880, IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 61.79213f), Vector3(0, 0, 166)), owning_building_guid = 57, door_guid = 425) - LocalObject(881, IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 81.79213f), Vector3(0, 0, 166)), owning_building_guid = 57, door_guid = 426) + LocalObject( + 875, + IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 51.79213f), Vector3(0, 0, 346)), + owning_building_guid = 57, + door_guid = 421 + ) + LocalObject( + 876, + IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 61.79213f), Vector3(0, 0, 346)), + owning_building_guid = 57, + door_guid = 422 + ) + LocalObject( + 877, + IFFLock.Constructor(Vector3(5903.53f, 4688.958f, 81.79213f), Vector3(0, 0, 346)), + owning_building_guid = 57, + door_guid = 423 + ) + LocalObject( + 879, + IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 51.79213f), Vector3(0, 0, 166)), + owning_building_guid = 57, + door_guid = 424 + ) + LocalObject( + 880, + IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 61.79213f), Vector3(0, 0, 166)), + owning_building_guid = 57, + door_guid = 425 + ) + LocalObject( + 881, + IFFLock.Constructor(Vector3(5911.761f, 4672.849f, 81.79213f), Vector3(0, 0, 166)), + owning_building_guid = 57, + door_guid = 426 + ) LocalObject(1139, Locker.Constructor(Vector3(5909.629f, 4688.442f, 40.32513f)), owning_building_guid = 57) LocalObject(1140, Locker.Constructor(Vector3(5910.927f, 4688.766f, 40.32513f)), owning_building_guid = 57) LocalObject(1141, Locker.Constructor(Vector3(5913.501f, 4689.408f, 40.32513f)), owning_building_guid = 57) @@ -1907,31 +5546,94 @@ object Map05 { // Forseral LocalObject(1144, Locker.Constructor(Vector3(5916.184f, 4667.535f, 40.32513f)), owning_building_guid = 57) LocalObject(1145, Locker.Constructor(Vector3(5918.792f, 4668.186f, 40.32513f)), owning_building_guid = 57) LocalObject(1146, Locker.Constructor(Vector3(5920.153f, 4668.524f, 40.32513f)), owning_building_guid = 57) - LocalObject(1429, Terminal.Constructor(Vector3(5916.51f, 4684.386f, 41.66313f), order_terminal), owning_building_guid = 57) - LocalObject(1430, Terminal.Constructor(Vector3(5917.812f, 4679.165f, 41.66313f), order_terminal), owning_building_guid = 57) - LocalObject(1431, Terminal.Constructor(Vector3(5919.197f, 4673.61f, 41.66313f), order_terminal), owning_building_guid = 57) - LocalObject(1883, SpawnTube.Constructor(Vector3(5905.383f, 4684.619f, 39.81313f), respawn_tube_tower, Vector3(0, 0, 346)), owning_building_guid = 57) - LocalObject(1884, SpawnTube.Constructor(Vector3(5909.354f, 4668.696f, 39.81313f), respawn_tube_tower, Vector3(0, 0, 346)), owning_building_guid = 57) - LocalObject(1728, Painbox.Constructor(Vector3(5903.06f, 4672.39f, 41.62053f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1729, Painbox.Constructor(Vector3(5912.237f, 4684.22f, 40.43113f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1730, Painbox.Constructor(Vector3(5915.019f, 4672.516f, 40.43113f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 1429, + Terminal.Constructor(Vector3(5916.51f, 4684.386f, 41.66313f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1430, + Terminal.Constructor(Vector3(5917.812f, 4679.165f, 41.66313f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1431, + Terminal.Constructor(Vector3(5919.197f, 4673.61f, 41.66313f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1883, + SpawnTube.Constructor(Vector3(5905.383f, 4684.619f, 39.81313f), respawn_tube_tower, Vector3(0, 0, 346)), + owning_building_guid = 57 + ) + LocalObject( + 1884, + SpawnTube.Constructor(Vector3(5909.354f, 4668.696f, 39.81313f), respawn_tube_tower, Vector3(0, 0, 346)), + owning_building_guid = 57 + ) + LocalObject( + 1728, + Painbox.Constructor(Vector3(5903.06f, 4672.39f, 41.62053f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1729, + Painbox.Constructor(Vector3(5912.237f, 4684.22f, 40.43113f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1730, + Painbox.Constructor(Vector3(5915.019f, 4672.516f, 40.43113f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building16() def Building16(): Unit = { // Name: NE_Anu_Tower Type: tower_c GUID: 58, MapID: 16 - LocalBuilding("NE_Anu_Tower", 58, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3572f, 2702f, 43.39885f), Vector3(0f, 0f, 42f), tower_c))) - LocalObject(1896, CaptureTerminal.Constructor(Vector3(3584.396f, 2713.022f, 53.39785f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "NE_Anu_Tower", + 58, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3572f, 2702f, 43.39885f), Vector3(0f, 0f, 42f), tower_c) + ) + ) + LocalObject( + 1896, + CaptureTerminal.Constructor(Vector3(3584.396f, 2713.022f, 53.39785f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(286, Door.Constructor(Vector3(3575.565f, 2715.975f, 44.91985f)), owning_building_guid = 58) LocalObject(287, Door.Constructor(Vector3(3575.565f, 2715.975f, 64.91885f)), owning_building_guid = 58) LocalObject(294, Door.Constructor(Vector3(3586.271f, 2704.084f, 44.91985f)), owning_building_guid = 58) LocalObject(295, Door.Constructor(Vector3(3586.271f, 2704.084f, 64.91885f)), owning_building_guid = 58) LocalObject(1992, Door.Constructor(Vector3(3576.801f, 2713.325f, 34.73485f)), owning_building_guid = 58) LocalObject(1995, Door.Constructor(Vector3(3587.781f, 2701.13f, 34.73485f)), owning_building_guid = 58) - LocalObject(768, IFFLock.Constructor(Vector3(3573.504f, 2715.21f, 44.85984f), Vector3(0, 0, 318)), owning_building_guid = 58, door_guid = 286) - LocalObject(769, IFFLock.Constructor(Vector3(3573.504f, 2715.21f, 64.85985f), Vector3(0, 0, 318)), owning_building_guid = 58, door_guid = 287) - LocalObject(776, IFFLock.Constructor(Vector3(3588.335f, 2704.851f, 44.85984f), Vector3(0, 0, 138)), owning_building_guid = 58, door_guid = 294) - LocalObject(777, IFFLock.Constructor(Vector3(3588.335f, 2704.851f, 64.85985f), Vector3(0, 0, 138)), owning_building_guid = 58, door_guid = 295) + LocalObject( + 768, + IFFLock.Constructor(Vector3(3573.504f, 2715.21f, 44.85984f), Vector3(0, 0, 318)), + owning_building_guid = 58, + door_guid = 286 + ) + LocalObject( + 769, + IFFLock.Constructor(Vector3(3573.504f, 2715.21f, 64.85985f), Vector3(0, 0, 318)), + owning_building_guid = 58, + door_guid = 287 + ) + LocalObject( + 776, + IFFLock.Constructor(Vector3(3588.335f, 2704.851f, 44.85984f), Vector3(0, 0, 138)), + owning_building_guid = 58, + door_guid = 294 + ) + LocalObject( + 777, + IFFLock.Constructor(Vector3(3588.335f, 2704.851f, 64.85985f), Vector3(0, 0, 138)), + owning_building_guid = 58, + door_guid = 295 + ) LocalObject(965, Locker.Constructor(Vector3(3579.132f, 2717.619f, 33.39285f)), owning_building_guid = 58) LocalObject(966, Locker.Constructor(Vector3(3580.125f, 2718.513f, 33.39285f)), owning_building_guid = 58) LocalObject(967, Locker.Constructor(Vector3(3582.097f, 2720.289f, 33.39285f)), owning_building_guid = 58) @@ -1940,39 +5642,126 @@ object Map05 { // Forseral LocalObject(983, Locker.Constructor(Vector3(3594.735f, 2702.236f, 33.39285f)), owning_building_guid = 58) LocalObject(984, Locker.Constructor(Vector3(3596.732f, 2704.035f, 33.39285f)), owning_building_guid = 58) LocalObject(985, Locker.Constructor(Vector3(3597.774f, 2704.973f, 33.39285f)), owning_building_guid = 58) - LocalObject(1360, Terminal.Constructor(Vector3(3587.111f, 2717.267f, 34.73085f), order_terminal), owning_building_guid = 58) - LocalObject(1364, Terminal.Constructor(Vector3(3590.712f, 2713.268f, 34.73085f), order_terminal), owning_building_guid = 58) - LocalObject(1365, Terminal.Constructor(Vector3(3594.542f, 2709.014f, 34.73085f), order_terminal), owning_building_guid = 58) - LocalObject(1843, SpawnTube.Constructor(Vector3(3577.178f, 2712.249f, 32.88084f), respawn_tube_tower, Vector3(0, 0, 318)), owning_building_guid = 58) - LocalObject(1846, SpawnTube.Constructor(Vector3(3588.158f, 2700.054f, 32.88084f), respawn_tube_tower, Vector3(0, 0, 318)), owning_building_guid = 58) - LocalObject(1605, ProximityTerminal.Constructor(Vector3(3567.728f, 2705.111f, 70.96884f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1606, Terminal.Constructor(Vector3(3567.728f, 2705.111f, 70.96884f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1608, ProximityTerminal.Constructor(Vector3(3574.717f, 2697.349f, 70.96884f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1609, Terminal.Constructor(Vector3(3574.717f, 2697.349f, 70.96884f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1245, FacilityTurret.Constructor(Vector3(3570.912f, 2680.896f, 62.34084f), manned_turret), owning_building_guid = 58) + LocalObject( + 1360, + Terminal.Constructor(Vector3(3587.111f, 2717.267f, 34.73085f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1364, + Terminal.Constructor(Vector3(3590.712f, 2713.268f, 34.73085f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1365, + Terminal.Constructor(Vector3(3594.542f, 2709.014f, 34.73085f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1843, + SpawnTube.Constructor(Vector3(3577.178f, 2712.249f, 32.88084f), respawn_tube_tower, Vector3(0, 0, 318)), + owning_building_guid = 58 + ) + LocalObject( + 1846, + SpawnTube.Constructor(Vector3(3588.158f, 2700.054f, 32.88084f), respawn_tube_tower, Vector3(0, 0, 318)), + owning_building_guid = 58 + ) + LocalObject( + 1605, + ProximityTerminal.Constructor(Vector3(3567.728f, 2705.111f, 70.96884f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1606, + Terminal.Constructor(Vector3(3567.728f, 2705.111f, 70.96884f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1608, + ProximityTerminal.Constructor(Vector3(3574.717f, 2697.349f, 70.96884f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1609, + Terminal.Constructor(Vector3(3574.717f, 2697.349f, 70.96884f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1245, + FacilityTurret.Constructor(Vector3(3570.912f, 2680.896f, 62.34084f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1245, 5075) - LocalObject(1246, FacilityTurret.Constructor(Vector3(3579.453f, 2728.838f, 62.34084f), manned_turret), owning_building_guid = 58) + LocalObject( + 1246, + FacilityTurret.Constructor(Vector3(3579.453f, 2728.838f, 62.34084f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1246, 5076) - LocalObject(1696, Painbox.Constructor(Vector3(3580.095f, 2699.666f, 35.41835f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1697, Painbox.Constructor(Vector3(3583.364f, 2714.953f, 33.49885f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1700, Painbox.Constructor(Vector3(3591.576f, 2705.55f, 33.49885f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 1696, + Painbox.Constructor(Vector3(3580.095f, 2699.666f, 35.41835f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1697, + Painbox.Constructor(Vector3(3583.364f, 2714.953f, 33.49885f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1700, + Painbox.Constructor(Vector3(3591.576f, 2705.55f, 33.49885f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building24() def Building24(): Unit = { // Name: N_Pwyll_Tower Type: tower_c GUID: 59, MapID: 24 - LocalBuilding("N_Pwyll_Tower", 59, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4728f, 5584f, 48.18415f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1904, CaptureTerminal.Constructor(Vector3(4744.587f, 5583.897f, 58.18315f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "N_Pwyll_Tower", + 59, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4728f, 5584f, 48.18415f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1904, + CaptureTerminal.Constructor(Vector3(4744.587f, 5583.897f, 58.18315f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(377, Door.Constructor(Vector3(4740f, 5576f, 49.70515f)), owning_building_guid = 59) LocalObject(378, Door.Constructor(Vector3(4740f, 5576f, 69.70415f)), owning_building_guid = 59) LocalObject(379, Door.Constructor(Vector3(4740f, 5592f, 49.70515f)), owning_building_guid = 59) LocalObject(380, Door.Constructor(Vector3(4740f, 5592f, 69.70415f)), owning_building_guid = 59) LocalObject(2017, Door.Constructor(Vector3(4739.146f, 5572.794f, 39.52015f)), owning_building_guid = 59) LocalObject(2018, Door.Constructor(Vector3(4739.146f, 5589.204f, 39.52015f)), owning_building_guid = 59) - LocalObject(843, IFFLock.Constructor(Vector3(4737.957f, 5592.811f, 49.64515f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 379) - LocalObject(844, IFFLock.Constructor(Vector3(4737.957f, 5592.811f, 69.64515f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 380) - LocalObject(846, IFFLock.Constructor(Vector3(4742.047f, 5575.189f, 49.64515f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 377) - LocalObject(847, IFFLock.Constructor(Vector3(4742.047f, 5575.189f, 69.64515f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 378) + LocalObject( + 843, + IFFLock.Constructor(Vector3(4737.957f, 5592.811f, 49.64515f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 379 + ) + LocalObject( + 844, + IFFLock.Constructor(Vector3(4737.957f, 5592.811f, 69.64515f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 380 + ) + LocalObject( + 846, + IFFLock.Constructor(Vector3(4742.047f, 5575.189f, 49.64515f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 377 + ) + LocalObject( + 847, + IFFLock.Constructor(Vector3(4742.047f, 5575.189f, 69.64515f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 378 + ) LocalObject(1091, Locker.Constructor(Vector3(4743.716f, 5568.963f, 38.17815f)), owning_building_guid = 59) LocalObject(1092, Locker.Constructor(Vector3(4743.751f, 5590.835f, 38.17815f)), owning_building_guid = 59) LocalObject(1093, Locker.Constructor(Vector3(4745.053f, 5568.963f, 38.17815f)), owning_building_guid = 59) @@ -1981,39 +5770,126 @@ object Map05 { // Forseral LocalObject(1096, Locker.Constructor(Vector3(4747.741f, 5590.835f, 38.17815f)), owning_building_guid = 59) LocalObject(1097, Locker.Constructor(Vector3(4749.143f, 5568.963f, 38.17815f)), owning_building_guid = 59) LocalObject(1098, Locker.Constructor(Vector3(4749.143f, 5590.835f, 38.17815f)), owning_building_guid = 59) - LocalObject(1408, Terminal.Constructor(Vector3(4749.445f, 5574.129f, 39.51615f), order_terminal), owning_building_guid = 59) - LocalObject(1409, Terminal.Constructor(Vector3(4749.445f, 5579.853f, 39.51615f), order_terminal), owning_building_guid = 59) - LocalObject(1410, Terminal.Constructor(Vector3(4749.445f, 5585.234f, 39.51615f), order_terminal), owning_building_guid = 59) - LocalObject(1868, SpawnTube.Constructor(Vector3(4738.706f, 5571.742f, 37.66615f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1869, SpawnTube.Constructor(Vector3(4738.706f, 5588.152f, 37.66615f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1611, ProximityTerminal.Constructor(Vector3(4726.907f, 5578.725f, 75.75415f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1612, Terminal.Constructor(Vector3(4726.907f, 5578.725f, 75.75415f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1614, ProximityTerminal.Constructor(Vector3(4726.907f, 5589.17f, 75.75415f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1615, Terminal.Constructor(Vector3(4726.907f, 5589.17f, 75.75415f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1276, FacilityTurret.Constructor(Vector3(4713.07f, 5569.045f, 67.12614f), manned_turret), owning_building_guid = 59) + LocalObject( + 1408, + Terminal.Constructor(Vector3(4749.445f, 5574.129f, 39.51615f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1409, + Terminal.Constructor(Vector3(4749.445f, 5579.853f, 39.51615f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1410, + Terminal.Constructor(Vector3(4749.445f, 5585.234f, 39.51615f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1868, + SpawnTube.Constructor(Vector3(4738.706f, 5571.742f, 37.66615f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1869, + SpawnTube.Constructor(Vector3(4738.706f, 5588.152f, 37.66615f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1611, + ProximityTerminal.Constructor(Vector3(4726.907f, 5578.725f, 75.75415f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1612, + Terminal.Constructor(Vector3(4726.907f, 5578.725f, 75.75415f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1614, + ProximityTerminal.Constructor(Vector3(4726.907f, 5589.17f, 75.75415f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1615, + Terminal.Constructor(Vector3(4726.907f, 5589.17f, 75.75415f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1276, + FacilityTurret.Constructor(Vector3(4713.07f, 5569.045f, 67.12614f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1276, 5077) - LocalObject(1281, FacilityTurret.Constructor(Vector3(4751.497f, 5598.957f, 67.12614f), manned_turret), owning_building_guid = 59) + LocalObject( + 1281, + FacilityTurret.Constructor(Vector3(4751.497f, 5598.957f, 67.12614f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1281, 5078) - LocalObject(1719, Painbox.Constructor(Vector3(4732.454f, 5576.849f, 40.20365f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1720, Painbox.Constructor(Vector3(4744.923f, 5573.54f, 38.28415f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1721, Painbox.Constructor(Vector3(4745.113f, 5586.022f, 38.28415f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 1719, + Painbox.Constructor(Vector3(4732.454f, 5576.849f, 40.20365f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1720, + Painbox.Constructor(Vector3(4744.923f, 5573.54f, 38.28415f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1721, + Painbox.Constructor(Vector3(4745.113f, 5586.022f, 38.28415f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building19() def Building19(): Unit = { // Name: S_Gwydion_Tower Type: tower_c GUID: 60, MapID: 19 - LocalBuilding("S_Gwydion_Tower", 60, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6018f, 2726f, 46.91305f), Vector3(0f, 0f, 308f), tower_c))) - LocalObject(1909, CaptureTerminal.Constructor(Vector3(6028.131f, 2712.866f, 56.91205f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "S_Gwydion_Tower", + 60, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6018f, 2726f, 46.91305f), Vector3(0f, 0f, 308f), tower_c) + ) + ) + LocalObject( + 1909, + CaptureTerminal.Constructor(Vector3(6028.131f, 2712.866f, 56.91205f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(440, Door.Constructor(Vector3(6019.084f, 2711.619f, 48.43405f)), owning_building_guid = 60) LocalObject(441, Door.Constructor(Vector3(6019.084f, 2711.619f, 68.43305f)), owning_building_guid = 60) LocalObject(442, Door.Constructor(Vector3(6031.692f, 2721.469f, 48.43405f)), owning_building_guid = 60) LocalObject(443, Door.Constructor(Vector3(6031.692f, 2721.469f, 68.43305f)), owning_building_guid = 60) LocalObject(2036, Door.Constructor(Vector3(6016.032f, 2710.318f, 38.24905f)), owning_building_guid = 60) LocalObject(2037, Door.Constructor(Vector3(6028.963f, 2720.421f, 38.24905f)), owning_building_guid = 60) - LocalObject(893, IFFLock.Constructor(Vector3(6019.705f, 2709.506f, 48.37405f), Vector3(0, 0, 232)), owning_building_guid = 60, door_guid = 440) - LocalObject(894, IFFLock.Constructor(Vector3(6019.705f, 2709.506f, 68.37405f), Vector3(0, 0, 232)), owning_building_guid = 60, door_guid = 441) - LocalObject(895, IFFLock.Constructor(Vector3(6031.073f, 2723.578f, 48.37405f), Vector3(0, 0, 52)), owning_building_guid = 60, door_guid = 442) - LocalObject(896, IFFLock.Constructor(Vector3(6031.073f, 2723.578f, 68.37405f), Vector3(0, 0, 52)), owning_building_guid = 60, door_guid = 443) + LocalObject( + 893, + IFFLock.Constructor(Vector3(6019.705f, 2709.506f, 48.37405f), Vector3(0, 0, 232)), + owning_building_guid = 60, + door_guid = 440 + ) + LocalObject( + 894, + IFFLock.Constructor(Vector3(6019.705f, 2709.506f, 68.37405f), Vector3(0, 0, 232)), + owning_building_guid = 60, + door_guid = 441 + ) + LocalObject( + 895, + IFFLock.Constructor(Vector3(6031.073f, 2723.578f, 48.37405f), Vector3(0, 0, 52)), + owning_building_guid = 60, + door_guid = 442 + ) + LocalObject( + 896, + IFFLock.Constructor(Vector3(6031.073f, 2723.578f, 68.37405f), Vector3(0, 0, 52)), + owning_building_guid = 60, + door_guid = 443 + ) LocalObject(1155, Locker.Constructor(Vector3(6015.827f, 2704.358f, 36.90705f)), owning_building_guid = 60) LocalObject(1156, Locker.Constructor(Vector3(6016.649f, 2703.304f, 36.90705f)), owning_building_guid = 60) LocalObject(1157, Locker.Constructor(Vector3(6018.305f, 2701.186f, 36.90705f)), owning_building_guid = 60) @@ -2022,39 +5898,126 @@ object Map05 { // Forseral LocalObject(1160, Locker.Constructor(Vector3(6033.906f, 2716.742f, 36.90705f)), owning_building_guid = 60) LocalObject(1161, Locker.Constructor(Vector3(6035.54f, 2714.652f, 36.90705f)), owning_building_guid = 60) LocalObject(1162, Locker.Constructor(Vector3(6036.403f, 2713.547f, 36.90705f)), owning_building_guid = 60) - LocalObject(1435, Terminal.Constructor(Vector3(6023.424f, 2703.024f, 38.24505f), order_terminal), owning_building_guid = 60) - LocalObject(1436, Terminal.Constructor(Vector3(6027.935f, 2706.548f, 38.24505f), order_terminal), owning_building_guid = 60) - LocalObject(1437, Terminal.Constructor(Vector3(6032.175f, 2709.861f, 38.24505f), order_terminal), owning_building_guid = 60) - LocalObject(1887, SpawnTube.Constructor(Vector3(6014.932f, 2710.017f, 36.39505f), respawn_tube_tower, Vector3(0, 0, 52)), owning_building_guid = 60) - LocalObject(1888, SpawnTube.Constructor(Vector3(6027.863f, 2720.12f, 36.39505f), respawn_tube_tower, Vector3(0, 0, 52)), owning_building_guid = 60) - LocalObject(1617, ProximityTerminal.Constructor(Vector3(6013.17f, 2723.614f, 74.48305f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1618, Terminal.Constructor(Vector3(6013.17f, 2723.614f, 74.48305f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1620, ProximityTerminal.Constructor(Vector3(6021.401f, 2730.044f, 74.48305f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1621, Terminal.Constructor(Vector3(6021.401f, 2730.044f, 74.48305f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1300, FacilityTurret.Constructor(Vector3(5997.023f, 2728.558f, 65.85505f), manned_turret), owning_building_guid = 60) + LocalObject( + 1435, + Terminal.Constructor(Vector3(6023.424f, 2703.024f, 38.24505f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1436, + Terminal.Constructor(Vector3(6027.935f, 2706.548f, 38.24505f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1437, + Terminal.Constructor(Vector3(6032.175f, 2709.861f, 38.24505f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1887, + SpawnTube.Constructor(Vector3(6014.932f, 2710.017f, 36.39505f), respawn_tube_tower, Vector3(0, 0, 52)), + owning_building_guid = 60 + ) + LocalObject( + 1888, + SpawnTube.Constructor(Vector3(6027.863f, 2720.12f, 36.39505f), respawn_tube_tower, Vector3(0, 0, 52)), + owning_building_guid = 60 + ) + LocalObject( + 1617, + ProximityTerminal.Constructor(Vector3(6013.17f, 2723.614f, 74.48305f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1618, + Terminal.Constructor(Vector3(6013.17f, 2723.614f, 74.48305f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1620, + ProximityTerminal.Constructor(Vector3(6021.401f, 2730.044f, 74.48305f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1621, + Terminal.Constructor(Vector3(6021.401f, 2730.044f, 74.48305f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1300, + FacilityTurret.Constructor(Vector3(5997.023f, 2728.558f, 65.85505f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1300, 5079) - LocalObject(1301, FacilityTurret.Constructor(Vector3(6044.252f, 2716.693f, 65.85505f), manned_turret), owning_building_guid = 60) + LocalObject( + 1301, + FacilityTurret.Constructor(Vector3(6044.252f, 2716.693f, 65.85505f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1301, 5080) - LocalObject(1734, Painbox.Constructor(Vector3(6015.107f, 2718.088f, 38.93255f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1735, Painbox.Constructor(Vector3(6020.176f, 2706.224f, 37.01305f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1736, Painbox.Constructor(Vector3(6030.129f, 2713.76f, 37.01305f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1734, + Painbox.Constructor(Vector3(6015.107f, 2718.088f, 38.93255f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1735, + Painbox.Constructor(Vector3(6020.176f, 2706.224f, 37.01305f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1736, + Painbox.Constructor(Vector3(6030.129f, 2713.76f, 37.01305f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building23() def Building23(): Unit = { // Name: W_Oshur_Warpgate_Tower Type: tower_c GUID: 61, MapID: 23 - LocalBuilding("W_Oshur_Warpgate_Tower", 61, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7008f, 3838f, 49.3027f), Vector3(0f, 0f, 106f), tower_c))) - LocalObject(1910, CaptureTerminal.Constructor(Vector3(7003.527f, 3853.973f, 59.3017f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "W_Oshur_Warpgate_Tower", + 61, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7008f, 3838f, 49.3027f), Vector3(0f, 0f, 106f), tower_c) + ) + ) + LocalObject( + 1910, + CaptureTerminal.Constructor(Vector3(7003.527f, 3853.973f, 59.3017f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(455, Door.Constructor(Vector3(6997.002f, 3847.33f, 50.8237f)), owning_building_guid = 61) LocalObject(456, Door.Constructor(Vector3(6997.002f, 3847.33f, 70.8227f)), owning_building_guid = 61) LocalObject(457, Door.Constructor(Vector3(7012.382f, 3851.74f, 50.8237f)), owning_building_guid = 61) LocalObject(458, Door.Constructor(Vector3(7012.382f, 3851.74f, 70.8227f)), owning_building_guid = 61) LocalObject(2041, Door.Constructor(Vector3(6999.925f, 3847.28f, 40.6387f)), owning_building_guid = 61) LocalObject(2042, Door.Constructor(Vector3(7015.7f, 3851.803f, 40.6387f)), owning_building_guid = 61) - LocalObject(905, IFFLock.Constructor(Vector3(6996.786f, 3845.143f, 50.7637f), Vector3(0, 0, 254)), owning_building_guid = 61, door_guid = 455) - LocalObject(906, IFFLock.Constructor(Vector3(6996.786f, 3845.143f, 70.7637f), Vector3(0, 0, 254)), owning_building_guid = 61, door_guid = 456) - LocalObject(907, IFFLock.Constructor(Vector3(7012.598f, 3853.931f, 50.7637f), Vector3(0, 0, 74)), owning_building_guid = 61, door_guid = 457) - LocalObject(908, IFFLock.Constructor(Vector3(7012.598f, 3853.931f, 70.7637f), Vector3(0, 0, 74)), owning_building_guid = 61, door_guid = 458) + LocalObject( + 905, + IFFLock.Constructor(Vector3(6996.786f, 3845.143f, 50.7637f), Vector3(0, 0, 254)), + owning_building_guid = 61, + door_guid = 455 + ) + LocalObject( + 906, + IFFLock.Constructor(Vector3(6996.786f, 3845.143f, 70.7637f), Vector3(0, 0, 254)), + owning_building_guid = 61, + door_guid = 456 + ) + LocalObject( + 907, + IFFLock.Constructor(Vector3(7012.598f, 3853.931f, 50.7637f), Vector3(0, 0, 74)), + owning_building_guid = 61, + door_guid = 457 + ) + LocalObject( + 908, + IFFLock.Constructor(Vector3(7012.598f, 3853.931f, 70.7637f), Vector3(0, 0, 74)), + owning_building_guid = 61, + door_guid = 458 + ) LocalObject(1184, Locker.Constructor(Vector3(6995.602f, 3856.44f, 39.2967f)), owning_building_guid = 61) LocalObject(1185, Locker.Constructor(Vector3(6995.988f, 3855.092f, 39.2967f)), owning_building_guid = 61) LocalObject(1186, Locker.Constructor(Vector3(6996.72f, 3852.542f, 39.2967f)), owning_building_guid = 61) @@ -2063,46 +6026,122 @@ object Map05 { // Forseral LocalObject(1189, Locker.Constructor(Vector3(7017.013f, 3861.121f, 39.2967f)), owning_building_guid = 61) LocalObject(1190, Locker.Constructor(Vector3(7017.754f, 3858.537f, 39.2967f)), owning_building_guid = 61) LocalObject(1191, Locker.Constructor(Vector3(7018.123f, 3857.252f, 39.2967f)), owning_building_guid = 61) - LocalObject(1442, Terminal.Constructor(Vector3(7000.903f, 3858.274f, 40.6347f), order_terminal), owning_building_guid = 61) - LocalObject(1443, Terminal.Constructor(Vector3(7006.075f, 3859.757f, 40.6347f), order_terminal), owning_building_guid = 61) - LocalObject(1444, Terminal.Constructor(Vector3(7011.578f, 3861.335f, 40.6347f), order_terminal), owning_building_guid = 61) - LocalObject(1892, SpawnTube.Constructor(Vector3(7001.058f, 3847.147f, 38.7847f), respawn_tube_tower, Vector3(0, 0, 254)), owning_building_guid = 61) - LocalObject(1893, SpawnTube.Constructor(Vector3(7016.832f, 3851.67f, 38.7847f), respawn_tube_tower, Vector3(0, 0, 254)), owning_building_guid = 61) - LocalObject(1623, ProximityTerminal.Constructor(Vector3(7003.332f, 3835.524f, 76.8727f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(1624, Terminal.Constructor(Vector3(7003.332f, 3835.524f, 76.8727f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(1626, ProximityTerminal.Constructor(Vector3(7013.372f, 3838.403f, 76.8727f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(1627, Terminal.Constructor(Vector3(7013.372f, 3838.403f, 76.8727f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(1307, FacilityTurret.Constructor(Vector3(6987.146f, 3856.464f, 68.2447f), manned_turret), owning_building_guid = 61) + LocalObject( + 1442, + Terminal.Constructor(Vector3(7000.903f, 3858.274f, 40.6347f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1443, + Terminal.Constructor(Vector3(7006.075f, 3859.757f, 40.6347f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1444, + Terminal.Constructor(Vector3(7011.578f, 3861.335f, 40.6347f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1892, + SpawnTube.Constructor(Vector3(7001.058f, 3847.147f, 38.7847f), respawn_tube_tower, Vector3(0, 0, 254)), + owning_building_guid = 61 + ) + LocalObject( + 1893, + SpawnTube.Constructor(Vector3(7016.832f, 3851.67f, 38.7847f), respawn_tube_tower, Vector3(0, 0, 254)), + owning_building_guid = 61 + ) + LocalObject( + 1623, + ProximityTerminal.Constructor(Vector3(7003.332f, 3835.524f, 76.8727f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 1624, + Terminal.Constructor(Vector3(7003.332f, 3835.524f, 76.8727f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1626, + ProximityTerminal.Constructor(Vector3(7013.372f, 3838.403f, 76.8727f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 1627, + Terminal.Constructor(Vector3(7013.372f, 3838.403f, 76.8727f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1307, + FacilityTurret.Constructor(Vector3(6987.146f, 3856.464f, 68.2447f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1307, 5081) - LocalObject(1308, FacilityTurret.Constructor(Vector3(7026.491f, 3827.771f, 68.2447f), manned_turret), owning_building_guid = 61) + LocalObject( + 1308, + FacilityTurret.Constructor(Vector3(7026.491f, 3827.771f, 68.2447f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1308, 5082) - LocalObject(1737, Painbox.Constructor(Vector3(7001.339f, 3853.893f, 39.4027f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1738, Painbox.Constructor(Vector3(7013.391f, 3857.151f, 39.4027f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1739, Painbox.Constructor(Vector3(7013.646f, 3844.252f, 41.3222f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1737, + Painbox.Constructor(Vector3(7001.339f, 3853.893f, 39.4027f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1738, + Painbox.Constructor(Vector3(7013.391f, 3857.151f, 39.4027f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1739, + Painbox.Constructor(Vector3(7013.646f, 3844.252f, 41.3222f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building3() def Building3(): Unit = { // Name: WG_Forseral_to_Solsar Type: warpgate GUID: 62, MapID: 3 - LocalBuilding("WG_Forseral_to_Solsar", 62, 3, FoundationBuilder(WarpGate.Structure(Vector3(1556f, 3690f, 53.5783f)))) + LocalBuilding( + "WG_Forseral_to_Solsar", + 62, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(1556f, 3690f, 53.5783f))) + ) } Building1() def Building1(): Unit = { // Name: WG_Forseral_to_TRSanc Type: warpgate GUID: 63, MapID: 1 - LocalBuilding("WG_Forseral_to_TRSanc", 63, 1, FoundationBuilder(WarpGate.Structure(Vector3(3330f, 1338f, 42.85409f)))) + LocalBuilding( + "WG_Forseral_to_TRSanc", + 63, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(3330f, 1338f, 42.85409f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Forseral_to_Ceryshen Type: warpgate GUID: 64, MapID: 2 - LocalBuilding("WG_Forseral_to_Ceryshen", 64, 2, FoundationBuilder(WarpGate.Structure(Vector3(3432f, 6630f, 73.72356f)))) + LocalBuilding( + "WG_Forseral_to_Ceryshen", + 64, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(3432f, 6630f, 73.72356f))) + ) } Building4() def Building4(): Unit = { // Name: WG_Forseral_to_Oshur Type: warpgate GUID: 65, MapID: 4 - LocalBuilding("WG_Forseral_to_Oshur", 65, 4, FoundationBuilder(WarpGate.Structure(Vector3(7328f, 3850f, 47.09464f)))) + LocalBuilding( + "WG_Forseral_to_Oshur", + 65, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(7328f, 3850f, 47.09464f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map06.scala b/pslogin/src/main/scala/zonemaps/Map06.scala index bc856f05..41913d5c 100644 --- a/pslogin/src/main/scala/zonemaps/Map06.scala +++ b/pslogin/src/main/scala/zonemaps/Map06.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map06 { // Ceryshen Building1() def Building1(): Unit = { // Name: Akna Type: amp_station GUID: 1, MapID: 1 - LocalBuilding("Akna", 1, 1, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4406f, 3738f, 218.9079f), Vector3(0f, 0f, 312f), amp_station))) - LocalObject(181, CaptureTerminal.Constructor(Vector3(4403.77f, 3740.481f, 230.4159f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Akna", + 1, + 1, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4406f, 3738f, 218.9079f), + Vector3(0f, 0f, 312f), + amp_station + ) + ) + ) + LocalObject( + 181, + CaptureTerminal.Constructor(Vector3(4403.77f, 3740.481f, 230.4159f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(146, Door.Constructor(Vector3(4401.084f, 3733.29f, 231.8099f)), owning_building_guid = 1) LocalObject(147, Door.Constructor(Vector3(4411.2f, 3742.394f, 231.8099f)), owning_building_guid = 1) LocalObject(423, Door.Constructor(Vector3(4319.27f, 3751.38f, 220.6589f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map06 { // Ceryshen LocalObject(2335, Door.Constructor(Vector3(4385.438f, 3745.493f, 213.4619f)), owning_building_guid = 1) LocalObject(2336, Door.Constructor(Vector3(4390.857f, 3750.373f, 213.4619f)), owning_building_guid = 1) LocalObject(2337, Door.Constructor(Vector3(4396.274f, 3755.25f, 213.4619f)), owning_building_guid = 1) - LocalObject(753, IFFLock.Constructor(Vector3(4429.634f, 3716.334f, 220.5879f), Vector3(0, 0, 138)), owning_building_guid = 1, door_guid = 717) - LocalObject(908, IFFLock.Constructor(Vector3(4372.619f, 3771.444f, 205.4439f), Vector3(0, 0, 138)), owning_building_guid = 1, door_guid = 647) - LocalObject(909, IFFLock.Constructor(Vector3(4378.333f, 3720.011f, 230.5689f), Vector3(0, 0, 318)), owning_building_guid = 1, door_guid = 436) - LocalObject(910, IFFLock.Constructor(Vector3(4380.39f, 3712.193f, 225.5699f), Vector3(0, 0, 228)), owning_building_guid = 1, door_guid = 435) - LocalObject(911, IFFLock.Constructor(Vector3(4386.53f, 3734.501f, 212.9439f), Vector3(0, 0, 228)), owning_building_guid = 1, door_guid = 654) - LocalObject(912, IFFLock.Constructor(Vector3(4388.523f, 3714.806f, 230.5689f), Vector3(0, 0, 138)), owning_building_guid = 1, door_guid = 437) - LocalObject(913, IFFLock.Constructor(Vector3(4395.285f, 3729.617f, 205.4439f), Vector3(0, 0, 318)), owning_building_guid = 1, door_guid = 657) - LocalObject(914, IFFLock.Constructor(Vector3(4403.563f, 3754.069f, 212.9439f), Vector3(0, 0, 48)), owning_building_guid = 1, door_guid = 658) - LocalObject(915, IFFLock.Constructor(Vector3(4413.844f, 3850.081f, 220.5679f), Vector3(0, 0, 48)), owning_building_guid = 1, door_guid = 443) - LocalObject(916, IFFLock.Constructor(Vector3(4423.768f, 3760.92f, 230.5689f), Vector3(0, 0, 318)), owning_building_guid = 1, door_guid = 444) - LocalObject(917, IFFLock.Constructor(Vector3(4431.624f, 3763.823f, 225.5699f), Vector3(0, 0, 48)), owning_building_guid = 1, door_guid = 446) - LocalObject(918, IFFLock.Constructor(Vector3(4433.959f, 3755.717f, 230.5689f), Vector3(0, 0, 138)), owning_building_guid = 1, door_guid = 445) + LocalObject( + 753, + IFFLock.Constructor(Vector3(4429.634f, 3716.334f, 220.5879f), Vector3(0, 0, 138)), + owning_building_guid = 1, + door_guid = 717 + ) + LocalObject( + 908, + IFFLock.Constructor(Vector3(4372.619f, 3771.444f, 205.4439f), Vector3(0, 0, 138)), + owning_building_guid = 1, + door_guid = 647 + ) + LocalObject( + 909, + IFFLock.Constructor(Vector3(4378.333f, 3720.011f, 230.5689f), Vector3(0, 0, 318)), + owning_building_guid = 1, + door_guid = 436 + ) + LocalObject( + 910, + IFFLock.Constructor(Vector3(4380.39f, 3712.193f, 225.5699f), Vector3(0, 0, 228)), + owning_building_guid = 1, + door_guid = 435 + ) + LocalObject( + 911, + IFFLock.Constructor(Vector3(4386.53f, 3734.501f, 212.9439f), Vector3(0, 0, 228)), + owning_building_guid = 1, + door_guid = 654 + ) + LocalObject( + 912, + IFFLock.Constructor(Vector3(4388.523f, 3714.806f, 230.5689f), Vector3(0, 0, 138)), + owning_building_guid = 1, + door_guid = 437 + ) + LocalObject( + 913, + IFFLock.Constructor(Vector3(4395.285f, 3729.617f, 205.4439f), Vector3(0, 0, 318)), + owning_building_guid = 1, + door_guid = 657 + ) + LocalObject( + 914, + IFFLock.Constructor(Vector3(4403.563f, 3754.069f, 212.9439f), Vector3(0, 0, 48)), + owning_building_guid = 1, + door_guid = 658 + ) + LocalObject( + 915, + IFFLock.Constructor(Vector3(4413.844f, 3850.081f, 220.5679f), Vector3(0, 0, 48)), + owning_building_guid = 1, + door_guid = 443 + ) + LocalObject( + 916, + IFFLock.Constructor(Vector3(4423.768f, 3760.92f, 230.5689f), Vector3(0, 0, 318)), + owning_building_guid = 1, + door_guid = 444 + ) + LocalObject( + 917, + IFFLock.Constructor(Vector3(4431.624f, 3763.823f, 225.5699f), Vector3(0, 0, 48)), + owning_building_guid = 1, + door_guid = 446 + ) + LocalObject( + 918, + IFFLock.Constructor(Vector3(4433.959f, 3755.717f, 230.5689f), Vector3(0, 0, 138)), + owning_building_guid = 1, + door_guid = 445 + ) LocalObject(1229, Locker.Constructor(Vector3(4390.055f, 3734.996f, 211.8689f)), owning_building_guid = 1) LocalObject(1230, Locker.Constructor(Vector3(4390.834f, 3734.131f, 211.8689f)), owning_building_guid = 1) LocalObject(1231, Locker.Constructor(Vector3(4391.602f, 3733.279f, 211.8689f)), owning_building_guid = 1) @@ -94,64 +170,253 @@ object Map06 { // Ceryshen LocalObject(1238, Locker.Constructor(Vector3(4418.648f, 3733.167f, 204.1079f)), owning_building_guid = 1) LocalObject(1239, Locker.Constructor(Vector3(4419.542f, 3732.174f, 204.1079f)), owning_building_guid = 1) LocalObject(1240, Locker.Constructor(Vector3(4420.437f, 3731.18f, 204.1079f)), owning_building_guid = 1) - LocalObject(1594, Terminal.Constructor(Vector3(4389.295f, 3722.961f, 220.4369f), order_terminal), owning_building_guid = 1) - LocalObject(1595, Terminal.Constructor(Vector3(4390.964f, 3754.694f, 220.4369f), order_terminal), owning_building_guid = 1) - LocalObject(1596, Terminal.Constructor(Vector3(4396.038f, 3736.224f, 213.1979f), order_terminal), owning_building_guid = 1) - LocalObject(1597, Terminal.Constructor(Vector3(4398.811f, 3738.72f, 213.1979f), order_terminal), owning_building_guid = 1) - LocalObject(1598, Terminal.Constructor(Vector3(4401.626f, 3741.256f, 213.1979f), order_terminal), owning_building_guid = 1) - LocalObject(1599, Terminal.Constructor(Vector3(4422.702f, 3753.042f, 220.4369f), order_terminal), owning_building_guid = 1) - LocalObject(2255, Terminal.Constructor(Vector3(4383.787f, 3743.605f, 213.7419f), spawn_terminal), owning_building_guid = 1) - LocalObject(2256, Terminal.Constructor(Vector3(4389.203f, 3748.488f, 213.7419f), spawn_terminal), owning_building_guid = 1) - LocalObject(2257, Terminal.Constructor(Vector3(4394.621f, 3753.362f, 213.7419f), spawn_terminal), owning_building_guid = 1) - LocalObject(2258, Terminal.Constructor(Vector3(4398.973f, 3739.079f, 225.6359f), spawn_terminal), owning_building_guid = 1) - LocalObject(2259, Terminal.Constructor(Vector3(4401.431f, 3766.103f, 205.6649f), spawn_terminal), owning_building_guid = 1) - LocalObject(2260, Terminal.Constructor(Vector3(4403.207f, 3799.998f, 213.1649f), spawn_terminal), owning_building_guid = 1) - LocalObject(2420, Terminal.Constructor(Vector3(4435.221f, 3828.801f, 221.0099f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1480, VehicleSpawnPad.Constructor(Vector3(4425.146f, 3819.608f, 216.8529f), mb_pad_creation, Vector3(0, 0, 228)), owning_building_guid = 1, terminal_guid = 2420) + LocalObject( + 1594, + Terminal.Constructor(Vector3(4389.295f, 3722.961f, 220.4369f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1595, + Terminal.Constructor(Vector3(4390.964f, 3754.694f, 220.4369f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1596, + Terminal.Constructor(Vector3(4396.038f, 3736.224f, 213.1979f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1597, + Terminal.Constructor(Vector3(4398.811f, 3738.72f, 213.1979f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1598, + Terminal.Constructor(Vector3(4401.626f, 3741.256f, 213.1979f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1599, + Terminal.Constructor(Vector3(4422.702f, 3753.042f, 220.4369f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2255, + Terminal.Constructor(Vector3(4383.787f, 3743.605f, 213.7419f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2256, + Terminal.Constructor(Vector3(4389.203f, 3748.488f, 213.7419f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2257, + Terminal.Constructor(Vector3(4394.621f, 3753.362f, 213.7419f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2258, + Terminal.Constructor(Vector3(4398.973f, 3739.079f, 225.6359f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2259, + Terminal.Constructor(Vector3(4401.431f, 3766.103f, 205.6649f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2260, + Terminal.Constructor(Vector3(4403.207f, 3799.998f, 213.1649f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2420, + Terminal.Constructor(Vector3(4435.221f, 3828.801f, 221.0099f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1480, + VehicleSpawnPad.Constructor(Vector3(4425.146f, 3819.608f, 216.8529f), mb_pad_creation, Vector3(0, 0, 228)), + owning_building_guid = 1, + terminal_guid = 2420 + ) LocalObject(2095, ResourceSilo.Constructor(Vector3(4377.691f, 3641.67f, 226.1429f)), owning_building_guid = 1) - LocalObject(2158, SpawnTube.Constructor(Vector3(4384.363f, 3745.117f, 211.6079f), Vector3(0, 0, 48)), owning_building_guid = 1) - LocalObject(2159, SpawnTube.Constructor(Vector3(4389.781f, 3749.996f, 211.6079f), Vector3(0, 0, 48)), owning_building_guid = 1) - LocalObject(2160, SpawnTube.Constructor(Vector3(4395.197f, 3754.873f, 211.6079f), Vector3(0, 0, 48)), owning_building_guid = 1) - LocalObject(1495, ProximityTerminal.Constructor(Vector3(4391.243f, 3754.381f, 224.1079f), medical_terminal), owning_building_guid = 1) - LocalObject(1496, ProximityTerminal.Constructor(Vector3(4415.827f, 3735.485f, 204.1079f), medical_terminal), owning_building_guid = 1) - LocalObject(1768, ProximityTerminal.Constructor(Vector3(4356.935f, 3682.656f, 227.4359f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1769, Terminal.Constructor(Vector3(4356.935f, 3682.656f, 227.4359f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1771, ProximityTerminal.Constructor(Vector3(4382.386f, 3793.773f, 227.4129f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1772, Terminal.Constructor(Vector3(4382.386f, 3793.773f, 227.4129f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1774, ProximityTerminal.Constructor(Vector3(4424.299f, 3688.036f, 227.4129f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1775, Terminal.Constructor(Vector3(4424.299f, 3688.036f, 227.4129f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1777, ProximityTerminal.Constructor(Vector3(4466.462f, 3756.651f, 229.5739f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1778, Terminal.Constructor(Vector3(4466.462f, 3756.651f, 229.5739f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2065, ProximityTerminal.Constructor(Vector3(4359.248f, 3790.228f, 218.3079f), repair_silo), owning_building_guid = 1) - LocalObject(2066, Terminal.Constructor(Vector3(4359.248f, 3790.228f, 218.3079f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2069, ProximityTerminal.Constructor(Vector3(4447.996f, 3691.947f, 218.3079f), repair_silo), owning_building_guid = 1) - LocalObject(2070, Terminal.Constructor(Vector3(4447.996f, 3691.947f, 218.3079f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1437, FacilityTurret.Constructor(Vector3(4280.107f, 3733.096f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 2158, + SpawnTube.Constructor(Vector3(4384.363f, 3745.117f, 211.6079f), Vector3(0, 0, 48)), + owning_building_guid = 1 + ) + LocalObject( + 2159, + SpawnTube.Constructor(Vector3(4389.781f, 3749.996f, 211.6079f), Vector3(0, 0, 48)), + owning_building_guid = 1 + ) + LocalObject( + 2160, + SpawnTube.Constructor(Vector3(4395.197f, 3754.873f, 211.6079f), Vector3(0, 0, 48)), + owning_building_guid = 1 + ) + LocalObject( + 1495, + ProximityTerminal.Constructor(Vector3(4391.243f, 3754.381f, 224.1079f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1496, + ProximityTerminal.Constructor(Vector3(4415.827f, 3735.485f, 204.1079f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1768, + ProximityTerminal.Constructor(Vector3(4356.935f, 3682.656f, 227.4359f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1769, + Terminal.Constructor(Vector3(4356.935f, 3682.656f, 227.4359f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1771, + ProximityTerminal.Constructor(Vector3(4382.386f, 3793.773f, 227.4129f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1772, + Terminal.Constructor(Vector3(4382.386f, 3793.773f, 227.4129f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1774, + ProximityTerminal.Constructor(Vector3(4424.299f, 3688.036f, 227.4129f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1775, + Terminal.Constructor(Vector3(4424.299f, 3688.036f, 227.4129f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1777, + ProximityTerminal.Constructor(Vector3(4466.462f, 3756.651f, 229.5739f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1778, + Terminal.Constructor(Vector3(4466.462f, 3756.651f, 229.5739f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2065, + ProximityTerminal.Constructor(Vector3(4359.248f, 3790.228f, 218.3079f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2066, + Terminal.Constructor(Vector3(4359.248f, 3790.228f, 218.3079f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2069, + ProximityTerminal.Constructor(Vector3(4447.996f, 3691.947f, 218.3079f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2070, + Terminal.Constructor(Vector3(4447.996f, 3691.947f, 218.3079f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1437, + FacilityTurret.Constructor(Vector3(4280.107f, 3733.096f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1437, 5000) - LocalObject(1438, FacilityTurret.Constructor(Vector3(4318.323f, 3687.324f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 1438, + FacilityTurret.Constructor(Vector3(4318.323f, 3687.324f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1438, 5001) - LocalObject(1443, FacilityTurret.Constructor(Vector3(4382.764f, 3619.069f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 1443, + FacilityTurret.Constructor(Vector3(4382.764f, 3619.069f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1443, 5002) - LocalObject(1444, FacilityTurret.Constructor(Vector3(4429.962f, 3868.066f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 1444, + FacilityTurret.Constructor(Vector3(4429.962f, 3868.066f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1444, 5003) - LocalObject(1445, FacilityTurret.Constructor(Vector3(4487.027f, 3709.951f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 1445, + FacilityTurret.Constructor(Vector3(4487.027f, 3709.951f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1445, 5004) - LocalObject(1446, FacilityTurret.Constructor(Vector3(4532.646f, 3754.011f, 227.6159f), manned_turret), owning_building_guid = 1) + LocalObject( + 1446, + FacilityTurret.Constructor(Vector3(4532.646f, 3754.011f, 227.6159f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1446, 5005) - LocalObject(1882, Painbox.Constructor(Vector3(4360.838f, 3777.871f, 208.9789f), painbox), owning_building_guid = 1) - LocalObject(1891, Painbox.Constructor(Vector3(4396.655f, 3746.266f, 216.5563f), painbox_continuous), owning_building_guid = 1) - LocalObject(1900, Painbox.Constructor(Vector3(4371.816f, 3768.857f, 205.5669f), painbox_door_radius), owning_building_guid = 1) - LocalObject(1921, Painbox.Constructor(Vector3(4385.29f, 3735.5f, 212.8079f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1922, Painbox.Constructor(Vector3(4404.919f, 3753.075f, 212.8724f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1923, Painbox.Constructor(Vector3(4409.922f, 3739.557f, 214.7865f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 1882, + Painbox.Constructor(Vector3(4360.838f, 3777.871f, 208.9789f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 1891, + Painbox.Constructor(Vector3(4396.655f, 3746.266f, 216.5563f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1900, + Painbox.Constructor(Vector3(4371.816f, 3768.857f, 205.5669f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 1921, + Painbox.Constructor(Vector3(4385.29f, 3735.5f, 212.8079f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1922, + Painbox.Constructor(Vector3(4404.919f, 3753.075f, 212.8724f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1923, + Painbox.Constructor(Vector3(4409.922f, 3739.557f, 214.7865f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(243, Generator.Constructor(Vector3(4360.482f, 3782.537f, 202.8139f)), owning_building_guid = 1) - LocalObject(234, Terminal.Constructor(Vector3(4365.999f, 3776.481f, 204.1079f), gen_control), owning_building_guid = 1) + LocalObject( + 234, + Terminal.Constructor(Vector3(4365.999f, 3776.481f, 204.1079f), gen_control), + owning_building_guid = 1 + ) } Building43() def Building43(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 43 - LocalBuilding("bunker_gauntlet", 4, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3072f, 2262f, 237.2147f), Vector3(0f, 0f, 315f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 43, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3072f, 2262f, 237.2147f), + Vector3(0f, 0f, 315f), + bunker_gauntlet + ) + ) + ) LocalObject(287, Door.Constructor(Vector3(3053.042f, 2278.254f, 238.7357f)), owning_building_guid = 4) LocalObject(289, Door.Constructor(Vector3(3088.279f, 2243.032f, 238.7357f)), owning_building_guid = 4) } @@ -159,7 +424,19 @@ object Map06 { // Ceryshen Building44() def Building44(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 44 - LocalBuilding("bunker_gauntlet", 5, 44, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4084f, 5194f, 232.2395f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 44, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4084f, 5194f, 232.2395f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(405, Door.Constructor(Vector3(4082.099f, 5169.077f, 233.7605f)), owning_building_guid = 5) LocalObject(406, Door.Constructor(Vector3(4082.088f, 5218.898f, 233.7605f)), owning_building_guid = 5) } @@ -167,7 +444,19 @@ object Map06 { // Ceryshen Building42() def Building42(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 42 - LocalBuilding("bunker_gauntlet", 6, 42, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4086f, 4288f, 266.4175f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 42, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4086f, 4288f, 266.4175f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(407, Door.Constructor(Vector3(4084.099f, 4263.077f, 267.9385f)), owning_building_guid = 6) LocalObject(408, Door.Constructor(Vector3(4084.088f, 4312.898f, 267.9385f)), owning_building_guid = 6) } @@ -175,7 +464,19 @@ object Map06 { // Ceryshen Building41() def Building41(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 41 - LocalBuilding("bunker_gauntlet", 7, 41, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5866f, 3550f, 96.40965f), Vector3(0f, 0f, 360f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 41, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(5866f, 3550f, 96.40965f), + Vector3(0f, 0f, 360f), + bunker_gauntlet + ) + ) + ) LocalObject(496, Door.Constructor(Vector3(5841.102f, 3548.088f, 97.93066f)), owning_building_guid = 7) LocalObject(501, Door.Constructor(Vector3(5890.923f, 3548.099f, 97.93066f)), owning_building_guid = 7) } @@ -183,71 +484,150 @@ object Map06 { // Ceryshen Building33() def Building33(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 8, MapID: 33 - LocalBuilding("bunker_lg", 8, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2958f, 2048f, 238.7697f), Vector3(0f, 0f, 45f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 8, + 33, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2958f, 2048f, 238.7697f), Vector3(0f, 0f, 45f), bunker_lg) + ) + ) LocalObject(281, Door.Constructor(Vector3(2958.035f, 2051.651f, 240.2907f)), owning_building_guid = 8) } Building40() def Building40(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 40 - LocalBuilding("bunker_lg", 9, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3566f, 5902f, 219.7465f), Vector3(0f, 0f, 180f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3566f, 5902f, 219.7465f), Vector3(0f, 0f, 180f), bunker_lg) + ) + ) LocalObject(326, Door.Constructor(Vector3(3563.394f, 5899.443f, 221.2675f)), owning_building_guid = 9) } Building35() def Building35(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 35 - LocalBuilding("bunker_lg", 10, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3608f, 3584f, 222.4627f), Vector3(0f, 0f, 0f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 35, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3608f, 3584f, 222.4627f), Vector3(0f, 0f, 0f), bunker_lg) + ) + ) LocalObject(333, Door.Constructor(Vector3(3610.606f, 3586.557f, 223.9837f)), owning_building_guid = 10) } Building38() def Building38(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 11, MapID: 38 - LocalBuilding("bunker_lg", 11, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3800f, 4326f, 268.4381f), Vector3(0f, 0f, 225f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 11, + 38, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3800f, 4326f, 268.4381f), Vector3(0f, 0f, 225f), bunker_lg) + ) + ) LocalObject(362, Door.Constructor(Vector3(3799.965f, 4322.349f, 269.9591f)), owning_building_guid = 11) } Building36() def Building36(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 12, MapID: 36 - LocalBuilding("bunker_lg", 12, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5122f, 3188f, 217.751f), Vector3(0f, 0f, 90f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 12, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5122f, 3188f, 217.751f), Vector3(0f, 0f, 90f), bunker_lg) + ) + ) LocalObject(470, Door.Constructor(Vector3(5119.443f, 3190.606f, 219.272f)), owning_building_guid = 12) } Building45() def Building45(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 13, MapID: 45 - LocalBuilding("bunker_sm", 13, 45, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3198f, 5836f, 234.3076f), Vector3(0f, 0f, 360f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 13, + 45, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3198f, 5836f, 234.3076f), Vector3(0f, 0f, 360f), bunker_sm) + ) + ) LocalObject(290, Door.Constructor(Vector3(3199.225f, 5835.945f, 235.8286f)), owning_building_guid = 13) } Building39() def Building39(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 39 - LocalBuilding("bunker_sm", 14, 39, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3858f, 5178f, 233.2084f), Vector3(0f, 0f, 45f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 39, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3858f, 5178f, 233.2084f), Vector3(0f, 0f, 45f), bunker_sm) + ) + ) LocalObject(363, Door.Constructor(Vector3(3858.905f, 5178.827f, 234.7294f)), owning_building_guid = 14) } Building34() def Building34(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 15, MapID: 34 - LocalBuilding("bunker_sm", 15, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3922f, 1994f, 260.3741f), Vector3(0f, 0f, 225f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 15, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3922f, 1994f, 260.3741f), Vector3(0f, 0f, 225f), bunker_sm) + ) + ) LocalObject(374, Door.Constructor(Vector3(3921.095f, 1993.173f, 261.8951f)), owning_building_guid = 15) } Building37() def Building37(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 37 - LocalBuilding("bunker_sm", 16, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4394f, 3876f, 218.9932f), Vector3(0f, 0f, 224f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 37, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4394f, 3876f, 218.9932f), Vector3(0f, 0f, 224f), bunker_sm) + ) + ) LocalObject(438, Door.Constructor(Vector3(4393.081f, 3875.189f, 220.5142f)), owning_building_guid = 16) } Building4() def Building4(): Unit = { // Name: Keelut Type: comm_station GUID: 17, MapID: 4 - LocalBuilding("Keelut", 17, 4, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3700f, 1956f, 265.1138f), Vector3(0f, 0f, 269f), comm_station))) - LocalObject(178, CaptureTerminal.Constructor(Vector3(3775.953f, 1910.578f, 247.8138f), capture_terminal), owning_building_guid = 17) + LocalBuilding( + "Keelut", + 17, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3700f, 1956f, 265.1138f), + Vector3(0f, 0f, 269f), + comm_station + ) + ) + ) + LocalObject( + 178, + CaptureTerminal.Constructor(Vector3(3775.953f, 1910.578f, 247.8138f), capture_terminal), + owning_building_guid = 17 + ) LocalObject(336, Door.Constructor(Vector3(3632.635f, 1981.68f, 266.8648f)), owning_building_guid = 17) LocalObject(337, Door.Constructor(Vector3(3632.952f, 1999.87f, 274.8288f)), owning_building_guid = 17) LocalObject(344, Door.Constructor(Vector3(3657.55f, 2016.554f, 266.8648f)), owning_building_guid = 17) @@ -289,18 +669,78 @@ object Map06 { // Ceryshen LocalObject(2310, Door.Constructor(Vector3(3713.091f, 1919.093f, 257.1678f)), owning_building_guid = 17) LocalObject(2311, Door.Constructor(Vector3(3720.383f, 1918.966f, 257.1678f)), owning_building_guid = 17) LocalObject(2312, Door.Constructor(Vector3(3727.671f, 1918.838f, 257.1678f)), owning_building_guid = 17) - LocalObject(750, IFFLock.Constructor(Vector3(3698.773f, 1935.565f, 266.7658f), Vector3(0, 0, 181)), owning_building_guid = 17, door_guid = 714) - LocalObject(839, IFFLock.Constructor(Vector3(3690.603f, 1961.348f, 279.1948f), Vector3(0, 0, 1)), owning_building_guid = 17, door_guid = 349) - LocalObject(840, IFFLock.Constructor(Vector3(3690.735f, 1974.117f, 271.7748f), Vector3(0, 0, 271)), owning_building_guid = 17, door_guid = 348) - LocalObject(841, IFFLock.Constructor(Vector3(3701.49f, 1978.02f, 271.7748f), Vector3(0, 0, 91)), owning_building_guid = 17, door_guid = 351) - LocalObject(842, IFFLock.Constructor(Vector3(3706.394f, 1910.309f, 256.6498f), Vector3(0, 0, 271)), owning_building_guid = 17, door_guid = 581) - LocalObject(843, IFFLock.Constructor(Vector3(3709.466f, 1900.766f, 249.1498f), Vector3(0, 0, 1)), owning_building_guid = 17, door_guid = 585) - LocalObject(844, IFFLock.Constructor(Vector3(3717.827f, 1948.501f, 271.7748f), Vector3(0, 0, 1)), owning_building_guid = 17, door_guid = 354) - LocalObject(845, IFFLock.Constructor(Vector3(3723.378f, 1974.023f, 249.1498f), Vector3(0, 0, 271)), owning_building_guid = 17, door_guid = 591) - LocalObject(846, IFFLock.Constructor(Vector3(3732.064f, 1913.006f, 256.6498f), Vector3(0, 0, 91)), owning_building_guid = 17, door_guid = 593) - LocalObject(851, IFFLock.Constructor(Vector3(3765.734f, 1915.66f, 249.1498f), Vector3(0, 0, 1)), owning_building_guid = 17, door_guid = 602) - LocalObject(852, IFFLock.Constructor(Vector3(3768.709f, 1905.98f, 249.1498f), Vector3(0, 0, 181)), owning_building_guid = 17, door_guid = 601) - LocalObject(853, IFFLock.Constructor(Vector3(3777.449f, 1921.865f, 266.7638f), Vector3(0, 0, 181)), owning_building_guid = 17, door_guid = 361) + LocalObject( + 750, + IFFLock.Constructor(Vector3(3698.773f, 1935.565f, 266.7658f), Vector3(0, 0, 181)), + owning_building_guid = 17, + door_guid = 714 + ) + LocalObject( + 839, + IFFLock.Constructor(Vector3(3690.603f, 1961.348f, 279.1948f), Vector3(0, 0, 1)), + owning_building_guid = 17, + door_guid = 349 + ) + LocalObject( + 840, + IFFLock.Constructor(Vector3(3690.735f, 1974.117f, 271.7748f), Vector3(0, 0, 271)), + owning_building_guid = 17, + door_guid = 348 + ) + LocalObject( + 841, + IFFLock.Constructor(Vector3(3701.49f, 1978.02f, 271.7748f), Vector3(0, 0, 91)), + owning_building_guid = 17, + door_guid = 351 + ) + LocalObject( + 842, + IFFLock.Constructor(Vector3(3706.394f, 1910.309f, 256.6498f), Vector3(0, 0, 271)), + owning_building_guid = 17, + door_guid = 581 + ) + LocalObject( + 843, + IFFLock.Constructor(Vector3(3709.466f, 1900.766f, 249.1498f), Vector3(0, 0, 1)), + owning_building_guid = 17, + door_guid = 585 + ) + LocalObject( + 844, + IFFLock.Constructor(Vector3(3717.827f, 1948.501f, 271.7748f), Vector3(0, 0, 1)), + owning_building_guid = 17, + door_guid = 354 + ) + LocalObject( + 845, + IFFLock.Constructor(Vector3(3723.378f, 1974.023f, 249.1498f), Vector3(0, 0, 271)), + owning_building_guid = 17, + door_guid = 591 + ) + LocalObject( + 846, + IFFLock.Constructor(Vector3(3732.064f, 1913.006f, 256.6498f), Vector3(0, 0, 91)), + owning_building_guid = 17, + door_guid = 593 + ) + LocalObject( + 851, + IFFLock.Constructor(Vector3(3765.734f, 1915.66f, 249.1498f), Vector3(0, 0, 1)), + owning_building_guid = 17, + door_guid = 602 + ) + LocalObject( + 852, + IFFLock.Constructor(Vector3(3768.709f, 1905.98f, 249.1498f), Vector3(0, 0, 181)), + owning_building_guid = 17, + door_guid = 601 + ) + LocalObject( + 853, + IFFLock.Constructor(Vector3(3777.449f, 1921.865f, 266.7638f), Vector3(0, 0, 181)), + owning_building_guid = 17, + door_guid = 361 + ) LocalObject(1120, Locker.Constructor(Vector3(3709.249f, 1904.808f, 255.5748f)), owning_building_guid = 17) LocalObject(1121, Locker.Constructor(Vector3(3709.269f, 1905.957f, 255.5748f)), owning_building_guid = 17) LocalObject(1122, Locker.Constructor(Vector3(3709.289f, 1907.103f, 255.5748f)), owning_building_guid = 17) @@ -313,60 +753,233 @@ object Map06 { // Ceryshen LocalObject(1129, Locker.Constructor(Vector3(3729.098f, 1894.629f, 247.8138f)), owning_building_guid = 17) LocalObject(1130, Locker.Constructor(Vector3(3729.122f, 1895.965f, 247.8138f)), owning_building_guid = 17) LocalObject(1131, Locker.Constructor(Vector3(3729.145f, 1897.288f, 247.8138f)), owning_building_guid = 17) - LocalObject(1551, Terminal.Constructor(Vector3(3677.078f, 1966.023f, 271.6738f), order_terminal), owning_building_guid = 17) - LocalObject(1552, Terminal.Constructor(Vector3(3690.391f, 1953.836f, 279.0688f), order_terminal), owning_building_guid = 17) - LocalObject(1553, Terminal.Constructor(Vector3(3692.547f, 1956.055f, 279.0688f), order_terminal), owning_building_guid = 17) - LocalObject(1554, Terminal.Constructor(Vector3(3694.785f, 1953.759f, 279.0688f), order_terminal), owning_building_guid = 17) - LocalObject(1555, Terminal.Constructor(Vector3(3714.522f, 1905.085f, 256.9038f), order_terminal), owning_building_guid = 17) - LocalObject(1556, Terminal.Constructor(Vector3(3718.252f, 1905.02f, 256.9038f), order_terminal), owning_building_guid = 17) - LocalObject(1557, Terminal.Constructor(Vector3(3722.041f, 1904.954f, 256.9038f), order_terminal), owning_building_guid = 17) - LocalObject(2233, Terminal.Constructor(Vector3(3675.999f, 1957.909f, 271.9308f), spawn_terminal), owning_building_guid = 17) - LocalObject(2234, Terminal.Constructor(Vector3(3708.87f, 1971.905f, 249.3708f), spawn_terminal), owning_building_guid = 17) - LocalObject(2235, Terminal.Constructor(Vector3(3710.596f, 1918.838f, 257.4478f), spawn_terminal), owning_building_guid = 17) - LocalObject(2236, Terminal.Constructor(Vector3(3717.887f, 1918.715f, 257.4478f), spawn_terminal), owning_building_guid = 17) - LocalObject(2237, Terminal.Constructor(Vector3(3725.174f, 1918.585f, 257.4478f), spawn_terminal), owning_building_guid = 17) - LocalObject(2238, Terminal.Constructor(Vector3(3739.946f, 1955.894f, 259.3708f), spawn_terminal), owning_building_guid = 17) - LocalObject(2417, Terminal.Constructor(Vector3(3753.85f, 1902.594f, 268.0008f), vehicle_terminal_combined), owning_building_guid = 17) - LocalObject(1477, VehicleSpawnPad.Constructor(Vector3(3753.934f, 1916.22f, 263.8428f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 17, terminal_guid = 2417) + LocalObject( + 1551, + Terminal.Constructor(Vector3(3677.078f, 1966.023f, 271.6738f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1552, + Terminal.Constructor(Vector3(3690.391f, 1953.836f, 279.0688f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1553, + Terminal.Constructor(Vector3(3692.547f, 1956.055f, 279.0688f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1554, + Terminal.Constructor(Vector3(3694.785f, 1953.759f, 279.0688f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1555, + Terminal.Constructor(Vector3(3714.522f, 1905.085f, 256.9038f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1556, + Terminal.Constructor(Vector3(3718.252f, 1905.02f, 256.9038f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1557, + Terminal.Constructor(Vector3(3722.041f, 1904.954f, 256.9038f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2233, + Terminal.Constructor(Vector3(3675.999f, 1957.909f, 271.9308f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2234, + Terminal.Constructor(Vector3(3708.87f, 1971.905f, 249.3708f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2235, + Terminal.Constructor(Vector3(3710.596f, 1918.838f, 257.4478f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2236, + Terminal.Constructor(Vector3(3717.887f, 1918.715f, 257.4478f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2237, + Terminal.Constructor(Vector3(3725.174f, 1918.585f, 257.4478f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2238, + Terminal.Constructor(Vector3(3739.946f, 1955.894f, 259.3708f), spawn_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2417, + Terminal.Constructor(Vector3(3753.85f, 1902.594f, 268.0008f), vehicle_terminal_combined), + owning_building_guid = 17 + ) + LocalObject( + 1477, + VehicleSpawnPad.Constructor(Vector3(3753.934f, 1916.22f, 263.8428f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 17, + terminal_guid = 2417 + ) LocalObject(2092, ResourceSilo.Constructor(Vector3(3631.892f, 2012.967f, 272.3308f)), owning_building_guid = 17) - LocalObject(2133, SpawnTube.Constructor(Vector3(3712.049f, 1919.551f, 255.3138f), Vector3(0, 0, 91)), owning_building_guid = 17) - LocalObject(2134, SpawnTube.Constructor(Vector3(3719.339f, 1919.424f, 255.3138f), Vector3(0, 0, 91)), owning_building_guid = 17) - LocalObject(2135, SpawnTube.Constructor(Vector3(3726.625f, 1919.297f, 255.3138f), Vector3(0, 0, 91)), owning_building_guid = 17) - LocalObject(1490, ProximityTerminal.Constructor(Vector3(3671.012f, 1955.642f, 265.3138f), medical_terminal), owning_building_guid = 17) - LocalObject(1491, ProximityTerminal.Constructor(Vector3(3728.491f, 1891.049f, 247.8138f), medical_terminal), owning_building_guid = 17) - LocalObject(1741, ProximityTerminal.Constructor(Vector3(3755.506f, 1973.88f, 273.5548f), pad_landing_frame), owning_building_guid = 17) - LocalObject(1742, Terminal.Constructor(Vector3(3755.506f, 1973.88f, 273.5548f), air_rearm_terminal), owning_building_guid = 17) - LocalObject(2041, ProximityTerminal.Constructor(Vector3(3674.598f, 1894.793f, 264.8638f), repair_silo), owning_building_guid = 17) - LocalObject(2042, Terminal.Constructor(Vector3(3674.598f, 1894.793f, 264.8638f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(2045, ProximityTerminal.Constructor(Vector3(3724.242f, 2016.674f, 264.8638f), repair_silo), owning_building_guid = 17) - LocalObject(2046, Terminal.Constructor(Vector3(3724.242f, 2016.674f, 264.8638f), ground_rearm_terminal), owning_building_guid = 17) - LocalObject(1405, FacilityTurret.Constructor(Vector3(3617.862f, 1926.564f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 2133, + SpawnTube.Constructor(Vector3(3712.049f, 1919.551f, 255.3138f), Vector3(0, 0, 91)), + owning_building_guid = 17 + ) + LocalObject( + 2134, + SpawnTube.Constructor(Vector3(3719.339f, 1919.424f, 255.3138f), Vector3(0, 0, 91)), + owning_building_guid = 17 + ) + LocalObject( + 2135, + SpawnTube.Constructor(Vector3(3726.625f, 1919.297f, 255.3138f), Vector3(0, 0, 91)), + owning_building_guid = 17 + ) + LocalObject( + 1490, + ProximityTerminal.Constructor(Vector3(3671.012f, 1955.642f, 265.3138f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1491, + ProximityTerminal.Constructor(Vector3(3728.491f, 1891.049f, 247.8138f), medical_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1741, + ProximityTerminal.Constructor(Vector3(3755.506f, 1973.88f, 273.5548f), pad_landing_frame), + owning_building_guid = 17 + ) + LocalObject( + 1742, + Terminal.Constructor(Vector3(3755.506f, 1973.88f, 273.5548f), air_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2041, + ProximityTerminal.Constructor(Vector3(3674.598f, 1894.793f, 264.8638f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 2042, + Terminal.Constructor(Vector3(3674.598f, 1894.793f, 264.8638f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 2045, + ProximityTerminal.Constructor(Vector3(3724.242f, 2016.674f, 264.8638f), repair_silo), + owning_building_guid = 17 + ) + LocalObject( + 2046, + Terminal.Constructor(Vector3(3724.242f, 2016.674f, 264.8638f), ground_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 1405, + FacilityTurret.Constructor(Vector3(3617.862f, 1926.564f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1405, 5006) - LocalObject(1406, FacilityTurret.Constructor(Vector3(3620.842f, 2029.839f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 1406, + FacilityTurret.Constructor(Vector3(3620.842f, 2029.839f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1406, 5007) - LocalObject(1410, FacilityTurret.Constructor(Vector3(3660.215f, 1882.673f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 1410, + FacilityTurret.Constructor(Vector3(3660.215f, 1882.673f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1410, 5008) - LocalObject(1413, FacilityTurret.Constructor(Vector3(3739.93f, 2028.89f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 1413, + FacilityTurret.Constructor(Vector3(3739.93f, 2028.89f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1413, 5009) - LocalObject(1416, FacilityTurret.Constructor(Vector3(3779.152f, 1881.766f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 1416, + FacilityTurret.Constructor(Vector3(3779.152f, 1881.766f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1416, 5010) - LocalObject(1417, FacilityTurret.Constructor(Vector3(3782.269f, 1985.02f, 273.8218f), manned_turret), owning_building_guid = 17) + LocalObject( + 1417, + FacilityTurret.Constructor(Vector3(3782.269f, 1985.02f, 273.8218f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(1417, 5011) - LocalObject(1879, Painbox.Constructor(Vector3(3736.431f, 1975.229f, 252.7158f), painbox), owning_building_guid = 17) - LocalObject(1888, Painbox.Constructor(Vector3(3725.359f, 1909.335f, 259.7586f), painbox_continuous), owning_building_guid = 17) - LocalObject(1897, Painbox.Constructor(Vector3(3721.415f, 1975.392f, 250.5725f), painbox_door_radius), owning_building_guid = 17) - LocalObject(1912, Painbox.Constructor(Vector3(3705.308f, 1911.986f, 257.1398f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1913, Painbox.Constructor(Vector3(3726.813f, 1897.668f, 258.1398f), painbox_door_radius_continuous), owning_building_guid = 17) - LocalObject(1914, Painbox.Constructor(Vector3(3732.633f, 1910.613f, 256.9215f), painbox_door_radius_continuous), owning_building_guid = 17) + LocalObject( + 1879, + Painbox.Constructor(Vector3(3736.431f, 1975.229f, 252.7158f), painbox), + owning_building_guid = 17 + ) + LocalObject( + 1888, + Painbox.Constructor(Vector3(3725.359f, 1909.335f, 259.7586f), painbox_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1897, + Painbox.Constructor(Vector3(3721.415f, 1975.392f, 250.5725f), painbox_door_radius), + owning_building_guid = 17 + ) + LocalObject( + 1912, + Painbox.Constructor(Vector3(3705.308f, 1911.986f, 257.1398f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1913, + Painbox.Constructor(Vector3(3726.813f, 1897.668f, 258.1398f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 1914, + Painbox.Constructor(Vector3(3732.633f, 1910.613f, 256.9215f), painbox_door_radius_continuous), + owning_building_guid = 17 + ) LocalObject(240, Generator.Constructor(Vector3(3739.898f, 1975.332f, 246.5198f)), owning_building_guid = 17) - LocalObject(231, Terminal.Constructor(Vector3(3731.707f, 1975.428f, 247.8138f), gen_control), owning_building_guid = 17) + LocalObject( + 231, + Terminal.Constructor(Vector3(3731.707f, 1975.428f, 247.8138f), gen_control), + owning_building_guid = 17 + ) } Building2() def Building2(): Unit = { // Name: Anguta Type: comm_station_dsp GUID: 20, MapID: 2 - LocalBuilding("Anguta", 20, 2, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3944f, 4240f, 266.4438f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(180, CaptureTerminal.Constructor(Vector3(4020.089f, 4220.734f, 249.0439f), capture_terminal), owning_building_guid = 20) + LocalBuilding( + "Anguta", + 20, + 2, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3944f, 4240f, 266.4438f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 180, + CaptureTerminal.Constructor(Vector3(4020.089f, 4220.734f, 249.0439f), capture_terminal), + owning_building_guid = 20 + ) LocalObject(222, Door.Constructor(Vector3(4012.339f, 4310.464f, 269.8218f)), owning_building_guid = 20) LocalObject(370, Door.Constructor(Vector3(3884.196f, 4196.501f, 268.0948f)), owning_building_guid = 20) LocalObject(371, Door.Constructor(Vector3(3884.196f, 4214.693f, 276.0588f)), owning_building_guid = 20) @@ -412,20 +1025,90 @@ object Map06 { // Ceryshen LocalObject(2322, Door.Constructor(Vector3(3980.673f, 4253.733f, 258.3979f)), owning_building_guid = 20) LocalObject(2323, Door.Constructor(Vector3(3980.673f, 4261.026f, 258.3979f)), owning_building_guid = 20) LocalObject(2324, Door.Constructor(Vector3(3980.673f, 4268.315f, 258.3979f)), owning_building_guid = 20) - LocalObject(751, IFFLock.Constructor(Vector3(3964.454f, 4239.09f, 268.0118f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 715) - LocalObject(860, IFFLock.Constructor(Vector3(3921.959f, 4241.104f, 273.0118f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 376) - LocalObject(863, IFFLock.Constructor(Vector3(3926.04f, 4230.42f, 273.0118f), Vector3(0, 0, 180)), owning_building_guid = 20, door_guid = 375) - LocalObject(866, IFFLock.Constructor(Vector3(3938.817f, 4230.514f, 280.5118f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 384) - LocalObject(868, IFFLock.Constructor(Vector3(3951.193f, 4257.962f, 273.0118f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 387) - LocalObject(873, IFFLock.Constructor(Vector3(3984.94f, 4301.572f, 250.3799f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 620) - LocalObject(874, IFFLock.Constructor(Vector3(3986.428f, 4272.94f, 257.8799f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 623) - LocalObject(875, IFFLock.Constructor(Vector3(3989.572f, 4247.19f, 257.8799f), Vector3(0, 0, 180)), owning_building_guid = 20, door_guid = 622) - LocalObject(876, IFFLock.Constructor(Vector3(3995.907f, 4345.163f, 272.9908f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 393) - LocalObject(878, IFFLock.Constructor(Vector3(3999.06f, 4250.428f, 250.3799f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 630) - LocalObject(879, IFFLock.Constructor(Vector3(3999.124f, 4312.312f, 268.0558f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 394) - LocalObject(882, IFFLock.Constructor(Vector3(4015.06f, 4210.428f, 250.3799f), Vector3(0, 0, 270)), owning_building_guid = 20, door_guid = 638) - LocalObject(884, IFFLock.Constructor(Vector3(4024.813f, 4213.572f, 250.3799f), Vector3(0, 0, 90)), owning_building_guid = 20, door_guid = 642) - LocalObject(885, IFFLock.Constructor(Vector3(4057.953f, 4320.808f, 267.9548f), Vector3(0, 0, 0)), owning_building_guid = 20, door_guid = 404) + LocalObject( + 751, + IFFLock.Constructor(Vector3(3964.454f, 4239.09f, 268.0118f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 715 + ) + LocalObject( + 860, + IFFLock.Constructor(Vector3(3921.959f, 4241.104f, 273.0118f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 376 + ) + LocalObject( + 863, + IFFLock.Constructor(Vector3(3926.04f, 4230.42f, 273.0118f), Vector3(0, 0, 180)), + owning_building_guid = 20, + door_guid = 375 + ) + LocalObject( + 866, + IFFLock.Constructor(Vector3(3938.817f, 4230.514f, 280.5118f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 384 + ) + LocalObject( + 868, + IFFLock.Constructor(Vector3(3951.193f, 4257.962f, 273.0118f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 387 + ) + LocalObject( + 873, + IFFLock.Constructor(Vector3(3984.94f, 4301.572f, 250.3799f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 620 + ) + LocalObject( + 874, + IFFLock.Constructor(Vector3(3986.428f, 4272.94f, 257.8799f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 623 + ) + LocalObject( + 875, + IFFLock.Constructor(Vector3(3989.572f, 4247.19f, 257.8799f), Vector3(0, 0, 180)), + owning_building_guid = 20, + door_guid = 622 + ) + LocalObject( + 876, + IFFLock.Constructor(Vector3(3995.907f, 4345.163f, 272.9908f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 393 + ) + LocalObject( + 878, + IFFLock.Constructor(Vector3(3999.06f, 4250.428f, 250.3799f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 630 + ) + LocalObject( + 879, + IFFLock.Constructor(Vector3(3999.124f, 4312.312f, 268.0558f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 394 + ) + LocalObject( + 882, + IFFLock.Constructor(Vector3(4015.06f, 4210.428f, 250.3799f), Vector3(0, 0, 270)), + owning_building_guid = 20, + door_guid = 638 + ) + LocalObject( + 884, + IFFLock.Constructor(Vector3(4024.813f, 4213.572f, 250.3799f), Vector3(0, 0, 90)), + owning_building_guid = 20, + door_guid = 642 + ) + LocalObject( + 885, + IFFLock.Constructor(Vector3(4057.953f, 4320.808f, 267.9548f), Vector3(0, 0, 0)), + owning_building_guid = 20, + door_guid = 404 + ) LocalObject(1177, Locker.Constructor(Vector3(3991.563f, 4250.141f, 256.8048f)), owning_building_guid = 20) LocalObject(1178, Locker.Constructor(Vector3(3992.727f, 4250.141f, 256.8048f)), owning_building_guid = 20) LocalObject(1179, Locker.Constructor(Vector3(3993.874f, 4250.141f, 256.8048f)), owning_building_guid = 20) @@ -438,76 +1121,306 @@ object Map06 { // Ceryshen LocalObject(1186, Locker.Constructor(Vector3(4012.055f, 4270.165f, 249.0439f)), owning_building_guid = 20) LocalObject(1187, Locker.Constructor(Vector3(4013.391f, 4270.165f, 249.0439f)), owning_building_guid = 20) LocalObject(1188, Locker.Constructor(Vector3(4014.728f, 4270.165f, 249.0439f)), owning_building_guid = 20) - LocalObject(224, Terminal.Constructor(Vector3(4003.879f, 4342.918f, 272.1479f), dropship_vehicle_terminal), owning_building_guid = 20) - LocalObject(223, VehicleSpawnPad.Constructor(Vector3(4012.328f, 4364.856f, 266.4719f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 20, terminal_guid = 224) - LocalObject(1564, Terminal.Constructor(Vector3(3934.378f, 4216.897f, 272.9038f), order_terminal), owning_building_guid = 20) - LocalObject(1568, Terminal.Constructor(Vector3(3944.075f, 4232.547f, 280.2989f), order_terminal), owning_building_guid = 20) - LocalObject(1569, Terminal.Constructor(Vector3(3946.331f, 4230.43f, 280.2989f), order_terminal), owning_building_guid = 20) - LocalObject(1570, Terminal.Constructor(Vector3(3946.332f, 4234.825f, 280.2989f), order_terminal), owning_building_guid = 20) - LocalObject(1571, Terminal.Constructor(Vector3(3948.592f, 4232.59f, 280.2989f), order_terminal), owning_building_guid = 20) - LocalObject(1576, Terminal.Constructor(Vector3(3994.654f, 4255.408f, 258.1339f), order_terminal), owning_building_guid = 20) - LocalObject(1577, Terminal.Constructor(Vector3(3994.654f, 4259.139f, 258.1339f), order_terminal), owning_building_guid = 20) - LocalObject(1578, Terminal.Constructor(Vector3(3994.654f, 4262.928f, 258.1339f), order_terminal), owning_building_guid = 20) - LocalObject(2239, Terminal.Constructor(Vector3(3942.509f, 4215.959f, 273.1609f), spawn_terminal), owning_building_guid = 20) - LocalObject(2244, Terminal.Constructor(Vector3(3980.971f, 4251.243f, 258.6779f), spawn_terminal), owning_building_guid = 20) - LocalObject(2245, Terminal.Constructor(Vector3(3980.967f, 4258.535f, 258.6779f), spawn_terminal), owning_building_guid = 20) - LocalObject(2246, Terminal.Constructor(Vector3(3980.97f, 4265.823f, 258.6779f), spawn_terminal), owning_building_guid = 20) - LocalObject(2249, Terminal.Constructor(Vector3(3999.103f, 4334.906f, 273.0919f), spawn_terminal), owning_building_guid = 20) - LocalObject(2250, Terminal.Constructor(Vector3(4008.058f, 4239.409f, 250.5719f), spawn_terminal), owning_building_guid = 20) - LocalObject(2251, Terminal.Constructor(Vector3(4015.409f, 4295.942f, 250.5719f), spawn_terminal), owning_building_guid = 20) - LocalObject(2253, Terminal.Constructor(Vector3(4024.058f, 4247.409f, 258.1009f), spawn_terminal), owning_building_guid = 20) - LocalObject(2254, Terminal.Constructor(Vector3(4024.058f, 4287.409f, 258.1009f), spawn_terminal), owning_building_guid = 20) - LocalObject(2419, Terminal.Constructor(Vector3(3961.698f, 4348.044f, 269.2308f), ground_vehicle_terminal), owning_building_guid = 20) - LocalObject(1479, VehicleSpawnPad.Constructor(Vector3(3961.786f, 4334.411f, 265.0728f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 20, terminal_guid = 2419) + LocalObject( + 224, + Terminal.Constructor(Vector3(4003.879f, 4342.918f, 272.1479f), dropship_vehicle_terminal), + owning_building_guid = 20 + ) + LocalObject( + 223, + VehicleSpawnPad.Constructor(Vector3(4012.328f, 4364.856f, 266.4719f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 20, + terminal_guid = 224 + ) + LocalObject( + 1564, + Terminal.Constructor(Vector3(3934.378f, 4216.897f, 272.9038f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1568, + Terminal.Constructor(Vector3(3944.075f, 4232.547f, 280.2989f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1569, + Terminal.Constructor(Vector3(3946.331f, 4230.43f, 280.2989f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1570, + Terminal.Constructor(Vector3(3946.332f, 4234.825f, 280.2989f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1571, + Terminal.Constructor(Vector3(3948.592f, 4232.59f, 280.2989f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1576, + Terminal.Constructor(Vector3(3994.654f, 4255.408f, 258.1339f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1577, + Terminal.Constructor(Vector3(3994.654f, 4259.139f, 258.1339f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1578, + Terminal.Constructor(Vector3(3994.654f, 4262.928f, 258.1339f), order_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2239, + Terminal.Constructor(Vector3(3942.509f, 4215.959f, 273.1609f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2244, + Terminal.Constructor(Vector3(3980.971f, 4251.243f, 258.6779f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2245, + Terminal.Constructor(Vector3(3980.967f, 4258.535f, 258.6779f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2246, + Terminal.Constructor(Vector3(3980.97f, 4265.823f, 258.6779f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2249, + Terminal.Constructor(Vector3(3999.103f, 4334.906f, 273.0919f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2250, + Terminal.Constructor(Vector3(4008.058f, 4239.409f, 250.5719f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2251, + Terminal.Constructor(Vector3(4015.409f, 4295.942f, 250.5719f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2253, + Terminal.Constructor(Vector3(4024.058f, 4247.409f, 258.1009f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2254, + Terminal.Constructor(Vector3(4024.058f, 4287.409f, 258.1009f), spawn_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2419, + Terminal.Constructor(Vector3(3961.698f, 4348.044f, 269.2308f), ground_vehicle_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1479, + VehicleSpawnPad.Constructor(Vector3(3961.786f, 4334.411f, 265.0728f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 20, + terminal_guid = 2419 + ) LocalObject(2094, ResourceSilo.Constructor(Vector3(4042.212f, 4405.642f, 273.5609f)), owning_building_guid = 20) - LocalObject(2145, SpawnTube.Constructor(Vector3(3980.233f, 4252.683f, 256.5439f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(2146, SpawnTube.Constructor(Vector3(3980.233f, 4259.974f, 256.5439f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(2147, SpawnTube.Constructor(Vector3(3980.233f, 4267.262f, 256.5439f), Vector3(0, 0, 0)), owning_building_guid = 20) - LocalObject(1492, ProximityTerminal.Constructor(Vector3(3944.863f, 4211.013f, 266.5439f), medical_terminal), owning_building_guid = 20) - LocalObject(1494, ProximityTerminal.Constructor(Vector3(4008.444f, 4269.62f, 249.0439f), medical_terminal), owning_building_guid = 20) - LocalObject(1744, ProximityTerminal.Constructor(Vector3(3925.153f, 4333.398f, 274.8539f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1745, Terminal.Constructor(Vector3(3925.153f, 4333.398f, 274.8539f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(1747, ProximityTerminal.Constructor(Vector3(3941.514f, 4287.467f, 272.1378f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1748, Terminal.Constructor(Vector3(3941.514f, 4287.467f, 272.1378f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(1756, ProximityTerminal.Constructor(Vector3(3993.804f, 4251.901f, 279.3199f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1757, Terminal.Constructor(Vector3(3993.804f, 4251.901f, 279.3199f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(1765, ProximityTerminal.Constructor(Vector3(4029.071f, 4268.159f, 274.8669f), pad_landing_frame), owning_building_guid = 20) - LocalObject(1766, Terminal.Constructor(Vector3(4029.071f, 4268.159f, 274.8669f), air_rearm_terminal), owning_building_guid = 20) - LocalObject(2049, ProximityTerminal.Constructor(Vector3(3882.642f, 4278.241f, 266.1938f), repair_silo), owning_building_guid = 20) - LocalObject(2050, Terminal.Constructor(Vector3(3882.642f, 4278.241f, 266.1938f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(2061, ProximityTerminal.Constructor(Vector3(4052.57f, 4281.151f, 266.1938f), repair_silo), owning_building_guid = 20) - LocalObject(2062, Terminal.Constructor(Vector3(4052.57f, 4281.151f, 266.1938f), ground_rearm_terminal), owning_building_guid = 20) - LocalObject(1418, FacilityTurret.Constructor(Vector3(3870.401f, 4313.113f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 2145, + SpawnTube.Constructor(Vector3(3980.233f, 4252.683f, 256.5439f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 2146, + SpawnTube.Constructor(Vector3(3980.233f, 4259.974f, 256.5439f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 2147, + SpawnTube.Constructor(Vector3(3980.233f, 4267.262f, 256.5439f), Vector3(0, 0, 0)), + owning_building_guid = 20 + ) + LocalObject( + 1492, + ProximityTerminal.Constructor(Vector3(3944.863f, 4211.013f, 266.5439f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1494, + ProximityTerminal.Constructor(Vector3(4008.444f, 4269.62f, 249.0439f), medical_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1744, + ProximityTerminal.Constructor(Vector3(3925.153f, 4333.398f, 274.8539f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1745, + Terminal.Constructor(Vector3(3925.153f, 4333.398f, 274.8539f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1747, + ProximityTerminal.Constructor(Vector3(3941.514f, 4287.467f, 272.1378f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1748, + Terminal.Constructor(Vector3(3941.514f, 4287.467f, 272.1378f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1756, + ProximityTerminal.Constructor(Vector3(3993.804f, 4251.901f, 279.3199f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1757, + Terminal.Constructor(Vector3(3993.804f, 4251.901f, 279.3199f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1765, + ProximityTerminal.Constructor(Vector3(4029.071f, 4268.159f, 274.8669f), pad_landing_frame), + owning_building_guid = 20 + ) + LocalObject( + 1766, + Terminal.Constructor(Vector3(4029.071f, 4268.159f, 274.8669f), air_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2049, + ProximityTerminal.Constructor(Vector3(3882.642f, 4278.241f, 266.1938f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 2050, + Terminal.Constructor(Vector3(3882.642f, 4278.241f, 266.1938f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 2061, + ProximityTerminal.Constructor(Vector3(4052.57f, 4281.151f, 266.1938f), repair_silo), + owning_building_guid = 20 + ) + LocalObject( + 2062, + Terminal.Constructor(Vector3(4052.57f, 4281.151f, 266.1938f), ground_rearm_terminal), + owning_building_guid = 20 + ) + LocalObject( + 1418, + FacilityTurret.Constructor(Vector3(3870.401f, 4313.113f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1418, 5012) - LocalObject(1419, FacilityTurret.Constructor(Vector3(3871.554f, 4159.565f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1419, + FacilityTurret.Constructor(Vector3(3871.554f, 4159.565f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1419, 5013) - LocalObject(1421, FacilityTurret.Constructor(Vector3(3915.445f, 4359.667f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1421, + FacilityTurret.Constructor(Vector3(3915.445f, 4359.667f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1421, 5014) - LocalObject(1426, FacilityTurret.Constructor(Vector3(3974.428f, 4158.396f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1426, + FacilityTurret.Constructor(Vector3(3974.428f, 4158.396f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1426, 5015) - LocalObject(1427, FacilityTurret.Constructor(Vector3(3975.449f, 4418.154f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1427, + FacilityTurret.Constructor(Vector3(3975.449f, 4418.154f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1427, 5016) - LocalObject(1428, FacilityTurret.Constructor(Vector3(4016.537f, 4199.011f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1428, + FacilityTurret.Constructor(Vector3(4016.537f, 4199.011f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1428, 5017) - LocalObject(1431, FacilityTurret.Constructor(Vector3(4063.619f, 4416.985f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1431, + FacilityTurret.Constructor(Vector3(4063.619f, 4416.985f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1431, 5018) - LocalObject(1432, FacilityTurret.Constructor(Vector3(4064.773f, 4248.733f, 275.0518f), manned_turret), owning_building_guid = 20) + LocalObject( + 1432, + FacilityTurret.Constructor(Vector3(4064.773f, 4248.733f, 275.0518f), manned_turret), + owning_building_guid = 20 + ) TurretToWeapon(1432, 5019) - LocalObject(1880, Painbox.Constructor(Vector3(3972.428f, 4300.057f, 252.9381f), painbox), owning_building_guid = 20) - LocalObject(1890, Painbox.Constructor(Vector3(3989.857f, 4260.408f, 260.5714f), painbox_continuous), owning_building_guid = 20) - LocalObject(1899, Painbox.Constructor(Vector3(3986.203f, 4298.915f, 252.176f), painbox_door_radius), owning_building_guid = 20) - LocalObject(1918, Painbox.Constructor(Vector3(3987.087f, 4245.386f, 258.9731f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1919, Painbox.Constructor(Vector3(3987.895f, 4274.081f, 259.4438f), painbox_door_radius_continuous), owning_building_guid = 20) - LocalObject(1920, Painbox.Constructor(Vector3(4002.317f, 4267.888f, 259.8741f), painbox_door_radius_continuous), owning_building_guid = 20) + LocalObject( + 1880, + Painbox.Constructor(Vector3(3972.428f, 4300.057f, 252.9381f), painbox), + owning_building_guid = 20 + ) + LocalObject( + 1890, + Painbox.Constructor(Vector3(3989.857f, 4260.408f, 260.5714f), painbox_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1899, + Painbox.Constructor(Vector3(3986.203f, 4298.915f, 252.176f), painbox_door_radius), + owning_building_guid = 20 + ) + LocalObject( + 1918, + Painbox.Constructor(Vector3(3987.087f, 4245.386f, 258.9731f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1919, + Painbox.Constructor(Vector3(3987.895f, 4274.081f, 259.4438f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) + LocalObject( + 1920, + Painbox.Constructor(Vector3(4002.317f, 4267.888f, 259.8741f), painbox_door_radius_continuous), + owning_building_guid = 20 + ) LocalObject(241, Generator.Constructor(Vector3(3968.445f, 4299.975f, 247.7498f)), owning_building_guid = 20) - LocalObject(232, Terminal.Constructor(Vector3(3976.637f, 4300.022f, 249.0439f), gen_control), owning_building_guid = 20) + LocalObject( + 232, + Terminal.Constructor(Vector3(3976.637f, 4300.022f, 249.0439f), gen_control), + owning_building_guid = 20 + ) } Building8() def Building8(): Unit = { // Name: Tarqaq Type: cryo_facility GUID: 23, MapID: 8 - LocalBuilding("Tarqaq", 23, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2980f, 2228f, 237.2173f), Vector3(0f, 0f, 218f), cryo_facility))) - LocalObject(175, CaptureTerminal.Constructor(Vector3(3038.622f, 2198.591f, 227.2173f), capture_terminal), owning_building_guid = 23) + LocalBuilding( + "Tarqaq", + 23, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2980f, 2228f, 237.2173f), + Vector3(0f, 0f, 218f), + cryo_facility + ) + ) + ) + LocalObject( + 175, + CaptureTerminal.Constructor(Vector3(3038.622f, 2198.591f, 227.2173f), capture_terminal), + owning_building_guid = 23 + ) LocalObject(272, Door.Constructor(Vector3(2898.143f, 2280.796f, 238.7383f)), owning_building_guid = 23) LocalObject(273, Door.Constructor(Vector3(2908.659f, 2236.593f, 246.7323f)), owning_building_guid = 23) LocalObject(274, Door.Constructor(Vector3(2910.427f, 2278.879f, 238.7683f)), owning_building_guid = 23) @@ -548,15 +1461,60 @@ object Map06 { // Ceryshen LocalObject(2289, Door.Constructor(Vector3(2979.847f, 2220.605f, 229.0713f)), owning_building_guid = 23) LocalObject(2290, Door.Constructor(Vector3(2984.337f, 2214.858f, 229.0713f)), owning_building_guid = 23) LocalObject(2291, Door.Constructor(Vector3(2988.825f, 2209.115f, 229.0713f)), owning_building_guid = 23) - LocalObject(747, IFFLock.Constructor(Vector3(2996.522f, 2205.602f, 238.6993f), Vector3(0, 0, 142)), owning_building_guid = 23, door_guid = 711) - LocalObject(785, IFFLock.Constructor(Vector3(2898.759f, 2278.686f, 238.6693f), Vector3(0, 0, 232)), owning_building_guid = 23, door_guid = 272) - LocalObject(790, IFFLock.Constructor(Vector3(2963.221f, 2211.81f, 221.0533f), Vector3(0, 0, 52)), owning_building_guid = 23, door_guid = 521) - LocalObject(791, IFFLock.Constructor(Vector3(2968.806f, 2220.282f, 228.5533f), Vector3(0, 0, 322)), owning_building_guid = 23, door_guid = 522) - LocalObject(792, IFFLock.Constructor(Vector3(2980.897f, 2223.678f, 248.6693f), Vector3(0, 0, 142)), owning_building_guid = 23, door_guid = 282) - LocalObject(793, IFFLock.Constructor(Vector3(2987.057f, 2202.029f, 228.5533f), Vector3(0, 0, 142)), owning_building_guid = 23, door_guid = 528) - LocalObject(794, IFFLock.Constructor(Vector3(3005.538f, 2219.979f, 248.6693f), Vector3(0, 0, 232)), owning_building_guid = 23, door_guid = 283) - LocalObject(795, IFFLock.Constructor(Vector3(3041.104f, 2187.452f, 228.5533f), Vector3(0, 0, 232)), owning_building_guid = 23, door_guid = 539) - LocalObject(796, IFFLock.Constructor(Vector3(3046.854f, 2195.934f, 228.5533f), Vector3(0, 0, 52)), owning_building_guid = 23, door_guid = 540) + LocalObject( + 747, + IFFLock.Constructor(Vector3(2996.522f, 2205.602f, 238.6993f), Vector3(0, 0, 142)), + owning_building_guid = 23, + door_guid = 711 + ) + LocalObject( + 785, + IFFLock.Constructor(Vector3(2898.759f, 2278.686f, 238.6693f), Vector3(0, 0, 232)), + owning_building_guid = 23, + door_guid = 272 + ) + LocalObject( + 790, + IFFLock.Constructor(Vector3(2963.221f, 2211.81f, 221.0533f), Vector3(0, 0, 52)), + owning_building_guid = 23, + door_guid = 521 + ) + LocalObject( + 791, + IFFLock.Constructor(Vector3(2968.806f, 2220.282f, 228.5533f), Vector3(0, 0, 322)), + owning_building_guid = 23, + door_guid = 522 + ) + LocalObject( + 792, + IFFLock.Constructor(Vector3(2980.897f, 2223.678f, 248.6693f), Vector3(0, 0, 142)), + owning_building_guid = 23, + door_guid = 282 + ) + LocalObject( + 793, + IFFLock.Constructor(Vector3(2987.057f, 2202.029f, 228.5533f), Vector3(0, 0, 142)), + owning_building_guid = 23, + door_guid = 528 + ) + LocalObject( + 794, + IFFLock.Constructor(Vector3(3005.538f, 2219.979f, 248.6693f), Vector3(0, 0, 232)), + owning_building_guid = 23, + door_guid = 283 + ) + LocalObject( + 795, + IFFLock.Constructor(Vector3(3041.104f, 2187.452f, 228.5533f), Vector3(0, 0, 232)), + owning_building_guid = 23, + door_guid = 539 + ) + LocalObject( + 796, + IFFLock.Constructor(Vector3(3046.854f, 2195.934f, 228.5533f), Vector3(0, 0, 52)), + owning_building_guid = 23, + door_guid = 540 + ) LocalObject(1027, Locker.Constructor(Vector3(2951.431f, 2202.685f, 227.1253f)), owning_building_guid = 23) LocalObject(1028, Locker.Constructor(Vector3(2952.263f, 2203.334f, 227.1253f)), owning_building_guid = 23) LocalObject(1029, Locker.Constructor(Vector3(2953.098f, 2203.987f, 227.1253f)), owning_building_guid = 23) @@ -586,76 +1544,309 @@ object Map06 { // Ceryshen LocalObject(1343, Locker.Constructor(Vector3(2962.2f, 2221.124f, 236.9883f)), owning_building_guid = 23) LocalObject(1344, Locker.Constructor(Vector3(2963.753f, 2219.136f, 237.2173f)), owning_building_guid = 23) LocalObject(1345, Locker.Constructor(Vector3(2964.389f, 2218.322f, 237.2173f)), owning_building_guid = 23) - LocalObject(184, Terminal.Constructor(Vector3(2995.622f, 2178.975f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(185, Terminal.Constructor(Vector3(2995.872f, 2181.008f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(186, Terminal.Constructor(Vector3(3000.132f, 2173.203f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(187, Terminal.Constructor(Vector3(3002.165f, 2172.954f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(188, Terminal.Constructor(Vector3(3005.88f, 2188.827f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(189, Terminal.Constructor(Vector3(3007.912f, 2188.577f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(190, Terminal.Constructor(Vector3(3012.172f, 2180.772f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(191, Terminal.Constructor(Vector3(3012.422f, 2182.805f, 227.2073f), cert_terminal), owning_building_guid = 23) - LocalObject(1521, Terminal.Constructor(Vector3(2969.861f, 2210.678f, 228.8073f), order_terminal), owning_building_guid = 23) - LocalObject(1522, Terminal.Constructor(Vector3(2972.158f, 2207.738f, 228.8073f), order_terminal), owning_building_guid = 23) - LocalObject(1523, Terminal.Constructor(Vector3(2974.491f, 2204.752f, 228.8073f), order_terminal), owning_building_guid = 23) - LocalObject(1524, Terminal.Constructor(Vector3(2993.767f, 2226.667f, 238.5123f), order_terminal), owning_building_guid = 23) - LocalObject(2212, Terminal.Constructor(Vector3(2957.839f, 2282.5f, 231.3303f), spawn_terminal), owning_building_guid = 23) - LocalObject(2213, Terminal.Constructor(Vector3(2970.101f, 2237.576f, 238.7963f), spawn_terminal), owning_building_guid = 23) - LocalObject(2214, Terminal.Constructor(Vector3(2978.079f, 2222.384f, 229.3513f), spawn_terminal), owning_building_guid = 23) - LocalObject(2215, Terminal.Constructor(Vector3(2982.572f, 2216.64f, 229.3513f), spawn_terminal), owning_building_guid = 23) - LocalObject(2216, Terminal.Constructor(Vector3(2987.057f, 2210.896f, 229.3513f), spawn_terminal), owning_building_guid = 23) - LocalObject(2217, Terminal.Constructor(Vector3(3011.155f, 2253.094f, 228.8303f), spawn_terminal), owning_building_guid = 23) - LocalObject(2218, Terminal.Constructor(Vector3(3019.87f, 2177.932f, 228.8303f), spawn_terminal), owning_building_guid = 23) - LocalObject(2414, Terminal.Constructor(Vector3(2911.448f, 2254.625f, 239.5223f), vehicle_terminal_combined), owning_building_guid = 23) - LocalObject(1470, VehicleSpawnPad.Constructor(Vector3(2922.14f, 2263.093f, 235.3643f), mb_pad_creation, Vector3(0, 0, 52)), owning_building_guid = 23, terminal_guid = 2414) + LocalObject( + 184, + Terminal.Constructor(Vector3(2995.622f, 2178.975f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 185, + Terminal.Constructor(Vector3(2995.872f, 2181.008f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 186, + Terminal.Constructor(Vector3(3000.132f, 2173.203f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(3002.165f, 2172.954f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(3005.88f, 2188.827f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(3007.912f, 2188.577f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 190, + Terminal.Constructor(Vector3(3012.172f, 2180.772f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 191, + Terminal.Constructor(Vector3(3012.422f, 2182.805f, 227.2073f), cert_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1521, + Terminal.Constructor(Vector3(2969.861f, 2210.678f, 228.8073f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1522, + Terminal.Constructor(Vector3(2972.158f, 2207.738f, 228.8073f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1523, + Terminal.Constructor(Vector3(2974.491f, 2204.752f, 228.8073f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1524, + Terminal.Constructor(Vector3(2993.767f, 2226.667f, 238.5123f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2212, + Terminal.Constructor(Vector3(2957.839f, 2282.5f, 231.3303f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2213, + Terminal.Constructor(Vector3(2970.101f, 2237.576f, 238.7963f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2214, + Terminal.Constructor(Vector3(2978.079f, 2222.384f, 229.3513f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2215, + Terminal.Constructor(Vector3(2982.572f, 2216.64f, 229.3513f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2216, + Terminal.Constructor(Vector3(2987.057f, 2210.896f, 229.3513f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2217, + Terminal.Constructor(Vector3(3011.155f, 2253.094f, 228.8303f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2218, + Terminal.Constructor(Vector3(3019.87f, 2177.932f, 228.8303f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2414, + Terminal.Constructor(Vector3(2911.448f, 2254.625f, 239.5223f), vehicle_terminal_combined), + owning_building_guid = 23 + ) + LocalObject( + 1470, + VehicleSpawnPad.Constructor(Vector3(2922.14f, 2263.093f, 235.3643f), mb_pad_creation, Vector3(0, 0, 52)), + owning_building_guid = 23, + terminal_guid = 2414 + ) LocalObject(2089, ResourceSilo.Constructor(Vector3(3058.799f, 2225.032f, 244.2343f)), owning_building_guid = 23) - LocalObject(2112, SpawnTube.Constructor(Vector3(2979.548f, 2221.704f, 227.2173f), Vector3(0, 0, 142)), owning_building_guid = 23) - LocalObject(2113, SpawnTube.Constructor(Vector3(2984.036f, 2215.958f, 227.2173f), Vector3(0, 0, 142)), owning_building_guid = 23) - LocalObject(2114, SpawnTube.Constructor(Vector3(2988.523f, 2210.215f, 227.2173f), Vector3(0, 0, 142)), owning_building_guid = 23) - LocalObject(137, ProximityTerminal.Constructor(Vector3(2974.061f, 2232.38f, 237.0273f), adv_med_terminal), owning_building_guid = 23) - LocalObject(1485, ProximityTerminal.Constructor(Vector3(2960.651f, 2207.868f, 227.2173f), medical_terminal), owning_building_guid = 23) - LocalObject(1693, ProximityTerminal.Constructor(Vector3(2938.802f, 2283.658f, 245.5693f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1694, Terminal.Constructor(Vector3(2938.802f, 2283.658f, 245.5693f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1696, ProximityTerminal.Constructor(Vector3(2956.143f, 2287.963f, 247.5103f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1697, Terminal.Constructor(Vector3(2956.143f, 2287.963f, 247.5103f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1699, ProximityTerminal.Constructor(Vector3(3006.818f, 2191.526f, 247.5493f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1700, Terminal.Constructor(Vector3(3006.818f, 2191.526f, 247.5493f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(1702, ProximityTerminal.Constructor(Vector3(3024.771f, 2194.895f, 245.5593f), pad_landing_frame), owning_building_guid = 23) - LocalObject(1703, Terminal.Constructor(Vector3(3024.771f, 2194.895f, 245.5593f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(2017, ProximityTerminal.Constructor(Vector3(2948.371f, 2183.161f, 236.9673f), repair_silo), owning_building_guid = 23) - LocalObject(2018, Terminal.Constructor(Vector3(2948.371f, 2183.161f, 236.9673f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(2021, ProximityTerminal.Constructor(Vector3(2955.719f, 2316.7f, 236.9673f), repair_silo), owning_building_guid = 23) - LocalObject(2022, Terminal.Constructor(Vector3(2955.719f, 2316.7f, 236.9673f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(1381, FacilityTurret.Constructor(Vector3(2870.371f, 2264.973f, 245.6193f), manned_turret), owning_building_guid = 23) + LocalObject( + 2112, + SpawnTube.Constructor(Vector3(2979.548f, 2221.704f, 227.2173f), Vector3(0, 0, 142)), + owning_building_guid = 23 + ) + LocalObject( + 2113, + SpawnTube.Constructor(Vector3(2984.036f, 2215.958f, 227.2173f), Vector3(0, 0, 142)), + owning_building_guid = 23 + ) + LocalObject( + 2114, + SpawnTube.Constructor(Vector3(2988.523f, 2210.215f, 227.2173f), Vector3(0, 0, 142)), + owning_building_guid = 23 + ) + LocalObject( + 137, + ProximityTerminal.Constructor(Vector3(2974.061f, 2232.38f, 237.0273f), adv_med_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1485, + ProximityTerminal.Constructor(Vector3(2960.651f, 2207.868f, 227.2173f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1693, + ProximityTerminal.Constructor(Vector3(2938.802f, 2283.658f, 245.5693f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1694, + Terminal.Constructor(Vector3(2938.802f, 2283.658f, 245.5693f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1696, + ProximityTerminal.Constructor(Vector3(2956.143f, 2287.963f, 247.5103f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1697, + Terminal.Constructor(Vector3(2956.143f, 2287.963f, 247.5103f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1699, + ProximityTerminal.Constructor(Vector3(3006.818f, 2191.526f, 247.5493f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1700, + Terminal.Constructor(Vector3(3006.818f, 2191.526f, 247.5493f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1702, + ProximityTerminal.Constructor(Vector3(3024.771f, 2194.895f, 245.5593f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 1703, + Terminal.Constructor(Vector3(3024.771f, 2194.895f, 245.5593f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2017, + ProximityTerminal.Constructor(Vector3(2948.371f, 2183.161f, 236.9673f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2018, + Terminal.Constructor(Vector3(2948.371f, 2183.161f, 236.9673f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2021, + ProximityTerminal.Constructor(Vector3(2955.719f, 2316.7f, 236.9673f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2022, + Terminal.Constructor(Vector3(2955.719f, 2316.7f, 236.9673f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1381, + FacilityTurret.Constructor(Vector3(2870.371f, 2264.973f, 245.6193f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1381, 5020) - LocalObject(1384, FacilityTurret.Constructor(Vector3(2952.627f, 2157.762f, 245.6193f), manned_turret), owning_building_guid = 23) + LocalObject( + 1384, + FacilityTurret.Constructor(Vector3(2952.627f, 2157.762f, 245.6193f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1384, 5021) - LocalObject(1385, FacilityTurret.Constructor(Vector3(2976.936f, 2348.22f, 245.6193f), manned_turret), owning_building_guid = 23) + LocalObject( + 1385, + FacilityTurret.Constructor(Vector3(2976.936f, 2348.22f, 245.6193f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1385, 5022) - LocalObject(1386, FacilityTurret.Constructor(Vector3(3013.169f, 2150.356f, 245.6193f), manned_turret), owning_building_guid = 23) + LocalObject( + 1386, + FacilityTurret.Constructor(Vector3(3013.169f, 2150.356f, 245.6193f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1386, 5023) - LocalObject(1387, FacilityTurret.Constructor(Vector3(3085.971f, 2208.674f, 245.6193f), manned_turret), owning_building_guid = 23) + LocalObject( + 1387, + FacilityTurret.Constructor(Vector3(3085.971f, 2208.674f, 245.6193f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1387, 5024) - LocalObject(732, ImplantTerminalMech.Constructor(Vector3(2999.384f, 2186.84f, 226.6943f)), owning_building_guid = 23) - LocalObject(726, Terminal.Constructor(Vector3(2999.395f, 2186.826f, 226.6943f), implant_terminal_interface), owning_building_guid = 23) + LocalObject( + 732, + ImplantTerminalMech.Constructor(Vector3(2999.384f, 2186.84f, 226.6943f)), + owning_building_guid = 23 + ) + LocalObject( + 726, + Terminal.Constructor(Vector3(2999.395f, 2186.826f, 226.6943f), implant_terminal_interface), + owning_building_guid = 23 + ) TerminalToInterface(732, 726) - LocalObject(733, ImplantTerminalMech.Constructor(Vector3(3008.847f, 2174.747f, 226.6943f)), owning_building_guid = 23) - LocalObject(727, Terminal.Constructor(Vector3(3008.836f, 2174.761f, 226.6943f), implant_terminal_interface), owning_building_guid = 23) + LocalObject( + 733, + ImplantTerminalMech.Constructor(Vector3(3008.847f, 2174.747f, 226.6943f)), + owning_building_guid = 23 + ) + LocalObject( + 727, + Terminal.Constructor(Vector3(3008.836f, 2174.761f, 226.6943f), implant_terminal_interface), + owning_building_guid = 23 + ) TerminalToInterface(733, 727) - LocalObject(1876, Painbox.Constructor(Vector3(2963.485f, 2240.053f, 251.2461f), painbox), owning_building_guid = 23) - LocalObject(1885, Painbox.Constructor(Vector3(2973.123f, 2212.84f, 231.2872f), painbox_continuous), owning_building_guid = 23) - LocalObject(1894, Painbox.Constructor(Vector3(2973.501f, 2229.524f, 251.4512f), painbox_door_radius), owning_building_guid = 23) - LocalObject(1903, Painbox.Constructor(Vector3(2969.758f, 2195.823f, 230.7582f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1904, Painbox.Constructor(Vector3(2970.336f, 2223.25f, 229.5732f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(1905, Painbox.Constructor(Vector3(2986.041f, 2199.939f, 228.9315f), painbox_door_radius_continuous), owning_building_guid = 23) + LocalObject( + 1876, + Painbox.Constructor(Vector3(2963.485f, 2240.053f, 251.2461f), painbox), + owning_building_guid = 23 + ) + LocalObject( + 1885, + Painbox.Constructor(Vector3(2973.123f, 2212.84f, 231.2872f), painbox_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1894, + Painbox.Constructor(Vector3(2973.501f, 2229.524f, 251.4512f), painbox_door_radius), + owning_building_guid = 23 + ) + LocalObject( + 1903, + Painbox.Constructor(Vector3(2969.758f, 2195.823f, 230.7582f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1904, + Painbox.Constructor(Vector3(2970.336f, 2223.25f, 229.5732f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 1905, + Painbox.Constructor(Vector3(2986.041f, 2199.939f, 228.9315f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) LocalObject(237, Generator.Constructor(Vector3(2962.326f, 2244.083f, 245.9233f)), owning_building_guid = 23) - LocalObject(228, Terminal.Constructor(Vector3(2967.407f, 2237.657f, 247.2173f), gen_control), owning_building_guid = 23) + LocalObject( + 228, + Terminal.Constructor(Vector3(2967.407f, 2237.657f, 247.2173f), gen_control), + owning_building_guid = 23 + ) } Building7() def Building7(): Unit = { // Name: Sedna Type: cryo_facility GUID: 26, MapID: 7 - LocalBuilding("Sedna", 26, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3982f, 5224f, 232.2285f), Vector3(0f, 0f, 179f), cryo_facility))) - LocalObject(179, CaptureTerminal.Constructor(Vector3(4009.05f, 5164.253f, 222.2285f), capture_terminal), owning_building_guid = 26) + LocalBuilding( + "Sedna", + 26, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3982f, 5224f, 232.2285f), + Vector3(0f, 0f, 179f), + cryo_facility + ) + ) + ) + LocalObject( + 179, + CaptureTerminal.Constructor(Vector3(4009.05f, 5164.253f, 222.2285f), capture_terminal), + owning_building_guid = 26 + ) LocalObject(381, Door.Constructor(Vector3(3931.648f, 5257.384f, 233.7795f)), owning_building_guid = 26) LocalObject(382, Door.Constructor(Vector3(3931.966f, 5275.574f, 241.7435f)), owning_building_guid = 26) LocalObject(386, Door.Constructor(Vector3(3951.611f, 5316.544f, 233.7495f)), owning_building_guid = 26) @@ -696,15 +1887,60 @@ object Map06 { // Ceryshen LocalObject(2319, Door.Constructor(Vector3(3976.973f, 5203.77f, 224.0825f)), owning_building_guid = 26) LocalObject(2320, Door.Constructor(Vector3(3977.1f, 5211.058f, 224.0825f)), owning_building_guid = 26) LocalObject(2321, Door.Constructor(Vector3(3977.228f, 5218.35f, 224.0825f)), owning_building_guid = 26) - LocalObject(752, IFFLock.Constructor(Vector3(3980.745f, 5196.196f, 233.7105f), Vector3(0, 0, 181)), owning_building_guid = 26, door_guid = 716) - LocalObject(867, IFFLock.Constructor(Vector3(3950.761f, 5314.517f, 233.6805f), Vector3(0, 0, 271)), owning_building_guid = 26, door_guid = 386) - LocalObject(869, IFFLock.Constructor(Vector3(3958.771f, 5221.977f, 216.0645f), Vector3(0, 0, 91)), owning_building_guid = 26, door_guid = 609) - LocalObject(870, IFFLock.Constructor(Vector3(3968.444f, 5225.047f, 223.5645f), Vector3(0, 0, 1)), owning_building_guid = 26, door_guid = 613) - LocalObject(871, IFFLock.Constructor(Vector3(3971.141f, 5199.376f, 223.5645f), Vector3(0, 0, 181)), owning_building_guid = 26, door_guid = 612) - LocalObject(872, IFFLock.Constructor(Vector3(3979.977f, 5220.077f, 243.6805f), Vector3(0, 0, 181)), owning_building_guid = 26, door_guid = 389) - LocalObject(877, IFFLock.Constructor(Vector3(3996.799f, 5201.695f, 243.6805f), Vector3(0, 0, 271)), owning_building_guid = 26, door_guid = 392) - LocalObject(880, IFFLock.Constructor(Vector3(4003.969f, 5154.034f, 223.5645f), Vector3(0, 0, 271)), owning_building_guid = 26, door_guid = 635) - LocalObject(881, IFFLock.Constructor(Vector3(4013.776f, 5157.007f, 223.5645f), Vector3(0, 0, 91)), owning_building_guid = 26, door_guid = 636) + LocalObject( + 752, + IFFLock.Constructor(Vector3(3980.745f, 5196.196f, 233.7105f), Vector3(0, 0, 181)), + owning_building_guid = 26, + door_guid = 716 + ) + LocalObject( + 867, + IFFLock.Constructor(Vector3(3950.761f, 5314.517f, 233.6805f), Vector3(0, 0, 271)), + owning_building_guid = 26, + door_guid = 386 + ) + LocalObject( + 869, + IFFLock.Constructor(Vector3(3958.771f, 5221.977f, 216.0645f), Vector3(0, 0, 91)), + owning_building_guid = 26, + door_guid = 609 + ) + LocalObject( + 870, + IFFLock.Constructor(Vector3(3968.444f, 5225.047f, 223.5645f), Vector3(0, 0, 1)), + owning_building_guid = 26, + door_guid = 613 + ) + LocalObject( + 871, + IFFLock.Constructor(Vector3(3971.141f, 5199.376f, 223.5645f), Vector3(0, 0, 181)), + owning_building_guid = 26, + door_guid = 612 + ) + LocalObject( + 872, + IFFLock.Constructor(Vector3(3979.977f, 5220.077f, 243.6805f), Vector3(0, 0, 181)), + owning_building_guid = 26, + door_guid = 389 + ) + LocalObject( + 877, + IFFLock.Constructor(Vector3(3996.799f, 5201.695f, 243.6805f), Vector3(0, 0, 271)), + owning_building_guid = 26, + door_guid = 392 + ) + LocalObject( + 880, + IFFLock.Constructor(Vector3(4003.969f, 5154.034f, 223.5645f), Vector3(0, 0, 271)), + owning_building_guid = 26, + door_guid = 635 + ) + LocalObject( + 881, + IFFLock.Constructor(Vector3(4013.776f, 5157.007f, 223.5645f), Vector3(0, 0, 91)), + owning_building_guid = 26, + door_guid = 636 + ) LocalObject(1156, Locker.Constructor(Vector3(3943.521f, 5202.307f, 222.1365f)), owning_building_guid = 26) LocalObject(1157, Locker.Constructor(Vector3(3943.867f, 5222.305f, 222.1365f)), owning_building_guid = 26) LocalObject(1158, Locker.Constructor(Vector3(3944.576f, 5202.289f, 222.1365f)), owning_building_guid = 26) @@ -734,76 +1970,309 @@ object Map06 { // Ceryshen LocalObject(1351, Locker.Constructor(Vector3(3963.894f, 5232.979f, 231.9995f)), owning_building_guid = 26) LocalObject(1352, Locker.Constructor(Vector3(3963.938f, 5235.496f, 232.2285f)), owning_building_guid = 26) LocalObject(1353, Locker.Constructor(Vector3(3963.956f, 5236.53f, 232.2285f)), owning_building_guid = 26) - LocalObject(192, Terminal.Constructor(Vector3(3963.161f, 5168.746f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(193, Terminal.Constructor(Vector3(3963.289f, 5176.069f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(194, Terminal.Constructor(Vector3(3964.583f, 5167.272f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(195, Terminal.Constructor(Vector3(3964.762f, 5177.492f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(196, Terminal.Constructor(Vector3(3977.281f, 5167.051f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(197, Terminal.Constructor(Vector3(3977.46f, 5177.27f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(198, Terminal.Constructor(Vector3(3978.754f, 5168.473f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(199, Terminal.Constructor(Vector3(3978.882f, 5175.797f, 222.2185f), cert_terminal), owning_building_guid = 26) - LocalObject(1572, Terminal.Constructor(Vector3(3963.088f, 5209.4f, 223.8185f), order_terminal), owning_building_guid = 26) - LocalObject(1573, Terminal.Constructor(Vector3(3963.155f, 5213.188f, 223.8185f), order_terminal), owning_building_guid = 26) - LocalObject(1574, Terminal.Constructor(Vector3(3963.219f, 5216.918f, 223.8185f), order_terminal), owning_building_guid = 26) - LocalObject(1575, Terminal.Constructor(Vector3(3991.86f, 5214.3f, 233.5235f), order_terminal), owning_building_guid = 26) - LocalObject(2240, Terminal.Constructor(Vector3(3976.72f, 5206.267f, 224.3625f), spawn_terminal), owning_building_guid = 26) - LocalObject(2241, Terminal.Constructor(Vector3(3976.85f, 5213.553f, 224.3625f), spawn_terminal), owning_building_guid = 26) - LocalObject(2242, Terminal.Constructor(Vector3(3976.973f, 5220.844f, 224.3625f), spawn_terminal), owning_building_guid = 26) - LocalObject(2243, Terminal.Constructor(Vector3(3980.333f, 5237.672f, 233.8075f), spawn_terminal), owning_building_guid = 26) - LocalObject(2247, Terminal.Constructor(Vector3(3981.476f, 5160f, 223.8415f), spawn_terminal), owning_building_guid = 26) - LocalObject(2248, Terminal.Constructor(Vector3(3999.075f, 5280.301f, 226.3415f), spawn_terminal), owning_building_guid = 26) - LocalObject(2252, Terminal.Constructor(Vector3(4022.004f, 5223.895f, 223.8415f), spawn_terminal), owning_building_guid = 26) - LocalObject(2418, Terminal.Constructor(Vector3(3945.48f, 5287.833f, 234.5335f), vehicle_terminal_combined), owning_building_guid = 26) - LocalObject(1478, VehicleSpawnPad.Constructor(Vector3(3959.119f, 5287.685f, 230.3755f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 26, terminal_guid = 2418) + LocalObject( + 192, + Terminal.Constructor(Vector3(3963.161f, 5168.746f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 193, + Terminal.Constructor(Vector3(3963.289f, 5176.069f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 194, + Terminal.Constructor(Vector3(3964.583f, 5167.272f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 195, + Terminal.Constructor(Vector3(3964.762f, 5177.492f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 196, + Terminal.Constructor(Vector3(3977.281f, 5167.051f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 197, + Terminal.Constructor(Vector3(3977.46f, 5177.27f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 198, + Terminal.Constructor(Vector3(3978.754f, 5168.473f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 199, + Terminal.Constructor(Vector3(3978.882f, 5175.797f, 222.2185f), cert_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1572, + Terminal.Constructor(Vector3(3963.088f, 5209.4f, 223.8185f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1573, + Terminal.Constructor(Vector3(3963.155f, 5213.188f, 223.8185f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1574, + Terminal.Constructor(Vector3(3963.219f, 5216.918f, 223.8185f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1575, + Terminal.Constructor(Vector3(3991.86f, 5214.3f, 233.5235f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2240, + Terminal.Constructor(Vector3(3976.72f, 5206.267f, 224.3625f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2241, + Terminal.Constructor(Vector3(3976.85f, 5213.553f, 224.3625f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2242, + Terminal.Constructor(Vector3(3976.973f, 5220.844f, 224.3625f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2243, + Terminal.Constructor(Vector3(3980.333f, 5237.672f, 233.8075f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2247, + Terminal.Constructor(Vector3(3981.476f, 5160f, 223.8415f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2248, + Terminal.Constructor(Vector3(3999.075f, 5280.301f, 226.3415f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2252, + Terminal.Constructor(Vector3(4022.004f, 5223.895f, 223.8415f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2418, + Terminal.Constructor(Vector3(3945.48f, 5287.833f, 234.5335f), vehicle_terminal_combined), + owning_building_guid = 26 + ) + LocalObject( + 1478, + VehicleSpawnPad.Constructor(Vector3(3959.119f, 5287.685f, 230.3755f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 26, + terminal_guid = 2418 + ) LocalObject(2093, ResourceSilo.Constructor(Vector3(4041.37f, 5172.104f, 239.2455f)), owning_building_guid = 26) - LocalObject(2142, SpawnTube.Constructor(Vector3(3977.431f, 5204.815f, 222.2285f), Vector3(0, 0, 181)), owning_building_guid = 26) - LocalObject(2143, SpawnTube.Constructor(Vector3(3977.559f, 5212.102f, 222.2285f), Vector3(0, 0, 181)), owning_building_guid = 26) - LocalObject(2144, SpawnTube.Constructor(Vector3(3977.686f, 5219.392f, 222.2285f), Vector3(0, 0, 181)), owning_building_guid = 26) - LocalObject(138, ProximityTerminal.Constructor(Vector3(3980.141f, 5231.142f, 232.0385f), adv_med_terminal), owning_building_guid = 26) - LocalObject(1493, ProximityTerminal.Constructor(Vector3(3954.293f, 5220.531f, 222.2285f), medical_terminal), owning_building_guid = 26) - LocalObject(1750, ProximityTerminal.Constructor(Vector3(3979.887f, 5178.777f, 242.5605f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1751, Terminal.Constructor(Vector3(3979.887f, 5178.777f, 242.5605f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1753, ProximityTerminal.Constructor(Vector3(3985.01f, 5293.181f, 240.5805f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1754, Terminal.Constructor(Vector3(3985.01f, 5293.181f, 240.5805f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1759, ProximityTerminal.Constructor(Vector3(3995.96f, 5170.097f, 240.5705f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1760, Terminal.Constructor(Vector3(3995.96f, 5170.097f, 240.5705f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(1762, ProximityTerminal.Constructor(Vector3(4001.195f, 5285.613f, 242.5215f), pad_landing_frame), owning_building_guid = 26) - LocalObject(1763, Terminal.Constructor(Vector3(4001.195f, 5285.613f, 242.5215f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(2053, ProximityTerminal.Constructor(Vector3(3929.201f, 5209.058f, 231.9785f), repair_silo), owning_building_guid = 26) - LocalObject(2054, Terminal.Constructor(Vector3(3929.201f, 5209.058f, 231.9785f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(2057, ProximityTerminal.Constructor(Vector3(4018.951f, 5308.214f, 231.9785f), repair_silo), owning_building_guid = 26) - LocalObject(2058, Terminal.Constructor(Vector3(4018.951f, 5308.214f, 231.9785f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(1422, FacilityTurret.Constructor(Vector3(3916.525f, 5186.641f, 240.6305f), manned_turret), owning_building_guid = 26) + LocalObject( + 2142, + SpawnTube.Constructor(Vector3(3977.431f, 5204.815f, 222.2285f), Vector3(0, 0, 181)), + owning_building_guid = 26 + ) + LocalObject( + 2143, + SpawnTube.Constructor(Vector3(3977.559f, 5212.102f, 222.2285f), Vector3(0, 0, 181)), + owning_building_guid = 26 + ) + LocalObject( + 2144, + SpawnTube.Constructor(Vector3(3977.686f, 5219.392f, 222.2285f), Vector3(0, 0, 181)), + owning_building_guid = 26 + ) + LocalObject( + 138, + ProximityTerminal.Constructor(Vector3(3980.141f, 5231.142f, 232.0385f), adv_med_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1493, + ProximityTerminal.Constructor(Vector3(3954.293f, 5220.531f, 222.2285f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1750, + ProximityTerminal.Constructor(Vector3(3979.887f, 5178.777f, 242.5605f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1751, + Terminal.Constructor(Vector3(3979.887f, 5178.777f, 242.5605f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1753, + ProximityTerminal.Constructor(Vector3(3985.01f, 5293.181f, 240.5805f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1754, + Terminal.Constructor(Vector3(3985.01f, 5293.181f, 240.5805f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1759, + ProximityTerminal.Constructor(Vector3(3995.96f, 5170.097f, 240.5705f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1760, + Terminal.Constructor(Vector3(3995.96f, 5170.097f, 240.5705f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1762, + ProximityTerminal.Constructor(Vector3(4001.195f, 5285.613f, 242.5215f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 1763, + Terminal.Constructor(Vector3(4001.195f, 5285.613f, 242.5215f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2053, + ProximityTerminal.Constructor(Vector3(3929.201f, 5209.058f, 231.9785f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2054, + Terminal.Constructor(Vector3(3929.201f, 5209.058f, 231.9785f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2057, + ProximityTerminal.Constructor(Vector3(4018.951f, 5308.214f, 231.9785f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2058, + Terminal.Constructor(Vector3(4018.951f, 5308.214f, 231.9785f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1422, + FacilityTurret.Constructor(Vector3(3916.525f, 5186.641f, 240.6305f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1422, 5025) - LocalObject(1423, FacilityTurret.Constructor(Vector3(3920.07f, 5321.725f, 240.6305f), manned_turret), owning_building_guid = 26) + LocalObject( + 1423, + FacilityTurret.Constructor(Vector3(3920.07f, 5321.725f, 240.6305f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1423, 5026) - LocalObject(1425, FacilityTurret.Constructor(Vector3(3958.914f, 5142.786f, 240.6305f), manned_turret), owning_building_guid = 26) + LocalObject( + 1425, + FacilityTurret.Constructor(Vector3(3958.914f, 5142.786f, 240.6305f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1425, 5027) - LocalObject(1429, FacilityTurret.Constructor(Vector3(4052.193f, 5142.291f, 240.6305f), manned_turret), owning_building_guid = 26) + LocalObject( + 1429, + FacilityTurret.Constructor(Vector3(4052.193f, 5142.291f, 240.6305f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1429, 5028) - LocalObject(1430, FacilityTurret.Constructor(Vector3(4055.275f, 5319.357f, 240.6305f), manned_turret), owning_building_guid = 26) + LocalObject( + 1430, + FacilityTurret.Constructor(Vector3(4055.275f, 5319.357f, 240.6305f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1430, 5029) - LocalObject(734, ImplantTerminalMech.Constructor(Vector3(3970.905f, 5164.46f, 221.7055f)), owning_building_guid = 26) - LocalObject(728, Terminal.Constructor(Vector3(3970.906f, 5164.479f, 221.7055f), implant_terminal_interface), owning_building_guid = 26) + LocalObject( + 734, + ImplantTerminalMech.Constructor(Vector3(3970.905f, 5164.46f, 221.7055f)), + owning_building_guid = 26 + ) + LocalObject( + 728, + Terminal.Constructor(Vector3(3970.906f, 5164.479f, 221.7055f), implant_terminal_interface), + owning_building_guid = 26 + ) TerminalToInterface(734, 728) - LocalObject(735, ImplantTerminalMech.Constructor(Vector3(3971.161f, 5179.814f, 221.7055f)), owning_building_guid = 26) - LocalObject(729, Terminal.Constructor(Vector3(3971.161f, 5179.796f, 221.7055f), implant_terminal_interface), owning_building_guid = 26) + LocalObject( + 735, + ImplantTerminalMech.Constructor(Vector3(3971.161f, 5179.814f, 221.7055f)), + owning_building_guid = 26 + ) + LocalObject( + 729, + Terminal.Constructor(Vector3(3971.161f, 5179.796f, 221.7055f), implant_terminal_interface), + owning_building_guid = 26 + ) TerminalToInterface(735, 729) - LocalObject(1881, Painbox.Constructor(Vector3(3976.751f, 5243.761f, 246.2573f), painbox), owning_building_guid = 26) - LocalObject(1889, Painbox.Constructor(Vector3(3967.115f, 5216.547f, 226.2984f), painbox_continuous), owning_building_guid = 26) - LocalObject(1898, Painbox.Constructor(Vector3(3977.909f, 5229.274f, 246.4624f), painbox_door_radius), owning_building_guid = 26) - LocalObject(1915, Painbox.Constructor(Vector3(3953.79f, 5205.439f, 225.7694f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(1916, Painbox.Constructor(Vector3(3969.036f, 5198.391f, 223.9427f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(1917, Painbox.Constructor(Vector3(3971.5f, 5226.391f, 224.5844f), painbox_door_radius_continuous), owning_building_guid = 26) + LocalObject( + 1881, + Painbox.Constructor(Vector3(3976.751f, 5243.761f, 246.2573f), painbox), + owning_building_guid = 26 + ) + LocalObject( + 1889, + Painbox.Constructor(Vector3(3967.115f, 5216.547f, 226.2984f), painbox_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1898, + Painbox.Constructor(Vector3(3977.909f, 5229.274f, 246.4624f), painbox_door_radius), + owning_building_guid = 26 + ) + LocalObject( + 1915, + Painbox.Constructor(Vector3(3953.79f, 5205.439f, 225.7694f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1916, + Painbox.Constructor(Vector3(3969.036f, 5198.391f, 223.9427f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 1917, + Painbox.Constructor(Vector3(3971.5f, 5226.391f, 224.5844f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) LocalObject(242, Generator.Constructor(Vector3(3978.387f, 5247.622f, 240.9345f)), owning_building_guid = 26) - LocalObject(233, Terminal.Constructor(Vector3(3978.291f, 5239.43f, 242.2285f), gen_control), owning_building_guid = 26) + LocalObject( + 233, + Terminal.Constructor(Vector3(3978.291f, 5239.43f, 242.2285f), gen_control), + owning_building_guid = 26 + ) } Building9() def Building9(): Unit = { // Name: Tootega Type: cryo_facility GUID: 29, MapID: 9 - LocalBuilding("Tootega", 29, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5106f, 3298f, 217.0609f), Vector3(0f, 0f, 271f), cryo_facility))) - LocalObject(182, CaptureTerminal.Constructor(Vector3(5164.767f, 3327.119f, 207.0609f), capture_terminal), owning_building_guid = 29) + LocalBuilding( + "Tootega", + 29, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5106f, 3298f, 217.0609f), + Vector3(0f, 0f, 271f), + cryo_facility + ) + ) + ) + LocalObject( + 182, + CaptureTerminal.Constructor(Vector3(5164.767f, 3327.119f, 207.0609f), capture_terminal), + owning_building_guid = 29 + ) LocalObject(459, Door.Constructor(Vector3(5014.572f, 3264.399f, 218.5819f)), owning_building_guid = 29) LocalObject(460, Door.Constructor(Vector3(5023.178f, 3291.247f, 226.5759f)), owning_building_guid = 29) LocalObject(461, Door.Constructor(Vector3(5023.496f, 3273.056f, 218.6119f)), owning_building_guid = 29) @@ -844,15 +2313,60 @@ object Map06 { // Ceryshen LocalObject(2344, Door.Constructor(Vector3(5111.813f, 3293.428f, 208.9149f)), owning_building_guid = 29) LocalObject(2345, Door.Constructor(Vector3(5119.105f, 3293.555f, 208.9149f)), owning_building_guid = 29) LocalObject(2346, Door.Constructor(Vector3(5126.394f, 3293.682f, 208.9149f)), owning_building_guid = 29) - LocalObject(754, IFFLock.Constructor(Vector3(5133.831f, 3297.716f, 218.5429f), Vector3(0, 0, 89)), owning_building_guid = 29, door_guid = 718) - LocalObject(929, IFFLock.Constructor(Vector3(5016.628f, 3263.621f, 218.5129f), Vector3(0, 0, 179)), owning_building_guid = 29, door_guid = 459) - LocalObject(934, IFFLock.Constructor(Vector3(5105.427f, 3284.416f, 208.3969f), Vector3(0, 0, 269)), owning_building_guid = 29, door_guid = 679) - LocalObject(935, IFFLock.Constructor(Vector3(5108.833f, 3274.856f, 200.8969f), Vector3(0, 0, 359)), owning_building_guid = 29, door_guid = 680) - LocalObject(936, IFFLock.Constructor(Vector3(5109.992f, 3296.115f, 228.5129f), Vector3(0, 0, 89)), owning_building_guid = 29, door_guid = 468) - LocalObject(937, IFFLock.Constructor(Vector3(5127.774f, 3313.568f, 228.5129f), Vector3(0, 0, 179)), owning_building_guid = 29, door_guid = 471) - LocalObject(941, IFFLock.Constructor(Vector3(5130.988f, 3288.007f, 208.3969f), Vector3(0, 0, 89)), owning_building_guid = 29, door_guid = 685) - LocalObject(945, IFFLock.Constructor(Vector3(5171.843f, 3332.094f, 208.3969f), Vector3(0, 0, 359)), owning_building_guid = 29, door_guid = 689) - LocalObject(946, IFFLock.Constructor(Vector3(5175.157f, 3322.398f, 208.3969f), Vector3(0, 0, 179)), owning_building_guid = 29, door_guid = 690) + LocalObject( + 754, + IFFLock.Constructor(Vector3(5133.831f, 3297.716f, 218.5429f), Vector3(0, 0, 89)), + owning_building_guid = 29, + door_guid = 718 + ) + LocalObject( + 929, + IFFLock.Constructor(Vector3(5016.628f, 3263.621f, 218.5129f), Vector3(0, 0, 179)), + owning_building_guid = 29, + door_guid = 459 + ) + LocalObject( + 934, + IFFLock.Constructor(Vector3(5105.427f, 3284.416f, 208.3969f), Vector3(0, 0, 269)), + owning_building_guid = 29, + door_guid = 679 + ) + LocalObject( + 935, + IFFLock.Constructor(Vector3(5108.833f, 3274.856f, 200.8969f), Vector3(0, 0, 359)), + owning_building_guid = 29, + door_guid = 680 + ) + LocalObject( + 936, + IFFLock.Constructor(Vector3(5109.992f, 3296.115f, 228.5129f), Vector3(0, 0, 89)), + owning_building_guid = 29, + door_guid = 468 + ) + LocalObject( + 937, + IFFLock.Constructor(Vector3(5127.774f, 3313.568f, 228.5129f), Vector3(0, 0, 179)), + owning_building_guid = 29, + door_guid = 471 + ) + LocalObject( + 941, + IFFLock.Constructor(Vector3(5130.988f, 3288.007f, 208.3969f), Vector3(0, 0, 89)), + owning_building_guid = 29, + door_guid = 685 + ) + LocalObject( + 945, + IFFLock.Constructor(Vector3(5171.843f, 3332.094f, 208.3969f), Vector3(0, 0, 359)), + owning_building_guid = 29, + door_guid = 689 + ) + LocalObject( + 946, + IFFLock.Constructor(Vector3(5175.157f, 3322.398f, 208.3969f), Vector3(0, 0, 179)), + owning_building_guid = 29, + door_guid = 690 + ) LocalObject(1265, Locker.Constructor(Vector3(5108.473f, 3279.017f, 207.3219f)), owning_building_guid = 29) LocalObject(1266, Locker.Constructor(Vector3(5108.453f, 3280.166f, 207.3219f)), owning_building_guid = 29) LocalObject(1267, Locker.Constructor(Vector3(5108.433f, 3281.313f, 207.3219f)), owning_building_guid = 29) @@ -882,88 +2396,331 @@ object Map06 { // Ceryshen LocalObject(1359, Locker.Constructor(Vector3(5100.779f, 3279.646f, 216.8319f)), owning_building_guid = 29) LocalObject(1360, Locker.Constructor(Vector3(5103.301f, 3279.69f, 217.0609f)), owning_building_guid = 29) LocalObject(1361, Locker.Constructor(Vector3(5104.335f, 3279.708f, 217.0609f)), owning_building_guid = 29) - LocalObject(200, Terminal.Constructor(Vector3(5152.86f, 3295.093f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(201, Terminal.Constructor(Vector3(5153.082f, 3282.395f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(202, Terminal.Constructor(Vector3(5154.282f, 3296.566f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(203, Terminal.Constructor(Vector3(5154.555f, 3280.973f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(204, Terminal.Constructor(Vector3(5161.606f, 3296.694f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(205, Terminal.Constructor(Vector3(5161.878f, 3281.101f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(206, Terminal.Constructor(Vector3(5163.079f, 3295.272f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(207, Terminal.Constructor(Vector3(5163.301f, 3282.574f, 207.0509f), cert_terminal), owning_building_guid = 29) - LocalObject(1609, Terminal.Constructor(Vector3(5113.732f, 3279.478f, 208.6509f), order_terminal), owning_building_guid = 29) - LocalObject(1610, Terminal.Constructor(Vector3(5115.35f, 3308.193f, 218.3559f), order_terminal), owning_building_guid = 29) - LocalObject(1611, Terminal.Constructor(Vector3(5117.463f, 3279.543f, 208.6509f), order_terminal), owning_building_guid = 29) - LocalObject(1612, Terminal.Constructor(Vector3(5121.251f, 3279.609f, 208.6509f), order_terminal), owning_building_guid = 29) - LocalObject(2261, Terminal.Constructor(Vector3(5049.138f, 3313.1f, 211.1739f), spawn_terminal), owning_building_guid = 29) - LocalObject(2262, Terminal.Constructor(Vector3(5092.395f, 3295.857f, 218.6399f), spawn_terminal), owning_building_guid = 29) - LocalObject(2263, Terminal.Constructor(Vector3(5104.709f, 3337.984f, 208.6739f), spawn_terminal), owning_building_guid = 29) - LocalObject(2264, Terminal.Constructor(Vector3(5109.329f, 3293.086f, 209.1949f), spawn_terminal), owning_building_guid = 29) - LocalObject(2265, Terminal.Constructor(Vector3(5116.62f, 3293.218f, 209.1949f), spawn_terminal), owning_building_guid = 29) - LocalObject(2266, Terminal.Constructor(Vector3(5123.907f, 3293.342f, 209.1949f), spawn_terminal), owning_building_guid = 29) - LocalObject(2267, Terminal.Constructor(Vector3(5169.98f, 3299.71f, 208.6739f), spawn_terminal), owning_building_guid = 29) - LocalObject(2421, Terminal.Constructor(Vector3(5043.48f, 3259.275f, 219.3659f), vehicle_terminal_combined), owning_building_guid = 29) - LocalObject(1481, VehicleSpawnPad.Constructor(Vector3(5043.152f, 3272.91f, 215.2079f), mb_pad_creation, Vector3(0, 0, -1)), owning_building_guid = 29, terminal_guid = 2421) + LocalObject( + 200, + Terminal.Constructor(Vector3(5152.86f, 3295.093f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 201, + Terminal.Constructor(Vector3(5153.082f, 3282.395f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 202, + Terminal.Constructor(Vector3(5154.282f, 3296.566f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 203, + Terminal.Constructor(Vector3(5154.555f, 3280.973f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(5161.606f, 3296.694f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(5161.878f, 3281.101f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(5163.079f, 3295.272f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(5163.301f, 3282.574f, 207.0509f), cert_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1609, + Terminal.Constructor(Vector3(5113.732f, 3279.478f, 208.6509f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1610, + Terminal.Constructor(Vector3(5115.35f, 3308.193f, 218.3559f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1611, + Terminal.Constructor(Vector3(5117.463f, 3279.543f, 208.6509f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1612, + Terminal.Constructor(Vector3(5121.251f, 3279.609f, 208.6509f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2261, + Terminal.Constructor(Vector3(5049.138f, 3313.1f, 211.1739f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2262, + Terminal.Constructor(Vector3(5092.395f, 3295.857f, 218.6399f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2263, + Terminal.Constructor(Vector3(5104.709f, 3337.984f, 208.6739f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2264, + Terminal.Constructor(Vector3(5109.329f, 3293.086f, 209.1949f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2265, + Terminal.Constructor(Vector3(5116.62f, 3293.218f, 209.1949f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2266, + Terminal.Constructor(Vector3(5123.907f, 3293.342f, 209.1949f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2267, + Terminal.Constructor(Vector3(5169.98f, 3299.71f, 208.6739f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2421, + Terminal.Constructor(Vector3(5043.48f, 3259.275f, 219.3659f), vehicle_terminal_combined), + owning_building_guid = 29 + ) + LocalObject( + 1481, + VehicleSpawnPad.Constructor(Vector3(5043.152f, 3272.91f, 215.2079f), mb_pad_creation, Vector3(0, 0, -1)), + owning_building_guid = 29, + terminal_guid = 2421 + ) LocalObject(2096, ResourceSilo.Constructor(Vector3(5155.792f, 3359.145f, 224.0779f)), owning_building_guid = 29) - LocalObject(2167, SpawnTube.Constructor(Vector3(5110.756f, 3293.849f, 207.0609f), Vector3(0, 0, 89)), owning_building_guid = 29) - LocalObject(2168, SpawnTube.Constructor(Vector3(5118.046f, 3293.977f, 207.0609f), Vector3(0, 0, 89)), owning_building_guid = 29) - LocalObject(2169, SpawnTube.Constructor(Vector3(5125.333f, 3294.104f, 207.0609f), Vector3(0, 0, 89)), owning_building_guid = 29) - LocalObject(139, ProximityTerminal.Constructor(Vector3(5098.928f, 3295.893f, 216.8709f), adv_med_terminal), owning_building_guid = 29) - LocalObject(1497, ProximityTerminal.Constructor(Vector3(5110.434f, 3270.431f, 207.0609f), medical_terminal), owning_building_guid = 29) - LocalObject(1780, ProximityTerminal.Constructor(Vector3(5036.756f, 3298.594f, 225.4129f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1781, Terminal.Constructor(Vector3(5036.756f, 3298.594f, 225.4129f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1783, ProximityTerminal.Constructor(Vector3(5043.754f, 3315.033f, 227.3539f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1784, Terminal.Constructor(Vector3(5043.754f, 3315.033f, 227.3539f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1786, ProximityTerminal.Constructor(Vector3(5151.269f, 3297.467f, 227.3929f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1787, Terminal.Constructor(Vector3(5151.269f, 3297.467f, 227.3929f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(1789, ProximityTerminal.Constructor(Vector3(5159.383f, 3313.833f, 225.4029f), pad_landing_frame), owning_building_guid = 29) - LocalObject(1790, Terminal.Constructor(Vector3(5159.383f, 3313.833f, 225.4029f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(2073, ProximityTerminal.Constructor(Vector3(5020.548f, 3331.989f, 216.8109f), repair_silo), owning_building_guid = 29) - LocalObject(2074, Terminal.Constructor(Vector3(5020.548f, 3331.989f, 216.8109f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(2077, ProximityTerminal.Constructor(Vector3(5122.775f, 3245.755f, 216.8109f), repair_silo), owning_building_guid = 29) - LocalObject(2078, Terminal.Constructor(Vector3(5122.775f, 3245.755f, 216.8109f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(1449, FacilityTurret.Constructor(Vector3(5008.144f, 3367.903f, 225.4629f), manned_turret), owning_building_guid = 29) + LocalObject( + 2167, + SpawnTube.Constructor(Vector3(5110.756f, 3293.849f, 207.0609f), Vector3(0, 0, 89)), + owning_building_guid = 29 + ) + LocalObject( + 2168, + SpawnTube.Constructor(Vector3(5118.046f, 3293.977f, 207.0609f), Vector3(0, 0, 89)), + owning_building_guid = 29 + ) + LocalObject( + 2169, + SpawnTube.Constructor(Vector3(5125.333f, 3294.104f, 207.0609f), Vector3(0, 0, 89)), + owning_building_guid = 29 + ) + LocalObject( + 139, + ProximityTerminal.Constructor(Vector3(5098.928f, 3295.893f, 216.8709f), adv_med_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1497, + ProximityTerminal.Constructor(Vector3(5110.434f, 3270.431f, 207.0609f), medical_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1780, + ProximityTerminal.Constructor(Vector3(5036.756f, 3298.594f, 225.4129f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1781, + Terminal.Constructor(Vector3(5036.756f, 3298.594f, 225.4129f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1783, + ProximityTerminal.Constructor(Vector3(5043.754f, 3315.033f, 227.3539f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1784, + Terminal.Constructor(Vector3(5043.754f, 3315.033f, 227.3539f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1786, + ProximityTerminal.Constructor(Vector3(5151.269f, 3297.467f, 227.3929f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1787, + Terminal.Constructor(Vector3(5151.269f, 3297.467f, 227.3929f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1789, + ProximityTerminal.Constructor(Vector3(5159.383f, 3313.833f, 225.4029f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 1790, + Terminal.Constructor(Vector3(5159.383f, 3313.833f, 225.4029f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2073, + ProximityTerminal.Constructor(Vector3(5020.548f, 3331.989f, 216.8109f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2074, + Terminal.Constructor(Vector3(5020.548f, 3331.989f, 216.8109f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2077, + ProximityTerminal.Constructor(Vector3(5122.775f, 3245.755f, 216.8109f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2078, + Terminal.Constructor(Vector3(5122.775f, 3245.755f, 216.8109f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1449, + FacilityTurret.Constructor(Vector3(5008.144f, 3367.903f, 225.4629f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1449, 5030) - LocalObject(1450, FacilityTurret.Constructor(Vector3(5010.496f, 3232.697f, 225.4629f), manned_turret), owning_building_guid = 29) + LocalObject( + 1450, + FacilityTurret.Constructor(Vector3(5010.496f, 3232.697f, 225.4629f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1450, 5031) - LocalObject(1453, FacilityTurret.Constructor(Vector3(5145.621f, 3233.869f, 225.4629f), manned_turret), owning_building_guid = 29) + LocalObject( + 1453, + FacilityTurret.Constructor(Vector3(5145.621f, 3233.869f, 225.4629f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1453, 5032) - LocalObject(1454, FacilityTurret.Constructor(Vector3(5185.21f, 3371.001f, 225.4629f), manned_turret), owning_building_guid = 29) + LocalObject( + 1454, + FacilityTurret.Constructor(Vector3(5185.21f, 3371.001f, 225.4629f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1454, 5033) - LocalObject(1455, FacilityTurret.Constructor(Vector3(5187.971f, 3277.762f, 225.4629f), manned_turret), owning_building_guid = 29) + LocalObject( + 1455, + FacilityTurret.Constructor(Vector3(5187.971f, 3277.762f, 225.4629f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1455, 5034) - LocalObject(736, ImplantTerminalMech.Constructor(Vector3(5150.537f, 3288.71f, 206.5379f)), owning_building_guid = 29) - LocalObject(730, Terminal.Constructor(Vector3(5150.555f, 3288.71f, 206.5379f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 736, + ImplantTerminalMech.Constructor(Vector3(5150.537f, 3288.71f, 206.5379f)), + owning_building_guid = 29 + ) + LocalObject( + 730, + Terminal.Constructor(Vector3(5150.555f, 3288.71f, 206.5379f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(736, 730) - LocalObject(737, ImplantTerminalMech.Constructor(Vector3(5165.89f, 3288.99f, 206.5379f)), owning_building_guid = 29) - LocalObject(731, Terminal.Constructor(Vector3(5165.873f, 3288.99f, 206.5379f), implant_terminal_interface), owning_building_guid = 29) + LocalObject( + 737, + ImplantTerminalMech.Constructor(Vector3(5165.89f, 3288.99f, 206.5379f)), + owning_building_guid = 29 + ) + LocalObject( + 731, + Terminal.Constructor(Vector3(5165.873f, 3288.99f, 206.5379f), implant_terminal_interface), + owning_building_guid = 29 + ) TerminalToInterface(737, 731) - LocalObject(1883, Painbox.Constructor(Vector3(5086.435f, 3292.064f, 231.0897f), painbox), owning_building_guid = 29) - LocalObject(1892, Painbox.Constructor(Vector3(5113.968f, 3283.384f, 211.1308f), painbox_continuous), owning_building_guid = 29) - LocalObject(1901, Painbox.Constructor(Vector3(5100.872f, 3293.728f, 231.2948f), painbox_door_radius), owning_building_guid = 29) - LocalObject(1924, Painbox.Constructor(Vector3(5103.978f, 3287.423f, 209.4168f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1925, Painbox.Constructor(Vector3(5125.534f, 3270.455f, 210.6018f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(1926, Painbox.Constructor(Vector3(5132.045f, 3285.937f, 208.7751f), painbox_door_radius_continuous), owning_building_guid = 29) + LocalObject( + 1883, + Painbox.Constructor(Vector3(5086.435f, 3292.064f, 231.0897f), painbox), + owning_building_guid = 29 + ) + LocalObject( + 1892, + Painbox.Constructor(Vector3(5113.968f, 3283.384f, 211.1308f), painbox_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1901, + Painbox.Constructor(Vector3(5100.872f, 3293.728f, 231.2948f), painbox_door_radius), + owning_building_guid = 29 + ) + LocalObject( + 1924, + Painbox.Constructor(Vector3(5103.978f, 3287.423f, 209.4168f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1925, + Painbox.Constructor(Vector3(5125.534f, 3270.455f, 210.6018f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1926, + Painbox.Constructor(Vector3(5132.045f, 3285.937f, 208.7751f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) LocalObject(244, Generator.Constructor(Vector3(5082.519f, 3293.564f, 225.7669f)), owning_building_guid = 29) - LocalObject(235, Terminal.Constructor(Vector3(5090.709f, 3293.754f, 227.0609f), gen_control), owning_building_guid = 29) + LocalObject( + 235, + Terminal.Constructor(Vector3(5090.709f, 3293.754f, 227.0609f), gen_control), + owning_building_guid = 29 + ) } Building18657() def Building18657(): Unit = { // Name: GW_Ceryshen_S Type: hst GUID: 33, MapID: 18657 - LocalBuilding("GW_Ceryshen_S", 33, 18657, FoundationBuilder(WarpGate.Structure(Vector3(2248.14f, 1712.18f, 224.5f), hst))) + LocalBuilding( + "GW_Ceryshen_S", + 33, + 18657, + FoundationBuilder(WarpGate.Structure(Vector3(2248.14f, 1712.18f, 224.5f), hst)) + ) } Building18658() def Building18658(): Unit = { // Name: GW_Ceryshen_N Type: hst GUID: 34, MapID: 18658 - LocalBuilding("GW_Ceryshen_N", 34, 18658, FoundationBuilder(WarpGate.Structure(Vector3(3175.87f, 5324.2f, 232.33f), hst))) + LocalBuilding( + "GW_Ceryshen_N", + 34, + 18658, + FoundationBuilder(WarpGate.Structure(Vector3(3175.87f, 5324.2f, 232.33f), hst)) + ) } Building3() def Building3(): Unit = { // Name: Igaluk Type: tech_plant GUID: 36, MapID: 3 - LocalBuilding("Igaluk", 36, 3, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3320f, 5756f, 234.4307f), Vector3(0f, 0f, 269f), tech_plant))) - LocalObject(176, CaptureTerminal.Constructor(Vector3(3275.835f, 5752.036f, 249.5307f), capture_terminal), owning_building_guid = 36) + LocalBuilding( + "Igaluk", + 36, + 3, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3320f, 5756f, 234.4307f), + Vector3(0f, 0f, 269f), + tech_plant + ) + ) + ) + LocalObject( + 176, + CaptureTerminal.Constructor(Vector3(3275.835f, 5752.036f, 249.5307f), capture_terminal), + owning_building_guid = 36 + ) LocalObject(299, Door.Constructor(Vector3(3220.713f, 5797.739f, 236.0517f)), owning_building_guid = 36) LocalObject(300, Door.Constructor(Vector3(3228.736f, 5752.987f, 236.0817f)), owning_building_guid = 36) LocalObject(301, Door.Constructor(Vector3(3229.053f, 5771.178f, 244.0447f)), owning_building_guid = 36) @@ -1002,16 +2759,66 @@ object Map06 { // Ceryshen LocalObject(2296, Door.Constructor(Vector3(3277.518f, 5744.066f, 228.8847f)), owning_building_guid = 36) LocalObject(2297, Door.Constructor(Vector3(3284.81f, 5743.939f, 228.8847f)), owning_building_guid = 36) LocalObject(2298, Door.Constructor(Vector3(3292.098f, 5743.812f, 228.8847f)), owning_building_guid = 36) - LocalObject(748, IFFLock.Constructor(Vector3(3270.854f, 5713.494f, 236.0107f), Vector3(0, 0, 271)), owning_building_guid = 36, door_guid = 712) - LocalObject(756, IFFLock.Constructor(Vector3(3363.093f, 5797.999f, 236.1187f), Vector3(0, 0, 91)), owning_building_guid = 36, door_guid = 512) - LocalObject(803, IFFLock.Constructor(Vector3(3218.682f, 5798.589f, 235.9827f), Vector3(0, 0, 1)), owning_building_guid = 36, door_guid = 299) - LocalObject(806, IFFLock.Constructor(Vector3(3270.821f, 5735.283f, 228.3667f), Vector3(0, 0, 271)), owning_building_guid = 36, door_guid = 546) - LocalObject(807, IFFLock.Constructor(Vector3(3273.893f, 5725.74f, 220.8667f), Vector3(0, 0, 1)), owning_building_guid = 36, door_guid = 547) - LocalObject(808, IFFLock.Constructor(Vector3(3279.441f, 5737.209f, 250.9767f), Vector3(0, 0, 271)), owning_building_guid = 36, door_guid = 304) - LocalObject(809, IFFLock.Constructor(Vector3(3281.043f, 5762.253f, 250.8667f), Vector3(0, 0, 91)), owning_building_guid = 36, door_guid = 551) - LocalObject(816, IFFLock.Constructor(Vector3(3296.492f, 5737.979f, 228.3667f), Vector3(0, 0, 91)), owning_building_guid = 36, door_guid = 556) - LocalObject(817, IFFLock.Constructor(Vector3(3297.237f, 5747.842f, 250.9767f), Vector3(0, 0, 91)), owning_building_guid = 36, door_guid = 311) - LocalObject(818, IFFLock.Constructor(Vector3(3302.543f, 5726.728f, 220.8667f), Vector3(0, 0, 271)), owning_building_guid = 36, door_guid = 559) + LocalObject( + 748, + IFFLock.Constructor(Vector3(3270.854f, 5713.494f, 236.0107f), Vector3(0, 0, 271)), + owning_building_guid = 36, + door_guid = 712 + ) + LocalObject( + 756, + IFFLock.Constructor(Vector3(3363.093f, 5797.999f, 236.1187f), Vector3(0, 0, 91)), + owning_building_guid = 36, + door_guid = 512 + ) + LocalObject( + 803, + IFFLock.Constructor(Vector3(3218.682f, 5798.589f, 235.9827f), Vector3(0, 0, 1)), + owning_building_guid = 36, + door_guid = 299 + ) + LocalObject( + 806, + IFFLock.Constructor(Vector3(3270.821f, 5735.283f, 228.3667f), Vector3(0, 0, 271)), + owning_building_guid = 36, + door_guid = 546 + ) + LocalObject( + 807, + IFFLock.Constructor(Vector3(3273.893f, 5725.74f, 220.8667f), Vector3(0, 0, 1)), + owning_building_guid = 36, + door_guid = 547 + ) + LocalObject( + 808, + IFFLock.Constructor(Vector3(3279.441f, 5737.209f, 250.9767f), Vector3(0, 0, 271)), + owning_building_guid = 36, + door_guid = 304 + ) + LocalObject( + 809, + IFFLock.Constructor(Vector3(3281.043f, 5762.253f, 250.8667f), Vector3(0, 0, 91)), + owning_building_guid = 36, + door_guid = 551 + ) + LocalObject( + 816, + IFFLock.Constructor(Vector3(3296.492f, 5737.979f, 228.3667f), Vector3(0, 0, 91)), + owning_building_guid = 36, + door_guid = 556 + ) + LocalObject( + 817, + IFFLock.Constructor(Vector3(3297.237f, 5747.842f, 250.9767f), Vector3(0, 0, 91)), + owning_building_guid = 36, + door_guid = 311 + ) + LocalObject( + 818, + IFFLock.Constructor(Vector3(3302.543f, 5726.728f, 220.8667f), Vector3(0, 0, 271)), + owning_building_guid = 36, + door_guid = 559 + ) LocalObject(1064, Locker.Constructor(Vector3(3273.676f, 5729.781f, 227.2917f)), owning_building_guid = 36) LocalObject(1065, Locker.Constructor(Vector3(3273.697f, 5730.93f, 227.2917f)), owning_building_guid = 36) LocalObject(1066, Locker.Constructor(Vector3(3273.717f, 5732.077f, 227.2917f)), owning_building_guid = 36) @@ -1024,72 +2831,295 @@ object Map06 { // Ceryshen LocalObject(1073, Locker.Constructor(Vector3(3293.526f, 5719.603f, 219.5307f)), owning_building_guid = 36) LocalObject(1074, Locker.Constructor(Vector3(3293.549f, 5720.938f, 219.5307f)), owning_building_guid = 36) LocalObject(1075, Locker.Constructor(Vector3(3293.572f, 5722.262f, 219.5307f)), owning_building_guid = 36) - LocalObject(140, Terminal.Constructor(Vector3(3294.855f, 5739.832f, 250.1337f), air_vehicle_terminal), owning_building_guid = 36) - LocalObject(1472, VehicleSpawnPad.Constructor(Vector3(3315.468f, 5734.988f, 247.0087f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 36, terminal_guid = 140) - LocalObject(141, Terminal.Constructor(Vector3(3295.063f, 5751.762f, 250.1337f), air_vehicle_terminal), owning_building_guid = 36) - LocalObject(1473, VehicleSpawnPad.Constructor(Vector3(3315.834f, 5756.003f, 247.0087f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 36, terminal_guid = 141) - LocalObject(1531, Terminal.Constructor(Vector3(3278.949f, 5730.059f, 228.6207f), order_terminal), owning_building_guid = 36) - LocalObject(1532, Terminal.Constructor(Vector3(3282.679f, 5729.993f, 228.6207f), order_terminal), owning_building_guid = 36) - LocalObject(1533, Terminal.Constructor(Vector3(3286.468f, 5729.927f, 228.6207f), order_terminal), owning_building_guid = 36) - LocalObject(1534, Terminal.Constructor(Vector3(3293.437f, 5753.405f, 240.8607f), order_terminal), owning_building_guid = 36) - LocalObject(2219, Terminal.Constructor(Vector3(3225.025f, 5781.719f, 228.5877f), spawn_terminal), owning_building_guid = 36) - LocalObject(2220, Terminal.Constructor(Vector3(3272.46f, 5748.887f, 221.0877f), spawn_terminal), owning_building_guid = 36) - LocalObject(2221, Terminal.Constructor(Vector3(3275.023f, 5743.812f, 229.1647f), spawn_terminal), owning_building_guid = 36) - LocalObject(2222, Terminal.Constructor(Vector3(3282.314f, 5743.689f, 229.1647f), spawn_terminal), owning_building_guid = 36) - LocalObject(2223, Terminal.Constructor(Vector3(3289.601f, 5743.559f, 229.1647f), spawn_terminal), owning_building_guid = 36) - LocalObject(2224, Terminal.Constructor(Vector3(3298.992f, 5719.119f, 241.1127f), spawn_terminal), owning_building_guid = 36) - LocalObject(2225, Terminal.Constructor(Vector3(3322.961f, 5741.414f, 246.4537f), spawn_terminal), owning_building_guid = 36) - LocalObject(2415, Terminal.Constructor(Vector3(3280.267f, 5804.705f, 220.2447f), ground_vehicle_terminal), owning_building_guid = 36) - LocalObject(1471, VehicleSpawnPad.Constructor(Vector3(3291.182f, 5804.565f, 211.9677f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 36, terminal_guid = 2415) + LocalObject( + 140, + Terminal.Constructor(Vector3(3294.855f, 5739.832f, 250.1337f), air_vehicle_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1472, + VehicleSpawnPad.Constructor(Vector3(3315.468f, 5734.988f, 247.0087f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 36, + terminal_guid = 140 + ) + LocalObject( + 141, + Terminal.Constructor(Vector3(3295.063f, 5751.762f, 250.1337f), air_vehicle_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1473, + VehicleSpawnPad.Constructor(Vector3(3315.834f, 5756.003f, 247.0087f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 36, + terminal_guid = 141 + ) + LocalObject( + 1531, + Terminal.Constructor(Vector3(3278.949f, 5730.059f, 228.6207f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1532, + Terminal.Constructor(Vector3(3282.679f, 5729.993f, 228.6207f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1533, + Terminal.Constructor(Vector3(3286.468f, 5729.927f, 228.6207f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1534, + Terminal.Constructor(Vector3(3293.437f, 5753.405f, 240.8607f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2219, + Terminal.Constructor(Vector3(3225.025f, 5781.719f, 228.5877f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2220, + Terminal.Constructor(Vector3(3272.46f, 5748.887f, 221.0877f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2221, + Terminal.Constructor(Vector3(3275.023f, 5743.812f, 229.1647f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2222, + Terminal.Constructor(Vector3(3282.314f, 5743.689f, 229.1647f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2223, + Terminal.Constructor(Vector3(3289.601f, 5743.559f, 229.1647f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2224, + Terminal.Constructor(Vector3(3298.992f, 5719.119f, 241.1127f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2225, + Terminal.Constructor(Vector3(3322.961f, 5741.414f, 246.4537f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2415, + Terminal.Constructor(Vector3(3280.267f, 5804.705f, 220.2447f), ground_vehicle_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1471, + VehicleSpawnPad.Constructor(Vector3(3291.182f, 5804.565f, 211.9677f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 36, + terminal_guid = 2415 + ) LocalObject(2090, ResourceSilo.Constructor(Vector3(3351.472f, 5693.689f, 241.4387f)), owning_building_guid = 36) - LocalObject(2119, SpawnTube.Constructor(Vector3(3276.476f, 5744.525f, 227.0307f), Vector3(0, 0, 91)), owning_building_guid = 36) - LocalObject(2120, SpawnTube.Constructor(Vector3(3283.766f, 5744.397f, 227.0307f), Vector3(0, 0, 91)), owning_building_guid = 36) - LocalObject(2121, SpawnTube.Constructor(Vector3(3291.053f, 5744.271f, 227.0307f), Vector3(0, 0, 91)), owning_building_guid = 36) - LocalObject(1486, ProximityTerminal.Constructor(Vector3(3282.853f, 5753.589f, 239.5277f), medical_terminal), owning_building_guid = 36) - LocalObject(1487, ProximityTerminal.Constructor(Vector3(3292.918f, 5716.022f, 219.5307f), medical_terminal), owning_building_guid = 36) - LocalObject(1705, ProximityTerminal.Constructor(Vector3(3238.195f, 5731.89f, 242.6387f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1706, Terminal.Constructor(Vector3(3238.195f, 5731.89f, 242.6387f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1708, ProximityTerminal.Constructor(Vector3(3255.32f, 5747.749f, 249.8777f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1709, Terminal.Constructor(Vector3(3255.32f, 5747.749f, 249.8777f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1711, ProximityTerminal.Constructor(Vector3(3276.78f, 5694.758f, 245.0827f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1712, Terminal.Constructor(Vector3(3276.78f, 5694.758f, 245.0827f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1714, ProximityTerminal.Constructor(Vector3(3292.914f, 5688.183f, 242.6387f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1715, Terminal.Constructor(Vector3(3292.914f, 5688.183f, 242.6387f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1717, ProximityTerminal.Constructor(Vector3(3296.734f, 5817.711f, 242.6257f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1718, Terminal.Constructor(Vector3(3296.734f, 5817.711f, 242.6257f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1720, ProximityTerminal.Constructor(Vector3(3312.55f, 5797.156f, 244.9807f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1721, Terminal.Constructor(Vector3(3312.55f, 5797.156f, 244.9807f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2025, ProximityTerminal.Constructor(Vector3(3226.198f, 5698.992f, 234.1807f), repair_silo), owning_building_guid = 36) - LocalObject(2026, Terminal.Constructor(Vector3(3226.198f, 5698.992f, 234.1807f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(2029, ProximityTerminal.Constructor(Vector3(3361.625f, 5754.965f, 234.1592f), repair_silo), owning_building_guid = 36) - LocalObject(2030, Terminal.Constructor(Vector3(3361.625f, 5754.965f, 234.1592f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(1391, FacilityTurret.Constructor(Vector3(3219.168f, 5671.593f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 2119, + SpawnTube.Constructor(Vector3(3276.476f, 5744.525f, 227.0307f), Vector3(0, 0, 91)), + owning_building_guid = 36 + ) + LocalObject( + 2120, + SpawnTube.Constructor(Vector3(3283.766f, 5744.397f, 227.0307f), Vector3(0, 0, 91)), + owning_building_guid = 36 + ) + LocalObject( + 2121, + SpawnTube.Constructor(Vector3(3291.053f, 5744.271f, 227.0307f), Vector3(0, 0, 91)), + owning_building_guid = 36 + ) + LocalObject( + 1486, + ProximityTerminal.Constructor(Vector3(3282.853f, 5753.589f, 239.5277f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1487, + ProximityTerminal.Constructor(Vector3(3292.918f, 5716.022f, 219.5307f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1705, + ProximityTerminal.Constructor(Vector3(3238.195f, 5731.89f, 242.6387f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1706, + Terminal.Constructor(Vector3(3238.195f, 5731.89f, 242.6387f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1708, + ProximityTerminal.Constructor(Vector3(3255.32f, 5747.749f, 249.8777f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1709, + Terminal.Constructor(Vector3(3255.32f, 5747.749f, 249.8777f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1711, + ProximityTerminal.Constructor(Vector3(3276.78f, 5694.758f, 245.0827f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1712, + Terminal.Constructor(Vector3(3276.78f, 5694.758f, 245.0827f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1714, + ProximityTerminal.Constructor(Vector3(3292.914f, 5688.183f, 242.6387f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1715, + Terminal.Constructor(Vector3(3292.914f, 5688.183f, 242.6387f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1717, + ProximityTerminal.Constructor(Vector3(3296.734f, 5817.711f, 242.6257f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1718, + Terminal.Constructor(Vector3(3296.734f, 5817.711f, 242.6257f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1720, + ProximityTerminal.Constructor(Vector3(3312.55f, 5797.156f, 244.9807f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1721, + Terminal.Constructor(Vector3(3312.55f, 5797.156f, 244.9807f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2025, + ProximityTerminal.Constructor(Vector3(3226.198f, 5698.992f, 234.1807f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2026, + Terminal.Constructor(Vector3(3226.198f, 5698.992f, 234.1807f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2029, + ProximityTerminal.Constructor(Vector3(3361.625f, 5754.965f, 234.1592f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2030, + Terminal.Constructor(Vector3(3361.625f, 5754.965f, 234.1592f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1391, + FacilityTurret.Constructor(Vector3(3219.168f, 5671.593f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1391, 5035) - LocalObject(1392, FacilityTurret.Constructor(Vector3(3222.052f, 5836.309f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 1392, + FacilityTurret.Constructor(Vector3(3222.052f, 5836.309f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1392, 5036) - LocalObject(1394, FacilityTurret.Constructor(Vector3(3283.79f, 5662.737f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 1394, + FacilityTurret.Constructor(Vector3(3283.79f, 5662.737f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1394, 5037) - LocalObject(1395, FacilityTurret.Constructor(Vector3(3356.889f, 5669.189f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 1395, + FacilityTurret.Constructor(Vector3(3356.889f, 5669.189f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1395, 5038) - LocalObject(1398, FacilityTurret.Constructor(Vector3(3418.742f, 5748.675f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 1398, + FacilityTurret.Constructor(Vector3(3418.742f, 5748.675f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1398, 5039) - LocalObject(1399, FacilityTurret.Constructor(Vector3(3420.308f, 5838.356f, 242.9297f), manned_turret), owning_building_guid = 36) + LocalObject( + 1399, + FacilityTurret.Constructor(Vector3(3420.308f, 5838.356f, 242.9297f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1399, 5040) - LocalObject(1877, Painbox.Constructor(Vector3(3315.758f, 5730.333f, 223.004f), painbox), owning_building_guid = 36) - LocalObject(1886, Painbox.Constructor(Vector3(3282.854f, 5735.813f, 231.3006f), painbox_continuous), owning_building_guid = 36) - LocalObject(1895, Painbox.Constructor(Vector3(3300.991f, 5728.628f, 222.6901f), painbox_door_radius), owning_building_guid = 36) - LocalObject(1906, Painbox.Constructor(Vector3(3269.954f, 5737.836f, 229.1586f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(1907, Painbox.Constructor(Vector3(3289.952f, 5720.878f, 230.613f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(1908, Painbox.Constructor(Vector3(3297.426f, 5736.53f, 229.7069f), painbox_door_radius_continuous), owning_building_guid = 36) + LocalObject( + 1877, + Painbox.Constructor(Vector3(3315.758f, 5730.333f, 223.004f), painbox), + owning_building_guid = 36 + ) + LocalObject( + 1886, + Painbox.Constructor(Vector3(3282.854f, 5735.813f, 231.3006f), painbox_continuous), + owning_building_guid = 36 + ) + LocalObject( + 1895, + Painbox.Constructor(Vector3(3300.991f, 5728.628f, 222.6901f), painbox_door_radius), + owning_building_guid = 36 + ) + LocalObject( + 1906, + Painbox.Constructor(Vector3(3269.954f, 5737.836f, 229.1586f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 1907, + Painbox.Constructor(Vector3(3289.952f, 5720.878f, 230.613f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 1908, + Painbox.Constructor(Vector3(3297.426f, 5736.53f, 229.7069f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) LocalObject(238, Generator.Constructor(Vector3(3319.067f, 5728.037f, 218.2367f)), owning_building_guid = 36) - LocalObject(229, Terminal.Constructor(Vector3(3310.875f, 5728.133f, 219.5307f), gen_control), owning_building_guid = 36) + LocalObject( + 229, + Terminal.Constructor(Vector3(3310.875f, 5728.133f, 219.5307f), gen_control), + owning_building_guid = 36 + ) } Building5() def Building5(): Unit = { // Name: Nerrivik Type: tech_plant GUID: 39, MapID: 5 - LocalBuilding("Nerrivik", 39, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3642f, 3710f, 222.4253f), Vector3(0f, 0f, 223f), tech_plant))) - LocalObject(177, CaptureTerminal.Constructor(Vector3(3608.469f, 3739.016f, 237.5253f), capture_terminal), owning_building_guid = 39) + LocalBuilding( + "Nerrivik", + 39, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3642f, 3710f, 222.4253f), + Vector3(0f, 0f, 223f), + tech_plant + ) + ) + ) + LocalObject( + 177, + CaptureTerminal.Constructor(Vector3(3608.469f, 3739.016f, 237.5253f), capture_terminal), + owning_building_guid = 39 + ) LocalObject(327, Door.Constructor(Vector3(3573.92f, 3667.142f, 231.9303f)), owning_building_guid = 39) LocalObject(328, Door.Constructor(Vector3(3576.435f, 3773.557f, 224.0763f)), owning_building_guid = 39) LocalObject(329, Door.Constructor(Vector3(3586.327f, 3653.836f, 223.9673f)), owning_building_guid = 39) @@ -1128,16 +3158,66 @@ object Map06 { // Ceryshen LocalObject(2305, Door.Constructor(Vector3(3603.906f, 3732.269f, 216.8793f)), owning_building_guid = 39) LocalObject(2306, Door.Constructor(Vector3(3608.879f, 3726.935f, 216.8793f)), owning_building_guid = 39) LocalObject(2307, Door.Constructor(Vector3(3613.85f, 3721.604f, 216.8793f)), owning_building_guid = 39) - LocalObject(749, IFFLock.Constructor(Vector3(3577.284f, 3715.826f, 224.0053f), Vector3(0, 0, 317)), owning_building_guid = 39, door_guid = 713) - LocalObject(757, IFFLock.Constructor(Vector3(3702.146f, 3708.176f, 224.1133f), Vector3(0, 0, 137)), owning_building_guid = 39, door_guid = 513) - LocalObject(827, IFFLock.Constructor(Vector3(3588.204f, 3722.146f, 208.8613f), Vector3(0, 0, 47)), owning_building_guid = 39, door_guid = 560) - LocalObject(828, IFFLock.Constructor(Vector3(3592.935f, 3730.985f, 216.3613f), Vector3(0, 0, 317)), owning_building_guid = 39, door_guid = 564) - LocalObject(829, IFFLock.Constructor(Vector3(3600.308f, 3726.123f, 238.9713f), Vector3(0, 0, 317)), owning_building_guid = 39, door_guid = 331) - LocalObject(830, IFFLock.Constructor(Vector3(3602.254f, 3812.467f, 223.9773f), Vector3(0, 0, 47)), owning_building_guid = 39, door_guid = 332) - LocalObject(831, IFFLock.Constructor(Vector3(3608.817f, 3702.223f, 208.8613f), Vector3(0, 0, 317)), owning_building_guid = 39, door_guid = 566) - LocalObject(832, IFFLock.Constructor(Vector3(3612.707f, 3714.392f, 216.3613f), Vector3(0, 0, 137)), owning_building_guid = 39, door_guid = 567) - LocalObject(833, IFFLock.Constructor(Vector3(3619.436f, 3742.367f, 238.8613f), Vector3(0, 0, 137)), owning_building_guid = 39, door_guid = 570) - LocalObject(834, IFFLock.Constructor(Vector3(3620.319f, 3720.707f, 238.9713f), Vector3(0, 0, 137)), owning_building_guid = 39, door_guid = 334) + LocalObject( + 749, + IFFLock.Constructor(Vector3(3577.284f, 3715.826f, 224.0053f), Vector3(0, 0, 317)), + owning_building_guid = 39, + door_guid = 713 + ) + LocalObject( + 757, + IFFLock.Constructor(Vector3(3702.146f, 3708.176f, 224.1133f), Vector3(0, 0, 137)), + owning_building_guid = 39, + door_guid = 513 + ) + LocalObject( + 827, + IFFLock.Constructor(Vector3(3588.204f, 3722.146f, 208.8613f), Vector3(0, 0, 47)), + owning_building_guid = 39, + door_guid = 560 + ) + LocalObject( + 828, + IFFLock.Constructor(Vector3(3592.935f, 3730.985f, 216.3613f), Vector3(0, 0, 317)), + owning_building_guid = 39, + door_guid = 564 + ) + LocalObject( + 829, + IFFLock.Constructor(Vector3(3600.308f, 3726.123f, 238.9713f), Vector3(0, 0, 317)), + owning_building_guid = 39, + door_guid = 331 + ) + LocalObject( + 830, + IFFLock.Constructor(Vector3(3602.254f, 3812.467f, 223.9773f), Vector3(0, 0, 47)), + owning_building_guid = 39, + door_guid = 332 + ) + LocalObject( + 831, + IFFLock.Constructor(Vector3(3608.817f, 3702.223f, 208.8613f), Vector3(0, 0, 317)), + owning_building_guid = 39, + door_guid = 566 + ) + LocalObject( + 832, + IFFLock.Constructor(Vector3(3612.707f, 3714.392f, 216.3613f), Vector3(0, 0, 137)), + owning_building_guid = 39, + door_guid = 567 + ) + LocalObject( + 833, + IFFLock.Constructor(Vector3(3619.436f, 3742.367f, 238.8613f), Vector3(0, 0, 137)), + owning_building_guid = 39, + door_guid = 570 + ) + LocalObject( + 834, + IFFLock.Constructor(Vector3(3620.319f, 3720.707f, 238.9713f), Vector3(0, 0, 137)), + owning_building_guid = 39, + door_guid = 334 + ) LocalObject(1100, Locker.Constructor(Vector3(3590.206f, 3697.026f, 207.5253f)), owning_building_guid = 39) LocalObject(1101, Locker.Constructor(Vector3(3590.961f, 3725.11f, 215.2863f)), owning_building_guid = 39) LocalObject(1102, Locker.Constructor(Vector3(3591.184f, 3697.938f, 207.5253f)), owning_building_guid = 39) @@ -1150,72 +3230,290 @@ object Map06 { // Ceryshen LocalObject(1109, Locker.Constructor(Vector3(3597.427f, 3703.76f, 207.5253f)), owning_building_guid = 39) LocalObject(1110, Locker.Constructor(Vector3(3598.404f, 3704.671f, 207.5253f)), owning_building_guid = 39) LocalObject(1111, Locker.Constructor(Vector3(3599.373f, 3705.574f, 207.5253f)), owning_building_guid = 39) - LocalObject(142, Terminal.Constructor(Vector3(3612.902f, 3716.856f, 238.1283f), air_vehicle_terminal), owning_building_guid = 39) - LocalObject(1474, VehicleSpawnPad.Constructor(Vector3(3623.737f, 3698.664f, 235.0033f), mb_pad_creation, Vector3(0, 0, 137)), owning_building_guid = 39, terminal_guid = 142) - LocalObject(143, Terminal.Constructor(Vector3(3621.629f, 3724.994f, 238.1283f), air_vehicle_terminal), owning_building_guid = 39) - LocalObject(1475, VehicleSpawnPad.Constructor(Vector3(3639.108f, 3712.998f, 235.0033f), mb_pad_creation, Vector3(0, 0, 137)), owning_building_guid = 39, terminal_guid = 143) - LocalObject(1544, Terminal.Constructor(Vector3(3594.823f, 3721.509f, 216.6153f), order_terminal), owning_building_guid = 39) - LocalObject(1545, Terminal.Constructor(Vector3(3597.367f, 3718.781f, 216.6153f), order_terminal), owning_building_guid = 39) - LocalObject(1546, Terminal.Constructor(Vector3(3599.951f, 3716.009f, 216.6153f), order_terminal), owning_building_guid = 39) - LocalObject(1547, Terminal.Constructor(Vector3(3621.681f, 3727.306f, 228.8553f), order_terminal), owning_building_guid = 39) - LocalObject(2226, Terminal.Constructor(Vector3(3594.526f, 3796.185f, 216.5823f), spawn_terminal), owning_building_guid = 39) - LocalObject(2227, Terminal.Constructor(Vector3(3600.877f, 3699.492f, 229.1073f), spawn_terminal), owning_building_guid = 39) - LocalObject(2228, Terminal.Constructor(Vector3(3601.99f, 3733.887f, 217.1593f), spawn_terminal), owning_building_guid = 39) - LocalObject(2229, Terminal.Constructor(Vector3(3603.859f, 3739.256f, 209.0823f), spawn_terminal), owning_building_guid = 39) - LocalObject(2230, Terminal.Constructor(Vector3(3606.966f, 3728.557f, 217.1593f), spawn_terminal), owning_building_guid = 39) - LocalObject(2231, Terminal.Constructor(Vector3(3611.934f, 3723.225f, 217.1593f), spawn_terminal), owning_building_guid = 39) - LocalObject(2232, Terminal.Constructor(Vector3(3633.565f, 3697.738f, 234.4483f), spawn_terminal), owning_building_guid = 39) - LocalObject(2416, Terminal.Constructor(Vector3(3649.435f, 3772.415f, 208.2393f), ground_vehicle_terminal), owning_building_guid = 39) - LocalObject(1476, VehicleSpawnPad.Constructor(Vector3(3656.917f, 3764.466f, 199.9623f), mb_pad_creation, Vector3(0, 0, 137)), owning_building_guid = 39, terminal_guid = 2416) + LocalObject( + 142, + Terminal.Constructor(Vector3(3612.902f, 3716.856f, 238.1283f), air_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1474, + VehicleSpawnPad.Constructor(Vector3(3623.737f, 3698.664f, 235.0033f), mb_pad_creation, Vector3(0, 0, 137)), + owning_building_guid = 39, + terminal_guid = 142 + ) + LocalObject( + 143, + Terminal.Constructor(Vector3(3621.629f, 3724.994f, 238.1283f), air_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1475, + VehicleSpawnPad.Constructor(Vector3(3639.108f, 3712.998f, 235.0033f), mb_pad_creation, Vector3(0, 0, 137)), + owning_building_guid = 39, + terminal_guid = 143 + ) + LocalObject( + 1544, + Terminal.Constructor(Vector3(3594.823f, 3721.509f, 216.6153f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1545, + Terminal.Constructor(Vector3(3597.367f, 3718.781f, 216.6153f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1546, + Terminal.Constructor(Vector3(3599.951f, 3716.009f, 216.6153f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1547, + Terminal.Constructor(Vector3(3621.681f, 3727.306f, 228.8553f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2226, + Terminal.Constructor(Vector3(3594.526f, 3796.185f, 216.5823f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2227, + Terminal.Constructor(Vector3(3600.877f, 3699.492f, 229.1073f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2228, + Terminal.Constructor(Vector3(3601.99f, 3733.887f, 217.1593f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2229, + Terminal.Constructor(Vector3(3603.859f, 3739.256f, 209.0823f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2230, + Terminal.Constructor(Vector3(3606.966f, 3728.557f, 217.1593f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2231, + Terminal.Constructor(Vector3(3611.934f, 3723.225f, 217.1593f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2232, + Terminal.Constructor(Vector3(3633.565f, 3697.738f, 234.4483f), spawn_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2416, + Terminal.Constructor(Vector3(3649.435f, 3772.415f, 208.2393f), ground_vehicle_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1476, + VehicleSpawnPad.Constructor(Vector3(3656.917f, 3764.466f, 199.9623f), mb_pad_creation, Vector3(0, 0, 137)), + owning_building_guid = 39, + terminal_guid = 2416 + ) LocalObject(2091, ResourceSilo.Constructor(Vector3(3619.04f, 3644.076f, 229.4333f)), owning_building_guid = 39) - LocalObject(2128, SpawnTube.Constructor(Vector3(3603.511f, 3733.337f, 215.0253f), Vector3(0, 0, 137)), owning_building_guid = 39) - LocalObject(2129, SpawnTube.Constructor(Vector3(3608.484f, 3728.005f, 215.0253f), Vector3(0, 0, 137)), owning_building_guid = 39) - LocalObject(2130, SpawnTube.Constructor(Vector3(3613.454f, 3722.675f, 215.0253f), Vector3(0, 0, 137)), owning_building_guid = 39) - LocalObject(1488, ProximityTerminal.Constructor(Vector3(3594.43f, 3701.71f, 207.5253f), medical_terminal), owning_building_guid = 39) - LocalObject(1489, ProximityTerminal.Constructor(Vector3(3614.461f, 3735.046f, 227.5223f), medical_terminal), owning_building_guid = 39) - LocalObject(1723, ProximityTerminal.Constructor(Vector3(3567.83f, 3752.098f, 230.6333f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1724, Terminal.Constructor(Vector3(3567.83f, 3752.098f, 230.6333f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1726, ProximityTerminal.Constructor(Vector3(3567.923f, 3698.548f, 233.0773f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1727, Terminal.Constructor(Vector3(3567.923f, 3698.548f, 233.0773f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1729, ProximityTerminal.Constructor(Vector3(3574.401f, 3682.374f, 230.6333f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1730, Terminal.Constructor(Vector3(3574.401f, 3682.374f, 230.6333f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1732, ProximityTerminal.Constructor(Vector3(3591.134f, 3750.795f, 237.8723f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1733, Terminal.Constructor(Vector3(3591.134f, 3750.795f, 237.8723f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1735, ProximityTerminal.Constructor(Vector3(3666.43f, 3743.948f, 232.9753f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1736, Terminal.Constructor(Vector3(3666.43f, 3743.948f, 232.9753f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1738, ProximityTerminal.Constructor(Vector3(3670.23f, 3769.604f, 230.6203f), pad_landing_frame), owning_building_guid = 39) - LocalObject(1739, Terminal.Constructor(Vector3(3670.23f, 3769.604f, 230.6203f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(2033, ProximityTerminal.Constructor(Vector3(3535.832f, 3737.874f, 222.1753f), repair_silo), owning_building_guid = 39) - LocalObject(2034, Terminal.Constructor(Vector3(3535.832f, 3737.874f, 222.1753f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(2037, ProximityTerminal.Constructor(Vector3(3670.17f, 3679.338f, 222.1538f), repair_silo), owning_building_guid = 39) - LocalObject(2038, Terminal.Constructor(Vector3(3670.17f, 3679.338f, 222.1538f), ground_rearm_terminal), owning_building_guid = 39) - LocalObject(1402, FacilityTurret.Constructor(Vector3(3511.239f, 3723.898f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 2128, + SpawnTube.Constructor(Vector3(3603.511f, 3733.337f, 215.0253f), Vector3(0, 0, 137)), + owning_building_guid = 39 + ) + LocalObject( + 2129, + SpawnTube.Constructor(Vector3(3608.484f, 3728.005f, 215.0253f), Vector3(0, 0, 137)), + owning_building_guid = 39 + ) + LocalObject( + 2130, + SpawnTube.Constructor(Vector3(3613.454f, 3722.675f, 215.0253f), Vector3(0, 0, 137)), + owning_building_guid = 39 + ) + LocalObject( + 1488, + ProximityTerminal.Constructor(Vector3(3594.43f, 3701.71f, 207.5253f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1489, + ProximityTerminal.Constructor(Vector3(3614.461f, 3735.046f, 227.5223f), medical_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1723, + ProximityTerminal.Constructor(Vector3(3567.83f, 3752.098f, 230.6333f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1724, + Terminal.Constructor(Vector3(3567.83f, 3752.098f, 230.6333f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1726, + ProximityTerminal.Constructor(Vector3(3567.923f, 3698.548f, 233.0773f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1727, + Terminal.Constructor(Vector3(3567.923f, 3698.548f, 233.0773f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1729, + ProximityTerminal.Constructor(Vector3(3574.401f, 3682.374f, 230.6333f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1730, + Terminal.Constructor(Vector3(3574.401f, 3682.374f, 230.6333f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1732, + ProximityTerminal.Constructor(Vector3(3591.134f, 3750.795f, 237.8723f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1733, + Terminal.Constructor(Vector3(3591.134f, 3750.795f, 237.8723f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1735, + ProximityTerminal.Constructor(Vector3(3666.43f, 3743.948f, 232.9753f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1736, + Terminal.Constructor(Vector3(3666.43f, 3743.948f, 232.9753f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1738, + ProximityTerminal.Constructor(Vector3(3670.23f, 3769.604f, 230.6203f), pad_landing_frame), + owning_building_guid = 39 + ) + LocalObject( + 1739, + Terminal.Constructor(Vector3(3670.23f, 3769.604f, 230.6203f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2033, + ProximityTerminal.Constructor(Vector3(3535.832f, 3737.874f, 222.1753f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 2034, + Terminal.Constructor(Vector3(3535.832f, 3737.874f, 222.1753f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 2037, + ProximityTerminal.Constructor(Vector3(3670.17f, 3679.338f, 222.1538f), repair_silo), + owning_building_guid = 39 + ) + LocalObject( + 2038, + Terminal.Constructor(Vector3(3670.17f, 3679.338f, 222.1538f), ground_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1402, + FacilityTurret.Constructor(Vector3(3511.239f, 3723.898f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1402, 5041) - LocalObject(1403, FacilityTurret.Constructor(Vector3(3549.758f, 3671.261f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 1403, + FacilityTurret.Constructor(Vector3(3549.758f, 3671.261f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1403, 5042) - LocalObject(1404, FacilityTurret.Constructor(Vector3(3605.178f, 3623.161f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 1404, + FacilityTurret.Constructor(Vector3(3605.178f, 3623.161f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1404, 5043) - LocalObject(1408, FacilityTurret.Constructor(Vector3(3631.729f, 3836.245f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 1408, + FacilityTurret.Constructor(Vector3(3631.729f, 3836.245f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1408, 5044) - LocalObject(1411, FacilityTurret.Constructor(Vector3(3705.323f, 3633.882f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 1411, + FacilityTurret.Constructor(Vector3(3705.323f, 3633.882f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1411, 5045) - LocalObject(1415, FacilityTurret.Constructor(Vector3(3770.921f, 3695.054f, 230.9243f), manned_turret), owning_building_guid = 39) + LocalObject( + 1415, + FacilityTurret.Constructor(Vector3(3770.921f, 3695.054f, 230.9243f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(1415, 5046) - LocalObject(1878, Painbox.Constructor(Vector3(3620.59f, 3695.222f, 210.9986f), painbox), owning_building_guid = 39) - LocalObject(1887, Painbox.Constructor(Vector3(3601.675f, 3722.697f, 219.2952f), painbox_continuous), owning_building_guid = 39) - LocalObject(1896, Painbox.Constructor(Vector3(3609.105f, 3704.66f, 210.6847f), painbox_door_radius), owning_building_guid = 39) - LocalObject(1909, Painbox.Constructor(Vector3(3594.169f, 3733.382f, 217.1532f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(1910, Painbox.Constructor(Vector3(3595.863f, 3707.217f, 218.6076f), painbox_door_radius_continuous), owning_building_guid = 39) - LocalObject(1911, Painbox.Constructor(Vector3(3612.313f, 3712.714f, 217.7015f), painbox_door_radius_continuous), owning_building_guid = 39) + LocalObject( + 1878, + Painbox.Constructor(Vector3(3620.59f, 3695.222f, 210.9986f), painbox), + owning_building_guid = 39 + ) + LocalObject( + 1887, + Painbox.Constructor(Vector3(3601.675f, 3722.697f, 219.2952f), painbox_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1896, + Painbox.Constructor(Vector3(3609.105f, 3704.66f, 210.6847f), painbox_door_radius), + owning_building_guid = 39 + ) + LocalObject( + 1909, + Painbox.Constructor(Vector3(3594.169f, 3733.382f, 217.1532f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1910, + Painbox.Constructor(Vector3(3595.863f, 3707.217f, 218.6076f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1911, + Painbox.Constructor(Vector3(3612.313f, 3712.714f, 217.7015f), painbox_door_radius_continuous), + owning_building_guid = 39 + ) LocalObject(239, Generator.Constructor(Vector3(3621.237f, 3691.247f, 206.2313f)), owning_building_guid = 39) - LocalObject(230, Terminal.Constructor(Vector3(3615.615f, 3697.206f, 207.5253f), gen_control), owning_building_guid = 39) + LocalObject( + 230, + Terminal.Constructor(Vector3(3615.615f, 3697.206f, 207.5253f), gen_control), + owning_building_guid = 39 + ) } Building6() def Building6(): Unit = { // Name: Pinga Type: tech_plant GUID: 42, MapID: 6 - LocalBuilding("Pinga", 42, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5860f, 3444f, 96.40965f), Vector3(0f, 0f, 90f), tech_plant))) - LocalObject(183, CaptureTerminal.Constructor(Vector3(5904.089f, 3448.734f, 111.5097f), capture_terminal), owning_building_guid = 42) + LocalBuilding( + "Pinga", + 42, + 6, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(5860f, 3444f, 96.40965f), Vector3(0f, 0f, 90f), tech_plant) + ) + ) + LocalObject( + 183, + CaptureTerminal.Constructor(Vector3(5904.089f, 3448.734f, 111.5097f), capture_terminal), + owning_building_guid = 42 + ) LocalObject(493, Door.Constructor(Vector3(5828.734f, 3468.559f, 97.95165f)), owning_building_guid = 42) LocalObject(494, Door.Constructor(Vector3(5828.734f, 3486.752f, 105.9146f)), owning_building_guid = 42) LocalObject(495, Door.Constructor(Vector3(5838.135f, 3372.54f, 105.9146f)), owning_building_guid = 42) @@ -1254,16 +3552,66 @@ object Map06 { // Ceryshen LocalObject(2355, Door.Constructor(Vector3(5887.685f, 3456.673f, 90.86366f)), owning_building_guid = 42) LocalObject(2356, Door.Constructor(Vector3(5894.974f, 3456.673f, 90.86366f)), owning_building_guid = 42) LocalObject(2357, Door.Constructor(Vector3(5902.267f, 3456.673f, 90.86366f)), owning_building_guid = 42) - LocalObject(755, IFFLock.Constructor(Vector3(5908.397f, 3487.357f, 97.98965f), Vector3(0, 0, 90)), owning_building_guid = 42, door_guid = 719) - LocalObject(758, IFFLock.Constructor(Vector3(5817.647f, 3401.256f, 98.09766f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 514) - LocalObject(959, IFFLock.Constructor(Vector3(5876.943f, 3473.572f, 82.84565f), Vector3(0, 0, 90)), owning_building_guid = 42, door_guid = 692) - LocalObject(960, IFFLock.Constructor(Vector3(5882.617f, 3452.554f, 112.9557f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 500) - LocalObject(961, IFFLock.Constructor(Vector3(5883.19f, 3462.428f, 90.34565f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 695) - LocalObject(962, IFFLock.Constructor(Vector3(5899.06f, 3438.428f, 112.8457f), Vector3(0, 0, 270)), owning_building_guid = 42, door_guid = 701) - LocalObject(963, IFFLock.Constructor(Vector3(5900.225f, 3463.496f, 112.9557f), Vector3(0, 0, 90)), owning_building_guid = 42, door_guid = 502) - LocalObject(964, IFFLock.Constructor(Vector3(5905.572f, 3475.06f, 82.84565f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 704) - LocalObject(965, IFFLock.Constructor(Vector3(5908.81f, 3465.572f, 90.34565f), Vector3(0, 0, 90)), owning_building_guid = 42, door_guid = 706) - LocalObject(966, IFFLock.Constructor(Vector3(5962.046f, 3403.186f, 97.96165f), Vector3(0, 0, 180)), owning_building_guid = 42, door_guid = 507) + LocalObject( + 755, + IFFLock.Constructor(Vector3(5908.397f, 3487.357f, 97.98965f), Vector3(0, 0, 90)), + owning_building_guid = 42, + door_guid = 719 + ) + LocalObject( + 758, + IFFLock.Constructor(Vector3(5817.647f, 3401.256f, 98.09766f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 514 + ) + LocalObject( + 959, + IFFLock.Constructor(Vector3(5876.943f, 3473.572f, 82.84565f), Vector3(0, 0, 90)), + owning_building_guid = 42, + door_guid = 692 + ) + LocalObject( + 960, + IFFLock.Constructor(Vector3(5882.617f, 3452.554f, 112.9557f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 500 + ) + LocalObject( + 961, + IFFLock.Constructor(Vector3(5883.19f, 3462.428f, 90.34565f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 695 + ) + LocalObject( + 962, + IFFLock.Constructor(Vector3(5899.06f, 3438.428f, 112.8457f), Vector3(0, 0, 270)), + owning_building_guid = 42, + door_guid = 701 + ) + LocalObject( + 963, + IFFLock.Constructor(Vector3(5900.225f, 3463.496f, 112.9557f), Vector3(0, 0, 90)), + owning_building_guid = 42, + door_guid = 502 + ) + LocalObject( + 964, + IFFLock.Constructor(Vector3(5905.572f, 3475.06f, 82.84565f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 704 + ) + LocalObject( + 965, + IFFLock.Constructor(Vector3(5908.81f, 3465.572f, 90.34565f), Vector3(0, 0, 90)), + owning_building_guid = 42, + door_guid = 706 + ) + LocalObject( + 966, + IFFLock.Constructor(Vector3(5962.046f, 3403.186f, 97.96165f), Vector3(0, 0, 180)), + owning_building_guid = 42, + door_guid = 507 + ) LocalObject(1318, Locker.Constructor(Vector3(5885.835f, 3478.194f, 81.50965f)), owning_building_guid = 42) LocalObject(1319, Locker.Constructor(Vector3(5885.835f, 3479.518f, 81.50965f)), owning_building_guid = 42) LocalObject(1320, Locker.Constructor(Vector3(5885.835f, 3480.854f, 81.50965f)), owning_building_guid = 42) @@ -1276,82 +3624,320 @@ object Map06 { // Ceryshen LocalObject(1327, Locker.Constructor(Vector3(5905.859f, 3468.727f, 89.27065f)), owning_building_guid = 42) LocalObject(1328, Locker.Constructor(Vector3(5905.859f, 3469.874f, 89.27065f)), owning_building_guid = 42) LocalObject(1329, Locker.Constructor(Vector3(5905.859f, 3471.023f, 89.27065f)), owning_building_guid = 42) - LocalObject(144, Terminal.Constructor(Vector3(5884.859f, 3448.673f, 112.1127f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1482, VehicleSpawnPad.Constructor(Vector3(5864.165f, 3444.07f, 108.9877f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 42, terminal_guid = 144) - LocalObject(145, Terminal.Constructor(Vector3(5884.859f, 3460.605f, 112.1127f), air_vehicle_terminal), owning_building_guid = 42) - LocalObject(1483, VehicleSpawnPad.Constructor(Vector3(5864.165f, 3465.088f, 108.9877f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 42, terminal_guid = 145) - LocalObject(1625, Terminal.Constructor(Vector3(5886.514f, 3447.058f, 102.8397f), order_terminal), owning_building_guid = 42) - LocalObject(1626, Terminal.Constructor(Vector3(5893.072f, 3470.654f, 90.59966f), order_terminal), owning_building_guid = 42) - LocalObject(1627, Terminal.Constructor(Vector3(5896.861f, 3470.654f, 90.59966f), order_terminal), owning_building_guid = 42) - LocalObject(1628, Terminal.Constructor(Vector3(5900.592f, 3470.654f, 90.59966f), order_terminal), owning_building_guid = 42) - LocalObject(2268, Terminal.Constructor(Vector3(5856.785f, 3458.532f, 108.4327f), spawn_terminal), owning_building_guid = 42) - LocalObject(2269, Terminal.Constructor(Vector3(5880.361f, 3481.242f, 103.0917f), spawn_terminal), owning_building_guid = 42) - LocalObject(2270, Terminal.Constructor(Vector3(5890.177f, 3456.97f, 91.14365f), spawn_terminal), owning_building_guid = 42) - LocalObject(2271, Terminal.Constructor(Vector3(5897.465f, 3456.967f, 91.14365f), spawn_terminal), owning_building_guid = 42) - LocalObject(2272, Terminal.Constructor(Vector3(5904.757f, 3456.971f, 91.14365f), spawn_terminal), owning_building_guid = 42) - LocalObject(2273, Terminal.Constructor(Vector3(5907.409f, 3451.942f, 83.06665f), spawn_terminal), owning_building_guid = 42) - LocalObject(2274, Terminal.Constructor(Vector3(5955.409f, 3419.942f, 90.56665f), spawn_terminal), owning_building_guid = 42) - LocalObject(2422, Terminal.Constructor(Vector3(5900.577f, 3395.996f, 82.22366f), ground_vehicle_terminal), owning_building_guid = 42) - LocalObject(1484, VehicleSpawnPad.Constructor(Vector3(5889.661f, 3395.945f, 73.94666f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 42, terminal_guid = 2422) + LocalObject( + 144, + Terminal.Constructor(Vector3(5884.859f, 3448.673f, 112.1127f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1482, + VehicleSpawnPad.Constructor(Vector3(5864.165f, 3444.07f, 108.9877f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 42, + terminal_guid = 144 + ) + LocalObject( + 145, + Terminal.Constructor(Vector3(5884.859f, 3460.605f, 112.1127f), air_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1483, + VehicleSpawnPad.Constructor(Vector3(5864.165f, 3465.088f, 108.9877f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 42, + terminal_guid = 145 + ) + LocalObject( + 1625, + Terminal.Constructor(Vector3(5886.514f, 3447.058f, 102.8397f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1626, + Terminal.Constructor(Vector3(5893.072f, 3470.654f, 90.59966f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1627, + Terminal.Constructor(Vector3(5896.861f, 3470.654f, 90.59966f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1628, + Terminal.Constructor(Vector3(5900.592f, 3470.654f, 90.59966f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2268, + Terminal.Constructor(Vector3(5856.785f, 3458.532f, 108.4327f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2269, + Terminal.Constructor(Vector3(5880.361f, 3481.242f, 103.0917f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2270, + Terminal.Constructor(Vector3(5890.177f, 3456.97f, 91.14365f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2271, + Terminal.Constructor(Vector3(5897.465f, 3456.967f, 91.14365f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2272, + Terminal.Constructor(Vector3(5904.757f, 3456.971f, 91.14365f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2273, + Terminal.Constructor(Vector3(5907.409f, 3451.942f, 83.06665f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2274, + Terminal.Constructor(Vector3(5955.409f, 3419.942f, 90.56665f), spawn_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2422, + Terminal.Constructor(Vector3(5900.577f, 3395.996f, 82.22366f), ground_vehicle_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1484, + VehicleSpawnPad.Constructor(Vector3(5889.661f, 3395.945f, 73.94666f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 42, + terminal_guid = 2422 + ) LocalObject(2097, ResourceSilo.Constructor(Vector3(5827.445f, 3505.752f, 103.4177f)), owning_building_guid = 42) - LocalObject(2178, SpawnTube.Constructor(Vector3(5888.738f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), owning_building_guid = 42) - LocalObject(2179, SpawnTube.Constructor(Vector3(5896.026f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), owning_building_guid = 42) - LocalObject(2180, SpawnTube.Constructor(Vector3(5903.317f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), owning_building_guid = 42) - LocalObject(1498, ProximityTerminal.Constructor(Vector3(5886.38f, 3484.444f, 81.50965f), medical_terminal), owning_building_guid = 42) - LocalObject(1499, ProximityTerminal.Constructor(Vector3(5897.099f, 3447.059f, 101.5067f), medical_terminal), owning_building_guid = 42) - LocalObject(1792, ProximityTerminal.Constructor(Vector3(5868.167f, 3402.98f, 106.9597f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1793, Terminal.Constructor(Vector3(5868.167f, 3402.98f, 106.9597f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1795, ProximityTerminal.Constructor(Vector3(5884.339f, 3382.704f, 104.6047f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1796, Terminal.Constructor(Vector3(5884.339f, 3382.704f, 104.6047f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1798, ProximityTerminal.Constructor(Vector3(5885.898f, 3512.28f, 104.6177f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1799, Terminal.Constructor(Vector3(5885.898f, 3512.28f, 104.6177f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1801, ProximityTerminal.Constructor(Vector3(5902.145f, 3505.987f, 107.0617f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1802, Terminal.Constructor(Vector3(5902.145f, 3505.987f, 107.0617f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1804, ProximityTerminal.Constructor(Vector3(5924.526f, 3453.379f, 111.8567f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1805, Terminal.Constructor(Vector3(5924.526f, 3453.379f, 111.8567f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(1807, ProximityTerminal.Constructor(Vector3(5941.372f, 3469.534f, 104.6177f), pad_landing_frame), owning_building_guid = 42) - LocalObject(1808, Terminal.Constructor(Vector3(5941.372f, 3469.534f, 104.6177f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(2081, ProximityTerminal.Constructor(Vector3(5818.363f, 3444.309f, 96.13815f), repair_silo), owning_building_guid = 42) - LocalObject(2082, Terminal.Constructor(Vector3(5818.363f, 3444.309f, 96.13815f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(2085, ProximityTerminal.Constructor(Vector3(5952.792f, 3502.637f, 96.15965f), repair_silo), owning_building_guid = 42) - LocalObject(2086, Terminal.Constructor(Vector3(5952.792f, 3502.637f, 96.15965f), ground_rearm_terminal), owning_building_guid = 42) - LocalObject(1461, FacilityTurret.Constructor(Vector3(5761.145f, 3359.906f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 2178, + SpawnTube.Constructor(Vector3(5888.738f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), + owning_building_guid = 42 + ) + LocalObject( + 2179, + SpawnTube.Constructor(Vector3(5896.026f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), + owning_building_guid = 42 + ) + LocalObject( + 2180, + SpawnTube.Constructor(Vector3(5903.317f, 3456.233f, 89.00965f), Vector3(0, 0, 270)), + owning_building_guid = 42 + ) + LocalObject( + 1498, + ProximityTerminal.Constructor(Vector3(5886.38f, 3484.444f, 81.50965f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1499, + ProximityTerminal.Constructor(Vector3(5897.099f, 3447.059f, 101.5067f), medical_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1792, + ProximityTerminal.Constructor(Vector3(5868.167f, 3402.98f, 106.9597f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1793, + Terminal.Constructor(Vector3(5868.167f, 3402.98f, 106.9597f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1795, + ProximityTerminal.Constructor(Vector3(5884.339f, 3382.704f, 104.6047f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1796, + Terminal.Constructor(Vector3(5884.339f, 3382.704f, 104.6047f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1798, + ProximityTerminal.Constructor(Vector3(5885.898f, 3512.28f, 104.6177f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1799, + Terminal.Constructor(Vector3(5885.898f, 3512.28f, 104.6177f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1801, + ProximityTerminal.Constructor(Vector3(5902.145f, 3505.987f, 107.0617f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1802, + Terminal.Constructor(Vector3(5902.145f, 3505.987f, 107.0617f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1804, + ProximityTerminal.Constructor(Vector3(5924.526f, 3453.379f, 111.8567f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1805, + Terminal.Constructor(Vector3(5924.526f, 3453.379f, 111.8567f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1807, + ProximityTerminal.Constructor(Vector3(5941.372f, 3469.534f, 104.6177f), pad_landing_frame), + owning_building_guid = 42 + ) + LocalObject( + 1808, + Terminal.Constructor(Vector3(5941.372f, 3469.534f, 104.6177f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2081, + ProximityTerminal.Constructor(Vector3(5818.363f, 3444.309f, 96.13815f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2082, + Terminal.Constructor(Vector3(5818.363f, 3444.309f, 96.13815f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 2085, + ProximityTerminal.Constructor(Vector3(5952.792f, 3502.637f, 96.15965f), repair_silo), + owning_building_guid = 42 + ) + LocalObject( + 2086, + Terminal.Constructor(Vector3(5952.792f, 3502.637f, 96.15965f), ground_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 1461, + FacilityTurret.Constructor(Vector3(5761.145f, 3359.906f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1461, 5047) - LocalObject(1462, FacilityTurret.Constructor(Vector3(5761.145f, 3449.601f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 1462, + FacilityTurret.Constructor(Vector3(5761.145f, 3449.601f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1462, 5048) - LocalObject(1464, FacilityTurret.Constructor(Vector3(5821.602f, 3530.154f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 1464, + FacilityTurret.Constructor(Vector3(5821.602f, 3530.154f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1464, 5049) - LocalObject(1465, FacilityTurret.Constructor(Vector3(5894.577f, 3537.881f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 1465, + FacilityTurret.Constructor(Vector3(5894.577f, 3537.881f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1465, 5050) - LocalObject(1466, FacilityTurret.Constructor(Vector3(5959.335f, 3365.413f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 1466, + FacilityTurret.Constructor(Vector3(5959.335f, 3365.413f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1466, 5051) - LocalObject(1467, FacilityTurret.Constructor(Vector3(5959.343f, 3530.154f, 104.9087f), manned_turret), owning_building_guid = 42) + LocalObject( + 1467, + FacilityTurret.Constructor(Vector3(5959.343f, 3530.154f, 104.9087f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(1467, 5052) - LocalObject(1884, Painbox.Constructor(Vector3(5863.793f, 3469.737f, 84.98296f), painbox), owning_building_guid = 42) - LocalObject(1893, Painbox.Constructor(Vector3(5896.788f, 3464.832f, 93.27956f), painbox_continuous), owning_building_guid = 42) - LocalObject(1902, Painbox.Constructor(Vector3(5878.529f, 3471.7f, 84.66905f), painbox_door_radius), owning_building_guid = 42) - LocalObject(1927, Painbox.Constructor(Vector3(5882.231f, 3463.861f, 91.68585f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1928, Painbox.Constructor(Vector3(5889.43f, 3479.641f, 92.59195f), painbox_door_radius_continuous), owning_building_guid = 42) - LocalObject(1929, Painbox.Constructor(Vector3(5909.722f, 3463.035f, 91.13755f), painbox_door_radius_continuous), owning_building_guid = 42) + LocalObject( + 1884, + Painbox.Constructor(Vector3(5863.793f, 3469.737f, 84.98296f), painbox), + owning_building_guid = 42 + ) + LocalObject( + 1893, + Painbox.Constructor(Vector3(5896.788f, 3464.832f, 93.27956f), painbox_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1902, + Painbox.Constructor(Vector3(5878.529f, 3471.7f, 84.66905f), painbox_door_radius), + owning_building_guid = 42 + ) + LocalObject( + 1927, + Painbox.Constructor(Vector3(5882.231f, 3463.861f, 91.68585f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1928, + Painbox.Constructor(Vector3(5889.43f, 3479.641f, 92.59195f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 1929, + Painbox.Constructor(Vector3(5909.722f, 3463.035f, 91.13755f), painbox_door_radius_continuous), + owning_building_guid = 42 + ) LocalObject(245, Generator.Constructor(Vector3(5860.445f, 3471.975f, 80.21565f)), owning_building_guid = 42) - LocalObject(236, Terminal.Constructor(Vector3(5868.637f, 3472.022f, 81.50965f), gen_control), owning_building_guid = 42) + LocalObject( + 236, + Terminal.Constructor(Vector3(5868.637f, 3472.022f, 81.50965f), gen_control), + owning_building_guid = 42 + ) } Building14() def Building14(): Unit = { // Name: W_Amerish_Warpgate_Tower Type: tower_a GUID: 45, MapID: 14 - LocalBuilding("W_Amerish_Warpgate_Tower", 45, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1822f, 2648f, 186.5722f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2183, CaptureTerminal.Constructor(Vector3(1838.587f, 2647.897f, 196.5712f), secondary_capture), owning_building_guid = 45) + LocalBuilding( + "W_Amerish_Warpgate_Tower", + 45, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1822f, 2648f, 186.5722f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2183, + CaptureTerminal.Constructor(Vector3(1838.587f, 2647.897f, 196.5712f), secondary_capture), + owning_building_guid = 45 + ) LocalObject(246, Door.Constructor(Vector3(1834f, 2640f, 188.0932f)), owning_building_guid = 45) LocalObject(247, Door.Constructor(Vector3(1834f, 2640f, 208.0922f)), owning_building_guid = 45) LocalObject(248, Door.Constructor(Vector3(1834f, 2656f, 188.0932f)), owning_building_guid = 45) LocalObject(249, Door.Constructor(Vector3(1834f, 2656f, 208.0922f)), owning_building_guid = 45) LocalObject(2275, Door.Constructor(Vector3(1833.146f, 2636.794f, 177.9082f)), owning_building_guid = 45) LocalObject(2276, Door.Constructor(Vector3(1833.146f, 2653.204f, 177.9082f)), owning_building_guid = 45) - LocalObject(759, IFFLock.Constructor(Vector3(1831.957f, 2656.811f, 188.0332f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 248) - LocalObject(760, IFFLock.Constructor(Vector3(1831.957f, 2656.811f, 208.0332f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 249) - LocalObject(761, IFFLock.Constructor(Vector3(1836.047f, 2639.189f, 188.0332f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 246) - LocalObject(762, IFFLock.Constructor(Vector3(1836.047f, 2639.189f, 208.0332f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 247) + LocalObject( + 759, + IFFLock.Constructor(Vector3(1831.957f, 2656.811f, 188.0332f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 248 + ) + LocalObject( + 760, + IFFLock.Constructor(Vector3(1831.957f, 2656.811f, 208.0332f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 249 + ) + LocalObject( + 761, + IFFLock.Constructor(Vector3(1836.047f, 2639.189f, 188.0332f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 246 + ) + LocalObject( + 762, + IFFLock.Constructor(Vector3(1836.047f, 2639.189f, 208.0332f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 247 + ) LocalObject(971, Locker.Constructor(Vector3(1837.716f, 2632.963f, 176.5662f)), owning_building_guid = 45) LocalObject(972, Locker.Constructor(Vector3(1837.751f, 2654.835f, 176.5662f)), owning_building_guid = 45) LocalObject(973, Locker.Constructor(Vector3(1839.053f, 2632.963f, 176.5662f)), owning_building_guid = 45) @@ -1360,35 +3946,106 @@ object Map06 { // Ceryshen LocalObject(976, Locker.Constructor(Vector3(1841.741f, 2654.835f, 176.5662f)), owning_building_guid = 45) LocalObject(977, Locker.Constructor(Vector3(1843.143f, 2632.963f, 176.5662f)), owning_building_guid = 45) LocalObject(978, Locker.Constructor(Vector3(1843.143f, 2654.835f, 176.5662f)), owning_building_guid = 45) - LocalObject(1500, Terminal.Constructor(Vector3(1843.445f, 2638.129f, 177.9042f), order_terminal), owning_building_guid = 45) - LocalObject(1501, Terminal.Constructor(Vector3(1843.445f, 2643.853f, 177.9042f), order_terminal), owning_building_guid = 45) - LocalObject(1502, Terminal.Constructor(Vector3(1843.445f, 2649.234f, 177.9042f), order_terminal), owning_building_guid = 45) - LocalObject(2098, SpawnTube.Constructor(Vector3(1832.706f, 2635.742f, 176.0542f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(2099, SpawnTube.Constructor(Vector3(1832.706f, 2652.152f, 176.0542f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1371, FacilityTurret.Constructor(Vector3(1809.32f, 2635.295f, 205.5142f), manned_turret), owning_building_guid = 45) + LocalObject( + 1500, + Terminal.Constructor(Vector3(1843.445f, 2638.129f, 177.9042f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1501, + Terminal.Constructor(Vector3(1843.445f, 2643.853f, 177.9042f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1502, + Terminal.Constructor(Vector3(1843.445f, 2649.234f, 177.9042f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 2098, + SpawnTube.Constructor(Vector3(1832.706f, 2635.742f, 176.0542f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 2099, + SpawnTube.Constructor(Vector3(1832.706f, 2652.152f, 176.0542f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1371, + FacilityTurret.Constructor(Vector3(1809.32f, 2635.295f, 205.5142f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1371, 5053) - LocalObject(1372, FacilityTurret.Constructor(Vector3(1844.647f, 2660.707f, 205.5142f), manned_turret), owning_building_guid = 45) + LocalObject( + 1372, + FacilityTurret.Constructor(Vector3(1844.647f, 2660.707f, 205.5142f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1372, 5054) - LocalObject(1930, Painbox.Constructor(Vector3(1827.235f, 2641.803f, 178.0713f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1931, Painbox.Constructor(Vector3(1838.889f, 2650.086f, 176.6722f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1932, Painbox.Constructor(Vector3(1838.975f, 2638.223f, 176.6722f), painbox_radius_continuous), owning_building_guid = 45) + LocalObject( + 1930, + Painbox.Constructor(Vector3(1827.235f, 2641.803f, 178.0713f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1931, + Painbox.Constructor(Vector3(1838.889f, 2650.086f, 176.6722f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1932, + Painbox.Constructor(Vector3(1838.975f, 2638.223f, 176.6722f), painbox_radius_continuous), + owning_building_guid = 45 + ) } Building25() def Building25(): Unit = { // Name: N_Amerish_Warpgate_Tower Type: tower_a GUID: 46, MapID: 25 - LocalBuilding("N_Amerish_Warpgate_Tower", 46, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2616f, 4086f, 21.97363f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2186, CaptureTerminal.Constructor(Vector3(2632.587f, 4085.897f, 31.97263f), secondary_capture), owning_building_guid = 46) + LocalBuilding( + "N_Amerish_Warpgate_Tower", + 46, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2616f, 4086f, 21.97363f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2186, + CaptureTerminal.Constructor(Vector3(2632.587f, 4085.897f, 31.97263f), secondary_capture), + owning_building_guid = 46 + ) LocalObject(260, Door.Constructor(Vector3(2628f, 4078f, 23.49463f)), owning_building_guid = 46) LocalObject(261, Door.Constructor(Vector3(2628f, 4078f, 43.49363f)), owning_building_guid = 46) LocalObject(262, Door.Constructor(Vector3(2628f, 4094f, 23.49463f)), owning_building_guid = 46) LocalObject(263, Door.Constructor(Vector3(2628f, 4094f, 43.49363f)), owning_building_guid = 46) LocalObject(2281, Door.Constructor(Vector3(2627.146f, 4074.794f, 13.30963f)), owning_building_guid = 46) LocalObject(2282, Door.Constructor(Vector3(2627.146f, 4091.204f, 13.30963f)), owning_building_guid = 46) - LocalObject(773, IFFLock.Constructor(Vector3(2625.957f, 4094.811f, 23.43463f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 262) - LocalObject(774, IFFLock.Constructor(Vector3(2625.957f, 4094.811f, 43.43463f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 263) - LocalObject(775, IFFLock.Constructor(Vector3(2630.047f, 4077.189f, 23.43463f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 260) - LocalObject(776, IFFLock.Constructor(Vector3(2630.047f, 4077.189f, 43.43463f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 261) + LocalObject( + 773, + IFFLock.Constructor(Vector3(2625.957f, 4094.811f, 23.43463f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 262 + ) + LocalObject( + 774, + IFFLock.Constructor(Vector3(2625.957f, 4094.811f, 43.43463f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 263 + ) + LocalObject( + 775, + IFFLock.Constructor(Vector3(2630.047f, 4077.189f, 23.43463f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 260 + ) + LocalObject( + 776, + IFFLock.Constructor(Vector3(2630.047f, 4077.189f, 43.43463f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 261 + ) LocalObject(995, Locker.Constructor(Vector3(2631.716f, 4070.963f, 11.96763f)), owning_building_guid = 46) LocalObject(996, Locker.Constructor(Vector3(2631.751f, 4092.835f, 11.96763f)), owning_building_guid = 46) LocalObject(997, Locker.Constructor(Vector3(2633.053f, 4070.963f, 11.96763f)), owning_building_guid = 46) @@ -1397,35 +4054,106 @@ object Map06 { // Ceryshen LocalObject(1000, Locker.Constructor(Vector3(2635.741f, 4092.835f, 11.96763f)), owning_building_guid = 46) LocalObject(1001, Locker.Constructor(Vector3(2637.143f, 4070.963f, 11.96763f)), owning_building_guid = 46) LocalObject(1002, Locker.Constructor(Vector3(2637.143f, 4092.835f, 11.96763f)), owning_building_guid = 46) - LocalObject(1509, Terminal.Constructor(Vector3(2637.445f, 4076.129f, 13.30563f), order_terminal), owning_building_guid = 46) - LocalObject(1510, Terminal.Constructor(Vector3(2637.445f, 4081.853f, 13.30563f), order_terminal), owning_building_guid = 46) - LocalObject(1511, Terminal.Constructor(Vector3(2637.445f, 4087.234f, 13.30563f), order_terminal), owning_building_guid = 46) - LocalObject(2104, SpawnTube.Constructor(Vector3(2626.706f, 4073.742f, 11.45563f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(2105, SpawnTube.Constructor(Vector3(2626.706f, 4090.152f, 11.45563f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(1375, FacilityTurret.Constructor(Vector3(2603.32f, 4073.295f, 40.91563f), manned_turret), owning_building_guid = 46) + LocalObject( + 1509, + Terminal.Constructor(Vector3(2637.445f, 4076.129f, 13.30563f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1510, + Terminal.Constructor(Vector3(2637.445f, 4081.853f, 13.30563f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1511, + Terminal.Constructor(Vector3(2637.445f, 4087.234f, 13.30563f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2104, + SpawnTube.Constructor(Vector3(2626.706f, 4073.742f, 11.45563f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 2105, + SpawnTube.Constructor(Vector3(2626.706f, 4090.152f, 11.45563f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 1375, + FacilityTurret.Constructor(Vector3(2603.32f, 4073.295f, 40.91563f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1375, 5055) - LocalObject(1377, FacilityTurret.Constructor(Vector3(2638.647f, 4098.707f, 40.91563f), manned_turret), owning_building_guid = 46) + LocalObject( + 1377, + FacilityTurret.Constructor(Vector3(2638.647f, 4098.707f, 40.91563f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1377, 5056) - LocalObject(1939, Painbox.Constructor(Vector3(2621.235f, 4079.803f, 13.47273f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1940, Painbox.Constructor(Vector3(2632.889f, 4088.086f, 12.07363f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1941, Painbox.Constructor(Vector3(2632.975f, 4076.223f, 12.07363f), painbox_radius_continuous), owning_building_guid = 46) + LocalObject( + 1939, + Painbox.Constructor(Vector3(2621.235f, 4079.803f, 13.47273f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1940, + Painbox.Constructor(Vector3(2632.889f, 4088.086f, 12.07363f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1941, + Painbox.Constructor(Vector3(2632.975f, 4076.223f, 12.07363f), painbox_radius_continuous), + owning_building_guid = 46 + ) } Building32() def Building32(): Unit = { // Name: S_Tarqaq_Tower Type: tower_a GUID: 47, MapID: 32 - LocalBuilding("S_Tarqaq_Tower", 47, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2914f, 1496f, 51.68828f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2189, CaptureTerminal.Constructor(Vector3(2930.587f, 1495.897f, 61.68728f), secondary_capture), owning_building_guid = 47) + LocalBuilding( + "S_Tarqaq_Tower", + 47, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2914f, 1496f, 51.68828f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2189, + CaptureTerminal.Constructor(Vector3(2930.587f, 1495.897f, 61.68728f), secondary_capture), + owning_building_guid = 47 + ) LocalObject(277, Door.Constructor(Vector3(2926f, 1488f, 53.20928f)), owning_building_guid = 47) LocalObject(278, Door.Constructor(Vector3(2926f, 1488f, 73.20828f)), owning_building_guid = 47) LocalObject(279, Door.Constructor(Vector3(2926f, 1504f, 53.20928f)), owning_building_guid = 47) LocalObject(280, Door.Constructor(Vector3(2926f, 1504f, 73.20828f)), owning_building_guid = 47) LocalObject(2287, Door.Constructor(Vector3(2925.146f, 1484.794f, 43.02428f)), owning_building_guid = 47) LocalObject(2288, Door.Constructor(Vector3(2925.146f, 1501.204f, 43.02428f)), owning_building_guid = 47) - LocalObject(786, IFFLock.Constructor(Vector3(2923.957f, 1504.811f, 53.14928f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 279) - LocalObject(787, IFFLock.Constructor(Vector3(2923.957f, 1504.811f, 73.14928f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 280) - LocalObject(788, IFFLock.Constructor(Vector3(2928.047f, 1487.189f, 53.14928f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 277) - LocalObject(789, IFFLock.Constructor(Vector3(2928.047f, 1487.189f, 73.14928f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 278) + LocalObject( + 786, + IFFLock.Constructor(Vector3(2923.957f, 1504.811f, 53.14928f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 279 + ) + LocalObject( + 787, + IFFLock.Constructor(Vector3(2923.957f, 1504.811f, 73.14928f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 280 + ) + LocalObject( + 788, + IFFLock.Constructor(Vector3(2928.047f, 1487.189f, 53.14928f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 277 + ) + LocalObject( + 789, + IFFLock.Constructor(Vector3(2928.047f, 1487.189f, 73.14928f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 278 + ) LocalObject(1019, Locker.Constructor(Vector3(2929.716f, 1480.963f, 41.68228f)), owning_building_guid = 47) LocalObject(1020, Locker.Constructor(Vector3(2929.751f, 1502.835f, 41.68228f)), owning_building_guid = 47) LocalObject(1021, Locker.Constructor(Vector3(2931.053f, 1480.963f, 41.68228f)), owning_building_guid = 47) @@ -1434,35 +4162,106 @@ object Map06 { // Ceryshen LocalObject(1024, Locker.Constructor(Vector3(2933.741f, 1502.835f, 41.68228f)), owning_building_guid = 47) LocalObject(1025, Locker.Constructor(Vector3(2935.143f, 1480.963f, 41.68228f)), owning_building_guid = 47) LocalObject(1026, Locker.Constructor(Vector3(2935.143f, 1502.835f, 41.68228f)), owning_building_guid = 47) - LocalObject(1518, Terminal.Constructor(Vector3(2935.445f, 1486.129f, 43.02028f), order_terminal), owning_building_guid = 47) - LocalObject(1519, Terminal.Constructor(Vector3(2935.445f, 1491.853f, 43.02028f), order_terminal), owning_building_guid = 47) - LocalObject(1520, Terminal.Constructor(Vector3(2935.445f, 1497.234f, 43.02028f), order_terminal), owning_building_guid = 47) - LocalObject(2110, SpawnTube.Constructor(Vector3(2924.706f, 1483.742f, 41.17028f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(2111, SpawnTube.Constructor(Vector3(2924.706f, 1500.152f, 41.17028f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(1382, FacilityTurret.Constructor(Vector3(2901.32f, 1483.295f, 70.63028f), manned_turret), owning_building_guid = 47) + LocalObject( + 1518, + Terminal.Constructor(Vector3(2935.445f, 1486.129f, 43.02028f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1519, + Terminal.Constructor(Vector3(2935.445f, 1491.853f, 43.02028f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1520, + Terminal.Constructor(Vector3(2935.445f, 1497.234f, 43.02028f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2110, + SpawnTube.Constructor(Vector3(2924.706f, 1483.742f, 41.17028f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 2111, + SpawnTube.Constructor(Vector3(2924.706f, 1500.152f, 41.17028f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 1382, + FacilityTurret.Constructor(Vector3(2901.32f, 1483.295f, 70.63028f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1382, 5057) - LocalObject(1383, FacilityTurret.Constructor(Vector3(2936.647f, 1508.707f, 70.63028f), manned_turret), owning_building_guid = 47) + LocalObject( + 1383, + FacilityTurret.Constructor(Vector3(2936.647f, 1508.707f, 70.63028f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1383, 5058) - LocalObject(1948, Painbox.Constructor(Vector3(2919.235f, 1489.803f, 43.18738f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1949, Painbox.Constructor(Vector3(2930.889f, 1498.086f, 41.78828f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1950, Painbox.Constructor(Vector3(2930.975f, 1486.223f, 41.78828f), painbox_radius_continuous), owning_building_guid = 47) + LocalObject( + 1948, + Painbox.Constructor(Vector3(2919.235f, 1489.803f, 43.18738f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1949, + Painbox.Constructor(Vector3(2930.889f, 1498.086f, 41.78828f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1950, + Painbox.Constructor(Vector3(2930.975f, 1486.223f, 41.78828f), painbox_radius_continuous), + owning_building_guid = 47 + ) } Building23() def Building23(): Unit = { // Name: NW_Anguta_Tower Type: tower_a GUID: 48, MapID: 23 - LocalBuilding("NW_Anguta_Tower", 48, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3206f, 4790f, 68.82293f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2191, CaptureTerminal.Constructor(Vector3(3222.587f, 4789.897f, 78.82193f), secondary_capture), owning_building_guid = 48) + LocalBuilding( + "NW_Anguta_Tower", + 48, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3206f, 4790f, 68.82293f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2191, + CaptureTerminal.Constructor(Vector3(3222.587f, 4789.897f, 78.82193f), secondary_capture), + owning_building_guid = 48 + ) LocalObject(295, Door.Constructor(Vector3(3218f, 4782f, 70.34393f)), owning_building_guid = 48) LocalObject(296, Door.Constructor(Vector3(3218f, 4782f, 90.34293f)), owning_building_guid = 48) LocalObject(297, Door.Constructor(Vector3(3218f, 4798f, 70.34393f)), owning_building_guid = 48) LocalObject(298, Door.Constructor(Vector3(3218f, 4798f, 90.34293f)), owning_building_guid = 48) LocalObject(2294, Door.Constructor(Vector3(3217.146f, 4778.794f, 60.15893f)), owning_building_guid = 48) LocalObject(2295, Door.Constructor(Vector3(3217.146f, 4795.204f, 60.15893f)), owning_building_guid = 48) - LocalObject(801, IFFLock.Constructor(Vector3(3215.957f, 4798.811f, 70.28393f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 297) - LocalObject(802, IFFLock.Constructor(Vector3(3215.957f, 4798.811f, 90.28393f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 298) - LocalObject(804, IFFLock.Constructor(Vector3(3220.047f, 4781.189f, 70.28393f), Vector3(0, 0, 180)), owning_building_guid = 48, door_guid = 295) - LocalObject(805, IFFLock.Constructor(Vector3(3220.047f, 4781.189f, 90.28393f), Vector3(0, 0, 180)), owning_building_guid = 48, door_guid = 296) + LocalObject( + 801, + IFFLock.Constructor(Vector3(3215.957f, 4798.811f, 70.28393f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 297 + ) + LocalObject( + 802, + IFFLock.Constructor(Vector3(3215.957f, 4798.811f, 90.28393f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 298 + ) + LocalObject( + 804, + IFFLock.Constructor(Vector3(3220.047f, 4781.189f, 70.28393f), Vector3(0, 0, 180)), + owning_building_guid = 48, + door_guid = 295 + ) + LocalObject( + 805, + IFFLock.Constructor(Vector3(3220.047f, 4781.189f, 90.28393f), Vector3(0, 0, 180)), + owning_building_guid = 48, + door_guid = 296 + ) LocalObject(1056, Locker.Constructor(Vector3(3221.716f, 4774.963f, 58.81693f)), owning_building_guid = 48) LocalObject(1057, Locker.Constructor(Vector3(3221.751f, 4796.835f, 58.81693f)), owning_building_guid = 48) LocalObject(1058, Locker.Constructor(Vector3(3223.053f, 4774.963f, 58.81693f)), owning_building_guid = 48) @@ -1471,35 +4270,106 @@ object Map06 { // Ceryshen LocalObject(1061, Locker.Constructor(Vector3(3225.741f, 4796.835f, 58.81693f)), owning_building_guid = 48) LocalObject(1062, Locker.Constructor(Vector3(3227.143f, 4774.963f, 58.81693f)), owning_building_guid = 48) LocalObject(1063, Locker.Constructor(Vector3(3227.143f, 4796.835f, 58.81693f)), owning_building_guid = 48) - LocalObject(1528, Terminal.Constructor(Vector3(3227.445f, 4780.129f, 60.15493f), order_terminal), owning_building_guid = 48) - LocalObject(1529, Terminal.Constructor(Vector3(3227.445f, 4785.853f, 60.15493f), order_terminal), owning_building_guid = 48) - LocalObject(1530, Terminal.Constructor(Vector3(3227.445f, 4791.234f, 60.15493f), order_terminal), owning_building_guid = 48) - LocalObject(2117, SpawnTube.Constructor(Vector3(3216.706f, 4777.742f, 58.30493f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(2118, SpawnTube.Constructor(Vector3(3216.706f, 4794.152f, 58.30493f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(1389, FacilityTurret.Constructor(Vector3(3193.32f, 4777.295f, 87.76493f), manned_turret), owning_building_guid = 48) + LocalObject( + 1528, + Terminal.Constructor(Vector3(3227.445f, 4780.129f, 60.15493f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1529, + Terminal.Constructor(Vector3(3227.445f, 4785.853f, 60.15493f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1530, + Terminal.Constructor(Vector3(3227.445f, 4791.234f, 60.15493f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 2117, + SpawnTube.Constructor(Vector3(3216.706f, 4777.742f, 58.30493f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 2118, + SpawnTube.Constructor(Vector3(3216.706f, 4794.152f, 58.30493f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 1389, + FacilityTurret.Constructor(Vector3(3193.32f, 4777.295f, 87.76493f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1389, 5059) - LocalObject(1393, FacilityTurret.Constructor(Vector3(3228.647f, 4802.707f, 87.76493f), manned_turret), owning_building_guid = 48) + LocalObject( + 1393, + FacilityTurret.Constructor(Vector3(3228.647f, 4802.707f, 87.76493f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1393, 5060) - LocalObject(1954, Painbox.Constructor(Vector3(3211.235f, 4783.803f, 60.32203f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1955, Painbox.Constructor(Vector3(3222.889f, 4792.086f, 58.92293f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1956, Painbox.Constructor(Vector3(3222.975f, 4780.223f, 58.92293f), painbox_radius_continuous), owning_building_guid = 48) + LocalObject( + 1954, + Painbox.Constructor(Vector3(3211.235f, 4783.803f, 60.32203f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1955, + Painbox.Constructor(Vector3(3222.889f, 4792.086f, 58.92293f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1956, + Painbox.Constructor(Vector3(3222.975f, 4780.223f, 58.92293f), painbox_radius_continuous), + owning_building_guid = 48 + ) } Building46() def Building46(): Unit = { // Name: Igaluk_Tower Type: tower_a GUID: 49, MapID: 46 - LocalBuilding("Igaluk_Tower", 49, 46, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3386f, 5984f, 215.4855f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2193, CaptureTerminal.Constructor(Vector3(3402.587f, 5983.897f, 225.4845f), secondary_capture), owning_building_guid = 49) + LocalBuilding( + "Igaluk_Tower", + 49, + 46, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3386f, 5984f, 215.4855f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2193, + CaptureTerminal.Constructor(Vector3(3402.587f, 5983.897f, 225.4845f), secondary_capture), + owning_building_guid = 49 + ) LocalObject(318, Door.Constructor(Vector3(3398f, 5976f, 217.0065f)), owning_building_guid = 49) LocalObject(319, Door.Constructor(Vector3(3398f, 5976f, 237.0056f)), owning_building_guid = 49) LocalObject(320, Door.Constructor(Vector3(3398f, 5992f, 217.0065f)), owning_building_guid = 49) LocalObject(321, Door.Constructor(Vector3(3398f, 5992f, 237.0056f)), owning_building_guid = 49) LocalObject(2301, Door.Constructor(Vector3(3397.146f, 5972.794f, 206.8215f)), owning_building_guid = 49) LocalObject(2302, Door.Constructor(Vector3(3397.146f, 5989.204f, 206.8215f)), owning_building_guid = 49) - LocalObject(819, IFFLock.Constructor(Vector3(3395.957f, 5992.811f, 216.9465f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 320) - LocalObject(820, IFFLock.Constructor(Vector3(3395.957f, 5992.811f, 236.9465f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 321) - LocalObject(821, IFFLock.Constructor(Vector3(3400.047f, 5975.189f, 216.9465f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 318) - LocalObject(822, IFFLock.Constructor(Vector3(3400.047f, 5975.189f, 236.9465f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 319) + LocalObject( + 819, + IFFLock.Constructor(Vector3(3395.957f, 5992.811f, 216.9465f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 320 + ) + LocalObject( + 820, + IFFLock.Constructor(Vector3(3395.957f, 5992.811f, 236.9465f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 321 + ) + LocalObject( + 821, + IFFLock.Constructor(Vector3(3400.047f, 5975.189f, 216.9465f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 318 + ) + LocalObject( + 822, + IFFLock.Constructor(Vector3(3400.047f, 5975.189f, 236.9465f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 319 + ) LocalObject(1084, Locker.Constructor(Vector3(3401.716f, 5968.963f, 205.4796f)), owning_building_guid = 49) LocalObject(1085, Locker.Constructor(Vector3(3401.751f, 5990.835f, 205.4796f)), owning_building_guid = 49) LocalObject(1086, Locker.Constructor(Vector3(3403.053f, 5968.963f, 205.4796f)), owning_building_guid = 49) @@ -1508,35 +4378,106 @@ object Map06 { // Ceryshen LocalObject(1089, Locker.Constructor(Vector3(3405.741f, 5990.835f, 205.4796f)), owning_building_guid = 49) LocalObject(1090, Locker.Constructor(Vector3(3407.143f, 5968.963f, 205.4796f)), owning_building_guid = 49) LocalObject(1091, Locker.Constructor(Vector3(3407.143f, 5990.835f, 205.4796f)), owning_building_guid = 49) - LocalObject(1538, Terminal.Constructor(Vector3(3407.445f, 5974.129f, 206.8176f), order_terminal), owning_building_guid = 49) - LocalObject(1539, Terminal.Constructor(Vector3(3407.445f, 5979.853f, 206.8176f), order_terminal), owning_building_guid = 49) - LocalObject(1540, Terminal.Constructor(Vector3(3407.445f, 5985.234f, 206.8176f), order_terminal), owning_building_guid = 49) - LocalObject(2124, SpawnTube.Constructor(Vector3(3396.706f, 5971.742f, 204.9675f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(2125, SpawnTube.Constructor(Vector3(3396.706f, 5988.152f, 204.9675f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(1396, FacilityTurret.Constructor(Vector3(3373.32f, 5971.295f, 234.4276f), manned_turret), owning_building_guid = 49) + LocalObject( + 1538, + Terminal.Constructor(Vector3(3407.445f, 5974.129f, 206.8176f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1539, + Terminal.Constructor(Vector3(3407.445f, 5979.853f, 206.8176f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1540, + Terminal.Constructor(Vector3(3407.445f, 5985.234f, 206.8176f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2124, + SpawnTube.Constructor(Vector3(3396.706f, 5971.742f, 204.9675f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 2125, + SpawnTube.Constructor(Vector3(3396.706f, 5988.152f, 204.9675f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 1396, + FacilityTurret.Constructor(Vector3(3373.32f, 5971.295f, 234.4276f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1396, 5061) - LocalObject(1397, FacilityTurret.Constructor(Vector3(3408.647f, 5996.707f, 234.4276f), manned_turret), owning_building_guid = 49) + LocalObject( + 1397, + FacilityTurret.Constructor(Vector3(3408.647f, 5996.707f, 234.4276f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1397, 5062) - LocalObject(1960, Painbox.Constructor(Vector3(3391.235f, 5977.803f, 206.9846f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1961, Painbox.Constructor(Vector3(3402.889f, 5986.086f, 205.5856f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1962, Painbox.Constructor(Vector3(3402.975f, 5974.223f, 205.5856f), painbox_radius_continuous), owning_building_guid = 49) + LocalObject( + 1960, + Painbox.Constructor(Vector3(3391.235f, 5977.803f, 206.9846f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1961, + Painbox.Constructor(Vector3(3402.889f, 5986.086f, 205.5856f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1962, + Painbox.Constructor(Vector3(3402.975f, 5974.223f, 205.5856f), painbox_radius_continuous), + owning_building_guid = 49 + ) } Building53() def Building53(): Unit = { // Name: Keelut_Tower Type: tower_a GUID: 50, MapID: 53 - LocalBuilding("Keelut_Tower", 50, 53, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3636f, 1720f, 250.5918f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2195, CaptureTerminal.Constructor(Vector3(3652.587f, 1719.897f, 260.5908f), secondary_capture), owning_building_guid = 50) + LocalBuilding( + "Keelut_Tower", + 50, + 53, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3636f, 1720f, 250.5918f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2195, + CaptureTerminal.Constructor(Vector3(3652.587f, 1719.897f, 260.5908f), secondary_capture), + owning_building_guid = 50 + ) LocalObject(340, Door.Constructor(Vector3(3648f, 1712f, 252.1127f)), owning_building_guid = 50) LocalObject(341, Door.Constructor(Vector3(3648f, 1712f, 272.1118f)), owning_building_guid = 50) LocalObject(342, Door.Constructor(Vector3(3648f, 1728f, 252.1127f)), owning_building_guid = 50) LocalObject(343, Door.Constructor(Vector3(3648f, 1728f, 272.1118f)), owning_building_guid = 50) LocalObject(2308, Door.Constructor(Vector3(3647.146f, 1708.794f, 241.9277f)), owning_building_guid = 50) LocalObject(2309, Door.Constructor(Vector3(3647.146f, 1725.204f, 241.9277f)), owning_building_guid = 50) - LocalObject(835, IFFLock.Constructor(Vector3(3645.957f, 1728.811f, 252.0527f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 342) - LocalObject(836, IFFLock.Constructor(Vector3(3645.957f, 1728.811f, 272.0528f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 343) - LocalObject(837, IFFLock.Constructor(Vector3(3650.047f, 1711.189f, 252.0527f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 340) - LocalObject(838, IFFLock.Constructor(Vector3(3650.047f, 1711.189f, 272.0528f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 341) + LocalObject( + 835, + IFFLock.Constructor(Vector3(3645.957f, 1728.811f, 252.0527f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 342 + ) + LocalObject( + 836, + IFFLock.Constructor(Vector3(3645.957f, 1728.811f, 272.0528f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 343 + ) + LocalObject( + 837, + IFFLock.Constructor(Vector3(3650.047f, 1711.189f, 252.0527f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 340 + ) + LocalObject( + 838, + IFFLock.Constructor(Vector3(3650.047f, 1711.189f, 272.0528f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 341 + ) LocalObject(1112, Locker.Constructor(Vector3(3651.716f, 1704.963f, 240.5858f)), owning_building_guid = 50) LocalObject(1113, Locker.Constructor(Vector3(3651.751f, 1726.835f, 240.5858f)), owning_building_guid = 50) LocalObject(1114, Locker.Constructor(Vector3(3653.053f, 1704.963f, 240.5858f)), owning_building_guid = 50) @@ -1545,35 +4486,106 @@ object Map06 { // Ceryshen LocalObject(1117, Locker.Constructor(Vector3(3655.741f, 1726.835f, 240.5858f)), owning_building_guid = 50) LocalObject(1118, Locker.Constructor(Vector3(3657.143f, 1704.963f, 240.5858f)), owning_building_guid = 50) LocalObject(1119, Locker.Constructor(Vector3(3657.143f, 1726.835f, 240.5858f)), owning_building_guid = 50) - LocalObject(1548, Terminal.Constructor(Vector3(3657.445f, 1710.129f, 241.9238f), order_terminal), owning_building_guid = 50) - LocalObject(1549, Terminal.Constructor(Vector3(3657.445f, 1715.853f, 241.9238f), order_terminal), owning_building_guid = 50) - LocalObject(1550, Terminal.Constructor(Vector3(3657.445f, 1721.234f, 241.9238f), order_terminal), owning_building_guid = 50) - LocalObject(2131, SpawnTube.Constructor(Vector3(3646.706f, 1707.742f, 240.0737f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(2132, SpawnTube.Constructor(Vector3(3646.706f, 1724.152f, 240.0737f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(1407, FacilityTurret.Constructor(Vector3(3623.32f, 1707.295f, 269.5338f), manned_turret), owning_building_guid = 50) + LocalObject( + 1548, + Terminal.Constructor(Vector3(3657.445f, 1710.129f, 241.9238f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1549, + Terminal.Constructor(Vector3(3657.445f, 1715.853f, 241.9238f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1550, + Terminal.Constructor(Vector3(3657.445f, 1721.234f, 241.9238f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2131, + SpawnTube.Constructor(Vector3(3646.706f, 1707.742f, 240.0737f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 2132, + SpawnTube.Constructor(Vector3(3646.706f, 1724.152f, 240.0737f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 1407, + FacilityTurret.Constructor(Vector3(3623.32f, 1707.295f, 269.5338f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1407, 5063) - LocalObject(1409, FacilityTurret.Constructor(Vector3(3658.647f, 1732.707f, 269.5338f), manned_turret), owning_building_guid = 50) + LocalObject( + 1409, + FacilityTurret.Constructor(Vector3(3658.647f, 1732.707f, 269.5338f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1409, 5064) - LocalObject(1966, Painbox.Constructor(Vector3(3641.235f, 1713.803f, 242.0909f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1967, Painbox.Constructor(Vector3(3652.889f, 1722.086f, 240.6918f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1968, Painbox.Constructor(Vector3(3652.975f, 1710.223f, 240.6918f), painbox_radius_continuous), owning_building_guid = 50) + LocalObject( + 1966, + Painbox.Constructor(Vector3(3641.235f, 1713.803f, 242.0909f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1967, + Painbox.Constructor(Vector3(3652.889f, 1722.086f, 240.6918f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1968, + Painbox.Constructor(Vector3(3652.975f, 1710.223f, 240.6918f), painbox_radius_continuous), + owning_building_guid = 50 + ) } Building50() def Building50(): Unit = { // Name: Nerrivik_Tower Type: tower_a GUID: 51, MapID: 50 - LocalBuilding("Nerrivik_Tower", 51, 50, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3724f, 3498f, 224.6254f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2196, CaptureTerminal.Constructor(Vector3(3740.587f, 3497.897f, 234.6244f), secondary_capture), owning_building_guid = 51) + LocalBuilding( + "Nerrivik_Tower", + 51, + 50, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3724f, 3498f, 224.6254f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2196, + CaptureTerminal.Constructor(Vector3(3740.587f, 3497.897f, 234.6244f), secondary_capture), + owning_building_guid = 51 + ) LocalObject(355, Door.Constructor(Vector3(3736f, 3490f, 226.1464f)), owning_building_guid = 51) LocalObject(356, Door.Constructor(Vector3(3736f, 3490f, 246.1454f)), owning_building_guid = 51) LocalObject(357, Door.Constructor(Vector3(3736f, 3506f, 226.1464f)), owning_building_guid = 51) LocalObject(358, Door.Constructor(Vector3(3736f, 3506f, 246.1454f)), owning_building_guid = 51) LocalObject(2313, Door.Constructor(Vector3(3735.146f, 3486.794f, 215.9614f)), owning_building_guid = 51) LocalObject(2314, Door.Constructor(Vector3(3735.146f, 3503.204f, 215.9614f)), owning_building_guid = 51) - LocalObject(847, IFFLock.Constructor(Vector3(3733.957f, 3506.811f, 226.0864f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 357) - LocalObject(848, IFFLock.Constructor(Vector3(3733.957f, 3506.811f, 246.0864f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 358) - LocalObject(849, IFFLock.Constructor(Vector3(3738.047f, 3489.189f, 226.0864f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 355) - LocalObject(850, IFFLock.Constructor(Vector3(3738.047f, 3489.189f, 246.0864f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 356) + LocalObject( + 847, + IFFLock.Constructor(Vector3(3733.957f, 3506.811f, 226.0864f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 357 + ) + LocalObject( + 848, + IFFLock.Constructor(Vector3(3733.957f, 3506.811f, 246.0864f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 358 + ) + LocalObject( + 849, + IFFLock.Constructor(Vector3(3738.047f, 3489.189f, 226.0864f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 355 + ) + LocalObject( + 850, + IFFLock.Constructor(Vector3(3738.047f, 3489.189f, 246.0864f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 356 + ) LocalObject(1132, Locker.Constructor(Vector3(3739.716f, 3482.963f, 214.6194f)), owning_building_guid = 51) LocalObject(1133, Locker.Constructor(Vector3(3739.751f, 3504.835f, 214.6194f)), owning_building_guid = 51) LocalObject(1134, Locker.Constructor(Vector3(3741.053f, 3482.963f, 214.6194f)), owning_building_guid = 51) @@ -1582,35 +4594,106 @@ object Map06 { // Ceryshen LocalObject(1137, Locker.Constructor(Vector3(3743.741f, 3504.835f, 214.6194f)), owning_building_guid = 51) LocalObject(1138, Locker.Constructor(Vector3(3745.143f, 3482.963f, 214.6194f)), owning_building_guid = 51) LocalObject(1139, Locker.Constructor(Vector3(3745.143f, 3504.835f, 214.6194f)), owning_building_guid = 51) - LocalObject(1558, Terminal.Constructor(Vector3(3745.445f, 3488.129f, 215.9574f), order_terminal), owning_building_guid = 51) - LocalObject(1559, Terminal.Constructor(Vector3(3745.445f, 3493.853f, 215.9574f), order_terminal), owning_building_guid = 51) - LocalObject(1560, Terminal.Constructor(Vector3(3745.445f, 3499.234f, 215.9574f), order_terminal), owning_building_guid = 51) - LocalObject(2136, SpawnTube.Constructor(Vector3(3734.706f, 3485.742f, 214.1074f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(2137, SpawnTube.Constructor(Vector3(3734.706f, 3502.152f, 214.1074f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1412, FacilityTurret.Constructor(Vector3(3711.32f, 3485.295f, 243.5674f), manned_turret), owning_building_guid = 51) + LocalObject( + 1558, + Terminal.Constructor(Vector3(3745.445f, 3488.129f, 215.9574f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1559, + Terminal.Constructor(Vector3(3745.445f, 3493.853f, 215.9574f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1560, + Terminal.Constructor(Vector3(3745.445f, 3499.234f, 215.9574f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 2136, + SpawnTube.Constructor(Vector3(3734.706f, 3485.742f, 214.1074f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 2137, + SpawnTube.Constructor(Vector3(3734.706f, 3502.152f, 214.1074f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1412, + FacilityTurret.Constructor(Vector3(3711.32f, 3485.295f, 243.5674f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1412, 5065) - LocalObject(1414, FacilityTurret.Constructor(Vector3(3746.647f, 3510.707f, 243.5674f), manned_turret), owning_building_guid = 51) + LocalObject( + 1414, + FacilityTurret.Constructor(Vector3(3746.647f, 3510.707f, 243.5674f), manned_turret), + owning_building_guid = 51 + ) TurretToWeapon(1414, 5066) - LocalObject(1969, Painbox.Constructor(Vector3(3729.235f, 3491.803f, 216.1245f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1970, Painbox.Constructor(Vector3(3740.889f, 3500.086f, 214.7254f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1971, Painbox.Constructor(Vector3(3740.975f, 3488.223f, 214.7254f), painbox_radius_continuous), owning_building_guid = 51) + LocalObject( + 1969, + Painbox.Constructor(Vector3(3729.235f, 3491.803f, 216.1245f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1970, + Painbox.Constructor(Vector3(3740.889f, 3500.086f, 214.7254f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1971, + Painbox.Constructor(Vector3(3740.975f, 3488.223f, 214.7254f), painbox_radius_continuous), + owning_building_guid = 51 + ) } Building28() def Building28(): Unit = { // Name: N_Keelut_Tower Type: tower_a GUID: 52, MapID: 28 - LocalBuilding("N_Keelut_Tower", 52, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3914f, 2464f, 243.5026f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2198, CaptureTerminal.Constructor(Vector3(3930.587f, 2463.897f, 253.5016f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "N_Keelut_Tower", + 52, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3914f, 2464f, 243.5026f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2198, + CaptureTerminal.Constructor(Vector3(3930.587f, 2463.897f, 253.5016f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(377, Door.Constructor(Vector3(3926f, 2456f, 245.0236f)), owning_building_guid = 52) LocalObject(378, Door.Constructor(Vector3(3926f, 2456f, 265.0226f)), owning_building_guid = 52) LocalObject(379, Door.Constructor(Vector3(3926f, 2472f, 245.0236f)), owning_building_guid = 52) LocalObject(380, Door.Constructor(Vector3(3926f, 2472f, 265.0226f)), owning_building_guid = 52) LocalObject(2317, Door.Constructor(Vector3(3925.146f, 2452.794f, 234.8386f)), owning_building_guid = 52) LocalObject(2318, Door.Constructor(Vector3(3925.146f, 2469.204f, 234.8386f)), owning_building_guid = 52) - LocalObject(861, IFFLock.Constructor(Vector3(3923.957f, 2472.811f, 244.9636f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 379) - LocalObject(862, IFFLock.Constructor(Vector3(3923.957f, 2472.811f, 264.9636f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 380) - LocalObject(864, IFFLock.Constructor(Vector3(3928.047f, 2455.189f, 244.9636f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 377) - LocalObject(865, IFFLock.Constructor(Vector3(3928.047f, 2455.189f, 264.9636f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 378) + LocalObject( + 861, + IFFLock.Constructor(Vector3(3923.957f, 2472.811f, 244.9636f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 379 + ) + LocalObject( + 862, + IFFLock.Constructor(Vector3(3923.957f, 2472.811f, 264.9636f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 380 + ) + LocalObject( + 864, + IFFLock.Constructor(Vector3(3928.047f, 2455.189f, 244.9636f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 377 + ) + LocalObject( + 865, + IFFLock.Constructor(Vector3(3928.047f, 2455.189f, 264.9636f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 378 + ) LocalObject(1148, Locker.Constructor(Vector3(3929.716f, 2448.963f, 233.4966f)), owning_building_guid = 52) LocalObject(1149, Locker.Constructor(Vector3(3929.751f, 2470.835f, 233.4966f)), owning_building_guid = 52) LocalObject(1150, Locker.Constructor(Vector3(3931.053f, 2448.963f, 233.4966f)), owning_building_guid = 52) @@ -1619,35 +4702,106 @@ object Map06 { // Ceryshen LocalObject(1153, Locker.Constructor(Vector3(3933.741f, 2470.835f, 233.4966f)), owning_building_guid = 52) LocalObject(1154, Locker.Constructor(Vector3(3935.143f, 2448.963f, 233.4966f)), owning_building_guid = 52) LocalObject(1155, Locker.Constructor(Vector3(3935.143f, 2470.835f, 233.4966f)), owning_building_guid = 52) - LocalObject(1565, Terminal.Constructor(Vector3(3935.445f, 2454.129f, 234.8346f), order_terminal), owning_building_guid = 52) - LocalObject(1566, Terminal.Constructor(Vector3(3935.445f, 2459.853f, 234.8346f), order_terminal), owning_building_guid = 52) - LocalObject(1567, Terminal.Constructor(Vector3(3935.445f, 2465.234f, 234.8346f), order_terminal), owning_building_guid = 52) - LocalObject(2140, SpawnTube.Constructor(Vector3(3924.706f, 2451.742f, 232.9846f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(2141, SpawnTube.Constructor(Vector3(3924.706f, 2468.152f, 232.9846f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1420, FacilityTurret.Constructor(Vector3(3901.32f, 2451.295f, 262.4446f), manned_turret), owning_building_guid = 52) + LocalObject( + 1565, + Terminal.Constructor(Vector3(3935.445f, 2454.129f, 234.8346f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1566, + Terminal.Constructor(Vector3(3935.445f, 2459.853f, 234.8346f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1567, + Terminal.Constructor(Vector3(3935.445f, 2465.234f, 234.8346f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 2140, + SpawnTube.Constructor(Vector3(3924.706f, 2451.742f, 232.9846f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 2141, + SpawnTube.Constructor(Vector3(3924.706f, 2468.152f, 232.9846f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1420, + FacilityTurret.Constructor(Vector3(3901.32f, 2451.295f, 262.4446f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1420, 5067) - LocalObject(1424, FacilityTurret.Constructor(Vector3(3936.647f, 2476.707f, 262.4446f), manned_turret), owning_building_guid = 52) + LocalObject( + 1424, + FacilityTurret.Constructor(Vector3(3936.647f, 2476.707f, 262.4446f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1424, 5068) - LocalObject(1975, Painbox.Constructor(Vector3(3919.235f, 2457.803f, 235.0017f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1976, Painbox.Constructor(Vector3(3930.889f, 2466.086f, 233.6026f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1977, Painbox.Constructor(Vector3(3930.975f, 2454.223f, 233.6026f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 1975, + Painbox.Constructor(Vector3(3919.235f, 2457.803f, 235.0017f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1976, + Painbox.Constructor(Vector3(3930.889f, 2466.086f, 233.6026f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1977, + Painbox.Constructor(Vector3(3930.975f, 2454.223f, 233.6026f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building47() def Building47(): Unit = { // Name: Sedna_Tower Type: tower_a GUID: 53, MapID: 47 - LocalBuilding("Sedna_Tower", 53, 47, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4174f, 5364f, 226.9693f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2200, CaptureTerminal.Constructor(Vector3(4190.587f, 5363.897f, 236.9683f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "Sedna_Tower", + 53, + 47, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4174f, 5364f, 226.9693f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2200, + CaptureTerminal.Constructor(Vector3(4190.587f, 5363.897f, 236.9683f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(415, Door.Constructor(Vector3(4186f, 5356f, 228.4903f)), owning_building_guid = 53) LocalObject(416, Door.Constructor(Vector3(4186f, 5356f, 248.4893f)), owning_building_guid = 53) LocalObject(417, Door.Constructor(Vector3(4186f, 5372f, 228.4903f)), owning_building_guid = 53) LocalObject(418, Door.Constructor(Vector3(4186f, 5372f, 248.4893f)), owning_building_guid = 53) LocalObject(2327, Door.Constructor(Vector3(4185.146f, 5352.794f, 218.3053f)), owning_building_guid = 53) LocalObject(2328, Door.Constructor(Vector3(4185.146f, 5369.204f, 218.3053f)), owning_building_guid = 53) - LocalObject(892, IFFLock.Constructor(Vector3(4183.957f, 5372.811f, 228.4303f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 417) - LocalObject(893, IFFLock.Constructor(Vector3(4183.957f, 5372.811f, 248.4303f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 418) - LocalObject(894, IFFLock.Constructor(Vector3(4188.047f, 5355.189f, 228.4303f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 415) - LocalObject(895, IFFLock.Constructor(Vector3(4188.047f, 5355.189f, 248.4303f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 416) + LocalObject( + 892, + IFFLock.Constructor(Vector3(4183.957f, 5372.811f, 228.4303f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 417 + ) + LocalObject( + 893, + IFFLock.Constructor(Vector3(4183.957f, 5372.811f, 248.4303f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 418 + ) + LocalObject( + 894, + IFFLock.Constructor(Vector3(4188.047f, 5355.189f, 228.4303f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 415 + ) + LocalObject( + 895, + IFFLock.Constructor(Vector3(4188.047f, 5355.189f, 248.4303f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 416 + ) LocalObject(1197, Locker.Constructor(Vector3(4189.716f, 5348.963f, 216.9633f)), owning_building_guid = 53) LocalObject(1198, Locker.Constructor(Vector3(4189.751f, 5370.835f, 216.9633f)), owning_building_guid = 53) LocalObject(1199, Locker.Constructor(Vector3(4191.053f, 5348.963f, 216.9633f)), owning_building_guid = 53) @@ -1656,35 +4810,106 @@ object Map06 { // Ceryshen LocalObject(1202, Locker.Constructor(Vector3(4193.741f, 5370.835f, 216.9633f)), owning_building_guid = 53) LocalObject(1203, Locker.Constructor(Vector3(4195.143f, 5348.963f, 216.9633f)), owning_building_guid = 53) LocalObject(1204, Locker.Constructor(Vector3(4195.143f, 5370.835f, 216.9633f)), owning_building_guid = 53) - LocalObject(1582, Terminal.Constructor(Vector3(4195.445f, 5354.129f, 218.3013f), order_terminal), owning_building_guid = 53) - LocalObject(1583, Terminal.Constructor(Vector3(4195.445f, 5359.853f, 218.3013f), order_terminal), owning_building_guid = 53) - LocalObject(1584, Terminal.Constructor(Vector3(4195.445f, 5365.234f, 218.3013f), order_terminal), owning_building_guid = 53) - LocalObject(2150, SpawnTube.Constructor(Vector3(4184.706f, 5351.742f, 216.4513f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(2151, SpawnTube.Constructor(Vector3(4184.706f, 5368.152f, 216.4513f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1433, FacilityTurret.Constructor(Vector3(4161.32f, 5351.295f, 245.9113f), manned_turret), owning_building_guid = 53) + LocalObject( + 1582, + Terminal.Constructor(Vector3(4195.445f, 5354.129f, 218.3013f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1583, + Terminal.Constructor(Vector3(4195.445f, 5359.853f, 218.3013f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1584, + Terminal.Constructor(Vector3(4195.445f, 5365.234f, 218.3013f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2150, + SpawnTube.Constructor(Vector3(4184.706f, 5351.742f, 216.4513f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 2151, + SpawnTube.Constructor(Vector3(4184.706f, 5368.152f, 216.4513f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1433, + FacilityTurret.Constructor(Vector3(4161.32f, 5351.295f, 245.9113f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1433, 5069) - LocalObject(1434, FacilityTurret.Constructor(Vector3(4196.647f, 5376.707f, 245.9113f), manned_turret), owning_building_guid = 53) + LocalObject( + 1434, + FacilityTurret.Constructor(Vector3(4196.647f, 5376.707f, 245.9113f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1434, 5070) - LocalObject(1981, Painbox.Constructor(Vector3(4179.235f, 5357.803f, 218.4684f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1982, Painbox.Constructor(Vector3(4190.889f, 5366.086f, 217.0693f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1983, Painbox.Constructor(Vector3(4190.975f, 5354.223f, 217.0693f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 1981, + Painbox.Constructor(Vector3(4179.235f, 5357.803f, 218.4684f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1982, + Painbox.Constructor(Vector3(4190.889f, 5366.086f, 217.0693f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1983, + Painbox.Constructor(Vector3(4190.975f, 5354.223f, 217.0693f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building27() def Building27(): Unit = { // Name: S_Akna_Tower Type: tower_a GUID: 54, MapID: 27 - LocalBuilding("S_Akna_Tower", 54, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4254f, 3096f, 218.2696f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2201, CaptureTerminal.Constructor(Vector3(4270.587f, 3095.897f, 228.2686f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "S_Akna_Tower", + 54, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4254f, 3096f, 218.2696f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2201, + CaptureTerminal.Constructor(Vector3(4270.587f, 3095.897f, 228.2686f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(419, Door.Constructor(Vector3(4266f, 3088f, 219.7906f)), owning_building_guid = 54) LocalObject(420, Door.Constructor(Vector3(4266f, 3088f, 239.7896f)), owning_building_guid = 54) LocalObject(421, Door.Constructor(Vector3(4266f, 3104f, 219.7906f)), owning_building_guid = 54) LocalObject(422, Door.Constructor(Vector3(4266f, 3104f, 239.7896f)), owning_building_guid = 54) LocalObject(2329, Door.Constructor(Vector3(4265.146f, 3084.794f, 209.6056f)), owning_building_guid = 54) LocalObject(2330, Door.Constructor(Vector3(4265.146f, 3101.204f, 209.6056f)), owning_building_guid = 54) - LocalObject(896, IFFLock.Constructor(Vector3(4263.957f, 3104.811f, 219.7306f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 421) - LocalObject(897, IFFLock.Constructor(Vector3(4263.957f, 3104.811f, 239.7306f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 422) - LocalObject(898, IFFLock.Constructor(Vector3(4268.047f, 3087.189f, 219.7306f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 419) - LocalObject(899, IFFLock.Constructor(Vector3(4268.047f, 3087.189f, 239.7306f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 420) + LocalObject( + 896, + IFFLock.Constructor(Vector3(4263.957f, 3104.811f, 219.7306f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 421 + ) + LocalObject( + 897, + IFFLock.Constructor(Vector3(4263.957f, 3104.811f, 239.7306f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 422 + ) + LocalObject( + 898, + IFFLock.Constructor(Vector3(4268.047f, 3087.189f, 219.7306f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 419 + ) + LocalObject( + 899, + IFFLock.Constructor(Vector3(4268.047f, 3087.189f, 239.7306f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 420 + ) LocalObject(1205, Locker.Constructor(Vector3(4269.716f, 3080.963f, 208.2636f)), owning_building_guid = 54) LocalObject(1206, Locker.Constructor(Vector3(4269.751f, 3102.835f, 208.2636f)), owning_building_guid = 54) LocalObject(1207, Locker.Constructor(Vector3(4271.053f, 3080.963f, 208.2636f)), owning_building_guid = 54) @@ -1693,35 +4918,106 @@ object Map06 { // Ceryshen LocalObject(1210, Locker.Constructor(Vector3(4273.741f, 3102.835f, 208.2636f)), owning_building_guid = 54) LocalObject(1211, Locker.Constructor(Vector3(4275.143f, 3080.963f, 208.2636f)), owning_building_guid = 54) LocalObject(1212, Locker.Constructor(Vector3(4275.143f, 3102.835f, 208.2636f)), owning_building_guid = 54) - LocalObject(1585, Terminal.Constructor(Vector3(4275.445f, 3086.129f, 209.6016f), order_terminal), owning_building_guid = 54) - LocalObject(1586, Terminal.Constructor(Vector3(4275.445f, 3091.853f, 209.6016f), order_terminal), owning_building_guid = 54) - LocalObject(1587, Terminal.Constructor(Vector3(4275.445f, 3097.234f, 209.6016f), order_terminal), owning_building_guid = 54) - LocalObject(2152, SpawnTube.Constructor(Vector3(4264.706f, 3083.742f, 207.7516f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(2153, SpawnTube.Constructor(Vector3(4264.706f, 3100.152f, 207.7516f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1435, FacilityTurret.Constructor(Vector3(4241.32f, 3083.295f, 237.2116f), manned_turret), owning_building_guid = 54) + LocalObject( + 1585, + Terminal.Constructor(Vector3(4275.445f, 3086.129f, 209.6016f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1586, + Terminal.Constructor(Vector3(4275.445f, 3091.853f, 209.6016f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1587, + Terminal.Constructor(Vector3(4275.445f, 3097.234f, 209.6016f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2152, + SpawnTube.Constructor(Vector3(4264.706f, 3083.742f, 207.7516f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 2153, + SpawnTube.Constructor(Vector3(4264.706f, 3100.152f, 207.7516f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1435, + FacilityTurret.Constructor(Vector3(4241.32f, 3083.295f, 237.2116f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1435, 5071) - LocalObject(1436, FacilityTurret.Constructor(Vector3(4276.647f, 3108.707f, 237.2116f), manned_turret), owning_building_guid = 54) + LocalObject( + 1436, + FacilityTurret.Constructor(Vector3(4276.647f, 3108.707f, 237.2116f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1436, 5072) - LocalObject(1984, Painbox.Constructor(Vector3(4259.235f, 3089.803f, 209.7687f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1985, Painbox.Constructor(Vector3(4270.889f, 3098.086f, 208.3696f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1986, Painbox.Constructor(Vector3(4270.975f, 3086.223f, 208.3696f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 1984, + Painbox.Constructor(Vector3(4259.235f, 3089.803f, 209.7687f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1985, + Painbox.Constructor(Vector3(4270.889f, 3098.086f, 208.3696f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1986, + Painbox.Constructor(Vector3(4270.975f, 3086.223f, 208.3696f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building22() def Building22(): Unit = { // Name: N_Hossin_Warpgate_Tower Type: tower_a GUID: 55, MapID: 22 - LocalBuilding("N_Hossin_Warpgate_Tower", 55, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4836f, 5218f, 22.86996f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2204, CaptureTerminal.Constructor(Vector3(4852.587f, 5217.897f, 32.86896f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "N_Hossin_Warpgate_Tower", + 55, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4836f, 5218f, 22.86996f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2204, + CaptureTerminal.Constructor(Vector3(4852.587f, 5217.897f, 32.86896f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(449, Door.Constructor(Vector3(4848f, 5210f, 24.39096f)), owning_building_guid = 55) LocalObject(450, Door.Constructor(Vector3(4848f, 5210f, 44.38996f)), owning_building_guid = 55) LocalObject(451, Door.Constructor(Vector3(4848f, 5226f, 24.39096f)), owning_building_guid = 55) LocalObject(452, Door.Constructor(Vector3(4848f, 5226f, 44.38996f)), owning_building_guid = 55) LocalObject(2338, Door.Constructor(Vector3(4847.146f, 5206.794f, 14.20596f)), owning_building_guid = 55) LocalObject(2339, Door.Constructor(Vector3(4847.146f, 5223.204f, 14.20596f)), owning_building_guid = 55) - LocalObject(919, IFFLock.Constructor(Vector3(4845.957f, 5226.811f, 24.33096f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 451) - LocalObject(920, IFFLock.Constructor(Vector3(4845.957f, 5226.811f, 44.33096f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 452) - LocalObject(921, IFFLock.Constructor(Vector3(4850.047f, 5209.189f, 24.33096f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 449) - LocalObject(922, IFFLock.Constructor(Vector3(4850.047f, 5209.189f, 44.33096f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 450) + LocalObject( + 919, + IFFLock.Constructor(Vector3(4845.957f, 5226.811f, 24.33096f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 451 + ) + LocalObject( + 920, + IFFLock.Constructor(Vector3(4845.957f, 5226.811f, 44.33096f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 452 + ) + LocalObject( + 921, + IFFLock.Constructor(Vector3(4850.047f, 5209.189f, 24.33096f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 449 + ) + LocalObject( + 922, + IFFLock.Constructor(Vector3(4850.047f, 5209.189f, 44.33096f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 450 + ) LocalObject(1241, Locker.Constructor(Vector3(4851.716f, 5202.963f, 12.86396f)), owning_building_guid = 55) LocalObject(1242, Locker.Constructor(Vector3(4851.751f, 5224.835f, 12.86396f)), owning_building_guid = 55) LocalObject(1243, Locker.Constructor(Vector3(4853.053f, 5202.963f, 12.86396f)), owning_building_guid = 55) @@ -1730,35 +5026,106 @@ object Map06 { // Ceryshen LocalObject(1246, Locker.Constructor(Vector3(4855.741f, 5224.835f, 12.86396f)), owning_building_guid = 55) LocalObject(1247, Locker.Constructor(Vector3(4857.143f, 5202.963f, 12.86396f)), owning_building_guid = 55) LocalObject(1248, Locker.Constructor(Vector3(4857.143f, 5224.835f, 12.86396f)), owning_building_guid = 55) - LocalObject(1600, Terminal.Constructor(Vector3(4857.445f, 5208.129f, 14.20196f), order_terminal), owning_building_guid = 55) - LocalObject(1601, Terminal.Constructor(Vector3(4857.445f, 5213.853f, 14.20196f), order_terminal), owning_building_guid = 55) - LocalObject(1602, Terminal.Constructor(Vector3(4857.445f, 5219.234f, 14.20196f), order_terminal), owning_building_guid = 55) - LocalObject(2161, SpawnTube.Constructor(Vector3(4846.706f, 5205.742f, 12.35196f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(2162, SpawnTube.Constructor(Vector3(4846.706f, 5222.152f, 12.35196f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1447, FacilityTurret.Constructor(Vector3(4823.32f, 5205.295f, 41.81196f), manned_turret), owning_building_guid = 55) + LocalObject( + 1600, + Terminal.Constructor(Vector3(4857.445f, 5208.129f, 14.20196f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1601, + Terminal.Constructor(Vector3(4857.445f, 5213.853f, 14.20196f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1602, + Terminal.Constructor(Vector3(4857.445f, 5219.234f, 14.20196f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 2161, + SpawnTube.Constructor(Vector3(4846.706f, 5205.742f, 12.35196f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 2162, + SpawnTube.Constructor(Vector3(4846.706f, 5222.152f, 12.35196f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1447, + FacilityTurret.Constructor(Vector3(4823.32f, 5205.295f, 41.81196f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1447, 5073) - LocalObject(1448, FacilityTurret.Constructor(Vector3(4858.647f, 5230.707f, 41.81196f), manned_turret), owning_building_guid = 55) + LocalObject( + 1448, + FacilityTurret.Constructor(Vector3(4858.647f, 5230.707f, 41.81196f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1448, 5074) - LocalObject(1993, Painbox.Constructor(Vector3(4841.235f, 5211.803f, 14.36906f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1994, Painbox.Constructor(Vector3(4852.889f, 5220.086f, 12.96996f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1995, Painbox.Constructor(Vector3(4852.975f, 5208.223f, 12.96996f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 1993, + Painbox.Constructor(Vector3(4841.235f, 5211.803f, 14.36906f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1994, + Painbox.Constructor(Vector3(4852.889f, 5220.086f, 12.96996f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1995, + Painbox.Constructor(Vector3(4852.975f, 5208.223f, 12.96996f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building52() def Building52(): Unit = { // Name: Tootega_Tower Type: tower_a GUID: 56, MapID: 52 - LocalBuilding("Tootega_Tower", 56, 52, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5030f, 3086f, 231.7553f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2206, CaptureTerminal.Constructor(Vector3(5046.587f, 3085.897f, 241.7543f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "Tootega_Tower", + 56, + 52, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5030f, 3086f, 231.7553f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2206, + CaptureTerminal.Constructor(Vector3(5046.587f, 3085.897f, 241.7543f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(462, Door.Constructor(Vector3(5042f, 3078f, 233.2763f)), owning_building_guid = 56) LocalObject(463, Door.Constructor(Vector3(5042f, 3078f, 253.2753f)), owning_building_guid = 56) LocalObject(464, Door.Constructor(Vector3(5042f, 3094f, 233.2763f)), owning_building_guid = 56) LocalObject(465, Door.Constructor(Vector3(5042f, 3094f, 253.2753f)), owning_building_guid = 56) LocalObject(2342, Door.Constructor(Vector3(5041.146f, 3074.794f, 223.0913f)), owning_building_guid = 56) LocalObject(2343, Door.Constructor(Vector3(5041.146f, 3091.204f, 223.0913f)), owning_building_guid = 56) - LocalObject(930, IFFLock.Constructor(Vector3(5039.957f, 3094.811f, 233.2163f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 464) - LocalObject(931, IFFLock.Constructor(Vector3(5039.957f, 3094.811f, 253.2163f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 465) - LocalObject(932, IFFLock.Constructor(Vector3(5044.047f, 3077.189f, 233.2163f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 462) - LocalObject(933, IFFLock.Constructor(Vector3(5044.047f, 3077.189f, 253.2163f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 463) + LocalObject( + 930, + IFFLock.Constructor(Vector3(5039.957f, 3094.811f, 233.2163f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 464 + ) + LocalObject( + 931, + IFFLock.Constructor(Vector3(5039.957f, 3094.811f, 253.2163f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 465 + ) + LocalObject( + 932, + IFFLock.Constructor(Vector3(5044.047f, 3077.189f, 233.2163f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 462 + ) + LocalObject( + 933, + IFFLock.Constructor(Vector3(5044.047f, 3077.189f, 253.2163f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 463 + ) LocalObject(1257, Locker.Constructor(Vector3(5045.716f, 3070.963f, 221.7493f)), owning_building_guid = 56) LocalObject(1258, Locker.Constructor(Vector3(5045.751f, 3092.835f, 221.7493f)), owning_building_guid = 56) LocalObject(1259, Locker.Constructor(Vector3(5047.053f, 3070.963f, 221.7493f)), owning_building_guid = 56) @@ -1767,25 +5134,76 @@ object Map06 { // Ceryshen LocalObject(1262, Locker.Constructor(Vector3(5049.741f, 3092.835f, 221.7493f)), owning_building_guid = 56) LocalObject(1263, Locker.Constructor(Vector3(5051.143f, 3070.963f, 221.7493f)), owning_building_guid = 56) LocalObject(1264, Locker.Constructor(Vector3(5051.143f, 3092.835f, 221.7493f)), owning_building_guid = 56) - LocalObject(1606, Terminal.Constructor(Vector3(5051.445f, 3076.129f, 223.0873f), order_terminal), owning_building_guid = 56) - LocalObject(1607, Terminal.Constructor(Vector3(5051.445f, 3081.853f, 223.0873f), order_terminal), owning_building_guid = 56) - LocalObject(1608, Terminal.Constructor(Vector3(5051.445f, 3087.234f, 223.0873f), order_terminal), owning_building_guid = 56) - LocalObject(2165, SpawnTube.Constructor(Vector3(5040.706f, 3073.742f, 221.2373f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(2166, SpawnTube.Constructor(Vector3(5040.706f, 3090.152f, 221.2373f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1451, FacilityTurret.Constructor(Vector3(5017.32f, 3073.295f, 250.6973f), manned_turret), owning_building_guid = 56) + LocalObject( + 1606, + Terminal.Constructor(Vector3(5051.445f, 3076.129f, 223.0873f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1607, + Terminal.Constructor(Vector3(5051.445f, 3081.853f, 223.0873f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1608, + Terminal.Constructor(Vector3(5051.445f, 3087.234f, 223.0873f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2165, + SpawnTube.Constructor(Vector3(5040.706f, 3073.742f, 221.2373f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 2166, + SpawnTube.Constructor(Vector3(5040.706f, 3090.152f, 221.2373f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1451, + FacilityTurret.Constructor(Vector3(5017.32f, 3073.295f, 250.6973f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1451, 5075) - LocalObject(1452, FacilityTurret.Constructor(Vector3(5052.647f, 3098.707f, 250.6973f), manned_turret), owning_building_guid = 56) + LocalObject( + 1452, + FacilityTurret.Constructor(Vector3(5052.647f, 3098.707f, 250.6973f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1452, 5076) - LocalObject(1999, Painbox.Constructor(Vector3(5035.235f, 3079.803f, 223.2544f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2000, Painbox.Constructor(Vector3(5046.889f, 3088.086f, 221.8553f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2001, Painbox.Constructor(Vector3(5046.975f, 3076.223f, 221.8553f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 1999, + Painbox.Constructor(Vector3(5035.235f, 3079.803f, 223.2544f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2000, + Painbox.Constructor(Vector3(5046.889f, 3088.086f, 221.8553f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2001, + Painbox.Constructor(Vector3(5046.975f, 3076.223f, 221.8553f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building15() def Building15(): Unit = { // Name: SW_Amerish_Warpgate_Tower Type: tower_b GUID: 57, MapID: 15 - LocalBuilding("SW_Amerish_Warpgate_Tower", 57, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2040f, 1690f, 219.3832f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2184, CaptureTerminal.Constructor(Vector3(2056.587f, 1689.897f, 239.3822f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "SW_Amerish_Warpgate_Tower", + 57, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2040f, 1690f, 219.3832f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2184, + CaptureTerminal.Constructor(Vector3(2056.587f, 1689.897f, 239.3822f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(250, Door.Constructor(Vector3(2052f, 1682f, 220.9032f)), owning_building_guid = 57) LocalObject(251, Door.Constructor(Vector3(2052f, 1682f, 230.9032f)), owning_building_guid = 57) LocalObject(252, Door.Constructor(Vector3(2052f, 1682f, 250.9032f)), owning_building_guid = 57) @@ -1794,12 +5212,42 @@ object Map06 { // Ceryshen LocalObject(255, Door.Constructor(Vector3(2052f, 1698f, 250.9032f)), owning_building_guid = 57) LocalObject(2277, Door.Constructor(Vector3(2051.147f, 1678.794f, 210.7192f)), owning_building_guid = 57) LocalObject(2278, Door.Constructor(Vector3(2051.147f, 1695.204f, 210.7192f)), owning_building_guid = 57) - LocalObject(763, IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 220.8442f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 253) - LocalObject(764, IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 230.8442f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 254) - LocalObject(765, IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 250.8442f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 255) - LocalObject(766, IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 220.8442f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 250) - LocalObject(767, IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 230.8442f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 251) - LocalObject(768, IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 250.8442f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 252) + LocalObject( + 763, + IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 220.8442f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 253 + ) + LocalObject( + 764, + IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 230.8442f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 254 + ) + LocalObject( + 765, + IFFLock.Constructor(Vector3(2049.957f, 1698.811f, 250.8442f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 255 + ) + LocalObject( + 766, + IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 220.8442f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 250 + ) + LocalObject( + 767, + IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 230.8442f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 251 + ) + LocalObject( + 768, + IFFLock.Constructor(Vector3(2054.047f, 1681.189f, 250.8442f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 252 + ) LocalObject(979, Locker.Constructor(Vector3(2055.716f, 1674.963f, 209.3772f)), owning_building_guid = 57) LocalObject(980, Locker.Constructor(Vector3(2055.751f, 1696.835f, 209.3772f)), owning_building_guid = 57) LocalObject(981, Locker.Constructor(Vector3(2057.053f, 1674.963f, 209.3772f)), owning_building_guid = 57) @@ -1808,21 +5256,64 @@ object Map06 { // Ceryshen LocalObject(984, Locker.Constructor(Vector3(2059.741f, 1696.835f, 209.3772f)), owning_building_guid = 57) LocalObject(985, Locker.Constructor(Vector3(2061.143f, 1674.963f, 209.3772f)), owning_building_guid = 57) LocalObject(986, Locker.Constructor(Vector3(2061.143f, 1696.835f, 209.3772f)), owning_building_guid = 57) - LocalObject(1503, Terminal.Constructor(Vector3(2061.446f, 1680.129f, 210.7152f), order_terminal), owning_building_guid = 57) - LocalObject(1504, Terminal.Constructor(Vector3(2061.446f, 1685.853f, 210.7152f), order_terminal), owning_building_guid = 57) - LocalObject(1505, Terminal.Constructor(Vector3(2061.446f, 1691.234f, 210.7152f), order_terminal), owning_building_guid = 57) - LocalObject(2100, SpawnTube.Constructor(Vector3(2050.706f, 1677.742f, 208.8652f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(2101, SpawnTube.Constructor(Vector3(2050.706f, 1694.152f, 208.8652f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1933, Painbox.Constructor(Vector3(2045.493f, 1682.849f, 210.6726f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1934, Painbox.Constructor(Vector3(2057.127f, 1680.078f, 209.4832f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1935, Painbox.Constructor(Vector3(2057.259f, 1692.107f, 209.4832f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 1503, + Terminal.Constructor(Vector3(2061.446f, 1680.129f, 210.7152f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1504, + Terminal.Constructor(Vector3(2061.446f, 1685.853f, 210.7152f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1505, + Terminal.Constructor(Vector3(2061.446f, 1691.234f, 210.7152f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 2100, + SpawnTube.Constructor(Vector3(2050.706f, 1677.742f, 208.8652f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 2101, + SpawnTube.Constructor(Vector3(2050.706f, 1694.152f, 208.8652f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1933, + Painbox.Constructor(Vector3(2045.493f, 1682.849f, 210.6726f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1934, + Painbox.Constructor(Vector3(2057.127f, 1680.078f, 209.4832f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1935, + Painbox.Constructor(Vector3(2057.259f, 1692.107f, 209.4832f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building26() def Building26(): Unit = { // Name: SW_Nerrivik_Tower Type: tower_b GUID: 58, MapID: 26 - LocalBuilding("SW_Nerrivik_Tower", 58, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3282f, 2966f, 243.6248f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2192, CaptureTerminal.Constructor(Vector3(3298.587f, 2965.897f, 263.6238f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "SW_Nerrivik_Tower", + 58, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3282f, 2966f, 243.6248f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2192, + CaptureTerminal.Constructor(Vector3(3298.587f, 2965.897f, 263.6238f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(305, Door.Constructor(Vector3(3294f, 2958f, 245.1448f)), owning_building_guid = 58) LocalObject(306, Door.Constructor(Vector3(3294f, 2958f, 255.1448f)), owning_building_guid = 58) LocalObject(307, Door.Constructor(Vector3(3294f, 2958f, 275.1448f)), owning_building_guid = 58) @@ -1831,12 +5322,42 @@ object Map06 { // Ceryshen LocalObject(310, Door.Constructor(Vector3(3294f, 2974f, 275.1448f)), owning_building_guid = 58) LocalObject(2299, Door.Constructor(Vector3(3293.147f, 2954.794f, 234.9608f)), owning_building_guid = 58) LocalObject(2300, Door.Constructor(Vector3(3293.147f, 2971.204f, 234.9608f)), owning_building_guid = 58) - LocalObject(810, IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 245.0858f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 308) - LocalObject(811, IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 255.0858f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 309) - LocalObject(812, IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 275.0858f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 310) - LocalObject(813, IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 245.0858f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 305) - LocalObject(814, IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 255.0858f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 306) - LocalObject(815, IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 275.0858f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 307) + LocalObject( + 810, + IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 245.0858f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 308 + ) + LocalObject( + 811, + IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 255.0858f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 309 + ) + LocalObject( + 812, + IFFLock.Constructor(Vector3(3291.957f, 2974.811f, 275.0858f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 310 + ) + LocalObject( + 813, + IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 245.0858f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 305 + ) + LocalObject( + 814, + IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 255.0858f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 306 + ) + LocalObject( + 815, + IFFLock.Constructor(Vector3(3296.047f, 2957.189f, 275.0858f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 307 + ) LocalObject(1076, Locker.Constructor(Vector3(3297.716f, 2950.963f, 233.6188f)), owning_building_guid = 58) LocalObject(1077, Locker.Constructor(Vector3(3297.751f, 2972.835f, 233.6188f)), owning_building_guid = 58) LocalObject(1078, Locker.Constructor(Vector3(3299.053f, 2950.963f, 233.6188f)), owning_building_guid = 58) @@ -1845,21 +5366,64 @@ object Map06 { // Ceryshen LocalObject(1081, Locker.Constructor(Vector3(3301.741f, 2972.835f, 233.6188f)), owning_building_guid = 58) LocalObject(1082, Locker.Constructor(Vector3(3303.143f, 2950.963f, 233.6188f)), owning_building_guid = 58) LocalObject(1083, Locker.Constructor(Vector3(3303.143f, 2972.835f, 233.6188f)), owning_building_guid = 58) - LocalObject(1535, Terminal.Constructor(Vector3(3303.446f, 2956.129f, 234.9568f), order_terminal), owning_building_guid = 58) - LocalObject(1536, Terminal.Constructor(Vector3(3303.446f, 2961.853f, 234.9568f), order_terminal), owning_building_guid = 58) - LocalObject(1537, Terminal.Constructor(Vector3(3303.446f, 2967.234f, 234.9568f), order_terminal), owning_building_guid = 58) - LocalObject(2122, SpawnTube.Constructor(Vector3(3292.706f, 2953.742f, 233.1068f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(2123, SpawnTube.Constructor(Vector3(3292.706f, 2970.152f, 233.1068f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1957, Painbox.Constructor(Vector3(3287.493f, 2958.849f, 234.9142f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1958, Painbox.Constructor(Vector3(3299.127f, 2956.078f, 233.7248f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1959, Painbox.Constructor(Vector3(3299.259f, 2968.107f, 233.7248f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 1535, + Terminal.Constructor(Vector3(3303.446f, 2956.129f, 234.9568f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1536, + Terminal.Constructor(Vector3(3303.446f, 2961.853f, 234.9568f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1537, + Terminal.Constructor(Vector3(3303.446f, 2967.234f, 234.9568f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 2122, + SpawnTube.Constructor(Vector3(3292.706f, 2953.742f, 233.1068f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 2123, + SpawnTube.Constructor(Vector3(3292.706f, 2970.152f, 233.1068f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1957, + Painbox.Constructor(Vector3(3287.493f, 2958.849f, 234.9142f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1958, + Painbox.Constructor(Vector3(3299.127f, 2956.078f, 233.7248f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1959, + Painbox.Constructor(Vector3(3299.259f, 2968.107f, 233.7248f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building48() def Building48(): Unit = { // Name: Anguta_Tower Type: tower_b GUID: 59, MapID: 48 - LocalBuilding("Anguta_Tower", 59, 48, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3860f, 4518f, 268.7284f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2197, CaptureTerminal.Constructor(Vector3(3876.587f, 4517.897f, 288.7274f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "Anguta_Tower", + 59, + 48, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3860f, 4518f, 268.7284f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2197, + CaptureTerminal.Constructor(Vector3(3876.587f, 4517.897f, 288.7274f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(364, Door.Constructor(Vector3(3872f, 4510f, 270.2484f)), owning_building_guid = 59) LocalObject(365, Door.Constructor(Vector3(3872f, 4510f, 280.2484f)), owning_building_guid = 59) LocalObject(366, Door.Constructor(Vector3(3872f, 4510f, 300.2484f)), owning_building_guid = 59) @@ -1868,12 +5432,42 @@ object Map06 { // Ceryshen LocalObject(369, Door.Constructor(Vector3(3872f, 4526f, 300.2484f)), owning_building_guid = 59) LocalObject(2315, Door.Constructor(Vector3(3871.147f, 4506.794f, 260.0644f)), owning_building_guid = 59) LocalObject(2316, Door.Constructor(Vector3(3871.147f, 4523.204f, 260.0644f)), owning_building_guid = 59) - LocalObject(854, IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 270.1894f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 367) - LocalObject(855, IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 280.1894f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 368) - LocalObject(856, IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 300.1894f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 369) - LocalObject(857, IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 270.1894f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 364) - LocalObject(858, IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 280.1894f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 365) - LocalObject(859, IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 300.1894f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 366) + LocalObject( + 854, + IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 270.1894f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 367 + ) + LocalObject( + 855, + IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 280.1894f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 368 + ) + LocalObject( + 856, + IFFLock.Constructor(Vector3(3869.957f, 4526.811f, 300.1894f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 369 + ) + LocalObject( + 857, + IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 270.1894f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 364 + ) + LocalObject( + 858, + IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 280.1894f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 365 + ) + LocalObject( + 859, + IFFLock.Constructor(Vector3(3874.047f, 4509.189f, 300.1894f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 366 + ) LocalObject(1140, Locker.Constructor(Vector3(3875.716f, 4502.963f, 258.7224f)), owning_building_guid = 59) LocalObject(1141, Locker.Constructor(Vector3(3875.751f, 4524.835f, 258.7224f)), owning_building_guid = 59) LocalObject(1142, Locker.Constructor(Vector3(3877.053f, 4502.963f, 258.7224f)), owning_building_guid = 59) @@ -1882,21 +5476,64 @@ object Map06 { // Ceryshen LocalObject(1145, Locker.Constructor(Vector3(3879.741f, 4524.835f, 258.7224f)), owning_building_guid = 59) LocalObject(1146, Locker.Constructor(Vector3(3881.143f, 4502.963f, 258.7224f)), owning_building_guid = 59) LocalObject(1147, Locker.Constructor(Vector3(3881.143f, 4524.835f, 258.7224f)), owning_building_guid = 59) - LocalObject(1561, Terminal.Constructor(Vector3(3881.446f, 4508.129f, 260.0604f), order_terminal), owning_building_guid = 59) - LocalObject(1562, Terminal.Constructor(Vector3(3881.446f, 4513.853f, 260.0604f), order_terminal), owning_building_guid = 59) - LocalObject(1563, Terminal.Constructor(Vector3(3881.446f, 4519.234f, 260.0604f), order_terminal), owning_building_guid = 59) - LocalObject(2138, SpawnTube.Constructor(Vector3(3870.706f, 4505.742f, 258.2104f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2139, SpawnTube.Constructor(Vector3(3870.706f, 4522.152f, 258.2104f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1972, Painbox.Constructor(Vector3(3865.493f, 4510.849f, 260.0178f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1973, Painbox.Constructor(Vector3(3877.127f, 4508.078f, 258.8284f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1974, Painbox.Constructor(Vector3(3877.259f, 4520.107f, 258.8284f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 1561, + Terminal.Constructor(Vector3(3881.446f, 4508.129f, 260.0604f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1562, + Terminal.Constructor(Vector3(3881.446f, 4513.853f, 260.0604f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1563, + Terminal.Constructor(Vector3(3881.446f, 4519.234f, 260.0604f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2138, + SpawnTube.Constructor(Vector3(3870.706f, 4505.742f, 258.2104f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2139, + SpawnTube.Constructor(Vector3(3870.706f, 4522.152f, 258.2104f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1972, + Painbox.Constructor(Vector3(3865.493f, 4510.849f, 260.0178f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1973, + Painbox.Constructor(Vector3(3877.127f, 4508.078f, 258.8284f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1974, + Painbox.Constructor(Vector3(3877.259f, 4520.107f, 258.8284f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building31() def Building31(): Unit = { // Name: N_Sedna_Tower Type: tower_b GUID: 60, MapID: 31 - LocalBuilding("N_Sedna_Tower", 60, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4088f, 5718f, 141.2804f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2199, CaptureTerminal.Constructor(Vector3(4104.587f, 5717.897f, 161.2794f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "N_Sedna_Tower", + 60, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4088f, 5718f, 141.2804f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2199, + CaptureTerminal.Constructor(Vector3(4104.587f, 5717.897f, 161.2794f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(409, Door.Constructor(Vector3(4100f, 5710f, 142.8004f)), owning_building_guid = 60) LocalObject(410, Door.Constructor(Vector3(4100f, 5710f, 152.8004f)), owning_building_guid = 60) LocalObject(411, Door.Constructor(Vector3(4100f, 5710f, 172.8004f)), owning_building_guid = 60) @@ -1905,12 +5542,42 @@ object Map06 { // Ceryshen LocalObject(414, Door.Constructor(Vector3(4100f, 5726f, 172.8004f)), owning_building_guid = 60) LocalObject(2325, Door.Constructor(Vector3(4099.147f, 5706.794f, 132.6164f)), owning_building_guid = 60) LocalObject(2326, Door.Constructor(Vector3(4099.147f, 5723.204f, 132.6164f)), owning_building_guid = 60) - LocalObject(886, IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 142.7414f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 412) - LocalObject(887, IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 152.7414f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 413) - LocalObject(888, IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 172.7414f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 414) - LocalObject(889, IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 142.7414f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 409) - LocalObject(890, IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 152.7414f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 410) - LocalObject(891, IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 172.7414f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 411) + LocalObject( + 886, + IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 142.7414f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 412 + ) + LocalObject( + 887, + IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 152.7414f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 413 + ) + LocalObject( + 888, + IFFLock.Constructor(Vector3(4097.957f, 5726.811f, 172.7414f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 414 + ) + LocalObject( + 889, + IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 142.7414f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 409 + ) + LocalObject( + 890, + IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 152.7414f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 410 + ) + LocalObject( + 891, + IFFLock.Constructor(Vector3(4102.047f, 5709.189f, 172.7414f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 411 + ) LocalObject(1189, Locker.Constructor(Vector3(4103.716f, 5702.963f, 131.2744f)), owning_building_guid = 60) LocalObject(1190, Locker.Constructor(Vector3(4103.751f, 5724.835f, 131.2744f)), owning_building_guid = 60) LocalObject(1191, Locker.Constructor(Vector3(4105.053f, 5702.963f, 131.2744f)), owning_building_guid = 60) @@ -1919,21 +5586,64 @@ object Map06 { // Ceryshen LocalObject(1194, Locker.Constructor(Vector3(4107.741f, 5724.835f, 131.2744f)), owning_building_guid = 60) LocalObject(1195, Locker.Constructor(Vector3(4109.143f, 5702.963f, 131.2744f)), owning_building_guid = 60) LocalObject(1196, Locker.Constructor(Vector3(4109.143f, 5724.835f, 131.2744f)), owning_building_guid = 60) - LocalObject(1579, Terminal.Constructor(Vector3(4109.446f, 5708.129f, 132.6124f), order_terminal), owning_building_guid = 60) - LocalObject(1580, Terminal.Constructor(Vector3(4109.446f, 5713.853f, 132.6124f), order_terminal), owning_building_guid = 60) - LocalObject(1581, Terminal.Constructor(Vector3(4109.446f, 5719.234f, 132.6124f), order_terminal), owning_building_guid = 60) - LocalObject(2148, SpawnTube.Constructor(Vector3(4098.706f, 5705.742f, 130.7624f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2149, SpawnTube.Constructor(Vector3(4098.706f, 5722.152f, 130.7624f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1978, Painbox.Constructor(Vector3(4093.493f, 5710.849f, 132.5698f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1979, Painbox.Constructor(Vector3(4105.127f, 5708.078f, 131.3804f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1980, Painbox.Constructor(Vector3(4105.259f, 5720.107f, 131.3804f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1579, + Terminal.Constructor(Vector3(4109.446f, 5708.129f, 132.6124f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1580, + Terminal.Constructor(Vector3(4109.446f, 5713.853f, 132.6124f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1581, + Terminal.Constructor(Vector3(4109.446f, 5719.234f, 132.6124f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2148, + SpawnTube.Constructor(Vector3(4098.706f, 5705.742f, 130.7624f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2149, + SpawnTube.Constructor(Vector3(4098.706f, 5722.152f, 130.7624f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1978, + Painbox.Constructor(Vector3(4093.493f, 5710.849f, 132.5698f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1979, + Painbox.Constructor(Vector3(4105.127f, 5708.078f, 131.3804f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1980, + Painbox.Constructor(Vector3(4105.259f, 5720.107f, 131.3804f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building18() def Building18(): Unit = { // Name: N_Ishundar_Warpgate_Tower Type: tower_b GUID: 61, MapID: 18 - LocalBuilding("N_Ishundar_Warpgate_Tower", 61, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4870f, 2432f, 20.75137f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2205, CaptureTerminal.Constructor(Vector3(4886.587f, 2431.897f, 40.75037f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "N_Ishundar_Warpgate_Tower", + 61, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4870f, 2432f, 20.75137f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2205, + CaptureTerminal.Constructor(Vector3(4886.587f, 2431.897f, 40.75037f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(453, Door.Constructor(Vector3(4882f, 2424f, 22.27137f)), owning_building_guid = 61) LocalObject(454, Door.Constructor(Vector3(4882f, 2424f, 32.27137f)), owning_building_guid = 61) LocalObject(455, Door.Constructor(Vector3(4882f, 2424f, 52.27137f)), owning_building_guid = 61) @@ -1942,12 +5652,42 @@ object Map06 { // Ceryshen LocalObject(458, Door.Constructor(Vector3(4882f, 2440f, 52.27137f)), owning_building_guid = 61) LocalObject(2340, Door.Constructor(Vector3(4881.147f, 2420.794f, 12.08737f)), owning_building_guid = 61) LocalObject(2341, Door.Constructor(Vector3(4881.147f, 2437.204f, 12.08737f)), owning_building_guid = 61) - LocalObject(923, IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 22.21237f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 456) - LocalObject(924, IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 32.21236f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 457) - LocalObject(925, IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 52.21236f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 458) - LocalObject(926, IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 22.21237f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 453) - LocalObject(927, IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 32.21236f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 454) - LocalObject(928, IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 52.21236f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 455) + LocalObject( + 923, + IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 22.21237f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 456 + ) + LocalObject( + 924, + IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 32.21236f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 457 + ) + LocalObject( + 925, + IFFLock.Constructor(Vector3(4879.957f, 2440.811f, 52.21236f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 458 + ) + LocalObject( + 926, + IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 22.21237f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 453 + ) + LocalObject( + 927, + IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 32.21236f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 454 + ) + LocalObject( + 928, + IFFLock.Constructor(Vector3(4884.047f, 2423.189f, 52.21236f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 455 + ) LocalObject(1249, Locker.Constructor(Vector3(4885.716f, 2416.963f, 10.74537f)), owning_building_guid = 61) LocalObject(1250, Locker.Constructor(Vector3(4885.751f, 2438.835f, 10.74537f)), owning_building_guid = 61) LocalObject(1251, Locker.Constructor(Vector3(4887.053f, 2416.963f, 10.74537f)), owning_building_guid = 61) @@ -1956,21 +5696,64 @@ object Map06 { // Ceryshen LocalObject(1254, Locker.Constructor(Vector3(4889.741f, 2438.835f, 10.74537f)), owning_building_guid = 61) LocalObject(1255, Locker.Constructor(Vector3(4891.143f, 2416.963f, 10.74537f)), owning_building_guid = 61) LocalObject(1256, Locker.Constructor(Vector3(4891.143f, 2438.835f, 10.74537f)), owning_building_guid = 61) - LocalObject(1603, Terminal.Constructor(Vector3(4891.446f, 2422.129f, 12.08337f), order_terminal), owning_building_guid = 61) - LocalObject(1604, Terminal.Constructor(Vector3(4891.446f, 2427.853f, 12.08337f), order_terminal), owning_building_guid = 61) - LocalObject(1605, Terminal.Constructor(Vector3(4891.446f, 2433.234f, 12.08337f), order_terminal), owning_building_guid = 61) - LocalObject(2163, SpawnTube.Constructor(Vector3(4880.706f, 2419.742f, 10.23337f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2164, SpawnTube.Constructor(Vector3(4880.706f, 2436.152f, 10.23337f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1996, Painbox.Constructor(Vector3(4875.493f, 2424.849f, 12.04077f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1997, Painbox.Constructor(Vector3(4887.127f, 2422.078f, 10.85137f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1998, Painbox.Constructor(Vector3(4887.259f, 2434.107f, 10.85137f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1603, + Terminal.Constructor(Vector3(4891.446f, 2422.129f, 12.08337f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1604, + Terminal.Constructor(Vector3(4891.446f, 2427.853f, 12.08337f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1605, + Terminal.Constructor(Vector3(4891.446f, 2433.234f, 12.08337f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2163, + SpawnTube.Constructor(Vector3(4880.706f, 2419.742f, 10.23337f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2164, + SpawnTube.Constructor(Vector3(4880.706f, 2436.152f, 10.23337f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1996, + Painbox.Constructor(Vector3(4875.493f, 2424.849f, 12.04077f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1997, + Painbox.Constructor(Vector3(4887.127f, 2422.078f, 10.85137f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1998, + Painbox.Constructor(Vector3(4887.259f, 2434.107f, 10.85137f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building20() def Building20(): Unit = { // Name: N_Tootega_Tower Type: tower_b GUID: 62, MapID: 20 - LocalBuilding("N_Tootega_Tower", 62, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5120f, 3880f, 234.6615f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2207, CaptureTerminal.Constructor(Vector3(5136.587f, 3879.897f, 254.6606f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "N_Tootega_Tower", + 62, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5120f, 3880f, 234.6615f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2207, + CaptureTerminal.Constructor(Vector3(5136.587f, 3879.897f, 254.6606f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(473, Door.Constructor(Vector3(5132f, 3872f, 236.1815f)), owning_building_guid = 62) LocalObject(474, Door.Constructor(Vector3(5132f, 3872f, 246.1815f)), owning_building_guid = 62) LocalObject(475, Door.Constructor(Vector3(5132f, 3872f, 266.1815f)), owning_building_guid = 62) @@ -1979,12 +5762,42 @@ object Map06 { // Ceryshen LocalObject(478, Door.Constructor(Vector3(5132f, 3888f, 266.1815f)), owning_building_guid = 62) LocalObject(2347, Door.Constructor(Vector3(5131.147f, 3868.794f, 225.9975f)), owning_building_guid = 62) LocalObject(2348, Door.Constructor(Vector3(5131.147f, 3885.204f, 225.9975f)), owning_building_guid = 62) - LocalObject(938, IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 236.1225f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 476) - LocalObject(939, IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 246.1225f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 477) - LocalObject(940, IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 266.1226f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 478) - LocalObject(942, IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 236.1225f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 473) - LocalObject(943, IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 246.1225f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 474) - LocalObject(944, IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 266.1226f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 475) + LocalObject( + 938, + IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 236.1225f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 476 + ) + LocalObject( + 939, + IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 246.1225f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 477 + ) + LocalObject( + 940, + IFFLock.Constructor(Vector3(5129.957f, 3888.811f, 266.1226f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 478 + ) + LocalObject( + 942, + IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 236.1225f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 473 + ) + LocalObject( + 943, + IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 246.1225f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 474 + ) + LocalObject( + 944, + IFFLock.Constructor(Vector3(5134.047f, 3871.189f, 266.1226f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 475 + ) LocalObject(1281, Locker.Constructor(Vector3(5135.716f, 3864.963f, 224.6555f)), owning_building_guid = 62) LocalObject(1282, Locker.Constructor(Vector3(5135.751f, 3886.835f, 224.6555f)), owning_building_guid = 62) LocalObject(1283, Locker.Constructor(Vector3(5137.053f, 3864.963f, 224.6555f)), owning_building_guid = 62) @@ -1993,31 +5806,94 @@ object Map06 { // Ceryshen LocalObject(1286, Locker.Constructor(Vector3(5139.741f, 3886.835f, 224.6555f)), owning_building_guid = 62) LocalObject(1287, Locker.Constructor(Vector3(5141.143f, 3864.963f, 224.6555f)), owning_building_guid = 62) LocalObject(1288, Locker.Constructor(Vector3(5141.143f, 3886.835f, 224.6555f)), owning_building_guid = 62) - LocalObject(1613, Terminal.Constructor(Vector3(5141.446f, 3870.129f, 225.9935f), order_terminal), owning_building_guid = 62) - LocalObject(1614, Terminal.Constructor(Vector3(5141.446f, 3875.853f, 225.9935f), order_terminal), owning_building_guid = 62) - LocalObject(1615, Terminal.Constructor(Vector3(5141.446f, 3881.234f, 225.9935f), order_terminal), owning_building_guid = 62) - LocalObject(2170, SpawnTube.Constructor(Vector3(5130.706f, 3867.742f, 224.1435f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2171, SpawnTube.Constructor(Vector3(5130.706f, 3884.152f, 224.1435f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2002, Painbox.Constructor(Vector3(5125.493f, 3872.849f, 225.9509f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2003, Painbox.Constructor(Vector3(5137.127f, 3870.078f, 224.7616f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2004, Painbox.Constructor(Vector3(5137.259f, 3882.107f, 224.7616f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 1613, + Terminal.Constructor(Vector3(5141.446f, 3870.129f, 225.9935f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1614, + Terminal.Constructor(Vector3(5141.446f, 3875.853f, 225.9935f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1615, + Terminal.Constructor(Vector3(5141.446f, 3881.234f, 225.9935f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2170, + SpawnTube.Constructor(Vector3(5130.706f, 3867.742f, 224.1435f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2171, + SpawnTube.Constructor(Vector3(5130.706f, 3884.152f, 224.1435f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2002, + Painbox.Constructor(Vector3(5125.493f, 3872.849f, 225.9509f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2003, + Painbox.Constructor(Vector3(5137.127f, 3870.078f, 224.7616f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2004, + Painbox.Constructor(Vector3(5137.259f, 3882.107f, 224.7616f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building29() def Building29(): Unit = { // Name: E_Forseral_Warpgate_Tower Type: tower_c GUID: 63, MapID: 29 - LocalBuilding("E_Forseral_Warpgate_Tower", 63, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2372f, 5710f, 33.28257f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2185, CaptureTerminal.Constructor(Vector3(2388.587f, 5709.897f, 43.28157f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "E_Forseral_Warpgate_Tower", + 63, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2372f, 5710f, 33.28257f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2185, + CaptureTerminal.Constructor(Vector3(2388.587f, 5709.897f, 43.28157f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(256, Door.Constructor(Vector3(2384f, 5702f, 34.80357f)), owning_building_guid = 63) LocalObject(257, Door.Constructor(Vector3(2384f, 5702f, 54.80257f)), owning_building_guid = 63) LocalObject(258, Door.Constructor(Vector3(2384f, 5718f, 34.80357f)), owning_building_guid = 63) LocalObject(259, Door.Constructor(Vector3(2384f, 5718f, 54.80257f)), owning_building_guid = 63) LocalObject(2279, Door.Constructor(Vector3(2383.146f, 5698.794f, 24.61857f)), owning_building_guid = 63) LocalObject(2280, Door.Constructor(Vector3(2383.146f, 5715.204f, 24.61857f)), owning_building_guid = 63) - LocalObject(769, IFFLock.Constructor(Vector3(2381.957f, 5718.811f, 34.74357f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 258) - LocalObject(770, IFFLock.Constructor(Vector3(2381.957f, 5718.811f, 54.74357f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 259) - LocalObject(771, IFFLock.Constructor(Vector3(2386.047f, 5701.189f, 34.74357f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 256) - LocalObject(772, IFFLock.Constructor(Vector3(2386.047f, 5701.189f, 54.74357f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 257) + LocalObject( + 769, + IFFLock.Constructor(Vector3(2381.957f, 5718.811f, 34.74357f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 258 + ) + LocalObject( + 770, + IFFLock.Constructor(Vector3(2381.957f, 5718.811f, 54.74357f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 259 + ) + LocalObject( + 771, + IFFLock.Constructor(Vector3(2386.047f, 5701.189f, 34.74357f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 256 + ) + LocalObject( + 772, + IFFLock.Constructor(Vector3(2386.047f, 5701.189f, 54.74357f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 257 + ) LocalObject(987, Locker.Constructor(Vector3(2387.716f, 5694.963f, 23.27657f)), owning_building_guid = 63) LocalObject(988, Locker.Constructor(Vector3(2387.751f, 5716.835f, 23.27657f)), owning_building_guid = 63) LocalObject(989, Locker.Constructor(Vector3(2389.053f, 5694.963f, 23.27657f)), owning_building_guid = 63) @@ -2026,39 +5902,126 @@ object Map06 { // Ceryshen LocalObject(992, Locker.Constructor(Vector3(2391.741f, 5716.835f, 23.27657f)), owning_building_guid = 63) LocalObject(993, Locker.Constructor(Vector3(2393.143f, 5694.963f, 23.27657f)), owning_building_guid = 63) LocalObject(994, Locker.Constructor(Vector3(2393.143f, 5716.835f, 23.27657f)), owning_building_guid = 63) - LocalObject(1506, Terminal.Constructor(Vector3(2393.445f, 5700.129f, 24.61457f), order_terminal), owning_building_guid = 63) - LocalObject(1507, Terminal.Constructor(Vector3(2393.445f, 5705.853f, 24.61457f), order_terminal), owning_building_guid = 63) - LocalObject(1508, Terminal.Constructor(Vector3(2393.445f, 5711.234f, 24.61457f), order_terminal), owning_building_guid = 63) - LocalObject(2102, SpawnTube.Constructor(Vector3(2382.706f, 5697.742f, 22.76457f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2103, SpawnTube.Constructor(Vector3(2382.706f, 5714.152f, 22.76457f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1810, ProximityTerminal.Constructor(Vector3(2370.907f, 5704.725f, 60.85257f), pad_landing_tower_frame), owning_building_guid = 63) - LocalObject(1811, Terminal.Constructor(Vector3(2370.907f, 5704.725f, 60.85257f), air_rearm_terminal), owning_building_guid = 63) - LocalObject(1813, ProximityTerminal.Constructor(Vector3(2370.907f, 5715.17f, 60.85257f), pad_landing_tower_frame), owning_building_guid = 63) - LocalObject(1814, Terminal.Constructor(Vector3(2370.907f, 5715.17f, 60.85257f), air_rearm_terminal), owning_building_guid = 63) - LocalObject(1373, FacilityTurret.Constructor(Vector3(2357.07f, 5695.045f, 52.22457f), manned_turret), owning_building_guid = 63) + LocalObject( + 1506, + Terminal.Constructor(Vector3(2393.445f, 5700.129f, 24.61457f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1507, + Terminal.Constructor(Vector3(2393.445f, 5705.853f, 24.61457f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1508, + Terminal.Constructor(Vector3(2393.445f, 5711.234f, 24.61457f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2102, + SpawnTube.Constructor(Vector3(2382.706f, 5697.742f, 22.76457f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2103, + SpawnTube.Constructor(Vector3(2382.706f, 5714.152f, 22.76457f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1810, + ProximityTerminal.Constructor(Vector3(2370.907f, 5704.725f, 60.85257f), pad_landing_tower_frame), + owning_building_guid = 63 + ) + LocalObject( + 1811, + Terminal.Constructor(Vector3(2370.907f, 5704.725f, 60.85257f), air_rearm_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1813, + ProximityTerminal.Constructor(Vector3(2370.907f, 5715.17f, 60.85257f), pad_landing_tower_frame), + owning_building_guid = 63 + ) + LocalObject( + 1814, + Terminal.Constructor(Vector3(2370.907f, 5715.17f, 60.85257f), air_rearm_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1373, + FacilityTurret.Constructor(Vector3(2357.07f, 5695.045f, 52.22457f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1373, 5077) - LocalObject(1374, FacilityTurret.Constructor(Vector3(2395.497f, 5724.957f, 52.22457f), manned_turret), owning_building_guid = 63) + LocalObject( + 1374, + FacilityTurret.Constructor(Vector3(2395.497f, 5724.957f, 52.22457f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1374, 5078) - LocalObject(1936, Painbox.Constructor(Vector3(2376.454f, 5702.849f, 25.30207f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(1937, Painbox.Constructor(Vector3(2388.923f, 5699.54f, 23.38257f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(1938, Painbox.Constructor(Vector3(2389.113f, 5712.022f, 23.38257f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 1936, + Painbox.Constructor(Vector3(2376.454f, 5702.849f, 25.30207f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 1937, + Painbox.Constructor(Vector3(2388.923f, 5699.54f, 23.38257f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 1938, + Painbox.Constructor(Vector3(2389.113f, 5712.022f, 23.38257f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building54() def Building54(): Unit = { // Name: Amerish_Warpgate_Tower Type: tower_c GUID: 64, MapID: 54 - LocalBuilding("Amerish_Warpgate_Tower", 64, 54, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2630f, 2730f, 182.7152f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2187, CaptureTerminal.Constructor(Vector3(2646.587f, 2729.897f, 192.7142f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "Amerish_Warpgate_Tower", + 64, + 54, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2630f, 2730f, 182.7152f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2187, + CaptureTerminal.Constructor(Vector3(2646.587f, 2729.897f, 192.7142f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(264, Door.Constructor(Vector3(2642f, 2722f, 184.2362f)), owning_building_guid = 64) LocalObject(265, Door.Constructor(Vector3(2642f, 2722f, 204.2352f)), owning_building_guid = 64) LocalObject(266, Door.Constructor(Vector3(2642f, 2738f, 184.2362f)), owning_building_guid = 64) LocalObject(267, Door.Constructor(Vector3(2642f, 2738f, 204.2352f)), owning_building_guid = 64) LocalObject(2283, Door.Constructor(Vector3(2641.146f, 2718.794f, 174.0512f)), owning_building_guid = 64) LocalObject(2284, Door.Constructor(Vector3(2641.146f, 2735.204f, 174.0512f)), owning_building_guid = 64) - LocalObject(777, IFFLock.Constructor(Vector3(2639.957f, 2738.811f, 184.1762f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 266) - LocalObject(778, IFFLock.Constructor(Vector3(2639.957f, 2738.811f, 204.1762f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 267) - LocalObject(779, IFFLock.Constructor(Vector3(2644.047f, 2721.189f, 184.1762f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 264) - LocalObject(780, IFFLock.Constructor(Vector3(2644.047f, 2721.189f, 204.1762f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 265) + LocalObject( + 777, + IFFLock.Constructor(Vector3(2639.957f, 2738.811f, 184.1762f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 266 + ) + LocalObject( + 778, + IFFLock.Constructor(Vector3(2639.957f, 2738.811f, 204.1762f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 267 + ) + LocalObject( + 779, + IFFLock.Constructor(Vector3(2644.047f, 2721.189f, 184.1762f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 264 + ) + LocalObject( + 780, + IFFLock.Constructor(Vector3(2644.047f, 2721.189f, 204.1762f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 265 + ) LocalObject(1003, Locker.Constructor(Vector3(2645.716f, 2714.963f, 172.7092f)), owning_building_guid = 64) LocalObject(1004, Locker.Constructor(Vector3(2645.751f, 2736.835f, 172.7092f)), owning_building_guid = 64) LocalObject(1005, Locker.Constructor(Vector3(2647.053f, 2714.963f, 172.7092f)), owning_building_guid = 64) @@ -2067,39 +6030,126 @@ object Map06 { // Ceryshen LocalObject(1008, Locker.Constructor(Vector3(2649.741f, 2736.835f, 172.7092f)), owning_building_guid = 64) LocalObject(1009, Locker.Constructor(Vector3(2651.143f, 2714.963f, 172.7092f)), owning_building_guid = 64) LocalObject(1010, Locker.Constructor(Vector3(2651.143f, 2736.835f, 172.7092f)), owning_building_guid = 64) - LocalObject(1512, Terminal.Constructor(Vector3(2651.445f, 2720.129f, 174.0472f), order_terminal), owning_building_guid = 64) - LocalObject(1513, Terminal.Constructor(Vector3(2651.445f, 2725.853f, 174.0472f), order_terminal), owning_building_guid = 64) - LocalObject(1514, Terminal.Constructor(Vector3(2651.445f, 2731.234f, 174.0472f), order_terminal), owning_building_guid = 64) - LocalObject(2106, SpawnTube.Constructor(Vector3(2640.706f, 2717.742f, 172.1972f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2107, SpawnTube.Constructor(Vector3(2640.706f, 2734.152f, 172.1972f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(1816, ProximityTerminal.Constructor(Vector3(2628.907f, 2724.725f, 210.2852f), pad_landing_tower_frame), owning_building_guid = 64) - LocalObject(1817, Terminal.Constructor(Vector3(2628.907f, 2724.725f, 210.2852f), air_rearm_terminal), owning_building_guid = 64) - LocalObject(1819, ProximityTerminal.Constructor(Vector3(2628.907f, 2735.17f, 210.2852f), pad_landing_tower_frame), owning_building_guid = 64) - LocalObject(1820, Terminal.Constructor(Vector3(2628.907f, 2735.17f, 210.2852f), air_rearm_terminal), owning_building_guid = 64) - LocalObject(1376, FacilityTurret.Constructor(Vector3(2615.07f, 2715.045f, 201.6572f), manned_turret), owning_building_guid = 64) + LocalObject( + 1512, + Terminal.Constructor(Vector3(2651.445f, 2720.129f, 174.0472f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1513, + Terminal.Constructor(Vector3(2651.445f, 2725.853f, 174.0472f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1514, + Terminal.Constructor(Vector3(2651.445f, 2731.234f, 174.0472f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2106, + SpawnTube.Constructor(Vector3(2640.706f, 2717.742f, 172.1972f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2107, + SpawnTube.Constructor(Vector3(2640.706f, 2734.152f, 172.1972f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 1816, + ProximityTerminal.Constructor(Vector3(2628.907f, 2724.725f, 210.2852f), pad_landing_tower_frame), + owning_building_guid = 64 + ) + LocalObject( + 1817, + Terminal.Constructor(Vector3(2628.907f, 2724.725f, 210.2852f), air_rearm_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1819, + ProximityTerminal.Constructor(Vector3(2628.907f, 2735.17f, 210.2852f), pad_landing_tower_frame), + owning_building_guid = 64 + ) + LocalObject( + 1820, + Terminal.Constructor(Vector3(2628.907f, 2735.17f, 210.2852f), air_rearm_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1376, + FacilityTurret.Constructor(Vector3(2615.07f, 2715.045f, 201.6572f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1376, 5079) - LocalObject(1378, FacilityTurret.Constructor(Vector3(2653.497f, 2744.957f, 201.6572f), manned_turret), owning_building_guid = 64) + LocalObject( + 1378, + FacilityTurret.Constructor(Vector3(2653.497f, 2744.957f, 201.6572f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1378, 5080) - LocalObject(1942, Painbox.Constructor(Vector3(2634.454f, 2722.849f, 174.7347f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(1943, Painbox.Constructor(Vector3(2646.923f, 2719.54f, 172.8152f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(1944, Painbox.Constructor(Vector3(2647.113f, 2732.022f, 172.8152f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 1942, + Painbox.Constructor(Vector3(2634.454f, 2722.849f, 174.7347f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 1943, + Painbox.Constructor(Vector3(2646.923f, 2719.54f, 172.8152f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 1944, + Painbox.Constructor(Vector3(2647.113f, 2732.022f, 172.8152f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building16() def Building16(): Unit = { // Name: SW_Tarqaq_Tower Type: tower_c GUID: 65, MapID: 16 - LocalBuilding("SW_Tarqaq_Tower", 65, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2820f, 2072f, 237.9481f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2188, CaptureTerminal.Constructor(Vector3(2836.587f, 2071.897f, 247.9471f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "SW_Tarqaq_Tower", + 65, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2820f, 2072f, 237.9481f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2188, + CaptureTerminal.Constructor(Vector3(2836.587f, 2071.897f, 247.9471f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(268, Door.Constructor(Vector3(2832f, 2064f, 239.4691f)), owning_building_guid = 65) LocalObject(269, Door.Constructor(Vector3(2832f, 2064f, 259.4681f)), owning_building_guid = 65) LocalObject(270, Door.Constructor(Vector3(2832f, 2080f, 239.4691f)), owning_building_guid = 65) LocalObject(271, Door.Constructor(Vector3(2832f, 2080f, 259.4681f)), owning_building_guid = 65) LocalObject(2285, Door.Constructor(Vector3(2831.146f, 2060.794f, 229.2841f)), owning_building_guid = 65) LocalObject(2286, Door.Constructor(Vector3(2831.146f, 2077.204f, 229.2841f)), owning_building_guid = 65) - LocalObject(781, IFFLock.Constructor(Vector3(2829.957f, 2080.811f, 239.4091f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 270) - LocalObject(782, IFFLock.Constructor(Vector3(2829.957f, 2080.811f, 259.4091f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 271) - LocalObject(783, IFFLock.Constructor(Vector3(2834.047f, 2063.189f, 239.4091f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 268) - LocalObject(784, IFFLock.Constructor(Vector3(2834.047f, 2063.189f, 259.4091f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 269) + LocalObject( + 781, + IFFLock.Constructor(Vector3(2829.957f, 2080.811f, 239.4091f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 270 + ) + LocalObject( + 782, + IFFLock.Constructor(Vector3(2829.957f, 2080.811f, 259.4091f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 271 + ) + LocalObject( + 783, + IFFLock.Constructor(Vector3(2834.047f, 2063.189f, 239.4091f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 268 + ) + LocalObject( + 784, + IFFLock.Constructor(Vector3(2834.047f, 2063.189f, 259.4091f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 269 + ) LocalObject(1011, Locker.Constructor(Vector3(2835.716f, 2056.963f, 227.9421f)), owning_building_guid = 65) LocalObject(1012, Locker.Constructor(Vector3(2835.751f, 2078.835f, 227.9421f)), owning_building_guid = 65) LocalObject(1013, Locker.Constructor(Vector3(2837.053f, 2056.963f, 227.9421f)), owning_building_guid = 65) @@ -2108,39 +6158,126 @@ object Map06 { // Ceryshen LocalObject(1016, Locker.Constructor(Vector3(2839.741f, 2078.835f, 227.9421f)), owning_building_guid = 65) LocalObject(1017, Locker.Constructor(Vector3(2841.143f, 2056.963f, 227.9421f)), owning_building_guid = 65) LocalObject(1018, Locker.Constructor(Vector3(2841.143f, 2078.835f, 227.9421f)), owning_building_guid = 65) - LocalObject(1515, Terminal.Constructor(Vector3(2841.445f, 2062.129f, 229.2801f), order_terminal), owning_building_guid = 65) - LocalObject(1516, Terminal.Constructor(Vector3(2841.445f, 2067.853f, 229.2801f), order_terminal), owning_building_guid = 65) - LocalObject(1517, Terminal.Constructor(Vector3(2841.445f, 2073.234f, 229.2801f), order_terminal), owning_building_guid = 65) - LocalObject(2108, SpawnTube.Constructor(Vector3(2830.706f, 2059.742f, 227.4301f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2109, SpawnTube.Constructor(Vector3(2830.706f, 2076.152f, 227.4301f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(1822, ProximityTerminal.Constructor(Vector3(2818.907f, 2066.725f, 265.5181f), pad_landing_tower_frame), owning_building_guid = 65) - LocalObject(1823, Terminal.Constructor(Vector3(2818.907f, 2066.725f, 265.5181f), air_rearm_terminal), owning_building_guid = 65) - LocalObject(1825, ProximityTerminal.Constructor(Vector3(2818.907f, 2077.17f, 265.5181f), pad_landing_tower_frame), owning_building_guid = 65) - LocalObject(1826, Terminal.Constructor(Vector3(2818.907f, 2077.17f, 265.5181f), air_rearm_terminal), owning_building_guid = 65) - LocalObject(1379, FacilityTurret.Constructor(Vector3(2805.07f, 2057.045f, 256.8901f), manned_turret), owning_building_guid = 65) + LocalObject( + 1515, + Terminal.Constructor(Vector3(2841.445f, 2062.129f, 229.2801f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1516, + Terminal.Constructor(Vector3(2841.445f, 2067.853f, 229.2801f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1517, + Terminal.Constructor(Vector3(2841.445f, 2073.234f, 229.2801f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2108, + SpawnTube.Constructor(Vector3(2830.706f, 2059.742f, 227.4301f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2109, + SpawnTube.Constructor(Vector3(2830.706f, 2076.152f, 227.4301f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 1822, + ProximityTerminal.Constructor(Vector3(2818.907f, 2066.725f, 265.5181f), pad_landing_tower_frame), + owning_building_guid = 65 + ) + LocalObject( + 1823, + Terminal.Constructor(Vector3(2818.907f, 2066.725f, 265.5181f), air_rearm_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1825, + ProximityTerminal.Constructor(Vector3(2818.907f, 2077.17f, 265.5181f), pad_landing_tower_frame), + owning_building_guid = 65 + ) + LocalObject( + 1826, + Terminal.Constructor(Vector3(2818.907f, 2077.17f, 265.5181f), air_rearm_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1379, + FacilityTurret.Constructor(Vector3(2805.07f, 2057.045f, 256.8901f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1379, 5081) - LocalObject(1380, FacilityTurret.Constructor(Vector3(2843.497f, 2086.957f, 256.8901f), manned_turret), owning_building_guid = 65) + LocalObject( + 1380, + FacilityTurret.Constructor(Vector3(2843.497f, 2086.957f, 256.8901f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1380, 5082) - LocalObject(1945, Painbox.Constructor(Vector3(2824.454f, 2064.849f, 229.9676f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(1946, Painbox.Constructor(Vector3(2836.923f, 2061.54f, 228.0481f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(1947, Painbox.Constructor(Vector3(2837.113f, 2074.022f, 228.0481f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 1945, + Painbox.Constructor(Vector3(2824.454f, 2064.849f, 229.9676f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 1946, + Painbox.Constructor(Vector3(2836.923f, 2061.54f, 228.0481f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 1947, + Painbox.Constructor(Vector3(2837.113f, 2074.022f, 228.0481f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building24() def Building24(): Unit = { // Name: NW_Nerrivik_Tower Type: tower_c GUID: 66, MapID: 24 - LocalBuilding("NW_Nerrivik_Tower", 66, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3188f, 3972f, 187.1799f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2190, CaptureTerminal.Constructor(Vector3(3204.587f, 3971.897f, 197.1789f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "NW_Nerrivik_Tower", + 66, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3188f, 3972f, 187.1799f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2190, + CaptureTerminal.Constructor(Vector3(3204.587f, 3971.897f, 197.1789f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(291, Door.Constructor(Vector3(3200f, 3964f, 188.7009f)), owning_building_guid = 66) LocalObject(292, Door.Constructor(Vector3(3200f, 3964f, 208.6999f)), owning_building_guid = 66) LocalObject(293, Door.Constructor(Vector3(3200f, 3980f, 188.7009f)), owning_building_guid = 66) LocalObject(294, Door.Constructor(Vector3(3200f, 3980f, 208.6999f)), owning_building_guid = 66) LocalObject(2292, Door.Constructor(Vector3(3199.146f, 3960.794f, 178.5159f)), owning_building_guid = 66) LocalObject(2293, Door.Constructor(Vector3(3199.146f, 3977.204f, 178.5159f)), owning_building_guid = 66) - LocalObject(797, IFFLock.Constructor(Vector3(3197.957f, 3980.811f, 188.6409f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 293) - LocalObject(798, IFFLock.Constructor(Vector3(3197.957f, 3980.811f, 208.6409f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 294) - LocalObject(799, IFFLock.Constructor(Vector3(3202.047f, 3963.189f, 188.6409f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 291) - LocalObject(800, IFFLock.Constructor(Vector3(3202.047f, 3963.189f, 208.6409f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 292) + LocalObject( + 797, + IFFLock.Constructor(Vector3(3197.957f, 3980.811f, 188.6409f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 293 + ) + LocalObject( + 798, + IFFLock.Constructor(Vector3(3197.957f, 3980.811f, 208.6409f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 294 + ) + LocalObject( + 799, + IFFLock.Constructor(Vector3(3202.047f, 3963.189f, 188.6409f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 291 + ) + LocalObject( + 800, + IFFLock.Constructor(Vector3(3202.047f, 3963.189f, 208.6409f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 292 + ) LocalObject(1048, Locker.Constructor(Vector3(3203.716f, 3956.963f, 177.1739f)), owning_building_guid = 66) LocalObject(1049, Locker.Constructor(Vector3(3203.751f, 3978.835f, 177.1739f)), owning_building_guid = 66) LocalObject(1050, Locker.Constructor(Vector3(3205.053f, 3956.963f, 177.1739f)), owning_building_guid = 66) @@ -2149,39 +6286,126 @@ object Map06 { // Ceryshen LocalObject(1053, Locker.Constructor(Vector3(3207.741f, 3978.835f, 177.1739f)), owning_building_guid = 66) LocalObject(1054, Locker.Constructor(Vector3(3209.143f, 3956.963f, 177.1739f)), owning_building_guid = 66) LocalObject(1055, Locker.Constructor(Vector3(3209.143f, 3978.835f, 177.1739f)), owning_building_guid = 66) - LocalObject(1525, Terminal.Constructor(Vector3(3209.445f, 3962.129f, 178.5119f), order_terminal), owning_building_guid = 66) - LocalObject(1526, Terminal.Constructor(Vector3(3209.445f, 3967.853f, 178.5119f), order_terminal), owning_building_guid = 66) - LocalObject(1527, Terminal.Constructor(Vector3(3209.445f, 3973.234f, 178.5119f), order_terminal), owning_building_guid = 66) - LocalObject(2115, SpawnTube.Constructor(Vector3(3198.706f, 3959.742f, 176.6619f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2116, SpawnTube.Constructor(Vector3(3198.706f, 3976.152f, 176.6619f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(1828, ProximityTerminal.Constructor(Vector3(3186.907f, 3966.725f, 214.7499f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(1829, Terminal.Constructor(Vector3(3186.907f, 3966.725f, 214.7499f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(1831, ProximityTerminal.Constructor(Vector3(3186.907f, 3977.17f, 214.7499f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(1832, Terminal.Constructor(Vector3(3186.907f, 3977.17f, 214.7499f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(1388, FacilityTurret.Constructor(Vector3(3173.07f, 3957.045f, 206.1219f), manned_turret), owning_building_guid = 66) + LocalObject( + 1525, + Terminal.Constructor(Vector3(3209.445f, 3962.129f, 178.5119f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1526, + Terminal.Constructor(Vector3(3209.445f, 3967.853f, 178.5119f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1527, + Terminal.Constructor(Vector3(3209.445f, 3973.234f, 178.5119f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2115, + SpawnTube.Constructor(Vector3(3198.706f, 3959.742f, 176.6619f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2116, + SpawnTube.Constructor(Vector3(3198.706f, 3976.152f, 176.6619f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 1828, + ProximityTerminal.Constructor(Vector3(3186.907f, 3966.725f, 214.7499f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 1829, + Terminal.Constructor(Vector3(3186.907f, 3966.725f, 214.7499f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1831, + ProximityTerminal.Constructor(Vector3(3186.907f, 3977.17f, 214.7499f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 1832, + Terminal.Constructor(Vector3(3186.907f, 3977.17f, 214.7499f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1388, + FacilityTurret.Constructor(Vector3(3173.07f, 3957.045f, 206.1219f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1388, 5083) - LocalObject(1390, FacilityTurret.Constructor(Vector3(3211.497f, 3986.957f, 206.1219f), manned_turret), owning_building_guid = 66) + LocalObject( + 1390, + FacilityTurret.Constructor(Vector3(3211.497f, 3986.957f, 206.1219f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1390, 5084) - LocalObject(1951, Painbox.Constructor(Vector3(3192.454f, 3964.849f, 179.1994f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(1952, Painbox.Constructor(Vector3(3204.923f, 3961.54f, 177.2799f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(1953, Painbox.Constructor(Vector3(3205.113f, 3974.022f, 177.2799f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 1951, + Painbox.Constructor(Vector3(3192.454f, 3964.849f, 179.1994f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 1952, + Painbox.Constructor(Vector3(3204.923f, 3961.54f, 177.2799f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 1953, + Painbox.Constructor(Vector3(3205.113f, 3974.022f, 177.2799f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building30() def Building30(): Unit = { // Name: S_Igaluk_Tower Type: tower_c GUID: 67, MapID: 30 - LocalBuilding("S_Igaluk_Tower", 67, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3474f, 5228f, 240.8136f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2194, CaptureTerminal.Constructor(Vector3(3490.587f, 5227.897f, 250.8126f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "S_Igaluk_Tower", + 67, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3474f, 5228f, 240.8136f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2194, + CaptureTerminal.Constructor(Vector3(3490.587f, 5227.897f, 250.8126f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(322, Door.Constructor(Vector3(3486f, 5220f, 242.3346f)), owning_building_guid = 67) LocalObject(323, Door.Constructor(Vector3(3486f, 5220f, 262.3336f)), owning_building_guid = 67) LocalObject(324, Door.Constructor(Vector3(3486f, 5236f, 242.3346f)), owning_building_guid = 67) LocalObject(325, Door.Constructor(Vector3(3486f, 5236f, 262.3336f)), owning_building_guid = 67) LocalObject(2303, Door.Constructor(Vector3(3485.146f, 5216.794f, 232.1496f)), owning_building_guid = 67) LocalObject(2304, Door.Constructor(Vector3(3485.146f, 5233.204f, 232.1496f)), owning_building_guid = 67) - LocalObject(823, IFFLock.Constructor(Vector3(3483.957f, 5236.811f, 242.2746f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 324) - LocalObject(824, IFFLock.Constructor(Vector3(3483.957f, 5236.811f, 262.2746f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 325) - LocalObject(825, IFFLock.Constructor(Vector3(3488.047f, 5219.189f, 242.2746f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 322) - LocalObject(826, IFFLock.Constructor(Vector3(3488.047f, 5219.189f, 262.2746f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 323) + LocalObject( + 823, + IFFLock.Constructor(Vector3(3483.957f, 5236.811f, 242.2746f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 324 + ) + LocalObject( + 824, + IFFLock.Constructor(Vector3(3483.957f, 5236.811f, 262.2746f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 325 + ) + LocalObject( + 825, + IFFLock.Constructor(Vector3(3488.047f, 5219.189f, 242.2746f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 322 + ) + LocalObject( + 826, + IFFLock.Constructor(Vector3(3488.047f, 5219.189f, 262.2746f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 323 + ) LocalObject(1092, Locker.Constructor(Vector3(3489.716f, 5212.963f, 230.8076f)), owning_building_guid = 67) LocalObject(1093, Locker.Constructor(Vector3(3489.751f, 5234.835f, 230.8076f)), owning_building_guid = 67) LocalObject(1094, Locker.Constructor(Vector3(3491.053f, 5212.963f, 230.8076f)), owning_building_guid = 67) @@ -2190,39 +6414,126 @@ object Map06 { // Ceryshen LocalObject(1097, Locker.Constructor(Vector3(3493.741f, 5234.835f, 230.8076f)), owning_building_guid = 67) LocalObject(1098, Locker.Constructor(Vector3(3495.143f, 5212.963f, 230.8076f)), owning_building_guid = 67) LocalObject(1099, Locker.Constructor(Vector3(3495.143f, 5234.835f, 230.8076f)), owning_building_guid = 67) - LocalObject(1541, Terminal.Constructor(Vector3(3495.445f, 5218.129f, 232.1456f), order_terminal), owning_building_guid = 67) - LocalObject(1542, Terminal.Constructor(Vector3(3495.445f, 5223.853f, 232.1456f), order_terminal), owning_building_guid = 67) - LocalObject(1543, Terminal.Constructor(Vector3(3495.445f, 5229.234f, 232.1456f), order_terminal), owning_building_guid = 67) - LocalObject(2126, SpawnTube.Constructor(Vector3(3484.706f, 5215.742f, 230.2956f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2127, SpawnTube.Constructor(Vector3(3484.706f, 5232.152f, 230.2956f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(1834, ProximityTerminal.Constructor(Vector3(3472.907f, 5222.725f, 268.3836f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(1835, Terminal.Constructor(Vector3(3472.907f, 5222.725f, 268.3836f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(1837, ProximityTerminal.Constructor(Vector3(3472.907f, 5233.17f, 268.3836f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(1838, Terminal.Constructor(Vector3(3472.907f, 5233.17f, 268.3836f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(1400, FacilityTurret.Constructor(Vector3(3459.07f, 5213.045f, 259.7556f), manned_turret), owning_building_guid = 67) + LocalObject( + 1541, + Terminal.Constructor(Vector3(3495.445f, 5218.129f, 232.1456f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1542, + Terminal.Constructor(Vector3(3495.445f, 5223.853f, 232.1456f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1543, + Terminal.Constructor(Vector3(3495.445f, 5229.234f, 232.1456f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2126, + SpawnTube.Constructor(Vector3(3484.706f, 5215.742f, 230.2956f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2127, + SpawnTube.Constructor(Vector3(3484.706f, 5232.152f, 230.2956f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 1834, + ProximityTerminal.Constructor(Vector3(3472.907f, 5222.725f, 268.3836f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 1835, + Terminal.Constructor(Vector3(3472.907f, 5222.725f, 268.3836f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1837, + ProximityTerminal.Constructor(Vector3(3472.907f, 5233.17f, 268.3836f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 1838, + Terminal.Constructor(Vector3(3472.907f, 5233.17f, 268.3836f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1400, + FacilityTurret.Constructor(Vector3(3459.07f, 5213.045f, 259.7556f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1400, 5085) - LocalObject(1401, FacilityTurret.Constructor(Vector3(3497.497f, 5242.957f, 259.7556f), manned_turret), owning_building_guid = 67) + LocalObject( + 1401, + FacilityTurret.Constructor(Vector3(3497.497f, 5242.957f, 259.7556f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1401, 5086) - LocalObject(1963, Painbox.Constructor(Vector3(3478.454f, 5220.849f, 232.8331f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(1964, Painbox.Constructor(Vector3(3490.923f, 5217.54f, 230.9136f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(1965, Painbox.Constructor(Vector3(3491.113f, 5230.022f, 230.9136f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 1963, + Painbox.Constructor(Vector3(3478.454f, 5220.849f, 232.8331f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 1964, + Painbox.Constructor(Vector3(3490.923f, 5217.54f, 230.9136f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 1965, + Painbox.Constructor(Vector3(3491.113f, 5230.022f, 230.9136f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building17() def Building17(): Unit = { // Name: E_Keelut_Tower Type: tower_c GUID: 68, MapID: 17 - LocalBuilding("E_Keelut_Tower", 68, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4352f, 1834f, 152.6882f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2202, CaptureTerminal.Constructor(Vector3(4368.587f, 1833.897f, 162.6872f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "E_Keelut_Tower", + 68, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4352f, 1834f, 152.6882f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2202, + CaptureTerminal.Constructor(Vector3(4368.587f, 1833.897f, 162.6872f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(426, Door.Constructor(Vector3(4364f, 1826f, 154.2092f)), owning_building_guid = 68) LocalObject(427, Door.Constructor(Vector3(4364f, 1826f, 174.2082f)), owning_building_guid = 68) LocalObject(428, Door.Constructor(Vector3(4364f, 1842f, 154.2092f)), owning_building_guid = 68) LocalObject(429, Door.Constructor(Vector3(4364f, 1842f, 174.2082f)), owning_building_guid = 68) LocalObject(2331, Door.Constructor(Vector3(4363.146f, 1822.794f, 144.0242f)), owning_building_guid = 68) LocalObject(2332, Door.Constructor(Vector3(4363.146f, 1839.204f, 144.0242f)), owning_building_guid = 68) - LocalObject(900, IFFLock.Constructor(Vector3(4361.957f, 1842.811f, 154.1492f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 428) - LocalObject(901, IFFLock.Constructor(Vector3(4361.957f, 1842.811f, 174.1492f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 429) - LocalObject(904, IFFLock.Constructor(Vector3(4366.047f, 1825.189f, 154.1492f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 426) - LocalObject(905, IFFLock.Constructor(Vector3(4366.047f, 1825.189f, 174.1492f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 427) + LocalObject( + 900, + IFFLock.Constructor(Vector3(4361.957f, 1842.811f, 154.1492f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 428 + ) + LocalObject( + 901, + IFFLock.Constructor(Vector3(4361.957f, 1842.811f, 174.1492f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 429 + ) + LocalObject( + 904, + IFFLock.Constructor(Vector3(4366.047f, 1825.189f, 154.1492f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 426 + ) + LocalObject( + 905, + IFFLock.Constructor(Vector3(4366.047f, 1825.189f, 174.1492f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 427 + ) LocalObject(1213, Locker.Constructor(Vector3(4367.716f, 1818.963f, 142.6822f)), owning_building_guid = 68) LocalObject(1214, Locker.Constructor(Vector3(4367.751f, 1840.835f, 142.6822f)), owning_building_guid = 68) LocalObject(1215, Locker.Constructor(Vector3(4369.053f, 1818.963f, 142.6822f)), owning_building_guid = 68) @@ -2231,39 +6542,126 @@ object Map06 { // Ceryshen LocalObject(1222, Locker.Constructor(Vector3(4371.741f, 1840.835f, 142.6822f)), owning_building_guid = 68) LocalObject(1223, Locker.Constructor(Vector3(4373.143f, 1818.963f, 142.6822f)), owning_building_guid = 68) LocalObject(1224, Locker.Constructor(Vector3(4373.143f, 1840.835f, 142.6822f)), owning_building_guid = 68) - LocalObject(1588, Terminal.Constructor(Vector3(4373.445f, 1824.129f, 144.0202f), order_terminal), owning_building_guid = 68) - LocalObject(1589, Terminal.Constructor(Vector3(4373.445f, 1829.853f, 144.0202f), order_terminal), owning_building_guid = 68) - LocalObject(1590, Terminal.Constructor(Vector3(4373.445f, 1835.234f, 144.0202f), order_terminal), owning_building_guid = 68) - LocalObject(2154, SpawnTube.Constructor(Vector3(4362.706f, 1821.742f, 142.1702f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2155, SpawnTube.Constructor(Vector3(4362.706f, 1838.152f, 142.1702f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(1840, ProximityTerminal.Constructor(Vector3(4350.907f, 1828.725f, 180.2582f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(1841, Terminal.Constructor(Vector3(4350.907f, 1828.725f, 180.2582f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(1843, ProximityTerminal.Constructor(Vector3(4350.907f, 1839.17f, 180.2582f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(1844, Terminal.Constructor(Vector3(4350.907f, 1839.17f, 180.2582f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(1439, FacilityTurret.Constructor(Vector3(4337.07f, 1819.045f, 171.6302f), manned_turret), owning_building_guid = 68) + LocalObject( + 1588, + Terminal.Constructor(Vector3(4373.445f, 1824.129f, 144.0202f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1589, + Terminal.Constructor(Vector3(4373.445f, 1829.853f, 144.0202f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1590, + Terminal.Constructor(Vector3(4373.445f, 1835.234f, 144.0202f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2154, + SpawnTube.Constructor(Vector3(4362.706f, 1821.742f, 142.1702f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2155, + SpawnTube.Constructor(Vector3(4362.706f, 1838.152f, 142.1702f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 1840, + ProximityTerminal.Constructor(Vector3(4350.907f, 1828.725f, 180.2582f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 1841, + Terminal.Constructor(Vector3(4350.907f, 1828.725f, 180.2582f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1843, + ProximityTerminal.Constructor(Vector3(4350.907f, 1839.17f, 180.2582f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 1844, + Terminal.Constructor(Vector3(4350.907f, 1839.17f, 180.2582f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1439, + FacilityTurret.Constructor(Vector3(4337.07f, 1819.045f, 171.6302f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1439, 5087) - LocalObject(1441, FacilityTurret.Constructor(Vector3(4375.497f, 1848.957f, 171.6302f), manned_turret), owning_building_guid = 68) + LocalObject( + 1441, + FacilityTurret.Constructor(Vector3(4375.497f, 1848.957f, 171.6302f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1441, 5088) - LocalObject(1987, Painbox.Constructor(Vector3(4356.454f, 1826.849f, 144.7077f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(1989, Painbox.Constructor(Vector3(4368.923f, 1823.54f, 142.7882f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(1990, Painbox.Constructor(Vector3(4369.113f, 1836.022f, 142.7882f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 1987, + Painbox.Constructor(Vector3(4356.454f, 1826.849f, 144.7077f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 1989, + Painbox.Constructor(Vector3(4368.923f, 1823.54f, 142.7882f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 1990, + Painbox.Constructor(Vector3(4369.113f, 1836.022f, 142.7882f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building49() def Building49(): Unit = { // Name: Akna_Tower Type: tower_c GUID: 69, MapID: 49 - LocalBuilding("Akna_Tower", 69, 49, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4354f, 3990f, 237.69f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2203, CaptureTerminal.Constructor(Vector3(4370.587f, 3989.897f, 247.689f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "Akna_Tower", + 69, + 49, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4354f, 3990f, 237.69f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2203, + CaptureTerminal.Constructor(Vector3(4370.587f, 3989.897f, 247.689f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(430, Door.Constructor(Vector3(4366f, 3982f, 239.211f)), owning_building_guid = 69) LocalObject(431, Door.Constructor(Vector3(4366f, 3982f, 259.2101f)), owning_building_guid = 69) LocalObject(432, Door.Constructor(Vector3(4366f, 3998f, 239.211f)), owning_building_guid = 69) LocalObject(433, Door.Constructor(Vector3(4366f, 3998f, 259.2101f)), owning_building_guid = 69) LocalObject(2333, Door.Constructor(Vector3(4365.146f, 3978.794f, 229.026f)), owning_building_guid = 69) LocalObject(2334, Door.Constructor(Vector3(4365.146f, 3995.204f, 229.026f)), owning_building_guid = 69) - LocalObject(902, IFFLock.Constructor(Vector3(4363.957f, 3998.811f, 239.151f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 432) - LocalObject(903, IFFLock.Constructor(Vector3(4363.957f, 3998.811f, 259.1511f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 433) - LocalObject(906, IFFLock.Constructor(Vector3(4368.047f, 3981.189f, 239.151f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 430) - LocalObject(907, IFFLock.Constructor(Vector3(4368.047f, 3981.189f, 259.1511f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 431) + LocalObject( + 902, + IFFLock.Constructor(Vector3(4363.957f, 3998.811f, 239.151f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 432 + ) + LocalObject( + 903, + IFFLock.Constructor(Vector3(4363.957f, 3998.811f, 259.1511f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 433 + ) + LocalObject( + 906, + IFFLock.Constructor(Vector3(4368.047f, 3981.189f, 239.151f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 430 + ) + LocalObject( + 907, + IFFLock.Constructor(Vector3(4368.047f, 3981.189f, 259.1511f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 431 + ) LocalObject(1217, Locker.Constructor(Vector3(4369.716f, 3974.963f, 227.6841f)), owning_building_guid = 69) LocalObject(1218, Locker.Constructor(Vector3(4369.751f, 3996.835f, 227.6841f)), owning_building_guid = 69) LocalObject(1219, Locker.Constructor(Vector3(4371.053f, 3974.963f, 227.6841f)), owning_building_guid = 69) @@ -2272,39 +6670,126 @@ object Map06 { // Ceryshen LocalObject(1226, Locker.Constructor(Vector3(4373.741f, 3996.835f, 227.6841f)), owning_building_guid = 69) LocalObject(1227, Locker.Constructor(Vector3(4375.143f, 3974.963f, 227.6841f)), owning_building_guid = 69) LocalObject(1228, Locker.Constructor(Vector3(4375.143f, 3996.835f, 227.6841f)), owning_building_guid = 69) - LocalObject(1591, Terminal.Constructor(Vector3(4375.445f, 3980.129f, 229.022f), order_terminal), owning_building_guid = 69) - LocalObject(1592, Terminal.Constructor(Vector3(4375.445f, 3985.853f, 229.022f), order_terminal), owning_building_guid = 69) - LocalObject(1593, Terminal.Constructor(Vector3(4375.445f, 3991.234f, 229.022f), order_terminal), owning_building_guid = 69) - LocalObject(2156, SpawnTube.Constructor(Vector3(4364.706f, 3977.742f, 227.172f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2157, SpawnTube.Constructor(Vector3(4364.706f, 3994.152f, 227.172f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(1846, ProximityTerminal.Constructor(Vector3(4352.907f, 3984.725f, 265.26f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(1847, Terminal.Constructor(Vector3(4352.907f, 3984.725f, 265.26f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(1849, ProximityTerminal.Constructor(Vector3(4352.907f, 3995.17f, 265.26f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(1850, Terminal.Constructor(Vector3(4352.907f, 3995.17f, 265.26f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(1440, FacilityTurret.Constructor(Vector3(4339.07f, 3975.045f, 256.632f), manned_turret), owning_building_guid = 69) + LocalObject( + 1591, + Terminal.Constructor(Vector3(4375.445f, 3980.129f, 229.022f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1592, + Terminal.Constructor(Vector3(4375.445f, 3985.853f, 229.022f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1593, + Terminal.Constructor(Vector3(4375.445f, 3991.234f, 229.022f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2156, + SpawnTube.Constructor(Vector3(4364.706f, 3977.742f, 227.172f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2157, + SpawnTube.Constructor(Vector3(4364.706f, 3994.152f, 227.172f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 1846, + ProximityTerminal.Constructor(Vector3(4352.907f, 3984.725f, 265.26f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 1847, + Terminal.Constructor(Vector3(4352.907f, 3984.725f, 265.26f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1849, + ProximityTerminal.Constructor(Vector3(4352.907f, 3995.17f, 265.26f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 1850, + Terminal.Constructor(Vector3(4352.907f, 3995.17f, 265.26f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1440, + FacilityTurret.Constructor(Vector3(4339.07f, 3975.045f, 256.632f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1440, 5089) - LocalObject(1442, FacilityTurret.Constructor(Vector3(4377.497f, 4004.957f, 256.632f), manned_turret), owning_building_guid = 69) + LocalObject( + 1442, + FacilityTurret.Constructor(Vector3(4377.497f, 4004.957f, 256.632f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1442, 5090) - LocalObject(1988, Painbox.Constructor(Vector3(4358.454f, 3982.849f, 229.7095f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(1991, Painbox.Constructor(Vector3(4370.923f, 3979.54f, 227.7901f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(1992, Painbox.Constructor(Vector3(4371.113f, 3992.022f, 227.7901f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 1988, + Painbox.Constructor(Vector3(4358.454f, 3982.849f, 229.7095f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 1991, + Painbox.Constructor(Vector3(4370.923f, 3979.54f, 227.7901f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 1992, + Painbox.Constructor(Vector3(4371.113f, 3992.022f, 227.7901f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building51() def Building51(): Unit = { // Name: Hossin_Warpgate_Tower Type: tower_c GUID: 70, MapID: 51 - LocalBuilding("Hossin_Warpgate_Tower", 70, 51, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5342f, 4332f, 28.19361f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2208, CaptureTerminal.Constructor(Vector3(5358.587f, 4331.897f, 38.19261f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "Hossin_Warpgate_Tower", + 70, + 51, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5342f, 4332f, 28.19361f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2208, + CaptureTerminal.Constructor(Vector3(5358.587f, 4331.897f, 38.19261f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(481, Door.Constructor(Vector3(5354f, 4324f, 29.71461f)), owning_building_guid = 70) LocalObject(482, Door.Constructor(Vector3(5354f, 4324f, 49.71361f)), owning_building_guid = 70) LocalObject(483, Door.Constructor(Vector3(5354f, 4340f, 29.71461f)), owning_building_guid = 70) LocalObject(484, Door.Constructor(Vector3(5354f, 4340f, 49.71361f)), owning_building_guid = 70) LocalObject(2349, Door.Constructor(Vector3(5353.146f, 4320.794f, 19.52961f)), owning_building_guid = 70) LocalObject(2350, Door.Constructor(Vector3(5353.146f, 4337.204f, 19.52961f)), owning_building_guid = 70) - LocalObject(947, IFFLock.Constructor(Vector3(5351.957f, 4340.811f, 29.65461f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 483) - LocalObject(948, IFFLock.Constructor(Vector3(5351.957f, 4340.811f, 49.65461f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 484) - LocalObject(949, IFFLock.Constructor(Vector3(5356.047f, 4323.189f, 29.65461f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 481) - LocalObject(950, IFFLock.Constructor(Vector3(5356.047f, 4323.189f, 49.65461f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 482) + LocalObject( + 947, + IFFLock.Constructor(Vector3(5351.957f, 4340.811f, 29.65461f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 483 + ) + LocalObject( + 948, + IFFLock.Constructor(Vector3(5351.957f, 4340.811f, 49.65461f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 484 + ) + LocalObject( + 949, + IFFLock.Constructor(Vector3(5356.047f, 4323.189f, 29.65461f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 481 + ) + LocalObject( + 950, + IFFLock.Constructor(Vector3(5356.047f, 4323.189f, 49.65461f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 482 + ) LocalObject(1294, Locker.Constructor(Vector3(5357.716f, 4316.963f, 18.18761f)), owning_building_guid = 70) LocalObject(1295, Locker.Constructor(Vector3(5357.751f, 4338.835f, 18.18761f)), owning_building_guid = 70) LocalObject(1296, Locker.Constructor(Vector3(5359.053f, 4316.963f, 18.18761f)), owning_building_guid = 70) @@ -2313,39 +6798,126 @@ object Map06 { // Ceryshen LocalObject(1299, Locker.Constructor(Vector3(5361.741f, 4338.835f, 18.18761f)), owning_building_guid = 70) LocalObject(1300, Locker.Constructor(Vector3(5363.143f, 4316.963f, 18.18761f)), owning_building_guid = 70) LocalObject(1301, Locker.Constructor(Vector3(5363.143f, 4338.835f, 18.18761f)), owning_building_guid = 70) - LocalObject(1616, Terminal.Constructor(Vector3(5363.445f, 4322.129f, 19.52561f), order_terminal), owning_building_guid = 70) - LocalObject(1617, Terminal.Constructor(Vector3(5363.445f, 4327.853f, 19.52561f), order_terminal), owning_building_guid = 70) - LocalObject(1618, Terminal.Constructor(Vector3(5363.445f, 4333.234f, 19.52561f), order_terminal), owning_building_guid = 70) - LocalObject(2172, SpawnTube.Constructor(Vector3(5352.706f, 4319.742f, 17.67561f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2173, SpawnTube.Constructor(Vector3(5352.706f, 4336.152f, 17.67561f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(1852, ProximityTerminal.Constructor(Vector3(5340.907f, 4326.725f, 55.76361f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(1853, Terminal.Constructor(Vector3(5340.907f, 4326.725f, 55.76361f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(1855, ProximityTerminal.Constructor(Vector3(5340.907f, 4337.17f, 55.76361f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(1856, Terminal.Constructor(Vector3(5340.907f, 4337.17f, 55.76361f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(1456, FacilityTurret.Constructor(Vector3(5327.07f, 4317.045f, 47.13561f), manned_turret), owning_building_guid = 70) + LocalObject( + 1616, + Terminal.Constructor(Vector3(5363.445f, 4322.129f, 19.52561f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1617, + Terminal.Constructor(Vector3(5363.445f, 4327.853f, 19.52561f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1618, + Terminal.Constructor(Vector3(5363.445f, 4333.234f, 19.52561f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2172, + SpawnTube.Constructor(Vector3(5352.706f, 4319.742f, 17.67561f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2173, + SpawnTube.Constructor(Vector3(5352.706f, 4336.152f, 17.67561f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 1852, + ProximityTerminal.Constructor(Vector3(5340.907f, 4326.725f, 55.76361f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 1853, + Terminal.Constructor(Vector3(5340.907f, 4326.725f, 55.76361f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1855, + ProximityTerminal.Constructor(Vector3(5340.907f, 4337.17f, 55.76361f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 1856, + Terminal.Constructor(Vector3(5340.907f, 4337.17f, 55.76361f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1456, + FacilityTurret.Constructor(Vector3(5327.07f, 4317.045f, 47.13561f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1456, 5091) - LocalObject(1457, FacilityTurret.Constructor(Vector3(5365.497f, 4346.957f, 47.13561f), manned_turret), owning_building_guid = 70) + LocalObject( + 1457, + FacilityTurret.Constructor(Vector3(5365.497f, 4346.957f, 47.13561f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1457, 5092) - LocalObject(2005, Painbox.Constructor(Vector3(5346.454f, 4324.849f, 20.21311f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2006, Painbox.Constructor(Vector3(5358.923f, 4321.54f, 18.29361f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2007, Painbox.Constructor(Vector3(5359.113f, 4334.022f, 18.29361f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 2005, + Painbox.Constructor(Vector3(5346.454f, 4324.849f, 20.21311f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2006, + Painbox.Constructor(Vector3(5358.923f, 4321.54f, 18.29361f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2007, + Painbox.Constructor(Vector3(5359.113f, 4334.022f, 18.29361f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building19() def Building19(): Unit = { // Name: NE_Ishundar_Warpgate_Tower Type: tower_c GUID: 71, MapID: 19 - LocalBuilding("NE_Ishundar_Warpgate_Tower", 71, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5694f, 2434f, 20.01801f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2209, CaptureTerminal.Constructor(Vector3(5710.587f, 2433.897f, 30.01701f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "NE_Ishundar_Warpgate_Tower", + 71, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5694f, 2434f, 20.01801f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2209, + CaptureTerminal.Constructor(Vector3(5710.587f, 2433.897f, 30.01701f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(485, Door.Constructor(Vector3(5706f, 2426f, 21.53901f)), owning_building_guid = 71) LocalObject(486, Door.Constructor(Vector3(5706f, 2426f, 41.53801f)), owning_building_guid = 71) LocalObject(487, Door.Constructor(Vector3(5706f, 2442f, 21.53901f)), owning_building_guid = 71) LocalObject(488, Door.Constructor(Vector3(5706f, 2442f, 41.53801f)), owning_building_guid = 71) LocalObject(2351, Door.Constructor(Vector3(5705.146f, 2422.794f, 11.35401f)), owning_building_guid = 71) LocalObject(2352, Door.Constructor(Vector3(5705.146f, 2439.204f, 11.35401f)), owning_building_guid = 71) - LocalObject(951, IFFLock.Constructor(Vector3(5703.957f, 2442.811f, 21.47901f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 487) - LocalObject(952, IFFLock.Constructor(Vector3(5703.957f, 2442.811f, 41.479f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 488) - LocalObject(953, IFFLock.Constructor(Vector3(5708.047f, 2425.189f, 21.47901f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 485) - LocalObject(954, IFFLock.Constructor(Vector3(5708.047f, 2425.189f, 41.479f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 486) + LocalObject( + 951, + IFFLock.Constructor(Vector3(5703.957f, 2442.811f, 21.47901f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 487 + ) + LocalObject( + 952, + IFFLock.Constructor(Vector3(5703.957f, 2442.811f, 41.479f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 488 + ) + LocalObject( + 953, + IFFLock.Constructor(Vector3(5708.047f, 2425.189f, 21.47901f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 485 + ) + LocalObject( + 954, + IFFLock.Constructor(Vector3(5708.047f, 2425.189f, 41.479f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 486 + ) LocalObject(1302, Locker.Constructor(Vector3(5709.716f, 2418.963f, 10.01201f)), owning_building_guid = 71) LocalObject(1303, Locker.Constructor(Vector3(5709.751f, 2440.835f, 10.01201f)), owning_building_guid = 71) LocalObject(1304, Locker.Constructor(Vector3(5711.053f, 2418.963f, 10.01201f)), owning_building_guid = 71) @@ -2354,39 +6926,126 @@ object Map06 { // Ceryshen LocalObject(1307, Locker.Constructor(Vector3(5713.741f, 2440.835f, 10.01201f)), owning_building_guid = 71) LocalObject(1308, Locker.Constructor(Vector3(5715.143f, 2418.963f, 10.01201f)), owning_building_guid = 71) LocalObject(1309, Locker.Constructor(Vector3(5715.143f, 2440.835f, 10.01201f)), owning_building_guid = 71) - LocalObject(1619, Terminal.Constructor(Vector3(5715.445f, 2424.129f, 11.35001f), order_terminal), owning_building_guid = 71) - LocalObject(1620, Terminal.Constructor(Vector3(5715.445f, 2429.853f, 11.35001f), order_terminal), owning_building_guid = 71) - LocalObject(1621, Terminal.Constructor(Vector3(5715.445f, 2435.234f, 11.35001f), order_terminal), owning_building_guid = 71) - LocalObject(2174, SpawnTube.Constructor(Vector3(5704.706f, 2421.742f, 9.500006f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2175, SpawnTube.Constructor(Vector3(5704.706f, 2438.152f, 9.500006f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(1858, ProximityTerminal.Constructor(Vector3(5692.907f, 2428.725f, 47.58801f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(1859, Terminal.Constructor(Vector3(5692.907f, 2428.725f, 47.58801f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(1861, ProximityTerminal.Constructor(Vector3(5692.907f, 2439.17f, 47.58801f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(1862, Terminal.Constructor(Vector3(5692.907f, 2439.17f, 47.58801f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(1458, FacilityTurret.Constructor(Vector3(5679.07f, 2419.045f, 38.96001f), manned_turret), owning_building_guid = 71) + LocalObject( + 1619, + Terminal.Constructor(Vector3(5715.445f, 2424.129f, 11.35001f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1620, + Terminal.Constructor(Vector3(5715.445f, 2429.853f, 11.35001f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1621, + Terminal.Constructor(Vector3(5715.445f, 2435.234f, 11.35001f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2174, + SpawnTube.Constructor(Vector3(5704.706f, 2421.742f, 9.500006f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2175, + SpawnTube.Constructor(Vector3(5704.706f, 2438.152f, 9.500006f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 1858, + ProximityTerminal.Constructor(Vector3(5692.907f, 2428.725f, 47.58801f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 1859, + Terminal.Constructor(Vector3(5692.907f, 2428.725f, 47.58801f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1861, + ProximityTerminal.Constructor(Vector3(5692.907f, 2439.17f, 47.58801f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 1862, + Terminal.Constructor(Vector3(5692.907f, 2439.17f, 47.58801f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1458, + FacilityTurret.Constructor(Vector3(5679.07f, 2419.045f, 38.96001f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1458, 5093) - LocalObject(1459, FacilityTurret.Constructor(Vector3(5717.497f, 2448.957f, 38.96001f), manned_turret), owning_building_guid = 71) + LocalObject( + 1459, + FacilityTurret.Constructor(Vector3(5717.497f, 2448.957f, 38.96001f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1459, 5094) - LocalObject(2008, Painbox.Constructor(Vector3(5698.454f, 2426.849f, 12.03751f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2009, Painbox.Constructor(Vector3(5710.923f, 2423.54f, 10.11801f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2010, Painbox.Constructor(Vector3(5711.113f, 2436.022f, 10.11801f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 2008, + Painbox.Constructor(Vector3(5698.454f, 2426.849f, 12.03751f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2009, + Painbox.Constructor(Vector3(5710.923f, 2423.54f, 10.11801f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2010, + Painbox.Constructor(Vector3(5711.113f, 2436.022f, 10.11801f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building55() def Building55(): Unit = { // Name: Pinga_Tower Type: tower_c GUID: 72, MapID: 55 - LocalBuilding("Pinga_Tower", 72, 55, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5768f, 3202f, 97.4664f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2210, CaptureTerminal.Constructor(Vector3(5784.587f, 3201.897f, 107.4654f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "Pinga_Tower", + 72, + 55, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5768f, 3202f, 97.4664f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2210, + CaptureTerminal.Constructor(Vector3(5784.587f, 3201.897f, 107.4654f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(489, Door.Constructor(Vector3(5780f, 3194f, 98.9874f)), owning_building_guid = 72) LocalObject(490, Door.Constructor(Vector3(5780f, 3194f, 118.9864f)), owning_building_guid = 72) LocalObject(491, Door.Constructor(Vector3(5780f, 3210f, 98.9874f)), owning_building_guid = 72) LocalObject(492, Door.Constructor(Vector3(5780f, 3210f, 118.9864f)), owning_building_guid = 72) LocalObject(2353, Door.Constructor(Vector3(5779.146f, 3190.794f, 88.8024f)), owning_building_guid = 72) LocalObject(2354, Door.Constructor(Vector3(5779.146f, 3207.204f, 88.8024f)), owning_building_guid = 72) - LocalObject(955, IFFLock.Constructor(Vector3(5777.957f, 3210.811f, 98.9274f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 491) - LocalObject(956, IFFLock.Constructor(Vector3(5777.957f, 3210.811f, 118.9274f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 492) - LocalObject(957, IFFLock.Constructor(Vector3(5782.047f, 3193.189f, 98.9274f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 489) - LocalObject(958, IFFLock.Constructor(Vector3(5782.047f, 3193.189f, 118.9274f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 490) + LocalObject( + 955, + IFFLock.Constructor(Vector3(5777.957f, 3210.811f, 98.9274f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 491 + ) + LocalObject( + 956, + IFFLock.Constructor(Vector3(5777.957f, 3210.811f, 118.9274f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 492 + ) + LocalObject( + 957, + IFFLock.Constructor(Vector3(5782.047f, 3193.189f, 98.9274f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 489 + ) + LocalObject( + 958, + IFFLock.Constructor(Vector3(5782.047f, 3193.189f, 118.9274f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 490 + ) LocalObject(1310, Locker.Constructor(Vector3(5783.716f, 3186.963f, 87.4604f)), owning_building_guid = 72) LocalObject(1311, Locker.Constructor(Vector3(5783.751f, 3208.835f, 87.4604f)), owning_building_guid = 72) LocalObject(1312, Locker.Constructor(Vector3(5785.053f, 3186.963f, 87.4604f)), owning_building_guid = 72) @@ -2395,39 +7054,126 @@ object Map06 { // Ceryshen LocalObject(1315, Locker.Constructor(Vector3(5787.741f, 3208.835f, 87.4604f)), owning_building_guid = 72) LocalObject(1316, Locker.Constructor(Vector3(5789.143f, 3186.963f, 87.4604f)), owning_building_guid = 72) LocalObject(1317, Locker.Constructor(Vector3(5789.143f, 3208.835f, 87.4604f)), owning_building_guid = 72) - LocalObject(1622, Terminal.Constructor(Vector3(5789.445f, 3192.129f, 88.7984f), order_terminal), owning_building_guid = 72) - LocalObject(1623, Terminal.Constructor(Vector3(5789.445f, 3197.853f, 88.7984f), order_terminal), owning_building_guid = 72) - LocalObject(1624, Terminal.Constructor(Vector3(5789.445f, 3203.234f, 88.7984f), order_terminal), owning_building_guid = 72) - LocalObject(2176, SpawnTube.Constructor(Vector3(5778.706f, 3189.742f, 86.9484f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2177, SpawnTube.Constructor(Vector3(5778.706f, 3206.152f, 86.9484f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(1864, ProximityTerminal.Constructor(Vector3(5766.907f, 3196.725f, 125.0364f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(1865, Terminal.Constructor(Vector3(5766.907f, 3196.725f, 125.0364f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(1867, ProximityTerminal.Constructor(Vector3(5766.907f, 3207.17f, 125.0364f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(1868, Terminal.Constructor(Vector3(5766.907f, 3207.17f, 125.0364f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(1460, FacilityTurret.Constructor(Vector3(5753.07f, 3187.045f, 116.4084f), manned_turret), owning_building_guid = 72) + LocalObject( + 1622, + Terminal.Constructor(Vector3(5789.445f, 3192.129f, 88.7984f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1623, + Terminal.Constructor(Vector3(5789.445f, 3197.853f, 88.7984f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1624, + Terminal.Constructor(Vector3(5789.445f, 3203.234f, 88.7984f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2176, + SpawnTube.Constructor(Vector3(5778.706f, 3189.742f, 86.9484f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2177, + SpawnTube.Constructor(Vector3(5778.706f, 3206.152f, 86.9484f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 1864, + ProximityTerminal.Constructor(Vector3(5766.907f, 3196.725f, 125.0364f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 1865, + Terminal.Constructor(Vector3(5766.907f, 3196.725f, 125.0364f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1867, + ProximityTerminal.Constructor(Vector3(5766.907f, 3207.17f, 125.0364f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 1868, + Terminal.Constructor(Vector3(5766.907f, 3207.17f, 125.0364f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1460, + FacilityTurret.Constructor(Vector3(5753.07f, 3187.045f, 116.4084f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1460, 5095) - LocalObject(1463, FacilityTurret.Constructor(Vector3(5791.497f, 3216.957f, 116.4084f), manned_turret), owning_building_guid = 72) + LocalObject( + 1463, + FacilityTurret.Constructor(Vector3(5791.497f, 3216.957f, 116.4084f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1463, 5096) - LocalObject(2011, Painbox.Constructor(Vector3(5772.454f, 3194.849f, 89.4859f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2012, Painbox.Constructor(Vector3(5784.923f, 3191.54f, 87.5664f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2013, Painbox.Constructor(Vector3(5785.113f, 3204.022f, 87.5664f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 2011, + Painbox.Constructor(Vector3(5772.454f, 3194.849f, 89.4859f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2012, + Painbox.Constructor(Vector3(5784.923f, 3191.54f, 87.5664f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2013, + Painbox.Constructor(Vector3(5785.113f, 3204.022f, 87.5664f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building21() def Building21(): Unit = { // Name: NE_Pinga_Tower Type: tower_c GUID: 73, MapID: 21 - LocalBuilding("NE_Pinga_Tower", 73, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6320f, 3992f, 37.5779f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2211, CaptureTerminal.Constructor(Vector3(6336.587f, 3991.897f, 47.5769f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "NE_Pinga_Tower", + 73, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6320f, 3992f, 37.5779f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2211, + CaptureTerminal.Constructor(Vector3(6336.587f, 3991.897f, 47.5769f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(508, Door.Constructor(Vector3(6332f, 3984f, 39.0989f)), owning_building_guid = 73) LocalObject(509, Door.Constructor(Vector3(6332f, 3984f, 59.0979f)), owning_building_guid = 73) LocalObject(510, Door.Constructor(Vector3(6332f, 4000f, 39.0989f)), owning_building_guid = 73) LocalObject(511, Door.Constructor(Vector3(6332f, 4000f, 59.0979f)), owning_building_guid = 73) LocalObject(2358, Door.Constructor(Vector3(6331.146f, 3980.794f, 28.9139f)), owning_building_guid = 73) LocalObject(2359, Door.Constructor(Vector3(6331.146f, 3997.204f, 28.9139f)), owning_building_guid = 73) - LocalObject(967, IFFLock.Constructor(Vector3(6329.957f, 4000.811f, 39.0389f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 510) - LocalObject(968, IFFLock.Constructor(Vector3(6329.957f, 4000.811f, 59.0389f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 511) - LocalObject(969, IFFLock.Constructor(Vector3(6334.047f, 3983.189f, 39.0389f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 508) - LocalObject(970, IFFLock.Constructor(Vector3(6334.047f, 3983.189f, 59.0389f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 509) + LocalObject( + 967, + IFFLock.Constructor(Vector3(6329.957f, 4000.811f, 39.0389f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 510 + ) + LocalObject( + 968, + IFFLock.Constructor(Vector3(6329.957f, 4000.811f, 59.0389f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 511 + ) + LocalObject( + 969, + IFFLock.Constructor(Vector3(6334.047f, 3983.189f, 39.0389f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 508 + ) + LocalObject( + 970, + IFFLock.Constructor(Vector3(6334.047f, 3983.189f, 59.0389f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 509 + ) LocalObject(1330, Locker.Constructor(Vector3(6335.716f, 3976.963f, 27.5719f)), owning_building_guid = 73) LocalObject(1331, Locker.Constructor(Vector3(6335.751f, 3998.835f, 27.5719f)), owning_building_guid = 73) LocalObject(1332, Locker.Constructor(Vector3(6337.053f, 3976.963f, 27.5719f)), owning_building_guid = 73) @@ -2436,46 +7182,122 @@ object Map06 { // Ceryshen LocalObject(1335, Locker.Constructor(Vector3(6339.741f, 3998.835f, 27.5719f)), owning_building_guid = 73) LocalObject(1336, Locker.Constructor(Vector3(6341.143f, 3976.963f, 27.5719f)), owning_building_guid = 73) LocalObject(1337, Locker.Constructor(Vector3(6341.143f, 3998.835f, 27.5719f)), owning_building_guid = 73) - LocalObject(1629, Terminal.Constructor(Vector3(6341.445f, 3982.129f, 28.9099f), order_terminal), owning_building_guid = 73) - LocalObject(1630, Terminal.Constructor(Vector3(6341.445f, 3987.853f, 28.9099f), order_terminal), owning_building_guid = 73) - LocalObject(1631, Terminal.Constructor(Vector3(6341.445f, 3993.234f, 28.9099f), order_terminal), owning_building_guid = 73) - LocalObject(2181, SpawnTube.Constructor(Vector3(6330.706f, 3979.742f, 27.0599f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2182, SpawnTube.Constructor(Vector3(6330.706f, 3996.152f, 27.0599f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(1870, ProximityTerminal.Constructor(Vector3(6318.907f, 3986.725f, 65.1479f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(1871, Terminal.Constructor(Vector3(6318.907f, 3986.725f, 65.1479f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(1873, ProximityTerminal.Constructor(Vector3(6318.907f, 3997.17f, 65.1479f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(1874, Terminal.Constructor(Vector3(6318.907f, 3997.17f, 65.1479f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(1468, FacilityTurret.Constructor(Vector3(6305.07f, 3977.045f, 56.5199f), manned_turret), owning_building_guid = 73) + LocalObject( + 1629, + Terminal.Constructor(Vector3(6341.445f, 3982.129f, 28.9099f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1630, + Terminal.Constructor(Vector3(6341.445f, 3987.853f, 28.9099f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1631, + Terminal.Constructor(Vector3(6341.445f, 3993.234f, 28.9099f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2181, + SpawnTube.Constructor(Vector3(6330.706f, 3979.742f, 27.0599f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2182, + SpawnTube.Constructor(Vector3(6330.706f, 3996.152f, 27.0599f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 1870, + ProximityTerminal.Constructor(Vector3(6318.907f, 3986.725f, 65.1479f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 1871, + Terminal.Constructor(Vector3(6318.907f, 3986.725f, 65.1479f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1873, + ProximityTerminal.Constructor(Vector3(6318.907f, 3997.17f, 65.1479f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 1874, + Terminal.Constructor(Vector3(6318.907f, 3997.17f, 65.1479f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1468, + FacilityTurret.Constructor(Vector3(6305.07f, 3977.045f, 56.5199f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1468, 5097) - LocalObject(1469, FacilityTurret.Constructor(Vector3(6343.497f, 4006.957f, 56.5199f), manned_turret), owning_building_guid = 73) + LocalObject( + 1469, + FacilityTurret.Constructor(Vector3(6343.497f, 4006.957f, 56.5199f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1469, 5098) - LocalObject(2014, Painbox.Constructor(Vector3(6324.454f, 3984.849f, 29.5974f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2015, Painbox.Constructor(Vector3(6336.923f, 3981.54f, 27.6779f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2016, Painbox.Constructor(Vector3(6337.113f, 3994.022f, 27.6779f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 2014, + Painbox.Constructor(Vector3(6324.454f, 3984.849f, 29.5974f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2015, + Painbox.Constructor(Vector3(6336.923f, 3981.54f, 27.6779f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2016, + Painbox.Constructor(Vector3(6337.113f, 3994.022f, 27.6779f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building12() def Building12(): Unit = { // Name: WG_Ceryshen_to_Forseral Type: warpgate GUID: 74, MapID: 12 - LocalBuilding("WG_Ceryshen_to_Forseral", 74, 12, FoundationBuilder(WarpGate.Structure(Vector3(2190f, 5506f, 30.16494f)))) + LocalBuilding( + "WG_Ceryshen_to_Forseral", + 74, + 12, + FoundationBuilder(WarpGate.Structure(Vector3(2190f, 5506f, 30.16494f))) + ) } Building11() def Building11(): Unit = { // Name: WG_Ceryshen_to_Amerish Type: warpgate GUID: 75, MapID: 11 - LocalBuilding("WG_Ceryshen_to_Amerish", 75, 11, FoundationBuilder(WarpGate.Structure(Vector3(2588f, 2998f, 186.0018f)))) + LocalBuilding( + "WG_Ceryshen_to_Amerish", + 75, + 11, + FoundationBuilder(WarpGate.Structure(Vector3(2588f, 2998f, 186.0018f))) + ) } Building10() def Building10(): Unit = { // Name: WG_Ceryshen_to_Ishundar Type: warpgate GUID: 76, MapID: 10 - LocalBuilding("WG_Ceryshen_to_Ishundar", 76, 10, FoundationBuilder(WarpGate.Structure(Vector3(4970f, 2082f, 15.07462f)))) + LocalBuilding( + "WG_Ceryshen_to_Ishundar", + 76, + 10, + FoundationBuilder(WarpGate.Structure(Vector3(4970f, 2082f, 15.07462f))) + ) } Building13() def Building13(): Unit = { // Name: WG_Ceryshen_to_Hossin Type: warpgate GUID: 77, MapID: 13 - LocalBuilding("WG_Ceryshen_to_Hossin", 77, 13, FoundationBuilder(WarpGate.Structure(Vector3(5028f, 4498f, 40.75579f)))) + LocalBuilding( + "WG_Ceryshen_to_Hossin", + 77, + 13, + FoundationBuilder(WarpGate.Structure(Vector3(5028f, 4498f, 40.75579f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map07.scala b/pslogin/src/main/scala/zonemaps/Map07.scala index b115a867..2c88f59e 100644 --- a/pslogin/src/main/scala/zonemaps/Map07.scala +++ b/pslogin/src/main/scala/zonemaps/Map07.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map07 { // Esamir Building8() def Building8(): Unit = { // Name: Freyr Type: amp_station GUID: 1, MapID: 8 - LocalBuilding("Freyr", 1, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2908f, 3746f, 55.58336f), Vector3(0f, 0f, 72f), amp_station))) - LocalObject(213, CaptureTerminal.Constructor(Vector3(2906.966f, 3742.828f, 67.09136f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Freyr", + 1, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2908f, 3746f, 55.58336f), + Vector3(0f, 0f, 72f), + amp_station + ) + ) + ) + LocalObject( + 213, + CaptureTerminal.Constructor(Vector3(2906.966f, 3742.828f, 67.09136f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(164, Door.Constructor(Vector3(2901.594f, 3748.306f, 68.48537f)), owning_building_guid = 1) LocalObject(165, Door.Constructor(Vector3(2914.537f, 3744.098f, 68.48537f)), owning_building_guid = 1) LocalObject(379, Door.Constructor(Vector3(2808.43f, 3698.441f, 57.30436f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map07 { // Esamir LocalObject(2663, Door.Constructor(Vector3(2897.924f, 3728.952f, 50.13736f)), owning_building_guid = 1) LocalObject(2664, Door.Constructor(Vector3(2904.856f, 3726.7f, 50.13736f)), owning_building_guid = 1) LocalObject(2665, Door.Constructor(Vector3(2911.792f, 3724.446f, 50.13736f)), owning_building_guid = 1) - LocalObject(937, IFFLock.Constructor(Vector3(2914.946f, 3777.3f, 57.26336f), Vector3(0, 0, 18)), owning_building_guid = 1, door_guid = 893) - LocalObject(1017, IFFLock.Constructor(Vector3(2807.013f, 3696.752f, 57.24336f), Vector3(0, 0, 288)), owning_building_guid = 1, door_guid = 379) - LocalObject(1018, IFFLock.Constructor(Vector3(2872.825f, 3755.28f, 62.24536f), Vector3(0, 0, 288)), owning_building_guid = 1, door_guid = 384) - LocalObject(1019, IFFLock.Constructor(Vector3(2878.677f, 3761.355f, 67.24436f), Vector3(0, 0, 18)), owning_building_guid = 1, door_guid = 386) - LocalObject(1020, IFFLock.Constructor(Vector3(2879.267f, 3749.927f, 67.24436f), Vector3(0, 0, 198)), owning_building_guid = 1, door_guid = 385) - LocalObject(1021, IFFLock.Constructor(Vector3(2895.303f, 3735.855f, 49.61936f), Vector3(0, 0, 288)), owning_building_guid = 1, door_guid = 707) - LocalObject(1022, IFFLock.Constructor(Vector3(2895.727f, 3700.369f, 42.11936f), Vector3(0, 0, 18)), owning_building_guid = 1, door_guid = 708) - LocalObject(1023, IFFLock.Constructor(Vector3(2920.617f, 3740.912f, 42.11936f), Vector3(0, 0, 198)), owning_building_guid = 1, door_guid = 713) - LocalObject(1024, IFFLock.Constructor(Vector3(2920.765f, 3730.888f, 49.61936f), Vector3(0, 0, 108)), owning_building_guid = 1, door_guid = 715) - LocalObject(1025, IFFLock.Constructor(Vector3(2936.825f, 3742.461f, 67.24436f), Vector3(0, 0, 18)), owning_building_guid = 1, door_guid = 389) - LocalObject(1026, IFFLock.Constructor(Vector3(2937.412f, 3731.035f, 67.24436f), Vector3(0, 0, 198)), owning_building_guid = 1, door_guid = 388) - LocalObject(1027, IFFLock.Constructor(Vector3(2943.154f, 3736.725f, 62.24536f), Vector3(0, 0, 108)), owning_building_guid = 1, door_guid = 391) + LocalObject( + 937, + IFFLock.Constructor(Vector3(2914.946f, 3777.3f, 57.26336f), Vector3(0, 0, 18)), + owning_building_guid = 1, + door_guid = 893 + ) + LocalObject( + 1017, + IFFLock.Constructor(Vector3(2807.013f, 3696.752f, 57.24336f), Vector3(0, 0, 288)), + owning_building_guid = 1, + door_guid = 379 + ) + LocalObject( + 1018, + IFFLock.Constructor(Vector3(2872.825f, 3755.28f, 62.24536f), Vector3(0, 0, 288)), + owning_building_guid = 1, + door_guid = 384 + ) + LocalObject( + 1019, + IFFLock.Constructor(Vector3(2878.677f, 3761.355f, 67.24436f), Vector3(0, 0, 18)), + owning_building_guid = 1, + door_guid = 386 + ) + LocalObject( + 1020, + IFFLock.Constructor(Vector3(2879.267f, 3749.927f, 67.24436f), Vector3(0, 0, 198)), + owning_building_guid = 1, + door_guid = 385 + ) + LocalObject( + 1021, + IFFLock.Constructor(Vector3(2895.303f, 3735.855f, 49.61936f), Vector3(0, 0, 288)), + owning_building_guid = 1, + door_guid = 707 + ) + LocalObject( + 1022, + IFFLock.Constructor(Vector3(2895.727f, 3700.369f, 42.11936f), Vector3(0, 0, 18)), + owning_building_guid = 1, + door_guid = 708 + ) + LocalObject( + 1023, + IFFLock.Constructor(Vector3(2920.617f, 3740.912f, 42.11936f), Vector3(0, 0, 198)), + owning_building_guid = 1, + door_guid = 713 + ) + LocalObject( + 1024, + IFFLock.Constructor(Vector3(2920.765f, 3730.888f, 49.61936f), Vector3(0, 0, 108)), + owning_building_guid = 1, + door_guid = 715 + ) + LocalObject( + 1025, + IFFLock.Constructor(Vector3(2936.825f, 3742.461f, 67.24436f), Vector3(0, 0, 18)), + owning_building_guid = 1, + door_guid = 389 + ) + LocalObject( + 1026, + IFFLock.Constructor(Vector3(2937.412f, 3731.035f, 67.24436f), Vector3(0, 0, 198)), + owning_building_guid = 1, + door_guid = 388 + ) + LocalObject( + 1027, + IFFLock.Constructor(Vector3(2943.154f, 3736.725f, 62.24536f), Vector3(0, 0, 108)), + owning_building_guid = 1, + door_guid = 391 + ) LocalObject(1307, Locker.Constructor(Vector3(2902.815f, 3749.992f, 40.78336f)), owning_building_guid = 1) LocalObject(1308, Locker.Constructor(Vector3(2903.224f, 3751.251f, 40.78336f)), owning_building_guid = 1) LocalObject(1309, Locker.Constructor(Vector3(2903.637f, 3752.521f, 40.78336f)), owning_building_guid = 1) @@ -94,65 +170,258 @@ object Map07 { // Esamir LocalObject(1316, Locker.Constructor(Vector3(2918.933f, 3734.8f, 48.54436f)), owning_building_guid = 1) LocalObject(1317, Locker.Constructor(Vector3(2919.288f, 3735.891f, 48.54436f)), owning_building_guid = 1) LocalObject(1318, Locker.Constructor(Vector3(2919.643f, 3736.984f, 48.54436f)), owning_building_guid = 1) - LocalObject(1806, Terminal.Constructor(Vector3(2886.623f, 3752.944f, 57.11236f), order_terminal), owning_building_guid = 1) - LocalObject(1807, Terminal.Constructor(Vector3(2901.061f, 3724.631f, 57.11236f), order_terminal), owning_building_guid = 1) - LocalObject(1808, Terminal.Constructor(Vector3(2907.367f, 3740.584f, 49.87336f), order_terminal), owning_building_guid = 1) - LocalObject(1809, Terminal.Constructor(Vector3(2910.971f, 3739.414f, 49.87336f), order_terminal), owning_building_guid = 1) - LocalObject(1810, Terminal.Constructor(Vector3(2914.52f, 3738.26f, 49.87336f), order_terminal), owning_building_guid = 1) - LocalObject(1811, Terminal.Constructor(Vector3(2929.376f, 3739.052f, 57.11236f), order_terminal), owning_building_guid = 1) - LocalObject(2576, Terminal.Constructor(Vector3(2855.705f, 3712.583f, 49.84036f), spawn_terminal), owning_building_guid = 1) - LocalObject(2577, Terminal.Constructor(Vector3(2885.947f, 3727.991f, 42.34036f), spawn_terminal), owning_building_guid = 1) - LocalObject(2578, Terminal.Constructor(Vector3(2900.386f, 3728.465f, 50.41736f), spawn_terminal), owning_building_guid = 1) - LocalObject(2579, Terminal.Constructor(Vector3(2907.316f, 3726.21f, 50.41736f), spawn_terminal), owning_building_guid = 1) - LocalObject(2580, Terminal.Constructor(Vector3(2910.579f, 3739.375f, 62.31136f), spawn_terminal), owning_building_guid = 1) - LocalObject(2581, Terminal.Constructor(Vector3(2914.252f, 3723.96f, 50.41736f), spawn_terminal), owning_building_guid = 1) - LocalObject(2808, Terminal.Constructor(Vector3(2814.754f, 3725.906f, 57.68536f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1728, VehicleSpawnPad.Constructor(Vector3(2827.752f, 3721.777f, 53.52836f), mb_pad_creation, Vector3(0, 0, 108)), owning_building_guid = 1, terminal_guid = 2808) + LocalObject( + 1806, + Terminal.Constructor(Vector3(2886.623f, 3752.944f, 57.11236f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1807, + Terminal.Constructor(Vector3(2901.061f, 3724.631f, 57.11236f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1808, + Terminal.Constructor(Vector3(2907.367f, 3740.584f, 49.87336f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1809, + Terminal.Constructor(Vector3(2910.971f, 3739.414f, 49.87336f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1810, + Terminal.Constructor(Vector3(2914.52f, 3738.26f, 49.87336f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1811, + Terminal.Constructor(Vector3(2929.376f, 3739.052f, 57.11236f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2576, + Terminal.Constructor(Vector3(2855.705f, 3712.583f, 49.84036f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2577, + Terminal.Constructor(Vector3(2885.947f, 3727.991f, 42.34036f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2578, + Terminal.Constructor(Vector3(2900.386f, 3728.465f, 50.41736f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2579, + Terminal.Constructor(Vector3(2907.316f, 3726.21f, 50.41736f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2580, + Terminal.Constructor(Vector3(2910.579f, 3739.375f, 62.31136f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2581, + Terminal.Constructor(Vector3(2914.252f, 3723.96f, 50.41736f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2808, + Terminal.Constructor(Vector3(2814.754f, 3725.906f, 57.68536f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1728, + VehicleSpawnPad.Constructor(Vector3(2827.752f, 3721.777f, 53.52836f), mb_pad_creation, Vector3(0, 0, 108)), + owning_building_guid = 1, + terminal_guid = 2808 + ) LocalObject(2426, ResourceSilo.Constructor(Vector3(3005.579f, 3769.649f, 62.81836f)), owning_building_guid = 1) - LocalObject(2461, SpawnTube.Constructor(Vector3(2898.789f, 3728.208f, 48.28336f), Vector3(0, 0, 288)), owning_building_guid = 1) - LocalObject(2462, SpawnTube.Constructor(Vector3(2905.721f, 3725.956f, 48.28336f), Vector3(0, 0, 288)), owning_building_guid = 1) - LocalObject(2463, SpawnTube.Constructor(Vector3(2912.655f, 3723.703f, 48.28336f), Vector3(0, 0, 288)), owning_building_guid = 1) - LocalObject(1749, ProximityTerminal.Constructor(Vector3(2901.192f, 3725.029f, 60.78336f), medical_terminal), owning_building_guid = 1) - LocalObject(1750, ProximityTerminal.Constructor(Vector3(2905.264f, 3755.767f, 40.78336f), medical_terminal), owning_building_guid = 1) - LocalObject(2018, ProximityTerminal.Constructor(Vector3(2861.617f, 3789.037f, 66.24936f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2019, Terminal.Constructor(Vector3(2861.617f, 3789.037f, 66.24936f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2021, ProximityTerminal.Constructor(Vector3(2871.506f, 3697.664f, 64.08836f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2022, Terminal.Constructor(Vector3(2871.506f, 3697.664f, 64.08836f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2024, ProximityTerminal.Constructor(Vector3(2942.12f, 3786.83f, 64.08836f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2025, Terminal.Constructor(Vector3(2942.12f, 3786.83f, 64.08836f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2027, ProximityTerminal.Constructor(Vector3(2980.462f, 3731.181f, 64.11136f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2028, Terminal.Constructor(Vector3(2980.462f, 3731.181f, 64.11136f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2350, ProximityTerminal.Constructor(Vector3(2886.146f, 3679.397f, 54.98336f), repair_silo), owning_building_guid = 1) - LocalObject(2351, Terminal.Constructor(Vector3(2886.146f, 3679.397f, 54.98336f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2354, ProximityTerminal.Constructor(Vector3(2926.885f, 3805.396f, 54.98336f), repair_silo), owning_building_guid = 1) - LocalObject(2355, Terminal.Constructor(Vector3(2926.885f, 3805.396f, 54.98336f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1637, FacilityTurret.Constructor(Vector3(2783.378f, 3701.719f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 2461, + SpawnTube.Constructor(Vector3(2898.789f, 3728.208f, 48.28336f), Vector3(0, 0, 288)), + owning_building_guid = 1 + ) + LocalObject( + 2462, + SpawnTube.Constructor(Vector3(2905.721f, 3725.956f, 48.28336f), Vector3(0, 0, 288)), + owning_building_guid = 1 + ) + LocalObject( + 2463, + SpawnTube.Constructor(Vector3(2912.655f, 3723.703f, 48.28336f), Vector3(0, 0, 288)), + owning_building_guid = 1 + ) + LocalObject( + 1749, + ProximityTerminal.Constructor(Vector3(2901.192f, 3725.029f, 60.78336f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1750, + ProximityTerminal.Constructor(Vector3(2905.264f, 3755.767f, 40.78336f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2018, + ProximityTerminal.Constructor(Vector3(2861.617f, 3789.037f, 66.24936f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2019, + Terminal.Constructor(Vector3(2861.617f, 3789.037f, 66.24936f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2021, + ProximityTerminal.Constructor(Vector3(2871.506f, 3697.664f, 64.08836f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2022, + Terminal.Constructor(Vector3(2871.506f, 3697.664f, 64.08836f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2024, + ProximityTerminal.Constructor(Vector3(2942.12f, 3786.83f, 64.08836f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2025, + Terminal.Constructor(Vector3(2942.12f, 3786.83f, 64.08836f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2027, + ProximityTerminal.Constructor(Vector3(2980.462f, 3731.181f, 64.11136f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2028, + Terminal.Constructor(Vector3(2980.462f, 3731.181f, 64.11136f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2350, + ProximityTerminal.Constructor(Vector3(2886.146f, 3679.397f, 54.98336f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2351, + Terminal.Constructor(Vector3(2886.146f, 3679.397f, 54.98336f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2354, + ProximityTerminal.Constructor(Vector3(2926.885f, 3805.396f, 54.98336f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2355, + Terminal.Constructor(Vector3(2926.885f, 3805.396f, 54.98336f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1637, + FacilityTurret.Constructor(Vector3(2783.378f, 3701.719f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1637, 5000) - LocalObject(1638, FacilityTurret.Constructor(Vector3(2830.812f, 3847.673f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 1638, + FacilityTurret.Constructor(Vector3(2830.812f, 3847.673f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1638, 5001) - LocalObject(1639, FacilityTurret.Constructor(Vector3(2891.777f, 3830.196f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 1639, + FacilityTurret.Constructor(Vector3(2891.777f, 3830.196f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1639, 5002) - LocalObject(1640, FacilityTurret.Constructor(Vector3(2975.193f, 3639.425f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 1640, + FacilityTurret.Constructor(Vector3(2975.193f, 3639.425f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1640, 5003) - LocalObject(1641, FacilityTurret.Constructor(Vector3(2995.726f, 3695.407f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 1641, + FacilityTurret.Constructor(Vector3(2995.726f, 3695.407f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1641, 5004) - LocalObject(1642, FacilityTurret.Constructor(Vector3(3022.615f, 3785.343f, 64.29137f), manned_turret), owning_building_guid = 1) + LocalObject( + 1642, + FacilityTurret.Constructor(Vector3(3022.615f, 3785.343f, 64.29137f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1642, 5005) - LocalObject(2169, Painbox.Constructor(Vector3(2896.051f, 3686.953f, 45.65436f), painbox), owning_building_guid = 1) - LocalObject(2182, Painbox.Constructor(Vector3(2905.514f, 3733.774f, 53.23176f), painbox_continuous), owning_building_guid = 1) - LocalObject(2195, Painbox.Constructor(Vector3(2898.369f, 3700.967f, 42.24236f), painbox_door_radius), owning_building_guid = 1) - LocalObject(2216, Painbox.Constructor(Vector3(2895.485f, 3737.526f, 49.54786f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2217, Painbox.Constructor(Vector3(2904.69f, 3748.618f, 51.46196f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2218, Painbox.Constructor(Vector3(2920.52f, 3729.315f, 49.48336f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 2169, + Painbox.Constructor(Vector3(2896.051f, 3686.953f, 45.65436f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 2182, + Painbox.Constructor(Vector3(2905.514f, 3733.774f, 53.23176f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2195, + Painbox.Constructor(Vector3(2898.369f, 3700.967f, 42.24236f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 2216, + Painbox.Constructor(Vector3(2895.485f, 3737.526f, 49.54786f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2217, + Painbox.Constructor(Vector3(2904.69f, 3748.618f, 51.46196f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2218, + Painbox.Constructor(Vector3(2920.52f, 3729.315f, 49.48336f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(285, Generator.Constructor(Vector3(2892.188f, 3684.312f, 39.48936f)), owning_building_guid = 1) - LocalObject(272, Terminal.Constructor(Vector3(2894.675f, 3692.117f, 40.78336f), gen_control), owning_building_guid = 1) + LocalObject( + 272, + Terminal.Constructor(Vector3(2894.675f, 3692.117f, 40.78336f), gen_control), + owning_building_guid = 1 + ) } Building11() def Building11(): Unit = { // Name: Kvasir Type: amp_station GUID: 4, MapID: 11 - LocalBuilding("Kvasir", 4, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4016f, 1636f, 68.37366f), Vector3(0f, 0f, 278f), amp_station))) - LocalObject(218, CaptureTerminal.Constructor(Vector3(4015.539f, 1639.304f, 79.88167f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Kvasir", + 4, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4016f, 1636f, 68.37366f), + Vector3(0f, 0f, 278f), + amp_station + ) + ) + ) + LocalObject( + 218, + CaptureTerminal.Constructor(Vector3(4015.539f, 1639.304f, 79.88167f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(166, Door.Constructor(Vector3(4009.291f, 1634.844f, 81.27567f)), owning_building_guid = 4) LocalObject(167, Door.Constructor(Vector3(4022.769f, 1636.735f, 81.27567f)), owning_building_guid = 4) LocalObject(479, Door.Constructor(Vector3(3935.038f, 1606.946f, 78.08867f)), owning_building_guid = 4) @@ -198,18 +467,78 @@ object Map07 { // Esamir LocalObject(2690, Door.Constructor(Vector3(4003.143f, 1653.71f, 62.92767f)), owning_building_guid = 4) LocalObject(2691, Door.Constructor(Vector3(4010.365f, 1654.725f, 62.92767f)), owning_building_guid = 4) LocalObject(2692, Door.Constructor(Vector3(4017.583f, 1655.74f, 62.92767f)), owning_building_guid = 4) - LocalObject(942, IFFLock.Constructor(Vector3(4023.478f, 1604.822f, 70.05367f), Vector3(0, 0, 172)), owning_building_guid = 4, door_guid = 898) - LocalObject(1090, IFFLock.Constructor(Vector3(3980.337f, 1628.926f, 75.03567f), Vector3(0, 0, 262)), owning_building_guid = 4, door_guid = 490) - LocalObject(1091, IFFLock.Constructor(Vector3(3983.004f, 1636.557f, 80.03467f), Vector3(0, 0, 352)), owning_building_guid = 4, door_guid = 491) - LocalObject(1094, IFFLock.Constructor(Vector3(3988.541f, 1626.544f, 80.03467f), Vector3(0, 0, 172)), owning_building_guid = 4, door_guid = 492) - LocalObject(1095, IFFLock.Constructor(Vector3(3997.902f, 1643.987f, 62.40966f), Vector3(0, 0, 262)), owning_building_guid = 4, door_guid = 806) - LocalObject(1096, IFFLock.Constructor(Vector3(4002.429f, 1635.042f, 54.90966f), Vector3(0, 0, 352)), owning_building_guid = 4, door_guid = 808) - LocalObject(1097, IFFLock.Constructor(Vector3(4007.028f, 1682.393f, 54.90966f), Vector3(0, 0, 172)), owning_building_guid = 4, door_guid = 809) - LocalObject(1098, IFFLock.Constructor(Vector3(4022.965f, 1650.684f, 62.40966f), Vector3(0, 0, 82)), owning_building_guid = 4, door_guid = 814) - LocalObject(1100, IFFLock.Constructor(Vector3(4043.546f, 1645.066f, 80.03467f), Vector3(0, 0, 352)), owning_building_guid = 4, door_guid = 497) - LocalObject(1101, IFFLock.Constructor(Vector3(4049.087f, 1635.054f, 80.03467f), Vector3(0, 0, 172)), owning_building_guid = 4, door_guid = 498) - LocalObject(1102, IFFLock.Constructor(Vector3(4051.683f, 1643.079f, 75.03567f), Vector3(0, 0, 82)), owning_building_guid = 4, door_guid = 499) - LocalObject(1103, IFFLock.Constructor(Vector3(4085.178f, 1724.533f, 70.03367f), Vector3(0, 0, 82)), owning_building_guid = 4, door_guid = 502) + LocalObject( + 942, + IFFLock.Constructor(Vector3(4023.478f, 1604.822f, 70.05367f), Vector3(0, 0, 172)), + owning_building_guid = 4, + door_guid = 898 + ) + LocalObject( + 1090, + IFFLock.Constructor(Vector3(3980.337f, 1628.926f, 75.03567f), Vector3(0, 0, 262)), + owning_building_guid = 4, + door_guid = 490 + ) + LocalObject( + 1091, + IFFLock.Constructor(Vector3(3983.004f, 1636.557f, 80.03467f), Vector3(0, 0, 352)), + owning_building_guid = 4, + door_guid = 491 + ) + LocalObject( + 1094, + IFFLock.Constructor(Vector3(3988.541f, 1626.544f, 80.03467f), Vector3(0, 0, 172)), + owning_building_guid = 4, + door_guid = 492 + ) + LocalObject( + 1095, + IFFLock.Constructor(Vector3(3997.902f, 1643.987f, 62.40966f), Vector3(0, 0, 262)), + owning_building_guid = 4, + door_guid = 806 + ) + LocalObject( + 1096, + IFFLock.Constructor(Vector3(4002.429f, 1635.042f, 54.90966f), Vector3(0, 0, 352)), + owning_building_guid = 4, + door_guid = 808 + ) + LocalObject( + 1097, + IFFLock.Constructor(Vector3(4007.028f, 1682.393f, 54.90966f), Vector3(0, 0, 172)), + owning_building_guid = 4, + door_guid = 809 + ) + LocalObject( + 1098, + IFFLock.Constructor(Vector3(4022.965f, 1650.684f, 62.40966f), Vector3(0, 0, 82)), + owning_building_guid = 4, + door_guid = 814 + ) + LocalObject( + 1100, + IFFLock.Constructor(Vector3(4043.546f, 1645.066f, 80.03467f), Vector3(0, 0, 352)), + owning_building_guid = 4, + door_guid = 497 + ) + LocalObject( + 1101, + IFFLock.Constructor(Vector3(4049.087f, 1635.054f, 80.03467f), Vector3(0, 0, 172)), + owning_building_guid = 4, + door_guid = 498 + ) + LocalObject( + 1102, + IFFLock.Constructor(Vector3(4051.683f, 1643.079f, 75.03567f), Vector3(0, 0, 82)), + owning_building_guid = 4, + door_guid = 499 + ) + LocalObject( + 1103, + IFFLock.Constructor(Vector3(4085.178f, 1724.533f, 70.03367f), Vector3(0, 0, 82)), + owning_building_guid = 4, + door_guid = 502 + ) LocalObject(1415, Locker.Constructor(Vector3(4001.102f, 1642.426f, 61.33466f)), owning_building_guid = 4) LocalObject(1416, Locker.Constructor(Vector3(4001.264f, 1641.273f, 61.33466f)), owning_building_guid = 4) LocalObject(1417, Locker.Constructor(Vector3(4001.423f, 1640.138f, 61.33466f)), owning_building_guid = 4) @@ -222,65 +551,253 @@ object Map07 { // Esamir LocalObject(1424, Locker.Constructor(Vector3(4023.783f, 1624.92f, 53.57367f)), owning_building_guid = 4) LocalObject(1425, Locker.Constructor(Vector3(4023.969f, 1623.597f, 53.57367f)), owning_building_guid = 4) LocalObject(1426, Locker.Constructor(Vector3(4024.155f, 1622.273f, 53.57367f)), owning_building_guid = 4) - LocalObject(1853, Terminal.Constructor(Vector3(3993.741f, 1632.874f, 69.90266f), order_terminal), owning_building_guid = 4) - LocalObject(1854, Terminal.Constructor(Vector3(4006.748f, 1640.098f, 62.66367f), order_terminal), owning_building_guid = 4) - LocalObject(1855, Terminal.Constructor(Vector3(4010.442f, 1640.617f, 62.66367f), order_terminal), owning_building_guid = 4) - LocalObject(1856, Terminal.Constructor(Vector3(4012.869f, 1658.248f, 69.90266f), order_terminal), owning_building_guid = 4) - LocalObject(1857, Terminal.Constructor(Vector3(4014.194f, 1641.145f, 62.66367f), order_terminal), owning_building_guid = 4) - LocalObject(1858, Terminal.Constructor(Vector3(4038.258f, 1639.13f, 69.90266f), order_terminal), owning_building_guid = 4) - LocalObject(2610, Terminal.Constructor(Vector3(4000.719f, 1653.068f, 63.20766f), spawn_terminal), owning_building_guid = 4) - LocalObject(2611, Terminal.Constructor(Vector3(4007.939f, 1654.087f, 63.20766f), spawn_terminal), owning_building_guid = 4) - LocalObject(2612, Terminal.Constructor(Vector3(4010.778f, 1640.824f, 75.10166f), spawn_terminal), owning_building_guid = 4) - LocalObject(2613, Terminal.Constructor(Vector3(4015.157f, 1655.099f, 63.20766f), spawn_terminal), owning_building_guid = 4) - LocalObject(2615, Terminal.Constructor(Vector3(4027.927f, 1661.854f, 55.13066f), spawn_terminal), owning_building_guid = 4) - LocalObject(2616, Terminal.Constructor(Vector3(4048.353f, 1688.96f, 62.63066f), spawn_terminal), owning_building_guid = 4) - LocalObject(2813, Terminal.Constructor(Vector3(4091f, 1694.937f, 70.47566f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(1737, VehicleSpawnPad.Constructor(Vector3(4077.508f, 1692.949f, 66.31866f), mb_pad_creation, Vector3(0, 0, 262)), owning_building_guid = 4, terminal_guid = 2813) + LocalObject( + 1853, + Terminal.Constructor(Vector3(3993.741f, 1632.874f, 69.90266f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1854, + Terminal.Constructor(Vector3(4006.748f, 1640.098f, 62.66367f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1855, + Terminal.Constructor(Vector3(4010.442f, 1640.617f, 62.66367f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1856, + Terminal.Constructor(Vector3(4012.869f, 1658.248f, 69.90266f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1857, + Terminal.Constructor(Vector3(4014.194f, 1641.145f, 62.66367f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1858, + Terminal.Constructor(Vector3(4038.258f, 1639.13f, 69.90266f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2610, + Terminal.Constructor(Vector3(4000.719f, 1653.068f, 63.20766f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2611, + Terminal.Constructor(Vector3(4007.939f, 1654.087f, 63.20766f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2612, + Terminal.Constructor(Vector3(4010.778f, 1640.824f, 75.10166f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2613, + Terminal.Constructor(Vector3(4015.157f, 1655.099f, 63.20766f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2615, + Terminal.Constructor(Vector3(4027.927f, 1661.854f, 55.13066f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2616, + Terminal.Constructor(Vector3(4048.353f, 1688.96f, 62.63066f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2813, + Terminal.Constructor(Vector3(4091f, 1694.937f, 70.47566f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 1737, + VehicleSpawnPad.Constructor(Vector3(4077.508f, 1692.949f, 66.31866f), mb_pad_creation, Vector3(0, 0, 262)), + owning_building_guid = 4, + terminal_guid = 2813 + ) LocalObject(2431, ResourceSilo.Constructor(Vector3(3938.664f, 1571.969f, 75.60867f)), owning_building_guid = 4) - LocalObject(2488, SpawnTube.Constructor(Vector3(4002.042f, 1654f, 61.07367f), Vector3(0, 0, 82)), owning_building_guid = 4) - LocalObject(2489, SpawnTube.Constructor(Vector3(4009.262f, 1655.014f, 61.07367f), Vector3(0, 0, 82)), owning_building_guid = 4) - LocalObject(2490, SpawnTube.Constructor(Vector3(4016.479f, 1656.029f, 61.07367f), Vector3(0, 0, 82)), owning_building_guid = 4) - LocalObject(1759, ProximityTerminal.Constructor(Vector3(4012.926f, 1657.833f, 73.57366f), medical_terminal), owning_building_guid = 4) - LocalObject(1760, ProximityTerminal.Constructor(Vector3(4022.74f, 1628.42f, 53.57367f), medical_terminal), owning_building_guid = 4) - LocalObject(2066, ProximityTerminal.Constructor(Vector3(3944.375f, 1617.554f, 76.90166f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2067, Terminal.Constructor(Vector3(3944.375f, 1617.554f, 76.90166f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2081, ProximityTerminal.Constructor(Vector3(4003.232f, 1584.345f, 76.87866f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2082, Terminal.Constructor(Vector3(4003.232f, 1584.345f, 76.87866f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2087, ProximityTerminal.Constructor(Vector3(4027.611f, 1695.443f, 76.87866f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2088, Terminal.Constructor(Vector3(4027.611f, 1695.443f, 76.87866f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2090, ProximityTerminal.Constructor(Vector3(4076.555f, 1617.652f, 79.03967f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2091, Terminal.Constructor(Vector3(4076.555f, 1617.652f, 79.03967f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2386, ProximityTerminal.Constructor(Vector3(4006.446f, 1705.443f, 67.77367f), repair_silo), owning_building_guid = 4) - LocalObject(2387, Terminal.Constructor(Vector3(4006.446f, 1705.443f, 67.77367f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(2390, ProximityTerminal.Constructor(Vector3(4025.063f, 1574.337f, 67.77367f), repair_silo), owning_building_guid = 4) - LocalObject(2391, Terminal.Constructor(Vector3(4025.063f, 1574.337f, 67.77367f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1677, FacilityTurret.Constructor(Vector3(3908.888f, 1702.333f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 2488, + SpawnTube.Constructor(Vector3(4002.042f, 1654f, 61.07367f), Vector3(0, 0, 82)), + owning_building_guid = 4 + ) + LocalObject( + 2489, + SpawnTube.Constructor(Vector3(4009.262f, 1655.014f, 61.07367f), Vector3(0, 0, 82)), + owning_building_guid = 4 + ) + LocalObject( + 2490, + SpawnTube.Constructor(Vector3(4016.479f, 1656.029f, 61.07367f), Vector3(0, 0, 82)), + owning_building_guid = 4 + ) + LocalObject( + 1759, + ProximityTerminal.Constructor(Vector3(4012.926f, 1657.833f, 73.57366f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1760, + ProximityTerminal.Constructor(Vector3(4022.74f, 1628.42f, 53.57367f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2066, + ProximityTerminal.Constructor(Vector3(3944.375f, 1617.554f, 76.90166f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2067, + Terminal.Constructor(Vector3(3944.375f, 1617.554f, 76.90166f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2081, + ProximityTerminal.Constructor(Vector3(4003.232f, 1584.345f, 76.87866f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2082, + Terminal.Constructor(Vector3(4003.232f, 1584.345f, 76.87866f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2087, + ProximityTerminal.Constructor(Vector3(4027.611f, 1695.443f, 76.87866f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2088, + Terminal.Constructor(Vector3(4027.611f, 1695.443f, 76.87866f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2090, + ProximityTerminal.Constructor(Vector3(4076.555f, 1617.652f, 79.03967f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2091, + Terminal.Constructor(Vector3(4076.555f, 1617.652f, 79.03967f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2386, + ProximityTerminal.Constructor(Vector3(4006.446f, 1705.443f, 67.77367f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2387, + Terminal.Constructor(Vector3(4006.446f, 1705.443f, 67.77367f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2390, + ProximityTerminal.Constructor(Vector3(4025.063f, 1574.337f, 67.77367f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2391, + Terminal.Constructor(Vector3(4025.063f, 1574.337f, 67.77367f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1677, + FacilityTurret.Constructor(Vector3(3908.888f, 1702.333f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1677, 5006) - LocalObject(1679, FacilityTurret.Constructor(Vector3(3914.974f, 1643.016f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 1679, + FacilityTurret.Constructor(Vector3(3914.974f, 1643.016f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1679, 5007) - LocalObject(1680, FacilityTurret.Constructor(Vector3(3930.231f, 1550.395f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 1680, + FacilityTurret.Constructor(Vector3(3930.231f, 1550.395f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1680, 5008) - LocalObject(1684, FacilityTurret.Constructor(Vector3(4067.49f, 1567.437f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 1684, + FacilityTurret.Constructor(Vector3(4067.49f, 1567.437f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1684, 5009) - LocalObject(1686, FacilityTurret.Constructor(Vector3(4108.598f, 1730.43f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 1686, + FacilityTurret.Constructor(Vector3(4108.598f, 1730.43f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1686, 5010) - LocalObject(1687, FacilityTurret.Constructor(Vector3(4129.947f, 1578.454f, 77.08167f), manned_turret), owning_building_guid = 4) + LocalObject( + 1687, + FacilityTurret.Constructor(Vector3(4129.947f, 1578.454f, 77.08167f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1687, 5011) - LocalObject(2174, Painbox.Constructor(Vector3(4000.855f, 1694.309f, 58.44466f), painbox), owning_building_guid = 4) - LocalObject(2187, Painbox.Constructor(Vector3(4012.875f, 1648.078f, 66.02206f), painbox_continuous), owning_building_guid = 4) - LocalObject(2200, Painbox.Constructor(Vector3(4004.916f, 1680.697f, 55.03267f), painbox_door_radius), owning_building_guid = 4) - LocalObject(2231, Painbox.Constructor(Vector3(3997.433f, 1645.508f, 62.27367f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2232, Painbox.Constructor(Vector3(4020.123f, 1635.098f, 64.25227f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2233, Painbox.Constructor(Vector3(4023.534f, 1649.102f, 62.33817f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 2174, + Painbox.Constructor(Vector3(4000.855f, 1694.309f, 58.44466f), painbox), + owning_building_guid = 4 + ) + LocalObject( + 2187, + Painbox.Constructor(Vector3(4012.875f, 1648.078f, 66.02206f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2200, + Painbox.Constructor(Vector3(4004.916f, 1680.697f, 55.03267f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 2231, + Painbox.Constructor(Vector3(3997.433f, 1645.508f, 62.27367f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2232, + Painbox.Constructor(Vector3(4020.123f, 1635.098f, 64.25227f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2233, + Painbox.Constructor(Vector3(4023.534f, 1649.102f, 62.33817f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(290, Generator.Constructor(Vector3(4003.169f, 1698.376f, 52.27966f)), owning_building_guid = 4) - LocalObject(277, Terminal.Constructor(Vector3(4004.356f, 1690.271f, 53.57367f), gen_control), owning_building_guid = 4) + LocalObject( + 277, + Terminal.Constructor(Vector3(4004.356f, 1690.271f, 53.57367f), gen_control), + owning_building_guid = 4 + ) } Building13() def Building13(): Unit = { // Name: Nott Type: amp_station GUID: 7, MapID: 13 - LocalBuilding("Nott", 7, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6822f, 4234f, 46.3271f), Vector3(0f, 0f, 62f), amp_station))) - LocalObject(221, CaptureTerminal.Constructor(Vector3(6820.431f, 4231.056f, 57.8351f), capture_terminal), owning_building_guid = 7) + LocalBuilding( + "Nott", + 7, + 13, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(6822f, 4234f, 46.3271f), Vector3(0f, 0f, 62f), amp_station) + ) + ) + LocalObject( + 221, + CaptureTerminal.Constructor(Vector3(6820.431f, 4231.056f, 57.8351f), capture_terminal), + owning_building_guid = 7 + ) LocalObject(168, Door.Constructor(Vector3(6816.092f, 4237.384f, 59.2291f)), owning_building_guid = 7) LocalObject(169, Door.Constructor(Vector3(6828.107f, 4230.992f, 59.2291f)), owning_building_guid = 7) LocalObject(576, Door.Constructor(Vector3(6715.685f, 4204.454f, 48.0481f)), owning_building_guid = 7) @@ -326,18 +843,78 @@ object Map07 { // Esamir LocalObject(2719, Door.Constructor(Vector3(6809.117f, 4218.961f, 40.8811f)), owning_building_guid = 7) LocalObject(2720, Door.Constructor(Vector3(6815.552f, 4215.539f, 40.8811f)), owning_building_guid = 7) LocalObject(2721, Door.Constructor(Vector3(6821.992f, 4212.115f, 40.8811f)), owning_building_guid = 7) - LocalObject(945, IFFLock.Constructor(Vector3(6834.276f, 4263.619f, 48.0071f), Vector3(0, 0, 28)), owning_building_guid = 7, door_guid = 901) - LocalObject(1166, IFFLock.Constructor(Vector3(6713.996f, 4203.037f, 47.9871f), Vector3(0, 0, 298)), owning_building_guid = 7, door_guid = 576) - LocalObject(1167, IFFLock.Constructor(Vector3(6788.971f, 4249.247f, 52.9891f), Vector3(0, 0, 298)), owning_building_guid = 7, door_guid = 581) - LocalObject(1168, IFFLock.Constructor(Vector3(6794.386f, 4242.857f, 57.9881f), Vector3(0, 0, 208)), owning_building_guid = 7, door_guid = 582) - LocalObject(1169, IFFLock.Constructor(Vector3(6795.789f, 4254.213f, 57.9881f), Vector3(0, 0, 28)), owning_building_guid = 7, door_guid = 583) - LocalObject(1170, IFFLock.Constructor(Vector3(6801.989f, 4191.194f, 32.8631f), Vector3(0, 0, 28)), owning_building_guid = 7, door_guid = 875) - LocalObject(1171, IFFLock.Constructor(Vector3(6807.734f, 4226.214f, 40.3631f), Vector3(0, 0, 298)), owning_building_guid = 7, door_guid = 877) - LocalObject(1172, IFFLock.Constructor(Vector3(6831.947f, 4216.901f, 40.3631f), Vector3(0, 0, 118)), owning_building_guid = 7, door_guid = 882) - LocalObject(1173, IFFLock.Constructor(Vector3(6833.542f, 4226.798f, 32.8631f), Vector3(0, 0, 208)), owning_building_guid = 7, door_guid = 883) - LocalObject(1174, IFFLock.Constructor(Vector3(6848.367f, 4214.155f, 57.9881f), Vector3(0, 0, 208)), owning_building_guid = 7, door_guid = 586) - LocalObject(1175, IFFLock.Constructor(Vector3(6849.773f, 4225.51f, 57.9881f), Vector3(0, 0, 28)), owning_building_guid = 7, door_guid = 587) - LocalObject(1176, IFFLock.Constructor(Vector3(6855.01f, 4218.761f, 52.9891f), Vector3(0, 0, 118)), owning_building_guid = 7, door_guid = 588) + LocalObject( + 945, + IFFLock.Constructor(Vector3(6834.276f, 4263.619f, 48.0071f), Vector3(0, 0, 28)), + owning_building_guid = 7, + door_guid = 901 + ) + LocalObject( + 1166, + IFFLock.Constructor(Vector3(6713.996f, 4203.037f, 47.9871f), Vector3(0, 0, 298)), + owning_building_guid = 7, + door_guid = 576 + ) + LocalObject( + 1167, + IFFLock.Constructor(Vector3(6788.971f, 4249.247f, 52.9891f), Vector3(0, 0, 298)), + owning_building_guid = 7, + door_guid = 581 + ) + LocalObject( + 1168, + IFFLock.Constructor(Vector3(6794.386f, 4242.857f, 57.9881f), Vector3(0, 0, 208)), + owning_building_guid = 7, + door_guid = 582 + ) + LocalObject( + 1169, + IFFLock.Constructor(Vector3(6795.789f, 4254.213f, 57.9881f), Vector3(0, 0, 28)), + owning_building_guid = 7, + door_guid = 583 + ) + LocalObject( + 1170, + IFFLock.Constructor(Vector3(6801.989f, 4191.194f, 32.8631f), Vector3(0, 0, 28)), + owning_building_guid = 7, + door_guid = 875 + ) + LocalObject( + 1171, + IFFLock.Constructor(Vector3(6807.734f, 4226.214f, 40.3631f), Vector3(0, 0, 298)), + owning_building_guid = 7, + door_guid = 877 + ) + LocalObject( + 1172, + IFFLock.Constructor(Vector3(6831.947f, 4216.901f, 40.3631f), Vector3(0, 0, 118)), + owning_building_guid = 7, + door_guid = 882 + ) + LocalObject( + 1173, + IFFLock.Constructor(Vector3(6833.542f, 4226.798f, 32.8631f), Vector3(0, 0, 208)), + owning_building_guid = 7, + door_guid = 883 + ) + LocalObject( + 1174, + IFFLock.Constructor(Vector3(6848.367f, 4214.155f, 57.9881f), Vector3(0, 0, 208)), + owning_building_guid = 7, + door_guid = 586 + ) + LocalObject( + 1175, + IFFLock.Constructor(Vector3(6849.773f, 4225.51f, 57.9881f), Vector3(0, 0, 28)), + owning_building_guid = 7, + door_guid = 587 + ) + LocalObject( + 1176, + IFFLock.Constructor(Vector3(6855.01f, 4218.761f, 52.9891f), Vector3(0, 0, 118)), + owning_building_guid = 7, + door_guid = 588 + ) LocalObject(1540, Locker.Constructor(Vector3(6817.586f, 4238.832f, 31.5271f)), owning_building_guid = 7) LocalObject(1541, Locker.Constructor(Vector3(6818.208f, 4240f, 31.5271f)), owning_building_guid = 7) LocalObject(1542, Locker.Constructor(Vector3(6818.835f, 4241.18f, 31.5271f)), owning_building_guid = 7) @@ -350,64 +927,249 @@ object Map07 { // Esamir LocalObject(1549, Locker.Constructor(Vector3(6830.822f, 4221.072f, 39.2881f)), owning_building_guid = 7) LocalObject(1550, Locker.Constructor(Vector3(6831.361f, 4222.084f, 39.2881f)), owning_building_guid = 7) LocalObject(1551, Locker.Constructor(Vector3(6831.9f, 4223.099f, 39.2881f)), owning_building_guid = 7) - LocalObject(1897, Terminal.Constructor(Vector3(6802.153f, 4244.551f, 47.8561f), order_terminal), owning_building_guid = 7) - LocalObject(1898, Terminal.Constructor(Vector3(6811.456f, 4214.161f, 47.8561f), order_terminal), owning_building_guid = 7) - LocalObject(1899, Terminal.Constructor(Vector3(6820.437f, 4228.776f, 40.6171f), order_terminal), owning_building_guid = 7) - LocalObject(1900, Terminal.Constructor(Vector3(6823.782f, 4226.998f, 40.6171f), order_terminal), owning_building_guid = 7) - LocalObject(1901, Terminal.Constructor(Vector3(6827.077f, 4225.246f, 40.6171f), order_terminal), owning_building_guid = 7) - LocalObject(1902, Terminal.Constructor(Vector3(6841.845f, 4223.446f, 47.8561f), order_terminal), owning_building_guid = 7) - LocalObject(2631, Terminal.Constructor(Vector3(6764.696f, 4210.171f, 40.5841f), spawn_terminal), owning_building_guid = 7) - LocalObject(2632, Terminal.Constructor(Vector3(6797.155f, 4220.095f, 33.0841f), spawn_terminal), owning_building_guid = 7) - LocalObject(2633, Terminal.Constructor(Vector3(6811.457f, 4218.053f, 41.1611f), spawn_terminal), owning_building_guid = 7) - LocalObject(2634, Terminal.Constructor(Vector3(6817.89f, 4214.629f, 41.1611f), spawn_terminal), owning_building_guid = 7) - LocalObject(2635, Terminal.Constructor(Vector3(6823.389f, 4227.028f, 53.0551f), spawn_terminal), owning_building_guid = 7) - LocalObject(2636, Terminal.Constructor(Vector3(6824.33f, 4211.209f, 41.1611f), spawn_terminal), owning_building_guid = 7) - LocalObject(2816, Terminal.Constructor(Vector3(6726.681f, 4230.403f, 48.4291f), vehicle_terminal_combined), owning_building_guid = 7) - LocalObject(1742, VehicleSpawnPad.Constructor(Vector3(6738.765f, 4224.08f, 44.2721f), mb_pad_creation, Vector3(0, 0, 118)), owning_building_guid = 7, terminal_guid = 2816) + LocalObject( + 1897, + Terminal.Constructor(Vector3(6802.153f, 4244.551f, 47.8561f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1898, + Terminal.Constructor(Vector3(6811.456f, 4214.161f, 47.8561f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1899, + Terminal.Constructor(Vector3(6820.437f, 4228.776f, 40.6171f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1900, + Terminal.Constructor(Vector3(6823.782f, 4226.998f, 40.6171f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1901, + Terminal.Constructor(Vector3(6827.077f, 4225.246f, 40.6171f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1902, + Terminal.Constructor(Vector3(6841.845f, 4223.446f, 47.8561f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2631, + Terminal.Constructor(Vector3(6764.696f, 4210.171f, 40.5841f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2632, + Terminal.Constructor(Vector3(6797.155f, 4220.095f, 33.0841f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2633, + Terminal.Constructor(Vector3(6811.457f, 4218.053f, 41.1611f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2634, + Terminal.Constructor(Vector3(6817.89f, 4214.629f, 41.1611f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2635, + Terminal.Constructor(Vector3(6823.389f, 4227.028f, 53.0551f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2636, + Terminal.Constructor(Vector3(6824.33f, 4211.209f, 41.1611f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2816, + Terminal.Constructor(Vector3(6726.681f, 4230.403f, 48.4291f), vehicle_terminal_combined), + owning_building_guid = 7 + ) + LocalObject( + 1742, + VehicleSpawnPad.Constructor(Vector3(6738.765f, 4224.08f, 44.2721f), mb_pad_creation, Vector3(0, 0, 118)), + owning_building_guid = 7, + terminal_guid = 2816 + ) LocalObject(2434, ResourceSilo.Constructor(Vector3(6922.203f, 4240.345f, 53.5621f)), owning_building_guid = 7) - LocalObject(2517, SpawnTube.Constructor(Vector3(6809.84f, 4218.078f, 39.0271f), Vector3(0, 0, 298)), owning_building_guid = 7) - LocalObject(2518, SpawnTube.Constructor(Vector3(6816.275f, 4214.657f, 39.0271f), Vector3(0, 0, 298)), owning_building_guid = 7) - LocalObject(2519, SpawnTube.Constructor(Vector3(6822.712f, 4211.234f, 39.0271f), Vector3(0, 0, 298)), owning_building_guid = 7) - LocalObject(1764, ProximityTerminal.Constructor(Vector3(6811.654f, 4214.53f, 51.5271f), medical_terminal), owning_building_guid = 7) - LocalObject(1765, ProximityTerminal.Constructor(Vector3(6821.002f, 4244.094f, 31.5271f), medical_terminal), owning_building_guid = 7) - LocalObject(2123, ProximityTerminal.Constructor(Vector3(6777.667f, 4192.735f, 54.8321f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2124, Terminal.Constructor(Vector3(6777.667f, 4192.735f, 54.8321f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2126, ProximityTerminal.Constructor(Vector3(6783.795f, 4284.437f, 56.9931f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2127, Terminal.Constructor(Vector3(6783.795f, 4284.437f, 56.9931f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2129, ProximityTerminal.Constructor(Vector3(6862.692f, 4268.285f, 54.8321f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2130, Terminal.Constructor(Vector3(6862.692f, 4268.285f, 54.8321f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2132, ProximityTerminal.Constructor(Vector3(6890.788f, 4206.823f, 54.8551f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2133, Terminal.Constructor(Vector3(6890.788f, 4206.823f, 54.8551f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2414, ProximityTerminal.Constructor(Vector3(6788.912f, 4172.204f, 45.7271f), repair_silo), owning_building_guid = 7) - LocalObject(2415, Terminal.Constructor(Vector3(6788.912f, 4172.204f, 45.7271f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(2418, ProximityTerminal.Constructor(Vector3(6850.913f, 4289.214f, 45.7271f), repair_silo), owning_building_guid = 7) - LocalObject(2419, Terminal.Constructor(Vector3(6850.913f, 4289.214f, 45.7271f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(1712, FacilityTurret.Constructor(Vector3(6691.582f, 4212.032f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 2517, + SpawnTube.Constructor(Vector3(6809.84f, 4218.078f, 39.0271f), Vector3(0, 0, 298)), + owning_building_guid = 7 + ) + LocalObject( + 2518, + SpawnTube.Constructor(Vector3(6816.275f, 4214.657f, 39.0271f), Vector3(0, 0, 298)), + owning_building_guid = 7 + ) + LocalObject( + 2519, + SpawnTube.Constructor(Vector3(6822.712f, 4211.234f, 39.0271f), Vector3(0, 0, 298)), + owning_building_guid = 7 + ) + LocalObject( + 1764, + ProximityTerminal.Constructor(Vector3(6811.654f, 4214.53f, 51.5271f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1765, + ProximityTerminal.Constructor(Vector3(6821.002f, 4244.094f, 31.5271f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2123, + ProximityTerminal.Constructor(Vector3(6777.667f, 4192.735f, 54.8321f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2124, + Terminal.Constructor(Vector3(6777.667f, 4192.735f, 54.8321f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2126, + ProximityTerminal.Constructor(Vector3(6783.795f, 4284.437f, 56.9931f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2127, + Terminal.Constructor(Vector3(6783.795f, 4284.437f, 56.9931f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2129, + ProximityTerminal.Constructor(Vector3(6862.692f, 4268.285f, 54.8321f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2130, + Terminal.Constructor(Vector3(6862.692f, 4268.285f, 54.8321f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2132, + ProximityTerminal.Constructor(Vector3(6890.788f, 4206.823f, 54.8551f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2133, + Terminal.Constructor(Vector3(6890.788f, 4206.823f, 54.8551f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2414, + ProximityTerminal.Constructor(Vector3(6788.912f, 4172.204f, 45.7271f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 2415, + Terminal.Constructor(Vector3(6788.912f, 4172.204f, 45.7271f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2418, + ProximityTerminal.Constructor(Vector3(6850.913f, 4289.214f, 45.7271f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 2419, + Terminal.Constructor(Vector3(6850.913f, 4289.214f, 45.7271f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1712, + FacilityTurret.Constructor(Vector3(6691.582f, 4212.032f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1712, 5012) - LocalObject(1713, FacilityTurret.Constructor(Vector3(6763.64f, 4347.532f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 1713, + FacilityTurret.Constructor(Vector3(6763.64f, 4347.532f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1713, 5013) - LocalObject(1714, FacilityTurret.Constructor(Vector3(6820.644f, 4319.734f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 1714, + FacilityTurret.Constructor(Vector3(6820.644f, 4319.734f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1714, 5014) - LocalObject(1715, FacilityTurret.Constructor(Vector3(6869.666f, 4117.376f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 1715, + FacilityTurret.Constructor(Vector3(6869.666f, 4117.376f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1715, 5015) - LocalObject(1716, FacilityTurret.Constructor(Vector3(6899.607f, 4168.942f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 1716, + FacilityTurret.Constructor(Vector3(6899.607f, 4168.942f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1716, 5016) - LocalObject(1718, FacilityTurret.Constructor(Vector3(6941.706f, 4252.842f, 55.0351f), manned_turret), owning_building_guid = 7) + LocalObject( + 1718, + FacilityTurret.Constructor(Vector3(6941.706f, 4252.842f, 55.0351f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1718, 5017) LocalObject(2177, Painbox.Constructor(Vector3(6799.979f, 4177.925f, 36.3981f), painbox), owning_building_guid = 7) - LocalObject(2190, Painbox.Constructor(Vector3(6817.429f, 4222.392f, 43.9755f), painbox_continuous), owning_building_guid = 7) - LocalObject(2203, Painbox.Constructor(Vector3(6804.695f, 4191.324f, 32.9861f), painbox_door_radius), owning_building_guid = 7) - LocalObject(2240, Painbox.Constructor(Vector3(6808.204f, 4227.829f, 40.2916f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2241, Painbox.Constructor(Vector3(6819.195f, 4237.153f, 42.2057f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2242, Painbox.Constructor(Vector3(6831.433f, 4215.395f, 40.2271f), painbox_door_radius_continuous), owning_building_guid = 7) + LocalObject( + 2190, + Painbox.Constructor(Vector3(6817.429f, 4222.392f, 43.9755f), painbox_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2203, + Painbox.Constructor(Vector3(6804.695f, 4191.324f, 32.9861f), painbox_door_radius), + owning_building_guid = 7 + ) + LocalObject( + 2240, + Painbox.Constructor(Vector3(6808.204f, 4227.829f, 40.2916f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2241, + Painbox.Constructor(Vector3(6819.195f, 4237.153f, 42.2057f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2242, + Painbox.Constructor(Vector3(6831.433f, 4215.395f, 40.2271f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) LocalObject(293, Generator.Constructor(Vector3(6795.717f, 4175.995f, 30.2331f)), owning_building_guid = 7) - LocalObject(280, Terminal.Constructor(Vector3(6799.521f, 4183.25f, 31.5271f), gen_control), owning_building_guid = 7) + LocalObject( + 280, + Terminal.Constructor(Vector3(6799.521f, 4183.25f, 31.5271f), gen_control), + owning_building_guid = 7 + ) } Building45() def Building45(): Unit = { // Name: bunkerg4 Type: bunker_gauntlet GUID: 10, MapID: 45 - LocalBuilding("bunkerg4", 10, 45, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2332f, 2086f, 85.39127f), Vector3(0f, 0f, 337f), bunker_gauntlet))) + LocalBuilding( + "bunkerg4", + 10, + 45, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2332f, 2086f, 85.39127f), + Vector3(0f, 0f, 337f), + bunker_gauntlet + ) + ) + ) LocalObject(363, Door.Constructor(Vector3(2308.334f, 2093.969f, 86.91228f)), owning_building_guid = 10) LocalObject(373, Door.Constructor(Vector3(2354.199f, 2074.512f, 86.91228f)), owning_building_guid = 10) } @@ -415,7 +1177,19 @@ object Map07 { // Esamir Building44() def Building44(): Unit = { // Name: bunkerg3 Type: bunker_gauntlet GUID: 11, MapID: 44 - LocalBuilding("bunkerg3", 11, 44, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3242f, 7204f, 77.57013f), Vector3(0f, 0f, 227f), bunker_gauntlet))) + LocalBuilding( + "bunkerg3", + 11, + 44, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3242f, 7204f, 77.57013f), + Vector3(0f, 0f, 227f), + bunker_gauntlet + ) + ) + ) LocalObject(409, Door.Constructor(Vector3(3223.612f, 7187.069f, 79.09113f)), owning_building_guid = 11) LocalObject(418, Door.Constructor(Vector3(3257.582f, 7223.513f, 79.09113f)), owning_building_guid = 11) } @@ -423,7 +1197,19 @@ object Map07 { // Esamir Building42() def Building42(): Unit = { // Name: bunkerg1 Type: bunker_gauntlet GUID: 12, MapID: 42 - LocalBuilding("bunkerg1", 12, 42, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3468f, 4516f, 75.12246f), Vector3(0f, 0f, 227f), bunker_gauntlet))) + LocalBuilding( + "bunkerg1", + 12, + 42, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3468f, 4516f, 75.12246f), + Vector3(0f, 0f, 227f), + bunker_gauntlet + ) + ) + ) LocalObject(447, Door.Constructor(Vector3(3449.612f, 4499.069f, 76.64346f)), owning_building_guid = 12) LocalObject(454, Door.Constructor(Vector3(3483.582f, 4535.513f, 76.64346f)), owning_building_guid = 12) } @@ -431,7 +1217,19 @@ object Map07 { // Esamir Building43() def Building43(): Unit = { // Name: bunkerg2 Type: bunker_gauntlet GUID: 13, MapID: 43 - LocalBuilding("bunkerg2", 13, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3816f, 6076f, 59.98318f), Vector3(0f, 0f, 74f), bunker_gauntlet))) + LocalBuilding( + "bunkerg2", + 13, + 43, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3816f, 6076f, 59.98318f), + Vector3(0f, 0f, 74f), + bunker_gauntlet + ) + ) + ) LocalObject(473, Door.Constructor(Vector3(3810.975f, 6051.54f, 61.50418f)), owning_building_guid = 13) LocalObject(474, Door.Constructor(Vector3(3824.697f, 6099.434f, 61.50418f)), owning_building_guid = 13) } @@ -439,64 +1237,136 @@ object Map07 { // Esamir Building34() def Building34(): Unit = { // Name: bunker2 Type: bunker_lg GUID: 14, MapID: 34 - LocalBuilding("bunker2", 14, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(946f, 2856f, 74.08158f), Vector3(0f, 0f, 223f), bunker_lg))) + LocalBuilding( + "bunker2", + 14, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(946f, 2856f, 74.08158f), Vector3(0f, 0f, 223f), bunker_lg) + ) + ) LocalObject(306, Door.Constructor(Vector3(945.838f, 2852.353f, 75.60258f)), owning_building_guid = 14) } Building35() def Building35(): Unit = { // Name: bunker3 Type: bunker_lg GUID: 15, MapID: 35 - LocalBuilding("bunker3", 15, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3026f, 3702f, 55.36764f), Vector3(0f, 0f, 141f), bunker_lg))) + LocalBuilding( + "bunker3", + 15, + 35, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3026f, 3702f, 55.36764f), Vector3(0f, 0f, 141f), bunker_lg) + ) + ) LocalObject(396, Door.Constructor(Vector3(3022.365f, 3701.653f, 56.88864f)), owning_building_guid = 15) } Building37() def Building37(): Unit = { // Name: bunker5 Type: bunker_lg GUID: 16, MapID: 37 - LocalBuilding("bunker5", 16, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3138f, 7404f, 77.53236f), Vector3(0f, 0f, 263f), bunker_lg))) + LocalBuilding( + "bunker5", + 16, + 37, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3138f, 7404f, 77.53236f), Vector3(0f, 0f, 263f), bunker_lg) + ) + ) LocalObject(400, Door.Constructor(Vector3(3140.22f, 7401.102f, 79.05337f)), owning_building_guid = 16) } Building40() def Building40(): Unit = { // Name: bunker8 Type: bunker_lg GUID: 17, MapID: 40 - LocalBuilding("bunker8", 17, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3632f, 3158f, 66.75056f), Vector3(0f, 0f, 270f), bunker_lg))) + LocalBuilding( + "bunker8", + 17, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3632f, 3158f, 66.75056f), Vector3(0f, 0f, 270f), bunker_lg) + ) + ) LocalObject(455, Door.Constructor(Vector3(3634.557f, 3155.394f, 68.27157f)), owning_building_guid = 17) } Building33() def Building33(): Unit = { // Name: bunker1 Type: bunker_sm GUID: 18, MapID: 33 - LocalBuilding("bunker1", 18, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1066f, 2700f, 73.6301f), Vector3(0f, 0f, 174f), bunker_sm))) + LocalBuilding( + "bunker1", + 18, + 33, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1066f, 2700f, 73.6301f), Vector3(0f, 0f, 174f), bunker_sm) + ) + ) LocalObject(318, Door.Constructor(Vector3(1064.787f, 2700.183f, 75.1511f)), owning_building_guid = 18) } Building39() def Building39(): Unit = { // Name: bunker7 Type: bunker_sm GUID: 19, MapID: 39 - LocalBuilding("bunker7", 19, 39, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2024f, 5436f, 68.63918f), Vector3(0f, 0f, 41f), bunker_sm))) + LocalBuilding( + "bunker7", + 19, + 39, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2024f, 5436f, 68.63918f), Vector3(0f, 0f, 41f), bunker_sm) + ) + ) LocalObject(348, Door.Constructor(Vector3(2024.961f, 5436.762f, 70.16019f)), owning_building_guid = 19) } Building36() def Building36(): Unit = { // Name: bunker4 Type: bunker_sm GUID: 20, MapID: 36 - LocalBuilding("bunker4", 20, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3416f, 4742f, 75.41428f), Vector3(0f, 0f, 231f), bunker_sm))) + LocalBuilding( + "bunker4", + 20, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3416f, 4742f, 75.41428f), Vector3(0f, 0f, 231f), bunker_sm) + ) + ) LocalObject(444, Door.Constructor(Vector3(3415.186f, 4741.083f, 76.93529f)), owning_building_guid = 20) } Building38() def Building38(): Unit = { // Name: bunker6 Type: bunker_sm GUID: 21, MapID: 38 - LocalBuilding("bunker6", 21, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5560f, 2582f, 53.30706f), Vector3(0f, 0f, 138f), bunker_sm))) + LocalBuilding( + "bunker6", + 21, + 38, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5560f, 2582f, 53.30706f), Vector3(0f, 0f, 138f), bunker_sm) + ) + ) LocalObject(557, Door.Constructor(Vector3(5559.126f, 2582.861f, 54.82806f)), owning_building_guid = 21) } Building16() def Building16(): Unit = { // Name: Jarl Type: comm_station GUID: 22, MapID: 16 - LocalBuilding("Jarl", 22, 16, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2012f, 5530f, 68.28211f), Vector3(0f, 0f, 289f), comm_station))) - LocalObject(211, CaptureTerminal.Constructor(Vector3(2098.907f, 5513.295f, 50.98211f), capture_terminal), owning_building_guid = 22) + LocalBuilding( + "Jarl", + 22, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2012f, 5530f, 68.28211f), + Vector3(0f, 0f, 289f), + comm_station + ) + ) + ) + LocalObject( + 211, + CaptureTerminal.Constructor(Vector3(2098.907f, 5513.295f, 50.98211f), capture_terminal), + owning_building_guid = 22 + ) LocalObject(340, Door.Constructor(Vector3(1933.992f, 5548.292f, 77.99712f)), owning_building_guid = 22) LocalObject(341, Door.Constructor(Vector3(1939.915f, 5531.091f, 70.03311f)), owning_building_guid = 22) LocalObject(342, Door.Constructor(Vector3(1951.4f, 5572.384f, 70.03311f)), owning_building_guid = 22) @@ -538,18 +1408,78 @@ object Map07 { // Esamir LocalObject(2651, Door.Constructor(Vector3(2036.924f, 5499.796f, 60.33611f)), owning_building_guid = 22) LocalObject(2652, Door.Constructor(Vector3(2043.82f, 5502.17f, 60.33611f)), owning_building_guid = 22) LocalObject(2653, Door.Constructor(Vector3(2050.712f, 5504.543f, 60.33611f)), owning_building_guid = 22) - LocalObject(935, IFFLock.Constructor(Vector3(2017.836f, 5510.378f, 69.93411f), Vector3(0, 0, 161)), owning_building_guid = 22, door_guid = 891) - LocalObject(986, IFFLock.Constructor(Vector3(1997.097f, 5543.856f, 74.94312f), Vector3(0, 0, 251)), owning_building_guid = 22, door_guid = 344) - LocalObject(987, IFFLock.Constructor(Vector3(2001.341f, 5531.812f, 82.36311f), Vector3(0, 0, 341)), owning_building_guid = 22, door_guid = 345) - LocalObject(988, IFFLock.Constructor(Vector3(2005.868f, 5551.202f, 74.94312f), Vector3(0, 0, 71)), owning_building_guid = 22, door_guid = 346) - LocalObject(989, IFFLock.Constructor(Vector3(2027.804f, 5554.932f, 52.31811f), Vector3(0, 0, 251)), owning_building_guid = 22, door_guid = 659) - LocalObject(990, IFFLock.Constructor(Vector3(2031.317f, 5529.05f, 74.94312f), Vector3(0, 0, 341)), owning_building_guid = 22, door_guid = 349) - LocalObject(991, IFFLock.Constructor(Vector3(2033.635f, 5489.251f, 59.81811f), Vector3(0, 0, 251)), owning_building_guid = 22, door_guid = 662) - LocalObject(992, IFFLock.Constructor(Vector3(2039.786f, 5481.335f, 52.31811f), Vector3(0, 0, 341)), owning_building_guid = 22, door_guid = 663) - LocalObject(993, IFFLock.Constructor(Vector3(2056.836f, 5500.565f, 59.81811f), Vector3(0, 0, 71)), owning_building_guid = 22, door_guid = 669) - LocalObject(994, IFFLock.Constructor(Vector3(2087.567f, 5514.575f, 52.31811f), Vector3(0, 0, 341)), owning_building_guid = 22, door_guid = 673) - LocalObject(995, IFFLock.Constructor(Vector3(2093.674f, 5506.497f, 52.31811f), Vector3(0, 0, 161)), owning_building_guid = 22, door_guid = 674) - LocalObject(996, IFFLock.Constructor(Vector3(2096.453f, 5524.413f, 69.93211f), Vector3(0, 0, 161)), owning_building_guid = 22, door_guid = 353) + LocalObject( + 935, + IFFLock.Constructor(Vector3(2017.836f, 5510.378f, 69.93411f), Vector3(0, 0, 161)), + owning_building_guid = 22, + door_guid = 891 + ) + LocalObject( + 986, + IFFLock.Constructor(Vector3(1997.097f, 5543.856f, 74.94312f), Vector3(0, 0, 251)), + owning_building_guid = 22, + door_guid = 344 + ) + LocalObject( + 987, + IFFLock.Constructor(Vector3(2001.341f, 5531.812f, 82.36311f), Vector3(0, 0, 341)), + owning_building_guid = 22, + door_guid = 345 + ) + LocalObject( + 988, + IFFLock.Constructor(Vector3(2005.868f, 5551.202f, 74.94312f), Vector3(0, 0, 71)), + owning_building_guid = 22, + door_guid = 346 + ) + LocalObject( + 989, + IFFLock.Constructor(Vector3(2027.804f, 5554.932f, 52.31811f), Vector3(0, 0, 251)), + owning_building_guid = 22, + door_guid = 659 + ) + LocalObject( + 990, + IFFLock.Constructor(Vector3(2031.317f, 5529.05f, 74.94312f), Vector3(0, 0, 341)), + owning_building_guid = 22, + door_guid = 349 + ) + LocalObject( + 991, + IFFLock.Constructor(Vector3(2033.635f, 5489.251f, 59.81811f), Vector3(0, 0, 251)), + owning_building_guid = 22, + door_guid = 662 + ) + LocalObject( + 992, + IFFLock.Constructor(Vector3(2039.786f, 5481.335f, 52.31811f), Vector3(0, 0, 341)), + owning_building_guid = 22, + door_guid = 663 + ) + LocalObject( + 993, + IFFLock.Constructor(Vector3(2056.836f, 5500.565f, 59.81811f), Vector3(0, 0, 71)), + owning_building_guid = 22, + door_guid = 669 + ) + LocalObject( + 994, + IFFLock.Constructor(Vector3(2087.567f, 5514.575f, 52.31811f), Vector3(0, 0, 341)), + owning_building_guid = 22, + door_guid = 673 + ) + LocalObject( + 995, + IFFLock.Constructor(Vector3(2093.674f, 5506.497f, 52.31811f), Vector3(0, 0, 161)), + owning_building_guid = 22, + door_guid = 674 + ) + LocalObject( + 996, + IFFLock.Constructor(Vector3(2096.453f, 5524.413f, 69.93211f), Vector3(0, 0, 161)), + owning_building_guid = 22, + door_guid = 353 + ) LocalObject(1250, Locker.Constructor(Vector3(2037.073f, 5488.33f, 58.74311f)), owning_building_guid = 22) LocalObject(1251, Locker.Constructor(Vector3(2037.453f, 5487.229f, 58.74311f)), owning_building_guid = 22) LocalObject(1252, Locker.Constructor(Vector3(2037.826f, 5486.145f, 58.74311f)), owning_building_guid = 22) @@ -562,60 +1492,233 @@ object Map07 { // Esamir LocalObject(1259, Locker.Constructor(Vector3(2062.678f, 5475.474f, 50.98211f)), owning_building_guid = 22) LocalObject(1260, Locker.Constructor(Vector3(2063.113f, 5474.21f, 50.98211f)), owning_building_guid = 22) LocalObject(1261, Locker.Constructor(Vector3(2063.548f, 5472.946f, 50.98211f)), owning_building_guid = 22) - LocalObject(1786, Terminal.Constructor(Vector3(1987.033f, 5531.579f, 74.84211f), order_terminal), owning_building_guid = 22) - LocalObject(1787, Terminal.Constructor(Vector3(2003.71f, 5524.68f, 82.23711f), order_terminal), owning_building_guid = 22) - LocalObject(1788, Terminal.Constructor(Vector3(2004.977f, 5527.502f, 82.23711f), order_terminal), owning_building_guid = 22) - LocalObject(1789, Terminal.Constructor(Vector3(2007.866f, 5526.11f, 82.23711f), order_terminal), owning_building_guid = 22) - LocalObject(1790, Terminal.Constructor(Vector3(2043.06f, 5487.122f, 60.07211f), order_terminal), owning_building_guid = 22) - LocalObject(1791, Terminal.Constructor(Vector3(2046.588f, 5488.337f, 60.07211f), order_terminal), owning_building_guid = 22) - LocalObject(1792, Terminal.Constructor(Vector3(2050.17f, 5489.57f, 60.07211f), order_terminal), owning_building_guid = 22) - LocalObject(2563, Terminal.Constructor(Vector3(1988.793f, 5523.585f, 75.09911f), spawn_terminal), owning_building_guid = 22) - LocalObject(2564, Terminal.Constructor(Vector3(2014.895f, 5547.979f, 52.53911f), spawn_terminal), owning_building_guid = 22) - LocalObject(2565, Terminal.Constructor(Vector3(2034.667f, 5498.704f, 60.61611f), spawn_terminal), owning_building_guid = 22) - LocalObject(2566, Terminal.Constructor(Vector3(2041.56f, 5501.082f, 60.61611f), spawn_terminal), owning_building_guid = 22) - LocalObject(2567, Terminal.Constructor(Vector3(2048.452f, 5503.451f, 60.61611f), spawn_terminal), owning_building_guid = 22) - LocalObject(2568, Terminal.Constructor(Vector3(2049.573f, 5543.562f, 62.53911f), spawn_terminal), owning_building_guid = 22) - LocalObject(2806, Terminal.Constructor(Vector3(2080.868f, 5498.232f, 71.16911f), vehicle_terminal_combined), owning_building_guid = 22) - LocalObject(1726, VehicleSpawnPad.Constructor(Vector3(2076.287f, 5511.065f, 67.01111f), mb_pad_creation, Vector3(0, 0, -19)), owning_building_guid = 22, terminal_guid = 2806) + LocalObject( + 1786, + Terminal.Constructor(Vector3(1987.033f, 5531.579f, 74.84211f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1787, + Terminal.Constructor(Vector3(2003.71f, 5524.68f, 82.23711f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1788, + Terminal.Constructor(Vector3(2004.977f, 5527.502f, 82.23711f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1789, + Terminal.Constructor(Vector3(2007.866f, 5526.11f, 82.23711f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1790, + Terminal.Constructor(Vector3(2043.06f, 5487.122f, 60.07211f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1791, + Terminal.Constructor(Vector3(2046.588f, 5488.337f, 60.07211f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1792, + Terminal.Constructor(Vector3(2050.17f, 5489.57f, 60.07211f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2563, + Terminal.Constructor(Vector3(1988.793f, 5523.585f, 75.09911f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2564, + Terminal.Constructor(Vector3(2014.895f, 5547.979f, 52.53911f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2565, + Terminal.Constructor(Vector3(2034.667f, 5498.704f, 60.61611f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2566, + Terminal.Constructor(Vector3(2041.56f, 5501.082f, 60.61611f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2567, + Terminal.Constructor(Vector3(2048.452f, 5503.451f, 60.61611f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2568, + Terminal.Constructor(Vector3(2049.573f, 5543.562f, 62.53911f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2806, + Terminal.Constructor(Vector3(2080.868f, 5498.232f, 71.16911f), vehicle_terminal_combined), + owning_building_guid = 22 + ) + LocalObject( + 1726, + VehicleSpawnPad.Constructor(Vector3(2076.287f, 5511.065f, 67.01111f), mb_pad_creation, Vector3(0, 0, -19)), + owning_building_guid = 22, + terminal_guid = 2806 + ) LocalObject(2424, ResourceSilo.Constructor(Vector3(1928.515f, 5560.237f, 75.49911f)), owning_building_guid = 22) - LocalObject(2449, SpawnTube.Constructor(Vector3(2035.788f, 5499.87f, 58.48211f), Vector3(0, 0, 71)), owning_building_guid = 22) - LocalObject(2450, SpawnTube.Constructor(Vector3(2042.682f, 5502.244f, 58.48211f), Vector3(0, 0, 71)), owning_building_guid = 22) - LocalObject(2451, SpawnTube.Constructor(Vector3(2049.573f, 5504.617f, 58.48211f), Vector3(0, 0, 71)), owning_building_guid = 22) - LocalObject(1746, ProximityTerminal.Constructor(Vector3(1984.883f, 5519.749f, 68.48211f), medical_terminal), owning_building_guid = 22) - LocalObject(1747, ProximityTerminal.Constructor(Vector3(2060.987f, 5478.71f, 50.98211f), medical_terminal), owning_building_guid = 22) - LocalObject(2003, ProximityTerminal.Constructor(Vector3(2058.043f, 5565.786f, 76.72311f), pad_landing_frame), owning_building_guid = 22) - LocalObject(2004, Terminal.Constructor(Vector3(2058.043f, 5565.786f, 76.72311f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(2334, ProximityTerminal.Constructor(Vector3(2009.064f, 5463.796f, 68.03211f), repair_silo), owning_building_guid = 22) - LocalObject(2335, Terminal.Constructor(Vector3(2009.064f, 5463.796f, 68.03211f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(2338, ProximityTerminal.Constructor(Vector3(2014.028f, 5595.307f, 68.03211f), repair_silo), owning_building_guid = 22) - LocalObject(2339, Terminal.Constructor(Vector3(2014.028f, 5595.307f, 68.03211f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(1618, FacilityTurret.Constructor(Vector3(1912.361f, 5572.312f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 2449, + SpawnTube.Constructor(Vector3(2035.788f, 5499.87f, 58.48211f), Vector3(0, 0, 71)), + owning_building_guid = 22 + ) + LocalObject( + 2450, + SpawnTube.Constructor(Vector3(2042.682f, 5502.244f, 58.48211f), Vector3(0, 0, 71)), + owning_building_guid = 22 + ) + LocalObject( + 2451, + SpawnTube.Constructor(Vector3(2049.573f, 5504.617f, 58.48211f), Vector3(0, 0, 71)), + owning_building_guid = 22 + ) + LocalObject( + 1746, + ProximityTerminal.Constructor(Vector3(1984.883f, 5519.749f, 68.48211f), medical_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1747, + ProximityTerminal.Constructor(Vector3(2060.987f, 5478.71f, 50.98211f), medical_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2003, + ProximityTerminal.Constructor(Vector3(2058.043f, 5565.786f, 76.72311f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 2004, + Terminal.Constructor(Vector3(2058.043f, 5565.786f, 76.72311f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2334, + ProximityTerminal.Constructor(Vector3(2009.064f, 5463.796f, 68.03211f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 2335, + Terminal.Constructor(Vector3(2009.064f, 5463.796f, 68.03211f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2338, + ProximityTerminal.Constructor(Vector3(2014.028f, 5595.307f, 68.03211f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 2339, + Terminal.Constructor(Vector3(2014.028f, 5595.307f, 68.03211f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1618, + FacilityTurret.Constructor(Vector3(1912.361f, 5572.312f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1618, 5018) - LocalObject(1621, FacilityTurret.Constructor(Vector3(1944.883f, 5474.246f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 1621, + FacilityTurret.Constructor(Vector3(1944.883f, 5474.246f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1621, 5019) - LocalObject(1622, FacilityTurret.Constructor(Vector3(1999.694f, 5447.488f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 1622, + FacilityTurret.Constructor(Vector3(1999.694f, 5447.488f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1622, 5020) - LocalObject(1623, FacilityTurret.Constructor(Vector3(2024.592f, 5612.151f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 1623, + FacilityTurret.Constructor(Vector3(2024.592f, 5612.151f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1623, 5021) - LocalObject(1624, FacilityTurret.Constructor(Vector3(2079.382f, 5585.407f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 1624, + FacilityTurret.Constructor(Vector3(2079.382f, 5585.407f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1624, 5022) - LocalObject(1625, FacilityTurret.Constructor(Vector3(2111.768f, 5487.314f, 76.99011f), manned_turret), owning_building_guid = 22) + LocalObject( + 1625, + FacilityTurret.Constructor(Vector3(2111.768f, 5487.314f, 76.99011f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1625, 5023) - LocalObject(2167, Painbox.Constructor(Vector3(2039.657f, 5560.529f, 55.88411f), painbox), owning_building_guid = 22) - LocalObject(2180, Painbox.Constructor(Vector3(2051.79f, 5494.823f, 62.92691f), painbox_continuous), owning_building_guid = 22) - LocalObject(2193, Painbox.Constructor(Vector3(2025.491f, 5555.547f, 53.74081f), painbox_door_radius), owning_building_guid = 22) - LocalObject(2210, Painbox.Constructor(Vector3(2032.042f, 5490.457f, 60.30811f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(2211, Painbox.Constructor(Vector3(2057.146f, 5484.356f, 61.30811f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(2212, Painbox.Constructor(Vector3(2058.188f, 5498.512f, 60.08981f), painbox_door_radius_continuous), owning_building_guid = 22) + LocalObject( + 2167, + Painbox.Constructor(Vector3(2039.657f, 5560.529f, 55.88411f), painbox), + owning_building_guid = 22 + ) + LocalObject( + 2180, + Painbox.Constructor(Vector3(2051.79f, 5494.823f, 62.92691f), painbox_continuous), + owning_building_guid = 22 + ) + LocalObject( + 2193, + Painbox.Constructor(Vector3(2025.491f, 5555.547f, 53.74081f), painbox_door_radius), + owning_building_guid = 22 + ) + LocalObject( + 2210, + Painbox.Constructor(Vector3(2032.042f, 5490.457f, 60.30811f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 2211, + Painbox.Constructor(Vector3(2057.146f, 5484.356f, 61.30811f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 2212, + Painbox.Constructor(Vector3(2058.188f, 5498.512f, 60.08981f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) LocalObject(283, Generator.Constructor(Vector3(2042.88f, 5561.812f, 49.68811f)), owning_building_guid = 22) - LocalObject(270, Terminal.Constructor(Vector3(2035.15f, 5559.101f, 50.98211f), gen_control), owning_building_guid = 22) + LocalObject( + 270, + Terminal.Constructor(Vector3(2035.15f, 5559.101f, 50.98211f), gen_control), + owning_building_guid = 22 + ) } Building14() def Building14(): Unit = { // Name: Vidar Type: comm_station GUID: 25, MapID: 14 - LocalBuilding("Vidar", 25, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3720f, 3102f, 66.58833f), Vector3(0f, 0f, 360f), comm_station))) - LocalObject(216, CaptureTerminal.Constructor(Vector3(3764.089f, 3178.734f, 49.28833f), capture_terminal), owning_building_guid = 25) + LocalBuilding( + "Vidar", + 25, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3720f, 3102f, 66.58833f), + Vector3(0f, 0f, 360f), + comm_station + ) + ) + ) + LocalObject( + 216, + CaptureTerminal.Constructor(Vector3(3764.089f, 3178.734f, 49.28833f), capture_terminal), + owning_building_guid = 25 + ) LocalObject(460, Door.Constructor(Vector3(3660.196f, 3058.5f, 68.33933f)), owning_building_guid = 25) LocalObject(461, Door.Constructor(Vector3(3660.196f, 3076.693f, 76.30333f)), owning_building_guid = 25) LocalObject(462, Door.Constructor(Vector3(3677.307f, 3034.197f, 76.30333f)), owning_building_guid = 25) @@ -657,18 +1760,78 @@ object Map07 { // Esamir LocalObject(2684, Door.Constructor(Vector3(3756.673f, 3115.733f, 58.64233f)), owning_building_guid = 25) LocalObject(2685, Door.Constructor(Vector3(3756.673f, 3123.026f, 58.64233f)), owning_building_guid = 25) LocalObject(2686, Door.Constructor(Vector3(3756.673f, 3130.315f, 58.64233f)), owning_building_guid = 25) - LocalObject(940, IFFLock.Constructor(Vector3(3740.453f, 3101.13f, 68.24033f), Vector3(0, 0, 90)), owning_building_guid = 25, door_guid = 896) - LocalObject(1074, IFFLock.Constructor(Vector3(3697.957f, 3103.105f, 73.24934f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 465) - LocalObject(1075, IFFLock.Constructor(Vector3(3701.572f, 3125.06f, 50.62433f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 763) - LocalObject(1076, IFFLock.Constructor(Vector3(3702.047f, 3092.42f, 73.24934f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 464) - LocalObject(1077, IFFLock.Constructor(Vector3(3714.817f, 3092.511f, 80.66933f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 466) - LocalObject(1078, IFFLock.Constructor(Vector3(3727.187f, 3119.955f, 73.24934f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 468) - LocalObject(1079, IFFLock.Constructor(Vector3(3752.778f, 3180.033f, 68.23833f), Vector3(0, 0, 90)), owning_building_guid = 25, door_guid = 470) - LocalObject(1080, IFFLock.Constructor(Vector3(3759.187f, 3168.428f, 50.62433f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 777) - LocalObject(1081, IFFLock.Constructor(Vector3(3762.428f, 3134.81f, 58.12433f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 779) - LocalObject(1082, IFFLock.Constructor(Vector3(3765.572f, 3109.19f, 58.12433f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 778) - LocalObject(1083, IFFLock.Constructor(Vector3(3768.813f, 3171.572f, 50.62433f), Vector3(0, 0, 90)), owning_building_guid = 25, door_guid = 780) - LocalObject(1084, IFFLock.Constructor(Vector3(3775.06f, 3112.428f, 50.62433f), Vector3(0, 0, 270)), owning_building_guid = 25, door_guid = 781) + LocalObject( + 940, + IFFLock.Constructor(Vector3(3740.453f, 3101.13f, 68.24033f), Vector3(0, 0, 90)), + owning_building_guid = 25, + door_guid = 896 + ) + LocalObject( + 1074, + IFFLock.Constructor(Vector3(3697.957f, 3103.105f, 73.24934f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 465 + ) + LocalObject( + 1075, + IFFLock.Constructor(Vector3(3701.572f, 3125.06f, 50.62433f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 763 + ) + LocalObject( + 1076, + IFFLock.Constructor(Vector3(3702.047f, 3092.42f, 73.24934f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 464 + ) + LocalObject( + 1077, + IFFLock.Constructor(Vector3(3714.817f, 3092.511f, 80.66933f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 466 + ) + LocalObject( + 1078, + IFFLock.Constructor(Vector3(3727.187f, 3119.955f, 73.24934f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 468 + ) + LocalObject( + 1079, + IFFLock.Constructor(Vector3(3752.778f, 3180.033f, 68.23833f), Vector3(0, 0, 90)), + owning_building_guid = 25, + door_guid = 470 + ) + LocalObject( + 1080, + IFFLock.Constructor(Vector3(3759.187f, 3168.428f, 50.62433f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 777 + ) + LocalObject( + 1081, + IFFLock.Constructor(Vector3(3762.428f, 3134.81f, 58.12433f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 779 + ) + LocalObject( + 1082, + IFFLock.Constructor(Vector3(3765.572f, 3109.19f, 58.12433f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 778 + ) + LocalObject( + 1083, + IFFLock.Constructor(Vector3(3768.813f, 3171.572f, 50.62433f), Vector3(0, 0, 90)), + owning_building_guid = 25, + door_guid = 780 + ) + LocalObject( + 1084, + IFFLock.Constructor(Vector3(3775.06f, 3112.428f, 50.62433f), Vector3(0, 0, 270)), + owning_building_guid = 25, + door_guid = 781 + ) LocalObject(1391, Locker.Constructor(Vector3(3767.563f, 3112.141f, 57.04933f)), owning_building_guid = 25) LocalObject(1392, Locker.Constructor(Vector3(3768.727f, 3112.141f, 57.04933f)), owning_building_guid = 25) LocalObject(1393, Locker.Constructor(Vector3(3769.874f, 3112.141f, 57.04933f)), owning_building_guid = 25) @@ -681,60 +1844,233 @@ object Map07 { // Esamir LocalObject(1400, Locker.Constructor(Vector3(3788.055f, 3132.165f, 49.28833f)), owning_building_guid = 25) LocalObject(1401, Locker.Constructor(Vector3(3789.391f, 3132.165f, 49.28833f)), owning_building_guid = 25) LocalObject(1402, Locker.Constructor(Vector3(3790.728f, 3132.165f, 49.28833f)), owning_building_guid = 25) - LocalObject(1842, Terminal.Constructor(Vector3(3710.379f, 3078.907f, 73.14833f), order_terminal), owning_building_guid = 25) - LocalObject(1843, Terminal.Constructor(Vector3(3720.075f, 3094.547f, 80.54333f), order_terminal), owning_building_guid = 25) - LocalObject(1844, Terminal.Constructor(Vector3(3722.331f, 3092.43f, 80.54333f), order_terminal), owning_building_guid = 25) - LocalObject(1845, Terminal.Constructor(Vector3(3722.332f, 3096.825f, 80.54333f), order_terminal), owning_building_guid = 25) - LocalObject(1846, Terminal.Constructor(Vector3(3770.654f, 3117.408f, 58.37833f), order_terminal), owning_building_guid = 25) - LocalObject(1847, Terminal.Constructor(Vector3(3770.654f, 3121.139f, 58.37833f), order_terminal), owning_building_guid = 25) - LocalObject(1848, Terminal.Constructor(Vector3(3770.654f, 3124.928f, 58.37833f), order_terminal), owning_building_guid = 25) - LocalObject(2598, Terminal.Constructor(Vector3(3703.943f, 3110.591f, 50.84533f), spawn_terminal), owning_building_guid = 25) - LocalObject(2599, Terminal.Constructor(Vector3(3718.51f, 3077.969f, 73.40533f), spawn_terminal), owning_building_guid = 25) - LocalObject(2600, Terminal.Constructor(Vector3(3719.409f, 3141.942f, 60.84533f), spawn_terminal), owning_building_guid = 25) - LocalObject(2601, Terminal.Constructor(Vector3(3756.971f, 3113.243f, 58.92233f), spawn_terminal), owning_building_guid = 25) - LocalObject(2602, Terminal.Constructor(Vector3(3756.967f, 3120.535f, 58.92233f), spawn_terminal), owning_building_guid = 25) - LocalObject(2603, Terminal.Constructor(Vector3(3756.97f, 3127.823f, 58.92233f), spawn_terminal), owning_building_guid = 25) - LocalObject(2811, Terminal.Constructor(Vector3(3772.458f, 3156.774f, 69.47533f), vehicle_terminal_combined), owning_building_guid = 25) - LocalObject(1733, VehicleSpawnPad.Constructor(Vector3(3758.833f, 3156.62f, 65.31733f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 25, terminal_guid = 2811) + LocalObject( + 1842, + Terminal.Constructor(Vector3(3710.379f, 3078.907f, 73.14833f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1843, + Terminal.Constructor(Vector3(3720.075f, 3094.547f, 80.54333f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1844, + Terminal.Constructor(Vector3(3722.331f, 3092.43f, 80.54333f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1845, + Terminal.Constructor(Vector3(3722.332f, 3096.825f, 80.54333f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1846, + Terminal.Constructor(Vector3(3770.654f, 3117.408f, 58.37833f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1847, + Terminal.Constructor(Vector3(3770.654f, 3121.139f, 58.37833f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1848, + Terminal.Constructor(Vector3(3770.654f, 3124.928f, 58.37833f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2598, + Terminal.Constructor(Vector3(3703.943f, 3110.591f, 50.84533f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2599, + Terminal.Constructor(Vector3(3718.51f, 3077.969f, 73.40533f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2600, + Terminal.Constructor(Vector3(3719.409f, 3141.942f, 60.84533f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2601, + Terminal.Constructor(Vector3(3756.971f, 3113.243f, 58.92233f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2602, + Terminal.Constructor(Vector3(3756.967f, 3120.535f, 58.92233f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2603, + Terminal.Constructor(Vector3(3756.97f, 3127.823f, 58.92233f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2811, + Terminal.Constructor(Vector3(3772.458f, 3156.774f, 69.47533f), vehicle_terminal_combined), + owning_building_guid = 25 + ) + LocalObject( + 1733, + VehicleSpawnPad.Constructor(Vector3(3758.833f, 3156.62f, 65.31733f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 25, + terminal_guid = 2811 + ) LocalObject(2429, ResourceSilo.Constructor(Vector3(3664.23f, 3032.908f, 73.80534f)), owning_building_guid = 25) - LocalObject(2482, SpawnTube.Constructor(Vector3(3756.233f, 3114.683f, 56.78833f), Vector3(0, 0, 0)), owning_building_guid = 25) - LocalObject(2483, SpawnTube.Constructor(Vector3(3756.233f, 3121.974f, 56.78833f), Vector3(0, 0, 0)), owning_building_guid = 25) - LocalObject(2484, SpawnTube.Constructor(Vector3(3756.233f, 3129.262f, 56.78833f), Vector3(0, 0, 0)), owning_building_guid = 25) - LocalObject(1755, ProximityTerminal.Constructor(Vector3(3720.864f, 3073.023f, 66.78833f), medical_terminal), owning_building_guid = 25) - LocalObject(1756, ProximityTerminal.Constructor(Vector3(3784.444f, 3131.62f, 49.28833f), medical_terminal), owning_building_guid = 25) - LocalObject(2060, ProximityTerminal.Constructor(Vector3(3701.154f, 3157.185f, 75.02934f), pad_landing_frame), owning_building_guid = 25) - LocalObject(2061, Terminal.Constructor(Vector3(3701.154f, 3157.185f, 75.02934f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(2374, ProximityTerminal.Constructor(Vector3(3658.912f, 3125.18f, 66.33833f), repair_silo), owning_building_guid = 25) - LocalObject(2375, Terminal.Constructor(Vector3(3658.912f, 3125.18f, 66.33833f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(2378, ProximityTerminal.Constructor(Vector3(3781.641f, 3077.67f, 66.33833f), repair_silo), owning_building_guid = 25) - LocalObject(2379, Terminal.Constructor(Vector3(3781.641f, 3077.67f, 66.33833f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(1668, FacilityTurret.Constructor(Vector3(3646.424f, 3140.652f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 2482, + SpawnTube.Constructor(Vector3(3756.233f, 3114.683f, 56.78833f), Vector3(0, 0, 0)), + owning_building_guid = 25 + ) + LocalObject( + 2483, + SpawnTube.Constructor(Vector3(3756.233f, 3121.974f, 56.78833f), Vector3(0, 0, 0)), + owning_building_guid = 25 + ) + LocalObject( + 2484, + SpawnTube.Constructor(Vector3(3756.233f, 3129.262f, 56.78833f), Vector3(0, 0, 0)), + owning_building_guid = 25 + ) + LocalObject( + 1755, + ProximityTerminal.Constructor(Vector3(3720.864f, 3073.023f, 66.78833f), medical_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1756, + ProximityTerminal.Constructor(Vector3(3784.444f, 3131.62f, 49.28833f), medical_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2060, + ProximityTerminal.Constructor(Vector3(3701.154f, 3157.185f, 75.02934f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 2061, + Terminal.Constructor(Vector3(3701.154f, 3157.185f, 75.02934f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2374, + ProximityTerminal.Constructor(Vector3(3658.912f, 3125.18f, 66.33833f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 2375, + Terminal.Constructor(Vector3(3658.912f, 3125.18f, 66.33833f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2378, + ProximityTerminal.Constructor(Vector3(3781.641f, 3077.67f, 66.33833f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 2379, + Terminal.Constructor(Vector3(3781.641f, 3077.67f, 66.33833f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1668, + FacilityTurret.Constructor(Vector3(3646.424f, 3140.652f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1668, 5024) - LocalObject(1669, FacilityTurret.Constructor(Vector3(3647.554f, 3021.565f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 1669, + FacilityTurret.Constructor(Vector3(3647.554f, 3021.565f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1669, 5025) - LocalObject(1671, FacilityTurret.Constructor(Vector3(3689.549f, 3183.75f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 1671, + FacilityTurret.Constructor(Vector3(3689.549f, 3183.75f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1671, 5026) - LocalObject(1672, FacilityTurret.Constructor(Vector3(3750.865f, 3020.388f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 1672, + FacilityTurret.Constructor(Vector3(3750.865f, 3020.388f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1672, 5027) - LocalObject(1673, FacilityTurret.Constructor(Vector3(3792.841f, 3182.435f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 1673, + FacilityTurret.Constructor(Vector3(3792.841f, 3182.435f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1673, 5028) - LocalObject(1674, FacilityTurret.Constructor(Vector3(3794.01f, 3063.501f, 75.29633f), manned_turret), owning_building_guid = 25) + LocalObject( + 1674, + FacilityTurret.Constructor(Vector3(3794.01f, 3063.501f, 75.29633f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1674, 5029) - LocalObject(2172, Painbox.Constructor(Vector3(3700.138f, 3138.089f, 54.19033f), painbox), owning_building_guid = 25) - LocalObject(2185, Painbox.Constructor(Vector3(3766.215f, 3128.17f, 61.23313f), painbox_continuous), owning_building_guid = 25) - LocalObject(2198, Painbox.Constructor(Vector3(3700.237f, 3123.073f, 52.04704f), painbox_door_radius), owning_building_guid = 25) - LocalObject(2225, Painbox.Constructor(Vector3(3763.914f, 3108.076f, 58.61433f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(2226, Painbox.Constructor(Vector3(3764.81f, 3135.42f, 58.39603f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(2227, Painbox.Constructor(Vector3(3777.855f, 3129.827f, 59.61433f), painbox_door_radius_continuous), owning_building_guid = 25) + LocalObject( + 2172, + Painbox.Constructor(Vector3(3700.138f, 3138.089f, 54.19033f), painbox), + owning_building_guid = 25 + ) + LocalObject( + 2185, + Painbox.Constructor(Vector3(3766.215f, 3128.17f, 61.23313f), painbox_continuous), + owning_building_guid = 25 + ) + LocalObject( + 2198, + Painbox.Constructor(Vector3(3700.237f, 3123.073f, 52.04704f), painbox_door_radius), + owning_building_guid = 25 + ) + LocalObject( + 2225, + Painbox.Constructor(Vector3(3763.914f, 3108.076f, 58.61433f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 2226, + Painbox.Constructor(Vector3(3764.81f, 3135.42f, 58.39603f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 2227, + Painbox.Constructor(Vector3(3777.855f, 3129.827f, 59.61433f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) LocalObject(288, Generator.Constructor(Vector3(3699.975f, 3141.555f, 47.99433f)), owning_building_guid = 25) - LocalObject(275, Terminal.Constructor(Vector3(3700.022f, 3133.363f, 49.28833f), gen_control), owning_building_guid = 25) + LocalObject( + 275, + Terminal.Constructor(Vector3(3700.022f, 3133.363f, 49.28833f), gen_control), + owning_building_guid = 25 + ) } Building5() def Building5(): Unit = { // Name: Andvari Type: comm_station_dsp GUID: 28, MapID: 5 - LocalBuilding("Andvari", 28, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3172f, 7272f, 77.53838f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(214, CaptureTerminal.Constructor(Vector3(3248.089f, 7252.734f, 60.13837f), capture_terminal), owning_building_guid = 28) + LocalBuilding( + "Andvari", + 28, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3172f, 7272f, 77.53838f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 214, + CaptureTerminal.Constructor(Vector3(3248.089f, 7252.734f, 60.13837f), capture_terminal), + owning_building_guid = 28 + ) LocalObject(261, Door.Constructor(Vector3(3240.339f, 7342.464f, 80.91637f)), owning_building_guid = 28) LocalObject(397, Door.Constructor(Vector3(3112.196f, 7228.501f, 79.18938f)), owning_building_guid = 28) LocalObject(398, Door.Constructor(Vector3(3112.196f, 7246.693f, 87.15337f)), owning_building_guid = 28) @@ -780,20 +2116,90 @@ object Map07 { // Esamir LocalObject(2666, Door.Constructor(Vector3(3208.673f, 7285.733f, 69.49238f)), owning_building_guid = 28) LocalObject(2667, Door.Constructor(Vector3(3208.673f, 7293.026f, 69.49238f)), owning_building_guid = 28) LocalObject(2668, Door.Constructor(Vector3(3208.673f, 7300.315f, 69.49238f)), owning_building_guid = 28) - LocalObject(938, IFFLock.Constructor(Vector3(3192.454f, 7271.09f, 79.10638f), Vector3(0, 0, 90)), owning_building_guid = 28, door_guid = 894) - LocalObject(1028, IFFLock.Constructor(Vector3(3149.959f, 7273.104f, 84.10638f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 403) - LocalObject(1029, IFFLock.Constructor(Vector3(3154.04f, 7262.42f, 84.10638f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 402) - LocalObject(1030, IFFLock.Constructor(Vector3(3166.817f, 7262.514f, 91.60638f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 405) - LocalObject(1031, IFFLock.Constructor(Vector3(3179.193f, 7289.962f, 84.10638f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 407) - LocalObject(1032, IFFLock.Constructor(Vector3(3212.94f, 7333.572f, 61.47438f), Vector3(0, 0, 90)), owning_building_guid = 28, door_guid = 729) - LocalObject(1033, IFFLock.Constructor(Vector3(3214.428f, 7304.94f, 68.97437f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 732) - LocalObject(1034, IFFLock.Constructor(Vector3(3217.572f, 7279.19f, 68.97437f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 731) - LocalObject(1035, IFFLock.Constructor(Vector3(3223.907f, 7377.163f, 84.08537f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 410) - LocalObject(1036, IFFLock.Constructor(Vector3(3227.06f, 7282.428f, 61.47438f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 733) - LocalObject(1037, IFFLock.Constructor(Vector3(3227.124f, 7344.312f, 79.15038f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 411) - LocalObject(1042, IFFLock.Constructor(Vector3(3243.06f, 7242.428f, 61.47438f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 736) - LocalObject(1044, IFFLock.Constructor(Vector3(3252.813f, 7245.572f, 61.47438f), Vector3(0, 0, 90)), owning_building_guid = 28, door_guid = 737) - LocalObject(1051, IFFLock.Constructor(Vector3(3285.953f, 7352.808f, 79.04938f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 430) + LocalObject( + 938, + IFFLock.Constructor(Vector3(3192.454f, 7271.09f, 79.10638f), Vector3(0, 0, 90)), + owning_building_guid = 28, + door_guid = 894 + ) + LocalObject( + 1028, + IFFLock.Constructor(Vector3(3149.959f, 7273.104f, 84.10638f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 403 + ) + LocalObject( + 1029, + IFFLock.Constructor(Vector3(3154.04f, 7262.42f, 84.10638f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 402 + ) + LocalObject( + 1030, + IFFLock.Constructor(Vector3(3166.817f, 7262.514f, 91.60638f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 405 + ) + LocalObject( + 1031, + IFFLock.Constructor(Vector3(3179.193f, 7289.962f, 84.10638f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 407 + ) + LocalObject( + 1032, + IFFLock.Constructor(Vector3(3212.94f, 7333.572f, 61.47438f), Vector3(0, 0, 90)), + owning_building_guid = 28, + door_guid = 729 + ) + LocalObject( + 1033, + IFFLock.Constructor(Vector3(3214.428f, 7304.94f, 68.97437f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 732 + ) + LocalObject( + 1034, + IFFLock.Constructor(Vector3(3217.572f, 7279.19f, 68.97437f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 731 + ) + LocalObject( + 1035, + IFFLock.Constructor(Vector3(3223.907f, 7377.163f, 84.08537f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 410 + ) + LocalObject( + 1036, + IFFLock.Constructor(Vector3(3227.06f, 7282.428f, 61.47438f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 733 + ) + LocalObject( + 1037, + IFFLock.Constructor(Vector3(3227.124f, 7344.312f, 79.15038f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 411 + ) + LocalObject( + 1042, + IFFLock.Constructor(Vector3(3243.06f, 7242.428f, 61.47438f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 736 + ) + LocalObject( + 1044, + IFFLock.Constructor(Vector3(3252.813f, 7245.572f, 61.47438f), Vector3(0, 0, 90)), + owning_building_guid = 28, + door_guid = 737 + ) + LocalObject( + 1051, + IFFLock.Constructor(Vector3(3285.953f, 7352.808f, 79.04938f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 430 + ) LocalObject(1319, Locker.Constructor(Vector3(3219.563f, 7282.141f, 67.89938f)), owning_building_guid = 28) LocalObject(1320, Locker.Constructor(Vector3(3220.727f, 7282.141f, 67.89938f)), owning_building_guid = 28) LocalObject(1321, Locker.Constructor(Vector3(3221.874f, 7282.141f, 67.89938f)), owning_building_guid = 28) @@ -806,76 +2212,306 @@ object Map07 { // Esamir LocalObject(1332, Locker.Constructor(Vector3(3240.055f, 7302.165f, 60.13837f)), owning_building_guid = 28) LocalObject(1333, Locker.Constructor(Vector3(3241.391f, 7302.165f, 60.13837f)), owning_building_guid = 28) LocalObject(1336, Locker.Constructor(Vector3(3242.728f, 7302.165f, 60.13837f)), owning_building_guid = 28) - LocalObject(263, Terminal.Constructor(Vector3(3231.879f, 7374.918f, 83.24238f), dropship_vehicle_terminal), owning_building_guid = 28) - LocalObject(262, VehicleSpawnPad.Constructor(Vector3(3240.328f, 7396.856f, 77.56638f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 28, terminal_guid = 263) - LocalObject(1812, Terminal.Constructor(Vector3(3162.378f, 7248.897f, 83.99837f), order_terminal), owning_building_guid = 28) - LocalObject(1813, Terminal.Constructor(Vector3(3172.075f, 7264.547f, 91.39337f), order_terminal), owning_building_guid = 28) - LocalObject(1814, Terminal.Constructor(Vector3(3174.331f, 7262.43f, 91.39337f), order_terminal), owning_building_guid = 28) - LocalObject(1815, Terminal.Constructor(Vector3(3174.332f, 7266.825f, 91.39337f), order_terminal), owning_building_guid = 28) - LocalObject(1816, Terminal.Constructor(Vector3(3176.592f, 7264.59f, 91.39337f), order_terminal), owning_building_guid = 28) - LocalObject(1817, Terminal.Constructor(Vector3(3222.654f, 7287.408f, 69.22838f), order_terminal), owning_building_guid = 28) - LocalObject(1818, Terminal.Constructor(Vector3(3222.654f, 7291.139f, 69.22838f), order_terminal), owning_building_guid = 28) - LocalObject(1819, Terminal.Constructor(Vector3(3222.654f, 7294.928f, 69.22838f), order_terminal), owning_building_guid = 28) - LocalObject(2582, Terminal.Constructor(Vector3(3170.509f, 7247.959f, 84.25538f), spawn_terminal), owning_building_guid = 28) - LocalObject(2583, Terminal.Constructor(Vector3(3208.971f, 7283.243f, 69.77238f), spawn_terminal), owning_building_guid = 28) - LocalObject(2584, Terminal.Constructor(Vector3(3208.967f, 7290.535f, 69.77238f), spawn_terminal), owning_building_guid = 28) - LocalObject(2585, Terminal.Constructor(Vector3(3208.97f, 7297.823f, 69.77238f), spawn_terminal), owning_building_guid = 28) - LocalObject(2586, Terminal.Constructor(Vector3(3227.103f, 7366.906f, 84.18638f), spawn_terminal), owning_building_guid = 28) - LocalObject(2587, Terminal.Constructor(Vector3(3236.058f, 7271.409f, 61.66637f), spawn_terminal), owning_building_guid = 28) - LocalObject(2588, Terminal.Constructor(Vector3(3243.409f, 7327.942f, 61.66637f), spawn_terminal), owning_building_guid = 28) - LocalObject(2589, Terminal.Constructor(Vector3(3252.058f, 7279.409f, 69.19537f), spawn_terminal), owning_building_guid = 28) - LocalObject(2590, Terminal.Constructor(Vector3(3252.058f, 7319.409f, 69.19537f), spawn_terminal), owning_building_guid = 28) - LocalObject(2809, Terminal.Constructor(Vector3(3189.698f, 7380.044f, 80.32538f), ground_vehicle_terminal), owning_building_guid = 28) - LocalObject(1729, VehicleSpawnPad.Constructor(Vector3(3189.786f, 7366.411f, 76.16737f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 28, terminal_guid = 2809) + LocalObject( + 263, + Terminal.Constructor(Vector3(3231.879f, 7374.918f, 83.24238f), dropship_vehicle_terminal), + owning_building_guid = 28 + ) + LocalObject( + 262, + VehicleSpawnPad.Constructor(Vector3(3240.328f, 7396.856f, 77.56638f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 28, + terminal_guid = 263 + ) + LocalObject( + 1812, + Terminal.Constructor(Vector3(3162.378f, 7248.897f, 83.99837f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1813, + Terminal.Constructor(Vector3(3172.075f, 7264.547f, 91.39337f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1814, + Terminal.Constructor(Vector3(3174.331f, 7262.43f, 91.39337f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1815, + Terminal.Constructor(Vector3(3174.332f, 7266.825f, 91.39337f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1816, + Terminal.Constructor(Vector3(3176.592f, 7264.59f, 91.39337f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1817, + Terminal.Constructor(Vector3(3222.654f, 7287.408f, 69.22838f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1818, + Terminal.Constructor(Vector3(3222.654f, 7291.139f, 69.22838f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1819, + Terminal.Constructor(Vector3(3222.654f, 7294.928f, 69.22838f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2582, + Terminal.Constructor(Vector3(3170.509f, 7247.959f, 84.25538f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2583, + Terminal.Constructor(Vector3(3208.971f, 7283.243f, 69.77238f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2584, + Terminal.Constructor(Vector3(3208.967f, 7290.535f, 69.77238f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2585, + Terminal.Constructor(Vector3(3208.97f, 7297.823f, 69.77238f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2586, + Terminal.Constructor(Vector3(3227.103f, 7366.906f, 84.18638f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2587, + Terminal.Constructor(Vector3(3236.058f, 7271.409f, 61.66637f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2588, + Terminal.Constructor(Vector3(3243.409f, 7327.942f, 61.66637f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2589, + Terminal.Constructor(Vector3(3252.058f, 7279.409f, 69.19537f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2590, + Terminal.Constructor(Vector3(3252.058f, 7319.409f, 69.19537f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2809, + Terminal.Constructor(Vector3(3189.698f, 7380.044f, 80.32538f), ground_vehicle_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1729, + VehicleSpawnPad.Constructor(Vector3(3189.786f, 7366.411f, 76.16737f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 28, + terminal_guid = 2809 + ) LocalObject(2427, ResourceSilo.Constructor(Vector3(3270.212f, 7437.642f, 84.65537f)), owning_building_guid = 28) - LocalObject(2464, SpawnTube.Constructor(Vector3(3208.233f, 7284.683f, 67.63837f), Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(2465, SpawnTube.Constructor(Vector3(3208.233f, 7291.974f, 67.63837f), Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(2466, SpawnTube.Constructor(Vector3(3208.233f, 7299.262f, 67.63837f), Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(1751, ProximityTerminal.Constructor(Vector3(3172.863f, 7243.013f, 77.63837f), medical_terminal), owning_building_guid = 28) - LocalObject(1752, ProximityTerminal.Constructor(Vector3(3236.444f, 7301.62f, 60.13837f), medical_terminal), owning_building_guid = 28) - LocalObject(2030, ProximityTerminal.Constructor(Vector3(3153.153f, 7365.398f, 85.94838f), pad_landing_frame), owning_building_guid = 28) - LocalObject(2031, Terminal.Constructor(Vector3(3153.153f, 7365.398f, 85.94838f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(2033, ProximityTerminal.Constructor(Vector3(3169.514f, 7319.467f, 83.23238f), pad_landing_frame), owning_building_guid = 28) - LocalObject(2034, Terminal.Constructor(Vector3(3169.514f, 7319.467f, 83.23238f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(2036, ProximityTerminal.Constructor(Vector3(3221.804f, 7283.901f, 90.41438f), pad_landing_frame), owning_building_guid = 28) - LocalObject(2037, Terminal.Constructor(Vector3(3221.804f, 7283.901f, 90.41438f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(2039, ProximityTerminal.Constructor(Vector3(3257.071f, 7300.159f, 85.96138f), pad_landing_frame), owning_building_guid = 28) - LocalObject(2040, Terminal.Constructor(Vector3(3257.071f, 7300.159f, 85.96138f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(2358, ProximityTerminal.Constructor(Vector3(3110.642f, 7310.241f, 77.28838f), repair_silo), owning_building_guid = 28) - LocalObject(2359, Terminal.Constructor(Vector3(3110.642f, 7310.241f, 77.28838f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(2362, ProximityTerminal.Constructor(Vector3(3280.57f, 7313.151f, 77.28838f), repair_silo), owning_building_guid = 28) - LocalObject(2363, Terminal.Constructor(Vector3(3280.57f, 7313.151f, 77.28838f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(1643, FacilityTurret.Constructor(Vector3(3098.401f, 7345.113f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 2464, + SpawnTube.Constructor(Vector3(3208.233f, 7284.683f, 67.63837f), Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 2465, + SpawnTube.Constructor(Vector3(3208.233f, 7291.974f, 67.63837f), Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 2466, + SpawnTube.Constructor(Vector3(3208.233f, 7299.262f, 67.63837f), Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 1751, + ProximityTerminal.Constructor(Vector3(3172.863f, 7243.013f, 77.63837f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1752, + ProximityTerminal.Constructor(Vector3(3236.444f, 7301.62f, 60.13837f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2030, + ProximityTerminal.Constructor(Vector3(3153.153f, 7365.398f, 85.94838f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 2031, + Terminal.Constructor(Vector3(3153.153f, 7365.398f, 85.94838f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2033, + ProximityTerminal.Constructor(Vector3(3169.514f, 7319.467f, 83.23238f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 2034, + Terminal.Constructor(Vector3(3169.514f, 7319.467f, 83.23238f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2036, + ProximityTerminal.Constructor(Vector3(3221.804f, 7283.901f, 90.41438f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 2037, + Terminal.Constructor(Vector3(3221.804f, 7283.901f, 90.41438f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2039, + ProximityTerminal.Constructor(Vector3(3257.071f, 7300.159f, 85.96138f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 2040, + Terminal.Constructor(Vector3(3257.071f, 7300.159f, 85.96138f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2358, + ProximityTerminal.Constructor(Vector3(3110.642f, 7310.241f, 77.28838f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 2359, + Terminal.Constructor(Vector3(3110.642f, 7310.241f, 77.28838f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2362, + ProximityTerminal.Constructor(Vector3(3280.57f, 7313.151f, 77.28838f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 2363, + Terminal.Constructor(Vector3(3280.57f, 7313.151f, 77.28838f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1643, + FacilityTurret.Constructor(Vector3(3098.401f, 7345.113f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1643, 5030) - LocalObject(1644, FacilityTurret.Constructor(Vector3(3099.554f, 7191.565f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1644, + FacilityTurret.Constructor(Vector3(3099.554f, 7191.565f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1644, 5031) - LocalObject(1645, FacilityTurret.Constructor(Vector3(3143.445f, 7391.667f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1645, + FacilityTurret.Constructor(Vector3(3143.445f, 7391.667f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1645, 5032) - LocalObject(1646, FacilityTurret.Constructor(Vector3(3202.428f, 7190.396f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1646, + FacilityTurret.Constructor(Vector3(3202.428f, 7190.396f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1646, 5033) - LocalObject(1647, FacilityTurret.Constructor(Vector3(3203.449f, 7450.154f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1647, + FacilityTurret.Constructor(Vector3(3203.449f, 7450.154f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1647, 5034) - LocalObject(1649, FacilityTurret.Constructor(Vector3(3244.537f, 7231.011f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1649, + FacilityTurret.Constructor(Vector3(3244.537f, 7231.011f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1649, 5035) - LocalObject(1654, FacilityTurret.Constructor(Vector3(3291.619f, 7448.985f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1654, + FacilityTurret.Constructor(Vector3(3291.619f, 7448.985f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1654, 5036) - LocalObject(1655, FacilityTurret.Constructor(Vector3(3292.773f, 7280.733f, 86.14638f), manned_turret), owning_building_guid = 28) + LocalObject( + 1655, + FacilityTurret.Constructor(Vector3(3292.773f, 7280.733f, 86.14638f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1655, 5037) - LocalObject(2170, Painbox.Constructor(Vector3(3200.428f, 7332.057f, 64.03268f), painbox), owning_building_guid = 28) - LocalObject(2183, Painbox.Constructor(Vector3(3217.857f, 7292.408f, 71.66588f), painbox_continuous), owning_building_guid = 28) - LocalObject(2196, Painbox.Constructor(Vector3(3214.203f, 7330.915f, 63.27058f), painbox_door_radius), owning_building_guid = 28) - LocalObject(2219, Painbox.Constructor(Vector3(3215.087f, 7277.386f, 70.06757f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(2220, Painbox.Constructor(Vector3(3215.895f, 7306.081f, 70.53838f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(2221, Painbox.Constructor(Vector3(3230.317f, 7299.888f, 70.96867f), painbox_door_radius_continuous), owning_building_guid = 28) + LocalObject( + 2170, + Painbox.Constructor(Vector3(3200.428f, 7332.057f, 64.03268f), painbox), + owning_building_guid = 28 + ) + LocalObject( + 2183, + Painbox.Constructor(Vector3(3217.857f, 7292.408f, 71.66588f), painbox_continuous), + owning_building_guid = 28 + ) + LocalObject( + 2196, + Painbox.Constructor(Vector3(3214.203f, 7330.915f, 63.27058f), painbox_door_radius), + owning_building_guid = 28 + ) + LocalObject( + 2219, + Painbox.Constructor(Vector3(3215.087f, 7277.386f, 70.06757f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 2220, + Painbox.Constructor(Vector3(3215.895f, 7306.081f, 70.53838f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 2221, + Painbox.Constructor(Vector3(3230.317f, 7299.888f, 70.96867f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) LocalObject(286, Generator.Constructor(Vector3(3196.445f, 7331.975f, 58.84438f)), owning_building_guid = 28) - LocalObject(273, Terminal.Constructor(Vector3(3204.637f, 7332.022f, 60.13837f), gen_control), owning_building_guid = 28) + LocalObject( + 273, + Terminal.Constructor(Vector3(3204.637f, 7332.022f, 60.13837f), gen_control), + owning_building_guid = 28 + ) } Building15() def Building15(): Unit = { // Name: ymir Type: cryo_facility GUID: 31, MapID: 15 - LocalBuilding("ymir", 31, 15, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1860f, 3946f, 69.04202f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(210, CaptureTerminal.Constructor(Vector3(1831.911f, 4005.266f, 59.04202f), capture_terminal), owning_building_guid = 31) + LocalBuilding( + "ymir", + 31, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1860f, 3946f, 69.04202f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 210, + CaptureTerminal.Constructor(Vector3(1831.911f, 4005.266f, 59.04202f), capture_terminal), + owning_building_guid = 31 + ) LocalObject(325, Door.Constructor(Vector3(1801.023f, 3950.5f, 70.59303f)), owning_building_guid = 31) LocalObject(326, Door.Constructor(Vector3(1801.023f, 3968.693f, 78.55702f)), owning_building_guid = 31) LocalObject(327, Door.Constructor(Vector3(1817.674f, 4013.803f, 70.59303f)), owning_building_guid = 31) @@ -916,15 +2552,60 @@ object Map07 { // Esamir LocalObject(2648, Door.Constructor(Vector3(1864.673f, 3951.733f, 60.89602f)), owning_building_guid = 31) LocalObject(2649, Door.Constructor(Vector3(1864.673f, 3959.026f, 60.89602f)), owning_building_guid = 31) LocalObject(2650, Door.Constructor(Vector3(1864.673f, 3966.315f, 60.89602f)), owning_building_guid = 31) - LocalObject(934, IFFLock.Constructor(Vector3(1860.77f, 3973.822f, 70.52402f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 890) - LocalObject(978, IFFLock.Constructor(Vector3(1827.06f, 4012.428f, 60.37802f), Vector3(0, 0, 270)), owning_building_guid = 31, door_guid = 633) - LocalObject(979, IFFLock.Constructor(Vector3(1836.813f, 4015.572f, 60.37802f), Vector3(0, 0, 90)), owning_building_guid = 31, door_guid = 634) - LocalObject(980, IFFLock.Constructor(Vector3(1844.814f, 3968.043f, 80.49402f), Vector3(0, 0, 90)), owning_building_guid = 31, door_guid = 333) - LocalObject(981, IFFLock.Constructor(Vector3(1861.954f, 3949.958f, 80.49402f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 334) - LocalObject(982, IFFLock.Constructor(Vector3(1870.428f, 3970.81f, 60.37802f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 648) - LocalObject(983, IFFLock.Constructor(Vector3(1873.572f, 3945.19f, 60.37802f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 647) - LocalObject(984, IFFLock.Constructor(Vector3(1883.19f, 3948.428f, 52.87802f), Vector3(0, 0, 270)), owning_building_guid = 31, door_guid = 649) - LocalObject(985, IFFLock.Constructor(Vector3(1892.814f, 3856.042f, 70.49403f), Vector3(0, 0, 90)), owning_building_guid = 31, door_guid = 337) + LocalObject( + 934, + IFFLock.Constructor(Vector3(1860.77f, 3973.822f, 70.52402f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 890 + ) + LocalObject( + 978, + IFFLock.Constructor(Vector3(1827.06f, 4012.428f, 60.37802f), Vector3(0, 0, 270)), + owning_building_guid = 31, + door_guid = 633 + ) + LocalObject( + 979, + IFFLock.Constructor(Vector3(1836.813f, 4015.572f, 60.37802f), Vector3(0, 0, 90)), + owning_building_guid = 31, + door_guid = 634 + ) + LocalObject( + 980, + IFFLock.Constructor(Vector3(1844.814f, 3968.043f, 80.49402f), Vector3(0, 0, 90)), + owning_building_guid = 31, + door_guid = 333 + ) + LocalObject( + 981, + IFFLock.Constructor(Vector3(1861.954f, 3949.958f, 80.49402f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 334 + ) + LocalObject( + 982, + IFFLock.Constructor(Vector3(1870.428f, 3970.81f, 60.37802f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 648 + ) + LocalObject( + 983, + IFFLock.Constructor(Vector3(1873.572f, 3945.19f, 60.37802f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 647 + ) + LocalObject( + 984, + IFFLock.Constructor(Vector3(1883.19f, 3948.428f, 52.87802f), Vector3(0, 0, 270)), + owning_building_guid = 31, + door_guid = 649 + ) + LocalObject( + 985, + IFFLock.Constructor(Vector3(1892.814f, 3856.042f, 70.49403f), Vector3(0, 0, 90)), + owning_building_guid = 31, + door_guid = 337 + ) LocalObject(1229, Locker.Constructor(Vector3(1875.563f, 3948.141f, 59.30302f)), owning_building_guid = 31) LocalObject(1230, Locker.Constructor(Vector3(1876.727f, 3948.141f, 59.30302f)), owning_building_guid = 31) LocalObject(1231, Locker.Constructor(Vector3(1877.874f, 3948.141f, 59.30302f)), owning_building_guid = 31) @@ -954,76 +2635,309 @@ object Map07 { // Esamir LocalObject(1573, Locker.Constructor(Vector3(1878.26f, 3940.46f, 68.81303f)), owning_building_guid = 31) LocalObject(1574, Locker.Constructor(Vector3(1878.26f, 3942.982f, 69.04202f)), owning_building_guid = 31) LocalObject(1575, Locker.Constructor(Vector3(1878.26f, 3944.016f, 69.04202f)), owning_building_guid = 31) - LocalObject(222, Terminal.Constructor(Vector3(1862.276f, 3994.25f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(223, Terminal.Constructor(Vector3(1862.276f, 4001.575f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(224, Terminal.Constructor(Vector3(1863.724f, 3992.802f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(225, Terminal.Constructor(Vector3(1863.724f, 4003.023f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(226, Terminal.Constructor(Vector3(1876.424f, 3992.802f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(227, Terminal.Constructor(Vector3(1876.424f, 4003.023f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(228, Terminal.Constructor(Vector3(1877.872f, 3994.25f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(229, Terminal.Constructor(Vector3(1877.872f, 4001.575f, 59.03202f), cert_terminal), owning_building_guid = 31) - LocalObject(1782, Terminal.Constructor(Vector3(1849.972f, 3955.526f, 70.33702f), order_terminal), owning_building_guid = 31) - LocalObject(1783, Terminal.Constructor(Vector3(1878.654f, 3953.408f, 60.63202f), order_terminal), owning_building_guid = 31) - LocalObject(1784, Terminal.Constructor(Vector3(1878.654f, 3957.139f, 60.63202f), order_terminal), owning_building_guid = 31) - LocalObject(1785, Terminal.Constructor(Vector3(1878.654f, 3960.928f, 60.63202f), order_terminal), owning_building_guid = 31) - LocalObject(2556, Terminal.Constructor(Vector3(1820f, 3945.407f, 60.65502f), spawn_terminal), owning_building_guid = 31) - LocalObject(2557, Terminal.Constructor(Vector3(1843.91f, 3889.41f, 63.15502f), spawn_terminal), owning_building_guid = 31) - LocalObject(2558, Terminal.Constructor(Vector3(1859.407f, 4010f, 60.65502f), spawn_terminal), owning_building_guid = 31) - LocalObject(2559, Terminal.Constructor(Vector3(1861.905f, 3932.359f, 70.62103f), spawn_terminal), owning_building_guid = 31) - LocalObject(2560, Terminal.Constructor(Vector3(1864.971f, 3949.243f, 61.17602f), spawn_terminal), owning_building_guid = 31) - LocalObject(2561, Terminal.Constructor(Vector3(1864.967f, 3956.535f, 61.17602f), spawn_terminal), owning_building_guid = 31) - LocalObject(2562, Terminal.Constructor(Vector3(1864.97f, 3963.823f, 61.17602f), spawn_terminal), owning_building_guid = 31) - LocalObject(2805, Terminal.Constructor(Vector3(1897.628f, 3882.814f, 71.34702f), vehicle_terminal_combined), owning_building_guid = 31) - LocalObject(1725, VehicleSpawnPad.Constructor(Vector3(1883.989f, 3882.724f, 67.18903f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 31, terminal_guid = 2805) + LocalObject( + 222, + Terminal.Constructor(Vector3(1862.276f, 3994.25f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 223, + Terminal.Constructor(Vector3(1862.276f, 4001.575f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(1863.724f, 3992.802f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(1863.724f, 4003.023f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(1876.424f, 3992.802f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 227, + Terminal.Constructor(Vector3(1876.424f, 4003.023f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(1877.872f, 3994.25f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(1877.872f, 4001.575f, 59.03202f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1782, + Terminal.Constructor(Vector3(1849.972f, 3955.526f, 70.33702f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1783, + Terminal.Constructor(Vector3(1878.654f, 3953.408f, 60.63202f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1784, + Terminal.Constructor(Vector3(1878.654f, 3957.139f, 60.63202f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1785, + Terminal.Constructor(Vector3(1878.654f, 3960.928f, 60.63202f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2556, + Terminal.Constructor(Vector3(1820f, 3945.407f, 60.65502f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2557, + Terminal.Constructor(Vector3(1843.91f, 3889.41f, 63.15502f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2558, + Terminal.Constructor(Vector3(1859.407f, 4010f, 60.65502f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2559, + Terminal.Constructor(Vector3(1861.905f, 3932.359f, 70.62103f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2560, + Terminal.Constructor(Vector3(1864.971f, 3949.243f, 61.17602f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2561, + Terminal.Constructor(Vector3(1864.967f, 3956.535f, 61.17602f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2562, + Terminal.Constructor(Vector3(1864.97f, 3963.823f, 61.17602f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2805, + Terminal.Constructor(Vector3(1897.628f, 3882.814f, 71.34702f), vehicle_terminal_combined), + owning_building_guid = 31 + ) + LocalObject( + 1725, + VehicleSpawnPad.Constructor(Vector3(1883.989f, 3882.724f, 67.18903f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 31, + terminal_guid = 2805 + ) LocalObject(2423, ResourceSilo.Constructor(Vector3(1799.733f, 3996.852f, 76.05902f)), owning_building_guid = 31) - LocalObject(2446, SpawnTube.Constructor(Vector3(1864.233f, 3950.683f, 59.04202f), Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(2447, SpawnTube.Constructor(Vector3(1864.233f, 3957.974f, 59.04202f), Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(2448, SpawnTube.Constructor(Vector3(1864.233f, 3965.262f, 59.04202f), Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(153, ProximityTerminal.Constructor(Vector3(1861.983f, 3938.892f, 68.85202f), adv_med_terminal), owning_building_guid = 31) - LocalObject(1745, ProximityTerminal.Constructor(Vector3(1887.642f, 3949.952f, 59.04202f), medical_terminal), owning_building_guid = 31) - LocalObject(1991, ProximityTerminal.Constructor(Vector3(1841.883f, 3884.061f, 79.33502f), pad_landing_frame), owning_building_guid = 31) - LocalObject(1992, Terminal.Constructor(Vector3(1841.883f, 3884.061f, 79.33502f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(1994, ProximityTerminal.Constructor(Vector3(1845.101f, 3999.651f, 77.38403f), pad_landing_frame), owning_building_guid = 31) - LocalObject(1995, Terminal.Constructor(Vector3(1845.101f, 3999.651f, 77.38403f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(1997, ProximityTerminal.Constructor(Vector3(1858.198f, 3876.777f, 77.39402f), pad_landing_frame), owning_building_guid = 31) - LocalObject(1998, Terminal.Constructor(Vector3(1858.198f, 3876.777f, 77.39402f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(2000, ProximityTerminal.Constructor(Vector3(1861.323f, 3991.253f, 79.37402f), pad_landing_frame), owning_building_guid = 31) - LocalObject(2001, Terminal.Constructor(Vector3(1861.323f, 3991.253f, 79.37402f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(2326, ProximityTerminal.Constructor(Vector3(1824.525f, 3861.154f, 68.79202f), repair_silo), owning_building_guid = 31) - LocalObject(2327, Terminal.Constructor(Vector3(1824.525f, 3861.154f, 68.79202f), ground_rearm_terminal), owning_building_guid = 31) - LocalObject(2330, ProximityTerminal.Constructor(Vector3(1912.53f, 3961.861f, 68.79202f), repair_silo), owning_building_guid = 31) - LocalObject(2331, Terminal.Constructor(Vector3(1912.53f, 3961.861f, 68.79202f), ground_rearm_terminal), owning_building_guid = 31) - LocalObject(1613, FacilityTurret.Constructor(Vector3(1788.392f, 4026.472f, 77.44402f), manned_turret), owning_building_guid = 31) + LocalObject( + 2446, + SpawnTube.Constructor(Vector3(1864.233f, 3950.683f, 59.04202f), Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 2447, + SpawnTube.Constructor(Vector3(1864.233f, 3957.974f, 59.04202f), Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 2448, + SpawnTube.Constructor(Vector3(1864.233f, 3965.262f, 59.04202f), Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 153, + ProximityTerminal.Constructor(Vector3(1861.983f, 3938.892f, 68.85202f), adv_med_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1745, + ProximityTerminal.Constructor(Vector3(1887.642f, 3949.952f, 59.04202f), medical_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1991, + ProximityTerminal.Constructor(Vector3(1841.883f, 3884.061f, 79.33502f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 1992, + Terminal.Constructor(Vector3(1841.883f, 3884.061f, 79.33502f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1994, + ProximityTerminal.Constructor(Vector3(1845.101f, 3999.651f, 77.38403f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 1995, + Terminal.Constructor(Vector3(1845.101f, 3999.651f, 77.38403f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1997, + ProximityTerminal.Constructor(Vector3(1858.198f, 3876.777f, 77.39402f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 1998, + Terminal.Constructor(Vector3(1858.198f, 3876.777f, 77.39402f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2000, + ProximityTerminal.Constructor(Vector3(1861.323f, 3991.253f, 79.37402f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 2001, + Terminal.Constructor(Vector3(1861.323f, 3991.253f, 79.37402f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2326, + ProximityTerminal.Constructor(Vector3(1824.525f, 3861.154f, 68.79202f), repair_silo), + owning_building_guid = 31 + ) + LocalObject( + 2327, + Terminal.Constructor(Vector3(1824.525f, 3861.154f, 68.79202f), ground_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 2330, + ProximityTerminal.Constructor(Vector3(1912.53f, 3961.861f, 68.79202f), repair_silo), + owning_building_guid = 31 + ) + LocalObject( + 2331, + Terminal.Constructor(Vector3(1912.53f, 3961.861f, 68.79202f), ground_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1613, + FacilityTurret.Constructor(Vector3(1788.392f, 4026.472f, 77.44402f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(1613, 5038) - LocalObject(1614, FacilityTurret.Constructor(Vector3(1788.4f, 3849.379f, 77.44402f), manned_turret), owning_building_guid = 31) + LocalObject( + 1614, + FacilityTurret.Constructor(Vector3(1788.4f, 3849.379f, 77.44402f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(1614, 5039) - LocalObject(1617, FacilityTurret.Constructor(Vector3(1881.665f, 4027.605f, 77.44402f), manned_turret), owning_building_guid = 31) + LocalObject( + 1617, + FacilityTurret.Constructor(Vector3(1881.665f, 4027.605f, 77.44402f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(1617, 5040) - LocalObject(1619, FacilityTurret.Constructor(Vector3(1923.626f, 3849.371f, 77.44402f), manned_turret), owning_building_guid = 31) + LocalObject( + 1619, + FacilityTurret.Constructor(Vector3(1923.626f, 3849.371f, 77.44402f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(1619, 5041) - LocalObject(1620, FacilityTurret.Constructor(Vector3(1924.813f, 3984.496f, 77.44402f), manned_turret), owning_building_guid = 31) + LocalObject( + 1620, + FacilityTurret.Constructor(Vector3(1924.813f, 3984.496f, 77.44402f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(1620, 5042) - LocalObject(914, ImplantTerminalMech.Constructor(Vector3(1870.066f, 3990.368f, 58.51902f)), owning_building_guid = 31) - LocalObject(908, Terminal.Constructor(Vector3(1870.066f, 3990.386f, 58.51902f), implant_terminal_interface), owning_building_guid = 31) + LocalObject( + 914, + ImplantTerminalMech.Constructor(Vector3(1870.066f, 3990.368f, 58.51902f)), + owning_building_guid = 31 + ) + LocalObject( + 908, + Terminal.Constructor(Vector3(1870.066f, 3990.386f, 58.51902f), implant_terminal_interface), + owning_building_guid = 31 + ) TerminalToInterface(914, 908) - LocalObject(915, ImplantTerminalMech.Constructor(Vector3(1870.054f, 4005.724f, 58.51902f)), owning_building_guid = 31) - LocalObject(909, Terminal.Constructor(Vector3(1870.054f, 4005.706f, 58.51902f), implant_terminal_interface), owning_building_guid = 31) + LocalObject( + 915, + ImplantTerminalMech.Constructor(Vector3(1870.054f, 4005.724f, 58.51902f)), + owning_building_guid = 31 + ) + LocalObject( + 909, + Terminal.Constructor(Vector3(1870.054f, 4005.706f, 58.51902f), implant_terminal_interface), + owning_building_guid = 31 + ) TerminalToInterface(915, 909) - LocalObject(2166, Painbox.Constructor(Vector3(1865.593f, 3926.334f, 83.07082f), painbox), owning_building_guid = 31) - LocalObject(2179, Painbox.Constructor(Vector3(1874.753f, 3953.712f, 63.11192f), painbox_continuous), owning_building_guid = 31) - LocalObject(2192, Painbox.Constructor(Vector3(1864.182f, 3940.798f, 83.27592f), painbox_door_radius), owning_building_guid = 31) - LocalObject(2207, Painbox.Constructor(Vector3(1870.54f, 3943.793f, 61.39792f), painbox_door_radius_continuous), owning_building_guid = 31) - LocalObject(2208, Painbox.Constructor(Vector3(1872.516f, 3971.831f, 60.75622f), painbox_door_radius_continuous), owning_building_guid = 31) - LocalObject(2209, Painbox.Constructor(Vector3(1887.882f, 3965.05f, 62.58292f), painbox_door_radius_continuous), owning_building_guid = 31) + LocalObject( + 2166, + Painbox.Constructor(Vector3(1865.593f, 3926.334f, 83.07082f), painbox), + owning_building_guid = 31 + ) + LocalObject( + 2179, + Painbox.Constructor(Vector3(1874.753f, 3953.712f, 63.11192f), painbox_continuous), + owning_building_guid = 31 + ) + LocalObject( + 2192, + Painbox.Constructor(Vector3(1864.182f, 3940.798f, 83.27592f), painbox_door_radius), + owning_building_guid = 31 + ) + LocalObject( + 2207, + Painbox.Constructor(Vector3(1870.54f, 3943.793f, 61.39792f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 2208, + Painbox.Constructor(Vector3(1872.516f, 3971.831f, 60.75622f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 2209, + Painbox.Constructor(Vector3(1887.882f, 3965.05f, 62.58292f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) LocalObject(282, Generator.Constructor(Vector3(1864.025f, 3922.445f, 77.74802f)), owning_building_guid = 31) - LocalObject(269, Terminal.Constructor(Vector3(1863.978f, 3930.637f, 79.04202f), gen_control), owning_building_guid = 31) + LocalObject( + 269, + Terminal.Constructor(Vector3(1863.978f, 3930.637f, 79.04202f), gen_control), + owning_building_guid = 31 + ) } Building17() def Building17(): Unit = { // Name: Ran Type: cryo_facility GUID: 34, MapID: 17 - LocalBuilding("Ran", 34, 17, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2342f, 1992f, 85.51286f), Vector3(0f, 0f, 246f), cryo_facility))) - LocalObject(212, CaptureTerminal.Constructor(Vector3(2407.567f, 1993.555f, 75.51286f), capture_terminal), owning_building_guid = 34) + LocalBuilding( + "Ran", + 34, + 17, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2342f, 1992f, 85.51286f), + Vector3(0f, 0f, 246f), + cryo_facility + ) + ) + ) + LocalObject( + 212, + CaptureTerminal.Constructor(Vector3(2407.567f, 1993.555f, 75.51286f), capture_terminal), + owning_building_guid = 34 + ) LocalObject(358, Door.Constructor(Vector3(2244.938f, 2000.186f, 87.03387f)), owning_building_guid = 34) LocalObject(359, Door.Constructor(Vector3(2256.684f, 2004.261f, 87.06387f)), owning_building_guid = 34) LocalObject(360, Door.Constructor(Vector3(2264.084f, 2020.881f, 95.02786f)), owning_building_guid = 34) @@ -1064,15 +2978,60 @@ object Map07 { // Esamir LocalObject(2660, Door.Constructor(Vector3(2345.337f, 1985.399f, 77.36687f)), owning_building_guid = 34) LocalObject(2661, Door.Constructor(Vector3(2351.999f, 1982.433f, 77.36687f)), owning_building_guid = 34) LocalObject(2662, Door.Constructor(Vector3(2358.658f, 1979.468f, 77.36687f)), owning_building_guid = 34) - LocalObject(936, IFFLock.Constructor(Vector3(2367.104f, 1979.98f, 86.99487f), Vector3(0, 0, 114)), owning_building_guid = 34, door_guid = 892) - LocalObject(1001, IFFLock.Constructor(Vector3(2246.473f, 1998.612f, 86.96487f), Vector3(0, 0, 204)), owning_building_guid = 34, door_guid = 358) - LocalObject(1010, IFFLock.Constructor(Vector3(2334.786f, 1969.827f, 69.34886f), Vector3(0, 0, 24)), owning_building_guid = 34, door_guid = 681) - LocalObject(1011, IFFLock.Constructor(Vector3(2335.74f, 1979.931f, 76.84886f), Vector3(0, 0, 294)), owning_building_guid = 34, door_guid = 682) - LocalObject(1012, IFFLock.Constructor(Vector3(2344.821f, 1988.605f, 96.96486f), Vector3(0, 0, 114)), owning_building_guid = 34, door_guid = 372) - LocalObject(1013, IFFLock.Constructor(Vector3(2360.424f, 1972.382f, 76.84886f), Vector3(0, 0, 114)), owning_building_guid = 34, door_guid = 688) - LocalObject(1014, IFFLock.Constructor(Vector3(2368.314f, 1996.907f, 96.96486f), Vector3(0, 0, 204)), owning_building_guid = 34, door_guid = 374) - LocalObject(1015, IFFLock.Constructor(Vector3(2414.988f, 1984.885f, 76.84886f), Vector3(0, 0, 204)), owning_building_guid = 34, door_guid = 696) - LocalObject(1016, IFFLock.Constructor(Vector3(2416.083f, 1995.073f, 76.84886f), Vector3(0, 0, 24)), owning_building_guid = 34, door_guid = 697) + LocalObject( + 936, + IFFLock.Constructor(Vector3(2367.104f, 1979.98f, 86.99487f), Vector3(0, 0, 114)), + owning_building_guid = 34, + door_guid = 892 + ) + LocalObject( + 1001, + IFFLock.Constructor(Vector3(2246.473f, 1998.612f, 86.96487f), Vector3(0, 0, 204)), + owning_building_guid = 34, + door_guid = 358 + ) + LocalObject( + 1010, + IFFLock.Constructor(Vector3(2334.786f, 1969.827f, 69.34886f), Vector3(0, 0, 24)), + owning_building_guid = 34, + door_guid = 681 + ) + LocalObject( + 1011, + IFFLock.Constructor(Vector3(2335.74f, 1979.931f, 76.84886f), Vector3(0, 0, 294)), + owning_building_guid = 34, + door_guid = 682 + ) + LocalObject( + 1012, + IFFLock.Constructor(Vector3(2344.821f, 1988.605f, 96.96486f), Vector3(0, 0, 114)), + owning_building_guid = 34, + door_guid = 372 + ) + LocalObject( + 1013, + IFFLock.Constructor(Vector3(2360.424f, 1972.382f, 76.84886f), Vector3(0, 0, 114)), + owning_building_guid = 34, + door_guid = 688 + ) + LocalObject( + 1014, + IFFLock.Constructor(Vector3(2368.314f, 1996.907f, 96.96486f), Vector3(0, 0, 204)), + owning_building_guid = 34, + door_guid = 374 + ) + LocalObject( + 1015, + IFFLock.Constructor(Vector3(2414.988f, 1984.885f, 76.84886f), Vector3(0, 0, 204)), + owning_building_guid = 34, + door_guid = 696 + ) + LocalObject( + 1016, + IFFLock.Constructor(Vector3(2416.083f, 1995.073f, 76.84886f), Vector3(0, 0, 24)), + owning_building_guid = 34, + door_guid = 697 + ) LocalObject(1286, Locker.Constructor(Vector3(2328.66f, 1956.236f, 75.42086f)), owning_building_guid = 34) LocalObject(1287, Locker.Constructor(Vector3(2329.089f, 1957.2f, 75.42086f)), owning_building_guid = 34) LocalObject(1288, Locker.Constructor(Vector3(2329.52f, 1958.168f, 75.42086f)), owning_building_guid = 34) @@ -1102,76 +3061,309 @@ object Map07 { // Esamir LocalObject(1581, Locker.Constructor(Vector3(2329.512f, 1977.572f, 85.28387f)), owning_building_guid = 34) LocalObject(1582, Locker.Constructor(Vector3(2331.816f, 1976.546f, 85.51286f)), owning_building_guid = 34) LocalObject(1583, Locker.Constructor(Vector3(2332.76f, 1976.126f, 85.51286f)), owning_building_guid = 34) - LocalObject(230, Terminal.Constructor(Vector3(2378.075f, 1957.96f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(231, Terminal.Constructor(Vector3(2378.809f, 1956.048f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(232, Terminal.Constructor(Vector3(2383.241f, 1969.562f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(233, Terminal.Constructor(Vector3(2385.153f, 1970.296f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(234, Terminal.Constructor(Vector3(2385.501f, 1953.069f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(235, Terminal.Constructor(Vector3(2387.413f, 1953.803f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(236, Terminal.Constructor(Vector3(2391.844f, 1967.316f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(237, Terminal.Constructor(Vector3(2392.578f, 1965.405f, 75.50286f), cert_terminal), owning_building_guid = 34) - LocalObject(1802, Terminal.Constructor(Vector3(2341.18f, 1971.946f, 77.10286f), order_terminal), owning_building_guid = 34) - LocalObject(1803, Terminal.Constructor(Vector3(2344.589f, 1970.428f, 77.10286f), order_terminal), owning_building_guid = 34) - LocalObject(1804, Terminal.Constructor(Vector3(2348.05f, 1968.887f, 77.10286f), order_terminal), owning_building_guid = 34) - LocalObject(1805, Terminal.Constructor(Vector3(2354.781f, 1997.286f, 86.80786f), order_terminal), owning_building_guid = 34) - LocalObject(2569, Terminal.Constructor(Vector3(2296.847f, 2029.716f, 79.62586f), spawn_terminal), owning_building_guid = 34) - LocalObject(2570, Terminal.Constructor(Vector3(2328.763f, 1995.808f, 87.09187f), spawn_terminal), owning_building_guid = 34) - LocalObject(2571, Terminal.Constructor(Vector3(2342.941f, 1986.14f, 77.64687f), spawn_terminal), owning_building_guid = 34) - LocalObject(2572, Terminal.Constructor(Vector3(2349.604f, 1983.177f, 77.64687f), spawn_terminal), owning_building_guid = 34) - LocalObject(2573, Terminal.Constructor(Vector3(2356.261f, 1980.21f, 77.64687f), spawn_terminal), owning_building_guid = 34) - LocalObject(2574, Terminal.Constructor(Vector3(2357.728f, 2028.783f, 77.12586f), spawn_terminal), owning_building_guid = 34) - LocalObject(2575, Terminal.Constructor(Vector3(2400.708f, 1966.511f, 77.12586f), spawn_terminal), owning_building_guid = 34) - LocalObject(2807, Terminal.Constructor(Vector3(2268.972f, 1983.325f, 87.81786f), vehicle_terminal_combined), owning_building_guid = 34) - LocalObject(1727, VehicleSpawnPad.Constructor(Vector3(2274.437f, 1995.822f, 83.65987f), mb_pad_creation, Vector3(0, 0, 24)), owning_building_guid = 34, terminal_guid = 2807) + LocalObject( + 230, + Terminal.Constructor(Vector3(2378.075f, 1957.96f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(2378.809f, 1956.048f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(2383.241f, 1969.562f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(2385.153f, 1970.296f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 234, + Terminal.Constructor(Vector3(2385.501f, 1953.069f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 235, + Terminal.Constructor(Vector3(2387.413f, 1953.803f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 236, + Terminal.Constructor(Vector3(2391.844f, 1967.316f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 237, + Terminal.Constructor(Vector3(2392.578f, 1965.405f, 75.50286f), cert_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1802, + Terminal.Constructor(Vector3(2341.18f, 1971.946f, 77.10286f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1803, + Terminal.Constructor(Vector3(2344.589f, 1970.428f, 77.10286f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1804, + Terminal.Constructor(Vector3(2348.05f, 1968.887f, 77.10286f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1805, + Terminal.Constructor(Vector3(2354.781f, 1997.286f, 86.80786f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2569, + Terminal.Constructor(Vector3(2296.847f, 2029.716f, 79.62586f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2570, + Terminal.Constructor(Vector3(2328.763f, 1995.808f, 87.09187f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2571, + Terminal.Constructor(Vector3(2342.941f, 1986.14f, 77.64687f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2572, + Terminal.Constructor(Vector3(2349.604f, 1983.177f, 77.64687f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2573, + Terminal.Constructor(Vector3(2356.261f, 1980.21f, 77.64687f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2574, + Terminal.Constructor(Vector3(2357.728f, 2028.783f, 77.12586f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2575, + Terminal.Constructor(Vector3(2400.708f, 1966.511f, 77.12586f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2807, + Terminal.Constructor(Vector3(2268.972f, 1983.325f, 87.81786f), vehicle_terminal_combined), + owning_building_guid = 34 + ) + LocalObject( + 1727, + VehicleSpawnPad.Constructor(Vector3(2274.437f, 1995.822f, 83.65987f), mb_pad_creation, Vector3(0, 0, 24)), + owning_building_guid = 34, + terminal_guid = 2807 + ) LocalObject(2425, ResourceSilo.Constructor(Vector3(2412.969f, 2026.373f, 92.52986f)), owning_building_guid = 34) - LocalObject(2458, SpawnTube.Constructor(Vector3(2344.556f, 1986.228f, 75.51286f), Vector3(0, 0, 114)), owning_building_guid = 34) - LocalObject(2459, SpawnTube.Constructor(Vector3(2351.217f, 1983.263f, 75.51286f), Vector3(0, 0, 114)), owning_building_guid = 34) - LocalObject(2460, SpawnTube.Constructor(Vector3(2357.875f, 1980.298f, 75.51286f), Vector3(0, 0, 114)), owning_building_guid = 34) - LocalObject(154, ProximityTerminal.Constructor(Vector3(2334.7f, 1993.079f, 85.32286f), adv_med_terminal), owning_building_guid = 34) - LocalObject(1748, ProximityTerminal.Constructor(Vector3(2334.367f, 1965.14f, 75.51286f), medical_terminal), owning_building_guid = 34) - LocalObject(2006, ProximityTerminal.Constructor(Vector3(2279.495f, 2021.802f, 93.86486f), pad_landing_frame), owning_building_guid = 34) - LocalObject(2007, Terminal.Constructor(Vector3(2279.495f, 2021.802f, 93.86486f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(2009, ProximityTerminal.Constructor(Vector3(2292.785f, 2033.744f, 95.80586f), pad_landing_frame), owning_building_guid = 34) - LocalObject(2010, Terminal.Constructor(Vector3(2292.785f, 2033.744f, 95.80586f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(2012, ProximityTerminal.Constructor(Vector3(2382.802f, 1972.385f, 95.84486f), pad_landing_frame), owning_building_guid = 34) - LocalObject(2013, Terminal.Constructor(Vector3(2382.802f, 1972.385f, 95.84486f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(2015, ProximityTerminal.Constructor(Vector3(2397.073f, 1983.789f, 93.85487f), pad_landing_frame), owning_building_guid = 34) - LocalObject(2016, Terminal.Constructor(Vector3(2397.073f, 1983.789f, 93.85487f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(2342, ProximityTerminal.Constructor(Vector3(2278.918f, 2058.918f, 85.26286f), repair_silo), owning_building_guid = 34) - LocalObject(2343, Terminal.Constructor(Vector3(2278.918f, 2058.918f, 85.26286f), ground_rearm_terminal), owning_building_guid = 34) - LocalObject(2346, ProximityTerminal.Constructor(Vector3(2335.124f, 1937.56f, 85.26286f), repair_silo), owning_building_guid = 34) - LocalObject(2347, Terminal.Constructor(Vector3(2335.124f, 1937.56f, 85.26286f), ground_rearm_terminal), owning_building_guid = 34) - LocalObject(1627, FacilityTurret.Constructor(Vector3(2227.846f, 1973.177f, 93.91486f), manned_turret), owning_building_guid = 34) + LocalObject( + 2458, + SpawnTube.Constructor(Vector3(2344.556f, 1986.228f, 75.51286f), Vector3(0, 0, 114)), + owning_building_guid = 34 + ) + LocalObject( + 2459, + SpawnTube.Constructor(Vector3(2351.217f, 1983.263f, 75.51286f), Vector3(0, 0, 114)), + owning_building_guid = 34 + ) + LocalObject( + 2460, + SpawnTube.Constructor(Vector3(2357.875f, 1980.298f, 75.51286f), Vector3(0, 0, 114)), + owning_building_guid = 34 + ) + LocalObject( + 154, + ProximityTerminal.Constructor(Vector3(2334.7f, 1993.079f, 85.32286f), adv_med_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1748, + ProximityTerminal.Constructor(Vector3(2334.367f, 1965.14f, 75.51286f), medical_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2006, + ProximityTerminal.Constructor(Vector3(2279.495f, 2021.802f, 93.86486f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 2007, + Terminal.Constructor(Vector3(2279.495f, 2021.802f, 93.86486f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2009, + ProximityTerminal.Constructor(Vector3(2292.785f, 2033.744f, 95.80586f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 2010, + Terminal.Constructor(Vector3(2292.785f, 2033.744f, 95.80586f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2012, + ProximityTerminal.Constructor(Vector3(2382.802f, 1972.385f, 95.84486f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 2013, + Terminal.Constructor(Vector3(2382.802f, 1972.385f, 95.84486f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2015, + ProximityTerminal.Constructor(Vector3(2397.073f, 1983.789f, 93.85487f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 2016, + Terminal.Constructor(Vector3(2397.073f, 1983.789f, 93.85487f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2342, + ProximityTerminal.Constructor(Vector3(2278.918f, 2058.918f, 85.26286f), repair_silo), + owning_building_guid = 34 + ) + LocalObject( + 2343, + Terminal.Constructor(Vector3(2278.918f, 2058.918f, 85.26286f), ground_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2346, + ProximityTerminal.Constructor(Vector3(2335.124f, 1937.56f, 85.26286f), repair_silo), + owning_building_guid = 34 + ) + LocalObject( + 2347, + Terminal.Constructor(Vector3(2335.124f, 1937.56f, 85.26286f), ground_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1627, + FacilityTurret.Constructor(Vector3(2227.846f, 1973.177f, 93.91486f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1627, 5043) - LocalObject(1629, FacilityTurret.Constructor(Vector3(2282.855f, 2096.709f, 93.91486f), manned_turret), owning_building_guid = 34) + LocalObject( + 1629, + FacilityTurret.Constructor(Vector3(2282.855f, 2096.709f, 93.91486f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1629, 5044) - LocalObject(1634, FacilityTurret.Constructor(Vector3(2350.806f, 1917.133f, 93.91486f), manned_turret), owning_building_guid = 34) + LocalObject( + 1634, + FacilityTurret.Constructor(Vector3(2350.806f, 1917.133f, 93.91486f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1634, 5045) - LocalObject(1635, FacilityTurret.Constructor(Vector3(2407.738f, 1939.016f, 93.91486f), manned_turret), owning_building_guid = 34) + LocalObject( + 1635, + FacilityTurret.Constructor(Vector3(2407.738f, 1939.016f, 93.91486f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1635, 5046) - LocalObject(1636, FacilityTurret.Constructor(Vector3(2444.64f, 2024.686f, 93.91486f), manned_turret), owning_building_guid = 34) + LocalObject( + 1636, + FacilityTurret.Constructor(Vector3(2444.64f, 2024.686f, 93.91486f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1636, 5047) - LocalObject(916, ImplantTerminalMech.Constructor(Vector3(2378.438f, 1964.758f, 74.98986f)), owning_building_guid = 34) - LocalObject(910, Terminal.Constructor(Vector3(2378.454f, 1964.751f, 74.98986f), implant_terminal_interface), owning_building_guid = 34) + LocalObject( + 916, + ImplantTerminalMech.Constructor(Vector3(2378.438f, 1964.758f, 74.98986f)), + owning_building_guid = 34 + ) + LocalObject( + 910, + Terminal.Constructor(Vector3(2378.454f, 1964.751f, 74.98986f), implant_terminal_interface), + owning_building_guid = 34 + ) TerminalToInterface(916, 910) - LocalObject(917, ImplantTerminalMech.Constructor(Vector3(2392.471f, 1958.523f, 74.98986f)), owning_building_guid = 34) - LocalObject(911, Terminal.Constructor(Vector3(2392.455f, 1958.531f, 74.98986f), implant_terminal_interface), owning_building_guid = 34) + LocalObject( + 917, + ImplantTerminalMech.Constructor(Vector3(2392.471f, 1958.523f, 74.98986f)), + owning_building_guid = 34 + ) + LocalObject( + 911, + Terminal.Constructor(Vector3(2392.455f, 1958.531f, 74.98986f), implant_terminal_interface), + owning_building_guid = 34 + ) TerminalToInterface(917, 911) - LocalObject(2168, Painbox.Constructor(Vector3(2321.759f, 1994.889f, 99.54166f), painbox), owning_building_guid = 34) - LocalObject(2181, Painbox.Constructor(Vector3(2343.045f, 1975.386f, 79.58276f), painbox_continuous), owning_building_guid = 34) - LocalObject(2194, Painbox.Constructor(Vector3(2335.547f, 1990.295f, 99.74677f), painbox_door_radius), owning_building_guid = 34) - LocalObject(2213, Painbox.Constructor(Vector3(2335.697f, 1983.269f, 77.86876f), painbox_door_radius_continuous), owning_building_guid = 34) - LocalObject(2214, Painbox.Constructor(Vector3(2348.063f, 1958.781f, 79.05376f), painbox_door_radius_continuous), owning_building_guid = 34) - LocalObject(2215, Painbox.Constructor(Vector3(2360.507f, 1970.06f, 77.22707f), painbox_door_radius_continuous), owning_building_guid = 34) + LocalObject( + 2168, + Painbox.Constructor(Vector3(2321.759f, 1994.889f, 99.54166f), painbox), + owning_building_guid = 34 + ) + LocalObject( + 2181, + Painbox.Constructor(Vector3(2343.045f, 1975.386f, 79.58276f), painbox_continuous), + owning_building_guid = 34 + ) + LocalObject( + 2194, + Painbox.Constructor(Vector3(2335.547f, 1990.295f, 99.74677f), painbox_door_radius), + owning_building_guid = 34 + ) + LocalObject( + 2213, + Painbox.Constructor(Vector3(2335.697f, 1983.269f, 77.86876f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 2214, + Painbox.Constructor(Vector3(2348.063f, 1958.781f, 79.05376f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 2215, + Painbox.Constructor(Vector3(2360.507f, 1970.06f, 77.22707f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) LocalObject(284, Generator.Constructor(Vector3(2318.844f, 1997.904f, 94.21886f)), owning_building_guid = 34) - LocalObject(271, Terminal.Constructor(Vector3(2326.347f, 1994.615f, 95.51286f), gen_control), owning_building_guid = 34) + LocalObject( + 271, + Terminal.Constructor(Vector3(2326.347f, 1994.615f, 95.51286f), gen_control), + owning_building_guid = 34 + ) } Building12() def Building12(): Unit = { // Name: Mani Type: cryo_facility GUID: 37, MapID: 12 - LocalBuilding("Mani", 37, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5008f, 4926f, 57.77154f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(219, CaptureTerminal.Constructor(Vector3(4979.911f, 4985.266f, 47.77154f), capture_terminal), owning_building_guid = 37) + LocalBuilding( + "Mani", + 37, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5008f, 4926f, 57.77154f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 219, + CaptureTerminal.Constructor(Vector3(4979.911f, 4985.266f, 47.77154f), capture_terminal), + owning_building_guid = 37 + ) LocalObject(525, Door.Constructor(Vector3(4949.023f, 4930.5f, 59.32254f)), owning_building_guid = 37) LocalObject(526, Door.Constructor(Vector3(4949.023f, 4948.693f, 67.28654f)), owning_building_guid = 37) LocalObject(527, Door.Constructor(Vector3(4965.674f, 4993.803f, 59.32254f)), owning_building_guid = 37) @@ -1212,15 +3404,60 @@ object Map07 { // Esamir LocalObject(2705, Door.Constructor(Vector3(5012.673f, 4931.733f, 49.62554f)), owning_building_guid = 37) LocalObject(2706, Door.Constructor(Vector3(5012.673f, 4939.026f, 49.62554f)), owning_building_guid = 37) LocalObject(2707, Door.Constructor(Vector3(5012.673f, 4946.315f, 49.62554f)), owning_building_guid = 37) - LocalObject(943, IFFLock.Constructor(Vector3(5008.77f, 4953.822f, 59.25354f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 899) - LocalObject(1124, IFFLock.Constructor(Vector3(4975.06f, 4992.428f, 49.10754f), Vector3(0, 0, 270)), owning_building_guid = 37, door_guid = 830) - LocalObject(1129, IFFLock.Constructor(Vector3(4984.813f, 4995.572f, 49.10754f), Vector3(0, 0, 90)), owning_building_guid = 37, door_guid = 831) - LocalObject(1130, IFFLock.Constructor(Vector3(4992.814f, 4948.043f, 69.22354f), Vector3(0, 0, 90)), owning_building_guid = 37, door_guid = 533) - LocalObject(1133, IFFLock.Constructor(Vector3(5009.954f, 4929.958f, 69.22354f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 538) - LocalObject(1136, IFFLock.Constructor(Vector3(5018.428f, 4950.81f, 49.10754f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 845) - LocalObject(1137, IFFLock.Constructor(Vector3(5021.572f, 4925.19f, 49.10754f), Vector3(0, 0, 180)), owning_building_guid = 37, door_guid = 844) - LocalObject(1138, IFFLock.Constructor(Vector3(5031.19f, 4928.428f, 41.60754f), Vector3(0, 0, 270)), owning_building_guid = 37, door_guid = 846) - LocalObject(1139, IFFLock.Constructor(Vector3(5040.814f, 4836.042f, 59.22354f), Vector3(0, 0, 90)), owning_building_guid = 37, door_guid = 541) + LocalObject( + 943, + IFFLock.Constructor(Vector3(5008.77f, 4953.822f, 59.25354f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 899 + ) + LocalObject( + 1124, + IFFLock.Constructor(Vector3(4975.06f, 4992.428f, 49.10754f), Vector3(0, 0, 270)), + owning_building_guid = 37, + door_guid = 830 + ) + LocalObject( + 1129, + IFFLock.Constructor(Vector3(4984.813f, 4995.572f, 49.10754f), Vector3(0, 0, 90)), + owning_building_guid = 37, + door_guid = 831 + ) + LocalObject( + 1130, + IFFLock.Constructor(Vector3(4992.814f, 4948.043f, 69.22354f), Vector3(0, 0, 90)), + owning_building_guid = 37, + door_guid = 533 + ) + LocalObject( + 1133, + IFFLock.Constructor(Vector3(5009.954f, 4929.958f, 69.22354f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 538 + ) + LocalObject( + 1136, + IFFLock.Constructor(Vector3(5018.428f, 4950.81f, 49.10754f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 845 + ) + LocalObject( + 1137, + IFFLock.Constructor(Vector3(5021.572f, 4925.19f, 49.10754f), Vector3(0, 0, 180)), + owning_building_guid = 37, + door_guid = 844 + ) + LocalObject( + 1138, + IFFLock.Constructor(Vector3(5031.19f, 4928.428f, 41.60754f), Vector3(0, 0, 270)), + owning_building_guid = 37, + door_guid = 846 + ) + LocalObject( + 1139, + IFFLock.Constructor(Vector3(5040.814f, 4836.042f, 59.22354f), Vector3(0, 0, 90)), + owning_building_guid = 37, + door_guid = 541 + ) LocalObject(1475, Locker.Constructor(Vector3(5023.563f, 4928.141f, 48.03254f)), owning_building_guid = 37) LocalObject(1476, Locker.Constructor(Vector3(5024.727f, 4928.141f, 48.03254f)), owning_building_guid = 37) LocalObject(1477, Locker.Constructor(Vector3(5025.874f, 4928.141f, 48.03254f)), owning_building_guid = 37) @@ -1250,88 +3487,326 @@ object Map07 { // Esamir LocalObject(1589, Locker.Constructor(Vector3(5026.26f, 4920.46f, 57.54254f)), owning_building_guid = 37) LocalObject(1590, Locker.Constructor(Vector3(5026.26f, 4922.982f, 57.77154f)), owning_building_guid = 37) LocalObject(1591, Locker.Constructor(Vector3(5026.26f, 4924.016f, 57.77154f)), owning_building_guid = 37) - LocalObject(238, Terminal.Constructor(Vector3(5010.276f, 4974.25f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(239, Terminal.Constructor(Vector3(5010.276f, 4981.575f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(240, Terminal.Constructor(Vector3(5011.724f, 4972.802f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(241, Terminal.Constructor(Vector3(5011.724f, 4983.023f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(242, Terminal.Constructor(Vector3(5024.424f, 4972.802f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(243, Terminal.Constructor(Vector3(5024.424f, 4983.023f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(244, Terminal.Constructor(Vector3(5025.872f, 4974.25f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(245, Terminal.Constructor(Vector3(5025.872f, 4981.575f, 47.76154f), cert_terminal), owning_building_guid = 37) - LocalObject(1874, Terminal.Constructor(Vector3(4997.972f, 4935.526f, 59.06654f), order_terminal), owning_building_guid = 37) - LocalObject(1878, Terminal.Constructor(Vector3(5026.654f, 4933.408f, 49.36154f), order_terminal), owning_building_guid = 37) - LocalObject(1879, Terminal.Constructor(Vector3(5026.654f, 4937.139f, 49.36154f), order_terminal), owning_building_guid = 37) - LocalObject(1880, Terminal.Constructor(Vector3(5026.654f, 4940.928f, 49.36154f), order_terminal), owning_building_guid = 37) - LocalObject(2617, Terminal.Constructor(Vector3(4968f, 4925.407f, 49.38454f), spawn_terminal), owning_building_guid = 37) - LocalObject(2618, Terminal.Constructor(Vector3(4991.91f, 4869.41f, 51.88454f), spawn_terminal), owning_building_guid = 37) - LocalObject(2619, Terminal.Constructor(Vector3(5007.407f, 4990f, 49.38454f), spawn_terminal), owning_building_guid = 37) - LocalObject(2620, Terminal.Constructor(Vector3(5009.905f, 4912.359f, 59.35054f), spawn_terminal), owning_building_guid = 37) - LocalObject(2621, Terminal.Constructor(Vector3(5012.971f, 4929.243f, 49.90554f), spawn_terminal), owning_building_guid = 37) - LocalObject(2622, Terminal.Constructor(Vector3(5012.967f, 4936.535f, 49.90554f), spawn_terminal), owning_building_guid = 37) - LocalObject(2623, Terminal.Constructor(Vector3(5012.97f, 4943.823f, 49.90554f), spawn_terminal), owning_building_guid = 37) - LocalObject(2814, Terminal.Constructor(Vector3(5045.628f, 4862.814f, 60.07654f), vehicle_terminal_combined), owning_building_guid = 37) - LocalObject(1738, VehicleSpawnPad.Constructor(Vector3(5031.989f, 4862.724f, 55.91854f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 37, terminal_guid = 2814) + LocalObject( + 238, + Terminal.Constructor(Vector3(5010.276f, 4974.25f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 239, + Terminal.Constructor(Vector3(5010.276f, 4981.575f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 240, + Terminal.Constructor(Vector3(5011.724f, 4972.802f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 241, + Terminal.Constructor(Vector3(5011.724f, 4983.023f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 242, + Terminal.Constructor(Vector3(5024.424f, 4972.802f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 243, + Terminal.Constructor(Vector3(5024.424f, 4983.023f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 244, + Terminal.Constructor(Vector3(5025.872f, 4974.25f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 245, + Terminal.Constructor(Vector3(5025.872f, 4981.575f, 47.76154f), cert_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1874, + Terminal.Constructor(Vector3(4997.972f, 4935.526f, 59.06654f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1878, + Terminal.Constructor(Vector3(5026.654f, 4933.408f, 49.36154f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1879, + Terminal.Constructor(Vector3(5026.654f, 4937.139f, 49.36154f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1880, + Terminal.Constructor(Vector3(5026.654f, 4940.928f, 49.36154f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2617, + Terminal.Constructor(Vector3(4968f, 4925.407f, 49.38454f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2618, + Terminal.Constructor(Vector3(4991.91f, 4869.41f, 51.88454f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2619, + Terminal.Constructor(Vector3(5007.407f, 4990f, 49.38454f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2620, + Terminal.Constructor(Vector3(5009.905f, 4912.359f, 59.35054f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2621, + Terminal.Constructor(Vector3(5012.971f, 4929.243f, 49.90554f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2622, + Terminal.Constructor(Vector3(5012.967f, 4936.535f, 49.90554f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2623, + Terminal.Constructor(Vector3(5012.97f, 4943.823f, 49.90554f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2814, + Terminal.Constructor(Vector3(5045.628f, 4862.814f, 60.07654f), vehicle_terminal_combined), + owning_building_guid = 37 + ) + LocalObject( + 1738, + VehicleSpawnPad.Constructor(Vector3(5031.989f, 4862.724f, 55.91854f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 37, + terminal_guid = 2814 + ) LocalObject(2432, ResourceSilo.Constructor(Vector3(4947.733f, 4976.852f, 64.78854f)), owning_building_guid = 37) - LocalObject(2503, SpawnTube.Constructor(Vector3(5012.233f, 4930.683f, 47.77154f), Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(2504, SpawnTube.Constructor(Vector3(5012.233f, 4937.974f, 47.77154f), Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(2505, SpawnTube.Constructor(Vector3(5012.233f, 4945.262f, 47.77154f), Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(155, ProximityTerminal.Constructor(Vector3(5009.983f, 4918.892f, 57.58154f), adv_med_terminal), owning_building_guid = 37) - LocalObject(1761, ProximityTerminal.Constructor(Vector3(5035.642f, 4929.952f, 47.77154f), medical_terminal), owning_building_guid = 37) - LocalObject(2093, ProximityTerminal.Constructor(Vector3(4989.883f, 4864.061f, 68.06454f), pad_landing_frame), owning_building_guid = 37) - LocalObject(2094, Terminal.Constructor(Vector3(4989.883f, 4864.061f, 68.06454f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(2096, ProximityTerminal.Constructor(Vector3(4993.101f, 4979.651f, 66.11354f), pad_landing_frame), owning_building_guid = 37) - LocalObject(2097, Terminal.Constructor(Vector3(4993.101f, 4979.651f, 66.11354f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(2099, ProximityTerminal.Constructor(Vector3(5006.198f, 4856.777f, 66.12354f), pad_landing_frame), owning_building_guid = 37) - LocalObject(2100, Terminal.Constructor(Vector3(5006.198f, 4856.777f, 66.12354f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(2102, ProximityTerminal.Constructor(Vector3(5009.323f, 4971.253f, 68.10354f), pad_landing_frame), owning_building_guid = 37) - LocalObject(2103, Terminal.Constructor(Vector3(5009.323f, 4971.253f, 68.10354f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(2398, ProximityTerminal.Constructor(Vector3(4972.524f, 4841.154f, 57.52154f), repair_silo), owning_building_guid = 37) - LocalObject(2399, Terminal.Constructor(Vector3(4972.524f, 4841.154f, 57.52154f), ground_rearm_terminal), owning_building_guid = 37) - LocalObject(2402, ProximityTerminal.Constructor(Vector3(5060.53f, 4941.861f, 57.52154f), repair_silo), owning_building_guid = 37) - LocalObject(2403, Terminal.Constructor(Vector3(5060.53f, 4941.861f, 57.52154f), ground_rearm_terminal), owning_building_guid = 37) - LocalObject(1691, FacilityTurret.Constructor(Vector3(4936.392f, 5006.472f, 66.17354f), manned_turret), owning_building_guid = 37) + LocalObject( + 2503, + SpawnTube.Constructor(Vector3(5012.233f, 4930.683f, 47.77154f), Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 2504, + SpawnTube.Constructor(Vector3(5012.233f, 4937.974f, 47.77154f), Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 2505, + SpawnTube.Constructor(Vector3(5012.233f, 4945.262f, 47.77154f), Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 155, + ProximityTerminal.Constructor(Vector3(5009.983f, 4918.892f, 57.58154f), adv_med_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1761, + ProximityTerminal.Constructor(Vector3(5035.642f, 4929.952f, 47.77154f), medical_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2093, + ProximityTerminal.Constructor(Vector3(4989.883f, 4864.061f, 68.06454f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 2094, + Terminal.Constructor(Vector3(4989.883f, 4864.061f, 68.06454f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2096, + ProximityTerminal.Constructor(Vector3(4993.101f, 4979.651f, 66.11354f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 2097, + Terminal.Constructor(Vector3(4993.101f, 4979.651f, 66.11354f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2099, + ProximityTerminal.Constructor(Vector3(5006.198f, 4856.777f, 66.12354f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 2100, + Terminal.Constructor(Vector3(5006.198f, 4856.777f, 66.12354f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2102, + ProximityTerminal.Constructor(Vector3(5009.323f, 4971.253f, 68.10354f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 2103, + Terminal.Constructor(Vector3(5009.323f, 4971.253f, 68.10354f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2398, + ProximityTerminal.Constructor(Vector3(4972.524f, 4841.154f, 57.52154f), repair_silo), + owning_building_guid = 37 + ) + LocalObject( + 2399, + Terminal.Constructor(Vector3(4972.524f, 4841.154f, 57.52154f), ground_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2402, + ProximityTerminal.Constructor(Vector3(5060.53f, 4941.861f, 57.52154f), repair_silo), + owning_building_guid = 37 + ) + LocalObject( + 2403, + Terminal.Constructor(Vector3(5060.53f, 4941.861f, 57.52154f), ground_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1691, + FacilityTurret.Constructor(Vector3(4936.392f, 5006.472f, 66.17354f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1691, 5048) - LocalObject(1692, FacilityTurret.Constructor(Vector3(4936.4f, 4829.379f, 66.17354f), manned_turret), owning_building_guid = 37) + LocalObject( + 1692, + FacilityTurret.Constructor(Vector3(4936.4f, 4829.379f, 66.17354f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1692, 5049) - LocalObject(1697, FacilityTurret.Constructor(Vector3(5029.665f, 5007.605f, 66.17354f), manned_turret), owning_building_guid = 37) + LocalObject( + 1697, + FacilityTurret.Constructor(Vector3(5029.665f, 5007.605f, 66.17354f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1697, 5050) - LocalObject(1698, FacilityTurret.Constructor(Vector3(5071.626f, 4829.371f, 66.17354f), manned_turret), owning_building_guid = 37) + LocalObject( + 1698, + FacilityTurret.Constructor(Vector3(5071.626f, 4829.371f, 66.17354f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1698, 5051) - LocalObject(1699, FacilityTurret.Constructor(Vector3(5072.813f, 4964.496f, 66.17354f), manned_turret), owning_building_guid = 37) + LocalObject( + 1699, + FacilityTurret.Constructor(Vector3(5072.813f, 4964.496f, 66.17354f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1699, 5052) - LocalObject(918, ImplantTerminalMech.Constructor(Vector3(5018.066f, 4970.368f, 47.24854f)), owning_building_guid = 37) - LocalObject(912, Terminal.Constructor(Vector3(5018.066f, 4970.386f, 47.24854f), implant_terminal_interface), owning_building_guid = 37) + LocalObject( + 918, + ImplantTerminalMech.Constructor(Vector3(5018.066f, 4970.368f, 47.24854f)), + owning_building_guid = 37 + ) + LocalObject( + 912, + Terminal.Constructor(Vector3(5018.066f, 4970.386f, 47.24854f), implant_terminal_interface), + owning_building_guid = 37 + ) TerminalToInterface(918, 912) - LocalObject(919, ImplantTerminalMech.Constructor(Vector3(5018.054f, 4985.724f, 47.24854f)), owning_building_guid = 37) - LocalObject(913, Terminal.Constructor(Vector3(5018.054f, 4985.706f, 47.24854f), implant_terminal_interface), owning_building_guid = 37) + LocalObject( + 919, + ImplantTerminalMech.Constructor(Vector3(5018.054f, 4985.724f, 47.24854f)), + owning_building_guid = 37 + ) + LocalObject( + 913, + Terminal.Constructor(Vector3(5018.054f, 4985.706f, 47.24854f), implant_terminal_interface), + owning_building_guid = 37 + ) TerminalToInterface(919, 913) - LocalObject(2175, Painbox.Constructor(Vector3(5013.593f, 4906.334f, 71.80034f), painbox), owning_building_guid = 37) - LocalObject(2188, Painbox.Constructor(Vector3(5022.753f, 4933.712f, 51.84144f), painbox_continuous), owning_building_guid = 37) - LocalObject(2201, Painbox.Constructor(Vector3(5012.182f, 4920.798f, 72.00544f), painbox_door_radius), owning_building_guid = 37) - LocalObject(2234, Painbox.Constructor(Vector3(5018.54f, 4923.793f, 50.12744f), painbox_door_radius_continuous), owning_building_guid = 37) - LocalObject(2235, Painbox.Constructor(Vector3(5020.516f, 4951.831f, 49.48574f), painbox_door_radius_continuous), owning_building_guid = 37) - LocalObject(2236, Painbox.Constructor(Vector3(5035.882f, 4945.05f, 51.31244f), painbox_door_radius_continuous), owning_building_guid = 37) + LocalObject( + 2175, + Painbox.Constructor(Vector3(5013.593f, 4906.334f, 71.80034f), painbox), + owning_building_guid = 37 + ) + LocalObject( + 2188, + Painbox.Constructor(Vector3(5022.753f, 4933.712f, 51.84144f), painbox_continuous), + owning_building_guid = 37 + ) + LocalObject( + 2201, + Painbox.Constructor(Vector3(5012.182f, 4920.798f, 72.00544f), painbox_door_radius), + owning_building_guid = 37 + ) + LocalObject( + 2234, + Painbox.Constructor(Vector3(5018.54f, 4923.793f, 50.12744f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 2235, + Painbox.Constructor(Vector3(5020.516f, 4951.831f, 49.48574f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 2236, + Painbox.Constructor(Vector3(5035.882f, 4945.05f, 51.31244f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) LocalObject(291, Generator.Constructor(Vector3(5012.025f, 4902.445f, 66.47754f)), owning_building_guid = 37) - LocalObject(278, Terminal.Constructor(Vector3(5011.978f, 4910.637f, 67.77154f), gen_control), owning_building_guid = 37) + LocalObject( + 278, + Terminal.Constructor(Vector3(5011.978f, 4910.637f, 67.77154f), gen_control), + owning_building_guid = 37 + ) } Building21321() def Building21321(): Unit = { // Name: GW_Esamir_S Type: hst GUID: 41, MapID: 21321 - LocalBuilding("GW_Esamir_S", 41, 21321, FoundationBuilder(WarpGate.Structure(Vector3(3761.83f, 2214.34f, 65.95f), hst))) + LocalBuilding( + "GW_Esamir_S", + 41, + 21321, + FoundationBuilder(WarpGate.Structure(Vector3(3761.83f, 2214.34f, 65.95f), hst)) + ) } Building21322() def Building21322(): Unit = { // Name: GW_Esamir_N Type: hst GUID: 42, MapID: 21322 - LocalBuilding("GW_Esamir_N", 42, 21322, FoundationBuilder(WarpGate.Structure(Vector3(6302.94f, 4799.63f, 86.05f), hst))) + LocalBuilding( + "GW_Esamir_N", + 42, + 21322, + FoundationBuilder(WarpGate.Structure(Vector3(6302.94f, 4799.63f, 86.05f), hst)) + ) } Building9() def Building9(): Unit = { // Name: Gjallar Type: tech_plant GUID: 44, MapID: 9 - LocalBuilding("Gjallar", 44, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(958f, 2734f, 74.05927f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(209, CaptureTerminal.Constructor(Vector3(962.734f, 2689.911f, 89.15926f), capture_terminal), owning_building_guid = 44) + LocalBuilding( + "Gjallar", + 44, + 9, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(958f, 2734f, 74.05927f), Vector3(0f, 0f, 360f), tech_plant) + ) + ) + LocalObject( + 209, + CaptureTerminal.Constructor(Vector3(962.734f, 2689.911f, 89.15926f), capture_terminal), + owning_building_guid = 44 + ) LocalObject(300, Door.Constructor(Vector3(886.54f, 2663.929f, 75.60126f)), owning_building_guid = 44) LocalObject(301, Door.Constructor(Vector3(886.54f, 2682.121f, 83.56426f)), owning_building_guid = 44) LocalObject(302, Door.Constructor(Vector3(886.54f, 2737.673f, 75.60126f)), owning_building_guid = 44) @@ -1370,16 +3845,66 @@ object Map07 { // Esamir LocalObject(2639, Door.Constructor(Vector3(970.673f, 2691.733f, 68.51327f)), owning_building_guid = 44) LocalObject(2640, Door.Constructor(Vector3(970.673f, 2699.026f, 68.51327f)), owning_building_guid = 44) LocalObject(2641, Door.Constructor(Vector3(970.673f, 2706.315f, 68.51327f)), owning_building_guid = 44) - LocalObject(933, IFFLock.Constructor(Vector3(1001.357f, 2685.603f, 75.63927f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 889) - LocalObject(946, IFFLock.Constructor(Vector3(915.256f, 2776.353f, 75.74727f), Vector3(0, 0, 360)), owning_building_guid = 44, door_guid = 601) - LocalObject(956, IFFLock.Constructor(Vector3(917.186f, 2631.954f, 75.61127f), Vector3(0, 0, 270)), owning_building_guid = 44, door_guid = 304) - LocalObject(957, IFFLock.Constructor(Vector3(952.428f, 2694.94f, 90.49527f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 616) - LocalObject(958, IFFLock.Constructor(Vector3(966.554f, 2711.383f, 90.60526f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 308) - LocalObject(959, IFFLock.Constructor(Vector3(976.428f, 2710.81f, 67.99526f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 624) - LocalObject(960, IFFLock.Constructor(Vector3(977.496f, 2693.775f, 90.60526f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 309) - LocalObject(961, IFFLock.Constructor(Vector3(979.572f, 2685.19f, 67.99526f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 623) - LocalObject(962, IFFLock.Constructor(Vector3(987.572f, 2717.057f, 60.49527f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 625) - LocalObject(963, IFFLock.Constructor(Vector3(989.06f, 2688.428f, 60.49527f), Vector3(0, 0, 270)), owning_building_guid = 44, door_guid = 626) + LocalObject( + 933, + IFFLock.Constructor(Vector3(1001.357f, 2685.603f, 75.63927f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 889 + ) + LocalObject( + 946, + IFFLock.Constructor(Vector3(915.256f, 2776.353f, 75.74727f), Vector3(0, 0, 360)), + owning_building_guid = 44, + door_guid = 601 + ) + LocalObject( + 956, + IFFLock.Constructor(Vector3(917.186f, 2631.954f, 75.61127f), Vector3(0, 0, 270)), + owning_building_guid = 44, + door_guid = 304 + ) + LocalObject( + 957, + IFFLock.Constructor(Vector3(952.428f, 2694.94f, 90.49527f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 616 + ) + LocalObject( + 958, + IFFLock.Constructor(Vector3(966.554f, 2711.383f, 90.60526f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 308 + ) + LocalObject( + 959, + IFFLock.Constructor(Vector3(976.428f, 2710.81f, 67.99526f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 624 + ) + LocalObject( + 960, + IFFLock.Constructor(Vector3(977.496f, 2693.775f, 90.60526f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 309 + ) + LocalObject( + 961, + IFFLock.Constructor(Vector3(979.572f, 2685.19f, 67.99526f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 623 + ) + LocalObject( + 962, + IFFLock.Constructor(Vector3(987.572f, 2717.057f, 60.49527f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 625 + ) + LocalObject( + 963, + IFFLock.Constructor(Vector3(989.06f, 2688.428f, 60.49527f), Vector3(0, 0, 270)), + owning_building_guid = 44, + door_guid = 626 + ) LocalObject(1193, Locker.Constructor(Vector3(981.563f, 2688.141f, 66.92027f)), owning_building_guid = 44) LocalObject(1194, Locker.Constructor(Vector3(982.727f, 2688.141f, 66.92027f)), owning_building_guid = 44) LocalObject(1195, Locker.Constructor(Vector3(983.874f, 2688.141f, 66.92027f)), owning_building_guid = 44) @@ -1392,72 +3917,295 @@ object Map07 { // Esamir LocalObject(1205, Locker.Constructor(Vector3(1002.055f, 2708.165f, 59.15926f)), owning_building_guid = 44) LocalObject(1208, Locker.Constructor(Vector3(1003.391f, 2708.165f, 59.15926f)), owning_building_guid = 44) LocalObject(1210, Locker.Constructor(Vector3(1004.728f, 2708.165f, 59.15926f)), owning_building_guid = 44) - LocalObject(156, Terminal.Constructor(Vector3(962.673f, 2709.141f, 89.76227f), air_vehicle_terminal), owning_building_guid = 44) - LocalObject(1723, VehicleSpawnPad.Constructor(Vector3(958.07f, 2729.835f, 86.63727f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 44, terminal_guid = 156) - LocalObject(157, Terminal.Constructor(Vector3(974.605f, 2709.141f, 89.76227f), air_vehicle_terminal), owning_building_guid = 44) - LocalObject(1724, VehicleSpawnPad.Constructor(Vector3(979.088f, 2729.835f, 86.63727f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 44, terminal_guid = 157) - LocalObject(1769, Terminal.Constructor(Vector3(961.058f, 2707.486f, 80.48927f), order_terminal), owning_building_guid = 44) - LocalObject(1770, Terminal.Constructor(Vector3(984.654f, 2693.408f, 68.24927f), order_terminal), owning_building_guid = 44) - LocalObject(1771, Terminal.Constructor(Vector3(984.654f, 2697.139f, 68.24927f), order_terminal), owning_building_guid = 44) - LocalObject(1772, Terminal.Constructor(Vector3(984.654f, 2700.928f, 68.24927f), order_terminal), owning_building_guid = 44) - LocalObject(2549, Terminal.Constructor(Vector3(933.942f, 2638.591f, 68.21626f), spawn_terminal), owning_building_guid = 44) - LocalObject(2550, Terminal.Constructor(Vector3(965.942f, 2686.591f, 60.71626f), spawn_terminal), owning_building_guid = 44) - LocalObject(2551, Terminal.Constructor(Vector3(970.971f, 2689.243f, 68.79327f), spawn_terminal), owning_building_guid = 44) - LocalObject(2552, Terminal.Constructor(Vector3(970.967f, 2696.535f, 68.79327f), spawn_terminal), owning_building_guid = 44) - LocalObject(2553, Terminal.Constructor(Vector3(970.97f, 2703.823f, 68.79327f), spawn_terminal), owning_building_guid = 44) - LocalObject(2554, Terminal.Constructor(Vector3(972.532f, 2737.215f, 86.08227f), spawn_terminal), owning_building_guid = 44) - LocalObject(2555, Terminal.Constructor(Vector3(995.242f, 2713.639f, 80.74126f), spawn_terminal), owning_building_guid = 44) - LocalObject(2804, Terminal.Constructor(Vector3(909.996f, 2693.423f, 59.87326f), ground_vehicle_terminal), owning_building_guid = 44) - LocalObject(1722, VehicleSpawnPad.Constructor(Vector3(909.945f, 2704.339f, 51.59627f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 44, terminal_guid = 2804) + LocalObject( + 156, + Terminal.Constructor(Vector3(962.673f, 2709.141f, 89.76227f), air_vehicle_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1723, + VehicleSpawnPad.Constructor(Vector3(958.07f, 2729.835f, 86.63727f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 44, + terminal_guid = 156 + ) + LocalObject( + 157, + Terminal.Constructor(Vector3(974.605f, 2709.141f, 89.76227f), air_vehicle_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1724, + VehicleSpawnPad.Constructor(Vector3(979.088f, 2729.835f, 86.63727f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 44, + terminal_guid = 157 + ) + LocalObject( + 1769, + Terminal.Constructor(Vector3(961.058f, 2707.486f, 80.48927f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1770, + Terminal.Constructor(Vector3(984.654f, 2693.408f, 68.24927f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1771, + Terminal.Constructor(Vector3(984.654f, 2697.139f, 68.24927f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1772, + Terminal.Constructor(Vector3(984.654f, 2700.928f, 68.24927f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2549, + Terminal.Constructor(Vector3(933.942f, 2638.591f, 68.21626f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2550, + Terminal.Constructor(Vector3(965.942f, 2686.591f, 60.71626f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2551, + Terminal.Constructor(Vector3(970.971f, 2689.243f, 68.79327f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2552, + Terminal.Constructor(Vector3(970.967f, 2696.535f, 68.79327f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2553, + Terminal.Constructor(Vector3(970.97f, 2703.823f, 68.79327f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2554, + Terminal.Constructor(Vector3(972.532f, 2737.215f, 86.08227f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2555, + Terminal.Constructor(Vector3(995.242f, 2713.639f, 80.74126f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2804, + Terminal.Constructor(Vector3(909.996f, 2693.423f, 59.87326f), ground_vehicle_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1722, + VehicleSpawnPad.Constructor(Vector3(909.945f, 2704.339f, 51.59627f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 44, + terminal_guid = 2804 + ) LocalObject(2422, ResourceSilo.Constructor(Vector3(1019.752f, 2766.555f, 81.06727f)), owning_building_guid = 44) - LocalObject(2437, SpawnTube.Constructor(Vector3(970.233f, 2690.683f, 66.65926f), Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(2438, SpawnTube.Constructor(Vector3(970.233f, 2697.974f, 66.65926f), Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(2439, SpawnTube.Constructor(Vector3(970.233f, 2705.262f, 66.65926f), Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(1743, ProximityTerminal.Constructor(Vector3(961.059f, 2696.901f, 79.15627f), medical_terminal), owning_building_guid = 44) - LocalObject(1744, ProximityTerminal.Constructor(Vector3(998.444f, 2707.62f, 59.15926f), medical_terminal), owning_building_guid = 44) - LocalObject(1973, ProximityTerminal.Constructor(Vector3(896.704f, 2709.661f, 82.25426f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1974, Terminal.Constructor(Vector3(896.704f, 2709.661f, 82.25426f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(1976, ProximityTerminal.Constructor(Vector3(916.98f, 2725.833f, 84.60927f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1977, Terminal.Constructor(Vector3(916.98f, 2725.833f, 84.60927f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(1979, ProximityTerminal.Constructor(Vector3(967.379f, 2669.474f, 89.50626f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1980, Terminal.Constructor(Vector3(967.379f, 2669.474f, 89.50626f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(1982, ProximityTerminal.Constructor(Vector3(983.534f, 2652.628f, 82.26727f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1983, Terminal.Constructor(Vector3(983.534f, 2652.628f, 82.26727f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(1985, ProximityTerminal.Constructor(Vector3(1019.987f, 2691.855f, 84.71127f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1986, Terminal.Constructor(Vector3(1019.987f, 2691.855f, 84.71127f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(1988, ProximityTerminal.Constructor(Vector3(1026.28f, 2708.102f, 82.26727f), pad_landing_frame), owning_building_guid = 44) - LocalObject(1989, Terminal.Constructor(Vector3(1026.28f, 2708.102f, 82.26727f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(2318, ProximityTerminal.Constructor(Vector3(958.3086f, 2775.637f, 73.78777f), repair_silo), owning_building_guid = 44) - LocalObject(2319, Terminal.Constructor(Vector3(958.3086f, 2775.637f, 73.78777f), ground_rearm_terminal), owning_building_guid = 44) - LocalObject(2322, ProximityTerminal.Constructor(Vector3(1016.637f, 2641.208f, 73.80927f), repair_silo), owning_building_guid = 44) - LocalObject(2323, Terminal.Constructor(Vector3(1016.637f, 2641.208f, 73.80927f), ground_rearm_terminal), owning_building_guid = 44) - LocalObject(1605, FacilityTurret.Constructor(Vector3(873.906f, 2832.855f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 2437, + SpawnTube.Constructor(Vector3(970.233f, 2690.683f, 66.65926f), Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 2438, + SpawnTube.Constructor(Vector3(970.233f, 2697.974f, 66.65926f), Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 2439, + SpawnTube.Constructor(Vector3(970.233f, 2705.262f, 66.65926f), Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 1743, + ProximityTerminal.Constructor(Vector3(961.059f, 2696.901f, 79.15627f), medical_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1744, + ProximityTerminal.Constructor(Vector3(998.444f, 2707.62f, 59.15926f), medical_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1973, + ProximityTerminal.Constructor(Vector3(896.704f, 2709.661f, 82.25426f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1974, + Terminal.Constructor(Vector3(896.704f, 2709.661f, 82.25426f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1976, + ProximityTerminal.Constructor(Vector3(916.98f, 2725.833f, 84.60927f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1977, + Terminal.Constructor(Vector3(916.98f, 2725.833f, 84.60927f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1979, + ProximityTerminal.Constructor(Vector3(967.379f, 2669.474f, 89.50626f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1980, + Terminal.Constructor(Vector3(967.379f, 2669.474f, 89.50626f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1982, + ProximityTerminal.Constructor(Vector3(983.534f, 2652.628f, 82.26727f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1983, + Terminal.Constructor(Vector3(983.534f, 2652.628f, 82.26727f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1985, + ProximityTerminal.Constructor(Vector3(1019.987f, 2691.855f, 84.71127f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1986, + Terminal.Constructor(Vector3(1019.987f, 2691.855f, 84.71127f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1988, + ProximityTerminal.Constructor(Vector3(1026.28f, 2708.102f, 82.26727f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 1989, + Terminal.Constructor(Vector3(1026.28f, 2708.102f, 82.26727f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2318, + ProximityTerminal.Constructor(Vector3(958.3086f, 2775.637f, 73.78777f), repair_silo), + owning_building_guid = 44 + ) + LocalObject( + 2319, + Terminal.Constructor(Vector3(958.3086f, 2775.637f, 73.78777f), ground_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2322, + ProximityTerminal.Constructor(Vector3(1016.637f, 2641.208f, 73.80927f), repair_silo), + owning_building_guid = 44 + ) + LocalObject( + 2323, + Terminal.Constructor(Vector3(1016.637f, 2641.208f, 73.80927f), ground_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1605, + FacilityTurret.Constructor(Vector3(873.906f, 2832.855f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1605, 5053) - LocalObject(1606, FacilityTurret.Constructor(Vector3(879.413f, 2634.665f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 1606, + FacilityTurret.Constructor(Vector3(879.413f, 2634.665f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1606, 5054) - LocalObject(1607, FacilityTurret.Constructor(Vector3(963.601f, 2832.855f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 1607, + FacilityTurret.Constructor(Vector3(963.601f, 2832.855f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1607, 5055) - LocalObject(1610, FacilityTurret.Constructor(Vector3(1044.154f, 2634.657f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 1610, + FacilityTurret.Constructor(Vector3(1044.154f, 2634.657f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1610, 5056) - LocalObject(1611, FacilityTurret.Constructor(Vector3(1044.154f, 2772.398f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 1611, + FacilityTurret.Constructor(Vector3(1044.154f, 2772.398f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1611, 5057) - LocalObject(1612, FacilityTurret.Constructor(Vector3(1051.881f, 2699.423f, 82.55827f), manned_turret), owning_building_guid = 44) + LocalObject( + 1612, + FacilityTurret.Constructor(Vector3(1051.881f, 2699.423f, 82.55827f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1612, 5058) - LocalObject(2165, Painbox.Constructor(Vector3(983.7372f, 2730.206f, 62.63256f), painbox), owning_building_guid = 44) - LocalObject(2178, Painbox.Constructor(Vector3(978.8322f, 2697.212f, 70.92917f), painbox_continuous), owning_building_guid = 44) - LocalObject(2191, Painbox.Constructor(Vector3(985.6996f, 2715.471f, 62.31866f), painbox_door_radius), owning_building_guid = 44) - LocalObject(2204, Painbox.Constructor(Vector3(977.0348f, 2684.278f, 68.78716f), painbox_door_radius_continuous), owning_building_guid = 44) - LocalObject(2205, Painbox.Constructor(Vector3(977.8606f, 2711.769f, 69.33546f), painbox_door_radius_continuous), owning_building_guid = 44) - LocalObject(2206, Painbox.Constructor(Vector3(993.641f, 2704.57f, 70.24156f), painbox_door_radius_continuous), owning_building_guid = 44) + LocalObject( + 2165, + Painbox.Constructor(Vector3(983.7372f, 2730.206f, 62.63256f), painbox), + owning_building_guid = 44 + ) + LocalObject( + 2178, + Painbox.Constructor(Vector3(978.8322f, 2697.212f, 70.92917f), painbox_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2191, + Painbox.Constructor(Vector3(985.6996f, 2715.471f, 62.31866f), painbox_door_radius), + owning_building_guid = 44 + ) + LocalObject( + 2204, + Painbox.Constructor(Vector3(977.0348f, 2684.278f, 68.78716f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2205, + Painbox.Constructor(Vector3(977.8606f, 2711.769f, 69.33546f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2206, + Painbox.Constructor(Vector3(993.641f, 2704.57f, 70.24156f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) LocalObject(281, Generator.Constructor(Vector3(985.975f, 2733.555f, 57.86526f)), owning_building_guid = 44) - LocalObject(268, Terminal.Constructor(Vector3(986.022f, 2725.363f, 59.15926f), gen_control), owning_building_guid = 44) + LocalObject( + 268, + Terminal.Constructor(Vector3(986.022f, 2725.363f, 59.15926f), gen_control), + owning_building_guid = 44 + ) } Building7() def Building7(): Unit = { // Name: Eisa Type: tech_plant GUID: 47, MapID: 7 - LocalBuilding("Eisa", 47, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3394f, 4622f, 75.30442f), Vector3(0f, 0f, 337f), tech_plant))) - LocalObject(215, CaptureTerminal.Constructor(Vector3(3381.131f, 4579.566f, 90.40442f), capture_terminal), owning_building_guid = 47) + LocalBuilding( + "Eisa", + 47, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3394f, 4622f, 75.30442f), + Vector3(0f, 0f, 337f), + tech_plant + ) + ) + ) + LocalObject( + 215, + CaptureTerminal.Constructor(Vector3(3381.131f, 4579.566f, 90.40442f), capture_terminal), + owning_building_guid = 47 + ) LocalObject(431, Door.Constructor(Vector3(3300.842f, 4585.421f, 76.84642f)), owning_building_guid = 47) LocalObject(432, Door.Constructor(Vector3(3307.95f, 4602.167f, 84.80942f)), owning_building_guid = 47) LocalObject(433, Door.Constructor(Vector3(3318.107f, 4545.579f, 76.92542f)), owning_building_guid = 47) @@ -1496,16 +4244,66 @@ object Map07 { // Esamir LocalObject(2677, Door.Constructor(Vector3(3389.151f, 4578.141f, 69.75842f)), owning_building_guid = 47) LocalObject(2678, Door.Constructor(Vector3(3392f, 4584.854f, 69.75842f)), owning_building_guid = 47) LocalObject(2679, Door.Constructor(Vector3(3394.848f, 4591.564f, 69.75842f)), owning_building_guid = 47) - LocalObject(939, IFFLock.Constructor(Vector3(3415f, 4560.509f, 76.88442f), Vector3(0, 0, 203)), owning_building_guid = 47, door_guid = 895) - LocalObject(947, IFFLock.Constructor(Vector3(3371.203f, 4677.688f, 76.99242f), Vector3(0, 0, 383)), owning_building_guid = 47, door_guid = 602) - LocalObject(1054, IFFLock.Constructor(Vector3(3316.558f, 4544.014f, 76.85642f), Vector3(0, 0, 293)), owning_building_guid = 47, door_guid = 433) - LocalObject(1059, IFFLock.Constructor(Vector3(3373.609f, 4588.222f, 91.74042f), Vector3(0, 0, 23)), owning_building_guid = 47, door_guid = 749) - LocalObject(1060, IFFLock.Constructor(Vector3(3393.037f, 4597.839f, 91.85042f), Vector3(0, 0, 23)), owning_building_guid = 47, door_guid = 443) - LocalObject(1061, IFFLock.Constructor(Vector3(3394.786f, 4568.641f, 69.24042f), Vector3(0, 0, 203)), owning_building_guid = 47, door_guid = 755) - LocalObject(1062, IFFLock.Constructor(Vector3(3396.229f, 4577.355f, 91.85042f), Vector3(0, 0, 203)), owning_building_guid = 47, door_guid = 442) - LocalObject(1063, IFFLock.Constructor(Vector3(3401.902f, 4593.453f, 69.24042f), Vector3(0, 0, 23)), owning_building_guid = 47, door_guid = 756) - LocalObject(1064, IFFLock.Constructor(Vector3(3404.784f, 4567.915f, 61.74042f), Vector3(0, 0, 293)), owning_building_guid = 47, door_guid = 757) - LocalObject(1065, IFFLock.Constructor(Vector3(3414.601f, 4594.849f, 61.74042f), Vector3(0, 0, 203)), owning_building_guid = 47, door_guid = 759) + LocalObject( + 939, + IFFLock.Constructor(Vector3(3415f, 4560.509f, 76.88442f), Vector3(0, 0, 203)), + owning_building_guid = 47, + door_guid = 895 + ) + LocalObject( + 947, + IFFLock.Constructor(Vector3(3371.203f, 4677.688f, 76.99242f), Vector3(0, 0, 383)), + owning_building_guid = 47, + door_guid = 602 + ) + LocalObject( + 1054, + IFFLock.Constructor(Vector3(3316.558f, 4544.014f, 76.85642f), Vector3(0, 0, 293)), + owning_building_guid = 47, + door_guid = 433 + ) + LocalObject( + 1059, + IFFLock.Constructor(Vector3(3373.609f, 4588.222f, 91.74042f), Vector3(0, 0, 23)), + owning_building_guid = 47, + door_guid = 749 + ) + LocalObject( + 1060, + IFFLock.Constructor(Vector3(3393.037f, 4597.839f, 91.85042f), Vector3(0, 0, 23)), + owning_building_guid = 47, + door_guid = 443 + ) + LocalObject( + 1061, + IFFLock.Constructor(Vector3(3394.786f, 4568.641f, 69.24042f), Vector3(0, 0, 203)), + owning_building_guid = 47, + door_guid = 755 + ) + LocalObject( + 1062, + IFFLock.Constructor(Vector3(3396.229f, 4577.355f, 91.85042f), Vector3(0, 0, 203)), + owning_building_guid = 47, + door_guid = 442 + ) + LocalObject( + 1063, + IFFLock.Constructor(Vector3(3401.902f, 4593.453f, 69.24042f), Vector3(0, 0, 23)), + owning_building_guid = 47, + door_guid = 756 + ) + LocalObject( + 1064, + IFFLock.Constructor(Vector3(3404.784f, 4567.915f, 61.74042f), Vector3(0, 0, 293)), + owning_building_guid = 47, + door_guid = 757 + ) + LocalObject( + 1065, + IFFLock.Constructor(Vector3(3414.601f, 4594.849f, 61.74042f), Vector3(0, 0, 203)), + owning_building_guid = 47, + door_guid = 759 + ) LocalObject(1363, Locker.Constructor(Vector3(3397.771f, 4570.58f, 68.16542f)), owning_building_guid = 47) LocalObject(1364, Locker.Constructor(Vector3(3398.843f, 4570.125f, 68.16542f)), owning_building_guid = 47) LocalObject(1365, Locker.Constructor(Vector3(3399.899f, 4569.677f, 68.16542f)), owning_building_guid = 47) @@ -1518,72 +4316,290 @@ object Map07 { // Esamir LocalObject(1372, Locker.Constructor(Vector3(3424.458f, 4581.005f, 60.40442f)), owning_building_guid = 47) LocalObject(1373, Locker.Constructor(Vector3(3425.688f, 4580.483f, 60.40442f)), owning_building_guid = 47) LocalObject(1374, Locker.Constructor(Vector3(3426.919f, 4579.96f, 60.40442f)), owning_building_guid = 47) - LocalObject(158, Terminal.Constructor(Vector3(3388.588f, 4597.292f, 91.00742f), air_vehicle_terminal), owning_building_guid = 47) - LocalObject(1731, VehicleSpawnPad.Constructor(Vector3(3392.437f, 4618.139f, 87.88242f), mb_pad_creation, Vector3(0, 0, 23)), owning_building_guid = 47, terminal_guid = 158) - LocalObject(159, Terminal.Constructor(Vector3(3399.572f, 4592.629f, 91.00742f), air_vehicle_terminal), owning_building_guid = 47) - LocalObject(1732, VehicleSpawnPad.Constructor(Vector3(3411.784f, 4609.926f, 87.88242f), mb_pad_creation, Vector3(0, 0, 23)), owning_building_guid = 47, terminal_guid = 159) - LocalObject(1832, Terminal.Constructor(Vector3(3386.455f, 4596.399f, 81.73442f), order_terminal), owning_building_guid = 47) - LocalObject(1833, Terminal.Constructor(Vector3(3402.675f, 4574.22f, 69.49442f), order_terminal), owning_building_guid = 47) - LocalObject(1834, Terminal.Constructor(Vector3(3404.132f, 4577.655f, 69.49442f), order_terminal), owning_building_guid = 47) - LocalObject(1835, Terminal.Constructor(Vector3(3405.613f, 4581.143f, 69.49442f), order_terminal), owning_building_guid = 47) - LocalObject(2591, Terminal.Constructor(Vector3(3334.575f, 4543.576f, 69.46142f), spawn_terminal), owning_building_guid = 47) - LocalObject(2592, Terminal.Constructor(Vector3(3382.786f, 4575.257f, 61.96142f), spawn_terminal), owning_building_guid = 47) - LocalObject(2593, Terminal.Constructor(Vector3(3388.452f, 4575.733f, 70.03842f), spawn_terminal), owning_building_guid = 47) - LocalObject(2594, Terminal.Constructor(Vector3(3391.297f, 4582.447f, 70.03842f), spawn_terminal), owning_building_guid = 47) - LocalObject(2595, Terminal.Constructor(Vector3(3394.148f, 4589.154f, 70.03842f), spawn_terminal), owning_building_guid = 47) - LocalObject(2596, Terminal.Constructor(Vector3(3408.633f, 4619.281f, 87.32742f), spawn_terminal), owning_building_guid = 47) - LocalObject(2597, Terminal.Constructor(Vector3(3420.326f, 4588.706f, 81.98642f), spawn_terminal), owning_building_guid = 47) - LocalObject(2810, Terminal.Constructor(Vector3(3333.957f, 4603.405f, 61.11842f), ground_vehicle_terminal), owning_building_guid = 47) - LocalObject(1730, VehicleSpawnPad.Constructor(Vector3(3338.176f, 4613.474f, 52.84142f), mb_pad_creation, Vector3(0, 0, 23)), owning_building_guid = 47, terminal_guid = 2810) + LocalObject( + 158, + Terminal.Constructor(Vector3(3388.588f, 4597.292f, 91.00742f), air_vehicle_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1731, + VehicleSpawnPad.Constructor(Vector3(3392.437f, 4618.139f, 87.88242f), mb_pad_creation, Vector3(0, 0, 23)), + owning_building_guid = 47, + terminal_guid = 158 + ) + LocalObject( + 159, + Terminal.Constructor(Vector3(3399.572f, 4592.629f, 91.00742f), air_vehicle_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1732, + VehicleSpawnPad.Constructor(Vector3(3411.784f, 4609.926f, 87.88242f), mb_pad_creation, Vector3(0, 0, 23)), + owning_building_guid = 47, + terminal_guid = 159 + ) + LocalObject( + 1832, + Terminal.Constructor(Vector3(3386.455f, 4596.399f, 81.73442f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1833, + Terminal.Constructor(Vector3(3402.675f, 4574.22f, 69.49442f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1834, + Terminal.Constructor(Vector3(3404.132f, 4577.655f, 69.49442f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1835, + Terminal.Constructor(Vector3(3405.613f, 4581.143f, 69.49442f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2591, + Terminal.Constructor(Vector3(3334.575f, 4543.576f, 69.46142f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2592, + Terminal.Constructor(Vector3(3382.786f, 4575.257f, 61.96142f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2593, + Terminal.Constructor(Vector3(3388.452f, 4575.733f, 70.03842f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2594, + Terminal.Constructor(Vector3(3391.297f, 4582.447f, 70.03842f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2595, + Terminal.Constructor(Vector3(3394.148f, 4589.154f, 70.03842f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2596, + Terminal.Constructor(Vector3(3408.633f, 4619.281f, 87.32742f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2597, + Terminal.Constructor(Vector3(3420.326f, 4588.706f, 81.98642f), spawn_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2810, + Terminal.Constructor(Vector3(3333.957f, 4603.405f, 61.11842f), ground_vehicle_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1730, + VehicleSpawnPad.Constructor(Vector3(3338.176f, 4613.474f, 52.84142f), mb_pad_creation, Vector3(0, 0, 23)), + owning_building_guid = 47, + terminal_guid = 2810 + ) LocalObject(2428, ResourceSilo.Constructor(Vector3(3463.563f, 4627.838f, 82.31242f)), owning_building_guid = 47) - LocalObject(2475, SpawnTube.Constructor(Vector3(3388.335f, 4577.347f, 67.90442f), Vector3(0, 0, 23)), owning_building_guid = 47) - LocalObject(2476, SpawnTube.Constructor(Vector3(3391.184f, 4584.058f, 67.90442f), Vector3(0, 0, 23)), owning_building_guid = 47) - LocalObject(2477, SpawnTube.Constructor(Vector3(3394.032f, 4590.767f, 67.90442f), Vector3(0, 0, 23)), owning_building_guid = 47) - LocalObject(1753, ProximityTerminal.Constructor(Vector3(3382.32f, 4586.655f, 80.40142f), medical_terminal), owning_building_guid = 47) - LocalObject(1754, ProximityTerminal.Constructor(Vector3(3420.921f, 4581.915f, 60.40442f), medical_terminal), owning_building_guid = 47) - LocalObject(2042, ProximityTerminal.Constructor(Vector3(3328.067f, 4623.546f, 83.49942f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2043, Terminal.Constructor(Vector3(3328.067f, 4623.546f, 83.49942f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2045, ProximityTerminal.Constructor(Vector3(3353.05f, 4630.51f, 85.85442f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2046, Terminal.Constructor(Vector3(3353.05f, 4630.51f, 85.85442f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2048, ProximityTerminal.Constructor(Vector3(3377.421f, 4558.939f, 90.75142f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2049, Terminal.Constructor(Vector3(3377.421f, 4558.939f, 90.75142f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2051, ProximityTerminal.Constructor(Vector3(3385.71f, 4537.12f, 83.51242f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2052, Terminal.Constructor(Vector3(3385.71f, 4537.12f, 83.51242f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2054, ProximityTerminal.Constructor(Vector3(3434.592f, 4558.985f, 85.95642f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2055, Terminal.Constructor(Vector3(3434.592f, 4558.985f, 85.95642f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2057, ProximityTerminal.Constructor(Vector3(3446.733f, 4571.481f, 83.51242f), pad_landing_frame), owning_building_guid = 47) - LocalObject(2058, Terminal.Constructor(Vector3(3446.733f, 4571.481f, 83.51242f), air_rearm_terminal), owning_building_guid = 47) - LocalObject(2366, ProximityTerminal.Constructor(Vector3(3410.553f, 4660.206f, 75.03292f), repair_silo), owning_building_guid = 47) - LocalObject(2367, Terminal.Constructor(Vector3(3410.553f, 4660.206f, 75.03292f), ground_rearm_terminal), owning_building_guid = 47) - LocalObject(2370, ProximityTerminal.Constructor(Vector3(3411.718f, 4513.673f, 75.05442f), repair_silo), owning_building_guid = 47) - LocalObject(2371, Terminal.Constructor(Vector3(3411.718f, 4513.673f, 75.05442f), ground_rearm_terminal), owning_building_guid = 47) - LocalObject(1653, FacilityTurret.Constructor(Vector3(3282.847f, 4561.268f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 2475, + SpawnTube.Constructor(Vector3(3388.335f, 4577.347f, 67.90442f), Vector3(0, 0, 23)), + owning_building_guid = 47 + ) + LocalObject( + 2476, + SpawnTube.Constructor(Vector3(3391.184f, 4584.058f, 67.90442f), Vector3(0, 0, 23)), + owning_building_guid = 47 + ) + LocalObject( + 2477, + SpawnTube.Constructor(Vector3(3394.032f, 4590.767f, 67.90442f), Vector3(0, 0, 23)), + owning_building_guid = 47 + ) + LocalObject( + 1753, + ProximityTerminal.Constructor(Vector3(3382.32f, 4586.655f, 80.40142f), medical_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1754, + ProximityTerminal.Constructor(Vector3(3420.921f, 4581.915f, 60.40442f), medical_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2042, + ProximityTerminal.Constructor(Vector3(3328.067f, 4623.546f, 83.49942f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2043, + Terminal.Constructor(Vector3(3328.067f, 4623.546f, 83.49942f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2045, + ProximityTerminal.Constructor(Vector3(3353.05f, 4630.51f, 85.85442f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2046, + Terminal.Constructor(Vector3(3353.05f, 4630.51f, 85.85442f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2048, + ProximityTerminal.Constructor(Vector3(3377.421f, 4558.939f, 90.75142f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2049, + Terminal.Constructor(Vector3(3377.421f, 4558.939f, 90.75142f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2051, + ProximityTerminal.Constructor(Vector3(3385.71f, 4537.12f, 83.51242f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2052, + Terminal.Constructor(Vector3(3385.71f, 4537.12f, 83.51242f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2054, + ProximityTerminal.Constructor(Vector3(3434.592f, 4558.985f, 85.95642f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2055, + Terminal.Constructor(Vector3(3434.592f, 4558.985f, 85.95642f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2057, + ProximityTerminal.Constructor(Vector3(3446.733f, 4571.481f, 83.51242f), pad_landing_frame), + owning_building_guid = 47 + ) + LocalObject( + 2058, + Terminal.Constructor(Vector3(3446.733f, 4571.481f, 83.51242f), air_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2366, + ProximityTerminal.Constructor(Vector3(3410.553f, 4660.206f, 75.03292f), repair_silo), + owning_building_guid = 47 + ) + LocalObject( + 2367, + Terminal.Constructor(Vector3(3410.553f, 4660.206f, 75.03292f), ground_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 2370, + ProximityTerminal.Constructor(Vector3(3411.718f, 4513.673f, 75.05442f), repair_silo), + owning_building_guid = 47 + ) + LocalObject( + 2371, + Terminal.Constructor(Vector3(3411.718f, 4513.673f, 75.05442f), ground_rearm_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1653, + FacilityTurret.Constructor(Vector3(3282.847f, 4561.268f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1653, 5059) - LocalObject(1660, FacilityTurret.Constructor(Vector3(3355.217f, 4745.854f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 1660, + FacilityTurret.Constructor(Vector3(3355.217f, 4745.854f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1660, 5060) - LocalObject(1662, FacilityTurret.Constructor(Vector3(3434.489f, 4496.891f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 1662, + FacilityTurret.Constructor(Vector3(3434.489f, 4496.891f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1662, 5061) - LocalObject(1663, FacilityTurret.Constructor(Vector3(3437.781f, 4710.808f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 1663, + FacilityTurret.Constructor(Vector3(3437.781f, 4710.808f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1663, 5062) - LocalObject(1664, FacilityTurret.Constructor(Vector3(3466.908f, 4553.489f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 1664, + FacilityTurret.Constructor(Vector3(3466.908f, 4553.489f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1664, 5063) - LocalObject(1666, FacilityTurret.Constructor(Vector3(3488.309f, 4623.683f, 83.80342f), manned_turret), owning_building_guid = 47) + LocalObject( + 1666, + FacilityTurret.Constructor(Vector3(3488.309f, 4623.683f, 83.80342f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1666, 5064) - LocalObject(2171, Painbox.Constructor(Vector3(3416.209f, 4608.452f, 63.87772f), painbox), owning_building_guid = 47) - LocalObject(2184, Painbox.Constructor(Vector3(3398.802f, 4579.997f, 72.17432f), painbox_continuous), owning_building_guid = 47) - LocalObject(2197, Painbox.Constructor(Vector3(3412.258f, 4594.121f, 63.56382f), painbox_door_radius), owning_building_guid = 47) - LocalObject(2222, Painbox.Constructor(Vector3(3392.094f, 4568.793f, 70.03232f), painbox_door_radius_continuous), owning_building_guid = 47) - LocalObject(2223, Painbox.Constructor(Vector3(3403.595f, 4593.776f, 70.58062f), painbox_door_radius_continuous), owning_building_guid = 47) - LocalObject(2224, Painbox.Constructor(Vector3(3415.308f, 4580.983f, 71.48672f), painbox_door_radius_continuous), owning_building_guid = 47) + LocalObject( + 2171, + Painbox.Constructor(Vector3(3416.209f, 4608.452f, 63.87772f), painbox), + owning_building_guid = 47 + ) + LocalObject( + 2184, + Painbox.Constructor(Vector3(3398.802f, 4579.997f, 72.17432f), painbox_continuous), + owning_building_guid = 47 + ) + LocalObject( + 2197, + Painbox.Constructor(Vector3(3412.258f, 4594.121f, 63.56382f), painbox_door_radius), + owning_building_guid = 47 + ) + LocalObject( + 2222, + Painbox.Constructor(Vector3(3392.094f, 4568.793f, 70.03232f), painbox_door_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 2223, + Painbox.Constructor(Vector3(3403.595f, 4593.776f, 70.58062f), painbox_door_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 2224, + Painbox.Constructor(Vector3(3415.308f, 4580.983f, 71.48672f), painbox_door_radius_continuous), + owning_building_guid = 47 + ) LocalObject(287, Generator.Constructor(Vector3(3419.577f, 4610.66f, 59.11042f)), owning_building_guid = 47) - LocalObject(274, Terminal.Constructor(Vector3(3416.42f, 4603.101f, 60.40442f), gen_control), owning_building_guid = 47) + LocalObject( + 274, + Terminal.Constructor(Vector3(3416.42f, 4603.101f, 60.40442f), gen_control), + owning_building_guid = 47 + ) } Building6() def Building6(): Unit = { // Name: Dagur Type: tech_plant GUID: 50, MapID: 6 - LocalBuilding("Dagur", 50, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3936f, 6108f, 60.06042f), Vector3(0f, 0f, 79f), tech_plant))) - LocalObject(217, CaptureTerminal.Constructor(Vector3(3980.182f, 6104.234f, 75.16042f), capture_terminal), owning_building_guid = 50) + LocalBuilding( + "Dagur", + 50, + 6, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(3936f, 6108f, 60.06042f), Vector3(0f, 0f, 79f), tech_plant) + ) + ) + LocalObject( + 217, + CaptureTerminal.Constructor(Vector3(3980.182f, 6104.234f, 75.16042f), capture_terminal), + owning_building_guid = 50 + ) LocalObject(475, Door.Constructor(Vector3(3900.902f, 6042.025f, 69.56542f)), owning_building_guid = 50) LocalObject(476, Door.Constructor(Vector3(3909.995f, 6138.074f, 61.60242f)), owning_building_guid = 50) LocalObject(477, Door.Constructor(Vector3(3913.466f, 6155.932f, 69.56542f)), owning_building_guid = 50) @@ -1622,16 +4638,66 @@ object Map07 { // Esamir LocalObject(2687, Door.Constructor(Vector3(3965.594f, 6115.158f, 54.51442f)), owning_building_guid = 50) LocalObject(2688, Door.Constructor(Vector3(3972.75f, 6113.767f, 54.51442f)), owning_building_guid = 50) LocalObject(2689, Door.Constructor(Vector3(3979.908f, 6112.375f, 54.51442f)), owning_building_guid = 50) - LocalObject(941, IFFLock.Constructor(Vector3(3991.781f, 6141.326f, 61.64043f), Vector3(0, 0, 101)), owning_building_guid = 50, door_guid = 897) - LocalObject(948, IFFLock.Constructor(Vector3(3886.269f, 6074.123f, 61.74842f), Vector3(0, 0, 281)), owning_building_guid = 50, door_guid = 603) - LocalObject(1085, IFFLock.Constructor(Vector3(3958.274f, 6133.796f, 46.49643f), Vector3(0, 0, 101)), owning_building_guid = 50, door_guid = 785) - LocalObject(1086, IFFLock.Constructor(Vector3(3959.834f, 6112.082f, 76.60642f), Vector3(0, 0, 281)), owning_building_guid = 50, door_guid = 483) - LocalObject(1087, IFFLock.Constructor(Vector3(3962.28f, 6121.665f, 53.99643f), Vector3(0, 0, 281)), owning_building_guid = 50, door_guid = 787) - LocalObject(1088, IFFLock.Constructor(Vector3(3973.279f, 6095.077f, 76.49643f), Vector3(0, 0, 281)), owning_building_guid = 50, door_guid = 795) - LocalObject(1089, IFFLock.Constructor(Vector3(3979.206f, 6119.462f, 76.60642f), Vector3(0, 0, 101)), owning_building_guid = 50, door_guid = 488) - LocalObject(1092, IFFLock.Constructor(Vector3(3986.661f, 6129.794f, 46.49643f), Vector3(0, 0, 191)), owning_building_guid = 50, door_guid = 797) - LocalObject(1093, IFFLock.Constructor(Vector3(3988.029f, 6119.862f, 53.99643f), Vector3(0, 0, 101)), owning_building_guid = 50, door_guid = 799) - LocalObject(1099, IFFLock.Constructor(Vector3(4028.384f, 6048.464f, 61.61243f), Vector3(0, 0, 191)), owning_building_guid = 50, door_guid = 496) + LocalObject( + 941, + IFFLock.Constructor(Vector3(3991.781f, 6141.326f, 61.64043f), Vector3(0, 0, 101)), + owning_building_guid = 50, + door_guid = 897 + ) + LocalObject( + 948, + IFFLock.Constructor(Vector3(3886.269f, 6074.123f, 61.74842f), Vector3(0, 0, 281)), + owning_building_guid = 50, + door_guid = 603 + ) + LocalObject( + 1085, + IFFLock.Constructor(Vector3(3958.274f, 6133.796f, 46.49643f), Vector3(0, 0, 101)), + owning_building_guid = 50, + door_guid = 785 + ) + LocalObject( + 1086, + IFFLock.Constructor(Vector3(3959.834f, 6112.082f, 76.60642f), Vector3(0, 0, 281)), + owning_building_guid = 50, + door_guid = 483 + ) + LocalObject( + 1087, + IFFLock.Constructor(Vector3(3962.28f, 6121.665f, 53.99643f), Vector3(0, 0, 281)), + owning_building_guid = 50, + door_guid = 787 + ) + LocalObject( + 1088, + IFFLock.Constructor(Vector3(3973.279f, 6095.077f, 76.49643f), Vector3(0, 0, 281)), + owning_building_guid = 50, + door_guid = 795 + ) + LocalObject( + 1089, + IFFLock.Constructor(Vector3(3979.206f, 6119.462f, 76.60642f), Vector3(0, 0, 101)), + owning_building_guid = 50, + door_guid = 488 + ) + LocalObject( + 1092, + IFFLock.Constructor(Vector3(3986.661f, 6129.794f, 46.49643f), Vector3(0, 0, 191)), + owning_building_guid = 50, + door_guid = 797 + ) + LocalObject( + 1093, + IFFLock.Constructor(Vector3(3988.029f, 6119.862f, 53.99643f), Vector3(0, 0, 101)), + owning_building_guid = 50, + door_guid = 799 + ) + LocalObject( + 1099, + IFFLock.Constructor(Vector3(4028.384f, 6048.464f, 61.61243f), Vector3(0, 0, 191)), + owning_building_guid = 50, + door_guid = 496 + ) LocalObject(1403, Locker.Constructor(Vector3(3967.885f, 6136.636f, 45.16042f)), owning_building_guid = 50) LocalObject(1404, Locker.Constructor(Vector3(3968.137f, 6137.936f, 45.16042f)), owning_building_guid = 50) LocalObject(1405, Locker.Constructor(Vector3(3968.392f, 6139.248f, 45.16042f)), owning_building_guid = 50) @@ -1644,72 +4710,290 @@ object Map07 { // Esamir LocalObject(1412, Locker.Constructor(Vector3(3985.735f, 6123.522f, 52.92142f)), owning_building_guid = 50) LocalObject(1413, Locker.Constructor(Vector3(3985.953f, 6124.648f, 52.92142f)), owning_building_guid = 50) LocalObject(1414, Locker.Constructor(Vector3(3986.173f, 6125.776f, 52.92142f)), owning_building_guid = 50) - LocalObject(160, Terminal.Constructor(Vector3(3961.294f, 6107.844f, 75.76343f), air_vehicle_terminal), owning_building_guid = 50) - LocalObject(1734, VehicleSpawnPad.Constructor(Vector3(3940.102f, 6107.274f, 72.63843f), mb_pad_creation, Vector3(0, 0, -79)), owning_building_guid = 50, terminal_guid = 160) - LocalObject(161, Terminal.Constructor(Vector3(3963.571f, 6119.557f, 75.76343f), air_vehicle_terminal), owning_building_guid = 50) - LocalObject(1735, VehicleSpawnPad.Constructor(Vector3(3944.112f, 6127.906f, 72.63843f), mb_pad_creation, Vector3(0, 0, -79)), owning_building_guid = 50, terminal_guid = 161) - LocalObject(1849, Terminal.Constructor(Vector3(3962.61f, 6105.943f, 66.49043f), order_terminal), owning_building_guid = 50) - LocalObject(1850, Terminal.Constructor(Vector3(3973.55f, 6127.854f, 54.25042f), order_terminal), owning_building_guid = 50) - LocalObject(1851, Terminal.Constructor(Vector3(3977.27f, 6127.131f, 54.25042f), order_terminal), owning_building_guid = 50) - LocalObject(1852, Terminal.Constructor(Vector3(3980.932f, 6126.419f, 54.25042f), order_terminal), owning_building_guid = 50) - LocalObject(2604, Terminal.Constructor(Vector3(3935.617f, 6122.878f, 72.08343f), spawn_terminal), owning_building_guid = 50) - LocalObject(2605, Terminal.Constructor(Vector3(3963.093f, 6140.673f, 66.74242f), spawn_terminal), owning_building_guid = 50) - LocalObject(2606, Terminal.Constructor(Vector3(3968.097f, 6114.974f, 54.79443f), spawn_terminal), owning_building_guid = 50) - LocalObject(2607, Terminal.Constructor(Vector3(3975.251f, 6113.58f, 54.79443f), spawn_terminal), owning_building_guid = 50) - LocalObject(2608, Terminal.Constructor(Vector3(3982.41f, 6112.193f, 54.79443f), spawn_terminal), owning_building_guid = 50) - LocalObject(2609, Terminal.Constructor(Vector3(3984.053f, 6106.75f, 46.71742f), spawn_terminal), owning_building_guid = 50) - LocalObject(2614, Terminal.Constructor(Vector3(4025.066f, 6066.179f, 54.21743f), spawn_terminal), owning_building_guid = 50) - LocalObject(2812, Terminal.Constructor(Vector3(3966.672f, 6053.136f, 45.87442f), ground_vehicle_terminal), owning_building_guid = 50) - LocalObject(1736, VehicleSpawnPad.Constructor(Vector3(3955.947f, 6055.168f, 37.59743f), mb_pad_creation, Vector3(0, 0, -79)), owning_building_guid = 50, terminal_guid = 2812) + LocalObject( + 160, + Terminal.Constructor(Vector3(3961.294f, 6107.844f, 75.76343f), air_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1734, + VehicleSpawnPad.Constructor(Vector3(3940.102f, 6107.274f, 72.63843f), mb_pad_creation, Vector3(0, 0, -79)), + owning_building_guid = 50, + terminal_guid = 160 + ) + LocalObject( + 161, + Terminal.Constructor(Vector3(3963.571f, 6119.557f, 75.76343f), air_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1735, + VehicleSpawnPad.Constructor(Vector3(3944.112f, 6127.906f, 72.63843f), mb_pad_creation, Vector3(0, 0, -79)), + owning_building_guid = 50, + terminal_guid = 161 + ) + LocalObject( + 1849, + Terminal.Constructor(Vector3(3962.61f, 6105.943f, 66.49043f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1850, + Terminal.Constructor(Vector3(3973.55f, 6127.854f, 54.25042f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1851, + Terminal.Constructor(Vector3(3977.27f, 6127.131f, 54.25042f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1852, + Terminal.Constructor(Vector3(3980.932f, 6126.419f, 54.25042f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2604, + Terminal.Constructor(Vector3(3935.617f, 6122.878f, 72.08343f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2605, + Terminal.Constructor(Vector3(3963.093f, 6140.673f, 66.74242f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2606, + Terminal.Constructor(Vector3(3968.097f, 6114.974f, 54.79443f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2607, + Terminal.Constructor(Vector3(3975.251f, 6113.58f, 54.79443f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2608, + Terminal.Constructor(Vector3(3982.41f, 6112.193f, 54.79443f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2609, + Terminal.Constructor(Vector3(3984.053f, 6106.75f, 46.71742f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2614, + Terminal.Constructor(Vector3(4025.066f, 6066.179f, 54.21743f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2812, + Terminal.Constructor(Vector3(3966.672f, 6053.136f, 45.87442f), ground_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1736, + VehicleSpawnPad.Constructor(Vector3(3955.947f, 6055.168f, 37.59743f), mb_pad_creation, Vector3(0, 0, -79)), + owning_building_guid = 50, + terminal_guid = 2812 + ) LocalObject(2430, ResourceSilo.Constructor(Vector3(3915.826f, 6174.829f, 67.06843f)), owning_building_guid = 50) - LocalObject(2485, SpawnTube.Constructor(Vector3(3966.544f, 6114.525f, 52.66042f), Vector3(0, 0, 281)), owning_building_guid = 50) - LocalObject(2486, SpawnTube.Constructor(Vector3(3973.698f, 6113.134f, 52.66042f), Vector3(0, 0, 281)), owning_building_guid = 50) - LocalObject(2487, SpawnTube.Constructor(Vector3(3980.855f, 6111.743f, 52.66042f), Vector3(0, 0, 281)), owning_building_guid = 50) - LocalObject(1757, ProximityTerminal.Constructor(Vector3(3969.612f, 6142.667f, 45.16042f), medical_terminal), owning_building_guid = 50) - LocalObject(1758, ProximityTerminal.Constructor(Vector3(3973.001f, 6103.924f, 65.15742f), medical_terminal), owning_building_guid = 50) - LocalObject(2063, ProximityTerminal.Constructor(Vector3(3936.19f, 6066.175f, 70.61043f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2064, Terminal.Constructor(Vector3(3936.19f, 6066.175f, 70.61043f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2069, ProximityTerminal.Constructor(Vector3(3948.196f, 6043.186f, 68.25542f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2070, Terminal.Constructor(Vector3(3948.196f, 6043.186f, 68.25542f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2072, ProximityTerminal.Constructor(Vector3(3974.451f, 6170.084f, 68.26842f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2073, Terminal.Constructor(Vector3(3974.451f, 6170.084f, 68.26842f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2075, ProximityTerminal.Constructor(Vector3(3989.198f, 6160.807f, 70.71243f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2076, Terminal.Constructor(Vector3(3989.198f, 6160.807f, 70.71243f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2078, ProximityTerminal.Constructor(Vector3(4001.13f, 6104.895f, 75.50742f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2079, Terminal.Constructor(Vector3(4001.13f, 6104.895f, 75.50742f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2084, ProximityTerminal.Constructor(Vector3(4020.749f, 6117.539f, 68.26842f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2085, Terminal.Constructor(Vector3(4020.749f, 6117.539f, 68.26842f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2382, ProximityTerminal.Constructor(Vector3(3895.187f, 6116.248f, 59.78893f), repair_silo), owning_building_guid = 50) - LocalObject(2383, Terminal.Constructor(Vector3(3895.187f, 6116.248f, 59.78893f), ground_rearm_terminal), owning_building_guid = 50) - LocalObject(2394, ProximityTerminal.Constructor(Vector3(4038.276f, 6147.854f, 59.81042f), repair_silo), owning_building_guid = 50) - LocalObject(2395, Terminal.Constructor(Vector3(4038.276f, 6147.854f, 59.81042f), ground_rearm_terminal), owning_building_guid = 50) - LocalObject(1675, FacilityTurret.Constructor(Vector3(3822.915f, 6044.313f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 2485, + SpawnTube.Constructor(Vector3(3966.544f, 6114.525f, 52.66042f), Vector3(0, 0, 281)), + owning_building_guid = 50 + ) + LocalObject( + 2486, + SpawnTube.Constructor(Vector3(3973.698f, 6113.134f, 52.66042f), Vector3(0, 0, 281)), + owning_building_guid = 50 + ) + LocalObject( + 2487, + SpawnTube.Constructor(Vector3(3980.855f, 6111.743f, 52.66042f), Vector3(0, 0, 281)), + owning_building_guid = 50 + ) + LocalObject( + 1757, + ProximityTerminal.Constructor(Vector3(3969.612f, 6142.667f, 45.16042f), medical_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1758, + ProximityTerminal.Constructor(Vector3(3973.001f, 6103.924f, 65.15742f), medical_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2063, + ProximityTerminal.Constructor(Vector3(3936.19f, 6066.175f, 70.61043f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2064, + Terminal.Constructor(Vector3(3936.19f, 6066.175f, 70.61043f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2069, + ProximityTerminal.Constructor(Vector3(3948.196f, 6043.186f, 68.25542f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2070, + Terminal.Constructor(Vector3(3948.196f, 6043.186f, 68.25542f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2072, + ProximityTerminal.Constructor(Vector3(3974.451f, 6170.084f, 68.26842f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2073, + Terminal.Constructor(Vector3(3974.451f, 6170.084f, 68.26842f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2075, + ProximityTerminal.Constructor(Vector3(3989.198f, 6160.807f, 70.71243f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2076, + Terminal.Constructor(Vector3(3989.198f, 6160.807f, 70.71243f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2078, + ProximityTerminal.Constructor(Vector3(4001.13f, 6104.895f, 75.50742f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2079, + Terminal.Constructor(Vector3(4001.13f, 6104.895f, 75.50742f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2084, + ProximityTerminal.Constructor(Vector3(4020.749f, 6117.539f, 68.26842f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2085, + Terminal.Constructor(Vector3(4020.749f, 6117.539f, 68.26842f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2382, + ProximityTerminal.Constructor(Vector3(3895.187f, 6116.248f, 59.78893f), repair_silo), + owning_building_guid = 50 + ) + LocalObject( + 2383, + Terminal.Constructor(Vector3(3895.187f, 6116.248f, 59.78893f), ground_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2394, + ProximityTerminal.Constructor(Vector3(4038.276f, 6147.854f, 59.81042f), repair_silo), + owning_building_guid = 50 + ) + LocalObject( + 2395, + Terminal.Constructor(Vector3(4038.276f, 6147.854f, 59.81042f), ground_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1675, + FacilityTurret.Constructor(Vector3(3822.915f, 6044.313f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1675, 5065) - LocalObject(1676, FacilityTurret.Constructor(Vector3(3840.03f, 6132.36f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 1676, + FacilityTurret.Constructor(Vector3(3840.03f, 6132.36f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1676, 5066) - LocalObject(1678, FacilityTurret.Constructor(Vector3(3914.746f, 6199.898f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 1678, + FacilityTurret.Constructor(Vector3(3914.746f, 6199.898f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1678, 5067) - LocalObject(1681, FacilityTurret.Constructor(Vector3(3987.855f, 6193.559f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 1681, + FacilityTurret.Constructor(Vector3(3987.855f, 6193.559f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1681, 5068) - LocalObject(1682, FacilityTurret.Constructor(Vector3(4018.515f, 6011.903f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 1682, + FacilityTurret.Constructor(Vector3(4018.515f, 6011.903f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1682, 5069) - LocalObject(1683, FacilityTurret.Constructor(Vector3(4049.957f, 6173.616f, 68.55943f), manned_turret), owning_building_guid = 50) + LocalObject( + 1683, + FacilityTurret.Constructor(Vector3(4049.957f, 6173.616f, 68.55943f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1683, 5070) - LocalObject(2173, Painbox.Constructor(Vector3(3944.635f, 6132.541f, 48.63372f), painbox), owning_building_guid = 50) - LocalObject(2186, Painbox.Constructor(Vector3(3976.087f, 6121.43f, 56.93032f), painbox_continuous), owning_building_guid = 50) - LocalObject(2199, Painbox.Constructor(Vector3(3959.474f, 6131.655f, 48.31982f), painbox_door_radius), owning_building_guid = 50) - LocalObject(2228, Painbox.Constructor(Vector3(3961.612f, 6123.254f, 55.33662f), painbox_door_radius_continuous), owning_building_guid = 50) - LocalObject(2229, Painbox.Constructor(Vector3(3971.69f, 6137.371f, 56.24273f), painbox_door_radius_continuous), owning_building_guid = 50) - LocalObject(2230, Painbox.Constructor(Vector3(3988.44f, 6117.198f, 54.78833f), painbox_door_radius_continuous), owning_building_guid = 50) + LocalObject( + 2173, + Painbox.Constructor(Vector3(3944.635f, 6132.541f, 48.63372f), painbox), + owning_building_guid = 50 + ) + LocalObject( + 2186, + Painbox.Constructor(Vector3(3976.087f, 6121.43f, 56.93032f), painbox_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2199, + Painbox.Constructor(Vector3(3959.474f, 6131.655f, 48.31982f), painbox_door_radius), + owning_building_guid = 50 + ) + LocalObject( + 2228, + Painbox.Constructor(Vector3(3961.612f, 6123.254f, 55.33662f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2229, + Painbox.Constructor(Vector3(3971.69f, 6137.371f, 56.24273f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2230, + Painbox.Constructor(Vector3(3988.44f, 6117.198f, 54.78833f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) LocalObject(289, Generator.Constructor(Vector3(3941.775f, 6135.376f, 43.86642f)), owning_building_guid = 50) - LocalObject(276, Terminal.Constructor(Vector3(3949.825f, 6133.859f, 45.16042f), gen_control), owning_building_guid = 50) + LocalObject( + 276, + Terminal.Constructor(Vector3(3949.825f, 6133.859f, 45.16042f), gen_control), + owning_building_guid = 50 + ) } Building10() def Building10(): Unit = { // Name: Helhiem Type: tech_plant GUID: 53, MapID: 10 - LocalBuilding("Helhiem", 53, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5448f, 2608f, 53.3311f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(220, CaptureTerminal.Constructor(Vector3(5452.734f, 2563.911f, 68.4311f), capture_terminal), owning_building_guid = 53) + LocalBuilding( + "Helhiem", + 53, + 10, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(5448f, 2608f, 53.3311f), Vector3(0f, 0f, 360f), tech_plant) + ) + ) + LocalObject( + 220, + CaptureTerminal.Constructor(Vector3(5452.734f, 2563.911f, 68.4311f), capture_terminal), + owning_building_guid = 53 + ) LocalObject(544, Door.Constructor(Vector3(5376.54f, 2537.929f, 54.8731f)), owning_building_guid = 53) LocalObject(545, Door.Constructor(Vector3(5376.54f, 2556.121f, 62.8361f)), owning_building_guid = 53) LocalObject(546, Door.Constructor(Vector3(5376.54f, 2611.673f, 54.8731f)), owning_building_guid = 53) @@ -1748,16 +5032,66 @@ object Map07 { // Esamir LocalObject(2708, Door.Constructor(Vector3(5460.673f, 2565.733f, 47.7851f)), owning_building_guid = 53) LocalObject(2709, Door.Constructor(Vector3(5460.673f, 2573.026f, 47.7851f)), owning_building_guid = 53) LocalObject(2710, Door.Constructor(Vector3(5460.673f, 2580.315f, 47.7851f)), owning_building_guid = 53) - LocalObject(944, IFFLock.Constructor(Vector3(5491.357f, 2559.603f, 54.9111f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 900) - LocalObject(949, IFFLock.Constructor(Vector3(5405.256f, 2650.353f, 55.0191f), Vector3(0, 0, 360)), owning_building_guid = 53, door_guid = 604) - LocalObject(1140, IFFLock.Constructor(Vector3(5407.186f, 2505.954f, 54.88309f), Vector3(0, 0, 270)), owning_building_guid = 53, door_guid = 548) - LocalObject(1141, IFFLock.Constructor(Vector3(5442.428f, 2568.94f, 69.7671f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 855) - LocalObject(1142, IFFLock.Constructor(Vector3(5456.554f, 2585.383f, 69.8771f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 551) - LocalObject(1143, IFFLock.Constructor(Vector3(5466.428f, 2584.81f, 47.2671f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 863) - LocalObject(1144, IFFLock.Constructor(Vector3(5467.496f, 2567.775f, 69.8771f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 552) - LocalObject(1145, IFFLock.Constructor(Vector3(5469.572f, 2559.19f, 47.2671f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 862) - LocalObject(1146, IFFLock.Constructor(Vector3(5477.572f, 2591.057f, 39.7671f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 864) - LocalObject(1147, IFFLock.Constructor(Vector3(5479.06f, 2562.428f, 39.7671f), Vector3(0, 0, 270)), owning_building_guid = 53, door_guid = 865) + LocalObject( + 944, + IFFLock.Constructor(Vector3(5491.357f, 2559.603f, 54.9111f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 900 + ) + LocalObject( + 949, + IFFLock.Constructor(Vector3(5405.256f, 2650.353f, 55.0191f), Vector3(0, 0, 360)), + owning_building_guid = 53, + door_guid = 604 + ) + LocalObject( + 1140, + IFFLock.Constructor(Vector3(5407.186f, 2505.954f, 54.88309f), Vector3(0, 0, 270)), + owning_building_guid = 53, + door_guid = 548 + ) + LocalObject( + 1141, + IFFLock.Constructor(Vector3(5442.428f, 2568.94f, 69.7671f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 855 + ) + LocalObject( + 1142, + IFFLock.Constructor(Vector3(5456.554f, 2585.383f, 69.8771f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 551 + ) + LocalObject( + 1143, + IFFLock.Constructor(Vector3(5466.428f, 2584.81f, 47.2671f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 863 + ) + LocalObject( + 1144, + IFFLock.Constructor(Vector3(5467.496f, 2567.775f, 69.8771f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 552 + ) + LocalObject( + 1145, + IFFLock.Constructor(Vector3(5469.572f, 2559.19f, 47.2671f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 862 + ) + LocalObject( + 1146, + IFFLock.Constructor(Vector3(5477.572f, 2591.057f, 39.7671f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 864 + ) + LocalObject( + 1147, + IFFLock.Constructor(Vector3(5479.06f, 2562.428f, 39.7671f), Vector3(0, 0, 270)), + owning_building_guid = 53, + door_guid = 865 + ) LocalObject(1496, Locker.Constructor(Vector3(5471.563f, 2562.141f, 46.1921f)), owning_building_guid = 53) LocalObject(1497, Locker.Constructor(Vector3(5472.727f, 2562.141f, 46.1921f)), owning_building_guid = 53) LocalObject(1498, Locker.Constructor(Vector3(5473.874f, 2562.141f, 46.1921f)), owning_building_guid = 53) @@ -1770,82 +5104,320 @@ object Map07 { // Esamir LocalObject(1505, Locker.Constructor(Vector3(5492.055f, 2582.165f, 38.4311f)), owning_building_guid = 53) LocalObject(1506, Locker.Constructor(Vector3(5493.391f, 2582.165f, 38.4311f)), owning_building_guid = 53) LocalObject(1507, Locker.Constructor(Vector3(5494.728f, 2582.165f, 38.4311f)), owning_building_guid = 53) - LocalObject(162, Terminal.Constructor(Vector3(5452.673f, 2583.141f, 69.0341f), air_vehicle_terminal), owning_building_guid = 53) - LocalObject(1740, VehicleSpawnPad.Constructor(Vector3(5448.07f, 2603.835f, 65.9091f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 53, terminal_guid = 162) - LocalObject(163, Terminal.Constructor(Vector3(5464.605f, 2583.141f, 69.0341f), air_vehicle_terminal), owning_building_guid = 53) - LocalObject(1741, VehicleSpawnPad.Constructor(Vector3(5469.088f, 2603.835f, 65.9091f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 53, terminal_guid = 163) - LocalObject(1881, Terminal.Constructor(Vector3(5451.058f, 2581.486f, 59.7611f), order_terminal), owning_building_guid = 53) - LocalObject(1882, Terminal.Constructor(Vector3(5474.654f, 2567.408f, 47.5211f), order_terminal), owning_building_guid = 53) - LocalObject(1883, Terminal.Constructor(Vector3(5474.654f, 2571.139f, 47.5211f), order_terminal), owning_building_guid = 53) - LocalObject(1884, Terminal.Constructor(Vector3(5474.654f, 2574.928f, 47.5211f), order_terminal), owning_building_guid = 53) - LocalObject(2624, Terminal.Constructor(Vector3(5423.942f, 2512.591f, 47.4881f), spawn_terminal), owning_building_guid = 53) - LocalObject(2625, Terminal.Constructor(Vector3(5455.942f, 2560.591f, 39.9881f), spawn_terminal), owning_building_guid = 53) - LocalObject(2626, Terminal.Constructor(Vector3(5460.971f, 2563.243f, 48.0651f), spawn_terminal), owning_building_guid = 53) - LocalObject(2627, Terminal.Constructor(Vector3(5460.967f, 2570.535f, 48.0651f), spawn_terminal), owning_building_guid = 53) - LocalObject(2628, Terminal.Constructor(Vector3(5460.97f, 2577.823f, 48.0651f), spawn_terminal), owning_building_guid = 53) - LocalObject(2629, Terminal.Constructor(Vector3(5462.532f, 2611.215f, 65.3541f), spawn_terminal), owning_building_guid = 53) - LocalObject(2630, Terminal.Constructor(Vector3(5485.242f, 2587.639f, 60.0131f), spawn_terminal), owning_building_guid = 53) - LocalObject(2815, Terminal.Constructor(Vector3(5399.996f, 2567.423f, 39.1451f), ground_vehicle_terminal), owning_building_guid = 53) - LocalObject(1739, VehicleSpawnPad.Constructor(Vector3(5399.945f, 2578.339f, 30.8681f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 53, terminal_guid = 2815) + LocalObject( + 162, + Terminal.Constructor(Vector3(5452.673f, 2583.141f, 69.0341f), air_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1740, + VehicleSpawnPad.Constructor(Vector3(5448.07f, 2603.835f, 65.9091f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 53, + terminal_guid = 162 + ) + LocalObject( + 163, + Terminal.Constructor(Vector3(5464.605f, 2583.141f, 69.0341f), air_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1741, + VehicleSpawnPad.Constructor(Vector3(5469.088f, 2603.835f, 65.9091f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 53, + terminal_guid = 163 + ) + LocalObject( + 1881, + Terminal.Constructor(Vector3(5451.058f, 2581.486f, 59.7611f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1882, + Terminal.Constructor(Vector3(5474.654f, 2567.408f, 47.5211f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1883, + Terminal.Constructor(Vector3(5474.654f, 2571.139f, 47.5211f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1884, + Terminal.Constructor(Vector3(5474.654f, 2574.928f, 47.5211f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2624, + Terminal.Constructor(Vector3(5423.942f, 2512.591f, 47.4881f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2625, + Terminal.Constructor(Vector3(5455.942f, 2560.591f, 39.9881f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2626, + Terminal.Constructor(Vector3(5460.971f, 2563.243f, 48.0651f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2627, + Terminal.Constructor(Vector3(5460.967f, 2570.535f, 48.0651f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2628, + Terminal.Constructor(Vector3(5460.97f, 2577.823f, 48.0651f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2629, + Terminal.Constructor(Vector3(5462.532f, 2611.215f, 65.3541f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2630, + Terminal.Constructor(Vector3(5485.242f, 2587.639f, 60.0131f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2815, + Terminal.Constructor(Vector3(5399.996f, 2567.423f, 39.1451f), ground_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1739, + VehicleSpawnPad.Constructor(Vector3(5399.945f, 2578.339f, 30.8681f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 53, + terminal_guid = 2815 + ) LocalObject(2433, ResourceSilo.Constructor(Vector3(5509.752f, 2640.555f, 60.3391f)), owning_building_guid = 53) - LocalObject(2506, SpawnTube.Constructor(Vector3(5460.233f, 2564.683f, 45.9311f), Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(2507, SpawnTube.Constructor(Vector3(5460.233f, 2571.974f, 45.9311f), Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(2508, SpawnTube.Constructor(Vector3(5460.233f, 2579.262f, 45.9311f), Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1762, ProximityTerminal.Constructor(Vector3(5451.059f, 2570.901f, 58.4281f), medical_terminal), owning_building_guid = 53) - LocalObject(1763, ProximityTerminal.Constructor(Vector3(5488.444f, 2581.62f, 38.4311f), medical_terminal), owning_building_guid = 53) - LocalObject(2105, ProximityTerminal.Constructor(Vector3(5386.704f, 2583.661f, 61.5261f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2106, Terminal.Constructor(Vector3(5386.704f, 2583.661f, 61.5261f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2108, ProximityTerminal.Constructor(Vector3(5406.98f, 2599.833f, 63.8811f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2109, Terminal.Constructor(Vector3(5406.98f, 2599.833f, 63.8811f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2111, ProximityTerminal.Constructor(Vector3(5457.379f, 2543.474f, 68.7781f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2112, Terminal.Constructor(Vector3(5457.379f, 2543.474f, 68.7781f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2114, ProximityTerminal.Constructor(Vector3(5473.534f, 2526.628f, 61.5391f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2115, Terminal.Constructor(Vector3(5473.534f, 2526.628f, 61.5391f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2117, ProximityTerminal.Constructor(Vector3(5509.987f, 2565.855f, 63.9831f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2118, Terminal.Constructor(Vector3(5509.987f, 2565.855f, 63.9831f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2120, ProximityTerminal.Constructor(Vector3(5516.28f, 2582.102f, 61.5391f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2121, Terminal.Constructor(Vector3(5516.28f, 2582.102f, 61.5391f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2406, ProximityTerminal.Constructor(Vector3(5448.309f, 2649.637f, 53.0596f), repair_silo), owning_building_guid = 53) - LocalObject(2407, Terminal.Constructor(Vector3(5448.309f, 2649.637f, 53.0596f), ground_rearm_terminal), owning_building_guid = 53) - LocalObject(2410, ProximityTerminal.Constructor(Vector3(5506.637f, 2515.208f, 53.0811f), repair_silo), owning_building_guid = 53) - LocalObject(2411, Terminal.Constructor(Vector3(5506.637f, 2515.208f, 53.0811f), ground_rearm_terminal), owning_building_guid = 53) - LocalObject(1700, FacilityTurret.Constructor(Vector3(5363.906f, 2706.855f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 2506, + SpawnTube.Constructor(Vector3(5460.233f, 2564.683f, 45.9311f), Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 2507, + SpawnTube.Constructor(Vector3(5460.233f, 2571.974f, 45.9311f), Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 2508, + SpawnTube.Constructor(Vector3(5460.233f, 2579.262f, 45.9311f), Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1762, + ProximityTerminal.Constructor(Vector3(5451.059f, 2570.901f, 58.4281f), medical_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1763, + ProximityTerminal.Constructor(Vector3(5488.444f, 2581.62f, 38.4311f), medical_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2105, + ProximityTerminal.Constructor(Vector3(5386.704f, 2583.661f, 61.5261f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2106, + Terminal.Constructor(Vector3(5386.704f, 2583.661f, 61.5261f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2108, + ProximityTerminal.Constructor(Vector3(5406.98f, 2599.833f, 63.8811f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2109, + Terminal.Constructor(Vector3(5406.98f, 2599.833f, 63.8811f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2111, + ProximityTerminal.Constructor(Vector3(5457.379f, 2543.474f, 68.7781f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2112, + Terminal.Constructor(Vector3(5457.379f, 2543.474f, 68.7781f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2114, + ProximityTerminal.Constructor(Vector3(5473.534f, 2526.628f, 61.5391f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2115, + Terminal.Constructor(Vector3(5473.534f, 2526.628f, 61.5391f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2117, + ProximityTerminal.Constructor(Vector3(5509.987f, 2565.855f, 63.9831f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2118, + Terminal.Constructor(Vector3(5509.987f, 2565.855f, 63.9831f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2120, + ProximityTerminal.Constructor(Vector3(5516.28f, 2582.102f, 61.5391f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2121, + Terminal.Constructor(Vector3(5516.28f, 2582.102f, 61.5391f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2406, + ProximityTerminal.Constructor(Vector3(5448.309f, 2649.637f, 53.0596f), repair_silo), + owning_building_guid = 53 + ) + LocalObject( + 2407, + Terminal.Constructor(Vector3(5448.309f, 2649.637f, 53.0596f), ground_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2410, + ProximityTerminal.Constructor(Vector3(5506.637f, 2515.208f, 53.0811f), repair_silo), + owning_building_guid = 53 + ) + LocalObject( + 2411, + Terminal.Constructor(Vector3(5506.637f, 2515.208f, 53.0811f), ground_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1700, + FacilityTurret.Constructor(Vector3(5363.906f, 2706.855f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1700, 5071) - LocalObject(1701, FacilityTurret.Constructor(Vector3(5369.413f, 2508.665f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 1701, + FacilityTurret.Constructor(Vector3(5369.413f, 2508.665f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1701, 5072) - LocalObject(1702, FacilityTurret.Constructor(Vector3(5453.601f, 2706.855f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 1702, + FacilityTurret.Constructor(Vector3(5453.601f, 2706.855f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1702, 5073) - LocalObject(1703, FacilityTurret.Constructor(Vector3(5534.154f, 2508.657f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 1703, + FacilityTurret.Constructor(Vector3(5534.154f, 2508.657f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1703, 5074) - LocalObject(1704, FacilityTurret.Constructor(Vector3(5534.154f, 2646.398f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 1704, + FacilityTurret.Constructor(Vector3(5534.154f, 2646.398f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1704, 5075) - LocalObject(1705, FacilityTurret.Constructor(Vector3(5541.881f, 2573.423f, 61.8301f), manned_turret), owning_building_guid = 53) + LocalObject( + 1705, + FacilityTurret.Constructor(Vector3(5541.881f, 2573.423f, 61.8301f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1705, 5076) - LocalObject(2176, Painbox.Constructor(Vector3(5473.737f, 2604.206f, 41.9044f), painbox), owning_building_guid = 53) - LocalObject(2189, Painbox.Constructor(Vector3(5468.832f, 2571.212f, 50.201f), painbox_continuous), owning_building_guid = 53) - LocalObject(2202, Painbox.Constructor(Vector3(5475.7f, 2589.471f, 41.5905f), painbox_door_radius), owning_building_guid = 53) - LocalObject(2237, Painbox.Constructor(Vector3(5467.035f, 2558.278f, 48.059f), painbox_door_radius_continuous), owning_building_guid = 53) - LocalObject(2238, Painbox.Constructor(Vector3(5467.861f, 2585.769f, 48.6073f), painbox_door_radius_continuous), owning_building_guid = 53) - LocalObject(2239, Painbox.Constructor(Vector3(5483.641f, 2578.57f, 49.5134f), painbox_door_radius_continuous), owning_building_guid = 53) + LocalObject( + 2176, + Painbox.Constructor(Vector3(5473.737f, 2604.206f, 41.9044f), painbox), + owning_building_guid = 53 + ) + LocalObject( + 2189, + Painbox.Constructor(Vector3(5468.832f, 2571.212f, 50.201f), painbox_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2202, + Painbox.Constructor(Vector3(5475.7f, 2589.471f, 41.5905f), painbox_door_radius), + owning_building_guid = 53 + ) + LocalObject( + 2237, + Painbox.Constructor(Vector3(5467.035f, 2558.278f, 48.059f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2238, + Painbox.Constructor(Vector3(5467.861f, 2585.769f, 48.6073f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2239, + Painbox.Constructor(Vector3(5483.641f, 2578.57f, 49.5134f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) LocalObject(292, Generator.Constructor(Vector3(5475.975f, 2607.555f, 37.1371f)), owning_building_guid = 53) - LocalObject(279, Terminal.Constructor(Vector3(5476.022f, 2599.363f, 38.4311f), gen_control), owning_building_guid = 53) + LocalObject( + 279, + Terminal.Constructor(Vector3(5476.022f, 2599.363f, 38.4311f), gen_control), + owning_building_guid = 53 + ) } Building53() def Building53(): Unit = { // Name: N_Gjallar_Tower Type: tower_a GUID: 56, MapID: 53 - LocalBuilding("N_Gjallar_Tower", 56, 53, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(986f, 3016f, 82.00085f), Vector3(0f, 0f, 347f), tower_a))) - LocalObject(2525, CaptureTerminal.Constructor(Vector3(1002.139f, 3012.168f, 91.99986f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "N_Gjallar_Tower", + 56, + 53, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(986f, 3016f, 82.00085f), Vector3(0f, 0f, 347f), tower_a) + ) + ) + LocalObject( + 2525, + CaptureTerminal.Constructor(Vector3(1002.139f, 3012.168f, 91.99986f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(311, Door.Constructor(Vector3(995.8928f, 3005.506f, 83.52186f)), owning_building_guid = 56) LocalObject(312, Door.Constructor(Vector3(995.8928f, 3005.506f, 103.5209f)), owning_building_guid = 56) LocalObject(313, Door.Constructor(Vector3(999.4921f, 3021.095f, 83.52186f)), owning_building_guid = 56) LocalObject(314, Door.Constructor(Vector3(999.4921f, 3021.095f, 103.5209f)), owning_building_guid = 56) LocalObject(2642, Door.Constructor(Vector3(994.3395f, 3002.574f, 73.33685f)), owning_building_guid = 56) LocalObject(2643, Door.Constructor(Vector3(998.0309f, 3018.563f, 73.33685f)), owning_building_guid = 56) - LocalObject(964, IFFLock.Constructor(Vector3(997.6838f, 3022.345f, 83.46185f), Vector3(0, 0, 13)), owning_building_guid = 56, door_guid = 313) - LocalObject(965, IFFLock.Constructor(Vector3(997.6838f, 3022.345f, 103.4619f), Vector3(0, 0, 13)), owning_building_guid = 56, door_guid = 314) - LocalObject(966, IFFLock.Constructor(Vector3(997.705f, 3004.255f, 83.46185f), Vector3(0, 0, 193)), owning_building_guid = 56, door_guid = 311) - LocalObject(967, IFFLock.Constructor(Vector3(997.705f, 3004.255f, 103.4619f), Vector3(0, 0, 193)), owning_building_guid = 56, door_guid = 312) + LocalObject( + 964, + IFFLock.Constructor(Vector3(997.6838f, 3022.345f, 83.46185f), Vector3(0, 0, 13)), + owning_building_guid = 56, + door_guid = 313 + ) + LocalObject( + 965, + IFFLock.Constructor(Vector3(997.6838f, 3022.345f, 103.4619f), Vector3(0, 0, 13)), + owning_building_guid = 56, + door_guid = 314 + ) + LocalObject( + 966, + IFFLock.Constructor(Vector3(997.705f, 3004.255f, 83.46185f), Vector3(0, 0, 193)), + owning_building_guid = 56, + door_guid = 311 + ) + LocalObject( + 967, + IFFLock.Constructor(Vector3(997.705f, 3004.255f, 103.4619f), Vector3(0, 0, 193)), + owning_building_guid = 56, + door_guid = 312 + ) LocalObject(1201, Locker.Constructor(Vector3(997.9306f, 2997.813f, 71.99486f)), owning_building_guid = 56) LocalObject(1202, Locker.Constructor(Vector3(999.2333f, 2997.512f, 71.99486f)), owning_building_guid = 56) LocalObject(1204, Locker.Constructor(Vector3(1001.852f, 2996.908f, 71.99486f)), owning_building_guid = 56) @@ -1854,35 +5426,106 @@ object Map07 { // Esamir LocalObject(1209, Locker.Constructor(Vector3(1004.188f, 3018.816f, 71.99486f)), owning_building_guid = 56) LocalObject(1211, Locker.Constructor(Vector3(1006.773f, 3018.219f, 71.99486f)), owning_building_guid = 56) LocalObject(1212, Locker.Constructor(Vector3(1008.139f, 3017.904f, 71.99486f)), owning_building_guid = 56) - LocalObject(1773, Terminal.Constructor(Vector3(1004.675f, 3001.558f, 73.33286f), order_terminal), owning_building_guid = 56) - LocalObject(1774, Terminal.Constructor(Vector3(1005.963f, 3007.135f, 73.33286f), order_terminal), owning_building_guid = 56) - LocalObject(1775, Terminal.Constructor(Vector3(1007.173f, 3012.378f, 73.33286f), order_terminal), owning_building_guid = 56) - LocalObject(2440, SpawnTube.Constructor(Vector3(993.6741f, 3001.648f, 71.48286f), respawn_tube_tower, Vector3(0, 0, 13)), owning_building_guid = 56) - LocalObject(2441, SpawnTube.Constructor(Vector3(997.3656f, 3017.637f, 71.48286f), respawn_tube_tower, Vector3(0, 0, 13)), owning_building_guid = 56) - LocalObject(1608, FacilityTurret.Constructor(Vector3(970.787f, 3006.473f, 100.9429f), manned_turret), owning_building_guid = 56) + LocalObject( + 1773, + Terminal.Constructor(Vector3(1004.675f, 3001.558f, 73.33286f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1774, + Terminal.Constructor(Vector3(1005.963f, 3007.135f, 73.33286f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1775, + Terminal.Constructor(Vector3(1007.173f, 3012.378f, 73.33286f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2440, + SpawnTube.Constructor(Vector3(993.6741f, 3001.648f, 71.48286f), respawn_tube_tower, Vector3(0, 0, 13)), + owning_building_guid = 56 + ) + LocalObject( + 2441, + SpawnTube.Constructor(Vector3(997.3656f, 3017.637f, 71.48286f), respawn_tube_tower, Vector3(0, 0, 13)), + owning_building_guid = 56 + ) + LocalObject( + 1608, + FacilityTurret.Constructor(Vector3(970.787f, 3006.473f, 100.9429f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1608, 5077) - LocalObject(1609, FacilityTurret.Constructor(Vector3(1010.925f, 3023.287f, 100.9429f), manned_turret), owning_building_guid = 56) + LocalObject( + 1609, + FacilityTurret.Constructor(Vector3(1010.925f, 3023.287f, 100.9429f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1609, 5078) - LocalObject(2246, Painbox.Constructor(Vector3(989.7068f, 3008.784f, 73.49995f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2247, Painbox.Constructor(Vector3(1000.341f, 3002.655f, 72.10085f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2248, Painbox.Constructor(Vector3(1002.926f, 3014.233f, 72.10085f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 2246, + Painbox.Constructor(Vector3(989.7068f, 3008.784f, 73.49995f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2247, + Painbox.Constructor(Vector3(1000.341f, 3002.655f, 72.10085f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2248, + Painbox.Constructor(Vector3(1002.926f, 3014.233f, 72.10085f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building31() def Building31(): Unit = { // Name: N_Ymir_Tower Type: tower_a GUID: 57, MapID: 31 - LocalBuilding("N_Ymir_Tower", 57, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1810f, 4194f, 79.81811f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2527, CaptureTerminal.Constructor(Vector3(1826.587f, 4193.897f, 89.81711f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "N_Ymir_Tower", + 57, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1810f, 4194f, 79.81811f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2527, + CaptureTerminal.Constructor(Vector3(1826.587f, 4193.897f, 89.81711f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(328, Door.Constructor(Vector3(1822f, 4186f, 81.33911f)), owning_building_guid = 57) LocalObject(329, Door.Constructor(Vector3(1822f, 4186f, 101.3381f)), owning_building_guid = 57) LocalObject(330, Door.Constructor(Vector3(1822f, 4202f, 81.33911f)), owning_building_guid = 57) LocalObject(331, Door.Constructor(Vector3(1822f, 4202f, 101.3381f)), owning_building_guid = 57) LocalObject(2646, Door.Constructor(Vector3(1821.146f, 4182.794f, 71.15411f)), owning_building_guid = 57) LocalObject(2647, Door.Constructor(Vector3(1821.146f, 4199.204f, 71.15411f)), owning_building_guid = 57) - LocalObject(974, IFFLock.Constructor(Vector3(1819.957f, 4202.811f, 81.27911f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 330) - LocalObject(975, IFFLock.Constructor(Vector3(1819.957f, 4202.811f, 101.2791f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 331) - LocalObject(976, IFFLock.Constructor(Vector3(1824.047f, 4185.189f, 81.27911f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 328) - LocalObject(977, IFFLock.Constructor(Vector3(1824.047f, 4185.189f, 101.2791f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 329) + LocalObject( + 974, + IFFLock.Constructor(Vector3(1819.957f, 4202.811f, 81.27911f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 330 + ) + LocalObject( + 975, + IFFLock.Constructor(Vector3(1819.957f, 4202.811f, 101.2791f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 331 + ) + LocalObject( + 976, + IFFLock.Constructor(Vector3(1824.047f, 4185.189f, 81.27911f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 328 + ) + LocalObject( + 977, + IFFLock.Constructor(Vector3(1824.047f, 4185.189f, 101.2791f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 329 + ) LocalObject(1221, Locker.Constructor(Vector3(1825.716f, 4178.963f, 69.81211f)), owning_building_guid = 57) LocalObject(1222, Locker.Constructor(Vector3(1825.751f, 4200.835f, 69.81211f)), owning_building_guid = 57) LocalObject(1223, Locker.Constructor(Vector3(1827.053f, 4178.963f, 69.81211f)), owning_building_guid = 57) @@ -1891,35 +5534,106 @@ object Map07 { // Esamir LocalObject(1226, Locker.Constructor(Vector3(1829.741f, 4200.835f, 69.81211f)), owning_building_guid = 57) LocalObject(1227, Locker.Constructor(Vector3(1831.143f, 4178.963f, 69.81211f)), owning_building_guid = 57) LocalObject(1228, Locker.Constructor(Vector3(1831.143f, 4200.835f, 69.81211f)), owning_building_guid = 57) - LocalObject(1779, Terminal.Constructor(Vector3(1831.445f, 4184.129f, 71.15011f), order_terminal), owning_building_guid = 57) - LocalObject(1780, Terminal.Constructor(Vector3(1831.445f, 4189.853f, 71.15011f), order_terminal), owning_building_guid = 57) - LocalObject(1781, Terminal.Constructor(Vector3(1831.445f, 4195.234f, 71.15011f), order_terminal), owning_building_guid = 57) - LocalObject(2444, SpawnTube.Constructor(Vector3(1820.706f, 4181.742f, 69.30011f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(2445, SpawnTube.Constructor(Vector3(1820.706f, 4198.152f, 69.30011f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1615, FacilityTurret.Constructor(Vector3(1797.32f, 4181.295f, 98.76011f), manned_turret), owning_building_guid = 57) + LocalObject( + 1779, + Terminal.Constructor(Vector3(1831.445f, 4184.129f, 71.15011f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1780, + Terminal.Constructor(Vector3(1831.445f, 4189.853f, 71.15011f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1781, + Terminal.Constructor(Vector3(1831.445f, 4195.234f, 71.15011f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 2444, + SpawnTube.Constructor(Vector3(1820.706f, 4181.742f, 69.30011f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 2445, + SpawnTube.Constructor(Vector3(1820.706f, 4198.152f, 69.30011f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1615, + FacilityTurret.Constructor(Vector3(1797.32f, 4181.295f, 98.76011f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1615, 5079) - LocalObject(1616, FacilityTurret.Constructor(Vector3(1832.647f, 4206.707f, 98.76011f), manned_turret), owning_building_guid = 57) + LocalObject( + 1616, + FacilityTurret.Constructor(Vector3(1832.647f, 4206.707f, 98.76011f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1616, 5080) - LocalObject(2252, Painbox.Constructor(Vector3(1815.235f, 4187.803f, 71.31721f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2253, Painbox.Constructor(Vector3(1826.889f, 4196.086f, 69.91811f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2254, Painbox.Constructor(Vector3(1826.975f, 4184.223f, 69.91811f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 2252, + Painbox.Constructor(Vector3(1815.235f, 4187.803f, 71.31721f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2253, + Painbox.Constructor(Vector3(1826.889f, 4196.086f, 69.91811f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2254, + Painbox.Constructor(Vector3(1826.975f, 4184.223f, 69.91811f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building52() def Building52(): Unit = { // Name: E_Jarl_Tower Type: tower_a GUID: 58, MapID: 52 - LocalBuilding("E_Jarl_Tower", 58, 52, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2222f, 5656f, 67.37571f), Vector3(0f, 0f, 46f), tower_a))) - LocalObject(2528, CaptureTerminal.Constructor(Vector3(2233.596f, 5667.86f, 77.37471f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "E_Jarl_Tower", + 58, + 52, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2222f, 5656f, 67.37571f), Vector3(0f, 0f, 46f), tower_a) + ) + ) + LocalObject( + 2528, + CaptureTerminal.Constructor(Vector3(2233.596f, 5667.86f, 77.37471f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(354, Door.Constructor(Vector3(2224.581f, 5670.189f, 68.89671f)), owning_building_guid = 58) LocalObject(355, Door.Constructor(Vector3(2224.581f, 5670.189f, 88.89571f)), owning_building_guid = 58) LocalObject(356, Door.Constructor(Vector3(2236.091f, 5659.075f, 68.89671f)), owning_building_guid = 58) LocalObject(357, Door.Constructor(Vector3(2236.091f, 5659.075f, 88.89571f)), owning_building_guid = 58) LocalObject(2654, Door.Constructor(Vector3(2225.999f, 5667.633f, 58.71171f)), owning_building_guid = 58) LocalObject(2655, Door.Constructor(Vector3(2237.803f, 5656.233f, 58.71171f)), owning_building_guid = 58) - LocalObject(997, IFFLock.Constructor(Vector3(2222.579f, 5669.283f, 68.83671f), Vector3(0, 0, 314)), owning_building_guid = 58, door_guid = 354) - LocalObject(998, IFFLock.Constructor(Vector3(2222.579f, 5669.283f, 88.83671f), Vector3(0, 0, 314)), owning_building_guid = 58, door_guid = 355) - LocalObject(999, IFFLock.Constructor(Vector3(2238.096f, 5659.984f, 68.83671f), Vector3(0, 0, 134)), owning_building_guid = 58, door_guid = 356) - LocalObject(1000, IFFLock.Constructor(Vector3(2238.096f, 5659.984f, 88.83671f), Vector3(0, 0, 134)), owning_building_guid = 58, door_guid = 357) + LocalObject( + 997, + IFFLock.Constructor(Vector3(2222.579f, 5669.283f, 68.83671f), Vector3(0, 0, 314)), + owning_building_guid = 58, + door_guid = 354 + ) + LocalObject( + 998, + IFFLock.Constructor(Vector3(2222.579f, 5669.283f, 88.83671f), Vector3(0, 0, 314)), + owning_building_guid = 58, + door_guid = 355 + ) + LocalObject( + 999, + IFFLock.Constructor(Vector3(2238.096f, 5659.984f, 68.83671f), Vector3(0, 0, 134)), + owning_building_guid = 58, + door_guid = 356 + ) + LocalObject( + 1000, + IFFLock.Constructor(Vector3(2238.096f, 5659.984f, 88.83671f), Vector3(0, 0, 134)), + owning_building_guid = 58, + door_guid = 357 + ) LocalObject(1262, Locker.Constructor(Vector3(2228.025f, 5672.078f, 57.36971f)), owning_building_guid = 58) LocalObject(1263, Locker.Constructor(Vector3(2228.954f, 5673.04f, 57.36971f)), owning_building_guid = 58) LocalObject(1264, Locker.Constructor(Vector3(2230.797f, 5674.948f, 57.36971f)), owning_building_guid = 58) @@ -1928,35 +5642,106 @@ object Map07 { // Esamir LocalObject(1267, Locker.Constructor(Vector3(2244.663f, 5657.821f, 57.36971f)), owning_building_guid = 58) LocalObject(1268, Locker.Constructor(Vector3(2246.53f, 5659.755f, 57.36971f)), owning_building_guid = 58) LocalObject(1269, Locker.Constructor(Vector3(2247.504f, 5660.763f, 57.36971f)), owning_building_guid = 58) - LocalObject(1793, Terminal.Constructor(Vector3(2236.009f, 5672.284f, 58.70771f), order_terminal), owning_building_guid = 58) - LocalObject(1794, Terminal.Constructor(Vector3(2239.88f, 5668.545f, 58.70771f), order_terminal), owning_building_guid = 58) - LocalObject(1795, Terminal.Constructor(Vector3(2243.998f, 5664.569f, 58.70771f), order_terminal), owning_building_guid = 58) - LocalObject(2452, SpawnTube.Constructor(Vector3(2226.45f, 5666.585f, 56.85771f), respawn_tube_tower, Vector3(0, 0, 314)), owning_building_guid = 58) - LocalObject(2453, SpawnTube.Constructor(Vector3(2238.255f, 5655.186f, 56.85771f), respawn_tube_tower, Vector3(0, 0, 314)), owning_building_guid = 58) - LocalObject(1626, FacilityTurret.Constructor(Vector3(2222.331f, 5638.053f, 86.31771f), manned_turret), owning_building_guid = 58) + LocalObject( + 1793, + Terminal.Constructor(Vector3(2236.009f, 5672.284f, 58.70771f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1794, + Terminal.Constructor(Vector3(2239.88f, 5668.545f, 58.70771f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1795, + Terminal.Constructor(Vector3(2243.998f, 5664.569f, 58.70771f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 2452, + SpawnTube.Constructor(Vector3(2226.45f, 5666.585f, 56.85771f), respawn_tube_tower, Vector3(0, 0, 314)), + owning_building_guid = 58 + ) + LocalObject( + 2453, + SpawnTube.Constructor(Vector3(2238.255f, 5655.186f, 56.85771f), respawn_tube_tower, Vector3(0, 0, 314)), + owning_building_guid = 58 + ) + LocalObject( + 1626, + FacilityTurret.Constructor(Vector3(2222.331f, 5638.053f, 86.31771f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1626, 5081) - LocalObject(1628, FacilityTurret.Constructor(Vector3(2228.591f, 5681.118f, 86.31771f), manned_turret), owning_building_guid = 58) + LocalObject( + 1628, + FacilityTurret.Constructor(Vector3(2228.591f, 5681.118f, 86.31771f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1628, 5082) - LocalObject(2255, Painbox.Constructor(Vector3(2230.094f, 5655.461f, 58.87481f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2256, Painbox.Constructor(Vector3(2232.232f, 5669.598f, 57.47571f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2257, Painbox.Constructor(Vector3(2240.825f, 5661.419f, 57.47571f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 2255, + Painbox.Constructor(Vector3(2230.094f, 5655.461f, 58.87481f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2256, + Painbox.Constructor(Vector3(2232.232f, 5669.598f, 57.47571f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2257, + Painbox.Constructor(Vector3(2240.825f, 5661.419f, 57.47571f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building49() def Building49(): Unit = { // Name: N_Ran_Tower Type: tower_a GUID: 59, MapID: 49 - LocalBuilding("N_Ran_Tower", 59, 49, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2298f, 2210f, 85.70513f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2529, CaptureTerminal.Constructor(Vector3(2314.587f, 2209.897f, 95.70413f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "N_Ran_Tower", + 59, + 49, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2298f, 2210f, 85.70513f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2529, + CaptureTerminal.Constructor(Vector3(2314.587f, 2209.897f, 95.70413f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(364, Door.Constructor(Vector3(2310f, 2202f, 87.22614f)), owning_building_guid = 59) LocalObject(365, Door.Constructor(Vector3(2310f, 2202f, 107.2251f)), owning_building_guid = 59) LocalObject(366, Door.Constructor(Vector3(2310f, 2218f, 87.22614f)), owning_building_guid = 59) LocalObject(367, Door.Constructor(Vector3(2310f, 2218f, 107.2251f)), owning_building_guid = 59) LocalObject(2656, Door.Constructor(Vector3(2309.146f, 2198.794f, 77.04113f)), owning_building_guid = 59) LocalObject(2657, Door.Constructor(Vector3(2309.146f, 2215.204f, 77.04113f)), owning_building_guid = 59) - LocalObject(1002, IFFLock.Constructor(Vector3(2307.957f, 2218.811f, 87.16613f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 366) - LocalObject(1003, IFFLock.Constructor(Vector3(2307.957f, 2218.811f, 107.1661f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 367) - LocalObject(1006, IFFLock.Constructor(Vector3(2312.047f, 2201.189f, 87.16613f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 364) - LocalObject(1007, IFFLock.Constructor(Vector3(2312.047f, 2201.189f, 107.1661f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 365) + LocalObject( + 1002, + IFFLock.Constructor(Vector3(2307.957f, 2218.811f, 87.16613f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 366 + ) + LocalObject( + 1003, + IFFLock.Constructor(Vector3(2307.957f, 2218.811f, 107.1661f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 367 + ) + LocalObject( + 1006, + IFFLock.Constructor(Vector3(2312.047f, 2201.189f, 87.16613f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 364 + ) + LocalObject( + 1007, + IFFLock.Constructor(Vector3(2312.047f, 2201.189f, 107.1661f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 365 + ) LocalObject(1270, Locker.Constructor(Vector3(2313.716f, 2194.963f, 75.69913f)), owning_building_guid = 59) LocalObject(1271, Locker.Constructor(Vector3(2313.751f, 2216.835f, 75.69913f)), owning_building_guid = 59) LocalObject(1272, Locker.Constructor(Vector3(2315.053f, 2194.963f, 75.69913f)), owning_building_guid = 59) @@ -1965,35 +5750,106 @@ object Map07 { // Esamir LocalObject(1279, Locker.Constructor(Vector3(2317.741f, 2216.835f, 75.69913f)), owning_building_guid = 59) LocalObject(1280, Locker.Constructor(Vector3(2319.143f, 2194.963f, 75.69913f)), owning_building_guid = 59) LocalObject(1281, Locker.Constructor(Vector3(2319.143f, 2216.835f, 75.69913f)), owning_building_guid = 59) - LocalObject(1796, Terminal.Constructor(Vector3(2319.445f, 2200.129f, 77.03713f), order_terminal), owning_building_guid = 59) - LocalObject(1797, Terminal.Constructor(Vector3(2319.445f, 2205.853f, 77.03713f), order_terminal), owning_building_guid = 59) - LocalObject(1798, Terminal.Constructor(Vector3(2319.445f, 2211.234f, 77.03713f), order_terminal), owning_building_guid = 59) - LocalObject(2454, SpawnTube.Constructor(Vector3(2308.706f, 2197.742f, 75.18713f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2455, SpawnTube.Constructor(Vector3(2308.706f, 2214.152f, 75.18713f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1630, FacilityTurret.Constructor(Vector3(2285.32f, 2197.295f, 104.6471f), manned_turret), owning_building_guid = 59) + LocalObject( + 1796, + Terminal.Constructor(Vector3(2319.445f, 2200.129f, 77.03713f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1797, + Terminal.Constructor(Vector3(2319.445f, 2205.853f, 77.03713f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1798, + Terminal.Constructor(Vector3(2319.445f, 2211.234f, 77.03713f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2454, + SpawnTube.Constructor(Vector3(2308.706f, 2197.742f, 75.18713f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2455, + SpawnTube.Constructor(Vector3(2308.706f, 2214.152f, 75.18713f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1630, + FacilityTurret.Constructor(Vector3(2285.32f, 2197.295f, 104.6471f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1630, 5083) - LocalObject(1632, FacilityTurret.Constructor(Vector3(2320.647f, 2222.707f, 104.6471f), manned_turret), owning_building_guid = 59) + LocalObject( + 1632, + FacilityTurret.Constructor(Vector3(2320.647f, 2222.707f, 104.6471f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1632, 5084) - LocalObject(2258, Painbox.Constructor(Vector3(2303.235f, 2203.803f, 77.20423f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2260, Painbox.Constructor(Vector3(2314.889f, 2212.086f, 75.80513f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2261, Painbox.Constructor(Vector3(2314.975f, 2200.223f, 75.80513f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 2258, + Painbox.Constructor(Vector3(2303.235f, 2203.803f, 77.20423f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2260, + Painbox.Constructor(Vector3(2314.889f, 2212.086f, 75.80513f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2261, + Painbox.Constructor(Vector3(2314.975f, 2200.223f, 75.80513f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building21() def Building21(): Unit = { // Name: W_Searhus_Warpgate_Tower Type: tower_a GUID: 60, MapID: 21 - LocalBuilding("W_Searhus_Warpgate_Tower", 60, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2300f, 3034f, 88.18629f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2530, CaptureTerminal.Constructor(Vector3(2316.587f, 3033.897f, 98.18529f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "W_Searhus_Warpgate_Tower", + 60, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2300f, 3034f, 88.18629f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2530, + CaptureTerminal.Constructor(Vector3(2316.587f, 3033.897f, 98.18529f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(368, Door.Constructor(Vector3(2312f, 3026f, 89.70729f)), owning_building_guid = 60) LocalObject(369, Door.Constructor(Vector3(2312f, 3026f, 109.7063f)), owning_building_guid = 60) LocalObject(370, Door.Constructor(Vector3(2312f, 3042f, 89.70729f)), owning_building_guid = 60) LocalObject(371, Door.Constructor(Vector3(2312f, 3042f, 109.7063f)), owning_building_guid = 60) LocalObject(2658, Door.Constructor(Vector3(2311.146f, 3022.794f, 79.52229f)), owning_building_guid = 60) LocalObject(2659, Door.Constructor(Vector3(2311.146f, 3039.204f, 79.52229f)), owning_building_guid = 60) - LocalObject(1004, IFFLock.Constructor(Vector3(2309.957f, 3042.811f, 89.64729f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 370) - LocalObject(1005, IFFLock.Constructor(Vector3(2309.957f, 3042.811f, 109.6473f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 371) - LocalObject(1008, IFFLock.Constructor(Vector3(2314.047f, 3025.189f, 89.64729f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 368) - LocalObject(1009, IFFLock.Constructor(Vector3(2314.047f, 3025.189f, 109.6473f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 369) + LocalObject( + 1004, + IFFLock.Constructor(Vector3(2309.957f, 3042.811f, 89.64729f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 370 + ) + LocalObject( + 1005, + IFFLock.Constructor(Vector3(2309.957f, 3042.811f, 109.6473f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 371 + ) + LocalObject( + 1008, + IFFLock.Constructor(Vector3(2314.047f, 3025.189f, 89.64729f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 368 + ) + LocalObject( + 1009, + IFFLock.Constructor(Vector3(2314.047f, 3025.189f, 109.6473f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 369 + ) LocalObject(1274, Locker.Constructor(Vector3(2315.716f, 3018.963f, 78.18029f)), owning_building_guid = 60) LocalObject(1275, Locker.Constructor(Vector3(2315.751f, 3040.835f, 78.18029f)), owning_building_guid = 60) LocalObject(1276, Locker.Constructor(Vector3(2317.053f, 3018.963f, 78.18029f)), owning_building_guid = 60) @@ -2002,35 +5858,106 @@ object Map07 { // Esamir LocalObject(1283, Locker.Constructor(Vector3(2319.741f, 3040.835f, 78.18029f)), owning_building_guid = 60) LocalObject(1284, Locker.Constructor(Vector3(2321.143f, 3018.963f, 78.18029f)), owning_building_guid = 60) LocalObject(1285, Locker.Constructor(Vector3(2321.143f, 3040.835f, 78.18029f)), owning_building_guid = 60) - LocalObject(1799, Terminal.Constructor(Vector3(2321.445f, 3024.129f, 79.51829f), order_terminal), owning_building_guid = 60) - LocalObject(1800, Terminal.Constructor(Vector3(2321.445f, 3029.853f, 79.51829f), order_terminal), owning_building_guid = 60) - LocalObject(1801, Terminal.Constructor(Vector3(2321.445f, 3035.234f, 79.51829f), order_terminal), owning_building_guid = 60) - LocalObject(2456, SpawnTube.Constructor(Vector3(2310.706f, 3021.742f, 77.66829f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2457, SpawnTube.Constructor(Vector3(2310.706f, 3038.152f, 77.66829f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1631, FacilityTurret.Constructor(Vector3(2287.32f, 3021.295f, 107.1283f), manned_turret), owning_building_guid = 60) + LocalObject( + 1799, + Terminal.Constructor(Vector3(2321.445f, 3024.129f, 79.51829f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1800, + Terminal.Constructor(Vector3(2321.445f, 3029.853f, 79.51829f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1801, + Terminal.Constructor(Vector3(2321.445f, 3035.234f, 79.51829f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2456, + SpawnTube.Constructor(Vector3(2310.706f, 3021.742f, 77.66829f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2457, + SpawnTube.Constructor(Vector3(2310.706f, 3038.152f, 77.66829f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1631, + FacilityTurret.Constructor(Vector3(2287.32f, 3021.295f, 107.1283f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1631, 5085) - LocalObject(1633, FacilityTurret.Constructor(Vector3(2322.647f, 3046.707f, 107.1283f), manned_turret), owning_building_guid = 60) + LocalObject( + 1633, + FacilityTurret.Constructor(Vector3(2322.647f, 3046.707f, 107.1283f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1633, 5086) - LocalObject(2259, Painbox.Constructor(Vector3(2305.235f, 3027.803f, 79.68539f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2262, Painbox.Constructor(Vector3(2316.889f, 3036.086f, 78.28629f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2263, Painbox.Constructor(Vector3(2316.975f, 3024.223f, 78.28629f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 2259, + Painbox.Constructor(Vector3(2305.235f, 3027.803f, 79.68539f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2262, + Painbox.Constructor(Vector3(2316.889f, 3036.086f, 78.28629f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2263, + Painbox.Constructor(Vector3(2316.975f, 3024.223f, 78.28629f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building48() def Building48(): Unit = { // Name: E_Freyr_Tower Type: tower_a GUID: 61, MapID: 48 - LocalBuilding("E_Freyr_Tower", 61, 48, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3276f, 3710f, 53.76141f), Vector3(0f, 0f, 0f), tower_a))) - LocalObject(2533, CaptureTerminal.Constructor(Vector3(3292.587f, 3709.897f, 63.76041f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "E_Freyr_Tower", + 61, + 48, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3276f, 3710f, 53.76141f), Vector3(0f, 0f, 0f), tower_a) + ) + ) + LocalObject( + 2533, + CaptureTerminal.Constructor(Vector3(3292.587f, 3709.897f, 63.76041f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(426, Door.Constructor(Vector3(3288f, 3702f, 55.28241f)), owning_building_guid = 61) LocalObject(427, Door.Constructor(Vector3(3288f, 3702f, 75.2814f)), owning_building_guid = 61) LocalObject(428, Door.Constructor(Vector3(3288f, 3718f, 55.28241f)), owning_building_guid = 61) LocalObject(429, Door.Constructor(Vector3(3288f, 3718f, 75.2814f)), owning_building_guid = 61) LocalObject(2673, Door.Constructor(Vector3(3287.146f, 3698.794f, 45.0974f)), owning_building_guid = 61) LocalObject(2674, Door.Constructor(Vector3(3287.146f, 3715.204f, 45.0974f)), owning_building_guid = 61) - LocalObject(1049, IFFLock.Constructor(Vector3(3285.957f, 3718.811f, 55.2224f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 428) - LocalObject(1050, IFFLock.Constructor(Vector3(3285.957f, 3718.811f, 75.2224f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 429) - LocalObject(1052, IFFLock.Constructor(Vector3(3290.047f, 3701.189f, 55.2224f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 426) - LocalObject(1053, IFFLock.Constructor(Vector3(3290.047f, 3701.189f, 75.2224f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 427) + LocalObject( + 1049, + IFFLock.Constructor(Vector3(3285.957f, 3718.811f, 55.2224f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 428 + ) + LocalObject( + 1050, + IFFLock.Constructor(Vector3(3285.957f, 3718.811f, 75.2224f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 429 + ) + LocalObject( + 1052, + IFFLock.Constructor(Vector3(3290.047f, 3701.189f, 55.2224f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 426 + ) + LocalObject( + 1053, + IFFLock.Constructor(Vector3(3290.047f, 3701.189f, 75.2224f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 427 + ) LocalObject(1347, Locker.Constructor(Vector3(3291.716f, 3694.963f, 43.75541f)), owning_building_guid = 61) LocalObject(1348, Locker.Constructor(Vector3(3291.751f, 3716.835f, 43.75541f)), owning_building_guid = 61) LocalObject(1349, Locker.Constructor(Vector3(3293.053f, 3694.963f, 43.75541f)), owning_building_guid = 61) @@ -2039,35 +5966,106 @@ object Map07 { // Esamir LocalObject(1352, Locker.Constructor(Vector3(3295.741f, 3716.835f, 43.75541f)), owning_building_guid = 61) LocalObject(1353, Locker.Constructor(Vector3(3297.143f, 3694.963f, 43.75541f)), owning_building_guid = 61) LocalObject(1354, Locker.Constructor(Vector3(3297.143f, 3716.835f, 43.75541f)), owning_building_guid = 61) - LocalObject(1826, Terminal.Constructor(Vector3(3297.445f, 3700.129f, 45.09341f), order_terminal), owning_building_guid = 61) - LocalObject(1827, Terminal.Constructor(Vector3(3297.445f, 3705.853f, 45.09341f), order_terminal), owning_building_guid = 61) - LocalObject(1828, Terminal.Constructor(Vector3(3297.445f, 3711.234f, 45.09341f), order_terminal), owning_building_guid = 61) - LocalObject(2471, SpawnTube.Constructor(Vector3(3286.706f, 3697.742f, 43.24341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2472, SpawnTube.Constructor(Vector3(3286.706f, 3714.152f, 43.24341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1652, FacilityTurret.Constructor(Vector3(3263.32f, 3697.295f, 72.70341f), manned_turret), owning_building_guid = 61) + LocalObject( + 1826, + Terminal.Constructor(Vector3(3297.445f, 3700.129f, 45.09341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1827, + Terminal.Constructor(Vector3(3297.445f, 3705.853f, 45.09341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1828, + Terminal.Constructor(Vector3(3297.445f, 3711.234f, 45.09341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2471, + SpawnTube.Constructor(Vector3(3286.706f, 3697.742f, 43.24341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2472, + SpawnTube.Constructor(Vector3(3286.706f, 3714.152f, 43.24341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1652, + FacilityTurret.Constructor(Vector3(3263.32f, 3697.295f, 72.70341f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1652, 5087) - LocalObject(1657, FacilityTurret.Constructor(Vector3(3298.647f, 3722.707f, 72.70341f), manned_turret), owning_building_guid = 61) + LocalObject( + 1657, + FacilityTurret.Constructor(Vector3(3298.647f, 3722.707f, 72.70341f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1657, 5088) - LocalObject(2268, Painbox.Constructor(Vector3(3281.235f, 3703.803f, 45.26051f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2271, Painbox.Constructor(Vector3(3292.889f, 3712.086f, 43.8614f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2272, Painbox.Constructor(Vector3(3292.975f, 3700.223f, 43.8614f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 2268, + Painbox.Constructor(Vector3(3281.235f, 3703.803f, 45.26051f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2271, + Painbox.Constructor(Vector3(3292.889f, 3712.086f, 43.8614f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2272, + Painbox.Constructor(Vector3(3292.975f, 3700.223f, 43.8614f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building22() def Building22(): Unit = { // Name: S_Andvari_Tower Type: tower_a GUID: 62, MapID: 22 - LocalBuilding("S_Andvari_Tower", 62, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3320f, 6550f, 91.44566f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2534, CaptureTerminal.Constructor(Vector3(3336.587f, 6549.897f, 101.4447f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "S_Andvari_Tower", + 62, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3320f, 6550f, 91.44566f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2534, + CaptureTerminal.Constructor(Vector3(3336.587f, 6549.897f, 101.4447f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(435, Door.Constructor(Vector3(3332f, 6542f, 92.96667f)), owning_building_guid = 62) LocalObject(436, Door.Constructor(Vector3(3332f, 6542f, 112.9657f)), owning_building_guid = 62) LocalObject(437, Door.Constructor(Vector3(3332f, 6558f, 92.96667f)), owning_building_guid = 62) LocalObject(438, Door.Constructor(Vector3(3332f, 6558f, 112.9657f)), owning_building_guid = 62) LocalObject(2675, Door.Constructor(Vector3(3331.146f, 6538.794f, 82.78166f)), owning_building_guid = 62) LocalObject(2676, Door.Constructor(Vector3(3331.146f, 6555.204f, 82.78166f)), owning_building_guid = 62) - LocalObject(1055, IFFLock.Constructor(Vector3(3329.957f, 6558.811f, 92.90666f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 437) - LocalObject(1056, IFFLock.Constructor(Vector3(3329.957f, 6558.811f, 112.9067f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 438) - LocalObject(1057, IFFLock.Constructor(Vector3(3334.047f, 6541.189f, 92.90666f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 435) - LocalObject(1058, IFFLock.Constructor(Vector3(3334.047f, 6541.189f, 112.9067f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 436) + LocalObject( + 1055, + IFFLock.Constructor(Vector3(3329.957f, 6558.811f, 92.90666f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 437 + ) + LocalObject( + 1056, + IFFLock.Constructor(Vector3(3329.957f, 6558.811f, 112.9067f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 438 + ) + LocalObject( + 1057, + IFFLock.Constructor(Vector3(3334.047f, 6541.189f, 92.90666f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 435 + ) + LocalObject( + 1058, + IFFLock.Constructor(Vector3(3334.047f, 6541.189f, 112.9067f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 436 + ) LocalObject(1355, Locker.Constructor(Vector3(3335.716f, 6534.963f, 81.43967f)), owning_building_guid = 62) LocalObject(1356, Locker.Constructor(Vector3(3335.751f, 6556.835f, 81.43967f)), owning_building_guid = 62) LocalObject(1357, Locker.Constructor(Vector3(3337.053f, 6534.963f, 81.43967f)), owning_building_guid = 62) @@ -2076,35 +6074,106 @@ object Map07 { // Esamir LocalObject(1360, Locker.Constructor(Vector3(3339.741f, 6556.835f, 81.43967f)), owning_building_guid = 62) LocalObject(1361, Locker.Constructor(Vector3(3341.143f, 6534.963f, 81.43967f)), owning_building_guid = 62) LocalObject(1362, Locker.Constructor(Vector3(3341.143f, 6556.835f, 81.43967f)), owning_building_guid = 62) - LocalObject(1829, Terminal.Constructor(Vector3(3341.445f, 6540.129f, 82.77766f), order_terminal), owning_building_guid = 62) - LocalObject(1830, Terminal.Constructor(Vector3(3341.445f, 6545.853f, 82.77766f), order_terminal), owning_building_guid = 62) - LocalObject(1831, Terminal.Constructor(Vector3(3341.445f, 6551.234f, 82.77766f), order_terminal), owning_building_guid = 62) - LocalObject(2473, SpawnTube.Constructor(Vector3(3330.706f, 6537.742f, 80.92767f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2474, SpawnTube.Constructor(Vector3(3330.706f, 6554.152f, 80.92767f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(1658, FacilityTurret.Constructor(Vector3(3307.32f, 6537.295f, 110.3877f), manned_turret), owning_building_guid = 62) + LocalObject( + 1829, + Terminal.Constructor(Vector3(3341.445f, 6540.129f, 82.77766f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1830, + Terminal.Constructor(Vector3(3341.445f, 6545.853f, 82.77766f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1831, + Terminal.Constructor(Vector3(3341.445f, 6551.234f, 82.77766f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2473, + SpawnTube.Constructor(Vector3(3330.706f, 6537.742f, 80.92767f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2474, + SpawnTube.Constructor(Vector3(3330.706f, 6554.152f, 80.92767f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 1658, + FacilityTurret.Constructor(Vector3(3307.32f, 6537.295f, 110.3877f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1658, 5089) - LocalObject(1659, FacilityTurret.Constructor(Vector3(3342.647f, 6562.707f, 110.3877f), manned_turret), owning_building_guid = 62) + LocalObject( + 1659, + FacilityTurret.Constructor(Vector3(3342.647f, 6562.707f, 110.3877f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1659, 5090) - LocalObject(2273, Painbox.Constructor(Vector3(3325.235f, 6543.803f, 82.94476f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2274, Painbox.Constructor(Vector3(3336.889f, 6552.086f, 81.54566f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2275, Painbox.Constructor(Vector3(3336.975f, 6540.223f, 81.54566f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 2273, + Painbox.Constructor(Vector3(3325.235f, 6543.803f, 82.94476f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2274, + Painbox.Constructor(Vector3(3336.889f, 6552.086f, 81.54566f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2275, + Painbox.Constructor(Vector3(3336.975f, 6540.223f, 81.54566f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building18() def Building18(): Unit = { // Name: SE_Eisa_Tower Type: tower_a GUID: 63, MapID: 18 - LocalBuilding("SE_Eisa_Tower", 63, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3644f, 4338f, 103.9521f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2536, CaptureTerminal.Constructor(Vector3(3660.587f, 4337.897f, 113.9511f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "SE_Eisa_Tower", + 63, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3644f, 4338f, 103.9521f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2536, + CaptureTerminal.Constructor(Vector3(3660.587f, 4337.897f, 113.9511f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(456, Door.Constructor(Vector3(3656f, 4330f, 105.4732f)), owning_building_guid = 63) LocalObject(457, Door.Constructor(Vector3(3656f, 4330f, 125.4722f)), owning_building_guid = 63) LocalObject(458, Door.Constructor(Vector3(3656f, 4346f, 105.4732f)), owning_building_guid = 63) LocalObject(459, Door.Constructor(Vector3(3656f, 4346f, 125.4722f)), owning_building_guid = 63) LocalObject(2682, Door.Constructor(Vector3(3655.146f, 4326.794f, 95.28815f)), owning_building_guid = 63) LocalObject(2683, Door.Constructor(Vector3(3655.146f, 4343.204f, 95.28815f)), owning_building_guid = 63) - LocalObject(1070, IFFLock.Constructor(Vector3(3653.957f, 4346.811f, 105.4131f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 458) - LocalObject(1071, IFFLock.Constructor(Vector3(3653.957f, 4346.811f, 125.4131f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 459) - LocalObject(1072, IFFLock.Constructor(Vector3(3658.047f, 4329.189f, 105.4131f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 456) - LocalObject(1073, IFFLock.Constructor(Vector3(3658.047f, 4329.189f, 125.4131f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 457) + LocalObject( + 1070, + IFFLock.Constructor(Vector3(3653.957f, 4346.811f, 105.4131f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 458 + ) + LocalObject( + 1071, + IFFLock.Constructor(Vector3(3653.957f, 4346.811f, 125.4131f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 459 + ) + LocalObject( + 1072, + IFFLock.Constructor(Vector3(3658.047f, 4329.189f, 105.4131f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 456 + ) + LocalObject( + 1073, + IFFLock.Constructor(Vector3(3658.047f, 4329.189f, 125.4131f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 457 + ) LocalObject(1383, Locker.Constructor(Vector3(3659.716f, 4322.963f, 93.94615f)), owning_building_guid = 63) LocalObject(1384, Locker.Constructor(Vector3(3659.751f, 4344.835f, 93.94615f)), owning_building_guid = 63) LocalObject(1385, Locker.Constructor(Vector3(3661.053f, 4322.963f, 93.94615f)), owning_building_guid = 63) @@ -2113,35 +6182,106 @@ object Map07 { // Esamir LocalObject(1388, Locker.Constructor(Vector3(3663.741f, 4344.835f, 93.94615f)), owning_building_guid = 63) LocalObject(1389, Locker.Constructor(Vector3(3665.143f, 4322.963f, 93.94615f)), owning_building_guid = 63) LocalObject(1390, Locker.Constructor(Vector3(3665.143f, 4344.835f, 93.94615f)), owning_building_guid = 63) - LocalObject(1839, Terminal.Constructor(Vector3(3665.445f, 4328.129f, 95.28415f), order_terminal), owning_building_guid = 63) - LocalObject(1840, Terminal.Constructor(Vector3(3665.445f, 4333.853f, 95.28415f), order_terminal), owning_building_guid = 63) - LocalObject(1841, Terminal.Constructor(Vector3(3665.445f, 4339.234f, 95.28415f), order_terminal), owning_building_guid = 63) - LocalObject(2480, SpawnTube.Constructor(Vector3(3654.706f, 4325.742f, 93.43415f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2481, SpawnTube.Constructor(Vector3(3654.706f, 4342.152f, 93.43415f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1667, FacilityTurret.Constructor(Vector3(3631.32f, 4325.295f, 122.8941f), manned_turret), owning_building_guid = 63) + LocalObject( + 1839, + Terminal.Constructor(Vector3(3665.445f, 4328.129f, 95.28415f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1840, + Terminal.Constructor(Vector3(3665.445f, 4333.853f, 95.28415f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1841, + Terminal.Constructor(Vector3(3665.445f, 4339.234f, 95.28415f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2480, + SpawnTube.Constructor(Vector3(3654.706f, 4325.742f, 93.43415f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2481, + SpawnTube.Constructor(Vector3(3654.706f, 4342.152f, 93.43415f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1667, + FacilityTurret.Constructor(Vector3(3631.32f, 4325.295f, 122.8941f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1667, 5091) - LocalObject(1670, FacilityTurret.Constructor(Vector3(3666.647f, 4350.707f, 122.8941f), manned_turret), owning_building_guid = 63) + LocalObject( + 1670, + FacilityTurret.Constructor(Vector3(3666.647f, 4350.707f, 122.8941f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1670, 5092) - LocalObject(2279, Painbox.Constructor(Vector3(3649.235f, 4331.803f, 95.45125f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2280, Painbox.Constructor(Vector3(3660.889f, 4340.086f, 94.05215f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2281, Painbox.Constructor(Vector3(3660.975f, 4328.223f, 94.05215f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 2279, + Painbox.Constructor(Vector3(3649.235f, 4331.803f, 95.45125f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2280, + Painbox.Constructor(Vector3(3660.889f, 4340.086f, 94.05215f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2281, + Painbox.Constructor(Vector3(3660.975f, 4328.223f, 94.05215f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building32() def Building32(): Unit = { // Name: S_Kvasir_Tower Type: tower_a GUID: 64, MapID: 32 - LocalBuilding("S_Kvasir_Tower", 64, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4126f, 1362f, 62.56905f), Vector3(0f, 0f, 318f), tower_a))) - LocalObject(2537, CaptureTerminal.Constructor(Vector3(4138.258f, 1350.825f, 72.56805f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "S_Kvasir_Tower", + 64, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4126f, 1362f, 62.56905f), Vector3(0f, 0f, 318f), tower_a) + ) + ) + LocalObject( + 2537, + CaptureTerminal.Constructor(Vector3(4138.258f, 1350.825f, 72.56805f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(505, Door.Constructor(Vector3(4129.564f, 1348.025f, 64.09005f)), owning_building_guid = 64) LocalObject(506, Door.Constructor(Vector3(4129.564f, 1348.025f, 84.08905f)), owning_building_guid = 64) LocalObject(507, Door.Constructor(Vector3(4140.271f, 1359.916f, 64.09005f)), owning_building_guid = 64) LocalObject(508, Door.Constructor(Vector3(4140.271f, 1359.916f, 84.08905f)), owning_building_guid = 64) LocalObject(2693, Door.Constructor(Vector3(4126.785f, 1346.214f, 53.90505f)), owning_building_guid = 64) LocalObject(2694, Door.Constructor(Vector3(4137.765f, 1358.409f, 53.90505f)), owning_building_guid = 64) - LocalObject(1104, IFFLock.Constructor(Vector3(4130.543f, 1346.053f, 64.03005f), Vector3(0, 0, 222)), owning_building_guid = 64, door_guid = 505) - LocalObject(1105, IFFLock.Constructor(Vector3(4130.543f, 1346.053f, 84.03005f), Vector3(0, 0, 222)), owning_building_guid = 64, door_guid = 506) - LocalObject(1106, IFFLock.Constructor(Vector3(4139.295f, 1361.885f, 64.03005f), Vector3(0, 0, 42)), owning_building_guid = 64, door_guid = 507) - LocalObject(1107, IFFLock.Constructor(Vector3(4139.295f, 1361.885f, 84.03005f), Vector3(0, 0, 42)), owning_building_guid = 64, door_guid = 508) + LocalObject( + 1104, + IFFLock.Constructor(Vector3(4130.543f, 1346.053f, 64.03005f), Vector3(0, 0, 222)), + owning_building_guid = 64, + door_guid = 505 + ) + LocalObject( + 1105, + IFFLock.Constructor(Vector3(4130.543f, 1346.053f, 84.03005f), Vector3(0, 0, 222)), + owning_building_guid = 64, + door_guid = 506 + ) + LocalObject( + 1106, + IFFLock.Constructor(Vector3(4139.295f, 1361.885f, 64.03005f), Vector3(0, 0, 42)), + owning_building_guid = 64, + door_guid = 507 + ) + LocalObject( + 1107, + IFFLock.Constructor(Vector3(4139.295f, 1361.885f, 84.03005f), Vector3(0, 0, 42)), + owning_building_guid = 64, + door_guid = 508 + ) LocalObject(1427, Locker.Constructor(Vector3(4127.618f, 1340.309f, 52.56305f)), owning_building_guid = 64) LocalObject(1428, Locker.Constructor(Vector3(4128.611f, 1339.415f, 52.56305f)), owning_building_guid = 64) LocalObject(1429, Locker.Constructor(Vector3(4130.609f, 1337.616f, 52.56305f)), owning_building_guid = 64) @@ -2150,35 +6290,106 @@ object Map07 { // Esamir LocalObject(1432, Locker.Constructor(Vector3(4143.272f, 1355.645f, 52.56305f)), owning_building_guid = 64) LocalObject(1433, Locker.Constructor(Vector3(4145.244f, 1353.87f, 52.56305f)), owning_building_guid = 64) LocalObject(1434, Locker.Constructor(Vector3(4146.286f, 1352.932f, 52.56305f)), owning_building_guid = 64) - LocalObject(1859, Terminal.Constructor(Vector3(4135.332f, 1340.315f, 53.90105f), order_terminal), owning_building_guid = 64) - LocalObject(1860, Terminal.Constructor(Vector3(4139.162f, 1344.569f, 53.90105f), order_terminal), owning_building_guid = 64) - LocalObject(1861, Terminal.Constructor(Vector3(4142.762f, 1348.568f, 53.90105f), order_terminal), owning_building_guid = 64) - LocalObject(2491, SpawnTube.Constructor(Vector3(4125.754f, 1345.727f, 52.05105f), respawn_tube_tower, Vector3(0, 0, 42)), owning_building_guid = 64) - LocalObject(2492, SpawnTube.Constructor(Vector3(4136.734f, 1357.922f, 52.05105f), respawn_tube_tower, Vector3(0, 0, 42)), owning_building_guid = 64) - LocalObject(1685, FacilityTurret.Constructor(Vector3(4108.076f, 1361.043f, 81.51105f), manned_turret), owning_building_guid = 64) + LocalObject( + 1859, + Terminal.Constructor(Vector3(4135.332f, 1340.315f, 53.90105f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1860, + Terminal.Constructor(Vector3(4139.162f, 1344.569f, 53.90105f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1861, + Terminal.Constructor(Vector3(4142.762f, 1348.568f, 53.90105f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2491, + SpawnTube.Constructor(Vector3(4125.754f, 1345.727f, 52.05105f), respawn_tube_tower, Vector3(0, 0, 42)), + owning_building_guid = 64 + ) + LocalObject( + 2492, + SpawnTube.Constructor(Vector3(4136.734f, 1357.922f, 52.05105f), respawn_tube_tower, Vector3(0, 0, 42)), + owning_building_guid = 64 + ) + LocalObject( + 1685, + FacilityTurret.Constructor(Vector3(4108.076f, 1361.043f, 81.51105f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1685, 5093) - LocalObject(1688, FacilityTurret.Constructor(Vector3(4151.333f, 1356.289f, 81.51105f), manned_turret), owning_building_guid = 64) + LocalObject( + 1688, + FacilityTurret.Constructor(Vector3(4151.333f, 1356.289f, 81.51105f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1688, 5094) - LocalObject(2282, Painbox.Constructor(Vector3(4125.744f, 1353.892f, 54.06815f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2283, Painbox.Constructor(Vector3(4132.073f, 1343.375f, 52.66905f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2284, Painbox.Constructor(Vector3(4139.947f, 1352.249f, 52.66905f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 2282, + Painbox.Constructor(Vector3(4125.744f, 1353.892f, 54.06815f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2283, + Painbox.Constructor(Vector3(4132.073f, 1343.375f, 52.66905f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2284, + Painbox.Constructor(Vector3(4139.947f, 1352.249f, 52.66905f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building46() def Building46(): Unit = { // Name: N_Mani_Tower Type: tower_a GUID: 65, MapID: 46 - LocalBuilding("N_Mani_Tower", 65, 46, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4968f, 5154f, 47.77367f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2541, CaptureTerminal.Constructor(Vector3(4984.587f, 5153.897f, 57.77267f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "N_Mani_Tower", + 65, + 46, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4968f, 5154f, 47.77367f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2541, + CaptureTerminal.Constructor(Vector3(4984.587f, 5153.897f, 57.77267f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(528, Door.Constructor(Vector3(4980f, 5146f, 49.29467f)), owning_building_guid = 65) LocalObject(529, Door.Constructor(Vector3(4980f, 5146f, 69.29367f)), owning_building_guid = 65) LocalObject(530, Door.Constructor(Vector3(4980f, 5162f, 49.29467f)), owning_building_guid = 65) LocalObject(531, Door.Constructor(Vector3(4980f, 5162f, 69.29367f)), owning_building_guid = 65) LocalObject(2701, Door.Constructor(Vector3(4979.146f, 5142.794f, 39.10967f)), owning_building_guid = 65) LocalObject(2702, Door.Constructor(Vector3(4979.146f, 5159.204f, 39.10967f)), owning_building_guid = 65) - LocalObject(1125, IFFLock.Constructor(Vector3(4977.957f, 5162.811f, 49.23467f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 530) - LocalObject(1126, IFFLock.Constructor(Vector3(4977.957f, 5162.811f, 69.23467f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 531) - LocalObject(1127, IFFLock.Constructor(Vector3(4982.047f, 5145.189f, 49.23467f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 528) - LocalObject(1128, IFFLock.Constructor(Vector3(4982.047f, 5145.189f, 69.23467f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 529) + LocalObject( + 1125, + IFFLock.Constructor(Vector3(4977.957f, 5162.811f, 49.23467f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 530 + ) + LocalObject( + 1126, + IFFLock.Constructor(Vector3(4977.957f, 5162.811f, 69.23467f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 531 + ) + LocalObject( + 1127, + IFFLock.Constructor(Vector3(4982.047f, 5145.189f, 49.23467f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 528 + ) + LocalObject( + 1128, + IFFLock.Constructor(Vector3(4982.047f, 5145.189f, 69.23467f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 529 + ) LocalObject(1459, Locker.Constructor(Vector3(4983.716f, 5138.963f, 37.76767f)), owning_building_guid = 65) LocalObject(1460, Locker.Constructor(Vector3(4983.751f, 5160.835f, 37.76767f)), owning_building_guid = 65) LocalObject(1461, Locker.Constructor(Vector3(4985.053f, 5138.963f, 37.76767f)), owning_building_guid = 65) @@ -2187,35 +6398,106 @@ object Map07 { // Esamir LocalObject(1464, Locker.Constructor(Vector3(4987.741f, 5160.835f, 37.76767f)), owning_building_guid = 65) LocalObject(1465, Locker.Constructor(Vector3(4989.143f, 5138.963f, 37.76767f)), owning_building_guid = 65) LocalObject(1466, Locker.Constructor(Vector3(4989.143f, 5160.835f, 37.76767f)), owning_building_guid = 65) - LocalObject(1871, Terminal.Constructor(Vector3(4989.445f, 5144.129f, 39.10567f), order_terminal), owning_building_guid = 65) - LocalObject(1872, Terminal.Constructor(Vector3(4989.445f, 5149.853f, 39.10567f), order_terminal), owning_building_guid = 65) - LocalObject(1873, Terminal.Constructor(Vector3(4989.445f, 5155.234f, 39.10567f), order_terminal), owning_building_guid = 65) - LocalObject(2499, SpawnTube.Constructor(Vector3(4978.706f, 5141.742f, 37.25568f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2500, SpawnTube.Constructor(Vector3(4978.706f, 5158.152f, 37.25568f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(1693, FacilityTurret.Constructor(Vector3(4955.32f, 5141.295f, 66.71568f), manned_turret), owning_building_guid = 65) + LocalObject( + 1871, + Terminal.Constructor(Vector3(4989.445f, 5144.129f, 39.10567f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1872, + Terminal.Constructor(Vector3(4989.445f, 5149.853f, 39.10567f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1873, + Terminal.Constructor(Vector3(4989.445f, 5155.234f, 39.10567f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2499, + SpawnTube.Constructor(Vector3(4978.706f, 5141.742f, 37.25568f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2500, + SpawnTube.Constructor(Vector3(4978.706f, 5158.152f, 37.25568f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 1693, + FacilityTurret.Constructor(Vector3(4955.32f, 5141.295f, 66.71568f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1693, 5095) - LocalObject(1694, FacilityTurret.Constructor(Vector3(4990.647f, 5166.707f, 66.71568f), manned_turret), owning_building_guid = 65) + LocalObject( + 1694, + FacilityTurret.Constructor(Vector3(4990.647f, 5166.707f, 66.71568f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1694, 5096) - LocalObject(2294, Painbox.Constructor(Vector3(4973.235f, 5147.803f, 39.27277f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2295, Painbox.Constructor(Vector3(4984.889f, 5156.086f, 37.87367f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2296, Painbox.Constructor(Vector3(4984.975f, 5144.223f, 37.87367f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 2294, + Painbox.Constructor(Vector3(4973.235f, 5147.803f, 39.27277f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2295, + Painbox.Constructor(Vector3(4984.889f, 5156.086f, 37.87367f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2296, + Painbox.Constructor(Vector3(4984.975f, 5144.223f, 37.87367f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building50() def Building50(): Unit = { // Name: E_Helhiem_Tower Type: tower_a GUID: 66, MapID: 50 - LocalBuilding("E_Helhiem_Tower", 66, 50, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5672f, 2702f, 52.44301f), Vector3(0f, 0f, 327f), tower_a))) - LocalObject(2543, CaptureTerminal.Constructor(Vector3(5685.855f, 2692.88f, 62.44201f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "E_Helhiem_Tower", + 66, + 50, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5672f, 2702f, 52.44301f), Vector3(0f, 0f, 327f), tower_a) + ) + ) + LocalObject( + 2543, + CaptureTerminal.Constructor(Vector3(5685.855f, 2692.88f, 62.44201f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(558, Door.Constructor(Vector3(5677.707f, 2688.755f, 53.96401f)), owning_building_guid = 66) LocalObject(559, Door.Constructor(Vector3(5677.707f, 2688.755f, 73.96301f)), owning_building_guid = 66) LocalObject(560, Door.Constructor(Vector3(5686.421f, 2702.174f, 53.96401f)), owning_building_guid = 66) LocalObject(561, Door.Constructor(Vector3(5686.421f, 2702.174f, 73.96301f)), owning_building_guid = 66) LocalObject(2711, Door.Constructor(Vector3(5675.245f, 2686.531f, 43.77901f)), owning_building_guid = 66) LocalObject(2712, Door.Constructor(Vector3(5684.182f, 2700.294f, 43.77901f)), owning_building_guid = 66) - LocalObject(1148, IFFLock.Constructor(Vector3(5678.982f, 2686.96f, 53.90401f), Vector3(0, 0, 213)), owning_building_guid = 66, door_guid = 558) - LocalObject(1149, IFFLock.Constructor(Vector3(5678.982f, 2686.96f, 73.90401f), Vector3(0, 0, 213)), owning_building_guid = 66, door_guid = 559) - LocalObject(1150, IFFLock.Constructor(Vector3(5685.149f, 2703.967f, 53.90401f), Vector3(0, 0, 33)), owning_building_guid = 66, door_guid = 560) - LocalObject(1151, IFFLock.Constructor(Vector3(5685.149f, 2703.967f, 73.90401f), Vector3(0, 0, 33)), owning_building_guid = 66, door_guid = 561) + LocalObject( + 1148, + IFFLock.Constructor(Vector3(5678.982f, 2686.96f, 53.90401f), Vector3(0, 0, 213)), + owning_building_guid = 66, + door_guid = 558 + ) + LocalObject( + 1149, + IFFLock.Constructor(Vector3(5678.982f, 2686.96f, 73.90401f), Vector3(0, 0, 213)), + owning_building_guid = 66, + door_guid = 559 + ) + LocalObject( + 1150, + IFFLock.Constructor(Vector3(5685.149f, 2703.967f, 53.90401f), Vector3(0, 0, 33)), + owning_building_guid = 66, + door_guid = 560 + ) + LocalObject( + 1151, + IFFLock.Constructor(Vector3(5685.149f, 2703.967f, 73.90401f), Vector3(0, 0, 33)), + owning_building_guid = 66, + door_guid = 561 + ) LocalObject(1508, Locker.Constructor(Vector3(5676.991f, 2680.829f, 42.43701f)), owning_building_guid = 66) LocalObject(1509, Locker.Constructor(Vector3(5678.112f, 2680.101f, 42.43701f)), owning_building_guid = 66) LocalObject(1510, Locker.Constructor(Vector3(5680.367f, 2678.637f, 42.43701f)), owning_building_guid = 66) @@ -2224,35 +6506,106 @@ object Map07 { // Esamir LocalObject(1513, Locker.Constructor(Vector3(5690.054f, 2698.426f, 42.43701f)), owning_building_guid = 66) LocalObject(1514, Locker.Constructor(Vector3(5692.279f, 2696.981f, 42.43701f)), owning_building_guid = 66) LocalObject(1515, Locker.Constructor(Vector3(5693.455f, 2696.217f, 42.43701f)), owning_building_guid = 66) - LocalObject(1885, Terminal.Constructor(Vector3(5684.609f, 2682.042f, 43.77501f), order_terminal), owning_building_guid = 66) - LocalObject(1886, Terminal.Constructor(Vector3(5687.727f, 2686.842f, 43.77501f), order_terminal), owning_building_guid = 66) - LocalObject(1887, Terminal.Constructor(Vector3(5690.657f, 2691.355f, 43.77501f), order_terminal), owning_building_guid = 66) - LocalObject(2509, SpawnTube.Constructor(Vector3(5674.303f, 2685.889f, 41.92501f), respawn_tube_tower, Vector3(0, 0, 33)), owning_building_guid = 66) - LocalObject(2510, SpawnTube.Constructor(Vector3(5683.24f, 2699.651f, 41.92501f), respawn_tube_tower, Vector3(0, 0, 33)), owning_building_guid = 66) - LocalObject(1706, FacilityTurret.Constructor(Vector3(5654.446f, 2698.251f, 71.38501f), manned_turret), owning_building_guid = 66) + LocalObject( + 1885, + Terminal.Constructor(Vector3(5684.609f, 2682.042f, 43.77501f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1886, + Terminal.Constructor(Vector3(5687.727f, 2686.842f, 43.77501f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1887, + Terminal.Constructor(Vector3(5690.657f, 2691.355f, 43.77501f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2509, + SpawnTube.Constructor(Vector3(5674.303f, 2685.889f, 41.92501f), respawn_tube_tower, Vector3(0, 0, 33)), + owning_building_guid = 66 + ) + LocalObject( + 2510, + SpawnTube.Constructor(Vector3(5683.24f, 2699.651f, 41.92501f), respawn_tube_tower, Vector3(0, 0, 33)), + owning_building_guid = 66 + ) + LocalObject( + 1706, + FacilityTurret.Constructor(Vector3(5654.446f, 2698.251f, 71.38501f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1706, 5097) - LocalObject(1707, FacilityTurret.Constructor(Vector3(5697.914f, 2700.323f, 71.38501f), manned_turret), owning_building_guid = 66) + LocalObject( + 1707, + FacilityTurret.Constructor(Vector3(5697.914f, 2700.323f, 71.38501f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1707, 5098) - LocalObject(2300, Painbox.Constructor(Vector3(5673.015f, 2693.952f, 43.94211f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2301, Painbox.Constructor(Vector3(5680.911f, 2684.555f, 42.54301f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2302, Painbox.Constructor(Vector3(5687.301f, 2694.551f, 42.54301f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 2300, + Painbox.Constructor(Vector3(5673.015f, 2693.952f, 43.94211f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2301, + Painbox.Constructor(Vector3(5680.911f, 2684.555f, 42.54301f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2302, + Painbox.Constructor(Vector3(5687.301f, 2694.551f, 42.54301f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building19() def Building19(): Unit = { // Name: E_Oshur_Warpgate_Tower Type: tower_a GUID: 67, MapID: 19 - LocalBuilding("E_Oshur_Warpgate_Tower", 67, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5916f, 3990f, 56.33412f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2545, CaptureTerminal.Constructor(Vector3(5932.587f, 3989.897f, 66.33311f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "E_Oshur_Warpgate_Tower", + 67, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5916f, 3990f, 56.33412f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2545, + CaptureTerminal.Constructor(Vector3(5932.587f, 3989.897f, 66.33311f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(568, Door.Constructor(Vector3(5928f, 3982f, 57.85512f)), owning_building_guid = 67) LocalObject(569, Door.Constructor(Vector3(5928f, 3982f, 77.85412f)), owning_building_guid = 67) LocalObject(570, Door.Constructor(Vector3(5928f, 3998f, 57.85512f)), owning_building_guid = 67) LocalObject(571, Door.Constructor(Vector3(5928f, 3998f, 77.85412f)), owning_building_guid = 67) LocalObject(2715, Door.Constructor(Vector3(5927.146f, 3978.794f, 47.67012f)), owning_building_guid = 67) LocalObject(2716, Door.Constructor(Vector3(5927.146f, 3995.204f, 47.67012f)), owning_building_guid = 67) - LocalObject(1158, IFFLock.Constructor(Vector3(5925.957f, 3998.811f, 57.79512f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 570) - LocalObject(1159, IFFLock.Constructor(Vector3(5925.957f, 3998.811f, 77.79512f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 571) - LocalObject(1160, IFFLock.Constructor(Vector3(5930.047f, 3981.189f, 57.79512f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 568) - LocalObject(1161, IFFLock.Constructor(Vector3(5930.047f, 3981.189f, 77.79512f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 569) + LocalObject( + 1158, + IFFLock.Constructor(Vector3(5925.957f, 3998.811f, 57.79512f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 570 + ) + LocalObject( + 1159, + IFFLock.Constructor(Vector3(5925.957f, 3998.811f, 77.79512f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 571 + ) + LocalObject( + 1160, + IFFLock.Constructor(Vector3(5930.047f, 3981.189f, 57.79512f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 568 + ) + LocalObject( + 1161, + IFFLock.Constructor(Vector3(5930.047f, 3981.189f, 77.79512f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 569 + ) LocalObject(1524, Locker.Constructor(Vector3(5931.716f, 3974.963f, 46.32812f)), owning_building_guid = 67) LocalObject(1525, Locker.Constructor(Vector3(5931.751f, 3996.835f, 46.32812f)), owning_building_guid = 67) LocalObject(1526, Locker.Constructor(Vector3(5933.053f, 3974.963f, 46.32812f)), owning_building_guid = 67) @@ -2261,35 +6614,106 @@ object Map07 { // Esamir LocalObject(1529, Locker.Constructor(Vector3(5935.741f, 3996.835f, 46.32812f)), owning_building_guid = 67) LocalObject(1530, Locker.Constructor(Vector3(5937.143f, 3974.963f, 46.32812f)), owning_building_guid = 67) LocalObject(1531, Locker.Constructor(Vector3(5937.143f, 3996.835f, 46.32812f)), owning_building_guid = 67) - LocalObject(1891, Terminal.Constructor(Vector3(5937.445f, 3980.129f, 47.66612f), order_terminal), owning_building_guid = 67) - LocalObject(1892, Terminal.Constructor(Vector3(5937.445f, 3985.853f, 47.66612f), order_terminal), owning_building_guid = 67) - LocalObject(1893, Terminal.Constructor(Vector3(5937.445f, 3991.234f, 47.66612f), order_terminal), owning_building_guid = 67) - LocalObject(2513, SpawnTube.Constructor(Vector3(5926.706f, 3977.742f, 45.81612f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2514, SpawnTube.Constructor(Vector3(5926.706f, 3994.152f, 45.81612f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(1708, FacilityTurret.Constructor(Vector3(5903.32f, 3977.295f, 75.27612f), manned_turret), owning_building_guid = 67) + LocalObject( + 1891, + Terminal.Constructor(Vector3(5937.445f, 3980.129f, 47.66612f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1892, + Terminal.Constructor(Vector3(5937.445f, 3985.853f, 47.66612f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1893, + Terminal.Constructor(Vector3(5937.445f, 3991.234f, 47.66612f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2513, + SpawnTube.Constructor(Vector3(5926.706f, 3977.742f, 45.81612f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2514, + SpawnTube.Constructor(Vector3(5926.706f, 3994.152f, 45.81612f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 1708, + FacilityTurret.Constructor(Vector3(5903.32f, 3977.295f, 75.27612f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1708, 5099) - LocalObject(1709, FacilityTurret.Constructor(Vector3(5938.647f, 4002.707f, 75.27612f), manned_turret), owning_building_guid = 67) + LocalObject( + 1709, + FacilityTurret.Constructor(Vector3(5938.647f, 4002.707f, 75.27612f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1709, 5100) - LocalObject(2306, Painbox.Constructor(Vector3(5921.235f, 3983.803f, 47.83322f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2307, Painbox.Constructor(Vector3(5932.889f, 3992.086f, 46.43412f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2308, Painbox.Constructor(Vector3(5932.975f, 3980.223f, 46.43412f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 2306, + Painbox.Constructor(Vector3(5921.235f, 3983.803f, 47.83322f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2307, + Painbox.Constructor(Vector3(5932.889f, 3992.086f, 46.43412f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2308, + Painbox.Constructor(Vector3(5932.975f, 3980.223f, 46.43412f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building23() def Building23(): Unit = { // Name: Outpost_Tower Type: tower_a GUID: 68, MapID: 23 - LocalBuilding("Outpost_Tower", 68, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6334f, 5258f, 58.87936f), Vector3(0f, 0f, 346f), tower_a))) - LocalObject(2546, CaptureTerminal.Constructor(Vector3(6350.069f, 5253.887f, 68.87836f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "Outpost_Tower", + 68, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6334f, 5258f, 58.87936f), Vector3(0f, 0f, 346f), tower_a) + ) + ) + LocalObject( + 2546, + CaptureTerminal.Constructor(Vector3(6350.069f, 5253.887f, 68.87836f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(572, Door.Constructor(Vector3(6343.708f, 5247.334f, 60.40036f)), owning_building_guid = 68) LocalObject(573, Door.Constructor(Vector3(6343.708f, 5247.334f, 80.39936f)), owning_building_guid = 68) LocalObject(574, Door.Constructor(Vector3(6347.579f, 5262.859f, 60.40036f)), owning_building_guid = 68) LocalObject(575, Door.Constructor(Vector3(6347.579f, 5262.859f, 80.39936f)), owning_building_guid = 68) LocalObject(2717, Door.Constructor(Vector3(6342.104f, 5244.43f, 50.21536f)), owning_building_guid = 68) LocalObject(2718, Door.Constructor(Vector3(6346.074f, 5260.353f, 50.21536f)), owning_building_guid = 68) - LocalObject(1162, IFFLock.Constructor(Vector3(6345.498f, 5246.052f, 60.34036f), Vector3(0, 0, 194)), owning_building_guid = 68, door_guid = 572) - LocalObject(1163, IFFLock.Constructor(Vector3(6345.498f, 5246.052f, 80.34036f), Vector3(0, 0, 194)), owning_building_guid = 68, door_guid = 573) - LocalObject(1164, IFFLock.Constructor(Vector3(6345.793f, 5264.141f, 60.34036f), Vector3(0, 0, 14)), owning_building_guid = 68, door_guid = 574) - LocalObject(1165, IFFLock.Constructor(Vector3(6345.793f, 5264.141f, 80.34036f), Vector3(0, 0, 14)), owning_building_guid = 68, door_guid = 575) + LocalObject( + 1162, + IFFLock.Constructor(Vector3(6345.498f, 5246.052f, 60.34036f), Vector3(0, 0, 194)), + owning_building_guid = 68, + door_guid = 572 + ) + LocalObject( + 1163, + IFFLock.Constructor(Vector3(6345.498f, 5246.052f, 80.34036f), Vector3(0, 0, 194)), + owning_building_guid = 68, + door_guid = 573 + ) + LocalObject( + 1164, + IFFLock.Constructor(Vector3(6345.793f, 5264.141f, 60.34036f), Vector3(0, 0, 14)), + owning_building_guid = 68, + door_guid = 574 + ) + LocalObject( + 1165, + IFFLock.Constructor(Vector3(6345.793f, 5264.141f, 80.34036f), Vector3(0, 0, 14)), + owning_building_guid = 68, + door_guid = 575 + ) LocalObject(1532, Locker.Constructor(Vector3(6345.611f, 5239.607f, 48.87336f)), owning_building_guid = 68) LocalObject(1533, Locker.Constructor(Vector3(6346.909f, 5239.284f, 48.87336f)), owning_building_guid = 68) LocalObject(1534, Locker.Constructor(Vector3(6349.517f, 5238.634f, 48.87336f)), owning_building_guid = 68) @@ -2298,35 +6722,106 @@ object Map07 { // Esamir LocalObject(1537, Locker.Constructor(Vector3(6352.234f, 5260.498f, 48.87336f)), owning_building_guid = 68) LocalObject(1538, Locker.Constructor(Vector3(6354.808f, 5259.856f, 48.87336f)), owning_building_guid = 68) LocalObject(1539, Locker.Constructor(Vector3(6356.168f, 5259.517f, 48.87336f)), owning_building_guid = 68) - LocalObject(1894, Terminal.Constructor(Vector3(6352.42f, 5243.234f, 50.21136f), order_terminal), owning_building_guid = 68) - LocalObject(1895, Terminal.Constructor(Vector3(6353.805f, 5248.788f, 50.21136f), order_terminal), owning_building_guid = 68) - LocalObject(1896, Terminal.Constructor(Vector3(6355.106f, 5254.009f, 50.21136f), order_terminal), owning_building_guid = 68) - LocalObject(2515, SpawnTube.Constructor(Vector3(6341.422f, 5243.516f, 48.36136f), respawn_tube_tower, Vector3(0, 0, 14)), owning_building_guid = 68) - LocalObject(2516, SpawnTube.Constructor(Vector3(6345.393f, 5259.438f, 48.36136f), respawn_tube_tower, Vector3(0, 0, 14)), owning_building_guid = 68) - LocalObject(1710, FacilityTurret.Constructor(Vector3(6318.623f, 5248.74f, 77.82136f), manned_turret), owning_building_guid = 68) + LocalObject( + 1894, + Terminal.Constructor(Vector3(6352.42f, 5243.234f, 50.21136f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1895, + Terminal.Constructor(Vector3(6353.805f, 5248.788f, 50.21136f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1896, + Terminal.Constructor(Vector3(6355.106f, 5254.009f, 50.21136f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2515, + SpawnTube.Constructor(Vector3(6341.422f, 5243.516f, 48.36136f), respawn_tube_tower, Vector3(0, 0, 14)), + owning_building_guid = 68 + ) + LocalObject( + 2516, + SpawnTube.Constructor(Vector3(6345.393f, 5259.438f, 48.36136f), respawn_tube_tower, Vector3(0, 0, 14)), + owning_building_guid = 68 + ) + LocalObject( + 1710, + FacilityTurret.Constructor(Vector3(6318.623f, 5248.74f, 77.82136f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1710, 5101) - LocalObject(1711, FacilityTurret.Constructor(Vector3(6359.048f, 5264.851f, 77.82136f), manned_turret), owning_building_guid = 68) + LocalObject( + 1711, + FacilityTurret.Constructor(Vector3(6359.048f, 5264.851f, 77.82136f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1711, 5102) - LocalObject(2309, Painbox.Constructor(Vector3(6337.58f, 5250.721f, 50.37846f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2310, Painbox.Constructor(Vector3(6348.105f, 5244.406f, 48.97936f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2311, Painbox.Constructor(Vector3(6350.892f, 5255.938f, 48.97936f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 2309, + Painbox.Constructor(Vector3(6337.58f, 5250.721f, 50.37846f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2310, + Painbox.Constructor(Vector3(6348.105f, 5244.406f, 48.97936f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2311, + Painbox.Constructor(Vector3(6350.892f, 5255.938f, 48.97936f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building20() def Building20(): Unit = { // Name: NE_VSSanc_Warpgate_Tower Type: tower_a GUID: 69, MapID: 20 - LocalBuilding("NE_VSSanc_Warpgate_Tower", 69, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6928f, 1758f, 78.24335f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2547, CaptureTerminal.Constructor(Vector3(6944.587f, 1757.897f, 88.24236f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "NE_VSSanc_Warpgate_Tower", + 69, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6928f, 1758f, 78.24335f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2547, + CaptureTerminal.Constructor(Vector3(6944.587f, 1757.897f, 88.24236f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(593, Door.Constructor(Vector3(6940f, 1750f, 79.76436f)), owning_building_guid = 69) LocalObject(594, Door.Constructor(Vector3(6940f, 1750f, 99.76335f)), owning_building_guid = 69) LocalObject(595, Door.Constructor(Vector3(6940f, 1766f, 79.76436f)), owning_building_guid = 69) LocalObject(596, Door.Constructor(Vector3(6940f, 1766f, 99.76335f)), owning_building_guid = 69) LocalObject(2722, Door.Constructor(Vector3(6939.146f, 1746.794f, 69.57935f)), owning_building_guid = 69) LocalObject(2723, Door.Constructor(Vector3(6939.146f, 1763.204f, 69.57935f)), owning_building_guid = 69) - LocalObject(1177, IFFLock.Constructor(Vector3(6937.957f, 1766.811f, 79.70435f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 595) - LocalObject(1178, IFFLock.Constructor(Vector3(6937.957f, 1766.811f, 99.70435f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 596) - LocalObject(1179, IFFLock.Constructor(Vector3(6942.047f, 1749.189f, 79.70435f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 593) - LocalObject(1180, IFFLock.Constructor(Vector3(6942.047f, 1749.189f, 99.70435f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 594) + LocalObject( + 1177, + IFFLock.Constructor(Vector3(6937.957f, 1766.811f, 79.70435f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 595 + ) + LocalObject( + 1178, + IFFLock.Constructor(Vector3(6937.957f, 1766.811f, 99.70435f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 596 + ) + LocalObject( + 1179, + IFFLock.Constructor(Vector3(6942.047f, 1749.189f, 79.70435f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 593 + ) + LocalObject( + 1180, + IFFLock.Constructor(Vector3(6942.047f, 1749.189f, 99.70435f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 594 + ) LocalObject(1552, Locker.Constructor(Vector3(6943.716f, 1742.963f, 68.23736f)), owning_building_guid = 69) LocalObject(1553, Locker.Constructor(Vector3(6943.751f, 1764.835f, 68.23736f)), owning_building_guid = 69) LocalObject(1554, Locker.Constructor(Vector3(6945.053f, 1742.963f, 68.23736f)), owning_building_guid = 69) @@ -2335,35 +6830,106 @@ object Map07 { // Esamir LocalObject(1557, Locker.Constructor(Vector3(6947.741f, 1764.835f, 68.23736f)), owning_building_guid = 69) LocalObject(1558, Locker.Constructor(Vector3(6949.143f, 1742.963f, 68.23736f)), owning_building_guid = 69) LocalObject(1559, Locker.Constructor(Vector3(6949.143f, 1764.835f, 68.23736f)), owning_building_guid = 69) - LocalObject(1903, Terminal.Constructor(Vector3(6949.445f, 1748.129f, 69.57536f), order_terminal), owning_building_guid = 69) - LocalObject(1904, Terminal.Constructor(Vector3(6949.445f, 1753.853f, 69.57536f), order_terminal), owning_building_guid = 69) - LocalObject(1905, Terminal.Constructor(Vector3(6949.445f, 1759.234f, 69.57536f), order_terminal), owning_building_guid = 69) - LocalObject(2520, SpawnTube.Constructor(Vector3(6938.706f, 1745.742f, 67.72536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2521, SpawnTube.Constructor(Vector3(6938.706f, 1762.152f, 67.72536f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(1717, FacilityTurret.Constructor(Vector3(6915.32f, 1745.295f, 97.18536f), manned_turret), owning_building_guid = 69) + LocalObject( + 1903, + Terminal.Constructor(Vector3(6949.445f, 1748.129f, 69.57536f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1904, + Terminal.Constructor(Vector3(6949.445f, 1753.853f, 69.57536f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1905, + Terminal.Constructor(Vector3(6949.445f, 1759.234f, 69.57536f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2520, + SpawnTube.Constructor(Vector3(6938.706f, 1745.742f, 67.72536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2521, + SpawnTube.Constructor(Vector3(6938.706f, 1762.152f, 67.72536f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 1717, + FacilityTurret.Constructor(Vector3(6915.32f, 1745.295f, 97.18536f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1717, 5103) - LocalObject(1719, FacilityTurret.Constructor(Vector3(6950.647f, 1770.707f, 97.18536f), manned_turret), owning_building_guid = 69) + LocalObject( + 1719, + FacilityTurret.Constructor(Vector3(6950.647f, 1770.707f, 97.18536f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1719, 5104) - LocalObject(2312, Painbox.Constructor(Vector3(6933.235f, 1751.803f, 69.74245f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2313, Painbox.Constructor(Vector3(6944.889f, 1760.086f, 68.34335f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2314, Painbox.Constructor(Vector3(6944.975f, 1748.223f, 68.34335f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 2312, + Painbox.Constructor(Vector3(6933.235f, 1751.803f, 69.74245f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2313, + Painbox.Constructor(Vector3(6944.889f, 1760.086f, 68.34335f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2314, + Painbox.Constructor(Vector3(6944.975f, 1748.223f, 68.34335f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building47() def Building47(): Unit = { // Name: SE_Nott_Tower Type: tower_a GUID: 70, MapID: 47 - LocalBuilding("SE_Nott_Tower", 70, 47, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7018f, 4124f, 47.17856f), Vector3(0f, 0f, 338f), tower_a))) - LocalObject(2548, CaptureTerminal.Constructor(Vector3(7033.341f, 4117.691f, 57.17756f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "SE_Nott_Tower", + 70, + 47, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7018f, 4124f, 47.17856f), Vector3(0f, 0f, 338f), tower_a) + ) + ) + LocalObject( + 2548, + CaptureTerminal.Constructor(Vector3(7033.341f, 4117.691f, 57.17756f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(597, Door.Constructor(Vector3(7026.129f, 4112.087f, 48.69956f)), owning_building_guid = 70) LocalObject(598, Door.Constructor(Vector3(7026.129f, 4112.087f, 68.69856f)), owning_building_guid = 70) LocalObject(599, Door.Constructor(Vector3(7032.123f, 4126.922f, 48.69956f)), owning_building_guid = 70) LocalObject(600, Door.Constructor(Vector3(7032.123f, 4126.922f, 68.69856f)), owning_building_guid = 70) LocalObject(2724, Door.Constructor(Vector3(7024.137f, 4109.435f, 38.51456f)), owning_building_guid = 70) LocalObject(2725, Door.Constructor(Vector3(7030.284f, 4124.65f, 38.51456f)), owning_building_guid = 70) - LocalObject(1181, IFFLock.Constructor(Vector3(7027.724f, 4110.568f, 48.63956f), Vector3(0, 0, 202)), owning_building_guid = 70, door_guid = 597) - LocalObject(1182, IFFLock.Constructor(Vector3(7027.724f, 4110.568f, 68.63956f), Vector3(0, 0, 202)), owning_building_guid = 70, door_guid = 598) - LocalObject(1183, IFFLock.Constructor(Vector3(7030.533f, 4128.439f, 48.63956f), Vector3(0, 0, 22)), owning_building_guid = 70, door_guid = 599) - LocalObject(1184, IFFLock.Constructor(Vector3(7030.533f, 4128.439f, 68.63956f), Vector3(0, 0, 22)), owning_building_guid = 70, door_guid = 600) + LocalObject( + 1181, + IFFLock.Constructor(Vector3(7027.724f, 4110.568f, 48.63956f), Vector3(0, 0, 202)), + owning_building_guid = 70, + door_guid = 597 + ) + LocalObject( + 1182, + IFFLock.Constructor(Vector3(7027.724f, 4110.568f, 68.63956f), Vector3(0, 0, 202)), + owning_building_guid = 70, + door_guid = 598 + ) + LocalObject( + 1183, + IFFLock.Constructor(Vector3(7030.533f, 4128.439f, 48.63956f), Vector3(0, 0, 22)), + owning_building_guid = 70, + door_guid = 599 + ) + LocalObject( + 1184, + IFFLock.Constructor(Vector3(7030.533f, 4128.439f, 68.63956f), Vector3(0, 0, 22)), + owning_building_guid = 70, + door_guid = 600 + ) LocalObject(1560, Locker.Constructor(Vector3(7026.938f, 4104.17f, 37.17256f)), owning_building_guid = 70) LocalObject(1561, Locker.Constructor(Vector3(7028.178f, 4103.67f, 37.17256f)), owning_building_guid = 70) LocalObject(1562, Locker.Constructor(Vector3(7030.67f, 4102.663f, 37.17256f)), owning_building_guid = 70) @@ -2372,25 +6938,76 @@ object Map07 { // Esamir LocalObject(1565, Locker.Constructor(Vector3(7036.404f, 4123.936f, 37.17256f)), owning_building_guid = 70) LocalObject(1566, Locker.Constructor(Vector3(7038.864f, 4122.942f, 37.17256f)), owning_building_guid = 70) LocalObject(1567, Locker.Constructor(Vector3(7040.164f, 4122.417f, 37.17256f)), owning_building_guid = 70) - LocalObject(1906, Terminal.Constructor(Vector3(7034.186f, 4106.814f, 38.51056f), order_terminal), owning_building_guid = 70) - LocalObject(1907, Terminal.Constructor(Vector3(7036.33f, 4112.122f, 38.51056f), order_terminal), owning_building_guid = 70) - LocalObject(1908, Terminal.Constructor(Vector3(7038.346f, 4117.111f, 38.51056f), order_terminal), owning_building_guid = 70) - LocalObject(2522, SpawnTube.Constructor(Vector3(7023.334f, 4108.624f, 36.66056f), respawn_tube_tower, Vector3(0, 0, 22)), owning_building_guid = 70) - LocalObject(2523, SpawnTube.Constructor(Vector3(7029.482f, 4123.839f, 36.66056f), respawn_tube_tower, Vector3(0, 0, 22)), owning_building_guid = 70) - LocalObject(1720, FacilityTurret.Constructor(Vector3(7001.484f, 4116.97f, 66.12056f), manned_turret), owning_building_guid = 70) + LocalObject( + 1906, + Terminal.Constructor(Vector3(7034.186f, 4106.814f, 38.51056f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1907, + Terminal.Constructor(Vector3(7036.33f, 4112.122f, 38.51056f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1908, + Terminal.Constructor(Vector3(7038.346f, 4117.111f, 38.51056f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2522, + SpawnTube.Constructor(Vector3(7023.334f, 4108.624f, 36.66056f), respawn_tube_tower, Vector3(0, 0, 22)), + owning_building_guid = 70 + ) + LocalObject( + 2523, + SpawnTube.Constructor(Vector3(7029.482f, 4123.839f, 36.66056f), respawn_tube_tower, Vector3(0, 0, 22)), + owning_building_guid = 70 + ) + LocalObject( + 1720, + FacilityTurret.Constructor(Vector3(7001.484f, 4116.97f, 66.12056f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1720, 5105) - LocalObject(1721, FacilityTurret.Constructor(Vector3(7043.758f, 4127.298f, 66.12056f), manned_turret), owning_building_guid = 70) + LocalObject( + 1721, + FacilityTurret.Constructor(Vector3(7043.758f, 4127.298f, 66.12056f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1721, 5106) - LocalObject(2315, Painbox.Constructor(Vector3(7020.532f, 4116.293f, 38.67766f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2316, Painbox.Constructor(Vector3(7030.076f, 4108.576f, 37.27856f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2317, Painbox.Constructor(Vector3(7034.441f, 4119.607f, 37.27856f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 2315, + Painbox.Constructor(Vector3(7020.532f, 4116.293f, 38.67766f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2316, + Painbox.Constructor(Vector3(7030.076f, 4108.576f, 37.27856f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2317, + Painbox.Constructor(Vector3(7034.441f, 4119.607f, 37.27856f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building41() def Building41(): Unit = { // Name: N_NCSanc_Warpgate_Tower Type: tower_b GUID: 71, MapID: 41 - LocalBuilding("N_NCSanc_Warpgate_Tower", 71, 41, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(754f, 6932f, 44.69741f), Vector3(0f, 0f, 30f), tower_b))) - LocalObject(2524, CaptureTerminal.Constructor(Vector3(768.4163f, 6940.204f, 64.69641f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "N_NCSanc_Warpgate_Tower", + 71, + 41, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(754f, 6932f, 44.69741f), Vector3(0f, 0f, 30f), tower_b) + ) + ) + LocalObject( + 2524, + CaptureTerminal.Constructor(Vector3(768.4163f, 6940.204f, 64.69641f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(294, Door.Constructor(Vector3(760.3923f, 6944.928f, 46.21741f)), owning_building_guid = 71) LocalObject(295, Door.Constructor(Vector3(760.3923f, 6944.928f, 56.21741f)), owning_building_guid = 71) LocalObject(296, Door.Constructor(Vector3(760.3923f, 6944.928f, 76.21741f)), owning_building_guid = 71) @@ -2399,12 +7016,42 @@ object Map07 { // Esamir LocalObject(299, Door.Constructor(Vector3(768.3923f, 6931.072f, 76.21741f)), owning_building_guid = 71) LocalObject(2637, Door.Constructor(Vector3(761.0516f, 6942.08f, 36.03341f)), owning_building_guid = 71) LocalObject(2638, Door.Constructor(Vector3(769.2566f, 6927.869f, 36.03341f)), owning_building_guid = 71) - LocalObject(950, IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 46.15841f), Vector3(0, 0, 330)), owning_building_guid = 71, door_guid = 294) - LocalObject(951, IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 56.15841f), Vector3(0, 0, 330)), owning_building_guid = 71, door_guid = 295) - LocalObject(952, IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 76.15841f), Vector3(0, 0, 330)), owning_building_guid = 71, door_guid = 296) - LocalObject(953, IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 46.15841f), Vector3(0, 0, 150)), owning_building_guid = 71, door_guid = 297) - LocalObject(954, IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 56.15841f), Vector3(0, 0, 150)), owning_building_guid = 71, door_guid = 298) - LocalObject(955, IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 76.15841f), Vector3(0, 0, 150)), owning_building_guid = 71, door_guid = 299) + LocalObject( + 950, + IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 46.15841f), Vector3(0, 0, 330)), + owning_building_guid = 71, + door_guid = 294 + ) + LocalObject( + 951, + IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 56.15841f), Vector3(0, 0, 330)), + owning_building_guid = 71, + door_guid = 295 + ) + LocalObject( + 952, + IFFLock.Constructor(Vector3(758.2175f, 6944.609f, 76.15841f), Vector3(0, 0, 330)), + owning_building_guid = 71, + door_guid = 296 + ) + LocalObject( + 953, + IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 46.15841f), Vector3(0, 0, 150)), + owning_building_guid = 71, + door_guid = 297 + ) + LocalObject( + 954, + IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 56.15841f), Vector3(0, 0, 150)), + owning_building_guid = 71, + door_guid = 298 + ) + LocalObject( + 955, + IFFLock.Constructor(Vector3(770.5706f, 6931.393f, 76.15841f), Vector3(0, 0, 150)), + owning_building_guid = 71, + door_guid = 299 + ) LocalObject(1185, Locker.Constructor(Vector3(764.2233f, 6945.795f, 34.69141f)), owning_building_guid = 71) LocalObject(1186, Locker.Constructor(Vector3(765.3812f, 6946.463f, 34.69141f)), owning_building_guid = 71) LocalObject(1187, Locker.Constructor(Vector3(767.6787f, 6947.79f, 34.69141f)), owning_building_guid = 71) @@ -2413,21 +7060,64 @@ object Map07 { // Esamir LocalObject(1190, Locker.Constructor(Vector3(776.2868f, 6927.504f, 34.69141f)), owning_building_guid = 71) LocalObject(1191, Locker.Constructor(Vector3(778.6147f, 6928.848f, 34.69141f)), owning_building_guid = 71) LocalObject(1192, Locker.Constructor(Vector3(779.8289f, 6929.549f, 34.69141f)), owning_building_guid = 71) - LocalObject(1766, Terminal.Constructor(Vector3(771.9558f, 6943.792f, 36.02941f), order_terminal), owning_building_guid = 71) - LocalObject(1767, Terminal.Constructor(Vector3(774.6463f, 6939.132f, 36.02941f), order_terminal), owning_building_guid = 71) - LocalObject(1768, Terminal.Constructor(Vector3(777.5083f, 6934.174f, 36.02941f), order_terminal), owning_building_guid = 71) - LocalObject(2435, SpawnTube.Constructor(Vector3(761.1957f, 6940.949f, 34.17941f), respawn_tube_tower, Vector3(0, 0, 330)), owning_building_guid = 71) - LocalObject(2436, SpawnTube.Constructor(Vector3(769.4007f, 6926.737f, 34.17941f), respawn_tube_tower, Vector3(0, 0, 330)), owning_building_guid = 71) - LocalObject(2243, Painbox.Constructor(Vector3(762.3324f, 6928.553f, 35.98681f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2244, Painbox.Constructor(Vector3(767.8937f, 6942.454f, 34.79741f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2245, Painbox.Constructor(Vector3(773.7936f, 6931.971f, 34.79741f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 1766, + Terminal.Constructor(Vector3(771.9558f, 6943.792f, 36.02941f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1767, + Terminal.Constructor(Vector3(774.6463f, 6939.132f, 36.02941f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1768, + Terminal.Constructor(Vector3(777.5083f, 6934.174f, 36.02941f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2435, + SpawnTube.Constructor(Vector3(761.1957f, 6940.949f, 34.17941f), respawn_tube_tower, Vector3(0, 0, 330)), + owning_building_guid = 71 + ) + LocalObject( + 2436, + SpawnTube.Constructor(Vector3(769.4007f, 6926.737f, 34.17941f), respawn_tube_tower, Vector3(0, 0, 330)), + owning_building_guid = 71 + ) + LocalObject( + 2243, + Painbox.Constructor(Vector3(762.3324f, 6928.553f, 35.98681f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2244, + Painbox.Constructor(Vector3(767.8937f, 6942.454f, 34.79741f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2245, + Painbox.Constructor(Vector3(773.7936f, 6931.971f, 34.79741f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building54() def Building54(): Unit = { // Name: S_NCSanc_Tower Type: tower_b GUID: 72, MapID: 54 - LocalBuilding("S_NCSanc_Tower", 72, 54, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1456f, 6060f, 120.4505f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2526, CaptureTerminal.Constructor(Vector3(1472.587f, 6059.897f, 140.4495f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "S_NCSanc_Tower", + 72, + 54, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1456f, 6060f, 120.4505f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2526, + CaptureTerminal.Constructor(Vector3(1472.587f, 6059.897f, 140.4495f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(319, Door.Constructor(Vector3(1468f, 6052f, 121.9705f)), owning_building_guid = 72) LocalObject(320, Door.Constructor(Vector3(1468f, 6052f, 131.9705f)), owning_building_guid = 72) LocalObject(321, Door.Constructor(Vector3(1468f, 6052f, 151.9705f)), owning_building_guid = 72) @@ -2436,12 +7126,42 @@ object Map07 { // Esamir LocalObject(324, Door.Constructor(Vector3(1468f, 6068f, 151.9705f)), owning_building_guid = 72) LocalObject(2644, Door.Constructor(Vector3(1467.147f, 6048.794f, 111.7865f)), owning_building_guid = 72) LocalObject(2645, Door.Constructor(Vector3(1467.147f, 6065.204f, 111.7865f)), owning_building_guid = 72) - LocalObject(968, IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 121.9115f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 322) - LocalObject(969, IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 131.9115f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 323) - LocalObject(970, IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 151.9115f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 324) - LocalObject(971, IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 121.9115f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 319) - LocalObject(972, IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 131.9115f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 320) - LocalObject(973, IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 151.9115f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 321) + LocalObject( + 968, + IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 121.9115f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 322 + ) + LocalObject( + 969, + IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 131.9115f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 323 + ) + LocalObject( + 970, + IFFLock.Constructor(Vector3(1465.957f, 6068.811f, 151.9115f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 324 + ) + LocalObject( + 971, + IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 121.9115f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 319 + ) + LocalObject( + 972, + IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 131.9115f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 320 + ) + LocalObject( + 973, + IFFLock.Constructor(Vector3(1470.047f, 6051.189f, 151.9115f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 321 + ) LocalObject(1213, Locker.Constructor(Vector3(1471.716f, 6044.963f, 110.4445f)), owning_building_guid = 72) LocalObject(1214, Locker.Constructor(Vector3(1471.751f, 6066.835f, 110.4445f)), owning_building_guid = 72) LocalObject(1215, Locker.Constructor(Vector3(1473.053f, 6044.963f, 110.4445f)), owning_building_guid = 72) @@ -2450,21 +7170,64 @@ object Map07 { // Esamir LocalObject(1218, Locker.Constructor(Vector3(1475.741f, 6066.835f, 110.4445f)), owning_building_guid = 72) LocalObject(1219, Locker.Constructor(Vector3(1477.143f, 6044.963f, 110.4445f)), owning_building_guid = 72) LocalObject(1220, Locker.Constructor(Vector3(1477.143f, 6066.835f, 110.4445f)), owning_building_guid = 72) - LocalObject(1776, Terminal.Constructor(Vector3(1477.446f, 6050.129f, 111.7825f), order_terminal), owning_building_guid = 72) - LocalObject(1777, Terminal.Constructor(Vector3(1477.446f, 6055.853f, 111.7825f), order_terminal), owning_building_guid = 72) - LocalObject(1778, Terminal.Constructor(Vector3(1477.446f, 6061.234f, 111.7825f), order_terminal), owning_building_guid = 72) - LocalObject(2442, SpawnTube.Constructor(Vector3(1466.706f, 6047.742f, 109.9325f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2443, SpawnTube.Constructor(Vector3(1466.706f, 6064.152f, 109.9325f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2249, Painbox.Constructor(Vector3(1461.493f, 6052.849f, 111.7399f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2250, Painbox.Constructor(Vector3(1473.127f, 6050.078f, 110.5505f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2251, Painbox.Constructor(Vector3(1473.259f, 6062.107f, 110.5505f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 1776, + Terminal.Constructor(Vector3(1477.446f, 6050.129f, 111.7825f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1777, + Terminal.Constructor(Vector3(1477.446f, 6055.853f, 111.7825f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1778, + Terminal.Constructor(Vector3(1477.446f, 6061.234f, 111.7825f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2442, + SpawnTube.Constructor(Vector3(1466.706f, 6047.742f, 109.9325f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2443, + SpawnTube.Constructor(Vector3(1466.706f, 6064.152f, 109.9325f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2249, + Painbox.Constructor(Vector3(1461.493f, 6052.849f, 111.7399f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2250, + Painbox.Constructor(Vector3(1473.127f, 6050.078f, 110.5505f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2251, + Painbox.Constructor(Vector3(1473.259f, 6062.107f, 110.5505f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building25() def Building25(): Unit = { // Name: SE_Dagur_Tower Type: tower_b GUID: 73, MapID: 25 - LocalBuilding("SE_Dagur_Tower", 73, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4248f, 5802f, 48.16736f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2538, CaptureTerminal.Constructor(Vector3(4264.587f, 5801.897f, 68.16637f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "SE_Dagur_Tower", + 73, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4248f, 5802f, 48.16736f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2538, + CaptureTerminal.Constructor(Vector3(4264.587f, 5801.897f, 68.16637f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(509, Door.Constructor(Vector3(4260f, 5794f, 49.68736f)), owning_building_guid = 73) LocalObject(510, Door.Constructor(Vector3(4260f, 5794f, 59.68736f)), owning_building_guid = 73) LocalObject(511, Door.Constructor(Vector3(4260f, 5794f, 79.68736f)), owning_building_guid = 73) @@ -2473,12 +7236,42 @@ object Map07 { // Esamir LocalObject(514, Door.Constructor(Vector3(4260f, 5810f, 79.68736f)), owning_building_guid = 73) LocalObject(2695, Door.Constructor(Vector3(4259.147f, 5790.794f, 39.50336f)), owning_building_guid = 73) LocalObject(2696, Door.Constructor(Vector3(4259.147f, 5807.204f, 39.50336f)), owning_building_guid = 73) - LocalObject(1108, IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 49.62836f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 512) - LocalObject(1109, IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 59.62836f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 513) - LocalObject(1110, IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 79.62836f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 514) - LocalObject(1111, IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 49.62836f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 509) - LocalObject(1112, IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 59.62836f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 510) - LocalObject(1113, IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 79.62836f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 511) + LocalObject( + 1108, + IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 49.62836f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 512 + ) + LocalObject( + 1109, + IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 59.62836f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 513 + ) + LocalObject( + 1110, + IFFLock.Constructor(Vector3(4257.957f, 5810.811f, 79.62836f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 514 + ) + LocalObject( + 1111, + IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 49.62836f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 509 + ) + LocalObject( + 1112, + IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 59.62836f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 510 + ) + LocalObject( + 1113, + IFFLock.Constructor(Vector3(4262.047f, 5793.189f, 79.62836f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 511 + ) LocalObject(1435, Locker.Constructor(Vector3(4263.716f, 5786.963f, 38.16136f)), owning_building_guid = 73) LocalObject(1436, Locker.Constructor(Vector3(4263.751f, 5808.835f, 38.16136f)), owning_building_guid = 73) LocalObject(1437, Locker.Constructor(Vector3(4265.053f, 5786.963f, 38.16136f)), owning_building_guid = 73) @@ -2487,21 +7280,64 @@ object Map07 { // Esamir LocalObject(1440, Locker.Constructor(Vector3(4267.741f, 5808.835f, 38.16136f)), owning_building_guid = 73) LocalObject(1441, Locker.Constructor(Vector3(4269.143f, 5786.963f, 38.16136f)), owning_building_guid = 73) LocalObject(1442, Locker.Constructor(Vector3(4269.143f, 5808.835f, 38.16136f)), owning_building_guid = 73) - LocalObject(1862, Terminal.Constructor(Vector3(4269.446f, 5792.129f, 39.49936f), order_terminal), owning_building_guid = 73) - LocalObject(1863, Terminal.Constructor(Vector3(4269.446f, 5797.853f, 39.49936f), order_terminal), owning_building_guid = 73) - LocalObject(1864, Terminal.Constructor(Vector3(4269.446f, 5803.234f, 39.49936f), order_terminal), owning_building_guid = 73) - LocalObject(2493, SpawnTube.Constructor(Vector3(4258.706f, 5789.742f, 37.64936f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2494, SpawnTube.Constructor(Vector3(4258.706f, 5806.152f, 37.64936f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2285, Painbox.Constructor(Vector3(4253.493f, 5794.849f, 39.45676f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2286, Painbox.Constructor(Vector3(4265.127f, 5792.078f, 38.26736f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2287, Painbox.Constructor(Vector3(4265.259f, 5804.107f, 38.26736f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 1862, + Terminal.Constructor(Vector3(4269.446f, 5792.129f, 39.49936f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1863, + Terminal.Constructor(Vector3(4269.446f, 5797.853f, 39.49936f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1864, + Terminal.Constructor(Vector3(4269.446f, 5803.234f, 39.49936f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2493, + SpawnTube.Constructor(Vector3(4258.706f, 5789.742f, 37.64936f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2494, + SpawnTube.Constructor(Vector3(4258.706f, 5806.152f, 37.64936f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2285, + Painbox.Constructor(Vector3(4253.493f, 5794.849f, 39.45676f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2286, + Painbox.Constructor(Vector3(4265.127f, 5792.078f, 38.26736f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2287, + Painbox.Constructor(Vector3(4265.259f, 5804.107f, 38.26736f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building28() def Building28(): Unit = { // Name: SW_Mani_Tower Type: tower_b GUID: 74, MapID: 28 - LocalBuilding("SW_Mani_Tower", 74, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4476f, 4308f, 70.25056f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2539, CaptureTerminal.Constructor(Vector3(4492.587f, 4307.897f, 90.24956f), secondary_capture), owning_building_guid = 74) + LocalBuilding( + "SW_Mani_Tower", + 74, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4476f, 4308f, 70.25056f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2539, + CaptureTerminal.Constructor(Vector3(4492.587f, 4307.897f, 90.24956f), secondary_capture), + owning_building_guid = 74 + ) LocalObject(515, Door.Constructor(Vector3(4488f, 4300f, 71.77055f)), owning_building_guid = 74) LocalObject(516, Door.Constructor(Vector3(4488f, 4300f, 81.77055f)), owning_building_guid = 74) LocalObject(517, Door.Constructor(Vector3(4488f, 4300f, 101.7706f)), owning_building_guid = 74) @@ -2510,12 +7346,42 @@ object Map07 { // Esamir LocalObject(520, Door.Constructor(Vector3(4488f, 4316f, 101.7706f)), owning_building_guid = 74) LocalObject(2697, Door.Constructor(Vector3(4487.147f, 4296.794f, 61.58656f)), owning_building_guid = 74) LocalObject(2698, Door.Constructor(Vector3(4487.147f, 4313.204f, 61.58656f)), owning_building_guid = 74) - LocalObject(1114, IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 71.71156f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 518) - LocalObject(1115, IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 81.71156f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 519) - LocalObject(1116, IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 101.7116f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 520) - LocalObject(1117, IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 71.71156f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 515) - LocalObject(1118, IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 81.71156f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 516) - LocalObject(1119, IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 101.7116f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 517) + LocalObject( + 1114, + IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 71.71156f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 518 + ) + LocalObject( + 1115, + IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 81.71156f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 519 + ) + LocalObject( + 1116, + IFFLock.Constructor(Vector3(4485.957f, 4316.811f, 101.7116f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 520 + ) + LocalObject( + 1117, + IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 71.71156f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 515 + ) + LocalObject( + 1118, + IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 81.71156f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 516 + ) + LocalObject( + 1119, + IFFLock.Constructor(Vector3(4490.047f, 4299.189f, 101.7116f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 517 + ) LocalObject(1443, Locker.Constructor(Vector3(4491.716f, 4292.963f, 60.24456f)), owning_building_guid = 74) LocalObject(1444, Locker.Constructor(Vector3(4491.751f, 4314.835f, 60.24456f)), owning_building_guid = 74) LocalObject(1445, Locker.Constructor(Vector3(4493.053f, 4292.963f, 60.24456f)), owning_building_guid = 74) @@ -2524,21 +7390,64 @@ object Map07 { // Esamir LocalObject(1448, Locker.Constructor(Vector3(4495.741f, 4314.835f, 60.24456f)), owning_building_guid = 74) LocalObject(1449, Locker.Constructor(Vector3(4497.143f, 4292.963f, 60.24456f)), owning_building_guid = 74) LocalObject(1450, Locker.Constructor(Vector3(4497.143f, 4314.835f, 60.24456f)), owning_building_guid = 74) - LocalObject(1865, Terminal.Constructor(Vector3(4497.446f, 4298.129f, 61.58256f), order_terminal), owning_building_guid = 74) - LocalObject(1866, Terminal.Constructor(Vector3(4497.446f, 4303.853f, 61.58256f), order_terminal), owning_building_guid = 74) - LocalObject(1867, Terminal.Constructor(Vector3(4497.446f, 4309.234f, 61.58256f), order_terminal), owning_building_guid = 74) - LocalObject(2495, SpawnTube.Constructor(Vector3(4486.706f, 4295.742f, 59.73256f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2496, SpawnTube.Constructor(Vector3(4486.706f, 4312.152f, 59.73256f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2288, Painbox.Constructor(Vector3(4481.493f, 4300.849f, 61.53996f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2289, Painbox.Constructor(Vector3(4493.127f, 4298.078f, 60.35056f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2290, Painbox.Constructor(Vector3(4493.259f, 4310.107f, 60.35056f), painbox_radius_continuous), owning_building_guid = 74) + LocalObject( + 1865, + Terminal.Constructor(Vector3(4497.446f, 4298.129f, 61.58256f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1866, + Terminal.Constructor(Vector3(4497.446f, 4303.853f, 61.58256f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1867, + Terminal.Constructor(Vector3(4497.446f, 4309.234f, 61.58256f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2495, + SpawnTube.Constructor(Vector3(4486.706f, 4295.742f, 59.73256f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2496, + SpawnTube.Constructor(Vector3(4486.706f, 4312.152f, 59.73256f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2288, + Painbox.Constructor(Vector3(4481.493f, 4300.849f, 61.53996f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2289, + Painbox.Constructor(Vector3(4493.127f, 4298.078f, 60.35056f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2290, + Painbox.Constructor(Vector3(4493.259f, 4310.107f, 60.35056f), painbox_radius_continuous), + owning_building_guid = 74 + ) } Building30() def Building30(): Unit = { // Name: NW_VSSanc_Warpgate_Tower Type: tower_b GUID: 75, MapID: 30 - LocalBuilding("NW_VSSanc_Warpgate_Tower", 75, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5736f, 1382f, 84.58815f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2544, CaptureTerminal.Constructor(Vector3(5752.587f, 1381.897f, 104.5872f), secondary_capture), owning_building_guid = 75) + LocalBuilding( + "NW_VSSanc_Warpgate_Tower", + 75, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5736f, 1382f, 84.58815f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2544, + CaptureTerminal.Constructor(Vector3(5752.587f, 1381.897f, 104.5872f), secondary_capture), + owning_building_guid = 75 + ) LocalObject(562, Door.Constructor(Vector3(5748f, 1374f, 86.10815f)), owning_building_guid = 75) LocalObject(563, Door.Constructor(Vector3(5748f, 1374f, 96.10815f)), owning_building_guid = 75) LocalObject(564, Door.Constructor(Vector3(5748f, 1374f, 116.1082f)), owning_building_guid = 75) @@ -2547,12 +7456,42 @@ object Map07 { // Esamir LocalObject(567, Door.Constructor(Vector3(5748f, 1390f, 116.1082f)), owning_building_guid = 75) LocalObject(2713, Door.Constructor(Vector3(5747.147f, 1370.794f, 75.92415f)), owning_building_guid = 75) LocalObject(2714, Door.Constructor(Vector3(5747.147f, 1387.204f, 75.92415f)), owning_building_guid = 75) - LocalObject(1152, IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 86.04915f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 565) - LocalObject(1153, IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 96.04915f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 566) - LocalObject(1154, IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 116.0491f), Vector3(0, 0, 0)), owning_building_guid = 75, door_guid = 567) - LocalObject(1155, IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 86.04915f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 562) - LocalObject(1156, IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 96.04915f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 563) - LocalObject(1157, IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 116.0491f), Vector3(0, 0, 180)), owning_building_guid = 75, door_guid = 564) + LocalObject( + 1152, + IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 86.04915f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 565 + ) + LocalObject( + 1153, + IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 96.04915f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 566 + ) + LocalObject( + 1154, + IFFLock.Constructor(Vector3(5745.957f, 1390.811f, 116.0491f), Vector3(0, 0, 0)), + owning_building_guid = 75, + door_guid = 567 + ) + LocalObject( + 1155, + IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 86.04915f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 562 + ) + LocalObject( + 1156, + IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 96.04915f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 563 + ) + LocalObject( + 1157, + IFFLock.Constructor(Vector3(5750.047f, 1373.189f, 116.0491f), Vector3(0, 0, 180)), + owning_building_guid = 75, + door_guid = 564 + ) LocalObject(1516, Locker.Constructor(Vector3(5751.716f, 1366.963f, 74.58215f)), owning_building_guid = 75) LocalObject(1517, Locker.Constructor(Vector3(5751.751f, 1388.835f, 74.58215f)), owning_building_guid = 75) LocalObject(1518, Locker.Constructor(Vector3(5753.053f, 1366.963f, 74.58215f)), owning_building_guid = 75) @@ -2561,31 +7500,94 @@ object Map07 { // Esamir LocalObject(1521, Locker.Constructor(Vector3(5755.741f, 1388.835f, 74.58215f)), owning_building_guid = 75) LocalObject(1522, Locker.Constructor(Vector3(5757.143f, 1366.963f, 74.58215f)), owning_building_guid = 75) LocalObject(1523, Locker.Constructor(Vector3(5757.143f, 1388.835f, 74.58215f)), owning_building_guid = 75) - LocalObject(1888, Terminal.Constructor(Vector3(5757.446f, 1372.129f, 75.92015f), order_terminal), owning_building_guid = 75) - LocalObject(1889, Terminal.Constructor(Vector3(5757.446f, 1377.853f, 75.92015f), order_terminal), owning_building_guid = 75) - LocalObject(1890, Terminal.Constructor(Vector3(5757.446f, 1383.234f, 75.92015f), order_terminal), owning_building_guid = 75) - LocalObject(2511, SpawnTube.Constructor(Vector3(5746.706f, 1369.742f, 74.07015f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 75) - LocalObject(2512, SpawnTube.Constructor(Vector3(5746.706f, 1386.152f, 74.07015f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 75) - LocalObject(2303, Painbox.Constructor(Vector3(5741.493f, 1374.849f, 75.87755f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2304, Painbox.Constructor(Vector3(5753.127f, 1372.078f, 74.68815f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2305, Painbox.Constructor(Vector3(5753.259f, 1384.107f, 74.68815f), painbox_radius_continuous), owning_building_guid = 75) + LocalObject( + 1888, + Terminal.Constructor(Vector3(5757.446f, 1372.129f, 75.92015f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 1889, + Terminal.Constructor(Vector3(5757.446f, 1377.853f, 75.92015f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 1890, + Terminal.Constructor(Vector3(5757.446f, 1383.234f, 75.92015f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2511, + SpawnTube.Constructor(Vector3(5746.706f, 1369.742f, 74.07015f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 75 + ) + LocalObject( + 2512, + SpawnTube.Constructor(Vector3(5746.706f, 1386.152f, 74.07015f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 75 + ) + LocalObject( + 2303, + Painbox.Constructor(Vector3(5741.493f, 1374.849f, 75.87755f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2304, + Painbox.Constructor(Vector3(5753.127f, 1372.078f, 74.68815f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2305, + Painbox.Constructor(Vector3(5753.259f, 1384.107f, 74.68815f), painbox_radius_continuous), + owning_building_guid = 75 + ) } Building29() def Building29(): Unit = { // Name: SE_Searhus_Warpgate_Tower Type: tower_c GUID: 76, MapID: 29 - LocalBuilding("SE_Searhus_Warpgate_Tower", 76, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3222f, 2488f, 89.08353f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2531, CaptureTerminal.Constructor(Vector3(3238.587f, 2487.897f, 99.08253f), secondary_capture), owning_building_guid = 76) + LocalBuilding( + "SE_Searhus_Warpgate_Tower", + 76, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3222f, 2488f, 89.08353f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2531, + CaptureTerminal.Constructor(Vector3(3238.587f, 2487.897f, 99.08253f), secondary_capture), + owning_building_guid = 76 + ) LocalObject(412, Door.Constructor(Vector3(3234f, 2480f, 90.60453f)), owning_building_guid = 76) LocalObject(413, Door.Constructor(Vector3(3234f, 2480f, 110.6035f)), owning_building_guid = 76) LocalObject(414, Door.Constructor(Vector3(3234f, 2496f, 90.60453f)), owning_building_guid = 76) LocalObject(415, Door.Constructor(Vector3(3234f, 2496f, 110.6035f)), owning_building_guid = 76) LocalObject(2669, Door.Constructor(Vector3(3233.146f, 2476.794f, 80.41953f)), owning_building_guid = 76) LocalObject(2670, Door.Constructor(Vector3(3233.146f, 2493.204f, 80.41953f)), owning_building_guid = 76) - LocalObject(1038, IFFLock.Constructor(Vector3(3231.957f, 2496.811f, 90.54453f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 414) - LocalObject(1039, IFFLock.Constructor(Vector3(3231.957f, 2496.811f, 110.5445f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 415) - LocalObject(1040, IFFLock.Constructor(Vector3(3236.047f, 2479.189f, 90.54453f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 412) - LocalObject(1041, IFFLock.Constructor(Vector3(3236.047f, 2479.189f, 110.5445f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 413) + LocalObject( + 1038, + IFFLock.Constructor(Vector3(3231.957f, 2496.811f, 90.54453f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 414 + ) + LocalObject( + 1039, + IFFLock.Constructor(Vector3(3231.957f, 2496.811f, 110.5445f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 415 + ) + LocalObject( + 1040, + IFFLock.Constructor(Vector3(3236.047f, 2479.189f, 90.54453f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 412 + ) + LocalObject( + 1041, + IFFLock.Constructor(Vector3(3236.047f, 2479.189f, 110.5445f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 413 + ) LocalObject(1327, Locker.Constructor(Vector3(3237.716f, 2472.963f, 79.07753f)), owning_building_guid = 76) LocalObject(1328, Locker.Constructor(Vector3(3237.751f, 2494.835f, 79.07753f)), owning_building_guid = 76) LocalObject(1330, Locker.Constructor(Vector3(3239.053f, 2472.963f, 79.07753f)), owning_building_guid = 76) @@ -2594,39 +7596,126 @@ object Map07 { // Esamir LocalObject(1335, Locker.Constructor(Vector3(3241.741f, 2494.835f, 79.07753f)), owning_building_guid = 76) LocalObject(1337, Locker.Constructor(Vector3(3243.143f, 2472.963f, 79.07753f)), owning_building_guid = 76) LocalObject(1338, Locker.Constructor(Vector3(3243.143f, 2494.835f, 79.07753f)), owning_building_guid = 76) - LocalObject(1820, Terminal.Constructor(Vector3(3243.445f, 2478.129f, 80.41553f), order_terminal), owning_building_guid = 76) - LocalObject(1821, Terminal.Constructor(Vector3(3243.445f, 2483.853f, 80.41553f), order_terminal), owning_building_guid = 76) - LocalObject(1822, Terminal.Constructor(Vector3(3243.445f, 2489.234f, 80.41553f), order_terminal), owning_building_guid = 76) - LocalObject(2467, SpawnTube.Constructor(Vector3(3232.706f, 2475.742f, 78.56553f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2468, SpawnTube.Constructor(Vector3(3232.706f, 2492.152f, 78.56553f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2135, ProximityTerminal.Constructor(Vector3(3220.907f, 2482.725f, 116.6535f), pad_landing_tower_frame), owning_building_guid = 76) - LocalObject(2136, Terminal.Constructor(Vector3(3220.907f, 2482.725f, 116.6535f), air_rearm_terminal), owning_building_guid = 76) - LocalObject(2138, ProximityTerminal.Constructor(Vector3(3220.907f, 2493.17f, 116.6535f), pad_landing_tower_frame), owning_building_guid = 76) - LocalObject(2139, Terminal.Constructor(Vector3(3220.907f, 2493.17f, 116.6535f), air_rearm_terminal), owning_building_guid = 76) - LocalObject(1648, FacilityTurret.Constructor(Vector3(3207.07f, 2473.045f, 108.0255f), manned_turret), owning_building_guid = 76) + LocalObject( + 1820, + Terminal.Constructor(Vector3(3243.445f, 2478.129f, 80.41553f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1821, + Terminal.Constructor(Vector3(3243.445f, 2483.853f, 80.41553f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1822, + Terminal.Constructor(Vector3(3243.445f, 2489.234f, 80.41553f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2467, + SpawnTube.Constructor(Vector3(3232.706f, 2475.742f, 78.56553f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2468, + SpawnTube.Constructor(Vector3(3232.706f, 2492.152f, 78.56553f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2135, + ProximityTerminal.Constructor(Vector3(3220.907f, 2482.725f, 116.6535f), pad_landing_tower_frame), + owning_building_guid = 76 + ) + LocalObject( + 2136, + Terminal.Constructor(Vector3(3220.907f, 2482.725f, 116.6535f), air_rearm_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2138, + ProximityTerminal.Constructor(Vector3(3220.907f, 2493.17f, 116.6535f), pad_landing_tower_frame), + owning_building_guid = 76 + ) + LocalObject( + 2139, + Terminal.Constructor(Vector3(3220.907f, 2493.17f, 116.6535f), air_rearm_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1648, + FacilityTurret.Constructor(Vector3(3207.07f, 2473.045f, 108.0255f), manned_turret), + owning_building_guid = 76 + ) TurretToWeapon(1648, 5107) - LocalObject(1650, FacilityTurret.Constructor(Vector3(3245.497f, 2502.957f, 108.0255f), manned_turret), owning_building_guid = 76) + LocalObject( + 1650, + FacilityTurret.Constructor(Vector3(3245.497f, 2502.957f, 108.0255f), manned_turret), + owning_building_guid = 76 + ) TurretToWeapon(1650, 5108) - LocalObject(2264, Painbox.Constructor(Vector3(3226.454f, 2480.849f, 81.10303f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2265, Painbox.Constructor(Vector3(3238.923f, 2477.54f, 79.18353f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2266, Painbox.Constructor(Vector3(3239.113f, 2490.022f, 79.18353f), painbox_radius_continuous), owning_building_guid = 76) + LocalObject( + 2264, + Painbox.Constructor(Vector3(3226.454f, 2480.849f, 81.10303f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2265, + Painbox.Constructor(Vector3(3238.923f, 2477.54f, 79.18353f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2266, + Painbox.Constructor(Vector3(3239.113f, 2490.022f, 79.18353f), painbox_radius_continuous), + owning_building_guid = 76 + ) } Building26() def Building26(): Unit = { // Name: W_Vidar_Tower Type: tower_c GUID: 77, MapID: 26 - LocalBuilding("W_Vidar_Tower", 77, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3270f, 3168f, 85.63189f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2532, CaptureTerminal.Constructor(Vector3(3286.587f, 3167.897f, 95.63089f), secondary_capture), owning_building_guid = 77) + LocalBuilding( + "W_Vidar_Tower", + 77, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3270f, 3168f, 85.63189f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2532, + CaptureTerminal.Constructor(Vector3(3286.587f, 3167.897f, 95.63089f), secondary_capture), + owning_building_guid = 77 + ) LocalObject(422, Door.Constructor(Vector3(3282f, 3160f, 87.15289f)), owning_building_guid = 77) LocalObject(423, Door.Constructor(Vector3(3282f, 3160f, 107.1519f)), owning_building_guid = 77) LocalObject(424, Door.Constructor(Vector3(3282f, 3176f, 87.15289f)), owning_building_guid = 77) LocalObject(425, Door.Constructor(Vector3(3282f, 3176f, 107.1519f)), owning_building_guid = 77) LocalObject(2671, Door.Constructor(Vector3(3281.146f, 3156.794f, 76.96789f)), owning_building_guid = 77) LocalObject(2672, Door.Constructor(Vector3(3281.146f, 3173.204f, 76.96789f)), owning_building_guid = 77) - LocalObject(1045, IFFLock.Constructor(Vector3(3279.957f, 3176.811f, 87.09289f), Vector3(0, 0, 0)), owning_building_guid = 77, door_guid = 424) - LocalObject(1046, IFFLock.Constructor(Vector3(3279.957f, 3176.811f, 107.0929f), Vector3(0, 0, 0)), owning_building_guid = 77, door_guid = 425) - LocalObject(1047, IFFLock.Constructor(Vector3(3284.047f, 3159.189f, 87.09289f), Vector3(0, 0, 180)), owning_building_guid = 77, door_guid = 422) - LocalObject(1048, IFFLock.Constructor(Vector3(3284.047f, 3159.189f, 107.0929f), Vector3(0, 0, 180)), owning_building_guid = 77, door_guid = 423) + LocalObject( + 1045, + IFFLock.Constructor(Vector3(3279.957f, 3176.811f, 87.09289f), Vector3(0, 0, 0)), + owning_building_guid = 77, + door_guid = 424 + ) + LocalObject( + 1046, + IFFLock.Constructor(Vector3(3279.957f, 3176.811f, 107.0929f), Vector3(0, 0, 0)), + owning_building_guid = 77, + door_guid = 425 + ) + LocalObject( + 1047, + IFFLock.Constructor(Vector3(3284.047f, 3159.189f, 87.09289f), Vector3(0, 0, 180)), + owning_building_guid = 77, + door_guid = 422 + ) + LocalObject( + 1048, + IFFLock.Constructor(Vector3(3284.047f, 3159.189f, 107.0929f), Vector3(0, 0, 180)), + owning_building_guid = 77, + door_guid = 423 + ) LocalObject(1339, Locker.Constructor(Vector3(3285.716f, 3152.963f, 75.62589f)), owning_building_guid = 77) LocalObject(1340, Locker.Constructor(Vector3(3285.751f, 3174.835f, 75.62589f)), owning_building_guid = 77) LocalObject(1341, Locker.Constructor(Vector3(3287.053f, 3152.963f, 75.62589f)), owning_building_guid = 77) @@ -2635,39 +7724,126 @@ object Map07 { // Esamir LocalObject(1344, Locker.Constructor(Vector3(3289.741f, 3174.835f, 75.62589f)), owning_building_guid = 77) LocalObject(1345, Locker.Constructor(Vector3(3291.143f, 3152.963f, 75.62589f)), owning_building_guid = 77) LocalObject(1346, Locker.Constructor(Vector3(3291.143f, 3174.835f, 75.62589f)), owning_building_guid = 77) - LocalObject(1823, Terminal.Constructor(Vector3(3291.445f, 3158.129f, 76.96389f), order_terminal), owning_building_guid = 77) - LocalObject(1824, Terminal.Constructor(Vector3(3291.445f, 3163.853f, 76.96389f), order_terminal), owning_building_guid = 77) - LocalObject(1825, Terminal.Constructor(Vector3(3291.445f, 3169.234f, 76.96389f), order_terminal), owning_building_guid = 77) - LocalObject(2469, SpawnTube.Constructor(Vector3(3280.706f, 3155.742f, 75.11389f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 77) - LocalObject(2470, SpawnTube.Constructor(Vector3(3280.706f, 3172.152f, 75.11389f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 77) - LocalObject(2141, ProximityTerminal.Constructor(Vector3(3268.907f, 3162.725f, 113.2019f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2142, Terminal.Constructor(Vector3(3268.907f, 3162.725f, 113.2019f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(2144, ProximityTerminal.Constructor(Vector3(3268.907f, 3173.17f, 113.2019f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2145, Terminal.Constructor(Vector3(3268.907f, 3173.17f, 113.2019f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(1651, FacilityTurret.Constructor(Vector3(3255.07f, 3153.045f, 104.5739f), manned_turret), owning_building_guid = 77) + LocalObject( + 1823, + Terminal.Constructor(Vector3(3291.445f, 3158.129f, 76.96389f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1824, + Terminal.Constructor(Vector3(3291.445f, 3163.853f, 76.96389f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1825, + Terminal.Constructor(Vector3(3291.445f, 3169.234f, 76.96389f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2469, + SpawnTube.Constructor(Vector3(3280.706f, 3155.742f, 75.11389f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 77 + ) + LocalObject( + 2470, + SpawnTube.Constructor(Vector3(3280.706f, 3172.152f, 75.11389f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 77 + ) + LocalObject( + 2141, + ProximityTerminal.Constructor(Vector3(3268.907f, 3162.725f, 113.2019f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2142, + Terminal.Constructor(Vector3(3268.907f, 3162.725f, 113.2019f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2144, + ProximityTerminal.Constructor(Vector3(3268.907f, 3173.17f, 113.2019f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2145, + Terminal.Constructor(Vector3(3268.907f, 3173.17f, 113.2019f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1651, + FacilityTurret.Constructor(Vector3(3255.07f, 3153.045f, 104.5739f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1651, 5109) - LocalObject(1656, FacilityTurret.Constructor(Vector3(3293.497f, 3182.957f, 104.5739f), manned_turret), owning_building_guid = 77) + LocalObject( + 1656, + FacilityTurret.Constructor(Vector3(3293.497f, 3182.957f, 104.5739f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1656, 5110) - LocalObject(2267, Painbox.Constructor(Vector3(3274.454f, 3160.849f, 77.65139f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2269, Painbox.Constructor(Vector3(3286.923f, 3157.54f, 75.73189f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2270, Painbox.Constructor(Vector3(3287.113f, 3170.022f, 75.73189f), painbox_radius_continuous), owning_building_guid = 77) + LocalObject( + 2267, + Painbox.Constructor(Vector3(3274.454f, 3160.849f, 77.65139f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2269, + Painbox.Constructor(Vector3(3286.923f, 3157.54f, 75.73189f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2270, + Painbox.Constructor(Vector3(3287.113f, 3170.022f, 75.73189f), painbox_radius_continuous), + owning_building_guid = 77 + ) } Building51() def Building51(): Unit = { // Name: NE_Andvari_Tower Type: tower_c GUID: 78, MapID: 51 - LocalBuilding("NE_Andvari_Tower", 78, 51, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3446f, 7598f, 50.04425f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2535, CaptureTerminal.Constructor(Vector3(3462.587f, 7597.897f, 60.04325f), secondary_capture), owning_building_guid = 78) + LocalBuilding( + "NE_Andvari_Tower", + 78, + 51, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3446f, 7598f, 50.04425f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2535, + CaptureTerminal.Constructor(Vector3(3462.587f, 7597.897f, 60.04325f), secondary_capture), + owning_building_guid = 78 + ) LocalObject(448, Door.Constructor(Vector3(3458f, 7590f, 51.56525f)), owning_building_guid = 78) LocalObject(449, Door.Constructor(Vector3(3458f, 7590f, 71.56425f)), owning_building_guid = 78) LocalObject(450, Door.Constructor(Vector3(3458f, 7606f, 51.56525f)), owning_building_guid = 78) LocalObject(451, Door.Constructor(Vector3(3458f, 7606f, 71.56425f)), owning_building_guid = 78) LocalObject(2680, Door.Constructor(Vector3(3457.146f, 7586.794f, 41.38025f)), owning_building_guid = 78) LocalObject(2681, Door.Constructor(Vector3(3457.146f, 7603.204f, 41.38025f)), owning_building_guid = 78) - LocalObject(1066, IFFLock.Constructor(Vector3(3455.957f, 7606.811f, 51.50525f), Vector3(0, 0, 0)), owning_building_guid = 78, door_guid = 450) - LocalObject(1067, IFFLock.Constructor(Vector3(3455.957f, 7606.811f, 71.50525f), Vector3(0, 0, 0)), owning_building_guid = 78, door_guid = 451) - LocalObject(1068, IFFLock.Constructor(Vector3(3460.047f, 7589.189f, 51.50525f), Vector3(0, 0, 180)), owning_building_guid = 78, door_guid = 448) - LocalObject(1069, IFFLock.Constructor(Vector3(3460.047f, 7589.189f, 71.50525f), Vector3(0, 0, 180)), owning_building_guid = 78, door_guid = 449) + LocalObject( + 1066, + IFFLock.Constructor(Vector3(3455.957f, 7606.811f, 51.50525f), Vector3(0, 0, 0)), + owning_building_guid = 78, + door_guid = 450 + ) + LocalObject( + 1067, + IFFLock.Constructor(Vector3(3455.957f, 7606.811f, 71.50525f), Vector3(0, 0, 0)), + owning_building_guid = 78, + door_guid = 451 + ) + LocalObject( + 1068, + IFFLock.Constructor(Vector3(3460.047f, 7589.189f, 51.50525f), Vector3(0, 0, 180)), + owning_building_guid = 78, + door_guid = 448 + ) + LocalObject( + 1069, + IFFLock.Constructor(Vector3(3460.047f, 7589.189f, 71.50525f), Vector3(0, 0, 180)), + owning_building_guid = 78, + door_guid = 449 + ) LocalObject(1375, Locker.Constructor(Vector3(3461.716f, 7582.963f, 40.03825f)), owning_building_guid = 78) LocalObject(1376, Locker.Constructor(Vector3(3461.751f, 7604.835f, 40.03825f)), owning_building_guid = 78) LocalObject(1377, Locker.Constructor(Vector3(3463.053f, 7582.963f, 40.03825f)), owning_building_guid = 78) @@ -2676,39 +7852,126 @@ object Map07 { // Esamir LocalObject(1380, Locker.Constructor(Vector3(3465.741f, 7604.835f, 40.03825f)), owning_building_guid = 78) LocalObject(1381, Locker.Constructor(Vector3(3467.143f, 7582.963f, 40.03825f)), owning_building_guid = 78) LocalObject(1382, Locker.Constructor(Vector3(3467.143f, 7604.835f, 40.03825f)), owning_building_guid = 78) - LocalObject(1836, Terminal.Constructor(Vector3(3467.445f, 7588.129f, 41.37625f), order_terminal), owning_building_guid = 78) - LocalObject(1837, Terminal.Constructor(Vector3(3467.445f, 7593.853f, 41.37625f), order_terminal), owning_building_guid = 78) - LocalObject(1838, Terminal.Constructor(Vector3(3467.445f, 7599.234f, 41.37625f), order_terminal), owning_building_guid = 78) - LocalObject(2478, SpawnTube.Constructor(Vector3(3456.706f, 7585.742f, 39.52625f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 78) - LocalObject(2479, SpawnTube.Constructor(Vector3(3456.706f, 7602.152f, 39.52625f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 78) - LocalObject(2147, ProximityTerminal.Constructor(Vector3(3444.907f, 7592.725f, 77.61425f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2148, Terminal.Constructor(Vector3(3444.907f, 7592.725f, 77.61425f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(2150, ProximityTerminal.Constructor(Vector3(3444.907f, 7603.17f, 77.61425f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2151, Terminal.Constructor(Vector3(3444.907f, 7603.17f, 77.61425f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(1661, FacilityTurret.Constructor(Vector3(3431.07f, 7583.045f, 68.98625f), manned_turret), owning_building_guid = 78) + LocalObject( + 1836, + Terminal.Constructor(Vector3(3467.445f, 7588.129f, 41.37625f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1837, + Terminal.Constructor(Vector3(3467.445f, 7593.853f, 41.37625f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1838, + Terminal.Constructor(Vector3(3467.445f, 7599.234f, 41.37625f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2478, + SpawnTube.Constructor(Vector3(3456.706f, 7585.742f, 39.52625f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 78 + ) + LocalObject( + 2479, + SpawnTube.Constructor(Vector3(3456.706f, 7602.152f, 39.52625f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 78 + ) + LocalObject( + 2147, + ProximityTerminal.Constructor(Vector3(3444.907f, 7592.725f, 77.61425f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2148, + Terminal.Constructor(Vector3(3444.907f, 7592.725f, 77.61425f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2150, + ProximityTerminal.Constructor(Vector3(3444.907f, 7603.17f, 77.61425f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2151, + Terminal.Constructor(Vector3(3444.907f, 7603.17f, 77.61425f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1661, + FacilityTurret.Constructor(Vector3(3431.07f, 7583.045f, 68.98625f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1661, 5111) - LocalObject(1665, FacilityTurret.Constructor(Vector3(3469.497f, 7612.957f, 68.98625f), manned_turret), owning_building_guid = 78) + LocalObject( + 1665, + FacilityTurret.Constructor(Vector3(3469.497f, 7612.957f, 68.98625f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1665, 5112) - LocalObject(2276, Painbox.Constructor(Vector3(3450.454f, 7590.849f, 42.06375f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2277, Painbox.Constructor(Vector3(3462.923f, 7587.54f, 40.14425f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2278, Painbox.Constructor(Vector3(3463.113f, 7600.022f, 40.14425f), painbox_radius_continuous), owning_building_guid = 78) + LocalObject( + 2276, + Painbox.Constructor(Vector3(3450.454f, 7590.849f, 42.06375f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2277, + Painbox.Constructor(Vector3(3462.923f, 7587.54f, 40.14425f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2278, + Painbox.Constructor(Vector3(3463.113f, 7600.022f, 40.14425f), painbox_radius_continuous), + owning_building_guid = 78 + ) } Building27() def Building27(): Unit = { // Name: SW_Oshur_Warpgate_Tower Type: tower_c GUID: 79, MapID: 27 - LocalBuilding("SW_Oshur_Warpgate_Tower", 79, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4872f, 3408f, 58.76949f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2540, CaptureTerminal.Constructor(Vector3(4888.587f, 3407.897f, 68.76849f), secondary_capture), owning_building_guid = 79) + LocalBuilding( + "SW_Oshur_Warpgate_Tower", + 79, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4872f, 3408f, 58.76949f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2540, + CaptureTerminal.Constructor(Vector3(4888.587f, 3407.897f, 68.76849f), secondary_capture), + owning_building_guid = 79 + ) LocalObject(521, Door.Constructor(Vector3(4884f, 3400f, 60.29049f)), owning_building_guid = 79) LocalObject(522, Door.Constructor(Vector3(4884f, 3400f, 80.28949f)), owning_building_guid = 79) LocalObject(523, Door.Constructor(Vector3(4884f, 3416f, 60.29049f)), owning_building_guid = 79) LocalObject(524, Door.Constructor(Vector3(4884f, 3416f, 80.28949f)), owning_building_guid = 79) LocalObject(2699, Door.Constructor(Vector3(4883.146f, 3396.794f, 50.10549f)), owning_building_guid = 79) LocalObject(2700, Door.Constructor(Vector3(4883.146f, 3413.204f, 50.10549f)), owning_building_guid = 79) - LocalObject(1120, IFFLock.Constructor(Vector3(4881.957f, 3416.811f, 60.23049f), Vector3(0, 0, 0)), owning_building_guid = 79, door_guid = 523) - LocalObject(1121, IFFLock.Constructor(Vector3(4881.957f, 3416.811f, 80.23049f), Vector3(0, 0, 0)), owning_building_guid = 79, door_guid = 524) - LocalObject(1122, IFFLock.Constructor(Vector3(4886.047f, 3399.189f, 60.23049f), Vector3(0, 0, 180)), owning_building_guid = 79, door_guid = 521) - LocalObject(1123, IFFLock.Constructor(Vector3(4886.047f, 3399.189f, 80.23049f), Vector3(0, 0, 180)), owning_building_guid = 79, door_guid = 522) + LocalObject( + 1120, + IFFLock.Constructor(Vector3(4881.957f, 3416.811f, 60.23049f), Vector3(0, 0, 0)), + owning_building_guid = 79, + door_guid = 523 + ) + LocalObject( + 1121, + IFFLock.Constructor(Vector3(4881.957f, 3416.811f, 80.23049f), Vector3(0, 0, 0)), + owning_building_guid = 79, + door_guid = 524 + ) + LocalObject( + 1122, + IFFLock.Constructor(Vector3(4886.047f, 3399.189f, 60.23049f), Vector3(0, 0, 180)), + owning_building_guid = 79, + door_guid = 521 + ) + LocalObject( + 1123, + IFFLock.Constructor(Vector3(4886.047f, 3399.189f, 80.23049f), Vector3(0, 0, 180)), + owning_building_guid = 79, + door_guid = 522 + ) LocalObject(1451, Locker.Constructor(Vector3(4887.716f, 3392.963f, 48.76349f)), owning_building_guid = 79) LocalObject(1452, Locker.Constructor(Vector3(4887.751f, 3414.835f, 48.76349f)), owning_building_guid = 79) LocalObject(1453, Locker.Constructor(Vector3(4889.053f, 3392.963f, 48.76349f)), owning_building_guid = 79) @@ -2717,39 +7980,126 @@ object Map07 { // Esamir LocalObject(1456, Locker.Constructor(Vector3(4891.741f, 3414.835f, 48.76349f)), owning_building_guid = 79) LocalObject(1457, Locker.Constructor(Vector3(4893.143f, 3392.963f, 48.76349f)), owning_building_guid = 79) LocalObject(1458, Locker.Constructor(Vector3(4893.143f, 3414.835f, 48.76349f)), owning_building_guid = 79) - LocalObject(1868, Terminal.Constructor(Vector3(4893.445f, 3398.129f, 50.10149f), order_terminal), owning_building_guid = 79) - LocalObject(1869, Terminal.Constructor(Vector3(4893.445f, 3403.853f, 50.10149f), order_terminal), owning_building_guid = 79) - LocalObject(1870, Terminal.Constructor(Vector3(4893.445f, 3409.234f, 50.10149f), order_terminal), owning_building_guid = 79) - LocalObject(2497, SpawnTube.Constructor(Vector3(4882.706f, 3395.742f, 48.2515f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 79) - LocalObject(2498, SpawnTube.Constructor(Vector3(4882.706f, 3412.152f, 48.2515f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 79) - LocalObject(2153, ProximityTerminal.Constructor(Vector3(4870.907f, 3402.725f, 86.33949f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2154, Terminal.Constructor(Vector3(4870.907f, 3402.725f, 86.33949f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(2156, ProximityTerminal.Constructor(Vector3(4870.907f, 3413.17f, 86.33949f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2157, Terminal.Constructor(Vector3(4870.907f, 3413.17f, 86.33949f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(1689, FacilityTurret.Constructor(Vector3(4857.07f, 3393.045f, 77.71149f), manned_turret), owning_building_guid = 79) + LocalObject( + 1868, + Terminal.Constructor(Vector3(4893.445f, 3398.129f, 50.10149f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1869, + Terminal.Constructor(Vector3(4893.445f, 3403.853f, 50.10149f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1870, + Terminal.Constructor(Vector3(4893.445f, 3409.234f, 50.10149f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2497, + SpawnTube.Constructor(Vector3(4882.706f, 3395.742f, 48.2515f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 79 + ) + LocalObject( + 2498, + SpawnTube.Constructor(Vector3(4882.706f, 3412.152f, 48.2515f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 79 + ) + LocalObject( + 2153, + ProximityTerminal.Constructor(Vector3(4870.907f, 3402.725f, 86.33949f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2154, + Terminal.Constructor(Vector3(4870.907f, 3402.725f, 86.33949f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2156, + ProximityTerminal.Constructor(Vector3(4870.907f, 3413.17f, 86.33949f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2157, + Terminal.Constructor(Vector3(4870.907f, 3413.17f, 86.33949f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1689, + FacilityTurret.Constructor(Vector3(4857.07f, 3393.045f, 77.71149f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1689, 5113) - LocalObject(1690, FacilityTurret.Constructor(Vector3(4895.497f, 3422.957f, 77.71149f), manned_turret), owning_building_guid = 79) + LocalObject( + 1690, + FacilityTurret.Constructor(Vector3(4895.497f, 3422.957f, 77.71149f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1690, 5114) - LocalObject(2291, Painbox.Constructor(Vector3(4876.454f, 3400.849f, 50.78899f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2292, Painbox.Constructor(Vector3(4888.923f, 3397.54f, 48.86949f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2293, Painbox.Constructor(Vector3(4889.113f, 3410.022f, 48.86949f), painbox_radius_continuous), owning_building_guid = 79) + LocalObject( + 2291, + Painbox.Constructor(Vector3(4876.454f, 3400.849f, 50.78899f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2292, + Painbox.Constructor(Vector3(4888.923f, 3397.54f, 48.86949f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2293, + Painbox.Constructor(Vector3(4889.113f, 3410.022f, 48.86949f), painbox_radius_continuous), + owning_building_guid = 79 + ) } Building24() def Building24(): Unit = { // Name: E_Dagur_Tower Type: tower_c GUID: 80, MapID: 24 - LocalBuilding("E_Dagur_Tower", 80, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4994f, 5868f, 50.79501f), Vector3(0f, 0f, 41f), tower_c))) - LocalObject(2542, CaptureTerminal.Constructor(Vector3(5006.586f, 5878.804f, 60.79401f), secondary_capture), owning_building_guid = 80) + LocalBuilding( + "E_Dagur_Tower", + 80, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4994f, 5868f, 50.79501f), Vector3(0f, 0f, 41f), tower_c) + ) + ) + LocalObject( + 2542, + CaptureTerminal.Constructor(Vector3(5006.586f, 5878.804f, 60.79401f), secondary_capture), + owning_building_guid = 80 + ) LocalObject(534, Door.Constructor(Vector3(4997.808f, 5881.91f, 52.31601f)), owning_building_guid = 80) LocalObject(535, Door.Constructor(Vector3(4997.808f, 5881.91f, 72.315f)), owning_building_guid = 80) LocalObject(536, Door.Constructor(Vector3(5008.305f, 5869.835f, 52.31601f)), owning_building_guid = 80) LocalObject(537, Door.Constructor(Vector3(5008.305f, 5869.835f, 72.315f)), owning_building_guid = 80) LocalObject(2703, Door.Constructor(Vector3(4998.998f, 5879.24f, 42.131f)), owning_building_guid = 80) LocalObject(2704, Door.Constructor(Vector3(5009.764f, 5866.855f, 42.131f)), owning_building_guid = 80) - LocalObject(1131, IFFLock.Constructor(Vector3(4995.734f, 5881.182f, 52.256f), Vector3(0, 0, 319)), owning_building_guid = 80, door_guid = 534) - LocalObject(1132, IFFLock.Constructor(Vector3(4995.734f, 5881.182f, 72.256f), Vector3(0, 0, 319)), owning_building_guid = 80, door_guid = 535) - LocalObject(1134, IFFLock.Constructor(Vector3(5010.382f, 5870.566f, 52.256f), Vector3(0, 0, 139)), owning_building_guid = 80, door_guid = 536) - LocalObject(1135, IFFLock.Constructor(Vector3(5010.382f, 5870.566f, 72.256f), Vector3(0, 0, 139)), owning_building_guid = 80, door_guid = 537) + LocalObject( + 1131, + IFFLock.Constructor(Vector3(4995.734f, 5881.182f, 52.256f), Vector3(0, 0, 319)), + owning_building_guid = 80, + door_guid = 534 + ) + LocalObject( + 1132, + IFFLock.Constructor(Vector3(4995.734f, 5881.182f, 72.256f), Vector3(0, 0, 319)), + owning_building_guid = 80, + door_guid = 535 + ) + LocalObject( + 1134, + IFFLock.Constructor(Vector3(5010.382f, 5870.566f, 52.256f), Vector3(0, 0, 139)), + owning_building_guid = 80, + door_guid = 536 + ) + LocalObject( + 1135, + IFFLock.Constructor(Vector3(5010.382f, 5870.566f, 72.256f), Vector3(0, 0, 139)), + owning_building_guid = 80, + door_guid = 537 + ) LocalObject(1467, Locker.Constructor(Vector3(5001.403f, 5883.492f, 40.78901f)), owning_building_guid = 80) LocalObject(1468, Locker.Constructor(Vector3(5002.412f, 5884.369f, 40.78901f)), owning_building_guid = 80) LocalObject(1469, Locker.Constructor(Vector3(5004.415f, 5886.11f, 40.78901f)), owning_building_guid = 80) @@ -2758,34 +8108,100 @@ object Map07 { // Esamir LocalObject(1472, Locker.Constructor(Vector3(5016.735f, 5867.839f, 40.78901f)), owning_building_guid = 80) LocalObject(1473, Locker.Constructor(Vector3(5018.764f, 5869.603f, 40.78901f)), owning_building_guid = 80) LocalObject(1474, Locker.Constructor(Vector3(5019.822f, 5870.522f, 40.78901f)), owning_building_guid = 80) - LocalObject(1875, Terminal.Constructor(Vector3(5009.375f, 5883f, 42.12701f), order_terminal), owning_building_guid = 80) - LocalObject(1876, Terminal.Constructor(Vector3(5012.905f, 5878.939f, 42.12701f), order_terminal), owning_building_guid = 80) - LocalObject(1877, Terminal.Constructor(Vector3(5016.661f, 5874.62f, 42.12701f), order_terminal), owning_building_guid = 80) - LocalObject(2501, SpawnTube.Constructor(Vector3(4999.356f, 5878.157f, 40.27701f), respawn_tube_tower, Vector3(0, 0, 319)), owning_building_guid = 80) - LocalObject(2502, SpawnTube.Constructor(Vector3(5010.122f, 5865.772f, 40.27701f), respawn_tube_tower, Vector3(0, 0, 319)), owning_building_guid = 80) - LocalObject(2159, ProximityTerminal.Constructor(Vector3(4989.783f, 5871.185f, 78.36501f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2160, Terminal.Constructor(Vector3(4989.783f, 5871.185f, 78.36501f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(2162, ProximityTerminal.Constructor(Vector3(4996.636f, 5863.302f, 78.36501f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2163, Terminal.Constructor(Vector3(4996.636f, 5863.302f, 78.36501f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(1695, FacilityTurret.Constructor(Vector3(4992.543f, 5846.918f, 69.73701f), manned_turret), owning_building_guid = 80) + LocalObject( + 1875, + Terminal.Constructor(Vector3(5009.375f, 5883f, 42.12701f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1876, + Terminal.Constructor(Vector3(5012.905f, 5878.939f, 42.12701f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1877, + Terminal.Constructor(Vector3(5016.661f, 5874.62f, 42.12701f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2501, + SpawnTube.Constructor(Vector3(4999.356f, 5878.157f, 40.27701f), respawn_tube_tower, Vector3(0, 0, 319)), + owning_building_guid = 80 + ) + LocalObject( + 2502, + SpawnTube.Constructor(Vector3(5010.122f, 5865.772f, 40.27701f), respawn_tube_tower, Vector3(0, 0, 319)), + owning_building_guid = 80 + ) + LocalObject( + 2159, + ProximityTerminal.Constructor(Vector3(4989.783f, 5871.185f, 78.36501f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2160, + Terminal.Constructor(Vector3(4989.783f, 5871.185f, 78.36501f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2162, + ProximityTerminal.Constructor(Vector3(4996.636f, 5863.302f, 78.36501f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2163, + Terminal.Constructor(Vector3(4996.636f, 5863.302f, 78.36501f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1695, + FacilityTurret.Constructor(Vector3(4992.543f, 5846.918f, 69.73701f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1695, 5115) - LocalObject(1696, FacilityTurret.Constructor(Vector3(5001.921f, 5894.704f, 69.73701f), manned_turret), owning_building_guid = 80) + LocalObject( + 1696, + FacilityTurret.Constructor(Vector3(5001.921f, 5894.704f, 69.73701f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1696, 5116) - LocalObject(2297, Painbox.Constructor(Vector3(5002.053f, 5865.525f, 42.81451f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2298, Painbox.Constructor(Vector3(5005.589f, 5880.753f, 40.895f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2299, Painbox.Constructor(Vector3(5013.635f, 5871.208f, 40.895f), painbox_radius_continuous), owning_building_guid = 80) + LocalObject( + 2297, + Painbox.Constructor(Vector3(5002.053f, 5865.525f, 42.81451f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2298, + Painbox.Constructor(Vector3(5005.589f, 5880.753f, 40.895f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2299, + Painbox.Constructor(Vector3(5013.635f, 5871.208f, 40.895f), painbox_radius_continuous), + owning_building_guid = 80 + ) } Building1() def Building1(): Unit = { // Name: WG_Esamir_to_NCSanc Type: warpgate GUID: 81, MapID: 1 - LocalBuilding("WG_Esamir_to_NCSanc", 81, 1, FoundationBuilder(WarpGate.Structure(Vector3(1388f, 6382f, 64.32691f)))) + LocalBuilding( + "WG_Esamir_to_NCSanc", + 81, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(1388f, 6382f, 64.32691f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Esamir_to_Searhus Type: warpgate GUID: 82, MapID: 2 - LocalBuilding("WG_Esamir_to_Searhus", 82, 2, FoundationBuilder(WarpGate.Structure(Vector3(2658f, 2902f, 85.65936f)))) + LocalBuilding( + "WG_Esamir_to_Searhus", + 82, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(2658f, 2902f, 85.65936f))) + ) } Building4() @@ -2797,7 +8213,12 @@ object Map07 { // Esamir Building3() def Building3(): Unit = { // Name: WG_Esamir_to_VSSanc Type: warpgate GUID: 84, MapID: 3 - LocalBuilding("WG_Esamir_to_VSSanc", 84, 3, FoundationBuilder(WarpGate.Structure(Vector3(6372f, 1068f, 77.9046f)))) + LocalBuilding( + "WG_Esamir_to_VSSanc", + 84, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(6372f, 1068f, 77.9046f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map08.scala b/pslogin/src/main/scala/zonemaps/Map08.scala index 8079056e..fdbc152a 100644 --- a/pslogin/src/main/scala/zonemaps/Map08.scala +++ b/pslogin/src/main/scala/zonemaps/Map08.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map08 { // Oshur Prime Building10() def Building10(): Unit = { // Name: Mithra Type: amp_station GUID: 1, MapID: 10 - LocalBuilding("Mithra", 1, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2556f, 4528f, 43.54625f), Vector3(0f, 0f, 179f), amp_station))) - LocalObject(158, CaptureTerminal.Constructor(Vector3(2559.335f, 4527.939f, 55.05425f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Mithra", + 1, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2556f, 4528f, 43.54625f), + Vector3(0f, 0f, 179f), + amp_station + ) + ) + ) + LocalObject( + 158, + CaptureTerminal.Constructor(Vector3(2559.335f, 4527.939f, 55.05425f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(128, Door.Constructor(Vector3(2555.667f, 4521.2f, 56.44825f)), owning_building_guid = 1) LocalObject(129, Door.Constructor(Vector3(2555.908f, 4534.808f, 56.44825f)), owning_building_guid = 1) LocalObject(247, Door.Constructor(Vector3(2496.583f, 4573.545f, 45.29725f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map08 { // Oshur Prime LocalObject(2013, Door.Constructor(Vector3(2575.249f, 4523.348f, 38.10025f)), owning_building_guid = 1) LocalObject(2014, Door.Constructor(Vector3(2575.376f, 4530.636f, 38.10025f)), owning_building_guid = 1) LocalObject(2015, Door.Constructor(Vector3(2575.503f, 4537.928f, 38.10025f)), owning_building_guid = 1) - LocalObject(697, IFFLock.Constructor(Vector3(2524.036f, 4525.492f, 45.22625f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 661) - LocalObject(720, IFFLock.Constructor(Vector3(2549.889f, 4495.469f, 55.20725f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 252) - LocalObject(721, IFFLock.Constructor(Vector3(2550.956f, 4556.601f, 55.20725f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 253) - LocalObject(722, IFFLock.Constructor(Vector3(2554.592f, 4564.33f, 50.20825f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 255) - LocalObject(723, IFFLock.Constructor(Vector3(2557.177f, 4541.554f, 30.08225f), Vector3(0, 0, 91)), owning_building_guid = 1, door_guid = 491) - LocalObject(724, IFFLock.Constructor(Vector3(2557.41f, 4491.649f, 50.20825f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 254) - LocalObject(725, IFFLock.Constructor(Vector3(2560.645f, 4499.375f, 55.20725f), Vector3(0, 0, 91)), owning_building_guid = 1, door_guid = 257) - LocalObject(726, IFFLock.Constructor(Vector3(2561.712f, 4560.502f, 55.20725f), Vector3(0, 0, 91)), owning_building_guid = 1, door_guid = 258) - LocalObject(727, IFFLock.Constructor(Vector3(2566.72f, 4544.625f, 37.58225f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 501) - LocalObject(728, IFFLock.Constructor(Vector3(2569.414f, 4518.824f, 37.58225f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 499) - LocalObject(729, IFFLock.Constructor(Vector3(2603.225f, 4529.604f, 30.08225f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 506) - LocalObject(730, IFFLock.Constructor(Vector3(2632.622f, 4445.824f, 45.20625f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 264) + LocalObject( + 697, + IFFLock.Constructor(Vector3(2524.036f, 4525.492f, 45.22625f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 661 + ) + LocalObject( + 720, + IFFLock.Constructor(Vector3(2549.889f, 4495.469f, 55.20725f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 252 + ) + LocalObject( + 721, + IFFLock.Constructor(Vector3(2550.956f, 4556.601f, 55.20725f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 253 + ) + LocalObject( + 722, + IFFLock.Constructor(Vector3(2554.592f, 4564.33f, 50.20825f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 255 + ) + LocalObject( + 723, + IFFLock.Constructor(Vector3(2557.177f, 4541.554f, 30.08225f), Vector3(0, 0, 91)), + owning_building_guid = 1, + door_guid = 491 + ) + LocalObject( + 724, + IFFLock.Constructor(Vector3(2557.41f, 4491.649f, 50.20825f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 254 + ) + LocalObject( + 725, + IFFLock.Constructor(Vector3(2560.645f, 4499.375f, 55.20725f), Vector3(0, 0, 91)), + owning_building_guid = 1, + door_guid = 257 + ) + LocalObject( + 726, + IFFLock.Constructor(Vector3(2561.712f, 4560.502f, 55.20725f), Vector3(0, 0, 91)), + owning_building_guid = 1, + door_guid = 258 + ) + LocalObject( + 727, + IFFLock.Constructor(Vector3(2566.72f, 4544.625f, 37.58225f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 501 + ) + LocalObject( + 728, + IFFLock.Constructor(Vector3(2569.414f, 4518.824f, 37.58225f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 499 + ) + LocalObject( + 729, + IFFLock.Constructor(Vector3(2603.225f, 4529.604f, 30.08225f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 506 + ) + LocalObject( + 730, + IFFLock.Constructor(Vector3(2632.622f, 4445.824f, 45.20625f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 264 + ) LocalObject(908, Locker.Constructor(Vector3(2541.167f, 4522.093f, 28.74625f)), owning_building_guid = 1) LocalObject(909, Locker.Constructor(Vector3(2542.503f, 4522.07f, 28.74625f)), owning_building_guid = 1) LocalObject(910, Locker.Constructor(Vector3(2543.839f, 4522.046f, 28.74625f)), owning_building_guid = 1) @@ -94,64 +170,249 @@ object Map08 { // Oshur Prime LocalObject(917, Locker.Constructor(Vector3(2562.367f, 4541.75f, 36.50725f)), owning_building_guid = 1) LocalObject(918, Locker.Constructor(Vector3(2563.514f, 4541.73f, 36.50725f)), owning_building_guid = 1) LocalObject(919, Locker.Constructor(Vector3(2564.677f, 4541.709f, 36.50725f)), owning_building_guid = 1) - LocalObject(1344, Terminal.Constructor(Vector3(2555.61f, 4505.526f, 45.07525f), order_terminal), owning_building_guid = 1) - LocalObject(1345, Terminal.Constructor(Vector3(2556.394f, 4550.474f, 45.07525f), order_terminal), owning_building_guid = 1) - LocalObject(1346, Terminal.Constructor(Vector3(2561.364f, 4528.979f, 37.83625f), order_terminal), owning_building_guid = 1) - LocalObject(1347, Terminal.Constructor(Vector3(2561.43f, 4532.767f, 37.83625f), order_terminal), owning_building_guid = 1) - LocalObject(1348, Terminal.Constructor(Vector3(2561.495f, 4536.498f, 37.83625f), order_terminal), owning_building_guid = 1) - LocalObject(1349, Terminal.Constructor(Vector3(2578.464f, 4527.612f, 45.07525f), order_terminal), owning_building_guid = 1) - LocalObject(1952, Terminal.Constructor(Vector3(2561.582f, 4532.403f, 50.27425f), spawn_terminal), owning_building_guid = 1) - LocalObject(1953, Terminal.Constructor(Vector3(2574.995f, 4525.845f, 38.38025f), spawn_terminal), owning_building_guid = 1) - LocalObject(1954, Terminal.Constructor(Vector3(2575.125f, 4533.132f, 38.38025f), spawn_terminal), owning_building_guid = 1) - LocalObject(1955, Terminal.Constructor(Vector3(2575.249f, 4540.423f, 38.38025f), spawn_terminal), owning_building_guid = 1) - LocalObject(1956, Terminal.Constructor(Vector3(2579.669f, 4512.175f, 30.30325f), spawn_terminal), owning_building_guid = 1) - LocalObject(1957, Terminal.Constructor(Vector3(2603.247f, 4487.76f, 37.80325f), spawn_terminal), owning_building_guid = 1) - LocalObject(2132, Terminal.Constructor(Vector3(2602.478f, 4444.703f, 45.64825f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1310, VehicleSpawnPad.Constructor(Vector3(2602.626f, 4458.341f, 41.49125f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 1, terminal_guid = 2132) + LocalObject( + 1344, + Terminal.Constructor(Vector3(2555.61f, 4505.526f, 45.07525f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1345, + Terminal.Constructor(Vector3(2556.394f, 4550.474f, 45.07525f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1346, + Terminal.Constructor(Vector3(2561.364f, 4528.979f, 37.83625f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1347, + Terminal.Constructor(Vector3(2561.43f, 4532.767f, 37.83625f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1348, + Terminal.Constructor(Vector3(2561.495f, 4536.498f, 37.83625f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1349, + Terminal.Constructor(Vector3(2578.464f, 4527.612f, 45.07525f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(2561.582f, 4532.403f, 50.27425f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1953, + Terminal.Constructor(Vector3(2574.995f, 4525.845f, 38.38025f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1954, + Terminal.Constructor(Vector3(2575.125f, 4533.132f, 38.38025f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(2575.249f, 4540.423f, 38.38025f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1956, + Terminal.Constructor(Vector3(2579.669f, 4512.175f, 30.30325f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1957, + Terminal.Constructor(Vector3(2603.247f, 4487.76f, 37.80325f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2132, + Terminal.Constructor(Vector3(2602.478f, 4444.703f, 45.64825f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1310, + VehicleSpawnPad.Constructor(Vector3(2602.626f, 4458.341f, 41.49125f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 1, + terminal_guid = 2132 + ) LocalObject(1847, ResourceSilo.Constructor(Vector3(2504.855f, 4614.401f, 50.78125f)), owning_building_guid = 1) - LocalObject(1860, SpawnTube.Constructor(Vector3(2575.707f, 4524.394f, 36.24625f), Vector3(0, 0, 181)), owning_building_guid = 1) - LocalObject(1861, SpawnTube.Constructor(Vector3(2575.834f, 4531.68f, 36.24625f), Vector3(0, 0, 181)), owning_building_guid = 1) - LocalObject(1862, SpawnTube.Constructor(Vector3(2575.961f, 4538.97f, 36.24625f), Vector3(0, 0, 181)), owning_building_guid = 1) - LocalObject(1324, ProximityTerminal.Constructor(Vector3(2547.459f, 4522.528f, 28.74625f), medical_terminal), owning_building_guid = 1) - LocalObject(1325, ProximityTerminal.Constructor(Vector3(2578.045f, 4527.621f, 48.74625f), medical_terminal), owning_building_guid = 1) - LocalObject(1516, ProximityTerminal.Constructor(Vector3(2506.979f, 4548.692f, 52.05125f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1517, Terminal.Constructor(Vector3(2506.979f, 4548.692f, 52.05125f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1519, ProximityTerminal.Constructor(Vector3(2528.405f, 4471.061f, 54.21225f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1520, Terminal.Constructor(Vector3(2528.405f, 4471.061f, 54.21225f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1522, ProximityTerminal.Constructor(Vector3(2548.986f, 4601.628f, 52.07425f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1523, Terminal.Constructor(Vector3(2548.986f, 4601.628f, 52.07425f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1525, ProximityTerminal.Constructor(Vector3(2612.894f, 4507.233f, 52.05125f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1526, Terminal.Constructor(Vector3(2612.894f, 4507.233f, 52.05125f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1782, ProximityTerminal.Constructor(Vector3(2493.678f, 4528.694f, 42.94625f), repair_silo), owning_building_guid = 1) - LocalObject(1783, Terminal.Constructor(Vector3(2493.678f, 4528.694f, 42.94625f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1786, ProximityTerminal.Constructor(Vector3(2626.082f, 4526.573f, 42.94625f), repair_silo), owning_building_guid = 1) - LocalObject(1787, Terminal.Constructor(Vector3(2626.082f, 4526.573f, 42.94625f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1232, FacilityTurret.Constructor(Vector3(2480.226f, 4487.869f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1860, + SpawnTube.Constructor(Vector3(2575.707f, 4524.394f, 36.24625f), Vector3(0, 0, 181)), + owning_building_guid = 1 + ) + LocalObject( + 1861, + SpawnTube.Constructor(Vector3(2575.834f, 4531.68f, 36.24625f), Vector3(0, 0, 181)), + owning_building_guid = 1 + ) + LocalObject( + 1862, + SpawnTube.Constructor(Vector3(2575.961f, 4538.97f, 36.24625f), Vector3(0, 0, 181)), + owning_building_guid = 1 + ) + LocalObject( + 1324, + ProximityTerminal.Constructor(Vector3(2547.459f, 4522.528f, 28.74625f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1325, + ProximityTerminal.Constructor(Vector3(2578.045f, 4527.621f, 48.74625f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1516, + ProximityTerminal.Constructor(Vector3(2506.979f, 4548.692f, 52.05125f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1517, + Terminal.Constructor(Vector3(2506.979f, 4548.692f, 52.05125f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1519, + ProximityTerminal.Constructor(Vector3(2528.405f, 4471.061f, 54.21225f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1520, + Terminal.Constructor(Vector3(2528.405f, 4471.061f, 54.21225f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1522, + ProximityTerminal.Constructor(Vector3(2548.986f, 4601.628f, 52.07425f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1523, + Terminal.Constructor(Vector3(2548.986f, 4601.628f, 52.07425f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1525, + ProximityTerminal.Constructor(Vector3(2612.894f, 4507.233f, 52.05125f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1526, + Terminal.Constructor(Vector3(2612.894f, 4507.233f, 52.05125f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1782, + ProximityTerminal.Constructor(Vector3(2493.678f, 4528.694f, 42.94625f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1783, + Terminal.Constructor(Vector3(2493.678f, 4528.694f, 42.94625f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1786, + ProximityTerminal.Constructor(Vector3(2626.082f, 4526.573f, 42.94625f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 1787, + Terminal.Constructor(Vector3(2626.082f, 4526.573f, 42.94625f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1232, + FacilityTurret.Constructor(Vector3(2480.226f, 4487.869f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1232, 5000) - LocalObject(1233, FacilityTurret.Constructor(Vector3(2481.338f, 4424.458f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1233, + FacilityTurret.Constructor(Vector3(2481.338f, 4424.458f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1233, 5001) - LocalObject(1234, FacilityTurret.Constructor(Vector3(2484.866f, 4626.104f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1234, + FacilityTurret.Constructor(Vector3(2484.866f, 4626.104f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1234, 5002) - LocalObject(1235, FacilityTurret.Constructor(Vector3(2578.734f, 4626.684f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1235, + FacilityTurret.Constructor(Vector3(2578.734f, 4626.684f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1235, 5003) - LocalObject(1236, FacilityTurret.Constructor(Vector3(2634.782f, 4421.77f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1236, + FacilityTurret.Constructor(Vector3(2634.782f, 4421.77f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1236, 5004) - LocalObject(1237, FacilityTurret.Constructor(Vector3(2638.273f, 4623.417f, 52.25425f), manned_turret), owning_building_guid = 1) + LocalObject( + 1237, + FacilityTurret.Constructor(Vector3(2638.273f, 4623.417f, 52.25425f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1237, 5005) LocalObject(1658, Painbox.Constructor(Vector3(2615.96f, 4533.837f, 33.61725f), painbox), owning_building_guid = 1) - LocalObject(1667, Painbox.Constructor(Vector3(2568.418f, 4529.197f, 41.19465f), painbox_continuous), owning_building_guid = 1) - LocalObject(1676, Painbox.Constructor(Vector3(2601.881f, 4531.956f, 30.20525f), painbox_door_radius), owning_building_guid = 1) - LocalObject(1687, Painbox.Constructor(Vector3(2554.464f, 4524.069f, 39.42485f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1688, Painbox.Constructor(Vector3(2567.762f, 4518.509f, 37.51075f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(1689, Painbox.Constructor(Vector3(2568.295f, 4544.852f, 37.44625f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 1667, + Painbox.Constructor(Vector3(2568.418f, 4529.197f, 41.19465f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1676, + Painbox.Constructor(Vector3(2601.881f, 4531.956f, 30.20525f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 1687, + Painbox.Constructor(Vector3(2554.464f, 4524.069f, 39.42485f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1688, + Painbox.Constructor(Vector3(2567.762f, 4518.509f, 37.51075f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 1689, + Painbox.Constructor(Vector3(2568.295f, 4544.852f, 37.44625f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(220, Generator.Constructor(Vector3(2619.615f, 4530.915f, 27.45225f)), owning_building_guid = 1) - LocalObject(211, Terminal.Constructor(Vector3(2611.424f, 4531.011f, 28.74625f), gen_control), owning_building_guid = 1) + LocalObject( + 211, + Terminal.Constructor(Vector3(2611.424f, 4531.011f, 28.74625f), gen_control), + owning_building_guid = 1 + ) } Building36() def Building36(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 36 - LocalBuilding("bunker_gauntlet", 4, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2512f, 4400f, 43.54625f), Vector3(0f, 0f, 180f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 36, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2512f, 4400f, 43.54625f), + Vector3(0f, 0f, 180f), + bunker_gauntlet + ) + ) + ) LocalObject(246, Door.Constructor(Vector3(2487.077f, 4401.901f, 45.06725f)), owning_building_guid = 4) LocalObject(250, Door.Constructor(Vector3(2536.898f, 4401.912f, 45.06725f)), owning_building_guid = 4) } @@ -159,7 +420,19 @@ object Map08 { // Oshur Prime Building35() def Building35(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 35 - LocalBuilding("bunker_gauntlet", 5, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3690f, 2828f, 47.2434f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 35, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3690f, 2828f, 47.2434f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(324, Door.Constructor(Vector3(3688.099f, 2803.077f, 48.7644f)), owning_building_guid = 5) LocalObject(325, Door.Constructor(Vector3(3688.088f, 2852.898f, 48.7644f)), owning_building_guid = 5) } @@ -167,7 +440,19 @@ object Map08 { // Oshur Prime Building37() def Building37(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 37 - LocalBuilding("bunker_gauntlet", 6, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3920f, 4790f, 48.64008f), Vector3(0f, 0f, 360f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 37, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3920f, 4790f, 48.64008f), + Vector3(0f, 0f, 360f), + bunker_gauntlet + ) + ) + ) LocalObject(339, Door.Constructor(Vector3(3895.102f, 4788.088f, 50.16108f)), owning_building_guid = 6) LocalObject(349, Door.Constructor(Vector3(3944.923f, 4788.099f, 50.16108f)), owning_building_guid = 6) } @@ -175,7 +460,19 @@ object Map08 { // Oshur Prime Building38() def Building38(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 38 - LocalBuilding("bunker_gauntlet", 7, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5646f, 3830f, 50.48064f), Vector3(0f, 0f, 225f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 38, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(5646f, 3830f, 50.48064f), + Vector3(0f, 0f, 225f), + bunker_gauntlet + ) + ) + ) LocalObject(449, Door.Constructor(Vector3(5627.033f, 3813.721f, 52.00164f)), owning_building_guid = 7) LocalObject(450, Door.Constructor(Vector3(5662.253f, 3848.958f, 52.00164f)), owning_building_guid = 7) } @@ -183,64 +480,136 @@ object Map08 { // Oshur Prime Building31() def Building31(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 8, MapID: 31 - LocalBuilding("bunker_lg", 8, 31, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2634f, 4650f, 43.54879f), Vector3(0f, 0f, 225f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 8, + 31, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2634f, 4650f, 43.54879f), Vector3(0f, 0f, 225f), bunker_lg) + ) + ) LocalObject(265, Door.Constructor(Vector3(2633.965f, 4646.349f, 45.06979f)), owning_building_guid = 8) } Building30() def Building30(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 30 - LocalBuilding("bunker_lg", 9, 30, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4150f, 2192f, 50.98085f), Vector3(0f, 0f, 90f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 30, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4150f, 2192f, 50.98085f), Vector3(0f, 0f, 90f), bunker_lg) + ) + ) LocalObject(367, Door.Constructor(Vector3(4147.443f, 2194.606f, 52.50185f)), owning_building_guid = 9) } Building32() def Building32(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 32 - LocalBuilding("bunker_lg", 10, 32, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4828f, 4020f, 60.46708f), Vector3(0f, 0f, 270f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 32, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4828f, 4020f, 60.46708f), Vector3(0f, 0f, 270f), bunker_lg) + ) + ) LocalObject(408, Door.Constructor(Vector3(4830.557f, 4017.394f, 61.98808f)), owning_building_guid = 10) } Building28() def Building28(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 11, MapID: 28 - LocalBuilding("bunker_sm", 11, 28, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2466f, 3306f, 32.02363f), Vector3(0f, 0f, 180f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 11, + 28, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2466f, 3306f, 32.02363f), Vector3(0f, 0f, 180f), bunker_sm) + ) + ) LocalObject(245, Door.Constructor(Vector3(2464.775f, 3306.055f, 33.54463f)), owning_building_guid = 11) } Building34() def Building34(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 12, MapID: 34 - LocalBuilding("bunker_sm", 12, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3274f, 4058f, 29.62605f), Vector3(0f, 0f, 135f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 12, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3274f, 4058f, 29.62605f), Vector3(0f, 0f, 135f), bunker_sm) + ) + ) LocalObject(295, Door.Constructor(Vector3(3273.173f, 4058.905f, 31.14705f)), owning_building_guid = 12) } Building29() def Building29(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 13, MapID: 29 - LocalBuilding("bunker_sm", 13, 29, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3436f, 3066f, 49.3685f), Vector3(0f, 0f, 270f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 13, + 29, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3436f, 3066f, 49.3685f), Vector3(0f, 0f, 270f), bunker_sm) + ) + ) LocalObject(296, Door.Constructor(Vector3(3435.945f, 3064.775f, 50.8895f)), owning_building_guid = 13) } Building46() def Building46(): Unit = { // Name: Hvar_Tower Type: bunker_sm GUID: 14, MapID: 46 - LocalBuilding("Hvar_Tower", 14, 46, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3882f, 4388f, 37.29616f), Vector3(0f, 0f, 90f), bunker_sm))) + LocalBuilding( + "Hvar_Tower", + 14, + 46, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3882f, 4388f, 37.29616f), Vector3(0f, 0f, 90f), bunker_sm) + ) + ) LocalObject(336, Door.Constructor(Vector3(3882.055f, 4389.225f, 38.81716f)), owning_building_guid = 14) } Building33() def Building33(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 15, MapID: 33 - LocalBuilding("bunker_sm", 15, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4920f, 5414f, 53.96307f), Vector3(0f, 0f, 135f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 15, + 33, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4920f, 5414f, 53.96307f), Vector3(0f, 0f, 135f), bunker_sm) + ) + ) LocalObject(413, Door.Constructor(Vector3(4919.173f, 5414.905f, 55.48407f)), owning_building_guid = 15) } Building7() def Building7(): Unit = { // Name: Hvar Type: comm_station GUID: 16, MapID: 7 - LocalBuilding("Hvar", 16, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3908f, 4688f, 48.62961f), Vector3(0f, 0f, 179f), comm_station))) - LocalObject(161, CaptureTerminal.Constructor(Vector3(3862.579f, 4612.047f, 31.32961f), capture_terminal), owning_building_guid = 16) + LocalBuilding( + "Hvar", + 16, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3908f, 4688f, 48.62961f), + Vector3(0f, 0f, 179f), + comm_station + ) + ) + ) + LocalObject( + 161, + CaptureTerminal.Constructor(Vector3(3862.579f, 4612.047f, 31.32961f), capture_terminal), + owning_building_guid = 16 + ) LocalObject(332, Door.Constructor(Vector3(3847.677f, 4681.552f, 50.38061f)), owning_building_guid = 16) LocalObject(333, Door.Constructor(Vector3(3847.995f, 4699.742f, 58.34461f)), owning_building_guid = 16) LocalObject(334, Door.Constructor(Vector3(3874.678f, 4612.57f, 50.35061f)), owning_building_guid = 16) @@ -282,18 +651,78 @@ object Map08 { // Oshur Prime LocalObject(2036, Door.Constructor(Vector3(3870.838f, 4660.329f, 40.68361f)), owning_building_guid = 16) LocalObject(2037, Door.Constructor(Vector3(3870.966f, 4667.617f, 40.68361f)), owning_building_guid = 16) LocalObject(2038, Door.Constructor(Vector3(3871.093f, 4674.909f, 40.68361f)), owning_building_guid = 16) - LocalObject(700, IFFLock.Constructor(Vector3(3887.565f, 4689.227f, 50.28161f), Vector3(0, 0, 271)), owning_building_guid = 16, door_guid = 664) - LocalObject(785, IFFLock.Constructor(Vector3(3852.766f, 4678.535f, 32.66561f), Vector3(0, 0, 91)), owning_building_guid = 16, door_guid = 554) - LocalObject(786, IFFLock.Constructor(Vector3(3857.98f, 4619.291f, 32.66561f), Vector3(0, 0, 271)), owning_building_guid = 16, door_guid = 555) - LocalObject(787, IFFLock.Constructor(Vector3(3862.31f, 4681.606f, 40.16561f), Vector3(0, 0, 1)), owning_building_guid = 16, door_guid = 557) - LocalObject(788, IFFLock.Constructor(Vector3(3865.006f, 4655.936f, 40.16561f), Vector3(0, 0, 181)), owning_building_guid = 16, door_guid = 556) - LocalObject(789, IFFLock.Constructor(Vector3(3867.66f, 4622.266f, 32.66561f), Vector3(0, 0, 91)), owning_building_guid = 16, door_guid = 558) - LocalObject(790, IFFLock.Constructor(Vector3(3873.865f, 4610.551f, 50.27961f), Vector3(0, 0, 271)), owning_building_guid = 16, door_guid = 334) - LocalObject(792, IFFLock.Constructor(Vector3(3900.501f, 4670.173f, 55.29061f), Vector3(0, 0, 91)), owning_building_guid = 16, door_guid = 341) - LocalObject(793, IFFLock.Constructor(Vector3(3913.348f, 4697.397f, 62.71061f), Vector3(0, 0, 91)), owning_building_guid = 16, door_guid = 345) - LocalObject(794, IFFLock.Constructor(Vector3(3926.023f, 4664.622f, 32.66561f), Vector3(0, 0, 1)), owning_building_guid = 16, door_guid = 573) - LocalObject(795, IFFLock.Constructor(Vector3(3926.117f, 4697.265f, 55.29061f), Vector3(0, 0, 1)), owning_building_guid = 16, door_guid = 347) - LocalObject(796, IFFLock.Constructor(Vector3(3930.02f, 4686.51f, 55.29061f), Vector3(0, 0, 181)), owning_building_guid = 16, door_guid = 346) + LocalObject( + 700, + IFFLock.Constructor(Vector3(3887.565f, 4689.227f, 50.28161f), Vector3(0, 0, 271)), + owning_building_guid = 16, + door_guid = 664 + ) + LocalObject( + 785, + IFFLock.Constructor(Vector3(3852.766f, 4678.535f, 32.66561f), Vector3(0, 0, 91)), + owning_building_guid = 16, + door_guid = 554 + ) + LocalObject( + 786, + IFFLock.Constructor(Vector3(3857.98f, 4619.291f, 32.66561f), Vector3(0, 0, 271)), + owning_building_guid = 16, + door_guid = 555 + ) + LocalObject( + 787, + IFFLock.Constructor(Vector3(3862.31f, 4681.606f, 40.16561f), Vector3(0, 0, 1)), + owning_building_guid = 16, + door_guid = 557 + ) + LocalObject( + 788, + IFFLock.Constructor(Vector3(3865.006f, 4655.936f, 40.16561f), Vector3(0, 0, 181)), + owning_building_guid = 16, + door_guid = 556 + ) + LocalObject( + 789, + IFFLock.Constructor(Vector3(3867.66f, 4622.266f, 32.66561f), Vector3(0, 0, 91)), + owning_building_guid = 16, + door_guid = 558 + ) + LocalObject( + 790, + IFFLock.Constructor(Vector3(3873.865f, 4610.551f, 50.27961f), Vector3(0, 0, 271)), + owning_building_guid = 16, + door_guid = 334 + ) + LocalObject( + 792, + IFFLock.Constructor(Vector3(3900.501f, 4670.173f, 55.29061f), Vector3(0, 0, 91)), + owning_building_guid = 16, + door_guid = 341 + ) + LocalObject( + 793, + IFFLock.Constructor(Vector3(3913.348f, 4697.397f, 62.71061f), Vector3(0, 0, 91)), + owning_building_guid = 16, + door_guid = 345 + ) + LocalObject( + 794, + IFFLock.Constructor(Vector3(3926.023f, 4664.622f, 32.66561f), Vector3(0, 0, 1)), + owning_building_guid = 16, + door_guid = 573 + ) + LocalObject( + 795, + IFFLock.Constructor(Vector3(3926.117f, 4697.265f, 55.29061f), Vector3(0, 0, 1)), + owning_building_guid = 16, + door_guid = 347 + ) + LocalObject( + 796, + IFFLock.Constructor(Vector3(3930.02f, 4686.51f, 55.29061f), Vector3(0, 0, 181)), + owning_building_guid = 16, + door_guid = 346 + ) LocalObject(1009, Locker.Constructor(Vector3(3836.756f, 4659.074f, 31.32961f)), owning_building_guid = 16) LocalObject(1010, Locker.Constructor(Vector3(3838.093f, 4659.051f, 31.32961f)), owning_building_guid = 16) LocalObject(1011, Locker.Constructor(Vector3(3839.429f, 4659.027f, 31.32961f)), owning_building_guid = 16) @@ -306,60 +735,233 @@ object Map08 { // Oshur Prime LocalObject(1018, Locker.Constructor(Vector3(3857.957f, 4678.731f, 39.09061f)), owning_building_guid = 16) LocalObject(1019, Locker.Constructor(Vector3(3859.104f, 4678.711f, 39.09061f)), owning_building_guid = 16) LocalObject(1020, Locker.Constructor(Vector3(3860.267f, 4678.69f, 39.09061f)), owning_building_guid = 16) - LocalObject(1383, Terminal.Constructor(Vector3(3856.954f, 4665.959f, 40.41961f), order_terminal), owning_building_guid = 16) - LocalObject(1384, Terminal.Constructor(Vector3(3857.02f, 4669.748f, 40.41961f), order_terminal), owning_building_guid = 16) - LocalObject(1385, Terminal.Constructor(Vector3(3857.085f, 4673.479f, 40.41961f), order_terminal), owning_building_guid = 16) - LocalObject(1386, Terminal.Constructor(Vector3(3905.759f, 4693.215f, 62.58461f), order_terminal), owning_building_guid = 16) - LocalObject(1387, Terminal.Constructor(Vector3(3905.836f, 4697.609f, 62.58461f), order_terminal), owning_building_guid = 16) - LocalObject(1388, Terminal.Constructor(Vector3(3908.055f, 4695.453f, 62.58461f), order_terminal), owning_building_guid = 16) - LocalObject(1389, Terminal.Constructor(Vector3(3918.022f, 4710.921f, 55.18961f), order_terminal), owning_building_guid = 16) - LocalObject(1974, Terminal.Constructor(Vector3(3870.585f, 4662.826f, 40.96361f), spawn_terminal), owning_building_guid = 16) - LocalObject(1975, Terminal.Constructor(Vector3(3870.715f, 4670.113f, 40.96361f), spawn_terminal), owning_building_guid = 16) - LocalObject(1976, Terminal.Constructor(Vector3(3870.838f, 4677.404f, 40.96361f), spawn_terminal), owning_building_guid = 16) - LocalObject(1977, Terminal.Constructor(Vector3(3907.894f, 4648.054f, 42.88661f), spawn_terminal), owning_building_guid = 16) - LocalObject(1978, Terminal.Constructor(Vector3(3909.909f, 4712.001f, 55.44661f), spawn_terminal), owning_building_guid = 16) - LocalObject(1979, Terminal.Constructor(Vector3(3923.905f, 4679.13f, 32.88661f), spawn_terminal), owning_building_guid = 16) - LocalObject(2135, Terminal.Constructor(Vector3(3854.594f, 4634.15f, 51.51661f), vehicle_terminal_combined), owning_building_guid = 16) - LocalObject(1313, VehicleSpawnPad.Constructor(Vector3(3868.22f, 4634.066f, 47.35861f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 16, terminal_guid = 2135) + LocalObject( + 1383, + Terminal.Constructor(Vector3(3856.954f, 4665.959f, 40.41961f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1384, + Terminal.Constructor(Vector3(3857.02f, 4669.748f, 40.41961f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1385, + Terminal.Constructor(Vector3(3857.085f, 4673.479f, 40.41961f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1386, + Terminal.Constructor(Vector3(3905.759f, 4693.215f, 62.58461f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1387, + Terminal.Constructor(Vector3(3905.836f, 4697.609f, 62.58461f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1388, + Terminal.Constructor(Vector3(3908.055f, 4695.453f, 62.58461f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1389, + Terminal.Constructor(Vector3(3918.022f, 4710.921f, 55.18961f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1974, + Terminal.Constructor(Vector3(3870.585f, 4662.826f, 40.96361f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1975, + Terminal.Constructor(Vector3(3870.715f, 4670.113f, 40.96361f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1976, + Terminal.Constructor(Vector3(3870.838f, 4677.404f, 40.96361f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1977, + Terminal.Constructor(Vector3(3907.894f, 4648.054f, 42.88661f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1978, + Terminal.Constructor(Vector3(3909.909f, 4712.001f, 55.44661f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1979, + Terminal.Constructor(Vector3(3923.905f, 4679.13f, 32.88661f), spawn_terminal), + owning_building_guid = 16 + ) + LocalObject( + 2135, + Terminal.Constructor(Vector3(3854.594f, 4634.15f, 51.51661f), vehicle_terminal_combined), + owning_building_guid = 16 + ) + LocalObject( + 1313, + VehicleSpawnPad.Constructor(Vector3(3868.22f, 4634.066f, 47.35861f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 16, + terminal_guid = 2135 + ) LocalObject(1850, ResourceSilo.Constructor(Vector3(3964.967f, 4756.108f, 55.84661f)), owning_building_guid = 16) - LocalObject(1883, SpawnTube.Constructor(Vector3(3871.297f, 4661.375f, 38.82961f), Vector3(0, 0, 181)), owning_building_guid = 16) - LocalObject(1884, SpawnTube.Constructor(Vector3(3871.424f, 4668.662f, 38.82961f), Vector3(0, 0, 181)), owning_building_guid = 16) - LocalObject(1885, SpawnTube.Constructor(Vector3(3871.551f, 4675.951f, 38.82961f), Vector3(0, 0, 181)), owning_building_guid = 16) - LocalObject(1329, ProximityTerminal.Constructor(Vector3(3843.049f, 4659.509f, 31.32961f), medical_terminal), owning_building_guid = 16) - LocalObject(1330, ProximityTerminal.Constructor(Vector3(3907.642f, 4716.988f, 48.82961f), medical_terminal), owning_building_guid = 16) - LocalObject(1555, ProximityTerminal.Constructor(Vector3(3925.88f, 4632.495f, 57.07061f), pad_landing_frame), owning_building_guid = 16) - LocalObject(1556, Terminal.Constructor(Vector3(3925.88f, 4632.495f, 57.07061f), air_rearm_terminal), owning_building_guid = 16) - LocalObject(1806, ProximityTerminal.Constructor(Vector3(3846.793f, 4713.402f, 48.37961f), repair_silo), owning_building_guid = 16) - LocalObject(1807, Terminal.Constructor(Vector3(3846.793f, 4713.402f, 48.37961f), ground_rearm_terminal), owning_building_guid = 16) - LocalObject(1818, ProximityTerminal.Constructor(Vector3(3968.675f, 4663.758f, 48.37961f), repair_silo), owning_building_guid = 16) - LocalObject(1819, Terminal.Constructor(Vector3(3968.675f, 4663.758f, 48.37961f), ground_rearm_terminal), owning_building_guid = 16) - LocalObject(1261, FacilityTurret.Constructor(Vector3(3833.766f, 4608.849f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1883, + SpawnTube.Constructor(Vector3(3871.297f, 4661.375f, 38.82961f), Vector3(0, 0, 181)), + owning_building_guid = 16 + ) + LocalObject( + 1884, + SpawnTube.Constructor(Vector3(3871.424f, 4668.662f, 38.82961f), Vector3(0, 0, 181)), + owning_building_guid = 16 + ) + LocalObject( + 1885, + SpawnTube.Constructor(Vector3(3871.551f, 4675.951f, 38.82961f), Vector3(0, 0, 181)), + owning_building_guid = 16 + ) + LocalObject( + 1329, + ProximityTerminal.Constructor(Vector3(3843.049f, 4659.509f, 31.32961f), medical_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1330, + ProximityTerminal.Constructor(Vector3(3907.642f, 4716.988f, 48.82961f), medical_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1555, + ProximityTerminal.Constructor(Vector3(3925.88f, 4632.495f, 57.07061f), pad_landing_frame), + owning_building_guid = 16 + ) + LocalObject( + 1556, + Terminal.Constructor(Vector3(3925.88f, 4632.495f, 57.07061f), air_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1806, + ProximityTerminal.Constructor(Vector3(3846.793f, 4713.402f, 48.37961f), repair_silo), + owning_building_guid = 16 + ) + LocalObject( + 1807, + Terminal.Constructor(Vector3(3846.793f, 4713.402f, 48.37961f), ground_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1818, + ProximityTerminal.Constructor(Vector3(3968.675f, 4663.758f, 48.37961f), repair_silo), + owning_building_guid = 16 + ) + LocalObject( + 1819, + Terminal.Constructor(Vector3(3968.675f, 4663.758f, 48.37961f), ground_rearm_terminal), + owning_building_guid = 16 + ) + LocalObject( + 1261, + FacilityTurret.Constructor(Vector3(3833.766f, 4608.849f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1261, 5006) - LocalObject(1262, FacilityTurret.Constructor(Vector3(3834.673f, 4727.785f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1262, + FacilityTurret.Constructor(Vector3(3834.673f, 4727.785f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1262, 5007) - LocalObject(1264, FacilityTurret.Constructor(Vector3(3878.564f, 4770.138f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1264, + FacilityTurret.Constructor(Vector3(3878.564f, 4770.138f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1264, 5008) - LocalObject(1265, FacilityTurret.Constructor(Vector3(3937.02f, 4605.731f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1265, + FacilityTurret.Constructor(Vector3(3937.02f, 4605.731f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1265, 5009) - LocalObject(1268, FacilityTurret.Constructor(Vector3(3980.89f, 4648.07f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1268, + FacilityTurret.Constructor(Vector3(3980.89f, 4648.07f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1268, 5010) - LocalObject(1269, FacilityTurret.Constructor(Vector3(3981.839f, 4767.158f, 57.33761f), manned_turret), owning_building_guid = 16) + LocalObject( + 1269, + FacilityTurret.Constructor(Vector3(3981.839f, 4767.158f, 57.33761f), manned_turret), + owning_building_guid = 16 + ) TurretToWeapon(1269, 5011) - LocalObject(1661, Painbox.Constructor(Vector3(3927.229f, 4651.569f, 36.23161f), painbox), owning_building_guid = 16) - LocalObject(1670, Painbox.Constructor(Vector3(3861.335f, 4662.641f, 43.27441f), painbox_continuous), owning_building_guid = 16) - LocalObject(1679, Painbox.Constructor(Vector3(3927.393f, 4666.585f, 34.08831f), painbox_door_radius), owning_building_guid = 16) - LocalObject(1696, Painbox.Constructor(Vector3(3849.668f, 4661.187f, 41.65561f), painbox_door_radius_continuous), owning_building_guid = 16) - LocalObject(1697, Painbox.Constructor(Vector3(3862.614f, 4655.367f, 40.43731f), painbox_door_radius_continuous), owning_building_guid = 16) - LocalObject(1698, Painbox.Constructor(Vector3(3863.987f, 4682.691f, 40.65561f), painbox_door_radius_continuous), owning_building_guid = 16) + LocalObject( + 1661, + Painbox.Constructor(Vector3(3927.229f, 4651.569f, 36.23161f), painbox), + owning_building_guid = 16 + ) + LocalObject( + 1670, + Painbox.Constructor(Vector3(3861.335f, 4662.641f, 43.27441f), painbox_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1679, + Painbox.Constructor(Vector3(3927.393f, 4666.585f, 34.08831f), painbox_door_radius), + owning_building_guid = 16 + ) + LocalObject( + 1696, + Painbox.Constructor(Vector3(3849.668f, 4661.187f, 41.65561f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1697, + Painbox.Constructor(Vector3(3862.614f, 4655.367f, 40.43731f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 1698, + Painbox.Constructor(Vector3(3863.987f, 4682.691f, 40.65561f), painbox_door_radius_continuous), + owning_building_guid = 16 + ) LocalObject(223, Generator.Constructor(Vector3(3927.332f, 4648.102f, 30.03561f)), owning_building_guid = 16) - LocalObject(214, Terminal.Constructor(Vector3(3927.427f, 4656.293f, 31.32961f), gen_control), owning_building_guid = 16) + LocalObject( + 214, + Terminal.Constructor(Vector3(3927.427f, 4656.293f, 31.32961f), gen_control), + owning_building_guid = 16 + ) } Building5() def Building5(): Unit = { // Name: Atar Type: comm_station_dsp GUID: 19, MapID: 5 - LocalBuilding("Atar", 19, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3550f, 2798f, 47.04011f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(160, CaptureTerminal.Constructor(Vector3(3626.089f, 2778.734f, 29.64011f), capture_terminal), owning_building_guid = 19) + LocalBuilding( + "Atar", + 19, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3550f, 2798f, 47.04011f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 160, + CaptureTerminal.Constructor(Vector3(3626.089f, 2778.734f, 29.64011f), capture_terminal), + owning_building_guid = 19 + ) LocalObject(204, Door.Constructor(Vector3(3618.339f, 2868.464f, 50.41811f)), owning_building_guid = 19) LocalObject(297, Door.Constructor(Vector3(3490.196f, 2754.501f, 48.69111f)), owning_building_guid = 19) LocalObject(298, Door.Constructor(Vector3(3490.196f, 2772.693f, 56.65511f)), owning_building_guid = 19) @@ -405,20 +1007,90 @@ object Map08 { // Oshur Prime LocalObject(2031, Door.Constructor(Vector3(3586.673f, 2811.733f, 38.99411f)), owning_building_guid = 19) LocalObject(2032, Door.Constructor(Vector3(3586.673f, 2819.026f, 38.99411f)), owning_building_guid = 19) LocalObject(2033, Door.Constructor(Vector3(3586.673f, 2826.315f, 38.99411f)), owning_building_guid = 19) - LocalObject(699, IFFLock.Constructor(Vector3(3570.454f, 2797.09f, 48.60811f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 663) - LocalObject(757, IFFLock.Constructor(Vector3(3527.959f, 2799.104f, 53.60811f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 302) - LocalObject(760, IFFLock.Constructor(Vector3(3532.04f, 2788.42f, 53.60811f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 301) - LocalObject(763, IFFLock.Constructor(Vector3(3544.817f, 2788.514f, 61.10811f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 308) - LocalObject(764, IFFLock.Constructor(Vector3(3557.193f, 2815.962f, 53.60811f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 310) - LocalObject(769, IFFLock.Constructor(Vector3(3590.94f, 2859.572f, 30.97611f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 540) - LocalObject(770, IFFLock.Constructor(Vector3(3592.428f, 2830.94f, 38.47611f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 543) - LocalObject(771, IFFLock.Constructor(Vector3(3595.572f, 2805.19f, 38.47611f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 542) - LocalObject(772, IFFLock.Constructor(Vector3(3601.907f, 2903.163f, 53.58711f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 316) - LocalObject(773, IFFLock.Constructor(Vector3(3605.06f, 2808.428f, 30.97611f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 544) - LocalObject(774, IFFLock.Constructor(Vector3(3605.124f, 2870.312f, 48.65211f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 317) - LocalObject(775, IFFLock.Constructor(Vector3(3621.06f, 2768.428f, 30.97611f), Vector3(0, 0, 270)), owning_building_guid = 19, door_guid = 547) - LocalObject(777, IFFLock.Constructor(Vector3(3630.813f, 2771.572f, 30.97611f), Vector3(0, 0, 90)), owning_building_guid = 19, door_guid = 548) - LocalObject(778, IFFLock.Constructor(Vector3(3663.953f, 2878.808f, 48.55111f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 323) + LocalObject( + 699, + IFFLock.Constructor(Vector3(3570.454f, 2797.09f, 48.60811f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 663 + ) + LocalObject( + 757, + IFFLock.Constructor(Vector3(3527.959f, 2799.104f, 53.60811f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 302 + ) + LocalObject( + 760, + IFFLock.Constructor(Vector3(3532.04f, 2788.42f, 53.60811f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 301 + ) + LocalObject( + 763, + IFFLock.Constructor(Vector3(3544.817f, 2788.514f, 61.10811f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 308 + ) + LocalObject( + 764, + IFFLock.Constructor(Vector3(3557.193f, 2815.962f, 53.60811f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 310 + ) + LocalObject( + 769, + IFFLock.Constructor(Vector3(3590.94f, 2859.572f, 30.97611f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 540 + ) + LocalObject( + 770, + IFFLock.Constructor(Vector3(3592.428f, 2830.94f, 38.47611f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 543 + ) + LocalObject( + 771, + IFFLock.Constructor(Vector3(3595.572f, 2805.19f, 38.47611f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 542 + ) + LocalObject( + 772, + IFFLock.Constructor(Vector3(3601.907f, 2903.163f, 53.58711f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 316 + ) + LocalObject( + 773, + IFFLock.Constructor(Vector3(3605.06f, 2808.428f, 30.97611f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 544 + ) + LocalObject( + 774, + IFFLock.Constructor(Vector3(3605.124f, 2870.312f, 48.65211f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 317 + ) + LocalObject( + 775, + IFFLock.Constructor(Vector3(3621.06f, 2768.428f, 30.97611f), Vector3(0, 0, 270)), + owning_building_guid = 19, + door_guid = 547 + ) + LocalObject( + 777, + IFFLock.Constructor(Vector3(3630.813f, 2771.572f, 30.97611f), Vector3(0, 0, 90)), + owning_building_guid = 19, + door_guid = 548 + ) + LocalObject( + 778, + IFFLock.Constructor(Vector3(3663.953f, 2878.808f, 48.55111f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 323 + ) LocalObject(989, Locker.Constructor(Vector3(3597.563f, 2808.141f, 37.40111f)), owning_building_guid = 19) LocalObject(990, Locker.Constructor(Vector3(3598.727f, 2808.141f, 37.40111f)), owning_building_guid = 19) LocalObject(991, Locker.Constructor(Vector3(3599.874f, 2808.141f, 37.40111f)), owning_building_guid = 19) @@ -431,76 +1103,306 @@ object Map08 { // Oshur Prime LocalObject(998, Locker.Constructor(Vector3(3618.055f, 2828.165f, 29.64011f)), owning_building_guid = 19) LocalObject(999, Locker.Constructor(Vector3(3619.391f, 2828.165f, 29.64011f)), owning_building_guid = 19) LocalObject(1000, Locker.Constructor(Vector3(3620.728f, 2828.165f, 29.64011f)), owning_building_guid = 19) - LocalObject(206, Terminal.Constructor(Vector3(3609.879f, 2900.918f, 52.74411f), dropship_vehicle_terminal), owning_building_guid = 19) - LocalObject(205, VehicleSpawnPad.Constructor(Vector3(3618.328f, 2922.856f, 47.06811f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 19, terminal_guid = 206) - LocalObject(1366, Terminal.Constructor(Vector3(3540.378f, 2774.897f, 53.50011f), order_terminal), owning_building_guid = 19) - LocalObject(1370, Terminal.Constructor(Vector3(3550.075f, 2790.547f, 60.89511f), order_terminal), owning_building_guid = 19) - LocalObject(1371, Terminal.Constructor(Vector3(3552.331f, 2788.43f, 60.89511f), order_terminal), owning_building_guid = 19) - LocalObject(1372, Terminal.Constructor(Vector3(3552.332f, 2792.825f, 60.89511f), order_terminal), owning_building_guid = 19) - LocalObject(1373, Terminal.Constructor(Vector3(3554.592f, 2790.59f, 60.89511f), order_terminal), owning_building_guid = 19) - LocalObject(1377, Terminal.Constructor(Vector3(3600.654f, 2813.408f, 38.73011f), order_terminal), owning_building_guid = 19) - LocalObject(1378, Terminal.Constructor(Vector3(3600.654f, 2817.139f, 38.73011f), order_terminal), owning_building_guid = 19) - LocalObject(1379, Terminal.Constructor(Vector3(3600.654f, 2820.928f, 38.73011f), order_terminal), owning_building_guid = 19) - LocalObject(1965, Terminal.Constructor(Vector3(3548.509f, 2773.959f, 53.75711f), spawn_terminal), owning_building_guid = 19) - LocalObject(1966, Terminal.Constructor(Vector3(3586.971f, 2809.243f, 39.27411f), spawn_terminal), owning_building_guid = 19) - LocalObject(1967, Terminal.Constructor(Vector3(3586.967f, 2816.535f, 39.27411f), spawn_terminal), owning_building_guid = 19) - LocalObject(1968, Terminal.Constructor(Vector3(3586.97f, 2823.823f, 39.27411f), spawn_terminal), owning_building_guid = 19) - LocalObject(1969, Terminal.Constructor(Vector3(3605.103f, 2892.906f, 53.68811f), spawn_terminal), owning_building_guid = 19) - LocalObject(1970, Terminal.Constructor(Vector3(3614.058f, 2797.409f, 31.16811f), spawn_terminal), owning_building_guid = 19) - LocalObject(1971, Terminal.Constructor(Vector3(3621.409f, 2853.942f, 31.16811f), spawn_terminal), owning_building_guid = 19) - LocalObject(1972, Terminal.Constructor(Vector3(3630.058f, 2805.409f, 38.69711f), spawn_terminal), owning_building_guid = 19) - LocalObject(1973, Terminal.Constructor(Vector3(3630.058f, 2845.409f, 38.69711f), spawn_terminal), owning_building_guid = 19) - LocalObject(2134, Terminal.Constructor(Vector3(3567.698f, 2906.044f, 49.82711f), ground_vehicle_terminal), owning_building_guid = 19) - LocalObject(1312, VehicleSpawnPad.Constructor(Vector3(3567.786f, 2892.411f, 45.66911f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 19, terminal_guid = 2134) + LocalObject( + 206, + Terminal.Constructor(Vector3(3609.879f, 2900.918f, 52.74411f), dropship_vehicle_terminal), + owning_building_guid = 19 + ) + LocalObject( + 205, + VehicleSpawnPad.Constructor(Vector3(3618.328f, 2922.856f, 47.06811f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 19, + terminal_guid = 206 + ) + LocalObject( + 1366, + Terminal.Constructor(Vector3(3540.378f, 2774.897f, 53.50011f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1370, + Terminal.Constructor(Vector3(3550.075f, 2790.547f, 60.89511f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1371, + Terminal.Constructor(Vector3(3552.331f, 2788.43f, 60.89511f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1372, + Terminal.Constructor(Vector3(3552.332f, 2792.825f, 60.89511f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1373, + Terminal.Constructor(Vector3(3554.592f, 2790.59f, 60.89511f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1377, + Terminal.Constructor(Vector3(3600.654f, 2813.408f, 38.73011f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1378, + Terminal.Constructor(Vector3(3600.654f, 2817.139f, 38.73011f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1379, + Terminal.Constructor(Vector3(3600.654f, 2820.928f, 38.73011f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1965, + Terminal.Constructor(Vector3(3548.509f, 2773.959f, 53.75711f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1966, + Terminal.Constructor(Vector3(3586.971f, 2809.243f, 39.27411f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1967, + Terminal.Constructor(Vector3(3586.967f, 2816.535f, 39.27411f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1968, + Terminal.Constructor(Vector3(3586.97f, 2823.823f, 39.27411f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1969, + Terminal.Constructor(Vector3(3605.103f, 2892.906f, 53.68811f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1970, + Terminal.Constructor(Vector3(3614.058f, 2797.409f, 31.16811f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1971, + Terminal.Constructor(Vector3(3621.409f, 2853.942f, 31.16811f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1972, + Terminal.Constructor(Vector3(3630.058f, 2805.409f, 38.69711f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1973, + Terminal.Constructor(Vector3(3630.058f, 2845.409f, 38.69711f), spawn_terminal), + owning_building_guid = 19 + ) + LocalObject( + 2134, + Terminal.Constructor(Vector3(3567.698f, 2906.044f, 49.82711f), ground_vehicle_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1312, + VehicleSpawnPad.Constructor(Vector3(3567.786f, 2892.411f, 45.66911f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 19, + terminal_guid = 2134 + ) LocalObject(1849, ResourceSilo.Constructor(Vector3(3648.212f, 2963.642f, 54.15711f)), owning_building_guid = 19) - LocalObject(1878, SpawnTube.Constructor(Vector3(3586.233f, 2810.683f, 37.14011f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1879, SpawnTube.Constructor(Vector3(3586.233f, 2817.974f, 37.14011f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1880, SpawnTube.Constructor(Vector3(3586.233f, 2825.262f, 37.14011f), Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(1327, ProximityTerminal.Constructor(Vector3(3550.863f, 2769.013f, 47.14011f), medical_terminal), owning_building_guid = 19) - LocalObject(1328, ProximityTerminal.Constructor(Vector3(3614.444f, 2827.62f, 29.64011f), medical_terminal), owning_building_guid = 19) - LocalObject(1540, ProximityTerminal.Constructor(Vector3(3531.153f, 2891.398f, 55.45011f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1541, Terminal.Constructor(Vector3(3531.153f, 2891.398f, 55.45011f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1543, ProximityTerminal.Constructor(Vector3(3547.514f, 2845.467f, 52.73411f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1544, Terminal.Constructor(Vector3(3547.514f, 2845.467f, 52.73411f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1546, ProximityTerminal.Constructor(Vector3(3599.804f, 2809.901f, 59.91611f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1547, Terminal.Constructor(Vector3(3599.804f, 2809.901f, 59.91611f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1549, ProximityTerminal.Constructor(Vector3(3635.071f, 2826.159f, 55.46311f), pad_landing_frame), owning_building_guid = 19) - LocalObject(1550, Terminal.Constructor(Vector3(3635.071f, 2826.159f, 55.46311f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(1798, ProximityTerminal.Constructor(Vector3(3488.642f, 2836.24f, 46.79011f), repair_silo), owning_building_guid = 19) - LocalObject(1799, Terminal.Constructor(Vector3(3488.642f, 2836.24f, 46.79011f), ground_rearm_terminal), owning_building_guid = 19) - LocalObject(1802, ProximityTerminal.Constructor(Vector3(3658.57f, 2839.152f, 46.79011f), repair_silo), owning_building_guid = 19) - LocalObject(1803, Terminal.Constructor(Vector3(3658.57f, 2839.152f, 46.79011f), ground_rearm_terminal), owning_building_guid = 19) - LocalObject(1249, FacilityTurret.Constructor(Vector3(3476.401f, 2871.113f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1878, + SpawnTube.Constructor(Vector3(3586.233f, 2810.683f, 37.14011f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1879, + SpawnTube.Constructor(Vector3(3586.233f, 2817.974f, 37.14011f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1880, + SpawnTube.Constructor(Vector3(3586.233f, 2825.262f, 37.14011f), Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 1327, + ProximityTerminal.Constructor(Vector3(3550.863f, 2769.013f, 47.14011f), medical_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1328, + ProximityTerminal.Constructor(Vector3(3614.444f, 2827.62f, 29.64011f), medical_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1540, + ProximityTerminal.Constructor(Vector3(3531.153f, 2891.398f, 55.45011f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1541, + Terminal.Constructor(Vector3(3531.153f, 2891.398f, 55.45011f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1543, + ProximityTerminal.Constructor(Vector3(3547.514f, 2845.467f, 52.73411f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1544, + Terminal.Constructor(Vector3(3547.514f, 2845.467f, 52.73411f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1546, + ProximityTerminal.Constructor(Vector3(3599.804f, 2809.901f, 59.91611f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1547, + Terminal.Constructor(Vector3(3599.804f, 2809.901f, 59.91611f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1549, + ProximityTerminal.Constructor(Vector3(3635.071f, 2826.159f, 55.46311f), pad_landing_frame), + owning_building_guid = 19 + ) + LocalObject( + 1550, + Terminal.Constructor(Vector3(3635.071f, 2826.159f, 55.46311f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1798, + ProximityTerminal.Constructor(Vector3(3488.642f, 2836.24f, 46.79011f), repair_silo), + owning_building_guid = 19 + ) + LocalObject( + 1799, + Terminal.Constructor(Vector3(3488.642f, 2836.24f, 46.79011f), ground_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1802, + ProximityTerminal.Constructor(Vector3(3658.57f, 2839.152f, 46.79011f), repair_silo), + owning_building_guid = 19 + ) + LocalObject( + 1803, + Terminal.Constructor(Vector3(3658.57f, 2839.152f, 46.79011f), ground_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 1249, + FacilityTurret.Constructor(Vector3(3476.401f, 2871.113f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1249, 5012) - LocalObject(1250, FacilityTurret.Constructor(Vector3(3477.554f, 2717.565f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1250, + FacilityTurret.Constructor(Vector3(3477.554f, 2717.565f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1250, 5013) - LocalObject(1252, FacilityTurret.Constructor(Vector3(3521.445f, 2917.667f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1252, + FacilityTurret.Constructor(Vector3(3521.445f, 2917.667f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1252, 5014) - LocalObject(1255, FacilityTurret.Constructor(Vector3(3580.428f, 2716.396f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1255, + FacilityTurret.Constructor(Vector3(3580.428f, 2716.396f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1255, 5015) - LocalObject(1256, FacilityTurret.Constructor(Vector3(3581.449f, 2976.154f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1256, + FacilityTurret.Constructor(Vector3(3581.449f, 2976.154f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1256, 5016) - LocalObject(1258, FacilityTurret.Constructor(Vector3(3622.537f, 2757.011f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1258, + FacilityTurret.Constructor(Vector3(3622.537f, 2757.011f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1258, 5017) - LocalObject(1259, FacilityTurret.Constructor(Vector3(3669.619f, 2974.985f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1259, + FacilityTurret.Constructor(Vector3(3669.619f, 2974.985f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1259, 5018) - LocalObject(1260, FacilityTurret.Constructor(Vector3(3670.773f, 2806.733f, 55.64811f), manned_turret), owning_building_guid = 19) + LocalObject( + 1260, + FacilityTurret.Constructor(Vector3(3670.773f, 2806.733f, 55.64811f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(1260, 5019) - LocalObject(1660, Painbox.Constructor(Vector3(3578.428f, 2858.057f, 33.53441f), painbox), owning_building_guid = 19) - LocalObject(1669, Painbox.Constructor(Vector3(3595.857f, 2818.408f, 41.16761f), painbox_continuous), owning_building_guid = 19) - LocalObject(1678, Painbox.Constructor(Vector3(3592.203f, 2856.915f, 32.77231f), painbox_door_radius), owning_building_guid = 19) - LocalObject(1693, Painbox.Constructor(Vector3(3593.087f, 2803.386f, 39.56931f), painbox_door_radius_continuous), owning_building_guid = 19) - LocalObject(1694, Painbox.Constructor(Vector3(3593.895f, 2832.081f, 40.04011f), painbox_door_radius_continuous), owning_building_guid = 19) - LocalObject(1695, Painbox.Constructor(Vector3(3608.317f, 2825.888f, 40.47041f), painbox_door_radius_continuous), owning_building_guid = 19) + LocalObject( + 1660, + Painbox.Constructor(Vector3(3578.428f, 2858.057f, 33.53441f), painbox), + owning_building_guid = 19 + ) + LocalObject( + 1669, + Painbox.Constructor(Vector3(3595.857f, 2818.408f, 41.16761f), painbox_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1678, + Painbox.Constructor(Vector3(3592.203f, 2856.915f, 32.77231f), painbox_door_radius), + owning_building_guid = 19 + ) + LocalObject( + 1693, + Painbox.Constructor(Vector3(3593.087f, 2803.386f, 39.56931f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1694, + Painbox.Constructor(Vector3(3593.895f, 2832.081f, 40.04011f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 1695, + Painbox.Constructor(Vector3(3608.317f, 2825.888f, 40.47041f), painbox_door_radius_continuous), + owning_building_guid = 19 + ) LocalObject(222, Generator.Constructor(Vector3(3574.445f, 2857.975f, 28.34611f)), owning_building_guid = 19) - LocalObject(213, Terminal.Constructor(Vector3(3582.637f, 2858.022f, 29.64011f), gen_control), owning_building_guid = 19) + LocalObject( + 213, + Terminal.Constructor(Vector3(3582.637f, 2858.022f, 29.64011f), gen_control), + owning_building_guid = 19 + ) } Building11() def Building11(): Unit = { // Name: Rashnu Type: cryo_facility GUID: 22, MapID: 11 - LocalBuilding("Rashnu", 22, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3050f, 3898f, 59.5276f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(159, CaptureTerminal.Constructor(Vector3(3021.911f, 3957.266f, 49.5276f), capture_terminal), owning_building_guid = 22) + LocalBuilding( + "Rashnu", + 22, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3050f, 3898f, 59.5276f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 159, + CaptureTerminal.Constructor(Vector3(3021.911f, 3957.266f, 49.5276f), capture_terminal), + owning_building_guid = 22 + ) LocalObject(280, Door.Constructor(Vector3(2991.023f, 3902.5f, 61.07859f)), owning_building_guid = 22) LocalObject(281, Door.Constructor(Vector3(2991.023f, 3920.693f, 69.04259f)), owning_building_guid = 22) LocalObject(282, Door.Constructor(Vector3(3007.674f, 3965.803f, 61.07859f)), owning_building_guid = 22) @@ -541,15 +1443,60 @@ object Map08 { // Oshur Prime LocalObject(2022, Door.Constructor(Vector3(3054.673f, 3903.733f, 51.3816f)), owning_building_guid = 22) LocalObject(2023, Door.Constructor(Vector3(3054.673f, 3911.026f, 51.3816f)), owning_building_guid = 22) LocalObject(2024, Door.Constructor(Vector3(3054.673f, 3918.315f, 51.3816f)), owning_building_guid = 22) - LocalObject(698, IFFLock.Constructor(Vector3(3050.77f, 3925.822f, 61.00959f), Vector3(0, 0, 0)), owning_building_guid = 22, door_guid = 662) - LocalObject(745, IFFLock.Constructor(Vector3(3017.06f, 3964.428f, 50.86359f), Vector3(0, 0, 270)), owning_building_guid = 22, door_guid = 513) - LocalObject(746, IFFLock.Constructor(Vector3(3026.813f, 3967.572f, 50.86359f), Vector3(0, 0, 90)), owning_building_guid = 22, door_guid = 514) - LocalObject(747, IFFLock.Constructor(Vector3(3034.814f, 3920.043f, 70.9796f), Vector3(0, 0, 90)), owning_building_guid = 22, door_guid = 284) - LocalObject(748, IFFLock.Constructor(Vector3(3051.954f, 3901.958f, 70.9796f), Vector3(0, 0, 0)), owning_building_guid = 22, door_guid = 285) - LocalObject(749, IFFLock.Constructor(Vector3(3060.428f, 3922.81f, 50.86359f), Vector3(0, 0, 0)), owning_building_guid = 22, door_guid = 528) - LocalObject(750, IFFLock.Constructor(Vector3(3063.572f, 3897.19f, 50.86359f), Vector3(0, 0, 180)), owning_building_guid = 22, door_guid = 527) - LocalObject(751, IFFLock.Constructor(Vector3(3073.19f, 3900.428f, 43.36359f), Vector3(0, 0, 270)), owning_building_guid = 22, door_guid = 529) - LocalObject(752, IFFLock.Constructor(Vector3(3082.814f, 3808.042f, 60.9796f), Vector3(0, 0, 90)), owning_building_guid = 22, door_guid = 288) + LocalObject( + 698, + IFFLock.Constructor(Vector3(3050.77f, 3925.822f, 61.00959f), Vector3(0, 0, 0)), + owning_building_guid = 22, + door_guid = 662 + ) + LocalObject( + 745, + IFFLock.Constructor(Vector3(3017.06f, 3964.428f, 50.86359f), Vector3(0, 0, 270)), + owning_building_guid = 22, + door_guid = 513 + ) + LocalObject( + 746, + IFFLock.Constructor(Vector3(3026.813f, 3967.572f, 50.86359f), Vector3(0, 0, 90)), + owning_building_guid = 22, + door_guid = 514 + ) + LocalObject( + 747, + IFFLock.Constructor(Vector3(3034.814f, 3920.043f, 70.9796f), Vector3(0, 0, 90)), + owning_building_guid = 22, + door_guid = 284 + ) + LocalObject( + 748, + IFFLock.Constructor(Vector3(3051.954f, 3901.958f, 70.9796f), Vector3(0, 0, 0)), + owning_building_guid = 22, + door_guid = 285 + ) + LocalObject( + 749, + IFFLock.Constructor(Vector3(3060.428f, 3922.81f, 50.86359f), Vector3(0, 0, 0)), + owning_building_guid = 22, + door_guid = 528 + ) + LocalObject( + 750, + IFFLock.Constructor(Vector3(3063.572f, 3897.19f, 50.86359f), Vector3(0, 0, 180)), + owning_building_guid = 22, + door_guid = 527 + ) + LocalObject( + 751, + IFFLock.Constructor(Vector3(3073.19f, 3900.428f, 43.36359f), Vector3(0, 0, 270)), + owning_building_guid = 22, + door_guid = 529 + ) + LocalObject( + 752, + IFFLock.Constructor(Vector3(3082.814f, 3808.042f, 60.9796f), Vector3(0, 0, 90)), + owning_building_guid = 22, + door_guid = 288 + ) LocalObject(944, Locker.Constructor(Vector3(3065.563f, 3900.141f, 49.7886f)), owning_building_guid = 22) LocalObject(945, Locker.Constructor(Vector3(3066.727f, 3900.141f, 49.7886f)), owning_building_guid = 22) LocalObject(946, Locker.Constructor(Vector3(3067.874f, 3900.141f, 49.7886f)), owning_building_guid = 22) @@ -579,76 +1526,309 @@ object Map08 { // Oshur Prime LocalObject(1196, Locker.Constructor(Vector3(3068.26f, 3892.46f, 59.2986f)), owning_building_guid = 22) LocalObject(1197, Locker.Constructor(Vector3(3068.26f, 3894.982f, 59.5276f)), owning_building_guid = 22) LocalObject(1198, Locker.Constructor(Vector3(3068.26f, 3896.016f, 59.5276f)), owning_building_guid = 22) - LocalObject(166, Terminal.Constructor(Vector3(3052.276f, 3946.25f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(167, Terminal.Constructor(Vector3(3052.276f, 3953.575f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(168, Terminal.Constructor(Vector3(3053.724f, 3944.802f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(169, Terminal.Constructor(Vector3(3053.724f, 3955.023f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(170, Terminal.Constructor(Vector3(3066.424f, 3944.802f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(171, Terminal.Constructor(Vector3(3066.424f, 3955.023f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(172, Terminal.Constructor(Vector3(3067.872f, 3946.25f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(173, Terminal.Constructor(Vector3(3067.872f, 3953.575f, 49.51759f), cert_terminal), owning_building_guid = 22) - LocalObject(1359, Terminal.Constructor(Vector3(3039.972f, 3907.526f, 60.82259f), order_terminal), owning_building_guid = 22) - LocalObject(1360, Terminal.Constructor(Vector3(3068.654f, 3905.408f, 51.1176f), order_terminal), owning_building_guid = 22) - LocalObject(1361, Terminal.Constructor(Vector3(3068.654f, 3909.139f, 51.1176f), order_terminal), owning_building_guid = 22) - LocalObject(1362, Terminal.Constructor(Vector3(3068.654f, 3912.928f, 51.1176f), order_terminal), owning_building_guid = 22) - LocalObject(1958, Terminal.Constructor(Vector3(3010f, 3897.407f, 51.14059f), spawn_terminal), owning_building_guid = 22) - LocalObject(1959, Terminal.Constructor(Vector3(3033.91f, 3841.41f, 53.64059f), spawn_terminal), owning_building_guid = 22) - LocalObject(1960, Terminal.Constructor(Vector3(3049.407f, 3962f, 51.14059f), spawn_terminal), owning_building_guid = 22) - LocalObject(1961, Terminal.Constructor(Vector3(3051.905f, 3884.359f, 61.10659f), spawn_terminal), owning_building_guid = 22) - LocalObject(1962, Terminal.Constructor(Vector3(3054.971f, 3901.243f, 51.66159f), spawn_terminal), owning_building_guid = 22) - LocalObject(1963, Terminal.Constructor(Vector3(3054.967f, 3908.535f, 51.66159f), spawn_terminal), owning_building_guid = 22) - LocalObject(1964, Terminal.Constructor(Vector3(3054.97f, 3915.823f, 51.66159f), spawn_terminal), owning_building_guid = 22) - LocalObject(2133, Terminal.Constructor(Vector3(3087.628f, 3834.814f, 61.8326f), vehicle_terminal_combined), owning_building_guid = 22) - LocalObject(1311, VehicleSpawnPad.Constructor(Vector3(3073.989f, 3834.724f, 57.67459f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 22, terminal_guid = 2133) + LocalObject( + 166, + Terminal.Constructor(Vector3(3052.276f, 3946.25f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 167, + Terminal.Constructor(Vector3(3052.276f, 3953.575f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 168, + Terminal.Constructor(Vector3(3053.724f, 3944.802f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 169, + Terminal.Constructor(Vector3(3053.724f, 3955.023f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 170, + Terminal.Constructor(Vector3(3066.424f, 3944.802f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 171, + Terminal.Constructor(Vector3(3066.424f, 3955.023f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 172, + Terminal.Constructor(Vector3(3067.872f, 3946.25f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(3067.872f, 3953.575f, 49.51759f), cert_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1359, + Terminal.Constructor(Vector3(3039.972f, 3907.526f, 60.82259f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1360, + Terminal.Constructor(Vector3(3068.654f, 3905.408f, 51.1176f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1361, + Terminal.Constructor(Vector3(3068.654f, 3909.139f, 51.1176f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1362, + Terminal.Constructor(Vector3(3068.654f, 3912.928f, 51.1176f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(3010f, 3897.407f, 51.14059f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1959, + Terminal.Constructor(Vector3(3033.91f, 3841.41f, 53.64059f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1960, + Terminal.Constructor(Vector3(3049.407f, 3962f, 51.14059f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1961, + Terminal.Constructor(Vector3(3051.905f, 3884.359f, 61.10659f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1962, + Terminal.Constructor(Vector3(3054.971f, 3901.243f, 51.66159f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1963, + Terminal.Constructor(Vector3(3054.967f, 3908.535f, 51.66159f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1964, + Terminal.Constructor(Vector3(3054.97f, 3915.823f, 51.66159f), spawn_terminal), + owning_building_guid = 22 + ) + LocalObject( + 2133, + Terminal.Constructor(Vector3(3087.628f, 3834.814f, 61.8326f), vehicle_terminal_combined), + owning_building_guid = 22 + ) + LocalObject( + 1311, + VehicleSpawnPad.Constructor(Vector3(3073.989f, 3834.724f, 57.67459f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 22, + terminal_guid = 2133 + ) LocalObject(1848, ResourceSilo.Constructor(Vector3(2989.733f, 3948.852f, 66.54459f)), owning_building_guid = 22) - LocalObject(1869, SpawnTube.Constructor(Vector3(3054.233f, 3902.683f, 49.5276f), Vector3(0, 0, 0)), owning_building_guid = 22) - LocalObject(1870, SpawnTube.Constructor(Vector3(3054.233f, 3909.974f, 49.5276f), Vector3(0, 0, 0)), owning_building_guid = 22) - LocalObject(1871, SpawnTube.Constructor(Vector3(3054.233f, 3917.262f, 49.5276f), Vector3(0, 0, 0)), owning_building_guid = 22) - LocalObject(119, ProximityTerminal.Constructor(Vector3(3051.983f, 3890.892f, 59.3376f), adv_med_terminal), owning_building_guid = 22) - LocalObject(1326, ProximityTerminal.Constructor(Vector3(3077.642f, 3901.952f, 49.5276f), medical_terminal), owning_building_guid = 22) - LocalObject(1528, ProximityTerminal.Constructor(Vector3(3031.883f, 3836.061f, 69.82059f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1529, Terminal.Constructor(Vector3(3031.883f, 3836.061f, 69.82059f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1531, ProximityTerminal.Constructor(Vector3(3035.101f, 3951.651f, 67.8696f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1532, Terminal.Constructor(Vector3(3035.101f, 3951.651f, 67.8696f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1534, ProximityTerminal.Constructor(Vector3(3048.198f, 3828.777f, 67.87959f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1535, Terminal.Constructor(Vector3(3048.198f, 3828.777f, 67.87959f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1537, ProximityTerminal.Constructor(Vector3(3051.323f, 3943.253f, 69.8596f), pad_landing_frame), owning_building_guid = 22) - LocalObject(1538, Terminal.Constructor(Vector3(3051.323f, 3943.253f, 69.8596f), air_rearm_terminal), owning_building_guid = 22) - LocalObject(1790, ProximityTerminal.Constructor(Vector3(3014.525f, 3813.154f, 59.2776f), repair_silo), owning_building_guid = 22) - LocalObject(1791, Terminal.Constructor(Vector3(3014.525f, 3813.154f, 59.2776f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(1794, ProximityTerminal.Constructor(Vector3(3102.53f, 3913.861f, 59.2776f), repair_silo), owning_building_guid = 22) - LocalObject(1795, Terminal.Constructor(Vector3(3102.53f, 3913.861f, 59.2776f), ground_rearm_terminal), owning_building_guid = 22) - LocalObject(1241, FacilityTurret.Constructor(Vector3(2978.392f, 3978.472f, 67.9296f), manned_turret), owning_building_guid = 22) + LocalObject( + 1869, + SpawnTube.Constructor(Vector3(3054.233f, 3902.683f, 49.5276f), Vector3(0, 0, 0)), + owning_building_guid = 22 + ) + LocalObject( + 1870, + SpawnTube.Constructor(Vector3(3054.233f, 3909.974f, 49.5276f), Vector3(0, 0, 0)), + owning_building_guid = 22 + ) + LocalObject( + 1871, + SpawnTube.Constructor(Vector3(3054.233f, 3917.262f, 49.5276f), Vector3(0, 0, 0)), + owning_building_guid = 22 + ) + LocalObject( + 119, + ProximityTerminal.Constructor(Vector3(3051.983f, 3890.892f, 59.3376f), adv_med_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1326, + ProximityTerminal.Constructor(Vector3(3077.642f, 3901.952f, 49.5276f), medical_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1528, + ProximityTerminal.Constructor(Vector3(3031.883f, 3836.061f, 69.82059f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1529, + Terminal.Constructor(Vector3(3031.883f, 3836.061f, 69.82059f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1531, + ProximityTerminal.Constructor(Vector3(3035.101f, 3951.651f, 67.8696f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1532, + Terminal.Constructor(Vector3(3035.101f, 3951.651f, 67.8696f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1534, + ProximityTerminal.Constructor(Vector3(3048.198f, 3828.777f, 67.87959f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1535, + Terminal.Constructor(Vector3(3048.198f, 3828.777f, 67.87959f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1537, + ProximityTerminal.Constructor(Vector3(3051.323f, 3943.253f, 69.8596f), pad_landing_frame), + owning_building_guid = 22 + ) + LocalObject( + 1538, + Terminal.Constructor(Vector3(3051.323f, 3943.253f, 69.8596f), air_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1790, + ProximityTerminal.Constructor(Vector3(3014.525f, 3813.154f, 59.2776f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 1791, + Terminal.Constructor(Vector3(3014.525f, 3813.154f, 59.2776f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1794, + ProximityTerminal.Constructor(Vector3(3102.53f, 3913.861f, 59.2776f), repair_silo), + owning_building_guid = 22 + ) + LocalObject( + 1795, + Terminal.Constructor(Vector3(3102.53f, 3913.861f, 59.2776f), ground_rearm_terminal), + owning_building_guid = 22 + ) + LocalObject( + 1241, + FacilityTurret.Constructor(Vector3(2978.392f, 3978.472f, 67.9296f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1241, 5020) - LocalObject(1242, FacilityTurret.Constructor(Vector3(2978.4f, 3801.379f, 67.9296f), manned_turret), owning_building_guid = 22) + LocalObject( + 1242, + FacilityTurret.Constructor(Vector3(2978.4f, 3801.379f, 67.9296f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1242, 5021) - LocalObject(1244, FacilityTurret.Constructor(Vector3(3071.665f, 3979.605f, 67.9296f), manned_turret), owning_building_guid = 22) + LocalObject( + 1244, + FacilityTurret.Constructor(Vector3(3071.665f, 3979.605f, 67.9296f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1244, 5022) - LocalObject(1245, FacilityTurret.Constructor(Vector3(3113.626f, 3801.371f, 67.9296f), manned_turret), owning_building_guid = 22) + LocalObject( + 1245, + FacilityTurret.Constructor(Vector3(3113.626f, 3801.371f, 67.9296f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1245, 5023) - LocalObject(1246, FacilityTurret.Constructor(Vector3(3114.813f, 3936.496f, 67.9296f), manned_turret), owning_building_guid = 22) + LocalObject( + 1246, + FacilityTurret.Constructor(Vector3(3114.813f, 3936.496f, 67.9296f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(1246, 5024) - LocalObject(681, ImplantTerminalMech.Constructor(Vector3(3060.066f, 3942.368f, 49.0046f)), owning_building_guid = 22) - LocalObject(675, Terminal.Constructor(Vector3(3060.066f, 3942.386f, 49.0046f), implant_terminal_interface), owning_building_guid = 22) + LocalObject( + 681, + ImplantTerminalMech.Constructor(Vector3(3060.066f, 3942.368f, 49.0046f)), + owning_building_guid = 22 + ) + LocalObject( + 675, + Terminal.Constructor(Vector3(3060.066f, 3942.386f, 49.0046f), implant_terminal_interface), + owning_building_guid = 22 + ) TerminalToInterface(681, 675) - LocalObject(682, ImplantTerminalMech.Constructor(Vector3(3060.054f, 3957.724f, 49.0046f)), owning_building_guid = 22) - LocalObject(676, Terminal.Constructor(Vector3(3060.054f, 3957.706f, 49.0046f), implant_terminal_interface), owning_building_guid = 22) + LocalObject( + 682, + ImplantTerminalMech.Constructor(Vector3(3060.054f, 3957.724f, 49.0046f)), + owning_building_guid = 22 + ) + LocalObject( + 676, + Terminal.Constructor(Vector3(3060.054f, 3957.706f, 49.0046f), implant_terminal_interface), + owning_building_guid = 22 + ) TerminalToInterface(682, 676) - LocalObject(1659, Painbox.Constructor(Vector3(3055.594f, 3878.334f, 73.5564f), painbox), owning_building_guid = 22) - LocalObject(1668, Painbox.Constructor(Vector3(3064.753f, 3905.712f, 53.5975f), painbox_continuous), owning_building_guid = 22) - LocalObject(1677, Painbox.Constructor(Vector3(3054.182f, 3892.798f, 73.7615f), painbox_door_radius), owning_building_guid = 22) - LocalObject(1690, Painbox.Constructor(Vector3(3060.54f, 3895.793f, 51.8835f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(1691, Painbox.Constructor(Vector3(3062.515f, 3923.831f, 51.24179f), painbox_door_radius_continuous), owning_building_guid = 22) - LocalObject(1692, Painbox.Constructor(Vector3(3077.882f, 3917.05f, 53.0685f), painbox_door_radius_continuous), owning_building_guid = 22) + LocalObject( + 1659, + Painbox.Constructor(Vector3(3055.594f, 3878.334f, 73.5564f), painbox), + owning_building_guid = 22 + ) + LocalObject( + 1668, + Painbox.Constructor(Vector3(3064.753f, 3905.712f, 53.5975f), painbox_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1677, + Painbox.Constructor(Vector3(3054.182f, 3892.798f, 73.7615f), painbox_door_radius), + owning_building_guid = 22 + ) + LocalObject( + 1690, + Painbox.Constructor(Vector3(3060.54f, 3895.793f, 51.8835f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1691, + Painbox.Constructor(Vector3(3062.515f, 3923.831f, 51.24179f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 1692, + Painbox.Constructor(Vector3(3077.882f, 3917.05f, 53.0685f), painbox_door_radius_continuous), + owning_building_guid = 22 + ) LocalObject(221, Generator.Constructor(Vector3(3054.025f, 3874.445f, 68.2336f)), owning_building_guid = 22) - LocalObject(212, Terminal.Constructor(Vector3(3053.978f, 3882.637f, 69.5276f), gen_control), owning_building_guid = 22) + LocalObject( + 212, + Terminal.Constructor(Vector3(3053.978f, 3882.637f, 69.5276f), gen_control), + owning_building_guid = 22 + ) } Building13() def Building13(): Unit = { // Name: Zal Type: cryo_facility GUID: 25, MapID: 13 - LocalBuilding("Zal", 25, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3970f, 2242f, 61.23898f), Vector3(0f, 0f, 227f), cryo_facility))) - LocalObject(162, CaptureTerminal.Constructor(Vector3(4032.501f, 2222.124f, 51.23898f), capture_terminal), owning_building_guid = 25) + LocalBuilding( + "Zal", + 25, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3970f, 2242f, 61.23898f), + Vector3(0f, 0f, 227f), + cryo_facility + ) + ) + ) + LocalObject( + 162, + CaptureTerminal.Constructor(Vector3(4032.501f, 2222.124f, 51.23898f), capture_terminal), + owning_building_guid = 25 + ) LocalObject(335, Door.Constructor(Vector3(3880.892f, 2281.341f, 62.75998f)), owning_building_guid = 25) LocalObject(338, Door.Constructor(Vector3(3893.324f, 2281.369f, 62.78997f)), owning_building_guid = 25) LocalObject(340, Door.Constructor(Vector3(3898.193f, 2239.327f, 70.75397f)), owning_building_guid = 25) @@ -689,15 +1869,60 @@ object Map08 { // Oshur Prime LocalObject(2039, Door.Constructor(Vector3(3971.006f, 2234.673f, 53.09298f)), owning_building_guid = 25) LocalObject(2040, Door.Constructor(Vector3(3976.34f, 2229.699f, 53.09298f)), owning_building_guid = 25) LocalObject(2041, Door.Constructor(Vector3(3981.67f, 2224.728f, 53.09298f)), owning_building_guid = 25) - LocalObject(701, IFFLock.Constructor(Vector3(3989.823f, 2222.462f, 62.72097f), Vector3(0, 0, 133)), owning_building_guid = 25, door_guid = 665) - LocalObject(791, IFFLock.Constructor(Vector3(3881.83f, 2279.353f, 62.69098f), Vector3(0, 0, 223)), owning_building_guid = 25, door_guid = 335) - LocalObject(797, IFFLock.Constructor(Vector3(3955.96f, 2223.384f, 45.07497f), Vector3(0, 0, 43)), owning_building_guid = 25, door_guid = 580) - LocalObject(798, IFFLock.Constructor(Vector3(3960.152f, 2232.626f, 52.57497f), Vector3(0, 0, 313)), owning_building_guid = 25, door_guid = 583) - LocalObject(799, IFFLock.Constructor(Vector3(3971.562f, 2237.872f, 72.69098f), Vector3(0, 0, 133)), owning_building_guid = 25, door_guid = 353) - LocalObject(800, IFFLock.Constructor(Vector3(3981.033f, 2217.453f, 52.57497f), Vector3(0, 0, 133)), owning_building_guid = 25, door_guid = 587) - LocalObject(801, IFFLock.Constructor(Vector3(3996.478f, 2238.073f, 72.69098f), Vector3(0, 0, 223)), owning_building_guid = 25, door_guid = 354) - LocalObject(802, IFFLock.Constructor(Vector3(4036.695f, 2211.51f, 52.57497f), Vector3(0, 0, 223)), owning_building_guid = 25, door_guid = 597) - LocalObject(803, IFFLock.Constructor(Vector3(4041.047f, 2220.787f, 52.57497f), Vector3(0, 0, 43)), owning_building_guid = 25, door_guid = 598) + LocalObject( + 701, + IFFLock.Constructor(Vector3(3989.823f, 2222.462f, 62.72097f), Vector3(0, 0, 133)), + owning_building_guid = 25, + door_guid = 665 + ) + LocalObject( + 791, + IFFLock.Constructor(Vector3(3881.83f, 2279.353f, 62.69098f), Vector3(0, 0, 223)), + owning_building_guid = 25, + door_guid = 335 + ) + LocalObject( + 797, + IFFLock.Constructor(Vector3(3955.96f, 2223.384f, 45.07497f), Vector3(0, 0, 43)), + owning_building_guid = 25, + door_guid = 580 + ) + LocalObject( + 798, + IFFLock.Constructor(Vector3(3960.152f, 2232.626f, 52.57497f), Vector3(0, 0, 313)), + owning_building_guid = 25, + door_guid = 583 + ) + LocalObject( + 799, + IFFLock.Constructor(Vector3(3971.562f, 2237.872f, 72.69098f), Vector3(0, 0, 133)), + owning_building_guid = 25, + door_guid = 353 + ) + LocalObject( + 800, + IFFLock.Constructor(Vector3(3981.033f, 2217.453f, 52.57497f), Vector3(0, 0, 133)), + owning_building_guid = 25, + door_guid = 587 + ) + LocalObject( + 801, + IFFLock.Constructor(Vector3(3996.478f, 2238.073f, 72.69098f), Vector3(0, 0, 223)), + owning_building_guid = 25, + door_guid = 354 + ) + LocalObject( + 802, + IFFLock.Constructor(Vector3(4036.695f, 2211.51f, 52.57497f), Vector3(0, 0, 223)), + owning_building_guid = 25, + door_guid = 597 + ) + LocalObject( + 803, + IFFLock.Constructor(Vector3(4041.047f, 2220.787f, 52.57497f), Vector3(0, 0, 43)), + owning_building_guid = 25, + door_guid = 598 + ) LocalObject(1021, Locker.Constructor(Vector3(3945.743f, 2212.527f, 51.14698f)), owning_building_guid = 25) LocalObject(1022, Locker.Constructor(Vector3(3946.463f, 2213.299f, 51.14698f)), owning_building_guid = 25) LocalObject(1023, Locker.Constructor(Vector3(3947.186f, 2214.074f, 51.14698f)), owning_building_guid = 25) @@ -727,76 +1952,309 @@ object Map08 { // Oshur Prime LocalObject(1204, Locker.Constructor(Vector3(3953.495f, 2232.424f, 61.00998f)), owning_building_guid = 25) LocalObject(1205, Locker.Constructor(Vector3(3955.34f, 2230.704f, 61.23898f)), owning_building_guid = 25) LocalObject(1206, Locker.Constructor(Vector3(3956.096f, 2229.999f, 61.23898f)), owning_building_guid = 25) - LocalObject(174, Terminal.Constructor(Vector3(3993.099f, 2196.023f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(175, Terminal.Constructor(Vector3(3993.028f, 2198.069f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(176, Terminal.Constructor(Vector3(3998.456f, 2191.027f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(177, Terminal.Constructor(Vector3(4000.503f, 2191.099f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(178, Terminal.Constructor(Vector3(4001.689f, 2207.358f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(179, Terminal.Constructor(Vector3(4003.736f, 2207.429f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(180, Terminal.Constructor(Vector3(4009.093f, 2202.433f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(181, Terminal.Constructor(Vector3(4009.164f, 2200.387f, 51.22897f), cert_terminal), owning_building_guid = 25) - LocalObject(1390, Terminal.Constructor(Vector3(3962.696f, 2223.305f, 52.82898f), order_terminal), owning_building_guid = 25) - LocalObject(1391, Terminal.Constructor(Vector3(3965.425f, 2220.76f, 52.82898f), order_terminal), owning_building_guid = 25) - LocalObject(1392, Terminal.Constructor(Vector3(3968.196f, 2218.177f, 52.82898f), order_terminal), owning_building_guid = 25) - LocalObject(1393, Terminal.Constructor(Vector3(3983.806f, 2242.837f, 62.53397f), order_terminal), owning_building_guid = 25) - LocalObject(1980, Terminal.Constructor(Vector3(3939.586f, 2292.362f, 55.35197f), spawn_terminal), owning_building_guid = 25) - LocalObject(1981, Terminal.Constructor(Vector3(3958.724f, 2249.91f, 62.81797f), spawn_terminal), owning_building_guid = 25) - LocalObject(1982, Terminal.Constructor(Vector3(3968.981f, 2236.153f, 53.37297f), spawn_terminal), owning_building_guid = 25) - LocalObject(1983, Terminal.Constructor(Vector3(3974.317f, 2231.183f, 53.37297f), spawn_terminal), owning_building_guid = 25) - LocalObject(1984, Terminal.Constructor(Vector3(3979.646f, 2226.21f, 53.37297f), spawn_terminal), owning_building_guid = 25) - LocalObject(1985, Terminal.Constructor(Vector3(3996.846f, 2271.659f, 52.85197f), spawn_terminal), owning_building_guid = 25) - LocalObject(1986, Terminal.Constructor(Vector3(4017.211f, 2198.786f, 52.85197f), spawn_terminal), owning_building_guid = 25) - LocalObject(2136, Terminal.Constructor(Vector3(3898.126f, 2257.573f, 63.54398f), vehicle_terminal_combined), owning_building_guid = 25) - LocalObject(1314, VehicleSpawnPad.Constructor(Vector3(3907.362f, 2267.61f, 59.38597f), mb_pad_creation, Vector3(0, 0, 43)), owning_building_guid = 25, terminal_guid = 2136) + LocalObject( + 174, + Terminal.Constructor(Vector3(3993.099f, 2196.023f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(3993.028f, 2198.069f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 176, + Terminal.Constructor(Vector3(3998.456f, 2191.027f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 177, + Terminal.Constructor(Vector3(4000.503f, 2191.099f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 178, + Terminal.Constructor(Vector3(4001.689f, 2207.358f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(4003.736f, 2207.429f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 180, + Terminal.Constructor(Vector3(4009.093f, 2202.433f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 181, + Terminal.Constructor(Vector3(4009.164f, 2200.387f, 51.22897f), cert_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1390, + Terminal.Constructor(Vector3(3962.696f, 2223.305f, 52.82898f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1391, + Terminal.Constructor(Vector3(3965.425f, 2220.76f, 52.82898f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1392, + Terminal.Constructor(Vector3(3968.196f, 2218.177f, 52.82898f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1393, + Terminal.Constructor(Vector3(3983.806f, 2242.837f, 62.53397f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1980, + Terminal.Constructor(Vector3(3939.586f, 2292.362f, 55.35197f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1981, + Terminal.Constructor(Vector3(3958.724f, 2249.91f, 62.81797f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1982, + Terminal.Constructor(Vector3(3968.981f, 2236.153f, 53.37297f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1983, + Terminal.Constructor(Vector3(3974.317f, 2231.183f, 53.37297f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1984, + Terminal.Constructor(Vector3(3979.646f, 2226.21f, 53.37297f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1985, + Terminal.Constructor(Vector3(3996.846f, 2271.659f, 52.85197f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1986, + Terminal.Constructor(Vector3(4017.211f, 2198.786f, 52.85197f), spawn_terminal), + owning_building_guid = 25 + ) + LocalObject( + 2136, + Terminal.Constructor(Vector3(3898.126f, 2257.573f, 63.54398f), vehicle_terminal_combined), + owning_building_guid = 25 + ) + LocalObject( + 1314, + VehicleSpawnPad.Constructor(Vector3(3907.362f, 2267.61f, 59.38597f), mb_pad_creation, Vector3(0, 0, 43)), + owning_building_guid = 25, + terminal_guid = 2136 + ) LocalObject(1851, ResourceSilo.Constructor(Vector3(4048.293f, 2251.396f, 68.25597f)), owning_building_guid = 25) - LocalObject(1886, SpawnTube.Constructor(Vector3(3970.538f, 2235.71f, 51.23898f), Vector3(0, 0, 133)), owning_building_guid = 25) - LocalObject(1887, SpawnTube.Constructor(Vector3(3975.87f, 2230.738f, 51.23898f), Vector3(0, 0, 133)), owning_building_guid = 25) - LocalObject(1888, SpawnTube.Constructor(Vector3(3981.2f, 2225.768f, 51.23898f), Vector3(0, 0, 133)), owning_building_guid = 25) - LocalObject(120, ProximityTerminal.Constructor(Vector3(3963.449f, 2245.397f, 61.04898f), adv_med_terminal), owning_building_guid = 25) - LocalObject(1331, ProximityTerminal.Constructor(Vector3(3954.039f, 2219.089f, 51.23898f), medical_terminal), owning_building_guid = 25) - LocalObject(1552, ProximityTerminal.Constructor(Vector3(3920.603f, 2290.528f, 69.59097f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1553, Terminal.Constructor(Vector3(3920.603f, 2290.528f, 69.59097f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1558, ProximityTerminal.Constructor(Vector3(3937.056f, 2297.492f, 71.53197f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1559, Terminal.Constructor(Vector3(3937.056f, 2297.492f, 71.53197f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1561, ProximityTerminal.Constructor(Vector3(4002.194f, 2210.17f, 71.57098f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1562, Terminal.Constructor(Vector3(4002.194f, 2210.17f, 71.57098f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1564, ProximityTerminal.Constructor(Vector3(4019.399f, 2216.307f, 69.58098f), pad_landing_frame), owning_building_guid = 25) - LocalObject(1565, Terminal.Constructor(Vector3(4019.399f, 2216.307f, 69.58098f), air_rearm_terminal), owning_building_guid = 25) - LocalObject(1810, ProximityTerminal.Constructor(Vector3(3932.142f, 2325.81f, 60.98898f), repair_silo), owning_building_guid = 25) - LocalObject(1811, Terminal.Constructor(Vector3(3932.142f, 2325.81f, 60.98898f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(1814, ProximityTerminal.Constructor(Vector3(3945.775f, 2192.765f, 60.98898f), repair_silo), owning_building_guid = 25) - LocalObject(1815, Terminal.Constructor(Vector3(3945.775f, 2192.765f, 60.98898f), ground_rearm_terminal), owning_building_guid = 25) - LocalObject(1263, FacilityTurret.Constructor(Vector3(3855.937f, 2261.368f, 69.64098f), manned_turret), owning_building_guid = 25) + LocalObject( + 1886, + SpawnTube.Constructor(Vector3(3970.538f, 2235.71f, 51.23898f), Vector3(0, 0, 133)), + owning_building_guid = 25 + ) + LocalObject( + 1887, + SpawnTube.Constructor(Vector3(3975.87f, 2230.738f, 51.23898f), Vector3(0, 0, 133)), + owning_building_guid = 25 + ) + LocalObject( + 1888, + SpawnTube.Constructor(Vector3(3981.2f, 2225.768f, 51.23898f), Vector3(0, 0, 133)), + owning_building_guid = 25 + ) + LocalObject( + 120, + ProximityTerminal.Constructor(Vector3(3963.449f, 2245.397f, 61.04898f), adv_med_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1331, + ProximityTerminal.Constructor(Vector3(3954.039f, 2219.089f, 51.23898f), medical_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1552, + ProximityTerminal.Constructor(Vector3(3920.603f, 2290.528f, 69.59097f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1553, + Terminal.Constructor(Vector3(3920.603f, 2290.528f, 69.59097f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1558, + ProximityTerminal.Constructor(Vector3(3937.056f, 2297.492f, 71.53197f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1559, + Terminal.Constructor(Vector3(3937.056f, 2297.492f, 71.53197f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1561, + ProximityTerminal.Constructor(Vector3(4002.194f, 2210.17f, 71.57098f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1562, + Terminal.Constructor(Vector3(4002.194f, 2210.17f, 71.57098f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1564, + ProximityTerminal.Constructor(Vector3(4019.399f, 2216.307f, 69.58098f), pad_landing_frame), + owning_building_guid = 25 + ) + LocalObject( + 1565, + Terminal.Constructor(Vector3(4019.399f, 2216.307f, 69.58098f), air_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1810, + ProximityTerminal.Constructor(Vector3(3932.142f, 2325.81f, 60.98898f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 1811, + Terminal.Constructor(Vector3(3932.142f, 2325.81f, 60.98898f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1814, + ProximityTerminal.Constructor(Vector3(3945.775f, 2192.765f, 60.98898f), repair_silo), + owning_building_guid = 25 + ) + LocalObject( + 1815, + Terminal.Constructor(Vector3(3945.775f, 2192.765f, 60.98898f), ground_rearm_terminal), + owning_building_guid = 25 + ) + LocalObject( + 1263, + FacilityTurret.Constructor(Vector3(3855.937f, 2261.368f, 69.64098f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1263, 5025) - LocalObject(1266, FacilityTurret.Constructor(Vector3(3948.167f, 2360.26f, 69.64098f), manned_turret), owning_building_guid = 25) + LocalObject( + 1266, + FacilityTurret.Constructor(Vector3(3948.167f, 2360.26f, 69.64098f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1266, 5026) - LocalObject(1267, FacilityTurret.Constructor(Vector3(3953.952f, 2168.344f, 69.64098f), manned_turret), owning_building_guid = 25) + LocalObject( + 1267, + FacilityTurret.Constructor(Vector3(3953.952f, 2168.344f, 69.64098f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1267, 5027) - LocalObject(1270, FacilityTurret.Constructor(Vector3(4014.907f, 2170.501f, 69.64098f), manned_turret), owning_building_guid = 25) + LocalObject( + 1270, + FacilityTurret.Constructor(Vector3(4014.907f, 2170.501f, 69.64098f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1270, 5028) - LocalObject(1272, FacilityTurret.Constructor(Vector3(4077.69f, 2239.489f, 69.64098f), manned_turret), owning_building_guid = 25) + LocalObject( + 1272, + FacilityTurret.Constructor(Vector3(4077.69f, 2239.489f, 69.64098f), manned_turret), + owning_building_guid = 25 + ) TurretToWeapon(1272, 5029) - LocalObject(683, ImplantTerminalMech.Constructor(Vector3(3995.584f, 2204.379f, 50.71598f)), owning_building_guid = 25) - LocalObject(677, Terminal.Constructor(Vector3(3995.597f, 2204.367f, 50.71598f), implant_terminal_interface), owning_building_guid = 25) + LocalObject( + 683, + ImplantTerminalMech.Constructor(Vector3(3995.584f, 2204.379f, 50.71598f)), + owning_building_guid = 25 + ) + LocalObject( + 677, + Terminal.Constructor(Vector3(3995.597f, 2204.367f, 50.71598f), implant_terminal_interface), + owning_building_guid = 25 + ) TerminalToInterface(683, 677) - LocalObject(684, ImplantTerminalMech.Constructor(Vector3(4006.823f, 2193.915f, 50.71598f)), owning_building_guid = 25) - LocalObject(678, Terminal.Constructor(Vector3(4006.809f, 2193.927f, 50.71598f), implant_terminal_interface), owning_building_guid = 25) + LocalObject( + 684, + ImplantTerminalMech.Constructor(Vector3(4006.823f, 2193.915f, 50.71598f)), + owning_building_guid = 25 + ) + LocalObject( + 678, + Terminal.Constructor(Vector3(4006.809f, 2193.927f, 50.71598f), implant_terminal_interface), + owning_building_guid = 25 + ) TerminalToInterface(684, 678) - LocalObject(1662, Painbox.Constructor(Vector3(3951.802f, 2251.322f, 75.26778f), painbox), owning_building_guid = 25) - LocalObject(1671, Painbox.Constructor(Vector3(3965.579f, 2225.951f, 55.30888f), painbox_continuous), owning_building_guid = 25) - LocalObject(1680, Painbox.Constructor(Vector3(3963.343f, 2242.489f, 75.47288f), painbox_door_radius), owning_building_guid = 25) - LocalObject(1699, Painbox.Constructor(Vector3(3961.198f, 2235.797f, 53.59488f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(1700, Painbox.Constructor(Vector3(3964.917f, 2208.616f, 54.77988f), painbox_door_radius_continuous), owning_building_guid = 25) - LocalObject(1701, Painbox.Constructor(Vector3(3980.356f, 2215.23f, 52.95317f), painbox_door_radius_continuous), owning_building_guid = 25) + LocalObject( + 1662, + Painbox.Constructor(Vector3(3951.802f, 2251.322f, 75.26778f), painbox), + owning_building_guid = 25 + ) + LocalObject( + 1671, + Painbox.Constructor(Vector3(3965.579f, 2225.951f, 55.30888f), painbox_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1680, + Painbox.Constructor(Vector3(3963.343f, 2242.489f, 75.47288f), painbox_door_radius), + owning_building_guid = 25 + ) + LocalObject( + 1699, + Painbox.Constructor(Vector3(3961.198f, 2235.797f, 53.59488f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1700, + Painbox.Constructor(Vector3(3964.917f, 2208.616f, 54.77988f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 1701, + Painbox.Constructor(Vector3(3980.356f, 2215.23f, 52.95317f), painbox_door_radius_continuous), + owning_building_guid = 25 + ) LocalObject(224, Generator.Constructor(Vector3(3950.028f, 2255.121f, 69.94498f)), owning_building_guid = 25) - LocalObject(215, Terminal.Constructor(Vector3(3956.051f, 2249.568f, 71.23898f), gen_control), owning_building_guid = 25) + LocalObject( + 215, + Terminal.Constructor(Vector3(3956.051f, 2249.568f, 71.23898f), gen_control), + owning_building_guid = 25 + ) } Building12() def Building12(): Unit = { // Name: Yazata Type: cryo_facility GUID: 28, MapID: 12 - LocalBuilding("Yazata", 28, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4680f, 3934f, 61.7468f), Vector3(0f, 0f, 90f), cryo_facility))) - LocalObject(163, CaptureTerminal.Constructor(Vector3(4620.734f, 3905.911f, 51.7468f), capture_terminal), owning_building_guid = 28) + LocalBuilding( + "Yazata", + 28, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4680f, 3934f, 61.7468f), + Vector3(0f, 0f, 90f), + cryo_facility + ) + ) + ) + LocalObject( + 163, + CaptureTerminal.Constructor(Vector3(4620.734f, 3905.911f, 51.7468f), capture_terminal), + owning_building_guid = 28 + ) LocalObject(380, Door.Constructor(Vector3(4612.197f, 3891.674f, 63.2978f)), owning_building_guid = 28) LocalObject(381, Door.Constructor(Vector3(4612.197f, 3909.867f, 71.2618f)), owning_building_guid = 28) LocalObject(386, Door.Constructor(Vector3(4657.307f, 3875.023f, 71.2618f)), owning_building_guid = 28) @@ -837,15 +2295,60 @@ object Map08 { // Oshur Prime LocalObject(2052, Door.Constructor(Vector3(4659.685f, 3938.673f, 53.6008f)), owning_building_guid = 28) LocalObject(2053, Door.Constructor(Vector3(4666.974f, 3938.673f, 53.6008f)), owning_building_guid = 28) LocalObject(2054, Door.Constructor(Vector3(4674.267f, 3938.673f, 53.6008f)), owning_building_guid = 28) - LocalObject(702, IFFLock.Constructor(Vector3(4652.178f, 3934.77f, 63.2288f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 666) - LocalObject(824, IFFLock.Constructor(Vector3(4610.428f, 3910.813f, 53.0828f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 600) - LocalObject(825, IFFLock.Constructor(Vector3(4613.572f, 3901.06f, 53.0828f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 599) - LocalObject(830, IFFLock.Constructor(Vector3(4655.19f, 3944.428f, 53.0828f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 605) - LocalObject(831, IFFLock.Constructor(Vector3(4657.957f, 3918.814f, 73.19881f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 387) - LocalObject(832, IFFLock.Constructor(Vector3(4676.042f, 3935.954f, 73.19881f), Vector3(0, 0, 270)), owning_building_guid = 28, door_guid = 389) - LocalObject(833, IFFLock.Constructor(Vector3(4677.572f, 3957.19f, 45.5828f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 610) - LocalObject(834, IFFLock.Constructor(Vector3(4680.81f, 3947.572f, 53.0828f), Vector3(0, 0, 90)), owning_building_guid = 28, door_guid = 613) - LocalObject(843, IFFLock.Constructor(Vector3(4769.958f, 3966.814f, 63.1988f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 404) + LocalObject( + 702, + IFFLock.Constructor(Vector3(4652.178f, 3934.77f, 63.2288f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 666 + ) + LocalObject( + 824, + IFFLock.Constructor(Vector3(4610.428f, 3910.813f, 53.0828f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 600 + ) + LocalObject( + 825, + IFFLock.Constructor(Vector3(4613.572f, 3901.06f, 53.0828f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 599 + ) + LocalObject( + 830, + IFFLock.Constructor(Vector3(4655.19f, 3944.428f, 53.0828f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 605 + ) + LocalObject( + 831, + IFFLock.Constructor(Vector3(4657.957f, 3918.814f, 73.19881f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 387 + ) + LocalObject( + 832, + IFFLock.Constructor(Vector3(4676.042f, 3935.954f, 73.19881f), Vector3(0, 0, 270)), + owning_building_guid = 28, + door_guid = 389 + ) + LocalObject( + 833, + IFFLock.Constructor(Vector3(4677.572f, 3957.19f, 45.5828f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 610 + ) + LocalObject( + 834, + IFFLock.Constructor(Vector3(4680.81f, 3947.572f, 53.0828f), Vector3(0, 0, 90)), + owning_building_guid = 28, + door_guid = 613 + ) + LocalObject( + 843, + IFFLock.Constructor(Vector3(4769.958f, 3966.814f, 63.1988f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 404 + ) LocalObject(1074, Locker.Constructor(Vector3(4625.473f, 3953.997f, 51.7418f)), owning_building_guid = 28) LocalObject(1075, Locker.Constructor(Vector3(4626.725f, 3953.997f, 51.7418f)), owning_building_guid = 28) LocalObject(1076, Locker.Constructor(Vector3(4627.987f, 3953.997f, 51.7418f)), owning_building_guid = 28) @@ -875,88 +2378,326 @@ object Map08 { // Oshur Prime LocalObject(1212, Locker.Constructor(Vector3(4688.662f, 3952.26f, 61.5178f)), owning_building_guid = 28) LocalObject(1213, Locker.Constructor(Vector3(4691.179f, 3952.26f, 61.7468f)), owning_building_guid = 28) LocalObject(1214, Locker.Constructor(Vector3(4692.213f, 3952.26f, 61.7468f)), owning_building_guid = 28) - LocalObject(182, Terminal.Constructor(Vector3(4622.977f, 3937.724f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(183, Terminal.Constructor(Vector3(4622.977f, 3950.424f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(184, Terminal.Constructor(Vector3(4624.425f, 3936.276f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(185, Terminal.Constructor(Vector3(4624.425f, 3951.872f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(186, Terminal.Constructor(Vector3(4631.75f, 3936.276f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(187, Terminal.Constructor(Vector3(4631.75f, 3951.872f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(188, Terminal.Constructor(Vector3(4633.198f, 3937.724f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(189, Terminal.Constructor(Vector3(4633.198f, 3950.424f, 51.7368f), cert_terminal), owning_building_guid = 28) - LocalObject(1409, Terminal.Constructor(Vector3(4665.072f, 3952.654f, 53.3368f), order_terminal), owning_building_guid = 28) - LocalObject(1410, Terminal.Constructor(Vector3(4668.861f, 3952.654f, 53.3368f), order_terminal), owning_building_guid = 28) - LocalObject(1411, Terminal.Constructor(Vector3(4670.474f, 3923.972f, 63.0418f), order_terminal), owning_building_guid = 28) - LocalObject(1412, Terminal.Constructor(Vector3(4672.592f, 3952.654f, 53.3368f), order_terminal), owning_building_guid = 28) - LocalObject(1987, Terminal.Constructor(Vector3(4616f, 3933.407f, 53.3598f), spawn_terminal), owning_building_guid = 28) - LocalObject(1988, Terminal.Constructor(Vector3(4662.177f, 3938.97f, 53.8808f), spawn_terminal), owning_building_guid = 28) - LocalObject(1989, Terminal.Constructor(Vector3(4669.465f, 3938.967f, 53.8808f), spawn_terminal), owning_building_guid = 28) - LocalObject(1990, Terminal.Constructor(Vector3(4676.757f, 3938.971f, 53.8808f), spawn_terminal), owning_building_guid = 28) - LocalObject(1991, Terminal.Constructor(Vector3(4680.593f, 3894f, 53.3598f), spawn_terminal), owning_building_guid = 28) - LocalObject(1992, Terminal.Constructor(Vector3(4693.641f, 3935.905f, 63.3258f), spawn_terminal), owning_building_guid = 28) - LocalObject(1999, Terminal.Constructor(Vector3(4736.59f, 3917.91f, 55.8598f), spawn_terminal), owning_building_guid = 28) - LocalObject(2137, Terminal.Constructor(Vector3(4743.186f, 3971.628f, 64.0518f), vehicle_terminal_combined), owning_building_guid = 28) - LocalObject(1316, VehicleSpawnPad.Constructor(Vector3(4743.276f, 3957.989f, 59.8938f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 28, terminal_guid = 2137) + LocalObject( + 182, + Terminal.Constructor(Vector3(4622.977f, 3937.724f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 183, + Terminal.Constructor(Vector3(4622.977f, 3950.424f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 184, + Terminal.Constructor(Vector3(4624.425f, 3936.276f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 185, + Terminal.Constructor(Vector3(4624.425f, 3951.872f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 186, + Terminal.Constructor(Vector3(4631.75f, 3936.276f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(4631.75f, 3951.872f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(4633.198f, 3937.724f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(4633.198f, 3950.424f, 51.7368f), cert_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1409, + Terminal.Constructor(Vector3(4665.072f, 3952.654f, 53.3368f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1410, + Terminal.Constructor(Vector3(4668.861f, 3952.654f, 53.3368f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1411, + Terminal.Constructor(Vector3(4670.474f, 3923.972f, 63.0418f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1412, + Terminal.Constructor(Vector3(4672.592f, 3952.654f, 53.3368f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1987, + Terminal.Constructor(Vector3(4616f, 3933.407f, 53.3598f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1988, + Terminal.Constructor(Vector3(4662.177f, 3938.97f, 53.8808f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1989, + Terminal.Constructor(Vector3(4669.465f, 3938.967f, 53.8808f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1990, + Terminal.Constructor(Vector3(4676.757f, 3938.971f, 53.8808f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1991, + Terminal.Constructor(Vector3(4680.593f, 3894f, 53.3598f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1992, + Terminal.Constructor(Vector3(4693.641f, 3935.905f, 63.3258f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1999, + Terminal.Constructor(Vector3(4736.59f, 3917.91f, 55.8598f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 2137, + Terminal.Constructor(Vector3(4743.186f, 3971.628f, 64.0518f), vehicle_terminal_combined), + owning_building_guid = 28 + ) + LocalObject( + 1316, + VehicleSpawnPad.Constructor(Vector3(4743.276f, 3957.989f, 59.8938f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 28, + terminal_guid = 2137 + ) LocalObject(1852, ResourceSilo.Constructor(Vector3(4629.148f, 3873.733f, 68.7638f)), owning_building_guid = 28) - LocalObject(1899, SpawnTube.Constructor(Vector3(4660.738f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), owning_building_guid = 28) - LocalObject(1900, SpawnTube.Constructor(Vector3(4668.026f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), owning_building_guid = 28) - LocalObject(1901, SpawnTube.Constructor(Vector3(4675.317f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), owning_building_guid = 28) - LocalObject(121, ProximityTerminal.Constructor(Vector3(4687.108f, 3935.983f, 61.5568f), adv_med_terminal), owning_building_guid = 28) - LocalObject(1332, ProximityTerminal.Constructor(Vector3(4676.048f, 3961.642f, 51.7468f), medical_terminal), owning_building_guid = 28) - LocalObject(1567, ProximityTerminal.Constructor(Vector3(4626.349f, 3919.101f, 70.08881f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1568, Terminal.Constructor(Vector3(4626.349f, 3919.101f, 70.08881f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1570, ProximityTerminal.Constructor(Vector3(4634.747f, 3935.323f, 72.0788f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1571, Terminal.Constructor(Vector3(4634.747f, 3935.323f, 72.0788f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1585, ProximityTerminal.Constructor(Vector3(4741.939f, 3915.883f, 72.0398f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1586, Terminal.Constructor(Vector3(4741.939f, 3915.883f, 72.0398f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1588, ProximityTerminal.Constructor(Vector3(4749.223f, 3932.198f, 70.0988f), pad_landing_frame), owning_building_guid = 28) - LocalObject(1589, Terminal.Constructor(Vector3(4749.223f, 3932.198f, 70.0988f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(1826, ProximityTerminal.Constructor(Vector3(4664.139f, 3986.53f, 61.4968f), repair_silo), owning_building_guid = 28) - LocalObject(1827, Terminal.Constructor(Vector3(4664.139f, 3986.53f, 61.4968f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(1830, ProximityTerminal.Constructor(Vector3(4764.846f, 3898.525f, 61.4968f), repair_silo), owning_building_guid = 28) - LocalObject(1831, Terminal.Constructor(Vector3(4764.846f, 3898.525f, 61.4968f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(1276, FacilityTurret.Constructor(Vector3(4598.395f, 3955.665f, 70.1488f), manned_turret), owning_building_guid = 28) + LocalObject( + 1899, + SpawnTube.Constructor(Vector3(4660.738f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), + owning_building_guid = 28 + ) + LocalObject( + 1900, + SpawnTube.Constructor(Vector3(4668.026f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), + owning_building_guid = 28 + ) + LocalObject( + 1901, + SpawnTube.Constructor(Vector3(4675.317f, 3938.233f, 51.7468f), Vector3(0, 0, 270)), + owning_building_guid = 28 + ) + LocalObject( + 121, + ProximityTerminal.Constructor(Vector3(4687.108f, 3935.983f, 61.5568f), adv_med_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1332, + ProximityTerminal.Constructor(Vector3(4676.048f, 3961.642f, 51.7468f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1567, + ProximityTerminal.Constructor(Vector3(4626.349f, 3919.101f, 70.08881f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1568, + Terminal.Constructor(Vector3(4626.349f, 3919.101f, 70.08881f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1570, + ProximityTerminal.Constructor(Vector3(4634.747f, 3935.323f, 72.0788f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1571, + Terminal.Constructor(Vector3(4634.747f, 3935.323f, 72.0788f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1585, + ProximityTerminal.Constructor(Vector3(4741.939f, 3915.883f, 72.0398f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1586, + Terminal.Constructor(Vector3(4741.939f, 3915.883f, 72.0398f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1588, + ProximityTerminal.Constructor(Vector3(4749.223f, 3932.198f, 70.0988f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 1589, + Terminal.Constructor(Vector3(4749.223f, 3932.198f, 70.0988f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1826, + ProximityTerminal.Constructor(Vector3(4664.139f, 3986.53f, 61.4968f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 1827, + Terminal.Constructor(Vector3(4664.139f, 3986.53f, 61.4968f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1830, + ProximityTerminal.Constructor(Vector3(4764.846f, 3898.525f, 61.4968f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 1831, + Terminal.Constructor(Vector3(4764.846f, 3898.525f, 61.4968f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1276, + FacilityTurret.Constructor(Vector3(4598.395f, 3955.665f, 70.1488f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1276, 5030) - LocalObject(1277, FacilityTurret.Constructor(Vector3(4599.528f, 3862.392f, 70.1488f), manned_turret), owning_building_guid = 28) + LocalObject( + 1277, + FacilityTurret.Constructor(Vector3(4599.528f, 3862.392f, 70.1488f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1277, 5031) - LocalObject(1280, FacilityTurret.Constructor(Vector3(4641.504f, 3998.813f, 70.1488f), manned_turret), owning_building_guid = 28) + LocalObject( + 1280, + FacilityTurret.Constructor(Vector3(4641.504f, 3998.813f, 70.1488f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1280, 5032) - LocalObject(1285, FacilityTurret.Constructor(Vector3(4776.621f, 3862.4f, 70.1488f), manned_turret), owning_building_guid = 28) + LocalObject( + 1285, + FacilityTurret.Constructor(Vector3(4776.621f, 3862.4f, 70.1488f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1285, 5033) - LocalObject(1286, FacilityTurret.Constructor(Vector3(4776.629f, 3997.626f, 70.1488f), manned_turret), owning_building_guid = 28) + LocalObject( + 1286, + FacilityTurret.Constructor(Vector3(4776.629f, 3997.626f, 70.1488f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(1286, 5034) - LocalObject(685, ImplantTerminalMech.Constructor(Vector3(4620.276f, 3944.054f, 51.2238f)), owning_building_guid = 28) - LocalObject(679, Terminal.Constructor(Vector3(4620.294f, 3944.054f, 51.2238f), implant_terminal_interface), owning_building_guid = 28) + LocalObject( + 685, + ImplantTerminalMech.Constructor(Vector3(4620.276f, 3944.054f, 51.2238f)), + owning_building_guid = 28 + ) + LocalObject( + 679, + Terminal.Constructor(Vector3(4620.294f, 3944.054f, 51.2238f), implant_terminal_interface), + owning_building_guid = 28 + ) TerminalToInterface(685, 679) - LocalObject(686, ImplantTerminalMech.Constructor(Vector3(4635.632f, 3944.066f, 51.2238f)), owning_building_guid = 28) - LocalObject(680, Terminal.Constructor(Vector3(4635.614f, 3944.066f, 51.2238f), implant_terminal_interface), owning_building_guid = 28) + LocalObject( + 686, + ImplantTerminalMech.Constructor(Vector3(4635.632f, 3944.066f, 51.2238f)), + owning_building_guid = 28 + ) + LocalObject( + 680, + Terminal.Constructor(Vector3(4635.614f, 3944.066f, 51.2238f), implant_terminal_interface), + owning_building_guid = 28 + ) TerminalToInterface(686, 680) - LocalObject(1663, Painbox.Constructor(Vector3(4699.666f, 3939.594f, 75.7756f), painbox), owning_building_guid = 28) - LocalObject(1672, Painbox.Constructor(Vector3(4672.288f, 3948.753f, 55.8167f), painbox_continuous), owning_building_guid = 28) - LocalObject(1681, Painbox.Constructor(Vector3(4685.202f, 3938.182f, 75.98071f), painbox_door_radius), owning_building_guid = 28) - LocalObject(1702, Painbox.Constructor(Vector3(4654.169f, 3946.515f, 53.461f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(1703, Painbox.Constructor(Vector3(4660.95f, 3961.882f, 55.2877f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(1704, Painbox.Constructor(Vector3(4682.207f, 3944.54f, 54.1027f), painbox_door_radius_continuous), owning_building_guid = 28) + LocalObject( + 1663, + Painbox.Constructor(Vector3(4699.666f, 3939.594f, 75.7756f), painbox), + owning_building_guid = 28 + ) + LocalObject( + 1672, + Painbox.Constructor(Vector3(4672.288f, 3948.753f, 55.8167f), painbox_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1681, + Painbox.Constructor(Vector3(4685.202f, 3938.182f, 75.98071f), painbox_door_radius), + owning_building_guid = 28 + ) + LocalObject( + 1702, + Painbox.Constructor(Vector3(4654.169f, 3946.515f, 53.461f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1703, + Painbox.Constructor(Vector3(4660.95f, 3961.882f, 55.2877f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1704, + Painbox.Constructor(Vector3(4682.207f, 3944.54f, 54.1027f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) LocalObject(225, Generator.Constructor(Vector3(4703.555f, 3938.025f, 70.4528f)), owning_building_guid = 28) - LocalObject(216, Terminal.Constructor(Vector3(4695.363f, 3937.978f, 71.7468f), gen_control), owning_building_guid = 28) + LocalObject( + 216, + Terminal.Constructor(Vector3(4695.363f, 3937.978f, 71.7468f), gen_control), + owning_building_guid = 28 + ) } Building24811() def Building24811(): Unit = { // Name: GW_Oshur_N Type: hst GUID: 32, MapID: 24811 - LocalBuilding("GW_Oshur_N", 32, 24811, FoundationBuilder(WarpGate.Structure(Vector3(4033.39f, 5379.88f, 46.13f), hst))) + LocalBuilding( + "GW_Oshur_N", + 32, + 24811, + FoundationBuilder(WarpGate.Structure(Vector3(4033.39f, 5379.88f, 46.13f), hst)) + ) } Building24815() def Building24815(): Unit = { // Name: GW_Oshur_S Type: hst GUID: 33, MapID: 24815 - LocalBuilding("GW_Oshur_S", 33, 24815, FoundationBuilder(WarpGate.Structure(Vector3(6068.59f, 3165.49f, 31.65f), hst))) + LocalBuilding( + "GW_Oshur_S", + 33, + 24815, + FoundationBuilder(WarpGate.Structure(Vector3(6068.59f, 3165.49f, 31.65f), hst)) + ) } Building9() def Building9(): Unit = { // Name: Jamshid Type: tech_plant GUID: 34, MapID: 9 - LocalBuilding("Jamshid", 34, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2274f, 3448f, 52.4434f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(157, CaptureTerminal.Constructor(Vector3(2278.734f, 3403.911f, 67.5434f), capture_terminal), owning_building_guid = 34) + LocalBuilding( + "Jamshid", + 34, + 9, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(2274f, 3448f, 52.4434f), Vector3(0f, 0f, 360f), tech_plant) + ) + ) + LocalObject( + 157, + CaptureTerminal.Constructor(Vector3(2278.734f, 3403.911f, 67.5434f), capture_terminal), + owning_building_guid = 34 + ) LocalObject(228, Door.Constructor(Vector3(2202.54f, 3377.929f, 53.9854f)), owning_building_guid = 34) LocalObject(229, Door.Constructor(Vector3(2202.54f, 3396.121f, 61.9484f)), owning_building_guid = 34) LocalObject(230, Door.Constructor(Vector3(2202.54f, 3451.673f, 53.9854f)), owning_building_guid = 34) @@ -995,16 +2736,66 @@ object Map08 { // Oshur Prime LocalObject(2008, Door.Constructor(Vector3(2286.673f, 3405.733f, 46.8974f)), owning_building_guid = 34) LocalObject(2009, Door.Constructor(Vector3(2286.673f, 3413.026f, 46.8974f)), owning_building_guid = 34) LocalObject(2010, Door.Constructor(Vector3(2286.673f, 3420.315f, 46.8974f)), owning_building_guid = 34) - LocalObject(696, IFFLock.Constructor(Vector3(2317.357f, 3399.603f, 54.0234f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 660) - LocalObject(705, IFFLock.Constructor(Vector3(2231.256f, 3490.353f, 54.1314f), Vector3(0, 0, 360)), owning_building_guid = 34, door_guid = 461) - LocalObject(708, IFFLock.Constructor(Vector3(2233.186f, 3345.954f, 53.9954f), Vector3(0, 0, 270)), owning_building_guid = 34, door_guid = 232) - LocalObject(709, IFFLock.Constructor(Vector3(2268.428f, 3408.94f, 68.87939f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 474) - LocalObject(710, IFFLock.Constructor(Vector3(2282.554f, 3425.383f, 68.9894f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 235) - LocalObject(711, IFFLock.Constructor(Vector3(2292.428f, 3424.81f, 46.3794f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 482) - LocalObject(712, IFFLock.Constructor(Vector3(2293.496f, 3407.775f, 68.9894f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 236) - LocalObject(713, IFFLock.Constructor(Vector3(2295.572f, 3399.19f, 46.3794f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 481) - LocalObject(714, IFFLock.Constructor(Vector3(2303.572f, 3431.057f, 38.8794f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 483) - LocalObject(715, IFFLock.Constructor(Vector3(2305.06f, 3402.428f, 38.8794f), Vector3(0, 0, 270)), owning_building_guid = 34, door_guid = 484) + LocalObject( + 696, + IFFLock.Constructor(Vector3(2317.357f, 3399.603f, 54.0234f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 660 + ) + LocalObject( + 705, + IFFLock.Constructor(Vector3(2231.256f, 3490.353f, 54.1314f), Vector3(0, 0, 360)), + owning_building_guid = 34, + door_guid = 461 + ) + LocalObject( + 708, + IFFLock.Constructor(Vector3(2233.186f, 3345.954f, 53.9954f), Vector3(0, 0, 270)), + owning_building_guid = 34, + door_guid = 232 + ) + LocalObject( + 709, + IFFLock.Constructor(Vector3(2268.428f, 3408.94f, 68.87939f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 474 + ) + LocalObject( + 710, + IFFLock.Constructor(Vector3(2282.554f, 3425.383f, 68.9894f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 235 + ) + LocalObject( + 711, + IFFLock.Constructor(Vector3(2292.428f, 3424.81f, 46.3794f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 482 + ) + LocalObject( + 712, + IFFLock.Constructor(Vector3(2293.496f, 3407.775f, 68.9894f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 236 + ) + LocalObject( + 713, + IFFLock.Constructor(Vector3(2295.572f, 3399.19f, 46.3794f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 481 + ) + LocalObject( + 714, + IFFLock.Constructor(Vector3(2303.572f, 3431.057f, 38.8794f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 483 + ) + LocalObject( + 715, + IFFLock.Constructor(Vector3(2305.06f, 3402.428f, 38.8794f), Vector3(0, 0, 270)), + owning_building_guid = 34, + door_guid = 484 + ) LocalObject(888, Locker.Constructor(Vector3(2297.563f, 3402.141f, 45.3044f)), owning_building_guid = 34) LocalObject(889, Locker.Constructor(Vector3(2298.727f, 3402.141f, 45.3044f)), owning_building_guid = 34) LocalObject(890, Locker.Constructor(Vector3(2299.874f, 3402.141f, 45.3044f)), owning_building_guid = 34) @@ -1017,72 +2808,295 @@ object Map08 { // Oshur Prime LocalObject(897, Locker.Constructor(Vector3(2318.055f, 3422.165f, 37.5434f)), owning_building_guid = 34) LocalObject(898, Locker.Constructor(Vector3(2319.391f, 3422.165f, 37.5434f)), owning_building_guid = 34) LocalObject(899, Locker.Constructor(Vector3(2320.728f, 3422.165f, 37.5434f)), owning_building_guid = 34) - LocalObject(122, Terminal.Constructor(Vector3(2278.673f, 3423.141f, 68.1464f), air_vehicle_terminal), owning_building_guid = 34) - LocalObject(1308, VehicleSpawnPad.Constructor(Vector3(2274.07f, 3443.835f, 65.0214f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 34, terminal_guid = 122) - LocalObject(123, Terminal.Constructor(Vector3(2290.605f, 3423.141f, 68.1464f), air_vehicle_terminal), owning_building_guid = 34) - LocalObject(1309, VehicleSpawnPad.Constructor(Vector3(2295.088f, 3443.835f, 65.0214f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 34, terminal_guid = 123) - LocalObject(1337, Terminal.Constructor(Vector3(2277.058f, 3421.486f, 58.8734f), order_terminal), owning_building_guid = 34) - LocalObject(1338, Terminal.Constructor(Vector3(2300.654f, 3407.408f, 46.6334f), order_terminal), owning_building_guid = 34) - LocalObject(1339, Terminal.Constructor(Vector3(2300.654f, 3411.139f, 46.6334f), order_terminal), owning_building_guid = 34) - LocalObject(1340, Terminal.Constructor(Vector3(2300.654f, 3414.928f, 46.6334f), order_terminal), owning_building_guid = 34) - LocalObject(1945, Terminal.Constructor(Vector3(2249.942f, 3352.591f, 46.6004f), spawn_terminal), owning_building_guid = 34) - LocalObject(1946, Terminal.Constructor(Vector3(2281.942f, 3400.591f, 39.1004f), spawn_terminal), owning_building_guid = 34) - LocalObject(1947, Terminal.Constructor(Vector3(2286.971f, 3403.243f, 47.1774f), spawn_terminal), owning_building_guid = 34) - LocalObject(1948, Terminal.Constructor(Vector3(2286.967f, 3410.535f, 47.1774f), spawn_terminal), owning_building_guid = 34) - LocalObject(1949, Terminal.Constructor(Vector3(2286.97f, 3417.823f, 47.1774f), spawn_terminal), owning_building_guid = 34) - LocalObject(1950, Terminal.Constructor(Vector3(2288.532f, 3451.215f, 64.4664f), spawn_terminal), owning_building_guid = 34) - LocalObject(1951, Terminal.Constructor(Vector3(2311.242f, 3427.639f, 59.1254f), spawn_terminal), owning_building_guid = 34) - LocalObject(2131, Terminal.Constructor(Vector3(2225.996f, 3407.423f, 38.2574f), ground_vehicle_terminal), owning_building_guid = 34) - LocalObject(1307, VehicleSpawnPad.Constructor(Vector3(2225.945f, 3418.339f, 29.9804f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 34, terminal_guid = 2131) + LocalObject( + 122, + Terminal.Constructor(Vector3(2278.673f, 3423.141f, 68.1464f), air_vehicle_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1308, + VehicleSpawnPad.Constructor(Vector3(2274.07f, 3443.835f, 65.0214f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 34, + terminal_guid = 122 + ) + LocalObject( + 123, + Terminal.Constructor(Vector3(2290.605f, 3423.141f, 68.1464f), air_vehicle_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1309, + VehicleSpawnPad.Constructor(Vector3(2295.088f, 3443.835f, 65.0214f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 34, + terminal_guid = 123 + ) + LocalObject( + 1337, + Terminal.Constructor(Vector3(2277.058f, 3421.486f, 58.8734f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1338, + Terminal.Constructor(Vector3(2300.654f, 3407.408f, 46.6334f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1339, + Terminal.Constructor(Vector3(2300.654f, 3411.139f, 46.6334f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1340, + Terminal.Constructor(Vector3(2300.654f, 3414.928f, 46.6334f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1945, + Terminal.Constructor(Vector3(2249.942f, 3352.591f, 46.6004f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1946, + Terminal.Constructor(Vector3(2281.942f, 3400.591f, 39.1004f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1947, + Terminal.Constructor(Vector3(2286.971f, 3403.243f, 47.1774f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1948, + Terminal.Constructor(Vector3(2286.967f, 3410.535f, 47.1774f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(2286.97f, 3417.823f, 47.1774f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1950, + Terminal.Constructor(Vector3(2288.532f, 3451.215f, 64.4664f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1951, + Terminal.Constructor(Vector3(2311.242f, 3427.639f, 59.1254f), spawn_terminal), + owning_building_guid = 34 + ) + LocalObject( + 2131, + Terminal.Constructor(Vector3(2225.996f, 3407.423f, 38.2574f), ground_vehicle_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1307, + VehicleSpawnPad.Constructor(Vector3(2225.945f, 3418.339f, 29.9804f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 34, + terminal_guid = 2131 + ) LocalObject(1846, ResourceSilo.Constructor(Vector3(2335.752f, 3480.555f, 59.4514f)), owning_building_guid = 34) - LocalObject(1855, SpawnTube.Constructor(Vector3(2286.233f, 3404.683f, 45.0434f), Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1856, SpawnTube.Constructor(Vector3(2286.233f, 3411.974f, 45.0434f), Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1857, SpawnTube.Constructor(Vector3(2286.233f, 3419.262f, 45.0434f), Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1322, ProximityTerminal.Constructor(Vector3(2277.059f, 3410.901f, 57.5404f), medical_terminal), owning_building_guid = 34) - LocalObject(1323, ProximityTerminal.Constructor(Vector3(2314.444f, 3421.62f, 37.5434f), medical_terminal), owning_building_guid = 34) - LocalObject(1498, ProximityTerminal.Constructor(Vector3(2212.704f, 3423.661f, 60.6384f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1499, Terminal.Constructor(Vector3(2212.704f, 3423.661f, 60.6384f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1501, ProximityTerminal.Constructor(Vector3(2232.98f, 3439.833f, 62.9934f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1502, Terminal.Constructor(Vector3(2232.98f, 3439.833f, 62.9934f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1504, ProximityTerminal.Constructor(Vector3(2283.379f, 3383.474f, 67.8904f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1505, Terminal.Constructor(Vector3(2283.379f, 3383.474f, 67.8904f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1507, ProximityTerminal.Constructor(Vector3(2299.534f, 3366.628f, 60.6514f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1508, Terminal.Constructor(Vector3(2299.534f, 3366.628f, 60.6514f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1510, ProximityTerminal.Constructor(Vector3(2335.987f, 3405.855f, 63.0954f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1511, Terminal.Constructor(Vector3(2335.987f, 3405.855f, 63.0954f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1513, ProximityTerminal.Constructor(Vector3(2342.28f, 3422.102f, 60.6514f), pad_landing_frame), owning_building_guid = 34) - LocalObject(1514, Terminal.Constructor(Vector3(2342.28f, 3422.102f, 60.6514f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(1774, ProximityTerminal.Constructor(Vector3(2274.309f, 3489.637f, 52.1719f), repair_silo), owning_building_guid = 34) - LocalObject(1775, Terminal.Constructor(Vector3(2274.309f, 3489.637f, 52.1719f), ground_rearm_terminal), owning_building_guid = 34) - LocalObject(1778, ProximityTerminal.Constructor(Vector3(2332.637f, 3355.208f, 52.1934f), repair_silo), owning_building_guid = 34) - LocalObject(1779, Terminal.Constructor(Vector3(2332.637f, 3355.208f, 52.1934f), ground_rearm_terminal), owning_building_guid = 34) - LocalObject(1224, FacilityTurret.Constructor(Vector3(2189.906f, 3546.855f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1855, + SpawnTube.Constructor(Vector3(2286.233f, 3404.683f, 45.0434f), Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1856, + SpawnTube.Constructor(Vector3(2286.233f, 3411.974f, 45.0434f), Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1857, + SpawnTube.Constructor(Vector3(2286.233f, 3419.262f, 45.0434f), Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1322, + ProximityTerminal.Constructor(Vector3(2277.059f, 3410.901f, 57.5404f), medical_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1323, + ProximityTerminal.Constructor(Vector3(2314.444f, 3421.62f, 37.5434f), medical_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1498, + ProximityTerminal.Constructor(Vector3(2212.704f, 3423.661f, 60.6384f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1499, + Terminal.Constructor(Vector3(2212.704f, 3423.661f, 60.6384f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1501, + ProximityTerminal.Constructor(Vector3(2232.98f, 3439.833f, 62.9934f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1502, + Terminal.Constructor(Vector3(2232.98f, 3439.833f, 62.9934f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1504, + ProximityTerminal.Constructor(Vector3(2283.379f, 3383.474f, 67.8904f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1505, + Terminal.Constructor(Vector3(2283.379f, 3383.474f, 67.8904f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1507, + ProximityTerminal.Constructor(Vector3(2299.534f, 3366.628f, 60.6514f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1508, + Terminal.Constructor(Vector3(2299.534f, 3366.628f, 60.6514f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1510, + ProximityTerminal.Constructor(Vector3(2335.987f, 3405.855f, 63.0954f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1511, + Terminal.Constructor(Vector3(2335.987f, 3405.855f, 63.0954f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1513, + ProximityTerminal.Constructor(Vector3(2342.28f, 3422.102f, 60.6514f), pad_landing_frame), + owning_building_guid = 34 + ) + LocalObject( + 1514, + Terminal.Constructor(Vector3(2342.28f, 3422.102f, 60.6514f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1774, + ProximityTerminal.Constructor(Vector3(2274.309f, 3489.637f, 52.1719f), repair_silo), + owning_building_guid = 34 + ) + LocalObject( + 1775, + Terminal.Constructor(Vector3(2274.309f, 3489.637f, 52.1719f), ground_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1778, + ProximityTerminal.Constructor(Vector3(2332.637f, 3355.208f, 52.1934f), repair_silo), + owning_building_guid = 34 + ) + LocalObject( + 1779, + Terminal.Constructor(Vector3(2332.637f, 3355.208f, 52.1934f), ground_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1224, + FacilityTurret.Constructor(Vector3(2189.906f, 3546.855f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1224, 5035) - LocalObject(1225, FacilityTurret.Constructor(Vector3(2195.413f, 3348.665f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1225, + FacilityTurret.Constructor(Vector3(2195.413f, 3348.665f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1225, 5036) - LocalObject(1226, FacilityTurret.Constructor(Vector3(2279.601f, 3546.855f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1226, + FacilityTurret.Constructor(Vector3(2279.601f, 3546.855f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1226, 5037) - LocalObject(1229, FacilityTurret.Constructor(Vector3(2360.154f, 3348.657f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1229, + FacilityTurret.Constructor(Vector3(2360.154f, 3348.657f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1229, 5038) - LocalObject(1230, FacilityTurret.Constructor(Vector3(2360.154f, 3486.398f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1230, + FacilityTurret.Constructor(Vector3(2360.154f, 3486.398f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1230, 5039) - LocalObject(1231, FacilityTurret.Constructor(Vector3(2367.881f, 3413.423f, 60.9424f), manned_turret), owning_building_guid = 34) + LocalObject( + 1231, + FacilityTurret.Constructor(Vector3(2367.881f, 3413.423f, 60.9424f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(1231, 5040) - LocalObject(1657, Painbox.Constructor(Vector3(2299.737f, 3444.206f, 41.0167f), painbox), owning_building_guid = 34) - LocalObject(1666, Painbox.Constructor(Vector3(2294.832f, 3411.212f, 49.3133f), painbox_continuous), owning_building_guid = 34) - LocalObject(1675, Painbox.Constructor(Vector3(2301.7f, 3429.471f, 40.7028f), painbox_door_radius), owning_building_guid = 34) - LocalObject(1684, Painbox.Constructor(Vector3(2293.035f, 3398.278f, 47.1713f), painbox_door_radius_continuous), owning_building_guid = 34) - LocalObject(1685, Painbox.Constructor(Vector3(2293.861f, 3425.769f, 47.7196f), painbox_door_radius_continuous), owning_building_guid = 34) - LocalObject(1686, Painbox.Constructor(Vector3(2309.641f, 3418.57f, 48.6257f), painbox_door_radius_continuous), owning_building_guid = 34) + LocalObject( + 1657, + Painbox.Constructor(Vector3(2299.737f, 3444.206f, 41.0167f), painbox), + owning_building_guid = 34 + ) + LocalObject( + 1666, + Painbox.Constructor(Vector3(2294.832f, 3411.212f, 49.3133f), painbox_continuous), + owning_building_guid = 34 + ) + LocalObject( + 1675, + Painbox.Constructor(Vector3(2301.7f, 3429.471f, 40.7028f), painbox_door_radius), + owning_building_guid = 34 + ) + LocalObject( + 1684, + Painbox.Constructor(Vector3(2293.035f, 3398.278f, 47.1713f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 1685, + Painbox.Constructor(Vector3(2293.861f, 3425.769f, 47.7196f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 1686, + Painbox.Constructor(Vector3(2309.641f, 3418.57f, 48.6257f), painbox_door_radius_continuous), + owning_building_guid = 34 + ) LocalObject(219, Generator.Constructor(Vector3(2301.975f, 3447.555f, 36.2494f)), owning_building_guid = 34) - LocalObject(210, Terminal.Constructor(Vector3(2302.022f, 3439.363f, 37.5434f), gen_control), owning_building_guid = 34) + LocalObject( + 210, + Terminal.Constructor(Vector3(2302.022f, 3439.363f, 37.5434f), gen_control), + owning_building_guid = 34 + ) } Building6() def Building6(): Unit = { // Name: Dahaka Type: tech_plant GUID: 37, MapID: 6 - LocalBuilding("Dahaka", 37, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4758f, 5388f, 53.64695f), Vector3(0f, 0f, 222f), tech_plant))) - LocalObject(164, CaptureTerminal.Constructor(Vector3(4724.98f, 5417.597f, 68.74695f), capture_terminal), owning_building_guid = 37) + LocalBuilding( + "Dahaka", + 37, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4758f, 5388f, 53.64695f), + Vector3(0f, 0f, 222f), + tech_plant + ) + ) + ) + LocalObject( + 164, + CaptureTerminal.Constructor(Vector3(4724.98f, 5417.597f, 68.74695f), capture_terminal), + owning_building_guid = 37 + ) LocalObject(390, Door.Constructor(Vector3(4689.182f, 5346.336f, 63.15195f)), owning_building_guid = 37) LocalObject(391, Door.Constructor(Vector3(4693.555f, 5452.692f, 55.29795f)), owning_building_guid = 37) LocalObject(392, Door.Constructor(Vector3(4701.355f, 5332.816f, 55.18895f)), owning_building_guid = 37) @@ -1121,16 +3135,66 @@ object Map08 { // Oshur Prime LocalObject(2055, Door.Constructor(Vector3(4720.3f, 5410.931f, 48.10095f)), owning_building_guid = 37) LocalObject(2056, Door.Constructor(Vector3(4725.18f, 5405.511f, 48.10095f)), owning_building_guid = 37) LocalObject(2057, Door.Constructor(Vector3(4730.057f, 5400.094f, 48.10095f)), owning_building_guid = 37) - LocalObject(703, IFFLock.Constructor(Vector3(4693.396f, 5394.955f, 55.22695f), Vector3(0, 0, 318)), owning_building_guid = 37, door_guid = 667) - LocalObject(706, IFFLock.Constructor(Vector3(4818.104f, 5385.127f, 55.33495f), Vector3(0, 0, 138)), owning_building_guid = 37, door_guid = 462) - LocalObject(835, IFFLock.Constructor(Vector3(4704.424f, 5401.083f, 40.08295f), Vector3(0, 0, 48)), owning_building_guid = 37, door_guid = 617) - LocalObject(836, IFFLock.Constructor(Vector3(4709.309f, 5409.838f, 47.58295f), Vector3(0, 0, 318)), owning_building_guid = 37, door_guid = 622) - LocalObject(837, IFFLock.Constructor(Vector3(4716.596f, 5404.848f, 70.19295f), Vector3(0, 0, 318)), owning_building_guid = 37, door_guid = 395) - LocalObject(838, IFFLock.Constructor(Vector3(4720.049f, 5491.145f, 55.19895f), Vector3(0, 0, 48)), owning_building_guid = 37, door_guid = 396) - LocalObject(839, IFFLock.Constructor(Vector3(4724.687f, 5380.804f, 40.08295f), Vector3(0, 0, 318)), owning_building_guid = 37, door_guid = 625) - LocalObject(840, IFFLock.Constructor(Vector3(4728.788f, 5392.903f, 47.58295f), Vector3(0, 0, 138)), owning_building_guid = 37, door_guid = 626) - LocalObject(841, IFFLock.Constructor(Vector3(4736.004f, 5420.756f, 70.08295f), Vector3(0, 0, 138)), owning_building_guid = 37, door_guid = 629) - LocalObject(842, IFFLock.Constructor(Vector3(4736.509f, 5399.084f, 70.19295f), Vector3(0, 0, 138)), owning_building_guid = 37, door_guid = 398) + LocalObject( + 703, + IFFLock.Constructor(Vector3(4693.396f, 5394.955f, 55.22695f), Vector3(0, 0, 318)), + owning_building_guid = 37, + door_guid = 667 + ) + LocalObject( + 706, + IFFLock.Constructor(Vector3(4818.104f, 5385.127f, 55.33495f), Vector3(0, 0, 138)), + owning_building_guid = 37, + door_guid = 462 + ) + LocalObject( + 835, + IFFLock.Constructor(Vector3(4704.424f, 5401.083f, 40.08295f), Vector3(0, 0, 48)), + owning_building_guid = 37, + door_guid = 617 + ) + LocalObject( + 836, + IFFLock.Constructor(Vector3(4709.309f, 5409.838f, 47.58295f), Vector3(0, 0, 318)), + owning_building_guid = 37, + door_guid = 622 + ) + LocalObject( + 837, + IFFLock.Constructor(Vector3(4716.596f, 5404.848f, 70.19295f), Vector3(0, 0, 318)), + owning_building_guid = 37, + door_guid = 395 + ) + LocalObject( + 838, + IFFLock.Constructor(Vector3(4720.049f, 5491.145f, 55.19895f), Vector3(0, 0, 48)), + owning_building_guid = 37, + door_guid = 396 + ) + LocalObject( + 839, + IFFLock.Constructor(Vector3(4724.687f, 5380.804f, 40.08295f), Vector3(0, 0, 318)), + owning_building_guid = 37, + door_guid = 625 + ) + LocalObject( + 840, + IFFLock.Constructor(Vector3(4728.788f, 5392.903f, 47.58295f), Vector3(0, 0, 138)), + owning_building_guid = 37, + door_guid = 626 + ) + LocalObject( + 841, + IFFLock.Constructor(Vector3(4736.004f, 5420.756f, 70.08295f), Vector3(0, 0, 138)), + owning_building_guid = 37, + door_guid = 629 + ) + LocalObject( + 842, + IFFLock.Constructor(Vector3(4736.509f, 5399.084f, 70.19295f), Vector3(0, 0, 138)), + owning_building_guid = 37, + door_guid = 398 + ) LocalObject(1103, Locker.Constructor(Vector3(4705.987f, 5375.932f, 38.74695f)), owning_building_guid = 37) LocalObject(1104, Locker.Constructor(Vector3(4706.981f, 5376.827f, 38.74695f)), owning_building_guid = 37) LocalObject(1105, Locker.Constructor(Vector3(4707.232f, 5403.998f, 46.50795f)), owning_building_guid = 37) @@ -1143,72 +3207,290 @@ object Map08 { // Oshur Prime LocalObject(1112, Locker.Constructor(Vector3(4713.325f, 5382.539f, 38.74695f)), owning_building_guid = 37) LocalObject(1113, Locker.Constructor(Vector3(4714.318f, 5383.433f, 38.74695f)), owning_building_guid = 37) LocalObject(1114, Locker.Constructor(Vector3(4715.302f, 5384.319f, 38.74695f)), owning_building_guid = 37) - LocalObject(124, Terminal.Constructor(Vector3(4729.026f, 5395.363f, 69.34995f), air_vehicle_terminal), owning_building_guid = 37) - LocalObject(1315, VehicleSpawnPad.Constructor(Vector3(4739.542f, 5376.984f, 66.22495f), mb_pad_creation, Vector3(0, 0, 138)), owning_building_guid = 37, terminal_guid = 124) - LocalObject(125, Terminal.Constructor(Vector3(4737.894f, 5403.347f, 69.34995f), air_vehicle_terminal), owning_building_guid = 37) - LocalObject(1317, VehicleSpawnPad.Constructor(Vector3(4755.161f, 5391.048f, 66.22495f), mb_pad_creation, Vector3(0, 0, 138)), owning_building_guid = 37, terminal_guid = 125) - LocalObject(1413, Terminal.Constructor(Vector3(4711.031f, 5400.331f, 47.83695f), order_terminal), owning_building_guid = 37) - LocalObject(1414, Terminal.Constructor(Vector3(4713.527f, 5397.558f, 47.83695f), order_terminal), owning_building_guid = 37) - LocalObject(1415, Terminal.Constructor(Vector3(4716.062f, 5394.742f, 47.83695f), order_terminal), owning_building_guid = 37) - LocalObject(1416, Terminal.Constructor(Vector3(4737.986f, 5405.658f, 60.07695f), order_terminal), owning_building_guid = 37) - LocalObject(1993, Terminal.Constructor(Vector3(4712.038f, 5475f, 47.80395f), spawn_terminal), owning_building_guid = 37) - LocalObject(1994, Terminal.Constructor(Vector3(4716.7f, 5378.211f, 60.32895f), spawn_terminal), owning_building_guid = 37) - LocalObject(1995, Terminal.Constructor(Vector3(4718.413f, 5412.582f, 48.38095f), spawn_terminal), owning_building_guid = 37) - LocalObject(1996, Terminal.Constructor(Vector3(4720.375f, 5417.917f, 40.30395f), spawn_terminal), owning_building_guid = 37) - LocalObject(1997, Terminal.Constructor(Vector3(4723.294f, 5407.166f, 48.38095f), spawn_terminal), owning_building_guid = 37) - LocalObject(1998, Terminal.Constructor(Vector3(4728.169f, 5401.747f, 48.38095f), spawn_terminal), owning_building_guid = 37) - LocalObject(2000, Terminal.Constructor(Vector3(4749.352f, 5375.887f, 65.66995f), spawn_terminal), owning_building_guid = 37) - LocalObject(2138, Terminal.Constructor(Vector3(4766.522f, 5450.275f, 39.46095f), ground_vehicle_terminal), owning_building_guid = 37) - LocalObject(1318, VehicleSpawnPad.Constructor(Vector3(4773.865f, 5442.197f, 31.18395f), mb_pad_creation, Vector3(0, 0, 138)), owning_building_guid = 37, terminal_guid = 2138) + LocalObject( + 124, + Terminal.Constructor(Vector3(4729.026f, 5395.363f, 69.34995f), air_vehicle_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1315, + VehicleSpawnPad.Constructor(Vector3(4739.542f, 5376.984f, 66.22495f), mb_pad_creation, Vector3(0, 0, 138)), + owning_building_guid = 37, + terminal_guid = 124 + ) + LocalObject( + 125, + Terminal.Constructor(Vector3(4737.894f, 5403.347f, 69.34995f), air_vehicle_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1317, + VehicleSpawnPad.Constructor(Vector3(4755.161f, 5391.048f, 66.22495f), mb_pad_creation, Vector3(0, 0, 138)), + owning_building_guid = 37, + terminal_guid = 125 + ) + LocalObject( + 1413, + Terminal.Constructor(Vector3(4711.031f, 5400.331f, 47.83695f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1414, + Terminal.Constructor(Vector3(4713.527f, 5397.558f, 47.83695f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1415, + Terminal.Constructor(Vector3(4716.062f, 5394.742f, 47.83695f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1416, + Terminal.Constructor(Vector3(4737.986f, 5405.658f, 60.07695f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1993, + Terminal.Constructor(Vector3(4712.038f, 5475f, 47.80395f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1994, + Terminal.Constructor(Vector3(4716.7f, 5378.211f, 60.32895f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1995, + Terminal.Constructor(Vector3(4718.413f, 5412.582f, 48.38095f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1996, + Terminal.Constructor(Vector3(4720.375f, 5417.917f, 40.30395f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1997, + Terminal.Constructor(Vector3(4723.294f, 5407.166f, 48.38095f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1998, + Terminal.Constructor(Vector3(4728.169f, 5401.747f, 48.38095f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2000, + Terminal.Constructor(Vector3(4749.352f, 5375.887f, 65.66995f), spawn_terminal), + owning_building_guid = 37 + ) + LocalObject( + 2138, + Terminal.Constructor(Vector3(4766.522f, 5450.275f, 39.46095f), ground_vehicle_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1318, + VehicleSpawnPad.Constructor(Vector3(4773.865f, 5442.197f, 31.18395f), mb_pad_creation, Vector3(0, 0, 138)), + owning_building_guid = 37, + terminal_guid = 2138 + ) LocalObject(1853, ResourceSilo.Constructor(Vector3(4733.893f, 5322.487f, 60.65495f)), owning_building_guid = 37) - LocalObject(1902, SpawnTube.Constructor(Vector3(4719.924f, 5412.005f, 46.24695f), Vector3(0, 0, 138)), owning_building_guid = 37) - LocalObject(1903, SpawnTube.Constructor(Vector3(4724.803f, 5406.587f, 46.24695f), Vector3(0, 0, 138)), owning_building_guid = 37) - LocalObject(1904, SpawnTube.Constructor(Vector3(4729.68f, 5401.171f, 46.24695f), Vector3(0, 0, 138)), owning_building_guid = 37) - LocalObject(1333, ProximityTerminal.Constructor(Vector3(4710.292f, 5380.542f, 38.74695f), medical_terminal), owning_building_guid = 37) - LocalObject(1334, ProximityTerminal.Constructor(Vector3(4730.903f, 5413.523f, 58.74395f), medical_terminal), owning_building_guid = 37) - LocalObject(1573, ProximityTerminal.Constructor(Vector3(4683.734f, 5377.842f, 64.29895f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1574, Terminal.Constructor(Vector3(4683.734f, 5377.842f, 64.29895f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1576, ProximityTerminal.Constructor(Vector3(4684.576f, 5431.386f, 61.85495f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1577, Terminal.Constructor(Vector3(4684.576f, 5431.386f, 61.85495f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1579, ProximityTerminal.Constructor(Vector3(4689.929f, 5361.558f, 61.85495f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1580, Terminal.Constructor(Vector3(4689.929f, 5361.558f, 61.85495f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1582, ProximityTerminal.Constructor(Vector3(4707.854f, 5429.676f, 69.09395f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1583, Terminal.Constructor(Vector3(4707.854f, 5429.676f, 69.09395f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1591, ProximityTerminal.Constructor(Vector3(4783.019f, 5421.517f, 64.19695f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1592, Terminal.Constructor(Vector3(4783.019f, 5421.517f, 64.19695f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1594, ProximityTerminal.Constructor(Vector3(4787.266f, 5447.103f, 61.84195f), pad_landing_frame), owning_building_guid = 37) - LocalObject(1595, Terminal.Constructor(Vector3(4787.266f, 5447.103f, 61.84195f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1822, ProximityTerminal.Constructor(Vector3(4652.334f, 5417.723f, 53.39695f), repair_silo), owning_building_guid = 37) - LocalObject(1823, Terminal.Constructor(Vector3(4652.334f, 5417.723f, 53.39695f), ground_rearm_terminal), owning_building_guid = 37) - LocalObject(1834, ProximityTerminal.Constructor(Vector3(4785.631f, 5356.852f, 53.37545f), repair_silo), owning_building_guid = 37) - LocalObject(1835, Terminal.Constructor(Vector3(4785.631f, 5356.852f, 53.37545f), ground_rearm_terminal), owning_building_guid = 37) - LocalObject(1279, FacilityTurret.Constructor(Vector3(4627.501f, 5404.178f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1902, + SpawnTube.Constructor(Vector3(4719.924f, 5412.005f, 46.24695f), Vector3(0, 0, 138)), + owning_building_guid = 37 + ) + LocalObject( + 1903, + SpawnTube.Constructor(Vector3(4724.803f, 5406.587f, 46.24695f), Vector3(0, 0, 138)), + owning_building_guid = 37 + ) + LocalObject( + 1904, + SpawnTube.Constructor(Vector3(4729.68f, 5401.171f, 46.24695f), Vector3(0, 0, 138)), + owning_building_guid = 37 + ) + LocalObject( + 1333, + ProximityTerminal.Constructor(Vector3(4710.292f, 5380.542f, 38.74695f), medical_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1334, + ProximityTerminal.Constructor(Vector3(4730.903f, 5413.523f, 58.74395f), medical_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1573, + ProximityTerminal.Constructor(Vector3(4683.734f, 5377.842f, 64.29895f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1574, + Terminal.Constructor(Vector3(4683.734f, 5377.842f, 64.29895f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1576, + ProximityTerminal.Constructor(Vector3(4684.576f, 5431.386f, 61.85495f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1577, + Terminal.Constructor(Vector3(4684.576f, 5431.386f, 61.85495f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1579, + ProximityTerminal.Constructor(Vector3(4689.929f, 5361.558f, 61.85495f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1580, + Terminal.Constructor(Vector3(4689.929f, 5361.558f, 61.85495f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1582, + ProximityTerminal.Constructor(Vector3(4707.854f, 5429.676f, 69.09395f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1583, + Terminal.Constructor(Vector3(4707.854f, 5429.676f, 69.09395f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1591, + ProximityTerminal.Constructor(Vector3(4783.019f, 5421.517f, 64.19695f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1592, + Terminal.Constructor(Vector3(4783.019f, 5421.517f, 64.19695f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1594, + ProximityTerminal.Constructor(Vector3(4787.266f, 5447.103f, 61.84195f), pad_landing_frame), + owning_building_guid = 37 + ) + LocalObject( + 1595, + Terminal.Constructor(Vector3(4787.266f, 5447.103f, 61.84195f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1822, + ProximityTerminal.Constructor(Vector3(4652.334f, 5417.723f, 53.39695f), repair_silo), + owning_building_guid = 37 + ) + LocalObject( + 1823, + Terminal.Constructor(Vector3(4652.334f, 5417.723f, 53.39695f), ground_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1834, + ProximityTerminal.Constructor(Vector3(4785.631f, 5356.852f, 53.37545f), repair_silo), + owning_building_guid = 37 + ) + LocalObject( + 1835, + Terminal.Constructor(Vector3(4785.631f, 5356.852f, 53.37545f), ground_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1279, + FacilityTurret.Constructor(Vector3(4627.501f, 5404.178f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1279, 5041) - LocalObject(1282, FacilityTurret.Constructor(Vector3(4665.096f, 5350.877f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1282, + FacilityTurret.Constructor(Vector3(4665.096f, 5350.877f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1282, 5042) - LocalObject(1283, FacilityTurret.Constructor(Vector3(4719.668f, 5301.816f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1283, + FacilityTurret.Constructor(Vector3(4719.668f, 5301.816f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1283, 5043) - LocalObject(1284, FacilityTurret.Constructor(Vector3(4749.934f, 5514.405f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1284, + FacilityTurret.Constructor(Vector3(4749.934f, 5514.405f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1284, 5044) - LocalObject(1287, FacilityTurret.Constructor(Vector3(4819.984f, 5310.789f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1287, + FacilityTurret.Constructor(Vector3(4819.984f, 5310.789f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1287, 5045) - LocalObject(1289, FacilityTurret.Constructor(Vector3(4886.641f, 5370.806f, 62.14595f), manned_turret), owning_building_guid = 37) + LocalObject( + 1289, + FacilityTurret.Constructor(Vector3(4886.641f, 5370.806f, 62.14595f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(1289, 5046) - LocalObject(1664, Painbox.Constructor(Vector3(4736.335f, 5373.598f, 42.22025f), painbox), owning_building_guid = 37) - LocalObject(1673, Painbox.Constructor(Vector3(4717.903f, 5401.399f, 50.51685f), painbox_continuous), owning_building_guid = 37) - LocalObject(1682, Painbox.Constructor(Vector3(4725.017f, 5383.235f, 41.90635f), painbox_door_radius), owning_building_guid = 37) - LocalObject(1705, Painbox.Constructor(Vector3(4710.584f, 5412.213f, 48.37485f), painbox_door_radius_continuous), owning_building_guid = 37) - LocalObject(1706, Painbox.Constructor(Vector3(4711.821f, 5386.022f, 49.82925f), painbox_door_radius_continuous), owning_building_guid = 37) - LocalObject(1707, Painbox.Constructor(Vector3(4728.365f, 5391.231f, 48.92315f), painbox_door_radius_continuous), owning_building_guid = 37) + LocalObject( + 1664, + Painbox.Constructor(Vector3(4736.335f, 5373.598f, 42.22025f), painbox), + owning_building_guid = 37 + ) + LocalObject( + 1673, + Painbox.Constructor(Vector3(4717.903f, 5401.399f, 50.51685f), painbox_continuous), + owning_building_guid = 37 + ) + LocalObject( + 1682, + Painbox.Constructor(Vector3(4725.017f, 5383.235f, 41.90635f), painbox_door_radius), + owning_building_guid = 37 + ) + LocalObject( + 1705, + Painbox.Constructor(Vector3(4710.584f, 5412.213f, 48.37485f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 1706, + Painbox.Constructor(Vector3(4711.821f, 5386.022f, 49.82925f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 1707, + Painbox.Constructor(Vector3(4728.365f, 5391.231f, 48.92315f), painbox_door_radius_continuous), + owning_building_guid = 37 + ) LocalObject(226, Generator.Constructor(Vector3(4736.913f, 5369.612f, 37.45295f)), owning_building_guid = 37) - LocalObject(217, Terminal.Constructor(Vector3(4731.396f, 5375.668f, 38.74695f), gen_control), owning_building_guid = 37) + LocalObject( + 217, + Terminal.Constructor(Vector3(4731.396f, 5375.668f, 38.74695f), gen_control), + owning_building_guid = 37 + ) } Building8() def Building8(): Unit = { // Name: Izha Type: tech_plant GUID: 40, MapID: 8 - LocalBuilding("Izha", 40, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5518f, 3878f, 50.5227f), Vector3(0f, 0f, 230f), tech_plant))) - LocalObject(165, CaptureTerminal.Constructor(Vector3(5481.183f, 3902.713f, 65.6227f), capture_terminal), owning_building_guid = 40) + LocalBuilding( + "Izha", + 40, + 8, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(5518f, 3878f, 50.5227f), Vector3(0f, 0f, 230f), tech_plant) + ) + ) + LocalObject( + 165, + CaptureTerminal.Constructor(Vector3(5481.183f, 3902.713f, 65.6227f), capture_terminal), + owning_building_guid = 40 + ) LocalObject(430, Door.Constructor(Vector3(5445.178f, 3933.093f, 52.1737f)), owning_building_guid = 40) LocalObject(431, Door.Constructor(Vector3(5455.65f, 3827.164f, 60.0277f)), owning_building_guid = 40) LocalObject(432, Door.Constructor(Vector3(5456.873f, 3947.03f, 60.1367f)), owning_building_guid = 40) @@ -1247,16 +3529,66 @@ object Map08 { // Oshur Prime LocalObject(2068, Door.Constructor(Vector3(5477.476f, 3895.461f, 44.9767f)), owning_building_guid = 40) LocalObject(2069, Door.Constructor(Vector3(5483.062f, 3890.773f, 44.9767f)), owning_building_guid = 40) LocalObject(2070, Door.Constructor(Vector3(5488.646f, 3886.087f, 44.9767f)), owning_building_guid = 40) - LocalObject(704, IFFLock.Constructor(Vector3(5453.057f, 3875.896f, 52.1027f), Vector3(0, 0, 310)), owning_building_guid = 40, door_guid = 668) - LocalObject(707, IFFLock.Constructor(Vector3(5577.919f, 3883.52f, 52.2107f), Vector3(0, 0, 130)), owning_building_guid = 40, door_guid = 463) - LocalObject(864, IFFLock.Constructor(Vector3(5463.125f, 3883.5f, 36.9587f), Vector3(0, 0, 40)), owning_building_guid = 40, door_guid = 643) - LocalObject(865, IFFLock.Constructor(Vector3(5466.063f, 3974.859f, 52.0747f), Vector3(0, 0, 40)), owning_building_guid = 40, door_guid = 433) - LocalObject(866, IFFLock.Constructor(Vector3(5466.743f, 3892.849f, 44.4587f), Vector3(0, 0, 310)), owning_building_guid = 40, door_guid = 645) - LocalObject(867, IFFLock.Constructor(Vector3(5474.654f, 3888.921f, 67.0687f), Vector3(0, 0, 310)), owning_building_guid = 40, door_guid = 435) - LocalObject(868, IFFLock.Constructor(Vector3(5486.012f, 3866.237f, 36.9587f), Vector3(0, 0, 310)), owning_building_guid = 40, door_guid = 648) - LocalObject(869, IFFLock.Constructor(Vector3(5488.39f, 3878.79f, 44.4587f), Vector3(0, 0, 130)), owning_building_guid = 40, door_guid = 647) - LocalObject(870, IFFLock.Constructor(Vector3(5491.66f, 3907.376f, 66.95869f), Vector3(0, 0, 130)), owning_building_guid = 40, door_guid = 651) - LocalObject(871, IFFLock.Constructor(Vector3(5495.176f, 3885.985f, 67.0687f), Vector3(0, 0, 130)), owning_building_guid = 40, door_guid = 436) + LocalObject( + 704, + IFFLock.Constructor(Vector3(5453.057f, 3875.896f, 52.1027f), Vector3(0, 0, 310)), + owning_building_guid = 40, + door_guid = 668 + ) + LocalObject( + 707, + IFFLock.Constructor(Vector3(5577.919f, 3883.52f, 52.2107f), Vector3(0, 0, 130)), + owning_building_guid = 40, + door_guid = 463 + ) + LocalObject( + 864, + IFFLock.Constructor(Vector3(5463.125f, 3883.5f, 36.9587f), Vector3(0, 0, 40)), + owning_building_guid = 40, + door_guid = 643 + ) + LocalObject( + 865, + IFFLock.Constructor(Vector3(5466.063f, 3974.859f, 52.0747f), Vector3(0, 0, 40)), + owning_building_guid = 40, + door_guid = 433 + ) + LocalObject( + 866, + IFFLock.Constructor(Vector3(5466.743f, 3892.849f, 44.4587f), Vector3(0, 0, 310)), + owning_building_guid = 40, + door_guid = 645 + ) + LocalObject( + 867, + IFFLock.Constructor(Vector3(5474.654f, 3888.921f, 67.0687f), Vector3(0, 0, 310)), + owning_building_guid = 40, + door_guid = 435 + ) + LocalObject( + 868, + IFFLock.Constructor(Vector3(5486.012f, 3866.237f, 36.9587f), Vector3(0, 0, 310)), + owning_building_guid = 40, + door_guid = 648 + ) + LocalObject( + 869, + IFFLock.Constructor(Vector3(5488.39f, 3878.79f, 44.4587f), Vector3(0, 0, 130)), + owning_building_guid = 40, + door_guid = 647 + ) + LocalObject( + 870, + IFFLock.Constructor(Vector3(5491.66f, 3907.376f, 66.95869f), Vector3(0, 0, 130)), + owning_building_guid = 40, + door_guid = 651 + ) + LocalObject( + 871, + IFFLock.Constructor(Vector3(5495.176f, 3885.985f, 67.0687f), Vector3(0, 0, 130)), + owning_building_guid = 40, + door_guid = 436 + ) LocalObject(1155, Locker.Constructor(Vector3(5465.5f, 3886.777f, 43.3837f)), owning_building_guid = 40) LocalObject(1156, Locker.Constructor(Vector3(5466.238f, 3887.657f, 43.3837f)), owning_building_guid = 40) LocalObject(1157, Locker.Constructor(Vector3(5466.976f, 3888.536f, 43.3837f)), owning_building_guid = 40) @@ -1269,82 +3601,316 @@ object Map08 { // Oshur Prime LocalObject(1164, Locker.Constructor(Vector3(5474.52f, 3866.375f, 35.6227f)), owning_building_guid = 40) LocalObject(1165, Locker.Constructor(Vector3(5475.379f, 3867.398f, 35.6227f)), owning_building_guid = 40) LocalObject(1166, Locker.Constructor(Vector3(5476.23f, 3868.412f, 35.6227f)), owning_building_guid = 40) - LocalObject(126, Terminal.Constructor(Vector3(5488.283f, 3881.259f, 66.2257f), air_vehicle_terminal), owning_building_guid = 40) - LocalObject(1319, VehicleSpawnPad.Constructor(Vector3(5501.254f, 3864.523f, 63.1007f), mb_pad_creation, Vector3(0, 0, 130)), owning_building_guid = 40, terminal_guid = 126) - LocalObject(127, Terminal.Constructor(Vector3(5495.953f, 3890.399f, 66.2257f), air_vehicle_terminal), owning_building_guid = 40) - LocalObject(1320, VehicleSpawnPad.Constructor(Vector3(5514.765f, 3880.624f, 63.1007f), mb_pad_creation, Vector3(0, 0, 130)), owning_building_guid = 40, terminal_guid = 127) - LocalObject(1432, Terminal.Constructor(Vector3(5469.772f, 3883.674f, 44.7127f), order_terminal), owning_building_guid = 40) - LocalObject(1433, Terminal.Constructor(Vector3(5472.63f, 3881.276f, 44.7127f), order_terminal), owning_building_guid = 40) - LocalObject(1434, Terminal.Constructor(Vector3(5475.533f, 3878.84f, 44.7127f), order_terminal), owning_building_guid = 40) - LocalObject(1435, Terminal.Constructor(Vector3(5495.724f, 3892.7f, 56.9527f), order_terminal), owning_building_guid = 40) - LocalObject(2001, Terminal.Constructor(Vector3(5460.376f, 3957.757f, 44.6797f), spawn_terminal), owning_building_guid = 40) - LocalObject(2002, Terminal.Constructor(Vector3(5475.376f, 3896.833f, 45.2567f), spawn_terminal), owning_building_guid = 40) - LocalObject(2003, Terminal.Constructor(Vector3(5476.578f, 3902.39f, 37.1797f), spawn_terminal), owning_building_guid = 40) - LocalObject(2004, Terminal.Constructor(Vector3(5478.464f, 3862.559f, 57.2047f), spawn_terminal), owning_building_guid = 40) - LocalObject(2005, Terminal.Constructor(Vector3(5480.965f, 3892.149f, 45.2567f), spawn_terminal), owning_building_guid = 40) - LocalObject(2006, Terminal.Constructor(Vector3(5486.546f, 3887.462f, 45.2567f), spawn_terminal), owning_building_guid = 40) - LocalObject(2007, Terminal.Constructor(Vector3(5511.122f, 3864.801f, 62.5457f), spawn_terminal), owning_building_guid = 40) - LocalObject(2139, Terminal.Constructor(Vector3(5517.772f, 3940.855f, 36.3367f), ground_vehicle_terminal), owning_building_guid = 40) - LocalObject(1321, VehicleSpawnPad.Constructor(Vector3(5526.167f, 3933.878f, 28.0597f), mb_pad_creation, Vector3(0, 0, 130)), owning_building_guid = 40, terminal_guid = 2139) + LocalObject( + 126, + Terminal.Constructor(Vector3(5488.283f, 3881.259f, 66.2257f), air_vehicle_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1319, + VehicleSpawnPad.Constructor(Vector3(5501.254f, 3864.523f, 63.1007f), mb_pad_creation, Vector3(0, 0, 130)), + owning_building_guid = 40, + terminal_guid = 126 + ) + LocalObject( + 127, + Terminal.Constructor(Vector3(5495.953f, 3890.399f, 66.2257f), air_vehicle_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1320, + VehicleSpawnPad.Constructor(Vector3(5514.765f, 3880.624f, 63.1007f), mb_pad_creation, Vector3(0, 0, 130)), + owning_building_guid = 40, + terminal_guid = 127 + ) + LocalObject( + 1432, + Terminal.Constructor(Vector3(5469.772f, 3883.674f, 44.7127f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1433, + Terminal.Constructor(Vector3(5472.63f, 3881.276f, 44.7127f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1434, + Terminal.Constructor(Vector3(5475.533f, 3878.84f, 44.7127f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1435, + Terminal.Constructor(Vector3(5495.724f, 3892.7f, 56.9527f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2001, + Terminal.Constructor(Vector3(5460.376f, 3957.757f, 44.6797f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2002, + Terminal.Constructor(Vector3(5475.376f, 3896.833f, 45.2567f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2003, + Terminal.Constructor(Vector3(5476.578f, 3902.39f, 37.1797f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2004, + Terminal.Constructor(Vector3(5478.464f, 3862.559f, 57.2047f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2005, + Terminal.Constructor(Vector3(5480.965f, 3892.149f, 45.2567f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2006, + Terminal.Constructor(Vector3(5486.546f, 3887.462f, 45.2567f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2007, + Terminal.Constructor(Vector3(5511.122f, 3864.801f, 62.5457f), spawn_terminal), + owning_building_guid = 40 + ) + LocalObject( + 2139, + Terminal.Constructor(Vector3(5517.772f, 3940.855f, 36.3367f), ground_vehicle_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1321, + VehicleSpawnPad.Constructor(Vector3(5526.167f, 3933.878f, 28.0597f), mb_pad_creation, Vector3(0, 0, 130)), + owning_building_guid = 40, + terminal_guid = 2139 + ) LocalObject(1854, ResourceSilo.Constructor(Vector3(5503.245f, 3809.769f, 57.5307f)), owning_building_guid = 40) - LocalObject(1915, SpawnTube.Constructor(Vector3(5476.954f, 3896.473f, 43.1227f), Vector3(0, 0, 130)), owning_building_guid = 40) - LocalObject(1916, SpawnTube.Constructor(Vector3(5482.539f, 3891.786f, 43.1227f), Vector3(0, 0, 130)), owning_building_guid = 40) - LocalObject(1917, SpawnTube.Constructor(Vector3(5488.122f, 3887.101f, 43.1227f), Vector3(0, 0, 130)), owning_building_guid = 40) - LocalObject(1335, ProximityTerminal.Constructor(Vector3(5471.795f, 3863.975f, 35.6227f), medical_terminal), owning_building_guid = 40) - LocalObject(1336, ProximityTerminal.Constructor(Vector3(5487.614f, 3899.503f, 55.6197f), medical_terminal), owning_building_guid = 40) - LocalObject(1597, ProximityTerminal.Constructor(Vector3(5439.252f, 3910.745f, 58.7307f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1598, Terminal.Constructor(Vector3(5439.252f, 3910.745f, 58.7307f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1600, ProximityTerminal.Constructor(Vector3(5445.871f, 3857.605f, 61.1747f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1601, Terminal.Constructor(Vector3(5445.871f, 3857.605f, 61.1747f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1603, ProximityTerminal.Constructor(Vector3(5454.271f, 3842.341f, 58.7307f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1604, Terminal.Constructor(Vector3(5454.271f, 3842.341f, 58.7307f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1606, ProximityTerminal.Constructor(Vector3(5462.542f, 3912.292f, 65.9697f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1607, Terminal.Constructor(Vector3(5462.542f, 3912.292f, 65.9697f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1609, ProximityTerminal.Constructor(Vector3(5538.111f, 3914.673f, 61.0727f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1610, Terminal.Constructor(Vector3(5538.111f, 3914.673f, 61.0727f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1612, ProximityTerminal.Constructor(Vector3(5538.755f, 3940.6f, 58.7177f), pad_landing_frame), owning_building_guid = 40) - LocalObject(1613, Terminal.Constructor(Vector3(5538.755f, 3940.6f, 58.7177f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1838, ProximityTerminal.Constructor(Vector3(5409.226f, 3892.728f, 50.2727f), repair_silo), owning_building_guid = 40) - LocalObject(1839, Terminal.Constructor(Vector3(5409.226f, 3892.728f, 50.2727f), ground_rearm_terminal), owning_building_guid = 40) - LocalObject(1842, ProximityTerminal.Constructor(Vector3(5549.697f, 3851f, 50.2512f), repair_silo), owning_building_guid = 40) - LocalObject(1843, Terminal.Constructor(Vector3(5549.697f, 3851f, 50.2512f), ground_rearm_terminal), owning_building_guid = 40) - LocalObject(1299, FacilityTurret.Constructor(Vector3(5386.52f, 3875.859f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1915, + SpawnTube.Constructor(Vector3(5476.954f, 3896.473f, 43.1227f), Vector3(0, 0, 130)), + owning_building_guid = 40 + ) + LocalObject( + 1916, + SpawnTube.Constructor(Vector3(5482.539f, 3891.786f, 43.1227f), Vector3(0, 0, 130)), + owning_building_guid = 40 + ) + LocalObject( + 1917, + SpawnTube.Constructor(Vector3(5488.122f, 3887.101f, 43.1227f), Vector3(0, 0, 130)), + owning_building_guid = 40 + ) + LocalObject( + 1335, + ProximityTerminal.Constructor(Vector3(5471.795f, 3863.975f, 35.6227f), medical_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1336, + ProximityTerminal.Constructor(Vector3(5487.614f, 3899.503f, 55.6197f), medical_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1597, + ProximityTerminal.Constructor(Vector3(5439.252f, 3910.745f, 58.7307f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1598, + Terminal.Constructor(Vector3(5439.252f, 3910.745f, 58.7307f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1600, + ProximityTerminal.Constructor(Vector3(5445.871f, 3857.605f, 61.1747f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1601, + Terminal.Constructor(Vector3(5445.871f, 3857.605f, 61.1747f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1603, + ProximityTerminal.Constructor(Vector3(5454.271f, 3842.341f, 58.7307f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1604, + Terminal.Constructor(Vector3(5454.271f, 3842.341f, 58.7307f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1606, + ProximityTerminal.Constructor(Vector3(5462.542f, 3912.292f, 65.9697f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1607, + Terminal.Constructor(Vector3(5462.542f, 3912.292f, 65.9697f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1609, + ProximityTerminal.Constructor(Vector3(5538.111f, 3914.673f, 61.0727f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1610, + Terminal.Constructor(Vector3(5538.111f, 3914.673f, 61.0727f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1612, + ProximityTerminal.Constructor(Vector3(5538.755f, 3940.6f, 58.7177f), pad_landing_frame), + owning_building_guid = 40 + ) + LocalObject( + 1613, + Terminal.Constructor(Vector3(5538.755f, 3940.6f, 58.7177f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1838, + ProximityTerminal.Constructor(Vector3(5409.226f, 3892.728f, 50.2727f), repair_silo), + owning_building_guid = 40 + ) + LocalObject( + 1839, + Terminal.Constructor(Vector3(5409.226f, 3892.728f, 50.2727f), ground_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1842, + ProximityTerminal.Constructor(Vector3(5549.697f, 3851f, 50.2512f), repair_silo), + owning_building_guid = 40 + ) + LocalObject( + 1843, + Terminal.Constructor(Vector3(5549.697f, 3851f, 50.2512f), ground_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1299, + FacilityTurret.Constructor(Vector3(5386.52f, 3875.859f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1299, 5047) - LocalObject(1300, FacilityTurret.Constructor(Vector3(5431.167f, 3828.309f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1300, + FacilityTurret.Constructor(Vector3(5431.167f, 3828.309f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1300, 5048) - LocalObject(1301, FacilityTurret.Constructor(Vector3(5492.036f, 3787.321f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1301, + FacilityTurret.Constructor(Vector3(5492.036f, 3787.321f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1301, 5049) - LocalObject(1302, FacilityTurret.Constructor(Vector3(5492.42f, 4002.052f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1302, + FacilityTurret.Constructor(Vector3(5492.42f, 4002.052f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1302, 5050) - LocalObject(1303, FacilityTurret.Constructor(Vector3(5590.127f, 3810.167f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1303, + FacilityTurret.Constructor(Vector3(5590.127f, 3810.167f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1303, 5051) - LocalObject(1304, FacilityTurret.Constructor(Vector3(5647.782f, 3878.877f, 59.0217f), manned_turret), owning_building_guid = 40) + LocalObject( + 1304, + FacilityTurret.Constructor(Vector3(5647.782f, 3878.877f, 59.0217f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(1304, 5052) LocalObject(1665, Painbox.Constructor(Vector3(5498.55f, 3860.723f, 39.096f), painbox), owning_building_guid = 40) - LocalObject(1674, Painbox.Constructor(Vector3(5476.428f, 3885.688f, 47.3926f), painbox_continuous), owning_building_guid = 40) - LocalObject(1683, Painbox.Constructor(Vector3(5486.001f, 3868.691f, 38.7821f), painbox_door_radius), owning_building_guid = 40) - LocalObject(1708, Painbox.Constructor(Vector3(5467.676f, 3895.379f, 45.2506f), painbox_door_radius_continuous), owning_building_guid = 40) - LocalObject(1709, Painbox.Constructor(Vector3(5472.545f, 3869.615f, 46.705f), painbox_door_radius_continuous), owning_building_guid = 40) - LocalObject(1710, Painbox.Constructor(Vector3(5488.204f, 3877.076f, 45.7989f), painbox_door_radius_continuous), owning_building_guid = 40) + LocalObject( + 1674, + Painbox.Constructor(Vector3(5476.428f, 3885.688f, 47.3926f), painbox_continuous), + owning_building_guid = 40 + ) + LocalObject( + 1683, + Painbox.Constructor(Vector3(5486.001f, 3868.691f, 38.7821f), painbox_door_radius), + owning_building_guid = 40 + ) + LocalObject( + 1708, + Painbox.Constructor(Vector3(5467.676f, 3895.379f, 45.2506f), painbox_door_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 1709, + Painbox.Constructor(Vector3(5472.545f, 3869.615f, 46.705f), painbox_door_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 1710, + Painbox.Constructor(Vector3(5488.204f, 3877.076f, 45.7989f), painbox_door_radius_continuous), + owning_building_guid = 40 + ) LocalObject(227, Generator.Constructor(Vector3(5499.677f, 3856.856f, 34.3287f)), owning_building_guid = 40) - LocalObject(218, Terminal.Constructor(Vector3(5493.372f, 3862.086f, 35.6227f), gen_control), owning_building_guid = 40) + LocalObject( + 218, + Terminal.Constructor(Vector3(5493.372f, 3862.086f, 35.6227f), gen_control), + owning_building_guid = 40 + ) } Building16() def Building16(): Unit = { // Name: N_Jamshid_Tower Type: tower_a GUID: 43, MapID: 16 - LocalBuilding("N_Jamshid_Tower", 43, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2312f, 3692f, 40.78366f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1924, CaptureTerminal.Constructor(Vector3(2328.587f, 3691.897f, 50.78267f), secondary_capture), owning_building_guid = 43) + LocalBuilding( + "N_Jamshid_Tower", + 43, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2312f, 3692f, 40.78366f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1924, + CaptureTerminal.Constructor(Vector3(2328.587f, 3691.897f, 50.78267f), secondary_capture), + owning_building_guid = 43 + ) LocalObject(239, Door.Constructor(Vector3(2324f, 3684f, 42.30466f)), owning_building_guid = 43) LocalObject(240, Door.Constructor(Vector3(2324f, 3684f, 62.30367f)), owning_building_guid = 43) LocalObject(241, Door.Constructor(Vector3(2324f, 3700f, 42.30466f)), owning_building_guid = 43) LocalObject(242, Door.Constructor(Vector3(2324f, 3700f, 62.30367f)), owning_building_guid = 43) LocalObject(2011, Door.Constructor(Vector3(2323.146f, 3680.794f, 32.11967f)), owning_building_guid = 43) LocalObject(2012, Door.Constructor(Vector3(2323.146f, 3697.204f, 32.11967f)), owning_building_guid = 43) - LocalObject(716, IFFLock.Constructor(Vector3(2321.957f, 3700.811f, 42.24466f), Vector3(0, 0, 0)), owning_building_guid = 43, door_guid = 241) - LocalObject(717, IFFLock.Constructor(Vector3(2321.957f, 3700.811f, 62.24467f), Vector3(0, 0, 0)), owning_building_guid = 43, door_guid = 242) - LocalObject(718, IFFLock.Constructor(Vector3(2326.047f, 3683.189f, 42.24466f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 239) - LocalObject(719, IFFLock.Constructor(Vector3(2326.047f, 3683.189f, 62.24467f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 240) + LocalObject( + 716, + IFFLock.Constructor(Vector3(2321.957f, 3700.811f, 42.24466f), Vector3(0, 0, 0)), + owning_building_guid = 43, + door_guid = 241 + ) + LocalObject( + 717, + IFFLock.Constructor(Vector3(2321.957f, 3700.811f, 62.24467f), Vector3(0, 0, 0)), + owning_building_guid = 43, + door_guid = 242 + ) + LocalObject( + 718, + IFFLock.Constructor(Vector3(2326.047f, 3683.189f, 42.24466f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 239 + ) + LocalObject( + 719, + IFFLock.Constructor(Vector3(2326.047f, 3683.189f, 62.24467f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 240 + ) LocalObject(900, Locker.Constructor(Vector3(2327.716f, 3676.963f, 30.77766f)), owning_building_guid = 43) LocalObject(901, Locker.Constructor(Vector3(2327.751f, 3698.835f, 30.77766f)), owning_building_guid = 43) LocalObject(902, Locker.Constructor(Vector3(2329.053f, 3676.963f, 30.77766f)), owning_building_guid = 43) @@ -1353,35 +3919,106 @@ object Map08 { // Oshur Prime LocalObject(905, Locker.Constructor(Vector3(2331.741f, 3698.835f, 30.77766f)), owning_building_guid = 43) LocalObject(906, Locker.Constructor(Vector3(2333.143f, 3676.963f, 30.77766f)), owning_building_guid = 43) LocalObject(907, Locker.Constructor(Vector3(2333.143f, 3698.835f, 30.77766f)), owning_building_guid = 43) - LocalObject(1341, Terminal.Constructor(Vector3(2333.445f, 3682.129f, 32.11567f), order_terminal), owning_building_guid = 43) - LocalObject(1342, Terminal.Constructor(Vector3(2333.445f, 3687.853f, 32.11567f), order_terminal), owning_building_guid = 43) - LocalObject(1343, Terminal.Constructor(Vector3(2333.445f, 3693.234f, 32.11567f), order_terminal), owning_building_guid = 43) - LocalObject(1858, SpawnTube.Constructor(Vector3(2322.706f, 3679.742f, 30.26567f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 43) - LocalObject(1859, SpawnTube.Constructor(Vector3(2322.706f, 3696.152f, 30.26567f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 43) - LocalObject(1227, FacilityTurret.Constructor(Vector3(2299.32f, 3679.295f, 59.72566f), manned_turret), owning_building_guid = 43) + LocalObject( + 1341, + Terminal.Constructor(Vector3(2333.445f, 3682.129f, 32.11567f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1342, + Terminal.Constructor(Vector3(2333.445f, 3687.853f, 32.11567f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1343, + Terminal.Constructor(Vector3(2333.445f, 3693.234f, 32.11567f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1858, + SpawnTube.Constructor(Vector3(2322.706f, 3679.742f, 30.26567f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 43 + ) + LocalObject( + 1859, + SpawnTube.Constructor(Vector3(2322.706f, 3696.152f, 30.26567f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 43 + ) + LocalObject( + 1227, + FacilityTurret.Constructor(Vector3(2299.32f, 3679.295f, 59.72566f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1227, 5053) - LocalObject(1228, FacilityTurret.Constructor(Vector3(2334.647f, 3704.707f, 59.72566f), manned_turret), owning_building_guid = 43) + LocalObject( + 1228, + FacilityTurret.Constructor(Vector3(2334.647f, 3704.707f, 59.72566f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1228, 5054) - LocalObject(1711, Painbox.Constructor(Vector3(2317.235f, 3685.803f, 32.28276f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(1712, Painbox.Constructor(Vector3(2328.889f, 3694.086f, 30.88367f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(1713, Painbox.Constructor(Vector3(2328.975f, 3682.223f, 30.88367f), painbox_radius_continuous), owning_building_guid = 43) + LocalObject( + 1711, + Painbox.Constructor(Vector3(2317.235f, 3685.803f, 32.28276f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 1712, + Painbox.Constructor(Vector3(2328.889f, 3694.086f, 30.88367f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 1713, + Painbox.Constructor(Vector3(2328.975f, 3682.223f, 30.88367f), painbox_radius_continuous), + owning_building_guid = 43 + ) } Building40() def Building40(): Unit = { // Name: Rashnu_Tower Type: tower_a GUID: 44, MapID: 40 - LocalBuilding("Rashnu_Tower", 44, 40, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3244f, 3758f, 49.76207f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1928, CaptureTerminal.Constructor(Vector3(3260.587f, 3757.897f, 59.76107f), secondary_capture), owning_building_guid = 44) + LocalBuilding( + "Rashnu_Tower", + 44, + 40, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3244f, 3758f, 49.76207f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1928, + CaptureTerminal.Constructor(Vector3(3260.587f, 3757.897f, 59.76107f), secondary_capture), + owning_building_guid = 44 + ) LocalObject(291, Door.Constructor(Vector3(3256f, 3750f, 51.28307f)), owning_building_guid = 44) LocalObject(292, Door.Constructor(Vector3(3256f, 3750f, 71.28207f)), owning_building_guid = 44) LocalObject(293, Door.Constructor(Vector3(3256f, 3766f, 51.28307f)), owning_building_guid = 44) LocalObject(294, Door.Constructor(Vector3(3256f, 3766f, 71.28207f)), owning_building_guid = 44) LocalObject(2025, Door.Constructor(Vector3(3255.146f, 3746.794f, 41.09807f)), owning_building_guid = 44) LocalObject(2026, Door.Constructor(Vector3(3255.146f, 3763.204f, 41.09807f)), owning_building_guid = 44) - LocalObject(753, IFFLock.Constructor(Vector3(3253.957f, 3766.811f, 51.22306f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 293) - LocalObject(754, IFFLock.Constructor(Vector3(3253.957f, 3766.811f, 71.22307f), Vector3(0, 0, 0)), owning_building_guid = 44, door_guid = 294) - LocalObject(755, IFFLock.Constructor(Vector3(3258.047f, 3749.189f, 51.22306f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 291) - LocalObject(756, IFFLock.Constructor(Vector3(3258.047f, 3749.189f, 71.22307f), Vector3(0, 0, 180)), owning_building_guid = 44, door_guid = 292) + LocalObject( + 753, + IFFLock.Constructor(Vector3(3253.957f, 3766.811f, 51.22306f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 293 + ) + LocalObject( + 754, + IFFLock.Constructor(Vector3(3253.957f, 3766.811f, 71.22307f), Vector3(0, 0, 0)), + owning_building_guid = 44, + door_guid = 294 + ) + LocalObject( + 755, + IFFLock.Constructor(Vector3(3258.047f, 3749.189f, 51.22306f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 291 + ) + LocalObject( + 756, + IFFLock.Constructor(Vector3(3258.047f, 3749.189f, 71.22307f), Vector3(0, 0, 180)), + owning_building_guid = 44, + door_guid = 292 + ) LocalObject(965, Locker.Constructor(Vector3(3259.716f, 3742.963f, 39.75607f)), owning_building_guid = 44) LocalObject(966, Locker.Constructor(Vector3(3259.751f, 3764.835f, 39.75607f)), owning_building_guid = 44) LocalObject(967, Locker.Constructor(Vector3(3261.053f, 3742.963f, 39.75607f)), owning_building_guid = 44) @@ -1390,35 +4027,106 @@ object Map08 { // Oshur Prime LocalObject(970, Locker.Constructor(Vector3(3263.741f, 3764.835f, 39.75607f)), owning_building_guid = 44) LocalObject(971, Locker.Constructor(Vector3(3265.143f, 3742.963f, 39.75607f)), owning_building_guid = 44) LocalObject(972, Locker.Constructor(Vector3(3265.143f, 3764.835f, 39.75607f)), owning_building_guid = 44) - LocalObject(1363, Terminal.Constructor(Vector3(3265.445f, 3748.129f, 41.09407f), order_terminal), owning_building_guid = 44) - LocalObject(1364, Terminal.Constructor(Vector3(3265.445f, 3753.853f, 41.09407f), order_terminal), owning_building_guid = 44) - LocalObject(1365, Terminal.Constructor(Vector3(3265.445f, 3759.234f, 41.09407f), order_terminal), owning_building_guid = 44) - LocalObject(1872, SpawnTube.Constructor(Vector3(3254.706f, 3745.742f, 39.24406f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(1873, SpawnTube.Constructor(Vector3(3254.706f, 3762.152f, 39.24406f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 44) - LocalObject(1247, FacilityTurret.Constructor(Vector3(3231.32f, 3745.295f, 68.70406f), manned_turret), owning_building_guid = 44) + LocalObject( + 1363, + Terminal.Constructor(Vector3(3265.445f, 3748.129f, 41.09407f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1364, + Terminal.Constructor(Vector3(3265.445f, 3753.853f, 41.09407f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1365, + Terminal.Constructor(Vector3(3265.445f, 3759.234f, 41.09407f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1872, + SpawnTube.Constructor(Vector3(3254.706f, 3745.742f, 39.24406f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 1873, + SpawnTube.Constructor(Vector3(3254.706f, 3762.152f, 39.24406f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 44 + ) + LocalObject( + 1247, + FacilityTurret.Constructor(Vector3(3231.32f, 3745.295f, 68.70406f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1247, 5055) - LocalObject(1248, FacilityTurret.Constructor(Vector3(3266.647f, 3770.707f, 68.70406f), manned_turret), owning_building_guid = 44) + LocalObject( + 1248, + FacilityTurret.Constructor(Vector3(3266.647f, 3770.707f, 68.70406f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1248, 5056) - LocalObject(1723, Painbox.Constructor(Vector3(3249.235f, 3751.803f, 41.26117f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(1724, Painbox.Constructor(Vector3(3260.889f, 3760.086f, 39.86207f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(1725, Painbox.Constructor(Vector3(3260.975f, 3748.223f, 39.86207f), painbox_radius_continuous), owning_building_guid = 44) + LocalObject( + 1723, + Painbox.Constructor(Vector3(3249.235f, 3751.803f, 41.26117f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 1724, + Painbox.Constructor(Vector3(3260.889f, 3760.086f, 39.86207f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 1725, + Painbox.Constructor(Vector3(3260.975f, 3748.223f, 39.86207f), painbox_radius_continuous), + owning_building_guid = 44 + ) } Building14() def Building14(): Unit = { // Name: S_Forseral_Warpgate_Tower Type: tower_a GUID: 45, MapID: 14 - LocalBuilding("S_Forseral_Warpgate_Tower", 45, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3520f, 5578f, 53.28131f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1929, CaptureTerminal.Constructor(Vector3(3536.587f, 5577.897f, 63.28031f), secondary_capture), owning_building_guid = 45) + LocalBuilding( + "S_Forseral_Warpgate_Tower", + 45, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3520f, 5578f, 53.28131f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1929, + CaptureTerminal.Constructor(Vector3(3536.587f, 5577.897f, 63.28031f), secondary_capture), + owning_building_guid = 45 + ) LocalObject(303, Door.Constructor(Vector3(3532f, 5570f, 54.80231f)), owning_building_guid = 45) LocalObject(304, Door.Constructor(Vector3(3532f, 5570f, 74.80132f)), owning_building_guid = 45) LocalObject(305, Door.Constructor(Vector3(3532f, 5586f, 54.80231f)), owning_building_guid = 45) LocalObject(306, Door.Constructor(Vector3(3532f, 5586f, 74.80132f)), owning_building_guid = 45) LocalObject(2027, Door.Constructor(Vector3(3531.146f, 5566.794f, 44.61731f)), owning_building_guid = 45) LocalObject(2028, Door.Constructor(Vector3(3531.146f, 5583.204f, 44.61731f)), owning_building_guid = 45) - LocalObject(758, IFFLock.Constructor(Vector3(3529.957f, 5586.811f, 54.74231f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 305) - LocalObject(759, IFFLock.Constructor(Vector3(3529.957f, 5586.811f, 74.74231f), Vector3(0, 0, 0)), owning_building_guid = 45, door_guid = 306) - LocalObject(761, IFFLock.Constructor(Vector3(3534.047f, 5569.189f, 54.74231f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 303) - LocalObject(762, IFFLock.Constructor(Vector3(3534.047f, 5569.189f, 74.74231f), Vector3(0, 0, 180)), owning_building_guid = 45, door_guid = 304) + LocalObject( + 758, + IFFLock.Constructor(Vector3(3529.957f, 5586.811f, 54.74231f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 305 + ) + LocalObject( + 759, + IFFLock.Constructor(Vector3(3529.957f, 5586.811f, 74.74231f), Vector3(0, 0, 0)), + owning_building_guid = 45, + door_guid = 306 + ) + LocalObject( + 761, + IFFLock.Constructor(Vector3(3534.047f, 5569.189f, 54.74231f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 303 + ) + LocalObject( + 762, + IFFLock.Constructor(Vector3(3534.047f, 5569.189f, 74.74231f), Vector3(0, 0, 180)), + owning_building_guid = 45, + door_guid = 304 + ) LocalObject(973, Locker.Constructor(Vector3(3535.716f, 5562.963f, 43.27531f)), owning_building_guid = 45) LocalObject(974, Locker.Constructor(Vector3(3535.751f, 5584.835f, 43.27531f)), owning_building_guid = 45) LocalObject(975, Locker.Constructor(Vector3(3537.053f, 5562.963f, 43.27531f)), owning_building_guid = 45) @@ -1427,35 +4135,106 @@ object Map08 { // Oshur Prime LocalObject(978, Locker.Constructor(Vector3(3539.741f, 5584.835f, 43.27531f)), owning_building_guid = 45) LocalObject(979, Locker.Constructor(Vector3(3541.143f, 5562.963f, 43.27531f)), owning_building_guid = 45) LocalObject(980, Locker.Constructor(Vector3(3541.143f, 5584.835f, 43.27531f)), owning_building_guid = 45) - LocalObject(1367, Terminal.Constructor(Vector3(3541.445f, 5568.129f, 44.61331f), order_terminal), owning_building_guid = 45) - LocalObject(1368, Terminal.Constructor(Vector3(3541.445f, 5573.853f, 44.61331f), order_terminal), owning_building_guid = 45) - LocalObject(1369, Terminal.Constructor(Vector3(3541.445f, 5579.234f, 44.61331f), order_terminal), owning_building_guid = 45) - LocalObject(1874, SpawnTube.Constructor(Vector3(3530.706f, 5565.742f, 42.76331f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1875, SpawnTube.Constructor(Vector3(3530.706f, 5582.152f, 42.76331f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(1251, FacilityTurret.Constructor(Vector3(3507.32f, 5565.295f, 72.22331f), manned_turret), owning_building_guid = 45) + LocalObject( + 1367, + Terminal.Constructor(Vector3(3541.445f, 5568.129f, 44.61331f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1368, + Terminal.Constructor(Vector3(3541.445f, 5573.853f, 44.61331f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1369, + Terminal.Constructor(Vector3(3541.445f, 5579.234f, 44.61331f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 1874, + SpawnTube.Constructor(Vector3(3530.706f, 5565.742f, 42.76331f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1875, + SpawnTube.Constructor(Vector3(3530.706f, 5582.152f, 42.76331f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 1251, + FacilityTurret.Constructor(Vector3(3507.32f, 5565.295f, 72.22331f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1251, 5057) - LocalObject(1253, FacilityTurret.Constructor(Vector3(3542.647f, 5590.707f, 72.22331f), manned_turret), owning_building_guid = 45) + LocalObject( + 1253, + FacilityTurret.Constructor(Vector3(3542.647f, 5590.707f, 72.22331f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(1253, 5058) - LocalObject(1726, Painbox.Constructor(Vector3(3525.235f, 5571.803f, 44.78041f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1727, Painbox.Constructor(Vector3(3536.889f, 5580.086f, 43.38131f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(1728, Painbox.Constructor(Vector3(3536.975f, 5568.223f, 43.38131f), painbox_radius_continuous), owning_building_guid = 45) + LocalObject( + 1726, + Painbox.Constructor(Vector3(3525.235f, 5571.803f, 44.78041f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1727, + Painbox.Constructor(Vector3(3536.889f, 5580.086f, 43.38131f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 1728, + Painbox.Constructor(Vector3(3536.975f, 5568.223f, 43.38131f), painbox_radius_continuous), + owning_building_guid = 45 + ) } Building21() def Building21(): Unit = { // Name: W_Yazata_Tower Type: tower_a GUID: 46, MapID: 21 - LocalBuilding("W_Yazata_Tower", 46, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4074f, 3888f, 36.98511f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1932, CaptureTerminal.Constructor(Vector3(4090.587f, 3887.897f, 46.98411f), secondary_capture), owning_building_guid = 46) + LocalBuilding( + "W_Yazata_Tower", + 46, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4074f, 3888f, 36.98511f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1932, + CaptureTerminal.Constructor(Vector3(4090.587f, 3887.897f, 46.98411f), secondary_capture), + owning_building_guid = 46 + ) LocalObject(359, Door.Constructor(Vector3(4086f, 3880f, 38.50611f)), owning_building_guid = 46) LocalObject(360, Door.Constructor(Vector3(4086f, 3880f, 58.50511f)), owning_building_guid = 46) LocalObject(361, Door.Constructor(Vector3(4086f, 3896f, 38.50611f)), owning_building_guid = 46) LocalObject(362, Door.Constructor(Vector3(4086f, 3896f, 58.50511f)), owning_building_guid = 46) LocalObject(2042, Door.Constructor(Vector3(4085.146f, 3876.794f, 28.32111f)), owning_building_guid = 46) LocalObject(2043, Door.Constructor(Vector3(4085.146f, 3893.204f, 28.32111f)), owning_building_guid = 46) - LocalObject(804, IFFLock.Constructor(Vector3(4083.957f, 3896.811f, 38.44611f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 361) - LocalObject(805, IFFLock.Constructor(Vector3(4083.957f, 3896.811f, 58.44611f), Vector3(0, 0, 0)), owning_building_guid = 46, door_guid = 362) - LocalObject(806, IFFLock.Constructor(Vector3(4088.047f, 3879.189f, 38.44611f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 359) - LocalObject(807, IFFLock.Constructor(Vector3(4088.047f, 3879.189f, 58.44611f), Vector3(0, 0, 180)), owning_building_guid = 46, door_guid = 360) + LocalObject( + 804, + IFFLock.Constructor(Vector3(4083.957f, 3896.811f, 38.44611f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 361 + ) + LocalObject( + 805, + IFFLock.Constructor(Vector3(4083.957f, 3896.811f, 58.44611f), Vector3(0, 0, 0)), + owning_building_guid = 46, + door_guid = 362 + ) + LocalObject( + 806, + IFFLock.Constructor(Vector3(4088.047f, 3879.189f, 38.44611f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 359 + ) + LocalObject( + 807, + IFFLock.Constructor(Vector3(4088.047f, 3879.189f, 58.44611f), Vector3(0, 0, 180)), + owning_building_guid = 46, + door_guid = 360 + ) LocalObject(1042, Locker.Constructor(Vector3(4089.716f, 3872.963f, 26.97911f)), owning_building_guid = 46) LocalObject(1043, Locker.Constructor(Vector3(4089.751f, 3894.835f, 26.97911f)), owning_building_guid = 46) LocalObject(1044, Locker.Constructor(Vector3(4091.053f, 3872.963f, 26.97911f)), owning_building_guid = 46) @@ -1464,35 +4243,106 @@ object Map08 { // Oshur Prime LocalObject(1047, Locker.Constructor(Vector3(4093.741f, 3894.835f, 26.97911f)), owning_building_guid = 46) LocalObject(1048, Locker.Constructor(Vector3(4095.143f, 3872.963f, 26.97911f)), owning_building_guid = 46) LocalObject(1049, Locker.Constructor(Vector3(4095.143f, 3894.835f, 26.97911f)), owning_building_guid = 46) - LocalObject(1394, Terminal.Constructor(Vector3(4095.445f, 3878.129f, 28.31711f), order_terminal), owning_building_guid = 46) - LocalObject(1395, Terminal.Constructor(Vector3(4095.445f, 3883.853f, 28.31711f), order_terminal), owning_building_guid = 46) - LocalObject(1396, Terminal.Constructor(Vector3(4095.445f, 3889.234f, 28.31711f), order_terminal), owning_building_guid = 46) - LocalObject(1889, SpawnTube.Constructor(Vector3(4084.706f, 3875.742f, 26.46711f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(1890, SpawnTube.Constructor(Vector3(4084.706f, 3892.152f, 26.46711f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 46) - LocalObject(1271, FacilityTurret.Constructor(Vector3(4061.32f, 3875.295f, 55.92711f), manned_turret), owning_building_guid = 46) + LocalObject( + 1394, + Terminal.Constructor(Vector3(4095.445f, 3878.129f, 28.31711f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1395, + Terminal.Constructor(Vector3(4095.445f, 3883.853f, 28.31711f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1396, + Terminal.Constructor(Vector3(4095.445f, 3889.234f, 28.31711f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1889, + SpawnTube.Constructor(Vector3(4084.706f, 3875.742f, 26.46711f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 1890, + SpawnTube.Constructor(Vector3(4084.706f, 3892.152f, 26.46711f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 46 + ) + LocalObject( + 1271, + FacilityTurret.Constructor(Vector3(4061.32f, 3875.295f, 55.92711f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1271, 5059) - LocalObject(1273, FacilityTurret.Constructor(Vector3(4096.647f, 3900.707f, 55.92711f), manned_turret), owning_building_guid = 46) + LocalObject( + 1273, + FacilityTurret.Constructor(Vector3(4096.647f, 3900.707f, 55.92711f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1273, 5060) - LocalObject(1735, Painbox.Constructor(Vector3(4079.235f, 3881.803f, 28.48421f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1736, Painbox.Constructor(Vector3(4090.889f, 3890.086f, 27.08511f), painbox_radius_continuous), owning_building_guid = 46) - LocalObject(1737, Painbox.Constructor(Vector3(4090.975f, 3878.223f, 27.08511f), painbox_radius_continuous), owning_building_guid = 46) + LocalObject( + 1735, + Painbox.Constructor(Vector3(4079.235f, 3881.803f, 28.48421f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1736, + Painbox.Constructor(Vector3(4090.889f, 3890.086f, 27.08511f), painbox_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 1737, + Painbox.Constructor(Vector3(4090.975f, 3878.223f, 27.08511f), painbox_radius_continuous), + owning_building_guid = 46 + ) } Building42() def Building42(): Unit = { // Name: Zal_Tower Type: tower_a GUID: 47, MapID: 42 - LocalBuilding("Zal_Tower", 47, 42, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4132f, 2062f, 44.47557f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1933, CaptureTerminal.Constructor(Vector3(4148.587f, 2061.897f, 54.47458f), secondary_capture), owning_building_guid = 47) + LocalBuilding( + "Zal_Tower", + 47, + 42, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4132f, 2062f, 44.47557f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1933, + CaptureTerminal.Constructor(Vector3(4148.587f, 2061.897f, 54.47458f), secondary_capture), + owning_building_guid = 47 + ) LocalObject(363, Door.Constructor(Vector3(4144f, 2054f, 45.99657f)), owning_building_guid = 47) LocalObject(364, Door.Constructor(Vector3(4144f, 2054f, 65.99557f)), owning_building_guid = 47) LocalObject(365, Door.Constructor(Vector3(4144f, 2070f, 45.99657f)), owning_building_guid = 47) LocalObject(366, Door.Constructor(Vector3(4144f, 2070f, 65.99557f)), owning_building_guid = 47) LocalObject(2044, Door.Constructor(Vector3(4143.146f, 2050.794f, 35.81158f)), owning_building_guid = 47) LocalObject(2045, Door.Constructor(Vector3(4143.146f, 2067.204f, 35.81158f)), owning_building_guid = 47) - LocalObject(808, IFFLock.Constructor(Vector3(4141.957f, 2070.811f, 45.93657f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 365) - LocalObject(809, IFFLock.Constructor(Vector3(4141.957f, 2070.811f, 65.93658f), Vector3(0, 0, 0)), owning_building_guid = 47, door_guid = 366) - LocalObject(810, IFFLock.Constructor(Vector3(4146.047f, 2053.189f, 45.93657f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 363) - LocalObject(811, IFFLock.Constructor(Vector3(4146.047f, 2053.189f, 65.93658f), Vector3(0, 0, 180)), owning_building_guid = 47, door_guid = 364) + LocalObject( + 808, + IFFLock.Constructor(Vector3(4141.957f, 2070.811f, 45.93657f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 365 + ) + LocalObject( + 809, + IFFLock.Constructor(Vector3(4141.957f, 2070.811f, 65.93658f), Vector3(0, 0, 0)), + owning_building_guid = 47, + door_guid = 366 + ) + LocalObject( + 810, + IFFLock.Constructor(Vector3(4146.047f, 2053.189f, 45.93657f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 363 + ) + LocalObject( + 811, + IFFLock.Constructor(Vector3(4146.047f, 2053.189f, 65.93658f), Vector3(0, 0, 180)), + owning_building_guid = 47, + door_guid = 364 + ) LocalObject(1050, Locker.Constructor(Vector3(4147.716f, 2046.963f, 34.46957f)), owning_building_guid = 47) LocalObject(1051, Locker.Constructor(Vector3(4147.751f, 2068.835f, 34.46957f)), owning_building_guid = 47) LocalObject(1052, Locker.Constructor(Vector3(4149.053f, 2046.963f, 34.46957f)), owning_building_guid = 47) @@ -1501,35 +4351,106 @@ object Map08 { // Oshur Prime LocalObject(1055, Locker.Constructor(Vector3(4151.741f, 2068.835f, 34.46957f)), owning_building_guid = 47) LocalObject(1056, Locker.Constructor(Vector3(4153.143f, 2046.963f, 34.46957f)), owning_building_guid = 47) LocalObject(1057, Locker.Constructor(Vector3(4153.143f, 2068.835f, 34.46957f)), owning_building_guid = 47) - LocalObject(1397, Terminal.Constructor(Vector3(4153.445f, 2052.129f, 35.80758f), order_terminal), owning_building_guid = 47) - LocalObject(1398, Terminal.Constructor(Vector3(4153.445f, 2057.853f, 35.80758f), order_terminal), owning_building_guid = 47) - LocalObject(1399, Terminal.Constructor(Vector3(4153.445f, 2063.234f, 35.80758f), order_terminal), owning_building_guid = 47) - LocalObject(1891, SpawnTube.Constructor(Vector3(4142.706f, 2049.742f, 33.95757f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(1892, SpawnTube.Constructor(Vector3(4142.706f, 2066.152f, 33.95757f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 47) - LocalObject(1274, FacilityTurret.Constructor(Vector3(4119.32f, 2049.295f, 63.41757f), manned_turret), owning_building_guid = 47) + LocalObject( + 1397, + Terminal.Constructor(Vector3(4153.445f, 2052.129f, 35.80758f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1398, + Terminal.Constructor(Vector3(4153.445f, 2057.853f, 35.80758f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1399, + Terminal.Constructor(Vector3(4153.445f, 2063.234f, 35.80758f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 1891, + SpawnTube.Constructor(Vector3(4142.706f, 2049.742f, 33.95757f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 1892, + SpawnTube.Constructor(Vector3(4142.706f, 2066.152f, 33.95757f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 47 + ) + LocalObject( + 1274, + FacilityTurret.Constructor(Vector3(4119.32f, 2049.295f, 63.41757f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1274, 5061) - LocalObject(1275, FacilityTurret.Constructor(Vector3(4154.647f, 2074.707f, 63.41757f), manned_turret), owning_building_guid = 47) + LocalObject( + 1275, + FacilityTurret.Constructor(Vector3(4154.647f, 2074.707f, 63.41757f), manned_turret), + owning_building_guid = 47 + ) TurretToWeapon(1275, 5062) - LocalObject(1738, Painbox.Constructor(Vector3(4137.235f, 2055.803f, 35.97467f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1739, Painbox.Constructor(Vector3(4148.889f, 2064.086f, 34.57558f), painbox_radius_continuous), owning_building_guid = 47) - LocalObject(1740, Painbox.Constructor(Vector3(4148.975f, 2052.223f, 34.57558f), painbox_radius_continuous), owning_building_guid = 47) + LocalObject( + 1738, + Painbox.Constructor(Vector3(4137.235f, 2055.803f, 35.97467f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1739, + Painbox.Constructor(Vector3(4148.889f, 2064.086f, 34.57558f), painbox_radius_continuous), + owning_building_guid = 47 + ) + LocalObject( + 1740, + Painbox.Constructor(Vector3(4148.975f, 2052.223f, 34.57558f), painbox_radius_continuous), + owning_building_guid = 47 + ) } Building27() def Building27(): Unit = { // Name: SW_Esamir_Warpgate_Tower Type: tower_a GUID: 48, MapID: 27 - LocalBuilding("SW_Esamir_Warpgate_Tower", 48, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5040f, 2300f, 57.00369f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1938, CaptureTerminal.Constructor(Vector3(5056.587f, 2299.897f, 67.00269f), secondary_capture), owning_building_guid = 48) + LocalBuilding( + "SW_Esamir_Warpgate_Tower", + 48, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5040f, 2300f, 57.00369f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1938, + CaptureTerminal.Constructor(Vector3(5056.587f, 2299.897f, 67.00269f), secondary_capture), + owning_building_guid = 48 + ) LocalObject(414, Door.Constructor(Vector3(5052f, 2292f, 58.52469f)), owning_building_guid = 48) LocalObject(415, Door.Constructor(Vector3(5052f, 2292f, 78.5237f)), owning_building_guid = 48) LocalObject(416, Door.Constructor(Vector3(5052f, 2308f, 58.52469f)), owning_building_guid = 48) LocalObject(417, Door.Constructor(Vector3(5052f, 2308f, 78.5237f)), owning_building_guid = 48) LocalObject(2060, Door.Constructor(Vector3(5051.146f, 2288.794f, 48.33969f)), owning_building_guid = 48) LocalObject(2061, Door.Constructor(Vector3(5051.146f, 2305.204f, 48.33969f)), owning_building_guid = 48) - LocalObject(848, IFFLock.Constructor(Vector3(5049.957f, 2308.811f, 58.46469f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 416) - LocalObject(849, IFFLock.Constructor(Vector3(5049.957f, 2308.811f, 78.46469f), Vector3(0, 0, 0)), owning_building_guid = 48, door_guid = 417) - LocalObject(850, IFFLock.Constructor(Vector3(5054.047f, 2291.189f, 58.46469f), Vector3(0, 0, 180)), owning_building_guid = 48, door_guid = 414) - LocalObject(851, IFFLock.Constructor(Vector3(5054.047f, 2291.189f, 78.46469f), Vector3(0, 0, 180)), owning_building_guid = 48, door_guid = 415) + LocalObject( + 848, + IFFLock.Constructor(Vector3(5049.957f, 2308.811f, 58.46469f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 416 + ) + LocalObject( + 849, + IFFLock.Constructor(Vector3(5049.957f, 2308.811f, 78.46469f), Vector3(0, 0, 0)), + owning_building_guid = 48, + door_guid = 417 + ) + LocalObject( + 850, + IFFLock.Constructor(Vector3(5054.047f, 2291.189f, 58.46469f), Vector3(0, 0, 180)), + owning_building_guid = 48, + door_guid = 414 + ) + LocalObject( + 851, + IFFLock.Constructor(Vector3(5054.047f, 2291.189f, 78.46469f), Vector3(0, 0, 180)), + owning_building_guid = 48, + door_guid = 415 + ) LocalObject(1123, Locker.Constructor(Vector3(5055.716f, 2284.963f, 46.99769f)), owning_building_guid = 48) LocalObject(1124, Locker.Constructor(Vector3(5055.751f, 2306.835f, 46.99769f)), owning_building_guid = 48) LocalObject(1125, Locker.Constructor(Vector3(5057.053f, 2284.963f, 46.99769f)), owning_building_guid = 48) @@ -1538,35 +4459,106 @@ object Map08 { // Oshur Prime LocalObject(1128, Locker.Constructor(Vector3(5059.741f, 2306.835f, 46.99769f)), owning_building_guid = 48) LocalObject(1129, Locker.Constructor(Vector3(5061.143f, 2284.963f, 46.99769f)), owning_building_guid = 48) LocalObject(1130, Locker.Constructor(Vector3(5061.143f, 2306.835f, 46.99769f)), owning_building_guid = 48) - LocalObject(1420, Terminal.Constructor(Vector3(5061.445f, 2290.129f, 48.33569f), order_terminal), owning_building_guid = 48) - LocalObject(1421, Terminal.Constructor(Vector3(5061.445f, 2295.853f, 48.33569f), order_terminal), owning_building_guid = 48) - LocalObject(1422, Terminal.Constructor(Vector3(5061.445f, 2301.234f, 48.33569f), order_terminal), owning_building_guid = 48) - LocalObject(1907, SpawnTube.Constructor(Vector3(5050.706f, 2287.742f, 46.48569f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(1908, SpawnTube.Constructor(Vector3(5050.706f, 2304.152f, 46.48569f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 48) - LocalObject(1291, FacilityTurret.Constructor(Vector3(5027.32f, 2287.295f, 75.94569f), manned_turret), owning_building_guid = 48) + LocalObject( + 1420, + Terminal.Constructor(Vector3(5061.445f, 2290.129f, 48.33569f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1421, + Terminal.Constructor(Vector3(5061.445f, 2295.853f, 48.33569f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1422, + Terminal.Constructor(Vector3(5061.445f, 2301.234f, 48.33569f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 1907, + SpawnTube.Constructor(Vector3(5050.706f, 2287.742f, 46.48569f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 1908, + SpawnTube.Constructor(Vector3(5050.706f, 2304.152f, 46.48569f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 48 + ) + LocalObject( + 1291, + FacilityTurret.Constructor(Vector3(5027.32f, 2287.295f, 75.94569f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1291, 5063) - LocalObject(1292, FacilityTurret.Constructor(Vector3(5062.647f, 2312.707f, 75.94569f), manned_turret), owning_building_guid = 48) + LocalObject( + 1292, + FacilityTurret.Constructor(Vector3(5062.647f, 2312.707f, 75.94569f), manned_turret), + owning_building_guid = 48 + ) TurretToWeapon(1292, 5064) - LocalObject(1753, Painbox.Constructor(Vector3(5045.235f, 2293.803f, 48.50279f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1754, Painbox.Constructor(Vector3(5056.889f, 2302.086f, 47.10369f), painbox_radius_continuous), owning_building_guid = 48) - LocalObject(1755, Painbox.Constructor(Vector3(5056.975f, 2290.223f, 47.10369f), painbox_radius_continuous), owning_building_guid = 48) + LocalObject( + 1753, + Painbox.Constructor(Vector3(5045.235f, 2293.803f, 48.50279f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1754, + Painbox.Constructor(Vector3(5056.889f, 2302.086f, 47.10369f), painbox_radius_continuous), + owning_building_guid = 48 + ) + LocalObject( + 1755, + Painbox.Constructor(Vector3(5056.975f, 2290.223f, 47.10369f), painbox_radius_continuous), + owning_building_guid = 48 + ) } Building22() def Building22(): Unit = { // Name: S_Hossin_Warpgate_Tower Type: tower_a GUID: 49, MapID: 22 - LocalBuilding("S_Hossin_Warpgate_Tower", 49, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5080f, 4766f, 75.09348f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1939, CaptureTerminal.Constructor(Vector3(5096.587f, 4765.897f, 85.09248f), secondary_capture), owning_building_guid = 49) + LocalBuilding( + "S_Hossin_Warpgate_Tower", + 49, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5080f, 4766f, 75.09348f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1939, + CaptureTerminal.Constructor(Vector3(5096.587f, 4765.897f, 85.09248f), secondary_capture), + owning_building_guid = 49 + ) LocalObject(418, Door.Constructor(Vector3(5092f, 4758f, 76.61448f)), owning_building_guid = 49) LocalObject(419, Door.Constructor(Vector3(5092f, 4758f, 96.61348f)), owning_building_guid = 49) LocalObject(420, Door.Constructor(Vector3(5092f, 4774f, 76.61448f)), owning_building_guid = 49) LocalObject(421, Door.Constructor(Vector3(5092f, 4774f, 96.61348f)), owning_building_guid = 49) LocalObject(2062, Door.Constructor(Vector3(5091.146f, 4754.794f, 66.42947f)), owning_building_guid = 49) LocalObject(2063, Door.Constructor(Vector3(5091.146f, 4771.204f, 66.42947f)), owning_building_guid = 49) - LocalObject(852, IFFLock.Constructor(Vector3(5089.957f, 4774.811f, 76.55447f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 420) - LocalObject(853, IFFLock.Constructor(Vector3(5089.957f, 4774.811f, 96.55447f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 421) - LocalObject(854, IFFLock.Constructor(Vector3(5094.047f, 4757.189f, 76.55447f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 418) - LocalObject(855, IFFLock.Constructor(Vector3(5094.047f, 4757.189f, 96.55447f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 419) + LocalObject( + 852, + IFFLock.Constructor(Vector3(5089.957f, 4774.811f, 76.55447f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 420 + ) + LocalObject( + 853, + IFFLock.Constructor(Vector3(5089.957f, 4774.811f, 96.55447f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 421 + ) + LocalObject( + 854, + IFFLock.Constructor(Vector3(5094.047f, 4757.189f, 76.55447f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 418 + ) + LocalObject( + 855, + IFFLock.Constructor(Vector3(5094.047f, 4757.189f, 96.55447f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 419 + ) LocalObject(1131, Locker.Constructor(Vector3(5095.716f, 4750.963f, 65.08748f)), owning_building_guid = 49) LocalObject(1132, Locker.Constructor(Vector3(5095.751f, 4772.835f, 65.08748f)), owning_building_guid = 49) LocalObject(1133, Locker.Constructor(Vector3(5097.053f, 4750.963f, 65.08748f)), owning_building_guid = 49) @@ -1575,35 +4567,106 @@ object Map08 { // Oshur Prime LocalObject(1136, Locker.Constructor(Vector3(5099.741f, 4772.835f, 65.08748f)), owning_building_guid = 49) LocalObject(1137, Locker.Constructor(Vector3(5101.143f, 4750.963f, 65.08748f)), owning_building_guid = 49) LocalObject(1138, Locker.Constructor(Vector3(5101.143f, 4772.835f, 65.08748f)), owning_building_guid = 49) - LocalObject(1423, Terminal.Constructor(Vector3(5101.445f, 4756.129f, 66.42548f), order_terminal), owning_building_guid = 49) - LocalObject(1424, Terminal.Constructor(Vector3(5101.445f, 4761.853f, 66.42548f), order_terminal), owning_building_guid = 49) - LocalObject(1425, Terminal.Constructor(Vector3(5101.445f, 4767.234f, 66.42548f), order_terminal), owning_building_guid = 49) - LocalObject(1909, SpawnTube.Constructor(Vector3(5090.706f, 4753.742f, 64.57548f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(1910, SpawnTube.Constructor(Vector3(5090.706f, 4770.152f, 64.57548f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(1293, FacilityTurret.Constructor(Vector3(5067.32f, 4753.295f, 94.03548f), manned_turret), owning_building_guid = 49) + LocalObject( + 1423, + Terminal.Constructor(Vector3(5101.445f, 4756.129f, 66.42548f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1424, + Terminal.Constructor(Vector3(5101.445f, 4761.853f, 66.42548f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1425, + Terminal.Constructor(Vector3(5101.445f, 4767.234f, 66.42548f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1909, + SpawnTube.Constructor(Vector3(5090.706f, 4753.742f, 64.57548f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 1910, + SpawnTube.Constructor(Vector3(5090.706f, 4770.152f, 64.57548f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 1293, + FacilityTurret.Constructor(Vector3(5067.32f, 4753.295f, 94.03548f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1293, 5065) - LocalObject(1294, FacilityTurret.Constructor(Vector3(5102.647f, 4778.707f, 94.03548f), manned_turret), owning_building_guid = 49) + LocalObject( + 1294, + FacilityTurret.Constructor(Vector3(5102.647f, 4778.707f, 94.03548f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1294, 5066) - LocalObject(1756, Painbox.Constructor(Vector3(5085.235f, 4759.803f, 66.59258f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1757, Painbox.Constructor(Vector3(5096.889f, 4768.086f, 65.19347f), painbox_radius_continuous), owning_building_guid = 49) - LocalObject(1758, Painbox.Constructor(Vector3(5096.975f, 4756.223f, 65.19347f), painbox_radius_continuous), owning_building_guid = 49) + LocalObject( + 1756, + Painbox.Constructor(Vector3(5085.235f, 4759.803f, 66.59258f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1757, + Painbox.Constructor(Vector3(5096.889f, 4768.086f, 65.19347f), painbox_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 1758, + Painbox.Constructor(Vector3(5096.975f, 4756.223f, 65.19347f), painbox_radius_continuous), + owning_building_guid = 49 + ) } Building44() def Building44(): Unit = { // Name: Izha_Tower Type: tower_a GUID: 50, MapID: 44 - LocalBuilding("Izha_Tower", 50, 44, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5240f, 3934f, 49.1933f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1940, CaptureTerminal.Constructor(Vector3(5256.587f, 3933.897f, 59.1923f), secondary_capture), owning_building_guid = 50) + LocalBuilding( + "Izha_Tower", + 50, + 44, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5240f, 3934f, 49.1933f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1940, + CaptureTerminal.Constructor(Vector3(5256.587f, 3933.897f, 59.1923f), secondary_capture), + owning_building_guid = 50 + ) LocalObject(422, Door.Constructor(Vector3(5252f, 3926f, 50.7143f)), owning_building_guid = 50) LocalObject(423, Door.Constructor(Vector3(5252f, 3926f, 70.7133f)), owning_building_guid = 50) LocalObject(424, Door.Constructor(Vector3(5252f, 3942f, 50.7143f)), owning_building_guid = 50) LocalObject(425, Door.Constructor(Vector3(5252f, 3942f, 70.7133f)), owning_building_guid = 50) LocalObject(2064, Door.Constructor(Vector3(5251.146f, 3922.794f, 40.5293f)), owning_building_guid = 50) LocalObject(2065, Door.Constructor(Vector3(5251.146f, 3939.204f, 40.5293f)), owning_building_guid = 50) - LocalObject(856, IFFLock.Constructor(Vector3(5249.957f, 3942.811f, 50.6543f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 424) - LocalObject(857, IFFLock.Constructor(Vector3(5249.957f, 3942.811f, 70.6543f), Vector3(0, 0, 0)), owning_building_guid = 50, door_guid = 425) - LocalObject(858, IFFLock.Constructor(Vector3(5254.047f, 3925.189f, 50.6543f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 422) - LocalObject(859, IFFLock.Constructor(Vector3(5254.047f, 3925.189f, 70.6543f), Vector3(0, 0, 180)), owning_building_guid = 50, door_guid = 423) + LocalObject( + 856, + IFFLock.Constructor(Vector3(5249.957f, 3942.811f, 50.6543f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 424 + ) + LocalObject( + 857, + IFFLock.Constructor(Vector3(5249.957f, 3942.811f, 70.6543f), Vector3(0, 0, 0)), + owning_building_guid = 50, + door_guid = 425 + ) + LocalObject( + 858, + IFFLock.Constructor(Vector3(5254.047f, 3925.189f, 50.6543f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 422 + ) + LocalObject( + 859, + IFFLock.Constructor(Vector3(5254.047f, 3925.189f, 70.6543f), Vector3(0, 0, 180)), + owning_building_guid = 50, + door_guid = 423 + ) LocalObject(1139, Locker.Constructor(Vector3(5255.716f, 3918.963f, 39.1873f)), owning_building_guid = 50) LocalObject(1140, Locker.Constructor(Vector3(5255.751f, 3940.835f, 39.1873f)), owning_building_guid = 50) LocalObject(1141, Locker.Constructor(Vector3(5257.053f, 3918.963f, 39.1873f)), owning_building_guid = 50) @@ -1612,25 +4675,76 @@ object Map08 { // Oshur Prime LocalObject(1144, Locker.Constructor(Vector3(5259.741f, 3940.835f, 39.1873f)), owning_building_guid = 50) LocalObject(1145, Locker.Constructor(Vector3(5261.143f, 3918.963f, 39.1873f)), owning_building_guid = 50) LocalObject(1146, Locker.Constructor(Vector3(5261.143f, 3940.835f, 39.1873f)), owning_building_guid = 50) - LocalObject(1426, Terminal.Constructor(Vector3(5261.445f, 3924.129f, 40.5253f), order_terminal), owning_building_guid = 50) - LocalObject(1427, Terminal.Constructor(Vector3(5261.445f, 3929.853f, 40.5253f), order_terminal), owning_building_guid = 50) - LocalObject(1428, Terminal.Constructor(Vector3(5261.445f, 3935.234f, 40.5253f), order_terminal), owning_building_guid = 50) - LocalObject(1911, SpawnTube.Constructor(Vector3(5250.706f, 3921.742f, 38.6753f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(1912, SpawnTube.Constructor(Vector3(5250.706f, 3938.152f, 38.6753f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 50) - LocalObject(1295, FacilityTurret.Constructor(Vector3(5227.32f, 3921.295f, 68.1353f), manned_turret), owning_building_guid = 50) + LocalObject( + 1426, + Terminal.Constructor(Vector3(5261.445f, 3924.129f, 40.5253f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1427, + Terminal.Constructor(Vector3(5261.445f, 3929.853f, 40.5253f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1428, + Terminal.Constructor(Vector3(5261.445f, 3935.234f, 40.5253f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1911, + SpawnTube.Constructor(Vector3(5250.706f, 3921.742f, 38.6753f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 1912, + SpawnTube.Constructor(Vector3(5250.706f, 3938.152f, 38.6753f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 50 + ) + LocalObject( + 1295, + FacilityTurret.Constructor(Vector3(5227.32f, 3921.295f, 68.1353f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1295, 5067) - LocalObject(1296, FacilityTurret.Constructor(Vector3(5262.647f, 3946.707f, 68.1353f), manned_turret), owning_building_guid = 50) + LocalObject( + 1296, + FacilityTurret.Constructor(Vector3(5262.647f, 3946.707f, 68.1353f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1296, 5068) - LocalObject(1759, Painbox.Constructor(Vector3(5245.235f, 3927.803f, 40.6924f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1760, Painbox.Constructor(Vector3(5256.889f, 3936.086f, 39.2933f), painbox_radius_continuous), owning_building_guid = 50) - LocalObject(1761, Painbox.Constructor(Vector3(5256.975f, 3924.223f, 39.2933f), painbox_radius_continuous), owning_building_guid = 50) + LocalObject( + 1759, + Painbox.Constructor(Vector3(5245.235f, 3927.803f, 40.6924f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1760, + Painbox.Constructor(Vector3(5256.889f, 3936.086f, 39.2933f), painbox_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 1761, + Painbox.Constructor(Vector3(5256.975f, 3924.223f, 39.2933f), painbox_radius_continuous), + owning_building_guid = 50 + ) } Building18() def Building18(): Unit = { // Name: NE_Amerish_Warpgate_Tower Type: tower_b GUID: 51, MapID: 18 - LocalBuilding("NE_Amerish_Warpgate_Tower", 51, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2888f, 2148f, 37.99061f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1926, CaptureTerminal.Constructor(Vector3(2904.587f, 2147.897f, 57.98961f), secondary_capture), owning_building_guid = 51) + LocalBuilding( + "NE_Amerish_Warpgate_Tower", + 51, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2888f, 2148f, 37.99061f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1926, + CaptureTerminal.Constructor(Vector3(2904.587f, 2147.897f, 57.98961f), secondary_capture), + owning_building_guid = 51 + ) LocalObject(270, Door.Constructor(Vector3(2900f, 2140f, 39.51061f)), owning_building_guid = 51) LocalObject(271, Door.Constructor(Vector3(2900f, 2140f, 49.51061f)), owning_building_guid = 51) LocalObject(272, Door.Constructor(Vector3(2900f, 2140f, 69.51061f)), owning_building_guid = 51) @@ -1639,12 +4753,42 @@ object Map08 { // Oshur Prime LocalObject(275, Door.Constructor(Vector3(2900f, 2156f, 69.51061f)), owning_building_guid = 51) LocalObject(2018, Door.Constructor(Vector3(2899.147f, 2136.794f, 29.32661f)), owning_building_guid = 51) LocalObject(2019, Door.Constructor(Vector3(2899.147f, 2153.204f, 29.32661f)), owning_building_guid = 51) - LocalObject(735, IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 39.45161f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 273) - LocalObject(736, IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 49.45161f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 274) - LocalObject(737, IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 69.45161f), Vector3(0, 0, 0)), owning_building_guid = 51, door_guid = 275) - LocalObject(738, IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 39.45161f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 270) - LocalObject(739, IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 49.45161f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 271) - LocalObject(740, IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 69.45161f), Vector3(0, 0, 180)), owning_building_guid = 51, door_guid = 272) + LocalObject( + 735, + IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 39.45161f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 273 + ) + LocalObject( + 736, + IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 49.45161f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 274 + ) + LocalObject( + 737, + IFFLock.Constructor(Vector3(2897.957f, 2156.811f, 69.45161f), Vector3(0, 0, 0)), + owning_building_guid = 51, + door_guid = 275 + ) + LocalObject( + 738, + IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 39.45161f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 270 + ) + LocalObject( + 739, + IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 49.45161f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 271 + ) + LocalObject( + 740, + IFFLock.Constructor(Vector3(2902.047f, 2139.189f, 69.45161f), Vector3(0, 0, 180)), + owning_building_guid = 51, + door_guid = 272 + ) LocalObject(928, Locker.Constructor(Vector3(2903.716f, 2132.963f, 27.98461f)), owning_building_guid = 51) LocalObject(929, Locker.Constructor(Vector3(2903.751f, 2154.835f, 27.98461f)), owning_building_guid = 51) LocalObject(930, Locker.Constructor(Vector3(2905.053f, 2132.963f, 27.98461f)), owning_building_guid = 51) @@ -1653,21 +4797,64 @@ object Map08 { // Oshur Prime LocalObject(933, Locker.Constructor(Vector3(2907.741f, 2154.835f, 27.98461f)), owning_building_guid = 51) LocalObject(934, Locker.Constructor(Vector3(2909.143f, 2132.963f, 27.98461f)), owning_building_guid = 51) LocalObject(935, Locker.Constructor(Vector3(2909.143f, 2154.835f, 27.98461f)), owning_building_guid = 51) - LocalObject(1353, Terminal.Constructor(Vector3(2909.446f, 2138.129f, 29.32261f), order_terminal), owning_building_guid = 51) - LocalObject(1354, Terminal.Constructor(Vector3(2909.446f, 2143.853f, 29.32261f), order_terminal), owning_building_guid = 51) - LocalObject(1355, Terminal.Constructor(Vector3(2909.446f, 2149.234f, 29.32261f), order_terminal), owning_building_guid = 51) - LocalObject(1865, SpawnTube.Constructor(Vector3(2898.706f, 2135.742f, 27.47261f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1866, SpawnTube.Constructor(Vector3(2898.706f, 2152.152f, 27.47261f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 51) - LocalObject(1717, Painbox.Constructor(Vector3(2893.493f, 2140.849f, 29.28001f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1718, Painbox.Constructor(Vector3(2905.127f, 2138.078f, 28.09061f), painbox_radius_continuous), owning_building_guid = 51) - LocalObject(1719, Painbox.Constructor(Vector3(2905.259f, 2150.107f, 28.09061f), painbox_radius_continuous), owning_building_guid = 51) + LocalObject( + 1353, + Terminal.Constructor(Vector3(2909.446f, 2138.129f, 29.32261f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1354, + Terminal.Constructor(Vector3(2909.446f, 2143.853f, 29.32261f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1355, + Terminal.Constructor(Vector3(2909.446f, 2149.234f, 29.32261f), order_terminal), + owning_building_guid = 51 + ) + LocalObject( + 1865, + SpawnTube.Constructor(Vector3(2898.706f, 2135.742f, 27.47261f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1866, + SpawnTube.Constructor(Vector3(2898.706f, 2152.152f, 27.47261f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 51 + ) + LocalObject( + 1717, + Painbox.Constructor(Vector3(2893.493f, 2140.849f, 29.28001f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1718, + Painbox.Constructor(Vector3(2905.127f, 2138.078f, 28.09061f), painbox_radius_continuous), + owning_building_guid = 51 + ) + LocalObject( + 1719, + Painbox.Constructor(Vector3(2905.259f, 2150.107f, 28.09061f), painbox_radius_continuous), + owning_building_guid = 51 + ) } Building15() def Building15(): Unit = { // Name: W_Hvar_Tower Type: tower_b GUID: 52, MapID: 15 - LocalBuilding("W_Hvar_Tower", 52, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3700f, 4456f, 53.26608f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1931, CaptureTerminal.Constructor(Vector3(3716.587f, 4455.897f, 73.26508f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "W_Hvar_Tower", + 52, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3700f, 4456f, 53.26608f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1931, + CaptureTerminal.Constructor(Vector3(3716.587f, 4455.897f, 73.26508f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(326, Door.Constructor(Vector3(3712f, 4448f, 54.78608f)), owning_building_guid = 52) LocalObject(327, Door.Constructor(Vector3(3712f, 4448f, 64.78608f)), owning_building_guid = 52) LocalObject(328, Door.Constructor(Vector3(3712f, 4448f, 84.78608f)), owning_building_guid = 52) @@ -1676,12 +4863,42 @@ object Map08 { // Oshur Prime LocalObject(331, Door.Constructor(Vector3(3712f, 4464f, 84.78608f)), owning_building_guid = 52) LocalObject(2034, Door.Constructor(Vector3(3711.147f, 4444.794f, 44.60208f)), owning_building_guid = 52) LocalObject(2035, Door.Constructor(Vector3(3711.147f, 4461.204f, 44.60208f)), owning_building_guid = 52) - LocalObject(779, IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 54.72708f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 329) - LocalObject(780, IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 64.72708f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 330) - LocalObject(781, IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 84.72708f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 331) - LocalObject(782, IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 54.72708f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 326) - LocalObject(783, IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 64.72708f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 327) - LocalObject(784, IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 84.72708f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 328) + LocalObject( + 779, + IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 54.72708f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 329 + ) + LocalObject( + 780, + IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 64.72708f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 330 + ) + LocalObject( + 781, + IFFLock.Constructor(Vector3(3709.957f, 4464.811f, 84.72708f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 331 + ) + LocalObject( + 782, + IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 54.72708f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 326 + ) + LocalObject( + 783, + IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 64.72708f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 327 + ) + LocalObject( + 784, + IFFLock.Constructor(Vector3(3714.047f, 4447.189f, 84.72708f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 328 + ) LocalObject(1001, Locker.Constructor(Vector3(3715.716f, 4440.963f, 43.26008f)), owning_building_guid = 52) LocalObject(1002, Locker.Constructor(Vector3(3715.751f, 4462.835f, 43.26008f)), owning_building_guid = 52) LocalObject(1003, Locker.Constructor(Vector3(3717.053f, 4440.963f, 43.26008f)), owning_building_guid = 52) @@ -1690,21 +4907,64 @@ object Map08 { // Oshur Prime LocalObject(1006, Locker.Constructor(Vector3(3719.741f, 4462.835f, 43.26008f)), owning_building_guid = 52) LocalObject(1007, Locker.Constructor(Vector3(3721.143f, 4440.963f, 43.26008f)), owning_building_guid = 52) LocalObject(1008, Locker.Constructor(Vector3(3721.143f, 4462.835f, 43.26008f)), owning_building_guid = 52) - LocalObject(1380, Terminal.Constructor(Vector3(3721.446f, 4446.129f, 44.59808f), order_terminal), owning_building_guid = 52) - LocalObject(1381, Terminal.Constructor(Vector3(3721.446f, 4451.853f, 44.59808f), order_terminal), owning_building_guid = 52) - LocalObject(1382, Terminal.Constructor(Vector3(3721.446f, 4457.234f, 44.59808f), order_terminal), owning_building_guid = 52) - LocalObject(1881, SpawnTube.Constructor(Vector3(3710.706f, 4443.742f, 42.74808f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1882, SpawnTube.Constructor(Vector3(3710.706f, 4460.152f, 42.74808f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1732, Painbox.Constructor(Vector3(3705.493f, 4448.849f, 44.55548f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1733, Painbox.Constructor(Vector3(3717.127f, 4446.078f, 43.36608f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(1734, Painbox.Constructor(Vector3(3717.259f, 4458.107f, 43.36608f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 1380, + Terminal.Constructor(Vector3(3721.446f, 4446.129f, 44.59808f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1381, + Terminal.Constructor(Vector3(3721.446f, 4451.853f, 44.59808f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1382, + Terminal.Constructor(Vector3(3721.446f, 4457.234f, 44.59808f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1881, + SpawnTube.Constructor(Vector3(3710.706f, 4443.742f, 42.74808f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1882, + SpawnTube.Constructor(Vector3(3710.706f, 4460.152f, 42.74808f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1732, + Painbox.Constructor(Vector3(3705.493f, 4448.849f, 44.55548f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1733, + Painbox.Constructor(Vector3(3717.127f, 4446.078f, 43.36608f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 1734, + Painbox.Constructor(Vector3(3717.259f, 4458.107f, 43.36608f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building23() def Building23(): Unit = { // Name: NE_Zal_Tower Type: tower_b GUID: 53, MapID: 23 - LocalBuilding("NE_Zal_Tower", 53, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4290f, 2990f, 42.18527f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1934, CaptureTerminal.Constructor(Vector3(4306.587f, 2989.897f, 62.18427f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "NE_Zal_Tower", + 53, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4290f, 2990f, 42.18527f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1934, + CaptureTerminal.Constructor(Vector3(4306.587f, 2989.897f, 62.18427f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(368, Door.Constructor(Vector3(4302f, 2982f, 43.70527f)), owning_building_guid = 53) LocalObject(369, Door.Constructor(Vector3(4302f, 2982f, 53.70527f)), owning_building_guid = 53) LocalObject(370, Door.Constructor(Vector3(4302f, 2982f, 73.70528f)), owning_building_guid = 53) @@ -1713,12 +4973,42 @@ object Map08 { // Oshur Prime LocalObject(373, Door.Constructor(Vector3(4302f, 2998f, 73.70528f)), owning_building_guid = 53) LocalObject(2046, Door.Constructor(Vector3(4301.147f, 2978.794f, 33.52127f)), owning_building_guid = 53) LocalObject(2047, Door.Constructor(Vector3(4301.147f, 2995.204f, 33.52127f)), owning_building_guid = 53) - LocalObject(812, IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 43.64627f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 371) - LocalObject(813, IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 53.64627f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 372) - LocalObject(814, IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 73.64627f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 373) - LocalObject(815, IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 43.64627f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 368) - LocalObject(816, IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 53.64627f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 369) - LocalObject(817, IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 73.64627f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 370) + LocalObject( + 812, + IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 43.64627f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 371 + ) + LocalObject( + 813, + IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 53.64627f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 372 + ) + LocalObject( + 814, + IFFLock.Constructor(Vector3(4299.957f, 2998.811f, 73.64627f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 373 + ) + LocalObject( + 815, + IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 43.64627f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 368 + ) + LocalObject( + 816, + IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 53.64627f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 369 + ) + LocalObject( + 817, + IFFLock.Constructor(Vector3(4304.047f, 2981.189f, 73.64627f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 370 + ) LocalObject(1058, Locker.Constructor(Vector3(4305.716f, 2974.963f, 32.17927f)), owning_building_guid = 53) LocalObject(1059, Locker.Constructor(Vector3(4305.751f, 2996.835f, 32.17927f)), owning_building_guid = 53) LocalObject(1060, Locker.Constructor(Vector3(4307.053f, 2974.963f, 32.17927f)), owning_building_guid = 53) @@ -1727,21 +5017,64 @@ object Map08 { // Oshur Prime LocalObject(1063, Locker.Constructor(Vector3(4309.741f, 2996.835f, 32.17927f)), owning_building_guid = 53) LocalObject(1064, Locker.Constructor(Vector3(4311.143f, 2974.963f, 32.17927f)), owning_building_guid = 53) LocalObject(1065, Locker.Constructor(Vector3(4311.143f, 2996.835f, 32.17927f)), owning_building_guid = 53) - LocalObject(1400, Terminal.Constructor(Vector3(4311.446f, 2980.129f, 33.51727f), order_terminal), owning_building_guid = 53) - LocalObject(1401, Terminal.Constructor(Vector3(4311.446f, 2985.853f, 33.51727f), order_terminal), owning_building_guid = 53) - LocalObject(1402, Terminal.Constructor(Vector3(4311.446f, 2991.234f, 33.51727f), order_terminal), owning_building_guid = 53) - LocalObject(1893, SpawnTube.Constructor(Vector3(4300.706f, 2977.742f, 31.66727f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1894, SpawnTube.Constructor(Vector3(4300.706f, 2994.152f, 31.66727f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1741, Painbox.Constructor(Vector3(4295.493f, 2982.849f, 33.47467f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1742, Painbox.Constructor(Vector3(4307.127f, 2980.078f, 32.28527f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(1743, Painbox.Constructor(Vector3(4307.259f, 2992.107f, 32.28527f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 1400, + Terminal.Constructor(Vector3(4311.446f, 2980.129f, 33.51727f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1401, + Terminal.Constructor(Vector3(4311.446f, 2985.853f, 33.51727f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1402, + Terminal.Constructor(Vector3(4311.446f, 2991.234f, 33.51727f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1893, + SpawnTube.Constructor(Vector3(4300.706f, 2977.742f, 31.66727f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1894, + SpawnTube.Constructor(Vector3(4300.706f, 2994.152f, 31.66727f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1741, + Painbox.Constructor(Vector3(4295.493f, 2982.849f, 33.47467f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1742, + Painbox.Constructor(Vector3(4307.127f, 2980.078f, 32.28527f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 1743, + Painbox.Constructor(Vector3(4307.259f, 2992.107f, 32.28527f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building20() def Building20(): Unit = { // Name: S_Dahaka_Tower Type: tower_b GUID: 54, MapID: 20 - LocalBuilding("S_Dahaka_Tower", 54, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4514f, 4768f, 74.48821f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1935, CaptureTerminal.Constructor(Vector3(4530.587f, 4767.897f, 94.48721f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "S_Dahaka_Tower", + 54, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4514f, 4768f, 74.48821f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1935, + CaptureTerminal.Constructor(Vector3(4530.587f, 4767.897f, 94.48721f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(374, Door.Constructor(Vector3(4526f, 4760f, 76.00821f)), owning_building_guid = 54) LocalObject(375, Door.Constructor(Vector3(4526f, 4760f, 86.00821f)), owning_building_guid = 54) LocalObject(376, Door.Constructor(Vector3(4526f, 4760f, 106.0082f)), owning_building_guid = 54) @@ -1750,12 +5083,42 @@ object Map08 { // Oshur Prime LocalObject(379, Door.Constructor(Vector3(4526f, 4776f, 106.0082f)), owning_building_guid = 54) LocalObject(2048, Door.Constructor(Vector3(4525.147f, 4756.794f, 65.82421f)), owning_building_guid = 54) LocalObject(2049, Door.Constructor(Vector3(4525.147f, 4773.204f, 65.82421f)), owning_building_guid = 54) - LocalObject(818, IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 75.94921f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 377) - LocalObject(819, IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 85.94921f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 378) - LocalObject(820, IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 105.9492f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 379) - LocalObject(821, IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 75.94921f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 374) - LocalObject(822, IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 85.94921f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 375) - LocalObject(823, IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 105.9492f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 376) + LocalObject( + 818, + IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 75.94921f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 377 + ) + LocalObject( + 819, + IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 85.94921f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 378 + ) + LocalObject( + 820, + IFFLock.Constructor(Vector3(4523.957f, 4776.811f, 105.9492f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 379 + ) + LocalObject( + 821, + IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 75.94921f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 374 + ) + LocalObject( + 822, + IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 85.94921f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 375 + ) + LocalObject( + 823, + IFFLock.Constructor(Vector3(4528.047f, 4759.189f, 105.9492f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 376 + ) LocalObject(1066, Locker.Constructor(Vector3(4529.716f, 4752.963f, 64.48222f)), owning_building_guid = 54) LocalObject(1067, Locker.Constructor(Vector3(4529.751f, 4774.835f, 64.48222f)), owning_building_guid = 54) LocalObject(1068, Locker.Constructor(Vector3(4531.053f, 4752.963f, 64.48222f)), owning_building_guid = 54) @@ -1764,21 +5127,64 @@ object Map08 { // Oshur Prime LocalObject(1071, Locker.Constructor(Vector3(4533.741f, 4774.835f, 64.48222f)), owning_building_guid = 54) LocalObject(1072, Locker.Constructor(Vector3(4535.143f, 4752.963f, 64.48222f)), owning_building_guid = 54) LocalObject(1073, Locker.Constructor(Vector3(4535.143f, 4774.835f, 64.48222f)), owning_building_guid = 54) - LocalObject(1403, Terminal.Constructor(Vector3(4535.446f, 4758.129f, 65.82021f), order_terminal), owning_building_guid = 54) - LocalObject(1404, Terminal.Constructor(Vector3(4535.446f, 4763.853f, 65.82021f), order_terminal), owning_building_guid = 54) - LocalObject(1405, Terminal.Constructor(Vector3(4535.446f, 4769.234f, 65.82021f), order_terminal), owning_building_guid = 54) - LocalObject(1895, SpawnTube.Constructor(Vector3(4524.706f, 4755.742f, 63.97021f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1896, SpawnTube.Constructor(Vector3(4524.706f, 4772.152f, 63.97021f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1744, Painbox.Constructor(Vector3(4519.493f, 4760.849f, 65.77761f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1745, Painbox.Constructor(Vector3(4531.127f, 4758.078f, 64.58821f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1746, Painbox.Constructor(Vector3(4531.259f, 4770.107f, 64.58821f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 1403, + Terminal.Constructor(Vector3(4535.446f, 4758.129f, 65.82021f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1404, + Terminal.Constructor(Vector3(4535.446f, 4763.853f, 65.82021f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1405, + Terminal.Constructor(Vector3(4535.446f, 4769.234f, 65.82021f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1895, + SpawnTube.Constructor(Vector3(4524.706f, 4755.742f, 63.97021f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1896, + SpawnTube.Constructor(Vector3(4524.706f, 4772.152f, 63.97021f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1744, + Painbox.Constructor(Vector3(4519.493f, 4760.849f, 65.77761f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1745, + Painbox.Constructor(Vector3(4531.127f, 4758.078f, 64.58821f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1746, + Painbox.Constructor(Vector3(4531.259f, 4770.107f, 64.58821f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building45() def Building45(): Unit = { // Name: Hossin_Warpgate_Tower Type: tower_b GUID: 55, MapID: 45 - LocalBuilding("Hossin_Warpgate_Tower", 55, 45, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5520f, 5532f, 37.21363f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1942, CaptureTerminal.Constructor(Vector3(5536.587f, 5531.897f, 57.21264f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "Hossin_Warpgate_Tower", + 55, + 45, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5520f, 5532f, 37.21363f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1942, + CaptureTerminal.Constructor(Vector3(5536.587f, 5531.897f, 57.21264f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(441, Door.Constructor(Vector3(5532f, 5524f, 38.73363f)), owning_building_guid = 55) LocalObject(442, Door.Constructor(Vector3(5532f, 5524f, 48.73363f)), owning_building_guid = 55) LocalObject(443, Door.Constructor(Vector3(5532f, 5524f, 68.73363f)), owning_building_guid = 55) @@ -1787,12 +5193,42 @@ object Map08 { // Oshur Prime LocalObject(446, Door.Constructor(Vector3(5532f, 5540f, 68.73363f)), owning_building_guid = 55) LocalObject(2071, Door.Constructor(Vector3(5531.147f, 5520.794f, 28.54963f)), owning_building_guid = 55) LocalObject(2072, Door.Constructor(Vector3(5531.147f, 5537.204f, 28.54963f)), owning_building_guid = 55) - LocalObject(872, IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 38.67463f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 444) - LocalObject(873, IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 48.67464f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 445) - LocalObject(874, IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 68.67464f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 446) - LocalObject(875, IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 38.67463f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 441) - LocalObject(876, IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 48.67464f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 442) - LocalObject(877, IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 68.67464f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 443) + LocalObject( + 872, + IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 38.67463f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 444 + ) + LocalObject( + 873, + IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 48.67464f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 445 + ) + LocalObject( + 874, + IFFLock.Constructor(Vector3(5529.957f, 5540.811f, 68.67464f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 446 + ) + LocalObject( + 875, + IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 38.67463f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 441 + ) + LocalObject( + 876, + IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 48.67464f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 442 + ) + LocalObject( + 877, + IFFLock.Constructor(Vector3(5534.047f, 5523.189f, 68.67464f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 443 + ) LocalObject(1167, Locker.Constructor(Vector3(5535.716f, 5516.963f, 27.20763f)), owning_building_guid = 55) LocalObject(1168, Locker.Constructor(Vector3(5535.751f, 5538.835f, 27.20763f)), owning_building_guid = 55) LocalObject(1169, Locker.Constructor(Vector3(5537.053f, 5516.963f, 27.20763f)), owning_building_guid = 55) @@ -1801,21 +5237,64 @@ object Map08 { // Oshur Prime LocalObject(1172, Locker.Constructor(Vector3(5539.741f, 5538.835f, 27.20763f)), owning_building_guid = 55) LocalObject(1173, Locker.Constructor(Vector3(5541.143f, 5516.963f, 27.20763f)), owning_building_guid = 55) LocalObject(1174, Locker.Constructor(Vector3(5541.143f, 5538.835f, 27.20763f)), owning_building_guid = 55) - LocalObject(1436, Terminal.Constructor(Vector3(5541.446f, 5522.129f, 28.54564f), order_terminal), owning_building_guid = 55) - LocalObject(1437, Terminal.Constructor(Vector3(5541.446f, 5527.853f, 28.54564f), order_terminal), owning_building_guid = 55) - LocalObject(1438, Terminal.Constructor(Vector3(5541.446f, 5533.234f, 28.54564f), order_terminal), owning_building_guid = 55) - LocalObject(1918, SpawnTube.Constructor(Vector3(5530.706f, 5519.742f, 26.69563f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1919, SpawnTube.Constructor(Vector3(5530.706f, 5536.152f, 26.69563f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1765, Painbox.Constructor(Vector3(5525.493f, 5524.849f, 28.50303f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1766, Painbox.Constructor(Vector3(5537.127f, 5522.078f, 27.31363f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1767, Painbox.Constructor(Vector3(5537.259f, 5534.107f, 27.31363f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 1436, + Terminal.Constructor(Vector3(5541.446f, 5522.129f, 28.54564f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1437, + Terminal.Constructor(Vector3(5541.446f, 5527.853f, 28.54564f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1438, + Terminal.Constructor(Vector3(5541.446f, 5533.234f, 28.54564f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1918, + SpawnTube.Constructor(Vector3(5530.706f, 5519.742f, 26.69563f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1919, + SpawnTube.Constructor(Vector3(5530.706f, 5536.152f, 26.69563f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1765, + Painbox.Constructor(Vector3(5525.493f, 5524.849f, 28.50303f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1766, + Painbox.Constructor(Vector3(5537.127f, 5522.078f, 27.31363f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1767, + Painbox.Constructor(Vector3(5537.259f, 5534.107f, 27.31363f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building26() def Building26(): Unit = { // Name: E_Esamir_Warpgate_Tower Type: tower_b GUID: 56, MapID: 26 - LocalBuilding("E_Esamir_Warpgate_Tower", 56, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5844f, 2602f, 36.16751f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1943, CaptureTerminal.Constructor(Vector3(5860.587f, 2601.897f, 56.16651f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "E_Esamir_Warpgate_Tower", + 56, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5844f, 2602f, 36.16751f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1943, + CaptureTerminal.Constructor(Vector3(5860.587f, 2601.897f, 56.16651f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(451, Door.Constructor(Vector3(5856f, 2594f, 37.68751f)), owning_building_guid = 56) LocalObject(452, Door.Constructor(Vector3(5856f, 2594f, 47.68751f)), owning_building_guid = 56) LocalObject(453, Door.Constructor(Vector3(5856f, 2594f, 67.68752f)), owning_building_guid = 56) @@ -1824,12 +5303,42 @@ object Map08 { // Oshur Prime LocalObject(456, Door.Constructor(Vector3(5856f, 2610f, 67.68752f)), owning_building_guid = 56) LocalObject(2073, Door.Constructor(Vector3(5855.147f, 2590.794f, 27.50351f)), owning_building_guid = 56) LocalObject(2074, Door.Constructor(Vector3(5855.147f, 2607.204f, 27.50351f)), owning_building_guid = 56) - LocalObject(878, IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 37.62851f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 454) - LocalObject(879, IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 47.62851f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 455) - LocalObject(880, IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 67.62851f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 456) - LocalObject(881, IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 37.62851f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 451) - LocalObject(882, IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 47.62851f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 452) - LocalObject(883, IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 67.62851f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 453) + LocalObject( + 878, + IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 37.62851f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 454 + ) + LocalObject( + 879, + IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 47.62851f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 455 + ) + LocalObject( + 880, + IFFLock.Constructor(Vector3(5853.957f, 2610.811f, 67.62851f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 456 + ) + LocalObject( + 881, + IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 37.62851f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 451 + ) + LocalObject( + 882, + IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 47.62851f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 452 + ) + LocalObject( + 883, + IFFLock.Constructor(Vector3(5858.047f, 2593.189f, 67.62851f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 453 + ) LocalObject(1175, Locker.Constructor(Vector3(5859.716f, 2586.963f, 26.16151f)), owning_building_guid = 56) LocalObject(1176, Locker.Constructor(Vector3(5859.751f, 2608.835f, 26.16151f)), owning_building_guid = 56) LocalObject(1177, Locker.Constructor(Vector3(5861.053f, 2586.963f, 26.16151f)), owning_building_guid = 56) @@ -1838,31 +5347,94 @@ object Map08 { // Oshur Prime LocalObject(1180, Locker.Constructor(Vector3(5863.741f, 2608.835f, 26.16151f)), owning_building_guid = 56) LocalObject(1181, Locker.Constructor(Vector3(5865.143f, 2586.963f, 26.16151f)), owning_building_guid = 56) LocalObject(1182, Locker.Constructor(Vector3(5865.143f, 2608.835f, 26.16151f)), owning_building_guid = 56) - LocalObject(1439, Terminal.Constructor(Vector3(5865.446f, 2592.129f, 27.49951f), order_terminal), owning_building_guid = 56) - LocalObject(1440, Terminal.Constructor(Vector3(5865.446f, 2597.853f, 27.49951f), order_terminal), owning_building_guid = 56) - LocalObject(1441, Terminal.Constructor(Vector3(5865.446f, 2603.234f, 27.49951f), order_terminal), owning_building_guid = 56) - LocalObject(1920, SpawnTube.Constructor(Vector3(5854.706f, 2589.742f, 25.64951f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1921, SpawnTube.Constructor(Vector3(5854.706f, 2606.152f, 25.64951f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1768, Painbox.Constructor(Vector3(5849.493f, 2594.849f, 27.45691f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1769, Painbox.Constructor(Vector3(5861.127f, 2592.078f, 26.26751f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(1770, Painbox.Constructor(Vector3(5861.259f, 2604.107f, 26.26751f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 1439, + Terminal.Constructor(Vector3(5865.446f, 2592.129f, 27.49951f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1440, + Terminal.Constructor(Vector3(5865.446f, 2597.853f, 27.49951f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1441, + Terminal.Constructor(Vector3(5865.446f, 2603.234f, 27.49951f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1920, + SpawnTube.Constructor(Vector3(5854.706f, 2589.742f, 25.64951f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1921, + SpawnTube.Constructor(Vector3(5854.706f, 2606.152f, 25.64951f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1768, + Painbox.Constructor(Vector3(5849.493f, 2594.849f, 27.45691f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1769, + Painbox.Constructor(Vector3(5861.127f, 2592.078f, 26.26751f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 1770, + Painbox.Constructor(Vector3(5861.259f, 2604.107f, 26.26751f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building39() def Building39(): Unit = { // Name: Mithra_Tower Type: tower_c GUID: 57, MapID: 39 - LocalBuilding("Mithra_Tower", 57, 39, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2830f, 4502f, 55.56146f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1925, CaptureTerminal.Constructor(Vector3(2846.587f, 4501.897f, 65.56046f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "Mithra_Tower", + 57, + 39, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2830f, 4502f, 55.56146f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1925, + CaptureTerminal.Constructor(Vector3(2846.587f, 4501.897f, 65.56046f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(266, Door.Constructor(Vector3(2842f, 4494f, 57.08246f)), owning_building_guid = 57) LocalObject(267, Door.Constructor(Vector3(2842f, 4494f, 77.08146f)), owning_building_guid = 57) LocalObject(268, Door.Constructor(Vector3(2842f, 4510f, 57.08246f)), owning_building_guid = 57) LocalObject(269, Door.Constructor(Vector3(2842f, 4510f, 77.08146f)), owning_building_guid = 57) LocalObject(2016, Door.Constructor(Vector3(2841.146f, 4490.794f, 46.89746f)), owning_building_guid = 57) LocalObject(2017, Door.Constructor(Vector3(2841.146f, 4507.204f, 46.89746f)), owning_building_guid = 57) - LocalObject(731, IFFLock.Constructor(Vector3(2839.957f, 4510.811f, 57.02246f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 268) - LocalObject(732, IFFLock.Constructor(Vector3(2839.957f, 4510.811f, 77.02246f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 269) - LocalObject(733, IFFLock.Constructor(Vector3(2844.047f, 4493.189f, 57.02246f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 266) - LocalObject(734, IFFLock.Constructor(Vector3(2844.047f, 4493.189f, 77.02246f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 267) + LocalObject( + 731, + IFFLock.Constructor(Vector3(2839.957f, 4510.811f, 57.02246f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 268 + ) + LocalObject( + 732, + IFFLock.Constructor(Vector3(2839.957f, 4510.811f, 77.02246f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 269 + ) + LocalObject( + 733, + IFFLock.Constructor(Vector3(2844.047f, 4493.189f, 57.02246f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 266 + ) + LocalObject( + 734, + IFFLock.Constructor(Vector3(2844.047f, 4493.189f, 77.02246f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 267 + ) LocalObject(920, Locker.Constructor(Vector3(2845.716f, 4486.963f, 45.55546f)), owning_building_guid = 57) LocalObject(921, Locker.Constructor(Vector3(2845.751f, 4508.835f, 45.55546f)), owning_building_guid = 57) LocalObject(922, Locker.Constructor(Vector3(2847.053f, 4486.963f, 45.55546f)), owning_building_guid = 57) @@ -1871,39 +5443,126 @@ object Map08 { // Oshur Prime LocalObject(925, Locker.Constructor(Vector3(2849.741f, 4508.835f, 45.55546f)), owning_building_guid = 57) LocalObject(926, Locker.Constructor(Vector3(2851.143f, 4486.963f, 45.55546f)), owning_building_guid = 57) LocalObject(927, Locker.Constructor(Vector3(2851.143f, 4508.835f, 45.55546f)), owning_building_guid = 57) - LocalObject(1350, Terminal.Constructor(Vector3(2851.445f, 4492.129f, 46.89346f), order_terminal), owning_building_guid = 57) - LocalObject(1351, Terminal.Constructor(Vector3(2851.445f, 4497.853f, 46.89346f), order_terminal), owning_building_guid = 57) - LocalObject(1352, Terminal.Constructor(Vector3(2851.445f, 4503.234f, 46.89346f), order_terminal), owning_building_guid = 57) - LocalObject(1863, SpawnTube.Constructor(Vector3(2840.706f, 4489.742f, 45.04346f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1864, SpawnTube.Constructor(Vector3(2840.706f, 4506.152f, 45.04346f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1615, ProximityTerminal.Constructor(Vector3(2828.907f, 4496.725f, 83.13145f), pad_landing_tower_frame), owning_building_guid = 57) - LocalObject(1616, Terminal.Constructor(Vector3(2828.907f, 4496.725f, 83.13145f), air_rearm_terminal), owning_building_guid = 57) - LocalObject(1618, ProximityTerminal.Constructor(Vector3(2828.907f, 4507.17f, 83.13145f), pad_landing_tower_frame), owning_building_guid = 57) - LocalObject(1619, Terminal.Constructor(Vector3(2828.907f, 4507.17f, 83.13145f), air_rearm_terminal), owning_building_guid = 57) - LocalObject(1238, FacilityTurret.Constructor(Vector3(2815.07f, 4487.045f, 74.50346f), manned_turret), owning_building_guid = 57) + LocalObject( + 1350, + Terminal.Constructor(Vector3(2851.445f, 4492.129f, 46.89346f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1351, + Terminal.Constructor(Vector3(2851.445f, 4497.853f, 46.89346f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1352, + Terminal.Constructor(Vector3(2851.445f, 4503.234f, 46.89346f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1863, + SpawnTube.Constructor(Vector3(2840.706f, 4489.742f, 45.04346f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1864, + SpawnTube.Constructor(Vector3(2840.706f, 4506.152f, 45.04346f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1615, + ProximityTerminal.Constructor(Vector3(2828.907f, 4496.725f, 83.13145f), pad_landing_tower_frame), + owning_building_guid = 57 + ) + LocalObject( + 1616, + Terminal.Constructor(Vector3(2828.907f, 4496.725f, 83.13145f), air_rearm_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1618, + ProximityTerminal.Constructor(Vector3(2828.907f, 4507.17f, 83.13145f), pad_landing_tower_frame), + owning_building_guid = 57 + ) + LocalObject( + 1619, + Terminal.Constructor(Vector3(2828.907f, 4507.17f, 83.13145f), air_rearm_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1238, + FacilityTurret.Constructor(Vector3(2815.07f, 4487.045f, 74.50346f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1238, 5069) - LocalObject(1239, FacilityTurret.Constructor(Vector3(2853.497f, 4516.957f, 74.50346f), manned_turret), owning_building_guid = 57) + LocalObject( + 1239, + FacilityTurret.Constructor(Vector3(2853.497f, 4516.957f, 74.50346f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1239, 5070) - LocalObject(1714, Painbox.Constructor(Vector3(2834.454f, 4494.849f, 47.58096f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1715, Painbox.Constructor(Vector3(2846.923f, 4491.54f, 45.66146f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1716, Painbox.Constructor(Vector3(2847.113f, 4504.022f, 45.66146f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 1714, + Painbox.Constructor(Vector3(2834.454f, 4494.849f, 47.58096f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1715, + Painbox.Constructor(Vector3(2846.923f, 4491.54f, 45.66146f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1716, + Painbox.Constructor(Vector3(2847.113f, 4504.022f, 45.66146f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building17() def Building17(): Unit = { // Name: S_Rashnu_Tower Type: tower_c GUID: 58, MapID: 17 - LocalBuilding("S_Rashnu_Tower", 58, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2972f, 2932f, 59.87292f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1927, CaptureTerminal.Constructor(Vector3(2988.587f, 2931.897f, 69.87192f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "S_Rashnu_Tower", + 58, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2972f, 2932f, 59.87292f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1927, + CaptureTerminal.Constructor(Vector3(2988.587f, 2931.897f, 69.87192f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(276, Door.Constructor(Vector3(2984f, 2924f, 61.39392f)), owning_building_guid = 58) LocalObject(277, Door.Constructor(Vector3(2984f, 2924f, 81.39292f)), owning_building_guid = 58) LocalObject(278, Door.Constructor(Vector3(2984f, 2940f, 61.39392f)), owning_building_guid = 58) LocalObject(279, Door.Constructor(Vector3(2984f, 2940f, 81.39292f)), owning_building_guid = 58) LocalObject(2020, Door.Constructor(Vector3(2983.146f, 2920.794f, 51.20892f)), owning_building_guid = 58) LocalObject(2021, Door.Constructor(Vector3(2983.146f, 2937.204f, 51.20892f)), owning_building_guid = 58) - LocalObject(741, IFFLock.Constructor(Vector3(2981.957f, 2940.811f, 61.33392f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 278) - LocalObject(742, IFFLock.Constructor(Vector3(2981.957f, 2940.811f, 81.33392f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 279) - LocalObject(743, IFFLock.Constructor(Vector3(2986.047f, 2923.189f, 61.33392f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 276) - LocalObject(744, IFFLock.Constructor(Vector3(2986.047f, 2923.189f, 81.33392f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 277) + LocalObject( + 741, + IFFLock.Constructor(Vector3(2981.957f, 2940.811f, 61.33392f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 278 + ) + LocalObject( + 742, + IFFLock.Constructor(Vector3(2981.957f, 2940.811f, 81.33392f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 279 + ) + LocalObject( + 743, + IFFLock.Constructor(Vector3(2986.047f, 2923.189f, 61.33392f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 276 + ) + LocalObject( + 744, + IFFLock.Constructor(Vector3(2986.047f, 2923.189f, 81.33392f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 277 + ) LocalObject(936, Locker.Constructor(Vector3(2987.716f, 2916.963f, 49.86692f)), owning_building_guid = 58) LocalObject(937, Locker.Constructor(Vector3(2987.751f, 2938.835f, 49.86692f)), owning_building_guid = 58) LocalObject(938, Locker.Constructor(Vector3(2989.053f, 2916.963f, 49.86692f)), owning_building_guid = 58) @@ -1912,39 +5571,126 @@ object Map08 { // Oshur Prime LocalObject(941, Locker.Constructor(Vector3(2991.741f, 2938.835f, 49.86692f)), owning_building_guid = 58) LocalObject(942, Locker.Constructor(Vector3(2993.143f, 2916.963f, 49.86692f)), owning_building_guid = 58) LocalObject(943, Locker.Constructor(Vector3(2993.143f, 2938.835f, 49.86692f)), owning_building_guid = 58) - LocalObject(1356, Terminal.Constructor(Vector3(2993.445f, 2922.129f, 51.20492f), order_terminal), owning_building_guid = 58) - LocalObject(1357, Terminal.Constructor(Vector3(2993.445f, 2927.853f, 51.20492f), order_terminal), owning_building_guid = 58) - LocalObject(1358, Terminal.Constructor(Vector3(2993.445f, 2933.234f, 51.20492f), order_terminal), owning_building_guid = 58) - LocalObject(1867, SpawnTube.Constructor(Vector3(2982.706f, 2919.742f, 49.35492f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1868, SpawnTube.Constructor(Vector3(2982.706f, 2936.152f, 49.35492f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1621, ProximityTerminal.Constructor(Vector3(2970.907f, 2926.725f, 87.44292f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1622, Terminal.Constructor(Vector3(2970.907f, 2926.725f, 87.44292f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1624, ProximityTerminal.Constructor(Vector3(2970.907f, 2937.17f, 87.44292f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(1625, Terminal.Constructor(Vector3(2970.907f, 2937.17f, 87.44292f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(1240, FacilityTurret.Constructor(Vector3(2957.07f, 2917.045f, 78.81492f), manned_turret), owning_building_guid = 58) + LocalObject( + 1356, + Terminal.Constructor(Vector3(2993.445f, 2922.129f, 51.20492f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1357, + Terminal.Constructor(Vector3(2993.445f, 2927.853f, 51.20492f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1358, + Terminal.Constructor(Vector3(2993.445f, 2933.234f, 51.20492f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1867, + SpawnTube.Constructor(Vector3(2982.706f, 2919.742f, 49.35492f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1868, + SpawnTube.Constructor(Vector3(2982.706f, 2936.152f, 49.35492f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1621, + ProximityTerminal.Constructor(Vector3(2970.907f, 2926.725f, 87.44292f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1622, + Terminal.Constructor(Vector3(2970.907f, 2926.725f, 87.44292f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1624, + ProximityTerminal.Constructor(Vector3(2970.907f, 2937.17f, 87.44292f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 1625, + Terminal.Constructor(Vector3(2970.907f, 2937.17f, 87.44292f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1240, + FacilityTurret.Constructor(Vector3(2957.07f, 2917.045f, 78.81492f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1240, 5071) - LocalObject(1243, FacilityTurret.Constructor(Vector3(2995.497f, 2946.957f, 78.81492f), manned_turret), owning_building_guid = 58) + LocalObject( + 1243, + FacilityTurret.Constructor(Vector3(2995.497f, 2946.957f, 78.81492f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1243, 5072) - LocalObject(1720, Painbox.Constructor(Vector3(2976.454f, 2924.849f, 51.89242f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1721, Painbox.Constructor(Vector3(2988.923f, 2921.54f, 49.97292f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(1722, Painbox.Constructor(Vector3(2989.113f, 2934.022f, 49.97292f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 1720, + Painbox.Constructor(Vector3(2976.454f, 2924.849f, 51.89242f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1721, + Painbox.Constructor(Vector3(2988.923f, 2921.54f, 49.97292f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 1722, + Painbox.Constructor(Vector3(2989.113f, 2934.022f, 49.97292f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building41() def Building41(): Unit = { // Name: Atar_Tower Type: tower_c GUID: 59, MapID: 41 - LocalBuilding("Atar_Tower", 59, 41, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3562f, 3134f, 39.94067f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1930, CaptureTerminal.Constructor(Vector3(3578.587f, 3133.897f, 49.93967f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "Atar_Tower", + 59, + 41, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3562f, 3134f, 39.94067f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1930, + CaptureTerminal.Constructor(Vector3(3578.587f, 3133.897f, 49.93967f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(311, Door.Constructor(Vector3(3574f, 3126f, 41.46167f)), owning_building_guid = 59) LocalObject(312, Door.Constructor(Vector3(3574f, 3126f, 61.46067f)), owning_building_guid = 59) LocalObject(313, Door.Constructor(Vector3(3574f, 3142f, 41.46167f)), owning_building_guid = 59) LocalObject(314, Door.Constructor(Vector3(3574f, 3142f, 61.46067f)), owning_building_guid = 59) LocalObject(2029, Door.Constructor(Vector3(3573.146f, 3122.794f, 31.27667f)), owning_building_guid = 59) LocalObject(2030, Door.Constructor(Vector3(3573.146f, 3139.204f, 31.27667f)), owning_building_guid = 59) - LocalObject(765, IFFLock.Constructor(Vector3(3571.957f, 3142.811f, 41.40167f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 313) - LocalObject(766, IFFLock.Constructor(Vector3(3571.957f, 3142.811f, 61.40167f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 314) - LocalObject(767, IFFLock.Constructor(Vector3(3576.047f, 3125.189f, 41.40167f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 311) - LocalObject(768, IFFLock.Constructor(Vector3(3576.047f, 3125.189f, 61.40167f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 312) + LocalObject( + 765, + IFFLock.Constructor(Vector3(3571.957f, 3142.811f, 41.40167f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 313 + ) + LocalObject( + 766, + IFFLock.Constructor(Vector3(3571.957f, 3142.811f, 61.40167f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 314 + ) + LocalObject( + 767, + IFFLock.Constructor(Vector3(3576.047f, 3125.189f, 41.40167f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 311 + ) + LocalObject( + 768, + IFFLock.Constructor(Vector3(3576.047f, 3125.189f, 61.40167f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 312 + ) LocalObject(981, Locker.Constructor(Vector3(3577.716f, 3118.963f, 29.93467f)), owning_building_guid = 59) LocalObject(982, Locker.Constructor(Vector3(3577.751f, 3140.835f, 29.93467f)), owning_building_guid = 59) LocalObject(983, Locker.Constructor(Vector3(3579.053f, 3118.963f, 29.93467f)), owning_building_guid = 59) @@ -1953,39 +5699,126 @@ object Map08 { // Oshur Prime LocalObject(986, Locker.Constructor(Vector3(3581.741f, 3140.835f, 29.93467f)), owning_building_guid = 59) LocalObject(987, Locker.Constructor(Vector3(3583.143f, 3118.963f, 29.93467f)), owning_building_guid = 59) LocalObject(988, Locker.Constructor(Vector3(3583.143f, 3140.835f, 29.93467f)), owning_building_guid = 59) - LocalObject(1374, Terminal.Constructor(Vector3(3583.445f, 3124.129f, 31.27267f), order_terminal), owning_building_guid = 59) - LocalObject(1375, Terminal.Constructor(Vector3(3583.445f, 3129.853f, 31.27267f), order_terminal), owning_building_guid = 59) - LocalObject(1376, Terminal.Constructor(Vector3(3583.445f, 3135.234f, 31.27267f), order_terminal), owning_building_guid = 59) - LocalObject(1876, SpawnTube.Constructor(Vector3(3572.706f, 3121.742f, 29.42267f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1877, SpawnTube.Constructor(Vector3(3572.706f, 3138.152f, 29.42267f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1627, ProximityTerminal.Constructor(Vector3(3560.907f, 3128.725f, 67.51067f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1628, Terminal.Constructor(Vector3(3560.907f, 3128.725f, 67.51067f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1630, ProximityTerminal.Constructor(Vector3(3560.907f, 3139.17f, 67.51067f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(1631, Terminal.Constructor(Vector3(3560.907f, 3139.17f, 67.51067f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(1254, FacilityTurret.Constructor(Vector3(3547.07f, 3119.045f, 58.88267f), manned_turret), owning_building_guid = 59) + LocalObject( + 1374, + Terminal.Constructor(Vector3(3583.445f, 3124.129f, 31.27267f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1375, + Terminal.Constructor(Vector3(3583.445f, 3129.853f, 31.27267f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1376, + Terminal.Constructor(Vector3(3583.445f, 3135.234f, 31.27267f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1876, + SpawnTube.Constructor(Vector3(3572.706f, 3121.742f, 29.42267f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1877, + SpawnTube.Constructor(Vector3(3572.706f, 3138.152f, 29.42267f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1627, + ProximityTerminal.Constructor(Vector3(3560.907f, 3128.725f, 67.51067f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1628, + Terminal.Constructor(Vector3(3560.907f, 3128.725f, 67.51067f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1630, + ProximityTerminal.Constructor(Vector3(3560.907f, 3139.17f, 67.51067f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 1631, + Terminal.Constructor(Vector3(3560.907f, 3139.17f, 67.51067f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1254, + FacilityTurret.Constructor(Vector3(3547.07f, 3119.045f, 58.88267f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1254, 5073) - LocalObject(1257, FacilityTurret.Constructor(Vector3(3585.497f, 3148.957f, 58.88267f), manned_turret), owning_building_guid = 59) + LocalObject( + 1257, + FacilityTurret.Constructor(Vector3(3585.497f, 3148.957f, 58.88267f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1257, 5074) - LocalObject(1729, Painbox.Constructor(Vector3(3566.454f, 3126.849f, 31.96017f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1730, Painbox.Constructor(Vector3(3578.923f, 3123.54f, 30.04067f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1731, Painbox.Constructor(Vector3(3579.113f, 3136.022f, 30.04067f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 1729, + Painbox.Constructor(Vector3(3566.454f, 3126.849f, 31.96017f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1730, + Painbox.Constructor(Vector3(3578.923f, 3123.54f, 30.04067f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1731, + Painbox.Constructor(Vector3(3579.113f, 3136.022f, 30.04067f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building43() def Building43(): Unit = { // Name: Yazata_Tower Type: tower_c GUID: 60, MapID: 43 - LocalBuilding("Yazata_Tower", 60, 43, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4640f, 3674f, 71.13654f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1936, CaptureTerminal.Constructor(Vector3(4656.587f, 3673.897f, 81.13554f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "Yazata_Tower", + 60, + 43, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4640f, 3674f, 71.13654f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1936, + CaptureTerminal.Constructor(Vector3(4656.587f, 3673.897f, 81.13554f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(382, Door.Constructor(Vector3(4652f, 3666f, 72.65755f)), owning_building_guid = 60) LocalObject(383, Door.Constructor(Vector3(4652f, 3666f, 92.65654f)), owning_building_guid = 60) LocalObject(384, Door.Constructor(Vector3(4652f, 3682f, 72.65755f)), owning_building_guid = 60) LocalObject(385, Door.Constructor(Vector3(4652f, 3682f, 92.65654f)), owning_building_guid = 60) LocalObject(2050, Door.Constructor(Vector3(4651.146f, 3662.794f, 62.47254f)), owning_building_guid = 60) LocalObject(2051, Door.Constructor(Vector3(4651.146f, 3679.204f, 62.47254f)), owning_building_guid = 60) - LocalObject(826, IFFLock.Constructor(Vector3(4649.957f, 3682.811f, 72.59754f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 384) - LocalObject(827, IFFLock.Constructor(Vector3(4649.957f, 3682.811f, 92.59754f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 385) - LocalObject(828, IFFLock.Constructor(Vector3(4654.047f, 3665.189f, 72.59754f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 382) - LocalObject(829, IFFLock.Constructor(Vector3(4654.047f, 3665.189f, 92.59754f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 383) + LocalObject( + 826, + IFFLock.Constructor(Vector3(4649.957f, 3682.811f, 72.59754f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 384 + ) + LocalObject( + 827, + IFFLock.Constructor(Vector3(4649.957f, 3682.811f, 92.59754f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 385 + ) + LocalObject( + 828, + IFFLock.Constructor(Vector3(4654.047f, 3665.189f, 72.59754f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 382 + ) + LocalObject( + 829, + IFFLock.Constructor(Vector3(4654.047f, 3665.189f, 92.59754f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 383 + ) LocalObject(1079, Locker.Constructor(Vector3(4655.716f, 3658.963f, 61.13054f)), owning_building_guid = 60) LocalObject(1080, Locker.Constructor(Vector3(4655.751f, 3680.835f, 61.13054f)), owning_building_guid = 60) LocalObject(1081, Locker.Constructor(Vector3(4657.053f, 3658.963f, 61.13054f)), owning_building_guid = 60) @@ -1994,39 +5827,126 @@ object Map08 { // Oshur Prime LocalObject(1090, Locker.Constructor(Vector3(4659.741f, 3680.835f, 61.13054f)), owning_building_guid = 60) LocalObject(1091, Locker.Constructor(Vector3(4661.143f, 3658.963f, 61.13054f)), owning_building_guid = 60) LocalObject(1092, Locker.Constructor(Vector3(4661.143f, 3680.835f, 61.13054f)), owning_building_guid = 60) - LocalObject(1406, Terminal.Constructor(Vector3(4661.445f, 3664.129f, 62.46854f), order_terminal), owning_building_guid = 60) - LocalObject(1407, Terminal.Constructor(Vector3(4661.445f, 3669.853f, 62.46854f), order_terminal), owning_building_guid = 60) - LocalObject(1408, Terminal.Constructor(Vector3(4661.445f, 3675.234f, 62.46854f), order_terminal), owning_building_guid = 60) - LocalObject(1897, SpawnTube.Constructor(Vector3(4650.706f, 3661.742f, 60.61855f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1898, SpawnTube.Constructor(Vector3(4650.706f, 3678.152f, 60.61855f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1633, ProximityTerminal.Constructor(Vector3(4638.907f, 3668.725f, 98.70654f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1634, Terminal.Constructor(Vector3(4638.907f, 3668.725f, 98.70654f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1636, ProximityTerminal.Constructor(Vector3(4638.907f, 3679.17f, 98.70654f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(1637, Terminal.Constructor(Vector3(4638.907f, 3679.17f, 98.70654f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(1278, FacilityTurret.Constructor(Vector3(4625.07f, 3659.045f, 90.07854f), manned_turret), owning_building_guid = 60) + LocalObject( + 1406, + Terminal.Constructor(Vector3(4661.445f, 3664.129f, 62.46854f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1407, + Terminal.Constructor(Vector3(4661.445f, 3669.853f, 62.46854f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1408, + Terminal.Constructor(Vector3(4661.445f, 3675.234f, 62.46854f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1897, + SpawnTube.Constructor(Vector3(4650.706f, 3661.742f, 60.61855f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1898, + SpawnTube.Constructor(Vector3(4650.706f, 3678.152f, 60.61855f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1633, + ProximityTerminal.Constructor(Vector3(4638.907f, 3668.725f, 98.70654f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1634, + Terminal.Constructor(Vector3(4638.907f, 3668.725f, 98.70654f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1636, + ProximityTerminal.Constructor(Vector3(4638.907f, 3679.17f, 98.70654f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 1637, + Terminal.Constructor(Vector3(4638.907f, 3679.17f, 98.70654f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1278, + FacilityTurret.Constructor(Vector3(4625.07f, 3659.045f, 90.07854f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1278, 5075) - LocalObject(1281, FacilityTurret.Constructor(Vector3(4663.497f, 3688.957f, 90.07854f), manned_turret), owning_building_guid = 60) + LocalObject( + 1281, + FacilityTurret.Constructor(Vector3(4663.497f, 3688.957f, 90.07854f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1281, 5076) - LocalObject(1747, Painbox.Constructor(Vector3(4644.454f, 3666.849f, 63.15604f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1748, Painbox.Constructor(Vector3(4656.923f, 3663.54f, 61.23654f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1749, Painbox.Constructor(Vector3(4657.113f, 3676.022f, 61.23654f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1747, + Painbox.Constructor(Vector3(4644.454f, 3666.849f, 63.15604f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1748, + Painbox.Constructor(Vector3(4656.923f, 3663.54f, 61.23654f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1749, + Painbox.Constructor(Vector3(4657.113f, 3676.022f, 61.23654f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building19() def Building19(): Unit = { // Name: NE_Dahaka_Tower Type: tower_c GUID: 61, MapID: 19 - LocalBuilding("NE_Dahaka_Tower", 61, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4882f, 5580f, 74.37141f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1937, CaptureTerminal.Constructor(Vector3(4898.587f, 5579.897f, 84.37041f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "NE_Dahaka_Tower", + 61, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4882f, 5580f, 74.37141f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1937, + CaptureTerminal.Constructor(Vector3(4898.587f, 5579.897f, 84.37041f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(409, Door.Constructor(Vector3(4894f, 5572f, 75.89241f)), owning_building_guid = 61) LocalObject(410, Door.Constructor(Vector3(4894f, 5572f, 95.8914f)), owning_building_guid = 61) LocalObject(411, Door.Constructor(Vector3(4894f, 5588f, 75.89241f)), owning_building_guid = 61) LocalObject(412, Door.Constructor(Vector3(4894f, 5588f, 95.8914f)), owning_building_guid = 61) LocalObject(2058, Door.Constructor(Vector3(4893.146f, 5568.794f, 65.70741f)), owning_building_guid = 61) LocalObject(2059, Door.Constructor(Vector3(4893.146f, 5585.204f, 65.70741f)), owning_building_guid = 61) - LocalObject(844, IFFLock.Constructor(Vector3(4891.957f, 5588.811f, 75.83241f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 411) - LocalObject(845, IFFLock.Constructor(Vector3(4891.957f, 5588.811f, 95.83241f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 412) - LocalObject(846, IFFLock.Constructor(Vector3(4896.047f, 5571.189f, 75.83241f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 409) - LocalObject(847, IFFLock.Constructor(Vector3(4896.047f, 5571.189f, 95.83241f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 410) + LocalObject( + 844, + IFFLock.Constructor(Vector3(4891.957f, 5588.811f, 75.83241f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 411 + ) + LocalObject( + 845, + IFFLock.Constructor(Vector3(4891.957f, 5588.811f, 95.83241f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 412 + ) + LocalObject( + 846, + IFFLock.Constructor(Vector3(4896.047f, 5571.189f, 75.83241f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 409 + ) + LocalObject( + 847, + IFFLock.Constructor(Vector3(4896.047f, 5571.189f, 95.83241f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 410 + ) LocalObject(1115, Locker.Constructor(Vector3(4897.716f, 5564.963f, 64.36541f)), owning_building_guid = 61) LocalObject(1116, Locker.Constructor(Vector3(4897.751f, 5586.835f, 64.36541f)), owning_building_guid = 61) LocalObject(1117, Locker.Constructor(Vector3(4899.053f, 5564.963f, 64.36541f)), owning_building_guid = 61) @@ -2035,39 +5955,126 @@ object Map08 { // Oshur Prime LocalObject(1120, Locker.Constructor(Vector3(4901.741f, 5586.835f, 64.36541f)), owning_building_guid = 61) LocalObject(1121, Locker.Constructor(Vector3(4903.143f, 5564.963f, 64.36541f)), owning_building_guid = 61) LocalObject(1122, Locker.Constructor(Vector3(4903.143f, 5586.835f, 64.36541f)), owning_building_guid = 61) - LocalObject(1417, Terminal.Constructor(Vector3(4903.445f, 5570.129f, 65.70341f), order_terminal), owning_building_guid = 61) - LocalObject(1418, Terminal.Constructor(Vector3(4903.445f, 5575.853f, 65.70341f), order_terminal), owning_building_guid = 61) - LocalObject(1419, Terminal.Constructor(Vector3(4903.445f, 5581.234f, 65.70341f), order_terminal), owning_building_guid = 61) - LocalObject(1905, SpawnTube.Constructor(Vector3(4892.706f, 5567.742f, 63.85341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1906, SpawnTube.Constructor(Vector3(4892.706f, 5584.152f, 63.85341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1639, ProximityTerminal.Constructor(Vector3(4880.907f, 5574.725f, 101.9414f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(1640, Terminal.Constructor(Vector3(4880.907f, 5574.725f, 101.9414f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(1642, ProximityTerminal.Constructor(Vector3(4880.907f, 5585.17f, 101.9414f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(1643, Terminal.Constructor(Vector3(4880.907f, 5585.17f, 101.9414f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(1288, FacilityTurret.Constructor(Vector3(4867.07f, 5565.045f, 93.31341f), manned_turret), owning_building_guid = 61) + LocalObject( + 1417, + Terminal.Constructor(Vector3(4903.445f, 5570.129f, 65.70341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1418, + Terminal.Constructor(Vector3(4903.445f, 5575.853f, 65.70341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1419, + Terminal.Constructor(Vector3(4903.445f, 5581.234f, 65.70341f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1905, + SpawnTube.Constructor(Vector3(4892.706f, 5567.742f, 63.85341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1906, + SpawnTube.Constructor(Vector3(4892.706f, 5584.152f, 63.85341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1639, + ProximityTerminal.Constructor(Vector3(4880.907f, 5574.725f, 101.9414f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 1640, + Terminal.Constructor(Vector3(4880.907f, 5574.725f, 101.9414f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1642, + ProximityTerminal.Constructor(Vector3(4880.907f, 5585.17f, 101.9414f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 1643, + Terminal.Constructor(Vector3(4880.907f, 5585.17f, 101.9414f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1288, + FacilityTurret.Constructor(Vector3(4867.07f, 5565.045f, 93.31341f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1288, 5077) - LocalObject(1290, FacilityTurret.Constructor(Vector3(4905.497f, 5594.957f, 93.31341f), manned_turret), owning_building_guid = 61) + LocalObject( + 1290, + FacilityTurret.Constructor(Vector3(4905.497f, 5594.957f, 93.31341f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1290, 5078) - LocalObject(1750, Painbox.Constructor(Vector3(4886.454f, 5572.849f, 66.39091f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1751, Painbox.Constructor(Vector3(4898.923f, 5569.54f, 64.47141f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1752, Painbox.Constructor(Vector3(4899.113f, 5582.022f, 64.47141f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1750, + Painbox.Constructor(Vector3(4886.454f, 5572.849f, 66.39091f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1751, + Painbox.Constructor(Vector3(4898.923f, 5569.54f, 64.47141f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1752, + Painbox.Constructor(Vector3(4899.113f, 5582.022f, 64.47141f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building25() def Building25(): Unit = { // Name: S_Izha_Tower Type: tower_c GUID: 62, MapID: 25 - LocalBuilding("S_Izha_Tower", 62, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5296f, 3324f, 36.35033f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1941, CaptureTerminal.Constructor(Vector3(5312.587f, 3323.897f, 46.34933f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "S_Izha_Tower", + 62, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5296f, 3324f, 36.35033f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1941, + CaptureTerminal.Constructor(Vector3(5312.587f, 3323.897f, 46.34933f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(426, Door.Constructor(Vector3(5308f, 3316f, 37.87133f)), owning_building_guid = 62) LocalObject(427, Door.Constructor(Vector3(5308f, 3316f, 57.87033f)), owning_building_guid = 62) LocalObject(428, Door.Constructor(Vector3(5308f, 3332f, 37.87133f)), owning_building_guid = 62) LocalObject(429, Door.Constructor(Vector3(5308f, 3332f, 57.87033f)), owning_building_guid = 62) LocalObject(2066, Door.Constructor(Vector3(5307.146f, 3312.794f, 27.68633f)), owning_building_guid = 62) LocalObject(2067, Door.Constructor(Vector3(5307.146f, 3329.204f, 27.68633f)), owning_building_guid = 62) - LocalObject(860, IFFLock.Constructor(Vector3(5305.957f, 3332.811f, 37.81133f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 428) - LocalObject(861, IFFLock.Constructor(Vector3(5305.957f, 3332.811f, 57.81133f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 429) - LocalObject(862, IFFLock.Constructor(Vector3(5310.047f, 3315.189f, 37.81133f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 426) - LocalObject(863, IFFLock.Constructor(Vector3(5310.047f, 3315.189f, 57.81133f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 427) + LocalObject( + 860, + IFFLock.Constructor(Vector3(5305.957f, 3332.811f, 37.81133f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 428 + ) + LocalObject( + 861, + IFFLock.Constructor(Vector3(5305.957f, 3332.811f, 57.81133f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 429 + ) + LocalObject( + 862, + IFFLock.Constructor(Vector3(5310.047f, 3315.189f, 37.81133f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 426 + ) + LocalObject( + 863, + IFFLock.Constructor(Vector3(5310.047f, 3315.189f, 57.81133f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 427 + ) LocalObject(1147, Locker.Constructor(Vector3(5311.716f, 3308.963f, 26.34433f)), owning_building_guid = 62) LocalObject(1148, Locker.Constructor(Vector3(5311.751f, 3330.835f, 26.34433f)), owning_building_guid = 62) LocalObject(1149, Locker.Constructor(Vector3(5313.053f, 3308.963f, 26.34433f)), owning_building_guid = 62) @@ -2076,39 +6083,126 @@ object Map08 { // Oshur Prime LocalObject(1152, Locker.Constructor(Vector3(5315.741f, 3330.835f, 26.34433f)), owning_building_guid = 62) LocalObject(1153, Locker.Constructor(Vector3(5317.143f, 3308.963f, 26.34433f)), owning_building_guid = 62) LocalObject(1154, Locker.Constructor(Vector3(5317.143f, 3330.835f, 26.34433f)), owning_building_guid = 62) - LocalObject(1429, Terminal.Constructor(Vector3(5317.445f, 3314.129f, 27.68233f), order_terminal), owning_building_guid = 62) - LocalObject(1430, Terminal.Constructor(Vector3(5317.445f, 3319.853f, 27.68233f), order_terminal), owning_building_guid = 62) - LocalObject(1431, Terminal.Constructor(Vector3(5317.445f, 3325.234f, 27.68233f), order_terminal), owning_building_guid = 62) - LocalObject(1913, SpawnTube.Constructor(Vector3(5306.706f, 3311.742f, 25.83233f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(1914, SpawnTube.Constructor(Vector3(5306.706f, 3328.152f, 25.83233f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(1645, ProximityTerminal.Constructor(Vector3(5294.907f, 3318.725f, 63.92033f), pad_landing_tower_frame), owning_building_guid = 62) - LocalObject(1646, Terminal.Constructor(Vector3(5294.907f, 3318.725f, 63.92033f), air_rearm_terminal), owning_building_guid = 62) - LocalObject(1648, ProximityTerminal.Constructor(Vector3(5294.907f, 3329.17f, 63.92033f), pad_landing_tower_frame), owning_building_guid = 62) - LocalObject(1649, Terminal.Constructor(Vector3(5294.907f, 3329.17f, 63.92033f), air_rearm_terminal), owning_building_guid = 62) - LocalObject(1297, FacilityTurret.Constructor(Vector3(5281.07f, 3309.045f, 55.29233f), manned_turret), owning_building_guid = 62) + LocalObject( + 1429, + Terminal.Constructor(Vector3(5317.445f, 3314.129f, 27.68233f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1430, + Terminal.Constructor(Vector3(5317.445f, 3319.853f, 27.68233f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1431, + Terminal.Constructor(Vector3(5317.445f, 3325.234f, 27.68233f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1913, + SpawnTube.Constructor(Vector3(5306.706f, 3311.742f, 25.83233f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 1914, + SpawnTube.Constructor(Vector3(5306.706f, 3328.152f, 25.83233f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 1645, + ProximityTerminal.Constructor(Vector3(5294.907f, 3318.725f, 63.92033f), pad_landing_tower_frame), + owning_building_guid = 62 + ) + LocalObject( + 1646, + Terminal.Constructor(Vector3(5294.907f, 3318.725f, 63.92033f), air_rearm_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1648, + ProximityTerminal.Constructor(Vector3(5294.907f, 3329.17f, 63.92033f), pad_landing_tower_frame), + owning_building_guid = 62 + ) + LocalObject( + 1649, + Terminal.Constructor(Vector3(5294.907f, 3329.17f, 63.92033f), air_rearm_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1297, + FacilityTurret.Constructor(Vector3(5281.07f, 3309.045f, 55.29233f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1297, 5079) - LocalObject(1298, FacilityTurret.Constructor(Vector3(5319.497f, 3338.957f, 55.29233f), manned_turret), owning_building_guid = 62) + LocalObject( + 1298, + FacilityTurret.Constructor(Vector3(5319.497f, 3338.957f, 55.29233f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1298, 5080) - LocalObject(1762, Painbox.Constructor(Vector3(5300.454f, 3316.849f, 28.36983f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(1763, Painbox.Constructor(Vector3(5312.923f, 3313.54f, 26.45033f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(1764, Painbox.Constructor(Vector3(5313.113f, 3326.022f, 26.45033f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 1762, + Painbox.Constructor(Vector3(5300.454f, 3316.849f, 28.36983f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 1763, + Painbox.Constructor(Vector3(5312.923f, 3313.54f, 26.45033f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 1764, + Painbox.Constructor(Vector3(5313.113f, 3326.022f, 26.45033f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building24() def Building24(): Unit = { // Name: SE_Izha_Tower Type: tower_c GUID: 63, MapID: 24 - LocalBuilding("SE_Izha_Tower", 63, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6248f, 3502f, 60.33504f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1944, CaptureTerminal.Constructor(Vector3(6264.587f, 3501.897f, 70.33405f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "SE_Izha_Tower", + 63, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6248f, 3502f, 60.33504f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1944, + CaptureTerminal.Constructor(Vector3(6264.587f, 3501.897f, 70.33405f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(457, Door.Constructor(Vector3(6260f, 3494f, 61.85604f)), owning_building_guid = 63) LocalObject(458, Door.Constructor(Vector3(6260f, 3494f, 81.85504f)), owning_building_guid = 63) LocalObject(459, Door.Constructor(Vector3(6260f, 3510f, 61.85604f)), owning_building_guid = 63) LocalObject(460, Door.Constructor(Vector3(6260f, 3510f, 81.85504f)), owning_building_guid = 63) LocalObject(2075, Door.Constructor(Vector3(6259.146f, 3490.794f, 51.67104f)), owning_building_guid = 63) LocalObject(2076, Door.Constructor(Vector3(6259.146f, 3507.204f, 51.67104f)), owning_building_guid = 63) - LocalObject(884, IFFLock.Constructor(Vector3(6257.957f, 3510.811f, 61.79604f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 459) - LocalObject(885, IFFLock.Constructor(Vector3(6257.957f, 3510.811f, 81.79604f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 460) - LocalObject(886, IFFLock.Constructor(Vector3(6262.047f, 3493.189f, 61.79604f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 457) - LocalObject(887, IFFLock.Constructor(Vector3(6262.047f, 3493.189f, 81.79604f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 458) + LocalObject( + 884, + IFFLock.Constructor(Vector3(6257.957f, 3510.811f, 61.79604f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 459 + ) + LocalObject( + 885, + IFFLock.Constructor(Vector3(6257.957f, 3510.811f, 81.79604f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 460 + ) + LocalObject( + 886, + IFFLock.Constructor(Vector3(6262.047f, 3493.189f, 61.79604f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 457 + ) + LocalObject( + 887, + IFFLock.Constructor(Vector3(6262.047f, 3493.189f, 81.79604f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 458 + ) LocalObject(1183, Locker.Constructor(Vector3(6263.716f, 3486.963f, 50.32904f)), owning_building_guid = 63) LocalObject(1184, Locker.Constructor(Vector3(6263.751f, 3508.835f, 50.32904f)), owning_building_guid = 63) LocalObject(1185, Locker.Constructor(Vector3(6265.053f, 3486.963f, 50.32904f)), owning_building_guid = 63) @@ -2117,46 +6211,122 @@ object Map08 { // Oshur Prime LocalObject(1188, Locker.Constructor(Vector3(6267.741f, 3508.835f, 50.32904f)), owning_building_guid = 63) LocalObject(1189, Locker.Constructor(Vector3(6269.143f, 3486.963f, 50.32904f)), owning_building_guid = 63) LocalObject(1190, Locker.Constructor(Vector3(6269.143f, 3508.835f, 50.32904f)), owning_building_guid = 63) - LocalObject(1442, Terminal.Constructor(Vector3(6269.445f, 3492.129f, 51.66705f), order_terminal), owning_building_guid = 63) - LocalObject(1443, Terminal.Constructor(Vector3(6269.445f, 3497.853f, 51.66705f), order_terminal), owning_building_guid = 63) - LocalObject(1444, Terminal.Constructor(Vector3(6269.445f, 3503.234f, 51.66705f), order_terminal), owning_building_guid = 63) - LocalObject(1922, SpawnTube.Constructor(Vector3(6258.706f, 3489.742f, 49.81705f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1923, SpawnTube.Constructor(Vector3(6258.706f, 3506.152f, 49.81705f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1651, ProximityTerminal.Constructor(Vector3(6246.907f, 3496.725f, 87.90504f), pad_landing_tower_frame), owning_building_guid = 63) - LocalObject(1652, Terminal.Constructor(Vector3(6246.907f, 3496.725f, 87.90504f), air_rearm_terminal), owning_building_guid = 63) - LocalObject(1654, ProximityTerminal.Constructor(Vector3(6246.907f, 3507.17f, 87.90504f), pad_landing_tower_frame), owning_building_guid = 63) - LocalObject(1655, Terminal.Constructor(Vector3(6246.907f, 3507.17f, 87.90504f), air_rearm_terminal), owning_building_guid = 63) - LocalObject(1305, FacilityTurret.Constructor(Vector3(6233.07f, 3487.045f, 79.27705f), manned_turret), owning_building_guid = 63) + LocalObject( + 1442, + Terminal.Constructor(Vector3(6269.445f, 3492.129f, 51.66705f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1443, + Terminal.Constructor(Vector3(6269.445f, 3497.853f, 51.66705f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1444, + Terminal.Constructor(Vector3(6269.445f, 3503.234f, 51.66705f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1922, + SpawnTube.Constructor(Vector3(6258.706f, 3489.742f, 49.81705f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1923, + SpawnTube.Constructor(Vector3(6258.706f, 3506.152f, 49.81705f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1651, + ProximityTerminal.Constructor(Vector3(6246.907f, 3496.725f, 87.90504f), pad_landing_tower_frame), + owning_building_guid = 63 + ) + LocalObject( + 1652, + Terminal.Constructor(Vector3(6246.907f, 3496.725f, 87.90504f), air_rearm_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1654, + ProximityTerminal.Constructor(Vector3(6246.907f, 3507.17f, 87.90504f), pad_landing_tower_frame), + owning_building_guid = 63 + ) + LocalObject( + 1655, + Terminal.Constructor(Vector3(6246.907f, 3507.17f, 87.90504f), air_rearm_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1305, + FacilityTurret.Constructor(Vector3(6233.07f, 3487.045f, 79.27705f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1305, 5081) - LocalObject(1306, FacilityTurret.Constructor(Vector3(6271.497f, 3516.957f, 79.27705f), manned_turret), owning_building_guid = 63) + LocalObject( + 1306, + FacilityTurret.Constructor(Vector3(6271.497f, 3516.957f, 79.27705f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1306, 5082) - LocalObject(1771, Painbox.Constructor(Vector3(6252.454f, 3494.849f, 52.35455f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(1772, Painbox.Constructor(Vector3(6264.923f, 3491.54f, 50.43504f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(1773, Painbox.Constructor(Vector3(6265.113f, 3504.022f, 50.43504f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 1771, + Painbox.Constructor(Vector3(6252.454f, 3494.849f, 52.35455f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 1772, + Painbox.Constructor(Vector3(6264.923f, 3491.54f, 50.43504f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 1773, + Painbox.Constructor(Vector3(6265.113f, 3504.022f, 50.43504f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building3() def Building3(): Unit = { // Name: WG_Oshur_to_Amerish Type: warpgate GUID: 64, MapID: 3 - LocalBuilding("WG_Oshur_to_Amerish", 64, 3, FoundationBuilder(WarpGate.Structure(Vector3(2676f, 1818f, 45.95843f)))) + LocalBuilding( + "WG_Oshur_to_Amerish", + 64, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(2676f, 1818f, 45.95843f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Oshur_to_Forseral Type: warpgate GUID: 65, MapID: 2 - LocalBuilding("WG_Oshur_to_Forseral", 65, 2, FoundationBuilder(WarpGate.Structure(Vector3(3294f, 5816f, 61.28976f)))) + LocalBuilding( + "WG_Oshur_to_Forseral", + 65, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(3294f, 5816f, 61.28976f))) + ) } Building4() def Building4(): Unit = { // Name: WG_Oshur_to_Esamir Type: warpgate GUID: 66, MapID: 4 - LocalBuilding("WG_Oshur_to_Esamir", 66, 4, FoundationBuilder(WarpGate.Structure(Vector3(5236f, 2552f, 39.79848f)))) + LocalBuilding( + "WG_Oshur_to_Esamir", + 66, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(5236f, 2552f, 39.79848f))) + ) } Building1() def Building1(): Unit = { // Name: WG_Oshur_to_Hossin Type: warpgate GUID: 67, MapID: 1 - LocalBuilding("WG_Oshur_to_Hossin", 67, 1, FoundationBuilder(WarpGate.Structure(Vector3(5554f, 5208f, 31.79511f)))) + LocalBuilding( + "WG_Oshur_to_Hossin", + 67, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(5554f, 5208f, 31.79511f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map09.scala b/pslogin/src/main/scala/zonemaps/Map09.scala index dd48d7a9..cafef4e5 100644 --- a/pslogin/src/main/scala/zonemaps/Map09.scala +++ b/pslogin/src/main/scala/zonemaps/Map09.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map09 { // Searhus Building14() def Building14(): Unit = { // Name: Rehua Type: amp_station GUID: 1, MapID: 14 - LocalBuilding("Rehua", 1, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3736f, 2160f, 59.77203f), Vector3(0f, 0f, 333f), amp_station))) - LocalObject(213, CaptureTerminal.Constructor(Vector3(3733.029f, 2161.517f, 71.28003f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Rehua", + 1, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3736f, 2160f, 59.77203f), + Vector3(0f, 0f, 333f), + amp_station + ) + ) + ) + LocalObject( + 213, + CaptureTerminal.Constructor(Vector3(3733.029f, 2161.517f, 71.28003f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(163, Door.Constructor(Vector3(3733.099f, 2153.841f, 72.67403f)), owning_building_guid = 1) LocalObject(164, Door.Constructor(Vector3(3739.28f, 2165.966f, 72.67403f)), owning_building_guid = 1) LocalObject(389, Door.Constructor(Vector3(3650.236f, 2141.41f, 61.52303f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map09 { // Searhus LocalObject(2762, Door.Constructor(Vector3(3714.118f, 2159.626f, 54.32603f)), owning_building_guid = 1) LocalObject(2763, Door.Constructor(Vector3(3717.429f, 2166.125f, 54.32603f)), owning_building_guid = 1) LocalObject(2764, Door.Constructor(Vector3(3720.739f, 2172.619f, 54.32603f)), owning_building_guid = 1) - LocalObject(991, IFFLock.Constructor(Vector3(3765.828f, 2148.243f, 61.45203f), Vector3(0, 0, 117)), owning_building_guid = 1, door_guid = 939) - LocalObject(1074, IFFLock.Constructor(Vector3(3692.851f, 2179.26f, 46.30803f), Vector3(0, 0, 117)), owning_building_guid = 1, door_guid = 675) - LocalObject(1075, IFFLock.Constructor(Vector3(3703.156f, 2267.448f, 61.43203f), Vector3(0, 0, 27)), owning_building_guid = 1, door_guid = 401) - LocalObject(1076, IFFLock.Constructor(Vector3(3716.618f, 2133.291f, 71.43303f), Vector3(0, 0, 297)), owning_building_guid = 1, door_guid = 404) - LocalObject(1077, IFFLock.Constructor(Vector3(3719.077f, 2149.756f, 53.80803f), Vector3(0, 0, 207)), owning_building_guid = 1, door_guid = 683) - LocalObject(1078, IFFLock.Constructor(Vector3(3721.34f, 2126.729f, 66.43403f), Vector3(0, 0, 207)), owning_building_guid = 1, door_guid = 405) - LocalObject(1079, IFFLock.Constructor(Vector3(3727.996f, 2132.083f, 71.43303f), Vector3(0, 0, 117)), owning_building_guid = 1, door_guid = 407) - LocalObject(1080, IFFLock.Constructor(Vector3(3727.966f, 2174.128f, 53.80803f), Vector3(0, 0, 27)), owning_building_guid = 1, door_guid = 689) - LocalObject(1081, IFFLock.Constructor(Vector3(3729.001f, 2148.334f, 46.30803f), Vector3(0, 0, 297)), owning_building_guid = 1, door_guid = 690) - LocalObject(1083, IFFLock.Constructor(Vector3(3744.374f, 2187.765f, 71.43303f), Vector3(0, 0, 297)), owning_building_guid = 1, door_guid = 410) - LocalObject(1086, IFFLock.Constructor(Vector3(3750.668f, 2193.29f, 66.43403f), Vector3(0, 0, 27)), owning_building_guid = 1, door_guid = 412) - LocalObject(1087, IFFLock.Constructor(Vector3(3755.753f, 2186.56f, 71.43303f), Vector3(0, 0, 117)), owning_building_guid = 1, door_guid = 413) + LocalObject( + 991, + IFFLock.Constructor(Vector3(3765.828f, 2148.243f, 61.45203f), Vector3(0, 0, 117)), + owning_building_guid = 1, + door_guid = 939 + ) + LocalObject( + 1074, + IFFLock.Constructor(Vector3(3692.851f, 2179.26f, 46.30803f), Vector3(0, 0, 117)), + owning_building_guid = 1, + door_guid = 675 + ) + LocalObject( + 1075, + IFFLock.Constructor(Vector3(3703.156f, 2267.448f, 61.43203f), Vector3(0, 0, 27)), + owning_building_guid = 1, + door_guid = 401 + ) + LocalObject( + 1076, + IFFLock.Constructor(Vector3(3716.618f, 2133.291f, 71.43303f), Vector3(0, 0, 297)), + owning_building_guid = 1, + door_guid = 404 + ) + LocalObject( + 1077, + IFFLock.Constructor(Vector3(3719.077f, 2149.756f, 53.80803f), Vector3(0, 0, 207)), + owning_building_guid = 1, + door_guid = 683 + ) + LocalObject( + 1078, + IFFLock.Constructor(Vector3(3721.34f, 2126.729f, 66.43403f), Vector3(0, 0, 207)), + owning_building_guid = 1, + door_guid = 405 + ) + LocalObject( + 1079, + IFFLock.Constructor(Vector3(3727.996f, 2132.083f, 71.43303f), Vector3(0, 0, 117)), + owning_building_guid = 1, + door_guid = 407 + ) + LocalObject( + 1080, + IFFLock.Constructor(Vector3(3727.966f, 2174.128f, 53.80803f), Vector3(0, 0, 27)), + owning_building_guid = 1, + door_guid = 689 + ) + LocalObject( + 1081, + IFFLock.Constructor(Vector3(3729.001f, 2148.334f, 46.30803f), Vector3(0, 0, 297)), + owning_building_guid = 1, + door_guid = 690 + ) + LocalObject( + 1083, + IFFLock.Constructor(Vector3(3744.374f, 2187.765f, 71.43303f), Vector3(0, 0, 297)), + owning_building_guid = 1, + door_guid = 410 + ) + LocalObject( + 1086, + IFFLock.Constructor(Vector3(3750.668f, 2193.29f, 66.43403f), Vector3(0, 0, 27)), + owning_building_guid = 1, + door_guid = 412 + ) + LocalObject( + 1087, + IFFLock.Constructor(Vector3(3755.753f, 2186.56f, 71.43303f), Vector3(0, 0, 117)), + owning_building_guid = 1, + door_guid = 413 + ) LocalObject(1348, Locker.Constructor(Vector3(3722.191f, 2151.482f, 52.73302f)), owning_building_guid = 1) LocalObject(1349, Locker.Constructor(Vector3(3723.228f, 2150.953f, 52.73302f)), owning_building_guid = 1) LocalObject(1350, Locker.Constructor(Vector3(3724.25f, 2150.433f, 52.73302f)), owning_building_guid = 1) @@ -94,65 +170,258 @@ object Map09 { // Searhus LocalObject(1367, Locker.Constructor(Vector3(3749.54f, 2160.02f, 44.97203f)), owning_building_guid = 1) LocalObject(1368, Locker.Constructor(Vector3(3750.73f, 2159.414f, 44.97203f)), owning_building_guid = 1) LocalObject(1369, Locker.Constructor(Vector3(3751.922f, 2158.807f, 44.97203f)), owning_building_guid = 1) - LocalObject(1881, Terminal.Constructor(Vector3(3715.98f, 2170.196f, 61.30103f), order_terminal), owning_building_guid = 1) - LocalObject(1882, Terminal.Constructor(Vector3(3725.794f, 2139.974f, 61.30103f), order_terminal), owning_building_guid = 1) - LocalObject(1883, Terminal.Constructor(Vector3(3727.336f, 2154.771f, 54.06203f), order_terminal), owning_building_guid = 1) - LocalObject(1884, Terminal.Constructor(Vector3(3729.03f, 2158.096f, 54.06203f), order_terminal), owning_building_guid = 1) - LocalObject(1885, Terminal.Constructor(Vector3(3730.75f, 2161.472f, 54.06203f), order_terminal), owning_building_guid = 1) - LocalObject(1886, Terminal.Constructor(Vector3(3746.203f, 2180.028f, 61.30103f), order_terminal), owning_building_guid = 1) - LocalObject(2656, Terminal.Constructor(Vector3(3711.175f, 2216.879f, 54.02903f), spawn_terminal), owning_building_guid = 1) - LocalObject(2657, Terminal.Constructor(Vector3(3713.253f, 2157.272f, 54.60603f), spawn_terminal), owning_building_guid = 1) - LocalObject(2658, Terminal.Constructor(Vector3(3716.56f, 2163.771f, 54.60603f), spawn_terminal), owning_building_guid = 1) - LocalObject(2659, Terminal.Constructor(Vector3(3719.872f, 2170.264f, 54.60603f), spawn_terminal), owning_building_guid = 1) - LocalObject(2660, Terminal.Constructor(Vector3(3721.663f, 2184.599f, 46.52903f), spawn_terminal), owning_building_guid = 1) - LocalObject(2661, Terminal.Constructor(Vector3(3729.053f, 2158.489f, 66.50002f), spawn_terminal), owning_building_guid = 1) - LocalObject(2911, Terminal.Constructor(Vector3(3730.74f, 2255.241f, 61.87403f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1801, VehicleSpawnPad.Constructor(Vector3(3724.629f, 2243.049f, 57.71703f), mb_pad_creation, Vector3(0, 0, 207)), owning_building_guid = 1, terminal_guid = 2911) + LocalObject( + 1881, + Terminal.Constructor(Vector3(3715.98f, 2170.196f, 61.30103f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1882, + Terminal.Constructor(Vector3(3725.794f, 2139.974f, 61.30103f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1883, + Terminal.Constructor(Vector3(3727.336f, 2154.771f, 54.06203f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1884, + Terminal.Constructor(Vector3(3729.03f, 2158.096f, 54.06203f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1885, + Terminal.Constructor(Vector3(3730.75f, 2161.472f, 54.06203f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1886, + Terminal.Constructor(Vector3(3746.203f, 2180.028f, 61.30103f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2656, + Terminal.Constructor(Vector3(3711.175f, 2216.879f, 54.02903f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2657, + Terminal.Constructor(Vector3(3713.253f, 2157.272f, 54.60603f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2658, + Terminal.Constructor(Vector3(3716.56f, 2163.771f, 54.60603f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2659, + Terminal.Constructor(Vector3(3719.872f, 2170.264f, 54.60603f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2660, + Terminal.Constructor(Vector3(3721.663f, 2184.599f, 46.52903f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2661, + Terminal.Constructor(Vector3(3729.053f, 2158.489f, 66.50002f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2911, + Terminal.Constructor(Vector3(3730.74f, 2255.241f, 61.87403f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1801, + VehicleSpawnPad.Constructor(Vector3(3724.629f, 2243.049f, 57.71703f), mb_pad_creation, Vector3(0, 0, 207)), + owning_building_guid = 1, + terminal_guid = 2911 + ) LocalObject(2519, ResourceSilo.Constructor(Vector3(3744.093f, 2059.923f, 67.00703f)), owning_building_guid = 1) - LocalObject(2557, SpawnTube.Constructor(Vector3(3713.25f, 2158.891f, 52.47203f), Vector3(0, 0, 27)), owning_building_guid = 1) - LocalObject(2558, SpawnTube.Constructor(Vector3(3716.56f, 2165.387f, 52.47203f), Vector3(0, 0, 27)), owning_building_guid = 1) - LocalObject(2559, SpawnTube.Constructor(Vector3(3719.868f, 2171.881f, 52.47203f), Vector3(0, 0, 27)), owning_building_guid = 1) - LocalObject(1820, ProximityTerminal.Constructor(Vector3(3716.352f, 2170.004f, 64.97202f), medical_terminal), owning_building_guid = 1) - LocalObject(1821, ProximityTerminal.Constructor(Vector3(3746.075f, 2161.174f, 44.97203f), medical_terminal), owning_building_guid = 1) - LocalObject(2078, ProximityTerminal.Constructor(Vector3(3693.968f, 2203.606f, 68.27702f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2079, Terminal.Constructor(Vector3(3693.968f, 2203.606f, 68.27702f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2081, ProximityTerminal.Constructor(Vector3(3710.028f, 2090.748f, 68.30003f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2082, Terminal.Constructor(Vector3(3710.028f, 2090.748f, 68.30003f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2090, ProximityTerminal.Constructor(Vector3(3770.99f, 2119.913f, 68.27702f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2091, Terminal.Constructor(Vector3(3770.99f, 2119.913f, 68.27702f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2093, ProximityTerminal.Constructor(Vector3(3785.763f, 2199.08f, 70.43803f), pad_landing_frame), owning_building_guid = 1) - LocalObject(2094, Terminal.Constructor(Vector3(3785.763f, 2199.08f, 70.43803f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2425, ProximityTerminal.Constructor(Vector3(3673.636f, 2192.004f, 59.17203f), repair_silo), owning_building_guid = 1) - LocalObject(2426, Terminal.Constructor(Vector3(3673.636f, 2192.004f, 59.17203f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2437, ProximityTerminal.Constructor(Vector3(3791.71f, 2132.056f, 59.17203f), repair_silo), owning_building_guid = 1) - LocalObject(2438, Terminal.Constructor(Vector3(3791.71f, 2132.056f, 59.17203f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1702, FacilityTurret.Constructor(Vector3(3620.226f, 2110.306f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 2557, + SpawnTube.Constructor(Vector3(3713.25f, 2158.891f, 52.47203f), Vector3(0, 0, 27)), + owning_building_guid = 1 + ) + LocalObject( + 2558, + SpawnTube.Constructor(Vector3(3716.56f, 2165.387f, 52.47203f), Vector3(0, 0, 27)), + owning_building_guid = 1 + ) + LocalObject( + 2559, + SpawnTube.Constructor(Vector3(3719.868f, 2171.881f, 52.47203f), Vector3(0, 0, 27)), + owning_building_guid = 1 + ) + LocalObject( + 1820, + ProximityTerminal.Constructor(Vector3(3716.352f, 2170.004f, 64.97202f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1821, + ProximityTerminal.Constructor(Vector3(3746.075f, 2161.174f, 44.97203f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2078, + ProximityTerminal.Constructor(Vector3(3693.968f, 2203.606f, 68.27702f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2079, + Terminal.Constructor(Vector3(3693.968f, 2203.606f, 68.27702f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2081, + ProximityTerminal.Constructor(Vector3(3710.028f, 2090.748f, 68.30003f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2082, + Terminal.Constructor(Vector3(3710.028f, 2090.748f, 68.30003f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2090, + ProximityTerminal.Constructor(Vector3(3770.99f, 2119.913f, 68.27702f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2091, + Terminal.Constructor(Vector3(3770.99f, 2119.913f, 68.27702f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2093, + ProximityTerminal.Constructor(Vector3(3785.763f, 2199.08f, 70.43803f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 2094, + Terminal.Constructor(Vector3(3785.763f, 2199.08f, 70.43803f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2425, + ProximityTerminal.Constructor(Vector3(3673.636f, 2192.004f, 59.17203f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2426, + Terminal.Constructor(Vector3(3673.636f, 2192.004f, 59.17203f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2437, + ProximityTerminal.Constructor(Vector3(3791.71f, 2132.056f, 59.17203f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2438, + Terminal.Constructor(Vector3(3791.71f, 2132.056f, 59.17203f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1702, + FacilityTurret.Constructor(Vector3(3620.226f, 2110.306f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1702, 5000) - LocalObject(1706, FacilityTurret.Constructor(Vector3(3672.307f, 2081.269f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 1706, + FacilityTurret.Constructor(Vector3(3672.307f, 2081.269f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1706, 5001) - LocalObject(1708, FacilityTurret.Constructor(Vector3(3711.759f, 2290.015f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 1708, + FacilityTurret.Constructor(Vector3(3711.759f, 2290.015f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1708, 5002) - LocalObject(1710, FacilityTurret.Constructor(Vector3(3756.928f, 2040.641f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 1710, + FacilityTurret.Constructor(Vector3(3756.928f, 2040.641f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1710, 5003) - LocalObject(1713, FacilityTurret.Constructor(Vector3(3821.697f, 2162.852f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 1713, + FacilityTurret.Constructor(Vector3(3821.697f, 2162.852f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1713, 5004) - LocalObject(1716, FacilityTurret.Constructor(Vector3(3848.496f, 2220.333f, 68.48003f), manned_turret), owning_building_guid = 1) + LocalObject( + 1716, + FacilityTurret.Constructor(Vector3(3848.496f, 2220.333f, 68.48003f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1716, 5005) - LocalObject(2254, Painbox.Constructor(Vector3(3679.549f, 2181.039f, 49.84303f), painbox), owning_building_guid = 1) - LocalObject(2268, Painbox.Constructor(Vector3(3724.314f, 2164.368f, 57.42043f), painbox_continuous), owning_building_guid = 1) - LocalObject(2282, Painbox.Constructor(Vector3(3693.028f, 2176.558f, 46.43103f), painbox_door_radius), owning_building_guid = 1) - LocalObject(2300, Painbox.Constructor(Vector3(3717.562f, 2150.244f, 53.67203f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2301, Painbox.Constructor(Vector3(3729.589f, 2173.687f, 53.73653f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2302, Painbox.Constructor(Vector3(3739.104f, 2162.86f, 55.65063f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 2254, + Painbox.Constructor(Vector3(3679.549f, 2181.039f, 49.84303f), painbox), + owning_building_guid = 1 + ) + LocalObject( + 2268, + Painbox.Constructor(Vector3(3724.314f, 2164.368f, 57.42043f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2282, + Painbox.Constructor(Vector3(3693.028f, 2176.558f, 46.43103f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 2300, + Painbox.Constructor(Vector3(3717.562f, 2150.244f, 53.67203f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2301, + Painbox.Constructor(Vector3(3729.589f, 2173.687f, 53.73653f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2302, + Painbox.Constructor(Vector3(3739.104f, 2162.86f, 55.65063f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(299, Generator.Constructor(Vector3(3677.545f, 2185.267f, 43.67802f)), owning_building_guid = 1) - LocalObject(285, Terminal.Constructor(Vector3(3684.865f, 2181.59f, 44.97203f), gen_control), owning_building_guid = 1) + LocalObject( + 285, + Terminal.Constructor(Vector3(3684.865f, 2181.59f, 44.97203f), gen_control), + owning_building_guid = 1 + ) } Building13() def Building13(): Unit = { // Name: Pele Type: amp_station GUID: 4, MapID: 13 - LocalBuilding("Pele", 4, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4440f, 3688f, 208.002f), Vector3(0f, 0f, 327f), amp_station))) - LocalObject(217, CaptureTerminal.Constructor(Vector3(4437.204f, 3689.819f, 219.5099f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Pele", + 4, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4440f, 3688f, 208.002f), + Vector3(0f, 0f, 327f), + amp_station + ) + ) + ) + LocalObject( + 217, + CaptureTerminal.Constructor(Vector3(4437.204f, 3689.819f, 219.5099f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(165, Door.Constructor(Vector3(4436.471f, 3682.178f, 220.904f)), owning_building_guid = 4) LocalObject(166, Door.Constructor(Vector3(4443.886f, 3693.591f, 220.904f)), owning_building_guid = 4) LocalObject(455, Door.Constructor(Vector3(4352.762f, 3678.477f, 209.753f)), owning_building_guid = 4) @@ -198,18 +467,78 @@ object Map09 { // Searhus LocalObject(2780, Door.Constructor(Vector3(4418.199f, 3689.916f, 202.556f)), owning_building_guid = 4) LocalObject(2781, Door.Constructor(Vector3(4422.171f, 3696.032f, 202.556f)), owning_building_guid = 4) LocalObject(2782, Door.Constructor(Vector3(4426.141f, 3702.145f, 202.556f)), owning_building_guid = 4) - LocalObject(995, IFFLock.Constructor(Vector3(4468.436f, 3673.189f, 209.6819f), Vector3(0, 0, 123)), owning_building_guid = 4, door_guid = 943) - LocalObject(1120, IFFLock.Constructor(Vector3(4399.101f, 3711.665f, 194.5379f), Vector3(0, 0, 123)), owning_building_guid = 4, door_guid = 756) - LocalObject(1121, IFFLock.Constructor(Vector3(4417.932f, 3663.463f, 219.6629f), Vector3(0, 0, 303)), owning_building_guid = 4, door_guid = 464) - LocalObject(1122, IFFLock.Constructor(Vector3(4418.568f, 3798.292f, 209.662f), Vector3(0, 0, 33)), owning_building_guid = 4, door_guid = 465) - LocalObject(1123, IFFLock.Constructor(Vector3(4421.942f, 3656.444f, 214.664f), Vector3(0, 0, 213)), owning_building_guid = 4, door_guid = 466) - LocalObject(1124, IFFLock.Constructor(Vector3(4422.099f, 3679.582f, 202.0379f), Vector3(0, 0, 213)), owning_building_guid = 4, door_guid = 762) - LocalObject(1125, IFFLock.Constructor(Vector3(4429.122f, 3661.073f, 219.6629f), Vector3(0, 0, 123)), owning_building_guid = 4, door_guid = 468) - LocalObject(1126, IFFLock.Constructor(Vector3(4431.82f, 3677.13f, 194.5379f), Vector3(0, 0, 303)), owning_building_guid = 4, door_guid = 766) - LocalObject(1127, IFFLock.Constructor(Vector3(4433.487f, 3702.89f, 202.0379f), Vector3(0, 0, 33)), owning_building_guid = 4, door_guid = 767) - LocalObject(1128, IFFLock.Constructor(Vector3(4451.23f, 3714.737f, 219.6629f), Vector3(0, 0, 303)), owning_building_guid = 4, door_guid = 469) - LocalObject(1129, IFFLock.Constructor(Vector3(4458.067f, 3719.575f, 214.664f), Vector3(0, 0, 33)), owning_building_guid = 4, door_guid = 471) - LocalObject(1130, IFFLock.Constructor(Vector3(4462.421f, 3712.35f, 219.6629f), Vector3(0, 0, 123)), owning_building_guid = 4, door_guid = 472) + LocalObject( + 995, + IFFLock.Constructor(Vector3(4468.436f, 3673.189f, 209.6819f), Vector3(0, 0, 123)), + owning_building_guid = 4, + door_guid = 943 + ) + LocalObject( + 1120, + IFFLock.Constructor(Vector3(4399.101f, 3711.665f, 194.5379f), Vector3(0, 0, 123)), + owning_building_guid = 4, + door_guid = 756 + ) + LocalObject( + 1121, + IFFLock.Constructor(Vector3(4417.932f, 3663.463f, 219.6629f), Vector3(0, 0, 303)), + owning_building_guid = 4, + door_guid = 464 + ) + LocalObject( + 1122, + IFFLock.Constructor(Vector3(4418.568f, 3798.292f, 209.662f), Vector3(0, 0, 33)), + owning_building_guid = 4, + door_guid = 465 + ) + LocalObject( + 1123, + IFFLock.Constructor(Vector3(4421.942f, 3656.444f, 214.664f), Vector3(0, 0, 213)), + owning_building_guid = 4, + door_guid = 466 + ) + LocalObject( + 1124, + IFFLock.Constructor(Vector3(4422.099f, 3679.582f, 202.0379f), Vector3(0, 0, 213)), + owning_building_guid = 4, + door_guid = 762 + ) + LocalObject( + 1125, + IFFLock.Constructor(Vector3(4429.122f, 3661.073f, 219.6629f), Vector3(0, 0, 123)), + owning_building_guid = 4, + door_guid = 468 + ) + LocalObject( + 1126, + IFFLock.Constructor(Vector3(4431.82f, 3677.13f, 194.5379f), Vector3(0, 0, 303)), + owning_building_guid = 4, + door_guid = 766 + ) + LocalObject( + 1127, + IFFLock.Constructor(Vector3(4433.487f, 3702.89f, 202.0379f), Vector3(0, 0, 33)), + owning_building_guid = 4, + door_guid = 767 + ) + LocalObject( + 1128, + IFFLock.Constructor(Vector3(4451.23f, 3714.737f, 219.6629f), Vector3(0, 0, 303)), + owning_building_guid = 4, + door_guid = 469 + ) + LocalObject( + 1129, + IFFLock.Constructor(Vector3(4458.067f, 3719.575f, 214.664f), Vector3(0, 0, 33)), + owning_building_guid = 4, + door_guid = 471 + ) + LocalObject( + 1130, + IFFLock.Constructor(Vector3(4462.421f, 3712.35f, 219.6629f), Vector3(0, 0, 123)), + owning_building_guid = 4, + door_guid = 472 + ) LocalObject(1429, Locker.Constructor(Vector3(4425.376f, 3680.972f, 200.963f)), owning_building_guid = 4) LocalObject(1430, Locker.Constructor(Vector3(4426.352f, 3680.338f, 200.963f)), owning_building_guid = 4) LocalObject(1431, Locker.Constructor(Vector3(4427.314f, 3679.713f, 200.963f)), owning_building_guid = 4) @@ -222,65 +551,254 @@ object Map09 { // Searhus LocalObject(1438, Locker.Constructor(Vector3(4453.468f, 3686.605f, 193.202f)), owning_building_guid = 4) LocalObject(1439, Locker.Constructor(Vector3(4454.588f, 3685.877f, 193.202f)), owning_building_guid = 4) LocalObject(1440, Locker.Constructor(Vector3(4455.709f, 3685.149f, 193.202f)), owning_building_guid = 4) - LocalObject(1908, Terminal.Constructor(Vector3(4421.155f, 3700.233f, 209.531f), order_terminal), owning_building_guid = 4) - LocalObject(1909, Terminal.Constructor(Vector3(4427.756f, 3669.15f, 209.531f), order_terminal), owning_building_guid = 4) - LocalObject(1910, Terminal.Constructor(Vector3(4430.837f, 3683.706f, 202.2919f), order_terminal), owning_building_guid = 4) - LocalObject(1911, Terminal.Constructor(Vector3(4432.869f, 3686.835f, 202.2919f), order_terminal), owning_building_guid = 4) - LocalObject(1912, Terminal.Constructor(Vector3(4434.933f, 3690.013f, 202.2919f), order_terminal), owning_building_guid = 4) - LocalObject(1913, Terminal.Constructor(Vector3(4452.24f, 3706.852f, 209.531f), order_terminal), owning_building_guid = 4) - LocalObject(2682, Terminal.Constructor(Vector3(4417.093f, 3687.665f, 202.836f), spawn_terminal), owning_building_guid = 4) - LocalObject(2683, Terminal.Constructor(Vector3(4421.061f, 3693.783f, 202.836f), spawn_terminal), owning_building_guid = 4) - LocalObject(2684, Terminal.Constructor(Vector3(4421.256f, 3747.162f, 202.259f), spawn_terminal), owning_building_guid = 4) - LocalObject(2685, Terminal.Constructor(Vector3(4425.033f, 3699.893f, 202.836f), spawn_terminal), owning_building_guid = 4) - LocalObject(2686, Terminal.Constructor(Vector3(4428.313f, 3713.963f, 194.759f), spawn_terminal), owning_building_guid = 4) - LocalObject(2687, Terminal.Constructor(Vector3(4432.933f, 3687.224f, 214.7299f), spawn_terminal), owning_building_guid = 4) - LocalObject(2914, Terminal.Constructor(Vector3(4444.725f, 3783.27f, 210.104f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(1808, VehicleSpawnPad.Constructor(Vector3(4437.373f, 3771.783f, 205.947f), mb_pad_creation, Vector3(0, 0, 213)), owning_building_guid = 4, terminal_guid = 2914) + LocalObject( + 1908, + Terminal.Constructor(Vector3(4421.155f, 3700.233f, 209.531f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1909, + Terminal.Constructor(Vector3(4427.756f, 3669.15f, 209.531f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1910, + Terminal.Constructor(Vector3(4430.837f, 3683.706f, 202.2919f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1911, + Terminal.Constructor(Vector3(4432.869f, 3686.835f, 202.2919f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1912, + Terminal.Constructor(Vector3(4434.933f, 3690.013f, 202.2919f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1913, + Terminal.Constructor(Vector3(4452.24f, 3706.852f, 209.531f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2682, + Terminal.Constructor(Vector3(4417.093f, 3687.665f, 202.836f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2683, + Terminal.Constructor(Vector3(4421.061f, 3693.783f, 202.836f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2684, + Terminal.Constructor(Vector3(4421.256f, 3747.162f, 202.259f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2685, + Terminal.Constructor(Vector3(4425.033f, 3699.893f, 202.836f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2686, + Terminal.Constructor(Vector3(4428.313f, 3713.963f, 194.759f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2687, + Terminal.Constructor(Vector3(4432.933f, 3687.224f, 214.7299f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2914, + Terminal.Constructor(Vector3(4444.725f, 3783.27f, 210.104f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 1808, + VehicleSpawnPad.Constructor(Vector3(4437.373f, 3771.783f, 205.947f), mb_pad_creation, Vector3(0, 0, 213)), + owning_building_guid = 4, + terminal_guid = 2914 + ) LocalObject(2523, ResourceSilo.Constructor(Vector3(4437.588f, 3587.625f, 215.237f)), owning_building_guid = 4) - LocalObject(2575, SpawnTube.Constructor(Vector3(4417.258f, 3689.275f, 200.702f), Vector3(0, 0, 33)), owning_building_guid = 4) - LocalObject(2576, SpawnTube.Constructor(Vector3(4421.229f, 3695.389f, 200.702f), Vector3(0, 0, 33)), owning_building_guid = 4) - LocalObject(2577, SpawnTube.Constructor(Vector3(4425.199f, 3701.502f, 200.702f), Vector3(0, 0, 33)), owning_building_guid = 4) - LocalObject(1827, ProximityTerminal.Constructor(Vector3(4421.506f, 3700.003f, 213.202f), medical_terminal), owning_building_guid = 4) - LocalObject(1828, ProximityTerminal.Constructor(Vector3(4450.143f, 3688.115f, 193.202f), medical_terminal), owning_building_guid = 4) - LocalObject(2132, ProximityTerminal.Constructor(Vector3(4402.756f, 3735.761f, 216.507f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2133, Terminal.Constructor(Vector3(4402.756f, 3735.761f, 216.507f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2135, ProximityTerminal.Constructor(Vector3(4406.931f, 3621.843f, 216.53f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2136, Terminal.Constructor(Vector3(4406.931f, 3621.843f, 216.53f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2138, ProximityTerminal.Constructor(Vector3(4470.607f, 3644.475f, 216.507f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2139, Terminal.Constructor(Vector3(4470.607f, 3644.475f, 216.507f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2141, ProximityTerminal.Constructor(Vector3(4493.575f, 3721.664f, 218.668f), pad_landing_frame), owning_building_guid = 4) - LocalObject(2142, Terminal.Constructor(Vector3(4493.575f, 3721.664f, 218.668f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2453, ProximityTerminal.Constructor(Vector3(4381.323f, 3726.348f, 207.4019f), repair_silo), owning_building_guid = 4) - LocalObject(2454, Terminal.Constructor(Vector3(4381.323f, 3726.348f, 207.4019f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(2457, ProximityTerminal.Constructor(Vector3(4492.484f, 3654.385f, 207.4019f), repair_silo), owning_building_guid = 4) - LocalObject(2458, Terminal.Constructor(Vector3(4492.484f, 3654.385f, 207.4019f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1729, FacilityTurret.Constructor(Vector3(4319.666f, 3650.68f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 2575, + SpawnTube.Constructor(Vector3(4417.258f, 3689.275f, 200.702f), Vector3(0, 0, 33)), + owning_building_guid = 4 + ) + LocalObject( + 2576, + SpawnTube.Constructor(Vector3(4421.229f, 3695.389f, 200.702f), Vector3(0, 0, 33)), + owning_building_guid = 4 + ) + LocalObject( + 2577, + SpawnTube.Constructor(Vector3(4425.199f, 3701.502f, 200.702f), Vector3(0, 0, 33)), + owning_building_guid = 4 + ) + LocalObject( + 1827, + ProximityTerminal.Constructor(Vector3(4421.506f, 3700.003f, 213.202f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1828, + ProximityTerminal.Constructor(Vector3(4450.143f, 3688.115f, 193.202f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2132, + ProximityTerminal.Constructor(Vector3(4402.756f, 3735.761f, 216.507f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2133, + Terminal.Constructor(Vector3(4402.756f, 3735.761f, 216.507f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2135, + ProximityTerminal.Constructor(Vector3(4406.931f, 3621.843f, 216.53f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2136, + Terminal.Constructor(Vector3(4406.931f, 3621.843f, 216.53f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2138, + ProximityTerminal.Constructor(Vector3(4470.607f, 3644.475f, 216.507f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2139, + Terminal.Constructor(Vector3(4470.607f, 3644.475f, 216.507f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2141, + ProximityTerminal.Constructor(Vector3(4493.575f, 3721.664f, 218.668f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 2142, + Terminal.Constructor(Vector3(4493.575f, 3721.664f, 218.668f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2453, + ProximityTerminal.Constructor(Vector3(4381.323f, 3726.348f, 207.4019f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2454, + Terminal.Constructor(Vector3(4381.323f, 3726.348f, 207.4019f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2457, + ProximityTerminal.Constructor(Vector3(4492.484f, 3654.385f, 207.4019f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2458, + Terminal.Constructor(Vector3(4492.484f, 3654.385f, 207.4019f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1729, + FacilityTurret.Constructor(Vector3(4319.666f, 3650.68f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1729, 5006) - LocalObject(1731, FacilityTurret.Constructor(Vector3(4368.426f, 3616.358f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 1731, + FacilityTurret.Constructor(Vector3(4368.426f, 3616.358f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1731, 5007) - LocalObject(1733, FacilityTurret.Constructor(Vector3(4429.482f, 3819.836f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 1733, + FacilityTurret.Constructor(Vector3(4429.482f, 3819.836f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1733, 5008) - LocalObject(1734, FacilityTurret.Constructor(Vector3(4448.337f, 3567.108f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 1734, + FacilityTurret.Constructor(Vector3(4448.337f, 3567.108f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1734, 5009) - LocalObject(1737, FacilityTurret.Constructor(Vector3(4525.526f, 3681.879f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 1737, + FacilityTurret.Constructor(Vector3(4525.526f, 3681.879f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1737, 5010) - LocalObject(1739, FacilityTurret.Constructor(Vector3(4558.186f, 3736.243f, 216.71f), manned_turret), owning_building_guid = 4) + LocalObject( + 1739, + FacilityTurret.Constructor(Vector3(4558.186f, 3736.243f, 216.71f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1739, 5011) LocalObject(2258, Painbox.Constructor(Vector3(4386.058f, 3714.824f, 198.073f), painbox), owning_building_guid = 4) - LocalObject(2272, Painbox.Constructor(Vector3(4428.834f, 3693.566f, 205.6504f), painbox_continuous), owning_building_guid = 4) - LocalObject(2286, Painbox.Constructor(Vector3(4398.994f, 3708.958f, 194.6609f), painbox_door_radius), owning_building_guid = 4) - LocalObject(2312, Painbox.Constructor(Vector3(4420.643f, 3680.225f, 201.9019f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2313, Painbox.Constructor(Vector3(4435.054f, 3702.282f, 201.9664f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2314, Painbox.Constructor(Vector3(4443.386f, 3690.52f, 203.8806f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 2272, + Painbox.Constructor(Vector3(4428.834f, 3693.566f, 205.6504f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2286, + Painbox.Constructor(Vector3(4398.994f, 3708.958f, 194.6609f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 2312, + Painbox.Constructor(Vector3(4420.643f, 3680.225f, 201.9019f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2313, + Painbox.Constructor(Vector3(4435.054f, 3702.282f, 201.9664f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2314, + Painbox.Constructor(Vector3(4443.386f, 3690.52f, 203.8806f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(303, Generator.Constructor(Vector3(4384.506f, 3719.239f, 191.908f)), owning_building_guid = 4) - LocalObject(289, Terminal.Constructor(Vector3(4391.402f, 3714.817f, 193.202f), gen_control), owning_building_guid = 4) + LocalObject( + 289, + Terminal.Constructor(Vector3(4391.402f, 3714.817f, 193.202f), gen_control), + owning_building_guid = 4 + ) } Building10() def Building10(): Unit = { // Name: Matagi Type: amp_station GUID: 7, MapID: 10 - LocalBuilding("Matagi", 7, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5268f, 5004f, 239.1049f), Vector3(0f, 0f, 21f), amp_station))) - LocalObject(222, CaptureTerminal.Constructor(Vector3(5264.884f, 5002.807f, 250.6129f), capture_terminal), owning_building_guid = 7) + LocalBuilding( + "Matagi", + 7, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5268f, 5004f, 239.1049f), + Vector3(0f, 0f, 21f), + amp_station + ) + ) + ) + LocalObject( + 222, + CaptureTerminal.Constructor(Vector3(5264.884f, 5002.807f, 250.6129f), capture_terminal), + owning_building_guid = 7 + ) LocalObject(167, Door.Constructor(Vector3(5265.761f, 5010.43f, 252.0069f)), owning_building_guid = 7) LocalObject(168, Door.Constructor(Vector3(5270.636f, 4997.723f, 252.0069f)), owning_building_guid = 7) LocalObject(534, Door.Constructor(Vector3(5168.378f, 5051.451f, 240.8259f)), owning_building_guid = 7) @@ -326,18 +844,78 @@ object Map09 { // Searhus LocalObject(2800, Door.Constructor(Vector3(5248.41f, 5001.102f, 233.6589f)), owning_building_guid = 7) LocalObject(2801, Door.Constructor(Vector3(5251.022f, 4994.297f, 233.6589f)), owning_building_guid = 7) LocalObject(2802, Door.Constructor(Vector3(5253.636f, 4987.489f, 233.6589f)), owning_building_guid = 7) - LocalObject(1000, IFFLock.Constructor(Vector3(5296.696f, 5018.3f, 240.7849f), Vector3(0, 0, 69)), owning_building_guid = 7, door_guid = 948) - LocalObject(1179, IFFLock.Constructor(Vector3(5166.174f, 5051.489f, 240.7649f), Vector3(0, 0, 339)), owning_building_guid = 7, door_guid = 534) - LocalObject(1182, IFFLock.Constructor(Vector3(5224.814f, 4984.822f, 225.6409f), Vector3(0, 0, 69)), owning_building_guid = 7, door_guid = 853) - LocalObject(1184, IFFLock.Constructor(Vector3(5252.125f, 5007.483f, 233.1409f), Vector3(0, 0, 339)), owning_building_guid = 7, door_guid = 867) - LocalObject(1185, IFFLock.Constructor(Vector3(5252.97f, 5028.801f, 250.7659f), Vector3(0, 0, 249)), owning_building_guid = 7, door_guid = 547) - LocalObject(1186, IFFLock.Constructor(Vector3(5253.076f, 5037.176f, 245.7669f), Vector3(0, 0, 339)), owning_building_guid = 7, door_guid = 548) - LocalObject(1187, IFFLock.Constructor(Vector3(5261.479f, 5036.452f, 250.7659f), Vector3(0, 0, 69)), owning_building_guid = 7, door_guid = 549) - LocalObject(1189, IFFLock.Constructor(Vector3(5264.289f, 4984.569f, 233.1409f), Vector3(0, 0, 159)), owning_building_guid = 7, door_guid = 872) - LocalObject(1190, IFFLock.Constructor(Vector3(5271.986f, 4990.993f, 225.6409f), Vector3(0, 0, 249)), owning_building_guid = 7, door_guid = 878) - LocalObject(1192, IFFLock.Constructor(Vector3(5274.879f, 4971.725f, 250.7659f), Vector3(0, 0, 249)), owning_building_guid = 7, door_guid = 551) - LocalObject(1195, IFFLock.Constructor(Vector3(5282.915f, 4970.843f, 245.7669f), Vector3(0, 0, 159)), owning_building_guid = 7, door_guid = 554) - LocalObject(1197, IFFLock.Constructor(Vector3(5283.39f, 4979.372f, 250.7659f), Vector3(0, 0, 69)), owning_building_guid = 7, door_guid = 557) + LocalObject( + 1000, + IFFLock.Constructor(Vector3(5296.696f, 5018.3f, 240.7849f), Vector3(0, 0, 69)), + owning_building_guid = 7, + door_guid = 948 + ) + LocalObject( + 1179, + IFFLock.Constructor(Vector3(5166.174f, 5051.489f, 240.7649f), Vector3(0, 0, 339)), + owning_building_guid = 7, + door_guid = 534 + ) + LocalObject( + 1182, + IFFLock.Constructor(Vector3(5224.814f, 4984.822f, 225.6409f), Vector3(0, 0, 69)), + owning_building_guid = 7, + door_guid = 853 + ) + LocalObject( + 1184, + IFFLock.Constructor(Vector3(5252.125f, 5007.483f, 233.1409f), Vector3(0, 0, 339)), + owning_building_guid = 7, + door_guid = 867 + ) + LocalObject( + 1185, + IFFLock.Constructor(Vector3(5252.97f, 5028.801f, 250.7659f), Vector3(0, 0, 249)), + owning_building_guid = 7, + door_guid = 547 + ) + LocalObject( + 1186, + IFFLock.Constructor(Vector3(5253.076f, 5037.176f, 245.7669f), Vector3(0, 0, 339)), + owning_building_guid = 7, + door_guid = 548 + ) + LocalObject( + 1187, + IFFLock.Constructor(Vector3(5261.479f, 5036.452f, 250.7659f), Vector3(0, 0, 69)), + owning_building_guid = 7, + door_guid = 549 + ) + LocalObject( + 1189, + IFFLock.Constructor(Vector3(5264.289f, 4984.569f, 233.1409f), Vector3(0, 0, 159)), + owning_building_guid = 7, + door_guid = 872 + ) + LocalObject( + 1190, + IFFLock.Constructor(Vector3(5271.986f, 4990.993f, 225.6409f), Vector3(0, 0, 249)), + owning_building_guid = 7, + door_guid = 878 + ) + LocalObject( + 1192, + IFFLock.Constructor(Vector3(5274.879f, 4971.725f, 250.7659f), Vector3(0, 0, 249)), + owning_building_guid = 7, + door_guid = 551 + ) + LocalObject( + 1195, + IFFLock.Constructor(Vector3(5282.915f, 4970.843f, 245.7669f), Vector3(0, 0, 159)), + owning_building_guid = 7, + door_guid = 554 + ) + LocalObject( + 1197, + IFFLock.Constructor(Vector3(5283.39f, 4979.372f, 250.7659f), Vector3(0, 0, 69)), + owning_building_guid = 7, + door_guid = 557 + ) LocalObject(1523, Locker.Constructor(Vector3(5265.09f, 4988.038f, 232.0659f)), owning_building_guid = 7) LocalObject(1524, Locker.Constructor(Vector3(5266.177f, 4988.455f, 232.0659f)), owning_building_guid = 7) LocalObject(1525, Locker.Constructor(Vector3(5267.248f, 4988.866f, 232.0659f)), owning_building_guid = 7) @@ -350,64 +928,253 @@ object Map09 { // Searhus LocalObject(1532, Locker.Constructor(Vector3(5277.045f, 5014.076f, 224.3049f)), owning_building_guid = 7) LocalObject(1534, Locker.Constructor(Vector3(5278.292f, 5014.554f, 224.3049f)), owning_building_guid = 7) LocalObject(1537, Locker.Constructor(Vector3(5279.541f, 5015.034f, 224.3049f)), owning_building_guid = 7) - LocalObject(1944, Terminal.Constructor(Vector3(5247.027f, 4995.945f, 240.6339f), order_terminal), owning_building_guid = 7) - LocalObject(1945, Terminal.Constructor(Vector3(5259.943f, 5024.983f, 240.6339f), order_terminal), owning_building_guid = 7) - LocalObject(1947, Terminal.Constructor(Vector3(5263.393f, 5001.083f, 233.3949f), order_terminal), owning_building_guid = 7) - LocalObject(1948, Terminal.Constructor(Vector3(5264.751f, 4997.546f, 233.3949f), order_terminal), owning_building_guid = 7) - LocalObject(1949, Terminal.Constructor(Vector3(5266.088f, 4994.063f, 233.3949f), order_terminal), owning_building_guid = 7) - LocalObject(1951, Terminal.Constructor(Vector3(5276.053f, 4983.015f, 240.6339f), order_terminal), owning_building_guid = 7) - LocalObject(2707, Terminal.Constructor(Vector3(5209.119f, 5023.61f, 233.3619f), spawn_terminal), owning_building_guid = 7) - LocalObject(2709, Terminal.Constructor(Vector3(5240.126f, 5009.806f, 225.8619f), spawn_terminal), owning_building_guid = 7) - LocalObject(2711, Terminal.Constructor(Vector3(5249.581f, 4998.882f, 233.9389f), spawn_terminal), owning_building_guid = 7) - LocalObject(2712, Terminal.Constructor(Vector3(5252.189f, 4992.077f, 233.9389f), spawn_terminal), owning_building_guid = 7) - LocalObject(2713, Terminal.Constructor(Vector3(5254.807f, 4985.271f, 233.9389f), spawn_terminal), owning_building_guid = 7) - LocalObject(2715, Terminal.Constructor(Vector3(5264.474f, 4997.827f, 245.8329f), spawn_terminal), owning_building_guid = 7) - LocalObject(2918, Terminal.Constructor(Vector3(5193.703f, 5063.82f, 241.2069f), vehicle_terminal_combined), owning_building_guid = 7) - LocalObject(1812, VehicleSpawnPad.Constructor(Vector3(5198.674f, 5051.121f, 237.0499f), mb_pad_creation, Vector3(0, 0, 159)), owning_building_guid = 7, terminal_guid = 2918) + LocalObject( + 1944, + Terminal.Constructor(Vector3(5247.027f, 4995.945f, 240.6339f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1945, + Terminal.Constructor(Vector3(5259.943f, 5024.983f, 240.6339f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1947, + Terminal.Constructor(Vector3(5263.393f, 5001.083f, 233.3949f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1948, + Terminal.Constructor(Vector3(5264.751f, 4997.546f, 233.3949f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(5266.088f, 4994.063f, 233.3949f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1951, + Terminal.Constructor(Vector3(5276.053f, 4983.015f, 240.6339f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2707, + Terminal.Constructor(Vector3(5209.119f, 5023.61f, 233.3619f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2709, + Terminal.Constructor(Vector3(5240.126f, 5009.806f, 225.8619f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2711, + Terminal.Constructor(Vector3(5249.581f, 4998.882f, 233.9389f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2712, + Terminal.Constructor(Vector3(5252.189f, 4992.077f, 233.9389f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2713, + Terminal.Constructor(Vector3(5254.807f, 4985.271f, 233.9389f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2715, + Terminal.Constructor(Vector3(5264.474f, 4997.827f, 245.8329f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2918, + Terminal.Constructor(Vector3(5193.703f, 5063.82f, 241.2069f), vehicle_terminal_combined), + owning_building_guid = 7 + ) + LocalObject( + 1812, + VehicleSpawnPad.Constructor(Vector3(5198.674f, 5051.121f, 237.0499f), mb_pad_creation, Vector3(0, 0, 159)), + owning_building_guid = 7, + terminal_guid = 2918 + ) LocalObject(2528, ResourceSilo.Constructor(Vector3(5347.787f, 4943.05f, 246.3399f)), owning_building_guid = 7) - LocalObject(2595, SpawnTube.Constructor(Vector3(5248.377f, 4999.961f, 231.8049f), Vector3(0, 0, 339)), owning_building_guid = 7) - LocalObject(2596, SpawnTube.Constructor(Vector3(5250.989f, 4993.158f, 231.8049f), Vector3(0, 0, 339)), owning_building_guid = 7) - LocalObject(2597, SpawnTube.Constructor(Vector3(5253.602f, 4986.351f, 231.8049f), Vector3(0, 0, 339)), owning_building_guid = 7) - LocalObject(1834, ProximityTerminal.Constructor(Vector3(5247.418f, 4996.093f, 244.3049f), medical_terminal), owning_building_guid = 7) - LocalObject(1835, ProximityTerminal.Constructor(Vector3(5273.869f, 5012.273f, 224.3049f), medical_terminal), owning_building_guid = 7) - LocalObject(2162, ProximityTerminal.Constructor(Vector3(5207.469f, 5001.942f, 247.6099f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2163, Terminal.Constructor(Vector3(5207.469f, 5001.942f, 247.6099f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2171, ProximityTerminal.Constructor(Vector3(5272.256f, 5067.13f, 249.7709f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2172, Terminal.Constructor(Vector3(5272.256f, 5067.13f, 249.7709f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2174, ProximityTerminal.Constructor(Vector3(5302.085f, 4938.36f, 247.6329f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2175, Terminal.Constructor(Vector3(5302.085f, 4938.36f, 247.6329f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2180, ProximityTerminal.Constructor(Vector3(5321.203f, 5003.179f, 247.6099f), pad_landing_frame), owning_building_guid = 7) - LocalObject(2181, Terminal.Constructor(Vector3(5321.203f, 5003.179f, 247.6099f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(2485, ProximityTerminal.Constructor(Vector3(5202.486f, 4979.07f, 238.5049f), repair_silo), owning_building_guid = 7) - LocalObject(2486, Terminal.Constructor(Vector3(5202.486f, 4979.07f, 238.5049f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(2497, ProximityTerminal.Constructor(Vector3(5326.044f, 5026.702f, 238.5049f), repair_silo), owning_building_guid = 7) - LocalObject(2498, Terminal.Constructor(Vector3(5326.044f, 5026.702f, 238.5049f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(1760, FacilityTurret.Constructor(Vector3(5155.16f, 5072.982f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 2595, + SpawnTube.Constructor(Vector3(5248.377f, 4999.961f, 231.8049f), Vector3(0, 0, 339)), + owning_building_guid = 7 + ) + LocalObject( + 2596, + SpawnTube.Constructor(Vector3(5250.989f, 4993.158f, 231.8049f), Vector3(0, 0, 339)), + owning_building_guid = 7 + ) + LocalObject( + 2597, + SpawnTube.Constructor(Vector3(5253.602f, 4986.351f, 231.8049f), Vector3(0, 0, 339)), + owning_building_guid = 7 + ) + LocalObject( + 1834, + ProximityTerminal.Constructor(Vector3(5247.418f, 4996.093f, 244.3049f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1835, + ProximityTerminal.Constructor(Vector3(5273.869f, 5012.273f, 224.3049f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2162, + ProximityTerminal.Constructor(Vector3(5207.469f, 5001.942f, 247.6099f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2163, + Terminal.Constructor(Vector3(5207.469f, 5001.942f, 247.6099f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2171, + ProximityTerminal.Constructor(Vector3(5272.256f, 5067.13f, 249.7709f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2172, + Terminal.Constructor(Vector3(5272.256f, 5067.13f, 249.7709f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2174, + ProximityTerminal.Constructor(Vector3(5302.085f, 4938.36f, 247.6329f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2175, + Terminal.Constructor(Vector3(5302.085f, 4938.36f, 247.6329f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2180, + ProximityTerminal.Constructor(Vector3(5321.203f, 5003.179f, 247.6099f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 2181, + Terminal.Constructor(Vector3(5321.203f, 5003.179f, 247.6099f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2485, + ProximityTerminal.Constructor(Vector3(5202.486f, 4979.07f, 238.5049f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 2486, + Terminal.Constructor(Vector3(5202.486f, 4979.07f, 238.5049f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 2497, + ProximityTerminal.Constructor(Vector3(5326.044f, 5026.702f, 238.5049f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 2498, + Terminal.Constructor(Vector3(5326.044f, 5026.702f, 238.5049f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 1760, + FacilityTurret.Constructor(Vector3(5155.16f, 5072.982f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1760, 5012) - LocalObject(1763, FacilityTurret.Constructor(Vector3(5227.462f, 4884.711f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 1763, + FacilityTurret.Constructor(Vector3(5227.462f, 4884.711f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1763, 5013) - LocalObject(1765, FacilityTurret.Constructor(Vector3(5283.89f, 4903.985f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 1765, + FacilityTurret.Constructor(Vector3(5283.89f, 4903.985f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1765, 5014) - LocalObject(1768, FacilityTurret.Constructor(Vector3(5298.438f, 5127.971f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 1768, + FacilityTurret.Constructor(Vector3(5298.438f, 5127.971f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1768, 5015) - LocalObject(1770, FacilityTurret.Constructor(Vector3(5323.223f, 5069.594f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 1770, + FacilityTurret.Constructor(Vector3(5323.223f, 5069.594f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1770, 5016) - LocalObject(1771, FacilityTurret.Constructor(Vector3(5370.705f, 4939.687f, 247.8129f), manned_turret), owning_building_guid = 7) + LocalObject( + 1771, + FacilityTurret.Constructor(Vector3(5370.705f, 4939.687f, 247.8129f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(1771, 5017) - LocalObject(2262, Painbox.Constructor(Vector3(5214.593f, 4976.126f, 229.1759f), painbox), owning_building_guid = 7) - LocalObject(2276, Painbox.Constructor(Vector3(5256.935f, 4998.238f, 236.7533f), painbox_continuous), owning_building_guid = 7) - LocalObject(2290, Painbox.Constructor(Vector3(5226.941f, 4983.145f, 225.7639f), painbox_door_radius), owning_building_guid = 7) - LocalObject(2324, Painbox.Constructor(Vector3(5253.539f, 5008.394f, 233.0694f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2326, Painbox.Constructor(Vector3(5262.913f, 4983.77f, 233.0049f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(2327, Painbox.Constructor(Vector3(5267.952f, 5008.22f, 234.9835f), painbox_door_radius_continuous), owning_building_guid = 7) + LocalObject( + 2262, + Painbox.Constructor(Vector3(5214.593f, 4976.126f, 229.1759f), painbox), + owning_building_guid = 7 + ) + LocalObject( + 2276, + Painbox.Constructor(Vector3(5256.935f, 4998.238f, 236.7533f), painbox_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2290, + Painbox.Constructor(Vector3(5226.941f, 4983.145f, 225.7639f), painbox_door_radius), + owning_building_guid = 7 + ) + LocalObject( + 2324, + Painbox.Constructor(Vector3(5253.539f, 5008.394f, 233.0694f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2326, + Painbox.Constructor(Vector3(5262.913f, 4983.77f, 233.0049f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 2327, + Painbox.Constructor(Vector3(5267.952f, 5008.22f, 234.9835f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) LocalObject(307, Generator.Constructor(Vector3(5210.109f, 4977.466f, 223.0109f)), owning_building_guid = 7) - LocalObject(293, Terminal.Constructor(Vector3(5217.74f, 4980.446f, 224.3049f), gen_control), owning_building_guid = 7) + LocalObject( + 293, + Terminal.Constructor(Vector3(5217.74f, 4980.446f, 224.3049f), gen_control), + owning_building_guid = 7 + ) } Building42() def Building42(): Unit = { // Name: bunkerg6 Type: bunker_gauntlet GUID: 10, MapID: 42 - LocalBuilding("bunkerg6", 10, 42, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1068f, 4234f, 59.97345f), Vector3(0f, 0f, 61f), bunker_gauntlet))) + LocalBuilding( + "bunkerg6", + 10, + 42, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(1068f, 4234f, 59.97345f), + Vector3(0f, 0f, 61f), + bunker_gauntlet + ) + ) + ) LocalObject(311, Door.Constructor(Vector3(1057.601f, 4211.297f, 61.49445f)), owning_building_guid = 10) LocalObject(312, Door.Constructor(Vector3(1081.746f, 4254.876f, 61.49445f)), owning_building_guid = 10) } @@ -415,7 +1182,19 @@ object Map09 { // Searhus Building43() def Building43(): Unit = { // Name: bunkerg7 Type: bunker_gauntlet GUID: 11, MapID: 43 - LocalBuilding("bunkerg7", 11, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3642f, 2072f, 59.77203f), Vector3(0f, 0f, 137f), bunker_gauntlet))) + LocalBuilding( + "bunkerg7", + 11, + 43, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(3642f, 2072f, 59.77203f), + Vector3(0f, 0f, 137f), + bunker_gauntlet + ) + ) + ) LocalObject(388, Door.Constructor(Vector3(3625.069f, 2090.388f, 61.29303f)), owning_building_guid = 11) LocalObject(392, Door.Constructor(Vector3(3661.513f, 2056.418f, 61.29303f)), owning_building_guid = 11) } @@ -423,7 +1202,19 @@ object Map09 { // Searhus Building41() def Building41(): Unit = { // Name: bunkerg5 Type: bunker_gauntlet GUID: 12, MapID: 41 - LocalBuilding("bunkerg5", 12, 41, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4532f, 6648f, 48.86586f), Vector3(0f, 0f, 175f), bunker_gauntlet))) + LocalBuilding( + "bunkerg5", + 12, + 41, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4532f, 6648f, 48.86586f), + Vector3(0f, 0f, 175f), + bunker_gauntlet + ) + ) + ) LocalObject(476, Door.Constructor(Vector3(4507.337f, 6652.066f, 50.38686f)), owning_building_guid = 12) LocalObject(482, Door.Constructor(Vector3(4556.97f, 6647.735f, 50.38686f)), owning_building_guid = 12) } @@ -431,7 +1222,19 @@ object Map09 { // Searhus Building38() def Building38(): Unit = { // Name: bungerg2 Type: bunker_gauntlet GUID: 13, MapID: 38 - LocalBuilding("bungerg2", 13, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5936f, 2184f, 90.95889f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bungerg2", + 13, + 38, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(5936f, 2184f, 90.95889f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(591, Door.Constructor(Vector3(5934.099f, 2159.077f, 92.4799f)), owning_building_guid = 13) LocalObject(592, Door.Constructor(Vector3(5934.088f, 2208.898f, 92.4799f)), owning_building_guid = 13) } @@ -439,7 +1242,19 @@ object Map09 { // Searhus Building39() def Building39(): Unit = { // Name: bunkerg3 Type: bunker_gauntlet GUID: 14, MapID: 39 - LocalBuilding("bunkerg3", 14, 39, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6376f, 5224f, 55.30717f), Vector3(0f, 0f, 19f), bunker_gauntlet))) + LocalBuilding( + "bunkerg3", + 14, + 39, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(6376f, 5224f, 55.30717f), + Vector3(0f, 0f, 19f), + bunker_gauntlet + ) + ) + ) LocalObject(597, Door.Constructor(Vector3(6353.081f, 5214.086f, 56.82817f)), owning_building_guid = 14) LocalObject(600, Door.Constructor(Vector3(6400.184f, 5230.317f, 56.82817f)), owning_building_guid = 14) } @@ -447,64 +1262,136 @@ object Map09 { // Searhus Building34() def Building34(): Unit = { // Name: bunker6 Type: bunker_lg GUID: 15, MapID: 34 - LocalBuilding("bunker6", 15, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1192f, 4018f, 59.95798f), Vector3(0f, 0f, 56f), bunker_lg))) + LocalBuilding( + "bunker6", + 15, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1192f, 4018f, 59.95798f), Vector3(0f, 0f, 56f), bunker_lg) + ) + ) LocalObject(324, Door.Constructor(Vector3(1191.337f, 4021.59f, 61.47898f)), owning_building_guid = 15) } Building30() def Building30(): Unit = { // Name: bunker1 Type: bunker_lg GUID: 16, MapID: 30 - LocalBuilding("bunker1", 16, 30, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3838f, 2626f, 151.0666f), Vector3(0f, 0f, 69f), bunker_lg))) + LocalBuilding( + "bunker1", + 16, + 30, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3838f, 2626f, 151.0666f), Vector3(0f, 0f, 69f), bunker_lg) + ) + ) LocalObject(432, Door.Constructor(Vector3(3836.547f, 2629.349f, 152.5876f)), owning_building_guid = 16) } Building35() def Building35(): Unit = { // Name: bunker7 Type: bunker_lg GUID: 17, MapID: 35 - LocalBuilding("bunker7", 17, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4780f, 6576f, 39.89838f), Vector3(0f, 0f, 89f), bunker_lg))) + LocalBuilding( + "bunker7", + 17, + 35, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4780f, 6576f, 39.89838f), Vector3(0f, 0f, 89f), bunker_lg) + ) + ) LocalObject(510, Door.Constructor(Vector3(4777.489f, 6578.65f, 41.41938f)), owning_building_guid = 17) } Building40() def Building40(): Unit = { // Name: bunkerg4 Type: bunker_lg GUID: 18, MapID: 40 - LocalBuilding("bunkerg4", 18, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6486f, 5064f, 55.30717f), Vector3(0f, 0f, 70f), bunker_lg))) + LocalBuilding( + "bunkerg4", + 18, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6486f, 5064f, 55.30717f), Vector3(0f, 0f, 70f), bunker_lg) + ) + ) LocalObject(610, Door.Constructor(Vector3(6484.488f, 5067.323f, 56.82817f)), owning_building_guid = 18) } Building36() def Building36(): Unit = { // Name: bunker8 Type: bunker_sm GUID: 19, MapID: 36 - LocalBuilding("bunker8", 19, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3670f, 5682f, 236.1003f), Vector3(0f, 0f, 303f), bunker_sm))) + LocalBuilding( + "bunker8", + 19, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3670f, 5682f, 236.1003f), Vector3(0f, 0f, 303f), bunker_sm) + ) + ) LocalObject(395, Door.Constructor(Vector3(3670.621f, 5680.943f, 237.6213f)), owning_building_guid = 19) } Building33() def Building33(): Unit = { // Name: bunker5 Type: bunker_sm GUID: 20, MapID: 33 - LocalBuilding("bunker5", 20, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4142f, 4096f, 204.7803f), Vector3(0f, 0f, 132f), bunker_sm))) + LocalBuilding( + "bunker5", + 20, + 33, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4142f, 4096f, 204.7803f), Vector3(0f, 0f, 132f), bunker_sm) + ) + ) LocalObject(448, Door.Constructor(Vector3(4141.221f, 4096.947f, 206.3013f)), owning_building_guid = 20) } Building32() def Building32(): Unit = { // Name: bunker4 Type: bunker_sm GUID: 21, MapID: 32 - LocalBuilding("bunker4", 21, 32, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5238f, 3866f, 346.1104f), Vector3(0f, 0f, 47f), bunker_sm))) + LocalBuilding( + "bunker4", + 21, + 32, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5238f, 3866f, 346.1104f), Vector3(0f, 0f, 47f), bunker_sm) + ) + ) LocalObject(545, Door.Constructor(Vector3(5238.875f, 3866.858f, 347.6314f)), owning_building_guid = 21) } Building31() def Building31(): Unit = { // Name: bunker2 Type: bunker_sm GUID: 22, MapID: 31 - LocalBuilding("bunker2", 22, 31, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(5726f, 2268f, 90.95889f), Vector3(0f, 0f, 24f), bunker_sm))) + LocalBuilding( + "bunker2", + 22, + 31, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(5726f, 2268f, 90.95889f), Vector3(0f, 0f, 24f), bunker_sm) + ) + ) LocalObject(571, Door.Constructor(Vector3(5727.142f, 2268.448f, 92.4799f)), owning_building_guid = 22) } Building17() def Building17(): Unit = { // Name: Wakea Type: comm_station GUID: 23, MapID: 17 - LocalBuilding("Wakea", 23, 17, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1738f, 5314f, 62.99478f), Vector3(0f, 0f, 360f), comm_station))) - LocalObject(212, CaptureTerminal.Constructor(Vector3(1782.089f, 5390.734f, 45.69478f), capture_terminal), owning_building_guid = 23) + LocalBuilding( + "Wakea", + 23, + 17, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1738f, 5314f, 62.99478f), + Vector3(0f, 0f, 360f), + comm_station + ) + ) + ) + LocalObject( + 212, + CaptureTerminal.Constructor(Vector3(1782.089f, 5390.734f, 45.69478f), capture_terminal), + owning_building_guid = 23 + ) LocalObject(337, Door.Constructor(Vector3(1678.196f, 5270.5f, 64.74578f)), owning_building_guid = 23) LocalObject(338, Door.Constructor(Vector3(1678.196f, 5288.693f, 72.70978f)), owning_building_guid = 23) LocalObject(339, Door.Constructor(Vector3(1695.307f, 5246.197f, 72.70978f)), owning_building_guid = 23) @@ -546,18 +1433,78 @@ object Map09 { // Searhus LocalObject(2744, Door.Constructor(Vector3(1774.673f, 5327.733f, 55.04878f)), owning_building_guid = 23) LocalObject(2745, Door.Constructor(Vector3(1774.673f, 5335.026f, 55.04878f)), owning_building_guid = 23) LocalObject(2746, Door.Constructor(Vector3(1774.673f, 5342.315f, 55.04878f)), owning_building_guid = 23) - LocalObject(990, IFFLock.Constructor(Vector3(1758.453f, 5313.13f, 64.64678f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 938) - LocalObject(1024, IFFLock.Constructor(Vector3(1715.957f, 5315.105f, 69.65578f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 342) - LocalObject(1025, IFFLock.Constructor(Vector3(1719.572f, 5337.06f, 47.03078f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 651) - LocalObject(1026, IFFLock.Constructor(Vector3(1720.047f, 5304.42f, 69.65578f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 341) - LocalObject(1027, IFFLock.Constructor(Vector3(1732.817f, 5304.511f, 77.07578f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 343) - LocalObject(1028, IFFLock.Constructor(Vector3(1745.187f, 5331.955f, 69.65578f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 345) - LocalObject(1031, IFFLock.Constructor(Vector3(1770.778f, 5392.033f, 64.64478f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 347) - LocalObject(1032, IFFLock.Constructor(Vector3(1777.187f, 5380.428f, 47.03078f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 665) - LocalObject(1033, IFFLock.Constructor(Vector3(1780.428f, 5346.81f, 54.53078f), Vector3(0, 0, 0)), owning_building_guid = 23, door_guid = 667) - LocalObject(1034, IFFLock.Constructor(Vector3(1783.572f, 5321.19f, 54.53078f), Vector3(0, 0, 180)), owning_building_guid = 23, door_guid = 666) - LocalObject(1035, IFFLock.Constructor(Vector3(1786.813f, 5383.572f, 47.03078f), Vector3(0, 0, 90)), owning_building_guid = 23, door_guid = 668) - LocalObject(1038, IFFLock.Constructor(Vector3(1793.06f, 5324.428f, 47.03078f), Vector3(0, 0, 270)), owning_building_guid = 23, door_guid = 669) + LocalObject( + 990, + IFFLock.Constructor(Vector3(1758.453f, 5313.13f, 64.64678f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 938 + ) + LocalObject( + 1024, + IFFLock.Constructor(Vector3(1715.957f, 5315.105f, 69.65578f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 342 + ) + LocalObject( + 1025, + IFFLock.Constructor(Vector3(1719.572f, 5337.06f, 47.03078f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 651 + ) + LocalObject( + 1026, + IFFLock.Constructor(Vector3(1720.047f, 5304.42f, 69.65578f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 341 + ) + LocalObject( + 1027, + IFFLock.Constructor(Vector3(1732.817f, 5304.511f, 77.07578f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 343 + ) + LocalObject( + 1028, + IFFLock.Constructor(Vector3(1745.187f, 5331.955f, 69.65578f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 345 + ) + LocalObject( + 1031, + IFFLock.Constructor(Vector3(1770.778f, 5392.033f, 64.64478f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 347 + ) + LocalObject( + 1032, + IFFLock.Constructor(Vector3(1777.187f, 5380.428f, 47.03078f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 665 + ) + LocalObject( + 1033, + IFFLock.Constructor(Vector3(1780.428f, 5346.81f, 54.53078f), Vector3(0, 0, 0)), + owning_building_guid = 23, + door_guid = 667 + ) + LocalObject( + 1034, + IFFLock.Constructor(Vector3(1783.572f, 5321.19f, 54.53078f), Vector3(0, 0, 180)), + owning_building_guid = 23, + door_guid = 666 + ) + LocalObject( + 1035, + IFFLock.Constructor(Vector3(1786.813f, 5383.572f, 47.03078f), Vector3(0, 0, 90)), + owning_building_guid = 23, + door_guid = 668 + ) + LocalObject( + 1038, + IFFLock.Constructor(Vector3(1793.06f, 5324.428f, 47.03078f), Vector3(0, 0, 270)), + owning_building_guid = 23, + door_guid = 669 + ) LocalObject(1276, Locker.Constructor(Vector3(1785.563f, 5324.141f, 53.45578f)), owning_building_guid = 23) LocalObject(1277, Locker.Constructor(Vector3(1786.727f, 5324.141f, 53.45578f)), owning_building_guid = 23) LocalObject(1278, Locker.Constructor(Vector3(1787.874f, 5324.141f, 53.45578f)), owning_building_guid = 23) @@ -570,60 +1517,233 @@ object Map09 { // Searhus LocalObject(1289, Locker.Constructor(Vector3(1806.055f, 5344.165f, 45.69478f)), owning_building_guid = 23) LocalObject(1290, Locker.Constructor(Vector3(1807.391f, 5344.165f, 45.69478f)), owning_building_guid = 23) LocalObject(1291, Locker.Constructor(Vector3(1808.728f, 5344.165f, 45.69478f)), owning_building_guid = 23) - LocalObject(1850, Terminal.Constructor(Vector3(1728.379f, 5290.907f, 69.55478f), order_terminal), owning_building_guid = 23) - LocalObject(1851, Terminal.Constructor(Vector3(1738.075f, 5306.547f, 76.94978f), order_terminal), owning_building_guid = 23) - LocalObject(1852, Terminal.Constructor(Vector3(1740.331f, 5304.43f, 76.94978f), order_terminal), owning_building_guid = 23) - LocalObject(1853, Terminal.Constructor(Vector3(1740.332f, 5308.825f, 76.94978f), order_terminal), owning_building_guid = 23) - LocalObject(1856, Terminal.Constructor(Vector3(1788.654f, 5329.408f, 54.78478f), order_terminal), owning_building_guid = 23) - LocalObject(1857, Terminal.Constructor(Vector3(1788.654f, 5333.139f, 54.78478f), order_terminal), owning_building_guid = 23) - LocalObject(1858, Terminal.Constructor(Vector3(1788.654f, 5336.928f, 54.78478f), order_terminal), owning_building_guid = 23) - LocalObject(2649, Terminal.Constructor(Vector3(1721.943f, 5322.591f, 47.25178f), spawn_terminal), owning_building_guid = 23) - LocalObject(2650, Terminal.Constructor(Vector3(1736.51f, 5289.969f, 69.81178f), spawn_terminal), owning_building_guid = 23) - LocalObject(2651, Terminal.Constructor(Vector3(1737.409f, 5353.942f, 57.25178f), spawn_terminal), owning_building_guid = 23) - LocalObject(2652, Terminal.Constructor(Vector3(1774.971f, 5325.243f, 55.32878f), spawn_terminal), owning_building_guid = 23) - LocalObject(2653, Terminal.Constructor(Vector3(1774.967f, 5332.535f, 55.32878f), spawn_terminal), owning_building_guid = 23) - LocalObject(2654, Terminal.Constructor(Vector3(1774.97f, 5339.823f, 55.32878f), spawn_terminal), owning_building_guid = 23) - LocalObject(2909, Terminal.Constructor(Vector3(1790.458f, 5368.774f, 65.88178f), vehicle_terminal_combined), owning_building_guid = 23) - LocalObject(1799, VehicleSpawnPad.Constructor(Vector3(1776.833f, 5368.62f, 61.72378f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 23, terminal_guid = 2909) + LocalObject( + 1850, + Terminal.Constructor(Vector3(1728.379f, 5290.907f, 69.55478f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1851, + Terminal.Constructor(Vector3(1738.075f, 5306.547f, 76.94978f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1852, + Terminal.Constructor(Vector3(1740.331f, 5304.43f, 76.94978f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1853, + Terminal.Constructor(Vector3(1740.332f, 5308.825f, 76.94978f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1856, + Terminal.Constructor(Vector3(1788.654f, 5329.408f, 54.78478f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1857, + Terminal.Constructor(Vector3(1788.654f, 5333.139f, 54.78478f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1858, + Terminal.Constructor(Vector3(1788.654f, 5336.928f, 54.78478f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2649, + Terminal.Constructor(Vector3(1721.943f, 5322.591f, 47.25178f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2650, + Terminal.Constructor(Vector3(1736.51f, 5289.969f, 69.81178f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2651, + Terminal.Constructor(Vector3(1737.409f, 5353.942f, 57.25178f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2652, + Terminal.Constructor(Vector3(1774.971f, 5325.243f, 55.32878f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2653, + Terminal.Constructor(Vector3(1774.967f, 5332.535f, 55.32878f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2654, + Terminal.Constructor(Vector3(1774.97f, 5339.823f, 55.32878f), spawn_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2909, + Terminal.Constructor(Vector3(1790.458f, 5368.774f, 65.88178f), vehicle_terminal_combined), + owning_building_guid = 23 + ) + LocalObject( + 1799, + VehicleSpawnPad.Constructor(Vector3(1776.833f, 5368.62f, 61.72378f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 23, + terminal_guid = 2909 + ) LocalObject(2518, ResourceSilo.Constructor(Vector3(1682.23f, 5244.908f, 70.21178f)), owning_building_guid = 23) - LocalObject(2538, SpawnTube.Constructor(Vector3(1774.233f, 5326.683f, 53.19478f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(2539, SpawnTube.Constructor(Vector3(1774.233f, 5333.974f, 53.19478f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(2540, SpawnTube.Constructor(Vector3(1774.233f, 5341.262f, 53.19478f), Vector3(0, 0, 0)), owning_building_guid = 23) - LocalObject(1818, ProximityTerminal.Constructor(Vector3(1738.864f, 5285.023f, 63.19478f), medical_terminal), owning_building_guid = 23) - LocalObject(1819, ProximityTerminal.Constructor(Vector3(1802.444f, 5343.62f, 45.69478f), medical_terminal), owning_building_guid = 23) - LocalObject(2069, ProximityTerminal.Constructor(Vector3(1719.154f, 5369.185f, 71.43578f), pad_landing_frame), owning_building_guid = 23) - LocalObject(2070, Terminal.Constructor(Vector3(1719.154f, 5369.185f, 71.43578f), air_rearm_terminal), owning_building_guid = 23) - LocalObject(2413, ProximityTerminal.Constructor(Vector3(1676.912f, 5337.18f, 62.74478f), repair_silo), owning_building_guid = 23) - LocalObject(2414, Terminal.Constructor(Vector3(1676.912f, 5337.18f, 62.74478f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(2417, ProximityTerminal.Constructor(Vector3(1799.641f, 5289.67f, 62.74478f), repair_silo), owning_building_guid = 23) - LocalObject(2418, Terminal.Constructor(Vector3(1799.641f, 5289.67f, 62.74478f), ground_rearm_terminal), owning_building_guid = 23) - LocalObject(1686, FacilityTurret.Constructor(Vector3(1664.424f, 5352.652f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 2538, + SpawnTube.Constructor(Vector3(1774.233f, 5326.683f, 53.19478f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 2539, + SpawnTube.Constructor(Vector3(1774.233f, 5333.974f, 53.19478f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 2540, + SpawnTube.Constructor(Vector3(1774.233f, 5341.262f, 53.19478f), Vector3(0, 0, 0)), + owning_building_guid = 23 + ) + LocalObject( + 1818, + ProximityTerminal.Constructor(Vector3(1738.864f, 5285.023f, 63.19478f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1819, + ProximityTerminal.Constructor(Vector3(1802.444f, 5343.62f, 45.69478f), medical_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2069, + ProximityTerminal.Constructor(Vector3(1719.154f, 5369.185f, 71.43578f), pad_landing_frame), + owning_building_guid = 23 + ) + LocalObject( + 2070, + Terminal.Constructor(Vector3(1719.154f, 5369.185f, 71.43578f), air_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2413, + ProximityTerminal.Constructor(Vector3(1676.912f, 5337.18f, 62.74478f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2414, + Terminal.Constructor(Vector3(1676.912f, 5337.18f, 62.74478f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 2417, + ProximityTerminal.Constructor(Vector3(1799.641f, 5289.67f, 62.74478f), repair_silo), + owning_building_guid = 23 + ) + LocalObject( + 2418, + Terminal.Constructor(Vector3(1799.641f, 5289.67f, 62.74478f), ground_rearm_terminal), + owning_building_guid = 23 + ) + LocalObject( + 1686, + FacilityTurret.Constructor(Vector3(1664.424f, 5352.652f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1686, 5018) - LocalObject(1687, FacilityTurret.Constructor(Vector3(1665.554f, 5233.565f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 1687, + FacilityTurret.Constructor(Vector3(1665.554f, 5233.565f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1687, 5019) - LocalObject(1688, FacilityTurret.Constructor(Vector3(1707.549f, 5395.75f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 1688, + FacilityTurret.Constructor(Vector3(1707.549f, 5395.75f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1688, 5020) - LocalObject(1689, FacilityTurret.Constructor(Vector3(1768.865f, 5232.388f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 1689, + FacilityTurret.Constructor(Vector3(1768.865f, 5232.388f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1689, 5021) - LocalObject(1692, FacilityTurret.Constructor(Vector3(1810.841f, 5394.435f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 1692, + FacilityTurret.Constructor(Vector3(1810.841f, 5394.435f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1692, 5022) - LocalObject(1693, FacilityTurret.Constructor(Vector3(1812.01f, 5275.501f, 71.70278f), manned_turret), owning_building_guid = 23) + LocalObject( + 1693, + FacilityTurret.Constructor(Vector3(1812.01f, 5275.501f, 71.70278f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(1693, 5023) - LocalObject(2253, Painbox.Constructor(Vector3(1718.138f, 5350.089f, 50.59678f), painbox), owning_building_guid = 23) - LocalObject(2267, Painbox.Constructor(Vector3(1784.215f, 5340.17f, 57.63958f), painbox_continuous), owning_building_guid = 23) - LocalObject(2281, Painbox.Constructor(Vector3(1718.237f, 5335.073f, 48.45348f), painbox_door_radius), owning_building_guid = 23) - LocalObject(2297, Painbox.Constructor(Vector3(1781.914f, 5320.076f, 55.02078f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(2298, Painbox.Constructor(Vector3(1782.81f, 5347.42f, 54.80248f), painbox_door_radius_continuous), owning_building_guid = 23) - LocalObject(2299, Painbox.Constructor(Vector3(1795.855f, 5341.827f, 56.02078f), painbox_door_radius_continuous), owning_building_guid = 23) + LocalObject( + 2253, + Painbox.Constructor(Vector3(1718.138f, 5350.089f, 50.59678f), painbox), + owning_building_guid = 23 + ) + LocalObject( + 2267, + Painbox.Constructor(Vector3(1784.215f, 5340.17f, 57.63958f), painbox_continuous), + owning_building_guid = 23 + ) + LocalObject( + 2281, + Painbox.Constructor(Vector3(1718.237f, 5335.073f, 48.45348f), painbox_door_radius), + owning_building_guid = 23 + ) + LocalObject( + 2297, + Painbox.Constructor(Vector3(1781.914f, 5320.076f, 55.02078f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 2298, + Painbox.Constructor(Vector3(1782.81f, 5347.42f, 54.80248f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 2299, + Painbox.Constructor(Vector3(1795.855f, 5341.827f, 56.02078f), painbox_door_radius_continuous), + owning_building_guid = 23 + ) LocalObject(298, Generator.Constructor(Vector3(1717.975f, 5353.555f, 44.40078f)), owning_building_guid = 23) - LocalObject(284, Terminal.Constructor(Vector3(1718.022f, 5345.363f, 45.69478f), gen_control), owning_building_guid = 23) + LocalObject( + 284, + Terminal.Constructor(Vector3(1718.022f, 5345.363f, 45.69478f), gen_control), + owning_building_guid = 23 + ) } Building9() def Building9(): Unit = { // Name: Laka Type: comm_station GUID: 26, MapID: 9 - LocalBuilding("Laka", 26, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4632f, 6704f, 48.95818f), Vector3(0f, 0f, 66f), comm_station))) - LocalObject(219, CaptureTerminal.Constructor(Vector3(4579.833f, 6775.488f, 31.65818f), capture_terminal), owning_building_guid = 26) + LocalBuilding( + "Laka", + 26, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4632f, 6704f, 48.95818f), + Vector3(0f, 0f, 66f), + comm_station + ) + ) + ) + LocalObject( + 219, + CaptureTerminal.Constructor(Vector3(4579.833f, 6775.488f, 31.65818f), capture_terminal), + owning_building_guid = 26 + ) LocalObject(483, Door.Constructor(Vector3(4570.104f, 6732.105f, 50.70918f)), owning_building_guid = 26) LocalObject(486, Door.Constructor(Vector3(4575.586f, 6764.146f, 50.67918f)), owning_building_guid = 26) LocalObject(487, Door.Constructor(Vector3(4577.502f, 6748.725f, 58.67218f)), owning_building_guid = 26) @@ -665,18 +1785,78 @@ object Map09 { // Searhus LocalObject(2786, Door.Constructor(Vector3(4621.049f, 6749.019f, 41.01218f)), owning_building_guid = 26) LocalObject(2787, Door.Constructor(Vector3(4627.708f, 6746.055f, 41.01218f)), owning_building_guid = 26) LocalObject(2788, Door.Constructor(Vector3(4634.371f, 6743.088f, 41.01218f)), owning_building_guid = 26) - LocalObject(997, IFFLock.Constructor(Vector3(4641.114f, 6722.331f, 50.61018f), Vector3(0, 0, 24)), owning_building_guid = 26, door_guid = 945) - LocalObject(1135, IFFLock.Constructor(Vector3(4574.045f, 6765.683f, 50.60818f), Vector3(0, 0, 24)), owning_building_guid = 26, door_guid = 486) - LocalObject(1138, IFFLock.Constructor(Vector3(4587.254f, 6766.818f, 32.99418f), Vector3(0, 0, 204)), owning_building_guid = 26, door_guid = 799) - LocalObject(1139, IFFLock.Constructor(Vector3(4588.297f, 6776.89f, 32.99418f), Vector3(0, 0, 24)), owning_building_guid = 26, door_guid = 802) - LocalObject(1142, IFFLock.Constructor(Vector3(4603.438f, 6696.544f, 32.99418f), Vector3(0, 0, 114)), owning_building_guid = 26, door_guid = 808) - LocalObject(1143, IFFLock.Constructor(Vector3(4618.521f, 6717.869f, 55.61918f), Vector3(0, 0, 204)), owning_building_guid = 26, door_guid = 490) - LocalObject(1144, IFFLock.Constructor(Vector3(4619.284f, 6756.105f, 40.49418f), Vector3(0, 0, 294)), owning_building_guid = 26, door_guid = 813) - LocalObject(1145, IFFLock.Constructor(Vector3(4622.025f, 6684.312f, 55.61918f), Vector3(0, 0, 294)), owning_building_guid = 26, door_guid = 493) - LocalObject(1146, IFFLock.Constructor(Vector3(4633.45f, 6683.703f, 55.61918f), Vector3(0, 0, 114)), owning_building_guid = 26, door_guid = 495) - LocalObject(1147, IFFLock.Constructor(Vector3(4638.561f, 6695.406f, 63.03918f), Vector3(0, 0, 204)), owning_building_guid = 26, door_guid = 496) - LocalObject(1148, IFFLock.Constructor(Vector3(4643.967f, 6748.557f, 40.49418f), Vector3(0, 0, 114)), owning_building_guid = 26, door_guid = 822) - LocalObject(1149, IFFLock.Constructor(Vector3(4644.869f, 6758.542f, 32.99418f), Vector3(0, 0, 204)), owning_building_guid = 26, door_guid = 823) + LocalObject( + 997, + IFFLock.Constructor(Vector3(4641.114f, 6722.331f, 50.61018f), Vector3(0, 0, 24)), + owning_building_guid = 26, + door_guid = 945 + ) + LocalObject( + 1135, + IFFLock.Constructor(Vector3(4574.045f, 6765.683f, 50.60818f), Vector3(0, 0, 24)), + owning_building_guid = 26, + door_guid = 486 + ) + LocalObject( + 1138, + IFFLock.Constructor(Vector3(4587.254f, 6766.818f, 32.99418f), Vector3(0, 0, 204)), + owning_building_guid = 26, + door_guid = 799 + ) + LocalObject( + 1139, + IFFLock.Constructor(Vector3(4588.297f, 6776.89f, 32.99418f), Vector3(0, 0, 24)), + owning_building_guid = 26, + door_guid = 802 + ) + LocalObject( + 1142, + IFFLock.Constructor(Vector3(4603.438f, 6696.544f, 32.99418f), Vector3(0, 0, 114)), + owning_building_guid = 26, + door_guid = 808 + ) + LocalObject( + 1143, + IFFLock.Constructor(Vector3(4618.521f, 6717.869f, 55.61918f), Vector3(0, 0, 204)), + owning_building_guid = 26, + door_guid = 490 + ) + LocalObject( + 1144, + IFFLock.Constructor(Vector3(4619.284f, 6756.105f, 40.49418f), Vector3(0, 0, 294)), + owning_building_guid = 26, + door_guid = 813 + ) + LocalObject( + 1145, + IFFLock.Constructor(Vector3(4622.025f, 6684.312f, 55.61918f), Vector3(0, 0, 294)), + owning_building_guid = 26, + door_guid = 493 + ) + LocalObject( + 1146, + IFFLock.Constructor(Vector3(4633.45f, 6683.703f, 55.61918f), Vector3(0, 0, 114)), + owning_building_guid = 26, + door_guid = 495 + ) + LocalObject( + 1147, + IFFLock.Constructor(Vector3(4638.561f, 6695.406f, 63.03918f), Vector3(0, 0, 204)), + owning_building_guid = 26, + door_guid = 496 + ) + LocalObject( + 1148, + IFFLock.Constructor(Vector3(4643.967f, 6748.557f, 40.49418f), Vector3(0, 0, 114)), + owning_building_guid = 26, + door_guid = 822 + ) + LocalObject( + 1149, + IFFLock.Constructor(Vector3(4644.869f, 6758.542f, 32.99418f), Vector3(0, 0, 204)), + owning_building_guid = 26, + door_guid = 823 + ) LocalObject(1462, Locker.Constructor(Vector3(4628.112f, 6769.432f, 31.65818f)), owning_building_guid = 26) LocalObject(1463, Locker.Constructor(Vector3(4628.651f, 6770.642f, 31.65818f)), owning_building_guid = 26) LocalObject(1464, Locker.Constructor(Vector3(4629.194f, 6771.862f, 31.65818f)), owning_building_guid = 26) @@ -689,60 +1869,233 @@ object Map09 { // Searhus LocalObject(1471, Locker.Constructor(Vector3(4642.555f, 6752.639f, 39.41918f)), owning_building_guid = 26) LocalObject(1472, Locker.Constructor(Vector3(4643.021f, 6753.687f, 39.41918f)), owning_building_guid = 26) LocalObject(1473, Locker.Constructor(Vector3(4643.489f, 6754.736f, 39.41918f)), owning_building_guid = 26) - LocalObject(1918, Terminal.Constructor(Vector3(4631.657f, 6759.601f, 40.74818f), order_terminal), owning_building_guid = 26) - LocalObject(1919, Terminal.Constructor(Vector3(4635.119f, 6758.059f, 40.74818f), order_terminal), owning_building_guid = 26) - LocalObject(1920, Terminal.Constructor(Vector3(4637.676f, 6704.025f, 62.91318f), order_terminal), owning_building_guid = 26) - LocalObject(1921, Terminal.Constructor(Vector3(4638.527f, 6756.542f, 40.74818f), order_terminal), owning_building_guid = 26) - LocalObject(1922, Terminal.Constructor(Vector3(4638.839f, 6701.037f, 62.91318f), order_terminal), owning_building_guid = 26) - LocalObject(1923, Terminal.Constructor(Vector3(4641.691f, 6702.237f, 62.91318f), order_terminal), owning_building_guid = 26) - LocalObject(1924, Terminal.Constructor(Vector3(4649.183f, 6685.818f, 55.51818f), order_terminal), owning_building_guid = 26) - LocalObject(2695, Terminal.Constructor(Vector3(4595.271f, 6719.706f, 43.21518f), spawn_terminal), owning_building_guid = 26) - LocalObject(2696, Terminal.Constructor(Vector3(4617.621f, 6692.826f, 33.21518f), spawn_terminal), owning_building_guid = 26) - LocalObject(2697, Terminal.Constructor(Vector3(4623.447f, 6748.277f, 41.29218f), spawn_terminal), owning_building_guid = 26) - LocalObject(2698, Terminal.Constructor(Vector3(4630.103f, 6745.31f, 41.29218f), spawn_terminal), owning_building_guid = 26) - LocalObject(2699, Terminal.Constructor(Vector3(4636.767f, 6742.348f, 41.29218f), spawn_terminal), owning_building_guid = 26) - LocalObject(2700, Terminal.Constructor(Vector3(4653.347f, 6692.865f, 55.77518f), spawn_terminal), owning_building_guid = 26) - LocalObject(2915, Terminal.Constructor(Vector3(4603.298f, 6774.201f, 51.84518f), vehicle_terminal_combined), owning_building_guid = 26) - LocalObject(1810, VehicleSpawnPad.Constructor(Vector3(4597.897f, 6761.692f, 47.68718f), mb_pad_creation, Vector3(0, 0, 204)), owning_building_guid = 26, terminal_guid = 2915) + LocalObject( + 1918, + Terminal.Constructor(Vector3(4631.657f, 6759.601f, 40.74818f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1919, + Terminal.Constructor(Vector3(4635.119f, 6758.059f, 40.74818f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1920, + Terminal.Constructor(Vector3(4637.676f, 6704.025f, 62.91318f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1921, + Terminal.Constructor(Vector3(4638.527f, 6756.542f, 40.74818f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1922, + Terminal.Constructor(Vector3(4638.839f, 6701.037f, 62.91318f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1923, + Terminal.Constructor(Vector3(4641.691f, 6702.237f, 62.91318f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1924, + Terminal.Constructor(Vector3(4649.183f, 6685.818f, 55.51818f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2695, + Terminal.Constructor(Vector3(4595.271f, 6719.706f, 43.21518f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2696, + Terminal.Constructor(Vector3(4617.621f, 6692.826f, 33.21518f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2697, + Terminal.Constructor(Vector3(4623.447f, 6748.277f, 41.29218f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2698, + Terminal.Constructor(Vector3(4630.103f, 6745.31f, 41.29218f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2699, + Terminal.Constructor(Vector3(4636.767f, 6742.348f, 41.29218f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2700, + Terminal.Constructor(Vector3(4653.347f, 6692.865f, 55.77518f), spawn_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2915, + Terminal.Constructor(Vector3(4603.298f, 6774.201f, 51.84518f), vehicle_terminal_combined), + owning_building_guid = 26 + ) + LocalObject( + 1810, + VehicleSpawnPad.Constructor(Vector3(4597.897f, 6761.692f, 47.68718f), mb_pad_creation, Vector3(0, 0, 204)), + owning_building_guid = 26, + terminal_guid = 2915 + ) LocalObject(2525, ResourceSilo.Constructor(Vector3(4672.435f, 6624.949f, 56.17518f)), owning_building_guid = 26) - LocalObject(2581, SpawnTube.Constructor(Vector3(4621.832f, 6748.189f, 39.15818f), Vector3(0, 0, 294)), owning_building_guid = 26) - LocalObject(2582, SpawnTube.Constructor(Vector3(4628.49f, 6745.225f, 39.15818f), Vector3(0, 0, 294)), owning_building_guid = 26) - LocalObject(2583, SpawnTube.Constructor(Vector3(4635.151f, 6742.259f, 39.15818f), Vector3(0, 0, 294)), owning_building_guid = 26) - LocalObject(1830, ProximityTerminal.Constructor(Vector3(4631.152f, 6774.92f, 31.65818f), medical_terminal), owning_building_guid = 26) - LocalObject(1831, ProximityTerminal.Constructor(Vector3(4658.823f, 6693.003f, 49.15818f), medical_terminal), owning_building_guid = 26) - LocalObject(2156, ProximityTerminal.Constructor(Vector3(4573.92f, 6709.229f, 57.39918f), pad_landing_frame), owning_building_guid = 26) - LocalObject(2157, Terminal.Constructor(Vector3(4573.92f, 6709.229f, 57.39918f), air_rearm_terminal), owning_building_guid = 26) - LocalObject(2465, ProximityTerminal.Constructor(Vector3(4585.978f, 6657.621f, 48.70818f), repair_silo), owning_building_guid = 26) - LocalObject(2466, Terminal.Constructor(Vector3(4585.978f, 6657.621f, 48.70818f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(2473, ProximityTerminal.Constructor(Vector3(4679.298f, 6750.416f, 48.70818f), repair_silo), owning_building_guid = 26) - LocalObject(2474, Terminal.Constructor(Vector3(4679.298f, 6750.416f, 48.70818f), ground_rearm_terminal), owning_building_guid = 26) - LocalObject(1738, FacilityTurret.Constructor(Vector3(4544.932f, 6709.432f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 2581, + SpawnTube.Constructor(Vector3(4621.832f, 6748.189f, 39.15818f), Vector3(0, 0, 294)), + owning_building_guid = 26 + ) + LocalObject( + 2582, + SpawnTube.Constructor(Vector3(4628.49f, 6745.225f, 39.15818f), Vector3(0, 0, 294)), + owning_building_guid = 26 + ) + LocalObject( + 2583, + SpawnTube.Constructor(Vector3(4635.151f, 6742.259f, 39.15818f), Vector3(0, 0, 294)), + owning_building_guid = 26 + ) + LocalObject( + 1830, + ProximityTerminal.Constructor(Vector3(4631.152f, 6774.92f, 31.65818f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1831, + ProximityTerminal.Constructor(Vector3(4658.823f, 6693.003f, 49.15818f), medical_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2156, + ProximityTerminal.Constructor(Vector3(4573.92f, 6709.229f, 57.39918f), pad_landing_frame), + owning_building_guid = 26 + ) + LocalObject( + 2157, + Terminal.Constructor(Vector3(4573.92f, 6709.229f, 57.39918f), air_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2465, + ProximityTerminal.Constructor(Vector3(4585.978f, 6657.621f, 48.70818f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2466, + Terminal.Constructor(Vector3(4585.978f, 6657.621f, 48.70818f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 2473, + ProximityTerminal.Constructor(Vector3(4679.298f, 6750.416f, 48.70818f), repair_silo), + owning_building_guid = 26 + ) + LocalObject( + 2474, + Terminal.Constructor(Vector3(4679.298f, 6750.416f, 48.70818f), ground_rearm_terminal), + owning_building_guid = 26 + ) + LocalObject( + 1738, + FacilityTurret.Constructor(Vector3(4544.932f, 6709.432f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1738, 5024) - LocalObject(1740, FacilityTurret.Constructor(Vector3(4566.764f, 6652.506f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 1740, + FacilityTurret.Constructor(Vector3(4566.764f, 6652.506f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1740, 5025) - LocalObject(1741, FacilityTurret.Constructor(Vector3(4588.146f, 6803.259f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 1741, + FacilityTurret.Constructor(Vector3(4588.146f, 6803.259f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1741, 5026) - LocalObject(1746, FacilityTurret.Constructor(Vector3(4676.015f, 6605.102f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 1746, + FacilityTurret.Constructor(Vector3(4676.015f, 6605.102f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1746, 5027) - LocalObject(1747, FacilityTurret.Constructor(Vector3(4697.273f, 6755.953f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 1747, + FacilityTurret.Constructor(Vector3(4697.273f, 6755.953f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1747, 5028) - LocalObject(1749, FacilityTurret.Constructor(Vector3(4719.11f, 6699.002f, 57.66618f), manned_turret), owning_building_guid = 26) + LocalObject( + 1749, + FacilityTurret.Constructor(Vector3(4719.11f, 6699.002f, 57.66618f), manned_turret), + owning_building_guid = 26 + ) TurretToWeapon(1749, 5029) - LocalObject(2260, Painbox.Constructor(Vector3(4590.952f, 6700.534f, 36.56018f), painbox), owning_building_guid = 26) - LocalObject(2274, Painbox.Constructor(Vector3(4626.89f, 6756.864f, 43.60298f), painbox_continuous), owning_building_guid = 26) - LocalObject(2288, Painbox.Constructor(Vector3(4604.71f, 6694.517f, 34.41688f), painbox_door_radius), owning_building_guid = 26) - LocalObject(2318, Painbox.Constructor(Vector3(4619.695f, 6758.529f, 40.76588f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(2319, Painbox.Constructor(Vector3(4630.111f, 6768.171f, 41.98418f), painbox_door_radius_continuous), owning_building_guid = 26) - LocalObject(2320, Painbox.Constructor(Vector3(4644.311f, 6746.589f, 40.98418f), painbox_door_radius_continuous), owning_building_guid = 26) + LocalObject( + 2260, + Painbox.Constructor(Vector3(4590.952f, 6700.534f, 36.56018f), painbox), + owning_building_guid = 26 + ) + LocalObject( + 2274, + Painbox.Constructor(Vector3(4626.89f, 6756.864f, 43.60298f), painbox_continuous), + owning_building_guid = 26 + ) + LocalObject( + 2288, + Painbox.Constructor(Vector3(4604.71f, 6694.517f, 34.41688f), painbox_door_radius), + owning_building_guid = 26 + ) + LocalObject( + 2318, + Painbox.Constructor(Vector3(4619.695f, 6758.529f, 40.76588f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 2319, + Painbox.Constructor(Vector3(4630.111f, 6768.171f, 41.98418f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 2320, + Painbox.Constructor(Vector3(4644.311f, 6746.589f, 40.98418f), painbox_door_radius_continuous), + owning_building_guid = 26 + ) LocalObject(305, Generator.Constructor(Vector3(4587.72f, 6701.795f, 30.36418f)), owning_building_guid = 26) - LocalObject(291, Terminal.Constructor(Vector3(4595.223f, 6698.506f, 31.65818f), gen_control), owning_building_guid = 26) + LocalObject( + 291, + Terminal.Constructor(Vector3(4595.223f, 6698.506f, 31.65818f), gen_control), + owning_building_guid = 26 + ) } Building12() def Building12(): Unit = { // Name: Oro Type: comm_station GUID: 29, MapID: 12 - LocalBuilding("Oro", 29, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4896f, 4538f, 208.002f), Vector3(0f, 0f, 295f), comm_station))) - LocalObject(220, CaptureTerminal.Constructor(Vector3(4984.177f, 4530.471f, 190.702f), capture_terminal), owning_building_guid = 29) + LocalBuilding( + "Oro", + 29, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4896f, 4538f, 208.002f), + Vector3(0f, 0f, 295f), + comm_station + ) + ) + ) + LocalObject( + 220, + CaptureTerminal.Constructor(Vector3(4984.177f, 4530.471f, 190.702f), capture_terminal), + owning_building_guid = 29 + ) LocalObject(511, Door.Constructor(Vector3(4816.507f, 4548.038f, 217.7169f)), owning_building_guid = 29) LocalObject(512, Door.Constructor(Vector3(4824.195f, 4531.55f, 209.753f)), owning_building_guid = 29) LocalObject(513, Door.Constructor(Vector3(4831.301f, 4573.817f, 209.753f)), owning_building_guid = 29) @@ -784,18 +2137,78 @@ object Map09 { // Searhus LocalObject(2797, Door.Constructor(Vector3(4923.945f, 4510.567f, 200.056f)), owning_building_guid = 29) LocalObject(2798, Door.Constructor(Vector3(4930.555f, 4513.649f, 200.056f)), owning_building_guid = 29) LocalObject(2799, Door.Constructor(Vector3(4937.161f, 4516.729f, 200.056f)), owning_building_guid = 29) - LocalObject(998, IFFLock.Constructor(Vector3(4903.855f, 4519.096f, 209.6539f), Vector3(0, 0, 155)), owning_building_guid = 29, door_guid = 946) - LocalObject(1168, IFFLock.Constructor(Vector3(4879.73f, 4550.222f, 214.6629f), Vector3(0, 0, 245)), owning_building_guid = 29, door_guid = 525) - LocalObject(1169, IFFLock.Constructor(Vector3(4885.209f, 4538.687f, 222.0829f), Vector3(0, 0, 335)), owning_building_guid = 29, door_guid = 526) - LocalObject(1170, IFFLock.Constructor(Vector3(4887.686f, 4558.445f, 214.6629f), Vector3(0, 0, 65)), owning_building_guid = 29, door_guid = 527) - LocalObject(1171, IFFLock.Constructor(Vector3(4909.111f, 4564.447f, 192.0379f), Vector3(0, 0, 245)), owning_building_guid = 29, door_guid = 830) - LocalObject(1172, IFFLock.Constructor(Vector3(4915.31f, 4539.075f, 214.6629f), Vector3(0, 0, 335)), owning_building_guid = 29, door_guid = 529) - LocalObject(1173, IFFLock.Constructor(Vector3(4921.776f, 4499.736f, 199.5379f), Vector3(0, 0, 245)), owning_building_guid = 29, door_guid = 835) - LocalObject(1174, IFFLock.Constructor(Vector3(4928.72f, 4492.506f, 192.0379f), Vector3(0, 0, 335)), owning_building_guid = 29, door_guid = 839) - LocalObject(1175, IFFLock.Constructor(Vector3(4943.667f, 4513.413f, 199.5379f), Vector3(0, 0, 65)), owning_building_guid = 29, door_guid = 842) - LocalObject(1176, IFFLock.Constructor(Vector3(4972.765f, 4530.558f, 192.0379f), Vector3(0, 0, 335)), owning_building_guid = 29, door_guid = 846) - LocalObject(1177, IFFLock.Constructor(Vector3(4979.683f, 4523.163f, 192.0379f), Vector3(0, 0, 155)), owning_building_guid = 29, door_guid = 847) - LocalObject(1178, IFFLock.Constructor(Vector3(4980.575f, 4541.271f, 209.6519f), Vector3(0, 0, 155)), owning_building_guid = 29, door_guid = 533) + LocalObject( + 998, + IFFLock.Constructor(Vector3(4903.855f, 4519.096f, 209.6539f), Vector3(0, 0, 155)), + owning_building_guid = 29, + door_guid = 946 + ) + LocalObject( + 1168, + IFFLock.Constructor(Vector3(4879.73f, 4550.222f, 214.6629f), Vector3(0, 0, 245)), + owning_building_guid = 29, + door_guid = 525 + ) + LocalObject( + 1169, + IFFLock.Constructor(Vector3(4885.209f, 4538.687f, 222.0829f), Vector3(0, 0, 335)), + owning_building_guid = 29, + door_guid = 526 + ) + LocalObject( + 1170, + IFFLock.Constructor(Vector3(4887.686f, 4558.445f, 214.6629f), Vector3(0, 0, 65)), + owning_building_guid = 29, + door_guid = 527 + ) + LocalObject( + 1171, + IFFLock.Constructor(Vector3(4909.111f, 4564.447f, 192.0379f), Vector3(0, 0, 245)), + owning_building_guid = 29, + door_guid = 830 + ) + LocalObject( + 1172, + IFFLock.Constructor(Vector3(4915.31f, 4539.075f, 214.6629f), Vector3(0, 0, 335)), + owning_building_guid = 29, + door_guid = 529 + ) + LocalObject( + 1173, + IFFLock.Constructor(Vector3(4921.776f, 4499.736f, 199.5379f), Vector3(0, 0, 245)), + owning_building_guid = 29, + door_guid = 835 + ) + LocalObject( + 1174, + IFFLock.Constructor(Vector3(4928.72f, 4492.506f, 192.0379f), Vector3(0, 0, 335)), + owning_building_guid = 29, + door_guid = 839 + ) + LocalObject( + 1175, + IFFLock.Constructor(Vector3(4943.667f, 4513.413f, 199.5379f), Vector3(0, 0, 65)), + owning_building_guid = 29, + door_guid = 842 + ) + LocalObject( + 1176, + IFFLock.Constructor(Vector3(4972.765f, 4530.558f, 192.0379f), Vector3(0, 0, 335)), + owning_building_guid = 29, + door_guid = 846 + ) + LocalObject( + 1177, + IFFLock.Constructor(Vector3(4979.683f, 4523.163f, 192.0379f), Vector3(0, 0, 155)), + owning_building_guid = 29, + door_guid = 847 + ) + LocalObject( + 1178, + IFFLock.Constructor(Vector3(4980.575f, 4541.271f, 209.6519f), Vector3(0, 0, 155)), + owning_building_guid = 29, + door_guid = 533 + ) LocalObject(1506, Locker.Constructor(Vector3(4925.292f, 4499.179f, 198.463f)), owning_building_guid = 29) LocalObject(1507, Locker.Constructor(Vector3(4925.784f, 4498.124f, 198.463f)), owning_building_guid = 29) LocalObject(1508, Locker.Constructor(Vector3(4926.269f, 4497.084f, 198.463f)), owning_building_guid = 29) @@ -808,60 +2221,233 @@ object Map09 { // Searhus LocalObject(1515, Locker.Constructor(Vector3(4952.1f, 4489.069f, 190.702f)), owning_building_guid = 29) LocalObject(1516, Locker.Constructor(Vector3(4952.665f, 4487.859f, 190.702f)), owning_building_guid = 29) LocalObject(1517, Locker.Constructor(Vector3(4953.229f, 4486.647f, 190.702f)), owning_building_guid = 29) - LocalObject(1934, Terminal.Constructor(Vector3(4871.004f, 4536.96f, 214.562f), order_terminal), owning_building_guid = 29) - LocalObject(1938, Terminal.Constructor(Vector3(4888.312f, 4531.843f, 221.957f), order_terminal), owning_building_guid = 29) - LocalObject(1939, Terminal.Constructor(Vector3(4889.277f, 4534.782f, 221.957f), order_terminal), owning_building_guid = 29) - LocalObject(1940, Terminal.Constructor(Vector3(4892.295f, 4533.699f, 221.957f), order_terminal), owning_building_guid = 29) - LocalObject(1941, Terminal.Constructor(Vector3(4931.372f, 4498.604f, 199.7919f), order_terminal), owning_building_guid = 29) - LocalObject(1942, Terminal.Constructor(Vector3(4934.753f, 4500.18f, 199.7919f), order_terminal), owning_building_guid = 29) - LocalObject(1943, Terminal.Constructor(Vector3(4938.187f, 4501.782f, 199.7919f), order_terminal), owning_building_guid = 29) - LocalObject(2701, Terminal.Constructor(Vector3(4873.591f, 4529.194f, 214.819f), spawn_terminal), owning_building_guid = 29) - LocalObject(2702, Terminal.Constructor(Vector3(4897f, 4556.183f, 192.259f), spawn_terminal), owning_building_guid = 29) - LocalObject(2703, Terminal.Constructor(Vector3(4921.814f, 4509.245f, 200.336f), spawn_terminal), owning_building_guid = 29) - LocalObject(2704, Terminal.Constructor(Vector3(4928.421f, 4512.33f, 200.336f), spawn_terminal), owning_building_guid = 29) - LocalObject(2705, Terminal.Constructor(Vector3(4931.95f, 4555.416f, 202.259f), spawn_terminal), owning_building_guid = 29) - LocalObject(2706, Terminal.Constructor(Vector3(4935.028f, 4515.407f, 200.336f), spawn_terminal), owning_building_guid = 29) - LocalObject(2917, Terminal.Constructor(Vector3(4967.812f, 4513.605f, 210.8889f), vehicle_terminal_combined), owning_building_guid = 29) - LocalObject(1811, VehicleSpawnPad.Constructor(Vector3(4961.914f, 4525.889f, 206.731f), mb_pad_creation, Vector3(0, 0, -25)), owning_building_guid = 29, terminal_guid = 2917) + LocalObject( + 1934, + Terminal.Constructor(Vector3(4871.004f, 4536.96f, 214.562f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1938, + Terminal.Constructor(Vector3(4888.312f, 4531.843f, 221.957f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1939, + Terminal.Constructor(Vector3(4889.277f, 4534.782f, 221.957f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1940, + Terminal.Constructor(Vector3(4892.295f, 4533.699f, 221.957f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1941, + Terminal.Constructor(Vector3(4931.372f, 4498.604f, 199.7919f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1942, + Terminal.Constructor(Vector3(4934.753f, 4500.18f, 199.7919f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1943, + Terminal.Constructor(Vector3(4938.187f, 4501.782f, 199.7919f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2701, + Terminal.Constructor(Vector3(4873.591f, 4529.194f, 214.819f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2702, + Terminal.Constructor(Vector3(4897f, 4556.183f, 192.259f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2703, + Terminal.Constructor(Vector3(4921.814f, 4509.245f, 200.336f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2704, + Terminal.Constructor(Vector3(4928.421f, 4512.33f, 200.336f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2705, + Terminal.Constructor(Vector3(4931.95f, 4555.416f, 202.259f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2706, + Terminal.Constructor(Vector3(4935.028f, 4515.407f, 200.336f), spawn_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2917, + Terminal.Constructor(Vector3(4967.812f, 4513.605f, 210.8889f), vehicle_terminal_combined), + owning_building_guid = 29 + ) + LocalObject( + 1811, + VehicleSpawnPad.Constructor(Vector3(4961.914f, 4525.889f, 206.731f), mb_pad_creation, Vector3(0, 0, -25)), + owning_building_guid = 29, + terminal_guid = 2917 + ) LocalObject(2526, ResourceSilo.Constructor(Vector3(4809.812f, 4559.345f, 215.2189f)), owning_building_guid = 29) - LocalObject(2592, SpawnTube.Constructor(Vector3(4922.808f, 4510.522f, 198.202f), Vector3(0, 0, 65)), owning_building_guid = 29) - LocalObject(2593, SpawnTube.Constructor(Vector3(4929.416f, 4513.603f, 198.202f), Vector3(0, 0, 65)), owning_building_guid = 29) - LocalObject(2594, SpawnTube.Constructor(Vector3(4936.021f, 4516.683f, 198.202f), Vector3(0, 0, 65)), owning_building_guid = 29) - LocalObject(1832, ProximityTerminal.Constructor(Vector3(4870.103f, 4524.971f, 208.202f), medical_terminal), owning_building_guid = 29) - LocalObject(1833, ProximityTerminal.Constructor(Vector3(4950.08f, 4492.112f, 190.702f), medical_terminal), owning_building_guid = 29) - LocalObject(2159, ProximityTerminal.Constructor(Vector3(4938.05f, 4578.402f, 216.4429f), pad_landing_frame), owning_building_guid = 29) - LocalObject(2160, Terminal.Constructor(Vector3(4938.05f, 4578.402f, 216.4429f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(2477, ProximityTerminal.Constructor(Vector3(4891.191f, 4603.161f, 207.752f), repair_silo), owning_building_guid = 29) - LocalObject(2478, Terminal.Constructor(Vector3(4891.191f, 4603.161f, 207.752f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(2481, ProximityTerminal.Constructor(Vector3(4900f, 4471.852f, 207.752f), repair_silo), owning_building_guid = 29) - LocalObject(2482, Terminal.Constructor(Vector3(4900f, 4471.852f, 207.752f), ground_rearm_terminal), owning_building_guid = 29) - LocalObject(1752, FacilityTurret.Constructor(Vector3(4792.484f, 4569.665f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 2592, + SpawnTube.Constructor(Vector3(4922.808f, 4510.522f, 198.202f), Vector3(0, 0, 65)), + owning_building_guid = 29 + ) + LocalObject( + 2593, + SpawnTube.Constructor(Vector3(4929.416f, 4513.603f, 198.202f), Vector3(0, 0, 65)), + owning_building_guid = 29 + ) + LocalObject( + 2594, + SpawnTube.Constructor(Vector3(4936.021f, 4516.683f, 198.202f), Vector3(0, 0, 65)), + owning_building_guid = 29 + ) + LocalObject( + 1832, + ProximityTerminal.Constructor(Vector3(4870.103f, 4524.971f, 208.202f), medical_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1833, + ProximityTerminal.Constructor(Vector3(4950.08f, 4492.112f, 190.702f), medical_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2159, + ProximityTerminal.Constructor(Vector3(4938.05f, 4578.402f, 216.4429f), pad_landing_frame), + owning_building_guid = 29 + ) + LocalObject( + 2160, + Terminal.Constructor(Vector3(4938.05f, 4578.402f, 216.4429f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2477, + ProximityTerminal.Constructor(Vector3(4891.191f, 4603.161f, 207.752f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2478, + Terminal.Constructor(Vector3(4891.191f, 4603.161f, 207.752f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 2481, + ProximityTerminal.Constructor(Vector3(4900f, 4471.852f, 207.752f), repair_silo), + owning_building_guid = 29 + ) + LocalObject( + 2482, + Terminal.Constructor(Vector3(4900f, 4471.852f, 207.752f), ground_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1752, + FacilityTurret.Constructor(Vector3(4792.484f, 4569.665f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1752, 5030) - LocalObject(1753, FacilityTurret.Constructor(Vector3(4835.079f, 4475.536f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 1753, + FacilityTurret.Constructor(Vector3(4835.079f, 4475.536f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1753, 5031) - LocalObject(1756, FacilityTurret.Constructor(Vector3(4892.386f, 4454.654f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 1756, + FacilityTurret.Constructor(Vector3(4892.386f, 4454.654f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1756, 5032) - LocalObject(1757, FacilityTurret.Constructor(Vector3(4899.936f, 4621.018f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 1757, + FacilityTurret.Constructor(Vector3(4899.936f, 4621.018f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1757, 5033) - LocalObject(1758, FacilityTurret.Constructor(Vector3(4957.222f, 4600.147f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 1758, + FacilityTurret.Constructor(Vector3(4957.222f, 4600.147f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1758, 5034) - LocalObject(1759, FacilityTurret.Constructor(Vector3(4999.683f, 4505.977f, 216.71f), manned_turret), owning_building_guid = 29) + LocalObject( + 1759, + FacilityTurret.Constructor(Vector3(4999.683f, 4505.977f, 216.71f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(1759, 5035) - LocalObject(2261, Painbox.Constructor(Vector3(4920.314f, 4571.253f, 195.604f), painbox), owning_building_guid = 29) - LocalObject(2275, Painbox.Constructor(Vector3(4939.249f, 4507.175f, 202.6468f), painbox_continuous), owning_building_guid = 29) - LocalObject(2289, Painbox.Constructor(Vector3(4906.746f, 4564.817f, 193.4606f), painbox_door_radius), owning_building_guid = 29) - LocalObject(2321, Painbox.Constructor(Vector3(4920.065f, 4500.768f, 200.028f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(2322, Painbox.Constructor(Vector3(4945.227f, 4511.512f, 199.8096f), painbox_door_radius_continuous), owning_building_guid = 29) - LocalObject(2323, Painbox.Constructor(Vector3(4945.67f, 4497.326f, 201.028f), painbox_door_radius_continuous), owning_building_guid = 29) + LocalObject( + 2261, + Painbox.Constructor(Vector3(4920.314f, 4571.253f, 195.604f), painbox), + owning_building_guid = 29 + ) + LocalObject( + 2275, + Painbox.Constructor(Vector3(4939.249f, 4507.175f, 202.6468f), painbox_continuous), + owning_building_guid = 29 + ) + LocalObject( + 2289, + Painbox.Constructor(Vector3(4906.746f, 4564.817f, 193.4606f), painbox_door_radius), + owning_building_guid = 29 + ) + LocalObject( + 2321, + Painbox.Constructor(Vector3(4920.065f, 4500.768f, 200.028f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 2322, + Painbox.Constructor(Vector3(4945.227f, 4511.512f, 199.8096f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 2323, + Painbox.Constructor(Vector3(4945.67f, 4497.326f, 201.028f), painbox_door_radius_continuous), + owning_building_guid = 29 + ) LocalObject(306, Generator.Constructor(Vector3(4923.386f, 4572.865f, 189.408f)), owning_building_guid = 29) - LocalObject(292, Terminal.Constructor(Vector3(4915.981f, 4569.361f, 190.702f), gen_control), owning_building_guid = 29) + LocalObject( + 292, + Terminal.Constructor(Vector3(4915.981f, 4569.361f, 190.702f), gen_control), + owning_building_guid = 29 + ) } Building15() def Building15(): Unit = { // Name: Sina Type: comm_station_dsp GUID: 32, MapID: 15 - LocalBuilding("Sina", 32, 15, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5838f, 2198f, 90.95889f), Vector3(0f, 0f, 39f), comm_station_dsp))) - LocalObject(223, CaptureTerminal.Constructor(Vector3(5909.257f, 2230.912f, 73.55889f), capture_terminal), owning_building_guid = 32) + LocalBuilding( + "Sina", + 32, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5838f, 2198f, 90.95889f), + Vector3(0f, 0f, 39f), + comm_station_dsp + ) + ) + ) + LocalObject( + 223, + CaptureTerminal.Constructor(Vector3(5909.257f, 2230.912f, 73.55889f), capture_terminal), + owning_building_guid = 32 + ) LocalObject(277, Door.Constructor(Vector3(5846.765f, 2295.768f, 94.33689f)), owning_building_guid = 32) LocalObject(572, Door.Constructor(Vector3(5756.884f, 2286.67f, 92.60989f)), owning_building_guid = 32) LocalObject(573, Door.Constructor(Vector3(5758.785f, 2304.764f, 100.5729f)), owning_building_guid = 32) @@ -907,20 +2493,90 @@ object Map09 { // Searhus LocalObject(2810, Door.Constructor(Vector3(5848.681f, 2243.084f, 82.9129f)), owning_building_guid = 32) LocalObject(2811, Door.Constructor(Vector3(5853.268f, 2237.419f, 82.9129f)), owning_building_guid = 32) LocalObject(2812, Door.Constructor(Vector3(5857.858f, 2231.752f, 82.9129f)), owning_building_guid = 32) - LocalObject(1001, IFFLock.Constructor(Vector3(5854.468f, 2210.165f, 92.52689f), Vector3(0, 0, 51)), owning_building_guid = 32, door_guid = 949) - LocalObject(1206, IFFLock.Constructor(Vector3(5812.158f, 2312.393f, 97.50589f), Vector3(0, 0, 321)), owning_building_guid = 32, door_guid = 577) - LocalObject(1207, IFFLock.Constructor(Vector3(5820.176f, 2184.987f, 97.52689f), Vector3(0, 0, 321)), owning_building_guid = 32, door_guid = 579) - LocalObject(1208, IFFLock.Constructor(Vector3(5830.071f, 2179.252f, 97.52689f), Vector3(0, 0, 141)), owning_building_guid = 32, door_guid = 580) - LocalObject(1209, IFFLock.Constructor(Vector3(5831.068f, 2271.615f, 74.8949f), Vector3(0, 0, 51)), owning_building_guid = 32, door_guid = 897) - LocalObject(1210, IFFLock.Constructor(Vector3(5832.286f, 2216.486f, 97.52689f), Vector3(0, 0, 231)), owning_building_guid = 32, door_guid = 581) - LocalObject(1211, IFFLock.Constructor(Vector3(5835.332f, 2288.888f, 92.57089f), Vector3(0, 0, 231)), owning_building_guid = 32, door_guid = 582) - LocalObject(1212, IFFLock.Constructor(Vector3(5839.942f, 2187.366f, 105.0269f), Vector3(0, 0, 231)), owning_building_guid = 32, door_guid = 583) - LocalObject(1213, IFFLock.Constructor(Vector3(5850.243f, 2250.3f, 82.39489f), Vector3(0, 0, 321)), owning_building_guid = 32, door_guid = 903) - LocalObject(1214, IFFLock.Constructor(Vector3(5868.891f, 2232.267f, 82.39489f), Vector3(0, 0, 141)), owning_building_guid = 32, door_guid = 905) - LocalObject(1215, IFFLock.Constructor(Vector3(5874.227f, 2240.754f, 74.8949f), Vector3(0, 0, 231)), owning_building_guid = 32, door_guid = 907) - LocalObject(1216, IFFLock.Constructor(Vector3(5875.704f, 2332.512f, 92.46989f), Vector3(0, 0, 321)), owning_building_guid = 32, door_guid = 587) - LocalObject(1217, IFFLock.Constructor(Vector3(5911.834f, 2219.738f, 74.8949f), Vector3(0, 0, 231)), owning_building_guid = 32, door_guid = 911) - LocalObject(1219, IFFLock.Constructor(Vector3(5917.435f, 2228.319f, 74.8949f), Vector3(0, 0, 51)), owning_building_guid = 32, door_guid = 913) + LocalObject( + 1001, + IFFLock.Constructor(Vector3(5854.468f, 2210.165f, 92.52689f), Vector3(0, 0, 51)), + owning_building_guid = 32, + door_guid = 949 + ) + LocalObject( + 1206, + IFFLock.Constructor(Vector3(5812.158f, 2312.393f, 97.50589f), Vector3(0, 0, 321)), + owning_building_guid = 32, + door_guid = 577 + ) + LocalObject( + 1207, + IFFLock.Constructor(Vector3(5820.176f, 2184.987f, 97.52689f), Vector3(0, 0, 321)), + owning_building_guid = 32, + door_guid = 579 + ) + LocalObject( + 1208, + IFFLock.Constructor(Vector3(5830.071f, 2179.252f, 97.52689f), Vector3(0, 0, 141)), + owning_building_guid = 32, + door_guid = 580 + ) + LocalObject( + 1209, + IFFLock.Constructor(Vector3(5831.068f, 2271.615f, 74.8949f), Vector3(0, 0, 51)), + owning_building_guid = 32, + door_guid = 897 + ) + LocalObject( + 1210, + IFFLock.Constructor(Vector3(5832.286f, 2216.486f, 97.52689f), Vector3(0, 0, 231)), + owning_building_guid = 32, + door_guid = 581 + ) + LocalObject( + 1211, + IFFLock.Constructor(Vector3(5835.332f, 2288.888f, 92.57089f), Vector3(0, 0, 231)), + owning_building_guid = 32, + door_guid = 582 + ) + LocalObject( + 1212, + IFFLock.Constructor(Vector3(5839.942f, 2187.366f, 105.0269f), Vector3(0, 0, 231)), + owning_building_guid = 32, + door_guid = 583 + ) + LocalObject( + 1213, + IFFLock.Constructor(Vector3(5850.243f, 2250.3f, 82.39489f), Vector3(0, 0, 321)), + owning_building_guid = 32, + door_guid = 903 + ) + LocalObject( + 1214, + IFFLock.Constructor(Vector3(5868.891f, 2232.267f, 82.39489f), Vector3(0, 0, 141)), + owning_building_guid = 32, + door_guid = 905 + ) + LocalObject( + 1215, + IFFLock.Constructor(Vector3(5874.227f, 2240.754f, 74.8949f), Vector3(0, 0, 231)), + owning_building_guid = 32, + door_guid = 907 + ) + LocalObject( + 1216, + IFFLock.Constructor(Vector3(5875.704f, 2332.512f, 92.46989f), Vector3(0, 0, 321)), + owning_building_guid = 32, + door_guid = 587 + ) + LocalObject( + 1217, + IFFLock.Constructor(Vector3(5911.834f, 2219.738f, 74.8949f), Vector3(0, 0, 231)), + owning_building_guid = 32, + door_guid = 911 + ) + LocalObject( + 1219, + IFFLock.Constructor(Vector3(5917.435f, 2228.319f, 74.8949f), Vector3(0, 0, 51)), + owning_building_guid = 32, + door_guid = 913 + ) LocalObject(1567, Locker.Constructor(Vector3(5864.242f, 2258.065f, 73.55889f)), owning_building_guid = 32) LocalObject(1568, Locker.Constructor(Vector3(5865.271f, 2258.898f, 73.55889f)), owning_building_guid = 32) LocalObject(1569, Locker.Constructor(Vector3(5866.309f, 2259.739f, 73.55889f)), owning_building_guid = 32) @@ -933,76 +2589,306 @@ object Map09 { // Searhus LocalObject(1576, Locker.Constructor(Vector3(5871.905f, 2264.271f, 73.55889f)), owning_building_guid = 32) LocalObject(1577, Locker.Constructor(Vector3(5872.943f, 2265.112f, 73.55889f)), owning_building_guid = 32) LocalObject(1578, Locker.Constructor(Vector3(5873.982f, 2265.953f, 73.55889f)), owning_building_guid = 32) - LocalObject(279, Terminal.Constructor(Vector3(5819.766f, 2315.665f, 96.6629f), dropship_vehicle_terminal), owning_building_guid = 32) - LocalObject(278, VehicleSpawnPad.Constructor(Vector3(5812.526f, 2338.031f, 90.98689f), dropship_pad_doors, Vector3(0, 0, 51)), owning_building_guid = 32, terminal_guid = 279) - LocalObject(1960, Terminal.Constructor(Vector3(5842.749f, 2192.255f, 104.8139f), order_terminal), owning_building_guid = 32) - LocalObject(1961, Terminal.Constructor(Vector3(5843.069f, 2195.446f, 104.8139f), order_terminal), owning_building_guid = 32) - LocalObject(1962, Terminal.Constructor(Vector3(5845.062f, 2173.99f, 97.41889f), order_terminal), owning_building_guid = 32) - LocalObject(1963, Terminal.Constructor(Vector3(5845.834f, 2192.03f, 104.8139f), order_terminal), owning_building_guid = 32) - LocalObject(1964, Terminal.Constructor(Vector3(5846.232f, 2195.131f, 104.8139f), order_terminal), owning_building_guid = 32) - LocalObject(1965, Terminal.Constructor(Vector3(5862.937f, 2247.696f, 82.6489f), order_terminal), owning_building_guid = 32) - LocalObject(1966, Terminal.Constructor(Vector3(5865.321f, 2244.751f, 82.6489f), order_terminal), owning_building_guid = 32) - LocalObject(1967, Terminal.Constructor(Vector3(5867.669f, 2241.852f, 82.6489f), order_terminal), owning_building_guid = 32) - LocalObject(2720, Terminal.Constructor(Vector3(5821.097f, 2306.433f, 97.6069f), spawn_terminal), owning_building_guid = 32) - LocalObject(2721, Terminal.Constructor(Vector3(5850.48f, 2241.334f, 83.19289f), spawn_terminal), owning_building_guid = 32) - LocalObject(2722, Terminal.Constructor(Vector3(5851.971f, 2178.378f, 97.6759f), spawn_terminal), owning_building_guid = 32) - LocalObject(2723, Terminal.Constructor(Vector3(5855.064f, 2235.668f, 83.19289f), spawn_terminal), owning_building_guid = 32) - LocalObject(2724, Terminal.Constructor(Vector3(5858.29f, 2286.414f, 75.08689f), spawn_terminal), owning_building_guid = 32) - LocalObject(2725, Terminal.Constructor(Vector3(5859.656f, 2230.004f, 83.19289f), spawn_terminal), owning_building_guid = 32) - LocalObject(2726, Terminal.Constructor(Vector3(5870.381f, 2285.226f, 82.61589f), spawn_terminal), owning_building_guid = 32) - LocalObject(2727, Terminal.Constructor(Vector3(5888.154f, 2237.854f, 75.08689f), spawn_terminal), owning_building_guid = 32) - LocalObject(2728, Terminal.Constructor(Vector3(5895.554f, 2254.14f, 82.61589f), spawn_terminal), owning_building_guid = 32) - LocalObject(2920, Terminal.Constructor(Vector3(5783.76f, 2293.104f, 93.7459f), ground_vehicle_terminal), owning_building_guid = 32) - LocalObject(1814, VehicleSpawnPad.Constructor(Vector3(5792.408f, 2282.564f, 89.58789f), mb_pad_creation, Vector3(0, 0, 141)), owning_building_guid = 32, terminal_guid = 2920) + LocalObject( + 279, + Terminal.Constructor(Vector3(5819.766f, 2315.665f, 96.6629f), dropship_vehicle_terminal), + owning_building_guid = 32 + ) + LocalObject( + 278, + VehicleSpawnPad.Constructor(Vector3(5812.526f, 2338.031f, 90.98689f), dropship_pad_doors, Vector3(0, 0, 51)), + owning_building_guid = 32, + terminal_guid = 279 + ) + LocalObject( + 1960, + Terminal.Constructor(Vector3(5842.749f, 2192.255f, 104.8139f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1961, + Terminal.Constructor(Vector3(5843.069f, 2195.446f, 104.8139f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1962, + Terminal.Constructor(Vector3(5845.062f, 2173.99f, 97.41889f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1963, + Terminal.Constructor(Vector3(5845.834f, 2192.03f, 104.8139f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1964, + Terminal.Constructor(Vector3(5846.232f, 2195.131f, 104.8139f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1965, + Terminal.Constructor(Vector3(5862.937f, 2247.696f, 82.6489f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1966, + Terminal.Constructor(Vector3(5865.321f, 2244.751f, 82.6489f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1967, + Terminal.Constructor(Vector3(5867.669f, 2241.852f, 82.6489f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2720, + Terminal.Constructor(Vector3(5821.097f, 2306.433f, 97.6069f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2721, + Terminal.Constructor(Vector3(5850.48f, 2241.334f, 83.19289f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2722, + Terminal.Constructor(Vector3(5851.971f, 2178.378f, 97.6759f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2723, + Terminal.Constructor(Vector3(5855.064f, 2235.668f, 83.19289f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2724, + Terminal.Constructor(Vector3(5858.29f, 2286.414f, 75.08689f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2725, + Terminal.Constructor(Vector3(5859.656f, 2230.004f, 83.19289f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2726, + Terminal.Constructor(Vector3(5870.381f, 2285.226f, 82.61589f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2727, + Terminal.Constructor(Vector3(5888.154f, 2237.854f, 75.08689f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2728, + Terminal.Constructor(Vector3(5895.554f, 2254.14f, 82.61589f), spawn_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2920, + Terminal.Constructor(Vector3(5783.76f, 2293.104f, 93.7459f), ground_vehicle_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1814, + VehicleSpawnPad.Constructor(Vector3(5792.408f, 2282.564f, 89.58789f), mb_pad_creation, Vector3(0, 0, 141)), + owning_building_guid = 32, + terminal_guid = 2920 + ) LocalObject(2529, ResourceSilo.Constructor(Vector3(5810.083f, 2388.535f, 98.07589f)), owning_building_guid = 32) - LocalObject(2605, SpawnTube.Constructor(Vector3(5849.002f, 2241.989f, 81.05889f), Vector3(0, 0, 321)), owning_building_guid = 32) - LocalObject(2606, SpawnTube.Constructor(Vector3(5853.588f, 2236.325f, 81.05889f), Vector3(0, 0, 321)), owning_building_guid = 32) - LocalObject(2607, SpawnTube.Constructor(Vector3(5858.177f, 2230.659f, 81.05889f), Vector3(0, 0, 321)), owning_building_guid = 32) - LocalObject(1837, ProximityTerminal.Constructor(Vector3(5856.913f, 2176.016f, 91.05889f), medical_terminal), owning_building_guid = 32) - LocalObject(1838, ProximityTerminal.Constructor(Vector3(5869.442f, 2261.575f, 73.55889f), medical_terminal), owning_building_guid = 32) - LocalObject(2186, ProximityTerminal.Constructor(Vector3(5764.576f, 2258.723f, 99.3689f), pad_landing_frame), owning_building_guid = 32) - LocalObject(2187, Terminal.Constructor(Vector3(5764.576f, 2258.723f, 99.3689f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(2189, ProximityTerminal.Constructor(Vector3(5806.196f, 2233.324f, 96.65289f), pad_landing_frame), owning_building_guid = 32) - LocalObject(2190, Terminal.Constructor(Vector3(5806.196f, 2233.324f, 96.65289f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(2192, ProximityTerminal.Constructor(Vector3(5869.215f, 2238.592f, 103.8349f), pad_landing_frame), owning_building_guid = 32) - LocalObject(2193, Terminal.Constructor(Vector3(5869.215f, 2238.592f, 103.8349f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(2195, ProximityTerminal.Constructor(Vector3(5886.392f, 2273.421f, 99.3819f), pad_landing_frame), owning_building_guid = 32) - LocalObject(2196, Terminal.Constructor(Vector3(5886.392f, 2273.421f, 99.3819f), air_rearm_terminal), owning_building_guid = 32) - LocalObject(2501, ProximityTerminal.Constructor(Vector3(5766.25f, 2189.105f, 90.70889f), repair_silo), owning_building_guid = 32) - LocalObject(2502, Terminal.Constructor(Vector3(5766.25f, 2189.105f, 90.70889f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(2505, ProximityTerminal.Constructor(Vector3(5896.477f, 2298.306f, 90.70889f), repair_silo), owning_building_guid = 32) - LocalObject(2506, Terminal.Constructor(Vector3(5896.477f, 2298.306f, 90.70889f), ground_rearm_terminal), owning_building_guid = 32) - LocalObject(1775, FacilityTurret.Constructor(Vector3(5734.792f, 2208.502f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 2605, + SpawnTube.Constructor(Vector3(5849.002f, 2241.989f, 81.05889f), Vector3(0, 0, 321)), + owning_building_guid = 32 + ) + LocalObject( + 2606, + SpawnTube.Constructor(Vector3(5853.588f, 2236.325f, 81.05889f), Vector3(0, 0, 321)), + owning_building_guid = 32 + ) + LocalObject( + 2607, + SpawnTube.Constructor(Vector3(5858.177f, 2230.659f, 81.05889f), Vector3(0, 0, 321)), + owning_building_guid = 32 + ) + LocalObject( + 1837, + ProximityTerminal.Constructor(Vector3(5856.913f, 2176.016f, 91.05889f), medical_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1838, + ProximityTerminal.Constructor(Vector3(5869.442f, 2261.575f, 73.55889f), medical_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2186, + ProximityTerminal.Constructor(Vector3(5764.576f, 2258.723f, 99.3689f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 2187, + Terminal.Constructor(Vector3(5764.576f, 2258.723f, 99.3689f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2189, + ProximityTerminal.Constructor(Vector3(5806.196f, 2233.324f, 96.65289f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 2190, + Terminal.Constructor(Vector3(5806.196f, 2233.324f, 96.65289f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2192, + ProximityTerminal.Constructor(Vector3(5869.215f, 2238.592f, 103.8349f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 2193, + Terminal.Constructor(Vector3(5869.215f, 2238.592f, 103.8349f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2195, + ProximityTerminal.Constructor(Vector3(5886.392f, 2273.421f, 99.3819f), pad_landing_frame), + owning_building_guid = 32 + ) + LocalObject( + 2196, + Terminal.Constructor(Vector3(5886.392f, 2273.421f, 99.3819f), air_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2501, + ProximityTerminal.Constructor(Vector3(5766.25f, 2189.105f, 90.70889f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 2502, + Terminal.Constructor(Vector3(5766.25f, 2189.105f, 90.70889f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 2505, + ProximityTerminal.Constructor(Vector3(5896.477f, 2298.306f, 90.70889f), repair_silo), + owning_building_guid = 32 + ) + LocalObject( + 2506, + Terminal.Constructor(Vector3(5896.477f, 2298.306f, 90.70889f), ground_rearm_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1775, + FacilityTurret.Constructor(Vector3(5734.792f, 2208.502f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1775, 5036) - LocalObject(1776, FacilityTurret.Constructor(Vector3(5740.5f, 2273.029f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1776, + FacilityTurret.Constructor(Vector3(5740.5f, 2273.029f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1776, 5037) - LocalObject(1777, FacilityTurret.Constructor(Vector3(5750.325f, 2356.243f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1777, + FacilityTurret.Constructor(Vector3(5750.325f, 2356.243f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1777, 5038) - LocalObject(1778, FacilityTurret.Constructor(Vector3(5819.581f, 2410.822f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1778, + FacilityTurret.Constructor(Vector3(5819.581f, 2410.822f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1778, 5039) - LocalObject(1779, FacilityTurret.Constructor(Vector3(5832.318f, 2089.898f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1779, + FacilityTurret.Constructor(Vector3(5832.318f, 2089.898f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1779, 5040) - LocalObject(1780, FacilityTurret.Constructor(Vector3(5913.002f, 2153.731f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1780, + FacilityTurret.Constructor(Vector3(5913.002f, 2153.731f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1780, 5041) - LocalObject(1781, FacilityTurret.Constructor(Vector3(5920.167f, 2211.795f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1781, + FacilityTurret.Constructor(Vector3(5920.167f, 2211.795f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1781, 5042) - LocalObject(1782, FacilityTurret.Constructor(Vector3(5926.362f, 2280.792f, 99.56689f), manned_turret), owning_building_guid = 32) + LocalObject( + 1782, + FacilityTurret.Constructor(Vector3(5926.362f, 2280.792f, 99.56689f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(1782, 5043) - LocalObject(2264, Painbox.Constructor(Vector3(5822.298f, 2262.563f, 77.45319f), painbox), owning_building_guid = 32) - LocalObject(2278, Painbox.Constructor(Vector3(5860.794f, 2242.719f, 85.0864f), painbox_continuous), owning_building_guid = 32) - LocalObject(2292, Painbox.Constructor(Vector3(5833.722f, 2270.344f, 76.69109f), painbox_door_radius), owning_building_guid = 32) - LocalObject(2330, Painbox.Constructor(Vector3(5850.665f, 2252.11f, 83.95889f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(2331, Painbox.Constructor(Vector3(5865.77f, 2256.373f, 84.38919f), painbox_door_radius_continuous), owning_building_guid = 32) - LocalObject(2332, Painbox.Constructor(Vector3(5868.096f, 2229.302f, 83.48809f), painbox_door_radius_continuous), owning_building_guid = 32) + LocalObject( + 2264, + Painbox.Constructor(Vector3(5822.298f, 2262.563f, 77.45319f), painbox), + owning_building_guid = 32 + ) + LocalObject( + 2278, + Painbox.Constructor(Vector3(5860.794f, 2242.719f, 85.0864f), painbox_continuous), + owning_building_guid = 32 + ) + LocalObject( + 2292, + Painbox.Constructor(Vector3(5833.722f, 2270.344f, 76.69109f), painbox_door_radius), + owning_building_guid = 32 + ) + LocalObject( + 2330, + Painbox.Constructor(Vector3(5850.665f, 2252.11f, 83.95889f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 2331, + Painbox.Constructor(Vector3(5865.77f, 2256.373f, 84.38919f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 2332, + Painbox.Constructor(Vector3(5868.096f, 2229.302f, 83.48809f), painbox_door_radius_continuous), + owning_building_guid = 32 + ) LocalObject(309, Generator.Constructor(Vector3(5819.254f, 2259.993f, 72.26489f)), owning_building_guid = 32) - LocalObject(295, Terminal.Constructor(Vector3(5825.591f, 2265.185f, 73.55889f), gen_control), owning_building_guid = 32) + LocalObject( + 295, + Terminal.Constructor(Vector3(5825.591f, 2265.185f, 73.55889f), gen_control), + owning_building_guid = 32 + ) } Building5() def Building5(): Unit = { // Name: Drakulu Type: cryo_facility GUID: 35, MapID: 5 - LocalBuilding("Drakulu", 35, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3746f, 2702f, 151.0666f), Vector3(0f, 0f, 266f), cryo_facility))) - LocalObject(215, CaptureTerminal.Constructor(Vector3(3807.081f, 2725.886f, 141.0666f), capture_terminal), owning_building_guid = 35) + LocalBuilding( + "Drakulu", + 35, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3746f, 2702f, 151.0666f), + Vector3(0f, 0f, 266f), + cryo_facility + ) + ) + ) + LocalObject( + 215, + CaptureTerminal.Constructor(Vector3(3807.081f, 2725.886f, 141.0666f), capture_terminal), + owning_building_guid = 35 + ) LocalObject(390, Door.Constructor(Vector3(3651.992f, 2676.496f, 152.5876f)), owning_building_guid = 35) LocalObject(393, Door.Constructor(Vector3(3661.636f, 2684.342f, 152.6176f)), owning_building_guid = 35) LocalObject(394, Door.Constructor(Vector3(3662.905f, 2702.491f, 160.5816f)), owning_building_guid = 35) @@ -1043,15 +2929,60 @@ object Map09 { // Searhus LocalObject(2765, Door.Constructor(Vector3(3751.393f, 2696.938f, 142.9206f)), owning_building_guid = 35) LocalObject(2766, Door.Constructor(Vector3(3758.668f, 2696.43f, 142.9206f)), owning_building_guid = 35) LocalObject(2767, Door.Constructor(Vector3(3765.939f, 2695.921f, 142.9206f)), owning_building_guid = 35) - LocalObject(992, IFFLock.Constructor(Vector3(3773.7f, 2699.291f, 152.5486f), Vector3(0, 0, 94)), owning_building_guid = 35, door_guid = 940) - LocalObject(1073, IFFLock.Constructor(Vector3(3653.972f, 2675.541f, 152.5186f), Vector3(0, 0, 184)), owning_building_guid = 35, door_guid = 390) - LocalObject(1082, IFFLock.Constructor(Vector3(3744.245f, 2688.518f, 142.4026f), Vector3(0, 0, 274)), owning_building_guid = 35, door_guid = 701) - LocalObject(1084, IFFLock.Constructor(Vector3(3746.804f, 2678.697f, 134.9026f), Vector3(0, 0, 4)), owning_building_guid = 35, door_guid = 705) - LocalObject(1085, IFFLock.Constructor(Vector3(3749.812f, 2699.775f, 162.5186f), Vector3(0, 0, 94)), owning_building_guid = 35, door_guid = 411) - LocalObject(1088, IFFLock.Constructor(Vector3(3769.049f, 2715.611f, 162.5186f), Vector3(0, 0, 184)), owning_building_guid = 35, door_guid = 418) - LocalObject(1089, IFFLock.Constructor(Vector3(3770.022f, 2689.867f, 142.4026f), Vector3(0, 0, 94)), owning_building_guid = 35, door_guid = 716) - LocalObject(1098, IFFLock.Constructor(Vector3(3814.564f, 2730.226f, 142.4026f), Vector3(0, 0, 4)), owning_building_guid = 35, door_guid = 735) - LocalObject(1099, IFFLock.Constructor(Vector3(3817.02f, 2720.277f, 142.4026f), Vector3(0, 0, 184)), owning_building_guid = 35, door_guid = 734) + LocalObject( + 992, + IFFLock.Constructor(Vector3(3773.7f, 2699.291f, 152.5486f), Vector3(0, 0, 94)), + owning_building_guid = 35, + door_guid = 940 + ) + LocalObject( + 1073, + IFFLock.Constructor(Vector3(3653.972f, 2675.541f, 152.5186f), Vector3(0, 0, 184)), + owning_building_guid = 35, + door_guid = 390 + ) + LocalObject( + 1082, + IFFLock.Constructor(Vector3(3744.245f, 2688.518f, 142.4026f), Vector3(0, 0, 274)), + owning_building_guid = 35, + door_guid = 701 + ) + LocalObject( + 1084, + IFFLock.Constructor(Vector3(3746.804f, 2678.697f, 134.9026f), Vector3(0, 0, 4)), + owning_building_guid = 35, + door_guid = 705 + ) + LocalObject( + 1085, + IFFLock.Constructor(Vector3(3749.812f, 2699.775f, 162.5186f), Vector3(0, 0, 94)), + owning_building_guid = 35, + door_guid = 411 + ) + LocalObject( + 1088, + IFFLock.Constructor(Vector3(3769.049f, 2715.611f, 162.5186f), Vector3(0, 0, 184)), + owning_building_guid = 35, + door_guid = 418 + ) + LocalObject( + 1089, + IFFLock.Constructor(Vector3(3770.022f, 2689.867f, 142.4026f), Vector3(0, 0, 94)), + owning_building_guid = 35, + door_guid = 716 + ) + LocalObject( + 1098, + IFFLock.Constructor(Vector3(3814.564f, 2730.226f, 142.4026f), Vector3(0, 0, 4)), + owning_building_guid = 35, + door_guid = 735 + ) + LocalObject( + 1099, + IFFLock.Constructor(Vector3(3817.02f, 2720.277f, 142.4026f), Vector3(0, 0, 184)), + owning_building_guid = 35, + door_guid = 734 + ) LocalObject(1356, Locker.Constructor(Vector3(3745.697f, 2663.83f, 140.9746f)), owning_building_guid = 35) LocalObject(1357, Locker.Constructor(Vector3(3745.77f, 2664.883f, 140.9746f)), owning_building_guid = 35) LocalObject(1358, Locker.Constructor(Vector3(3745.844f, 2665.94f, 140.9746f)), owning_building_guid = 35) @@ -1081,76 +3012,309 @@ object Map09 { // Searhus LocalObject(1637, Locker.Constructor(Vector3(3739.2f, 2684.171f, 150.8376f)), owning_building_guid = 35) LocalObject(1638, Locker.Constructor(Vector3(3741.716f, 2683.995f, 151.0666f)), owning_building_guid = 35) LocalObject(1639, Locker.Constructor(Vector3(3742.747f, 2683.923f, 151.0666f)), owning_building_guid = 35) - LocalObject(225, Terminal.Constructor(Vector3(3791.542f, 2682.351f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(226, Terminal.Constructor(Vector3(3792.428f, 2695.02f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(227, Terminal.Constructor(Vector3(3792.886f, 2680.806f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(228, Terminal.Constructor(Vector3(3793.974f, 2696.364f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(229, Terminal.Constructor(Vector3(3800.193f, 2680.295f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(230, Terminal.Constructor(Vector3(3801.281f, 2695.853f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(231, Terminal.Constructor(Vector3(3801.739f, 2681.638f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(232, Terminal.Constructor(Vector3(3802.624f, 2694.307f, 141.0566f), cert_terminal), owning_building_guid = 35) - LocalObject(1887, Terminal.Constructor(Vector3(3752.089f, 2682.875f, 142.6566f), order_terminal), owning_building_guid = 35) - LocalObject(1888, Terminal.Constructor(Vector3(3755.811f, 2682.615f, 142.6566f), order_terminal), owning_building_guid = 35) - LocalObject(1889, Terminal.Constructor(Vector3(3756.202f, 2711.339f, 152.3616f), order_terminal), owning_building_guid = 35) - LocalObject(1890, Terminal.Constructor(Vector3(3759.59f, 2682.35f, 142.6566f), order_terminal), owning_building_guid = 35) - LocalObject(2655, Terminal.Constructor(Vector3(3690.67f, 2721.998f, 145.1796f), spawn_terminal), owning_building_guid = 35) - LocalObject(2662, Terminal.Constructor(Vector3(3732.259f, 2701.051f, 152.6456f), spawn_terminal), owning_building_guid = 35) - LocalObject(2663, Terminal.Constructor(Vector3(3748.199f, 2741.944f, 142.6796f), spawn_terminal), owning_building_guid = 35) - LocalObject(2664, Terminal.Constructor(Vector3(3748.888f, 2696.815f, 143.2006f), spawn_terminal), owning_building_guid = 35) - LocalObject(2665, Terminal.Constructor(Vector3(3756.163f, 2696.31f, 143.2006f), spawn_terminal), owning_building_guid = 35) - LocalObject(2666, Terminal.Constructor(Vector3(3763.433f, 2695.799f, 143.2006f), spawn_terminal), owning_building_guid = 35) - LocalObject(2674, Terminal.Constructor(Vector3(3809.885f, 2698.127f, 142.6796f), spawn_terminal), owning_building_guid = 35) - LocalObject(2910, Terminal.Constructor(Vector3(3680.343f, 2668.871f, 153.3716f), vehicle_terminal_combined), owning_building_guid = 35) - LocalObject(1800, VehicleSpawnPad.Constructor(Vector3(3681.205f, 2682.483f, 149.2136f), mb_pad_creation, Vector3(0, 0, 4)), owning_building_guid = 35, terminal_guid = 2910) + LocalObject( + 225, + Terminal.Constructor(Vector3(3791.542f, 2682.351f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(3792.428f, 2695.02f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 227, + Terminal.Constructor(Vector3(3792.886f, 2680.806f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(3793.974f, 2696.364f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(3800.193f, 2680.295f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 230, + Terminal.Constructor(Vector3(3801.281f, 2695.853f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(3801.739f, 2681.638f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(3802.624f, 2694.307f, 141.0566f), cert_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1887, + Terminal.Constructor(Vector3(3752.089f, 2682.875f, 142.6566f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1888, + Terminal.Constructor(Vector3(3755.811f, 2682.615f, 142.6566f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1889, + Terminal.Constructor(Vector3(3756.202f, 2711.339f, 152.3616f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1890, + Terminal.Constructor(Vector3(3759.59f, 2682.35f, 142.6566f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2655, + Terminal.Constructor(Vector3(3690.67f, 2721.998f, 145.1796f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2662, + Terminal.Constructor(Vector3(3732.259f, 2701.051f, 152.6456f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2663, + Terminal.Constructor(Vector3(3748.199f, 2741.944f, 142.6796f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2664, + Terminal.Constructor(Vector3(3748.888f, 2696.815f, 143.2006f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2665, + Terminal.Constructor(Vector3(3756.163f, 2696.31f, 143.2006f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2666, + Terminal.Constructor(Vector3(3763.433f, 2695.799f, 143.2006f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2674, + Terminal.Constructor(Vector3(3809.885f, 2698.127f, 142.6796f), spawn_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2910, + Terminal.Constructor(Vector3(3680.343f, 2668.871f, 153.3716f), vehicle_terminal_combined), + owning_building_guid = 35 + ) + LocalObject( + 1800, + VehicleSpawnPad.Constructor(Vector3(3681.205f, 2682.483f, 149.2136f), mb_pad_creation, Vector3(0, 0, 4)), + owning_building_guid = 35, + terminal_guid = 2910 + ) LocalObject(2521, ResourceSilo.Constructor(Vector3(3800.932f, 2758.573f, 158.0836f)), owning_building_guid = 35) - LocalObject(2560, SpawnTube.Constructor(Vector3(3750.376f, 2697.451f, 141.0666f), Vector3(0, 0, 94)), owning_building_guid = 35) - LocalObject(2561, SpawnTube.Constructor(Vector3(3757.65f, 2696.942f, 141.0666f), Vector3(0, 0, 94)), owning_building_guid = 35) - LocalObject(2562, SpawnTube.Constructor(Vector3(3764.92f, 2696.434f, 141.0666f), Vector3(0, 0, 94)), owning_building_guid = 35) - LocalObject(153, ProximityTerminal.Constructor(Vector3(3738.771f, 2700.518f, 150.8766f), adv_med_terminal), owning_building_guid = 35) - LocalObject(1822, ProximityTerminal.Constructor(Vector3(3748.014f, 2674.15f, 141.0666f), medical_terminal), owning_building_guid = 35) - LocalObject(2072, ProximityTerminal.Constructor(Vector3(3677.071f, 2708.626f, 159.4186f), pad_landing_frame), owning_building_guid = 35) - LocalObject(2073, Terminal.Constructor(Vector3(3677.071f, 2708.626f, 159.4186f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(2075, ProximityTerminal.Constructor(Vector3(3685.476f, 2724.394f, 161.3596f), pad_landing_frame), owning_building_guid = 35) - LocalObject(2076, Terminal.Constructor(Vector3(3685.476f, 2724.394f, 161.3596f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(2096, ProximityTerminal.Constructor(Vector3(3791.051f, 2697.523f, 161.3986f), pad_landing_frame), owning_building_guid = 35) - LocalObject(2097, Terminal.Constructor(Vector3(3791.051f, 2697.523f, 161.3986f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(2102, ProximityTerminal.Constructor(Vector3(3800.56f, 2713.12f, 159.4086f), pad_landing_frame), owning_building_guid = 35) - LocalObject(2103, Terminal.Constructor(Vector3(3800.56f, 2713.12f, 159.4086f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(2421, ProximityTerminal.Constructor(Vector3(3663.835f, 2743.308f, 150.8166f), repair_silo), owning_building_guid = 35) - LocalObject(2422, Terminal.Constructor(Vector3(3663.835f, 2743.308f, 150.8166f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(2433, ProximityTerminal.Constructor(Vector3(3758.158f, 2648.492f, 150.8166f), repair_silo), owning_building_guid = 35) - LocalObject(2434, Terminal.Constructor(Vector3(3758.158f, 2648.492f, 150.8166f), ground_rearm_terminal), owning_building_guid = 35) - LocalObject(1704, FacilityTurret.Constructor(Vector3(3645.168f, 2645.27f, 159.4686f), manned_turret), owning_building_guid = 35) + LocalObject( + 2560, + SpawnTube.Constructor(Vector3(3750.376f, 2697.451f, 141.0666f), Vector3(0, 0, 94)), + owning_building_guid = 35 + ) + LocalObject( + 2561, + SpawnTube.Constructor(Vector3(3757.65f, 2696.942f, 141.0666f), Vector3(0, 0, 94)), + owning_building_guid = 35 + ) + LocalObject( + 2562, + SpawnTube.Constructor(Vector3(3764.92f, 2696.434f, 141.0666f), Vector3(0, 0, 94)), + owning_building_guid = 35 + ) + LocalObject( + 153, + ProximityTerminal.Constructor(Vector3(3738.771f, 2700.518f, 150.8766f), adv_med_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1822, + ProximityTerminal.Constructor(Vector3(3748.014f, 2674.15f, 141.0666f), medical_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2072, + ProximityTerminal.Constructor(Vector3(3677.071f, 2708.626f, 159.4186f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 2073, + Terminal.Constructor(Vector3(3677.071f, 2708.626f, 159.4186f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2075, + ProximityTerminal.Constructor(Vector3(3685.476f, 2724.394f, 161.3596f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 2076, + Terminal.Constructor(Vector3(3685.476f, 2724.394f, 161.3596f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2096, + ProximityTerminal.Constructor(Vector3(3791.051f, 2697.523f, 161.3986f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 2097, + Terminal.Constructor(Vector3(3791.051f, 2697.523f, 161.3986f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2102, + ProximityTerminal.Constructor(Vector3(3800.56f, 2713.12f, 159.4086f), pad_landing_frame), + owning_building_guid = 35 + ) + LocalObject( + 2103, + Terminal.Constructor(Vector3(3800.56f, 2713.12f, 159.4086f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2421, + ProximityTerminal.Constructor(Vector3(3663.835f, 2743.308f, 150.8166f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 2422, + Terminal.Constructor(Vector3(3663.835f, 2743.308f, 150.8166f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 2433, + ProximityTerminal.Constructor(Vector3(3758.158f, 2648.492f, 150.8166f), repair_silo), + owning_building_guid = 35 + ) + LocalObject( + 2434, + Terminal.Constructor(Vector3(3758.158f, 2648.492f, 150.8166f), ground_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1704, + FacilityTurret.Constructor(Vector3(3645.168f, 2645.27f, 159.4686f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1704, 5044) - LocalObject(1705, FacilityTurret.Constructor(Vector3(3654.609f, 2780.166f, 159.4686f), manned_turret), owning_building_guid = 35) + LocalObject( + 1705, + FacilityTurret.Constructor(Vector3(3654.609f, 2780.166f, 159.4686f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1705, 5045) - LocalObject(1711, FacilityTurret.Constructor(Vector3(3779.881f, 2634.659f, 159.4686f), manned_turret), owning_building_guid = 35) + LocalObject( + 1711, + FacilityTurret.Constructor(Vector3(3779.881f, 2634.659f, 159.4686f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1711, 5046) - LocalObject(1714, FacilityTurret.Constructor(Vector3(3825.895f, 2674.695f, 159.4686f), manned_turret), owning_building_guid = 35) + LocalObject( + 1714, + FacilityTurret.Constructor(Vector3(3825.895f, 2674.695f, 159.4686f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1714, 5047) - LocalObject(1715, FacilityTurret.Constructor(Vector3(3831.271f, 2767.82f, 159.4686f), manned_turret), owning_building_guid = 35) + LocalObject( + 1715, + FacilityTurret.Constructor(Vector3(3831.271f, 2767.82f, 159.4686f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(1715, 5048) - LocalObject(967, ImplantTerminalMech.Constructor(Vector3(3789.558f, 2688.864f, 140.5436f)), owning_building_guid = 35) - LocalObject(959, Terminal.Constructor(Vector3(3789.576f, 2688.862f, 140.5436f), implant_terminal_interface), owning_building_guid = 35) + LocalObject( + 967, + ImplantTerminalMech.Constructor(Vector3(3789.558f, 2688.864f, 140.5436f)), + owning_building_guid = 35 + ) + LocalObject( + 959, + Terminal.Constructor(Vector3(3789.576f, 2688.862f, 140.5436f), implant_terminal_interface), + owning_building_guid = 35 + ) TerminalToInterface(967, 959) - LocalObject(968, ImplantTerminalMech.Constructor(Vector3(3804.877f, 2687.804f, 140.5436f)), owning_building_guid = 35) - LocalObject(960, Terminal.Constructor(Vector3(3804.859f, 2687.806f, 140.5436f), implant_terminal_interface), owning_building_guid = 35) + LocalObject( + 968, + ImplantTerminalMech.Constructor(Vector3(3804.877f, 2687.804f, 140.5436f)), + owning_building_guid = 35 + ) + LocalObject( + 960, + Terminal.Constructor(Vector3(3804.859f, 2687.806f, 140.5436f), implant_terminal_interface), + owning_building_guid = 35 + ) TerminalToInterface(968, 960) - LocalObject(2255, Painbox.Constructor(Vector3(3725.991f, 2697.792f, 165.0954f), painbox), owning_building_guid = 35) - LocalObject(2269, Painbox.Constructor(Vector3(3752.664f, 2686.745f, 145.1365f), painbox_continuous), owning_building_guid = 35) - LocalObject(2283, Painbox.Constructor(Vector3(3740.519f, 2698.191f, 165.3005f), painbox_door_radius), owning_building_guid = 35) - LocalObject(2303, Painbox.Constructor(Vector3(3743.063f, 2691.64f, 143.4225f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(2304, Painbox.Constructor(Vector3(3763.059f, 2672.857f, 144.6075f), painbox_door_radius_continuous), owning_building_guid = 35) - LocalObject(2305, Painbox.Constructor(Vector3(3770.895f, 2687.713f, 142.7808f), painbox_door_radius_continuous), owning_building_guid = 35) + LocalObject( + 2255, + Painbox.Constructor(Vector3(3725.991f, 2697.792f, 165.0954f), painbox), + owning_building_guid = 35 + ) + LocalObject( + 2269, + Painbox.Constructor(Vector3(3752.664f, 2686.745f, 145.1365f), painbox_continuous), + owning_building_guid = 35 + ) + LocalObject( + 2283, + Painbox.Constructor(Vector3(3740.519f, 2698.191f, 165.3005f), painbox_door_radius), + owning_building_guid = 35 + ) + LocalObject( + 2303, + Painbox.Constructor(Vector3(3743.063f, 2691.64f, 143.4225f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 2304, + Painbox.Constructor(Vector3(3763.059f, 2672.857f, 144.6075f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 2305, + Painbox.Constructor(Vector3(3770.895f, 2687.713f, 142.7808f), painbox_door_radius_continuous), + owning_building_guid = 35 + ) LocalObject(300, Generator.Constructor(Vector3(3722.222f, 2699.628f, 159.7726f)), owning_building_guid = 35) - LocalObject(286, Terminal.Constructor(Vector3(3730.397f, 2699.103f, 161.0666f), gen_control), owning_building_guid = 35) + LocalObject( + 286, + Terminal.Constructor(Vector3(3730.397f, 2699.103f, 161.0666f), gen_control), + owning_building_guid = 35 + ) } Building6() def Building6(): Unit = { // Name: Hiro Type: cryo_facility GUID: 38, MapID: 6 - LocalBuilding("Hiro", 38, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4570f, 5696f, 190.0754f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(218, CaptureTerminal.Constructor(Vector3(4541.911f, 5755.266f, 180.0754f), capture_terminal), owning_building_guid = 38) + LocalBuilding( + "Hiro", + 38, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4570f, 5696f, 190.0754f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 218, + CaptureTerminal.Constructor(Vector3(4541.911f, 5755.266f, 180.0754f), capture_terminal), + owning_building_guid = 38 + ) LocalObject(477, Door.Constructor(Vector3(4511.023f, 5700.5f, 191.6264f)), owning_building_guid = 38) LocalObject(478, Door.Constructor(Vector3(4511.023f, 5718.693f, 199.5904f)), owning_building_guid = 38) LocalObject(479, Door.Constructor(Vector3(4527.674f, 5763.803f, 191.6264f)), owning_building_guid = 38) @@ -1191,15 +3355,60 @@ object Map09 { // Searhus LocalObject(2783, Door.Constructor(Vector3(4574.673f, 5701.733f, 181.9294f)), owning_building_guid = 38) LocalObject(2784, Door.Constructor(Vector3(4574.673f, 5709.026f, 181.9294f)), owning_building_guid = 38) LocalObject(2785, Door.Constructor(Vector3(4574.673f, 5716.315f, 181.9294f)), owning_building_guid = 38) - LocalObject(996, IFFLock.Constructor(Vector3(4570.77f, 5723.822f, 191.5574f), Vector3(0, 0, 0)), owning_building_guid = 38, door_guid = 944) - LocalObject(1131, IFFLock.Constructor(Vector3(4537.06f, 5762.428f, 181.4114f), Vector3(0, 0, 270)), owning_building_guid = 38, door_guid = 782) - LocalObject(1132, IFFLock.Constructor(Vector3(4546.813f, 5765.572f, 181.4114f), Vector3(0, 0, 90)), owning_building_guid = 38, door_guid = 783) - LocalObject(1133, IFFLock.Constructor(Vector3(4554.814f, 5718.043f, 201.5274f), Vector3(0, 0, 90)), owning_building_guid = 38, door_guid = 481) - LocalObject(1134, IFFLock.Constructor(Vector3(4571.954f, 5699.958f, 201.5274f), Vector3(0, 0, 0)), owning_building_guid = 38, door_guid = 484) - LocalObject(1136, IFFLock.Constructor(Vector3(4580.428f, 5720.81f, 181.4114f), Vector3(0, 0, 0)), owning_building_guid = 38, door_guid = 798) - LocalObject(1137, IFFLock.Constructor(Vector3(4583.572f, 5695.19f, 181.4114f), Vector3(0, 0, 180)), owning_building_guid = 38, door_guid = 797) - LocalObject(1140, IFFLock.Constructor(Vector3(4593.19f, 5698.428f, 173.9114f), Vector3(0, 0, 270)), owning_building_guid = 38, door_guid = 805) - LocalObject(1141, IFFLock.Constructor(Vector3(4602.814f, 5606.042f, 191.5274f), Vector3(0, 0, 90)), owning_building_guid = 38, door_guid = 489) + LocalObject( + 996, + IFFLock.Constructor(Vector3(4570.77f, 5723.822f, 191.5574f), Vector3(0, 0, 0)), + owning_building_guid = 38, + door_guid = 944 + ) + LocalObject( + 1131, + IFFLock.Constructor(Vector3(4537.06f, 5762.428f, 181.4114f), Vector3(0, 0, 270)), + owning_building_guid = 38, + door_guid = 782 + ) + LocalObject( + 1132, + IFFLock.Constructor(Vector3(4546.813f, 5765.572f, 181.4114f), Vector3(0, 0, 90)), + owning_building_guid = 38, + door_guid = 783 + ) + LocalObject( + 1133, + IFFLock.Constructor(Vector3(4554.814f, 5718.043f, 201.5274f), Vector3(0, 0, 90)), + owning_building_guid = 38, + door_guid = 481 + ) + LocalObject( + 1134, + IFFLock.Constructor(Vector3(4571.954f, 5699.958f, 201.5274f), Vector3(0, 0, 0)), + owning_building_guid = 38, + door_guid = 484 + ) + LocalObject( + 1136, + IFFLock.Constructor(Vector3(4580.428f, 5720.81f, 181.4114f), Vector3(0, 0, 0)), + owning_building_guid = 38, + door_guid = 798 + ) + LocalObject( + 1137, + IFFLock.Constructor(Vector3(4583.572f, 5695.19f, 181.4114f), Vector3(0, 0, 180)), + owning_building_guid = 38, + door_guid = 797 + ) + LocalObject( + 1140, + IFFLock.Constructor(Vector3(4593.19f, 5698.428f, 173.9114f), Vector3(0, 0, 270)), + owning_building_guid = 38, + door_guid = 805 + ) + LocalObject( + 1141, + IFFLock.Constructor(Vector3(4602.814f, 5606.042f, 191.5274f), Vector3(0, 0, 90)), + owning_building_guid = 38, + door_guid = 489 + ) LocalObject(1441, Locker.Constructor(Vector3(4585.563f, 5698.141f, 180.3364f)), owning_building_guid = 38) LocalObject(1442, Locker.Constructor(Vector3(4586.727f, 5698.141f, 180.3364f)), owning_building_guid = 38) LocalObject(1443, Locker.Constructor(Vector3(4587.874f, 5698.141f, 180.3364f)), owning_building_guid = 38) @@ -1229,76 +3438,309 @@ object Map09 { // Searhus LocalObject(1645, Locker.Constructor(Vector3(4588.26f, 5690.46f, 189.8464f)), owning_building_guid = 38) LocalObject(1646, Locker.Constructor(Vector3(4588.26f, 5692.982f, 190.0754f)), owning_building_guid = 38) LocalObject(1647, Locker.Constructor(Vector3(4588.26f, 5694.016f, 190.0754f)), owning_building_guid = 38) - LocalObject(233, Terminal.Constructor(Vector3(4572.276f, 5744.25f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(234, Terminal.Constructor(Vector3(4572.276f, 5751.575f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(235, Terminal.Constructor(Vector3(4573.724f, 5742.802f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(236, Terminal.Constructor(Vector3(4573.724f, 5753.023f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(237, Terminal.Constructor(Vector3(4586.424f, 5742.802f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(238, Terminal.Constructor(Vector3(4586.424f, 5753.023f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(239, Terminal.Constructor(Vector3(4587.872f, 5744.25f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(240, Terminal.Constructor(Vector3(4587.872f, 5751.575f, 180.0654f), cert_terminal), owning_building_guid = 38) - LocalObject(1914, Terminal.Constructor(Vector3(4559.972f, 5705.526f, 191.3704f), order_terminal), owning_building_guid = 38) - LocalObject(1915, Terminal.Constructor(Vector3(4588.654f, 5703.408f, 181.6654f), order_terminal), owning_building_guid = 38) - LocalObject(1916, Terminal.Constructor(Vector3(4588.654f, 5707.139f, 181.6654f), order_terminal), owning_building_guid = 38) - LocalObject(1917, Terminal.Constructor(Vector3(4588.654f, 5710.928f, 181.6654f), order_terminal), owning_building_guid = 38) - LocalObject(2688, Terminal.Constructor(Vector3(4530f, 5695.407f, 181.6884f), spawn_terminal), owning_building_guid = 38) - LocalObject(2689, Terminal.Constructor(Vector3(4553.91f, 5639.41f, 184.1884f), spawn_terminal), owning_building_guid = 38) - LocalObject(2690, Terminal.Constructor(Vector3(4569.407f, 5760f, 181.6884f), spawn_terminal), owning_building_guid = 38) - LocalObject(2691, Terminal.Constructor(Vector3(4571.905f, 5682.359f, 191.6544f), spawn_terminal), owning_building_guid = 38) - LocalObject(2692, Terminal.Constructor(Vector3(4574.971f, 5699.243f, 182.2094f), spawn_terminal), owning_building_guid = 38) - LocalObject(2693, Terminal.Constructor(Vector3(4574.967f, 5706.535f, 182.2094f), spawn_terminal), owning_building_guid = 38) - LocalObject(2694, Terminal.Constructor(Vector3(4574.97f, 5713.823f, 182.2094f), spawn_terminal), owning_building_guid = 38) - LocalObject(2916, Terminal.Constructor(Vector3(4607.628f, 5632.814f, 192.3804f), vehicle_terminal_combined), owning_building_guid = 38) - LocalObject(1809, VehicleSpawnPad.Constructor(Vector3(4593.989f, 5632.724f, 188.2224f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 38, terminal_guid = 2916) + LocalObject( + 233, + Terminal.Constructor(Vector3(4572.276f, 5744.25f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 234, + Terminal.Constructor(Vector3(4572.276f, 5751.575f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 235, + Terminal.Constructor(Vector3(4573.724f, 5742.802f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 236, + Terminal.Constructor(Vector3(4573.724f, 5753.023f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 237, + Terminal.Constructor(Vector3(4586.424f, 5742.802f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 238, + Terminal.Constructor(Vector3(4586.424f, 5753.023f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 239, + Terminal.Constructor(Vector3(4587.872f, 5744.25f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 240, + Terminal.Constructor(Vector3(4587.872f, 5751.575f, 180.0654f), cert_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1914, + Terminal.Constructor(Vector3(4559.972f, 5705.526f, 191.3704f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1915, + Terminal.Constructor(Vector3(4588.654f, 5703.408f, 181.6654f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1916, + Terminal.Constructor(Vector3(4588.654f, 5707.139f, 181.6654f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1917, + Terminal.Constructor(Vector3(4588.654f, 5710.928f, 181.6654f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2688, + Terminal.Constructor(Vector3(4530f, 5695.407f, 181.6884f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2689, + Terminal.Constructor(Vector3(4553.91f, 5639.41f, 184.1884f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2690, + Terminal.Constructor(Vector3(4569.407f, 5760f, 181.6884f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2691, + Terminal.Constructor(Vector3(4571.905f, 5682.359f, 191.6544f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2692, + Terminal.Constructor(Vector3(4574.971f, 5699.243f, 182.2094f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2693, + Terminal.Constructor(Vector3(4574.967f, 5706.535f, 182.2094f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2694, + Terminal.Constructor(Vector3(4574.97f, 5713.823f, 182.2094f), spawn_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2916, + Terminal.Constructor(Vector3(4607.628f, 5632.814f, 192.3804f), vehicle_terminal_combined), + owning_building_guid = 38 + ) + LocalObject( + 1809, + VehicleSpawnPad.Constructor(Vector3(4593.989f, 5632.724f, 188.2224f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 38, + terminal_guid = 2916 + ) LocalObject(2524, ResourceSilo.Constructor(Vector3(4509.733f, 5746.852f, 197.0924f)), owning_building_guid = 38) - LocalObject(2578, SpawnTube.Constructor(Vector3(4574.233f, 5700.683f, 180.0754f), Vector3(0, 0, 0)), owning_building_guid = 38) - LocalObject(2579, SpawnTube.Constructor(Vector3(4574.233f, 5707.974f, 180.0754f), Vector3(0, 0, 0)), owning_building_guid = 38) - LocalObject(2580, SpawnTube.Constructor(Vector3(4574.233f, 5715.262f, 180.0754f), Vector3(0, 0, 0)), owning_building_guid = 38) - LocalObject(154, ProximityTerminal.Constructor(Vector3(4571.983f, 5688.892f, 189.8854f), adv_med_terminal), owning_building_guid = 38) - LocalObject(1829, ProximityTerminal.Constructor(Vector3(4597.642f, 5699.952f, 180.0754f), medical_terminal), owning_building_guid = 38) - LocalObject(2144, ProximityTerminal.Constructor(Vector3(4551.883f, 5634.061f, 200.3684f), pad_landing_frame), owning_building_guid = 38) - LocalObject(2145, Terminal.Constructor(Vector3(4551.883f, 5634.061f, 200.3684f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(2147, ProximityTerminal.Constructor(Vector3(4555.101f, 5749.651f, 198.4174f), pad_landing_frame), owning_building_guid = 38) - LocalObject(2148, Terminal.Constructor(Vector3(4555.101f, 5749.651f, 198.4174f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(2150, ProximityTerminal.Constructor(Vector3(4568.198f, 5626.777f, 198.4274f), pad_landing_frame), owning_building_guid = 38) - LocalObject(2151, Terminal.Constructor(Vector3(4568.198f, 5626.777f, 198.4274f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(2153, ProximityTerminal.Constructor(Vector3(4571.323f, 5741.253f, 200.4074f), pad_landing_frame), owning_building_guid = 38) - LocalObject(2154, Terminal.Constructor(Vector3(4571.323f, 5741.253f, 200.4074f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(2461, ProximityTerminal.Constructor(Vector3(4534.524f, 5611.154f, 189.8254f), repair_silo), owning_building_guid = 38) - LocalObject(2462, Terminal.Constructor(Vector3(4534.524f, 5611.154f, 189.8254f), ground_rearm_terminal), owning_building_guid = 38) - LocalObject(2469, ProximityTerminal.Constructor(Vector3(4622.53f, 5711.861f, 189.8254f), repair_silo), owning_building_guid = 38) - LocalObject(2470, Terminal.Constructor(Vector3(4622.53f, 5711.861f, 189.8254f), ground_rearm_terminal), owning_building_guid = 38) - LocalObject(1735, FacilityTurret.Constructor(Vector3(4498.392f, 5776.472f, 198.4774f), manned_turret), owning_building_guid = 38) + LocalObject( + 2578, + SpawnTube.Constructor(Vector3(4574.233f, 5700.683f, 180.0754f), Vector3(0, 0, 0)), + owning_building_guid = 38 + ) + LocalObject( + 2579, + SpawnTube.Constructor(Vector3(4574.233f, 5707.974f, 180.0754f), Vector3(0, 0, 0)), + owning_building_guid = 38 + ) + LocalObject( + 2580, + SpawnTube.Constructor(Vector3(4574.233f, 5715.262f, 180.0754f), Vector3(0, 0, 0)), + owning_building_guid = 38 + ) + LocalObject( + 154, + ProximityTerminal.Constructor(Vector3(4571.983f, 5688.892f, 189.8854f), adv_med_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1829, + ProximityTerminal.Constructor(Vector3(4597.642f, 5699.952f, 180.0754f), medical_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2144, + ProximityTerminal.Constructor(Vector3(4551.883f, 5634.061f, 200.3684f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 2145, + Terminal.Constructor(Vector3(4551.883f, 5634.061f, 200.3684f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2147, + ProximityTerminal.Constructor(Vector3(4555.101f, 5749.651f, 198.4174f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 2148, + Terminal.Constructor(Vector3(4555.101f, 5749.651f, 198.4174f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2150, + ProximityTerminal.Constructor(Vector3(4568.198f, 5626.777f, 198.4274f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 2151, + Terminal.Constructor(Vector3(4568.198f, 5626.777f, 198.4274f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2153, + ProximityTerminal.Constructor(Vector3(4571.323f, 5741.253f, 200.4074f), pad_landing_frame), + owning_building_guid = 38 + ) + LocalObject( + 2154, + Terminal.Constructor(Vector3(4571.323f, 5741.253f, 200.4074f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2461, + ProximityTerminal.Constructor(Vector3(4534.524f, 5611.154f, 189.8254f), repair_silo), + owning_building_guid = 38 + ) + LocalObject( + 2462, + Terminal.Constructor(Vector3(4534.524f, 5611.154f, 189.8254f), ground_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 2469, + ProximityTerminal.Constructor(Vector3(4622.53f, 5711.861f, 189.8254f), repair_silo), + owning_building_guid = 38 + ) + LocalObject( + 2470, + Terminal.Constructor(Vector3(4622.53f, 5711.861f, 189.8254f), ground_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1735, + FacilityTurret.Constructor(Vector3(4498.392f, 5776.472f, 198.4774f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1735, 5049) - LocalObject(1736, FacilityTurret.Constructor(Vector3(4498.4f, 5599.379f, 198.4774f), manned_turret), owning_building_guid = 38) + LocalObject( + 1736, + FacilityTurret.Constructor(Vector3(4498.4f, 5599.379f, 198.4774f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1736, 5050) - LocalObject(1742, FacilityTurret.Constructor(Vector3(4591.665f, 5777.605f, 198.4774f), manned_turret), owning_building_guid = 38) + LocalObject( + 1742, + FacilityTurret.Constructor(Vector3(4591.665f, 5777.605f, 198.4774f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1742, 5051) - LocalObject(1743, FacilityTurret.Constructor(Vector3(4633.626f, 5599.371f, 198.4774f), manned_turret), owning_building_guid = 38) + LocalObject( + 1743, + FacilityTurret.Constructor(Vector3(4633.626f, 5599.371f, 198.4774f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1743, 5052) - LocalObject(1744, FacilityTurret.Constructor(Vector3(4634.813f, 5734.496f, 198.4774f), manned_turret), owning_building_guid = 38) + LocalObject( + 1744, + FacilityTurret.Constructor(Vector3(4634.813f, 5734.496f, 198.4774f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(1744, 5053) - LocalObject(969, ImplantTerminalMech.Constructor(Vector3(4580.066f, 5740.368f, 179.5524f)), owning_building_guid = 38) - LocalObject(961, Terminal.Constructor(Vector3(4580.066f, 5740.386f, 179.5524f), implant_terminal_interface), owning_building_guid = 38) + LocalObject( + 969, + ImplantTerminalMech.Constructor(Vector3(4580.066f, 5740.368f, 179.5524f)), + owning_building_guid = 38 + ) + LocalObject( + 961, + Terminal.Constructor(Vector3(4580.066f, 5740.386f, 179.5524f), implant_terminal_interface), + owning_building_guid = 38 + ) TerminalToInterface(969, 961) - LocalObject(970, ImplantTerminalMech.Constructor(Vector3(4580.054f, 5755.724f, 179.5524f)), owning_building_guid = 38) - LocalObject(962, Terminal.Constructor(Vector3(4580.054f, 5755.706f, 179.5524f), implant_terminal_interface), owning_building_guid = 38) + LocalObject( + 970, + ImplantTerminalMech.Constructor(Vector3(4580.054f, 5755.724f, 179.5524f)), + owning_building_guid = 38 + ) + LocalObject( + 962, + Terminal.Constructor(Vector3(4580.054f, 5755.706f, 179.5524f), implant_terminal_interface), + owning_building_guid = 38 + ) TerminalToInterface(970, 962) - LocalObject(2259, Painbox.Constructor(Vector3(4575.593f, 5676.334f, 204.1042f), painbox), owning_building_guid = 38) - LocalObject(2273, Painbox.Constructor(Vector3(4584.753f, 5703.712f, 184.1453f), painbox_continuous), owning_building_guid = 38) - LocalObject(2287, Painbox.Constructor(Vector3(4574.182f, 5690.798f, 204.3093f), painbox_door_radius), owning_building_guid = 38) - LocalObject(2315, Painbox.Constructor(Vector3(4580.54f, 5693.793f, 182.4313f), painbox_door_radius_continuous), owning_building_guid = 38) - LocalObject(2316, Painbox.Constructor(Vector3(4582.516f, 5721.831f, 181.7896f), painbox_door_radius_continuous), owning_building_guid = 38) - LocalObject(2317, Painbox.Constructor(Vector3(4597.882f, 5715.05f, 183.6163f), painbox_door_radius_continuous), owning_building_guid = 38) + LocalObject( + 2259, + Painbox.Constructor(Vector3(4575.593f, 5676.334f, 204.1042f), painbox), + owning_building_guid = 38 + ) + LocalObject( + 2273, + Painbox.Constructor(Vector3(4584.753f, 5703.712f, 184.1453f), painbox_continuous), + owning_building_guid = 38 + ) + LocalObject( + 2287, + Painbox.Constructor(Vector3(4574.182f, 5690.798f, 204.3093f), painbox_door_radius), + owning_building_guid = 38 + ) + LocalObject( + 2315, + Painbox.Constructor(Vector3(4580.54f, 5693.793f, 182.4313f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 2316, + Painbox.Constructor(Vector3(4582.516f, 5721.831f, 181.7896f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 2317, + Painbox.Constructor(Vector3(4597.882f, 5715.05f, 183.6163f), painbox_door_radius_continuous), + owning_building_guid = 38 + ) LocalObject(304, Generator.Constructor(Vector3(4574.025f, 5672.445f, 198.7814f)), owning_building_guid = 38) - LocalObject(290, Terminal.Constructor(Vector3(4573.978f, 5680.637f, 200.0754f), gen_control), owning_building_guid = 38) + LocalObject( + 290, + Terminal.Constructor(Vector3(4573.978f, 5680.637f, 200.0754f), gen_control), + owning_building_guid = 38 + ) } Building4() def Building4(): Unit = { // Name: Akua Type: cryo_facility GUID: 41, MapID: 4 - LocalBuilding("Akua", 41, 4, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5274f, 3958f, 346.1272f), Vector3(0f, 0f, 50f), cryo_facility))) - LocalObject(221, CaptureTerminal.Constructor(Vector3(5210.544f, 3974.578f, 336.1272f), capture_terminal), owning_building_guid = 41) + LocalBuilding( + "Akua", + 41, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5274f, 3958f, 346.1272f), + Vector3(0f, 0f, 50f), + cryo_facility + ) + ) + ) + LocalObject( + 221, + CaptureTerminal.Constructor(Vector3(5210.544f, 3974.578f, 336.1272f), capture_terminal), + owning_building_guid = 41 + ) LocalObject(537, Door.Constructor(Vector3(5194.853f, 3969.159f, 347.6782f)), owning_building_guid = 41) LocalObject(538, Door.Constructor(Vector3(5206.547f, 3983.096f, 355.6422f)), owning_building_guid = 41) LocalObject(541, Door.Constructor(Vector3(5218.707f, 3927.408f, 355.6422f)), owning_building_guid = 41) @@ -1339,15 +3781,60 @@ object Map09 { // Searhus LocalObject(2803, Door.Constructor(Vector3(5261.441f, 3974.638f, 337.9812f)), owning_building_guid = 41) LocalObject(2804, Door.Constructor(Vector3(5267.025f, 3969.953f, 337.9812f)), owning_building_guid = 41) LocalObject(2805, Door.Constructor(Vector3(5272.612f, 3965.265f, 337.9812f)), owning_building_guid = 41) - LocalObject(999, IFFLock.Constructor(Vector3(5253.182f, 3976.473f, 347.6092f), Vector3(0, 0, 310)), owning_building_guid = 41, door_guid = 947) - LocalObject(1180, IFFLock.Constructor(Vector3(5201.94f, 3975.466f, 337.4632f), Vector3(0, 0, 220)), owning_building_guid = 41, door_guid = 849) - LocalObject(1181, IFFLock.Constructor(Vector3(5205.8f, 3984.958f, 337.4632f), Vector3(0, 0, 40)), owning_building_guid = 41, door_guid = 850) - LocalObject(1183, IFFLock.Constructor(Vector3(5247.353f, 3960.536f, 357.5792f), Vector3(0, 0, 40)), owning_building_guid = 41, door_guid = 546) - LocalObject(1188, IFFLock.Constructor(Vector3(5261.697f, 3981.936f, 337.4632f), Vector3(0, 0, 310)), owning_building_guid = 41, door_guid = 873) - LocalObject(1191, IFFLock.Constructor(Vector3(5272.224f, 3962.041f, 357.5792f), Vector3(0, 0, 310)), owning_building_guid = 41, door_guid = 550) - LocalObject(1196, IFFLock.Constructor(Vector3(5283.344f, 3967.876f, 337.4632f), Vector3(0, 0, 130)), owning_building_guid = 41, door_guid = 883) - LocalObject(1200, IFFLock.Constructor(Vector3(5287.046f, 3977.325f, 329.9632f), Vector3(0, 0, 220)), owning_building_guid = 41, door_guid = 887) - LocalObject(1201, IFFLock.Constructor(Vector3(5364.004f, 3925.313f, 347.5792f), Vector3(0, 0, 40)), owning_building_guid = 41, door_guid = 566) + LocalObject( + 999, + IFFLock.Constructor(Vector3(5253.182f, 3976.473f, 347.6092f), Vector3(0, 0, 310)), + owning_building_guid = 41, + door_guid = 947 + ) + LocalObject( + 1180, + IFFLock.Constructor(Vector3(5201.94f, 3975.466f, 337.4632f), Vector3(0, 0, 220)), + owning_building_guid = 41, + door_guid = 849 + ) + LocalObject( + 1181, + IFFLock.Constructor(Vector3(5205.8f, 3984.958f, 337.4632f), Vector3(0, 0, 40)), + owning_building_guid = 41, + door_guid = 850 + ) + LocalObject( + 1183, + IFFLock.Constructor(Vector3(5247.353f, 3960.536f, 357.5792f), Vector3(0, 0, 40)), + owning_building_guid = 41, + door_guid = 546 + ) + LocalObject( + 1188, + IFFLock.Constructor(Vector3(5261.697f, 3981.936f, 337.4632f), Vector3(0, 0, 310)), + owning_building_guid = 41, + door_guid = 873 + ) + LocalObject( + 1191, + IFFLock.Constructor(Vector3(5272.224f, 3962.041f, 357.5792f), Vector3(0, 0, 310)), + owning_building_guid = 41, + door_guid = 550 + ) + LocalObject( + 1196, + IFFLock.Constructor(Vector3(5283.344f, 3967.876f, 337.4632f), Vector3(0, 0, 130)), + owning_building_guid = 41, + door_guid = 883 + ) + LocalObject( + 1200, + IFFLock.Constructor(Vector3(5287.046f, 3977.325f, 329.9632f), Vector3(0, 0, 220)), + owning_building_guid = 41, + door_guid = 887 + ) + LocalObject( + 1201, + IFFLock.Constructor(Vector3(5364.004f, 3925.313f, 347.5792f), Vector3(0, 0, 40)), + owning_building_guid = 41, + door_guid = 566 + ) LocalObject(1518, Locker.Constructor(Vector3(5245.083f, 4008.368f, 336.1222f)), owning_building_guid = 41) LocalObject(1519, Locker.Constructor(Vector3(5246.043f, 4007.563f, 336.1222f)), owning_building_guid = 41) LocalObject(1520, Locker.Constructor(Vector3(5247.01f, 4006.752f, 336.1222f)), owning_building_guid = 41) @@ -1377,76 +3864,309 @@ object Map09 { // Searhus LocalObject(1653, Locker.Constructor(Vector3(5292.373f, 3966.42f, 345.8982f)), owning_building_guid = 41) LocalObject(1654, Locker.Constructor(Vector3(5294.301f, 3964.802f, 346.1272f)), owning_building_guid = 41) LocalObject(1655, Locker.Constructor(Vector3(5295.093f, 3964.138f, 346.1272f)), owning_building_guid = 41) - LocalObject(241, Terminal.Constructor(Vector3(5232.711f, 3997.506f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(242, Terminal.Constructor(Vector3(5232.89f, 3995.467f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(243, Terminal.Constructor(Vector3(5238.501f, 3990.758f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(244, Terminal.Constructor(Vector3(5240.542f, 3990.937f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(245, Terminal.Constructor(Vector3(5240.875f, 4007.235f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(246, Terminal.Constructor(Vector3(5242.915f, 4007.414f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(247, Terminal.Constructor(Vector3(5248.526f, 4002.705f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(248, Terminal.Constructor(Vector3(5248.705f, 4000.665f, 336.1172f), cert_terminal), owning_building_guid = 41) - LocalObject(1946, Terminal.Constructor(Vector3(5260.257f, 3956.441f, 347.4222f), order_terminal), owning_building_guid = 41) - LocalObject(1950, Terminal.Constructor(Vector3(5274.555f, 3981.885f, 337.7172f), order_terminal), owning_building_guid = 41) - LocalObject(1952, Terminal.Constructor(Vector3(5277.458f, 3979.45f, 337.7172f), order_terminal), owning_building_guid = 41) - LocalObject(1953, Terminal.Constructor(Vector3(5280.316f, 3977.052f, 337.7172f), order_terminal), owning_building_guid = 41) - LocalObject(2708, Terminal.Constructor(Vector3(5224.592f, 3998.684f, 337.7402f), spawn_terminal), owning_building_guid = 41) - LocalObject(2710, Terminal.Constructor(Vector3(5248.743f, 3926.977f, 337.7402f), spawn_terminal), owning_building_guid = 41) - LocalObject(2714, Terminal.Constructor(Vector3(5263.542f, 3973.264f, 338.2612f), spawn_terminal), owning_building_guid = 41) - LocalObject(2716, Terminal.Constructor(Vector3(5269.123f, 3968.577f, 338.2612f), spawn_terminal), owning_building_guid = 41) - LocalObject(2717, Terminal.Constructor(Vector3(5274.711f, 3963.893f, 338.2612f), spawn_terminal), owning_building_guid = 41) - LocalObject(2718, Terminal.Constructor(Vector3(5285.674f, 3950.691f, 347.7062f), spawn_terminal), owning_building_guid = 41) - LocalObject(2719, Terminal.Constructor(Vector3(5307.008f, 3909.299f, 340.2402f), spawn_terminal), owning_building_guid = 41) - LocalObject(2919, Terminal.Constructor(Vector3(5346.59f, 3946.209f, 348.4322f), vehicle_terminal_combined), owning_building_guid = 41) - LocalObject(1813, VehicleSpawnPad.Constructor(Vector3(5337.892f, 3935.704f, 344.2742f), mb_pad_creation, Vector3(0, 0, 220)), owning_building_guid = 41, terminal_guid = 2919) + LocalObject( + 241, + Terminal.Constructor(Vector3(5232.711f, 3997.506f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 242, + Terminal.Constructor(Vector3(5232.89f, 3995.467f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 243, + Terminal.Constructor(Vector3(5238.501f, 3990.758f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 244, + Terminal.Constructor(Vector3(5240.542f, 3990.937f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 245, + Terminal.Constructor(Vector3(5240.875f, 4007.235f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 246, + Terminal.Constructor(Vector3(5242.915f, 4007.414f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 247, + Terminal.Constructor(Vector3(5248.526f, 4002.705f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 248, + Terminal.Constructor(Vector3(5248.705f, 4000.665f, 336.1172f), cert_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1946, + Terminal.Constructor(Vector3(5260.257f, 3956.441f, 347.4222f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1950, + Terminal.Constructor(Vector3(5274.555f, 3981.885f, 337.7172f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(5277.458f, 3979.45f, 337.7172f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1953, + Terminal.Constructor(Vector3(5280.316f, 3977.052f, 337.7172f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2708, + Terminal.Constructor(Vector3(5224.592f, 3998.684f, 337.7402f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2710, + Terminal.Constructor(Vector3(5248.743f, 3926.977f, 337.7402f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2714, + Terminal.Constructor(Vector3(5263.542f, 3973.264f, 338.2612f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2716, + Terminal.Constructor(Vector3(5269.123f, 3968.577f, 338.2612f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2717, + Terminal.Constructor(Vector3(5274.711f, 3963.893f, 338.2612f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2718, + Terminal.Constructor(Vector3(5285.674f, 3950.691f, 347.7062f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2719, + Terminal.Constructor(Vector3(5307.008f, 3909.299f, 340.2402f), spawn_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2919, + Terminal.Constructor(Vector3(5346.59f, 3946.209f, 348.4322f), vehicle_terminal_combined), + owning_building_guid = 41 + ) + LocalObject( + 1813, + VehicleSpawnPad.Constructor(Vector3(5337.892f, 3935.704f, 344.2742f), mb_pad_creation, Vector3(0, 0, 220)), + owning_building_guid = 41, + terminal_guid = 2919 + ) LocalObject(2527, ResourceSilo.Constructor(Vector3(5196.306f, 3944.52f, 353.1442f)), owning_building_guid = 41) - LocalObject(2598, SpawnTube.Constructor(Vector3(5261.965f, 3973.624f, 336.1272f), Vector3(0, 0, 310)), owning_building_guid = 41) - LocalObject(2599, SpawnTube.Constructor(Vector3(5267.548f, 3968.939f, 336.1272f), Vector3(0, 0, 310)), owning_building_guid = 41) - LocalObject(2600, SpawnTube.Constructor(Vector3(5273.133f, 3964.253f, 336.1272f), Vector3(0, 0, 310)), owning_building_guid = 41) - LocalObject(155, ProximityTerminal.Constructor(Vector3(5280.72f, 3954.95f, 345.9372f), adv_med_terminal), owning_building_guid = 41) - LocalObject(1836, ProximityTerminal.Constructor(Vector3(5288.741f, 3981.715f, 336.1272f), medical_terminal), owning_building_guid = 41) - LocalObject(2165, ProximityTerminal.Constructor(Vector3(5223.324f, 3981.073f, 354.4692f), pad_landing_frame), owning_building_guid = 41) - LocalObject(2166, Terminal.Constructor(Vector3(5223.324f, 3981.073f, 354.4692f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(2168, ProximityTerminal.Constructor(Vector3(5240.185f, 3988.102f, 356.4592f), pad_landing_frame), owning_building_guid = 41) - LocalObject(2169, Terminal.Constructor(Vector3(5240.185f, 3988.102f, 356.4592f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(2177, ProximityTerminal.Constructor(Vector3(5309.803f, 3904.308f, 356.4202f), pad_landing_frame), owning_building_guid = 41) - LocalObject(2178, Terminal.Constructor(Vector3(5309.803f, 3904.308f, 356.4202f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(2183, ProximityTerminal.Constructor(Vector3(5325.87f, 3912.124f, 354.4792f), pad_landing_frame), owning_building_guid = 41) - LocalObject(2184, Terminal.Constructor(Vector3(5325.87f, 3912.124f, 354.4792f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(2489, ProximityTerminal.Constructor(Vector3(5295.615f, 4008.436f, 345.8772f), repair_silo), owning_building_guid = 41) - LocalObject(2490, Terminal.Constructor(Vector3(5295.615f, 4008.436f, 345.8772f), ground_rearm_terminal), owning_building_guid = 41) - LocalObject(2493, ProximityTerminal.Constructor(Vector3(5316.193f, 3876.286f, 345.8772f), repair_silo), owning_building_guid = 41) - LocalObject(2494, Terminal.Constructor(Vector3(5316.193f, 3876.286f, 345.8772f), ground_rearm_terminal), owning_building_guid = 41) - LocalObject(1761, FacilityTurret.Constructor(Vector3(5166.326f, 3954.872f, 354.5292f), manned_turret), owning_building_guid = 41) + LocalObject( + 2598, + SpawnTube.Constructor(Vector3(5261.965f, 3973.624f, 336.1272f), Vector3(0, 0, 310)), + owning_building_guid = 41 + ) + LocalObject( + 2599, + SpawnTube.Constructor(Vector3(5267.548f, 3968.939f, 336.1272f), Vector3(0, 0, 310)), + owning_building_guid = 41 + ) + LocalObject( + 2600, + SpawnTube.Constructor(Vector3(5273.133f, 3964.253f, 336.1272f), Vector3(0, 0, 310)), + owning_building_guid = 41 + ) + LocalObject( + 155, + ProximityTerminal.Constructor(Vector3(5280.72f, 3954.95f, 345.9372f), adv_med_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1836, + ProximityTerminal.Constructor(Vector3(5288.741f, 3981.715f, 336.1272f), medical_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2165, + ProximityTerminal.Constructor(Vector3(5223.324f, 3981.073f, 354.4692f), pad_landing_frame), + owning_building_guid = 41 + ) + LocalObject( + 2166, + Terminal.Constructor(Vector3(5223.324f, 3981.073f, 354.4692f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2168, + ProximityTerminal.Constructor(Vector3(5240.185f, 3988.102f, 356.4592f), pad_landing_frame), + owning_building_guid = 41 + ) + LocalObject( + 2169, + Terminal.Constructor(Vector3(5240.185f, 3988.102f, 356.4592f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2177, + ProximityTerminal.Constructor(Vector3(5309.803f, 3904.308f, 356.4202f), pad_landing_frame), + owning_building_guid = 41 + ) + LocalObject( + 2178, + Terminal.Constructor(Vector3(5309.803f, 3904.308f, 356.4202f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2183, + ProximityTerminal.Constructor(Vector3(5325.87f, 3912.124f, 354.4792f), pad_landing_frame), + owning_building_guid = 41 + ) + LocalObject( + 2184, + Terminal.Constructor(Vector3(5325.87f, 3912.124f, 354.4792f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2489, + ProximityTerminal.Constructor(Vector3(5295.615f, 4008.436f, 345.8772f), repair_silo), + owning_building_guid = 41 + ) + LocalObject( + 2490, + Terminal.Constructor(Vector3(5295.615f, 4008.436f, 345.8772f), ground_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 2493, + ProximityTerminal.Constructor(Vector3(5316.193f, 3876.286f, 345.8772f), repair_silo), + owning_building_guid = 41 + ) + LocalObject( + 2494, + Terminal.Constructor(Vector3(5316.193f, 3876.286f, 345.8772f), ground_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 1761, + FacilityTurret.Constructor(Vector3(5166.326f, 3954.872f, 354.5292f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1761, 5054) - LocalObject(1762, FacilityTurret.Constructor(Vector3(5225.413f, 4027.051f, 354.5292f), manned_turret), owning_building_guid = 41) + LocalObject( + 1762, + FacilityTurret.Constructor(Vector3(5225.413f, 4027.051f, 354.5292f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1762, 5055) - LocalObject(1766, FacilityTurret.Constructor(Vector3(5286.171f, 4032.394f, 354.5292f), manned_turret), owning_building_guid = 41) + LocalObject( + 1766, + FacilityTurret.Constructor(Vector3(5286.171f, 4032.394f, 354.5292f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1766, 5056) - LocalObject(1769, FacilityTurret.Constructor(Vector3(5301.992f, 3841.044f, 354.5292f), manned_turret), owning_building_guid = 41) + LocalObject( + 1769, + FacilityTurret.Constructor(Vector3(5301.992f, 3841.044f, 354.5292f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1769, 5057) - LocalObject(1773, FacilityTurret.Constructor(Vector3(5388.92f, 3944.628f, 354.5292f), manned_turret), owning_building_guid = 41) + LocalObject( + 1773, + FacilityTurret.Constructor(Vector3(5388.92f, 3944.628f, 354.5292f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(1773, 5058) - LocalObject(971, ImplantTerminalMech.Constructor(Vector3(5234.711f, 4004.092f, 335.6042f)), owning_building_guid = 41) - LocalObject(963, Terminal.Constructor(Vector3(5234.725f, 4004.08f, 335.6042f), implant_terminal_interface), owning_building_guid = 41) + LocalObject( + 971, + ImplantTerminalMech.Constructor(Vector3(5234.711f, 4004.092f, 335.6042f)), + owning_building_guid = 41 + ) + LocalObject( + 963, + Terminal.Constructor(Vector3(5234.725f, 4004.08f, 335.6042f), implant_terminal_interface), + owning_building_guid = 41 + ) TerminalToInterface(971, 963) - LocalObject(972, ImplantTerminalMech.Constructor(Vector3(5246.482f, 3994.23f, 335.6042f)), owning_building_guid = 41) - LocalObject(964, Terminal.Constructor(Vector3(5246.469f, 3994.242f, 335.6042f), implant_terminal_interface), owning_building_guid = 41) + LocalObject( + 972, + ImplantTerminalMech.Constructor(Vector3(5246.482f, 3994.23f, 335.6042f)), + owning_building_guid = 41 + ) + LocalObject( + 964, + Terminal.Constructor(Vector3(5246.469f, 3994.242f, 335.6042f), implant_terminal_interface), + owning_building_guid = 41 + ) TerminalToInterface(972, 964) - LocalObject(2263, Painbox.Constructor(Vector3(5292.661f, 3949.644f, 360.156f), painbox), owning_building_guid = 41) - LocalObject(2277, Painbox.Constructor(Vector3(5277.575f, 3974.258f, 340.1971f), painbox_continuous), owning_building_guid = 41) - LocalObject(2291, Painbox.Constructor(Vector3(5280.673f, 3957.86f, 360.3611f), painbox_door_radius), owning_building_guid = 41) - LocalObject(2325, Painbox.Constructor(Vector3(5262.257f, 3984.191f, 337.8414f), painbox_door_radius_continuous), owning_building_guid = 41) - LocalObject(2328, Painbox.Constructor(Vector3(5277.329f, 3991.604f, 339.6681f), painbox_door_radius_continuous), owning_building_guid = 41) - LocalObject(2329, Painbox.Constructor(Vector3(5282.465f, 3964.656f, 338.4831f), painbox_door_radius_continuous), owning_building_guid = 41) + LocalObject( + 2263, + Painbox.Constructor(Vector3(5292.661f, 3949.644f, 360.156f), painbox), + owning_building_guid = 41 + ) + LocalObject( + 2277, + Painbox.Constructor(Vector3(5277.575f, 3974.258f, 340.1971f), painbox_continuous), + owning_building_guid = 41 + ) + LocalObject( + 2291, + Painbox.Constructor(Vector3(5280.673f, 3957.86f, 360.3611f), painbox_door_radius), + owning_building_guid = 41 + ) + LocalObject( + 2325, + Painbox.Constructor(Vector3(5262.257f, 3984.191f, 337.8414f), painbox_door_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 2328, + Painbox.Constructor(Vector3(5277.329f, 3991.604f, 339.6681f), painbox_door_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 2329, + Painbox.Constructor(Vector3(5282.465f, 3964.656f, 338.4831f), painbox_door_radius_continuous), + owning_building_guid = 41 + ) LocalObject(308, Generator.Constructor(Vector3(5294.631f, 3945.942f, 354.8332f)), owning_building_guid = 41) - LocalObject(294, Terminal.Constructor(Vector3(5288.326f, 3951.172f, 356.1272f), gen_control), owning_building_guid = 41) + LocalObject( + 294, + Terminal.Constructor(Vector3(5288.326f, 3951.172f, 356.1272f), gen_control), + owning_building_guid = 41 + ) } Building7() def Building7(): Unit = { // Name: Iva Type: cryo_facility GUID: 44, MapID: 7 - LocalBuilding("Iva", 44, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6452f, 5150f, 55.30717f), Vector3(0f, 0f, 91f), cryo_facility))) - LocalObject(224, CaptureTerminal.Constructor(Vector3(6393.233f, 5120.881f, 45.30717f), capture_terminal), owning_building_guid = 44) + LocalBuilding( + "Iva", + 44, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6452f, 5150f, 55.30717f), + Vector3(0f, 0f, 91f), + cryo_facility + ) + ) + ) + LocalObject( + 224, + CaptureTerminal.Constructor(Vector3(6393.233f, 5120.881f, 45.30717f), capture_terminal), + owning_building_guid = 44 + ) LocalObject(598, Door.Constructor(Vector3(6384.628f, 5124.688f, 64.82217f)), owning_building_guid = 44) LocalObject(599, Door.Constructor(Vector3(6384.946f, 5106.497f, 56.85817f)), owning_building_guid = 44) LocalObject(601, Door.Constructor(Vector3(6430.34f, 5090.636f, 64.82217f)), owning_building_guid = 44) @@ -1487,15 +4207,60 @@ object Map09 { // Searhus LocalObject(2815, Door.Constructor(Vector3(6431.606f, 5154.318f, 47.16117f)), owning_building_guid = 44) LocalObject(2816, Door.Constructor(Vector3(6438.895f, 5154.445f, 47.16117f)), owning_building_guid = 44) LocalObject(2818, Door.Constructor(Vector3(6446.187f, 5154.572f, 47.16117f)), owning_building_guid = 44) - LocalObject(1002, IFFLock.Constructor(Vector3(6424.169f, 5150.284f, 56.78917f), Vector3(0, 0, 269)), owning_building_guid = 44, door_guid = 950) - LocalObject(1224, IFFLock.Constructor(Vector3(6382.843f, 5125.603f, 46.64317f), Vector3(0, 0, 359)), owning_building_guid = 44, door_guid = 915) - LocalObject(1225, IFFLock.Constructor(Vector3(6386.157f, 5115.906f, 46.64317f), Vector3(0, 0, 179)), owning_building_guid = 44, door_guid = 916) - LocalObject(1226, IFFLock.Constructor(Vector3(6427.012f, 5159.994f, 46.64317f), Vector3(0, 0, 269)), owning_building_guid = 44, door_guid = 920) - LocalObject(1227, IFFLock.Constructor(Vector3(6430.226f, 5134.432f, 66.75917f), Vector3(0, 0, 359)), owning_building_guid = 44, door_guid = 602) - LocalObject(1230, IFFLock.Constructor(Vector3(6448.008f, 5151.885f, 66.75917f), Vector3(0, 0, 269)), owning_building_guid = 44, door_guid = 606) - LocalObject(1231, IFFLock.Constructor(Vector3(6449.167f, 5173.144f, 39.14317f), Vector3(0, 0, 179)), owning_building_guid = 44, door_guid = 925) - LocalObject(1234, IFFLock.Constructor(Vector3(6452.573f, 5163.584f, 46.64317f), Vector3(0, 0, 89)), owning_building_guid = 44, door_guid = 926) - LocalObject(1235, IFFLock.Constructor(Vector3(6541.372f, 5184.379f, 56.75917f), Vector3(0, 0, 359)), owning_building_guid = 44, door_guid = 614) + LocalObject( + 1002, + IFFLock.Constructor(Vector3(6424.169f, 5150.284f, 56.78917f), Vector3(0, 0, 269)), + owning_building_guid = 44, + door_guid = 950 + ) + LocalObject( + 1224, + IFFLock.Constructor(Vector3(6382.843f, 5125.603f, 46.64317f), Vector3(0, 0, 359)), + owning_building_guid = 44, + door_guid = 915 + ) + LocalObject( + 1225, + IFFLock.Constructor(Vector3(6386.157f, 5115.906f, 46.64317f), Vector3(0, 0, 179)), + owning_building_guid = 44, + door_guid = 916 + ) + LocalObject( + 1226, + IFFLock.Constructor(Vector3(6427.012f, 5159.994f, 46.64317f), Vector3(0, 0, 269)), + owning_building_guid = 44, + door_guid = 920 + ) + LocalObject( + 1227, + IFFLock.Constructor(Vector3(6430.226f, 5134.432f, 66.75917f), Vector3(0, 0, 359)), + owning_building_guid = 44, + door_guid = 602 + ) + LocalObject( + 1230, + IFFLock.Constructor(Vector3(6448.008f, 5151.885f, 66.75917f), Vector3(0, 0, 269)), + owning_building_guid = 44, + door_guid = 606 + ) + LocalObject( + 1231, + IFFLock.Constructor(Vector3(6449.167f, 5173.144f, 39.14317f), Vector3(0, 0, 179)), + owning_building_guid = 44, + door_guid = 925 + ) + LocalObject( + 1234, + IFFLock.Constructor(Vector3(6452.573f, 5163.584f, 46.64317f), Vector3(0, 0, 89)), + owning_building_guid = 44, + door_guid = 926 + ) + LocalObject( + 1235, + IFFLock.Constructor(Vector3(6541.372f, 5184.379f, 56.75917f), Vector3(0, 0, 359)), + owning_building_guid = 44, + door_guid = 614 + ) LocalObject(1587, Locker.Constructor(Vector3(6397.132f, 5169.042f, 45.30217f)), owning_building_guid = 44) LocalObject(1588, Locker.Constructor(Vector3(6398.384f, 5169.064f, 45.30217f)), owning_building_guid = 44) LocalObject(1589, Locker.Constructor(Vector3(6399.646f, 5169.086f, 45.30217f)), owning_building_guid = 44) @@ -1525,88 +4290,331 @@ object Map09 { // Searhus LocalObject(1661, Locker.Constructor(Vector3(6460.342f, 5168.408f, 55.07817f)), owning_building_guid = 44) LocalObject(1662, Locker.Constructor(Vector3(6462.858f, 5168.452f, 55.30717f)), owning_building_guid = 44) LocalObject(1663, Locker.Constructor(Vector3(6463.893f, 5168.47f, 55.30717f)), owning_building_guid = 44) - LocalObject(249, Terminal.Constructor(Vector3(6394.699f, 5165.426f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(250, Terminal.Constructor(Vector3(6394.921f, 5152.728f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(251, Terminal.Constructor(Vector3(6396.122f, 5166.899f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(252, Terminal.Constructor(Vector3(6396.394f, 5151.306f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(253, Terminal.Constructor(Vector3(6403.445f, 5167.027f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(254, Terminal.Constructor(Vector3(6403.718f, 5151.434f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(255, Terminal.Constructor(Vector3(6404.918f, 5165.604f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(256, Terminal.Constructor(Vector3(6405.14f, 5152.907f, 45.29716f), cert_terminal), owning_building_guid = 44) - LocalObject(1971, Terminal.Constructor(Vector3(6436.749f, 5168.391f, 46.89717f), order_terminal), owning_building_guid = 44) - LocalObject(1972, Terminal.Constructor(Vector3(6440.537f, 5168.457f, 46.89717f), order_terminal), owning_building_guid = 44) - LocalObject(1973, Terminal.Constructor(Vector3(6442.65f, 5139.807f, 56.60217f), order_terminal), owning_building_guid = 44) - LocalObject(1974, Terminal.Constructor(Vector3(6444.268f, 5168.522f, 46.89717f), order_terminal), owning_building_guid = 44) - LocalObject(2729, Terminal.Constructor(Vector3(6388.02f, 5148.29f, 46.92017f), spawn_terminal), owning_building_guid = 44) - LocalObject(2730, Terminal.Constructor(Vector3(6434.093f, 5154.658f, 47.44117f), spawn_terminal), owning_building_guid = 44) - LocalObject(2731, Terminal.Constructor(Vector3(6441.38f, 5154.782f, 47.44117f), spawn_terminal), owning_building_guid = 44) - LocalObject(2732, Terminal.Constructor(Vector3(6448.671f, 5154.914f, 47.44117f), spawn_terminal), owning_building_guid = 44) - LocalObject(2733, Terminal.Constructor(Vector3(6453.291f, 5110.017f, 46.92017f), spawn_terminal), owning_building_guid = 44) - LocalObject(2734, Terminal.Constructor(Vector3(6465.605f, 5152.143f, 56.88617f), spawn_terminal), owning_building_guid = 44) - LocalObject(2735, Terminal.Constructor(Vector3(6508.862f, 5134.9f, 49.42017f), spawn_terminal), owning_building_guid = 44) - LocalObject(2921, Terminal.Constructor(Vector3(6514.52f, 5188.725f, 57.61217f), vehicle_terminal_combined), owning_building_guid = 44) - LocalObject(1815, VehicleSpawnPad.Constructor(Vector3(6514.848f, 5175.09f, 53.45417f), mb_pad_creation, Vector3(0, 0, 179)), owning_building_guid = 44, terminal_guid = 2921) + LocalObject( + 249, + Terminal.Constructor(Vector3(6394.699f, 5165.426f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 250, + Terminal.Constructor(Vector3(6394.921f, 5152.728f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 251, + Terminal.Constructor(Vector3(6396.122f, 5166.899f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 252, + Terminal.Constructor(Vector3(6396.394f, 5151.306f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 253, + Terminal.Constructor(Vector3(6403.445f, 5167.027f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 254, + Terminal.Constructor(Vector3(6403.718f, 5151.434f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 255, + Terminal.Constructor(Vector3(6404.918f, 5165.604f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 256, + Terminal.Constructor(Vector3(6405.14f, 5152.907f, 45.29716f), cert_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1971, + Terminal.Constructor(Vector3(6436.749f, 5168.391f, 46.89717f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1972, + Terminal.Constructor(Vector3(6440.537f, 5168.457f, 46.89717f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1973, + Terminal.Constructor(Vector3(6442.65f, 5139.807f, 56.60217f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1974, + Terminal.Constructor(Vector3(6444.268f, 5168.522f, 46.89717f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2729, + Terminal.Constructor(Vector3(6388.02f, 5148.29f, 46.92017f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2730, + Terminal.Constructor(Vector3(6434.093f, 5154.658f, 47.44117f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2731, + Terminal.Constructor(Vector3(6441.38f, 5154.782f, 47.44117f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2732, + Terminal.Constructor(Vector3(6448.671f, 5154.914f, 47.44117f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2733, + Terminal.Constructor(Vector3(6453.291f, 5110.017f, 46.92017f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2734, + Terminal.Constructor(Vector3(6465.605f, 5152.143f, 56.88617f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2735, + Terminal.Constructor(Vector3(6508.862f, 5134.9f, 49.42017f), spawn_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2921, + Terminal.Constructor(Vector3(6514.52f, 5188.725f, 57.61217f), vehicle_terminal_combined), + owning_building_guid = 44 + ) + LocalObject( + 1815, + VehicleSpawnPad.Constructor(Vector3(6514.848f, 5175.09f, 53.45417f), mb_pad_creation, Vector3(0, 0, 179)), + owning_building_guid = 44, + terminal_guid = 2921 + ) LocalObject(2530, ResourceSilo.Constructor(Vector3(6402.208f, 5088.854f, 62.32417f)), owning_building_guid = 44) - LocalObject(2610, SpawnTube.Constructor(Vector3(6432.667f, 5153.896f, 45.30717f), Vector3(0, 0, 269)), owning_building_guid = 44) - LocalObject(2612, SpawnTube.Constructor(Vector3(6439.954f, 5154.023f, 45.30717f), Vector3(0, 0, 269)), owning_building_guid = 44) - LocalObject(2613, SpawnTube.Constructor(Vector3(6447.244f, 5154.15f, 45.30717f), Vector3(0, 0, 269)), owning_building_guid = 44) - LocalObject(156, ProximityTerminal.Constructor(Vector3(6459.072f, 5152.107f, 55.11717f), adv_med_terminal), owning_building_guid = 44) - LocalObject(1839, ProximityTerminal.Constructor(Vector3(6447.566f, 5177.569f, 45.30717f), medical_terminal), owning_building_guid = 44) - LocalObject(2198, ProximityTerminal.Constructor(Vector3(6398.617f, 5134.167f, 63.64917f), pad_landing_frame), owning_building_guid = 44) - LocalObject(2199, Terminal.Constructor(Vector3(6398.617f, 5134.167f, 63.64917f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(2201, ProximityTerminal.Constructor(Vector3(6406.731f, 5150.533f, 65.63917f), pad_landing_frame), owning_building_guid = 44) - LocalObject(2202, Terminal.Constructor(Vector3(6406.731f, 5150.533f, 65.63917f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(2204, ProximityTerminal.Constructor(Vector3(6514.246f, 5132.967f, 65.60017f), pad_landing_frame), owning_building_guid = 44) - LocalObject(2205, Terminal.Constructor(Vector3(6514.246f, 5132.967f, 65.60017f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(2207, ProximityTerminal.Constructor(Vector3(6521.244f, 5149.406f, 63.65917f), pad_landing_frame), owning_building_guid = 44) - LocalObject(2208, Terminal.Constructor(Vector3(6521.244f, 5149.406f, 63.65917f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(2509, ProximityTerminal.Constructor(Vector3(6435.225f, 5202.245f, 55.05717f), repair_silo), owning_building_guid = 44) - LocalObject(2510, Terminal.Constructor(Vector3(6435.225f, 5202.245f, 55.05717f), ground_rearm_terminal), owning_building_guid = 44) - LocalObject(2513, ProximityTerminal.Constructor(Vector3(6537.452f, 5116.011f, 55.05717f), repair_silo), owning_building_guid = 44) - LocalObject(2514, Terminal.Constructor(Vector3(6537.452f, 5116.011f, 55.05717f), ground_rearm_terminal), owning_building_guid = 44) - LocalObject(1785, FacilityTurret.Constructor(Vector3(6370.029f, 5170.237f, 63.70917f), manned_turret), owning_building_guid = 44) + LocalObject( + 2610, + SpawnTube.Constructor(Vector3(6432.667f, 5153.896f, 45.30717f), Vector3(0, 0, 269)), + owning_building_guid = 44 + ) + LocalObject( + 2612, + SpawnTube.Constructor(Vector3(6439.954f, 5154.023f, 45.30717f), Vector3(0, 0, 269)), + owning_building_guid = 44 + ) + LocalObject( + 2613, + SpawnTube.Constructor(Vector3(6447.244f, 5154.15f, 45.30717f), Vector3(0, 0, 269)), + owning_building_guid = 44 + ) + LocalObject( + 156, + ProximityTerminal.Constructor(Vector3(6459.072f, 5152.107f, 55.11717f), adv_med_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1839, + ProximityTerminal.Constructor(Vector3(6447.566f, 5177.569f, 45.30717f), medical_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2198, + ProximityTerminal.Constructor(Vector3(6398.617f, 5134.167f, 63.64917f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 2199, + Terminal.Constructor(Vector3(6398.617f, 5134.167f, 63.64917f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2201, + ProximityTerminal.Constructor(Vector3(6406.731f, 5150.533f, 65.63917f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 2202, + Terminal.Constructor(Vector3(6406.731f, 5150.533f, 65.63917f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2204, + ProximityTerminal.Constructor(Vector3(6514.246f, 5132.967f, 65.60017f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 2205, + Terminal.Constructor(Vector3(6514.246f, 5132.967f, 65.60017f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2207, + ProximityTerminal.Constructor(Vector3(6521.244f, 5149.406f, 63.65917f), pad_landing_frame), + owning_building_guid = 44 + ) + LocalObject( + 2208, + Terminal.Constructor(Vector3(6521.244f, 5149.406f, 63.65917f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2509, + ProximityTerminal.Constructor(Vector3(6435.225f, 5202.245f, 55.05717f), repair_silo), + owning_building_guid = 44 + ) + LocalObject( + 2510, + Terminal.Constructor(Vector3(6435.225f, 5202.245f, 55.05717f), ground_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 2513, + ProximityTerminal.Constructor(Vector3(6537.452f, 5116.011f, 55.05717f), repair_silo), + owning_building_guid = 44 + ) + LocalObject( + 2514, + Terminal.Constructor(Vector3(6537.452f, 5116.011f, 55.05717f), ground_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 1785, + FacilityTurret.Constructor(Vector3(6370.029f, 5170.237f, 63.70917f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1785, 5059) - LocalObject(1786, FacilityTurret.Constructor(Vector3(6372.79f, 5076.999f, 63.70917f), manned_turret), owning_building_guid = 44) + LocalObject( + 1786, + FacilityTurret.Constructor(Vector3(6372.79f, 5076.999f, 63.70917f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1786, 5060) - LocalObject(1787, FacilityTurret.Constructor(Vector3(6412.379f, 5214.131f, 63.70917f), manned_turret), owning_building_guid = 44) + LocalObject( + 1787, + FacilityTurret.Constructor(Vector3(6412.379f, 5214.131f, 63.70917f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1787, 5061) - LocalObject(1790, FacilityTurret.Constructor(Vector3(6547.504f, 5215.303f, 63.70917f), manned_turret), owning_building_guid = 44) + LocalObject( + 1790, + FacilityTurret.Constructor(Vector3(6547.504f, 5215.303f, 63.70917f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1790, 5062) - LocalObject(1791, FacilityTurret.Constructor(Vector3(6549.856f, 5080.097f, 63.70917f), manned_turret), owning_building_guid = 44) + LocalObject( + 1791, + FacilityTurret.Constructor(Vector3(6549.856f, 5080.097f, 63.70917f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(1791, 5063) - LocalObject(973, ImplantTerminalMech.Constructor(Vector3(6392.11f, 5159.01f, 44.78417f)), owning_building_guid = 44) - LocalObject(965, Terminal.Constructor(Vector3(6392.127f, 5159.01f, 44.78417f), implant_terminal_interface), owning_building_guid = 44) + LocalObject( + 973, + ImplantTerminalMech.Constructor(Vector3(6392.11f, 5159.01f, 44.78417f)), + owning_building_guid = 44 + ) + LocalObject( + 965, + Terminal.Constructor(Vector3(6392.127f, 5159.01f, 44.78417f), implant_terminal_interface), + owning_building_guid = 44 + ) TerminalToInterface(973, 965) - LocalObject(974, ImplantTerminalMech.Constructor(Vector3(6407.463f, 5159.29f, 44.78417f)), owning_building_guid = 44) - LocalObject(966, Terminal.Constructor(Vector3(6407.445f, 5159.29f, 44.78417f), implant_terminal_interface), owning_building_guid = 44) + LocalObject( + 974, + ImplantTerminalMech.Constructor(Vector3(6407.463f, 5159.29f, 44.78417f)), + owning_building_guid = 44 + ) + LocalObject( + 966, + Terminal.Constructor(Vector3(6407.445f, 5159.29f, 44.78417f), implant_terminal_interface), + owning_building_guid = 44 + ) TerminalToInterface(974, 966) - LocalObject(2265, Painbox.Constructor(Vector3(6471.565f, 5155.936f, 69.33597f), painbox), owning_building_guid = 44) - LocalObject(2279, Painbox.Constructor(Vector3(6444.032f, 5164.616f, 49.37707f), painbox_continuous), owning_building_guid = 44) - LocalObject(2293, Painbox.Constructor(Vector3(6457.128f, 5154.272f, 69.54107f), painbox_door_radius), owning_building_guid = 44) - LocalObject(2333, Painbox.Constructor(Vector3(6425.955f, 5162.063f, 47.02137f), painbox_door_radius_continuous), owning_building_guid = 44) - LocalObject(2334, Painbox.Constructor(Vector3(6432.466f, 5177.545f, 48.84807f), painbox_door_radius_continuous), owning_building_guid = 44) - LocalObject(2335, Painbox.Constructor(Vector3(6454.022f, 5160.577f, 47.66307f), painbox_door_radius_continuous), owning_building_guid = 44) + LocalObject( + 2265, + Painbox.Constructor(Vector3(6471.565f, 5155.936f, 69.33597f), painbox), + owning_building_guid = 44 + ) + LocalObject( + 2279, + Painbox.Constructor(Vector3(6444.032f, 5164.616f, 49.37707f), painbox_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2293, + Painbox.Constructor(Vector3(6457.128f, 5154.272f, 69.54107f), painbox_door_radius), + owning_building_guid = 44 + ) + LocalObject( + 2333, + Painbox.Constructor(Vector3(6425.955f, 5162.063f, 47.02137f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2334, + Painbox.Constructor(Vector3(6432.466f, 5177.545f, 48.84807f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 2335, + Painbox.Constructor(Vector3(6454.022f, 5160.577f, 47.66307f), painbox_door_radius_continuous), + owning_building_guid = 44 + ) LocalObject(310, Generator.Constructor(Vector3(6475.481f, 5154.436f, 64.01317f)), owning_building_guid = 44) - LocalObject(296, Terminal.Constructor(Vector3(6467.291f, 5154.246f, 65.30717f), gen_control), owning_building_guid = 44) + LocalObject( + 296, + Terminal.Constructor(Vector3(6467.291f, 5154.246f, 65.30717f), gen_control), + owning_building_guid = 44 + ) } Building23717() def Building23717(): Unit = { // Name: GW_Searhus_S Type: hst GUID: 47, MapID: 23717 - LocalBuilding("GW_Searhus_S", 47, 23717, FoundationBuilder(WarpGate.Structure(Vector3(3773.85f, 1132.25f, 46.53f), hst))) + LocalBuilding( + "GW_Searhus_S", + 47, + 23717, + FoundationBuilder(WarpGate.Structure(Vector3(3773.85f, 1132.25f, 46.53f), hst)) + ) } Building23718() def Building23718(): Unit = { // Name: GW_Searhus_N Type: hst GUID: 48, MapID: 23718 - LocalBuilding("GW_Searhus_N", 48, 23718, FoundationBuilder(WarpGate.Structure(Vector3(7131.17f, 5593.67f, 43.53f), hst))) + LocalBuilding( + "GW_Searhus_N", + 48, + 23718, + FoundationBuilder(WarpGate.Structure(Vector3(7131.17f, 5593.67f, 43.53f), hst)) + ) } Building16() def Building16(): Unit = { // Name: Tara Type: tech_plant GUID: 50, MapID: 16 - LocalBuilding("Tara", 50, 16, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1172f, 4140f, 59.97345f), Vector3(0f, 0f, 175f), tech_plant))) - LocalObject(211, CaptureTerminal.Constructor(Vector3(1171.127f, 4184.334f, 75.07345f), capture_terminal), owning_building_guid = 50) + LocalBuilding( + "Tara", + 50, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1172f, 4140f, 59.97345f), + Vector3(0f, 0f, 175f), + tech_plant + ) + ) + ) + LocalObject( + 211, + CaptureTerminal.Constructor(Vector3(1171.127f, 4184.334f, 75.07345f), capture_terminal), + owning_building_guid = 50 + ) LocalObject(313, Door.Constructor(Vector3(1093.01f, 4143.792f, 61.51545f)), owning_building_guid = 50) LocalObject(314, Door.Constructor(Vector3(1094.596f, 4161.916f, 69.47845f)), owning_building_guid = 50) LocalObject(315, Door.Constructor(Vector3(1126.686f, 4112.579f, 69.47845f)), owning_building_guid = 50) @@ -1645,16 +4653,66 @@ object Map09 { // Searhus LocalObject(2738, Door.Constructor(Vector3(1161.788f, 4168.684f, 54.42745f)), owning_building_guid = 50) LocalObject(2739, Door.Constructor(Vector3(1162.423f, 4175.945f, 54.42745f)), owning_building_guid = 50) LocalObject(2740, Door.Constructor(Vector3(1163.059f, 4183.21f, 54.42745f)), owning_building_guid = 50) - LocalObject(989, IFFLock.Constructor(Vector3(1133.026f, 4191.992f, 61.55345f), Vector3(0, 0, 5)), owning_building_guid = 50, door_guid = 937) - LocalObject(1003, IFFLock.Constructor(Vector3(1210.89f, 4094.083f, 61.66145f), Vector3(0, 0, 185)), owning_building_guid = 50, door_guid = 623) - LocalObject(1008, IFFLock.Constructor(Vector3(1144.017f, 4159.456f, 46.40945f), Vector3(0, 0, 5)), owning_building_guid = 50, door_guid = 631) - LocalObject(1009, IFFLock.Constructor(Vector3(1145.03f, 4188.105f, 46.40945f), Vector3(0, 0, 95)), owning_building_guid = 50, door_guid = 630) - LocalObject(1012, IFFLock.Constructor(Vector3(1154.764f, 4190.504f, 53.90945f), Vector3(0, 0, 5)), owning_building_guid = 50, door_guid = 634) - LocalObject(1013, IFFLock.Constructor(Vector3(1155.663f, 4164.708f, 53.90945f), Vector3(0, 0, 185)), owning_building_guid = 50, door_guid = 632) - LocalObject(1014, IFFLock.Constructor(Vector3(1156.084f, 4181.771f, 76.51945f), Vector3(0, 0, 5)), owning_building_guid = 50, door_guid = 321) - LocalObject(1015, IFFLock.Constructor(Vector3(1165.45f, 4163.276f, 76.51945f), Vector3(0, 0, 185)), owning_building_guid = 50, door_guid = 322) - LocalObject(1016, IFFLock.Constructor(Vector3(1180.955f, 4178.426f, 76.40945f), Vector3(0, 0, 185)), owning_building_guid = 50, door_guid = 641) - LocalObject(1017, IFFLock.Constructor(Vector3(1221.553f, 4238.101f, 61.52545f), Vector3(0, 0, 95)), owning_building_guid = 50, door_guid = 326) + LocalObject( + 989, + IFFLock.Constructor(Vector3(1133.026f, 4191.992f, 61.55345f), Vector3(0, 0, 5)), + owning_building_guid = 50, + door_guid = 937 + ) + LocalObject( + 1003, + IFFLock.Constructor(Vector3(1210.89f, 4094.083f, 61.66145f), Vector3(0, 0, 185)), + owning_building_guid = 50, + door_guid = 623 + ) + LocalObject( + 1008, + IFFLock.Constructor(Vector3(1144.017f, 4159.456f, 46.40945f), Vector3(0, 0, 5)), + owning_building_guid = 50, + door_guid = 631 + ) + LocalObject( + 1009, + IFFLock.Constructor(Vector3(1145.03f, 4188.105f, 46.40945f), Vector3(0, 0, 95)), + owning_building_guid = 50, + door_guid = 630 + ) + LocalObject( + 1012, + IFFLock.Constructor(Vector3(1154.764f, 4190.504f, 53.90945f), Vector3(0, 0, 5)), + owning_building_guid = 50, + door_guid = 634 + ) + LocalObject( + 1013, + IFFLock.Constructor(Vector3(1155.663f, 4164.708f, 53.90945f), Vector3(0, 0, 185)), + owning_building_guid = 50, + door_guid = 632 + ) + LocalObject( + 1014, + IFFLock.Constructor(Vector3(1156.084f, 4181.771f, 76.51945f), Vector3(0, 0, 5)), + owning_building_guid = 50, + door_guid = 321 + ) + LocalObject( + 1015, + IFFLock.Constructor(Vector3(1165.45f, 4163.276f, 76.51945f), Vector3(0, 0, 185)), + owning_building_guid = 50, + door_guid = 322 + ) + LocalObject( + 1016, + IFFLock.Constructor(Vector3(1180.955f, 4178.426f, 76.40945f), Vector3(0, 0, 185)), + owning_building_guid = 50, + door_guid = 641 + ) + LocalObject( + 1017, + IFFLock.Constructor(Vector3(1221.553f, 4238.101f, 61.52545f), Vector3(0, 0, 95)), + owning_building_guid = 50, + door_guid = 326 + ) LocalObject(1244, Locker.Constructor(Vector3(1127.702f, 4169.809f, 45.07345f)), owning_building_guid = 50) LocalObject(1245, Locker.Constructor(Vector3(1129.033f, 4169.693f, 45.07345f)), owning_building_guid = 50) LocalObject(1246, Locker.Constructor(Vector3(1130.364f, 4169.576f, 45.07345f)), owning_building_guid = 50) @@ -1667,72 +4725,290 @@ object Map09 { // Searhus LocalObject(1255, Locker.Constructor(Vector3(1150.221f, 4187.939f, 52.83445f)), owning_building_guid = 50) LocalObject(1258, Locker.Constructor(Vector3(1151.364f, 4187.839f, 52.83445f)), owning_building_guid = 50) LocalObject(1259, Locker.Constructor(Vector3(1152.524f, 4187.738f, 52.83445f)), owning_building_guid = 50) - LocalObject(157, Terminal.Constructor(Vector3(1157.625f, 4166.211f, 75.67645f), air_vehicle_terminal), owning_building_guid = 50) - LocalObject(1796, VehicleSpawnPad.Constructor(Vector3(1151.355f, 4145.987f, 72.55145f), mb_pad_creation, Vector3(0, 0, 185)), owning_building_guid = 50, terminal_guid = 157) - LocalObject(158, Terminal.Constructor(Vector3(1169.511f, 4165.172f, 75.67645f), air_vehicle_terminal), owning_building_guid = 50) - LocalObject(1797, VehicleSpawnPad.Constructor(Vector3(1172.293f, 4144.155f, 72.55145f), mb_pad_creation, Vector3(0, 0, 185)), owning_building_guid = 50, terminal_guid = 158) - LocalObject(1840, Terminal.Constructor(Vector3(1148.33f, 4175.269f, 54.16345f), order_terminal), owning_building_guid = 50) - LocalObject(1841, Terminal.Constructor(Vector3(1148.66f, 4179.044f, 54.16345f), order_terminal), owning_building_guid = 50) - LocalObject(1842, Terminal.Constructor(Vector3(1148.985f, 4182.761f, 54.16345f), order_terminal), owning_building_guid = 50) - LocalObject(1846, Terminal.Constructor(Vector3(1171.265f, 4166.68f, 66.40345f), order_terminal), owning_building_guid = 50) - LocalObject(2642, Terminal.Constructor(Vector3(1136.674f, 4163.529f, 66.65545f), spawn_terminal), owning_building_guid = 50) - LocalObject(2643, Terminal.Constructor(Vector3(1157.243f, 4138.064f, 71.99645f), spawn_terminal), owning_building_guid = 50) - LocalObject(2644, Terminal.Constructor(Vector3(1161.709f, 4171.192f, 54.70745f), spawn_terminal), owning_building_guid = 50) - LocalObject(2645, Terminal.Constructor(Vector3(1162.348f, 4178.453f, 54.70745f), spawn_terminal), owning_building_guid = 50) - LocalObject(2646, Terminal.Constructor(Vector3(1162.979f, 4185.717f, 54.70745f), spawn_terminal), owning_building_guid = 50) - LocalObject(2647, Terminal.Constructor(Vector3(1168.22f, 4187.921f, 46.63045f), spawn_terminal), owning_building_guid = 50) - LocalObject(2648, Terminal.Constructor(Vector3(1204.282f, 4232.949f, 54.13045f), spawn_terminal), owning_building_guid = 50) - LocalObject(2908, Terminal.Constructor(Vector3(1223.358f, 4176.239f, 45.78745f), ground_vehicle_terminal), owning_building_guid = 50) - LocalObject(1798, VehicleSpawnPad.Constructor(Vector3(1222.457f, 4165.36f, 37.51045f), mb_pad_creation, Vector3(0, 0, 185)), owning_building_guid = 50, terminal_guid = 2908) + LocalObject( + 157, + Terminal.Constructor(Vector3(1157.625f, 4166.211f, 75.67645f), air_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1796, + VehicleSpawnPad.Constructor(Vector3(1151.355f, 4145.987f, 72.55145f), mb_pad_creation, Vector3(0, 0, 185)), + owning_building_guid = 50, + terminal_guid = 157 + ) + LocalObject( + 158, + Terminal.Constructor(Vector3(1169.511f, 4165.172f, 75.67645f), air_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1797, + VehicleSpawnPad.Constructor(Vector3(1172.293f, 4144.155f, 72.55145f), mb_pad_creation, Vector3(0, 0, 185)), + owning_building_guid = 50, + terminal_guid = 158 + ) + LocalObject( + 1840, + Terminal.Constructor(Vector3(1148.33f, 4175.269f, 54.16345f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1841, + Terminal.Constructor(Vector3(1148.66f, 4179.044f, 54.16345f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1842, + Terminal.Constructor(Vector3(1148.985f, 4182.761f, 54.16345f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1846, + Terminal.Constructor(Vector3(1171.265f, 4166.68f, 66.40345f), order_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2642, + Terminal.Constructor(Vector3(1136.674f, 4163.529f, 66.65545f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2643, + Terminal.Constructor(Vector3(1157.243f, 4138.064f, 71.99645f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2644, + Terminal.Constructor(Vector3(1161.709f, 4171.192f, 54.70745f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2645, + Terminal.Constructor(Vector3(1162.348f, 4178.453f, 54.70745f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2646, + Terminal.Constructor(Vector3(1162.979f, 4185.717f, 54.70745f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2647, + Terminal.Constructor(Vector3(1168.22f, 4187.921f, 46.63045f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2648, + Terminal.Constructor(Vector3(1204.282f, 4232.949f, 54.13045f), spawn_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2908, + Terminal.Constructor(Vector3(1223.358f, 4176.239f, 45.78745f), ground_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1798, + VehicleSpawnPad.Constructor(Vector3(1222.457f, 4165.36f, 37.51045f), mb_pad_creation, Vector3(0, 0, 185)), + owning_building_guid = 50, + terminal_guid = 2908 + ) LocalObject(2517, ResourceSilo.Constructor(Vector3(1107.646f, 4112.951f, 66.98145f)), owning_building_guid = 50) - LocalObject(2533, SpawnTube.Constructor(Vector3(1162.318f, 4169.695f, 52.57345f), Vector3(0, 0, 185)), owning_building_guid = 50) - LocalObject(2534, SpawnTube.Constructor(Vector3(1162.953f, 4176.955f, 52.57345f), Vector3(0, 0, 185)), owning_building_guid = 50) - LocalObject(2535, SpawnTube.Constructor(Vector3(1163.589f, 4184.218f, 52.57345f), Vector3(0, 0, 185)), owning_building_guid = 50) - LocalObject(1816, ProximityTerminal.Constructor(Vector3(1134.009f, 4169.805f, 45.07345f), medical_terminal), owning_building_guid = 50) - LocalObject(1817, ProximityTerminal.Constructor(Vector3(1172.186f, 4177.225f, 65.07045f), medical_terminal), owning_building_guid = 50) - LocalObject(2051, ProximityTerminal.Constructor(Vector3(1106.237f, 4171.75f, 68.18145f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2052, Terminal.Constructor(Vector3(1106.237f, 4171.75f, 68.18145f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2054, ProximityTerminal.Constructor(Vector3(1113.922f, 4187.387f, 70.62545f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2055, Terminal.Constructor(Vector3(1113.922f, 4187.387f, 70.62545f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2057, ProximityTerminal.Constructor(Vector3(1153.655f, 4223.288f, 68.18145f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2058, Terminal.Constructor(Vector3(1153.655f, 4223.288f, 68.18145f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2060, ProximityTerminal.Constructor(Vector3(1168.281f, 4205.098f, 75.42045f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2061, Terminal.Constructor(Vector3(1168.281f, 4205.098f, 75.42045f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2063, ProximityTerminal.Constructor(Vector3(1213.576f, 4144.561f, 70.52345f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2064, Terminal.Constructor(Vector3(1213.576f, 4144.561f, 70.52345f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2066, ProximityTerminal.Constructor(Vector3(1235.184f, 4158.904f, 68.16845f), pad_landing_frame), owning_building_guid = 50) - LocalObject(2067, Terminal.Constructor(Vector3(1235.184f, 4158.904f, 68.16845f), air_rearm_terminal), owning_building_guid = 50) - LocalObject(2405, ProximityTerminal.Constructor(Vector3(1121.674f, 4237.55f, 59.72345f), repair_silo), owning_building_guid = 50) - LocalObject(2406, Terminal.Constructor(Vector3(1121.674f, 4237.55f, 59.72345f), ground_rearm_terminal), owning_building_guid = 50) - LocalObject(2409, ProximityTerminal.Constructor(Vector3(1168.064f, 4098.549f, 59.70195f), repair_silo), owning_building_guid = 50) - LocalObject(2410, Terminal.Constructor(Vector3(1168.064f, 4098.549f, 59.70195f), ground_rearm_terminal), owning_building_guid = 50) - LocalObject(1678, FacilityTurret.Constructor(Vector3(1081.49f, 4182.628f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 2533, + SpawnTube.Constructor(Vector3(1162.318f, 4169.695f, 52.57345f), Vector3(0, 0, 185)), + owning_building_guid = 50 + ) + LocalObject( + 2534, + SpawnTube.Constructor(Vector3(1162.953f, 4176.955f, 52.57345f), Vector3(0, 0, 185)), + owning_building_guid = 50 + ) + LocalObject( + 2535, + SpawnTube.Constructor(Vector3(1163.589f, 4184.218f, 52.57345f), Vector3(0, 0, 185)), + owning_building_guid = 50 + ) + LocalObject( + 1816, + ProximityTerminal.Constructor(Vector3(1134.009f, 4169.805f, 45.07345f), medical_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1817, + ProximityTerminal.Constructor(Vector3(1172.186f, 4177.225f, 65.07045f), medical_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2051, + ProximityTerminal.Constructor(Vector3(1106.237f, 4171.75f, 68.18145f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2052, + Terminal.Constructor(Vector3(1106.237f, 4171.75f, 68.18145f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2054, + ProximityTerminal.Constructor(Vector3(1113.922f, 4187.387f, 70.62545f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2055, + Terminal.Constructor(Vector3(1113.922f, 4187.387f, 70.62545f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2057, + ProximityTerminal.Constructor(Vector3(1153.655f, 4223.288f, 68.18145f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2058, + Terminal.Constructor(Vector3(1153.655f, 4223.288f, 68.18145f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2060, + ProximityTerminal.Constructor(Vector3(1168.281f, 4205.098f, 75.42045f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2061, + Terminal.Constructor(Vector3(1168.281f, 4205.098f, 75.42045f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2063, + ProximityTerminal.Constructor(Vector3(1213.576f, 4144.561f, 70.52345f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2064, + Terminal.Constructor(Vector3(1213.576f, 4144.561f, 70.52345f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2066, + ProximityTerminal.Constructor(Vector3(1235.184f, 4158.904f, 68.16845f), pad_landing_frame), + owning_building_guid = 50 + ) + LocalObject( + 2067, + Terminal.Constructor(Vector3(1235.184f, 4158.904f, 68.16845f), air_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2405, + ProximityTerminal.Constructor(Vector3(1121.674f, 4237.55f, 59.72345f), repair_silo), + owning_building_guid = 50 + ) + LocalObject( + 2406, + Terminal.Constructor(Vector3(1121.674f, 4237.55f, 59.72345f), ground_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 2409, + ProximityTerminal.Constructor(Vector3(1168.064f, 4098.549f, 59.70195f), repair_silo), + owning_building_guid = 50 + ) + LocalObject( + 2410, + Terminal.Constructor(Vector3(1168.064f, 4098.549f, 59.70195f), ground_rearm_terminal), + owning_building_guid = 50 + ) + LocalObject( + 1678, + FacilityTurret.Constructor(Vector3(1081.49f, 4182.628f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1678, 5064) - LocalObject(1679, FacilityTurret.Constructor(Vector3(1082.827f, 4109.257f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 1679, + FacilityTurret.Constructor(Vector3(1082.827f, 4109.257f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1679, 5065) - LocalObject(1680, FacilityTurret.Constructor(Vector3(1094.832f, 4246.474f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 1680, + FacilityTurret.Constructor(Vector3(1094.832f, 4246.474f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1680, 5066) - LocalObject(1683, FacilityTurret.Constructor(Vector3(1157.805f, 4042.009f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 1683, + FacilityTurret.Constructor(Vector3(1157.805f, 4042.009f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1683, 5067) - LocalObject(1684, FacilityTurret.Constructor(Vector3(1247.158f, 4034.192f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 1684, + FacilityTurret.Constructor(Vector3(1247.158f, 4034.192f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1684, 5068) - LocalObject(1685, FacilityTurret.Constructor(Vector3(1258.946f, 4232.108f, 68.47245f), manned_turret), owning_building_guid = 50) + LocalObject( + 1685, + FacilityTurret.Constructor(Vector3(1258.946f, 4232.108f, 68.47245f), manned_turret), + owning_building_guid = 50 + ) TurretToWeapon(1685, 5069) - LocalObject(2252, Painbox.Constructor(Vector3(1146.691f, 4146.022f, 48.54675f), painbox), owning_building_guid = 50) - LocalObject(2266, Painbox.Constructor(Vector3(1154.453f, 4178.463f, 56.84335f), painbox_continuous), owning_building_guid = 50) - LocalObject(2280, Painbox.Constructor(Vector3(1146.021f, 4160.873f, 48.23285f), painbox_door_radius), owning_building_guid = 50) - LocalObject(2294, Painbox.Constructor(Vector3(1139.06f, 4172.424f, 56.15575f), painbox_door_radius_continuous), owning_building_guid = 50) - LocalObject(2295, Painbox.Constructor(Vector3(1154.153f, 4163.877f, 55.24965f), painbox_door_radius_continuous), owning_building_guid = 50) - LocalObject(2296, Painbox.Constructor(Vector3(1157.371f, 4191.191f, 54.70135f), painbox_door_radius_continuous), owning_building_guid = 50) + LocalObject( + 2252, + Painbox.Constructor(Vector3(1146.691f, 4146.022f, 48.54675f), painbox), + owning_building_guid = 50 + ) + LocalObject( + 2266, + Painbox.Constructor(Vector3(1154.453f, 4178.463f, 56.84335f), painbox_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2280, + Painbox.Constructor(Vector3(1146.021f, 4160.873f, 48.23285f), painbox_door_radius), + owning_building_guid = 50 + ) + LocalObject( + 2294, + Painbox.Constructor(Vector3(1139.06f, 4172.424f, 56.15575f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2295, + Painbox.Constructor(Vector3(1154.153f, 4163.877f, 55.24965f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) + LocalObject( + 2296, + Painbox.Constructor(Vector3(1157.371f, 4191.191f, 54.70135f), painbox_door_radius_continuous), + owning_building_guid = 50 + ) LocalObject(297, Generator.Constructor(Vector3(1144.17f, 4142.881f, 43.77945f)), owning_building_guid = 50) - LocalObject(283, Terminal.Constructor(Vector3(1144.837f, 4151.046f, 45.07345f), gen_control), owning_building_guid = 50) + LocalObject( + 283, + Terminal.Constructor(Vector3(1144.837f, 4151.046f, 45.07345f), gen_control), + owning_building_guid = 50 + ) } Building8() def Building8(): Unit = { // Name: Karihi Type: tech_plant GUID: 53, MapID: 8 - LocalBuilding("Karihi", 53, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3756f, 5592f, 236.1003f), Vector3(0f, 0f, 31f), tech_plant))) - LocalObject(214, CaptureTerminal.Constructor(Vector3(3782.765f, 5556.646f, 251.2003f), capture_terminal), owning_building_guid = 53) + LocalBuilding( + "Karihi", + 53, + 8, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(3756f, 5592f, 236.1003f), Vector3(0f, 0f, 31f), tech_plant) + ) + ) + LocalObject( + 214, + CaptureTerminal.Constructor(Vector3(3782.765f, 5556.646f, 251.2003f), capture_terminal), + owning_building_guid = 53 + ) LocalObject(396, Door.Constructor(Vector3(3683.486f, 5573.938f, 245.6053f)), owning_building_guid = 53) LocalObject(398, Door.Constructor(Vector3(3692.855f, 5558.344f, 237.6423f)), owning_building_guid = 53) LocalObject(406, Door.Constructor(Vector3(3721.467f, 5510.727f, 245.6053f)), owning_building_guid = 53) @@ -1771,16 +5047,66 @@ object Map09 { // Searhus LocalObject(2768, Door.Constructor(Vector3(3781.122f, 5574.796f, 230.5543f)), owning_building_guid = 53) LocalObject(2769, Door.Constructor(Vector3(3784.876f, 5568.548f, 230.5543f)), owning_building_guid = 53) LocalObject(2770, Door.Constructor(Vector3(3788.632f, 5562.297f, 230.5543f)), owning_building_guid = 53) - LocalObject(993, IFFLock.Constructor(Vector3(3818.091f, 5572.846f, 237.6803f), Vector3(0, 0, 149)), owning_building_guid = 53, door_guid = 941) - LocalObject(1004, IFFLock.Constructor(Vector3(3697.548f, 5606.289f, 237.7883f), Vector3(0, 0, 329)), owning_building_guid = 53, door_guid = 624) - LocalObject(1090, IFFLock.Constructor(Vector3(3771.341f, 5555.649f, 252.5363f), Vector3(0, 0, 329)), owning_building_guid = 53, door_guid = 720) - LocalObject(1091, IFFLock.Constructor(Vector3(3773.573f, 5483.509f, 237.6523f), Vector3(0, 0, 239)), owning_building_guid = 53, door_guid = 422) - LocalObject(1092, IFFLock.Constructor(Vector3(3774.981f, 5577.019f, 252.6463f), Vector3(0, 0, 329)), owning_building_guid = 53, door_guid = 424) - LocalObject(1093, IFFLock.Constructor(Vector3(3783.74f, 5581.613f, 230.0363f), Vector3(0, 0, 329)), owning_building_guid = 53, door_guid = 722) - LocalObject(1094, IFFLock.Constructor(Vector3(3790.074f, 5592.708f, 222.5363f), Vector3(0, 0, 149)), owning_building_guid = 53, door_guid = 724) - LocalObject(1095, IFFLock.Constructor(Vector3(3793.429f, 5567.562f, 252.6463f), Vector3(0, 0, 149)), owning_building_guid = 53, door_guid = 425) - LocalObject(1096, IFFLock.Constructor(Vector3(3799.63f, 5561.272f, 230.0363f), Vector3(0, 0, 149)), owning_building_guid = 53, door_guid = 730) - LocalObject(1097, IFFLock.Constructor(Vector3(3806.095f, 5568.934f, 222.5363f), Vector3(0, 0, 239)), owning_building_guid = 53, door_guid = 732) + LocalObject( + 993, + IFFLock.Constructor(Vector3(3818.091f, 5572.846f, 237.6803f), Vector3(0, 0, 149)), + owning_building_guid = 53, + door_guid = 941 + ) + LocalObject( + 1004, + IFFLock.Constructor(Vector3(3697.548f, 5606.289f, 237.7883f), Vector3(0, 0, 329)), + owning_building_guid = 53, + door_guid = 624 + ) + LocalObject( + 1090, + IFFLock.Constructor(Vector3(3771.341f, 5555.649f, 252.5363f), Vector3(0, 0, 329)), + owning_building_guid = 53, + door_guid = 720 + ) + LocalObject( + 1091, + IFFLock.Constructor(Vector3(3773.573f, 5483.509f, 237.6523f), Vector3(0, 0, 239)), + owning_building_guid = 53, + door_guid = 422 + ) + LocalObject( + 1092, + IFFLock.Constructor(Vector3(3774.981f, 5577.019f, 252.6463f), Vector3(0, 0, 329)), + owning_building_guid = 53, + door_guid = 424 + ) + LocalObject( + 1093, + IFFLock.Constructor(Vector3(3783.74f, 5581.613f, 230.0363f), Vector3(0, 0, 329)), + owning_building_guid = 53, + door_guid = 722 + ) + LocalObject( + 1094, + IFFLock.Constructor(Vector3(3790.074f, 5592.708f, 222.5363f), Vector3(0, 0, 149)), + owning_building_guid = 53, + door_guid = 724 + ) + LocalObject( + 1095, + IFFLock.Constructor(Vector3(3793.429f, 5567.562f, 252.6463f), Vector3(0, 0, 149)), + owning_building_guid = 53, + door_guid = 425 + ) + LocalObject( + 1096, + IFFLock.Constructor(Vector3(3799.63f, 5561.272f, 230.0363f), Vector3(0, 0, 149)), + owning_building_guid = 53, + door_guid = 730 + ) + LocalObject( + 1097, + IFFLock.Constructor(Vector3(3806.095f, 5568.934f, 222.5363f), Vector3(0, 0, 239)), + owning_building_guid = 53, + door_guid = 732 + ) LocalObject(1380, Locker.Constructor(Vector3(3798.616f, 5587.466f, 221.2003f)), owning_building_guid = 53) LocalObject(1382, Locker.Constructor(Vector3(3799.751f, 5588.148f, 221.2003f)), owning_building_guid = 53) LocalObject(1383, Locker.Constructor(Vector3(3799.817f, 5564.827f, 228.9613f)), owning_building_guid = 53) @@ -1793,72 +5119,295 @@ object Map09 { // Searhus LocalObject(1390, Locker.Constructor(Vector3(3807.069f, 5592.545f, 221.2003f)), owning_building_guid = 53) LocalObject(1391, Locker.Constructor(Vector3(3808.214f, 5593.233f, 221.2003f)), owning_building_guid = 53) LocalObject(1392, Locker.Constructor(Vector3(3809.36f, 5593.922f, 221.2003f)), owning_building_guid = 53) - LocalObject(159, Terminal.Constructor(Vector3(3772.809f, 5573.099f, 251.8033f), air_vehicle_terminal), owning_building_guid = 53) - LocalObject(1803, VehicleSpawnPad.Constructor(Vector3(3758.205f, 5588.466f, 248.6783f), mb_pad_creation, Vector3(0, 0, -31)), owning_building_guid = 53, terminal_guid = 159) - LocalObject(160, Terminal.Constructor(Vector3(3783.037f, 5579.244f, 251.8033f), air_vehicle_terminal), owning_building_guid = 53) - LocalObject(1804, VehicleSpawnPad.Constructor(Vector3(3776.221f, 5599.291f, 248.6783f), mb_pad_creation, Vector3(0, 0, -31)), owning_building_guid = 53, terminal_guid = 160) - LocalObject(1891, Terminal.Constructor(Vector3(3772.277f, 5570.848f, 242.5303f), order_terminal), owning_building_guid = 53) - LocalObject(1892, Terminal.Constructor(Vector3(3795.88f, 5577.379f, 230.2903f), order_terminal), owning_building_guid = 53) - LocalObject(1893, Terminal.Constructor(Vector3(3797.832f, 5574.132f, 230.2903f), order_terminal), owning_building_guid = 53) - LocalObject(1894, Terminal.Constructor(Vector3(3799.753f, 5570.934f, 230.2903f), order_terminal), owning_building_guid = 53) - LocalObject(2667, Terminal.Constructor(Vector3(3766.801f, 5602.24f, 248.1233f), spawn_terminal), owning_building_guid = 53) - LocalObject(2668, Terminal.Constructor(Vector3(3782.66f, 5572.813f, 230.8343f), spawn_terminal), owning_building_guid = 53) - LocalObject(2669, Terminal.Constructor(Vector3(3784.518f, 5497.828f, 230.2573f), spawn_terminal), owning_building_guid = 53) - LocalObject(2670, Terminal.Constructor(Vector3(3786.411f, 5566.565f, 230.8343f), spawn_terminal), owning_building_guid = 53) - LocalObject(2671, Terminal.Constructor(Vector3(3787.225f, 5555.453f, 222.7573f), spawn_terminal), owning_building_guid = 53) - LocalObject(2672, Terminal.Constructor(Vector3(3790.17f, 5560.316f, 230.8343f), spawn_terminal), owning_building_guid = 53) - LocalObject(2673, Terminal.Constructor(Vector3(3798.409f, 5593.728f, 242.7823f), spawn_terminal), owning_building_guid = 53) - LocalObject(2912, Terminal.Constructor(Vector3(3735.751f, 5532.495f, 221.9143f), ground_vehicle_terminal), owning_building_guid = 53) - LocalObject(1802, VehicleSpawnPad.Constructor(Vector3(3730.085f, 5541.825f, 213.6373f), mb_pad_creation, Vector3(0, 0, -31)), owning_building_guid = 53, terminal_guid = 2912) + LocalObject( + 159, + Terminal.Constructor(Vector3(3772.809f, 5573.099f, 251.8033f), air_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1803, + VehicleSpawnPad.Constructor(Vector3(3758.205f, 5588.466f, 248.6783f), mb_pad_creation, Vector3(0, 0, -31)), + owning_building_guid = 53, + terminal_guid = 159 + ) + LocalObject( + 160, + Terminal.Constructor(Vector3(3783.037f, 5579.244f, 251.8033f), air_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1804, + VehicleSpawnPad.Constructor(Vector3(3776.221f, 5599.291f, 248.6783f), mb_pad_creation, Vector3(0, 0, -31)), + owning_building_guid = 53, + terminal_guid = 160 + ) + LocalObject( + 1891, + Terminal.Constructor(Vector3(3772.277f, 5570.848f, 242.5303f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1892, + Terminal.Constructor(Vector3(3795.88f, 5577.379f, 230.2903f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1893, + Terminal.Constructor(Vector3(3797.832f, 5574.132f, 230.2903f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1894, + Terminal.Constructor(Vector3(3799.753f, 5570.934f, 230.2903f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2667, + Terminal.Constructor(Vector3(3766.801f, 5602.24f, 248.1233f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2668, + Terminal.Constructor(Vector3(3782.66f, 5572.813f, 230.8343f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2669, + Terminal.Constructor(Vector3(3784.518f, 5497.828f, 230.2573f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2670, + Terminal.Constructor(Vector3(3786.411f, 5566.565f, 230.8343f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2671, + Terminal.Constructor(Vector3(3787.225f, 5555.453f, 222.7573f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2672, + Terminal.Constructor(Vector3(3790.17f, 5560.316f, 230.8343f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2673, + Terminal.Constructor(Vector3(3798.409f, 5593.728f, 242.7823f), spawn_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2912, + Terminal.Constructor(Vector3(3735.751f, 5532.495f, 221.9143f), ground_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1802, + VehicleSpawnPad.Constructor(Vector3(3730.085f, 5541.825f, 213.6373f), mb_pad_creation, Vector3(0, 0, -31)), + owning_building_guid = 53, + terminal_guid = 2912 + ) LocalObject(2520, ResourceSilo.Constructor(Vector3(3792.165f, 5651.709f, 243.1083f)), owning_building_guid = 53) - LocalObject(2563, SpawnTube.Constructor(Vector3(3781.287f, 5573.667f, 228.7003f), Vector3(0, 0, 329)), owning_building_guid = 53) - LocalObject(2564, SpawnTube.Constructor(Vector3(3785.041f, 5567.42f, 228.7003f), Vector3(0, 0, 329)), owning_building_guid = 53) - LocalObject(2565, SpawnTube.Constructor(Vector3(3788.796f, 5561.17f, 228.7003f), Vector3(0, 0, 329)), owning_building_guid = 53) - LocalObject(1823, ProximityTerminal.Constructor(Vector3(3777.729f, 5561.775f, 241.1973f), medical_terminal), owning_building_guid = 53) - LocalObject(1824, ProximityTerminal.Constructor(Vector3(3804.254f, 5590.218f, 221.2003f), medical_terminal), owning_building_guid = 53) - LocalObject(2084, ProximityTerminal.Constructor(Vector3(3715.995f, 5539.568f, 244.2953f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2085, Terminal.Constructor(Vector3(3715.995f, 5539.568f, 244.2953f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2087, ProximityTerminal.Constructor(Vector3(3725.045f, 5563.873f, 246.6503f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2088, Terminal.Constructor(Vector3(3725.045f, 5563.873f, 246.6503f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2099, ProximityTerminal.Constructor(Vector3(3797.273f, 5541.521f, 251.5473f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2100, Terminal.Constructor(Vector3(3797.273f, 5541.521f, 251.5473f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2105, ProximityTerminal.Constructor(Vector3(3819.797f, 5535.401f, 244.3083f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2106, Terminal.Constructor(Vector3(3819.797f, 5535.401f, 244.3083f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2108, ProximityTerminal.Constructor(Vector3(3827.866f, 5604.968f, 244.3083f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2109, Terminal.Constructor(Vector3(3827.866f, 5604.968f, 244.3083f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2111, ProximityTerminal.Constructor(Vector3(3830.84f, 5587.8f, 246.7523f), pad_landing_frame), owning_building_guid = 53) - LocalObject(2112, Terminal.Constructor(Vector3(3830.84f, 5587.8f, 246.7523f), air_rearm_terminal), owning_building_guid = 53) - LocalObject(2429, ProximityTerminal.Constructor(Vector3(3734.82f, 5627.849f, 235.8288f), repair_silo), owning_building_guid = 53) - LocalObject(2430, Terminal.Constructor(Vector3(3734.82f, 5627.849f, 235.8288f), ground_rearm_terminal), owning_building_guid = 53) - LocalObject(2441, ProximityTerminal.Constructor(Vector3(3854.053f, 5542.662f, 235.8503f), repair_silo), owning_building_guid = 53) - LocalObject(2442, Terminal.Constructor(Vector3(3854.053f, 5542.662f, 235.8503f), ground_rearm_terminal), owning_building_guid = 53) - LocalObject(1703, FacilityTurret.Constructor(Vector3(3633.003f, 5633.424f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 2563, + SpawnTube.Constructor(Vector3(3781.287f, 5573.667f, 228.7003f), Vector3(0, 0, 329)), + owning_building_guid = 53 + ) + LocalObject( + 2564, + SpawnTube.Constructor(Vector3(3785.041f, 5567.42f, 228.7003f), Vector3(0, 0, 329)), + owning_building_guid = 53 + ) + LocalObject( + 2565, + SpawnTube.Constructor(Vector3(3788.796f, 5561.17f, 228.7003f), Vector3(0, 0, 329)), + owning_building_guid = 53 + ) + LocalObject( + 1823, + ProximityTerminal.Constructor(Vector3(3777.729f, 5561.775f, 241.1973f), medical_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1824, + ProximityTerminal.Constructor(Vector3(3804.254f, 5590.218f, 221.2003f), medical_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2084, + ProximityTerminal.Constructor(Vector3(3715.995f, 5539.568f, 244.2953f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2085, + Terminal.Constructor(Vector3(3715.995f, 5539.568f, 244.2953f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2087, + ProximityTerminal.Constructor(Vector3(3725.045f, 5563.873f, 246.6503f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2088, + Terminal.Constructor(Vector3(3725.045f, 5563.873f, 246.6503f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2099, + ProximityTerminal.Constructor(Vector3(3797.273f, 5541.521f, 251.5473f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2100, + Terminal.Constructor(Vector3(3797.273f, 5541.521f, 251.5473f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2105, + ProximityTerminal.Constructor(Vector3(3819.797f, 5535.401f, 244.3083f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2106, + Terminal.Constructor(Vector3(3819.797f, 5535.401f, 244.3083f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2108, + ProximityTerminal.Constructor(Vector3(3827.866f, 5604.968f, 244.3083f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2109, + Terminal.Constructor(Vector3(3827.866f, 5604.968f, 244.3083f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2111, + ProximityTerminal.Constructor(Vector3(3830.84f, 5587.8f, 246.7523f), pad_landing_frame), + owning_building_guid = 53 + ) + LocalObject( + 2112, + Terminal.Constructor(Vector3(3830.84f, 5587.8f, 246.7523f), air_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2429, + ProximityTerminal.Constructor(Vector3(3734.82f, 5627.849f, 235.8288f), repair_silo), + owning_building_guid = 53 + ) + LocalObject( + 2430, + Terminal.Constructor(Vector3(3734.82f, 5627.849f, 235.8288f), ground_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2441, + ProximityTerminal.Constructor(Vector3(3854.053f, 5542.662f, 235.8503f), repair_silo), + owning_building_guid = 53 + ) + LocalObject( + 2442, + Terminal.Constructor(Vector3(3854.053f, 5542.662f, 235.8503f), ground_rearm_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1703, + FacilityTurret.Constructor(Vector3(3633.003f, 5633.424f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1703, 5070) - LocalObject(1707, FacilityTurret.Constructor(Vector3(3709.887f, 5679.62f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 1707, + FacilityTurret.Constructor(Vector3(3709.887f, 5679.62f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1707, 5071) - LocalObject(1709, FacilityTurret.Constructor(Vector3(3739.799f, 5466.378f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 1709, + FacilityTurret.Constructor(Vector3(3739.799f, 5466.378f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1709, 5072) - LocalObject(1712, FacilityTurret.Constructor(Vector3(3810.072f, 5669.286f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 1712, + FacilityTurret.Constructor(Vector3(3810.072f, 5669.286f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1712, 5073) - LocalObject(1717, FacilityTurret.Constructor(Vector3(3854.28f, 5610.714f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 1717, + FacilityTurret.Constructor(Vector3(3854.28f, 5610.714f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1717, 5074) - LocalObject(1718, FacilityTurret.Constructor(Vector3(3881.014f, 5551.219f, 244.5993f), manned_turret), owning_building_guid = 53) + LocalObject( + 1718, + FacilityTurret.Constructor(Vector3(3881.014f, 5551.219f, 244.5993f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1718, 5075) - LocalObject(2256, Painbox.Constructor(Vector3(3780.015f, 5602.004f, 224.6736f), painbox), owning_building_guid = 53) - LocalObject(2270, Painbox.Constructor(Vector3(3792.804f, 5571.196f, 232.9702f), painbox_continuous), owning_building_guid = 53) - LocalObject(2284, Painbox.Constructor(Vector3(3789.286f, 5590.384f, 224.3597f), painbox_door_radius), owning_building_guid = 53) - LocalObject(2306, Painbox.Constructor(Vector3(3784.474f, 5583.173f, 231.3765f), painbox_door_radius_continuous), owning_building_guid = 53) - LocalObject(2307, Painbox.Constructor(Vector3(3797.925f, 5559.184f, 230.8282f), painbox_door_radius_continuous), owning_building_guid = 53) - LocalObject(2308, Painbox.Constructor(Vector3(3801.708f, 5585.13f, 232.2826f), painbox_door_radius_continuous), owning_building_guid = 53) + LocalObject( + 2256, + Painbox.Constructor(Vector3(3780.015f, 5602.004f, 224.6736f), painbox), + owning_building_guid = 53 + ) + LocalObject( + 2270, + Painbox.Constructor(Vector3(3792.804f, 5571.196f, 232.9702f), painbox_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2284, + Painbox.Constructor(Vector3(3789.286f, 5590.384f, 224.3597f), painbox_door_radius), + owning_building_guid = 53 + ) + LocalObject( + 2306, + Painbox.Constructor(Vector3(3784.474f, 5583.173f, 231.3765f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2307, + Painbox.Constructor(Vector3(3797.925f, 5559.184f, 230.8282f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2308, + Painbox.Constructor(Vector3(3801.708f, 5585.13f, 232.2826f), painbox_door_radius_continuous), + owning_building_guid = 53 + ) LocalObject(301, Generator.Constructor(Vector3(3780.208f, 5606.027f, 219.9063f)), owning_building_guid = 53) - LocalObject(287, Terminal.Constructor(Vector3(3784.468f, 5599.029f, 221.2003f), gen_control), owning_building_guid = 53) + LocalObject( + 287, + Terminal.Constructor(Vector3(3784.468f, 5599.029f, 221.2003f), gen_control), + owning_building_guid = 53 + ) } Building11() def Building11(): Unit = { // Name: Ngaru Type: tech_plant GUID: 56, MapID: 11 - LocalBuilding("Ngaru", 56, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4100f, 4200f, 204.9974f), Vector3(0f, 0f, 309f), tech_plant))) - LocalObject(216, CaptureTerminal.Constructor(Vector3(4068.716f, 4168.575f, 220.0974f), capture_terminal), owning_building_guid = 56) + LocalBuilding( + "Ngaru", + 56, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4100f, 4200f, 204.9974f), + Vector3(0f, 0f, 309f), + tech_plant + ) + ) + ) + LocalObject( + 216, + CaptureTerminal.Constructor(Vector3(4068.716f, 4168.575f, 220.0974f), capture_terminal), + owning_building_guid = 56 + ) LocalObject(433, Door.Constructor(Vector3(3997.113f, 4168.154f, 206.6184f)), owning_building_guid = 56) LocalObject(434, Door.Constructor(Vector3(4000.573f, 4211.438f, 206.5394f)), owning_building_guid = 56) LocalObject(439, Door.Constructor(Vector3(4014.711f, 4222.886f, 214.5024f)), owning_building_guid = 56) @@ -1897,16 +5446,66 @@ object Map09 { // Searhus LocalObject(2773, Door.Constructor(Vector3(4075.128f, 4163.552f, 199.4514f)), owning_building_guid = 56) LocalObject(2774, Door.Constructor(Vector3(4080.795f, 4168.142f, 199.4514f)), owning_building_guid = 56) LocalObject(2775, Door.Constructor(Vector3(4086.46f, 4172.729f, 199.4514f)), owning_building_guid = 56) - LocalObject(994, IFFLock.Constructor(Vector3(4089.674f, 4135.848f, 206.5774f), Vector3(0, 0, 231)), owning_building_guid = 56, door_guid = 942) - LocalObject(1005, IFFLock.Constructor(Vector3(4106.015f, 4259.872f, 206.6854f), Vector3(0, 0, 411)), owning_building_guid = 56, door_guid = 625) - LocalObject(1100, IFFLock.Constructor(Vector3(3995.01f, 4167.499f, 206.5494f), Vector3(0, 0, 321)), owning_building_guid = 56, door_guid = 433) - LocalObject(1105, IFFLock.Constructor(Vector3(4066.138f, 4179.749f, 221.4334f), Vector3(0, 0, 51)), owning_building_guid = 56, door_guid = 744) - LocalObject(1106, IFFLock.Constructor(Vector3(4075.643f, 4152.518f, 198.9334f), Vector3(0, 0, 231)), owning_building_guid = 56, door_guid = 748) - LocalObject(1107, IFFLock.Constructor(Vector3(4081.009f, 4159.534f, 221.5434f), Vector3(0, 0, 231)), owning_building_guid = 56, door_guid = 444) - LocalObject(1108, IFFLock.Constructor(Vector3(4084.131f, 4147.183f, 191.4334f), Vector3(0, 0, 321)), owning_building_guid = 56, door_guid = 751) - LocalObject(1109, IFFLock.Constructor(Vector3(4087.806f, 4179.119f, 221.5434f), Vector3(0, 0, 51)), owning_building_guid = 56, door_guid = 445) - LocalObject(1110, IFFLock.Constructor(Vector3(4093.575f, 4171.085f, 198.9334f), Vector3(0, 0, 51)), owning_building_guid = 56, door_guid = 752) - LocalObject(1111, IFFLock.Constructor(Vector3(4105.443f, 4166.355f, 191.4334f), Vector3(0, 0, 231)), owning_building_guid = 56, door_guid = 754) + LocalObject( + 994, + IFFLock.Constructor(Vector3(4089.674f, 4135.848f, 206.5774f), Vector3(0, 0, 231)), + owning_building_guid = 56, + door_guid = 942 + ) + LocalObject( + 1005, + IFFLock.Constructor(Vector3(4106.015f, 4259.872f, 206.6854f), Vector3(0, 0, 411)), + owning_building_guid = 56, + door_guid = 625 + ) + LocalObject( + 1100, + IFFLock.Constructor(Vector3(3995.01f, 4167.499f, 206.5494f), Vector3(0, 0, 321)), + owning_building_guid = 56, + door_guid = 433 + ) + LocalObject( + 1105, + IFFLock.Constructor(Vector3(4066.138f, 4179.749f, 221.4334f), Vector3(0, 0, 51)), + owning_building_guid = 56, + door_guid = 744 + ) + LocalObject( + 1106, + IFFLock.Constructor(Vector3(4075.643f, 4152.518f, 198.9334f), Vector3(0, 0, 231)), + owning_building_guid = 56, + door_guid = 748 + ) + LocalObject( + 1107, + IFFLock.Constructor(Vector3(4081.009f, 4159.534f, 221.5434f), Vector3(0, 0, 231)), + owning_building_guid = 56, + door_guid = 444 + ) + LocalObject( + 1108, + IFFLock.Constructor(Vector3(4084.131f, 4147.183f, 191.4334f), Vector3(0, 0, 321)), + owning_building_guid = 56, + door_guid = 751 + ) + LocalObject( + 1109, + IFFLock.Constructor(Vector3(4087.806f, 4179.119f, 221.5434f), Vector3(0, 0, 51)), + owning_building_guid = 56, + door_guid = 445 + ) + LocalObject( + 1110, + IFFLock.Constructor(Vector3(4093.575f, 4171.085f, 198.9334f), Vector3(0, 0, 51)), + owning_building_guid = 56, + door_guid = 752 + ) + LocalObject( + 1111, + IFFLock.Constructor(Vector3(4105.443f, 4166.355f, 191.4334f), Vector3(0, 0, 231)), + owning_building_guid = 56, + door_guid = 754 + ) LocalObject(1401, Locker.Constructor(Vector3(4079.189f, 4152.828f, 197.8584f)), owning_building_guid = 56) LocalObject(1402, Locker.Constructor(Vector3(4079.922f, 4151.923f, 197.8584f)), owning_building_guid = 56) LocalObject(1403, Locker.Constructor(Vector3(4080.644f, 4151.032f, 197.8584f)), owning_building_guid = 56) @@ -1919,82 +5518,320 @@ object Map09 { // Searhus LocalObject(1410, Locker.Constructor(Vector3(4107.647f, 4149.504f, 190.0974f)), owning_building_guid = 56) LocalObject(1411, Locker.Constructor(Vector3(4108.488f, 4148.466f, 190.0974f)), owning_building_guid = 56) LocalObject(1412, Locker.Constructor(Vector3(4109.329f, 4147.427f, 190.0974f)), owning_building_guid = 56) - LocalObject(161, Terminal.Constructor(Vector3(4083.622f, 4180.724f, 220.7004f), air_vehicle_terminal), owning_building_guid = 56) - LocalObject(1806, VehicleSpawnPad.Constructor(Vector3(4096.807f, 4197.325f, 217.5754f), mb_pad_creation, Vector3(0, 0, 51)), owning_building_guid = 56, terminal_guid = 161) - LocalObject(162, Terminal.Constructor(Vector3(4091.131f, 4171.451f, 220.7004f), air_vehicle_terminal), owning_building_guid = 56) - LocalObject(1807, VehicleSpawnPad.Constructor(Vector3(4110.034f, 4180.99f, 217.5754f), mb_pad_creation, Vector3(0, 0, 51)), owning_building_guid = 56, terminal_guid = 162) - LocalObject(1898, Terminal.Constructor(Vector3(4081.319f, 4180.938f, 211.4274f), order_terminal), owning_building_guid = 56) - LocalObject(1899, Terminal.Constructor(Vector3(4085.228f, 4153.741f, 199.1874f), order_terminal), owning_building_guid = 56) - LocalObject(1900, Terminal.Constructor(Vector3(4088.127f, 4156.088f, 199.1874f), order_terminal), owning_building_guid = 56) - LocalObject(1901, Terminal.Constructor(Vector3(4091.072f, 4158.473f, 199.1874f), order_terminal), owning_building_guid = 56) - LocalObject(2675, Terminal.Constructor(Vector3(4010.713f, 4158.654f, 199.1544f), spawn_terminal), owning_building_guid = 56) - LocalObject(2676, Terminal.Constructor(Vector3(4068.154f, 4163.993f, 191.6544f), spawn_terminal), owning_building_guid = 56) - LocalObject(2677, Terminal.Constructor(Vector3(4073.38f, 4161.753f, 199.7314f), spawn_terminal), owning_building_guid = 56) - LocalObject(2678, Terminal.Constructor(Vector3(4079.045f, 4166.345f, 199.7314f), spawn_terminal), owning_building_guid = 56) - LocalObject(2679, Terminal.Constructor(Vector3(4084.71f, 4170.929f, 199.7314f), spawn_terminal), owning_building_guid = 56) - LocalObject(2680, Terminal.Constructor(Vector3(4107.614f, 4158.244f, 211.6794f), spawn_terminal), owning_building_guid = 56) - LocalObject(2681, Terminal.Constructor(Vector3(4111.644f, 4190.73f, 217.0204f), spawn_terminal), owning_building_guid = 56) - LocalObject(2913, Terminal.Constructor(Vector3(4038.256f, 4211.77f, 190.8114f), ground_vehicle_terminal), owning_building_guid = 56) - LocalObject(1805, VehicleSpawnPad.Constructor(Vector3(4046.707f, 4218.68f, 182.5344f), mb_pad_creation, Vector3(0, 0, 51)), owning_building_guid = 56, terminal_guid = 2913) + LocalObject( + 161, + Terminal.Constructor(Vector3(4083.622f, 4180.724f, 220.7004f), air_vehicle_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1806, + VehicleSpawnPad.Constructor(Vector3(4096.807f, 4197.325f, 217.5754f), mb_pad_creation, Vector3(0, 0, 51)), + owning_building_guid = 56, + terminal_guid = 161 + ) + LocalObject( + 162, + Terminal.Constructor(Vector3(4091.131f, 4171.451f, 220.7004f), air_vehicle_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1807, + VehicleSpawnPad.Constructor(Vector3(4110.034f, 4180.99f, 217.5754f), mb_pad_creation, Vector3(0, 0, 51)), + owning_building_guid = 56, + terminal_guid = 162 + ) + LocalObject( + 1898, + Terminal.Constructor(Vector3(4081.319f, 4180.938f, 211.4274f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1899, + Terminal.Constructor(Vector3(4085.228f, 4153.741f, 199.1874f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1900, + Terminal.Constructor(Vector3(4088.127f, 4156.088f, 199.1874f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1901, + Terminal.Constructor(Vector3(4091.072f, 4158.473f, 199.1874f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2675, + Terminal.Constructor(Vector3(4010.713f, 4158.654f, 199.1544f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2676, + Terminal.Constructor(Vector3(4068.154f, 4163.993f, 191.6544f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2677, + Terminal.Constructor(Vector3(4073.38f, 4161.753f, 199.7314f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2678, + Terminal.Constructor(Vector3(4079.045f, 4166.345f, 199.7314f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2679, + Terminal.Constructor(Vector3(4084.71f, 4170.929f, 199.7314f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2680, + Terminal.Constructor(Vector3(4107.614f, 4158.244f, 211.6794f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2681, + Terminal.Constructor(Vector3(4111.644f, 4190.73f, 217.0204f), spawn_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2913, + Terminal.Constructor(Vector3(4038.256f, 4211.77f, 190.8114f), ground_vehicle_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1805, + VehicleSpawnPad.Constructor(Vector3(4046.707f, 4218.68f, 182.5344f), mb_pad_creation, Vector3(0, 0, 51)), + owning_building_guid = 56, + terminal_guid = 2913 + ) LocalObject(2522, ResourceSilo.Constructor(Vector3(4164.162f, 4172.497f, 212.0054f)), owning_building_guid = 56) - LocalObject(2568, SpawnTube.Constructor(Vector3(4074.035f, 4163.233f, 197.5974f), Vector3(0, 0, 51)), owning_building_guid = 56) - LocalObject(2569, SpawnTube.Constructor(Vector3(4079.701f, 4167.821f, 197.5974f), Vector3(0, 0, 51)), owning_building_guid = 56) - LocalObject(2570, SpawnTube.Constructor(Vector3(4085.365f, 4172.408f, 197.5974f), Vector3(0, 0, 51)), owning_building_guid = 56) - LocalObject(1825, ProximityTerminal.Constructor(Vector3(4073.094f, 4174.275f, 210.0944f), medical_terminal), owning_building_guid = 56) - LocalObject(1826, ProximityTerminal.Constructor(Vector3(4104.951f, 4151.968f, 190.0974f), medical_terminal), owning_building_guid = 56) - LocalObject(2114, ProximityTerminal.Constructor(Vector3(4042.51f, 4232.319f, 213.1924f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2115, Terminal.Constructor(Vector3(4042.51f, 4232.319f, 213.1924f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2117, ProximityTerminal.Constructor(Vector3(4052.831f, 4128.947f, 213.2054f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2118, Terminal.Constructor(Vector3(4052.831f, 4128.947f, 213.2054f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2120, ProximityTerminal.Constructor(Vector3(4055.756f, 4152.104f, 220.4444f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2121, Terminal.Constructor(Vector3(4055.756f, 4152.104f, 220.4444f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2123, ProximityTerminal.Constructor(Vector3(4067.838f, 4226.739f, 215.5474f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2124, Terminal.Constructor(Vector3(4067.838f, 4226.739f, 215.5474f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2126, ProximityTerminal.Constructor(Vector3(4106.257f, 4125.304f, 215.6494f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2127, Terminal.Constructor(Vector3(4106.257f, 4125.304f, 215.6494f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2129, ProximityTerminal.Constructor(Vector3(4122.843f, 4130.638f, 213.2054f), pad_landing_frame), owning_building_guid = 56) - LocalObject(2130, Terminal.Constructor(Vector3(4122.843f, 4130.638f, 213.2054f), air_rearm_terminal), owning_building_guid = 56) - LocalObject(2445, ProximityTerminal.Constructor(Vector3(4064.788f, 4096.035f, 204.7474f), repair_silo), owning_building_guid = 56) - LocalObject(2446, Terminal.Constructor(Vector3(4064.788f, 4096.035f, 204.7474f), ground_rearm_terminal), owning_building_guid = 56) - LocalObject(2449, ProximityTerminal.Constructor(Vector3(4132.552f, 4225.963f, 204.7259f), repair_silo), owning_building_guid = 56) - LocalObject(2450, Terminal.Constructor(Vector3(4132.552f, 4225.963f, 204.7259f), ground_rearm_terminal), owning_building_guid = 56) - LocalObject(1719, FacilityTurret.Constructor(Vector3(3973.346f, 4198.56f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 2568, + SpawnTube.Constructor(Vector3(4074.035f, 4163.233f, 197.5974f), Vector3(0, 0, 51)), + owning_building_guid = 56 + ) + LocalObject( + 2569, + SpawnTube.Constructor(Vector3(4079.701f, 4167.821f, 197.5974f), Vector3(0, 0, 51)), + owning_building_guid = 56 + ) + LocalObject( + 2570, + SpawnTube.Constructor(Vector3(4085.365f, 4172.408f, 197.5974f), Vector3(0, 0, 51)), + owning_building_guid = 56 + ) + LocalObject( + 1825, + ProximityTerminal.Constructor(Vector3(4073.094f, 4174.275f, 210.0944f), medical_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1826, + ProximityTerminal.Constructor(Vector3(4104.951f, 4151.968f, 190.0974f), medical_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2114, + ProximityTerminal.Constructor(Vector3(4042.51f, 4232.319f, 213.1924f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2115, + Terminal.Constructor(Vector3(4042.51f, 4232.319f, 213.1924f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2117, + ProximityTerminal.Constructor(Vector3(4052.831f, 4128.947f, 213.2054f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2118, + Terminal.Constructor(Vector3(4052.831f, 4128.947f, 213.2054f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2120, + ProximityTerminal.Constructor(Vector3(4055.756f, 4152.104f, 220.4444f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2121, + Terminal.Constructor(Vector3(4055.756f, 4152.104f, 220.4444f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2123, + ProximityTerminal.Constructor(Vector3(4067.838f, 4226.739f, 215.5474f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2124, + Terminal.Constructor(Vector3(4067.838f, 4226.739f, 215.5474f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2126, + ProximityTerminal.Constructor(Vector3(4106.257f, 4125.304f, 215.6494f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2127, + Terminal.Constructor(Vector3(4106.257f, 4125.304f, 215.6494f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2129, + ProximityTerminal.Constructor(Vector3(4122.843f, 4130.638f, 213.2054f), pad_landing_frame), + owning_building_guid = 56 + ) + LocalObject( + 2130, + Terminal.Constructor(Vector3(4122.843f, 4130.638f, 213.2054f), air_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2445, + ProximityTerminal.Constructor(Vector3(4064.788f, 4096.035f, 204.7474f), repair_silo), + owning_building_guid = 56 + ) + LocalObject( + 2446, + Terminal.Constructor(Vector3(4064.788f, 4096.035f, 204.7474f), ground_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2449, + ProximityTerminal.Constructor(Vector3(4132.552f, 4225.963f, 204.7259f), repair_silo), + owning_building_guid = 56 + ) + LocalObject( + 2450, + Terminal.Constructor(Vector3(4132.552f, 4225.963f, 204.7259f), ground_rearm_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1719, + FacilityTurret.Constructor(Vector3(3973.346f, 4198.56f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1719, 5076) - LocalObject(1722, FacilityTurret.Constructor(Vector3(4077.014f, 4070.527f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 1722, + FacilityTurret.Constructor(Vector3(4077.014f, 4070.527f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1722, 5077) - LocalObject(1723, FacilityTurret.Constructor(Vector3(4123.903f, 4327.565f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 1723, + FacilityTurret.Constructor(Vector3(4123.903f, 4327.565f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1723, 5078) - LocalObject(1724, FacilityTurret.Constructor(Vector3(4132.21f, 4105.281f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 1724, + FacilityTurret.Constructor(Vector3(4132.21f, 4105.281f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1724, 5079) - LocalObject(1725, FacilityTurret.Constructor(Vector3(4180.35f, 4257.859f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 1725, + FacilityTurret.Constructor(Vector3(4180.35f, 4257.859f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1725, 5080) - LocalObject(1726, FacilityTurret.Constructor(Vector3(4184.059f, 4157.21f, 213.4964f), manned_turret), owning_building_guid = 56) + LocalObject( + 1726, + FacilityTurret.Constructor(Vector3(4184.059f, 4157.21f, 213.4964f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1726, 5081) - LocalObject(2257, Painbox.Constructor(Vector3(4113.249f, 4177.611f, 193.5707f), painbox), owning_building_guid = 56) - LocalObject(2271, Painbox.Constructor(Vector3(4084.521f, 4160.659f, 201.8673f), painbox_continuous), owning_building_guid = 56) - LocalObject(2285, Painbox.Constructor(Vector3(4103.032f, 4166.813f, 193.2568f), painbox_door_radius), owning_building_guid = 56) - LocalObject(2309, Painbox.Constructor(Vector3(4073.338f, 4153.917f, 199.7253f), painbox_door_radius_continuous), owning_building_guid = 56) - LocalObject(2310, Painbox.Constructor(Vector3(4095.222f, 4170.575f, 200.2736f), painbox_door_radius_continuous), owning_building_guid = 56) - LocalObject(2311, Painbox.Constructor(Vector3(4099.558f, 4153.781f, 201.1797f), painbox_door_radius_continuous), owning_building_guid = 56) + LocalObject( + 2257, + Painbox.Constructor(Vector3(4113.249f, 4177.611f, 193.5707f), painbox), + owning_building_guid = 56 + ) + LocalObject( + 2271, + Painbox.Constructor(Vector3(4084.521f, 4160.659f, 201.8673f), painbox_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2285, + Painbox.Constructor(Vector3(4103.032f, 4166.813f, 193.2568f), painbox_door_radius), + owning_building_guid = 56 + ) + LocalObject( + 2309, + Painbox.Constructor(Vector3(4073.338f, 4153.917f, 199.7253f), painbox_door_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2310, + Painbox.Constructor(Vector3(4095.222f, 4170.575f, 200.2736f), painbox_door_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2311, + Painbox.Constructor(Vector3(4099.558f, 4153.781f, 201.1797f), painbox_door_radius_continuous), + owning_building_guid = 56 + ) LocalObject(302, Generator.Constructor(Vector3(4117.259f, 4177.979f, 188.8034f)), owning_building_guid = 56) - LocalObject(288, Terminal.Constructor(Vector3(4110.922f, 4172.788f, 190.0974f), gen_control), owning_building_guid = 56) + LocalObject( + 288, + Terminal.Constructor(Vector3(4110.922f, 4172.788f, 190.0974f), gen_control), + owning_building_guid = 56 + ) } Building47() def Building47(): Unit = { // Name: N_Tara_Tower Type: tower_a GUID: 59, MapID: 47 - LocalBuilding("N_Tara_Tower", 59, 47, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1134f, 4500f, 60.84628f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2619, CaptureTerminal.Constructor(Vector3(1150.587f, 4499.897f, 70.84528f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "N_Tara_Tower", + 59, + 47, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1134f, 4500f, 60.84628f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2619, + CaptureTerminal.Constructor(Vector3(1150.587f, 4499.897f, 70.84528f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(317, Door.Constructor(Vector3(1146f, 4492f, 62.36728f)), owning_building_guid = 59) LocalObject(318, Door.Constructor(Vector3(1146f, 4492f, 82.36628f)), owning_building_guid = 59) LocalObject(319, Door.Constructor(Vector3(1146f, 4508f, 62.36728f)), owning_building_guid = 59) LocalObject(320, Door.Constructor(Vector3(1146f, 4508f, 82.36628f)), owning_building_guid = 59) LocalObject(2736, Door.Constructor(Vector3(1145.146f, 4488.794f, 52.18228f)), owning_building_guid = 59) LocalObject(2737, Door.Constructor(Vector3(1145.146f, 4505.204f, 52.18228f)), owning_building_guid = 59) - LocalObject(1006, IFFLock.Constructor(Vector3(1143.957f, 4508.811f, 62.30728f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 319) - LocalObject(1007, IFFLock.Constructor(Vector3(1143.957f, 4508.811f, 82.30728f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 320) - LocalObject(1010, IFFLock.Constructor(Vector3(1148.047f, 4491.189f, 62.30728f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 317) - LocalObject(1011, IFFLock.Constructor(Vector3(1148.047f, 4491.189f, 82.30728f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 318) + LocalObject( + 1006, + IFFLock.Constructor(Vector3(1143.957f, 4508.811f, 62.30728f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 319 + ) + LocalObject( + 1007, + IFFLock.Constructor(Vector3(1143.957f, 4508.811f, 82.30728f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 320 + ) + LocalObject( + 1010, + IFFLock.Constructor(Vector3(1148.047f, 4491.189f, 62.30728f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 317 + ) + LocalObject( + 1011, + IFFLock.Constructor(Vector3(1148.047f, 4491.189f, 82.30728f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 318 + ) LocalObject(1253, Locker.Constructor(Vector3(1149.716f, 4484.963f, 50.84028f)), owning_building_guid = 59) LocalObject(1254, Locker.Constructor(Vector3(1149.751f, 4506.835f, 50.84028f)), owning_building_guid = 59) LocalObject(1256, Locker.Constructor(Vector3(1151.053f, 4484.963f, 50.84028f)), owning_building_guid = 59) @@ -2003,35 +5840,106 @@ object Map09 { // Searhus LocalObject(1261, Locker.Constructor(Vector3(1153.741f, 4506.835f, 50.84028f)), owning_building_guid = 59) LocalObject(1262, Locker.Constructor(Vector3(1155.143f, 4484.963f, 50.84028f)), owning_building_guid = 59) LocalObject(1263, Locker.Constructor(Vector3(1155.143f, 4506.835f, 50.84028f)), owning_building_guid = 59) - LocalObject(1843, Terminal.Constructor(Vector3(1155.445f, 4490.129f, 52.17828f), order_terminal), owning_building_guid = 59) - LocalObject(1844, Terminal.Constructor(Vector3(1155.445f, 4495.853f, 52.17828f), order_terminal), owning_building_guid = 59) - LocalObject(1845, Terminal.Constructor(Vector3(1155.445f, 4501.234f, 52.17828f), order_terminal), owning_building_guid = 59) - LocalObject(2531, SpawnTube.Constructor(Vector3(1144.706f, 4487.742f, 50.32828f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2532, SpawnTube.Constructor(Vector3(1144.706f, 4504.152f, 50.32828f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1681, FacilityTurret.Constructor(Vector3(1121.32f, 4487.295f, 79.78828f), manned_turret), owning_building_guid = 59) + LocalObject( + 1843, + Terminal.Constructor(Vector3(1155.445f, 4490.129f, 52.17828f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1844, + Terminal.Constructor(Vector3(1155.445f, 4495.853f, 52.17828f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1845, + Terminal.Constructor(Vector3(1155.445f, 4501.234f, 52.17828f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2531, + SpawnTube.Constructor(Vector3(1144.706f, 4487.742f, 50.32828f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2532, + SpawnTube.Constructor(Vector3(1144.706f, 4504.152f, 50.32828f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1681, + FacilityTurret.Constructor(Vector3(1121.32f, 4487.295f, 79.78828f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1681, 5082) - LocalObject(1682, FacilityTurret.Constructor(Vector3(1156.647f, 4512.707f, 79.78828f), manned_turret), owning_building_guid = 59) + LocalObject( + 1682, + FacilityTurret.Constructor(Vector3(1156.647f, 4512.707f, 79.78828f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1682, 5083) - LocalObject(2336, Painbox.Constructor(Vector3(1139.235f, 4493.803f, 52.34538f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2337, Painbox.Constructor(Vector3(1150.889f, 4502.086f, 50.94628f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2338, Painbox.Constructor(Vector3(1150.975f, 4490.223f, 50.94628f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 2336, + Painbox.Constructor(Vector3(1139.235f, 4493.803f, 52.34538f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2337, + Painbox.Constructor(Vector3(1150.889f, 4502.086f, 50.94628f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2338, + Painbox.Constructor(Vector3(1150.975f, 4490.223f, 50.94628f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building20() def Building20(): Unit = { // Name: SE_Wakea_Tower Type: tower_a GUID: 60, MapID: 20 - LocalBuilding("SE_Wakea_Tower", 60, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1934f, 5188f, 54.91245f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2622, CaptureTerminal.Constructor(Vector3(1950.587f, 5187.897f, 64.91145f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "SE_Wakea_Tower", + 60, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1934f, 5188f, 54.91245f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2622, + CaptureTerminal.Constructor(Vector3(1950.587f, 5187.897f, 64.91145f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(354, Door.Constructor(Vector3(1946f, 5180f, 56.43345f)), owning_building_guid = 60) LocalObject(355, Door.Constructor(Vector3(1946f, 5180f, 76.43245f)), owning_building_guid = 60) LocalObject(356, Door.Constructor(Vector3(1946f, 5196f, 56.43345f)), owning_building_guid = 60) LocalObject(357, Door.Constructor(Vector3(1946f, 5196f, 76.43245f)), owning_building_guid = 60) LocalObject(2748, Door.Constructor(Vector3(1945.146f, 5176.794f, 46.24845f)), owning_building_guid = 60) LocalObject(2749, Door.Constructor(Vector3(1945.146f, 5193.204f, 46.24845f)), owning_building_guid = 60) - LocalObject(1039, IFFLock.Constructor(Vector3(1943.957f, 5196.811f, 56.37345f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 356) - LocalObject(1040, IFFLock.Constructor(Vector3(1943.957f, 5196.811f, 76.37345f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 357) - LocalObject(1041, IFFLock.Constructor(Vector3(1948.047f, 5179.189f, 56.37345f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 354) - LocalObject(1042, IFFLock.Constructor(Vector3(1948.047f, 5179.189f, 76.37345f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 355) + LocalObject( + 1039, + IFFLock.Constructor(Vector3(1943.957f, 5196.811f, 56.37345f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 356 + ) + LocalObject( + 1040, + IFFLock.Constructor(Vector3(1943.957f, 5196.811f, 76.37345f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 357 + ) + LocalObject( + 1041, + IFFLock.Constructor(Vector3(1948.047f, 5179.189f, 56.37345f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 354 + ) + LocalObject( + 1042, + IFFLock.Constructor(Vector3(1948.047f, 5179.189f, 76.37345f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 355 + ) LocalObject(1292, Locker.Constructor(Vector3(1949.716f, 5172.963f, 44.90645f)), owning_building_guid = 60) LocalObject(1293, Locker.Constructor(Vector3(1949.751f, 5194.835f, 44.90645f)), owning_building_guid = 60) LocalObject(1294, Locker.Constructor(Vector3(1951.053f, 5172.963f, 44.90645f)), owning_building_guid = 60) @@ -2040,35 +5948,106 @@ object Map09 { // Searhus LocalObject(1297, Locker.Constructor(Vector3(1953.741f, 5194.835f, 44.90645f)), owning_building_guid = 60) LocalObject(1298, Locker.Constructor(Vector3(1955.143f, 5172.963f, 44.90645f)), owning_building_guid = 60) LocalObject(1299, Locker.Constructor(Vector3(1955.143f, 5194.835f, 44.90645f)), owning_building_guid = 60) - LocalObject(1860, Terminal.Constructor(Vector3(1955.445f, 5178.129f, 46.24445f), order_terminal), owning_building_guid = 60) - LocalObject(1861, Terminal.Constructor(Vector3(1955.445f, 5183.853f, 46.24445f), order_terminal), owning_building_guid = 60) - LocalObject(1862, Terminal.Constructor(Vector3(1955.445f, 5189.234f, 46.24445f), order_terminal), owning_building_guid = 60) - LocalObject(2543, SpawnTube.Constructor(Vector3(1944.706f, 5175.742f, 44.39445f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2544, SpawnTube.Constructor(Vector3(1944.706f, 5192.152f, 44.39445f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1694, FacilityTurret.Constructor(Vector3(1921.32f, 5175.295f, 73.85445f), manned_turret), owning_building_guid = 60) + LocalObject( + 1860, + Terminal.Constructor(Vector3(1955.445f, 5178.129f, 46.24445f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1861, + Terminal.Constructor(Vector3(1955.445f, 5183.853f, 46.24445f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1862, + Terminal.Constructor(Vector3(1955.445f, 5189.234f, 46.24445f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2543, + SpawnTube.Constructor(Vector3(1944.706f, 5175.742f, 44.39445f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2544, + SpawnTube.Constructor(Vector3(1944.706f, 5192.152f, 44.39445f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1694, + FacilityTurret.Constructor(Vector3(1921.32f, 5175.295f, 73.85445f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1694, 5084) - LocalObject(1695, FacilityTurret.Constructor(Vector3(1956.647f, 5200.707f, 73.85445f), manned_turret), owning_building_guid = 60) + LocalObject( + 1695, + FacilityTurret.Constructor(Vector3(1956.647f, 5200.707f, 73.85445f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(1695, 5085) - LocalObject(2345, Painbox.Constructor(Vector3(1939.235f, 5181.803f, 46.41155f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2346, Painbox.Constructor(Vector3(1950.889f, 5190.086f, 45.01245f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2347, Painbox.Constructor(Vector3(1950.975f, 5178.223f, 45.01245f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 2345, + Painbox.Constructor(Vector3(1939.235f, 5181.803f, 46.41155f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2346, + Painbox.Constructor(Vector3(1950.889f, 5190.086f, 45.01245f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2347, + Painbox.Constructor(Vector3(1950.975f, 5178.223f, 45.01245f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building18() def Building18(): Unit = { // Name: E_Esamir_Warpgate_Tower Type: tower_a GUID: 61, MapID: 18 - LocalBuilding("E_Esamir_Warpgate_Tower", 61, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2544f, 1462f, 53.86364f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2624, CaptureTerminal.Constructor(Vector3(2560.587f, 1461.897f, 63.86264f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "E_Esamir_Warpgate_Tower", + 61, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2544f, 1462f, 53.86364f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2624, + CaptureTerminal.Constructor(Vector3(2560.587f, 1461.897f, 63.86264f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(364, Door.Constructor(Vector3(2556f, 1454f, 55.38464f)), owning_building_guid = 61) LocalObject(365, Door.Constructor(Vector3(2556f, 1454f, 75.38364f)), owning_building_guid = 61) LocalObject(366, Door.Constructor(Vector3(2556f, 1470f, 55.38464f)), owning_building_guid = 61) LocalObject(367, Door.Constructor(Vector3(2556f, 1470f, 75.38364f)), owning_building_guid = 61) LocalObject(2752, Door.Constructor(Vector3(2555.146f, 1450.794f, 45.19965f)), owning_building_guid = 61) LocalObject(2753, Door.Constructor(Vector3(2555.146f, 1467.204f, 45.19965f)), owning_building_guid = 61) - LocalObject(1049, IFFLock.Constructor(Vector3(2553.957f, 1470.811f, 55.32464f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 366) - LocalObject(1050, IFFLock.Constructor(Vector3(2553.957f, 1470.811f, 75.32465f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 367) - LocalObject(1051, IFFLock.Constructor(Vector3(2558.047f, 1453.189f, 55.32464f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 364) - LocalObject(1052, IFFLock.Constructor(Vector3(2558.047f, 1453.189f, 75.32465f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 365) + LocalObject( + 1049, + IFFLock.Constructor(Vector3(2553.957f, 1470.811f, 55.32464f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 366 + ) + LocalObject( + 1050, + IFFLock.Constructor(Vector3(2553.957f, 1470.811f, 75.32465f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 367 + ) + LocalObject( + 1051, + IFFLock.Constructor(Vector3(2558.047f, 1453.189f, 55.32464f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 364 + ) + LocalObject( + 1052, + IFFLock.Constructor(Vector3(2558.047f, 1453.189f, 75.32465f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 365 + ) LocalObject(1308, Locker.Constructor(Vector3(2559.716f, 1446.963f, 43.85764f)), owning_building_guid = 61) LocalObject(1309, Locker.Constructor(Vector3(2559.751f, 1468.835f, 43.85764f)), owning_building_guid = 61) LocalObject(1310, Locker.Constructor(Vector3(2561.053f, 1446.963f, 43.85764f)), owning_building_guid = 61) @@ -2077,35 +6056,106 @@ object Map09 { // Searhus LocalObject(1313, Locker.Constructor(Vector3(2563.741f, 1468.835f, 43.85764f)), owning_building_guid = 61) LocalObject(1314, Locker.Constructor(Vector3(2565.143f, 1446.963f, 43.85764f)), owning_building_guid = 61) LocalObject(1315, Locker.Constructor(Vector3(2565.143f, 1468.835f, 43.85764f)), owning_building_guid = 61) - LocalObject(1866, Terminal.Constructor(Vector3(2565.445f, 1452.129f, 45.19564f), order_terminal), owning_building_guid = 61) - LocalObject(1867, Terminal.Constructor(Vector3(2565.445f, 1457.853f, 45.19564f), order_terminal), owning_building_guid = 61) - LocalObject(1868, Terminal.Constructor(Vector3(2565.445f, 1463.234f, 45.19564f), order_terminal), owning_building_guid = 61) - LocalObject(2547, SpawnTube.Constructor(Vector3(2554.706f, 1449.742f, 43.34564f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2548, SpawnTube.Constructor(Vector3(2554.706f, 1466.152f, 43.34564f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1696, FacilityTurret.Constructor(Vector3(2531.32f, 1449.295f, 72.80564f), manned_turret), owning_building_guid = 61) + LocalObject( + 1866, + Terminal.Constructor(Vector3(2565.445f, 1452.129f, 45.19564f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1867, + Terminal.Constructor(Vector3(2565.445f, 1457.853f, 45.19564f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1868, + Terminal.Constructor(Vector3(2565.445f, 1463.234f, 45.19564f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2547, + SpawnTube.Constructor(Vector3(2554.706f, 1449.742f, 43.34564f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2548, + SpawnTube.Constructor(Vector3(2554.706f, 1466.152f, 43.34564f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1696, + FacilityTurret.Constructor(Vector3(2531.32f, 1449.295f, 72.80564f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1696, 5086) - LocalObject(1697, FacilityTurret.Constructor(Vector3(2566.647f, 1474.707f, 72.80564f), manned_turret), owning_building_guid = 61) + LocalObject( + 1697, + FacilityTurret.Constructor(Vector3(2566.647f, 1474.707f, 72.80564f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(1697, 5087) - LocalObject(2351, Painbox.Constructor(Vector3(2549.235f, 1455.803f, 45.36274f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2353, Painbox.Constructor(Vector3(2560.889f, 1464.086f, 43.96365f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2354, Painbox.Constructor(Vector3(2560.975f, 1452.223f, 43.96365f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 2351, + Painbox.Constructor(Vector3(2549.235f, 1455.803f, 45.36274f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2353, + Painbox.Constructor(Vector3(2560.889f, 1464.086f, 43.96365f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2354, + Painbox.Constructor(Vector3(2560.975f, 1452.223f, 43.96365f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building26() def Building26(): Unit = { // Name: W_Ngaru_Tower Type: tower_a GUID: 62, MapID: 26 - LocalBuilding("W_Ngaru_Tower", 62, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3398f, 4100f, 357.944f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2627, CaptureTerminal.Constructor(Vector3(3414.587f, 4099.897f, 367.943f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "W_Ngaru_Tower", + 62, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3398f, 4100f, 357.944f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2627, + CaptureTerminal.Constructor(Vector3(3414.587f, 4099.897f, 367.943f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(380, Door.Constructor(Vector3(3410f, 4092f, 359.465f)), owning_building_guid = 62) LocalObject(381, Door.Constructor(Vector3(3410f, 4092f, 379.464f)), owning_building_guid = 62) LocalObject(382, Door.Constructor(Vector3(3410f, 4108f, 359.465f)), owning_building_guid = 62) LocalObject(383, Door.Constructor(Vector3(3410f, 4108f, 379.464f)), owning_building_guid = 62) LocalObject(2758, Door.Constructor(Vector3(3409.146f, 4088.794f, 349.28f)), owning_building_guid = 62) LocalObject(2759, Door.Constructor(Vector3(3409.146f, 4105.204f, 349.28f)), owning_building_guid = 62) - LocalObject(1065, IFFLock.Constructor(Vector3(3407.957f, 4108.811f, 359.405f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 382) - LocalObject(1066, IFFLock.Constructor(Vector3(3407.957f, 4108.811f, 379.405f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 383) - LocalObject(1067, IFFLock.Constructor(Vector3(3412.047f, 4091.189f, 359.405f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 380) - LocalObject(1068, IFFLock.Constructor(Vector3(3412.047f, 4091.189f, 379.405f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 381) + LocalObject( + 1065, + IFFLock.Constructor(Vector3(3407.957f, 4108.811f, 359.405f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 382 + ) + LocalObject( + 1066, + IFFLock.Constructor(Vector3(3407.957f, 4108.811f, 379.405f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 383 + ) + LocalObject( + 1067, + IFFLock.Constructor(Vector3(3412.047f, 4091.189f, 359.405f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 380 + ) + LocalObject( + 1068, + IFFLock.Constructor(Vector3(3412.047f, 4091.189f, 379.405f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 381 + ) LocalObject(1332, Locker.Constructor(Vector3(3413.716f, 4084.963f, 347.938f)), owning_building_guid = 62) LocalObject(1333, Locker.Constructor(Vector3(3413.751f, 4106.835f, 347.938f)), owning_building_guid = 62) LocalObject(1334, Locker.Constructor(Vector3(3415.053f, 4084.963f, 347.938f)), owning_building_guid = 62) @@ -2114,35 +6164,106 @@ object Map09 { // Searhus LocalObject(1337, Locker.Constructor(Vector3(3417.741f, 4106.835f, 347.938f)), owning_building_guid = 62) LocalObject(1338, Locker.Constructor(Vector3(3419.143f, 4084.963f, 347.938f)), owning_building_guid = 62) LocalObject(1339, Locker.Constructor(Vector3(3419.143f, 4106.835f, 347.938f)), owning_building_guid = 62) - LocalObject(1875, Terminal.Constructor(Vector3(3419.445f, 4090.129f, 349.276f), order_terminal), owning_building_guid = 62) - LocalObject(1876, Terminal.Constructor(Vector3(3419.445f, 4095.853f, 349.276f), order_terminal), owning_building_guid = 62) - LocalObject(1877, Terminal.Constructor(Vector3(3419.445f, 4101.234f, 349.276f), order_terminal), owning_building_guid = 62) - LocalObject(2553, SpawnTube.Constructor(Vector3(3408.706f, 4087.742f, 347.426f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2554, SpawnTube.Constructor(Vector3(3408.706f, 4104.152f, 347.426f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(1698, FacilityTurret.Constructor(Vector3(3385.32f, 4087.295f, 376.886f), manned_turret), owning_building_guid = 62) + LocalObject( + 1875, + Terminal.Constructor(Vector3(3419.445f, 4090.129f, 349.276f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1876, + Terminal.Constructor(Vector3(3419.445f, 4095.853f, 349.276f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1877, + Terminal.Constructor(Vector3(3419.445f, 4101.234f, 349.276f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2553, + SpawnTube.Constructor(Vector3(3408.706f, 4087.742f, 347.426f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2554, + SpawnTube.Constructor(Vector3(3408.706f, 4104.152f, 347.426f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 1698, + FacilityTurret.Constructor(Vector3(3385.32f, 4087.295f, 376.886f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1698, 5088) - LocalObject(1699, FacilityTurret.Constructor(Vector3(3420.647f, 4112.707f, 376.886f), manned_turret), owning_building_guid = 62) + LocalObject( + 1699, + FacilityTurret.Constructor(Vector3(3420.647f, 4112.707f, 376.886f), manned_turret), + owning_building_guid = 62 + ) TurretToWeapon(1699, 5089) - LocalObject(2360, Painbox.Constructor(Vector3(3403.235f, 4093.803f, 349.4431f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2361, Painbox.Constructor(Vector3(3414.889f, 4102.086f, 348.044f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2362, Painbox.Constructor(Vector3(3414.975f, 4090.223f, 348.044f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 2360, + Painbox.Constructor(Vector3(3403.235f, 4093.803f, 349.4431f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2361, + Painbox.Constructor(Vector3(3414.889f, 4102.086f, 348.044f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2362, + Painbox.Constructor(Vector3(3414.975f, 4090.223f, 348.044f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building46() def Building46(): Unit = { // Name: NW_Karihi_Tower Type: tower_a GUID: 63, MapID: 46 - LocalBuilding("NW_Karihi_Tower", 63, 46, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3578f, 5818f, 215.015f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2628, CaptureTerminal.Constructor(Vector3(3594.587f, 5817.897f, 225.014f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "NW_Karihi_Tower", + 63, + 46, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3578f, 5818f, 215.015f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2628, + CaptureTerminal.Constructor(Vector3(3594.587f, 5817.897f, 225.014f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(384, Door.Constructor(Vector3(3590f, 5810f, 216.536f)), owning_building_guid = 63) LocalObject(385, Door.Constructor(Vector3(3590f, 5810f, 236.535f)), owning_building_guid = 63) LocalObject(386, Door.Constructor(Vector3(3590f, 5826f, 216.536f)), owning_building_guid = 63) LocalObject(387, Door.Constructor(Vector3(3590f, 5826f, 236.535f)), owning_building_guid = 63) LocalObject(2760, Door.Constructor(Vector3(3589.146f, 5806.794f, 206.351f)), owning_building_guid = 63) LocalObject(2761, Door.Constructor(Vector3(3589.146f, 5823.204f, 206.351f)), owning_building_guid = 63) - LocalObject(1069, IFFLock.Constructor(Vector3(3587.957f, 5826.811f, 216.476f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 386) - LocalObject(1070, IFFLock.Constructor(Vector3(3587.957f, 5826.811f, 236.476f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 387) - LocalObject(1071, IFFLock.Constructor(Vector3(3592.047f, 5809.189f, 216.476f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 384) - LocalObject(1072, IFFLock.Constructor(Vector3(3592.047f, 5809.189f, 236.476f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 385) + LocalObject( + 1069, + IFFLock.Constructor(Vector3(3587.957f, 5826.811f, 216.476f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 386 + ) + LocalObject( + 1070, + IFFLock.Constructor(Vector3(3587.957f, 5826.811f, 236.476f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 387 + ) + LocalObject( + 1071, + IFFLock.Constructor(Vector3(3592.047f, 5809.189f, 216.476f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 384 + ) + LocalObject( + 1072, + IFFLock.Constructor(Vector3(3592.047f, 5809.189f, 236.476f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 385 + ) LocalObject(1340, Locker.Constructor(Vector3(3593.716f, 5802.963f, 205.009f)), owning_building_guid = 63) LocalObject(1341, Locker.Constructor(Vector3(3593.751f, 5824.835f, 205.009f)), owning_building_guid = 63) LocalObject(1342, Locker.Constructor(Vector3(3595.053f, 5802.963f, 205.009f)), owning_building_guid = 63) @@ -2151,35 +6272,106 @@ object Map09 { // Searhus LocalObject(1345, Locker.Constructor(Vector3(3597.741f, 5824.835f, 205.009f)), owning_building_guid = 63) LocalObject(1346, Locker.Constructor(Vector3(3599.143f, 5802.963f, 205.009f)), owning_building_guid = 63) LocalObject(1347, Locker.Constructor(Vector3(3599.143f, 5824.835f, 205.009f)), owning_building_guid = 63) - LocalObject(1878, Terminal.Constructor(Vector3(3599.445f, 5808.129f, 206.347f), order_terminal), owning_building_guid = 63) - LocalObject(1879, Terminal.Constructor(Vector3(3599.445f, 5813.853f, 206.347f), order_terminal), owning_building_guid = 63) - LocalObject(1880, Terminal.Constructor(Vector3(3599.445f, 5819.234f, 206.347f), order_terminal), owning_building_guid = 63) - LocalObject(2555, SpawnTube.Constructor(Vector3(3588.706f, 5805.742f, 204.497f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2556, SpawnTube.Constructor(Vector3(3588.706f, 5822.152f, 204.497f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(1700, FacilityTurret.Constructor(Vector3(3565.32f, 5805.295f, 233.957f), manned_turret), owning_building_guid = 63) + LocalObject( + 1878, + Terminal.Constructor(Vector3(3599.445f, 5808.129f, 206.347f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1879, + Terminal.Constructor(Vector3(3599.445f, 5813.853f, 206.347f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1880, + Terminal.Constructor(Vector3(3599.445f, 5819.234f, 206.347f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2555, + SpawnTube.Constructor(Vector3(3588.706f, 5805.742f, 204.497f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2556, + SpawnTube.Constructor(Vector3(3588.706f, 5822.152f, 204.497f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 1700, + FacilityTurret.Constructor(Vector3(3565.32f, 5805.295f, 233.957f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1700, 5090) - LocalObject(1701, FacilityTurret.Constructor(Vector3(3600.647f, 5830.707f, 233.957f), manned_turret), owning_building_guid = 63) + LocalObject( + 1701, + FacilityTurret.Constructor(Vector3(3600.647f, 5830.707f, 233.957f), manned_turret), + owning_building_guid = 63 + ) TurretToWeapon(1701, 5091) - LocalObject(2363, Painbox.Constructor(Vector3(3583.235f, 5811.803f, 206.5141f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2364, Painbox.Constructor(Vector3(3594.889f, 5820.086f, 205.115f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2365, Painbox.Constructor(Vector3(3594.975f, 5808.223f, 205.115f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 2363, + Painbox.Constructor(Vector3(3583.235f, 5811.803f, 206.5141f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2364, + Painbox.Constructor(Vector3(3594.889f, 5820.086f, 205.115f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2365, + Painbox.Constructor(Vector3(3594.975f, 5808.223f, 205.115f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building48() def Building48(): Unit = { // Name: E_Drakulu_Tower Type: tower_a GUID: 64, MapID: 48 - LocalBuilding("E_Drakulu_Tower", 64, 48, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3992f, 2634f, 157.9653f), Vector3(0f, 0f, 16f), tower_a))) - LocalObject(2629, CaptureTerminal.Constructor(Vector3(4007.973f, 2638.473f, 167.9643f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "E_Drakulu_Tower", + 64, + 48, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3992f, 2634f, 157.9653f), Vector3(0f, 0f, 16f), tower_a) + ) + ) + LocalObject( + 2629, + CaptureTerminal.Constructor(Vector3(4007.973f, 2638.473f, 167.9643f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(435, Door.Constructor(Vector3(4001.33f, 2644.998f, 159.4863f)), owning_building_guid = 64) LocalObject(436, Door.Constructor(Vector3(4001.33f, 2644.998f, 179.4853f)), owning_building_guid = 64) LocalObject(437, Door.Constructor(Vector3(4005.74f, 2629.618f, 159.4863f)), owning_building_guid = 64) LocalObject(438, Door.Constructor(Vector3(4005.74f, 2629.618f, 179.4853f)), owning_building_guid = 64) LocalObject(2771, Door.Constructor(Vector3(4001.28f, 2642.075f, 149.3013f)), owning_building_guid = 64) LocalObject(2772, Door.Constructor(Vector3(4005.803f, 2626.3f, 149.3013f)), owning_building_guid = 64) - LocalObject(1101, IFFLock.Constructor(Vector3(3999.143f, 2645.214f, 159.4263f), Vector3(0, 0, 344)), owning_building_guid = 64, door_guid = 435) - LocalObject(1102, IFFLock.Constructor(Vector3(3999.143f, 2645.214f, 179.4263f), Vector3(0, 0, 344)), owning_building_guid = 64, door_guid = 436) - LocalObject(1103, IFFLock.Constructor(Vector3(4007.931f, 2629.402f, 159.4263f), Vector3(0, 0, 164)), owning_building_guid = 64, door_guid = 437) - LocalObject(1104, IFFLock.Constructor(Vector3(4007.931f, 2629.402f, 179.4263f), Vector3(0, 0, 164)), owning_building_guid = 64, door_guid = 438) + LocalObject( + 1101, + IFFLock.Constructor(Vector3(3999.143f, 2645.214f, 159.4263f), Vector3(0, 0, 344)), + owning_building_guid = 64, + door_guid = 435 + ) + LocalObject( + 1102, + IFFLock.Constructor(Vector3(3999.143f, 2645.214f, 179.4263f), Vector3(0, 0, 344)), + owning_building_guid = 64, + door_guid = 436 + ) + LocalObject( + 1103, + IFFLock.Constructor(Vector3(4007.931f, 2629.402f, 159.4263f), Vector3(0, 0, 164)), + owning_building_guid = 64, + door_guid = 437 + ) + LocalObject( + 1104, + IFFLock.Constructor(Vector3(4007.931f, 2629.402f, 179.4263f), Vector3(0, 0, 164)), + owning_building_guid = 64, + door_guid = 438 + ) LocalObject(1393, Locker.Constructor(Vector3(4005.257f, 2644.912f, 147.9593f)), owning_building_guid = 64) LocalObject(1394, Locker.Constructor(Vector3(4006.542f, 2645.28f, 147.9593f)), owning_building_guid = 64) LocalObject(1395, Locker.Constructor(Vector3(4009.092f, 2646.011f, 147.9593f)), owning_building_guid = 64) @@ -2188,35 +6380,106 @@ object Map09 { // Searhus LocalObject(1398, Locker.Constructor(Vector3(4012.537f, 2624.246f, 147.9593f)), owning_building_guid = 64) LocalObject(1399, Locker.Constructor(Vector3(4015.121f, 2624.987f, 147.9593f)), owning_building_guid = 64) LocalObject(1400, Locker.Constructor(Vector3(4016.469f, 2625.373f, 147.9593f)), owning_building_guid = 64) - LocalObject(1895, Terminal.Constructor(Vector3(4012.274f, 2641.097f, 149.2973f), order_terminal), owning_building_guid = 64) - LocalObject(1896, Terminal.Constructor(Vector3(4013.757f, 2635.925f, 149.2973f), order_terminal), owning_building_guid = 64) - LocalObject(1897, Terminal.Constructor(Vector3(4015.335f, 2630.422f, 149.2973f), order_terminal), owning_building_guid = 64) - LocalObject(2566, SpawnTube.Constructor(Vector3(4001.147f, 2640.942f, 147.4473f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 64) - LocalObject(2567, SpawnTube.Constructor(Vector3(4005.67f, 2625.168f, 147.4473f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 64) - LocalObject(1720, FacilityTurret.Constructor(Vector3(3983.313f, 2618.292f, 176.9073f), manned_turret), owning_building_guid = 64) + LocalObject( + 1895, + Terminal.Constructor(Vector3(4012.274f, 2641.097f, 149.2973f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1896, + Terminal.Constructor(Vector3(4013.757f, 2635.925f, 149.2973f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1897, + Terminal.Constructor(Vector3(4015.335f, 2630.422f, 149.2973f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2566, + SpawnTube.Constructor(Vector3(4001.147f, 2640.942f, 147.4473f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 64 + ) + LocalObject( + 2567, + SpawnTube.Constructor(Vector3(4005.67f, 2625.168f, 147.4473f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 64 + ) + LocalObject( + 1720, + FacilityTurret.Constructor(Vector3(3983.313f, 2618.292f, 176.9073f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1720, 5092) - LocalObject(1721, FacilityTurret.Constructor(Vector3(4010.267f, 2652.457f, 176.9073f), manned_turret), owning_building_guid = 64) + LocalObject( + 1721, + FacilityTurret.Constructor(Vector3(4010.267f, 2652.457f, 176.9073f), manned_turret), + owning_building_guid = 64 + ) TurretToWeapon(1721, 5093) - LocalObject(2366, Painbox.Constructor(Vector3(3998.74f, 2629.486f, 149.4644f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2367, Painbox.Constructor(Vector3(4007.66f, 2640.661f, 148.0653f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2368, Painbox.Constructor(Vector3(4011.012f, 2629.28f, 148.0653f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 2366, + Painbox.Constructor(Vector3(3998.74f, 2629.486f, 149.4644f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2367, + Painbox.Constructor(Vector3(4007.66f, 2640.661f, 148.0653f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2368, + Painbox.Constructor(Vector3(4011.012f, 2629.28f, 148.0653f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building51() def Building51(): Unit = { // Name: N_Ngaru_Tower Type: tower_a GUID: 65, MapID: 51 - LocalBuilding("N_Ngaru_Tower", 65, 51, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4212f, 4846f, 220.0201f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2630, CaptureTerminal.Constructor(Vector3(4228.587f, 4845.897f, 230.0191f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "N_Ngaru_Tower", + 65, + 51, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4212f, 4846f, 220.0201f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2630, + CaptureTerminal.Constructor(Vector3(4228.587f, 4845.897f, 230.0191f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(451, Door.Constructor(Vector3(4224f, 4838f, 221.5411f)), owning_building_guid = 65) LocalObject(452, Door.Constructor(Vector3(4224f, 4838f, 241.5401f)), owning_building_guid = 65) LocalObject(453, Door.Constructor(Vector3(4224f, 4854f, 221.5411f)), owning_building_guid = 65) LocalObject(454, Door.Constructor(Vector3(4224f, 4854f, 241.5401f)), owning_building_guid = 65) LocalObject(2776, Door.Constructor(Vector3(4223.146f, 4834.794f, 211.3561f)), owning_building_guid = 65) LocalObject(2777, Door.Constructor(Vector3(4223.146f, 4851.204f, 211.3561f)), owning_building_guid = 65) - LocalObject(1112, IFFLock.Constructor(Vector3(4221.957f, 4854.811f, 221.4811f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 453) - LocalObject(1113, IFFLock.Constructor(Vector3(4221.957f, 4854.811f, 241.4811f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 454) - LocalObject(1114, IFFLock.Constructor(Vector3(4226.047f, 4837.189f, 221.4811f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 451) - LocalObject(1115, IFFLock.Constructor(Vector3(4226.047f, 4837.189f, 241.4811f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 452) + LocalObject( + 1112, + IFFLock.Constructor(Vector3(4221.957f, 4854.811f, 221.4811f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 453 + ) + LocalObject( + 1113, + IFFLock.Constructor(Vector3(4221.957f, 4854.811f, 241.4811f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 454 + ) + LocalObject( + 1114, + IFFLock.Constructor(Vector3(4226.047f, 4837.189f, 221.4811f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 451 + ) + LocalObject( + 1115, + IFFLock.Constructor(Vector3(4226.047f, 4837.189f, 241.4811f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 452 + ) LocalObject(1413, Locker.Constructor(Vector3(4227.716f, 4830.963f, 210.0141f)), owning_building_guid = 65) LocalObject(1414, Locker.Constructor(Vector3(4227.751f, 4852.835f, 210.0141f)), owning_building_guid = 65) LocalObject(1415, Locker.Constructor(Vector3(4229.053f, 4830.963f, 210.0141f)), owning_building_guid = 65) @@ -2225,35 +6488,106 @@ object Map09 { // Searhus LocalObject(1418, Locker.Constructor(Vector3(4231.741f, 4852.835f, 210.0141f)), owning_building_guid = 65) LocalObject(1419, Locker.Constructor(Vector3(4233.143f, 4830.963f, 210.0141f)), owning_building_guid = 65) LocalObject(1420, Locker.Constructor(Vector3(4233.143f, 4852.835f, 210.0141f)), owning_building_guid = 65) - LocalObject(1902, Terminal.Constructor(Vector3(4233.445f, 4836.129f, 211.3521f), order_terminal), owning_building_guid = 65) - LocalObject(1903, Terminal.Constructor(Vector3(4233.445f, 4841.853f, 211.3521f), order_terminal), owning_building_guid = 65) - LocalObject(1904, Terminal.Constructor(Vector3(4233.445f, 4847.234f, 211.3521f), order_terminal), owning_building_guid = 65) - LocalObject(2571, SpawnTube.Constructor(Vector3(4222.706f, 4833.742f, 209.5021f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2572, SpawnTube.Constructor(Vector3(4222.706f, 4850.152f, 209.5021f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(1727, FacilityTurret.Constructor(Vector3(4199.32f, 4833.295f, 238.9621f), manned_turret), owning_building_guid = 65) + LocalObject( + 1902, + Terminal.Constructor(Vector3(4233.445f, 4836.129f, 211.3521f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1903, + Terminal.Constructor(Vector3(4233.445f, 4841.853f, 211.3521f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1904, + Terminal.Constructor(Vector3(4233.445f, 4847.234f, 211.3521f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2571, + SpawnTube.Constructor(Vector3(4222.706f, 4833.742f, 209.5021f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2572, + SpawnTube.Constructor(Vector3(4222.706f, 4850.152f, 209.5021f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 1727, + FacilityTurret.Constructor(Vector3(4199.32f, 4833.295f, 238.9621f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1727, 5094) - LocalObject(1728, FacilityTurret.Constructor(Vector3(4234.647f, 4858.707f, 238.9621f), manned_turret), owning_building_guid = 65) + LocalObject( + 1728, + FacilityTurret.Constructor(Vector3(4234.647f, 4858.707f, 238.9621f), manned_turret), + owning_building_guid = 65 + ) TurretToWeapon(1728, 5095) - LocalObject(2369, Painbox.Constructor(Vector3(4217.235f, 4839.803f, 211.5192f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2370, Painbox.Constructor(Vector3(4228.889f, 4848.086f, 210.1201f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2371, Painbox.Constructor(Vector3(4228.975f, 4836.223f, 210.1201f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 2369, + Painbox.Constructor(Vector3(4217.235f, 4839.803f, 211.5192f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2370, + Painbox.Constructor(Vector3(4228.889f, 4848.086f, 210.1201f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2371, + Painbox.Constructor(Vector3(4228.975f, 4836.223f, 210.1201f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building44() def Building44(): Unit = { // Name: S_Laka_Tower Type: tower_a GUID: 66, MapID: 44 - LocalBuilding("S_Laka_Tower", 66, 44, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4362f, 6216f, 53.49857f), Vector3(0f, 0f, 306f), tower_a))) - LocalObject(2631, CaptureTerminal.Constructor(Vector3(4371.667f, 6202.521f, 63.49757f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "S_Laka_Tower", + 66, + 44, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4362f, 6216f, 53.49857f), Vector3(0f, 0f, 306f), tower_a) + ) + ) + LocalObject( + 2631, + CaptureTerminal.Constructor(Vector3(4371.667f, 6202.521f, 63.49757f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(456, Door.Constructor(Vector3(4362.581f, 6201.589f, 55.01957f)), owning_building_guid = 66) LocalObject(457, Door.Constructor(Vector3(4362.581f, 6201.589f, 75.01857f)), owning_building_guid = 66) LocalObject(459, Door.Constructor(Vector3(4375.525f, 6210.994f, 55.01957f)), owning_building_guid = 66) LocalObject(460, Door.Constructor(Vector3(4375.525f, 6210.994f, 75.01857f)), owning_building_guid = 66) LocalObject(2778, Door.Constructor(Vector3(4359.486f, 6200.396f, 44.83456f)), owning_building_guid = 66) LocalObject(2779, Door.Constructor(Vector3(4372.762f, 6210.042f, 44.83456f)), owning_building_guid = 66) - LocalObject(1116, IFFLock.Constructor(Vector3(4363.128f, 6199.457f, 54.95956f), Vector3(0, 0, 234)), owning_building_guid = 66, door_guid = 456) - LocalObject(1117, IFFLock.Constructor(Vector3(4363.128f, 6199.457f, 74.95956f), Vector3(0, 0, 234)), owning_building_guid = 66, door_guid = 457) - LocalObject(1118, IFFLock.Constructor(Vector3(4374.981f, 6213.124f, 54.95956f), Vector3(0, 0, 54)), owning_building_guid = 66, door_guid = 459) - LocalObject(1119, IFFLock.Constructor(Vector3(4374.981f, 6213.124f, 74.95956f), Vector3(0, 0, 54)), owning_building_guid = 66, door_guid = 460) + LocalObject( + 1116, + IFFLock.Constructor(Vector3(4363.128f, 6199.457f, 54.95956f), Vector3(0, 0, 234)), + owning_building_guid = 66, + door_guid = 456 + ) + LocalObject( + 1117, + IFFLock.Constructor(Vector3(4363.128f, 6199.457f, 74.95956f), Vector3(0, 0, 234)), + owning_building_guid = 66, + door_guid = 457 + ) + LocalObject( + 1118, + IFFLock.Constructor(Vector3(4374.981f, 6213.124f, 54.95956f), Vector3(0, 0, 54)), + owning_building_guid = 66, + door_guid = 459 + ) + LocalObject( + 1119, + IFFLock.Constructor(Vector3(4374.981f, 6213.124f, 74.95956f), Vector3(0, 0, 54)), + owning_building_guid = 66, + door_guid = 460 + ) LocalObject(1421, Locker.Constructor(Vector3(4359.072f, 6194.447f, 43.49257f)), owning_building_guid = 66) LocalObject(1422, Locker.Constructor(Vector3(4359.858f, 6193.365f, 43.49257f)), owning_building_guid = 66) LocalObject(1423, Locker.Constructor(Vector3(4361.438f, 6191.19f, 43.49257f)), owning_building_guid = 66) @@ -2262,35 +6596,106 @@ object Map09 { // Searhus LocalObject(1426, Locker.Constructor(Vector3(4377.574f, 6206.193f, 43.49257f)), owning_building_guid = 66) LocalObject(1427, Locker.Constructor(Vector3(4379.133f, 6204.047f, 43.49257f)), owning_building_guid = 66) LocalObject(1428, Locker.Constructor(Vector3(4379.957f, 6202.913f, 43.49257f)), owning_building_guid = 66) - LocalObject(1905, Terminal.Constructor(Vector3(4366.619f, 6192.849f, 44.83057f), order_terminal), owning_building_guid = 66) - LocalObject(1906, Terminal.Constructor(Vector3(4371.25f, 6196.213f, 44.83057f), order_terminal), owning_building_guid = 66) - LocalObject(1907, Terminal.Constructor(Vector3(4375.604f, 6199.376f, 44.83057f), order_terminal), owning_building_guid = 66) - LocalObject(2573, SpawnTube.Constructor(Vector3(4358.376f, 6200.134f, 42.98057f), respawn_tube_tower, Vector3(0, 0, 54)), owning_building_guid = 66) - LocalObject(2574, SpawnTube.Constructor(Vector3(4371.652f, 6209.779f, 42.98057f), respawn_tube_tower, Vector3(0, 0, 54)), owning_building_guid = 66) - LocalObject(1730, FacilityTurret.Constructor(Vector3(4344.269f, 6218.791f, 72.44057f), manned_turret), owning_building_guid = 66) + LocalObject( + 1905, + Terminal.Constructor(Vector3(4366.619f, 6192.849f, 44.83057f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1906, + Terminal.Constructor(Vector3(4371.25f, 6196.213f, 44.83057f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1907, + Terminal.Constructor(Vector3(4375.604f, 6199.376f, 44.83057f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2573, + SpawnTube.Constructor(Vector3(4358.376f, 6200.134f, 42.98057f), respawn_tube_tower, Vector3(0, 0, 54)), + owning_building_guid = 66 + ) + LocalObject( + 2574, + SpawnTube.Constructor(Vector3(4371.652f, 6209.779f, 42.98057f), respawn_tube_tower, Vector3(0, 0, 54)), + owning_building_guid = 66 + ) + LocalObject( + 1730, + FacilityTurret.Constructor(Vector3(4344.269f, 6218.791f, 72.44057f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1730, 5096) - LocalObject(1732, FacilityTurret.Constructor(Vector3(4385.592f, 6205.147f, 72.44057f), manned_turret), owning_building_guid = 66) + LocalObject( + 1732, + FacilityTurret.Constructor(Vector3(4385.592f, 6205.147f, 72.44057f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1732, 5097) - LocalObject(2372, Painbox.Constructor(Vector3(4360.063f, 6208.122f, 44.99767f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2373, Painbox.Constructor(Vector3(4364.068f, 6196.52f, 43.59856f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2374, Painbox.Constructor(Vector3(4373.615f, 6203.562f, 43.59856f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 2372, + Painbox.Constructor(Vector3(4360.063f, 6208.122f, 44.99767f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2373, + Painbox.Constructor(Vector3(4364.068f, 6196.52f, 43.59856f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2374, + Painbox.Constructor(Vector3(4373.615f, 6203.562f, 43.59856f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building52() def Building52(): Unit = { // Name: NW_Oro_Tower Type: tower_a GUID: 67, MapID: 52 - LocalBuilding("NW_Oro_Tower", 67, 52, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4744f, 4694f, 211.0904f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2633, CaptureTerminal.Constructor(Vector3(4760.587f, 4693.897f, 221.0894f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "NW_Oro_Tower", + 67, + 52, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4744f, 4694f, 211.0904f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2633, + CaptureTerminal.Constructor(Vector3(4760.587f, 4693.897f, 221.0894f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(506, Door.Constructor(Vector3(4756f, 4686f, 212.6114f)), owning_building_guid = 67) LocalObject(507, Door.Constructor(Vector3(4756f, 4686f, 232.6104f)), owning_building_guid = 67) LocalObject(508, Door.Constructor(Vector3(4756f, 4702f, 212.6114f)), owning_building_guid = 67) LocalObject(509, Door.Constructor(Vector3(4756f, 4702f, 232.6104f)), owning_building_guid = 67) LocalObject(2791, Door.Constructor(Vector3(4755.146f, 4682.794f, 202.4264f)), owning_building_guid = 67) LocalObject(2792, Door.Constructor(Vector3(4755.146f, 4699.204f, 202.4264f)), owning_building_guid = 67) - LocalObject(1154, IFFLock.Constructor(Vector3(4753.957f, 4702.811f, 212.5514f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 508) - LocalObject(1155, IFFLock.Constructor(Vector3(4753.957f, 4702.811f, 232.5514f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 509) - LocalObject(1156, IFFLock.Constructor(Vector3(4758.047f, 4685.189f, 212.5514f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 506) - LocalObject(1157, IFFLock.Constructor(Vector3(4758.047f, 4685.189f, 232.5514f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 507) + LocalObject( + 1154, + IFFLock.Constructor(Vector3(4753.957f, 4702.811f, 212.5514f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 508 + ) + LocalObject( + 1155, + IFFLock.Constructor(Vector3(4753.957f, 4702.811f, 232.5514f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 509 + ) + LocalObject( + 1156, + IFFLock.Constructor(Vector3(4758.047f, 4685.189f, 212.5514f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 506 + ) + LocalObject( + 1157, + IFFLock.Constructor(Vector3(4758.047f, 4685.189f, 232.5514f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 507 + ) LocalObject(1482, Locker.Constructor(Vector3(4759.716f, 4678.963f, 201.0844f)), owning_building_guid = 67) LocalObject(1483, Locker.Constructor(Vector3(4759.751f, 4700.835f, 201.0844f)), owning_building_guid = 67) LocalObject(1484, Locker.Constructor(Vector3(4761.053f, 4678.963f, 201.0844f)), owning_building_guid = 67) @@ -2299,35 +6704,106 @@ object Map09 { // Searhus LocalObject(1487, Locker.Constructor(Vector3(4763.741f, 4700.835f, 201.0844f)), owning_building_guid = 67) LocalObject(1488, Locker.Constructor(Vector3(4765.143f, 4678.963f, 201.0844f)), owning_building_guid = 67) LocalObject(1489, Locker.Constructor(Vector3(4765.143f, 4700.835f, 201.0844f)), owning_building_guid = 67) - LocalObject(1928, Terminal.Constructor(Vector3(4765.445f, 4684.129f, 202.4224f), order_terminal), owning_building_guid = 67) - LocalObject(1929, Terminal.Constructor(Vector3(4765.445f, 4689.853f, 202.4224f), order_terminal), owning_building_guid = 67) - LocalObject(1930, Terminal.Constructor(Vector3(4765.445f, 4695.234f, 202.4224f), order_terminal), owning_building_guid = 67) - LocalObject(2586, SpawnTube.Constructor(Vector3(4754.706f, 4681.742f, 200.5724f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2587, SpawnTube.Constructor(Vector3(4754.706f, 4698.152f, 200.5724f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(1750, FacilityTurret.Constructor(Vector3(4731.32f, 4681.295f, 230.0324f), manned_turret), owning_building_guid = 67) + LocalObject( + 1928, + Terminal.Constructor(Vector3(4765.445f, 4684.129f, 202.4224f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1929, + Terminal.Constructor(Vector3(4765.445f, 4689.853f, 202.4224f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1930, + Terminal.Constructor(Vector3(4765.445f, 4695.234f, 202.4224f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2586, + SpawnTube.Constructor(Vector3(4754.706f, 4681.742f, 200.5724f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2587, + SpawnTube.Constructor(Vector3(4754.706f, 4698.152f, 200.5724f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 1750, + FacilityTurret.Constructor(Vector3(4731.32f, 4681.295f, 230.0324f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1750, 5098) - LocalObject(1751, FacilityTurret.Constructor(Vector3(4766.647f, 4706.707f, 230.0324f), manned_turret), owning_building_guid = 67) + LocalObject( + 1751, + FacilityTurret.Constructor(Vector3(4766.647f, 4706.707f, 230.0324f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1751, 5099) - LocalObject(2378, Painbox.Constructor(Vector3(4749.235f, 4687.803f, 202.5895f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2379, Painbox.Constructor(Vector3(4760.889f, 4696.086f, 201.1904f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2380, Painbox.Constructor(Vector3(4760.975f, 4684.223f, 201.1904f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 2378, + Painbox.Constructor(Vector3(4749.235f, 4687.803f, 202.5895f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2379, + Painbox.Constructor(Vector3(4760.889f, 4696.086f, 201.1904f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2380, + Painbox.Constructor(Vector3(4760.975f, 4684.223f, 201.1904f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building45() def Building45(): Unit = { // Name: E_Hiro_Tower Type: tower_a GUID: 68, MapID: 45 - LocalBuilding("E_Hiro_Tower", 68, 45, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4852f, 5700f, 177.862f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2635, CaptureTerminal.Constructor(Vector3(4868.587f, 5699.897f, 187.861f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "E_Hiro_Tower", + 68, + 45, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4852f, 5700f, 177.862f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2635, + CaptureTerminal.Constructor(Vector3(4868.587f, 5699.897f, 187.861f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(521, Door.Constructor(Vector3(4864f, 5692f, 179.383f)), owning_building_guid = 68) LocalObject(522, Door.Constructor(Vector3(4864f, 5692f, 199.382f)), owning_building_guid = 68) LocalObject(523, Door.Constructor(Vector3(4864f, 5708f, 179.383f)), owning_building_guid = 68) LocalObject(524, Door.Constructor(Vector3(4864f, 5708f, 199.382f)), owning_building_guid = 68) LocalObject(2795, Door.Constructor(Vector3(4863.146f, 5688.794f, 169.198f)), owning_building_guid = 68) LocalObject(2796, Door.Constructor(Vector3(4863.146f, 5705.204f, 169.198f)), owning_building_guid = 68) - LocalObject(1164, IFFLock.Constructor(Vector3(4861.957f, 5708.811f, 179.323f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 523) - LocalObject(1165, IFFLock.Constructor(Vector3(4861.957f, 5708.811f, 199.323f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 524) - LocalObject(1166, IFFLock.Constructor(Vector3(4866.047f, 5691.189f, 179.323f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 521) - LocalObject(1167, IFFLock.Constructor(Vector3(4866.047f, 5691.189f, 199.323f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 522) + LocalObject( + 1164, + IFFLock.Constructor(Vector3(4861.957f, 5708.811f, 179.323f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 523 + ) + LocalObject( + 1165, + IFFLock.Constructor(Vector3(4861.957f, 5708.811f, 199.323f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 524 + ) + LocalObject( + 1166, + IFFLock.Constructor(Vector3(4866.047f, 5691.189f, 179.323f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 521 + ) + LocalObject( + 1167, + IFFLock.Constructor(Vector3(4866.047f, 5691.189f, 199.323f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 522 + ) LocalObject(1498, Locker.Constructor(Vector3(4867.716f, 5684.963f, 167.856f)), owning_building_guid = 68) LocalObject(1499, Locker.Constructor(Vector3(4867.751f, 5706.835f, 167.856f)), owning_building_guid = 68) LocalObject(1500, Locker.Constructor(Vector3(4869.053f, 5684.963f, 167.856f)), owning_building_guid = 68) @@ -2336,35 +6812,106 @@ object Map09 { // Searhus LocalObject(1503, Locker.Constructor(Vector3(4871.741f, 5706.835f, 167.856f)), owning_building_guid = 68) LocalObject(1504, Locker.Constructor(Vector3(4873.143f, 5684.963f, 167.856f)), owning_building_guid = 68) LocalObject(1505, Locker.Constructor(Vector3(4873.143f, 5706.835f, 167.856f)), owning_building_guid = 68) - LocalObject(1935, Terminal.Constructor(Vector3(4873.445f, 5690.129f, 169.194f), order_terminal), owning_building_guid = 68) - LocalObject(1936, Terminal.Constructor(Vector3(4873.445f, 5695.853f, 169.194f), order_terminal), owning_building_guid = 68) - LocalObject(1937, Terminal.Constructor(Vector3(4873.445f, 5701.234f, 169.194f), order_terminal), owning_building_guid = 68) - LocalObject(2590, SpawnTube.Constructor(Vector3(4862.706f, 5687.742f, 167.344f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2591, SpawnTube.Constructor(Vector3(4862.706f, 5704.152f, 167.344f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(1754, FacilityTurret.Constructor(Vector3(4839.32f, 5687.295f, 196.804f), manned_turret), owning_building_guid = 68) + LocalObject( + 1935, + Terminal.Constructor(Vector3(4873.445f, 5690.129f, 169.194f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1936, + Terminal.Constructor(Vector3(4873.445f, 5695.853f, 169.194f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1937, + Terminal.Constructor(Vector3(4873.445f, 5701.234f, 169.194f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2590, + SpawnTube.Constructor(Vector3(4862.706f, 5687.742f, 167.344f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2591, + SpawnTube.Constructor(Vector3(4862.706f, 5704.152f, 167.344f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 1754, + FacilityTurret.Constructor(Vector3(4839.32f, 5687.295f, 196.804f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1754, 5100) - LocalObject(1755, FacilityTurret.Constructor(Vector3(4874.647f, 5712.707f, 196.804f), manned_turret), owning_building_guid = 68) + LocalObject( + 1755, + FacilityTurret.Constructor(Vector3(4874.647f, 5712.707f, 196.804f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1755, 5101) - LocalObject(2384, Painbox.Constructor(Vector3(4857.235f, 5693.803f, 169.3611f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2385, Painbox.Constructor(Vector3(4868.889f, 5702.086f, 167.9621f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2386, Painbox.Constructor(Vector3(4868.975f, 5690.223f, 167.9621f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 2384, + Painbox.Constructor(Vector3(4857.235f, 5693.803f, 169.3611f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2385, + Painbox.Constructor(Vector3(4868.889f, 5702.086f, 167.9621f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2386, + Painbox.Constructor(Vector3(4868.975f, 5690.223f, 167.9621f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building19() def Building19(): Unit = { // Name: NE_Iva_Tower Type: tower_a GUID: 69, MapID: 19 - LocalBuilding("NE_Iva_Tower", 69, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(7004f, 5834f, 43.82611f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2641, CaptureTerminal.Constructor(Vector3(7020.587f, 5833.897f, 53.82511f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "NE_Iva_Tower", + 69, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(7004f, 5834f, 43.82611f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2641, + CaptureTerminal.Constructor(Vector3(7020.587f, 5833.897f, 53.82511f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(619, Door.Constructor(Vector3(7016f, 5826f, 45.34711f)), owning_building_guid = 69) LocalObject(620, Door.Constructor(Vector3(7016f, 5826f, 65.34611f)), owning_building_guid = 69) LocalObject(621, Door.Constructor(Vector3(7016f, 5842f, 45.34711f)), owning_building_guid = 69) LocalObject(622, Door.Constructor(Vector3(7016f, 5842f, 65.34611f)), owning_building_guid = 69) LocalObject(2822, Door.Constructor(Vector3(7015.146f, 5822.794f, 35.16211f)), owning_building_guid = 69) LocalObject(2823, Door.Constructor(Vector3(7015.146f, 5839.204f, 35.16211f)), owning_building_guid = 69) - LocalObject(1240, IFFLock.Constructor(Vector3(7013.957f, 5842.811f, 45.28711f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 621) - LocalObject(1241, IFFLock.Constructor(Vector3(7013.957f, 5842.811f, 65.28711f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 622) - LocalObject(1242, IFFLock.Constructor(Vector3(7018.047f, 5825.189f, 45.28711f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 619) - LocalObject(1243, IFFLock.Constructor(Vector3(7018.047f, 5825.189f, 65.28711f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 620) + LocalObject( + 1240, + IFFLock.Constructor(Vector3(7013.957f, 5842.811f, 45.28711f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 621 + ) + LocalObject( + 1241, + IFFLock.Constructor(Vector3(7013.957f, 5842.811f, 65.28711f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 622 + ) + LocalObject( + 1242, + IFFLock.Constructor(Vector3(7018.047f, 5825.189f, 45.28711f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 619 + ) + LocalObject( + 1243, + IFFLock.Constructor(Vector3(7018.047f, 5825.189f, 65.28711f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 620 + ) LocalObject(1624, Locker.Constructor(Vector3(7019.716f, 5818.963f, 33.82011f)), owning_building_guid = 69) LocalObject(1625, Locker.Constructor(Vector3(7019.751f, 5840.835f, 33.82011f)), owning_building_guid = 69) LocalObject(1626, Locker.Constructor(Vector3(7021.053f, 5818.963f, 33.82011f)), owning_building_guid = 69) @@ -2373,25 +6920,76 @@ object Map09 { // Searhus LocalObject(1629, Locker.Constructor(Vector3(7023.741f, 5840.835f, 33.82011f)), owning_building_guid = 69) LocalObject(1630, Locker.Constructor(Vector3(7025.143f, 5818.963f, 33.82011f)), owning_building_guid = 69) LocalObject(1631, Locker.Constructor(Vector3(7025.143f, 5840.835f, 33.82011f)), owning_building_guid = 69) - LocalObject(1981, Terminal.Constructor(Vector3(7025.445f, 5824.129f, 35.15811f), order_terminal), owning_building_guid = 69) - LocalObject(1982, Terminal.Constructor(Vector3(7025.445f, 5829.853f, 35.15811f), order_terminal), owning_building_guid = 69) - LocalObject(1983, Terminal.Constructor(Vector3(7025.445f, 5835.234f, 35.15811f), order_terminal), owning_building_guid = 69) - LocalObject(2617, SpawnTube.Constructor(Vector3(7014.706f, 5821.742f, 33.30811f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2618, SpawnTube.Constructor(Vector3(7014.706f, 5838.152f, 33.30811f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(1794, FacilityTurret.Constructor(Vector3(6991.32f, 5821.295f, 62.7681f), manned_turret), owning_building_guid = 69) + LocalObject( + 1981, + Terminal.Constructor(Vector3(7025.445f, 5824.129f, 35.15811f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1982, + Terminal.Constructor(Vector3(7025.445f, 5829.853f, 35.15811f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1983, + Terminal.Constructor(Vector3(7025.445f, 5835.234f, 35.15811f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2617, + SpawnTube.Constructor(Vector3(7014.706f, 5821.742f, 33.30811f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2618, + SpawnTube.Constructor(Vector3(7014.706f, 5838.152f, 33.30811f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 1794, + FacilityTurret.Constructor(Vector3(6991.32f, 5821.295f, 62.7681f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1794, 5102) - LocalObject(1795, FacilityTurret.Constructor(Vector3(7026.647f, 5846.707f, 62.7681f), manned_turret), owning_building_guid = 69) + LocalObject( + 1795, + FacilityTurret.Constructor(Vector3(7026.647f, 5846.707f, 62.7681f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1795, 5103) - LocalObject(2402, Painbox.Constructor(Vector3(7009.235f, 5827.803f, 35.32521f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2403, Painbox.Constructor(Vector3(7020.889f, 5836.086f, 33.92611f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2404, Painbox.Constructor(Vector3(7020.975f, 5824.223f, 33.92611f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 2402, + Painbox.Constructor(Vector3(7009.235f, 5827.803f, 35.32521f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2403, + Painbox.Constructor(Vector3(7020.889f, 5836.086f, 33.92611f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2404, + Painbox.Constructor(Vector3(7020.975f, 5824.223f, 33.92611f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building53() def Building53(): Unit = { // Name: S_Ishundar_Warpgate_Tower Type: tower_b GUID: 70, MapID: 53 - LocalBuilding("S_Ishundar_Warpgate_Tower", 70, 53, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1258f, 6332f, 41.90735f), Vector3(0f, 0f, 5f), tower_b))) - LocalObject(2620, CaptureTerminal.Constructor(Vector3(1274.533f, 6333.343f, 61.90635f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "S_Ishundar_Warpgate_Tower", + 70, + 53, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1258f, 6332f, 41.90735f), Vector3(0f, 0f, 5f), tower_b) + ) + ) + LocalObject( + 2620, + CaptureTerminal.Constructor(Vector3(1274.533f, 6333.343f, 61.90635f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(331, Door.Constructor(Vector3(1269.257f, 6341.016f, 43.42735f)), owning_building_guid = 70) LocalObject(332, Door.Constructor(Vector3(1269.257f, 6341.016f, 53.42735f)), owning_building_guid = 70) LocalObject(333, Door.Constructor(Vector3(1269.257f, 6341.016f, 73.42735f)), owning_building_guid = 70) @@ -2400,12 +6998,42 @@ object Map09 { // Searhus LocalObject(336, Door.Constructor(Vector3(1270.652f, 6325.076f, 73.42735f)), owning_building_guid = 70) LocalObject(2741, Door.Constructor(Vector3(1268.651f, 6338.156f, 33.24335f)), owning_building_guid = 70) LocalObject(2742, Door.Constructor(Vector3(1270.081f, 6321.808f, 33.24335f)), owning_building_guid = 70) - LocalObject(1018, IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 43.36835f), Vector3(0, 0, 355)), owning_building_guid = 70, door_guid = 331) - LocalObject(1019, IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 53.36835f), Vector3(0, 0, 355)), owning_building_guid = 70, door_guid = 332) - LocalObject(1020, IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 73.36835f), Vector3(0, 0, 355)), owning_building_guid = 70, door_guid = 333) - LocalObject(1021, IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 43.36835f), Vector3(0, 0, 175)), owning_building_guid = 70, door_guid = 334) - LocalObject(1022, IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 53.36835f), Vector3(0, 0, 175)), owning_building_guid = 70, door_guid = 335) - LocalObject(1023, IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 73.36835f), Vector3(0, 0, 175)), owning_building_guid = 70, door_guid = 336) + LocalObject( + 1018, + IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 43.36835f), Vector3(0, 0, 355)), + owning_building_guid = 70, + door_guid = 331 + ) + LocalObject( + 1019, + IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 53.36835f), Vector3(0, 0, 355)), + owning_building_guid = 70, + door_guid = 332 + ) + LocalObject( + 1020, + IFFLock.Constructor(Vector3(1267.151f, 6341.646f, 73.36835f), Vector3(0, 0, 355)), + owning_building_guid = 70, + door_guid = 333 + ) + LocalObject( + 1021, + IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 43.36835f), Vector3(0, 0, 175)), + owning_building_guid = 70, + door_guid = 334 + ) + LocalObject( + 1022, + IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 53.36835f), Vector3(0, 0, 175)), + owning_building_guid = 70, + door_guid = 335 + ) + LocalObject( + 1023, + IFFLock.Constructor(Vector3(1272.761f, 6324.447f, 73.36835f), Vector3(0, 0, 175)), + owning_building_guid = 70, + door_guid = 336 + ) LocalObject(1264, Locker.Constructor(Vector3(1273.095f, 6340.182f, 31.90135f)), owning_building_guid = 70) LocalObject(1265, Locker.Constructor(Vector3(1274.427f, 6340.298f, 31.90135f)), owning_building_guid = 70) LocalObject(1266, Locker.Constructor(Vector3(1274.967f, 6318.39f, 31.90135f)), owning_building_guid = 70) @@ -2414,21 +7042,64 @@ object Map09 { // Searhus LocalObject(1269, Locker.Constructor(Vector3(1278.467f, 6340.652f, 31.90135f)), owning_building_guid = 70) LocalObject(1270, Locker.Constructor(Vector3(1278.976f, 6318.741f, 31.90135f)), owning_building_guid = 70) LocalObject(1271, Locker.Constructor(Vector3(1280.373f, 6318.863f, 31.90135f)), owning_building_guid = 70) - LocalObject(1847, Terminal.Constructor(Vector3(1279.257f, 6335.099f, 33.23935f), order_terminal), owning_building_guid = 70) - LocalObject(1848, Terminal.Constructor(Vector3(1279.726f, 6329.738f, 33.23935f), order_terminal), owning_building_guid = 70) - LocalObject(1849, Terminal.Constructor(Vector3(1280.225f, 6324.036f, 33.23935f), order_terminal), owning_building_guid = 70) - LocalObject(2536, SpawnTube.Constructor(Vector3(1268.303f, 6337.069f, 31.38935f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 70) - LocalObject(2537, SpawnTube.Constructor(Vector3(1269.734f, 6320.722f, 31.38935f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 70) - LocalObject(2339, Painbox.Constructor(Vector3(1264.095f, 6325.355f, 33.19675f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2340, Painbox.Constructor(Vector3(1275.01f, 6335.603f, 32.00735f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2341, Painbox.Constructor(Vector3(1275.927f, 6323.608f, 32.00735f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 1847, + Terminal.Constructor(Vector3(1279.257f, 6335.099f, 33.23935f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1848, + Terminal.Constructor(Vector3(1279.726f, 6329.738f, 33.23935f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1849, + Terminal.Constructor(Vector3(1280.225f, 6324.036f, 33.23935f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2536, + SpawnTube.Constructor(Vector3(1268.303f, 6337.069f, 31.38935f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 70 + ) + LocalObject( + 2537, + SpawnTube.Constructor(Vector3(1269.734f, 6320.722f, 31.38935f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 70 + ) + LocalObject( + 2339, + Painbox.Constructor(Vector3(1264.095f, 6325.355f, 33.19675f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2340, + Painbox.Constructor(Vector3(1275.01f, 6335.603f, 32.00735f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2341, + Painbox.Constructor(Vector3(1275.927f, 6323.608f, 32.00735f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building28() def Building28(): Unit = { // Name: NE_Esamir_Warpgate_Tower Type: tower_b GUID: 71, MapID: 28 - LocalBuilding("NE_Esamir_Warpgate_Tower", 71, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2312f, 2572f, 47.95525f), Vector3(0f, 0f, 334f), tower_b))) - LocalObject(2623, CaptureTerminal.Constructor(Vector3(2326.863f, 2564.636f, 67.95425f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "NE_Esamir_Warpgate_Tower", + 71, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2312f, 2572f, 47.95525f), Vector3(0f, 0f, 334f), tower_b) + ) + ) + LocalObject( + 2623, + CaptureTerminal.Constructor(Vector3(2326.863f, 2564.636f, 67.95425f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(358, Door.Constructor(Vector3(2319.279f, 2559.549f, 49.47525f)), owning_building_guid = 71) LocalObject(359, Door.Constructor(Vector3(2319.279f, 2559.549f, 59.47525f)), owning_building_guid = 71) LocalObject(360, Door.Constructor(Vector3(2319.279f, 2559.549f, 79.47525f)), owning_building_guid = 71) @@ -2437,12 +7108,42 @@ object Map09 { // Searhus LocalObject(363, Door.Constructor(Vector3(2326.292f, 2573.93f, 79.47525f)), owning_building_guid = 71) LocalObject(2750, Door.Constructor(Vector3(2317.106f, 2557.042f, 39.29125f)), owning_building_guid = 71) LocalObject(2751, Door.Constructor(Vector3(2324.3f, 2571.791f, 39.29125f)), owning_building_guid = 71) - LocalObject(1043, IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 49.41625f), Vector3(0, 0, 206)), owning_building_guid = 71, door_guid = 358) - LocalObject(1044, IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 59.41625f), Vector3(0, 0, 206)), owning_building_guid = 71, door_guid = 359) - LocalObject(1045, IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 79.41625f), Vector3(0, 0, 206)), owning_building_guid = 71, door_guid = 360) - LocalObject(1046, IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 49.41625f), Vector3(0, 0, 26)), owning_building_guid = 71, door_guid = 361) - LocalObject(1047, IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 59.41625f), Vector3(0, 0, 26)), owning_building_guid = 71, door_guid = 362) - LocalObject(1048, IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 79.41625f), Vector3(0, 0, 26)), owning_building_guid = 71, door_guid = 363) + LocalObject( + 1043, + IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 49.41625f), Vector3(0, 0, 206)), + owning_building_guid = 71, + door_guid = 358 + ) + LocalObject( + 1044, + IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 59.41625f), Vector3(0, 0, 206)), + owning_building_guid = 71, + door_guid = 359 + ) + LocalObject( + 1045, + IFFLock.Constructor(Vector3(2320.763f, 2557.923f, 79.41625f), Vector3(0, 0, 206)), + owning_building_guid = 71, + door_guid = 360 + ) + LocalObject( + 1046, + IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 49.41625f), Vector3(0, 0, 26)), + owning_building_guid = 71, + door_guid = 361 + ) + LocalObject( + 1047, + IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 59.41625f), Vector3(0, 0, 26)), + owning_building_guid = 71, + door_guid = 362 + ) + LocalObject( + 1048, + IFFLock.Constructor(Vector3(2324.812f, 2575.554f, 79.41625f), Vector3(0, 0, 26)), + owning_building_guid = 71, + door_guid = 363 + ) LocalObject(1300, Locker.Constructor(Vector3(2319.534f, 2551.595f, 37.94925f)), owning_building_guid = 71) LocalObject(1301, Locker.Constructor(Vector3(2320.735f, 2551.009f, 37.94925f)), owning_building_guid = 71) LocalObject(1302, Locker.Constructor(Vector3(2323.151f, 2549.831f, 37.94925f)), owning_building_guid = 71) @@ -2451,21 +7152,64 @@ object Map09 { // Searhus LocalObject(1305, Locker.Constructor(Vector3(2330.355f, 2570.652f, 37.94925f)), owning_building_guid = 71) LocalObject(1306, Locker.Constructor(Vector3(2332.739f, 2569.489f, 37.94925f)), owning_building_guid = 71) LocalObject(1307, Locker.Constructor(Vector3(2334f, 2568.875f, 37.94925f)), owning_building_guid = 71) - LocalObject(1863, Terminal.Constructor(Vector3(2326.948f, 2553.727f, 39.28725f), order_terminal), owning_building_guid = 71) - LocalObject(1864, Terminal.Constructor(Vector3(2329.458f, 2558.871f, 39.28725f), order_terminal), owning_building_guid = 71) - LocalObject(1865, Terminal.Constructor(Vector3(2331.816f, 2563.708f, 39.28725f), order_terminal), owning_building_guid = 71) - LocalObject(2545, SpawnTube.Constructor(Vector3(2316.249f, 2556.289f, 37.43726f), respawn_tube_tower, Vector3(0, 0, 26)), owning_building_guid = 71) - LocalObject(2546, SpawnTube.Constructor(Vector3(2323.443f, 2571.039f, 37.43726f), respawn_tube_tower, Vector3(0, 0, 26)), owning_building_guid = 71) - LocalObject(2348, Painbox.Constructor(Vector3(2313.802f, 2563.165f, 39.24465f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2349, Painbox.Constructor(Vector3(2323.044f, 2555.574f, 38.05525f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2350, Painbox.Constructor(Vector3(2328.436f, 2566.327f, 38.05525f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 1863, + Terminal.Constructor(Vector3(2326.948f, 2553.727f, 39.28725f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1864, + Terminal.Constructor(Vector3(2329.458f, 2558.871f, 39.28725f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1865, + Terminal.Constructor(Vector3(2331.816f, 2563.708f, 39.28725f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2545, + SpawnTube.Constructor(Vector3(2316.249f, 2556.289f, 37.43726f), respawn_tube_tower, Vector3(0, 0, 26)), + owning_building_guid = 71 + ) + LocalObject( + 2546, + SpawnTube.Constructor(Vector3(2323.443f, 2571.039f, 37.43726f), respawn_tube_tower, Vector3(0, 0, 26)), + owning_building_guid = 71 + ) + LocalObject( + 2348, + Painbox.Constructor(Vector3(2313.802f, 2563.165f, 39.24465f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2349, + Painbox.Constructor(Vector3(2323.044f, 2555.574f, 38.05525f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2350, + Painbox.Constructor(Vector3(2328.436f, 2566.327f, 38.05525f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building24() def Building24(): Unit = { // Name: E_Ishundar_Warpgate_Tower Type: tower_b GUID: 72, MapID: 24 - LocalBuilding("E_Ishundar_Warpgate_Tower", 72, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2552f, 6916f, 52.0414f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2625, CaptureTerminal.Constructor(Vector3(2568.587f, 6915.897f, 72.04041f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "E_Ishundar_Warpgate_Tower", + 72, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2552f, 6916f, 52.0414f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2625, + CaptureTerminal.Constructor(Vector3(2568.587f, 6915.897f, 72.04041f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(368, Door.Constructor(Vector3(2564f, 6908f, 53.56141f)), owning_building_guid = 72) LocalObject(369, Door.Constructor(Vector3(2564f, 6908f, 63.56141f)), owning_building_guid = 72) LocalObject(370, Door.Constructor(Vector3(2564f, 6908f, 83.5614f)), owning_building_guid = 72) @@ -2474,12 +7218,42 @@ object Map09 { // Searhus LocalObject(373, Door.Constructor(Vector3(2564f, 6924f, 83.5614f)), owning_building_guid = 72) LocalObject(2754, Door.Constructor(Vector3(2563.147f, 6904.794f, 43.3774f)), owning_building_guid = 72) LocalObject(2755, Door.Constructor(Vector3(2563.147f, 6921.204f, 43.3774f)), owning_building_guid = 72) - LocalObject(1053, IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 53.5024f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 371) - LocalObject(1054, IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 63.5024f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 372) - LocalObject(1055, IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 83.5024f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 373) - LocalObject(1056, IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 53.5024f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 368) - LocalObject(1057, IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 63.5024f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 369) - LocalObject(1058, IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 83.5024f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 370) + LocalObject( + 1053, + IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 53.5024f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 371 + ) + LocalObject( + 1054, + IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 63.5024f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 372 + ) + LocalObject( + 1055, + IFFLock.Constructor(Vector3(2561.957f, 6924.811f, 83.5024f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 373 + ) + LocalObject( + 1056, + IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 53.5024f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 368 + ) + LocalObject( + 1057, + IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 63.5024f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 369 + ) + LocalObject( + 1058, + IFFLock.Constructor(Vector3(2566.047f, 6907.189f, 83.5024f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 370 + ) LocalObject(1316, Locker.Constructor(Vector3(2567.716f, 6900.963f, 42.0354f)), owning_building_guid = 72) LocalObject(1317, Locker.Constructor(Vector3(2567.751f, 6922.835f, 42.0354f)), owning_building_guid = 72) LocalObject(1318, Locker.Constructor(Vector3(2569.053f, 6900.963f, 42.0354f)), owning_building_guid = 72) @@ -2488,21 +7262,64 @@ object Map09 { // Searhus LocalObject(1321, Locker.Constructor(Vector3(2571.741f, 6922.835f, 42.0354f)), owning_building_guid = 72) LocalObject(1322, Locker.Constructor(Vector3(2573.143f, 6900.963f, 42.0354f)), owning_building_guid = 72) LocalObject(1323, Locker.Constructor(Vector3(2573.143f, 6922.835f, 42.0354f)), owning_building_guid = 72) - LocalObject(1869, Terminal.Constructor(Vector3(2573.446f, 6906.129f, 43.37341f), order_terminal), owning_building_guid = 72) - LocalObject(1870, Terminal.Constructor(Vector3(2573.446f, 6911.853f, 43.37341f), order_terminal), owning_building_guid = 72) - LocalObject(1871, Terminal.Constructor(Vector3(2573.446f, 6917.234f, 43.37341f), order_terminal), owning_building_guid = 72) - LocalObject(2549, SpawnTube.Constructor(Vector3(2562.706f, 6903.742f, 41.52341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2550, SpawnTube.Constructor(Vector3(2562.706f, 6920.152f, 41.52341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2352, Painbox.Constructor(Vector3(2557.493f, 6908.849f, 43.3308f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2355, Painbox.Constructor(Vector3(2569.127f, 6906.078f, 42.1414f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2356, Painbox.Constructor(Vector3(2569.259f, 6918.107f, 42.1414f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 1869, + Terminal.Constructor(Vector3(2573.446f, 6906.129f, 43.37341f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1870, + Terminal.Constructor(Vector3(2573.446f, 6911.853f, 43.37341f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1871, + Terminal.Constructor(Vector3(2573.446f, 6917.234f, 43.37341f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2549, + SpawnTube.Constructor(Vector3(2562.706f, 6903.742f, 41.52341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2550, + SpawnTube.Constructor(Vector3(2562.706f, 6920.152f, 41.52341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2352, + Painbox.Constructor(Vector3(2557.493f, 6908.849f, 43.3308f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2355, + Painbox.Constructor(Vector3(2569.127f, 6906.078f, 42.1414f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2356, + Painbox.Constructor(Vector3(2569.259f, 6918.107f, 42.1414f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building49() def Building49(): Unit = { // Name: W_Rehua_Tower Type: tower_b GUID: 73, MapID: 49 - LocalBuilding("W_Rehua_Tower", 73, 49, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3354f, 1956f, 54.89647f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2626, CaptureTerminal.Constructor(Vector3(3370.587f, 1955.897f, 74.89546f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "W_Rehua_Tower", + 73, + 49, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3354f, 1956f, 54.89647f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2626, + CaptureTerminal.Constructor(Vector3(3370.587f, 1955.897f, 74.89546f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(374, Door.Constructor(Vector3(3366f, 1948f, 56.41647f)), owning_building_guid = 73) LocalObject(375, Door.Constructor(Vector3(3366f, 1948f, 66.41647f)), owning_building_guid = 73) LocalObject(376, Door.Constructor(Vector3(3366f, 1948f, 86.41647f)), owning_building_guid = 73) @@ -2511,12 +7328,42 @@ object Map09 { // Searhus LocalObject(379, Door.Constructor(Vector3(3366f, 1964f, 86.41647f)), owning_building_guid = 73) LocalObject(2756, Door.Constructor(Vector3(3365.147f, 1944.794f, 46.23247f)), owning_building_guid = 73) LocalObject(2757, Door.Constructor(Vector3(3365.147f, 1961.204f, 46.23247f)), owning_building_guid = 73) - LocalObject(1059, IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 56.35746f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 377) - LocalObject(1060, IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 66.35747f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 378) - LocalObject(1061, IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 86.35747f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 379) - LocalObject(1062, IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 56.35746f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 374) - LocalObject(1063, IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 66.35747f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 375) - LocalObject(1064, IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 86.35747f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 376) + LocalObject( + 1059, + IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 56.35746f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 377 + ) + LocalObject( + 1060, + IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 66.35747f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 378 + ) + LocalObject( + 1061, + IFFLock.Constructor(Vector3(3363.957f, 1964.811f, 86.35747f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 379 + ) + LocalObject( + 1062, + IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 56.35746f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 374 + ) + LocalObject( + 1063, + IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 66.35747f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 375 + ) + LocalObject( + 1064, + IFFLock.Constructor(Vector3(3368.047f, 1947.189f, 86.35747f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 376 + ) LocalObject(1324, Locker.Constructor(Vector3(3369.716f, 1940.963f, 44.89046f)), owning_building_guid = 73) LocalObject(1325, Locker.Constructor(Vector3(3369.751f, 1962.835f, 44.89046f)), owning_building_guid = 73) LocalObject(1326, Locker.Constructor(Vector3(3371.053f, 1940.963f, 44.89046f)), owning_building_guid = 73) @@ -2525,21 +7372,64 @@ object Map09 { // Searhus LocalObject(1329, Locker.Constructor(Vector3(3373.741f, 1962.835f, 44.89046f)), owning_building_guid = 73) LocalObject(1330, Locker.Constructor(Vector3(3375.143f, 1940.963f, 44.89046f)), owning_building_guid = 73) LocalObject(1331, Locker.Constructor(Vector3(3375.143f, 1962.835f, 44.89046f)), owning_building_guid = 73) - LocalObject(1872, Terminal.Constructor(Vector3(3375.446f, 1946.129f, 46.22847f), order_terminal), owning_building_guid = 73) - LocalObject(1873, Terminal.Constructor(Vector3(3375.446f, 1951.853f, 46.22847f), order_terminal), owning_building_guid = 73) - LocalObject(1874, Terminal.Constructor(Vector3(3375.446f, 1957.234f, 46.22847f), order_terminal), owning_building_guid = 73) - LocalObject(2551, SpawnTube.Constructor(Vector3(3364.706f, 1943.742f, 44.37846f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2552, SpawnTube.Constructor(Vector3(3364.706f, 1960.152f, 44.37846f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2357, Painbox.Constructor(Vector3(3359.493f, 1948.849f, 46.18587f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2358, Painbox.Constructor(Vector3(3371.127f, 1946.078f, 44.99647f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2359, Painbox.Constructor(Vector3(3371.259f, 1958.107f, 44.99647f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 1872, + Terminal.Constructor(Vector3(3375.446f, 1946.129f, 46.22847f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1873, + Terminal.Constructor(Vector3(3375.446f, 1951.853f, 46.22847f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1874, + Terminal.Constructor(Vector3(3375.446f, 1957.234f, 46.22847f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2551, + SpawnTube.Constructor(Vector3(3364.706f, 1943.742f, 44.37846f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2552, + SpawnTube.Constructor(Vector3(3364.706f, 1960.152f, 44.37846f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2357, + Painbox.Constructor(Vector3(3359.493f, 1948.849f, 46.18587f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2358, + Painbox.Constructor(Vector3(3371.127f, 1946.078f, 44.99647f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2359, + Painbox.Constructor(Vector3(3371.259f, 1958.107f, 44.99647f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building22() def Building22(): Unit = { // Name: W_Sina_Tower Type: tower_b GUID: 74, MapID: 22 - LocalBuilding("W_Sina_Tower", 74, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4834f, 1886f, 56.61641f), Vector3(0f, 0f, 16f), tower_b))) - LocalObject(2634, CaptureTerminal.Constructor(Vector3(4849.973f, 1890.473f, 76.61542f), secondary_capture), owning_building_guid = 74) + LocalBuilding( + "W_Sina_Tower", + 74, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4834f, 1886f, 56.61641f), Vector3(0f, 0f, 16f), tower_b) + ) + ) + LocalObject( + 2634, + CaptureTerminal.Constructor(Vector3(4849.973f, 1890.473f, 76.61542f), secondary_capture), + owning_building_guid = 74 + ) LocalObject(514, Door.Constructor(Vector3(4843.33f, 1896.998f, 58.13641f)), owning_building_guid = 74) LocalObject(515, Door.Constructor(Vector3(4843.33f, 1896.998f, 68.13641f)), owning_building_guid = 74) LocalObject(516, Door.Constructor(Vector3(4843.33f, 1896.998f, 88.13641f)), owning_building_guid = 74) @@ -2548,12 +7438,42 @@ object Map09 { // Searhus LocalObject(519, Door.Constructor(Vector3(4847.74f, 1881.618f, 88.13641f)), owning_building_guid = 74) LocalObject(2793, Door.Constructor(Vector3(4843.281f, 1894.075f, 47.95242f)), owning_building_guid = 74) LocalObject(2794, Door.Constructor(Vector3(4847.804f, 1878.301f, 47.95242f)), owning_building_guid = 74) - LocalObject(1158, IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 58.07741f), Vector3(0, 0, 344)), owning_building_guid = 74, door_guid = 514) - LocalObject(1159, IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 68.07742f), Vector3(0, 0, 344)), owning_building_guid = 74, door_guid = 515) - LocalObject(1160, IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 88.07742f), Vector3(0, 0, 344)), owning_building_guid = 74, door_guid = 516) - LocalObject(1161, IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 58.07741f), Vector3(0, 0, 164)), owning_building_guid = 74, door_guid = 517) - LocalObject(1162, IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 68.07742f), Vector3(0, 0, 164)), owning_building_guid = 74, door_guid = 518) - LocalObject(1163, IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 88.07742f), Vector3(0, 0, 164)), owning_building_guid = 74, door_guid = 519) + LocalObject( + 1158, + IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 58.07741f), Vector3(0, 0, 344)), + owning_building_guid = 74, + door_guid = 514 + ) + LocalObject( + 1159, + IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 68.07742f), Vector3(0, 0, 344)), + owning_building_guid = 74, + door_guid = 515 + ) + LocalObject( + 1160, + IFFLock.Constructor(Vector3(4841.143f, 1897.214f, 88.07742f), Vector3(0, 0, 344)), + owning_building_guid = 74, + door_guid = 516 + ) + LocalObject( + 1161, + IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 58.07741f), Vector3(0, 0, 164)), + owning_building_guid = 74, + door_guid = 517 + ) + LocalObject( + 1162, + IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 68.07742f), Vector3(0, 0, 164)), + owning_building_guid = 74, + door_guid = 518 + ) + LocalObject( + 1163, + IFFLock.Constructor(Vector3(4849.932f, 1881.402f, 88.07742f), Vector3(0, 0, 164)), + owning_building_guid = 74, + door_guid = 519 + ) LocalObject(1490, Locker.Constructor(Vector3(4847.257f, 1896.912f, 46.61041f)), owning_building_guid = 74) LocalObject(1491, Locker.Constructor(Vector3(4848.542f, 1897.28f, 46.61041f)), owning_building_guid = 74) LocalObject(1492, Locker.Constructor(Vector3(4851.092f, 1898.012f, 46.61041f)), owning_building_guid = 74) @@ -2562,31 +7482,94 @@ object Map09 { // Searhus LocalObject(1495, Locker.Constructor(Vector3(4854.537f, 1876.246f, 46.61041f)), owning_building_guid = 74) LocalObject(1496, Locker.Constructor(Vector3(4857.121f, 1876.987f, 46.61041f)), owning_building_guid = 74) LocalObject(1497, Locker.Constructor(Vector3(4858.469f, 1877.373f, 46.61041f)), owning_building_guid = 74) - LocalObject(1931, Terminal.Constructor(Vector3(4854.275f, 1893.098f, 47.94841f), order_terminal), owning_building_guid = 74) - LocalObject(1932, Terminal.Constructor(Vector3(4855.758f, 1887.925f, 47.94841f), order_terminal), owning_building_guid = 74) - LocalObject(1933, Terminal.Constructor(Vector3(4857.336f, 1882.423f, 47.94841f), order_terminal), owning_building_guid = 74) - LocalObject(2588, SpawnTube.Constructor(Vector3(4843.147f, 1892.942f, 46.09841f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 74) - LocalObject(2589, SpawnTube.Constructor(Vector3(4847.67f, 1877.168f, 46.09841f), respawn_tube_tower, Vector3(0, 0, 344)), owning_building_guid = 74) - LocalObject(2381, Painbox.Constructor(Vector3(4841.251f, 1880.64f, 47.90582f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2382, Painbox.Constructor(Vector3(4850.01f, 1892.782f, 46.71642f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2383, Painbox.Constructor(Vector3(4853.199f, 1881.183f, 46.71642f), painbox_radius_continuous), owning_building_guid = 74) + LocalObject( + 1931, + Terminal.Constructor(Vector3(4854.275f, 1893.098f, 47.94841f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1932, + Terminal.Constructor(Vector3(4855.758f, 1887.925f, 47.94841f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1933, + Terminal.Constructor(Vector3(4857.336f, 1882.423f, 47.94841f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2588, + SpawnTube.Constructor(Vector3(4843.147f, 1892.942f, 46.09841f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 74 + ) + LocalObject( + 2589, + SpawnTube.Constructor(Vector3(4847.67f, 1877.168f, 46.09841f), respawn_tube_tower, Vector3(0, 0, 344)), + owning_building_guid = 74 + ) + LocalObject( + 2381, + Painbox.Constructor(Vector3(4841.251f, 1880.64f, 47.90582f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2382, + Painbox.Constructor(Vector3(4850.01f, 1892.782f, 46.71642f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2383, + Painbox.Constructor(Vector3(4853.199f, 1881.183f, 46.71642f), painbox_radius_continuous), + owning_building_guid = 74 + ) } Building23() def Building23(): Unit = { // Name: SE_Tara_Tower Type: tower_c GUID: 75, MapID: 23 - LocalBuilding("SE_Tara_Tower", 75, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1772f, 3744f, 43.52397f), Vector3(0f, 0f, 55f), tower_c))) - LocalObject(2621, CaptureTerminal.Constructor(Vector3(1781.598f, 3757.528f, 53.52297f), secondary_capture), owning_building_guid = 75) + LocalBuilding( + "SE_Tara_Tower", + 75, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1772f, 3744f, 43.52397f), Vector3(0f, 0f, 55f), tower_c) + ) + ) + LocalObject( + 2621, + CaptureTerminal.Constructor(Vector3(1781.598f, 3757.528f, 53.52297f), secondary_capture), + owning_building_guid = 75 + ) LocalObject(348, Door.Constructor(Vector3(1772.33f, 3758.418f, 45.04497f)), owning_building_guid = 75) LocalObject(349, Door.Constructor(Vector3(1772.33f, 3758.418f, 65.04398f)), owning_building_guid = 75) LocalObject(350, Door.Constructor(Vector3(1785.436f, 3749.241f, 45.04497f)), owning_building_guid = 75) LocalObject(351, Door.Constructor(Vector3(1785.436f, 3749.241f, 65.04398f)), owning_building_guid = 75) LocalObject(2743, Door.Constructor(Vector3(1774.13f, 3756.115f, 34.85997f)), owning_building_guid = 75) LocalObject(2747, Door.Constructor(Vector3(1787.573f, 3746.703f, 34.85997f)), owning_building_guid = 75) - LocalObject(1029, IFFLock.Constructor(Vector3(1770.494f, 3757.21f, 44.98497f), Vector3(0, 0, 305)), owning_building_guid = 75, door_guid = 348) - LocalObject(1030, IFFLock.Constructor(Vector3(1770.494f, 3757.21f, 64.98497f), Vector3(0, 0, 305)), owning_building_guid = 75, door_guid = 349) - LocalObject(1036, IFFLock.Constructor(Vector3(1787.275f, 3750.453f, 44.98497f), Vector3(0, 0, 125)), owning_building_guid = 75, door_guid = 350) - LocalObject(1037, IFFLock.Constructor(Vector3(1787.275f, 3750.453f, 64.98497f), Vector3(0, 0, 125)), owning_building_guid = 75, door_guid = 351) + LocalObject( + 1029, + IFFLock.Constructor(Vector3(1770.494f, 3757.21f, 44.98497f), Vector3(0, 0, 305)), + owning_building_guid = 75, + door_guid = 348 + ) + LocalObject( + 1030, + IFFLock.Constructor(Vector3(1770.494f, 3757.21f, 64.98497f), Vector3(0, 0, 305)), + owning_building_guid = 75, + door_guid = 349 + ) + LocalObject( + 1036, + IFFLock.Constructor(Vector3(1787.275f, 3750.453f, 44.98497f), Vector3(0, 0, 125)), + owning_building_guid = 75, + door_guid = 350 + ) + LocalObject( + 1037, + IFFLock.Constructor(Vector3(1787.275f, 3750.453f, 64.98497f), Vector3(0, 0, 125)), + owning_building_guid = 75, + door_guid = 351 + ) LocalObject(1272, Locker.Constructor(Vector3(1775.436f, 3760.823f, 33.51797f)), owning_building_guid = 75) LocalObject(1273, Locker.Constructor(Vector3(1776.202f, 3761.918f, 33.51797f)), owning_building_guid = 75) LocalObject(1274, Locker.Constructor(Vector3(1777.724f, 3764.091f, 33.51797f)), owning_building_guid = 75) @@ -2595,39 +7578,126 @@ object Map09 { // Searhus LocalObject(1281, Locker.Constructor(Vector3(1794.099f, 3749.344f, 33.51797f)), owning_building_guid = 75) LocalObject(1282, Locker.Constructor(Vector3(1795.641f, 3751.546f, 33.51797f)), owning_building_guid = 75) LocalObject(1284, Locker.Constructor(Vector3(1796.445f, 3752.695f, 33.51797f)), owning_building_guid = 75) - LocalObject(1854, Terminal.Constructor(Vector3(1783.29f, 3762.274f, 34.85597f), order_terminal), owning_building_guid = 75) - LocalObject(1855, Terminal.Constructor(Vector3(1787.697f, 3759.188f, 34.85597f), order_terminal), owning_building_guid = 75) - LocalObject(1859, Terminal.Constructor(Vector3(1792.386f, 3755.905f, 34.85597f), order_terminal), owning_building_guid = 75) - LocalObject(2541, SpawnTube.Constructor(Vector3(1774.74f, 3755.151f, 33.00597f), respawn_tube_tower, Vector3(0, 0, 305)), owning_building_guid = 75) - LocalObject(2542, SpawnTube.Constructor(Vector3(1788.182f, 3745.739f, 33.00597f), respawn_tube_tower, Vector3(0, 0, 305)), owning_building_guid = 75) - LocalObject(2210, ProximityTerminal.Constructor(Vector3(1767.138f, 3746.07f, 71.09397f), pad_landing_tower_frame), owning_building_guid = 75) - LocalObject(2211, Terminal.Constructor(Vector3(1767.138f, 3746.07f, 71.09397f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(2213, ProximityTerminal.Constructor(Vector3(1775.694f, 3740.079f, 71.09397f), pad_landing_tower_frame), owning_building_guid = 75) - LocalObject(2214, Terminal.Constructor(Vector3(1775.694f, 3740.079f, 71.09397f), air_rearm_terminal), owning_building_guid = 75) - LocalObject(1690, FacilityTurret.Constructor(Vector3(1773.225f, 3771.827f, 62.46597f), manned_turret), owning_building_guid = 75) + LocalObject( + 1854, + Terminal.Constructor(Vector3(1783.29f, 3762.274f, 34.85597f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 1855, + Terminal.Constructor(Vector3(1787.697f, 3759.188f, 34.85597f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 1859, + Terminal.Constructor(Vector3(1792.386f, 3755.905f, 34.85597f), order_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2541, + SpawnTube.Constructor(Vector3(1774.74f, 3755.151f, 33.00597f), respawn_tube_tower, Vector3(0, 0, 305)), + owning_building_guid = 75 + ) + LocalObject( + 2542, + SpawnTube.Constructor(Vector3(1788.182f, 3745.739f, 33.00597f), respawn_tube_tower, Vector3(0, 0, 305)), + owning_building_guid = 75 + ) + LocalObject( + 2210, + ProximityTerminal.Constructor(Vector3(1767.138f, 3746.07f, 71.09397f), pad_landing_tower_frame), + owning_building_guid = 75 + ) + LocalObject( + 2211, + Terminal.Constructor(Vector3(1767.138f, 3746.07f, 71.09397f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 2213, + ProximityTerminal.Constructor(Vector3(1775.694f, 3740.079f, 71.09397f), pad_landing_tower_frame), + owning_building_guid = 75 + ) + LocalObject( + 2214, + Terminal.Constructor(Vector3(1775.694f, 3740.079f, 71.09397f), air_rearm_terminal), + owning_building_guid = 75 + ) + LocalObject( + 1690, + FacilityTurret.Constructor(Vector3(1773.225f, 3771.827f, 62.46597f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(1690, 5104) - LocalObject(1691, FacilityTurret.Constructor(Vector3(1775.687f, 3723.192f, 62.46597f), manned_turret), owning_building_guid = 75) + LocalObject( + 1691, + FacilityTurret.Constructor(Vector3(1775.687f, 3723.192f, 62.46597f), manned_turret), + owning_building_guid = 75 + ) TurretToWeapon(1691, 5105) - LocalObject(2342, Painbox.Constructor(Vector3(1780.159f, 3759.178f, 33.62397f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2343, Painbox.Constructor(Vector3(1780.412f, 3743.547f, 35.54347f), painbox_radius_continuous), owning_building_guid = 75) - LocalObject(2344, Painbox.Constructor(Vector3(1790.275f, 3751.863f, 33.62397f), painbox_radius_continuous), owning_building_guid = 75) + LocalObject( + 2342, + Painbox.Constructor(Vector3(1780.159f, 3759.178f, 33.62397f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2343, + Painbox.Constructor(Vector3(1780.412f, 3743.547f, 35.54347f), painbox_radius_continuous), + owning_building_guid = 75 + ) + LocalObject( + 2344, + Painbox.Constructor(Vector3(1790.275f, 3751.863f, 33.62397f), painbox_radius_continuous), + owning_building_guid = 75 + ) } Building21() def Building21(): Unit = { // Name: NE_Pele_Tower Type: tower_c GUID: 76, MapID: 21 - LocalBuilding("NE_Pele_Tower", 76, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4686f, 3958f, 193.4062f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2632, CaptureTerminal.Constructor(Vector3(4702.587f, 3957.897f, 203.4052f), secondary_capture), owning_building_guid = 76) + LocalBuilding( + "NE_Pele_Tower", + 76, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4686f, 3958f, 193.4062f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2632, + CaptureTerminal.Constructor(Vector3(4702.587f, 3957.897f, 203.4052f), secondary_capture), + owning_building_guid = 76 + ) LocalObject(502, Door.Constructor(Vector3(4698f, 3950f, 194.9272f)), owning_building_guid = 76) LocalObject(503, Door.Constructor(Vector3(4698f, 3950f, 214.9262f)), owning_building_guid = 76) LocalObject(504, Door.Constructor(Vector3(4698f, 3966f, 194.9272f)), owning_building_guid = 76) LocalObject(505, Door.Constructor(Vector3(4698f, 3966f, 214.9262f)), owning_building_guid = 76) LocalObject(2789, Door.Constructor(Vector3(4697.146f, 3946.794f, 184.7422f)), owning_building_guid = 76) LocalObject(2790, Door.Constructor(Vector3(4697.146f, 3963.204f, 184.7422f)), owning_building_guid = 76) - LocalObject(1150, IFFLock.Constructor(Vector3(4695.957f, 3966.811f, 194.8672f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 504) - LocalObject(1151, IFFLock.Constructor(Vector3(4695.957f, 3966.811f, 214.8672f), Vector3(0, 0, 0)), owning_building_guid = 76, door_guid = 505) - LocalObject(1152, IFFLock.Constructor(Vector3(4700.047f, 3949.189f, 194.8672f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 502) - LocalObject(1153, IFFLock.Constructor(Vector3(4700.047f, 3949.189f, 214.8672f), Vector3(0, 0, 180)), owning_building_guid = 76, door_guid = 503) + LocalObject( + 1150, + IFFLock.Constructor(Vector3(4695.957f, 3966.811f, 194.8672f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 504 + ) + LocalObject( + 1151, + IFFLock.Constructor(Vector3(4695.957f, 3966.811f, 214.8672f), Vector3(0, 0, 0)), + owning_building_guid = 76, + door_guid = 505 + ) + LocalObject( + 1152, + IFFLock.Constructor(Vector3(4700.047f, 3949.189f, 194.8672f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 502 + ) + LocalObject( + 1153, + IFFLock.Constructor(Vector3(4700.047f, 3949.189f, 214.8672f), Vector3(0, 0, 180)), + owning_building_guid = 76, + door_guid = 503 + ) LocalObject(1474, Locker.Constructor(Vector3(4701.716f, 3942.963f, 183.4002f)), owning_building_guid = 76) LocalObject(1475, Locker.Constructor(Vector3(4701.751f, 3964.835f, 183.4002f)), owning_building_guid = 76) LocalObject(1476, Locker.Constructor(Vector3(4703.053f, 3942.963f, 183.4002f)), owning_building_guid = 76) @@ -2636,39 +7706,126 @@ object Map09 { // Searhus LocalObject(1479, Locker.Constructor(Vector3(4705.741f, 3964.835f, 183.4002f)), owning_building_guid = 76) LocalObject(1480, Locker.Constructor(Vector3(4707.143f, 3942.963f, 183.4002f)), owning_building_guid = 76) LocalObject(1481, Locker.Constructor(Vector3(4707.143f, 3964.835f, 183.4002f)), owning_building_guid = 76) - LocalObject(1925, Terminal.Constructor(Vector3(4707.445f, 3948.129f, 184.7382f), order_terminal), owning_building_guid = 76) - LocalObject(1926, Terminal.Constructor(Vector3(4707.445f, 3953.853f, 184.7382f), order_terminal), owning_building_guid = 76) - LocalObject(1927, Terminal.Constructor(Vector3(4707.445f, 3959.234f, 184.7382f), order_terminal), owning_building_guid = 76) - LocalObject(2584, SpawnTube.Constructor(Vector3(4696.706f, 3945.742f, 182.8882f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2585, SpawnTube.Constructor(Vector3(4696.706f, 3962.152f, 182.8882f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 76) - LocalObject(2216, ProximityTerminal.Constructor(Vector3(4684.907f, 3952.725f, 220.9762f), pad_landing_tower_frame), owning_building_guid = 76) - LocalObject(2217, Terminal.Constructor(Vector3(4684.907f, 3952.725f, 220.9762f), air_rearm_terminal), owning_building_guid = 76) - LocalObject(2219, ProximityTerminal.Constructor(Vector3(4684.907f, 3963.17f, 220.9762f), pad_landing_tower_frame), owning_building_guid = 76) - LocalObject(2220, Terminal.Constructor(Vector3(4684.907f, 3963.17f, 220.9762f), air_rearm_terminal), owning_building_guid = 76) - LocalObject(1745, FacilityTurret.Constructor(Vector3(4671.07f, 3943.045f, 212.3482f), manned_turret), owning_building_guid = 76) + LocalObject( + 1925, + Terminal.Constructor(Vector3(4707.445f, 3948.129f, 184.7382f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1926, + Terminal.Constructor(Vector3(4707.445f, 3953.853f, 184.7382f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1927, + Terminal.Constructor(Vector3(4707.445f, 3959.234f, 184.7382f), order_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2584, + SpawnTube.Constructor(Vector3(4696.706f, 3945.742f, 182.8882f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2585, + SpawnTube.Constructor(Vector3(4696.706f, 3962.152f, 182.8882f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 76 + ) + LocalObject( + 2216, + ProximityTerminal.Constructor(Vector3(4684.907f, 3952.725f, 220.9762f), pad_landing_tower_frame), + owning_building_guid = 76 + ) + LocalObject( + 2217, + Terminal.Constructor(Vector3(4684.907f, 3952.725f, 220.9762f), air_rearm_terminal), + owning_building_guid = 76 + ) + LocalObject( + 2219, + ProximityTerminal.Constructor(Vector3(4684.907f, 3963.17f, 220.9762f), pad_landing_tower_frame), + owning_building_guid = 76 + ) + LocalObject( + 2220, + Terminal.Constructor(Vector3(4684.907f, 3963.17f, 220.9762f), air_rearm_terminal), + owning_building_guid = 76 + ) + LocalObject( + 1745, + FacilityTurret.Constructor(Vector3(4671.07f, 3943.045f, 212.3482f), manned_turret), + owning_building_guid = 76 + ) TurretToWeapon(1745, 5106) - LocalObject(1748, FacilityTurret.Constructor(Vector3(4709.497f, 3972.957f, 212.3482f), manned_turret), owning_building_guid = 76) + LocalObject( + 1748, + FacilityTurret.Constructor(Vector3(4709.497f, 3972.957f, 212.3482f), manned_turret), + owning_building_guid = 76 + ) TurretToWeapon(1748, 5107) - LocalObject(2375, Painbox.Constructor(Vector3(4690.454f, 3950.849f, 185.4257f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2376, Painbox.Constructor(Vector3(4702.923f, 3947.54f, 183.5062f), painbox_radius_continuous), owning_building_guid = 76) - LocalObject(2377, Painbox.Constructor(Vector3(4703.113f, 3960.022f, 183.5062f), painbox_radius_continuous), owning_building_guid = 76) + LocalObject( + 2375, + Painbox.Constructor(Vector3(4690.454f, 3950.849f, 185.4257f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2376, + Painbox.Constructor(Vector3(4702.923f, 3947.54f, 183.5062f), painbox_radius_continuous), + owning_building_guid = 76 + ) + LocalObject( + 2377, + Painbox.Constructor(Vector3(4703.113f, 3960.022f, 183.5062f), painbox_radius_continuous), + owning_building_guid = 76 + ) } Building25() def Building25(): Unit = { // Name: SE_Laka_Tower Type: tower_c GUID: 77, MapID: 25 - LocalBuilding("SE_Laka_Tower", 77, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5268f, 6372f, 48.24061f), Vector3(0f, 0f, 11f), tower_c))) - LocalObject(2636, CaptureTerminal.Constructor(Vector3(5284.302f, 6375.064f, 58.23961f), secondary_capture), owning_building_guid = 77) + LocalBuilding( + "SE_Laka_Tower", + 77, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5268f, 6372f, 48.24061f), Vector3(0f, 0f, 11f), tower_c) + ) + ) + LocalObject( + 2636, + CaptureTerminal.Constructor(Vector3(5284.302f, 6375.064f, 58.23961f), secondary_capture), + owning_building_guid = 77 + ) LocalObject(552, Door.Constructor(Vector3(5278.253f, 6382.143f, 49.76161f)), owning_building_guid = 77) LocalObject(553, Door.Constructor(Vector3(5278.253f, 6382.143f, 69.7606f)), owning_building_guid = 77) LocalObject(555, Door.Constructor(Vector3(5281.306f, 6366.437f, 49.76161f)), owning_building_guid = 77) LocalObject(556, Door.Constructor(Vector3(5281.306f, 6366.437f, 69.7606f)), owning_building_guid = 77) LocalObject(2806, Door.Constructor(Vector3(5277.948f, 6379.235f, 39.57661f)), owning_building_guid = 77) LocalObject(2807, Door.Constructor(Vector3(5281.08f, 6363.126f, 39.57661f)), owning_building_guid = 77) - LocalObject(1193, IFFLock.Constructor(Vector3(5276.093f, 6382.549f, 49.70161f), Vector3(0, 0, 349)), owning_building_guid = 77, door_guid = 552) - LocalObject(1194, IFFLock.Constructor(Vector3(5276.093f, 6382.549f, 69.70161f), Vector3(0, 0, 349)), owning_building_guid = 77, door_guid = 553) - LocalObject(1198, IFFLock.Constructor(Vector3(5283.47f, 6366.031f, 49.70161f), Vector3(0, 0, 169)), owning_building_guid = 77, door_guid = 555) - LocalObject(1199, IFFLock.Constructor(Vector3(5283.47f, 6366.031f, 69.70161f), Vector3(0, 0, 169)), owning_building_guid = 77, door_guid = 556) + LocalObject( + 1193, + IFFLock.Constructor(Vector3(5276.093f, 6382.549f, 49.70161f), Vector3(0, 0, 349)), + owning_building_guid = 77, + door_guid = 552 + ) + LocalObject( + 1194, + IFFLock.Constructor(Vector3(5276.093f, 6382.549f, 69.70161f), Vector3(0, 0, 349)), + owning_building_guid = 77, + door_guid = 553 + ) + LocalObject( + 1198, + IFFLock.Constructor(Vector3(5283.47f, 6366.031f, 49.70161f), Vector3(0, 0, 169)), + owning_building_guid = 77, + door_guid = 555 + ) + LocalObject( + 1199, + IFFLock.Constructor(Vector3(5283.47f, 6366.031f, 69.70161f), Vector3(0, 0, 169)), + owning_building_guid = 77, + door_guid = 556 + ) LocalObject(1541, Locker.Constructor(Vector3(5282.157f, 6381.715f, 38.23461f)), owning_building_guid = 77) LocalObject(1544, Locker.Constructor(Vector3(5283.47f, 6381.97f, 38.23461f)), owning_building_guid = 77) LocalObject(1547, Locker.Constructor(Vector3(5286.074f, 6382.476f, 38.23461f)), owning_building_guid = 77) @@ -2677,39 +7834,126 @@ object Map09 { // Searhus LocalObject(1550, Locker.Constructor(Vector3(5287.609f, 6360.493f, 38.23461f)), owning_building_guid = 77) LocalObject(1551, Locker.Constructor(Vector3(5290.248f, 6361.006f, 38.23461f)), owning_building_guid = 77) LocalObject(1552, Locker.Constructor(Vector3(5291.624f, 6361.273f, 38.23461f)), owning_building_guid = 77) - LocalObject(1954, Terminal.Constructor(Vector3(5288.815f, 6377.303f, 39.57261f), order_terminal), owning_building_guid = 77) - LocalObject(1955, Terminal.Constructor(Vector3(5289.842f, 6372.021f, 39.57261f), order_terminal), owning_building_guid = 77) - LocalObject(1956, Terminal.Constructor(Vector3(5290.935f, 6366.402f, 39.57261f), order_terminal), owning_building_guid = 77) - LocalObject(2601, SpawnTube.Constructor(Vector3(5277.717f, 6378.119f, 37.72261f), respawn_tube_tower, Vector3(0, 0, 349)), owning_building_guid = 77) - LocalObject(2602, SpawnTube.Constructor(Vector3(5280.848f, 6362.01f, 37.72261f), respawn_tube_tower, Vector3(0, 0, 349)), owning_building_guid = 77) - LocalObject(2222, ProximityTerminal.Constructor(Vector3(5265.94f, 6376.867f, 75.81061f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2223, Terminal.Constructor(Vector3(5265.94f, 6376.867f, 75.81061f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(2225, ProximityTerminal.Constructor(Vector3(5267.934f, 6366.613f, 75.81061f), pad_landing_tower_frame), owning_building_guid = 77) - LocalObject(2226, Terminal.Constructor(Vector3(5267.934f, 6366.613f, 75.81061f), air_rearm_terminal), owning_building_guid = 77) - LocalObject(1764, FacilityTurret.Constructor(Vector3(5256.198f, 6354.471f, 67.18261f), manned_turret), owning_building_guid = 77) + LocalObject( + 1954, + Terminal.Constructor(Vector3(5288.815f, 6377.303f, 39.57261f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(5289.842f, 6372.021f, 39.57261f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1956, + Terminal.Constructor(Vector3(5290.935f, 6366.402f, 39.57261f), order_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2601, + SpawnTube.Constructor(Vector3(5277.717f, 6378.119f, 37.72261f), respawn_tube_tower, Vector3(0, 0, 349)), + owning_building_guid = 77 + ) + LocalObject( + 2602, + SpawnTube.Constructor(Vector3(5280.848f, 6362.01f, 37.72261f), respawn_tube_tower, Vector3(0, 0, 349)), + owning_building_guid = 77 + ) + LocalObject( + 2222, + ProximityTerminal.Constructor(Vector3(5265.94f, 6376.867f, 75.81061f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2223, + Terminal.Constructor(Vector3(5265.94f, 6376.867f, 75.81061f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 2225, + ProximityTerminal.Constructor(Vector3(5267.934f, 6366.613f, 75.81061f), pad_landing_tower_frame), + owning_building_guid = 77 + ) + LocalObject( + 2226, + Terminal.Constructor(Vector3(5267.934f, 6366.613f, 75.81061f), air_rearm_terminal), + owning_building_guid = 77 + ) + LocalObject( + 1764, + FacilityTurret.Constructor(Vector3(5256.198f, 6354.471f, 67.18261f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1764, 5108) - LocalObject(1767, FacilityTurret.Constructor(Vector3(5288.211f, 6391.166f, 67.18261f), manned_turret), owning_building_guid = 77) + LocalObject( + 1767, + FacilityTurret.Constructor(Vector3(5288.211f, 6391.166f, 67.18261f), manned_turret), + owning_building_guid = 77 + ) TurretToWeapon(1767, 5109) - LocalObject(2387, Painbox.Constructor(Vector3(5273.737f, 6365.83f, 40.26011f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2388, Painbox.Constructor(Vector3(5284.413f, 6377.25f, 38.34061f), painbox_radius_continuous), owning_building_guid = 77) - LocalObject(2389, Painbox.Constructor(Vector3(5286.608f, 6364.961f, 38.34061f), painbox_radius_continuous), owning_building_guid = 77) + LocalObject( + 2387, + Painbox.Constructor(Vector3(5273.737f, 6365.83f, 40.26011f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2388, + Painbox.Constructor(Vector3(5284.413f, 6377.25f, 38.34061f), painbox_radius_continuous), + owning_building_guid = 77 + ) + LocalObject( + 2389, + Painbox.Constructor(Vector3(5286.608f, 6364.961f, 38.34061f), painbox_radius_continuous), + owning_building_guid = 77 + ) } Building29() def Building29(): Unit = { // Name: NE_Matagi_Tower Type: tower_c GUID: 78, MapID: 29 - LocalBuilding("NE_Matagi_Tower", 78, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5380f, 5216f, 236.7046f), Vector3(0f, 0f, 33f), tower_c))) - LocalObject(2637, CaptureTerminal.Constructor(Vector3(5393.967f, 5224.948f, 246.7036f), secondary_capture), owning_building_guid = 78) + LocalBuilding( + "NE_Matagi_Tower", + 78, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5380f, 5216f, 236.7046f), Vector3(0f, 0f, 33f), tower_c) + ) + ) + LocalObject( + 2637, + CaptureTerminal.Constructor(Vector3(5393.967f, 5224.948f, 246.7036f), secondary_capture), + owning_building_guid = 78 + ) LocalObject(567, Door.Constructor(Vector3(5385.707f, 5229.245f, 238.2256f)), owning_building_guid = 78) LocalObject(568, Door.Constructor(Vector3(5385.707f, 5229.245f, 258.2246f)), owning_building_guid = 78) LocalObject(569, Door.Constructor(Vector3(5394.421f, 5215.826f, 238.2256f)), owning_building_guid = 78) LocalObject(570, Door.Constructor(Vector3(5394.421f, 5215.826f, 258.2246f)), owning_building_guid = 78) LocalObject(2808, Door.Constructor(Vector3(5386.514f, 5226.435f, 228.0406f)), owning_building_guid = 78) LocalObject(2809, Door.Constructor(Vector3(5395.451f, 5212.672f, 228.0406f)), owning_building_guid = 78) - LocalObject(1202, IFFLock.Constructor(Vector3(5383.552f, 5228.812f, 238.1656f), Vector3(0, 0, 327)), owning_building_guid = 78, door_guid = 567) - LocalObject(1203, IFFLock.Constructor(Vector3(5383.552f, 5228.812f, 258.1656f), Vector3(0, 0, 327)), owning_building_guid = 78, door_guid = 568) - LocalObject(1204, IFFLock.Constructor(Vector3(5396.58f, 5216.261f, 238.1656f), Vector3(0, 0, 147)), owning_building_guid = 78, door_guid = 569) - LocalObject(1205, IFFLock.Constructor(Vector3(5396.58f, 5216.261f, 258.1656f), Vector3(0, 0, 147)), owning_building_guid = 78, door_guid = 570) + LocalObject( + 1202, + IFFLock.Constructor(Vector3(5383.552f, 5228.812f, 238.1656f), Vector3(0, 0, 327)), + owning_building_guid = 78, + door_guid = 567 + ) + LocalObject( + 1203, + IFFLock.Constructor(Vector3(5383.552f, 5228.812f, 258.1656f), Vector3(0, 0, 327)), + owning_building_guid = 78, + door_guid = 568 + ) + LocalObject( + 1204, + IFFLock.Constructor(Vector3(5396.58f, 5216.261f, 238.1656f), Vector3(0, 0, 147)), + owning_building_guid = 78, + door_guid = 569 + ) + LocalObject( + 1205, + IFFLock.Constructor(Vector3(5396.58f, 5216.261f, 258.1656f), Vector3(0, 0, 147)), + owning_building_guid = 78, + door_guid = 570 + ) LocalObject(1559, Locker.Constructor(Vector3(5389.487f, 5230.311f, 226.6986f)), owning_building_guid = 78) LocalObject(1560, Locker.Constructor(Vector3(5390.608f, 5231.039f, 226.6986f)), owning_building_guid = 78) LocalObject(1561, Locker.Constructor(Vector3(5392.833f, 5232.484f, 226.6986f)), owning_building_guid = 78) @@ -2718,39 +7962,126 @@ object Map09 { // Searhus LocalObject(1564, Locker.Constructor(Vector3(5402.492f, 5212.677f, 226.6986f)), owning_building_guid = 78) LocalObject(1565, Locker.Constructor(Vector3(5404.746f, 5214.141f, 226.6986f)), owning_building_guid = 78) LocalObject(1566, Locker.Constructor(Vector3(5405.922f, 5214.904f, 226.6986f)), owning_building_guid = 78) - LocalObject(1957, Terminal.Constructor(Vector3(5397.313f, 5228.715f, 228.0366f), order_terminal), owning_building_guid = 78) - LocalObject(1958, Terminal.Constructor(Vector3(5400.244f, 5224.202f, 228.0366f), order_terminal), owning_building_guid = 78) - LocalObject(1959, Terminal.Constructor(Vector3(5403.361f, 5219.401f, 228.0366f), order_terminal), owning_building_guid = 78) - LocalObject(2603, SpawnTube.Constructor(Vector3(5386.717f, 5225.313f, 226.1866f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 78) - LocalObject(2604, SpawnTube.Constructor(Vector3(5395.655f, 5211.55f, 226.1866f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 78) - LocalObject(2228, ProximityTerminal.Constructor(Vector3(5376.268f, 5219.741f, 264.2746f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2229, Terminal.Constructor(Vector3(5376.268f, 5219.741f, 264.2746f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(2231, ProximityTerminal.Constructor(Vector3(5381.957f, 5210.981f, 264.2746f), pad_landing_tower_frame), owning_building_guid = 78) - LocalObject(2232, Terminal.Constructor(Vector3(5381.957f, 5210.981f, 264.2746f), air_rearm_terminal), owning_building_guid = 78) - LocalObject(1772, FacilityTurret.Constructor(Vector3(5375.624f, 5195.326f, 255.6466f), manned_turret), owning_building_guid = 78) + LocalObject( + 1957, + Terminal.Constructor(Vector3(5397.313f, 5228.715f, 228.0366f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(5400.244f, 5224.202f, 228.0366f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1959, + Terminal.Constructor(Vector3(5403.361f, 5219.401f, 228.0366f), order_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2603, + SpawnTube.Constructor(Vector3(5386.717f, 5225.313f, 226.1866f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 78 + ) + LocalObject( + 2604, + SpawnTube.Constructor(Vector3(5395.655f, 5211.55f, 226.1866f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 78 + ) + LocalObject( + 2228, + ProximityTerminal.Constructor(Vector3(5376.268f, 5219.741f, 264.2746f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2229, + Terminal.Constructor(Vector3(5376.268f, 5219.741f, 264.2746f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 2231, + ProximityTerminal.Constructor(Vector3(5381.957f, 5210.981f, 264.2746f), pad_landing_tower_frame), + owning_building_guid = 78 + ) + LocalObject( + 2232, + Terminal.Constructor(Vector3(5381.957f, 5210.981f, 264.2746f), air_rearm_terminal), + owning_building_guid = 78 + ) + LocalObject( + 1772, + FacilityTurret.Constructor(Vector3(5375.624f, 5195.326f, 255.6466f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1772, 5110) - LocalObject(1774, FacilityTurret.Constructor(Vector3(5391.56f, 5241.341f, 255.6466f), manned_turret), owning_building_guid = 78) + LocalObject( + 1774, + FacilityTurret.Constructor(Vector3(5391.56f, 5241.341f, 255.6466f), manned_turret), + owning_building_guid = 78 + ) TurretToWeapon(1774, 5111) - LocalObject(2390, Painbox.Constructor(Vector3(5387.63f, 5212.429f, 228.7241f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2391, Painbox.Constructor(Vector3(5393.251f, 5227.016f, 226.8046f), painbox_radius_continuous), owning_building_guid = 78) - LocalObject(2392, Painbox.Constructor(Vector3(5399.89f, 5216.444f, 226.8046f), painbox_radius_continuous), owning_building_guid = 78) + LocalObject( + 2390, + Painbox.Constructor(Vector3(5387.63f, 5212.429f, 228.7241f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2391, + Painbox.Constructor(Vector3(5393.251f, 5227.016f, 226.8046f), painbox_radius_continuous), + owning_building_guid = 78 + ) + LocalObject( + 2392, + Painbox.Constructor(Vector3(5399.89f, 5216.444f, 226.8046f), painbox_radius_continuous), + owning_building_guid = 78 + ) } Building37() def Building37(): Unit = { // Name: NE_Sina_Tower Type: tower_c GUID: 79, MapID: 37 - LocalBuilding("NE_Sina_Tower", 79, 37, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6202f, 2442f, 49.96948f), Vector3(0f, 0f, 296f), tower_c))) - LocalObject(2638, CaptureTerminal.Constructor(Vector3(6209.179f, 2427.047f, 59.96848f), secondary_capture), owning_building_guid = 79) + LocalBuilding( + "NE_Sina_Tower", + 79, + 37, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6202f, 2442f, 49.96948f), Vector3(0f, 0f, 296f), tower_c) + ) + ) + LocalObject( + 2638, + CaptureTerminal.Constructor(Vector3(6209.179f, 2427.047f, 59.96848f), secondary_capture), + owning_building_guid = 79 + ) LocalObject(593, Door.Constructor(Vector3(6200.07f, 2427.708f, 51.49048f)), owning_building_guid = 79) LocalObject(594, Door.Constructor(Vector3(6200.07f, 2427.708f, 71.48949f)), owning_building_guid = 79) LocalObject(595, Door.Constructor(Vector3(6214.451f, 2434.721f, 51.49048f)), owning_building_guid = 79) LocalObject(596, Door.Constructor(Vector3(6214.451f, 2434.721f, 71.48949f)), owning_building_guid = 79) LocalObject(2813, Door.Constructor(Vector3(6196.814f, 2427.07f, 41.30548f)), owning_building_guid = 79) LocalObject(2814, Door.Constructor(Vector3(6211.563f, 2434.263f, 41.30548f)), owning_building_guid = 79) - LocalObject(1220, IFFLock.Constructor(Vector3(6200.238f, 2425.512f, 51.43048f), Vector3(0, 0, 244)), owning_building_guid = 79, door_guid = 593) - LocalObject(1221, IFFLock.Constructor(Vector3(6200.238f, 2425.512f, 71.43048f), Vector3(0, 0, 244)), owning_building_guid = 79, door_guid = 594) - LocalObject(1222, IFFLock.Constructor(Vector3(6214.284f, 2436.913f, 51.43048f), Vector3(0, 0, 64)), owning_building_guid = 79, door_guid = 595) - LocalObject(1223, IFFLock.Constructor(Vector3(6214.284f, 2436.913f, 71.43048f), Vector3(0, 0, 64)), owning_building_guid = 79, door_guid = 596) + LocalObject( + 1220, + IFFLock.Constructor(Vector3(6200.238f, 2425.512f, 51.43048f), Vector3(0, 0, 244)), + owning_building_guid = 79, + door_guid = 593 + ) + LocalObject( + 1221, + IFFLock.Constructor(Vector3(6200.238f, 2425.512f, 71.43048f), Vector3(0, 0, 244)), + owning_building_guid = 79, + door_guid = 594 + ) + LocalObject( + 1222, + IFFLock.Constructor(Vector3(6214.284f, 2436.913f, 51.43048f), Vector3(0, 0, 64)), + owning_building_guid = 79, + door_guid = 595 + ) + LocalObject( + 1223, + IFFLock.Constructor(Vector3(6214.284f, 2436.913f, 71.43048f), Vector3(0, 0, 64)), + owning_building_guid = 79, + door_guid = 596 + ) LocalObject(1579, Locker.Constructor(Vector3(6195.375f, 2421.283f, 39.96348f)), owning_building_guid = 79) LocalObject(1580, Locker.Constructor(Vector3(6195.96f, 2420.081f, 39.96348f)), owning_building_guid = 79) LocalObject(1581, Locker.Constructor(Vector3(6197.139f, 2417.665f, 39.96348f)), owning_building_guid = 79) @@ -2759,39 +8090,126 @@ object Map09 { // Searhus LocalObject(1584, Locker.Constructor(Vector3(6215.634f, 2429.638f, 39.96348f)), owning_building_guid = 79) LocalObject(1585, Locker.Constructor(Vector3(6216.797f, 2427.253f, 39.96348f)), owning_building_guid = 79) LocalObject(1586, Locker.Constructor(Vector3(6217.412f, 2425.993f, 39.96348f)), owning_building_guid = 79) - LocalObject(1968, Terminal.Constructor(Vector3(6202.529f, 2418.398f, 41.30148f), order_terminal), owning_building_guid = 79) - LocalObject(1969, Terminal.Constructor(Vector3(6207.673f, 2420.907f, 41.30148f), order_terminal), owning_building_guid = 79) - LocalObject(1970, Terminal.Constructor(Vector3(6212.51f, 2423.266f, 41.30148f), order_terminal), owning_building_guid = 79) - LocalObject(2608, SpawnTube.Constructor(Vector3(6195.676f, 2427.004f, 39.45148f), respawn_tube_tower, Vector3(0, 0, 64)), owning_building_guid = 79) - LocalObject(2609, SpawnTube.Constructor(Vector3(6210.425f, 2434.198f, 39.45148f), respawn_tube_tower, Vector3(0, 0, 64)), owning_building_guid = 79) - LocalObject(2234, ProximityTerminal.Constructor(Vector3(6196.78f, 2440.67f, 77.53948f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2235, Terminal.Constructor(Vector3(6196.78f, 2440.67f, 77.53948f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(2237, ProximityTerminal.Constructor(Vector3(6206.167f, 2445.249f, 77.53948f), pad_landing_tower_frame), owning_building_guid = 79) - LocalObject(2238, Terminal.Constructor(Vector3(6206.167f, 2445.249f, 77.53948f), air_rearm_terminal), owning_building_guid = 79) - LocalObject(1783, FacilityTurret.Constructor(Vector3(6182.014f, 2448.863f, 68.91148f), manned_turret), owning_building_guid = 79) + LocalObject( + 1968, + Terminal.Constructor(Vector3(6202.529f, 2418.398f, 41.30148f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1969, + Terminal.Constructor(Vector3(6207.673f, 2420.907f, 41.30148f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1970, + Terminal.Constructor(Vector3(6212.51f, 2423.266f, 41.30148f), order_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2608, + SpawnTube.Constructor(Vector3(6195.676f, 2427.004f, 39.45148f), respawn_tube_tower, Vector3(0, 0, 64)), + owning_building_guid = 79 + ) + LocalObject( + 2609, + SpawnTube.Constructor(Vector3(6210.425f, 2434.198f, 39.45148f), respawn_tube_tower, Vector3(0, 0, 64)), + owning_building_guid = 79 + ) + LocalObject( + 2234, + ProximityTerminal.Constructor(Vector3(6196.78f, 2440.67f, 77.53948f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2235, + Terminal.Constructor(Vector3(6196.78f, 2440.67f, 77.53948f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 2237, + ProximityTerminal.Constructor(Vector3(6206.167f, 2445.249f, 77.53948f), pad_landing_tower_frame), + owning_building_guid = 79 + ) + LocalObject( + 2238, + Terminal.Constructor(Vector3(6206.167f, 2445.249f, 77.53948f), air_rearm_terminal), + owning_building_guid = 79 + ) + LocalObject( + 1783, + FacilityTurret.Constructor(Vector3(6182.014f, 2448.863f, 68.91148f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1783, 5112) - LocalObject(1784, FacilityTurret.Constructor(Vector3(6225.744f, 2427.438f, 68.91148f), manned_turret), owning_building_guid = 79) + LocalObject( + 1784, + FacilityTurret.Constructor(Vector3(6225.744f, 2427.438f, 68.91148f), manned_turret), + owning_building_guid = 79 + ) TurretToWeapon(1784, 5113) - LocalObject(2393, Painbox.Constructor(Vector3(6197.525f, 2434.862f, 41.98898f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2394, Painbox.Constructor(Vector3(6200.017f, 2422.204f, 40.06948f), painbox_radius_continuous), owning_building_guid = 79) - LocalObject(2395, Painbox.Constructor(Vector3(6211.319f, 2427.505f, 40.06948f), painbox_radius_continuous), owning_building_guid = 79) + LocalObject( + 2393, + Painbox.Constructor(Vector3(6197.525f, 2434.862f, 41.98898f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2394, + Painbox.Constructor(Vector3(6200.017f, 2422.204f, 40.06948f), painbox_radius_continuous), + owning_building_guid = 79 + ) + LocalObject( + 2395, + Painbox.Constructor(Vector3(6211.319f, 2427.505f, 40.06948f), painbox_radius_continuous), + owning_building_guid = 79 + ) } Building27() def Building27(): Unit = { // Name: S_Iva_Tower Type: tower_c GUID: 80, MapID: 27 - LocalBuilding("S_Iva_Tower", 80, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6438f, 4958f, 63.71655f), Vector3(0f, 0f, 324f), tower_c))) - LocalObject(2639, CaptureTerminal.Constructor(Vector3(6451.358f, 4948.167f, 73.71555f), secondary_capture), owning_building_guid = 80) + LocalBuilding( + "S_Iva_Tower", + 80, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6438f, 4958f, 63.71655f), Vector3(0f, 0f, 324f), tower_c) + ) + ) + LocalObject( + 2639, + CaptureTerminal.Constructor(Vector3(6451.358f, 4948.167f, 73.71555f), secondary_capture), + owning_building_guid = 80 + ) LocalObject(603, Door.Constructor(Vector3(6443.006f, 4944.475f, 65.23755f)), owning_building_guid = 80) LocalObject(604, Door.Constructor(Vector3(6443.006f, 4944.475f, 85.23654f)), owning_building_guid = 80) LocalObject(607, Door.Constructor(Vector3(6452.411f, 4957.419f, 65.23755f)), owning_building_guid = 80) LocalObject(608, Door.Constructor(Vector3(6452.411f, 4957.419f, 85.23654f)), owning_building_guid = 80) LocalObject(2817, Door.Constructor(Vector3(6440.431f, 4942.383f, 55.05254f)), owning_building_guid = 80) LocalObject(2819, Door.Constructor(Vector3(6450.076f, 4955.659f, 55.05254f)), owning_building_guid = 80) - LocalObject(1228, IFFLock.Constructor(Vector3(6444.185f, 4942.615f, 65.17754f), Vector3(0, 0, 216)), owning_building_guid = 80, door_guid = 603) - LocalObject(1229, IFFLock.Constructor(Vector3(6444.185f, 4942.615f, 85.17754f), Vector3(0, 0, 216)), owning_building_guid = 80, door_guid = 604) - LocalObject(1232, IFFLock.Constructor(Vector3(6451.234f, 4959.276f, 65.17754f), Vector3(0, 0, 36)), owning_building_guid = 80, door_guid = 607) - LocalObject(1233, IFFLock.Constructor(Vector3(6451.234f, 4959.276f, 85.17754f), Vector3(0, 0, 36)), owning_building_guid = 80, door_guid = 608) + LocalObject( + 1228, + IFFLock.Constructor(Vector3(6444.185f, 4942.615f, 65.17754f), Vector3(0, 0, 216)), + owning_building_guid = 80, + door_guid = 603 + ) + LocalObject( + 1229, + IFFLock.Constructor(Vector3(6444.185f, 4942.615f, 85.17754f), Vector3(0, 0, 216)), + owning_building_guid = 80, + door_guid = 604 + ) + LocalObject( + 1232, + IFFLock.Constructor(Vector3(6451.234f, 4959.276f, 65.17754f), Vector3(0, 0, 36)), + owning_building_guid = 80, + door_guid = 607 + ) + LocalObject( + 1233, + IFFLock.Constructor(Vector3(6451.234f, 4959.276f, 85.17754f), Vector3(0, 0, 36)), + owning_building_guid = 80, + door_guid = 608 + ) LocalObject(1598, Locker.Constructor(Vector3(6441.876f, 4936.597f, 53.71054f)), owning_building_guid = 80) LocalObject(1599, Locker.Constructor(Vector3(6442.958f, 4935.812f, 53.71054f)), owning_building_guid = 80) LocalObject(1600, Locker.Constructor(Vector3(6445.132f, 4934.231f, 53.71054f)), owning_building_guid = 80) @@ -2800,39 +8218,126 @@ object Map09 { // Searhus LocalObject(1613, Locker.Constructor(Vector3(6455.842f, 4953.485f, 53.71054f)), owning_building_guid = 80) LocalObject(1614, Locker.Constructor(Vector3(6457.988f, 4951.926f, 53.71054f)), owning_building_guid = 80) LocalObject(1615, Locker.Constructor(Vector3(6459.123f, 4951.102f, 53.71054f)), owning_building_guid = 80) - LocalObject(1975, Terminal.Constructor(Vector3(6449.547f, 4937.409f, 55.04855f), order_terminal), owning_building_guid = 80) - LocalObject(1976, Terminal.Constructor(Vector3(6452.912f, 4942.04f, 55.04855f), order_terminal), owning_building_guid = 80) - LocalObject(1977, Terminal.Constructor(Vector3(6456.075f, 4946.393f, 55.04855f), order_terminal), owning_building_guid = 80) - LocalObject(2611, SpawnTube.Constructor(Vector3(6439.456f, 4941.79f, 53.19855f), respawn_tube_tower, Vector3(0, 0, 36)), owning_building_guid = 80) - LocalObject(2614, SpawnTube.Constructor(Vector3(6449.102f, 4955.066f, 53.19855f), respawn_tube_tower, Vector3(0, 0, 36)), owning_building_guid = 80) - LocalObject(2240, ProximityTerminal.Constructor(Vector3(6434.015f, 4954.375f, 91.28654f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2241, Terminal.Constructor(Vector3(6434.015f, 4954.375f, 91.28654f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(2243, ProximityTerminal.Constructor(Vector3(6440.155f, 4962.825f, 91.28654f), pad_landing_tower_frame), owning_building_guid = 80) - LocalObject(2244, Terminal.Constructor(Vector3(6440.155f, 4962.825f, 91.28654f), air_rearm_terminal), owning_building_guid = 80) - LocalObject(1788, FacilityTurret.Constructor(Vector3(6417.131f, 4954.677f, 82.65855f), manned_turret), owning_building_guid = 80) + LocalObject( + 1975, + Terminal.Constructor(Vector3(6449.547f, 4937.409f, 55.04855f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1976, + Terminal.Constructor(Vector3(6452.912f, 4942.04f, 55.04855f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1977, + Terminal.Constructor(Vector3(6456.075f, 4946.393f, 55.04855f), order_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2611, + SpawnTube.Constructor(Vector3(6439.456f, 4941.79f, 53.19855f), respawn_tube_tower, Vector3(0, 0, 36)), + owning_building_guid = 80 + ) + LocalObject( + 2614, + SpawnTube.Constructor(Vector3(6449.102f, 4955.066f, 53.19855f), respawn_tube_tower, Vector3(0, 0, 36)), + owning_building_guid = 80 + ) + LocalObject( + 2240, + ProximityTerminal.Constructor(Vector3(6434.015f, 4954.375f, 91.28654f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2241, + Terminal.Constructor(Vector3(6434.015f, 4954.375f, 91.28654f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 2243, + ProximityTerminal.Constructor(Vector3(6440.155f, 4962.825f, 91.28654f), pad_landing_tower_frame), + owning_building_guid = 80 + ) + LocalObject( + 2244, + Terminal.Constructor(Vector3(6440.155f, 4962.825f, 91.28654f), air_rearm_terminal), + owning_building_guid = 80 + ) + LocalObject( + 1788, + FacilityTurret.Constructor(Vector3(6417.131f, 4954.677f, 82.65855f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1788, 5114) - LocalObject(1789, FacilityTurret.Constructor(Vector3(6465.801f, 4956.289f, 82.65855f), manned_turret), owning_building_guid = 80) + LocalObject( + 1789, + FacilityTurret.Constructor(Vector3(6465.801f, 4956.289f, 82.65855f), manned_turret), + owning_building_guid = 80 + ) TurretToWeapon(1789, 5115) - LocalObject(2396, Painbox.Constructor(Vector3(6437.4f, 4949.597f, 55.73605f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2397, Painbox.Constructor(Vector3(6445.542f, 4939.59f, 53.81654f), painbox_radius_continuous), owning_building_guid = 80) - LocalObject(2398, Painbox.Constructor(Vector3(6453.033f, 4949.577f, 53.81654f), painbox_radius_continuous), owning_building_guid = 80) + LocalObject( + 2396, + Painbox.Constructor(Vector3(6437.4f, 4949.597f, 55.73605f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2397, + Painbox.Constructor(Vector3(6445.542f, 4939.59f, 53.81654f), painbox_radius_continuous), + owning_building_guid = 80 + ) + LocalObject( + 2398, + Painbox.Constructor(Vector3(6453.033f, 4949.577f, 53.81654f), painbox_radius_continuous), + owning_building_guid = 80 + ) } Building50() def Building50(): Unit = { // Name: W_Cyssor_Warpgate_Tower Type: tower_c GUID: 81, MapID: 50 - LocalBuilding("W_Cyssor_Warpgate_Tower", 81, 50, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6630f, 3188f, 51.50481f), Vector3(0f, 0f, 15f), tower_c))) - LocalObject(2640, CaptureTerminal.Constructor(Vector3(6646.048f, 3192.194f, 61.50381f), secondary_capture), owning_building_guid = 81) + LocalBuilding( + "W_Cyssor_Warpgate_Tower", + 81, + 50, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6630f, 3188f, 51.50481f), Vector3(0f, 0f, 15f), tower_c) + ) + ) + LocalObject( + 2640, + CaptureTerminal.Constructor(Vector3(6646.048f, 3192.194f, 61.50381f), secondary_capture), + owning_building_guid = 81 + ) LocalObject(615, Door.Constructor(Vector3(6639.521f, 3198.833f, 53.02581f)), owning_building_guid = 81) LocalObject(616, Door.Constructor(Vector3(6639.521f, 3198.833f, 73.02481f)), owning_building_guid = 81) LocalObject(617, Door.Constructor(Vector3(6643.662f, 3183.378f, 53.02581f)), owning_building_guid = 81) LocalObject(618, Door.Constructor(Vector3(6643.662f, 3183.378f, 73.02481f)), owning_building_guid = 81) LocalObject(2820, Door.Constructor(Vector3(6639.419f, 3195.911f, 42.84081f)), owning_building_guid = 81) LocalObject(2821, Door.Constructor(Vector3(6643.667f, 3180.061f, 42.84081f)), owning_building_guid = 81) - LocalObject(1236, IFFLock.Constructor(Vector3(6637.337f, 3199.088f, 52.96581f), Vector3(0, 0, 345)), owning_building_guid = 81, door_guid = 615) - LocalObject(1237, IFFLock.Constructor(Vector3(6637.337f, 3199.088f, 72.96581f), Vector3(0, 0, 345)), owning_building_guid = 81, door_guid = 616) - LocalObject(1238, IFFLock.Constructor(Vector3(6645.849f, 3183.125f, 52.96581f), Vector3(0, 0, 165)), owning_building_guid = 81, door_guid = 617) - LocalObject(1239, IFFLock.Constructor(Vector3(6645.849f, 3183.125f, 72.96581f), Vector3(0, 0, 165)), owning_building_guid = 81, door_guid = 618) + LocalObject( + 1236, + IFFLock.Constructor(Vector3(6637.337f, 3199.088f, 52.96581f), Vector3(0, 0, 345)), + owning_building_guid = 81, + door_guid = 615 + ) + LocalObject( + 1237, + IFFLock.Constructor(Vector3(6637.337f, 3199.088f, 72.96581f), Vector3(0, 0, 345)), + owning_building_guid = 81, + door_guid = 616 + ) + LocalObject( + 1238, + IFFLock.Constructor(Vector3(6645.849f, 3183.125f, 52.96581f), Vector3(0, 0, 165)), + owning_building_guid = 81, + door_guid = 617 + ) + LocalObject( + 1239, + IFFLock.Constructor(Vector3(6645.849f, 3183.125f, 72.96581f), Vector3(0, 0, 165)), + owning_building_guid = 81, + door_guid = 618 + ) LocalObject(1616, Locker.Constructor(Vector3(6643.445f, 3198.679f, 41.49881f)), owning_building_guid = 81) LocalObject(1617, Locker.Constructor(Vector3(6644.737f, 3199.025f, 41.49881f)), owning_building_guid = 81) LocalObject(1618, Locker.Constructor(Vector3(6647.299f, 3199.711f, 41.49881f)), owning_building_guid = 81) @@ -2841,40 +8346,111 @@ object Map09 { // Searhus LocalObject(1621, Locker.Constructor(Vector3(6650.364f, 3177.889f, 41.49881f)), owning_building_guid = 81) LocalObject(1622, Locker.Constructor(Vector3(6652.96f, 3178.585f, 41.49881f)), owning_building_guid = 81) LocalObject(1623, Locker.Constructor(Vector3(6654.314f, 3178.948f, 41.49881f)), owning_building_guid = 81) - LocalObject(1978, Terminal.Constructor(Vector3(6650.395f, 3194.742f, 42.83681f), order_terminal), owning_building_guid = 81) - LocalObject(1979, Terminal.Constructor(Vector3(6651.788f, 3189.545f, 42.83681f), order_terminal), owning_building_guid = 81) - LocalObject(1980, Terminal.Constructor(Vector3(6653.269f, 3184.016f, 42.83681f), order_terminal), owning_building_guid = 81) - LocalObject(2615, SpawnTube.Constructor(Vector3(6639.267f, 3194.781f, 40.98681f), respawn_tube_tower, Vector3(0, 0, 345)), owning_building_guid = 81) - LocalObject(2616, SpawnTube.Constructor(Vector3(6643.514f, 3178.931f, 40.98681f), respawn_tube_tower, Vector3(0, 0, 345)), owning_building_guid = 81) - LocalObject(2246, ProximityTerminal.Constructor(Vector3(6627.606f, 3192.711f, 79.07481f), pad_landing_tower_frame), owning_building_guid = 81) - LocalObject(2247, Terminal.Constructor(Vector3(6627.606f, 3192.711f, 79.07481f), air_rearm_terminal), owning_building_guid = 81) - LocalObject(2249, ProximityTerminal.Constructor(Vector3(6630.31f, 3182.622f, 79.07481f), pad_landing_tower_frame), owning_building_guid = 81) - LocalObject(2250, Terminal.Constructor(Vector3(6630.31f, 3182.622f, 79.07481f), air_rearm_terminal), owning_building_guid = 81) - LocalObject(1792, FacilityTurret.Constructor(Vector3(6619.449f, 3169.69f, 70.44681f), manned_turret), owning_building_guid = 81) + LocalObject( + 1978, + Terminal.Constructor(Vector3(6650.395f, 3194.742f, 42.83681f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1979, + Terminal.Constructor(Vector3(6651.788f, 3189.545f, 42.83681f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1980, + Terminal.Constructor(Vector3(6653.269f, 3184.016f, 42.83681f), order_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2615, + SpawnTube.Constructor(Vector3(6639.267f, 3194.781f, 40.98681f), respawn_tube_tower, Vector3(0, 0, 345)), + owning_building_guid = 81 + ) + LocalObject( + 2616, + SpawnTube.Constructor(Vector3(6643.514f, 3178.931f, 40.98681f), respawn_tube_tower, Vector3(0, 0, 345)), + owning_building_guid = 81 + ) + LocalObject( + 2246, + ProximityTerminal.Constructor(Vector3(6627.606f, 3192.711f, 79.07481f), pad_landing_tower_frame), + owning_building_guid = 81 + ) + LocalObject( + 2247, + Terminal.Constructor(Vector3(6627.606f, 3192.711f, 79.07481f), air_rearm_terminal), + owning_building_guid = 81 + ) + LocalObject( + 2249, + ProximityTerminal.Constructor(Vector3(6630.31f, 3182.622f, 79.07481f), pad_landing_tower_frame), + owning_building_guid = 81 + ) + LocalObject( + 2250, + Terminal.Constructor(Vector3(6630.31f, 3182.622f, 79.07481f), air_rearm_terminal), + owning_building_guid = 81 + ) + LocalObject( + 1792, + FacilityTurret.Constructor(Vector3(6619.449f, 3169.69f, 70.44681f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(1792, 5116) - LocalObject(1793, FacilityTurret.Constructor(Vector3(6648.825f, 3208.529f, 70.44681f), manned_turret), owning_building_guid = 81) + LocalObject( + 1793, + FacilityTurret.Constructor(Vector3(6648.825f, 3208.529f, 70.44681f), manned_turret), + owning_building_guid = 81 + ) TurretToWeapon(1793, 5117) - LocalObject(2399, Painbox.Constructor(Vector3(6636.153f, 3182.245f, 43.52431f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(2400, Painbox.Constructor(Vector3(6646.006f, 3194.382f, 41.6048f), painbox_radius_continuous), owning_building_guid = 81) - LocalObject(2401, Painbox.Constructor(Vector3(6649.054f, 3182.276f, 41.6048f), painbox_radius_continuous), owning_building_guid = 81) + LocalObject( + 2399, + Painbox.Constructor(Vector3(6636.153f, 3182.245f, 43.52431f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 2400, + Painbox.Constructor(Vector3(6646.006f, 3194.382f, 41.6048f), painbox_radius_continuous), + owning_building_guid = 81 + ) + LocalObject( + 2401, + Painbox.Constructor(Vector3(6649.054f, 3182.276f, 41.6048f), painbox_radius_continuous), + owning_building_guid = 81 + ) } Building2() def Building2(): Unit = { // Name: WG_Searhus_to_Ishundar Type: warpgate GUID: 82, MapID: 2 - LocalBuilding("WG_Searhus_to_Ishundar", 82, 2, FoundationBuilder(WarpGate.Structure(Vector3(1536f, 7134f, 67.69463f)))) + LocalBuilding( + "WG_Searhus_to_Ishundar", + 82, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(1536f, 7134f, 67.69463f))) + ) } Building1() def Building1(): Unit = { // Name: WG_Searhus_to_Esamir Type: warpgate GUID: 83, MapID: 1 - LocalBuilding("WG_Searhus_to_Esamir", 83, 1, FoundationBuilder(WarpGate.Structure(Vector3(1540f, 1318f, 53.62445f)))) + LocalBuilding( + "WG_Searhus_to_Esamir", + 83, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(1540f, 1318f, 53.62445f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Searhus_to_Cyssor Type: warpgate GUID: 84, MapID: 3 - LocalBuilding("WG_Searhus_to_Cyssor", 84, 3, FoundationBuilder(WarpGate.Structure(Vector3(6990f, 3414f, 53.59508f)))) + LocalBuilding( + "WG_Searhus_to_Cyssor", + 84, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(6990f, 3414f, 53.59508f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map10.scala b/pslogin/src/main/scala/zonemaps/Map10.scala index fd985c24..4dfc8ea5 100644 --- a/pslogin/src/main/scala/zonemaps/Map10.scala +++ b/pslogin/src/main/scala/zonemaps/Map10.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map10 { // Amerish Building13() def Building13(): Unit = { // Name: Sungrey Type: amp_station GUID: 1, MapID: 13 - LocalBuilding("Sungrey", 1, 13, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4686f, 5546f, 72.05738f), Vector3(0f, 0f, 89f), amp_station))) - LocalObject(197, CaptureTerminal.Constructor(Vector3(4685.939f, 5542.665f, 83.56538f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Sungrey", + 1, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4686f, 5546f, 72.05738f), + Vector3(0f, 0f, 89f), + amp_station + ) + ) + ) + LocalObject( + 197, + CaptureTerminal.Constructor(Vector3(4685.939f, 5542.665f, 83.56538f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(151, Door.Constructor(Vector3(4679.2f, 5546.333f, 84.95938f)), owning_building_guid = 1) LocalObject(152, Door.Constructor(Vector3(4692.808f, 5546.092f, 84.95938f)), owning_building_guid = 1) LocalObject(405, Door.Constructor(Vector3(4593.418f, 5524.11f, 73.80838f)), owning_building_guid = 1) @@ -70,18 +86,78 @@ object Map10 { // Amerish LocalObject(2532, Door.Constructor(Vector3(4681.348f, 5526.751f, 66.61138f)), owning_building_guid = 1) LocalObject(2533, Door.Constructor(Vector3(4688.636f, 5526.624f, 66.61138f)), owning_building_guid = 1) LocalObject(2534, Door.Constructor(Vector3(4695.928f, 5526.497f, 66.61138f)), owning_building_guid = 1) - LocalObject(884, IFFLock.Constructor(Vector3(4683.492f, 5577.964f, 73.73738f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 836) - LocalObject(989, IFFLock.Constructor(Vector3(4603.824f, 5469.378f, 73.71738f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 407) - LocalObject(994, IFFLock.Constructor(Vector3(4649.649f, 5544.59f, 78.71938f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 415) - LocalObject(996, IFFLock.Constructor(Vector3(4653.469f, 5552.111f, 83.71838f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 417) - LocalObject(998, IFFLock.Constructor(Vector3(4657.375f, 5541.355f, 83.71838f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 416) - LocalObject(1000, IFFLock.Constructor(Vector3(4676.824f, 5532.586f, 66.09338f), Vector3(0, 0, 271)), owning_building_guid = 1, door_guid = 706) - LocalObject(1001, IFFLock.Constructor(Vector3(4687.604f, 5498.775f, 58.59338f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 711) - LocalObject(1002, IFFLock.Constructor(Vector3(4699.554f, 5544.823f, 58.59338f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 714) - LocalObject(1003, IFFLock.Constructor(Vector3(4702.625f, 5535.28f, 66.09338f), Vector3(0, 0, 91)), owning_building_guid = 1, door_guid = 716) - LocalObject(1008, IFFLock.Constructor(Vector3(4714.601f, 5551.043f, 83.71838f), Vector3(0, 0, 1)), owning_building_guid = 1, door_guid = 430) - LocalObject(1012, IFFLock.Constructor(Vector3(4718.502f, 5540.288f, 83.71838f), Vector3(0, 0, 181)), owning_building_guid = 1, door_guid = 429) - LocalObject(1013, IFFLock.Constructor(Vector3(4722.33f, 5547.408f, 78.71938f), Vector3(0, 0, 91)), owning_building_guid = 1, door_guid = 431) + LocalObject( + 884, + IFFLock.Constructor(Vector3(4683.492f, 5577.964f, 73.73738f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 836 + ) + LocalObject( + 989, + IFFLock.Constructor(Vector3(4603.824f, 5469.378f, 73.71738f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 407 + ) + LocalObject( + 994, + IFFLock.Constructor(Vector3(4649.649f, 5544.59f, 78.71938f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 415 + ) + LocalObject( + 996, + IFFLock.Constructor(Vector3(4653.469f, 5552.111f, 83.71838f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 417 + ) + LocalObject( + 998, + IFFLock.Constructor(Vector3(4657.375f, 5541.355f, 83.71838f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 416 + ) + LocalObject( + 1000, + IFFLock.Constructor(Vector3(4676.824f, 5532.586f, 66.09338f), Vector3(0, 0, 271)), + owning_building_guid = 1, + door_guid = 706 + ) + LocalObject( + 1001, + IFFLock.Constructor(Vector3(4687.604f, 5498.775f, 58.59338f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 711 + ) + LocalObject( + 1002, + IFFLock.Constructor(Vector3(4699.554f, 5544.823f, 58.59338f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 714 + ) + LocalObject( + 1003, + IFFLock.Constructor(Vector3(4702.625f, 5535.28f, 66.09338f), Vector3(0, 0, 91)), + owning_building_guid = 1, + door_guid = 716 + ) + LocalObject( + 1008, + IFFLock.Constructor(Vector3(4714.601f, 5551.043f, 83.71838f), Vector3(0, 0, 1)), + owning_building_guid = 1, + door_guid = 430 + ) + LocalObject( + 1012, + IFFLock.Constructor(Vector3(4718.502f, 5540.288f, 83.71838f), Vector3(0, 0, 181)), + owning_building_guid = 1, + door_guid = 429 + ) + LocalObject( + 1013, + IFFLock.Constructor(Vector3(4722.33f, 5547.408f, 78.71938f), Vector3(0, 0, 91)), + owning_building_guid = 1, + door_guid = 431 + ) LocalObject(1289, Locker.Constructor(Vector3(4679.874f, 5548.301f, 57.25738f)), owning_building_guid = 1) LocalObject(1290, Locker.Constructor(Vector3(4679.897f, 5549.625f, 57.25738f)), owning_building_guid = 1) LocalObject(1291, Locker.Constructor(Vector3(4679.92f, 5550.961f, 57.25738f)), owning_building_guid = 1) @@ -94,65 +170,254 @@ object Map10 { // Amerish LocalObject(1298, Locker.Constructor(Vector3(4699.73f, 5538.486f, 65.01838f)), owning_building_guid = 1) LocalObject(1299, Locker.Constructor(Vector3(4699.75f, 5539.633f, 65.01838f)), owning_building_guid = 1) LocalObject(1300, Locker.Constructor(Vector3(4699.77f, 5540.782f, 65.01838f)), owning_building_guid = 1) - LocalObject(1724, Terminal.Constructor(Vector3(4663.526f, 5546.39f, 73.58638f), order_terminal), owning_building_guid = 1) - LocalObject(1725, Terminal.Constructor(Vector3(4685.612f, 5523.536f, 73.58638f), order_terminal), owning_building_guid = 1) - LocalObject(1726, Terminal.Constructor(Vector3(4686.979f, 5540.636f, 66.34738f), order_terminal), owning_building_guid = 1) - LocalObject(1727, Terminal.Constructor(Vector3(4690.767f, 5540.57f, 66.34738f), order_terminal), owning_building_guid = 1) - LocalObject(1728, Terminal.Constructor(Vector3(4694.498f, 5540.505f, 66.34738f), order_terminal), owning_building_guid = 1) - LocalObject(1729, Terminal.Constructor(Vector3(4708.474f, 5545.606f, 73.58638f), order_terminal), owning_building_guid = 1) - LocalObject(2446, Terminal.Constructor(Vector3(4645.76f, 5498.753f, 66.31438f), spawn_terminal), owning_building_guid = 1) - LocalObject(2450, Terminal.Constructor(Vector3(4670.175f, 5522.331f, 58.81438f), spawn_terminal), owning_building_guid = 1) - LocalObject(2451, Terminal.Constructor(Vector3(4683.845f, 5527.005f, 66.89138f), spawn_terminal), owning_building_guid = 1) - LocalObject(2452, Terminal.Constructor(Vector3(4690.403f, 5540.418f, 78.78538f), spawn_terminal), owning_building_guid = 1) - LocalObject(2453, Terminal.Constructor(Vector3(4691.132f, 5526.875f, 66.89138f), spawn_terminal), owning_building_guid = 1) - LocalObject(2454, Terminal.Constructor(Vector3(4698.423f, 5526.751f, 66.89138f), spawn_terminal), owning_building_guid = 1) - LocalObject(2651, Terminal.Constructor(Vector3(4602.703f, 5499.521f, 74.15938f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(1632, VehicleSpawnPad.Constructor(Vector3(4616.341f, 5499.374f, 70.00238f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 1, terminal_guid = 2651) + LocalObject( + 1724, + Terminal.Constructor(Vector3(4663.526f, 5546.39f, 73.58638f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1725, + Terminal.Constructor(Vector3(4685.612f, 5523.536f, 73.58638f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1726, + Terminal.Constructor(Vector3(4686.979f, 5540.636f, 66.34738f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1727, + Terminal.Constructor(Vector3(4690.767f, 5540.57f, 66.34738f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1728, + Terminal.Constructor(Vector3(4694.498f, 5540.505f, 66.34738f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1729, + Terminal.Constructor(Vector3(4708.474f, 5545.606f, 73.58638f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2446, + Terminal.Constructor(Vector3(4645.76f, 5498.753f, 66.31438f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2450, + Terminal.Constructor(Vector3(4670.175f, 5522.331f, 58.81438f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2451, + Terminal.Constructor(Vector3(4683.845f, 5527.005f, 66.89138f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2452, + Terminal.Constructor(Vector3(4690.403f, 5540.418f, 78.78538f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2453, + Terminal.Constructor(Vector3(4691.132f, 5526.875f, 66.89138f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2454, + Terminal.Constructor(Vector3(4698.423f, 5526.751f, 66.89138f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2651, + Terminal.Constructor(Vector3(4602.703f, 5499.521f, 74.15938f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 1632, + VehicleSpawnPad.Constructor(Vector3(4616.341f, 5499.374f, 70.00238f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 1, + terminal_guid = 2651 + ) LocalObject(2299, ResourceSilo.Constructor(Vector3(4772.401f, 5597.145f, 79.29238f)), owning_building_guid = 1) - LocalObject(2345, SpawnTube.Constructor(Vector3(4682.394f, 5526.293f, 64.75738f), Vector3(0, 0, 271)), owning_building_guid = 1) - LocalObject(2346, SpawnTube.Constructor(Vector3(4689.68f, 5526.166f, 64.75738f), Vector3(0, 0, 271)), owning_building_guid = 1) - LocalObject(2347, SpawnTube.Constructor(Vector3(4696.97f, 5526.039f, 64.75738f), Vector3(0, 0, 271)), owning_building_guid = 1) - LocalObject(1651, ProximityTerminal.Constructor(Vector3(4680.528f, 5554.541f, 57.25738f), medical_terminal), owning_building_guid = 1) - LocalObject(1652, ProximityTerminal.Constructor(Vector3(4685.621f, 5523.955f, 77.25738f), medical_terminal), owning_building_guid = 1) - LocalObject(1909, ProximityTerminal.Constructor(Vector3(4629.061f, 5573.595f, 82.72338f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1910, Terminal.Constructor(Vector3(4629.061f, 5573.595f, 82.72338f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1921, ProximityTerminal.Constructor(Vector3(4665.233f, 5489.106f, 80.56238f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1922, Terminal.Constructor(Vector3(4665.233f, 5489.106f, 80.56238f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1930, ProximityTerminal.Constructor(Vector3(4706.692f, 5595.021f, 80.56238f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1931, Terminal.Constructor(Vector3(4706.692f, 5595.021f, 80.56238f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(1933, ProximityTerminal.Constructor(Vector3(4759.628f, 5553.014f, 80.58538f), pad_landing_frame), owning_building_guid = 1) - LocalObject(1934, Terminal.Constructor(Vector3(4759.628f, 5553.014f, 80.58538f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(2241, ProximityTerminal.Constructor(Vector3(4684.573f, 5475.918f, 71.45738f), repair_silo), owning_building_guid = 1) - LocalObject(2242, Terminal.Constructor(Vector3(4684.573f, 5475.918f, 71.45738f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(2245, ProximityTerminal.Constructor(Vector3(4686.694f, 5608.322f, 71.45738f), repair_silo), owning_building_guid = 1) - LocalObject(2246, Terminal.Constructor(Vector3(4686.694f, 5608.322f, 71.45738f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(1566, FacilityTurret.Constructor(Vector3(4579.77f, 5467.218f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 2345, + SpawnTube.Constructor(Vector3(4682.394f, 5526.293f, 64.75738f), Vector3(0, 0, 271)), + owning_building_guid = 1 + ) + LocalObject( + 2346, + SpawnTube.Constructor(Vector3(4689.68f, 5526.166f, 64.75738f), Vector3(0, 0, 271)), + owning_building_guid = 1 + ) + LocalObject( + 2347, + SpawnTube.Constructor(Vector3(4696.97f, 5526.039f, 64.75738f), Vector3(0, 0, 271)), + owning_building_guid = 1 + ) + LocalObject( + 1651, + ProximityTerminal.Constructor(Vector3(4680.528f, 5554.541f, 57.25738f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1652, + ProximityTerminal.Constructor(Vector3(4685.621f, 5523.955f, 77.25738f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1909, + ProximityTerminal.Constructor(Vector3(4629.061f, 5573.595f, 82.72338f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1910, + Terminal.Constructor(Vector3(4629.061f, 5573.595f, 82.72338f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1921, + ProximityTerminal.Constructor(Vector3(4665.233f, 5489.106f, 80.56238f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1922, + Terminal.Constructor(Vector3(4665.233f, 5489.106f, 80.56238f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1930, + ProximityTerminal.Constructor(Vector3(4706.692f, 5595.021f, 80.56238f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1931, + Terminal.Constructor(Vector3(4706.692f, 5595.021f, 80.56238f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1933, + ProximityTerminal.Constructor(Vector3(4759.628f, 5553.014f, 80.58538f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 1934, + Terminal.Constructor(Vector3(4759.628f, 5553.014f, 80.58538f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2241, + ProximityTerminal.Constructor(Vector3(4684.573f, 5475.918f, 71.45738f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2242, + Terminal.Constructor(Vector3(4684.573f, 5475.918f, 71.45738f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 2245, + ProximityTerminal.Constructor(Vector3(4686.694f, 5608.322f, 71.45738f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 2246, + Terminal.Constructor(Vector3(4686.694f, 5608.322f, 71.45738f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 1566, + FacilityTurret.Constructor(Vector3(4579.77f, 5467.218f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1566, 5000) - LocalObject(1567, FacilityTurret.Constructor(Vector3(4582.458f, 5620.663f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 1567, + FacilityTurret.Constructor(Vector3(4582.458f, 5620.663f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1567, 5001) - LocalObject(1568, FacilityTurret.Constructor(Vector3(4645.869f, 5621.774f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 1568, + FacilityTurret.Constructor(Vector3(4645.869f, 5621.774f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1568, 5002) - LocalObject(1572, FacilityTurret.Constructor(Vector3(4781.417f, 5463.727f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 1572, + FacilityTurret.Constructor(Vector3(4781.417f, 5463.727f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1572, 5003) - LocalObject(1573, FacilityTurret.Constructor(Vector3(4784.104f, 5617.134f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 1573, + FacilityTurret.Constructor(Vector3(4784.104f, 5617.134f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1573, 5004) - LocalObject(1574, FacilityTurret.Constructor(Vector3(4784.684f, 5523.266f, 80.76538f), manned_turret), owning_building_guid = 1) + LocalObject( + 1574, + FacilityTurret.Constructor(Vector3(4784.684f, 5523.266f, 80.76538f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(1574, 5005) LocalObject(2062, Painbox.Constructor(Vector3(4691.837f, 5486.04f, 62.12838f), painbox), owning_building_guid = 1) - LocalObject(2074, Painbox.Constructor(Vector3(4687.197f, 5533.582f, 69.70578f), painbox_continuous), owning_building_guid = 1) - LocalObject(2086, Painbox.Constructor(Vector3(4689.956f, 5500.119f, 58.71638f), painbox_door_radius), owning_building_guid = 1) - LocalObject(2110, Painbox.Constructor(Vector3(4676.509f, 5534.238f, 66.02188f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2111, Painbox.Constructor(Vector3(4682.069f, 5547.536f, 67.93598f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(2112, Painbox.Constructor(Vector3(4702.852f, 5533.705f, 65.95738f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 2074, + Painbox.Constructor(Vector3(4687.197f, 5533.582f, 69.70578f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2086, + Painbox.Constructor(Vector3(4689.956f, 5500.119f, 58.71638f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 2110, + Painbox.Constructor(Vector3(4676.509f, 5534.238f, 66.02188f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2111, + Painbox.Constructor(Vector3(4682.069f, 5547.536f, 67.93598f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 2112, + Painbox.Constructor(Vector3(4702.852f, 5533.705f, 65.95738f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(278, Generator.Constructor(Vector3(4688.915f, 5482.384f, 55.96338f)), owning_building_guid = 1) - LocalObject(266, Terminal.Constructor(Vector3(4689.011f, 5490.576f, 57.25738f), gen_control), owning_building_guid = 1) + LocalObject( + 266, + Terminal.Constructor(Vector3(4689.011f, 5490.576f, 57.25738f), gen_control), + owning_building_guid = 1 + ) } Building49() def Building49(): Unit = { // Name: Verica Type: amp_station GUID: 4, MapID: 49 - LocalBuilding("Verica", 4, 49, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4902f, 3534f, 47.26933f), Vector3(0f, 0f, 270f), amp_station))) - LocalObject(198, CaptureTerminal.Constructor(Vector3(4902.003f, 3537.336f, 58.77732f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Verica", + 4, + 49, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4902f, 3534f, 47.26933f), + Vector3(0f, 0f, 270f), + amp_station + ) + ) + ) + LocalObject( + 198, + CaptureTerminal.Constructor(Vector3(4902.003f, 3537.336f, 58.77732f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(153, Door.Constructor(Vector3(4895.195f, 3533.789f, 60.17133f)), owning_building_guid = 4) LocalObject(154, Door.Constructor(Vector3(4908.805f, 3533.786f, 60.17133f)), owning_building_guid = 4) LocalObject(439, Door.Constructor(Vector3(4817.782f, 3498.305f, 49.02032f)), owning_building_guid = 4) @@ -198,18 +463,78 @@ object Map10 { // Amerish LocalObject(2539, Door.Constructor(Vector3(4891.733f, 3553.327f, 41.82333f)), owning_building_guid = 4) LocalObject(2540, Door.Constructor(Vector3(4899.026f, 3553.327f, 41.82333f)), owning_building_guid = 4) LocalObject(2541, Door.Constructor(Vector3(4906.315f, 3553.327f, 41.82333f)), owning_building_guid = 4) - LocalObject(885, IFFLock.Constructor(Vector3(4905.066f, 3502.085f, 48.94933f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 837) - LocalObject(1018, IFFLock.Constructor(Vector3(4865.7f, 3531.958f, 53.93132f), Vector3(0, 0, 270)), owning_building_guid = 4, door_guid = 449) - LocalObject(1019, IFFLock.Constructor(Vector3(4869.403f, 3539.144f, 58.93032f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 451) - LocalObject(1020, IFFLock.Constructor(Vector3(4873.492f, 3528.458f, 58.93032f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 450) - LocalObject(1021, IFFLock.Constructor(Vector3(4885.19f, 3544.428f, 41.30532f), Vector3(0, 0, 270)), owning_building_guid = 4, door_guid = 727) - LocalObject(1022, IFFLock.Constructor(Vector3(4888.428f, 3534.94f, 33.80532f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 728) - LocalObject(1023, IFFLock.Constructor(Vector3(4899.572f, 3581.19f, 33.80532f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 731) - LocalObject(1024, IFFLock.Constructor(Vector3(4910.941f, 3547.572f, 41.30532f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 735) - LocalObject(1025, IFFLock.Constructor(Vector3(4930.54f, 3539.144f, 58.93032f), Vector3(0, 0, 0)), owning_building_guid = 4, door_guid = 453) - LocalObject(1026, IFFLock.Constructor(Vector3(4934.633f, 3528.458f, 58.93032f), Vector3(0, 0, 180)), owning_building_guid = 4, door_guid = 452) - LocalObject(1027, IFFLock.Constructor(Vector3(4938.321f, 3536.044f, 53.93132f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 454) - LocalObject(1028, IFFLock.Constructor(Vector3(4982.826f, 3612.044f, 48.92933f), Vector3(0, 0, 90)), owning_building_guid = 4, door_guid = 457) + LocalObject( + 885, + IFFLock.Constructor(Vector3(4905.066f, 3502.085f, 48.94933f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 837 + ) + LocalObject( + 1018, + IFFLock.Constructor(Vector3(4865.7f, 3531.958f, 53.93132f), Vector3(0, 0, 270)), + owning_building_guid = 4, + door_guid = 449 + ) + LocalObject( + 1019, + IFFLock.Constructor(Vector3(4869.403f, 3539.144f, 58.93032f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 451 + ) + LocalObject( + 1020, + IFFLock.Constructor(Vector3(4873.492f, 3528.458f, 58.93032f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 450 + ) + LocalObject( + 1021, + IFFLock.Constructor(Vector3(4885.19f, 3544.428f, 41.30532f), Vector3(0, 0, 270)), + owning_building_guid = 4, + door_guid = 727 + ) + LocalObject( + 1022, + IFFLock.Constructor(Vector3(4888.428f, 3534.94f, 33.80532f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 728 + ) + LocalObject( + 1023, + IFFLock.Constructor(Vector3(4899.572f, 3581.19f, 33.80532f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 731 + ) + LocalObject( + 1024, + IFFLock.Constructor(Vector3(4910.941f, 3547.572f, 41.30532f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 735 + ) + LocalObject( + 1025, + IFFLock.Constructor(Vector3(4930.54f, 3539.144f, 58.93032f), Vector3(0, 0, 0)), + owning_building_guid = 4, + door_guid = 453 + ) + LocalObject( + 1026, + IFFLock.Constructor(Vector3(4934.633f, 3528.458f, 58.93032f), Vector3(0, 0, 180)), + owning_building_guid = 4, + door_guid = 452 + ) + LocalObject( + 1027, + IFFLock.Constructor(Vector3(4938.321f, 3536.044f, 53.93132f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 454 + ) + LocalObject( + 1028, + IFFLock.Constructor(Vector3(4982.826f, 3612.044f, 48.92933f), Vector3(0, 0, 90)), + owning_building_guid = 4, + door_guid = 457 + ) LocalObject(1317, Locker.Constructor(Vector3(4888.141f, 3538.977f, 40.23032f)), owning_building_guid = 4) LocalObject(1318, Locker.Constructor(Vector3(4888.141f, 3540.126f, 40.23032f)), owning_building_guid = 4) LocalObject(1319, Locker.Constructor(Vector3(4888.141f, 3541.273f, 40.23032f)), owning_building_guid = 4) @@ -222,64 +547,253 @@ object Map10 { // Amerish LocalObject(1326, Locker.Constructor(Vector3(4908.165f, 3529.146f, 32.46933f)), owning_building_guid = 4) LocalObject(1327, Locker.Constructor(Vector3(4908.165f, 3530.482f, 32.46933f)), owning_building_guid = 4) LocalObject(1328, Locker.Constructor(Vector3(4908.165f, 3531.806f, 32.46933f)), owning_building_guid = 4) - LocalObject(1736, Terminal.Constructor(Vector3(4879.523f, 3534.002f, 48.79832f), order_terminal), owning_building_guid = 4) - LocalObject(1737, Terminal.Constructor(Vector3(4893.408f, 3539.346f, 41.55933f), order_terminal), owning_building_guid = 4) - LocalObject(1738, Terminal.Constructor(Vector3(4897.139f, 3539.346f, 41.55933f), order_terminal), owning_building_guid = 4) - LocalObject(1739, Terminal.Constructor(Vector3(4900.928f, 3539.346f, 41.55933f), order_terminal), owning_building_guid = 4) - LocalObject(1740, Terminal.Constructor(Vector3(4901.996f, 3556.467f, 48.79832f), order_terminal), owning_building_guid = 4) - LocalObject(1741, Terminal.Constructor(Vector3(4924.477f, 3534.002f, 48.79832f), order_terminal), owning_building_guid = 4) - LocalObject(2456, Terminal.Constructor(Vector3(4889.243f, 3553.029f, 42.10332f), spawn_terminal), owning_building_guid = 4) - LocalObject(2457, Terminal.Constructor(Vector3(4896.535f, 3553.033f, 42.10332f), spawn_terminal), owning_building_guid = 4) - LocalObject(2458, Terminal.Constructor(Vector3(4897.5f, 3539.504f, 53.99733f), spawn_terminal), owning_building_guid = 4) - LocalObject(2459, Terminal.Constructor(Vector3(4903.823f, 3553.03f, 42.10332f), spawn_terminal), owning_building_guid = 4) - LocalObject(2460, Terminal.Constructor(Vector3(4917.409f, 3557.942f, 34.02633f), spawn_terminal), owning_building_guid = 4) - LocalObject(2461, Terminal.Constructor(Vector3(4941.409f, 3581.942f, 41.52633f), spawn_terminal), owning_building_guid = 4) - LocalObject(2653, Terminal.Constructor(Vector3(4984.473f, 3581.925f, 49.37133f), vehicle_terminal_combined), owning_building_guid = 4) - LocalObject(1634, VehicleSpawnPad.Constructor(Vector3(4970.835f, 3581.835f, 45.21432f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 4, terminal_guid = 2653) + LocalObject( + 1736, + Terminal.Constructor(Vector3(4879.523f, 3534.002f, 48.79832f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1737, + Terminal.Constructor(Vector3(4893.408f, 3539.346f, 41.55933f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1738, + Terminal.Constructor(Vector3(4897.139f, 3539.346f, 41.55933f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1739, + Terminal.Constructor(Vector3(4900.928f, 3539.346f, 41.55933f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1740, + Terminal.Constructor(Vector3(4901.996f, 3556.467f, 48.79832f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1741, + Terminal.Constructor(Vector3(4924.477f, 3534.002f, 48.79832f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2456, + Terminal.Constructor(Vector3(4889.243f, 3553.029f, 42.10332f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2457, + Terminal.Constructor(Vector3(4896.535f, 3553.033f, 42.10332f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2458, + Terminal.Constructor(Vector3(4897.5f, 3539.504f, 53.99733f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2459, + Terminal.Constructor(Vector3(4903.823f, 3553.03f, 42.10332f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2460, + Terminal.Constructor(Vector3(4917.409f, 3557.942f, 34.02633f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2461, + Terminal.Constructor(Vector3(4941.409f, 3581.942f, 41.52633f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2653, + Terminal.Constructor(Vector3(4984.473f, 3581.925f, 49.37133f), vehicle_terminal_combined), + owning_building_guid = 4 + ) + LocalObject( + 1634, + VehicleSpawnPad.Constructor(Vector3(4970.835f, 3581.835f, 45.21432f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 4, + terminal_guid = 2653 + ) LocalObject(2300, ResourceSilo.Constructor(Vector3(4816.505f, 3481.355f, 54.50433f)), owning_building_guid = 4) - LocalObject(2352, SpawnTube.Constructor(Vector3(4890.683f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), owning_building_guid = 4) - LocalObject(2353, SpawnTube.Constructor(Vector3(4897.974f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), owning_building_guid = 4) - LocalObject(2354, SpawnTube.Constructor(Vector3(4905.262f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), owning_building_guid = 4) - LocalObject(1653, ProximityTerminal.Constructor(Vector3(4901.994f, 3556.048f, 52.46933f), medical_terminal), owning_building_guid = 4) - LocalObject(1654, ProximityTerminal.Constructor(Vector3(4907.62f, 3525.556f, 32.46933f), medical_terminal), owning_building_guid = 4) - LocalObject(1936, ProximityTerminal.Constructor(Vector3(4828.505f, 3525.702f, 55.79733f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1937, Terminal.Constructor(Vector3(4828.505f, 3525.702f, 55.79733f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1939, ProximityTerminal.Constructor(Vector3(4882.167f, 3484.625f, 55.77433f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1940, Terminal.Constructor(Vector3(4882.167f, 3484.625f, 55.77433f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1942, ProximityTerminal.Constructor(Vector3(4921.771f, 3591.248f, 55.77433f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1943, Terminal.Constructor(Vector3(4921.771f, 3591.248f, 55.77433f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(1945, ProximityTerminal.Constructor(Vector3(4959.412f, 3507.403f, 57.93533f), pad_landing_frame), owning_building_guid = 4) - LocalObject(1946, Terminal.Constructor(Vector3(4959.412f, 3507.403f, 57.93533f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(2253, ProximityTerminal.Constructor(Vector3(4902.204f, 3604.096f, 46.66933f), repair_silo), owning_building_guid = 4) - LocalObject(2254, Terminal.Constructor(Vector3(4902.204f, 3604.096f, 46.66933f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(2257, ProximityTerminal.Constructor(Vector3(4902.393f, 3471.675f, 46.66933f), repair_silo), owning_building_guid = 4) - LocalObject(2258, Terminal.Constructor(Vector3(4902.393f, 3471.675f, 46.66933f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(1575, FacilityTurret.Constructor(Vector3(4802.934f, 3555.008f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 2352, + SpawnTube.Constructor(Vector3(4890.683f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), + owning_building_guid = 4 + ) + LocalObject( + 2353, + SpawnTube.Constructor(Vector3(4897.974f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), + owning_building_guid = 4 + ) + LocalObject( + 2354, + SpawnTube.Constructor(Vector3(4905.262f, 3553.767f, 39.96933f), Vector3(0, 0, 90)), + owning_building_guid = 4 + ) + LocalObject( + 1653, + ProximityTerminal.Constructor(Vector3(4901.994f, 3556.048f, 52.46933f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1654, + ProximityTerminal.Constructor(Vector3(4907.62f, 3525.556f, 32.46933f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1936, + ProximityTerminal.Constructor(Vector3(4828.505f, 3525.702f, 55.79733f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1937, + Terminal.Constructor(Vector3(4828.505f, 3525.702f, 55.79733f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1939, + ProximityTerminal.Constructor(Vector3(4882.167f, 3484.625f, 55.77433f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1940, + Terminal.Constructor(Vector3(4882.167f, 3484.625f, 55.77433f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1942, + ProximityTerminal.Constructor(Vector3(4921.771f, 3591.248f, 55.77433f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1943, + Terminal.Constructor(Vector3(4921.771f, 3591.248f, 55.77433f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1945, + ProximityTerminal.Constructor(Vector3(4959.412f, 3507.403f, 57.93533f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 1946, + Terminal.Constructor(Vector3(4959.412f, 3507.403f, 57.93533f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2253, + ProximityTerminal.Constructor(Vector3(4902.204f, 3604.096f, 46.66933f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2254, + Terminal.Constructor(Vector3(4902.204f, 3604.096f, 46.66933f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 2257, + ProximityTerminal.Constructor(Vector3(4902.393f, 3471.675f, 46.66933f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 2258, + Terminal.Constructor(Vector3(4902.393f, 3471.675f, 46.66933f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 1575, + FacilityTurret.Constructor(Vector3(4802.934f, 3555.008f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1575, 5006) - LocalObject(1576, FacilityTurret.Constructor(Vector3(4805.152f, 3461.165f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 1576, + FacilityTurret.Constructor(Vector3(4805.152f, 3461.165f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1576, 5007) - LocalObject(1577, FacilityTurret.Constructor(Vector3(4805.162f, 3614.595f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 1577, + FacilityTurret.Constructor(Vector3(4805.162f, 3614.595f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1577, 5008) - LocalObject(1580, FacilityTurret.Constructor(Vector3(4943.447f, 3458.938f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 1580, + FacilityTurret.Constructor(Vector3(4943.447f, 3458.938f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1580, 5009) - LocalObject(1583, FacilityTurret.Constructor(Vector3(5006.829f, 3461.156f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 1583, + FacilityTurret.Constructor(Vector3(5006.829f, 3461.156f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1583, 5010) - LocalObject(1584, FacilityTurret.Constructor(Vector3(5006.839f, 3614.624f, 55.97733f), manned_turret), owning_building_guid = 4) + LocalObject( + 1584, + FacilityTurret.Constructor(Vector3(5006.839f, 3614.624f, 55.97733f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(1584, 5011) - LocalObject(2063, Painbox.Constructor(Vector3(4895.117f, 3593.849f, 37.34032f), painbox), owning_building_guid = 4) - LocalObject(2075, Painbox.Constructor(Vector3(4900.586f, 3546.396f, 44.91772f), painbox_continuous), owning_building_guid = 4) - LocalObject(2087, Painbox.Constructor(Vector3(4897.244f, 3579.805f, 33.92833f), painbox_door_radius), owning_building_guid = 4) - LocalObject(2113, Painbox.Constructor(Vector3(4884.937f, 3546f, 41.16933f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2114, Painbox.Constructor(Vector3(4905.957f, 3532.533f, 43.14793f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(2115, Painbox.Constructor(Vector3(4911.284f, 3545.926f, 41.23383f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 2063, + Painbox.Constructor(Vector3(4895.117f, 3593.849f, 37.34032f), painbox), + owning_building_guid = 4 + ) + LocalObject( + 2075, + Painbox.Constructor(Vector3(4900.586f, 3546.396f, 44.91772f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2087, + Painbox.Constructor(Vector3(4897.244f, 3579.805f, 33.92833f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 2113, + Painbox.Constructor(Vector3(4884.937f, 3546f, 41.16933f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2114, + Painbox.Constructor(Vector3(4905.957f, 3532.533f, 43.14793f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 2115, + Painbox.Constructor(Vector3(4911.284f, 3545.926f, 41.23383f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(279, Generator.Constructor(Vector3(4897.975f, 3597.555f, 31.17533f)), owning_building_guid = 4) - LocalObject(267, Terminal.Constructor(Vector3(4898.022f, 3589.363f, 32.46933f), gen_control), owning_building_guid = 4) + LocalObject( + 267, + Terminal.Constructor(Vector3(4898.022f, 3589.363f, 32.46933f), gen_control), + owning_building_guid = 4 + ) } Building44() def Building44(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 44 - LocalBuilding("bunker_gauntlet", 7, 44, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4418f, 2340f, 47.18137f), Vector3(0f, 0f, 270f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 44, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(4418f, 2340f, 47.18137f), + Vector3(0f, 0f, 270f), + bunker_gauntlet + ) + ) + ) LocalObject(393, Door.Constructor(Vector3(4416.099f, 2315.077f, 48.70237f)), owning_building_guid = 7) LocalObject(394, Door.Constructor(Vector3(4416.088f, 2364.898f, 48.70237f)), owning_building_guid = 7) } @@ -287,78 +801,164 @@ object Map10 { // Amerish Building41() def Building41(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 8, MapID: 41 - LocalBuilding("bunker_lg", 8, 41, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3754f, 5092f, 57.63699f), Vector3(0f, 0f, 360f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 8, + 41, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3754f, 5092f, 57.63699f), Vector3(0f, 0f, 360f), bunker_lg) + ) + ) LocalObject(356, Door.Constructor(Vector3(3756.606f, 5094.557f, 59.15799f)), owning_building_guid = 8) } Building37() def Building37(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 37 - LocalBuilding("bunker_lg", 9, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4288f, 2540f, 47.49414f), Vector3(0f, 0f, 225f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 37, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4288f, 2540f, 47.49414f), Vector3(0f, 0f, 225f), bunker_lg) + ) + ) LocalObject(385, Door.Constructor(Vector3(4287.965f, 2536.349f, 49.01514f)), owning_building_guid = 9) } Building42() def Building42(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 42 - LocalBuilding("bunker_lg", 10, 42, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4570f, 5668f, 69.13481f), Vector3(0f, 0f, 225f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 42, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4570f, 5668f, 69.13481f), Vector3(0f, 0f, 225f), bunker_lg) + ) + ) LocalObject(401, Door.Constructor(Vector3(4569.965f, 5664.349f, 70.65582f)), owning_building_guid = 10) } Building43() def Building43(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 11, MapID: 43 - LocalBuilding("bunker_lg", 11, 43, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4734f, 6182f, 69.42805f), Vector3(0f, 0f, 45f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 11, + 43, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4734f, 6182f, 69.42805f), Vector3(0f, 0f, 45f), bunker_lg) + ) + ) LocalObject(434, Door.Constructor(Vector3(4734.035f, 6185.651f, 70.94905f)), owning_building_guid = 11) } Building40() def Building40(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 12, MapID: 40 - LocalBuilding("bunker_lg", 12, 40, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6116f, 5328f, 61.81373f), Vector3(0f, 0f, 270f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 12, + 40, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6116f, 5328f, 61.81373f), Vector3(0f, 0f, 270f), bunker_lg) + ) + ) LocalObject(512, Door.Constructor(Vector3(6118.557f, 5325.394f, 63.33473f)), owning_building_guid = 12) } Building36() def Building36(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 13, MapID: 36 - LocalBuilding("bunker_sm", 13, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(3390f, 2748f, 69.11893f), Vector3(0f, 0f, 270f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 13, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(3390f, 2748f, 69.11893f), Vector3(0f, 0f, 270f), bunker_sm) + ) + ) LocalObject(326, Door.Constructor(Vector3(3389.945f, 2746.775f, 70.63993f)), owning_building_guid = 13) } Building45() def Building45(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 45 - LocalBuilding("bunker_sm", 14, 45, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(4006f, 5186f, 46.02675f), Vector3(0f, 0f, 180f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 45, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(4006f, 5186f, 46.02675f), Vector3(0f, 0f, 180f), bunker_sm) + ) + ) LocalObject(374, Door.Constructor(Vector3(4004.775f, 5186.055f, 47.54775f)), owning_building_guid = 14) } Building50() def Building50(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 15, MapID: 50 - LocalBuilding("bunker_sm", 15, 50, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6156f, 2592f, 41.59035f), Vector3(0f, 0f, 90f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 15, + 50, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6156f, 2592f, 41.59035f), Vector3(0f, 0f, 90f), bunker_sm) + ) + ) LocalObject(517, Door.Constructor(Vector3(6156.055f, 2593.225f, 43.11135f)), owning_building_guid = 15) } Building38() def Building38(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 38 - LocalBuilding("bunker_sm", 16, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6168f, 3532f, 37.92495f), Vector3(0f, 0f, 224f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 38, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6168f, 3532f, 37.92495f), Vector3(0f, 0f, 224f), bunker_sm) + ) + ) LocalObject(518, Door.Constructor(Vector3(6167.081f, 3531.189f, 39.44595f)), owning_building_guid = 16) } Building39() def Building39(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 17, MapID: 39 - LocalBuilding("bunker_sm", 17, 39, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(6550f, 4324f, 56.2203f), Vector3(0f, 0f, 90f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 17, + 39, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(6550f, 4324f, 56.2203f), Vector3(0f, 0f, 90f), bunker_sm) + ) + ) LocalObject(550, Door.Constructor(Vector3(6550.055f, 4325.225f, 57.7413f)), owning_building_guid = 17) } Building6() def Building6(): Unit = { // Name: Cetan Type: comm_station GUID: 18, MapID: 6 - LocalBuilding("Cetan", 18, 6, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3500f, 2544f, 47.96331f), Vector3(0f, 0f, 38f), comm_station))) - LocalObject(193, CaptureTerminal.Constructor(Vector3(3487.5f, 2631.611f, 30.66331f), capture_terminal), owning_building_guid = 18) + LocalBuilding( + "Cetan", + 18, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3500f, 2544f, 47.96331f), + Vector3(0f, 0f, 38f), + comm_station + ) + ) + ) + LocalObject( + 193, + CaptureTerminal.Constructor(Vector3(3487.5f, 2631.611f, 30.66331f), capture_terminal), + owning_building_guid = 18 + ) LocalObject(329, Door.Constructor(Vector3(3458.543f, 2597.875f, 49.71431f)), owning_building_guid = 18) LocalObject(334, Door.Constructor(Vector3(3468.454f, 2487.239f, 57.67831f)), owning_building_guid = 18) LocalObject(335, Door.Constructor(Vector3(3472.879f, 2609.074f, 57.67731f)), owning_building_guid = 18) @@ -400,18 +1000,78 @@ object Map10 { // Amerish LocalObject(2512, Door.Constructor(Vector3(3511.466f, 2588.891f, 40.01731f)), owning_building_guid = 18) LocalObject(2513, Door.Constructor(Vector3(3515.954f, 2583.147f, 40.01731f)), owning_building_guid = 18) LocalObject(2514, Door.Constructor(Vector3(3520.444f, 2577.4f, 40.01731f)), owning_building_guid = 18) - LocalObject(880, IFFLock.Constructor(Vector3(3516.653f, 2555.906f, 49.61531f), Vector3(0, 0, 52)), owning_building_guid = 18, door_guid = 832) - LocalObject(935, IFFLock.Constructor(Vector3(3471.281f, 2550.826f, 31.99931f), Vector3(0, 0, 142)), owning_building_guid = 18, door_guid = 617) - LocalObject(936, IFFLock.Constructor(Vector3(3477.788f, 2625.671f, 49.61332f), Vector3(0, 0, 52)), owning_building_guid = 18, door_guid = 336) - LocalObject(937, IFFLock.Constructor(Vector3(3481.949f, 2531.3f, 54.62431f), Vector3(0, 0, 322)), owning_building_guid = 18, door_guid = 338) - LocalObject(938, IFFLock.Constructor(Vector3(3489.983f, 2620.472f, 31.99931f), Vector3(0, 0, 232)), owning_building_guid = 18, door_guid = 623) - LocalObject(939, IFFLock.Constructor(Vector3(3491.751f, 2525.398f, 54.62431f), Vector3(0, 0, 142)), owning_building_guid = 18, door_guid = 339) - LocalObject(940, IFFLock.Constructor(Vector3(3494.609f, 2562.573f, 54.62431f), Vector3(0, 0, 232)), owning_building_guid = 18, door_guid = 340) - LocalObject(941, IFFLock.Constructor(Vector3(3495.632f, 2628.876f, 31.99931f), Vector3(0, 0, 52)), owning_building_guid = 18, door_guid = 627) - LocalObject(945, IFFLock.Constructor(Vector3(3501.758f, 2533.332f, 62.04432f), Vector3(0, 0, 232)), owning_building_guid = 18, door_guid = 347) - LocalObject(949, IFFLock.Constructor(Vector3(3513.234f, 2595.976f, 39.49931f), Vector3(0, 0, 322)), owning_building_guid = 18, door_guid = 634) - LocalObject(950, IFFLock.Constructor(Vector3(3531.485f, 2577.723f, 39.49931f), Vector3(0, 0, 142)), owning_building_guid = 18, door_guid = 636) - LocalObject(951, IFFLock.Constructor(Vector3(3536.968f, 2586.116f, 31.99931f), Vector3(0, 0, 232)), owning_building_guid = 18, door_guid = 637) + LocalObject( + 880, + IFFLock.Constructor(Vector3(3516.653f, 2555.906f, 49.61531f), Vector3(0, 0, 52)), + owning_building_guid = 18, + door_guid = 832 + ) + LocalObject( + 935, + IFFLock.Constructor(Vector3(3471.281f, 2550.826f, 31.99931f), Vector3(0, 0, 142)), + owning_building_guid = 18, + door_guid = 617 + ) + LocalObject( + 936, + IFFLock.Constructor(Vector3(3477.788f, 2625.671f, 49.61332f), Vector3(0, 0, 52)), + owning_building_guid = 18, + door_guid = 336 + ) + LocalObject( + 937, + IFFLock.Constructor(Vector3(3481.949f, 2531.3f, 54.62431f), Vector3(0, 0, 322)), + owning_building_guid = 18, + door_guid = 338 + ) + LocalObject( + 938, + IFFLock.Constructor(Vector3(3489.983f, 2620.472f, 31.99931f), Vector3(0, 0, 232)), + owning_building_guid = 18, + door_guid = 623 + ) + LocalObject( + 939, + IFFLock.Constructor(Vector3(3491.751f, 2525.398f, 54.62431f), Vector3(0, 0, 142)), + owning_building_guid = 18, + door_guid = 339 + ) + LocalObject( + 940, + IFFLock.Constructor(Vector3(3494.609f, 2562.573f, 54.62431f), Vector3(0, 0, 232)), + owning_building_guid = 18, + door_guid = 340 + ) + LocalObject( + 941, + IFFLock.Constructor(Vector3(3495.632f, 2628.876f, 31.99931f), Vector3(0, 0, 52)), + owning_building_guid = 18, + door_guid = 627 + ) + LocalObject( + 945, + IFFLock.Constructor(Vector3(3501.758f, 2533.332f, 62.04432f), Vector3(0, 0, 232)), + owning_building_guid = 18, + door_guid = 347 + ) + LocalObject( + 949, + IFFLock.Constructor(Vector3(3513.234f, 2595.976f, 39.49931f), Vector3(0, 0, 322)), + owning_building_guid = 18, + door_guid = 634 + ) + LocalObject( + 950, + IFFLock.Constructor(Vector3(3531.485f, 2577.723f, 39.49931f), Vector3(0, 0, 142)), + owning_building_guid = 18, + door_guid = 636 + ) + LocalObject( + 951, + IFFLock.Constructor(Vector3(3536.968f, 2586.116f, 31.99931f), Vector3(0, 0, 232)), + owning_building_guid = 18, + door_guid = 637 + ) LocalObject(1209, Locker.Constructor(Vector3(3527.286f, 2603.598f, 30.66331f)), owning_building_guid = 18) LocalObject(1210, Locker.Constructor(Vector3(3528.329f, 2604.413f, 30.66331f)), owning_building_guid = 18) LocalObject(1211, Locker.Constructor(Vector3(3529.382f, 2605.236f, 30.66331f)), owning_building_guid = 18) @@ -424,60 +1084,233 @@ object Map10 { // Amerish LocalObject(1218, Locker.Constructor(Vector3(3535.057f, 2609.669f, 30.66331f)), owning_building_guid = 18) LocalObject(1219, Locker.Constructor(Vector3(3536.109f, 2610.492f, 30.66331f)), owning_building_guid = 18) LocalObject(1220, Locker.Constructor(Vector3(3537.163f, 2611.315f, 30.66331f)), owning_building_guid = 18) - LocalObject(1687, Terminal.Constructor(Vector3(3504.648f, 2538.173f, 61.91831f), order_terminal), owning_building_guid = 18) - LocalObject(1688, Terminal.Constructor(Vector3(3505.024f, 2541.358f, 61.91831f), order_terminal), owning_building_guid = 18) - LocalObject(1689, Terminal.Constructor(Vector3(3506.636f, 2519.879f, 54.52332f), order_terminal), owning_building_guid = 18) - LocalObject(1690, Terminal.Constructor(Vector3(3507.729f, 2537.894f, 61.91831f), order_terminal), owning_building_guid = 18) - LocalObject(1694, Terminal.Constructor(Vector3(3525.8f, 2593.253f, 39.75331f), order_terminal), owning_building_guid = 18) - LocalObject(1695, Terminal.Constructor(Vector3(3528.133f, 2590.267f, 39.75331f), order_terminal), owning_building_guid = 18) - LocalObject(1696, Terminal.Constructor(Vector3(3530.43f, 2587.327f, 39.75331f), order_terminal), owning_building_guid = 18) - LocalObject(2424, Terminal.Constructor(Vector3(3474.944f, 2575.111f, 42.22031f), spawn_terminal), owning_building_guid = 18) - LocalObject(2425, Terminal.Constructor(Vector3(3482.058f, 2540.884f, 32.22031f), spawn_terminal), owning_building_guid = 18) - LocalObject(2426, Terminal.Constructor(Vector3(3513.235f, 2587.11f, 40.29731f), spawn_terminal), owning_building_guid = 18) - LocalObject(2427, Terminal.Constructor(Vector3(3513.621f, 2524.146f, 54.78032f), spawn_terminal), owning_building_guid = 18) - LocalObject(2428, Terminal.Constructor(Vector3(3517.719f, 2581.365f, 40.29731f), spawn_terminal), owning_building_guid = 18) - LocalObject(2429, Terminal.Constructor(Vector3(3522.212f, 2575.621f, 40.29731f), spawn_terminal), owning_building_guid = 18) - LocalObject(2648, Terminal.Constructor(Vector3(3507.615f, 2619.459f, 50.85032f), vehicle_terminal_combined), owning_building_guid = 18) - LocalObject(1625, VehicleSpawnPad.Constructor(Vector3(3496.973f, 2610.949f, 46.69231f), mb_pad_creation, Vector3(0, 0, 232)), owning_building_guid = 18, terminal_guid = 2648) + LocalObject( + 1687, + Terminal.Constructor(Vector3(3504.648f, 2538.173f, 61.91831f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1688, + Terminal.Constructor(Vector3(3505.024f, 2541.358f, 61.91831f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1689, + Terminal.Constructor(Vector3(3506.636f, 2519.879f, 54.52332f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1690, + Terminal.Constructor(Vector3(3507.729f, 2537.894f, 61.91831f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1694, + Terminal.Constructor(Vector3(3525.8f, 2593.253f, 39.75331f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1695, + Terminal.Constructor(Vector3(3528.133f, 2590.267f, 39.75331f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1696, + Terminal.Constructor(Vector3(3530.43f, 2587.327f, 39.75331f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2424, + Terminal.Constructor(Vector3(3474.944f, 2575.111f, 42.22031f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2425, + Terminal.Constructor(Vector3(3482.058f, 2540.884f, 32.22031f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2426, + Terminal.Constructor(Vector3(3513.235f, 2587.11f, 40.29731f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2427, + Terminal.Constructor(Vector3(3513.621f, 2524.146f, 54.78032f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2428, + Terminal.Constructor(Vector3(3517.719f, 2581.365f, 40.29731f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2429, + Terminal.Constructor(Vector3(3522.212f, 2575.621f, 40.29731f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2648, + Terminal.Constructor(Vector3(3507.615f, 2619.459f, 50.85032f), vehicle_terminal_combined), + owning_building_guid = 18 + ) + LocalObject( + 1625, + VehicleSpawnPad.Constructor(Vector3(3496.973f, 2610.949f, 46.69231f), mb_pad_creation, Vector3(0, 0, 232)), + owning_building_guid = 18, + terminal_guid = 2648 + ) LocalObject(2295, ResourceSilo.Constructor(Vector3(3498.59f, 2455.219f, 55.18031f)), owning_building_guid = 18) - LocalObject(2325, SpawnTube.Constructor(Vector3(3511.768f, 2587.79f, 38.16331f), Vector3(0, 0, 322)), owning_building_guid = 18) - LocalObject(2326, SpawnTube.Constructor(Vector3(3516.255f, 2582.047f, 38.16331f), Vector3(0, 0, 322)), owning_building_guid = 18) - LocalObject(2327, SpawnTube.Constructor(Vector3(3520.744f, 2576.302f, 38.16331f), Vector3(0, 0, 322)), owning_building_guid = 18) - LocalObject(1643, ProximityTerminal.Constructor(Vector3(3518.521f, 2521.698f, 48.16331f), medical_terminal), owning_building_guid = 18) - LocalObject(1644, ProximityTerminal.Constructor(Vector3(3532.547f, 2607.017f, 30.66331f), medical_terminal), owning_building_guid = 18) - LocalObject(1882, ProximityTerminal.Constructor(Vector3(3451.174f, 2575.884f, 56.40431f), pad_landing_frame), owning_building_guid = 18) - LocalObject(1883, Terminal.Constructor(Vector3(3451.174f, 2575.884f, 56.40431f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(2213, ProximityTerminal.Constructor(Vector3(3437.591f, 2524.656f, 47.71331f), repair_silo), owning_building_guid = 18) - LocalObject(2214, Terminal.Constructor(Vector3(3437.591f, 2524.656f, 47.71331f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(2217, ProximityTerminal.Constructor(Vector3(3563.553f, 2562.778f, 47.71331f), repair_silo), owning_building_guid = 18) - LocalObject(2218, Terminal.Constructor(Vector3(3563.553f, 2562.778f, 47.71331f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(1537, FacilityTurret.Constructor(Vector3(3418.225f, 2529.16f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 2325, + SpawnTube.Constructor(Vector3(3511.768f, 2587.79f, 38.16331f), Vector3(0, 0, 322)), + owning_building_guid = 18 + ) + LocalObject( + 2326, + SpawnTube.Constructor(Vector3(3516.255f, 2582.047f, 38.16331f), Vector3(0, 0, 322)), + owning_building_guid = 18 + ) + LocalObject( + 2327, + SpawnTube.Constructor(Vector3(3520.744f, 2576.302f, 38.16331f), Vector3(0, 0, 322)), + owning_building_guid = 18 + ) + LocalObject( + 1643, + ProximityTerminal.Constructor(Vector3(3518.521f, 2521.698f, 48.16331f), medical_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1644, + ProximityTerminal.Constructor(Vector3(3532.547f, 2607.017f, 30.66331f), medical_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1882, + ProximityTerminal.Constructor(Vector3(3451.174f, 2575.884f, 56.40431f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 1883, + Terminal.Constructor(Vector3(3451.174f, 2575.884f, 56.40431f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2213, + ProximityTerminal.Constructor(Vector3(3437.591f, 2524.656f, 47.71331f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 2214, + Terminal.Constructor(Vector3(3437.591f, 2524.656f, 47.71331f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 2217, + ProximityTerminal.Constructor(Vector3(3563.553f, 2562.778f, 47.71331f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 2218, + Terminal.Constructor(Vector3(3563.553f, 2562.778f, 47.71331f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 1537, + FacilityTurret.Constructor(Vector3(3418.225f, 2529.16f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1537, 5012) - LocalObject(1538, FacilityTurret.Constructor(Vector3(3425.674f, 2589.672f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 1538, + FacilityTurret.Constructor(Vector3(3425.674f, 2589.672f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1538, 5013) - LocalObject(1541, FacilityTurret.Constructor(Vector3(3492.433f, 2436.014f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 1541, + FacilityTurret.Constructor(Vector3(3492.433f, 2436.014f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1541, 5014) - LocalObject(1542, FacilityTurret.Constructor(Vector3(3507.879f, 2652.229f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 1542, + FacilityTurret.Constructor(Vector3(3507.879f, 2652.229f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1542, 5015) - LocalObject(1543, FacilityTurret.Constructor(Vector3(3574.567f, 2498.691f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 1543, + FacilityTurret.Constructor(Vector3(3574.567f, 2498.691f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1543, 5016) - LocalObject(1544, FacilityTurret.Constructor(Vector3(3582.023f, 2559.228f, 56.67131f), manned_turret), owning_building_guid = 18) + LocalObject( + 1544, + FacilityTurret.Constructor(Vector3(3582.023f, 2559.228f, 56.67131f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(1544, 5017) - LocalObject(2058, Painbox.Constructor(Vector3(3462.13f, 2560.211f, 35.56532f), painbox), owning_building_guid = 18) - LocalObject(2070, Painbox.Constructor(Vector3(3520.306f, 2593.075f, 42.60812f), painbox_continuous), owning_building_guid = 18) - LocalObject(2082, Painbox.Constructor(Vector3(3471.452f, 2548.438f, 33.42201f), painbox_door_radius), owning_building_guid = 18) - LocalObject(2098, Painbox.Constructor(Vector3(3514.735f, 2597.923f, 39.77102f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(2099, Painbox.Constructor(Vector3(3528.458f, 2601.547f, 40.98932f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(2100, Painbox.Constructor(Vector3(3530.864f, 2575.824f, 39.98932f), painbox_door_radius_continuous), owning_building_guid = 18) + LocalObject( + 2058, + Painbox.Constructor(Vector3(3462.13f, 2560.211f, 35.56532f), painbox), + owning_building_guid = 18 + ) + LocalObject( + 2070, + Painbox.Constructor(Vector3(3520.306f, 2593.075f, 42.60812f), painbox_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2082, + Painbox.Constructor(Vector3(3471.452f, 2548.438f, 33.42201f), painbox_door_radius), + owning_building_guid = 18 + ) + LocalObject( + 2098, + Painbox.Constructor(Vector3(3514.735f, 2597.923f, 39.77102f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2099, + Painbox.Constructor(Vector3(3528.458f, 2601.547f, 40.98932f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 2100, + Painbox.Constructor(Vector3(3530.864f, 2575.824f, 39.98932f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) LocalObject(274, Generator.Constructor(Vector3(3459.868f, 2562.841f, 29.36931f)), owning_building_guid = 18) - LocalObject(262, Terminal.Constructor(Vector3(3464.948f, 2556.415f, 30.66331f), gen_control), owning_building_guid = 18) + LocalObject( + 262, + Terminal.Constructor(Vector3(3464.948f, 2556.415f, 30.66331f), gen_control), + owning_building_guid = 18 + ) } Building12() def Building12(): Unit = { // Name: Qumu Type: comm_station GUID: 21, MapID: 12 - LocalBuilding("Qumu", 21, 12, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3904f, 5172f, 46.34075f), Vector3(0f, 0f, 44f), comm_station))) - LocalObject(194, CaptureTerminal.Constructor(Vector3(3882.411f, 5257.825f, 29.04075f), capture_terminal), owning_building_guid = 21) + LocalBuilding( + "Qumu", + 21, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3904f, 5172f, 46.34075f), + Vector3(0f, 0f, 44f), + comm_station + ) + ) + ) + LocalObject( + 194, + CaptureTerminal.Constructor(Vector3(3882.411f, 5257.825f, 29.04075f), capture_terminal), + owning_building_guid = 21 + ) LocalObject(357, Door.Constructor(Vector3(3857.139f, 5221.246f, 48.09175f)), owning_building_guid = 21) LocalObject(358, Door.Constructor(Vector3(3870.225f, 5233.883f, 56.05475f)), owning_building_guid = 21) LocalObject(359, Door.Constructor(Vector3(3874.225f, 5248.899f, 48.06175f)), owning_building_guid = 21) @@ -519,18 +1352,78 @@ object Map10 { // Amerish LocalObject(2517, Door.Constructor(Vector3(3910.711f, 5217.843f, 38.39475f)), owning_building_guid = 21) LocalObject(2518, Door.Constructor(Vector3(3915.774f, 5212.6f, 38.39475f)), owning_building_guid = 21) LocalObject(2519, Door.Constructor(Vector3(3920.841f, 5207.354f, 38.39475f)), owning_building_guid = 21) - LocalObject(881, IFFLock.Constructor(Vector3(3919.317f, 5185.582f, 47.99275f), Vector3(0, 0, 46)), owning_building_guid = 21, door_guid = 833) - LocalObject(956, IFFLock.Constructor(Vector3(3873.372f, 5250.902f, 47.99075f), Vector3(0, 0, 46)), owning_building_guid = 21, door_guid = 359) - LocalObject(957, IFFLock.Constructor(Vector3(3874.725f, 5175.787f, 30.37675f), Vector3(0, 0, 136)), owning_building_guid = 21, door_guid = 641) - LocalObject(958, IFFLock.Constructor(Vector3(3886.044f, 5247.006f, 30.37675f), Vector3(0, 0, 226)), owning_building_guid = 21, door_guid = 647) - LocalObject(959, IFFLock.Constructor(Vector3(3887.376f, 5157.482f, 53.00175f), Vector3(0, 0, 316)), owning_building_guid = 21, door_guid = 361) - LocalObject(960, IFFLock.Constructor(Vector3(3890.784f, 5255.954f, 30.37675f), Vector3(0, 0, 46)), owning_building_guid = 21, door_guid = 648) - LocalObject(961, IFFLock.Constructor(Vector3(3896.697f, 5189.908f, 53.00175f), Vector3(0, 0, 226)), owning_building_guid = 21, door_guid = 364) - LocalObject(962, IFFLock.Constructor(Vector3(3897.74f, 5152.638f, 53.00175f), Vector3(0, 0, 136)), owning_building_guid = 21, door_guid = 363) - LocalObject(963, IFFLock.Constructor(Vector3(3906.863f, 5161.574f, 60.42175f), Vector3(0, 0, 226)), owning_building_guid = 21, door_guid = 365) - LocalObject(964, IFFLock.Constructor(Vector3(3911.729f, 5225.075f, 37.87675f), Vector3(0, 0, 316)), owning_building_guid = 21, door_guid = 658) - LocalObject(969, IFFLock.Constructor(Vector3(3931.787f, 5208.829f, 37.87675f), Vector3(0, 0, 136)), owning_building_guid = 21, door_guid = 660) - LocalObject(970, IFFLock.Constructor(Vector3(3936.363f, 5217.749f, 30.37675f), Vector3(0, 0, 226)), owning_building_guid = 21, door_guid = 661) + LocalObject( + 881, + IFFLock.Constructor(Vector3(3919.317f, 5185.582f, 47.99275f), Vector3(0, 0, 46)), + owning_building_guid = 21, + door_guid = 833 + ) + LocalObject( + 956, + IFFLock.Constructor(Vector3(3873.372f, 5250.902f, 47.99075f), Vector3(0, 0, 46)), + owning_building_guid = 21, + door_guid = 359 + ) + LocalObject( + 957, + IFFLock.Constructor(Vector3(3874.725f, 5175.787f, 30.37675f), Vector3(0, 0, 136)), + owning_building_guid = 21, + door_guid = 641 + ) + LocalObject( + 958, + IFFLock.Constructor(Vector3(3886.044f, 5247.006f, 30.37675f), Vector3(0, 0, 226)), + owning_building_guid = 21, + door_guid = 647 + ) + LocalObject( + 959, + IFFLock.Constructor(Vector3(3887.376f, 5157.482f, 53.00175f), Vector3(0, 0, 316)), + owning_building_guid = 21, + door_guid = 361 + ) + LocalObject( + 960, + IFFLock.Constructor(Vector3(3890.784f, 5255.954f, 30.37675f), Vector3(0, 0, 46)), + owning_building_guid = 21, + door_guid = 648 + ) + LocalObject( + 961, + IFFLock.Constructor(Vector3(3896.697f, 5189.908f, 53.00175f), Vector3(0, 0, 226)), + owning_building_guid = 21, + door_guid = 364 + ) + LocalObject( + 962, + IFFLock.Constructor(Vector3(3897.74f, 5152.638f, 53.00175f), Vector3(0, 0, 136)), + owning_building_guid = 21, + door_guid = 363 + ) + LocalObject( + 963, + IFFLock.Constructor(Vector3(3906.863f, 5161.574f, 60.42175f), Vector3(0, 0, 226)), + owning_building_guid = 21, + door_guid = 365 + ) + LocalObject( + 964, + IFFLock.Constructor(Vector3(3911.729f, 5225.075f, 37.87675f), Vector3(0, 0, 316)), + owning_building_guid = 21, + door_guid = 658 + ) + LocalObject( + 969, + IFFLock.Constructor(Vector3(3931.787f, 5208.829f, 37.87675f), Vector3(0, 0, 136)), + owning_building_guid = 21, + door_guid = 660 + ) + LocalObject( + 970, + IFFLock.Constructor(Vector3(3936.363f, 5217.749f, 30.37675f), Vector3(0, 0, 226)), + owning_building_guid = 21, + door_guid = 661 + ) LocalObject(1229, Locker.Constructor(Vector3(3924.907f, 5234.124f, 29.04075f)), owning_building_guid = 21) LocalObject(1230, Locker.Constructor(Vector3(3925.859f, 5235.043f, 29.04075f)), owning_building_guid = 21) LocalObject(1231, Locker.Constructor(Vector3(3926.82f, 5235.972f, 29.04075f)), owning_building_guid = 21) @@ -543,60 +1436,233 @@ object Map10 { // Amerish LocalObject(1244, Locker.Constructor(Vector3(3932.961f, 5241.902f, 29.04075f)), owning_building_guid = 21) LocalObject(1247, Locker.Constructor(Vector3(3933.658f, 5214.738f, 36.80175f)), owning_building_guid = 21) LocalObject(1248, Locker.Constructor(Vector3(3933.923f, 5242.831f, 29.04075f)), owning_building_guid = 21) - LocalObject(1700, Terminal.Constructor(Vector3(3909.231f, 5166.691f, 60.29575f), order_terminal), owning_building_guid = 21) - LocalObject(1701, Terminal.Constructor(Vector3(3909.272f, 5169.897f, 60.29575f), order_terminal), owning_building_guid = 21) - LocalObject(1702, Terminal.Constructor(Vector3(3912.325f, 5166.735f, 60.29575f), order_terminal), owning_building_guid = 21) - LocalObject(1703, Terminal.Constructor(Vector3(3913.121f, 5148.705f, 52.90075f), order_terminal), owning_building_guid = 21) - LocalObject(1704, Terminal.Constructor(Vector3(3924.51f, 5223.68f, 38.13075f), order_terminal), owning_building_guid = 21) - LocalObject(1705, Terminal.Constructor(Vector3(3927.142f, 5220.955f, 38.13075f), order_terminal), owning_building_guid = 21) - LocalObject(1706, Terminal.Constructor(Vector3(3929.734f, 5218.271f, 38.13075f), order_terminal), owning_building_guid = 21) - LocalObject(2430, Terminal.Constructor(Vector3(3875.829f, 5200.321f, 40.59775f), spawn_terminal), owning_building_guid = 21) - LocalObject(2431, Terminal.Constructor(Vector3(3886.482f, 5167.026f, 30.59775f), spawn_terminal), owning_building_guid = 21) - LocalObject(2432, Terminal.Constructor(Vector3(3912.656f, 5216.257f, 38.67475f), spawn_terminal), owning_building_guid = 21) - LocalObject(2433, Terminal.Constructor(Vector3(3917.716f, 5211.012f, 38.67475f), spawn_terminal), owning_building_guid = 21) - LocalObject(2434, Terminal.Constructor(Vector3(3919.622f, 5153.679f, 53.15775f), spawn_terminal), owning_building_guid = 21) - LocalObject(2435, Terminal.Constructor(Vector3(3922.785f, 5205.77f, 38.67475f), spawn_terminal), owning_building_guid = 21) - LocalObject(2649, Terminal.Constructor(Vector3(3903.686f, 5247.841f, 49.22775f), vehicle_terminal_combined), owning_building_guid = 21) - LocalObject(1626, VehicleSpawnPad.Constructor(Vector3(3893.992f, 5238.266f, 45.06975f), mb_pad_creation, Vector3(0, 0, 226)), owning_building_guid = 21, terminal_guid = 2649) + LocalObject( + 1700, + Terminal.Constructor(Vector3(3909.231f, 5166.691f, 60.29575f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1701, + Terminal.Constructor(Vector3(3909.272f, 5169.897f, 60.29575f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1702, + Terminal.Constructor(Vector3(3912.325f, 5166.735f, 60.29575f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1703, + Terminal.Constructor(Vector3(3913.121f, 5148.705f, 52.90075f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1704, + Terminal.Constructor(Vector3(3924.51f, 5223.68f, 38.13075f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1705, + Terminal.Constructor(Vector3(3927.142f, 5220.955f, 38.13075f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1706, + Terminal.Constructor(Vector3(3929.734f, 5218.271f, 38.13075f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2430, + Terminal.Constructor(Vector3(3875.829f, 5200.321f, 40.59775f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2431, + Terminal.Constructor(Vector3(3886.482f, 5167.026f, 30.59775f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2432, + Terminal.Constructor(Vector3(3912.656f, 5216.257f, 38.67475f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2433, + Terminal.Constructor(Vector3(3917.716f, 5211.012f, 38.67475f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2434, + Terminal.Constructor(Vector3(3919.622f, 5153.679f, 53.15775f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2435, + Terminal.Constructor(Vector3(3922.785f, 5205.77f, 38.67475f), spawn_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2649, + Terminal.Constructor(Vector3(3903.686f, 5247.841f, 49.22775f), vehicle_terminal_combined), + owning_building_guid = 21 + ) + LocalObject( + 1626, + VehicleSpawnPad.Constructor(Vector3(3893.992f, 5238.266f, 45.06975f), mb_pad_creation, Vector3(0, 0, 226)), + owning_building_guid = 21, + terminal_guid = 2649 + ) LocalObject(2296, ResourceSilo.Constructor(Vector3(3911.878f, 5083.558f, 53.55775f)), owning_building_guid = 21) - LocalObject(2330, SpawnTube.Constructor(Vector3(3911.126f, 5216.78f, 36.54075f), Vector3(0, 0, 316)), owning_building_guid = 21) - LocalObject(2331, SpawnTube.Constructor(Vector3(3916.189f, 5211.538f, 36.54075f), Vector3(0, 0, 316)), owning_building_guid = 21) - LocalObject(2332, SpawnTube.Constructor(Vector3(3921.253f, 5206.293f, 36.54075f), Vector3(0, 0, 316)), owning_building_guid = 21) - LocalObject(1645, ProximityTerminal.Constructor(Vector3(3924.751f, 5151.756f, 46.54075f), medical_terminal), owning_building_guid = 21) - LocalObject(1646, ProximityTerminal.Constructor(Vector3(3929.781f, 5238.073f, 29.04075f), medical_terminal), owning_building_guid = 21) - LocalObject(1885, ProximityTerminal.Constructor(Vector3(3852.109f, 5198.605f, 54.78175f), pad_landing_frame), owning_building_guid = 21) - LocalObject(1886, Terminal.Constructor(Vector3(3852.109f, 5198.605f, 54.78175f), air_rearm_terminal), owning_building_guid = 21) - LocalObject(2221, ProximityTerminal.Constructor(Vector3(3843.955f, 5146.239f, 46.09075f), repair_silo), owning_building_guid = 21) - LocalObject(2222, Terminal.Constructor(Vector3(3843.955f, 5146.239f, 46.09075f), ground_rearm_terminal), owning_building_guid = 21) - LocalObject(2225, ProximityTerminal.Constructor(Vector3(3965.242f, 5197.318f, 46.09075f), repair_silo), owning_building_guid = 21) - LocalObject(2226, Terminal.Constructor(Vector3(3965.242f, 5197.318f, 46.09075f), ground_rearm_terminal), owning_building_guid = 21) - LocalObject(1547, FacilityTurret.Constructor(Vector3(3824.224f, 5148.694f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 2330, + SpawnTube.Constructor(Vector3(3911.126f, 5216.78f, 36.54075f), Vector3(0, 0, 316)), + owning_building_guid = 21 + ) + LocalObject( + 2331, + SpawnTube.Constructor(Vector3(3916.189f, 5211.538f, 36.54075f), Vector3(0, 0, 316)), + owning_building_guid = 21 + ) + LocalObject( + 2332, + SpawnTube.Constructor(Vector3(3921.253f, 5206.293f, 36.54075f), Vector3(0, 0, 316)), + owning_building_guid = 21 + ) + LocalObject( + 1645, + ProximityTerminal.Constructor(Vector3(3924.751f, 5151.756f, 46.54075f), medical_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1646, + ProximityTerminal.Constructor(Vector3(3929.781f, 5238.073f, 29.04075f), medical_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1885, + ProximityTerminal.Constructor(Vector3(3852.109f, 5198.605f, 54.78175f), pad_landing_frame), + owning_building_guid = 21 + ) + LocalObject( + 1886, + Terminal.Constructor(Vector3(3852.109f, 5198.605f, 54.78175f), air_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2221, + ProximityTerminal.Constructor(Vector3(3843.955f, 5146.239f, 46.09075f), repair_silo), + owning_building_guid = 21 + ) + LocalObject( + 2222, + Terminal.Constructor(Vector3(3843.955f, 5146.239f, 46.09075f), ground_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 2225, + ProximityTerminal.Constructor(Vector3(3965.242f, 5197.318f, 46.09075f), repair_silo), + owning_building_guid = 21 + ) + LocalObject( + 2226, + Terminal.Constructor(Vector3(3965.242f, 5197.318f, 46.09075f), ground_rearm_terminal), + owning_building_guid = 21 + ) + LocalObject( + 1547, + FacilityTurret.Constructor(Vector3(3824.224f, 5148.694f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1547, 5018) - LocalObject(1548, FacilityTurret.Constructor(Vector3(3825.307f, 5209.653f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 1548, + FacilityTurret.Constructor(Vector3(3825.307f, 5209.653f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1548, 5019) - LocalObject(1550, FacilityTurret.Constructor(Vector3(3900.523f, 5280.459f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 1550, + FacilityTurret.Constructor(Vector3(3900.523f, 5280.459f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1550, 5020) - LocalObject(1551, FacilityTurret.Constructor(Vector3(3907.761f, 5063.814f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 1551, + FacilityTurret.Constructor(Vector3(3907.761f, 5063.814f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1551, 5021) - LocalObject(1553, FacilityTurret.Constructor(Vector3(3982.895f, 5134.734f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 1553, + FacilityTurret.Constructor(Vector3(3982.895f, 5134.734f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1553, 5022) - LocalObject(1554, FacilityTurret.Constructor(Vector3(3983.982f, 5195.718f, 55.04875f), manned_turret), owning_building_guid = 21) + LocalObject( + 1554, + FacilityTurret.Constructor(Vector3(3983.982f, 5195.718f, 55.04875f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(1554, 5023) - LocalObject(2059, Painbox.Constructor(Vector3(3864.643f, 5184.164f, 33.94275f), painbox), owning_building_guid = 21) - LocalObject(2071, Painbox.Constructor(Vector3(3919.065f, 5222.929f, 40.98555f), painbox_continuous), owning_building_guid = 21) - LocalObject(2083, Painbox.Constructor(Vector3(3875.145f, 5173.43f, 31.79945f), painbox_door_radius), owning_building_guid = 21) - LocalObject(2101, Painbox.Constructor(Vector3(3913.018f, 5227.168f, 38.14845f), painbox_door_radius_continuous), owning_building_guid = 21) - LocalObject(2102, Painbox.Constructor(Vector3(3926.287f, 5232.207f, 39.36675f), painbox_door_radius_continuous), owning_building_guid = 21) - LocalObject(2103, Painbox.Constructor(Vector3(3931.369f, 5206.876f, 38.36675f), painbox_door_radius_continuous), owning_building_guid = 21) + LocalObject( + 2059, + Painbox.Constructor(Vector3(3864.643f, 5184.164f, 33.94275f), painbox), + owning_building_guid = 21 + ) + LocalObject( + 2071, + Painbox.Constructor(Vector3(3919.065f, 5222.929f, 40.98555f), painbox_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2083, + Painbox.Constructor(Vector3(3875.145f, 5173.43f, 31.79945f), painbox_door_radius), + owning_building_guid = 21 + ) + LocalObject( + 2101, + Painbox.Constructor(Vector3(3913.018f, 5227.168f, 38.14845f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2102, + Painbox.Constructor(Vector3(3926.287f, 5232.207f, 39.36675f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 2103, + Painbox.Constructor(Vector3(3931.369f, 5206.876f, 38.36675f), painbox_door_radius_continuous), + owning_building_guid = 21 + ) LocalObject(275, Generator.Constructor(Vector3(3862.118f, 5186.543f, 27.74675f)), owning_building_guid = 21) - LocalObject(263, Terminal.Constructor(Vector3(3867.843f, 5180.683f, 29.04075f), gen_control), owning_building_guid = 21) + LocalObject( + 263, + Terminal.Constructor(Vector3(3867.843f, 5180.683f, 29.04075f), gen_control), + owning_building_guid = 21 + ) } Building5() def Building5(): Unit = { // Name: Azeban Type: comm_station_dsp GUID: 24, MapID: 5 - LocalBuilding("Azeban", 24, 5, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6260f, 5234f, 61.88216f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(201, CaptureTerminal.Constructor(Vector3(6336.089f, 5214.734f, 44.48215f), capture_terminal), owning_building_guid = 24) + LocalBuilding( + "Azeban", + 24, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6260f, 5234f, 61.88216f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 201, + CaptureTerminal.Constructor(Vector3(6336.089f, 5214.734f, 44.48215f), capture_terminal), + owning_building_guid = 24 + ) LocalObject(254, Door.Constructor(Vector3(6328.339f, 5304.464f, 65.26015f)), owning_building_guid = 24) LocalObject(523, Door.Constructor(Vector3(6200.196f, 5190.501f, 63.53316f)), owning_building_guid = 24) LocalObject(524, Door.Constructor(Vector3(6200.196f, 5208.693f, 71.49715f)), owning_building_guid = 24) @@ -642,20 +1708,90 @@ object Map10 { // Amerish LocalObject(2564, Door.Constructor(Vector3(6296.673f, 5247.733f, 53.83616f)), owning_building_guid = 24) LocalObject(2565, Door.Constructor(Vector3(6296.673f, 5255.026f, 53.83616f)), owning_building_guid = 24) LocalObject(2566, Door.Constructor(Vector3(6296.673f, 5262.315f, 53.83616f)), owning_building_guid = 24) - LocalObject(888, IFFLock.Constructor(Vector3(6280.454f, 5233.09f, 63.45016f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 840) - LocalObject(1081, IFFLock.Constructor(Vector3(6237.959f, 5235.104f, 68.45016f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 528) - LocalObject(1082, IFFLock.Constructor(Vector3(6242.04f, 5224.42f, 68.45016f), Vector3(0, 0, 180)), owning_building_guid = 24, door_guid = 527) - LocalObject(1083, IFFLock.Constructor(Vector3(6254.817f, 5224.514f, 75.95016f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 530) - LocalObject(1084, IFFLock.Constructor(Vector3(6267.193f, 5251.962f, 68.45016f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 532) - LocalObject(1085, IFFLock.Constructor(Vector3(6300.94f, 5295.572f, 45.81816f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 795) - LocalObject(1086, IFFLock.Constructor(Vector3(6302.428f, 5266.94f, 53.31816f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 798) - LocalObject(1087, IFFLock.Constructor(Vector3(6305.572f, 5241.19f, 53.31816f), Vector3(0, 0, 180)), owning_building_guid = 24, door_guid = 797) - LocalObject(1088, IFFLock.Constructor(Vector3(6311.907f, 5339.163f, 68.42915f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 534) - LocalObject(1091, IFFLock.Constructor(Vector3(6315.06f, 5244.428f, 45.81816f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 799) - LocalObject(1092, IFFLock.Constructor(Vector3(6315.124f, 5306.312f, 63.49416f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 539) - LocalObject(1095, IFFLock.Constructor(Vector3(6331.06f, 5204.428f, 45.81816f), Vector3(0, 0, 270)), owning_building_guid = 24, door_guid = 802) - LocalObject(1097, IFFLock.Constructor(Vector3(6340.813f, 5207.572f, 45.81816f), Vector3(0, 0, 90)), owning_building_guid = 24, door_guid = 803) - LocalObject(1098, IFFLock.Constructor(Vector3(6373.953f, 5314.808f, 63.39316f), Vector3(0, 0, 0)), owning_building_guid = 24, door_guid = 545) + LocalObject( + 888, + IFFLock.Constructor(Vector3(6280.454f, 5233.09f, 63.45016f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 840 + ) + LocalObject( + 1081, + IFFLock.Constructor(Vector3(6237.959f, 5235.104f, 68.45016f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 528 + ) + LocalObject( + 1082, + IFFLock.Constructor(Vector3(6242.04f, 5224.42f, 68.45016f), Vector3(0, 0, 180)), + owning_building_guid = 24, + door_guid = 527 + ) + LocalObject( + 1083, + IFFLock.Constructor(Vector3(6254.817f, 5224.514f, 75.95016f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 530 + ) + LocalObject( + 1084, + IFFLock.Constructor(Vector3(6267.193f, 5251.962f, 68.45016f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 532 + ) + LocalObject( + 1085, + IFFLock.Constructor(Vector3(6300.94f, 5295.572f, 45.81816f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 795 + ) + LocalObject( + 1086, + IFFLock.Constructor(Vector3(6302.428f, 5266.94f, 53.31816f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 798 + ) + LocalObject( + 1087, + IFFLock.Constructor(Vector3(6305.572f, 5241.19f, 53.31816f), Vector3(0, 0, 180)), + owning_building_guid = 24, + door_guid = 797 + ) + LocalObject( + 1088, + IFFLock.Constructor(Vector3(6311.907f, 5339.163f, 68.42915f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 534 + ) + LocalObject( + 1091, + IFFLock.Constructor(Vector3(6315.06f, 5244.428f, 45.81816f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 799 + ) + LocalObject( + 1092, + IFFLock.Constructor(Vector3(6315.124f, 5306.312f, 63.49416f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 539 + ) + LocalObject( + 1095, + IFFLock.Constructor(Vector3(6331.06f, 5204.428f, 45.81816f), Vector3(0, 0, 270)), + owning_building_guid = 24, + door_guid = 802 + ) + LocalObject( + 1097, + IFFLock.Constructor(Vector3(6340.813f, 5207.572f, 45.81816f), Vector3(0, 0, 90)), + owning_building_guid = 24, + door_guid = 803 + ) + LocalObject( + 1098, + IFFLock.Constructor(Vector3(6373.953f, 5314.808f, 63.39316f), Vector3(0, 0, 0)), + owning_building_guid = 24, + door_guid = 545 + ) LocalObject(1426, Locker.Constructor(Vector3(6307.563f, 5244.141f, 52.24316f)), owning_building_guid = 24) LocalObject(1427, Locker.Constructor(Vector3(6308.727f, 5244.141f, 52.24316f)), owning_building_guid = 24) LocalObject(1428, Locker.Constructor(Vector3(6309.874f, 5244.141f, 52.24316f)), owning_building_guid = 24) @@ -668,76 +1804,306 @@ object Map10 { // Amerish LocalObject(1443, Locker.Constructor(Vector3(6328.055f, 5264.165f, 44.48215f)), owning_building_guid = 24) LocalObject(1444, Locker.Constructor(Vector3(6329.391f, 5264.165f, 44.48215f)), owning_building_guid = 24) LocalObject(1445, Locker.Constructor(Vector3(6330.728f, 5264.165f, 44.48215f)), owning_building_guid = 24) - LocalObject(256, Terminal.Constructor(Vector3(6319.879f, 5336.918f, 67.58616f), dropship_vehicle_terminal), owning_building_guid = 24) - LocalObject(255, VehicleSpawnPad.Constructor(Vector3(6328.328f, 5358.856f, 61.91016f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 24, terminal_guid = 256) - LocalObject(1774, Terminal.Constructor(Vector3(6250.378f, 5210.897f, 68.34216f), order_terminal), owning_building_guid = 24) - LocalObject(1775, Terminal.Constructor(Vector3(6260.075f, 5226.547f, 75.73715f), order_terminal), owning_building_guid = 24) - LocalObject(1776, Terminal.Constructor(Vector3(6262.331f, 5224.43f, 75.73715f), order_terminal), owning_building_guid = 24) - LocalObject(1777, Terminal.Constructor(Vector3(6262.332f, 5228.825f, 75.73715f), order_terminal), owning_building_guid = 24) - LocalObject(1778, Terminal.Constructor(Vector3(6264.592f, 5226.59f, 75.73715f), order_terminal), owning_building_guid = 24) - LocalObject(1779, Terminal.Constructor(Vector3(6310.654f, 5249.408f, 53.57215f), order_terminal), owning_building_guid = 24) - LocalObject(1780, Terminal.Constructor(Vector3(6310.654f, 5253.139f, 53.57215f), order_terminal), owning_building_guid = 24) - LocalObject(1781, Terminal.Constructor(Vector3(6310.654f, 5256.928f, 53.57215f), order_terminal), owning_building_guid = 24) - LocalObject(2476, Terminal.Constructor(Vector3(6258.509f, 5209.959f, 68.59916f), spawn_terminal), owning_building_guid = 24) - LocalObject(2477, Terminal.Constructor(Vector3(6296.971f, 5245.243f, 54.11616f), spawn_terminal), owning_building_guid = 24) - LocalObject(2478, Terminal.Constructor(Vector3(6296.967f, 5252.535f, 54.11616f), spawn_terminal), owning_building_guid = 24) - LocalObject(2479, Terminal.Constructor(Vector3(6296.97f, 5259.823f, 54.11616f), spawn_terminal), owning_building_guid = 24) - LocalObject(2480, Terminal.Constructor(Vector3(6315.103f, 5328.906f, 68.53016f), spawn_terminal), owning_building_guid = 24) - LocalObject(2481, Terminal.Constructor(Vector3(6324.058f, 5233.409f, 46.01015f), spawn_terminal), owning_building_guid = 24) - LocalObject(2482, Terminal.Constructor(Vector3(6331.409f, 5289.942f, 46.01015f), spawn_terminal), owning_building_guid = 24) - LocalObject(2483, Terminal.Constructor(Vector3(6340.058f, 5241.409f, 53.53915f), spawn_terminal), owning_building_guid = 24) - LocalObject(2484, Terminal.Constructor(Vector3(6340.058f, 5281.409f, 53.53915f), spawn_terminal), owning_building_guid = 24) - LocalObject(2656, Terminal.Constructor(Vector3(6277.698f, 5342.044f, 64.66916f), ground_vehicle_terminal), owning_building_guid = 24) - LocalObject(1639, VehicleSpawnPad.Constructor(Vector3(6277.786f, 5328.411f, 60.51116f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 24, terminal_guid = 2656) + LocalObject( + 256, + Terminal.Constructor(Vector3(6319.879f, 5336.918f, 67.58616f), dropship_vehicle_terminal), + owning_building_guid = 24 + ) + LocalObject( + 255, + VehicleSpawnPad.Constructor(Vector3(6328.328f, 5358.856f, 61.91016f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 24, + terminal_guid = 256 + ) + LocalObject( + 1774, + Terminal.Constructor(Vector3(6250.378f, 5210.897f, 68.34216f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1775, + Terminal.Constructor(Vector3(6260.075f, 5226.547f, 75.73715f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1776, + Terminal.Constructor(Vector3(6262.331f, 5224.43f, 75.73715f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1777, + Terminal.Constructor(Vector3(6262.332f, 5228.825f, 75.73715f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1778, + Terminal.Constructor(Vector3(6264.592f, 5226.59f, 75.73715f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1779, + Terminal.Constructor(Vector3(6310.654f, 5249.408f, 53.57215f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1780, + Terminal.Constructor(Vector3(6310.654f, 5253.139f, 53.57215f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1781, + Terminal.Constructor(Vector3(6310.654f, 5256.928f, 53.57215f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2476, + Terminal.Constructor(Vector3(6258.509f, 5209.959f, 68.59916f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2477, + Terminal.Constructor(Vector3(6296.971f, 5245.243f, 54.11616f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2478, + Terminal.Constructor(Vector3(6296.967f, 5252.535f, 54.11616f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2479, + Terminal.Constructor(Vector3(6296.97f, 5259.823f, 54.11616f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2480, + Terminal.Constructor(Vector3(6315.103f, 5328.906f, 68.53016f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2481, + Terminal.Constructor(Vector3(6324.058f, 5233.409f, 46.01015f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2482, + Terminal.Constructor(Vector3(6331.409f, 5289.942f, 46.01015f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2483, + Terminal.Constructor(Vector3(6340.058f, 5241.409f, 53.53915f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2484, + Terminal.Constructor(Vector3(6340.058f, 5281.409f, 53.53915f), spawn_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2656, + Terminal.Constructor(Vector3(6277.698f, 5342.044f, 64.66916f), ground_vehicle_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1639, + VehicleSpawnPad.Constructor(Vector3(6277.786f, 5328.411f, 60.51116f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 24, + terminal_guid = 2656 + ) LocalObject(2303, ResourceSilo.Constructor(Vector3(6358.212f, 5399.642f, 68.99915f)), owning_building_guid = 24) - LocalObject(2377, SpawnTube.Constructor(Vector3(6296.233f, 5246.683f, 51.98215f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(2378, SpawnTube.Constructor(Vector3(6296.233f, 5253.974f, 51.98215f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(2379, SpawnTube.Constructor(Vector3(6296.233f, 5261.262f, 51.98215f), Vector3(0, 0, 0)), owning_building_guid = 24) - LocalObject(1658, ProximityTerminal.Constructor(Vector3(6260.863f, 5205.013f, 61.98215f), medical_terminal), owning_building_guid = 24) - LocalObject(1659, ProximityTerminal.Constructor(Vector3(6324.444f, 5263.62f, 44.48215f), medical_terminal), owning_building_guid = 24) - LocalObject(1978, ProximityTerminal.Constructor(Vector3(6241.153f, 5327.398f, 70.29216f), pad_landing_frame), owning_building_guid = 24) - LocalObject(1979, Terminal.Constructor(Vector3(6241.153f, 5327.398f, 70.29216f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(1981, ProximityTerminal.Constructor(Vector3(6257.514f, 5281.467f, 67.57616f), pad_landing_frame), owning_building_guid = 24) - LocalObject(1982, Terminal.Constructor(Vector3(6257.514f, 5281.467f, 67.57616f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(1984, ProximityTerminal.Constructor(Vector3(6309.804f, 5245.901f, 74.75816f), pad_landing_frame), owning_building_guid = 24) - LocalObject(1985, Terminal.Constructor(Vector3(6309.804f, 5245.901f, 74.75816f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(1987, ProximityTerminal.Constructor(Vector3(6345.071f, 5262.159f, 70.30516f), pad_landing_frame), owning_building_guid = 24) - LocalObject(1988, Terminal.Constructor(Vector3(6345.071f, 5262.159f, 70.30516f), air_rearm_terminal), owning_building_guid = 24) - LocalObject(2277, ProximityTerminal.Constructor(Vector3(6198.643f, 5272.241f, 61.63216f), repair_silo), owning_building_guid = 24) - LocalObject(2278, Terminal.Constructor(Vector3(6198.643f, 5272.241f, 61.63216f), ground_rearm_terminal), owning_building_guid = 24) - LocalObject(2281, ProximityTerminal.Constructor(Vector3(6368.57f, 5275.151f, 61.63216f), repair_silo), owning_building_guid = 24) - LocalObject(2282, Terminal.Constructor(Vector3(6368.57f, 5275.151f, 61.63216f), ground_rearm_terminal), owning_building_guid = 24) - LocalObject(1605, FacilityTurret.Constructor(Vector3(6186.401f, 5307.113f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 2377, + SpawnTube.Constructor(Vector3(6296.233f, 5246.683f, 51.98215f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 2378, + SpawnTube.Constructor(Vector3(6296.233f, 5253.974f, 51.98215f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 2379, + SpawnTube.Constructor(Vector3(6296.233f, 5261.262f, 51.98215f), Vector3(0, 0, 0)), + owning_building_guid = 24 + ) + LocalObject( + 1658, + ProximityTerminal.Constructor(Vector3(6260.863f, 5205.013f, 61.98215f), medical_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1659, + ProximityTerminal.Constructor(Vector3(6324.444f, 5263.62f, 44.48215f), medical_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1978, + ProximityTerminal.Constructor(Vector3(6241.153f, 5327.398f, 70.29216f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 1979, + Terminal.Constructor(Vector3(6241.153f, 5327.398f, 70.29216f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1981, + ProximityTerminal.Constructor(Vector3(6257.514f, 5281.467f, 67.57616f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 1982, + Terminal.Constructor(Vector3(6257.514f, 5281.467f, 67.57616f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1984, + ProximityTerminal.Constructor(Vector3(6309.804f, 5245.901f, 74.75816f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 1985, + Terminal.Constructor(Vector3(6309.804f, 5245.901f, 74.75816f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1987, + ProximityTerminal.Constructor(Vector3(6345.071f, 5262.159f, 70.30516f), pad_landing_frame), + owning_building_guid = 24 + ) + LocalObject( + 1988, + Terminal.Constructor(Vector3(6345.071f, 5262.159f, 70.30516f), air_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2277, + ProximityTerminal.Constructor(Vector3(6198.643f, 5272.241f, 61.63216f), repair_silo), + owning_building_guid = 24 + ) + LocalObject( + 2278, + Terminal.Constructor(Vector3(6198.643f, 5272.241f, 61.63216f), ground_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 2281, + ProximityTerminal.Constructor(Vector3(6368.57f, 5275.151f, 61.63216f), repair_silo), + owning_building_guid = 24 + ) + LocalObject( + 2282, + Terminal.Constructor(Vector3(6368.57f, 5275.151f, 61.63216f), ground_rearm_terminal), + owning_building_guid = 24 + ) + LocalObject( + 1605, + FacilityTurret.Constructor(Vector3(6186.401f, 5307.113f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1605, 5024) - LocalObject(1606, FacilityTurret.Constructor(Vector3(6187.554f, 5153.565f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1606, + FacilityTurret.Constructor(Vector3(6187.554f, 5153.565f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1606, 5025) - LocalObject(1608, FacilityTurret.Constructor(Vector3(6231.445f, 5353.667f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1608, + FacilityTurret.Constructor(Vector3(6231.445f, 5353.667f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1608, 5026) - LocalObject(1610, FacilityTurret.Constructor(Vector3(6290.428f, 5152.396f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1610, + FacilityTurret.Constructor(Vector3(6290.428f, 5152.396f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1610, 5027) - LocalObject(1611, FacilityTurret.Constructor(Vector3(6291.449f, 5412.154f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1611, + FacilityTurret.Constructor(Vector3(6291.449f, 5412.154f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1611, 5028) - LocalObject(1613, FacilityTurret.Constructor(Vector3(6332.537f, 5193.011f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1613, + FacilityTurret.Constructor(Vector3(6332.537f, 5193.011f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1613, 5029) - LocalObject(1614, FacilityTurret.Constructor(Vector3(6379.619f, 5410.985f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1614, + FacilityTurret.Constructor(Vector3(6379.619f, 5410.985f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1614, 5030) - LocalObject(1615, FacilityTurret.Constructor(Vector3(6380.773f, 5242.733f, 70.49016f), manned_turret), owning_building_guid = 24) + LocalObject( + 1615, + FacilityTurret.Constructor(Vector3(6380.773f, 5242.733f, 70.49016f), manned_turret), + owning_building_guid = 24 + ) TurretToWeapon(1615, 5031) - LocalObject(2066, Painbox.Constructor(Vector3(6288.428f, 5294.057f, 48.37646f), painbox), owning_building_guid = 24) - LocalObject(2078, Painbox.Constructor(Vector3(6305.857f, 5254.408f, 56.00965f), painbox_continuous), owning_building_guid = 24) - LocalObject(2090, Painbox.Constructor(Vector3(6302.203f, 5292.915f, 47.61436f), painbox_door_radius), owning_building_guid = 24) - LocalObject(2122, Painbox.Constructor(Vector3(6303.087f, 5239.386f, 54.41136f), painbox_door_radius_continuous), owning_building_guid = 24) - LocalObject(2123, Painbox.Constructor(Vector3(6303.895f, 5268.081f, 54.88216f), painbox_door_radius_continuous), owning_building_guid = 24) - LocalObject(2124, Painbox.Constructor(Vector3(6318.317f, 5261.888f, 55.31246f), painbox_door_radius_continuous), owning_building_guid = 24) + LocalObject( + 2066, + Painbox.Constructor(Vector3(6288.428f, 5294.057f, 48.37646f), painbox), + owning_building_guid = 24 + ) + LocalObject( + 2078, + Painbox.Constructor(Vector3(6305.857f, 5254.408f, 56.00965f), painbox_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2090, + Painbox.Constructor(Vector3(6302.203f, 5292.915f, 47.61436f), painbox_door_radius), + owning_building_guid = 24 + ) + LocalObject( + 2122, + Painbox.Constructor(Vector3(6303.087f, 5239.386f, 54.41136f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2123, + Painbox.Constructor(Vector3(6303.895f, 5268.081f, 54.88216f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 2124, + Painbox.Constructor(Vector3(6318.317f, 5261.888f, 55.31246f), painbox_door_radius_continuous), + owning_building_guid = 24 + ) LocalObject(282, Generator.Constructor(Vector3(6284.445f, 5293.975f, 43.18816f)), owning_building_guid = 24) - LocalObject(270, Terminal.Constructor(Vector3(6292.637f, 5294.022f, 44.48215f), gen_control), owning_building_guid = 24) + LocalObject( + 270, + Terminal.Constructor(Vector3(6292.637f, 5294.022f, 44.48215f), gen_control), + owning_building_guid = 24 + ) } Building8() def Building8(): Unit = { // Name: Ikanam Type: cryo_facility GUID: 27, MapID: 8 - LocalBuilding("Ikanam", 27, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2694f, 2352f, 57.10244f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(191, CaptureTerminal.Constructor(Vector3(2665.911f, 2411.266f, 47.10244f), capture_terminal), owning_building_guid = 27) + LocalBuilding( + "Ikanam", + 27, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2694f, 2352f, 57.10244f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 191, + CaptureTerminal.Constructor(Vector3(2665.911f, 2411.266f, 47.10244f), capture_terminal), + owning_building_guid = 27 + ) LocalObject(294, Door.Constructor(Vector3(2635.023f, 2356.5f, 58.65344f)), owning_building_guid = 27) LocalObject(295, Door.Constructor(Vector3(2635.023f, 2374.693f, 66.61744f)), owning_building_guid = 27) LocalObject(296, Door.Constructor(Vector3(2651.674f, 2419.803f, 58.65344f)), owning_building_guid = 27) @@ -778,15 +2144,60 @@ object Map10 { // Amerish LocalObject(2496, Door.Constructor(Vector3(2698.673f, 2357.733f, 48.95644f)), owning_building_guid = 27) LocalObject(2497, Door.Constructor(Vector3(2698.673f, 2365.026f, 48.95644f)), owning_building_guid = 27) LocalObject(2498, Door.Constructor(Vector3(2698.673f, 2372.315f, 48.95644f)), owning_building_guid = 27) - LocalObject(878, IFFLock.Constructor(Vector3(2694.77f, 2379.822f, 58.58444f), Vector3(0, 0, 0)), owning_building_guid = 27, door_guid = 830) - LocalObject(903, IFFLock.Constructor(Vector3(2661.06f, 2418.428f, 48.43844f), Vector3(0, 0, 270)), owning_building_guid = 27, door_guid = 573) - LocalObject(904, IFFLock.Constructor(Vector3(2670.813f, 2421.572f, 48.43844f), Vector3(0, 0, 90)), owning_building_guid = 27, door_guid = 574) - LocalObject(905, IFFLock.Constructor(Vector3(2678.814f, 2374.043f, 68.55444f), Vector3(0, 0, 90)), owning_building_guid = 27, door_guid = 298) - LocalObject(906, IFFLock.Constructor(Vector3(2695.954f, 2355.958f, 68.55444f), Vector3(0, 0, 0)), owning_building_guid = 27, door_guid = 299) - LocalObject(907, IFFLock.Constructor(Vector3(2704.428f, 2376.81f, 48.43844f), Vector3(0, 0, 0)), owning_building_guid = 27, door_guid = 588) - LocalObject(908, IFFLock.Constructor(Vector3(2707.572f, 2351.19f, 48.43844f), Vector3(0, 0, 180)), owning_building_guid = 27, door_guid = 587) - LocalObject(909, IFFLock.Constructor(Vector3(2717.19f, 2354.428f, 40.93844f), Vector3(0, 0, 270)), owning_building_guid = 27, door_guid = 589) - LocalObject(910, IFFLock.Constructor(Vector3(2726.814f, 2262.042f, 58.55444f), Vector3(0, 0, 90)), owning_building_guid = 27, door_guid = 302) + LocalObject( + 878, + IFFLock.Constructor(Vector3(2694.77f, 2379.822f, 58.58444f), Vector3(0, 0, 0)), + owning_building_guid = 27, + door_guid = 830 + ) + LocalObject( + 903, + IFFLock.Constructor(Vector3(2661.06f, 2418.428f, 48.43844f), Vector3(0, 0, 270)), + owning_building_guid = 27, + door_guid = 573 + ) + LocalObject( + 904, + IFFLock.Constructor(Vector3(2670.813f, 2421.572f, 48.43844f), Vector3(0, 0, 90)), + owning_building_guid = 27, + door_guid = 574 + ) + LocalObject( + 905, + IFFLock.Constructor(Vector3(2678.814f, 2374.043f, 68.55444f), Vector3(0, 0, 90)), + owning_building_guid = 27, + door_guid = 298 + ) + LocalObject( + 906, + IFFLock.Constructor(Vector3(2695.954f, 2355.958f, 68.55444f), Vector3(0, 0, 0)), + owning_building_guid = 27, + door_guid = 299 + ) + LocalObject( + 907, + IFFLock.Constructor(Vector3(2704.428f, 2376.81f, 48.43844f), Vector3(0, 0, 0)), + owning_building_guid = 27, + door_guid = 588 + ) + LocalObject( + 908, + IFFLock.Constructor(Vector3(2707.572f, 2351.19f, 48.43844f), Vector3(0, 0, 180)), + owning_building_guid = 27, + door_guid = 587 + ) + LocalObject( + 909, + IFFLock.Constructor(Vector3(2717.19f, 2354.428f, 40.93844f), Vector3(0, 0, 270)), + owning_building_guid = 27, + door_guid = 589 + ) + LocalObject( + 910, + IFFLock.Constructor(Vector3(2726.814f, 2262.042f, 58.55444f), Vector3(0, 0, 90)), + owning_building_guid = 27, + door_guid = 302 + ) LocalObject(1127, Locker.Constructor(Vector3(2709.563f, 2354.141f, 47.36344f)), owning_building_guid = 27) LocalObject(1128, Locker.Constructor(Vector3(2710.727f, 2354.141f, 47.36344f)), owning_building_guid = 27) LocalObject(1129, Locker.Constructor(Vector3(2711.874f, 2354.141f, 47.36344f)), owning_building_guid = 27) @@ -816,76 +2227,309 @@ object Map10 { // Amerish LocalObject(1480, Locker.Constructor(Vector3(2712.26f, 2346.46f, 56.87344f)), owning_building_guid = 27) LocalObject(1481, Locker.Constructor(Vector3(2712.26f, 2348.982f, 57.10244f)), owning_building_guid = 27) LocalObject(1482, Locker.Constructor(Vector3(2712.26f, 2350.016f, 57.10244f)), owning_building_guid = 27) - LocalObject(203, Terminal.Constructor(Vector3(2696.276f, 2400.25f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(204, Terminal.Constructor(Vector3(2696.276f, 2407.575f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(205, Terminal.Constructor(Vector3(2697.724f, 2398.802f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(206, Terminal.Constructor(Vector3(2697.724f, 2409.023f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(207, Terminal.Constructor(Vector3(2710.424f, 2398.802f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(208, Terminal.Constructor(Vector3(2710.424f, 2409.023f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(209, Terminal.Constructor(Vector3(2711.872f, 2400.25f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(210, Terminal.Constructor(Vector3(2711.872f, 2407.575f, 47.09244f), cert_terminal), owning_building_guid = 27) - LocalObject(1667, Terminal.Constructor(Vector3(2683.972f, 2361.526f, 58.39744f), order_terminal), owning_building_guid = 27) - LocalObject(1668, Terminal.Constructor(Vector3(2712.654f, 2359.408f, 48.69244f), order_terminal), owning_building_guid = 27) - LocalObject(1669, Terminal.Constructor(Vector3(2712.654f, 2363.139f, 48.69244f), order_terminal), owning_building_guid = 27) - LocalObject(1670, Terminal.Constructor(Vector3(2712.654f, 2366.928f, 48.69244f), order_terminal), owning_building_guid = 27) - LocalObject(2410, Terminal.Constructor(Vector3(2654f, 2351.407f, 48.71544f), spawn_terminal), owning_building_guid = 27) - LocalObject(2411, Terminal.Constructor(Vector3(2677.91f, 2295.41f, 51.21544f), spawn_terminal), owning_building_guid = 27) - LocalObject(2412, Terminal.Constructor(Vector3(2693.407f, 2416f, 48.71544f), spawn_terminal), owning_building_guid = 27) - LocalObject(2413, Terminal.Constructor(Vector3(2695.905f, 2338.359f, 58.68144f), spawn_terminal), owning_building_guid = 27) - LocalObject(2414, Terminal.Constructor(Vector3(2698.971f, 2355.243f, 49.23644f), spawn_terminal), owning_building_guid = 27) - LocalObject(2415, Terminal.Constructor(Vector3(2698.967f, 2362.535f, 49.23644f), spawn_terminal), owning_building_guid = 27) - LocalObject(2416, Terminal.Constructor(Vector3(2698.97f, 2369.823f, 49.23644f), spawn_terminal), owning_building_guid = 27) - LocalObject(2646, Terminal.Constructor(Vector3(2731.628f, 2288.814f, 59.40744f), vehicle_terminal_combined), owning_building_guid = 27) - LocalObject(1623, VehicleSpawnPad.Constructor(Vector3(2717.989f, 2288.724f, 55.24944f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 27, terminal_guid = 2646) + LocalObject( + 203, + Terminal.Constructor(Vector3(2696.276f, 2400.25f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(2696.276f, 2407.575f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(2697.724f, 2398.802f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(2697.724f, 2409.023f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(2710.424f, 2398.802f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(2710.424f, 2409.023f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(2711.872f, 2400.25f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 210, + Terminal.Constructor(Vector3(2711.872f, 2407.575f, 47.09244f), cert_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1667, + Terminal.Constructor(Vector3(2683.972f, 2361.526f, 58.39744f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1668, + Terminal.Constructor(Vector3(2712.654f, 2359.408f, 48.69244f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1669, + Terminal.Constructor(Vector3(2712.654f, 2363.139f, 48.69244f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1670, + Terminal.Constructor(Vector3(2712.654f, 2366.928f, 48.69244f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2410, + Terminal.Constructor(Vector3(2654f, 2351.407f, 48.71544f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2411, + Terminal.Constructor(Vector3(2677.91f, 2295.41f, 51.21544f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2412, + Terminal.Constructor(Vector3(2693.407f, 2416f, 48.71544f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2413, + Terminal.Constructor(Vector3(2695.905f, 2338.359f, 58.68144f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2414, + Terminal.Constructor(Vector3(2698.971f, 2355.243f, 49.23644f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2415, + Terminal.Constructor(Vector3(2698.967f, 2362.535f, 49.23644f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2416, + Terminal.Constructor(Vector3(2698.97f, 2369.823f, 49.23644f), spawn_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2646, + Terminal.Constructor(Vector3(2731.628f, 2288.814f, 59.40744f), vehicle_terminal_combined), + owning_building_guid = 27 + ) + LocalObject( + 1623, + VehicleSpawnPad.Constructor(Vector3(2717.989f, 2288.724f, 55.24944f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 27, + terminal_guid = 2646 + ) LocalObject(2293, ResourceSilo.Constructor(Vector3(2633.733f, 2402.852f, 64.11944f)), owning_building_guid = 27) - LocalObject(2309, SpawnTube.Constructor(Vector3(2698.233f, 2356.683f, 47.10244f), Vector3(0, 0, 0)), owning_building_guid = 27) - LocalObject(2310, SpawnTube.Constructor(Vector3(2698.233f, 2363.974f, 47.10244f), Vector3(0, 0, 0)), owning_building_guid = 27) - LocalObject(2311, SpawnTube.Constructor(Vector3(2698.233f, 2371.262f, 47.10244f), Vector3(0, 0, 0)), owning_building_guid = 27) - LocalObject(141, ProximityTerminal.Constructor(Vector3(2695.983f, 2344.892f, 56.91244f), adv_med_terminal), owning_building_guid = 27) - LocalObject(1641, ProximityTerminal.Constructor(Vector3(2721.642f, 2355.952f, 47.10244f), medical_terminal), owning_building_guid = 27) - LocalObject(1858, ProximityTerminal.Constructor(Vector3(2675.883f, 2290.061f, 67.39544f), pad_landing_frame), owning_building_guid = 27) - LocalObject(1859, Terminal.Constructor(Vector3(2675.883f, 2290.061f, 67.39544f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(1861, ProximityTerminal.Constructor(Vector3(2679.101f, 2405.651f, 65.44444f), pad_landing_frame), owning_building_guid = 27) - LocalObject(1862, Terminal.Constructor(Vector3(2679.101f, 2405.651f, 65.44444f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(1864, ProximityTerminal.Constructor(Vector3(2692.198f, 2282.777f, 65.45444f), pad_landing_frame), owning_building_guid = 27) - LocalObject(1865, Terminal.Constructor(Vector3(2692.198f, 2282.777f, 65.45444f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(1867, ProximityTerminal.Constructor(Vector3(2695.323f, 2397.253f, 67.43444f), pad_landing_frame), owning_building_guid = 27) - LocalObject(1868, Terminal.Constructor(Vector3(2695.323f, 2397.253f, 67.43444f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(2197, ProximityTerminal.Constructor(Vector3(2658.525f, 2267.154f, 56.85244f), repair_silo), owning_building_guid = 27) - LocalObject(2198, Terminal.Constructor(Vector3(2658.525f, 2267.154f, 56.85244f), ground_rearm_terminal), owning_building_guid = 27) - LocalObject(2201, ProximityTerminal.Constructor(Vector3(2746.53f, 2367.861f, 56.85244f), repair_silo), owning_building_guid = 27) - LocalObject(2202, Terminal.Constructor(Vector3(2746.53f, 2367.861f, 56.85244f), ground_rearm_terminal), owning_building_guid = 27) - LocalObject(1521, FacilityTurret.Constructor(Vector3(2622.392f, 2432.472f, 65.50444f), manned_turret), owning_building_guid = 27) + LocalObject( + 2309, + SpawnTube.Constructor(Vector3(2698.233f, 2356.683f, 47.10244f), Vector3(0, 0, 0)), + owning_building_guid = 27 + ) + LocalObject( + 2310, + SpawnTube.Constructor(Vector3(2698.233f, 2363.974f, 47.10244f), Vector3(0, 0, 0)), + owning_building_guid = 27 + ) + LocalObject( + 2311, + SpawnTube.Constructor(Vector3(2698.233f, 2371.262f, 47.10244f), Vector3(0, 0, 0)), + owning_building_guid = 27 + ) + LocalObject( + 141, + ProximityTerminal.Constructor(Vector3(2695.983f, 2344.892f, 56.91244f), adv_med_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1641, + ProximityTerminal.Constructor(Vector3(2721.642f, 2355.952f, 47.10244f), medical_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1858, + ProximityTerminal.Constructor(Vector3(2675.883f, 2290.061f, 67.39544f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 1859, + Terminal.Constructor(Vector3(2675.883f, 2290.061f, 67.39544f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1861, + ProximityTerminal.Constructor(Vector3(2679.101f, 2405.651f, 65.44444f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 1862, + Terminal.Constructor(Vector3(2679.101f, 2405.651f, 65.44444f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1864, + ProximityTerminal.Constructor(Vector3(2692.198f, 2282.777f, 65.45444f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 1865, + Terminal.Constructor(Vector3(2692.198f, 2282.777f, 65.45444f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1867, + ProximityTerminal.Constructor(Vector3(2695.323f, 2397.253f, 67.43444f), pad_landing_frame), + owning_building_guid = 27 + ) + LocalObject( + 1868, + Terminal.Constructor(Vector3(2695.323f, 2397.253f, 67.43444f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2197, + ProximityTerminal.Constructor(Vector3(2658.525f, 2267.154f, 56.85244f), repair_silo), + owning_building_guid = 27 + ) + LocalObject( + 2198, + Terminal.Constructor(Vector3(2658.525f, 2267.154f, 56.85244f), ground_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 2201, + ProximityTerminal.Constructor(Vector3(2746.53f, 2367.861f, 56.85244f), repair_silo), + owning_building_guid = 27 + ) + LocalObject( + 2202, + Terminal.Constructor(Vector3(2746.53f, 2367.861f, 56.85244f), ground_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 1521, + FacilityTurret.Constructor(Vector3(2622.392f, 2432.472f, 65.50444f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1521, 5032) - LocalObject(1522, FacilityTurret.Constructor(Vector3(2622.4f, 2255.379f, 65.50444f), manned_turret), owning_building_guid = 27) + LocalObject( + 1522, + FacilityTurret.Constructor(Vector3(2622.4f, 2255.379f, 65.50444f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1522, 5033) - LocalObject(1523, FacilityTurret.Constructor(Vector3(2715.665f, 2433.605f, 65.50444f), manned_turret), owning_building_guid = 27) + LocalObject( + 1523, + FacilityTurret.Constructor(Vector3(2715.665f, 2433.605f, 65.50444f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1523, 5034) - LocalObject(1524, FacilityTurret.Constructor(Vector3(2757.626f, 2255.371f, 65.50444f), manned_turret), owning_building_guid = 27) + LocalObject( + 1524, + FacilityTurret.Constructor(Vector3(2757.626f, 2255.371f, 65.50444f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1524, 5035) - LocalObject(1525, FacilityTurret.Constructor(Vector3(2758.813f, 2390.496f, 65.50444f), manned_turret), owning_building_guid = 27) + LocalObject( + 1525, + FacilityTurret.Constructor(Vector3(2758.813f, 2390.496f, 65.50444f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(1525, 5036) - LocalObject(858, ImplantTerminalMech.Constructor(Vector3(2704.066f, 2396.368f, 46.57944f)), owning_building_guid = 27) - LocalObject(850, Terminal.Constructor(Vector3(2704.066f, 2396.386f, 46.57944f), implant_terminal_interface), owning_building_guid = 27) + LocalObject( + 858, + ImplantTerminalMech.Constructor(Vector3(2704.066f, 2396.368f, 46.57944f)), + owning_building_guid = 27 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(2704.066f, 2396.386f, 46.57944f), implant_terminal_interface), + owning_building_guid = 27 + ) TerminalToInterface(858, 850) - LocalObject(859, ImplantTerminalMech.Constructor(Vector3(2704.054f, 2411.724f, 46.57944f)), owning_building_guid = 27) - LocalObject(851, Terminal.Constructor(Vector3(2704.054f, 2411.706f, 46.57944f), implant_terminal_interface), owning_building_guid = 27) + LocalObject( + 859, + ImplantTerminalMech.Constructor(Vector3(2704.054f, 2411.724f, 46.57944f)), + owning_building_guid = 27 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(2704.054f, 2411.706f, 46.57944f), implant_terminal_interface), + owning_building_guid = 27 + ) TerminalToInterface(859, 851) - LocalObject(2056, Painbox.Constructor(Vector3(2699.594f, 2332.334f, 71.13124f), painbox), owning_building_guid = 27) - LocalObject(2068, Painbox.Constructor(Vector3(2708.753f, 2359.712f, 51.17234f), painbox_continuous), owning_building_guid = 27) - LocalObject(2080, Painbox.Constructor(Vector3(2698.182f, 2346.798f, 71.33634f), painbox_door_radius), owning_building_guid = 27) - LocalObject(2092, Painbox.Constructor(Vector3(2704.54f, 2349.793f, 49.45834f), painbox_door_radius_continuous), owning_building_guid = 27) - LocalObject(2093, Painbox.Constructor(Vector3(2706.515f, 2377.831f, 48.81664f), painbox_door_radius_continuous), owning_building_guid = 27) - LocalObject(2094, Painbox.Constructor(Vector3(2721.882f, 2371.05f, 50.64334f), painbox_door_radius_continuous), owning_building_guid = 27) + LocalObject( + 2056, + Painbox.Constructor(Vector3(2699.594f, 2332.334f, 71.13124f), painbox), + owning_building_guid = 27 + ) + LocalObject( + 2068, + Painbox.Constructor(Vector3(2708.753f, 2359.712f, 51.17234f), painbox_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2080, + Painbox.Constructor(Vector3(2698.182f, 2346.798f, 71.33634f), painbox_door_radius), + owning_building_guid = 27 + ) + LocalObject( + 2092, + Painbox.Constructor(Vector3(2704.54f, 2349.793f, 49.45834f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2093, + Painbox.Constructor(Vector3(2706.515f, 2377.831f, 48.81664f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 2094, + Painbox.Constructor(Vector3(2721.882f, 2371.05f, 50.64334f), painbox_door_radius_continuous), + owning_building_guid = 27 + ) LocalObject(272, Generator.Constructor(Vector3(2698.025f, 2328.445f, 65.80844f)), owning_building_guid = 27) - LocalObject(260, Terminal.Constructor(Vector3(2697.978f, 2336.637f, 67.10244f), gen_control), owning_building_guid = 27) + LocalObject( + 260, + Terminal.Constructor(Vector3(2697.978f, 2336.637f, 67.10244f), gen_control), + owning_building_guid = 27 + ) } Building11() def Building11(): Unit = { // Name: Onatha Type: cryo_facility GUID: 30, MapID: 11 - LocalBuilding("Onatha", 30, 11, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(3350f, 5732f, 47.90467f), Vector3(0f, 0f, 360f), cryo_facility))) - LocalObject(192, CaptureTerminal.Constructor(Vector3(3321.911f, 5791.266f, 37.90467f), capture_terminal), owning_building_guid = 30) + LocalBuilding( + "Onatha", + 30, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(3350f, 5732f, 47.90467f), + Vector3(0f, 0f, 360f), + cryo_facility + ) + ) + ) + LocalObject( + 192, + CaptureTerminal.Constructor(Vector3(3321.911f, 5791.266f, 37.90467f), capture_terminal), + owning_building_guid = 30 + ) LocalObject(309, Door.Constructor(Vector3(3291.023f, 5736.5f, 49.45567f)), owning_building_guid = 30) LocalObject(310, Door.Constructor(Vector3(3291.023f, 5754.693f, 57.41967f)), owning_building_guid = 30) LocalObject(311, Door.Constructor(Vector3(3307.674f, 5799.803f, 49.45567f)), owning_building_guid = 30) @@ -926,15 +2570,60 @@ object Map10 { // Amerish LocalObject(2501, Door.Constructor(Vector3(3354.673f, 5737.733f, 39.75867f)), owning_building_guid = 30) LocalObject(2502, Door.Constructor(Vector3(3354.673f, 5745.026f, 39.75867f)), owning_building_guid = 30) LocalObject(2503, Door.Constructor(Vector3(3354.673f, 5752.315f, 39.75867f)), owning_building_guid = 30) - LocalObject(879, IFFLock.Constructor(Vector3(3350.77f, 5759.822f, 49.38667f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 831) - LocalObject(915, IFFLock.Constructor(Vector3(3317.06f, 5798.428f, 39.24067f), Vector3(0, 0, 270)), owning_building_guid = 30, door_guid = 596) - LocalObject(916, IFFLock.Constructor(Vector3(3326.813f, 5801.572f, 39.24067f), Vector3(0, 0, 90)), owning_building_guid = 30, door_guid = 597) - LocalObject(917, IFFLock.Constructor(Vector3(3334.814f, 5754.043f, 59.35667f), Vector3(0, 0, 90)), owning_building_guid = 30, door_guid = 313) - LocalObject(918, IFFLock.Constructor(Vector3(3351.954f, 5735.958f, 59.35667f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 314) - LocalObject(919, IFFLock.Constructor(Vector3(3360.428f, 5756.81f, 39.24067f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 611) - LocalObject(922, IFFLock.Constructor(Vector3(3363.572f, 5731.19f, 39.24067f), Vector3(0, 0, 180)), owning_building_guid = 30, door_guid = 610) - LocalObject(925, IFFLock.Constructor(Vector3(3373.19f, 5734.428f, 31.74067f), Vector3(0, 0, 270)), owning_building_guid = 30, door_guid = 612) - LocalObject(930, IFFLock.Constructor(Vector3(3382.814f, 5642.042f, 49.35667f), Vector3(0, 0, 90)), owning_building_guid = 30, door_guid = 325) + LocalObject( + 879, + IFFLock.Constructor(Vector3(3350.77f, 5759.822f, 49.38667f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 831 + ) + LocalObject( + 915, + IFFLock.Constructor(Vector3(3317.06f, 5798.428f, 39.24067f), Vector3(0, 0, 270)), + owning_building_guid = 30, + door_guid = 596 + ) + LocalObject( + 916, + IFFLock.Constructor(Vector3(3326.813f, 5801.572f, 39.24067f), Vector3(0, 0, 90)), + owning_building_guid = 30, + door_guid = 597 + ) + LocalObject( + 917, + IFFLock.Constructor(Vector3(3334.814f, 5754.043f, 59.35667f), Vector3(0, 0, 90)), + owning_building_guid = 30, + door_guid = 313 + ) + LocalObject( + 918, + IFFLock.Constructor(Vector3(3351.954f, 5735.958f, 59.35667f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 314 + ) + LocalObject( + 919, + IFFLock.Constructor(Vector3(3360.428f, 5756.81f, 39.24067f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 611 + ) + LocalObject( + 922, + IFFLock.Constructor(Vector3(3363.572f, 5731.19f, 39.24067f), Vector3(0, 0, 180)), + owning_building_guid = 30, + door_guid = 610 + ) + LocalObject( + 925, + IFFLock.Constructor(Vector3(3373.19f, 5734.428f, 31.74067f), Vector3(0, 0, 270)), + owning_building_guid = 30, + door_guid = 612 + ) + LocalObject( + 930, + IFFLock.Constructor(Vector3(3382.814f, 5642.042f, 49.35667f), Vector3(0, 0, 90)), + owning_building_guid = 30, + door_guid = 325 + ) LocalObject(1156, Locker.Constructor(Vector3(3365.563f, 5734.141f, 38.16566f)), owning_building_guid = 30) LocalObject(1157, Locker.Constructor(Vector3(3366.727f, 5734.141f, 38.16566f)), owning_building_guid = 30) LocalObject(1160, Locker.Constructor(Vector3(3367.874f, 5734.141f, 38.16566f)), owning_building_guid = 30) @@ -964,76 +2653,309 @@ object Map10 { // Amerish LocalObject(1488, Locker.Constructor(Vector3(3368.26f, 5726.46f, 47.67567f)), owning_building_guid = 30) LocalObject(1489, Locker.Constructor(Vector3(3368.26f, 5728.982f, 47.90467f)), owning_building_guid = 30) LocalObject(1490, Locker.Constructor(Vector3(3368.26f, 5730.016f, 47.90467f)), owning_building_guid = 30) - LocalObject(211, Terminal.Constructor(Vector3(3352.276f, 5780.25f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(212, Terminal.Constructor(Vector3(3352.276f, 5787.575f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(213, Terminal.Constructor(Vector3(3353.724f, 5778.802f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(214, Terminal.Constructor(Vector3(3353.724f, 5789.023f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(215, Terminal.Constructor(Vector3(3366.424f, 5778.802f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(216, Terminal.Constructor(Vector3(3366.424f, 5789.023f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(217, Terminal.Constructor(Vector3(3367.872f, 5780.25f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(218, Terminal.Constructor(Vector3(3367.872f, 5787.575f, 37.89467f), cert_terminal), owning_building_guid = 30) - LocalObject(1674, Terminal.Constructor(Vector3(3339.972f, 5741.526f, 49.19967f), order_terminal), owning_building_guid = 30) - LocalObject(1675, Terminal.Constructor(Vector3(3368.654f, 5739.408f, 39.49467f), order_terminal), owning_building_guid = 30) - LocalObject(1676, Terminal.Constructor(Vector3(3368.654f, 5743.139f, 39.49467f), order_terminal), owning_building_guid = 30) - LocalObject(1677, Terminal.Constructor(Vector3(3368.654f, 5746.928f, 39.49467f), order_terminal), owning_building_guid = 30) - LocalObject(2417, Terminal.Constructor(Vector3(3310f, 5731.407f, 39.51767f), spawn_terminal), owning_building_guid = 30) - LocalObject(2418, Terminal.Constructor(Vector3(3333.91f, 5675.41f, 42.01767f), spawn_terminal), owning_building_guid = 30) - LocalObject(2419, Terminal.Constructor(Vector3(3349.407f, 5796f, 39.51767f), spawn_terminal), owning_building_guid = 30) - LocalObject(2420, Terminal.Constructor(Vector3(3351.905f, 5718.359f, 49.48367f), spawn_terminal), owning_building_guid = 30) - LocalObject(2421, Terminal.Constructor(Vector3(3354.971f, 5735.243f, 40.03867f), spawn_terminal), owning_building_guid = 30) - LocalObject(2422, Terminal.Constructor(Vector3(3354.967f, 5742.535f, 40.03867f), spawn_terminal), owning_building_guid = 30) - LocalObject(2423, Terminal.Constructor(Vector3(3354.97f, 5749.823f, 40.03867f), spawn_terminal), owning_building_guid = 30) - LocalObject(2647, Terminal.Constructor(Vector3(3387.628f, 5668.814f, 50.20967f), vehicle_terminal_combined), owning_building_guid = 30) - LocalObject(1624, VehicleSpawnPad.Constructor(Vector3(3373.989f, 5668.724f, 46.05167f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 30, terminal_guid = 2647) + LocalObject( + 211, + Terminal.Constructor(Vector3(3352.276f, 5780.25f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(3352.276f, 5787.575f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(3353.724f, 5778.802f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(3353.724f, 5789.023f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(3366.424f, 5778.802f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(3366.424f, 5789.023f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 217, + Terminal.Constructor(Vector3(3367.872f, 5780.25f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 218, + Terminal.Constructor(Vector3(3367.872f, 5787.575f, 37.89467f), cert_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1674, + Terminal.Constructor(Vector3(3339.972f, 5741.526f, 49.19967f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1675, + Terminal.Constructor(Vector3(3368.654f, 5739.408f, 39.49467f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1676, + Terminal.Constructor(Vector3(3368.654f, 5743.139f, 39.49467f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1677, + Terminal.Constructor(Vector3(3368.654f, 5746.928f, 39.49467f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2417, + Terminal.Constructor(Vector3(3310f, 5731.407f, 39.51767f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2418, + Terminal.Constructor(Vector3(3333.91f, 5675.41f, 42.01767f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2419, + Terminal.Constructor(Vector3(3349.407f, 5796f, 39.51767f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2420, + Terminal.Constructor(Vector3(3351.905f, 5718.359f, 49.48367f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2421, + Terminal.Constructor(Vector3(3354.971f, 5735.243f, 40.03867f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2422, + Terminal.Constructor(Vector3(3354.967f, 5742.535f, 40.03867f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2423, + Terminal.Constructor(Vector3(3354.97f, 5749.823f, 40.03867f), spawn_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2647, + Terminal.Constructor(Vector3(3387.628f, 5668.814f, 50.20967f), vehicle_terminal_combined), + owning_building_guid = 30 + ) + LocalObject( + 1624, + VehicleSpawnPad.Constructor(Vector3(3373.989f, 5668.724f, 46.05167f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 30, + terminal_guid = 2647 + ) LocalObject(2294, ResourceSilo.Constructor(Vector3(3289.733f, 5782.852f, 54.92167f)), owning_building_guid = 30) - LocalObject(2314, SpawnTube.Constructor(Vector3(3354.233f, 5736.683f, 37.90467f), Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(2315, SpawnTube.Constructor(Vector3(3354.233f, 5743.974f, 37.90467f), Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(2316, SpawnTube.Constructor(Vector3(3354.233f, 5751.262f, 37.90467f), Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(142, ProximityTerminal.Constructor(Vector3(3351.983f, 5724.892f, 47.71467f), adv_med_terminal), owning_building_guid = 30) - LocalObject(1642, ProximityTerminal.Constructor(Vector3(3377.642f, 5735.952f, 37.90467f), medical_terminal), owning_building_guid = 30) - LocalObject(1870, ProximityTerminal.Constructor(Vector3(3331.883f, 5670.061f, 58.19767f), pad_landing_frame), owning_building_guid = 30) - LocalObject(1871, Terminal.Constructor(Vector3(3331.883f, 5670.061f, 58.19767f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(1873, ProximityTerminal.Constructor(Vector3(3335.101f, 5785.651f, 56.24667f), pad_landing_frame), owning_building_guid = 30) - LocalObject(1874, Terminal.Constructor(Vector3(3335.101f, 5785.651f, 56.24667f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(1876, ProximityTerminal.Constructor(Vector3(3348.198f, 5662.777f, 56.25667f), pad_landing_frame), owning_building_guid = 30) - LocalObject(1877, Terminal.Constructor(Vector3(3348.198f, 5662.777f, 56.25667f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(1879, ProximityTerminal.Constructor(Vector3(3351.323f, 5777.253f, 58.23667f), pad_landing_frame), owning_building_guid = 30) - LocalObject(1880, Terminal.Constructor(Vector3(3351.323f, 5777.253f, 58.23667f), air_rearm_terminal), owning_building_guid = 30) - LocalObject(2205, ProximityTerminal.Constructor(Vector3(3314.525f, 5647.154f, 47.65467f), repair_silo), owning_building_guid = 30) - LocalObject(2206, Terminal.Constructor(Vector3(3314.525f, 5647.154f, 47.65467f), ground_rearm_terminal), owning_building_guid = 30) - LocalObject(2209, ProximityTerminal.Constructor(Vector3(3402.53f, 5747.861f, 47.65467f), repair_silo), owning_building_guid = 30) - LocalObject(2210, Terminal.Constructor(Vector3(3402.53f, 5747.861f, 47.65467f), ground_rearm_terminal), owning_building_guid = 30) - LocalObject(1528, FacilityTurret.Constructor(Vector3(3278.392f, 5812.472f, 56.30667f), manned_turret), owning_building_guid = 30) + LocalObject( + 2314, + SpawnTube.Constructor(Vector3(3354.233f, 5736.683f, 37.90467f), Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 2315, + SpawnTube.Constructor(Vector3(3354.233f, 5743.974f, 37.90467f), Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 2316, + SpawnTube.Constructor(Vector3(3354.233f, 5751.262f, 37.90467f), Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 142, + ProximityTerminal.Constructor(Vector3(3351.983f, 5724.892f, 47.71467f), adv_med_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1642, + ProximityTerminal.Constructor(Vector3(3377.642f, 5735.952f, 37.90467f), medical_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1870, + ProximityTerminal.Constructor(Vector3(3331.883f, 5670.061f, 58.19767f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 1871, + Terminal.Constructor(Vector3(3331.883f, 5670.061f, 58.19767f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1873, + ProximityTerminal.Constructor(Vector3(3335.101f, 5785.651f, 56.24667f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 1874, + Terminal.Constructor(Vector3(3335.101f, 5785.651f, 56.24667f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1876, + ProximityTerminal.Constructor(Vector3(3348.198f, 5662.777f, 56.25667f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 1877, + Terminal.Constructor(Vector3(3348.198f, 5662.777f, 56.25667f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1879, + ProximityTerminal.Constructor(Vector3(3351.323f, 5777.253f, 58.23667f), pad_landing_frame), + owning_building_guid = 30 + ) + LocalObject( + 1880, + Terminal.Constructor(Vector3(3351.323f, 5777.253f, 58.23667f), air_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2205, + ProximityTerminal.Constructor(Vector3(3314.525f, 5647.154f, 47.65467f), repair_silo), + owning_building_guid = 30 + ) + LocalObject( + 2206, + Terminal.Constructor(Vector3(3314.525f, 5647.154f, 47.65467f), ground_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 2209, + ProximityTerminal.Constructor(Vector3(3402.53f, 5747.861f, 47.65467f), repair_silo), + owning_building_guid = 30 + ) + LocalObject( + 2210, + Terminal.Constructor(Vector3(3402.53f, 5747.861f, 47.65467f), ground_rearm_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1528, + FacilityTurret.Constructor(Vector3(3278.392f, 5812.472f, 56.30667f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1528, 5037) - LocalObject(1529, FacilityTurret.Constructor(Vector3(3278.4f, 5635.379f, 56.30667f), manned_turret), owning_building_guid = 30) + LocalObject( + 1529, + FacilityTurret.Constructor(Vector3(3278.4f, 5635.379f, 56.30667f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1529, 5038) - LocalObject(1532, FacilityTurret.Constructor(Vector3(3371.665f, 5813.605f, 56.30667f), manned_turret), owning_building_guid = 30) + LocalObject( + 1532, + FacilityTurret.Constructor(Vector3(3371.665f, 5813.605f, 56.30667f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1532, 5039) - LocalObject(1535, FacilityTurret.Constructor(Vector3(3413.626f, 5635.371f, 56.30667f), manned_turret), owning_building_guid = 30) + LocalObject( + 1535, + FacilityTurret.Constructor(Vector3(3413.626f, 5635.371f, 56.30667f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1535, 5040) - LocalObject(1536, FacilityTurret.Constructor(Vector3(3414.813f, 5770.496f, 56.30667f), manned_turret), owning_building_guid = 30) + LocalObject( + 1536, + FacilityTurret.Constructor(Vector3(3414.813f, 5770.496f, 56.30667f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(1536, 5041) - LocalObject(860, ImplantTerminalMech.Constructor(Vector3(3360.066f, 5776.368f, 37.38167f)), owning_building_guid = 30) - LocalObject(852, Terminal.Constructor(Vector3(3360.066f, 5776.386f, 37.38167f), implant_terminal_interface), owning_building_guid = 30) + LocalObject( + 860, + ImplantTerminalMech.Constructor(Vector3(3360.066f, 5776.368f, 37.38167f)), + owning_building_guid = 30 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(3360.066f, 5776.386f, 37.38167f), implant_terminal_interface), + owning_building_guid = 30 + ) TerminalToInterface(860, 852) - LocalObject(861, ImplantTerminalMech.Constructor(Vector3(3360.054f, 5791.724f, 37.38167f)), owning_building_guid = 30) - LocalObject(853, Terminal.Constructor(Vector3(3360.054f, 5791.706f, 37.38167f), implant_terminal_interface), owning_building_guid = 30) + LocalObject( + 861, + ImplantTerminalMech.Constructor(Vector3(3360.054f, 5791.724f, 37.38167f)), + owning_building_guid = 30 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(3360.054f, 5791.706f, 37.38167f), implant_terminal_interface), + owning_building_guid = 30 + ) TerminalToInterface(861, 853) - LocalObject(2057, Painbox.Constructor(Vector3(3355.594f, 5712.334f, 61.93347f), painbox), owning_building_guid = 30) - LocalObject(2069, Painbox.Constructor(Vector3(3364.753f, 5739.712f, 41.97457f), painbox_continuous), owning_building_guid = 30) - LocalObject(2081, Painbox.Constructor(Vector3(3354.182f, 5726.798f, 62.13857f), painbox_door_radius), owning_building_guid = 30) - LocalObject(2095, Painbox.Constructor(Vector3(3360.54f, 5729.793f, 40.26057f), painbox_door_radius_continuous), owning_building_guid = 30) - LocalObject(2096, Painbox.Constructor(Vector3(3362.515f, 5757.831f, 39.61887f), painbox_door_radius_continuous), owning_building_guid = 30) - LocalObject(2097, Painbox.Constructor(Vector3(3377.882f, 5751.05f, 41.44557f), painbox_door_radius_continuous), owning_building_guid = 30) + LocalObject( + 2057, + Painbox.Constructor(Vector3(3355.594f, 5712.334f, 61.93347f), painbox), + owning_building_guid = 30 + ) + LocalObject( + 2069, + Painbox.Constructor(Vector3(3364.753f, 5739.712f, 41.97457f), painbox_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2081, + Painbox.Constructor(Vector3(3354.182f, 5726.798f, 62.13857f), painbox_door_radius), + owning_building_guid = 30 + ) + LocalObject( + 2095, + Painbox.Constructor(Vector3(3360.54f, 5729.793f, 40.26057f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2096, + Painbox.Constructor(Vector3(3362.515f, 5757.831f, 39.61887f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 2097, + Painbox.Constructor(Vector3(3377.882f, 5751.05f, 41.44557f), painbox_door_radius_continuous), + owning_building_guid = 30 + ) LocalObject(273, Generator.Constructor(Vector3(3354.025f, 5708.445f, 56.61067f)), owning_building_guid = 30) - LocalObject(261, Terminal.Constructor(Vector3(3353.978f, 5716.637f, 57.90467f), gen_control), owning_building_guid = 30) + LocalObject( + 261, + Terminal.Constructor(Vector3(3353.978f, 5716.637f, 57.90467f), gen_control), + owning_building_guid = 30 + ) } Building9() def Building9(): Unit = { // Name: Kyoi Type: cryo_facility GUID: 33, MapID: 9 - LocalBuilding("Kyoi", 33, 9, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5556f, 2232f, 62.32201f), Vector3(0f, 0f, 88f), cryo_facility))) - LocalObject(199, CaptureTerminal.Constructor(Vector3(5495.79f, 2205.997f, 52.32201f), capture_terminal), owning_building_guid = 33) + LocalBuilding( + "Kyoi", + 33, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5556f, 2232f, 62.32201f), + Vector3(0f, 0f, 88f), + cryo_facility + ) + ) + ) + LocalObject( + 199, + CaptureTerminal.Constructor(Vector3(5495.79f, 2205.997f, 52.32201f), capture_terminal), + owning_building_guid = 33 + ) LocalObject(484, Door.Constructor(Vector3(5486.761f, 2192.066f, 63.873f)), owning_building_guid = 33) LocalObject(485, Door.Constructor(Vector3(5487.396f, 2210.248f, 71.83701f)), owning_building_guid = 33) LocalObject(486, Door.Constructor(Vector3(5531.263f, 2173.851f, 71.83701f)), owning_building_guid = 33) @@ -1074,15 +2996,60 @@ object Map10 { // Amerish LocalObject(2552, Door.Constructor(Vector3(5535.86f, 2237.379f, 54.17601f)), owning_building_guid = 33) LocalObject(2553, Door.Constructor(Vector3(5543.145f, 2237.125f, 54.17601f)), owning_building_guid = 33) LocalObject(2554, Door.Constructor(Vector3(5550.434f, 2236.87f, 54.17601f)), owning_building_guid = 33) - LocalObject(886, IFFLock.Constructor(Vector3(5528.222f, 2233.74f, 63.804f), Vector3(0, 0, 272)), owning_building_guid = 33, door_guid = 838) - LocalObject(1053, IFFLock.Constructor(Vector3(5485.661f, 2211.255f, 53.658f), Vector3(0, 0, 2)), owning_building_guid = 33, door_guid = 745) - LocalObject(1054, IFFLock.Constructor(Vector3(5488.463f, 2201.398f, 53.658f), Vector3(0, 0, 182)), owning_building_guid = 33, door_guid = 744) - LocalObject(1055, IFFLock.Constructor(Vector3(5531.569f, 2243.288f, 53.658f), Vector3(0, 0, 272)), owning_building_guid = 33, door_guid = 750) - LocalObject(1056, IFFLock.Constructor(Vector3(5533.44f, 2217.593f, 73.774f), Vector3(0, 0, 2)), owning_building_guid = 33, door_guid = 487) - LocalObject(1057, IFFLock.Constructor(Vector3(5552.113f, 2234.091f, 73.774f), Vector3(0, 0, 272)), owning_building_guid = 33, door_guid = 489) - LocalObject(1058, IFFLock.Constructor(Vector3(5554.383f, 2255.26f, 46.158f), Vector3(0, 0, 182)), owning_building_guid = 33, door_guid = 755) - LocalObject(1059, IFFLock.Constructor(Vector3(5557.283f, 2245.535f, 53.658f), Vector3(0, 0, 92)), owning_building_guid = 33, door_guid = 758) - LocalObject(1064, IFFLock.Constructor(Vector3(5647.048f, 2261.655f, 63.77401f), Vector3(0, 0, 2)), owning_building_guid = 33, door_guid = 498) + LocalObject( + 886, + IFFLock.Constructor(Vector3(5528.222f, 2233.74f, 63.804f), Vector3(0, 0, 272)), + owning_building_guid = 33, + door_guid = 838 + ) + LocalObject( + 1053, + IFFLock.Constructor(Vector3(5485.661f, 2211.255f, 53.658f), Vector3(0, 0, 2)), + owning_building_guid = 33, + door_guid = 745 + ) + LocalObject( + 1054, + IFFLock.Constructor(Vector3(5488.463f, 2201.398f, 53.658f), Vector3(0, 0, 182)), + owning_building_guid = 33, + door_guid = 744 + ) + LocalObject( + 1055, + IFFLock.Constructor(Vector3(5531.569f, 2243.288f, 53.658f), Vector3(0, 0, 272)), + owning_building_guid = 33, + door_guid = 750 + ) + LocalObject( + 1056, + IFFLock.Constructor(Vector3(5533.44f, 2217.593f, 73.774f), Vector3(0, 0, 2)), + owning_building_guid = 33, + door_guid = 487 + ) + LocalObject( + 1057, + IFFLock.Constructor(Vector3(5552.113f, 2234.091f, 73.774f), Vector3(0, 0, 272)), + owning_building_guid = 33, + door_guid = 489 + ) + LocalObject( + 1058, + IFFLock.Constructor(Vector3(5554.383f, 2255.26f, 46.158f), Vector3(0, 0, 182)), + owning_building_guid = 33, + door_guid = 755 + ) + LocalObject( + 1059, + IFFLock.Constructor(Vector3(5557.283f, 2245.535f, 53.658f), Vector3(0, 0, 92)), + owning_building_guid = 33, + door_guid = 758 + ) + LocalObject( + 1064, + IFFLock.Constructor(Vector3(5647.048f, 2261.655f, 63.77401f), Vector3(0, 0, 2)), + owning_building_guid = 33, + door_guid = 498 + ) LocalObject(1369, Locker.Constructor(Vector3(5502.204f, 2253.888f, 52.31701f)), owning_building_guid = 33) LocalObject(1370, Locker.Constructor(Vector3(5503.456f, 2253.844f, 52.31701f)), owning_building_guid = 33) LocalObject(1371, Locker.Constructor(Vector3(5504.717f, 2253.8f, 52.31701f)), owning_building_guid = 33) @@ -1112,76 +3079,309 @@ object Map10 { // Amerish LocalObject(1496, Locker.Constructor(Vector3(5565.294f, 2249.947f, 62.09301f)), owning_building_guid = 33) LocalObject(1497, Locker.Constructor(Vector3(5567.81f, 2249.859f, 62.32201f)), owning_building_guid = 33) LocalObject(1498, Locker.Constructor(Vector3(5568.843f, 2249.823f, 62.32201f)), owning_building_guid = 33) - LocalObject(219, Terminal.Constructor(Vector3(5499.142f, 2237.712f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(220, Terminal.Constructor(Vector3(5499.585f, 2250.404f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(221, Terminal.Constructor(Vector3(5500.538f, 2236.214f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(222, Terminal.Constructor(Vector3(5501.083f, 2251.801f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(223, Terminal.Constructor(Vector3(5507.859f, 2235.958f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(224, Terminal.Constructor(Vector3(5508.403f, 2251.545f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(225, Terminal.Constructor(Vector3(5509.356f, 2237.355f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(226, Terminal.Constructor(Vector3(5509.8f, 2250.047f, 52.312f), cert_terminal), owning_building_guid = 33) - LocalObject(1757, Terminal.Constructor(Vector3(5541.732f, 2251.164f, 53.91201f), order_terminal), owning_building_guid = 33) - LocalObject(1758, Terminal.Constructor(Vector3(5545.519f, 2251.031f, 53.91201f), order_terminal), owning_building_guid = 33) - LocalObject(1759, Terminal.Constructor(Vector3(5546.13f, 2222.311f, 63.617f), order_terminal), owning_building_guid = 33) - LocalObject(1760, Terminal.Constructor(Vector3(5549.248f, 2250.901f, 53.91201f), order_terminal), owning_building_guid = 33) - LocalObject(2462, Terminal.Constructor(Vector3(5492.018f, 2233.641f, 53.93501f), spawn_terminal), owning_building_guid = 33) - LocalObject(2463, Terminal.Constructor(Vector3(5538.361f, 2237.589f, 54.45601f), spawn_terminal), owning_building_guid = 33) - LocalObject(2464, Terminal.Constructor(Vector3(5545.645f, 2237.332f, 54.45601f), spawn_terminal), owning_building_guid = 33) - LocalObject(2465, Terminal.Constructor(Vector3(5552.933f, 2237.081f, 54.45601f), spawn_terminal), owning_building_guid = 33) - LocalObject(2466, Terminal.Constructor(Vector3(5555.197f, 2192.004f, 53.93501f), spawn_terminal), owning_building_guid = 33) - LocalObject(2467, Terminal.Constructor(Vector3(5569.699f, 2233.428f, 63.901f), spawn_terminal), owning_building_guid = 33) - LocalObject(2468, Terminal.Constructor(Vector3(5611.994f, 2213.945f, 56.43501f), spawn_terminal), owning_building_guid = 33) - LocalObject(2654, Terminal.Constructor(Vector3(5620.461f, 2267.4f, 64.62701f), vehicle_terminal_combined), owning_building_guid = 33) - LocalObject(1635, VehicleSpawnPad.Constructor(Vector3(5620.075f, 2253.766f, 60.46901f), mb_pad_creation, Vector3(0, 0, 182)), owning_building_guid = 33, terminal_guid = 2654) + LocalObject( + 219, + Terminal.Constructor(Vector3(5499.142f, 2237.712f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 220, + Terminal.Constructor(Vector3(5499.585f, 2250.404f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 221, + Terminal.Constructor(Vector3(5500.538f, 2236.214f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 222, + Terminal.Constructor(Vector3(5501.083f, 2251.801f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 223, + Terminal.Constructor(Vector3(5507.859f, 2235.958f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(5508.403f, 2251.545f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(5509.356f, 2237.355f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(5509.8f, 2250.047f, 52.312f), cert_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1757, + Terminal.Constructor(Vector3(5541.732f, 2251.164f, 53.91201f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1758, + Terminal.Constructor(Vector3(5545.519f, 2251.031f, 53.91201f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1759, + Terminal.Constructor(Vector3(5546.13f, 2222.311f, 63.617f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1760, + Terminal.Constructor(Vector3(5549.248f, 2250.901f, 53.91201f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2462, + Terminal.Constructor(Vector3(5492.018f, 2233.641f, 53.93501f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2463, + Terminal.Constructor(Vector3(5538.361f, 2237.589f, 54.45601f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2464, + Terminal.Constructor(Vector3(5545.645f, 2237.332f, 54.45601f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2465, + Terminal.Constructor(Vector3(5552.933f, 2237.081f, 54.45601f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2466, + Terminal.Constructor(Vector3(5555.197f, 2192.004f, 53.93501f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2467, + Terminal.Constructor(Vector3(5569.699f, 2233.428f, 63.901f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2468, + Terminal.Constructor(Vector3(5611.994f, 2213.945f, 56.43501f), spawn_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2654, + Terminal.Constructor(Vector3(5620.461f, 2267.4f, 64.62701f), vehicle_terminal_combined), + owning_building_guid = 33 + ) + LocalObject( + 1635, + VehicleSpawnPad.Constructor(Vector3(5620.075f, 2253.766f, 60.46901f), mb_pad_creation, Vector3(0, 0, 182)), + owning_building_guid = 33, + terminal_guid = 2654 + ) LocalObject(2301, ResourceSilo.Constructor(Vector3(5503.076f, 2173.544f, 69.339f)), owning_building_guid = 33) - LocalObject(2365, SpawnTube.Constructor(Vector3(5536.897f, 2236.903f, 52.32201f), Vector3(0, 0, 272)), owning_building_guid = 33) - LocalObject(2366, SpawnTube.Constructor(Vector3(5544.181f, 2236.648f, 52.32201f), Vector3(0, 0, 272)), owning_building_guid = 33) - LocalObject(2367, SpawnTube.Constructor(Vector3(5551.468f, 2236.394f, 52.32201f), Vector3(0, 0, 272)), owning_building_guid = 33) - LocalObject(143, ProximityTerminal.Constructor(Vector3(5563.173f, 2233.734f, 62.13201f), adv_med_terminal), owning_building_guid = 33) - LocalObject(1655, ProximityTerminal.Constructor(Vector3(5553.015f, 2259.763f, 52.32201f), medical_terminal), owning_building_guid = 33) - LocalObject(1948, ProximityTerminal.Constructor(Vector3(5501.862f, 2218.982f, 70.66401f), pad_landing_frame), owning_building_guid = 33) - LocalObject(1949, Terminal.Constructor(Vector3(5501.862f, 2218.982f, 70.66401f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(1951, ProximityTerminal.Constructor(Vector3(5510.821f, 2234.902f, 72.65401f), pad_landing_frame), owning_building_guid = 33) - LocalObject(1952, Terminal.Constructor(Vector3(5510.821f, 2234.902f, 72.65401f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(1954, ProximityTerminal.Constructor(Vector3(5617.269f, 2211.732f, 72.61501f), pad_landing_frame), owning_building_guid = 33) - LocalObject(1955, Terminal.Constructor(Vector3(5617.269f, 2211.732f, 72.61501f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(1957, ProximityTerminal.Constructor(Vector3(5625.118f, 2227.783f, 70.674f), pad_landing_frame), owning_building_guid = 33) - LocalObject(1958, Terminal.Constructor(Vector3(5625.118f, 2227.783f, 70.674f), air_rearm_terminal), owning_building_guid = 33) - LocalObject(2261, ProximityTerminal.Constructor(Vector3(5541.982f, 2285.051f, 62.07201f), repair_silo), owning_building_guid = 33) - LocalObject(2262, Terminal.Constructor(Vector3(5541.982f, 2285.051f, 62.07201f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(2265, ProximityTerminal.Constructor(Vector3(5639.556f, 2193.585f, 62.07201f), repair_silo), owning_building_guid = 33) - LocalObject(2266, Terminal.Constructor(Vector3(5639.556f, 2193.585f, 62.07201f), ground_rearm_terminal), owning_building_guid = 33) - LocalObject(1588, FacilityTurret.Constructor(Vector3(5473.078f, 2163.244f, 70.72401f), manned_turret), owning_building_guid = 33) + LocalObject( + 2365, + SpawnTube.Constructor(Vector3(5536.897f, 2236.903f, 52.32201f), Vector3(0, 0, 272)), + owning_building_guid = 33 + ) + LocalObject( + 2366, + SpawnTube.Constructor(Vector3(5544.181f, 2236.648f, 52.32201f), Vector3(0, 0, 272)), + owning_building_guid = 33 + ) + LocalObject( + 2367, + SpawnTube.Constructor(Vector3(5551.468f, 2236.394f, 52.32201f), Vector3(0, 0, 272)), + owning_building_guid = 33 + ) + LocalObject( + 143, + ProximityTerminal.Constructor(Vector3(5563.173f, 2233.734f, 62.13201f), adv_med_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1655, + ProximityTerminal.Constructor(Vector3(5553.015f, 2259.763f, 52.32201f), medical_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1948, + ProximityTerminal.Constructor(Vector3(5501.862f, 2218.982f, 70.66401f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 1949, + Terminal.Constructor(Vector3(5501.862f, 2218.982f, 70.66401f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1951, + ProximityTerminal.Constructor(Vector3(5510.821f, 2234.902f, 72.65401f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 1952, + Terminal.Constructor(Vector3(5510.821f, 2234.902f, 72.65401f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1954, + ProximityTerminal.Constructor(Vector3(5617.269f, 2211.732f, 72.61501f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 1955, + Terminal.Constructor(Vector3(5617.269f, 2211.732f, 72.61501f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1957, + ProximityTerminal.Constructor(Vector3(5625.118f, 2227.783f, 70.674f), pad_landing_frame), + owning_building_guid = 33 + ) + LocalObject( + 1958, + Terminal.Constructor(Vector3(5625.118f, 2227.783f, 70.674f), air_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2261, + ProximityTerminal.Constructor(Vector3(5541.982f, 2285.051f, 62.07201f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 2262, + Terminal.Constructor(Vector3(5541.982f, 2285.051f, 62.07201f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 2265, + ProximityTerminal.Constructor(Vector3(5639.556f, 2193.585f, 62.07201f), repair_silo), + owning_building_guid = 33 + ) + LocalObject( + 2266, + Terminal.Constructor(Vector3(5639.556f, 2193.585f, 62.07201f), ground_rearm_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1588, + FacilityTurret.Constructor(Vector3(5473.078f, 2163.244f, 70.72401f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1588, 5042) - LocalObject(1589, FacilityTurret.Constructor(Vector3(5475.201f, 2256.5f, 70.72401f), manned_turret), owning_building_guid = 33) + LocalObject( + 1589, + FacilityTurret.Constructor(Vector3(5475.201f, 2256.5f, 70.72401f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1589, 5043) - LocalObject(1591, FacilityTurret.Constructor(Vector3(5519.79f, 2298.117f, 70.72401f), manned_turret), owning_building_guid = 33) + LocalObject( + 1591, + FacilityTurret.Constructor(Vector3(5519.79f, 2298.117f, 70.72401f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1591, 5044) - LocalObject(1594, FacilityTurret.Constructor(Vector3(5650.063f, 2157.072f, 70.72401f), manned_turret), owning_building_guid = 33) + LocalObject( + 1594, + FacilityTurret.Constructor(Vector3(5650.063f, 2157.072f, 70.72401f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1594, 5045) - LocalObject(1595, FacilityTurret.Constructor(Vector3(5654.791f, 2292.215f, 70.72401f), manned_turret), owning_building_guid = 33) + LocalObject( + 1595, + FacilityTurret.Constructor(Vector3(5654.791f, 2292.215f, 70.72401f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(1595, 5046) - LocalObject(862, ImplantTerminalMech.Constructor(Vector3(5496.663f, 2244.132f, 51.79901f)), owning_building_guid = 33) - LocalObject(854, Terminal.Constructor(Vector3(5496.681f, 2244.132f, 51.79901f), implant_terminal_interface), owning_building_guid = 33) + LocalObject( + 862, + ImplantTerminalMech.Constructor(Vector3(5496.663f, 2244.132f, 51.79901f)), + owning_building_guid = 33 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(5496.681f, 2244.132f, 51.79901f), implant_terminal_interface), + owning_building_guid = 33 + ) TerminalToInterface(862, 854) - LocalObject(863, ImplantTerminalMech.Constructor(Vector3(5512.01f, 2243.608f, 51.79901f)), owning_building_guid = 33) - LocalObject(855, Terminal.Constructor(Vector3(5511.992f, 2243.609f, 51.79901f), implant_terminal_interface), owning_building_guid = 33) + LocalObject( + 863, + ImplantTerminalMech.Constructor(Vector3(5512.01f, 2243.608f, 51.79901f)), + owning_building_guid = 33 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(5511.992f, 2243.609f, 51.79901f), implant_terminal_interface), + owning_building_guid = 33 + ) TerminalToInterface(863, 855) - LocalObject(2064, Painbox.Constructor(Vector3(5575.85f, 2236.904f, 76.35081f), painbox), owning_building_guid = 33) - LocalObject(2076, Painbox.Constructor(Vector3(5548.808f, 2247.013f, 56.39191f), painbox_continuous), owning_building_guid = 33) - LocalObject(2088, Painbox.Constructor(Vector3(5561.345f, 2235.998f, 76.55591f), painbox_door_radius), owning_building_guid = 33) - LocalObject(2116, Painbox.Constructor(Vector3(5530.622f, 2245.409f, 54.03621f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2117, Painbox.Constructor(Vector3(5537.935f, 2260.53f, 55.86291f), painbox_door_radius_continuous), owning_building_guid = 33) - LocalObject(2118, Painbox.Constructor(Vector3(5558.573f, 2242.456f, 54.67791f), painbox_door_radius_continuous), owning_building_guid = 33) + LocalObject( + 2064, + Painbox.Constructor(Vector3(5575.85f, 2236.904f, 76.35081f), painbox), + owning_building_guid = 33 + ) + LocalObject( + 2076, + Painbox.Constructor(Vector3(5548.808f, 2247.013f, 56.39191f), painbox_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2088, + Painbox.Constructor(Vector3(5561.345f, 2235.998f, 76.55591f), painbox_door_radius), + owning_building_guid = 33 + ) + LocalObject( + 2116, + Painbox.Constructor(Vector3(5530.622f, 2245.409f, 54.03621f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2117, + Painbox.Constructor(Vector3(5537.935f, 2260.53f, 55.86291f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 2118, + Painbox.Constructor(Vector3(5558.573f, 2242.456f, 54.67791f), painbox_door_radius_continuous), + owning_building_guid = 33 + ) LocalObject(280, Generator.Constructor(Vector3(5579.681f, 2235.2f, 71.02801f)), owning_building_guid = 33) - LocalObject(268, Terminal.Constructor(Vector3(5571.493f, 2235.439f, 72.32201f), gen_control), owning_building_guid = 33) + LocalObject( + 268, + Terminal.Constructor(Vector3(5571.493f, 2235.439f, 72.32201f), gen_control), + owning_building_guid = 33 + ) } Building15() def Building15(): Unit = { // Name: Xelas Type: cryo_facility GUID: 36, MapID: 15 - LocalBuilding("Xelas", 36, 15, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(6644f, 4402f, 56.31071f), Vector3(0f, 0f, 62f), cryo_facility))) - LocalObject(202, CaptureTerminal.Constructor(Vector3(6578.484f, 4405.022f, 46.31071f), capture_terminal), owning_building_guid = 36) + LocalBuilding( + "Xelas", + 36, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(6644f, 4402f, 56.31071f), + Vector3(0f, 0f, 62f), + cryo_facility + ) + ) + ) + LocalObject( + 202, + CaptureTerminal.Constructor(Vector3(6578.484f, 4405.022f, 46.31071f), capture_terminal), + owning_building_guid = 36 + ) LocalObject(551, Door.Constructor(Vector3(6564.263f, 4396.46f, 57.86171f)), owning_building_guid = 36) LocalObject(552, Door.Constructor(Vector3(6572.804f, 4412.523f, 65.82571f)), owning_building_guid = 36) LocalObject(553, Door.Constructor(Vector3(6596.275f, 4360.58f, 65.82571f)), owning_building_guid = 36) @@ -1222,15 +3422,60 @@ object Map10 { // Amerish LocalObject(2571, Door.Constructor(Vector3(6628.257f, 4415.663f, 48.16471f)), owning_building_guid = 36) LocalObject(2572, Door.Constructor(Vector3(6634.692f, 4412.241f, 48.16471f)), owning_building_guid = 36) LocalObject(2573, Door.Constructor(Vector3(6641.132f, 4408.817f, 48.16471f)), owning_building_guid = 36) - LocalObject(889, IFFLock.Constructor(Vector3(6619.796f, 4415.742f, 57.79271f), Vector3(0, 0, 298)), owning_building_guid = 36, door_guid = 841) - LocalObject(1103, IFFLock.Constructor(Vector3(6569.883f, 4404.102f, 47.64671f), Vector3(0, 0, 208)), owning_building_guid = 36, door_guid = 807) - LocalObject(1104, IFFLock.Constructor(Vector3(6571.686f, 4414.189f, 47.64671f), Vector3(0, 0, 28)), owning_building_guid = 36, door_guid = 808) - LocalObject(1105, IFFLock.Constructor(Vector3(6617.408f, 4398.94f, 67.76271f), Vector3(0, 0, 28)), owning_building_guid = 36, door_guid = 555) - LocalObject(1106, IFFLock.Constructor(Vector3(6626.99f, 4422.855f, 47.64671f), Vector3(0, 0, 298)), owning_building_guid = 36, door_guid = 817) - LocalObject(1107, IFFLock.Constructor(Vector3(6641.423f, 4405.583f, 67.76271f), Vector3(0, 0, 298)), owning_building_guid = 36, door_guid = 556) - LocalObject(1108, IFFLock.Constructor(Vector3(6651.087f, 4413.603f, 47.64671f), Vector3(0, 0, 118)), owning_building_guid = 36, door_guid = 822) - LocalObject(1109, IFFLock.Constructor(Vector3(6652.743f, 4423.615f, 40.14671f), Vector3(0, 0, 208)), owning_building_guid = 36, door_guid = 823) - LocalObject(1110, IFFLock.Constructor(Vector3(6738.833f, 4388.74f, 57.76271f), Vector3(0, 0, 28)), owning_building_guid = 36, door_guid = 561) + LocalObject( + 889, + IFFLock.Constructor(Vector3(6619.796f, 4415.742f, 57.79271f), Vector3(0, 0, 298)), + owning_building_guid = 36, + door_guid = 841 + ) + LocalObject( + 1103, + IFFLock.Constructor(Vector3(6569.883f, 4404.102f, 47.64671f), Vector3(0, 0, 208)), + owning_building_guid = 36, + door_guid = 807 + ) + LocalObject( + 1104, + IFFLock.Constructor(Vector3(6571.686f, 4414.189f, 47.64671f), Vector3(0, 0, 28)), + owning_building_guid = 36, + door_guid = 808 + ) + LocalObject( + 1105, + IFFLock.Constructor(Vector3(6617.408f, 4398.94f, 67.76271f), Vector3(0, 0, 28)), + owning_building_guid = 36, + door_guid = 555 + ) + LocalObject( + 1106, + IFFLock.Constructor(Vector3(6626.99f, 4422.855f, 47.64671f), Vector3(0, 0, 298)), + owning_building_guid = 36, + door_guid = 817 + ) + LocalObject( + 1107, + IFFLock.Constructor(Vector3(6641.423f, 4405.583f, 67.76271f), Vector3(0, 0, 298)), + owning_building_guid = 36, + door_guid = 556 + ) + LocalObject( + 1108, + IFFLock.Constructor(Vector3(6651.087f, 4413.603f, 47.64671f), Vector3(0, 0, 118)), + owning_building_guid = 36, + door_guid = 822 + ) + LocalObject( + 1109, + IFFLock.Constructor(Vector3(6652.743f, 4423.615f, 40.14671f), Vector3(0, 0, 208)), + owning_building_guid = 36, + door_guid = 823 + ) + LocalObject( + 1110, + IFFLock.Constructor(Vector3(6738.833f, 4388.74f, 57.76271f), Vector3(0, 0, 28)), + owning_building_guid = 36, + door_guid = 561 + ) LocalObject(1454, Locker.Constructor(Vector3(6605.244f, 4445.255f, 46.30571f)), owning_building_guid = 36) LocalObject(1455, Locker.Constructor(Vector3(6606.349f, 4444.667f, 46.30571f)), owning_building_guid = 36) LocalObject(1456, Locker.Constructor(Vector3(6607.463f, 4444.075f, 46.30571f)), owning_building_guid = 36) @@ -1260,88 +3505,331 @@ object Map10 { // Amerish LocalObject(1504, Locker.Constructor(Vector3(6660.221f, 4414.056f, 56.08171f)), owning_building_guid = 36) LocalObject(1505, Locker.Constructor(Vector3(6662.443f, 4412.875f, 56.31071f)), owning_building_guid = 36) LocalObject(1506, Locker.Constructor(Vector3(6663.356f, 4412.389f, 56.31071f)), owning_building_guid = 36) - LocalObject(227, Terminal.Constructor(Vector3(6595.4f, 4432.059f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(228, Terminal.Constructor(Vector3(6595.999f, 4430.101f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(229, Terminal.Constructor(Vector3(6601.362f, 4443.272f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(230, Terminal.Constructor(Vector3(6602.466f, 4426.662f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(231, Terminal.Constructor(Vector3(6603.321f, 4443.871f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(232, Terminal.Constructor(Vector3(6604.425f, 4427.26f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(233, Terminal.Constructor(Vector3(6609.788f, 4440.432f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(234, Terminal.Constructor(Vector3(6610.387f, 4438.474f, 46.30071f), cert_terminal), owning_building_guid = 36) - LocalObject(1788, Terminal.Constructor(Vector3(6630.881f, 4397.618f, 57.60571f), order_terminal), owning_building_guid = 36) - LocalObject(1789, Terminal.Constructor(Vector3(6639.577f, 4425.479f, 47.90071f), order_terminal), owning_building_guid = 36) - LocalObject(1790, Terminal.Constructor(Vector3(6642.922f, 4423.7f, 47.90071f), order_terminal), owning_building_guid = 36) - LocalObject(1791, Terminal.Constructor(Vector3(6646.217f, 4421.948f, 47.90071f), order_terminal), owning_building_guid = 36) - LocalObject(2485, Terminal.Constructor(Vector3(6587.213f, 4431.522f, 47.92371f), spawn_terminal), owning_building_guid = 36) - LocalObject(2486, Terminal.Constructor(Vector3(6625.745f, 4366.404f, 47.92371f), spawn_terminal), owning_building_guid = 36) - LocalObject(2487, Terminal.Constructor(Vector3(6630.597f, 4414.756f, 48.44471f), spawn_terminal), owning_building_guid = 36) - LocalObject(2488, Terminal.Constructor(Vector3(6637.03f, 4411.332f, 48.44471f), spawn_terminal), owning_building_guid = 36) - LocalObject(2489, Terminal.Constructor(Vector3(6643.47f, 4407.912f, 48.44471f), spawn_terminal), owning_building_guid = 36) - LocalObject(2490, Terminal.Constructor(Vector3(6656.938f, 4397.278f, 57.88971f), spawn_terminal), owning_building_guid = 36) - LocalObject(2491, Terminal.Constructor(Vector3(6686.412f, 4361.226f, 50.42371f), spawn_terminal), owning_building_guid = 36) - LocalObject(2657, Terminal.Constructor(Vector3(6717.455f, 4405.56f, 58.61571f), vehicle_terminal_combined), owning_building_guid = 36) - LocalObject(1640, VehicleSpawnPad.Constructor(Vector3(6711.131f, 4393.475f, 54.45771f), mb_pad_creation, Vector3(0, 0, 208)), owning_building_guid = 36, terminal_guid = 2657) + LocalObject( + 227, + Terminal.Constructor(Vector3(6595.4f, 4432.059f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(6595.999f, 4430.101f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(6601.362f, 4443.272f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 230, + Terminal.Constructor(Vector3(6602.466f, 4426.662f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(6603.321f, 4443.871f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(6604.425f, 4427.26f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(6609.788f, 4440.432f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 234, + Terminal.Constructor(Vector3(6610.387f, 4438.474f, 46.30071f), cert_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1788, + Terminal.Constructor(Vector3(6630.881f, 4397.618f, 57.60571f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1789, + Terminal.Constructor(Vector3(6639.577f, 4425.479f, 47.90071f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1790, + Terminal.Constructor(Vector3(6642.922f, 4423.7f, 47.90071f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1791, + Terminal.Constructor(Vector3(6646.217f, 4421.948f, 47.90071f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2485, + Terminal.Constructor(Vector3(6587.213f, 4431.522f, 47.92371f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2486, + Terminal.Constructor(Vector3(6625.745f, 4366.404f, 47.92371f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2487, + Terminal.Constructor(Vector3(6630.597f, 4414.756f, 48.44471f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2488, + Terminal.Constructor(Vector3(6637.03f, 4411.332f, 48.44471f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2489, + Terminal.Constructor(Vector3(6643.47f, 4407.912f, 48.44471f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2490, + Terminal.Constructor(Vector3(6656.938f, 4397.278f, 57.88971f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2491, + Terminal.Constructor(Vector3(6686.412f, 4361.226f, 50.42371f), spawn_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2657, + Terminal.Constructor(Vector3(6717.455f, 4405.56f, 58.61571f), vehicle_terminal_combined), + owning_building_guid = 36 + ) + LocalObject( + 1640, + VehicleSpawnPad.Constructor(Vector3(6711.131f, 4393.475f, 54.45771f), mb_pad_creation, Vector3(0, 0, 208)), + owning_building_guid = 36, + terminal_guid = 2657 + ) LocalObject(2304, ResourceSilo.Constructor(Vector3(6570.807f, 4372.661f, 63.32771f)), owning_building_guid = 36) - LocalObject(2384, SpawnTube.Constructor(Vector3(6628.98f, 4414.78f, 46.31071f), Vector3(0, 0, 298)), owning_building_guid = 36) - LocalObject(2385, SpawnTube.Constructor(Vector3(6635.415f, 4411.359f, 46.31071f), Vector3(0, 0, 298)), owning_building_guid = 36) - LocalObject(2386, SpawnTube.Constructor(Vector3(6641.853f, 4407.936f, 46.31071f), Vector3(0, 0, 298)), owning_building_guid = 36) - LocalObject(144, ProximityTerminal.Constructor(Vector3(6651.207f, 4400.414f, 56.12071f), adv_med_terminal), owning_building_guid = 36) - LocalObject(1660, ProximityTerminal.Constructor(Vector3(6653.488f, 4428.262f, 46.31071f), medical_terminal), owning_building_guid = 36) - LocalObject(1990, ProximityTerminal.Constructor(Vector3(6589.634f, 4414.033f, 64.65271f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1991, Terminal.Constructor(Vector3(6589.634f, 4414.033f, 64.65271f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1993, ProximityTerminal.Constructor(Vector3(6604.665f, 4424.413f, 66.64271f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1994, Terminal.Constructor(Vector3(6604.665f, 4424.413f, 66.64271f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1996, ProximityTerminal.Constructor(Vector3(6690.184f, 4356.925f, 66.60371f), pad_landing_frame), owning_building_guid = 36) - LocalObject(1997, Terminal.Constructor(Vector3(6690.184f, 4356.925f, 66.60371f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(1999, ProximityTerminal.Constructor(Vector3(6704.274f, 4367.911f, 64.66271f), pad_landing_frame), owning_building_guid = 36) - LocalObject(2000, Terminal.Constructor(Vector3(6704.274f, 4367.911f, 64.66271f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(2285, ProximityTerminal.Constructor(Vector3(6654.657f, 4455.828f, 56.06071f), repair_silo), owning_building_guid = 36) - LocalObject(2286, Terminal.Constructor(Vector3(6654.657f, 4455.828f, 56.06071f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(2289, ProximityTerminal.Constructor(Vector3(6702.26f, 4330.844f, 56.06071f), repair_silo), owning_building_guid = 36) - LocalObject(2290, Terminal.Constructor(Vector3(6702.26f, 4330.844f, 56.06071f), ground_rearm_terminal), owning_building_guid = 36) - LocalObject(1618, FacilityTurret.Constructor(Vector3(6539.33f, 4376.553f, 64.71271f), manned_turret), owning_building_guid = 36) + LocalObject( + 2384, + SpawnTube.Constructor(Vector3(6628.98f, 4414.78f, 46.31071f), Vector3(0, 0, 298)), + owning_building_guid = 36 + ) + LocalObject( + 2385, + SpawnTube.Constructor(Vector3(6635.415f, 4411.359f, 46.31071f), Vector3(0, 0, 298)), + owning_building_guid = 36 + ) + LocalObject( + 2386, + SpawnTube.Constructor(Vector3(6641.853f, 4407.936f, 46.31071f), Vector3(0, 0, 298)), + owning_building_guid = 36 + ) + LocalObject( + 144, + ProximityTerminal.Constructor(Vector3(6651.207f, 4400.414f, 56.12071f), adv_med_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1660, + ProximityTerminal.Constructor(Vector3(6653.488f, 4428.262f, 46.31071f), medical_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1990, + ProximityTerminal.Constructor(Vector3(6589.634f, 4414.033f, 64.65271f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1991, + Terminal.Constructor(Vector3(6589.634f, 4414.033f, 64.65271f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1993, + ProximityTerminal.Constructor(Vector3(6604.665f, 4424.413f, 66.64271f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1994, + Terminal.Constructor(Vector3(6604.665f, 4424.413f, 66.64271f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1996, + ProximityTerminal.Constructor(Vector3(6690.184f, 4356.925f, 66.60371f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 1997, + Terminal.Constructor(Vector3(6690.184f, 4356.925f, 66.60371f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1999, + ProximityTerminal.Constructor(Vector3(6704.274f, 4367.911f, 64.66271f), pad_landing_frame), + owning_building_guid = 36 + ) + LocalObject( + 2000, + Terminal.Constructor(Vector3(6704.274f, 4367.911f, 64.66271f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2285, + ProximityTerminal.Constructor(Vector3(6654.657f, 4455.828f, 56.06071f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2286, + Terminal.Constructor(Vector3(6654.657f, 4455.828f, 56.06071f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 2289, + ProximityTerminal.Constructor(Vector3(6702.26f, 4330.844f, 56.06071f), repair_silo), + owning_building_guid = 36 + ) + LocalObject( + 2290, + Terminal.Constructor(Vector3(6702.26f, 4330.844f, 56.06071f), ground_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1618, + FacilityTurret.Constructor(Vector3(6539.33f, 4376.553f, 64.71271f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1618, 5047) - LocalObject(1619, FacilityTurret.Constructor(Vector3(6582.118f, 4459.44f, 64.71271f), manned_turret), owning_building_guid = 36) + LocalObject( + 1619, + FacilityTurret.Constructor(Vector3(6582.118f, 4459.44f, 64.71271f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1619, 5048) - LocalObject(1620, FacilityTurret.Constructor(Vector3(6640.438f, 4477.299f, 64.71271f), manned_turret), owning_building_guid = 36) + LocalObject( + 1620, + FacilityTurret.Constructor(Vector3(6640.438f, 4477.299f, 64.71271f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1620, 5049) - LocalObject(1621, FacilityTurret.Constructor(Vector3(6695.697f, 4293.42f, 64.71271f), manned_turret), owning_building_guid = 36) + LocalObject( + 1621, + FacilityTurret.Constructor(Vector3(6695.697f, 4293.42f, 64.71271f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1621, 5050) - LocalObject(1622, FacilityTurret.Constructor(Vector3(6759.189f, 4412.814f, 64.71271f), manned_turret), owning_building_guid = 36) + LocalObject( + 1622, + FacilityTurret.Constructor(Vector3(6759.189f, 4412.814f, 64.71271f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(1622, 5051) - LocalObject(864, ImplantTerminalMech.Constructor(Vector3(6595.987f, 4438.916f, 45.78771f)), owning_building_guid = 36) - LocalObject(856, Terminal.Constructor(Vector3(6596.003f, 4438.907f, 45.78771f), implant_terminal_interface), owning_building_guid = 36) + LocalObject( + 864, + ImplantTerminalMech.Constructor(Vector3(6595.987f, 4438.916f, 45.78771f)), + owning_building_guid = 36 + ) + LocalObject( + 856, + Terminal.Constructor(Vector3(6596.003f, 4438.907f, 45.78771f), implant_terminal_interface), + owning_building_guid = 36 + ) TerminalToInterface(864, 856) - LocalObject(865, ImplantTerminalMech.Constructor(Vector3(6609.551f, 4431.717f, 45.78771f)), owning_building_guid = 36) - LocalObject(857, Terminal.Constructor(Vector3(6609.535f, 4431.726f, 45.78771f), implant_terminal_interface), owning_building_guid = 36) + LocalObject( + 865, + ImplantTerminalMech.Constructor(Vector3(6609.551f, 4431.717f, 45.78771f)), + owning_building_guid = 36 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(6609.535f, 4431.726f, 45.78771f), implant_terminal_interface), + owning_building_guid = 36 + ) TerminalToInterface(865, 857) - LocalObject(2067, Painbox.Constructor(Vector3(6663.99f, 4397.706f, 70.33951f), painbox), owning_building_guid = 36) - LocalObject(2079, Painbox.Constructor(Vector3(6644.117f, 4418.646f, 50.38061f), painbox_continuous), owning_building_guid = 36) - LocalObject(2091, Painbox.Constructor(Vector3(6650.557f, 4403.25f, 70.54461f), painbox_door_radius), owning_building_guid = 36) - LocalObject(2125, Painbox.Constructor(Vector3(6627.068f, 4425.178f, 48.02491f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2126, Painbox.Constructor(Vector3(6640.27f, 4435.562f, 49.85161f), painbox_door_radius_continuous), owning_building_guid = 36) - LocalObject(2127, Painbox.Constructor(Vector3(6650.896f, 4410.27f, 48.66661f), painbox_door_radius_continuous), owning_building_guid = 36) + LocalObject( + 2067, + Painbox.Constructor(Vector3(6663.99f, 4397.706f, 70.33951f), painbox), + owning_building_guid = 36 + ) + LocalObject( + 2079, + Painbox.Constructor(Vector3(6644.117f, 4418.646f, 50.38061f), painbox_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2091, + Painbox.Constructor(Vector3(6650.557f, 4403.25f, 70.54461f), painbox_door_radius), + owning_building_guid = 36 + ) + LocalObject( + 2125, + Painbox.Constructor(Vector3(6627.068f, 4425.178f, 48.02491f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2126, + Painbox.Constructor(Vector3(6640.27f, 4435.562f, 49.85161f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 2127, + Painbox.Constructor(Vector3(6650.896f, 4410.27f, 48.66661f), painbox_door_radius_continuous), + owning_building_guid = 36 + ) LocalObject(283, Generator.Constructor(Vector3(6666.688f, 4394.496f, 65.01671f)), owning_building_guid = 36) - LocalObject(271, Terminal.Constructor(Vector3(6659.432f, 4398.3f, 66.31071f), gen_control), owning_building_guid = 36) + LocalObject( + 271, + Terminal.Constructor(Vector3(6659.432f, 4398.3f, 66.31071f), gen_control), + owning_building_guid = 36 + ) } Building20900() def Building20900(): Unit = { // Name: GW_Amerish_N Type: hst GUID: 40, MapID: 20900 - LocalBuilding("GW_Amerish_N", 40, 20900, FoundationBuilder(WarpGate.Structure(Vector3(3570.37f, 6924.31f, 40.74f), hst))) + LocalBuilding( + "GW_Amerish_N", + 40, + 20900, + FoundationBuilder(WarpGate.Structure(Vector3(3570.37f, 6924.31f, 40.74f), hst)) + ) } Building20902() def Building20902(): Unit = { // Name: GW_Amerish_S Type: hst GUID: 41, MapID: 20902 - LocalBuilding("GW_Amerish_S", 41, 20902, FoundationBuilder(WarpGate.Structure(Vector3(3723.31f, 3311.24f, 41.48f), hst))) + LocalBuilding( + "GW_Amerish_S", + 41, + 20902, + FoundationBuilder(WarpGate.Structure(Vector3(3723.31f, 3311.24f, 41.48f), hst)) + ) } Building7() def Building7(): Unit = { // Name: Heyoka Type: tech_plant GUID: 43, MapID: 7 - LocalBuilding("Heyoka", 43, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4298f, 2404f, 47.49414f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(195, CaptureTerminal.Constructor(Vector3(4302.734f, 2359.911f, 62.59414f), capture_terminal), owning_building_guid = 43) + LocalBuilding( + "Heyoka", + 43, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(4298f, 2404f, 47.49414f), + Vector3(0f, 0f, 360f), + tech_plant + ) + ) + ) + LocalObject( + 195, + CaptureTerminal.Constructor(Vector3(4302.734f, 2359.911f, 62.59414f), capture_terminal), + owning_building_guid = 43 + ) LocalObject(379, Door.Constructor(Vector3(4226.54f, 2333.929f, 49.03614f)), owning_building_guid = 43) LocalObject(380, Door.Constructor(Vector3(4226.54f, 2352.121f, 56.99914f)), owning_building_guid = 43) LocalObject(381, Door.Constructor(Vector3(4226.54f, 2407.673f, 49.03614f)), owning_building_guid = 43) @@ -1380,16 +3868,66 @@ object Map10 { // Amerish LocalObject(2524, Door.Constructor(Vector3(4310.673f, 2361.733f, 41.94814f)), owning_building_guid = 43) LocalObject(2525, Door.Constructor(Vector3(4310.673f, 2369.026f, 41.94814f)), owning_building_guid = 43) LocalObject(2526, Door.Constructor(Vector3(4310.673f, 2376.315f, 41.94814f)), owning_building_guid = 43) - LocalObject(882, IFFLock.Constructor(Vector3(4341.357f, 2355.603f, 49.07414f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 834) - LocalObject(890, IFFLock.Constructor(Vector3(4255.256f, 2446.353f, 49.18214f), Vector3(0, 0, 360)), owning_building_guid = 43, door_guid = 562) - LocalObject(975, IFFLock.Constructor(Vector3(4257.186f, 2301.954f, 49.04614f), Vector3(0, 0, 270)), owning_building_guid = 43, door_guid = 383) - LocalObject(976, IFFLock.Constructor(Vector3(4292.428f, 2364.94f, 63.93014f), Vector3(0, 0, 0)), owning_building_guid = 43, door_guid = 669) - LocalObject(977, IFFLock.Constructor(Vector3(4306.554f, 2381.383f, 64.04014f), Vector3(0, 0, 0)), owning_building_guid = 43, door_guid = 387) - LocalObject(978, IFFLock.Constructor(Vector3(4316.428f, 2380.81f, 41.43014f), Vector3(0, 0, 0)), owning_building_guid = 43, door_guid = 677) - LocalObject(979, IFFLock.Constructor(Vector3(4317.496f, 2363.775f, 64.04014f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 388) - LocalObject(980, IFFLock.Constructor(Vector3(4319.572f, 2355.19f, 41.43014f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 676) - LocalObject(981, IFFLock.Constructor(Vector3(4327.572f, 2387.057f, 33.93014f), Vector3(0, 0, 180)), owning_building_guid = 43, door_guid = 678) - LocalObject(982, IFFLock.Constructor(Vector3(4329.06f, 2358.428f, 33.93014f), Vector3(0, 0, 270)), owning_building_guid = 43, door_guid = 679) + LocalObject( + 882, + IFFLock.Constructor(Vector3(4341.357f, 2355.603f, 49.07414f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 834 + ) + LocalObject( + 890, + IFFLock.Constructor(Vector3(4255.256f, 2446.353f, 49.18214f), Vector3(0, 0, 360)), + owning_building_guid = 43, + door_guid = 562 + ) + LocalObject( + 975, + IFFLock.Constructor(Vector3(4257.186f, 2301.954f, 49.04614f), Vector3(0, 0, 270)), + owning_building_guid = 43, + door_guid = 383 + ) + LocalObject( + 976, + IFFLock.Constructor(Vector3(4292.428f, 2364.94f, 63.93014f), Vector3(0, 0, 0)), + owning_building_guid = 43, + door_guid = 669 + ) + LocalObject( + 977, + IFFLock.Constructor(Vector3(4306.554f, 2381.383f, 64.04014f), Vector3(0, 0, 0)), + owning_building_guid = 43, + door_guid = 387 + ) + LocalObject( + 978, + IFFLock.Constructor(Vector3(4316.428f, 2380.81f, 41.43014f), Vector3(0, 0, 0)), + owning_building_guid = 43, + door_guid = 677 + ) + LocalObject( + 979, + IFFLock.Constructor(Vector3(4317.496f, 2363.775f, 64.04014f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 388 + ) + LocalObject( + 980, + IFFLock.Constructor(Vector3(4319.572f, 2355.19f, 41.43014f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 676 + ) + LocalObject( + 981, + IFFLock.Constructor(Vector3(4327.572f, 2387.057f, 33.93014f), Vector3(0, 0, 180)), + owning_building_guid = 43, + door_guid = 678 + ) + LocalObject( + 982, + IFFLock.Constructor(Vector3(4329.06f, 2358.428f, 33.93014f), Vector3(0, 0, 270)), + owning_building_guid = 43, + door_guid = 679 + ) LocalObject(1257, Locker.Constructor(Vector3(4321.563f, 2358.141f, 40.35514f)), owning_building_guid = 43) LocalObject(1258, Locker.Constructor(Vector3(4322.727f, 2358.141f, 40.35514f)), owning_building_guid = 43) LocalObject(1259, Locker.Constructor(Vector3(4323.874f, 2358.141f, 40.35514f)), owning_building_guid = 43) @@ -1402,72 +3940,290 @@ object Map10 { // Amerish LocalObject(1266, Locker.Constructor(Vector3(4342.055f, 2378.165f, 32.59414f)), owning_building_guid = 43) LocalObject(1267, Locker.Constructor(Vector3(4343.391f, 2378.165f, 32.59414f)), owning_building_guid = 43) LocalObject(1268, Locker.Constructor(Vector3(4344.728f, 2378.165f, 32.59414f)), owning_building_guid = 43) - LocalObject(145, Terminal.Constructor(Vector3(4302.673f, 2379.141f, 63.19714f), air_vehicle_terminal), owning_building_guid = 43) - LocalObject(1628, VehicleSpawnPad.Constructor(Vector3(4298.07f, 2399.835f, 60.07214f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 43, terminal_guid = 145) - LocalObject(146, Terminal.Constructor(Vector3(4314.605f, 2379.141f, 63.19714f), air_vehicle_terminal), owning_building_guid = 43) - LocalObject(1629, VehicleSpawnPad.Constructor(Vector3(4319.088f, 2399.835f, 60.07214f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 43, terminal_guid = 146) - LocalObject(1713, Terminal.Constructor(Vector3(4301.058f, 2377.486f, 53.92414f), order_terminal), owning_building_guid = 43) - LocalObject(1714, Terminal.Constructor(Vector3(4324.654f, 2363.408f, 41.68414f), order_terminal), owning_building_guid = 43) - LocalObject(1715, Terminal.Constructor(Vector3(4324.654f, 2367.139f, 41.68414f), order_terminal), owning_building_guid = 43) - LocalObject(1716, Terminal.Constructor(Vector3(4324.654f, 2370.928f, 41.68414f), order_terminal), owning_building_guid = 43) - LocalObject(2436, Terminal.Constructor(Vector3(4273.942f, 2308.591f, 41.65114f), spawn_terminal), owning_building_guid = 43) - LocalObject(2437, Terminal.Constructor(Vector3(4305.942f, 2356.591f, 34.15114f), spawn_terminal), owning_building_guid = 43) - LocalObject(2438, Terminal.Constructor(Vector3(4310.971f, 2359.243f, 42.22814f), spawn_terminal), owning_building_guid = 43) - LocalObject(2439, Terminal.Constructor(Vector3(4310.967f, 2366.535f, 42.22814f), spawn_terminal), owning_building_guid = 43) - LocalObject(2440, Terminal.Constructor(Vector3(4310.97f, 2373.823f, 42.22814f), spawn_terminal), owning_building_guid = 43) - LocalObject(2441, Terminal.Constructor(Vector3(4312.532f, 2407.215f, 59.51714f), spawn_terminal), owning_building_guid = 43) - LocalObject(2442, Terminal.Constructor(Vector3(4335.242f, 2383.639f, 54.17614f), spawn_terminal), owning_building_guid = 43) - LocalObject(2650, Terminal.Constructor(Vector3(4249.996f, 2363.423f, 33.30814f), ground_vehicle_terminal), owning_building_guid = 43) - LocalObject(1627, VehicleSpawnPad.Constructor(Vector3(4249.945f, 2374.339f, 25.03114f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 43, terminal_guid = 2650) + LocalObject( + 145, + Terminal.Constructor(Vector3(4302.673f, 2379.141f, 63.19714f), air_vehicle_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1628, + VehicleSpawnPad.Constructor(Vector3(4298.07f, 2399.835f, 60.07214f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 43, + terminal_guid = 145 + ) + LocalObject( + 146, + Terminal.Constructor(Vector3(4314.605f, 2379.141f, 63.19714f), air_vehicle_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1629, + VehicleSpawnPad.Constructor(Vector3(4319.088f, 2399.835f, 60.07214f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 43, + terminal_guid = 146 + ) + LocalObject( + 1713, + Terminal.Constructor(Vector3(4301.058f, 2377.486f, 53.92414f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1714, + Terminal.Constructor(Vector3(4324.654f, 2363.408f, 41.68414f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1715, + Terminal.Constructor(Vector3(4324.654f, 2367.139f, 41.68414f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1716, + Terminal.Constructor(Vector3(4324.654f, 2370.928f, 41.68414f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2436, + Terminal.Constructor(Vector3(4273.942f, 2308.591f, 41.65114f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2437, + Terminal.Constructor(Vector3(4305.942f, 2356.591f, 34.15114f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2438, + Terminal.Constructor(Vector3(4310.971f, 2359.243f, 42.22814f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2439, + Terminal.Constructor(Vector3(4310.967f, 2366.535f, 42.22814f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2440, + Terminal.Constructor(Vector3(4310.97f, 2373.823f, 42.22814f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2441, + Terminal.Constructor(Vector3(4312.532f, 2407.215f, 59.51714f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2442, + Terminal.Constructor(Vector3(4335.242f, 2383.639f, 54.17614f), spawn_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2650, + Terminal.Constructor(Vector3(4249.996f, 2363.423f, 33.30814f), ground_vehicle_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1627, + VehicleSpawnPad.Constructor(Vector3(4249.945f, 2374.339f, 25.03114f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 43, + terminal_guid = 2650 + ) LocalObject(2297, ResourceSilo.Constructor(Vector3(4359.752f, 2436.555f, 54.50214f)), owning_building_guid = 43) - LocalObject(2337, SpawnTube.Constructor(Vector3(4310.233f, 2360.683f, 40.09414f), Vector3(0, 0, 0)), owning_building_guid = 43) - LocalObject(2338, SpawnTube.Constructor(Vector3(4310.233f, 2367.974f, 40.09414f), Vector3(0, 0, 0)), owning_building_guid = 43) - LocalObject(2339, SpawnTube.Constructor(Vector3(4310.233f, 2375.262f, 40.09414f), Vector3(0, 0, 0)), owning_building_guid = 43) - LocalObject(1647, ProximityTerminal.Constructor(Vector3(4301.059f, 2366.901f, 52.59114f), medical_terminal), owning_building_guid = 43) - LocalObject(1648, ProximityTerminal.Constructor(Vector3(4338.444f, 2377.62f, 32.59414f), medical_terminal), owning_building_guid = 43) - LocalObject(1888, ProximityTerminal.Constructor(Vector3(4236.704f, 2379.661f, 55.68914f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1889, Terminal.Constructor(Vector3(4236.704f, 2379.661f, 55.68914f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(1891, ProximityTerminal.Constructor(Vector3(4256.98f, 2395.833f, 58.04414f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1892, Terminal.Constructor(Vector3(4256.98f, 2395.833f, 58.04414f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(1894, ProximityTerminal.Constructor(Vector3(4307.379f, 2339.474f, 62.94114f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1895, Terminal.Constructor(Vector3(4307.379f, 2339.474f, 62.94114f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(1897, ProximityTerminal.Constructor(Vector3(4323.534f, 2322.628f, 55.70214f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1898, Terminal.Constructor(Vector3(4323.534f, 2322.628f, 55.70214f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(1900, ProximityTerminal.Constructor(Vector3(4359.987f, 2361.855f, 58.14614f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1901, Terminal.Constructor(Vector3(4359.987f, 2361.855f, 58.14614f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(1903, ProximityTerminal.Constructor(Vector3(4366.28f, 2378.102f, 55.70214f), pad_landing_frame), owning_building_guid = 43) - LocalObject(1904, Terminal.Constructor(Vector3(4366.28f, 2378.102f, 55.70214f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(2229, ProximityTerminal.Constructor(Vector3(4298.309f, 2445.637f, 47.22264f), repair_silo), owning_building_guid = 43) - LocalObject(2230, Terminal.Constructor(Vector3(4298.309f, 2445.637f, 47.22264f), ground_rearm_terminal), owning_building_guid = 43) - LocalObject(2233, ProximityTerminal.Constructor(Vector3(4356.637f, 2311.208f, 47.24414f), repair_silo), owning_building_guid = 43) - LocalObject(2234, Terminal.Constructor(Vector3(4356.637f, 2311.208f, 47.24414f), ground_rearm_terminal), owning_building_guid = 43) - LocalObject(1557, FacilityTurret.Constructor(Vector3(4213.906f, 2502.855f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 2337, + SpawnTube.Constructor(Vector3(4310.233f, 2360.683f, 40.09414f), Vector3(0, 0, 0)), + owning_building_guid = 43 + ) + LocalObject( + 2338, + SpawnTube.Constructor(Vector3(4310.233f, 2367.974f, 40.09414f), Vector3(0, 0, 0)), + owning_building_guid = 43 + ) + LocalObject( + 2339, + SpawnTube.Constructor(Vector3(4310.233f, 2375.262f, 40.09414f), Vector3(0, 0, 0)), + owning_building_guid = 43 + ) + LocalObject( + 1647, + ProximityTerminal.Constructor(Vector3(4301.059f, 2366.901f, 52.59114f), medical_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1648, + ProximityTerminal.Constructor(Vector3(4338.444f, 2377.62f, 32.59414f), medical_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1888, + ProximityTerminal.Constructor(Vector3(4236.704f, 2379.661f, 55.68914f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1889, + Terminal.Constructor(Vector3(4236.704f, 2379.661f, 55.68914f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1891, + ProximityTerminal.Constructor(Vector3(4256.98f, 2395.833f, 58.04414f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1892, + Terminal.Constructor(Vector3(4256.98f, 2395.833f, 58.04414f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1894, + ProximityTerminal.Constructor(Vector3(4307.379f, 2339.474f, 62.94114f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1895, + Terminal.Constructor(Vector3(4307.379f, 2339.474f, 62.94114f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1897, + ProximityTerminal.Constructor(Vector3(4323.534f, 2322.628f, 55.70214f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1898, + Terminal.Constructor(Vector3(4323.534f, 2322.628f, 55.70214f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1900, + ProximityTerminal.Constructor(Vector3(4359.987f, 2361.855f, 58.14614f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1901, + Terminal.Constructor(Vector3(4359.987f, 2361.855f, 58.14614f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1903, + ProximityTerminal.Constructor(Vector3(4366.28f, 2378.102f, 55.70214f), pad_landing_frame), + owning_building_guid = 43 + ) + LocalObject( + 1904, + Terminal.Constructor(Vector3(4366.28f, 2378.102f, 55.70214f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2229, + ProximityTerminal.Constructor(Vector3(4298.309f, 2445.637f, 47.22264f), repair_silo), + owning_building_guid = 43 + ) + LocalObject( + 2230, + Terminal.Constructor(Vector3(4298.309f, 2445.637f, 47.22264f), ground_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 2233, + ProximityTerminal.Constructor(Vector3(4356.637f, 2311.208f, 47.24414f), repair_silo), + owning_building_guid = 43 + ) + LocalObject( + 2234, + Terminal.Constructor(Vector3(4356.637f, 2311.208f, 47.24414f), ground_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 1557, + FacilityTurret.Constructor(Vector3(4213.906f, 2502.855f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1557, 5052) - LocalObject(1558, FacilityTurret.Constructor(Vector3(4219.413f, 2304.665f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 1558, + FacilityTurret.Constructor(Vector3(4219.413f, 2304.665f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1558, 5053) - LocalObject(1559, FacilityTurret.Constructor(Vector3(4303.601f, 2502.855f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 1559, + FacilityTurret.Constructor(Vector3(4303.601f, 2502.855f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1559, 5054) - LocalObject(1560, FacilityTurret.Constructor(Vector3(4384.154f, 2304.657f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 1560, + FacilityTurret.Constructor(Vector3(4384.154f, 2304.657f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1560, 5055) - LocalObject(1561, FacilityTurret.Constructor(Vector3(4384.154f, 2442.398f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 1561, + FacilityTurret.Constructor(Vector3(4384.154f, 2442.398f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1561, 5056) - LocalObject(1562, FacilityTurret.Constructor(Vector3(4391.881f, 2369.423f, 55.99314f), manned_turret), owning_building_guid = 43) + LocalObject( + 1562, + FacilityTurret.Constructor(Vector3(4391.881f, 2369.423f, 55.99314f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(1562, 5057) - LocalObject(2060, Painbox.Constructor(Vector3(4323.737f, 2400.206f, 36.06744f), painbox), owning_building_guid = 43) - LocalObject(2072, Painbox.Constructor(Vector3(4318.832f, 2367.212f, 44.36404f), painbox_continuous), owning_building_guid = 43) - LocalObject(2084, Painbox.Constructor(Vector3(4325.7f, 2385.471f, 35.75354f), painbox_door_radius), owning_building_guid = 43) - LocalObject(2104, Painbox.Constructor(Vector3(4317.035f, 2354.278f, 42.22204f), painbox_door_radius_continuous), owning_building_guid = 43) - LocalObject(2105, Painbox.Constructor(Vector3(4317.861f, 2381.769f, 42.77034f), painbox_door_radius_continuous), owning_building_guid = 43) - LocalObject(2106, Painbox.Constructor(Vector3(4333.641f, 2374.57f, 43.67644f), painbox_door_radius_continuous), owning_building_guid = 43) + LocalObject( + 2060, + Painbox.Constructor(Vector3(4323.737f, 2400.206f, 36.06744f), painbox), + owning_building_guid = 43 + ) + LocalObject( + 2072, + Painbox.Constructor(Vector3(4318.832f, 2367.212f, 44.36404f), painbox_continuous), + owning_building_guid = 43 + ) + LocalObject( + 2084, + Painbox.Constructor(Vector3(4325.7f, 2385.471f, 35.75354f), painbox_door_radius), + owning_building_guid = 43 + ) + LocalObject( + 2104, + Painbox.Constructor(Vector3(4317.035f, 2354.278f, 42.22204f), painbox_door_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 2105, + Painbox.Constructor(Vector3(4317.861f, 2381.769f, 42.77034f), painbox_door_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 2106, + Painbox.Constructor(Vector3(4333.641f, 2374.57f, 43.67644f), painbox_door_radius_continuous), + owning_building_guid = 43 + ) LocalObject(276, Generator.Constructor(Vector3(4325.975f, 2403.555f, 31.30014f)), owning_building_guid = 43) - LocalObject(264, Terminal.Constructor(Vector3(4326.022f, 2395.363f, 32.59414f), gen_control), owning_building_guid = 43) + LocalObject( + 264, + Terminal.Constructor(Vector3(4326.022f, 2395.363f, 32.59414f), gen_control), + owning_building_guid = 43 + ) } Building14() def Building14(): Unit = { // Name: Tumas Type: tech_plant GUID: 46, MapID: 14 - LocalBuilding("Tumas", 46, 14, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(4610f, 6292f, 69.42805f), Vector3(0f, 0f, 89f), tech_plant))) - LocalObject(196, CaptureTerminal.Constructor(Vector3(4654.165f, 6295.964f, 84.52805f), capture_terminal), owning_building_guid = 46) + LocalBuilding( + "Tumas", + 46, + 14, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(4610f, 6292f, 69.42805f), Vector3(0f, 0f, 89f), tech_plant) + ) + ) + LocalObject( + 196, + CaptureTerminal.Constructor(Vector3(4654.165f, 6295.964f, 84.52805f), capture_terminal), + owning_building_guid = 46 + ) LocalObject(402, Door.Constructor(Vector3(4579.167f, 6317.101f, 70.97005f)), owning_building_guid = 46) LocalObject(403, Door.Constructor(Vector3(4579.485f, 6335.291f, 78.93304f)), owning_building_guid = 46) LocalObject(404, Door.Constructor(Vector3(4586.891f, 6220.933f, 78.93304f)), owning_building_guid = 46) @@ -1506,16 +4262,66 @@ object Map10 { // Amerish LocalObject(2529, Door.Constructor(Vector3(4637.902f, 6304.188f, 63.88205f)), owning_building_guid = 46) LocalObject(2530, Door.Constructor(Vector3(4645.19f, 6304.061f, 63.88205f)), owning_building_guid = 46) LocalObject(2531, Door.Constructor(Vector3(4652.482f, 6303.934f, 63.88205f)), owning_building_guid = 46) - LocalObject(883, IFFLock.Constructor(Vector3(4659.146f, 6334.506f, 71.00805f), Vector3(0, 0, 91)), owning_building_guid = 46, door_guid = 835) - LocalObject(891, IFFLock.Constructor(Vector3(4566.907f, 6250.001f, 71.11605f), Vector3(0, 0, 271)), owning_building_guid = 46, door_guid = 563) - LocalObject(990, IFFLock.Constructor(Vector3(4627.457f, 6321.272f, 55.86405f), Vector3(0, 0, 91)), owning_building_guid = 46, door_guid = 681) - LocalObject(991, IFFLock.Constructor(Vector3(4632.763f, 6300.158f, 85.97404f), Vector3(0, 0, 271)), owning_building_guid = 46, door_guid = 412) - LocalObject(992, IFFLock.Constructor(Vector3(4633.508f, 6310.021f, 63.36405f), Vector3(0, 0, 271)), owning_building_guid = 46, door_guid = 684) - LocalObject(993, IFFLock.Constructor(Vector3(4648.957f, 6285.747f, 85.86404f), Vector3(0, 0, 271)), owning_building_guid = 46, door_guid = 690) - LocalObject(995, IFFLock.Constructor(Vector3(4650.559f, 6310.791f, 85.97404f), Vector3(0, 0, 91)), owning_building_guid = 46, door_guid = 414) - LocalObject(997, IFFLock.Constructor(Vector3(4656.107f, 6322.26f, 55.86405f), Vector3(0, 0, 181)), owning_building_guid = 46, door_guid = 693) - LocalObject(999, IFFLock.Constructor(Vector3(4659.179f, 6312.717f, 63.36405f), Vector3(0, 0, 91)), owning_building_guid = 46, door_guid = 697) - LocalObject(1004, IFFLock.Constructor(Vector3(4711.318f, 6249.411f, 70.98005f), Vector3(0, 0, 181)), owning_building_guid = 46, door_guid = 422) + LocalObject( + 883, + IFFLock.Constructor(Vector3(4659.146f, 6334.506f, 71.00805f), Vector3(0, 0, 91)), + owning_building_guid = 46, + door_guid = 835 + ) + LocalObject( + 891, + IFFLock.Constructor(Vector3(4566.907f, 6250.001f, 71.11605f), Vector3(0, 0, 271)), + owning_building_guid = 46, + door_guid = 563 + ) + LocalObject( + 990, + IFFLock.Constructor(Vector3(4627.457f, 6321.272f, 55.86405f), Vector3(0, 0, 91)), + owning_building_guid = 46, + door_guid = 681 + ) + LocalObject( + 991, + IFFLock.Constructor(Vector3(4632.763f, 6300.158f, 85.97404f), Vector3(0, 0, 271)), + owning_building_guid = 46, + door_guid = 412 + ) + LocalObject( + 992, + IFFLock.Constructor(Vector3(4633.508f, 6310.021f, 63.36405f), Vector3(0, 0, 271)), + owning_building_guid = 46, + door_guid = 684 + ) + LocalObject( + 993, + IFFLock.Constructor(Vector3(4648.957f, 6285.747f, 85.86404f), Vector3(0, 0, 271)), + owning_building_guid = 46, + door_guid = 690 + ) + LocalObject( + 995, + IFFLock.Constructor(Vector3(4650.559f, 6310.791f, 85.97404f), Vector3(0, 0, 91)), + owning_building_guid = 46, + door_guid = 414 + ) + LocalObject( + 997, + IFFLock.Constructor(Vector3(4656.107f, 6322.26f, 55.86405f), Vector3(0, 0, 181)), + owning_building_guid = 46, + door_guid = 693 + ) + LocalObject( + 999, + IFFLock.Constructor(Vector3(4659.179f, 6312.717f, 63.36405f), Vector3(0, 0, 91)), + owning_building_guid = 46, + door_guid = 697 + ) + LocalObject( + 1004, + IFFLock.Constructor(Vector3(4711.318f, 6249.411f, 70.98005f), Vector3(0, 0, 181)), + owning_building_guid = 46, + door_guid = 422 + ) LocalObject(1277, Locker.Constructor(Vector3(4636.428f, 6325.738f, 54.52805f)), owning_building_guid = 46) LocalObject(1278, Locker.Constructor(Vector3(4636.451f, 6327.062f, 54.52805f)), owning_building_guid = 46) LocalObject(1279, Locker.Constructor(Vector3(4636.474f, 6328.397f, 54.52805f)), owning_building_guid = 46) @@ -1528,72 +4334,295 @@ object Map10 { // Amerish LocalObject(1286, Locker.Constructor(Vector3(4656.284f, 6315.923f, 62.28905f)), owning_building_guid = 46) LocalObject(1287, Locker.Constructor(Vector3(4656.304f, 6317.07f, 62.28905f)), owning_building_guid = 46) LocalObject(1288, Locker.Constructor(Vector3(4656.324f, 6318.219f, 62.28905f)), owning_building_guid = 46) - LocalObject(147, Terminal.Constructor(Vector3(4634.937f, 6296.238f, 85.13105f), air_vehicle_terminal), owning_building_guid = 46) - LocalObject(1630, VehicleSpawnPad.Constructor(Vector3(4614.166f, 6291.997f, 82.00605f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 46, terminal_guid = 147) - LocalObject(148, Terminal.Constructor(Vector3(4635.145f, 6308.168f, 85.13105f), air_vehicle_terminal), owning_building_guid = 46) - LocalObject(1631, VehicleSpawnPad.Constructor(Vector3(4614.532f, 6313.012f, 82.00605f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 46, terminal_guid = 148) - LocalObject(1720, Terminal.Constructor(Vector3(4636.563f, 6294.595f, 75.85805f), order_terminal), owning_building_guid = 46) - LocalObject(1721, Terminal.Constructor(Vector3(4643.532f, 6318.073f, 63.61805f), order_terminal), owning_building_guid = 46) - LocalObject(1722, Terminal.Constructor(Vector3(4647.321f, 6318.007f, 63.61805f), order_terminal), owning_building_guid = 46) - LocalObject(1723, Terminal.Constructor(Vector3(4651.051f, 6317.941f, 63.61805f), order_terminal), owning_building_guid = 46) - LocalObject(2443, Terminal.Constructor(Vector3(4607.039f, 6306.586f, 81.45105f), spawn_terminal), owning_building_guid = 46) - LocalObject(2444, Terminal.Constructor(Vector3(4631.008f, 6328.881f, 76.11005f), spawn_terminal), owning_building_guid = 46) - LocalObject(2445, Terminal.Constructor(Vector3(4640.399f, 6304.441f, 64.16205f), spawn_terminal), owning_building_guid = 46) - LocalObject(2447, Terminal.Constructor(Vector3(4647.686f, 6304.311f, 64.16205f), spawn_terminal), owning_building_guid = 46) - LocalObject(2448, Terminal.Constructor(Vector3(4654.977f, 6304.188f, 64.16205f), spawn_terminal), owning_building_guid = 46) - LocalObject(2449, Terminal.Constructor(Vector3(4657.541f, 6299.113f, 56.08504f), spawn_terminal), owning_building_guid = 46) - LocalObject(2455, Terminal.Constructor(Vector3(4704.975f, 6266.281f, 63.58505f), spawn_terminal), owning_building_guid = 46) - LocalObject(2652, Terminal.Constructor(Vector3(4649.733f, 6243.295f, 55.24205f), ground_vehicle_terminal), owning_building_guid = 46) - LocalObject(1633, VehicleSpawnPad.Constructor(Vector3(4638.818f, 6243.435f, 46.96505f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 46, terminal_guid = 2652) + LocalObject( + 147, + Terminal.Constructor(Vector3(4634.937f, 6296.238f, 85.13105f), air_vehicle_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1630, + VehicleSpawnPad.Constructor(Vector3(4614.166f, 6291.997f, 82.00605f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 46, + terminal_guid = 147 + ) + LocalObject( + 148, + Terminal.Constructor(Vector3(4635.145f, 6308.168f, 85.13105f), air_vehicle_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1631, + VehicleSpawnPad.Constructor(Vector3(4614.532f, 6313.012f, 82.00605f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 46, + terminal_guid = 148 + ) + LocalObject( + 1720, + Terminal.Constructor(Vector3(4636.563f, 6294.595f, 75.85805f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1721, + Terminal.Constructor(Vector3(4643.532f, 6318.073f, 63.61805f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1722, + Terminal.Constructor(Vector3(4647.321f, 6318.007f, 63.61805f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1723, + Terminal.Constructor(Vector3(4651.051f, 6317.941f, 63.61805f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2443, + Terminal.Constructor(Vector3(4607.039f, 6306.586f, 81.45105f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2444, + Terminal.Constructor(Vector3(4631.008f, 6328.881f, 76.11005f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2445, + Terminal.Constructor(Vector3(4640.399f, 6304.441f, 64.16205f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2447, + Terminal.Constructor(Vector3(4647.686f, 6304.311f, 64.16205f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2448, + Terminal.Constructor(Vector3(4654.977f, 6304.188f, 64.16205f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2449, + Terminal.Constructor(Vector3(4657.541f, 6299.113f, 56.08504f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2455, + Terminal.Constructor(Vector3(4704.975f, 6266.281f, 63.58505f), spawn_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2652, + Terminal.Constructor(Vector3(4649.733f, 6243.295f, 55.24205f), ground_vehicle_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1633, + VehicleSpawnPad.Constructor(Vector3(4638.818f, 6243.435f, 46.96505f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 46, + terminal_guid = 2652 + ) LocalObject(2298, ResourceSilo.Constructor(Vector3(4578.528f, 6354.311f, 76.43605f)), owning_building_guid = 46) - LocalObject(2342, SpawnTube.Constructor(Vector3(4638.947f, 6303.729f, 62.02805f), Vector3(0, 0, 271)), owning_building_guid = 46) - LocalObject(2343, SpawnTube.Constructor(Vector3(4646.234f, 6303.603f, 62.02805f), Vector3(0, 0, 271)), owning_building_guid = 46) - LocalObject(2344, SpawnTube.Constructor(Vector3(4653.524f, 6303.475f, 62.02805f), Vector3(0, 0, 271)), owning_building_guid = 46) - LocalObject(1649, ProximityTerminal.Constructor(Vector3(4637.082f, 6331.978f, 54.52805f), medical_terminal), owning_building_guid = 46) - LocalObject(1650, ProximityTerminal.Constructor(Vector3(4647.147f, 6294.411f, 74.52505f), medical_terminal), owning_building_guid = 46) - LocalObject(1906, ProximityTerminal.Constructor(Vector3(4617.45f, 6250.844f, 79.97805f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1907, Terminal.Constructor(Vector3(4617.45f, 6250.844f, 79.97805f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(1912, ProximityTerminal.Constructor(Vector3(4633.266f, 6230.289f, 77.62305f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1913, Terminal.Constructor(Vector3(4633.266f, 6230.289f, 77.62305f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(1915, ProximityTerminal.Constructor(Vector3(4637.086f, 6359.817f, 77.63605f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1916, Terminal.Constructor(Vector3(4637.086f, 6359.817f, 77.63605f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(1918, ProximityTerminal.Constructor(Vector3(4653.22f, 6353.242f, 80.08005f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1919, Terminal.Constructor(Vector3(4653.22f, 6353.242f, 80.08005f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(1924, ProximityTerminal.Constructor(Vector3(4674.68f, 6300.251f, 84.87505f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1925, Terminal.Constructor(Vector3(4674.68f, 6300.251f, 84.87505f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(1927, ProximityTerminal.Constructor(Vector3(4691.805f, 6316.11f, 77.63605f), pad_landing_frame), owning_building_guid = 46) - LocalObject(1928, Terminal.Constructor(Vector3(4691.805f, 6316.11f, 77.63605f), air_rearm_terminal), owning_building_guid = 46) - LocalObject(2237, ProximityTerminal.Constructor(Vector3(4568.375f, 6293.035f, 69.15655f), repair_silo), owning_building_guid = 46) - LocalObject(2238, Terminal.Constructor(Vector3(4568.375f, 6293.035f, 69.15655f), ground_rearm_terminal), owning_building_guid = 46) - LocalObject(2249, ProximityTerminal.Constructor(Vector3(4703.802f, 6349.008f, 69.17805f), repair_silo), owning_building_guid = 46) - LocalObject(2250, Terminal.Constructor(Vector3(4703.802f, 6349.008f, 69.17805f), ground_rearm_terminal), owning_building_guid = 46) - LocalObject(1563, FacilityTurret.Constructor(Vector3(4509.692f, 6209.644f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 2342, + SpawnTube.Constructor(Vector3(4638.947f, 6303.729f, 62.02805f), Vector3(0, 0, 271)), + owning_building_guid = 46 + ) + LocalObject( + 2343, + SpawnTube.Constructor(Vector3(4646.234f, 6303.603f, 62.02805f), Vector3(0, 0, 271)), + owning_building_guid = 46 + ) + LocalObject( + 2344, + SpawnTube.Constructor(Vector3(4653.524f, 6303.475f, 62.02805f), Vector3(0, 0, 271)), + owning_building_guid = 46 + ) + LocalObject( + 1649, + ProximityTerminal.Constructor(Vector3(4637.082f, 6331.978f, 54.52805f), medical_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1650, + ProximityTerminal.Constructor(Vector3(4647.147f, 6294.411f, 74.52505f), medical_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1906, + ProximityTerminal.Constructor(Vector3(4617.45f, 6250.844f, 79.97805f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1907, + Terminal.Constructor(Vector3(4617.45f, 6250.844f, 79.97805f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1912, + ProximityTerminal.Constructor(Vector3(4633.266f, 6230.289f, 77.62305f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1913, + Terminal.Constructor(Vector3(4633.266f, 6230.289f, 77.62305f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1915, + ProximityTerminal.Constructor(Vector3(4637.086f, 6359.817f, 77.63605f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1916, + Terminal.Constructor(Vector3(4637.086f, 6359.817f, 77.63605f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1918, + ProximityTerminal.Constructor(Vector3(4653.22f, 6353.242f, 80.08005f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1919, + Terminal.Constructor(Vector3(4653.22f, 6353.242f, 80.08005f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1924, + ProximityTerminal.Constructor(Vector3(4674.68f, 6300.251f, 84.87505f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1925, + Terminal.Constructor(Vector3(4674.68f, 6300.251f, 84.87505f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1927, + ProximityTerminal.Constructor(Vector3(4691.805f, 6316.11f, 77.63605f), pad_landing_frame), + owning_building_guid = 46 + ) + LocalObject( + 1928, + Terminal.Constructor(Vector3(4691.805f, 6316.11f, 77.63605f), air_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2237, + ProximityTerminal.Constructor(Vector3(4568.375f, 6293.035f, 69.15655f), repair_silo), + owning_building_guid = 46 + ) + LocalObject( + 2238, + Terminal.Constructor(Vector3(4568.375f, 6293.035f, 69.15655f), ground_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 2249, + ProximityTerminal.Constructor(Vector3(4703.802f, 6349.008f, 69.17805f), repair_silo), + owning_building_guid = 46 + ) + LocalObject( + 2250, + Terminal.Constructor(Vector3(4703.802f, 6349.008f, 69.17805f), ground_rearm_terminal), + owning_building_guid = 46 + ) + LocalObject( + 1563, + FacilityTurret.Constructor(Vector3(4509.692f, 6209.644f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1563, 5058) - LocalObject(1564, FacilityTurret.Constructor(Vector3(4511.258f, 6299.325f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 1564, + FacilityTurret.Constructor(Vector3(4511.258f, 6299.325f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1564, 5059) - LocalObject(1565, FacilityTurret.Constructor(Vector3(4573.111f, 6378.811f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 1565, + FacilityTurret.Constructor(Vector3(4573.111f, 6378.811f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1565, 5060) - LocalObject(1569, FacilityTurret.Constructor(Vector3(4646.21f, 6385.263f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 1569, + FacilityTurret.Constructor(Vector3(4646.21f, 6385.263f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1569, 5061) - LocalObject(1570, FacilityTurret.Constructor(Vector3(4707.948f, 6211.691f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 1570, + FacilityTurret.Constructor(Vector3(4707.948f, 6211.691f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1570, 5062) - LocalObject(1571, FacilityTurret.Constructor(Vector3(4710.832f, 6376.407f, 77.92705f), manned_turret), owning_building_guid = 46) + LocalObject( + 1571, + FacilityTurret.Constructor(Vector3(4710.832f, 6376.407f, 77.92705f), manned_turret), + owning_building_guid = 46 + ) TurretToWeapon(1571, 5063) - LocalObject(2061, Painbox.Constructor(Vector3(4614.242f, 6317.667f, 58.00135f), painbox), owning_building_guid = 46) - LocalObject(2073, Painbox.Constructor(Vector3(4647.146f, 6312.187f, 66.29795f), painbox_continuous), owning_building_guid = 46) - LocalObject(2085, Painbox.Constructor(Vector3(4629.009f, 6319.372f, 57.68745f), painbox_door_radius), owning_building_guid = 46) - LocalObject(2107, Painbox.Constructor(Vector3(4632.574f, 6311.47f, 64.70425f), painbox_door_radius_continuous), owning_building_guid = 46) - LocalObject(2108, Painbox.Constructor(Vector3(4640.048f, 6327.122f, 65.61034f), painbox_door_radius_continuous), owning_building_guid = 46) - LocalObject(2109, Painbox.Constructor(Vector3(4660.046f, 6310.164f, 64.15594f), painbox_door_radius_continuous), owning_building_guid = 46) + LocalObject( + 2061, + Painbox.Constructor(Vector3(4614.242f, 6317.667f, 58.00135f), painbox), + owning_building_guid = 46 + ) + LocalObject( + 2073, + Painbox.Constructor(Vector3(4647.146f, 6312.187f, 66.29795f), painbox_continuous), + owning_building_guid = 46 + ) + LocalObject( + 2085, + Painbox.Constructor(Vector3(4629.009f, 6319.372f, 57.68745f), painbox_door_radius), + owning_building_guid = 46 + ) + LocalObject( + 2107, + Painbox.Constructor(Vector3(4632.574f, 6311.47f, 64.70425f), painbox_door_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 2108, + Painbox.Constructor(Vector3(4640.048f, 6327.122f, 65.61034f), painbox_door_radius_continuous), + owning_building_guid = 46 + ) + LocalObject( + 2109, + Painbox.Constructor(Vector3(4660.046f, 6310.164f, 64.15594f), painbox_door_radius_continuous), + owning_building_guid = 46 + ) LocalObject(277, Generator.Constructor(Vector3(4610.933f, 6319.963f, 53.23405f)), owning_building_guid = 46) - LocalObject(265, Terminal.Constructor(Vector3(4619.125f, 6319.867f, 54.52805f), gen_control), owning_building_guid = 46) + LocalObject( + 265, + Terminal.Constructor(Vector3(4619.125f, 6319.867f, 54.52805f), gen_control), + owning_building_guid = 46 + ) } Building10() def Building10(): Unit = { // Name: Mekala Type: tech_plant GUID: 49, MapID: 10 - LocalBuilding("Mekala", 49, 10, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(5986f, 3002f, 58.83252f), Vector3(0f, 0f, 360f), tech_plant))) - LocalObject(200, CaptureTerminal.Constructor(Vector3(5990.734f, 2957.911f, 73.93253f), capture_terminal), owning_building_guid = 49) + LocalBuilding( + "Mekala", + 49, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(5986f, 3002f, 58.83252f), + Vector3(0f, 0f, 360f), + tech_plant + ) + ) + ) + LocalObject( + 200, + CaptureTerminal.Constructor(Vector3(5990.734f, 2957.911f, 73.93253f), capture_terminal), + owning_building_guid = 49 + ) LocalObject(499, Door.Constructor(Vector3(5914.54f, 2931.929f, 60.37452f)), owning_building_guid = 49) LocalObject(500, Door.Constructor(Vector3(5914.54f, 2950.121f, 68.33752f)), owning_building_guid = 49) LocalObject(501, Door.Constructor(Vector3(5914.54f, 3005.673f, 60.37452f)), owning_building_guid = 49) @@ -1632,16 +4661,66 @@ object Map10 { // Amerish LocalObject(2557, Door.Constructor(Vector3(5998.673f, 2959.733f, 53.28652f)), owning_building_guid = 49) LocalObject(2558, Door.Constructor(Vector3(5998.673f, 2967.026f, 53.28652f)), owning_building_guid = 49) LocalObject(2559, Door.Constructor(Vector3(5998.673f, 2974.315f, 53.28652f)), owning_building_guid = 49) - LocalObject(887, IFFLock.Constructor(Vector3(6029.357f, 2953.603f, 60.41253f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 839) - LocalObject(892, IFFLock.Constructor(Vector3(5943.256f, 3044.353f, 60.52052f), Vector3(0, 0, 360)), owning_building_guid = 49, door_guid = 564) - LocalObject(1065, IFFLock.Constructor(Vector3(5945.186f, 2899.954f, 60.38452f), Vector3(0, 0, 270)), owning_building_guid = 49, door_guid = 503) - LocalObject(1066, IFFLock.Constructor(Vector3(5980.428f, 2962.94f, 75.26852f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 774) - LocalObject(1067, IFFLock.Constructor(Vector3(5994.554f, 2979.383f, 75.37852f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 506) - LocalObject(1068, IFFLock.Constructor(Vector3(6004.428f, 2978.81f, 52.76852f), Vector3(0, 0, 0)), owning_building_guid = 49, door_guid = 782) - LocalObject(1069, IFFLock.Constructor(Vector3(6005.496f, 2961.775f, 75.37852f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 507) - LocalObject(1070, IFFLock.Constructor(Vector3(6007.572f, 2953.19f, 52.76852f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 781) - LocalObject(1071, IFFLock.Constructor(Vector3(6015.572f, 2985.057f, 45.26852f), Vector3(0, 0, 180)), owning_building_guid = 49, door_guid = 783) - LocalObject(1072, IFFLock.Constructor(Vector3(6017.06f, 2956.428f, 45.26852f), Vector3(0, 0, 270)), owning_building_guid = 49, door_guid = 784) + LocalObject( + 887, + IFFLock.Constructor(Vector3(6029.357f, 2953.603f, 60.41253f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 839 + ) + LocalObject( + 892, + IFFLock.Constructor(Vector3(5943.256f, 3044.353f, 60.52052f), Vector3(0, 0, 360)), + owning_building_guid = 49, + door_guid = 564 + ) + LocalObject( + 1065, + IFFLock.Constructor(Vector3(5945.186f, 2899.954f, 60.38452f), Vector3(0, 0, 270)), + owning_building_guid = 49, + door_guid = 503 + ) + LocalObject( + 1066, + IFFLock.Constructor(Vector3(5980.428f, 2962.94f, 75.26852f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 774 + ) + LocalObject( + 1067, + IFFLock.Constructor(Vector3(5994.554f, 2979.383f, 75.37852f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 506 + ) + LocalObject( + 1068, + IFFLock.Constructor(Vector3(6004.428f, 2978.81f, 52.76852f), Vector3(0, 0, 0)), + owning_building_guid = 49, + door_guid = 782 + ) + LocalObject( + 1069, + IFFLock.Constructor(Vector3(6005.496f, 2961.775f, 75.37852f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 507 + ) + LocalObject( + 1070, + IFFLock.Constructor(Vector3(6007.572f, 2953.19f, 52.76852f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 781 + ) + LocalObject( + 1071, + IFFLock.Constructor(Vector3(6015.572f, 2985.057f, 45.26852f), Vector3(0, 0, 180)), + owning_building_guid = 49, + door_guid = 783 + ) + LocalObject( + 1072, + IFFLock.Constructor(Vector3(6017.06f, 2956.428f, 45.26852f), Vector3(0, 0, 270)), + owning_building_guid = 49, + door_guid = 784 + ) LocalObject(1398, Locker.Constructor(Vector3(6009.563f, 2956.141f, 51.69352f)), owning_building_guid = 49) LocalObject(1399, Locker.Constructor(Vector3(6010.727f, 2956.141f, 51.69352f)), owning_building_guid = 49) LocalObject(1400, Locker.Constructor(Vector3(6011.874f, 2956.141f, 51.69352f)), owning_building_guid = 49) @@ -1654,82 +4733,320 @@ object Map10 { // Amerish LocalObject(1407, Locker.Constructor(Vector3(6030.055f, 2976.165f, 43.93253f)), owning_building_guid = 49) LocalObject(1408, Locker.Constructor(Vector3(6031.391f, 2976.165f, 43.93253f)), owning_building_guid = 49) LocalObject(1409, Locker.Constructor(Vector3(6032.728f, 2976.165f, 43.93253f)), owning_building_guid = 49) - LocalObject(149, Terminal.Constructor(Vector3(5990.673f, 2977.141f, 74.53552f), air_vehicle_terminal), owning_building_guid = 49) - LocalObject(1637, VehicleSpawnPad.Constructor(Vector3(5986.07f, 2997.835f, 71.41052f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 49, terminal_guid = 149) - LocalObject(150, Terminal.Constructor(Vector3(6002.605f, 2977.141f, 74.53552f), air_vehicle_terminal), owning_building_guid = 49) - LocalObject(1638, VehicleSpawnPad.Constructor(Vector3(6007.088f, 2997.835f, 71.41052f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 49, terminal_guid = 150) - LocalObject(1764, Terminal.Constructor(Vector3(5989.058f, 2975.486f, 65.26252f), order_terminal), owning_building_guid = 49) - LocalObject(1765, Terminal.Constructor(Vector3(6012.654f, 2961.408f, 53.02252f), order_terminal), owning_building_guid = 49) - LocalObject(1766, Terminal.Constructor(Vector3(6012.654f, 2965.139f, 53.02252f), order_terminal), owning_building_guid = 49) - LocalObject(1767, Terminal.Constructor(Vector3(6012.654f, 2968.928f, 53.02252f), order_terminal), owning_building_guid = 49) - LocalObject(2469, Terminal.Constructor(Vector3(5961.942f, 2906.591f, 52.98952f), spawn_terminal), owning_building_guid = 49) - LocalObject(2470, Terminal.Constructor(Vector3(5993.942f, 2954.591f, 45.48952f), spawn_terminal), owning_building_guid = 49) - LocalObject(2471, Terminal.Constructor(Vector3(5998.971f, 2957.243f, 53.56652f), spawn_terminal), owning_building_guid = 49) - LocalObject(2472, Terminal.Constructor(Vector3(5998.967f, 2964.535f, 53.56652f), spawn_terminal), owning_building_guid = 49) - LocalObject(2473, Terminal.Constructor(Vector3(5998.97f, 2971.823f, 53.56652f), spawn_terminal), owning_building_guid = 49) - LocalObject(2474, Terminal.Constructor(Vector3(6000.532f, 3005.215f, 70.85552f), spawn_terminal), owning_building_guid = 49) - LocalObject(2475, Terminal.Constructor(Vector3(6023.242f, 2981.639f, 65.51453f), spawn_terminal), owning_building_guid = 49) - LocalObject(2655, Terminal.Constructor(Vector3(5937.996f, 2961.423f, 44.64652f), ground_vehicle_terminal), owning_building_guid = 49) - LocalObject(1636, VehicleSpawnPad.Constructor(Vector3(5937.945f, 2972.339f, 36.36952f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 49, terminal_guid = 2655) + LocalObject( + 149, + Terminal.Constructor(Vector3(5990.673f, 2977.141f, 74.53552f), air_vehicle_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1637, + VehicleSpawnPad.Constructor(Vector3(5986.07f, 2997.835f, 71.41052f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 49, + terminal_guid = 149 + ) + LocalObject( + 150, + Terminal.Constructor(Vector3(6002.605f, 2977.141f, 74.53552f), air_vehicle_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1638, + VehicleSpawnPad.Constructor(Vector3(6007.088f, 2997.835f, 71.41052f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 49, + terminal_guid = 150 + ) + LocalObject( + 1764, + Terminal.Constructor(Vector3(5989.058f, 2975.486f, 65.26252f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1765, + Terminal.Constructor(Vector3(6012.654f, 2961.408f, 53.02252f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1766, + Terminal.Constructor(Vector3(6012.654f, 2965.139f, 53.02252f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1767, + Terminal.Constructor(Vector3(6012.654f, 2968.928f, 53.02252f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2469, + Terminal.Constructor(Vector3(5961.942f, 2906.591f, 52.98952f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2470, + Terminal.Constructor(Vector3(5993.942f, 2954.591f, 45.48952f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2471, + Terminal.Constructor(Vector3(5998.971f, 2957.243f, 53.56652f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2472, + Terminal.Constructor(Vector3(5998.967f, 2964.535f, 53.56652f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2473, + Terminal.Constructor(Vector3(5998.97f, 2971.823f, 53.56652f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2474, + Terminal.Constructor(Vector3(6000.532f, 3005.215f, 70.85552f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2475, + Terminal.Constructor(Vector3(6023.242f, 2981.639f, 65.51453f), spawn_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2655, + Terminal.Constructor(Vector3(5937.996f, 2961.423f, 44.64652f), ground_vehicle_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1636, + VehicleSpawnPad.Constructor(Vector3(5937.945f, 2972.339f, 36.36952f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 49, + terminal_guid = 2655 + ) LocalObject(2302, ResourceSilo.Constructor(Vector3(6047.752f, 3034.555f, 65.84052f)), owning_building_guid = 49) - LocalObject(2370, SpawnTube.Constructor(Vector3(5998.233f, 2958.683f, 51.43252f), Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(2371, SpawnTube.Constructor(Vector3(5998.233f, 2965.974f, 51.43252f), Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(2372, SpawnTube.Constructor(Vector3(5998.233f, 2973.262f, 51.43252f), Vector3(0, 0, 0)), owning_building_guid = 49) - LocalObject(1656, ProximityTerminal.Constructor(Vector3(5989.059f, 2964.901f, 63.92952f), medical_terminal), owning_building_guid = 49) - LocalObject(1657, ProximityTerminal.Constructor(Vector3(6026.444f, 2975.62f, 43.93253f), medical_terminal), owning_building_guid = 49) - LocalObject(1960, ProximityTerminal.Constructor(Vector3(5924.704f, 2977.661f, 67.02753f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1961, Terminal.Constructor(Vector3(5924.704f, 2977.661f, 67.02753f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(1963, ProximityTerminal.Constructor(Vector3(5944.98f, 2993.833f, 69.38252f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1964, Terminal.Constructor(Vector3(5944.98f, 2993.833f, 69.38252f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(1966, ProximityTerminal.Constructor(Vector3(5995.379f, 2937.474f, 74.27953f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1967, Terminal.Constructor(Vector3(5995.379f, 2937.474f, 74.27953f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(1969, ProximityTerminal.Constructor(Vector3(6011.534f, 2920.628f, 67.04053f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1970, Terminal.Constructor(Vector3(6011.534f, 2920.628f, 67.04053f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(1972, ProximityTerminal.Constructor(Vector3(6047.987f, 2959.855f, 69.48453f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1973, Terminal.Constructor(Vector3(6047.987f, 2959.855f, 69.48453f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(1975, ProximityTerminal.Constructor(Vector3(6054.28f, 2976.102f, 67.04053f), pad_landing_frame), owning_building_guid = 49) - LocalObject(1976, Terminal.Constructor(Vector3(6054.28f, 2976.102f, 67.04053f), air_rearm_terminal), owning_building_guid = 49) - LocalObject(2269, ProximityTerminal.Constructor(Vector3(5986.309f, 3043.637f, 58.56102f), repair_silo), owning_building_guid = 49) - LocalObject(2270, Terminal.Constructor(Vector3(5986.309f, 3043.637f, 58.56102f), ground_rearm_terminal), owning_building_guid = 49) - LocalObject(2273, ProximityTerminal.Constructor(Vector3(6044.637f, 2909.208f, 58.58252f), repair_silo), owning_building_guid = 49) - LocalObject(2274, Terminal.Constructor(Vector3(6044.637f, 2909.208f, 58.58252f), ground_rearm_terminal), owning_building_guid = 49) - LocalObject(1596, FacilityTurret.Constructor(Vector3(5901.906f, 3100.855f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 2370, + SpawnTube.Constructor(Vector3(5998.233f, 2958.683f, 51.43252f), Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 2371, + SpawnTube.Constructor(Vector3(5998.233f, 2965.974f, 51.43252f), Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 2372, + SpawnTube.Constructor(Vector3(5998.233f, 2973.262f, 51.43252f), Vector3(0, 0, 0)), + owning_building_guid = 49 + ) + LocalObject( + 1656, + ProximityTerminal.Constructor(Vector3(5989.059f, 2964.901f, 63.92952f), medical_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1657, + ProximityTerminal.Constructor(Vector3(6026.444f, 2975.62f, 43.93253f), medical_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1960, + ProximityTerminal.Constructor(Vector3(5924.704f, 2977.661f, 67.02753f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1961, + Terminal.Constructor(Vector3(5924.704f, 2977.661f, 67.02753f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1963, + ProximityTerminal.Constructor(Vector3(5944.98f, 2993.833f, 69.38252f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1964, + Terminal.Constructor(Vector3(5944.98f, 2993.833f, 69.38252f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1966, + ProximityTerminal.Constructor(Vector3(5995.379f, 2937.474f, 74.27953f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1967, + Terminal.Constructor(Vector3(5995.379f, 2937.474f, 74.27953f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1969, + ProximityTerminal.Constructor(Vector3(6011.534f, 2920.628f, 67.04053f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1970, + Terminal.Constructor(Vector3(6011.534f, 2920.628f, 67.04053f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1972, + ProximityTerminal.Constructor(Vector3(6047.987f, 2959.855f, 69.48453f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1973, + Terminal.Constructor(Vector3(6047.987f, 2959.855f, 69.48453f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1975, + ProximityTerminal.Constructor(Vector3(6054.28f, 2976.102f, 67.04053f), pad_landing_frame), + owning_building_guid = 49 + ) + LocalObject( + 1976, + Terminal.Constructor(Vector3(6054.28f, 2976.102f, 67.04053f), air_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2269, + ProximityTerminal.Constructor(Vector3(5986.309f, 3043.637f, 58.56102f), repair_silo), + owning_building_guid = 49 + ) + LocalObject( + 2270, + Terminal.Constructor(Vector3(5986.309f, 3043.637f, 58.56102f), ground_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 2273, + ProximityTerminal.Constructor(Vector3(6044.637f, 2909.208f, 58.58252f), repair_silo), + owning_building_guid = 49 + ) + LocalObject( + 2274, + Terminal.Constructor(Vector3(6044.637f, 2909.208f, 58.58252f), ground_rearm_terminal), + owning_building_guid = 49 + ) + LocalObject( + 1596, + FacilityTurret.Constructor(Vector3(5901.906f, 3100.855f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1596, 5064) - LocalObject(1597, FacilityTurret.Constructor(Vector3(5907.413f, 2902.665f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 1597, + FacilityTurret.Constructor(Vector3(5907.413f, 2902.665f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1597, 5065) - LocalObject(1598, FacilityTurret.Constructor(Vector3(5991.601f, 3100.855f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 1598, + FacilityTurret.Constructor(Vector3(5991.601f, 3100.855f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1598, 5066) - LocalObject(1599, FacilityTurret.Constructor(Vector3(6072.154f, 2902.657f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 1599, + FacilityTurret.Constructor(Vector3(6072.154f, 2902.657f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1599, 5067) - LocalObject(1600, FacilityTurret.Constructor(Vector3(6072.154f, 3040.398f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 1600, + FacilityTurret.Constructor(Vector3(6072.154f, 3040.398f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1600, 5068) - LocalObject(1601, FacilityTurret.Constructor(Vector3(6079.881f, 2967.423f, 67.33152f), manned_turret), owning_building_guid = 49) + LocalObject( + 1601, + FacilityTurret.Constructor(Vector3(6079.881f, 2967.423f, 67.33152f), manned_turret), + owning_building_guid = 49 + ) TurretToWeapon(1601, 5069) - LocalObject(2065, Painbox.Constructor(Vector3(6011.737f, 2998.206f, 47.40582f), painbox), owning_building_guid = 49) - LocalObject(2077, Painbox.Constructor(Vector3(6006.832f, 2965.212f, 55.70242f), painbox_continuous), owning_building_guid = 49) - LocalObject(2089, Painbox.Constructor(Vector3(6013.7f, 2983.471f, 47.09192f), painbox_door_radius), owning_building_guid = 49) - LocalObject(2119, Painbox.Constructor(Vector3(6005.035f, 2952.278f, 53.56042f), painbox_door_radius_continuous), owning_building_guid = 49) - LocalObject(2120, Painbox.Constructor(Vector3(6005.861f, 2979.769f, 54.10872f), painbox_door_radius_continuous), owning_building_guid = 49) - LocalObject(2121, Painbox.Constructor(Vector3(6021.641f, 2972.57f, 55.01482f), painbox_door_radius_continuous), owning_building_guid = 49) + LocalObject( + 2065, + Painbox.Constructor(Vector3(6011.737f, 2998.206f, 47.40582f), painbox), + owning_building_guid = 49 + ) + LocalObject( + 2077, + Painbox.Constructor(Vector3(6006.832f, 2965.212f, 55.70242f), painbox_continuous), + owning_building_guid = 49 + ) + LocalObject( + 2089, + Painbox.Constructor(Vector3(6013.7f, 2983.471f, 47.09192f), painbox_door_radius), + owning_building_guid = 49 + ) + LocalObject( + 2119, + Painbox.Constructor(Vector3(6005.035f, 2952.278f, 53.56042f), painbox_door_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 2120, + Painbox.Constructor(Vector3(6005.861f, 2979.769f, 54.10872f), painbox_door_radius_continuous), + owning_building_guid = 49 + ) + LocalObject( + 2121, + Painbox.Constructor(Vector3(6021.641f, 2972.57f, 55.01482f), painbox_door_radius_continuous), + owning_building_guid = 49 + ) LocalObject(281, Generator.Constructor(Vector3(6013.975f, 3001.555f, 42.63852f)), owning_building_guid = 49) - LocalObject(269, Terminal.Constructor(Vector3(6014.022f, 2993.363f, 43.93253f), gen_control), owning_building_guid = 49) + LocalObject( + 269, + Terminal.Constructor(Vector3(6014.022f, 2993.363f, 43.93253f), gen_control), + owning_building_guid = 49 + ) } Building19() def Building19(): Unit = { // Name: E_Ikanam_Tower Type: tower_a GUID: 52, MapID: 19 - LocalBuilding("E_Ikanam_Tower", 52, 19, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2994f, 2306f, 52.08814f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2389, CaptureTerminal.Constructor(Vector3(3010.587f, 2305.897f, 62.08714f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "E_Ikanam_Tower", + 52, + 19, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2994f, 2306f, 52.08814f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2389, + CaptureTerminal.Constructor(Vector3(3010.587f, 2305.897f, 62.08714f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(305, Door.Constructor(Vector3(3006f, 2298f, 53.60914f)), owning_building_guid = 52) LocalObject(306, Door.Constructor(Vector3(3006f, 2298f, 73.60814f)), owning_building_guid = 52) LocalObject(307, Door.Constructor(Vector3(3006f, 2314f, 53.60914f)), owning_building_guid = 52) LocalObject(308, Door.Constructor(Vector3(3006f, 2314f, 73.60814f)), owning_building_guid = 52) LocalObject(2499, Door.Constructor(Vector3(3005.146f, 2294.794f, 43.42414f)), owning_building_guid = 52) LocalObject(2500, Door.Constructor(Vector3(3005.146f, 2311.204f, 43.42414f)), owning_building_guid = 52) - LocalObject(911, IFFLock.Constructor(Vector3(3003.957f, 2314.811f, 53.54914f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 307) - LocalObject(912, IFFLock.Constructor(Vector3(3003.957f, 2314.811f, 73.54914f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 308) - LocalObject(913, IFFLock.Constructor(Vector3(3008.047f, 2297.189f, 53.54914f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 305) - LocalObject(914, IFFLock.Constructor(Vector3(3008.047f, 2297.189f, 73.54914f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 306) + LocalObject( + 911, + IFFLock.Constructor(Vector3(3003.957f, 2314.811f, 53.54914f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 307 + ) + LocalObject( + 912, + IFFLock.Constructor(Vector3(3003.957f, 2314.811f, 73.54914f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 308 + ) + LocalObject( + 913, + IFFLock.Constructor(Vector3(3008.047f, 2297.189f, 53.54914f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 305 + ) + LocalObject( + 914, + IFFLock.Constructor(Vector3(3008.047f, 2297.189f, 73.54914f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 306 + ) LocalObject(1148, Locker.Constructor(Vector3(3009.716f, 2290.963f, 42.08214f)), owning_building_guid = 52) LocalObject(1149, Locker.Constructor(Vector3(3009.751f, 2312.835f, 42.08214f)), owning_building_guid = 52) LocalObject(1150, Locker.Constructor(Vector3(3011.053f, 2290.963f, 42.08214f)), owning_building_guid = 52) @@ -1738,35 +5055,106 @@ object Map10 { // Amerish LocalObject(1153, Locker.Constructor(Vector3(3013.741f, 2312.835f, 42.08214f)), owning_building_guid = 52) LocalObject(1154, Locker.Constructor(Vector3(3015.143f, 2290.963f, 42.08214f)), owning_building_guid = 52) LocalObject(1155, Locker.Constructor(Vector3(3015.143f, 2312.835f, 42.08214f)), owning_building_guid = 52) - LocalObject(1671, Terminal.Constructor(Vector3(3015.445f, 2296.129f, 43.42014f), order_terminal), owning_building_guid = 52) - LocalObject(1672, Terminal.Constructor(Vector3(3015.445f, 2301.853f, 43.42014f), order_terminal), owning_building_guid = 52) - LocalObject(1673, Terminal.Constructor(Vector3(3015.445f, 2307.234f, 43.42014f), order_terminal), owning_building_guid = 52) - LocalObject(2312, SpawnTube.Constructor(Vector3(3004.706f, 2293.742f, 41.57014f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(2313, SpawnTube.Constructor(Vector3(3004.706f, 2310.152f, 41.57014f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1526, FacilityTurret.Constructor(Vector3(2981.32f, 2293.295f, 71.03014f), manned_turret), owning_building_guid = 52) + LocalObject( + 1671, + Terminal.Constructor(Vector3(3015.445f, 2296.129f, 43.42014f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1672, + Terminal.Constructor(Vector3(3015.445f, 2301.853f, 43.42014f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1673, + Terminal.Constructor(Vector3(3015.445f, 2307.234f, 43.42014f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 2312, + SpawnTube.Constructor(Vector3(3004.706f, 2293.742f, 41.57014f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 2313, + SpawnTube.Constructor(Vector3(3004.706f, 2310.152f, 41.57014f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1526, + FacilityTurret.Constructor(Vector3(2981.32f, 2293.295f, 71.03014f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1526, 5070) - LocalObject(1527, FacilityTurret.Constructor(Vector3(3016.647f, 2318.707f, 71.03014f), manned_turret), owning_building_guid = 52) + LocalObject( + 1527, + FacilityTurret.Constructor(Vector3(3016.647f, 2318.707f, 71.03014f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(1527, 5071) - LocalObject(2134, Painbox.Constructor(Vector3(2999.235f, 2299.803f, 43.58724f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(2135, Painbox.Constructor(Vector3(3010.889f, 2308.086f, 42.18814f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(2136, Painbox.Constructor(Vector3(3010.975f, 2296.223f, 42.18814f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 2134, + Painbox.Constructor(Vector3(2999.235f, 2299.803f, 43.58724f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 2135, + Painbox.Constructor(Vector3(3010.889f, 2308.086f, 42.18814f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 2136, + Painbox.Constructor(Vector3(3010.975f, 2296.223f, 42.18814f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building34() def Building34(): Unit = { // Name: W_Qumu_Tower Type: tower_a GUID: 53, MapID: 34 - LocalBuilding("W_Qumu_Tower", 53, 34, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3448f, 5518f, 54.41446f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2392, CaptureTerminal.Constructor(Vector3(3464.587f, 5517.897f, 64.41346f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "W_Qumu_Tower", + 53, + 34, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3448f, 5518f, 54.41446f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2392, + CaptureTerminal.Constructor(Vector3(3464.587f, 5517.897f, 64.41346f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(330, Door.Constructor(Vector3(3460f, 5510f, 55.93546f)), owning_building_guid = 53) LocalObject(331, Door.Constructor(Vector3(3460f, 5510f, 75.93446f)), owning_building_guid = 53) LocalObject(332, Door.Constructor(Vector3(3460f, 5526f, 55.93546f)), owning_building_guid = 53) LocalObject(333, Door.Constructor(Vector3(3460f, 5526f, 75.93446f)), owning_building_guid = 53) LocalObject(2508, Door.Constructor(Vector3(3459.146f, 5506.794f, 45.75047f)), owning_building_guid = 53) LocalObject(2509, Door.Constructor(Vector3(3459.146f, 5523.204f, 45.75047f)), owning_building_guid = 53) - LocalObject(931, IFFLock.Constructor(Vector3(3457.957f, 5526.811f, 55.87546f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 332) - LocalObject(932, IFFLock.Constructor(Vector3(3457.957f, 5526.811f, 75.87547f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 333) - LocalObject(933, IFFLock.Constructor(Vector3(3462.047f, 5509.189f, 55.87546f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 330) - LocalObject(934, IFFLock.Constructor(Vector3(3462.047f, 5509.189f, 75.87547f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 331) + LocalObject( + 931, + IFFLock.Constructor(Vector3(3457.957f, 5526.811f, 55.87546f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 332 + ) + LocalObject( + 932, + IFFLock.Constructor(Vector3(3457.957f, 5526.811f, 75.87547f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 333 + ) + LocalObject( + 933, + IFFLock.Constructor(Vector3(3462.047f, 5509.189f, 55.87546f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 330 + ) + LocalObject( + 934, + IFFLock.Constructor(Vector3(3462.047f, 5509.189f, 75.87547f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 331 + ) LocalObject(1193, Locker.Constructor(Vector3(3463.716f, 5502.963f, 44.40846f)), owning_building_guid = 53) LocalObject(1194, Locker.Constructor(Vector3(3463.751f, 5524.835f, 44.40846f)), owning_building_guid = 53) LocalObject(1195, Locker.Constructor(Vector3(3465.053f, 5502.963f, 44.40846f)), owning_building_guid = 53) @@ -1775,35 +5163,106 @@ object Map10 { // Amerish LocalObject(1198, Locker.Constructor(Vector3(3467.741f, 5524.835f, 44.40846f)), owning_building_guid = 53) LocalObject(1199, Locker.Constructor(Vector3(3469.143f, 5502.963f, 44.40846f)), owning_building_guid = 53) LocalObject(1200, Locker.Constructor(Vector3(3469.143f, 5524.835f, 44.40846f)), owning_building_guid = 53) - LocalObject(1684, Terminal.Constructor(Vector3(3469.445f, 5508.129f, 45.74646f), order_terminal), owning_building_guid = 53) - LocalObject(1685, Terminal.Constructor(Vector3(3469.445f, 5513.853f, 45.74646f), order_terminal), owning_building_guid = 53) - LocalObject(1686, Terminal.Constructor(Vector3(3469.445f, 5519.234f, 45.74646f), order_terminal), owning_building_guid = 53) - LocalObject(2321, SpawnTube.Constructor(Vector3(3458.706f, 5505.742f, 43.89646f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(2322, SpawnTube.Constructor(Vector3(3458.706f, 5522.152f, 43.89646f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1539, FacilityTurret.Constructor(Vector3(3435.32f, 5505.295f, 73.35646f), manned_turret), owning_building_guid = 53) + LocalObject( + 1684, + Terminal.Constructor(Vector3(3469.445f, 5508.129f, 45.74646f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1685, + Terminal.Constructor(Vector3(3469.445f, 5513.853f, 45.74646f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1686, + Terminal.Constructor(Vector3(3469.445f, 5519.234f, 45.74646f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 2321, + SpawnTube.Constructor(Vector3(3458.706f, 5505.742f, 43.89646f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 2322, + SpawnTube.Constructor(Vector3(3458.706f, 5522.152f, 43.89646f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1539, + FacilityTurret.Constructor(Vector3(3435.32f, 5505.295f, 73.35646f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1539, 5072) - LocalObject(1540, FacilityTurret.Constructor(Vector3(3470.647f, 5530.707f, 73.35646f), manned_turret), owning_building_guid = 53) + LocalObject( + 1540, + FacilityTurret.Constructor(Vector3(3470.647f, 5530.707f, 73.35646f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(1540, 5073) - LocalObject(2143, Painbox.Constructor(Vector3(3453.235f, 5511.803f, 45.91356f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(2144, Painbox.Constructor(Vector3(3464.889f, 5520.086f, 44.51447f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(2145, Painbox.Constructor(Vector3(3464.975f, 5508.223f, 44.51447f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 2143, + Painbox.Constructor(Vector3(3453.235f, 5511.803f, 45.91356f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2144, + Painbox.Constructor(Vector3(3464.889f, 5520.086f, 44.51447f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 2145, + Painbox.Constructor(Vector3(3464.975f, 5508.223f, 44.51447f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building20() def Building20(): Unit = { // Name: NE_Cetan_Tower Type: tower_a GUID: 54, MapID: 20 - LocalBuilding("NE_Cetan_Tower", 54, 20, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3912f, 3212f, 43.86781f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2395, CaptureTerminal.Constructor(Vector3(3928.587f, 3211.897f, 53.86681f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "NE_Cetan_Tower", + 54, + 20, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3912f, 3212f, 43.86781f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2395, + CaptureTerminal.Constructor(Vector3(3928.587f, 3211.897f, 53.86681f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(367, Door.Constructor(Vector3(3924f, 3204f, 45.38881f)), owning_building_guid = 54) LocalObject(368, Door.Constructor(Vector3(3924f, 3204f, 65.38782f)), owning_building_guid = 54) LocalObject(369, Door.Constructor(Vector3(3924f, 3220f, 45.38881f)), owning_building_guid = 54) LocalObject(370, Door.Constructor(Vector3(3924f, 3220f, 65.38782f)), owning_building_guid = 54) LocalObject(2520, Door.Constructor(Vector3(3923.146f, 3200.794f, 35.20381f)), owning_building_guid = 54) LocalObject(2521, Door.Constructor(Vector3(3923.146f, 3217.204f, 35.20381f)), owning_building_guid = 54) - LocalObject(965, IFFLock.Constructor(Vector3(3921.957f, 3220.811f, 45.32881f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 369) - LocalObject(966, IFFLock.Constructor(Vector3(3921.957f, 3220.811f, 65.32881f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 370) - LocalObject(967, IFFLock.Constructor(Vector3(3926.047f, 3203.189f, 45.32881f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 367) - LocalObject(968, IFFLock.Constructor(Vector3(3926.047f, 3203.189f, 65.32881f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 368) + LocalObject( + 965, + IFFLock.Constructor(Vector3(3921.957f, 3220.811f, 45.32881f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 369 + ) + LocalObject( + 966, + IFFLock.Constructor(Vector3(3921.957f, 3220.811f, 65.32881f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 370 + ) + LocalObject( + 967, + IFFLock.Constructor(Vector3(3926.047f, 3203.189f, 45.32881f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 367 + ) + LocalObject( + 968, + IFFLock.Constructor(Vector3(3926.047f, 3203.189f, 65.32881f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 368 + ) LocalObject(1232, Locker.Constructor(Vector3(3927.716f, 3196.963f, 33.86181f)), owning_building_guid = 54) LocalObject(1233, Locker.Constructor(Vector3(3927.751f, 3218.835f, 33.86181f)), owning_building_guid = 54) LocalObject(1235, Locker.Constructor(Vector3(3929.053f, 3196.963f, 33.86181f)), owning_building_guid = 54) @@ -1812,35 +5271,106 @@ object Map10 { // Amerish LocalObject(1240, Locker.Constructor(Vector3(3931.741f, 3218.835f, 33.86181f)), owning_building_guid = 54) LocalObject(1245, Locker.Constructor(Vector3(3933.143f, 3196.963f, 33.86181f)), owning_building_guid = 54) LocalObject(1246, Locker.Constructor(Vector3(3933.143f, 3218.835f, 33.86181f)), owning_building_guid = 54) - LocalObject(1707, Terminal.Constructor(Vector3(3933.445f, 3202.129f, 35.19981f), order_terminal), owning_building_guid = 54) - LocalObject(1708, Terminal.Constructor(Vector3(3933.445f, 3207.853f, 35.19981f), order_terminal), owning_building_guid = 54) - LocalObject(1709, Terminal.Constructor(Vector3(3933.445f, 3213.234f, 35.19981f), order_terminal), owning_building_guid = 54) - LocalObject(2333, SpawnTube.Constructor(Vector3(3922.706f, 3199.742f, 33.34982f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(2334, SpawnTube.Constructor(Vector3(3922.706f, 3216.152f, 33.34982f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1549, FacilityTurret.Constructor(Vector3(3899.32f, 3199.295f, 62.80981f), manned_turret), owning_building_guid = 54) + LocalObject( + 1707, + Terminal.Constructor(Vector3(3933.445f, 3202.129f, 35.19981f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1708, + Terminal.Constructor(Vector3(3933.445f, 3207.853f, 35.19981f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1709, + Terminal.Constructor(Vector3(3933.445f, 3213.234f, 35.19981f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 2333, + SpawnTube.Constructor(Vector3(3922.706f, 3199.742f, 33.34982f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 2334, + SpawnTube.Constructor(Vector3(3922.706f, 3216.152f, 33.34982f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1549, + FacilityTurret.Constructor(Vector3(3899.32f, 3199.295f, 62.80981f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1549, 5074) - LocalObject(1552, FacilityTurret.Constructor(Vector3(3934.647f, 3224.707f, 62.80981f), manned_turret), owning_building_guid = 54) + LocalObject( + 1552, + FacilityTurret.Constructor(Vector3(3934.647f, 3224.707f, 62.80981f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(1552, 5075) - LocalObject(2152, Painbox.Constructor(Vector3(3917.235f, 3205.803f, 35.36691f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2153, Painbox.Constructor(Vector3(3928.889f, 3214.086f, 33.96781f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(2154, Painbox.Constructor(Vector3(3928.975f, 3202.223f, 33.96781f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 2152, + Painbox.Constructor(Vector3(3917.235f, 3205.803f, 35.36691f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2153, + Painbox.Constructor(Vector3(3928.889f, 3214.086f, 33.96781f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 2154, + Painbox.Constructor(Vector3(3928.975f, 3202.223f, 33.96781f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building32() def Building32(): Unit = { // Name: NW_Sungrey_Tower Type: tower_a GUID: 55, MapID: 32 - LocalBuilding("NW_Sungrey_Tower", 55, 32, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4826f, 5260f, 88.36119f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2399, CaptureTerminal.Constructor(Vector3(4842.587f, 5259.897f, 98.36019f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "NW_Sungrey_Tower", + 55, + 32, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4826f, 5260f, 88.36119f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2399, + CaptureTerminal.Constructor(Vector3(4842.587f, 5259.897f, 98.36019f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(441, Door.Constructor(Vector3(4838f, 5252f, 89.88219f)), owning_building_guid = 55) LocalObject(442, Door.Constructor(Vector3(4838f, 5252f, 109.8812f)), owning_building_guid = 55) LocalObject(443, Door.Constructor(Vector3(4838f, 5268f, 89.88219f)), owning_building_guid = 55) LocalObject(444, Door.Constructor(Vector3(4838f, 5268f, 109.8812f)), owning_building_guid = 55) LocalObject(2537, Door.Constructor(Vector3(4837.146f, 5248.794f, 79.69719f)), owning_building_guid = 55) LocalObject(2538, Door.Constructor(Vector3(4837.146f, 5265.204f, 79.69719f)), owning_building_guid = 55) - LocalObject(1014, IFFLock.Constructor(Vector3(4835.957f, 5268.811f, 89.82219f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 443) - LocalObject(1015, IFFLock.Constructor(Vector3(4835.957f, 5268.811f, 109.8222f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 444) - LocalObject(1016, IFFLock.Constructor(Vector3(4840.047f, 5251.189f, 89.82219f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 441) - LocalObject(1017, IFFLock.Constructor(Vector3(4840.047f, 5251.189f, 109.8222f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 442) + LocalObject( + 1014, + IFFLock.Constructor(Vector3(4835.957f, 5268.811f, 89.82219f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 443 + ) + LocalObject( + 1015, + IFFLock.Constructor(Vector3(4835.957f, 5268.811f, 109.8222f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 444 + ) + LocalObject( + 1016, + IFFLock.Constructor(Vector3(4840.047f, 5251.189f, 89.82219f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 441 + ) + LocalObject( + 1017, + IFFLock.Constructor(Vector3(4840.047f, 5251.189f, 109.8222f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 442 + ) LocalObject(1309, Locker.Constructor(Vector3(4841.716f, 5244.963f, 78.35519f)), owning_building_guid = 55) LocalObject(1310, Locker.Constructor(Vector3(4841.751f, 5266.835f, 78.35519f)), owning_building_guid = 55) LocalObject(1311, Locker.Constructor(Vector3(4843.053f, 5244.963f, 78.35519f)), owning_building_guid = 55) @@ -1849,35 +5379,106 @@ object Map10 { // Amerish LocalObject(1314, Locker.Constructor(Vector3(4845.741f, 5266.835f, 78.35519f)), owning_building_guid = 55) LocalObject(1315, Locker.Constructor(Vector3(4847.143f, 5244.963f, 78.35519f)), owning_building_guid = 55) LocalObject(1316, Locker.Constructor(Vector3(4847.143f, 5266.835f, 78.35519f)), owning_building_guid = 55) - LocalObject(1733, Terminal.Constructor(Vector3(4847.445f, 5250.129f, 79.69319f), order_terminal), owning_building_guid = 55) - LocalObject(1734, Terminal.Constructor(Vector3(4847.445f, 5255.853f, 79.69319f), order_terminal), owning_building_guid = 55) - LocalObject(1735, Terminal.Constructor(Vector3(4847.445f, 5261.234f, 79.69319f), order_terminal), owning_building_guid = 55) - LocalObject(2350, SpawnTube.Constructor(Vector3(4836.706f, 5247.742f, 77.84319f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(2351, SpawnTube.Constructor(Vector3(4836.706f, 5264.152f, 77.84319f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1578, FacilityTurret.Constructor(Vector3(4813.32f, 5247.295f, 107.3032f), manned_turret), owning_building_guid = 55) + LocalObject( + 1733, + Terminal.Constructor(Vector3(4847.445f, 5250.129f, 79.69319f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1734, + Terminal.Constructor(Vector3(4847.445f, 5255.853f, 79.69319f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1735, + Terminal.Constructor(Vector3(4847.445f, 5261.234f, 79.69319f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 2350, + SpawnTube.Constructor(Vector3(4836.706f, 5247.742f, 77.84319f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 2351, + SpawnTube.Constructor(Vector3(4836.706f, 5264.152f, 77.84319f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1578, + FacilityTurret.Constructor(Vector3(4813.32f, 5247.295f, 107.3032f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1578, 5076) - LocalObject(1579, FacilityTurret.Constructor(Vector3(4848.647f, 5272.707f, 107.3032f), manned_turret), owning_building_guid = 55) + LocalObject( + 1579, + FacilityTurret.Constructor(Vector3(4848.647f, 5272.707f, 107.3032f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(1579, 5077) - LocalObject(2164, Painbox.Constructor(Vector3(4831.235f, 5253.803f, 79.86029f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2165, Painbox.Constructor(Vector3(4842.889f, 5262.086f, 78.46119f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(2166, Painbox.Constructor(Vector3(4842.975f, 5250.223f, 78.46119f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 2164, + Painbox.Constructor(Vector3(4831.235f, 5253.803f, 79.86029f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2165, + Painbox.Constructor(Vector3(4842.889f, 5262.086f, 78.46119f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 2166, + Painbox.Constructor(Vector3(4842.975f, 5250.223f, 78.46119f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building23() def Building23(): Unit = { // Name: E_Kyoi_Tower Type: tower_a GUID: 56, MapID: 23 - LocalBuilding("E_Kyoi_Tower", 56, 23, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5458f, 2004f, 81.14763f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2404, CaptureTerminal.Constructor(Vector3(5474.587f, 2003.897f, 91.14663f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "E_Kyoi_Tower", + 56, + 23, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5458f, 2004f, 81.14763f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2404, + CaptureTerminal.Constructor(Vector3(5474.587f, 2003.897f, 91.14663f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(480, Door.Constructor(Vector3(5470f, 1996f, 82.66863f)), owning_building_guid = 56) LocalObject(481, Door.Constructor(Vector3(5470f, 1996f, 102.6676f)), owning_building_guid = 56) LocalObject(482, Door.Constructor(Vector3(5470f, 2012f, 82.66863f)), owning_building_guid = 56) LocalObject(483, Door.Constructor(Vector3(5470f, 2012f, 102.6676f)), owning_building_guid = 56) LocalObject(2550, Door.Constructor(Vector3(5469.146f, 1992.794f, 72.48363f)), owning_building_guid = 56) LocalObject(2551, Door.Constructor(Vector3(5469.146f, 2009.204f, 72.48363f)), owning_building_guid = 56) - LocalObject(1049, IFFLock.Constructor(Vector3(5467.957f, 2012.811f, 82.60863f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 482) - LocalObject(1050, IFFLock.Constructor(Vector3(5467.957f, 2012.811f, 102.6086f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 483) - LocalObject(1051, IFFLock.Constructor(Vector3(5472.047f, 1995.189f, 82.60863f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 480) - LocalObject(1052, IFFLock.Constructor(Vector3(5472.047f, 1995.189f, 102.6086f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 481) + LocalObject( + 1049, + IFFLock.Constructor(Vector3(5467.957f, 2012.811f, 82.60863f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 482 + ) + LocalObject( + 1050, + IFFLock.Constructor(Vector3(5467.957f, 2012.811f, 102.6086f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 483 + ) + LocalObject( + 1051, + IFFLock.Constructor(Vector3(5472.047f, 1995.189f, 82.60863f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 480 + ) + LocalObject( + 1052, + IFFLock.Constructor(Vector3(5472.047f, 1995.189f, 102.6086f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 481 + ) LocalObject(1361, Locker.Constructor(Vector3(5473.716f, 1988.963f, 71.14163f)), owning_building_guid = 56) LocalObject(1362, Locker.Constructor(Vector3(5473.751f, 2010.835f, 71.14163f)), owning_building_guid = 56) LocalObject(1363, Locker.Constructor(Vector3(5475.053f, 1988.963f, 71.14163f)), owning_building_guid = 56) @@ -1886,35 +5487,106 @@ object Map10 { // Amerish LocalObject(1366, Locker.Constructor(Vector3(5477.741f, 2010.835f, 71.14163f)), owning_building_guid = 56) LocalObject(1367, Locker.Constructor(Vector3(5479.143f, 1988.963f, 71.14163f)), owning_building_guid = 56) LocalObject(1368, Locker.Constructor(Vector3(5479.143f, 2010.835f, 71.14163f)), owning_building_guid = 56) - LocalObject(1754, Terminal.Constructor(Vector3(5479.445f, 1994.129f, 72.47963f), order_terminal), owning_building_guid = 56) - LocalObject(1755, Terminal.Constructor(Vector3(5479.445f, 1999.853f, 72.47963f), order_terminal), owning_building_guid = 56) - LocalObject(1756, Terminal.Constructor(Vector3(5479.445f, 2005.234f, 72.47963f), order_terminal), owning_building_guid = 56) - LocalObject(2363, SpawnTube.Constructor(Vector3(5468.706f, 1991.742f, 70.62963f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(2364, SpawnTube.Constructor(Vector3(5468.706f, 2008.152f, 70.62963f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1586, FacilityTurret.Constructor(Vector3(5445.32f, 1991.295f, 100.0896f), manned_turret), owning_building_guid = 56) + LocalObject( + 1754, + Terminal.Constructor(Vector3(5479.445f, 1994.129f, 72.47963f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1755, + Terminal.Constructor(Vector3(5479.445f, 1999.853f, 72.47963f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1756, + Terminal.Constructor(Vector3(5479.445f, 2005.234f, 72.47963f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 2363, + SpawnTube.Constructor(Vector3(5468.706f, 1991.742f, 70.62963f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 2364, + SpawnTube.Constructor(Vector3(5468.706f, 2008.152f, 70.62963f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1586, + FacilityTurret.Constructor(Vector3(5445.32f, 1991.295f, 100.0896f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1586, 5078) - LocalObject(1590, FacilityTurret.Constructor(Vector3(5480.647f, 2016.707f, 100.0896f), manned_turret), owning_building_guid = 56) + LocalObject( + 1590, + FacilityTurret.Constructor(Vector3(5480.647f, 2016.707f, 100.0896f), manned_turret), + owning_building_guid = 56 + ) TurretToWeapon(1590, 5079) - LocalObject(2179, Painbox.Constructor(Vector3(5463.235f, 1997.803f, 72.64673f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2180, Painbox.Constructor(Vector3(5474.889f, 2006.086f, 71.24763f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(2181, Painbox.Constructor(Vector3(5474.975f, 1994.223f, 71.24763f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 2179, + Painbox.Constructor(Vector3(5463.235f, 1997.803f, 72.64673f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2180, + Painbox.Constructor(Vector3(5474.889f, 2006.086f, 71.24763f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 2181, + Painbox.Constructor(Vector3(5474.975f, 1994.223f, 71.24763f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building28() def Building28(): Unit = { // Name: W_Azeban_Tower Type: tower_a GUID: 57, MapID: 28 - LocalBuilding("W_Azeban_Tower", 57, 28, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5554f, 5326f, 43.06631f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2405, CaptureTerminal.Constructor(Vector3(5570.587f, 5325.897f, 53.06531f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "W_Azeban_Tower", + 57, + 28, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5554f, 5326f, 43.06631f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2405, + CaptureTerminal.Constructor(Vector3(5570.587f, 5325.897f, 53.06531f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(490, Door.Constructor(Vector3(5566f, 5318f, 44.58731f)), owning_building_guid = 57) LocalObject(491, Door.Constructor(Vector3(5566f, 5318f, 64.5863f)), owning_building_guid = 57) LocalObject(492, Door.Constructor(Vector3(5566f, 5334f, 44.58731f)), owning_building_guid = 57) LocalObject(493, Door.Constructor(Vector3(5566f, 5334f, 64.5863f)), owning_building_guid = 57) LocalObject(2555, Door.Constructor(Vector3(5565.146f, 5314.794f, 34.40231f)), owning_building_guid = 57) LocalObject(2556, Door.Constructor(Vector3(5565.146f, 5331.204f, 34.40231f)), owning_building_guid = 57) - LocalObject(1060, IFFLock.Constructor(Vector3(5563.957f, 5334.811f, 44.52731f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 492) - LocalObject(1061, IFFLock.Constructor(Vector3(5563.957f, 5334.811f, 64.52731f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 493) - LocalObject(1062, IFFLock.Constructor(Vector3(5568.047f, 5317.189f, 44.52731f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 490) - LocalObject(1063, IFFLock.Constructor(Vector3(5568.047f, 5317.189f, 64.52731f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 491) + LocalObject( + 1060, + IFFLock.Constructor(Vector3(5563.957f, 5334.811f, 44.52731f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 492 + ) + LocalObject( + 1061, + IFFLock.Constructor(Vector3(5563.957f, 5334.811f, 64.52731f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 493 + ) + LocalObject( + 1062, + IFFLock.Constructor(Vector3(5568.047f, 5317.189f, 44.52731f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 490 + ) + LocalObject( + 1063, + IFFLock.Constructor(Vector3(5568.047f, 5317.189f, 64.52731f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 491 + ) LocalObject(1390, Locker.Constructor(Vector3(5569.716f, 5310.963f, 33.06031f)), owning_building_guid = 57) LocalObject(1391, Locker.Constructor(Vector3(5569.751f, 5332.835f, 33.06031f)), owning_building_guid = 57) LocalObject(1392, Locker.Constructor(Vector3(5571.053f, 5310.963f, 33.06031f)), owning_building_guid = 57) @@ -1923,35 +5595,106 @@ object Map10 { // Amerish LocalObject(1395, Locker.Constructor(Vector3(5573.741f, 5332.835f, 33.06031f)), owning_building_guid = 57) LocalObject(1396, Locker.Constructor(Vector3(5575.143f, 5310.963f, 33.06031f)), owning_building_guid = 57) LocalObject(1397, Locker.Constructor(Vector3(5575.143f, 5332.835f, 33.06031f)), owning_building_guid = 57) - LocalObject(1761, Terminal.Constructor(Vector3(5575.445f, 5316.129f, 34.39831f), order_terminal), owning_building_guid = 57) - LocalObject(1762, Terminal.Constructor(Vector3(5575.445f, 5321.853f, 34.39831f), order_terminal), owning_building_guid = 57) - LocalObject(1763, Terminal.Constructor(Vector3(5575.445f, 5327.234f, 34.39831f), order_terminal), owning_building_guid = 57) - LocalObject(2368, SpawnTube.Constructor(Vector3(5564.706f, 5313.742f, 32.54831f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(2369, SpawnTube.Constructor(Vector3(5564.706f, 5330.152f, 32.54831f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1592, FacilityTurret.Constructor(Vector3(5541.32f, 5313.295f, 62.00831f), manned_turret), owning_building_guid = 57) + LocalObject( + 1761, + Terminal.Constructor(Vector3(5575.445f, 5316.129f, 34.39831f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1762, + Terminal.Constructor(Vector3(5575.445f, 5321.853f, 34.39831f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1763, + Terminal.Constructor(Vector3(5575.445f, 5327.234f, 34.39831f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 2368, + SpawnTube.Constructor(Vector3(5564.706f, 5313.742f, 32.54831f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 2369, + SpawnTube.Constructor(Vector3(5564.706f, 5330.152f, 32.54831f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1592, + FacilityTurret.Constructor(Vector3(5541.32f, 5313.295f, 62.00831f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1592, 5080) - LocalObject(1593, FacilityTurret.Constructor(Vector3(5576.647f, 5338.707f, 62.00831f), manned_turret), owning_building_guid = 57) + LocalObject( + 1593, + FacilityTurret.Constructor(Vector3(5576.647f, 5338.707f, 62.00831f), manned_turret), + owning_building_guid = 57 + ) TurretToWeapon(1593, 5081) - LocalObject(2182, Painbox.Constructor(Vector3(5559.235f, 5319.803f, 34.56541f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2183, Painbox.Constructor(Vector3(5570.889f, 5328.086f, 33.16631f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(2184, Painbox.Constructor(Vector3(5570.975f, 5316.223f, 33.16631f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 2182, + Painbox.Constructor(Vector3(5559.235f, 5319.803f, 34.56541f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2183, + Painbox.Constructor(Vector3(5570.889f, 5328.086f, 33.16631f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 2184, + Painbox.Constructor(Vector3(5570.975f, 5316.223f, 33.16631f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building48() def Building48(): Unit = { // Name: Azeban_Tower Type: tower_a GUID: 58, MapID: 48 - LocalBuilding("Azeban_Tower", 58, 48, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6176f, 5550f, 49.46858f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2407, CaptureTerminal.Constructor(Vector3(6192.587f, 5549.897f, 59.46758f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "Azeban_Tower", + 58, + 48, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6176f, 5550f, 49.46858f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2407, + CaptureTerminal.Constructor(Vector3(6192.587f, 5549.897f, 59.46758f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(519, Door.Constructor(Vector3(6188f, 5542f, 50.98958f)), owning_building_guid = 58) LocalObject(520, Door.Constructor(Vector3(6188f, 5542f, 70.98859f)), owning_building_guid = 58) LocalObject(521, Door.Constructor(Vector3(6188f, 5558f, 50.98958f)), owning_building_guid = 58) LocalObject(522, Door.Constructor(Vector3(6188f, 5558f, 70.98859f)), owning_building_guid = 58) LocalObject(2562, Door.Constructor(Vector3(6187.146f, 5538.794f, 40.80458f)), owning_building_guid = 58) LocalObject(2563, Door.Constructor(Vector3(6187.146f, 5555.204f, 40.80458f)), owning_building_guid = 58) - LocalObject(1077, IFFLock.Constructor(Vector3(6185.957f, 5558.811f, 50.92958f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 521) - LocalObject(1078, IFFLock.Constructor(Vector3(6185.957f, 5558.811f, 70.92958f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 522) - LocalObject(1079, IFFLock.Constructor(Vector3(6190.047f, 5541.189f, 50.92958f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 519) - LocalObject(1080, IFFLock.Constructor(Vector3(6190.047f, 5541.189f, 70.92958f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 520) + LocalObject( + 1077, + IFFLock.Constructor(Vector3(6185.957f, 5558.811f, 50.92958f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 521 + ) + LocalObject( + 1078, + IFFLock.Constructor(Vector3(6185.957f, 5558.811f, 70.92958f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 522 + ) + LocalObject( + 1079, + IFFLock.Constructor(Vector3(6190.047f, 5541.189f, 50.92958f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 519 + ) + LocalObject( + 1080, + IFFLock.Constructor(Vector3(6190.047f, 5541.189f, 70.92958f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 520 + ) LocalObject(1418, Locker.Constructor(Vector3(6191.716f, 5534.963f, 39.46258f)), owning_building_guid = 58) LocalObject(1419, Locker.Constructor(Vector3(6191.751f, 5556.835f, 39.46258f)), owning_building_guid = 58) LocalObject(1420, Locker.Constructor(Vector3(6193.053f, 5534.963f, 39.46258f)), owning_building_guid = 58) @@ -1960,35 +5703,106 @@ object Map10 { // Amerish LocalObject(1423, Locker.Constructor(Vector3(6195.741f, 5556.835f, 39.46258f)), owning_building_guid = 58) LocalObject(1424, Locker.Constructor(Vector3(6197.143f, 5534.963f, 39.46258f)), owning_building_guid = 58) LocalObject(1425, Locker.Constructor(Vector3(6197.143f, 5556.835f, 39.46258f)), owning_building_guid = 58) - LocalObject(1771, Terminal.Constructor(Vector3(6197.445f, 5540.129f, 40.80058f), order_terminal), owning_building_guid = 58) - LocalObject(1772, Terminal.Constructor(Vector3(6197.445f, 5545.853f, 40.80058f), order_terminal), owning_building_guid = 58) - LocalObject(1773, Terminal.Constructor(Vector3(6197.445f, 5551.234f, 40.80058f), order_terminal), owning_building_guid = 58) - LocalObject(2375, SpawnTube.Constructor(Vector3(6186.706f, 5537.742f, 38.95058f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(2376, SpawnTube.Constructor(Vector3(6186.706f, 5554.152f, 38.95058f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1604, FacilityTurret.Constructor(Vector3(6163.32f, 5537.295f, 68.41058f), manned_turret), owning_building_guid = 58) + LocalObject( + 1771, + Terminal.Constructor(Vector3(6197.445f, 5540.129f, 40.80058f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1772, + Terminal.Constructor(Vector3(6197.445f, 5545.853f, 40.80058f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1773, + Terminal.Constructor(Vector3(6197.445f, 5551.234f, 40.80058f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 2375, + SpawnTube.Constructor(Vector3(6186.706f, 5537.742f, 38.95058f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 2376, + SpawnTube.Constructor(Vector3(6186.706f, 5554.152f, 38.95058f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1604, + FacilityTurret.Constructor(Vector3(6163.32f, 5537.295f, 68.41058f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1604, 5082) - LocalObject(1607, FacilityTurret.Constructor(Vector3(6198.647f, 5562.707f, 68.41058f), manned_turret), owning_building_guid = 58) + LocalObject( + 1607, + FacilityTurret.Constructor(Vector3(6198.647f, 5562.707f, 68.41058f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(1607, 5083) - LocalObject(2188, Painbox.Constructor(Vector3(6181.235f, 5543.803f, 40.96768f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2189, Painbox.Constructor(Vector3(6192.889f, 5552.086f, 39.56858f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(2190, Painbox.Constructor(Vector3(6192.975f, 5540.223f, 39.56858f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 2188, + Painbox.Constructor(Vector3(6181.235f, 5543.803f, 40.96768f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2189, + Painbox.Constructor(Vector3(6192.889f, 5552.086f, 39.56858f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 2190, + Painbox.Constructor(Vector3(6192.975f, 5540.223f, 39.56858f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building30() def Building30(): Unit = { // Name: S_Ceryshen_Warpgate_Tower Type: tower_a GUID: 59, MapID: 30 - LocalBuilding("S_Ceryshen_Warpgate_Tower", 59, 30, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6302f, 6398f, 106.5124f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(2408, CaptureTerminal.Constructor(Vector3(6318.587f, 6397.897f, 116.5114f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "S_Ceryshen_Warpgate_Tower", + 59, + 30, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6302f, 6398f, 106.5124f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 2408, + CaptureTerminal.Constructor(Vector3(6318.587f, 6397.897f, 116.5114f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(535, Door.Constructor(Vector3(6314f, 6390f, 108.0334f)), owning_building_guid = 59) LocalObject(536, Door.Constructor(Vector3(6314f, 6390f, 128.0324f)), owning_building_guid = 59) LocalObject(537, Door.Constructor(Vector3(6314f, 6406f, 108.0334f)), owning_building_guid = 59) LocalObject(538, Door.Constructor(Vector3(6314f, 6406f, 128.0324f)), owning_building_guid = 59) LocalObject(2567, Door.Constructor(Vector3(6313.146f, 6386.794f, 97.84837f)), owning_building_guid = 59) LocalObject(2568, Door.Constructor(Vector3(6313.146f, 6403.204f, 97.84837f)), owning_building_guid = 59) - LocalObject(1089, IFFLock.Constructor(Vector3(6311.957f, 6406.811f, 107.9734f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 537) - LocalObject(1090, IFFLock.Constructor(Vector3(6311.957f, 6406.811f, 127.9734f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 538) - LocalObject(1093, IFFLock.Constructor(Vector3(6316.047f, 6389.189f, 107.9734f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 535) - LocalObject(1094, IFFLock.Constructor(Vector3(6316.047f, 6389.189f, 127.9734f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 536) + LocalObject( + 1089, + IFFLock.Constructor(Vector3(6311.957f, 6406.811f, 107.9734f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 537 + ) + LocalObject( + 1090, + IFFLock.Constructor(Vector3(6311.957f, 6406.811f, 127.9734f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 538 + ) + LocalObject( + 1093, + IFFLock.Constructor(Vector3(6316.047f, 6389.189f, 107.9734f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 535 + ) + LocalObject( + 1094, + IFFLock.Constructor(Vector3(6316.047f, 6389.189f, 127.9734f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 536 + ) LocalObject(1430, Locker.Constructor(Vector3(6317.716f, 6382.963f, 96.50638f)), owning_building_guid = 59) LocalObject(1431, Locker.Constructor(Vector3(6317.751f, 6404.835f, 96.50638f)), owning_building_guid = 59) LocalObject(1433, Locker.Constructor(Vector3(6319.053f, 6382.963f, 96.50638f)), owning_building_guid = 59) @@ -1997,25 +5811,76 @@ object Map10 { // Amerish LocalObject(1438, Locker.Constructor(Vector3(6321.741f, 6404.835f, 96.50638f)), owning_building_guid = 59) LocalObject(1440, Locker.Constructor(Vector3(6323.143f, 6382.963f, 96.50638f)), owning_building_guid = 59) LocalObject(1441, Locker.Constructor(Vector3(6323.143f, 6404.835f, 96.50638f)), owning_building_guid = 59) - LocalObject(1782, Terminal.Constructor(Vector3(6323.445f, 6388.129f, 97.84438f), order_terminal), owning_building_guid = 59) - LocalObject(1783, Terminal.Constructor(Vector3(6323.445f, 6393.853f, 97.84438f), order_terminal), owning_building_guid = 59) - LocalObject(1784, Terminal.Constructor(Vector3(6323.445f, 6399.234f, 97.84438f), order_terminal), owning_building_guid = 59) - LocalObject(2380, SpawnTube.Constructor(Vector3(6312.706f, 6385.742f, 95.99438f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(2381, SpawnTube.Constructor(Vector3(6312.706f, 6402.152f, 95.99438f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1609, FacilityTurret.Constructor(Vector3(6289.32f, 6385.295f, 125.4544f), manned_turret), owning_building_guid = 59) + LocalObject( + 1782, + Terminal.Constructor(Vector3(6323.445f, 6388.129f, 97.84438f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1783, + Terminal.Constructor(Vector3(6323.445f, 6393.853f, 97.84438f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1784, + Terminal.Constructor(Vector3(6323.445f, 6399.234f, 97.84438f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 2380, + SpawnTube.Constructor(Vector3(6312.706f, 6385.742f, 95.99438f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 2381, + SpawnTube.Constructor(Vector3(6312.706f, 6402.152f, 95.99438f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1609, + FacilityTurret.Constructor(Vector3(6289.32f, 6385.295f, 125.4544f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1609, 5084) - LocalObject(1612, FacilityTurret.Constructor(Vector3(6324.647f, 6410.707f, 125.4544f), manned_turret), owning_building_guid = 59) + LocalObject( + 1612, + FacilityTurret.Constructor(Vector3(6324.647f, 6410.707f, 125.4544f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(1612, 5085) - LocalObject(2191, Painbox.Constructor(Vector3(6307.235f, 6391.803f, 98.01147f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2192, Painbox.Constructor(Vector3(6318.889f, 6400.086f, 96.61237f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(2193, Painbox.Constructor(Vector3(6318.975f, 6388.223f, 96.61237f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 2191, + Painbox.Constructor(Vector3(6307.235f, 6391.803f, 98.01147f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2192, + Painbox.Constructor(Vector3(6318.889f, 6400.086f, 96.61237f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 2193, + Painbox.Constructor(Vector3(6318.975f, 6388.223f, 96.61237f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building16() def Building16(): Unit = { // Name: NE_Solsar_Warpgate_Tower Type: tower_b GUID: 60, MapID: 16 - LocalBuilding("NE_Solsar_Warpgate_Tower", 60, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1910f, 1664f, 43.16405f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2387, CaptureTerminal.Constructor(Vector3(1926.587f, 1663.897f, 63.16305f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "NE_Solsar_Warpgate_Tower", + 60, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1910f, 1664f, 43.16405f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2387, + CaptureTerminal.Constructor(Vector3(1926.587f, 1663.897f, 63.16305f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(284, Door.Constructor(Vector3(1922f, 1656f, 44.68405f)), owning_building_guid = 60) LocalObject(285, Door.Constructor(Vector3(1922f, 1656f, 54.68405f)), owning_building_guid = 60) LocalObject(286, Door.Constructor(Vector3(1922f, 1656f, 74.68405f)), owning_building_guid = 60) @@ -2024,12 +5889,42 @@ object Map10 { // Amerish LocalObject(289, Door.Constructor(Vector3(1922f, 1672f, 74.68405f)), owning_building_guid = 60) LocalObject(2492, Door.Constructor(Vector3(1921.147f, 1652.794f, 34.50005f)), owning_building_guid = 60) LocalObject(2493, Door.Constructor(Vector3(1921.147f, 1669.204f, 34.50005f)), owning_building_guid = 60) - LocalObject(893, IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 44.62505f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 287) - LocalObject(894, IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 54.62505f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 288) - LocalObject(895, IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 74.62505f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 289) - LocalObject(896, IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 44.62505f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 284) - LocalObject(897, IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 54.62505f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 285) - LocalObject(898, IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 74.62505f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 286) + LocalObject( + 893, + IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 44.62505f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 287 + ) + LocalObject( + 894, + IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 54.62505f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 288 + ) + LocalObject( + 895, + IFFLock.Constructor(Vector3(1919.957f, 1672.811f, 74.62505f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 289 + ) + LocalObject( + 896, + IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 44.62505f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 284 + ) + LocalObject( + 897, + IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 54.62505f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 285 + ) + LocalObject( + 898, + IFFLock.Constructor(Vector3(1924.047f, 1655.189f, 74.62505f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 286 + ) LocalObject(1111, Locker.Constructor(Vector3(1925.716f, 1648.963f, 33.15805f)), owning_building_guid = 60) LocalObject(1112, Locker.Constructor(Vector3(1925.751f, 1670.835f, 33.15805f)), owning_building_guid = 60) LocalObject(1113, Locker.Constructor(Vector3(1927.053f, 1648.963f, 33.15805f)), owning_building_guid = 60) @@ -2038,21 +5933,64 @@ object Map10 { // Amerish LocalObject(1116, Locker.Constructor(Vector3(1929.741f, 1670.835f, 33.15805f)), owning_building_guid = 60) LocalObject(1117, Locker.Constructor(Vector3(1931.143f, 1648.963f, 33.15805f)), owning_building_guid = 60) LocalObject(1118, Locker.Constructor(Vector3(1931.143f, 1670.835f, 33.15805f)), owning_building_guid = 60) - LocalObject(1661, Terminal.Constructor(Vector3(1931.446f, 1654.129f, 34.49605f), order_terminal), owning_building_guid = 60) - LocalObject(1662, Terminal.Constructor(Vector3(1931.446f, 1659.853f, 34.49605f), order_terminal), owning_building_guid = 60) - LocalObject(1663, Terminal.Constructor(Vector3(1931.446f, 1665.234f, 34.49605f), order_terminal), owning_building_guid = 60) - LocalObject(2305, SpawnTube.Constructor(Vector3(1920.706f, 1651.742f, 32.64605f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2306, SpawnTube.Constructor(Vector3(1920.706f, 1668.152f, 32.64605f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(2128, Painbox.Constructor(Vector3(1915.493f, 1656.849f, 34.45345f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2129, Painbox.Constructor(Vector3(1927.127f, 1654.078f, 33.26405f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(2130, Painbox.Constructor(Vector3(1927.259f, 1666.107f, 33.26405f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1661, + Terminal.Constructor(Vector3(1931.446f, 1654.129f, 34.49605f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1662, + Terminal.Constructor(Vector3(1931.446f, 1659.853f, 34.49605f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1663, + Terminal.Constructor(Vector3(1931.446f, 1665.234f, 34.49605f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 2305, + SpawnTube.Constructor(Vector3(1920.706f, 1651.742f, 32.64605f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2306, + SpawnTube.Constructor(Vector3(1920.706f, 1668.152f, 32.64605f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 2128, + Painbox.Constructor(Vector3(1915.493f, 1656.849f, 34.45345f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2129, + Painbox.Constructor(Vector3(1927.127f, 1654.078f, 33.26405f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 2130, + Painbox.Constructor(Vector3(1927.259f, 1666.107f, 33.26405f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building26() def Building26(): Unit = { // Name: NE_NCSanc_Warpgate_Tower Type: tower_b GUID: 61, MapID: 26 - LocalBuilding("NE_NCSanc_Warpgate_Tower", 61, 26, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3488f, 4702f, 60.32801f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2393, CaptureTerminal.Constructor(Vector3(3504.587f, 4701.897f, 80.32701f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "NE_NCSanc_Warpgate_Tower", + 61, + 26, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3488f, 4702f, 60.32801f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2393, + CaptureTerminal.Constructor(Vector3(3504.587f, 4701.897f, 80.32701f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(341, Door.Constructor(Vector3(3500f, 4694f, 61.84801f)), owning_building_guid = 61) LocalObject(342, Door.Constructor(Vector3(3500f, 4694f, 71.84801f)), owning_building_guid = 61) LocalObject(343, Door.Constructor(Vector3(3500f, 4694f, 91.84801f)), owning_building_guid = 61) @@ -2061,12 +5999,42 @@ object Map10 { // Amerish LocalObject(346, Door.Constructor(Vector3(3500f, 4710f, 91.84801f)), owning_building_guid = 61) LocalObject(2510, Door.Constructor(Vector3(3499.147f, 4690.794f, 51.66402f)), owning_building_guid = 61) LocalObject(2511, Door.Constructor(Vector3(3499.147f, 4707.204f, 51.66402f)), owning_building_guid = 61) - LocalObject(942, IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 61.78901f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 344) - LocalObject(943, IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 71.78902f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 345) - LocalObject(944, IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 91.78902f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 346) - LocalObject(946, IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 61.78901f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 341) - LocalObject(947, IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 71.78902f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 342) - LocalObject(948, IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 91.78902f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 343) + LocalObject( + 942, + IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 61.78901f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 344 + ) + LocalObject( + 943, + IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 71.78902f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 345 + ) + LocalObject( + 944, + IFFLock.Constructor(Vector3(3497.957f, 4710.811f, 91.78902f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 346 + ) + LocalObject( + 946, + IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 61.78901f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 341 + ) + LocalObject( + 947, + IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 71.78902f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 342 + ) + LocalObject( + 948, + IFFLock.Constructor(Vector3(3502.047f, 4693.189f, 91.78902f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 343 + ) LocalObject(1201, Locker.Constructor(Vector3(3503.716f, 4686.963f, 50.32201f)), owning_building_guid = 61) LocalObject(1202, Locker.Constructor(Vector3(3503.751f, 4708.835f, 50.32201f)), owning_building_guid = 61) LocalObject(1203, Locker.Constructor(Vector3(3505.053f, 4686.963f, 50.32201f)), owning_building_guid = 61) @@ -2075,21 +6043,64 @@ object Map10 { // Amerish LocalObject(1206, Locker.Constructor(Vector3(3507.741f, 4708.835f, 50.32201f)), owning_building_guid = 61) LocalObject(1207, Locker.Constructor(Vector3(3509.143f, 4686.963f, 50.32201f)), owning_building_guid = 61) LocalObject(1208, Locker.Constructor(Vector3(3509.143f, 4708.835f, 50.32201f)), owning_building_guid = 61) - LocalObject(1691, Terminal.Constructor(Vector3(3509.446f, 4692.129f, 51.66002f), order_terminal), owning_building_guid = 61) - LocalObject(1692, Terminal.Constructor(Vector3(3509.446f, 4697.853f, 51.66002f), order_terminal), owning_building_guid = 61) - LocalObject(1693, Terminal.Constructor(Vector3(3509.446f, 4703.234f, 51.66002f), order_terminal), owning_building_guid = 61) - LocalObject(2323, SpawnTube.Constructor(Vector3(3498.706f, 4689.742f, 49.81001f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2324, SpawnTube.Constructor(Vector3(3498.706f, 4706.152f, 49.81001f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(2146, Painbox.Constructor(Vector3(3493.493f, 4694.849f, 51.61742f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2147, Painbox.Constructor(Vector3(3505.127f, 4692.078f, 50.42802f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(2148, Painbox.Constructor(Vector3(3505.259f, 4704.107f, 50.42802f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1691, + Terminal.Constructor(Vector3(3509.446f, 4692.129f, 51.66002f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1692, + Terminal.Constructor(Vector3(3509.446f, 4697.853f, 51.66002f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1693, + Terminal.Constructor(Vector3(3509.446f, 4703.234f, 51.66002f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 2323, + SpawnTube.Constructor(Vector3(3498.706f, 4689.742f, 49.81001f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2324, + SpawnTube.Constructor(Vector3(3498.706f, 4706.152f, 49.81001f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 2146, + Painbox.Constructor(Vector3(3493.493f, 4694.849f, 51.61742f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2147, + Painbox.Constructor(Vector3(3505.127f, 4692.078f, 50.42802f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 2148, + Painbox.Constructor(Vector3(3505.259f, 4704.107f, 50.42802f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building21() def Building21(): Unit = { // Name: SE_Heyoka_Tower Type: tower_b GUID: 62, MapID: 21 - LocalBuilding("SE_Heyoka_Tower", 62, 21, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4456f, 2654f, 69.41827f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2397, CaptureTerminal.Constructor(Vector3(4472.587f, 2653.897f, 89.41727f), secondary_capture), owning_building_guid = 62) + LocalBuilding( + "SE_Heyoka_Tower", + 62, + 21, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4456f, 2654f, 69.41827f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2397, + CaptureTerminal.Constructor(Vector3(4472.587f, 2653.897f, 89.41727f), secondary_capture), + owning_building_guid = 62 + ) LocalObject(395, Door.Constructor(Vector3(4468f, 2646f, 70.93827f)), owning_building_guid = 62) LocalObject(396, Door.Constructor(Vector3(4468f, 2646f, 80.93828f)), owning_building_guid = 62) LocalObject(397, Door.Constructor(Vector3(4468f, 2646f, 100.9383f)), owning_building_guid = 62) @@ -2098,12 +6109,42 @@ object Map10 { // Amerish LocalObject(400, Door.Constructor(Vector3(4468f, 2662f, 100.9383f)), owning_building_guid = 62) LocalObject(2527, Door.Constructor(Vector3(4467.147f, 2642.794f, 60.75427f)), owning_building_guid = 62) LocalObject(2528, Door.Constructor(Vector3(4467.147f, 2659.204f, 60.75427f)), owning_building_guid = 62) - LocalObject(983, IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 70.87927f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 398) - LocalObject(984, IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 80.87927f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 399) - LocalObject(985, IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 100.8793f), Vector3(0, 0, 0)), owning_building_guid = 62, door_guid = 400) - LocalObject(986, IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 70.87927f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 395) - LocalObject(987, IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 80.87927f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 396) - LocalObject(988, IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 100.8793f), Vector3(0, 0, 180)), owning_building_guid = 62, door_guid = 397) + LocalObject( + 983, + IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 70.87927f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 398 + ) + LocalObject( + 984, + IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 80.87927f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 399 + ) + LocalObject( + 985, + IFFLock.Constructor(Vector3(4465.957f, 2662.811f, 100.8793f), Vector3(0, 0, 0)), + owning_building_guid = 62, + door_guid = 400 + ) + LocalObject( + 986, + IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 70.87927f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 395 + ) + LocalObject( + 987, + IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 80.87927f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 396 + ) + LocalObject( + 988, + IFFLock.Constructor(Vector3(4470.047f, 2645.189f, 100.8793f), Vector3(0, 0, 180)), + owning_building_guid = 62, + door_guid = 397 + ) LocalObject(1269, Locker.Constructor(Vector3(4471.716f, 2638.963f, 59.41227f)), owning_building_guid = 62) LocalObject(1270, Locker.Constructor(Vector3(4471.751f, 2660.835f, 59.41227f)), owning_building_guid = 62) LocalObject(1271, Locker.Constructor(Vector3(4473.053f, 2638.963f, 59.41227f)), owning_building_guid = 62) @@ -2112,21 +6153,64 @@ object Map10 { // Amerish LocalObject(1274, Locker.Constructor(Vector3(4475.741f, 2660.835f, 59.41227f)), owning_building_guid = 62) LocalObject(1275, Locker.Constructor(Vector3(4477.143f, 2638.963f, 59.41227f)), owning_building_guid = 62) LocalObject(1276, Locker.Constructor(Vector3(4477.143f, 2660.835f, 59.41227f)), owning_building_guid = 62) - LocalObject(1717, Terminal.Constructor(Vector3(4477.446f, 2644.129f, 60.75027f), order_terminal), owning_building_guid = 62) - LocalObject(1718, Terminal.Constructor(Vector3(4477.446f, 2649.853f, 60.75027f), order_terminal), owning_building_guid = 62) - LocalObject(1719, Terminal.Constructor(Vector3(4477.446f, 2655.234f, 60.75027f), order_terminal), owning_building_guid = 62) - LocalObject(2340, SpawnTube.Constructor(Vector3(4466.706f, 2641.742f, 58.90028f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2341, SpawnTube.Constructor(Vector3(4466.706f, 2658.152f, 58.90028f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 62) - LocalObject(2158, Painbox.Constructor(Vector3(4461.493f, 2646.849f, 60.70767f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2159, Painbox.Constructor(Vector3(4473.127f, 2644.078f, 59.51827f), painbox_radius_continuous), owning_building_guid = 62) - LocalObject(2160, Painbox.Constructor(Vector3(4473.259f, 2656.107f, 59.51827f), painbox_radius_continuous), owning_building_guid = 62) + LocalObject( + 1717, + Terminal.Constructor(Vector3(4477.446f, 2644.129f, 60.75027f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1718, + Terminal.Constructor(Vector3(4477.446f, 2649.853f, 60.75027f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 1719, + Terminal.Constructor(Vector3(4477.446f, 2655.234f, 60.75027f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 2340, + SpawnTube.Constructor(Vector3(4466.706f, 2641.742f, 58.90028f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2341, + SpawnTube.Constructor(Vector3(4466.706f, 2658.152f, 58.90028f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 62 + ) + LocalObject( + 2158, + Painbox.Constructor(Vector3(4461.493f, 2646.849f, 60.70767f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2159, + Painbox.Constructor(Vector3(4473.127f, 2644.078f, 59.51827f), painbox_radius_continuous), + owning_building_guid = 62 + ) + LocalObject( + 2160, + Painbox.Constructor(Vector3(4473.259f, 2656.107f, 59.51827f), painbox_radius_continuous), + owning_building_guid = 62 + ) } Building24() def Building24(): Unit = { // Name: NE_Heyoka_Tower Type: tower_b GUID: 63, MapID: 24 - LocalBuilding("NE_Heyoka_Tower", 63, 24, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4702f, 3278f, 55.6656f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2398, CaptureTerminal.Constructor(Vector3(4718.587f, 3277.897f, 75.6646f), secondary_capture), owning_building_guid = 63) + LocalBuilding( + "NE_Heyoka_Tower", + 63, + 24, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4702f, 3278f, 55.6656f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2398, + CaptureTerminal.Constructor(Vector3(4718.587f, 3277.897f, 75.6646f), secondary_capture), + owning_building_guid = 63 + ) LocalObject(423, Door.Constructor(Vector3(4714f, 3270f, 57.1856f)), owning_building_guid = 63) LocalObject(424, Door.Constructor(Vector3(4714f, 3270f, 67.18559f)), owning_building_guid = 63) LocalObject(425, Door.Constructor(Vector3(4714f, 3270f, 87.18559f)), owning_building_guid = 63) @@ -2135,12 +6219,42 @@ object Map10 { // Amerish LocalObject(428, Door.Constructor(Vector3(4714f, 3286f, 87.18559f)), owning_building_guid = 63) LocalObject(2535, Door.Constructor(Vector3(4713.147f, 3266.794f, 47.00159f)), owning_building_guid = 63) LocalObject(2536, Door.Constructor(Vector3(4713.147f, 3283.204f, 47.00159f)), owning_building_guid = 63) - LocalObject(1005, IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 57.12659f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 426) - LocalObject(1006, IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 67.12659f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 427) - LocalObject(1007, IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 87.12659f), Vector3(0, 0, 0)), owning_building_guid = 63, door_guid = 428) - LocalObject(1009, IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 57.12659f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 423) - LocalObject(1010, IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 67.12659f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 424) - LocalObject(1011, IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 87.12659f), Vector3(0, 0, 180)), owning_building_guid = 63, door_guid = 425) + LocalObject( + 1005, + IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 57.12659f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 426 + ) + LocalObject( + 1006, + IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 67.12659f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 427 + ) + LocalObject( + 1007, + IFFLock.Constructor(Vector3(4711.957f, 3286.811f, 87.12659f), Vector3(0, 0, 0)), + owning_building_guid = 63, + door_guid = 428 + ) + LocalObject( + 1009, + IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 57.12659f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 423 + ) + LocalObject( + 1010, + IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 67.12659f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 424 + ) + LocalObject( + 1011, + IFFLock.Constructor(Vector3(4716.047f, 3269.189f, 87.12659f), Vector3(0, 0, 180)), + owning_building_guid = 63, + door_guid = 425 + ) LocalObject(1301, Locker.Constructor(Vector3(4717.716f, 3262.963f, 45.6596f)), owning_building_guid = 63) LocalObject(1302, Locker.Constructor(Vector3(4717.751f, 3284.835f, 45.6596f)), owning_building_guid = 63) LocalObject(1303, Locker.Constructor(Vector3(4719.053f, 3262.963f, 45.6596f)), owning_building_guid = 63) @@ -2149,21 +6263,64 @@ object Map10 { // Amerish LocalObject(1306, Locker.Constructor(Vector3(4721.741f, 3284.835f, 45.6596f)), owning_building_guid = 63) LocalObject(1307, Locker.Constructor(Vector3(4723.143f, 3262.963f, 45.6596f)), owning_building_guid = 63) LocalObject(1308, Locker.Constructor(Vector3(4723.143f, 3284.835f, 45.6596f)), owning_building_guid = 63) - LocalObject(1730, Terminal.Constructor(Vector3(4723.446f, 3268.129f, 46.9976f), order_terminal), owning_building_guid = 63) - LocalObject(1731, Terminal.Constructor(Vector3(4723.446f, 3273.853f, 46.9976f), order_terminal), owning_building_guid = 63) - LocalObject(1732, Terminal.Constructor(Vector3(4723.446f, 3279.234f, 46.9976f), order_terminal), owning_building_guid = 63) - LocalObject(2348, SpawnTube.Constructor(Vector3(4712.706f, 3265.742f, 45.1476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2349, SpawnTube.Constructor(Vector3(4712.706f, 3282.152f, 45.1476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 63) - LocalObject(2161, Painbox.Constructor(Vector3(4707.493f, 3270.849f, 46.95499f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2162, Painbox.Constructor(Vector3(4719.127f, 3268.078f, 45.76559f), painbox_radius_continuous), owning_building_guid = 63) - LocalObject(2163, Painbox.Constructor(Vector3(4719.259f, 3280.107f, 45.76559f), painbox_radius_continuous), owning_building_guid = 63) + LocalObject( + 1730, + Terminal.Constructor(Vector3(4723.446f, 3268.129f, 46.9976f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1731, + Terminal.Constructor(Vector3(4723.446f, 3273.853f, 46.9976f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 1732, + Terminal.Constructor(Vector3(4723.446f, 3279.234f, 46.9976f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 2348, + SpawnTube.Constructor(Vector3(4712.706f, 3265.742f, 45.1476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2349, + SpawnTube.Constructor(Vector3(4712.706f, 3282.152f, 45.1476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 63 + ) + LocalObject( + 2161, + Painbox.Constructor(Vector3(4707.493f, 3270.849f, 46.95499f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2162, + Painbox.Constructor(Vector3(4719.127f, 3268.078f, 45.76559f), painbox_radius_continuous), + owning_building_guid = 63 + ) + LocalObject( + 2163, + Painbox.Constructor(Vector3(4719.259f, 3280.107f, 45.76559f), painbox_radius_continuous), + owning_building_guid = 63 + ) } Building31() def Building31(): Unit = { // Name: SE_Tumas_Tower Type: tower_b GUID: 64, MapID: 31 - LocalBuilding("SE_Tumas_Tower", 64, 31, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4988f, 6190f, 41.46329f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2401, CaptureTerminal.Constructor(Vector3(5004.587f, 6189.897f, 61.46229f), secondary_capture), owning_building_guid = 64) + LocalBuilding( + "SE_Tumas_Tower", + 64, + 31, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4988f, 6190f, 41.46329f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2401, + CaptureTerminal.Constructor(Vector3(5004.587f, 6189.897f, 61.46229f), secondary_capture), + owning_building_guid = 64 + ) LocalObject(464, Door.Constructor(Vector3(5000f, 6182f, 42.98329f)), owning_building_guid = 64) LocalObject(465, Door.Constructor(Vector3(5000f, 6182f, 52.98329f)), owning_building_guid = 64) LocalObject(466, Door.Constructor(Vector3(5000f, 6182f, 72.98329f)), owning_building_guid = 64) @@ -2172,12 +6329,42 @@ object Map10 { // Amerish LocalObject(469, Door.Constructor(Vector3(5000f, 6198f, 72.98329f)), owning_building_guid = 64) LocalObject(2544, Door.Constructor(Vector3(4999.147f, 6178.794f, 32.79929f)), owning_building_guid = 64) LocalObject(2545, Door.Constructor(Vector3(4999.147f, 6195.204f, 32.79929f)), owning_building_guid = 64) - LocalObject(1033, IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 42.92429f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 467) - LocalObject(1034, IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 52.92429f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 468) - LocalObject(1035, IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 72.92429f), Vector3(0, 0, 0)), owning_building_guid = 64, door_guid = 469) - LocalObject(1036, IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 42.92429f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 464) - LocalObject(1037, IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 52.92429f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 465) - LocalObject(1038, IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 72.92429f), Vector3(0, 0, 180)), owning_building_guid = 64, door_guid = 466) + LocalObject( + 1033, + IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 42.92429f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 467 + ) + LocalObject( + 1034, + IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 52.92429f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 468 + ) + LocalObject( + 1035, + IFFLock.Constructor(Vector3(4997.957f, 6198.811f, 72.92429f), Vector3(0, 0, 0)), + owning_building_guid = 64, + door_guid = 469 + ) + LocalObject( + 1036, + IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 42.92429f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 464 + ) + LocalObject( + 1037, + IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 52.92429f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 465 + ) + LocalObject( + 1038, + IFFLock.Constructor(Vector3(5002.047f, 6181.189f, 72.92429f), Vector3(0, 0, 180)), + owning_building_guid = 64, + door_guid = 466 + ) LocalObject(1337, Locker.Constructor(Vector3(5003.716f, 6174.963f, 31.45729f)), owning_building_guid = 64) LocalObject(1338, Locker.Constructor(Vector3(5003.751f, 6196.835f, 31.45729f)), owning_building_guid = 64) LocalObject(1339, Locker.Constructor(Vector3(5005.053f, 6174.963f, 31.45729f)), owning_building_guid = 64) @@ -2186,21 +6373,64 @@ object Map10 { // Amerish LocalObject(1342, Locker.Constructor(Vector3(5007.741f, 6196.835f, 31.45729f)), owning_building_guid = 64) LocalObject(1343, Locker.Constructor(Vector3(5009.143f, 6174.963f, 31.45729f)), owning_building_guid = 64) LocalObject(1344, Locker.Constructor(Vector3(5009.143f, 6196.835f, 31.45729f)), owning_building_guid = 64) - LocalObject(1745, Terminal.Constructor(Vector3(5009.446f, 6180.129f, 32.79529f), order_terminal), owning_building_guid = 64) - LocalObject(1746, Terminal.Constructor(Vector3(5009.446f, 6185.853f, 32.79529f), order_terminal), owning_building_guid = 64) - LocalObject(1747, Terminal.Constructor(Vector3(5009.446f, 6191.234f, 32.79529f), order_terminal), owning_building_guid = 64) - LocalObject(2357, SpawnTube.Constructor(Vector3(4998.706f, 6177.742f, 30.94529f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2358, SpawnTube.Constructor(Vector3(4998.706f, 6194.152f, 30.94529f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(2168, Painbox.Constructor(Vector3(4993.493f, 6182.849f, 32.75269f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2171, Painbox.Constructor(Vector3(5005.127f, 6180.078f, 31.56329f), painbox_radius_continuous), owning_building_guid = 64) - LocalObject(2172, Painbox.Constructor(Vector3(5005.259f, 6192.107f, 31.56329f), painbox_radius_continuous), owning_building_guid = 64) + LocalObject( + 1745, + Terminal.Constructor(Vector3(5009.446f, 6180.129f, 32.79529f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1746, + Terminal.Constructor(Vector3(5009.446f, 6185.853f, 32.79529f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 1747, + Terminal.Constructor(Vector3(5009.446f, 6191.234f, 32.79529f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 2357, + SpawnTube.Constructor(Vector3(4998.706f, 6177.742f, 30.94529f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2358, + SpawnTube.Constructor(Vector3(4998.706f, 6194.152f, 30.94529f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 2168, + Painbox.Constructor(Vector3(4993.493f, 6182.849f, 32.75269f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2171, + Painbox.Constructor(Vector3(5005.127f, 6180.078f, 31.56329f), painbox_radius_continuous), + owning_building_guid = 64 + ) + LocalObject( + 2172, + Painbox.Constructor(Vector3(5005.259f, 6192.107f, 31.56329f), painbox_radius_continuous), + owning_building_guid = 64 + ) } Building25() def Building25(): Unit = { // Name: S_Oshur_Warpgate_Tower Type: tower_b GUID: 65, MapID: 25 - LocalBuilding("S_Oshur_Warpgate_Tower", 65, 25, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5122f, 4320f, 59.33499f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(2402, CaptureTerminal.Constructor(Vector3(5138.587f, 4319.897f, 79.33399f), secondary_capture), owning_building_guid = 65) + LocalBuilding( + "S_Oshur_Warpgate_Tower", + 65, + 25, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5122f, 4320f, 59.33499f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 2402, + CaptureTerminal.Constructor(Vector3(5138.587f, 4319.897f, 79.33399f), secondary_capture), + owning_building_guid = 65 + ) LocalObject(470, Door.Constructor(Vector3(5134f, 4312f, 60.85499f)), owning_building_guid = 65) LocalObject(471, Door.Constructor(Vector3(5134f, 4312f, 70.855f)), owning_building_guid = 65) LocalObject(472, Door.Constructor(Vector3(5134f, 4312f, 90.855f)), owning_building_guid = 65) @@ -2209,12 +6439,42 @@ object Map10 { // Amerish LocalObject(475, Door.Constructor(Vector3(5134f, 4328f, 90.855f)), owning_building_guid = 65) LocalObject(2546, Door.Constructor(Vector3(5133.147f, 4308.794f, 50.67099f)), owning_building_guid = 65) LocalObject(2547, Door.Constructor(Vector3(5133.147f, 4325.204f, 50.67099f)), owning_building_guid = 65) - LocalObject(1039, IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 60.79599f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 473) - LocalObject(1040, IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 70.79599f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 474) - LocalObject(1041, IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 90.79599f), Vector3(0, 0, 0)), owning_building_guid = 65, door_guid = 475) - LocalObject(1042, IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 60.79599f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 470) - LocalObject(1043, IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 70.79599f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 471) - LocalObject(1044, IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 90.79599f), Vector3(0, 0, 180)), owning_building_guid = 65, door_guid = 472) + LocalObject( + 1039, + IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 60.79599f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 473 + ) + LocalObject( + 1040, + IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 70.79599f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 474 + ) + LocalObject( + 1041, + IFFLock.Constructor(Vector3(5131.957f, 4328.811f, 90.79599f), Vector3(0, 0, 0)), + owning_building_guid = 65, + door_guid = 475 + ) + LocalObject( + 1042, + IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 60.79599f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 470 + ) + LocalObject( + 1043, + IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 70.79599f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 471 + ) + LocalObject( + 1044, + IFFLock.Constructor(Vector3(5136.047f, 4311.189f, 90.79599f), Vector3(0, 0, 180)), + owning_building_guid = 65, + door_guid = 472 + ) LocalObject(1345, Locker.Constructor(Vector3(5137.716f, 4304.963f, 49.32899f)), owning_building_guid = 65) LocalObject(1346, Locker.Constructor(Vector3(5137.751f, 4326.835f, 49.32899f)), owning_building_guid = 65) LocalObject(1347, Locker.Constructor(Vector3(5139.053f, 4304.963f, 49.32899f)), owning_building_guid = 65) @@ -2223,31 +6483,94 @@ object Map10 { // Amerish LocalObject(1350, Locker.Constructor(Vector3(5141.741f, 4326.835f, 49.32899f)), owning_building_guid = 65) LocalObject(1351, Locker.Constructor(Vector3(5143.143f, 4304.963f, 49.32899f)), owning_building_guid = 65) LocalObject(1352, Locker.Constructor(Vector3(5143.143f, 4326.835f, 49.32899f)), owning_building_guid = 65) - LocalObject(1748, Terminal.Constructor(Vector3(5143.446f, 4310.129f, 50.66699f), order_terminal), owning_building_guid = 65) - LocalObject(1749, Terminal.Constructor(Vector3(5143.446f, 4315.853f, 50.66699f), order_terminal), owning_building_guid = 65) - LocalObject(1750, Terminal.Constructor(Vector3(5143.446f, 4321.234f, 50.66699f), order_terminal), owning_building_guid = 65) - LocalObject(2359, SpawnTube.Constructor(Vector3(5132.706f, 4307.742f, 48.81699f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2360, SpawnTube.Constructor(Vector3(5132.706f, 4324.152f, 48.81699f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 65) - LocalObject(2173, Painbox.Constructor(Vector3(5127.493f, 4312.849f, 50.62439f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2174, Painbox.Constructor(Vector3(5139.127f, 4310.078f, 49.43499f), painbox_radius_continuous), owning_building_guid = 65) - LocalObject(2175, Painbox.Constructor(Vector3(5139.259f, 4322.107f, 49.43499f), painbox_radius_continuous), owning_building_guid = 65) + LocalObject( + 1748, + Terminal.Constructor(Vector3(5143.446f, 4310.129f, 50.66699f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1749, + Terminal.Constructor(Vector3(5143.446f, 4315.853f, 50.66699f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 1750, + Terminal.Constructor(Vector3(5143.446f, 4321.234f, 50.66699f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 2359, + SpawnTube.Constructor(Vector3(5132.706f, 4307.742f, 48.81699f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2360, + SpawnTube.Constructor(Vector3(5132.706f, 4324.152f, 48.81699f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 65 + ) + LocalObject( + 2173, + Painbox.Constructor(Vector3(5127.493f, 4312.849f, 50.62439f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2174, + Painbox.Constructor(Vector3(5139.127f, 4310.078f, 49.43499f), painbox_radius_continuous), + owning_building_guid = 65 + ) + LocalObject( + 2175, + Painbox.Constructor(Vector3(5139.259f, 4322.107f, 49.43499f), painbox_radius_continuous), + owning_building_guid = 65 + ) } Building17() def Building17(): Unit = { // Name: NW_Ikanam_Tower Type: tower_c GUID: 66, MapID: 17 - LocalBuilding("NW_Ikanam_Tower", 66, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2224f, 2782f, 52.59641f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2388, CaptureTerminal.Constructor(Vector3(2240.587f, 2781.897f, 62.59541f), secondary_capture), owning_building_guid = 66) + LocalBuilding( + "NW_Ikanam_Tower", + 66, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2224f, 2782f, 52.59641f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2388, + CaptureTerminal.Constructor(Vector3(2240.587f, 2781.897f, 62.59541f), secondary_capture), + owning_building_guid = 66 + ) LocalObject(290, Door.Constructor(Vector3(2236f, 2774f, 54.11741f)), owning_building_guid = 66) LocalObject(291, Door.Constructor(Vector3(2236f, 2774f, 74.11641f)), owning_building_guid = 66) LocalObject(292, Door.Constructor(Vector3(2236f, 2790f, 54.11741f)), owning_building_guid = 66) LocalObject(293, Door.Constructor(Vector3(2236f, 2790f, 74.11641f)), owning_building_guid = 66) LocalObject(2494, Door.Constructor(Vector3(2235.146f, 2770.794f, 43.93241f)), owning_building_guid = 66) LocalObject(2495, Door.Constructor(Vector3(2235.146f, 2787.204f, 43.93241f)), owning_building_guid = 66) - LocalObject(899, IFFLock.Constructor(Vector3(2233.957f, 2790.811f, 54.05741f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 292) - LocalObject(900, IFFLock.Constructor(Vector3(2233.957f, 2790.811f, 74.05741f), Vector3(0, 0, 0)), owning_building_guid = 66, door_guid = 293) - LocalObject(901, IFFLock.Constructor(Vector3(2238.047f, 2773.189f, 54.05741f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 290) - LocalObject(902, IFFLock.Constructor(Vector3(2238.047f, 2773.189f, 74.05741f), Vector3(0, 0, 180)), owning_building_guid = 66, door_guid = 291) + LocalObject( + 899, + IFFLock.Constructor(Vector3(2233.957f, 2790.811f, 54.05741f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 292 + ) + LocalObject( + 900, + IFFLock.Constructor(Vector3(2233.957f, 2790.811f, 74.05741f), Vector3(0, 0, 0)), + owning_building_guid = 66, + door_guid = 293 + ) + LocalObject( + 901, + IFFLock.Constructor(Vector3(2238.047f, 2773.189f, 54.05741f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 290 + ) + LocalObject( + 902, + IFFLock.Constructor(Vector3(2238.047f, 2773.189f, 74.05741f), Vector3(0, 0, 180)), + owning_building_guid = 66, + door_guid = 291 + ) LocalObject(1119, Locker.Constructor(Vector3(2239.716f, 2766.963f, 42.59041f)), owning_building_guid = 66) LocalObject(1120, Locker.Constructor(Vector3(2239.751f, 2788.835f, 42.59041f)), owning_building_guid = 66) LocalObject(1121, Locker.Constructor(Vector3(2241.053f, 2766.963f, 42.59041f)), owning_building_guid = 66) @@ -2256,39 +6579,126 @@ object Map10 { // Amerish LocalObject(1124, Locker.Constructor(Vector3(2243.741f, 2788.835f, 42.59041f)), owning_building_guid = 66) LocalObject(1125, Locker.Constructor(Vector3(2245.143f, 2766.963f, 42.59041f)), owning_building_guid = 66) LocalObject(1126, Locker.Constructor(Vector3(2245.143f, 2788.835f, 42.59041f)), owning_building_guid = 66) - LocalObject(1664, Terminal.Constructor(Vector3(2245.445f, 2772.129f, 43.92841f), order_terminal), owning_building_guid = 66) - LocalObject(1665, Terminal.Constructor(Vector3(2245.445f, 2777.853f, 43.92841f), order_terminal), owning_building_guid = 66) - LocalObject(1666, Terminal.Constructor(Vector3(2245.445f, 2783.234f, 43.92841f), order_terminal), owning_building_guid = 66) - LocalObject(2307, SpawnTube.Constructor(Vector3(2234.706f, 2769.742f, 42.07841f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2308, SpawnTube.Constructor(Vector3(2234.706f, 2786.152f, 42.07841f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(2002, ProximityTerminal.Constructor(Vector3(2222.907f, 2776.725f, 80.16641f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(2003, Terminal.Constructor(Vector3(2222.907f, 2776.725f, 80.16641f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(2005, ProximityTerminal.Constructor(Vector3(2222.907f, 2787.17f, 80.16641f), pad_landing_tower_frame), owning_building_guid = 66) - LocalObject(2006, Terminal.Constructor(Vector3(2222.907f, 2787.17f, 80.16641f), air_rearm_terminal), owning_building_guid = 66) - LocalObject(1519, FacilityTurret.Constructor(Vector3(2209.07f, 2767.045f, 71.53841f), manned_turret), owning_building_guid = 66) + LocalObject( + 1664, + Terminal.Constructor(Vector3(2245.445f, 2772.129f, 43.92841f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1665, + Terminal.Constructor(Vector3(2245.445f, 2777.853f, 43.92841f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1666, + Terminal.Constructor(Vector3(2245.445f, 2783.234f, 43.92841f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2307, + SpawnTube.Constructor(Vector3(2234.706f, 2769.742f, 42.07841f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2308, + SpawnTube.Constructor(Vector3(2234.706f, 2786.152f, 42.07841f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 2002, + ProximityTerminal.Constructor(Vector3(2222.907f, 2776.725f, 80.16641f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 2003, + Terminal.Constructor(Vector3(2222.907f, 2776.725f, 80.16641f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 2005, + ProximityTerminal.Constructor(Vector3(2222.907f, 2787.17f, 80.16641f), pad_landing_tower_frame), + owning_building_guid = 66 + ) + LocalObject( + 2006, + Terminal.Constructor(Vector3(2222.907f, 2787.17f, 80.16641f), air_rearm_terminal), + owning_building_guid = 66 + ) + LocalObject( + 1519, + FacilityTurret.Constructor(Vector3(2209.07f, 2767.045f, 71.53841f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1519, 5086) - LocalObject(1520, FacilityTurret.Constructor(Vector3(2247.497f, 2796.957f, 71.53841f), manned_turret), owning_building_guid = 66) + LocalObject( + 1520, + FacilityTurret.Constructor(Vector3(2247.497f, 2796.957f, 71.53841f), manned_turret), + owning_building_guid = 66 + ) TurretToWeapon(1520, 5087) - LocalObject(2131, Painbox.Constructor(Vector3(2228.454f, 2774.849f, 44.61591f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2132, Painbox.Constructor(Vector3(2240.923f, 2771.54f, 42.69641f), painbox_radius_continuous), owning_building_guid = 66) - LocalObject(2133, Painbox.Constructor(Vector3(2241.113f, 2784.022f, 42.69641f), painbox_radius_continuous), owning_building_guid = 66) + LocalObject( + 2131, + Painbox.Constructor(Vector3(2228.454f, 2774.849f, 44.61591f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2132, + Painbox.Constructor(Vector3(2240.923f, 2771.54f, 42.69641f), painbox_radius_continuous), + owning_building_guid = 66 + ) + LocalObject( + 2133, + Painbox.Constructor(Vector3(2241.113f, 2784.022f, 42.69641f), painbox_radius_continuous), + owning_building_guid = 66 + ) } Building35() def Building35(): Unit = { // Name: N_Onatha_Tower Type: tower_c GUID: 67, MapID: 35 - LocalBuilding("N_Onatha_Tower", 67, 35, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3352f, 6674f, 57.33703f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2390, CaptureTerminal.Constructor(Vector3(3368.587f, 6673.897f, 67.33603f), secondary_capture), owning_building_guid = 67) + LocalBuilding( + "N_Onatha_Tower", + 67, + 35, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3352f, 6674f, 57.33703f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2390, + CaptureTerminal.Constructor(Vector3(3368.587f, 6673.897f, 67.33603f), secondary_capture), + owning_building_guid = 67 + ) LocalObject(316, Door.Constructor(Vector3(3364f, 6666f, 58.85803f)), owning_building_guid = 67) LocalObject(317, Door.Constructor(Vector3(3364f, 6666f, 78.85703f)), owning_building_guid = 67) LocalObject(318, Door.Constructor(Vector3(3364f, 6682f, 58.85803f)), owning_building_guid = 67) LocalObject(319, Door.Constructor(Vector3(3364f, 6682f, 78.85703f)), owning_building_guid = 67) LocalObject(2504, Door.Constructor(Vector3(3363.146f, 6662.794f, 48.67303f)), owning_building_guid = 67) LocalObject(2505, Door.Constructor(Vector3(3363.146f, 6679.204f, 48.67303f)), owning_building_guid = 67) - LocalObject(920, IFFLock.Constructor(Vector3(3361.957f, 6682.811f, 58.79803f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 318) - LocalObject(921, IFFLock.Constructor(Vector3(3361.957f, 6682.811f, 78.79803f), Vector3(0, 0, 0)), owning_building_guid = 67, door_guid = 319) - LocalObject(923, IFFLock.Constructor(Vector3(3366.047f, 6665.189f, 58.79803f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 316) - LocalObject(924, IFFLock.Constructor(Vector3(3366.047f, 6665.189f, 78.79803f), Vector3(0, 0, 180)), owning_building_guid = 67, door_guid = 317) + LocalObject( + 920, + IFFLock.Constructor(Vector3(3361.957f, 6682.811f, 58.79803f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 318 + ) + LocalObject( + 921, + IFFLock.Constructor(Vector3(3361.957f, 6682.811f, 78.79803f), Vector3(0, 0, 0)), + owning_building_guid = 67, + door_guid = 319 + ) + LocalObject( + 923, + IFFLock.Constructor(Vector3(3366.047f, 6665.189f, 58.79803f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 316 + ) + LocalObject( + 924, + IFFLock.Constructor(Vector3(3366.047f, 6665.189f, 78.79803f), Vector3(0, 0, 180)), + owning_building_guid = 67, + door_guid = 317 + ) LocalObject(1158, Locker.Constructor(Vector3(3367.716f, 6658.963f, 47.33103f)), owning_building_guid = 67) LocalObject(1159, Locker.Constructor(Vector3(3367.751f, 6680.835f, 47.33103f)), owning_building_guid = 67) LocalObject(1162, Locker.Constructor(Vector3(3369.053f, 6658.963f, 47.33103f)), owning_building_guid = 67) @@ -2297,39 +6707,126 @@ object Map10 { // Amerish LocalObject(1170, Locker.Constructor(Vector3(3371.741f, 6680.835f, 47.33103f)), owning_building_guid = 67) LocalObject(1171, Locker.Constructor(Vector3(3373.143f, 6658.963f, 47.33103f)), owning_building_guid = 67) LocalObject(1172, Locker.Constructor(Vector3(3373.143f, 6680.835f, 47.33103f)), owning_building_guid = 67) - LocalObject(1678, Terminal.Constructor(Vector3(3373.445f, 6664.129f, 48.66903f), order_terminal), owning_building_guid = 67) - LocalObject(1679, Terminal.Constructor(Vector3(3373.445f, 6669.853f, 48.66903f), order_terminal), owning_building_guid = 67) - LocalObject(1680, Terminal.Constructor(Vector3(3373.445f, 6675.234f, 48.66903f), order_terminal), owning_building_guid = 67) - LocalObject(2317, SpawnTube.Constructor(Vector3(3362.706f, 6661.742f, 46.81903f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2318, SpawnTube.Constructor(Vector3(3362.706f, 6678.152f, 46.81903f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 67) - LocalObject(2008, ProximityTerminal.Constructor(Vector3(3350.907f, 6668.725f, 84.90703f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(2009, Terminal.Constructor(Vector3(3350.907f, 6668.725f, 84.90703f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(2011, ProximityTerminal.Constructor(Vector3(3350.907f, 6679.17f, 84.90703f), pad_landing_tower_frame), owning_building_guid = 67) - LocalObject(2012, Terminal.Constructor(Vector3(3350.907f, 6679.17f, 84.90703f), air_rearm_terminal), owning_building_guid = 67) - LocalObject(1530, FacilityTurret.Constructor(Vector3(3337.07f, 6659.045f, 76.27903f), manned_turret), owning_building_guid = 67) + LocalObject( + 1678, + Terminal.Constructor(Vector3(3373.445f, 6664.129f, 48.66903f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1679, + Terminal.Constructor(Vector3(3373.445f, 6669.853f, 48.66903f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1680, + Terminal.Constructor(Vector3(3373.445f, 6675.234f, 48.66903f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2317, + SpawnTube.Constructor(Vector3(3362.706f, 6661.742f, 46.81903f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2318, + SpawnTube.Constructor(Vector3(3362.706f, 6678.152f, 46.81903f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 67 + ) + LocalObject( + 2008, + ProximityTerminal.Constructor(Vector3(3350.907f, 6668.725f, 84.90703f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 2009, + Terminal.Constructor(Vector3(3350.907f, 6668.725f, 84.90703f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 2011, + ProximityTerminal.Constructor(Vector3(3350.907f, 6679.17f, 84.90703f), pad_landing_tower_frame), + owning_building_guid = 67 + ) + LocalObject( + 2012, + Terminal.Constructor(Vector3(3350.907f, 6679.17f, 84.90703f), air_rearm_terminal), + owning_building_guid = 67 + ) + LocalObject( + 1530, + FacilityTurret.Constructor(Vector3(3337.07f, 6659.045f, 76.27903f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1530, 5088) - LocalObject(1533, FacilityTurret.Constructor(Vector3(3375.497f, 6688.957f, 76.27903f), manned_turret), owning_building_guid = 67) + LocalObject( + 1533, + FacilityTurret.Constructor(Vector3(3375.497f, 6688.957f, 76.27903f), manned_turret), + owning_building_guid = 67 + ) TurretToWeapon(1533, 5089) - LocalObject(2137, Painbox.Constructor(Vector3(3356.454f, 6666.849f, 49.35653f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2138, Painbox.Constructor(Vector3(3368.923f, 6663.54f, 47.43703f), painbox_radius_continuous), owning_building_guid = 67) - LocalObject(2139, Painbox.Constructor(Vector3(3369.113f, 6676.022f, 47.43703f), painbox_radius_continuous), owning_building_guid = 67) + LocalObject( + 2137, + Painbox.Constructor(Vector3(3356.454f, 6666.849f, 49.35653f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2138, + Painbox.Constructor(Vector3(3368.923f, 6663.54f, 47.43703f), painbox_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 2139, + Painbox.Constructor(Vector3(3369.113f, 6676.022f, 47.43703f), painbox_radius_continuous), + owning_building_guid = 67 + ) } Building18() def Building18(): Unit = { // Name: NW_Cetan_Tower Type: tower_c GUID: 68, MapID: 18 - LocalBuilding("NW_Cetan_Tower", 68, 18, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3368f, 3472f, 49.55655f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2391, CaptureTerminal.Constructor(Vector3(3384.587f, 3471.897f, 59.55555f), secondary_capture), owning_building_guid = 68) + LocalBuilding( + "NW_Cetan_Tower", + 68, + 18, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3368f, 3472f, 49.55655f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2391, + CaptureTerminal.Constructor(Vector3(3384.587f, 3471.897f, 59.55555f), secondary_capture), + owning_building_guid = 68 + ) LocalObject(321, Door.Constructor(Vector3(3380f, 3464f, 51.07755f)), owning_building_guid = 68) LocalObject(322, Door.Constructor(Vector3(3380f, 3464f, 71.07655f)), owning_building_guid = 68) LocalObject(323, Door.Constructor(Vector3(3380f, 3480f, 51.07755f)), owning_building_guid = 68) LocalObject(324, Door.Constructor(Vector3(3380f, 3480f, 71.07655f)), owning_building_guid = 68) LocalObject(2506, Door.Constructor(Vector3(3379.146f, 3460.794f, 40.89256f)), owning_building_guid = 68) LocalObject(2507, Door.Constructor(Vector3(3379.146f, 3477.204f, 40.89256f)), owning_building_guid = 68) - LocalObject(926, IFFLock.Constructor(Vector3(3377.957f, 3480.811f, 51.01755f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 323) - LocalObject(927, IFFLock.Constructor(Vector3(3377.957f, 3480.811f, 71.01756f), Vector3(0, 0, 0)), owning_building_guid = 68, door_guid = 324) - LocalObject(928, IFFLock.Constructor(Vector3(3382.047f, 3463.189f, 51.01755f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 321) - LocalObject(929, IFFLock.Constructor(Vector3(3382.047f, 3463.189f, 71.01756f), Vector3(0, 0, 180)), owning_building_guid = 68, door_guid = 322) + LocalObject( + 926, + IFFLock.Constructor(Vector3(3377.957f, 3480.811f, 51.01755f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 323 + ) + LocalObject( + 927, + IFFLock.Constructor(Vector3(3377.957f, 3480.811f, 71.01756f), Vector3(0, 0, 0)), + owning_building_guid = 68, + door_guid = 324 + ) + LocalObject( + 928, + IFFLock.Constructor(Vector3(3382.047f, 3463.189f, 51.01755f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 321 + ) + LocalObject( + 929, + IFFLock.Constructor(Vector3(3382.047f, 3463.189f, 71.01756f), Vector3(0, 0, 180)), + owning_building_guid = 68, + door_guid = 322 + ) LocalObject(1175, Locker.Constructor(Vector3(3383.716f, 3456.963f, 39.55055f)), owning_building_guid = 68) LocalObject(1176, Locker.Constructor(Vector3(3383.751f, 3478.835f, 39.55055f)), owning_building_guid = 68) LocalObject(1181, Locker.Constructor(Vector3(3385.053f, 3456.963f, 39.55055f)), owning_building_guid = 68) @@ -2338,39 +6835,126 @@ object Map10 { // Amerish LocalObject(1188, Locker.Constructor(Vector3(3387.741f, 3478.835f, 39.55055f)), owning_building_guid = 68) LocalObject(1191, Locker.Constructor(Vector3(3389.143f, 3456.963f, 39.55055f)), owning_building_guid = 68) LocalObject(1192, Locker.Constructor(Vector3(3389.143f, 3478.835f, 39.55055f)), owning_building_guid = 68) - LocalObject(1681, Terminal.Constructor(Vector3(3389.445f, 3462.129f, 40.88855f), order_terminal), owning_building_guid = 68) - LocalObject(1682, Terminal.Constructor(Vector3(3389.445f, 3467.853f, 40.88855f), order_terminal), owning_building_guid = 68) - LocalObject(1683, Terminal.Constructor(Vector3(3389.445f, 3473.234f, 40.88855f), order_terminal), owning_building_guid = 68) - LocalObject(2319, SpawnTube.Constructor(Vector3(3378.706f, 3459.742f, 39.03855f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2320, SpawnTube.Constructor(Vector3(3378.706f, 3476.152f, 39.03855f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 68) - LocalObject(2014, ProximityTerminal.Constructor(Vector3(3366.907f, 3466.725f, 77.12656f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(2015, Terminal.Constructor(Vector3(3366.907f, 3466.725f, 77.12656f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(2017, ProximityTerminal.Constructor(Vector3(3366.907f, 3477.17f, 77.12656f), pad_landing_tower_frame), owning_building_guid = 68) - LocalObject(2018, Terminal.Constructor(Vector3(3366.907f, 3477.17f, 77.12656f), air_rearm_terminal), owning_building_guid = 68) - LocalObject(1531, FacilityTurret.Constructor(Vector3(3353.07f, 3457.045f, 68.49855f), manned_turret), owning_building_guid = 68) + LocalObject( + 1681, + Terminal.Constructor(Vector3(3389.445f, 3462.129f, 40.88855f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1682, + Terminal.Constructor(Vector3(3389.445f, 3467.853f, 40.88855f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1683, + Terminal.Constructor(Vector3(3389.445f, 3473.234f, 40.88855f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2319, + SpawnTube.Constructor(Vector3(3378.706f, 3459.742f, 39.03855f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2320, + SpawnTube.Constructor(Vector3(3378.706f, 3476.152f, 39.03855f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 68 + ) + LocalObject( + 2014, + ProximityTerminal.Constructor(Vector3(3366.907f, 3466.725f, 77.12656f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 2015, + Terminal.Constructor(Vector3(3366.907f, 3466.725f, 77.12656f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 2017, + ProximityTerminal.Constructor(Vector3(3366.907f, 3477.17f, 77.12656f), pad_landing_tower_frame), + owning_building_guid = 68 + ) + LocalObject( + 2018, + Terminal.Constructor(Vector3(3366.907f, 3477.17f, 77.12656f), air_rearm_terminal), + owning_building_guid = 68 + ) + LocalObject( + 1531, + FacilityTurret.Constructor(Vector3(3353.07f, 3457.045f, 68.49855f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1531, 5090) - LocalObject(1534, FacilityTurret.Constructor(Vector3(3391.497f, 3486.957f, 68.49855f), manned_turret), owning_building_guid = 68) + LocalObject( + 1534, + FacilityTurret.Constructor(Vector3(3391.497f, 3486.957f, 68.49855f), manned_turret), + owning_building_guid = 68 + ) TurretToWeapon(1534, 5091) - LocalObject(2140, Painbox.Constructor(Vector3(3372.454f, 3464.849f, 41.57605f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2141, Painbox.Constructor(Vector3(3384.923f, 3461.54f, 39.65656f), painbox_radius_continuous), owning_building_guid = 68) - LocalObject(2142, Painbox.Constructor(Vector3(3385.113f, 3474.022f, 39.65656f), painbox_radius_continuous), owning_building_guid = 68) + LocalObject( + 2140, + Painbox.Constructor(Vector3(3372.454f, 3464.849f, 41.57605f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2141, + Painbox.Constructor(Vector3(3384.923f, 3461.54f, 39.65656f), painbox_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 2142, + Painbox.Constructor(Vector3(3385.113f, 3474.022f, 39.65656f), painbox_radius_continuous), + owning_building_guid = 68 + ) } Building47() def Building47(): Unit = { // Name: Cetan_Tower Type: tower_c GUID: 69, MapID: 47 - LocalBuilding("Cetan_Tower", 69, 47, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3686f, 2664f, 68.50925f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2394, CaptureTerminal.Constructor(Vector3(3702.587f, 2663.897f, 78.50825f), secondary_capture), owning_building_guid = 69) + LocalBuilding( + "Cetan_Tower", + 69, + 47, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3686f, 2664f, 68.50925f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2394, + CaptureTerminal.Constructor(Vector3(3702.587f, 2663.897f, 78.50825f), secondary_capture), + owning_building_guid = 69 + ) LocalObject(352, Door.Constructor(Vector3(3698f, 2656f, 70.03025f)), owning_building_guid = 69) LocalObject(353, Door.Constructor(Vector3(3698f, 2656f, 90.02925f)), owning_building_guid = 69) LocalObject(354, Door.Constructor(Vector3(3698f, 2672f, 70.03025f)), owning_building_guid = 69) LocalObject(355, Door.Constructor(Vector3(3698f, 2672f, 90.02925f)), owning_building_guid = 69) LocalObject(2515, Door.Constructor(Vector3(3697.146f, 2652.794f, 59.84525f)), owning_building_guid = 69) LocalObject(2516, Door.Constructor(Vector3(3697.146f, 2669.204f, 59.84525f)), owning_building_guid = 69) - LocalObject(952, IFFLock.Constructor(Vector3(3695.957f, 2672.811f, 69.97025f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 354) - LocalObject(953, IFFLock.Constructor(Vector3(3695.957f, 2672.811f, 89.97025f), Vector3(0, 0, 0)), owning_building_guid = 69, door_guid = 355) - LocalObject(954, IFFLock.Constructor(Vector3(3700.047f, 2655.189f, 69.97025f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 352) - LocalObject(955, IFFLock.Constructor(Vector3(3700.047f, 2655.189f, 89.97025f), Vector3(0, 0, 180)), owning_building_guid = 69, door_guid = 353) + LocalObject( + 952, + IFFLock.Constructor(Vector3(3695.957f, 2672.811f, 69.97025f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 354 + ) + LocalObject( + 953, + IFFLock.Constructor(Vector3(3695.957f, 2672.811f, 89.97025f), Vector3(0, 0, 0)), + owning_building_guid = 69, + door_guid = 355 + ) + LocalObject( + 954, + IFFLock.Constructor(Vector3(3700.047f, 2655.189f, 69.97025f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 352 + ) + LocalObject( + 955, + IFFLock.Constructor(Vector3(3700.047f, 2655.189f, 89.97025f), Vector3(0, 0, 180)), + owning_building_guid = 69, + door_guid = 353 + ) LocalObject(1221, Locker.Constructor(Vector3(3701.716f, 2648.963f, 58.50325f)), owning_building_guid = 69) LocalObject(1222, Locker.Constructor(Vector3(3701.751f, 2670.835f, 58.50325f)), owning_building_guid = 69) LocalObject(1223, Locker.Constructor(Vector3(3703.053f, 2648.963f, 58.50325f)), owning_building_guid = 69) @@ -2379,39 +6963,126 @@ object Map10 { // Amerish LocalObject(1226, Locker.Constructor(Vector3(3705.741f, 2670.835f, 58.50325f)), owning_building_guid = 69) LocalObject(1227, Locker.Constructor(Vector3(3707.143f, 2648.963f, 58.50325f)), owning_building_guid = 69) LocalObject(1228, Locker.Constructor(Vector3(3707.143f, 2670.835f, 58.50325f)), owning_building_guid = 69) - LocalObject(1697, Terminal.Constructor(Vector3(3707.445f, 2654.129f, 59.84125f), order_terminal), owning_building_guid = 69) - LocalObject(1698, Terminal.Constructor(Vector3(3707.445f, 2659.853f, 59.84125f), order_terminal), owning_building_guid = 69) - LocalObject(1699, Terminal.Constructor(Vector3(3707.445f, 2665.234f, 59.84125f), order_terminal), owning_building_guid = 69) - LocalObject(2328, SpawnTube.Constructor(Vector3(3696.706f, 2651.742f, 57.99125f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2329, SpawnTube.Constructor(Vector3(3696.706f, 2668.152f, 57.99125f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(2020, ProximityTerminal.Constructor(Vector3(3684.907f, 2658.725f, 96.07925f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(2021, Terminal.Constructor(Vector3(3684.907f, 2658.725f, 96.07925f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(2023, ProximityTerminal.Constructor(Vector3(3684.907f, 2669.17f, 96.07925f), pad_landing_tower_frame), owning_building_guid = 69) - LocalObject(2024, Terminal.Constructor(Vector3(3684.907f, 2669.17f, 96.07925f), air_rearm_terminal), owning_building_guid = 69) - LocalObject(1545, FacilityTurret.Constructor(Vector3(3671.07f, 2649.045f, 87.45125f), manned_turret), owning_building_guid = 69) + LocalObject( + 1697, + Terminal.Constructor(Vector3(3707.445f, 2654.129f, 59.84125f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1698, + Terminal.Constructor(Vector3(3707.445f, 2659.853f, 59.84125f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1699, + Terminal.Constructor(Vector3(3707.445f, 2665.234f, 59.84125f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2328, + SpawnTube.Constructor(Vector3(3696.706f, 2651.742f, 57.99125f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2329, + SpawnTube.Constructor(Vector3(3696.706f, 2668.152f, 57.99125f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 2020, + ProximityTerminal.Constructor(Vector3(3684.907f, 2658.725f, 96.07925f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 2021, + Terminal.Constructor(Vector3(3684.907f, 2658.725f, 96.07925f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 2023, + ProximityTerminal.Constructor(Vector3(3684.907f, 2669.17f, 96.07925f), pad_landing_tower_frame), + owning_building_guid = 69 + ) + LocalObject( + 2024, + Terminal.Constructor(Vector3(3684.907f, 2669.17f, 96.07925f), air_rearm_terminal), + owning_building_guid = 69 + ) + LocalObject( + 1545, + FacilityTurret.Constructor(Vector3(3671.07f, 2649.045f, 87.45125f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1545, 5092) - LocalObject(1546, FacilityTurret.Constructor(Vector3(3709.497f, 2678.957f, 87.45125f), manned_turret), owning_building_guid = 69) + LocalObject( + 1546, + FacilityTurret.Constructor(Vector3(3709.497f, 2678.957f, 87.45125f), manned_turret), + owning_building_guid = 69 + ) TurretToWeapon(1546, 5093) - LocalObject(2149, Painbox.Constructor(Vector3(3690.454f, 2656.849f, 60.52875f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2150, Painbox.Constructor(Vector3(3702.923f, 2653.54f, 58.60925f), painbox_radius_continuous), owning_building_guid = 69) - LocalObject(2151, Painbox.Constructor(Vector3(3703.113f, 2666.022f, 58.60925f), painbox_radius_continuous), owning_building_guid = 69) + LocalObject( + 2149, + Painbox.Constructor(Vector3(3690.454f, 2656.849f, 60.52875f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2150, + Painbox.Constructor(Vector3(3702.923f, 2653.54f, 58.60925f), painbox_radius_continuous), + owning_building_guid = 69 + ) + LocalObject( + 2151, + Painbox.Constructor(Vector3(3703.113f, 2666.022f, 58.60925f), painbox_radius_continuous), + owning_building_guid = 69 + ) } Building33() def Building33(): Unit = { // Name: NW_Oshur_Warpgate_Tower Type: tower_c GUID: 70, MapID: 33 - LocalBuilding("NW_Oshur_Warpgate_Tower", 70, 33, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4000f, 5430f, 66.66187f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2396, CaptureTerminal.Constructor(Vector3(4016.587f, 5429.897f, 76.66087f), secondary_capture), owning_building_guid = 70) + LocalBuilding( + "NW_Oshur_Warpgate_Tower", + 70, + 33, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4000f, 5430f, 66.66187f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2396, + CaptureTerminal.Constructor(Vector3(4016.587f, 5429.897f, 76.66087f), secondary_capture), + owning_building_guid = 70 + ) LocalObject(375, Door.Constructor(Vector3(4012f, 5422f, 68.18288f)), owning_building_guid = 70) LocalObject(376, Door.Constructor(Vector3(4012f, 5422f, 88.18187f)), owning_building_guid = 70) LocalObject(377, Door.Constructor(Vector3(4012f, 5438f, 68.18288f)), owning_building_guid = 70) LocalObject(378, Door.Constructor(Vector3(4012f, 5438f, 88.18187f)), owning_building_guid = 70) LocalObject(2522, Door.Constructor(Vector3(4011.146f, 5418.794f, 57.99787f)), owning_building_guid = 70) LocalObject(2523, Door.Constructor(Vector3(4011.146f, 5435.204f, 57.99787f)), owning_building_guid = 70) - LocalObject(971, IFFLock.Constructor(Vector3(4009.957f, 5438.811f, 68.12287f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 377) - LocalObject(972, IFFLock.Constructor(Vector3(4009.957f, 5438.811f, 88.12287f), Vector3(0, 0, 0)), owning_building_guid = 70, door_guid = 378) - LocalObject(973, IFFLock.Constructor(Vector3(4014.047f, 5421.189f, 68.12287f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 375) - LocalObject(974, IFFLock.Constructor(Vector3(4014.047f, 5421.189f, 88.12287f), Vector3(0, 0, 180)), owning_building_guid = 70, door_guid = 376) + LocalObject( + 971, + IFFLock.Constructor(Vector3(4009.957f, 5438.811f, 68.12287f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 377 + ) + LocalObject( + 972, + IFFLock.Constructor(Vector3(4009.957f, 5438.811f, 88.12287f), Vector3(0, 0, 0)), + owning_building_guid = 70, + door_guid = 378 + ) + LocalObject( + 973, + IFFLock.Constructor(Vector3(4014.047f, 5421.189f, 68.12287f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 375 + ) + LocalObject( + 974, + IFFLock.Constructor(Vector3(4014.047f, 5421.189f, 88.12287f), Vector3(0, 0, 180)), + owning_building_guid = 70, + door_guid = 376 + ) LocalObject(1249, Locker.Constructor(Vector3(4015.716f, 5414.963f, 56.65587f)), owning_building_guid = 70) LocalObject(1250, Locker.Constructor(Vector3(4015.751f, 5436.835f, 56.65587f)), owning_building_guid = 70) LocalObject(1251, Locker.Constructor(Vector3(4017.053f, 5414.963f, 56.65587f)), owning_building_guid = 70) @@ -2420,39 +7091,126 @@ object Map10 { // Amerish LocalObject(1254, Locker.Constructor(Vector3(4019.741f, 5436.835f, 56.65587f)), owning_building_guid = 70) LocalObject(1255, Locker.Constructor(Vector3(4021.143f, 5414.963f, 56.65587f)), owning_building_guid = 70) LocalObject(1256, Locker.Constructor(Vector3(4021.143f, 5436.835f, 56.65587f)), owning_building_guid = 70) - LocalObject(1710, Terminal.Constructor(Vector3(4021.445f, 5420.129f, 57.99387f), order_terminal), owning_building_guid = 70) - LocalObject(1711, Terminal.Constructor(Vector3(4021.445f, 5425.853f, 57.99387f), order_terminal), owning_building_guid = 70) - LocalObject(1712, Terminal.Constructor(Vector3(4021.445f, 5431.234f, 57.99387f), order_terminal), owning_building_guid = 70) - LocalObject(2335, SpawnTube.Constructor(Vector3(4010.706f, 5417.742f, 56.14388f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2336, SpawnTube.Constructor(Vector3(4010.706f, 5434.152f, 56.14388f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 70) - LocalObject(2026, ProximityTerminal.Constructor(Vector3(3998.907f, 5424.725f, 94.23187f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(2027, Terminal.Constructor(Vector3(3998.907f, 5424.725f, 94.23187f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(2029, ProximityTerminal.Constructor(Vector3(3998.907f, 5435.17f, 94.23187f), pad_landing_tower_frame), owning_building_guid = 70) - LocalObject(2030, Terminal.Constructor(Vector3(3998.907f, 5435.17f, 94.23187f), air_rearm_terminal), owning_building_guid = 70) - LocalObject(1555, FacilityTurret.Constructor(Vector3(3985.07f, 5415.045f, 85.60387f), manned_turret), owning_building_guid = 70) + LocalObject( + 1710, + Terminal.Constructor(Vector3(4021.445f, 5420.129f, 57.99387f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1711, + Terminal.Constructor(Vector3(4021.445f, 5425.853f, 57.99387f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1712, + Terminal.Constructor(Vector3(4021.445f, 5431.234f, 57.99387f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2335, + SpawnTube.Constructor(Vector3(4010.706f, 5417.742f, 56.14388f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2336, + SpawnTube.Constructor(Vector3(4010.706f, 5434.152f, 56.14388f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 70 + ) + LocalObject( + 2026, + ProximityTerminal.Constructor(Vector3(3998.907f, 5424.725f, 94.23187f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 2027, + Terminal.Constructor(Vector3(3998.907f, 5424.725f, 94.23187f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 2029, + ProximityTerminal.Constructor(Vector3(3998.907f, 5435.17f, 94.23187f), pad_landing_tower_frame), + owning_building_guid = 70 + ) + LocalObject( + 2030, + Terminal.Constructor(Vector3(3998.907f, 5435.17f, 94.23187f), air_rearm_terminal), + owning_building_guid = 70 + ) + LocalObject( + 1555, + FacilityTurret.Constructor(Vector3(3985.07f, 5415.045f, 85.60387f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1555, 5094) - LocalObject(1556, FacilityTurret.Constructor(Vector3(4023.497f, 5444.957f, 85.60387f), manned_turret), owning_building_guid = 70) + LocalObject( + 1556, + FacilityTurret.Constructor(Vector3(4023.497f, 5444.957f, 85.60387f), manned_turret), + owning_building_guid = 70 + ) TurretToWeapon(1556, 5095) - LocalObject(2155, Painbox.Constructor(Vector3(4004.454f, 5422.849f, 58.68137f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2156, Painbox.Constructor(Vector3(4016.923f, 5419.54f, 56.76187f), painbox_radius_continuous), owning_building_guid = 70) - LocalObject(2157, Painbox.Constructor(Vector3(4017.113f, 5432.022f, 56.76187f), painbox_radius_continuous), owning_building_guid = 70) + LocalObject( + 2155, + Painbox.Constructor(Vector3(4004.454f, 5422.849f, 58.68137f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2156, + Painbox.Constructor(Vector3(4016.923f, 5419.54f, 56.76187f), painbox_radius_continuous), + owning_building_guid = 70 + ) + LocalObject( + 2157, + Painbox.Constructor(Vector3(4017.113f, 5432.022f, 56.76187f), painbox_radius_continuous), + owning_building_guid = 70 + ) } Building22() def Building22(): Unit = { // Name: NW_Kyoi_Tower Type: tower_c GUID: 71, MapID: 22 - LocalBuilding("NW_Kyoi_Tower", 71, 22, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4978f, 2646f, 62.90847f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2400, CaptureTerminal.Constructor(Vector3(4994.587f, 2645.897f, 72.90747f), secondary_capture), owning_building_guid = 71) + LocalBuilding( + "NW_Kyoi_Tower", + 71, + 22, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4978f, 2646f, 62.90847f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2400, + CaptureTerminal.Constructor(Vector3(4994.587f, 2645.897f, 72.90747f), secondary_capture), + owning_building_guid = 71 + ) LocalObject(458, Door.Constructor(Vector3(4990f, 2638f, 64.42947f)), owning_building_guid = 71) LocalObject(459, Door.Constructor(Vector3(4990f, 2638f, 84.42847f)), owning_building_guid = 71) LocalObject(460, Door.Constructor(Vector3(4990f, 2654f, 64.42947f)), owning_building_guid = 71) LocalObject(461, Door.Constructor(Vector3(4990f, 2654f, 84.42847f)), owning_building_guid = 71) LocalObject(2542, Door.Constructor(Vector3(4989.146f, 2634.794f, 54.24448f)), owning_building_guid = 71) LocalObject(2543, Door.Constructor(Vector3(4989.146f, 2651.204f, 54.24448f)), owning_building_guid = 71) - LocalObject(1029, IFFLock.Constructor(Vector3(4987.957f, 2654.811f, 64.36948f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 460) - LocalObject(1030, IFFLock.Constructor(Vector3(4987.957f, 2654.811f, 84.36948f), Vector3(0, 0, 0)), owning_building_guid = 71, door_guid = 461) - LocalObject(1031, IFFLock.Constructor(Vector3(4992.047f, 2637.189f, 64.36948f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 458) - LocalObject(1032, IFFLock.Constructor(Vector3(4992.047f, 2637.189f, 84.36948f), Vector3(0, 0, 180)), owning_building_guid = 71, door_guid = 459) + LocalObject( + 1029, + IFFLock.Constructor(Vector3(4987.957f, 2654.811f, 64.36948f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 460 + ) + LocalObject( + 1030, + IFFLock.Constructor(Vector3(4987.957f, 2654.811f, 84.36948f), Vector3(0, 0, 0)), + owning_building_guid = 71, + door_guid = 461 + ) + LocalObject( + 1031, + IFFLock.Constructor(Vector3(4992.047f, 2637.189f, 64.36948f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 458 + ) + LocalObject( + 1032, + IFFLock.Constructor(Vector3(4992.047f, 2637.189f, 84.36948f), Vector3(0, 0, 180)), + owning_building_guid = 71, + door_guid = 459 + ) LocalObject(1329, Locker.Constructor(Vector3(4993.716f, 2630.963f, 52.90247f)), owning_building_guid = 71) LocalObject(1330, Locker.Constructor(Vector3(4993.751f, 2652.835f, 52.90247f)), owning_building_guid = 71) LocalObject(1331, Locker.Constructor(Vector3(4995.053f, 2630.963f, 52.90247f)), owning_building_guid = 71) @@ -2461,39 +7219,126 @@ object Map10 { // Amerish LocalObject(1334, Locker.Constructor(Vector3(4997.741f, 2652.835f, 52.90247f)), owning_building_guid = 71) LocalObject(1335, Locker.Constructor(Vector3(4999.143f, 2630.963f, 52.90247f)), owning_building_guid = 71) LocalObject(1336, Locker.Constructor(Vector3(4999.143f, 2652.835f, 52.90247f)), owning_building_guid = 71) - LocalObject(1742, Terminal.Constructor(Vector3(4999.445f, 2636.129f, 54.24047f), order_terminal), owning_building_guid = 71) - LocalObject(1743, Terminal.Constructor(Vector3(4999.445f, 2641.853f, 54.24047f), order_terminal), owning_building_guid = 71) - LocalObject(1744, Terminal.Constructor(Vector3(4999.445f, 2647.234f, 54.24047f), order_terminal), owning_building_guid = 71) - LocalObject(2355, SpawnTube.Constructor(Vector3(4988.706f, 2633.742f, 52.39047f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2356, SpawnTube.Constructor(Vector3(4988.706f, 2650.152f, 52.39047f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 71) - LocalObject(2032, ProximityTerminal.Constructor(Vector3(4976.907f, 2640.725f, 90.47847f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(2033, Terminal.Constructor(Vector3(4976.907f, 2640.725f, 90.47847f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(2035, ProximityTerminal.Constructor(Vector3(4976.907f, 2651.17f, 90.47847f), pad_landing_tower_frame), owning_building_guid = 71) - LocalObject(2036, Terminal.Constructor(Vector3(4976.907f, 2651.17f, 90.47847f), air_rearm_terminal), owning_building_guid = 71) - LocalObject(1581, FacilityTurret.Constructor(Vector3(4963.07f, 2631.045f, 81.85047f), manned_turret), owning_building_guid = 71) + LocalObject( + 1742, + Terminal.Constructor(Vector3(4999.445f, 2636.129f, 54.24047f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1743, + Terminal.Constructor(Vector3(4999.445f, 2641.853f, 54.24047f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1744, + Terminal.Constructor(Vector3(4999.445f, 2647.234f, 54.24047f), order_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2355, + SpawnTube.Constructor(Vector3(4988.706f, 2633.742f, 52.39047f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2356, + SpawnTube.Constructor(Vector3(4988.706f, 2650.152f, 52.39047f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 71 + ) + LocalObject( + 2032, + ProximityTerminal.Constructor(Vector3(4976.907f, 2640.725f, 90.47847f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 2033, + Terminal.Constructor(Vector3(4976.907f, 2640.725f, 90.47847f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 2035, + ProximityTerminal.Constructor(Vector3(4976.907f, 2651.17f, 90.47847f), pad_landing_tower_frame), + owning_building_guid = 71 + ) + LocalObject( + 2036, + Terminal.Constructor(Vector3(4976.907f, 2651.17f, 90.47847f), air_rearm_terminal), + owning_building_guid = 71 + ) + LocalObject( + 1581, + FacilityTurret.Constructor(Vector3(4963.07f, 2631.045f, 81.85047f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1581, 5096) - LocalObject(1582, FacilityTurret.Constructor(Vector3(5001.497f, 2660.957f, 81.85047f), manned_turret), owning_building_guid = 71) + LocalObject( + 1582, + FacilityTurret.Constructor(Vector3(5001.497f, 2660.957f, 81.85047f), manned_turret), + owning_building_guid = 71 + ) TurretToWeapon(1582, 5097) - LocalObject(2167, Painbox.Constructor(Vector3(4982.454f, 2638.849f, 54.92797f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2169, Painbox.Constructor(Vector3(4994.923f, 2635.54f, 53.00848f), painbox_radius_continuous), owning_building_guid = 71) - LocalObject(2170, Painbox.Constructor(Vector3(4995.113f, 2648.022f, 53.00848f), painbox_radius_continuous), owning_building_guid = 71) + LocalObject( + 2167, + Painbox.Constructor(Vector3(4982.454f, 2638.849f, 54.92797f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2169, + Painbox.Constructor(Vector3(4994.923f, 2635.54f, 53.00848f), painbox_radius_continuous), + owning_building_guid = 71 + ) + LocalObject( + 2170, + Painbox.Constructor(Vector3(4995.113f, 2648.022f, 53.00848f), painbox_radius_continuous), + owning_building_guid = 71 + ) } Building29() def Building29(): Unit = { // Name: W_Ceryshen_Warpgate_Tower Type: tower_c GUID: 72, MapID: 29 - LocalBuilding("W_Ceryshen_Warpgate_Tower", 72, 29, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5424f, 7052f, 61.30546f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2403, CaptureTerminal.Constructor(Vector3(5440.587f, 7051.897f, 71.30446f), secondary_capture), owning_building_guid = 72) + LocalBuilding( + "W_Ceryshen_Warpgate_Tower", + 72, + 29, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5424f, 7052f, 61.30546f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2403, + CaptureTerminal.Constructor(Vector3(5440.587f, 7051.897f, 71.30446f), secondary_capture), + owning_building_guid = 72 + ) LocalObject(476, Door.Constructor(Vector3(5436f, 7044f, 62.82646f)), owning_building_guid = 72) LocalObject(477, Door.Constructor(Vector3(5436f, 7044f, 82.82546f)), owning_building_guid = 72) LocalObject(478, Door.Constructor(Vector3(5436f, 7060f, 62.82646f)), owning_building_guid = 72) LocalObject(479, Door.Constructor(Vector3(5436f, 7060f, 82.82546f)), owning_building_guid = 72) LocalObject(2548, Door.Constructor(Vector3(5435.146f, 7040.794f, 52.64146f)), owning_building_guid = 72) LocalObject(2549, Door.Constructor(Vector3(5435.146f, 7057.204f, 52.64146f)), owning_building_guid = 72) - LocalObject(1045, IFFLock.Constructor(Vector3(5433.957f, 7060.811f, 62.76646f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 478) - LocalObject(1046, IFFLock.Constructor(Vector3(5433.957f, 7060.811f, 82.76646f), Vector3(0, 0, 0)), owning_building_guid = 72, door_guid = 479) - LocalObject(1047, IFFLock.Constructor(Vector3(5438.047f, 7043.189f, 62.76646f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 476) - LocalObject(1048, IFFLock.Constructor(Vector3(5438.047f, 7043.189f, 82.76646f), Vector3(0, 0, 180)), owning_building_guid = 72, door_guid = 477) + LocalObject( + 1045, + IFFLock.Constructor(Vector3(5433.957f, 7060.811f, 62.76646f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 478 + ) + LocalObject( + 1046, + IFFLock.Constructor(Vector3(5433.957f, 7060.811f, 82.76646f), Vector3(0, 0, 0)), + owning_building_guid = 72, + door_guid = 479 + ) + LocalObject( + 1047, + IFFLock.Constructor(Vector3(5438.047f, 7043.189f, 62.76646f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 476 + ) + LocalObject( + 1048, + IFFLock.Constructor(Vector3(5438.047f, 7043.189f, 82.76646f), Vector3(0, 0, 180)), + owning_building_guid = 72, + door_guid = 477 + ) LocalObject(1353, Locker.Constructor(Vector3(5439.716f, 7036.963f, 51.29946f)), owning_building_guid = 72) LocalObject(1354, Locker.Constructor(Vector3(5439.751f, 7058.835f, 51.29946f)), owning_building_guid = 72) LocalObject(1355, Locker.Constructor(Vector3(5441.053f, 7036.963f, 51.29946f)), owning_building_guid = 72) @@ -2502,39 +7347,126 @@ object Map10 { // Amerish LocalObject(1358, Locker.Constructor(Vector3(5443.741f, 7058.835f, 51.29946f)), owning_building_guid = 72) LocalObject(1359, Locker.Constructor(Vector3(5445.143f, 7036.963f, 51.29946f)), owning_building_guid = 72) LocalObject(1360, Locker.Constructor(Vector3(5445.143f, 7058.835f, 51.29946f)), owning_building_guid = 72) - LocalObject(1751, Terminal.Constructor(Vector3(5445.445f, 7042.129f, 52.63746f), order_terminal), owning_building_guid = 72) - LocalObject(1752, Terminal.Constructor(Vector3(5445.445f, 7047.853f, 52.63746f), order_terminal), owning_building_guid = 72) - LocalObject(1753, Terminal.Constructor(Vector3(5445.445f, 7053.234f, 52.63746f), order_terminal), owning_building_guid = 72) - LocalObject(2361, SpawnTube.Constructor(Vector3(5434.706f, 7039.742f, 50.78746f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2362, SpawnTube.Constructor(Vector3(5434.706f, 7056.152f, 50.78746f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 72) - LocalObject(2038, ProximityTerminal.Constructor(Vector3(5422.907f, 7046.725f, 88.87546f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(2039, Terminal.Constructor(Vector3(5422.907f, 7046.725f, 88.87546f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(2041, ProximityTerminal.Constructor(Vector3(5422.907f, 7057.17f, 88.87546f), pad_landing_tower_frame), owning_building_guid = 72) - LocalObject(2042, Terminal.Constructor(Vector3(5422.907f, 7057.17f, 88.87546f), air_rearm_terminal), owning_building_guid = 72) - LocalObject(1585, FacilityTurret.Constructor(Vector3(5409.07f, 7037.045f, 80.24746f), manned_turret), owning_building_guid = 72) + LocalObject( + 1751, + Terminal.Constructor(Vector3(5445.445f, 7042.129f, 52.63746f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1752, + Terminal.Constructor(Vector3(5445.445f, 7047.853f, 52.63746f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1753, + Terminal.Constructor(Vector3(5445.445f, 7053.234f, 52.63746f), order_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2361, + SpawnTube.Constructor(Vector3(5434.706f, 7039.742f, 50.78746f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2362, + SpawnTube.Constructor(Vector3(5434.706f, 7056.152f, 50.78746f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 72 + ) + LocalObject( + 2038, + ProximityTerminal.Constructor(Vector3(5422.907f, 7046.725f, 88.87546f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 2039, + Terminal.Constructor(Vector3(5422.907f, 7046.725f, 88.87546f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 2041, + ProximityTerminal.Constructor(Vector3(5422.907f, 7057.17f, 88.87546f), pad_landing_tower_frame), + owning_building_guid = 72 + ) + LocalObject( + 2042, + Terminal.Constructor(Vector3(5422.907f, 7057.17f, 88.87546f), air_rearm_terminal), + owning_building_guid = 72 + ) + LocalObject( + 1585, + FacilityTurret.Constructor(Vector3(5409.07f, 7037.045f, 80.24746f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1585, 5098) - LocalObject(1587, FacilityTurret.Constructor(Vector3(5447.497f, 7066.957f, 80.24746f), manned_turret), owning_building_guid = 72) + LocalObject( + 1587, + FacilityTurret.Constructor(Vector3(5447.497f, 7066.957f, 80.24746f), manned_turret), + owning_building_guid = 72 + ) TurretToWeapon(1587, 5099) - LocalObject(2176, Painbox.Constructor(Vector3(5428.454f, 7044.849f, 53.32496f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2177, Painbox.Constructor(Vector3(5440.923f, 7041.54f, 51.40546f), painbox_radius_continuous), owning_building_guid = 72) - LocalObject(2178, Painbox.Constructor(Vector3(5441.113f, 7054.022f, 51.40546f), painbox_radius_continuous), owning_building_guid = 72) + LocalObject( + 2176, + Painbox.Constructor(Vector3(5428.454f, 7044.849f, 53.32496f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2177, + Painbox.Constructor(Vector3(5440.923f, 7041.54f, 51.40546f), painbox_radius_continuous), + owning_building_guid = 72 + ) + LocalObject( + 2178, + Painbox.Constructor(Vector3(5441.113f, 7054.022f, 51.40546f), painbox_radius_continuous), + owning_building_guid = 72 + ) } Building46() def Building46(): Unit = { // Name: Mekala_Tower Type: tower_c GUID: 73, MapID: 46 - LocalBuilding("Mekala_Tower", 73, 46, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6134f, 3198f, 54.44196f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2406, CaptureTerminal.Constructor(Vector3(6150.587f, 3197.897f, 64.44096f), secondary_capture), owning_building_guid = 73) + LocalBuilding( + "Mekala_Tower", + 73, + 46, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6134f, 3198f, 54.44196f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2406, + CaptureTerminal.Constructor(Vector3(6150.587f, 3197.897f, 64.44096f), secondary_capture), + owning_building_guid = 73 + ) LocalObject(513, Door.Constructor(Vector3(6146f, 3190f, 55.96296f)), owning_building_guid = 73) LocalObject(514, Door.Constructor(Vector3(6146f, 3190f, 75.96196f)), owning_building_guid = 73) LocalObject(515, Door.Constructor(Vector3(6146f, 3206f, 55.96296f)), owning_building_guid = 73) LocalObject(516, Door.Constructor(Vector3(6146f, 3206f, 75.96196f)), owning_building_guid = 73) LocalObject(2560, Door.Constructor(Vector3(6145.146f, 3186.794f, 45.77795f)), owning_building_guid = 73) LocalObject(2561, Door.Constructor(Vector3(6145.146f, 3203.204f, 45.77795f)), owning_building_guid = 73) - LocalObject(1073, IFFLock.Constructor(Vector3(6143.957f, 3206.811f, 55.90295f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 515) - LocalObject(1074, IFFLock.Constructor(Vector3(6143.957f, 3206.811f, 75.90295f), Vector3(0, 0, 0)), owning_building_guid = 73, door_guid = 516) - LocalObject(1075, IFFLock.Constructor(Vector3(6148.047f, 3189.189f, 55.90295f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 513) - LocalObject(1076, IFFLock.Constructor(Vector3(6148.047f, 3189.189f, 75.90295f), Vector3(0, 0, 180)), owning_building_guid = 73, door_guid = 514) + LocalObject( + 1073, + IFFLock.Constructor(Vector3(6143.957f, 3206.811f, 55.90295f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 515 + ) + LocalObject( + 1074, + IFFLock.Constructor(Vector3(6143.957f, 3206.811f, 75.90295f), Vector3(0, 0, 0)), + owning_building_guid = 73, + door_guid = 516 + ) + LocalObject( + 1075, + IFFLock.Constructor(Vector3(6148.047f, 3189.189f, 55.90295f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 513 + ) + LocalObject( + 1076, + IFFLock.Constructor(Vector3(6148.047f, 3189.189f, 75.90295f), Vector3(0, 0, 180)), + owning_building_guid = 73, + door_guid = 514 + ) LocalObject(1410, Locker.Constructor(Vector3(6149.716f, 3182.963f, 44.43596f)), owning_building_guid = 73) LocalObject(1411, Locker.Constructor(Vector3(6149.751f, 3204.835f, 44.43596f)), owning_building_guid = 73) LocalObject(1412, Locker.Constructor(Vector3(6151.053f, 3182.963f, 44.43596f)), owning_building_guid = 73) @@ -2543,39 +7475,126 @@ object Map10 { // Amerish LocalObject(1415, Locker.Constructor(Vector3(6153.741f, 3204.835f, 44.43596f)), owning_building_guid = 73) LocalObject(1416, Locker.Constructor(Vector3(6155.143f, 3182.963f, 44.43596f)), owning_building_guid = 73) LocalObject(1417, Locker.Constructor(Vector3(6155.143f, 3204.835f, 44.43596f)), owning_building_guid = 73) - LocalObject(1768, Terminal.Constructor(Vector3(6155.445f, 3188.129f, 45.77396f), order_terminal), owning_building_guid = 73) - LocalObject(1769, Terminal.Constructor(Vector3(6155.445f, 3193.853f, 45.77396f), order_terminal), owning_building_guid = 73) - LocalObject(1770, Terminal.Constructor(Vector3(6155.445f, 3199.234f, 45.77396f), order_terminal), owning_building_guid = 73) - LocalObject(2373, SpawnTube.Constructor(Vector3(6144.706f, 3185.742f, 43.92396f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2374, SpawnTube.Constructor(Vector3(6144.706f, 3202.152f, 43.92396f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 73) - LocalObject(2044, ProximityTerminal.Constructor(Vector3(6132.907f, 3192.725f, 82.01196f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(2045, Terminal.Constructor(Vector3(6132.907f, 3192.725f, 82.01196f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(2047, ProximityTerminal.Constructor(Vector3(6132.907f, 3203.17f, 82.01196f), pad_landing_tower_frame), owning_building_guid = 73) - LocalObject(2048, Terminal.Constructor(Vector3(6132.907f, 3203.17f, 82.01196f), air_rearm_terminal), owning_building_guid = 73) - LocalObject(1602, FacilityTurret.Constructor(Vector3(6119.07f, 3183.045f, 73.38396f), manned_turret), owning_building_guid = 73) + LocalObject( + 1768, + Terminal.Constructor(Vector3(6155.445f, 3188.129f, 45.77396f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1769, + Terminal.Constructor(Vector3(6155.445f, 3193.853f, 45.77396f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1770, + Terminal.Constructor(Vector3(6155.445f, 3199.234f, 45.77396f), order_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2373, + SpawnTube.Constructor(Vector3(6144.706f, 3185.742f, 43.92396f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2374, + SpawnTube.Constructor(Vector3(6144.706f, 3202.152f, 43.92396f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 73 + ) + LocalObject( + 2044, + ProximityTerminal.Constructor(Vector3(6132.907f, 3192.725f, 82.01196f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 2045, + Terminal.Constructor(Vector3(6132.907f, 3192.725f, 82.01196f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 2047, + ProximityTerminal.Constructor(Vector3(6132.907f, 3203.17f, 82.01196f), pad_landing_tower_frame), + owning_building_guid = 73 + ) + LocalObject( + 2048, + Terminal.Constructor(Vector3(6132.907f, 3203.17f, 82.01196f), air_rearm_terminal), + owning_building_guid = 73 + ) + LocalObject( + 1602, + FacilityTurret.Constructor(Vector3(6119.07f, 3183.045f, 73.38396f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1602, 5100) - LocalObject(1603, FacilityTurret.Constructor(Vector3(6157.497f, 3212.957f, 73.38396f), manned_turret), owning_building_guid = 73) + LocalObject( + 1603, + FacilityTurret.Constructor(Vector3(6157.497f, 3212.957f, 73.38396f), manned_turret), + owning_building_guid = 73 + ) TurretToWeapon(1603, 5101) - LocalObject(2185, Painbox.Constructor(Vector3(6138.454f, 3190.849f, 46.46146f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2186, Painbox.Constructor(Vector3(6150.923f, 3187.54f, 44.54195f), painbox_radius_continuous), owning_building_guid = 73) - LocalObject(2187, Painbox.Constructor(Vector3(6151.113f, 3200.022f, 44.54195f), painbox_radius_continuous), owning_building_guid = 73) + LocalObject( + 2185, + Painbox.Constructor(Vector3(6138.454f, 3190.849f, 46.46146f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2186, + Painbox.Constructor(Vector3(6150.923f, 3187.54f, 44.54195f), painbox_radius_continuous), + owning_building_guid = 73 + ) + LocalObject( + 2187, + Painbox.Constructor(Vector3(6151.113f, 3200.022f, 44.54195f), painbox_radius_continuous), + owning_building_guid = 73 + ) } Building27() def Building27(): Unit = { // Name: NW_Xelas_Tower Type: tower_c GUID: 74, MapID: 27 - LocalBuilding("NW_Xelas_Tower", 74, 27, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6444f, 4606f, 49.63475f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(2409, CaptureTerminal.Constructor(Vector3(6460.587f, 4605.897f, 59.63375f), secondary_capture), owning_building_guid = 74) + LocalBuilding( + "NW_Xelas_Tower", + 74, + 27, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6444f, 4606f, 49.63475f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 2409, + CaptureTerminal.Constructor(Vector3(6460.587f, 4605.897f, 59.63375f), secondary_capture), + owning_building_guid = 74 + ) LocalObject(546, Door.Constructor(Vector3(6456f, 4598f, 51.15575f)), owning_building_guid = 74) LocalObject(547, Door.Constructor(Vector3(6456f, 4598f, 71.15475f)), owning_building_guid = 74) LocalObject(548, Door.Constructor(Vector3(6456f, 4614f, 51.15575f)), owning_building_guid = 74) LocalObject(549, Door.Constructor(Vector3(6456f, 4614f, 71.15475f)), owning_building_guid = 74) LocalObject(2569, Door.Constructor(Vector3(6455.146f, 4594.794f, 40.97075f)), owning_building_guid = 74) LocalObject(2570, Door.Constructor(Vector3(6455.146f, 4611.204f, 40.97075f)), owning_building_guid = 74) - LocalObject(1099, IFFLock.Constructor(Vector3(6453.957f, 4614.811f, 51.09575f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 548) - LocalObject(1100, IFFLock.Constructor(Vector3(6453.957f, 4614.811f, 71.09575f), Vector3(0, 0, 0)), owning_building_guid = 74, door_guid = 549) - LocalObject(1101, IFFLock.Constructor(Vector3(6458.047f, 4597.189f, 51.09575f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 546) - LocalObject(1102, IFFLock.Constructor(Vector3(6458.047f, 4597.189f, 71.09575f), Vector3(0, 0, 180)), owning_building_guid = 74, door_guid = 547) + LocalObject( + 1099, + IFFLock.Constructor(Vector3(6453.957f, 4614.811f, 51.09575f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 548 + ) + LocalObject( + 1100, + IFFLock.Constructor(Vector3(6453.957f, 4614.811f, 71.09575f), Vector3(0, 0, 0)), + owning_building_guid = 74, + door_guid = 549 + ) + LocalObject( + 1101, + IFFLock.Constructor(Vector3(6458.047f, 4597.189f, 51.09575f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 546 + ) + LocalObject( + 1102, + IFFLock.Constructor(Vector3(6458.047f, 4597.189f, 71.09575f), Vector3(0, 0, 180)), + owning_building_guid = 74, + door_guid = 547 + ) LocalObject(1446, Locker.Constructor(Vector3(6459.716f, 4590.963f, 39.62875f)), owning_building_guid = 74) LocalObject(1447, Locker.Constructor(Vector3(6459.751f, 4612.835f, 39.62875f)), owning_building_guid = 74) LocalObject(1448, Locker.Constructor(Vector3(6461.053f, 4590.963f, 39.62875f)), owning_building_guid = 74) @@ -2584,46 +7603,122 @@ object Map10 { // Amerish LocalObject(1451, Locker.Constructor(Vector3(6463.741f, 4612.835f, 39.62875f)), owning_building_guid = 74) LocalObject(1452, Locker.Constructor(Vector3(6465.143f, 4590.963f, 39.62875f)), owning_building_guid = 74) LocalObject(1453, Locker.Constructor(Vector3(6465.143f, 4612.835f, 39.62875f)), owning_building_guid = 74) - LocalObject(1785, Terminal.Constructor(Vector3(6465.445f, 4596.129f, 40.96675f), order_terminal), owning_building_guid = 74) - LocalObject(1786, Terminal.Constructor(Vector3(6465.445f, 4601.853f, 40.96675f), order_terminal), owning_building_guid = 74) - LocalObject(1787, Terminal.Constructor(Vector3(6465.445f, 4607.234f, 40.96675f), order_terminal), owning_building_guid = 74) - LocalObject(2382, SpawnTube.Constructor(Vector3(6454.706f, 4593.742f, 39.11674f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2383, SpawnTube.Constructor(Vector3(6454.706f, 4610.152f, 39.11674f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 74) - LocalObject(2050, ProximityTerminal.Constructor(Vector3(6442.907f, 4600.725f, 77.20474f), pad_landing_tower_frame), owning_building_guid = 74) - LocalObject(2051, Terminal.Constructor(Vector3(6442.907f, 4600.725f, 77.20474f), air_rearm_terminal), owning_building_guid = 74) - LocalObject(2053, ProximityTerminal.Constructor(Vector3(6442.907f, 4611.17f, 77.20474f), pad_landing_tower_frame), owning_building_guid = 74) - LocalObject(2054, Terminal.Constructor(Vector3(6442.907f, 4611.17f, 77.20474f), air_rearm_terminal), owning_building_guid = 74) - LocalObject(1616, FacilityTurret.Constructor(Vector3(6429.07f, 4591.045f, 68.57674f), manned_turret), owning_building_guid = 74) + LocalObject( + 1785, + Terminal.Constructor(Vector3(6465.445f, 4596.129f, 40.96675f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1786, + Terminal.Constructor(Vector3(6465.445f, 4601.853f, 40.96675f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1787, + Terminal.Constructor(Vector3(6465.445f, 4607.234f, 40.96675f), order_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2382, + SpawnTube.Constructor(Vector3(6454.706f, 4593.742f, 39.11674f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2383, + SpawnTube.Constructor(Vector3(6454.706f, 4610.152f, 39.11674f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 74 + ) + LocalObject( + 2050, + ProximityTerminal.Constructor(Vector3(6442.907f, 4600.725f, 77.20474f), pad_landing_tower_frame), + owning_building_guid = 74 + ) + LocalObject( + 2051, + Terminal.Constructor(Vector3(6442.907f, 4600.725f, 77.20474f), air_rearm_terminal), + owning_building_guid = 74 + ) + LocalObject( + 2053, + ProximityTerminal.Constructor(Vector3(6442.907f, 4611.17f, 77.20474f), pad_landing_tower_frame), + owning_building_guid = 74 + ) + LocalObject( + 2054, + Terminal.Constructor(Vector3(6442.907f, 4611.17f, 77.20474f), air_rearm_terminal), + owning_building_guid = 74 + ) + LocalObject( + 1616, + FacilityTurret.Constructor(Vector3(6429.07f, 4591.045f, 68.57674f), manned_turret), + owning_building_guid = 74 + ) TurretToWeapon(1616, 5102) - LocalObject(1617, FacilityTurret.Constructor(Vector3(6467.497f, 4620.957f, 68.57674f), manned_turret), owning_building_guid = 74) + LocalObject( + 1617, + FacilityTurret.Constructor(Vector3(6467.497f, 4620.957f, 68.57674f), manned_turret), + owning_building_guid = 74 + ) TurretToWeapon(1617, 5103) - LocalObject(2194, Painbox.Constructor(Vector3(6448.454f, 4598.849f, 41.65425f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2195, Painbox.Constructor(Vector3(6460.923f, 4595.54f, 39.73475f), painbox_radius_continuous), owning_building_guid = 74) - LocalObject(2196, Painbox.Constructor(Vector3(6461.113f, 4608.022f, 39.73475f), painbox_radius_continuous), owning_building_guid = 74) + LocalObject( + 2194, + Painbox.Constructor(Vector3(6448.454f, 4598.849f, 41.65425f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2195, + Painbox.Constructor(Vector3(6460.923f, 4595.54f, 39.73475f), painbox_radius_continuous), + owning_building_guid = 74 + ) + LocalObject( + 2196, + Painbox.Constructor(Vector3(6461.113f, 4608.022f, 39.73475f), painbox_radius_continuous), + owning_building_guid = 74 + ) } Building1() def Building1(): Unit = { // Name: WG_Amerish_to_Solsar Type: warpgate GUID: 75, MapID: 1 - LocalBuilding("WG_Amerish_to_Solsar", 75, 1, FoundationBuilder(WarpGate.Structure(Vector3(1756f, 1374f, 39.99712f)))) + LocalBuilding( + "WG_Amerish_to_Solsar", + 75, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(1756f, 1374f, 39.99712f))) + ) } Building2() def Building2(): Unit = { // Name: WG_Amerish_to_NCSanc Type: warpgate GUID: 76, MapID: 2 - LocalBuilding("WG_Amerish_to_NCSanc", 76, 2, FoundationBuilder(WarpGate.Structure(Vector3(3152f, 3652f, 49.55655f)))) + LocalBuilding( + "WG_Amerish_to_NCSanc", + 76, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(3152f, 3652f, 49.55655f))) + ) } Building3() def Building3(): Unit = { // Name: WG_Amerish_to_Oshur Type: warpgate GUID: 77, MapID: 3 - LocalBuilding("WG_Amerish_to_Oshur", 77, 3, FoundationBuilder(WarpGate.Structure(Vector3(4960f, 4526f, 60.27914f)))) + LocalBuilding( + "WG_Amerish_to_Oshur", + 77, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(4960f, 4526f, 60.27914f))) + ) } Building4() def Building4(): Unit = { // Name: WG_Amerish_to_Ceryshen Type: warpgate GUID: 78, MapID: 4 - LocalBuilding("WG_Amerish_to_Ceryshen", 78, 4, FoundationBuilder(WarpGate.Structure(Vector3(6152f, 6754f, 69.20323f)))) + LocalBuilding( + "WG_Amerish_to_Ceryshen", + 78, + 4, + FoundationBuilder(WarpGate.Structure(Vector3(6152f, 6754f, 69.20323f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map11.scala b/pslogin/src/main/scala/zonemaps/Map11.scala index 2179aa77..6a1e7f89 100644 --- a/pslogin/src/main/scala/zonemaps/Map11.scala +++ b/pslogin/src/main/scala/zonemaps/Map11.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -21,7 +21,19 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) Building37() def Building37(): Unit = { // Name: Cyssor_HART Type: orbital_building_nc GUID: 1, MapID: 37 - LocalBuilding("Cyssor_HART", 1, 37, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2258f, 5538f, 65.20142f), Vector3(0f, 0f, 89f), orbital_building_nc))) + LocalBuilding( + "Cyssor_HART", + 1, + 37, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2258f, 5538f, 65.20142f), + Vector3(0f, 0f, 89f), + orbital_building_nc + ) + ) + ) LocalObject(371, Door.Constructor(Vector3(2177.802f, 5527.388f, 69.30743f)), owning_building_guid = 1) LocalObject(372, Door.Constructor(Vector3(2178.221f, 5551.384f, 69.30743f)), owning_building_guid = 1) LocalObject(374, Door.Constructor(Vector3(2337.779f, 5524.616f, 69.30743f)), owning_building_guid = 1) @@ -50,84 +62,352 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(737, Locker.Constructor(Vector3(2260.838f, 5589.773f, 82.31142f)), owning_building_guid = 1) LocalObject(738, Locker.Constructor(Vector3(2262.18f, 5589.75f, 82.31142f)), owning_building_guid = 1) LocalObject(739, Locker.Constructor(Vector3(2263.544f, 5589.726f, 82.31142f)), owning_building_guid = 1) - LocalObject(162, Terminal.Constructor(Vector3(2179.098f, 5532.182f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(163, Terminal.Constructor(Vector3(2179.132f, 5534.089f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(164, Terminal.Constructor(Vector3(2179.166f, 5536.02f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(165, Terminal.Constructor(Vector3(2179.372f, 5543.042f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(166, Terminal.Constructor(Vector3(2179.405f, 5544.949f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(167, Terminal.Constructor(Vector3(2179.439f, 5546.879f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(168, Terminal.Constructor(Vector3(2190.288f, 5523.239f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(169, Terminal.Constructor(Vector3(2190.356f, 5527.142f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(170, Terminal.Constructor(Vector3(2190.423f, 5530.979f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(171, Terminal.Constructor(Vector3(2190.786f, 5547.615f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(172, Terminal.Constructor(Vector3(2190.853f, 5551.493f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(173, Terminal.Constructor(Vector3(2190.921f, 5555.364f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(174, Terminal.Constructor(Vector3(2325.091f, 5520.695f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(175, Terminal.Constructor(Vector3(2325.159f, 5524.567f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(176, Terminal.Constructor(Vector3(2325.227f, 5528.444f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(177, Terminal.Constructor(Vector3(2325.504f, 5545.026f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(178, Terminal.Constructor(Vector3(2325.571f, 5548.863f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(179, Terminal.Constructor(Vector3(2325.639f, 5552.766f, 77.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(180, Terminal.Constructor(Vector3(2336.573f, 5529.179f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(181, Terminal.Constructor(Vector3(2336.607f, 5531.11f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(182, Terminal.Constructor(Vector3(2336.64f, 5533.018f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(183, Terminal.Constructor(Vector3(2336.762f, 5539.986f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(184, Terminal.Constructor(Vector3(2336.795f, 5541.917f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(185, Terminal.Constructor(Vector3(2336.829f, 5543.823f, 67.70142f), cert_terminal), owning_building_guid = 1) - LocalObject(855, Terminal.Constructor(Vector3(2182.052f, 5537.723f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(856, Terminal.Constructor(Vector3(2182.129f, 5540.919f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(857, Terminal.Constructor(Vector3(2185.942f, 5537.654f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(858, Terminal.Constructor(Vector3(2186.143f, 5540.85f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(859, Terminal.Constructor(Vector3(2200.376f, 5532.267f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(860, Terminal.Constructor(Vector3(2200.427f, 5535.188f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(861, Terminal.Constructor(Vector3(2200.554f, 5542.837f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(862, Terminal.Constructor(Vector3(2200.604f, 5545.738f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(863, Terminal.Constructor(Vector3(2248.39f, 5587.958f, 83.99442f), order_terminal), owning_building_guid = 1) - LocalObject(864, Terminal.Constructor(Vector3(2250.87f, 5587.915f, 83.99442f), order_terminal), owning_building_guid = 1) - LocalObject(865, Terminal.Constructor(Vector3(2266.868f, 5587.636f, 83.99442f), order_terminal), owning_building_guid = 1) - LocalObject(866, Terminal.Constructor(Vector3(2269.257f, 5587.594f, 83.99442f), order_terminal), owning_building_guid = 1) - LocalObject(867, Terminal.Constructor(Vector3(2315.381f, 5530.233f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(868, Terminal.Constructor(Vector3(2315.432f, 5533.134f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(869, Terminal.Constructor(Vector3(2315.563f, 5540.813f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(870, Terminal.Constructor(Vector3(2315.614f, 5543.733f, 78.99842f), order_terminal), owning_building_guid = 1) - LocalObject(871, Terminal.Constructor(Vector3(2329.869f, 5535.142f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(872, Terminal.Constructor(Vector3(2329.985f, 5538.336f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(873, Terminal.Constructor(Vector3(2333.883f, 5535.072f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(874, Terminal.Constructor(Vector3(2333.874f, 5538.268f, 68.99842f), order_terminal), owning_building_guid = 1) - LocalObject(828, ProximityTerminal.Constructor(Vector3(2186.923f, 5516.382f, 67.69242f), medical_terminal), owning_building_guid = 1) - LocalObject(829, ProximityTerminal.Constructor(Vector3(2187.742f, 5562.079f, 67.69242f), medical_terminal), owning_building_guid = 1) - LocalObject(830, ProximityTerminal.Constructor(Vector3(2328.283f, 5513.915f, 67.69242f), medical_terminal), owning_building_guid = 1) - LocalObject(831, ProximityTerminal.Constructor(Vector3(2329.019f, 5559.613f, 67.69242f), medical_terminal), owning_building_guid = 1) - LocalObject(526, ImplantTerminalMech.Constructor(Vector3(2193.333f, 5517.411f, 67.70142f)), owning_building_guid = 1) - LocalObject(502, Terminal.Constructor(Vector3(2193.333f, 5517.428f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 162, + Terminal.Constructor(Vector3(2179.098f, 5532.182f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 163, + Terminal.Constructor(Vector3(2179.132f, 5534.089f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 164, + Terminal.Constructor(Vector3(2179.166f, 5536.02f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 165, + Terminal.Constructor(Vector3(2179.372f, 5543.042f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 166, + Terminal.Constructor(Vector3(2179.405f, 5544.949f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 167, + Terminal.Constructor(Vector3(2179.439f, 5546.879f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 168, + Terminal.Constructor(Vector3(2190.288f, 5523.239f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 169, + Terminal.Constructor(Vector3(2190.356f, 5527.142f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 170, + Terminal.Constructor(Vector3(2190.423f, 5530.979f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 171, + Terminal.Constructor(Vector3(2190.786f, 5547.615f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 172, + Terminal.Constructor(Vector3(2190.853f, 5551.493f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(2190.921f, 5555.364f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 174, + Terminal.Constructor(Vector3(2325.091f, 5520.695f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(2325.159f, 5524.567f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 176, + Terminal.Constructor(Vector3(2325.227f, 5528.444f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 177, + Terminal.Constructor(Vector3(2325.504f, 5545.026f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 178, + Terminal.Constructor(Vector3(2325.571f, 5548.863f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(2325.639f, 5552.766f, 77.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 180, + Terminal.Constructor(Vector3(2336.573f, 5529.179f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 181, + Terminal.Constructor(Vector3(2336.607f, 5531.11f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 182, + Terminal.Constructor(Vector3(2336.64f, 5533.018f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 183, + Terminal.Constructor(Vector3(2336.762f, 5539.986f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 184, + Terminal.Constructor(Vector3(2336.795f, 5541.917f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 185, + Terminal.Constructor(Vector3(2336.829f, 5543.823f, 67.70142f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(2182.052f, 5537.723f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 856, + Terminal.Constructor(Vector3(2182.129f, 5540.919f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(2185.942f, 5537.654f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(2186.143f, 5540.85f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(2200.376f, 5532.267f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(2200.427f, 5535.188f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(2200.554f, 5542.837f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(2200.604f, 5545.738f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 863, + Terminal.Constructor(Vector3(2248.39f, 5587.958f, 83.99442f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(2250.87f, 5587.915f, 83.99442f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 865, + Terminal.Constructor(Vector3(2266.868f, 5587.636f, 83.99442f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 866, + Terminal.Constructor(Vector3(2269.257f, 5587.594f, 83.99442f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 867, + Terminal.Constructor(Vector3(2315.381f, 5530.233f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 868, + Terminal.Constructor(Vector3(2315.432f, 5533.134f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 869, + Terminal.Constructor(Vector3(2315.563f, 5540.813f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 870, + Terminal.Constructor(Vector3(2315.614f, 5543.733f, 78.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 871, + Terminal.Constructor(Vector3(2329.869f, 5535.142f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 872, + Terminal.Constructor(Vector3(2329.985f, 5538.336f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 873, + Terminal.Constructor(Vector3(2333.883f, 5535.072f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 874, + Terminal.Constructor(Vector3(2333.874f, 5538.268f, 68.99842f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 828, + ProximityTerminal.Constructor(Vector3(2186.923f, 5516.382f, 67.69242f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 829, + ProximityTerminal.Constructor(Vector3(2187.742f, 5562.079f, 67.69242f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 830, + ProximityTerminal.Constructor(Vector3(2328.283f, 5513.915f, 67.69242f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 831, + ProximityTerminal.Constructor(Vector3(2329.019f, 5559.613f, 67.69242f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 526, + ImplantTerminalMech.Constructor(Vector3(2193.333f, 5517.411f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 502, + Terminal.Constructor(Vector3(2193.333f, 5517.428f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(526, 502) - LocalObject(527, ImplantTerminalMech.Constructor(Vector3(2194.066f, 5560.848f, 67.70142f)), owning_building_guid = 1) - LocalObject(503, Terminal.Constructor(Vector3(2194.066f, 5560.83f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 527, + ImplantTerminalMech.Constructor(Vector3(2194.066f, 5560.848f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 503, + Terminal.Constructor(Vector3(2194.066f, 5560.83f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(527, 503) - LocalObject(528, ImplantTerminalMech.Constructor(Vector3(2198.635f, 5517.318f, 67.70142f)), owning_building_guid = 1) - LocalObject(504, Terminal.Constructor(Vector3(2198.635f, 5517.336f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 528, + ImplantTerminalMech.Constructor(Vector3(2198.635f, 5517.318f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 504, + Terminal.Constructor(Vector3(2198.635f, 5517.336f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(528, 504) - LocalObject(529, ImplantTerminalMech.Constructor(Vector3(2199.472f, 5560.754f, 67.70142f)), owning_building_guid = 1) - LocalObject(505, Terminal.Constructor(Vector3(2199.472f, 5560.736f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 529, + ImplantTerminalMech.Constructor(Vector3(2199.472f, 5560.754f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 505, + Terminal.Constructor(Vector3(2199.472f, 5560.736f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(529, 505) - LocalObject(530, ImplantTerminalMech.Constructor(Vector3(2316.539f, 5515.256f, 67.70142f)), owning_building_guid = 1) - LocalObject(506, Terminal.Constructor(Vector3(2316.539f, 5515.274f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 530, + ImplantTerminalMech.Constructor(Vector3(2316.539f, 5515.256f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 506, + Terminal.Constructor(Vector3(2316.539f, 5515.274f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(530, 506) - LocalObject(531, ImplantTerminalMech.Constructor(Vector3(2317.292f, 5558.688f, 67.70142f)), owning_building_guid = 1) - LocalObject(507, Terminal.Constructor(Vector3(2317.292f, 5558.669f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 531, + ImplantTerminalMech.Constructor(Vector3(2317.292f, 5558.688f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 507, + Terminal.Constructor(Vector3(2317.292f, 5558.669f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(531, 507) - LocalObject(532, ImplantTerminalMech.Constructor(Vector3(2321.946f, 5515.162f, 67.70142f)), owning_building_guid = 1) - LocalObject(508, Terminal.Constructor(Vector3(2321.947f, 5515.18f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 532, + ImplantTerminalMech.Constructor(Vector3(2321.946f, 5515.162f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 508, + Terminal.Constructor(Vector3(2321.947f, 5515.18f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(532, 508) - LocalObject(533, ImplantTerminalMech.Constructor(Vector3(2322.594f, 5558.595f, 67.70142f)), owning_building_guid = 1) - LocalObject(509, Terminal.Constructor(Vector3(2322.594f, 5558.577f, 67.70142f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 533, + ImplantTerminalMech.Constructor(Vector3(2322.594f, 5558.595f, 67.70142f)), + owning_building_guid = 1 + ) + LocalObject( + 509, + Terminal.Constructor(Vector3(2322.594f, 5558.577f, 67.70142f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(533, 509) } Building23() def Building23(): Unit = { // Name: Amerish_HART Type: orbital_building_nc GUID: 2, MapID: 23 - LocalBuilding("Amerish_HART", 2, 23, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4152f, 6070f, 43.87661f), Vector3(0f, 0f, 89f), orbital_building_nc))) + LocalBuilding( + "Amerish_HART", + 2, + 23, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4152f, 6070f, 43.87661f), + Vector3(0f, 0f, 89f), + orbital_building_nc + ) + ) + ) LocalObject(382, Door.Constructor(Vector3(4071.802f, 6059.388f, 47.98261f)), owning_building_guid = 2) LocalObject(383, Door.Constructor(Vector3(4072.221f, 6083.384f, 47.98261f)), owning_building_guid = 2) LocalObject(386, Door.Constructor(Vector3(4231.778f, 6056.616f, 47.98261f)), owning_building_guid = 2) @@ -156,84 +436,352 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(745, Locker.Constructor(Vector3(4154.838f, 6121.773f, 60.98661f)), owning_building_guid = 2) LocalObject(746, Locker.Constructor(Vector3(4156.18f, 6121.75f, 60.98661f)), owning_building_guid = 2) LocalObject(747, Locker.Constructor(Vector3(4157.543f, 6121.726f, 60.98661f)), owning_building_guid = 2) - LocalObject(186, Terminal.Constructor(Vector3(4073.098f, 6064.182f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(187, Terminal.Constructor(Vector3(4073.132f, 6066.089f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(188, Terminal.Constructor(Vector3(4073.166f, 6068.02f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(189, Terminal.Constructor(Vector3(4073.372f, 6075.042f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(190, Terminal.Constructor(Vector3(4073.405f, 6076.949f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(191, Terminal.Constructor(Vector3(4073.439f, 6078.879f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(192, Terminal.Constructor(Vector3(4084.288f, 6055.239f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(193, Terminal.Constructor(Vector3(4084.356f, 6059.142f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(194, Terminal.Constructor(Vector3(4084.423f, 6062.979f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(195, Terminal.Constructor(Vector3(4084.786f, 6079.615f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(196, Terminal.Constructor(Vector3(4084.853f, 6083.493f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(197, Terminal.Constructor(Vector3(4084.921f, 6087.364f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(198, Terminal.Constructor(Vector3(4219.091f, 6052.695f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(199, Terminal.Constructor(Vector3(4219.159f, 6056.567f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(200, Terminal.Constructor(Vector3(4219.227f, 6060.444f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(201, Terminal.Constructor(Vector3(4219.504f, 6077.026f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(202, Terminal.Constructor(Vector3(4219.571f, 6080.863f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(203, Terminal.Constructor(Vector3(4219.639f, 6084.766f, 56.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(204, Terminal.Constructor(Vector3(4230.573f, 6061.179f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(205, Terminal.Constructor(Vector3(4230.607f, 6063.11f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(206, Terminal.Constructor(Vector3(4230.64f, 6065.018f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(207, Terminal.Constructor(Vector3(4230.762f, 6071.986f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(208, Terminal.Constructor(Vector3(4230.795f, 6073.917f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(209, Terminal.Constructor(Vector3(4230.829f, 6075.823f, 46.37661f), cert_terminal), owning_building_guid = 2) - LocalObject(905, Terminal.Constructor(Vector3(4076.052f, 6069.723f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(906, Terminal.Constructor(Vector3(4076.129f, 6072.919f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(907, Terminal.Constructor(Vector3(4079.942f, 6069.654f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(908, Terminal.Constructor(Vector3(4080.143f, 6072.85f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(909, Terminal.Constructor(Vector3(4094.376f, 6064.267f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(910, Terminal.Constructor(Vector3(4094.427f, 6067.188f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(911, Terminal.Constructor(Vector3(4094.554f, 6074.837f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(912, Terminal.Constructor(Vector3(4094.604f, 6077.738f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(913, Terminal.Constructor(Vector3(4142.391f, 6119.958f, 62.66961f), order_terminal), owning_building_guid = 2) - LocalObject(914, Terminal.Constructor(Vector3(4144.87f, 6119.915f, 62.66961f), order_terminal), owning_building_guid = 2) - LocalObject(921, Terminal.Constructor(Vector3(4160.868f, 6119.636f, 62.66961f), order_terminal), owning_building_guid = 2) - LocalObject(925, Terminal.Constructor(Vector3(4163.257f, 6119.594f, 62.66961f), order_terminal), owning_building_guid = 2) - LocalObject(926, Terminal.Constructor(Vector3(4209.381f, 6062.233f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(927, Terminal.Constructor(Vector3(4209.432f, 6065.134f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(928, Terminal.Constructor(Vector3(4209.563f, 6072.813f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(929, Terminal.Constructor(Vector3(4209.614f, 6075.733f, 57.67361f), order_terminal), owning_building_guid = 2) - LocalObject(930, Terminal.Constructor(Vector3(4223.869f, 6067.142f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(931, Terminal.Constructor(Vector3(4223.985f, 6070.336f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(935, Terminal.Constructor(Vector3(4227.882f, 6067.072f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(936, Terminal.Constructor(Vector3(4227.874f, 6070.268f, 47.67361f), order_terminal), owning_building_guid = 2) - LocalObject(832, ProximityTerminal.Constructor(Vector3(4080.923f, 6048.382f, 46.36761f), medical_terminal), owning_building_guid = 2) - LocalObject(833, ProximityTerminal.Constructor(Vector3(4081.742f, 6094.079f, 46.36761f), medical_terminal), owning_building_guid = 2) - LocalObject(834, ProximityTerminal.Constructor(Vector3(4222.283f, 6045.915f, 46.36761f), medical_terminal), owning_building_guid = 2) - LocalObject(835, ProximityTerminal.Constructor(Vector3(4223.019f, 6091.613f, 46.36761f), medical_terminal), owning_building_guid = 2) - LocalObject(534, ImplantTerminalMech.Constructor(Vector3(4087.333f, 6049.411f, 46.37661f)), owning_building_guid = 2) - LocalObject(510, Terminal.Constructor(Vector3(4087.333f, 6049.428f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 186, + Terminal.Constructor(Vector3(4073.098f, 6064.182f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(4073.132f, 6066.089f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(4073.166f, 6068.02f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(4073.372f, 6075.042f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 190, + Terminal.Constructor(Vector3(4073.405f, 6076.949f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 191, + Terminal.Constructor(Vector3(4073.439f, 6078.879f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 192, + Terminal.Constructor(Vector3(4084.288f, 6055.239f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 193, + Terminal.Constructor(Vector3(4084.356f, 6059.142f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 194, + Terminal.Constructor(Vector3(4084.423f, 6062.979f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 195, + Terminal.Constructor(Vector3(4084.786f, 6079.615f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 196, + Terminal.Constructor(Vector3(4084.853f, 6083.493f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 197, + Terminal.Constructor(Vector3(4084.921f, 6087.364f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 198, + Terminal.Constructor(Vector3(4219.091f, 6052.695f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 199, + Terminal.Constructor(Vector3(4219.159f, 6056.567f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 200, + Terminal.Constructor(Vector3(4219.227f, 6060.444f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 201, + Terminal.Constructor(Vector3(4219.504f, 6077.026f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 202, + Terminal.Constructor(Vector3(4219.571f, 6080.863f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 203, + Terminal.Constructor(Vector3(4219.639f, 6084.766f, 56.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(4230.573f, 6061.179f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(4230.607f, 6063.11f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(4230.64f, 6065.018f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(4230.762f, 6071.986f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(4230.795f, 6073.917f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(4230.829f, 6075.823f, 46.37661f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 905, + Terminal.Constructor(Vector3(4076.052f, 6069.723f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 906, + Terminal.Constructor(Vector3(4076.129f, 6072.919f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 907, + Terminal.Constructor(Vector3(4079.942f, 6069.654f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 908, + Terminal.Constructor(Vector3(4080.143f, 6072.85f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 909, + Terminal.Constructor(Vector3(4094.376f, 6064.267f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 910, + Terminal.Constructor(Vector3(4094.427f, 6067.188f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 911, + Terminal.Constructor(Vector3(4094.554f, 6074.837f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 912, + Terminal.Constructor(Vector3(4094.604f, 6077.738f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 913, + Terminal.Constructor(Vector3(4142.391f, 6119.958f, 62.66961f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 914, + Terminal.Constructor(Vector3(4144.87f, 6119.915f, 62.66961f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 921, + Terminal.Constructor(Vector3(4160.868f, 6119.636f, 62.66961f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 925, + Terminal.Constructor(Vector3(4163.257f, 6119.594f, 62.66961f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 926, + Terminal.Constructor(Vector3(4209.381f, 6062.233f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 927, + Terminal.Constructor(Vector3(4209.432f, 6065.134f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 928, + Terminal.Constructor(Vector3(4209.563f, 6072.813f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 929, + Terminal.Constructor(Vector3(4209.614f, 6075.733f, 57.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 930, + Terminal.Constructor(Vector3(4223.869f, 6067.142f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 931, + Terminal.Constructor(Vector3(4223.985f, 6070.336f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 935, + Terminal.Constructor(Vector3(4227.882f, 6067.072f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 936, + Terminal.Constructor(Vector3(4227.874f, 6070.268f, 47.67361f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 832, + ProximityTerminal.Constructor(Vector3(4080.923f, 6048.382f, 46.36761f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 833, + ProximityTerminal.Constructor(Vector3(4081.742f, 6094.079f, 46.36761f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 834, + ProximityTerminal.Constructor(Vector3(4222.283f, 6045.915f, 46.36761f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 835, + ProximityTerminal.Constructor(Vector3(4223.019f, 6091.613f, 46.36761f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 534, + ImplantTerminalMech.Constructor(Vector3(4087.333f, 6049.411f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 510, + Terminal.Constructor(Vector3(4087.333f, 6049.428f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(534, 510) - LocalObject(535, ImplantTerminalMech.Constructor(Vector3(4088.066f, 6092.848f, 46.37661f)), owning_building_guid = 2) - LocalObject(511, Terminal.Constructor(Vector3(4088.066f, 6092.83f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 535, + ImplantTerminalMech.Constructor(Vector3(4088.066f, 6092.848f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 511, + Terminal.Constructor(Vector3(4088.066f, 6092.83f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(535, 511) - LocalObject(536, ImplantTerminalMech.Constructor(Vector3(4092.635f, 6049.318f, 46.37661f)), owning_building_guid = 2) - LocalObject(512, Terminal.Constructor(Vector3(4092.635f, 6049.336f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 536, + ImplantTerminalMech.Constructor(Vector3(4092.635f, 6049.318f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 512, + Terminal.Constructor(Vector3(4092.635f, 6049.336f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(536, 512) - LocalObject(537, ImplantTerminalMech.Constructor(Vector3(4093.472f, 6092.754f, 46.37661f)), owning_building_guid = 2) - LocalObject(513, Terminal.Constructor(Vector3(4093.472f, 6092.736f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 537, + ImplantTerminalMech.Constructor(Vector3(4093.472f, 6092.754f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 513, + Terminal.Constructor(Vector3(4093.472f, 6092.736f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(537, 513) - LocalObject(538, ImplantTerminalMech.Constructor(Vector3(4210.539f, 6047.256f, 46.37661f)), owning_building_guid = 2) - LocalObject(514, Terminal.Constructor(Vector3(4210.539f, 6047.274f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 538, + ImplantTerminalMech.Constructor(Vector3(4210.539f, 6047.256f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 514, + Terminal.Constructor(Vector3(4210.539f, 6047.274f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(538, 514) - LocalObject(539, ImplantTerminalMech.Constructor(Vector3(4211.292f, 6090.688f, 46.37661f)), owning_building_guid = 2) - LocalObject(515, Terminal.Constructor(Vector3(4211.292f, 6090.669f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 539, + ImplantTerminalMech.Constructor(Vector3(4211.292f, 6090.688f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 515, + Terminal.Constructor(Vector3(4211.292f, 6090.669f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(539, 515) - LocalObject(540, ImplantTerminalMech.Constructor(Vector3(4215.946f, 6047.162f, 46.37661f)), owning_building_guid = 2) - LocalObject(516, Terminal.Constructor(Vector3(4215.946f, 6047.18f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 540, + ImplantTerminalMech.Constructor(Vector3(4215.946f, 6047.162f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 516, + Terminal.Constructor(Vector3(4215.946f, 6047.18f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(540, 516) - LocalObject(541, ImplantTerminalMech.Constructor(Vector3(4216.594f, 6090.595f, 46.37661f)), owning_building_guid = 2) - LocalObject(517, Terminal.Constructor(Vector3(4216.594f, 6090.577f, 46.37661f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 541, + ImplantTerminalMech.Constructor(Vector3(4216.594f, 6090.595f, 46.37661f)), + owning_building_guid = 2 + ) + LocalObject( + 517, + Terminal.Constructor(Vector3(4216.594f, 6090.577f, 46.37661f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(541, 517) } Building4() def Building4(): Unit = { // Name: Esamir_HART Type: orbital_building_nc GUID: 3, MapID: 4 - LocalBuilding("Esamir_HART", 3, 4, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4816f, 3506f, 68.73806f), Vector3(0f, 0f, 315f), orbital_building_nc))) + LocalBuilding( + "Esamir_HART", + 3, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4816f, 3506f, 68.73806f), + Vector3(0f, 0f, 315f), + orbital_building_nc + ) + ) + ) LocalObject(394, Door.Constructor(Vector3(4750.953f, 3457.91f, 72.84406f)), owning_building_guid = 3) LocalObject(395, Door.Constructor(Vector3(4767.924f, 3440.939f, 72.84406f)), owning_building_guid = 3) LocalObject(396, Door.Constructor(Vector3(4864.076f, 3571.061f, 72.84406f)), owning_building_guid = 3) @@ -262,95 +810,382 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(753, Locker.Constructor(Vector3(4854.018f, 3470.741f, 85.84806f)), owning_building_guid = 3) LocalObject(754, Locker.Constructor(Vector3(4854.95f, 3471.672f, 85.84806f)), owning_building_guid = 3) LocalObject(755, Locker.Constructor(Vector3(4855.89f, 3472.613f, 85.84806f)), owning_building_guid = 3) - LocalObject(210, Terminal.Constructor(Vector3(4755.074f, 3455.607f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(211, Terminal.Constructor(Vector3(4756.439f, 3454.241f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(212, Terminal.Constructor(Vector3(4756.947f, 3469.759f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(213, Terminal.Constructor(Vector3(4757.788f, 3452.892f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(214, Terminal.Constructor(Vector3(4759.685f, 3467.021f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(215, Terminal.Constructor(Vector3(4762.427f, 3464.279f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(216, Terminal.Constructor(Vector3(4762.716f, 3447.964f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(217, Terminal.Constructor(Vector3(4764.082f, 3446.599f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(218, Terminal.Constructor(Vector3(4765.43f, 3445.25f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(219, Terminal.Constructor(Vector3(4774.162f, 3452.561f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(220, Terminal.Constructor(Vector3(4776.876f, 3449.847f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(221, Terminal.Constructor(Vector3(4779.636f, 3447.087f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(222, Terminal.Constructor(Vector3(4852.419f, 3564.961f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(223, Terminal.Constructor(Vector3(4855.179f, 3562.202f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(224, Terminal.Constructor(Vector3(4857.893f, 3559.488f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(225, Terminal.Constructor(Vector3(4866.625f, 3566.798f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(226, Terminal.Constructor(Vector3(4867.973f, 3565.45f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(227, Terminal.Constructor(Vector3(4869.338f, 3564.084f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(228, Terminal.Constructor(Vector3(4869.607f, 3547.671f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(229, Terminal.Constructor(Vector3(4872.35f, 3544.928f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(230, Terminal.Constructor(Vector3(4874.247f, 3559.058f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(231, Terminal.Constructor(Vector3(4875.088f, 3542.19f, 81.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(232, Terminal.Constructor(Vector3(4875.595f, 3557.709f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(233, Terminal.Constructor(Vector3(4876.96f, 3556.344f, 71.23806f), cert_terminal), owning_building_guid = 3) - LocalObject(961, Terminal.Constructor(Vector3(4761.182f, 3453.448f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(962, Terminal.Constructor(Vector3(4763.486f, 3451.235f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(963, Terminal.Constructor(Vector3(4764.02f, 3456.287f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(964, Terminal.Constructor(Vector3(4766.237f, 3453.985f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(965, Terminal.Constructor(Vector3(4770.553f, 3470.119f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(966, Terminal.Constructor(Vector3(4772.604f, 3468.067f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(967, Terminal.Constructor(Vector3(4778.037f, 3462.639f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(968, Terminal.Constructor(Vector3(4780.103f, 3460.573f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(969, Terminal.Constructor(Vector3(4843.855f, 3463.451f, 87.53106f), order_terminal), owning_building_guid = 3) - LocalObject(970, Terminal.Constructor(Vector3(4845.545f, 3465.141f, 87.53106f), order_terminal), owning_building_guid = 3) - LocalObject(971, Terminal.Constructor(Vector3(4851.905f, 3551.434f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(972, Terminal.Constructor(Vector3(4853.97f, 3549.368f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(973, Terminal.Constructor(Vector3(4856.859f, 3476.455f, 87.53106f), order_terminal), owning_building_guid = 3) - LocalObject(974, Terminal.Constructor(Vector3(4858.612f, 3478.208f, 87.53106f), order_terminal), owning_building_guid = 3) - LocalObject(975, Terminal.Constructor(Vector3(4859.385f, 3543.963f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(976, Terminal.Constructor(Vector3(4861.437f, 3541.912f, 82.53506f), order_terminal), owning_building_guid = 3) - LocalObject(977, Terminal.Constructor(Vector3(4865.807f, 3558.074f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(978, Terminal.Constructor(Vector3(4867.966f, 3555.71f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(979, Terminal.Constructor(Vector3(4868.558f, 3560.825f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(980, Terminal.Constructor(Vector3(4870.804f, 3558.549f, 72.53506f), order_terminal), owning_building_guid = 3) - LocalObject(836, ProximityTerminal.Constructor(Vector3(4749.852f, 3472.173f, 71.22906f), medical_terminal), owning_building_guid = 3) - LocalObject(837, ProximityTerminal.Constructor(Vector3(4782.213f, 3439.9f, 71.22906f), medical_terminal), owning_building_guid = 3) - LocalObject(838, ProximityTerminal.Constructor(Vector3(4849.824f, 3572.146f, 71.22906f), medical_terminal), owning_building_guid = 3) - LocalObject(839, ProximityTerminal.Constructor(Vector3(4882.126f, 3539.812f, 71.22906f), medical_terminal), owning_building_guid = 3) - LocalObject(542, ImplantTerminalMech.Constructor(Vector3(4755.15f, 3475.866f, 71.23806f)), owning_building_guid = 3) - LocalObject(518, Terminal.Constructor(Vector3(4755.164f, 3475.853f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 210, + Terminal.Constructor(Vector3(4755.074f, 3455.607f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(4756.439f, 3454.241f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(4756.947f, 3469.759f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(4757.788f, 3452.892f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(4759.685f, 3467.021f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(4762.427f, 3464.279f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(4762.716f, 3447.964f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 217, + Terminal.Constructor(Vector3(4764.082f, 3446.599f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 218, + Terminal.Constructor(Vector3(4765.43f, 3445.25f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 219, + Terminal.Constructor(Vector3(4774.162f, 3452.561f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 220, + Terminal.Constructor(Vector3(4776.876f, 3449.847f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 221, + Terminal.Constructor(Vector3(4779.636f, 3447.087f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 222, + Terminal.Constructor(Vector3(4852.419f, 3564.961f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 223, + Terminal.Constructor(Vector3(4855.179f, 3562.202f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(4857.893f, 3559.488f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(4866.625f, 3566.798f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(4867.973f, 3565.45f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 227, + Terminal.Constructor(Vector3(4869.338f, 3564.084f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(4869.607f, 3547.671f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(4872.35f, 3544.928f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 230, + Terminal.Constructor(Vector3(4874.247f, 3559.058f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(4875.088f, 3542.19f, 81.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(4875.595f, 3557.709f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(4876.96f, 3556.344f, 71.23806f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 961, + Terminal.Constructor(Vector3(4761.182f, 3453.448f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 962, + Terminal.Constructor(Vector3(4763.486f, 3451.235f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 963, + Terminal.Constructor(Vector3(4764.02f, 3456.287f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 964, + Terminal.Constructor(Vector3(4766.237f, 3453.985f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 965, + Terminal.Constructor(Vector3(4770.553f, 3470.119f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 966, + Terminal.Constructor(Vector3(4772.604f, 3468.067f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 967, + Terminal.Constructor(Vector3(4778.037f, 3462.639f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 968, + Terminal.Constructor(Vector3(4780.103f, 3460.573f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 969, + Terminal.Constructor(Vector3(4843.855f, 3463.451f, 87.53106f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 970, + Terminal.Constructor(Vector3(4845.545f, 3465.141f, 87.53106f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 971, + Terminal.Constructor(Vector3(4851.905f, 3551.434f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 972, + Terminal.Constructor(Vector3(4853.97f, 3549.368f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 973, + Terminal.Constructor(Vector3(4856.859f, 3476.455f, 87.53106f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 974, + Terminal.Constructor(Vector3(4858.612f, 3478.208f, 87.53106f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 975, + Terminal.Constructor(Vector3(4859.385f, 3543.963f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 976, + Terminal.Constructor(Vector3(4861.437f, 3541.912f, 82.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 977, + Terminal.Constructor(Vector3(4865.807f, 3558.074f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 978, + Terminal.Constructor(Vector3(4867.966f, 3555.71f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 979, + Terminal.Constructor(Vector3(4868.558f, 3560.825f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 980, + Terminal.Constructor(Vector3(4870.804f, 3558.549f, 72.53506f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 836, + ProximityTerminal.Constructor(Vector3(4749.852f, 3472.173f, 71.22906f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 837, + ProximityTerminal.Constructor(Vector3(4782.213f, 3439.9f, 71.22906f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 838, + ProximityTerminal.Constructor(Vector3(4849.824f, 3572.146f, 71.22906f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 839, + ProximityTerminal.Constructor(Vector3(4882.126f, 3539.812f, 71.22906f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 542, + ImplantTerminalMech.Constructor(Vector3(4755.15f, 3475.866f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 518, + Terminal.Constructor(Vector3(4755.164f, 3475.853f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(542, 518) - LocalObject(543, ImplantTerminalMech.Constructor(Vector3(4758.975f, 3479.69f, 71.23806f)), owning_building_guid = 3) - LocalObject(519, Terminal.Constructor(Vector3(4758.987f, 3479.677f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 543, + ImplantTerminalMech.Constructor(Vector3(4758.975f, 3479.69f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 519, + Terminal.Constructor(Vector3(4758.987f, 3479.677f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(543, 519) - LocalObject(544, ImplantTerminalMech.Constructor(Vector3(4785.944f, 3445.229f, 71.23806f)), owning_building_guid = 3) - LocalObject(520, Terminal.Constructor(Vector3(4785.931f, 3445.241f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 544, + ImplantTerminalMech.Constructor(Vector3(4785.944f, 3445.229f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 520, + Terminal.Constructor(Vector3(4785.931f, 3445.241f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(544, 520) - LocalObject(545, ImplantTerminalMech.Constructor(Vector3(4789.693f, 3448.978f, 71.23806f)), owning_building_guid = 3) - LocalObject(521, Terminal.Constructor(Vector3(4789.681f, 3448.991f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 545, + ImplantTerminalMech.Constructor(Vector3(4789.693f, 3448.978f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 521, + Terminal.Constructor(Vector3(4789.681f, 3448.991f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(545, 521) - LocalObject(546, ImplantTerminalMech.Constructor(Vector3(4842.361f, 3563.071f, 71.23806f)), owning_building_guid = 3) - LocalObject(522, Terminal.Constructor(Vector3(4842.374f, 3563.058f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 546, + ImplantTerminalMech.Constructor(Vector3(4842.361f, 3563.071f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 522, + Terminal.Constructor(Vector3(4842.374f, 3563.058f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(546, 522) - LocalObject(547, ImplantTerminalMech.Constructor(Vector3(4846.111f, 3566.82f, 71.23806f)), owning_building_guid = 3) - LocalObject(523, Terminal.Constructor(Vector3(4846.124f, 3566.808f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 547, + ImplantTerminalMech.Constructor(Vector3(4846.111f, 3566.82f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 523, + Terminal.Constructor(Vector3(4846.124f, 3566.808f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(547, 523) - LocalObject(548, ImplantTerminalMech.Constructor(Vector3(4873.024f, 3532.295f, 71.23806f)), owning_building_guid = 3) - LocalObject(524, Terminal.Constructor(Vector3(4873.012f, 3532.308f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 548, + ImplantTerminalMech.Constructor(Vector3(4873.024f, 3532.295f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 524, + Terminal.Constructor(Vector3(4873.012f, 3532.308f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(548, 524) - LocalObject(549, ImplantTerminalMech.Constructor(Vector3(4876.848f, 3536.118f, 71.23806f)), owning_building_guid = 3) - LocalObject(525, Terminal.Constructor(Vector3(4876.835f, 3536.131f, 71.23806f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 549, + ImplantTerminalMech.Constructor(Vector3(4876.848f, 3536.118f, 71.23806f)), + owning_building_guid = 3 + ) + LocalObject( + 525, + Terminal.Constructor(Vector3(4876.835f, 3536.131f, 71.23806f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(549, 525) } Building50() def Building50(): Unit = { // Name: nc_SW_Cyssor_Warpgate_Tower Type: tower_a GUID: 28, MapID: 50 - LocalBuilding("nc_SW_Cyssor_Warpgate_Tower", 28, 50, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1980f, 5718f, 55.22141f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1094, CaptureTerminal.Constructor(Vector3(1996.587f, 5717.897f, 65.22041f), secondary_capture), owning_building_guid = 28) + LocalBuilding( + "nc_SW_Cyssor_Warpgate_Tower", + 28, + 50, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1980f, 5718f, 55.22141f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1094, + CaptureTerminal.Constructor(Vector3(1996.587f, 5717.897f, 65.22041f), secondary_capture), + owning_building_guid = 28 + ) LocalObject(316, Door.Constructor(Vector3(1992f, 5710f, 56.74241f)), owning_building_guid = 28) LocalObject(317, Door.Constructor(Vector3(1992f, 5710f, 76.74141f)), owning_building_guid = 28) LocalObject(318, Door.Constructor(Vector3(1992f, 5726f, 56.74241f)), owning_building_guid = 28) LocalObject(319, Door.Constructor(Vector3(1992f, 5726f, 76.74141f)), owning_building_guid = 28) LocalObject(1108, Door.Constructor(Vector3(1991.146f, 5706.794f, 46.55741f)), owning_building_guid = 28) LocalObject(1109, Door.Constructor(Vector3(1991.146f, 5723.204f, 46.55741f)), owning_building_guid = 28) - LocalObject(552, IFFLock.Constructor(Vector3(1989.957f, 5726.811f, 56.68241f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 318) - LocalObject(553, IFFLock.Constructor(Vector3(1989.957f, 5726.811f, 76.68241f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 319) - LocalObject(556, IFFLock.Constructor(Vector3(1994.047f, 5709.189f, 56.68241f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 316) - LocalObject(557, IFFLock.Constructor(Vector3(1994.047f, 5709.189f, 76.68241f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 317) + LocalObject( + 552, + IFFLock.Constructor(Vector3(1989.957f, 5726.811f, 56.68241f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 318 + ) + LocalObject( + 553, + IFFLock.Constructor(Vector3(1989.957f, 5726.811f, 76.68241f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 319 + ) + LocalObject( + 556, + IFFLock.Constructor(Vector3(1994.047f, 5709.189f, 56.68241f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 316 + ) + LocalObject( + 557, + IFFLock.Constructor(Vector3(1994.047f, 5709.189f, 76.68241f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 317 + ) LocalObject(612, Locker.Constructor(Vector3(1995.716f, 5702.963f, 45.21541f)), owning_building_guid = 28) LocalObject(613, Locker.Constructor(Vector3(1995.751f, 5724.835f, 45.21541f)), owning_building_guid = 28) LocalObject(614, Locker.Constructor(Vector3(1997.053f, 5702.963f, 45.21541f)), owning_building_guid = 28) @@ -359,35 +1194,106 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(621, Locker.Constructor(Vector3(1999.741f, 5724.835f, 45.21541f)), owning_building_guid = 28) LocalObject(622, Locker.Constructor(Vector3(2001.143f, 5702.963f, 45.21541f)), owning_building_guid = 28) LocalObject(623, Locker.Constructor(Vector3(2001.143f, 5724.835f, 45.21541f)), owning_building_guid = 28) - LocalObject(846, Terminal.Constructor(Vector3(2001.445f, 5708.129f, 46.55341f), order_terminal), owning_building_guid = 28) - LocalObject(847, Terminal.Constructor(Vector3(2001.445f, 5713.853f, 46.55341f), order_terminal), owning_building_guid = 28) - LocalObject(848, Terminal.Constructor(Vector3(2001.445f, 5719.234f, 46.55341f), order_terminal), owning_building_guid = 28) - LocalObject(1069, SpawnTube.Constructor(Vector3(1990.706f, 5705.742f, 44.70341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(1070, SpawnTube.Constructor(Vector3(1990.706f, 5722.152f, 44.70341f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(713, FacilityTurret.Constructor(Vector3(1967.32f, 5705.295f, 74.16341f), manned_turret), owning_building_guid = 28) + LocalObject( + 846, + Terminal.Constructor(Vector3(2001.445f, 5708.129f, 46.55341f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(2001.445f, 5713.853f, 46.55341f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(2001.445f, 5719.234f, 46.55341f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 1069, + SpawnTube.Constructor(Vector3(1990.706f, 5705.742f, 44.70341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 1070, + SpawnTube.Constructor(Vector3(1990.706f, 5722.152f, 44.70341f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 713, + FacilityTurret.Constructor(Vector3(1967.32f, 5705.295f, 74.16341f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(713, 5000) - LocalObject(715, FacilityTurret.Constructor(Vector3(2002.647f, 5730.707f, 74.16341f), manned_turret), owning_building_guid = 28) + LocalObject( + 715, + FacilityTurret.Constructor(Vector3(2002.647f, 5730.707f, 74.16341f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(715, 5001) - LocalObject(1029, Painbox.Constructor(Vector3(1985.235f, 5711.803f, 46.72051f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(1032, Painbox.Constructor(Vector3(1996.889f, 5720.086f, 45.32141f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(1033, Painbox.Constructor(Vector3(1996.975f, 5708.223f, 45.32141f), painbox_radius_continuous), owning_building_guid = 28) + LocalObject( + 1029, + Painbox.Constructor(Vector3(1985.235f, 5711.803f, 46.72051f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1032, + Painbox.Constructor(Vector3(1996.889f, 5720.086f, 45.32141f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 1033, + Painbox.Constructor(Vector3(1996.975f, 5708.223f, 45.32141f), painbox_radius_continuous), + owning_building_guid = 28 + ) } Building54() def Building54(): Unit = { // Name: nc_Far_Cyssor_Tower Type: tower_a GUID: 29, MapID: 54 - LocalBuilding("nc_Far_Cyssor_Tower", 29, 54, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2940f, 5192f, 47.96524f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1096, CaptureTerminal.Constructor(Vector3(2956.587f, 5191.897f, 57.96424f), secondary_capture), owning_building_guid = 29) + LocalBuilding( + "nc_Far_Cyssor_Tower", + 29, + 54, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2940f, 5192f, 47.96524f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1096, + CaptureTerminal.Constructor(Vector3(2956.587f, 5191.897f, 57.96424f), secondary_capture), + owning_building_guid = 29 + ) LocalObject(326, Door.Constructor(Vector3(2952f, 5184f, 49.48624f)), owning_building_guid = 29) LocalObject(327, Door.Constructor(Vector3(2952f, 5184f, 69.48524f)), owning_building_guid = 29) LocalObject(328, Door.Constructor(Vector3(2952f, 5200f, 49.48624f)), owning_building_guid = 29) LocalObject(329, Door.Constructor(Vector3(2952f, 5200f, 69.48524f)), owning_building_guid = 29) LocalObject(1112, Door.Constructor(Vector3(2951.146f, 5180.794f, 39.30124f)), owning_building_guid = 29) LocalObject(1113, Door.Constructor(Vector3(2951.146f, 5197.204f, 39.30124f)), owning_building_guid = 29) - LocalObject(564, IFFLock.Constructor(Vector3(2949.957f, 5200.811f, 49.42624f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 328) - LocalObject(565, IFFLock.Constructor(Vector3(2949.957f, 5200.811f, 69.42624f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 329) - LocalObject(566, IFFLock.Constructor(Vector3(2954.047f, 5183.189f, 49.42624f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 326) - LocalObject(567, IFFLock.Constructor(Vector3(2954.047f, 5183.189f, 69.42624f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 327) + LocalObject( + 564, + IFFLock.Constructor(Vector3(2949.957f, 5200.811f, 49.42624f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 328 + ) + LocalObject( + 565, + IFFLock.Constructor(Vector3(2949.957f, 5200.811f, 69.42624f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 329 + ) + LocalObject( + 566, + IFFLock.Constructor(Vector3(2954.047f, 5183.189f, 49.42624f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 326 + ) + LocalObject( + 567, + IFFLock.Constructor(Vector3(2954.047f, 5183.189f, 69.42624f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 327 + ) LocalObject(632, Locker.Constructor(Vector3(2955.716f, 5176.963f, 37.95924f)), owning_building_guid = 29) LocalObject(633, Locker.Constructor(Vector3(2955.751f, 5198.835f, 37.95924f)), owning_building_guid = 29) LocalObject(634, Locker.Constructor(Vector3(2957.053f, 5176.963f, 37.95924f)), owning_building_guid = 29) @@ -396,35 +1302,106 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(637, Locker.Constructor(Vector3(2959.741f, 5198.835f, 37.95924f)), owning_building_guid = 29) LocalObject(638, Locker.Constructor(Vector3(2961.143f, 5176.963f, 37.95924f)), owning_building_guid = 29) LocalObject(639, Locker.Constructor(Vector3(2961.143f, 5198.835f, 37.95924f)), owning_building_guid = 29) - LocalObject(890, Terminal.Constructor(Vector3(2961.445f, 5182.129f, 39.29724f), order_terminal), owning_building_guid = 29) - LocalObject(891, Terminal.Constructor(Vector3(2961.445f, 5187.853f, 39.29724f), order_terminal), owning_building_guid = 29) - LocalObject(892, Terminal.Constructor(Vector3(2961.445f, 5193.234f, 39.29724f), order_terminal), owning_building_guid = 29) - LocalObject(1073, SpawnTube.Constructor(Vector3(2950.706f, 5179.742f, 37.44724f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(1074, SpawnTube.Constructor(Vector3(2950.706f, 5196.152f, 37.44724f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(716, FacilityTurret.Constructor(Vector3(2927.32f, 5179.295f, 66.90723f), manned_turret), owning_building_guid = 29) + LocalObject( + 890, + Terminal.Constructor(Vector3(2961.445f, 5182.129f, 39.29724f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 891, + Terminal.Constructor(Vector3(2961.445f, 5187.853f, 39.29724f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 892, + Terminal.Constructor(Vector3(2961.445f, 5193.234f, 39.29724f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1073, + SpawnTube.Constructor(Vector3(2950.706f, 5179.742f, 37.44724f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 1074, + SpawnTube.Constructor(Vector3(2950.706f, 5196.152f, 37.44724f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 716, + FacilityTurret.Constructor(Vector3(2927.32f, 5179.295f, 66.90723f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(716, 5002) - LocalObject(717, FacilityTurret.Constructor(Vector3(2962.647f, 5204.707f, 66.90723f), manned_turret), owning_building_guid = 29) + LocalObject( + 717, + FacilityTurret.Constructor(Vector3(2962.647f, 5204.707f, 66.90723f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(717, 5003) - LocalObject(1037, Painbox.Constructor(Vector3(2945.235f, 5185.803f, 39.46434f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(1038, Painbox.Constructor(Vector3(2956.889f, 5194.086f, 38.06524f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(1039, Painbox.Constructor(Vector3(2956.975f, 5182.223f, 38.06524f), painbox_radius_continuous), owning_building_guid = 29) + LocalObject( + 1037, + Painbox.Constructor(Vector3(2945.235f, 5185.803f, 39.46434f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1038, + Painbox.Constructor(Vector3(2956.889f, 5194.086f, 38.06524f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 1039, + Painbox.Constructor(Vector3(2956.975f, 5182.223f, 38.06524f), painbox_radius_continuous), + owning_building_guid = 29 + ) } Building55() def Building55(): Unit = { // Name: nc_Far_Amerish_Tower Type: tower_a GUID: 30, MapID: 55 - LocalBuilding("nc_Far_Amerish_Tower", 30, 55, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4206f, 5296f, 67.51106f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1100, CaptureTerminal.Constructor(Vector3(4222.587f, 5295.897f, 77.51006f), secondary_capture), owning_building_guid = 30) + LocalBuilding( + "nc_Far_Amerish_Tower", + 30, + 55, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4206f, 5296f, 67.51106f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1100, + CaptureTerminal.Constructor(Vector3(4222.587f, 5295.897f, 77.51006f), secondary_capture), + owning_building_guid = 30 + ) LocalObject(344, Door.Constructor(Vector3(4218f, 5288f, 69.03207f)), owning_building_guid = 30) LocalObject(345, Door.Constructor(Vector3(4218f, 5288f, 89.03107f)), owning_building_guid = 30) LocalObject(346, Door.Constructor(Vector3(4218f, 5304f, 69.03207f)), owning_building_guid = 30) LocalObject(347, Door.Constructor(Vector3(4218f, 5304f, 89.03107f)), owning_building_guid = 30) LocalObject(1120, Door.Constructor(Vector3(4217.146f, 5284.794f, 58.84706f)), owning_building_guid = 30) LocalObject(1121, Door.Constructor(Vector3(4217.146f, 5301.204f, 58.84706f)), owning_building_guid = 30) - LocalObject(582, IFFLock.Constructor(Vector3(4215.957f, 5304.811f, 68.97206f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 346) - LocalObject(583, IFFLock.Constructor(Vector3(4215.957f, 5304.811f, 88.97206f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 347) - LocalObject(584, IFFLock.Constructor(Vector3(4220.047f, 5287.189f, 68.97206f), Vector3(0, 0, 180)), owning_building_guid = 30, door_guid = 344) - LocalObject(585, IFFLock.Constructor(Vector3(4220.047f, 5287.189f, 88.97206f), Vector3(0, 0, 180)), owning_building_guid = 30, door_guid = 345) + LocalObject( + 582, + IFFLock.Constructor(Vector3(4215.957f, 5304.811f, 68.97206f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 346 + ) + LocalObject( + 583, + IFFLock.Constructor(Vector3(4215.957f, 5304.811f, 88.97206f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 347 + ) + LocalObject( + 584, + IFFLock.Constructor(Vector3(4220.047f, 5287.189f, 68.97206f), Vector3(0, 0, 180)), + owning_building_guid = 30, + door_guid = 344 + ) + LocalObject( + 585, + IFFLock.Constructor(Vector3(4220.047f, 5287.189f, 88.97206f), Vector3(0, 0, 180)), + owning_building_guid = 30, + door_guid = 345 + ) LocalObject(664, Locker.Constructor(Vector3(4221.716f, 5280.963f, 57.50506f)), owning_building_guid = 30) LocalObject(665, Locker.Constructor(Vector3(4221.751f, 5302.835f, 57.50506f)), owning_building_guid = 30) LocalObject(666, Locker.Constructor(Vector3(4223.053f, 5280.963f, 57.50506f)), owning_building_guid = 30) @@ -433,35 +1410,106 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(669, Locker.Constructor(Vector3(4225.741f, 5302.835f, 57.50506f)), owning_building_guid = 30) LocalObject(670, Locker.Constructor(Vector3(4227.143f, 5280.963f, 57.50506f)), owning_building_guid = 30) LocalObject(671, Locker.Constructor(Vector3(4227.143f, 5302.835f, 57.50506f)), owning_building_guid = 30) - LocalObject(932, Terminal.Constructor(Vector3(4227.445f, 5286.129f, 58.84306f), order_terminal), owning_building_guid = 30) - LocalObject(933, Terminal.Constructor(Vector3(4227.445f, 5291.853f, 58.84306f), order_terminal), owning_building_guid = 30) - LocalObject(934, Terminal.Constructor(Vector3(4227.445f, 5297.234f, 58.84306f), order_terminal), owning_building_guid = 30) - LocalObject(1081, SpawnTube.Constructor(Vector3(4216.706f, 5283.742f, 56.99306f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(1082, SpawnTube.Constructor(Vector3(4216.706f, 5300.152f, 56.99306f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(722, FacilityTurret.Constructor(Vector3(4193.32f, 5283.295f, 86.45306f), manned_turret), owning_building_guid = 30) + LocalObject( + 932, + Terminal.Constructor(Vector3(4227.445f, 5286.129f, 58.84306f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 933, + Terminal.Constructor(Vector3(4227.445f, 5291.853f, 58.84306f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 934, + Terminal.Constructor(Vector3(4227.445f, 5297.234f, 58.84306f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1081, + SpawnTube.Constructor(Vector3(4216.706f, 5283.742f, 56.99306f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 1082, + SpawnTube.Constructor(Vector3(4216.706f, 5300.152f, 56.99306f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 722, + FacilityTurret.Constructor(Vector3(4193.32f, 5283.295f, 86.45306f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(722, 5004) - LocalObject(724, FacilityTurret.Constructor(Vector3(4228.647f, 5308.707f, 86.45306f), manned_turret), owning_building_guid = 30) + LocalObject( + 724, + FacilityTurret.Constructor(Vector3(4228.647f, 5308.707f, 86.45306f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(724, 5005) - LocalObject(1049, Painbox.Constructor(Vector3(4211.235f, 5289.803f, 59.01016f), painbox_radius_continuous), owning_building_guid = 30) - LocalObject(1050, Painbox.Constructor(Vector3(4222.889f, 5298.086f, 57.61106f), painbox_radius_continuous), owning_building_guid = 30) - LocalObject(1051, Painbox.Constructor(Vector3(4222.975f, 5286.223f, 57.61106f), painbox_radius_continuous), owning_building_guid = 30) + LocalObject( + 1049, + Painbox.Constructor(Vector3(4211.235f, 5289.803f, 59.01016f), painbox_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 1050, + Painbox.Constructor(Vector3(4222.889f, 5298.086f, 57.61106f), painbox_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 1051, + Painbox.Constructor(Vector3(4222.975f, 5286.223f, 57.61106f), painbox_radius_continuous), + owning_building_guid = 30 + ) } Building44() def Building44(): Unit = { // Name: nc_Far_Esamir_Tower Type: tower_a GUID: 31, MapID: 44 - LocalBuilding("nc_Far_Esamir_Tower", 31, 44, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4228f, 3982f, 63.52824f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1101, CaptureTerminal.Constructor(Vector3(4244.587f, 3981.897f, 73.52724f), secondary_capture), owning_building_guid = 31) + LocalBuilding( + "nc_Far_Esamir_Tower", + 31, + 44, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4228f, 3982f, 63.52824f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1101, + CaptureTerminal.Constructor(Vector3(4244.587f, 3981.897f, 73.52724f), secondary_capture), + owning_building_guid = 31 + ) LocalObject(348, Door.Constructor(Vector3(4240f, 3974f, 65.04925f)), owning_building_guid = 31) LocalObject(349, Door.Constructor(Vector3(4240f, 3974f, 85.04825f)), owning_building_guid = 31) LocalObject(350, Door.Constructor(Vector3(4240f, 3990f, 65.04925f)), owning_building_guid = 31) LocalObject(351, Door.Constructor(Vector3(4240f, 3990f, 85.04825f)), owning_building_guid = 31) LocalObject(1122, Door.Constructor(Vector3(4239.146f, 3970.794f, 54.86424f)), owning_building_guid = 31) LocalObject(1123, Door.Constructor(Vector3(4239.146f, 3987.204f, 54.86424f)), owning_building_guid = 31) - LocalObject(586, IFFLock.Constructor(Vector3(4237.957f, 3990.811f, 64.98924f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 350) - LocalObject(587, IFFLock.Constructor(Vector3(4237.957f, 3990.811f, 84.98924f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 351) - LocalObject(588, IFFLock.Constructor(Vector3(4242.047f, 3973.189f, 64.98924f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 348) - LocalObject(589, IFFLock.Constructor(Vector3(4242.047f, 3973.189f, 84.98924f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 349) + LocalObject( + 586, + IFFLock.Constructor(Vector3(4237.957f, 3990.811f, 64.98924f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 350 + ) + LocalObject( + 587, + IFFLock.Constructor(Vector3(4237.957f, 3990.811f, 84.98924f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 351 + ) + LocalObject( + 588, + IFFLock.Constructor(Vector3(4242.047f, 3973.189f, 64.98924f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 348 + ) + LocalObject( + 589, + IFFLock.Constructor(Vector3(4242.047f, 3973.189f, 84.98924f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 349 + ) LocalObject(672, Locker.Constructor(Vector3(4243.716f, 3966.963f, 53.52224f)), owning_building_guid = 31) LocalObject(673, Locker.Constructor(Vector3(4243.751f, 3988.835f, 53.52224f)), owning_building_guid = 31) LocalObject(674, Locker.Constructor(Vector3(4245.053f, 3966.963f, 53.52224f)), owning_building_guid = 31) @@ -470,35 +1518,106 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(677, Locker.Constructor(Vector3(4247.741f, 3988.835f, 53.52224f)), owning_building_guid = 31) LocalObject(678, Locker.Constructor(Vector3(4249.143f, 3966.963f, 53.52224f)), owning_building_guid = 31) LocalObject(679, Locker.Constructor(Vector3(4249.143f, 3988.835f, 53.52224f)), owning_building_guid = 31) - LocalObject(937, Terminal.Constructor(Vector3(4249.445f, 3972.129f, 54.86024f), order_terminal), owning_building_guid = 31) - LocalObject(938, Terminal.Constructor(Vector3(4249.445f, 3977.853f, 54.86024f), order_terminal), owning_building_guid = 31) - LocalObject(939, Terminal.Constructor(Vector3(4249.445f, 3983.234f, 54.86024f), order_terminal), owning_building_guid = 31) - LocalObject(1083, SpawnTube.Constructor(Vector3(4238.706f, 3969.742f, 53.01025f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(1084, SpawnTube.Constructor(Vector3(4238.706f, 3986.152f, 53.01025f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(723, FacilityTurret.Constructor(Vector3(4215.32f, 3969.295f, 82.47025f), manned_turret), owning_building_guid = 31) + LocalObject( + 937, + Terminal.Constructor(Vector3(4249.445f, 3972.129f, 54.86024f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 938, + Terminal.Constructor(Vector3(4249.445f, 3977.853f, 54.86024f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 939, + Terminal.Constructor(Vector3(4249.445f, 3983.234f, 54.86024f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 1083, + SpawnTube.Constructor(Vector3(4238.706f, 3969.742f, 53.01025f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 1084, + SpawnTube.Constructor(Vector3(4238.706f, 3986.152f, 53.01025f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 723, + FacilityTurret.Constructor(Vector3(4215.32f, 3969.295f, 82.47025f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(723, 5006) - LocalObject(725, FacilityTurret.Constructor(Vector3(4250.647f, 3994.707f, 82.47025f), manned_turret), owning_building_guid = 31) + LocalObject( + 725, + FacilityTurret.Constructor(Vector3(4250.647f, 3994.707f, 82.47025f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(725, 5007) - LocalObject(1052, Painbox.Constructor(Vector3(4233.235f, 3975.803f, 55.02734f), painbox_radius_continuous), owning_building_guid = 31) - LocalObject(1053, Painbox.Constructor(Vector3(4244.889f, 3984.086f, 53.62824f), painbox_radius_continuous), owning_building_guid = 31) - LocalObject(1054, Painbox.Constructor(Vector3(4244.975f, 3972.223f, 53.62824f), painbox_radius_continuous), owning_building_guid = 31) + LocalObject( + 1052, + Painbox.Constructor(Vector3(4233.235f, 3975.803f, 55.02734f), painbox_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 1053, + Painbox.Constructor(Vector3(4244.889f, 3984.086f, 53.62824f), painbox_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 1054, + Painbox.Constructor(Vector3(4244.975f, 3972.223f, 53.62824f), painbox_radius_continuous), + owning_building_guid = 31 + ) } Building48() def Building48(): Unit = { // Name: nc_SE_Amerish_Warpgate_Tower Type: tower_a GUID: 32, MapID: 48 - LocalBuilding("nc_SE_Amerish_Warpgate_Tower", 32, 48, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4458f, 6256f, 43.92254f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1102, CaptureTerminal.Constructor(Vector3(4474.587f, 6255.897f, 53.92154f), secondary_capture), owning_building_guid = 32) + LocalBuilding( + "nc_SE_Amerish_Warpgate_Tower", + 32, + 48, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4458f, 6256f, 43.92254f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1102, + CaptureTerminal.Constructor(Vector3(4474.587f, 6255.897f, 53.92154f), secondary_capture), + owning_building_guid = 32 + ) LocalObject(352, Door.Constructor(Vector3(4470f, 6248f, 45.44354f)), owning_building_guid = 32) LocalObject(353, Door.Constructor(Vector3(4470f, 6248f, 65.44254f)), owning_building_guid = 32) LocalObject(354, Door.Constructor(Vector3(4470f, 6264f, 45.44354f)), owning_building_guid = 32) LocalObject(355, Door.Constructor(Vector3(4470f, 6264f, 65.44254f)), owning_building_guid = 32) LocalObject(1124, Door.Constructor(Vector3(4469.146f, 6244.794f, 35.25854f)), owning_building_guid = 32) LocalObject(1125, Door.Constructor(Vector3(4469.146f, 6261.204f, 35.25854f)), owning_building_guid = 32) - LocalObject(590, IFFLock.Constructor(Vector3(4467.957f, 6264.811f, 45.38354f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 354) - LocalObject(591, IFFLock.Constructor(Vector3(4467.957f, 6264.811f, 65.38354f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 355) - LocalObject(592, IFFLock.Constructor(Vector3(4472.047f, 6247.189f, 45.38354f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 352) - LocalObject(593, IFFLock.Constructor(Vector3(4472.047f, 6247.189f, 65.38354f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 353) + LocalObject( + 590, + IFFLock.Constructor(Vector3(4467.957f, 6264.811f, 45.38354f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 354 + ) + LocalObject( + 591, + IFFLock.Constructor(Vector3(4467.957f, 6264.811f, 65.38354f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 355 + ) + LocalObject( + 592, + IFFLock.Constructor(Vector3(4472.047f, 6247.189f, 45.38354f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 352 + ) + LocalObject( + 593, + IFFLock.Constructor(Vector3(4472.047f, 6247.189f, 65.38354f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 353 + ) LocalObject(680, Locker.Constructor(Vector3(4473.716f, 6240.963f, 33.91654f)), owning_building_guid = 32) LocalObject(681, Locker.Constructor(Vector3(4473.751f, 6262.835f, 33.91654f)), owning_building_guid = 32) LocalObject(682, Locker.Constructor(Vector3(4475.053f, 6240.963f, 33.91654f)), owning_building_guid = 32) @@ -507,35 +1626,106 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(685, Locker.Constructor(Vector3(4477.741f, 6262.835f, 33.91654f)), owning_building_guid = 32) LocalObject(686, Locker.Constructor(Vector3(4479.143f, 6240.963f, 33.91654f)), owning_building_guid = 32) LocalObject(687, Locker.Constructor(Vector3(4479.143f, 6262.835f, 33.91654f)), owning_building_guid = 32) - LocalObject(946, Terminal.Constructor(Vector3(4479.445f, 6246.129f, 35.25454f), order_terminal), owning_building_guid = 32) - LocalObject(947, Terminal.Constructor(Vector3(4479.445f, 6251.853f, 35.25454f), order_terminal), owning_building_guid = 32) - LocalObject(948, Terminal.Constructor(Vector3(4479.445f, 6257.234f, 35.25454f), order_terminal), owning_building_guid = 32) - LocalObject(1085, SpawnTube.Constructor(Vector3(4468.706f, 6243.742f, 33.40454f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(1086, SpawnTube.Constructor(Vector3(4468.706f, 6260.152f, 33.40454f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(726, FacilityTurret.Constructor(Vector3(4445.32f, 6243.295f, 62.86454f), manned_turret), owning_building_guid = 32) + LocalObject( + 946, + Terminal.Constructor(Vector3(4479.445f, 6246.129f, 35.25454f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 947, + Terminal.Constructor(Vector3(4479.445f, 6251.853f, 35.25454f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 948, + Terminal.Constructor(Vector3(4479.445f, 6257.234f, 35.25454f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1085, + SpawnTube.Constructor(Vector3(4468.706f, 6243.742f, 33.40454f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 1086, + SpawnTube.Constructor(Vector3(4468.706f, 6260.152f, 33.40454f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 726, + FacilityTurret.Constructor(Vector3(4445.32f, 6243.295f, 62.86454f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(726, 5008) - LocalObject(727, FacilityTurret.Constructor(Vector3(4480.647f, 6268.707f, 62.86454f), manned_turret), owning_building_guid = 32) + LocalObject( + 727, + FacilityTurret.Constructor(Vector3(4480.647f, 6268.707f, 62.86454f), manned_turret), + owning_building_guid = 32 + ) TurretToWeapon(727, 5009) - LocalObject(1055, Painbox.Constructor(Vector3(4463.235f, 6249.803f, 35.42164f), painbox_radius_continuous), owning_building_guid = 32) - LocalObject(1056, Painbox.Constructor(Vector3(4474.889f, 6258.086f, 34.02254f), painbox_radius_continuous), owning_building_guid = 32) - LocalObject(1057, Painbox.Constructor(Vector3(4474.975f, 6246.223f, 34.02254f), painbox_radius_continuous), owning_building_guid = 32) + LocalObject( + 1055, + Painbox.Constructor(Vector3(4463.235f, 6249.803f, 35.42164f), painbox_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1056, + Painbox.Constructor(Vector3(4474.889f, 6258.086f, 34.02254f), painbox_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 1057, + Painbox.Constructor(Vector3(4474.975f, 6246.223f, 34.02254f), painbox_radius_continuous), + owning_building_guid = 32 + ) } Building46() def Building46(): Unit = { // Name: nc_W_Esamir_Warpgate_Tower Type: tower_a GUID: 33, MapID: 46 - LocalBuilding("nc_W_Esamir_Warpgate_Tower", 33, 46, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4886f, 3164f, 48.7764f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1103, CaptureTerminal.Constructor(Vector3(4902.587f, 3163.897f, 58.7754f), secondary_capture), owning_building_guid = 33) + LocalBuilding( + "nc_W_Esamir_Warpgate_Tower", + 33, + 46, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4886f, 3164f, 48.7764f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1103, + CaptureTerminal.Constructor(Vector3(4902.587f, 3163.897f, 58.7754f), secondary_capture), + owning_building_guid = 33 + ) LocalObject(356, Door.Constructor(Vector3(4898f, 3156f, 50.2974f)), owning_building_guid = 33) LocalObject(357, Door.Constructor(Vector3(4898f, 3156f, 70.2964f)), owning_building_guid = 33) LocalObject(358, Door.Constructor(Vector3(4898f, 3172f, 50.2974f)), owning_building_guid = 33) LocalObject(359, Door.Constructor(Vector3(4898f, 3172f, 70.2964f)), owning_building_guid = 33) LocalObject(1126, Door.Constructor(Vector3(4897.146f, 3152.794f, 40.1124f)), owning_building_guid = 33) LocalObject(1127, Door.Constructor(Vector3(4897.146f, 3169.204f, 40.1124f)), owning_building_guid = 33) - LocalObject(594, IFFLock.Constructor(Vector3(4895.957f, 3172.811f, 50.2374f), Vector3(0, 0, 0)), owning_building_guid = 33, door_guid = 358) - LocalObject(595, IFFLock.Constructor(Vector3(4895.957f, 3172.811f, 70.2374f), Vector3(0, 0, 0)), owning_building_guid = 33, door_guid = 359) - LocalObject(596, IFFLock.Constructor(Vector3(4900.047f, 3155.189f, 50.2374f), Vector3(0, 0, 180)), owning_building_guid = 33, door_guid = 356) - LocalObject(597, IFFLock.Constructor(Vector3(4900.047f, 3155.189f, 70.2374f), Vector3(0, 0, 180)), owning_building_guid = 33, door_guid = 357) + LocalObject( + 594, + IFFLock.Constructor(Vector3(4895.957f, 3172.811f, 50.2374f), Vector3(0, 0, 0)), + owning_building_guid = 33, + door_guid = 358 + ) + LocalObject( + 595, + IFFLock.Constructor(Vector3(4895.957f, 3172.811f, 70.2374f), Vector3(0, 0, 0)), + owning_building_guid = 33, + door_guid = 359 + ) + LocalObject( + 596, + IFFLock.Constructor(Vector3(4900.047f, 3155.189f, 50.2374f), Vector3(0, 0, 180)), + owning_building_guid = 33, + door_guid = 356 + ) + LocalObject( + 597, + IFFLock.Constructor(Vector3(4900.047f, 3155.189f, 70.2374f), Vector3(0, 0, 180)), + owning_building_guid = 33, + door_guid = 357 + ) LocalObject(688, Locker.Constructor(Vector3(4901.716f, 3148.963f, 38.7704f)), owning_building_guid = 33) LocalObject(689, Locker.Constructor(Vector3(4901.751f, 3170.835f, 38.7704f)), owning_building_guid = 33) LocalObject(690, Locker.Constructor(Vector3(4903.053f, 3148.963f, 38.7704f)), owning_building_guid = 33) @@ -544,25 +1734,76 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(693, Locker.Constructor(Vector3(4905.741f, 3170.835f, 38.7704f)), owning_building_guid = 33) LocalObject(694, Locker.Constructor(Vector3(4907.143f, 3148.963f, 38.7704f)), owning_building_guid = 33) LocalObject(695, Locker.Constructor(Vector3(4907.143f, 3170.835f, 38.7704f)), owning_building_guid = 33) - LocalObject(981, Terminal.Constructor(Vector3(4907.445f, 3154.129f, 40.1084f), order_terminal), owning_building_guid = 33) - LocalObject(982, Terminal.Constructor(Vector3(4907.445f, 3159.853f, 40.1084f), order_terminal), owning_building_guid = 33) - LocalObject(983, Terminal.Constructor(Vector3(4907.445f, 3165.234f, 40.1084f), order_terminal), owning_building_guid = 33) - LocalObject(1087, SpawnTube.Constructor(Vector3(4896.706f, 3151.742f, 38.2584f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 33) - LocalObject(1088, SpawnTube.Constructor(Vector3(4896.706f, 3168.152f, 38.2584f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 33) - LocalObject(728, FacilityTurret.Constructor(Vector3(4873.32f, 3151.295f, 67.7184f), manned_turret), owning_building_guid = 33) + LocalObject( + 981, + Terminal.Constructor(Vector3(4907.445f, 3154.129f, 40.1084f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 982, + Terminal.Constructor(Vector3(4907.445f, 3159.853f, 40.1084f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 983, + Terminal.Constructor(Vector3(4907.445f, 3165.234f, 40.1084f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1087, + SpawnTube.Constructor(Vector3(4896.706f, 3151.742f, 38.2584f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 33 + ) + LocalObject( + 1088, + SpawnTube.Constructor(Vector3(4896.706f, 3168.152f, 38.2584f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 33 + ) + LocalObject( + 728, + FacilityTurret.Constructor(Vector3(4873.32f, 3151.295f, 67.7184f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(728, 5010) - LocalObject(729, FacilityTurret.Constructor(Vector3(4908.647f, 3176.707f, 67.7184f), manned_turret), owning_building_guid = 33) + LocalObject( + 729, + FacilityTurret.Constructor(Vector3(4908.647f, 3176.707f, 67.7184f), manned_turret), + owning_building_guid = 33 + ) TurretToWeapon(729, 5011) - LocalObject(1058, Painbox.Constructor(Vector3(4891.235f, 3157.803f, 40.2755f), painbox_radius_continuous), owning_building_guid = 33) - LocalObject(1059, Painbox.Constructor(Vector3(4902.889f, 3166.086f, 38.8764f), painbox_radius_continuous), owning_building_guid = 33) - LocalObject(1060, Painbox.Constructor(Vector3(4902.975f, 3154.223f, 38.8764f), painbox_radius_continuous), owning_building_guid = 33) + LocalObject( + 1058, + Painbox.Constructor(Vector3(4891.235f, 3157.803f, 40.2755f), painbox_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 1059, + Painbox.Constructor(Vector3(4902.889f, 3166.086f, 38.8764f), painbox_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 1060, + Painbox.Constructor(Vector3(4902.975f, 3154.223f, 38.8764f), painbox_radius_continuous), + owning_building_guid = 33 + ) } Building49() def Building49(): Unit = { // Name: nc_SE_Cyssor_Warpgate_Tower Type: tower_b GUID: 34, MapID: 49 - LocalBuilding("nc_SE_Cyssor_Warpgate_Tower", 34, 49, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2506f, 5776f, 63.62667f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1095, CaptureTerminal.Constructor(Vector3(2522.587f, 5775.897f, 83.62567f), secondary_capture), owning_building_guid = 34) + LocalBuilding( + "nc_SE_Cyssor_Warpgate_Tower", + 34, + 49, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2506f, 5776f, 63.62667f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1095, + CaptureTerminal.Constructor(Vector3(2522.587f, 5775.897f, 83.62567f), secondary_capture), + owning_building_guid = 34 + ) LocalObject(320, Door.Constructor(Vector3(2518f, 5768f, 65.14667f)), owning_building_guid = 34) LocalObject(321, Door.Constructor(Vector3(2518f, 5768f, 75.14667f)), owning_building_guid = 34) LocalObject(322, Door.Constructor(Vector3(2518f, 5768f, 95.14667f)), owning_building_guid = 34) @@ -571,12 +1812,42 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(325, Door.Constructor(Vector3(2518f, 5784f, 95.14667f)), owning_building_guid = 34) LocalObject(1110, Door.Constructor(Vector3(2517.147f, 5764.794f, 54.96267f)), owning_building_guid = 34) LocalObject(1111, Door.Constructor(Vector3(2517.147f, 5781.204f, 54.96267f)), owning_building_guid = 34) - LocalObject(558, IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 65.08767f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 323) - LocalObject(559, IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 75.08767f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 324) - LocalObject(560, IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 95.08767f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 325) - LocalObject(561, IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 65.08767f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 320) - LocalObject(562, IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 75.08767f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 321) - LocalObject(563, IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 95.08767f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 322) + LocalObject( + 558, + IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 65.08767f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 323 + ) + LocalObject( + 559, + IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 75.08767f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 324 + ) + LocalObject( + 560, + IFFLock.Constructor(Vector3(2515.957f, 5784.811f, 95.08767f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 325 + ) + LocalObject( + 561, + IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 65.08767f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 320 + ) + LocalObject( + 562, + IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 75.08767f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 321 + ) + LocalObject( + 563, + IFFLock.Constructor(Vector3(2520.047f, 5767.189f, 95.08767f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 322 + ) LocalObject(624, Locker.Constructor(Vector3(2521.716f, 5760.963f, 53.62067f)), owning_building_guid = 34) LocalObject(625, Locker.Constructor(Vector3(2521.751f, 5782.835f, 53.62067f)), owning_building_guid = 34) LocalObject(626, Locker.Constructor(Vector3(2523.053f, 5760.963f, 53.62067f)), owning_building_guid = 34) @@ -585,21 +1856,64 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(629, Locker.Constructor(Vector3(2525.741f, 5782.835f, 53.62067f)), owning_building_guid = 34) LocalObject(630, Locker.Constructor(Vector3(2527.143f, 5760.963f, 53.62067f)), owning_building_guid = 34) LocalObject(631, Locker.Constructor(Vector3(2527.143f, 5782.835f, 53.62067f)), owning_building_guid = 34) - LocalObject(887, Terminal.Constructor(Vector3(2527.446f, 5766.129f, 54.95867f), order_terminal), owning_building_guid = 34) - LocalObject(888, Terminal.Constructor(Vector3(2527.446f, 5771.853f, 54.95867f), order_terminal), owning_building_guid = 34) - LocalObject(889, Terminal.Constructor(Vector3(2527.446f, 5777.234f, 54.95867f), order_terminal), owning_building_guid = 34) - LocalObject(1071, SpawnTube.Constructor(Vector3(2516.706f, 5763.742f, 53.10867f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1072, SpawnTube.Constructor(Vector3(2516.706f, 5780.152f, 53.10867f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1034, Painbox.Constructor(Vector3(2511.493f, 5768.849f, 54.91607f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(1035, Painbox.Constructor(Vector3(2523.127f, 5766.078f, 53.72667f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(1036, Painbox.Constructor(Vector3(2523.259f, 5778.107f, 53.72667f), painbox_radius_continuous), owning_building_guid = 34) + LocalObject( + 887, + Terminal.Constructor(Vector3(2527.446f, 5766.129f, 54.95867f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 888, + Terminal.Constructor(Vector3(2527.446f, 5771.853f, 54.95867f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 889, + Terminal.Constructor(Vector3(2527.446f, 5777.234f, 54.95867f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 1071, + SpawnTube.Constructor(Vector3(2516.706f, 5763.742f, 53.10867f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1072, + SpawnTube.Constructor(Vector3(2516.706f, 5780.152f, 53.10867f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1034, + Painbox.Constructor(Vector3(2511.493f, 5768.849f, 54.91607f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 1035, + Painbox.Constructor(Vector3(2523.127f, 5766.078f, 53.72667f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 1036, + Painbox.Constructor(Vector3(2523.259f, 5778.107f, 53.72667f), painbox_radius_continuous), + owning_building_guid = 34 + ) } Building47() def Building47(): Unit = { // Name: nc_SW_Amerish_Warpgate_Tower Type: tower_b GUID: 35, MapID: 47 - LocalBuilding("nc_SW_Amerish_Warpgate_Tower", 35, 47, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3844f, 5888f, 44.39456f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1098, CaptureTerminal.Constructor(Vector3(3860.587f, 5887.897f, 64.39356f), secondary_capture), owning_building_guid = 35) + LocalBuilding( + "nc_SW_Amerish_Warpgate_Tower", + 35, + 47, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3844f, 5888f, 44.39456f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1098, + CaptureTerminal.Constructor(Vector3(3860.587f, 5887.897f, 64.39356f), secondary_capture), + owning_building_guid = 35 + ) LocalObject(334, Door.Constructor(Vector3(3856f, 5880f, 45.91456f)), owning_building_guid = 35) LocalObject(335, Door.Constructor(Vector3(3856f, 5880f, 55.91456f)), owning_building_guid = 35) LocalObject(336, Door.Constructor(Vector3(3856f, 5880f, 75.91457f)), owning_building_guid = 35) @@ -608,12 +1922,42 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(339, Door.Constructor(Vector3(3856f, 5896f, 75.91457f)), owning_building_guid = 35) LocalObject(1116, Door.Constructor(Vector3(3855.147f, 5876.794f, 35.73056f)), owning_building_guid = 35) LocalObject(1117, Door.Constructor(Vector3(3855.147f, 5893.204f, 35.73056f)), owning_building_guid = 35) - LocalObject(572, IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 45.85556f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 337) - LocalObject(573, IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 55.85556f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 338) - LocalObject(574, IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 75.85556f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 339) - LocalObject(575, IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 45.85556f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 334) - LocalObject(576, IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 55.85556f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 335) - LocalObject(577, IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 75.85556f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 336) + LocalObject( + 572, + IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 45.85556f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 337 + ) + LocalObject( + 573, + IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 55.85556f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 338 + ) + LocalObject( + 574, + IFFLock.Constructor(Vector3(3853.957f, 5896.811f, 75.85556f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 339 + ) + LocalObject( + 575, + IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 45.85556f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 334 + ) + LocalObject( + 576, + IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 55.85556f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 335 + ) + LocalObject( + 577, + IFFLock.Constructor(Vector3(3858.047f, 5879.189f, 75.85556f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 336 + ) LocalObject(648, Locker.Constructor(Vector3(3859.716f, 5872.963f, 34.38856f)), owning_building_guid = 35) LocalObject(649, Locker.Constructor(Vector3(3859.751f, 5894.835f, 34.38856f)), owning_building_guid = 35) LocalObject(650, Locker.Constructor(Vector3(3861.053f, 5872.963f, 34.38856f)), owning_building_guid = 35) @@ -622,21 +1966,64 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(653, Locker.Constructor(Vector3(3863.741f, 5894.835f, 34.38856f)), owning_building_guid = 35) LocalObject(654, Locker.Constructor(Vector3(3865.143f, 5872.963f, 34.38856f)), owning_building_guid = 35) LocalObject(655, Locker.Constructor(Vector3(3865.143f, 5894.835f, 34.38856f)), owning_building_guid = 35) - LocalObject(896, Terminal.Constructor(Vector3(3865.446f, 5878.129f, 35.72656f), order_terminal), owning_building_guid = 35) - LocalObject(897, Terminal.Constructor(Vector3(3865.446f, 5883.853f, 35.72656f), order_terminal), owning_building_guid = 35) - LocalObject(898, Terminal.Constructor(Vector3(3865.446f, 5889.234f, 35.72656f), order_terminal), owning_building_guid = 35) - LocalObject(1077, SpawnTube.Constructor(Vector3(3854.706f, 5875.742f, 33.87656f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 35) - LocalObject(1078, SpawnTube.Constructor(Vector3(3854.706f, 5892.152f, 33.87656f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 35) - LocalObject(1043, Painbox.Constructor(Vector3(3849.493f, 5880.849f, 35.68396f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(1044, Painbox.Constructor(Vector3(3861.127f, 5878.078f, 34.49456f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(1045, Painbox.Constructor(Vector3(3861.259f, 5890.107f, 34.49456f), painbox_radius_continuous), owning_building_guid = 35) + LocalObject( + 896, + Terminal.Constructor(Vector3(3865.446f, 5878.129f, 35.72656f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 897, + Terminal.Constructor(Vector3(3865.446f, 5883.853f, 35.72656f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 898, + Terminal.Constructor(Vector3(3865.446f, 5889.234f, 35.72656f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1077, + SpawnTube.Constructor(Vector3(3854.706f, 5875.742f, 33.87656f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 35 + ) + LocalObject( + 1078, + SpawnTube.Constructor(Vector3(3854.706f, 5892.152f, 33.87656f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 35 + ) + LocalObject( + 1043, + Painbox.Constructor(Vector3(3849.493f, 5880.849f, 35.68396f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1044, + Painbox.Constructor(Vector3(3861.127f, 5878.078f, 34.49456f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 1045, + Painbox.Constructor(Vector3(3861.259f, 5890.107f, 34.49456f), painbox_radius_continuous), + owning_building_guid = 35 + ) } Building45() def Building45(): Unit = { // Name: nc_N_Esamir_Warpgate_Tower Type: tower_b GUID: 36, MapID: 45 - LocalBuilding("nc_N_Esamir_Warpgate_Tower", 36, 45, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5020f, 3810f, 65.63448f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1104, CaptureTerminal.Constructor(Vector3(5036.587f, 3809.897f, 85.63348f), secondary_capture), owning_building_guid = 36) + LocalBuilding( + "nc_N_Esamir_Warpgate_Tower", + 36, + 45, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5020f, 3810f, 65.63448f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1104, + CaptureTerminal.Constructor(Vector3(5036.587f, 3809.897f, 85.63348f), secondary_capture), + owning_building_guid = 36 + ) LocalObject(360, Door.Constructor(Vector3(5032f, 3802f, 67.15448f)), owning_building_guid = 36) LocalObject(361, Door.Constructor(Vector3(5032f, 3802f, 77.15448f)), owning_building_guid = 36) LocalObject(362, Door.Constructor(Vector3(5032f, 3802f, 97.15448f)), owning_building_guid = 36) @@ -645,12 +2032,42 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(365, Door.Constructor(Vector3(5032f, 3818f, 97.15448f)), owning_building_guid = 36) LocalObject(1128, Door.Constructor(Vector3(5031.147f, 3798.794f, 56.97048f)), owning_building_guid = 36) LocalObject(1129, Door.Constructor(Vector3(5031.147f, 3815.204f, 56.97048f)), owning_building_guid = 36) - LocalObject(598, IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 67.09548f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 363) - LocalObject(599, IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 77.09548f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 364) - LocalObject(600, IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 97.09548f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 365) - LocalObject(601, IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 67.09548f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 360) - LocalObject(602, IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 77.09548f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 361) - LocalObject(603, IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 97.09548f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 362) + LocalObject( + 598, + IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 67.09548f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 363 + ) + LocalObject( + 599, + IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 77.09548f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 364 + ) + LocalObject( + 600, + IFFLock.Constructor(Vector3(5029.957f, 3818.811f, 97.09548f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 365 + ) + LocalObject( + 601, + IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 67.09548f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 360 + ) + LocalObject( + 602, + IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 77.09548f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 361 + ) + LocalObject( + 603, + IFFLock.Constructor(Vector3(5034.047f, 3801.189f, 97.09548f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 362 + ) LocalObject(696, Locker.Constructor(Vector3(5035.716f, 3794.963f, 55.62848f)), owning_building_guid = 36) LocalObject(697, Locker.Constructor(Vector3(5035.751f, 3816.835f, 55.62848f)), owning_building_guid = 36) LocalObject(698, Locker.Constructor(Vector3(5037.053f, 3794.963f, 55.62848f)), owning_building_guid = 36) @@ -659,31 +2076,94 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(701, Locker.Constructor(Vector3(5039.741f, 3816.835f, 55.62848f)), owning_building_guid = 36) LocalObject(702, Locker.Constructor(Vector3(5041.143f, 3794.963f, 55.62848f)), owning_building_guid = 36) LocalObject(703, Locker.Constructor(Vector3(5041.143f, 3816.835f, 55.62848f)), owning_building_guid = 36) - LocalObject(990, Terminal.Constructor(Vector3(5041.446f, 3800.129f, 56.96648f), order_terminal), owning_building_guid = 36) - LocalObject(991, Terminal.Constructor(Vector3(5041.446f, 3805.853f, 56.96648f), order_terminal), owning_building_guid = 36) - LocalObject(992, Terminal.Constructor(Vector3(5041.446f, 3811.234f, 56.96648f), order_terminal), owning_building_guid = 36) - LocalObject(1089, SpawnTube.Constructor(Vector3(5030.706f, 3797.742f, 55.11649f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(1090, SpawnTube.Constructor(Vector3(5030.706f, 3814.152f, 55.11649f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(1061, Painbox.Constructor(Vector3(5025.493f, 3802.849f, 56.92388f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(1062, Painbox.Constructor(Vector3(5037.127f, 3800.078f, 55.73448f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(1063, Painbox.Constructor(Vector3(5037.259f, 3812.107f, 55.73448f), painbox_radius_continuous), owning_building_guid = 36) + LocalObject( + 990, + Terminal.Constructor(Vector3(5041.446f, 3800.129f, 56.96648f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 991, + Terminal.Constructor(Vector3(5041.446f, 3805.853f, 56.96648f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 992, + Terminal.Constructor(Vector3(5041.446f, 3811.234f, 56.96648f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1089, + SpawnTube.Constructor(Vector3(5030.706f, 3797.742f, 55.11649f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 1090, + SpawnTube.Constructor(Vector3(5030.706f, 3814.152f, 55.11649f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 1061, + Painbox.Constructor(Vector3(5025.493f, 3802.849f, 56.92388f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 1062, + Painbox.Constructor(Vector3(5037.127f, 3800.078f, 55.73448f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 1063, + Painbox.Constructor(Vector3(5037.259f, 3812.107f, 55.73448f), painbox_radius_continuous), + owning_building_guid = 36 + ) } Building58() def Building58(): Unit = { // Name: nc_Cyssor_Outpost_Tower Type: tower_c GUID: 37, MapID: 58 - LocalBuilding("nc_Cyssor_Outpost_Tower", 37, 58, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1978f, 4802f, 62.46139f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1093, CaptureTerminal.Constructor(Vector3(1994.587f, 4801.897f, 72.46039f), secondary_capture), owning_building_guid = 37) + LocalBuilding( + "nc_Cyssor_Outpost_Tower", + 37, + 58, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1978f, 4802f, 62.46139f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1093, + CaptureTerminal.Constructor(Vector3(1994.587f, 4801.897f, 72.46039f), secondary_capture), + owning_building_guid = 37 + ) LocalObject(312, Door.Constructor(Vector3(1990f, 4794f, 63.98239f)), owning_building_guid = 37) LocalObject(313, Door.Constructor(Vector3(1990f, 4794f, 83.98139f)), owning_building_guid = 37) LocalObject(314, Door.Constructor(Vector3(1990f, 4810f, 63.98239f)), owning_building_guid = 37) LocalObject(315, Door.Constructor(Vector3(1990f, 4810f, 83.98139f)), owning_building_guid = 37) LocalObject(1106, Door.Constructor(Vector3(1989.146f, 4790.794f, 53.79739f)), owning_building_guid = 37) LocalObject(1107, Door.Constructor(Vector3(1989.146f, 4807.204f, 53.79739f)), owning_building_guid = 37) - LocalObject(550, IFFLock.Constructor(Vector3(1987.957f, 4810.811f, 63.92239f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 314) - LocalObject(551, IFFLock.Constructor(Vector3(1987.957f, 4810.811f, 83.92239f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 315) - LocalObject(554, IFFLock.Constructor(Vector3(1992.047f, 4793.189f, 63.92239f), Vector3(0, 0, 180)), owning_building_guid = 37, door_guid = 312) - LocalObject(555, IFFLock.Constructor(Vector3(1992.047f, 4793.189f, 83.92239f), Vector3(0, 0, 180)), owning_building_guid = 37, door_guid = 313) + LocalObject( + 550, + IFFLock.Constructor(Vector3(1987.957f, 4810.811f, 63.92239f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 314 + ) + LocalObject( + 551, + IFFLock.Constructor(Vector3(1987.957f, 4810.811f, 83.92239f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 315 + ) + LocalObject( + 554, + IFFLock.Constructor(Vector3(1992.047f, 4793.189f, 63.92239f), Vector3(0, 0, 180)), + owning_building_guid = 37, + door_guid = 312 + ) + LocalObject( + 555, + IFFLock.Constructor(Vector3(1992.047f, 4793.189f, 83.92239f), Vector3(0, 0, 180)), + owning_building_guid = 37, + door_guid = 313 + ) LocalObject(608, Locker.Constructor(Vector3(1993.716f, 4786.963f, 52.45539f)), owning_building_guid = 37) LocalObject(609, Locker.Constructor(Vector3(1993.751f, 4808.835f, 52.45539f)), owning_building_guid = 37) LocalObject(610, Locker.Constructor(Vector3(1995.053f, 4786.963f, 52.45539f)), owning_building_guid = 37) @@ -692,39 +2172,126 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(617, Locker.Constructor(Vector3(1997.741f, 4808.835f, 52.45539f)), owning_building_guid = 37) LocalObject(618, Locker.Constructor(Vector3(1999.143f, 4786.963f, 52.45539f)), owning_building_guid = 37) LocalObject(619, Locker.Constructor(Vector3(1999.143f, 4808.835f, 52.45539f)), owning_building_guid = 37) - LocalObject(843, Terminal.Constructor(Vector3(1999.445f, 4792.129f, 53.79339f), order_terminal), owning_building_guid = 37) - LocalObject(844, Terminal.Constructor(Vector3(1999.445f, 4797.853f, 53.79339f), order_terminal), owning_building_guid = 37) - LocalObject(845, Terminal.Constructor(Vector3(1999.445f, 4803.234f, 53.79339f), order_terminal), owning_building_guid = 37) - LocalObject(1067, SpawnTube.Constructor(Vector3(1988.706f, 4789.742f, 51.94339f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(1068, SpawnTube.Constructor(Vector3(1988.706f, 4806.152f, 51.94339f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(1004, ProximityTerminal.Constructor(Vector3(1976.907f, 4796.725f, 90.03139f), pad_landing_tower_frame), owning_building_guid = 37) - LocalObject(1005, Terminal.Constructor(Vector3(1976.907f, 4796.725f, 90.03139f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(1007, ProximityTerminal.Constructor(Vector3(1976.907f, 4807.17f, 90.03139f), pad_landing_tower_frame), owning_building_guid = 37) - LocalObject(1008, Terminal.Constructor(Vector3(1976.907f, 4807.17f, 90.03139f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(712, FacilityTurret.Constructor(Vector3(1963.07f, 4787.045f, 81.40339f), manned_turret), owning_building_guid = 37) + LocalObject( + 843, + Terminal.Constructor(Vector3(1999.445f, 4792.129f, 53.79339f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 844, + Terminal.Constructor(Vector3(1999.445f, 4797.853f, 53.79339f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(1999.445f, 4803.234f, 53.79339f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1067, + SpawnTube.Constructor(Vector3(1988.706f, 4789.742f, 51.94339f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 1068, + SpawnTube.Constructor(Vector3(1988.706f, 4806.152f, 51.94339f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 1004, + ProximityTerminal.Constructor(Vector3(1976.907f, 4796.725f, 90.03139f), pad_landing_tower_frame), + owning_building_guid = 37 + ) + LocalObject( + 1005, + Terminal.Constructor(Vector3(1976.907f, 4796.725f, 90.03139f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1007, + ProximityTerminal.Constructor(Vector3(1976.907f, 4807.17f, 90.03139f), pad_landing_tower_frame), + owning_building_guid = 37 + ) + LocalObject( + 1008, + Terminal.Constructor(Vector3(1976.907f, 4807.17f, 90.03139f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 712, + FacilityTurret.Constructor(Vector3(1963.07f, 4787.045f, 81.40339f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(712, 5012) - LocalObject(714, FacilityTurret.Constructor(Vector3(2001.497f, 4816.957f, 81.40339f), manned_turret), owning_building_guid = 37) + LocalObject( + 714, + FacilityTurret.Constructor(Vector3(2001.497f, 4816.957f, 81.40339f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(714, 5013) - LocalObject(1028, Painbox.Constructor(Vector3(1982.454f, 4794.849f, 54.48089f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(1030, Painbox.Constructor(Vector3(1994.923f, 4791.54f, 52.56139f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(1031, Painbox.Constructor(Vector3(1995.113f, 4804.022f, 52.56139f), painbox_radius_continuous), owning_building_guid = 37) + LocalObject( + 1028, + Painbox.Constructor(Vector3(1982.454f, 4794.849f, 54.48089f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 1030, + Painbox.Constructor(Vector3(1994.923f, 4791.54f, 52.56139f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 1031, + Painbox.Constructor(Vector3(1995.113f, 4804.022f, 52.56139f), painbox_radius_continuous), + owning_building_guid = 37 + ) } Building51() def Building51(): Unit = { // Name: nc_Central_Tower Type: tower_c GUID: 38, MapID: 51 - LocalBuilding("nc_Central_Tower", 38, 51, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3340f, 4668f, 61.79601f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1097, CaptureTerminal.Constructor(Vector3(3356.587f, 4667.897f, 71.79501f), secondary_capture), owning_building_guid = 38) + LocalBuilding( + "nc_Central_Tower", + 38, + 51, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3340f, 4668f, 61.79601f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1097, + CaptureTerminal.Constructor(Vector3(3356.587f, 4667.897f, 71.79501f), secondary_capture), + owning_building_guid = 38 + ) LocalObject(330, Door.Constructor(Vector3(3352f, 4660f, 63.31701f)), owning_building_guid = 38) LocalObject(331, Door.Constructor(Vector3(3352f, 4660f, 83.31601f)), owning_building_guid = 38) LocalObject(332, Door.Constructor(Vector3(3352f, 4676f, 63.31701f)), owning_building_guid = 38) LocalObject(333, Door.Constructor(Vector3(3352f, 4676f, 83.31601f)), owning_building_guid = 38) LocalObject(1114, Door.Constructor(Vector3(3351.146f, 4656.794f, 53.13201f)), owning_building_guid = 38) LocalObject(1115, Door.Constructor(Vector3(3351.146f, 4673.204f, 53.13201f)), owning_building_guid = 38) - LocalObject(568, IFFLock.Constructor(Vector3(3349.957f, 4676.811f, 63.25701f), Vector3(0, 0, 0)), owning_building_guid = 38, door_guid = 332) - LocalObject(569, IFFLock.Constructor(Vector3(3349.957f, 4676.811f, 83.25701f), Vector3(0, 0, 0)), owning_building_guid = 38, door_guid = 333) - LocalObject(570, IFFLock.Constructor(Vector3(3354.047f, 4659.189f, 63.25701f), Vector3(0, 0, 180)), owning_building_guid = 38, door_guid = 330) - LocalObject(571, IFFLock.Constructor(Vector3(3354.047f, 4659.189f, 83.25701f), Vector3(0, 0, 180)), owning_building_guid = 38, door_guid = 331) + LocalObject( + 568, + IFFLock.Constructor(Vector3(3349.957f, 4676.811f, 63.25701f), Vector3(0, 0, 0)), + owning_building_guid = 38, + door_guid = 332 + ) + LocalObject( + 569, + IFFLock.Constructor(Vector3(3349.957f, 4676.811f, 83.25701f), Vector3(0, 0, 0)), + owning_building_guid = 38, + door_guid = 333 + ) + LocalObject( + 570, + IFFLock.Constructor(Vector3(3354.047f, 4659.189f, 63.25701f), Vector3(0, 0, 180)), + owning_building_guid = 38, + door_guid = 330 + ) + LocalObject( + 571, + IFFLock.Constructor(Vector3(3354.047f, 4659.189f, 83.25701f), Vector3(0, 0, 180)), + owning_building_guid = 38, + door_guid = 331 + ) LocalObject(640, Locker.Constructor(Vector3(3355.716f, 4652.963f, 51.79001f)), owning_building_guid = 38) LocalObject(641, Locker.Constructor(Vector3(3355.751f, 4674.835f, 51.79001f)), owning_building_guid = 38) LocalObject(642, Locker.Constructor(Vector3(3357.053f, 4652.963f, 51.79001f)), owning_building_guid = 38) @@ -733,39 +2300,126 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(645, Locker.Constructor(Vector3(3359.741f, 4674.835f, 51.79001f)), owning_building_guid = 38) LocalObject(646, Locker.Constructor(Vector3(3361.143f, 4652.963f, 51.79001f)), owning_building_guid = 38) LocalObject(647, Locker.Constructor(Vector3(3361.143f, 4674.835f, 51.79001f)), owning_building_guid = 38) - LocalObject(893, Terminal.Constructor(Vector3(3361.445f, 4658.129f, 53.12801f), order_terminal), owning_building_guid = 38) - LocalObject(894, Terminal.Constructor(Vector3(3361.445f, 4663.853f, 53.12801f), order_terminal), owning_building_guid = 38) - LocalObject(895, Terminal.Constructor(Vector3(3361.445f, 4669.234f, 53.12801f), order_terminal), owning_building_guid = 38) - LocalObject(1075, SpawnTube.Constructor(Vector3(3350.706f, 4655.742f, 51.27802f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 38) - LocalObject(1076, SpawnTube.Constructor(Vector3(3350.706f, 4672.152f, 51.27802f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 38) - LocalObject(1010, ProximityTerminal.Constructor(Vector3(3338.907f, 4662.725f, 89.36601f), pad_landing_tower_frame), owning_building_guid = 38) - LocalObject(1011, Terminal.Constructor(Vector3(3338.907f, 4662.725f, 89.36601f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(1013, ProximityTerminal.Constructor(Vector3(3338.907f, 4673.17f, 89.36601f), pad_landing_tower_frame), owning_building_guid = 38) - LocalObject(1014, Terminal.Constructor(Vector3(3338.907f, 4673.17f, 89.36601f), air_rearm_terminal), owning_building_guid = 38) - LocalObject(718, FacilityTurret.Constructor(Vector3(3325.07f, 4653.045f, 80.73801f), manned_turret), owning_building_guid = 38) + LocalObject( + 893, + Terminal.Constructor(Vector3(3361.445f, 4658.129f, 53.12801f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 894, + Terminal.Constructor(Vector3(3361.445f, 4663.853f, 53.12801f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 895, + Terminal.Constructor(Vector3(3361.445f, 4669.234f, 53.12801f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1075, + SpawnTube.Constructor(Vector3(3350.706f, 4655.742f, 51.27802f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 38 + ) + LocalObject( + 1076, + SpawnTube.Constructor(Vector3(3350.706f, 4672.152f, 51.27802f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 38 + ) + LocalObject( + 1010, + ProximityTerminal.Constructor(Vector3(3338.907f, 4662.725f, 89.36601f), pad_landing_tower_frame), + owning_building_guid = 38 + ) + LocalObject( + 1011, + Terminal.Constructor(Vector3(3338.907f, 4662.725f, 89.36601f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 1013, + ProximityTerminal.Constructor(Vector3(3338.907f, 4673.17f, 89.36601f), pad_landing_tower_frame), + owning_building_guid = 38 + ) + LocalObject( + 1014, + Terminal.Constructor(Vector3(3338.907f, 4673.17f, 89.36601f), air_rearm_terminal), + owning_building_guid = 38 + ) + LocalObject( + 718, + FacilityTurret.Constructor(Vector3(3325.07f, 4653.045f, 80.73801f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(718, 5014) - LocalObject(719, FacilityTurret.Constructor(Vector3(3363.497f, 4682.957f, 80.73801f), manned_turret), owning_building_guid = 38) + LocalObject( + 719, + FacilityTurret.Constructor(Vector3(3363.497f, 4682.957f, 80.73801f), manned_turret), + owning_building_guid = 38 + ) TurretToWeapon(719, 5015) - LocalObject(1040, Painbox.Constructor(Vector3(3344.454f, 4660.849f, 53.81551f), painbox_radius_continuous), owning_building_guid = 38) - LocalObject(1041, Painbox.Constructor(Vector3(3356.923f, 4657.54f, 51.89601f), painbox_radius_continuous), owning_building_guid = 38) - LocalObject(1042, Painbox.Constructor(Vector3(3357.113f, 4670.022f, 51.89601f), painbox_radius_continuous), owning_building_guid = 38) + LocalObject( + 1040, + Painbox.Constructor(Vector3(3344.454f, 4660.849f, 53.81551f), painbox_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 1041, + Painbox.Constructor(Vector3(3356.923f, 4657.54f, 51.89601f), painbox_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 1042, + Painbox.Constructor(Vector3(3357.113f, 4670.022f, 51.89601f), painbox_radius_continuous), + owning_building_guid = 38 + ) } Building56() def Building56(): Unit = { // Name: nc_Esamir_Outpost_Tower Type: tower_c GUID: 39, MapID: 56 - LocalBuilding("nc_Esamir_Outpost_Tower", 39, 56, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4140f, 2924f, 39.29424f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1099, CaptureTerminal.Constructor(Vector3(4156.587f, 2923.897f, 49.29324f), secondary_capture), owning_building_guid = 39) + LocalBuilding( + "nc_Esamir_Outpost_Tower", + 39, + 56, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4140f, 2924f, 39.29424f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1099, + CaptureTerminal.Constructor(Vector3(4156.587f, 2923.897f, 49.29324f), secondary_capture), + owning_building_guid = 39 + ) LocalObject(340, Door.Constructor(Vector3(4152f, 2916f, 40.81524f)), owning_building_guid = 39) LocalObject(341, Door.Constructor(Vector3(4152f, 2916f, 60.81424f)), owning_building_guid = 39) LocalObject(342, Door.Constructor(Vector3(4152f, 2932f, 40.81524f)), owning_building_guid = 39) LocalObject(343, Door.Constructor(Vector3(4152f, 2932f, 60.81424f)), owning_building_guid = 39) LocalObject(1118, Door.Constructor(Vector3(4151.146f, 2912.794f, 30.63024f)), owning_building_guid = 39) LocalObject(1119, Door.Constructor(Vector3(4151.146f, 2929.204f, 30.63024f)), owning_building_guid = 39) - LocalObject(578, IFFLock.Constructor(Vector3(4149.957f, 2932.811f, 40.75524f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 342) - LocalObject(579, IFFLock.Constructor(Vector3(4149.957f, 2932.811f, 60.75524f), Vector3(0, 0, 0)), owning_building_guid = 39, door_guid = 343) - LocalObject(580, IFFLock.Constructor(Vector3(4154.047f, 2915.189f, 40.75524f), Vector3(0, 0, 180)), owning_building_guid = 39, door_guid = 340) - LocalObject(581, IFFLock.Constructor(Vector3(4154.047f, 2915.189f, 60.75524f), Vector3(0, 0, 180)), owning_building_guid = 39, door_guid = 341) + LocalObject( + 578, + IFFLock.Constructor(Vector3(4149.957f, 2932.811f, 40.75524f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 342 + ) + LocalObject( + 579, + IFFLock.Constructor(Vector3(4149.957f, 2932.811f, 60.75524f), Vector3(0, 0, 0)), + owning_building_guid = 39, + door_guid = 343 + ) + LocalObject( + 580, + IFFLock.Constructor(Vector3(4154.047f, 2915.189f, 40.75524f), Vector3(0, 0, 180)), + owning_building_guid = 39, + door_guid = 340 + ) + LocalObject( + 581, + IFFLock.Constructor(Vector3(4154.047f, 2915.189f, 60.75524f), Vector3(0, 0, 180)), + owning_building_guid = 39, + door_guid = 341 + ) LocalObject(656, Locker.Constructor(Vector3(4155.716f, 2908.963f, 29.28824f)), owning_building_guid = 39) LocalObject(657, Locker.Constructor(Vector3(4155.751f, 2930.835f, 29.28824f)), owning_building_guid = 39) LocalObject(658, Locker.Constructor(Vector3(4157.053f, 2908.963f, 29.28824f)), owning_building_guid = 39) @@ -774,39 +2428,126 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(661, Locker.Constructor(Vector3(4159.741f, 2930.835f, 29.28824f)), owning_building_guid = 39) LocalObject(662, Locker.Constructor(Vector3(4161.143f, 2908.963f, 29.28824f)), owning_building_guid = 39) LocalObject(663, Locker.Constructor(Vector3(4161.143f, 2930.835f, 29.28824f)), owning_building_guid = 39) - LocalObject(922, Terminal.Constructor(Vector3(4161.445f, 2914.129f, 30.62624f), order_terminal), owning_building_guid = 39) - LocalObject(923, Terminal.Constructor(Vector3(4161.445f, 2919.853f, 30.62624f), order_terminal), owning_building_guid = 39) - LocalObject(924, Terminal.Constructor(Vector3(4161.445f, 2925.234f, 30.62624f), order_terminal), owning_building_guid = 39) - LocalObject(1079, SpawnTube.Constructor(Vector3(4150.706f, 2911.742f, 28.77624f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 39) - LocalObject(1080, SpawnTube.Constructor(Vector3(4150.706f, 2928.152f, 28.77624f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 39) - LocalObject(1016, ProximityTerminal.Constructor(Vector3(4138.907f, 2918.725f, 66.86424f), pad_landing_tower_frame), owning_building_guid = 39) - LocalObject(1017, Terminal.Constructor(Vector3(4138.907f, 2918.725f, 66.86424f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(1019, ProximityTerminal.Constructor(Vector3(4138.907f, 2929.17f, 66.86424f), pad_landing_tower_frame), owning_building_guid = 39) - LocalObject(1020, Terminal.Constructor(Vector3(4138.907f, 2929.17f, 66.86424f), air_rearm_terminal), owning_building_guid = 39) - LocalObject(720, FacilityTurret.Constructor(Vector3(4125.07f, 2909.045f, 58.23624f), manned_turret), owning_building_guid = 39) + LocalObject( + 922, + Terminal.Constructor(Vector3(4161.445f, 2914.129f, 30.62624f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 923, + Terminal.Constructor(Vector3(4161.445f, 2919.853f, 30.62624f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 924, + Terminal.Constructor(Vector3(4161.445f, 2925.234f, 30.62624f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1079, + SpawnTube.Constructor(Vector3(4150.706f, 2911.742f, 28.77624f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 39 + ) + LocalObject( + 1080, + SpawnTube.Constructor(Vector3(4150.706f, 2928.152f, 28.77624f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 39 + ) + LocalObject( + 1016, + ProximityTerminal.Constructor(Vector3(4138.907f, 2918.725f, 66.86424f), pad_landing_tower_frame), + owning_building_guid = 39 + ) + LocalObject( + 1017, + Terminal.Constructor(Vector3(4138.907f, 2918.725f, 66.86424f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 1019, + ProximityTerminal.Constructor(Vector3(4138.907f, 2929.17f, 66.86424f), pad_landing_tower_frame), + owning_building_guid = 39 + ) + LocalObject( + 1020, + Terminal.Constructor(Vector3(4138.907f, 2929.17f, 66.86424f), air_rearm_terminal), + owning_building_guid = 39 + ) + LocalObject( + 720, + FacilityTurret.Constructor(Vector3(4125.07f, 2909.045f, 58.23624f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(720, 5016) - LocalObject(721, FacilityTurret.Constructor(Vector3(4163.497f, 2938.957f, 58.23624f), manned_turret), owning_building_guid = 39) + LocalObject( + 721, + FacilityTurret.Constructor(Vector3(4163.497f, 2938.957f, 58.23624f), manned_turret), + owning_building_guid = 39 + ) TurretToWeapon(721, 5017) - LocalObject(1046, Painbox.Constructor(Vector3(4144.454f, 2916.849f, 31.31374f), painbox_radius_continuous), owning_building_guid = 39) - LocalObject(1047, Painbox.Constructor(Vector3(4156.923f, 2913.54f, 29.39424f), painbox_radius_continuous), owning_building_guid = 39) - LocalObject(1048, Painbox.Constructor(Vector3(4157.113f, 2926.022f, 29.39424f), painbox_radius_continuous), owning_building_guid = 39) + LocalObject( + 1046, + Painbox.Constructor(Vector3(4144.454f, 2916.849f, 31.31374f), painbox_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1047, + Painbox.Constructor(Vector3(4156.923f, 2913.54f, 29.39424f), painbox_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 1048, + Painbox.Constructor(Vector3(4157.113f, 2926.022f, 29.39424f), painbox_radius_continuous), + owning_building_guid = 39 + ) } Building57() def Building57(): Unit = { // Name: nc_Amerish_Outpost_Tower Type: tower_c GUID: 40, MapID: 57 - LocalBuilding("nc_Amerish_Outpost_Tower", 40, 57, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5290f, 6160f, 39.10642f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1105, CaptureTerminal.Constructor(Vector3(5306.587f, 6159.897f, 49.10542f), secondary_capture), owning_building_guid = 40) + LocalBuilding( + "nc_Amerish_Outpost_Tower", + 40, + 57, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5290f, 6160f, 39.10642f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1105, + CaptureTerminal.Constructor(Vector3(5306.587f, 6159.897f, 49.10542f), secondary_capture), + owning_building_guid = 40 + ) LocalObject(366, Door.Constructor(Vector3(5302f, 6152f, 40.62742f)), owning_building_guid = 40) LocalObject(367, Door.Constructor(Vector3(5302f, 6152f, 60.62642f)), owning_building_guid = 40) LocalObject(368, Door.Constructor(Vector3(5302f, 6168f, 40.62742f)), owning_building_guid = 40) LocalObject(369, Door.Constructor(Vector3(5302f, 6168f, 60.62642f)), owning_building_guid = 40) LocalObject(1130, Door.Constructor(Vector3(5301.146f, 6148.794f, 30.44242f)), owning_building_guid = 40) LocalObject(1131, Door.Constructor(Vector3(5301.146f, 6165.204f, 30.44242f)), owning_building_guid = 40) - LocalObject(604, IFFLock.Constructor(Vector3(5299.957f, 6168.811f, 40.56742f), Vector3(0, 0, 0)), owning_building_guid = 40, door_guid = 368) - LocalObject(605, IFFLock.Constructor(Vector3(5299.957f, 6168.811f, 60.56742f), Vector3(0, 0, 0)), owning_building_guid = 40, door_guid = 369) - LocalObject(606, IFFLock.Constructor(Vector3(5304.047f, 6151.189f, 40.56742f), Vector3(0, 0, 180)), owning_building_guid = 40, door_guid = 366) - LocalObject(607, IFFLock.Constructor(Vector3(5304.047f, 6151.189f, 60.56742f), Vector3(0, 0, 180)), owning_building_guid = 40, door_guid = 367) + LocalObject( + 604, + IFFLock.Constructor(Vector3(5299.957f, 6168.811f, 40.56742f), Vector3(0, 0, 0)), + owning_building_guid = 40, + door_guid = 368 + ) + LocalObject( + 605, + IFFLock.Constructor(Vector3(5299.957f, 6168.811f, 60.56742f), Vector3(0, 0, 0)), + owning_building_guid = 40, + door_guid = 369 + ) + LocalObject( + 606, + IFFLock.Constructor(Vector3(5304.047f, 6151.189f, 40.56742f), Vector3(0, 0, 180)), + owning_building_guid = 40, + door_guid = 366 + ) + LocalObject( + 607, + IFFLock.Constructor(Vector3(5304.047f, 6151.189f, 60.56742f), Vector3(0, 0, 180)), + owning_building_guid = 40, + door_guid = 367 + ) LocalObject(704, Locker.Constructor(Vector3(5305.716f, 6144.963f, 29.10042f)), owning_building_guid = 40) LocalObject(705, Locker.Constructor(Vector3(5305.751f, 6166.835f, 29.10042f)), owning_building_guid = 40) LocalObject(706, Locker.Constructor(Vector3(5307.053f, 6144.963f, 29.10042f)), owning_building_guid = 40) @@ -815,28 +2556,96 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(709, Locker.Constructor(Vector3(5309.741f, 6166.835f, 29.10042f)), owning_building_guid = 40) LocalObject(710, Locker.Constructor(Vector3(5311.143f, 6144.963f, 29.10042f)), owning_building_guid = 40) LocalObject(711, Locker.Constructor(Vector3(5311.143f, 6166.835f, 29.10042f)), owning_building_guid = 40) - LocalObject(993, Terminal.Constructor(Vector3(5311.445f, 6150.129f, 30.43842f), order_terminal), owning_building_guid = 40) - LocalObject(994, Terminal.Constructor(Vector3(5311.445f, 6155.853f, 30.43842f), order_terminal), owning_building_guid = 40) - LocalObject(995, Terminal.Constructor(Vector3(5311.445f, 6161.234f, 30.43842f), order_terminal), owning_building_guid = 40) - LocalObject(1091, SpawnTube.Constructor(Vector3(5300.706f, 6147.742f, 28.58842f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 40) - LocalObject(1092, SpawnTube.Constructor(Vector3(5300.706f, 6164.152f, 28.58842f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 40) - LocalObject(1022, ProximityTerminal.Constructor(Vector3(5288.907f, 6154.725f, 66.67642f), pad_landing_tower_frame), owning_building_guid = 40) - LocalObject(1023, Terminal.Constructor(Vector3(5288.907f, 6154.725f, 66.67642f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(1025, ProximityTerminal.Constructor(Vector3(5288.907f, 6165.17f, 66.67642f), pad_landing_tower_frame), owning_building_guid = 40) - LocalObject(1026, Terminal.Constructor(Vector3(5288.907f, 6165.17f, 66.67642f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(730, FacilityTurret.Constructor(Vector3(5275.07f, 6145.045f, 58.04842f), manned_turret), owning_building_guid = 40) + LocalObject( + 993, + Terminal.Constructor(Vector3(5311.445f, 6150.129f, 30.43842f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 994, + Terminal.Constructor(Vector3(5311.445f, 6155.853f, 30.43842f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 995, + Terminal.Constructor(Vector3(5311.445f, 6161.234f, 30.43842f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1091, + SpawnTube.Constructor(Vector3(5300.706f, 6147.742f, 28.58842f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 40 + ) + LocalObject( + 1092, + SpawnTube.Constructor(Vector3(5300.706f, 6164.152f, 28.58842f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 40 + ) + LocalObject( + 1022, + ProximityTerminal.Constructor(Vector3(5288.907f, 6154.725f, 66.67642f), pad_landing_tower_frame), + owning_building_guid = 40 + ) + LocalObject( + 1023, + Terminal.Constructor(Vector3(5288.907f, 6154.725f, 66.67642f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 1025, + ProximityTerminal.Constructor(Vector3(5288.907f, 6165.17f, 66.67642f), pad_landing_tower_frame), + owning_building_guid = 40 + ) + LocalObject( + 1026, + Terminal.Constructor(Vector3(5288.907f, 6165.17f, 66.67642f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 730, + FacilityTurret.Constructor(Vector3(5275.07f, 6145.045f, 58.04842f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(730, 5018) - LocalObject(731, FacilityTurret.Constructor(Vector3(5313.497f, 6174.957f, 58.04842f), manned_turret), owning_building_guid = 40) + LocalObject( + 731, + FacilityTurret.Constructor(Vector3(5313.497f, 6174.957f, 58.04842f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(731, 5019) - LocalObject(1064, Painbox.Constructor(Vector3(5294.454f, 6152.849f, 31.12592f), painbox_radius_continuous), owning_building_guid = 40) - LocalObject(1065, Painbox.Constructor(Vector3(5306.923f, 6149.54f, 29.20642f), painbox_radius_continuous), owning_building_guid = 40) - LocalObject(1066, Painbox.Constructor(Vector3(5307.113f, 6162.022f, 29.20642f), painbox_radius_continuous), owning_building_guid = 40) + LocalObject( + 1064, + Painbox.Constructor(Vector3(5294.454f, 6152.849f, 31.12592f), painbox_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 1065, + Painbox.Constructor(Vector3(5306.923f, 6149.54f, 29.20642f), painbox_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 1066, + Painbox.Constructor(Vector3(5307.113f, 6162.022f, 29.20642f), painbox_radius_continuous), + owning_building_guid = 40 + ) } Building30() def Building30(): Unit = { // Name: Cyssor_Spawn1 Type: VT_building_nc GUID: 41, MapID: 30 - LocalBuilding("Cyssor_Spawn1", 41, 30, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2168f, 5392f, 65.21291f), Vector3(0f, 0f, 44f), VT_building_nc))) + LocalBuilding( + "Cyssor_Spawn1", + 41, + 30, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2168f, 5392f, 65.21291f), + Vector3(0f, 0f, 44f), + VT_building_nc + ) + ) + ) LocalObject(234, Door.Constructor(Vector3(2162.214f, 5444.023f, 67.2889f)), owning_building_guid = 41) LocalObject(235, Door.Constructor(Vector3(2162.343f, 5450.527f, 67.2889f)), owning_building_guid = 41) LocalObject(236, Door.Constructor(Vector3(2168.919f, 5443.906f, 67.2889f)), owning_building_guid = 41) @@ -851,24 +2660,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(421, Door.Constructor(Vector3(2184.613f, 5427.704f, 68.38791f)), owning_building_guid = 41) LocalObject(422, Door.Constructor(Vector3(2188.305f, 5411.615f, 68.38791f)), owning_building_guid = 41) LocalObject(423, Door.Constructor(Vector3(2204.286f, 5407.356f, 68.38791f)), owning_building_guid = 41) - LocalObject(849, Terminal.Constructor(Vector3(2166.156f, 5437.701f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(850, Terminal.Constructor(Vector3(2166.512f, 5456.735f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(851, Terminal.Constructor(Vector3(2168.855f, 5437.654f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(852, Terminal.Constructor(Vector3(2169.14f, 5456.689f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(853, Terminal.Constructor(Vector3(2171.483f, 5437.608f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(854, Terminal.Constructor(Vector3(2171.839f, 5456.641f, 66.57291f), order_terminal), owning_building_guid = 41) - LocalObject(774, SpawnTube.Constructor(Vector3(2162.234f, 5444.899f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(775, SpawnTube.Constructor(Vector3(2162.317f, 5449.653f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) - LocalObject(776, SpawnTube.Constructor(Vector3(2168.941f, 5444.781f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(777, SpawnTube.Constructor(Vector3(2169.023f, 5449.536f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) - LocalObject(778, SpawnTube.Constructor(Vector3(2175.648f, 5444.665f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(779, SpawnTube.Constructor(Vector3(2175.731f, 5449.419f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) + LocalObject( + 849, + Terminal.Constructor(Vector3(2166.156f, 5437.701f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(2166.512f, 5456.735f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(2168.855f, 5437.654f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(2169.14f, 5456.689f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(2171.483f, 5437.608f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(2171.839f, 5456.641f, 66.57291f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 774, + SpawnTube.Constructor(Vector3(2162.234f, 5444.899f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 775, + SpawnTube.Constructor(Vector3(2162.317f, 5449.653f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) + LocalObject( + 776, + SpawnTube.Constructor(Vector3(2168.941f, 5444.781f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 777, + SpawnTube.Constructor(Vector3(2169.023f, 5449.536f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) + LocalObject( + 778, + SpawnTube.Constructor(Vector3(2175.648f, 5444.665f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 779, + SpawnTube.Constructor(Vector3(2175.731f, 5449.419f, 67.2449f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) } Building35() def Building35(): Unit = { // Name: Cyssor_Spawn2 Type: VT_building_nc GUID: 42, MapID: 35 - LocalBuilding("Cyssor_Spawn2", 42, 35, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2400f, 5402f, 64.68082f), Vector3(0f, 0f, 89f), VT_building_nc))) + LocalBuilding( + "Cyssor_Spawn2", + 42, + 35, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2400f, 5402f, 64.68082f), + Vector3(0f, 0f, 89f), + VT_building_nc + ) + ) + ) LocalObject(240, Door.Constructor(Vector3(2354.615f, 5439.385f, 66.75681f)), owning_building_guid = 42) LocalObject(241, Door.Constructor(Vector3(2359.122f, 5434.694f, 66.75681f)), owning_building_guid = 42) LocalObject(242, Door.Constructor(Vector3(2359.439f, 5444.042f, 66.75681f)), owning_building_guid = 42) @@ -883,24 +2752,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(427, Door.Constructor(Vector3(2386.5f, 5438.993f, 67.85582f)), owning_building_guid = 42) LocalObject(428, Door.Constructor(Vector3(2400.488f, 5430.228f, 67.85582f)), owning_building_guid = 42) LocalObject(429, Door.Constructor(Vector3(2414.8f, 5438.516f, 67.85582f)), owning_building_guid = 42) - LocalObject(875, Terminal.Constructor(Vector3(2353.173f, 5446.722f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(876, Terminal.Constructor(Vector3(2355.064f, 5448.548f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(877, Terminal.Constructor(Vector3(2357.007f, 5450.423f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(878, Terminal.Constructor(Vector3(2366.381f, 5433.011f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(879, Terminal.Constructor(Vector3(2368.322f, 5434.887f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(880, Terminal.Constructor(Vector3(2370.213f, 5436.713f, 66.04082f), order_terminal), owning_building_guid = 42) - LocalObject(780, SpawnTube.Constructor(Vector3(2355.215f, 5438.748f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), owning_building_guid = 42) - LocalObject(781, SpawnTube.Constructor(Vector3(2358.517f, 5435.328f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), owning_building_guid = 42) - LocalObject(782, SpawnTube.Constructor(Vector3(2360.04f, 5443.408f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), owning_building_guid = 42) - LocalObject(783, SpawnTube.Constructor(Vector3(2363.344f, 5439.987f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), owning_building_guid = 42) - LocalObject(784, SpawnTube.Constructor(Vector3(2364.866f, 5448.068f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), owning_building_guid = 42) - LocalObject(785, SpawnTube.Constructor(Vector3(2368.168f, 5444.648f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), owning_building_guid = 42) + LocalObject( + 875, + Terminal.Constructor(Vector3(2353.173f, 5446.722f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 876, + Terminal.Constructor(Vector3(2355.064f, 5448.548f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 877, + Terminal.Constructor(Vector3(2357.007f, 5450.423f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 878, + Terminal.Constructor(Vector3(2366.381f, 5433.011f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 879, + Terminal.Constructor(Vector3(2368.322f, 5434.887f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 880, + Terminal.Constructor(Vector3(2370.213f, 5436.713f, 66.04082f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 780, + SpawnTube.Constructor(Vector3(2355.215f, 5438.748f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), + owning_building_guid = 42 + ) + LocalObject( + 781, + SpawnTube.Constructor(Vector3(2358.517f, 5435.328f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), + owning_building_guid = 42 + ) + LocalObject( + 782, + SpawnTube.Constructor(Vector3(2360.04f, 5443.408f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), + owning_building_guid = 42 + ) + LocalObject( + 783, + SpawnTube.Constructor(Vector3(2363.344f, 5439.987f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), + owning_building_guid = 42 + ) + LocalObject( + 784, + SpawnTube.Constructor(Vector3(2364.866f, 5448.068f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 316)), + owning_building_guid = 42 + ) + LocalObject( + 785, + SpawnTube.Constructor(Vector3(2368.168f, 5444.648f, 66.71281f), respawn_tube_sanctuary, Vector3(0, 0, 136)), + owning_building_guid = 42 + ) } Building36() def Building36(): Unit = { // Name: Cyssor_Spawn3 Type: VT_building_nc GUID: 43, MapID: 36 - LocalBuilding("Cyssor_Spawn3", 43, 36, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2452f, 5542f, 65.20798f), Vector3(0f, 0f, 136f), VT_building_nc))) + LocalBuilding( + "Cyssor_Spawn3", + 43, + 36, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2452f, 5542f, 65.20798f), + Vector3(0f, 0f, 136f), + VT_building_nc + ) + ) + ) LocalObject(246, Door.Constructor(Vector3(2393.473f, 5547.714f, 67.28398f)), owning_building_guid = 43) LocalObject(247, Door.Constructor(Vector3(2393.59f, 5541.009f, 67.28398f)), owning_building_guid = 43) LocalObject(248, Door.Constructor(Vector3(2393.706f, 5534.304f, 67.28398f)), owning_building_guid = 43) @@ -915,24 +2844,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(433, Door.Constructor(Vector3(2432.392f, 5521.688f, 68.38299f)), owning_building_guid = 43) LocalObject(434, Door.Constructor(Vector3(2435.387f, 5577.728f, 68.38299f)), owning_building_guid = 43) LocalObject(435, Door.Constructor(Vector3(2436.644f, 5505.738f, 68.38299f)), owning_building_guid = 43) - LocalObject(881, Terminal.Constructor(Vector3(2387.264f, 5543.581f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(882, Terminal.Constructor(Vector3(2387.357f, 5538.253f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(883, Terminal.Constructor(Vector3(2387.311f, 5540.882f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(884, Terminal.Constructor(Vector3(2406.298f, 5543.89f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(885, Terminal.Constructor(Vector3(2406.392f, 5538.562f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(886, Terminal.Constructor(Vector3(2406.344f, 5541.261f, 66.56799f), order_terminal), owning_building_guid = 43) - LocalObject(786, SpawnTube.Constructor(Vector3(2394.346f, 5547.723f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), owning_building_guid = 43) - LocalObject(787, SpawnTube.Constructor(Vector3(2394.463f, 5541.015f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), owning_building_guid = 43) - LocalObject(788, SpawnTube.Constructor(Vector3(2394.58f, 5534.308f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), owning_building_guid = 43) - LocalObject(789, SpawnTube.Constructor(Vector3(2399.1f, 5547.806f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), owning_building_guid = 43) - LocalObject(790, SpawnTube.Constructor(Vector3(2399.218f, 5541.099f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), owning_building_guid = 43) - LocalObject(791, SpawnTube.Constructor(Vector3(2399.334f, 5534.391f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), owning_building_guid = 43) + LocalObject( + 881, + Terminal.Constructor(Vector3(2387.264f, 5543.581f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 882, + Terminal.Constructor(Vector3(2387.357f, 5538.253f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 883, + Terminal.Constructor(Vector3(2387.311f, 5540.882f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 884, + Terminal.Constructor(Vector3(2406.298f, 5543.89f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 885, + Terminal.Constructor(Vector3(2406.392f, 5538.562f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 886, + Terminal.Constructor(Vector3(2406.344f, 5541.261f, 66.56799f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 786, + SpawnTube.Constructor(Vector3(2394.346f, 5547.723f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), + owning_building_guid = 43 + ) + LocalObject( + 787, + SpawnTube.Constructor(Vector3(2394.463f, 5541.015f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), + owning_building_guid = 43 + ) + LocalObject( + 788, + SpawnTube.Constructor(Vector3(2394.58f, 5534.308f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 269)), + owning_building_guid = 43 + ) + LocalObject( + 789, + SpawnTube.Constructor(Vector3(2399.1f, 5547.806f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), + owning_building_guid = 43 + ) + LocalObject( + 790, + SpawnTube.Constructor(Vector3(2399.218f, 5541.099f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), + owning_building_guid = 43 + ) + LocalObject( + 791, + SpawnTube.Constructor(Vector3(2399.334f, 5534.391f, 67.23998f), respawn_tube_sanctuary, Vector3(0, 0, 89)), + owning_building_guid = 43 + ) } Building53() def Building53(): Unit = { // Name: amerish_spawn1 Type: VT_building_nc GUID: 44, MapID: 53 - LocalBuilding("amerish_spawn1", 44, 53, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3996f, 5924f, 43.87661f), Vector3(0f, 0f, 44f), VT_building_nc))) + LocalBuilding( + "amerish_spawn1", + 44, + 53, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3996f, 5924f, 43.87661f), + Vector3(0f, 0f, 44f), + VT_building_nc + ) + ) + ) LocalObject(252, Door.Constructor(Vector3(3990.214f, 5976.023f, 45.95261f)), owning_building_guid = 44) LocalObject(253, Door.Constructor(Vector3(3990.343f, 5982.527f, 45.95261f)), owning_building_guid = 44) LocalObject(254, Door.Constructor(Vector3(3996.919f, 5975.906f, 45.95261f)), owning_building_guid = 44) @@ -947,24 +2936,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(439, Door.Constructor(Vector3(4012.613f, 5959.704f, 47.05161f)), owning_building_guid = 44) LocalObject(440, Door.Constructor(Vector3(4016.305f, 5943.615f, 47.05161f)), owning_building_guid = 44) LocalObject(441, Door.Constructor(Vector3(4032.286f, 5939.356f, 47.05161f)), owning_building_guid = 44) - LocalObject(899, Terminal.Constructor(Vector3(3994.156f, 5969.701f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(900, Terminal.Constructor(Vector3(3994.512f, 5988.735f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(901, Terminal.Constructor(Vector3(3996.855f, 5969.654f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(902, Terminal.Constructor(Vector3(3997.14f, 5988.689f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(903, Terminal.Constructor(Vector3(3999.483f, 5969.608f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(904, Terminal.Constructor(Vector3(3999.839f, 5988.641f, 45.23661f), order_terminal), owning_building_guid = 44) - LocalObject(792, SpawnTube.Constructor(Vector3(3990.234f, 5976.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 44) - LocalObject(793, SpawnTube.Constructor(Vector3(3990.317f, 5981.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 44) - LocalObject(794, SpawnTube.Constructor(Vector3(3996.941f, 5976.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 44) - LocalObject(795, SpawnTube.Constructor(Vector3(3997.023f, 5981.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 44) - LocalObject(796, SpawnTube.Constructor(Vector3(4003.648f, 5976.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 44) - LocalObject(797, SpawnTube.Constructor(Vector3(4003.731f, 5981.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 44) + LocalObject( + 899, + Terminal.Constructor(Vector3(3994.156f, 5969.701f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 900, + Terminal.Constructor(Vector3(3994.512f, 5988.735f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 901, + Terminal.Constructor(Vector3(3996.855f, 5969.654f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 902, + Terminal.Constructor(Vector3(3997.14f, 5988.689f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 903, + Terminal.Constructor(Vector3(3999.483f, 5969.608f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 904, + Terminal.Constructor(Vector3(3999.839f, 5988.641f, 45.23661f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 792, + SpawnTube.Constructor(Vector3(3990.234f, 5976.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 44 + ) + LocalObject( + 793, + SpawnTube.Constructor(Vector3(3990.317f, 5981.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 44 + ) + LocalObject( + 794, + SpawnTube.Constructor(Vector3(3996.941f, 5976.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 44 + ) + LocalObject( + 795, + SpawnTube.Constructor(Vector3(3997.023f, 5981.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 44 + ) + LocalObject( + 796, + SpawnTube.Constructor(Vector3(4003.648f, 5976.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 44 + ) + LocalObject( + 797, + SpawnTube.Constructor(Vector3(4003.731f, 5981.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 44 + ) } Building18() def Building18(): Unit = { // Name: amerish_spawn2 Type: VT_building_nc GUID: 45, MapID: 18 - LocalBuilding("amerish_spawn2", 45, 18, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4148f, 5892f, 43.87661f), Vector3(0f, 0f, 44f), VT_building_nc))) + LocalBuilding( + "amerish_spawn2", + 45, + 18, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4148f, 5892f, 43.87661f), + Vector3(0f, 0f, 44f), + VT_building_nc + ) + ) + ) LocalObject(258, Door.Constructor(Vector3(4142.213f, 5944.023f, 45.95261f)), owning_building_guid = 45) LocalObject(259, Door.Constructor(Vector3(4142.343f, 5950.527f, 45.95261f)), owning_building_guid = 45) LocalObject(260, Door.Constructor(Vector3(4148.919f, 5943.906f, 45.95261f)), owning_building_guid = 45) @@ -979,24 +3028,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(445, Door.Constructor(Vector3(4164.613f, 5927.704f, 47.05161f)), owning_building_guid = 45) LocalObject(446, Door.Constructor(Vector3(4168.305f, 5911.615f, 47.05161f)), owning_building_guid = 45) LocalObject(447, Door.Constructor(Vector3(4184.286f, 5907.356f, 47.05161f)), owning_building_guid = 45) - LocalObject(915, Terminal.Constructor(Vector3(4146.156f, 5937.701f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(916, Terminal.Constructor(Vector3(4146.512f, 5956.735f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(917, Terminal.Constructor(Vector3(4148.855f, 5937.654f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(918, Terminal.Constructor(Vector3(4149.141f, 5956.689f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(919, Terminal.Constructor(Vector3(4151.483f, 5937.608f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(920, Terminal.Constructor(Vector3(4151.839f, 5956.641f, 45.23661f), order_terminal), owning_building_guid = 45) - LocalObject(798, SpawnTube.Constructor(Vector3(4142.234f, 5944.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 45) - LocalObject(799, SpawnTube.Constructor(Vector3(4142.317f, 5949.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 45) - LocalObject(800, SpawnTube.Constructor(Vector3(4148.941f, 5944.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 45) - LocalObject(801, SpawnTube.Constructor(Vector3(4149.023f, 5949.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 45) - LocalObject(802, SpawnTube.Constructor(Vector3(4155.648f, 5944.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 45) - LocalObject(803, SpawnTube.Constructor(Vector3(4155.731f, 5949.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 45) + LocalObject( + 915, + Terminal.Constructor(Vector3(4146.156f, 5937.701f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 916, + Terminal.Constructor(Vector3(4146.512f, 5956.735f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 917, + Terminal.Constructor(Vector3(4148.855f, 5937.654f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 918, + Terminal.Constructor(Vector3(4149.141f, 5956.689f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 919, + Terminal.Constructor(Vector3(4151.483f, 5937.608f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 920, + Terminal.Constructor(Vector3(4151.839f, 5956.641f, 45.23661f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 798, + SpawnTube.Constructor(Vector3(4142.234f, 5944.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 45 + ) + LocalObject( + 799, + SpawnTube.Constructor(Vector3(4142.317f, 5949.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 45 + ) + LocalObject( + 800, + SpawnTube.Constructor(Vector3(4148.941f, 5944.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 45 + ) + LocalObject( + 801, + SpawnTube.Constructor(Vector3(4149.023f, 5949.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 45 + ) + LocalObject( + 802, + SpawnTube.Constructor(Vector3(4155.648f, 5944.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 45 + ) + LocalObject( + 803, + SpawnTube.Constructor(Vector3(4155.731f, 5949.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 45 + ) } Building52() def Building52(): Unit = { // Name: amerish_spawn3 Type: VT_building_nc GUID: 46, MapID: 52 - LocalBuilding("amerish_spawn3", 46, 52, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4302f, 5918f, 43.87661f), Vector3(0f, 0f, 44f), VT_building_nc))) + LocalBuilding( + "amerish_spawn3", + 46, + 52, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4302f, 5918f, 43.87661f), + Vector3(0f, 0f, 44f), + VT_building_nc + ) + ) + ) LocalObject(264, Door.Constructor(Vector3(4296.213f, 5970.023f, 45.95261f)), owning_building_guid = 46) LocalObject(265, Door.Constructor(Vector3(4296.343f, 5976.527f, 45.95261f)), owning_building_guid = 46) LocalObject(266, Door.Constructor(Vector3(4302.919f, 5969.906f, 45.95261f)), owning_building_guid = 46) @@ -1011,24 +3120,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(451, Door.Constructor(Vector3(4318.613f, 5953.704f, 47.05161f)), owning_building_guid = 46) LocalObject(452, Door.Constructor(Vector3(4322.305f, 5937.615f, 47.05161f)), owning_building_guid = 46) LocalObject(453, Door.Constructor(Vector3(4338.286f, 5933.356f, 47.05161f)), owning_building_guid = 46) - LocalObject(940, Terminal.Constructor(Vector3(4300.156f, 5963.701f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(941, Terminal.Constructor(Vector3(4300.512f, 5982.735f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(942, Terminal.Constructor(Vector3(4302.855f, 5963.654f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(943, Terminal.Constructor(Vector3(4303.141f, 5982.689f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(944, Terminal.Constructor(Vector3(4305.483f, 5963.608f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(945, Terminal.Constructor(Vector3(4305.839f, 5982.641f, 45.23661f), order_terminal), owning_building_guid = 46) - LocalObject(804, SpawnTube.Constructor(Vector3(4296.234f, 5970.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 46) - LocalObject(805, SpawnTube.Constructor(Vector3(4296.317f, 5975.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 46) - LocalObject(806, SpawnTube.Constructor(Vector3(4302.941f, 5970.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 46) - LocalObject(807, SpawnTube.Constructor(Vector3(4303.023f, 5975.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 46) - LocalObject(808, SpawnTube.Constructor(Vector3(4309.648f, 5970.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 46) - LocalObject(809, SpawnTube.Constructor(Vector3(4309.731f, 5975.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 46) + LocalObject( + 940, + Terminal.Constructor(Vector3(4300.156f, 5963.701f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 941, + Terminal.Constructor(Vector3(4300.512f, 5982.735f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 942, + Terminal.Constructor(Vector3(4302.855f, 5963.654f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 943, + Terminal.Constructor(Vector3(4303.141f, 5982.689f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 944, + Terminal.Constructor(Vector3(4305.483f, 5963.608f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 945, + Terminal.Constructor(Vector3(4305.839f, 5982.641f, 45.23661f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 804, + SpawnTube.Constructor(Vector3(4296.234f, 5970.899f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 46 + ) + LocalObject( + 805, + SpawnTube.Constructor(Vector3(4296.317f, 5975.653f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 46 + ) + LocalObject( + 806, + SpawnTube.Constructor(Vector3(4302.941f, 5970.781f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 46 + ) + LocalObject( + 807, + SpawnTube.Constructor(Vector3(4303.023f, 5975.536f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 46 + ) + LocalObject( + 808, + SpawnTube.Constructor(Vector3(4309.648f, 5970.665f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 46 + ) + LocalObject( + 809, + SpawnTube.Constructor(Vector3(4309.731f, 5975.419f, 45.90862f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 46 + ) } Building5() def Building5(): Unit = { // Name: Esamir_Spawn1 Type: VT_building_nc GUID: 47, MapID: 5 - LocalBuilding("Esamir_Spawn1", 47, 5, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4662f, 3362f, 68.73806f), Vector3(0f, 0f, 358f), VT_building_nc))) + LocalBuilding( + "Esamir_Spawn1", + 47, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4662f, 3362f, 68.73806f), + Vector3(0f, 0f, 358f), + VT_building_nc + ) + ) + ) LocalObject(270, Door.Constructor(Vector3(4695.403f, 3402.301f, 70.81406f)), owning_building_guid = 47) LocalObject(271, Door.Constructor(Vector3(4699.977f, 3397.396f, 70.81406f)), owning_building_guid = 47) LocalObject(272, Door.Constructor(Vector3(4700.171f, 3406.725f, 70.81406f)), owning_building_guid = 47) @@ -1043,24 +3212,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(458, Door.Constructor(Vector3(4690.215f, 3361.02f, 71.91306f)), owning_building_guid = 47) LocalObject(460, Door.Constructor(Vector3(4698.252f, 3346.565f, 71.91306f)), owning_building_guid = 47) LocalObject(461, Door.Constructor(Vector3(4699.223f, 3374.852f, 71.91306f)), owning_building_guid = 47) - LocalObject(949, Terminal.Constructor(Vector3(4693.593f, 3395.073f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(950, Terminal.Constructor(Vector3(4695.435f, 3393.099f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(951, Terminal.Constructor(Vector3(4697.228f, 3391.176f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(952, Terminal.Constructor(Vector3(4707.533f, 3408.039f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(953, Terminal.Constructor(Vector3(4709.326f, 3406.116f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(954, Terminal.Constructor(Vector3(4711.166f, 3404.142f, 70.09806f), order_terminal), owning_building_guid = 47) - LocalObject(810, SpawnTube.Constructor(Vector3(4696.047f, 3402.895f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), owning_building_guid = 47) - LocalObject(811, SpawnTube.Constructor(Vector3(4699.524f, 3406.137f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), owning_building_guid = 47) - LocalObject(812, SpawnTube.Constructor(Vector3(4700.622f, 3397.988f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), owning_building_guid = 47) - LocalObject(813, SpawnTube.Constructor(Vector3(4704.099f, 3401.232f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), owning_building_guid = 47) - LocalObject(814, SpawnTube.Constructor(Vector3(4705.197f, 3393.082f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), owning_building_guid = 47) - LocalObject(815, SpawnTube.Constructor(Vector3(4708.674f, 3396.325f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), owning_building_guid = 47) + LocalObject( + 949, + Terminal.Constructor(Vector3(4693.593f, 3395.073f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 950, + Terminal.Constructor(Vector3(4695.435f, 3393.099f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 951, + Terminal.Constructor(Vector3(4697.228f, 3391.176f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 952, + Terminal.Constructor(Vector3(4707.533f, 3408.039f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 953, + Terminal.Constructor(Vector3(4709.326f, 3406.116f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 954, + Terminal.Constructor(Vector3(4711.166f, 3404.142f, 70.09806f), order_terminal), + owning_building_guid = 47 + ) + LocalObject( + 810, + SpawnTube.Constructor(Vector3(4696.047f, 3402.895f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), + owning_building_guid = 47 + ) + LocalObject( + 811, + SpawnTube.Constructor(Vector3(4699.524f, 3406.137f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), + owning_building_guid = 47 + ) + LocalObject( + 812, + SpawnTube.Constructor(Vector3(4700.622f, 3397.988f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), + owning_building_guid = 47 + ) + LocalObject( + 813, + SpawnTube.Constructor(Vector3(4704.099f, 3401.232f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), + owning_building_guid = 47 + ) + LocalObject( + 814, + SpawnTube.Constructor(Vector3(4705.197f, 3393.082f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 227)), + owning_building_guid = 47 + ) + LocalObject( + 815, + SpawnTube.Constructor(Vector3(4708.674f, 3396.325f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 47)), + owning_building_guid = 47 + ) } Building7() def Building7(): Unit = { // Name: Esamir_Spawn2 Type: VT_building_nc GUID: 48, MapID: 7 - LocalBuilding("Esamir_Spawn2", 48, 7, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4692f, 3636f, 68.73806f), Vector3(0f, 0f, 270f), VT_building_nc))) + LocalBuilding( + "Esamir_Spawn2", + 48, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4692f, 3636f, 68.73806f), + Vector3(0f, 0f, 270f), + VT_building_nc + ) + ) + ) LocalObject(276, Door.Constructor(Vector3(4723.958f, 3594.54f, 70.81406f)), owning_building_guid = 48) LocalObject(277, Door.Constructor(Vector3(4728.546f, 3589.93f, 70.81406f)), owning_building_guid = 48) LocalObject(278, Door.Constructor(Vector3(4728.7f, 3599.282f, 70.81406f)), owning_building_guid = 48) @@ -1075,24 +3304,84 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(463, Door.Constructor(Vector3(4720.232f, 3636.005f, 71.91306f)), owning_building_guid = 48) LocalObject(464, Door.Constructor(Vector3(4728.769f, 3621.84f, 71.91306f)), owning_building_guid = 48) LocalObject(465, Door.Constructor(Vector3(4728.752f, 3650.143f, 71.91306f)), owning_building_guid = 48) - LocalObject(955, Terminal.Constructor(Vector3(4722.388f, 3601.812f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(956, Terminal.Constructor(Vector3(4724.247f, 3603.671f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(957, Terminal.Constructor(Vector3(4726.155f, 3605.58f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(958, Terminal.Constructor(Vector3(4735.832f, 3588.335f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(959, Terminal.Constructor(Vector3(4737.741f, 3590.243f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(960, Terminal.Constructor(Vector3(4739.6f, 3592.102f, 70.09806f), order_terminal), owning_building_guid = 48) - LocalObject(816, SpawnTube.Constructor(Vector3(4724.571f, 3593.914f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 48) - LocalObject(817, SpawnTube.Constructor(Vector3(4727.933f, 3590.552f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 48) - LocalObject(818, SpawnTube.Constructor(Vector3(4729.314f, 3598.658f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 48) - LocalObject(819, SpawnTube.Constructor(Vector3(4732.677f, 3595.296f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 48) - LocalObject(820, SpawnTube.Constructor(Vector3(4734.058f, 3603.401f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 48) - LocalObject(821, SpawnTube.Constructor(Vector3(4737.42f, 3600.039f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 48) + LocalObject( + 955, + Terminal.Constructor(Vector3(4722.388f, 3601.812f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 956, + Terminal.Constructor(Vector3(4724.247f, 3603.671f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 957, + Terminal.Constructor(Vector3(4726.155f, 3605.58f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 958, + Terminal.Constructor(Vector3(4735.832f, 3588.335f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 959, + Terminal.Constructor(Vector3(4737.741f, 3590.243f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 960, + Terminal.Constructor(Vector3(4739.6f, 3592.102f, 70.09806f), order_terminal), + owning_building_guid = 48 + ) + LocalObject( + 816, + SpawnTube.Constructor(Vector3(4724.571f, 3593.914f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 48 + ) + LocalObject( + 817, + SpawnTube.Constructor(Vector3(4727.933f, 3590.552f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 48 + ) + LocalObject( + 818, + SpawnTube.Constructor(Vector3(4729.314f, 3598.658f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 48 + ) + LocalObject( + 819, + SpawnTube.Constructor(Vector3(4732.677f, 3595.296f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 48 + ) + LocalObject( + 820, + SpawnTube.Constructor(Vector3(4734.058f, 3603.401f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 48 + ) + LocalObject( + 821, + SpawnTube.Constructor(Vector3(4737.42f, 3600.039f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 48 + ) } Building6() def Building6(): Unit = { // Name: Esamir_Spawn3 Type: VT_building_nc GUID: 49, MapID: 6 - LocalBuilding("Esamir_Spawn3", 49, 6, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4966f, 3658f, 68.73806f), Vector3(0f, 0f, 179f), VT_building_nc))) + LocalBuilding( + "Esamir_Spawn3", + 49, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4966f, 3658f, 68.73806f), + Vector3(0f, 0f, 179f), + VT_building_nc + ) + ) + ) LocalObject(282, Door.Constructor(Vector3(4919.299f, 3622.264f, 70.81406f)), owning_building_guid = 49) LocalObject(283, Door.Constructor(Vector3(4923.958f, 3617.439f, 70.81406f)), owning_building_guid = 49) LocalObject(284, Door.Constructor(Vector3(4923.989f, 3626.771f, 70.81406f)), owning_building_guid = 49) @@ -1107,369 +3396,1143 @@ object Map11 { // HOME1 (NEW CONGLOMORATE SANCTUARY) LocalObject(469, Door.Constructor(Vector3(4951.201f, 3621.484f, 71.91306f)), owning_building_guid = 49) LocalObject(470, Door.Constructor(Vector3(4965.512f, 3629.772f, 71.91306f)), owning_building_guid = 49) LocalObject(471, Door.Constructor(Vector3(4979.5f, 3621.007f, 71.91306f)), owning_building_guid = 49) - LocalObject(984, Terminal.Constructor(Vector3(4917.577f, 3615.007f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(985, Terminal.Constructor(Vector3(4919.452f, 3613.064f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(986, Terminal.Constructor(Vector3(4921.278f, 3611.173f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(987, Terminal.Constructor(Vector3(4931.287f, 3628.213f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(988, Terminal.Constructor(Vector3(4933.113f, 3626.322f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(989, Terminal.Constructor(Vector3(4934.989f, 3624.381f, 70.09806f), order_terminal), owning_building_guid = 49) - LocalObject(822, SpawnTube.Constructor(Vector3(4919.932f, 3622.866f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), owning_building_guid = 49) - LocalObject(823, SpawnTube.Constructor(Vector3(4923.352f, 3626.168f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), owning_building_guid = 49) - LocalObject(824, SpawnTube.Constructor(Vector3(4924.592f, 3618.04f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), owning_building_guid = 49) - LocalObject(825, SpawnTube.Constructor(Vector3(4928.013f, 3621.344f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), owning_building_guid = 49) - LocalObject(826, SpawnTube.Constructor(Vector3(4929.252f, 3613.215f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), owning_building_guid = 49) - LocalObject(827, SpawnTube.Constructor(Vector3(4932.672f, 3616.517f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), owning_building_guid = 49) + LocalObject( + 984, + Terminal.Constructor(Vector3(4917.577f, 3615.007f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 985, + Terminal.Constructor(Vector3(4919.452f, 3613.064f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 986, + Terminal.Constructor(Vector3(4921.278f, 3611.173f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 987, + Terminal.Constructor(Vector3(4931.287f, 3628.213f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 988, + Terminal.Constructor(Vector3(4933.113f, 3626.322f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 989, + Terminal.Constructor(Vector3(4934.989f, 3624.381f, 70.09806f), order_terminal), + owning_building_guid = 49 + ) + LocalObject( + 822, + SpawnTube.Constructor(Vector3(4919.932f, 3622.866f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), + owning_building_guid = 49 + ) + LocalObject( + 823, + SpawnTube.Constructor(Vector3(4923.352f, 3626.168f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), + owning_building_guid = 49 + ) + LocalObject( + 824, + SpawnTube.Constructor(Vector3(4924.592f, 3618.04f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), + owning_building_guid = 49 + ) + LocalObject( + 825, + SpawnTube.Constructor(Vector3(4928.013f, 3621.344f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), + owning_building_guid = 49 + ) + LocalObject( + 826, + SpawnTube.Constructor(Vector3(4929.252f, 3613.215f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 226)), + owning_building_guid = 49 + ) + LocalObject( + 827, + SpawnTube.Constructor(Vector3(4932.672f, 3616.517f, 70.77006f), respawn_tube_sanctuary, Vector3(0, 0, 46)), + owning_building_guid = 49 + ) } Building34() def Building34(): Unit = { // Name: Cyssor_Air2 Type: vt_dropship GUID: 50, MapID: 34 - LocalBuilding("Cyssor_Air2", 50, 34, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2078f, 5496f, 65.20686f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(300, Terminal.Constructor(Vector3(2101.469f, 5495.71f, 68.07486f), dropship_vehicle_terminal), owning_building_guid = 50) - LocalObject(288, VehicleSpawnPad.Constructor(Vector3(2081.589f, 5495.958f, 61.22186f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 50, terminal_guid = 300) + LocalBuilding( + "Cyssor_Air2", + 50, + 34, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2078f, 5496f, 65.20686f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 300, + Terminal.Constructor(Vector3(2101.469f, 5495.71f, 68.07486f), dropship_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 288, + VehicleSpawnPad.Constructor(Vector3(2081.589f, 5495.958f, 61.22186f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 50, + terminal_guid = 300 + ) } Building38() def Building38(): Unit = { // Name: Cyssor_Air1 Type: vt_dropship GUID: 51, MapID: 38 - LocalBuilding("Cyssor_Air1", 51, 38, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2078f, 5572f, 65.20757f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(301, Terminal.Constructor(Vector3(2101.469f, 5571.71f, 68.07558f), dropship_vehicle_terminal), owning_building_guid = 51) - LocalObject(289, VehicleSpawnPad.Constructor(Vector3(2081.589f, 5571.958f, 61.22257f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 51, terminal_guid = 301) + LocalBuilding( + "Cyssor_Air1", + 51, + 38, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2078f, 5572f, 65.20757f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 301, + Terminal.Constructor(Vector3(2101.469f, 5571.71f, 68.07558f), dropship_vehicle_terminal), + owning_building_guid = 51 + ) + LocalObject( + 289, + VehicleSpawnPad.Constructor(Vector3(2081.589f, 5571.958f, 61.22257f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 51, + terminal_guid = 301 + ) } Building39() def Building39(): Unit = { // Name: Cyssor_Air4 Type: vt_dropship GUID: 52, MapID: 39 - LocalBuilding("Cyssor_Air4", 52, 39, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2290f, 5386f, 65.21352f), Vector3(0f, 0f, 269f), vt_dropship))) - LocalObject(302, Terminal.Constructor(Vector3(2290.29f, 5409.469f, 68.08153f), dropship_vehicle_terminal), owning_building_guid = 52) - LocalObject(290, VehicleSpawnPad.Constructor(Vector3(2290.043f, 5389.589f, 61.22852f), dropship_pad_doors, Vector3(0, 0, 91)), owning_building_guid = 52, terminal_guid = 302) + LocalBuilding( + "Cyssor_Air4", + 52, + 39, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2290f, 5386f, 65.21352f), + Vector3(0f, 0f, 269f), + vt_dropship + ) + ) + ) + LocalObject( + 302, + Terminal.Constructor(Vector3(2290.29f, 5409.469f, 68.08153f), dropship_vehicle_terminal), + owning_building_guid = 52 + ) + LocalObject( + 290, + VehicleSpawnPad.Constructor(Vector3(2290.043f, 5389.589f, 61.22852f), dropship_pad_doors, Vector3(0, 0, 91)), + owning_building_guid = 52, + terminal_guid = 302 + ) } Building33() def Building33(): Unit = { // Name: Cyssor_Air3 Type: vt_dropship GUID: 53, MapID: 33 - LocalBuilding("Cyssor_Air3", 53, 33, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2464f, 5640f, 65.20798f), Vector3(0f, 0f, 42f), vt_dropship))) - LocalObject(303, Terminal.Constructor(Vector3(2446.639f, 5624.207f, 68.07599f), dropship_vehicle_terminal), owning_building_guid = 53) - LocalObject(291, VehicleSpawnPad.Constructor(Vector3(2461.346f, 5637.583f, 61.22298f), dropship_pad_doors, Vector3(0, 0, -42)), owning_building_guid = 53, terminal_guid = 303) + LocalBuilding( + "Cyssor_Air3", + 53, + 33, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2464f, 5640f, 65.20798f), + Vector3(0f, 0f, 42f), + vt_dropship + ) + ) + ) + LocalObject( + 303, + Terminal.Constructor(Vector3(2446.639f, 5624.207f, 68.07599f), dropship_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 291, + VehicleSpawnPad.Constructor(Vector3(2461.346f, 5637.583f, 61.22298f), dropship_pad_doors, Vector3(0, 0, -42)), + owning_building_guid = 53, + terminal_guid = 303 + ) } Building22() def Building22(): Unit = { // Name: amerish_air3 Type: vt_dropship GUID: 54, MapID: 22 - LocalBuilding("amerish_air3", 54, 22, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3926f, 6060f, 43.87661f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(304, Terminal.Constructor(Vector3(3949.469f, 6059.71f, 46.74461f), dropship_vehicle_terminal), owning_building_guid = 54) - LocalObject(292, VehicleSpawnPad.Constructor(Vector3(3929.589f, 6059.958f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 54, terminal_guid = 304) + LocalBuilding( + "amerish_air3", + 54, + 22, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3926f, 6060f, 43.87661f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 304, + Terminal.Constructor(Vector3(3949.469f, 6059.71f, 46.74461f), dropship_vehicle_terminal), + owning_building_guid = 54 + ) + LocalObject( + 292, + VehicleSpawnPad.Constructor(Vector3(3929.589f, 6059.958f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 54, + terminal_guid = 304 + ) } Building25() def Building25(): Unit = { // Name: amerish_air4 Type: vt_dropship GUID: 55, MapID: 25 - LocalBuilding("amerish_air4", 55, 25, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3986f, 6176f, 43.87661f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(305, Terminal.Constructor(Vector3(4009.469f, 6175.71f, 46.74461f), dropship_vehicle_terminal), owning_building_guid = 55) - LocalObject(293, VehicleSpawnPad.Constructor(Vector3(3989.589f, 6175.958f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 55, terminal_guid = 305) + LocalBuilding( + "amerish_air4", + 55, + 25, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3986f, 6176f, 43.87661f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 305, + Terminal.Constructor(Vector3(4009.469f, 6175.71f, 46.74461f), dropship_vehicle_terminal), + owning_building_guid = 55 + ) + LocalObject( + 293, + VehicleSpawnPad.Constructor(Vector3(3989.589f, 6175.958f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 55, + terminal_guid = 305 + ) } Building24() def Building24(): Unit = { // Name: amerish_air2 Type: vt_dropship GUID: 56, MapID: 24 - LocalBuilding("amerish_air2", 56, 24, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4320f, 6168f, 43.87661f), Vector3(0f, 0f, 359f), vt_dropship))) - LocalObject(306, Terminal.Constructor(Vector3(4296.531f, 6168.29f, 46.74461f), dropship_vehicle_terminal), owning_building_guid = 56) - LocalObject(294, VehicleSpawnPad.Constructor(Vector3(4316.411f, 6168.042f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 1)), owning_building_guid = 56, terminal_guid = 306) + LocalBuilding( + "amerish_air2", + 56, + 24, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4320f, 6168f, 43.87661f), + Vector3(0f, 0f, 359f), + vt_dropship + ) + ) + ) + LocalObject( + 306, + Terminal.Constructor(Vector3(4296.531f, 6168.29f, 46.74461f), dropship_vehicle_terminal), + owning_building_guid = 56 + ) + LocalObject( + 294, + VehicleSpawnPad.Constructor(Vector3(4316.411f, 6168.042f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 1)), + owning_building_guid = 56, + terminal_guid = 306 + ) } Building21() def Building21(): Unit = { // Name: amerish_air1 Type: vt_dropship GUID: 57, MapID: 21 - LocalBuilding("amerish_air1", 57, 21, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4376f, 6058f, 43.87661f), Vector3(0f, 0f, 359f), vt_dropship))) - LocalObject(307, Terminal.Constructor(Vector3(4352.531f, 6058.29f, 46.74461f), dropship_vehicle_terminal), owning_building_guid = 57) - LocalObject(295, VehicleSpawnPad.Constructor(Vector3(4372.411f, 6058.042f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 1)), owning_building_guid = 57, terminal_guid = 307) + LocalBuilding( + "amerish_air1", + 57, + 21, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4376f, 6058f, 43.87661f), + Vector3(0f, 0f, 359f), + vt_dropship + ) + ) + ) + LocalObject( + 307, + Terminal.Constructor(Vector3(4352.531f, 6058.29f, 46.74461f), dropship_vehicle_terminal), + owning_building_guid = 57 + ) + LocalObject( + 295, + VehicleSpawnPad.Constructor(Vector3(4372.411f, 6058.042f, 39.89161f), dropship_pad_doors, Vector3(0, 0, 1)), + owning_building_guid = 57, + terminal_guid = 307 + ) } Building14() def Building14(): Unit = { // Name: Esamir_Air2 Type: vt_dropship GUID: 58, MapID: 14 - LocalBuilding("Esamir_Air2", 58, 14, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4620f, 3466f, 68.73806f), Vector3(0f, 0f, 225f), vt_dropship))) - LocalObject(308, Terminal.Constructor(Vector3(4636.511f, 3482.681f, 71.60606f), dropship_vehicle_terminal), owning_building_guid = 58) - LocalObject(296, VehicleSpawnPad.Constructor(Vector3(4622.523f, 3468.552f, 64.75306f), dropship_pad_doors, Vector3(0, 0, 135)), owning_building_guid = 58, terminal_guid = 308) + LocalBuilding( + "Esamir_Air2", + 58, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4620f, 3466f, 68.73806f), + Vector3(0f, 0f, 225f), + vt_dropship + ) + ) + ) + LocalObject( + 308, + Terminal.Constructor(Vector3(4636.511f, 3482.681f, 71.60606f), dropship_vehicle_terminal), + owning_building_guid = 58 + ) + LocalObject( + 296, + VehicleSpawnPad.Constructor(Vector3(4622.523f, 3468.552f, 64.75306f), dropship_pad_doors, Vector3(0, 0, 135)), + owning_building_guid = 58, + terminal_guid = 308 + ) } Building17() def Building17(): Unit = { // Name: Esamir_Air1 Type: vt_dropship GUID: 59, MapID: 17 - LocalBuilding("Esamir_Air1", 59, 17, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4768f, 3318f, 68.73806f), Vector3(0f, 0f, 225f), vt_dropship))) - LocalObject(309, Terminal.Constructor(Vector3(4784.511f, 3334.681f, 71.60606f), dropship_vehicle_terminal), owning_building_guid = 59) - LocalObject(297, VehicleSpawnPad.Constructor(Vector3(4770.523f, 3320.552f, 64.75306f), dropship_pad_doors, Vector3(0, 0, 135)), owning_building_guid = 59, terminal_guid = 309) + LocalBuilding( + "Esamir_Air1", + 59, + 17, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4768f, 3318f, 68.73806f), + Vector3(0f, 0f, 225f), + vt_dropship + ) + ) + ) + LocalObject( + 309, + Terminal.Constructor(Vector3(4784.511f, 3334.681f, 71.60606f), dropship_vehicle_terminal), + owning_building_guid = 59 + ) + LocalObject( + 297, + VehicleSpawnPad.Constructor(Vector3(4770.523f, 3320.552f, 64.75306f), dropship_pad_doors, Vector3(0, 0, 135)), + owning_building_guid = 59, + terminal_guid = 309 + ) } Building15() def Building15(): Unit = { // Name: Esamir_Air4 Type: vt_dropship GUID: 60, MapID: 15 - LocalBuilding("Esamir_Air4", 60, 15, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4868f, 3696f, 68.73806f), Vector3(0f, 0f, 45f), vt_dropship))) - LocalObject(310, Terminal.Constructor(Vector3(4851.489f, 3679.319f, 71.60606f), dropship_vehicle_terminal), owning_building_guid = 60) - LocalObject(298, VehicleSpawnPad.Constructor(Vector3(4865.477f, 3693.448f, 64.75306f), dropship_pad_doors, Vector3(0, 0, -45)), owning_building_guid = 60, terminal_guid = 310) + LocalBuilding( + "Esamir_Air4", + 60, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4868f, 3696f, 68.73806f), + Vector3(0f, 0f, 45f), + vt_dropship + ) + ) + ) + LocalObject( + 310, + Terminal.Constructor(Vector3(4851.489f, 3679.319f, 71.60606f), dropship_vehicle_terminal), + owning_building_guid = 60 + ) + LocalObject( + 298, + VehicleSpawnPad.Constructor(Vector3(4865.477f, 3693.448f, 64.75306f), dropship_pad_doors, Vector3(0, 0, -45)), + owning_building_guid = 60, + terminal_guid = 310 + ) } Building16() def Building16(): Unit = { // Name: Esamir_Air3 Type: vt_dropship GUID: 61, MapID: 16 - LocalBuilding("Esamir_Air3", 61, 16, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5010f, 3556f, 68.73806f), Vector3(0f, 0f, 45f), vt_dropship))) - LocalObject(311, Terminal.Constructor(Vector3(4993.489f, 3539.319f, 71.60606f), dropship_vehicle_terminal), owning_building_guid = 61) - LocalObject(299, VehicleSpawnPad.Constructor(Vector3(5007.477f, 3553.448f, 64.75306f), dropship_pad_doors, Vector3(0, 0, -45)), owning_building_guid = 61, terminal_guid = 311) + LocalBuilding( + "Esamir_Air3", + 61, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5010f, 3556f, 68.73806f), + Vector3(0f, 0f, 45f), + vt_dropship + ) + ) + ) + LocalObject( + 311, + Terminal.Constructor(Vector3(4993.489f, 3539.319f, 71.60606f), dropship_vehicle_terminal), + owning_building_guid = 61 + ) + LocalObject( + 299, + VehicleSpawnPad.Constructor(Vector3(5007.477f, 3553.448f, 64.75306f), dropship_pad_doors, Vector3(0, 0, -45)), + owning_building_guid = 61, + terminal_guid = 311 + ) } Building67() def Building67(): Unit = { // Name: NC_NW_Tport_04 Type: vt_spawn GUID: 62, MapID: 67 - LocalBuilding("NC_NW_Tport_04", 62, 67, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2132f, 5532f, 65.20512f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NW_Tport_04", + 62, + 67, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2132f, 5532f, 65.20512f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building69() def Building69(): Unit = { // Name: NC_NW_Tport_02 Type: vt_spawn GUID: 63, MapID: 69 - LocalBuilding("NC_NW_Tport_02", 63, 69, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2242f, 5432f, 65.2088f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NW_Tport_02", + 63, + 69, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2242f, 5432f, 65.2088f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building70() def Building70(): Unit = { // Name: NC_NW_Tport_01 Type: vt_spawn GUID: 64, MapID: 70 - LocalBuilding("NC_NW_Tport_01", 64, 70, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2258f, 5642f, 65.20429f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NW_Tport_01", + 64, + 70, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2258f, 5642f, 65.20429f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building68() def Building68(): Unit = { // Name: NC_NW_Tport_03 Type: vt_spawn GUID: 65, MapID: 68 - LocalBuilding("NC_NW_Tport_03", 65, 68, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2388f, 5618f, 65.20798f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NW_Tport_03", + 65, + 68, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2388f, 5618f, 65.20798f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building66() def Building66(): Unit = { // Name: NC_NE_Tport_02 Type: vt_spawn GUID: 66, MapID: 66 - LocalBuilding("NC_NE_Tport_02", 66, 66, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4060f, 5986f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NE_Tport_02", + 66, + 66, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4060f, 5986f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building65() def Building65(): Unit = { // Name: NC_NE_Tport_03 Type: vt_spawn GUID: 67, MapID: 65 - LocalBuilding("NC_NE_Tport_03", 67, 65, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4156f, 6160f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NE_Tport_03", + 67, + 65, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4156f, 6160f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building63() def Building63(): Unit = { // Name: NC_NE_Tport_01 Type: vt_spawn GUID: 68, MapID: 63 - LocalBuilding("NC_NE_Tport_01", 68, 63, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4212f, 5954f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NE_Tport_01", + 68, + 63, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4212f, 5954f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building64() def Building64(): Unit = { // Name: NC_NE_Tport_04 Type: vt_spawn GUID: 69, MapID: 64 - LocalBuilding("NC_NE_Tport_04", 69, 64, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4258f, 6148f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_NE_Tport_04", + 69, + 64, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4258f, 6148f, 43.87661f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building59() def Building59(): Unit = { // Name: NC_SE_Tport_04 Type: vt_spawn GUID: 70, MapID: 59 - LocalBuilding("NC_SE_Tport_04", 70, 59, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4698f, 3506f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_SE_Tport_04", + 70, + 59, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4698f, 3506f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building60() def Building60(): Unit = { // Name: NC_SE_Tport_03 Type: vt_spawn GUID: 71, MapID: 60 - LocalBuilding("NC_SE_Tport_03", 71, 60, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4818f, 3622f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_SE_Tport_03", + 71, + 60, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4818f, 3622f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building61() def Building61(): Unit = { // Name: NC_SE_Tport_02 Type: vt_spawn GUID: 72, MapID: 61 - LocalBuilding("NC_SE_Tport_02", 72, 61, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4826f, 3398f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_SE_Tport_02", + 72, + 61, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4826f, 3398f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building62() def Building62(): Unit = { // Name: NC_SE_Tport_01 Type: vt_spawn GUID: 73, MapID: 62 - LocalBuilding("NC_SE_Tport_01", 73, 62, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4922f, 3500f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "NC_SE_Tport_01", + 73, + 62, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4922f, 3500f, 68.73806f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building42() def Building42(): Unit = { // Name: Cyssor_Vehicle6 Type: vt_vehicle GUID: 74, MapID: 42 - LocalBuilding("Cyssor_Vehicle6", 74, 42, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2078f, 5642f, 65.20348f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1144, Terminal.Constructor(Vector3(2078.008f, 5627.508f, 67.89047f), ground_vehicle_terminal), owning_building_guid = 74) - LocalObject(756, VehicleSpawnPad.Constructor(Vector3(2077.973f, 5642.147f, 63.73248f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 74, terminal_guid = 1144) + LocalBuilding( + "Cyssor_Vehicle6", + 74, + 42, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2078f, 5642f, 65.20348f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1144, + Terminal.Constructor(Vector3(2078.008f, 5627.508f, 67.89047f), ground_vehicle_terminal), + owning_building_guid = 74 + ) + LocalObject( + 756, + VehicleSpawnPad.Constructor(Vector3(2077.973f, 5642.147f, 63.73248f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 74, + terminal_guid = 1144 + ) } Building32() def Building32(): Unit = { // Name: Cyssor_Vehicle1 Type: vt_vehicle GUID: 75, MapID: 32 - LocalBuilding("Cyssor_Vehicle1", 75, 32, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2082f, 5418f, 65.21249f), Vector3(0f, 0f, 180f), vt_vehicle))) - LocalObject(1145, Terminal.Constructor(Vector3(2096.492f, 5418.008f, 67.89949f), ground_vehicle_terminal), owning_building_guid = 75) - LocalObject(757, VehicleSpawnPad.Constructor(Vector3(2081.853f, 5417.973f, 63.74149f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 75, terminal_guid = 1145) + LocalBuilding( + "Cyssor_Vehicle1", + 75, + 32, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2082f, 5418f, 65.21249f), + Vector3(0f, 0f, 180f), + vt_vehicle + ) + ) + ) + LocalObject( + 1145, + Terminal.Constructor(Vector3(2096.492f, 5418.008f, 67.89949f), ground_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 757, + VehicleSpawnPad.Constructor(Vector3(2081.853f, 5417.973f, 63.74149f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 75, + terminal_guid = 1145 + ) } Building41() def Building41(): Unit = { // Name: Cyssor_Vehicle5 Type: vt_vehicle GUID: 76, MapID: 41 - LocalBuilding("Cyssor_Vehicle5", 76, 41, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2186f, 5662f, 65.20142f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1146, Terminal.Constructor(Vector3(2186.008f, 5647.508f, 67.88842f), ground_vehicle_terminal), owning_building_guid = 76) - LocalObject(758, VehicleSpawnPad.Constructor(Vector3(2185.973f, 5662.147f, 63.73042f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 76, terminal_guid = 1146) + LocalBuilding( + "Cyssor_Vehicle5", + 76, + 41, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2186f, 5662f, 65.20142f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1146, + Terminal.Constructor(Vector3(2186.008f, 5647.508f, 67.88842f), ground_vehicle_terminal), + owning_building_guid = 76 + ) + LocalObject( + 758, + VehicleSpawnPad.Constructor(Vector3(2185.973f, 5662.147f, 63.73042f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 76, + terminal_guid = 1146 + ) } Building43() def Building43(): Unit = { // Name: Cyssor_Vehicle4 Type: vt_vehicle GUID: 77, MapID: 43 - LocalBuilding("Cyssor_Vehicle4", 77, 43, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2328f, 5662f, 65.20798f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1147, Terminal.Constructor(Vector3(2327.755f, 5647.51f, 67.89498f), ground_vehicle_terminal), owning_building_guid = 77) - LocalObject(759, VehicleSpawnPad.Constructor(Vector3(2327.976f, 5662.147f, 63.73698f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 77, terminal_guid = 1147) + LocalBuilding( + "Cyssor_Vehicle4", + 77, + 43, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2328f, 5662f, 65.20798f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1147, + Terminal.Constructor(Vector3(2327.755f, 5647.51f, 67.89498f), ground_vehicle_terminal), + owning_building_guid = 77 + ) + LocalObject( + 759, + VehicleSpawnPad.Constructor(Vector3(2327.976f, 5662.147f, 63.73698f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 77, + terminal_guid = 1147 + ) } Building40() def Building40(): Unit = { // Name: Cyssor_Vehicle3 Type: vt_vehicle GUID: 78, MapID: 40 - LocalBuilding("Cyssor_Vehicle3", 78, 40, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2410f, 5694f, 65.20798f), Vector3(0f, 0f, 133f), vt_vehicle))) - LocalObject(1148, Terminal.Constructor(Vector3(2419.889f, 5683.407f, 67.89498f), ground_vehicle_terminal), owning_building_guid = 78) - LocalObject(760, VehicleSpawnPad.Constructor(Vector3(2409.88f, 5694.089f, 63.73698f), mb_pad_creation, Vector3(0, 0, -43)), owning_building_guid = 78, terminal_guid = 1148) + LocalBuilding( + "Cyssor_Vehicle3", + 78, + 40, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2410f, 5694f, 65.20798f), + Vector3(0f, 0f, 133f), + vt_vehicle + ) + ) + ) + LocalObject( + 1148, + Terminal.Constructor(Vector3(2419.889f, 5683.407f, 67.89498f), ground_vehicle_terminal), + owning_building_guid = 78 + ) + LocalObject( + 760, + VehicleSpawnPad.Constructor(Vector3(2409.88f, 5694.089f, 63.73698f), mb_pad_creation, Vector3(0, 0, -43)), + owning_building_guid = 78, + terminal_guid = 1148 + ) } Building31() def Building31(): Unit = { // Name: Cyssor_Vehicle2 Type: vt_vehicle GUID: 79, MapID: 31 - LocalBuilding("Cyssor_Vehicle2", 79, 31, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2468f, 5458f, 65.2127f), Vector3(0f, 0f, 1f), vt_vehicle))) - LocalObject(1149, Terminal.Constructor(Vector3(2453.51f, 5457.739f, 67.8997f), ground_vehicle_terminal), owning_building_guid = 79) - LocalObject(761, VehicleSpawnPad.Constructor(Vector3(2468.146f, 5458.03f, 63.7417f), mb_pad_creation, Vector3(0, 0, 89)), owning_building_guid = 79, terminal_guid = 1149) + LocalBuilding( + "Cyssor_Vehicle2", + 79, + 31, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2468f, 5458f, 65.2127f), Vector3(0f, 0f, 1f), vt_vehicle) + ) + ) + LocalObject( + 1149, + Terminal.Constructor(Vector3(2453.51f, 5457.739f, 67.8997f), ground_vehicle_terminal), + owning_building_guid = 79 + ) + LocalObject( + 761, + VehicleSpawnPad.Constructor(Vector3(2468.146f, 5458.03f, 63.7417f), mb_pad_creation, Vector3(0, 0, 89)), + owning_building_guid = 79, + terminal_guid = 1149 + ) } Building19() def Building19(): Unit = { // Name: amerish_vehicle1 Type: vt_vehicle GUID: 80, MapID: 19 - LocalBuilding("amerish_vehicle1", 80, 19, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3990f, 6094f, 43.87661f), Vector3(0f, 0f, 133f), vt_vehicle))) - LocalObject(1151, Terminal.Constructor(Vector3(3999.889f, 6083.407f, 46.56361f), ground_vehicle_terminal), owning_building_guid = 80) - LocalObject(762, VehicleSpawnPad.Constructor(Vector3(3989.88f, 6094.089f, 42.40561f), mb_pad_creation, Vector3(0, 0, -43)), owning_building_guid = 80, terminal_guid = 1151) + LocalBuilding( + "amerish_vehicle1", + 80, + 19, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3990f, 6094f, 43.87661f), + Vector3(0f, 0f, 133f), + vt_vehicle + ) + ) + ) + LocalObject( + 1151, + Terminal.Constructor(Vector3(3999.889f, 6083.407f, 46.56361f), ground_vehicle_terminal), + owning_building_guid = 80 + ) + LocalObject( + 762, + VehicleSpawnPad.Constructor(Vector3(3989.88f, 6094.089f, 42.40561f), mb_pad_creation, Vector3(0, 0, -43)), + owning_building_guid = 80, + terminal_guid = 1151 + ) } Building29() def Building29(): Unit = { // Name: amerish_vehicle2 Type: vt_vehicle GUID: 81, MapID: 29 - LocalBuilding("amerish_vehicle2", 81, 29, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4000f, 6248f, 43.87661f), Vector3(0f, 0f, 88f), vt_vehicle))) - LocalObject(1150, Terminal.Constructor(Vector3(3999.502f, 6233.517f, 46.56361f), ground_vehicle_terminal), owning_building_guid = 81) - LocalObject(763, VehicleSpawnPad.Constructor(Vector3(3999.978f, 6248.148f, 42.40561f), mb_pad_creation, Vector3(0, 0, 2)), owning_building_guid = 81, terminal_guid = 1150) + LocalBuilding( + "amerish_vehicle2", + 81, + 29, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4000f, 6248f, 43.87661f), Vector3(0f, 0f, 88f), vt_vehicle) + ) + ) + LocalObject( + 1150, + Terminal.Constructor(Vector3(3999.502f, 6233.517f, 46.56361f), ground_vehicle_terminal), + owning_building_guid = 81 + ) + LocalObject( + 763, + VehicleSpawnPad.Constructor(Vector3(3999.978f, 6248.148f, 42.40561f), mb_pad_creation, Vector3(0, 0, 2)), + owning_building_guid = 81, + terminal_guid = 1150 + ) } Building28() def Building28(): Unit = { // Name: amerish_vehicle3 Type: vt_vehicle GUID: 82, MapID: 28 - LocalBuilding("amerish_vehicle3", 82, 28, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4104f, 6194f, 43.87661f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1152, Terminal.Constructor(Vector3(4103.755f, 6179.51f, 46.56361f), ground_vehicle_terminal), owning_building_guid = 82) - LocalObject(764, VehicleSpawnPad.Constructor(Vector3(4103.976f, 6194.147f, 42.40561f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 82, terminal_guid = 1152) + LocalBuilding( + "amerish_vehicle3", + 82, + 28, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4104f, 6194f, 43.87661f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1152, + Terminal.Constructor(Vector3(4103.755f, 6179.51f, 46.56361f), ground_vehicle_terminal), + owning_building_guid = 82 + ) + LocalObject( + 764, + VehicleSpawnPad.Constructor(Vector3(4103.976f, 6194.147f, 42.40561f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 82, + terminal_guid = 1152 + ) } Building27() def Building27(): Unit = { // Name: amerish_vehicle4 Type: vt_vehicle GUID: 83, MapID: 27 - LocalBuilding("amerish_vehicle4", 83, 27, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4200f, 6196f, 43.87661f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1153, Terminal.Constructor(Vector3(4199.755f, 6181.51f, 46.56361f), ground_vehicle_terminal), owning_building_guid = 83) - LocalObject(765, VehicleSpawnPad.Constructor(Vector3(4199.976f, 6196.147f, 42.40561f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 83, terminal_guid = 1153) + LocalBuilding( + "amerish_vehicle4", + 83, + 27, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4200f, 6196f, 43.87661f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1153, + Terminal.Constructor(Vector3(4199.755f, 6181.51f, 46.56361f), ground_vehicle_terminal), + owning_building_guid = 83 + ) + LocalObject( + 765, + VehicleSpawnPad.Constructor(Vector3(4199.976f, 6196.147f, 42.40561f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 83, + terminal_guid = 1153 + ) } Building26() def Building26(): Unit = { // Name: amerish_vehicle5 Type: vt_vehicle GUID: 84, MapID: 26 - LocalBuilding("amerish_vehicle5", 84, 26, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4304f, 6244f, 43.92173f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1154, Terminal.Constructor(Vector3(4303.755f, 6229.51f, 46.60873f), ground_vehicle_terminal), owning_building_guid = 84) - LocalObject(766, VehicleSpawnPad.Constructor(Vector3(4303.976f, 6244.147f, 42.45073f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 84, terminal_guid = 1154) + LocalBuilding( + "amerish_vehicle5", + 84, + 26, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4304f, 6244f, 43.92173f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1154, + Terminal.Constructor(Vector3(4303.755f, 6229.51f, 46.60873f), ground_vehicle_terminal), + owning_building_guid = 84 + ) + LocalObject( + 766, + VehicleSpawnPad.Constructor(Vector3(4303.976f, 6244.147f, 42.45073f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 84, + terminal_guid = 1154 + ) } Building20() def Building20(): Unit = { // Name: amerish_vehicle6 Type: vt_vehicle GUID: 85, MapID: 20 - LocalBuilding("amerish_vehicle6", 85, 20, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4316f, 6094f, 43.87661f), Vector3(0f, 0f, 46f), vt_vehicle))) - LocalObject(1155, Terminal.Constructor(Vector3(4305.939f, 6083.57f, 46.56361f), ground_vehicle_terminal), owning_building_guid = 85) - LocalObject(767, VehicleSpawnPad.Constructor(Vector3(4316.083f, 6094.125f, 42.40561f), mb_pad_creation, Vector3(0, 0, 44)), owning_building_guid = 85, terminal_guid = 1155) + LocalBuilding( + "amerish_vehicle6", + 85, + 20, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4316f, 6094f, 43.87661f), Vector3(0f, 0f, 46f), vt_vehicle) + ) + ) + LocalObject( + 1155, + Terminal.Constructor(Vector3(4305.939f, 6083.57f, 46.56361f), ground_vehicle_terminal), + owning_building_guid = 85 + ) + LocalObject( + 767, + VehicleSpawnPad.Constructor(Vector3(4316.083f, 6094.125f, 42.40561f), mb_pad_creation, Vector3(0, 0, 44)), + owning_building_guid = 85, + terminal_guid = 1155 + ) } Building12() def Building12(): Unit = { // Name: Esamir_Vehicle1 Type: vt_vehicle GUID: 86, MapID: 12 - LocalBuilding("Esamir_Vehicle1", 86, 12, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4644f, 3540f, 68.73806f), Vector3(0f, 0f, 226f), vt_vehicle))) - LocalObject(1156, Terminal.Constructor(Vector3(4654.061f, 3550.43f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 86) - LocalObject(768, VehicleSpawnPad.Constructor(Vector3(4643.917f, 3539.875f, 67.26706f), mb_pad_creation, Vector3(0, 0, 224)), owning_building_guid = 86, terminal_guid = 1156) + LocalBuilding( + "Esamir_Vehicle1", + 86, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4644f, 3540f, 68.73806f), + Vector3(0f, 0f, 226f), + vt_vehicle + ) + ) + ) + LocalObject( + 1156, + Terminal.Constructor(Vector3(4654.061f, 3550.43f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 86 + ) + LocalObject( + 768, + VehicleSpawnPad.Constructor(Vector3(4643.917f, 3539.875f, 67.26706f), mb_pad_creation, Vector3(0, 0, 224)), + owning_building_guid = 86, + terminal_guid = 1156 + ) } Building13() def Building13(): Unit = { // Name: Esamir_Vehicle2 Type: vt_vehicle GUID: 87, MapID: 13 - LocalBuilding("Esamir_Vehicle2", 87, 13, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4782f, 3680f, 68.73806f), Vector3(0f, 0f, 45f), vt_vehicle))) - LocalObject(1157, Terminal.Constructor(Vector3(4771.758f, 3669.747f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 87) - LocalObject(769, VehicleSpawnPad.Constructor(Vector3(4782.085f, 3680.123f, 67.26706f), mb_pad_creation, Vector3(0, 0, 45)), owning_building_guid = 87, terminal_guid = 1157) + LocalBuilding( + "Esamir_Vehicle2", + 87, + 13, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(4782f, 3680f, 68.73806f), Vector3(0f, 0f, 45f), vt_vehicle) + ) + ) + LocalObject( + 1157, + Terminal.Constructor(Vector3(4771.758f, 3669.747f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 87 + ) + LocalObject( + 769, + VehicleSpawnPad.Constructor(Vector3(4782.085f, 3680.123f, 67.26706f), mb_pad_creation, Vector3(0, 0, 45)), + owning_building_guid = 87, + terminal_guid = 1157 + ) } Building8() def Building8(): Unit = { // Name: Esamir_Vehicle6 Type: vt_vehicle GUID: 88, MapID: 8 - LocalBuilding("Esamir_Vehicle6", 88, 8, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4834f, 3276f, 68.73806f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1158, Terminal.Constructor(Vector3(4823.747f, 3286.242f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 88) - LocalObject(770, VehicleSpawnPad.Constructor(Vector3(4834.123f, 3275.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 88, terminal_guid = 1158) + LocalBuilding( + "Esamir_Vehicle6", + 88, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4834f, 3276f, 68.73806f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1158, + Terminal.Constructor(Vector3(4823.747f, 3286.242f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 88 + ) + LocalObject( + 770, + VehicleSpawnPad.Constructor(Vector3(4834.123f, 3275.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 88, + terminal_guid = 1158 + ) } Building9() def Building9(): Unit = { // Name: Esamir_Vehicle5 Type: vt_vehicle GUID: 89, MapID: 9 - LocalBuilding("Esamir_Vehicle5", 89, 9, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4878f, 3378f, 68.73806f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1159, Terminal.Constructor(Vector3(4867.747f, 3388.242f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 89) - LocalObject(771, VehicleSpawnPad.Constructor(Vector3(4878.123f, 3377.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 89, terminal_guid = 1159) + LocalBuilding( + "Esamir_Vehicle5", + 89, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4878f, 3378f, 68.73806f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1159, + Terminal.Constructor(Vector3(4867.747f, 3388.242f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 89 + ) + LocalObject( + 771, + VehicleSpawnPad.Constructor(Vector3(4878.123f, 3377.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 89, + terminal_guid = 1159 + ) } Building10() def Building10(): Unit = { // Name: Esamir_Vehicle4 Type: vt_vehicle GUID: 90, MapID: 10 - LocalBuilding("Esamir_Vehicle4", 90, 10, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(4948f, 3446f, 68.73806f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1160, Terminal.Constructor(Vector3(4937.747f, 3456.242f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 90) - LocalObject(772, VehicleSpawnPad.Constructor(Vector3(4948.123f, 3445.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 90, terminal_guid = 1160) + LocalBuilding( + "Esamir_Vehicle4", + 90, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(4948f, 3446f, 68.73806f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1160, + Terminal.Constructor(Vector3(4937.747f, 3456.242f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 90 + ) + LocalObject( + 772, + VehicleSpawnPad.Constructor(Vector3(4948.123f, 3445.915f, 67.26706f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 90, + terminal_guid = 1160 + ) } Building11() def Building11(): Unit = { // Name: Esamir_Vehicle3 Type: vt_vehicle GUID: 91, MapID: 11 - LocalBuilding("Esamir_Vehicle3", 91, 11, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5048f, 3492f, 68.73806f), Vector3(0f, 0f, 314f), vt_vehicle))) - LocalObject(1161, Terminal.Constructor(Vector3(5037.927f, 3502.419f, 71.42506f), ground_vehicle_terminal), owning_building_guid = 91) - LocalObject(773, VehicleSpawnPad.Constructor(Vector3(5048.122f, 3491.913f, 67.26706f), mb_pad_creation, Vector3(0, 0, 136)), owning_building_guid = 91, terminal_guid = 1161) + LocalBuilding( + "Esamir_Vehicle3", + 91, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5048f, 3492f, 68.73806f), + Vector3(0f, 0f, 314f), + vt_vehicle + ) + ) + ) + LocalObject( + 1161, + Terminal.Constructor(Vector3(5037.927f, 3502.419f, 71.42506f), ground_vehicle_terminal), + owning_building_guid = 91 + ) + LocalObject( + 773, + VehicleSpawnPad.Constructor(Vector3(5048.122f, 3491.913f, 67.26706f), mb_pad_creation, Vector3(0, 0, 136)), + owning_building_guid = 91, + terminal_guid = 1161 + ) } Building1() def Building1(): Unit = { // Name: WG_NCSanc_to_Cyssor Type: warpgate GUID: 92, MapID: 1 - LocalBuilding("WG_NCSanc_to_Cyssor", 92, 1, FoundationBuilder(WarpGate.Structure(Vector3(2190f, 5954f, 46.85717f)))) + LocalBuilding( + "WG_NCSanc_to_Cyssor", + 92, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(2190f, 5954f, 46.85717f))) + ) } Building2() def Building2(): Unit = { // Name: WG_NCSanc_to_Amerish Type: warpgate GUID: 93, MapID: 2 - LocalBuilding("WG_NCSanc_to_Amerish", 93, 2, FoundationBuilder(WarpGate.Structure(Vector3(4156f, 6490f, 43.88584f)))) + LocalBuilding( + "WG_NCSanc_to_Amerish", + 93, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(4156f, 6490f, 43.88584f))) + ) } Building3() def Building3(): Unit = { // Name: WG_NCSanc_to_Esamir Type: warpgate GUID: 94, MapID: 3 - LocalBuilding("WG_NCSanc_to_Esamir", 94, 3, FoundationBuilder(WarpGate.Structure(Vector3(5174f, 3174f, 56.06128f)))) + LocalBuilding( + "WG_NCSanc_to_Esamir", + 94, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(5174f, 3174f, 56.06128f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(4, ProximityTerminal.Constructor(Vector3(2215.26f, 5474.73f, 65.38f), repair_silo), owning_building_guid = 0) - LocalObject(5, Terminal.Constructor(Vector3(2215.26f, 5474.73f, 65.38f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(8, ProximityTerminal.Constructor(Vector3(2300.3f, 5585.29f, 65.29f), repair_silo), owning_building_guid = 0) - LocalObject(9, Terminal.Constructor(Vector3(2300.3f, 5585.29f, 65.29f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(12, ProximityTerminal.Constructor(Vector3(4109.72f, 6006.86f, 44.07f), repair_silo), owning_building_guid = 0) - LocalObject(13, Terminal.Constructor(Vector3(4109.72f, 6006.86f, 44.07f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(16, ProximityTerminal.Constructor(Vector3(4194.53f, 6116.86f, 44.19f), repair_silo), owning_building_guid = 0) - LocalObject(17, Terminal.Constructor(Vector3(4194.53f, 6116.86f, 44.19f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(20, ProximityTerminal.Constructor(Vector3(4800.67f, 3580.72f, 68.85f), repair_silo), owning_building_guid = 0) - LocalObject(21, Terminal.Constructor(Vector3(4800.67f, 3580.72f, 68.85f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(24, ProximityTerminal.Constructor(Vector3(4820.75f, 3442.89f, 68.87f), repair_silo), owning_building_guid = 0) - LocalObject(25, Terminal.Constructor(Vector3(4820.75f, 3442.89f, 68.87f), ground_rearm_terminal), owning_building_guid = 0) + LocalObject( + 4, + ProximityTerminal.Constructor(Vector3(2215.26f, 5474.73f, 65.38f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 5, + Terminal.Constructor(Vector3(2215.26f, 5474.73f, 65.38f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 8, + ProximityTerminal.Constructor(Vector3(2300.3f, 5585.29f, 65.29f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 9, + Terminal.Constructor(Vector3(2300.3f, 5585.29f, 65.29f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 12, + ProximityTerminal.Constructor(Vector3(4109.72f, 6006.86f, 44.07f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 13, + Terminal.Constructor(Vector3(4109.72f, 6006.86f, 44.07f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 16, + ProximityTerminal.Constructor(Vector3(4194.53f, 6116.86f, 44.19f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 17, + Terminal.Constructor(Vector3(4194.53f, 6116.86f, 44.19f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 20, + ProximityTerminal.Constructor(Vector3(4800.67f, 3580.72f, 68.85f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 21, + Terminal.Constructor(Vector3(4800.67f, 3580.72f, 68.85f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 24, + ProximityTerminal.Constructor(Vector3(4820.75f, 3442.89f, 68.87f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 25, + Terminal.Constructor(Vector3(4820.75f, 3442.89f, 68.87f), ground_rearm_terminal), + owning_building_guid = 0 + ) } - def Lattice(): Unit = { - } + def Lattice(): Unit = {} Lattice() diff --git a/pslogin/src/main/scala/zonemaps/Map12.scala b/pslogin/src/main/scala/zonemaps/Map12.scala index 38971357..f9203a99 100644 --- a/pslogin/src/main/scala/zonemaps/Map12.scala +++ b/pslogin/src/main/scala/zonemaps/Map12.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -21,7 +21,19 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) Building4() def Building4(): Unit = { // Name: Hart_Ishundar Type: orbital_building_tr GUID: 1, MapID: 4 - LocalBuilding("Hart_Ishundar", 1, 4, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2922f, 5230f, 35.99899f), Vector3(0f, 0f, 90f), orbital_building_tr))) + LocalBuilding( + "Hart_Ishundar", + 1, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2922f, 5230f, 35.99899f), + Vector3(0f, 0f, 90f), + orbital_building_tr + ) + ) + ) LocalObject(382, Door.Constructor(Vector3(2842f, 5217.99f, 40.10499f)), owning_building_guid = 1) LocalObject(383, Door.Constructor(Vector3(2842f, 5241.99f, 40.10499f)), owning_building_guid = 1) LocalObject(390, Door.Constructor(Vector3(3002f, 5218.01f, 40.10499f)), owning_building_guid = 1) @@ -50,84 +62,352 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(705, Locker.Constructor(Vector3(2923.934f, 5281.815f, 53.10899f)), owning_building_guid = 1) LocalObject(706, Locker.Constructor(Vector3(2925.276f, 5281.815f, 53.10899f)), owning_building_guid = 1) LocalObject(707, Locker.Constructor(Vector3(2926.64f, 5281.815f, 53.10899f)), owning_building_guid = 1) - LocalObject(186, Terminal.Constructor(Vector3(2843.212f, 5222.806f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(187, Terminal.Constructor(Vector3(2843.212f, 5224.713f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(188, Terminal.Constructor(Vector3(2843.212f, 5226.644f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(189, Terminal.Constructor(Vector3(2843.296f, 5233.669f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(190, Terminal.Constructor(Vector3(2843.296f, 5235.576f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(191, Terminal.Constructor(Vector3(2843.296f, 5237.507f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(192, Terminal.Constructor(Vector3(2854.556f, 5214.06f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(193, Terminal.Constructor(Vector3(2854.556f, 5217.963f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(194, Terminal.Constructor(Vector3(2854.556f, 5221.801f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(195, Terminal.Constructor(Vector3(2854.628f, 5238.44f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(196, Terminal.Constructor(Vector3(2854.628f, 5242.319f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(197, Terminal.Constructor(Vector3(2854.628f, 5246.191f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(210, Terminal.Constructor(Vector3(2989.383f, 5213.869f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(211, Terminal.Constructor(Vector3(2989.383f, 5217.741f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(212, Terminal.Constructor(Vector3(2989.383f, 5221.619f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(213, Terminal.Constructor(Vector3(2989.371f, 5238.203f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(214, Terminal.Constructor(Vector3(2989.371f, 5242.041f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(215, Terminal.Constructor(Vector3(2989.371f, 5245.944f, 48.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(216, Terminal.Constructor(Vector3(3000.715f, 5222.552f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(217, Terminal.Constructor(Vector3(3000.715f, 5224.483f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(218, Terminal.Constructor(Vector3(3000.715f, 5226.391f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(219, Terminal.Constructor(Vector3(3000.715f, 5233.36f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(220, Terminal.Constructor(Vector3(3000.715f, 5235.291f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(221, Terminal.Constructor(Vector3(3000.715f, 5237.198f, 38.49899f), cert_terminal), owning_building_guid = 1) - LocalObject(829, Terminal.Constructor(Vector3(2846.069f, 5228.397f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(830, Terminal.Constructor(Vector3(2846.09f, 5231.595f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(831, Terminal.Constructor(Vector3(2849.959f, 5228.397f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(832, Terminal.Constructor(Vector3(2850.104f, 5231.595f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(836, Terminal.Constructor(Vector3(2864.485f, 5223.262f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(837, Terminal.Constructor(Vector3(2864.485f, 5226.183f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(838, Terminal.Constructor(Vector3(2864.478f, 5233.834f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(839, Terminal.Constructor(Vector3(2864.478f, 5236.735f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(840, Terminal.Constructor(Vector3(2911.52f, 5279.783f, 54.79199f), order_terminal), owning_building_guid = 1) - LocalObject(841, Terminal.Constructor(Vector3(2914f, 5279.783f, 54.79199f), order_terminal), owning_building_guid = 1) - LocalObject(850, Terminal.Constructor(Vector3(2930f, 5279.783f, 54.79199f), order_terminal), owning_building_guid = 1) - LocalObject(851, Terminal.Constructor(Vector3(2932.39f, 5279.783f, 54.79199f), order_terminal), owning_building_guid = 1) - LocalObject(858, Terminal.Constructor(Vector3(2979.508f, 5223.236f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(859, Terminal.Constructor(Vector3(2979.508f, 5226.137f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(860, Terminal.Constructor(Vector3(2979.505f, 5233.817f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(861, Terminal.Constructor(Vector3(2979.505f, 5236.738f, 49.79599f), order_terminal), owning_building_guid = 1) - LocalObject(862, Terminal.Constructor(Vector3(2993.908f, 5228.397f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(863, Terminal.Constructor(Vector3(2993.968f, 5231.592f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(865, Terminal.Constructor(Vector3(2997.858f, 5231.592f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(866, Terminal.Constructor(Vector3(2997.922f, 5228.397f, 39.79599f), order_terminal), owning_building_guid = 1) - LocalObject(796, ProximityTerminal.Constructor(Vector3(2851.311f, 5207.145f, 38.48999f), medical_terminal), owning_building_guid = 1) - LocalObject(797, ProximityTerminal.Constructor(Vector3(2851.333f, 5252.849f, 38.48999f), medical_terminal), owning_building_guid = 1) - LocalObject(800, ProximityTerminal.Constructor(Vector3(2992.693f, 5207.145f, 38.48999f), medical_terminal), owning_building_guid = 1) - LocalObject(801, ProximityTerminal.Constructor(Vector3(2992.631f, 5252.849f, 38.48999f), medical_terminal), owning_building_guid = 1) - LocalObject(536, ImplantTerminalMech.Constructor(Vector3(2857.677f, 5251.729f, 38.49899f)), owning_building_guid = 1) - LocalObject(512, Terminal.Constructor(Vector3(2857.677f, 5251.711f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 186, + Terminal.Constructor(Vector3(2843.212f, 5222.806f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(2843.212f, 5224.713f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(2843.212f, 5226.644f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(2843.296f, 5233.669f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 190, + Terminal.Constructor(Vector3(2843.296f, 5235.576f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 191, + Terminal.Constructor(Vector3(2843.296f, 5237.507f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 192, + Terminal.Constructor(Vector3(2854.556f, 5214.06f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 193, + Terminal.Constructor(Vector3(2854.556f, 5217.963f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 194, + Terminal.Constructor(Vector3(2854.556f, 5221.801f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 195, + Terminal.Constructor(Vector3(2854.628f, 5238.44f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 196, + Terminal.Constructor(Vector3(2854.628f, 5242.319f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 197, + Terminal.Constructor(Vector3(2854.628f, 5246.191f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 210, + Terminal.Constructor(Vector3(2989.383f, 5213.869f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(2989.383f, 5217.741f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(2989.383f, 5221.619f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(2989.371f, 5238.203f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(2989.371f, 5242.041f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(2989.371f, 5245.944f, 48.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(3000.715f, 5222.552f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 217, + Terminal.Constructor(Vector3(3000.715f, 5224.483f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 218, + Terminal.Constructor(Vector3(3000.715f, 5226.391f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 219, + Terminal.Constructor(Vector3(3000.715f, 5233.36f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 220, + Terminal.Constructor(Vector3(3000.715f, 5235.291f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 221, + Terminal.Constructor(Vector3(3000.715f, 5237.198f, 38.49899f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 829, + Terminal.Constructor(Vector3(2846.069f, 5228.397f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 830, + Terminal.Constructor(Vector3(2846.09f, 5231.595f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 831, + Terminal.Constructor(Vector3(2849.959f, 5228.397f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 832, + Terminal.Constructor(Vector3(2850.104f, 5231.595f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 836, + Terminal.Constructor(Vector3(2864.485f, 5223.262f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 837, + Terminal.Constructor(Vector3(2864.485f, 5226.183f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 838, + Terminal.Constructor(Vector3(2864.478f, 5233.834f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 839, + Terminal.Constructor(Vector3(2864.478f, 5236.735f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 840, + Terminal.Constructor(Vector3(2911.52f, 5279.783f, 54.79199f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 841, + Terminal.Constructor(Vector3(2914f, 5279.783f, 54.79199f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(2930f, 5279.783f, 54.79199f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(2932.39f, 5279.783f, 54.79199f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(2979.508f, 5223.236f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(2979.508f, 5226.137f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(2979.505f, 5233.817f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(2979.505f, 5236.738f, 49.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(2993.908f, 5228.397f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 863, + Terminal.Constructor(Vector3(2993.968f, 5231.592f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 865, + Terminal.Constructor(Vector3(2997.858f, 5231.592f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 866, + Terminal.Constructor(Vector3(2997.922f, 5228.397f, 39.79599f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 796, + ProximityTerminal.Constructor(Vector3(2851.311f, 5207.145f, 38.48999f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 797, + ProximityTerminal.Constructor(Vector3(2851.333f, 5252.849f, 38.48999f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 800, + ProximityTerminal.Constructor(Vector3(2992.693f, 5207.145f, 38.48999f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 801, + ProximityTerminal.Constructor(Vector3(2992.631f, 5252.849f, 38.48999f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 536, + ImplantTerminalMech.Constructor(Vector3(2857.677f, 5251.729f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 512, + Terminal.Constructor(Vector3(2857.677f, 5251.711f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(536, 512) - LocalObject(537, ImplantTerminalMech.Constructor(Vector3(2857.702f, 5208.285f, 38.49899f)), owning_building_guid = 1) - LocalObject(513, Terminal.Constructor(Vector3(2857.702f, 5208.303f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 537, + ImplantTerminalMech.Constructor(Vector3(2857.702f, 5208.285f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 513, + Terminal.Constructor(Vector3(2857.702f, 5208.303f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(537, 513) - LocalObject(538, ImplantTerminalMech.Constructor(Vector3(2863.005f, 5208.285f, 38.49899f)), owning_building_guid = 1) - LocalObject(514, Terminal.Constructor(Vector3(2863.005f, 5208.303f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 538, + ImplantTerminalMech.Constructor(Vector3(2863.005f, 5208.285f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 514, + Terminal.Constructor(Vector3(2863.005f, 5208.303f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(538, 514) - LocalObject(539, ImplantTerminalMech.Constructor(Vector3(2863.084f, 5251.729f, 38.49899f)), owning_building_guid = 1) - LocalObject(515, Terminal.Constructor(Vector3(2863.084f, 5251.711f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 539, + ImplantTerminalMech.Constructor(Vector3(2863.084f, 5251.729f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 515, + Terminal.Constructor(Vector3(2863.084f, 5251.711f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(539, 515) - LocalObject(544, ImplantTerminalMech.Constructor(Vector3(2980.927f, 5208.281f, 38.49899f)), owning_building_guid = 1) - LocalObject(520, Terminal.Constructor(Vector3(2980.927f, 5208.299f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 544, + ImplantTerminalMech.Constructor(Vector3(2980.927f, 5208.281f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 520, + Terminal.Constructor(Vector3(2980.927f, 5208.299f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(544, 520) - LocalObject(545, ImplantTerminalMech.Constructor(Vector3(2980.922f, 5251.719f, 38.49899f)), owning_building_guid = 1) - LocalObject(521, Terminal.Constructor(Vector3(2980.922f, 5251.701f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 545, + ImplantTerminalMech.Constructor(Vector3(2980.922f, 5251.719f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 521, + Terminal.Constructor(Vector3(2980.922f, 5251.701f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(545, 521) - LocalObject(546, ImplantTerminalMech.Constructor(Vector3(2986.225f, 5251.719f, 38.49899f)), owning_building_guid = 1) - LocalObject(522, Terminal.Constructor(Vector3(2986.225f, 5251.701f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 546, + ImplantTerminalMech.Constructor(Vector3(2986.225f, 5251.719f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 522, + Terminal.Constructor(Vector3(2986.225f, 5251.701f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(546, 522) - LocalObject(547, ImplantTerminalMech.Constructor(Vector3(2986.335f, 5208.281f, 38.49899f)), owning_building_guid = 1) - LocalObject(523, Terminal.Constructor(Vector3(2986.335f, 5208.299f, 38.49899f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 547, + ImplantTerminalMech.Constructor(Vector3(2986.335f, 5208.281f, 38.49899f)), + owning_building_guid = 1 + ) + LocalObject( + 523, + Terminal.Constructor(Vector3(2986.335f, 5208.299f, 38.49899f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(547, 523) } Building40() def Building40(): Unit = { // Name: Hart_Cyssor Type: orbital_building_tr GUID: 2, MapID: 40 - LocalBuilding("Hart_Cyssor", 2, 40, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3006f, 2984f, 34.91934f), Vector3(0f, 0f, 90f), orbital_building_tr))) + LocalBuilding( + "Hart_Cyssor", + 2, + 40, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3006f, 2984f, 34.91934f), + Vector3(0f, 0f, 90f), + orbital_building_tr + ) + ) + ) LocalObject(387, Door.Constructor(Vector3(2926f, 2971.99f, 39.02534f)), owning_building_guid = 2) LocalObject(388, Door.Constructor(Vector3(2926f, 2995.99f, 39.02534f)), owning_building_guid = 2) LocalObject(394, Door.Constructor(Vector3(3086f, 2972.01f, 39.02534f)), owning_building_guid = 2) @@ -156,84 +436,352 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(713, Locker.Constructor(Vector3(3007.934f, 3035.815f, 52.02934f)), owning_building_guid = 2) LocalObject(714, Locker.Constructor(Vector3(3009.276f, 3035.815f, 52.02934f)), owning_building_guid = 2) LocalObject(715, Locker.Constructor(Vector3(3010.64f, 3035.815f, 52.02934f)), owning_building_guid = 2) - LocalObject(198, Terminal.Constructor(Vector3(2927.212f, 2976.806f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(199, Terminal.Constructor(Vector3(2927.212f, 2978.713f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(200, Terminal.Constructor(Vector3(2927.212f, 2980.644f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(201, Terminal.Constructor(Vector3(2927.296f, 2987.669f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(202, Terminal.Constructor(Vector3(2927.296f, 2989.576f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(203, Terminal.Constructor(Vector3(2927.296f, 2991.507f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(204, Terminal.Constructor(Vector3(2938.556f, 2968.06f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(205, Terminal.Constructor(Vector3(2938.556f, 2971.963f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(206, Terminal.Constructor(Vector3(2938.556f, 2975.801f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(207, Terminal.Constructor(Vector3(2938.628f, 2992.44f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(208, Terminal.Constructor(Vector3(2938.628f, 2996.319f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(209, Terminal.Constructor(Vector3(2938.628f, 3000.191f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(222, Terminal.Constructor(Vector3(3073.383f, 2967.869f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(223, Terminal.Constructor(Vector3(3073.383f, 2971.741f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(224, Terminal.Constructor(Vector3(3073.383f, 2975.619f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(225, Terminal.Constructor(Vector3(3073.371f, 2992.203f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(226, Terminal.Constructor(Vector3(3073.371f, 2996.041f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(227, Terminal.Constructor(Vector3(3073.371f, 2999.944f, 47.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(228, Terminal.Constructor(Vector3(3084.715f, 2976.552f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(229, Terminal.Constructor(Vector3(3084.715f, 2978.483f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(230, Terminal.Constructor(Vector3(3084.715f, 2980.391f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(231, Terminal.Constructor(Vector3(3084.715f, 2987.36f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(232, Terminal.Constructor(Vector3(3084.715f, 2989.291f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(233, Terminal.Constructor(Vector3(3084.715f, 2991.198f, 37.41934f), cert_terminal), owning_building_guid = 2) - LocalObject(848, Terminal.Constructor(Vector3(2930.069f, 2982.397f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(849, Terminal.Constructor(Vector3(2930.09f, 2985.595f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(852, Terminal.Constructor(Vector3(2933.959f, 2982.397f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(853, Terminal.Constructor(Vector3(2934.104f, 2985.595f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(854, Terminal.Constructor(Vector3(2948.485f, 2977.262f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(855, Terminal.Constructor(Vector3(2948.485f, 2980.183f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(856, Terminal.Constructor(Vector3(2948.478f, 2987.834f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(857, Terminal.Constructor(Vector3(2948.478f, 2990.735f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(864, Terminal.Constructor(Vector3(2995.52f, 3033.783f, 53.71234f), order_terminal), owning_building_guid = 2) - LocalObject(867, Terminal.Constructor(Vector3(2998f, 3033.783f, 53.71234f), order_terminal), owning_building_guid = 2) - LocalObject(868, Terminal.Constructor(Vector3(3014f, 3033.783f, 53.71234f), order_terminal), owning_building_guid = 2) - LocalObject(869, Terminal.Constructor(Vector3(3016.39f, 3033.783f, 53.71234f), order_terminal), owning_building_guid = 2) - LocalObject(870, Terminal.Constructor(Vector3(3063.508f, 2977.236f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(871, Terminal.Constructor(Vector3(3063.508f, 2980.137f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(872, Terminal.Constructor(Vector3(3063.505f, 2987.817f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(873, Terminal.Constructor(Vector3(3063.505f, 2990.738f, 48.71634f), order_terminal), owning_building_guid = 2) - LocalObject(878, Terminal.Constructor(Vector3(3077.908f, 2982.397f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(879, Terminal.Constructor(Vector3(3077.968f, 2985.592f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(882, Terminal.Constructor(Vector3(3081.858f, 2985.592f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(883, Terminal.Constructor(Vector3(3081.922f, 2982.397f, 38.71634f), order_terminal), owning_building_guid = 2) - LocalObject(798, ProximityTerminal.Constructor(Vector3(2935.311f, 2961.145f, 37.41034f), medical_terminal), owning_building_guid = 2) - LocalObject(799, ProximityTerminal.Constructor(Vector3(2935.333f, 3006.849f, 37.41034f), medical_terminal), owning_building_guid = 2) - LocalObject(802, ProximityTerminal.Constructor(Vector3(3076.693f, 2961.145f, 37.41034f), medical_terminal), owning_building_guid = 2) - LocalObject(803, ProximityTerminal.Constructor(Vector3(3076.631f, 3006.849f, 37.41034f), medical_terminal), owning_building_guid = 2) - LocalObject(540, ImplantTerminalMech.Constructor(Vector3(2941.677f, 3005.729f, 37.41934f)), owning_building_guid = 2) - LocalObject(516, Terminal.Constructor(Vector3(2941.677f, 3005.711f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 198, + Terminal.Constructor(Vector3(2927.212f, 2976.806f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 199, + Terminal.Constructor(Vector3(2927.212f, 2978.713f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 200, + Terminal.Constructor(Vector3(2927.212f, 2980.644f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 201, + Terminal.Constructor(Vector3(2927.296f, 2987.669f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 202, + Terminal.Constructor(Vector3(2927.296f, 2989.576f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 203, + Terminal.Constructor(Vector3(2927.296f, 2991.507f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(2938.556f, 2968.06f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(2938.556f, 2971.963f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(2938.556f, 2975.801f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(2938.628f, 2992.44f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(2938.628f, 2996.319f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(2938.628f, 3000.191f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 222, + Terminal.Constructor(Vector3(3073.383f, 2967.869f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 223, + Terminal.Constructor(Vector3(3073.383f, 2971.741f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(3073.383f, 2975.619f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(3073.371f, 2992.203f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(3073.371f, 2996.041f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 227, + Terminal.Constructor(Vector3(3073.371f, 2999.944f, 47.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(3084.715f, 2976.552f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(3084.715f, 2978.483f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 230, + Terminal.Constructor(Vector3(3084.715f, 2980.391f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(3084.715f, 2987.36f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(3084.715f, 2989.291f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(3084.715f, 2991.198f, 37.41934f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(2930.069f, 2982.397f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 849, + Terminal.Constructor(Vector3(2930.09f, 2985.595f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(2933.959f, 2982.397f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(2934.104f, 2985.595f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(2948.485f, 2977.262f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(2948.485f, 2980.183f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 856, + Terminal.Constructor(Vector3(2948.478f, 2987.834f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(2948.478f, 2990.735f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(2995.52f, 3033.783f, 53.71234f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 867, + Terminal.Constructor(Vector3(2998f, 3033.783f, 53.71234f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 868, + Terminal.Constructor(Vector3(3014f, 3033.783f, 53.71234f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 869, + Terminal.Constructor(Vector3(3016.39f, 3033.783f, 53.71234f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 870, + Terminal.Constructor(Vector3(3063.508f, 2977.236f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 871, + Terminal.Constructor(Vector3(3063.508f, 2980.137f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 872, + Terminal.Constructor(Vector3(3063.505f, 2987.817f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 873, + Terminal.Constructor(Vector3(3063.505f, 2990.738f, 48.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 878, + Terminal.Constructor(Vector3(3077.908f, 2982.397f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 879, + Terminal.Constructor(Vector3(3077.968f, 2985.592f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 882, + Terminal.Constructor(Vector3(3081.858f, 2985.592f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 883, + Terminal.Constructor(Vector3(3081.922f, 2982.397f, 38.71634f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 798, + ProximityTerminal.Constructor(Vector3(2935.311f, 2961.145f, 37.41034f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 799, + ProximityTerminal.Constructor(Vector3(2935.333f, 3006.849f, 37.41034f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 802, + ProximityTerminal.Constructor(Vector3(3076.693f, 2961.145f, 37.41034f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 803, + ProximityTerminal.Constructor(Vector3(3076.631f, 3006.849f, 37.41034f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 540, + ImplantTerminalMech.Constructor(Vector3(2941.677f, 3005.729f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 516, + Terminal.Constructor(Vector3(2941.677f, 3005.711f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(540, 516) - LocalObject(541, ImplantTerminalMech.Constructor(Vector3(2941.702f, 2962.285f, 37.41934f)), owning_building_guid = 2) - LocalObject(517, Terminal.Constructor(Vector3(2941.702f, 2962.303f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 541, + ImplantTerminalMech.Constructor(Vector3(2941.702f, 2962.285f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 517, + Terminal.Constructor(Vector3(2941.702f, 2962.303f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(541, 517) - LocalObject(542, ImplantTerminalMech.Constructor(Vector3(2947.005f, 2962.285f, 37.41934f)), owning_building_guid = 2) - LocalObject(518, Terminal.Constructor(Vector3(2947.005f, 2962.303f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 542, + ImplantTerminalMech.Constructor(Vector3(2947.005f, 2962.285f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 518, + Terminal.Constructor(Vector3(2947.005f, 2962.303f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(542, 518) - LocalObject(543, ImplantTerminalMech.Constructor(Vector3(2947.084f, 3005.729f, 37.41934f)), owning_building_guid = 2) - LocalObject(519, Terminal.Constructor(Vector3(2947.084f, 3005.711f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 543, + ImplantTerminalMech.Constructor(Vector3(2947.084f, 3005.729f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 519, + Terminal.Constructor(Vector3(2947.084f, 3005.711f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(543, 519) - LocalObject(548, ImplantTerminalMech.Constructor(Vector3(3064.927f, 2962.281f, 37.41934f)), owning_building_guid = 2) - LocalObject(524, Terminal.Constructor(Vector3(3064.927f, 2962.299f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 548, + ImplantTerminalMech.Constructor(Vector3(3064.927f, 2962.281f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 524, + Terminal.Constructor(Vector3(3064.927f, 2962.299f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(548, 524) - LocalObject(549, ImplantTerminalMech.Constructor(Vector3(3064.922f, 3005.719f, 37.41934f)), owning_building_guid = 2) - LocalObject(525, Terminal.Constructor(Vector3(3064.922f, 3005.701f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 549, + ImplantTerminalMech.Constructor(Vector3(3064.922f, 3005.719f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 525, + Terminal.Constructor(Vector3(3064.922f, 3005.701f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(549, 525) - LocalObject(550, ImplantTerminalMech.Constructor(Vector3(3070.225f, 3005.719f, 37.41934f)), owning_building_guid = 2) - LocalObject(526, Terminal.Constructor(Vector3(3070.225f, 3005.701f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 550, + ImplantTerminalMech.Constructor(Vector3(3070.225f, 3005.719f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 526, + Terminal.Constructor(Vector3(3070.225f, 3005.701f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(550, 526) - LocalObject(551, ImplantTerminalMech.Constructor(Vector3(3070.335f, 2962.281f, 37.41934f)), owning_building_guid = 2) - LocalObject(527, Terminal.Constructor(Vector3(3070.335f, 2962.299f, 37.41934f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 551, + ImplantTerminalMech.Constructor(Vector3(3070.335f, 2962.281f, 37.41934f)), + owning_building_guid = 2 + ) + LocalObject( + 527, + Terminal.Constructor(Vector3(3070.335f, 2962.299f, 37.41934f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(551, 527) } Building22() def Building22(): Unit = { // Name: Hart_Forseral Type: orbital_building_tr GUID: 3, MapID: 22 - LocalBuilding("Hart_Forseral", 3, 22, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5232f, 3908f, 35.9291f), Vector3(0f, 0f, 90f), orbital_building_tr))) + LocalBuilding( + "Hart_Forseral", + 3, + 22, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5232f, 3908f, 35.9291f), + Vector3(0f, 0f, 90f), + orbital_building_tr + ) + ) + ) LocalObject(402, Door.Constructor(Vector3(5152f, 3895.99f, 40.0351f)), owning_building_guid = 3) LocalObject(403, Door.Constructor(Vector3(5152f, 3919.99f, 40.0351f)), owning_building_guid = 3) LocalObject(406, Door.Constructor(Vector3(5312f, 3896.01f, 40.0351f)), owning_building_guid = 3) @@ -262,95 +810,382 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(721, Locker.Constructor(Vector3(5233.934f, 3959.815f, 53.0391f)), owning_building_guid = 3) LocalObject(722, Locker.Constructor(Vector3(5235.276f, 3959.815f, 53.0391f)), owning_building_guid = 3) LocalObject(723, Locker.Constructor(Vector3(5236.64f, 3959.815f, 53.0391f)), owning_building_guid = 3) - LocalObject(234, Terminal.Constructor(Vector3(5153.212f, 3900.806f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(235, Terminal.Constructor(Vector3(5153.212f, 3902.713f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(236, Terminal.Constructor(Vector3(5153.212f, 3904.644f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(237, Terminal.Constructor(Vector3(5153.296f, 3911.669f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(238, Terminal.Constructor(Vector3(5153.296f, 3913.576f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(239, Terminal.Constructor(Vector3(5153.296f, 3915.507f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(240, Terminal.Constructor(Vector3(5164.556f, 3892.06f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(241, Terminal.Constructor(Vector3(5164.556f, 3895.963f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(242, Terminal.Constructor(Vector3(5164.556f, 3899.801f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(243, Terminal.Constructor(Vector3(5164.628f, 3916.44f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(244, Terminal.Constructor(Vector3(5164.628f, 3920.319f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(245, Terminal.Constructor(Vector3(5164.628f, 3924.191f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(246, Terminal.Constructor(Vector3(5299.383f, 3891.869f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(247, Terminal.Constructor(Vector3(5299.383f, 3895.741f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(248, Terminal.Constructor(Vector3(5299.383f, 3899.619f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(249, Terminal.Constructor(Vector3(5299.371f, 3916.203f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(250, Terminal.Constructor(Vector3(5299.371f, 3920.041f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(251, Terminal.Constructor(Vector3(5299.371f, 3923.944f, 48.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(252, Terminal.Constructor(Vector3(5310.715f, 3900.552f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(253, Terminal.Constructor(Vector3(5310.715f, 3902.483f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(254, Terminal.Constructor(Vector3(5310.715f, 3904.391f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(255, Terminal.Constructor(Vector3(5310.715f, 3911.36f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(256, Terminal.Constructor(Vector3(5310.715f, 3913.291f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(257, Terminal.Constructor(Vector3(5310.715f, 3915.198f, 38.4291f), cert_terminal), owning_building_guid = 3) - LocalObject(920, Terminal.Constructor(Vector3(5156.069f, 3906.397f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(921, Terminal.Constructor(Vector3(5156.09f, 3909.595f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(922, Terminal.Constructor(Vector3(5159.959f, 3906.397f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(923, Terminal.Constructor(Vector3(5160.104f, 3909.595f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(924, Terminal.Constructor(Vector3(5174.485f, 3901.262f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(925, Terminal.Constructor(Vector3(5174.485f, 3904.183f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(926, Terminal.Constructor(Vector3(5174.478f, 3911.834f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(927, Terminal.Constructor(Vector3(5174.478f, 3914.735f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(928, Terminal.Constructor(Vector3(5221.52f, 3957.783f, 54.7221f), order_terminal), owning_building_guid = 3) - LocalObject(929, Terminal.Constructor(Vector3(5224f, 3957.783f, 54.7221f), order_terminal), owning_building_guid = 3) - LocalObject(936, Terminal.Constructor(Vector3(5240f, 3957.783f, 54.7221f), order_terminal), owning_building_guid = 3) - LocalObject(937, Terminal.Constructor(Vector3(5242.39f, 3957.783f, 54.7221f), order_terminal), owning_building_guid = 3) - LocalObject(938, Terminal.Constructor(Vector3(5289.508f, 3901.236f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(939, Terminal.Constructor(Vector3(5289.508f, 3904.137f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(940, Terminal.Constructor(Vector3(5289.505f, 3911.817f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(941, Terminal.Constructor(Vector3(5289.505f, 3914.738f, 49.7261f), order_terminal), owning_building_guid = 3) - LocalObject(942, Terminal.Constructor(Vector3(5303.908f, 3906.397f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(943, Terminal.Constructor(Vector3(5303.968f, 3909.592f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(944, Terminal.Constructor(Vector3(5307.858f, 3909.592f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(945, Terminal.Constructor(Vector3(5307.922f, 3906.397f, 39.7261f), order_terminal), owning_building_guid = 3) - LocalObject(804, ProximityTerminal.Constructor(Vector3(5161.311f, 3885.145f, 38.4201f), medical_terminal), owning_building_guid = 3) - LocalObject(805, ProximityTerminal.Constructor(Vector3(5161.333f, 3930.849f, 38.4201f), medical_terminal), owning_building_guid = 3) - LocalObject(806, ProximityTerminal.Constructor(Vector3(5302.693f, 3885.145f, 38.4201f), medical_terminal), owning_building_guid = 3) - LocalObject(807, ProximityTerminal.Constructor(Vector3(5302.631f, 3930.849f, 38.4201f), medical_terminal), owning_building_guid = 3) - LocalObject(552, ImplantTerminalMech.Constructor(Vector3(5167.677f, 3929.729f, 38.4291f)), owning_building_guid = 3) - LocalObject(528, Terminal.Constructor(Vector3(5167.677f, 3929.711f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 234, + Terminal.Constructor(Vector3(5153.212f, 3900.806f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 235, + Terminal.Constructor(Vector3(5153.212f, 3902.713f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 236, + Terminal.Constructor(Vector3(5153.212f, 3904.644f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 237, + Terminal.Constructor(Vector3(5153.296f, 3911.669f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 238, + Terminal.Constructor(Vector3(5153.296f, 3913.576f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 239, + Terminal.Constructor(Vector3(5153.296f, 3915.507f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 240, + Terminal.Constructor(Vector3(5164.556f, 3892.06f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 241, + Terminal.Constructor(Vector3(5164.556f, 3895.963f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 242, + Terminal.Constructor(Vector3(5164.556f, 3899.801f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 243, + Terminal.Constructor(Vector3(5164.628f, 3916.44f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 244, + Terminal.Constructor(Vector3(5164.628f, 3920.319f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 245, + Terminal.Constructor(Vector3(5164.628f, 3924.191f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 246, + Terminal.Constructor(Vector3(5299.383f, 3891.869f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 247, + Terminal.Constructor(Vector3(5299.383f, 3895.741f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 248, + Terminal.Constructor(Vector3(5299.383f, 3899.619f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 249, + Terminal.Constructor(Vector3(5299.371f, 3916.203f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 250, + Terminal.Constructor(Vector3(5299.371f, 3920.041f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 251, + Terminal.Constructor(Vector3(5299.371f, 3923.944f, 48.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 252, + Terminal.Constructor(Vector3(5310.715f, 3900.552f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 253, + Terminal.Constructor(Vector3(5310.715f, 3902.483f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 254, + Terminal.Constructor(Vector3(5310.715f, 3904.391f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 255, + Terminal.Constructor(Vector3(5310.715f, 3911.36f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 256, + Terminal.Constructor(Vector3(5310.715f, 3913.291f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 257, + Terminal.Constructor(Vector3(5310.715f, 3915.198f, 38.4291f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 920, + Terminal.Constructor(Vector3(5156.069f, 3906.397f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 921, + Terminal.Constructor(Vector3(5156.09f, 3909.595f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 922, + Terminal.Constructor(Vector3(5159.959f, 3906.397f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 923, + Terminal.Constructor(Vector3(5160.104f, 3909.595f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 924, + Terminal.Constructor(Vector3(5174.485f, 3901.262f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 925, + Terminal.Constructor(Vector3(5174.485f, 3904.183f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 926, + Terminal.Constructor(Vector3(5174.478f, 3911.834f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 927, + Terminal.Constructor(Vector3(5174.478f, 3914.735f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 928, + Terminal.Constructor(Vector3(5221.52f, 3957.783f, 54.7221f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 929, + Terminal.Constructor(Vector3(5224f, 3957.783f, 54.7221f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 936, + Terminal.Constructor(Vector3(5240f, 3957.783f, 54.7221f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 937, + Terminal.Constructor(Vector3(5242.39f, 3957.783f, 54.7221f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 938, + Terminal.Constructor(Vector3(5289.508f, 3901.236f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 939, + Terminal.Constructor(Vector3(5289.508f, 3904.137f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 940, + Terminal.Constructor(Vector3(5289.505f, 3911.817f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 941, + Terminal.Constructor(Vector3(5289.505f, 3914.738f, 49.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 942, + Terminal.Constructor(Vector3(5303.908f, 3906.397f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 943, + Terminal.Constructor(Vector3(5303.968f, 3909.592f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 944, + Terminal.Constructor(Vector3(5307.858f, 3909.592f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 945, + Terminal.Constructor(Vector3(5307.922f, 3906.397f, 39.7261f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 804, + ProximityTerminal.Constructor(Vector3(5161.311f, 3885.145f, 38.4201f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 805, + ProximityTerminal.Constructor(Vector3(5161.333f, 3930.849f, 38.4201f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 806, + ProximityTerminal.Constructor(Vector3(5302.693f, 3885.145f, 38.4201f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 807, + ProximityTerminal.Constructor(Vector3(5302.631f, 3930.849f, 38.4201f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 552, + ImplantTerminalMech.Constructor(Vector3(5167.677f, 3929.729f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 528, + Terminal.Constructor(Vector3(5167.677f, 3929.711f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(552, 528) - LocalObject(553, ImplantTerminalMech.Constructor(Vector3(5167.702f, 3886.285f, 38.4291f)), owning_building_guid = 3) - LocalObject(529, Terminal.Constructor(Vector3(5167.702f, 3886.303f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 553, + ImplantTerminalMech.Constructor(Vector3(5167.702f, 3886.285f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 529, + Terminal.Constructor(Vector3(5167.702f, 3886.303f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(553, 529) - LocalObject(554, ImplantTerminalMech.Constructor(Vector3(5173.005f, 3886.285f, 38.4291f)), owning_building_guid = 3) - LocalObject(530, Terminal.Constructor(Vector3(5173.005f, 3886.303f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 554, + ImplantTerminalMech.Constructor(Vector3(5173.005f, 3886.285f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 530, + Terminal.Constructor(Vector3(5173.005f, 3886.303f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(554, 530) - LocalObject(555, ImplantTerminalMech.Constructor(Vector3(5173.084f, 3929.729f, 38.4291f)), owning_building_guid = 3) - LocalObject(531, Terminal.Constructor(Vector3(5173.084f, 3929.711f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 555, + ImplantTerminalMech.Constructor(Vector3(5173.084f, 3929.729f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 531, + Terminal.Constructor(Vector3(5173.084f, 3929.711f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(555, 531) - LocalObject(556, ImplantTerminalMech.Constructor(Vector3(5290.927f, 3886.281f, 38.4291f)), owning_building_guid = 3) - LocalObject(532, Terminal.Constructor(Vector3(5290.927f, 3886.299f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 556, + ImplantTerminalMech.Constructor(Vector3(5290.927f, 3886.281f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 532, + Terminal.Constructor(Vector3(5290.927f, 3886.299f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(556, 532) - LocalObject(557, ImplantTerminalMech.Constructor(Vector3(5290.922f, 3929.719f, 38.4291f)), owning_building_guid = 3) - LocalObject(533, Terminal.Constructor(Vector3(5290.922f, 3929.701f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 557, + ImplantTerminalMech.Constructor(Vector3(5290.922f, 3929.719f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 533, + Terminal.Constructor(Vector3(5290.922f, 3929.701f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(557, 533) - LocalObject(558, ImplantTerminalMech.Constructor(Vector3(5296.225f, 3929.719f, 38.4291f)), owning_building_guid = 3) - LocalObject(534, Terminal.Constructor(Vector3(5296.225f, 3929.701f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 558, + ImplantTerminalMech.Constructor(Vector3(5296.225f, 3929.719f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 534, + Terminal.Constructor(Vector3(5296.225f, 3929.701f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(558, 534) - LocalObject(559, ImplantTerminalMech.Constructor(Vector3(5296.335f, 3886.281f, 38.4291f)), owning_building_guid = 3) - LocalObject(535, Terminal.Constructor(Vector3(5296.335f, 3886.299f, 38.4291f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 559, + ImplantTerminalMech.Constructor(Vector3(5296.335f, 3886.281f, 38.4291f)), + owning_building_guid = 3 + ) + LocalObject( + 535, + Terminal.Constructor(Vector3(5296.335f, 3886.299f, 38.4291f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(559, 535) } Building58() def Building58(): Unit = { // Name: NW_Ishundar_WG_tower Type: tower_a GUID: 52, MapID: 58 - LocalBuilding("NW_Ishundar_WG_tower", 52, 58, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2620f, 5418f, 35.99397f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1037, CaptureTerminal.Constructor(Vector3(2636.587f, 5417.897f, 45.99297f), secondary_capture), owning_building_guid = 52) + LocalBuilding( + "NW_Ishundar_WG_tower", + 52, + 58, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2620f, 5418f, 35.99397f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1037, + CaptureTerminal.Constructor(Vector3(2636.587f, 5417.897f, 45.99297f), secondary_capture), + owning_building_guid = 52 + ) LocalObject(336, Door.Constructor(Vector3(2632f, 5410f, 37.51497f)), owning_building_guid = 52) LocalObject(337, Door.Constructor(Vector3(2632f, 5410f, 57.51397f)), owning_building_guid = 52) LocalObject(338, Door.Constructor(Vector3(2632f, 5426f, 37.51497f)), owning_building_guid = 52) LocalObject(339, Door.Constructor(Vector3(2632f, 5426f, 57.51397f)), owning_building_guid = 52) LocalObject(1047, Door.Constructor(Vector3(2631.146f, 5406.794f, 27.32997f)), owning_building_guid = 52) LocalObject(1048, Door.Constructor(Vector3(2631.146f, 5423.204f, 27.32997f)), owning_building_guid = 52) - LocalObject(560, IFFLock.Constructor(Vector3(2629.957f, 5426.811f, 37.45497f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 338) - LocalObject(561, IFFLock.Constructor(Vector3(2629.957f, 5426.811f, 57.45497f), Vector3(0, 0, 0)), owning_building_guid = 52, door_guid = 339) - LocalObject(562, IFFLock.Constructor(Vector3(2634.047f, 5409.189f, 37.45497f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 336) - LocalObject(563, IFFLock.Constructor(Vector3(2634.047f, 5409.189f, 57.45497f), Vector3(0, 0, 180)), owning_building_guid = 52, door_guid = 337) + LocalObject( + 560, + IFFLock.Constructor(Vector3(2629.957f, 5426.811f, 37.45497f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 338 + ) + LocalObject( + 561, + IFFLock.Constructor(Vector3(2629.957f, 5426.811f, 57.45497f), Vector3(0, 0, 0)), + owning_building_guid = 52, + door_guid = 339 + ) + LocalObject( + 562, + IFFLock.Constructor(Vector3(2634.047f, 5409.189f, 37.45497f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 336 + ) + LocalObject( + 563, + IFFLock.Constructor(Vector3(2634.047f, 5409.189f, 57.45497f), Vector3(0, 0, 180)), + owning_building_guid = 52, + door_guid = 337 + ) LocalObject(604, Locker.Constructor(Vector3(2635.716f, 5402.963f, 25.98797f)), owning_building_guid = 52) LocalObject(605, Locker.Constructor(Vector3(2635.751f, 5424.835f, 25.98797f)), owning_building_guid = 52) LocalObject(606, Locker.Constructor(Vector3(2637.053f, 5402.963f, 25.98797f)), owning_building_guid = 52) @@ -359,35 +1194,106 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(609, Locker.Constructor(Vector3(2639.741f, 5424.835f, 25.98797f)), owning_building_guid = 52) LocalObject(610, Locker.Constructor(Vector3(2641.143f, 5402.963f, 25.98797f)), owning_building_guid = 52) LocalObject(611, Locker.Constructor(Vector3(2641.143f, 5424.835f, 25.98797f)), owning_building_guid = 52) - LocalObject(811, Terminal.Constructor(Vector3(2641.445f, 5408.129f, 27.32597f), order_terminal), owning_building_guid = 52) - LocalObject(812, Terminal.Constructor(Vector3(2641.445f, 5413.853f, 27.32597f), order_terminal), owning_building_guid = 52) - LocalObject(813, Terminal.Constructor(Vector3(2641.445f, 5419.234f, 27.32597f), order_terminal), owning_building_guid = 52) - LocalObject(1017, SpawnTube.Constructor(Vector3(2630.706f, 5405.742f, 25.47597f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(1018, SpawnTube.Constructor(Vector3(2630.706f, 5422.152f, 25.47597f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 52) - LocalObject(684, FacilityTurret.Constructor(Vector3(2607.32f, 5405.295f, 54.93597f), manned_turret), owning_building_guid = 52) + LocalObject( + 811, + Terminal.Constructor(Vector3(2641.445f, 5408.129f, 27.32597f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 812, + Terminal.Constructor(Vector3(2641.445f, 5413.853f, 27.32597f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 813, + Terminal.Constructor(Vector3(2641.445f, 5419.234f, 27.32597f), order_terminal), + owning_building_guid = 52 + ) + LocalObject( + 1017, + SpawnTube.Constructor(Vector3(2630.706f, 5405.742f, 25.47597f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 1018, + SpawnTube.Constructor(Vector3(2630.706f, 5422.152f, 25.47597f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 52 + ) + LocalObject( + 684, + FacilityTurret.Constructor(Vector3(2607.32f, 5405.295f, 54.93597f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(684, 5000) - LocalObject(685, FacilityTurret.Constructor(Vector3(2642.647f, 5430.707f, 54.93597f), manned_turret), owning_building_guid = 52) + LocalObject( + 685, + FacilityTurret.Constructor(Vector3(2642.647f, 5430.707f, 54.93597f), manned_turret), + owning_building_guid = 52 + ) TurretToWeapon(685, 5001) - LocalObject(987, Painbox.Constructor(Vector3(2625.235f, 5411.803f, 27.49307f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(988, Painbox.Constructor(Vector3(2636.889f, 5420.086f, 26.09397f), painbox_radius_continuous), owning_building_guid = 52) - LocalObject(989, Painbox.Constructor(Vector3(2636.975f, 5408.223f, 26.09397f), painbox_radius_continuous), owning_building_guid = 52) + LocalObject( + 987, + Painbox.Constructor(Vector3(2625.235f, 5411.803f, 27.49307f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 988, + Painbox.Constructor(Vector3(2636.889f, 5420.086f, 26.09397f), painbox_radius_continuous), + owning_building_guid = 52 + ) + LocalObject( + 989, + Painbox.Constructor(Vector3(2636.975f, 5408.223f, 26.09397f), painbox_radius_continuous), + owning_building_guid = 52 + ) } Building66() def Building66(): Unit = { // Name: W_Cyssor_WG_tower Type: tower_a GUID: 53, MapID: 66 - LocalBuilding("W_Cyssor_WG_tower", 53, 66, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2806f, 3292f, 32.44872f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1039, CaptureTerminal.Constructor(Vector3(2822.587f, 3291.897f, 42.44772f), secondary_capture), owning_building_guid = 53) + LocalBuilding( + "W_Cyssor_WG_tower", + 53, + 66, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2806f, 3292f, 32.44872f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1039, + CaptureTerminal.Constructor(Vector3(2822.587f, 3291.897f, 42.44772f), secondary_capture), + owning_building_guid = 53 + ) LocalObject(346, Door.Constructor(Vector3(2818f, 3284f, 33.96972f)), owning_building_guid = 53) LocalObject(347, Door.Constructor(Vector3(2818f, 3284f, 53.96872f)), owning_building_guid = 53) LocalObject(348, Door.Constructor(Vector3(2818f, 3300f, 33.96972f)), owning_building_guid = 53) LocalObject(349, Door.Constructor(Vector3(2818f, 3300f, 53.96872f)), owning_building_guid = 53) LocalObject(1051, Door.Constructor(Vector3(2817.146f, 3280.794f, 23.78472f)), owning_building_guid = 53) LocalObject(1052, Door.Constructor(Vector3(2817.146f, 3297.204f, 23.78472f)), owning_building_guid = 53) - LocalObject(570, IFFLock.Constructor(Vector3(2815.957f, 3300.811f, 33.90971f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 348) - LocalObject(571, IFFLock.Constructor(Vector3(2815.957f, 3300.811f, 53.90971f), Vector3(0, 0, 0)), owning_building_guid = 53, door_guid = 349) - LocalObject(572, IFFLock.Constructor(Vector3(2820.047f, 3283.189f, 33.90971f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 346) - LocalObject(573, IFFLock.Constructor(Vector3(2820.047f, 3283.189f, 53.90971f), Vector3(0, 0, 180)), owning_building_guid = 53, door_guid = 347) + LocalObject( + 570, + IFFLock.Constructor(Vector3(2815.957f, 3300.811f, 33.90971f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 348 + ) + LocalObject( + 571, + IFFLock.Constructor(Vector3(2815.957f, 3300.811f, 53.90971f), Vector3(0, 0, 0)), + owning_building_guid = 53, + door_guid = 349 + ) + LocalObject( + 572, + IFFLock.Constructor(Vector3(2820.047f, 3283.189f, 33.90971f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 346 + ) + LocalObject( + 573, + IFFLock.Constructor(Vector3(2820.047f, 3283.189f, 53.90971f), Vector3(0, 0, 180)), + owning_building_guid = 53, + door_guid = 347 + ) LocalObject(620, Locker.Constructor(Vector3(2821.716f, 3276.963f, 22.44271f)), owning_building_guid = 53) LocalObject(621, Locker.Constructor(Vector3(2821.751f, 3298.835f, 22.44271f)), owning_building_guid = 53) LocalObject(622, Locker.Constructor(Vector3(2823.053f, 3276.963f, 22.44271f)), owning_building_guid = 53) @@ -396,35 +1302,106 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(625, Locker.Constructor(Vector3(2825.741f, 3298.835f, 22.44271f)), owning_building_guid = 53) LocalObject(626, Locker.Constructor(Vector3(2827.143f, 3276.963f, 22.44271f)), owning_building_guid = 53) LocalObject(627, Locker.Constructor(Vector3(2827.143f, 3298.835f, 22.44271f)), owning_building_guid = 53) - LocalObject(823, Terminal.Constructor(Vector3(2827.445f, 3282.129f, 23.78072f), order_terminal), owning_building_guid = 53) - LocalObject(824, Terminal.Constructor(Vector3(2827.445f, 3287.853f, 23.78072f), order_terminal), owning_building_guid = 53) - LocalObject(825, Terminal.Constructor(Vector3(2827.445f, 3293.234f, 23.78072f), order_terminal), owning_building_guid = 53) - LocalObject(1021, SpawnTube.Constructor(Vector3(2816.706f, 3279.742f, 21.93072f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(1022, SpawnTube.Constructor(Vector3(2816.706f, 3296.152f, 21.93072f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 53) - LocalObject(686, FacilityTurret.Constructor(Vector3(2793.32f, 3279.295f, 51.39072f), manned_turret), owning_building_guid = 53) + LocalObject( + 823, + Terminal.Constructor(Vector3(2827.445f, 3282.129f, 23.78072f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 824, + Terminal.Constructor(Vector3(2827.445f, 3287.853f, 23.78072f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 825, + Terminal.Constructor(Vector3(2827.445f, 3293.234f, 23.78072f), order_terminal), + owning_building_guid = 53 + ) + LocalObject( + 1021, + SpawnTube.Constructor(Vector3(2816.706f, 3279.742f, 21.93072f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 1022, + SpawnTube.Constructor(Vector3(2816.706f, 3296.152f, 21.93072f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 53 + ) + LocalObject( + 686, + FacilityTurret.Constructor(Vector3(2793.32f, 3279.295f, 51.39072f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(686, 5002) - LocalObject(687, FacilityTurret.Constructor(Vector3(2828.647f, 3304.707f, 51.39072f), manned_turret), owning_building_guid = 53) + LocalObject( + 687, + FacilityTurret.Constructor(Vector3(2828.647f, 3304.707f, 51.39072f), manned_turret), + owning_building_guid = 53 + ) TurretToWeapon(687, 5003) - LocalObject(992, Painbox.Constructor(Vector3(2811.235f, 3285.803f, 23.94781f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(994, Painbox.Constructor(Vector3(2822.889f, 3294.086f, 22.54872f), painbox_radius_continuous), owning_building_guid = 53) - LocalObject(995, Painbox.Constructor(Vector3(2822.975f, 3282.223f, 22.54872f), painbox_radius_continuous), owning_building_guid = 53) + LocalObject( + 992, + Painbox.Constructor(Vector3(2811.235f, 3285.803f, 23.94781f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 994, + Painbox.Constructor(Vector3(2822.889f, 3294.086f, 22.54872f), painbox_radius_continuous), + owning_building_guid = 53 + ) + LocalObject( + 995, + Painbox.Constructor(Vector3(2822.975f, 3282.223f, 22.54872f), painbox_radius_continuous), + owning_building_guid = 53 + ) } Building60() def Building60(): Unit = { // Name: W_Forseral_WG_tower Type: tower_a GUID: 54, MapID: 60 - LocalBuilding("W_Forseral_WG_tower", 54, 60, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4564f, 4572f, 54.12079f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1044, CaptureTerminal.Constructor(Vector3(4580.587f, 4571.897f, 64.11979f), secondary_capture), owning_building_guid = 54) + LocalBuilding( + "W_Forseral_WG_tower", + 54, + 60, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4564f, 4572f, 54.12079f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1044, + CaptureTerminal.Constructor(Vector3(4580.587f, 4571.897f, 64.11979f), secondary_capture), + owning_building_guid = 54 + ) LocalObject(368, Door.Constructor(Vector3(4576f, 4564f, 55.64179f)), owning_building_guid = 54) LocalObject(369, Door.Constructor(Vector3(4576f, 4564f, 75.64079f)), owning_building_guid = 54) LocalObject(370, Door.Constructor(Vector3(4576f, 4580f, 55.64179f)), owning_building_guid = 54) LocalObject(371, Door.Constructor(Vector3(4576f, 4580f, 75.64079f)), owning_building_guid = 54) LocalObject(1061, Door.Constructor(Vector3(4575.146f, 4560.794f, 45.45679f)), owning_building_guid = 54) LocalObject(1062, Door.Constructor(Vector3(4575.146f, 4577.204f, 45.45679f)), owning_building_guid = 54) - LocalObject(592, IFFLock.Constructor(Vector3(4573.957f, 4580.811f, 55.58179f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 370) - LocalObject(593, IFFLock.Constructor(Vector3(4573.957f, 4580.811f, 75.58179f), Vector3(0, 0, 0)), owning_building_guid = 54, door_guid = 371) - LocalObject(594, IFFLock.Constructor(Vector3(4578.047f, 4563.189f, 55.58179f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 368) - LocalObject(595, IFFLock.Constructor(Vector3(4578.047f, 4563.189f, 75.58179f), Vector3(0, 0, 180)), owning_building_guid = 54, door_guid = 369) + LocalObject( + 592, + IFFLock.Constructor(Vector3(4573.957f, 4580.811f, 55.58179f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 370 + ) + LocalObject( + 593, + IFFLock.Constructor(Vector3(4573.957f, 4580.811f, 75.58179f), Vector3(0, 0, 0)), + owning_building_guid = 54, + door_guid = 371 + ) + LocalObject( + 594, + IFFLock.Constructor(Vector3(4578.047f, 4563.189f, 55.58179f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 368 + ) + LocalObject( + 595, + IFFLock.Constructor(Vector3(4578.047f, 4563.189f, 75.58179f), Vector3(0, 0, 180)), + owning_building_guid = 54, + door_guid = 369 + ) LocalObject(660, Locker.Constructor(Vector3(4579.716f, 4556.963f, 44.11479f)), owning_building_guid = 54) LocalObject(661, Locker.Constructor(Vector3(4579.751f, 4578.835f, 44.11479f)), owning_building_guid = 54) LocalObject(662, Locker.Constructor(Vector3(4581.053f, 4556.963f, 44.11479f)), owning_building_guid = 54) @@ -433,35 +1410,106 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(665, Locker.Constructor(Vector3(4583.741f, 4578.835f, 44.11479f)), owning_building_guid = 54) LocalObject(666, Locker.Constructor(Vector3(4585.143f, 4556.963f, 44.11479f)), owning_building_guid = 54) LocalObject(667, Locker.Constructor(Vector3(4585.143f, 4578.835f, 44.11479f)), owning_building_guid = 54) - LocalObject(908, Terminal.Constructor(Vector3(4585.445f, 4562.129f, 45.45279f), order_terminal), owning_building_guid = 54) - LocalObject(909, Terminal.Constructor(Vector3(4585.445f, 4567.853f, 45.45279f), order_terminal), owning_building_guid = 54) - LocalObject(910, Terminal.Constructor(Vector3(4585.445f, 4573.234f, 45.45279f), order_terminal), owning_building_guid = 54) - LocalObject(1031, SpawnTube.Constructor(Vector3(4574.706f, 4559.742f, 43.60279f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(1032, SpawnTube.Constructor(Vector3(4574.706f, 4576.152f, 43.60279f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 54) - LocalObject(694, FacilityTurret.Constructor(Vector3(4551.32f, 4559.295f, 73.06279f), manned_turret), owning_building_guid = 54) + LocalObject( + 908, + Terminal.Constructor(Vector3(4585.445f, 4562.129f, 45.45279f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 909, + Terminal.Constructor(Vector3(4585.445f, 4567.853f, 45.45279f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 910, + Terminal.Constructor(Vector3(4585.445f, 4573.234f, 45.45279f), order_terminal), + owning_building_guid = 54 + ) + LocalObject( + 1031, + SpawnTube.Constructor(Vector3(4574.706f, 4559.742f, 43.60279f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 1032, + SpawnTube.Constructor(Vector3(4574.706f, 4576.152f, 43.60279f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 54 + ) + LocalObject( + 694, + FacilityTurret.Constructor(Vector3(4551.32f, 4559.295f, 73.06279f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(694, 5004) - LocalObject(695, FacilityTurret.Constructor(Vector3(4586.647f, 4584.707f, 73.06279f), manned_turret), owning_building_guid = 54) + LocalObject( + 695, + FacilityTurret.Constructor(Vector3(4586.647f, 4584.707f, 73.06279f), manned_turret), + owning_building_guid = 54 + ) TurretToWeapon(695, 5005) - LocalObject(1008, Painbox.Constructor(Vector3(4569.235f, 4565.803f, 45.61989f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1009, Painbox.Constructor(Vector3(4580.889f, 4574.086f, 44.22079f), painbox_radius_continuous), owning_building_guid = 54) - LocalObject(1010, Painbox.Constructor(Vector3(4580.975f, 4562.223f, 44.22079f), painbox_radius_continuous), owning_building_guid = 54) + LocalObject( + 1008, + Painbox.Constructor(Vector3(4569.235f, 4565.803f, 45.61989f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1009, + Painbox.Constructor(Vector3(4580.889f, 4574.086f, 44.22079f), painbox_radius_continuous), + owning_building_guid = 54 + ) + LocalObject( + 1010, + Painbox.Constructor(Vector3(4580.975f, 4562.223f, 44.22079f), painbox_radius_continuous), + owning_building_guid = 54 + ) } Building63() def Building63(): Unit = { // Name: SW_Forseral_WG_tower Type: tower_a GUID: 55, MapID: 63 - LocalBuilding("SW_Forseral_WG_tower", 55, 63, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4972f, 3678f, 35.9291f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1045, CaptureTerminal.Constructor(Vector3(4988.587f, 3677.897f, 45.9281f), secondary_capture), owning_building_guid = 55) + LocalBuilding( + "SW_Forseral_WG_tower", + 55, + 63, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4972f, 3678f, 35.9291f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1045, + CaptureTerminal.Constructor(Vector3(4988.587f, 3677.897f, 45.9281f), secondary_capture), + owning_building_guid = 55 + ) LocalObject(372, Door.Constructor(Vector3(4984f, 3670f, 37.4501f)), owning_building_guid = 55) LocalObject(373, Door.Constructor(Vector3(4984f, 3670f, 57.4491f)), owning_building_guid = 55) LocalObject(374, Door.Constructor(Vector3(4984f, 3686f, 37.4501f)), owning_building_guid = 55) LocalObject(375, Door.Constructor(Vector3(4984f, 3686f, 57.4491f)), owning_building_guid = 55) LocalObject(1063, Door.Constructor(Vector3(4983.146f, 3666.794f, 27.2651f)), owning_building_guid = 55) LocalObject(1064, Door.Constructor(Vector3(4983.146f, 3683.204f, 27.2651f)), owning_building_guid = 55) - LocalObject(596, IFFLock.Constructor(Vector3(4981.957f, 3686.811f, 37.3901f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 374) - LocalObject(597, IFFLock.Constructor(Vector3(4981.957f, 3686.811f, 57.39011f), Vector3(0, 0, 0)), owning_building_guid = 55, door_guid = 375) - LocalObject(598, IFFLock.Constructor(Vector3(4986.047f, 3669.189f, 37.3901f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 372) - LocalObject(599, IFFLock.Constructor(Vector3(4986.047f, 3669.189f, 57.39011f), Vector3(0, 0, 180)), owning_building_guid = 55, door_guid = 373) + LocalObject( + 596, + IFFLock.Constructor(Vector3(4981.957f, 3686.811f, 37.3901f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 374 + ) + LocalObject( + 597, + IFFLock.Constructor(Vector3(4981.957f, 3686.811f, 57.39011f), Vector3(0, 0, 0)), + owning_building_guid = 55, + door_guid = 375 + ) + LocalObject( + 598, + IFFLock.Constructor(Vector3(4986.047f, 3669.189f, 37.3901f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 372 + ) + LocalObject( + 599, + IFFLock.Constructor(Vector3(4986.047f, 3669.189f, 57.39011f), Vector3(0, 0, 180)), + owning_building_guid = 55, + door_guid = 373 + ) LocalObject(668, Locker.Constructor(Vector3(4987.716f, 3662.963f, 25.9231f)), owning_building_guid = 55) LocalObject(669, Locker.Constructor(Vector3(4987.751f, 3684.835f, 25.9231f)), owning_building_guid = 55) LocalObject(670, Locker.Constructor(Vector3(4989.053f, 3662.963f, 25.9231f)), owning_building_guid = 55) @@ -470,25 +1518,76 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(673, Locker.Constructor(Vector3(4991.741f, 3684.835f, 25.9231f)), owning_building_guid = 55) LocalObject(674, Locker.Constructor(Vector3(4993.143f, 3662.963f, 25.9231f)), owning_building_guid = 55) LocalObject(675, Locker.Constructor(Vector3(4993.143f, 3684.835f, 25.9231f)), owning_building_guid = 55) - LocalObject(911, Terminal.Constructor(Vector3(4993.445f, 3668.129f, 27.2611f), order_terminal), owning_building_guid = 55) - LocalObject(912, Terminal.Constructor(Vector3(4993.445f, 3673.853f, 27.2611f), order_terminal), owning_building_guid = 55) - LocalObject(913, Terminal.Constructor(Vector3(4993.445f, 3679.234f, 27.2611f), order_terminal), owning_building_guid = 55) - LocalObject(1033, SpawnTube.Constructor(Vector3(4982.706f, 3665.742f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(1034, SpawnTube.Constructor(Vector3(4982.706f, 3682.152f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 55) - LocalObject(696, FacilityTurret.Constructor(Vector3(4959.32f, 3665.295f, 54.8711f), manned_turret), owning_building_guid = 55) + LocalObject( + 911, + Terminal.Constructor(Vector3(4993.445f, 3668.129f, 27.2611f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 912, + Terminal.Constructor(Vector3(4993.445f, 3673.853f, 27.2611f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 913, + Terminal.Constructor(Vector3(4993.445f, 3679.234f, 27.2611f), order_terminal), + owning_building_guid = 55 + ) + LocalObject( + 1033, + SpawnTube.Constructor(Vector3(4982.706f, 3665.742f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 1034, + SpawnTube.Constructor(Vector3(4982.706f, 3682.152f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 55 + ) + LocalObject( + 696, + FacilityTurret.Constructor(Vector3(4959.32f, 3665.295f, 54.8711f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(696, 5006) - LocalObject(697, FacilityTurret.Constructor(Vector3(4994.647f, 3690.707f, 54.8711f), manned_turret), owning_building_guid = 55) + LocalObject( + 697, + FacilityTurret.Constructor(Vector3(4994.647f, 3690.707f, 54.8711f), manned_turret), + owning_building_guid = 55 + ) TurretToWeapon(697, 5007) - LocalObject(1011, Painbox.Constructor(Vector3(4977.235f, 3671.803f, 27.4282f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1012, Painbox.Constructor(Vector3(4988.889f, 3680.086f, 26.0291f), painbox_radius_continuous), owning_building_guid = 55) - LocalObject(1013, Painbox.Constructor(Vector3(4988.975f, 3668.223f, 26.0291f), painbox_radius_continuous), owning_building_guid = 55) + LocalObject( + 1011, + Painbox.Constructor(Vector3(4977.235f, 3671.803f, 27.4282f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1012, + Painbox.Constructor(Vector3(4988.889f, 3680.086f, 26.0291f), painbox_radius_continuous), + owning_building_guid = 55 + ) + LocalObject( + 1013, + Painbox.Constructor(Vector3(4988.975f, 3668.223f, 26.0291f), painbox_radius_continuous), + owning_building_guid = 55 + ) } Building65() def Building65(): Unit = { // Name: SW_Ishundar_WG_tower Type: tower_b GUID: 56, MapID: 65 - LocalBuilding("SW_Ishundar_WG_tower", 56, 65, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2794f, 4210f, 36.31348f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1038, CaptureTerminal.Constructor(Vector3(2810.587f, 4209.897f, 56.31248f), secondary_capture), owning_building_guid = 56) + LocalBuilding( + "SW_Ishundar_WG_tower", + 56, + 65, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2794f, 4210f, 36.31348f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1038, + CaptureTerminal.Constructor(Vector3(2810.587f, 4209.897f, 56.31248f), secondary_capture), + owning_building_guid = 56 + ) LocalObject(340, Door.Constructor(Vector3(2806f, 4202f, 37.83348f)), owning_building_guid = 56) LocalObject(341, Door.Constructor(Vector3(2806f, 4202f, 47.83348f)), owning_building_guid = 56) LocalObject(342, Door.Constructor(Vector3(2806f, 4202f, 67.83348f)), owning_building_guid = 56) @@ -497,12 +1596,42 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(345, Door.Constructor(Vector3(2806f, 4218f, 67.83348f)), owning_building_guid = 56) LocalObject(1049, Door.Constructor(Vector3(2805.147f, 4198.794f, 27.64948f)), owning_building_guid = 56) LocalObject(1050, Door.Constructor(Vector3(2805.147f, 4215.204f, 27.64948f)), owning_building_guid = 56) - LocalObject(564, IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 37.77448f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 343) - LocalObject(565, IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 47.77448f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 344) - LocalObject(566, IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 67.77448f), Vector3(0, 0, 0)), owning_building_guid = 56, door_guid = 345) - LocalObject(567, IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 37.77448f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 340) - LocalObject(568, IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 47.77448f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 341) - LocalObject(569, IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 67.77448f), Vector3(0, 0, 180)), owning_building_guid = 56, door_guid = 342) + LocalObject( + 564, + IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 37.77448f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 343 + ) + LocalObject( + 565, + IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 47.77448f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 344 + ) + LocalObject( + 566, + IFFLock.Constructor(Vector3(2803.957f, 4218.811f, 67.77448f), Vector3(0, 0, 0)), + owning_building_guid = 56, + door_guid = 345 + ) + LocalObject( + 567, + IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 37.77448f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 340 + ) + LocalObject( + 568, + IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 47.77448f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 341 + ) + LocalObject( + 569, + IFFLock.Constructor(Vector3(2808.047f, 4201.189f, 67.77448f), Vector3(0, 0, 180)), + owning_building_guid = 56, + door_guid = 342 + ) LocalObject(612, Locker.Constructor(Vector3(2809.716f, 4194.963f, 26.30748f)), owning_building_guid = 56) LocalObject(613, Locker.Constructor(Vector3(2809.751f, 4216.835f, 26.30748f)), owning_building_guid = 56) LocalObject(614, Locker.Constructor(Vector3(2811.053f, 4194.963f, 26.30748f)), owning_building_guid = 56) @@ -511,21 +1640,64 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(617, Locker.Constructor(Vector3(2813.741f, 4216.835f, 26.30748f)), owning_building_guid = 56) LocalObject(618, Locker.Constructor(Vector3(2815.143f, 4194.963f, 26.30748f)), owning_building_guid = 56) LocalObject(619, Locker.Constructor(Vector3(2815.143f, 4216.835f, 26.30748f)), owning_building_guid = 56) - LocalObject(820, Terminal.Constructor(Vector3(2815.446f, 4200.129f, 27.64548f), order_terminal), owning_building_guid = 56) - LocalObject(821, Terminal.Constructor(Vector3(2815.446f, 4205.853f, 27.64548f), order_terminal), owning_building_guid = 56) - LocalObject(822, Terminal.Constructor(Vector3(2815.446f, 4211.234f, 27.64548f), order_terminal), owning_building_guid = 56) - LocalObject(1019, SpawnTube.Constructor(Vector3(2804.706f, 4197.742f, 25.79548f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(1020, SpawnTube.Constructor(Vector3(2804.706f, 4214.152f, 25.79548f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 56) - LocalObject(990, Painbox.Constructor(Vector3(2799.493f, 4202.849f, 27.60288f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(991, Painbox.Constructor(Vector3(2811.127f, 4200.078f, 26.41348f), painbox_radius_continuous), owning_building_guid = 56) - LocalObject(993, Painbox.Constructor(Vector3(2811.259f, 4212.107f, 26.41348f), painbox_radius_continuous), owning_building_guid = 56) + LocalObject( + 820, + Terminal.Constructor(Vector3(2815.446f, 4200.129f, 27.64548f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 821, + Terminal.Constructor(Vector3(2815.446f, 4205.853f, 27.64548f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 822, + Terminal.Constructor(Vector3(2815.446f, 4211.234f, 27.64548f), order_terminal), + owning_building_guid = 56 + ) + LocalObject( + 1019, + SpawnTube.Constructor(Vector3(2804.706f, 4197.742f, 25.79548f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 1020, + SpawnTube.Constructor(Vector3(2804.706f, 4214.152f, 25.79548f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 56 + ) + LocalObject( + 990, + Painbox.Constructor(Vector3(2799.493f, 4202.849f, 27.60288f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 991, + Painbox.Constructor(Vector3(2811.127f, 4200.078f, 26.41348f), painbox_radius_continuous), + owning_building_guid = 56 + ) + LocalObject( + 993, + Painbox.Constructor(Vector3(2811.259f, 4212.107f, 26.41348f), painbox_radius_continuous), + owning_building_guid = 56 + ) } Building64() def Building64(): Unit = { // Name: E_Cyssor_WG_tower Type: tower_b GUID: 57, MapID: 64 - LocalBuilding("E_Cyssor_WG_tower", 57, 64, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4484f, 3080f, 50.39579f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1043, CaptureTerminal.Constructor(Vector3(4500.587f, 3079.897f, 70.39479f), secondary_capture), owning_building_guid = 57) + LocalBuilding( + "E_Cyssor_WG_tower", + 57, + 64, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4484f, 3080f, 50.39579f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1043, + CaptureTerminal.Constructor(Vector3(4500.587f, 3079.897f, 70.39479f), secondary_capture), + owning_building_guid = 57 + ) LocalObject(362, Door.Constructor(Vector3(4496f, 3072f, 51.91579f)), owning_building_guid = 57) LocalObject(363, Door.Constructor(Vector3(4496f, 3072f, 61.91579f)), owning_building_guid = 57) LocalObject(364, Door.Constructor(Vector3(4496f, 3072f, 81.91579f)), owning_building_guid = 57) @@ -534,12 +1706,42 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(367, Door.Constructor(Vector3(4496f, 3088f, 81.91579f)), owning_building_guid = 57) LocalObject(1059, Door.Constructor(Vector3(4495.147f, 3068.794f, 41.7318f)), owning_building_guid = 57) LocalObject(1060, Door.Constructor(Vector3(4495.147f, 3085.204f, 41.7318f)), owning_building_guid = 57) - LocalObject(586, IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 51.85679f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 365) - LocalObject(587, IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 61.8568f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 366) - LocalObject(588, IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 81.8568f), Vector3(0, 0, 0)), owning_building_guid = 57, door_guid = 367) - LocalObject(589, IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 51.85679f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 362) - LocalObject(590, IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 61.8568f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 363) - LocalObject(591, IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 81.8568f), Vector3(0, 0, 180)), owning_building_guid = 57, door_guid = 364) + LocalObject( + 586, + IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 51.85679f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 365 + ) + LocalObject( + 587, + IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 61.8568f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 366 + ) + LocalObject( + 588, + IFFLock.Constructor(Vector3(4493.957f, 3088.811f, 81.8568f), Vector3(0, 0, 0)), + owning_building_guid = 57, + door_guid = 367 + ) + LocalObject( + 589, + IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 51.85679f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 362 + ) + LocalObject( + 590, + IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 61.8568f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 363 + ) + LocalObject( + 591, + IFFLock.Constructor(Vector3(4498.047f, 3071.189f, 81.8568f), Vector3(0, 0, 180)), + owning_building_guid = 57, + door_guid = 364 + ) LocalObject(652, Locker.Constructor(Vector3(4499.716f, 3064.963f, 40.38979f)), owning_building_guid = 57) LocalObject(653, Locker.Constructor(Vector3(4499.751f, 3086.835f, 40.38979f)), owning_building_guid = 57) LocalObject(654, Locker.Constructor(Vector3(4501.053f, 3064.963f, 40.38979f)), owning_building_guid = 57) @@ -548,31 +1750,94 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(657, Locker.Constructor(Vector3(4503.741f, 3086.835f, 40.38979f)), owning_building_guid = 57) LocalObject(658, Locker.Constructor(Vector3(4505.143f, 3064.963f, 40.38979f)), owning_building_guid = 57) LocalObject(659, Locker.Constructor(Vector3(4505.143f, 3086.835f, 40.38979f)), owning_building_guid = 57) - LocalObject(905, Terminal.Constructor(Vector3(4505.446f, 3070.129f, 41.72779f), order_terminal), owning_building_guid = 57) - LocalObject(906, Terminal.Constructor(Vector3(4505.446f, 3075.853f, 41.72779f), order_terminal), owning_building_guid = 57) - LocalObject(907, Terminal.Constructor(Vector3(4505.446f, 3081.234f, 41.72779f), order_terminal), owning_building_guid = 57) - LocalObject(1029, SpawnTube.Constructor(Vector3(4494.706f, 3067.742f, 39.87779f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1030, SpawnTube.Constructor(Vector3(4494.706f, 3084.152f, 39.87779f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 57) - LocalObject(1005, Painbox.Constructor(Vector3(4489.493f, 3072.849f, 41.6852f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1006, Painbox.Constructor(Vector3(4501.127f, 3070.078f, 40.4958f), painbox_radius_continuous), owning_building_guid = 57) - LocalObject(1007, Painbox.Constructor(Vector3(4501.259f, 3082.107f, 40.4958f), painbox_radius_continuous), owning_building_guid = 57) + LocalObject( + 905, + Terminal.Constructor(Vector3(4505.446f, 3070.129f, 41.72779f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 906, + Terminal.Constructor(Vector3(4505.446f, 3075.853f, 41.72779f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 907, + Terminal.Constructor(Vector3(4505.446f, 3081.234f, 41.72779f), order_terminal), + owning_building_guid = 57 + ) + LocalObject( + 1029, + SpawnTube.Constructor(Vector3(4494.706f, 3067.742f, 39.87779f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1030, + SpawnTube.Constructor(Vector3(4494.706f, 3084.152f, 39.87779f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 57 + ) + LocalObject( + 1005, + Painbox.Constructor(Vector3(4489.493f, 3072.849f, 41.6852f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1006, + Painbox.Constructor(Vector3(4501.127f, 3070.078f, 40.4958f), painbox_radius_continuous), + owning_building_guid = 57 + ) + LocalObject( + 1007, + Painbox.Constructor(Vector3(4501.259f, 3082.107f, 40.4958f), painbox_radius_continuous), + owning_building_guid = 57 + ) } Building59() def Building59(): Unit = { // Name: N_Ishundar_WG_tower Type: tower_c GUID: 58, MapID: 59 - LocalBuilding("N_Ishundar_WG_tower", 58, 59, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3236f, 5040f, 37.58544f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1040, CaptureTerminal.Constructor(Vector3(3252.587f, 5039.897f, 47.58444f), secondary_capture), owning_building_guid = 58) + LocalBuilding( + "N_Ishundar_WG_tower", + 58, + 59, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3236f, 5040f, 37.58544f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1040, + CaptureTerminal.Constructor(Vector3(3252.587f, 5039.897f, 47.58444f), secondary_capture), + owning_building_guid = 58 + ) LocalObject(350, Door.Constructor(Vector3(3248f, 5032f, 39.10644f)), owning_building_guid = 58) LocalObject(351, Door.Constructor(Vector3(3248f, 5032f, 59.10544f)), owning_building_guid = 58) LocalObject(352, Door.Constructor(Vector3(3248f, 5048f, 39.10644f)), owning_building_guid = 58) LocalObject(353, Door.Constructor(Vector3(3248f, 5048f, 59.10544f)), owning_building_guid = 58) LocalObject(1053, Door.Constructor(Vector3(3247.146f, 5028.794f, 28.92144f)), owning_building_guid = 58) LocalObject(1054, Door.Constructor(Vector3(3247.146f, 5045.204f, 28.92144f)), owning_building_guid = 58) - LocalObject(574, IFFLock.Constructor(Vector3(3245.957f, 5048.811f, 39.04644f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 352) - LocalObject(575, IFFLock.Constructor(Vector3(3245.957f, 5048.811f, 59.04644f), Vector3(0, 0, 0)), owning_building_guid = 58, door_guid = 353) - LocalObject(576, IFFLock.Constructor(Vector3(3250.047f, 5031.189f, 39.04644f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 350) - LocalObject(577, IFFLock.Constructor(Vector3(3250.047f, 5031.189f, 59.04644f), Vector3(0, 0, 180)), owning_building_guid = 58, door_guid = 351) + LocalObject( + 574, + IFFLock.Constructor(Vector3(3245.957f, 5048.811f, 39.04644f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 352 + ) + LocalObject( + 575, + IFFLock.Constructor(Vector3(3245.957f, 5048.811f, 59.04644f), Vector3(0, 0, 0)), + owning_building_guid = 58, + door_guid = 353 + ) + LocalObject( + 576, + IFFLock.Constructor(Vector3(3250.047f, 5031.189f, 39.04644f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 350 + ) + LocalObject( + 577, + IFFLock.Constructor(Vector3(3250.047f, 5031.189f, 59.04644f), Vector3(0, 0, 180)), + owning_building_guid = 58, + door_guid = 351 + ) LocalObject(628, Locker.Constructor(Vector3(3251.716f, 5024.963f, 27.57944f)), owning_building_guid = 58) LocalObject(629, Locker.Constructor(Vector3(3251.751f, 5046.835f, 27.57944f)), owning_building_guid = 58) LocalObject(630, Locker.Constructor(Vector3(3253.053f, 5024.963f, 27.57944f)), owning_building_guid = 58) @@ -581,39 +1846,126 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(633, Locker.Constructor(Vector3(3255.741f, 5046.835f, 27.57944f)), owning_building_guid = 58) LocalObject(634, Locker.Constructor(Vector3(3257.143f, 5024.963f, 27.57944f)), owning_building_guid = 58) LocalObject(635, Locker.Constructor(Vector3(3257.143f, 5046.835f, 27.57944f)), owning_building_guid = 58) - LocalObject(896, Terminal.Constructor(Vector3(3257.445f, 5030.129f, 28.91744f), order_terminal), owning_building_guid = 58) - LocalObject(897, Terminal.Constructor(Vector3(3257.445f, 5035.853f, 28.91744f), order_terminal), owning_building_guid = 58) - LocalObject(898, Terminal.Constructor(Vector3(3257.445f, 5041.234f, 28.91744f), order_terminal), owning_building_guid = 58) - LocalObject(1023, SpawnTube.Constructor(Vector3(3246.706f, 5027.742f, 27.06744f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(1024, SpawnTube.Constructor(Vector3(3246.706f, 5044.152f, 27.06744f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 58) - LocalObject(963, ProximityTerminal.Constructor(Vector3(3234.907f, 5034.725f, 65.15544f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(964, Terminal.Constructor(Vector3(3234.907f, 5034.725f, 65.15544f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(966, ProximityTerminal.Constructor(Vector3(3234.907f, 5045.17f, 65.15544f), pad_landing_tower_frame), owning_building_guid = 58) - LocalObject(967, Terminal.Constructor(Vector3(3234.907f, 5045.17f, 65.15544f), air_rearm_terminal), owning_building_guid = 58) - LocalObject(688, FacilityTurret.Constructor(Vector3(3221.07f, 5025.045f, 56.52744f), manned_turret), owning_building_guid = 58) + LocalObject( + 896, + Terminal.Constructor(Vector3(3257.445f, 5030.129f, 28.91744f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 897, + Terminal.Constructor(Vector3(3257.445f, 5035.853f, 28.91744f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 898, + Terminal.Constructor(Vector3(3257.445f, 5041.234f, 28.91744f), order_terminal), + owning_building_guid = 58 + ) + LocalObject( + 1023, + SpawnTube.Constructor(Vector3(3246.706f, 5027.742f, 27.06744f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 1024, + SpawnTube.Constructor(Vector3(3246.706f, 5044.152f, 27.06744f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 58 + ) + LocalObject( + 963, + ProximityTerminal.Constructor(Vector3(3234.907f, 5034.725f, 65.15544f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 964, + Terminal.Constructor(Vector3(3234.907f, 5034.725f, 65.15544f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 966, + ProximityTerminal.Constructor(Vector3(3234.907f, 5045.17f, 65.15544f), pad_landing_tower_frame), + owning_building_guid = 58 + ) + LocalObject( + 967, + Terminal.Constructor(Vector3(3234.907f, 5045.17f, 65.15544f), air_rearm_terminal), + owning_building_guid = 58 + ) + LocalObject( + 688, + FacilityTurret.Constructor(Vector3(3221.07f, 5025.045f, 56.52744f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(688, 5008) - LocalObject(690, FacilityTurret.Constructor(Vector3(3259.497f, 5054.957f, 56.52744f), manned_turret), owning_building_guid = 58) + LocalObject( + 690, + FacilityTurret.Constructor(Vector3(3259.497f, 5054.957f, 56.52744f), manned_turret), + owning_building_guid = 58 + ) TurretToWeapon(690, 5009) - LocalObject(996, Painbox.Constructor(Vector3(3240.454f, 5032.849f, 29.60494f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(997, Painbox.Constructor(Vector3(3252.923f, 5029.54f, 27.68544f), painbox_radius_continuous), owning_building_guid = 58) - LocalObject(998, Painbox.Constructor(Vector3(3253.113f, 5042.022f, 27.68544f), painbox_radius_continuous), owning_building_guid = 58) + LocalObject( + 996, + Painbox.Constructor(Vector3(3240.454f, 5032.849f, 29.60494f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 997, + Painbox.Constructor(Vector3(3252.923f, 5029.54f, 27.68544f), painbox_radius_continuous), + owning_building_guid = 58 + ) + LocalObject( + 998, + Painbox.Constructor(Vector3(3253.113f, 5042.022f, 27.68544f), painbox_radius_continuous), + owning_building_guid = 58 + ) } Building67() def Building67(): Unit = { // Name: SW_Cyssor_WG_tower Type: tower_c GUID: 59, MapID: 67 - LocalBuilding("SW_Cyssor_WG_tower", 59, 67, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3260f, 2758f, 34.92906f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1041, CaptureTerminal.Constructor(Vector3(3276.587f, 2757.897f, 44.92806f), secondary_capture), owning_building_guid = 59) + LocalBuilding( + "SW_Cyssor_WG_tower", + 59, + 67, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3260f, 2758f, 34.92906f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1041, + CaptureTerminal.Constructor(Vector3(3276.587f, 2757.897f, 44.92806f), secondary_capture), + owning_building_guid = 59 + ) LocalObject(354, Door.Constructor(Vector3(3272f, 2750f, 36.45006f)), owning_building_guid = 59) LocalObject(355, Door.Constructor(Vector3(3272f, 2750f, 56.44906f)), owning_building_guid = 59) LocalObject(356, Door.Constructor(Vector3(3272f, 2766f, 36.45006f)), owning_building_guid = 59) LocalObject(357, Door.Constructor(Vector3(3272f, 2766f, 56.44906f)), owning_building_guid = 59) LocalObject(1055, Door.Constructor(Vector3(3271.146f, 2746.794f, 26.26506f)), owning_building_guid = 59) LocalObject(1056, Door.Constructor(Vector3(3271.146f, 2763.204f, 26.26506f)), owning_building_guid = 59) - LocalObject(578, IFFLock.Constructor(Vector3(3269.957f, 2766.811f, 36.39006f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 356) - LocalObject(579, IFFLock.Constructor(Vector3(3269.957f, 2766.811f, 56.39006f), Vector3(0, 0, 0)), owning_building_guid = 59, door_guid = 357) - LocalObject(580, IFFLock.Constructor(Vector3(3274.047f, 2749.189f, 36.39006f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 354) - LocalObject(581, IFFLock.Constructor(Vector3(3274.047f, 2749.189f, 56.39006f), Vector3(0, 0, 180)), owning_building_guid = 59, door_guid = 355) + LocalObject( + 578, + IFFLock.Constructor(Vector3(3269.957f, 2766.811f, 36.39006f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 356 + ) + LocalObject( + 579, + IFFLock.Constructor(Vector3(3269.957f, 2766.811f, 56.39006f), Vector3(0, 0, 0)), + owning_building_guid = 59, + door_guid = 357 + ) + LocalObject( + 580, + IFFLock.Constructor(Vector3(3274.047f, 2749.189f, 36.39006f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 354 + ) + LocalObject( + 581, + IFFLock.Constructor(Vector3(3274.047f, 2749.189f, 56.39006f), Vector3(0, 0, 180)), + owning_building_guid = 59, + door_guid = 355 + ) LocalObject(636, Locker.Constructor(Vector3(3275.716f, 2742.963f, 24.92306f)), owning_building_guid = 59) LocalObject(637, Locker.Constructor(Vector3(3275.751f, 2764.835f, 24.92306f)), owning_building_guid = 59) LocalObject(638, Locker.Constructor(Vector3(3277.053f, 2742.963f, 24.92306f)), owning_building_guid = 59) @@ -622,39 +1974,126 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(641, Locker.Constructor(Vector3(3279.741f, 2764.835f, 24.92306f)), owning_building_guid = 59) LocalObject(642, Locker.Constructor(Vector3(3281.143f, 2742.963f, 24.92306f)), owning_building_guid = 59) LocalObject(643, Locker.Constructor(Vector3(3281.143f, 2764.835f, 24.92306f)), owning_building_guid = 59) - LocalObject(899, Terminal.Constructor(Vector3(3281.445f, 2748.129f, 26.26106f), order_terminal), owning_building_guid = 59) - LocalObject(900, Terminal.Constructor(Vector3(3281.445f, 2753.853f, 26.26106f), order_terminal), owning_building_guid = 59) - LocalObject(901, Terminal.Constructor(Vector3(3281.445f, 2759.234f, 26.26106f), order_terminal), owning_building_guid = 59) - LocalObject(1025, SpawnTube.Constructor(Vector3(3270.706f, 2745.742f, 24.41106f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(1026, SpawnTube.Constructor(Vector3(3270.706f, 2762.152f, 24.41106f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 59) - LocalObject(969, ProximityTerminal.Constructor(Vector3(3258.907f, 2752.725f, 62.49906f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(970, Terminal.Constructor(Vector3(3258.907f, 2752.725f, 62.49906f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(972, ProximityTerminal.Constructor(Vector3(3258.907f, 2763.17f, 62.49906f), pad_landing_tower_frame), owning_building_guid = 59) - LocalObject(973, Terminal.Constructor(Vector3(3258.907f, 2763.17f, 62.49906f), air_rearm_terminal), owning_building_guid = 59) - LocalObject(689, FacilityTurret.Constructor(Vector3(3245.07f, 2743.045f, 53.87106f), manned_turret), owning_building_guid = 59) + LocalObject( + 899, + Terminal.Constructor(Vector3(3281.445f, 2748.129f, 26.26106f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 900, + Terminal.Constructor(Vector3(3281.445f, 2753.853f, 26.26106f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 901, + Terminal.Constructor(Vector3(3281.445f, 2759.234f, 26.26106f), order_terminal), + owning_building_guid = 59 + ) + LocalObject( + 1025, + SpawnTube.Constructor(Vector3(3270.706f, 2745.742f, 24.41106f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 1026, + SpawnTube.Constructor(Vector3(3270.706f, 2762.152f, 24.41106f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 59 + ) + LocalObject( + 969, + ProximityTerminal.Constructor(Vector3(3258.907f, 2752.725f, 62.49906f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 970, + Terminal.Constructor(Vector3(3258.907f, 2752.725f, 62.49906f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 972, + ProximityTerminal.Constructor(Vector3(3258.907f, 2763.17f, 62.49906f), pad_landing_tower_frame), + owning_building_guid = 59 + ) + LocalObject( + 973, + Terminal.Constructor(Vector3(3258.907f, 2763.17f, 62.49906f), air_rearm_terminal), + owning_building_guid = 59 + ) + LocalObject( + 689, + FacilityTurret.Constructor(Vector3(3245.07f, 2743.045f, 53.87106f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(689, 5010) - LocalObject(691, FacilityTurret.Constructor(Vector3(3283.497f, 2772.957f, 53.87106f), manned_turret), owning_building_guid = 59) + LocalObject( + 691, + FacilityTurret.Constructor(Vector3(3283.497f, 2772.957f, 53.87106f), manned_turret), + owning_building_guid = 59 + ) TurretToWeapon(691, 5011) - LocalObject(999, Painbox.Constructor(Vector3(3264.454f, 2750.849f, 26.94856f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1000, Painbox.Constructor(Vector3(3276.923f, 2747.54f, 25.02906f), painbox_radius_continuous), owning_building_guid = 59) - LocalObject(1001, Painbox.Constructor(Vector3(3277.113f, 2760.022f, 25.02906f), painbox_radius_continuous), owning_building_guid = 59) + LocalObject( + 999, + Painbox.Constructor(Vector3(3264.454f, 2750.849f, 26.94856f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1000, + Painbox.Constructor(Vector3(3276.923f, 2747.54f, 25.02906f), painbox_radius_continuous), + owning_building_guid = 59 + ) + LocalObject( + 1001, + Painbox.Constructor(Vector3(3277.113f, 2760.022f, 25.02906f), painbox_radius_continuous), + owning_building_guid = 59 + ) } Building61() def Building61(): Unit = { // Name: N_Cyssor_WG_tower Type: tower_c GUID: 60, MapID: 61 - LocalBuilding("N_Cyssor_WG_tower", 60, 61, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3906f, 3832f, 46.40522f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1042, CaptureTerminal.Constructor(Vector3(3922.587f, 3831.897f, 56.40422f), secondary_capture), owning_building_guid = 60) + LocalBuilding( + "N_Cyssor_WG_tower", + 60, + 61, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3906f, 3832f, 46.40522f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1042, + CaptureTerminal.Constructor(Vector3(3922.587f, 3831.897f, 56.40422f), secondary_capture), + owning_building_guid = 60 + ) LocalObject(358, Door.Constructor(Vector3(3918f, 3824f, 47.92622f)), owning_building_guid = 60) LocalObject(359, Door.Constructor(Vector3(3918f, 3824f, 67.92522f)), owning_building_guid = 60) LocalObject(360, Door.Constructor(Vector3(3918f, 3840f, 47.92622f)), owning_building_guid = 60) LocalObject(361, Door.Constructor(Vector3(3918f, 3840f, 67.92522f)), owning_building_guid = 60) LocalObject(1057, Door.Constructor(Vector3(3917.146f, 3820.794f, 37.74123f)), owning_building_guid = 60) LocalObject(1058, Door.Constructor(Vector3(3917.146f, 3837.204f, 37.74123f)), owning_building_guid = 60) - LocalObject(582, IFFLock.Constructor(Vector3(3915.957f, 3840.811f, 47.86622f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 360) - LocalObject(583, IFFLock.Constructor(Vector3(3915.957f, 3840.811f, 67.86623f), Vector3(0, 0, 0)), owning_building_guid = 60, door_guid = 361) - LocalObject(584, IFFLock.Constructor(Vector3(3920.047f, 3823.189f, 47.86622f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 358) - LocalObject(585, IFFLock.Constructor(Vector3(3920.047f, 3823.189f, 67.86623f), Vector3(0, 0, 180)), owning_building_guid = 60, door_guid = 359) + LocalObject( + 582, + IFFLock.Constructor(Vector3(3915.957f, 3840.811f, 47.86622f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 360 + ) + LocalObject( + 583, + IFFLock.Constructor(Vector3(3915.957f, 3840.811f, 67.86623f), Vector3(0, 0, 0)), + owning_building_guid = 60, + door_guid = 361 + ) + LocalObject( + 584, + IFFLock.Constructor(Vector3(3920.047f, 3823.189f, 47.86622f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 358 + ) + LocalObject( + 585, + IFFLock.Constructor(Vector3(3920.047f, 3823.189f, 67.86623f), Vector3(0, 0, 180)), + owning_building_guid = 60, + door_guid = 359 + ) LocalObject(644, Locker.Constructor(Vector3(3921.716f, 3816.963f, 36.39922f)), owning_building_guid = 60) LocalObject(645, Locker.Constructor(Vector3(3921.751f, 3838.835f, 36.39922f)), owning_building_guid = 60) LocalObject(646, Locker.Constructor(Vector3(3923.053f, 3816.963f, 36.39922f)), owning_building_guid = 60) @@ -663,39 +2102,126 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(649, Locker.Constructor(Vector3(3925.741f, 3838.835f, 36.39922f)), owning_building_guid = 60) LocalObject(650, Locker.Constructor(Vector3(3927.143f, 3816.963f, 36.39922f)), owning_building_guid = 60) LocalObject(651, Locker.Constructor(Vector3(3927.143f, 3838.835f, 36.39922f)), owning_building_guid = 60) - LocalObject(902, Terminal.Constructor(Vector3(3927.445f, 3822.129f, 37.73722f), order_terminal), owning_building_guid = 60) - LocalObject(903, Terminal.Constructor(Vector3(3927.445f, 3827.853f, 37.73722f), order_terminal), owning_building_guid = 60) - LocalObject(904, Terminal.Constructor(Vector3(3927.445f, 3833.234f, 37.73722f), order_terminal), owning_building_guid = 60) - LocalObject(1027, SpawnTube.Constructor(Vector3(3916.706f, 3819.742f, 35.88722f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(1028, SpawnTube.Constructor(Vector3(3916.706f, 3836.152f, 35.88722f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 60) - LocalObject(975, ProximityTerminal.Constructor(Vector3(3904.907f, 3826.725f, 73.97522f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(976, Terminal.Constructor(Vector3(3904.907f, 3826.725f, 73.97522f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(978, ProximityTerminal.Constructor(Vector3(3904.907f, 3837.17f, 73.97522f), pad_landing_tower_frame), owning_building_guid = 60) - LocalObject(979, Terminal.Constructor(Vector3(3904.907f, 3837.17f, 73.97522f), air_rearm_terminal), owning_building_guid = 60) - LocalObject(692, FacilityTurret.Constructor(Vector3(3891.07f, 3817.045f, 65.34722f), manned_turret), owning_building_guid = 60) + LocalObject( + 902, + Terminal.Constructor(Vector3(3927.445f, 3822.129f, 37.73722f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 903, + Terminal.Constructor(Vector3(3927.445f, 3827.853f, 37.73722f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 904, + Terminal.Constructor(Vector3(3927.445f, 3833.234f, 37.73722f), order_terminal), + owning_building_guid = 60 + ) + LocalObject( + 1027, + SpawnTube.Constructor(Vector3(3916.706f, 3819.742f, 35.88722f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 1028, + SpawnTube.Constructor(Vector3(3916.706f, 3836.152f, 35.88722f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 60 + ) + LocalObject( + 975, + ProximityTerminal.Constructor(Vector3(3904.907f, 3826.725f, 73.97522f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 976, + Terminal.Constructor(Vector3(3904.907f, 3826.725f, 73.97522f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 978, + ProximityTerminal.Constructor(Vector3(3904.907f, 3837.17f, 73.97522f), pad_landing_tower_frame), + owning_building_guid = 60 + ) + LocalObject( + 979, + Terminal.Constructor(Vector3(3904.907f, 3837.17f, 73.97522f), air_rearm_terminal), + owning_building_guid = 60 + ) + LocalObject( + 692, + FacilityTurret.Constructor(Vector3(3891.07f, 3817.045f, 65.34722f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(692, 5012) - LocalObject(693, FacilityTurret.Constructor(Vector3(3929.497f, 3846.957f, 65.34722f), manned_turret), owning_building_guid = 60) + LocalObject( + 693, + FacilityTurret.Constructor(Vector3(3929.497f, 3846.957f, 65.34722f), manned_turret), + owning_building_guid = 60 + ) TurretToWeapon(693, 5013) - LocalObject(1002, Painbox.Constructor(Vector3(3910.454f, 3824.849f, 38.42472f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1003, Painbox.Constructor(Vector3(3922.923f, 3821.54f, 36.50523f), painbox_radius_continuous), owning_building_guid = 60) - LocalObject(1004, Painbox.Constructor(Vector3(3923.113f, 3834.022f, 36.50523f), painbox_radius_continuous), owning_building_guid = 60) + LocalObject( + 1002, + Painbox.Constructor(Vector3(3910.454f, 3824.849f, 38.42472f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1003, + Painbox.Constructor(Vector3(3922.923f, 3821.54f, 36.50523f), painbox_radius_continuous), + owning_building_guid = 60 + ) + LocalObject( + 1004, + Painbox.Constructor(Vector3(3923.113f, 3834.022f, 36.50523f), painbox_radius_continuous), + owning_building_guid = 60 + ) } Building62() def Building62(): Unit = { // Name: SE_Forseral_WG_tower Type: tower_c GUID: 61, MapID: 62 - LocalBuilding("SE_Forseral_WG_tower", 61, 62, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5488f, 4168f, 35.9291f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1046, CaptureTerminal.Constructor(Vector3(5504.587f, 4167.897f, 45.9281f), secondary_capture), owning_building_guid = 61) + LocalBuilding( + "SE_Forseral_WG_tower", + 61, + 62, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5488f, 4168f, 35.9291f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1046, + CaptureTerminal.Constructor(Vector3(5504.587f, 4167.897f, 45.9281f), secondary_capture), + owning_building_guid = 61 + ) LocalObject(376, Door.Constructor(Vector3(5500f, 4160f, 37.4501f)), owning_building_guid = 61) LocalObject(377, Door.Constructor(Vector3(5500f, 4160f, 57.4491f)), owning_building_guid = 61) LocalObject(378, Door.Constructor(Vector3(5500f, 4176f, 37.4501f)), owning_building_guid = 61) LocalObject(379, Door.Constructor(Vector3(5500f, 4176f, 57.4491f)), owning_building_guid = 61) LocalObject(1065, Door.Constructor(Vector3(5499.146f, 4156.794f, 27.2651f)), owning_building_guid = 61) LocalObject(1066, Door.Constructor(Vector3(5499.146f, 4173.204f, 27.2651f)), owning_building_guid = 61) - LocalObject(600, IFFLock.Constructor(Vector3(5497.957f, 4176.811f, 37.3901f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 378) - LocalObject(601, IFFLock.Constructor(Vector3(5497.957f, 4176.811f, 57.39011f), Vector3(0, 0, 0)), owning_building_guid = 61, door_guid = 379) - LocalObject(602, IFFLock.Constructor(Vector3(5502.047f, 4159.189f, 37.3901f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 376) - LocalObject(603, IFFLock.Constructor(Vector3(5502.047f, 4159.189f, 57.39011f), Vector3(0, 0, 180)), owning_building_guid = 61, door_guid = 377) + LocalObject( + 600, + IFFLock.Constructor(Vector3(5497.957f, 4176.811f, 37.3901f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 378 + ) + LocalObject( + 601, + IFFLock.Constructor(Vector3(5497.957f, 4176.811f, 57.39011f), Vector3(0, 0, 0)), + owning_building_guid = 61, + door_guid = 379 + ) + LocalObject( + 602, + IFFLock.Constructor(Vector3(5502.047f, 4159.189f, 37.3901f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 376 + ) + LocalObject( + 603, + IFFLock.Constructor(Vector3(5502.047f, 4159.189f, 57.39011f), Vector3(0, 0, 180)), + owning_building_guid = 61, + door_guid = 377 + ) LocalObject(676, Locker.Constructor(Vector3(5503.716f, 4152.963f, 25.9231f)), owning_building_guid = 61) LocalObject(677, Locker.Constructor(Vector3(5503.751f, 4174.835f, 25.9231f)), owning_building_guid = 61) LocalObject(678, Locker.Constructor(Vector3(5505.053f, 4152.963f, 25.9231f)), owning_building_guid = 61) @@ -704,28 +2230,96 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(681, Locker.Constructor(Vector3(5507.741f, 4174.835f, 25.9231f)), owning_building_guid = 61) LocalObject(682, Locker.Constructor(Vector3(5509.143f, 4152.963f, 25.9231f)), owning_building_guid = 61) LocalObject(683, Locker.Constructor(Vector3(5509.143f, 4174.835f, 25.9231f)), owning_building_guid = 61) - LocalObject(952, Terminal.Constructor(Vector3(5509.445f, 4158.129f, 27.2611f), order_terminal), owning_building_guid = 61) - LocalObject(953, Terminal.Constructor(Vector3(5509.445f, 4163.853f, 27.2611f), order_terminal), owning_building_guid = 61) - LocalObject(954, Terminal.Constructor(Vector3(5509.445f, 4169.234f, 27.2611f), order_terminal), owning_building_guid = 61) - LocalObject(1035, SpawnTube.Constructor(Vector3(5498.706f, 4155.742f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(1036, SpawnTube.Constructor(Vector3(5498.706f, 4172.152f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 61) - LocalObject(981, ProximityTerminal.Constructor(Vector3(5486.907f, 4162.725f, 63.4991f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(982, Terminal.Constructor(Vector3(5486.907f, 4162.725f, 63.4991f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(984, ProximityTerminal.Constructor(Vector3(5486.907f, 4173.17f, 63.4991f), pad_landing_tower_frame), owning_building_guid = 61) - LocalObject(985, Terminal.Constructor(Vector3(5486.907f, 4173.17f, 63.4991f), air_rearm_terminal), owning_building_guid = 61) - LocalObject(698, FacilityTurret.Constructor(Vector3(5473.07f, 4153.045f, 54.8711f), manned_turret), owning_building_guid = 61) + LocalObject( + 952, + Terminal.Constructor(Vector3(5509.445f, 4158.129f, 27.2611f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 953, + Terminal.Constructor(Vector3(5509.445f, 4163.853f, 27.2611f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 954, + Terminal.Constructor(Vector3(5509.445f, 4169.234f, 27.2611f), order_terminal), + owning_building_guid = 61 + ) + LocalObject( + 1035, + SpawnTube.Constructor(Vector3(5498.706f, 4155.742f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 1036, + SpawnTube.Constructor(Vector3(5498.706f, 4172.152f, 25.4111f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 61 + ) + LocalObject( + 981, + ProximityTerminal.Constructor(Vector3(5486.907f, 4162.725f, 63.4991f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 982, + Terminal.Constructor(Vector3(5486.907f, 4162.725f, 63.4991f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 984, + ProximityTerminal.Constructor(Vector3(5486.907f, 4173.17f, 63.4991f), pad_landing_tower_frame), + owning_building_guid = 61 + ) + LocalObject( + 985, + Terminal.Constructor(Vector3(5486.907f, 4173.17f, 63.4991f), air_rearm_terminal), + owning_building_guid = 61 + ) + LocalObject( + 698, + FacilityTurret.Constructor(Vector3(5473.07f, 4153.045f, 54.8711f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(698, 5014) - LocalObject(699, FacilityTurret.Constructor(Vector3(5511.497f, 4182.957f, 54.8711f), manned_turret), owning_building_guid = 61) + LocalObject( + 699, + FacilityTurret.Constructor(Vector3(5511.497f, 4182.957f, 54.8711f), manned_turret), + owning_building_guid = 61 + ) TurretToWeapon(699, 5015) - LocalObject(1014, Painbox.Constructor(Vector3(5492.454f, 4160.849f, 27.9486f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1015, Painbox.Constructor(Vector3(5504.923f, 4157.54f, 26.0291f), painbox_radius_continuous), owning_building_guid = 61) - LocalObject(1016, Painbox.Constructor(Vector3(5505.113f, 4170.022f, 26.0291f), painbox_radius_continuous), owning_building_guid = 61) + LocalObject( + 1014, + Painbox.Constructor(Vector3(5492.454f, 4160.849f, 27.9486f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1015, + Painbox.Constructor(Vector3(5504.923f, 4157.54f, 26.0291f), painbox_radius_continuous), + owning_building_guid = 61 + ) + LocalObject( + 1016, + Painbox.Constructor(Vector3(5505.113f, 4170.022f, 26.0291f), painbox_radius_continuous), + owning_building_guid = 61 + ) } Building14() def Building14(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 62, MapID: 14 - LocalBuilding("VT_building_tr", 62, 14, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2728f, 5288f, 35.99899f), Vector3(0f, 0f, 270f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 62, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2728f, 5288f, 35.99899f), + Vector3(0f, 0f, 270f), + VT_building_tr + ) + ) + ) LocalObject(258, Door.Constructor(Vector3(2759.958f, 5246.54f, 38.07499f)), owning_building_guid = 62) LocalObject(259, Door.Constructor(Vector3(2764.546f, 5241.93f, 38.07499f)), owning_building_guid = 62) LocalObject(260, Door.Constructor(Vector3(2764.7f, 5251.282f, 38.07499f)), owning_building_guid = 62) @@ -740,24 +2334,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(431, Door.Constructor(Vector3(2756.232f, 5288.005f, 39.17399f)), owning_building_guid = 62) LocalObject(432, Door.Constructor(Vector3(2764.769f, 5273.84f, 39.17399f)), owning_building_guid = 62) LocalObject(433, Door.Constructor(Vector3(2764.752f, 5302.143f, 39.17399f)), owning_building_guid = 62) - LocalObject(814, Terminal.Constructor(Vector3(2758.388f, 5253.812f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(815, Terminal.Constructor(Vector3(2760.247f, 5255.671f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(816, Terminal.Constructor(Vector3(2762.155f, 5257.58f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(817, Terminal.Constructor(Vector3(2771.832f, 5240.335f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(818, Terminal.Constructor(Vector3(2773.741f, 5242.243f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(819, Terminal.Constructor(Vector3(2775.6f, 5244.102f, 37.35899f), order_terminal), owning_building_guid = 62) - LocalObject(742, SpawnTube.Constructor(Vector3(2760.571f, 5245.914f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 62) - LocalObject(743, SpawnTube.Constructor(Vector3(2763.933f, 5242.552f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 62) - LocalObject(744, SpawnTube.Constructor(Vector3(2765.314f, 5250.658f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 62) - LocalObject(745, SpawnTube.Constructor(Vector3(2768.677f, 5247.296f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 62) - LocalObject(746, SpawnTube.Constructor(Vector3(2770.058f, 5255.401f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 62) - LocalObject(747, SpawnTube.Constructor(Vector3(2773.42f, 5252.039f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 62) + LocalObject( + 814, + Terminal.Constructor(Vector3(2758.388f, 5253.812f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 815, + Terminal.Constructor(Vector3(2760.247f, 5255.671f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 816, + Terminal.Constructor(Vector3(2762.155f, 5257.58f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 817, + Terminal.Constructor(Vector3(2771.832f, 5240.335f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 818, + Terminal.Constructor(Vector3(2773.741f, 5242.243f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 819, + Terminal.Constructor(Vector3(2775.6f, 5244.102f, 37.35899f), order_terminal), + owning_building_guid = 62 + ) + LocalObject( + 742, + SpawnTube.Constructor(Vector3(2760.571f, 5245.914f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 62 + ) + LocalObject( + 743, + SpawnTube.Constructor(Vector3(2763.933f, 5242.552f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 62 + ) + LocalObject( + 744, + SpawnTube.Constructor(Vector3(2765.314f, 5250.658f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 62 + ) + LocalObject( + 745, + SpawnTube.Constructor(Vector3(2768.677f, 5247.296f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 62 + ) + LocalObject( + 746, + SpawnTube.Constructor(Vector3(2770.058f, 5255.401f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 62 + ) + LocalObject( + 747, + SpawnTube.Constructor(Vector3(2773.42f, 5252.039f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 62 + ) } Building43() def Building43(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 63, MapID: 43 - LocalBuilding("VT_building_tr", 63, 43, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2798f, 3038f, 34.92469f), Vector3(0f, 0f, 315f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 63, + 43, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2798f, 3038f, 34.92469f), + Vector3(0f, 0f, 315f), + VT_building_tr + ) + ) + ) LocalObject(264, Door.Constructor(Vector3(2849.914f, 3031.281f, 37.00069f)), owning_building_guid = 63) LocalObject(265, Door.Constructor(Vector3(2849.914f, 3037.987f, 37.00069f)), owning_building_guid = 63) LocalObject(266, Door.Constructor(Vector3(2849.914f, 3044.693f, 37.00069f)), owning_building_guid = 63) @@ -772,24 +2426,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(437, Door.Constructor(Vector3(2817.959f, 3057.967f, 38.09969f)), owning_building_guid = 63) LocalObject(438, Door.Constructor(Vector3(2833.988f, 3022.013f, 38.09969f)), owning_building_guid = 63) LocalObject(439, Door.Constructor(Vector3(2834.012f, 3053.987f, 38.09969f)), owning_building_guid = 63) - LocalObject(826, Terminal.Constructor(Vector3(2843.662f, 3035.313f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(827, Terminal.Constructor(Vector3(2843.662f, 3037.942f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(828, Terminal.Constructor(Vector3(2843.661f, 3040.641f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(833, Terminal.Constructor(Vector3(2862.698f, 3035.29f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(834, Terminal.Constructor(Vector3(2862.699f, 3037.989f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(835, Terminal.Constructor(Vector3(2862.699f, 3040.618f, 36.28469f), order_terminal), owning_building_guid = 63) - LocalObject(748, SpawnTube.Constructor(Vector3(2850.791f, 3031.272f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 63) - LocalObject(749, SpawnTube.Constructor(Vector3(2850.79f, 3037.98f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 63) - LocalObject(750, SpawnTube.Constructor(Vector3(2850.791f, 3044.688f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 63) - LocalObject(751, SpawnTube.Constructor(Vector3(2855.545f, 3031.272f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 63) - LocalObject(752, SpawnTube.Constructor(Vector3(2855.545f, 3037.981f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 63) - LocalObject(753, SpawnTube.Constructor(Vector3(2855.545f, 3044.688f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 63) + LocalObject( + 826, + Terminal.Constructor(Vector3(2843.662f, 3035.313f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 827, + Terminal.Constructor(Vector3(2843.662f, 3037.942f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 828, + Terminal.Constructor(Vector3(2843.661f, 3040.641f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 833, + Terminal.Constructor(Vector3(2862.698f, 3035.29f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 834, + Terminal.Constructor(Vector3(2862.699f, 3037.989f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 835, + Terminal.Constructor(Vector3(2862.699f, 3040.618f, 36.28469f), order_terminal), + owning_building_guid = 63 + ) + LocalObject( + 748, + SpawnTube.Constructor(Vector3(2850.791f, 3031.272f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 63 + ) + LocalObject( + 749, + SpawnTube.Constructor(Vector3(2850.79f, 3037.98f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 63 + ) + LocalObject( + 750, + SpawnTube.Constructor(Vector3(2850.791f, 3044.688f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 63 + ) + LocalObject( + 751, + SpawnTube.Constructor(Vector3(2855.545f, 3031.272f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 63 + ) + LocalObject( + 752, + SpawnTube.Constructor(Vector3(2855.545f, 3037.981f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 63 + ) + LocalObject( + 753, + SpawnTube.Constructor(Vector3(2855.545f, 3044.688f, 36.95669f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 63 + ) } Building13() def Building13(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 64, MapID: 13 - LocalBuilding("VT_building_tr", 64, 13, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2920f, 5052f, 35.99899f), Vector3(0f, 0f, 45f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 64, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2920f, 5052f, 35.99899f), + Vector3(0f, 0f, 45f), + VT_building_tr + ) + ) + ) LocalObject(270, Door.Constructor(Vector3(2913.307f, 5103.915f, 38.07499f)), owning_building_guid = 64) LocalObject(271, Door.Constructor(Vector3(2913.323f, 5110.419f, 38.07499f)), owning_building_guid = 64) LocalObject(272, Door.Constructor(Vector3(2920.013f, 5103.915f, 38.07499f)), owning_building_guid = 64) @@ -804,24 +2518,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(443, Door.Constructor(Vector3(2935.987f, 5087.988f, 39.17399f)), owning_building_guid = 64) LocalObject(444, Door.Constructor(Vector3(2939.959f, 5071.967f, 39.17399f)), owning_building_guid = 64) LocalObject(445, Door.Constructor(Vector3(2956.012f, 5067.987f, 39.17399f)), owning_building_guid = 64) - LocalObject(842, Terminal.Constructor(Vector3(2917.359f, 5097.662f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(843, Terminal.Constructor(Vector3(2917.382f, 5116.699f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(844, Terminal.Constructor(Vector3(2920.058f, 5097.662f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(845, Terminal.Constructor(Vector3(2920.011f, 5116.699f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(846, Terminal.Constructor(Vector3(2922.687f, 5097.662f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(847, Terminal.Constructor(Vector3(2922.71f, 5116.698f, 37.35899f), order_terminal), owning_building_guid = 64) - LocalObject(754, SpawnTube.Constructor(Vector3(2913.312f, 5104.791f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 64) - LocalObject(755, SpawnTube.Constructor(Vector3(2913.312f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(756, SpawnTube.Constructor(Vector3(2920.02f, 5104.79f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 64) - LocalObject(757, SpawnTube.Constructor(Vector3(2920.019f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 64) - LocalObject(758, SpawnTube.Constructor(Vector3(2926.728f, 5104.791f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 64) - LocalObject(759, SpawnTube.Constructor(Vector3(2926.728f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 64) + LocalObject( + 842, + Terminal.Constructor(Vector3(2917.359f, 5097.662f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 843, + Terminal.Constructor(Vector3(2917.382f, 5116.699f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 844, + Terminal.Constructor(Vector3(2920.058f, 5097.662f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(2920.011f, 5116.699f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(2922.687f, 5097.662f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(2922.71f, 5116.698f, 37.35899f), order_terminal), + owning_building_guid = 64 + ) + LocalObject( + 754, + SpawnTube.Constructor(Vector3(2913.312f, 5104.791f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 64 + ) + LocalObject( + 755, + SpawnTube.Constructor(Vector3(2913.312f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 756, + SpawnTube.Constructor(Vector3(2920.02f, 5104.79f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 64 + ) + LocalObject( + 757, + SpawnTube.Constructor(Vector3(2920.019f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) + LocalObject( + 758, + SpawnTube.Constructor(Vector3(2926.728f, 5104.791f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 64 + ) + LocalObject( + 759, + SpawnTube.Constructor(Vector3(2926.728f, 5109.545f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 64 + ) } Building15() def Building15(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 65, MapID: 15 - LocalBuilding("VT_building_tr", 65, 15, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3112f, 5286f, 35.99899f), Vector3(0f, 0f, 180f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 65, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3112f, 5286f, 35.99899f), + Vector3(0f, 0f, 180f), + VT_building_tr + ) + ) + ) LocalObject(276, Door.Constructor(Vector3(3065.93f, 5249.454f, 38.07499f)), owning_building_guid = 65) LocalObject(277, Door.Constructor(Vector3(3070.54f, 5254.042f, 38.07499f)), owning_building_guid = 65) LocalObject(278, Door.Constructor(Vector3(3070.672f, 5244.712f, 38.07499f)), owning_building_guid = 65) @@ -836,24 +2610,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(449, Door.Constructor(Vector3(3097.84f, 5249.231f, 39.17399f)), owning_building_guid = 65) LocalObject(450, Door.Constructor(Vector3(3112.005f, 5257.768f, 39.17399f)), owning_building_guid = 65) LocalObject(451, Door.Constructor(Vector3(3126.143f, 5249.248f, 39.17399f)), owning_building_guid = 65) - LocalObject(874, Terminal.Constructor(Vector3(3064.335f, 5242.168f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(875, Terminal.Constructor(Vector3(3066.243f, 5240.259f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(876, Terminal.Constructor(Vector3(3068.102f, 5238.4f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(877, Terminal.Constructor(Vector3(3077.812f, 5255.612f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(880, Terminal.Constructor(Vector3(3079.671f, 5253.753f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(881, Terminal.Constructor(Vector3(3081.58f, 5251.845f, 37.35899f), order_terminal), owning_building_guid = 65) - LocalObject(760, SpawnTube.Constructor(Vector3(3066.552f, 5250.067f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 65) - LocalObject(761, SpawnTube.Constructor(Vector3(3069.914f, 5253.429f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 65) - LocalObject(762, SpawnTube.Constructor(Vector3(3071.296f, 5245.323f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 65) - LocalObject(763, SpawnTube.Constructor(Vector3(3074.658f, 5248.686f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 65) - LocalObject(764, SpawnTube.Constructor(Vector3(3076.039f, 5240.58f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 65) - LocalObject(765, SpawnTube.Constructor(Vector3(3079.401f, 5243.942f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 65) + LocalObject( + 874, + Terminal.Constructor(Vector3(3064.335f, 5242.168f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 875, + Terminal.Constructor(Vector3(3066.243f, 5240.259f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 876, + Terminal.Constructor(Vector3(3068.102f, 5238.4f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 877, + Terminal.Constructor(Vector3(3077.812f, 5255.612f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 880, + Terminal.Constructor(Vector3(3079.671f, 5253.753f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 881, + Terminal.Constructor(Vector3(3081.58f, 5251.845f, 37.35899f), order_terminal), + owning_building_guid = 65 + ) + LocalObject( + 760, + SpawnTube.Constructor(Vector3(3066.552f, 5250.067f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 65 + ) + LocalObject( + 761, + SpawnTube.Constructor(Vector3(3069.914f, 5253.429f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 65 + ) + LocalObject( + 762, + SpawnTube.Constructor(Vector3(3071.296f, 5245.323f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 65 + ) + LocalObject( + 763, + SpawnTube.Constructor(Vector3(3074.658f, 5248.686f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 65 + ) + LocalObject( + 764, + SpawnTube.Constructor(Vector3(3076.039f, 5240.58f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 65 + ) + LocalObject( + 765, + SpawnTube.Constructor(Vector3(3079.401f, 5243.942f, 38.03099f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 65 + ) } Building42() def Building42(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 66, MapID: 42 - LocalBuilding("VT_building_tr", 66, 42, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3164f, 3102f, 34.9224f), Vector3(0f, 0f, 225f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 66, + 42, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3164f, 3102f, 34.9224f), + Vector3(0f, 0f, 225f), + VT_building_tr + ) + ) + ) LocalObject(288, Door.Constructor(Vector3(3157.266f, 3043.582f, 36.9984f)), owning_building_guid = 66) LocalObject(289, Door.Constructor(Vector3(3157.281f, 3050.086f, 36.9984f)), owning_building_guid = 66) LocalObject(290, Door.Constructor(Vector3(3163.972f, 3043.582f, 36.9984f)), owning_building_guid = 66) @@ -868,24 +2702,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(459, Door.Constructor(Vector3(3179.987f, 3065.988f, 38.0974f)), owning_building_guid = 66) LocalObject(462, Door.Constructor(Vector3(3183.967f, 3082.041f, 38.0974f)), owning_building_guid = 66) LocalObject(463, Door.Constructor(Vector3(3199.988f, 3086.013f, 38.0974f)), owning_building_guid = 66) - LocalObject(890, Terminal.Constructor(Vector3(3161.29f, 3037.302f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(891, Terminal.Constructor(Vector3(3161.313f, 3056.338f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(892, Terminal.Constructor(Vector3(3163.989f, 3037.301f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(893, Terminal.Constructor(Vector3(3163.942f, 3056.338f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(894, Terminal.Constructor(Vector3(3166.618f, 3037.301f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(895, Terminal.Constructor(Vector3(3166.641f, 3056.339f, 36.2824f), order_terminal), owning_building_guid = 66) - LocalObject(772, SpawnTube.Constructor(Vector3(3157.272f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(773, SpawnTube.Constructor(Vector3(3157.272f, 3049.209f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(774, SpawnTube.Constructor(Vector3(3163.981f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(775, SpawnTube.Constructor(Vector3(3163.98f, 3049.21f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 66) - LocalObject(776, SpawnTube.Constructor(Vector3(3170.688f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 66) - LocalObject(777, SpawnTube.Constructor(Vector3(3170.688f, 3049.209f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 66) + LocalObject( + 890, + Terminal.Constructor(Vector3(3161.29f, 3037.302f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 891, + Terminal.Constructor(Vector3(3161.313f, 3056.338f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 892, + Terminal.Constructor(Vector3(3163.989f, 3037.301f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 893, + Terminal.Constructor(Vector3(3163.942f, 3056.338f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 894, + Terminal.Constructor(Vector3(3166.618f, 3037.301f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 895, + Terminal.Constructor(Vector3(3166.641f, 3056.339f, 36.2824f), order_terminal), + owning_building_guid = 66 + ) + LocalObject( + 772, + SpawnTube.Constructor(Vector3(3157.272f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 773, + SpawnTube.Constructor(Vector3(3157.272f, 3049.209f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 774, + SpawnTube.Constructor(Vector3(3163.981f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 775, + SpawnTube.Constructor(Vector3(3163.98f, 3049.21f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) + LocalObject( + 776, + SpawnTube.Constructor(Vector3(3170.688f, 3044.455f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 66 + ) + LocalObject( + 777, + SpawnTube.Constructor(Vector3(3170.688f, 3049.209f, 36.9544f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 66 + ) } Building41() def Building41(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 67, MapID: 41 - LocalBuilding("VT_building_tr", 67, 41, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3196f, 2882f, 34.92251f), Vector3(0f, 0f, 135f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 67, + 41, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3196f, 2882f, 34.92251f), + Vector3(0f, 0f, 135f), + VT_building_tr + ) + ) + ) LocalObject(282, Door.Constructor(Vector3(3137.581f, 2875.323f, 36.99851f)), owning_building_guid = 67) LocalObject(283, Door.Constructor(Vector3(3137.582f, 2882.028f, 36.99851f)), owning_building_guid = 67) LocalObject(284, Door.Constructor(Vector3(3137.582f, 2888.734f, 36.99851f)), owning_building_guid = 67) @@ -900,24 +2794,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(458, Door.Constructor(Vector3(3176.033f, 2901.959f, 38.09751f)), owning_building_guid = 67) LocalObject(460, Door.Constructor(Vector3(3180.013f, 2846.012f, 38.09751f)), owning_building_guid = 67) LocalObject(461, Door.Constructor(Vector3(3180.013f, 2918.012f, 38.09751f)), owning_building_guid = 67) - LocalObject(884, Terminal.Constructor(Vector3(3131.301f, 2879.382f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(885, Terminal.Constructor(Vector3(3131.301f, 2882.011f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(886, Terminal.Constructor(Vector3(3131.302f, 2884.71f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(887, Terminal.Constructor(Vector3(3150.339f, 2879.359f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(888, Terminal.Constructor(Vector3(3150.338f, 2882.058f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(889, Terminal.Constructor(Vector3(3150.338f, 2884.687f, 36.28251f), order_terminal), owning_building_guid = 67) - LocalObject(766, SpawnTube.Constructor(Vector3(3138.455f, 2875.312f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 67) - LocalObject(767, SpawnTube.Constructor(Vector3(3138.455f, 2882.019f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 67) - LocalObject(768, SpawnTube.Constructor(Vector3(3138.455f, 2888.728f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 67) - LocalObject(769, SpawnTube.Constructor(Vector3(3143.209f, 2875.312f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 67) - LocalObject(770, SpawnTube.Constructor(Vector3(3143.21f, 2882.02f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 67) - LocalObject(771, SpawnTube.Constructor(Vector3(3143.209f, 2888.728f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 67) + LocalObject( + 884, + Terminal.Constructor(Vector3(3131.301f, 2879.382f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 885, + Terminal.Constructor(Vector3(3131.301f, 2882.011f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 886, + Terminal.Constructor(Vector3(3131.302f, 2884.71f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 887, + Terminal.Constructor(Vector3(3150.339f, 2879.359f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 888, + Terminal.Constructor(Vector3(3150.338f, 2882.058f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 889, + Terminal.Constructor(Vector3(3150.338f, 2884.687f, 36.28251f), order_terminal), + owning_building_guid = 67 + ) + LocalObject( + 766, + SpawnTube.Constructor(Vector3(3138.455f, 2875.312f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 67 + ) + LocalObject( + 767, + SpawnTube.Constructor(Vector3(3138.455f, 2882.019f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 67 + ) + LocalObject( + 768, + SpawnTube.Constructor(Vector3(3138.455f, 2888.728f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 67 + ) + LocalObject( + 769, + SpawnTube.Constructor(Vector3(3143.209f, 2875.312f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 67 + ) + LocalObject( + 770, + SpawnTube.Constructor(Vector3(3143.21f, 2882.02f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 67 + ) + LocalObject( + 771, + SpawnTube.Constructor(Vector3(3143.209f, 2888.728f, 36.95451f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 67 + ) } Building25() def Building25(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 68, MapID: 25 - LocalBuilding("VT_building_tr", 68, 25, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5026f, 3908f, 35.9291f), Vector3(0f, 0f, 315f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 68, + 25, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5026f, 3908f, 35.9291f), + Vector3(0f, 0f, 315f), + VT_building_tr + ) + ) + ) LocalObject(294, Door.Constructor(Vector3(5077.915f, 3901.281f, 38.0051f)), owning_building_guid = 68) LocalObject(295, Door.Constructor(Vector3(5077.915f, 3907.987f, 38.0051f)), owning_building_guid = 68) LocalObject(296, Door.Constructor(Vector3(5077.915f, 3914.693f, 38.0051f)), owning_building_guid = 68) @@ -932,24 +2886,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(467, Door.Constructor(Vector3(5045.959f, 3927.967f, 39.1041f)), owning_building_guid = 68) LocalObject(468, Door.Constructor(Vector3(5061.988f, 3892.013f, 39.1041f)), owning_building_guid = 68) LocalObject(469, Door.Constructor(Vector3(5062.012f, 3923.987f, 39.1041f)), owning_building_guid = 68) - LocalObject(914, Terminal.Constructor(Vector3(5071.662f, 3905.313f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(915, Terminal.Constructor(Vector3(5071.662f, 3907.942f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(916, Terminal.Constructor(Vector3(5071.662f, 3910.641f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(917, Terminal.Constructor(Vector3(5090.698f, 3905.29f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(918, Terminal.Constructor(Vector3(5090.699f, 3907.989f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(919, Terminal.Constructor(Vector3(5090.699f, 3910.618f, 37.2891f), order_terminal), owning_building_guid = 68) - LocalObject(778, SpawnTube.Constructor(Vector3(5078.791f, 3901.272f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 68) - LocalObject(779, SpawnTube.Constructor(Vector3(5078.79f, 3907.98f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 68) - LocalObject(780, SpawnTube.Constructor(Vector3(5078.791f, 3914.688f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 68) - LocalObject(781, SpawnTube.Constructor(Vector3(5083.545f, 3901.272f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 68) - LocalObject(782, SpawnTube.Constructor(Vector3(5083.545f, 3907.981f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 68) - LocalObject(783, SpawnTube.Constructor(Vector3(5083.545f, 3914.688f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 68) + LocalObject( + 914, + Terminal.Constructor(Vector3(5071.662f, 3905.313f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 915, + Terminal.Constructor(Vector3(5071.662f, 3907.942f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 916, + Terminal.Constructor(Vector3(5071.662f, 3910.641f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 917, + Terminal.Constructor(Vector3(5090.698f, 3905.29f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 918, + Terminal.Constructor(Vector3(5090.699f, 3907.989f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 919, + Terminal.Constructor(Vector3(5090.699f, 3910.618f, 37.2891f), order_terminal), + owning_building_guid = 68 + ) + LocalObject( + 778, + SpawnTube.Constructor(Vector3(5078.791f, 3901.272f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 68 + ) + LocalObject( + 779, + SpawnTube.Constructor(Vector3(5078.79f, 3907.98f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 68 + ) + LocalObject( + 780, + SpawnTube.Constructor(Vector3(5078.791f, 3914.688f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 68 + ) + LocalObject( + 781, + SpawnTube.Constructor(Vector3(5083.545f, 3901.272f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 68 + ) + LocalObject( + 782, + SpawnTube.Constructor(Vector3(5083.545f, 3907.981f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 68 + ) + LocalObject( + 783, + SpawnTube.Constructor(Vector3(5083.545f, 3914.688f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 68 + ) } Building23() def Building23(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 69, MapID: 23 - LocalBuilding("VT_building_tr", 69, 23, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5230f, 3732f, 35.9291f), Vector3(0f, 0f, 45f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 69, + 23, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5230f, 3732f, 35.9291f), + Vector3(0f, 0f, 45f), + VT_building_tr + ) + ) + ) LocalObject(300, Door.Constructor(Vector3(5223.307f, 3783.914f, 38.0051f)), owning_building_guid = 69) LocalObject(301, Door.Constructor(Vector3(5223.323f, 3790.419f, 38.0051f)), owning_building_guid = 69) LocalObject(302, Door.Constructor(Vector3(5230.013f, 3783.914f, 38.0051f)), owning_building_guid = 69) @@ -964,24 +2978,84 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(473, Door.Constructor(Vector3(5245.987f, 3767.988f, 39.1041f)), owning_building_guid = 69) LocalObject(474, Door.Constructor(Vector3(5249.959f, 3751.967f, 39.1041f)), owning_building_guid = 69) LocalObject(475, Door.Constructor(Vector3(5266.012f, 3747.987f, 39.1041f)), owning_building_guid = 69) - LocalObject(930, Terminal.Constructor(Vector3(5227.359f, 3777.661f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(931, Terminal.Constructor(Vector3(5227.382f, 3796.699f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(932, Terminal.Constructor(Vector3(5230.058f, 3777.662f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(933, Terminal.Constructor(Vector3(5230.011f, 3796.699f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(934, Terminal.Constructor(Vector3(5232.687f, 3777.662f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(935, Terminal.Constructor(Vector3(5232.71f, 3796.698f, 37.2891f), order_terminal), owning_building_guid = 69) - LocalObject(784, SpawnTube.Constructor(Vector3(5223.312f, 3784.791f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 69) - LocalObject(785, SpawnTube.Constructor(Vector3(5223.312f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(786, SpawnTube.Constructor(Vector3(5230.02f, 3784.79f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 69) - LocalObject(787, SpawnTube.Constructor(Vector3(5230.019f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 69) - LocalObject(788, SpawnTube.Constructor(Vector3(5236.728f, 3784.791f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 69) - LocalObject(789, SpawnTube.Constructor(Vector3(5236.728f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 69) + LocalObject( + 930, + Terminal.Constructor(Vector3(5227.359f, 3777.661f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 931, + Terminal.Constructor(Vector3(5227.382f, 3796.699f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 932, + Terminal.Constructor(Vector3(5230.058f, 3777.662f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 933, + Terminal.Constructor(Vector3(5230.011f, 3796.699f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 934, + Terminal.Constructor(Vector3(5232.687f, 3777.662f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 935, + Terminal.Constructor(Vector3(5232.71f, 3796.698f, 37.2891f), order_terminal), + owning_building_guid = 69 + ) + LocalObject( + 784, + SpawnTube.Constructor(Vector3(5223.312f, 3784.791f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 69 + ) + LocalObject( + 785, + SpawnTube.Constructor(Vector3(5223.312f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 786, + SpawnTube.Constructor(Vector3(5230.02f, 3784.79f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 69 + ) + LocalObject( + 787, + SpawnTube.Constructor(Vector3(5230.019f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) + LocalObject( + 788, + SpawnTube.Constructor(Vector3(5236.728f, 3784.791f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 69 + ) + LocalObject( + 789, + SpawnTube.Constructor(Vector3(5236.728f, 3789.545f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 69 + ) } Building24() def Building24(): Unit = { // Name: VT_building_tr Type: VT_building_tr GUID: 70, MapID: 24 - LocalBuilding("VT_building_tr", 70, 24, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5440f, 3906f, 35.9291f), Vector3(0f, 0f, 135f), VT_building_tr))) + LocalBuilding( + "VT_building_tr", + 70, + 24, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5440f, 3906f, 35.9291f), + Vector3(0f, 0f, 135f), + VT_building_tr + ) + ) + ) LocalObject(306, Door.Constructor(Vector3(5381.581f, 3899.323f, 38.0051f)), owning_building_guid = 70) LocalObject(307, Door.Constructor(Vector3(5381.582f, 3906.028f, 38.0051f)), owning_building_guid = 70) LocalObject(308, Door.Constructor(Vector3(5381.582f, 3912.734f, 38.0051f)), owning_building_guid = 70) @@ -996,381 +3070,1183 @@ object Map12 { // HOME2 (TERRAN REPUBLIC SANCTUARY) LocalObject(479, Door.Constructor(Vector3(5420.033f, 3925.959f, 39.1041f)), owning_building_guid = 70) LocalObject(480, Door.Constructor(Vector3(5424.013f, 3870.012f, 39.1041f)), owning_building_guid = 70) LocalObject(481, Door.Constructor(Vector3(5424.013f, 3942.012f, 39.1041f)), owning_building_guid = 70) - LocalObject(946, Terminal.Constructor(Vector3(5375.301f, 3903.382f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(947, Terminal.Constructor(Vector3(5375.301f, 3906.011f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(948, Terminal.Constructor(Vector3(5375.302f, 3908.71f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(949, Terminal.Constructor(Vector3(5394.338f, 3903.359f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(950, Terminal.Constructor(Vector3(5394.338f, 3906.058f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(951, Terminal.Constructor(Vector3(5394.338f, 3908.687f, 37.2891f), order_terminal), owning_building_guid = 70) - LocalObject(790, SpawnTube.Constructor(Vector3(5382.455f, 3899.312f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 70) - LocalObject(791, SpawnTube.Constructor(Vector3(5382.455f, 3906.019f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 70) - LocalObject(792, SpawnTube.Constructor(Vector3(5382.455f, 3912.728f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), owning_building_guid = 70) - LocalObject(793, SpawnTube.Constructor(Vector3(5387.209f, 3899.312f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 70) - LocalObject(794, SpawnTube.Constructor(Vector3(5387.21f, 3906.02f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 70) - LocalObject(795, SpawnTube.Constructor(Vector3(5387.209f, 3912.728f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), owning_building_guid = 70) + LocalObject( + 946, + Terminal.Constructor(Vector3(5375.301f, 3903.382f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 947, + Terminal.Constructor(Vector3(5375.301f, 3906.011f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 948, + Terminal.Constructor(Vector3(5375.302f, 3908.71f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 949, + Terminal.Constructor(Vector3(5394.338f, 3903.359f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 950, + Terminal.Constructor(Vector3(5394.338f, 3906.058f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 951, + Terminal.Constructor(Vector3(5394.338f, 3908.687f, 37.2891f), order_terminal), + owning_building_guid = 70 + ) + LocalObject( + 790, + SpawnTube.Constructor(Vector3(5382.455f, 3899.312f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 70 + ) + LocalObject( + 791, + SpawnTube.Constructor(Vector3(5382.455f, 3906.019f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 70 + ) + LocalObject( + 792, + SpawnTube.Constructor(Vector3(5382.455f, 3912.728f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 270)), + owning_building_guid = 70 + ) + LocalObject( + 793, + SpawnTube.Constructor(Vector3(5387.209f, 3899.312f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 70 + ) + LocalObject( + 794, + SpawnTube.Constructor(Vector3(5387.21f, 3906.02f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 70 + ) + LocalObject( + 795, + SpawnTube.Constructor(Vector3(5387.209f, 3912.728f, 37.96111f), respawn_tube_sanctuary, Vector3(0, 0, 90)), + owning_building_guid = 70 + ) } Building8() def Building8(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 71, MapID: 8 - LocalBuilding("vt_dropship", 71, 8, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2754f, 5088f, 35.99899f), Vector3(0f, 0f, 224f), vt_dropship))) - LocalObject(324, Terminal.Constructor(Vector3(2770.8f, 5104.39f, 38.86699f), dropship_vehicle_terminal), owning_building_guid = 71) - LocalObject(312, VehicleSpawnPad.Constructor(Vector3(2756.568f, 5090.507f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 136)), owning_building_guid = 71, terminal_guid = 324) + LocalBuilding( + "vt_dropship", + 71, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2754f, 5088f, 35.99899f), + Vector3(0f, 0f, 224f), + vt_dropship + ) + ) + ) + LocalObject( + 324, + Terminal.Constructor(Vector3(2770.8f, 5104.39f, 38.86699f), dropship_vehicle_terminal), + owning_building_guid = 71 + ) + LocalObject( + 312, + VehicleSpawnPad.Constructor(Vector3(2756.568f, 5090.507f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 136)), + owning_building_guid = 71, + terminal_guid = 324 + ) } Building5() def Building5(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 72, MapID: 5 - LocalBuilding("vt_dropship", 72, 5, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2780f, 5414f, 35.99899f), Vector3(0f, 0f, 134f), vt_dropship))) - LocalObject(325, Terminal.Constructor(Vector3(2796.39f, 5397.201f, 38.86699f), dropship_vehicle_terminal), owning_building_guid = 72) - LocalObject(313, VehicleSpawnPad.Constructor(Vector3(2782.508f, 5411.432f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 226)), owning_building_guid = 72, terminal_guid = 325) + LocalBuilding( + "vt_dropship", + 72, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2780f, 5414f, 35.99899f), + Vector3(0f, 0f, 134f), + vt_dropship + ) + ) + ) + LocalObject( + 325, + Terminal.Constructor(Vector3(2796.39f, 5397.201f, 38.86699f), dropship_vehicle_terminal), + owning_building_guid = 72 + ) + LocalObject( + 313, + VehicleSpawnPad.Constructor(Vector3(2782.508f, 5411.432f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 226)), + owning_building_guid = 72, + terminal_guid = 325 + ) } Building44() def Building44(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 73, MapID: 44 - LocalBuilding("vt_dropship", 73, 44, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2818f, 2864f, 34.92273f), Vector3(0f, 0f, 180f), vt_dropship))) - LocalObject(326, Terminal.Constructor(Vector3(2841.47f, 2864.12f, 37.79073f), dropship_vehicle_terminal), owning_building_guid = 73) - LocalObject(314, VehicleSpawnPad.Constructor(Vector3(2821.589f, 2864.02f, 30.93773f), dropship_pad_doors, Vector3(0, 0, 180)), owning_building_guid = 73, terminal_guid = 326) + LocalBuilding( + "vt_dropship", + 73, + 44, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2818f, 2864f, 34.92273f), + Vector3(0f, 0f, 180f), + vt_dropship + ) + ) + ) + LocalObject( + 326, + Terminal.Constructor(Vector3(2841.47f, 2864.12f, 37.79073f), dropship_vehicle_terminal), + owning_building_guid = 73 + ) + LocalObject( + 314, + VehicleSpawnPad.Constructor(Vector3(2821.589f, 2864.02f, 30.93773f), dropship_pad_doors, Vector3(0, 0, 180)), + owning_building_guid = 73, + terminal_guid = 326 + ) } Building48() def Building48(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 74, MapID: 48 - LocalBuilding("vt_dropship", 74, 48, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2848f, 3148f, 34.92273f), Vector3(0f, 0f, 90f), vt_dropship))) - LocalObject(327, Terminal.Constructor(Vector3(2848.12f, 3124.53f, 37.79073f), dropship_vehicle_terminal), owning_building_guid = 74) - LocalObject(315, VehicleSpawnPad.Constructor(Vector3(2848.02f, 3144.411f, 30.93773f), dropship_pad_doors, Vector3(0, 0, -90)), owning_building_guid = 74, terminal_guid = 327) + LocalBuilding( + "vt_dropship", + 74, + 48, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2848f, 3148f, 34.92273f), + Vector3(0f, 0f, 90f), + vt_dropship + ) + ) + ) + LocalObject( + 327, + Terminal.Constructor(Vector3(2848.12f, 3124.53f, 37.79073f), dropship_vehicle_terminal), + owning_building_guid = 74 + ) + LocalObject( + 315, + VehicleSpawnPad.Constructor(Vector3(2848.02f, 3144.411f, 30.93773f), dropship_pad_doors, Vector3(0, 0, -90)), + owning_building_guid = 74, + terminal_guid = 327 + ) } Building49() def Building49(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 75, MapID: 49 - LocalBuilding("vt_dropship", 75, 49, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3050f, 3186f, 34.91574f), Vector3(0f, 0f, 90f), vt_dropship))) - LocalObject(329, Terminal.Constructor(Vector3(3050.12f, 3162.53f, 37.78374f), dropship_vehicle_terminal), owning_building_guid = 75) - LocalObject(316, VehicleSpawnPad.Constructor(Vector3(3050.02f, 3182.411f, 30.93074f), dropship_pad_doors, Vector3(0, 0, -90)), owning_building_guid = 75, terminal_guid = 329) + LocalBuilding( + "vt_dropship", + 75, + 49, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3050f, 3186f, 34.91574f), + Vector3(0f, 0f, 90f), + vt_dropship + ) + ) + ) + LocalObject( + 329, + Terminal.Constructor(Vector3(3050.12f, 3162.53f, 37.78374f), dropship_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 316, + VehicleSpawnPad.Constructor(Vector3(3050.02f, 3182.411f, 30.93074f), dropship_pad_doors, Vector3(0, 0, -90)), + owning_building_guid = 75, + terminal_guid = 329 + ) } Building6() def Building6(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 76, MapID: 6 - LocalBuilding("vt_dropship", 76, 6, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3062f, 5416f, 35.99899f), Vector3(0f, 0f, 44f), vt_dropship))) - LocalObject(328, Terminal.Constructor(Vector3(3045.2f, 5399.61f, 38.86699f), dropship_vehicle_terminal), owning_building_guid = 76) - LocalObject(317, VehicleSpawnPad.Constructor(Vector3(3059.432f, 5413.493f, 32.01399f), dropship_pad_doors, Vector3(0, 0, -44)), owning_building_guid = 76, terminal_guid = 328) + LocalBuilding( + "vt_dropship", + 76, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3062f, 5416f, 35.99899f), + Vector3(0f, 0f, 44f), + vt_dropship + ) + ) + ) + LocalObject( + 328, + Terminal.Constructor(Vector3(3045.2f, 5399.61f, 38.86699f), dropship_vehicle_terminal), + owning_building_guid = 76 + ) + LocalObject( + 317, + VehicleSpawnPad.Constructor(Vector3(3059.432f, 5413.493f, 32.01399f), dropship_pad_doors, Vector3(0, 0, -44)), + owning_building_guid = 76, + terminal_guid = 328 + ) } Building46() def Building46(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 77, MapID: 46 - LocalBuilding("vt_dropship", 77, 46, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3088f, 2784f, 34.92098f), Vector3(0f, 0f, 270f), vt_dropship))) - LocalObject(331, Terminal.Constructor(Vector3(3087.88f, 2807.47f, 37.78898f), dropship_vehicle_terminal), owning_building_guid = 77) - LocalObject(319, VehicleSpawnPad.Constructor(Vector3(3087.98f, 2787.589f, 30.93598f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 77, terminal_guid = 331) + LocalBuilding( + "vt_dropship", + 77, + 46, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3088f, 2784f, 34.92098f), + Vector3(0f, 0f, 270f), + vt_dropship + ) + ) + ) + LocalObject( + 331, + Terminal.Constructor(Vector3(3087.88f, 2807.47f, 37.78898f), dropship_vehicle_terminal), + owning_building_guid = 77 + ) + LocalObject( + 319, + VehicleSpawnPad.Constructor(Vector3(3087.98f, 2787.589f, 30.93598f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 77, + terminal_guid = 331 + ) } Building7() def Building7(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 78, MapID: 7 - LocalBuilding("vt_dropship", 78, 7, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3090f, 5088f, 35.99899f), Vector3(0f, 0f, 314f), vt_dropship))) - LocalObject(330, Terminal.Constructor(Vector3(3073.61f, 5104.799f, 38.86699f), dropship_vehicle_terminal), owning_building_guid = 78) - LocalObject(318, VehicleSpawnPad.Constructor(Vector3(3087.492f, 5090.568f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 46)), owning_building_guid = 78, terminal_guid = 330) + LocalBuilding( + "vt_dropship", + 78, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3090f, 5088f, 35.99899f), + Vector3(0f, 0f, 314f), + vt_dropship + ) + ) + ) + LocalObject( + 330, + Terminal.Constructor(Vector3(3073.61f, 5104.799f, 38.86699f), dropship_vehicle_terminal), + owning_building_guid = 78 + ) + LocalObject( + 318, + VehicleSpawnPad.Constructor(Vector3(3087.492f, 5090.568f, 32.01399f), dropship_pad_doors, Vector3(0, 0, 46)), + owning_building_guid = 78, + terminal_guid = 330 + ) } Building26() def Building26(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 79, MapID: 26 - LocalBuilding("vt_dropship", 79, 26, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5050f, 3804f, 35.9291f), Vector3(0f, 0f, 180f), vt_dropship))) - LocalObject(333, Terminal.Constructor(Vector3(5073.47f, 3804.12f, 38.7971f), dropship_vehicle_terminal), owning_building_guid = 79) - LocalObject(321, VehicleSpawnPad.Constructor(Vector3(5053.589f, 3804.02f, 31.9441f), dropship_pad_doors, Vector3(0, 0, 180)), owning_building_guid = 79, terminal_guid = 333) + LocalBuilding( + "vt_dropship", + 79, + 26, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5050f, 3804f, 35.9291f), + Vector3(0f, 0f, 180f), + vt_dropship + ) + ) + ) + LocalObject( + 333, + Terminal.Constructor(Vector3(5073.47f, 3804.12f, 38.7971f), dropship_vehicle_terminal), + owning_building_guid = 79 + ) + LocalObject( + 321, + VehicleSpawnPad.Constructor(Vector3(5053.589f, 3804.02f, 31.9441f), dropship_pad_doors, Vector3(0, 0, 180)), + owning_building_guid = 79, + terminal_guid = 333 + ) } Building30() def Building30(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 80, MapID: 30 - LocalBuilding("vt_dropship", 80, 30, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5050f, 4014f, 35.9291f), Vector3(0f, 0f, 90f), vt_dropship))) - LocalObject(332, Terminal.Constructor(Vector3(5050.12f, 3990.53f, 38.7971f), dropship_vehicle_terminal), owning_building_guid = 80) - LocalObject(320, VehicleSpawnPad.Constructor(Vector3(5050.02f, 4010.411f, 31.9441f), dropship_pad_doors, Vector3(0, 0, -90)), owning_building_guid = 80, terminal_guid = 332) + LocalBuilding( + "vt_dropship", + 80, + 30, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5050f, 4014f, 35.9291f), Vector3(0f, 0f, 90f), vt_dropship) + ) + ) + LocalObject( + 332, + Terminal.Constructor(Vector3(5050.12f, 3990.53f, 38.7971f), dropship_vehicle_terminal), + owning_building_guid = 80 + ) + LocalObject( + 320, + VehicleSpawnPad.Constructor(Vector3(5050.02f, 4010.411f, 31.9441f), dropship_pad_doors, Vector3(0, 0, -90)), + owning_building_guid = 80, + terminal_guid = 332 + ) } Building31() def Building31(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 81, MapID: 31 - LocalBuilding("vt_dropship", 81, 31, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5414f, 4010f, 35.9291f), Vector3(0f, 0f, 90f), vt_dropship))) - LocalObject(335, Terminal.Constructor(Vector3(5414.12f, 3986.53f, 38.7971f), dropship_vehicle_terminal), owning_building_guid = 81) - LocalObject(323, VehicleSpawnPad.Constructor(Vector3(5414.02f, 4006.411f, 31.9441f), dropship_pad_doors, Vector3(0, 0, -90)), owning_building_guid = 81, terminal_guid = 335) + LocalBuilding( + "vt_dropship", + 81, + 31, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5414f, 4010f, 35.9291f), Vector3(0f, 0f, 90f), vt_dropship) + ) + ) + LocalObject( + 335, + Terminal.Constructor(Vector3(5414.12f, 3986.53f, 38.7971f), dropship_vehicle_terminal), + owning_building_guid = 81 + ) + LocalObject( + 323, + VehicleSpawnPad.Constructor(Vector3(5414.02f, 4006.411f, 31.9441f), dropship_pad_doors, Vector3(0, 0, -90)), + owning_building_guid = 81, + terminal_guid = 335 + ) } Building28() def Building28(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 82, MapID: 28 - LocalBuilding("vt_dropship", 82, 28, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5416f, 3812f, 35.9291f), Vector3(0f, 0f, 0f), vt_dropship))) - LocalObject(334, Terminal.Constructor(Vector3(5392.53f, 3811.88f, 38.7971f), dropship_vehicle_terminal), owning_building_guid = 82) - LocalObject(322, VehicleSpawnPad.Constructor(Vector3(5412.411f, 3811.98f, 31.9441f), dropship_pad_doors, Vector3(0, 0, 0)), owning_building_guid = 82, terminal_guid = 334) + LocalBuilding( + "vt_dropship", + 82, + 28, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5416f, 3812f, 35.9291f), Vector3(0f, 0f, 0f), vt_dropship) + ) + ) + LocalObject( + 334, + Terminal.Constructor(Vector3(5392.53f, 3811.88f, 38.7971f), dropship_vehicle_terminal), + owning_building_guid = 82 + ) + LocalObject( + 322, + VehicleSpawnPad.Constructor(Vector3(5412.411f, 3811.98f, 31.9441f), dropship_pad_doors, Vector3(0, 0, 0)), + owning_building_guid = 82, + terminal_guid = 334 + ) } Building17() def Building17(): Unit = { // Name: TR_NW_Tport_03 Type: vt_spawn GUID: 83, MapID: 17 - LocalBuilding("TR_NW_Tport_03", 83, 17, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2842f, 5166f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_NW_Tport_03", + 83, + 17, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2842f, 5166f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building19() def Building19(): Unit = { // Name: TR_NW_Tport_01 Type: vt_spawn GUID: 84, MapID: 19 - LocalBuilding("TR_NW_Tport_01", 84, 19, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2852f, 5312f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_NW_Tport_01", + 84, + 19, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2852f, 5312f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building54() def Building54(): Unit = { // Name: TR_SW_Tport_03 Type: vt_spawn GUID: 85, MapID: 54 - LocalBuilding("TR_SW_Tport_03", 85, 54, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2928f, 2910f, 34.92174f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_SW_Tport_03", + 85, + 54, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2928f, 2910f, 34.92174f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building56() def Building56(): Unit = { // Name: TR_SW_Tport_01 Type: vt_spawn GUID: 86, MapID: 56 - LocalBuilding("TR_SW_Tport_01", 86, 56, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2938f, 3056f, 34.91694f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_SW_Tport_01", + 86, + 56, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2938f, 3056f, 34.91694f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building16() def Building16(): Unit = { // Name: TR_NW_Tport_02 Type: vt_spawn GUID: 87, MapID: 16 - LocalBuilding("TR_NW_Tport_02", 87, 16, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2990f, 5312f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_NW_Tport_02", + 87, + 16, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2990f, 5312f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building18() def Building18(): Unit = { // Name: TR_NW_Tport_04 Type: vt_spawn GUID: 88, MapID: 18 - LocalBuilding("TR_NW_Tport_04", 88, 18, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2998f, 5166f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_NW_Tport_04", + 88, + 18, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2998f, 5166f, 35.99899f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building57() def Building57(): Unit = { // Name: TR_SW_Tport_02 Type: vt_spawn GUID: 89, MapID: 57 - LocalBuilding("TR_SW_Tport_02", 89, 57, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3076f, 3056f, 34.91595f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_SW_Tport_02", + 89, + 57, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3076f, 3056f, 34.91595f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building55() def Building55(): Unit = { // Name: TR_SW_Tport_04 Type: vt_spawn GUID: 90, MapID: 55 - LocalBuilding("TR_SW_Tport_04", 90, 55, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3084f, 2910f, 34.91639f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_SW_Tport_04", + 90, + 55, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3084f, 2910f, 34.91639f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building36() def Building36(): Unit = { // Name: TR_E_Tport_03 Type: vt_spawn GUID: 91, MapID: 36 - LocalBuilding("TR_E_Tport_03", 91, 36, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5154f, 3834f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_E_Tport_03", + 91, + 36, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5154f, 3834f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building38() def Building38(): Unit = { // Name: TR_E_Tport_01 Type: vt_spawn GUID: 92, MapID: 38 - LocalBuilding("TR_E_Tport_01", 92, 38, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5164f, 3982f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_E_Tport_01", + 92, + 38, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5164f, 3982f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building39() def Building39(): Unit = { // Name: TR_E_Tport_02 Type: vt_spawn GUID: 93, MapID: 39 - LocalBuilding("TR_E_Tport_02", 93, 39, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5302f, 3982f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_E_Tport_02", + 93, + 39, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5302f, 3982f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building37() def Building37(): Unit = { // Name: TR_E_Tport_04 Type: vt_spawn GUID: 94, MapID: 37 - LocalBuilding("TR_E_Tport_04", 94, 37, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5310f, 3834f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "TR_E_Tport_04", + 94, + 37, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5310f, 3834f, 35.9291f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building11() def Building11(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 95, MapID: 11 - LocalBuilding("vt_vehicle", 95, 11, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2780f, 5160f, 35.99899f), Vector3(0f, 0f, 225f), vt_vehicle))) - LocalObject(1079, Terminal.Constructor(Vector3(2790.242f, 5170.253f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 95) - LocalObject(724, VehicleSpawnPad.Constructor(Vector3(2779.915f, 5159.877f, 34.52799f), mb_pad_creation, Vector3(0, 0, 225)), owning_building_guid = 95, terminal_guid = 1079) + LocalBuilding( + "vt_vehicle", + 95, + 11, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2780f, 5160f, 35.99899f), + Vector3(0f, 0f, 225f), + vt_vehicle + ) + ) + ) + LocalObject( + 1079, + Terminal.Constructor(Vector3(2790.242f, 5170.253f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 95 + ) + LocalObject( + 724, + VehicleSpawnPad.Constructor(Vector3(2779.915f, 5159.877f, 34.52799f), mb_pad_creation, Vector3(0, 0, 225)), + owning_building_guid = 95, + terminal_guid = 1079 + ) } Building12() def Building12(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 96, MapID: 12 - LocalBuilding("vt_vehicle", 96, 12, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2826f, 5114f, 35.99899f), Vector3(0f, 0f, 225f), vt_vehicle))) - LocalObject(1080, Terminal.Constructor(Vector3(2836.242f, 5124.253f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 96) - LocalObject(725, VehicleSpawnPad.Constructor(Vector3(2825.915f, 5113.877f, 34.52799f), mb_pad_creation, Vector3(0, 0, 225)), owning_building_guid = 96, terminal_guid = 1080) + LocalBuilding( + "vt_vehicle", + 96, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2826f, 5114f, 35.99899f), + Vector3(0f, 0f, 225f), + vt_vehicle + ) + ) + ) + LocalObject( + 1080, + Terminal.Constructor(Vector3(2836.242f, 5124.253f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 96 + ) + LocalObject( + 725, + VehicleSpawnPad.Constructor(Vector3(2825.915f, 5113.877f, 34.52799f), mb_pad_creation, Vector3(0, 0, 225)), + owning_building_guid = 96, + terminal_guid = 1080 + ) } Building47() def Building47(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 97, MapID: 47 - LocalBuilding("vt_vehicle", 97, 47, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2848f, 2946f, 34.92273f), Vector3(0f, 0f, 180f), vt_vehicle))) - LocalObject(1081, Terminal.Constructor(Vector3(2862.492f, 2946.008f, 37.60973f), ground_vehicle_terminal), owning_building_guid = 97) - LocalObject(726, VehicleSpawnPad.Constructor(Vector3(2847.853f, 2945.973f, 33.45173f), mb_pad_creation, Vector3(0, 0, -90)), owning_building_guid = 97, terminal_guid = 1081) + LocalBuilding( + "vt_vehicle", + 97, + 47, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2848f, 2946f, 34.92273f), + Vector3(0f, 0f, 180f), + vt_vehicle + ) + ) + ) + LocalObject( + 1081, + Terminal.Constructor(Vector3(2862.492f, 2946.008f, 37.60973f), ground_vehicle_terminal), + owning_building_guid = 97 + ) + LocalObject( + 726, + VehicleSpawnPad.Constructor(Vector3(2847.853f, 2945.973f, 33.45173f), mb_pad_creation, Vector3(0, 0, -90)), + owning_building_guid = 97, + terminal_guid = 1081 + ) } Building20() def Building20(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 98, MapID: 20 - LocalBuilding("vt_vehicle", 98, 20, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2874f, 5402f, 35.99899f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1082, Terminal.Constructor(Vector3(2874.008f, 5387.508f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 98) - LocalObject(727, VehicleSpawnPad.Constructor(Vector3(2873.973f, 5402.147f, 34.52799f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 98, terminal_guid = 1082) + LocalBuilding( + "vt_vehicle", + 98, + 20, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2874f, 5402f, 35.99899f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1082, + Terminal.Constructor(Vector3(2874.008f, 5387.508f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 98 + ) + LocalObject( + 727, + VehicleSpawnPad.Constructor(Vector3(2873.973f, 5402.147f, 34.52799f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 98, + terminal_guid = 1082 + ) } Building52() def Building52(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 99, MapID: 52 - LocalBuilding("vt_vehicle", 99, 52, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2908f, 2814f, 34.91781f), Vector3(0f, 0f, 270f), vt_vehicle))) - LocalObject(1083, Terminal.Constructor(Vector3(2907.992f, 2828.492f, 37.60481f), ground_vehicle_terminal), owning_building_guid = 99) - LocalObject(728, VehicleSpawnPad.Constructor(Vector3(2908.027f, 2813.853f, 33.44681f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 99, terminal_guid = 1083) + LocalBuilding( + "vt_vehicle", + 99, + 52, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2908f, 2814f, 34.91781f), + Vector3(0f, 0f, 270f), + vt_vehicle + ) + ) + ) + LocalObject( + 1083, + Terminal.Constructor(Vector3(2907.992f, 2828.492f, 37.60481f), ground_vehicle_terminal), + owning_building_guid = 99 + ) + LocalObject( + 728, + VehicleSpawnPad.Constructor(Vector3(2908.027f, 2813.853f, 33.44681f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 99, + terminal_guid = 1083 + ) } Building53() def Building53(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 100, MapID: 53 - LocalBuilding("vt_vehicle", 100, 53, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2934f, 3140f, 34.91683f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1084, Terminal.Constructor(Vector3(2934.008f, 3125.508f, 37.60383f), ground_vehicle_terminal), owning_building_guid = 100) - LocalObject(729, VehicleSpawnPad.Constructor(Vector3(2933.973f, 3140.147f, 33.44583f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 100, terminal_guid = 1084) + LocalBuilding( + "vt_vehicle", + 100, + 53, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2934f, 3140f, 34.91683f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1084, + Terminal.Constructor(Vector3(2934.008f, 3125.508f, 37.60383f), ground_vehicle_terminal), + owning_building_guid = 100 + ) + LocalObject( + 729, + VehicleSpawnPad.Constructor(Vector3(2933.973f, 3140.147f, 33.44583f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 100, + terminal_guid = 1084 + ) } Building21() def Building21(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 101, MapID: 21 - LocalBuilding("vt_vehicle", 101, 21, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2962f, 5402f, 35.99899f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1085, Terminal.Constructor(Vector3(2962.008f, 5387.508f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 101) - LocalObject(730, VehicleSpawnPad.Constructor(Vector3(2961.973f, 5402.147f, 34.52799f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 101, terminal_guid = 1085) + LocalBuilding( + "vt_vehicle", + 101, + 21, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2962f, 5402f, 35.99899f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1085, + Terminal.Constructor(Vector3(2962.008f, 5387.508f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 101 + ) + LocalObject( + 730, + VehicleSpawnPad.Constructor(Vector3(2961.973f, 5402.147f, 34.52799f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 101, + terminal_guid = 1085 + ) } Building45() def Building45(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 102, MapID: 45 - LocalBuilding("vt_vehicle", 102, 45, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3012f, 2816f, 34.91574f), Vector3(0f, 0f, 270f), vt_vehicle))) - LocalObject(1087, Terminal.Constructor(Vector3(3011.992f, 2830.492f, 37.60274f), ground_vehicle_terminal), owning_building_guid = 102) - LocalObject(731, VehicleSpawnPad.Constructor(Vector3(3012.027f, 2815.853f, 33.44474f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 102, terminal_guid = 1087) + LocalBuilding( + "vt_vehicle", + 102, + 45, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3012f, 2816f, 34.91574f), + Vector3(0f, 0f, 270f), + vt_vehicle + ) + ) + ) + LocalObject( + 1087, + Terminal.Constructor(Vector3(3011.992f, 2830.492f, 37.60274f), ground_vehicle_terminal), + owning_building_guid = 102 + ) + LocalObject( + 731, + VehicleSpawnPad.Constructor(Vector3(3012.027f, 2815.853f, 33.44474f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 102, + terminal_guid = 1087 + ) } Building10() def Building10(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 103, MapID: 10 - LocalBuilding("vt_vehicle", 103, 10, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3018f, 5116f, 35.99899f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1086, Terminal.Constructor(Vector3(3007.747f, 5126.242f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 103) - LocalObject(732, VehicleSpawnPad.Constructor(Vector3(3018.123f, 5115.915f, 34.52799f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 103, terminal_guid = 1086) + LocalBuilding( + "vt_vehicle", + 103, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3018f, 5116f, 35.99899f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1086, + Terminal.Constructor(Vector3(3007.747f, 5126.242f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 103 + ) + LocalObject( + 732, + VehicleSpawnPad.Constructor(Vector3(3018.123f, 5115.915f, 34.52799f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 103, + terminal_guid = 1086 + ) } Building9() def Building9(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 104, MapID: 9 - LocalBuilding("vt_vehicle", 104, 9, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3064f, 5162f, 35.99899f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1088, Terminal.Constructor(Vector3(3053.747f, 5172.242f, 38.68599f), ground_vehicle_terminal), owning_building_guid = 104) - LocalObject(733, VehicleSpawnPad.Constructor(Vector3(3064.123f, 5161.915f, 34.52799f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 104, terminal_guid = 1088) + LocalBuilding( + "vt_vehicle", + 104, + 9, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3064f, 5162f, 35.99899f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1088, + Terminal.Constructor(Vector3(3053.747f, 5172.242f, 38.68599f), ground_vehicle_terminal), + owning_building_guid = 104 + ) + LocalObject( + 733, + VehicleSpawnPad.Constructor(Vector3(3064.123f, 5161.915f, 34.52799f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 104, + terminal_guid = 1088 + ) } Building51() def Building51(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 105, MapID: 51 - LocalBuilding("vt_vehicle", 105, 51, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3136f, 3182f, 34.92273f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1089, Terminal.Constructor(Vector3(3136.008f, 3167.508f, 37.60973f), ground_vehicle_terminal), owning_building_guid = 105) - LocalObject(734, VehicleSpawnPad.Constructor(Vector3(3135.973f, 3182.147f, 33.45173f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 105, terminal_guid = 1089) + LocalBuilding( + "vt_vehicle", + 105, + 51, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3136f, 3182f, 34.92273f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1089, + Terminal.Constructor(Vector3(3136.008f, 3167.508f, 37.60973f), ground_vehicle_terminal), + owning_building_guid = 105 + ) + LocalObject( + 734, + VehicleSpawnPad.Constructor(Vector3(3135.973f, 3182.147f, 33.45173f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 105, + terminal_guid = 1089 + ) } Building50() def Building50(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 106, MapID: 50 - LocalBuilding("vt_vehicle", 106, 50, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3222f, 2984f, 34.92273f), Vector3(0f, 0f, 0f), vt_vehicle))) - LocalObject(1090, Terminal.Constructor(Vector3(3207.508f, 2983.992f, 37.60973f), ground_vehicle_terminal), owning_building_guid = 106) - LocalObject(735, VehicleSpawnPad.Constructor(Vector3(3222.147f, 2984.027f, 33.45173f), mb_pad_creation, Vector3(0, 0, 90)), owning_building_guid = 106, terminal_guid = 1090) + LocalBuilding( + "vt_vehicle", + 106, + 50, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3222f, 2984f, 34.92273f), Vector3(0f, 0f, 0f), vt_vehicle) + ) + ) + LocalObject( + 1090, + Terminal.Constructor(Vector3(3207.508f, 2983.992f, 37.60973f), ground_vehicle_terminal), + owning_building_guid = 106 + ) + LocalObject( + 735, + VehicleSpawnPad.Constructor(Vector3(3222.147f, 2984.027f, 33.45173f), mb_pad_creation, Vector3(0, 0, 90)), + owning_building_guid = 106, + terminal_guid = 1090 + ) } Building32() def Building32(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 107, MapID: 32 - LocalBuilding("vt_vehicle", 107, 32, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5118f, 4012f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1091, Terminal.Constructor(Vector3(5118.008f, 3997.508f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 107) - LocalObject(736, VehicleSpawnPad.Constructor(Vector3(5117.973f, 4012.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 107, terminal_guid = 1091) + LocalBuilding( + "vt_vehicle", + 107, + 32, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5118f, 4012f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1091, + Terminal.Constructor(Vector3(5118.008f, 3997.508f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 107 + ) + LocalObject( + 736, + VehicleSpawnPad.Constructor(Vector3(5117.973f, 4012.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 107, + terminal_guid = 1091 + ) } Building27() def Building27(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 108, MapID: 27 - LocalBuilding("vt_vehicle", 108, 27, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5126f, 3740f, 35.9291f), Vector3(0f, 0f, 270f), vt_vehicle))) - LocalObject(1092, Terminal.Constructor(Vector3(5125.992f, 3754.492f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 108) - LocalObject(737, VehicleSpawnPad.Constructor(Vector3(5126.027f, 3739.853f, 34.4581f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 108, terminal_guid = 1092) + LocalBuilding( + "vt_vehicle", + 108, + 27, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5126f, 3740f, 35.9291f), Vector3(0f, 0f, 270f), vt_vehicle) + ) + ) + LocalObject( + 1092, + Terminal.Constructor(Vector3(5125.992f, 3754.492f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 108 + ) + LocalObject( + 737, + VehicleSpawnPad.Constructor(Vector3(5126.027f, 3739.853f, 34.4581f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 108, + terminal_guid = 1092 + ) } Building34() def Building34(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 109, MapID: 34 - LocalBuilding("vt_vehicle", 109, 34, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5202f, 4038f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1093, Terminal.Constructor(Vector3(5202.008f, 4023.508f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 109) - LocalObject(738, VehicleSpawnPad.Constructor(Vector3(5201.973f, 4038.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 109, terminal_guid = 1093) + LocalBuilding( + "vt_vehicle", + 109, + 34, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5202f, 4038f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1093, + Terminal.Constructor(Vector3(5202.008f, 4023.508f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 109 + ) + LocalObject( + 738, + VehicleSpawnPad.Constructor(Vector3(5201.973f, 4038.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 109, + terminal_guid = 1093 + ) } Building35() def Building35(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 110, MapID: 35 - LocalBuilding("vt_vehicle", 110, 35, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5258f, 4038f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1094, Terminal.Constructor(Vector3(5258.008f, 4023.508f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 110) - LocalObject(739, VehicleSpawnPad.Constructor(Vector3(5257.973f, 4038.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 110, terminal_guid = 1094) + LocalBuilding( + "vt_vehicle", + 110, + 35, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5258f, 4038f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1094, + Terminal.Constructor(Vector3(5258.008f, 4023.508f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 110 + ) + LocalObject( + 739, + VehicleSpawnPad.Constructor(Vector3(5257.973f, 4038.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 110, + terminal_guid = 1094 + ) } Building29() def Building29(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 111, MapID: 29 - LocalBuilding("vt_vehicle", 111, 29, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5338f, 3740f, 35.9291f), Vector3(0f, 0f, 270f), vt_vehicle))) - LocalObject(1095, Terminal.Constructor(Vector3(5337.992f, 3754.492f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 111) - LocalObject(740, VehicleSpawnPad.Constructor(Vector3(5338.027f, 3739.853f, 34.4581f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 111, terminal_guid = 1095) + LocalBuilding( + "vt_vehicle", + 111, + 29, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5338f, 3740f, 35.9291f), Vector3(0f, 0f, 270f), vt_vehicle) + ) + ) + LocalObject( + 1095, + Terminal.Constructor(Vector3(5337.992f, 3754.492f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 111 + ) + LocalObject( + 740, + VehicleSpawnPad.Constructor(Vector3(5338.027f, 3739.853f, 34.4581f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 111, + terminal_guid = 1095 + ) } Building33() def Building33(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 112, MapID: 33 - LocalBuilding("vt_vehicle", 112, 33, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5342f, 4014f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle))) - LocalObject(1096, Terminal.Constructor(Vector3(5342.008f, 3999.508f, 38.6161f), ground_vehicle_terminal), owning_building_guid = 112) - LocalObject(741, VehicleSpawnPad.Constructor(Vector3(5341.973f, 4014.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), owning_building_guid = 112, terminal_guid = 1096) + LocalBuilding( + "vt_vehicle", + 112, + 33, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5342f, 4014f, 35.9291f), Vector3(0f, 0f, 90f), vt_vehicle) + ) + ) + LocalObject( + 1096, + Terminal.Constructor(Vector3(5342.008f, 3999.508f, 38.6161f), ground_vehicle_terminal), + owning_building_guid = 112 + ) + LocalObject( + 741, + VehicleSpawnPad.Constructor(Vector3(5341.973f, 4014.147f, 34.4581f), mb_pad_creation, Vector3(0, 0, 0)), + owning_building_guid = 112, + terminal_guid = 1096 + ) } Building1() def Building1(): Unit = { // Name: WG_TRSanc_to_Ishundar Type: warpgate GUID: 113, MapID: 1 - LocalBuilding("WG_TRSanc_to_Ishundar", 113, 1, FoundationBuilder(WarpGate.Structure(Vector3(3254f, 4652f, 37.92788f)))) + LocalBuilding( + "WG_TRSanc_to_Ishundar", + 113, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(3254f, 4652f, 37.92788f))) + ) } Building3() def Building3(): Unit = { // Name: WG_TRSanc_to_Cyssor Type: warpgate GUID: 114, MapID: 3 - LocalBuilding("WG_TRSanc_to_Cyssor", 114, 3, FoundationBuilder(WarpGate.Structure(Vector3(3744f, 3076f, 27.0604f)))) + LocalBuilding( + "WG_TRSanc_to_Cyssor", + 114, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(3744f, 3076f, 27.0604f))) + ) } Building2() def Building2(): Unit = { // Name: WG_TRSanc_to_Forseral Type: warpgate GUID: 115, MapID: 2 - LocalBuilding("WG_TRSanc_to_Forseral", 115, 2, FoundationBuilder(WarpGate.Structure(Vector3(5300f, 4504f, 40.2132f)))) + LocalBuilding( + "WG_TRSanc_to_Forseral", + 115, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(5300f, 4504f, 40.2132f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(4, ProximityTerminal.Constructor(Vector3(2880.28f, 5166.25f, 36.19f), repair_silo), owning_building_guid = 0) - LocalObject(5, Terminal.Constructor(Vector3(2880.28f, 5166.25f, 36.19f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(8, ProximityTerminal.Constructor(Vector3(2880.72f, 5277.02f, 36.17f), repair_silo), owning_building_guid = 0) - LocalObject(9, Terminal.Constructor(Vector3(2880.72f, 5277.02f, 36.17f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(12, ProximityTerminal.Constructor(Vector3(2963.38f, 5277.73f, 36.19f), repair_silo), owning_building_guid = 0) - LocalObject(13, Terminal.Constructor(Vector3(2963.38f, 5277.73f, 36.19f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(16, ProximityTerminal.Constructor(Vector3(2963.61f, 5166.41f, 36.09f), repair_silo), owning_building_guid = 0) - LocalObject(17, Terminal.Constructor(Vector3(2963.61f, 5166.41f, 36.09f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(20, ProximityTerminal.Constructor(Vector3(2964.83f, 2920.37f, 35.08f), repair_silo), owning_building_guid = 0) - LocalObject(21, Terminal.Constructor(Vector3(2964.83f, 2920.37f, 35.08f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(24, ProximityTerminal.Constructor(Vector3(2964.89f, 3031.69f, 35.04f), repair_silo), owning_building_guid = 0) - LocalObject(25, Terminal.Constructor(Vector3(2964.89f, 3031.69f, 35.04f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(28, ProximityTerminal.Constructor(Vector3(3047.44f, 3031.66f, 35.03f), repair_silo), owning_building_guid = 0) - LocalObject(29, Terminal.Constructor(Vector3(3047.44f, 3031.66f, 35.03f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(32, ProximityTerminal.Constructor(Vector3(3048.11f, 2920.91f, 35.08f), repair_silo), owning_building_guid = 0) - LocalObject(33, Terminal.Constructor(Vector3(3048.11f, 2920.91f, 35.08f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(36, ProximityTerminal.Constructor(Vector3(5190.58f, 3955.38f, 36.01f), repair_silo), owning_building_guid = 0) - LocalObject(37, Terminal.Constructor(Vector3(5190.58f, 3955.38f, 36.01f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(40, ProximityTerminal.Constructor(Vector3(5190.87f, 3843.73f, 36.08f), repair_silo), owning_building_guid = 0) - LocalObject(41, Terminal.Constructor(Vector3(5190.87f, 3843.73f, 36.08f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(44, ProximityTerminal.Constructor(Vector3(5273.65f, 3955.55f, 36.09f), repair_silo), owning_building_guid = 0) - LocalObject(45, Terminal.Constructor(Vector3(5273.65f, 3955.55f, 36.09f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(48, ProximityTerminal.Constructor(Vector3(5273.88f, 3844.68f, 36.02f), repair_silo), owning_building_guid = 0) - LocalObject(49, Terminal.Constructor(Vector3(5273.88f, 3844.68f, 36.02f), ground_rearm_terminal), owning_building_guid = 0) + LocalObject( + 4, + ProximityTerminal.Constructor(Vector3(2880.28f, 5166.25f, 36.19f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 5, + Terminal.Constructor(Vector3(2880.28f, 5166.25f, 36.19f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 8, + ProximityTerminal.Constructor(Vector3(2880.72f, 5277.02f, 36.17f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 9, + Terminal.Constructor(Vector3(2880.72f, 5277.02f, 36.17f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 12, + ProximityTerminal.Constructor(Vector3(2963.38f, 5277.73f, 36.19f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 13, + Terminal.Constructor(Vector3(2963.38f, 5277.73f, 36.19f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 16, + ProximityTerminal.Constructor(Vector3(2963.61f, 5166.41f, 36.09f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 17, + Terminal.Constructor(Vector3(2963.61f, 5166.41f, 36.09f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 20, + ProximityTerminal.Constructor(Vector3(2964.83f, 2920.37f, 35.08f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 21, + Terminal.Constructor(Vector3(2964.83f, 2920.37f, 35.08f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 24, + ProximityTerminal.Constructor(Vector3(2964.89f, 3031.69f, 35.04f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 25, + Terminal.Constructor(Vector3(2964.89f, 3031.69f, 35.04f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 28, + ProximityTerminal.Constructor(Vector3(3047.44f, 3031.66f, 35.03f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 29, + Terminal.Constructor(Vector3(3047.44f, 3031.66f, 35.03f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 32, + ProximityTerminal.Constructor(Vector3(3048.11f, 2920.91f, 35.08f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 33, + Terminal.Constructor(Vector3(3048.11f, 2920.91f, 35.08f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 36, + ProximityTerminal.Constructor(Vector3(5190.58f, 3955.38f, 36.01f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 37, + Terminal.Constructor(Vector3(5190.58f, 3955.38f, 36.01f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 40, + ProximityTerminal.Constructor(Vector3(5190.87f, 3843.73f, 36.08f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 41, + Terminal.Constructor(Vector3(5190.87f, 3843.73f, 36.08f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 44, + ProximityTerminal.Constructor(Vector3(5273.65f, 3955.55f, 36.09f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 45, + Terminal.Constructor(Vector3(5273.65f, 3955.55f, 36.09f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 48, + ProximityTerminal.Constructor(Vector3(5273.88f, 3844.68f, 36.02f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 49, + Terminal.Constructor(Vector3(5273.88f, 3844.68f, 36.02f), ground_rearm_terminal), + owning_building_guid = 0 + ) } - def Lattice(): Unit = { - } + def Lattice(): Unit = {} Lattice() diff --git a/pslogin/src/main/scala/zonemaps/Map13.scala b/pslogin/src/main/scala/zonemaps/Map13.scala index 18935657..302b0f48 100644 --- a/pslogin/src/main/scala/zonemaps/Map13.scala +++ b/pslogin/src/main/scala/zonemaps/Map13.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -21,7 +21,19 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) Building22() def Building22(): Unit = { // Name: Hart_Ishundar Type: orbital_building_vs GUID: 1, MapID: 22 - LocalBuilding("Hart_Ishundar", 1, 22, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2978f, 4834f, 56.08539f), Vector3(0f, 0f, 270f), orbital_building_vs))) + LocalBuilding( + "Hart_Ishundar", + 1, + 22, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2978f, 4834f, 56.08539f), + Vector3(0f, 0f, 270f), + orbital_building_vs + ) + ) + ) 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) LocalObject(362, Door.Constructor(Vector3(3058f, 4822.01f, 60.19139f)), owning_building_guid = 1) @@ -50,84 +62,352 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(683, Locker.Constructor(Vector3(2979.951f, 4782.185f, 73.19539f)), owning_building_guid = 1) LocalObject(684, Locker.Constructor(Vector3(2981.268f, 4782.185f, 73.19539f)), owning_building_guid = 1) LocalObject(685, Locker.Constructor(Vector3(2982.598f, 4782.185f, 73.19539f)), owning_building_guid = 1) - LocalObject(162, Terminal.Constructor(Vector3(2899.285f, 4826.802f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(163, Terminal.Constructor(Vector3(2899.285f, 4828.709f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(164, Terminal.Constructor(Vector3(2899.285f, 4830.64f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(165, Terminal.Constructor(Vector3(2899.285f, 4837.609f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(166, Terminal.Constructor(Vector3(2899.285f, 4839.517f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(167, Terminal.Constructor(Vector3(2899.285f, 4841.448f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(168, Terminal.Constructor(Vector3(2910.629f, 4818.056f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(169, Terminal.Constructor(Vector3(2910.629f, 4821.959f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(170, Terminal.Constructor(Vector3(2910.629f, 4825.797f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(171, Terminal.Constructor(Vector3(2910.617f, 4842.381f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(172, Terminal.Constructor(Vector3(2910.617f, 4846.259f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(173, Terminal.Constructor(Vector3(2910.617f, 4850.131f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(174, Terminal.Constructor(Vector3(3045.372f, 4817.809f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(175, Terminal.Constructor(Vector3(3045.372f, 4821.681f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(176, Terminal.Constructor(Vector3(3045.372f, 4825.56f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(177, Terminal.Constructor(Vector3(3045.444f, 4842.199f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(178, Terminal.Constructor(Vector3(3045.444f, 4846.037f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(179, Terminal.Constructor(Vector3(3045.444f, 4849.94f, 68.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(180, Terminal.Constructor(Vector3(3056.704f, 4826.493f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(181, Terminal.Constructor(Vector3(3056.704f, 4828.424f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(182, Terminal.Constructor(Vector3(3056.704f, 4830.331f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(183, Terminal.Constructor(Vector3(3056.788f, 4837.356f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(184, Terminal.Constructor(Vector3(3056.788f, 4839.287f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(185, Terminal.Constructor(Vector3(3056.788f, 4841.194f, 58.58539f), cert_terminal), owning_building_guid = 1) - LocalObject(798, Terminal.Constructor(Vector3(2902.078f, 4835.603f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(799, Terminal.Constructor(Vector3(2902.142f, 4832.408f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(800, Terminal.Constructor(Vector3(2906.032f, 4832.408f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(801, Terminal.Constructor(Vector3(2906.092f, 4835.603f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(802, Terminal.Constructor(Vector3(2920.495f, 4827.262f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(803, Terminal.Constructor(Vector3(2920.495f, 4830.183f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(804, Terminal.Constructor(Vector3(2920.492f, 4837.863f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(805, Terminal.Constructor(Vector3(2920.492f, 4840.764f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(806, Terminal.Constructor(Vector3(2967.61f, 4784.217f, 74.87839f), order_terminal), owning_building_guid = 1) - LocalObject(807, Terminal.Constructor(Vector3(2970f, 4784.217f, 74.87839f), order_terminal), owning_building_guid = 1) - LocalObject(808, Terminal.Constructor(Vector3(2986f, 4784.217f, 74.87839f), order_terminal), owning_building_guid = 1) - LocalObject(809, Terminal.Constructor(Vector3(2988.48f, 4784.217f, 74.87839f), order_terminal), owning_building_guid = 1) - LocalObject(810, Terminal.Constructor(Vector3(3035.522f, 4827.265f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(811, Terminal.Constructor(Vector3(3035.522f, 4830.166f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(812, Terminal.Constructor(Vector3(3035.515f, 4837.817f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(813, Terminal.Constructor(Vector3(3035.515f, 4840.738f, 69.88239f), order_terminal), owning_building_guid = 1) - LocalObject(814, Terminal.Constructor(Vector3(3049.896f, 4832.405f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(815, Terminal.Constructor(Vector3(3050.041f, 4835.603f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(816, Terminal.Constructor(Vector3(3053.91f, 4832.405f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(817, Terminal.Constructor(Vector3(3053.931f, 4835.603f, 59.88239f), order_terminal), owning_building_guid = 1) - LocalObject(774, ProximityTerminal.Constructor(Vector3(2907.369f, 4811.151f, 58.57639f), medical_terminal), owning_building_guid = 1) - LocalObject(775, ProximityTerminal.Constructor(Vector3(2907.307f, 4856.855f, 58.57639f), medical_terminal), owning_building_guid = 1) - LocalObject(776, ProximityTerminal.Constructor(Vector3(3048.667f, 4811.151f, 58.57639f), medical_terminal), owning_building_guid = 1) - LocalObject(777, ProximityTerminal.Constructor(Vector3(3048.689f, 4856.855f, 58.57639f), medical_terminal), owning_building_guid = 1) - LocalObject(514, ImplantTerminalMech.Constructor(Vector3(2913.665f, 4855.719f, 58.58539f)), owning_building_guid = 1) - LocalObject(490, Terminal.Constructor(Vector3(2913.665f, 4855.701f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 162, + Terminal.Constructor(Vector3(2899.285f, 4826.802f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 163, + Terminal.Constructor(Vector3(2899.285f, 4828.709f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 164, + Terminal.Constructor(Vector3(2899.285f, 4830.64f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 165, + Terminal.Constructor(Vector3(2899.285f, 4837.609f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 166, + Terminal.Constructor(Vector3(2899.285f, 4839.517f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 167, + Terminal.Constructor(Vector3(2899.285f, 4841.448f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 168, + Terminal.Constructor(Vector3(2910.629f, 4818.056f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 169, + Terminal.Constructor(Vector3(2910.629f, 4821.959f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 170, + Terminal.Constructor(Vector3(2910.629f, 4825.797f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 171, + Terminal.Constructor(Vector3(2910.617f, 4842.381f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 172, + Terminal.Constructor(Vector3(2910.617f, 4846.259f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 173, + Terminal.Constructor(Vector3(2910.617f, 4850.131f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 174, + Terminal.Constructor(Vector3(3045.372f, 4817.809f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 175, + Terminal.Constructor(Vector3(3045.372f, 4821.681f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 176, + Terminal.Constructor(Vector3(3045.372f, 4825.56f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 177, + Terminal.Constructor(Vector3(3045.444f, 4842.199f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 178, + Terminal.Constructor(Vector3(3045.444f, 4846.037f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 179, + Terminal.Constructor(Vector3(3045.444f, 4849.94f, 68.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 180, + Terminal.Constructor(Vector3(3056.704f, 4826.493f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 181, + Terminal.Constructor(Vector3(3056.704f, 4828.424f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 182, + Terminal.Constructor(Vector3(3056.704f, 4830.331f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 183, + Terminal.Constructor(Vector3(3056.788f, 4837.356f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 184, + Terminal.Constructor(Vector3(3056.788f, 4839.287f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 185, + Terminal.Constructor(Vector3(3056.788f, 4841.194f, 58.58539f), cert_terminal), + owning_building_guid = 1 + ) + LocalObject( + 798, + Terminal.Constructor(Vector3(2902.078f, 4835.603f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 799, + Terminal.Constructor(Vector3(2902.142f, 4832.408f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 800, + Terminal.Constructor(Vector3(2906.032f, 4832.408f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 801, + Terminal.Constructor(Vector3(2906.092f, 4835.603f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 802, + Terminal.Constructor(Vector3(2920.495f, 4827.262f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 803, + Terminal.Constructor(Vector3(2920.495f, 4830.183f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 804, + Terminal.Constructor(Vector3(2920.492f, 4837.863f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 805, + Terminal.Constructor(Vector3(2920.492f, 4840.764f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 806, + Terminal.Constructor(Vector3(2967.61f, 4784.217f, 74.87839f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 807, + Terminal.Constructor(Vector3(2970f, 4784.217f, 74.87839f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 808, + Terminal.Constructor(Vector3(2986f, 4784.217f, 74.87839f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 809, + Terminal.Constructor(Vector3(2988.48f, 4784.217f, 74.87839f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 810, + Terminal.Constructor(Vector3(3035.522f, 4827.265f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 811, + Terminal.Constructor(Vector3(3035.522f, 4830.166f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 812, + Terminal.Constructor(Vector3(3035.515f, 4837.817f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 813, + Terminal.Constructor(Vector3(3035.515f, 4840.738f, 69.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 814, + Terminal.Constructor(Vector3(3049.896f, 4832.405f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 815, + Terminal.Constructor(Vector3(3050.041f, 4835.603f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 816, + Terminal.Constructor(Vector3(3053.91f, 4832.405f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 817, + Terminal.Constructor(Vector3(3053.931f, 4835.603f, 59.88239f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 774, + ProximityTerminal.Constructor(Vector3(2907.369f, 4811.151f, 58.57639f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 775, + ProximityTerminal.Constructor(Vector3(2907.307f, 4856.855f, 58.57639f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 776, + ProximityTerminal.Constructor(Vector3(3048.667f, 4811.151f, 58.57639f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 777, + ProximityTerminal.Constructor(Vector3(3048.689f, 4856.855f, 58.57639f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 514, + ImplantTerminalMech.Constructor(Vector3(2913.665f, 4855.719f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 490, + Terminal.Constructor(Vector3(2913.665f, 4855.701f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(514, 490) - LocalObject(515, ImplantTerminalMech.Constructor(Vector3(2913.775f, 4812.281f, 58.58539f)), owning_building_guid = 1) - LocalObject(491, Terminal.Constructor(Vector3(2913.775f, 4812.299f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 515, + ImplantTerminalMech.Constructor(Vector3(2913.775f, 4812.281f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 491, + Terminal.Constructor(Vector3(2913.775f, 4812.299f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(515, 491) - LocalObject(516, ImplantTerminalMech.Constructor(Vector3(2919.078f, 4812.281f, 58.58539f)), owning_building_guid = 1) - LocalObject(492, Terminal.Constructor(Vector3(2919.078f, 4812.299f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 516, + ImplantTerminalMech.Constructor(Vector3(2919.078f, 4812.281f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 492, + Terminal.Constructor(Vector3(2919.078f, 4812.299f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(516, 492) - LocalObject(517, ImplantTerminalMech.Constructor(Vector3(2919.073f, 4855.719f, 58.58539f)), owning_building_guid = 1) - LocalObject(493, Terminal.Constructor(Vector3(2919.073f, 4855.701f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 517, + ImplantTerminalMech.Constructor(Vector3(2919.073f, 4855.719f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 493, + Terminal.Constructor(Vector3(2919.073f, 4855.701f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(517, 493) - LocalObject(518, ImplantTerminalMech.Constructor(Vector3(3036.916f, 4812.271f, 58.58539f)), owning_building_guid = 1) - LocalObject(494, Terminal.Constructor(Vector3(3036.916f, 4812.289f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 518, + ImplantTerminalMech.Constructor(Vector3(3036.916f, 4812.271f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 494, + Terminal.Constructor(Vector3(3036.916f, 4812.289f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(518, 494) - LocalObject(519, ImplantTerminalMech.Constructor(Vector3(3036.995f, 4855.715f, 58.58539f)), owning_building_guid = 1) - LocalObject(495, Terminal.Constructor(Vector3(3036.995f, 4855.697f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 519, + ImplantTerminalMech.Constructor(Vector3(3036.995f, 4855.715f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 495, + Terminal.Constructor(Vector3(3036.995f, 4855.697f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(519, 495) - LocalObject(520, ImplantTerminalMech.Constructor(Vector3(3042.298f, 4855.715f, 58.58539f)), owning_building_guid = 1) - LocalObject(496, Terminal.Constructor(Vector3(3042.298f, 4855.697f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 520, + ImplantTerminalMech.Constructor(Vector3(3042.298f, 4855.715f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 496, + Terminal.Constructor(Vector3(3042.298f, 4855.697f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(520, 496) - LocalObject(521, ImplantTerminalMech.Constructor(Vector3(3042.323f, 4812.271f, 58.58539f)), owning_building_guid = 1) - LocalObject(497, Terminal.Constructor(Vector3(3042.323f, 4812.289f, 58.58539f), implant_terminal_interface), owning_building_guid = 1) + LocalObject( + 521, + ImplantTerminalMech.Constructor(Vector3(3042.323f, 4812.271f, 58.58539f)), + owning_building_guid = 1 + ) + LocalObject( + 497, + Terminal.Constructor(Vector3(3042.323f, 4812.289f, 58.58539f), implant_terminal_interface), + owning_building_guid = 1 + ) TerminalToInterface(521, 497) } Building4() def Building4(): Unit = { // Name: Hart_Esamir Type: orbital_building_vs GUID: 2, MapID: 4 - LocalBuilding("Hart_Esamir", 2, 4, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3688f, 2808f, 90.85312f), Vector3(0f, 0f, 270f), orbital_building_vs))) + LocalBuilding( + "Hart_Esamir", + 2, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3688f, 2808f, 90.85312f), + Vector3(0f, 0f, 270f), + orbital_building_vs + ) + ) + ) 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) LocalObject(374, Door.Constructor(Vector3(3768f, 2796.01f, 94.95912f)), owning_building_guid = 2) @@ -156,84 +436,352 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(691, Locker.Constructor(Vector3(3689.951f, 2756.185f, 107.9631f)), owning_building_guid = 2) LocalObject(692, Locker.Constructor(Vector3(3691.268f, 2756.185f, 107.9631f)), owning_building_guid = 2) LocalObject(693, Locker.Constructor(Vector3(3692.598f, 2756.185f, 107.9631f)), owning_building_guid = 2) - LocalObject(186, Terminal.Constructor(Vector3(3609.285f, 2800.802f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(187, Terminal.Constructor(Vector3(3609.285f, 2802.709f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(188, Terminal.Constructor(Vector3(3609.285f, 2804.64f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(189, Terminal.Constructor(Vector3(3609.285f, 2811.609f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(190, Terminal.Constructor(Vector3(3609.285f, 2813.517f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(191, Terminal.Constructor(Vector3(3609.285f, 2815.448f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(192, Terminal.Constructor(Vector3(3620.629f, 2792.056f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(193, Terminal.Constructor(Vector3(3620.629f, 2795.959f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(194, Terminal.Constructor(Vector3(3620.629f, 2799.797f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(195, Terminal.Constructor(Vector3(3620.617f, 2816.381f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(196, Terminal.Constructor(Vector3(3620.617f, 2820.259f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(197, Terminal.Constructor(Vector3(3620.617f, 2824.131f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(198, Terminal.Constructor(Vector3(3755.372f, 2791.809f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(199, Terminal.Constructor(Vector3(3755.372f, 2795.681f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(200, Terminal.Constructor(Vector3(3755.372f, 2799.56f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(201, Terminal.Constructor(Vector3(3755.444f, 2816.199f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(202, Terminal.Constructor(Vector3(3755.444f, 2820.037f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(203, Terminal.Constructor(Vector3(3755.444f, 2823.94f, 103.3531f), cert_terminal), owning_building_guid = 2) - LocalObject(204, Terminal.Constructor(Vector3(3766.704f, 2800.493f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(205, Terminal.Constructor(Vector3(3766.704f, 2802.424f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(206, Terminal.Constructor(Vector3(3766.704f, 2804.331f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(207, Terminal.Constructor(Vector3(3766.788f, 2811.356f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(208, Terminal.Constructor(Vector3(3766.788f, 2813.287f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(209, Terminal.Constructor(Vector3(3766.788f, 2815.194f, 93.35312f), cert_terminal), owning_building_guid = 2) - LocalObject(842, Terminal.Constructor(Vector3(3612.078f, 2809.603f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(843, Terminal.Constructor(Vector3(3612.142f, 2806.408f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(844, Terminal.Constructor(Vector3(3616.032f, 2806.408f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(845, Terminal.Constructor(Vector3(3616.092f, 2809.603f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(846, Terminal.Constructor(Vector3(3630.495f, 2801.262f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(847, Terminal.Constructor(Vector3(3630.495f, 2804.183f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(848, Terminal.Constructor(Vector3(3630.492f, 2811.863f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(849, Terminal.Constructor(Vector3(3630.492f, 2814.764f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(850, Terminal.Constructor(Vector3(3677.61f, 2758.217f, 109.6461f), order_terminal), owning_building_guid = 2) - LocalObject(851, Terminal.Constructor(Vector3(3680f, 2758.217f, 109.6461f), order_terminal), owning_building_guid = 2) - LocalObject(861, Terminal.Constructor(Vector3(3696f, 2758.217f, 109.6461f), order_terminal), owning_building_guid = 2) - LocalObject(862, Terminal.Constructor(Vector3(3698.48f, 2758.217f, 109.6461f), order_terminal), owning_building_guid = 2) - LocalObject(863, Terminal.Constructor(Vector3(3745.522f, 2801.265f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(864, Terminal.Constructor(Vector3(3745.522f, 2804.166f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(865, Terminal.Constructor(Vector3(3745.515f, 2811.817f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(866, Terminal.Constructor(Vector3(3745.515f, 2814.738f, 104.6501f), order_terminal), owning_building_guid = 2) - LocalObject(867, Terminal.Constructor(Vector3(3759.896f, 2806.405f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(868, Terminal.Constructor(Vector3(3760.041f, 2809.603f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(869, Terminal.Constructor(Vector3(3763.91f, 2806.405f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(870, Terminal.Constructor(Vector3(3763.931f, 2809.603f, 94.65012f), order_terminal), owning_building_guid = 2) - LocalObject(778, ProximityTerminal.Constructor(Vector3(3617.369f, 2785.151f, 93.34412f), medical_terminal), owning_building_guid = 2) - LocalObject(779, ProximityTerminal.Constructor(Vector3(3617.307f, 2830.855f, 93.34412f), medical_terminal), owning_building_guid = 2) - LocalObject(780, ProximityTerminal.Constructor(Vector3(3758.667f, 2785.151f, 93.34412f), medical_terminal), owning_building_guid = 2) - LocalObject(781, ProximityTerminal.Constructor(Vector3(3758.689f, 2830.855f, 93.34412f), medical_terminal), owning_building_guid = 2) - LocalObject(522, ImplantTerminalMech.Constructor(Vector3(3623.665f, 2829.719f, 93.35312f)), owning_building_guid = 2) - LocalObject(498, Terminal.Constructor(Vector3(3623.665f, 2829.701f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 186, + Terminal.Constructor(Vector3(3609.285f, 2800.802f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 187, + Terminal.Constructor(Vector3(3609.285f, 2802.709f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 188, + Terminal.Constructor(Vector3(3609.285f, 2804.64f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 189, + Terminal.Constructor(Vector3(3609.285f, 2811.609f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 190, + Terminal.Constructor(Vector3(3609.285f, 2813.517f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 191, + Terminal.Constructor(Vector3(3609.285f, 2815.448f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 192, + Terminal.Constructor(Vector3(3620.629f, 2792.056f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 193, + Terminal.Constructor(Vector3(3620.629f, 2795.959f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 194, + Terminal.Constructor(Vector3(3620.629f, 2799.797f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 195, + Terminal.Constructor(Vector3(3620.617f, 2816.381f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 196, + Terminal.Constructor(Vector3(3620.617f, 2820.259f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 197, + Terminal.Constructor(Vector3(3620.617f, 2824.131f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 198, + Terminal.Constructor(Vector3(3755.372f, 2791.809f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 199, + Terminal.Constructor(Vector3(3755.372f, 2795.681f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 200, + Terminal.Constructor(Vector3(3755.372f, 2799.56f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 201, + Terminal.Constructor(Vector3(3755.444f, 2816.199f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 202, + Terminal.Constructor(Vector3(3755.444f, 2820.037f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 203, + Terminal.Constructor(Vector3(3755.444f, 2823.94f, 103.3531f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(3766.704f, 2800.493f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(3766.704f, 2802.424f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 206, + Terminal.Constructor(Vector3(3766.704f, 2804.331f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(3766.788f, 2811.356f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(3766.788f, 2813.287f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(3766.788f, 2815.194f, 93.35312f), cert_terminal), + owning_building_guid = 2 + ) + LocalObject( + 842, + Terminal.Constructor(Vector3(3612.078f, 2809.603f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 843, + Terminal.Constructor(Vector3(3612.142f, 2806.408f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 844, + Terminal.Constructor(Vector3(3616.032f, 2806.408f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(3616.092f, 2809.603f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(3630.495f, 2801.262f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(3630.495f, 2804.183f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(3630.492f, 2811.863f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 849, + Terminal.Constructor(Vector3(3630.492f, 2814.764f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(3677.61f, 2758.217f, 109.6461f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(3680f, 2758.217f, 109.6461f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(3696f, 2758.217f, 109.6461f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(3698.48f, 2758.217f, 109.6461f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 863, + Terminal.Constructor(Vector3(3745.522f, 2801.265f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(3745.522f, 2804.166f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 865, + Terminal.Constructor(Vector3(3745.515f, 2811.817f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 866, + Terminal.Constructor(Vector3(3745.515f, 2814.738f, 104.6501f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 867, + Terminal.Constructor(Vector3(3759.896f, 2806.405f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 868, + Terminal.Constructor(Vector3(3760.041f, 2809.603f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 869, + Terminal.Constructor(Vector3(3763.91f, 2806.405f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 870, + Terminal.Constructor(Vector3(3763.931f, 2809.603f, 94.65012f), order_terminal), + owning_building_guid = 2 + ) + LocalObject( + 778, + ProximityTerminal.Constructor(Vector3(3617.369f, 2785.151f, 93.34412f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 779, + ProximityTerminal.Constructor(Vector3(3617.307f, 2830.855f, 93.34412f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 780, + ProximityTerminal.Constructor(Vector3(3758.667f, 2785.151f, 93.34412f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 781, + ProximityTerminal.Constructor(Vector3(3758.689f, 2830.855f, 93.34412f), medical_terminal), + owning_building_guid = 2 + ) + LocalObject( + 522, + ImplantTerminalMech.Constructor(Vector3(3623.665f, 2829.719f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 498, + Terminal.Constructor(Vector3(3623.665f, 2829.701f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(522, 498) - LocalObject(523, ImplantTerminalMech.Constructor(Vector3(3623.775f, 2786.281f, 93.35312f)), owning_building_guid = 2) - LocalObject(499, Terminal.Constructor(Vector3(3623.775f, 2786.299f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 523, + ImplantTerminalMech.Constructor(Vector3(3623.775f, 2786.281f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 499, + Terminal.Constructor(Vector3(3623.775f, 2786.299f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(523, 499) - LocalObject(524, ImplantTerminalMech.Constructor(Vector3(3629.078f, 2786.281f, 93.35312f)), owning_building_guid = 2) - LocalObject(500, Terminal.Constructor(Vector3(3629.078f, 2786.299f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 524, + ImplantTerminalMech.Constructor(Vector3(3629.078f, 2786.281f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 500, + Terminal.Constructor(Vector3(3629.078f, 2786.299f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(524, 500) - LocalObject(525, ImplantTerminalMech.Constructor(Vector3(3629.073f, 2829.719f, 93.35312f)), owning_building_guid = 2) - LocalObject(501, Terminal.Constructor(Vector3(3629.073f, 2829.701f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 525, + ImplantTerminalMech.Constructor(Vector3(3629.073f, 2829.719f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 501, + Terminal.Constructor(Vector3(3629.073f, 2829.701f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(525, 501) - LocalObject(526, ImplantTerminalMech.Constructor(Vector3(3746.916f, 2786.271f, 93.35312f)), owning_building_guid = 2) - LocalObject(502, Terminal.Constructor(Vector3(3746.916f, 2786.289f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 526, + ImplantTerminalMech.Constructor(Vector3(3746.916f, 2786.271f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 502, + Terminal.Constructor(Vector3(3746.916f, 2786.289f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(526, 502) - LocalObject(527, ImplantTerminalMech.Constructor(Vector3(3746.995f, 2829.715f, 93.35312f)), owning_building_guid = 2) - LocalObject(503, Terminal.Constructor(Vector3(3746.995f, 2829.697f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 527, + ImplantTerminalMech.Constructor(Vector3(3746.995f, 2829.715f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 503, + Terminal.Constructor(Vector3(3746.995f, 2829.697f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(527, 503) - LocalObject(528, ImplantTerminalMech.Constructor(Vector3(3752.298f, 2829.715f, 93.35312f)), owning_building_guid = 2) - LocalObject(504, Terminal.Constructor(Vector3(3752.298f, 2829.697f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 528, + ImplantTerminalMech.Constructor(Vector3(3752.298f, 2829.715f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 504, + Terminal.Constructor(Vector3(3752.298f, 2829.697f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(528, 504) - LocalObject(529, ImplantTerminalMech.Constructor(Vector3(3752.323f, 2786.271f, 93.35312f)), owning_building_guid = 2) - LocalObject(505, Terminal.Constructor(Vector3(3752.323f, 2786.289f, 93.35312f), implant_terminal_interface), owning_building_guid = 2) + LocalObject( + 529, + ImplantTerminalMech.Constructor(Vector3(3752.323f, 2786.271f, 93.35312f)), + owning_building_guid = 2 + ) + LocalObject( + 505, + Terminal.Constructor(Vector3(3752.323f, 2786.289f, 93.35312f), implant_terminal_interface), + owning_building_guid = 2 + ) TerminalToInterface(529, 505) } Building40() def Building40(): Unit = { // Name: Hart_Hossin Type: orbital_building_vs GUID: 3, MapID: 40 - LocalBuilding("Hart_Hossin", 3, 40, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5610f, 4238f, 103.2289f), Vector3(0f, 0f, 270f), orbital_building_vs))) + LocalBuilding( + "Hart_Hossin", + 3, + 40, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5610f, 4238f, 103.2289f), + Vector3(0f, 0f, 270f), + orbital_building_vs + ) + ) + ) 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) LocalObject(384, Door.Constructor(Vector3(5690f, 4226.01f, 107.3349f)), owning_building_guid = 3) @@ -262,95 +810,382 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(699, Locker.Constructor(Vector3(5611.951f, 4186.185f, 120.3389f)), owning_building_guid = 3) LocalObject(700, Locker.Constructor(Vector3(5613.268f, 4186.185f, 120.3389f)), owning_building_guid = 3) LocalObject(701, Locker.Constructor(Vector3(5614.598f, 4186.185f, 120.3389f)), owning_building_guid = 3) - LocalObject(210, Terminal.Constructor(Vector3(5531.285f, 4230.802f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(211, Terminal.Constructor(Vector3(5531.285f, 4232.709f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(212, Terminal.Constructor(Vector3(5531.285f, 4234.64f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(213, Terminal.Constructor(Vector3(5531.285f, 4241.609f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(214, Terminal.Constructor(Vector3(5531.285f, 4243.517f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(215, Terminal.Constructor(Vector3(5531.285f, 4245.448f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(216, Terminal.Constructor(Vector3(5542.629f, 4222.056f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(217, Terminal.Constructor(Vector3(5542.629f, 4225.959f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(218, Terminal.Constructor(Vector3(5542.629f, 4229.797f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(219, Terminal.Constructor(Vector3(5542.617f, 4246.381f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(220, Terminal.Constructor(Vector3(5542.617f, 4250.259f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(221, Terminal.Constructor(Vector3(5542.617f, 4254.131f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(222, Terminal.Constructor(Vector3(5677.372f, 4221.809f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(223, Terminal.Constructor(Vector3(5677.372f, 4225.681f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(224, Terminal.Constructor(Vector3(5677.372f, 4229.56f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(225, Terminal.Constructor(Vector3(5677.444f, 4246.199f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(226, Terminal.Constructor(Vector3(5677.444f, 4250.037f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(227, Terminal.Constructor(Vector3(5677.444f, 4253.94f, 115.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(228, Terminal.Constructor(Vector3(5688.704f, 4230.493f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(229, Terminal.Constructor(Vector3(5688.704f, 4232.424f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(230, Terminal.Constructor(Vector3(5688.704f, 4234.331f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(231, Terminal.Constructor(Vector3(5688.788f, 4241.356f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(232, Terminal.Constructor(Vector3(5688.788f, 4243.287f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(233, Terminal.Constructor(Vector3(5688.788f, 4245.194f, 105.7289f), cert_terminal), owning_building_guid = 3) - LocalObject(904, Terminal.Constructor(Vector3(5534.078f, 4239.603f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(905, Terminal.Constructor(Vector3(5534.142f, 4236.408f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(906, Terminal.Constructor(Vector3(5538.032f, 4236.408f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(907, Terminal.Constructor(Vector3(5538.092f, 4239.603f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(908, Terminal.Constructor(Vector3(5552.495f, 4231.262f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(909, Terminal.Constructor(Vector3(5552.495f, 4234.183f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(910, Terminal.Constructor(Vector3(5552.492f, 4241.863f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(911, Terminal.Constructor(Vector3(5552.492f, 4244.764f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(912, Terminal.Constructor(Vector3(5599.61f, 4188.217f, 122.0219f), order_terminal), owning_building_guid = 3) - LocalObject(913, Terminal.Constructor(Vector3(5602f, 4188.217f, 122.0219f), order_terminal), owning_building_guid = 3) - LocalObject(914, Terminal.Constructor(Vector3(5618f, 4188.217f, 122.0219f), order_terminal), owning_building_guid = 3) - LocalObject(915, Terminal.Constructor(Vector3(5620.48f, 4188.217f, 122.0219f), order_terminal), owning_building_guid = 3) - LocalObject(916, Terminal.Constructor(Vector3(5667.522f, 4231.265f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(917, Terminal.Constructor(Vector3(5667.522f, 4234.166f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(918, Terminal.Constructor(Vector3(5667.515f, 4241.817f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(919, Terminal.Constructor(Vector3(5667.515f, 4244.738f, 117.0259f), order_terminal), owning_building_guid = 3) - LocalObject(920, Terminal.Constructor(Vector3(5681.896f, 4236.405f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(921, Terminal.Constructor(Vector3(5682.041f, 4239.603f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(922, Terminal.Constructor(Vector3(5685.91f, 4236.405f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(923, Terminal.Constructor(Vector3(5685.931f, 4239.603f, 107.0259f), order_terminal), owning_building_guid = 3) - LocalObject(782, ProximityTerminal.Constructor(Vector3(5539.369f, 4215.151f, 105.7199f), medical_terminal), owning_building_guid = 3) - LocalObject(783, ProximityTerminal.Constructor(Vector3(5539.307f, 4260.855f, 105.7199f), medical_terminal), owning_building_guid = 3) - LocalObject(784, ProximityTerminal.Constructor(Vector3(5680.667f, 4215.151f, 105.7199f), medical_terminal), owning_building_guid = 3) - LocalObject(785, ProximityTerminal.Constructor(Vector3(5680.689f, 4260.855f, 105.7199f), medical_terminal), owning_building_guid = 3) - LocalObject(530, ImplantTerminalMech.Constructor(Vector3(5545.665f, 4259.719f, 105.7289f)), owning_building_guid = 3) - LocalObject(506, Terminal.Constructor(Vector3(5545.665f, 4259.701f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 210, + Terminal.Constructor(Vector3(5531.285f, 4230.802f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(5531.285f, 4232.709f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(5531.285f, 4234.64f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(5531.285f, 4241.609f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(5531.285f, 4243.517f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(5531.285f, 4245.448f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(5542.629f, 4222.056f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 217, + Terminal.Constructor(Vector3(5542.629f, 4225.959f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 218, + Terminal.Constructor(Vector3(5542.629f, 4229.797f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 219, + Terminal.Constructor(Vector3(5542.617f, 4246.381f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 220, + Terminal.Constructor(Vector3(5542.617f, 4250.259f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 221, + Terminal.Constructor(Vector3(5542.617f, 4254.131f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 222, + Terminal.Constructor(Vector3(5677.372f, 4221.809f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 223, + Terminal.Constructor(Vector3(5677.372f, 4225.681f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(5677.372f, 4229.56f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(5677.444f, 4246.199f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 226, + Terminal.Constructor(Vector3(5677.444f, 4250.037f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 227, + Terminal.Constructor(Vector3(5677.444f, 4253.94f, 115.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 228, + Terminal.Constructor(Vector3(5688.704f, 4230.493f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 229, + Terminal.Constructor(Vector3(5688.704f, 4232.424f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 230, + Terminal.Constructor(Vector3(5688.704f, 4234.331f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(5688.788f, 4241.356f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 232, + Terminal.Constructor(Vector3(5688.788f, 4243.287f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 233, + Terminal.Constructor(Vector3(5688.788f, 4245.194f, 105.7289f), cert_terminal), + owning_building_guid = 3 + ) + LocalObject( + 904, + Terminal.Constructor(Vector3(5534.078f, 4239.603f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 905, + Terminal.Constructor(Vector3(5534.142f, 4236.408f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 906, + Terminal.Constructor(Vector3(5538.032f, 4236.408f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 907, + Terminal.Constructor(Vector3(5538.092f, 4239.603f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 908, + Terminal.Constructor(Vector3(5552.495f, 4231.262f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 909, + Terminal.Constructor(Vector3(5552.495f, 4234.183f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 910, + Terminal.Constructor(Vector3(5552.492f, 4241.863f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 911, + Terminal.Constructor(Vector3(5552.492f, 4244.764f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 912, + Terminal.Constructor(Vector3(5599.61f, 4188.217f, 122.0219f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 913, + Terminal.Constructor(Vector3(5602f, 4188.217f, 122.0219f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 914, + Terminal.Constructor(Vector3(5618f, 4188.217f, 122.0219f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 915, + Terminal.Constructor(Vector3(5620.48f, 4188.217f, 122.0219f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 916, + Terminal.Constructor(Vector3(5667.522f, 4231.265f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 917, + Terminal.Constructor(Vector3(5667.522f, 4234.166f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 918, + Terminal.Constructor(Vector3(5667.515f, 4241.817f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 919, + Terminal.Constructor(Vector3(5667.515f, 4244.738f, 117.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 920, + Terminal.Constructor(Vector3(5681.896f, 4236.405f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 921, + Terminal.Constructor(Vector3(5682.041f, 4239.603f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 922, + Terminal.Constructor(Vector3(5685.91f, 4236.405f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 923, + Terminal.Constructor(Vector3(5685.931f, 4239.603f, 107.0259f), order_terminal), + owning_building_guid = 3 + ) + LocalObject( + 782, + ProximityTerminal.Constructor(Vector3(5539.369f, 4215.151f, 105.7199f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 783, + ProximityTerminal.Constructor(Vector3(5539.307f, 4260.855f, 105.7199f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 784, + ProximityTerminal.Constructor(Vector3(5680.667f, 4215.151f, 105.7199f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 785, + ProximityTerminal.Constructor(Vector3(5680.689f, 4260.855f, 105.7199f), medical_terminal), + owning_building_guid = 3 + ) + LocalObject( + 530, + ImplantTerminalMech.Constructor(Vector3(5545.665f, 4259.719f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 506, + Terminal.Constructor(Vector3(5545.665f, 4259.701f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(530, 506) - LocalObject(531, ImplantTerminalMech.Constructor(Vector3(5545.775f, 4216.281f, 105.7289f)), owning_building_guid = 3) - LocalObject(507, Terminal.Constructor(Vector3(5545.775f, 4216.299f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 531, + ImplantTerminalMech.Constructor(Vector3(5545.775f, 4216.281f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 507, + Terminal.Constructor(Vector3(5545.775f, 4216.299f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(531, 507) - LocalObject(532, ImplantTerminalMech.Constructor(Vector3(5551.078f, 4216.281f, 105.7289f)), owning_building_guid = 3) - LocalObject(508, Terminal.Constructor(Vector3(5551.078f, 4216.299f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 532, + ImplantTerminalMech.Constructor(Vector3(5551.078f, 4216.281f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 508, + Terminal.Constructor(Vector3(5551.078f, 4216.299f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(532, 508) - LocalObject(533, ImplantTerminalMech.Constructor(Vector3(5551.073f, 4259.719f, 105.7289f)), owning_building_guid = 3) - LocalObject(509, Terminal.Constructor(Vector3(5551.073f, 4259.701f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 533, + ImplantTerminalMech.Constructor(Vector3(5551.073f, 4259.719f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 509, + Terminal.Constructor(Vector3(5551.073f, 4259.701f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(533, 509) - LocalObject(534, ImplantTerminalMech.Constructor(Vector3(5668.916f, 4216.271f, 105.7289f)), owning_building_guid = 3) - LocalObject(510, Terminal.Constructor(Vector3(5668.916f, 4216.289f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 534, + ImplantTerminalMech.Constructor(Vector3(5668.916f, 4216.271f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 510, + Terminal.Constructor(Vector3(5668.916f, 4216.289f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(534, 510) - LocalObject(535, ImplantTerminalMech.Constructor(Vector3(5668.995f, 4259.715f, 105.7289f)), owning_building_guid = 3) - LocalObject(511, Terminal.Constructor(Vector3(5668.995f, 4259.697f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 535, + ImplantTerminalMech.Constructor(Vector3(5668.995f, 4259.715f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 511, + Terminal.Constructor(Vector3(5668.995f, 4259.697f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(535, 511) - LocalObject(536, ImplantTerminalMech.Constructor(Vector3(5674.298f, 4259.715f, 105.7289f)), owning_building_guid = 3) - LocalObject(512, Terminal.Constructor(Vector3(5674.298f, 4259.697f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 536, + ImplantTerminalMech.Constructor(Vector3(5674.298f, 4259.715f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 512, + Terminal.Constructor(Vector3(5674.298f, 4259.697f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(536, 512) - LocalObject(537, ImplantTerminalMech.Constructor(Vector3(5674.323f, 4216.271f, 105.7289f)), owning_building_guid = 3) - LocalObject(513, Terminal.Constructor(Vector3(5674.323f, 4216.289f, 105.7289f), implant_terminal_interface), owning_building_guid = 3) + LocalObject( + 537, + ImplantTerminalMech.Constructor(Vector3(5674.323f, 4216.271f, 105.7289f)), + owning_building_guid = 3 + ) + LocalObject( + 513, + Terminal.Constructor(Vector3(5674.323f, 4216.289f, 105.7289f), implant_terminal_interface), + owning_building_guid = 3 + ) TerminalToInterface(537, 513) } Building58() def Building58(): Unit = { // Name: S_Ishundar_WG_tower Type: tower_a GUID: 28, MapID: 58 - LocalBuilding("S_Ishundar_WG_tower", 28, 58, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2708f, 5084f, 56.14882f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1015, CaptureTerminal.Constructor(Vector3(2724.587f, 5083.897f, 66.14781f), secondary_capture), owning_building_guid = 28) + LocalBuilding( + "S_Ishundar_WG_tower", + 28, + 58, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2708f, 5084f, 56.14882f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1015, + CaptureTerminal.Constructor(Vector3(2724.587f, 5083.897f, 66.14781f), secondary_capture), + owning_building_guid = 28 + ) LocalObject(312, Door.Constructor(Vector3(2720f, 5076f, 57.66982f)), owning_building_guid = 28) LocalObject(313, Door.Constructor(Vector3(2720f, 5076f, 77.66882f)), owning_building_guid = 28) LocalObject(314, Door.Constructor(Vector3(2720f, 5092f, 57.66982f)), owning_building_guid = 28) LocalObject(315, Door.Constructor(Vector3(2720f, 5092f, 77.66882f)), owning_building_guid = 28) LocalObject(1025, Door.Constructor(Vector3(2719.146f, 5072.794f, 47.48482f)), owning_building_guid = 28) LocalObject(1026, Door.Constructor(Vector3(2719.146f, 5089.204f, 47.48482f)), owning_building_guid = 28) - LocalObject(538, IFFLock.Constructor(Vector3(2717.957f, 5092.811f, 57.60981f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 314) - LocalObject(539, IFFLock.Constructor(Vector3(2717.957f, 5092.811f, 77.60982f), Vector3(0, 0, 0)), owning_building_guid = 28, door_guid = 315) - LocalObject(540, IFFLock.Constructor(Vector3(2722.047f, 5075.189f, 57.60981f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 312) - LocalObject(541, IFFLock.Constructor(Vector3(2722.047f, 5075.189f, 77.60982f), Vector3(0, 0, 180)), owning_building_guid = 28, door_guid = 313) + LocalObject( + 538, + IFFLock.Constructor(Vector3(2717.957f, 5092.811f, 57.60981f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 314 + ) + LocalObject( + 539, + IFFLock.Constructor(Vector3(2717.957f, 5092.811f, 77.60982f), Vector3(0, 0, 0)), + owning_building_guid = 28, + door_guid = 315 + ) + LocalObject( + 540, + IFFLock.Constructor(Vector3(2722.047f, 5075.189f, 57.60981f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 312 + ) + LocalObject( + 541, + IFFLock.Constructor(Vector3(2722.047f, 5075.189f, 77.60982f), Vector3(0, 0, 180)), + owning_building_guid = 28, + door_guid = 313 + ) LocalObject(584, Locker.Constructor(Vector3(2723.716f, 5068.963f, 46.14281f)), owning_building_guid = 28) LocalObject(585, Locker.Constructor(Vector3(2723.751f, 5090.835f, 46.14281f)), owning_building_guid = 28) LocalObject(586, Locker.Constructor(Vector3(2725.053f, 5068.963f, 46.14281f)), owning_building_guid = 28) @@ -359,35 +1194,106 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(589, Locker.Constructor(Vector3(2727.741f, 5090.835f, 46.14281f)), owning_building_guid = 28) LocalObject(590, Locker.Constructor(Vector3(2729.143f, 5068.963f, 46.14281f)), owning_building_guid = 28) LocalObject(591, Locker.Constructor(Vector3(2729.143f, 5090.835f, 46.14281f)), owning_building_guid = 28) - LocalObject(789, Terminal.Constructor(Vector3(2729.445f, 5074.129f, 47.48082f), order_terminal), owning_building_guid = 28) - LocalObject(790, Terminal.Constructor(Vector3(2729.445f, 5079.853f, 47.48082f), order_terminal), owning_building_guid = 28) - LocalObject(791, Terminal.Constructor(Vector3(2729.445f, 5085.234f, 47.48082f), order_terminal), owning_building_guid = 28) - LocalObject(995, SpawnTube.Constructor(Vector3(2718.706f, 5071.742f, 45.63081f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(996, SpawnTube.Constructor(Vector3(2718.706f, 5088.152f, 45.63081f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 28) - LocalObject(664, FacilityTurret.Constructor(Vector3(2695.32f, 5071.295f, 75.09081f), manned_turret), owning_building_guid = 28) + LocalObject( + 789, + Terminal.Constructor(Vector3(2729.445f, 5074.129f, 47.48082f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 790, + Terminal.Constructor(Vector3(2729.445f, 5079.853f, 47.48082f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 791, + Terminal.Constructor(Vector3(2729.445f, 5085.234f, 47.48082f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 995, + SpawnTube.Constructor(Vector3(2718.706f, 5071.742f, 45.63081f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 996, + SpawnTube.Constructor(Vector3(2718.706f, 5088.152f, 45.63081f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 28 + ) + LocalObject( + 664, + FacilityTurret.Constructor(Vector3(2695.32f, 5071.295f, 75.09081f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(664, 5000) - LocalObject(665, FacilityTurret.Constructor(Vector3(2730.647f, 5096.707f, 75.09081f), manned_turret), owning_building_guid = 28) + LocalObject( + 665, + FacilityTurret.Constructor(Vector3(2730.647f, 5096.707f, 75.09081f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(665, 5001) - LocalObject(965, Painbox.Constructor(Vector3(2713.235f, 5077.803f, 47.64791f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(966, Painbox.Constructor(Vector3(2724.889f, 5086.086f, 46.24882f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(967, Painbox.Constructor(Vector3(2724.975f, 5074.223f, 46.24882f), painbox_radius_continuous), owning_building_guid = 28) + LocalObject( + 965, + Painbox.Constructor(Vector3(2713.235f, 5077.803f, 47.64791f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 966, + Painbox.Constructor(Vector3(2724.889f, 5086.086f, 46.24882f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 967, + Painbox.Constructor(Vector3(2724.975f, 5074.223f, 46.24882f), painbox_radius_continuous), + owning_building_guid = 28 + ) } Building63() def Building63(): Unit = { // Name: Esamir_WG_tower Type: tower_a GUID: 29, MapID: 63 - LocalBuilding("Esamir_WG_tower", 29, 63, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3968f, 2600f, 90.86123f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1019, CaptureTerminal.Constructor(Vector3(3984.587f, 2599.897f, 100.8602f), secondary_capture), owning_building_guid = 29) + LocalBuilding( + "Esamir_WG_tower", + 29, + 63, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3968f, 2600f, 90.86123f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1019, + CaptureTerminal.Constructor(Vector3(3984.587f, 2599.897f, 100.8602f), secondary_capture), + owning_building_guid = 29 + ) LocalObject(330, Door.Constructor(Vector3(3980f, 2592f, 92.38223f)), owning_building_guid = 29) LocalObject(331, Door.Constructor(Vector3(3980f, 2592f, 112.3812f)), owning_building_guid = 29) LocalObject(332, Door.Constructor(Vector3(3980f, 2608f, 92.38223f)), owning_building_guid = 29) LocalObject(333, Door.Constructor(Vector3(3980f, 2608f, 112.3812f)), owning_building_guid = 29) LocalObject(1033, Door.Constructor(Vector3(3979.146f, 2588.794f, 82.19723f)), owning_building_guid = 29) LocalObject(1034, Door.Constructor(Vector3(3979.146f, 2605.204f, 82.19723f)), owning_building_guid = 29) - LocalObject(556, IFFLock.Constructor(Vector3(3977.957f, 2608.811f, 92.32223f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 332) - LocalObject(557, IFFLock.Constructor(Vector3(3977.957f, 2608.811f, 112.3222f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 333) - LocalObject(558, IFFLock.Constructor(Vector3(3982.047f, 2591.189f, 92.32223f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 330) - LocalObject(559, IFFLock.Constructor(Vector3(3982.047f, 2591.189f, 112.3222f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 331) + LocalObject( + 556, + IFFLock.Constructor(Vector3(3977.957f, 2608.811f, 92.32223f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 332 + ) + LocalObject( + 557, + IFFLock.Constructor(Vector3(3977.957f, 2608.811f, 112.3222f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 333 + ) + LocalObject( + 558, + IFFLock.Constructor(Vector3(3982.047f, 2591.189f, 92.32223f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 330 + ) + LocalObject( + 559, + IFFLock.Constructor(Vector3(3982.047f, 2591.189f, 112.3222f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 331 + ) LocalObject(616, Locker.Constructor(Vector3(3983.716f, 2584.963f, 80.85523f)), owning_building_guid = 29) LocalObject(617, Locker.Constructor(Vector3(3983.751f, 2606.835f, 80.85523f)), owning_building_guid = 29) LocalObject(618, Locker.Constructor(Vector3(3985.053f, 2584.963f, 80.85523f)), owning_building_guid = 29) @@ -396,35 +1302,106 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(621, Locker.Constructor(Vector3(3987.741f, 2606.835f, 80.85523f)), owning_building_guid = 29) LocalObject(622, Locker.Constructor(Vector3(3989.143f, 2584.963f, 80.85523f)), owning_building_guid = 29) LocalObject(623, Locker.Constructor(Vector3(3989.143f, 2606.835f, 80.85523f)), owning_building_guid = 29) - LocalObject(877, Terminal.Constructor(Vector3(3989.445f, 2590.129f, 82.19323f), order_terminal), owning_building_guid = 29) - LocalObject(878, Terminal.Constructor(Vector3(3989.445f, 2595.853f, 82.19323f), order_terminal), owning_building_guid = 29) - LocalObject(879, Terminal.Constructor(Vector3(3989.445f, 2601.234f, 82.19323f), order_terminal), owning_building_guid = 29) - LocalObject(1003, SpawnTube.Constructor(Vector3(3978.706f, 2587.742f, 80.34323f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(1004, SpawnTube.Constructor(Vector3(3978.706f, 2604.152f, 80.34323f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(670, FacilityTurret.Constructor(Vector3(3955.32f, 2587.295f, 109.8032f), manned_turret), owning_building_guid = 29) + LocalObject( + 877, + Terminal.Constructor(Vector3(3989.445f, 2590.129f, 82.19323f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 878, + Terminal.Constructor(Vector3(3989.445f, 2595.853f, 82.19323f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 879, + Terminal.Constructor(Vector3(3989.445f, 2601.234f, 82.19323f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 1003, + SpawnTube.Constructor(Vector3(3978.706f, 2587.742f, 80.34323f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 1004, + SpawnTube.Constructor(Vector3(3978.706f, 2604.152f, 80.34323f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 670, + FacilityTurret.Constructor(Vector3(3955.32f, 2587.295f, 109.8032f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(670, 5002) - LocalObject(671, FacilityTurret.Constructor(Vector3(3990.647f, 2612.707f, 109.8032f), manned_turret), owning_building_guid = 29) + LocalObject( + 671, + FacilityTurret.Constructor(Vector3(3990.647f, 2612.707f, 109.8032f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(671, 5003) - LocalObject(977, Painbox.Constructor(Vector3(3973.235f, 2593.803f, 82.36033f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(978, Painbox.Constructor(Vector3(3984.889f, 2602.086f, 80.96123f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(979, Painbox.Constructor(Vector3(3984.975f, 2590.223f, 80.96123f), painbox_radius_continuous), owning_building_guid = 29) + LocalObject( + 977, + Painbox.Constructor(Vector3(3973.235f, 2593.803f, 82.36033f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 978, + Painbox.Constructor(Vector3(3984.889f, 2602.086f, 80.96123f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 979, + Painbox.Constructor(Vector3(3984.975f, 2590.223f, 80.96123f), painbox_radius_continuous), + owning_building_guid = 29 + ) } Building66() def Building66(): Unit = { // Name: SE_Hossin_WG_tower Type: tower_a GUID: 30, MapID: 66 - LocalBuilding("SE_Hossin_WG_tower", 30, 66, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(6006f, 4414f, 97.87095f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(1024, CaptureTerminal.Constructor(Vector3(6022.587f, 4413.897f, 107.8699f), secondary_capture), owning_building_guid = 30) + LocalBuilding( + "SE_Hossin_WG_tower", + 30, + 66, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(6006f, 4414f, 97.87095f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 1024, + CaptureTerminal.Constructor(Vector3(6022.587f, 4413.897f, 107.8699f), secondary_capture), + owning_building_guid = 30 + ) LocalObject(354, Door.Constructor(Vector3(6018f, 4406f, 99.39195f)), owning_building_guid = 30) LocalObject(355, Door.Constructor(Vector3(6018f, 4406f, 119.3909f)), owning_building_guid = 30) LocalObject(356, Door.Constructor(Vector3(6018f, 4422f, 99.39195f)), owning_building_guid = 30) LocalObject(357, Door.Constructor(Vector3(6018f, 4422f, 119.3909f)), owning_building_guid = 30) LocalObject(1043, Door.Constructor(Vector3(6017.146f, 4402.794f, 89.20695f)), owning_building_guid = 30) LocalObject(1044, Door.Constructor(Vector3(6017.146f, 4419.204f, 89.20695f)), owning_building_guid = 30) - LocalObject(580, IFFLock.Constructor(Vector3(6015.957f, 4422.811f, 99.33195f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 356) - LocalObject(581, IFFLock.Constructor(Vector3(6015.957f, 4422.811f, 119.3319f), Vector3(0, 0, 0)), owning_building_guid = 30, door_guid = 357) - LocalObject(582, IFFLock.Constructor(Vector3(6020.047f, 4405.189f, 99.33195f), Vector3(0, 0, 180)), owning_building_guid = 30, door_guid = 354) - LocalObject(583, IFFLock.Constructor(Vector3(6020.047f, 4405.189f, 119.3319f), Vector3(0, 0, 180)), owning_building_guid = 30, door_guid = 355) + LocalObject( + 580, + IFFLock.Constructor(Vector3(6015.957f, 4422.811f, 99.33195f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 356 + ) + LocalObject( + 581, + IFFLock.Constructor(Vector3(6015.957f, 4422.811f, 119.3319f), Vector3(0, 0, 0)), + owning_building_guid = 30, + door_guid = 357 + ) + LocalObject( + 582, + IFFLock.Constructor(Vector3(6020.047f, 4405.189f, 99.33195f), Vector3(0, 0, 180)), + owning_building_guid = 30, + door_guid = 354 + ) + LocalObject( + 583, + IFFLock.Constructor(Vector3(6020.047f, 4405.189f, 119.3319f), Vector3(0, 0, 180)), + owning_building_guid = 30, + door_guid = 355 + ) LocalObject(656, Locker.Constructor(Vector3(6021.716f, 4398.963f, 87.86495f)), owning_building_guid = 30) LocalObject(657, Locker.Constructor(Vector3(6021.751f, 4420.835f, 87.86495f)), owning_building_guid = 30) LocalObject(658, Locker.Constructor(Vector3(6023.053f, 4398.963f, 87.86495f)), owning_building_guid = 30) @@ -433,25 +1410,76 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(661, Locker.Constructor(Vector3(6025.741f, 4420.835f, 87.86495f)), owning_building_guid = 30) LocalObject(662, Locker.Constructor(Vector3(6027.143f, 4398.963f, 87.86495f)), owning_building_guid = 30) LocalObject(663, Locker.Constructor(Vector3(6027.143f, 4420.835f, 87.86495f)), owning_building_guid = 30) - LocalObject(930, Terminal.Constructor(Vector3(6027.445f, 4404.129f, 89.20295f), order_terminal), owning_building_guid = 30) - LocalObject(931, Terminal.Constructor(Vector3(6027.445f, 4409.853f, 89.20295f), order_terminal), owning_building_guid = 30) - LocalObject(932, Terminal.Constructor(Vector3(6027.445f, 4415.234f, 89.20295f), order_terminal), owning_building_guid = 30) - LocalObject(1013, SpawnTube.Constructor(Vector3(6016.706f, 4401.742f, 87.35295f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(1014, SpawnTube.Constructor(Vector3(6016.706f, 4418.152f, 87.35295f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 30) - LocalObject(676, FacilityTurret.Constructor(Vector3(5993.32f, 4401.295f, 116.813f), manned_turret), owning_building_guid = 30) + LocalObject( + 930, + Terminal.Constructor(Vector3(6027.445f, 4404.129f, 89.20295f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 931, + Terminal.Constructor(Vector3(6027.445f, 4409.853f, 89.20295f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 932, + Terminal.Constructor(Vector3(6027.445f, 4415.234f, 89.20295f), order_terminal), + owning_building_guid = 30 + ) + LocalObject( + 1013, + SpawnTube.Constructor(Vector3(6016.706f, 4401.742f, 87.35295f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 1014, + SpawnTube.Constructor(Vector3(6016.706f, 4418.152f, 87.35295f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 30 + ) + LocalObject( + 676, + FacilityTurret.Constructor(Vector3(5993.32f, 4401.295f, 116.813f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(676, 5004) - LocalObject(677, FacilityTurret.Constructor(Vector3(6028.647f, 4426.707f, 116.813f), manned_turret), owning_building_guid = 30) + LocalObject( + 677, + FacilityTurret.Constructor(Vector3(6028.647f, 4426.707f, 116.813f), manned_turret), + owning_building_guid = 30 + ) TurretToWeapon(677, 5005) - LocalObject(992, Painbox.Constructor(Vector3(6011.235f, 4407.803f, 89.37005f), painbox_radius_continuous), owning_building_guid = 30) - LocalObject(993, Painbox.Constructor(Vector3(6022.889f, 4416.086f, 87.97095f), painbox_radius_continuous), owning_building_guid = 30) - LocalObject(994, Painbox.Constructor(Vector3(6022.975f, 4404.223f, 87.97095f), painbox_radius_continuous), owning_building_guid = 30) + LocalObject( + 992, + Painbox.Constructor(Vector3(6011.235f, 4407.803f, 89.37005f), painbox_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 993, + Painbox.Constructor(Vector3(6022.889f, 4416.086f, 87.97095f), painbox_radius_continuous), + owning_building_guid = 30 + ) + LocalObject( + 994, + Painbox.Constructor(Vector3(6022.975f, 4404.223f, 87.97095f), painbox_radius_continuous), + owning_building_guid = 30 + ) } Building60() def Building60(): Unit = { // Name: NW_Esamir_WG_tower Type: tower_b GUID: 31, MapID: 60 - LocalBuilding("NW_Esamir_WG_tower", 31, 60, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3208f, 3524f, 92.25745f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1016, CaptureTerminal.Constructor(Vector3(3224.587f, 3523.897f, 112.2565f), secondary_capture), owning_building_guid = 31) + LocalBuilding( + "NW_Esamir_WG_tower", + 31, + 60, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3208f, 3524f, 92.25745f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1016, + CaptureTerminal.Constructor(Vector3(3224.587f, 3523.897f, 112.2565f), secondary_capture), + owning_building_guid = 31 + ) LocalObject(316, Door.Constructor(Vector3(3220f, 3516f, 93.77745f)), owning_building_guid = 31) LocalObject(317, Door.Constructor(Vector3(3220f, 3516f, 103.7775f)), owning_building_guid = 31) LocalObject(318, Door.Constructor(Vector3(3220f, 3516f, 123.7775f)), owning_building_guid = 31) @@ -460,12 +1488,42 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(321, Door.Constructor(Vector3(3220f, 3532f, 123.7775f)), owning_building_guid = 31) LocalObject(1027, Door.Constructor(Vector3(3219.147f, 3512.794f, 83.59345f)), owning_building_guid = 31) LocalObject(1028, Door.Constructor(Vector3(3219.147f, 3529.204f, 83.59345f)), owning_building_guid = 31) - LocalObject(542, IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 93.71845f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 319) - LocalObject(543, IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 103.7185f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 320) - LocalObject(544, IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 123.7185f), Vector3(0, 0, 0)), owning_building_guid = 31, door_guid = 321) - LocalObject(545, IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 93.71845f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 316) - LocalObject(546, IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 103.7185f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 317) - LocalObject(547, IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 123.7185f), Vector3(0, 0, 180)), owning_building_guid = 31, door_guid = 318) + LocalObject( + 542, + IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 93.71845f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 319 + ) + LocalObject( + 543, + IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 103.7185f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 320 + ) + LocalObject( + 544, + IFFLock.Constructor(Vector3(3217.957f, 3532.811f, 123.7185f), Vector3(0, 0, 0)), + owning_building_guid = 31, + door_guid = 321 + ) + LocalObject( + 545, + IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 93.71845f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 316 + ) + LocalObject( + 546, + IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 103.7185f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 317 + ) + LocalObject( + 547, + IFFLock.Constructor(Vector3(3222.047f, 3515.189f, 123.7185f), Vector3(0, 0, 180)), + owning_building_guid = 31, + door_guid = 318 + ) LocalObject(592, Locker.Constructor(Vector3(3223.716f, 3508.963f, 82.25146f)), owning_building_guid = 31) LocalObject(593, Locker.Constructor(Vector3(3223.751f, 3530.835f, 82.25146f)), owning_building_guid = 31) LocalObject(594, Locker.Constructor(Vector3(3225.053f, 3508.963f, 82.25146f)), owning_building_guid = 31) @@ -474,21 +1532,64 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(597, Locker.Constructor(Vector3(3227.741f, 3530.835f, 82.25146f)), owning_building_guid = 31) LocalObject(598, Locker.Constructor(Vector3(3229.143f, 3508.963f, 82.25146f)), owning_building_guid = 31) LocalObject(599, Locker.Constructor(Vector3(3229.143f, 3530.835f, 82.25146f)), owning_building_guid = 31) - LocalObject(830, Terminal.Constructor(Vector3(3229.446f, 3514.129f, 83.58945f), order_terminal), owning_building_guid = 31) - LocalObject(831, Terminal.Constructor(Vector3(3229.446f, 3519.853f, 83.58945f), order_terminal), owning_building_guid = 31) - LocalObject(832, Terminal.Constructor(Vector3(3229.446f, 3525.234f, 83.58945f), order_terminal), owning_building_guid = 31) - LocalObject(997, SpawnTube.Constructor(Vector3(3218.706f, 3511.742f, 81.73946f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(998, SpawnTube.Constructor(Vector3(3218.706f, 3528.152f, 81.73946f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 31) - LocalObject(968, Painbox.Constructor(Vector3(3213.493f, 3516.849f, 83.54685f), painbox_radius_continuous), owning_building_guid = 31) - LocalObject(969, Painbox.Constructor(Vector3(3225.127f, 3514.078f, 82.35745f), painbox_radius_continuous), owning_building_guid = 31) - LocalObject(970, Painbox.Constructor(Vector3(3225.259f, 3526.107f, 82.35745f), painbox_radius_continuous), owning_building_guid = 31) + LocalObject( + 830, + Terminal.Constructor(Vector3(3229.446f, 3514.129f, 83.58945f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 831, + Terminal.Constructor(Vector3(3229.446f, 3519.853f, 83.58945f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 832, + Terminal.Constructor(Vector3(3229.446f, 3525.234f, 83.58945f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 997, + SpawnTube.Constructor(Vector3(3218.706f, 3511.742f, 81.73946f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 998, + SpawnTube.Constructor(Vector3(3218.706f, 3528.152f, 81.73946f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 31 + ) + LocalObject( + 968, + Painbox.Constructor(Vector3(3213.493f, 3516.849f, 83.54685f), painbox_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 969, + Painbox.Constructor(Vector3(3225.127f, 3514.078f, 82.35745f), painbox_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 970, + Painbox.Constructor(Vector3(3225.259f, 3526.107f, 82.35745f), painbox_radius_continuous), + owning_building_guid = 31 + ) } Building64() def Building64(): Unit = { // Name: W_Hossin_WG_tower Type: tower_b GUID: 32, MapID: 64 - LocalBuilding("W_Hossin_WG_tower", 32, 64, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3988f, 4380f, 87.9162f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1020, CaptureTerminal.Constructor(Vector3(4004.587f, 4379.897f, 107.9152f), secondary_capture), owning_building_guid = 32) + LocalBuilding( + "W_Hossin_WG_tower", + 32, + 64, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3988f, 4380f, 87.9162f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1020, + CaptureTerminal.Constructor(Vector3(4004.587f, 4379.897f, 107.9152f), secondary_capture), + owning_building_guid = 32 + ) LocalObject(334, Door.Constructor(Vector3(4000f, 4372f, 89.4362f)), owning_building_guid = 32) LocalObject(335, Door.Constructor(Vector3(4000f, 4372f, 99.4362f)), owning_building_guid = 32) LocalObject(336, Door.Constructor(Vector3(4000f, 4372f, 119.4362f)), owning_building_guid = 32) @@ -497,12 +1598,42 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(339, Door.Constructor(Vector3(4000f, 4388f, 119.4362f)), owning_building_guid = 32) LocalObject(1035, Door.Constructor(Vector3(3999.147f, 4368.794f, 79.2522f)), owning_building_guid = 32) LocalObject(1036, Door.Constructor(Vector3(3999.147f, 4385.204f, 79.2522f)), owning_building_guid = 32) - LocalObject(560, IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 89.3772f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 337) - LocalObject(561, IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 99.3772f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 338) - LocalObject(562, IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 119.3772f), Vector3(0, 0, 0)), owning_building_guid = 32, door_guid = 339) - LocalObject(563, IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 89.3772f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 334) - LocalObject(564, IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 99.3772f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 335) - LocalObject(565, IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 119.3772f), Vector3(0, 0, 180)), owning_building_guid = 32, door_guid = 336) + LocalObject( + 560, + IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 89.3772f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 337 + ) + LocalObject( + 561, + IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 99.3772f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 338 + ) + LocalObject( + 562, + IFFLock.Constructor(Vector3(3997.957f, 4388.811f, 119.3772f), Vector3(0, 0, 0)), + owning_building_guid = 32, + door_guid = 339 + ) + LocalObject( + 563, + IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 89.3772f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 334 + ) + LocalObject( + 564, + IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 99.3772f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 335 + ) + LocalObject( + 565, + IFFLock.Constructor(Vector3(4002.047f, 4371.189f, 119.3772f), Vector3(0, 0, 180)), + owning_building_guid = 32, + door_guid = 336 + ) LocalObject(624, Locker.Constructor(Vector3(4003.716f, 4364.963f, 77.9102f)), owning_building_guid = 32) LocalObject(625, Locker.Constructor(Vector3(4003.751f, 4386.835f, 77.9102f)), owning_building_guid = 32) LocalObject(626, Locker.Constructor(Vector3(4005.053f, 4364.963f, 77.9102f)), owning_building_guid = 32) @@ -511,21 +1642,64 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(629, Locker.Constructor(Vector3(4007.741f, 4386.835f, 77.9102f)), owning_building_guid = 32) LocalObject(630, Locker.Constructor(Vector3(4009.143f, 4364.963f, 77.9102f)), owning_building_guid = 32) LocalObject(631, Locker.Constructor(Vector3(4009.143f, 4386.835f, 77.9102f)), owning_building_guid = 32) - LocalObject(880, Terminal.Constructor(Vector3(4009.446f, 4370.129f, 79.2482f), order_terminal), owning_building_guid = 32) - LocalObject(881, Terminal.Constructor(Vector3(4009.446f, 4375.853f, 79.2482f), order_terminal), owning_building_guid = 32) - LocalObject(882, Terminal.Constructor(Vector3(4009.446f, 4381.234f, 79.2482f), order_terminal), owning_building_guid = 32) - LocalObject(1005, SpawnTube.Constructor(Vector3(3998.706f, 4367.742f, 77.3982f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(1006, SpawnTube.Constructor(Vector3(3998.706f, 4384.152f, 77.3982f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 32) - LocalObject(980, Painbox.Constructor(Vector3(3993.493f, 4372.849f, 79.2056f), painbox_radius_continuous), owning_building_guid = 32) - LocalObject(981, Painbox.Constructor(Vector3(4005.127f, 4370.078f, 78.0162f), painbox_radius_continuous), owning_building_guid = 32) - LocalObject(982, Painbox.Constructor(Vector3(4005.259f, 4382.107f, 78.0162f), painbox_radius_continuous), owning_building_guid = 32) + LocalObject( + 880, + Terminal.Constructor(Vector3(4009.446f, 4370.129f, 79.2482f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 881, + Terminal.Constructor(Vector3(4009.446f, 4375.853f, 79.2482f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 882, + Terminal.Constructor(Vector3(4009.446f, 4381.234f, 79.2482f), order_terminal), + owning_building_guid = 32 + ) + LocalObject( + 1005, + SpawnTube.Constructor(Vector3(3998.706f, 4367.742f, 77.3982f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 1006, + SpawnTube.Constructor(Vector3(3998.706f, 4384.152f, 77.3982f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 32 + ) + LocalObject( + 980, + Painbox.Constructor(Vector3(3993.493f, 4372.849f, 79.2056f), painbox_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 981, + Painbox.Constructor(Vector3(4005.127f, 4370.078f, 78.0162f), painbox_radius_continuous), + owning_building_guid = 32 + ) + LocalObject( + 982, + Painbox.Constructor(Vector3(4005.259f, 4382.107f, 78.0162f), painbox_radius_continuous), + owning_building_guid = 32 + ) } Building67() def Building67(): Unit = { // Name: NE_Esamir_WG_tower Type: tower_b GUID: 33, MapID: 67 - LocalBuilding("NE_Esamir_WG_tower", 33, 67, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5098f, 2978f, 97.9873f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(1022, CaptureTerminal.Constructor(Vector3(5114.587f, 2977.897f, 117.9863f), secondary_capture), owning_building_guid = 33) + LocalBuilding( + "NE_Esamir_WG_tower", + 33, + 67, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5098f, 2978f, 97.9873f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 1022, + CaptureTerminal.Constructor(Vector3(5114.587f, 2977.897f, 117.9863f), secondary_capture), + owning_building_guid = 33 + ) LocalObject(344, Door.Constructor(Vector3(5110f, 2970f, 99.5073f)), owning_building_guid = 33) LocalObject(345, Door.Constructor(Vector3(5110f, 2970f, 109.5073f)), owning_building_guid = 33) LocalObject(346, Door.Constructor(Vector3(5110f, 2970f, 129.5073f)), owning_building_guid = 33) @@ -534,12 +1708,42 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(349, Door.Constructor(Vector3(5110f, 2986f, 129.5073f)), owning_building_guid = 33) LocalObject(1039, Door.Constructor(Vector3(5109.147f, 2966.794f, 89.3233f)), owning_building_guid = 33) LocalObject(1040, Door.Constructor(Vector3(5109.147f, 2983.204f, 89.3233f)), owning_building_guid = 33) - LocalObject(570, IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 99.4483f), Vector3(0, 0, 0)), owning_building_guid = 33, door_guid = 347) - LocalObject(571, IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 109.4483f), Vector3(0, 0, 0)), owning_building_guid = 33, door_guid = 348) - LocalObject(572, IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 129.4483f), Vector3(0, 0, 0)), owning_building_guid = 33, door_guid = 349) - LocalObject(573, IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 99.4483f), Vector3(0, 0, 180)), owning_building_guid = 33, door_guid = 344) - LocalObject(574, IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 109.4483f), Vector3(0, 0, 180)), owning_building_guid = 33, door_guid = 345) - LocalObject(575, IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 129.4483f), Vector3(0, 0, 180)), owning_building_guid = 33, door_guid = 346) + LocalObject( + 570, + IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 99.4483f), Vector3(0, 0, 0)), + owning_building_guid = 33, + door_guid = 347 + ) + LocalObject( + 571, + IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 109.4483f), Vector3(0, 0, 0)), + owning_building_guid = 33, + door_guid = 348 + ) + LocalObject( + 572, + IFFLock.Constructor(Vector3(5107.957f, 2986.811f, 129.4483f), Vector3(0, 0, 0)), + owning_building_guid = 33, + door_guid = 349 + ) + LocalObject( + 573, + IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 99.4483f), Vector3(0, 0, 180)), + owning_building_guid = 33, + door_guid = 344 + ) + LocalObject( + 574, + IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 109.4483f), Vector3(0, 0, 180)), + owning_building_guid = 33, + door_guid = 345 + ) + LocalObject( + 575, + IFFLock.Constructor(Vector3(5112.047f, 2969.189f, 129.4483f), Vector3(0, 0, 180)), + owning_building_guid = 33, + door_guid = 346 + ) LocalObject(640, Locker.Constructor(Vector3(5113.716f, 2962.963f, 87.98131f)), owning_building_guid = 33) LocalObject(641, Locker.Constructor(Vector3(5113.751f, 2984.835f, 87.98131f)), owning_building_guid = 33) LocalObject(642, Locker.Constructor(Vector3(5115.053f, 2962.963f, 87.98131f)), owning_building_guid = 33) @@ -548,31 +1752,94 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(645, Locker.Constructor(Vector3(5117.741f, 2984.835f, 87.98131f)), owning_building_guid = 33) LocalObject(646, Locker.Constructor(Vector3(5119.143f, 2962.963f, 87.98131f)), owning_building_guid = 33) LocalObject(647, Locker.Constructor(Vector3(5119.143f, 2984.835f, 87.98131f)), owning_building_guid = 33) - LocalObject(886, Terminal.Constructor(Vector3(5119.446f, 2968.129f, 89.31931f), order_terminal), owning_building_guid = 33) - LocalObject(887, Terminal.Constructor(Vector3(5119.446f, 2973.853f, 89.31931f), order_terminal), owning_building_guid = 33) - LocalObject(888, Terminal.Constructor(Vector3(5119.446f, 2979.234f, 89.31931f), order_terminal), owning_building_guid = 33) - LocalObject(1009, SpawnTube.Constructor(Vector3(5108.706f, 2965.742f, 87.46931f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 33) - LocalObject(1010, SpawnTube.Constructor(Vector3(5108.706f, 2982.152f, 87.46931f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 33) - LocalObject(986, Painbox.Constructor(Vector3(5103.493f, 2970.849f, 89.2767f), painbox_radius_continuous), owning_building_guid = 33) - LocalObject(987, Painbox.Constructor(Vector3(5115.127f, 2968.078f, 88.0873f), painbox_radius_continuous), owning_building_guid = 33) - LocalObject(988, Painbox.Constructor(Vector3(5115.259f, 2980.107f, 88.0873f), painbox_radius_continuous), owning_building_guid = 33) + LocalObject( + 886, + Terminal.Constructor(Vector3(5119.446f, 2968.129f, 89.31931f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 887, + Terminal.Constructor(Vector3(5119.446f, 2973.853f, 89.31931f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 888, + Terminal.Constructor(Vector3(5119.446f, 2979.234f, 89.31931f), order_terminal), + owning_building_guid = 33 + ) + LocalObject( + 1009, + SpawnTube.Constructor(Vector3(5108.706f, 2965.742f, 87.46931f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 33 + ) + LocalObject( + 1010, + SpawnTube.Constructor(Vector3(5108.706f, 2982.152f, 87.46931f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 33 + ) + LocalObject( + 986, + Painbox.Constructor(Vector3(5103.493f, 2970.849f, 89.2767f), painbox_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 987, + Painbox.Constructor(Vector3(5115.127f, 2968.078f, 88.0873f), painbox_radius_continuous), + owning_building_guid = 33 + ) + LocalObject( + 988, + Painbox.Constructor(Vector3(5115.259f, 2980.107f, 88.0873f), painbox_radius_continuous), + owning_building_guid = 33 + ) } Building59() def Building59(): Unit = { // Name: SE_Ishundar_WG_tower Type: tower_c GUID: 34, MapID: 59 - LocalBuilding("SE_Ishundar_WG_tower", 34, 59, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3224f, 4594f, 56.08539f), Vector3(0f, 0f, 0f), tower_c))) - LocalObject(1017, CaptureTerminal.Constructor(Vector3(3240.587f, 4593.897f, 66.08439f), secondary_capture), owning_building_guid = 34) + LocalBuilding( + "SE_Ishundar_WG_tower", + 34, + 59, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3224f, 4594f, 56.08539f), Vector3(0f, 0f, 0f), tower_c) + ) + ) + LocalObject( + 1017, + CaptureTerminal.Constructor(Vector3(3240.587f, 4593.897f, 66.08439f), secondary_capture), + owning_building_guid = 34 + ) LocalObject(322, Door.Constructor(Vector3(3236f, 4586f, 57.60639f)), owning_building_guid = 34) LocalObject(323, Door.Constructor(Vector3(3236f, 4586f, 77.60539f)), owning_building_guid = 34) LocalObject(324, Door.Constructor(Vector3(3236f, 4602f, 57.60639f)), owning_building_guid = 34) LocalObject(325, Door.Constructor(Vector3(3236f, 4602f, 77.60539f)), owning_building_guid = 34) LocalObject(1029, Door.Constructor(Vector3(3235.146f, 4582.794f, 47.42139f)), owning_building_guid = 34) LocalObject(1030, Door.Constructor(Vector3(3235.146f, 4599.204f, 47.42139f)), owning_building_guid = 34) - LocalObject(548, IFFLock.Constructor(Vector3(3233.957f, 4602.811f, 57.54639f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 324) - LocalObject(549, IFFLock.Constructor(Vector3(3233.957f, 4602.811f, 77.54639f), Vector3(0, 0, 0)), owning_building_guid = 34, door_guid = 325) - LocalObject(550, IFFLock.Constructor(Vector3(3238.047f, 4585.189f, 57.54639f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 322) - LocalObject(551, IFFLock.Constructor(Vector3(3238.047f, 4585.189f, 77.54639f), Vector3(0, 0, 180)), owning_building_guid = 34, door_guid = 323) + LocalObject( + 548, + IFFLock.Constructor(Vector3(3233.957f, 4602.811f, 57.54639f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 324 + ) + LocalObject( + 549, + IFFLock.Constructor(Vector3(3233.957f, 4602.811f, 77.54639f), Vector3(0, 0, 0)), + owning_building_guid = 34, + door_guid = 325 + ) + LocalObject( + 550, + IFFLock.Constructor(Vector3(3238.047f, 4585.189f, 57.54639f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 322 + ) + LocalObject( + 551, + IFFLock.Constructor(Vector3(3238.047f, 4585.189f, 77.54639f), Vector3(0, 0, 180)), + owning_building_guid = 34, + door_guid = 323 + ) LocalObject(600, Locker.Constructor(Vector3(3239.716f, 4578.963f, 46.07939f)), owning_building_guid = 34) LocalObject(601, Locker.Constructor(Vector3(3239.751f, 4600.835f, 46.07939f)), owning_building_guid = 34) LocalObject(602, Locker.Constructor(Vector3(3241.053f, 4578.963f, 46.07939f)), owning_building_guid = 34) @@ -581,39 +1848,126 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(605, Locker.Constructor(Vector3(3243.741f, 4600.835f, 46.07939f)), owning_building_guid = 34) LocalObject(606, Locker.Constructor(Vector3(3245.143f, 4578.963f, 46.07939f)), owning_building_guid = 34) LocalObject(607, Locker.Constructor(Vector3(3245.143f, 4600.835f, 46.07939f)), owning_building_guid = 34) - LocalObject(833, Terminal.Constructor(Vector3(3245.445f, 4584.129f, 47.41739f), order_terminal), owning_building_guid = 34) - LocalObject(834, Terminal.Constructor(Vector3(3245.445f, 4589.853f, 47.41739f), order_terminal), owning_building_guid = 34) - LocalObject(835, Terminal.Constructor(Vector3(3245.445f, 4595.234f, 47.41739f), order_terminal), owning_building_guid = 34) - LocalObject(999, SpawnTube.Constructor(Vector3(3234.706f, 4581.742f, 45.56739f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(1000, SpawnTube.Constructor(Vector3(3234.706f, 4598.152f, 45.56739f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 34) - LocalObject(941, ProximityTerminal.Constructor(Vector3(3222.907f, 4588.725f, 83.6554f), pad_landing_tower_frame), owning_building_guid = 34) - LocalObject(942, Terminal.Constructor(Vector3(3222.907f, 4588.725f, 83.6554f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(944, ProximityTerminal.Constructor(Vector3(3222.907f, 4599.17f, 83.6554f), pad_landing_tower_frame), owning_building_guid = 34) - LocalObject(945, Terminal.Constructor(Vector3(3222.907f, 4599.17f, 83.6554f), air_rearm_terminal), owning_building_guid = 34) - LocalObject(666, FacilityTurret.Constructor(Vector3(3209.07f, 4579.045f, 75.02739f), manned_turret), owning_building_guid = 34) + LocalObject( + 833, + Terminal.Constructor(Vector3(3245.445f, 4584.129f, 47.41739f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 834, + Terminal.Constructor(Vector3(3245.445f, 4589.853f, 47.41739f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 835, + Terminal.Constructor(Vector3(3245.445f, 4595.234f, 47.41739f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 999, + SpawnTube.Constructor(Vector3(3234.706f, 4581.742f, 45.56739f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 1000, + SpawnTube.Constructor(Vector3(3234.706f, 4598.152f, 45.56739f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 34 + ) + LocalObject( + 941, + ProximityTerminal.Constructor(Vector3(3222.907f, 4588.725f, 83.6554f), pad_landing_tower_frame), + owning_building_guid = 34 + ) + LocalObject( + 942, + Terminal.Constructor(Vector3(3222.907f, 4588.725f, 83.6554f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 944, + ProximityTerminal.Constructor(Vector3(3222.907f, 4599.17f, 83.6554f), pad_landing_tower_frame), + owning_building_guid = 34 + ) + LocalObject( + 945, + Terminal.Constructor(Vector3(3222.907f, 4599.17f, 83.6554f), air_rearm_terminal), + owning_building_guid = 34 + ) + LocalObject( + 666, + FacilityTurret.Constructor(Vector3(3209.07f, 4579.045f, 75.02739f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(666, 5006) - LocalObject(667, FacilityTurret.Constructor(Vector3(3247.497f, 4608.957f, 75.02739f), manned_turret), owning_building_guid = 34) + LocalObject( + 667, + FacilityTurret.Constructor(Vector3(3247.497f, 4608.957f, 75.02739f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(667, 5007) - LocalObject(971, Painbox.Constructor(Vector3(3228.454f, 4586.849f, 48.10489f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(972, Painbox.Constructor(Vector3(3240.923f, 4583.54f, 46.18539f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(973, Painbox.Constructor(Vector3(3241.113f, 4596.022f, 46.18539f), painbox_radius_continuous), owning_building_guid = 34) + LocalObject( + 971, + Painbox.Constructor(Vector3(3228.454f, 4586.849f, 48.10489f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 972, + Painbox.Constructor(Vector3(3240.923f, 4583.54f, 46.18539f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 973, + Painbox.Constructor(Vector3(3241.113f, 4596.022f, 46.18539f), painbox_radius_continuous), + owning_building_guid = 34 + ) } Building62() def Building62(): Unit = { // Name: N_Esamir_WG_tower Type: tower_c GUID: 35, MapID: 62 - LocalBuilding("N_Esamir_WG_tower", 35, 62, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(3670f, 3180f, 89.51079f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1018, CaptureTerminal.Constructor(Vector3(3686.587f, 3179.897f, 99.50979f), secondary_capture), owning_building_guid = 35) + LocalBuilding( + "N_Esamir_WG_tower", + 35, + 62, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(3670f, 3180f, 89.51079f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1018, + CaptureTerminal.Constructor(Vector3(3686.587f, 3179.897f, 99.50979f), secondary_capture), + owning_building_guid = 35 + ) LocalObject(326, Door.Constructor(Vector3(3682f, 3172f, 91.03179f)), owning_building_guid = 35) LocalObject(327, Door.Constructor(Vector3(3682f, 3172f, 111.0308f)), owning_building_guid = 35) LocalObject(328, Door.Constructor(Vector3(3682f, 3188f, 91.03179f)), owning_building_guid = 35) LocalObject(329, Door.Constructor(Vector3(3682f, 3188f, 111.0308f)), owning_building_guid = 35) LocalObject(1031, Door.Constructor(Vector3(3681.146f, 3168.794f, 80.84679f)), owning_building_guid = 35) LocalObject(1032, Door.Constructor(Vector3(3681.146f, 3185.204f, 80.84679f)), owning_building_guid = 35) - LocalObject(552, IFFLock.Constructor(Vector3(3679.957f, 3188.811f, 90.97179f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 328) - LocalObject(553, IFFLock.Constructor(Vector3(3679.957f, 3188.811f, 110.9718f), Vector3(0, 0, 0)), owning_building_guid = 35, door_guid = 329) - LocalObject(554, IFFLock.Constructor(Vector3(3684.047f, 3171.189f, 90.97179f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 326) - LocalObject(555, IFFLock.Constructor(Vector3(3684.047f, 3171.189f, 110.9718f), Vector3(0, 0, 180)), owning_building_guid = 35, door_guid = 327) + LocalObject( + 552, + IFFLock.Constructor(Vector3(3679.957f, 3188.811f, 90.97179f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 328 + ) + LocalObject( + 553, + IFFLock.Constructor(Vector3(3679.957f, 3188.811f, 110.9718f), Vector3(0, 0, 0)), + owning_building_guid = 35, + door_guid = 329 + ) + LocalObject( + 554, + IFFLock.Constructor(Vector3(3684.047f, 3171.189f, 90.97179f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 326 + ) + LocalObject( + 555, + IFFLock.Constructor(Vector3(3684.047f, 3171.189f, 110.9718f), Vector3(0, 0, 180)), + owning_building_guid = 35, + door_guid = 327 + ) LocalObject(608, Locker.Constructor(Vector3(3685.716f, 3164.963f, 79.50479f)), owning_building_guid = 35) LocalObject(609, Locker.Constructor(Vector3(3685.751f, 3186.835f, 79.50479f)), owning_building_guid = 35) LocalObject(610, Locker.Constructor(Vector3(3687.053f, 3164.963f, 79.50479f)), owning_building_guid = 35) @@ -622,39 +1976,126 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(613, Locker.Constructor(Vector3(3689.741f, 3186.835f, 79.50479f)), owning_building_guid = 35) LocalObject(614, Locker.Constructor(Vector3(3691.143f, 3164.963f, 79.50479f)), owning_building_guid = 35) LocalObject(615, Locker.Constructor(Vector3(3691.143f, 3186.835f, 79.50479f)), owning_building_guid = 35) - LocalObject(856, Terminal.Constructor(Vector3(3691.445f, 3170.129f, 80.84279f), order_terminal), owning_building_guid = 35) - LocalObject(857, Terminal.Constructor(Vector3(3691.445f, 3175.853f, 80.84279f), order_terminal), owning_building_guid = 35) - LocalObject(858, Terminal.Constructor(Vector3(3691.445f, 3181.234f, 80.84279f), order_terminal), owning_building_guid = 35) - LocalObject(1001, SpawnTube.Constructor(Vector3(3680.706f, 3167.742f, 78.99279f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 35) - LocalObject(1002, SpawnTube.Constructor(Vector3(3680.706f, 3184.152f, 78.99279f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 35) - LocalObject(947, ProximityTerminal.Constructor(Vector3(3668.907f, 3174.725f, 117.0808f), pad_landing_tower_frame), owning_building_guid = 35) - LocalObject(948, Terminal.Constructor(Vector3(3668.907f, 3174.725f, 117.0808f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(950, ProximityTerminal.Constructor(Vector3(3668.907f, 3185.17f, 117.0808f), pad_landing_tower_frame), owning_building_guid = 35) - LocalObject(951, Terminal.Constructor(Vector3(3668.907f, 3185.17f, 117.0808f), air_rearm_terminal), owning_building_guid = 35) - LocalObject(668, FacilityTurret.Constructor(Vector3(3655.07f, 3165.045f, 108.4528f), manned_turret), owning_building_guid = 35) + LocalObject( + 856, + Terminal.Constructor(Vector3(3691.445f, 3170.129f, 80.84279f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(3691.445f, 3175.853f, 80.84279f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(3691.445f, 3181.234f, 80.84279f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 1001, + SpawnTube.Constructor(Vector3(3680.706f, 3167.742f, 78.99279f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 35 + ) + LocalObject( + 1002, + SpawnTube.Constructor(Vector3(3680.706f, 3184.152f, 78.99279f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 35 + ) + LocalObject( + 947, + ProximityTerminal.Constructor(Vector3(3668.907f, 3174.725f, 117.0808f), pad_landing_tower_frame), + owning_building_guid = 35 + ) + LocalObject( + 948, + Terminal.Constructor(Vector3(3668.907f, 3174.725f, 117.0808f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 950, + ProximityTerminal.Constructor(Vector3(3668.907f, 3185.17f, 117.0808f), pad_landing_tower_frame), + owning_building_guid = 35 + ) + LocalObject( + 951, + Terminal.Constructor(Vector3(3668.907f, 3185.17f, 117.0808f), air_rearm_terminal), + owning_building_guid = 35 + ) + LocalObject( + 668, + FacilityTurret.Constructor(Vector3(3655.07f, 3165.045f, 108.4528f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(668, 5008) - LocalObject(669, FacilityTurret.Constructor(Vector3(3693.497f, 3194.957f, 108.4528f), manned_turret), owning_building_guid = 35) + LocalObject( + 669, + FacilityTurret.Constructor(Vector3(3693.497f, 3194.957f, 108.4528f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(669, 5009) - LocalObject(974, Painbox.Constructor(Vector3(3674.454f, 3172.849f, 81.53029f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(975, Painbox.Constructor(Vector3(3686.923f, 3169.54f, 79.61079f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(976, Painbox.Constructor(Vector3(3687.113f, 3182.022f, 79.61079f), painbox_radius_continuous), owning_building_guid = 35) + LocalObject( + 974, + Painbox.Constructor(Vector3(3674.454f, 3172.849f, 81.53029f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 975, + Painbox.Constructor(Vector3(3686.923f, 3169.54f, 79.61079f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 976, + Painbox.Constructor(Vector3(3687.113f, 3182.022f, 79.61079f), painbox_radius_continuous), + owning_building_guid = 35 + ) } Building61() def Building61(): Unit = { // Name: Continent_Central_tower Type: tower_c GUID: 36, MapID: 61 - LocalBuilding("Continent_Central_tower", 36, 61, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(4410f, 3728f, 83.92174f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1021, CaptureTerminal.Constructor(Vector3(4426.587f, 3727.897f, 93.92074f), secondary_capture), owning_building_guid = 36) + LocalBuilding( + "Continent_Central_tower", + 36, + 61, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(4410f, 3728f, 83.92174f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1021, + CaptureTerminal.Constructor(Vector3(4426.587f, 3727.897f, 93.92074f), secondary_capture), + owning_building_guid = 36 + ) LocalObject(340, Door.Constructor(Vector3(4422f, 3720f, 85.44274f)), owning_building_guid = 36) LocalObject(341, Door.Constructor(Vector3(4422f, 3720f, 105.4417f)), owning_building_guid = 36) LocalObject(342, Door.Constructor(Vector3(4422f, 3736f, 85.44274f)), owning_building_guid = 36) LocalObject(343, Door.Constructor(Vector3(4422f, 3736f, 105.4417f)), owning_building_guid = 36) LocalObject(1037, Door.Constructor(Vector3(4421.146f, 3716.794f, 75.25774f)), owning_building_guid = 36) LocalObject(1038, Door.Constructor(Vector3(4421.146f, 3733.204f, 75.25774f)), owning_building_guid = 36) - LocalObject(566, IFFLock.Constructor(Vector3(4419.957f, 3736.811f, 85.38274f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 342) - LocalObject(567, IFFLock.Constructor(Vector3(4419.957f, 3736.811f, 105.3827f), Vector3(0, 0, 0)), owning_building_guid = 36, door_guid = 343) - LocalObject(568, IFFLock.Constructor(Vector3(4424.047f, 3719.189f, 85.38274f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 340) - LocalObject(569, IFFLock.Constructor(Vector3(4424.047f, 3719.189f, 105.3827f), Vector3(0, 0, 180)), owning_building_guid = 36, door_guid = 341) + LocalObject( + 566, + IFFLock.Constructor(Vector3(4419.957f, 3736.811f, 85.38274f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 342 + ) + LocalObject( + 567, + IFFLock.Constructor(Vector3(4419.957f, 3736.811f, 105.3827f), Vector3(0, 0, 0)), + owning_building_guid = 36, + door_guid = 343 + ) + LocalObject( + 568, + IFFLock.Constructor(Vector3(4424.047f, 3719.189f, 85.38274f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 340 + ) + LocalObject( + 569, + IFFLock.Constructor(Vector3(4424.047f, 3719.189f, 105.3827f), Vector3(0, 0, 180)), + owning_building_guid = 36, + door_guid = 341 + ) LocalObject(632, Locker.Constructor(Vector3(4425.716f, 3712.963f, 73.91574f)), owning_building_guid = 36) LocalObject(633, Locker.Constructor(Vector3(4425.751f, 3734.835f, 73.91574f)), owning_building_guid = 36) LocalObject(634, Locker.Constructor(Vector3(4427.053f, 3712.963f, 73.91574f)), owning_building_guid = 36) @@ -663,39 +2104,126 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(637, Locker.Constructor(Vector3(4429.741f, 3734.835f, 73.91574f)), owning_building_guid = 36) LocalObject(638, Locker.Constructor(Vector3(4431.143f, 3712.963f, 73.91574f)), owning_building_guid = 36) LocalObject(639, Locker.Constructor(Vector3(4431.143f, 3734.835f, 73.91574f)), owning_building_guid = 36) - LocalObject(883, Terminal.Constructor(Vector3(4431.445f, 3718.129f, 75.25374f), order_terminal), owning_building_guid = 36) - LocalObject(884, Terminal.Constructor(Vector3(4431.445f, 3723.853f, 75.25374f), order_terminal), owning_building_guid = 36) - LocalObject(885, Terminal.Constructor(Vector3(4431.445f, 3729.234f, 75.25374f), order_terminal), owning_building_guid = 36) - LocalObject(1007, SpawnTube.Constructor(Vector3(4420.706f, 3715.742f, 73.40374f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(1008, SpawnTube.Constructor(Vector3(4420.706f, 3732.152f, 73.40374f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 36) - LocalObject(953, ProximityTerminal.Constructor(Vector3(4408.907f, 3722.725f, 111.4917f), pad_landing_tower_frame), owning_building_guid = 36) - LocalObject(954, Terminal.Constructor(Vector3(4408.907f, 3722.725f, 111.4917f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(956, ProximityTerminal.Constructor(Vector3(4408.907f, 3733.17f, 111.4917f), pad_landing_tower_frame), owning_building_guid = 36) - LocalObject(957, Terminal.Constructor(Vector3(4408.907f, 3733.17f, 111.4917f), air_rearm_terminal), owning_building_guid = 36) - LocalObject(672, FacilityTurret.Constructor(Vector3(4395.07f, 3713.045f, 102.8637f), manned_turret), owning_building_guid = 36) + LocalObject( + 883, + Terminal.Constructor(Vector3(4431.445f, 3718.129f, 75.25374f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 884, + Terminal.Constructor(Vector3(4431.445f, 3723.853f, 75.25374f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 885, + Terminal.Constructor(Vector3(4431.445f, 3729.234f, 75.25374f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 1007, + SpawnTube.Constructor(Vector3(4420.706f, 3715.742f, 73.40374f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 1008, + SpawnTube.Constructor(Vector3(4420.706f, 3732.152f, 73.40374f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 36 + ) + LocalObject( + 953, + ProximityTerminal.Constructor(Vector3(4408.907f, 3722.725f, 111.4917f), pad_landing_tower_frame), + owning_building_guid = 36 + ) + LocalObject( + 954, + Terminal.Constructor(Vector3(4408.907f, 3722.725f, 111.4917f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 956, + ProximityTerminal.Constructor(Vector3(4408.907f, 3733.17f, 111.4917f), pad_landing_tower_frame), + owning_building_guid = 36 + ) + LocalObject( + 957, + Terminal.Constructor(Vector3(4408.907f, 3733.17f, 111.4917f), air_rearm_terminal), + owning_building_guid = 36 + ) + LocalObject( + 672, + FacilityTurret.Constructor(Vector3(4395.07f, 3713.045f, 102.8637f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(672, 5010) - LocalObject(673, FacilityTurret.Constructor(Vector3(4433.497f, 3742.957f, 102.8637f), manned_turret), owning_building_guid = 36) + LocalObject( + 673, + FacilityTurret.Constructor(Vector3(4433.497f, 3742.957f, 102.8637f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(673, 5011) - LocalObject(983, Painbox.Constructor(Vector3(4414.454f, 3720.849f, 75.94124f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(984, Painbox.Constructor(Vector3(4426.923f, 3717.54f, 74.02174f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(985, Painbox.Constructor(Vector3(4427.113f, 3730.022f, 74.02174f), painbox_radius_continuous), owning_building_guid = 36) + LocalObject( + 983, + Painbox.Constructor(Vector3(4414.454f, 3720.849f, 75.94124f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 984, + Painbox.Constructor(Vector3(4426.923f, 3717.54f, 74.02174f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 985, + Painbox.Constructor(Vector3(4427.113f, 3730.022f, 74.02174f), painbox_radius_continuous), + owning_building_guid = 36 + ) } Building65() def Building65(): Unit = { // Name: SW_Hossin_WG_tower Type: tower_c GUID: 37, MapID: 65 - LocalBuilding("SW_Hossin_WG_tower", 37, 65, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(5160f, 4266f, 93.25694f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(1023, CaptureTerminal.Constructor(Vector3(5176.587f, 4265.897f, 103.2559f), secondary_capture), owning_building_guid = 37) + LocalBuilding( + "SW_Hossin_WG_tower", + 37, + 65, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(5160f, 4266f, 93.25694f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 1023, + CaptureTerminal.Constructor(Vector3(5176.587f, 4265.897f, 103.2559f), secondary_capture), + owning_building_guid = 37 + ) LocalObject(350, Door.Constructor(Vector3(5172f, 4258f, 94.77794f)), owning_building_guid = 37) LocalObject(351, Door.Constructor(Vector3(5172f, 4258f, 114.7769f)), owning_building_guid = 37) LocalObject(352, Door.Constructor(Vector3(5172f, 4274f, 94.77794f)), owning_building_guid = 37) LocalObject(353, Door.Constructor(Vector3(5172f, 4274f, 114.7769f)), owning_building_guid = 37) LocalObject(1041, Door.Constructor(Vector3(5171.146f, 4254.794f, 84.59293f)), owning_building_guid = 37) LocalObject(1042, Door.Constructor(Vector3(5171.146f, 4271.204f, 84.59293f)), owning_building_guid = 37) - LocalObject(576, IFFLock.Constructor(Vector3(5169.957f, 4274.811f, 94.71793f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 352) - LocalObject(577, IFFLock.Constructor(Vector3(5169.957f, 4274.811f, 114.7179f), Vector3(0, 0, 0)), owning_building_guid = 37, door_guid = 353) - LocalObject(578, IFFLock.Constructor(Vector3(5174.047f, 4257.189f, 94.71793f), Vector3(0, 0, 180)), owning_building_guid = 37, door_guid = 350) - LocalObject(579, IFFLock.Constructor(Vector3(5174.047f, 4257.189f, 114.7179f), Vector3(0, 0, 180)), owning_building_guid = 37, door_guid = 351) + LocalObject( + 576, + IFFLock.Constructor(Vector3(5169.957f, 4274.811f, 94.71793f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 352 + ) + LocalObject( + 577, + IFFLock.Constructor(Vector3(5169.957f, 4274.811f, 114.7179f), Vector3(0, 0, 0)), + owning_building_guid = 37, + door_guid = 353 + ) + LocalObject( + 578, + IFFLock.Constructor(Vector3(5174.047f, 4257.189f, 94.71793f), Vector3(0, 0, 180)), + owning_building_guid = 37, + door_guid = 350 + ) + LocalObject( + 579, + IFFLock.Constructor(Vector3(5174.047f, 4257.189f, 114.7179f), Vector3(0, 0, 180)), + owning_building_guid = 37, + door_guid = 351 + ) LocalObject(648, Locker.Constructor(Vector3(5175.716f, 4250.963f, 83.25094f)), owning_building_guid = 37) LocalObject(649, Locker.Constructor(Vector3(5175.751f, 4272.835f, 83.25094f)), owning_building_guid = 37) LocalObject(650, Locker.Constructor(Vector3(5177.053f, 4250.963f, 83.25094f)), owning_building_guid = 37) @@ -704,28 +2232,96 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(653, Locker.Constructor(Vector3(5179.741f, 4272.835f, 83.25094f)), owning_building_guid = 37) LocalObject(654, Locker.Constructor(Vector3(5181.143f, 4250.963f, 83.25094f)), owning_building_guid = 37) LocalObject(655, Locker.Constructor(Vector3(5181.143f, 4272.835f, 83.25094f)), owning_building_guid = 37) - LocalObject(889, Terminal.Constructor(Vector3(5181.445f, 4256.129f, 84.58894f), order_terminal), owning_building_guid = 37) - LocalObject(890, Terminal.Constructor(Vector3(5181.445f, 4261.853f, 84.58894f), order_terminal), owning_building_guid = 37) - LocalObject(891, Terminal.Constructor(Vector3(5181.445f, 4267.234f, 84.58894f), order_terminal), owning_building_guid = 37) - LocalObject(1011, SpawnTube.Constructor(Vector3(5170.706f, 4253.742f, 82.73894f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(1012, SpawnTube.Constructor(Vector3(5170.706f, 4270.152f, 82.73894f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 37) - LocalObject(959, ProximityTerminal.Constructor(Vector3(5158.907f, 4260.725f, 120.8269f), pad_landing_tower_frame), owning_building_guid = 37) - LocalObject(960, Terminal.Constructor(Vector3(5158.907f, 4260.725f, 120.8269f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(962, ProximityTerminal.Constructor(Vector3(5158.907f, 4271.17f, 120.8269f), pad_landing_tower_frame), owning_building_guid = 37) - LocalObject(963, Terminal.Constructor(Vector3(5158.907f, 4271.17f, 120.8269f), air_rearm_terminal), owning_building_guid = 37) - LocalObject(674, FacilityTurret.Constructor(Vector3(5145.07f, 4251.045f, 112.1989f), manned_turret), owning_building_guid = 37) + LocalObject( + 889, + Terminal.Constructor(Vector3(5181.445f, 4256.129f, 84.58894f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 890, + Terminal.Constructor(Vector3(5181.445f, 4261.853f, 84.58894f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 891, + Terminal.Constructor(Vector3(5181.445f, 4267.234f, 84.58894f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 1011, + SpawnTube.Constructor(Vector3(5170.706f, 4253.742f, 82.73894f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 1012, + SpawnTube.Constructor(Vector3(5170.706f, 4270.152f, 82.73894f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 37 + ) + LocalObject( + 959, + ProximityTerminal.Constructor(Vector3(5158.907f, 4260.725f, 120.8269f), pad_landing_tower_frame), + owning_building_guid = 37 + ) + LocalObject( + 960, + Terminal.Constructor(Vector3(5158.907f, 4260.725f, 120.8269f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 962, + ProximityTerminal.Constructor(Vector3(5158.907f, 4271.17f, 120.8269f), pad_landing_tower_frame), + owning_building_guid = 37 + ) + LocalObject( + 963, + Terminal.Constructor(Vector3(5158.907f, 4271.17f, 120.8269f), air_rearm_terminal), + owning_building_guid = 37 + ) + LocalObject( + 674, + FacilityTurret.Constructor(Vector3(5145.07f, 4251.045f, 112.1989f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(674, 5012) - LocalObject(675, FacilityTurret.Constructor(Vector3(5183.497f, 4280.957f, 112.1989f), manned_turret), owning_building_guid = 37) + LocalObject( + 675, + FacilityTurret.Constructor(Vector3(5183.497f, 4280.957f, 112.1989f), manned_turret), + owning_building_guid = 37 + ) TurretToWeapon(675, 5013) - LocalObject(989, Painbox.Constructor(Vector3(5164.454f, 4258.849f, 85.27644f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(990, Painbox.Constructor(Vector3(5176.923f, 4255.54f, 83.35693f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(991, Painbox.Constructor(Vector3(5177.113f, 4268.022f, 83.35693f), painbox_radius_continuous), owning_building_guid = 37) + LocalObject( + 989, + Painbox.Constructor(Vector3(5164.454f, 4258.849f, 85.27644f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 990, + Painbox.Constructor(Vector3(5176.923f, 4255.54f, 83.35693f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 991, + Painbox.Constructor(Vector3(5177.113f, 4268.022f, 83.35693f), painbox_radius_continuous), + owning_building_guid = 37 + ) } Building33() def Building33(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 38, MapID: 33 - LocalBuilding("VT_building_vs", 38, 33, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2848f, 4948f, 56.08539f), Vector3(0f, 0f, 180f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 38, + 33, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2848f, 4948f, 56.08539f), + Vector3(0f, 0f, 180f), + VT_building_vs + ) + ) + ) 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) LocalObject(236, Door.Constructor(Vector3(2806.672f, 4906.712f, 58.16139f)), owning_building_guid = 38) @@ -740,24 +2336,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(409, Door.Constructor(Vector3(2833.84f, 4911.231f, 59.26039f)), owning_building_guid = 38) LocalObject(410, Door.Constructor(Vector3(2848.005f, 4919.768f, 59.26039f)), owning_building_guid = 38) LocalObject(411, Door.Constructor(Vector3(2862.143f, 4911.248f, 59.26039f)), owning_building_guid = 38) - LocalObject(792, Terminal.Constructor(Vector3(2800.335f, 4904.168f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(793, Terminal.Constructor(Vector3(2802.243f, 4902.259f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(794, Terminal.Constructor(Vector3(2804.102f, 4900.4f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(795, Terminal.Constructor(Vector3(2813.812f, 4917.612f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(796, Terminal.Constructor(Vector3(2815.671f, 4915.753f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(797, Terminal.Constructor(Vector3(2817.58f, 4913.845f, 57.44539f), order_terminal), owning_building_guid = 38) - LocalObject(720, SpawnTube.Constructor(Vector3(2802.552f, 4912.067f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 38) - LocalObject(721, SpawnTube.Constructor(Vector3(2805.914f, 4915.429f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 38) - LocalObject(722, SpawnTube.Constructor(Vector3(2807.296f, 4907.323f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 38) - LocalObject(723, SpawnTube.Constructor(Vector3(2810.658f, 4910.686f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 38) - LocalObject(724, SpawnTube.Constructor(Vector3(2812.039f, 4902.58f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 38) - LocalObject(725, SpawnTube.Constructor(Vector3(2815.401f, 4905.942f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 38) + LocalObject( + 792, + Terminal.Constructor(Vector3(2800.335f, 4904.168f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 793, + Terminal.Constructor(Vector3(2802.243f, 4902.259f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 794, + Terminal.Constructor(Vector3(2804.102f, 4900.4f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 795, + Terminal.Constructor(Vector3(2813.812f, 4917.612f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 796, + Terminal.Constructor(Vector3(2815.671f, 4915.753f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 797, + Terminal.Constructor(Vector3(2817.58f, 4913.845f, 57.44539f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 720, + SpawnTube.Constructor(Vector3(2802.552f, 4912.067f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 38 + ) + LocalObject( + 721, + SpawnTube.Constructor(Vector3(2805.914f, 4915.429f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 38 + ) + LocalObject( + 722, + SpawnTube.Constructor(Vector3(2807.296f, 4907.323f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 38 + ) + LocalObject( + 723, + SpawnTube.Constructor(Vector3(2810.658f, 4910.686f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 38 + ) + LocalObject( + 724, + SpawnTube.Constructor(Vector3(2812.039f, 4902.58f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 38 + ) + LocalObject( + 725, + SpawnTube.Constructor(Vector3(2815.401f, 4905.942f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 38 + ) } Building35() def Building35(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 39, MapID: 35 - LocalBuilding("VT_building_vs", 39, 35, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3122f, 4690f, 56.08539f), Vector3(0f, 0f, 90f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 39, + 35, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3122f, 4690f, 56.08539f), + Vector3(0f, 0f, 90f), + VT_building_vs + ) + ) + ) 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) LocalObject(242, Door.Constructor(Vector3(3080.712f, 4731.328f, 58.16139f)), owning_building_guid = 39) @@ -772,24 +2428,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(415, Door.Constructor(Vector3(3107.857f, 4726.752f, 59.26039f)), owning_building_guid = 39) LocalObject(417, Door.Constructor(Vector3(3121.995f, 4718.232f, 59.26039f)), owning_building_guid = 39) LocalObject(420, Door.Constructor(Vector3(3136.16f, 4726.769f, 59.26039f)), owning_building_guid = 39) - LocalObject(818, Terminal.Constructor(Vector3(3074.4f, 4733.898f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(819, Terminal.Constructor(Vector3(3076.259f, 4735.757f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(820, Terminal.Constructor(Vector3(3078.168f, 4737.665f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(821, Terminal.Constructor(Vector3(3087.845f, 4720.42f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(822, Terminal.Constructor(Vector3(3089.753f, 4722.329f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(823, Terminal.Constructor(Vector3(3091.612f, 4724.188f, 57.44539f), order_terminal), owning_building_guid = 39) - LocalObject(726, SpawnTube.Constructor(Vector3(3076.58f, 4725.961f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 39) - LocalObject(727, SpawnTube.Constructor(Vector3(3079.942f, 4722.599f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 39) - LocalObject(728, SpawnTube.Constructor(Vector3(3081.323f, 4730.704f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 39) - LocalObject(729, SpawnTube.Constructor(Vector3(3084.686f, 4727.342f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 39) - LocalObject(730, SpawnTube.Constructor(Vector3(3086.067f, 4735.448f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), owning_building_guid = 39) - LocalObject(731, SpawnTube.Constructor(Vector3(3089.429f, 4732.086f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), owning_building_guid = 39) + LocalObject( + 818, + Terminal.Constructor(Vector3(3074.4f, 4733.898f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 819, + Terminal.Constructor(Vector3(3076.259f, 4735.757f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 820, + Terminal.Constructor(Vector3(3078.168f, 4737.665f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 821, + Terminal.Constructor(Vector3(3087.845f, 4720.42f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 822, + Terminal.Constructor(Vector3(3089.753f, 4722.329f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 823, + Terminal.Constructor(Vector3(3091.612f, 4724.188f, 57.44539f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 726, + SpawnTube.Constructor(Vector3(3076.58f, 4725.961f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 39 + ) + LocalObject( + 727, + SpawnTube.Constructor(Vector3(3079.942f, 4722.599f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 39 + ) + LocalObject( + 728, + SpawnTube.Constructor(Vector3(3081.323f, 4730.704f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 39 + ) + LocalObject( + 729, + SpawnTube.Constructor(Vector3(3084.686f, 4727.342f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 39 + ) + LocalObject( + 730, + SpawnTube.Constructor(Vector3(3086.067f, 4735.448f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 315)), + owning_building_guid = 39 + ) + LocalObject( + 731, + SpawnTube.Constructor(Vector3(3089.429f, 4732.086f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 135)), + owning_building_guid = 39 + ) } Building34() def Building34(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 40, MapID: 34 - LocalBuilding("VT_building_vs", 40, 34, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3144f, 4930f, 56.08539f), Vector3(0f, 0f, 225f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 40, + 34, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3144f, 4930f, 56.08539f), + Vector3(0f, 0f, 225f), + VT_building_vs + ) + ) + ) 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) LocalObject(248, Door.Constructor(Vector3(3143.972f, 4871.582f, 58.16139f)), owning_building_guid = 40) @@ -804,24 +2520,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(421, Door.Constructor(Vector3(3159.987f, 4893.988f, 59.26039f)), owning_building_guid = 40) LocalObject(422, Door.Constructor(Vector3(3163.967f, 4910.041f, 59.26039f)), owning_building_guid = 40) LocalObject(423, Door.Constructor(Vector3(3179.988f, 4914.013f, 59.26039f)), owning_building_guid = 40) - LocalObject(824, Terminal.Constructor(Vector3(3141.29f, 4865.302f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(825, Terminal.Constructor(Vector3(3141.313f, 4884.338f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(826, Terminal.Constructor(Vector3(3143.989f, 4865.301f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(827, Terminal.Constructor(Vector3(3143.942f, 4884.338f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(828, Terminal.Constructor(Vector3(3146.618f, 4865.301f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(829, Terminal.Constructor(Vector3(3146.641f, 4884.338f, 57.44539f), order_terminal), owning_building_guid = 40) - LocalObject(732, SpawnTube.Constructor(Vector3(3137.272f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 40) - LocalObject(733, SpawnTube.Constructor(Vector3(3137.272f, 4877.209f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 40) - LocalObject(734, SpawnTube.Constructor(Vector3(3143.981f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 40) - LocalObject(735, SpawnTube.Constructor(Vector3(3143.98f, 4877.21f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 40) - LocalObject(736, SpawnTube.Constructor(Vector3(3150.688f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 40) - LocalObject(737, SpawnTube.Constructor(Vector3(3150.688f, 4877.209f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 40) + LocalObject( + 824, + Terminal.Constructor(Vector3(3141.29f, 4865.302f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 825, + Terminal.Constructor(Vector3(3141.313f, 4884.338f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 826, + Terminal.Constructor(Vector3(3143.989f, 4865.301f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 827, + Terminal.Constructor(Vector3(3143.942f, 4884.338f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 828, + Terminal.Constructor(Vector3(3146.618f, 4865.301f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 829, + Terminal.Constructor(Vector3(3146.641f, 4884.338f, 57.44539f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 732, + SpawnTube.Constructor(Vector3(3137.272f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 40 + ) + LocalObject( + 733, + SpawnTube.Constructor(Vector3(3137.272f, 4877.209f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 40 + ) + LocalObject( + 734, + SpawnTube.Constructor(Vector3(3143.981f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 40 + ) + LocalObject( + 735, + SpawnTube.Constructor(Vector3(3143.98f, 4877.21f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 40 + ) + LocalObject( + 736, + SpawnTube.Constructor(Vector3(3150.688f, 4872.455f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 40 + ) + LocalObject( + 737, + SpawnTube.Constructor(Vector3(3150.688f, 4877.209f, 58.11739f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 40 + ) } Building7() def Building7(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 41, MapID: 7 - LocalBuilding("VT_building_vs", 41, 7, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3592f, 2966f, 90.8536f), Vector3(0f, 0f, 224f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 41, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3592f, 2966f, 90.8536f), + Vector3(0f, 0f, 224f), + VT_building_vs + ) + ) + ) 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) LocalObject(254, Door.Constructor(Vector3(3590.952f, 2907.591f, 92.9296f)), owning_building_guid = 41) @@ -836,24 +2612,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(427, Door.Constructor(Vector3(3607.356f, 2929.714f, 94.0286f)), owning_building_guid = 41) LocalObject(428, Door.Constructor(Vector3(3611.615f, 2945.695f, 94.0286f)), owning_building_guid = 41) LocalObject(429, Door.Constructor(Vector3(3627.704f, 2949.387f, 94.0286f)), owning_building_guid = 41) - LocalObject(836, Terminal.Constructor(Vector3(3588.161f, 2901.359f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(837, Terminal.Constructor(Vector3(3588.517f, 2920.392f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(838, Terminal.Constructor(Vector3(3590.86f, 2901.311f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(839, Terminal.Constructor(Vector3(3591.145f, 2920.346f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(840, Terminal.Constructor(Vector3(3593.488f, 2901.265f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(841, Terminal.Constructor(Vector3(3593.844f, 2920.3f, 92.2136f), order_terminal), owning_building_guid = 41) - LocalObject(738, SpawnTube.Constructor(Vector3(3584.269f, 2908.581f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(739, SpawnTube.Constructor(Vector3(3584.352f, 2913.335f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) - LocalObject(740, SpawnTube.Constructor(Vector3(3590.977f, 2908.464f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(741, SpawnTube.Constructor(Vector3(3591.059f, 2913.219f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) - LocalObject(742, SpawnTube.Constructor(Vector3(3597.683f, 2908.347f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 41) - LocalObject(743, SpawnTube.Constructor(Vector3(3597.766f, 2913.101f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 41) + LocalObject( + 836, + Terminal.Constructor(Vector3(3588.161f, 2901.359f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 837, + Terminal.Constructor(Vector3(3588.517f, 2920.392f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 838, + Terminal.Constructor(Vector3(3590.86f, 2901.311f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 839, + Terminal.Constructor(Vector3(3591.145f, 2920.346f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 840, + Terminal.Constructor(Vector3(3593.488f, 2901.265f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 841, + Terminal.Constructor(Vector3(3593.844f, 2920.3f, 92.2136f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 738, + SpawnTube.Constructor(Vector3(3584.269f, 2908.581f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 739, + SpawnTube.Constructor(Vector3(3584.352f, 2913.335f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) + LocalObject( + 740, + SpawnTube.Constructor(Vector3(3590.977f, 2908.464f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 741, + SpawnTube.Constructor(Vector3(3591.059f, 2913.219f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) + LocalObject( + 742, + SpawnTube.Constructor(Vector3(3597.683f, 2908.347f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 41 + ) + LocalObject( + 743, + SpawnTube.Constructor(Vector3(3597.766f, 2913.101f, 92.8856f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 41 + ) } Building12() def Building12(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 42, MapID: 12 - LocalBuilding("VT_building_vs", 42, 12, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3690f, 2656f, 90.84919f), Vector3(0f, 0f, 44f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 42, + 12, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3690f, 2656f, 90.84919f), + Vector3(0f, 0f, 44f), + VT_building_vs + ) + ) + ) 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) LocalObject(260, Door.Constructor(Vector3(3690.919f, 2707.906f, 92.92519f)), owning_building_guid = 42) @@ -868,24 +2704,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(433, Door.Constructor(Vector3(3706.613f, 2691.704f, 94.02419f)), owning_building_guid = 42) LocalObject(434, Door.Constructor(Vector3(3710.305f, 2675.615f, 94.02419f)), owning_building_guid = 42) LocalObject(435, Door.Constructor(Vector3(3726.286f, 2671.356f, 94.02419f)), owning_building_guid = 42) - LocalObject(852, Terminal.Constructor(Vector3(3688.156f, 2701.7f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(853, Terminal.Constructor(Vector3(3688.512f, 2720.735f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(854, Terminal.Constructor(Vector3(3690.855f, 2701.654f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(855, Terminal.Constructor(Vector3(3691.14f, 2720.689f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(859, Terminal.Constructor(Vector3(3693.483f, 2701.608f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(860, Terminal.Constructor(Vector3(3693.839f, 2720.641f, 92.20919f), order_terminal), owning_building_guid = 42) - LocalObject(744, SpawnTube.Constructor(Vector3(3684.234f, 2708.899f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 42) - LocalObject(745, SpawnTube.Constructor(Vector3(3684.317f, 2713.653f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 42) - LocalObject(746, SpawnTube.Constructor(Vector3(3690.941f, 2708.781f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 42) - LocalObject(747, SpawnTube.Constructor(Vector3(3691.023f, 2713.536f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 42) - LocalObject(748, SpawnTube.Constructor(Vector3(3697.648f, 2708.665f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 42) - LocalObject(749, SpawnTube.Constructor(Vector3(3697.731f, 2713.419f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 42) + LocalObject( + 852, + Terminal.Constructor(Vector3(3688.156f, 2701.7f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(3688.512f, 2720.735f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(3690.855f, 2701.654f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(3691.14f, 2720.689f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(3693.483f, 2701.608f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(3693.839f, 2720.641f, 92.20919f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 744, + SpawnTube.Constructor(Vector3(3684.234f, 2708.899f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 42 + ) + LocalObject( + 745, + SpawnTube.Constructor(Vector3(3684.317f, 2713.653f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 42 + ) + LocalObject( + 746, + SpawnTube.Constructor(Vector3(3690.941f, 2708.781f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 42 + ) + LocalObject( + 747, + SpawnTube.Constructor(Vector3(3691.023f, 2713.536f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 42 + ) + LocalObject( + 748, + SpawnTube.Constructor(Vector3(3697.648f, 2708.665f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 42 + ) + LocalObject( + 749, + SpawnTube.Constructor(Vector3(3697.731f, 2713.419f, 92.88119f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 42 + ) } Building13() def Building13(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 43, MapID: 13 - LocalBuilding("VT_building_vs", 43, 13, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3788f, 2968f, 90.8505f), Vector3(0f, 0f, 224f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 43, + 13, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3788f, 2968f, 90.8505f), + Vector3(0f, 0f, 224f), + VT_building_vs + ) + ) + ) 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) LocalObject(266, Door.Constructor(Vector3(3786.952f, 2909.591f, 92.9265f)), owning_building_guid = 43) @@ -900,24 +2796,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(439, Door.Constructor(Vector3(3803.356f, 2931.714f, 94.02551f)), owning_building_guid = 43) LocalObject(440, Door.Constructor(Vector3(3807.615f, 2947.695f, 94.02551f)), owning_building_guid = 43) LocalObject(441, Door.Constructor(Vector3(3823.704f, 2951.387f, 94.02551f)), owning_building_guid = 43) - LocalObject(871, Terminal.Constructor(Vector3(3784.161f, 2903.359f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(872, Terminal.Constructor(Vector3(3784.517f, 2922.392f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(873, Terminal.Constructor(Vector3(3786.86f, 2903.311f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(874, Terminal.Constructor(Vector3(3787.145f, 2922.346f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(875, Terminal.Constructor(Vector3(3789.488f, 2903.265f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(876, Terminal.Constructor(Vector3(3789.844f, 2922.3f, 92.2105f), order_terminal), owning_building_guid = 43) - LocalObject(750, SpawnTube.Constructor(Vector3(3780.269f, 2910.581f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 43) - LocalObject(751, SpawnTube.Constructor(Vector3(3780.352f, 2915.335f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 43) - LocalObject(752, SpawnTube.Constructor(Vector3(3786.977f, 2910.464f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 43) - LocalObject(753, SpawnTube.Constructor(Vector3(3787.059f, 2915.219f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 43) - LocalObject(754, SpawnTube.Constructor(Vector3(3793.683f, 2910.347f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), owning_building_guid = 43) - LocalObject(755, SpawnTube.Constructor(Vector3(3793.766f, 2915.101f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), owning_building_guid = 43) + LocalObject( + 871, + Terminal.Constructor(Vector3(3784.161f, 2903.359f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 872, + Terminal.Constructor(Vector3(3784.517f, 2922.392f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 873, + Terminal.Constructor(Vector3(3786.86f, 2903.311f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 874, + Terminal.Constructor(Vector3(3787.145f, 2922.346f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 875, + Terminal.Constructor(Vector3(3789.488f, 2903.265f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 876, + Terminal.Constructor(Vector3(3789.844f, 2922.3f, 92.2105f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 750, + SpawnTube.Constructor(Vector3(3780.269f, 2910.581f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 43 + ) + LocalObject( + 751, + SpawnTube.Constructor(Vector3(3780.352f, 2915.335f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 43 + ) + LocalObject( + 752, + SpawnTube.Constructor(Vector3(3786.977f, 2910.464f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 43 + ) + LocalObject( + 753, + SpawnTube.Constructor(Vector3(3787.059f, 2915.219f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 43 + ) + LocalObject( + 754, + SpawnTube.Constructor(Vector3(3793.683f, 2910.347f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 181)), + owning_building_guid = 43 + ) + LocalObject( + 755, + SpawnTube.Constructor(Vector3(3793.766f, 2915.101f, 92.8825f), respawn_tube_sanctuary, Vector3(0, 0, 1)), + owning_building_guid = 43 + ) } Building50() def Building50(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 44, MapID: 50 - LocalBuilding("VT_building_vs", 44, 50, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5470f, 4094f, 103.2367f), Vector3(0f, 0f, 0f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 44, + 50, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5470f, 4094f, 103.2367f), + Vector3(0f, 0f, 0f), + VT_building_vs + ) + ) + ) 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) LocalObject(278, Door.Constructor(Vector3(5506.718f, 4130.7f, 105.3127f)), owning_building_guid = 44) @@ -932,24 +2888,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(448, Door.Constructor(Vector3(5498.232f, 4094.005f, 106.4117f)), owning_building_guid = 44) LocalObject(449, Door.Constructor(Vector3(5506.769f, 4079.84f, 106.4117f)), owning_building_guid = 44) LocalObject(450, Door.Constructor(Vector3(5506.752f, 4108.143f, 106.4117f)), owning_building_guid = 44) - LocalObject(898, Terminal.Constructor(Vector3(5500.42f, 4128.155f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(899, Terminal.Constructor(Vector3(5502.329f, 4126.247f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(900, Terminal.Constructor(Vector3(5504.188f, 4124.388f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(901, Terminal.Constructor(Vector3(5513.898f, 4141.6f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(902, Terminal.Constructor(Vector3(5515.757f, 4139.741f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(903, Terminal.Constructor(Vector3(5517.665f, 4137.832f, 104.5967f), order_terminal), owning_building_guid = 44) - LocalObject(762, SpawnTube.Constructor(Vector3(5502.599f, 4136.058f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 44) - LocalObject(763, SpawnTube.Constructor(Vector3(5505.961f, 4139.42f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 44) - LocalObject(764, SpawnTube.Constructor(Vector3(5507.342f, 4131.314f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 44) - LocalObject(765, SpawnTube.Constructor(Vector3(5510.704f, 4134.677f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 44) - LocalObject(766, SpawnTube.Constructor(Vector3(5512.086f, 4126.571f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 44) - LocalObject(767, SpawnTube.Constructor(Vector3(5515.448f, 4129.933f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 44) + LocalObject( + 898, + Terminal.Constructor(Vector3(5500.42f, 4128.155f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 899, + Terminal.Constructor(Vector3(5502.329f, 4126.247f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 900, + Terminal.Constructor(Vector3(5504.188f, 4124.388f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 901, + Terminal.Constructor(Vector3(5513.898f, 4141.6f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 902, + Terminal.Constructor(Vector3(5515.757f, 4139.741f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 903, + Terminal.Constructor(Vector3(5517.665f, 4137.832f, 104.5967f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 762, + SpawnTube.Constructor(Vector3(5502.599f, 4136.058f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 44 + ) + LocalObject( + 763, + SpawnTube.Constructor(Vector3(5505.961f, 4139.42f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 44 + ) + LocalObject( + 764, + SpawnTube.Constructor(Vector3(5507.342f, 4131.314f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 44 + ) + LocalObject( + 765, + SpawnTube.Constructor(Vector3(5510.704f, 4134.677f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 44 + ) + LocalObject( + 766, + SpawnTube.Constructor(Vector3(5512.086f, 4126.571f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 44 + ) + LocalObject( + 767, + SpawnTube.Constructor(Vector3(5515.448f, 4129.933f, 105.2687f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 44 + ) } Building49() def Building49(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 45, MapID: 49 - LocalBuilding("VT_building_vs", 45, 49, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5494f, 4394f, 103.232f), Vector3(0f, 0f, 225f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 45, + 49, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5494f, 4394f, 103.232f), + Vector3(0f, 0f, 225f), + VT_building_vs + ) + ) + ) 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) LocalObject(272, Door.Constructor(Vector3(5493.972f, 4335.582f, 105.308f)), owning_building_guid = 45) @@ -964,24 +2980,84 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(451, Door.Constructor(Vector3(5509.987f, 4357.988f, 106.407f)), owning_building_guid = 45) LocalObject(452, Door.Constructor(Vector3(5513.967f, 4374.041f, 106.407f)), owning_building_guid = 45) LocalObject(453, Door.Constructor(Vector3(5529.988f, 4378.013f, 106.407f)), owning_building_guid = 45) - LocalObject(892, Terminal.Constructor(Vector3(5491.29f, 4329.302f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(893, Terminal.Constructor(Vector3(5491.313f, 4348.338f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(894, Terminal.Constructor(Vector3(5493.989f, 4329.301f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(895, Terminal.Constructor(Vector3(5493.942f, 4348.338f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(896, Terminal.Constructor(Vector3(5496.618f, 4329.301f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(897, Terminal.Constructor(Vector3(5496.641f, 4348.338f, 104.592f), order_terminal), owning_building_guid = 45) - LocalObject(756, SpawnTube.Constructor(Vector3(5487.272f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 45) - LocalObject(757, SpawnTube.Constructor(Vector3(5487.272f, 4341.209f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(758, SpawnTube.Constructor(Vector3(5493.981f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 45) - LocalObject(759, SpawnTube.Constructor(Vector3(5493.98f, 4341.21f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 45) - LocalObject(760, SpawnTube.Constructor(Vector3(5500.688f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), owning_building_guid = 45) - LocalObject(761, SpawnTube.Constructor(Vector3(5500.688f, 4341.209f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), owning_building_guid = 45) + LocalObject( + 892, + Terminal.Constructor(Vector3(5491.29f, 4329.302f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 893, + Terminal.Constructor(Vector3(5491.313f, 4348.338f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 894, + Terminal.Constructor(Vector3(5493.989f, 4329.301f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 895, + Terminal.Constructor(Vector3(5493.942f, 4348.338f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 896, + Terminal.Constructor(Vector3(5496.618f, 4329.301f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 897, + Terminal.Constructor(Vector3(5496.641f, 4348.338f, 104.592f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 756, + SpawnTube.Constructor(Vector3(5487.272f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 45 + ) + LocalObject( + 757, + SpawnTube.Constructor(Vector3(5487.272f, 4341.209f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 758, + SpawnTube.Constructor(Vector3(5493.981f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 45 + ) + LocalObject( + 759, + SpawnTube.Constructor(Vector3(5493.98f, 4341.21f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) + LocalObject( + 760, + SpawnTube.Constructor(Vector3(5500.688f, 4336.455f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 180)), + owning_building_guid = 45 + ) + LocalObject( + 761, + SpawnTube.Constructor(Vector3(5500.688f, 4341.209f, 105.264f), respawn_tube_sanctuary, Vector3(0, 0, 0)), + owning_building_guid = 45 + ) } Building48() def Building48(): Unit = { // Name: VT_building_vs Type: VT_building_vs GUID: 46, MapID: 48 - LocalBuilding("VT_building_vs", 46, 48, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5796f, 4330f, 103.2358f), Vector3(0f, 0f, 180f), VT_building_vs))) + LocalBuilding( + "VT_building_vs", + 46, + 48, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5796f, 4330f, 103.2358f), + Vector3(0f, 0f, 180f), + VT_building_vs + ) + ) + ) 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) LocalObject(284, Door.Constructor(Vector3(5754.672f, 4288.712f, 105.3118f)), owning_building_guid = 46) @@ -996,369 +3072,1153 @@ object Map13 { // HOME3 (VANU SOVREIGNTY SANCTUARY) LocalObject(457, Door.Constructor(Vector3(5781.84f, 4293.231f, 106.4108f)), owning_building_guid = 46) LocalObject(458, Door.Constructor(Vector3(5796.005f, 4301.768f, 106.4108f)), owning_building_guid = 46) LocalObject(459, Door.Constructor(Vector3(5810.143f, 4293.248f, 106.4108f)), owning_building_guid = 46) - LocalObject(924, Terminal.Constructor(Vector3(5748.335f, 4286.168f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(925, Terminal.Constructor(Vector3(5750.243f, 4284.259f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(926, Terminal.Constructor(Vector3(5752.102f, 4282.4f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(927, Terminal.Constructor(Vector3(5761.812f, 4299.612f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(928, Terminal.Constructor(Vector3(5763.671f, 4297.753f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(929, Terminal.Constructor(Vector3(5765.58f, 4295.845f, 104.5958f), order_terminal), owning_building_guid = 46) - LocalObject(768, SpawnTube.Constructor(Vector3(5750.552f, 4294.067f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 46) - LocalObject(769, SpawnTube.Constructor(Vector3(5753.914f, 4297.429f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 46) - LocalObject(770, SpawnTube.Constructor(Vector3(5755.296f, 4289.323f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 46) - LocalObject(771, SpawnTube.Constructor(Vector3(5758.658f, 4292.686f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 46) - LocalObject(772, SpawnTube.Constructor(Vector3(5760.039f, 4284.58f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), owning_building_guid = 46) - LocalObject(773, SpawnTube.Constructor(Vector3(5763.401f, 4287.942f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), owning_building_guid = 46) + LocalObject( + 924, + Terminal.Constructor(Vector3(5748.335f, 4286.168f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 925, + Terminal.Constructor(Vector3(5750.243f, 4284.259f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 926, + Terminal.Constructor(Vector3(5752.102f, 4282.4f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 927, + Terminal.Constructor(Vector3(5761.812f, 4299.612f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 928, + Terminal.Constructor(Vector3(5763.671f, 4297.753f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 929, + Terminal.Constructor(Vector3(5765.58f, 4295.845f, 104.5958f), order_terminal), + owning_building_guid = 46 + ) + LocalObject( + 768, + SpawnTube.Constructor(Vector3(5750.552f, 4294.067f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 46 + ) + LocalObject( + 769, + SpawnTube.Constructor(Vector3(5753.914f, 4297.429f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 46 + ) + LocalObject( + 770, + SpawnTube.Constructor(Vector3(5755.296f, 4289.323f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 46 + ) + LocalObject( + 771, + SpawnTube.Constructor(Vector3(5758.658f, 4292.686f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 46 + ) + LocalObject( + 772, + SpawnTube.Constructor(Vector3(5760.039f, 4284.58f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 225)), + owning_building_guid = 46 + ) + LocalObject( + 773, + SpawnTube.Constructor(Vector3(5763.401f, 4287.942f, 105.2678f), respawn_tube_sanctuary, Vector3(0, 0, 45)), + owning_building_guid = 46 + ) } Building37() def Building37(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 47, MapID: 37 - LocalBuilding("vt_dropship", 47, 37, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2764f, 4842f, 56.08539f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(300, Terminal.Constructor(Vector3(2787.469f, 4841.71f, 58.95339f), dropship_vehicle_terminal), owning_building_guid = 47) - LocalObject(288, VehicleSpawnPad.Constructor(Vector3(2767.589f, 4841.958f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 47, terminal_guid = 300) + LocalBuilding( + "vt_dropship", + 47, + 37, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2764f, 4842f, 56.08539f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 300, + Terminal.Constructor(Vector3(2787.469f, 4841.71f, 58.95339f), dropship_vehicle_terminal), + owning_building_guid = 47 + ) + LocalObject( + 288, + VehicleSpawnPad.Constructor(Vector3(2767.589f, 4841.958f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 47, + terminal_guid = 300 + ) } Building24() def Building24(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 48, MapID: 24 - LocalBuilding("vt_dropship", 48, 24, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2928f, 5050f, 56.08539f), Vector3(0f, 0f, 89f), vt_dropship))) - LocalObject(301, Terminal.Constructor(Vector3(2927.71f, 5026.531f, 58.95339f), dropship_vehicle_terminal), owning_building_guid = 48) - LocalObject(289, VehicleSpawnPad.Constructor(Vector3(2927.957f, 5046.411f, 52.10039f), dropship_pad_doors, Vector3(0, 0, -89)), owning_building_guid = 48, terminal_guid = 301) + LocalBuilding( + "vt_dropship", + 48, + 24, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2928f, 5050f, 56.08539f), + Vector3(0f, 0f, 89f), + vt_dropship + ) + ) + ) + LocalObject( + 301, + Terminal.Constructor(Vector3(2927.71f, 5026.531f, 58.95339f), dropship_vehicle_terminal), + owning_building_guid = 48 + ) + LocalObject( + 289, + VehicleSpawnPad.Constructor(Vector3(2927.957f, 5046.411f, 52.10039f), dropship_pad_doors, Vector3(0, 0, -89)), + owning_building_guid = 48, + terminal_guid = 301 + ) } Building36() def Building36(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 49, MapID: 36 - LocalBuilding("vt_dropship", 49, 36, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3018f, 4618f, 56.08539f), Vector3(0f, 0f, 269f), vt_dropship))) - LocalObject(302, Terminal.Constructor(Vector3(3018.29f, 4641.469f, 58.95339f), dropship_vehicle_terminal), owning_building_guid = 49) - LocalObject(290, VehicleSpawnPad.Constructor(Vector3(3018.043f, 4621.589f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 91)), owning_building_guid = 49, terminal_guid = 302) + LocalBuilding( + "vt_dropship", + 49, + 36, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3018f, 4618f, 56.08539f), + Vector3(0f, 0f, 269f), + vt_dropship + ) + ) + ) + LocalObject( + 302, + Terminal.Constructor(Vector3(3018.29f, 4641.469f, 58.95339f), dropship_vehicle_terminal), + owning_building_guid = 49 + ) + LocalObject( + 290, + VehicleSpawnPad.Constructor(Vector3(3018.043f, 4621.589f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 91)), + owning_building_guid = 49, + terminal_guid = 302 + ) } Building23() def Building23(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 50, MapID: 23 - LocalBuilding("vt_dropship", 50, 23, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3212f, 4768f, 56.08539f), Vector3(0f, 0f, 359f), vt_dropship))) - LocalObject(303, Terminal.Constructor(Vector3(3188.531f, 4768.29f, 58.95339f), dropship_vehicle_terminal), owning_building_guid = 50) - LocalObject(291, VehicleSpawnPad.Constructor(Vector3(3208.411f, 4768.042f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 1)), owning_building_guid = 50, terminal_guid = 303) + LocalBuilding( + "vt_dropship", + 50, + 23, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3212f, 4768f, 56.08539f), + Vector3(0f, 0f, 359f), + vt_dropship + ) + ) + ) + LocalObject( + 303, + Terminal.Constructor(Vector3(3188.531f, 4768.29f, 58.95339f), dropship_vehicle_terminal), + owning_building_guid = 50 + ) + LocalObject( + 291, + VehicleSpawnPad.Constructor(Vector3(3208.411f, 4768.042f, 52.10039f), dropship_pad_doors, Vector3(0, 0, 1)), + owning_building_guid = 50, + terminal_guid = 303 + ) } Building6() def Building6(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 51, MapID: 6 - LocalBuilding("vt_dropship", 51, 6, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3506f, 2896f, 90.85538f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(304, Terminal.Constructor(Vector3(3529.469f, 2895.71f, 93.72339f), dropship_vehicle_terminal), owning_building_guid = 51) - LocalObject(292, VehicleSpawnPad.Constructor(Vector3(3509.589f, 2895.957f, 86.87038f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 51, terminal_guid = 304) + LocalBuilding( + "vt_dropship", + 51, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3506f, 2896f, 90.85538f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 304, + Terminal.Constructor(Vector3(3529.469f, 2895.71f, 93.72339f), dropship_vehicle_terminal), + owning_building_guid = 51 + ) + LocalObject( + 292, + VehicleSpawnPad.Constructor(Vector3(3509.589f, 2895.957f, 86.87038f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 51, + terminal_guid = 304 + ) } Building15() def Building15(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 52, MapID: 15 - LocalBuilding("vt_dropship", 52, 15, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3572f, 2652f, 90.85646f), Vector3(0f, 0f, 224f), vt_dropship))) - LocalObject(305, Terminal.Constructor(Vector3(3588.8f, 2668.39f, 93.72446f), dropship_vehicle_terminal), owning_building_guid = 52) - LocalObject(293, VehicleSpawnPad.Constructor(Vector3(3574.568f, 2654.508f, 86.87146f), dropship_pad_doors, Vector3(0, 0, 136)), owning_building_guid = 52, terminal_guid = 305) + LocalBuilding( + "vt_dropship", + 52, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3572f, 2652f, 90.85646f), + Vector3(0f, 0f, 224f), + vt_dropship + ) + ) + ) + LocalObject( + 305, + Terminal.Constructor(Vector3(3588.8f, 2668.39f, 93.72446f), dropship_vehicle_terminal), + owning_building_guid = 52 + ) + LocalObject( + 293, + VehicleSpawnPad.Constructor(Vector3(3574.568f, 2654.508f, 86.87146f), dropship_pad_doors, Vector3(0, 0, 136)), + owning_building_guid = 52, + terminal_guid = 305 + ) } Building14() def Building14(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 53, MapID: 14 - LocalBuilding("vt_dropship", 53, 14, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3808f, 2654f, 90.85372f), Vector3(0f, 0f, 314f), vt_dropship))) - LocalObject(306, Terminal.Constructor(Vector3(3791.61f, 2670.8f, 93.72173f), dropship_vehicle_terminal), owning_building_guid = 53) - LocalObject(294, VehicleSpawnPad.Constructor(Vector3(3805.492f, 2656.568f, 86.86872f), dropship_pad_doors, Vector3(0, 0, 46)), owning_building_guid = 53, terminal_guid = 306) + LocalBuilding( + "vt_dropship", + 53, + 14, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3808f, 2654f, 90.85372f), + Vector3(0f, 0f, 314f), + vt_dropship + ) + ) + ) + LocalObject( + 306, + Terminal.Constructor(Vector3(3791.61f, 2670.8f, 93.72173f), dropship_vehicle_terminal), + owning_building_guid = 53 + ) + LocalObject( + 294, + VehicleSpawnPad.Constructor(Vector3(3805.492f, 2656.568f, 86.86872f), dropship_pad_doors, Vector3(0, 0, 46)), + owning_building_guid = 53, + terminal_guid = 306 + ) } Building5() def Building5(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 54, MapID: 5 - LocalBuilding("vt_dropship", 54, 5, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3876f, 2896f, 90.85098f), Vector3(0f, 0f, 359f), vt_dropship))) - LocalObject(307, Terminal.Constructor(Vector3(3852.531f, 2896.29f, 93.71898f), dropship_vehicle_terminal), owning_building_guid = 54) - LocalObject(295, VehicleSpawnPad.Constructor(Vector3(3872.411f, 2896.043f, 86.86597f), dropship_pad_doors, Vector3(0, 0, 1)), owning_building_guid = 54, terminal_guid = 307) + LocalBuilding( + "vt_dropship", + 54, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3876f, 2896f, 90.85098f), + Vector3(0f, 0f, 359f), + vt_dropship + ) + ) + ) + LocalObject( + 307, + Terminal.Constructor(Vector3(3852.531f, 2896.29f, 93.71898f), dropship_vehicle_terminal), + owning_building_guid = 54 + ) + LocalObject( + 295, + VehicleSpawnPad.Constructor(Vector3(3872.411f, 2896.043f, 86.86597f), dropship_pad_doors, Vector3(0, 0, 1)), + owning_building_guid = 54, + terminal_guid = 307 + ) } Building52() def Building52(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 55, MapID: 52 - LocalBuilding("vt_dropship", 55, 52, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5394f, 4238f, 103.2297f), Vector3(0f, 0f, 179f), vt_dropship))) - LocalObject(308, Terminal.Constructor(Vector3(5417.469f, 4237.71f, 106.0977f), dropship_vehicle_terminal), owning_building_guid = 55) - LocalObject(296, VehicleSpawnPad.Constructor(Vector3(5397.589f, 4237.958f, 99.24469f), dropship_pad_doors, Vector3(0, 0, 181)), owning_building_guid = 55, terminal_guid = 308) + LocalBuilding( + "vt_dropship", + 55, + 52, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5394f, 4238f, 103.2297f), + Vector3(0f, 0f, 179f), + vt_dropship + ) + ) + ) + LocalObject( + 308, + Terminal.Constructor(Vector3(5417.469f, 4237.71f, 106.0977f), dropship_vehicle_terminal), + owning_building_guid = 55 + ) + LocalObject( + 296, + VehicleSpawnPad.Constructor(Vector3(5397.589f, 4237.958f, 99.24469f), dropship_pad_doors, Vector3(0, 0, 181)), + owning_building_guid = 55, + terminal_guid = 308 + ) } Building51() def Building51(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 56, MapID: 51 - LocalBuilding("vt_dropship", 56, 51, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5600f, 4034f, 103.2345f), Vector3(0f, 0f, 269f), vt_dropship))) - LocalObject(309, Terminal.Constructor(Vector3(5600.29f, 4057.469f, 106.1025f), dropship_vehicle_terminal), owning_building_guid = 56) - LocalObject(297, VehicleSpawnPad.Constructor(Vector3(5600.042f, 4037.589f, 99.24946f), dropship_pad_doors, Vector3(0, 0, 91)), owning_building_guid = 56, terminal_guid = 309) + LocalBuilding( + "vt_dropship", + 56, + 51, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5600f, 4034f, 103.2345f), + Vector3(0f, 0f, 269f), + vt_dropship + ) + ) + ) + LocalObject( + 309, + Terminal.Constructor(Vector3(5600.29f, 4057.469f, 106.1025f), dropship_vehicle_terminal), + owning_building_guid = 56 + ) + LocalObject( + 297, + VehicleSpawnPad.Constructor(Vector3(5600.042f, 4037.589f, 99.24946f), dropship_pad_doors, Vector3(0, 0, 91)), + owning_building_guid = 56, + terminal_guid = 309 + ) } Building42() def Building42(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 57, MapID: 42 - LocalBuilding("vt_dropship", 57, 42, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5622f, 4456f, 103.2351f), Vector3(0f, 0f, 89f), vt_dropship))) - LocalObject(310, Terminal.Constructor(Vector3(5621.71f, 4432.531f, 106.1031f), dropship_vehicle_terminal), owning_building_guid = 57) - LocalObject(298, VehicleSpawnPad.Constructor(Vector3(5621.958f, 4452.411f, 99.25006f), dropship_pad_doors, Vector3(0, 0, -89)), owning_building_guid = 57, terminal_guid = 310) + LocalBuilding( + "vt_dropship", + 57, + 42, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5622f, 4456f, 103.2351f), + Vector3(0f, 0f, 89f), + vt_dropship + ) + ) + ) + LocalObject( + 310, + Terminal.Constructor(Vector3(5621.71f, 4432.531f, 106.1031f), dropship_vehicle_terminal), + owning_building_guid = 57 + ) + LocalObject( + 298, + VehicleSpawnPad.Constructor(Vector3(5621.958f, 4452.411f, 99.25006f), dropship_pad_doors, Vector3(0, 0, -89)), + owning_building_guid = 57, + terminal_guid = 310 + ) } Building41() def Building41(): Unit = { // Name: vt_dropship Type: vt_dropship GUID: 58, MapID: 41 - LocalBuilding("vt_dropship", 58, 41, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5834f, 4218f, 103.2365f), Vector3(0f, 0f, 359f), vt_dropship))) - LocalObject(311, Terminal.Constructor(Vector3(5810.531f, 4218.29f, 106.1045f), dropship_vehicle_terminal), owning_building_guid = 58) - LocalObject(299, VehicleSpawnPad.Constructor(Vector3(5830.411f, 4218.042f, 99.25149f), dropship_pad_doors, Vector3(0, 0, 1)), owning_building_guid = 58, terminal_guid = 311) + LocalBuilding( + "vt_dropship", + 58, + 41, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5834f, 4218f, 103.2365f), + Vector3(0f, 0f, 359f), + vt_dropship + ) + ) + ) + LocalObject( + 311, + Terminal.Constructor(Vector3(5810.531f, 4218.29f, 106.1045f), dropship_vehicle_terminal), + owning_building_guid = 58 + ) + LocalObject( + 299, + VehicleSpawnPad.Constructor(Vector3(5830.411f, 4218.042f, 99.25149f), dropship_pad_doors, Vector3(0, 0, 1)), + owning_building_guid = 58, + terminal_guid = 311 + ) } Building30() def Building30(): Unit = { // Name: VS_NW_Tport_01 Type: vt_spawn GUID: 59, MapID: 30 - LocalBuilding("VS_NW_Tport_01", 59, 30, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2900f, 4758f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NW_Tport_01", + 59, + 30, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2900f, 4758f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building29() def Building29(): Unit = { // Name: VS_NW_Tport_02 Type: vt_spawn GUID: 60, MapID: 29 - LocalBuilding("VS_NW_Tport_02", 60, 29, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2940f, 4932f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NW_Tport_02", + 60, + 29, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(2940f, 4932f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building32() def Building32(): Unit = { // Name: VS_NW_Tport_03 Type: vt_spawn GUID: 61, MapID: 32 - LocalBuilding("VS_NW_Tport_03", 61, 32, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3060f, 4908f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NW_Tport_03", + 61, + 32, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3060f, 4908f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building31() def Building31(): Unit = { // Name: VS_NW_Tport_04 Type: vt_spawn GUID: 62, MapID: 31 - LocalBuilding("VS_NW_Tport_04", 62, 31, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3124f, 4776f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NW_Tport_04", + 62, + 31, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3124f, 4776f, 56.08539f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building19() def Building19(): Unit = { // Name: VS_S_Tport_03 Type: vt_spawn GUID: 63, MapID: 19 - LocalBuilding("VS_S_Tport_03", 63, 19, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3610f, 2732f, 90.85205f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_S_Tport_03", + 63, + 19, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3610f, 2732f, 90.85205f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building18() def Building18(): Unit = { // Name: VS_S_Tport_01 Type: vt_spawn GUID: 64, MapID: 18 - LocalBuilding("VS_S_Tport_01", 64, 18, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3652f, 2908f, 90.8536f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_S_Tport_01", + 64, + 18, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3652f, 2908f, 90.8536f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building21() def Building21(): Unit = { // Name: VS_S_Tport_02 Type: vt_spawn GUID: 65, MapID: 21 - LocalBuilding("VS_S_Tport_02", 65, 21, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3730f, 2908f, 90.8536f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_S_Tport_02", + 65, + 21, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3730f, 2908f, 90.8536f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building20() def Building20(): Unit = { // Name: VS_S_Tport_04 Type: vt_spawn GUID: 66, MapID: 20 - LocalBuilding("VS_S_Tport_04", 66, 20, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3766f, 2732f, 90.84919f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_S_Tport_04", + 66, + 20, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3766f, 2732f, 90.84919f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building45() def Building45(): Unit = { // Name: VS_NE_Tport_04 Type: vt_spawn GUID: 67, MapID: 45 - LocalBuilding("VS_NE_Tport_04", 67, 45, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5484f, 4208f, 103.2298f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NE_Tport_04", + 67, + 45, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5484f, 4208f, 103.2298f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building44() def Building44(): Unit = { // Name: VS_NE_Tport_01 Type: vt_spawn GUID: 68, MapID: 44 - LocalBuilding("VS_NE_Tport_01", 68, 44, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5552f, 4344f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NE_Tport_01", + 68, + 44, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5552f, 4344f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building46() def Building46(): Unit = { // Name: VS_NE_Tport_03 Type: vt_spawn GUID: 69, MapID: 46 - LocalBuilding("VS_NE_Tport_03", 69, 46, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5690f, 4164f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NE_Tport_03", + 69, + 46, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5690f, 4164f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building47() def Building47(): Unit = { // Name: VS_NE_Tport_02 Type: vt_spawn GUID: 70, MapID: 47 - LocalBuilding("VS_NE_Tport_02", 70, 47, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5692f, 4312f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn))) + LocalBuilding( + "VS_NE_Tport_02", + 70, + 47, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5692f, 4312f, 103.2289f), Vector3(0f, 0f, 360f), vt_spawn) + ) + ) } Building26() def Building26(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 71, MapID: 26 - LocalBuilding("vt_vehicle", 71, 26, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2768f, 4768f, 56.08539f), Vector3(0f, 0f, 179f), vt_vehicle))) - LocalObject(1057, Terminal.Constructor(Vector3(2782.49f, 4767.755f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 71) - LocalObject(702, VehicleSpawnPad.Constructor(Vector3(2767.853f, 4767.976f, 54.61439f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 71, terminal_guid = 1057) + LocalBuilding( + "vt_vehicle", + 71, + 26, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2768f, 4768f, 56.08539f), + Vector3(0f, 0f, 179f), + vt_vehicle + ) + ) + ) + LocalObject( + 1057, + Terminal.Constructor(Vector3(2782.49f, 4767.755f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 71 + ) + LocalObject( + 702, + VehicleSpawnPad.Constructor(Vector3(2767.853f, 4767.976f, 54.61439f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 71, + terminal_guid = 1057 + ) } Building38() def Building38(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 72, MapID: 38 - LocalBuilding("vt_vehicle", 72, 38, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2816f, 4700f, 56.08539f), Vector3(0f, 0f, 225f), vt_vehicle))) - LocalObject(1058, Terminal.Constructor(Vector3(2826.242f, 4710.253f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 72) - LocalObject(703, VehicleSpawnPad.Constructor(Vector3(2815.915f, 4699.877f, 54.61439f), mb_pad_creation, Vector3(0, 0, 225)), owning_building_guid = 72, terminal_guid = 1058) + LocalBuilding( + "vt_vehicle", + 72, + 38, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2816f, 4700f, 56.08539f), + Vector3(0f, 0f, 225f), + vt_vehicle + ) + ) + ) + LocalObject( + 1058, + Terminal.Constructor(Vector3(2826.242f, 4710.253f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 72 + ) + LocalObject( + 703, + VehicleSpawnPad.Constructor(Vector3(2815.915f, 4699.877f, 54.61439f), mb_pad_creation, Vector3(0, 0, 225)), + owning_building_guid = 72, + terminal_guid = 1058 + ) } Building28() def Building28(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 73, MapID: 28 - LocalBuilding("vt_vehicle", 73, 28, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(2946f, 4622f, 56.08539f), Vector3(0f, 0f, 269f), vt_vehicle))) - LocalObject(1059, Terminal.Constructor(Vector3(2946.245f, 4636.49f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 73) - LocalObject(704, VehicleSpawnPad.Constructor(Vector3(2946.024f, 4621.853f, 54.61439f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 73, terminal_guid = 1059) + LocalBuilding( + "vt_vehicle", + 73, + 28, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(2946f, 4622f, 56.08539f), + Vector3(0f, 0f, 269f), + vt_vehicle + ) + ) + ) + LocalObject( + 1059, + Terminal.Constructor(Vector3(2946.245f, 4636.49f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 73 + ) + LocalObject( + 704, + VehicleSpawnPad.Constructor(Vector3(2946.024f, 4621.853f, 54.61439f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 73, + terminal_guid = 1059 + ) } Building25() def Building25(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 74, MapID: 25 - LocalBuilding("vt_vehicle", 74, 25, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3000f, 5048f, 56.08539f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1060, Terminal.Constructor(Vector3(2999.755f, 5033.51f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 74) - LocalObject(705, VehicleSpawnPad.Constructor(Vector3(2999.976f, 5048.147f, 54.61439f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 74, terminal_guid = 1060) + LocalBuilding( + "vt_vehicle", + 74, + 25, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3000f, 5048f, 56.08539f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1060, + Terminal.Constructor(Vector3(2999.755f, 5033.51f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 74 + ) + LocalObject( + 705, + VehicleSpawnPad.Constructor(Vector3(2999.976f, 5048.147f, 54.61439f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 74, + terminal_guid = 1060 + ) } Building39() def Building39(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 75, MapID: 39 - LocalBuilding("vt_vehicle", 75, 39, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3094f, 5010f, 56.08539f), Vector3(0f, 0f, 45f), vt_vehicle))) - LocalObject(1061, Terminal.Constructor(Vector3(3083.758f, 4999.747f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 75) - LocalObject(706, VehicleSpawnPad.Constructor(Vector3(3094.085f, 5010.123f, 54.61439f), mb_pad_creation, Vector3(0, 0, 45)), owning_building_guid = 75, terminal_guid = 1061) + LocalBuilding( + "vt_vehicle", + 75, + 39, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3094f, 5010f, 56.08539f), Vector3(0f, 0f, 45f), vt_vehicle) + ) + ) + LocalObject( + 1061, + Terminal.Constructor(Vector3(3083.758f, 4999.747f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 75 + ) + LocalObject( + 706, + VehicleSpawnPad.Constructor(Vector3(3094.085f, 5010.123f, 54.61439f), mb_pad_creation, Vector3(0, 0, 45)), + owning_building_guid = 75, + terminal_guid = 1061 + ) } Building27() def Building27(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 76, MapID: 27 - LocalBuilding("vt_vehicle", 76, 27, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3212f, 4842f, 56.08539f), Vector3(0f, 0f, 359f), vt_vehicle))) - LocalObject(1062, Terminal.Constructor(Vector3(3197.51f, 4842.245f, 58.77239f), ground_vehicle_terminal), owning_building_guid = 76) - LocalObject(707, VehicleSpawnPad.Constructor(Vector3(3212.147f, 4842.024f, 54.61439f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 76, terminal_guid = 1062) + LocalBuilding( + "vt_vehicle", + 76, + 27, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3212f, 4842f, 56.08539f), + Vector3(0f, 0f, 359f), + vt_vehicle + ) + ) + ) + LocalObject( + 1062, + Terminal.Constructor(Vector3(3197.51f, 4842.245f, 58.77239f), ground_vehicle_terminal), + owning_building_guid = 76 + ) + LocalObject( + 707, + VehicleSpawnPad.Constructor(Vector3(3212.147f, 4842.024f, 54.61439f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 76, + terminal_guid = 1062 + ) } Building17() def Building17(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 77, MapID: 17 - LocalBuilding("vt_vehicle", 77, 17, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3506f, 2820f, 90.8536f), Vector3(0f, 0f, 179f), vt_vehicle))) - LocalObject(1063, Terminal.Constructor(Vector3(3520.49f, 2819.755f, 93.5406f), ground_vehicle_terminal), owning_building_guid = 77) - LocalObject(708, VehicleSpawnPad.Constructor(Vector3(3505.853f, 2819.976f, 89.3826f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 77, terminal_guid = 1063) + LocalBuilding( + "vt_vehicle", + 77, + 17, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3506f, 2820f, 90.8536f), Vector3(0f, 0f, 179f), vt_vehicle) + ) + ) + LocalObject( + 1063, + Terminal.Constructor(Vector3(3520.49f, 2819.755f, 93.5406f), ground_vehicle_terminal), + owning_building_guid = 77 + ) + LocalObject( + 708, + VehicleSpawnPad.Constructor(Vector3(3505.853f, 2819.976f, 89.3826f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 77, + terminal_guid = 1063 + ) } Building8() def Building8(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 78, MapID: 8 - LocalBuilding("vt_vehicle", 78, 8, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3658f, 3020f, 90.8536f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1064, Terminal.Constructor(Vector3(3657.755f, 3005.51f, 93.5406f), ground_vehicle_terminal), owning_building_guid = 78) - LocalObject(709, VehicleSpawnPad.Constructor(Vector3(3657.976f, 3020.147f, 89.3826f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 78, terminal_guid = 1064) + LocalBuilding( + "vt_vehicle", + 78, + 8, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3658f, 3020f, 90.8536f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1064, + Terminal.Constructor(Vector3(3657.755f, 3005.51f, 93.5406f), ground_vehicle_terminal), + owning_building_guid = 78 + ) + LocalObject( + 709, + VehicleSpawnPad.Constructor(Vector3(3657.976f, 3020.147f, 89.3826f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 78, + terminal_guid = 1064 + ) } Building11() def Building11(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 79, MapID: 11 - LocalBuilding("vt_vehicle", 79, 11, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3660f, 2590f, 90.8536f), Vector3(0f, 0f, 269f), vt_vehicle))) - LocalObject(1065, Terminal.Constructor(Vector3(3660.245f, 2604.49f, 93.5406f), ground_vehicle_terminal), owning_building_guid = 79) - LocalObject(710, VehicleSpawnPad.Constructor(Vector3(3660.024f, 2589.853f, 89.3826f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 79, terminal_guid = 1065) + LocalBuilding( + "vt_vehicle", + 79, + 11, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3660f, 2590f, 90.8536f), Vector3(0f, 0f, 269f), vt_vehicle) + ) + ) + LocalObject( + 1065, + Terminal.Constructor(Vector3(3660.245f, 2604.49f, 93.5406f), ground_vehicle_terminal), + owning_building_guid = 79 + ) + LocalObject( + 710, + VehicleSpawnPad.Constructor(Vector3(3660.024f, 2589.853f, 89.3826f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 79, + terminal_guid = 1065 + ) } Building9() def Building9(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 80, MapID: 9 - LocalBuilding("vt_vehicle", 80, 9, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3722f, 3020f, 90.8536f), Vector3(0f, 0f, 89f), vt_vehicle))) - LocalObject(1066, Terminal.Constructor(Vector3(3721.755f, 3005.51f, 93.5406f), ground_vehicle_terminal), owning_building_guid = 80) - LocalObject(711, VehicleSpawnPad.Constructor(Vector3(3721.976f, 3020.147f, 89.3826f), mb_pad_creation, Vector3(0, 0, 1)), owning_building_guid = 80, terminal_guid = 1066) + LocalBuilding( + "vt_vehicle", + 80, + 9, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3722f, 3020f, 90.8536f), Vector3(0f, 0f, 89f), vt_vehicle) + ) + ) + LocalObject( + 1066, + Terminal.Constructor(Vector3(3721.755f, 3005.51f, 93.5406f), ground_vehicle_terminal), + owning_building_guid = 80 + ) + LocalObject( + 711, + VehicleSpawnPad.Constructor(Vector3(3721.976f, 3020.147f, 89.3826f), mb_pad_creation, Vector3(0, 0, 1)), + owning_building_guid = 80, + terminal_guid = 1066 + ) } Building10() def Building10(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 81, MapID: 10 - LocalBuilding("vt_vehicle", 81, 10, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3724f, 2588f, 90.85265f), Vector3(0f, 0f, 269f), vt_vehicle))) - LocalObject(1067, Terminal.Constructor(Vector3(3724.245f, 2602.49f, 93.53964f), ground_vehicle_terminal), owning_building_guid = 81) - LocalObject(712, VehicleSpawnPad.Constructor(Vector3(3724.024f, 2587.853f, 89.38165f), mb_pad_creation, Vector3(0, 0, 181)), owning_building_guid = 81, terminal_guid = 1067) + LocalBuilding( + "vt_vehicle", + 81, + 10, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(3724f, 2588f, 90.85265f), + Vector3(0f, 0f, 269f), + vt_vehicle + ) + ) + ) + LocalObject( + 1067, + Terminal.Constructor(Vector3(3724.245f, 2602.49f, 93.53964f), ground_vehicle_terminal), + owning_building_guid = 81 + ) + LocalObject( + 712, + VehicleSpawnPad.Constructor(Vector3(3724.024f, 2587.853f, 89.38165f), mb_pad_creation, Vector3(0, 0, 181)), + owning_building_guid = 81, + terminal_guid = 1067 + ) } Building16() def Building16(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 82, MapID: 16 - LocalBuilding("vt_vehicle", 82, 16, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(3878f, 2824f, 90.8536f), Vector3(0f, 0f, 359f), vt_vehicle))) - LocalObject(1068, Terminal.Constructor(Vector3(3863.51f, 2824.245f, 93.5406f), ground_vehicle_terminal), owning_building_guid = 82) - LocalObject(713, VehicleSpawnPad.Constructor(Vector3(3878.147f, 2824.024f, 89.3826f), mb_pad_creation, Vector3(0, 0, 91)), owning_building_guid = 82, terminal_guid = 1068) + LocalBuilding( + "vt_vehicle", + 82, + 16, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(3878f, 2824f, 90.8536f), Vector3(0f, 0f, 359f), vt_vehicle) + ) + ) + LocalObject( + 1068, + Terminal.Constructor(Vector3(3863.51f, 2824.245f, 93.5406f), ground_vehicle_terminal), + owning_building_guid = 82 + ) + LocalObject( + 713, + VehicleSpawnPad.Constructor(Vector3(3878.147f, 2824.024f, 89.3826f), mb_pad_creation, Vector3(0, 0, 91)), + owning_building_guid = 82, + terminal_guid = 1068 + ) } Building55() def Building55(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 83, MapID: 55 - LocalBuilding("vt_vehicle", 83, 55, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5420f, 4174f, 103.2318f), Vector3(0f, 0f, 179f), vt_vehicle))) - LocalObject(1069, Terminal.Constructor(Vector3(5434.49f, 4173.755f, 105.9188f), ground_vehicle_terminal), owning_building_guid = 83) - LocalObject(714, VehicleSpawnPad.Constructor(Vector3(5419.853f, 4173.976f, 101.7608f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 83, terminal_guid = 1069) + LocalBuilding( + "vt_vehicle", + 83, + 55, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5420f, 4174f, 103.2318f), + Vector3(0f, 0f, 179f), + vt_vehicle + ) + ) + ) + LocalObject( + 1069, + Terminal.Constructor(Vector3(5434.49f, 4173.755f, 105.9188f), ground_vehicle_terminal), + owning_building_guid = 83 + ) + LocalObject( + 714, + VehicleSpawnPad.Constructor(Vector3(5419.853f, 4173.976f, 101.7608f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 83, + terminal_guid = 1069 + ) } Building43() def Building43(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 84, MapID: 43 - LocalBuilding("vt_vehicle", 84, 43, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5420f, 4298f, 103.2333f), Vector3(0f, 0f, 179f), vt_vehicle))) - LocalObject(1070, Terminal.Constructor(Vector3(5434.49f, 4297.755f, 105.9203f), ground_vehicle_terminal), owning_building_guid = 84) - LocalObject(715, VehicleSpawnPad.Constructor(Vector3(5419.853f, 4297.976f, 101.7623f), mb_pad_creation, Vector3(0, 0, -89)), owning_building_guid = 84, terminal_guid = 1070) + LocalBuilding( + "vt_vehicle", + 84, + 43, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5420f, 4298f, 103.2333f), + Vector3(0f, 0f, 179f), + vt_vehicle + ) + ) + ) + LocalObject( + 1070, + Terminal.Constructor(Vector3(5434.49f, 4297.755f, 105.9203f), ground_vehicle_terminal), + owning_building_guid = 84 + ) + LocalObject( + 715, + VehicleSpawnPad.Constructor(Vector3(5419.853f, 4297.976f, 101.7623f), mb_pad_creation, Vector3(0, 0, -89)), + owning_building_guid = 84, + terminal_guid = 1070 + ) } Building54() def Building54(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 85, MapID: 54 - LocalBuilding("vt_vehicle", 85, 54, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5686f, 4420f, 103.2329f), Vector3(0f, 0f, 45f), vt_vehicle))) - LocalObject(1071, Terminal.Constructor(Vector3(5675.758f, 4409.747f, 105.9199f), ground_vehicle_terminal), owning_building_guid = 85) - LocalObject(716, VehicleSpawnPad.Constructor(Vector3(5686.085f, 4420.123f, 101.7619f), mb_pad_creation, Vector3(0, 0, 45)), owning_building_guid = 85, terminal_guid = 1071) + LocalBuilding( + "vt_vehicle", + 85, + 54, + FoundationBuilder( + Building.Structure(StructureType.Building, Vector3(5686f, 4420f, 103.2329f), Vector3(0f, 0f, 45f), vt_vehicle) + ) + ) + LocalObject( + 1071, + Terminal.Constructor(Vector3(5675.758f, 4409.747f, 105.9199f), ground_vehicle_terminal), + owning_building_guid = 85 + ) + LocalObject( + 716, + VehicleSpawnPad.Constructor(Vector3(5686.085f, 4420.123f, 101.7619f), mb_pad_creation, Vector3(0, 0, 45)), + owning_building_guid = 85, + terminal_guid = 1071 + ) } Building57() def Building57(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 86, MapID: 57 - LocalBuilding("vt_vehicle", 86, 57, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5710f, 4046f, 103.2289f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1072, Terminal.Constructor(Vector3(5699.747f, 4056.242f, 105.9159f), ground_vehicle_terminal), owning_building_guid = 86) - LocalObject(717, VehicleSpawnPad.Constructor(Vector3(5710.123f, 4045.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 86, terminal_guid = 1072) + LocalBuilding( + "vt_vehicle", + 86, + 57, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5710f, 4046f, 103.2289f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1072, + Terminal.Constructor(Vector3(5699.747f, 4056.242f, 105.9159f), ground_vehicle_terminal), + owning_building_guid = 86 + ) + LocalObject( + 717, + VehicleSpawnPad.Constructor(Vector3(5710.123f, 4045.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 86, + terminal_guid = 1072 + ) } Building53() def Building53(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 87, MapID: 53 - LocalBuilding("vt_vehicle", 87, 53, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5752f, 4088f, 103.2289f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1073, Terminal.Constructor(Vector3(5741.747f, 4098.242f, 105.9159f), ground_vehicle_terminal), owning_building_guid = 87) - LocalObject(718, VehicleSpawnPad.Constructor(Vector3(5752.123f, 4087.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 87, terminal_guid = 1073) + LocalBuilding( + "vt_vehicle", + 87, + 53, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5752f, 4088f, 103.2289f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1073, + Terminal.Constructor(Vector3(5741.747f, 4098.242f, 105.9159f), ground_vehicle_terminal), + owning_building_guid = 87 + ) + LocalObject( + 718, + VehicleSpawnPad.Constructor(Vector3(5752.123f, 4087.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 87, + terminal_guid = 1073 + ) } Building56() def Building56(): Unit = { // Name: vt_vehicle Type: vt_vehicle GUID: 88, MapID: 56 - LocalBuilding("vt_vehicle", 88, 56, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(5794f, 4132f, 103.2289f), Vector3(0f, 0f, 315f), vt_vehicle))) - LocalObject(1074, Terminal.Constructor(Vector3(5783.747f, 4142.242f, 105.9159f), ground_vehicle_terminal), owning_building_guid = 88) - LocalObject(719, VehicleSpawnPad.Constructor(Vector3(5794.123f, 4131.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), owning_building_guid = 88, terminal_guid = 1074) + LocalBuilding( + "vt_vehicle", + 88, + 56, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(5794f, 4132f, 103.2289f), + Vector3(0f, 0f, 315f), + vt_vehicle + ) + ) + ) + LocalObject( + 1074, + Terminal.Constructor(Vector3(5783.747f, 4142.242f, 105.9159f), ground_vehicle_terminal), + owning_building_guid = 88 + ) + LocalObject( + 719, + VehicleSpawnPad.Constructor(Vector3(5794.123f, 4131.915f, 101.7579f), mb_pad_creation, Vector3(0, 0, 135)), + owning_building_guid = 88, + terminal_guid = 1074 + ) } Building1() def Building1(): Unit = { // Name: WG_VSSanc_to_Ishundar Type: warpgate GUID: 89, MapID: 1 - LocalBuilding("WG_VSSanc_to_Ishundar", 89, 1, FoundationBuilder(WarpGate.Structure(Vector3(2516f, 5306f, 57.14436f)))) + LocalBuilding( + "WG_VSSanc_to_Ishundar", + 89, + 1, + FoundationBuilder(WarpGate.Structure(Vector3(2516f, 5306f, 57.14436f))) + ) } Building3() def Building3(): Unit = { // Name: WG_VSSanc_to_Esamir Type: warpgate GUID: 90, MapID: 3 - LocalBuilding("WG_VSSanc_to_Esamir", 90, 3, FoundationBuilder(WarpGate.Structure(Vector3(4176f, 2402f, 154.5915f)))) + LocalBuilding( + "WG_VSSanc_to_Esamir", + 90, + 3, + FoundationBuilder(WarpGate.Structure(Vector3(4176f, 2402f, 154.5915f))) + ) } Building2() def Building2(): Unit = { // Name: WG_VSSanc_to_Hossin Type: warpgate GUID: 91, MapID: 2 - LocalBuilding("WG_VSSanc_to_Hossin", 91, 2, FoundationBuilder(WarpGate.Structure(Vector3(5656f, 4868f, 97.27775f)))) + LocalBuilding( + "WG_VSSanc_to_Hossin", + 91, + 2, + FoundationBuilder(WarpGate.Structure(Vector3(5656f, 4868f, 97.27775f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(4, ProximityTerminal.Constructor(Vector3(2936.77f, 4897.82f, 56.28f), repair_silo), owning_building_guid = 0) - LocalObject(5, Terminal.Constructor(Vector3(2936.77f, 4897.82f, 56.28f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(8, ProximityTerminal.Constructor(Vector3(3019.16f, 4897.24f, 56.23f), repair_silo), owning_building_guid = 0) - LocalObject(9, Terminal.Constructor(Vector3(3019.16f, 4897.24f, 56.23f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(12, ProximityTerminal.Constructor(Vector3(3646.24f, 2871.09f, 91.04f), repair_silo), owning_building_guid = 0) - LocalObject(13, Terminal.Constructor(Vector3(3646.24f, 2871.09f, 91.04f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(16, ProximityTerminal.Constructor(Vector3(3729.31f, 2871.99f, 91.01f), repair_silo), owning_building_guid = 0) - LocalObject(17, Terminal.Constructor(Vector3(3729.31f, 2871.99f, 91.01f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(20, ProximityTerminal.Constructor(Vector3(5568.43f, 4301.41f, 103.4f), repair_silo), owning_building_guid = 0) - LocalObject(21, Terminal.Constructor(Vector3(5568.43f, 4301.41f, 103.4f), ground_rearm_terminal), owning_building_guid = 0) - LocalObject(24, ProximityTerminal.Constructor(Vector3(5651.46f, 4301.03f, 103.41f), repair_silo), owning_building_guid = 0) - LocalObject(25, Terminal.Constructor(Vector3(5651.46f, 4301.03f, 103.41f), ground_rearm_terminal), owning_building_guid = 0) + LocalObject( + 4, + ProximityTerminal.Constructor(Vector3(2936.77f, 4897.82f, 56.28f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 5, + Terminal.Constructor(Vector3(2936.77f, 4897.82f, 56.28f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 8, + ProximityTerminal.Constructor(Vector3(3019.16f, 4897.24f, 56.23f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 9, + Terminal.Constructor(Vector3(3019.16f, 4897.24f, 56.23f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 12, + ProximityTerminal.Constructor(Vector3(3646.24f, 2871.09f, 91.04f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 13, + Terminal.Constructor(Vector3(3646.24f, 2871.09f, 91.04f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 16, + ProximityTerminal.Constructor(Vector3(3729.31f, 2871.99f, 91.01f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 17, + Terminal.Constructor(Vector3(3729.31f, 2871.99f, 91.01f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 20, + ProximityTerminal.Constructor(Vector3(5568.43f, 4301.41f, 103.4f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 21, + Terminal.Constructor(Vector3(5568.43f, 4301.41f, 103.4f), ground_rearm_terminal), + owning_building_guid = 0 + ) + LocalObject( + 24, + ProximityTerminal.Constructor(Vector3(5651.46f, 4301.03f, 103.41f), repair_silo), + owning_building_guid = 0 + ) + LocalObject( + 25, + Terminal.Constructor(Vector3(5651.46f, 4301.03f, 103.41f), ground_rearm_terminal), + owning_building_guid = 0 + ) } - def Lattice(): Unit = { - } + def Lattice(): Unit = {} Lattice() diff --git a/pslogin/src/main/scala/zonemaps/Map96.scala b/pslogin/src/main/scala/zonemaps/Map96.scala index 2fc974da..7906dd90 100644 --- a/pslogin/src/main/scala/zonemaps/Map96.scala +++ b/pslogin/src/main/scala/zonemaps/Map96.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,8 +23,24 @@ object Map96 { // Nexus Building1() def Building1(): Unit = { // Name: Nexus_Base Type: comm_station_dsp GUID: 1, MapID: 1 - LocalBuilding("Nexus_Base", 1, 1, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1922f, 1940f, 35.71276f), Vector3(0f, 0f, 360f), comm_station_dsp))) - LocalObject(21, CaptureTerminal.Constructor(Vector3(1998.089f, 1920.734f, 18.31276f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Nexus_Base", + 1, + 1, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1922f, 1940f, 35.71276f), + Vector3(0f, 0f, 360f), + comm_station_dsp + ) + ) + ) + LocalObject( + 21, + CaptureTerminal.Constructor(Vector3(1998.089f, 1920.734f, 18.31276f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(23, Door.Constructor(Vector3(1990.339f, 2010.464f, 39.09076f)), owning_building_guid = 1) LocalObject(36, Door.Constructor(Vector3(1862.196f, 1896.501f, 37.36376f)), owning_building_guid = 1) LocalObject(37, Door.Constructor(Vector3(1862.196f, 1914.693f, 45.32776f)), owning_building_guid = 1) @@ -70,20 +86,90 @@ object Map96 { // Nexus LocalObject(303, Door.Constructor(Vector3(1958.673f, 1953.733f, 27.66676f)), owning_building_guid = 1) LocalObject(304, Door.Constructor(Vector3(1958.673f, 1961.026f, 27.66676f)), owning_building_guid = 1) LocalObject(305, Door.Constructor(Vector3(1958.673f, 1968.315f, 27.66676f)), owning_building_guid = 1) - LocalObject(94, IFFLock.Constructor(Vector3(1942.454f, 1939.09f, 37.28076f), Vector3(0, 0, 90)), owning_building_guid = 1, door_guid = 92) - LocalObject(103, IFFLock.Constructor(Vector3(1899.959f, 1941.104f, 42.28076f), Vector3(0, 0, 0)), owning_building_guid = 1, door_guid = 41) - LocalObject(104, IFFLock.Constructor(Vector3(1904.04f, 1930.42f, 42.28076f), Vector3(0, 0, 180)), owning_building_guid = 1, door_guid = 40) - LocalObject(105, IFFLock.Constructor(Vector3(1916.817f, 1930.514f, 49.78076f), Vector3(0, 0, 270)), owning_building_guid = 1, door_guid = 43) - LocalObject(106, IFFLock.Constructor(Vector3(1929.193f, 1957.962f, 42.28076f), Vector3(0, 0, 270)), owning_building_guid = 1, door_guid = 45) - LocalObject(107, IFFLock.Constructor(Vector3(1962.94f, 2001.572f, 19.64876f), Vector3(0, 0, 90)), owning_building_guid = 1, door_guid = 80) - LocalObject(108, IFFLock.Constructor(Vector3(1964.428f, 1972.94f, 27.14876f), Vector3(0, 0, 0)), owning_building_guid = 1, door_guid = 83) - LocalObject(109, IFFLock.Constructor(Vector3(1967.572f, 1947.19f, 27.14876f), Vector3(0, 0, 180)), owning_building_guid = 1, door_guid = 82) - LocalObject(110, IFFLock.Constructor(Vector3(1973.907f, 2045.163f, 42.25976f), Vector3(0, 0, 0)), owning_building_guid = 1, door_guid = 47) - LocalObject(111, IFFLock.Constructor(Vector3(1977.06f, 1950.428f, 19.64876f), Vector3(0, 0, 270)), owning_building_guid = 1, door_guid = 84) - LocalObject(112, IFFLock.Constructor(Vector3(1977.124f, 2012.312f, 37.32476f), Vector3(0, 0, 270)), owning_building_guid = 1, door_guid = 48) - LocalObject(113, IFFLock.Constructor(Vector3(1993.06f, 1910.428f, 19.64876f), Vector3(0, 0, 270)), owning_building_guid = 1, door_guid = 87) - LocalObject(115, IFFLock.Constructor(Vector3(2002.813f, 1913.572f, 19.64876f), Vector3(0, 0, 90)), owning_building_guid = 1, door_guid = 88) - LocalObject(116, IFFLock.Constructor(Vector3(2035.953f, 2020.808f, 37.22376f), Vector3(0, 0, 0)), owning_building_guid = 1, door_guid = 54) + LocalObject( + 94, + IFFLock.Constructor(Vector3(1942.454f, 1939.09f, 37.28076f), Vector3(0, 0, 90)), + owning_building_guid = 1, + door_guid = 92 + ) + LocalObject( + 103, + IFFLock.Constructor(Vector3(1899.959f, 1941.104f, 42.28076f), Vector3(0, 0, 0)), + owning_building_guid = 1, + door_guid = 41 + ) + LocalObject( + 104, + IFFLock.Constructor(Vector3(1904.04f, 1930.42f, 42.28076f), Vector3(0, 0, 180)), + owning_building_guid = 1, + door_guid = 40 + ) + LocalObject( + 105, + IFFLock.Constructor(Vector3(1916.817f, 1930.514f, 49.78076f), Vector3(0, 0, 270)), + owning_building_guid = 1, + door_guid = 43 + ) + LocalObject( + 106, + IFFLock.Constructor(Vector3(1929.193f, 1957.962f, 42.28076f), Vector3(0, 0, 270)), + owning_building_guid = 1, + door_guid = 45 + ) + LocalObject( + 107, + IFFLock.Constructor(Vector3(1962.94f, 2001.572f, 19.64876f), Vector3(0, 0, 90)), + owning_building_guid = 1, + door_guid = 80 + ) + LocalObject( + 108, + IFFLock.Constructor(Vector3(1964.428f, 1972.94f, 27.14876f), Vector3(0, 0, 0)), + owning_building_guid = 1, + door_guid = 83 + ) + LocalObject( + 109, + IFFLock.Constructor(Vector3(1967.572f, 1947.19f, 27.14876f), Vector3(0, 0, 180)), + owning_building_guid = 1, + door_guid = 82 + ) + LocalObject( + 110, + IFFLock.Constructor(Vector3(1973.907f, 2045.163f, 42.25976f), Vector3(0, 0, 0)), + owning_building_guid = 1, + door_guid = 47 + ) + LocalObject( + 111, + IFFLock.Constructor(Vector3(1977.06f, 1950.428f, 19.64876f), Vector3(0, 0, 270)), + owning_building_guid = 1, + door_guid = 84 + ) + LocalObject( + 112, + IFFLock.Constructor(Vector3(1977.124f, 2012.312f, 37.32476f), Vector3(0, 0, 270)), + owning_building_guid = 1, + door_guid = 48 + ) + LocalObject( + 113, + IFFLock.Constructor(Vector3(1993.06f, 1910.428f, 19.64876f), Vector3(0, 0, 270)), + owning_building_guid = 1, + door_guid = 87 + ) + LocalObject( + 115, + IFFLock.Constructor(Vector3(2002.813f, 1913.572f, 19.64876f), Vector3(0, 0, 90)), + owning_building_guid = 1, + door_guid = 88 + ) + LocalObject( + 116, + IFFLock.Constructor(Vector3(2035.953f, 2020.808f, 37.22376f), Vector3(0, 0, 0)), + owning_building_guid = 1, + door_guid = 54 + ) LocalObject(149, Locker.Constructor(Vector3(1969.563f, 1950.141f, 26.07376f)), owning_building_guid = 1) LocalObject(150, Locker.Constructor(Vector3(1970.727f, 1950.141f, 26.07376f)), owning_building_guid = 1) LocalObject(151, Locker.Constructor(Vector3(1971.874f, 1950.141f, 26.07376f)), owning_building_guid = 1) @@ -96,92 +182,338 @@ object Map96 { // Nexus LocalObject(158, Locker.Constructor(Vector3(1990.055f, 1970.165f, 18.31276f)), owning_building_guid = 1) LocalObject(159, Locker.Constructor(Vector3(1991.391f, 1970.165f, 18.31276f)), owning_building_guid = 1) LocalObject(160, Locker.Constructor(Vector3(1992.728f, 1970.165f, 18.31276f)), owning_building_guid = 1) - LocalObject(25, Terminal.Constructor(Vector3(1981.879f, 2042.918f, 41.41676f), dropship_vehicle_terminal), owning_building_guid = 1) - LocalObject(24, VehicleSpawnPad.Constructor(Vector3(1990.328f, 2064.856f, 35.74076f), dropship_pad_doors, Vector3(0, 0, 90)), owning_building_guid = 1, terminal_guid = 25) - LocalObject(209, Terminal.Constructor(Vector3(1912.378f, 1916.897f, 42.17276f), order_terminal), owning_building_guid = 1) - LocalObject(210, Terminal.Constructor(Vector3(1922.075f, 1932.547f, 49.56776f), order_terminal), owning_building_guid = 1) - LocalObject(211, Terminal.Constructor(Vector3(1924.331f, 1930.43f, 49.56776f), order_terminal), owning_building_guid = 1) - LocalObject(212, Terminal.Constructor(Vector3(1924.332f, 1934.825f, 49.56776f), order_terminal), owning_building_guid = 1) - LocalObject(213, Terminal.Constructor(Vector3(1926.592f, 1932.59f, 49.56776f), order_terminal), owning_building_guid = 1) - LocalObject(214, Terminal.Constructor(Vector3(1972.654f, 1955.408f, 27.40276f), order_terminal), owning_building_guid = 1) - LocalObject(215, Terminal.Constructor(Vector3(1972.654f, 1959.139f, 27.40276f), order_terminal), owning_building_guid = 1) - LocalObject(216, Terminal.Constructor(Vector3(1972.654f, 1962.928f, 27.40276f), order_terminal), owning_building_guid = 1) - LocalObject(290, Terminal.Constructor(Vector3(1920.509f, 1915.959f, 42.42976f), spawn_terminal), owning_building_guid = 1) - LocalObject(291, Terminal.Constructor(Vector3(1958.971f, 1951.243f, 27.94676f), spawn_terminal), owning_building_guid = 1) - LocalObject(292, Terminal.Constructor(Vector3(1958.967f, 1958.535f, 27.94676f), spawn_terminal), owning_building_guid = 1) - LocalObject(293, Terminal.Constructor(Vector3(1958.97f, 1965.823f, 27.94676f), spawn_terminal), owning_building_guid = 1) - LocalObject(294, Terminal.Constructor(Vector3(1977.103f, 2034.906f, 42.36076f), spawn_terminal), owning_building_guid = 1) - LocalObject(295, Terminal.Constructor(Vector3(1986.058f, 1939.409f, 19.84076f), spawn_terminal), owning_building_guid = 1) - LocalObject(296, Terminal.Constructor(Vector3(1993.409f, 1995.942f, 19.84076f), spawn_terminal), owning_building_guid = 1) - LocalObject(297, Terminal.Constructor(Vector3(2002.058f, 1947.409f, 27.36976f), spawn_terminal), owning_building_guid = 1) - LocalObject(298, Terminal.Constructor(Vector3(2002.058f, 1987.409f, 27.36976f), spawn_terminal), owning_building_guid = 1) - LocalObject(318, Terminal.Constructor(Vector3(1939.698f, 2048.044f, 38.49976f), ground_vehicle_terminal), owning_building_guid = 1) - LocalObject(200, VehicleSpawnPad.Constructor(Vector3(1939.786f, 2034.411f, 34.34176f), mb_pad_creation, Vector3(0, 0, 180)), owning_building_guid = 1, terminal_guid = 318) + LocalObject( + 25, + Terminal.Constructor(Vector3(1981.879f, 2042.918f, 41.41676f), dropship_vehicle_terminal), + owning_building_guid = 1 + ) + LocalObject( + 24, + VehicleSpawnPad.Constructor(Vector3(1990.328f, 2064.856f, 35.74076f), dropship_pad_doors, Vector3(0, 0, 90)), + owning_building_guid = 1, + terminal_guid = 25 + ) + LocalObject( + 209, + Terminal.Constructor(Vector3(1912.378f, 1916.897f, 42.17276f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 210, + Terminal.Constructor(Vector3(1922.075f, 1932.547f, 49.56776f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 211, + Terminal.Constructor(Vector3(1924.331f, 1930.43f, 49.56776f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 212, + Terminal.Constructor(Vector3(1924.332f, 1934.825f, 49.56776f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 213, + Terminal.Constructor(Vector3(1926.592f, 1932.59f, 49.56776f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(1972.654f, 1955.408f, 27.40276f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 215, + Terminal.Constructor(Vector3(1972.654f, 1959.139f, 27.40276f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 216, + Terminal.Constructor(Vector3(1972.654f, 1962.928f, 27.40276f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 290, + Terminal.Constructor(Vector3(1920.509f, 1915.959f, 42.42976f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 291, + Terminal.Constructor(Vector3(1958.971f, 1951.243f, 27.94676f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 292, + Terminal.Constructor(Vector3(1958.967f, 1958.535f, 27.94676f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 293, + Terminal.Constructor(Vector3(1958.97f, 1965.823f, 27.94676f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 294, + Terminal.Constructor(Vector3(1977.103f, 2034.906f, 42.36076f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 295, + Terminal.Constructor(Vector3(1986.058f, 1939.409f, 19.84076f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 296, + Terminal.Constructor(Vector3(1993.409f, 1995.942f, 19.84076f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 297, + Terminal.Constructor(Vector3(2002.058f, 1947.409f, 27.36976f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 298, + Terminal.Constructor(Vector3(2002.058f, 1987.409f, 27.36976f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 318, + Terminal.Constructor(Vector3(1939.698f, 2048.044f, 38.49976f), ground_vehicle_terminal), + owning_building_guid = 1 + ) + LocalObject( + 200, + VehicleSpawnPad.Constructor(Vector3(1939.786f, 2034.411f, 34.34176f), mb_pad_creation, Vector3(0, 0, 180)), + owning_building_guid = 1, + terminal_guid = 318 + ) LocalObject(271, ResourceSilo.Constructor(Vector3(2020.212f, 2105.642f, 42.82976f)), owning_building_guid = 1) - LocalObject(276, SpawnTube.Constructor(Vector3(1958.233f, 1952.683f, 25.81276f), Vector3(0, 0, 0)), owning_building_guid = 1) - LocalObject(277, SpawnTube.Constructor(Vector3(1958.233f, 1959.974f, 25.81276f), Vector3(0, 0, 0)), owning_building_guid = 1) - LocalObject(278, SpawnTube.Constructor(Vector3(1958.233f, 1967.262f, 25.81276f), Vector3(0, 0, 0)), owning_building_guid = 1) - LocalObject(201, ProximityTerminal.Constructor(Vector3(1922.863f, 1911.013f, 35.81276f), medical_terminal), owning_building_guid = 1) - LocalObject(202, ProximityTerminal.Constructor(Vector3(1986.444f, 1969.62f, 18.31276f), medical_terminal), owning_building_guid = 1) - LocalObject(230, ProximityTerminal.Constructor(Vector3(1903.153f, 2033.398f, 44.12276f), pad_landing_frame), owning_building_guid = 1) - LocalObject(231, Terminal.Constructor(Vector3(1903.153f, 2033.398f, 44.12276f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(233, ProximityTerminal.Constructor(Vector3(1919.514f, 1987.467f, 41.40676f), pad_landing_frame), owning_building_guid = 1) - LocalObject(234, Terminal.Constructor(Vector3(1919.514f, 1987.467f, 41.40676f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(236, ProximityTerminal.Constructor(Vector3(1971.804f, 1951.901f, 48.58876f), pad_landing_frame), owning_building_guid = 1) - LocalObject(237, Terminal.Constructor(Vector3(1971.804f, 1951.901f, 48.58876f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(239, ProximityTerminal.Constructor(Vector3(2007.071f, 1968.159f, 44.13576f), pad_landing_frame), owning_building_guid = 1) - LocalObject(240, Terminal.Constructor(Vector3(2007.071f, 1968.159f, 44.13576f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(263, ProximityTerminal.Constructor(Vector3(1860.642f, 1978.24f, 35.46276f), repair_silo), owning_building_guid = 1) - LocalObject(264, Terminal.Constructor(Vector3(1860.642f, 1978.24f, 35.46276f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(267, ProximityTerminal.Constructor(Vector3(2030.57f, 1981.151f, 35.46276f), repair_silo), owning_building_guid = 1) - LocalObject(268, Terminal.Constructor(Vector3(2030.57f, 1981.151f, 35.46276f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(190, FacilityTurret.Constructor(Vector3(1848.401f, 2013.113f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 276, + SpawnTube.Constructor(Vector3(1958.233f, 1952.683f, 25.81276f), Vector3(0, 0, 0)), + owning_building_guid = 1 + ) + LocalObject( + 277, + SpawnTube.Constructor(Vector3(1958.233f, 1959.974f, 25.81276f), Vector3(0, 0, 0)), + owning_building_guid = 1 + ) + LocalObject( + 278, + SpawnTube.Constructor(Vector3(1958.233f, 1967.262f, 25.81276f), Vector3(0, 0, 0)), + owning_building_guid = 1 + ) + LocalObject( + 201, + ProximityTerminal.Constructor(Vector3(1922.863f, 1911.013f, 35.81276f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 202, + ProximityTerminal.Constructor(Vector3(1986.444f, 1969.62f, 18.31276f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 230, + ProximityTerminal.Constructor(Vector3(1903.153f, 2033.398f, 44.12276f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 231, + Terminal.Constructor(Vector3(1903.153f, 2033.398f, 44.12276f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 233, + ProximityTerminal.Constructor(Vector3(1919.514f, 1987.467f, 41.40676f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 234, + Terminal.Constructor(Vector3(1919.514f, 1987.467f, 41.40676f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 236, + ProximityTerminal.Constructor(Vector3(1971.804f, 1951.901f, 48.58876f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 237, + Terminal.Constructor(Vector3(1971.804f, 1951.901f, 48.58876f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 239, + ProximityTerminal.Constructor(Vector3(2007.071f, 1968.159f, 44.13576f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 240, + Terminal.Constructor(Vector3(2007.071f, 1968.159f, 44.13576f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 263, + ProximityTerminal.Constructor(Vector3(1860.642f, 1978.24f, 35.46276f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 264, + Terminal.Constructor(Vector3(1860.642f, 1978.24f, 35.46276f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 267, + ProximityTerminal.Constructor(Vector3(2030.57f, 1981.151f, 35.46276f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 268, + Terminal.Constructor(Vector3(2030.57f, 1981.151f, 35.46276f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 190, + FacilityTurret.Constructor(Vector3(1848.401f, 2013.113f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(190, 5000) - LocalObject(191, FacilityTurret.Constructor(Vector3(1849.554f, 1859.565f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 191, + FacilityTurret.Constructor(Vector3(1849.554f, 1859.565f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(191, 5001) - LocalObject(192, FacilityTurret.Constructor(Vector3(1893.445f, 2059.667f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 192, + FacilityTurret.Constructor(Vector3(1893.445f, 2059.667f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(192, 5002) - LocalObject(193, FacilityTurret.Constructor(Vector3(1952.428f, 1858.396f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 193, + FacilityTurret.Constructor(Vector3(1952.428f, 1858.396f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(193, 5003) - LocalObject(194, FacilityTurret.Constructor(Vector3(1953.449f, 2118.154f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 194, + FacilityTurret.Constructor(Vector3(1953.449f, 2118.154f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(194, 5004) - LocalObject(195, FacilityTurret.Constructor(Vector3(1994.537f, 1899.011f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 195, + FacilityTurret.Constructor(Vector3(1994.537f, 1899.011f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(195, 5005) - LocalObject(196, FacilityTurret.Constructor(Vector3(2041.619f, 2116.985f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 196, + FacilityTurret.Constructor(Vector3(2041.619f, 2116.985f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(196, 5006) - LocalObject(197, FacilityTurret.Constructor(Vector3(2042.773f, 1948.733f, 44.32076f), manned_turret), owning_building_guid = 1) + LocalObject( + 197, + FacilityTurret.Constructor(Vector3(2042.773f, 1948.733f, 44.32076f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(197, 5007) LocalObject(242, Painbox.Constructor(Vector3(1950.428f, 2000.057f, 22.20706f), painbox), owning_building_guid = 1) - LocalObject(243, Painbox.Constructor(Vector3(1967.857f, 1960.408f, 29.84026f), painbox_continuous), owning_building_guid = 1) - LocalObject(244, Painbox.Constructor(Vector3(1964.203f, 1998.915f, 21.44496f), painbox_door_radius), owning_building_guid = 1) - LocalObject(245, Painbox.Constructor(Vector3(1965.087f, 1945.386f, 28.24196f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(246, Painbox.Constructor(Vector3(1965.895f, 1974.081f, 28.71276f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(247, Painbox.Constructor(Vector3(1980.317f, 1967.888f, 29.14306f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 243, + Painbox.Constructor(Vector3(1967.857f, 1960.408f, 29.84026f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 244, + Painbox.Constructor(Vector3(1964.203f, 1998.915f, 21.44496f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 245, + Painbox.Constructor(Vector3(1965.087f, 1945.386f, 28.24196f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 246, + Painbox.Constructor(Vector3(1965.895f, 1974.081f, 28.71276f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 247, + Painbox.Constructor(Vector3(1980.317f, 1967.888f, 29.14306f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(27, Generator.Constructor(Vector3(1946.445f, 1999.975f, 17.01876f)), owning_building_guid = 1) - LocalObject(26, Terminal.Constructor(Vector3(1954.637f, 2000.022f, 18.31276f), gen_control), owning_building_guid = 1) + LocalObject( + 26, + Terminal.Constructor(Vector3(1954.637f, 2000.022f, 18.31276f), gen_control), + owning_building_guid = 1 + ) } Building10000() def Building10000(): Unit = { // Name: Map96_Gate_Three Type: hst GUID: 4, MapID: 10000 - LocalBuilding("Map96_Gate_Three", 4, 10000, FoundationBuilder(WarpGate.Structure(Vector3(1387.16f, 1639.74f, 48.78f), hst))) + LocalBuilding( + "Map96_Gate_Three", + 4, + 10000, + FoundationBuilder(WarpGate.Structure(Vector3(1387.16f, 1639.74f, 48.78f), hst)) + ) } Building2() def Building2(): Unit = { // Name: North_Rim_Tower Type: tower_a GUID: 5, MapID: 2 - LocalBuilding("North_Rim_Tower", 5, 2, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1740f, 2280f, 71.42857f), Vector3(0f, 0f, 10f), tower_a))) - LocalObject(285, CaptureTerminal.Constructor(Vector3(1756.353f, 2282.779f, 81.42757f), secondary_capture), owning_building_guid = 5) + LocalBuilding( + "North_Rim_Tower", + 5, + 2, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1740f, 2280f, 71.42857f), Vector3(0f, 0f, 10f), tower_a) + ) + ) + LocalObject( + 285, + CaptureTerminal.Constructor(Vector3(1756.353f, 2282.779f, 81.42757f), secondary_capture), + owning_building_guid = 5 + ) LocalObject(28, Door.Constructor(Vector3(1750.428f, 2289.962f, 72.94958f)), owning_building_guid = 5) LocalObject(29, Door.Constructor(Vector3(1750.428f, 2289.962f, 92.94858f)), owning_building_guid = 5) LocalObject(30, Door.Constructor(Vector3(1753.207f, 2274.205f, 72.94958f)), owning_building_guid = 5) LocalObject(31, Door.Constructor(Vector3(1753.207f, 2274.205f, 92.94858f)), owning_building_guid = 5) LocalObject(299, Door.Constructor(Vector3(1750.073f, 2287.061f, 62.76457f)), owning_building_guid = 5) LocalObject(300, Door.Constructor(Vector3(1752.923f, 2270.9f, 62.76457f)), owning_building_guid = 5) - LocalObject(95, IFFLock.Constructor(Vector3(1748.276f, 2290.406f, 72.88957f), Vector3(0, 0, 350)), owning_building_guid = 5, door_guid = 28) - LocalObject(96, IFFLock.Constructor(Vector3(1748.276f, 2290.406f, 92.88957f), Vector3(0, 0, 350)), owning_building_guid = 5, door_guid = 29) - LocalObject(97, IFFLock.Constructor(Vector3(1755.364f, 2273.762f, 72.88957f), Vector3(0, 0, 170)), owning_building_guid = 5, door_guid = 30) - LocalObject(98, IFFLock.Constructor(Vector3(1755.364f, 2273.762f, 92.88957f), Vector3(0, 0, 170)), owning_building_guid = 5, door_guid = 31) + LocalObject( + 95, + IFFLock.Constructor(Vector3(1748.276f, 2290.406f, 72.88957f), Vector3(0, 0, 350)), + owning_building_guid = 5, + door_guid = 28 + ) + LocalObject( + 96, + IFFLock.Constructor(Vector3(1748.276f, 2290.406f, 92.88957f), Vector3(0, 0, 350)), + owning_building_guid = 5, + door_guid = 29 + ) + LocalObject( + 97, + IFFLock.Constructor(Vector3(1755.364f, 2273.762f, 72.88957f), Vector3(0, 0, 170)), + owning_building_guid = 5, + door_guid = 30 + ) + LocalObject( + 98, + IFFLock.Constructor(Vector3(1755.364f, 2273.762f, 92.88957f), Vector3(0, 0, 170)), + owning_building_guid = 5, + door_guid = 31 + ) LocalObject(133, Locker.Constructor(Vector3(1754.325f, 2289.466f, 61.42257f)), owning_building_guid = 5) LocalObject(134, Locker.Constructor(Vector3(1755.641f, 2289.698f, 61.42257f)), owning_building_guid = 5) LocalObject(135, Locker.Constructor(Vector3(1758.088f, 2267.92f, 61.42257f)), owning_building_guid = 5) @@ -190,35 +522,106 @@ object Map96 { // Nexus LocalObject(138, Locker.Constructor(Vector3(1759.635f, 2290.403f, 61.42257f)), owning_building_guid = 5) LocalObject(139, Locker.Constructor(Vector3(1762.052f, 2268.619f, 61.42257f)), owning_building_guid = 5) LocalObject(140, Locker.Constructor(Vector3(1763.433f, 2268.863f, 61.42257f)), owning_building_guid = 5) - LocalObject(203, Terminal.Constructor(Vector3(1760.905f, 2284.939f, 62.76057f), order_terminal), owning_building_guid = 5) - LocalObject(204, Terminal.Constructor(Vector3(1761.839f, 2279.64f, 62.76057f), order_terminal), owning_building_guid = 5) - LocalObject(205, Terminal.Constructor(Vector3(1762.833f, 2274.003f, 62.76057f), order_terminal), owning_building_guid = 5) - LocalObject(272, SpawnTube.Constructor(Vector3(1749.822f, 2285.948f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 350)), owning_building_guid = 5) - LocalObject(273, SpawnTube.Constructor(Vector3(1752.672f, 2269.787f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 350)), owning_building_guid = 5) - LocalObject(186, FacilityTurret.Constructor(Vector3(1729.719f, 2265.286f, 90.37057f), manned_turret), owning_building_guid = 5) + LocalObject( + 203, + Terminal.Constructor(Vector3(1760.905f, 2284.939f, 62.76057f), order_terminal), + owning_building_guid = 5 + ) + LocalObject( + 204, + Terminal.Constructor(Vector3(1761.839f, 2279.64f, 62.76057f), order_terminal), + owning_building_guid = 5 + ) + LocalObject( + 205, + Terminal.Constructor(Vector3(1762.833f, 2274.003f, 62.76057f), order_terminal), + owning_building_guid = 5 + ) + LocalObject( + 272, + SpawnTube.Constructor(Vector3(1749.822f, 2285.948f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 350)), + owning_building_guid = 5 + ) + LocalObject( + 273, + SpawnTube.Constructor(Vector3(1752.672f, 2269.787f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 350)), + owning_building_guid = 5 + ) + LocalObject( + 186, + FacilityTurret.Constructor(Vector3(1729.719f, 2265.286f, 90.37057f), manned_turret), + owning_building_guid = 5 + ) TurretToWeapon(186, 5008) - LocalObject(188, FacilityTurret.Constructor(Vector3(1760.096f, 2296.447f, 90.37057f), manned_turret), owning_building_guid = 5) + LocalObject( + 188, + FacilityTurret.Constructor(Vector3(1760.096f, 2296.447f, 90.37057f), manned_turret), + owning_building_guid = 5 + ) TurretToWeapon(188, 5009) - LocalObject(248, Painbox.Constructor(Vector3(1746.232f, 2274.806f, 62.92767f), painbox_radius_continuous), owning_building_guid = 5) - LocalObject(249, Painbox.Constructor(Vector3(1756.27f, 2284.987f, 61.52857f), painbox_radius_continuous), owning_building_guid = 5) - LocalObject(250, Painbox.Constructor(Vector3(1758.415f, 2273.319f, 61.52857f), painbox_radius_continuous), owning_building_guid = 5) + LocalObject( + 248, + Painbox.Constructor(Vector3(1746.232f, 2274.806f, 62.92767f), painbox_radius_continuous), + owning_building_guid = 5 + ) + LocalObject( + 249, + Painbox.Constructor(Vector3(1756.27f, 2284.987f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 5 + ) + LocalObject( + 250, + Painbox.Constructor(Vector3(1758.415f, 2273.319f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 5 + ) } Building4() def Building4(): Unit = { // Name: South_Rim_Tower Type: tower_a GUID: 6, MapID: 4 - LocalBuilding("South_Rim_Tower", 6, 4, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1756f, 1628f, 71.42857f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(286, CaptureTerminal.Constructor(Vector3(1772.587f, 1627.897f, 81.42757f), secondary_capture), owning_building_guid = 6) + LocalBuilding( + "South_Rim_Tower", + 6, + 4, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1756f, 1628f, 71.42857f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 286, + CaptureTerminal.Constructor(Vector3(1772.587f, 1627.897f, 81.42757f), secondary_capture), + owning_building_guid = 6 + ) LocalObject(32, Door.Constructor(Vector3(1768f, 1620f, 72.94958f)), owning_building_guid = 6) LocalObject(33, Door.Constructor(Vector3(1768f, 1620f, 92.94858f)), owning_building_guid = 6) LocalObject(34, Door.Constructor(Vector3(1768f, 1636f, 72.94958f)), owning_building_guid = 6) LocalObject(35, Door.Constructor(Vector3(1768f, 1636f, 92.94858f)), owning_building_guid = 6) LocalObject(301, Door.Constructor(Vector3(1767.146f, 1616.794f, 62.76457f)), owning_building_guid = 6) LocalObject(302, Door.Constructor(Vector3(1767.146f, 1633.204f, 62.76457f)), owning_building_guid = 6) - LocalObject(99, IFFLock.Constructor(Vector3(1765.957f, 1636.811f, 72.88957f), Vector3(0, 0, 0)), owning_building_guid = 6, door_guid = 34) - LocalObject(100, IFFLock.Constructor(Vector3(1765.957f, 1636.811f, 92.88957f), Vector3(0, 0, 0)), owning_building_guid = 6, door_guid = 35) - LocalObject(101, IFFLock.Constructor(Vector3(1770.047f, 1619.189f, 72.88957f), Vector3(0, 0, 180)), owning_building_guid = 6, door_guid = 32) - LocalObject(102, IFFLock.Constructor(Vector3(1770.047f, 1619.189f, 92.88957f), Vector3(0, 0, 180)), owning_building_guid = 6, door_guid = 33) + LocalObject( + 99, + IFFLock.Constructor(Vector3(1765.957f, 1636.811f, 72.88957f), Vector3(0, 0, 0)), + owning_building_guid = 6, + door_guid = 34 + ) + LocalObject( + 100, + IFFLock.Constructor(Vector3(1765.957f, 1636.811f, 92.88957f), Vector3(0, 0, 0)), + owning_building_guid = 6, + door_guid = 35 + ) + LocalObject( + 101, + IFFLock.Constructor(Vector3(1770.047f, 1619.189f, 72.88957f), Vector3(0, 0, 180)), + owning_building_guid = 6, + door_guid = 32 + ) + LocalObject( + 102, + IFFLock.Constructor(Vector3(1770.047f, 1619.189f, 92.88957f), Vector3(0, 0, 180)), + owning_building_guid = 6, + door_guid = 33 + ) LocalObject(141, Locker.Constructor(Vector3(1771.716f, 1612.963f, 61.42257f)), owning_building_guid = 6) LocalObject(142, Locker.Constructor(Vector3(1771.751f, 1634.835f, 61.42257f)), owning_building_guid = 6) LocalObject(143, Locker.Constructor(Vector3(1773.053f, 1612.963f, 61.42257f)), owning_building_guid = 6) @@ -227,35 +630,106 @@ object Map96 { // Nexus LocalObject(146, Locker.Constructor(Vector3(1775.741f, 1634.835f, 61.42257f)), owning_building_guid = 6) LocalObject(147, Locker.Constructor(Vector3(1777.143f, 1612.963f, 61.42257f)), owning_building_guid = 6) LocalObject(148, Locker.Constructor(Vector3(1777.143f, 1634.835f, 61.42257f)), owning_building_guid = 6) - LocalObject(206, Terminal.Constructor(Vector3(1777.445f, 1618.129f, 62.76057f), order_terminal), owning_building_guid = 6) - LocalObject(207, Terminal.Constructor(Vector3(1777.445f, 1623.853f, 62.76057f), order_terminal), owning_building_guid = 6) - LocalObject(208, Terminal.Constructor(Vector3(1777.445f, 1629.234f, 62.76057f), order_terminal), owning_building_guid = 6) - LocalObject(274, SpawnTube.Constructor(Vector3(1766.706f, 1615.742f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 6) - LocalObject(275, SpawnTube.Constructor(Vector3(1766.706f, 1632.152f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 6) - LocalObject(187, FacilityTurret.Constructor(Vector3(1743.32f, 1615.295f, 90.37057f), manned_turret), owning_building_guid = 6) + LocalObject( + 206, + Terminal.Constructor(Vector3(1777.445f, 1618.129f, 62.76057f), order_terminal), + owning_building_guid = 6 + ) + LocalObject( + 207, + Terminal.Constructor(Vector3(1777.445f, 1623.853f, 62.76057f), order_terminal), + owning_building_guid = 6 + ) + LocalObject( + 208, + Terminal.Constructor(Vector3(1777.445f, 1629.234f, 62.76057f), order_terminal), + owning_building_guid = 6 + ) + LocalObject( + 274, + SpawnTube.Constructor(Vector3(1766.706f, 1615.742f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 6 + ) + LocalObject( + 275, + SpawnTube.Constructor(Vector3(1766.706f, 1632.152f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 6 + ) + LocalObject( + 187, + FacilityTurret.Constructor(Vector3(1743.32f, 1615.295f, 90.37057f), manned_turret), + owning_building_guid = 6 + ) TurretToWeapon(187, 5010) - LocalObject(189, FacilityTurret.Constructor(Vector3(1778.647f, 1640.707f, 90.37057f), manned_turret), owning_building_guid = 6) + LocalObject( + 189, + FacilityTurret.Constructor(Vector3(1778.647f, 1640.707f, 90.37057f), manned_turret), + owning_building_guid = 6 + ) TurretToWeapon(189, 5011) - LocalObject(251, Painbox.Constructor(Vector3(1761.235f, 1621.803f, 62.92767f), painbox_radius_continuous), owning_building_guid = 6) - LocalObject(252, Painbox.Constructor(Vector3(1772.889f, 1630.086f, 61.52857f), painbox_radius_continuous), owning_building_guid = 6) - LocalObject(253, Painbox.Constructor(Vector3(1772.975f, 1618.223f, 61.52857f), painbox_radius_continuous), owning_building_guid = 6) + LocalObject( + 251, + Painbox.Constructor(Vector3(1761.235f, 1621.803f, 62.92767f), painbox_radius_continuous), + owning_building_guid = 6 + ) + LocalObject( + 252, + Painbox.Constructor(Vector3(1772.889f, 1630.086f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 6 + ) + LocalObject( + 253, + Painbox.Constructor(Vector3(1772.975f, 1618.223f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 6 + ) } Building3() def Building3(): Unit = { // Name: East_Rim_Tower Type: tower_a GUID: 7, MapID: 3 - LocalBuilding("East_Rim_Tower", 7, 3, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2358f, 1940f, 71.42857f), Vector3(0f, 0f, 80f), tower_a))) - LocalObject(288, CaptureTerminal.Constructor(Vector3(2360.982f, 1956.317f, 81.42757f), secondary_capture), owning_building_guid = 7) + LocalBuilding( + "East_Rim_Tower", + 7, + 3, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2358f, 1940f, 71.42857f), Vector3(0f, 0f, 80f), tower_a) + ) + ) + LocalObject( + 288, + CaptureTerminal.Constructor(Vector3(2360.982f, 1956.317f, 81.42757f), secondary_capture), + owning_building_guid = 7 + ) LocalObject(61, Door.Constructor(Vector3(2352.205f, 1953.207f, 72.94958f)), owning_building_guid = 7) LocalObject(62, Door.Constructor(Vector3(2352.205f, 1953.207f, 92.94858f)), owning_building_guid = 7) LocalObject(63, Door.Constructor(Vector3(2367.962f, 1950.428f, 72.94958f)), owning_building_guid = 7) LocalObject(64, Door.Constructor(Vector3(2367.962f, 1950.428f, 92.94858f)), owning_building_guid = 7) LocalObject(308, Door.Constructor(Vector3(2354.811f, 1951.88f, 62.76457f)), owning_building_guid = 7) LocalObject(309, Door.Constructor(Vector3(2370.971f, 1949.031f, 62.76457f)), owning_building_guid = 7) - LocalObject(123, IFFLock.Constructor(Vector3(2351.052f, 1951.336f, 72.88957f), Vector3(0, 0, 280)), owning_building_guid = 7, door_guid = 61) - LocalObject(124, IFFLock.Constructor(Vector3(2351.052f, 1951.336f, 92.88957f), Vector3(0, 0, 280)), owning_building_guid = 7, door_guid = 62) - LocalObject(125, IFFLock.Constructor(Vector3(2369.116f, 1952.304f, 72.88957f), Vector3(0, 0, 100)), owning_building_guid = 7, door_guid = 63) - LocalObject(126, IFFLock.Constructor(Vector3(2369.116f, 1952.304f, 92.88957f), Vector3(0, 0, 100)), owning_building_guid = 7, door_guid = 64) + LocalObject( + 123, + IFFLock.Constructor(Vector3(2351.052f, 1951.336f, 72.88957f), Vector3(0, 0, 280)), + owning_building_guid = 7, + door_guid = 61 + ) + LocalObject( + 124, + IFFLock.Constructor(Vector3(2351.052f, 1951.336f, 92.88957f), Vector3(0, 0, 280)), + owning_building_guid = 7, + door_guid = 62 + ) + LocalObject( + 125, + IFFLock.Constructor(Vector3(2369.116f, 1952.304f, 72.88957f), Vector3(0, 0, 100)), + owning_building_guid = 7, + door_guid = 63 + ) + LocalObject( + 126, + IFFLock.Constructor(Vector3(2369.116f, 1952.304f, 92.88957f), Vector3(0, 0, 100)), + owning_building_guid = 7, + door_guid = 64 + ) LocalObject(169, Locker.Constructor(Vector3(2354.004f, 1956.699f, 61.42257f)), owning_building_guid = 7) LocalObject(170, Locker.Constructor(Vector3(2354.236f, 1958.015f, 61.42257f)), owning_building_guid = 7) LocalObject(171, Locker.Constructor(Vector3(2354.697f, 1960.628f, 61.42257f)), owning_building_guid = 7) @@ -264,25 +738,76 @@ object Map96 { // Nexus LocalObject(174, Locker.Constructor(Vector3(2375.77f, 1954.183f, 61.42257f)), owning_building_guid = 7) LocalObject(175, Locker.Constructor(Vector3(2376.237f, 1956.83f, 61.42257f)), owning_building_guid = 7) LocalObject(176, Locker.Constructor(Vector3(2376.48f, 1958.211f, 61.42257f)), owning_building_guid = 7) - LocalObject(220, Terminal.Constructor(Vector3(2360.509f, 1961.333f, 62.76057f), order_terminal), owning_building_guid = 7) - LocalObject(221, Terminal.Constructor(Vector3(2365.808f, 1960.399f, 62.76057f), order_terminal), owning_building_guid = 7) - LocalObject(222, Terminal.Constructor(Vector3(2371.445f, 1959.405f, 62.76057f), order_terminal), owning_building_guid = 7) - LocalObject(281, SpawnTube.Constructor(Vector3(2355.77f, 1951.264f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 280)), owning_building_guid = 7) - LocalObject(282, SpawnTube.Constructor(Vector3(2371.931f, 1948.415f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 280)), owning_building_guid = 7) - LocalObject(198, FacilityTurret.Constructor(Vector3(2349.419f, 1964.51f, 90.37057f), manned_turret), owning_building_guid = 7) + LocalObject( + 220, + Terminal.Constructor(Vector3(2360.509f, 1961.333f, 62.76057f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 221, + Terminal.Constructor(Vector3(2365.808f, 1960.399f, 62.76057f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 222, + Terminal.Constructor(Vector3(2371.445f, 1959.405f, 62.76057f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 281, + SpawnTube.Constructor(Vector3(2355.77f, 1951.264f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 280)), + owning_building_guid = 7 + ) + LocalObject( + 282, + SpawnTube.Constructor(Vector3(2371.931f, 1948.415f, 60.91058f), respawn_tube_tower, Vector3(0, 0, 280)), + owning_building_guid = 7 + ) + LocalObject( + 198, + FacilityTurret.Constructor(Vector3(2349.419f, 1964.51f, 90.37057f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(198, 5012) - LocalObject(199, FacilityTurret.Constructor(Vector3(2368.31f, 1925.306f, 90.37057f), manned_turret), owning_building_guid = 7) + LocalObject( + 199, + FacilityTurret.Constructor(Vector3(2368.31f, 1925.306f, 90.37057f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(199, 5013) - LocalObject(257, Painbox.Constructor(Vector3(2358.878f, 1956.995f, 61.52857f), painbox_radius_continuous), owning_building_guid = 7) - LocalObject(258, Painbox.Constructor(Vector3(2365.012f, 1944.079f, 62.92767f), painbox_radius_continuous), owning_building_guid = 7) - LocalObject(259, Painbox.Constructor(Vector3(2370.577f, 1955.019f, 61.52857f), painbox_radius_continuous), owning_building_guid = 7) + LocalObject( + 257, + Painbox.Constructor(Vector3(2358.878f, 1956.995f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 258, + Painbox.Constructor(Vector3(2365.012f, 1944.079f, 62.92767f), painbox_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 259, + Painbox.Constructor(Vector3(2370.577f, 1955.019f, 61.52857f), painbox_radius_continuous), + owning_building_guid = 7 + ) } Building6() def Building6(): Unit = { // Name: South_Gate_Tower Type: tower_b GUID: 8, MapID: 6 - LocalBuilding("South_Gate_Tower", 8, 6, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2242f, 1264f, 35.71276f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(287, CaptureTerminal.Constructor(Vector3(2258.587f, 1263.897f, 55.71176f), secondary_capture), owning_building_guid = 8) + LocalBuilding( + "South_Gate_Tower", + 8, + 6, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2242f, 1264f, 35.71276f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 287, + CaptureTerminal.Constructor(Vector3(2258.587f, 1263.897f, 55.71176f), secondary_capture), + owning_building_guid = 8 + ) LocalObject(55, Door.Constructor(Vector3(2254f, 1256f, 37.23276f)), owning_building_guid = 8) LocalObject(56, Door.Constructor(Vector3(2254f, 1256f, 47.23276f)), owning_building_guid = 8) LocalObject(57, Door.Constructor(Vector3(2254f, 1256f, 67.23276f)), owning_building_guid = 8) @@ -291,12 +816,42 @@ object Map96 { // Nexus LocalObject(60, Door.Constructor(Vector3(2254f, 1272f, 67.23276f)), owning_building_guid = 8) LocalObject(306, Door.Constructor(Vector3(2253.147f, 1252.794f, 27.04876f)), owning_building_guid = 8) LocalObject(307, Door.Constructor(Vector3(2253.147f, 1269.204f, 27.04876f)), owning_building_guid = 8) - LocalObject(117, IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 37.17376f), Vector3(0, 0, 0)), owning_building_guid = 8, door_guid = 58) - LocalObject(118, IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 47.17376f), Vector3(0, 0, 0)), owning_building_guid = 8, door_guid = 59) - LocalObject(119, IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 67.17376f), Vector3(0, 0, 0)), owning_building_guid = 8, door_guid = 60) - LocalObject(120, IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 37.17376f), Vector3(0, 0, 180)), owning_building_guid = 8, door_guid = 55) - LocalObject(121, IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 47.17376f), Vector3(0, 0, 180)), owning_building_guid = 8, door_guid = 56) - LocalObject(122, IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 67.17376f), Vector3(0, 0, 180)), owning_building_guid = 8, door_guid = 57) + LocalObject( + 117, + IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 37.17376f), Vector3(0, 0, 0)), + owning_building_guid = 8, + door_guid = 58 + ) + LocalObject( + 118, + IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 47.17376f), Vector3(0, 0, 0)), + owning_building_guid = 8, + door_guid = 59 + ) + LocalObject( + 119, + IFFLock.Constructor(Vector3(2251.957f, 1272.811f, 67.17376f), Vector3(0, 0, 0)), + owning_building_guid = 8, + door_guid = 60 + ) + LocalObject( + 120, + IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 37.17376f), Vector3(0, 0, 180)), + owning_building_guid = 8, + door_guid = 55 + ) + LocalObject( + 121, + IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 47.17376f), Vector3(0, 0, 180)), + owning_building_guid = 8, + door_guid = 56 + ) + LocalObject( + 122, + IFFLock.Constructor(Vector3(2256.047f, 1255.189f, 67.17376f), Vector3(0, 0, 180)), + owning_building_guid = 8, + door_guid = 57 + ) LocalObject(161, Locker.Constructor(Vector3(2257.716f, 1248.963f, 25.70676f)), owning_building_guid = 8) LocalObject(162, Locker.Constructor(Vector3(2257.751f, 1270.835f, 25.70676f)), owning_building_guid = 8) LocalObject(163, Locker.Constructor(Vector3(2259.053f, 1248.963f, 25.70676f)), owning_building_guid = 8) @@ -305,21 +860,64 @@ object Map96 { // Nexus LocalObject(166, Locker.Constructor(Vector3(2261.741f, 1270.835f, 25.70676f)), owning_building_guid = 8) LocalObject(167, Locker.Constructor(Vector3(2263.143f, 1248.963f, 25.70676f)), owning_building_guid = 8) LocalObject(168, Locker.Constructor(Vector3(2263.143f, 1270.835f, 25.70676f)), owning_building_guid = 8) - LocalObject(217, Terminal.Constructor(Vector3(2263.446f, 1254.129f, 27.04476f), order_terminal), owning_building_guid = 8) - LocalObject(218, Terminal.Constructor(Vector3(2263.446f, 1259.853f, 27.04476f), order_terminal), owning_building_guid = 8) - LocalObject(219, Terminal.Constructor(Vector3(2263.446f, 1265.234f, 27.04476f), order_terminal), owning_building_guid = 8) - LocalObject(279, SpawnTube.Constructor(Vector3(2252.706f, 1251.742f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 8) - LocalObject(280, SpawnTube.Constructor(Vector3(2252.706f, 1268.152f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 8) - LocalObject(254, Painbox.Constructor(Vector3(2247.493f, 1256.849f, 27.00216f), painbox_radius_continuous), owning_building_guid = 8) - LocalObject(255, Painbox.Constructor(Vector3(2259.127f, 1254.078f, 25.81276f), painbox_radius_continuous), owning_building_guid = 8) - LocalObject(256, Painbox.Constructor(Vector3(2259.259f, 1266.107f, 25.81276f), painbox_radius_continuous), owning_building_guid = 8) + LocalObject( + 217, + Terminal.Constructor(Vector3(2263.446f, 1254.129f, 27.04476f), order_terminal), + owning_building_guid = 8 + ) + LocalObject( + 218, + Terminal.Constructor(Vector3(2263.446f, 1259.853f, 27.04476f), order_terminal), + owning_building_guid = 8 + ) + LocalObject( + 219, + Terminal.Constructor(Vector3(2263.446f, 1265.234f, 27.04476f), order_terminal), + owning_building_guid = 8 + ) + LocalObject( + 279, + SpawnTube.Constructor(Vector3(2252.706f, 1251.742f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 8 + ) + LocalObject( + 280, + SpawnTube.Constructor(Vector3(2252.706f, 1268.152f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 8 + ) + LocalObject( + 254, + Painbox.Constructor(Vector3(2247.493f, 1256.849f, 27.00216f), painbox_radius_continuous), + owning_building_guid = 8 + ) + LocalObject( + 255, + Painbox.Constructor(Vector3(2259.127f, 1254.078f, 25.81276f), painbox_radius_continuous), + owning_building_guid = 8 + ) + LocalObject( + 256, + Painbox.Constructor(Vector3(2259.259f, 1266.107f, 25.81276f), painbox_radius_continuous), + owning_building_guid = 8 + ) } Building5() def Building5(): Unit = { // Name: North_Gate_Tower Type: tower_b GUID: 9, MapID: 5 - LocalBuilding("North_Gate_Tower", 9, 5, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2438f, 2486f, 35.71276f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(289, CaptureTerminal.Constructor(Vector3(2454.587f, 2485.897f, 55.71176f), secondary_capture), owning_building_guid = 9) + LocalBuilding( + "North_Gate_Tower", + 9, + 5, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2438f, 2486f, 35.71276f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 289, + CaptureTerminal.Constructor(Vector3(2454.587f, 2485.897f, 55.71176f), secondary_capture), + owning_building_guid = 9 + ) LocalObject(65, Door.Constructor(Vector3(2450f, 2478f, 37.23276f)), owning_building_guid = 9) LocalObject(66, Door.Constructor(Vector3(2450f, 2478f, 47.23276f)), owning_building_guid = 9) LocalObject(67, Door.Constructor(Vector3(2450f, 2478f, 67.23276f)), owning_building_guid = 9) @@ -328,12 +926,42 @@ object Map96 { // Nexus LocalObject(70, Door.Constructor(Vector3(2450f, 2494f, 67.23276f)), owning_building_guid = 9) LocalObject(310, Door.Constructor(Vector3(2449.147f, 2474.794f, 27.04876f)), owning_building_guid = 9) LocalObject(311, Door.Constructor(Vector3(2449.147f, 2491.204f, 27.04876f)), owning_building_guid = 9) - LocalObject(127, IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 37.17376f), Vector3(0, 0, 0)), owning_building_guid = 9, door_guid = 68) - LocalObject(128, IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 47.17376f), Vector3(0, 0, 0)), owning_building_guid = 9, door_guid = 69) - LocalObject(129, IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 67.17376f), Vector3(0, 0, 0)), owning_building_guid = 9, door_guid = 70) - LocalObject(130, IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 37.17376f), Vector3(0, 0, 180)), owning_building_guid = 9, door_guid = 65) - LocalObject(131, IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 47.17376f), Vector3(0, 0, 180)), owning_building_guid = 9, door_guid = 66) - LocalObject(132, IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 67.17376f), Vector3(0, 0, 180)), owning_building_guid = 9, door_guid = 67) + LocalObject( + 127, + IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 37.17376f), Vector3(0, 0, 0)), + owning_building_guid = 9, + door_guid = 68 + ) + LocalObject( + 128, + IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 47.17376f), Vector3(0, 0, 0)), + owning_building_guid = 9, + door_guid = 69 + ) + LocalObject( + 129, + IFFLock.Constructor(Vector3(2447.957f, 2494.811f, 67.17376f), Vector3(0, 0, 0)), + owning_building_guid = 9, + door_guid = 70 + ) + LocalObject( + 130, + IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 37.17376f), Vector3(0, 0, 180)), + owning_building_guid = 9, + door_guid = 65 + ) + LocalObject( + 131, + IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 47.17376f), Vector3(0, 0, 180)), + owning_building_guid = 9, + door_guid = 66 + ) + LocalObject( + 132, + IFFLock.Constructor(Vector3(2452.047f, 2477.189f, 67.17376f), Vector3(0, 0, 180)), + owning_building_guid = 9, + door_guid = 67 + ) LocalObject(177, Locker.Constructor(Vector3(2453.716f, 2470.963f, 25.70676f)), owning_building_guid = 9) LocalObject(178, Locker.Constructor(Vector3(2453.751f, 2492.835f, 25.70676f)), owning_building_guid = 9) LocalObject(179, Locker.Constructor(Vector3(2455.053f, 2470.963f, 25.70676f)), owning_building_guid = 9) @@ -342,26 +970,68 @@ object Map96 { // Nexus LocalObject(182, Locker.Constructor(Vector3(2457.741f, 2492.835f, 25.70676f)), owning_building_guid = 9) LocalObject(183, Locker.Constructor(Vector3(2459.143f, 2470.963f, 25.70676f)), owning_building_guid = 9) LocalObject(184, Locker.Constructor(Vector3(2459.143f, 2492.835f, 25.70676f)), owning_building_guid = 9) - LocalObject(223, Terminal.Constructor(Vector3(2459.446f, 2476.129f, 27.04476f), order_terminal), owning_building_guid = 9) - LocalObject(224, Terminal.Constructor(Vector3(2459.446f, 2481.853f, 27.04476f), order_terminal), owning_building_guid = 9) - LocalObject(225, Terminal.Constructor(Vector3(2459.446f, 2487.234f, 27.04476f), order_terminal), owning_building_guid = 9) - LocalObject(283, SpawnTube.Constructor(Vector3(2448.706f, 2473.742f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 9) - LocalObject(284, SpawnTube.Constructor(Vector3(2448.706f, 2490.152f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 9) - LocalObject(260, Painbox.Constructor(Vector3(2443.493f, 2478.849f, 27.00216f), painbox_radius_continuous), owning_building_guid = 9) - LocalObject(261, Painbox.Constructor(Vector3(2455.127f, 2476.078f, 25.81276f), painbox_radius_continuous), owning_building_guid = 9) - LocalObject(262, Painbox.Constructor(Vector3(2455.259f, 2488.107f, 25.81276f), painbox_radius_continuous), owning_building_guid = 9) + LocalObject( + 223, + Terminal.Constructor(Vector3(2459.446f, 2476.129f, 27.04476f), order_terminal), + owning_building_guid = 9 + ) + LocalObject( + 224, + Terminal.Constructor(Vector3(2459.446f, 2481.853f, 27.04476f), order_terminal), + owning_building_guid = 9 + ) + LocalObject( + 225, + Terminal.Constructor(Vector3(2459.446f, 2487.234f, 27.04476f), order_terminal), + owning_building_guid = 9 + ) + LocalObject( + 283, + SpawnTube.Constructor(Vector3(2448.706f, 2473.742f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 9 + ) + LocalObject( + 284, + SpawnTube.Constructor(Vector3(2448.706f, 2490.152f, 25.19476f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 9 + ) + LocalObject( + 260, + Painbox.Constructor(Vector3(2443.493f, 2478.849f, 27.00216f), painbox_radius_continuous), + owning_building_guid = 9 + ) + LocalObject( + 261, + Painbox.Constructor(Vector3(2455.127f, 2476.078f, 25.81276f), painbox_radius_continuous), + owning_building_guid = 9 + ) + LocalObject( + 262, + Painbox.Constructor(Vector3(2455.259f, 2488.107f, 25.81276f), painbox_radius_continuous), + owning_building_guid = 9 + ) } Building10001() def Building10001(): Unit = { // Name: Map96_Gate_Two Type: warpgate_small GUID: 10, MapID: 10001 - LocalBuilding("Map96_Gate_Two", 10, 10001, FoundationBuilder(WarpGate.Structure(Vector3(2407.71f, 2727.84f, 35.71f)))) + LocalBuilding( + "Map96_Gate_Two", + 10, + 10001, + FoundationBuilder(WarpGate.Structure(Vector3(2407.71f, 2727.84f, 35.71f))) + ) } Building10002() def Building10002(): Unit = { // Name: Map96_Gate_One Type: warpgate_small GUID: 11, MapID: 10002 - LocalBuilding("Map96_Gate_One", 11, 10002, FoundationBuilder(WarpGate.Structure(Vector3(2784.82f, 1348.42f, 33.91f)))) + LocalBuilding( + "Map96_Gate_One", + 11, + 10002, + FoundationBuilder(WarpGate.Structure(Vector3(2784.82f, 1348.42f, 33.91f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map97.scala b/pslogin/src/main/scala/zonemaps/Map97.scala index 38a78d30..004becdd 100644 --- a/pslogin/src/main/scala/zonemaps/Map97.scala +++ b/pslogin/src/main/scala/zonemaps/Map97.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -23,29 +23,66 @@ object Map97 { // Desolation Building11() def Building11(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 1, MapID: 11 - LocalBuilding("bunker_lg", 1, 11, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1998f, 2010f, 40.46144f), Vector3(0f, 0f, 262f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 1, + 11, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1998f, 2010f, 40.46144f), Vector3(0f, 0f, 262f), bunker_lg) + ) + ) LocalObject(94, Door.Constructor(Vector3(2000.169f, 2007.063f, 41.98244f)), owning_building_guid = 1) } Building12() def Building12(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 2, MapID: 12 - LocalBuilding("bunker_lg", 2, 12, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2108f, 2054f, 34.09833f), Vector3(0f, 0f, 169f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 2, + 12, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2108f, 2054f, 34.09833f), Vector3(0f, 0f, 169f), bunker_lg) + ) + ) LocalObject(101, Door.Constructor(Vector3(2104.954f, 2051.987f, 35.61933f)), owning_building_guid = 2) } Building13() def Building13(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 3, MapID: 13 - LocalBuilding("bunker_lg", 3, 13, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2114f, 1938f, 38.48689f), Vector3(0f, 0f, 63f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 3, + 13, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2114f, 1938f, 38.48689f), Vector3(0f, 0f, 63f), bunker_lg) + ) + ) LocalObject(102, Door.Constructor(Vector3(2112.905f, 1941.483f, 40.00789f)), owning_building_guid = 3) } Building1() def Building1(): Unit = { // Name: Red_Base_97 Type: tech_plant GUID: 4, MapID: 1 - LocalBuilding("Red_Base_97", 4, 1, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1538f, 2250f, 30.22248f), Vector3(0f, 0f, 235f), tech_plant))) - LocalObject(57, CaptureTerminal.Constructor(Vector3(1499.169f, 2271.411f, 45.32248f), capture_terminal), owning_building_guid = 4) + LocalBuilding( + "Red_Base_97", + 4, + 1, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1538f, 2250f, 30.22248f), + Vector3(0f, 0f, 235f), + tech_plant + ) + ) + ) + LocalObject( + 57, + CaptureTerminal.Constructor(Vector3(1499.169f, 2271.411f, 45.32248f), capture_terminal), + owning_building_guid = 4 + ) LocalObject(71, Door.Constructor(Vector3(1460.654f, 2298.537f, 31.87348f)), owning_building_guid = 4) LocalObject(74, Door.Constructor(Vector3(1471.089f, 2313.44f, 39.83648f)), owning_building_guid = 4) LocalObject(75, Door.Constructor(Vector3(1479.028f, 2340.124f, 31.84348f)), owning_building_guid = 4) @@ -84,16 +121,66 @@ object Map97 { // Desolation LocalObject(658, Door.Constructor(Vector3(1496.108f, 2263.862f, 24.67648f)), owning_building_guid = 4) LocalObject(659, Door.Constructor(Vector3(1502.082f, 2259.679f, 24.67648f)), owning_building_guid = 4) LocalObject(660, Door.Constructor(Vector3(1508.053f, 2255.498f, 24.67648f)), owning_building_guid = 4) - LocalObject(210, IFFLock.Constructor(Vector3(1473.487f, 2242.243f, 31.80248f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 204) - LocalObject(213, IFFLock.Constructor(Vector3(1597.21f, 2260.721f, 31.91048f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 141) - LocalObject(220, IFFLock.Constructor(Vector3(1477.819f, 2341.964f, 31.77448f), Vector3(0, 0, 35)), owning_building_guid = 4, door_guid = 75) - LocalObject(221, IFFLock.Constructor(Vector3(1482.854f, 2250.696f, 16.65848f), Vector3(0, 0, 35)), owning_building_guid = 4, door_guid = 149) - LocalObject(222, IFFLock.Constructor(Vector3(1485.644f, 2260.326f, 24.15848f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 151) - LocalObject(223, IFFLock.Constructor(Vector3(1493.867f, 2257.102f, 46.76848f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 78) - LocalObject(224, IFFLock.Constructor(Vector3(1507.159f, 2235.494f, 16.65848f), Vector3(0, 0, 305)), owning_building_guid = 4, door_guid = 158) - LocalObject(225, IFFLock.Constructor(Vector3(1508.434f, 2248.206f, 24.15848f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 154) - LocalObject(226, IFFLock.Constructor(Vector3(1509.2f, 2276.968f, 46.65848f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 156) - LocalObject(227, IFFLock.Constructor(Vector3(1514.567f, 2255.966f, 46.76848f), Vector3(0, 0, 125)), owning_building_guid = 4, door_guid = 79) + LocalObject( + 210, + IFFLock.Constructor(Vector3(1473.487f, 2242.243f, 31.80248f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 204 + ) + LocalObject( + 213, + IFFLock.Constructor(Vector3(1597.21f, 2260.721f, 31.91048f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 141 + ) + LocalObject( + 220, + IFFLock.Constructor(Vector3(1477.819f, 2341.964f, 31.77448f), Vector3(0, 0, 35)), + owning_building_guid = 4, + door_guid = 75 + ) + LocalObject( + 221, + IFFLock.Constructor(Vector3(1482.854f, 2250.696f, 16.65848f), Vector3(0, 0, 35)), + owning_building_guid = 4, + door_guid = 149 + ) + LocalObject( + 222, + IFFLock.Constructor(Vector3(1485.644f, 2260.326f, 24.15848f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 151 + ) + LocalObject( + 223, + IFFLock.Constructor(Vector3(1493.867f, 2257.102f, 46.76848f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 78 + ) + LocalObject( + 224, + IFFLock.Constructor(Vector3(1507.159f, 2235.494f, 16.65848f), Vector3(0, 0, 305)), + owning_building_guid = 4, + door_guid = 158 + ) + LocalObject( + 225, + IFFLock.Constructor(Vector3(1508.434f, 2248.206f, 24.15848f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 154 + ) + LocalObject( + 226, + IFFLock.Constructor(Vector3(1509.2f, 2276.968f, 46.65848f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 156 + ) + LocalObject( + 227, + IFFLock.Constructor(Vector3(1514.567f, 2255.966f, 46.76848f), Vector3(0, 0, 125)), + owning_building_guid = 4, + door_guid = 79 + ) LocalObject(278, Locker.Constructor(Vector3(1484.935f, 2254.168f, 23.08348f)), owning_building_guid = 4) LocalObject(279, Locker.Constructor(Vector3(1485.594f, 2255.109f, 23.08348f)), owning_building_guid = 4) LocalObject(280, Locker.Constructor(Vector3(1486.252f, 2256.048f, 23.08348f)), owning_building_guid = 4) @@ -106,63 +193,262 @@ object Map97 { // Desolation LocalObject(287, Locker.Constructor(Vector3(1495.699f, 2234.629f, 15.32248f)), owning_building_guid = 4) LocalObject(288, Locker.Constructor(Vector3(1496.465f, 2235.724f, 15.32248f)), owning_building_guid = 4) LocalObject(289, Locker.Constructor(Vector3(1497.224f, 2236.808f, 15.32248f)), owning_building_guid = 4) - LocalObject(42, Terminal.Constructor(Vector3(1508.112f, 2250.656f, 45.92548f), air_vehicle_terminal), owning_building_guid = 4) - LocalObject(395, VehicleSpawnPad.Constructor(Vector3(1522.493f, 2235.115f, 42.80048f), mb_pad_creation, Vector3(0, 0, 125)), owning_building_guid = 4, terminal_guid = 42) - LocalObject(43, Terminal.Constructor(Vector3(1514.956f, 2260.431f, 45.92548f), air_vehicle_terminal), owning_building_guid = 4) - LocalObject(396, VehicleSpawnPad.Constructor(Vector3(1534.548f, 2252.332f, 42.80048f), mb_pad_creation, Vector3(0, 0, 125)), owning_building_guid = 4, terminal_guid = 43) - LocalObject(413, Terminal.Constructor(Vector3(1489.461f, 2251.449f, 24.41248f), order_terminal), owning_building_guid = 4) - LocalObject(414, Terminal.Constructor(Vector3(1492.517f, 2249.309f, 24.41248f), order_terminal), owning_building_guid = 4) - LocalObject(415, Terminal.Constructor(Vector3(1495.621f, 2247.136f, 24.41248f), order_terminal), owning_building_guid = 4) - LocalObject(416, Terminal.Constructor(Vector3(1514.527f, 2262.703f, 36.65248f), order_terminal), owning_building_guid = 4) - LocalObject(635, Terminal.Constructor(Vector3(1473.645f, 2324.432f, 24.37948f), spawn_terminal), owning_building_guid = 4) - LocalObject(636, Terminal.Constructor(Vector3(1493.897f, 2265.046f, 24.95648f), spawn_terminal), owning_building_guid = 4) - LocalObject(637, Terminal.Constructor(Vector3(1494.609f, 2270.687f, 16.87948f), spawn_terminal), owning_building_guid = 4) - LocalObject(638, Terminal.Constructor(Vector3(1499.873f, 2260.867f, 24.95648f), spawn_terminal), owning_building_guid = 4) - LocalObject(639, Terminal.Constructor(Vector3(1499.96f, 2231.172f, 36.90448f), spawn_terminal), owning_building_guid = 4) - LocalObject(640, Terminal.Constructor(Vector3(1505.841f, 2256.685f, 24.95648f), spawn_terminal), owning_building_guid = 4) - LocalObject(641, Terminal.Constructor(Vector3(1532.298f, 2236.252f, 42.24548f), spawn_terminal), owning_building_guid = 4) - LocalObject(697, Terminal.Constructor(Vector3(1532.295f, 2312.597f, 16.03648f), ground_vehicle_terminal), owning_building_guid = 4) - LocalObject(397, VehicleSpawnPad.Constructor(Vector3(1541.266f, 2306.377f, 7.759481f), mb_pad_creation, Vector3(0, 0, 125)), owning_building_guid = 4, terminal_guid = 697) + LocalObject( + 42, + Terminal.Constructor(Vector3(1508.112f, 2250.656f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 4 + ) + LocalObject( + 395, + VehicleSpawnPad.Constructor(Vector3(1522.493f, 2235.115f, 42.80048f), mb_pad_creation, Vector3(0, 0, 125)), + owning_building_guid = 4, + terminal_guid = 42 + ) + LocalObject( + 43, + Terminal.Constructor(Vector3(1514.956f, 2260.431f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 4 + ) + LocalObject( + 396, + VehicleSpawnPad.Constructor(Vector3(1534.548f, 2252.332f, 42.80048f), mb_pad_creation, Vector3(0, 0, 125)), + owning_building_guid = 4, + terminal_guid = 43 + ) + LocalObject( + 413, + Terminal.Constructor(Vector3(1489.461f, 2251.449f, 24.41248f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 414, + Terminal.Constructor(Vector3(1492.517f, 2249.309f, 24.41248f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 415, + Terminal.Constructor(Vector3(1495.621f, 2247.136f, 24.41248f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 416, + Terminal.Constructor(Vector3(1514.527f, 2262.703f, 36.65248f), order_terminal), + owning_building_guid = 4 + ) + LocalObject( + 635, + Terminal.Constructor(Vector3(1473.645f, 2324.432f, 24.37948f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 636, + Terminal.Constructor(Vector3(1493.897f, 2265.046f, 24.95648f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 637, + Terminal.Constructor(Vector3(1494.609f, 2270.687f, 16.87948f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 638, + Terminal.Constructor(Vector3(1499.873f, 2260.867f, 24.95648f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 639, + Terminal.Constructor(Vector3(1499.96f, 2231.172f, 36.90448f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 640, + Terminal.Constructor(Vector3(1505.841f, 2256.685f, 24.95648f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 641, + Terminal.Constructor(Vector3(1532.298f, 2236.252f, 42.24548f), spawn_terminal), + owning_building_guid = 4 + ) + LocalObject( + 697, + Terminal.Constructor(Vector3(1532.295f, 2312.597f, 16.03648f), ground_vehicle_terminal), + owning_building_guid = 4 + ) + LocalObject( + 397, + VehicleSpawnPad.Constructor(Vector3(1541.266f, 2306.377f, 7.759481f), mb_pad_creation, Vector3(0, 0, 125)), + owning_building_guid = 4, + terminal_guid = 697 + ) LocalObject(602, ResourceSilo.Constructor(Vector3(1529.248f, 2180.743f, 37.23048f)), owning_building_guid = 4) - LocalObject(607, SpawnTube.Constructor(Vector3(1495.5f, 2264.825f, 22.82248f), Vector3(0, 0, 125)), owning_building_guid = 4) - LocalObject(608, SpawnTube.Constructor(Vector3(1501.473f, 2260.643f, 22.82248f), Vector3(0, 0, 125)), owning_building_guid = 4) - LocalObject(609, SpawnTube.Constructor(Vector3(1507.443f, 2256.463f, 22.82248f), Vector3(0, 0, 125)), owning_building_guid = 4) - LocalObject(404, ProximityTerminal.Constructor(Vector3(1493.193f, 2232.001f, 15.32248f), medical_terminal), owning_building_guid = 4) - LocalObject(405, ProximityTerminal.Constructor(Vector3(1505.856f, 2268.773f, 35.31948f), medical_terminal), owning_building_guid = 4) - LocalObject(467, ProximityTerminal.Constructor(Vector3(1456.698f, 2275.757f, 38.43048f), pad_landing_frame), owning_building_guid = 4) - LocalObject(468, Terminal.Constructor(Vector3(1456.698f, 2275.757f, 38.43048f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(470, ProximityTerminal.Constructor(Vector3(1467.923f, 2223.396f, 40.87448f), pad_landing_frame), owning_building_guid = 4) - LocalObject(471, Terminal.Constructor(Vector3(1467.923f, 2223.396f, 40.87448f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(473, ProximityTerminal.Constructor(Vector3(1477.622f, 2208.923f, 38.43048f), pad_landing_frame), owning_building_guid = 4) - LocalObject(474, Terminal.Constructor(Vector3(1477.622f, 2208.923f, 38.43048f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(476, ProximityTerminal.Constructor(Vector3(1479.764f, 2279.328f, 45.66948f), pad_landing_frame), owning_building_guid = 4) - LocalObject(477, Terminal.Constructor(Vector3(1479.764f, 2279.328f, 45.66948f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(479, ProximityTerminal.Constructor(Vector3(1553.221f, 2314.171f, 38.41748f), pad_landing_frame), owning_building_guid = 4) - LocalObject(480, Terminal.Constructor(Vector3(1553.221f, 2314.171f, 38.41748f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(482, ProximityTerminal.Constructor(Vector3(1554.838f, 2288.286f, 40.77248f), pad_landing_frame), owning_building_guid = 4) - LocalObject(483, Terminal.Constructor(Vector3(1554.838f, 2288.286f, 40.77248f), air_rearm_terminal), owning_building_guid = 4) - LocalObject(578, ProximityTerminal.Constructor(Vector3(1428.356f, 2255.191f, 29.97248f), repair_silo), owning_building_guid = 4) - LocalObject(579, Terminal.Constructor(Vector3(1428.356f, 2255.191f, 29.97248f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(582, ProximityTerminal.Constructor(Vector3(1571.93f, 2225.865f, 29.95098f), repair_silo), owning_building_guid = 4) - LocalObject(583, Terminal.Constructor(Vector3(1571.93f, 2225.865f, 29.95098f), ground_rearm_terminal), owning_building_guid = 4) - LocalObject(365, FacilityTurret.Constructor(Vector3(1407.207f, 2236.408f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 607, + SpawnTube.Constructor(Vector3(1495.5f, 2264.825f, 22.82248f), Vector3(0, 0, 125)), + owning_building_guid = 4 + ) + LocalObject( + 608, + SpawnTube.Constructor(Vector3(1501.473f, 2260.643f, 22.82248f), Vector3(0, 0, 125)), + owning_building_guid = 4 + ) + LocalObject( + 609, + SpawnTube.Constructor(Vector3(1507.443f, 2256.463f, 22.82248f), Vector3(0, 0, 125)), + owning_building_guid = 4 + ) + LocalObject( + 404, + ProximityTerminal.Constructor(Vector3(1493.193f, 2232.001f, 15.32248f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 405, + ProximityTerminal.Constructor(Vector3(1505.856f, 2268.773f, 35.31948f), medical_terminal), + owning_building_guid = 4 + ) + LocalObject( + 467, + ProximityTerminal.Constructor(Vector3(1456.698f, 2275.757f, 38.43048f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 468, + Terminal.Constructor(Vector3(1456.698f, 2275.757f, 38.43048f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 470, + ProximityTerminal.Constructor(Vector3(1467.923f, 2223.396f, 40.87448f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 471, + Terminal.Constructor(Vector3(1467.923f, 2223.396f, 40.87448f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 473, + ProximityTerminal.Constructor(Vector3(1477.622f, 2208.923f, 38.43048f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 474, + Terminal.Constructor(Vector3(1477.622f, 2208.923f, 38.43048f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 476, + ProximityTerminal.Constructor(Vector3(1479.764f, 2279.328f, 45.66948f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 477, + Terminal.Constructor(Vector3(1479.764f, 2279.328f, 45.66948f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 479, + ProximityTerminal.Constructor(Vector3(1553.221f, 2314.171f, 38.41748f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 480, + Terminal.Constructor(Vector3(1553.221f, 2314.171f, 38.41748f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 482, + ProximityTerminal.Constructor(Vector3(1554.838f, 2288.286f, 40.77248f), pad_landing_frame), + owning_building_guid = 4 + ) + LocalObject( + 483, + Terminal.Constructor(Vector3(1554.838f, 2288.286f, 40.77248f), air_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 578, + ProximityTerminal.Constructor(Vector3(1428.356f, 2255.191f, 29.97248f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 579, + Terminal.Constructor(Vector3(1428.356f, 2255.191f, 29.97248f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 582, + ProximityTerminal.Constructor(Vector3(1571.93f, 2225.865f, 29.95098f), repair_silo), + owning_building_guid = 4 + ) + LocalObject( + 583, + Terminal.Constructor(Vector3(1571.93f, 2225.865f, 29.95098f), ground_rearm_terminal), + owning_building_guid = 4 + ) + LocalObject( + 365, + FacilityTurret.Constructor(Vector3(1407.207f, 2236.408f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(365, 5000) - LocalObject(367, FacilityTurret.Constructor(Vector3(1455.828f, 2192.93f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 367, + FacilityTurret.Constructor(Vector3(1455.828f, 2192.93f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(367, 5001) - LocalObject(369, FacilityTurret.Constructor(Vector3(1501.705f, 2371.351f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 369, + FacilityTurret.Constructor(Vector3(1501.705f, 2371.351f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(369, 5002) - LocalObject(370, FacilityTurret.Constructor(Vector3(1520.038f, 2157.403f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 370, + FacilityTurret.Constructor(Vector3(1520.038f, 2157.403f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(370, 5003) - LocalObject(371, FacilityTurret.Constructor(Vector3(1615.765f, 2188.711f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 371, + FacilityTurret.Constructor(Vector3(1615.765f, 2188.711f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(371, 5004) - LocalObject(373, FacilityTurret.Constructor(Vector3(1667.212f, 2262.185f, 38.72148f), manned_turret), owning_building_guid = 4) + LocalObject( + 373, + FacilityTurret.Constructor(Vector3(1667.212f, 2262.185f, 38.72148f), manned_turret), + owning_building_guid = 4 + ) TurretToWeapon(373, 5005) LocalObject(539, Painbox.Constructor(Vector3(1520.13f, 2231.093f, 18.79578f), painbox), owning_building_guid = 4) - LocalObject(542, Painbox.Constructor(Vector3(1495.916f, 2254.036f, 27.09238f), painbox_continuous), owning_building_guid = 4) - LocalObject(545, Painbox.Constructor(Vector3(1506.934f, 2237.938f, 18.48188f), painbox_door_radius), owning_building_guid = 4) - LocalObject(548, Painbox.Constructor(Vector3(1486.353f, 2262.927f, 24.95038f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(549, Painbox.Constructor(Vector3(1493.449f, 2237.685f, 26.40478f), painbox_door_radius_continuous), owning_building_guid = 4) - LocalObject(550, Painbox.Constructor(Vector3(1508.398f, 2246.482f, 25.49868f), painbox_door_radius_continuous), owning_building_guid = 4) + LocalObject( + 542, + Painbox.Constructor(Vector3(1495.916f, 2254.036f, 27.09238f), painbox_continuous), + owning_building_guid = 4 + ) + LocalObject( + 545, + Painbox.Constructor(Vector3(1506.934f, 2237.938f, 18.48188f), painbox_door_radius), + owning_building_guid = 4 + ) + LocalObject( + 548, + Painbox.Constructor(Vector3(1486.353f, 2262.927f, 24.95038f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 549, + Painbox.Constructor(Vector3(1493.449f, 2237.685f, 26.40478f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) + LocalObject( + 550, + Painbox.Constructor(Vector3(1508.398f, 2246.482f, 25.49868f), painbox_door_radius_continuous), + owning_building_guid = 4 + ) LocalObject(66, Generator.Constructor(Vector3(1521.59f, 2227.339f, 14.02848f)), owning_building_guid = 4) LocalObject(63, Terminal.Constructor(Vector3(1514.852f, 2232f, 15.32248f), gen_control), owning_building_guid = 4) } @@ -170,8 +456,19 @@ object Map97 { // Desolation Building3() def Building3(): Unit = { // Name: Indigo_Base_97 Type: tech_plant GUID: 7, MapID: 3 - LocalBuilding("Indigo_Base_97", 7, 3, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2446f, 1546f, 30.22248f), Vector3(0f, 0f, 38f), tech_plant))) - LocalObject(58, CaptureTerminal.Constructor(Vector3(2476.875f, 1514.172f, 45.32248f), capture_terminal), owning_building_guid = 7) + LocalBuilding( + "Indigo_Base_97", + 7, + 3, + FoundationBuilder( + Building.Structure(StructureType.Facility, Vector3(2446f, 1546f, 30.22248f), Vector3(0f, 0f, 38f), tech_plant) + ) + ) + LocalObject( + 58, + CaptureTerminal.Constructor(Vector3(2476.875f, 1514.172f, 45.32248f), capture_terminal), + owning_building_guid = 7 + ) LocalObject(103, Door.Constructor(Vector3(2376.227f, 1519.235f, 39.72748f)), owning_building_guid = 7) LocalObject(104, Door.Constructor(Vector3(2387.427f, 1504.899f, 31.76448f)), owning_building_guid = 7) LocalObject(105, Door.Constructor(Vector3(2421.629f, 1461.124f, 39.72748f)), owning_building_guid = 7) @@ -210,16 +507,66 @@ object Map97 { // Desolation LocalObject(667, Door.Constructor(Vector3(2473.031f, 1531.986f, 24.67648f)), owning_building_guid = 7) LocalObject(668, Door.Constructor(Vector3(2477.519f, 1526.242f, 24.67648f)), owning_building_guid = 7) LocalObject(669, Door.Constructor(Vector3(2482.009f, 1520.495f, 24.67648f)), owning_building_guid = 7) - LocalObject(211, IFFLock.Constructor(Vector3(2509.962f, 1534.556f, 31.80248f), Vector3(0, 0, 142)), owning_building_guid = 7, door_guid = 205) - LocalObject(214, IFFLock.Constructor(Vector3(2386.242f, 1553.059f, 31.91048f), Vector3(0, 0, 322)), owning_building_guid = 7, door_guid = 142) - LocalObject(242, IFFLock.Constructor(Vector3(2465.657f, 1511.79f, 46.65848f), Vector3(0, 0, 322)), owning_building_guid = 7, door_guid = 175) - LocalObject(243, IFFLock.Constructor(Vector3(2466.665f, 1533.444f, 46.76848f), Vector3(0, 0, 322)), owning_building_guid = 7, door_guid = 110) - LocalObject(244, IFFLock.Constructor(Vector3(2474.799f, 1539.071f, 24.15848f), Vector3(0, 0, 322)), owning_building_guid = 7, door_guid = 177) - LocalObject(245, IFFLock.Constructor(Vector3(2476.664f, 1440.459f, 31.77448f), Vector3(0, 0, 232)), owning_building_guid = 7, door_guid = 112) - LocalObject(246, IFFLock.Constructor(Vector3(2479.734f, 1550.855f, 16.65848f), Vector3(0, 0, 142)), owning_building_guid = 7, door_guid = 178) - LocalObject(247, IFFLock.Constructor(Vector3(2486.128f, 1526.305f, 46.76848f), Vector3(0, 0, 142)), owning_building_guid = 7, door_guid = 114) - LocalObject(248, IFFLock.Constructor(Vector3(2493.049f, 1520.818f, 24.15848f), Vector3(0, 0, 142)), owning_building_guid = 7, door_guid = 182) - LocalObject(249, IFFLock.Constructor(Vector3(2498.533f, 1529.211f, 16.65848f), Vector3(0, 0, 232)), owning_building_guid = 7, door_guid = 184) + LocalObject( + 211, + IFFLock.Constructor(Vector3(2509.962f, 1534.556f, 31.80248f), Vector3(0, 0, 142)), + owning_building_guid = 7, + door_guid = 205 + ) + LocalObject( + 214, + IFFLock.Constructor(Vector3(2386.242f, 1553.059f, 31.91048f), Vector3(0, 0, 322)), + owning_building_guid = 7, + door_guid = 142 + ) + LocalObject( + 242, + IFFLock.Constructor(Vector3(2465.657f, 1511.79f, 46.65848f), Vector3(0, 0, 322)), + owning_building_guid = 7, + door_guid = 175 + ) + LocalObject( + 243, + IFFLock.Constructor(Vector3(2466.665f, 1533.444f, 46.76848f), Vector3(0, 0, 322)), + owning_building_guid = 7, + door_guid = 110 + ) + LocalObject( + 244, + IFFLock.Constructor(Vector3(2474.799f, 1539.071f, 24.15848f), Vector3(0, 0, 322)), + owning_building_guid = 7, + door_guid = 177 + ) + LocalObject( + 245, + IFFLock.Constructor(Vector3(2476.664f, 1440.459f, 31.77448f), Vector3(0, 0, 232)), + owning_building_guid = 7, + door_guid = 112 + ) + LocalObject( + 246, + IFFLock.Constructor(Vector3(2479.734f, 1550.855f, 16.65848f), Vector3(0, 0, 142)), + owning_building_guid = 7, + door_guid = 178 + ) + LocalObject( + 247, + IFFLock.Constructor(Vector3(2486.128f, 1526.305f, 46.76848f), Vector3(0, 0, 142)), + owning_building_guid = 7, + door_guid = 114 + ) + LocalObject( + 248, + IFFLock.Constructor(Vector3(2493.049f, 1520.818f, 24.15848f), Vector3(0, 0, 142)), + owning_building_guid = 7, + door_guid = 182 + ) + LocalObject( + 249, + IFFLock.Constructor(Vector3(2498.533f, 1529.211f, 16.65848f), Vector3(0, 0, 232)), + owning_building_guid = 7, + door_guid = 184 + ) LocalObject(314, Locker.Constructor(Vector3(2488.851f, 1546.694f, 15.32248f)), owning_building_guid = 7) LocalObject(315, Locker.Constructor(Vector3(2489.894f, 1547.509f, 15.32248f)), owning_building_guid = 7) LocalObject(316, Locker.Constructor(Vector3(2490.947f, 1548.331f, 15.32248f)), owning_building_guid = 7) @@ -232,72 +579,291 @@ object Map97 { // Desolation LocalObject(323, Locker.Constructor(Vector3(2496.622f, 1552.765f, 15.32248f)), owning_building_guid = 7) LocalObject(324, Locker.Constructor(Vector3(2497.674f, 1553.587f, 15.32248f)), owning_building_guid = 7) LocalObject(325, Locker.Constructor(Vector3(2498.728f, 1554.41f, 15.32248f)), owning_building_guid = 7) - LocalObject(44, Terminal.Constructor(Vector3(2464.987f, 1529.288f, 45.92548f), air_vehicle_terminal), owning_building_guid = 7) - LocalObject(399, VehicleSpawnPad.Constructor(Vector3(2448.619f, 1542.761f, 42.80048f), mb_pad_creation, Vector3(0, 0, -38)), owning_building_guid = 7, terminal_guid = 44) - LocalObject(45, Terminal.Constructor(Vector3(2474.39f, 1536.634f, 45.92548f), air_vehicle_terminal), owning_building_guid = 7) - LocalObject(400, VehicleSpawnPad.Constructor(Vector3(2465.182f, 1555.701f, 42.80048f), mb_pad_creation, Vector3(0, 0, -38)), owning_building_guid = 7, terminal_guid = 45) - LocalObject(426, Terminal.Constructor(Vector3(2464.733f, 1526.989f, 36.65248f), order_terminal), owning_building_guid = 7) - LocalObject(427, Terminal.Constructor(Vector3(2487.365f, 1536.349f, 24.41248f), order_terminal), owning_building_guid = 7) - LocalObject(428, Terminal.Constructor(Vector3(2489.698f, 1533.363f, 24.41248f), order_terminal), owning_building_guid = 7) - LocalObject(429, Terminal.Constructor(Vector3(2491.995f, 1530.423f, 24.41248f), order_terminal), owning_building_guid = 7) - LocalObject(642, Terminal.Constructor(Vector3(2455.472f, 1557.48f, 42.24548f), spawn_terminal), owning_building_guid = 7) - LocalObject(643, Terminal.Constructor(Vector3(2474.799f, 1530.205f, 24.95648f), spawn_terminal), owning_building_guid = 7) - LocalObject(644, Terminal.Constructor(Vector3(2479.284f, 1524.46f, 24.95648f), spawn_terminal), owning_building_guid = 7) - LocalObject(645, Terminal.Constructor(Vector3(2481.446f, 1513.531f, 16.87948f), spawn_terminal), owning_building_guid = 7) - LocalObject(646, Terminal.Constructor(Vector3(2483.776f, 1518.717f, 24.95648f), spawn_terminal), owning_building_guid = 7) - LocalObject(647, Terminal.Constructor(Vector3(2485.782f, 1456.005f, 24.37948f), spawn_terminal), owning_building_guid = 7) - LocalObject(648, Terminal.Constructor(Vector3(2487.883f, 1552.884f, 36.90448f), spawn_terminal), owning_building_guid = 7) - LocalObject(698, Terminal.Constructor(Vector3(2433.154f, 1484.471f, 16.03648f), ground_vehicle_terminal), owning_building_guid = 7) - LocalObject(398, VehicleSpawnPad.Constructor(Vector3(2426.393f, 1493.041f, 7.759481f), mb_pad_creation, Vector3(0, 0, -38)), owning_building_guid = 7, terminal_guid = 698) + LocalObject( + 44, + Terminal.Constructor(Vector3(2464.987f, 1529.288f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 7 + ) + LocalObject( + 399, + VehicleSpawnPad.Constructor(Vector3(2448.619f, 1542.761f, 42.80048f), mb_pad_creation, Vector3(0, 0, -38)), + owning_building_guid = 7, + terminal_guid = 44 + ) + LocalObject( + 45, + Terminal.Constructor(Vector3(2474.39f, 1536.634f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 7 + ) + LocalObject( + 400, + VehicleSpawnPad.Constructor(Vector3(2465.182f, 1555.701f, 42.80048f), mb_pad_creation, Vector3(0, 0, -38)), + owning_building_guid = 7, + terminal_guid = 45 + ) + LocalObject( + 426, + Terminal.Constructor(Vector3(2464.733f, 1526.989f, 36.65248f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 427, + Terminal.Constructor(Vector3(2487.365f, 1536.349f, 24.41248f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 428, + Terminal.Constructor(Vector3(2489.698f, 1533.363f, 24.41248f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 429, + Terminal.Constructor(Vector3(2491.995f, 1530.423f, 24.41248f), order_terminal), + owning_building_guid = 7 + ) + LocalObject( + 642, + Terminal.Constructor(Vector3(2455.472f, 1557.48f, 42.24548f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 643, + Terminal.Constructor(Vector3(2474.799f, 1530.205f, 24.95648f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 644, + Terminal.Constructor(Vector3(2479.284f, 1524.46f, 24.95648f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 645, + Terminal.Constructor(Vector3(2481.446f, 1513.531f, 16.87948f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 646, + Terminal.Constructor(Vector3(2483.776f, 1518.717f, 24.95648f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 647, + Terminal.Constructor(Vector3(2485.782f, 1456.005f, 24.37948f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 648, + Terminal.Constructor(Vector3(2487.883f, 1552.884f, 36.90448f), spawn_terminal), + owning_building_guid = 7 + ) + LocalObject( + 698, + Terminal.Constructor(Vector3(2433.154f, 1484.471f, 16.03648f), ground_vehicle_terminal), + owning_building_guid = 7 + ) + LocalObject( + 398, + VehicleSpawnPad.Constructor(Vector3(2426.393f, 1493.041f, 7.759481f), mb_pad_creation, Vector3(0, 0, -38)), + owning_building_guid = 7, + terminal_guid = 698 + ) LocalObject(604, ResourceSilo.Constructor(Vector3(2474.618f, 1609.672f, 37.23048f)), owning_building_guid = 7) - LocalObject(616, SpawnTube.Constructor(Vector3(2473.333f, 1530.885f, 22.82248f), Vector3(0, 0, 322)), owning_building_guid = 7) - LocalObject(617, SpawnTube.Constructor(Vector3(2477.82f, 1525.143f, 22.82248f), Vector3(0, 0, 322)), owning_building_guid = 7) - LocalObject(618, SpawnTube.Constructor(Vector3(2482.308f, 1519.397f, 22.82248f), Vector3(0, 0, 322)), owning_building_guid = 7) - LocalObject(406, ProximityTerminal.Constructor(Vector3(2471.251f, 1518.649f, 35.31948f), medical_terminal), owning_building_guid = 7) - LocalObject(407, ProximityTerminal.Constructor(Vector3(2494.111f, 1550.112f, 15.32248f), medical_terminal), owning_building_guid = 7) - LocalObject(485, ProximityTerminal.Constructor(Vector3(2412.683f, 1489.083f, 38.41748f), pad_landing_frame), owning_building_guid = 7) - LocalObject(486, Terminal.Constructor(Vector3(2412.683f, 1489.083f, 38.41748f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(488, ProximityTerminal.Constructor(Vector3(2418.704f, 1514.31f, 40.77248f), pad_landing_frame), owning_building_guid = 7) - LocalObject(489, Terminal.Constructor(Vector3(2418.704f, 1514.31f, 40.77248f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(494, ProximityTerminal.Constructor(Vector3(2493.117f, 1500.927f, 45.66948f), pad_landing_frame), owning_building_guid = 7) - LocalObject(495, Terminal.Constructor(Vector3(2493.117f, 1500.927f, 45.66948f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(500, ProximityTerminal.Constructor(Vector3(2515.75f, 1567.629f, 38.43048f), pad_landing_frame), owning_building_guid = 7) - LocalObject(501, Terminal.Constructor(Vector3(2515.75f, 1567.629f, 38.43048f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(503, ProximityTerminal.Constructor(Vector3(2516.219f, 1497.598f, 38.43048f), pad_landing_frame), owning_building_guid = 7) - LocalObject(504, Terminal.Constructor(Vector3(2516.219f, 1497.598f, 38.43048f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(506, ProximityTerminal.Constructor(Vector3(2520.793f, 1550.952f, 40.87448f), pad_landing_frame), owning_building_guid = 7) - LocalObject(507, Terminal.Constructor(Vector3(2520.793f, 1550.952f, 40.87448f), air_rearm_terminal), owning_building_guid = 7) - LocalObject(586, ProximityTerminal.Constructor(Vector3(2420.609f, 1579f, 29.95098f), repair_silo), owning_building_guid = 7) - LocalObject(587, Terminal.Constructor(Vector3(2420.609f, 1579f, 29.95098f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(598, ProximityTerminal.Constructor(Vector3(2549.335f, 1508.979f, 29.97248f), repair_silo), owning_building_guid = 7) - LocalObject(599, Terminal.Constructor(Vector3(2549.335f, 1508.979f, 29.97248f), ground_rearm_terminal), owning_building_guid = 7) - LocalObject(377, FacilityTurret.Constructor(Vector3(2318.872f, 1572.125f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 616, + SpawnTube.Constructor(Vector3(2473.333f, 1530.885f, 22.82248f), Vector3(0, 0, 322)), + owning_building_guid = 7 + ) + LocalObject( + 617, + SpawnTube.Constructor(Vector3(2477.82f, 1525.143f, 22.82248f), Vector3(0, 0, 322)), + owning_building_guid = 7 + ) + LocalObject( + 618, + SpawnTube.Constructor(Vector3(2482.308f, 1519.397f, 22.82248f), Vector3(0, 0, 322)), + owning_building_guid = 7 + ) + LocalObject( + 406, + ProximityTerminal.Constructor(Vector3(2471.251f, 1518.649f, 35.31948f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 407, + ProximityTerminal.Constructor(Vector3(2494.111f, 1550.112f, 15.32248f), medical_terminal), + owning_building_guid = 7 + ) + LocalObject( + 485, + ProximityTerminal.Constructor(Vector3(2412.683f, 1489.083f, 38.41748f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 486, + Terminal.Constructor(Vector3(2412.683f, 1489.083f, 38.41748f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 488, + ProximityTerminal.Constructor(Vector3(2418.704f, 1514.31f, 40.77248f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 489, + Terminal.Constructor(Vector3(2418.704f, 1514.31f, 40.77248f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 494, + ProximityTerminal.Constructor(Vector3(2493.117f, 1500.927f, 45.66948f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 495, + Terminal.Constructor(Vector3(2493.117f, 1500.927f, 45.66948f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 500, + ProximityTerminal.Constructor(Vector3(2515.75f, 1567.629f, 38.43048f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 501, + Terminal.Constructor(Vector3(2515.75f, 1567.629f, 38.43048f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 503, + ProximityTerminal.Constructor(Vector3(2516.219f, 1497.598f, 38.43048f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 504, + Terminal.Constructor(Vector3(2516.219f, 1497.598f, 38.43048f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 506, + ProximityTerminal.Constructor(Vector3(2520.793f, 1550.952f, 40.87448f), pad_landing_frame), + owning_building_guid = 7 + ) + LocalObject( + 507, + Terminal.Constructor(Vector3(2520.793f, 1550.952f, 40.87448f), air_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 586, + ProximityTerminal.Constructor(Vector3(2420.609f, 1579f, 29.95098f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 587, + Terminal.Constructor(Vector3(2420.609f, 1579f, 29.95098f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 598, + ProximityTerminal.Constructor(Vector3(2549.335f, 1508.979f, 29.97248f), repair_silo), + owning_building_guid = 7 + ) + LocalObject( + 599, + Terminal.Constructor(Vector3(2549.335f, 1508.979f, 29.97248f), ground_rearm_terminal), + owning_building_guid = 7 + ) + LocalObject( + 377, + FacilityTurret.Constructor(Vector3(2318.872f, 1572.125f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(377, 5006) - LocalObject(378, FacilityTurret.Constructor(Vector3(2389.552f, 1627.347f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 378, + FacilityTurret.Constructor(Vector3(2389.552f, 1627.347f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(378, 5007) - LocalObject(380, FacilityTurret.Constructor(Vector3(2445.229f, 1419.34f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 380, + FacilityTurret.Constructor(Vector3(2445.229f, 1419.34f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(380, 5008) - LocalObject(383, FacilityTurret.Constructor(Vector3(2490.25f, 1629.3f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 383, + FacilityTurret.Constructor(Vector3(2490.25f, 1629.3f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(383, 5009) - LocalObject(385, FacilityTurret.Constructor(Vector3(2541.267f, 1576.552f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 385, + FacilityTurret.Constructor(Vector3(2541.267f, 1576.552f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(385, 5010) - LocalObject(387, FacilityTurret.Constructor(Vector3(2575.052f, 1520.758f, 38.72148f), manned_turret), owning_building_guid = 7) + LocalObject( + 387, + FacilityTurret.Constructor(Vector3(2575.052f, 1520.758f, 38.72148f), manned_turret), + owning_building_guid = 7 + ) TurretToWeapon(387, 5011) LocalObject(540, Painbox.Constructor(Vector3(2468.617f, 1558.856f, 18.79578f), painbox), owning_building_guid = 7) - LocalObject(543, Painbox.Constructor(Vector3(2485.065f, 1529.836f, 27.09238f), painbox_continuous), owning_building_guid = 7) - LocalObject(546, Painbox.Constructor(Vector3(2479.235f, 1548.453f, 18.48188f), painbox_door_radius), owning_building_guid = 7) - LocalObject(551, Painbox.Constructor(Vector3(2475.337f, 1540.709f, 25.49868f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(552, Painbox.Constructor(Vector3(2491.611f, 1518.538f, 24.95038f), painbox_door_radius_continuous), owning_building_guid = 7) - LocalObject(553, Painbox.Constructor(Vector3(2492.205f, 1544.751f, 26.40478f), painbox_door_radius_continuous), owning_building_guid = 7) + LocalObject( + 543, + Painbox.Constructor(Vector3(2485.065f, 1529.836f, 27.09238f), painbox_continuous), + owning_building_guid = 7 + ) + LocalObject( + 546, + Painbox.Constructor(Vector3(2479.235f, 1548.453f, 18.48188f), painbox_door_radius), + owning_building_guid = 7 + ) + LocalObject( + 551, + Painbox.Constructor(Vector3(2475.337f, 1540.709f, 25.49868f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 552, + Painbox.Constructor(Vector3(2491.611f, 1518.538f, 24.95038f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) + LocalObject( + 553, + Painbox.Constructor(Vector3(2492.205f, 1544.751f, 26.40478f), painbox_door_radius_continuous), + owning_building_guid = 7 + ) LocalObject(67, Generator.Constructor(Vector3(2468.319f, 1562.872f, 14.02848f)), owning_building_guid = 7) - LocalObject(64, Terminal.Constructor(Vector3(2473.399f, 1556.446f, 15.32248f), gen_control), owning_building_guid = 7) + LocalObject( + 64, + Terminal.Constructor(Vector3(2473.399f, 1556.446f, 15.32248f), gen_control), + owning_building_guid = 7 + ) } Building2() def Building2(): Unit = { // Name: Blue_Base_97 Type: tech_plant GUID: 10, MapID: 2 - LocalBuilding("Blue_Base_97", 10, 2, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2532f, 2426f, 30.22248f), Vector3(0f, 0f, 145f), tech_plant))) - LocalObject(59, CaptureTerminal.Constructor(Vector3(2553.411f, 2464.831f, 45.32248f), capture_terminal), owning_building_guid = 10) + LocalBuilding( + "Blue_Base_97", + 10, + 2, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2532f, 2426f, 30.22248f), + Vector3(0f, 0f, 145f), + tech_plant + ) + ) + ) + LocalObject( + 59, + CaptureTerminal.Constructor(Vector3(2553.411f, 2464.831f, 45.32248f), capture_terminal), + owning_building_guid = 10 + ) LocalObject(109, Door.Constructor(Vector3(2465.489f, 2468.779f, 31.76448f)), owning_building_guid = 10) LocalObject(111, Door.Constructor(Vector3(2475.924f, 2483.682f, 39.72748f)), owning_building_guid = 10) LocalObject(113, Door.Constructor(Vector3(2479.046f, 2424.91f, 39.72748f)), owning_building_guid = 10) @@ -336,16 +902,66 @@ object Map97 { // Desolation LocalObject(670, Door.Constructor(Vector3(2537.498f, 2455.947f, 24.67648f)), owning_building_guid = 10) LocalObject(671, Door.Constructor(Vector3(2541.679f, 2461.918f, 24.67648f)), owning_building_guid = 10) LocalObject(672, Door.Constructor(Vector3(2545.862f, 2467.892f, 24.67648f)), owning_building_guid = 10) - LocalObject(212, IFFLock.Constructor(Vector3(2524.243f, 2490.513f, 31.80248f), Vector3(0, 0, 35)), owning_building_guid = 10, door_guid = 206) - LocalObject(215, IFFLock.Constructor(Vector3(2542.721f, 2366.79f, 31.91048f), Vector3(0, 0, 215)), owning_building_guid = 10, door_guid = 143) - LocalObject(250, IFFLock.Constructor(Vector3(2517.494f, 2456.841f, 16.65848f), Vector3(0, 0, 35)), owning_building_guid = 10, door_guid = 185) - LocalObject(251, IFFLock.Constructor(Vector3(2530.206f, 2455.566f, 24.15848f), Vector3(0, 0, 215)), owning_building_guid = 10, door_guid = 187) - LocalObject(252, IFFLock.Constructor(Vector3(2532.696f, 2481.146f, 16.65848f), Vector3(0, 0, 125)), owning_building_guid = 10, door_guid = 188) - LocalObject(253, IFFLock.Constructor(Vector3(2537.966f, 2449.433f, 46.76848f), Vector3(0, 0, 215)), owning_building_guid = 10, door_guid = 120) - LocalObject(254, IFFLock.Constructor(Vector3(2539.102f, 2470.133f, 46.76848f), Vector3(0, 0, 35)), owning_building_guid = 10, door_guid = 121) - LocalObject(255, IFFLock.Constructor(Vector3(2542.326f, 2478.356f, 24.15848f), Vector3(0, 0, 35)), owning_building_guid = 10, door_guid = 190) - LocalObject(256, IFFLock.Constructor(Vector3(2558.968f, 2454.8f, 46.65848f), Vector3(0, 0, 215)), owning_building_guid = 10, door_guid = 196) - LocalObject(257, IFFLock.Constructor(Vector3(2623.964f, 2486.181f, 31.77448f), Vector3(0, 0, 125)), owning_building_guid = 10, door_guid = 127) + LocalObject( + 212, + IFFLock.Constructor(Vector3(2524.243f, 2490.513f, 31.80248f), Vector3(0, 0, 35)), + owning_building_guid = 10, + door_guid = 206 + ) + LocalObject( + 215, + IFFLock.Constructor(Vector3(2542.721f, 2366.79f, 31.91048f), Vector3(0, 0, 215)), + owning_building_guid = 10, + door_guid = 143 + ) + LocalObject( + 250, + IFFLock.Constructor(Vector3(2517.494f, 2456.841f, 16.65848f), Vector3(0, 0, 35)), + owning_building_guid = 10, + door_guid = 185 + ) + LocalObject( + 251, + IFFLock.Constructor(Vector3(2530.206f, 2455.566f, 24.15848f), Vector3(0, 0, 215)), + owning_building_guid = 10, + door_guid = 187 + ) + LocalObject( + 252, + IFFLock.Constructor(Vector3(2532.696f, 2481.146f, 16.65848f), Vector3(0, 0, 125)), + owning_building_guid = 10, + door_guid = 188 + ) + LocalObject( + 253, + IFFLock.Constructor(Vector3(2537.966f, 2449.433f, 46.76848f), Vector3(0, 0, 215)), + owning_building_guid = 10, + door_guid = 120 + ) + LocalObject( + 254, + IFFLock.Constructor(Vector3(2539.102f, 2470.133f, 46.76848f), Vector3(0, 0, 35)), + owning_building_guid = 10, + door_guid = 121 + ) + LocalObject( + 255, + IFFLock.Constructor(Vector3(2542.326f, 2478.356f, 24.15848f), Vector3(0, 0, 35)), + owning_building_guid = 10, + door_guid = 190 + ) + LocalObject( + 256, + IFFLock.Constructor(Vector3(2558.968f, 2454.8f, 46.65848f), Vector3(0, 0, 215)), + owning_building_guid = 10, + door_guid = 196 + ) + LocalObject( + 257, + IFFLock.Constructor(Vector3(2623.964f, 2486.181f, 31.77448f), Vector3(0, 0, 125)), + owning_building_guid = 10, + door_guid = 127 + ) LocalObject(326, Locker.Constructor(Vector3(2508.541f, 2473.965f, 15.32248f)), owning_building_guid = 10) LocalObject(327, Locker.Constructor(Vector3(2509.636f, 2473.198f, 15.32248f)), owning_building_guid = 10) LocalObject(328, Locker.Constructor(Vector3(2510.73f, 2472.432f, 15.32248f)), owning_building_guid = 10) @@ -358,82 +974,316 @@ object Map97 { // Desolation LocalObject(335, Locker.Constructor(Vector3(2537.109f, 2478.406f, 23.08348f)), owning_building_guid = 10) LocalObject(336, Locker.Constructor(Vector3(2538.048f, 2477.748f, 23.08348f)), owning_building_guid = 10) LocalObject(337, Locker.Constructor(Vector3(2539.002f, 2477.081f, 23.08348f)), owning_building_guid = 10) - LocalObject(46, Terminal.Constructor(Vector3(2532.656f, 2455.888f, 45.92548f), air_vehicle_terminal), owning_building_guid = 10) - LocalObject(401, VehicleSpawnPad.Constructor(Vector3(2517.115f, 2441.507f, 42.80048f), mb_pad_creation, Vector3(0, 0, 215)), owning_building_guid = 10, terminal_guid = 46) - LocalObject(47, Terminal.Constructor(Vector3(2542.431f, 2449.043f, 45.92548f), air_vehicle_terminal), owning_building_guid = 10) - LocalObject(402, VehicleSpawnPad.Constructor(Vector3(2534.332f, 2429.452f, 42.80048f), mb_pad_creation, Vector3(0, 0, 215)), owning_building_guid = 10, terminal_guid = 47) - LocalObject(430, Terminal.Constructor(Vector3(2529.136f, 2468.379f, 24.41248f), order_terminal), owning_building_guid = 10) - LocalObject(431, Terminal.Constructor(Vector3(2531.309f, 2471.483f, 24.41248f), order_terminal), owning_building_guid = 10) - LocalObject(432, Terminal.Constructor(Vector3(2533.449f, 2474.539f, 24.41248f), order_terminal), owning_building_guid = 10) - LocalObject(433, Terminal.Constructor(Vector3(2544.703f, 2449.473f, 36.65248f), order_terminal), owning_building_guid = 10) - LocalObject(649, Terminal.Constructor(Vector3(2513.172f, 2464.04f, 36.90448f), spawn_terminal), owning_building_guid = 10) - LocalObject(650, Terminal.Constructor(Vector3(2518.252f, 2431.702f, 42.24548f), spawn_terminal), owning_building_guid = 10) - LocalObject(651, Terminal.Constructor(Vector3(2538.685f, 2458.159f, 24.95648f), spawn_terminal), owning_building_guid = 10) - LocalObject(652, Terminal.Constructor(Vector3(2542.867f, 2464.127f, 24.95648f), spawn_terminal), owning_building_guid = 10) - LocalObject(653, Terminal.Constructor(Vector3(2547.046f, 2470.103f, 24.95648f), spawn_terminal), owning_building_guid = 10) - LocalObject(654, Terminal.Constructor(Vector3(2552.687f, 2469.391f, 16.87948f), spawn_terminal), owning_building_guid = 10) - LocalObject(655, Terminal.Constructor(Vector3(2606.432f, 2490.355f, 24.37948f), spawn_terminal), owning_building_guid = 10) - LocalObject(699, Terminal.Constructor(Vector3(2594.597f, 2431.705f, 16.03648f), ground_vehicle_terminal), owning_building_guid = 10) - LocalObject(403, VehicleSpawnPad.Constructor(Vector3(2588.377f, 2422.734f, 7.759481f), mb_pad_creation, Vector3(0, 0, 215)), owning_building_guid = 10, terminal_guid = 699) + LocalObject( + 46, + Terminal.Constructor(Vector3(2532.656f, 2455.888f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 10 + ) + LocalObject( + 401, + VehicleSpawnPad.Constructor(Vector3(2517.115f, 2441.507f, 42.80048f), mb_pad_creation, Vector3(0, 0, 215)), + owning_building_guid = 10, + terminal_guid = 46 + ) + LocalObject( + 47, + Terminal.Constructor(Vector3(2542.431f, 2449.043f, 45.92548f), air_vehicle_terminal), + owning_building_guid = 10 + ) + LocalObject( + 402, + VehicleSpawnPad.Constructor(Vector3(2534.332f, 2429.452f, 42.80048f), mb_pad_creation, Vector3(0, 0, 215)), + owning_building_guid = 10, + terminal_guid = 47 + ) + LocalObject( + 430, + Terminal.Constructor(Vector3(2529.136f, 2468.379f, 24.41248f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 431, + Terminal.Constructor(Vector3(2531.309f, 2471.483f, 24.41248f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 432, + Terminal.Constructor(Vector3(2533.449f, 2474.539f, 24.41248f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 433, + Terminal.Constructor(Vector3(2544.703f, 2449.473f, 36.65248f), order_terminal), + owning_building_guid = 10 + ) + LocalObject( + 649, + Terminal.Constructor(Vector3(2513.172f, 2464.04f, 36.90448f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 650, + Terminal.Constructor(Vector3(2518.252f, 2431.702f, 42.24548f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 651, + Terminal.Constructor(Vector3(2538.685f, 2458.159f, 24.95648f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 652, + Terminal.Constructor(Vector3(2542.867f, 2464.127f, 24.95648f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 653, + Terminal.Constructor(Vector3(2547.046f, 2470.103f, 24.95648f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 654, + Terminal.Constructor(Vector3(2552.687f, 2469.391f, 16.87948f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 655, + Terminal.Constructor(Vector3(2606.432f, 2490.355f, 24.37948f), spawn_terminal), + owning_building_guid = 10 + ) + LocalObject( + 699, + Terminal.Constructor(Vector3(2594.597f, 2431.705f, 16.03648f), ground_vehicle_terminal), + owning_building_guid = 10 + ) + LocalObject( + 403, + VehicleSpawnPad.Constructor(Vector3(2588.377f, 2422.734f, 7.759481f), mb_pad_creation, Vector3(0, 0, 215)), + owning_building_guid = 10, + terminal_guid = 699 + ) LocalObject(603, ResourceSilo.Constructor(Vector3(2462.743f, 2434.752f, 37.23048f)), owning_building_guid = 10) - LocalObject(619, SpawnTube.Constructor(Vector3(2538.463f, 2456.557f, 22.82248f), Vector3(0, 0, 215)), owning_building_guid = 10) - LocalObject(620, SpawnTube.Constructor(Vector3(2542.643f, 2462.527f, 22.82248f), Vector3(0, 0, 215)), owning_building_guid = 10) - LocalObject(621, SpawnTube.Constructor(Vector3(2546.825f, 2468.5f, 22.82248f), Vector3(0, 0, 215)), owning_building_guid = 10) - LocalObject(408, ProximityTerminal.Constructor(Vector3(2514.001f, 2470.807f, 15.32248f), medical_terminal), owning_building_guid = 10) - LocalObject(409, ProximityTerminal.Constructor(Vector3(2550.773f, 2458.144f, 35.31948f), medical_terminal), owning_building_guid = 10) - LocalObject(491, ProximityTerminal.Constructor(Vector3(2490.923f, 2486.378f, 38.43048f), pad_landing_frame), owning_building_guid = 10) - LocalObject(492, Terminal.Constructor(Vector3(2490.923f, 2486.378f, 38.43048f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(497, ProximityTerminal.Constructor(Vector3(2505.396f, 2496.077f, 40.87448f), pad_landing_frame), owning_building_guid = 10) - LocalObject(498, Terminal.Constructor(Vector3(2505.396f, 2496.077f, 40.87448f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(509, ProximityTerminal.Constructor(Vector3(2557.757f, 2507.302f, 38.43048f), pad_landing_frame), owning_building_guid = 10) - LocalObject(510, Terminal.Constructor(Vector3(2557.757f, 2507.302f, 38.43048f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(512, ProximityTerminal.Constructor(Vector3(2561.328f, 2484.236f, 45.66948f), pad_landing_frame), owning_building_guid = 10) - LocalObject(513, Terminal.Constructor(Vector3(2561.328f, 2484.236f, 45.66948f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(515, ProximityTerminal.Constructor(Vector3(2570.286f, 2409.162f, 40.77248f), pad_landing_frame), owning_building_guid = 10) - LocalObject(516, Terminal.Constructor(Vector3(2570.286f, 2409.162f, 40.77248f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(518, ProximityTerminal.Constructor(Vector3(2596.171f, 2410.779f, 38.41748f), pad_landing_frame), owning_building_guid = 10) - LocalObject(519, Terminal.Constructor(Vector3(2596.171f, 2410.779f, 38.41748f), air_rearm_terminal), owning_building_guid = 10) - LocalObject(590, ProximityTerminal.Constructor(Vector3(2507.865f, 2392.07f, 29.95098f), repair_silo), owning_building_guid = 10) - LocalObject(591, Terminal.Constructor(Vector3(2507.865f, 2392.07f, 29.95098f), ground_rearm_terminal), owning_building_guid = 10) - LocalObject(594, ProximityTerminal.Constructor(Vector3(2537.191f, 2535.644f, 29.97248f), repair_silo), owning_building_guid = 10) - LocalObject(595, Terminal.Constructor(Vector3(2537.191f, 2535.644f, 29.97248f), ground_rearm_terminal), owning_building_guid = 10) - LocalObject(379, FacilityTurret.Constructor(Vector3(2439.403f, 2443.962f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 619, + SpawnTube.Constructor(Vector3(2538.463f, 2456.557f, 22.82248f), Vector3(0, 0, 215)), + owning_building_guid = 10 + ) + LocalObject( + 620, + SpawnTube.Constructor(Vector3(2542.643f, 2462.527f, 22.82248f), Vector3(0, 0, 215)), + owning_building_guid = 10 + ) + LocalObject( + 621, + SpawnTube.Constructor(Vector3(2546.825f, 2468.5f, 22.82248f), Vector3(0, 0, 215)), + owning_building_guid = 10 + ) + LocalObject( + 408, + ProximityTerminal.Constructor(Vector3(2514.001f, 2470.807f, 15.32248f), medical_terminal), + owning_building_guid = 10 + ) + LocalObject( + 409, + ProximityTerminal.Constructor(Vector3(2550.773f, 2458.144f, 35.31948f), medical_terminal), + owning_building_guid = 10 + ) + LocalObject( + 491, + ProximityTerminal.Constructor(Vector3(2490.923f, 2486.378f, 38.43048f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 492, + Terminal.Constructor(Vector3(2490.923f, 2486.378f, 38.43048f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 497, + ProximityTerminal.Constructor(Vector3(2505.396f, 2496.077f, 40.87448f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 498, + Terminal.Constructor(Vector3(2505.396f, 2496.077f, 40.87448f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 509, + ProximityTerminal.Constructor(Vector3(2557.757f, 2507.302f, 38.43048f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 510, + Terminal.Constructor(Vector3(2557.757f, 2507.302f, 38.43048f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 512, + ProximityTerminal.Constructor(Vector3(2561.328f, 2484.236f, 45.66948f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 513, + Terminal.Constructor(Vector3(2561.328f, 2484.236f, 45.66948f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 515, + ProximityTerminal.Constructor(Vector3(2570.286f, 2409.162f, 40.77248f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 516, + Terminal.Constructor(Vector3(2570.286f, 2409.162f, 40.77248f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 518, + ProximityTerminal.Constructor(Vector3(2596.171f, 2410.779f, 38.41748f), pad_landing_frame), + owning_building_guid = 10 + ) + LocalObject( + 519, + Terminal.Constructor(Vector3(2596.171f, 2410.779f, 38.41748f), air_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 590, + ProximityTerminal.Constructor(Vector3(2507.865f, 2392.07f, 29.95098f), repair_silo), + owning_building_guid = 10 + ) + LocalObject( + 591, + Terminal.Constructor(Vector3(2507.865f, 2392.07f, 29.95098f), ground_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 594, + ProximityTerminal.Constructor(Vector3(2537.191f, 2535.644f, 29.97248f), repair_silo), + owning_building_guid = 10 + ) + LocalObject( + 595, + Terminal.Constructor(Vector3(2537.191f, 2535.644f, 29.97248f), ground_rearm_terminal), + owning_building_guid = 10 + ) + LocalObject( + 379, + FacilityTurret.Constructor(Vector3(2439.403f, 2443.962f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(379, 5012) - LocalObject(381, FacilityTurret.Constructor(Vector3(2470.711f, 2348.235f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 381, + FacilityTurret.Constructor(Vector3(2470.711f, 2348.235f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(381, 5013) - LocalObject(382, FacilityTurret.Constructor(Vector3(2474.93f, 2508.172f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 382, + FacilityTurret.Constructor(Vector3(2474.93f, 2508.172f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(382, 5014) - LocalObject(384, FacilityTurret.Constructor(Vector3(2518.408f, 2556.793f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 384, + FacilityTurret.Constructor(Vector3(2518.408f, 2556.793f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(384, 5015) - LocalObject(386, FacilityTurret.Constructor(Vector3(2544.185f, 2296.788f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 386, + FacilityTurret.Constructor(Vector3(2544.185f, 2296.788f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(386, 5016) - LocalObject(388, FacilityTurret.Constructor(Vector3(2653.351f, 2462.295f, 38.72148f), manned_turret), owning_building_guid = 10) + LocalObject( + 388, + FacilityTurret.Constructor(Vector3(2653.351f, 2462.295f, 38.72148f), manned_turret), + owning_building_guid = 10 + ) TurretToWeapon(388, 5017) LocalObject(541, Painbox.Constructor(Vector3(2513.093f, 2443.87f, 18.79578f), painbox), owning_building_guid = 10) - LocalObject(544, Painbox.Constructor(Vector3(2536.036f, 2468.083f, 27.09238f), painbox_continuous), owning_building_guid = 10) - LocalObject(547, Painbox.Constructor(Vector3(2519.938f, 2457.066f, 18.48188f), painbox_door_radius), owning_building_guid = 10) - LocalObject(554, Painbox.Constructor(Vector3(2519.685f, 2470.551f, 26.40478f), painbox_door_radius_continuous), owning_building_guid = 10) - LocalObject(555, Painbox.Constructor(Vector3(2528.482f, 2455.602f, 25.49868f), painbox_door_radius_continuous), owning_building_guid = 10) - LocalObject(556, Painbox.Constructor(Vector3(2544.927f, 2477.647f, 24.95038f), painbox_door_radius_continuous), owning_building_guid = 10) + LocalObject( + 544, + Painbox.Constructor(Vector3(2536.036f, 2468.083f, 27.09238f), painbox_continuous), + owning_building_guid = 10 + ) + LocalObject( + 547, + Painbox.Constructor(Vector3(2519.938f, 2457.066f, 18.48188f), painbox_door_radius), + owning_building_guid = 10 + ) + LocalObject( + 554, + Painbox.Constructor(Vector3(2519.685f, 2470.551f, 26.40478f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) + LocalObject( + 555, + Painbox.Constructor(Vector3(2528.482f, 2455.602f, 25.49868f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) + LocalObject( + 556, + Painbox.Constructor(Vector3(2544.927f, 2477.647f, 24.95038f), painbox_door_radius_continuous), + owning_building_guid = 10 + ) LocalObject(68, Generator.Constructor(Vector3(2509.339f, 2442.41f, 14.02848f)), owning_building_guid = 10) - LocalObject(65, Terminal.Constructor(Vector3(2514f, 2449.148f, 15.32248f), gen_control), owning_building_guid = 10) + LocalObject( + 65, + Terminal.Constructor(Vector3(2514f, 2449.148f, 15.32248f), gen_control), + owning_building_guid = 10 + ) } Building6() def Building6(): Unit = { // Name: Central_Indigo_Tower_97 Type: tower_a GUID: 13, MapID: 6 - LocalBuilding("Central_Indigo_Tower_97", 13, 6, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1660f, 1476f, 33.07596f), Vector3(0f, 0f, 320f), tower_a))) - LocalObject(629, CaptureTerminal.Constructor(Vector3(1672.64f, 1465.259f, 43.07496f), secondary_capture), owning_building_guid = 13) + LocalBuilding( + "Central_Indigo_Tower_97", + 13, + 6, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1660f, 1476f, 33.07596f), Vector3(0f, 0f, 320f), tower_a) + ) + ) + LocalObject( + 629, + CaptureTerminal.Constructor(Vector3(1672.64f, 1465.259f, 43.07496f), secondary_capture), + owning_building_guid = 13 + ) LocalObject(86, Door.Constructor(Vector3(1664.05f, 1462.158f, 34.59696f)), owning_building_guid = 13) LocalObject(87, Door.Constructor(Vector3(1664.05f, 1462.158f, 54.59596f)), owning_building_guid = 13) LocalObject(88, Door.Constructor(Vector3(1674.335f, 1474.415f, 34.59696f)), owning_building_guid = 13) LocalObject(89, Door.Constructor(Vector3(1674.335f, 1474.415f, 54.59596f)), owning_building_guid = 13) LocalObject(661, Door.Constructor(Vector3(1661.335f, 1460.251f, 24.41196f)), owning_building_guid = 13) LocalObject(662, Door.Constructor(Vector3(1671.883f, 1472.822f, 24.41196f)), owning_building_guid = 13) - LocalObject(228, IFFLock.Constructor(Vector3(1665.097f, 1460.221f, 34.53696f), Vector3(0, 0, 220)), owning_building_guid = 13, door_guid = 86) - LocalObject(229, IFFLock.Constructor(Vector3(1665.097f, 1460.221f, 54.53696f), Vector3(0, 0, 220)), owning_building_guid = 13, door_guid = 87) - LocalObject(230, IFFLock.Constructor(Vector3(1673.291f, 1476.349f, 34.53696f), Vector3(0, 0, 40)), owning_building_guid = 13, door_guid = 88) - LocalObject(231, IFFLock.Constructor(Vector3(1673.291f, 1476.349f, 54.53696f), Vector3(0, 0, 40)), owning_building_guid = 13, door_guid = 89) + LocalObject( + 228, + IFFLock.Constructor(Vector3(1665.097f, 1460.221f, 34.53696f), Vector3(0, 0, 220)), + owning_building_guid = 13, + door_guid = 86 + ) + LocalObject( + 229, + IFFLock.Constructor(Vector3(1665.097f, 1460.221f, 54.53696f), Vector3(0, 0, 220)), + owning_building_guid = 13, + door_guid = 87 + ) + LocalObject( + 230, + IFFLock.Constructor(Vector3(1673.291f, 1476.349f, 34.53696f), Vector3(0, 0, 40)), + owning_building_guid = 13, + door_guid = 88 + ) + LocalObject( + 231, + IFFLock.Constructor(Vector3(1673.291f, 1476.349f, 54.53696f), Vector3(0, 0, 40)), + owning_building_guid = 13, + door_guid = 89 + ) LocalObject(290, Locker.Constructor(Vector3(1662.374f, 1454.379f, 23.06996f)), owning_building_guid = 13) LocalObject(291, Locker.Constructor(Vector3(1663.398f, 1453.52f, 23.06996f)), owning_building_guid = 13) LocalObject(292, Locker.Constructor(Vector3(1665.457f, 1451.792f, 23.06996f)), owning_building_guid = 13) @@ -442,35 +1292,106 @@ object Map97 { // Desolation LocalObject(295, Locker.Constructor(Vector3(1677.484f, 1470.252f, 23.06996f)), owning_building_guid = 13) LocalObject(296, Locker.Constructor(Vector3(1679.516f, 1468.547f, 23.06996f)), owning_building_guid = 13) LocalObject(297, Locker.Constructor(Vector3(1680.59f, 1467.646f, 23.06996f)), owning_building_guid = 13) - LocalObject(417, Terminal.Constructor(Vector3(1670.083f, 1454.654f, 24.40796f), order_terminal), owning_building_guid = 13) - LocalObject(418, Terminal.Constructor(Vector3(1673.762f, 1459.039f, 24.40796f), order_terminal), owning_building_guid = 13) - LocalObject(419, Terminal.Constructor(Vector3(1677.221f, 1463.161f, 24.40796f), order_terminal), owning_building_guid = 13) - LocalObject(610, SpawnTube.Constructor(Vector3(1660.322f, 1459.728f, 22.55796f), respawn_tube_tower, Vector3(0, 0, 40)), owning_building_guid = 13) - LocalObject(611, SpawnTube.Constructor(Vector3(1670.87f, 1472.299f, 22.55796f), respawn_tube_tower, Vector3(0, 0, 40)), owning_building_guid = 13) - LocalObject(372, FacilityTurret.Constructor(Vector3(1642.12f, 1474.418f, 52.01796f), manned_turret), owning_building_guid = 13) + LocalObject( + 417, + Terminal.Constructor(Vector3(1670.083f, 1454.654f, 24.40796f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 418, + Terminal.Constructor(Vector3(1673.762f, 1459.039f, 24.40796f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 419, + Terminal.Constructor(Vector3(1677.221f, 1463.161f, 24.40796f), order_terminal), + owning_building_guid = 13 + ) + LocalObject( + 610, + SpawnTube.Constructor(Vector3(1660.322f, 1459.728f, 22.55796f), respawn_tube_tower, Vector3(0, 0, 40)), + owning_building_guid = 13 + ) + LocalObject( + 611, + SpawnTube.Constructor(Vector3(1670.87f, 1472.299f, 22.55796f), respawn_tube_tower, Vector3(0, 0, 40)), + owning_building_guid = 13 + ) + LocalObject( + 372, + FacilityTurret.Constructor(Vector3(1642.12f, 1474.418f, 52.01796f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(372, 5018) - LocalObject(374, FacilityTurret.Constructor(Vector3(1685.516f, 1471.177f, 52.01796f), manned_turret), owning_building_guid = 13) + LocalObject( + 374, + FacilityTurret.Constructor(Vector3(1685.516f, 1471.177f, 52.01796f), manned_turret), + owning_building_guid = 13 + ) TurretToWeapon(374, 5019) - LocalObject(560, Painbox.Constructor(Vector3(1660.027f, 1467.888f, 24.57506f), painbox_radius_continuous), owning_building_guid = 13) - LocalObject(561, Painbox.Constructor(Vector3(1666.719f, 1457.599f, 23.17596f), painbox_radius_continuous), owning_building_guid = 13) - LocalObject(562, Painbox.Constructor(Vector3(1674.279f, 1466.742f, 23.17596f), painbox_radius_continuous), owning_building_guid = 13) + LocalObject( + 560, + Painbox.Constructor(Vector3(1660.027f, 1467.888f, 24.57506f), painbox_radius_continuous), + owning_building_guid = 13 + ) + LocalObject( + 561, + Painbox.Constructor(Vector3(1666.719f, 1457.599f, 23.17596f), painbox_radius_continuous), + owning_building_guid = 13 + ) + LocalObject( + 562, + Painbox.Constructor(Vector3(1674.279f, 1466.742f, 23.17596f), painbox_radius_continuous), + owning_building_guid = 13 + ) } Building4() def Building4(): Unit = { // Name: Central_Red_Tower_97 Type: tower_a GUID: 14, MapID: 4 - LocalBuilding("Central_Red_Tower_97", 14, 4, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1966f, 2912f, 33.54289f), Vector3(0f, 0f, 5f), tower_a))) - LocalObject(630, CaptureTerminal.Constructor(Vector3(1982.533f, 2913.343f, 43.54189f), secondary_capture), owning_building_guid = 14) + LocalBuilding( + "Central_Red_Tower_97", + 14, + 4, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1966f, 2912f, 33.54289f), Vector3(0f, 0f, 5f), tower_a) + ) + ) + LocalObject( + 630, + CaptureTerminal.Constructor(Vector3(1982.533f, 2913.343f, 43.54189f), secondary_capture), + owning_building_guid = 14 + ) LocalObject(90, Door.Constructor(Vector3(1977.257f, 2921.015f, 35.06389f)), owning_building_guid = 14) LocalObject(91, Door.Constructor(Vector3(1977.257f, 2921.015f, 55.06289f)), owning_building_guid = 14) LocalObject(92, Door.Constructor(Vector3(1978.652f, 2905.076f, 35.06389f)), owning_building_guid = 14) LocalObject(93, Door.Constructor(Vector3(1978.652f, 2905.076f, 55.06289f)), owning_building_guid = 14) LocalObject(663, Door.Constructor(Vector3(1976.65f, 2918.156f, 24.87889f)), owning_building_guid = 14) LocalObject(664, Door.Constructor(Vector3(1978.08f, 2901.808f, 24.87889f)), owning_building_guid = 14) - LocalObject(232, IFFLock.Constructor(Vector3(1975.151f, 2921.645f, 35.00389f), Vector3(0, 0, 355)), owning_building_guid = 14, door_guid = 90) - LocalObject(233, IFFLock.Constructor(Vector3(1975.151f, 2921.645f, 55.00389f), Vector3(0, 0, 355)), owning_building_guid = 14, door_guid = 91) - LocalObject(234, IFFLock.Constructor(Vector3(1980.761f, 2904.447f, 35.00389f), Vector3(0, 0, 175)), owning_building_guid = 14, door_guid = 92) - LocalObject(235, IFFLock.Constructor(Vector3(1980.761f, 2904.447f, 55.00389f), Vector3(0, 0, 175)), owning_building_guid = 14, door_guid = 93) + LocalObject( + 232, + IFFLock.Constructor(Vector3(1975.151f, 2921.645f, 35.00389f), Vector3(0, 0, 355)), + owning_building_guid = 14, + door_guid = 90 + ) + LocalObject( + 233, + IFFLock.Constructor(Vector3(1975.151f, 2921.645f, 55.00389f), Vector3(0, 0, 355)), + owning_building_guid = 14, + door_guid = 91 + ) + LocalObject( + 234, + IFFLock.Constructor(Vector3(1980.761f, 2904.447f, 35.00389f), Vector3(0, 0, 175)), + owning_building_guid = 14, + door_guid = 92 + ) + LocalObject( + 235, + IFFLock.Constructor(Vector3(1980.761f, 2904.447f, 55.00389f), Vector3(0, 0, 175)), + owning_building_guid = 14, + door_guid = 93 + ) LocalObject(298, Locker.Constructor(Vector3(1981.095f, 2920.182f, 23.53689f)), owning_building_guid = 14) LocalObject(299, Locker.Constructor(Vector3(1982.427f, 2920.298f, 23.53689f)), owning_building_guid = 14) LocalObject(300, Locker.Constructor(Vector3(1982.967f, 2898.39f, 23.53689f)), owning_building_guid = 14) @@ -479,35 +1400,106 @@ object Map97 { // Desolation LocalObject(303, Locker.Constructor(Vector3(1986.467f, 2920.652f, 23.53689f)), owning_building_guid = 14) LocalObject(304, Locker.Constructor(Vector3(1986.976f, 2898.741f, 23.53689f)), owning_building_guid = 14) LocalObject(305, Locker.Constructor(Vector3(1988.373f, 2898.863f, 23.53689f)), owning_building_guid = 14) - LocalObject(420, Terminal.Constructor(Vector3(1987.256f, 2915.098f, 24.87489f), order_terminal), owning_building_guid = 14) - LocalObject(421, Terminal.Constructor(Vector3(1987.725f, 2909.738f, 24.87489f), order_terminal), owning_building_guid = 14) - LocalObject(422, Terminal.Constructor(Vector3(1988.224f, 2904.036f, 24.87489f), order_terminal), owning_building_guid = 14) - LocalObject(612, SpawnTube.Constructor(Vector3(1976.303f, 2917.069f, 23.02489f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 14) - LocalObject(613, SpawnTube.Constructor(Vector3(1977.734f, 2900.722f, 23.02489f), respawn_tube_tower, Vector3(0, 0, 355)), owning_building_guid = 14) - LocalObject(375, FacilityTurret.Constructor(Vector3(1954.476f, 2898.238f, 52.48489f), manned_turret), owning_building_guid = 14) + LocalObject( + 420, + Terminal.Constructor(Vector3(1987.256f, 2915.098f, 24.87489f), order_terminal), + owning_building_guid = 14 + ) + LocalObject( + 421, + Terminal.Constructor(Vector3(1987.725f, 2909.738f, 24.87489f), order_terminal), + owning_building_guid = 14 + ) + LocalObject( + 422, + Terminal.Constructor(Vector3(1988.224f, 2904.036f, 24.87489f), order_terminal), + owning_building_guid = 14 + ) + LocalObject( + 612, + SpawnTube.Constructor(Vector3(1976.303f, 2917.069f, 23.02489f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 14 + ) + LocalObject( + 613, + SpawnTube.Constructor(Vector3(1977.734f, 2900.722f, 23.02489f), respawn_tube_tower, Vector3(0, 0, 355)), + owning_building_guid = 14 + ) + LocalObject( + 375, + FacilityTurret.Constructor(Vector3(1954.476f, 2898.238f, 52.48489f), manned_turret), + owning_building_guid = 14 + ) TurretToWeapon(375, 5020) - LocalObject(376, FacilityTurret.Constructor(Vector3(1987.453f, 2926.632f, 52.48489f), manned_turret), owning_building_guid = 14) + LocalObject( + 376, + FacilityTurret.Constructor(Vector3(1987.453f, 2926.632f, 52.48489f), manned_turret), + owning_building_guid = 14 + ) TurretToWeapon(376, 5021) - LocalObject(563, Painbox.Constructor(Vector3(1971.755f, 2906.283f, 25.04199f), painbox_radius_continuous), owning_building_guid = 14) - LocalObject(564, Painbox.Constructor(Vector3(1982.643f, 2915.55f, 23.64289f), painbox_radius_continuous), owning_building_guid = 14) - LocalObject(565, Painbox.Constructor(Vector3(1983.763f, 2903.739f, 23.64289f), painbox_radius_continuous), owning_building_guid = 14) + LocalObject( + 563, + Painbox.Constructor(Vector3(1971.755f, 2906.283f, 25.04199f), painbox_radius_continuous), + owning_building_guid = 14 + ) + LocalObject( + 564, + Painbox.Constructor(Vector3(1982.643f, 2915.55f, 23.64289f), painbox_radius_continuous), + owning_building_guid = 14 + ) + LocalObject( + 565, + Painbox.Constructor(Vector3(1983.763f, 2903.739f, 23.64289f), painbox_radius_continuous), + owning_building_guid = 14 + ) } Building5() def Building5(): Unit = { // Name: Central_Blue_Tower_97 Type: tower_a GUID: 15, MapID: 5 - LocalBuilding("Central_Blue_Tower_97", 15, 5, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2878f, 1898f, 37.28446f), Vector3(0f, 0f, 33f), tower_a))) - LocalObject(634, CaptureTerminal.Constructor(Vector3(2891.967f, 1906.948f, 47.28346f), secondary_capture), owning_building_guid = 15) + LocalBuilding( + "Central_Blue_Tower_97", + 15, + 5, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2878f, 1898f, 37.28446f), Vector3(0f, 0f, 33f), tower_a) + ) + ) + LocalObject( + 634, + CaptureTerminal.Constructor(Vector3(2891.967f, 1906.948f, 47.28346f), secondary_capture), + owning_building_guid = 15 + ) LocalObject(137, Door.Constructor(Vector3(2883.707f, 1911.245f, 38.80546f)), owning_building_guid = 15) LocalObject(138, Door.Constructor(Vector3(2883.707f, 1911.245f, 58.80446f)), owning_building_guid = 15) LocalObject(139, Door.Constructor(Vector3(2892.421f, 1897.826f, 38.80546f)), owning_building_guid = 15) LocalObject(140, Door.Constructor(Vector3(2892.421f, 1897.826f, 58.80446f)), owning_building_guid = 15) LocalObject(677, Door.Constructor(Vector3(2884.514f, 1908.435f, 28.62046f)), owning_building_guid = 15) LocalObject(678, Door.Constructor(Vector3(2893.451f, 1894.672f, 28.62046f)), owning_building_guid = 15) - LocalObject(266, IFFLock.Constructor(Vector3(2881.552f, 1910.812f, 38.74546f), Vector3(0, 0, 327)), owning_building_guid = 15, door_guid = 137) - LocalObject(267, IFFLock.Constructor(Vector3(2881.552f, 1910.812f, 58.74546f), Vector3(0, 0, 327)), owning_building_guid = 15, door_guid = 138) - LocalObject(268, IFFLock.Constructor(Vector3(2894.58f, 1898.261f, 38.74546f), Vector3(0, 0, 147)), owning_building_guid = 15, door_guid = 139) - LocalObject(269, IFFLock.Constructor(Vector3(2894.58f, 1898.261f, 58.74546f), Vector3(0, 0, 147)), owning_building_guid = 15, door_guid = 140) + LocalObject( + 266, + IFFLock.Constructor(Vector3(2881.552f, 1910.812f, 38.74546f), Vector3(0, 0, 327)), + owning_building_guid = 15, + door_guid = 137 + ) + LocalObject( + 267, + IFFLock.Constructor(Vector3(2881.552f, 1910.812f, 58.74546f), Vector3(0, 0, 327)), + owning_building_guid = 15, + door_guid = 138 + ) + LocalObject( + 268, + IFFLock.Constructor(Vector3(2894.58f, 1898.261f, 38.74546f), Vector3(0, 0, 147)), + owning_building_guid = 15, + door_guid = 139 + ) + LocalObject( + 269, + IFFLock.Constructor(Vector3(2894.58f, 1898.261f, 58.74546f), Vector3(0, 0, 147)), + owning_building_guid = 15, + door_guid = 140 + ) LocalObject(354, Locker.Constructor(Vector3(2887.487f, 1912.311f, 27.27846f)), owning_building_guid = 15) LocalObject(355, Locker.Constructor(Vector3(2888.609f, 1913.039f, 27.27846f)), owning_building_guid = 15) LocalObject(356, Locker.Constructor(Vector3(2890.833f, 1914.484f, 27.27846f)), owning_building_guid = 15) @@ -516,25 +1508,76 @@ object Map97 { // Desolation LocalObject(359, Locker.Constructor(Vector3(2900.492f, 1894.677f, 27.27846f)), owning_building_guid = 15) LocalObject(360, Locker.Constructor(Vector3(2902.746f, 1896.141f, 27.27846f)), owning_building_guid = 15) LocalObject(361, Locker.Constructor(Vector3(2903.922f, 1896.904f, 27.27846f)), owning_building_guid = 15) - LocalObject(440, Terminal.Constructor(Vector3(2895.313f, 1910.715f, 28.61646f), order_terminal), owning_building_guid = 15) - LocalObject(441, Terminal.Constructor(Vector3(2898.244f, 1906.202f, 28.61646f), order_terminal), owning_building_guid = 15) - LocalObject(442, Terminal.Constructor(Vector3(2901.361f, 1901.401f, 28.61646f), order_terminal), owning_building_guid = 15) - LocalObject(626, SpawnTube.Constructor(Vector3(2884.717f, 1907.313f, 26.76646f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 15) - LocalObject(627, SpawnTube.Constructor(Vector3(2893.655f, 1893.551f, 26.76646f), respawn_tube_tower, Vector3(0, 0, 327)), owning_building_guid = 15) - LocalObject(393, FacilityTurret.Constructor(Vector3(2874.285f, 1880.439f, 56.22646f), manned_turret), owning_building_guid = 15) + LocalObject( + 440, + Terminal.Constructor(Vector3(2895.313f, 1910.715f, 28.61646f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 441, + Terminal.Constructor(Vector3(2898.244f, 1906.202f, 28.61646f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 442, + Terminal.Constructor(Vector3(2901.361f, 1901.401f, 28.61646f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 626, + SpawnTube.Constructor(Vector3(2884.717f, 1907.313f, 26.76646f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 15 + ) + LocalObject( + 627, + SpawnTube.Constructor(Vector3(2893.655f, 1893.551f, 26.76646f), respawn_tube_tower, Vector3(0, 0, 327)), + owning_building_guid = 15 + ) + LocalObject( + 393, + FacilityTurret.Constructor(Vector3(2874.285f, 1880.439f, 56.22646f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(393, 5022) - LocalObject(394, FacilityTurret.Constructor(Vector3(2890.073f, 1920.991f, 56.22646f), manned_turret), owning_building_guid = 15) + LocalObject( + 394, + FacilityTurret.Constructor(Vector3(2890.073f, 1920.991f, 56.22646f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(394, 5023) - LocalObject(575, Painbox.Constructor(Vector3(2885.766f, 1895.654f, 28.78356f), painbox_radius_continuous), owning_building_guid = 15) - LocalObject(576, Painbox.Constructor(Vector3(2891.028f, 1908.948f, 27.38446f), painbox_radius_continuous), owning_building_guid = 15) - LocalObject(577, Painbox.Constructor(Vector3(2897.562f, 1899.045f, 27.38446f), painbox_radius_continuous), owning_building_guid = 15) + LocalObject( + 575, + Painbox.Constructor(Vector3(2885.766f, 1895.654f, 28.78356f), painbox_radius_continuous), + owning_building_guid = 15 + ) + LocalObject( + 576, + Painbox.Constructor(Vector3(2891.028f, 1908.948f, 27.38446f), painbox_radius_continuous), + owning_building_guid = 15 + ) + LocalObject( + 577, + Painbox.Constructor(Vector3(2897.562f, 1899.045f, 27.38446f), painbox_radius_continuous), + owning_building_guid = 15 + ) } Building8() def Building8(): Unit = { // Name: Central_Tower_97 Type: tower_b GUID: 16, MapID: 8 - LocalBuilding("Central_Tower_97", 16, 8, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2070f, 2002f, 26.19098f), Vector3(0f, 0f, 310f), tower_b))) - LocalObject(631, CaptureTerminal.Constructor(Vector3(2080.583f, 1989.227f, 46.18999f), secondary_capture), owning_building_guid = 16) + LocalBuilding( + "Central_Tower_97", + 16, + 8, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2070f, 2002f, 26.19098f), Vector3(0f, 0f, 310f), tower_b) + ) + ) + LocalObject( + 631, + CaptureTerminal.Constructor(Vector3(2080.583f, 1989.227f, 46.18999f), secondary_capture), + owning_building_guid = 16 + ) LocalObject(95, Door.Constructor(Vector3(2071.585f, 1987.665f, 27.71099f)), owning_building_guid = 16) LocalObject(96, Door.Constructor(Vector3(2071.585f, 1987.665f, 37.71098f)), owning_building_guid = 16) LocalObject(97, Door.Constructor(Vector3(2071.585f, 1987.665f, 57.71098f)), owning_building_guid = 16) @@ -543,12 +1586,42 @@ object Map97 { // Desolation LocalObject(100, Door.Constructor(Vector3(2083.842f, 1997.95f, 57.71098f)), owning_building_guid = 16) LocalObject(665, Door.Constructor(Vector3(2068.581f, 1986.258f, 17.52699f)), owning_building_guid = 16) LocalObject(666, Door.Constructor(Vector3(2081.152f, 1996.806f, 17.52699f)), owning_building_guid = 16) - LocalObject(236, IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 27.65199f), Vector3(0, 0, 230)), owning_building_guid = 16, door_guid = 95) - LocalObject(237, IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 37.65199f), Vector3(0, 0, 230)), owning_building_guid = 16, door_guid = 96) - LocalObject(238, IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 57.65199f), Vector3(0, 0, 230)), owning_building_guid = 16, door_guid = 97) - LocalObject(239, IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 27.65199f), Vector3(0, 0, 50)), owning_building_guid = 16, door_guid = 98) - LocalObject(240, IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 37.65199f), Vector3(0, 0, 50)), owning_building_guid = 16, door_guid = 99) - LocalObject(241, IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 57.65199f), Vector3(0, 0, 50)), owning_building_guid = 16, door_guid = 100) + LocalObject( + 236, + IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 27.65199f), Vector3(0, 0, 230)), + owning_building_guid = 16, + door_guid = 95 + ) + LocalObject( + 237, + IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 37.65199f), Vector3(0, 0, 230)), + owning_building_guid = 16, + door_guid = 96 + ) + LocalObject( + 238, + IFFLock.Constructor(Vector3(2072.28f, 1985.576f, 57.65199f), Vector3(0, 0, 230)), + owning_building_guid = 16, + door_guid = 97 + ) + LocalObject( + 239, + IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 27.65199f), Vector3(0, 0, 50)), + owning_building_guid = 16, + door_guid = 98 + ) + LocalObject( + 240, + IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 37.65199f), Vector3(0, 0, 50)), + owning_building_guid = 16, + door_guid = 99 + ) + LocalObject( + 241, + IFFLock.Constructor(Vector3(2083.15f, 2000.036f, 57.65199f), Vector3(0, 0, 50)), + owning_building_guid = 16, + door_guid = 100 + ) LocalObject(306, Locker.Constructor(Vector3(2068.583f, 1980.295f, 16.18499f)), owning_building_guid = 16) LocalObject(307, Locker.Constructor(Vector3(2069.442f, 1979.271f, 16.18499f)), owning_building_guid = 16) LocalObject(308, Locker.Constructor(Vector3(2071.17f, 1977.212f, 16.18499f)), owning_building_guid = 16) @@ -557,31 +1630,94 @@ object Map97 { // Desolation LocalObject(311, Locker.Constructor(Vector3(2086.22f, 1993.303f, 16.18499f)), owning_building_guid = 16) LocalObject(312, Locker.Constructor(Vector3(2087.925f, 1991.271f, 16.18499f)), owning_building_guid = 16) LocalObject(313, Locker.Constructor(Vector3(2088.826f, 1990.197f, 16.18499f)), owning_building_guid = 16) - LocalObject(423, Terminal.Constructor(Vector3(2076.224f, 1979.226f, 17.52298f), order_terminal), owning_building_guid = 16) - LocalObject(424, Terminal.Constructor(Vector3(2080.608f, 1982.906f, 17.52298f), order_terminal), owning_building_guid = 16) - LocalObject(425, Terminal.Constructor(Vector3(2084.73f, 1986.365f, 17.52298f), order_terminal), owning_building_guid = 16) - LocalObject(614, SpawnTube.Constructor(Vector3(2067.491f, 1985.919f, 15.67299f), respawn_tube_tower, Vector3(0, 0, 50)), owning_building_guid = 16) - LocalObject(615, SpawnTube.Constructor(Vector3(2080.062f, 1996.468f, 15.67299f), respawn_tube_tower, Vector3(0, 0, 50)), owning_building_guid = 16) - LocalObject(566, Painbox.Constructor(Vector3(2068.053f, 1993.196f, 17.48038f), painbox_radius_continuous), owning_building_guid = 16) - LocalObject(567, Painbox.Constructor(Vector3(2073.408f, 1982.502f, 16.29099f), painbox_radius_continuous), owning_building_guid = 16) - LocalObject(568, Painbox.Constructor(Vector3(2082.708f, 1990.133f, 16.29099f), painbox_radius_continuous), owning_building_guid = 16) + LocalObject( + 423, + Terminal.Constructor(Vector3(2076.224f, 1979.226f, 17.52298f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 424, + Terminal.Constructor(Vector3(2080.608f, 1982.906f, 17.52298f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 425, + Terminal.Constructor(Vector3(2084.73f, 1986.365f, 17.52298f), order_terminal), + owning_building_guid = 16 + ) + LocalObject( + 614, + SpawnTube.Constructor(Vector3(2067.491f, 1985.919f, 15.67299f), respawn_tube_tower, Vector3(0, 0, 50)), + owning_building_guid = 16 + ) + LocalObject( + 615, + SpawnTube.Constructor(Vector3(2080.062f, 1996.468f, 15.67299f), respawn_tube_tower, Vector3(0, 0, 50)), + owning_building_guid = 16 + ) + LocalObject( + 566, + Painbox.Constructor(Vector3(2068.053f, 1993.196f, 17.48038f), painbox_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 567, + Painbox.Constructor(Vector3(2073.408f, 1982.502f, 16.29099f), painbox_radius_continuous), + owning_building_guid = 16 + ) + LocalObject( + 568, + Painbox.Constructor(Vector3(2082.708f, 1990.133f, 16.29099f), painbox_radius_continuous), + owning_building_guid = 16 + ) } Building7() def Building7(): Unit = { // Name: Red_Tower_97 Type: tower_c GUID: 17, MapID: 7 - LocalBuilding("Red_Tower_97", 17, 7, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1452f, 2600f, 37.65374f), Vector3(0f, 0f, 57f), tower_c))) - LocalObject(628, CaptureTerminal.Constructor(Vector3(1461.12f, 2613.855f, 47.65274f), secondary_capture), owning_building_guid = 17) + LocalBuilding( + "Red_Tower_97", + 17, + 7, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1452f, 2600f, 37.65374f), Vector3(0f, 0f, 57f), tower_c) + ) + ) + LocalObject( + 628, + CaptureTerminal.Constructor(Vector3(1461.12f, 2613.855f, 47.65274f), secondary_capture), + owning_building_guid = 17 + ) LocalObject(69, Door.Constructor(Vector3(1451.826f, 2614.421f, 39.17474f)), owning_building_guid = 17) LocalObject(70, Door.Constructor(Vector3(1451.826f, 2614.421f, 59.17374f)), owning_building_guid = 17) LocalObject(72, Door.Constructor(Vector3(1465.245f, 2605.707f, 39.17474f)), owning_building_guid = 17) LocalObject(73, Door.Constructor(Vector3(1465.245f, 2605.707f, 59.17374f)), owning_building_guid = 17) LocalObject(656, Door.Constructor(Vector3(1453.706f, 2612.182f, 28.98974f)), owning_building_guid = 17) LocalObject(657, Door.Constructor(Vector3(1467.469f, 2603.245f, 28.98974f)), owning_building_guid = 17) - LocalObject(216, IFFLock.Constructor(Vector3(1450.033f, 2613.149f, 39.11473f), Vector3(0, 0, 303)), owning_building_guid = 17, door_guid = 69) - LocalObject(217, IFFLock.Constructor(Vector3(1450.033f, 2613.149f, 59.11474f), Vector3(0, 0, 303)), owning_building_guid = 17, door_guid = 70) - LocalObject(218, IFFLock.Constructor(Vector3(1467.04f, 2606.982f, 39.11473f), Vector3(0, 0, 123)), owning_building_guid = 17, door_guid = 72) - LocalObject(219, IFFLock.Constructor(Vector3(1467.04f, 2606.982f, 59.11474f), Vector3(0, 0, 123)), owning_building_guid = 17, door_guid = 73) + LocalObject( + 216, + IFFLock.Constructor(Vector3(1450.033f, 2613.149f, 39.11473f), Vector3(0, 0, 303)), + owning_building_guid = 17, + door_guid = 69 + ) + LocalObject( + 217, + IFFLock.Constructor(Vector3(1450.033f, 2613.149f, 59.11474f), Vector3(0, 0, 303)), + owning_building_guid = 17, + door_guid = 70 + ) + LocalObject( + 218, + IFFLock.Constructor(Vector3(1467.04f, 2606.982f, 39.11473f), Vector3(0, 0, 123)), + owning_building_guid = 17, + door_guid = 72 + ) + LocalObject( + 219, + IFFLock.Constructor(Vector3(1467.04f, 2606.982f, 59.11474f), Vector3(0, 0, 123)), + owning_building_guid = 17, + door_guid = 73 + ) LocalObject(270, Locker.Constructor(Vector3(1454.846f, 2616.933f, 27.64774f)), owning_building_guid = 17) LocalObject(271, Locker.Constructor(Vector3(1455.574f, 2618.054f, 27.64774f)), owning_building_guid = 17) LocalObject(272, Locker.Constructor(Vector3(1457.019f, 2620.279f, 27.64774f)), owning_building_guid = 17) @@ -590,39 +1726,126 @@ object Map97 { // Desolation LocalObject(275, Locker.Constructor(Vector3(1473.899f, 2606.112f, 27.64774f)), owning_building_guid = 17) LocalObject(276, Locker.Constructor(Vector3(1475.363f, 2608.366f, 27.64774f)), owning_building_guid = 17) LocalObject(277, Locker.Constructor(Vector3(1476.126f, 2609.542f, 27.64774f)), owning_building_guid = 17) - LocalObject(410, Terminal.Constructor(Vector3(1462.645f, 2618.657f, 28.98574f), order_terminal), owning_building_guid = 17) - LocalObject(411, Terminal.Constructor(Vector3(1467.158f, 2615.727f, 28.98574f), order_terminal), owning_building_guid = 17) - LocalObject(412, Terminal.Constructor(Vector3(1471.958f, 2612.609f, 28.98574f), order_terminal), owning_building_guid = 17) - LocalObject(605, SpawnTube.Constructor(Vector3(1454.349f, 2611.24f, 27.13574f), respawn_tube_tower, Vector3(0, 0, 303)), owning_building_guid = 17) - LocalObject(606, SpawnTube.Constructor(Vector3(1468.111f, 2602.303f, 27.13574f), respawn_tube_tower, Vector3(0, 0, 303)), owning_building_guid = 17) - LocalObject(521, ProximityTerminal.Constructor(Vector3(1447.069f, 2601.899f, 65.22374f), pad_landing_tower_frame), owning_building_guid = 17) - LocalObject(522, Terminal.Constructor(Vector3(1447.069f, 2601.899f, 65.22374f), air_rearm_terminal), owning_building_guid = 17) - LocalObject(524, ProximityTerminal.Constructor(Vector3(1455.829f, 2596.21f, 65.22374f), pad_landing_tower_frame), owning_building_guid = 17) - LocalObject(525, Terminal.Constructor(Vector3(1455.829f, 2596.21f, 65.22374f), air_rearm_terminal), owning_building_guid = 17) - LocalObject(366, FacilityTurret.Constructor(Vector3(1452.253f, 2627.853f, 56.59573f), manned_turret), owning_building_guid = 17) + LocalObject( + 410, + Terminal.Constructor(Vector3(1462.645f, 2618.657f, 28.98574f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 411, + Terminal.Constructor(Vector3(1467.158f, 2615.727f, 28.98574f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 412, + Terminal.Constructor(Vector3(1471.958f, 2612.609f, 28.98574f), order_terminal), + owning_building_guid = 17 + ) + LocalObject( + 605, + SpawnTube.Constructor(Vector3(1454.349f, 2611.24f, 27.13574f), respawn_tube_tower, Vector3(0, 0, 303)), + owning_building_guid = 17 + ) + LocalObject( + 606, + SpawnTube.Constructor(Vector3(1468.111f, 2602.303f, 27.13574f), respawn_tube_tower, Vector3(0, 0, 303)), + owning_building_guid = 17 + ) + LocalObject( + 521, + ProximityTerminal.Constructor(Vector3(1447.069f, 2601.899f, 65.22374f), pad_landing_tower_frame), + owning_building_guid = 17 + ) + LocalObject( + 522, + Terminal.Constructor(Vector3(1447.069f, 2601.899f, 65.22374f), air_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 524, + ProximityTerminal.Constructor(Vector3(1455.829f, 2596.21f, 65.22374f), pad_landing_tower_frame), + owning_building_guid = 17 + ) + LocalObject( + 525, + Terminal.Constructor(Vector3(1455.829f, 2596.21f, 65.22374f), air_rearm_terminal), + owning_building_guid = 17 + ) + LocalObject( + 366, + FacilityTurret.Constructor(Vector3(1452.253f, 2627.853f, 56.59573f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(366, 5024) - LocalObject(368, FacilityTurret.Constructor(Vector3(1456.411f, 2579.333f, 56.59573f), manned_turret), owning_building_guid = 17) + LocalObject( + 368, + FacilityTurret.Constructor(Vector3(1456.411f, 2579.333f, 56.59573f), manned_turret), + owning_building_guid = 17 + ) TurretToWeapon(368, 5025) - LocalObject(557, Painbox.Constructor(Vector3(1459.625f, 2615.453f, 27.75374f), painbox_radius_continuous), owning_building_guid = 17) - LocalObject(558, Painbox.Constructor(Vector3(1460.423f, 2599.841f, 29.67324f), painbox_radius_continuous), owning_building_guid = 17) - LocalObject(559, Painbox.Constructor(Vector3(1469.99f, 2608.496f, 27.75374f), painbox_radius_continuous), owning_building_guid = 17) + LocalObject( + 557, + Painbox.Constructor(Vector3(1459.625f, 2615.453f, 27.75374f), painbox_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 558, + Painbox.Constructor(Vector3(1460.423f, 2599.841f, 29.67324f), painbox_radius_continuous), + owning_building_guid = 17 + ) + LocalObject( + 559, + Painbox.Constructor(Vector3(1469.99f, 2608.496f, 27.75374f), painbox_radius_continuous), + owning_building_guid = 17 + ) } Building10() def Building10(): Unit = { // Name: Indigo_Tower_97 Type: tower_c GUID: 18, MapID: 10 - LocalBuilding("Indigo_Tower_97", 18, 10, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2760f, 1398f, 30.46968f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(632, CaptureTerminal.Constructor(Vector3(2776.587f, 1397.897f, 40.46868f), secondary_capture), owning_building_guid = 18) + LocalBuilding( + "Indigo_Tower_97", + 18, + 10, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2760f, 1398f, 30.46968f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 632, + CaptureTerminal.Constructor(Vector3(2776.587f, 1397.897f, 40.46868f), secondary_capture), + owning_building_guid = 18 + ) LocalObject(129, Door.Constructor(Vector3(2772f, 1390f, 31.99068f)), owning_building_guid = 18) LocalObject(130, Door.Constructor(Vector3(2772f, 1390f, 51.98968f)), owning_building_guid = 18) LocalObject(131, Door.Constructor(Vector3(2772f, 1406f, 31.99068f)), owning_building_guid = 18) LocalObject(132, Door.Constructor(Vector3(2772f, 1406f, 51.98968f)), owning_building_guid = 18) LocalObject(673, Door.Constructor(Vector3(2771.146f, 1386.794f, 21.80568f)), owning_building_guid = 18) LocalObject(674, Door.Constructor(Vector3(2771.146f, 1403.204f, 21.80568f)), owning_building_guid = 18) - LocalObject(258, IFFLock.Constructor(Vector3(2769.957f, 1406.811f, 31.93068f), Vector3(0, 0, 0)), owning_building_guid = 18, door_guid = 131) - LocalObject(259, IFFLock.Constructor(Vector3(2769.957f, 1406.811f, 51.93068f), Vector3(0, 0, 0)), owning_building_guid = 18, door_guid = 132) - LocalObject(260, IFFLock.Constructor(Vector3(2774.047f, 1389.189f, 31.93068f), Vector3(0, 0, 180)), owning_building_guid = 18, door_guid = 129) - LocalObject(261, IFFLock.Constructor(Vector3(2774.047f, 1389.189f, 51.93068f), Vector3(0, 0, 180)), owning_building_guid = 18, door_guid = 130) + LocalObject( + 258, + IFFLock.Constructor(Vector3(2769.957f, 1406.811f, 31.93068f), Vector3(0, 0, 0)), + owning_building_guid = 18, + door_guid = 131 + ) + LocalObject( + 259, + IFFLock.Constructor(Vector3(2769.957f, 1406.811f, 51.93068f), Vector3(0, 0, 0)), + owning_building_guid = 18, + door_guid = 132 + ) + LocalObject( + 260, + IFFLock.Constructor(Vector3(2774.047f, 1389.189f, 31.93068f), Vector3(0, 0, 180)), + owning_building_guid = 18, + door_guid = 129 + ) + LocalObject( + 261, + IFFLock.Constructor(Vector3(2774.047f, 1389.189f, 51.93068f), Vector3(0, 0, 180)), + owning_building_guid = 18, + door_guid = 130 + ) LocalObject(338, Locker.Constructor(Vector3(2775.716f, 1382.963f, 20.46368f)), owning_building_guid = 18) LocalObject(339, Locker.Constructor(Vector3(2775.751f, 1404.835f, 20.46368f)), owning_building_guid = 18) LocalObject(340, Locker.Constructor(Vector3(2777.053f, 1382.963f, 20.46368f)), owning_building_guid = 18) @@ -631,39 +1854,126 @@ object Map97 { // Desolation LocalObject(343, Locker.Constructor(Vector3(2779.741f, 1404.835f, 20.46368f)), owning_building_guid = 18) LocalObject(344, Locker.Constructor(Vector3(2781.143f, 1382.963f, 20.46368f)), owning_building_guid = 18) LocalObject(345, Locker.Constructor(Vector3(2781.143f, 1404.835f, 20.46368f)), owning_building_guid = 18) - LocalObject(434, Terminal.Constructor(Vector3(2781.445f, 1388.129f, 21.80168f), order_terminal), owning_building_guid = 18) - LocalObject(435, Terminal.Constructor(Vector3(2781.445f, 1393.853f, 21.80168f), order_terminal), owning_building_guid = 18) - LocalObject(436, Terminal.Constructor(Vector3(2781.445f, 1399.234f, 21.80168f), order_terminal), owning_building_guid = 18) - LocalObject(622, SpawnTube.Constructor(Vector3(2770.706f, 1385.742f, 19.95168f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 18) - LocalObject(623, SpawnTube.Constructor(Vector3(2770.706f, 1402.152f, 19.95168f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 18) - LocalObject(527, ProximityTerminal.Constructor(Vector3(2758.907f, 1392.725f, 58.03968f), pad_landing_tower_frame), owning_building_guid = 18) - LocalObject(528, Terminal.Constructor(Vector3(2758.907f, 1392.725f, 58.03968f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(530, ProximityTerminal.Constructor(Vector3(2758.907f, 1403.17f, 58.03968f), pad_landing_tower_frame), owning_building_guid = 18) - LocalObject(531, Terminal.Constructor(Vector3(2758.907f, 1403.17f, 58.03968f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(389, FacilityTurret.Constructor(Vector3(2745.07f, 1383.045f, 49.41168f), manned_turret), owning_building_guid = 18) + LocalObject( + 434, + Terminal.Constructor(Vector3(2781.445f, 1388.129f, 21.80168f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 435, + Terminal.Constructor(Vector3(2781.445f, 1393.853f, 21.80168f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 436, + Terminal.Constructor(Vector3(2781.445f, 1399.234f, 21.80168f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 622, + SpawnTube.Constructor(Vector3(2770.706f, 1385.742f, 19.95168f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 18 + ) + LocalObject( + 623, + SpawnTube.Constructor(Vector3(2770.706f, 1402.152f, 19.95168f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 18 + ) + LocalObject( + 527, + ProximityTerminal.Constructor(Vector3(2758.907f, 1392.725f, 58.03968f), pad_landing_tower_frame), + owning_building_guid = 18 + ) + LocalObject( + 528, + Terminal.Constructor(Vector3(2758.907f, 1392.725f, 58.03968f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 530, + ProximityTerminal.Constructor(Vector3(2758.907f, 1403.17f, 58.03968f), pad_landing_tower_frame), + owning_building_guid = 18 + ) + LocalObject( + 531, + Terminal.Constructor(Vector3(2758.907f, 1403.17f, 58.03968f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 389, + FacilityTurret.Constructor(Vector3(2745.07f, 1383.045f, 49.41168f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(389, 5026) - LocalObject(391, FacilityTurret.Constructor(Vector3(2783.497f, 1412.957f, 49.41168f), manned_turret), owning_building_guid = 18) + LocalObject( + 391, + FacilityTurret.Constructor(Vector3(2783.497f, 1412.957f, 49.41168f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(391, 5027) - LocalObject(569, Painbox.Constructor(Vector3(2764.454f, 1390.849f, 22.48918f), painbox_radius_continuous), owning_building_guid = 18) - LocalObject(570, Painbox.Constructor(Vector3(2776.923f, 1387.54f, 20.56968f), painbox_radius_continuous), owning_building_guid = 18) - LocalObject(571, Painbox.Constructor(Vector3(2777.113f, 1400.022f, 20.56968f), painbox_radius_continuous), owning_building_guid = 18) + LocalObject( + 569, + Painbox.Constructor(Vector3(2764.454f, 1390.849f, 22.48918f), painbox_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 570, + Painbox.Constructor(Vector3(2776.923f, 1387.54f, 20.56968f), painbox_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 571, + Painbox.Constructor(Vector3(2777.113f, 1400.022f, 20.56968f), painbox_radius_continuous), + owning_building_guid = 18 + ) } Building9() def Building9(): Unit = { // Name: Blue_Tower_97 Type: tower_c GUID: 19, MapID: 9 - LocalBuilding("Blue_Tower_97", 19, 9, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2778f, 2664f, 33.75977f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(633, CaptureTerminal.Constructor(Vector3(2794.587f, 2663.897f, 43.75877f), secondary_capture), owning_building_guid = 19) + LocalBuilding( + "Blue_Tower_97", + 19, + 9, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2778f, 2664f, 33.75977f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 633, + CaptureTerminal.Constructor(Vector3(2794.587f, 2663.897f, 43.75877f), secondary_capture), + owning_building_guid = 19 + ) LocalObject(133, Door.Constructor(Vector3(2790f, 2656f, 35.28077f)), owning_building_guid = 19) LocalObject(134, Door.Constructor(Vector3(2790f, 2656f, 55.27977f)), owning_building_guid = 19) LocalObject(135, Door.Constructor(Vector3(2790f, 2672f, 35.28077f)), owning_building_guid = 19) LocalObject(136, Door.Constructor(Vector3(2790f, 2672f, 55.27977f)), owning_building_guid = 19) LocalObject(675, Door.Constructor(Vector3(2789.146f, 2652.794f, 25.09577f)), owning_building_guid = 19) LocalObject(676, Door.Constructor(Vector3(2789.146f, 2669.204f, 25.09577f)), owning_building_guid = 19) - LocalObject(262, IFFLock.Constructor(Vector3(2787.957f, 2672.811f, 35.22076f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 135) - LocalObject(263, IFFLock.Constructor(Vector3(2787.957f, 2672.811f, 55.22076f), Vector3(0, 0, 0)), owning_building_guid = 19, door_guid = 136) - LocalObject(264, IFFLock.Constructor(Vector3(2792.047f, 2655.189f, 35.22076f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 133) - LocalObject(265, IFFLock.Constructor(Vector3(2792.047f, 2655.189f, 55.22076f), Vector3(0, 0, 180)), owning_building_guid = 19, door_guid = 134) + LocalObject( + 262, + IFFLock.Constructor(Vector3(2787.957f, 2672.811f, 35.22076f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 135 + ) + LocalObject( + 263, + IFFLock.Constructor(Vector3(2787.957f, 2672.811f, 55.22076f), Vector3(0, 0, 0)), + owning_building_guid = 19, + door_guid = 136 + ) + LocalObject( + 264, + IFFLock.Constructor(Vector3(2792.047f, 2655.189f, 35.22076f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 133 + ) + LocalObject( + 265, + IFFLock.Constructor(Vector3(2792.047f, 2655.189f, 55.22076f), Vector3(0, 0, 180)), + owning_building_guid = 19, + door_guid = 134 + ) LocalObject(346, Locker.Constructor(Vector3(2793.716f, 2648.963f, 23.75377f)), owning_building_guid = 19) LocalObject(347, Locker.Constructor(Vector3(2793.751f, 2670.835f, 23.75377f)), owning_building_guid = 19) LocalObject(348, Locker.Constructor(Vector3(2795.053f, 2648.963f, 23.75377f)), owning_building_guid = 19) @@ -672,40 +1982,111 @@ object Map97 { // Desolation LocalObject(351, Locker.Constructor(Vector3(2797.741f, 2670.835f, 23.75377f)), owning_building_guid = 19) LocalObject(352, Locker.Constructor(Vector3(2799.143f, 2648.963f, 23.75377f)), owning_building_guid = 19) LocalObject(353, Locker.Constructor(Vector3(2799.143f, 2670.835f, 23.75377f)), owning_building_guid = 19) - LocalObject(437, Terminal.Constructor(Vector3(2799.445f, 2654.129f, 25.09177f), order_terminal), owning_building_guid = 19) - LocalObject(438, Terminal.Constructor(Vector3(2799.445f, 2659.853f, 25.09177f), order_terminal), owning_building_guid = 19) - LocalObject(439, Terminal.Constructor(Vector3(2799.445f, 2665.234f, 25.09177f), order_terminal), owning_building_guid = 19) - LocalObject(624, SpawnTube.Constructor(Vector3(2788.706f, 2651.742f, 23.24177f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(625, SpawnTube.Constructor(Vector3(2788.706f, 2668.152f, 23.24177f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 19) - LocalObject(533, ProximityTerminal.Constructor(Vector3(2776.907f, 2658.725f, 61.32977f), pad_landing_tower_frame), owning_building_guid = 19) - LocalObject(534, Terminal.Constructor(Vector3(2776.907f, 2658.725f, 61.32977f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(536, ProximityTerminal.Constructor(Vector3(2776.907f, 2669.17f, 61.32977f), pad_landing_tower_frame), owning_building_guid = 19) - LocalObject(537, Terminal.Constructor(Vector3(2776.907f, 2669.17f, 61.32977f), air_rearm_terminal), owning_building_guid = 19) - LocalObject(390, FacilityTurret.Constructor(Vector3(2763.07f, 2649.045f, 52.70177f), manned_turret), owning_building_guid = 19) + LocalObject( + 437, + Terminal.Constructor(Vector3(2799.445f, 2654.129f, 25.09177f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 438, + Terminal.Constructor(Vector3(2799.445f, 2659.853f, 25.09177f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 439, + Terminal.Constructor(Vector3(2799.445f, 2665.234f, 25.09177f), order_terminal), + owning_building_guid = 19 + ) + LocalObject( + 624, + SpawnTube.Constructor(Vector3(2788.706f, 2651.742f, 23.24177f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 625, + SpawnTube.Constructor(Vector3(2788.706f, 2668.152f, 23.24177f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 19 + ) + LocalObject( + 533, + ProximityTerminal.Constructor(Vector3(2776.907f, 2658.725f, 61.32977f), pad_landing_tower_frame), + owning_building_guid = 19 + ) + LocalObject( + 534, + Terminal.Constructor(Vector3(2776.907f, 2658.725f, 61.32977f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 536, + ProximityTerminal.Constructor(Vector3(2776.907f, 2669.17f, 61.32977f), pad_landing_tower_frame), + owning_building_guid = 19 + ) + LocalObject( + 537, + Terminal.Constructor(Vector3(2776.907f, 2669.17f, 61.32977f), air_rearm_terminal), + owning_building_guid = 19 + ) + LocalObject( + 390, + FacilityTurret.Constructor(Vector3(2763.07f, 2649.045f, 52.70177f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(390, 5028) - LocalObject(392, FacilityTurret.Constructor(Vector3(2801.497f, 2678.957f, 52.70177f), manned_turret), owning_building_guid = 19) + LocalObject( + 392, + FacilityTurret.Constructor(Vector3(2801.497f, 2678.957f, 52.70177f), manned_turret), + owning_building_guid = 19 + ) TurretToWeapon(392, 5029) - LocalObject(572, Painbox.Constructor(Vector3(2782.454f, 2656.849f, 25.77927f), painbox_radius_continuous), owning_building_guid = 19) - LocalObject(573, Painbox.Constructor(Vector3(2794.923f, 2653.54f, 23.85977f), painbox_radius_continuous), owning_building_guid = 19) - LocalObject(574, Painbox.Constructor(Vector3(2795.113f, 2666.022f, 23.85977f), painbox_radius_continuous), owning_building_guid = 19) + LocalObject( + 572, + Painbox.Constructor(Vector3(2782.454f, 2656.849f, 25.77927f), painbox_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 573, + Painbox.Constructor(Vector3(2794.923f, 2653.54f, 23.85977f), painbox_radius_continuous), + owning_building_guid = 19 + ) + LocalObject( + 574, + Painbox.Constructor(Vector3(2795.113f, 2666.022f, 23.85977f), painbox_radius_continuous), + owning_building_guid = 19 + ) } Building10001() def Building10001(): Unit = { // Name: Map97_Gate_Two Type: warpgate_small GUID: 20, MapID: 10001 - LocalBuilding("Map97_Gate_Two", 20, 10001, FoundationBuilder(WarpGate.Structure(Vector3(1173.69f, 2615.84f, 30.79f)))) + LocalBuilding( + "Map97_Gate_Two", + 20, + 10001, + FoundationBuilder(WarpGate.Structure(Vector3(1173.69f, 2615.84f, 30.79f))) + ) } Building10003() def Building10003(): Unit = { // Name: Map97_Gate_Three Type: warpgate_small GUID: 21, MapID: 10003 - LocalBuilding("Map97_Gate_Three", 21, 10003, FoundationBuilder(WarpGate.Structure(Vector3(2830.98f, 1170.55f, 30.79f)))) + LocalBuilding( + "Map97_Gate_Three", + 21, + 10003, + FoundationBuilder(WarpGate.Structure(Vector3(2830.98f, 1170.55f, 30.79f))) + ) } Building10002() def Building10002(): Unit = { // Name: Map97_Gate_One Type: warpgate_small GUID: 22, MapID: 10002 - LocalBuilding("Map97_Gate_One", 22, 10002, FoundationBuilder(WarpGate.Structure(Vector3(2933.49f, 2963.42f, 30.79f)))) + LocalBuilding( + "Map97_Gate_One", + 22, + 10002, + FoundationBuilder(WarpGate.Structure(Vector3(2933.49f, 2963.42f, 30.79f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map98.scala b/pslogin/src/main/scala/zonemaps/Map98.scala index 5b1ac744..11102374 100644 --- a/pslogin/src/main/scala/zonemaps/Map98.scala +++ b/pslogin/src/main/scala/zonemaps/Map98.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -24,8 +24,24 @@ object Map98 { // Ascension Building39() def Building39(): Unit = { // Name: Base_Charlie Type: amp_station GUID: 1, MapID: 39 - LocalBuilding("Base_Charlie", 1, 39, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2650f, 2280f, 90.6473f), Vector3(0f, 0f, 353f), amp_station))) - LocalObject(78, CaptureTerminal.Constructor(Vector3(2646.689f, 2280.41f, 102.1553f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Base_Charlie", + 1, + 39, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2650f, 2280f, 90.6473f), + Vector3(0f, 0f, 353f), + amp_station + ) + ) + ) + LocalObject( + 78, + CaptureTerminal.Constructor(Vector3(2646.689f, 2280.41f, 102.1553f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(71, Door.Constructor(Vector3(2649.38f, 2273.22f, 103.5493f)), owning_building_guid = 1) LocalObject(72, Door.Constructor(Vector3(2651.042f, 2286.728f, 103.5493f)), owning_building_guid = 1) LocalObject(188, Door.Constructor(Vector3(2575.766f, 2233.198f, 92.3983f)), owning_building_guid = 1) @@ -71,18 +87,78 @@ object Map98 { // Ascension LocalObject(891, Door.Constructor(Vector3(2629.566f, 2272.165f, 85.2013f)), owning_building_guid = 1) LocalObject(892, Door.Constructor(Vector3(2630.455f, 2279.404f, 85.2013f)), owning_building_guid = 1) LocalObject(893, Door.Constructor(Vector3(2631.343f, 2286.638f, 85.2013f)), owning_building_guid = 1) - LocalObject(303, IFFLock.Constructor(Vector3(2682.051f, 2279.154f, 92.3273f), Vector3(0, 0, 97)), owning_building_guid = 1, door_guid = 291) - LocalObject(367, IFFLock.Constructor(Vector3(2582.388f, 2369.735f, 92.3073f), Vector3(0, 0, 7)), owning_building_guid = 1, door_guid = 190) - LocalObject(368, IFFLock.Constructor(Vector3(2602.866f, 2283.341f, 77.1833f), Vector3(0, 0, 97)), owning_building_guid = 1, door_guid = 268) - LocalObject(369, IFFLock.Constructor(Vector3(2637.601f, 2264.586f, 84.6833f), Vector3(0, 0, 187)), owning_building_guid = 1, door_guid = 274) - LocalObject(370, IFFLock.Constructor(Vector3(2637.619f, 2290.528f, 84.6833f), Vector3(0, 0, 7)), owning_building_guid = 1, door_guid = 276) - LocalObject(371, IFFLock.Constructor(Vector3(2640.922f, 2248.273f, 102.3083f), Vector3(0, 0, 277)), owning_building_guid = 1, door_guid = 197) - LocalObject(372, IFFLock.Constructor(Vector3(2647.413f, 2266.644f, 77.1833f), Vector3(0, 0, 277)), owning_building_guid = 1, door_guid = 283) - LocalObject(373, IFFLock.Constructor(Vector3(2647.603f, 2243.722f, 97.3093f), Vector3(0, 0, 187)), owning_building_guid = 1, door_guid = 198) - LocalObject(374, IFFLock.Constructor(Vector3(2648.373f, 2308.954f, 102.3083f), Vector3(0, 0, 277)), owning_building_guid = 1, door_guid = 199) - LocalObject(375, IFFLock.Constructor(Vector3(2652.026f, 2251.029f, 102.3083f), Vector3(0, 0, 97)), owning_building_guid = 1, door_guid = 200) - LocalObject(376, IFFLock.Constructor(Vector3(2652.398f, 2316.299f, 97.3093f), Vector3(0, 0, 7)), owning_building_guid = 1, door_guid = 201) - LocalObject(377, IFFLock.Constructor(Vector3(2659.478f, 2311.714f, 102.3083f), Vector3(0, 0, 97)), owning_building_guid = 1, door_guid = 204) + LocalObject( + 303, + IFFLock.Constructor(Vector3(2682.051f, 2279.154f, 92.3273f), Vector3(0, 0, 97)), + owning_building_guid = 1, + door_guid = 291 + ) + LocalObject( + 367, + IFFLock.Constructor(Vector3(2582.388f, 2369.735f, 92.3073f), Vector3(0, 0, 7)), + owning_building_guid = 1, + door_guid = 190 + ) + LocalObject( + 368, + IFFLock.Constructor(Vector3(2602.866f, 2283.341f, 77.1833f), Vector3(0, 0, 97)), + owning_building_guid = 1, + door_guid = 268 + ) + LocalObject( + 369, + IFFLock.Constructor(Vector3(2637.601f, 2264.586f, 84.6833f), Vector3(0, 0, 187)), + owning_building_guid = 1, + door_guid = 274 + ) + LocalObject( + 370, + IFFLock.Constructor(Vector3(2637.619f, 2290.528f, 84.6833f), Vector3(0, 0, 7)), + owning_building_guid = 1, + door_guid = 276 + ) + LocalObject( + 371, + IFFLock.Constructor(Vector3(2640.922f, 2248.273f, 102.3083f), Vector3(0, 0, 277)), + owning_building_guid = 1, + door_guid = 197 + ) + LocalObject( + 372, + IFFLock.Constructor(Vector3(2647.413f, 2266.644f, 77.1833f), Vector3(0, 0, 277)), + owning_building_guid = 1, + door_guid = 283 + ) + LocalObject( + 373, + IFFLock.Constructor(Vector3(2647.603f, 2243.722f, 97.3093f), Vector3(0, 0, 187)), + owning_building_guid = 1, + door_guid = 198 + ) + LocalObject( + 374, + IFFLock.Constructor(Vector3(2648.373f, 2308.954f, 102.3083f), Vector3(0, 0, 277)), + owning_building_guid = 1, + door_guid = 199 + ) + LocalObject( + 375, + IFFLock.Constructor(Vector3(2652.026f, 2251.029f, 102.3083f), Vector3(0, 0, 97)), + owning_building_guid = 1, + door_guid = 200 + ) + LocalObject( + 376, + IFFLock.Constructor(Vector3(2652.398f, 2316.299f, 97.3093f), Vector3(0, 0, 7)), + owning_building_guid = 1, + door_guid = 201 + ) + LocalObject( + 377, + IFFLock.Constructor(Vector3(2659.478f, 2311.714f, 102.3083f), Vector3(0, 0, 97)), + owning_building_guid = 1, + door_guid = 204 + ) LocalObject(501, Locker.Constructor(Vector3(2639.937f, 2267.272f, 83.6083f)), owning_building_guid = 1) LocalObject(502, Locker.Constructor(Vector3(2641.092f, 2267.131f, 83.6083f)), owning_building_guid = 1) LocalObject(503, Locker.Constructor(Vector3(2642.231f, 2266.991f, 83.6083f)), owning_building_guid = 1) @@ -95,64 +171,249 @@ object Map98 { // Ascension LocalObject(510, Locker.Constructor(Vector3(2662.716f, 2284.65f, 75.8473f)), owning_building_guid = 1) LocalObject(511, Locker.Constructor(Vector3(2664.042f, 2284.487f, 75.8473f)), owning_building_guid = 1) LocalObject(512, Locker.Constructor(Vector3(2665.37f, 2284.324f, 75.8473f)), owning_building_guid = 1) - LocalObject(624, Terminal.Constructor(Vector3(2627.7f, 2282.734f, 92.1763f), order_terminal), owning_building_guid = 1) - LocalObject(625, Terminal.Constructor(Vector3(2643.647f, 2272.124f, 84.9373f), order_terminal), owning_building_guid = 1) - LocalObject(626, Terminal.Constructor(Vector3(2644.102f, 2275.827f, 84.9373f), order_terminal), owning_building_guid = 1) - LocalObject(627, Terminal.Constructor(Vector3(2644.563f, 2279.587f, 84.9373f), order_terminal), owning_building_guid = 1) - LocalObject(628, Terminal.Constructor(Vector3(2647.259f, 2257.691f, 92.1763f), order_terminal), owning_building_guid = 1) - LocalObject(629, Terminal.Constructor(Vector3(2652.737f, 2302.31f, 92.1763f), order_terminal), owning_building_guid = 1) - LocalObject(859, Terminal.Constructor(Vector3(2607.218f, 2324.958f, 84.9043f), spawn_terminal), owning_building_guid = 1) - LocalObject(860, Terminal.Constructor(Vector3(2628.114f, 2298.212f, 77.4043f), spawn_terminal), owning_building_guid = 1) - LocalObject(861, Terminal.Constructor(Vector3(2629.558f, 2269.657f, 85.4813f), spawn_terminal), owning_building_guid = 1) - LocalObject(862, Terminal.Constructor(Vector3(2630.443f, 2276.895f, 85.4813f), spawn_terminal), owning_building_guid = 1) - LocalObject(863, Terminal.Constructor(Vector3(2631.334f, 2284.128f, 85.4813f), spawn_terminal), owning_building_guid = 1) - LocalObject(864, Terminal.Constructor(Vector3(2643.989f, 2276.204f, 97.3753f), spawn_terminal), owning_building_guid = 1) - LocalObject(918, Terminal.Constructor(Vector3(2612.483f, 2367.699f, 92.7493f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(577, VehicleSpawnPad.Constructor(Vector3(2610.91f, 2354.151f, 88.5923f), mb_pad_creation, Vector3(0, 0, 187)), owning_building_guid = 1, terminal_guid = 918) + LocalObject( + 624, + Terminal.Constructor(Vector3(2627.7f, 2282.734f, 92.1763f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 625, + Terminal.Constructor(Vector3(2643.647f, 2272.124f, 84.9373f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 626, + Terminal.Constructor(Vector3(2644.102f, 2275.827f, 84.9373f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 627, + Terminal.Constructor(Vector3(2644.563f, 2279.587f, 84.9373f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 628, + Terminal.Constructor(Vector3(2647.259f, 2257.691f, 92.1763f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 629, + Terminal.Constructor(Vector3(2652.737f, 2302.31f, 92.1763f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(2607.218f, 2324.958f, 84.9043f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(2628.114f, 2298.212f, 77.4043f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(2629.558f, 2269.657f, 85.4813f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(2630.443f, 2276.895f, 85.4813f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 863, + Terminal.Constructor(Vector3(2631.334f, 2284.128f, 85.4813f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(2643.989f, 2276.204f, 97.3753f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 918, + Terminal.Constructor(Vector3(2612.483f, 2367.699f, 92.7493f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 577, + VehicleSpawnPad.Constructor(Vector3(2610.91f, 2354.151f, 88.5923f), mb_pad_creation, Vector3(0, 0, 187)), + owning_building_guid = 1, + terminal_guid = 918 + ) LocalObject(800, ResourceSilo.Constructor(Vector3(2691.833f, 2188.727f, 97.8823f)), owning_building_guid = 1) - LocalObject(827, SpawnTube.Constructor(Vector3(2629.001f, 2271.176f, 83.3473f), Vector3(0, 0, 7)), owning_building_guid = 1) - LocalObject(828, SpawnTube.Constructor(Vector3(2629.89f, 2278.413f, 83.3473f), Vector3(0, 0, 7)), owning_building_guid = 1) - LocalObject(829, SpawnTube.Constructor(Vector3(2630.778f, 2285.647f, 83.3473f), Vector3(0, 0, 7)), owning_building_guid = 1) - LocalObject(581, ProximityTerminal.Constructor(Vector3(2628.116f, 2282.681f, 95.8473f), medical_terminal), owning_building_guid = 1) - LocalObject(582, ProximityTerminal.Constructor(Vector3(2659.066f, 2284.549f, 75.8473f), medical_terminal), owning_building_guid = 1) - LocalObject(672, ProximityTerminal.Constructor(Vector3(2595.588f, 2306.601f, 99.1523f), pad_landing_frame), owning_building_guid = 1) - LocalObject(673, Terminal.Constructor(Vector3(2595.588f, 2306.601f, 99.1523f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(675, ProximityTerminal.Constructor(Vector3(2649.279f, 2206.042f, 99.1753f), pad_landing_frame), owning_building_guid = 1) - LocalObject(676, Terminal.Constructor(Vector3(2649.279f, 2206.042f, 99.1753f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(678, ProximityTerminal.Constructor(Vector3(2683.396f, 2333.743f, 101.3133f), pad_landing_frame), owning_building_guid = 1) - LocalObject(679, Terminal.Constructor(Vector3(2683.396f, 2333.743f, 101.3133f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(681, ProximityTerminal.Constructor(Vector3(2696.59f, 2254.297f, 99.1523f), pad_landing_frame), owning_building_guid = 1) - LocalObject(682, Terminal.Constructor(Vector3(2696.59f, 2254.297f, 99.1523f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(790, ProximityTerminal.Constructor(Vector3(2580.451f, 2288.745f, 90.0473f), repair_silo), owning_building_guid = 1) - LocalObject(791, Terminal.Constructor(Vector3(2580.451f, 2288.745f, 90.0473f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(794, ProximityTerminal.Constructor(Vector3(2711.908f, 2272.795f, 90.0473f), repair_silo), owning_building_guid = 1) - LocalObject(795, Terminal.Constructor(Vector3(2711.908f, 2272.795f, 90.0473f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(567, FacilityTurret.Constructor(Vector3(2558.204f, 2193.706f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 827, + SpawnTube.Constructor(Vector3(2629.001f, 2271.176f, 83.3473f), Vector3(0, 0, 7)), + owning_building_guid = 1 + ) + LocalObject( + 828, + SpawnTube.Constructor(Vector3(2629.89f, 2278.413f, 83.3473f), Vector3(0, 0, 7)), + owning_building_guid = 1 + ) + LocalObject( + 829, + SpawnTube.Constructor(Vector3(2630.778f, 2285.647f, 83.3473f), Vector3(0, 0, 7)), + owning_building_guid = 1 + ) + LocalObject( + 581, + ProximityTerminal.Constructor(Vector3(2628.116f, 2282.681f, 95.8473f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 582, + ProximityTerminal.Constructor(Vector3(2659.066f, 2284.549f, 75.8473f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 672, + ProximityTerminal.Constructor(Vector3(2595.588f, 2306.601f, 99.1523f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 673, + Terminal.Constructor(Vector3(2595.588f, 2306.601f, 99.1523f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 675, + ProximityTerminal.Constructor(Vector3(2649.279f, 2206.042f, 99.1753f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 676, + Terminal.Constructor(Vector3(2649.279f, 2206.042f, 99.1753f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 678, + ProximityTerminal.Constructor(Vector3(2683.396f, 2333.743f, 101.3133f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 679, + Terminal.Constructor(Vector3(2683.396f, 2333.743f, 101.3133f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 681, + ProximityTerminal.Constructor(Vector3(2696.59f, 2254.297f, 99.1523f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 682, + Terminal.Constructor(Vector3(2696.59f, 2254.297f, 99.1523f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 790, + ProximityTerminal.Constructor(Vector3(2580.451f, 2288.745f, 90.0473f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 791, + Terminal.Constructor(Vector3(2580.451f, 2288.745f, 90.0473f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 794, + ProximityTerminal.Constructor(Vector3(2711.908f, 2272.795f, 90.0473f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 795, + Terminal.Constructor(Vector3(2711.908f, 2272.795f, 90.0473f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 567, + FacilityTurret.Constructor(Vector3(2558.204f, 2193.706f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(567, 5000) - LocalObject(568, FacilityTurret.Constructor(Vector3(2582.754f, 2393.883f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 568, + FacilityTurret.Constructor(Vector3(2582.754f, 2393.883f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(568, 5001) - LocalObject(569, FacilityTurret.Constructor(Vector3(2617.075f, 2184.233f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 569, + FacilityTurret.Constructor(Vector3(2617.075f, 2184.233f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(569, 5002) - LocalObject(570, FacilityTurret.Constructor(Vector3(2710.489f, 2174.998f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 570, + FacilityTurret.Constructor(Vector3(2710.489f, 2174.998f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(570, 5003) - LocalObject(571, FacilityTurret.Constructor(Vector3(2729.554f, 2311.99f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 571, + FacilityTurret.Constructor(Vector3(2729.554f, 2311.99f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(571, 5004) - LocalObject(572, FacilityTurret.Constructor(Vector3(2735.076f, 2375.17f, 99.3553f), manned_turret), owning_building_guid = 1) + LocalObject( + 572, + FacilityTurret.Constructor(Vector3(2735.076f, 2375.17f, 99.3553f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(572, 5005) LocalObject(722, Painbox.Constructor(Vector3(2589.758f, 2280.462f, 80.7183f), painbox), owning_building_guid = 1) - LocalObject(725, Painbox.Constructor(Vector3(2637.525f, 2280.108f, 88.2957f), painbox_continuous), owning_building_guid = 1) - LocalObject(728, Painbox.Constructor(Vector3(2603.957f, 2280.862f, 77.3063f), painbox_door_radius), owning_building_guid = 1) - LocalObject(735, Painbox.Constructor(Vector3(2636.01f, 2264.526f, 84.5473f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(736, Painbox.Constructor(Vector3(2639.294f, 2290.668f, 84.6118f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(737, Painbox.Constructor(Vector3(2651.938f, 2283.749f, 86.5259f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 725, + Painbox.Constructor(Vector3(2637.525f, 2280.108f, 88.2957f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 728, + Painbox.Constructor(Vector3(2603.957f, 2280.862f, 77.3063f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 735, + Painbox.Constructor(Vector3(2636.01f, 2264.526f, 84.5473f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 736, + Painbox.Constructor(Vector3(2639.294f, 2290.668f, 84.6118f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 737, + Painbox.Constructor(Vector3(2651.938f, 2283.749f, 86.5259f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(97, Generator.Constructor(Vector3(2586.428f, 2283.75f, 74.5533f)), owning_building_guid = 1) - LocalObject(94, Terminal.Constructor(Vector3(2594.565f, 2282.799f, 75.8473f), gen_control), owning_building_guid = 1) + LocalObject( + 94, + Terminal.Constructor(Vector3(2594.565f, 2282.799f, 75.8473f), gen_control), + owning_building_guid = 1 + ) } Building17() def Building17(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 17 - LocalBuilding("bunker_gauntlet", 4, 17, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1222f, 1420f, 12.08533f), Vector3(0f, 0f, 238f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 17, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(1222f, 1420f, 12.08533f), + Vector3(0f, 0f, 238f), + bunker_gauntlet + ) + ) + ) LocalObject(98, Door.Constructor(Vector3(1207.181f, 1399.871f, 13.60633f)), owning_building_guid = 4) LocalObject(100, Door.Constructor(Vector3(1233.573f, 1442.128f, 13.60633f)), owning_building_guid = 4) } @@ -160,7 +421,19 @@ object Map98 { // Ascension Building15() def Building15(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 15 - LocalBuilding("bunker_gauntlet", 5, 15, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2542f, 2700f, 12.08045f), Vector3(0f, 0f, 146f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 15, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2542f, 2700f, 12.08045f), + Vector3(0f, 0f, 146f), + bunker_gauntlet + ) + ) + ) LocalObject(184, Door.Constructor(Vector3(2522.401f, 2715.513f, 13.60145f)), owning_building_guid = 5) LocalObject(186, Door.Constructor(Vector3(2563.71f, 2687.662f, 13.60145f)), owning_building_guid = 5) } @@ -168,7 +441,19 @@ object Map98 { // Ascension Building16() def Building16(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 16 - LocalBuilding("bunker_gauntlet", 6, 16, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2612f, 1350f, 11.46977f), Vector3(0f, 0f, 323f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 16, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2612f, 1350f, 11.46977f), + Vector3(0f, 0f, 323f), + bunker_gauntlet + ) + ) + ) LocalObject(193, Door.Constructor(Vector3(2590.965f, 1363.457f, 12.99077f)), owning_building_guid = 6) LocalObject(195, Door.Constructor(Vector3(2630.76f, 1333.483f, 12.99077f)), owning_building_guid = 6) } @@ -176,155 +461,318 @@ object Map98 { // Ascension Building22() def Building22(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 7, MapID: 22 - LocalBuilding("bunker_lg", 7, 22, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1570f, 2502f, 90.64242f), Vector3(0f, 0f, 263f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 7, + 22, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1570f, 2502f, 90.64242f), Vector3(0f, 0f, 263f), bunker_lg) + ) + ) LocalObject(120, Door.Constructor(Vector3(1572.22f, 2499.102f, 92.16342f)), owning_building_guid = 7) } Building32() def Building32(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 8, MapID: 32 - LocalBuilding("bunker_lg", 8, 32, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1674f, 1810f, 90.64486f), Vector3(0f, 0f, 263f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 8, + 32, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1674f, 1810f, 90.64486f), Vector3(0f, 0f, 263f), bunker_lg) + ) + ) LocalObject(125, Door.Constructor(Vector3(1676.22f, 1807.102f, 92.16586f)), owning_building_guid = 8) } Building33() def Building33(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 9, MapID: 33 - LocalBuilding("bunker_lg", 9, 33, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1728f, 1820f, 90.6473f), Vector3(0f, 0f, 182f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 9, + 33, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1728f, 1820f, 90.6473f), Vector3(0f, 0f, 182f), bunker_lg) + ) + ) LocalObject(129, Door.Constructor(Vector3(1725.485f, 1817.354f, 92.1683f)), owning_building_guid = 9) } Building30() def Building30(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 30 - LocalBuilding("bunker_lg", 10, 30, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1766f, 2594f, 90.64272f), Vector3(0f, 0f, 324f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 30, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1766f, 2594f, 90.64272f), Vector3(0f, 0f, 324f), bunker_lg) + ) + ) LocalObject(134, Door.Constructor(Vector3(1769.611f, 2594.537f, 92.16373f)), owning_building_guid = 10) } Building31() def Building31(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 11, MapID: 31 - LocalBuilding("bunker_lg", 11, 31, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1810f, 2570f, 90.64516f), Vector3(0f, 0f, 74f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 11, + 31, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1810f, 2570f, 90.64516f), Vector3(0f, 0f, 74f), bunker_lg) + ) + ) LocalObject(137, Door.Constructor(Vector3(1808.26f, 2573.21f, 92.16617f)), owning_building_guid = 11) } Building18() def Building18(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 12, MapID: 18 - LocalBuilding("bunker_lg", 12, 18, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2180f, 1398f, 30.41109f), Vector3(0f, 0f, 193f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 12, + 18, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2180f, 1398f, 30.41109f), Vector3(0f, 0f, 193f), bunker_lg) + ) + ) LocalObject(167, Door.Constructor(Vector3(2178.036f, 1394.922f, 31.93209f)), owning_building_guid = 12) } Building34() def Building34(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 13, MapID: 34 - LocalBuilding("bunker_lg", 13, 34, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2566f, 2174f, 90.6473f), Vector3(0f, 0f, 0f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 13, + 34, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2566f, 2174f, 90.6473f), Vector3(0f, 0f, 0f), bunker_lg) + ) + ) LocalObject(187, Door.Constructor(Vector3(2568.606f, 2176.557f, 92.1683f)), owning_building_guid = 13) } Building35() def Building35(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 14, MapID: 35 - LocalBuilding("bunker_lg", 14, 35, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2610f, 2164f, 90.6473f), Vector3(0f, 0f, 42f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 14, + 35, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2610f, 2164f, 90.6473f), Vector3(0f, 0f, 42f), bunker_lg) + ) + ) LocalObject(194, Door.Constructor(Vector3(2610.226f, 2167.644f, 92.1683f)), owning_building_guid = 14) } Building20() def Building20(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 15, MapID: 20 - LocalBuilding("bunker_lg", 15, 20, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2784f, 1826f, 54.0495f), Vector3(0f, 0f, 157f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 15, + 20, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2784f, 1826f, 54.0495f), Vector3(0f, 0f, 157f), bunker_lg) + ) + ) LocalObject(208, Door.Constructor(Vector3(2780.602f, 1824.665f, 55.5705f)), owning_building_guid = 15) } Building36() def Building36(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 16, MapID: 36 - LocalBuilding("bunker_sm", 16, 36, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1220f, 1754f, 71.60863f), Vector3(0f, 0f, 162f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 16, + 36, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1220f, 1754f, 71.60863f), Vector3(0f, 0f, 162f), bunker_sm) + ) + ) LocalObject(99, Door.Constructor(Vector3(1218.852f, 1754.431f, 73.12963f)), owning_building_guid = 16) } Building19() def Building19(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 17, MapID: 19 - LocalBuilding("bunker_sm", 17, 19, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1290f, 2306f, 55.9801f), Vector3(0f, 0f, 89f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 17, + 19, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1290f, 2306f, 55.9801f), Vector3(0f, 0f, 89f), bunker_sm) + ) + ) LocalObject(105, Door.Constructor(Vector3(1290.076f, 2307.224f, 57.5011f)), owning_building_guid = 17) } Building23() def Building23(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 18, MapID: 23 - LocalBuilding("bunker_sm", 18, 23, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1616f, 1468f, 52.67128f), Vector3(0f, 0f, 158f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 18, + 23, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1616f, 1468f, 52.67128f), Vector3(0f, 0f, 158f), bunker_sm) + ) + ) LocalObject(121, Door.Constructor(Vector3(1614.885f, 1468.51f, 54.19228f)), owning_building_guid = 18) } Building37() def Building37(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 19, MapID: 37 - LocalBuilding("bunker_sm", 19, 37, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1626f, 2798f, 74.2613f), Vector3(0f, 0f, 20f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 19, + 37, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1626f, 2798f, 74.2613f), Vector3(0f, 0f, 20f), bunker_sm) + ) + ) LocalObject(122, Door.Constructor(Vector3(1627.17f, 2798.367f, 75.7823f)), owning_building_guid = 19) } Building27() def Building27(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 20, MapID: 27 - LocalBuilding("bunker_sm", 20, 27, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1878f, 2080f, 110.9449f), Vector3(0f, 0f, 340f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 20, + 27, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1878f, 2080f, 110.9449f), Vector3(0f, 0f, 340f), bunker_sm) + ) + ) LocalObject(148, Door.Constructor(Vector3(1879.132f, 2079.529f, 112.4659f)), owning_building_guid = 20) } Building26() def Building26(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 21, MapID: 26 - LocalBuilding("bunker_sm", 21, 26, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1908f, 2020f, 110.9848f), Vector3(0f, 0f, 134f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 21, + 26, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1908f, 2020f, 110.9848f), Vector3(0f, 0f, 134f), bunker_sm) + ) + ) LocalObject(155, Door.Constructor(Vector3(1907.189f, 2020.919f, 112.5058f)), owning_building_guid = 21) } Building24() def Building24(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 22, MapID: 24 - LocalBuilding("bunker_sm", 22, 24, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2002f, 2332f, 114.5708f), Vector3(0f, 0f, 348f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 22, + 24, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2002f, 2332f, 114.5708f), Vector3(0f, 0f, 348f), bunker_sm) + ) + ) LocalObject(157, Door.Constructor(Vector3(2003.187f, 2331.691f, 116.0918f)), owning_building_guid = 22) } Building25() def Building25(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 23, MapID: 25 - LocalBuilding("bunker_sm", 23, 25, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2062f, 2362f, 114.0855f), Vector3(0f, 0f, 289f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 23, + 25, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2062f, 2362f, 114.0855f), Vector3(0f, 0f, 289f), bunker_sm) + ) + ) LocalObject(162, Door.Constructor(Vector3(2062.347f, 2360.824f, 115.6065f)), owning_building_guid = 23) } Building29() def Building29(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 24, MapID: 29 - LocalBuilding("bunker_sm", 24, 29, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2250f, 2170f, 110.7895f), Vector3(0f, 0f, 239f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 24, + 29, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2250f, 2170f, 110.7895f), Vector3(0f, 0f, 239f), bunker_sm) + ) + ) LocalObject(170, Door.Constructor(Vector3(2249.322f, 2168.978f, 112.3105f)), owning_building_guid = 24) } Building28() def Building28(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 25, MapID: 28 - LocalBuilding("bunker_sm", 25, 28, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2252f, 2092f, 110.7993f), Vector3(0f, 0f, 92f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 25, + 28, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2252f, 2092f, 110.7993f), Vector3(0f, 0f, 92f), bunker_sm) + ) + ) LocalObject(171, Door.Constructor(Vector3(2252.012f, 2093.226f, 112.3203f)), owning_building_guid = 25) } Building38() def Building38(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 26, MapID: 38 - LocalBuilding("bunker_sm", 26, 38, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2530f, 1478f, 79.27488f), Vector3(0f, 0f, 282f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 26, + 38, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2530f, 1478f, 79.27488f), Vector3(0f, 0f, 282f), bunker_sm) + ) + ) LocalObject(185, Door.Constructor(Vector3(2530.201f, 1476.79f, 80.79588f)), owning_building_guid = 26) } Building21() def Building21(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 27, MapID: 21 - LocalBuilding("bunker_sm", 27, 21, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2918f, 1934f, 50.3531f), Vector3(0f, 0f, 274f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 27, + 21, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2918f, 1934f, 50.3531f), Vector3(0f, 0f, 274f), bunker_sm) + ) + ) LocalObject(219, Door.Constructor(Vector3(2918.031f, 1932.774f, 51.8741f)), owning_building_guid = 27) } Building7() def Building7(): Unit = { // Name: Base_Alpha Type: comm_station GUID: 28, MapID: 7 - LocalBuilding("Base_Alpha", 28, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1834f, 2664f, 90.6473f), Vector3(0f, 0f, 107f), comm_station))) - LocalObject(77, CaptureTerminal.Constructor(Vector3(1747.729f, 2683.728f, 73.34731f), capture_terminal), owning_building_guid = 28) + LocalBuilding( + "Base_Alpha", + 28, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1834f, 2664f, 90.6473f), + Vector3(0f, 0f, 107f), + comm_station + ) + ) + ) + LocalObject( + 77, + CaptureTerminal.Constructor(Vector3(1747.729f, 2683.728f, 73.34731f), capture_terminal), + owning_building_guid = 28 + ) LocalObject(131, Door.Constructor(Vector3(1751.965f, 2672.381f, 92.3683f)), owning_building_guid = 28) LocalObject(132, Door.Constructor(Vector3(1763.528f, 2662.001f, 100.3613f)), owning_building_guid = 28) LocalObject(133, Door.Constructor(Vector3(1768.847f, 2644.604f, 92.3983f)), owning_building_guid = 28) @@ -366,18 +814,78 @@ object Map98 { // Ascension LocalObject(876, Door.Constructor(Vector3(1796.2f, 2690.792f, 82.7013f)), owning_building_guid = 28) LocalObject(877, Door.Constructor(Vector3(1803.171f, 2692.923f, 82.7013f)), owning_building_guid = 28) LocalObject(878, Door.Constructor(Vector3(1810.145f, 2695.055f, 82.7013f)), owning_building_guid = 28) - LocalObject(302, IFFLock.Constructor(Vector3(1828.852f, 2683.814f, 92.2993f), Vector3(0, 0, 343)), owning_building_guid = 28, door_guid = 290) - LocalObject(329, IFFLock.Constructor(Vector3(1749.793f, 2672.531f, 92.2973f), Vector3(0, 0, 343)), owning_building_guid = 28, door_guid = 131) - LocalObject(330, IFFLock.Constructor(Vector3(1753.196f, 2690.339f, 74.6833f), Vector3(0, 0, 343)), owning_building_guid = 28, door_guid = 239) - LocalObject(331, IFFLock.Constructor(Vector3(1759.017f, 2682.053f, 74.6833f), Vector3(0, 0, 163)), owning_building_guid = 28, door_guid = 240) - LocalObject(332, IFFLock.Constructor(Vector3(1790.219f, 2694.981f, 82.1833f), Vector3(0, 0, 253)), owning_building_guid = 28, door_guid = 247) - LocalObject(333, IFFLock.Constructor(Vector3(1807.93f, 2713.605f, 74.6833f), Vector3(0, 0, 163)), owning_building_guid = 28, door_guid = 254) - LocalObject(334, IFFLock.Constructor(Vector3(1813.8f, 2705.479f, 82.1833f), Vector3(0, 0, 73)), owning_building_guid = 28, door_guid = 256) - LocalObject(335, IFFLock.Constructor(Vector3(1814.728f, 2665.624f, 97.3083f), Vector3(0, 0, 163)), owning_building_guid = 28, door_guid = 140) - LocalObject(336, IFFLock.Constructor(Vector3(1817.335f, 2639.635f, 74.6833f), Vector3(0, 0, 73)), owning_building_guid = 28, door_guid = 258) - LocalObject(338, IFFLock.Constructor(Vector3(1839.388f, 2642.597f, 97.3083f), Vector3(0, 0, 253)), owning_building_guid = 28, door_guid = 144) - LocalObject(339, IFFLock.Constructor(Vector3(1844.59f, 2661.818f, 104.7283f), Vector3(0, 0, 163)), owning_building_guid = 28, door_guid = 145) - LocalObject(340, IFFLock.Constructor(Vector3(1848.41f, 2649.632f, 97.3083f), Vector3(0, 0, 73)), owning_building_guid = 28, door_guid = 146) + LocalObject( + 302, + IFFLock.Constructor(Vector3(1828.852f, 2683.814f, 92.2993f), Vector3(0, 0, 343)), + owning_building_guid = 28, + door_guid = 290 + ) + LocalObject( + 329, + IFFLock.Constructor(Vector3(1749.793f, 2672.531f, 92.2973f), Vector3(0, 0, 343)), + owning_building_guid = 28, + door_guid = 131 + ) + LocalObject( + 330, + IFFLock.Constructor(Vector3(1753.196f, 2690.339f, 74.6833f), Vector3(0, 0, 343)), + owning_building_guid = 28, + door_guid = 239 + ) + LocalObject( + 331, + IFFLock.Constructor(Vector3(1759.017f, 2682.053f, 74.6833f), Vector3(0, 0, 163)), + owning_building_guid = 28, + door_guid = 240 + ) + LocalObject( + 332, + IFFLock.Constructor(Vector3(1790.219f, 2694.981f, 82.1833f), Vector3(0, 0, 253)), + owning_building_guid = 28, + door_guid = 247 + ) + LocalObject( + 333, + IFFLock.Constructor(Vector3(1807.93f, 2713.605f, 74.6833f), Vector3(0, 0, 163)), + owning_building_guid = 28, + door_guid = 254 + ) + LocalObject( + 334, + IFFLock.Constructor(Vector3(1813.8f, 2705.479f, 82.1833f), Vector3(0, 0, 73)), + owning_building_guid = 28, + door_guid = 256 + ) + LocalObject( + 335, + IFFLock.Constructor(Vector3(1814.728f, 2665.624f, 97.3083f), Vector3(0, 0, 163)), + owning_building_guid = 28, + door_guid = 140 + ) + LocalObject( + 336, + IFFLock.Constructor(Vector3(1817.335f, 2639.635f, 74.6833f), Vector3(0, 0, 73)), + owning_building_guid = 28, + door_guid = 258 + ) + LocalObject( + 338, + IFFLock.Constructor(Vector3(1839.388f, 2642.597f, 97.3083f), Vector3(0, 0, 253)), + owning_building_guid = 28, + door_guid = 144 + ) + LocalObject( + 339, + IFFLock.Constructor(Vector3(1844.59f, 2661.818f, 104.7283f), Vector3(0, 0, 163)), + owning_building_guid = 28, + door_guid = 145 + ) + LocalObject( + 340, + IFFLock.Constructor(Vector3(1848.41f, 2649.632f, 97.3083f), Vector3(0, 0, 73)), + owning_building_guid = 28, + door_guid = 146 + ) LocalObject(441, Locker.Constructor(Vector3(1784.474f, 2722.818f, 73.34731f)), owning_building_guid = 28) LocalObject(442, Locker.Constructor(Vector3(1784.865f, 2721.54f, 73.34731f)), owning_building_guid = 28) LocalObject(443, Locker.Constructor(Vector3(1785.256f, 2720.262f, 73.34731f)), owning_building_guid = 28) @@ -390,60 +898,229 @@ object Map98 { // Ascension LocalObject(450, Locker.Constructor(Vector3(1809.72f, 2708.73f, 81.1083f)), owning_building_guid = 28) LocalObject(451, Locker.Constructor(Vector3(1810.056f, 2707.633f, 81.1083f)), owning_building_guid = 28) LocalObject(452, Locker.Constructor(Vector3(1810.396f, 2706.52f, 81.1083f)), owning_building_guid = 28) - LocalObject(599, Terminal.Constructor(Vector3(1797.264f, 2705.737f, 82.4373f), order_terminal), owning_building_guid = 28) - LocalObject(600, Terminal.Constructor(Vector3(1800.887f, 2706.845f, 82.4373f), order_terminal), owning_building_guid = 28) - LocalObject(601, Terminal.Constructor(Vector3(1804.455f, 2707.936f, 82.4373f), order_terminal), owning_building_guid = 28) - LocalObject(602, Terminal.Constructor(Vector3(1838.267f, 2667.743f, 104.6023f), order_terminal), owning_building_guid = 28) - LocalObject(603, Terminal.Constructor(Vector3(1841.105f, 2666.251f, 104.6023f), order_terminal), owning_building_guid = 28) - LocalObject(604, Terminal.Constructor(Vector3(1842.47f, 2669.027f, 104.6023f), order_terminal), owning_building_guid = 28) - LocalObject(605, Terminal.Constructor(Vector3(1858.897f, 2661.551f, 97.2073f), order_terminal), owning_building_guid = 28) - LocalObject(853, Terminal.Constructor(Vector3(1795.976f, 2651.757f, 84.9043f), spawn_terminal), owning_building_guid = 28) - LocalObject(854, Terminal.Constructor(Vector3(1798.496f, 2691.805f, 82.9813f), spawn_terminal), owning_building_guid = 28) - LocalObject(855, Terminal.Constructor(Vector3(1805.467f, 2693.933f, 82.9813f), spawn_terminal), owning_building_guid = 28) - LocalObject(856, Terminal.Constructor(Vector3(1812.439f, 2696.068f, 82.9813f), spawn_terminal), owning_building_guid = 28) - LocalObject(857, Terminal.Constructor(Vector3(1830.479f, 2646.133f, 74.9043f), spawn_terminal), owning_building_guid = 28) - LocalObject(858, Terminal.Constructor(Vector3(1857.417f, 2669.601f, 97.4643f), spawn_terminal), owning_building_guid = 28) - LocalObject(916, Terminal.Constructor(Vector3(1766.282f, 2698.151f, 93.5343f), vehicle_terminal_combined), owning_building_guid = 28) - LocalObject(575, VehicleSpawnPad.Constructor(Vector3(1770.413f, 2685.167f, 89.3763f), mb_pad_creation, Vector3(0, 0, 163)), owning_building_guid = 28, terminal_guid = 916) + LocalObject( + 599, + Terminal.Constructor(Vector3(1797.264f, 2705.737f, 82.4373f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 600, + Terminal.Constructor(Vector3(1800.887f, 2706.845f, 82.4373f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 601, + Terminal.Constructor(Vector3(1804.455f, 2707.936f, 82.4373f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 602, + Terminal.Constructor(Vector3(1838.267f, 2667.743f, 104.6023f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 603, + Terminal.Constructor(Vector3(1841.105f, 2666.251f, 104.6023f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 604, + Terminal.Constructor(Vector3(1842.47f, 2669.027f, 104.6023f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 605, + Terminal.Constructor(Vector3(1858.897f, 2661.551f, 97.2073f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(1795.976f, 2651.757f, 84.9043f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(1798.496f, 2691.805f, 82.9813f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(1805.467f, 2693.933f, 82.9813f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 856, + Terminal.Constructor(Vector3(1812.439f, 2696.068f, 82.9813f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(1830.479f, 2646.133f, 74.9043f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(1857.417f, 2669.601f, 97.4643f), spawn_terminal), + owning_building_guid = 28 + ) + LocalObject( + 916, + Terminal.Constructor(Vector3(1766.282f, 2698.151f, 93.5343f), vehicle_terminal_combined), + owning_building_guid = 28 + ) + LocalObject( + 575, + VehicleSpawnPad.Constructor(Vector3(1770.413f, 2685.167f, 89.3763f), mb_pad_creation, Vector3(0, 0, 163)), + owning_building_guid = 28, + terminal_guid = 916 + ) LocalObject(799, ResourceSilo.Constructor(Vector3(1916.379f, 2630.867f, 97.8643f)), owning_building_guid = 28) - LocalObject(812, SpawnTube.Constructor(Vector3(1797.336f, 2690.679f, 80.8473f), Vector3(0, 0, 253)), owning_building_guid = 28) - LocalObject(813, SpawnTube.Constructor(Vector3(1804.305f, 2692.81f, 80.8473f), Vector3(0, 0, 253)), owning_building_guid = 28) - LocalObject(814, SpawnTube.Constructor(Vector3(1811.278f, 2694.942f, 80.8473f), Vector3(0, 0, 253)), owning_building_guid = 28) - LocalObject(579, ProximityTerminal.Constructor(Vector3(1786.833f, 2716.968f, 73.34731f), medical_terminal), owning_building_guid = 28) - LocalObject(580, ProximityTerminal.Constructor(Vector3(1861.458f, 2673.298f, 90.8473f), medical_terminal), owning_building_guid = 28) - LocalObject(666, ProximityTerminal.Constructor(Vector3(1786.736f, 2629.843f, 99.0883f), pad_landing_frame), owning_building_guid = 28) - LocalObject(667, Terminal.Constructor(Vector3(1786.736f, 2629.843f, 99.0883f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(782, ProximityTerminal.Constructor(Vector3(1829.694f, 2598.804f, 90.3973f), repair_silo), owning_building_guid = 28) - LocalObject(783, Terminal.Constructor(Vector3(1829.694f, 2598.804f, 90.3973f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(786, ProximityTerminal.Constructor(Vector3(1839.245f, 2730.061f, 90.3973f), repair_silo), owning_building_guid = 28) - LocalObject(787, Terminal.Constructor(Vector3(1839.245f, 2730.061f, 90.3973f), ground_rearm_terminal), owning_building_guid = 28) - LocalObject(548, FacilityTurret.Constructor(Vector3(1735.783f, 2710.141f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 812, + SpawnTube.Constructor(Vector3(1797.336f, 2690.679f, 80.8473f), Vector3(0, 0, 253)), + owning_building_guid = 28 + ) + LocalObject( + 813, + SpawnTube.Constructor(Vector3(1804.305f, 2692.81f, 80.8473f), Vector3(0, 0, 253)), + owning_building_guid = 28 + ) + LocalObject( + 814, + SpawnTube.Constructor(Vector3(1811.278f, 2694.942f, 80.8473f), Vector3(0, 0, 253)), + owning_building_guid = 28 + ) + LocalObject( + 579, + ProximityTerminal.Constructor(Vector3(1786.833f, 2716.968f, 73.34731f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 580, + ProximityTerminal.Constructor(Vector3(1861.458f, 2673.298f, 90.8473f), medical_terminal), + owning_building_guid = 28 + ) + LocalObject( + 666, + ProximityTerminal.Constructor(Vector3(1786.736f, 2629.843f, 99.0883f), pad_landing_frame), + owning_building_guid = 28 + ) + LocalObject( + 667, + Terminal.Constructor(Vector3(1786.736f, 2629.843f, 99.0883f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 782, + ProximityTerminal.Constructor(Vector3(1829.694f, 2598.804f, 90.3973f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 783, + Terminal.Constructor(Vector3(1829.694f, 2598.804f, 90.3973f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 786, + ProximityTerminal.Constructor(Vector3(1839.245f, 2730.061f, 90.3973f), repair_silo), + owning_building_guid = 28 + ) + LocalObject( + 787, + Terminal.Constructor(Vector3(1839.245f, 2730.061f, 90.3973f), ground_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 548, + FacilityTurret.Constructor(Vector3(1735.783f, 2710.141f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(548, 5006) - LocalObject(550, FacilityTurret.Constructor(Vector3(1764.725f, 2610.978f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 550, + FacilityTurret.Constructor(Vector3(1764.725f, 2610.978f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(550, 5007) - LocalObject(552, FacilityTurret.Constructor(Vector3(1818.548f, 2582.338f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 552, + FacilityTurret.Constructor(Vector3(1818.548f, 2582.338f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(552, 5008) - LocalObject(553, FacilityTurret.Constructor(Vector3(1849.178f, 2746.032f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 553, + FacilityTurret.Constructor(Vector3(1849.178f, 2746.032f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(553, 5009) - LocalObject(556, FacilityTurret.Constructor(Vector3(1903.022f, 2717.377f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 556, + FacilityTurret.Constructor(Vector3(1903.022f, 2717.377f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(556, 5010) - LocalObject(558, FacilityTurret.Constructor(Vector3(1932.102f, 2618.236f, 99.3553f), manned_turret), owning_building_guid = 28) + LocalObject( + 558, + FacilityTurret.Constructor(Vector3(1932.102f, 2618.236f, 99.3553f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(558, 5011) LocalObject(721, Painbox.Constructor(Vector3(1805.295f, 2634.455f, 78.2493f), painbox), owning_building_guid = 28) - LocalObject(724, Painbox.Constructor(Vector3(1795.462f, 2700.544f, 85.2921f), painbox_continuous), owning_building_guid = 28) - LocalObject(727, Painbox.Constructor(Vector3(1819.626f, 2638.939f, 76.106f), painbox_door_radius), owning_building_guid = 28) - LocalObject(732, Painbox.Constructor(Vector3(1788.939f, 2697.081f, 82.455f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(733, Painbox.Constructor(Vector3(1790.474f, 2711.191f, 83.6733f), painbox_door_radius_continuous), owning_building_guid = 28) - LocalObject(734, Painbox.Constructor(Vector3(1815.351f, 2704.219f, 82.6733f), painbox_door_radius_continuous), owning_building_guid = 28) + LocalObject( + 724, + Painbox.Constructor(Vector3(1795.462f, 2700.544f, 85.2921f), painbox_continuous), + owning_building_guid = 28 + ) + LocalObject( + 727, + Painbox.Constructor(Vector3(1819.626f, 2638.939f, 76.106f), painbox_door_radius), + owning_building_guid = 28 + ) + LocalObject( + 732, + Painbox.Constructor(Vector3(1788.939f, 2697.081f, 82.455f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 733, + Painbox.Constructor(Vector3(1790.474f, 2711.191f, 83.6733f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 734, + Painbox.Constructor(Vector3(1815.351f, 2704.219f, 82.6733f), painbox_door_radius_continuous), + owning_building_guid = 28 + ) LocalObject(96, Generator.Constructor(Vector3(1802.028f, 2633.285f, 72.0533f)), owning_building_guid = 28) - LocalObject(93, Terminal.Constructor(Vector3(1809.848f, 2635.725f, 73.34731f), gen_control), owning_building_guid = 28) + LocalObject( + 93, + Terminal.Constructor(Vector3(1809.848f, 2635.725f, 73.34731f), gen_control), + owning_building_guid = 28 + ) } Building8() def Building8(): Unit = { // Name: Base_Bravo Type: cryo_facility GUID: 31, MapID: 8 - LocalBuilding("Base_Bravo", 31, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1736f, 1730f, 90.6473f), Vector3(0f, 0f, 57f), cryo_facility))) - LocalObject(76, CaptureTerminal.Constructor(Vector3(1670.997f, 1738.721f, 80.6473f), capture_terminal), owning_building_guid = 31) + LocalBuilding( + "Base_Bravo", + 31, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1736f, 1730f, 90.6473f), + Vector3(0f, 0f, 57f), + cryo_facility + ) + ) + ) + LocalObject( + 76, + CaptureTerminal.Constructor(Vector3(1670.997f, 1738.721f, 80.6473f), capture_terminal), + owning_building_guid = 31 + ) LocalObject(123, Door.Constructor(Vector3(1656.083f, 1731.431f, 92.1983f)), owning_building_guid = 31) LocalObject(124, Door.Constructor(Vector3(1665.992f, 1746.688f, 100.1623f)), owning_building_guid = 31) LocalObject(126, Door.Constructor(Vector3(1684.847f, 1692.897f, 100.1623f)), owning_building_guid = 31) @@ -484,15 +1161,60 @@ object Map98 { // Ascension LocalObject(873, Door.Constructor(Vector3(1721.508f, 1744.983f, 82.5013f)), owning_building_guid = 31) LocalObject(874, Door.Constructor(Vector3(1727.621f, 1741.014f, 82.5013f)), owning_building_guid = 31) LocalObject(875, Door.Constructor(Vector3(1733.737f, 1737.042f, 82.5013f)), owning_building_guid = 31) - LocalObject(301, IFFLock.Constructor(Vector3(1713.086f, 1745.799f, 92.1293f), Vector3(0, 0, 303)), owning_building_guid = 31, door_guid = 289) - LocalObject(322, IFFLock.Constructor(Vector3(1662.348f, 1738.553f, 81.9833f), Vector3(0, 0, 213)), owning_building_guid = 31, door_guid = 220) - LocalObject(323, IFFLock.Constructor(Vector3(1665.023f, 1748.445f, 81.9833f), Vector3(0, 0, 33)), owning_building_guid = 31, door_guid = 221) - LocalObject(324, IFFLock.Constructor(Vector3(1709.242f, 1729.269f, 102.0993f), Vector3(0, 0, 33)), owning_building_guid = 31, door_guid = 128) - LocalObject(325, IFFLock.Constructor(Vector3(1720.872f, 1752.258f, 81.9833f), Vector3(0, 0, 303)), owning_building_guid = 31, door_guid = 231) - LocalObject(326, IFFLock.Constructor(Vector3(1733.745f, 1733.794f, 102.0993f), Vector3(0, 0, 303)), owning_building_guid = 31, door_guid = 130) - LocalObject(327, IFFLock.Constructor(Vector3(1744.071f, 1740.941f, 81.9833f), Vector3(0, 0, 123)), owning_building_guid = 31, door_guid = 235) - LocalObject(328, IFFLock.Constructor(Vector3(1746.594f, 1750.771f, 74.4833f), Vector3(0, 0, 213)), owning_building_guid = 31, door_guid = 237) - LocalObject(337, IFFLock.Constructor(Vector3(1829.317f, 1708.526f, 92.0993f), Vector3(0, 0, 33)), owning_building_guid = 31, door_guid = 143) + LocalObject( + 301, + IFFLock.Constructor(Vector3(1713.086f, 1745.799f, 92.1293f), Vector3(0, 0, 303)), + owning_building_guid = 31, + door_guid = 289 + ) + LocalObject( + 322, + IFFLock.Constructor(Vector3(1662.348f, 1738.553f, 81.9833f), Vector3(0, 0, 213)), + owning_building_guid = 31, + door_guid = 220 + ) + LocalObject( + 323, + IFFLock.Constructor(Vector3(1665.023f, 1748.445f, 81.9833f), Vector3(0, 0, 33)), + owning_building_guid = 31, + door_guid = 221 + ) + LocalObject( + 324, + IFFLock.Constructor(Vector3(1709.242f, 1729.269f, 102.0993f), Vector3(0, 0, 33)), + owning_building_guid = 31, + door_guid = 128 + ) + LocalObject( + 325, + IFFLock.Constructor(Vector3(1720.872f, 1752.258f, 81.9833f), Vector3(0, 0, 303)), + owning_building_guid = 31, + door_guid = 231 + ) + LocalObject( + 326, + IFFLock.Constructor(Vector3(1733.745f, 1733.794f, 102.0993f), Vector3(0, 0, 303)), + owning_building_guid = 31, + door_guid = 130 + ) + LocalObject( + 327, + IFFLock.Constructor(Vector3(1744.071f, 1740.941f, 81.9833f), Vector3(0, 0, 123)), + owning_building_guid = 31, + door_guid = 235 + ) + LocalObject( + 328, + IFFLock.Constructor(Vector3(1746.594f, 1750.771f, 74.4833f), Vector3(0, 0, 213)), + owning_building_guid = 31, + door_guid = 237 + ) + LocalObject( + 337, + IFFLock.Constructor(Vector3(1829.317f, 1708.526f, 92.0993f), Vector3(0, 0, 33)), + owning_building_guid = 31, + door_guid = 143 + ) LocalObject(420, Locker.Constructor(Vector3(1701.161f, 1776.469f, 80.6423f)), owning_building_guid = 31) LocalObject(421, Locker.Constructor(Vector3(1702.211f, 1775.787f, 80.6423f)), owning_building_guid = 31) LocalObject(422, Locker.Constructor(Vector3(1703.269f, 1775.099f, 80.6423f)), owning_building_guid = 31) @@ -522,86 +1244,330 @@ object Map98 { // Ascension LocalObject(534, Locker.Constructor(Vector3(1753.21f, 1740.596f, 90.4183f)), owning_building_guid = 31) LocalObject(535, Locker.Constructor(Vector3(1755.321f, 1739.226f, 90.6473f)), owning_building_guid = 31) LocalObject(536, Locker.Constructor(Vector3(1756.188f, 1738.662f, 90.6473f)), owning_building_guid = 31) - LocalObject(79, Terminal.Constructor(Vector3(1690.205f, 1764.18f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(80, Terminal.Constructor(Vector3(1690.63f, 1762.177f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(81, Terminal.Constructor(Vector3(1696.774f, 1758.188f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(82, Terminal.Constructor(Vector3(1697.122f, 1774.831f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(83, Terminal.Constructor(Vector3(1698.777f, 1758.613f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(84, Terminal.Constructor(Vector3(1699.125f, 1775.257f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(85, Terminal.Constructor(Vector3(1705.268f, 1771.268f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(86, Terminal.Constructor(Vector3(1705.694f, 1769.265f, 80.6373f), cert_terminal), owning_building_guid = 31) - LocalObject(595, Terminal.Constructor(Vector3(1722.549f, 1726.778f, 91.9423f), order_terminal), owning_building_guid = 31) - LocalObject(596, Terminal.Constructor(Vector3(1733.64f, 1753.775f, 82.2373f), order_terminal), owning_building_guid = 31) - LocalObject(597, Terminal.Constructor(Vector3(1736.818f, 1751.711f, 82.2373f), order_terminal), owning_building_guid = 31) - LocalObject(598, Terminal.Constructor(Vector3(1739.947f, 1749.679f, 82.2373f), order_terminal), owning_building_guid = 31) - LocalObject(846, Terminal.Constructor(Vector3(1682.002f, 1764.36f, 82.2603f), spawn_terminal), owning_building_guid = 31) - LocalObject(847, Terminal.Constructor(Vector3(1714.712f, 1696.13f, 82.2603f), spawn_terminal), owning_building_guid = 31) - LocalObject(848, Terminal.Constructor(Vector3(1723.759f, 1743.875f, 82.7813f), spawn_terminal), owning_building_guid = 31) - LocalObject(849, Terminal.Constructor(Vector3(1729.87f, 1739.903f, 82.7813f), spawn_terminal), owning_building_guid = 31) - LocalObject(850, Terminal.Constructor(Vector3(1735.988f, 1735.935f, 82.7813f), spawn_terminal), owning_building_guid = 31) - LocalObject(851, Terminal.Constructor(Vector3(1748.478f, 1724.168f, 92.2263f), spawn_terminal), owning_building_guid = 31) - LocalObject(852, Terminal.Constructor(Vector3(1774.697f, 1685.685f, 84.7603f), spawn_terminal), owning_building_guid = 31) - LocalObject(917, Terminal.Constructor(Vector3(1809.486f, 1727.144f, 92.9523f), vehicle_terminal_combined), owning_building_guid = 31) - LocalObject(576, VehicleSpawnPad.Constructor(Vector3(1802.133f, 1715.656f, 88.7943f), mb_pad_creation, Vector3(0, 0, 213)), owning_building_guid = 31, terminal_guid = 917) + LocalObject( + 79, + Terminal.Constructor(Vector3(1690.205f, 1764.18f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 80, + Terminal.Constructor(Vector3(1690.63f, 1762.177f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 81, + Terminal.Constructor(Vector3(1696.774f, 1758.188f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 82, + Terminal.Constructor(Vector3(1697.122f, 1774.831f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 83, + Terminal.Constructor(Vector3(1698.777f, 1758.613f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 84, + Terminal.Constructor(Vector3(1699.125f, 1775.257f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 85, + Terminal.Constructor(Vector3(1705.268f, 1771.268f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 86, + Terminal.Constructor(Vector3(1705.694f, 1769.265f, 80.6373f), cert_terminal), + owning_building_guid = 31 + ) + LocalObject( + 595, + Terminal.Constructor(Vector3(1722.549f, 1726.778f, 91.9423f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 596, + Terminal.Constructor(Vector3(1733.64f, 1753.775f, 82.2373f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 597, + Terminal.Constructor(Vector3(1736.818f, 1751.711f, 82.2373f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 598, + Terminal.Constructor(Vector3(1739.947f, 1749.679f, 82.2373f), order_terminal), + owning_building_guid = 31 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(1682.002f, 1764.36f, 82.2603f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(1714.712f, 1696.13f, 82.2603f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(1723.759f, 1743.875f, 82.7813f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 849, + Terminal.Constructor(Vector3(1729.87f, 1739.903f, 82.7813f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(1735.988f, 1735.935f, 82.7813f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(1748.478f, 1724.168f, 92.2263f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(1774.697f, 1685.685f, 84.7603f), spawn_terminal), + owning_building_guid = 31 + ) + LocalObject( + 917, + Terminal.Constructor(Vector3(1809.486f, 1727.144f, 92.9523f), vehicle_terminal_combined), + owning_building_guid = 31 + ) + LocalObject( + 576, + VehicleSpawnPad.Constructor(Vector3(1802.133f, 1715.656f, 88.7943f), mb_pad_creation, Vector3(0, 0, 213)), + owning_building_guid = 31, + terminal_guid = 917 + ) LocalObject(798, ResourceSilo.Constructor(Vector3(1660.528f, 1707.152f, 97.6643f)), owning_building_guid = 31) - LocalObject(809, SpawnTube.Constructor(Vector3(1722.151f, 1744.041f, 80.6473f), Vector3(0, 0, 303)), owning_building_guid = 31) - LocalObject(810, SpawnTube.Constructor(Vector3(1728.263f, 1740.072f, 80.6473f), Vector3(0, 0, 303)), owning_building_guid = 31) - LocalObject(811, SpawnTube.Constructor(Vector3(1734.378f, 1736.101f, 80.6473f), Vector3(0, 0, 303)), owning_building_guid = 31) - LocalObject(70, ProximityTerminal.Constructor(Vector3(1743.041f, 1727.792f, 90.4573f), adv_med_terminal), owning_building_guid = 31) - LocalObject(578, ProximityTerminal.Constructor(Vector3(1747.74f, 1755.335f, 80.6473f), medical_terminal), owning_building_guid = 31) - LocalObject(657, ProximityTerminal.Constructor(Vector3(1682.89f, 1746.725f, 98.9893f), pad_landing_frame), owning_building_guid = 31) - LocalObject(658, Terminal.Constructor(Vector3(1682.89f, 1746.725f, 98.9893f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(660, ProximityTerminal.Constructor(Vector3(1698.768f, 1755.756f, 100.9793f), pad_landing_frame), owning_building_guid = 31) - LocalObject(661, Terminal.Constructor(Vector3(1698.768f, 1755.756f, 100.9793f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(663, ProximityTerminal.Constructor(Vector3(1778.079f, 1681.071f, 100.9403f), pad_landing_frame), owning_building_guid = 31) - LocalObject(664, Terminal.Constructor(Vector3(1778.079f, 1681.071f, 100.9403f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(669, ProximityTerminal.Constructor(Vector3(1793.074f, 1690.787f, 98.9993f), pad_landing_frame), owning_building_guid = 31) - LocalObject(670, Terminal.Constructor(Vector3(1793.074f, 1690.787f, 98.9993f), air_rearm_terminal), owning_building_guid = 31) - LocalObject(774, ProximityTerminal.Constructor(Vector3(1751.308f, 1782.694f, 90.3973f), repair_silo), owning_building_guid = 31) - LocalObject(775, Terminal.Constructor(Vector3(1751.308f, 1782.694f, 90.3973f), ground_rearm_terminal), owning_building_guid = 31) - LocalObject(778, ProximityTerminal.Constructor(Vector3(1787.837f, 1654.037f, 90.3973f), repair_silo), owning_building_guid = 31) - LocalObject(779, Terminal.Constructor(Vector3(1787.837f, 1654.037f, 90.3973f), ground_rearm_terminal), owning_building_guid = 31) - LocalObject(546, FacilityTurret.Constructor(Vector3(1629.51f, 1713.773f, 99.0493f), manned_turret), owning_building_guid = 31) + LocalObject( + 809, + SpawnTube.Constructor(Vector3(1722.151f, 1744.041f, 80.6473f), Vector3(0, 0, 303)), + owning_building_guid = 31 + ) + LocalObject( + 810, + SpawnTube.Constructor(Vector3(1728.263f, 1740.072f, 80.6473f), Vector3(0, 0, 303)), + owning_building_guid = 31 + ) + LocalObject( + 811, + SpawnTube.Constructor(Vector3(1734.378f, 1736.101f, 80.6473f), Vector3(0, 0, 303)), + owning_building_guid = 31 + ) + LocalObject( + 70, + ProximityTerminal.Constructor(Vector3(1743.041f, 1727.792f, 90.4573f), adv_med_terminal), + owning_building_guid = 31 + ) + LocalObject( + 578, + ProximityTerminal.Constructor(Vector3(1747.74f, 1755.335f, 80.6473f), medical_terminal), + owning_building_guid = 31 + ) + LocalObject( + 657, + ProximityTerminal.Constructor(Vector3(1682.89f, 1746.725f, 98.9893f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 658, + Terminal.Constructor(Vector3(1682.89f, 1746.725f, 98.9893f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 660, + ProximityTerminal.Constructor(Vector3(1698.768f, 1755.756f, 100.9793f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 661, + Terminal.Constructor(Vector3(1698.768f, 1755.756f, 100.9793f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 663, + ProximityTerminal.Constructor(Vector3(1778.079f, 1681.071f, 100.9403f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 664, + Terminal.Constructor(Vector3(1778.079f, 1681.071f, 100.9403f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 669, + ProximityTerminal.Constructor(Vector3(1793.074f, 1690.787f, 98.9993f), pad_landing_frame), + owning_building_guid = 31 + ) + LocalObject( + 670, + Terminal.Constructor(Vector3(1793.074f, 1690.787f, 98.9993f), air_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 774, + ProximityTerminal.Constructor(Vector3(1751.308f, 1782.694f, 90.3973f), repair_silo), + owning_building_guid = 31 + ) + LocalObject( + 775, + Terminal.Constructor(Vector3(1751.308f, 1782.694f, 90.3973f), ground_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 778, + ProximityTerminal.Constructor(Vector3(1787.837f, 1654.037f, 90.3973f), repair_silo), + owning_building_guid = 31 + ) + LocalObject( + 779, + Terminal.Constructor(Vector3(1787.837f, 1654.037f, 90.3973f), ground_rearm_terminal), + owning_building_guid = 31 + ) + LocalObject( + 546, + FacilityTurret.Constructor(Vector3(1629.51f, 1713.773f, 99.0493f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(546, 5012) - LocalObject(547, FacilityTurret.Constructor(Vector3(1679.36f, 1792.615f, 99.0493f), manned_turret), owning_building_guid = 31) + LocalObject( + 547, + FacilityTurret.Constructor(Vector3(1679.36f, 1792.615f, 99.0493f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(547, 5013) - LocalObject(549, FacilityTurret.Constructor(Vector3(1739.014f, 1805.323f, 99.0493f), manned_turret), owning_building_guid = 31) + LocalObject( + 549, + FacilityTurret.Constructor(Vector3(1739.014f, 1805.323f, 99.0493f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(549, 5014) - LocalObject(551, FacilityTurret.Constructor(Vector3(1778.037f, 1617.328f, 99.0493f), manned_turret), owning_building_guid = 31) + LocalObject( + 551, + FacilityTurret.Constructor(Vector3(1778.037f, 1617.328f, 99.0493f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(551, 5015) - LocalObject(554, FacilityTurret.Constructor(Vector3(1851.693f, 1730.733f, 99.0493f), manned_turret), owning_building_guid = 31) + LocalObject( + 554, + FacilityTurret.Constructor(Vector3(1851.693f, 1730.733f, 99.0493f), manned_turret), + owning_building_guid = 31 + ) TurretToWeapon(554, 5016) - LocalObject(296, ImplantTerminalMech.Constructor(Vector3(1691.387f, 1770.96f, 80.1243f)), owning_building_guid = 31) - LocalObject(294, Terminal.Constructor(Vector3(1691.402f, 1770.95f, 80.1243f), implant_terminal_interface), owning_building_guid = 31) + LocalObject( + 296, + ImplantTerminalMech.Constructor(Vector3(1691.387f, 1770.96f, 80.1243f)), + owning_building_guid = 31 + ) + LocalObject( + 294, + Terminal.Constructor(Vector3(1691.402f, 1770.95f, 80.1243f), implant_terminal_interface), + owning_building_guid = 31 + ) TerminalToInterface(296, 294) - LocalObject(297, ImplantTerminalMech.Constructor(Vector3(1704.272f, 1762.607f, 80.1243f)), owning_building_guid = 31) - LocalObject(295, Terminal.Constructor(Vector3(1704.257f, 1762.616f, 80.1243f), implant_terminal_interface), owning_building_guid = 31) + LocalObject( + 297, + ImplantTerminalMech.Constructor(Vector3(1704.272f, 1762.607f, 80.1243f)), + owning_building_guid = 31 + ) + LocalObject( + 295, + Terminal.Constructor(Vector3(1704.257f, 1762.616f, 80.1243f), implant_terminal_interface), + owning_building_guid = 31 + ) TerminalToInterface(297, 295) LocalObject(720, Painbox.Constructor(Vector3(1755.54f, 1723.98f, 104.6761f), painbox), owning_building_guid = 31) - LocalObject(723, Painbox.Constructor(Vector3(1737.567f, 1746.573f, 84.7172f), painbox_continuous), owning_building_guid = 31) - LocalObject(726, Painbox.Constructor(Vector3(1742.641f, 1730.674f, 104.8812f), painbox_door_radius), owning_building_guid = 31) - LocalObject(729, Painbox.Constructor(Vector3(1721.153f, 1754.565f, 82.3615f), painbox_door_radius_continuous), owning_building_guid = 31) - LocalObject(730, Painbox.Constructor(Vector3(1735.208f, 1763.759f, 84.1882f), painbox_door_radius_continuous), owning_building_guid = 31) - LocalObject(731, Painbox.Constructor(Vector3(1743.591f, 1737.637f, 83.0032f), painbox_door_radius_continuous), owning_building_guid = 31) + LocalObject( + 723, + Painbox.Constructor(Vector3(1737.567f, 1746.573f, 84.7172f), painbox_continuous), + owning_building_guid = 31 + ) + LocalObject( + 726, + Painbox.Constructor(Vector3(1742.641f, 1730.674f, 104.8812f), painbox_door_radius), + owning_building_guid = 31 + ) + LocalObject( + 729, + Painbox.Constructor(Vector3(1721.153f, 1754.565f, 82.3615f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 730, + Painbox.Constructor(Vector3(1735.208f, 1763.759f, 84.1882f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) + LocalObject( + 731, + Painbox.Constructor(Vector3(1743.591f, 1737.637f, 83.0032f), painbox_door_radius_continuous), + owning_building_guid = 31 + ) LocalObject(95, Generator.Constructor(Vector3(1757.947f, 1720.547f, 99.3533f)), owning_building_guid = 31) - LocalObject(92, Terminal.Constructor(Vector3(1751.051f, 1724.969f, 100.6473f), gen_control), owning_building_guid = 31) + LocalObject( + 92, + Terminal.Constructor(Vector3(1751.051f, 1724.969f, 100.6473f), gen_control), + owning_building_guid = 31 + ) } Building6() def Building6(): Unit = { // Name: Bravo_Middle Type: tower_a GUID: 34, MapID: 6 - LocalBuilding("Bravo_Middle", 34, 6, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1290f, 1584f, 70.50996f), Vector3(0f, 0f, 57f), tower_a))) - LocalObject(835, CaptureTerminal.Constructor(Vector3(1299.12f, 1597.855f, 80.50896f), secondary_capture), owning_building_guid = 34) + LocalBuilding( + "Bravo_Middle", + 34, + 6, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1290f, 1584f, 70.50996f), Vector3(0f, 0f, 57f), tower_a) + ) + ) + LocalObject( + 835, + CaptureTerminal.Constructor(Vector3(1299.12f, 1597.855f, 80.50896f), secondary_capture), + owning_building_guid = 34 + ) LocalObject(103, Door.Constructor(Vector3(1289.826f, 1598.421f, 72.03097f)), owning_building_guid = 34) LocalObject(104, Door.Constructor(Vector3(1289.826f, 1598.421f, 92.02997f)), owning_building_guid = 34) LocalObject(108, Door.Constructor(Vector3(1303.245f, 1589.707f, 72.03097f)), owning_building_guid = 34) LocalObject(109, Door.Constructor(Vector3(1303.245f, 1589.707f, 92.02997f)), owning_building_guid = 34) LocalObject(866, Door.Constructor(Vector3(1291.706f, 1596.182f, 61.84596f)), owning_building_guid = 34) LocalObject(868, Door.Constructor(Vector3(1305.469f, 1587.245f, 61.84596f)), owning_building_guid = 34) - LocalObject(306, IFFLock.Constructor(Vector3(1288.033f, 1597.149f, 71.97096f), Vector3(0, 0, 303)), owning_building_guid = 34, door_guid = 103) - LocalObject(307, IFFLock.Constructor(Vector3(1288.033f, 1597.149f, 91.97096f), Vector3(0, 0, 303)), owning_building_guid = 34, door_guid = 104) - LocalObject(310, IFFLock.Constructor(Vector3(1305.04f, 1590.982f, 71.97096f), Vector3(0, 0, 123)), owning_building_guid = 34, door_guid = 108) - LocalObject(311, IFFLock.Constructor(Vector3(1305.04f, 1590.982f, 91.97096f), Vector3(0, 0, 123)), owning_building_guid = 34, door_guid = 109) + LocalObject( + 306, + IFFLock.Constructor(Vector3(1288.033f, 1597.149f, 71.97096f), Vector3(0, 0, 303)), + owning_building_guid = 34, + door_guid = 103 + ) + LocalObject( + 307, + IFFLock.Constructor(Vector3(1288.033f, 1597.149f, 91.97096f), Vector3(0, 0, 303)), + owning_building_guid = 34, + door_guid = 104 + ) + LocalObject( + 310, + IFFLock.Constructor(Vector3(1305.04f, 1590.982f, 71.97096f), Vector3(0, 0, 123)), + owning_building_guid = 34, + door_guid = 108 + ) + LocalObject( + 311, + IFFLock.Constructor(Vector3(1305.04f, 1590.982f, 91.97096f), Vector3(0, 0, 123)), + owning_building_guid = 34, + door_guid = 109 + ) LocalObject(390, Locker.Constructor(Vector3(1292.846f, 1600.932f, 60.50396f)), owning_building_guid = 34) LocalObject(391, Locker.Constructor(Vector3(1293.574f, 1602.054f, 60.50396f)), owning_building_guid = 34) LocalObject(394, Locker.Constructor(Vector3(1295.019f, 1604.279f, 60.50396f)), owning_building_guid = 34) @@ -610,35 +1576,106 @@ object Map98 { // Ascension LocalObject(399, Locker.Constructor(Vector3(1311.899f, 1590.112f, 60.50396f)), owning_building_guid = 34) LocalObject(401, Locker.Constructor(Vector3(1313.363f, 1592.366f, 60.50396f)), owning_building_guid = 34) LocalObject(403, Locker.Constructor(Vector3(1314.126f, 1593.542f, 60.50396f)), owning_building_guid = 34) - LocalObject(584, Terminal.Constructor(Vector3(1300.645f, 1602.657f, 61.84196f), order_terminal), owning_building_guid = 34) - LocalObject(586, Terminal.Constructor(Vector3(1305.158f, 1599.727f, 61.84196f), order_terminal), owning_building_guid = 34) - LocalObject(588, Terminal.Constructor(Vector3(1309.958f, 1596.609f, 61.84196f), order_terminal), owning_building_guid = 34) - LocalObject(802, SpawnTube.Constructor(Vector3(1292.349f, 1595.24f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 303)), owning_building_guid = 34) - LocalObject(804, SpawnTube.Constructor(Vector3(1306.111f, 1586.303f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 303)), owning_building_guid = 34) - LocalObject(541, FacilityTurret.Constructor(Vector3(1291.677f, 1609.914f, 89.45197f), manned_turret), owning_building_guid = 34) + LocalObject( + 584, + Terminal.Constructor(Vector3(1300.645f, 1602.657f, 61.84196f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 586, + Terminal.Constructor(Vector3(1305.158f, 1599.727f, 61.84196f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 588, + Terminal.Constructor(Vector3(1309.958f, 1596.609f, 61.84196f), order_terminal), + owning_building_guid = 34 + ) + LocalObject( + 802, + SpawnTube.Constructor(Vector3(1292.349f, 1595.24f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 303)), + owning_building_guid = 34 + ) + LocalObject( + 804, + SpawnTube.Constructor(Vector3(1306.111f, 1586.303f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 303)), + owning_building_guid = 34 + ) + LocalObject( + 541, + FacilityTurret.Constructor(Vector3(1291.677f, 1609.914f, 89.45197f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(541, 5017) - LocalObject(542, FacilityTurret.Constructor(Vector3(1293.749f, 1566.446f, 89.45197f), manned_turret), owning_building_guid = 34) + LocalObject( + 542, + FacilityTurret.Constructor(Vector3(1293.749f, 1566.446f, 89.45197f), manned_turret), + owning_building_guid = 34 + ) TurretToWeapon(542, 5018) - LocalObject(739, Painbox.Constructor(Vector3(1297.449f, 1599.301f, 60.60996f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(740, Painbox.Constructor(Vector3(1298.048f, 1585.015f, 62.00906f), painbox_radius_continuous), owning_building_guid = 34) - LocalObject(743, Painbox.Constructor(Vector3(1307.445f, 1592.911f, 60.60996f), painbox_radius_continuous), owning_building_guid = 34) + LocalObject( + 739, + Painbox.Constructor(Vector3(1297.449f, 1599.301f, 60.60996f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 740, + Painbox.Constructor(Vector3(1298.048f, 1585.015f, 62.00906f), painbox_radius_continuous), + owning_building_guid = 34 + ) + LocalObject( + 743, + Painbox.Constructor(Vector3(1307.445f, 1592.911f, 60.60996f), painbox_radius_continuous), + owning_building_guid = 34 + ) } Building4() def Building4(): Unit = { // Name: Alpha_Middle Type: tower_a GUID: 35, MapID: 4 - LocalBuilding("Alpha_Middle", 35, 4, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1406f, 2676f, 73.84014f), Vector3(0f, 0f, 9f), tower_a))) - LocalObject(836, CaptureTerminal.Constructor(Vector3(1422.399f, 2678.493f, 83.83914f), secondary_capture), owning_building_guid = 35) + LocalBuilding( + "Alpha_Middle", + 35, + 4, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1406f, 2676f, 73.84014f), Vector3(0f, 0f, 9f), tower_a) + ) + ) + LocalObject( + 836, + CaptureTerminal.Constructor(Vector3(1422.399f, 2678.493f, 83.83914f), secondary_capture), + owning_building_guid = 35 + ) LocalObject(113, Door.Constructor(Vector3(1416.601f, 2685.779f, 75.36115f)), owning_building_guid = 35) LocalObject(114, Door.Constructor(Vector3(1416.601f, 2685.779f, 95.36014f)), owning_building_guid = 35) LocalObject(115, Door.Constructor(Vector3(1419.104f, 2669.976f, 75.36115f)), owning_building_guid = 35) LocalObject(116, Door.Constructor(Vector3(1419.104f, 2669.976f, 95.36014f)), owning_building_guid = 35) LocalObject(870, Door.Constructor(Vector3(1416.195f, 2682.884f, 65.17614f)), owning_building_guid = 35) LocalObject(871, Door.Constructor(Vector3(1418.762f, 2666.676f, 65.17614f)), owning_building_guid = 35) - LocalObject(315, IFFLock.Constructor(Vector3(1414.456f, 2686.26f, 75.30114f), Vector3(0, 0, 351)), owning_building_guid = 35, door_guid = 113) - LocalObject(316, IFFLock.Constructor(Vector3(1414.456f, 2686.26f, 95.30114f), Vector3(0, 0, 351)), owning_building_guid = 35, door_guid = 114) - LocalObject(317, IFFLock.Constructor(Vector3(1421.252f, 2669.495f, 75.30114f), Vector3(0, 0, 171)), owning_building_guid = 35, door_guid = 115) - LocalObject(318, IFFLock.Constructor(Vector3(1421.252f, 2669.495f, 95.30114f), Vector3(0, 0, 171)), owning_building_guid = 35, door_guid = 116) + LocalObject( + 315, + IFFLock.Constructor(Vector3(1414.456f, 2686.26f, 75.30114f), Vector3(0, 0, 351)), + owning_building_guid = 35, + door_guid = 113 + ) + LocalObject( + 316, + IFFLock.Constructor(Vector3(1414.456f, 2686.26f, 95.30114f), Vector3(0, 0, 351)), + owning_building_guid = 35, + door_guid = 114 + ) + LocalObject( + 317, + IFFLock.Constructor(Vector3(1421.252f, 2669.495f, 75.30114f), Vector3(0, 0, 171)), + owning_building_guid = 35, + door_guid = 115 + ) + LocalObject( + 318, + IFFLock.Constructor(Vector3(1421.252f, 2669.495f, 95.30114f), Vector3(0, 0, 171)), + owning_building_guid = 35, + door_guid = 116 + ) LocalObject(406, Locker.Constructor(Vector3(1420.488f, 2685.215f, 63.83414f)), owning_building_guid = 35) LocalObject(407, Locker.Constructor(Vector3(1421.808f, 2685.424f, 63.83414f)), owning_building_guid = 35) LocalObject(410, Locker.Constructor(Vector3(1423.875f, 2663.607f, 63.83414f)), owning_building_guid = 35) @@ -647,35 +1684,106 @@ object Map98 { // Ascension LocalObject(413, Locker.Constructor(Vector3(1425.813f, 2686.058f, 63.83414f)), owning_building_guid = 35) LocalObject(414, Locker.Constructor(Vector3(1427.85f, 2664.236f, 63.83414f)), owning_building_guid = 35) LocalObject(416, Locker.Constructor(Vector3(1429.235f, 2664.456f, 63.83414f)), owning_building_guid = 35) - LocalObject(590, Terminal.Constructor(Vector3(1426.988f, 2680.573f, 65.17214f), order_terminal), owning_building_guid = 35) - LocalObject(591, Terminal.Constructor(Vector3(1427.83f, 2675.259f, 65.17214f), order_terminal), owning_building_guid = 35) - LocalObject(592, Terminal.Constructor(Vector3(1428.725f, 2669.605f, 65.17214f), order_terminal), owning_building_guid = 35) - LocalObject(806, SpawnTube.Constructor(Vector3(1415.925f, 2681.776f, 63.32214f), respawn_tube_tower, Vector3(0, 0, 351)), owning_building_guid = 35) - LocalObject(807, SpawnTube.Constructor(Vector3(1418.492f, 2665.568f, 63.32214f), respawn_tube_tower, Vector3(0, 0, 351)), owning_building_guid = 35) - LocalObject(544, FacilityTurret.Constructor(Vector3(1395.464f, 2661.468f, 92.78214f), manned_turret), owning_building_guid = 35) + LocalObject( + 590, + Terminal.Constructor(Vector3(1426.988f, 2680.573f, 65.17214f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 591, + Terminal.Constructor(Vector3(1427.83f, 2675.259f, 65.17214f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 592, + Terminal.Constructor(Vector3(1428.725f, 2669.605f, 65.17214f), order_terminal), + owning_building_guid = 35 + ) + LocalObject( + 806, + SpawnTube.Constructor(Vector3(1415.925f, 2681.776f, 63.32214f), respawn_tube_tower, Vector3(0, 0, 351)), + owning_building_guid = 35 + ) + LocalObject( + 807, + SpawnTube.Constructor(Vector3(1418.492f, 2665.568f, 63.32214f), respawn_tube_tower, Vector3(0, 0, 351)), + owning_building_guid = 35 + ) + LocalObject( + 544, + FacilityTurret.Constructor(Vector3(1395.464f, 2661.468f, 92.78214f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(544, 5019) - LocalObject(545, FacilityTurret.Constructor(Vector3(1426.38f, 2692.093f, 92.78214f), manned_turret), owning_building_guid = 35) + LocalObject( + 545, + FacilityTurret.Constructor(Vector3(1426.38f, 2692.093f, 92.78214f), manned_turret), + owning_building_guid = 35 + ) TurretToWeapon(545, 5020) - LocalObject(744, Painbox.Constructor(Vector3(1412.14f, 2670.698f, 65.33924f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(746, Painbox.Constructor(Vector3(1422.355f, 2680.703f, 63.94014f), painbox_radius_continuous), owning_building_guid = 35) - LocalObject(748, Painbox.Constructor(Vector3(1424.296f, 2668.999f, 63.94014f), painbox_radius_continuous), owning_building_guid = 35) + LocalObject( + 744, + Painbox.Constructor(Vector3(1412.14f, 2670.698f, 65.33924f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 746, + Painbox.Constructor(Vector3(1422.355f, 2680.703f, 63.94014f), painbox_radius_continuous), + owning_building_guid = 35 + ) + LocalObject( + 748, + Painbox.Constructor(Vector3(1424.296f, 2668.999f, 63.94014f), painbox_radius_continuous), + owning_building_guid = 35 + ) } Building1() def Building1(): Unit = { // Name: Charlie_Middle Type: tower_a GUID: 36, MapID: 1 - LocalBuilding("Charlie_Middle", 36, 1, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2494f, 1628f, 70.50996f), Vector3(0f, 0f, 275f), tower_a))) - LocalObject(843, CaptureTerminal.Constructor(Vector3(2495.343f, 1611.467f, 80.50896f), secondary_capture), owning_building_guid = 36) + LocalBuilding( + "Charlie_Middle", + 36, + 1, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2494f, 1628f, 70.50996f), Vector3(0f, 0f, 275f), tower_a) + ) + ) + LocalObject( + 843, + CaptureTerminal.Constructor(Vector3(2495.343f, 1611.467f, 80.50896f), secondary_capture), + owning_building_guid = 36 + ) LocalObject(180, Door.Constructor(Vector3(2487.076f, 1615.348f, 72.03097f)), owning_building_guid = 36) LocalObject(181, Door.Constructor(Vector3(2487.076f, 1615.348f, 92.02997f)), owning_building_guid = 36) LocalObject(182, Door.Constructor(Vector3(2503.015f, 1616.743f, 72.03097f)), owning_building_guid = 36) LocalObject(183, Door.Constructor(Vector3(2503.015f, 1616.743f, 92.02997f)), owning_building_guid = 36) LocalObject(889, Door.Constructor(Vector3(2483.808f, 1615.92f, 61.84596f)), owning_building_guid = 36) LocalObject(890, Door.Constructor(Vector3(2500.156f, 1617.35f, 61.84596f)), owning_building_guid = 36) - LocalObject(363, IFFLock.Constructor(Vector3(2486.447f, 1613.239f, 71.97096f), Vector3(0, 0, 265)), owning_building_guid = 36, door_guid = 180) - LocalObject(364, IFFLock.Constructor(Vector3(2486.447f, 1613.239f, 91.97096f), Vector3(0, 0, 265)), owning_building_guid = 36, door_guid = 181) - LocalObject(365, IFFLock.Constructor(Vector3(2503.645f, 1618.849f, 71.97096f), Vector3(0, 0, 85)), owning_building_guid = 36, door_guid = 182) - LocalObject(366, IFFLock.Constructor(Vector3(2503.645f, 1618.849f, 91.97096f), Vector3(0, 0, 85)), owning_building_guid = 36, door_guid = 183) + LocalObject( + 363, + IFFLock.Constructor(Vector3(2486.447f, 1613.239f, 71.97096f), Vector3(0, 0, 265)), + owning_building_guid = 36, + door_guid = 180 + ) + LocalObject( + 364, + IFFLock.Constructor(Vector3(2486.447f, 1613.239f, 91.97096f), Vector3(0, 0, 265)), + owning_building_guid = 36, + door_guid = 181 + ) + LocalObject( + 365, + IFFLock.Constructor(Vector3(2503.645f, 1618.849f, 71.97096f), Vector3(0, 0, 85)), + owning_building_guid = 36, + door_guid = 182 + ) + LocalObject( + 366, + IFFLock.Constructor(Vector3(2503.645f, 1618.849f, 91.97096f), Vector3(0, 0, 85)), + owning_building_guid = 36, + door_guid = 183 + ) LocalObject(493, Locker.Constructor(Vector3(2480.39f, 1611.033f, 60.50396f)), owning_building_guid = 36) LocalObject(494, Locker.Constructor(Vector3(2480.506f, 1609.701f, 60.50396f)), owning_building_guid = 36) LocalObject(495, Locker.Constructor(Vector3(2480.741f, 1607.024f, 60.50396f)), owning_building_guid = 36) @@ -684,25 +1792,76 @@ object Map98 { // Ascension LocalObject(498, Locker.Constructor(Vector3(2502.298f, 1611.573f, 60.50396f)), owning_building_guid = 36) LocalObject(499, Locker.Constructor(Vector3(2502.53f, 1608.93f, 60.50396f)), owning_building_guid = 36) LocalObject(500, Locker.Constructor(Vector3(2502.652f, 1607.533f, 60.50396f)), owning_building_guid = 36) - LocalObject(621, Terminal.Constructor(Vector3(2486.036f, 1605.776f, 61.84196f), order_terminal), owning_building_guid = 36) - LocalObject(622, Terminal.Constructor(Vector3(2491.738f, 1606.275f, 61.84196f), order_terminal), owning_building_guid = 36) - LocalObject(623, Terminal.Constructor(Vector3(2497.098f, 1606.744f, 61.84196f), order_terminal), owning_building_guid = 36) - LocalObject(825, SpawnTube.Constructor(Vector3(2482.722f, 1616.266f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 85)), owning_building_guid = 36) - LocalObject(826, SpawnTube.Constructor(Vector3(2499.069f, 1617.697f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 85)), owning_building_guid = 36) - LocalObject(565, FacilityTurret.Constructor(Vector3(2480.238f, 1639.524f, 89.45197f), manned_turret), owning_building_guid = 36) + LocalObject( + 621, + Terminal.Constructor(Vector3(2486.036f, 1605.776f, 61.84196f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 622, + Terminal.Constructor(Vector3(2491.738f, 1606.275f, 61.84196f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 623, + Terminal.Constructor(Vector3(2497.098f, 1606.744f, 61.84196f), order_terminal), + owning_building_guid = 36 + ) + LocalObject( + 825, + SpawnTube.Constructor(Vector3(2482.722f, 1616.266f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 85)), + owning_building_guid = 36 + ) + LocalObject( + 826, + SpawnTube.Constructor(Vector3(2499.069f, 1617.697f, 59.99197f), respawn_tube_tower, Vector3(0, 0, 85)), + owning_building_guid = 36 + ) + LocalObject( + 565, + FacilityTurret.Constructor(Vector3(2480.238f, 1639.524f, 89.45197f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(565, 5021) - LocalObject(566, FacilityTurret.Constructor(Vector3(2508.632f, 1606.547f, 89.45197f), manned_turret), owning_building_guid = 36) + LocalObject( + 566, + FacilityTurret.Constructor(Vector3(2508.632f, 1606.547f, 89.45197f), manned_turret), + owning_building_guid = 36 + ) TurretToWeapon(566, 5022) - LocalObject(765, Painbox.Constructor(Vector3(2485.739f, 1610.237f, 60.60996f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(766, Painbox.Constructor(Vector3(2488.283f, 1622.245f, 62.00906f), painbox_radius_continuous), owning_building_guid = 36) - LocalObject(767, Painbox.Constructor(Vector3(2497.55f, 1611.357f, 60.60996f), painbox_radius_continuous), owning_building_guid = 36) + LocalObject( + 765, + Painbox.Constructor(Vector3(2485.739f, 1610.237f, 60.60996f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 766, + Painbox.Constructor(Vector3(2488.283f, 1622.245f, 62.00906f), painbox_radius_continuous), + owning_building_guid = 36 + ) + LocalObject( + 767, + Painbox.Constructor(Vector3(2497.55f, 1611.357f, 60.60996f), painbox_radius_continuous), + owning_building_guid = 36 + ) } Building13() def Building13(): Unit = { // Name: Alpha_Gate_Tower Type: tower_b GUID: 37, MapID: 13 - LocalBuilding("Alpha_Gate_Tower", 37, 13, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1408f, 1176f, 12.08533f), Vector3(0f, 0f, 27f), tower_b))) - LocalObject(837, CaptureTerminal.Constructor(Vector3(1422.826f, 1183.439f, 32.08433f), secondary_capture), owning_building_guid = 37) + LocalBuilding( + "Alpha_Gate_Tower", + 37, + 13, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1408f, 1176f, 12.08533f), Vector3(0f, 0f, 27f), tower_b) + ) + ) + LocalObject( + 837, + CaptureTerminal.Constructor(Vector3(1422.826f, 1183.439f, 32.08433f), secondary_capture), + owning_building_guid = 37 + ) LocalObject(110, Door.Constructor(Vector3(1415.06f, 1188.576f, 13.60533f)), owning_building_guid = 37) LocalObject(111, Door.Constructor(Vector3(1415.06f, 1188.576f, 23.60533f)), owning_building_guid = 37) LocalObject(112, Door.Constructor(Vector3(1415.06f, 1188.576f, 43.60533f)), owning_building_guid = 37) @@ -711,12 +1870,42 @@ object Map98 { // Ascension LocalObject(119, Door.Constructor(Vector3(1422.324f, 1174.32f, 43.60533f)), owning_building_guid = 37) LocalObject(869, Door.Constructor(Vector3(1415.569f, 1185.697f, 3.42133f)), owning_building_guid = 37) LocalObject(872, Door.Constructor(Vector3(1423.02f, 1171.076f, 3.42133f)), owning_building_guid = 37) - LocalObject(312, IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 13.54633f), Vector3(0, 0, 333)), owning_building_guid = 37, door_guid = 110) - LocalObject(313, IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 23.54633f), Vector3(0, 0, 333)), owning_building_guid = 37, door_guid = 111) - LocalObject(314, IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 43.54633f), Vector3(0, 0, 333)), owning_building_guid = 37, door_guid = 112) - LocalObject(319, IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 13.54633f), Vector3(0, 0, 153)), owning_building_guid = 37, door_guid = 117) - LocalObject(320, IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 23.54633f), Vector3(0, 0, 153)), owning_building_guid = 37, door_guid = 118) - LocalObject(321, IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 43.54633f), Vector3(0, 0, 153)), owning_building_guid = 37, door_guid = 119) + LocalObject( + 312, + IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 13.54633f), Vector3(0, 0, 333)), + owning_building_guid = 37, + door_guid = 110 + ) + LocalObject( + 313, + IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 23.54633f), Vector3(0, 0, 333)), + owning_building_guid = 37, + door_guid = 111 + ) + LocalObject( + 314, + IFFLock.Constructor(Vector3(1412.872f, 1188.371f, 43.54633f), Vector3(0, 0, 333)), + owning_building_guid = 37, + door_guid = 112 + ) + LocalObject( + 319, + IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 13.54633f), Vector3(0, 0, 153)), + owning_building_guid = 37, + door_guid = 117 + ) + LocalObject( + 320, + IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 23.54633f), Vector3(0, 0, 153)), + owning_building_guid = 37, + door_guid = 118 + ) + LocalObject( + 321, + IFFLock.Constructor(Vector3(1424.516f, 1174.527f, 43.54633f), Vector3(0, 0, 153)), + owning_building_guid = 37, + door_guid = 119 + ) LocalObject(404, Locker.Constructor(Vector3(1418.931f, 1189.241f, 2.07933f)), owning_building_guid = 37) LocalObject(405, Locker.Constructor(Vector3(1420.123f, 1189.848f, 2.07933f)), owning_building_guid = 37) LocalObject(408, Locker.Constructor(Vector3(1422.486f, 1191.052f, 2.07933f)), owning_building_guid = 37) @@ -725,21 +1914,64 @@ object Map98 { // Ascension LocalObject(417, Locker.Constructor(Vector3(1430.021f, 1170.344f, 2.07933f)), owning_building_guid = 37) LocalObject(418, Locker.Constructor(Vector3(1432.416f, 1171.564f, 2.07933f)), owning_building_guid = 37) LocalObject(419, Locker.Constructor(Vector3(1433.665f, 1172.201f, 2.07933f)), owning_building_guid = 37) - LocalObject(589, Terminal.Constructor(Vector3(1426.548f, 1186.836f, 3.41733f), order_terminal), owning_building_guid = 37) - LocalObject(593, Terminal.Constructor(Vector3(1428.991f, 1182.041f, 3.41733f), order_terminal), owning_building_guid = 37) - LocalObject(594, Terminal.Constructor(Vector3(1431.59f, 1176.941f, 3.41733f), order_terminal), owning_building_guid = 37) - LocalObject(805, SpawnTube.Constructor(Vector3(1415.654f, 1184.56f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 333)), owning_building_guid = 37) - LocalObject(808, SpawnTube.Constructor(Vector3(1423.104f, 1169.938f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 333)), owning_building_guid = 37) - LocalObject(745, Painbox.Constructor(Vector3(1416.141f, 1172.122f, 3.37473f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(747, Painbox.Constructor(Vector3(1422.422f, 1185.713f, 2.18533f), painbox_radius_continuous), owning_building_guid = 37) - LocalObject(749, Painbox.Constructor(Vector3(1427.765f, 1174.935f, 2.18533f), painbox_radius_continuous), owning_building_guid = 37) + LocalObject( + 589, + Terminal.Constructor(Vector3(1426.548f, 1186.836f, 3.41733f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 593, + Terminal.Constructor(Vector3(1428.991f, 1182.041f, 3.41733f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 594, + Terminal.Constructor(Vector3(1431.59f, 1176.941f, 3.41733f), order_terminal), + owning_building_guid = 37 + ) + LocalObject( + 805, + SpawnTube.Constructor(Vector3(1415.654f, 1184.56f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 333)), + owning_building_guid = 37 + ) + LocalObject( + 808, + SpawnTube.Constructor(Vector3(1423.104f, 1169.938f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 333)), + owning_building_guid = 37 + ) + LocalObject( + 745, + Painbox.Constructor(Vector3(1416.141f, 1172.122f, 3.37473f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 747, + Painbox.Constructor(Vector3(1422.422f, 1185.713f, 2.18533f), painbox_radius_continuous), + owning_building_guid = 37 + ) + LocalObject( + 749, + Painbox.Constructor(Vector3(1427.765f, 1174.935f, 2.18533f), painbox_radius_continuous), + owning_building_guid = 37 + ) } Building10() def Building10(): Unit = { // Name: Charlie_Gate_Tower Type: tower_b GUID: 38, MapID: 10 - LocalBuilding("Charlie_Gate_Tower", 38, 10, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2334f, 2784f, 12.08533f), Vector3(0f, 0f, 235f), tower_b))) - LocalObject(842, CaptureTerminal.Constructor(Vector3(2324.402f, 2770.472f, 32.08433f), secondary_capture), owning_building_guid = 38) + LocalBuilding( + "Charlie_Gate_Tower", + 38, + 10, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2334f, 2784f, 12.08533f), Vector3(0f, 0f, 235f), tower_b) + ) + ) + LocalObject( + 842, + CaptureTerminal.Constructor(Vector3(2324.402f, 2770.472f, 32.08433f), secondary_capture), + owning_building_guid = 38 + ) LocalObject(174, Door.Constructor(Vector3(2320.564f, 2778.759f, 13.60533f)), owning_building_guid = 38) LocalObject(175, Door.Constructor(Vector3(2320.564f, 2778.759f, 23.60533f)), owning_building_guid = 38) LocalObject(176, Door.Constructor(Vector3(2320.564f, 2778.759f, 43.60533f)), owning_building_guid = 38) @@ -748,12 +1980,42 @@ object Map98 { // Ascension LocalObject(179, Door.Constructor(Vector3(2333.67f, 2769.582f, 43.60533f)), owning_building_guid = 38) LocalObject(887, Door.Constructor(Vector3(2318.427f, 2781.296f, 3.42133f)), owning_building_guid = 38) LocalObject(888, Door.Constructor(Vector3(2331.869f, 2771.884f, 3.42133f)), owning_building_guid = 38) - LocalObject(357, IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 13.54633f), Vector3(0, 0, 305)), owning_building_guid = 38, door_guid = 174) - LocalObject(358, IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 23.54633f), Vector3(0, 0, 305)), owning_building_guid = 38, door_guid = 175) - LocalObject(359, IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 43.54633f), Vector3(0, 0, 305)), owning_building_guid = 38, door_guid = 176) - LocalObject(360, IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 13.54633f), Vector3(0, 0, 125)), owning_building_guid = 38, door_guid = 177) - LocalObject(361, IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 23.54633f), Vector3(0, 0, 125)), owning_building_guid = 38, door_guid = 178) - LocalObject(362, IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 43.54633f), Vector3(0, 0, 125)), owning_building_guid = 38, door_guid = 179) + LocalObject( + 357, + IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 13.54633f), Vector3(0, 0, 305)), + owning_building_guid = 38, + door_guid = 174 + ) + LocalObject( + 358, + IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 23.54633f), Vector3(0, 0, 305)), + owning_building_guid = 38, + door_guid = 175 + ) + LocalObject( + 359, + IFFLock.Constructor(Vector3(2318.726f, 2777.547f, 43.54633f), Vector3(0, 0, 305)), + owning_building_guid = 38, + door_guid = 176 + ) + LocalObject( + 360, + IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 13.54633f), Vector3(0, 0, 125)), + owning_building_guid = 38, + door_guid = 177 + ) + LocalObject( + 361, + IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 23.54633f), Vector3(0, 0, 125)), + owning_building_guid = 38, + door_guid = 178 + ) + LocalObject( + 362, + IFFLock.Constructor(Vector3(2335.506f, 2770.79f, 43.54633f), Vector3(0, 0, 125)), + owning_building_guid = 38, + door_guid = 179 + ) LocalObject(485, Locker.Constructor(Vector3(2309.555f, 2775.306f, 2.07933f)), owning_building_guid = 38) LocalObject(486, Locker.Constructor(Vector3(2310.359f, 2776.454f, 2.07933f)), owning_building_guid = 38) LocalObject(487, Locker.Constructor(Vector3(2311.901f, 2778.656f, 2.07933f)), owning_building_guid = 38) @@ -762,21 +2024,64 @@ object Map98 { // Ascension LocalObject(490, Locker.Constructor(Vector3(2328.276f, 2763.909f, 2.07933f)), owning_building_guid = 38) LocalObject(491, Locker.Constructor(Vector3(2329.798f, 2766.082f, 2.07933f)), owning_building_guid = 38) LocalObject(492, Locker.Constructor(Vector3(2330.564f, 2767.177f, 2.07933f)), owning_building_guid = 38) - LocalObject(618, Terminal.Constructor(Vector3(2313.613f, 2772.094f, 3.41733f), order_terminal), owning_building_guid = 38) - LocalObject(619, Terminal.Constructor(Vector3(2318.302f, 2768.811f, 3.41733f), order_terminal), owning_building_guid = 38) - LocalObject(620, Terminal.Constructor(Vector3(2322.71f, 2765.725f, 3.41733f), order_terminal), owning_building_guid = 38) - LocalObject(823, SpawnTube.Constructor(Vector3(2317.818f, 2782.261f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 125)), owning_building_guid = 38) - LocalObject(824, SpawnTube.Constructor(Vector3(2331.26f, 2772.849f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 125)), owning_building_guid = 38) - LocalObject(762, Painbox.Constructor(Vector3(2316.049f, 2775.661f, 2.18533f), painbox_radius_continuous), owning_building_guid = 38) - LocalObject(763, Painbox.Constructor(Vector3(2324.992f, 2783.602f, 3.37473f), painbox_radius_continuous), owning_building_guid = 38) - LocalObject(764, Painbox.Constructor(Vector3(2325.826f, 2768.654f, 2.18533f), painbox_radius_continuous), owning_building_guid = 38) + LocalObject( + 618, + Terminal.Constructor(Vector3(2313.613f, 2772.094f, 3.41733f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 619, + Terminal.Constructor(Vector3(2318.302f, 2768.811f, 3.41733f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 620, + Terminal.Constructor(Vector3(2322.71f, 2765.725f, 3.41733f), order_terminal), + owning_building_guid = 38 + ) + LocalObject( + 823, + SpawnTube.Constructor(Vector3(2317.818f, 2782.261f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 125)), + owning_building_guid = 38 + ) + LocalObject( + 824, + SpawnTube.Constructor(Vector3(2331.26f, 2772.849f, 1.56733f), respawn_tube_tower, Vector3(0, 0, 125)), + owning_building_guid = 38 + ) + LocalObject( + 762, + Painbox.Constructor(Vector3(2316.049f, 2775.661f, 2.18533f), painbox_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 763, + Painbox.Constructor(Vector3(2324.992f, 2783.602f, 3.37473f), painbox_radius_continuous), + owning_building_guid = 38 + ) + LocalObject( + 764, + Painbox.Constructor(Vector3(2325.826f, 2768.654f, 2.18533f), painbox_radius_continuous), + owning_building_guid = 38 + ) } Building11() def Building11(): Unit = { // Name: Bravo_Gate_Tower Type: tower_b GUID: 39, MapID: 11 - LocalBuilding("Bravo_Gate_Tower", 39, 11, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2870f, 1410f, 14.09711f), Vector3(0f, 0f, 125f), tower_b))) - LocalObject(845, CaptureTerminal.Constructor(Vector3(2860.57f, 1423.646f, 34.09611f), secondary_capture), owning_building_guid = 39) + LocalBuilding( + "Bravo_Gate_Tower", + 39, + 11, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2870f, 1410f, 14.09711f), Vector3(0f, 0f, 125f), tower_b) + ) + ) + LocalObject( + 845, + CaptureTerminal.Constructor(Vector3(2860.57f, 1423.646f, 34.09611f), secondary_capture), + owning_building_guid = 39 + ) LocalObject(213, Door.Constructor(Vector3(2856.564f, 1415.241f, 15.61711f)), owning_building_guid = 39) LocalObject(214, Door.Constructor(Vector3(2856.564f, 1415.241f, 25.61711f)), owning_building_guid = 39) LocalObject(215, Door.Constructor(Vector3(2856.564f, 1415.241f, 45.61711f)), owning_building_guid = 39) @@ -785,12 +2090,42 @@ object Map98 { // Ascension LocalObject(218, Door.Constructor(Vector3(2869.67f, 1424.418f, 45.61711f)), owning_building_guid = 39) LocalObject(896, Door.Constructor(Vector3(2859.344f, 1416.146f, 5.43311f)), owning_building_guid = 39) LocalObject(897, Door.Constructor(Vector3(2872.786f, 1425.559f, 5.43311f)), owning_building_guid = 39) - LocalObject(382, IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 15.55811f), Vector3(0, 0, 235)), owning_building_guid = 39, door_guid = 213) - LocalObject(383, IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 25.55811f), Vector3(0, 0, 235)), owning_building_guid = 39, door_guid = 214) - LocalObject(384, IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 45.55811f), Vector3(0, 0, 235)), owning_building_guid = 39, door_guid = 215) - LocalObject(385, IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 15.55811f), Vector3(0, 0, 55)), owning_building_guid = 39, door_guid = 216) - LocalObject(386, IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 25.55811f), Vector3(0, 0, 55)), owning_building_guid = 39, door_guid = 217) - LocalObject(387, IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 45.55811f), Vector3(0, 0, 55)), owning_building_guid = 39, door_guid = 218) + LocalObject( + 382, + IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 15.55811f), Vector3(0, 0, 235)), + owning_building_guid = 39, + door_guid = 213 + ) + LocalObject( + 383, + IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 25.55811f), Vector3(0, 0, 235)), + owning_building_guid = 39, + door_guid = 214 + ) + LocalObject( + 384, + IFFLock.Constructor(Vector3(2857.071f, 1413.103f, 45.55811f), Vector3(0, 0, 235)), + owning_building_guid = 39, + door_guid = 215 + ) + LocalObject( + 385, + IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 15.55811f), Vector3(0, 0, 55)), + owning_building_guid = 39, + door_guid = 216 + ) + LocalObject( + 386, + IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 25.55811f), Vector3(0, 0, 55)), + owning_building_guid = 39, + door_guid = 217 + ) + LocalObject( + 387, + IFFLock.Constructor(Vector3(2869.161f, 1426.56f, 45.55811f), Vector3(0, 0, 55)), + owning_building_guid = 39, + door_guid = 218 + ) LocalObject(521, Locker.Constructor(Vector3(2852.274f, 1423.399f, 4.09111f)), owning_building_guid = 39) LocalObject(522, Locker.Constructor(Vector3(2853.078f, 1422.25f, 4.09111f)), owning_building_guid = 39) LocalObject(523, Locker.Constructor(Vector3(2854.6f, 1420.077f, 4.09111f)), owning_building_guid = 39) @@ -799,31 +2134,94 @@ object Map98 { // Ascension LocalObject(526, Locker.Constructor(Vector3(2870.995f, 1434.796f, 4.09111f)), owning_building_guid = 39) LocalObject(527, Locker.Constructor(Vector3(2872.536f, 1432.594f, 4.09111f)), owning_building_guid = 39) LocalObject(528, Locker.Constructor(Vector3(2873.303f, 1431.499f, 4.09111f)), owning_building_guid = 39) - LocalObject(633, Terminal.Constructor(Vector3(2856.688f, 1426.86f, 5.42911f), order_terminal), owning_building_guid = 39) - LocalObject(634, Terminal.Constructor(Vector3(2861.096f, 1429.946f, 5.42911f), order_terminal), owning_building_guid = 39) - LocalObject(635, Terminal.Constructor(Vector3(2865.785f, 1433.229f, 5.42911f), order_terminal), owning_building_guid = 39) - LocalObject(832, SpawnTube.Constructor(Vector3(2860.458f, 1416.388f, 3.57911f), respawn_tube_tower, Vector3(0, 0, 235)), owning_building_guid = 39) - LocalObject(833, SpawnTube.Constructor(Vector3(2873.9f, 1425.801f, 3.57911f), respawn_tube_tower, Vector3(0, 0, 235)), owning_building_guid = 39) - LocalObject(771, Painbox.Constructor(Vector3(2858.375f, 1422.93f, 4.19711f), painbox_radius_continuous), owning_building_guid = 39) - LocalObject(772, Painbox.Constructor(Vector3(2868.304f, 1429.721f, 4.19711f), painbox_radius_continuous), owning_building_guid = 39) - LocalObject(773, Painbox.Constructor(Vector3(2872.707f, 1418.601f, 5.38651f), painbox_radius_continuous), owning_building_guid = 39) + LocalObject( + 633, + Terminal.Constructor(Vector3(2856.688f, 1426.86f, 5.42911f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 634, + Terminal.Constructor(Vector3(2861.096f, 1429.946f, 5.42911f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 635, + Terminal.Constructor(Vector3(2865.785f, 1433.229f, 5.42911f), order_terminal), + owning_building_guid = 39 + ) + LocalObject( + 832, + SpawnTube.Constructor(Vector3(2860.458f, 1416.388f, 3.57911f), respawn_tube_tower, Vector3(0, 0, 235)), + owning_building_guid = 39 + ) + LocalObject( + 833, + SpawnTube.Constructor(Vector3(2873.9f, 1425.801f, 3.57911f), respawn_tube_tower, Vector3(0, 0, 235)), + owning_building_guid = 39 + ) + LocalObject( + 771, + Painbox.Constructor(Vector3(2858.375f, 1422.93f, 4.19711f), painbox_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 772, + Painbox.Constructor(Vector3(2868.304f, 1429.721f, 4.19711f), painbox_radius_continuous), + owning_building_guid = 39 + ) + LocalObject( + 773, + Painbox.Constructor(Vector3(2872.707f, 1418.601f, 5.38651f), painbox_radius_continuous), + owning_building_guid = 39 + ) } Building14() def Building14(): Unit = { // Name: Alpha_Bottom Type: tower_c GUID: 40, MapID: 14 - LocalBuilding("Alpha_Bottom", 40, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1290f, 2082f, 34.21491f), Vector3(0f, 0f, 61f), tower_c))) - LocalObject(834, CaptureTerminal.Constructor(Vector3(1298.132f, 2096.458f, 44.21391f), secondary_capture), owning_building_guid = 40) + LocalBuilding( + "Alpha_Bottom", + 40, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1290f, 2082f, 34.21491f), Vector3(0f, 0f, 61f), tower_c) + ) + ) + LocalObject( + 834, + CaptureTerminal.Constructor(Vector3(1298.132f, 2096.458f, 44.21391f), secondary_capture), + owning_building_guid = 40 + ) LocalObject(101, Door.Constructor(Vector3(1288.821f, 2096.374f, 35.73591f)), owning_building_guid = 40) LocalObject(102, Door.Constructor(Vector3(1288.821f, 2096.374f, 55.73491f)), owning_building_guid = 40) LocalObject(106, Door.Constructor(Vector3(1302.815f, 2088.617f, 35.73591f)), owning_building_guid = 40) LocalObject(107, Door.Constructor(Vector3(1302.815f, 2088.617f, 55.73491f)), owning_building_guid = 40) LocalObject(865, Door.Constructor(Vector3(1290.852f, 2094.271f, 25.55091f)), owning_building_guid = 40) LocalObject(867, Door.Constructor(Vector3(1305.205f, 2086.316f, 25.55091f)), owning_building_guid = 40) - LocalObject(304, IFFLock.Constructor(Vector3(1287.121f, 2094.98f, 35.67591f), Vector3(0, 0, 299)), owning_building_guid = 40, door_guid = 101) - LocalObject(305, IFFLock.Constructor(Vector3(1287.121f, 2094.98f, 55.67591f), Vector3(0, 0, 299)), owning_building_guid = 40, door_guid = 102) - LocalObject(308, IFFLock.Constructor(Vector3(1304.516f, 2090.014f, 35.67591f), Vector3(0, 0, 119)), owning_building_guid = 40, door_guid = 106) - LocalObject(309, IFFLock.Constructor(Vector3(1304.516f, 2090.014f, 55.67591f), Vector3(0, 0, 119)), owning_building_guid = 40, door_guid = 107) + LocalObject( + 304, + IFFLock.Constructor(Vector3(1287.121f, 2094.98f, 35.67591f), Vector3(0, 0, 299)), + owning_building_guid = 40, + door_guid = 101 + ) + LocalObject( + 305, + IFFLock.Constructor(Vector3(1287.121f, 2094.98f, 55.67591f), Vector3(0, 0, 299)), + owning_building_guid = 40, + door_guid = 102 + ) + LocalObject( + 308, + IFFLock.Constructor(Vector3(1304.516f, 2090.014f, 35.67591f), Vector3(0, 0, 119)), + owning_building_guid = 40, + door_guid = 106 + ) + LocalObject( + 309, + IFFLock.Constructor(Vector3(1304.516f, 2090.014f, 55.67591f), Vector3(0, 0, 119)), + owning_building_guid = 40, + door_guid = 107 + ) LocalObject(388, Locker.Constructor(Vector3(1291.658f, 2099.09f, 24.20891f)), owning_building_guid = 40) LocalObject(389, Locker.Constructor(Vector3(1292.306f, 2100.259f, 24.20891f)), owning_building_guid = 40) LocalObject(392, Locker.Constructor(Vector3(1293.593f, 2102.58f, 24.20891f)), owning_building_guid = 40) @@ -832,39 +2230,126 @@ object Map98 { // Ascension LocalObject(398, Locker.Constructor(Vector3(1311.419f, 2089.625f, 24.20891f)), owning_building_guid = 40) LocalObject(400, Locker.Constructor(Vector3(1312.722f, 2091.976f, 24.20891f)), owning_building_guid = 40) LocalObject(402, Locker.Constructor(Vector3(1313.402f, 2093.202f, 24.20891f)), owning_building_guid = 40) - LocalObject(583, Terminal.Constructor(Vector3(1299.318f, 2101.354f, 25.54691f), order_terminal), owning_building_guid = 40) - LocalObject(585, Terminal.Constructor(Vector3(1304.024f, 2098.746f, 25.54691f), order_terminal), owning_building_guid = 40) - LocalObject(587, Terminal.Constructor(Vector3(1309.03f, 2095.971f, 25.54691f), order_terminal), owning_building_guid = 40) - LocalObject(801, SpawnTube.Constructor(Vector3(1291.559f, 2093.376f, 23.69691f), respawn_tube_tower, Vector3(0, 0, 299)), owning_building_guid = 40) - LocalObject(803, SpawnTube.Constructor(Vector3(1305.911f, 2085.421f, 23.69691f), respawn_tube_tower, Vector3(0, 0, 299)), owning_building_guid = 40) - LocalObject(684, ProximityTerminal.Constructor(Vector3(1284.948f, 2083.551f, 61.78491f), pad_landing_tower_frame), owning_building_guid = 40) - LocalObject(685, Terminal.Constructor(Vector3(1284.948f, 2083.551f, 61.78491f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(687, ProximityTerminal.Constructor(Vector3(1294.084f, 2078.487f, 61.78491f), pad_landing_tower_frame), owning_building_guid = 40) - LocalObject(688, Terminal.Constructor(Vector3(1294.084f, 2078.487f, 61.78491f), air_rearm_terminal), owning_building_guid = 40) - LocalObject(540, FacilityTurret.Constructor(Vector3(1288.31f, 2109.802f, 53.15691f), manned_turret), owning_building_guid = 40) + LocalObject( + 583, + Terminal.Constructor(Vector3(1299.318f, 2101.354f, 25.54691f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 585, + Terminal.Constructor(Vector3(1304.024f, 2098.746f, 25.54691f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 587, + Terminal.Constructor(Vector3(1309.03f, 2095.971f, 25.54691f), order_terminal), + owning_building_guid = 40 + ) + LocalObject( + 801, + SpawnTube.Constructor(Vector3(1291.559f, 2093.376f, 23.69691f), respawn_tube_tower, Vector3(0, 0, 299)), + owning_building_guid = 40 + ) + LocalObject( + 803, + SpawnTube.Constructor(Vector3(1305.911f, 2085.421f, 23.69691f), respawn_tube_tower, Vector3(0, 0, 299)), + owning_building_guid = 40 + ) + LocalObject( + 684, + ProximityTerminal.Constructor(Vector3(1284.948f, 2083.551f, 61.78491f), pad_landing_tower_frame), + owning_building_guid = 40 + ) + LocalObject( + 685, + Terminal.Constructor(Vector3(1284.948f, 2083.551f, 61.78491f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 687, + ProximityTerminal.Constructor(Vector3(1294.084f, 2078.487f, 61.78491f), pad_landing_tower_frame), + owning_building_guid = 40 + ) + LocalObject( + 688, + Terminal.Constructor(Vector3(1294.084f, 2078.487f, 61.78491f), air_rearm_terminal), + owning_building_guid = 40 + ) + LocalObject( + 540, + FacilityTurret.Constructor(Vector3(1288.31f, 2109.802f, 53.15691f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(540, 5023) - LocalObject(543, FacilityTurret.Constructor(Vector3(1295.842f, 2061.692f, 53.15691f), manned_turret), owning_building_guid = 40) + LocalObject( + 543, + FacilityTurret.Constructor(Vector3(1295.842f, 2061.692f, 53.15691f), manned_turret), + owning_building_guid = 40 + ) TurretToWeapon(543, 5024) - LocalObject(738, Painbox.Constructor(Vector3(1296.528f, 2097.947f, 24.31491f), painbox_radius_continuous), owning_building_guid = 40) - LocalObject(741, Painbox.Constructor(Vector3(1298.414f, 2082.429f, 26.23441f), painbox_radius_continuous), owning_building_guid = 40) - LocalObject(742, Painbox.Constructor(Vector3(1307.353f, 2091.73f, 24.31491f), painbox_radius_continuous), owning_building_guid = 40) + LocalObject( + 738, + Painbox.Constructor(Vector3(1296.528f, 2097.947f, 24.31491f), painbox_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 741, + Painbox.Constructor(Vector3(1298.414f, 2082.429f, 26.23441f), painbox_radius_continuous), + owning_building_guid = 40 + ) + LocalObject( + 742, + Painbox.Constructor(Vector3(1307.353f, 2091.73f, 24.31491f), painbox_radius_continuous), + owning_building_guid = 40 + ) } Building5() def Building5(): Unit = { // Name: Bravo_Top Type: tower_c GUID: 41, MapID: 5 - LocalBuilding("Bravo_Top", 41, 5, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1894f, 2052f, 110.9848f), Vector3(0f, 0f, 274f), tower_c))) - LocalObject(838, CaptureTerminal.Constructor(Vector3(1895.054f, 2035.446f, 120.9838f), secondary_capture), owning_building_guid = 41) + LocalBuilding( + "Bravo_Top", + 41, + 5, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1894f, 2052f, 110.9848f), Vector3(0f, 0f, 274f), tower_c) + ) + ) + LocalObject( + 838, + CaptureTerminal.Constructor(Vector3(1895.054f, 2035.446f, 120.9838f), secondary_capture), + owning_building_guid = 41 + ) LocalObject(149, Door.Constructor(Vector3(1886.857f, 2039.471f, 112.5058f)), owning_building_guid = 41) LocalObject(150, Door.Constructor(Vector3(1886.857f, 2039.471f, 132.5048f)), owning_building_guid = 41) LocalObject(152, Door.Constructor(Vector3(1902.818f, 2040.587f, 112.5058f)), owning_building_guid = 41) LocalObject(153, Door.Constructor(Vector3(1902.818f, 2040.587f, 132.5048f)), owning_building_guid = 41) LocalObject(879, Door.Constructor(Vector3(1883.599f, 2040.099f, 102.3208f)), owning_building_guid = 41) LocalObject(880, Door.Constructor(Vector3(1899.969f, 2041.244f, 102.3208f)), owning_building_guid = 41) - LocalObject(341, IFFLock.Constructor(Vector3(1886.19f, 2037.373f, 112.4458f), Vector3(0, 0, 266)), owning_building_guid = 41, door_guid = 149) - LocalObject(342, IFFLock.Constructor(Vector3(1886.19f, 2037.373f, 132.4458f), Vector3(0, 0, 266)), owning_building_guid = 41, door_guid = 150) - LocalObject(343, IFFLock.Constructor(Vector3(1903.484f, 2042.682f, 112.4458f), Vector3(0, 0, 86)), owning_building_guid = 41, door_guid = 152) - LocalObject(344, IFFLock.Constructor(Vector3(1903.484f, 2042.682f, 132.4458f), Vector3(0, 0, 86)), owning_building_guid = 41, door_guid = 153) + LocalObject( + 341, + IFFLock.Constructor(Vector3(1886.19f, 2037.373f, 112.4458f), Vector3(0, 0, 266)), + owning_building_guid = 41, + door_guid = 149 + ) + LocalObject( + 342, + IFFLock.Constructor(Vector3(1886.19f, 2037.373f, 132.4458f), Vector3(0, 0, 266)), + owning_building_guid = 41, + door_guid = 150 + ) + LocalObject( + 343, + IFFLock.Constructor(Vector3(1903.484f, 2042.682f, 112.4458f), Vector3(0, 0, 86)), + owning_building_guid = 41, + door_guid = 152 + ) + LocalObject( + 344, + IFFLock.Constructor(Vector3(1903.484f, 2042.682f, 132.4458f), Vector3(0, 0, 86)), + owning_building_guid = 41, + door_guid = 153 + ) LocalObject(453, Locker.Constructor(Vector3(1880.096f, 2035.273f, 100.9788f)), owning_building_guid = 41) LocalObject(454, Locker.Constructor(Vector3(1880.189f, 2033.94f, 100.9788f)), owning_building_guid = 41) LocalObject(455, Locker.Constructor(Vector3(1880.377f, 2031.258f, 100.9788f)), owning_building_guid = 41) @@ -873,39 +2358,126 @@ object Map98 { // Ascension LocalObject(458, Locker.Constructor(Vector3(1902.01f, 2035.43f, 100.9788f)), owning_building_guid = 41) LocalObject(459, Locker.Constructor(Vector3(1902.195f, 2032.784f, 100.9788f)), owning_building_guid = 41) LocalObject(460, Locker.Constructor(Vector3(1902.293f, 2031.385f, 100.9788f)), owning_building_guid = 41) - LocalObject(606, Terminal.Constructor(Vector3(1885.649f, 2029.919f, 102.3168f), order_terminal), owning_building_guid = 41) - LocalObject(607, Terminal.Constructor(Vector3(1891.359f, 2030.318f, 102.3168f), order_terminal), owning_building_guid = 41) - LocalObject(608, Terminal.Constructor(Vector3(1896.727f, 2030.693f, 102.3168f), order_terminal), owning_building_guid = 41) - LocalObject(815, SpawnTube.Constructor(Vector3(1882.519f, 2040.465f, 100.4668f), respawn_tube_tower, Vector3(0, 0, 86)), owning_building_guid = 41) - LocalObject(816, SpawnTube.Constructor(Vector3(1898.889f, 2041.61f, 100.4668f), respawn_tube_tower, Vector3(0, 0, 86)), owning_building_guid = 41) - LocalObject(690, ProximityTerminal.Constructor(Vector3(1888.662f, 2052.722f, 138.5548f), pad_landing_tower_frame), owning_building_guid = 41) - LocalObject(691, Terminal.Constructor(Vector3(1888.662f, 2052.722f, 138.5548f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(693, ProximityTerminal.Constructor(Vector3(1899.081f, 2053.451f, 138.5548f), pad_landing_tower_frame), owning_building_guid = 41) - LocalObject(694, Terminal.Constructor(Vector3(1899.081f, 2053.451f, 138.5548f), air_rearm_terminal), owning_building_guid = 41) - LocalObject(555, FacilityTurret.Constructor(Vector3(1878.04f, 2065.851f, 129.9268f), manned_turret), owning_building_guid = 41) + LocalObject( + 606, + Terminal.Constructor(Vector3(1885.649f, 2029.919f, 102.3168f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 607, + Terminal.Constructor(Vector3(1891.359f, 2030.318f, 102.3168f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 608, + Terminal.Constructor(Vector3(1896.727f, 2030.693f, 102.3168f), order_terminal), + owning_building_guid = 41 + ) + LocalObject( + 815, + SpawnTube.Constructor(Vector3(1882.519f, 2040.465f, 100.4668f), respawn_tube_tower, Vector3(0, 0, 86)), + owning_building_guid = 41 + ) + LocalObject( + 816, + SpawnTube.Constructor(Vector3(1898.889f, 2041.61f, 100.4668f), respawn_tube_tower, Vector3(0, 0, 86)), + owning_building_guid = 41 + ) + LocalObject( + 690, + ProximityTerminal.Constructor(Vector3(1888.662f, 2052.722f, 138.5548f), pad_landing_tower_frame), + owning_building_guid = 41 + ) + LocalObject( + 691, + Terminal.Constructor(Vector3(1888.662f, 2052.722f, 138.5548f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 693, + ProximityTerminal.Constructor(Vector3(1899.081f, 2053.451f, 138.5548f), pad_landing_tower_frame), + owning_building_guid = 41 + ) + LocalObject( + 694, + Terminal.Constructor(Vector3(1899.081f, 2053.451f, 138.5548f), air_rearm_terminal), + owning_building_guid = 41 + ) + LocalObject( + 555, + FacilityTurret.Constructor(Vector3(1878.04f, 2065.851f, 129.9268f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(555, 5025) - LocalObject(557, FacilityTurret.Constructor(Vector3(1910.56f, 2029.604f, 129.9268f), manned_turret), owning_building_guid = 41) + LocalObject( + 557, + FacilityTurret.Constructor(Vector3(1910.56f, 2029.604f, 129.9268f), manned_turret), + owning_building_guid = 41 + ) TurretToWeapon(557, 5026) - LocalObject(750, Painbox.Constructor(Vector3(1884.745f, 2034.389f, 101.0848f), painbox_radius_continuous), owning_building_guid = 41) - LocalObject(751, Painbox.Constructor(Vector3(1887.177f, 2047.058f, 103.0043f), painbox_radius_continuous), owning_building_guid = 41) - LocalObject(752, Painbox.Constructor(Vector3(1897.211f, 2035.07f, 101.0848f), painbox_radius_continuous), owning_building_guid = 41) + LocalObject( + 750, + Painbox.Constructor(Vector3(1884.745f, 2034.389f, 101.0848f), painbox_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 751, + Painbox.Constructor(Vector3(1887.177f, 2047.058f, 103.0043f), painbox_radius_continuous), + owning_building_guid = 41 + ) + LocalObject( + 752, + Painbox.Constructor(Vector3(1897.211f, 2035.07f, 101.0848f), painbox_radius_continuous), + owning_building_guid = 41 + ) } Building3() def Building3(): Unit = { // Name: Alpha_Top Type: tower_c GUID: 42, MapID: 3 - LocalBuilding("Alpha_Top", 42, 3, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2034f, 2332f, 114.5592f), Vector3(0f, 0f, 25f), tower_c))) - LocalObject(839, CaptureTerminal.Constructor(Vector3(2049.076f, 2338.917f, 124.5582f), secondary_capture), owning_building_guid = 42) + LocalBuilding( + "Alpha_Top", + 42, + 3, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2034f, 2332f, 114.5592f), Vector3(0f, 0f, 25f), tower_c) + ) + ) + LocalObject( + 839, + CaptureTerminal.Constructor(Vector3(2049.076f, 2338.917f, 124.5582f), secondary_capture), + owning_building_guid = 42 + ) LocalObject(158, Door.Constructor(Vector3(2041.495f, 2344.322f, 116.0802f)), owning_building_guid = 42) LocalObject(159, Door.Constructor(Vector3(2041.495f, 2344.322f, 136.0792f)), owning_building_guid = 42) LocalObject(160, Door.Constructor(Vector3(2048.257f, 2329.821f, 116.0802f)), owning_building_guid = 42) LocalObject(161, Door.Constructor(Vector3(2048.257f, 2329.821f, 136.0792f)), owning_building_guid = 42) LocalObject(881, Door.Constructor(Vector3(2041.902f, 2341.427f, 105.8952f)), owning_building_guid = 42) LocalObject(882, Door.Constructor(Vector3(2048.837f, 2326.554f, 105.8952f)), owning_building_guid = 42) - LocalObject(345, IFFLock.Constructor(Vector3(2039.3f, 2344.193f, 116.0202f), Vector3(0, 0, 335)), owning_building_guid = 42, door_guid = 158) - LocalObject(346, IFFLock.Constructor(Vector3(2039.3f, 2344.193f, 136.0202f), Vector3(0, 0, 335)), owning_building_guid = 42, door_guid = 159) - LocalObject(347, IFFLock.Constructor(Vector3(2050.455f, 2329.951f, 116.0202f), Vector3(0, 0, 155)), owning_building_guid = 42, door_guid = 160) - LocalObject(348, IFFLock.Constructor(Vector3(2050.455f, 2329.951f, 136.0202f), Vector3(0, 0, 155)), owning_building_guid = 42, door_guid = 161) + LocalObject( + 345, + IFFLock.Constructor(Vector3(2039.3f, 2344.193f, 116.0202f), Vector3(0, 0, 335)), + owning_building_guid = 42, + door_guid = 158 + ) + LocalObject( + 346, + IFFLock.Constructor(Vector3(2039.3f, 2344.193f, 136.0202f), Vector3(0, 0, 335)), + owning_building_guid = 42, + door_guid = 159 + ) + LocalObject( + 347, + IFFLock.Constructor(Vector3(2050.455f, 2329.951f, 116.0202f), Vector3(0, 0, 155)), + owning_building_guid = 42, + door_guid = 160 + ) + LocalObject( + 348, + IFFLock.Constructor(Vector3(2050.455f, 2329.951f, 136.0202f), Vector3(0, 0, 155)), + owning_building_guid = 42, + door_guid = 161 + ) LocalObject(461, Locker.Constructor(Vector3(2045.387f, 2344.851f, 104.5532f)), owning_building_guid = 42) LocalObject(462, Locker.Constructor(Vector3(2046.598f, 2345.416f, 104.5532f)), owning_building_guid = 42) LocalObject(463, Locker.Constructor(Vector3(2049.003f, 2346.538f, 104.5532f)), owning_building_guid = 42) @@ -914,39 +2486,126 @@ object Map98 { // Ascension LocalObject(466, Locker.Constructor(Vector3(2055.81f, 2325.579f, 104.5532f)), owning_building_guid = 42) LocalObject(467, Locker.Constructor(Vector3(2058.246f, 2326.715f, 104.5532f)), owning_building_guid = 42) LocalObject(468, Locker.Constructor(Vector3(2059.517f, 2327.307f, 104.5532f)), owning_building_guid = 42) - LocalObject(609, Terminal.Constructor(Vector3(2052.914f, 2342.181f, 105.8912f), order_terminal), owning_building_guid = 42) - LocalObject(610, Terminal.Constructor(Vector3(2055.188f, 2337.305f, 105.8912f), order_terminal), owning_building_guid = 42) - LocalObject(611, Terminal.Constructor(Vector3(2057.607f, 2332.117f, 105.8912f), order_terminal), owning_building_guid = 42) - LocalObject(817, SpawnTube.Constructor(Vector3(2041.948f, 2340.288f, 104.0412f), respawn_tube_tower, Vector3(0, 0, 335)), owning_building_guid = 42) - LocalObject(818, SpawnTube.Constructor(Vector3(2048.883f, 2325.415f, 104.0412f), respawn_tube_tower, Vector3(0, 0, 335)), owning_building_guid = 42) - LocalObject(696, ProximityTerminal.Constructor(Vector3(2030.824f, 2336.224f, 142.1292f), pad_landing_tower_frame), owning_building_guid = 42) - LocalObject(697, Terminal.Constructor(Vector3(2030.824f, 2336.224f, 142.1292f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(699, ProximityTerminal.Constructor(Vector3(2035.239f, 2326.757f, 142.1292f), pad_landing_tower_frame), owning_building_guid = 42) - LocalObject(700, Terminal.Constructor(Vector3(2035.239f, 2326.757f, 142.1292f), air_rearm_terminal), owning_building_guid = 42) - LocalObject(559, FacilityTurret.Constructor(Vector3(2026.789f, 2312.136f, 133.5012f), manned_turret), owning_building_guid = 42) + LocalObject( + 609, + Terminal.Constructor(Vector3(2052.914f, 2342.181f, 105.8912f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 610, + Terminal.Constructor(Vector3(2055.188f, 2337.305f, 105.8912f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 611, + Terminal.Constructor(Vector3(2057.607f, 2332.117f, 105.8912f), order_terminal), + owning_building_guid = 42 + ) + LocalObject( + 817, + SpawnTube.Constructor(Vector3(2041.948f, 2340.288f, 104.0412f), respawn_tube_tower, Vector3(0, 0, 335)), + owning_building_guid = 42 + ) + LocalObject( + 818, + SpawnTube.Constructor(Vector3(2048.883f, 2325.415f, 104.0412f), respawn_tube_tower, Vector3(0, 0, 335)), + owning_building_guid = 42 + ) + LocalObject( + 696, + ProximityTerminal.Constructor(Vector3(2030.824f, 2336.224f, 142.1292f), pad_landing_tower_frame), + owning_building_guid = 42 + ) + LocalObject( + 697, + Terminal.Constructor(Vector3(2030.824f, 2336.224f, 142.1292f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 699, + ProximityTerminal.Constructor(Vector3(2035.239f, 2326.757f, 142.1292f), pad_landing_tower_frame), + owning_building_guid = 42 + ) + LocalObject( + 700, + Terminal.Constructor(Vector3(2035.239f, 2326.757f, 142.1292f), air_rearm_terminal), + owning_building_guid = 42 + ) + LocalObject( + 559, + FacilityTurret.Constructor(Vector3(2026.789f, 2312.136f, 133.5012f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(559, 5027) - LocalObject(560, FacilityTurret.Constructor(Vector3(2048.974f, 2355.486f, 133.5012f), manned_turret), owning_building_guid = 42) + LocalObject( + 560, + FacilityTurret.Constructor(Vector3(2048.974f, 2355.486f, 133.5012f), manned_turret), + owning_building_guid = 42 + ) TurretToWeapon(560, 5028) - LocalObject(753, Painbox.Constructor(Vector3(2041.059f, 2327.401f, 106.5787f), painbox_radius_continuous), owning_building_guid = 42) - LocalObject(754, Painbox.Constructor(Vector3(2048.655f, 2341.065f, 104.6592f), painbox_radius_continuous), owning_building_guid = 42) - LocalObject(755, Painbox.Constructor(Vector3(2053.758f, 2329.671f, 104.6592f), painbox_radius_continuous), owning_building_guid = 42) + LocalObject( + 753, + Painbox.Constructor(Vector3(2041.059f, 2327.401f, 106.5787f), painbox_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 754, + Painbox.Constructor(Vector3(2048.655f, 2341.065f, 104.6592f), painbox_radius_continuous), + owning_building_guid = 42 + ) + LocalObject( + 755, + Painbox.Constructor(Vector3(2053.758f, 2329.671f, 104.6592f), painbox_radius_continuous), + owning_building_guid = 42 + ) } Building12() def Building12(): Unit = { // Name: Bravo_Bottom Type: tower_c GUID: 43, MapID: 12 - LocalBuilding("Bravo_Bottom", 43, 12, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2122f, 1574f, 12.09021f), Vector3(0f, 0f, 187f), tower_c))) - LocalObject(840, CaptureTerminal.Constructor(Vector3(2105.524f, 1572.081f, 22.08921f), secondary_capture), owning_building_guid = 43) + LocalBuilding( + "Bravo_Bottom", + 43, + 12, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2122f, 1574f, 12.09021f), Vector3(0f, 0f, 187f), tower_c) + ) + ) + LocalObject( + 840, + CaptureTerminal.Constructor(Vector3(2105.524f, 1572.081f, 22.08921f), secondary_capture), + owning_building_guid = 43 + ) LocalObject(163, Door.Constructor(Vector3(2109.115f, 1580.478f, 13.61121f)), owning_building_guid = 43) LocalObject(164, Door.Constructor(Vector3(2109.115f, 1580.478f, 33.61021f)), owning_building_guid = 43) LocalObject(165, Door.Constructor(Vector3(2111.064f, 1564.597f, 13.61121f)), owning_building_guid = 43) LocalObject(166, Door.Constructor(Vector3(2111.064f, 1564.597f, 33.61021f)), owning_building_guid = 43) LocalObject(883, Door.Constructor(Vector3(2109.571f, 1583.764f, 3.426213f)), owning_building_guid = 43) LocalObject(884, Door.Constructor(Vector3(2111.571f, 1567.476f, 3.426213f)), owning_building_guid = 43) - LocalObject(349, IFFLock.Constructor(Vector3(2106.984f, 1581.033f, 13.55121f), Vector3(0, 0, 353)), owning_building_guid = 43, door_guid = 163) - LocalObject(350, IFFLock.Constructor(Vector3(2106.984f, 1581.033f, 33.55121f), Vector3(0, 0, 353)), owning_building_guid = 43, door_guid = 164) - LocalObject(351, IFFLock.Constructor(Vector3(2113.191f, 1564.041f, 13.55121f), Vector3(0, 0, 173)), owning_building_guid = 43, door_guid = 165) - LocalObject(352, IFFLock.Constructor(Vector3(2113.191f, 1564.041f, 33.55121f), Vector3(0, 0, 173)), owning_building_guid = 43, door_guid = 166) + LocalObject( + 349, + IFFLock.Constructor(Vector3(2106.984f, 1581.033f, 13.55121f), Vector3(0, 0, 353)), + owning_building_guid = 43, + door_guid = 163 + ) + LocalObject( + 350, + IFFLock.Constructor(Vector3(2106.984f, 1581.033f, 33.55121f), Vector3(0, 0, 353)), + owning_building_guid = 43, + door_guid = 164 + ) + LocalObject( + 351, + IFFLock.Constructor(Vector3(2113.191f, 1564.041f, 13.55121f), Vector3(0, 0, 173)), + owning_building_guid = 43, + door_guid = 165 + ) + LocalObject( + 352, + IFFLock.Constructor(Vector3(2113.191f, 1564.041f, 33.55121f), Vector3(0, 0, 173)), + owning_building_guid = 43, + door_guid = 166 + ) LocalObject(469, Locker.Constructor(Vector3(2099.182f, 1586.348f, 2.084213f)), owning_building_guid = 43) LocalObject(470, Locker.Constructor(Vector3(2100.574f, 1586.519f, 2.084213f)), owning_building_guid = 43) LocalObject(471, Locker.Constructor(Vector3(2101.848f, 1564.639f, 2.084213f)), owning_building_guid = 43) @@ -955,39 +2614,126 @@ object Map98 { // Ascension LocalObject(474, Locker.Constructor(Vector3(2104.569f, 1587.01f, 2.084213f)), owning_building_guid = 43) LocalObject(475, Locker.Constructor(Vector3(2105.872f, 1565.133f, 2.084213f)), owning_building_guid = 43) LocalObject(476, Locker.Constructor(Vector3(2107.199f, 1565.296f, 2.084213f)), owning_building_guid = 43) - LocalObject(612, Terminal.Constructor(Vector3(2099.512f, 1581.184f, 3.422213f), order_terminal), owning_building_guid = 43) - LocalObject(613, Terminal.Constructor(Vector3(2100.209f, 1575.503f, 3.422213f), order_terminal), owning_building_guid = 43) - LocalObject(614, Terminal.Constructor(Vector3(2100.865f, 1570.162f, 3.422213f), order_terminal), owning_building_guid = 43) - LocalObject(819, SpawnTube.Constructor(Vector3(2109.88f, 1584.862f, 1.572213f), respawn_tube_tower, Vector3(0, 0, 173)), owning_building_guid = 43) - LocalObject(820, SpawnTube.Constructor(Vector3(2111.88f, 1568.574f, 1.572213f), respawn_tube_tower, Vector3(0, 0, 173)), owning_building_guid = 43) - LocalObject(702, ProximityTerminal.Constructor(Vector3(2122.442f, 1579.369f, 39.66021f), pad_landing_tower_frame), owning_building_guid = 43) - LocalObject(703, Terminal.Constructor(Vector3(2122.442f, 1579.369f, 39.66021f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(705, ProximityTerminal.Constructor(Vector3(2123.715f, 1569.002f, 39.66021f), pad_landing_tower_frame), owning_building_guid = 43) - LocalObject(706, Terminal.Constructor(Vector3(2123.715f, 1569.002f, 39.66021f), air_rearm_terminal), owning_building_guid = 43) - LocalObject(561, FacilityTurret.Constructor(Vector3(2100.501f, 1556.291f, 31.03221f), manned_turret), owning_building_guid = 43) + LocalObject( + 612, + Terminal.Constructor(Vector3(2099.512f, 1581.184f, 3.422213f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 613, + Terminal.Constructor(Vector3(2100.209f, 1575.503f, 3.422213f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 614, + Terminal.Constructor(Vector3(2100.865f, 1570.162f, 3.422213f), order_terminal), + owning_building_guid = 43 + ) + LocalObject( + 819, + SpawnTube.Constructor(Vector3(2109.88f, 1584.862f, 1.572213f), respawn_tube_tower, Vector3(0, 0, 173)), + owning_building_guid = 43 + ) + LocalObject( + 820, + SpawnTube.Constructor(Vector3(2111.88f, 1568.574f, 1.572213f), respawn_tube_tower, Vector3(0, 0, 173)), + owning_building_guid = 43 + ) + LocalObject( + 702, + ProximityTerminal.Constructor(Vector3(2122.442f, 1579.369f, 39.66021f), pad_landing_tower_frame), + owning_building_guid = 43 + ) + LocalObject( + 703, + Terminal.Constructor(Vector3(2122.442f, 1579.369f, 39.66021f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 705, + ProximityTerminal.Constructor(Vector3(2123.715f, 1569.002f, 39.66021f), pad_landing_tower_frame), + owning_building_guid = 43 + ) + LocalObject( + 706, + Terminal.Constructor(Vector3(2123.715f, 1569.002f, 39.66021f), air_rearm_terminal), + owning_building_guid = 43 + ) + LocalObject( + 561, + FacilityTurret.Constructor(Vector3(2100.501f, 1556.291f, 31.03221f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(561, 5029) - LocalObject(562, FacilityTurret.Constructor(Vector3(2134.996f, 1590.663f, 31.03221f), manned_turret), owning_building_guid = 43) + LocalObject( + 562, + FacilityTurret.Constructor(Vector3(2134.996f, 1590.663f, 31.03221f), manned_turret), + owning_building_guid = 43 + ) TurretToWeapon(562, 5030) - LocalObject(756, Painbox.Constructor(Vector3(2103.928f, 1582.32f, 2.190213f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(757, Painbox.Constructor(Vector3(2105.261f, 1569.908f, 2.190213f), painbox_radius_continuous), owning_building_guid = 43) - LocalObject(758, Painbox.Constructor(Vector3(2116.708f, 1580.555f, 4.109713f), painbox_radius_continuous), owning_building_guid = 43) + LocalObject( + 756, + Painbox.Constructor(Vector3(2103.928f, 1582.32f, 2.190213f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 757, + Painbox.Constructor(Vector3(2105.261f, 1569.908f, 2.190213f), painbox_radius_continuous), + owning_building_guid = 43 + ) + LocalObject( + 758, + Painbox.Constructor(Vector3(2116.708f, 1580.555f, 4.109713f), painbox_radius_continuous), + owning_building_guid = 43 + ) } Building2() def Building2(): Unit = { // Name: Charlie_Top Type: tower_c GUID: 44, MapID: 2 - LocalBuilding("Charlie_Top", 44, 2, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2254f, 2136f, 110.7895f), Vector3(0f, 0f, 238f), tower_c))) - LocalObject(841, CaptureTerminal.Constructor(Vector3(2245.123f, 2121.988f, 120.7885f), secondary_capture), owning_building_guid = 44) + LocalBuilding( + "Charlie_Top", + 44, + 2, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2254f, 2136f, 110.7895f), Vector3(0f, 0f, 238f), tower_c) + ) + ) + LocalObject( + 841, + CaptureTerminal.Constructor(Vector3(2245.123f, 2121.988f, 120.7885f), secondary_capture), + owning_building_guid = 44 + ) LocalObject(168, Door.Constructor(Vector3(2240.856f, 2130.063f, 112.3105f)), owning_building_guid = 44) LocalObject(169, Door.Constructor(Vector3(2240.856f, 2130.063f, 132.3095f)), owning_building_guid = 44) LocalObject(172, Door.Constructor(Vector3(2254.425f, 2121.584f, 112.3105f)), owning_building_guid = 44) LocalObject(173, Door.Constructor(Vector3(2254.425f, 2121.584f, 132.3095f)), owning_building_guid = 44) LocalObject(885, Door.Constructor(Vector3(2238.59f, 2132.486f, 102.1255f)), owning_building_guid = 44) LocalObject(886, Door.Constructor(Vector3(2252.507f, 2123.79f, 102.1255f)), owning_building_guid = 44) - LocalObject(353, IFFLock.Constructor(Vector3(2239.084f, 2128.757f, 112.2505f), Vector3(0, 0, 302)), owning_building_guid = 44, door_guid = 168) - LocalObject(354, IFFLock.Constructor(Vector3(2239.084f, 2128.757f, 132.2505f), Vector3(0, 0, 302)), owning_building_guid = 44, door_guid = 169) - LocalObject(355, IFFLock.Constructor(Vector3(2256.196f, 2122.887f, 112.2505f), Vector3(0, 0, 122)), owning_building_guid = 44, door_guid = 172) - LocalObject(356, IFFLock.Constructor(Vector3(2256.196f, 2122.887f, 132.2505f), Vector3(0, 0, 122)), owning_building_guid = 44, door_guid = 173) + LocalObject( + 353, + IFFLock.Constructor(Vector3(2239.084f, 2128.757f, 112.2505f), Vector3(0, 0, 302)), + owning_building_guid = 44, + door_guid = 168 + ) + LocalObject( + 354, + IFFLock.Constructor(Vector3(2239.084f, 2128.757f, 132.2505f), Vector3(0, 0, 302)), + owning_building_guid = 44, + door_guid = 169 + ) + LocalObject( + 355, + IFFLock.Constructor(Vector3(2256.196f, 2122.887f, 112.2505f), Vector3(0, 0, 122)), + owning_building_guid = 44, + door_guid = 172 + ) + LocalObject( + 356, + IFFLock.Constructor(Vector3(2256.196f, 2122.887f, 132.2505f), Vector3(0, 0, 122)), + owning_building_guid = 44, + door_guid = 173 + ) LocalObject(477, Locker.Constructor(Vector3(2230.044f, 2126.038f, 100.7835f)), owning_building_guid = 44) LocalObject(478, Locker.Constructor(Vector3(2230.787f, 2127.227f, 100.7835f)), owning_building_guid = 44) LocalObject(479, Locker.Constructor(Vector3(2232.211f, 2129.507f, 100.7835f)), owning_building_guid = 44) @@ -996,39 +2742,126 @@ object Map98 { // Ascension LocalObject(482, Locker.Constructor(Vector3(2249.335f, 2115.637f, 100.7835f)), owning_building_guid = 44) LocalObject(483, Locker.Constructor(Vector3(2250.741f, 2117.887f, 100.7835f)), owning_building_guid = 44) LocalObject(484, Locker.Constructor(Vector3(2251.45f, 2119.021f, 100.7835f)), owning_building_guid = 44) - LocalObject(615, Terminal.Constructor(Vector3(2234.265f, 2123.044f, 102.1215f), order_terminal), owning_building_guid = 44) - LocalObject(616, Terminal.Constructor(Vector3(2239.119f, 2120.011f, 102.1215f), order_terminal), owning_building_guid = 44) - LocalObject(617, Terminal.Constructor(Vector3(2243.682f, 2117.16f, 102.1215f), order_terminal), owning_building_guid = 44) - LocalObject(821, SpawnTube.Constructor(Vector3(2237.931f, 2133.417f, 100.2715f), respawn_tube_tower, Vector3(0, 0, 122)), owning_building_guid = 44) - LocalObject(822, SpawnTube.Constructor(Vector3(2251.848f, 2124.721f, 100.2715f), respawn_tube_tower, Vector3(0, 0, 122)), owning_building_guid = 44) - LocalObject(708, ProximityTerminal.Constructor(Vector3(2250.106f, 2139.722f, 138.3595f), pad_landing_tower_frame), owning_building_guid = 44) - LocalObject(709, Terminal.Constructor(Vector3(2250.106f, 2139.722f, 138.3595f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(711, ProximityTerminal.Constructor(Vector3(2258.964f, 2134.187f, 138.3595f), pad_landing_tower_frame), owning_building_guid = 44) - LocalObject(712, Terminal.Constructor(Vector3(2258.964f, 2134.187f, 138.3595f), air_rearm_terminal), owning_building_guid = 44) - LocalObject(563, FacilityTurret.Constructor(Vector3(2249.229f, 2156.586f, 129.7315f), manned_turret), owning_building_guid = 44) + LocalObject( + 615, + Terminal.Constructor(Vector3(2234.265f, 2123.044f, 102.1215f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 616, + Terminal.Constructor(Vector3(2239.119f, 2120.011f, 102.1215f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 617, + Terminal.Constructor(Vector3(2243.682f, 2117.16f, 102.1215f), order_terminal), + owning_building_guid = 44 + ) + LocalObject( + 821, + SpawnTube.Constructor(Vector3(2237.931f, 2133.417f, 100.2715f), respawn_tube_tower, Vector3(0, 0, 122)), + owning_building_guid = 44 + ) + LocalObject( + 822, + SpawnTube.Constructor(Vector3(2251.848f, 2124.721f, 100.2715f), respawn_tube_tower, Vector3(0, 0, 122)), + owning_building_guid = 44 + ) + LocalObject( + 708, + ProximityTerminal.Constructor(Vector3(2250.106f, 2139.722f, 138.3595f), pad_landing_tower_frame), + owning_building_guid = 44 + ) + LocalObject( + 709, + Terminal.Constructor(Vector3(2250.106f, 2139.722f, 138.3595f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 711, + ProximityTerminal.Constructor(Vector3(2258.964f, 2134.187f, 138.3595f), pad_landing_tower_frame), + owning_building_guid = 44 + ) + LocalObject( + 712, + Terminal.Constructor(Vector3(2258.964f, 2134.187f, 138.3595f), air_rearm_terminal), + owning_building_guid = 44 + ) + LocalObject( + 563, + FacilityTurret.Constructor(Vector3(2249.229f, 2156.586f, 129.7315f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(563, 5031) - LocalObject(564, FacilityTurret.Constructor(Vector3(2254.233f, 2108.147f, 129.7315f), manned_turret), owning_building_guid = 44) + LocalObject( + 564, + FacilityTurret.Constructor(Vector3(2254.233f, 2108.147f, 129.7315f), manned_turret), + owning_building_guid = 44 + ) TurretToWeapon(564, 5032) - LocalObject(759, Painbox.Constructor(Vector3(2236.161f, 2127.192f, 100.8895f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(760, Painbox.Constructor(Vector3(2245.575f, 2136.012f, 102.809f), painbox_radius_continuous), owning_building_guid = 44) - LocalObject(761, Painbox.Constructor(Vector3(2246.646f, 2120.416f, 100.8895f), painbox_radius_continuous), owning_building_guid = 44) + LocalObject( + 759, + Painbox.Constructor(Vector3(2236.161f, 2127.192f, 100.8895f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 760, + Painbox.Constructor(Vector3(2245.575f, 2136.012f, 102.809f), painbox_radius_continuous), + owning_building_guid = 44 + ) + LocalObject( + 761, + Painbox.Constructor(Vector3(2246.646f, 2120.416f, 100.8895f), painbox_radius_continuous), + owning_building_guid = 44 + ) } Building9() def Building9(): Unit = { // Name: Charlie_Bottom Type: tower_c GUID: 45, MapID: 9 - LocalBuilding("Charlie_Bottom", 45, 9, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2806f, 2560f, 11.30894f), Vector3(0f, 0f, 171f), tower_c))) - LocalObject(844, CaptureTerminal.Constructor(Vector3(2789.633f, 2562.697f, 21.30794f), secondary_capture), owning_building_guid = 45) + LocalBuilding( + "Charlie_Bottom", + 45, + 9, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2806f, 2560f, 11.30894f), Vector3(0f, 0f, 171f), tower_c) + ) + ) + LocalObject( + 844, + CaptureTerminal.Constructor(Vector3(2789.633f, 2562.697f, 21.30794f), secondary_capture), + owning_building_guid = 45 + ) LocalObject(209, Door.Constructor(Vector3(2792.896f, 2553.976f, 12.82994f)), owning_building_guid = 45) LocalObject(210, Door.Constructor(Vector3(2792.896f, 2553.976f, 32.82894f)), owning_building_guid = 45) LocalObject(211, Door.Constructor(Vector3(2795.399f, 2569.779f, 12.82994f)), owning_building_guid = 45) LocalObject(212, Door.Constructor(Vector3(2795.399f, 2569.779f, 32.82894f)), owning_building_guid = 45) LocalObject(894, Door.Constructor(Vector3(2794.177f, 2556.604f, 2.644939f)), owning_building_guid = 45) LocalObject(895, Door.Constructor(Vector3(2796.744f, 2572.812f, 2.644939f)), owning_building_guid = 45) - LocalObject(378, IFFLock.Constructor(Vector3(2793.504f, 2570.9f, 12.76994f), Vector3(0, 0, 9)), owning_building_guid = 45, door_guid = 211) - LocalObject(379, IFFLock.Constructor(Vector3(2793.504f, 2570.9f, 32.76994f), Vector3(0, 0, 9)), owning_building_guid = 45, door_guid = 212) - LocalObject(380, IFFLock.Constructor(Vector3(2794.787f, 2552.855f, 12.76994f), Vector3(0, 0, 189)), owning_building_guid = 45, door_guid = 209) - LocalObject(381, IFFLock.Constructor(Vector3(2794.787f, 2552.855f, 32.76994f), Vector3(0, 0, 189)), owning_building_guid = 45, door_guid = 210) + LocalObject( + 378, + IFFLock.Constructor(Vector3(2793.504f, 2570.9f, 12.76994f), Vector3(0, 0, 9)), + owning_building_guid = 45, + door_guid = 211 + ) + LocalObject( + 379, + IFFLock.Constructor(Vector3(2793.504f, 2570.9f, 32.76994f), Vector3(0, 0, 9)), + owning_building_guid = 45, + door_guid = 212 + ) + LocalObject( + 380, + IFFLock.Constructor(Vector3(2794.787f, 2552.855f, 12.76994f), Vector3(0, 0, 189)), + owning_building_guid = 45, + door_guid = 209 + ) + LocalObject( + 381, + IFFLock.Constructor(Vector3(2794.787f, 2552.855f, 32.76994f), Vector3(0, 0, 189)), + owning_building_guid = 45, + door_guid = 210 + ) LocalObject(513, Locker.Constructor(Vector3(2784.048f, 2556.557f, 1.302939f)), owning_building_guid = 45) LocalObject(514, Locker.Constructor(Vector3(2785.433f, 2556.337f, 1.302939f)), owning_building_guid = 45) LocalObject(515, Locker.Constructor(Vector3(2787.47f, 2578.159f, 1.302939f)), owning_building_guid = 45) @@ -1037,40 +2870,111 @@ object Map98 { // Ascension LocalObject(518, Locker.Constructor(Vector3(2789.374f, 2555.713f, 1.302939f)), owning_building_guid = 45) LocalObject(519, Locker.Constructor(Vector3(2791.509f, 2577.52f, 1.302939f)), owning_building_guid = 45) LocalObject(520, Locker.Constructor(Vector3(2792.83f, 2577.311f, 1.302939f)), owning_building_guid = 45) - LocalObject(630, Terminal.Constructor(Vector3(2784.626f, 2562.136f, 2.640939f), order_terminal), owning_building_guid = 45) - LocalObject(631, Terminal.Constructor(Vector3(2785.468f, 2567.451f, 2.640939f), order_terminal), owning_building_guid = 45) - LocalObject(632, Terminal.Constructor(Vector3(2786.363f, 2573.104f, 2.640939f), order_terminal), owning_building_guid = 45) - LocalObject(830, SpawnTube.Constructor(Vector3(2794.776f, 2557.574f, 0.7909393f), respawn_tube_tower, Vector3(0, 0, 189)), owning_building_guid = 45) - LocalObject(831, SpawnTube.Constructor(Vector3(2797.343f, 2573.782f, 0.7909393f), respawn_tube_tower, Vector3(0, 0, 189)), owning_building_guid = 45) - LocalObject(714, ProximityTerminal.Constructor(Vector3(2806.271f, 2554.723f, 38.87894f), pad_landing_tower_frame), owning_building_guid = 45) - LocalObject(715, Terminal.Constructor(Vector3(2806.271f, 2554.723f, 38.87894f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(717, ProximityTerminal.Constructor(Vector3(2807.905f, 2565.039f, 38.87894f), pad_landing_tower_frame), owning_building_guid = 45) - LocalObject(718, Terminal.Constructor(Vector3(2807.905f, 2565.039f, 38.87894f), air_rearm_terminal), owning_building_guid = 45) - LocalObject(573, FacilityTurret.Constructor(Vector3(2780.453f, 2548.903f, 30.25094f), manned_turret), owning_building_guid = 45) + LocalObject( + 630, + Terminal.Constructor(Vector3(2784.626f, 2562.136f, 2.640939f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 631, + Terminal.Constructor(Vector3(2785.468f, 2567.451f, 2.640939f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 632, + Terminal.Constructor(Vector3(2786.363f, 2573.104f, 2.640939f), order_terminal), + owning_building_guid = 45 + ) + LocalObject( + 830, + SpawnTube.Constructor(Vector3(2794.776f, 2557.574f, 0.7909393f), respawn_tube_tower, Vector3(0, 0, 189)), + owning_building_guid = 45 + ) + LocalObject( + 831, + SpawnTube.Constructor(Vector3(2797.343f, 2573.782f, 0.7909393f), respawn_tube_tower, Vector3(0, 0, 189)), + owning_building_guid = 45 + ) + LocalObject( + 714, + ProximityTerminal.Constructor(Vector3(2806.271f, 2554.723f, 38.87894f), pad_landing_tower_frame), + owning_building_guid = 45 + ) + LocalObject( + 715, + Terminal.Constructor(Vector3(2806.271f, 2554.723f, 38.87894f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 717, + ProximityTerminal.Constructor(Vector3(2807.905f, 2565.039f, 38.87894f), pad_landing_tower_frame), + owning_building_guid = 45 + ) + LocalObject( + 718, + Terminal.Constructor(Vector3(2807.905f, 2565.039f, 38.87894f), air_rearm_terminal), + owning_building_guid = 45 + ) + LocalObject( + 573, + FacilityTurret.Constructor(Vector3(2780.453f, 2548.903f, 30.25094f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(573, 5033) - LocalObject(574, FacilityTurret.Constructor(Vector3(2823.086f, 2572.435f, 30.25094f), manned_turret), owning_building_guid = 45) + LocalObject( + 574, + FacilityTurret.Constructor(Vector3(2823.086f, 2572.435f, 30.25094f), manned_turret), + owning_building_guid = 45 + ) TurretToWeapon(574, 5034) - LocalObject(768, Painbox.Constructor(Vector3(2788.782f, 2560.68f, 1.408939f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(769, Painbox.Constructor(Vector3(2790.922f, 2572.979f, 1.408939f), painbox_radius_continuous), owning_building_guid = 45) - LocalObject(770, Painbox.Constructor(Vector3(2802.719f, 2567.76f, 3.328439f), painbox_radius_continuous), owning_building_guid = 45) + LocalObject( + 768, + Painbox.Constructor(Vector3(2788.782f, 2560.68f, 1.408939f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 769, + Painbox.Constructor(Vector3(2790.922f, 2572.979f, 1.408939f), painbox_radius_continuous), + owning_building_guid = 45 + ) + LocalObject( + 770, + Painbox.Constructor(Vector3(2802.719f, 2567.76f, 3.328439f), painbox_radius_continuous), + owning_building_guid = 45 + ) } Building10000() def Building10000(): Unit = { // Name: Map98_Gate_One Type: warpgate_small GUID: 46, MapID: 10000 - LocalBuilding("Map98_Gate_One", 46, 10000, FoundationBuilder(WarpGate.Structure(Vector3(1298.27f, 1352.5f, 12.09f)))) + LocalBuilding( + "Map98_Gate_One", + 46, + 10000, + FoundationBuilder(WarpGate.Structure(Vector3(1298.27f, 1352.5f, 12.09f))) + ) } Building10001() def Building10001(): Unit = { // Name: Map98_Gate_Three Type: warpgate_small GUID: 47, MapID: 10001 - LocalBuilding("Map98_Gate_Three", 47, 10001, FoundationBuilder(WarpGate.Structure(Vector3(2481.78f, 2616.39f, 12.09f)))) + LocalBuilding( + "Map98_Gate_Three", + 47, + 10001, + FoundationBuilder(WarpGate.Structure(Vector3(2481.78f, 2616.39f, 12.09f))) + ) } Building10002() def Building10002(): Unit = { // Name: Map98_Gate_Two Type: warpgate_small GUID: 48, MapID: 10002 - LocalBuilding("Map98_Gate_Two", 48, 10002, FoundationBuilder(WarpGate.Structure(Vector3(2679.7f, 1434.86f, 12.09f)))) + LocalBuilding( + "Map98_Gate_Two", + 48, + 10002, + FoundationBuilder(WarpGate.Structure(Vector3(2679.7f, 1434.86f, 12.09f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Map99.scala b/pslogin/src/main/scala/zonemaps/Map99.scala index 66a67897..1e59ed04 100644 --- a/pslogin/src/main/scala/zonemaps/Map99.scala +++ b/pslogin/src/main/scala/zonemaps/Map99.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -24,8 +24,24 @@ object Map99 { // Extinction Building7() def Building7(): Unit = { // Name: Blue_Base Type: amp_station GUID: 1, MapID: 7 - LocalBuilding("Blue_Base", 1, 7, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(2844f, 2746f, 88.53952f), Vector3(0f, 0f, 36f), amp_station))) - LocalObject(59, CaptureTerminal.Constructor(Vector3(2841.299f, 2744.042f, 100.0475f), capture_terminal), owning_building_guid = 1) + LocalBuilding( + "Blue_Base", + 1, + 7, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(2844f, 2746f, 88.53952f), + Vector3(0f, 0f, 36f), + amp_station + ) + ) + ) + LocalObject( + 59, + CaptureTerminal.Constructor(Vector3(2841.299f, 2744.042f, 100.0475f), capture_terminal), + owning_building_guid = 1 + ) LocalObject(52, Door.Constructor(Vector3(2840.173f, 2751.631f, 101.4415f)), owning_building_guid = 1) LocalObject(53, Door.Constructor(Vector3(2848.17f, 2740.619f, 101.4415f)), owning_building_guid = 1) LocalObject(158, Door.Constructor(Vector3(2735.492f, 2766.05f, 90.26052f)), owning_building_guid = 1) @@ -71,18 +87,78 @@ object Map99 { // Extinction LocalObject(753, Door.Constructor(Vector3(2825.828f, 2738.131f, 83.09352f)), owning_building_guid = 1) LocalObject(754, Door.Constructor(Vector3(2830.112f, 2732.234f, 83.09352f)), owning_building_guid = 1) LocalObject(755, Door.Constructor(Vector3(2834.399f, 2726.334f, 83.09352f)), owning_building_guid = 1) - LocalObject(262, IFFLock.Constructor(Vector3(2868.018f, 2767.24f, 90.21952f), Vector3(0, 0, 54)), owning_building_guid = 1, door_guid = 250) - LocalObject(320, IFFLock.Constructor(Vector3(2733.353f, 2765.517f, 90.19952f), Vector3(0, 0, 324)), owning_building_guid = 1, door_guid = 158) - LocalObject(321, IFFLock.Constructor(Vector3(2807.25f, 2716.298f, 75.07552f), Vector3(0, 0, 54)), owning_building_guid = 1, door_guid = 228) - LocalObject(322, IFFLock.Constructor(Vector3(2820.998f, 2774.183f, 95.20152f), Vector3(0, 0, 324)), owning_building_guid = 1, door_guid = 166) - LocalObject(323, IFFLock.Constructor(Vector3(2823.063f, 2766.066f, 100.2005f), Vector3(0, 0, 234)), owning_building_guid = 1, door_guid = 165) - LocalObject(324, IFFLock.Constructor(Vector3(2827.765f, 2745.256f, 82.57552f), Vector3(0, 0, 324)), owning_building_guid = 1, door_guid = 235) - LocalObject(325, IFFLock.Constructor(Vector3(2829.302f, 2775.658f, 100.2005f), Vector3(0, 0, 54)), owning_building_guid = 1, door_guid = 167) - LocalObject(326, IFFLock.Constructor(Vector3(2845.444f, 2726.271f, 82.57552f), Vector3(0, 0, 144)), owning_building_guid = 1, door_guid = 240) - LocalObject(327, IFFLock.Constructor(Vector3(2851.217f, 2734.468f, 75.07552f), Vector3(0, 0, 234)), owning_building_guid = 1, door_guid = 242) - LocalObject(328, IFFLock.Constructor(Vector3(2858.999f, 2716.605f, 100.2005f), Vector3(0, 0, 234)), owning_building_guid = 1, door_guid = 168) - LocalObject(329, IFFLock.Constructor(Vector3(2865.24f, 2726.194f, 100.2005f), Vector3(0, 0, 54)), owning_building_guid = 1, door_guid = 170) - LocalObject(332, IFFLock.Constructor(Vector3(2866.989f, 2717.833f, 95.20152f), Vector3(0, 0, 144)), owning_building_guid = 1, door_guid = 169) + LocalObject( + 262, + IFFLock.Constructor(Vector3(2868.018f, 2767.24f, 90.21952f), Vector3(0, 0, 54)), + owning_building_guid = 1, + door_guid = 250 + ) + LocalObject( + 320, + IFFLock.Constructor(Vector3(2733.353f, 2765.517f, 90.19952f), Vector3(0, 0, 324)), + owning_building_guid = 1, + door_guid = 158 + ) + LocalObject( + 321, + IFFLock.Constructor(Vector3(2807.25f, 2716.298f, 75.07552f), Vector3(0, 0, 54)), + owning_building_guid = 1, + door_guid = 228 + ) + LocalObject( + 322, + IFFLock.Constructor(Vector3(2820.998f, 2774.183f, 95.20152f), Vector3(0, 0, 324)), + owning_building_guid = 1, + door_guid = 166 + ) + LocalObject( + 323, + IFFLock.Constructor(Vector3(2823.063f, 2766.066f, 100.2005f), Vector3(0, 0, 234)), + owning_building_guid = 1, + door_guid = 165 + ) + LocalObject( + 324, + IFFLock.Constructor(Vector3(2827.765f, 2745.256f, 82.57552f), Vector3(0, 0, 324)), + owning_building_guid = 1, + door_guid = 235 + ) + LocalObject( + 325, + IFFLock.Constructor(Vector3(2829.302f, 2775.658f, 100.2005f), Vector3(0, 0, 54)), + owning_building_guid = 1, + door_guid = 167 + ) + LocalObject( + 326, + IFFLock.Constructor(Vector3(2845.444f, 2726.271f, 82.57552f), Vector3(0, 0, 144)), + owning_building_guid = 1, + door_guid = 240 + ) + LocalObject( + 327, + IFFLock.Constructor(Vector3(2851.217f, 2734.468f, 75.07552f), Vector3(0, 0, 234)), + owning_building_guid = 1, + door_guid = 242 + ) + LocalObject( + 328, + IFFLock.Constructor(Vector3(2858.999f, 2716.605f, 100.2005f), Vector3(0, 0, 234)), + owning_building_guid = 1, + door_guid = 168 + ) + LocalObject( + 329, + IFFLock.Constructor(Vector3(2865.24f, 2726.194f, 100.2005f), Vector3(0, 0, 54)), + owning_building_guid = 1, + door_guid = 170 + ) + LocalObject( + 332, + IFFLock.Constructor(Vector3(2866.989f, 2717.833f, 95.20152f), Vector3(0, 0, 144)), + owning_building_guid = 1, + door_guid = 169 + ) LocalObject(432, Locker.Constructor(Vector3(2842.151f, 2752.277f, 73.73952f)), owning_building_guid = 1) LocalObject(433, Locker.Constructor(Vector3(2843.222f, 2753.055f, 73.73952f)), owning_building_guid = 1) LocalObject(434, Locker.Constructor(Vector3(2844.303f, 2753.841f, 73.73952f)), owning_building_guid = 1) @@ -95,64 +171,249 @@ object Map99 { // Extinction LocalObject(441, Locker.Constructor(Vector3(2850.129f, 2758.073f, 73.73952f)), owning_building_guid = 1) LocalObject(442, Locker.Constructor(Vector3(2851.21f, 2758.859f, 73.73952f)), owning_building_guid = 1) LocalObject(443, Locker.Constructor(Vector3(2852.292f, 2759.645f, 73.73952f)), owning_building_guid = 1) - LocalObject(535, Terminal.Constructor(Vector3(2825.826f, 2732.791f, 90.06852f), order_terminal), owning_building_guid = 1) - LocalObject(536, Terminal.Constructor(Vector3(2830.787f, 2764.183f, 90.06852f), order_terminal), owning_building_guid = 1) - LocalObject(537, Terminal.Constructor(Vector3(2840.305f, 2741.99f, 82.82952f), order_terminal), owning_building_guid = 1) - LocalObject(538, Terminal.Constructor(Vector3(2842.532f, 2738.925f, 82.82952f), order_terminal), owning_building_guid = 1) - LocalObject(539, Terminal.Constructor(Vector3(2844.725f, 2735.907f, 82.82952f), order_terminal), owning_building_guid = 1) - LocalObject(540, Terminal.Constructor(Vector3(2857.21f, 2727.814f, 90.06852f), order_terminal), owning_building_guid = 1) - LocalObject(725, Terminal.Constructor(Vector3(2782.05f, 2749.703f, 82.79652f), spawn_terminal), owning_building_guid = 1) - LocalObject(726, Terminal.Constructor(Vector3(2815.573f, 2744.394f, 75.29652f), spawn_terminal), owning_building_guid = 1) - LocalObject(727, Terminal.Constructor(Vector3(2827.533f, 2736.289f, 83.37352f), spawn_terminal), owning_building_guid = 1) - LocalObject(728, Terminal.Constructor(Vector3(2831.814f, 2730.391f, 83.37352f), spawn_terminal), owning_building_guid = 1) - LocalObject(729, Terminal.Constructor(Vector3(2836.104f, 2724.494f, 83.37352f), spawn_terminal), owning_building_guid = 1) - LocalObject(730, Terminal.Constructor(Vector3(2842.192f, 2739.124f, 95.26752f), spawn_terminal), owning_building_guid = 1) - LocalObject(778, Terminal.Constructor(Vector3(2756.751f, 2784.552f, 90.64152f), vehicle_terminal_combined), owning_building_guid = 1) - LocalObject(494, VehicleSpawnPad.Constructor(Vector3(2764.84f, 2773.572f, 86.48452f), mb_pad_creation, Vector3(0, 0, 144)), owning_building_guid = 1, terminal_guid = 778) + LocalObject( + 535, + Terminal.Constructor(Vector3(2825.826f, 2732.791f, 90.06852f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 536, + Terminal.Constructor(Vector3(2830.787f, 2764.183f, 90.06852f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 537, + Terminal.Constructor(Vector3(2840.305f, 2741.99f, 82.82952f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 538, + Terminal.Constructor(Vector3(2842.532f, 2738.925f, 82.82952f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 539, + Terminal.Constructor(Vector3(2844.725f, 2735.907f, 82.82952f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 540, + Terminal.Constructor(Vector3(2857.21f, 2727.814f, 90.06852f), order_terminal), + owning_building_guid = 1 + ) + LocalObject( + 725, + Terminal.Constructor(Vector3(2782.05f, 2749.703f, 82.79652f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 726, + Terminal.Constructor(Vector3(2815.573f, 2744.394f, 75.29652f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 727, + Terminal.Constructor(Vector3(2827.533f, 2736.289f, 83.37352f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 728, + Terminal.Constructor(Vector3(2831.814f, 2730.391f, 83.37352f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 729, + Terminal.Constructor(Vector3(2836.104f, 2724.494f, 83.37352f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 730, + Terminal.Constructor(Vector3(2842.192f, 2739.124f, 95.26752f), spawn_terminal), + owning_building_guid = 1 + ) + LocalObject( + 778, + Terminal.Constructor(Vector3(2756.751f, 2784.552f, 90.64152f), vehicle_terminal_combined), + owning_building_guid = 1 + ) + LocalObject( + 494, + VehicleSpawnPad.Constructor(Vector3(2764.84f, 2773.572f, 86.48452f), mb_pad_creation, Vector3(0, 0, 144)), + owning_building_guid = 1, + terminal_guid = 778 + ) LocalObject(675, ResourceSilo.Constructor(Vector3(2936.843f, 2707.777f, 95.77452f)), owning_building_guid = 1) - LocalObject(698, SpawnTube.Constructor(Vector3(2826.091f, 2737.02f, 81.23952f), Vector3(0, 0, 324)), owning_building_guid = 1) - LocalObject(699, SpawnTube.Constructor(Vector3(2830.375f, 2731.124f, 81.23952f), Vector3(0, 0, 324)), owning_building_guid = 1) - LocalObject(700, SpawnTube.Constructor(Vector3(2834.66f, 2725.226f, 81.23952f), Vector3(0, 0, 324)), owning_building_guid = 1) - LocalObject(498, ProximityTerminal.Constructor(Vector3(2826.166f, 2733.036f, 93.73952f), medical_terminal), owning_building_guid = 1) - LocalObject(499, ProximityTerminal.Constructor(Vector3(2847.528f, 2755.51f, 73.73952f), medical_terminal), owning_building_guid = 1) - LocalObject(574, ProximityTerminal.Constructor(Vector3(2786.064f, 2728.346f, 97.04452f), pad_landing_frame), owning_building_guid = 1) - LocalObject(575, Terminal.Constructor(Vector3(2786.064f, 2728.346f, 97.04452f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(577, ProximityTerminal.Constructor(Vector3(2831.771f, 2808.081f, 99.20552f), pad_landing_frame), owning_building_guid = 1) - LocalObject(578, Terminal.Constructor(Vector3(2831.771f, 2808.081f, 99.20552f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(580, ProximityTerminal.Constructor(Vector3(2893.913f, 2691.419f, 97.06752f), pad_landing_frame), owning_building_guid = 1) - LocalObject(581, Terminal.Constructor(Vector3(2893.913f, 2691.419f, 97.06752f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(583, ProximityTerminal.Constructor(Vector3(2895.603f, 2758.977f, 97.04452f), pad_landing_frame), owning_building_guid = 1) - LocalObject(584, Terminal.Constructor(Vector3(2895.603f, 2758.977f, 97.04452f), air_rearm_terminal), owning_building_guid = 1) - LocalObject(665, ProximityTerminal.Constructor(Vector3(2787.171f, 2704.963f, 87.93952f), repair_silo), owning_building_guid = 1) - LocalObject(666, Terminal.Constructor(Vector3(2787.171f, 2704.963f, 87.93952f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(669, ProximityTerminal.Constructor(Vector3(2894.19f, 2782.952f, 87.93952f), repair_silo), owning_building_guid = 1) - LocalObject(670, Terminal.Constructor(Vector3(2894.19f, 2782.952f, 87.93952f), ground_rearm_terminal), owning_building_guid = 1) - LocalObject(484, FacilityTurret.Constructor(Vector3(2717.151f, 2783.427f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 698, + SpawnTube.Constructor(Vector3(2826.091f, 2737.02f, 81.23952f), Vector3(0, 0, 324)), + owning_building_guid = 1 + ) + LocalObject( + 699, + SpawnTube.Constructor(Vector3(2830.375f, 2731.124f, 81.23952f), Vector3(0, 0, 324)), + owning_building_guid = 1 + ) + LocalObject( + 700, + SpawnTube.Constructor(Vector3(2834.66f, 2725.226f, 81.23952f), Vector3(0, 0, 324)), + owning_building_guid = 1 + ) + LocalObject( + 498, + ProximityTerminal.Constructor(Vector3(2826.166f, 2733.036f, 93.73952f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 499, + ProximityTerminal.Constructor(Vector3(2847.528f, 2755.51f, 73.73952f), medical_terminal), + owning_building_guid = 1 + ) + LocalObject( + 574, + ProximityTerminal.Constructor(Vector3(2786.064f, 2728.346f, 97.04452f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 575, + Terminal.Constructor(Vector3(2786.064f, 2728.346f, 97.04452f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 577, + ProximityTerminal.Constructor(Vector3(2831.771f, 2808.081f, 99.20552f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 578, + Terminal.Constructor(Vector3(2831.771f, 2808.081f, 99.20552f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 580, + ProximityTerminal.Constructor(Vector3(2893.913f, 2691.419f, 97.06752f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 581, + Terminal.Constructor(Vector3(2893.913f, 2691.419f, 97.06752f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 583, + ProximityTerminal.Constructor(Vector3(2895.603f, 2758.977f, 97.04452f), pad_landing_frame), + owning_building_guid = 1 + ) + LocalObject( + 584, + Terminal.Constructor(Vector3(2895.603f, 2758.977f, 97.04452f), air_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 665, + ProximityTerminal.Constructor(Vector3(2787.171f, 2704.963f, 87.93952f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 666, + Terminal.Constructor(Vector3(2787.171f, 2704.963f, 87.93952f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 669, + ProximityTerminal.Constructor(Vector3(2894.19f, 2782.952f, 87.93952f), repair_silo), + owning_building_guid = 1 + ) + LocalObject( + 670, + Terminal.Constructor(Vector3(2894.19f, 2782.952f, 87.93952f), ground_rearm_terminal), + owning_building_guid = 1 + ) + LocalObject( + 484, + FacilityTurret.Constructor(Vector3(2717.151f, 2783.427f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(484, 5000) - LocalObject(485, FacilityTurret.Constructor(Vector3(2835.717f, 2620.284f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 485, + FacilityTurret.Constructor(Vector3(2835.717f, 2620.284f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(485, 5001) - LocalObject(487, FacilityTurret.Constructor(Vector3(2841.315f, 2873.625f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 487, + FacilityTurret.Constructor(Vector3(2841.315f, 2873.625f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(487, 5002) - LocalObject(489, FacilityTurret.Constructor(Vector3(2880.365f, 2823.652f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 489, + FacilityTurret.Constructor(Vector3(2880.365f, 2823.652f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(489, 5003) - LocalObject(490, FacilityTurret.Constructor(Vector3(2885.234f, 2653.506f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 490, + FacilityTurret.Constructor(Vector3(2885.234f, 2653.506f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(490, 5004) - LocalObject(491, FacilityTurret.Constructor(Vector3(2959.851f, 2710.46f, 97.24752f), manned_turret), owning_building_guid = 1) + LocalObject( + 491, + FacilityTurret.Constructor(Vector3(2959.851f, 2710.46f, 97.24752f), manned_turret), + owning_building_guid = 1 + ) TurretToWeapon(491, 5005) LocalObject(606, Painbox.Constructor(Vector3(2799.626f, 2705.253f, 78.61052f), painbox), owning_building_guid = 1) - LocalObject(609, Painbox.Constructor(Vector3(2834.803f, 2737.571f, 86.18792f), painbox_continuous), owning_building_guid = 1) - LocalObject(612, Painbox.Constructor(Vector3(2809.738f, 2715.229f, 75.19852f), painbox_door_radius), owning_building_guid = 1) - LocalObject(619, Painbox.Constructor(Vector3(2828.895f, 2746.501f, 82.50402f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(620, Painbox.Constructor(Vector3(2842.861f, 2750.064f, 84.41812f), painbox_door_radius_continuous), owning_building_guid = 1) - LocalObject(621, Painbox.Constructor(Vector3(2844.322f, 2725.142f, 82.43952f), painbox_door_radius_continuous), owning_building_guid = 1) + LocalObject( + 609, + Painbox.Constructor(Vector3(2834.803f, 2737.571f, 86.18792f), painbox_continuous), + owning_building_guid = 1 + ) + LocalObject( + 612, + Painbox.Constructor(Vector3(2809.738f, 2715.229f, 75.19852f), painbox_door_radius), + owning_building_guid = 1 + ) + LocalObject( + 619, + Painbox.Constructor(Vector3(2828.895f, 2746.501f, 82.50402f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 620, + Painbox.Constructor(Vector3(2842.861f, 2750.064f, 84.41812f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) + LocalObject( + 621, + Painbox.Constructor(Vector3(2844.322f, 2725.142f, 82.43952f), painbox_door_radius_continuous), + owning_building_guid = 1 + ) LocalObject(78, Generator.Constructor(Vector3(2794.949f, 2705.387f, 72.44552f)), owning_building_guid = 1) - LocalObject(75, Terminal.Constructor(Vector3(2801.549f, 2710.24f, 73.73952f), gen_control), owning_building_guid = 1) + LocalObject( + 75, + Terminal.Constructor(Vector3(2801.549f, 2710.24f, 73.73952f), gen_control), + owning_building_guid = 1 + ) } Building2() def Building2(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 4, MapID: 2 - LocalBuilding("bunker_gauntlet", 4, 2, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1724f, 1710f, 84.34553f), Vector3(0f, 0f, 95f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 4, + 2, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(1724f, 1710f, 84.34553f), + Vector3(0f, 0f, 95f), + bunker_gauntlet + ) + ) + ) LocalObject(114, Door.Constructor(Vector3(1723.722f, 1734.994f, 85.86653f)), owning_building_guid = 4) LocalObject(115, Door.Constructor(Vector3(1728.075f, 1685.363f, 85.86653f)), owning_building_guid = 4) } @@ -160,7 +421,19 @@ object Map99 { // Extinction Building6() def Building6(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 5, MapID: 6 - LocalBuilding("bunker_gauntlet", 5, 6, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1736f, 2188f, 84.34553f), Vector3(0f, 0f, 101f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 5, + 6, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(1736f, 2188f, 84.34553f), + Vector3(0f, 0f, 101f), + bunker_gauntlet + ) + ) + ) LocalObject(116, Door.Constructor(Vector3(1733.111f, 2212.828f, 85.86653f)), owning_building_guid = 5) LocalObject(117, Door.Constructor(Vector3(1742.628f, 2163.924f, 85.86653f)), owning_building_guid = 5) } @@ -168,7 +441,19 @@ object Map99 { // Extinction Building1() def Building1(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 6, MapID: 1 - LocalBuilding("bunker_gauntlet", 6, 1, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1952f, 2450f, 84.34553f), Vector3(0f, 0f, 354f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 6, + 1, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(1952f, 2450f, 84.34553f), + Vector3(0f, 0f, 354f), + bunker_gauntlet + ) + ) + ) LocalObject(122, Door.Constructor(Vector3(1927.039f, 2450.701f, 85.86653f)), owning_building_guid = 6) LocalObject(123, Door.Constructor(Vector3(1976.588f, 2445.504f, 85.86653f)), owning_building_guid = 6) } @@ -176,7 +461,19 @@ object Map99 { // Extinction Building5() def Building5(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 7, MapID: 5 - LocalBuilding("bunker_gauntlet", 7, 5, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2210f, 2376f, 84.31532f), Vector3(0f, 0f, 358f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 7, + 5, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2210f, 2376f, 84.31532f), + Vector3(0f, 0f, 358f), + bunker_gauntlet + ) + ) + ) LocalObject(132, Door.Constructor(Vector3(2185.05f, 2374.958f, 85.83632f)), owning_building_guid = 7) LocalObject(138, Door.Constructor(Vector3(2234.841f, 2373.23f, 85.83632f)), owning_building_guid = 7) } @@ -184,7 +481,19 @@ object Map99 { // Extinction Building3() def Building3(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 8, MapID: 3 - LocalBuilding("bunker_gauntlet", 8, 3, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2224f, 1666f, 84.68795f), Vector3(0f, 0f, 224f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 8, + 3, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2224f, 1666f, 84.68795f), + Vector3(0f, 0f, 224f), + bunker_gauntlet + ) + ) + ) LocalObject(133, Door.Constructor(Vector3(2204.751f, 1650.054f, 86.20895f)), owning_building_guid = 8) LocalObject(139, Door.Constructor(Vector3(2240.582f, 1684.671f, 86.20895f)), owning_building_guid = 8) } @@ -192,7 +501,19 @@ object Map99 { // Extinction Building4() def Building4(): Unit = { // Name: bunker_gauntlet Type: bunker_gauntlet GUID: 9, MapID: 4 - LocalBuilding("bunker_gauntlet", 9, 4, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2326f, 2054f, 85.05051f), Vector3(0f, 0f, 213f), bunker_gauntlet))) + LocalBuilding( + "bunker_gauntlet", + 9, + 4, + FoundationBuilder( + Building.Structure( + StructureType.Bunker, + Vector3(2326f, 2054f, 85.05051f), + Vector3(0f, 0f, 213f), + bunker_gauntlet + ) + ) + ) LocalObject(140, Door.Constructor(Vector3(2304.062f, 2042.02f, 86.57151f)), owning_building_guid = 9) LocalObject(141, Door.Constructor(Vector3(2345.84f, 2069.164f, 86.57151f)), owning_building_guid = 9) } @@ -200,43 +521,94 @@ object Map99 { // Extinction Building19() def Building19(): Unit = { // Name: bunker_lg Type: bunker_lg GUID: 10, MapID: 19 - LocalBuilding("bunker_lg", 10, 19, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2512f, 2678f, 90.57954f), Vector3(0f, 0f, 121f), bunker_lg))) + LocalBuilding( + "bunker_lg", + 10, + 19, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2512f, 2678f, 90.57954f), Vector3(0f, 0f, 121f), bunker_lg) + ) + ) LocalObject(156, Door.Constructor(Vector3(2508.466f, 2678.917f, 92.10055f)), owning_building_guid = 10) } Building23() def Building23(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 11, MapID: 23 - LocalBuilding("bunker_sm", 11, 23, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(1328f, 2002f, 82.80465f), Vector3(0f, 0f, 197f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 11, + 23, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(1328f, 2002f, 82.80465f), Vector3(0f, 0f, 197f), bunker_sm) + ) + ) LocalObject(93, Door.Constructor(Vector3(1326.812f, 2001.694f, 84.32565f)), owning_building_guid = 11) } Building20() def Building20(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 12, MapID: 20 - LocalBuilding("bunker_sm", 12, 20, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2410f, 2706f, 85.88767f), Vector3(0f, 0f, 41f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 12, + 20, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2410f, 2706f, 85.88767f), Vector3(0f, 0f, 41f), bunker_sm) + ) + ) LocalObject(148, Door.Constructor(Vector3(2410.96f, 2706.762f, 87.40868f)), owning_building_guid = 12) } Building21() def Building21(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 13, MapID: 21 - LocalBuilding("bunker_sm", 13, 21, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2490f, 1330f, 90.34791f), Vector3(0f, 0f, 238f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 13, + 21, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2490f, 1330f, 90.34791f), Vector3(0f, 0f, 238f), bunker_sm) + ) + ) LocalObject(155, Door.Constructor(Vector3(2489.304f, 1328.99f, 91.86891f)), owning_building_guid = 13) } Building22() def Building22(): Unit = { // Name: bunker_sm Type: bunker_sm GUID: 14, MapID: 22 - LocalBuilding("bunker_sm", 14, 22, FoundationBuilder(Building.Structure(StructureType.Bunker, Vector3(2578f, 1328f, 90.41841f), Vector3(0f, 0f, 335f), bunker_sm))) + LocalBuilding( + "bunker_sm", + 14, + 22, + FoundationBuilder( + Building.Structure(StructureType.Bunker, Vector3(2578f, 1328f, 90.41841f), Vector3(0f, 0f, 335f), bunker_sm) + ) + ) LocalObject(157, Door.Constructor(Vector3(2579.087f, 1327.432f, 91.93941f)), owning_building_guid = 14) } Building8() def Building8(): Unit = { // Name: Indigo_Base Type: comm_station GUID: 15, MapID: 8 - LocalBuilding("Indigo_Base", 15, 8, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1488f, 1232f, 88.53511f), Vector3(0f, 0f, 70f), comm_station))) - LocalObject(58, CaptureTerminal.Constructor(Vector3(1430.973f, 1299.675f, 71.23511f), capture_terminal), owning_building_guid = 15) + LocalBuilding( + "Indigo_Base", + 15, + 8, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1488f, 1232f, 88.53511f), + Vector3(0f, 0f, 70f), + comm_station + ) + ) + ) + LocalObject( + 58, + CaptureTerminal.Constructor(Vector3(1430.973f, 1299.675f, 71.23511f), capture_terminal), + owning_building_guid = 15 + ) LocalObject(95, Door.Constructor(Vector3(1424.293f, 1255.719f, 90.28611f)), owning_building_guid = 15) LocalObject(96, Door.Constructor(Vector3(1427.528f, 1288.064f, 90.25611f)), owning_building_guid = 15) LocalObject(97, Door.Constructor(Vector3(1430.516f, 1272.814f, 98.24911f)), owning_building_guid = 15) @@ -278,18 +650,78 @@ object Map99 { // Extinction LocalObject(736, Door.Constructor(Vector3(1473.936f, 1276.146f, 80.58911f)), owning_building_guid = 15) LocalObject(737, Door.Constructor(Vector3(1480.785f, 1273.653f, 80.58911f)), owning_building_guid = 15) LocalObject(738, Door.Constructor(Vector3(1487.638f, 1271.158f, 80.58911f)), owning_building_guid = 15) - LocalObject(261, IFFLock.Constructor(Vector3(1495.813f, 1250.922f, 90.18711f), Vector3(0, 0, 20)), owning_building_guid = 15, door_guid = 249) - LocalObject(275, IFFLock.Constructor(Vector3(1425.884f, 1289.49f, 90.18511f), Vector3(0, 0, 20)), owning_building_guid = 15, door_guid = 96) - LocalObject(276, IFFLock.Constructor(Vector3(1438.981f, 1291.543f, 72.57111f), Vector3(0, 0, 200)), owning_building_guid = 15, door_guid = 203) - LocalObject(277, IFFLock.Constructor(Vector3(1439.319f, 1301.664f, 72.57111f), Vector3(0, 0, 20)), owning_building_guid = 15, door_guid = 204) - LocalObject(278, IFFLock.Constructor(Vector3(1460.028f, 1222.57f, 72.57111f), Vector3(0, 0, 110)), owning_building_guid = 15, door_guid = 211) - LocalObject(279, IFFLock.Constructor(Vector3(1471.68f, 1283.091f, 80.07111f), Vector3(0, 0, 290)), owning_building_guid = 15, door_guid = 215) - LocalObject(280, IFFLock.Constructor(Vector3(1473.586f, 1244.895f, 95.19611f), Vector3(0, 0, 200)), owning_building_guid = 15, door_guid = 98) - LocalObject(281, IFFLock.Constructor(Vector3(1479.422f, 1211.664f, 95.19611f), Vector3(0, 0, 290)), owning_building_guid = 15, door_guid = 99) - LocalObject(282, IFFLock.Constructor(Vector3(1490.862f, 1211.853f, 95.19611f), Vector3(0, 0, 110)), owning_building_guid = 15, door_guid = 100) - LocalObject(283, IFFLock.Constructor(Vector3(1495.144f, 1223.884f, 102.6161f), Vector3(0, 0, 200)), owning_building_guid = 15, door_guid = 102) - LocalObject(284, IFFLock.Constructor(Vector3(1496.83f, 1277.283f, 80.07111f), Vector3(0, 0, 110)), owning_building_guid = 15, door_guid = 224) - LocalObject(285, IFFLock.Constructor(Vector3(1497.032f, 1287.306f, 72.57111f), Vector3(0, 0, 200)), owning_building_guid = 15, door_guid = 225) + LocalObject( + 261, + IFFLock.Constructor(Vector3(1495.813f, 1250.922f, 90.18711f), Vector3(0, 0, 20)), + owning_building_guid = 15, + door_guid = 249 + ) + LocalObject( + 275, + IFFLock.Constructor(Vector3(1425.884f, 1289.49f, 90.18511f), Vector3(0, 0, 20)), + owning_building_guid = 15, + door_guid = 96 + ) + LocalObject( + 276, + IFFLock.Constructor(Vector3(1438.981f, 1291.543f, 72.57111f), Vector3(0, 0, 200)), + owning_building_guid = 15, + door_guid = 203 + ) + LocalObject( + 277, + IFFLock.Constructor(Vector3(1439.319f, 1301.664f, 72.57111f), Vector3(0, 0, 20)), + owning_building_guid = 15, + door_guid = 204 + ) + LocalObject( + 278, + IFFLock.Constructor(Vector3(1460.028f, 1222.57f, 72.57111f), Vector3(0, 0, 110)), + owning_building_guid = 15, + door_guid = 211 + ) + LocalObject( + 279, + IFFLock.Constructor(Vector3(1471.68f, 1283.091f, 80.07111f), Vector3(0, 0, 290)), + owning_building_guid = 15, + door_guid = 215 + ) + LocalObject( + 280, + IFFLock.Constructor(Vector3(1473.586f, 1244.895f, 95.19611f), Vector3(0, 0, 200)), + owning_building_guid = 15, + door_guid = 98 + ) + LocalObject( + 281, + IFFLock.Constructor(Vector3(1479.422f, 1211.664f, 95.19611f), Vector3(0, 0, 290)), + owning_building_guid = 15, + door_guid = 99 + ) + LocalObject( + 282, + IFFLock.Constructor(Vector3(1490.862f, 1211.853f, 95.19611f), Vector3(0, 0, 110)), + owning_building_guid = 15, + door_guid = 100 + ) + LocalObject( + 283, + IFFLock.Constructor(Vector3(1495.144f, 1223.884f, 102.6161f), Vector3(0, 0, 200)), + owning_building_guid = 15, + door_guid = 102 + ) + LocalObject( + 284, + IFFLock.Constructor(Vector3(1496.83f, 1277.283f, 80.07111f), Vector3(0, 0, 110)), + owning_building_guid = 15, + door_guid = 224 + ) + LocalObject( + 285, + IFFLock.Constructor(Vector3(1497.032f, 1287.306f, 72.57111f), Vector3(0, 0, 200)), + owning_building_guid = 15, + door_guid = 225 + ) LocalObject(364, Locker.Constructor(Vector3(1479.558f, 1297.001f, 71.23511f)), owning_building_guid = 15) LocalObject(365, Locker.Constructor(Vector3(1480.01f, 1298.246f, 71.23511f)), owning_building_guid = 15) LocalObject(366, Locker.Constructor(Vector3(1480.468f, 1299.501f, 71.23511f)), owning_building_guid = 15) @@ -302,60 +734,233 @@ object Map99 { // Extinction LocalObject(373, Locker.Constructor(Vector3(1495.136f, 1281.257f, 78.99611f)), owning_building_guid = 15) LocalObject(374, Locker.Constructor(Vector3(1495.529f, 1282.335f, 78.99611f)), owning_building_guid = 15) LocalObject(375, Locker.Constructor(Vector3(1495.922f, 1283.414f, 78.99611f)), owning_building_guid = 15) - LocalObject(507, Terminal.Constructor(Vector3(1483.779f, 1287.441f, 80.32511f), order_terminal), owning_building_guid = 15) - LocalObject(508, Terminal.Constructor(Vector3(1487.34f, 1286.145f, 80.32511f), order_terminal), owning_building_guid = 15) - LocalObject(509, Terminal.Constructor(Vector3(1490.846f, 1284.869f, 80.32511f), order_terminal), owning_building_guid = 15) - LocalObject(510, Terminal.Constructor(Vector3(1493.661f, 1232.421f, 102.4901f), order_terminal), owning_building_guid = 15) - LocalObject(511, Terminal.Constructor(Vector3(1495.029f, 1229.521f, 102.4901f), order_terminal), owning_building_guid = 15) - LocalObject(512, Terminal.Constructor(Vector3(1497.79f, 1230.917f, 102.4901f), order_terminal), owning_building_guid = 15) - LocalObject(515, Terminal.Constructor(Vector3(1506.41f, 1215.061f, 95.09511f), order_terminal), owning_building_guid = 15) - LocalObject(719, Terminal.Constructor(Vector3(1450.265f, 1245.106f, 82.79211f), spawn_terminal), owning_building_guid = 15) - LocalObject(720, Terminal.Constructor(Vector3(1474.435f, 1219.85f, 72.79211f), spawn_terminal), owning_building_guid = 15) - LocalObject(721, Terminal.Constructor(Vector3(1476.379f, 1275.572f, 80.86911f), spawn_terminal), owning_building_guid = 15) - LocalObject(722, Terminal.Constructor(Vector3(1483.226f, 1273.077f, 80.86911f), spawn_terminal), owning_building_guid = 15) - LocalObject(723, Terminal.Constructor(Vector3(1490.08f, 1270.587f, 80.86911f), spawn_terminal), owning_building_guid = 15) - LocalObject(724, Terminal.Constructor(Vector3(1510.072f, 1222.381f, 95.35211f), spawn_terminal), owning_building_guid = 15) - LocalObject(777, Terminal.Constructor(Vector3(1454.471f, 1300.028f, 91.42211f), vehicle_terminal_combined), owning_building_guid = 15) - LocalObject(493, VehicleSpawnPad.Constructor(Vector3(1449.956f, 1287.172f, 87.26411f), mb_pad_creation, Vector3(0, 0, 200)), owning_building_guid = 15, terminal_guid = 777) + LocalObject( + 507, + Terminal.Constructor(Vector3(1483.779f, 1287.441f, 80.32511f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 508, + Terminal.Constructor(Vector3(1487.34f, 1286.145f, 80.32511f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 509, + Terminal.Constructor(Vector3(1490.846f, 1284.869f, 80.32511f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 510, + Terminal.Constructor(Vector3(1493.661f, 1232.421f, 102.4901f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 511, + Terminal.Constructor(Vector3(1495.029f, 1229.521f, 102.4901f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 512, + Terminal.Constructor(Vector3(1497.79f, 1230.917f, 102.4901f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 515, + Terminal.Constructor(Vector3(1506.41f, 1215.061f, 95.09511f), order_terminal), + owning_building_guid = 15 + ) + LocalObject( + 719, + Terminal.Constructor(Vector3(1450.265f, 1245.106f, 82.79211f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 720, + Terminal.Constructor(Vector3(1474.435f, 1219.85f, 72.79211f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 721, + Terminal.Constructor(Vector3(1476.379f, 1275.572f, 80.86911f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 722, + Terminal.Constructor(Vector3(1483.226f, 1273.077f, 80.86911f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 723, + Terminal.Constructor(Vector3(1490.08f, 1270.587f, 80.86911f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 724, + Terminal.Constructor(Vector3(1510.072f, 1222.381f, 95.35211f), spawn_terminal), + owning_building_guid = 15 + ) + LocalObject( + 777, + Terminal.Constructor(Vector3(1454.471f, 1300.028f, 91.42211f), vehicle_terminal_combined), + owning_building_guid = 15 + ) + LocalObject( + 493, + VehicleSpawnPad.Constructor(Vector3(1449.956f, 1287.172f, 87.26411f), mb_pad_creation, Vector3(0, 0, 200)), + owning_building_guid = 15, + terminal_guid = 777 + ) LocalObject(674, ResourceSilo.Constructor(Vector3(1533.851f, 1155.963f, 95.75211f)), owning_building_guid = 15) - LocalObject(681, SpawnTube.Constructor(Vector3(1474.775f, 1275.372f, 78.73511f), Vector3(0, 0, 290)), owning_building_guid = 15) - LocalObject(682, SpawnTube.Constructor(Vector3(1481.623f, 1272.879f, 78.73511f), Vector3(0, 0, 290)), owning_building_guid = 15) - LocalObject(683, SpawnTube.Constructor(Vector3(1488.474f, 1270.386f, 78.73511f), Vector3(0, 0, 290)), owning_building_guid = 15) - LocalObject(496, ProximityTerminal.Constructor(Vector3(1482.208f, 1302.688f, 71.23511f), medical_terminal), owning_building_guid = 15) - LocalObject(497, ProximityTerminal.Constructor(Vector3(1515.525f, 1222.901f, 88.73511f), medical_terminal), owning_building_guid = 15) - LocalObject(571, ProximityTerminal.Constructor(Vector3(1429.697f, 1233.165f, 96.97611f), pad_landing_frame), owning_building_guid = 15) - LocalObject(572, Terminal.Constructor(Vector3(1429.697f, 1233.165f, 96.97611f), air_rearm_terminal), owning_building_guid = 15) - LocalObject(657, ProximityTerminal.Constructor(Vector3(1445.325f, 1182.524f, 88.28511f), repair_silo), owning_building_guid = 15) - LocalObject(658, Terminal.Constructor(Vector3(1445.325f, 1182.524f, 88.28511f), ground_rearm_terminal), owning_building_guid = 15) - LocalObject(661, ProximityTerminal.Constructor(Vector3(1531.945f, 1281.602f, 88.28511f), repair_silo), owning_building_guid = 15) - LocalObject(662, Terminal.Constructor(Vector3(1531.945f, 1281.602f, 88.28511f), ground_rearm_terminal), owning_building_guid = 15) - LocalObject(470, FacilityTurret.Constructor(Vector3(1400.765f, 1231.346f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 681, + SpawnTube.Constructor(Vector3(1474.775f, 1275.372f, 78.73511f), Vector3(0, 0, 290)), + owning_building_guid = 15 + ) + LocalObject( + 682, + SpawnTube.Constructor(Vector3(1481.623f, 1272.879f, 78.73511f), Vector3(0, 0, 290)), + owning_building_guid = 15 + ) + LocalObject( + 683, + SpawnTube.Constructor(Vector3(1488.474f, 1270.386f, 78.73511f), Vector3(0, 0, 290)), + owning_building_guid = 15 + ) + LocalObject( + 496, + ProximityTerminal.Constructor(Vector3(1482.208f, 1302.688f, 71.23511f), medical_terminal), + owning_building_guid = 15 + ) + LocalObject( + 497, + ProximityTerminal.Constructor(Vector3(1515.525f, 1222.901f, 88.73511f), medical_terminal), + owning_building_guid = 15 + ) + LocalObject( + 571, + ProximityTerminal.Constructor(Vector3(1429.697f, 1233.165f, 96.97611f), pad_landing_frame), + owning_building_guid = 15 + ) + LocalObject( + 572, + Terminal.Constructor(Vector3(1429.697f, 1233.165f, 96.97611f), air_rearm_terminal), + owning_building_guid = 15 + ) + LocalObject( + 657, + ProximityTerminal.Constructor(Vector3(1445.325f, 1182.524f, 88.28511f), repair_silo), + owning_building_guid = 15 + ) + LocalObject( + 658, + Terminal.Constructor(Vector3(1445.325f, 1182.524f, 88.28511f), ground_rearm_terminal), + owning_building_guid = 15 + ) + LocalObject( + 661, + ProximityTerminal.Constructor(Vector3(1531.945f, 1281.602f, 88.28511f), repair_silo), + owning_building_guid = 15 + ) + LocalObject( + 662, + Terminal.Constructor(Vector3(1531.945f, 1281.602f, 88.28511f), ground_rearm_terminal), + owning_building_guid = 15 + ) + LocalObject( + 470, + FacilityTurret.Constructor(Vector3(1400.765f, 1231.346f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(470, 5006) - LocalObject(471, FacilityTurret.Constructor(Vector3(1426.515f, 1176.081f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 471, + FacilityTurret.Constructor(Vector3(1426.515f, 1176.081f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(471, 5007) - LocalObject(472, FacilityTurret.Constructor(Vector3(1437.329f, 1327.958f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 472, + FacilityTurret.Constructor(Vector3(1437.329f, 1327.958f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(472, 5008) - LocalObject(473, FacilityTurret.Constructor(Vector3(1538.806f, 1136.413f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 473, + FacilityTurret.Constructor(Vector3(1538.806f, 1136.413f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(473, 5009) - LocalObject(474, FacilityTurret.Constructor(Vector3(1549.49f, 1288.379f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 474, + FacilityTurret.Constructor(Vector3(1549.49f, 1288.379f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(474, 5010) - LocalObject(475, FacilityTurret.Constructor(Vector3(1575.247f, 1233.091f, 97.24311f), manned_turret), owning_building_guid = 15) + LocalObject( + 475, + FacilityTurret.Constructor(Vector3(1575.247f, 1233.091f, 97.24311f), manned_turret), + owning_building_guid = 15 + ) TurretToWeapon(475, 5011) - LocalObject(605, Painbox.Constructor(Vector3(1447.294f, 1225.679f, 76.13711f), painbox), owning_building_guid = 15) - LocalObject(608, Painbox.Constructor(Vector3(1479.215f, 1284.379f, 83.17991f), painbox_continuous), owning_building_guid = 15) - LocalObject(611, Painbox.Constructor(Vector3(1461.438f, 1220.636f, 73.99381f), painbox_door_radius), owning_building_guid = 15) - LocalObject(616, Painbox.Constructor(Vector3(1471.921f, 1285.538f, 80.34281f), painbox_door_radius_continuous), owning_building_guid = 15) - LocalObject(617, Painbox.Constructor(Vector3(1481.639f, 1295.883f, 81.56111f), painbox_door_radius_continuous), owning_building_guid = 15) - LocalObject(618, Painbox.Constructor(Vector3(1497.31f, 1275.344f, 80.56111f), painbox_door_radius_continuous), owning_building_guid = 15) + LocalObject( + 605, + Painbox.Constructor(Vector3(1447.294f, 1225.679f, 76.13711f), painbox), + owning_building_guid = 15 + ) + LocalObject( + 608, + Painbox.Constructor(Vector3(1479.215f, 1284.379f, 83.17991f), painbox_continuous), + owning_building_guid = 15 + ) + LocalObject( + 611, + Painbox.Constructor(Vector3(1461.438f, 1220.636f, 73.99381f), painbox_door_radius), + owning_building_guid = 15 + ) + LocalObject( + 616, + Painbox.Constructor(Vector3(1471.921f, 1285.538f, 80.34281f), painbox_door_radius_continuous), + owning_building_guid = 15 + ) + LocalObject( + 617, + Painbox.Constructor(Vector3(1481.639f, 1295.883f, 81.56111f), painbox_door_radius_continuous), + owning_building_guid = 15 + ) + LocalObject( + 618, + Painbox.Constructor(Vector3(1497.31f, 1275.344f, 80.56111f), painbox_door_radius_continuous), + owning_building_guid = 15 + ) LocalObject(77, Generator.Constructor(Vector3(1443.981f, 1226.711f, 69.94111f)), owning_building_guid = 15) - LocalObject(74, Terminal.Constructor(Vector3(1451.696f, 1223.954f, 71.23511f), gen_control), owning_building_guid = 15) + LocalObject( + 74, + Terminal.Constructor(Vector3(1451.696f, 1223.954f, 71.23511f), gen_control), + owning_building_guid = 15 + ) } Building18() def Building18(): Unit = { // Name: Red_Base Type: cryo_facility GUID: 18, MapID: 18 - LocalBuilding("Red_Base", 18, 18, FoundationBuilder(Building.Structure(StructureType.Facility, Vector3(1254f, 2502f, 87.99127f), Vector3(0f, 0f, 36f), cryo_facility))) - LocalObject(57, CaptureTerminal.Constructor(Vector3(1196.44f, 2533.437f, 77.99127f), capture_terminal), owning_building_guid = 18) + LocalBuilding( + "Red_Base", + 18, + 18, + FoundationBuilder( + Building.Structure( + StructureType.Facility, + Vector3(1254f, 2502f, 87.99127f), + Vector3(0f, 0f, 36f), + cryo_facility + ) + ) + ) + LocalObject( + 57, + CaptureTerminal.Constructor(Vector3(1196.44f, 2533.437f, 77.99127f), capture_terminal), + owning_building_guid = 18 + ) LocalObject(83, Door.Constructor(Vector3(1179.904f, 2531.975f, 89.54227f)), owning_building_guid = 18) LocalObject(84, Door.Constructor(Vector3(1192.948f, 2485.693f, 97.50627f)), owning_building_guid = 18) LocalObject(85, Door.Constructor(Vector3(1194.622f, 2542.669f, 97.50627f)), owning_building_guid = 18) @@ -396,15 +1001,60 @@ object Map99 { // Extinction LocalObject(733, Door.Constructor(Vector3(1245.84f, 2521.182f, 79.84528f)), owning_building_guid = 18) LocalObject(734, Door.Constructor(Vector3(1250.124f, 2515.285f, 79.84528f)), owning_building_guid = 18) LocalObject(735, Door.Constructor(Vector3(1254.411f, 2509.385f, 79.84528f)), owning_building_guid = 18) - LocalObject(260, IFFLock.Constructor(Vector3(1238.27f, 2524.961f, 89.47327f), Vector3(0, 0, 324)), owning_building_guid = 18, door_guid = 248) - LocalObject(267, IFFLock.Constructor(Vector3(1188.306f, 2536.38f, 79.32727f), Vector3(0, 0, 234)), owning_building_guid = 18, door_guid = 179) - LocalObject(268, IFFLock.Constructor(Vector3(1194.348f, 2544.656f, 79.32727f), Vector3(0, 0, 54)), owning_building_guid = 18, door_guid = 180) - LocalObject(269, IFFLock.Constructor(Vector3(1228.758f, 2510.907f, 99.44327f), Vector3(0, 0, 54)), owning_building_guid = 18, door_guid = 87) - LocalObject(270, IFFLock.Constructor(Vector3(1247.854f, 2528.201f, 79.32727f), Vector3(0, 0, 324)), owning_building_guid = 18, door_guid = 191) - LocalObject(271, IFFLock.Constructor(Vector3(1253.254f, 2506.351f, 99.44327f), Vector3(0, 0, 324)), owning_building_guid = 18, door_guid = 88) - LocalObject(272, IFFLock.Constructor(Vector3(1265.456f, 2509.322f, 79.32727f), Vector3(0, 0, 144)), owning_building_guid = 18, door_guid = 197) - LocalObject(273, IFFLock.Constructor(Vector3(1271.334f, 2517.595f, 71.82727f), Vector3(0, 0, 234)), owning_building_guid = 18, door_guid = 200) - LocalObject(274, IFFLock.Constructor(Vector3(1333.423f, 2448.51f, 89.44328f), Vector3(0, 0, 54)), owning_building_guid = 18, door_guid = 94) + LocalObject( + 260, + IFFLock.Constructor(Vector3(1238.27f, 2524.961f, 89.47327f), Vector3(0, 0, 324)), + owning_building_guid = 18, + door_guid = 248 + ) + LocalObject( + 267, + IFFLock.Constructor(Vector3(1188.306f, 2536.38f, 79.32727f), Vector3(0, 0, 234)), + owning_building_guid = 18, + door_guid = 179 + ) + LocalObject( + 268, + IFFLock.Constructor(Vector3(1194.348f, 2544.656f, 79.32727f), Vector3(0, 0, 54)), + owning_building_guid = 18, + door_guid = 180 + ) + LocalObject( + 269, + IFFLock.Constructor(Vector3(1228.758f, 2510.907f, 99.44327f), Vector3(0, 0, 54)), + owning_building_guid = 18, + door_guid = 87 + ) + LocalObject( + 270, + IFFLock.Constructor(Vector3(1247.854f, 2528.201f, 79.32727f), Vector3(0, 0, 324)), + owning_building_guid = 18, + door_guid = 191 + ) + LocalObject( + 271, + IFFLock.Constructor(Vector3(1253.254f, 2506.351f, 99.44327f), Vector3(0, 0, 324)), + owning_building_guid = 18, + door_guid = 88 + ) + LocalObject( + 272, + IFFLock.Constructor(Vector3(1265.456f, 2509.322f, 79.32727f), Vector3(0, 0, 144)), + owning_building_guid = 18, + door_guid = 197 + ) + LocalObject( + 273, + IFFLock.Constructor(Vector3(1271.334f, 2517.595f, 71.82727f), Vector3(0, 0, 234)), + owning_building_guid = 18, + door_guid = 200 + ) + LocalObject( + 274, + IFFLock.Constructor(Vector3(1333.423f, 2448.51f, 89.44328f), Vector3(0, 0, 54)), + owning_building_guid = 18, + door_guid = 94 + ) LocalObject(343, Locker.Constructor(Vector3(1238.128f, 2557.867f, 77.98627f)), owning_building_guid = 18) LocalObject(344, Locker.Constructor(Vector3(1238.864f, 2556.854f, 77.98627f)), owning_building_guid = 18) LocalObject(345, Locker.Constructor(Vector3(1239.605f, 2555.833f, 77.98627f)), owning_building_guid = 18) @@ -434,86 +1084,334 @@ object Map99 { // Extinction LocalObject(457, Locker.Constructor(Vector3(1273.864f, 2505.725f, 87.76228f)), owning_building_guid = 18) LocalObject(458, Locker.Constructor(Vector3(1275.344f, 2503.689f, 87.99127f)), owning_building_guid = 18) LocalObject(459, Locker.Constructor(Vector3(1275.951f, 2502.853f, 87.99127f)), owning_building_guid = 18) - LocalObject(60, Terminal.Constructor(Vector3(1223.175f, 2548.299f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(61, Terminal.Constructor(Vector3(1223.495f, 2550.322f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(62, Terminal.Constructor(Vector3(1227.481f, 2542.373f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(63, Terminal.Constructor(Vector3(1229.503f, 2542.052f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(64, Terminal.Constructor(Vector3(1233.77f, 2557.786f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(65, Terminal.Constructor(Vector3(1235.793f, 2557.466f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(66, Terminal.Constructor(Vector3(1239.778f, 2549.517f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(67, Terminal.Constructor(Vector3(1240.098f, 2551.54f, 77.98127f), cert_terminal), owning_building_guid = 18) - LocalObject(503, Terminal.Constructor(Vector3(1240.288f, 2503.812f, 89.28627f), order_terminal), owning_building_guid = 18) - LocalObject(504, Terminal.Constructor(Vector3(1260.317f, 2525.042f, 79.58127f), order_terminal), owning_building_guid = 18) - LocalObject(505, Terminal.Constructor(Vector3(1262.544f, 2521.976f, 79.58127f), order_terminal), owning_building_guid = 18) - LocalObject(506, Terminal.Constructor(Vector3(1264.737f, 2518.958f, 79.58127f), order_terminal), owning_building_guid = 18) - LocalObject(712, Terminal.Constructor(Vector3(1215.902f, 2553.429f, 79.60427f), spawn_terminal), owning_building_guid = 18) - LocalObject(713, Terminal.Constructor(Vector3(1221.988f, 2478.009f, 79.60427f), spawn_terminal), owning_building_guid = 18) - LocalObject(714, Terminal.Constructor(Vector3(1247.545f, 2519.34f, 80.12527f), spawn_terminal), owning_building_guid = 18) - LocalObject(715, Terminal.Constructor(Vector3(1251.826f, 2513.442f, 80.12527f), spawn_terminal), owning_building_guid = 18) - LocalObject(716, Terminal.Constructor(Vector3(1256.115f, 2507.545f, 80.12527f), spawn_terminal), owning_building_guid = 18) - LocalObject(717, Terminal.Constructor(Vector3(1263.559f, 2492.084f, 89.57027f), spawn_terminal), owning_building_guid = 18) - LocalObject(718, Terminal.Constructor(Vector3(1274.246f, 2446.76f, 82.10427f), spawn_terminal), owning_building_guid = 18) - LocalObject(776, Terminal.Constructor(Vector3(1321.582f, 2472.999f, 90.29627f), vehicle_terminal_combined), owning_building_guid = 18) - LocalObject(492, VehicleSpawnPad.Constructor(Vector3(1310.6f, 2464.909f, 86.13828f), mb_pad_creation, Vector3(0, 0, 234)), owning_building_guid = 18, terminal_guid = 776) + LocalObject( + 60, + Terminal.Constructor(Vector3(1223.175f, 2548.299f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 61, + Terminal.Constructor(Vector3(1223.495f, 2550.322f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 62, + Terminal.Constructor(Vector3(1227.481f, 2542.373f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 63, + Terminal.Constructor(Vector3(1229.503f, 2542.052f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 64, + Terminal.Constructor(Vector3(1233.77f, 2557.786f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 65, + Terminal.Constructor(Vector3(1235.793f, 2557.466f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 66, + Terminal.Constructor(Vector3(1239.778f, 2549.517f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 67, + Terminal.Constructor(Vector3(1240.098f, 2551.54f, 77.98127f), cert_terminal), + owning_building_guid = 18 + ) + LocalObject( + 503, + Terminal.Constructor(Vector3(1240.288f, 2503.812f, 89.28627f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 504, + Terminal.Constructor(Vector3(1260.317f, 2525.042f, 79.58127f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 505, + Terminal.Constructor(Vector3(1262.544f, 2521.976f, 79.58127f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 506, + Terminal.Constructor(Vector3(1264.737f, 2518.958f, 79.58127f), order_terminal), + owning_building_guid = 18 + ) + LocalObject( + 712, + Terminal.Constructor(Vector3(1215.902f, 2553.429f, 79.60427f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 713, + Terminal.Constructor(Vector3(1221.988f, 2478.009f, 79.60427f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 714, + Terminal.Constructor(Vector3(1247.545f, 2519.34f, 80.12527f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 715, + Terminal.Constructor(Vector3(1251.826f, 2513.442f, 80.12527f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 716, + Terminal.Constructor(Vector3(1256.115f, 2507.545f, 80.12527f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 717, + Terminal.Constructor(Vector3(1263.559f, 2492.084f, 89.57027f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 718, + Terminal.Constructor(Vector3(1274.246f, 2446.76f, 82.10427f), spawn_terminal), + owning_building_guid = 18 + ) + LocalObject( + 776, + Terminal.Constructor(Vector3(1321.582f, 2472.999f, 90.29627f), vehicle_terminal_combined), + owning_building_guid = 18 + ) + LocalObject( + 492, + VehicleSpawnPad.Constructor(Vector3(1310.6f, 2464.909f, 86.13828f), mb_pad_creation, Vector3(0, 0, 234)), + owning_building_guid = 18, + terminal_guid = 776 + ) LocalObject(673, ResourceSilo.Constructor(Vector3(1175.353f, 2507.716f, 95.00827f)), owning_building_guid = 18) - LocalObject(678, SpawnTube.Constructor(Vector3(1246.103f, 2520.071f, 77.99127f), Vector3(0, 0, 324)), owning_building_guid = 18) - LocalObject(679, SpawnTube.Constructor(Vector3(1250.386f, 2514.175f, 77.99127f), Vector3(0, 0, 324)), owning_building_guid = 18) - LocalObject(680, SpawnTube.Constructor(Vector3(1254.672f, 2508.277f, 77.99127f), Vector3(0, 0, 324)), owning_building_guid = 18) - LocalObject(51, ProximityTerminal.Constructor(Vector3(1259.782f, 2497.415f, 87.80127f), adv_med_terminal), owning_building_guid = 18) - LocalObject(495, ProximityTerminal.Constructor(Vector3(1274.04f, 2521.445f, 77.99127f), medical_terminal), owning_building_guid = 18) - LocalObject(559, ProximityTerminal.Constructor(Vector3(1210.411f, 2536.647f, 96.33327f), pad_landing_frame), owning_building_guid = 18) - LocalObject(560, Terminal.Constructor(Vector3(1210.411f, 2536.647f, 96.33327f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(562, ProximityTerminal.Constructor(Vector3(1228.471f, 2539.388f, 98.32327f), pad_landing_frame), owning_building_guid = 18) - LocalObject(563, Terminal.Constructor(Vector3(1228.471f, 2539.388f, 98.32327f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(565, ProximityTerminal.Constructor(Vector3(1275.75f, 2441.241f, 98.28427f), pad_landing_frame), owning_building_guid = 18) - LocalObject(566, Terminal.Constructor(Vector3(1275.75f, 2441.241f, 98.28427f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(568, ProximityTerminal.Constructor(Vector3(1293.23f, 2444.938f, 96.34327f), pad_landing_frame), owning_building_guid = 18) - LocalObject(569, Terminal.Constructor(Vector3(1293.23f, 2444.938f, 96.34327f), air_rearm_terminal), owning_building_guid = 18) - LocalObject(649, ProximityTerminal.Constructor(Vector3(1275.171f, 2412.506f, 87.74127f), repair_silo), owning_building_guid = 18) - LocalObject(650, Terminal.Constructor(Vector3(1275.171f, 2412.506f, 87.74127f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(653, ProximityTerminal.Constructor(Vector3(1287.175f, 2545.708f, 87.74127f), repair_silo), owning_building_guid = 18) - LocalObject(654, Terminal.Constructor(Vector3(1287.175f, 2545.708f, 87.74127f), ground_rearm_terminal), owning_building_guid = 18) - LocalObject(463, FacilityTurret.Constructor(Vector3(1148.768f, 2525.013f, 96.39327f), manned_turret), owning_building_guid = 18) + LocalObject( + 678, + SpawnTube.Constructor(Vector3(1246.103f, 2520.071f, 77.99127f), Vector3(0, 0, 324)), + owning_building_guid = 18 + ) + LocalObject( + 679, + SpawnTube.Constructor(Vector3(1250.386f, 2514.175f, 77.99127f), Vector3(0, 0, 324)), + owning_building_guid = 18 + ) + LocalObject( + 680, + SpawnTube.Constructor(Vector3(1254.672f, 2508.277f, 77.99127f), Vector3(0, 0, 324)), + owning_building_guid = 18 + ) + LocalObject( + 51, + ProximityTerminal.Constructor(Vector3(1259.782f, 2497.415f, 87.80127f), adv_med_terminal), + owning_building_guid = 18 + ) + LocalObject( + 495, + ProximityTerminal.Constructor(Vector3(1274.04f, 2521.445f, 77.99127f), medical_terminal), + owning_building_guid = 18 + ) + LocalObject( + 559, + ProximityTerminal.Constructor(Vector3(1210.411f, 2536.647f, 96.33327f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 560, + Terminal.Constructor(Vector3(1210.411f, 2536.647f, 96.33327f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 562, + ProximityTerminal.Constructor(Vector3(1228.471f, 2539.388f, 98.32327f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 563, + Terminal.Constructor(Vector3(1228.471f, 2539.388f, 98.32327f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 565, + ProximityTerminal.Constructor(Vector3(1275.75f, 2441.241f, 98.28427f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 566, + Terminal.Constructor(Vector3(1275.75f, 2441.241f, 98.28427f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 568, + ProximityTerminal.Constructor(Vector3(1293.23f, 2444.938f, 96.34327f), pad_landing_frame), + owning_building_guid = 18 + ) + LocalObject( + 569, + Terminal.Constructor(Vector3(1293.23f, 2444.938f, 96.34327f), air_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 649, + ProximityTerminal.Constructor(Vector3(1275.171f, 2412.506f, 87.74127f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 650, + Terminal.Constructor(Vector3(1275.171f, 2412.506f, 87.74127f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 653, + ProximityTerminal.Constructor(Vector3(1287.175f, 2545.708f, 87.74127f), repair_silo), + owning_building_guid = 18 + ) + LocalObject( + 654, + Terminal.Constructor(Vector3(1287.175f, 2545.708f, 87.74127f), ground_rearm_terminal), + owning_building_guid = 18 + ) + LocalObject( + 463, + FacilityTurret.Constructor(Vector3(1148.768f, 2525.013f, 96.39327f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(463, 5012) - LocalObject(466, FacilityTurret.Constructor(Vector3(1223.561f, 2580.754f, 96.39327f), manned_turret), owning_building_guid = 18) + LocalObject( + 466, + FacilityTurret.Constructor(Vector3(1223.561f, 2580.754f, 96.39327f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(466, 5013) - LocalObject(467, FacilityTurret.Constructor(Vector3(1252.867f, 2381.747f, 96.39327f), manned_turret), owning_building_guid = 18) + LocalObject( + 467, + FacilityTurret.Constructor(Vector3(1252.867f, 2381.747f, 96.39327f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(467, 5014) - LocalObject(468, FacilityTurret.Constructor(Vector3(1283.807f, 2571.24f, 96.39327f), manned_turret), owning_building_guid = 18) + LocalObject( + 468, + FacilityTurret.Constructor(Vector3(1283.807f, 2571.24f, 96.39327f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(468, 5015) - LocalObject(469, FacilityTurret.Constructor(Vector3(1362.272f, 2461.224f, 96.39327f), manned_turret), owning_building_guid = 18) + LocalObject( + 469, + FacilityTurret.Constructor(Vector3(1362.272f, 2461.224f, 96.39327f), manned_turret), + owning_building_guid = 18 + ) TurretToWeapon(469, 5016) - LocalObject(255, ImplantTerminalMech.Constructor(Vector3(1227.029f, 2556.227f, 77.46827f)), owning_building_guid = 18) - LocalObject(253, Terminal.Constructor(Vector3(1227.04f, 2556.213f, 77.46827f), implant_terminal_interface), owning_building_guid = 18) + LocalObject( + 255, + ImplantTerminalMech.Constructor(Vector3(1227.029f, 2556.227f, 77.46827f)), + owning_building_guid = 18 + ) + LocalObject( + 253, + Terminal.Constructor(Vector3(1227.04f, 2556.213f, 77.46827f), implant_terminal_interface), + owning_building_guid = 18 + ) TerminalToInterface(255, 253) - LocalObject(256, ImplantTerminalMech.Constructor(Vector3(1236.065f, 2543.811f, 77.46827f)), owning_building_guid = 18) - LocalObject(254, Terminal.Constructor(Vector3(1236.054f, 2543.826f, 77.46827f), implant_terminal_interface), owning_building_guid = 18) + LocalObject( + 256, + ImplantTerminalMech.Constructor(Vector3(1236.065f, 2543.811f, 77.46827f)), + owning_building_guid = 18 + ) + LocalObject( + 254, + Terminal.Constructor(Vector3(1236.054f, 2543.826f, 77.46827f), implant_terminal_interface), + owning_building_guid = 18 + ) TerminalToInterface(256, 254) - LocalObject(604, Painbox.Constructor(Vector3(1270.085f, 2489.377f, 102.0201f), painbox), owning_building_guid = 18) - LocalObject(607, Painbox.Constructor(Vector3(1261.402f, 2516.91f, 82.06117f), painbox_continuous), owning_building_guid = 18) - LocalObject(610, Painbox.Constructor(Vector3(1260.441f, 2500.25f, 102.2252f), painbox_door_radius), owning_building_guid = 18) - LocalObject(613, Painbox.Constructor(Vector3(1248.942f, 2530.254f, 79.70547f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(614, Painbox.Constructor(Vector3(1263.824f, 2506.41f, 80.34717f), painbox_door_radius_continuous), owning_building_guid = 18) - LocalObject(615, Painbox.Constructor(Vector3(1265.359f, 2533.8f, 81.53217f), painbox_door_radius_continuous), owning_building_guid = 18) + LocalObject( + 604, + Painbox.Constructor(Vector3(1270.085f, 2489.377f, 102.0201f), painbox), + owning_building_guid = 18 + ) + LocalObject( + 607, + Painbox.Constructor(Vector3(1261.402f, 2516.91f, 82.06117f), painbox_continuous), + owning_building_guid = 18 + ) + LocalObject( + 610, + Painbox.Constructor(Vector3(1260.441f, 2500.25f, 102.2252f), painbox_door_radius), + owning_building_guid = 18 + ) + LocalObject( + 613, + Painbox.Constructor(Vector3(1248.942f, 2530.254f, 79.70547f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 614, + Painbox.Constructor(Vector3(1263.824f, 2506.41f, 80.34717f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) + LocalObject( + 615, + Painbox.Constructor(Vector3(1265.359f, 2533.8f, 81.53217f), painbox_door_radius_continuous), + owning_building_guid = 18 + ) LocalObject(76, Generator.Constructor(Vector3(1271.102f, 2485.31f, 96.69727f)), owning_building_guid = 18) - LocalObject(73, Terminal.Constructor(Vector3(1266.248f, 2491.909f, 97.99127f), gen_control), owning_building_guid = 18) + LocalObject( + 73, + Terminal.Constructor(Vector3(1266.248f, 2491.909f, 97.99127f), gen_control), + owning_building_guid = 18 + ) } Building9() def Building9(): Unit = { // Name: Red_Gun_Tower Type: tower_a GUID: 21, MapID: 9 - LocalBuilding("Red_Gun_Tower", 21, 9, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1876f, 2092f, 89.83428f), Vector3(0f, 0f, 59f), tower_a))) - LocalObject(705, CaptureTerminal.Constructor(Vector3(1884.631f, 2106.165f, 99.83328f), secondary_capture), owning_building_guid = 21) + LocalBuilding( + "Red_Gun_Tower", + 21, + 9, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1876f, 2092f, 89.83428f), Vector3(0f, 0f, 59f), tower_a) + ) + ) + LocalObject( + 705, + CaptureTerminal.Constructor(Vector3(1884.631f, 2106.165f, 99.83328f), secondary_capture), + owning_building_guid = 21 + ) LocalObject(118, Door.Constructor(Vector3(1875.323f, 2106.406f, 91.35529f)), owning_building_guid = 21) LocalObject(119, Door.Constructor(Vector3(1875.323f, 2106.406f, 111.3543f)), owning_building_guid = 21) LocalObject(120, Door.Constructor(Vector3(1889.038f, 2098.166f, 91.35529f)), owning_building_guid = 21) LocalObject(121, Door.Constructor(Vector3(1889.038f, 2098.166f, 111.3543f)), owning_building_guid = 21) LocalObject(741, Door.Constructor(Vector3(1877.28f, 2104.234f, 81.17028f)), owning_building_guid = 21) LocalObject(742, Door.Constructor(Vector3(1891.346f, 2095.782f, 81.17028f)), owning_building_guid = 21) - LocalObject(292, IFFLock.Constructor(Vector3(1873.576f, 2105.073f, 91.29528f), Vector3(0, 0, 301)), owning_building_guid = 21, door_guid = 118) - LocalObject(293, IFFLock.Constructor(Vector3(1873.576f, 2105.073f, 111.2953f), Vector3(0, 0, 301)), owning_building_guid = 21, door_guid = 119) - LocalObject(294, IFFLock.Constructor(Vector3(1890.787f, 2099.503f, 91.29528f), Vector3(0, 0, 121)), owning_building_guid = 21, door_guid = 120) - LocalObject(295, IFFLock.Constructor(Vector3(1890.787f, 2099.503f, 111.2953f), Vector3(0, 0, 121)), owning_building_guid = 21, door_guid = 121) + LocalObject( + 292, + IFFLock.Constructor(Vector3(1873.576f, 2105.073f, 91.29528f), Vector3(0, 0, 301)), + owning_building_guid = 21, + door_guid = 118 + ) + LocalObject( + 293, + IFFLock.Constructor(Vector3(1873.576f, 2105.073f, 111.2953f), Vector3(0, 0, 301)), + owning_building_guid = 21, + door_guid = 119 + ) + LocalObject( + 294, + IFFLock.Constructor(Vector3(1890.787f, 2099.503f, 91.29528f), Vector3(0, 0, 121)), + owning_building_guid = 21, + door_guid = 120 + ) + LocalObject( + 295, + IFFLock.Constructor(Vector3(1890.787f, 2099.503f, 111.2953f), Vector3(0, 0, 121)), + owning_building_guid = 21, + door_guid = 121 + ) LocalObject(384, Locker.Constructor(Vector3(1878.254f, 2109.021f, 79.82829f)), owning_building_guid = 21) LocalObject(385, Locker.Constructor(Vector3(1878.942f, 2110.167f, 79.82829f)), owning_building_guid = 21) LocalObject(386, Locker.Constructor(Vector3(1880.309f, 2112.442f, 79.82829f)), owning_building_guid = 21) @@ -522,35 +1420,106 @@ object Map99 { // Extinction LocalObject(389, Locker.Constructor(Vector3(1897.672f, 2098.873f, 79.82829f)), owning_building_guid = 21) LocalObject(390, Locker.Constructor(Vector3(1899.057f, 2101.177f, 79.82829f)), owning_building_guid = 21) LocalObject(391, Locker.Constructor(Vector3(1899.779f, 2102.378f, 79.82829f)), owning_building_guid = 21) - LocalObject(517, Terminal.Constructor(Vector3(1885.987f, 2111.018f, 81.16628f), order_terminal), owning_building_guid = 21) - LocalObject(518, Terminal.Constructor(Vector3(1890.6f, 2108.246f, 81.16628f), order_terminal), owning_building_guid = 21) - LocalObject(519, Terminal.Constructor(Vector3(1895.506f, 2105.298f, 81.16628f), order_terminal), owning_building_guid = 21) - LocalObject(686, SpawnTube.Constructor(Vector3(1877.955f, 2103.315f, 79.31628f), respawn_tube_tower, Vector3(0, 0, 301)), owning_building_guid = 21) - LocalObject(687, SpawnTube.Constructor(Vector3(1892.021f, 2094.864f, 79.31628f), respawn_tube_tower, Vector3(0, 0, 301)), owning_building_guid = 21) - LocalObject(476, FacilityTurret.Constructor(Vector3(1876.772f, 2117.957f, 108.7763f), manned_turret), owning_building_guid = 21) + LocalObject( + 517, + Terminal.Constructor(Vector3(1885.987f, 2111.018f, 81.16628f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 518, + Terminal.Constructor(Vector3(1890.6f, 2108.246f, 81.16628f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 519, + Terminal.Constructor(Vector3(1895.506f, 2105.298f, 81.16628f), order_terminal), + owning_building_guid = 21 + ) + LocalObject( + 686, + SpawnTube.Constructor(Vector3(1877.955f, 2103.315f, 79.31628f), respawn_tube_tower, Vector3(0, 0, 301)), + owning_building_guid = 21 + ) + LocalObject( + 687, + SpawnTube.Constructor(Vector3(1892.021f, 2094.864f, 79.31628f), respawn_tube_tower, Vector3(0, 0, 301)), + owning_building_guid = 21 + ) + LocalObject( + 476, + FacilityTurret.Constructor(Vector3(1876.772f, 2117.957f, 108.7763f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(476, 5017) - LocalObject(477, FacilityTurret.Constructor(Vector3(1880.36f, 2074.587f, 108.7763f), manned_turret), owning_building_guid = 21) + LocalObject( + 477, + FacilityTurret.Constructor(Vector3(1880.36f, 2074.587f, 108.7763f), manned_turret), + owning_building_guid = 21 + ) TurretToWeapon(477, 5018) - LocalObject(628, Painbox.Constructor(Vector3(1882.91f, 2107.551f, 79.93428f), painbox_radius_continuous), owning_building_guid = 21) - LocalObject(629, Painbox.Constructor(Vector3(1884.008f, 2093.295f, 81.33338f), painbox_radius_continuous), owning_building_guid = 21) - LocalObject(630, Painbox.Constructor(Vector3(1893.124f, 2101.515f, 79.93428f), painbox_radius_continuous), owning_building_guid = 21) + LocalObject( + 628, + Painbox.Constructor(Vector3(1882.91f, 2107.551f, 79.93428f), painbox_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 629, + Painbox.Constructor(Vector3(1884.008f, 2093.295f, 81.33338f), painbox_radius_continuous), + owning_building_guid = 21 + ) + LocalObject( + 630, + Painbox.Constructor(Vector3(1893.124f, 2101.515f, 79.93428f), painbox_radius_continuous), + owning_building_guid = 21 + ) } Building12() def Building12(): Unit = { // Name: Indigo_Gun_Tower Type: tower_a GUID: 22, MapID: 12 - LocalBuilding("Indigo_Gun_Tower", 22, 12, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2062f, 1728f, 90.51912f), Vector3(0f, 0f, 360f), tower_a))) - LocalObject(707, CaptureTerminal.Constructor(Vector3(2078.587f, 1727.897f, 100.5181f), secondary_capture), owning_building_guid = 22) + LocalBuilding( + "Indigo_Gun_Tower", + 22, + 12, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2062f, 1728f, 90.51912f), Vector3(0f, 0f, 360f), tower_a) + ) + ) + LocalObject( + 707, + CaptureTerminal.Constructor(Vector3(2078.587f, 1727.897f, 100.5181f), secondary_capture), + owning_building_guid = 22 + ) LocalObject(128, Door.Constructor(Vector3(2074f, 1720f, 92.04012f)), owning_building_guid = 22) LocalObject(129, Door.Constructor(Vector3(2074f, 1720f, 112.0391f)), owning_building_guid = 22) LocalObject(130, Door.Constructor(Vector3(2074f, 1736f, 92.04012f)), owning_building_guid = 22) LocalObject(131, Door.Constructor(Vector3(2074f, 1736f, 112.0391f)), owning_building_guid = 22) LocalObject(745, Door.Constructor(Vector3(2073.146f, 1716.794f, 81.85512f)), owning_building_guid = 22) LocalObject(746, Door.Constructor(Vector3(2073.146f, 1733.204f, 81.85512f)), owning_building_guid = 22) - LocalObject(300, IFFLock.Constructor(Vector3(2071.957f, 1736.811f, 91.98012f), Vector3(0, 0, 0)), owning_building_guid = 22, door_guid = 130) - LocalObject(301, IFFLock.Constructor(Vector3(2071.957f, 1736.811f, 111.9801f), Vector3(0, 0, 0)), owning_building_guid = 22, door_guid = 131) - LocalObject(302, IFFLock.Constructor(Vector3(2076.047f, 1719.189f, 91.98012f), Vector3(0, 0, 180)), owning_building_guid = 22, door_guid = 128) - LocalObject(303, IFFLock.Constructor(Vector3(2076.047f, 1719.189f, 111.9801f), Vector3(0, 0, 180)), owning_building_guid = 22, door_guid = 129) + LocalObject( + 300, + IFFLock.Constructor(Vector3(2071.957f, 1736.811f, 91.98012f), Vector3(0, 0, 0)), + owning_building_guid = 22, + door_guid = 130 + ) + LocalObject( + 301, + IFFLock.Constructor(Vector3(2071.957f, 1736.811f, 111.9801f), Vector3(0, 0, 0)), + owning_building_guid = 22, + door_guid = 131 + ) + LocalObject( + 302, + IFFLock.Constructor(Vector3(2076.047f, 1719.189f, 91.98012f), Vector3(0, 0, 180)), + owning_building_guid = 22, + door_guid = 128 + ) + LocalObject( + 303, + IFFLock.Constructor(Vector3(2076.047f, 1719.189f, 111.9801f), Vector3(0, 0, 180)), + owning_building_guid = 22, + door_guid = 129 + ) LocalObject(400, Locker.Constructor(Vector3(2077.716f, 1712.963f, 80.51312f)), owning_building_guid = 22) LocalObject(401, Locker.Constructor(Vector3(2077.751f, 1734.835f, 80.51312f)), owning_building_guid = 22) LocalObject(402, Locker.Constructor(Vector3(2079.053f, 1712.963f, 80.51312f)), owning_building_guid = 22) @@ -559,35 +1528,106 @@ object Map99 { // Extinction LocalObject(405, Locker.Constructor(Vector3(2081.741f, 1734.835f, 80.51312f)), owning_building_guid = 22) LocalObject(406, Locker.Constructor(Vector3(2083.143f, 1712.963f, 80.51312f)), owning_building_guid = 22) LocalObject(407, Locker.Constructor(Vector3(2083.143f, 1734.835f, 80.51312f)), owning_building_guid = 22) - LocalObject(523, Terminal.Constructor(Vector3(2083.445f, 1718.129f, 81.85112f), order_terminal), owning_building_guid = 22) - LocalObject(524, Terminal.Constructor(Vector3(2083.445f, 1723.853f, 81.85112f), order_terminal), owning_building_guid = 22) - LocalObject(525, Terminal.Constructor(Vector3(2083.445f, 1729.234f, 81.85112f), order_terminal), owning_building_guid = 22) - LocalObject(690, SpawnTube.Constructor(Vector3(2072.706f, 1715.742f, 80.00112f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 22) - LocalObject(691, SpawnTube.Constructor(Vector3(2072.706f, 1732.152f, 80.00112f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 22) - LocalObject(480, FacilityTurret.Constructor(Vector3(2049.32f, 1715.295f, 109.4611f), manned_turret), owning_building_guid = 22) + LocalObject( + 523, + Terminal.Constructor(Vector3(2083.445f, 1718.129f, 81.85112f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 524, + Terminal.Constructor(Vector3(2083.445f, 1723.853f, 81.85112f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 525, + Terminal.Constructor(Vector3(2083.445f, 1729.234f, 81.85112f), order_terminal), + owning_building_guid = 22 + ) + LocalObject( + 690, + SpawnTube.Constructor(Vector3(2072.706f, 1715.742f, 80.00112f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 22 + ) + LocalObject( + 691, + SpawnTube.Constructor(Vector3(2072.706f, 1732.152f, 80.00112f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 22 + ) + LocalObject( + 480, + FacilityTurret.Constructor(Vector3(2049.32f, 1715.295f, 109.4611f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(480, 5019) - LocalObject(481, FacilityTurret.Constructor(Vector3(2084.647f, 1740.707f, 109.4611f), manned_turret), owning_building_guid = 22) + LocalObject( + 481, + FacilityTurret.Constructor(Vector3(2084.647f, 1740.707f, 109.4611f), manned_turret), + owning_building_guid = 22 + ) TurretToWeapon(481, 5020) - LocalObject(634, Painbox.Constructor(Vector3(2067.235f, 1721.803f, 82.01822f), painbox_radius_continuous), owning_building_guid = 22) - LocalObject(635, Painbox.Constructor(Vector3(2078.889f, 1730.086f, 80.61912f), painbox_radius_continuous), owning_building_guid = 22) - LocalObject(636, Painbox.Constructor(Vector3(2078.975f, 1718.223f, 80.61912f), painbox_radius_continuous), owning_building_guid = 22) + LocalObject( + 634, + Painbox.Constructor(Vector3(2067.235f, 1721.803f, 82.01822f), painbox_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 635, + Painbox.Constructor(Vector3(2078.889f, 1730.086f, 80.61912f), painbox_radius_continuous), + owning_building_guid = 22 + ) + LocalObject( + 636, + Painbox.Constructor(Vector3(2078.975f, 1718.223f, 80.61912f), painbox_radius_continuous), + owning_building_guid = 22 + ) } Building13() def Building13(): Unit = { // Name: Blue_Gun_Tower Type: tower_a GUID: 23, MapID: 13 - LocalBuilding("Blue_Gun_Tower", 23, 13, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2214f, 2124f, 90.3177f), Vector3(0f, 0f, 305f), tower_a))) - LocalObject(708, CaptureTerminal.Constructor(Vector3(2223.43f, 2110.354f, 100.3167f), secondary_capture), owning_building_guid = 23) + LocalBuilding( + "Blue_Gun_Tower", + 23, + 13, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2214f, 2124f, 90.3177f), Vector3(0f, 0f, 305f), tower_a) + ) + ) + LocalObject( + 708, + CaptureTerminal.Constructor(Vector3(2223.43f, 2110.354f, 100.3167f), secondary_capture), + owning_building_guid = 23 + ) LocalObject(134, Door.Constructor(Vector3(2214.33f, 2109.582f, 91.8387f)), owning_building_guid = 23) LocalObject(135, Door.Constructor(Vector3(2214.33f, 2109.582f, 111.8377f)), owning_building_guid = 23) LocalObject(136, Door.Constructor(Vector3(2227.436f, 2118.759f, 91.8387f)), owning_building_guid = 23) LocalObject(137, Door.Constructor(Vector3(2227.436f, 2118.759f, 111.8377f)), owning_building_guid = 23) LocalObject(747, Door.Constructor(Vector3(2211.214f, 2108.442f, 81.65369f)), owning_building_guid = 23) LocalObject(748, Door.Constructor(Vector3(2224.656f, 2117.854f, 81.65369f)), owning_building_guid = 23) - LocalObject(304, IFFLock.Constructor(Vector3(2214.839f, 2107.439f, 91.77869f), Vector3(0, 0, 235)), owning_building_guid = 23, door_guid = 134) - LocalObject(305, IFFLock.Constructor(Vector3(2214.839f, 2107.439f, 111.7787f), Vector3(0, 0, 235)), owning_building_guid = 23, door_guid = 135) - LocalObject(306, IFFLock.Constructor(Vector3(2226.929f, 2120.897f, 91.77869f), Vector3(0, 0, 55)), owning_building_guid = 23, door_guid = 136) - LocalObject(307, IFFLock.Constructor(Vector3(2226.929f, 2120.897f, 111.7787f), Vector3(0, 0, 55)), owning_building_guid = 23, door_guid = 137) + LocalObject( + 304, + IFFLock.Constructor(Vector3(2214.839f, 2107.439f, 91.77869f), Vector3(0, 0, 235)), + owning_building_guid = 23, + door_guid = 134 + ) + LocalObject( + 305, + IFFLock.Constructor(Vector3(2214.839f, 2107.439f, 111.7787f), Vector3(0, 0, 235)), + owning_building_guid = 23, + door_guid = 135 + ) + LocalObject( + 306, + IFFLock.Constructor(Vector3(2226.929f, 2120.897f, 91.77869f), Vector3(0, 0, 55)), + owning_building_guid = 23, + door_guid = 136 + ) + LocalObject( + 307, + IFFLock.Constructor(Vector3(2226.929f, 2120.897f, 111.7787f), Vector3(0, 0, 55)), + owning_building_guid = 23, + door_guid = 137 + ) LocalObject(408, Locker.Constructor(Vector3(2210.697f, 2102.501f, 80.3117f)), owning_building_guid = 23) LocalObject(409, Locker.Constructor(Vector3(2211.464f, 2101.406f, 80.3117f)), owning_building_guid = 23) LocalObject(410, Locker.Constructor(Vector3(2213.005f, 2099.204f, 80.3117f)), owning_building_guid = 23) @@ -596,25 +1636,76 @@ object Map99 { // Extinction LocalObject(413, Locker.Constructor(Vector3(2229.4f, 2113.923f, 80.3117f)), owning_building_guid = 23) LocalObject(414, Locker.Constructor(Vector3(2230.922f, 2111.75f, 80.3117f)), owning_building_guid = 23) LocalObject(415, Locker.Constructor(Vector3(2231.726f, 2110.601f, 80.3117f)), owning_building_guid = 23) - LocalObject(526, Terminal.Constructor(Vector3(2218.214f, 2100.771f, 81.6497f), order_terminal), owning_building_guid = 23) - LocalObject(527, Terminal.Constructor(Vector3(2222.903f, 2104.055f, 81.6497f), order_terminal), owning_building_guid = 23) - LocalObject(528, Terminal.Constructor(Vector3(2227.311f, 2107.141f, 81.6497f), order_terminal), owning_building_guid = 23) - LocalObject(692, SpawnTube.Constructor(Vector3(2210.1f, 2108.199f, 79.7997f), respawn_tube_tower, Vector3(0, 0, 55)), owning_building_guid = 23) - LocalObject(693, SpawnTube.Constructor(Vector3(2223.542f, 2117.612f, 79.7997f), respawn_tube_tower, Vector3(0, 0, 55)), owning_building_guid = 23) - LocalObject(482, FacilityTurret.Constructor(Vector3(2196.32f, 2127.1f, 109.2597f), manned_turret), owning_building_guid = 23) + LocalObject( + 526, + Terminal.Constructor(Vector3(2218.214f, 2100.771f, 81.6497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 527, + Terminal.Constructor(Vector3(2222.903f, 2104.055f, 81.6497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 528, + Terminal.Constructor(Vector3(2227.311f, 2107.141f, 81.6497f), order_terminal), + owning_building_guid = 23 + ) + LocalObject( + 692, + SpawnTube.Constructor(Vector3(2210.1f, 2108.199f, 79.7997f), respawn_tube_tower, Vector3(0, 0, 55)), + owning_building_guid = 23 + ) + LocalObject( + 693, + SpawnTube.Constructor(Vector3(2223.542f, 2117.612f, 79.7997f), respawn_tube_tower, Vector3(0, 0, 55)), + owning_building_guid = 23 + ) + LocalObject( + 482, + FacilityTurret.Constructor(Vector3(2196.32f, 2127.1f, 109.2597f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(482, 5021) - LocalObject(483, FacilityTurret.Constructor(Vector3(2237.399f, 2112.737f, 109.2597f), manned_turret), owning_building_guid = 23) + LocalObject( + 483, + FacilityTurret.Constructor(Vector3(2237.399f, 2112.737f, 109.2597f), manned_turret), + owning_building_guid = 23 + ) TurretToWeapon(483, 5022) - LocalObject(637, Painbox.Constructor(Vector3(2211.926f, 2116.157f, 81.8168f), painbox_radius_continuous), owning_building_guid = 23) - LocalObject(638, Painbox.Constructor(Vector3(2215.727f, 2104.487f, 80.41769f), painbox_radius_continuous), owning_building_guid = 23) - LocalObject(639, Painbox.Constructor(Vector3(2225.396f, 2111.362f, 80.41769f), painbox_radius_continuous), owning_building_guid = 23) + LocalObject( + 637, + Painbox.Constructor(Vector3(2211.926f, 2116.157f, 81.8168f), painbox_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 638, + Painbox.Constructor(Vector3(2215.727f, 2104.487f, 80.41769f), painbox_radius_continuous), + owning_building_guid = 23 + ) + LocalObject( + 639, + Painbox.Constructor(Vector3(2225.396f, 2111.362f, 80.41769f), painbox_radius_continuous), + owning_building_guid = 23 + ) } Building15() def Building15(): Unit = { // Name: Red_Watch_Tower Type: tower_b GUID: 24, MapID: 15 - LocalBuilding("Red_Watch_Tower", 24, 15, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1488f, 2084f, 90.30762f), Vector3(0f, 0f, 336f), tower_b))) - LocalObject(704, CaptureTerminal.Constructor(Vector3(1503.111f, 2077.159f, 110.3066f), secondary_capture), owning_building_guid = 24) + LocalBuilding( + "Red_Watch_Tower", + 24, + 15, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1488f, 2084f, 90.30762f), Vector3(0f, 0f, 336f), tower_b) + ) + ) + LocalObject( + 704, + CaptureTerminal.Constructor(Vector3(1503.111f, 2077.159f, 110.3066f), secondary_capture), + owning_building_guid = 24 + ) LocalObject(103, Door.Constructor(Vector3(1495.709f, 2071.811f, 91.82762f)), owning_building_guid = 24) LocalObject(104, Door.Constructor(Vector3(1495.709f, 2071.811f, 101.8276f)), owning_building_guid = 24) LocalObject(105, Door.Constructor(Vector3(1495.709f, 2071.811f, 121.8276f)), owning_building_guid = 24) @@ -623,12 +1714,42 @@ object Map99 { // Extinction LocalObject(109, Door.Constructor(Vector3(1502.216f, 2086.427f, 121.8276f)), owning_building_guid = 24) LocalObject(739, Door.Constructor(Vector3(1493.625f, 2069.229f, 81.64362f)), owning_building_guid = 24) LocalObject(740, Door.Constructor(Vector3(1500.3f, 2084.22f, 81.64362f)), owning_building_guid = 24) - LocalObject(286, IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 91.76862f), Vector3(0, 0, 204)), owning_building_guid = 24, door_guid = 103) - LocalObject(287, IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 101.7686f), Vector3(0, 0, 204)), owning_building_guid = 24, door_guid = 104) - LocalObject(288, IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 121.7686f), Vector3(0, 0, 204)), owning_building_guid = 24, door_guid = 105) - LocalObject(289, IFFLock.Constructor(Vector3(1500.68f, 2088f, 91.76862f), Vector3(0, 0, 24)), owning_building_guid = 24, door_guid = 107) - LocalObject(290, IFFLock.Constructor(Vector3(1500.68f, 2088f, 101.7686f), Vector3(0, 0, 24)), owning_building_guid = 24, door_guid = 108) - LocalObject(291, IFFLock.Constructor(Vector3(1500.68f, 2088f, 121.7686f), Vector3(0, 0, 24)), owning_building_guid = 24, door_guid = 109) + LocalObject( + 286, + IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 91.76862f), Vector3(0, 0, 204)), + owning_building_guid = 24, + door_guid = 103 + ) + LocalObject( + 287, + IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 101.7686f), Vector3(0, 0, 204)), + owning_building_guid = 24, + door_guid = 104 + ) + LocalObject( + 288, + IFFLock.Constructor(Vector3(1497.249f, 2070.237f, 121.7686f), Vector3(0, 0, 204)), + owning_building_guid = 24, + door_guid = 105 + ) + LocalObject( + 289, + IFFLock.Constructor(Vector3(1500.68f, 2088f, 91.76862f), Vector3(0, 0, 24)), + owning_building_guid = 24, + door_guid = 107 + ) + LocalObject( + 290, + IFFLock.Constructor(Vector3(1500.68f, 2088f, 101.7686f), Vector3(0, 0, 24)), + owning_building_guid = 24, + door_guid = 108 + ) + LocalObject( + 291, + IFFLock.Constructor(Vector3(1500.68f, 2088f, 121.7686f), Vector3(0, 0, 24)), + owning_building_guid = 24, + door_guid = 109 + ) LocalObject(376, Locker.Constructor(Vector3(1496.241f, 2063.871f, 80.30163f)), owning_building_guid = 24) LocalObject(377, Locker.Constructor(Vector3(1497.463f, 2063.327f, 80.30163f)), owning_building_guid = 24) LocalObject(378, Locker.Constructor(Vector3(1499.918f, 2062.234f, 80.30163f)), owning_building_guid = 24) @@ -637,21 +1758,64 @@ object Map99 { // Extinction LocalObject(381, Locker.Constructor(Vector3(1506.391f, 2083.294f, 80.30163f)), owning_building_guid = 24) LocalObject(382, Locker.Constructor(Vector3(1508.814f, 2082.215f, 80.30163f)), owning_building_guid = 24) LocalObject(383, Locker.Constructor(Vector3(1510.095f, 2081.645f, 80.30163f)), owning_building_guid = 24) - LocalObject(513, Terminal.Constructor(Vector3(1503.577f, 2066.26f, 81.63963f), order_terminal), owning_building_guid = 24) - LocalObject(514, Terminal.Constructor(Vector3(1505.905f, 2071.489f, 81.63963f), order_terminal), owning_building_guid = 24) - LocalObject(516, Terminal.Constructor(Vector3(1508.094f, 2076.404f, 81.63963f), order_terminal), owning_building_guid = 24) - LocalObject(684, SpawnTube.Constructor(Vector3(1492.795f, 2068.447f, 79.78963f), respawn_tube_tower, Vector3(0, 0, 24)), owning_building_guid = 24) - LocalObject(685, SpawnTube.Constructor(Vector3(1499.469f, 2083.438f, 79.78963f), respawn_tube_tower, Vector3(0, 0, 24)), owning_building_guid = 24) - LocalObject(625, Painbox.Constructor(Vector3(1490.109f, 2075.233f, 81.59702f), painbox_radius_continuous), owning_building_guid = 24) - LocalObject(626, Painbox.Constructor(Vector3(1499.611f, 2067.969f, 80.40762f), painbox_radius_continuous), owning_building_guid = 24) - LocalObject(627, Painbox.Constructor(Vector3(1504.624f, 2078.905f, 80.40762f), painbox_radius_continuous), owning_building_guid = 24) + LocalObject( + 513, + Terminal.Constructor(Vector3(1503.577f, 2066.26f, 81.63963f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 514, + Terminal.Constructor(Vector3(1505.905f, 2071.489f, 81.63963f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 516, + Terminal.Constructor(Vector3(1508.094f, 2076.404f, 81.63963f), order_terminal), + owning_building_guid = 24 + ) + LocalObject( + 684, + SpawnTube.Constructor(Vector3(1492.795f, 2068.447f, 79.78963f), respawn_tube_tower, Vector3(0, 0, 24)), + owning_building_guid = 24 + ) + LocalObject( + 685, + SpawnTube.Constructor(Vector3(1499.469f, 2083.438f, 79.78963f), respawn_tube_tower, Vector3(0, 0, 24)), + owning_building_guid = 24 + ) + LocalObject( + 625, + Painbox.Constructor(Vector3(1490.109f, 2075.233f, 81.59702f), painbox_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 626, + Painbox.Constructor(Vector3(1499.611f, 2067.969f, 80.40762f), painbox_radius_continuous), + owning_building_guid = 24 + ) + LocalObject( + 627, + Painbox.Constructor(Vector3(1504.624f, 2078.905f, 80.40762f), painbox_radius_continuous), + owning_building_guid = 24 + ) } Building17() def Building17(): Unit = { // Name: Blue_Watch_Tower Type: tower_b GUID: 25, MapID: 17 - LocalBuilding("Blue_Watch_Tower", 25, 17, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2366f, 2560f, 86.32954f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(709, CaptureTerminal.Constructor(Vector3(2382.587f, 2559.897f, 106.3285f), secondary_capture), owning_building_guid = 25) + LocalBuilding( + "Blue_Watch_Tower", + 25, + 17, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2366f, 2560f, 86.32954f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 709, + CaptureTerminal.Constructor(Vector3(2382.587f, 2559.897f, 106.3285f), secondary_capture), + owning_building_guid = 25 + ) LocalObject(142, Door.Constructor(Vector3(2378f, 2552f, 87.84953f)), owning_building_guid = 25) LocalObject(143, Door.Constructor(Vector3(2378f, 2552f, 97.84953f)), owning_building_guid = 25) LocalObject(144, Door.Constructor(Vector3(2378f, 2552f, 117.8495f)), owning_building_guid = 25) @@ -660,12 +1824,42 @@ object Map99 { // Extinction LocalObject(147, Door.Constructor(Vector3(2378f, 2568f, 117.8495f)), owning_building_guid = 25) LocalObject(749, Door.Constructor(Vector3(2377.147f, 2548.794f, 77.66553f)), owning_building_guid = 25) LocalObject(750, Door.Constructor(Vector3(2377.147f, 2565.204f, 77.66553f)), owning_building_guid = 25) - LocalObject(308, IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 87.79053f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 145) - LocalObject(309, IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 97.79053f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 146) - LocalObject(310, IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 117.7905f), Vector3(0, 0, 0)), owning_building_guid = 25, door_guid = 147) - LocalObject(311, IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 87.79053f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 142) - LocalObject(312, IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 97.79053f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 143) - LocalObject(313, IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 117.7905f), Vector3(0, 0, 180)), owning_building_guid = 25, door_guid = 144) + LocalObject( + 308, + IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 87.79053f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 145 + ) + LocalObject( + 309, + IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 97.79053f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 146 + ) + LocalObject( + 310, + IFFLock.Constructor(Vector3(2375.957f, 2568.811f, 117.7905f), Vector3(0, 0, 0)), + owning_building_guid = 25, + door_guid = 147 + ) + LocalObject( + 311, + IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 87.79053f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 142 + ) + LocalObject( + 312, + IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 97.79053f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 143 + ) + LocalObject( + 313, + IFFLock.Constructor(Vector3(2380.047f, 2551.189f, 117.7905f), Vector3(0, 0, 180)), + owning_building_guid = 25, + door_guid = 144 + ) LocalObject(416, Locker.Constructor(Vector3(2381.716f, 2544.963f, 76.32354f)), owning_building_guid = 25) LocalObject(417, Locker.Constructor(Vector3(2381.751f, 2566.835f, 76.32354f)), owning_building_guid = 25) LocalObject(418, Locker.Constructor(Vector3(2383.053f, 2544.963f, 76.32354f)), owning_building_guid = 25) @@ -674,21 +1868,64 @@ object Map99 { // Extinction LocalObject(421, Locker.Constructor(Vector3(2385.741f, 2566.835f, 76.32354f)), owning_building_guid = 25) LocalObject(422, Locker.Constructor(Vector3(2387.143f, 2544.963f, 76.32354f)), owning_building_guid = 25) LocalObject(423, Locker.Constructor(Vector3(2387.143f, 2566.835f, 76.32354f)), owning_building_guid = 25) - LocalObject(529, Terminal.Constructor(Vector3(2387.446f, 2550.129f, 77.66154f), order_terminal), owning_building_guid = 25) - LocalObject(530, Terminal.Constructor(Vector3(2387.446f, 2555.853f, 77.66154f), order_terminal), owning_building_guid = 25) - LocalObject(531, Terminal.Constructor(Vector3(2387.446f, 2561.234f, 77.66154f), order_terminal), owning_building_guid = 25) - LocalObject(694, SpawnTube.Constructor(Vector3(2376.706f, 2547.742f, 75.81154f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 25) - LocalObject(695, SpawnTube.Constructor(Vector3(2376.706f, 2564.152f, 75.81154f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 25) - LocalObject(640, Painbox.Constructor(Vector3(2371.493f, 2552.849f, 77.61893f), painbox_radius_continuous), owning_building_guid = 25) - LocalObject(641, Painbox.Constructor(Vector3(2383.127f, 2550.078f, 76.42953f), painbox_radius_continuous), owning_building_guid = 25) - LocalObject(642, Painbox.Constructor(Vector3(2383.259f, 2562.107f, 76.42953f), painbox_radius_continuous), owning_building_guid = 25) + LocalObject( + 529, + Terminal.Constructor(Vector3(2387.446f, 2550.129f, 77.66154f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 530, + Terminal.Constructor(Vector3(2387.446f, 2555.853f, 77.66154f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 531, + Terminal.Constructor(Vector3(2387.446f, 2561.234f, 77.66154f), order_terminal), + owning_building_guid = 25 + ) + LocalObject( + 694, + SpawnTube.Constructor(Vector3(2376.706f, 2547.742f, 75.81154f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 25 + ) + LocalObject( + 695, + SpawnTube.Constructor(Vector3(2376.706f, 2564.152f, 75.81154f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 25 + ) + LocalObject( + 640, + Painbox.Constructor(Vector3(2371.493f, 2552.849f, 77.61893f), painbox_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 641, + Painbox.Constructor(Vector3(2383.127f, 2550.078f, 76.42953f), painbox_radius_continuous), + owning_building_guid = 25 + ) + LocalObject( + 642, + Painbox.Constructor(Vector3(2383.259f, 2562.107f, 76.42953f), painbox_radius_continuous), + owning_building_guid = 25 + ) } Building16() def Building16(): Unit = { // Name: Indigo_Watch_Tower Type: tower_b GUID: 26, MapID: 16 - LocalBuilding("Indigo_Watch_Tower", 26, 16, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2450f, 1678f, 82.88522f), Vector3(0f, 0f, 360f), tower_b))) - LocalObject(710, CaptureTerminal.Constructor(Vector3(2466.587f, 1677.897f, 102.8842f), secondary_capture), owning_building_guid = 26) + LocalBuilding( + "Indigo_Watch_Tower", + 26, + 16, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2450f, 1678f, 82.88522f), Vector3(0f, 0f, 360f), tower_b) + ) + ) + LocalObject( + 710, + CaptureTerminal.Constructor(Vector3(2466.587f, 1677.897f, 102.8842f), secondary_capture), + owning_building_guid = 26 + ) LocalObject(149, Door.Constructor(Vector3(2462f, 1670f, 84.40522f)), owning_building_guid = 26) LocalObject(150, Door.Constructor(Vector3(2462f, 1670f, 94.40523f)), owning_building_guid = 26) LocalObject(151, Door.Constructor(Vector3(2462f, 1670f, 114.4052f)), owning_building_guid = 26) @@ -697,12 +1934,42 @@ object Map99 { // Extinction LocalObject(154, Door.Constructor(Vector3(2462f, 1686f, 114.4052f)), owning_building_guid = 26) LocalObject(751, Door.Constructor(Vector3(2461.147f, 1666.794f, 74.22122f)), owning_building_guid = 26) LocalObject(752, Door.Constructor(Vector3(2461.147f, 1683.204f, 74.22122f)), owning_building_guid = 26) - LocalObject(314, IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 84.34622f), Vector3(0, 0, 0)), owning_building_guid = 26, door_guid = 152) - LocalObject(315, IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 94.34622f), Vector3(0, 0, 0)), owning_building_guid = 26, door_guid = 153) - LocalObject(316, IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 114.3462f), Vector3(0, 0, 0)), owning_building_guid = 26, door_guid = 154) - LocalObject(317, IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 84.34622f), Vector3(0, 0, 180)), owning_building_guid = 26, door_guid = 149) - LocalObject(318, IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 94.34622f), Vector3(0, 0, 180)), owning_building_guid = 26, door_guid = 150) - LocalObject(319, IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 114.3462f), Vector3(0, 0, 180)), owning_building_guid = 26, door_guid = 151) + LocalObject( + 314, + IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 84.34622f), Vector3(0, 0, 0)), + owning_building_guid = 26, + door_guid = 152 + ) + LocalObject( + 315, + IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 94.34622f), Vector3(0, 0, 0)), + owning_building_guid = 26, + door_guid = 153 + ) + LocalObject( + 316, + IFFLock.Constructor(Vector3(2459.957f, 1686.811f, 114.3462f), Vector3(0, 0, 0)), + owning_building_guid = 26, + door_guid = 154 + ) + LocalObject( + 317, + IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 84.34622f), Vector3(0, 0, 180)), + owning_building_guid = 26, + door_guid = 149 + ) + LocalObject( + 318, + IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 94.34622f), Vector3(0, 0, 180)), + owning_building_guid = 26, + door_guid = 150 + ) + LocalObject( + 319, + IFFLock.Constructor(Vector3(2464.047f, 1669.189f, 114.3462f), Vector3(0, 0, 180)), + owning_building_guid = 26, + door_guid = 151 + ) LocalObject(424, Locker.Constructor(Vector3(2465.716f, 1662.963f, 72.87923f)), owning_building_guid = 26) LocalObject(425, Locker.Constructor(Vector3(2465.751f, 1684.835f, 72.87923f)), owning_building_guid = 26) LocalObject(426, Locker.Constructor(Vector3(2467.053f, 1662.963f, 72.87923f)), owning_building_guid = 26) @@ -711,31 +1978,94 @@ object Map99 { // Extinction LocalObject(429, Locker.Constructor(Vector3(2469.741f, 1684.835f, 72.87923f)), owning_building_guid = 26) LocalObject(430, Locker.Constructor(Vector3(2471.143f, 1662.963f, 72.87923f)), owning_building_guid = 26) LocalObject(431, Locker.Constructor(Vector3(2471.143f, 1684.835f, 72.87923f)), owning_building_guid = 26) - LocalObject(532, Terminal.Constructor(Vector3(2471.446f, 1668.129f, 74.21722f), order_terminal), owning_building_guid = 26) - LocalObject(533, Terminal.Constructor(Vector3(2471.446f, 1673.853f, 74.21722f), order_terminal), owning_building_guid = 26) - LocalObject(534, Terminal.Constructor(Vector3(2471.446f, 1679.234f, 74.21722f), order_terminal), owning_building_guid = 26) - LocalObject(696, SpawnTube.Constructor(Vector3(2460.706f, 1665.742f, 72.36723f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 26) - LocalObject(697, SpawnTube.Constructor(Vector3(2460.706f, 1682.152f, 72.36723f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 26) - LocalObject(643, Painbox.Constructor(Vector3(2455.493f, 1670.849f, 74.17462f), painbox_radius_continuous), owning_building_guid = 26) - LocalObject(644, Painbox.Constructor(Vector3(2467.127f, 1668.078f, 72.98522f), painbox_radius_continuous), owning_building_guid = 26) - LocalObject(645, Painbox.Constructor(Vector3(2467.259f, 1680.107f, 72.98522f), painbox_radius_continuous), owning_building_guid = 26) + LocalObject( + 532, + Terminal.Constructor(Vector3(2471.446f, 1668.129f, 74.21722f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 533, + Terminal.Constructor(Vector3(2471.446f, 1673.853f, 74.21722f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 534, + Terminal.Constructor(Vector3(2471.446f, 1679.234f, 74.21722f), order_terminal), + owning_building_guid = 26 + ) + LocalObject( + 696, + SpawnTube.Constructor(Vector3(2460.706f, 1665.742f, 72.36723f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 26 + ) + LocalObject( + 697, + SpawnTube.Constructor(Vector3(2460.706f, 1682.152f, 72.36723f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 26 + ) + LocalObject( + 643, + Painbox.Constructor(Vector3(2455.493f, 1670.849f, 74.17462f), painbox_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 644, + Painbox.Constructor(Vector3(2467.127f, 1668.078f, 72.98522f), painbox_radius_continuous), + owning_building_guid = 26 + ) + LocalObject( + 645, + Painbox.Constructor(Vector3(2467.259f, 1680.107f, 72.98522f), painbox_radius_continuous), + owning_building_guid = 26 + ) } Building10() def Building10(): Unit = { // Name: Red_Air_Tower Type: tower_c GUID: 27, MapID: 10 - LocalBuilding("Red_Air_Tower", 27, 10, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1166f, 1754f, 55.62273f), Vector3(0f, 0f, 270f), tower_c))) - LocalObject(703, CaptureTerminal.Constructor(Vector3(1165.897f, 1737.413f, 65.62173f), secondary_capture), owning_building_guid = 27) + LocalBuilding( + "Red_Air_Tower", + 27, + 10, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1166f, 1754f, 55.62273f), Vector3(0f, 0f, 270f), tower_c) + ) + ) + LocalObject( + 703, + CaptureTerminal.Constructor(Vector3(1165.897f, 1737.413f, 65.62173f), secondary_capture), + owning_building_guid = 27 + ) LocalObject(79, Door.Constructor(Vector3(1158f, 1742f, 57.14373f)), owning_building_guid = 27) LocalObject(80, Door.Constructor(Vector3(1158f, 1742f, 77.14273f)), owning_building_guid = 27) LocalObject(81, Door.Constructor(Vector3(1174f, 1742f, 57.14373f)), owning_building_guid = 27) LocalObject(82, Door.Constructor(Vector3(1174f, 1742f, 77.14273f)), owning_building_guid = 27) LocalObject(731, Door.Constructor(Vector3(1154.794f, 1742.854f, 46.95873f)), owning_building_guid = 27) LocalObject(732, Door.Constructor(Vector3(1171.204f, 1742.854f, 46.95873f)), owning_building_guid = 27) - LocalObject(263, IFFLock.Constructor(Vector3(1157.189f, 1739.953f, 57.08373f), Vector3(0, 0, 270)), owning_building_guid = 27, door_guid = 79) - LocalObject(264, IFFLock.Constructor(Vector3(1157.189f, 1739.953f, 77.08373f), Vector3(0, 0, 270)), owning_building_guid = 27, door_guid = 80) - LocalObject(265, IFFLock.Constructor(Vector3(1174.811f, 1744.043f, 57.08373f), Vector3(0, 0, 90)), owning_building_guid = 27, door_guid = 81) - LocalObject(266, IFFLock.Constructor(Vector3(1174.811f, 1744.043f, 77.08373f), Vector3(0, 0, 90)), owning_building_guid = 27, door_guid = 82) + LocalObject( + 263, + IFFLock.Constructor(Vector3(1157.189f, 1739.953f, 57.08373f), Vector3(0, 0, 270)), + owning_building_guid = 27, + door_guid = 79 + ) + LocalObject( + 264, + IFFLock.Constructor(Vector3(1157.189f, 1739.953f, 77.08373f), Vector3(0, 0, 270)), + owning_building_guid = 27, + door_guid = 80 + ) + LocalObject( + 265, + IFFLock.Constructor(Vector3(1174.811f, 1744.043f, 57.08373f), Vector3(0, 0, 90)), + owning_building_guid = 27, + door_guid = 81 + ) + LocalObject( + 266, + IFFLock.Constructor(Vector3(1174.811f, 1744.043f, 77.08373f), Vector3(0, 0, 90)), + owning_building_guid = 27, + door_guid = 82 + ) LocalObject(335, Locker.Constructor(Vector3(1150.963f, 1732.857f, 45.61673f)), owning_building_guid = 27) LocalObject(336, Locker.Constructor(Vector3(1150.963f, 1734.259f, 45.61673f)), owning_building_guid = 27) LocalObject(337, Locker.Constructor(Vector3(1150.963f, 1736.947f, 45.61673f)), owning_building_guid = 27) @@ -744,39 +2074,126 @@ object Map99 { // Extinction LocalObject(340, Locker.Constructor(Vector3(1172.835f, 1734.259f, 45.61673f)), owning_building_guid = 27) LocalObject(341, Locker.Constructor(Vector3(1172.835f, 1736.912f, 45.61673f)), owning_building_guid = 27) LocalObject(342, Locker.Constructor(Vector3(1172.835f, 1738.249f, 45.61673f)), owning_building_guid = 27) - LocalObject(500, Terminal.Constructor(Vector3(1156.129f, 1732.555f, 46.95473f), order_terminal), owning_building_guid = 27) - LocalObject(501, Terminal.Constructor(Vector3(1161.853f, 1732.555f, 46.95473f), order_terminal), owning_building_guid = 27) - LocalObject(502, Terminal.Constructor(Vector3(1167.234f, 1732.555f, 46.95473f), order_terminal), owning_building_guid = 27) - LocalObject(676, SpawnTube.Constructor(Vector3(1153.742f, 1743.294f, 45.10473f), respawn_tube_tower, Vector3(0, 0, 90)), owning_building_guid = 27) - LocalObject(677, SpawnTube.Constructor(Vector3(1170.152f, 1743.294f, 45.10473f), respawn_tube_tower, Vector3(0, 0, 90)), owning_building_guid = 27) - LocalObject(586, ProximityTerminal.Constructor(Vector3(1160.725f, 1755.093f, 83.19273f), pad_landing_tower_frame), owning_building_guid = 27) - LocalObject(587, Terminal.Constructor(Vector3(1160.725f, 1755.093f, 83.19273f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(589, ProximityTerminal.Constructor(Vector3(1171.17f, 1755.093f, 83.19273f), pad_landing_tower_frame), owning_building_guid = 27) - LocalObject(590, Terminal.Constructor(Vector3(1171.17f, 1755.093f, 83.19273f), air_rearm_terminal), owning_building_guid = 27) - LocalObject(464, FacilityTurret.Constructor(Vector3(1151.045f, 1768.93f, 74.56473f), manned_turret), owning_building_guid = 27) + LocalObject( + 500, + Terminal.Constructor(Vector3(1156.129f, 1732.555f, 46.95473f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 501, + Terminal.Constructor(Vector3(1161.853f, 1732.555f, 46.95473f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 502, + Terminal.Constructor(Vector3(1167.234f, 1732.555f, 46.95473f), order_terminal), + owning_building_guid = 27 + ) + LocalObject( + 676, + SpawnTube.Constructor(Vector3(1153.742f, 1743.294f, 45.10473f), respawn_tube_tower, Vector3(0, 0, 90)), + owning_building_guid = 27 + ) + LocalObject( + 677, + SpawnTube.Constructor(Vector3(1170.152f, 1743.294f, 45.10473f), respawn_tube_tower, Vector3(0, 0, 90)), + owning_building_guid = 27 + ) + LocalObject( + 586, + ProximityTerminal.Constructor(Vector3(1160.725f, 1755.093f, 83.19273f), pad_landing_tower_frame), + owning_building_guid = 27 + ) + LocalObject( + 587, + Terminal.Constructor(Vector3(1160.725f, 1755.093f, 83.19273f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 589, + ProximityTerminal.Constructor(Vector3(1171.17f, 1755.093f, 83.19273f), pad_landing_tower_frame), + owning_building_guid = 27 + ) + LocalObject( + 590, + Terminal.Constructor(Vector3(1171.17f, 1755.093f, 83.19273f), air_rearm_terminal), + owning_building_guid = 27 + ) + LocalObject( + 464, + FacilityTurret.Constructor(Vector3(1151.045f, 1768.93f, 74.56473f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(464, 5023) - LocalObject(465, FacilityTurret.Constructor(Vector3(1180.957f, 1730.503f, 74.56473f), manned_turret), owning_building_guid = 27) + LocalObject( + 465, + FacilityTurret.Constructor(Vector3(1180.957f, 1730.503f, 74.56473f), manned_turret), + owning_building_guid = 27 + ) TurretToWeapon(465, 5024) - LocalObject(622, Painbox.Constructor(Vector3(1155.54f, 1737.077f, 45.72273f), painbox_radius_continuous), owning_building_guid = 27) - LocalObject(623, Painbox.Constructor(Vector3(1158.849f, 1749.546f, 47.64223f), painbox_radius_continuous), owning_building_guid = 27) - LocalObject(624, Painbox.Constructor(Vector3(1168.022f, 1736.887f, 45.72273f), painbox_radius_continuous), owning_building_guid = 27) + LocalObject( + 622, + Painbox.Constructor(Vector3(1155.54f, 1737.077f, 45.72273f), painbox_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 623, + Painbox.Constructor(Vector3(1158.849f, 1749.546f, 47.64223f), painbox_radius_continuous), + owning_building_guid = 27 + ) + LocalObject( + 624, + Painbox.Constructor(Vector3(1168.022f, 1736.887f, 45.72273f), painbox_radius_continuous), + owning_building_guid = 27 + ) } Building14() def Building14(): Unit = { // Name: Blue_Air_Tower Type: tower_c GUID: 28, MapID: 14 - LocalBuilding("Blue_Air_Tower", 28, 14, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2024f, 2914f, 64.3846f), Vector3(0f, 0f, 208f), tower_c))) - LocalObject(706, CaptureTerminal.Constructor(Vector3(2009.306f, 2906.304f, 74.3836f), secondary_capture), owning_building_guid = 28) + LocalBuilding( + "Blue_Air_Tower", + 28, + 14, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2024f, 2914f, 64.3846f), Vector3(0f, 0f, 208f), tower_c) + ) + ) + LocalObject( + 706, + CaptureTerminal.Constructor(Vector3(2009.306f, 2906.304f, 74.3836f), secondary_capture), + owning_building_guid = 28 + ) LocalObject(124, Door.Constructor(Vector3(2009.649f, 2915.43f, 65.9056f)), owning_building_guid = 28) LocalObject(125, Door.Constructor(Vector3(2009.649f, 2915.43f, 85.9046f)), owning_building_guid = 28) LocalObject(126, Door.Constructor(Vector3(2017.16f, 2901.303f, 65.9056f)), owning_building_guid = 28) LocalObject(127, Door.Constructor(Vector3(2017.16f, 2901.303f, 85.9046f)), owning_building_guid = 28) LocalObject(743, Door.Constructor(Vector3(2008.898f, 2918.662f, 55.7206f)), owning_building_guid = 28) LocalObject(744, Door.Constructor(Vector3(2016.602f, 2904.172f, 55.7206f)), owning_building_guid = 28) - LocalObject(296, IFFLock.Constructor(Vector3(2007.461f, 2915.185f, 65.8456f), Vector3(0, 0, 332)), owning_building_guid = 28, door_guid = 124) - LocalObject(297, IFFLock.Constructor(Vector3(2007.461f, 2915.185f, 85.8456f), Vector3(0, 0, 332)), owning_building_guid = 28, door_guid = 125) - LocalObject(298, IFFLock.Constructor(Vector3(2019.345f, 2901.546f, 65.8456f), Vector3(0, 0, 152)), owning_building_guid = 28, door_guid = 126) - LocalObject(299, IFFLock.Constructor(Vector3(2019.345f, 2901.546f, 85.8456f), Vector3(0, 0, 152)), owning_building_guid = 28, door_guid = 127) + LocalObject( + 296, + IFFLock.Constructor(Vector3(2007.461f, 2915.185f, 65.8456f), Vector3(0, 0, 332)), + owning_building_guid = 28, + door_guid = 124 + ) + LocalObject( + 297, + IFFLock.Constructor(Vector3(2007.461f, 2915.185f, 85.8456f), Vector3(0, 0, 332)), + owning_building_guid = 28, + door_guid = 125 + ) + LocalObject( + 298, + IFFLock.Constructor(Vector3(2019.345f, 2901.546f, 65.8456f), Vector3(0, 0, 152)), + owning_building_guid = 28, + door_guid = 126 + ) + LocalObject( + 299, + IFFLock.Constructor(Vector3(2019.345f, 2901.546f, 85.8456f), Vector3(0, 0, 152)), + owning_building_guid = 28, + door_guid = 127 + ) LocalObject(392, Locker.Constructor(Vector3(1998.272f, 2917.351f, 54.3786f)), owning_building_guid = 28) LocalObject(393, Locker.Constructor(Vector3(1999.51f, 2918.009f, 54.3786f)), owning_building_guid = 28) LocalObject(394, Locker.Constructor(Vector3(2001.884f, 2919.271f, 54.3786f)), owning_building_guid = 28) @@ -785,39 +2202,126 @@ object Map99 { // Extinction LocalObject(397, Locker.Constructor(Vector3(2009.779f, 2898.697f, 54.3786f)), owning_building_guid = 28) LocalObject(398, Locker.Constructor(Vector3(2012.121f, 2899.943f, 54.3786f)), owning_building_guid = 28) LocalObject(399, Locker.Constructor(Vector3(2013.302f, 2900.57f, 54.3786f)), owning_building_guid = 28) - LocalObject(520, Terminal.Constructor(Vector3(2000.431f, 2912.648f, 55.7166f), order_terminal), owning_building_guid = 28) - LocalObject(521, Terminal.Constructor(Vector3(2003.118f, 2907.594f, 55.7166f), order_terminal), owning_building_guid = 28) - LocalObject(522, Terminal.Constructor(Vector3(2005.645f, 2902.843f, 55.7166f), order_terminal), owning_building_guid = 28) - LocalObject(688, SpawnTube.Constructor(Vector3(2008.792f, 2919.797f, 53.8666f), respawn_tube_tower, Vector3(0, 0, 152)), owning_building_guid = 28) - LocalObject(689, SpawnTube.Constructor(Vector3(2016.496f, 2905.308f, 53.8666f), respawn_tube_tower, Vector3(0, 0, 152)), owning_building_guid = 28) - LocalObject(592, ProximityTerminal.Constructor(Vector3(2022.489f, 2919.171f, 91.9546f), pad_landing_tower_frame), owning_building_guid = 28) - LocalObject(593, Terminal.Constructor(Vector3(2022.489f, 2919.171f, 91.9546f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(595, ProximityTerminal.Constructor(Vector3(2027.392f, 2909.948f, 91.9546f), pad_landing_tower_frame), owning_building_guid = 28) - LocalObject(596, Terminal.Constructor(Vector3(2027.392f, 2909.948f, 91.9546f), air_rearm_terminal), owning_building_guid = 28) - LocalObject(478, FacilityTurret.Constructor(Vector3(2010.275f, 2889.763f, 83.3266f), manned_turret), owning_building_guid = 28) + LocalObject( + 520, + Terminal.Constructor(Vector3(2000.431f, 2912.648f, 55.7166f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 521, + Terminal.Constructor(Vector3(2003.118f, 2907.594f, 55.7166f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 522, + Terminal.Constructor(Vector3(2005.645f, 2902.843f, 55.7166f), order_terminal), + owning_building_guid = 28 + ) + LocalObject( + 688, + SpawnTube.Constructor(Vector3(2008.792f, 2919.797f, 53.8666f), respawn_tube_tower, Vector3(0, 0, 152)), + owning_building_guid = 28 + ) + LocalObject( + 689, + SpawnTube.Constructor(Vector3(2016.496f, 2905.308f, 53.8666f), respawn_tube_tower, Vector3(0, 0, 152)), + owning_building_guid = 28 + ) + LocalObject( + 592, + ProximityTerminal.Constructor(Vector3(2022.489f, 2919.171f, 91.9546f), pad_landing_tower_frame), + owning_building_guid = 28 + ) + LocalObject( + 593, + Terminal.Constructor(Vector3(2022.489f, 2919.171f, 91.9546f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 595, + ProximityTerminal.Constructor(Vector3(2027.392f, 2909.948f, 91.9546f), pad_landing_tower_frame), + owning_building_guid = 28 + ) + LocalObject( + 596, + Terminal.Constructor(Vector3(2027.392f, 2909.948f, 91.9546f), air_rearm_terminal), + owning_building_guid = 28 + ) + LocalObject( + 478, + FacilityTurret.Constructor(Vector3(2010.275f, 2889.763f, 83.3266f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(478, 5025) - LocalObject(479, FacilityTurret.Constructor(Vector3(2030.161f, 2934.214f, 83.3266f), manned_turret), owning_building_guid = 28) + LocalObject( + 479, + FacilityTurret.Constructor(Vector3(2030.161f, 2934.214f, 83.3266f), manned_turret), + owning_building_guid = 28 + ) TurretToWeapon(479, 5026) - LocalObject(631, Painbox.Constructor(Vector3(2004.147f, 2915.291f, 54.4846f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(632, Painbox.Constructor(Vector3(2009.84f, 2904.181f, 54.4846f), painbox_radius_continuous), owning_building_guid = 28) - LocalObject(633, Painbox.Constructor(Vector3(2016.71f, 2918.223f, 56.4041f), painbox_radius_continuous), owning_building_guid = 28) + LocalObject( + 631, + Painbox.Constructor(Vector3(2004.147f, 2915.291f, 54.4846f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 632, + Painbox.Constructor(Vector3(2009.84f, 2904.181f, 54.4846f), painbox_radius_continuous), + owning_building_guid = 28 + ) + LocalObject( + 633, + Painbox.Constructor(Vector3(2016.71f, 2918.223f, 56.4041f), painbox_radius_continuous), + owning_building_guid = 28 + ) } Building11() def Building11(): Unit = { // Name: Indigo_Air_Tower Type: tower_c GUID: 29, MapID: 11 - LocalBuilding("Indigo_Air_Tower", 29, 11, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(2856f, 1380f, 67.77856f), Vector3(0f, 0f, 360f), tower_c))) - LocalObject(711, CaptureTerminal.Constructor(Vector3(2872.587f, 1379.897f, 77.77756f), secondary_capture), owning_building_guid = 29) + LocalBuilding( + "Indigo_Air_Tower", + 29, + 11, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(2856f, 1380f, 67.77856f), Vector3(0f, 0f, 360f), tower_c) + ) + ) + LocalObject( + 711, + CaptureTerminal.Constructor(Vector3(2872.587f, 1379.897f, 77.77756f), secondary_capture), + owning_building_guid = 29 + ) LocalObject(171, Door.Constructor(Vector3(2868f, 1372f, 69.29956f)), owning_building_guid = 29) LocalObject(172, Door.Constructor(Vector3(2868f, 1372f, 89.29855f)), owning_building_guid = 29) LocalObject(173, Door.Constructor(Vector3(2868f, 1388f, 69.29956f)), owning_building_guid = 29) LocalObject(174, Door.Constructor(Vector3(2868f, 1388f, 89.29855f)), owning_building_guid = 29) LocalObject(756, Door.Constructor(Vector3(2867.146f, 1368.794f, 59.11456f)), owning_building_guid = 29) LocalObject(757, Door.Constructor(Vector3(2867.146f, 1385.204f, 59.11456f)), owning_building_guid = 29) - LocalObject(330, IFFLock.Constructor(Vector3(2865.957f, 1388.811f, 69.23956f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 173) - LocalObject(331, IFFLock.Constructor(Vector3(2865.957f, 1388.811f, 89.23956f), Vector3(0, 0, 0)), owning_building_guid = 29, door_guid = 174) - LocalObject(333, IFFLock.Constructor(Vector3(2870.047f, 1371.189f, 69.23956f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 171) - LocalObject(334, IFFLock.Constructor(Vector3(2870.047f, 1371.189f, 89.23956f), Vector3(0, 0, 180)), owning_building_guid = 29, door_guid = 172) + LocalObject( + 330, + IFFLock.Constructor(Vector3(2865.957f, 1388.811f, 69.23956f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 173 + ) + LocalObject( + 331, + IFFLock.Constructor(Vector3(2865.957f, 1388.811f, 89.23956f), Vector3(0, 0, 0)), + owning_building_guid = 29, + door_guid = 174 + ) + LocalObject( + 333, + IFFLock.Constructor(Vector3(2870.047f, 1371.189f, 69.23956f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 171 + ) + LocalObject( + 334, + IFFLock.Constructor(Vector3(2870.047f, 1371.189f, 89.23956f), Vector3(0, 0, 180)), + owning_building_guid = 29, + door_guid = 172 + ) LocalObject(444, Locker.Constructor(Vector3(2871.716f, 1364.963f, 57.77256f)), owning_building_guid = 29) LocalObject(445, Locker.Constructor(Vector3(2871.751f, 1386.835f, 57.77256f)), owning_building_guid = 29) LocalObject(446, Locker.Constructor(Vector3(2873.053f, 1364.963f, 57.77256f)), owning_building_guid = 29) @@ -826,40 +2330,111 @@ object Map99 { // Extinction LocalObject(449, Locker.Constructor(Vector3(2875.741f, 1386.835f, 57.77256f)), owning_building_guid = 29) LocalObject(450, Locker.Constructor(Vector3(2877.143f, 1364.963f, 57.77256f)), owning_building_guid = 29) LocalObject(451, Locker.Constructor(Vector3(2877.143f, 1386.835f, 57.77256f)), owning_building_guid = 29) - LocalObject(541, Terminal.Constructor(Vector3(2877.445f, 1370.129f, 59.11056f), order_terminal), owning_building_guid = 29) - LocalObject(542, Terminal.Constructor(Vector3(2877.445f, 1375.853f, 59.11056f), order_terminal), owning_building_guid = 29) - LocalObject(543, Terminal.Constructor(Vector3(2877.445f, 1381.234f, 59.11056f), order_terminal), owning_building_guid = 29) - LocalObject(701, SpawnTube.Constructor(Vector3(2866.706f, 1367.742f, 57.26056f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(702, SpawnTube.Constructor(Vector3(2866.706f, 1384.152f, 57.26056f), respawn_tube_tower, Vector3(0, 0, 0)), owning_building_guid = 29) - LocalObject(598, ProximityTerminal.Constructor(Vector3(2854.907f, 1374.725f, 95.34856f), pad_landing_tower_frame), owning_building_guid = 29) - LocalObject(599, Terminal.Constructor(Vector3(2854.907f, 1374.725f, 95.34856f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(601, ProximityTerminal.Constructor(Vector3(2854.907f, 1385.17f, 95.34856f), pad_landing_tower_frame), owning_building_guid = 29) - LocalObject(602, Terminal.Constructor(Vector3(2854.907f, 1385.17f, 95.34856f), air_rearm_terminal), owning_building_guid = 29) - LocalObject(486, FacilityTurret.Constructor(Vector3(2841.07f, 1365.045f, 86.72056f), manned_turret), owning_building_guid = 29) + LocalObject( + 541, + Terminal.Constructor(Vector3(2877.445f, 1370.129f, 59.11056f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 542, + Terminal.Constructor(Vector3(2877.445f, 1375.853f, 59.11056f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 543, + Terminal.Constructor(Vector3(2877.445f, 1381.234f, 59.11056f), order_terminal), + owning_building_guid = 29 + ) + LocalObject( + 701, + SpawnTube.Constructor(Vector3(2866.706f, 1367.742f, 57.26056f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 702, + SpawnTube.Constructor(Vector3(2866.706f, 1384.152f, 57.26056f), respawn_tube_tower, Vector3(0, 0, 0)), + owning_building_guid = 29 + ) + LocalObject( + 598, + ProximityTerminal.Constructor(Vector3(2854.907f, 1374.725f, 95.34856f), pad_landing_tower_frame), + owning_building_guid = 29 + ) + LocalObject( + 599, + Terminal.Constructor(Vector3(2854.907f, 1374.725f, 95.34856f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 601, + ProximityTerminal.Constructor(Vector3(2854.907f, 1385.17f, 95.34856f), pad_landing_tower_frame), + owning_building_guid = 29 + ) + LocalObject( + 602, + Terminal.Constructor(Vector3(2854.907f, 1385.17f, 95.34856f), air_rearm_terminal), + owning_building_guid = 29 + ) + LocalObject( + 486, + FacilityTurret.Constructor(Vector3(2841.07f, 1365.045f, 86.72056f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(486, 5027) - LocalObject(488, FacilityTurret.Constructor(Vector3(2879.497f, 1394.957f, 86.72056f), manned_turret), owning_building_guid = 29) + LocalObject( + 488, + FacilityTurret.Constructor(Vector3(2879.497f, 1394.957f, 86.72056f), manned_turret), + owning_building_guid = 29 + ) TurretToWeapon(488, 5028) - LocalObject(646, Painbox.Constructor(Vector3(2860.454f, 1372.849f, 59.79806f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(647, Painbox.Constructor(Vector3(2872.923f, 1369.54f, 57.87856f), painbox_radius_continuous), owning_building_guid = 29) - LocalObject(648, Painbox.Constructor(Vector3(2873.113f, 1382.022f, 57.87856f), painbox_radius_continuous), owning_building_guid = 29) + LocalObject( + 646, + Painbox.Constructor(Vector3(2860.454f, 1372.849f, 59.79806f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 647, + Painbox.Constructor(Vector3(2872.923f, 1369.54f, 57.87856f), painbox_radius_continuous), + owning_building_guid = 29 + ) + LocalObject( + 648, + Painbox.Constructor(Vector3(2873.113f, 1382.022f, 57.87856f), painbox_radius_continuous), + owning_building_guid = 29 + ) } Building10461() def Building10461(): Unit = { // Name: Map99_Gate_One Type: warpgate_small GUID: 30, MapID: 10461 - LocalBuilding("Map99_Gate_One", 30, 10461, FoundationBuilder(WarpGate.Structure(Vector3(1198.85f, 2094.78f, 66.32f)))) + LocalBuilding( + "Map99_Gate_One", + 30, + 10461, + FoundationBuilder(WarpGate.Structure(Vector3(1198.85f, 2094.78f, 66.32f))) + ) } Building10462() def Building10462(): Unit = { // Name: Map99_Gate_Two Type: warpgate_small GUID: 31, MapID: 10462 - LocalBuilding("Map99_Gate_Two", 31, 10462, FoundationBuilder(WarpGate.Structure(Vector3(2491.85f, 2848.95f, 62.31f)))) + LocalBuilding( + "Map99_Gate_Two", + 31, + 10462, + FoundationBuilder(WarpGate.Structure(Vector3(2491.85f, 2848.95f, 62.31f))) + ) } Building10464() def Building10464(): Unit = { // Name: Map99_Gate_Three Type: warpgate_small GUID: 32, MapID: 10464 - LocalBuilding("Map99_Gate_Three", 32, 10464, FoundationBuilder(WarpGate.Structure(Vector3(2547.98f, 1237.04f, 89.09f)))) + LocalBuilding( + "Map99_Gate_Three", + 32, + 10464, + FoundationBuilder(WarpGate.Structure(Vector3(2547.98f, 1237.04f, 89.09f))) + ) } def Lattice(): Unit = { diff --git a/pslogin/src/main/scala/zonemaps/Ugd01.scala b/pslogin/src/main/scala/zonemaps/Ugd01.scala index 82a918be..6b94cd07 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd01.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd01.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd01 { // Supai Building10140() def Building10140(): Unit = { // Name: ceiling_bldg_a_10140 Type: ceiling_bldg_a GUID: 1, MapID: 10140 - LocalBuilding("ceiling_bldg_a_10140", 1, 10140, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(850.56f, 1038.27f, 170.61f), Vector3(0f, 0f, 0f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10140", + 1, + 10140, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(850.56f, 1038.27f, 170.61f), + Vector3(0f, 0f, 0f), + ceiling_bldg_a + ) + ) + ) LocalObject(571, Door.Constructor(Vector3(836.576f, 1045.967f, 172.389f)), owning_building_guid = 1) LocalObject(580, Door.Constructor(Vector3(865.815f, 1027.238f, 177.895f)), owning_building_guid = 1) LocalObject(581, Door.Constructor(Vector3(865.815f, 1051.238f, 177.895f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd01 { // Supai Building10141() def Building10141(): Unit = { // Name: ceiling_bldg_b_10141 Type: ceiling_bldg_b GUID: 2, MapID: 10141 - LocalBuilding("ceiling_bldg_b_10141", 2, 10141, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(950.1f, 921.84f, 163.91f), Vector3(0f, 0f, 0f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10141", + 2, + 10141, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(950.1f, 921.84f, 163.91f), + Vector3(0f, 0f, 0f), + ceiling_bldg_b + ) + ) + ) LocalObject(595, Door.Constructor(Vector3(952.115f, 938.33f, 165.689f)), owning_building_guid = 2) LocalObject(596, Door.Constructor(Vector3(956.116f, 920.83f, 165.689f)), owning_building_guid = 2) } @@ -38,7 +62,19 @@ object Ugd01 { // Supai Building10138() def Building10138(): Unit = { // Name: ceiling_bldg_c_10138 Type: ceiling_bldg_c GUID: 3, MapID: 10138 - LocalBuilding("ceiling_bldg_c_10138", 3, 10138, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1077.18f, 1115.65f, 154.15f), Vector3(0f, 0f, 217f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10138", + 3, + 10138, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1077.18f, 1115.65f, 154.15f), + Vector3(0f, 0f, 217f), + ceiling_bldg_c + ) + ) + ) LocalObject(620, Door.Constructor(Vector3(1033.541f, 1097.152f, 155.929f)), owning_building_guid = 3) LocalObject(623, Door.Constructor(Vector3(1052.197f, 1072.395f, 155.929f)), owning_building_guid = 3) LocalObject(624, Door.Constructor(Vector3(1080.784f, 1113.377f, 155.929f)), owning_building_guid = 3) @@ -47,29 +83,73 @@ object Ugd01 { // Supai Building10312() def Building10312(): Unit = { // Name: ceiling_bldg_d_10312 Type: ceiling_bldg_d GUID: 4, MapID: 10312 - LocalBuilding("ceiling_bldg_d_10312", 4, 10312, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(993.7f, 1408.09f, 161.96f), Vector3(0f, 0f, 0f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10312", + 4, + 10312, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(993.7f, 1408.09f, 161.96f), + Vector3(0f, 0f, 0f), + ceiling_bldg_d + ) + ) + ) LocalObject(601, Door.Constructor(Vector3(976.21f, 1408.106f, 163.695f)), owning_building_guid = 4) LocalObject(610, Door.Constructor(Vector3(993.716f, 1390.58f, 163.695f)), owning_building_guid = 4) LocalObject(611, Door.Constructor(Vector3(993.716f, 1425.58f, 163.695f)), owning_building_guid = 4) LocalObject(615, Door.Constructor(Vector3(1011.21f, 1408.106f, 163.695f)), owning_building_guid = 4) - LocalObject(779, Painbox.Constructor(Vector3(993.6073f, 1407.887f, 170.268f), painbox_continuous), owning_building_guid = 4) + LocalObject( + 779, + Painbox.Constructor(Vector3(993.6073f, 1407.887f, 170.268f), painbox_continuous), + owning_building_guid = 4 + ) } Building10139() def Building10139(): Unit = { // Name: ceiling_bldg_d_10139 Type: ceiling_bldg_d GUID: 5, MapID: 10139 - LocalBuilding("ceiling_bldg_d_10139", 5, 10139, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1287.02f, 1242.45f, 159.65f), Vector3(0f, 0f, 0f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10139", + 5, + 10139, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1287.02f, 1242.45f, 159.65f), + Vector3(0f, 0f, 0f), + ceiling_bldg_d + ) + ) + ) LocalObject(643, Door.Constructor(Vector3(1269.53f, 1242.466f, 161.385f)), owning_building_guid = 5) LocalObject(648, Door.Constructor(Vector3(1287.036f, 1224.94f, 161.385f)), owning_building_guid = 5) LocalObject(649, Door.Constructor(Vector3(1287.036f, 1259.94f, 161.385f)), owning_building_guid = 5) LocalObject(651, Door.Constructor(Vector3(1304.53f, 1242.466f, 161.385f)), owning_building_guid = 5) - LocalObject(780, Painbox.Constructor(Vector3(1286.927f, 1242.247f, 167.958f), painbox_continuous), owning_building_guid = 5) + LocalObject( + 780, + Painbox.Constructor(Vector3(1286.927f, 1242.247f, 167.958f), painbox_continuous), + owning_building_guid = 5 + ) } Building10143() def Building10143(): Unit = { // Name: ceiling_bldg_e_10143 Type: ceiling_bldg_e GUID: 6, MapID: 10143 - LocalBuilding("ceiling_bldg_e_10143", 6, 10143, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1408.75f, 1242.78f, 167.66f), Vector3(0f, 0f, 0f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10143", + 6, + 10143, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1408.75f, 1242.78f, 167.66f), + Vector3(0f, 0f, 0f), + ceiling_bldg_e + ) + ) + ) LocalObject(685, Door.Constructor(Vector3(1396.734f, 1241.79f, 169.439f)), owning_building_guid = 6) LocalObject(691, Door.Constructor(Vector3(1412.734f, 1275.29f, 174.939f)), owning_building_guid = 6) LocalObject(693, Door.Constructor(Vector3(1427.76f, 1270.796f, 169.439f)), owning_building_guid = 6) @@ -79,7 +159,19 @@ object Ugd01 { // Supai Building10142() def Building10142(): Unit = { // Name: ceiling_bldg_f_10142 Type: ceiling_bldg_f GUID: 7, MapID: 10142 - LocalBuilding("ceiling_bldg_f_10142", 7, 10142, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1376.58f, 1348.91f, 159.37f), Vector3(0f, 0f, 151f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10142", + 7, + 10142, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1376.58f, 1348.91f, 159.37f), + Vector3(0f, 0f, 151f), + ceiling_bldg_f + ) + ) + ) LocalObject(668, Door.Constructor(Vector3(1352.277f, 1329.785f, 161.149f)), owning_building_guid = 7) LocalObject(686, Door.Constructor(Vector3(1404.189f, 1356.455f, 161.149f)), owning_building_guid = 7) } @@ -87,7 +179,19 @@ object Ugd01 { // Supai Building10145() def Building10145(): Unit = { // Name: ceiling_bldg_g_10145 Type: ceiling_bldg_g GUID: 8, MapID: 10145 - LocalBuilding("ceiling_bldg_g_10145", 8, 10145, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1374.9f, 1025.85f, 162.66f), Vector3(0f, 0f, 41f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10145", + 8, + 10145, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1374.9f, 1025.85f, 162.66f), + Vector3(0f, 0f, 41f), + ceiling_bldg_g + ) + ) + ) LocalObject(671, Door.Constructor(Vector3(1363.438f, 1039.06f, 164.439f)), owning_building_guid = 8) LocalObject(676, Door.Constructor(Vector3(1379.706f, 1008.152f, 164.439f)), owning_building_guid = 8) } @@ -95,7 +199,19 @@ object Ugd01 { // Supai Building10146() def Building10146(): Unit = { // Name: ceiling_bldg_h_10146 Type: ceiling_bldg_h GUID: 9, MapID: 10146 - LocalBuilding("ceiling_bldg_h_10146", 9, 10146, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1311.84f, 904.66f, 161.7f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10146", + 9, + 10146, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1311.84f, 904.66f, 161.7f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(650, Door.Constructor(Vector3(1295.35f, 900.676f, 163.479f)), owning_building_guid = 9) LocalObject(658, Door.Constructor(Vector3(1315.824f, 921.17f, 163.479f)), owning_building_guid = 9) LocalObject(663, Door.Constructor(Vector3(1322.925f, 893.472f, 165.979f)), owning_building_guid = 9) @@ -104,7 +220,19 @@ object Ugd01 { // Supai Building10144() def Building10144(): Unit = { // Name: ceiling_bldg_i_10144 Type: ceiling_bldg_i GUID: 10, MapID: 10144 - LocalBuilding("ceiling_bldg_i_10144", 10, 10144, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1206.94f, 1100.55f, 172.13f), Vector3(0f, 0f, 0f), ceiling_bldg_i))) + LocalBuilding( + "ceiling_bldg_i_10144", + 10, + 10144, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1206.94f, 1100.55f, 172.13f), + Vector3(0f, 0f, 0f), + ceiling_bldg_i + ) + ) + ) LocalObject(636, Door.Constructor(Vector3(1182.45f, 1104.066f, 173.909f)), owning_building_guid = 10) LocalObject(642, Door.Constructor(Vector3(1232.45f, 1104.066f, 173.909f)), owning_building_guid = 10) } @@ -112,7 +240,19 @@ object Ugd01 { // Supai Building10311() def Building10311(): Unit = { // Name: ceiling_bldg_j_10311 Type: ceiling_bldg_j GUID: 11, MapID: 10311 - LocalBuilding("ceiling_bldg_j_10311", 11, 10311, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(940.03f, 1345.53f, 162.79f), Vector3(0f, 0f, 0f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10311", + 11, + 10311, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(940.03f, 1345.53f, 162.79f), + Vector3(0f, 0f, 0f), + ceiling_bldg_j + ) + ) + ) LocalObject(592, Door.Constructor(Vector3(940.046f, 1333.02f, 164.569f)), owning_building_guid = 11) LocalObject(593, Door.Constructor(Vector3(940.046f, 1358.02f, 164.569f)), owning_building_guid = 11) } @@ -120,7 +260,19 @@ object Ugd01 { // Supai Building10310() def Building10310(): Unit = { // Name: ceiling_bldg_z_10310 Type: ceiling_bldg_z GUID: 12, MapID: 10310 - LocalBuilding("ceiling_bldg_z_10310", 12, 10310, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1055.73f, 1181.27f, 165.51f), Vector3(0f, 0f, 27f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10310", + 12, + 10310, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1055.73f, 1181.27f, 165.51f), + Vector3(0f, 0f, 27f), + ceiling_bldg_z + ) + ) + ) LocalObject(619, Door.Constructor(Vector3(1032.086f, 1173.73f, 167.289f)), owning_building_guid = 12) LocalObject(625, Door.Constructor(Vector3(1082.873f, 1199.608f, 167.289f)), owning_building_guid = 12) } @@ -128,7 +280,19 @@ object Ugd01 { // Supai Building10029() def Building10029(): Unit = { // Name: ground_bldg_b_10029 Type: ground_bldg_b GUID: 61, MapID: 10029 - LocalBuilding("ground_bldg_b_10029", 61, 10029, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(794.78f, 864.61f, 103.74f), Vector3(0f, 0f, 75f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10029", + 61, + 10029, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(794.78f, 864.61f, 103.74f), + Vector3(0f, 0f, 75f), + ground_bldg_b + ) + ) + ) LocalObject(552, Door.Constructor(Vector3(779.3734f, 870.8243f, 105.519f)), owning_building_guid = 61) LocalObject(554, Door.Constructor(Vector3(795.3158f, 889.8535f, 111.019f)), owning_building_guid = 61) LocalObject(556, Door.Constructor(Vector3(797.3127f, 870.1596f, 105.519f)), owning_building_guid = 61) @@ -137,7 +301,19 @@ object Ugd01 { // Supai Building10016() def Building10016(): Unit = { // Name: ground_bldg_b_10016 Type: ground_bldg_b GUID: 62, MapID: 10016 - LocalBuilding("ground_bldg_b_10016", 62, 10016, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(865.1f, 916.28f, 85.19f), Vector3(0f, 0f, 215f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10016", + 62, + 10016, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(865.1f, 916.28f, 85.19f), + Vector3(0f, 0f, 215f), + ground_bldg_b + ) + ) + ) LocalObject(573, Door.Constructor(Vector3(848.4634f, 897.2867f, 92.469f)), owning_building_guid = 62) LocalObject(578, Door.Constructor(Vector3(859.5927f, 913.6567f, 86.969f)), owning_building_guid = 62) LocalObject(584, Door.Constructor(Vector3(872.9077f, 901.6165f, 86.969f)), owning_building_guid = 62) @@ -146,7 +322,19 @@ object Ugd01 { // Supai Building10077() def Building10077(): Unit = { // Name: ground_bldg_b_10077 Type: ground_bldg_b GUID: 63, MapID: 10077 - LocalBuilding("ground_bldg_b_10077", 63, 10077, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(998.78f, 1510.64f, 87.06f), Vector3(0f, 0f, 41f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10077", + 63, + 10077, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(998.78f, 1510.64f, 87.06f), + Vector3(0f, 0f, 41f), + ground_bldg_b + ) + ) + ) LocalObject(607, Door.Constructor(Vector3(989.4824f, 1524.407f, 88.839f)), owning_building_guid = 63) LocalObject(614, Door.Constructor(Vector3(1003.983f, 1513.825f, 88.839f)), owning_building_guid = 63) LocalObject(616, Door.Constructor(Vector3(1013.34f, 1531.268f, 94.339f)), owning_building_guid = 63) @@ -155,7 +343,19 @@ object Ugd01 { // Supai Building10066() def Building10066(): Unit = { // Name: ground_bldg_b_10066 Type: ground_bldg_b GUID: 64, MapID: 10066 - LocalBuilding("ground_bldg_b_10066", 64, 10066, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1041.45f, 1317.49f, 90.89f), Vector3(0f, 0f, 80f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10066", + 64, + 10066, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1041.45f, 1317.49f, 90.89f), + Vector3(0f, 0f, 80f), + ground_bldg_b + ) + ) + ) LocalObject(618, Door.Constructor(Vector3(1025.56f, 1322.338f, 92.669f)), owning_building_guid = 64) LocalObject(621, Door.Constructor(Vector3(1039.784f, 1342.684f, 98.169f)), owning_building_guid = 64) LocalObject(622, Door.Constructor(Vector3(1043.489f, 1323.239f, 92.669f)), owning_building_guid = 64) @@ -164,7 +364,19 @@ object Ugd01 { // Supai Building10031() def Building10031(): Unit = { // Name: ground_bldg_b_10031 Type: ground_bldg_b GUID: 65, MapID: 10031 - LocalBuilding("ground_bldg_b_10031", 65, 10031, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1384.96f, 1262.28f, 85.22f), Vector3(0f, 0f, 150f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10031", + 65, + 10031, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1384.96f, 1262.28f, 85.22f), + Vector3(0f, 0f, 150f), + ground_bldg_b + ) + ) + ) LocalObject(670, Door.Constructor(Vector3(1360.715f, 1269.331f, 92.499f)), owning_building_guid = 65) LocalObject(674, Door.Constructor(Vector3(1374.97f, 1249.007f, 86.999f)), owning_building_guid = 65) LocalObject(677, Door.Constructor(Vector3(1380.255f, 1266.163f, 86.999f)), owning_building_guid = 65) @@ -173,7 +385,19 @@ object Ugd01 { // Supai Building10025() def Building10025(): Unit = { // Name: ground_bldg_b_10025 Type: ground_bldg_b GUID: 66, MapID: 10025 - LocalBuilding("ground_bldg_b_10025", 66, 10025, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1493.42f, 1346.97f, 87.93f), Vector3(0f, 0f, 250f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10025", + 66, + 10025, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1493.42f, 1346.97f, 87.93f), + Vector3(0f, 0f, 250f), + ground_bldg_b + ) + ) + ) LocalObject(707, Door.Constructor(Vector3(1490.413f, 1341.662f, 89.709f)), owning_building_guid = 66) LocalObject(708, Door.Constructor(Vector3(1490.686f, 1321.869f, 95.209f)), owning_building_guid = 66) LocalObject(714, Door.Constructor(Vector3(1508.226f, 1339.437f, 89.709f)), owning_building_guid = 66) @@ -182,7 +406,19 @@ object Ugd01 { // Supai Building10017() def Building10017(): Unit = { // Name: ground_bldg_c_10017 Type: ground_bldg_c GUID: 67, MapID: 10017 - LocalBuilding("ground_bldg_c_10017", 67, 10017, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(786.51f, 954.37f, 105.26f), Vector3(0f, 0f, 325f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10017", + 67, + 10017, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(786.51f, 954.37f, 105.26f), + Vector3(0f, 0f, 325f), + ground_bldg_c + ) + ) + ) LocalObject(553, Door.Constructor(Vector3(787.5582f, 958.4996f, 107.039f)), owning_building_guid = 67) LocalObject(562, Door.Constructor(Vector3(817.5875f, 918.5826f, 107.039f)), owning_building_guid = 67) LocalObject(570, Door.Constructor(Vector3(835.3683f, 943.9763f, 107.039f)), owning_building_guid = 67) @@ -191,7 +427,19 @@ object Ugd01 { // Supai Building10030() def Building10030(): Unit = { // Name: ground_bldg_c_10030 Type: ground_bldg_c GUID: 68, MapID: 10030 - LocalBuilding("ground_bldg_c_10030", 68, 10030, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(857.33f, 852.26f, 107.42f), Vector3(0f, 0f, 215f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10030", + 68, + 10030, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(857.33f, 852.26f, 107.42f), + Vector3(0f, 0f, 215f), + ground_bldg_c + ) + ) + ) LocalObject(560, Door.Constructor(Vector3(813.0717f, 835.2968f, 109.199f)), owning_building_guid = 68) LocalObject(567, Door.Constructor(Vector3(830.8526f, 809.903f, 109.199f)), owning_building_guid = 68) LocalObject(579, Door.Constructor(Vector3(860.8521f, 849.8626f, 109.199f)), owning_building_guid = 68) @@ -200,7 +448,19 @@ object Ugd01 { // Supai Building10067() def Building10067(): Unit = { // Name: ground_bldg_c_10067 Type: ground_bldg_c GUID: 69, MapID: 10067 - LocalBuilding("ground_bldg_c_10067", 69, 10067, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(973.9f, 1275.59f, 108.53f), Vector3(0f, 0f, 275f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10067", + 69, + 10067, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(973.9f, 1275.59f, 108.53f), + Vector3(0f, 0f, 275f), + ground_bldg_c + ) + ) + ) LocalObject(597, Door.Constructor(Vector3(966.4615f, 1228.78f, 110.309f)), owning_building_guid = 69) LocalObject(603, Door.Constructor(Vector3(977.7372f, 1277.441f, 110.309f)), owning_building_guid = 69) LocalObject(613, Door.Constructor(Vector3(997.3436f, 1231.481f, 110.309f)), owning_building_guid = 69) @@ -209,7 +469,19 @@ object Ugd01 { // Supai Building10305() def Building10305(): Unit = { // Name: ground_bldg_c_10305 Type: ground_bldg_c GUID: 70, MapID: 10305 - LocalBuilding("ground_bldg_c_10305", 70, 10305, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1271.71f, 996.36f, 107.32f), Vector3(0f, 0f, 330f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10305", + 70, + 10305, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1271.71f, 996.36f, 107.32f), + Vector3(0f, 0f, 330f), + ground_bldg_c + ) + ) + ) LocalObject(644, Door.Constructor(Vector3(1272.394f, 1000.565f, 109.099f)), owning_building_guid = 70) LocalObject(653, Door.Constructor(Vector3(1305.788f, 963.4174f, 109.099f)), owning_building_guid = 70) LocalObject(661, Door.Constructor(Vector3(1321.288f, 990.2642f, 109.099f)), owning_building_guid = 70) @@ -218,7 +490,19 @@ object Ugd01 { // Supai Building10022() def Building10022(): Unit = { // Name: ground_bldg_c_10022 Type: ground_bldg_c GUID: 71, MapID: 10022 - LocalBuilding("ground_bldg_c_10022", 71, 10022, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1456.97f, 1345.86f, 103.88f), Vector3(0f, 0f, 140f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10022", + 71, + 10022, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1456.97f, 1345.86f, 103.88f), + Vector3(0f, 0f, 140f), + ground_bldg_c + ) + ) + ) LocalObject(688, Door.Constructor(Vector3(1409.203f, 1360.472f, 105.659f)), owning_building_guid = 71) LocalObject(694, Door.Constructor(Vector3(1429.13f, 1384.22f, 105.659f)), owning_building_guid = 71) LocalObject(698, Door.Constructor(Vector3(1455.566f, 1341.837f, 105.659f)), owning_building_guid = 71) @@ -227,7 +511,19 @@ object Ugd01 { // Supai Building10096() def Building10096(): Unit = { // Name: ground_bldg_c_10096 Type: ground_bldg_c GUID: 72, MapID: 10096 - LocalBuilding("ground_bldg_c_10096", 72, 10096, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1481.1f, 1136.17f, 101.01f), Vector3(0f, 0f, 340f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10096", + 72, + 10096, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1481.1f, 1136.17f, 101.01f), + Vector3(0f, 0f, 340f), + ground_bldg_c + ) + ) + ) LocalObject(703, Door.Constructor(Vector3(1481.044f, 1140.43f, 102.789f)), owning_building_guid = 72) LocalObject(718, Door.Constructor(Vector3(1520.381f, 1109.646f, 102.789f)), owning_building_guid = 72) LocalObject(719, Door.Constructor(Vector3(1530.984f, 1138.776f, 102.789f)), owning_building_guid = 72) @@ -236,7 +532,19 @@ object Ugd01 { // Supai Building10027() def Building10027(): Unit = { // Name: ground_bldg_c_10027 Type: ground_bldg_c GUID: 73, MapID: 10027 - LocalBuilding("ground_bldg_c_10027", 73, 10027, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1493.89f, 1467.82f, 105.26f), Vector3(0f, 0f, 315f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10027", + 73, + 10027, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1493.89f, 1467.82f, 105.26f), + Vector3(0f, 0f, 315f), + ground_bldg_c + ) + ) + ) LocalObject(709, Door.Constructor(Vector3(1495.639f, 1471.705f, 107.039f)), owning_building_guid = 73) LocalObject(717, Door.Constructor(Vector3(1518.281f, 1427.18f, 107.039f)), owning_building_guid = 73) LocalObject(720, Door.Constructor(Vector3(1540.201f, 1449.1f, 107.039f)), owning_building_guid = 73) @@ -245,7 +553,19 @@ object Ugd01 { // Supai Building10028() def Building10028(): Unit = { // Name: ground_bldg_d_10028 Type: ground_bldg_d GUID: 74, MapID: 10028 - LocalBuilding("ground_bldg_d_10028", 74, 10028, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(748.19f, 914.57f, 104.86f), Vector3(0f, 0f, 215f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10028", + 74, + 10028, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(748.19f, 914.57f, 104.86f), + Vector3(0f, 0f, 215f), + ground_bldg_d + ) + ) + ) LocalObject(547, Door.Constructor(Vector3(733.8558f, 904.5135f, 106.595f)), owning_building_guid = 74) LocalObject(548, Door.Constructor(Vector3(738.1335f, 928.9042f, 106.595f)), owning_building_guid = 74) LocalObject(550, Door.Constructor(Vector3(758.2087f, 900.2339f, 106.595f)), owning_building_guid = 74) @@ -255,7 +575,19 @@ object Ugd01 { // Supai Building10074() def Building10074(): Unit = { // Name: ground_bldg_d_10074 Type: ground_bldg_d GUID: 75, MapID: 10074 - LocalBuilding("ground_bldg_d_10074", 75, 10074, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(838.93f, 1166.25f, 99.66f), Vector3(0f, 0f, 235f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10074", + 75, + 10074, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(838.93f, 1166.25f, 99.66f), + Vector3(0f, 0f, 235f), + ground_bldg_d + ) + ) + ) LocalObject(565, Door.Constructor(Vector3(824.5775f, 1176.28f, 101.395f)), owning_building_guid = 75) LocalObject(566, Door.Constructor(Vector3(828.8998f, 1151.897f, 101.395f)), owning_building_guid = 75) LocalObject(574, Door.Constructor(Vector3(848.975f, 1180.568f, 101.395f)), owning_building_guid = 75) @@ -265,7 +597,19 @@ object Ugd01 { // Supai Building10018() def Building10018(): Unit = { // Name: ground_bldg_d_10018 Type: ground_bldg_d GUID: 76, MapID: 10018 - LocalBuilding("ground_bldg_d_10018", 76, 10018, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(838.98f, 1013.84f, 90.81f), Vector3(0f, 0f, 160f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10018", + 76, + 10018, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(838.98f, 1013.84f, 90.81f), + Vector3(0f, 0f, 160f), + ground_bldg_d + ) + ) + ) LocalObject(564, Door.Constructor(Vector3(822.5205f, 1019.814f, 92.545f)), owning_building_guid = 76) LocalObject(568, Door.Constructor(Vector3(832.983f, 997.4103f, 92.545f)), owning_building_guid = 76) LocalObject(572, Door.Constructor(Vector3(844.9537f, 1030.3f, 92.545f)), owning_building_guid = 76) @@ -275,7 +619,19 @@ object Ugd01 { // Supai Building10078() def Building10078(): Unit = { // Name: ground_bldg_d_10078 Type: ground_bldg_d GUID: 77, MapID: 10078 - LocalBuilding("ground_bldg_d_10078", 77, 10078, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1107.02f, 1332.16f, 95.93f), Vector3(0f, 0f, 229f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10078", + 77, + 10078, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1107.02f, 1332.16f, 95.93f), + Vector3(0f, 0f, 229f), + ground_bldg_d + ) + ) + ) LocalObject(626, Door.Constructor(Vector3(1093.795f, 1343.635f, 97.665f)), owning_building_guid = 77) LocalObject(627, Door.Constructor(Vector3(1095.545f, 1318.935f, 97.665f)), owning_building_guid = 77) LocalObject(629, Door.Constructor(Vector3(1118.507f, 1345.349f, 97.665f)), owning_building_guid = 77) @@ -285,7 +641,19 @@ object Ugd01 { // Supai Building10093() def Building10093(): Unit = { // Name: ground_bldg_d_10093 Type: ground_bldg_d GUID: 78, MapID: 10093 - LocalBuilding("ground_bldg_d_10093", 78, 10093, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1201.91f, 1035.28f, 97.66f), Vector3(0f, 0f, 285f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10093", + 78, + 10093, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1201.91f, 1035.28f, 97.66f), + Vector3(0f, 0f, 285f), + ground_bldg_d + ) + ) + ) LocalObject(637, Door.Constructor(Vector3(1185.001f, 1030.733f, 99.395f)), owning_building_guid = 78) LocalObject(638, Door.Constructor(Vector3(1197.399f, 1052.178f, 99.395f)), owning_building_guid = 78) LocalObject(639, Door.Constructor(Vector3(1206.457f, 1018.371f, 99.395f)), owning_building_guid = 78) @@ -295,7 +663,19 @@ object Ugd01 { // Supai Building10023() def Building10023(): Unit = { // Name: ground_bldg_d_10023 Type: ground_bldg_d GUID: 79, MapID: 10023 - LocalBuilding("ground_bldg_d_10023", 79, 10023, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1363.37f, 1403.85f, 88.96f), Vector3(0f, 0f, 60f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10023", + 79, + 10023, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1363.37f, 1403.85f, 88.96f), + Vector3(0f, 0f, 60f), + ground_bldg_d + ) + ) + ) LocalObject(667, Door.Constructor(Vector3(1348.231f, 1412.609f, 90.695f)), owning_building_guid = 79) LocalObject(669, Door.Constructor(Vector3(1354.611f, 1388.711f, 90.695f)), owning_building_guid = 79) LocalObject(673, Door.Constructor(Vector3(1372.111f, 1419.022f, 90.695f)), owning_building_guid = 79) @@ -305,7 +685,19 @@ object Ugd01 { // Supai Building10094() def Building10094(): Unit = { // Name: ground_bldg_d_10094 Type: ground_bldg_d GUID: 80, MapID: 10094 - LocalBuilding("ground_bldg_d_10094", 80, 10094, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1399.93f, 1061.29f, 97.66f), Vector3(0f, 0f, 225f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10094", + 80, + 10094, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1399.93f, 1061.29f, 97.66f), + Vector3(0f, 0f, 225f), + ground_bldg_d + ) + ) + ) LocalObject(680, Door.Constructor(Vector3(1387.56f, 1048.897f, 99.395f)), owning_building_guid = 80) LocalObject(681, Door.Constructor(Vector3(1387.537f, 1073.66f, 99.395f)), owning_building_guid = 80) LocalObject(689, Door.Constructor(Vector3(1412.286f, 1048.911f, 99.395f)), owning_building_guid = 80) @@ -315,7 +707,19 @@ object Ugd01 { // Supai Building10026() def Building10026(): Unit = { // Name: ground_bldg_d_10026 Type: ground_bldg_d GUID: 81, MapID: 10026 - LocalBuilding("ground_bldg_d_10026", 81, 10026, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1492.58f, 1397.16f, 90.81f), Vector3(0f, 0f, 60f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10026", + 81, + 10026, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1492.58f, 1397.16f, 90.81f), + Vector3(0f, 0f, 60f), + ground_bldg_d + ) + ) + ) LocalObject(702, Door.Constructor(Vector3(1477.441f, 1405.919f, 92.545f)), owning_building_guid = 81) LocalObject(705, Door.Constructor(Vector3(1483.821f, 1382.021f, 92.545f)), owning_building_guid = 81) LocalObject(711, Door.Constructor(Vector3(1501.321f, 1412.332f, 92.545f)), owning_building_guid = 81) @@ -325,7 +729,19 @@ object Ugd01 { // Supai Building10020() def Building10020(): Unit = { // Name: ground_bldg_i_10020 Type: ground_bldg_i GUID: 82, MapID: 10020 - LocalBuilding("ground_bldg_i_10020", 82, 10020, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(745.29f, 997.76f, 95.81f), Vector3(0f, 0f, 60f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10020", + 82, + 10020, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(745.29f, 997.76f, 95.81f), + Vector3(0f, 0f, 60f), + ground_bldg_i + ) + ) + ) LocalObject(546, Door.Constructor(Vector3(730.0001f, 978.309f, 97.589f)), owning_building_guid = 82) LocalObject(549, Door.Constructor(Vector3(755.0001f, 1021.61f, 97.589f)), owning_building_guid = 82) } @@ -333,7 +749,19 @@ object Ugd01 { // Supai Building10019() def Building10019(): Unit = { // Name: ground_bldg_i_10019 Type: ground_bldg_i GUID: 83, MapID: 10019 - LocalBuilding("ground_bldg_i_10019", 83, 10019, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(906.71f, 986.08f, 94.15f), Vector3(0f, 0f, 30f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10019", + 83, + 10019, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(906.71f, 986.08f, 94.15f), + Vector3(0f, 0f, 30f), + ground_bldg_i + ) + ) + ) LocalObject(586, Door.Constructor(Vector3(883.743f, 976.8799f, 95.929f)), owning_building_guid = 83) LocalObject(591, Door.Constructor(Vector3(927.0443f, 1001.88f, 95.929f)), owning_building_guid = 83) } @@ -341,7 +769,19 @@ object Ugd01 { // Supai Building10095() def Building10095(): Unit = { // Name: ground_bldg_i_10095 Type: ground_bldg_i GUID: 84, MapID: 10095 - LocalBuilding("ground_bldg_i_10095", 84, 10095, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1253.14f, 913.31f, 102.44f), Vector3(0f, 0f, 150f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10095", + 84, + 10095, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1253.14f, 913.31f, 102.44f), + Vector3(0f, 0f, 150f), + ground_bldg_i + ) + ) + ) LocalObject(641, Door.Constructor(Vector3(1229.29f, 923.0201f, 104.219f)), owning_building_guid = 84) LocalObject(645, Door.Constructor(Vector3(1272.591f, 898.0201f, 104.219f)), owning_building_guid = 84) } @@ -349,7 +789,19 @@ object Ugd01 { // Supai Building10092() def Building10092(): Unit = { // Name: ground_bldg_i_10092 Type: ground_bldg_i GUID: 85, MapID: 10092 - LocalBuilding("ground_bldg_i_10092", 85, 10092, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1307.38f, 1163.11f, 92.1f), Vector3(0f, 0f, 180f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10092", + 85, + 10092, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1307.38f, 1163.11f, 92.1f), + Vector3(0f, 0f, 180f), + ground_bldg_i + ) + ) + ) LocalObject(647, Door.Constructor(Vector3(1281.87f, 1159.594f, 93.879f)), owning_building_guid = 85) LocalObject(666, Door.Constructor(Vector3(1331.87f, 1159.594f, 93.879f)), owning_building_guid = 85) } @@ -357,7 +809,19 @@ object Ugd01 { // Supai Building10024() def Building10024(): Unit = { // Name: ground_bldg_i_10024 Type: ground_bldg_i GUID: 86, MapID: 10024 - LocalBuilding("ground_bldg_i_10024", 86, 10024, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1439.95f, 1456.47f, 91.36f), Vector3(0f, 0f, 335f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10024", + 86, + 10024, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1439.95f, 1456.47f, 91.36f), + Vector3(0f, 0f, 335f), + ground_bldg_i + ) + ) + ) LocalObject(692, Door.Constructor(Vector3(1419.24f, 1470.006f, 93.139f)), owning_building_guid = 86) LocalObject(700, Door.Constructor(Vector3(1464.556f, 1448.876f, 93.139f)), owning_building_guid = 86) } @@ -365,7 +829,19 @@ object Ugd01 { // Supai Building10021() def Building10021(): Unit = { // Name: ground_bldg_i_10021 Type: ground_bldg_i GUID: 87, MapID: 10021 - LocalBuilding("ground_bldg_i_10021", 87, 10021, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1451.54f, 1274.29f, 94.15f), Vector3(0f, 0f, 40f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10021", + 87, + 10021, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1451.54f, 1274.29f, 94.15f), + Vector3(0f, 0f, 40f), + ground_bldg_i + ) + ) + ) LocalObject(695, Door.Constructor(Vector3(1430.52f, 1261.242f, 95.929f)), owning_building_guid = 87) LocalObject(701, Door.Constructor(Vector3(1468.822f, 1293.381f, 95.929f)), owning_building_guid = 87) } @@ -373,42 +849,112 @@ object Ugd01 { // Supai Building10425() def Building10425(): Unit = { // Name: N_Redoubt Type: redoubt GUID: 88, MapID: 10425 - LocalBuilding("N_Redoubt", 88, 10425, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(882.39f, 1471.4f, 90.88f), Vector3(0f, 0f, 335f), redoubt))) - LocalObject(832, CaptureTerminal.Constructor(Vector3(891.3585f, 1490.68f, 101.364f), vanu_control_console), owning_building_guid = 88) + LocalBuilding( + "N_Redoubt", + 88, + 10425, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(882.39f, 1471.4f, 90.88f), Vector3(0f, 0f, 335f), redoubt) + ) + ) + LocalObject( + 832, + CaptureTerminal.Constructor(Vector3(891.3585f, 1490.68f, 101.364f), vanu_control_console), + owning_building_guid = 88 + ) LocalObject(582, Door.Constructor(Vector3(866.5455f, 1478.806f, 92.615f)), owning_building_guid = 88) LocalObject(585, Door.Constructor(Vector3(876.3672f, 1487.536f, 102.659f)), owning_building_guid = 88) LocalObject(587, Door.Constructor(Vector3(883.8498f, 1484.043f, 102.639f)), owning_building_guid = 88) LocalObject(588, Door.Constructor(Vector3(891.1319f, 1480.682f, 102.639f)), owning_building_guid = 88) LocalObject(589, Door.Constructor(Vector3(898.2662f, 1464.015f, 92.615f)), owning_building_guid = 88) LocalObject(590, Door.Constructor(Vector3(898.6056f, 1477.203f, 102.659f)), owning_building_guid = 88) - LocalObject(844, Terminal.Constructor(Vector3(874.4547f, 1454.679f, 90.8358f), vanu_equipment_term), owning_building_guid = 88) - LocalObject(847, Terminal.Constructor(Vector3(890.3133f, 1488.354f, 90.8335f), vanu_equipment_term), owning_building_guid = 88) - LocalObject(791, SpawnTube.Constructor(Vector3(882.39f, 1471.4f, 90.88f), Vector3(0, 0, 205)), owning_building_guid = 88) - LocalObject(777, Painbox.Constructor(Vector3(882.5502f, 1471.646f, 98.669f), painbox_continuous), owning_building_guid = 88) + LocalObject( + 844, + Terminal.Constructor(Vector3(874.4547f, 1454.679f, 90.8358f), vanu_equipment_term), + owning_building_guid = 88 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(890.3133f, 1488.354f, 90.8335f), vanu_equipment_term), + owning_building_guid = 88 + ) + LocalObject( + 791, + SpawnTube.Constructor(Vector3(882.39f, 1471.4f, 90.88f), Vector3(0, 0, 205)), + owning_building_guid = 88 + ) + LocalObject( + 777, + Painbox.Constructor(Vector3(882.5502f, 1471.646f, 98.669f), painbox_continuous), + owning_building_guid = 88 + ) } Building10883() def Building10883(): Unit = { // Name: S_Redoubt Type: redoubt GUID: 89, MapID: 10883 - LocalBuilding("S_Redoubt", 89, 10883, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1399.41f, 850.5f, 91.78f), Vector3(0f, 0f, 72f), redoubt))) - LocalObject(835, CaptureTerminal.Constructor(Vector3(1379.181f, 857.0519f, 102.264f), vanu_control_console), owning_building_guid = 89) + LocalBuilding( + "S_Redoubt", + 89, + 10883, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1399.41f, 850.5f, 91.78f), Vector3(0f, 0f, 72f), redoubt) + ) + ) + LocalObject( + 835, + CaptureTerminal.Constructor(Vector3(1379.181f, 857.0519f, 102.264f), vanu_control_console), + owning_building_guid = 89 + ) LocalObject(678, Door.Constructor(Vector3(1384.128f, 842.5555f, 103.559f)), owning_building_guid = 89) LocalObject(679, Door.Constructor(Vector3(1386.684f, 850.4081f, 103.539f)), owning_building_guid = 89) LocalObject(682, Door.Constructor(Vector3(1389.132f, 858.0455f, 103.539f)), owning_building_guid = 89) LocalObject(683, Door.Constructor(Vector3(1391.674f, 865.8876f, 103.559f)), owning_building_guid = 89) LocalObject(684, Door.Constructor(Vector3(1393.99f, 833.871f, 93.515f)), owning_building_guid = 89) LocalObject(687, Door.Constructor(Vector3(1404.806f, 867.158f, 93.515f)), owning_building_guid = 89) - LocalObject(873, Terminal.Constructor(Vector3(1381.617f, 856.2981f, 91.7335f), vanu_equipment_term), owning_building_guid = 89) - LocalObject(878, Terminal.Constructor(Vector3(1416.974f, 844.6616f, 91.7358f), vanu_equipment_term), owning_building_guid = 89) - LocalObject(792, SpawnTube.Constructor(Vector3(1399.41f, 850.5f, 91.78f), Vector3(0, 0, 108)), owning_building_guid = 89) - LocalObject(782, Painbox.Constructor(Vector3(1399.146f, 850.6291f, 99.569f), painbox_continuous), owning_building_guid = 89) + LocalObject( + 873, + Terminal.Constructor(Vector3(1381.617f, 856.2981f, 91.7335f), vanu_equipment_term), + owning_building_guid = 89 + ) + LocalObject( + 878, + Terminal.Constructor(Vector3(1416.974f, 844.6616f, 91.7358f), vanu_equipment_term), + owning_building_guid = 89 + ) + LocalObject( + 792, + SpawnTube.Constructor(Vector3(1399.41f, 850.5f, 91.78f), Vector3(0, 0, 108)), + owning_building_guid = 89 + ) + LocalObject( + 782, + Painbox.Constructor(Vector3(1399.146f, 850.6291f, 99.569f), painbox_continuous), + owning_building_guid = 89 + ) } Building10175() def Building10175(): Unit = { // Name: S_Stasis Type: vanu_control_point GUID: 171, MapID: 10175 - LocalBuilding("S_Stasis", 171, 10175, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(983.99f, 1034.17f, 94.51f), Vector3(0f, 0f, 281f), vanu_control_point))) - LocalObject(833, CaptureTerminal.Constructor(Vector3(982.6422f, 1030.68f, 124.994f), vanu_control_console), owning_building_guid = 171) + LocalBuilding( + "S_Stasis", + 171, + 10175, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(983.99f, 1034.17f, 94.51f), + Vector3(0f, 0f, 281f), + vanu_control_point + ) + ) + ) + LocalObject( + 833, + CaptureTerminal.Constructor(Vector3(982.6422f, 1030.68f, 124.994f), vanu_control_console), + owning_building_guid = 171 + ) LocalObject(594, Door.Constructor(Vector3(950.054f, 1050.163f, 96.289f)), owning_building_guid = 171) LocalObject(598, Door.Constructor(Vector3(967.2758f, 983.8116f, 96.289f)), owning_building_guid = 171) LocalObject(599, Door.Constructor(Vector3(968.8129f, 1037.51f, 126.289f)), owning_building_guid = 171) @@ -421,27 +967,99 @@ object Ugd01 { // Supai LocalObject(609, Door.Constructor(Vector3(992.8783f, 1042.22f, 126.289f)), owning_building_guid = 171) LocalObject(612, Door.Constructor(Vector3(994.1946f, 1034.132f, 101.23f)), owning_building_guid = 171) LocalObject(617, Door.Constructor(Vector3(1024.07f, 1007.534f, 96.289f)), owning_building_guid = 171) - LocalObject(851, Terminal.Constructor(Vector3(972.808f, 1035.897f, 99.523f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(852, Terminal.Constructor(Vector3(975.0327f, 1039.189f, 99.527f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(853, Terminal.Constructor(Vector3(975.1244f, 1024.373f, 99.527f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(854, Terminal.Constructor(Vector3(978.3792f, 1022.209f, 99.523f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(855, Terminal.Constructor(Vector3(986.3745f, 1041.467f, 99.523f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(856, Terminal.Constructor(Vector3(989.6664f, 1039.242f, 99.527f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(857, Terminal.Constructor(Vector3(989.7583f, 1024.426f, 99.527f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(858, Terminal.Constructor(Vector3(991.983f, 1027.718f, 99.523f), vanu_equipment_term), owning_building_guid = 171) - LocalObject(897, SpawnTube.Constructor(Vector3(982.4083f, 1031.825f, 99.649f), Vector3(0, 0, 259)), owning_building_guid = 171) - LocalObject(778, Painbox.Constructor(Vector3(982.0579f, 1032.05f, 108.8518f), painbox_continuous), owning_building_guid = 171) - LocalObject(783, Painbox.Constructor(Vector3(968.9275f, 1029.522f, 103.4f), painbox_door_radius_continuous), owning_building_guid = 171) - LocalObject(784, Painbox.Constructor(Vector3(979.7823f, 1045.896f, 102.8f), painbox_door_radius_continuous), owning_building_guid = 171) - LocalObject(785, Painbox.Constructor(Vector3(985.6085f, 1017.388f, 103.4f), painbox_door_radius_continuous), owning_building_guid = 171) - LocalObject(786, Painbox.Constructor(Vector3(996.1259f, 1034.449f, 103.4f), painbox_door_radius_continuous), owning_building_guid = 171) + LocalObject( + 851, + Terminal.Constructor(Vector3(972.808f, 1035.897f, 99.523f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(975.0327f, 1039.189f, 99.527f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(975.1244f, 1024.373f, 99.527f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(978.3792f, 1022.209f, 99.523f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(986.3745f, 1041.467f, 99.523f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 856, + Terminal.Constructor(Vector3(989.6664f, 1039.242f, 99.527f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(989.7583f, 1024.426f, 99.527f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(991.983f, 1027.718f, 99.523f), vanu_equipment_term), + owning_building_guid = 171 + ) + LocalObject( + 897, + SpawnTube.Constructor(Vector3(982.4083f, 1031.825f, 99.649f), Vector3(0, 0, 259)), + owning_building_guid = 171 + ) + LocalObject( + 778, + Painbox.Constructor(Vector3(982.0579f, 1032.05f, 108.8518f), painbox_continuous), + owning_building_guid = 171 + ) + LocalObject( + 783, + Painbox.Constructor(Vector3(968.9275f, 1029.522f, 103.4f), painbox_door_radius_continuous), + owning_building_guid = 171 + ) + LocalObject( + 784, + Painbox.Constructor(Vector3(979.7823f, 1045.896f, 102.8f), painbox_door_radius_continuous), + owning_building_guid = 171 + ) + LocalObject( + 785, + Painbox.Constructor(Vector3(985.6085f, 1017.388f, 103.4f), painbox_door_radius_continuous), + owning_building_guid = 171 + ) + LocalObject( + 786, + Painbox.Constructor(Vector3(996.1259f, 1034.449f, 103.4f), painbox_door_radius_continuous), + owning_building_guid = 171 + ) } Building10000() def Building10000(): Unit = { // Name: N_Stasis Type: vanu_control_point GUID: 172, MapID: 10000 - LocalBuilding("N_Stasis", 172, 10000, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1316.27f, 1321.48f, 88.98f), Vector3(0f, 0f, 37f), vanu_control_point))) - LocalObject(834, CaptureTerminal.Constructor(Vector3(1319.998f, 1321.799f, 119.464f), vanu_control_console), owning_building_guid = 172) + LocalBuilding( + "N_Stasis", + 172, + 10000, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1316.27f, 1321.48f, 88.98f), + Vector3(0f, 0f, 37f), + vanu_control_point + ) + ) + ) + LocalObject( + 834, + CaptureTerminal.Constructor(Vector3(1319.998f, 1321.799f, 119.464f), vanu_control_console), + owning_building_guid = 172 + ) LocalObject(646, Door.Constructor(Vector3(1280.496f, 1312.072f, 90.759f)), owning_building_guid = 172) LocalObject(652, Door.Constructor(Vector3(1305.138f, 1325.94f, 120.759f)), owning_building_guid = 172) LocalObject(654, Door.Constructor(Vector3(1309.486f, 1313.883f, 95.7f)), owning_building_guid = 172) @@ -454,26 +1072,94 @@ object Ugd01 { // Supai LocalObject(664, Door.Constructor(Vector3(1326.274f, 1311.501f, 95.7f)), owning_building_guid = 172) LocalObject(665, Door.Constructor(Vector3(1328.656f, 1328.289f, 95.7f)), owning_building_guid = 172) LocalObject(672, Door.Constructor(Vector3(1368.859f, 1328.533f, 90.759f)), owning_building_guid = 172) - LocalObject(863, Terminal.Constructor(Vector3(1308.666f, 1320.424f, 93.993f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(864, Terminal.Constructor(Vector3(1309.223f, 1324.358f, 93.997f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(865, Terminal.Constructor(Vector3(1315.686f, 1311.229f, 93.997f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(866, Terminal.Constructor(Vector3(1318.565f, 1331.493f, 93.993f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(867, Terminal.Constructor(Vector3(1319.62f, 1310.673f, 93.993f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(868, Terminal.Constructor(Vector3(1322.5f, 1330.936f, 93.997f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(869, Terminal.Constructor(Vector3(1328.962f, 1317.806f, 93.997f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(870, Terminal.Constructor(Vector3(1329.48f, 1321.681f, 93.993f), vanu_equipment_term), owning_building_guid = 172) - LocalObject(898, SpawnTube.Constructor(Vector3(1319.071f, 1321.086f, 94.119f), Vector3(0, 0, 143)), owning_building_guid = 172) - LocalObject(781, Painbox.Constructor(Vector3(1319.023f, 1320.673f, 103.3218f), painbox_continuous), owning_building_guid = 172) - LocalObject(787, Painbox.Constructor(Vector3(1307.576f, 1312.558f, 97.27f), painbox_door_radius_continuous), owning_building_guid = 172) - LocalObject(788, Painbox.Constructor(Vector3(1310.699f, 1332.265f, 97.87f), painbox_door_radius_continuous), owning_building_guid = 172) - LocalObject(789, Painbox.Constructor(Vector3(1327.051f, 1309.979f, 97.87f), painbox_door_radius_continuous), owning_building_guid = 172) - LocalObject(790, Painbox.Constructor(Vector3(1330.644f, 1330.292f, 97.87f), painbox_door_radius_continuous), owning_building_guid = 172) + LocalObject( + 863, + Terminal.Constructor(Vector3(1308.666f, 1320.424f, 93.993f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(1309.223f, 1324.358f, 93.997f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 865, + Terminal.Constructor(Vector3(1315.686f, 1311.229f, 93.997f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 866, + Terminal.Constructor(Vector3(1318.565f, 1331.493f, 93.993f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 867, + Terminal.Constructor(Vector3(1319.62f, 1310.673f, 93.993f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 868, + Terminal.Constructor(Vector3(1322.5f, 1330.936f, 93.997f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 869, + Terminal.Constructor(Vector3(1328.962f, 1317.806f, 93.997f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 870, + Terminal.Constructor(Vector3(1329.48f, 1321.681f, 93.993f), vanu_equipment_term), + owning_building_guid = 172 + ) + LocalObject( + 898, + SpawnTube.Constructor(Vector3(1319.071f, 1321.086f, 94.119f), Vector3(0, 0, 143)), + owning_building_guid = 172 + ) + LocalObject( + 781, + Painbox.Constructor(Vector3(1319.023f, 1320.673f, 103.3218f), painbox_continuous), + owning_building_guid = 172 + ) + LocalObject( + 787, + Painbox.Constructor(Vector3(1307.576f, 1312.558f, 97.27f), painbox_door_radius_continuous), + owning_building_guid = 172 + ) + LocalObject( + 788, + Painbox.Constructor(Vector3(1310.699f, 1332.265f, 97.87f), painbox_door_radius_continuous), + owning_building_guid = 172 + ) + LocalObject( + 789, + Painbox.Constructor(Vector3(1327.051f, 1309.979f, 97.87f), painbox_door_radius_continuous), + owning_building_guid = 172 + ) + LocalObject( + 790, + Painbox.Constructor(Vector3(1330.644f, 1330.292f, 97.87f), painbox_door_radius_continuous), + owning_building_guid = 172 + ) } Building10015() def Building10015(): Unit = { // Name: Core Type: vanu_core GUID: 173, MapID: 10015 - LocalBuilding("Core", 173, 10015, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1151.45f, 1177.46f, 95.63f), Vector3(0f, 0f, 322f), vanu_core))) + LocalBuilding( + "Core", + 173, + 10015, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1151.45f, 1177.46f, 95.63f), + Vector3(0f, 0f, 322f), + vanu_core + ) + ) + ) LocalObject(628, Door.Constructor(Vector3(1118.471f, 1188.026f, 102.418f)), owning_building_guid = 173) LocalObject(631, Door.Constructor(Vector3(1123.351f, 1148.027f, 102.418f)), owning_building_guid = 173) LocalObject(632, Door.Constructor(Vector3(1123.351f, 1148.027f, 107.418f)), owning_building_guid = 173) @@ -485,8 +1171,24 @@ object Ugd01 { // Supai Building10001() def Building10001(): Unit = { // Name: N_ATPlant Type: vanu_vehicle_station GUID: 216, MapID: 10001 - LocalBuilding("N_ATPlant", 216, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(851.77f, 1352.04f, 100.81f), Vector3(0f, 0f, 321f), vanu_vehicle_station))) - LocalObject(831, CaptureTerminal.Constructor(Vector3(796.4887f, 1369.299f, 131.294f), vanu_control_console), owning_building_guid = 216) + LocalBuilding( + "N_ATPlant", + 216, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(851.77f, 1352.04f, 100.81f), + Vector3(0f, 0f, 321f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 831, + CaptureTerminal.Constructor(Vector3(796.4887f, 1369.299f, 131.294f), vanu_control_console), + owning_building_guid = 216 + ) LocalObject(555, Door.Constructor(Vector3(795.9202f, 1354.002f, 132.589f)), owning_building_guid = 216) LocalObject(557, Door.Constructor(Vector3(801.1134f, 1360.407f, 132.569f)), owning_building_guid = 216) LocalObject(558, Door.Constructor(Vector3(806.1349f, 1366.66f, 132.569f)), owning_building_guid = 216) @@ -496,21 +1198,75 @@ object Ugd01 { // Supai LocalObject(569, Door.Constructor(Vector3(833.7928f, 1375.346f, 122.501f)), owning_building_guid = 216) LocalObject(577, Door.Constructor(Vector3(857.54f, 1366.535f, 102.589f)), owning_building_guid = 216) LocalObject(721, Door.Constructor(Vector3(790.5573f, 1379.225f, 107.443f)), owning_building_guid = 216) - LocalObject(826, Terminal.Constructor(Vector3(814.9385f, 1336.645f, 120.727f), vanu_air_vehicle_term), owning_building_guid = 216) - LocalObject(900, VehicleSpawnPad.Constructor(Vector3(823.2328f, 1339.834f, 120.726f), vanu_vehicle_creation_pad, Vector3(0, 0, 129)), owning_building_guid = 216, terminal_guid = 826) - LocalObject(827, Terminal.Constructor(Vector3(837.2114f, 1364.164f, 120.727f), vanu_air_vehicle_term), owning_building_guid = 216) - LocalObject(901, VehicleSpawnPad.Constructor(Vector3(835.8293f, 1355.389f, 120.726f), vanu_vehicle_creation_pad, Vector3(0, 0, 129)), owning_building_guid = 216, terminal_guid = 827) - LocalObject(839, Terminal.Constructor(Vector3(813.1694f, 1345.502f, 103.31f), vanu_equipment_term), owning_building_guid = 216) - LocalObject(840, Terminal.Constructor(Vector3(828.273f, 1364.154f, 103.31f), vanu_equipment_term), owning_building_guid = 216) - LocalObject(905, Terminal.Constructor(Vector3(816.3887f, 1358.16f, 105.81f), vanu_vehicle_term), owning_building_guid = 216) - LocalObject(899, VehicleSpawnPad.Constructor(Vector3(804.6929f, 1367.77f, 103.215f), vanu_vehicle_creation_pad, Vector3(0, 0, -51)), owning_building_guid = 216, terminal_guid = 905) + LocalObject( + 826, + Terminal.Constructor(Vector3(814.9385f, 1336.645f, 120.727f), vanu_air_vehicle_term), + owning_building_guid = 216 + ) + LocalObject( + 900, + VehicleSpawnPad + .Constructor(Vector3(823.2328f, 1339.834f, 120.726f), vanu_vehicle_creation_pad, Vector3(0, 0, 129)), + owning_building_guid = 216, + terminal_guid = 826 + ) + LocalObject( + 827, + Terminal.Constructor(Vector3(837.2114f, 1364.164f, 120.727f), vanu_air_vehicle_term), + owning_building_guid = 216 + ) + LocalObject( + 901, + VehicleSpawnPad + .Constructor(Vector3(835.8293f, 1355.389f, 120.726f), vanu_vehicle_creation_pad, Vector3(0, 0, 129)), + owning_building_guid = 216, + terminal_guid = 827 + ) + LocalObject( + 839, + Terminal.Constructor(Vector3(813.1694f, 1345.502f, 103.31f), vanu_equipment_term), + owning_building_guid = 216 + ) + LocalObject( + 840, + Terminal.Constructor(Vector3(828.273f, 1364.154f, 103.31f), vanu_equipment_term), + owning_building_guid = 216 + ) + LocalObject( + 905, + Terminal.Constructor(Vector3(816.3887f, 1358.16f, 105.81f), vanu_vehicle_term), + owning_building_guid = 216 + ) + LocalObject( + 899, + VehicleSpawnPad + .Constructor(Vector3(804.6929f, 1367.77f, 103.215f), vanu_vehicle_creation_pad, Vector3(0, 0, -51)), + owning_building_guid = 216, + terminal_guid = 905 + ) } Building10314() def Building10314(): Unit = { // Name: S_ATPlant Type: vanu_vehicle_station GUID: 217, MapID: 10314 - LocalBuilding("S_ATPlant", 217, 10314, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1467.03f, 931.27f, 94.78f), Vector3(0f, 0f, 98f), vanu_vehicle_station))) - LocalObject(836, CaptureTerminal.Constructor(Vector3(1495.69f, 880.9459f, 125.264f), vanu_control_console), owning_building_guid = 217) + LocalBuilding( + "S_ATPlant", + 217, + 10314, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1467.03f, 931.27f, 94.78f), + Vector3(0f, 0f, 98f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 836, + CaptureTerminal.Constructor(Vector3(1495.69f, 880.9459f, 125.264f), vanu_control_console), + owning_building_guid = 217 + ) LocalObject(697, Door.Constructor(Vector3(1452.924f, 924.604f, 96.559f)), owning_building_guid = 217) LocalObject(699, Door.Constructor(Vector3(1464.283f, 901.9645f, 116.471f)), owning_building_guid = 217) LocalObject(704, Door.Constructor(Vector3(1482.297f, 888.3389f, 126.559f)), owning_building_guid = 217) @@ -520,168 +1276,562 @@ object Ugd01 { // Supai LocalObject(715, Door.Constructor(Vector3(1508.893f, 932.47f, 116.483f)), owning_building_guid = 217) LocalObject(716, Door.Constructor(Vector3(1516.804f, 933.5817f, 96.559f)), owning_building_guid = 217) LocalObject(722, Door.Constructor(Vector3(1493.258f, 869.6415f, 101.413f)), owning_building_guid = 217) - LocalObject(828, Terminal.Constructor(Vector3(1469.409f, 912.4742f, 114.697f), vanu_air_vehicle_term), owning_building_guid = 217) - LocalObject(902, VehicleSpawnPad.Constructor(Vector3(1476.404f, 917.949f, 114.696f), vanu_vehicle_creation_pad, Vector3(0, 0, -8)), owning_building_guid = 217, terminal_guid = 828) - LocalObject(829, Terminal.Constructor(Vector3(1504.466f, 917.4103f, 114.697f), vanu_air_vehicle_term), owning_building_guid = 217) - LocalObject(904, VehicleSpawnPad.Constructor(Vector3(1496.225f, 920.7347f, 114.696f), vanu_vehicle_creation_pad, Vector3(0, 0, -8)), owning_building_guid = 217, terminal_guid = 829) - LocalObject(881, Terminal.Constructor(Vector3(1475.953f, 906.3857f, 97.28f), vanu_equipment_term), owning_building_guid = 217) - LocalObject(882, Terminal.Constructor(Vector3(1499.719f, 909.7258f, 97.28f), vanu_equipment_term), owning_building_guid = 217) - LocalObject(906, Terminal.Constructor(Vector3(1488.732f, 902.664f, 99.78f), vanu_vehicle_term), owning_building_guid = 217) - LocalObject(903, VehicleSpawnPad.Constructor(Vector3(1490.732f, 887.6593f, 97.185f), vanu_vehicle_creation_pad, Vector3(0, 0, 172)), owning_building_guid = 217, terminal_guid = 906) + LocalObject( + 828, + Terminal.Constructor(Vector3(1469.409f, 912.4742f, 114.697f), vanu_air_vehicle_term), + owning_building_guid = 217 + ) + LocalObject( + 902, + VehicleSpawnPad + .Constructor(Vector3(1476.404f, 917.949f, 114.696f), vanu_vehicle_creation_pad, Vector3(0, 0, -8)), + owning_building_guid = 217, + terminal_guid = 828 + ) + LocalObject( + 829, + Terminal.Constructor(Vector3(1504.466f, 917.4103f, 114.697f), vanu_air_vehicle_term), + owning_building_guid = 217 + ) + LocalObject( + 904, + VehicleSpawnPad + .Constructor(Vector3(1496.225f, 920.7347f, 114.696f), vanu_vehicle_creation_pad, Vector3(0, 0, -8)), + owning_building_guid = 217, + terminal_guid = 829 + ) + LocalObject( + 881, + Terminal.Constructor(Vector3(1475.953f, 906.3857f, 97.28f), vanu_equipment_term), + owning_building_guid = 217 + ) + LocalObject( + 882, + Terminal.Constructor(Vector3(1499.719f, 909.7258f, 97.28f), vanu_equipment_term), + owning_building_guid = 217 + ) + LocalObject( + 906, + Terminal.Constructor(Vector3(1488.732f, 902.664f, 99.78f), vanu_vehicle_term), + owning_building_guid = 217 + ) + LocalObject( + 903, + VehicleSpawnPad + .Constructor(Vector3(1490.732f, 887.6593f, 97.185f), vanu_vehicle_creation_pad, Vector3(0, 0, 172)), + owning_building_guid = 217, + terminal_guid = 906 + ) } Building10230() def Building10230(): Unit = { // Name: GW_Cavern1_W Type: warpgate_cavern GUID: 218, MapID: 10230 - LocalBuilding("GW_Cavern1_W", 218, 10230, FoundationBuilder(WarpGate.Structure(Vector3(157.44f, 1032.63f, 70.89f)))) + LocalBuilding( + "GW_Cavern1_W", + 218, + 10230, + FoundationBuilder(WarpGate.Structure(Vector3(157.44f, 1032.63f, 70.89f))) + ) } Building10229() def Building10229(): Unit = { // Name: GW_Cavern1_S Type: warpgate_cavern GUID: 219, MapID: 10229 - LocalBuilding("GW_Cavern1_S", 219, 10229, FoundationBuilder(WarpGate.Structure(Vector3(1017.57f, 318.45f, 90.98f)))) + LocalBuilding( + "GW_Cavern1_S", + 219, + 10229, + FoundationBuilder(WarpGate.Structure(Vector3(1017.57f, 318.45f, 90.98f))) + ) } Building10231() def Building10231(): Unit = { // Name: GW_Cavern1_N Type: warpgate_cavern GUID: 220, MapID: 10231 - LocalBuilding("GW_Cavern1_N", 220, 10231, FoundationBuilder(WarpGate.Structure(Vector3(1030.12f, 2080.82f, 91.42f)))) + LocalBuilding( + "GW_Cavern1_N", + 220, + 10231, + FoundationBuilder(WarpGate.Structure(Vector3(1030.12f, 2080.82f, 91.42f))) + ) } Building10228() def Building10228(): Unit = { // Name: GW_Cavern1_E Type: warpgate_cavern GUID: 221, MapID: 10228 - LocalBuilding("GW_Cavern1_E", 221, 10228, FoundationBuilder(WarpGate.Structure(Vector3(2143.2f, 1401.86f, 91.44f)))) + LocalBuilding( + "GW_Cavern1_E", + 221, + 10228, + FoundationBuilder(WarpGate.Structure(Vector3(2143.2f, 1401.86f, 91.44f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(837, Terminal.Constructor(Vector3(788.95f, 883.67f, 109.24f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(838, Terminal.Constructor(Vector3(797.79f, 881.34f, 109.24f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(841, Terminal.Constructor(Vector3(835f, 1015.28f, 92.77f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(842, Terminal.Constructor(Vector3(843.21f, 1012.32f, 92.77f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(843, Terminal.Constructor(Vector3(869.22f, 1466.66f, 90.84f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(845, Terminal.Constructor(Vector3(877.77f, 1484.74f, 90.84f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(846, Terminal.Constructor(Vector3(886.94f, 1458.3f, 90.84f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(848, Terminal.Constructor(Vector3(895.74f, 1476.22f, 90.84f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(849, Terminal.Constructor(Vector3(924.69f, 1345.47f, 162.79f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(850, Terminal.Constructor(Vector3(955.27f, 1345.54f, 162.79f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(859, Terminal.Constructor(Vector3(1029.84f, 1332.43f, 96.39f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(860, Terminal.Constructor(Vector3(1042.81f, 1333.65f, 96.39f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(861, Terminal.Constructor(Vector3(1197.72f, 1034.24f, 99.62f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(862, Terminal.Constructor(Vector3(1206.08f, 1036.35f, 99.62f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(871, Terminal.Constructor(Vector3(1369.5f, 1032.42f, 165.16f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(872, Terminal.Constructor(Vector3(1380.5f, 1019.15f, 165.16f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(874, Terminal.Constructor(Vector3(1387.02f, 846.09f, 91.74f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(875, Terminal.Constructor(Vector3(1393.14f, 864.93f, 91.74f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(876, Terminal.Constructor(Vector3(1405.83f, 839.8f, 91.74f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(877, Terminal.Constructor(Vector3(1411.95f, 858.67f, 91.74f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(879, Terminal.Constructor(Vector3(1447.85f, 1272.05f, 94.15f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(880, Terminal.Constructor(Vector3(1451.55f, 1282.54f, 94.15f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(883, Terminal.Constructor(Vector3(1513.39f, 1453.92f, 105.26f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(884, Terminal.Constructor(Vector3(1532.47f, 1434.84f, 105.26f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(13, ProximityTerminal.Constructor(Vector3(1028.75f, 1057.12f, 86.98f), crystals_health_a), owning_building_guid = 0) - LocalObject(14, ProximityTerminal.Constructor(Vector3(1228.83f, 1326.29f, 80.38f), crystals_health_a), owning_building_guid = 0) - LocalObject(15, ProximityTerminal.Constructor(Vector3(1339.39f, 889.47f, 83.68f), crystals_health_a), owning_building_guid = 0) - LocalObject(16, ProximityTerminal.Constructor(Vector3(933.67f, 1249.01f, 80.57f), crystals_health_b), owning_building_guid = 0) - LocalObject(17, ProximityTerminal.Constructor(Vector3(1412.5f, 1170.17f, 82.79f), crystals_health_b), owning_building_guid = 0) - LocalObject(747, ProximityTerminal.Constructor(Vector3(747.68f, 914.68f, 106.82f), crystals_health_a), owning_building_guid = 0) - LocalObject(748, ProximityTerminal.Constructor(Vector3(976.42f, 1227.64f, 108.53f), crystals_health_a), owning_building_guid = 0) - LocalObject(749, ProximityTerminal.Constructor(Vector3(1007.68f, 1525.71f, 92.55f), crystals_health_a), owning_building_guid = 0) - LocalObject(750, ProximityTerminal.Constructor(Vector3(1318.15f, 980.96f, 107.52f), crystals_health_a), owning_building_guid = 0) - LocalObject(751, ProximityTerminal.Constructor(Vector3(1367.72f, 1265.01f, 90.71f), crystals_health_a), owning_building_guid = 0) - LocalObject(752, ProximityTerminal.Constructor(Vector3(839.12f, 1165.86f, 101.62f), crystals_health_b), owning_building_guid = 0) - LocalObject(753, ProximityTerminal.Constructor(Vector3(854.97f, 902.18f, 90.68f), crystals_health_b), owning_building_guid = 0) - LocalObject(754, ProximityTerminal.Constructor(Vector3(965.94f, 927.78f, 169.4f), crystals_health_b), owning_building_guid = 0) - LocalObject(755, ProximityTerminal.Constructor(Vector3(1036.99f, 1176.35f, 160.71f), crystals_health_b), owning_building_guid = 0) - LocalObject(756, ProximityTerminal.Constructor(Vector3(1202.76f, 1099.57f, 172.13f), crystals_health_b), owning_building_guid = 0) - LocalObject(757, ProximityTerminal.Constructor(Vector3(1378.14f, 1364.07f, 159.37f), crystals_health_b), owning_building_guid = 0) - LocalObject(758, ProximityTerminal.Constructor(Vector3(1400.04f, 1061.4f, 99.62f), crystals_health_b), owning_building_guid = 0) - LocalObject(759, ProximityTerminal.Constructor(Vector3(1493f, 1396.91f, 92.77f), crystals_health_b), owning_building_guid = 0) - LocalObject(174, FacilityTurret.Constructor(Vector3(720.34f, 879.21f, 107.12f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 837, + Terminal.Constructor(Vector3(788.95f, 883.67f, 109.24f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 838, + Terminal.Constructor(Vector3(797.79f, 881.34f, 109.24f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 841, + Terminal.Constructor(Vector3(835f, 1015.28f, 92.77f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 842, + Terminal.Constructor(Vector3(843.21f, 1012.32f, 92.77f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 843, + Terminal.Constructor(Vector3(869.22f, 1466.66f, 90.84f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(877.77f, 1484.74f, 90.84f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(886.94f, 1458.3f, 90.84f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(895.74f, 1476.22f, 90.84f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 849, + Terminal.Constructor(Vector3(924.69f, 1345.47f, 162.79f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(955.27f, 1345.54f, 162.79f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(1029.84f, 1332.43f, 96.39f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(1042.81f, 1333.65f, 96.39f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(1197.72f, 1034.24f, 99.62f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(1206.08f, 1036.35f, 99.62f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 871, + Terminal.Constructor(Vector3(1369.5f, 1032.42f, 165.16f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 872, + Terminal.Constructor(Vector3(1380.5f, 1019.15f, 165.16f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 874, + Terminal.Constructor(Vector3(1387.02f, 846.09f, 91.74f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 875, + Terminal.Constructor(Vector3(1393.14f, 864.93f, 91.74f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 876, + Terminal.Constructor(Vector3(1405.83f, 839.8f, 91.74f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 877, + Terminal.Constructor(Vector3(1411.95f, 858.67f, 91.74f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 879, + Terminal.Constructor(Vector3(1447.85f, 1272.05f, 94.15f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 880, + Terminal.Constructor(Vector3(1451.55f, 1282.54f, 94.15f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 883, + Terminal.Constructor(Vector3(1513.39f, 1453.92f, 105.26f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 884, + Terminal.Constructor(Vector3(1532.47f, 1434.84f, 105.26f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 13, + ProximityTerminal.Constructor(Vector3(1028.75f, 1057.12f, 86.98f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 14, + ProximityTerminal.Constructor(Vector3(1228.83f, 1326.29f, 80.38f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 15, + ProximityTerminal.Constructor(Vector3(1339.39f, 889.47f, 83.68f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 16, + ProximityTerminal.Constructor(Vector3(933.67f, 1249.01f, 80.57f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 17, + ProximityTerminal.Constructor(Vector3(1412.5f, 1170.17f, 82.79f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 747, + ProximityTerminal.Constructor(Vector3(747.68f, 914.68f, 106.82f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 748, + ProximityTerminal.Constructor(Vector3(976.42f, 1227.64f, 108.53f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 749, + ProximityTerminal.Constructor(Vector3(1007.68f, 1525.71f, 92.55f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 750, + ProximityTerminal.Constructor(Vector3(1318.15f, 980.96f, 107.52f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 751, + ProximityTerminal.Constructor(Vector3(1367.72f, 1265.01f, 90.71f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 752, + ProximityTerminal.Constructor(Vector3(839.12f, 1165.86f, 101.62f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 753, + ProximityTerminal.Constructor(Vector3(854.97f, 902.18f, 90.68f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 754, + ProximityTerminal.Constructor(Vector3(965.94f, 927.78f, 169.4f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 755, + ProximityTerminal.Constructor(Vector3(1036.99f, 1176.35f, 160.71f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 756, + ProximityTerminal.Constructor(Vector3(1202.76f, 1099.57f, 172.13f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 757, + ProximityTerminal.Constructor(Vector3(1378.14f, 1364.07f, 159.37f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 758, + ProximityTerminal.Constructor(Vector3(1400.04f, 1061.4f, 99.62f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 759, + ProximityTerminal.Constructor(Vector3(1493f, 1396.91f, 92.77f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 174, + FacilityTurret.Constructor(Vector3(720.34f, 879.21f, 107.12f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(174, 5000) - LocalObject(175, FacilityTurret.Constructor(Vector3(740.47f, 873.42f, 105.56f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 175, + FacilityTurret.Constructor(Vector3(740.47f, 873.42f, 105.56f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(175, 5001) - LocalObject(176, FacilityTurret.Constructor(Vector3(772.77f, 1316.41f, 111.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 176, + FacilityTurret.Constructor(Vector3(772.77f, 1316.41f, 111.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(176, 5002) - LocalObject(177, FacilityTurret.Constructor(Vector3(775.35f, 1074.02f, 87.97f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 177, + FacilityTurret.Constructor(Vector3(775.35f, 1074.02f, 87.97f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(177, 5003) - LocalObject(178, FacilityTurret.Constructor(Vector3(793.33f, 1423.68f, 109.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 178, + FacilityTurret.Constructor(Vector3(793.33f, 1423.68f, 109.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(178, 5004) - LocalObject(179, FacilityTurret.Constructor(Vector3(808.76f, 1186.28f, 92.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 179, + FacilityTurret.Constructor(Vector3(808.76f, 1186.28f, 92.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(179, 5005) - LocalObject(180, FacilityTurret.Constructor(Vector3(845.37f, 966.24f, 85.29f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 180, + FacilityTurret.Constructor(Vector3(845.37f, 966.24f, 85.29f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(180, 5006) - LocalObject(181, FacilityTurret.Constructor(Vector3(860.94f, 953.48f, 86.97f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 181, + FacilityTurret.Constructor(Vector3(860.94f, 953.48f, 86.97f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(181, 5007) - LocalObject(182, FacilityTurret.Constructor(Vector3(861.43f, 1323.56f, 110.16f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 182, + FacilityTurret.Constructor(Vector3(861.43f, 1323.56f, 110.16f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(182, 5008) - LocalObject(183, FacilityTurret.Constructor(Vector3(873.54f, 1419.93f, 97f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 183, + FacilityTurret.Constructor(Vector3(873.54f, 1419.93f, 97f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(183, 5009) - LocalObject(184, FacilityTurret.Constructor(Vector3(886.06f, 1246.28f, 100.59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 184, + FacilityTurret.Constructor(Vector3(886.06f, 1246.28f, 100.59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(184, 5010) - LocalObject(185, FacilityTurret.Constructor(Vector3(906.88f, 838.1f, 84.73f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 185, + FacilityTurret.Constructor(Vector3(906.88f, 838.1f, 84.73f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(185, 5011) - LocalObject(186, FacilityTurret.Constructor(Vector3(914.64f, 1059.49f, 93.58f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 186, + FacilityTurret.Constructor(Vector3(914.64f, 1059.49f, 93.58f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(186, 5012) - LocalObject(187, FacilityTurret.Constructor(Vector3(935.76f, 958.02f, 93.48f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 187, + FacilityTurret.Constructor(Vector3(935.76f, 958.02f, 93.48f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(187, 5013) - LocalObject(188, FacilityTurret.Constructor(Vector3(942.76f, 1368.39f, 99.29f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 188, + FacilityTurret.Constructor(Vector3(942.76f, 1368.39f, 99.29f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(188, 5014) - LocalObject(189, FacilityTurret.Constructor(Vector3(955.06f, 1068.5f, 124.51f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 189, + FacilityTurret.Constructor(Vector3(955.06f, 1068.5f, 124.51f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(189, 5015) - LocalObject(190, FacilityTurret.Constructor(Vector3(978.59f, 1189.75f, 92.88f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 190, + FacilityTurret.Constructor(Vector3(978.59f, 1189.75f, 92.88f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(190, 5016) - LocalObject(191, FacilityTurret.Constructor(Vector3(1008.32f, 1024.12f, 124.51f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 191, + FacilityTurret.Constructor(Vector3(1008.32f, 1024.12f, 124.51f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(191, 5017) - LocalObject(192, FacilityTurret.Constructor(Vector3(1037.51f, 1353.92f, 96.39f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 192, + FacilityTurret.Constructor(Vector3(1037.51f, 1353.92f, 96.39f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(192, 5018) - LocalObject(193, FacilityTurret.Constructor(Vector3(1085.44f, 1343.35f, 95.93f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 193, + FacilityTurret.Constructor(Vector3(1085.44f, 1343.35f, 95.93f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(193, 5019) - LocalObject(194, FacilityTurret.Constructor(Vector3(1191.17f, 911.53f, 105.76f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 194, + FacilityTurret.Constructor(Vector3(1191.17f, 911.53f, 105.76f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(194, 5020) - LocalObject(195, FacilityTurret.Constructor(Vector3(1248.76f, 1092.9f, 97.89f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 195, + FacilityTurret.Constructor(Vector3(1248.76f, 1092.9f, 97.89f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(195, 5021) - LocalObject(196, FacilityTurret.Constructor(Vector3(1265.67f, 890.42f, 111.02f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 196, + FacilityTurret.Constructor(Vector3(1265.67f, 890.42f, 111.02f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(196, 5022) - LocalObject(197, FacilityTurret.Constructor(Vector3(1283.75f, 1144.15f, 99.78f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 197, + FacilityTurret.Constructor(Vector3(1283.75f, 1144.15f, 99.78f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(197, 5023) - LocalObject(198, FacilityTurret.Constructor(Vector3(1285.54f, 1321.81f, 118.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 198, + FacilityTurret.Constructor(Vector3(1285.54f, 1321.81f, 118.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(198, 5024) - LocalObject(199, FacilityTurret.Constructor(Vector3(1343.9f, 1308.33f, 118.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 199, + FacilityTurret.Constructor(Vector3(1343.9f, 1308.33f, 118.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(199, 5025) - LocalObject(200, FacilityTurret.Constructor(Vector3(1358.42f, 1146.2f, 96.45f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 200, + FacilityTurret.Constructor(Vector3(1358.42f, 1146.2f, 96.45f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(200, 5026) - LocalObject(201, FacilityTurret.Constructor(Vector3(1380.38f, 1299.1f, 86.78f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 201, + FacilityTurret.Constructor(Vector3(1380.38f, 1299.1f, 86.78f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(201, 5027) - LocalObject(202, FacilityTurret.Constructor(Vector3(1380.88f, 954.88f, 101.67f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 202, + FacilityTurret.Constructor(Vector3(1380.88f, 954.88f, 101.67f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(202, 5028) - LocalObject(203, FacilityTurret.Constructor(Vector3(1388.61f, 1370.67f, 89.69f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 203, + FacilityTurret.Constructor(Vector3(1388.61f, 1370.67f, 89.69f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(203, 5029) - LocalObject(204, FacilityTurret.Constructor(Vector3(1414.46f, 1410f, 90.45f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 204, + FacilityTurret.Constructor(Vector3(1414.46f, 1410f, 90.45f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(204, 5030) - LocalObject(205, FacilityTurret.Constructor(Vector3(1416.89f, 1043.36f, 97.66f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 205, + FacilityTurret.Constructor(Vector3(1416.89f, 1043.36f, 97.66f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(205, 5031) - LocalObject(206, FacilityTurret.Constructor(Vector3(1427.18f, 1482.32f, 99.94f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 206, + FacilityTurret.Constructor(Vector3(1427.18f, 1482.32f, 99.94f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(206, 5032) - LocalObject(207, FacilityTurret.Constructor(Vector3(1457.56f, 1304.19f, 101.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 207, + FacilityTurret.Constructor(Vector3(1457.56f, 1304.19f, 101.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(207, 5033) - LocalObject(208, FacilityTurret.Constructor(Vector3(1457.62f, 959.51f, 103.81f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 208, + FacilityTurret.Constructor(Vector3(1457.62f, 959.51f, 103.81f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(208, 5034) - LocalObject(209, FacilityTurret.Constructor(Vector3(1470.74f, 864.76f, 119.48f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 209, + FacilityTurret.Constructor(Vector3(1470.74f, 864.76f, 119.48f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(209, 5035) - LocalObject(210, FacilityTurret.Constructor(Vector3(1471.01f, 1253.19f, 103.63f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 210, + FacilityTurret.Constructor(Vector3(1471.01f, 1253.19f, 103.63f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(210, 5036) - LocalObject(211, FacilityTurret.Constructor(Vector3(1477f, 1378.7f, 90.81f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 211, + FacilityTurret.Constructor(Vector3(1477f, 1378.7f, 90.81f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(211, 5037) - LocalObject(212, FacilityTurret.Constructor(Vector3(1513.88f, 946.28f, 114.7f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 212, + FacilityTurret.Constructor(Vector3(1513.88f, 946.28f, 114.7f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(212, 5038) - LocalObject(213, FacilityTurret.Constructor(Vector3(1519.17f, 1499.98f, 94.38f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 213, + FacilityTurret.Constructor(Vector3(1519.17f, 1499.98f, 94.38f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(213, 5039) - LocalObject(214, FacilityTurret.Constructor(Vector3(1545.19f, 1398.01f, 96.71f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 214, + FacilityTurret.Constructor(Vector3(1545.19f, 1398.01f, 96.71f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(214, 5040) - LocalObject(215, FacilityTurret.Constructor(Vector3(1556.23f, 1120.6f, 94.85f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 215, + FacilityTurret.Constructor(Vector3(1556.23f, 1120.6f, 94.85f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(215, 5041) } @@ -703,240 +1853,1854 @@ object Ugd01 { // Supai Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, false, List(Vector3(728.092f, 1006.186f, 106.143f), Vector3(829.164f, 1042.8f, 170.939f), Vector3(830.768f, 1043.381f, 171.46f)))) - ZipLinePaths(new ZipLinePath(2, false, List(Vector3(734.749f, 961.909f, 109.207f), Vector3(697.971f, 956.655f, 132.489f), Vector3(695.519f, 956.305f, 132.975f)))) - ZipLinePaths(new ZipLinePath(3, false, List(Vector3(757.247f, 1017.942f, 106.143f), Vector3(848.92f, 1145.895f, 100.51f)))) - ZipLinePaths(new ZipLinePath(4, false, List(Vector3(778.772f, 817.665f, 111.702f), Vector3(949.992f, 916.26f, 164.246f), Vector3(951.34f, 917.036f, 164.778f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(781.841f, 919.105f, 130.869f), Vector3(830.709f, 1019.833f, 171.021f), Vector3(833.967f, 1026.548f, 171.488f)))) - ZipLinePaths(new ZipLinePath(6, true, List(Vector3(786.778f, 861.66f, 104.079f), Vector3(786.585f, 860.31f, 109.589f)))) - ZipLinePaths(new ZipLinePath(7, true, List(Vector3(808.902f, 1324.021f, 103.66f), Vector3(804.094f, 1317.348f, 121.086f)))) - ZipLinePaths(new ZipLinePath(8, false, List(Vector3(820.334f, 1148.641f, 100.51f), Vector3(734.781f, 1047.986f, 105.623f)))) - ZipLinePaths(new ZipLinePath(9, true, List(Vector3(851.876f, 1380.436f, 121.086f), Vector3(847.951f, 1372.628f, 103.66f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(876.944f, 1460.559f, 101.73f), Vector3(958.145f, 1415.262f, 162.353f), Vector3(961.393f, 1414.24f, 162.789f)))) - ZipLinePaths(new ZipLinePath(11, false, List(Vector3(860.918f, 1314.696f, 111.015f), Vector3(900.307f, 1332.997f, 108.401f)))) - ZipLinePaths(new ZipLinePath(12, true, List(Vector3(873.693f, 913.825f, 85.532f), Vector3(874.142f, 914.083f, 91.039f)))) - ZipLinePaths(new ZipLinePath(13, false, List(Vector3(874.525f, 1033.849f, 171.461f), Vector3(959.388f, 945.044f, 164.768f)))) - ZipLinePaths(new ZipLinePath(14, true, List(Vector3(880.884f, 830.239f, 85.076f), Vector3(886.746f, 828.151f, 118.33f)))) - ZipLinePaths(new ZipLinePath(15, true, List(Vector3(886.448f, 835.152f, 118.33f), Vector3(897.551f, 832.477f, 85.076f)))) - ZipLinePaths(new ZipLinePath(16, false, List(Vector3(911.301f, 1329.164f, 108.381f), Vector3(970.776f, 1280.269f, 109.38f)))) - ZipLinePaths(new ZipLinePath(17, false, List(Vector3(932.081f, 1322.242f, 163.637f), Vector3(1051.566f, 1199.372f, 154.901f)))) - ZipLinePaths(new ZipLinePath(18, false, List(Vector3(938.644f, 941.755f, 164.787f), Vector3(792.952f, 878.137f, 119.212f)))) - ZipLinePaths(new ZipLinePath(19, true, List(Vector3(944.449f, 928.994f, 164.252f), Vector3(943.808f, 928.722f, 169.759f)))) - ZipLinePaths(new ZipLinePath(20, false, List(Vector3(960.616f, 1218.649f, 109.291f), Vector3(862.937f, 1157.651f, 100.511f)))) - ZipLinePaths(new ZipLinePath(21, false, List(Vector3(966.723f, 1345.001f, 163.636f), Vector3(992.911f, 1381.507f, 162.815f)))) - ZipLinePaths(new ZipLinePath(22, false, List(Vector3(961.889f, 1401.845f, 162.791f), Vector3(939.72f, 1368.197f, 163.637f)))) - ZipLinePaths(new ZipLinePath(23, false, List(Vector3(980.961f, 925.541f, 164.804f), Vector3(1047.716f, 1064.001f, 155.001f)))) - ZipLinePaths(new ZipLinePath(24, false, List(Vector3(993.093f, 1516.838f, 107.591f), Vector3(991.266f, 1436.266f, 162.379f), Vector3(991.207f, 1433.667f, 162.803f)))) - ZipLinePaths(new ZipLinePath(25, false, List(Vector3(1023.794f, 1313.803f, 111.42f), Vector3(1005.777f, 1235.883f, 109.341f)))) - ZipLinePaths(new ZipLinePath(26, false, List(Vector3(1027.815f, 1097.179f, 155.004f), Vector3(869.866f, 1035.819f, 176.964f)))) - ZipLinePaths(new ZipLinePath(27, false, List(Vector3(1029.881f, 982.751f, 102.375f), Vector3(1022.505f, 1015.015f, 110.347f), Vector3(1022.013f, 1017.166f, 110.893f)))) - ZipLinePaths(new ZipLinePath(28, false, List(Vector3(1030.959f, 1102.622f, 155.007f), Vector3(1028.145f, 1165.008f, 166.456f), Vector3(1027.957f, 1169.167f, 166.367f)))) - ZipLinePaths(new ZipLinePath(29, true, List(Vector3(1064.594f, 1191.324f, 154.4f), Vector3(1077.757f, 1197.047f, 161.06f)))) - ZipLinePaths(new ZipLinePath(30, false, List(Vector3(1089.529f, 1198.269f, 166.36f), Vector3(1254.864f, 1249.875f, 160.478f)))) - ZipLinePaths(new ZipLinePath(31, false, List(Vector3(1091.897f, 1357.937f, 122.583f), Vector3(1267.006f, 1337.662f, 109.171f)))) - ZipLinePaths(new ZipLinePath(32, false, List(Vector3(1095.955f, 1193.434f, 95.453f), Vector3(1106.521f, 1186.623f, 100.976f), Vector3(1107.225f, 1186.169f, 101.502f)))) - ZipLinePaths(new ZipLinePath(33, false, List(Vector3(1110.201f, 1149.249f, 106.481f), Vector3(1096.384f, 1127.12f, 154.467f), Vector3(1095.463f, 1125.645f, 155.001f)))) - ZipLinePaths(new ZipLinePath(34, false, List(Vector3(1119.014f, 1123.571f, 91.177f), Vector3(1124.145f, 1135.41f, 100.964f), Vector3(1124.878f, 1137.101f, 101.429f)))) - ZipLinePaths(new ZipLinePath(35, true, List(Vector3(1119.495f, 1167.509f, 100.98f), Vector3(1119.44f, 1167.508f, 105.98f)))) - ZipLinePaths(new ZipLinePath(36, true, List(Vector3(1138.384f, 1190.526f, 95.98f), Vector3(1138.423f, 1190.587f, 100.98f)))) - ZipLinePaths(new ZipLinePath(37, true, List(Vector3(1143.706f, 1149.857f, 95.98f), Vector3(1143.71f, 1149.773f, 100.98f)))) - ZipLinePaths(new ZipLinePath(38, true, List(Vector3(1162.813f, 1142.615f, 110.912f), Vector3(1166.217f, 1148.317f, 82.567f)))) - ZipLinePaths(new ZipLinePath(39, true, List(Vector3(1165.452f, 1173.568f, 105.98f), Vector3(1165.372f, 1173.577f, 110.98f)))) - ZipLinePaths(new ZipLinePath(40, false, List(Vector3(1167.06f, 1111.942f, 172.99f), Vector3(1078.79f, 1081.819f, 152.235f)))) - ZipLinePaths(new ZipLinePath(41, true, List(Vector3(1168.507f, 1194.822f, 105.993f), Vector3(1183.559f, 1193.418f, 82.467f)))) - ZipLinePaths(new ZipLinePath(42, false, List(Vector3(1233.414f, 925.048f, 112.774f), Vector3(1039.055f, 975.065f, 102.352f)))) - ZipLinePaths(new ZipLinePath(43, true, List(Vector3(1234.297f, 1083.106f, 85.33f), Vector3(1239.218f, 1085.932f, 98.231f)))) - ZipLinePaths(new ZipLinePath(44, true, List(Vector3(1240.283f, 1097.896f, 98.223f), Vector3(1241.528f, 1099.065f, 85.33f)))) - ZipLinePaths(new ZipLinePath(45, false, List(Vector3(1253.271f, 1236.121f, 160.518f), Vector3(1169.33f, 1195.406f, 111.531f)))) - ZipLinePaths(new ZipLinePath(46, false, List(Vector3(1271.897f, 1348.201f, 109.172f), Vector3(1315.166f, 1362.907f, 105.351f)))) - ZipLinePaths(new ZipLinePath(47, false, List(Vector3(1276.015f, 890.527f, 103.291f), Vector3(1358.52f, 878.489f, 98.582f)))) - ZipLinePaths(new ZipLinePath(48, false, List(Vector3(1286.969f, 885.244f, 162.235f), Vector3(1285.726f, 885.873f, 161.69f), Vector3(1207.434f, 925.508f, 108.171f)))) - ZipLinePaths(new ZipLinePath(49, false, List(Vector3(1287.639f, 1215.968f, 160.509f), Vector3(1247.467f, 1108.693f, 172.979f)))) - ZipLinePaths(new ZipLinePath(50, false, List(Vector3(1291.198f, 1238.773f, 104.612f), Vector3(1325.749f, 1230.146f, 85.164f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(1291.852f, 933.318f, 163.861f), Vector3(1377.723f, 1001.816f, 163.51f)))) - ZipLinePaths(new ZipLinePath(52, false, List(Vector3(1296.924f, 1279.436f, 119.881f), Vector3(1296.11f, 1277.555f, 119.179f), Vector3(1283.903f, 1249.341f, 104.662f)))) - ZipLinePaths(new ZipLinePath(53, false, List(Vector3(1320.281f, 1238.297f, 160.523f), Vector3(1392.448f, 1236.987f, 168.496f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(1330.534f, 1020.952f, 96.131f), Vector3(1360.046f, 1059.981f, 96.074f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(1333.036f, 990.539f, 108.142f), Vector3(1335.545f, 988.369f, 107.657f), Vector3(1373.179f, 955.828f, 94.447f)))) - ZipLinePaths(new ZipLinePath(56, false, List(Vector3(1345.506f, 1327.547f, 160.182f), Vector3(1320.126f, 1248.518f, 160.517f)))) - ZipLinePaths(new ZipLinePath(57, false, List(Vector3(1361.149f, 1322.011f, 160.194f), Vector3(1407.339f, 1279.782f, 174.015f)))) - ZipLinePaths(new ZipLinePath(58, false, List(Vector3(1369.539f, 1047.413f, 163.51f), Vector3(1405.054f, 1233.856f, 168.561f)))) - ZipLinePaths(new ZipLinePath(59, false, List(Vector3(1376.224f, 1112.759f, 96.075f), Vector3(1340.386f, 1139.509f, 92.592f)))) - ZipLinePaths(new ZipLinePath(60, false, List(Vector3(1383.992f, 936.642f, 104.198f), Vector3(1386.949f, 1004.481f, 162.883f), Vector3(1386.996f, 1005.558f, 163.51f)))) - ZipLinePaths(new ZipLinePath(61, true, List(Vector3(1386.401f, 1253.506f, 85.562f), Vector3(1386.755f, 1253.317f, 91.069f)))) - ZipLinePaths(new ZipLinePath(62, false, List(Vector3(1387.362f, 814.224f, 97.989f), Vector3(1323.164f, 885.178f, 165.05f)))) - ZipLinePaths(new ZipLinePath(63, false, List(Vector3(1408.407f, 992.162f, 113.845f), Vector3(1403.502f, 1039.051f, 98.536f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(1418.274f, 1281.224f, 174.016f), Vector3(1403.258f, 1346.119f, 160.196f)))) - ZipLinePaths(new ZipLinePath(65, true, List(Vector3(1445.963f, 1403.374f, 104.101f), Vector3(1447.786f, 1400.135f, 81.47f)))) - ZipLinePaths(new ZipLinePath(66, true, List(Vector3(1447.99f, 911.912f, 115.056f), Vector3(1456.023f, 914.153f, 97.63f)))) - ZipLinePaths(new ZipLinePath(67, false, List(Vector3(1486.297f, 1033.346f, 100.602f), Vector3(1512.289f, 1077.211f, 101.158f), Vector3(1526.559f, 1101.294f, 101.778f)))) - ZipLinePaths(new ZipLinePath(68, false, List(Vector3(1491.442f, 1308.886f, 94.285f), Vector3(1440.693f, 1249.149f, 173.51f), Vector3(1439.056f, 1247.222f, 174.001f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(1496.411f, 1291.616f, 94.928f), Vector3(1513.727f, 1246.264f, 118.798f), Vector3(1514.286f, 1244.801f, 119.316f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(1510.739f, 1234.732f, 119.268f), Vector3(1477.652f, 1143.291f, 101.868f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(1513.12f, 1102.706f, 101.832f), Vector3(1421.222f, 1075.085f, 98.51f)))) - ZipLinePaths(new ZipLinePath(72, true, List(Vector3(1518.094f, 922.897f, 97.63f), Vector3(1526.562f, 924.662f, 115.056f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(1521.523f, 1415.007f, 106.059f), Vector3(1413.48f, 1359.402f, 159.712f), Vector3(1409.995f, 1357.609f, 160.249f)))) - ZipLinePaths(new ZipLinePath(74, false, List(Vector3(1529.09f, 1148.223f, 101.821f), Vector3(1423.234f, 1259.869f, 95f)))) - ZipLinePaths(new ZipLinePath(75, false, List(Vector3(1575.633f, 1422.701f, 142.971f), Vector3(1573.754f, 1422.279f, 142.448f), Vector3(1455.389f, 1395.726f, 104.616f)))) - ZipLinePaths(new ZipLinePath(76, true, List(Vector3(1443.656f, 1407.144f, 81.33f), Vector3(1447.871f, 1399.239f, 104.101f)))) - ZipLinePaths(new ZipLinePath(77, false, List(Vector3(1444.535f, 1293.125f, 104.483f), Vector3(1409.668f, 1349.802f, 159.747f), Vector3(1407.343f, 1353.58f, 160.199f)))) - ZipLinePaths(new ZipLinePath(78, false, List(Vector3(1460.814f, 1471.557f, 101.716f), Vector3(1404.733f, 1385.491f, 159.076f), Vector3(1402.924f, 1382.714f, 159.607f)))) - ZipLinePaths(new ZipLinePath(79, false, List(Vector3(1461.855f, 1344.335f, 104.731f), Vector3(1431.469f, 1279.321f, 168.724f), Vector3(1430.489f, 1277.224f, 168.74f)))) - ZipLinePaths(new ZipLinePath(80, false, List(Vector3(1507.157f, 1349.035f, 109.286f), Vector3(1573.383f, 1404.752f, 142.412f), Vector3(1577.798f, 1408.467f, 142.948f)))) - ZipLinePaths(new ZipLinePath(81, false, List(Vector3(1341.441f, 1316.326f, 119.836f), Vector3(1294.201f, 1275.704f, 160.11f), Vector3(1287.396f, 1269.586f, 160.499f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(1327.414f, 1137.7f, 99.733f), Vector3(1314.162f, 1035.606f, 96.131f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(1222.673f, 1027.613f, 98.518f), Vector3(1264.198f, 999.281f, 107.7f), Vector3(1266.641f, 997.614f, 108.178f)))) - ZipLinePaths(new ZipLinePath(84, false, List(Vector3(1202.686f, 1010.169f, 98.51f), Vector3(1181.993f, 958.767f, 96.83f)))) - ZipLinePaths(new ZipLinePath(85, false, List(Vector3(1163.954f, 1595.853f, 148.196f), Vector3(1159.488f, 1593.995f, 147.755f), Vector3(1021.035f, 1536.395f, 93.444f)))) - ZipLinePaths(new ZipLinePath(86, false, List(Vector3(1247.125f, 1603.267f, 88.816f), Vector3(1189.521f, 1599.835f, 147.901f), Vector3(1185.681f, 1599.606f, 147.894f)))) - ZipLinePaths(new ZipLinePath(87, true, List(Vector3(1400.35f, 974.977f, 91.93f), Vector3(1401.252f, 979.522f, 113.331f)))) - ZipLinePaths(new ZipLinePath(88, true, List(Vector3(1413.085f, 980.32f, 113.34f), Vector3(1396.903f, 981.324f, 91.93f)))) - ZipLinePaths(new ZipLinePath(89, false, List(Vector3(1199.138f, 1060.892f, 98.515f), Vector3(1174.509f, 1151.691f, 111.554f)))) - ZipLinePaths(new ZipLinePath(90, false, List(Vector3(1112.192f, 1285.293f, 91.134f), Vector3(1117.61f, 1203.347f, 101.058f), Vector3(1117.971f, 1197.884f, 101.51f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(1366.348f, 897.049f, 101.075f), Vector3(1313.494f, 953.057f, 108.076f)))) - ZipLinePaths(new ZipLinePath(92, false, List(Vector3(1386.164f, 891.069f, 104.871f), Vector3(1436.442f, 889.065f, 115.11f), Vector3(1453.201f, 888.396f, 115.552f)))) - ZipLinePaths(new ZipLinePath(93, true, List(Vector3(1287.875f, 1302.571f, 94.329f), Vector3(1343.758f, 1308.594f, 110.937f)))) - ZipLinePaths(new ZipLinePath(94, true, List(Vector3(1319.908f, 1359.025f, 104.849f), Vector3(1348.35f, 1328.836f, 91.829f)))) - ZipLinePaths(new ZipLinePath(95, true, List(Vector3(1263.636f, 1349.32f, 82.93f), Vector3(1266.592f, 1341.195f, 108.67f)))) - ZipLinePaths(new ZipLinePath(96, true, List(Vector3(1273.495f, 1342.655f, 108.67f), Vector3(1269.478f, 1342.713f, 82.93f)))) - ZipLinePaths(new ZipLinePath(97, false, List(Vector3(1389.222f, 1252.343f, 106.545f), Vector3(1424.476f, 1273.113f, 103.584f)))) - ZipLinePaths(new ZipLinePath(98, false, List(Vector3(1466.484f, 1291.616f, 104.483f), Vector3(1489.982f, 1325.159f, 104.208f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(1430.153f, 1430.279f, 101.695f), Vector3(1424.616f, 1393.735f, 104.651f)))) - ZipLinePaths(new ZipLinePath(100, false, List(Vector3(1419.415f, 1441.384f, 102.614f), Vector3(1380.672f, 1422.284f, 89.831f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(1396.405f, 1359.469f, 104.686f), Vector3(1374.748f, 1329.47f, 103.487f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(1455.862f, 1435.587f, 104.393f), Vector3(1509.459f, 1423.314f, 106.078f)))) - ZipLinePaths(new ZipLinePath(103, false, List(Vector3(1352.319f, 1302.489f, 109.54f), Vector3(1354.026f, 1299.139f, 109.058f), Vector3(1365.971f, 1275.692f, 97.974f)))) - ZipLinePaths(new ZipLinePath(104, false, List(Vector3(1318.518f, 1147.515f, 103.353f), Vector3(1357.622f, 1045.178f, 163.53f)))) - ZipLinePaths(new ZipLinePath(105, false, List(Vector3(1180.068f, 1022.799f, 98.55f), Vector3(1282.493f, 911.315f, 162.097f), Vector3(1285.797f, 907.719f, 162.64f)))) - ZipLinePaths(new ZipLinePath(106, true, List(Vector3(1172.061f, 1007.936f, 90.354f), Vector3(1160.936f, 1016.351f, 116.62f)))) - ZipLinePaths(new ZipLinePath(107, true, List(Vector3(1164.341f, 1012.921f, 116.62f), Vector3(1171.351f, 1015.839f, 90.354f)))) - ZipLinePaths(new ZipLinePath(108, true, List(Vector3(1333.537f, 845.263f, 88.13f), Vector3(1331.391f, 854.587f, 118.13f)))) - ZipLinePaths(new ZipLinePath(109, true, List(Vector3(1339.384f, 853.526f, 118.13f), Vector3(1334.989f, 854.531f, 88.13f)))) - ZipLinePaths(new ZipLinePath(110, false, List(Vector3(1019.618f, 1006.659f, 110.879f), Vector3(1051.218f, 1057.452f, 154.542f), Vector3(1053.325f, 1060.839f, 155f)))) - ZipLinePaths(new ZipLinePath(111, true, List(Vector3(975.914f, 1001.793f, 97.359f), Vector3(960.395f, 1014.087f, 116.467f)))) - ZipLinePaths(new ZipLinePath(112, true, List(Vector3(1011.91f, 1014.587f, 110.379f), Vector3(979.003f, 1067.291f, 99.859f)))) - ZipLinePaths(new ZipLinePath(113, true, List(Vector3(1044.776f, 974.04f, 84.33f), Vector3(1042.263f, 974.486f, 101.501f), Vector3(1035.728f, 975.644f, 101.851f)))) - ZipLinePaths(new ZipLinePath(114, true, List(Vector3(1028.874f, 972.119f, 101.843f), Vector3(1033.871f, 975.957f, 84.33f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(950.294f, 1010.662f, 115.049f), Vector3(907.387f, 1011.592f, 104.498f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(932.836f, 983.518f, 107.184f), Vector3(958.721f, 980.339f, 109.018f)))) - ZipLinePaths(new ZipLinePath(117, false, List(Vector3(859.555f, 856.841f, 108.282f), Vector3(861.234f, 860.752f, 107.928f), Vector3(872.988f, 888.128f, 100.746f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(823.748f, 908.416f, 106.055f), Vector3(829.011f, 907.394f, 105.693f), Vector3(844.8f, 904.328f, 97.942f)))) - ZipLinePaths(new ZipLinePath(119, false, List(Vector3(847.683f, 942.238f, 106.066f), Vector3(863.593f, 915.671f, 104.714f)))) - ZipLinePaths(new ZipLinePath(120, false, List(Vector3(880.683f, 916.696f, 107.418f), Vector3(904.488f, 954.484f, 101.787f)))) - ZipLinePaths(new ZipLinePath(121, false, List(Vector3(879.234f, 989.582f, 103.583f), Vector3(837.231f, 952.58f, 106.075f)))) - ZipLinePaths(new ZipLinePath(122, false, List(Vector3(871.672f, 905.395f, 105.726f), Vector3(823.879f, 892.325f, 112.638f), Vector3(802.849f, 886.573f, 116.464f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(769.124f, 986.574f, 106.143f), Vector3(781.102f, 955.846f, 106.11f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(725.343f, 990.882f, 107.057f), Vector3(692.244f, 962.514f, 132.431f), Vector3(690.038f, 960.623f, 132.964f)))) - ZipLinePaths(new ZipLinePath(125, false, List(Vector3(778.287f, 866.552f, 124.271f), Vector3(691.082f, 941.073f, 133.163f)))) - ZipLinePaths(new ZipLinePath(126, false, List(Vector3(1489.014f, 1467.955f, 106.115f), Vector3(1460.493f, 1455.135f, 101.698f)))) - ZipLinePaths(new ZipLinePath(127, false, List(Vector3(1483.446f, 1325.031f, 100.653f), Vector3(1458.632f, 1338.057f, 104.735f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(1471.073f, 1301.982f, 95f), Vector3(1485.411f, 1312.821f, 94.284f)))) - ZipLinePaths(new ZipLinePath(129, false, List(Vector3(755.07f, 1030.528f, 96.662f), Vector3(816.714f, 1025.964f, 91.662f)))) - ZipLinePaths(new ZipLinePath(130, false, List(Vector3(777.204f, 996.672f, 107.073f), Vector3(820.392f, 1000.457f, 91.69f)))) - ZipLinePaths(new ZipLinePath(131, true, List(Vector3(790.674f, 923.262f, 103.779f), Vector3(784.461f, 914.388f, 130.332f)))) - ZipLinePaths(new ZipLinePath(132, true, List(Vector3(782.729f, 908.18f, 130.323f), Vector3(789.14f, 914.457f, 103.779f)))) - ZipLinePaths(new ZipLinePath(133, true, List(Vector3(910.317f, 1345.869f, 86.23f), Vector3(906.549f, 1335.888f, 107.892f)))) - ZipLinePaths(new ZipLinePath(134, true, List(Vector3(908.223f, 1341.816f, 107.892f), Vector3(905.648f, 1338.911f, 86.23f)))) - ZipLinePaths(new ZipLinePath(135, false, List(Vector3(833.232f, 1393.407f, 121.577f), Vector3(915.637f, 1438.261f, 116.831f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(982.46f, 1518.909f, 107.592f), Vector3(917.577f, 1450.059f, 116.832f)))) - ZipLinePaths(new ZipLinePath(137, true, List(Vector3(924.848f, 1451.53f, 86.33f), Vector3(915.991f, 1444.015f, 116.33f)))) - ZipLinePaths(new ZipLinePath(138, true, List(Vector3(920.928f, 1445.093f, 116.33f), Vector3(919.855f, 1444.008f, 115.98f), Vector3(916.421f, 1442.794f, 86.33f)))) - ZipLinePaths(new ZipLinePath(139, true, List(Vector3(828.811f, 1428.899f, 90.331f), Vector3(811.334f, 1398.369f, 121.076f)))) - ZipLinePaths(new ZipLinePath(140, false, List(Vector3(936.083f, 1393.338f, 95.643f), Vector3(1026.755f, 1400.969f, 95.813f)))) - ZipLinePaths(new ZipLinePath(141, false, List(Vector3(856.993f, 1184.88f, 100.512f), Vector3(839.109f, 1250.231f, 106.497f)))) - ZipLinePaths(new ZipLinePath(142, true, List(Vector3(1093.28f, 1376.753f, 90.63f), Vector3(1091.116f, 1365.163f, 122.091f)))) - ZipLinePaths(new ZipLinePath(143, true, List(Vector3(1096.055f, 1369.18f, 122.091f), Vector3(1093.978f, 1367.448f, 90.63f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(1084.243f, 1366.022f, 122.611f), Vector3(1033.715f, 1403.167f, 162.301f), Vector3(1026.497f, 1408.473f, 162.841f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(956.997f, 1231.56f, 109.347f), Vector3(954.537f, 1320.416f, 163.139f), Vector3(954.457f, 1323.283f, 163.636f)))) - ZipLinePaths(new ZipLinePath(146, false, List(Vector3(1064.878f, 1173.023f, 154.9f), Vector3(1089.589f, 1126.197f, 155f)))) - ZipLinePaths(new ZipLinePath(147, false, List(Vector3(1006.476f, 1222.634f, 109.337f), Vector3(1024.688f, 1177.964f, 165.896f), Vector3(1025.902f, 1174.985f, 166.36f)))) - ZipLinePaths(new ZipLinePath(148, false, List(Vector3(1086.897f, 1315.525f, 96.781f), Vector3(1084.806f, 1209.158f, 166.286f), Vector3(1084.739f, 1205.727f, 166.361f)))) - ZipLinePaths(new ZipLinePath(149, false, List(Vector3(1305.024f, 1142.624f, 102.434f), Vector3(1251.996f, 1106.28f, 172.469f), Vector3(1248.461f, 1103.857f, 172.979f)))) - ZipLinePaths(new ZipLinePath(150, false, List(Vector3(1161.901f, 1023.071f, 117.15f), Vector3(1094.77f, 1099.419f, 153.244f)))) - ZipLinePaths(new ZipLinePath(151, true, List(Vector3(889.775f, 1487.223f, 91.186f), Vector3(869.803f, 1471.874f, 101.23f)))) - ZipLinePaths(new ZipLinePath(152, true, List(Vector3(889.786f, 1463.643f, 101.23f), Vector3(875.143f, 1455.936f, 91.186f)))) - ZipLinePaths(new ZipLinePath(153, true, List(Vector3(1415.815f, 847.147f, 92.086f), Vector3(1400.802f, 839.966f, 102.13f)))) - ZipLinePaths(new ZipLinePath(154, true, List(Vector3(1406.021f, 860.572f, 102.13f), Vector3(1383.189f, 857.817f, 92.086f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(1043.41f, 408.428f, 103.135f), Vector3(1034.259f, 441.256f, 107.824f), Vector3(1003.909f, 461.383f, 108.513f), Vector3(964.41f, 480.238f, 108.113f), Vector3(932.811f, 494.262f, 103.135f)))) - ZipLinePaths(new ZipLinePath(156, false, List(Vector3(879.653f, 506.603f, 103.138f), Vector3(877.332f, 531.712f, 105.171f), Vector3(877.61f, 556.821f, 91.207f), Vector3(878.967f, 627.04f, 92.694f), Vector3(885.924f, 657.259f, 88.68f), Vector3(904.345f, 693.461f, 83.138f)))) - ZipLinePaths(new ZipLinePath(157, false, List(Vector3(945.611f, 828.543f, 94.343f), Vector3(969.089f, 916.077f, 164.71f)))) - ZipLinePaths(new ZipLinePath(158, false, List(Vector3(251.005f, 1006.488f, 83.141f), Vector3(278.893f, 1007.049f, 97.949f), Vector3(317.358f, 1008.267f, 109.649f), Vector3(355.824f, 986.086f, 105.349f), Vector3(376.98f, 977.201f, 103.141f)))) - ZipLinePaths(new ZipLinePath(159, false, List(Vector3(375.611f, 1014.701f, 103.149f), Vector3(381.423f, 1010.204f, 105.862f), Vector3(447.637f, 1008.626f, 90.749f), Vector3(461.244f, 1020.038f, 83.149f)))) - ZipLinePaths(new ZipLinePath(160, false, List(Vector3(545.645f, 1102.242f, 83.116f), Vector3(596.275f, 1099.627f, 84.612f), Vector3(644.906f, 1119.313f, 85.692f), Vector3(660.903f, 1127.65f, 83.135f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(902.807f, 1481.246f, 101.73f), Vector3(986.877f, 1529.592f, 102.592f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(814.772f, 1175.312f, 100.51f), Vector3(781.371f, 1305.043f, 103.731f)))) - ZipLinePaths(new ZipLinePath(163, false, List(Vector3(1420.106f, 1047.818f, 98.511f), Vector3(1478.651f, 956.067f, 104.985f)))) - ZipLinePaths(new ZipLinePath(164, false, List(Vector3(1177.881f, 1157.518f, 111.616f), Vector3(1274.135f, 1154.874f, 92.959f)))) - ZipLinePaths(new ZipLinePath(165, true, List(Vector3(1151.406f, 1200.873f, 82.467f), Vector3(1155.773f, 1201.314f, 105.98f)))) - ZipLinePaths(new ZipLinePath(166, false, List(Vector3(1100.745f, 333.019f, 103.177f), Vector3(1120.674f, 333.769f, 106.796f), Vector3(1180.687f, 333.911f, 91.323f), Vector3(1212.362f, 344.543f, 87.2f), Vector3(1232.066f, 378.678f, 83.094f)))) - ZipLinePaths(new ZipLinePath(167, false, List(Vector3(1242.328f, 432.765f, 83.142f), Vector3(1257.104f, 433.065f, 86.714f), Vector3(1292.681f, 433.366f, 72.293f), Vector3(1343.033f, 433.967f, 68.738f), Vector3(1367.716f, 434.261f, 63.142f)))) - ZipLinePaths(new ZipLinePath(168, false, List(Vector3(1424.5f, 440.843f, 63.137f), Vector3(1426.096f, 511.412f, 67.62f), Vector3(1456.893f, 569.707f, 68.225f), Vector3(1459.384f, 625.83f, 79.208f)))) - ZipLinePaths(new ZipLinePath(169, false, List(Vector3(2056.6f, 1425.645f, 103.14f), Vector3(1983.076f, 1426.488f, 105.286f), Vector3(1957.552f, 1427.33f, 117.037f), Vector3(1931.8f, 1427.768f, 120.163f)))) - ZipLinePaths(new ZipLinePath(170, false, List(Vector3(1918.56f, 1424.729f, 123.115f), Vector3(1853.468f, 1394.922f, 125.845f), Vector3(1787.707f, 1392.389f, 103.141f)))) - ZipLinePaths(new ZipLinePath(171, false, List(Vector3(1777.914f, 1349.613f, 103.138f), Vector3(1778.386f, 1335.218f, 106.052f), Vector3(1778.857f, 1283.823f, 87.669f), Vector3(1746.873f, 1217.987f, 86.395f), Vector3(1746.738f, 1162.087f, 83.138f)))) - ZipLinePaths(new ZipLinePath(172, false, List(Vector3(1701.419f, 1137.503f, 83.135f), Vector3(1651.437f, 1138.699f, 85.328f), Vector3(1645.439f, 1138.843f, 83.135f)))) - ZipLinePaths(new ZipLinePath(173, false, List(Vector3(1045.419f, 1970.538f, 103.14f), Vector3(1120.109f, 1970.619f, 106.09f), Vector3(1146.398f, 1970.7f, 117.88f), Vector3(1173.128f, 1970.743f, 121.443f)))) - ZipLinePaths(new ZipLinePath(174, false, List(Vector3(1208.467f, 1895.413f, 123.148f), Vector3(1247.813f, 1870.331f, 125.945f), Vector3(1310.558f, 1869.625f, 109.069f), Vector3(1349.94f, 1869.559f, 95.826f), Vector3(1369.513f, 1870.568f, 84.545f)))) - ZipLinePaths(new ZipLinePath(175, false, List(Vector3(1421.55f, 1866.085f, 83.138f), Vector3(1458.246f, 1791.885f, 86.285f), Vector3(1457.935f, 1731.766f, 68.567f), Vector3(1459.208f, 1682.72f, 63.138f)))) - ZipLinePaths(new ZipLinePath(176, false, List(Vector3(948.021f, 2065.12f, 103.188f), Vector3(866.812f, 2065.721f, 128.666f), Vector3(816.304f, 2066.094f, 126.726f), Vector3(809.371f, 2066.146f, 123.14f)))) - ZipLinePaths(new ZipLinePath(177, false, List(Vector3(785.86f, 2020.291f, 123.141f), Vector3(787.358f, 1953.837f, 126.085f), Vector3(787.114f, 1889.222f, 106.325f), Vector3(755.214f, 1825.132f, 106.961f), Vector3(754.919f, 1770.084f, 85.079f)))) - ZipLinePaths(new ZipLinePath(178, false, List(Vector3(727.728f, 1734.672f, 83.134f), Vector3(747.409f, 1715.699f, 84.587f), Vector3(770.091f, 1709.127f, 86.541f), Vector3(834.453f, 1676.582f, 85.648f), Vector3(845.365f, 1664.437f, 87.156f), Vector3(845.236f, 1613.224f, 83.135f)))) - ZipLinePaths(new ZipLinePath(179, false, List(Vector3(1176.424f, 1629.973f, 143.358f), Vector3(1176.427f, 1641.788f, 140.92f), Vector3(1176.43f, 1679.603f, 128.496f), Vector3(1176.434f, 1713.663f, 123.333f)))) - ZipLinePaths(new ZipLinePath(180, false, List(Vector3(1176.147f, 1746.984f, 132.155f), Vector3(1175.973f, 1795.737f, 117.847f), Vector3(1175.949f, 1802.428f, 113.756f)))) - ZipLinePaths(new ZipLinePath(181, false, List(Vector3(1199.978f, 1815.422f, 118.22f), Vector3(1205.888f, 1813.125f, 118.397f), Vector3(1213.843f, 1799.985f, 118.398f), Vector3(1243.82f, 1799.915f, 111.399f), Vector3(1258.809f, 1799.88f, 106.563f), Vector3(1273.798f, 1799.845f, 98.843f)))) - ZipLinePaths(new ZipLinePath(182, false, List(Vector3(1324.259f, 1783.597f, 98.484f), Vector3(1332.029f, 1782.574f, 98.551f), Vector3(1341.288f, 1768.443f, 98.735f), Vector3(1355.698f, 1767.96f, 95.7f), Vector3(1370.107f, 1767.476f, 91.066f), Vector3(1398.927f, 1766.51f, 83.897f), Vector3(1399.036f, 1754.426f, 82.312f), Vector3(1399.146f, 1734.343f, 75.628f), Vector3(1399.255f, 1718.259f, 71.043f), Vector3(1399.365f, 1702.176f, 63.859f)))) - ZipLinePaths(new ZipLinePath(183, false, List(Vector3(1153.673f, 1816.245f, 108.336f), Vector3(1115.768f, 1816.778f, 98.537f)))) - ZipLinePaths(new ZipLinePath(184, false, List(Vector3(1096.022f, 1848.979f, 98.955f), Vector3(1097.069f, 1893.221f, 98.075f), Vector3(1134.716f, 1896.163f, 108.395f), Vector3(1171.409f, 1895.447f, 119.434f), Vector3(1177.339f, 1895.326f, 119.74f)))) - ZipLinePaths(new ZipLinePath(185, false, List(Vector3(1081.349f, 1837.281f, 103.218f), Vector3(1076.7f, 1845.944f, 103.449f), Vector3(1065.451f, 1850.307f, 103.181f), Vector3(1064.126f, 1871.715f, 108.399f), Vector3(1063.133f, 1910.11f, 98.08f), Vector3(1049.936f, 1910.607f, 97.92f), Vector3(1046.238f, 1897.155f, 97.84f), Vector3(1035.789f, 1897.13f, 97.8f), Vector3(1033.74f, 1905.104f, 98.261f)))) - ZipLinePaths(new ZipLinePath(186, false, List(Vector3(1328.07f, 680.513f, 143.204f), Vector3(1314.583f, 679.882f, 144.113f), Vector3(1301.096f, 679.251f, 143.222f)))) - ZipLinePaths(new ZipLinePath(187, false, List(Vector3(1298.966f, 663.593f, 143.212f), Vector3(1334.459f, 661.413f, 143.449f), Vector3(1335.652f, 596.233f, 144.186f), Vector3(1335.731f, 589.947f, 143.346f)))) - ZipLinePaths(new ZipLinePath(188, false, List(Vector3(1325.227f, 568.298f, 148.411f), Vector3(1312.914f, 568.05f, 153.289f), Vector3(1256.247f, 566.409f, 138.091f), Vector3(1256.38f, 556.749f, 137.691f), Vector3(1256.514f, 547.089f, 134.392f), Vector3(1256.78f, 527.769f, 128.209f)))) - ZipLinePaths(new ZipLinePath(189, false, List(Vector3(1232.488f, 503.972f, 118.271f), Vector3(1177.355f, 503.447f, 103.257f), Vector3(1177.288f, 493.906f, 103.122f), Vector3(1177.221f, 484.365f, 100.387f), Vector3(1177.088f, 465.284f, 94.516f), Vector3(1176.822f, 427.121f, 83.308f)))) - ZipLinePaths(new ZipLinePath(190, true, List(Vector3(1460.291f, 635.074f, 82.052f), Vector3(1420.606f, 658.542f, 103.255f), Vector3(1348.379f, 701.254f, 155.5f), Vector3(1338.461f, 711.356f, 142.652f)))) - ZipLinePaths(new ZipLinePath(191, true, List(Vector3(1460.121f, 1669.773f, 62.635f), Vector3(1462.283f, 1665.474f, 65.87f), Vector3(1507.263f, 1576.061f, 93.342f), Vector3(1529.32f, 1532.214f, 107.198f), Vector3(1550.945f, 1489.227f, 120.782f), Vector3(1572.57f, 1446.24f, 134.366f), Vector3(1583.382f, 1424.747f, 142.313f), Vector3(1585.577f, 1418.788f, 142.568f)))) - ZipLinePaths(new ZipLinePath(192, true, List(Vector3(843.171f, 1604.511f, 82.635f), Vector3(1081.584f, 1606.379f, 130.495f), Vector3(1132.6f, 1606.779f, 140.524f), Vector3(1173.225f, 1605.795f, 147.478f)))) - ZipLinePaths(new ZipLinePath(193, false, List(Vector3(1614.569f, 1415.707f, 138.328f), Vector3(1626.72f, 1415.726f, 136.133f), Vector3(1638.871f, 1415.745f, 131.063f), Vector3(1663.172f, 1415.782f, 124.323f), Vector3(1711.775f, 1415.857f, 108.883f), Vector3(1721.305f, 1415.871f, 103.923f)))) - ZipLinePaths(new ZipLinePath(194, false, List(Vector3(1735.537f, 1404.107f, 103.196f), Vector3(1721.896f, 1399.206f, 103.634f), Vector3(1721.852f, 1370.805f, 103.243f)))) - ZipLinePaths(new ZipLinePath(195, false, List(Vector3(658.194f, 952.284f, 128.38f), Vector3(652.236f, 952.266f, 127.377f), Vector3(646.278f, 952.248f, 125.698f), Vector3(634.363f, 952.212f, 122.04f), Vector3(610.532f, 952.14f, 114.424f), Vector3(562.869f, 951.997f, 99.305f), Vector3(540.468f, 951.929f, 92.103f), Vector3(529.267f, 951.896f, 89.102f), Vector3(518.067f, 951.862f, 83.825f)))) - ZipLinePaths(new ZipLinePath(196, false, List(Vector3(503.81f, 962.852f, 83.211f), Vector3(518.406f, 970.708f, 83.699f), Vector3(518.408f, 994.66f, 83.232f)))) - ZipLinePaths(new ZipLinePath(197, false, List(Vector3(492.349f, 1008.389f, 83.135f), Vector3(511.868f, 1054.627f, 86.076f), Vector3(526.104f, 1080.919f, 83.135f)))) - ZipLinePaths(new ZipLinePath(198, false, List(Vector3(911.833f, 714.846f, 82.993f), Vector3(936.165f, 763.965f, 96.014f), Vector3(954.414f, 800.804f, 98.783f), Vector3(960.497f, 813.084f, 98.139f)))) - ZipLinePaths(new ZipLinePath(199, false, List(Vector3(676.057f, 1134.606f, 83.178f), Vector3(725.964f, 1144.654f, 93.349f), Vector3(775.871f, 1154.702f, 95.839f), Vector3(805.229f, 1160.613f, 93.832f)))) - ZipLinePaths(new ZipLinePath(200, false, List(Vector3(1459.819f, 1651.959f, 64.416f), Vector3(1456.288f, 1610.835f, 86.097f), Vector3(1453.64f, 1579.993f, 91.127f), Vector3(1452.757f, 1569.712f, 90.906f)))) - ZipLinePaths(new ZipLinePath(201, false, List(Vector3(1458.457f, 1545.826f, 90.791f), Vector3(1479.788f, 1501.533f, 100.359f), Vector3(1492.161f, 1475.843f, 106.12f)))) - ZipLinePaths(new ZipLinePath(202, false, List(Vector3(1444.372f, 1548.139f, 90.82f), Vector3(1432.067f, 1503.254f, 110.53f), Vector3(1419.763f, 1458.368f, 128.818f), Vector3(1407.458f, 1413.483f, 147.106f), Vector3(1399.337f, 1383.859f, 159.624f)))) - ZipLinePaths(new ZipLinePath(203, false, List(Vector3(1551.372f, 1446.798f, 106.066f), Vector3(1575.322f, 1428.6f, 142.446f), Vector3(1578.744f, 1426.001f, 143.072f)))) - ZipLinePaths(new ZipLinePath(204, false, List(Vector3(1224.112f, 1046.429f, 98.511f), Vector3(1258.135f, 1084.269f, 96.285f), Vector3(1286.821f, 1116.172f, 92.591f)))) - ZipLinePaths(new ZipLinePath(205, false, List(Vector3(841.821f, 1278.922f, 97.951f), Vector3(915.183f, 1336.824f, 163.083f), Vector3(917.549f, 1338.692f, 163.636f)))) - ZipLinePaths(new ZipLinePath(206, false, List(Vector3(878.453f, 1386.561f, 97.851f), Vector3(955.117f, 1405.787f, 162.33f), Vector3(960.228f, 1407.069f, 162.789f)))) - ZipLinePaths(new ZipLinePath(207, false, List(Vector3(1526.881f, 964.484f, 92.484f), Vector3(1400.135f, 1008.218f, 163.631f), Vector3(1394.22f, 1010.259f, 163.564f)))) - ZipLinePaths(new ZipLinePath(208, false, List(Vector3(1435.638f, 937.309f, 94.831f), Vector3(1340.67f, 920.751f, 162.022f), Vector3(1334.338f, 919.647f, 162.236f)))) - ZipLinePaths(new ZipLinePath(209, false, List(Vector3(1043.013f, 1001.463f, 94.331f), Vector3(1059.675f, 1063.189f, 154.808f), Vector3(1060.786f, 1067.304f, 155f)))) - ZipLinePaths(new ZipLinePath(210, false, List(Vector3(1262.21f, 1329.985f, 87.831f), Vector3(1278.973f, 1277.129f, 159.708f), Vector3(1281.368f, 1269.578f, 160.491f)))) - ZipLinePaths(new ZipLinePath(211, false, List(Vector3(1310.729f, 1248.042f, 87.731f), Vector3(1351.306f, 1316.913f, 159.718f), Vector3(1352.615f, 1319.135f, 160.182f)))) - ZipLinePaths(new ZipLinePath(212, false, List(Vector3(922.83f, 1034.618f, 94.431f), Vector3(946.139f, 947.914f, 164.469f), Vector3(946.891f, 945.117f, 164.767f)))) - ZipLinePaths(new ZipLinePath(213, false, List(Vector3(981.12f, 1104.231f, 94.331f), Vector3(873.547f, 1056.63f, 176.978f), Vector3(870.077f, 1055.095f, 176.961f)))) - ZipLinePaths(new ZipLinePath(214, false, List(Vector3(1369.892f, 1371.893f, 87.431f), Vector3(1410.201f, 1283.777f, 174.098f), Vector3(1411.501f, 1280.935f, 174.004f)))) - ZipLinePaths(new ZipLinePath(215, false, List(Vector3(1624.058f, 1140.65f, 82.998f), Vector3(1575.346f, 1141.37f, 98.857f), Vector3(1545.144f, 1141.817f, 101.83f)))) - ZipLinePaths(new ZipLinePath(216, false, List(Vector3(1514.803f, 1155.469f, 95.704f), Vector3(1441.047f, 1240.007f, 174.127f), Vector3(1438.668f, 1242.734f, 174.386f)))) - ZipLinePaths(new ZipLinePath(217, false, List(Vector3(1476.13f, 1135.492f, 101.86f), Vector3(1414.559f, 1079.969f, 98.51f)))) - ZipLinePaths(new ZipLinePath(218, true, List(Vector3(905.255f, 699.031f, 82.635f), Vector3(903.263f, 701.231f, 84.745f), Vector3(858.767f, 750.357f, 93.63f), Vector3(854.782f, 754.756f, 97.496f), Vector3(853.454f, 756.222f, 100.281f), Vector3(818.919f, 794.349f, 107.871f), Vector3(785.049f, 831.744f, 115.315f), Vector3(751.179f, 869.137f, 122.759f), Vector3(717.309f, 906.531f, 130.203f), Vector3(683.438f, 943.925f, 137.646f), Vector3(679.089f, 949.558f, 132.684f)))) - ZipLinePaths(new ZipLinePath(219, true, List(Vector3(1165.727f, 1602.266f, 147.746f), Vector3(1116.728f, 1601.143f, 139.366f), Vector3(886.441f, 1595.865f, 129.447f), Vector3(843.985f, 1594.922f, 82.706f)))) - ZipLinePaths(new ZipLinePath(220, false, List(Vector3(1453.183f, 659.325f, 83.215f), Vector3(1437.37f, 707.601f, 91.141f), Vector3(1421.557f, 755.877f, 95.635f), Vector3(1405.744f, 804.154f, 100.129f), Vector3(1395.202f, 836.338f, 102.633f)))) - ZipLinePaths(new ZipLinePath(221, false, List(Vector3(845.714f, 1588.779f, 82.734f), Vector3(855.47f, 1540.323f, 95.6f), Vector3(865.227f, 1491.868f, 102.057f), Vector3(867.568f, 1480.238f, 101.737f)))) - ZipLinePaths(new ZipLinePath(222, true, List(Vector3(686.309f, 945.118f, 132.633f), Vector3(720.441f, 907.992f, 125.999f), Vector3(754.573f, 870.865f, 118.411f), Vector3(776.658f, 846.842f, 120.555f), Vector3(811.459f, 808.988f, 112.818f), Vector3(845.591f, 771.862f, 105.23f), Vector3(908.97f, 709.205f, 82.552f)))) - ZipLinePaths(new ZipLinePath(223, true, List(Vector3(1344.796f, 718.476f, 142.725f), Vector3(1411.682f, 675.619f, 123.587f), Vector3(1450.89f, 650.495f, 102.795f), Vector3(1457.81f, 646.062f, 82.762f)))) - ZipLinePaths(new ZipLinePath(224, true, List(Vector3(1585.758f, 1426.108f, 142.747f), Vector3(1562.474f, 1469.058f, 129.343f), Vector3(1539.19f, 1512.008f, 114.71f), Vector3(1515.907f, 1554.959f, 100.077f), Vector3(1459.865f, 1658.76f, 63.264f)))) - ZipLinePaths(new ZipLinePath(225, false, List(Vector3(978.333f, 1281.95f, 109.419f), Vector3(998.278f, 1375.536f, 162.879f), Vector3(999.608f, 1381.775f, 162.859f)))) - ZipLinePaths(new ZipLinePath(226, false, List(Vector3(1323.318f, 999.538f, 108.132f), Vector3(1352.668f, 1032.694f, 163.149f), Vector3(1354.625f, 1034.905f, 163.51f)))) - ZipLinePaths(new ZipLinePath(227, false, List(Vector3(1416.023f, 1100.672f, 96.11f), Vector3(1396.498f, 1232.051f, 169.279f), Vector3(1395.869f, 1236.289f, 168.543f)))) - ZipLinePaths(new ZipLinePath(228, false, List(Vector3(1355.816f, 1040.459f, 163.511f), Vector3(1246.45f, 1095.878f, 172.978f)))) - ZipLinePaths(new ZipLinePath(229, false, List(Vector3(1363.911f, 1075.694f, 96.074f), Vector3(1252.925f, 1098.509f, 173.077f), Vector3(1249.345f, 1099.245f, 172.98f)))) - ZipLinePaths(new ZipLinePath(230, false, List(Vector3(1296.075f, 1036.364f, 96.131f), Vector3(1246.252f, 1040.264f, 97.856f), Vector3(1227.319f, 1041.746f, 98.51f)))) - ZipLinePaths(new ZipLinePath(231, false, List(Vector3(1030.411f, 1318.939f, 111.42f), Vector3(1028.982f, 1397.782f, 161.917f), Vector3(1028.886f, 1403.039f, 162.832f)))) - ZipLinePaths(new ZipLinePath(232, false, List(Vector3(1346.985f, 726.494f, 143.072f), Vector3(1377.341f, 766.739f, 135.821f), Vector3(1407.697f, 806.984f, 128.102f), Vector3(1438.053f, 847.229f, 120.384f), Vector3(1458.291f, 874.06f, 115.551f)))) - ZipLinePaths(new ZipLinePath(233, false, List(Vector3(1342.67f, 730.091f, 142.989f), Vector3(1344.678f, 735.667f, 142.661f), Vector3(1374.8f, 819.304f, 99.518f), Vector3(1379.39f, 832.049f, 88.689f)))) - ZipLinePaths(new ZipLinePath(234, false, List(Vector3(869.078f, 1467.295f, 101.744f), Vector3(840.171f, 1428.178f, 116.211f), Vector3(830.054f, 1414.486f, 120.844f), Vector3(824.996f, 1407.641f, 121.96f), Vector3(819.937f, 1400.795f, 121.59f)))) + ZipLinePaths( + new ZipLinePath( + 1, + false, + List( + Vector3(728.092f, 1006.186f, 106.143f), + Vector3(829.164f, 1042.8f, 170.939f), + Vector3(830.768f, 1043.381f, 171.46f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 2, + false, + List( + Vector3(734.749f, 961.909f, 109.207f), + Vector3(697.971f, 956.655f, 132.489f), + Vector3(695.519f, 956.305f, 132.975f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(3, false, List(Vector3(757.247f, 1017.942f, 106.143f), Vector3(848.92f, 1145.895f, 100.51f))) + ) + ZipLinePaths( + new ZipLinePath( + 4, + false, + List( + Vector3(778.772f, 817.665f, 111.702f), + Vector3(949.992f, 916.26f, 164.246f), + Vector3(951.34f, 917.036f, 164.778f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(781.841f, 919.105f, 130.869f), + Vector3(830.709f, 1019.833f, 171.021f), + Vector3(833.967f, 1026.548f, 171.488f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(6, true, List(Vector3(786.778f, 861.66f, 104.079f), Vector3(786.585f, 860.31f, 109.589f))) + ) + ZipLinePaths( + new ZipLinePath(7, true, List(Vector3(808.902f, 1324.021f, 103.66f), Vector3(804.094f, 1317.348f, 121.086f))) + ) + ZipLinePaths( + new ZipLinePath(8, false, List(Vector3(820.334f, 1148.641f, 100.51f), Vector3(734.781f, 1047.986f, 105.623f))) + ) + ZipLinePaths( + new ZipLinePath(9, true, List(Vector3(851.876f, 1380.436f, 121.086f), Vector3(847.951f, 1372.628f, 103.66f))) + ) + ZipLinePaths( + new ZipLinePath( + 10, + false, + List( + Vector3(876.944f, 1460.559f, 101.73f), + Vector3(958.145f, 1415.262f, 162.353f), + Vector3(961.393f, 1414.24f, 162.789f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(11, false, List(Vector3(860.918f, 1314.696f, 111.015f), Vector3(900.307f, 1332.997f, 108.401f))) + ) + ZipLinePaths( + new ZipLinePath(12, true, List(Vector3(873.693f, 913.825f, 85.532f), Vector3(874.142f, 914.083f, 91.039f))) + ) + ZipLinePaths( + new ZipLinePath(13, false, List(Vector3(874.525f, 1033.849f, 171.461f), Vector3(959.388f, 945.044f, 164.768f))) + ) + ZipLinePaths( + new ZipLinePath(14, true, List(Vector3(880.884f, 830.239f, 85.076f), Vector3(886.746f, 828.151f, 118.33f))) + ) + ZipLinePaths( + new ZipLinePath(15, true, List(Vector3(886.448f, 835.152f, 118.33f), Vector3(897.551f, 832.477f, 85.076f))) + ) + ZipLinePaths( + new ZipLinePath(16, false, List(Vector3(911.301f, 1329.164f, 108.381f), Vector3(970.776f, 1280.269f, 109.38f))) + ) + ZipLinePaths( + new ZipLinePath( + 17, + false, + List(Vector3(932.081f, 1322.242f, 163.637f), Vector3(1051.566f, 1199.372f, 154.901f)) + ) + ) + ZipLinePaths( + new ZipLinePath(18, false, List(Vector3(938.644f, 941.755f, 164.787f), Vector3(792.952f, 878.137f, 119.212f))) + ) + ZipLinePaths( + new ZipLinePath(19, true, List(Vector3(944.449f, 928.994f, 164.252f), Vector3(943.808f, 928.722f, 169.759f))) + ) + ZipLinePaths( + new ZipLinePath(20, false, List(Vector3(960.616f, 1218.649f, 109.291f), Vector3(862.937f, 1157.651f, 100.511f))) + ) + ZipLinePaths( + new ZipLinePath(21, false, List(Vector3(966.723f, 1345.001f, 163.636f), Vector3(992.911f, 1381.507f, 162.815f))) + ) + ZipLinePaths( + new ZipLinePath(22, false, List(Vector3(961.889f, 1401.845f, 162.791f), Vector3(939.72f, 1368.197f, 163.637f))) + ) + ZipLinePaths( + new ZipLinePath(23, false, List(Vector3(980.961f, 925.541f, 164.804f), Vector3(1047.716f, 1064.001f, 155.001f))) + ) + ZipLinePaths( + new ZipLinePath( + 24, + false, + List( + Vector3(993.093f, 1516.838f, 107.591f), + Vector3(991.266f, 1436.266f, 162.379f), + Vector3(991.207f, 1433.667f, 162.803f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 25, + false, + List(Vector3(1023.794f, 1313.803f, 111.42f), Vector3(1005.777f, 1235.883f, 109.341f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 26, + false, + List(Vector3(1027.815f, 1097.179f, 155.004f), Vector3(869.866f, 1035.819f, 176.964f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 27, + false, + List( + Vector3(1029.881f, 982.751f, 102.375f), + Vector3(1022.505f, 1015.015f, 110.347f), + Vector3(1022.013f, 1017.166f, 110.893f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 28, + false, + List( + Vector3(1030.959f, 1102.622f, 155.007f), + Vector3(1028.145f, 1165.008f, 166.456f), + Vector3(1027.957f, 1169.167f, 166.367f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(29, true, List(Vector3(1064.594f, 1191.324f, 154.4f), Vector3(1077.757f, 1197.047f, 161.06f))) + ) + ZipLinePaths( + new ZipLinePath( + 30, + false, + List(Vector3(1089.529f, 1198.269f, 166.36f), Vector3(1254.864f, 1249.875f, 160.478f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 31, + false, + List(Vector3(1091.897f, 1357.937f, 122.583f), Vector3(1267.006f, 1337.662f, 109.171f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 32, + false, + List( + Vector3(1095.955f, 1193.434f, 95.453f), + Vector3(1106.521f, 1186.623f, 100.976f), + Vector3(1107.225f, 1186.169f, 101.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 33, + false, + List( + Vector3(1110.201f, 1149.249f, 106.481f), + Vector3(1096.384f, 1127.12f, 154.467f), + Vector3(1095.463f, 1125.645f, 155.001f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 34, + false, + List( + Vector3(1119.014f, 1123.571f, 91.177f), + Vector3(1124.145f, 1135.41f, 100.964f), + Vector3(1124.878f, 1137.101f, 101.429f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(35, true, List(Vector3(1119.495f, 1167.509f, 100.98f), Vector3(1119.44f, 1167.508f, 105.98f))) + ) + ZipLinePaths( + new ZipLinePath(36, true, List(Vector3(1138.384f, 1190.526f, 95.98f), Vector3(1138.423f, 1190.587f, 100.98f))) + ) + ZipLinePaths( + new ZipLinePath(37, true, List(Vector3(1143.706f, 1149.857f, 95.98f), Vector3(1143.71f, 1149.773f, 100.98f))) + ) + ZipLinePaths( + new ZipLinePath(38, true, List(Vector3(1162.813f, 1142.615f, 110.912f), Vector3(1166.217f, 1148.317f, 82.567f))) + ) + ZipLinePaths( + new ZipLinePath(39, true, List(Vector3(1165.452f, 1173.568f, 105.98f), Vector3(1165.372f, 1173.577f, 110.98f))) + ) + ZipLinePaths( + new ZipLinePath(40, false, List(Vector3(1167.06f, 1111.942f, 172.99f), Vector3(1078.79f, 1081.819f, 152.235f))) + ) + ZipLinePaths( + new ZipLinePath(41, true, List(Vector3(1168.507f, 1194.822f, 105.993f), Vector3(1183.559f, 1193.418f, 82.467f))) + ) + ZipLinePaths( + new ZipLinePath(42, false, List(Vector3(1233.414f, 925.048f, 112.774f), Vector3(1039.055f, 975.065f, 102.352f))) + ) + ZipLinePaths( + new ZipLinePath(43, true, List(Vector3(1234.297f, 1083.106f, 85.33f), Vector3(1239.218f, 1085.932f, 98.231f))) + ) + ZipLinePaths( + new ZipLinePath(44, true, List(Vector3(1240.283f, 1097.896f, 98.223f), Vector3(1241.528f, 1099.065f, 85.33f))) + ) + ZipLinePaths( + new ZipLinePath( + 45, + false, + List(Vector3(1253.271f, 1236.121f, 160.518f), Vector3(1169.33f, 1195.406f, 111.531f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 46, + false, + List(Vector3(1271.897f, 1348.201f, 109.172f), Vector3(1315.166f, 1362.907f, 105.351f)) + ) + ) + ZipLinePaths( + new ZipLinePath(47, false, List(Vector3(1276.015f, 890.527f, 103.291f), Vector3(1358.52f, 878.489f, 98.582f))) + ) + ZipLinePaths( + new ZipLinePath( + 48, + false, + List( + Vector3(1286.969f, 885.244f, 162.235f), + Vector3(1285.726f, 885.873f, 161.69f), + Vector3(1207.434f, 925.508f, 108.171f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 49, + false, + List(Vector3(1287.639f, 1215.968f, 160.509f), Vector3(1247.467f, 1108.693f, 172.979f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 50, + false, + List(Vector3(1291.198f, 1238.773f, 104.612f), Vector3(1325.749f, 1230.146f, 85.164f)) + ) + ) + ZipLinePaths( + new ZipLinePath(51, false, List(Vector3(1291.852f, 933.318f, 163.861f), Vector3(1377.723f, 1001.816f, 163.51f))) + ) + ZipLinePaths( + new ZipLinePath( + 52, + false, + List( + Vector3(1296.924f, 1279.436f, 119.881f), + Vector3(1296.11f, 1277.555f, 119.179f), + Vector3(1283.903f, 1249.341f, 104.662f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 53, + false, + List(Vector3(1320.281f, 1238.297f, 160.523f), Vector3(1392.448f, 1236.987f, 168.496f)) + ) + ) + ZipLinePaths( + new ZipLinePath(54, false, List(Vector3(1330.534f, 1020.952f, 96.131f), Vector3(1360.046f, 1059.981f, 96.074f))) + ) + ZipLinePaths( + new ZipLinePath( + 55, + false, + List( + Vector3(1333.036f, 990.539f, 108.142f), + Vector3(1335.545f, 988.369f, 107.657f), + Vector3(1373.179f, 955.828f, 94.447f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 56, + false, + List(Vector3(1345.506f, 1327.547f, 160.182f), Vector3(1320.126f, 1248.518f, 160.517f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 57, + false, + List(Vector3(1361.149f, 1322.011f, 160.194f), Vector3(1407.339f, 1279.782f, 174.015f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 58, + false, + List(Vector3(1369.539f, 1047.413f, 163.51f), Vector3(1405.054f, 1233.856f, 168.561f)) + ) + ) + ZipLinePaths( + new ZipLinePath(59, false, List(Vector3(1376.224f, 1112.759f, 96.075f), Vector3(1340.386f, 1139.509f, 92.592f))) + ) + ZipLinePaths( + new ZipLinePath( + 60, + false, + List( + Vector3(1383.992f, 936.642f, 104.198f), + Vector3(1386.949f, 1004.481f, 162.883f), + Vector3(1386.996f, 1005.558f, 163.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(61, true, List(Vector3(1386.401f, 1253.506f, 85.562f), Vector3(1386.755f, 1253.317f, 91.069f))) + ) + ZipLinePaths( + new ZipLinePath(62, false, List(Vector3(1387.362f, 814.224f, 97.989f), Vector3(1323.164f, 885.178f, 165.05f))) + ) + ZipLinePaths( + new ZipLinePath(63, false, List(Vector3(1408.407f, 992.162f, 113.845f), Vector3(1403.502f, 1039.051f, 98.536f))) + ) + ZipLinePaths( + new ZipLinePath( + 64, + false, + List(Vector3(1418.274f, 1281.224f, 174.016f), Vector3(1403.258f, 1346.119f, 160.196f)) + ) + ) + ZipLinePaths( + new ZipLinePath(65, true, List(Vector3(1445.963f, 1403.374f, 104.101f), Vector3(1447.786f, 1400.135f, 81.47f))) + ) + ZipLinePaths( + new ZipLinePath(66, true, List(Vector3(1447.99f, 911.912f, 115.056f), Vector3(1456.023f, 914.153f, 97.63f))) + ) + ZipLinePaths( + new ZipLinePath( + 67, + false, + List( + Vector3(1486.297f, 1033.346f, 100.602f), + Vector3(1512.289f, 1077.211f, 101.158f), + Vector3(1526.559f, 1101.294f, 101.778f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 68, + false, + List( + Vector3(1491.442f, 1308.886f, 94.285f), + Vector3(1440.693f, 1249.149f, 173.51f), + Vector3(1439.056f, 1247.222f, 174.001f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 69, + false, + List( + Vector3(1496.411f, 1291.616f, 94.928f), + Vector3(1513.727f, 1246.264f, 118.798f), + Vector3(1514.286f, 1244.801f, 119.316f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 70, + false, + List(Vector3(1510.739f, 1234.732f, 119.268f), Vector3(1477.652f, 1143.291f, 101.868f)) + ) + ) + ZipLinePaths( + new ZipLinePath(71, false, List(Vector3(1513.12f, 1102.706f, 101.832f), Vector3(1421.222f, 1075.085f, 98.51f))) + ) + ZipLinePaths( + new ZipLinePath(72, true, List(Vector3(1518.094f, 922.897f, 97.63f), Vector3(1526.562f, 924.662f, 115.056f))) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(1521.523f, 1415.007f, 106.059f), + Vector3(1413.48f, 1359.402f, 159.712f), + Vector3(1409.995f, 1357.609f, 160.249f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(74, false, List(Vector3(1529.09f, 1148.223f, 101.821f), Vector3(1423.234f, 1259.869f, 95f))) + ) + ZipLinePaths( + new ZipLinePath( + 75, + false, + List( + Vector3(1575.633f, 1422.701f, 142.971f), + Vector3(1573.754f, 1422.279f, 142.448f), + Vector3(1455.389f, 1395.726f, 104.616f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(76, true, List(Vector3(1443.656f, 1407.144f, 81.33f), Vector3(1447.871f, 1399.239f, 104.101f))) + ) + ZipLinePaths( + new ZipLinePath( + 77, + false, + List( + Vector3(1444.535f, 1293.125f, 104.483f), + Vector3(1409.668f, 1349.802f, 159.747f), + Vector3(1407.343f, 1353.58f, 160.199f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 78, + false, + List( + Vector3(1460.814f, 1471.557f, 101.716f), + Vector3(1404.733f, 1385.491f, 159.076f), + Vector3(1402.924f, 1382.714f, 159.607f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 79, + false, + List( + Vector3(1461.855f, 1344.335f, 104.731f), + Vector3(1431.469f, 1279.321f, 168.724f), + Vector3(1430.489f, 1277.224f, 168.74f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 80, + false, + List( + Vector3(1507.157f, 1349.035f, 109.286f), + Vector3(1573.383f, 1404.752f, 142.412f), + Vector3(1577.798f, 1408.467f, 142.948f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 81, + false, + List( + Vector3(1341.441f, 1316.326f, 119.836f), + Vector3(1294.201f, 1275.704f, 160.11f), + Vector3(1287.396f, 1269.586f, 160.499f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(82, false, List(Vector3(1327.414f, 1137.7f, 99.733f), Vector3(1314.162f, 1035.606f, 96.131f))) + ) + ZipLinePaths( + new ZipLinePath( + 83, + false, + List( + Vector3(1222.673f, 1027.613f, 98.518f), + Vector3(1264.198f, 999.281f, 107.7f), + Vector3(1266.641f, 997.614f, 108.178f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(84, false, List(Vector3(1202.686f, 1010.169f, 98.51f), Vector3(1181.993f, 958.767f, 96.83f))) + ) + ZipLinePaths( + new ZipLinePath( + 85, + false, + List( + Vector3(1163.954f, 1595.853f, 148.196f), + Vector3(1159.488f, 1593.995f, 147.755f), + Vector3(1021.035f, 1536.395f, 93.444f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 86, + false, + List( + Vector3(1247.125f, 1603.267f, 88.816f), + Vector3(1189.521f, 1599.835f, 147.901f), + Vector3(1185.681f, 1599.606f, 147.894f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(87, true, List(Vector3(1400.35f, 974.977f, 91.93f), Vector3(1401.252f, 979.522f, 113.331f))) + ) + ZipLinePaths( + new ZipLinePath(88, true, List(Vector3(1413.085f, 980.32f, 113.34f), Vector3(1396.903f, 981.324f, 91.93f))) + ) + ZipLinePaths( + new ZipLinePath( + 89, + false, + List(Vector3(1199.138f, 1060.892f, 98.515f), Vector3(1174.509f, 1151.691f, 111.554f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 90, + false, + List( + Vector3(1112.192f, 1285.293f, 91.134f), + Vector3(1117.61f, 1203.347f, 101.058f), + Vector3(1117.971f, 1197.884f, 101.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(91, false, List(Vector3(1366.348f, 897.049f, 101.075f), Vector3(1313.494f, 953.057f, 108.076f))) + ) + ZipLinePaths( + new ZipLinePath( + 92, + false, + List( + Vector3(1386.164f, 891.069f, 104.871f), + Vector3(1436.442f, 889.065f, 115.11f), + Vector3(1453.201f, 888.396f, 115.552f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(93, true, List(Vector3(1287.875f, 1302.571f, 94.329f), Vector3(1343.758f, 1308.594f, 110.937f))) + ) + ZipLinePaths( + new ZipLinePath(94, true, List(Vector3(1319.908f, 1359.025f, 104.849f), Vector3(1348.35f, 1328.836f, 91.829f))) + ) + ZipLinePaths( + new ZipLinePath(95, true, List(Vector3(1263.636f, 1349.32f, 82.93f), Vector3(1266.592f, 1341.195f, 108.67f))) + ) + ZipLinePaths( + new ZipLinePath(96, true, List(Vector3(1273.495f, 1342.655f, 108.67f), Vector3(1269.478f, 1342.713f, 82.93f))) + ) + ZipLinePaths( + new ZipLinePath( + 97, + false, + List(Vector3(1389.222f, 1252.343f, 106.545f), Vector3(1424.476f, 1273.113f, 103.584f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 98, + false, + List(Vector3(1466.484f, 1291.616f, 104.483f), Vector3(1489.982f, 1325.159f, 104.208f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List(Vector3(1430.153f, 1430.279f, 101.695f), Vector3(1424.616f, 1393.735f, 104.651f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 100, + false, + List(Vector3(1419.415f, 1441.384f, 102.614f), Vector3(1380.672f, 1422.284f, 89.831f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List(Vector3(1396.405f, 1359.469f, 104.686f), Vector3(1374.748f, 1329.47f, 103.487f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List(Vector3(1455.862f, 1435.587f, 104.393f), Vector3(1509.459f, 1423.314f, 106.078f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 103, + false, + List( + Vector3(1352.319f, 1302.489f, 109.54f), + Vector3(1354.026f, 1299.139f, 109.058f), + Vector3(1365.971f, 1275.692f, 97.974f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 104, + false, + List(Vector3(1318.518f, 1147.515f, 103.353f), Vector3(1357.622f, 1045.178f, 163.53f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 105, + false, + List( + Vector3(1180.068f, 1022.799f, 98.55f), + Vector3(1282.493f, 911.315f, 162.097f), + Vector3(1285.797f, 907.719f, 162.64f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(106, true, List(Vector3(1172.061f, 1007.936f, 90.354f), Vector3(1160.936f, 1016.351f, 116.62f))) + ) + ZipLinePaths( + new ZipLinePath(107, true, List(Vector3(1164.341f, 1012.921f, 116.62f), Vector3(1171.351f, 1015.839f, 90.354f))) + ) + ZipLinePaths( + new ZipLinePath(108, true, List(Vector3(1333.537f, 845.263f, 88.13f), Vector3(1331.391f, 854.587f, 118.13f))) + ) + ZipLinePaths( + new ZipLinePath(109, true, List(Vector3(1339.384f, 853.526f, 118.13f), Vector3(1334.989f, 854.531f, 88.13f))) + ) + ZipLinePaths( + new ZipLinePath( + 110, + false, + List( + Vector3(1019.618f, 1006.659f, 110.879f), + Vector3(1051.218f, 1057.452f, 154.542f), + Vector3(1053.325f, 1060.839f, 155f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(111, true, List(Vector3(975.914f, 1001.793f, 97.359f), Vector3(960.395f, 1014.087f, 116.467f))) + ) + ZipLinePaths( + new ZipLinePath(112, true, List(Vector3(1011.91f, 1014.587f, 110.379f), Vector3(979.003f, 1067.291f, 99.859f))) + ) + ZipLinePaths( + new ZipLinePath( + 113, + true, + List( + Vector3(1044.776f, 974.04f, 84.33f), + Vector3(1042.263f, 974.486f, 101.501f), + Vector3(1035.728f, 975.644f, 101.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(114, true, List(Vector3(1028.874f, 972.119f, 101.843f), Vector3(1033.871f, 975.957f, 84.33f))) + ) + ZipLinePaths( + new ZipLinePath( + 115, + false, + List(Vector3(950.294f, 1010.662f, 115.049f), Vector3(907.387f, 1011.592f, 104.498f)) + ) + ) + ZipLinePaths( + new ZipLinePath(116, false, List(Vector3(932.836f, 983.518f, 107.184f), Vector3(958.721f, 980.339f, 109.018f))) + ) + ZipLinePaths( + new ZipLinePath( + 117, + false, + List( + Vector3(859.555f, 856.841f, 108.282f), + Vector3(861.234f, 860.752f, 107.928f), + Vector3(872.988f, 888.128f, 100.746f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(823.748f, 908.416f, 106.055f), + Vector3(829.011f, 907.394f, 105.693f), + Vector3(844.8f, 904.328f, 97.942f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(119, false, List(Vector3(847.683f, 942.238f, 106.066f), Vector3(863.593f, 915.671f, 104.714f))) + ) + ZipLinePaths( + new ZipLinePath(120, false, List(Vector3(880.683f, 916.696f, 107.418f), Vector3(904.488f, 954.484f, 101.787f))) + ) + ZipLinePaths( + new ZipLinePath(121, false, List(Vector3(879.234f, 989.582f, 103.583f), Vector3(837.231f, 952.58f, 106.075f))) + ) + ZipLinePaths( + new ZipLinePath( + 122, + false, + List( + Vector3(871.672f, 905.395f, 105.726f), + Vector3(823.879f, 892.325f, 112.638f), + Vector3(802.849f, 886.573f, 116.464f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(123, false, List(Vector3(769.124f, 986.574f, 106.143f), Vector3(781.102f, 955.846f, 106.11f))) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(725.343f, 990.882f, 107.057f), + Vector3(692.244f, 962.514f, 132.431f), + Vector3(690.038f, 960.623f, 132.964f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(125, false, List(Vector3(778.287f, 866.552f, 124.271f), Vector3(691.082f, 941.073f, 133.163f))) + ) + ZipLinePaths( + new ZipLinePath( + 126, + false, + List(Vector3(1489.014f, 1467.955f, 106.115f), Vector3(1460.493f, 1455.135f, 101.698f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 127, + false, + List(Vector3(1483.446f, 1325.031f, 100.653f), Vector3(1458.632f, 1338.057f, 104.735f)) + ) + ) + ZipLinePaths( + new ZipLinePath(128, false, List(Vector3(1471.073f, 1301.982f, 95f), Vector3(1485.411f, 1312.821f, 94.284f))) + ) + ZipLinePaths( + new ZipLinePath(129, false, List(Vector3(755.07f, 1030.528f, 96.662f), Vector3(816.714f, 1025.964f, 91.662f))) + ) + ZipLinePaths( + new ZipLinePath(130, false, List(Vector3(777.204f, 996.672f, 107.073f), Vector3(820.392f, 1000.457f, 91.69f))) + ) + ZipLinePaths( + new ZipLinePath(131, true, List(Vector3(790.674f, 923.262f, 103.779f), Vector3(784.461f, 914.388f, 130.332f))) + ) + ZipLinePaths( + new ZipLinePath(132, true, List(Vector3(782.729f, 908.18f, 130.323f), Vector3(789.14f, 914.457f, 103.779f))) + ) + ZipLinePaths( + new ZipLinePath(133, true, List(Vector3(910.317f, 1345.869f, 86.23f), Vector3(906.549f, 1335.888f, 107.892f))) + ) + ZipLinePaths( + new ZipLinePath(134, true, List(Vector3(908.223f, 1341.816f, 107.892f), Vector3(905.648f, 1338.911f, 86.23f))) + ) + ZipLinePaths( + new ZipLinePath( + 135, + false, + List(Vector3(833.232f, 1393.407f, 121.577f), Vector3(915.637f, 1438.261f, 116.831f)) + ) + ) + ZipLinePaths( + new ZipLinePath(136, false, List(Vector3(982.46f, 1518.909f, 107.592f), Vector3(917.577f, 1450.059f, 116.832f))) + ) + ZipLinePaths( + new ZipLinePath(137, true, List(Vector3(924.848f, 1451.53f, 86.33f), Vector3(915.991f, 1444.015f, 116.33f))) + ) + ZipLinePaths( + new ZipLinePath( + 138, + true, + List( + Vector3(920.928f, 1445.093f, 116.33f), + Vector3(919.855f, 1444.008f, 115.98f), + Vector3(916.421f, 1442.794f, 86.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(139, true, List(Vector3(828.811f, 1428.899f, 90.331f), Vector3(811.334f, 1398.369f, 121.076f))) + ) + ZipLinePaths( + new ZipLinePath(140, false, List(Vector3(936.083f, 1393.338f, 95.643f), Vector3(1026.755f, 1400.969f, 95.813f))) + ) + ZipLinePaths( + new ZipLinePath(141, false, List(Vector3(856.993f, 1184.88f, 100.512f), Vector3(839.109f, 1250.231f, 106.497f))) + ) + ZipLinePaths( + new ZipLinePath(142, true, List(Vector3(1093.28f, 1376.753f, 90.63f), Vector3(1091.116f, 1365.163f, 122.091f))) + ) + ZipLinePaths( + new ZipLinePath(143, true, List(Vector3(1096.055f, 1369.18f, 122.091f), Vector3(1093.978f, 1367.448f, 90.63f))) + ) + ZipLinePaths( + new ZipLinePath( + 144, + false, + List( + Vector3(1084.243f, 1366.022f, 122.611f), + Vector3(1033.715f, 1403.167f, 162.301f), + Vector3(1026.497f, 1408.473f, 162.841f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 145, + false, + List( + Vector3(956.997f, 1231.56f, 109.347f), + Vector3(954.537f, 1320.416f, 163.139f), + Vector3(954.457f, 1323.283f, 163.636f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(146, false, List(Vector3(1064.878f, 1173.023f, 154.9f), Vector3(1089.589f, 1126.197f, 155f))) + ) + ZipLinePaths( + new ZipLinePath( + 147, + false, + List( + Vector3(1006.476f, 1222.634f, 109.337f), + Vector3(1024.688f, 1177.964f, 165.896f), + Vector3(1025.902f, 1174.985f, 166.36f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 148, + false, + List( + Vector3(1086.897f, 1315.525f, 96.781f), + Vector3(1084.806f, 1209.158f, 166.286f), + Vector3(1084.739f, 1205.727f, 166.361f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 149, + false, + List( + Vector3(1305.024f, 1142.624f, 102.434f), + Vector3(1251.996f, 1106.28f, 172.469f), + Vector3(1248.461f, 1103.857f, 172.979f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 150, + false, + List(Vector3(1161.901f, 1023.071f, 117.15f), Vector3(1094.77f, 1099.419f, 153.244f)) + ) + ) + ZipLinePaths( + new ZipLinePath(151, true, List(Vector3(889.775f, 1487.223f, 91.186f), Vector3(869.803f, 1471.874f, 101.23f))) + ) + ZipLinePaths( + new ZipLinePath(152, true, List(Vector3(889.786f, 1463.643f, 101.23f), Vector3(875.143f, 1455.936f, 91.186f))) + ) + ZipLinePaths( + new ZipLinePath(153, true, List(Vector3(1415.815f, 847.147f, 92.086f), Vector3(1400.802f, 839.966f, 102.13f))) + ) + ZipLinePaths( + new ZipLinePath(154, true, List(Vector3(1406.021f, 860.572f, 102.13f), Vector3(1383.189f, 857.817f, 92.086f))) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(1043.41f, 408.428f, 103.135f), + Vector3(1034.259f, 441.256f, 107.824f), + Vector3(1003.909f, 461.383f, 108.513f), + Vector3(964.41f, 480.238f, 108.113f), + Vector3(932.811f, 494.262f, 103.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + false, + List( + Vector3(879.653f, 506.603f, 103.138f), + Vector3(877.332f, 531.712f, 105.171f), + Vector3(877.61f, 556.821f, 91.207f), + Vector3(878.967f, 627.04f, 92.694f), + Vector3(885.924f, 657.259f, 88.68f), + Vector3(904.345f, 693.461f, 83.138f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(157, false, List(Vector3(945.611f, 828.543f, 94.343f), Vector3(969.089f, 916.077f, 164.71f))) + ) + ZipLinePaths( + new ZipLinePath( + 158, + false, + List( + Vector3(251.005f, 1006.488f, 83.141f), + Vector3(278.893f, 1007.049f, 97.949f), + Vector3(317.358f, 1008.267f, 109.649f), + Vector3(355.824f, 986.086f, 105.349f), + Vector3(376.98f, 977.201f, 103.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 159, + false, + List( + Vector3(375.611f, 1014.701f, 103.149f), + Vector3(381.423f, 1010.204f, 105.862f), + Vector3(447.637f, 1008.626f, 90.749f), + Vector3(461.244f, 1020.038f, 83.149f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 160, + false, + List( + Vector3(545.645f, 1102.242f, 83.116f), + Vector3(596.275f, 1099.627f, 84.612f), + Vector3(644.906f, 1119.313f, 85.692f), + Vector3(660.903f, 1127.65f, 83.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(161, false, List(Vector3(902.807f, 1481.246f, 101.73f), Vector3(986.877f, 1529.592f, 102.592f))) + ) + ZipLinePaths( + new ZipLinePath(162, false, List(Vector3(814.772f, 1175.312f, 100.51f), Vector3(781.371f, 1305.043f, 103.731f))) + ) + ZipLinePaths( + new ZipLinePath( + 163, + false, + List(Vector3(1420.106f, 1047.818f, 98.511f), Vector3(1478.651f, 956.067f, 104.985f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 164, + false, + List(Vector3(1177.881f, 1157.518f, 111.616f), Vector3(1274.135f, 1154.874f, 92.959f)) + ) + ) + ZipLinePaths( + new ZipLinePath(165, true, List(Vector3(1151.406f, 1200.873f, 82.467f), Vector3(1155.773f, 1201.314f, 105.98f))) + ) + ZipLinePaths( + new ZipLinePath( + 166, + false, + List( + Vector3(1100.745f, 333.019f, 103.177f), + Vector3(1120.674f, 333.769f, 106.796f), + Vector3(1180.687f, 333.911f, 91.323f), + Vector3(1212.362f, 344.543f, 87.2f), + Vector3(1232.066f, 378.678f, 83.094f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 167, + false, + List( + Vector3(1242.328f, 432.765f, 83.142f), + Vector3(1257.104f, 433.065f, 86.714f), + Vector3(1292.681f, 433.366f, 72.293f), + Vector3(1343.033f, 433.967f, 68.738f), + Vector3(1367.716f, 434.261f, 63.142f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 168, + false, + List( + Vector3(1424.5f, 440.843f, 63.137f), + Vector3(1426.096f, 511.412f, 67.62f), + Vector3(1456.893f, 569.707f, 68.225f), + Vector3(1459.384f, 625.83f, 79.208f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 169, + false, + List( + Vector3(2056.6f, 1425.645f, 103.14f), + Vector3(1983.076f, 1426.488f, 105.286f), + Vector3(1957.552f, 1427.33f, 117.037f), + Vector3(1931.8f, 1427.768f, 120.163f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 170, + false, + List( + Vector3(1918.56f, 1424.729f, 123.115f), + Vector3(1853.468f, 1394.922f, 125.845f), + Vector3(1787.707f, 1392.389f, 103.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 171, + false, + List( + Vector3(1777.914f, 1349.613f, 103.138f), + Vector3(1778.386f, 1335.218f, 106.052f), + Vector3(1778.857f, 1283.823f, 87.669f), + Vector3(1746.873f, 1217.987f, 86.395f), + Vector3(1746.738f, 1162.087f, 83.138f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 172, + false, + List( + Vector3(1701.419f, 1137.503f, 83.135f), + Vector3(1651.437f, 1138.699f, 85.328f), + Vector3(1645.439f, 1138.843f, 83.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 173, + false, + List( + Vector3(1045.419f, 1970.538f, 103.14f), + Vector3(1120.109f, 1970.619f, 106.09f), + Vector3(1146.398f, 1970.7f, 117.88f), + Vector3(1173.128f, 1970.743f, 121.443f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 174, + false, + List( + Vector3(1208.467f, 1895.413f, 123.148f), + Vector3(1247.813f, 1870.331f, 125.945f), + Vector3(1310.558f, 1869.625f, 109.069f), + Vector3(1349.94f, 1869.559f, 95.826f), + Vector3(1369.513f, 1870.568f, 84.545f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 175, + false, + List( + Vector3(1421.55f, 1866.085f, 83.138f), + Vector3(1458.246f, 1791.885f, 86.285f), + Vector3(1457.935f, 1731.766f, 68.567f), + Vector3(1459.208f, 1682.72f, 63.138f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 176, + false, + List( + Vector3(948.021f, 2065.12f, 103.188f), + Vector3(866.812f, 2065.721f, 128.666f), + Vector3(816.304f, 2066.094f, 126.726f), + Vector3(809.371f, 2066.146f, 123.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 177, + false, + List( + Vector3(785.86f, 2020.291f, 123.141f), + Vector3(787.358f, 1953.837f, 126.085f), + Vector3(787.114f, 1889.222f, 106.325f), + Vector3(755.214f, 1825.132f, 106.961f), + Vector3(754.919f, 1770.084f, 85.079f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 178, + false, + List( + Vector3(727.728f, 1734.672f, 83.134f), + Vector3(747.409f, 1715.699f, 84.587f), + Vector3(770.091f, 1709.127f, 86.541f), + Vector3(834.453f, 1676.582f, 85.648f), + Vector3(845.365f, 1664.437f, 87.156f), + Vector3(845.236f, 1613.224f, 83.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 179, + false, + List( + Vector3(1176.424f, 1629.973f, 143.358f), + Vector3(1176.427f, 1641.788f, 140.92f), + Vector3(1176.43f, 1679.603f, 128.496f), + Vector3(1176.434f, 1713.663f, 123.333f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 180, + false, + List( + Vector3(1176.147f, 1746.984f, 132.155f), + Vector3(1175.973f, 1795.737f, 117.847f), + Vector3(1175.949f, 1802.428f, 113.756f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 181, + false, + List( + Vector3(1199.978f, 1815.422f, 118.22f), + Vector3(1205.888f, 1813.125f, 118.397f), + Vector3(1213.843f, 1799.985f, 118.398f), + Vector3(1243.82f, 1799.915f, 111.399f), + Vector3(1258.809f, 1799.88f, 106.563f), + Vector3(1273.798f, 1799.845f, 98.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 182, + false, + List( + Vector3(1324.259f, 1783.597f, 98.484f), + Vector3(1332.029f, 1782.574f, 98.551f), + Vector3(1341.288f, 1768.443f, 98.735f), + Vector3(1355.698f, 1767.96f, 95.7f), + Vector3(1370.107f, 1767.476f, 91.066f), + Vector3(1398.927f, 1766.51f, 83.897f), + Vector3(1399.036f, 1754.426f, 82.312f), + Vector3(1399.146f, 1734.343f, 75.628f), + Vector3(1399.255f, 1718.259f, 71.043f), + Vector3(1399.365f, 1702.176f, 63.859f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 183, + false, + List(Vector3(1153.673f, 1816.245f, 108.336f), Vector3(1115.768f, 1816.778f, 98.537f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 184, + false, + List( + Vector3(1096.022f, 1848.979f, 98.955f), + Vector3(1097.069f, 1893.221f, 98.075f), + Vector3(1134.716f, 1896.163f, 108.395f), + Vector3(1171.409f, 1895.447f, 119.434f), + Vector3(1177.339f, 1895.326f, 119.74f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 185, + false, + List( + Vector3(1081.349f, 1837.281f, 103.218f), + Vector3(1076.7f, 1845.944f, 103.449f), + Vector3(1065.451f, 1850.307f, 103.181f), + Vector3(1064.126f, 1871.715f, 108.399f), + Vector3(1063.133f, 1910.11f, 98.08f), + Vector3(1049.936f, 1910.607f, 97.92f), + Vector3(1046.238f, 1897.155f, 97.84f), + Vector3(1035.789f, 1897.13f, 97.8f), + Vector3(1033.74f, 1905.104f, 98.261f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 186, + false, + List( + Vector3(1328.07f, 680.513f, 143.204f), + Vector3(1314.583f, 679.882f, 144.113f), + Vector3(1301.096f, 679.251f, 143.222f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 187, + false, + List( + Vector3(1298.966f, 663.593f, 143.212f), + Vector3(1334.459f, 661.413f, 143.449f), + Vector3(1335.652f, 596.233f, 144.186f), + Vector3(1335.731f, 589.947f, 143.346f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 188, + false, + List( + Vector3(1325.227f, 568.298f, 148.411f), + Vector3(1312.914f, 568.05f, 153.289f), + Vector3(1256.247f, 566.409f, 138.091f), + Vector3(1256.38f, 556.749f, 137.691f), + Vector3(1256.514f, 547.089f, 134.392f), + Vector3(1256.78f, 527.769f, 128.209f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 189, + false, + List( + Vector3(1232.488f, 503.972f, 118.271f), + Vector3(1177.355f, 503.447f, 103.257f), + Vector3(1177.288f, 493.906f, 103.122f), + Vector3(1177.221f, 484.365f, 100.387f), + Vector3(1177.088f, 465.284f, 94.516f), + Vector3(1176.822f, 427.121f, 83.308f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 190, + true, + List( + Vector3(1460.291f, 635.074f, 82.052f), + Vector3(1420.606f, 658.542f, 103.255f), + Vector3(1348.379f, 701.254f, 155.5f), + Vector3(1338.461f, 711.356f, 142.652f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 191, + true, + List( + Vector3(1460.121f, 1669.773f, 62.635f), + Vector3(1462.283f, 1665.474f, 65.87f), + Vector3(1507.263f, 1576.061f, 93.342f), + Vector3(1529.32f, 1532.214f, 107.198f), + Vector3(1550.945f, 1489.227f, 120.782f), + Vector3(1572.57f, 1446.24f, 134.366f), + Vector3(1583.382f, 1424.747f, 142.313f), + Vector3(1585.577f, 1418.788f, 142.568f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 192, + true, + List( + Vector3(843.171f, 1604.511f, 82.635f), + Vector3(1081.584f, 1606.379f, 130.495f), + Vector3(1132.6f, 1606.779f, 140.524f), + Vector3(1173.225f, 1605.795f, 147.478f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 193, + false, + List( + Vector3(1614.569f, 1415.707f, 138.328f), + Vector3(1626.72f, 1415.726f, 136.133f), + Vector3(1638.871f, 1415.745f, 131.063f), + Vector3(1663.172f, 1415.782f, 124.323f), + Vector3(1711.775f, 1415.857f, 108.883f), + Vector3(1721.305f, 1415.871f, 103.923f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 194, + false, + List( + Vector3(1735.537f, 1404.107f, 103.196f), + Vector3(1721.896f, 1399.206f, 103.634f), + Vector3(1721.852f, 1370.805f, 103.243f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 195, + false, + List( + Vector3(658.194f, 952.284f, 128.38f), + Vector3(652.236f, 952.266f, 127.377f), + Vector3(646.278f, 952.248f, 125.698f), + Vector3(634.363f, 952.212f, 122.04f), + Vector3(610.532f, 952.14f, 114.424f), + Vector3(562.869f, 951.997f, 99.305f), + Vector3(540.468f, 951.929f, 92.103f), + Vector3(529.267f, 951.896f, 89.102f), + Vector3(518.067f, 951.862f, 83.825f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 196, + false, + List( + Vector3(503.81f, 962.852f, 83.211f), + Vector3(518.406f, 970.708f, 83.699f), + Vector3(518.408f, 994.66f, 83.232f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 197, + false, + List( + Vector3(492.349f, 1008.389f, 83.135f), + Vector3(511.868f, 1054.627f, 86.076f), + Vector3(526.104f, 1080.919f, 83.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 198, + false, + List( + Vector3(911.833f, 714.846f, 82.993f), + Vector3(936.165f, 763.965f, 96.014f), + Vector3(954.414f, 800.804f, 98.783f), + Vector3(960.497f, 813.084f, 98.139f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 199, + false, + List( + Vector3(676.057f, 1134.606f, 83.178f), + Vector3(725.964f, 1144.654f, 93.349f), + Vector3(775.871f, 1154.702f, 95.839f), + Vector3(805.229f, 1160.613f, 93.832f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 200, + false, + List( + Vector3(1459.819f, 1651.959f, 64.416f), + Vector3(1456.288f, 1610.835f, 86.097f), + Vector3(1453.64f, 1579.993f, 91.127f), + Vector3(1452.757f, 1569.712f, 90.906f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 201, + false, + List( + Vector3(1458.457f, 1545.826f, 90.791f), + Vector3(1479.788f, 1501.533f, 100.359f), + Vector3(1492.161f, 1475.843f, 106.12f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 202, + false, + List( + Vector3(1444.372f, 1548.139f, 90.82f), + Vector3(1432.067f, 1503.254f, 110.53f), + Vector3(1419.763f, 1458.368f, 128.818f), + Vector3(1407.458f, 1413.483f, 147.106f), + Vector3(1399.337f, 1383.859f, 159.624f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 203, + false, + List( + Vector3(1551.372f, 1446.798f, 106.066f), + Vector3(1575.322f, 1428.6f, 142.446f), + Vector3(1578.744f, 1426.001f, 143.072f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 204, + false, + List( + Vector3(1224.112f, 1046.429f, 98.511f), + Vector3(1258.135f, 1084.269f, 96.285f), + Vector3(1286.821f, 1116.172f, 92.591f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 205, + false, + List( + Vector3(841.821f, 1278.922f, 97.951f), + Vector3(915.183f, 1336.824f, 163.083f), + Vector3(917.549f, 1338.692f, 163.636f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 206, + false, + List( + Vector3(878.453f, 1386.561f, 97.851f), + Vector3(955.117f, 1405.787f, 162.33f), + Vector3(960.228f, 1407.069f, 162.789f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 207, + false, + List( + Vector3(1526.881f, 964.484f, 92.484f), + Vector3(1400.135f, 1008.218f, 163.631f), + Vector3(1394.22f, 1010.259f, 163.564f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 208, + false, + List( + Vector3(1435.638f, 937.309f, 94.831f), + Vector3(1340.67f, 920.751f, 162.022f), + Vector3(1334.338f, 919.647f, 162.236f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 209, + false, + List( + Vector3(1043.013f, 1001.463f, 94.331f), + Vector3(1059.675f, 1063.189f, 154.808f), + Vector3(1060.786f, 1067.304f, 155f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 210, + false, + List( + Vector3(1262.21f, 1329.985f, 87.831f), + Vector3(1278.973f, 1277.129f, 159.708f), + Vector3(1281.368f, 1269.578f, 160.491f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 211, + false, + List( + Vector3(1310.729f, 1248.042f, 87.731f), + Vector3(1351.306f, 1316.913f, 159.718f), + Vector3(1352.615f, 1319.135f, 160.182f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 212, + false, + List( + Vector3(922.83f, 1034.618f, 94.431f), + Vector3(946.139f, 947.914f, 164.469f), + Vector3(946.891f, 945.117f, 164.767f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 213, + false, + List( + Vector3(981.12f, 1104.231f, 94.331f), + Vector3(873.547f, 1056.63f, 176.978f), + Vector3(870.077f, 1055.095f, 176.961f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 214, + false, + List( + Vector3(1369.892f, 1371.893f, 87.431f), + Vector3(1410.201f, 1283.777f, 174.098f), + Vector3(1411.501f, 1280.935f, 174.004f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 215, + false, + List( + Vector3(1624.058f, 1140.65f, 82.998f), + Vector3(1575.346f, 1141.37f, 98.857f), + Vector3(1545.144f, 1141.817f, 101.83f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 216, + false, + List( + Vector3(1514.803f, 1155.469f, 95.704f), + Vector3(1441.047f, 1240.007f, 174.127f), + Vector3(1438.668f, 1242.734f, 174.386f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(217, false, List(Vector3(1476.13f, 1135.492f, 101.86f), Vector3(1414.559f, 1079.969f, 98.51f))) + ) + ZipLinePaths( + new ZipLinePath( + 218, + true, + List( + Vector3(905.255f, 699.031f, 82.635f), + Vector3(903.263f, 701.231f, 84.745f), + Vector3(858.767f, 750.357f, 93.63f), + Vector3(854.782f, 754.756f, 97.496f), + Vector3(853.454f, 756.222f, 100.281f), + Vector3(818.919f, 794.349f, 107.871f), + Vector3(785.049f, 831.744f, 115.315f), + Vector3(751.179f, 869.137f, 122.759f), + Vector3(717.309f, 906.531f, 130.203f), + Vector3(683.438f, 943.925f, 137.646f), + Vector3(679.089f, 949.558f, 132.684f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 219, + true, + List( + Vector3(1165.727f, 1602.266f, 147.746f), + Vector3(1116.728f, 1601.143f, 139.366f), + Vector3(886.441f, 1595.865f, 129.447f), + Vector3(843.985f, 1594.922f, 82.706f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 220, + false, + List( + Vector3(1453.183f, 659.325f, 83.215f), + Vector3(1437.37f, 707.601f, 91.141f), + Vector3(1421.557f, 755.877f, 95.635f), + Vector3(1405.744f, 804.154f, 100.129f), + Vector3(1395.202f, 836.338f, 102.633f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 221, + false, + List( + Vector3(845.714f, 1588.779f, 82.734f), + Vector3(855.47f, 1540.323f, 95.6f), + Vector3(865.227f, 1491.868f, 102.057f), + Vector3(867.568f, 1480.238f, 101.737f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 222, + true, + List( + Vector3(686.309f, 945.118f, 132.633f), + Vector3(720.441f, 907.992f, 125.999f), + Vector3(754.573f, 870.865f, 118.411f), + Vector3(776.658f, 846.842f, 120.555f), + Vector3(811.459f, 808.988f, 112.818f), + Vector3(845.591f, 771.862f, 105.23f), + Vector3(908.97f, 709.205f, 82.552f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 223, + true, + List( + Vector3(1344.796f, 718.476f, 142.725f), + Vector3(1411.682f, 675.619f, 123.587f), + Vector3(1450.89f, 650.495f, 102.795f), + Vector3(1457.81f, 646.062f, 82.762f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 224, + true, + List( + Vector3(1585.758f, 1426.108f, 142.747f), + Vector3(1562.474f, 1469.058f, 129.343f), + Vector3(1539.19f, 1512.008f, 114.71f), + Vector3(1515.907f, 1554.959f, 100.077f), + Vector3(1459.865f, 1658.76f, 63.264f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 225, + false, + List( + Vector3(978.333f, 1281.95f, 109.419f), + Vector3(998.278f, 1375.536f, 162.879f), + Vector3(999.608f, 1381.775f, 162.859f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 226, + false, + List( + Vector3(1323.318f, 999.538f, 108.132f), + Vector3(1352.668f, 1032.694f, 163.149f), + Vector3(1354.625f, 1034.905f, 163.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 227, + false, + List( + Vector3(1416.023f, 1100.672f, 96.11f), + Vector3(1396.498f, 1232.051f, 169.279f), + Vector3(1395.869f, 1236.289f, 168.543f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 228, + false, + List(Vector3(1355.816f, 1040.459f, 163.511f), Vector3(1246.45f, 1095.878f, 172.978f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 229, + false, + List( + Vector3(1363.911f, 1075.694f, 96.074f), + Vector3(1252.925f, 1098.509f, 173.077f), + Vector3(1249.345f, 1099.245f, 172.98f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 230, + false, + List( + Vector3(1296.075f, 1036.364f, 96.131f), + Vector3(1246.252f, 1040.264f, 97.856f), + Vector3(1227.319f, 1041.746f, 98.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 231, + false, + List( + Vector3(1030.411f, 1318.939f, 111.42f), + Vector3(1028.982f, 1397.782f, 161.917f), + Vector3(1028.886f, 1403.039f, 162.832f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 232, + false, + List( + Vector3(1346.985f, 726.494f, 143.072f), + Vector3(1377.341f, 766.739f, 135.821f), + Vector3(1407.697f, 806.984f, 128.102f), + Vector3(1438.053f, 847.229f, 120.384f), + Vector3(1458.291f, 874.06f, 115.551f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 233, + false, + List( + Vector3(1342.67f, 730.091f, 142.989f), + Vector3(1344.678f, 735.667f, 142.661f), + Vector3(1374.8f, 819.304f, 99.518f), + Vector3(1379.39f, 832.049f, 88.689f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 234, + false, + List( + Vector3(869.078f, 1467.295f, 101.744f), + Vector3(840.171f, 1428.178f, 116.211f), + Vector3(830.054f, 1414.486f, 120.844f), + Vector3(824.996f, 1407.641f, 121.96f), + Vector3(819.937f, 1400.795f, 121.59f) + ) + ) + ) } ZipLines() diff --git a/pslogin/src/main/scala/zonemaps/Ugd02.scala b/pslogin/src/main/scala/zonemaps/Ugd02.scala index 37f817ee..eda42b99 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd02.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd02.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd02 { // Hunhau Building10093() def Building10093(): Unit = { // Name: ceiling_bldg_a_10093 Type: ceiling_bldg_a GUID: 1, MapID: 10093 - LocalBuilding("ceiling_bldg_a_10093", 1, 10093, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(922.89f, 1195.49f, 317.79f), Vector3(0f, 0f, 330f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10093", + 1, + 10093, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(922.89f, 1195.49f, 317.79f), + Vector3(0f, 0f, 330f), + ceiling_bldg_a + ) + ) + ) LocalObject(1080, Door.Constructor(Vector3(914.628f, 1209.148f, 319.569f)), owning_building_guid = 1) LocalObject(1092, Door.Constructor(Vector3(930.5852f, 1178.308f, 325.075f)), owning_building_guid = 1) LocalObject(1093, Door.Constructor(Vector3(939.3843f, 1190.549f, 319.569f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd02 { // Hunhau Building10107() def Building10107(): Unit = { // Name: ceiling_bldg_a_10107 Type: ceiling_bldg_a GUID: 2, MapID: 10107 - LocalBuilding("ceiling_bldg_a_10107", 2, 10107, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(960.11f, 1317.32f, 314.7f), Vector3(0f, 0f, 330f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10107", + 2, + 10107, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(960.11f, 1317.32f, 314.7f), + Vector3(0f, 0f, 330f), + ceiling_bldg_a + ) + ) + ) LocalObject(1097, Door.Constructor(Vector3(951.848f, 1330.978f, 316.479f)), owning_building_guid = 2) LocalObject(1102, Door.Constructor(Vector3(967.8052f, 1300.138f, 321.985f)), owning_building_guid = 2) LocalObject(1105, Door.Constructor(Vector3(976.6042f, 1312.379f, 316.479f)), owning_building_guid = 2) @@ -40,7 +64,19 @@ object Ugd02 { // Hunhau Building10105() def Building10105(): Unit = { // Name: ceiling_bldg_a_10105 Type: ceiling_bldg_a GUID: 3, MapID: 10105 - LocalBuilding("ceiling_bldg_a_10105", 3, 10105, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1178.77f, 1916.87f, 236.1f), Vector3(0f, 0f, 330f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10105", + 3, + 10105, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1178.77f, 1916.87f, 236.1f), + Vector3(0f, 0f, 330f), + ceiling_bldg_a + ) + ) + ) LocalObject(1134, Door.Constructor(Vector3(1170.508f, 1930.528f, 237.879f)), owning_building_guid = 3) LocalObject(1137, Door.Constructor(Vector3(1186.465f, 1899.688f, 243.385f)), owning_building_guid = 3) LocalObject(1141, Door.Constructor(Vector3(1195.264f, 1911.929f, 237.879f)), owning_building_guid = 3) @@ -50,7 +86,19 @@ object Ugd02 { // Hunhau Building10084() def Building10084(): Unit = { // Name: ceiling_bldg_a_10084 Type: ceiling_bldg_a GUID: 4, MapID: 10084 - LocalBuilding("ceiling_bldg_a_10084", 4, 10084, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1331.57f, 907.05f, 299.45f), Vector3(0f, 0f, 0f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10084", + 4, + 10084, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1331.57f, 907.05f, 299.45f), + Vector3(0f, 0f, 0f), + ceiling_bldg_a + ) + ) + ) LocalObject(1190, Door.Constructor(Vector3(1317.586f, 914.747f, 301.229f)), owning_building_guid = 4) LocalObject(1194, Door.Constructor(Vector3(1346.825f, 896.018f, 306.735f)), owning_building_guid = 4) LocalObject(1195, Door.Constructor(Vector3(1346.825f, 920.018f, 306.735f)), owning_building_guid = 4) @@ -60,7 +108,19 @@ object Ugd02 { // Hunhau Building10108() def Building10108(): Unit = { // Name: ceiling_bldg_b_10108 Type: ceiling_bldg_b GUID: 5, MapID: 10108 - LocalBuilding("ceiling_bldg_b_10108", 5, 10108, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(710.38f, 1451.92f, 264.12f), Vector3(0f, 0f, 315f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10108", + 5, + 10108, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(710.38f, 1451.92f, 264.12f), + Vector3(0f, 0f, 315f), + ceiling_bldg_b + ) + ) + ) LocalObject(1017, Door.Constructor(Vector3(713.9198f, 1446.952f, 265.899f)), owning_building_guid = 5) LocalObject(1020, Door.Constructor(Vector3(723.465f, 1462.155f, 265.899f)), owning_building_guid = 5) } @@ -68,7 +128,19 @@ object Ugd02 { // Hunhau Building10078() def Building10078(): Unit = { // Name: ceiling_bldg_b_10078 Type: ceiling_bldg_b GUID: 6, MapID: 10078 - LocalBuilding("ceiling_bldg_b_10078", 6, 10078, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(861.71f, 528.17f, 218.06f), Vector3(0f, 0f, 0f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10078", + 6, + 10078, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(861.71f, 528.17f, 218.06f), + Vector3(0f, 0f, 0f), + ceiling_bldg_b + ) + ) + ) LocalObject(1053, Door.Constructor(Vector3(863.725f, 544.66f, 219.839f)), owning_building_guid = 6) LocalObject(1056, Door.Constructor(Vector3(867.726f, 527.16f, 219.839f)), owning_building_guid = 6) } @@ -76,7 +148,19 @@ object Ugd02 { // Hunhau Building10090() def Building10090(): Unit = { // Name: ceiling_bldg_b_10090 Type: ceiling_bldg_b GUID: 7, MapID: 10090 - LocalBuilding("ceiling_bldg_b_10090", 7, 10090, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(973.1f, 1046.64f, 288.2f), Vector3(0f, 0f, 260f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10090", + 7, + 10090, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(973.1f, 1046.64f, 288.2f), + Vector3(0f, 0f, 260f), + ceiling_bldg_b + ) + ) + ) LocalObject(1104, Door.Constructor(Vector3(971.0607f, 1040.891f, 289.979f)), owning_building_guid = 7) LocalObject(1109, Door.Constructor(Vector3(988.9896f, 1041.792f, 289.979f)), owning_building_guid = 7) } @@ -84,7 +168,19 @@ object Ugd02 { // Hunhau Building10100() def Building10100(): Unit = { // Name: ceiling_bldg_b_10100 Type: ceiling_bldg_b GUID: 8, MapID: 10100 - LocalBuilding("ceiling_bldg_b_10100", 8, 10100, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1217.11f, 1317.72f, 291.99f), Vector3(0f, 0f, 100f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10100", + 8, + 10100, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1217.11f, 1317.72f, 291.99f), + Vector3(0f, 0f, 100f), + ceiling_bldg_b + ) + ) + ) LocalObject(1144, Door.Constructor(Vector3(1200.521f, 1316.841f, 293.769f)), owning_building_guid = 8) LocalObject(1150, Door.Constructor(Vector3(1217.06f, 1323.82f, 293.769f)), owning_building_guid = 8) } @@ -92,7 +188,19 @@ object Ugd02 { // Hunhau Building10664() def Building10664(): Unit = { // Name: ceiling_bldg_b_10664 Type: ceiling_bldg_b GUID: 9, MapID: 10664 - LocalBuilding("ceiling_bldg_b_10664", 9, 10664, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1268.66f, 785.69f, 273.36f), Vector3(0f, 0f, 25f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10664", + 9, + 10664, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1268.66f, 785.69f, 273.36f), + Vector3(0f, 0f, 25f), + ceiling_bldg_b + ) + ) + ) LocalObject(1159, Door.Constructor(Vector3(1263.517f, 801.4866f, 275.139f)), owning_building_guid = 9) LocalObject(1168, Door.Constructor(Vector3(1274.539f, 787.3171f, 275.139f)), owning_building_guid = 9) } @@ -100,7 +208,19 @@ object Ugd02 { // Hunhau Building10101() def Building10101(): Unit = { // Name: ceiling_bldg_c_10101 Type: ceiling_bldg_c GUID: 10, MapID: 10101 - LocalBuilding("ceiling_bldg_c_10101", 10, 10101, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(732.43f, 973.16f, 280.28f), Vector3(0f, 0f, 45f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10101", + 10, + 10101, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(732.43f, 973.16f, 280.28f), + Vector3(0f, 0f, 45f), + ceiling_bldg_c + ) + ) + ) LocalObject(1021, Door.Constructor(Vector3(728.5452f, 974.9094f, 282.059f)), owning_building_guid = 10) LocalObject(1024, Door.Constructor(Vector3(751.15f, 1019.471f, 282.059f)), owning_building_guid = 10) LocalObject(1029, Door.Constructor(Vector3(773.0703f, 997.5509f, 282.059f)), owning_building_guid = 10) @@ -109,7 +229,19 @@ object Ugd02 { // Hunhau Building10095() def Building10095(): Unit = { // Name: ceiling_bldg_c_10095 Type: ceiling_bldg_c GUID: 11, MapID: 10095 - LocalBuilding("ceiling_bldg_c_10095", 11, 10095, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(834.75f, 1318.05f, 293.22f), Vector3(0f, 0f, 60f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10095", + 11, + 10095, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(834.75f, 1318.05f, 293.22f), + Vector3(0f, 0f, 60f), + ceiling_bldg_c + ) + ) + ) LocalObject(1042, Door.Constructor(Vector3(830.5447f, 1318.734f, 294.999f)), owning_building_guid = 11) LocalObject(1045, Door.Constructor(Vector3(840.8458f, 1367.628f, 294.999f)), owning_building_guid = 11) LocalObject(1054, Door.Constructor(Vector3(867.6926f, 1352.128f, 294.999f)), owning_building_guid = 11) @@ -118,7 +250,19 @@ object Ugd02 { // Hunhau Building10091() def Building10091(): Unit = { // Name: ceiling_bldg_c_10091 Type: ceiling_bldg_c GUID: 12, MapID: 10091 - LocalBuilding("ceiling_bldg_c_10091", 12, 10091, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(860.22f, 1024.66f, 306.94f), Vector3(0f, 0f, 45f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10091", + 12, + 10091, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(860.22f, 1024.66f, 306.94f), + Vector3(0f, 0f, 45f), + ceiling_bldg_c + ) + ) + ) LocalObject(1049, Door.Constructor(Vector3(856.3351f, 1026.409f, 308.719f)), owning_building_guid = 12) LocalObject(1059, Door.Constructor(Vector3(878.9399f, 1070.971f, 308.719f)), owning_building_guid = 12) LocalObject(1073, Door.Constructor(Vector3(900.8602f, 1049.051f, 308.719f)), owning_building_guid = 12) @@ -127,7 +271,19 @@ object Ugd02 { // Hunhau Building10085() def Building10085(): Unit = { // Name: ceiling_bldg_c_10085 Type: ceiling_bldg_c GUID: 13, MapID: 10085 - LocalBuilding("ceiling_bldg_c_10085", 13, 10085, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1463.31f, 980.3f, 265.51f), Vector3(0f, 0f, 55f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10085", + 13, + 10085, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1463.31f, 980.3f, 265.51f), + Vector3(0f, 0f, 55f), + ceiling_bldg_c + ) + ) + ) LocalObject(1209, Door.Constructor(Vector3(1459.18f, 981.3482f, 267.289f)), owning_building_guid = 13) LocalObject(1210, Door.Constructor(Vector3(1473.704f, 1029.158f, 267.289f)), owning_building_guid = 13) LocalObject(1211, Door.Constructor(Vector3(1499.097f, 1011.378f, 267.289f)), owning_building_guid = 13) @@ -136,7 +292,19 @@ object Ugd02 { // Hunhau Building10094() def Building10094(): Unit = { // Name: ceiling_bldg_e_10094 Type: ceiling_bldg_e GUID: 14, MapID: 10094 - LocalBuilding("ceiling_bldg_e_10094", 14, 10094, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(697.23f, 1294.78f, 269.71f), Vector3(0f, 0f, 0f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10094", + 14, + 10094, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(697.23f, 1294.78f, 269.71f), + Vector3(0f, 0f, 0f), + ceiling_bldg_e + ) + ) + ) LocalObject(1014, Door.Constructor(Vector3(685.214f, 1293.79f, 271.489f)), owning_building_guid = 14) LocalObject(1016, Door.Constructor(Vector3(701.214f, 1327.29f, 276.989f)), owning_building_guid = 14) LocalObject(1018, Door.Constructor(Vector3(716.24f, 1322.796f, 271.489f)), owning_building_guid = 14) @@ -146,7 +314,19 @@ object Ugd02 { // Hunhau Building10079() def Building10079(): Unit = { // Name: ceiling_bldg_e_10079 Type: ceiling_bldg_e GUID: 15, MapID: 10079 - LocalBuilding("ceiling_bldg_e_10079", 15, 10079, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(866.94f, 711.23f, 240.12f), Vector3(0f, 0f, 295f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10079", + 15, + 10079, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(866.94f, 711.23f, 240.12f), + Vector3(0f, 0f, 295f), + ceiling_bldg_e + ) + ) + ) LocalObject(1051, Door.Constructor(Vector3(860.9646f, 721.7018f, 241.899f)), owning_building_guid = 15) LocalObject(1063, Door.Constructor(Vector3(884.7747f, 691.9509f, 247.399f)), owning_building_guid = 15) LocalObject(1070, Door.Constructor(Vector3(898.0878f, 721.3586f, 247.399f)), owning_building_guid = 15) @@ -156,7 +336,19 @@ object Ugd02 { // Hunhau Building10096() def Building10096(): Unit = { // Name: ceiling_bldg_e_10096 Type: ceiling_bldg_e GUID: 16, MapID: 10096 - LocalBuilding("ceiling_bldg_e_10096", 16, 10096, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(907.97f, 1468.88f, 268.54f), Vector3(0f, 0f, 45f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10096", + 16, + 10096, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(907.97f, 1468.88f, 268.54f), + Vector3(0f, 0f, 45f), + ceiling_bldg_e + ) + ) + ) LocalObject(1067, Door.Constructor(Vector3(887.7991f, 1494.685f, 275.819f)), owning_building_guid = 16) LocalObject(1071, Door.Constructor(Vector3(900.1734f, 1459.683f, 270.319f)), owning_building_guid = 16) LocalObject(1074, Door.Constructor(Vector3(901.6017f, 1502.132f, 270.319f)), owning_building_guid = 16) @@ -166,7 +358,19 @@ object Ugd02 { // Hunhau Building10102() def Building10102(): Unit = { // Name: ceiling_bldg_e_10102 Type: ceiling_bldg_e GUID: 17, MapID: 10102 - LocalBuilding("ceiling_bldg_e_10102", 17, 10102, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1051.15f, 1568.76f, 271.69f), Vector3(0f, 0f, 0f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10102", + 17, + 10102, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1051.15f, 1568.76f, 271.69f), + Vector3(0f, 0f, 0f), + ceiling_bldg_e + ) + ) + ) LocalObject(1112, Door.Constructor(Vector3(1039.134f, 1567.77f, 273.469f)), owning_building_guid = 17) LocalObject(1113, Door.Constructor(Vector3(1055.134f, 1601.27f, 278.969f)), owning_building_guid = 17) LocalObject(1114, Door.Constructor(Vector3(1070.16f, 1596.776f, 273.469f)), owning_building_guid = 17) @@ -176,7 +380,19 @@ object Ugd02 { // Hunhau Building10086() def Building10086(): Unit = { // Name: ceiling_bldg_e_10086 Type: ceiling_bldg_e GUID: 18, MapID: 10086 - LocalBuilding("ceiling_bldg_e_10086", 18, 10086, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1364.98f, 1446.91f, 258.66f), Vector3(0f, 0f, 0f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10086", + 18, + 10086, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1364.98f, 1446.91f, 258.66f), + Vector3(0f, 0f, 0f), + ceiling_bldg_e + ) + ) + ) LocalObject(1197, Door.Constructor(Vector3(1352.964f, 1445.92f, 260.439f)), owning_building_guid = 18) LocalObject(1199, Door.Constructor(Vector3(1368.964f, 1479.42f, 265.939f)), owning_building_guid = 18) LocalObject(1202, Door.Constructor(Vector3(1383.99f, 1474.926f, 260.439f)), owning_building_guid = 18) @@ -186,7 +402,19 @@ object Ugd02 { // Hunhau Building10092() def Building10092(): Unit = { // Name: ceiling_bldg_f_10092 Type: ceiling_bldg_f GUID: 19, MapID: 10092 - LocalBuilding("ceiling_bldg_f_10092", 19, 10092, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(765.59f, 1161.9f, 289.99f), Vector3(0f, 0f, 110f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10092", + 19, + 10092, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(765.59f, 1161.9f, 289.99f), + Vector3(0f, 0f, 110f), + ceiling_bldg_f + ) + ) + ) LocalObject(1022, Door.Constructor(Vector3(734.7006f, 1163.41f, 291.769f)), owning_building_guid = 19) LocalObject(1033, Door.Constructor(Vector3(791.3768f, 1149.481f, 291.769f)), owning_building_guid = 19) } @@ -194,7 +422,19 @@ object Ugd02 { // Hunhau Building10778() def Building10778(): Unit = { // Name: ceiling_bldg_f_10778 Type: ceiling_bldg_f GUID: 20, MapID: 10778 - LocalBuilding("ceiling_bldg_f_10778", 20, 10778, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(822.13f, 896.66f, 253.11f), Vector3(0f, 0f, 250f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10778", + 20, + 10778, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(822.13f, 896.66f, 253.11f), + Vector3(0f, 0f, 250f), + ceiling_bldg_f + ) + ) + ) LocalObject(1036, Door.Constructor(Vector3(810.3592f, 922.7492f, 254.889f)), owning_building_guid = 20) LocalObject(1047, Door.Constructor(Vector3(844.8219f, 875.6477f, 254.889f)), owning_building_guid = 20) } @@ -202,7 +442,19 @@ object Ugd02 { // Hunhau Building10106() def Building10106(): Unit = { // Name: ceiling_bldg_f_10106 Type: ceiling_bldg_f GUID: 21, MapID: 10106 - LocalBuilding("ceiling_bldg_f_10106", 21, 10106, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1198.46f, 1426.56f, 309.72f), Vector3(0f, 0f, 50f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10106", + 21, + 10106, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1198.46f, 1426.56f, 309.72f), + Vector3(0f, 0f, 50f), + ceiling_bldg_f + ) + ) + ) LocalObject(1136, Door.Constructor(Vector3(1184.323f, 1454.066f, 311.499f)), owning_building_guid = 21) LocalObject(1145, Door.Constructor(Vector3(1200.598f, 1398.018f, 311.499f)), owning_building_guid = 21) } @@ -210,7 +462,19 @@ object Ugd02 { // Hunhau Building10080() def Building10080(): Unit = { // Name: ceiling_bldg_g_10080 Type: ceiling_bldg_g GUID: 22, MapID: 10080 - LocalBuilding("ceiling_bldg_g_10080", 22, 10080, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(759.5f, 747.28f, 248.37f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10080", + 22, + 10080, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(759.5f, 747.28f, 248.37f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(1025, Door.Constructor(Vector3(751.516f, 730.77f, 250.149f)), owning_building_guid = 22) LocalObject(1026, Door.Constructor(Vector3(759.516f, 764.77f, 250.149f)), owning_building_guid = 22) } @@ -218,7 +482,19 @@ object Ugd02 { // Hunhau Building10087() def Building10087(): Unit = { // Name: ceiling_bldg_g_10087 Type: ceiling_bldg_g GUID: 23, MapID: 10087 - LocalBuilding("ceiling_bldg_g_10087", 23, 10087, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1159.94f, 1287.12f, 309.56f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10087", + 23, + 10087, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1159.94f, 1287.12f, 309.56f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(1130, Door.Constructor(Vector3(1151.956f, 1270.61f, 311.339f)), owning_building_guid = 23) LocalObject(1131, Door.Constructor(Vector3(1159.956f, 1304.61f, 311.339f)), owning_building_guid = 23) } @@ -226,7 +502,19 @@ object Ugd02 { // Hunhau Building10083() def Building10083(): Unit = { // Name: ceiling_bldg_g_10083 Type: ceiling_bldg_g GUID: 24, MapID: 10083 - LocalBuilding("ceiling_bldg_g_10083", 24, 10083, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1214.34f, 914.27f, 295.15f), Vector3(0f, 0f, 15f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10083", + 24, + 10083, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1214.34f, 914.27f, 295.15f), + Vector3(0f, 0f, 15f), + ceiling_bldg_g + ) + ) + ) LocalObject(1148, Door.Constructor(Vector3(1209.829f, 931.1682f, 296.929f)), owning_building_guid = 24) LocalObject(1149, Door.Constructor(Vector3(1210.901f, 896.2562f, 296.929f)), owning_building_guid = 24) } @@ -234,7 +522,19 @@ object Ugd02 { // Hunhau Building10081() def Building10081(): Unit = { // Name: ceiling_bldg_h_10081 Type: ceiling_bldg_h GUID: 25, MapID: 10081 - LocalBuilding("ceiling_bldg_h_10081", 25, 10081, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(958.95f, 790.67f, 267.91f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10081", + 25, + 10081, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(958.95f, 790.67f, 267.91f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(1094, Door.Constructor(Vector3(942.46f, 786.686f, 269.689f)), owning_building_guid = 25) LocalObject(1098, Door.Constructor(Vector3(962.934f, 807.18f, 269.689f)), owning_building_guid = 25) LocalObject(1103, Door.Constructor(Vector3(970.035f, 779.482f, 272.189f)), owning_building_guid = 25) @@ -243,7 +543,19 @@ object Ugd02 { // Hunhau Building10097() def Building10097(): Unit = { // Name: ceiling_bldg_h_10097 Type: ceiling_bldg_h GUID: 26, MapID: 10097 - LocalBuilding("ceiling_bldg_h_10097", 26, 10097, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(979.89f, 1487.96f, 269.47f), Vector3(0f, 0f, 335f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10097", + 26, + 10097, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(979.89f, 1487.96f, 269.47f), + Vector3(0f, 0f, 335f), + ceiling_bldg_h + ) + ) + ) LocalObject(1099, Door.Constructor(Vector3(963.2613f, 1491.318f, 271.249f)), owning_building_guid = 26) LocalObject(1107, Door.Constructor(Vector3(985.2082f, 1473.135f, 273.749f)), owning_building_guid = 26) LocalObject(1110, Door.Constructor(Vector3(990.4781f, 1501.239f, 271.249f)), owning_building_guid = 26) @@ -252,7 +564,19 @@ object Ugd02 { // Hunhau Building10082() def Building10082(): Unit = { // Name: ceiling_bldg_h_10082 Type: ceiling_bldg_h GUID: 27, MapID: 10082 - LocalBuilding("ceiling_bldg_h_10082", 27, 10082, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1111.54f, 899.56f, 290.68f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10082", + 27, + 10082, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1111.54f, 899.56f, 290.68f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(1117, Door.Constructor(Vector3(1095.05f, 895.576f, 292.459f)), owning_building_guid = 27) LocalObject(1123, Door.Constructor(Vector3(1115.524f, 916.07f, 292.459f)), owning_building_guid = 27) LocalObject(1125, Door.Constructor(Vector3(1122.625f, 888.372f, 294.959f)), owning_building_guid = 27) @@ -261,7 +585,19 @@ object Ugd02 { // Hunhau Building10088() def Building10088(): Unit = { // Name: ceiling_bldg_h_10088 Type: ceiling_bldg_h GUID: 28, MapID: 10088 - LocalBuilding("ceiling_bldg_h_10088", 28, 10088, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1127.33f, 1060.86f, 311.15f), Vector3(0f, 0f, 110f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10088", + 28, + 10088, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1127.33f, 1060.86f, 311.15f), + Vector3(0f, 0f, 110f), + ceiling_bldg_h + ) + ) + ) LocalObject(1122, Door.Constructor(Vector3(1110.453f, 1058.957f, 312.929f)), owning_building_guid = 28) LocalObject(1126, Door.Constructor(Vector3(1134.052f, 1075.103f, 315.429f)), owning_building_guid = 28) LocalObject(1128, Door.Constructor(Vector3(1136.714f, 1046.727f, 312.929f)), owning_building_guid = 28) @@ -270,7 +606,19 @@ object Ugd02 { // Hunhau Building10103() def Building10103(): Unit = { // Name: ceiling_bldg_h_10103 Type: ceiling_bldg_h GUID: 29, MapID: 10103 - LocalBuilding("ceiling_bldg_h_10103", 29, 10103, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1186.59f, 1648.29f, 264.54f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10103", + 29, + 10103, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1186.59f, 1648.29f, 264.54f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(1133, Door.Constructor(Vector3(1170.1f, 1644.306f, 266.319f)), owning_building_guid = 29) LocalObject(1139, Door.Constructor(Vector3(1190.574f, 1664.8f, 266.319f)), owning_building_guid = 29) LocalObject(1142, Door.Constructor(Vector3(1197.675f, 1637.102f, 268.819f)), owning_building_guid = 29) @@ -279,7 +627,19 @@ object Ugd02 { // Hunhau Building10098() def Building10098(): Unit = { // Name: ceiling_bldg_h_10098 Type: ceiling_bldg_h GUID: 30, MapID: 10098 - LocalBuilding("ceiling_bldg_h_10098", 30, 10098, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1268.22f, 1049.38f, 307.96f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10098", + 30, + 10098, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1268.22f, 1049.38f, 307.96f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(1154, Door.Constructor(Vector3(1251.73f, 1045.396f, 309.739f)), owning_building_guid = 30) LocalObject(1166, Door.Constructor(Vector3(1272.204f, 1065.89f, 309.739f)), owning_building_guid = 30) LocalObject(1173, Door.Constructor(Vector3(1279.305f, 1038.192f, 312.239f)), owning_building_guid = 30) @@ -288,7 +648,19 @@ object Ugd02 { // Hunhau Building10099() def Building10099(): Unit = { // Name: ceiling_bldg_i_10099 Type: ceiling_bldg_i GUID: 31, MapID: 10099 - LocalBuilding("ceiling_bldg_i_10099", 31, 10099, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1303.08f, 1215.7f, 303.15f), Vector3(0f, 0f, 0f), ceiling_bldg_i))) + LocalBuilding( + "ceiling_bldg_i_10099", + 31, + 10099, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1303.08f, 1215.7f, 303.15f), + Vector3(0f, 0f, 0f), + ceiling_bldg_i + ) + ) + ) LocalObject(1171, Door.Constructor(Vector3(1278.59f, 1219.216f, 304.929f)), owning_building_guid = 31) LocalObject(1192, Door.Constructor(Vector3(1328.59f, 1219.216f, 304.929f)), owning_building_guid = 31) } @@ -296,7 +668,19 @@ object Ugd02 { // Hunhau Building10104() def Building10104(): Unit = { // Name: ceiling_bldg_j_10104 Type: ceiling_bldg_j GUID: 32, MapID: 10104 - LocalBuilding("ceiling_bldg_j_10104", 32, 10104, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1128.96f, 1794.06f, 230.84f), Vector3(0f, 0f, 65f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10104", + 32, + 10104, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1128.96f, 1794.06f, 230.84f), + Vector3(0f, 0f, 65f), + ceiling_bldg_j + ) + ) + ) LocalObject(1124, Door.Constructor(Vector3(1117.647f, 1799.353f, 232.619f)), owning_building_guid = 32) LocalObject(1129, Door.Constructor(Vector3(1140.305f, 1788.788f, 232.619f)), owning_building_guid = 32) } @@ -304,7 +688,19 @@ object Ugd02 { // Hunhau Building10089() def Building10089(): Unit = { // Name: ceiling_bldg_j_10089 Type: ceiling_bldg_j GUID: 33, MapID: 10089 - LocalBuilding("ceiling_bldg_j_10089", 33, 10089, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1443.23f, 1163.19f, 271.2f), Vector3(0f, 0f, 130f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10089", + 33, + 10089, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1443.23f, 1163.19f, 271.2f), + Vector3(0f, 0f, 130f), + ceiling_bldg_j + ) + ) + ) LocalObject(1207, Door.Constructor(Vector3(1433.652f, 1155.174f, 272.979f)), owning_building_guid = 33) LocalObject(1208, Door.Constructor(Vector3(1452.803f, 1171.244f, 272.979f)), owning_building_guid = 33) } @@ -312,7 +708,19 @@ object Ugd02 { // Hunhau Building10357() def Building10357(): Unit = { // Name: ceiling_bldg_z_10357 Type: ceiling_bldg_z GUID: 34, MapID: 10357 - LocalBuilding("ceiling_bldg_z_10357", 34, 10357, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1366.28f, 1322.62f, 306.75f), Vector3(0f, 0f, 0f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10357", + 34, + 10357, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1366.28f, 1322.62f, 306.75f), + Vector3(0f, 0f, 0f), + ceiling_bldg_z + ) + ) + ) LocalObject(1193, Door.Constructor(Vector3(1341.79f, 1326.636f, 308.529f)), owning_building_guid = 34) LocalObject(1206, Door.Constructor(Vector3(1398.79f, 1326.636f, 308.529f)), owning_building_guid = 34) } @@ -320,7 +728,19 @@ object Ugd02 { // Hunhau Building10016() def Building10016(): Unit = { // Name: ground_bldg_b_10016 Type: ground_bldg_b GUID: 273, MapID: 10016 - LocalBuilding("ground_bldg_b_10016", 273, 10016, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(795.23f, 1439.35f, 216f), Vector3(0f, 0f, 140f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10016", + 273, + 10016, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(795.23f, 1439.35f, 216f), + Vector3(0f, 0f, 140f), + ground_bldg_b + ) + ) + ) LocalObject(1028, Door.Constructor(Vector3(772.578f, 1450.504f, 223.279f)), owning_building_guid = 273) LocalObject(1030, Door.Constructor(Vector3(783.0869f, 1428.013f, 217.779f)), owning_building_guid = 273) LocalObject(1032, Door.Constructor(Vector3(791.2707f, 1443.991f, 217.779f)), owning_building_guid = 273) @@ -329,7 +749,19 @@ object Ugd02 { // Hunhau Building10000() def Building10000(): Unit = { // Name: ground_bldg_b_10000 Type: ground_bldg_b GUID: 274, MapID: 10000 - LocalBuilding("ground_bldg_b_10000", 274, 10000, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(817.07f, 1033.77f, 211.66f), Vector3(0f, 0f, 0f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10000", + 274, + 10000, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(817.07f, 1033.77f, 211.66f), + Vector3(0f, 0f, 0f), + ground_bldg_b + ) + ) + ) LocalObject(1037, Door.Constructor(Vector3(819.085f, 1050.26f, 213.439f)), owning_building_guid = 274) LocalObject(1040, Door.Constructor(Vector3(823.086f, 1032.76f, 213.439f)), owning_building_guid = 274) LocalObject(1046, Door.Constructor(Vector3(841.592f, 1039.786f, 218.939f)), owning_building_guid = 274) @@ -338,7 +770,19 @@ object Ugd02 { // Hunhau Building10021() def Building10021(): Unit = { // Name: ground_bldg_b_10021 Type: ground_bldg_b GUID: 275, MapID: 10021 - LocalBuilding("ground_bldg_b_10021", 275, 10021, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1193.21f, 1419.07f, 224.66f), Vector3(0f, 0f, 178f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10021", + 275, + 10021, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1193.21f, 1419.07f, 224.66f), + Vector3(0f, 0f, 178f), + ground_bldg_b + ) + ) + ) LocalObject(1132, Door.Constructor(Vector3(1168.493f, 1413.913f, 231.939f)), owning_building_guid = 275) LocalObject(1138, Door.Constructor(Vector3(1187.233f, 1420.289f, 226.439f)), owning_building_guid = 275) LocalObject(1140, Door.Constructor(Vector3(1190.621f, 1402.66f, 226.439f)), owning_building_guid = 275) @@ -347,7 +791,19 @@ object Ugd02 { // Hunhau Building10030() def Building10030(): Unit = { // Name: ground_bldg_b_10030 Type: ground_bldg_b GUID: 276, MapID: 10030 - LocalBuilding("ground_bldg_b_10030", 276, 10030, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1364.87f, 1038.08f, 216f), Vector3(0f, 0f, 329f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10030", + 276, + 10030, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1364.87f, 1038.08f, 216f), + Vector3(0f, 0f, 329f), + ground_bldg_b + ) + ) + ) LocalObject(1200, Door.Constructor(Vector3(1369.506f, 1034.116f, 217.779f)), owning_building_guid = 276) LocalObject(1201, Door.Constructor(Vector3(1375.09f, 1051.177f, 217.779f)), owning_building_guid = 276) LocalObject(1203, Door.Constructor(Vector3(1388.988f, 1030.607f, 223.279f)), owning_building_guid = 276) @@ -356,7 +812,19 @@ object Ugd02 { // Hunhau Building10369() def Building10369(): Unit = { // Name: ground_bldg_c_10369 Type: ground_bldg_c GUID: 277, MapID: 10369 - LocalBuilding("ground_bldg_c_10369", 277, 10369, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(915.84f, 988.16f, 228.46f), Vector3(0f, 0f, 225f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10369", + 277, + 10369, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(915.84f, 988.16f, 228.46f), + Vector3(0f, 0f, 225f), + ground_bldg_c + ) + ) + ) LocalObject(1058, Door.Constructor(Vector3(875.1998f, 963.769f, 230.239f)), owning_building_guid = 277) LocalObject(1068, Door.Constructor(Vector3(897.1201f, 941.8487f, 230.239f)), owning_building_guid = 277) LocalObject(1084, Door.Constructor(Vector3(919.7249f, 986.4106f, 230.239f)), owning_building_guid = 277) @@ -365,7 +833,19 @@ object Ugd02 { // Hunhau Building10023() def Building10023(): Unit = { // Name: ground_bldg_c_10023 Type: ground_bldg_c GUID: 278, MapID: 10023 - LocalBuilding("ground_bldg_c_10023", 278, 10023, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1266.3f, 1371.91f, 241.56f), Vector3(0f, 0f, 249f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10023", + 278, + 10023, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1266.3f, 1371.91f, 241.56f), + Vector3(0f, 0f, 249f), + ground_bldg_c + ) + ) + ) LocalObject(1153, Door.Constructor(Vector3(1239.094f, 1333.098f, 243.339f)), owning_building_guid = 278) LocalObject(1164, Door.Constructor(Vector3(1268.035f, 1321.989f, 243.339f)), owning_building_guid = 278) LocalObject(1165, Door.Constructor(Vector3(1270.561f, 1371.892f, 243.339f)), owning_building_guid = 278) @@ -374,7 +854,19 @@ object Ugd02 { // Hunhau Building10009() def Building10009(): Unit = { // Name: ground_bldg_d_10009 Type: ground_bldg_d GUID: 279, MapID: 10009 - LocalBuilding("ground_bldg_d_10009", 279, 10009, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(807.17f, 1205.79f, 216.95f), Vector3(0f, 0f, 186f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10009", + 279, + 10009, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(807.17f, 1205.79f, 216.95f), + Vector3(0f, 0f, 186f), + ground_bldg_d + ) + ) + ) LocalObject(1031, Door.Constructor(Vector3(789.7576f, 1203.944f, 218.685f)), owning_building_guid = 279) LocalObject(1034, Door.Constructor(Vector3(805.3238f, 1223.202f, 218.685f)), owning_building_guid = 279) LocalObject(1035, Door.Constructor(Vector3(808.9823f, 1188.394f, 218.685f)), owning_building_guid = 279) @@ -384,7 +876,19 @@ object Ugd02 { // Hunhau Building10001() def Building10001(): Unit = { // Name: ground_bldg_d_10001 Type: ground_bldg_d GUID: 280, MapID: 10001 - LocalBuilding("ground_bldg_d_10001", 280, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(837f, 990.15f, 218.45f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10001", + 280, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(837f, 990.15f, 218.45f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(1039, Door.Constructor(Vector3(819.51f, 990.166f, 220.185f)), owning_building_guid = 280) LocalObject(1043, Door.Constructor(Vector3(837.016f, 972.64f, 220.185f)), owning_building_guid = 280) LocalObject(1044, Door.Constructor(Vector3(837.016f, 1007.64f, 220.185f)), owning_building_guid = 280) @@ -394,7 +898,19 @@ object Ugd02 { // Hunhau Building10543() def Building10543(): Unit = { // Name: ground_bldg_d_10543 Type: ground_bldg_d GUID: 281, MapID: 10543 - LocalBuilding("ground_bldg_d_10543", 281, 10543, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(978.03f, 1293.93f, 229f), Vector3(0f, 0f, 144f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10543", + 281, + 10543, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(978.03f, 1293.93f, 229f), + Vector3(0f, 0f, 144f), + ground_bldg_d + ) + ) + ) LocalObject(1100, Door.Constructor(Vector3(963.8547f, 1304.209f, 230.735f)), owning_building_guid = 281) LocalObject(1101, Door.Constructor(Vector3(967.7367f, 1279.79f, 230.735f)), owning_building_guid = 281) LocalObject(1108, Door.Constructor(Vector3(988.3092f, 1308.105f, 230.735f)), owning_building_guid = 281) @@ -404,7 +920,19 @@ object Ugd02 { // Hunhau Building10022() def Building10022(): Unit = { // Name: ground_bldg_d_10022 Type: ground_bldg_d GUID: 282, MapID: 10022 - LocalBuilding("ground_bldg_d_10022", 282, 10022, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1201.5f, 1360.56f, 231.45f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10022", + 282, + 10022, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1201.5f, 1360.56f, 231.45f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(1135, Door.Constructor(Vector3(1184.01f, 1360.576f, 233.185f)), owning_building_guid = 282) LocalObject(1146, Door.Constructor(Vector3(1201.516f, 1343.05f, 233.185f)), owning_building_guid = 282) LocalObject(1147, Door.Constructor(Vector3(1201.516f, 1378.05f, 233.185f)), owning_building_guid = 282) @@ -414,7 +942,19 @@ object Ugd02 { // Hunhau Building10031() def Building10031(): Unit = { // Name: ground_bldg_d_10031 Type: ground_bldg_d GUID: 283, MapID: 10031 - LocalBuilding("ground_bldg_d_10031", 283, 10031, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1301.6f, 959.02f, 222f), Vector3(0f, 0f, 11f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10031", + 283, + 10031, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1301.6f, 959.02f, 222f), + Vector3(0f, 0f, 11f), + ground_bldg_d + ) + ) + ) LocalObject(1180, Door.Constructor(Vector3(1284.428f, 955.6985f, 223.735f)), owning_building_guid = 283) LocalObject(1184, Door.Constructor(Vector3(1298.278f, 976.1917f, 223.735f)), owning_building_guid = 283) LocalObject(1186, Door.Constructor(Vector3(1304.957f, 941.8348f, 223.735f)), owning_building_guid = 283) @@ -424,7 +964,19 @@ object Ugd02 { // Hunhau Building10013() def Building10013(): Unit = { // Name: ground_bldg_i_10013 Type: ground_bldg_i GUID: 284, MapID: 10013 - LocalBuilding("ground_bldg_i_10013", 284, 10013, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(715.89f, 1024.55f, 209f), Vector3(0f, 0f, 332f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10013", + 284, + 10013, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(715.89f, 1024.55f, 209f), + Vector3(0f, 0f, 332f), + ground_bldg_i + ) + ) + ) LocalObject(1015, Door.Constructor(Vector3(695.9173f, 1039.152f, 210.779f)), owning_building_guid = 284) LocalObject(1023, Door.Constructor(Vector3(740.0647f, 1015.678f, 210.779f)), owning_building_guid = 284) } @@ -432,7 +984,19 @@ object Ugd02 { // Hunhau Building10018() def Building10018(): Unit = { // Name: ground_bldg_i_10018 Type: ground_bldg_i GUID: 285, MapID: 10018 - LocalBuilding("ground_bldg_i_10018", 285, 10018, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(795.93f, 1513.27f, 225f), Vector3(0f, 0f, 16f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10018", + 285, + 10018, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(795.93f, 1513.27f, 225f), + Vector3(0f, 0f, 16f), + ground_bldg_i + ) + ) + ) LocalObject(1027, Door.Constructor(Vector3(771.4196f, 1509.899f, 226.779f)), owning_building_guid = 285) LocalObject(1038, Door.Constructor(Vector3(819.4827f, 1523.681f, 226.779f)), owning_building_guid = 285) } @@ -440,7 +1004,19 @@ object Ugd02 { // Hunhau Building10032() def Building10032(): Unit = { // Name: ground_bldg_i_10032 Type: ground_bldg_i GUID: 286, MapID: 10032 - LocalBuilding("ground_bldg_i_10032", 286, 10032, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1375.1f, 964.87f, 225f), Vector3(0f, 0f, 205f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10032", + 286, + 10032, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1375.1f, 964.87f, 225f), + Vector3(0f, 0f, 205f), + ground_bldg_i + ) + ) + ) LocalObject(1198, Door.Constructor(Vector3(1353.466f, 950.9024f, 226.779f)), owning_building_guid = 286) LocalObject(1205, Door.Constructor(Vector3(1398.781f, 972.0333f, 226.779f)), owning_building_guid = 286) } @@ -448,42 +1024,112 @@ object Ugd02 { // Hunhau Building10748() def Building10748(): Unit = { // Name: N_Redoubt Type: redoubt GUID: 287, MapID: 10748 - LocalBuilding("N_Redoubt", 287, 10748, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(870.46f, 1493.53f, 214.4f), Vector3(0f, 0f, 324f), redoubt))) - LocalObject(1393, CaptureTerminal.Constructor(Vector3(882.9425f, 1510.745f, 224.884f), vanu_control_console), owning_building_guid = 287) + LocalBuilding( + "N_Redoubt", + 287, + 10748, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(870.46f, 1493.53f, 214.4f), Vector3(0f, 0f, 324f), redoubt) + ) + ) + LocalObject( + 1393, + CaptureTerminal.Constructor(Vector3(882.9425f, 1510.745f, 224.884f), vanu_control_console), + owning_building_guid = 287 + ) LocalObject(1050, Door.Constructor(Vector3(856.3197f, 1503.823f, 216.135f)), owning_building_guid = 287) LocalObject(1055, Door.Constructor(Vector3(867.6268f, 1510.519f, 226.179f)), owning_building_guid = 287) LocalObject(1057, Door.Constructor(Vector3(874.3053f, 1505.662f, 226.159f)), owning_building_guid = 287) LocalObject(1061, Door.Constructor(Vector3(880.8124f, 1500.974f, 226.159f)), owning_building_guid = 287) LocalObject(1062, Door.Constructor(Vector3(884.6353f, 1483.251f, 216.135f)), owning_building_guid = 287) LocalObject(1066, Door.Constructor(Vector3(887.4849f, 1496.132f, 226.179f)), owning_building_guid = 287) - LocalObject(1410, Terminal.Constructor(Vector3(859.4799f, 1478.63f, 214.3558f), vanu_equipment_term), owning_building_guid = 287) - LocalObject(1416, Terminal.Constructor(Vector3(881.4727f, 1508.661f, 214.3535f), vanu_equipment_term), owning_building_guid = 287) - LocalObject(1340, SpawnTube.Constructor(Vector3(870.46f, 1493.53f, 214.4f), Vector3(0, 0, 216)), owning_building_guid = 287) - LocalObject(1328, Painbox.Constructor(Vector3(870.6642f, 1493.741f, 222.189f), painbox_continuous), owning_building_guid = 287) + LocalObject( + 1410, + Terminal.Constructor(Vector3(859.4799f, 1478.63f, 214.3558f), vanu_equipment_term), + owning_building_guid = 287 + ) + LocalObject( + 1416, + Terminal.Constructor(Vector3(881.4727f, 1508.661f, 214.3535f), vanu_equipment_term), + owning_building_guid = 287 + ) + LocalObject( + 1340, + SpawnTube.Constructor(Vector3(870.46f, 1493.53f, 214.4f), Vector3(0, 0, 216)), + owning_building_guid = 287 + ) + LocalObject( + 1328, + Painbox.Constructor(Vector3(870.6642f, 1493.741f, 222.189f), painbox_continuous), + owning_building_guid = 287 + ) } Building10751() def Building10751(): Unit = { // Name: S_Redoubt Type: redoubt GUID: 288, MapID: 10751 - LocalBuilding("S_Redoubt", 288, 10751, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1291.34f, 1131.64f, 216.2f), Vector3(0f, 0f, 97f), redoubt))) - LocalObject(1397, CaptureTerminal.Constructor(Vector3(1270.237f, 1129.029f, 226.684f), vanu_control_console), owning_building_guid = 288) + LocalBuilding( + "S_Redoubt", + 288, + 10751, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1291.34f, 1131.64f, 216.2f), Vector3(0f, 0f, 97f), redoubt) + ) + ) + LocalObject( + 1397, + CaptureTerminal.Constructor(Vector3(1270.237f, 1129.029f, 226.684f), vanu_control_console), + owning_building_guid = 288 + ) LocalObject(1169, Door.Constructor(Vector3(1277.826f, 1142.317f, 227.979f)), owning_building_guid = 288) LocalObject(1172, Door.Constructor(Vector3(1278.836f, 1134.135f, 227.959f)), owning_building_guid = 288) LocalObject(1176, Door.Constructor(Vector3(1279.845f, 1126.178f, 227.959f)), owning_building_guid = 288) LocalObject(1178, Door.Constructor(Vector3(1280.847f, 1117.981f, 227.979f)), owning_building_guid = 288) LocalObject(1182, Door.Constructor(Vector3(1289.19f, 1149.018f, 217.935f)), owning_building_guid = 288) LocalObject(1183, Door.Constructor(Vector3(1293.456f, 1114.278f, 217.935f)), owning_building_guid = 288) - LocalObject(1450, Terminal.Constructor(Vector3(1272.764f, 1129.375f, 216.1535f), vanu_equipment_term), owning_building_guid = 288) - LocalObject(1459, Terminal.Constructor(Vector3(1309.726f, 1133.771f, 216.1558f), vanu_equipment_term), owning_building_guid = 288) - LocalObject(1341, SpawnTube.Constructor(Vector3(1291.34f, 1131.64f, 216.2f), Vector3(0, 0, 83)), owning_building_guid = 288) - LocalObject(1331, Painbox.Constructor(Vector3(1291.047f, 1131.646f, 223.989f), painbox_continuous), owning_building_guid = 288) + LocalObject( + 1450, + Terminal.Constructor(Vector3(1272.764f, 1129.375f, 216.1535f), vanu_equipment_term), + owning_building_guid = 288 + ) + LocalObject( + 1459, + Terminal.Constructor(Vector3(1309.726f, 1133.771f, 216.1558f), vanu_equipment_term), + owning_building_guid = 288 + ) + LocalObject( + 1341, + SpawnTube.Constructor(Vector3(1291.34f, 1131.64f, 216.2f), Vector3(0, 0, 83)), + owning_building_guid = 288 + ) + LocalObject( + 1331, + Painbox.Constructor(Vector3(1291.047f, 1131.646f, 223.989f), painbox_continuous), + owning_building_guid = 288 + ) } Building10354() def Building10354(): Unit = { // Name: S_Stasis Type: vanu_control_point GUID: 423, MapID: 10354 - LocalBuilding("S_Stasis", 423, 10354, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(910.38f, 1061.46f, 211.09f), Vector3(0f, 0f, 133f), vanu_control_point))) - LocalObject(1394, CaptureTerminal.Constructor(Vector3(909.6734f, 1065.134f, 241.574f), vanu_control_console), owning_building_guid = 423) + LocalBuilding( + "S_Stasis", + 423, + 10354, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(910.38f, 1061.46f, 211.09f), + Vector3(0f, 0f, 133f), + vanu_control_point + ) + ) + ) + LocalObject( + 1394, + CaptureTerminal.Constructor(Vector3(909.6734f, 1065.134f, 241.574f), vanu_control_console), + owning_building_guid = 423 + ) LocalObject(1052, Door.Constructor(Vector3(862.2756f, 1062.809f, 212.869f)), owning_building_guid = 423) LocalObject(1069, Door.Constructor(Vector3(897.8686f, 1113.024f, 212.869f)), owning_building_guid = 423) LocalObject(1075, Door.Constructor(Vector3(901.7061f, 1056.084f, 217.81f)), owning_building_guid = 423) @@ -496,27 +1142,99 @@ object Ugd02 { // Hunhau LocalObject(1087, Door.Constructor(Vector3(923.4755f, 1026.865f, 212.869f)), owning_building_guid = 423) LocalObject(1090, Door.Constructor(Vector3(925.0205f, 1066.671f, 242.869f)), owning_building_guid = 423) LocalObject(1096, Door.Constructor(Vector3(947.6342f, 1065.881f, 212.869f)), owning_building_guid = 423) - LocalObject(1420, Terminal.Constructor(Vector3(900.1823f, 1062.696f, 216.103f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1421, Terminal.Constructor(Vector3(900.3245f, 1066.667f, 216.107f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1425, Terminal.Constructor(Vector3(908.254f, 1054.15f, 216.107f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1426, Terminal.Constructor(Vector3(908.7996f, 1074.577f, 216.103f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1427, Terminal.Constructor(Vector3(912.2247f, 1054.008f, 216.103f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1428, Terminal.Constructor(Vector3(912.707f, 1074.466f, 216.107f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1429, Terminal.Constructor(Vector3(920.6359f, 1061.95f, 216.107f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1430, Terminal.Constructor(Vector3(920.7781f, 1065.921f, 216.103f), vanu_equipment_term), owning_building_guid = 423) - LocalObject(1481, SpawnTube.Constructor(Vector3(910.4787f, 1064.287f, 216.229f), Vector3(0, 0, 47)), owning_building_guid = 423) - LocalObject(1329, Painbox.Constructor(Vector3(910.895f, 1064.282f, 225.4318f), painbox_continuous), owning_building_guid = 423) - LocalObject(1332, Painbox.Constructor(Vector3(900.1142f, 1074.834f, 219.98f), painbox_door_radius_continuous), owning_building_guid = 423) - LocalObject(1333, Painbox.Constructor(Vector3(900.2362f, 1054.792f, 219.98f), painbox_door_radius_continuous), owning_building_guid = 423) - LocalObject(1334, Painbox.Constructor(Vector3(920.1619f, 1053.746f, 219.38f), painbox_door_radius_continuous), owning_building_guid = 423) - LocalObject(1335, Painbox.Constructor(Vector3(920.6906f, 1073.384f, 219.98f), painbox_door_radius_continuous), owning_building_guid = 423) + LocalObject( + 1420, + Terminal.Constructor(Vector3(900.1823f, 1062.696f, 216.103f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1421, + Terminal.Constructor(Vector3(900.3245f, 1066.667f, 216.107f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1425, + Terminal.Constructor(Vector3(908.254f, 1054.15f, 216.107f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1426, + Terminal.Constructor(Vector3(908.7996f, 1074.577f, 216.103f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1427, + Terminal.Constructor(Vector3(912.2247f, 1054.008f, 216.103f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1428, + Terminal.Constructor(Vector3(912.707f, 1074.466f, 216.107f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1429, + Terminal.Constructor(Vector3(920.6359f, 1061.95f, 216.107f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1430, + Terminal.Constructor(Vector3(920.7781f, 1065.921f, 216.103f), vanu_equipment_term), + owning_building_guid = 423 + ) + LocalObject( + 1481, + SpawnTube.Constructor(Vector3(910.4787f, 1064.287f, 216.229f), Vector3(0, 0, 47)), + owning_building_guid = 423 + ) + LocalObject( + 1329, + Painbox.Constructor(Vector3(910.895f, 1064.282f, 225.4318f), painbox_continuous), + owning_building_guid = 423 + ) + LocalObject( + 1332, + Painbox.Constructor(Vector3(900.1142f, 1074.834f, 219.98f), painbox_door_radius_continuous), + owning_building_guid = 423 + ) + LocalObject( + 1333, + Painbox.Constructor(Vector3(900.2362f, 1054.792f, 219.98f), painbox_door_radius_continuous), + owning_building_guid = 423 + ) + LocalObject( + 1334, + Painbox.Constructor(Vector3(920.1619f, 1053.746f, 219.38f), painbox_door_radius_continuous), + owning_building_guid = 423 + ) + LocalObject( + 1335, + Painbox.Constructor(Vector3(920.6906f, 1073.384f, 219.98f), painbox_door_radius_continuous), + owning_building_guid = 423 + ) } Building10020() def Building10020(): Unit = { // Name: N_Stasis Type: vanu_control_point GUID: 424, MapID: 10020 - LocalBuilding("N_Stasis", 424, 10020, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1271.2f, 1433.74f, 224.19f), Vector3(0f, 0f, 133f), vanu_control_point))) - LocalObject(1398, CaptureTerminal.Constructor(Vector3(1270.493f, 1437.414f, 254.674f), vanu_control_console), owning_building_guid = 424) + LocalBuilding( + "N_Stasis", + 424, + 10020, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1271.2f, 1433.74f, 224.19f), + Vector3(0f, 0f, 133f), + vanu_control_point + ) + ) + ) + LocalObject( + 1398, + CaptureTerminal.Constructor(Vector3(1270.493f, 1437.414f, 254.674f), vanu_control_console), + owning_building_guid = 424 + ) LocalObject(1152, Door.Constructor(Vector3(1223.096f, 1435.089f, 225.969f)), owning_building_guid = 424) LocalObject(1155, Door.Constructor(Vector3(1258.688f, 1485.304f, 225.969f)), owning_building_guid = 424) LocalObject(1156, Door.Constructor(Vector3(1262.526f, 1428.364f, 230.91f)), owning_building_guid = 424) @@ -529,26 +1247,94 @@ object Ugd02 { // Hunhau LocalObject(1179, Door.Constructor(Vector3(1284.295f, 1399.145f, 225.969f)), owning_building_guid = 424) LocalObject(1181, Door.Constructor(Vector3(1285.84f, 1438.951f, 255.969f)), owning_building_guid = 424) LocalObject(1189, Door.Constructor(Vector3(1308.454f, 1438.161f, 225.969f)), owning_building_guid = 424) - LocalObject(1445, Terminal.Constructor(Vector3(1261.002f, 1434.976f, 229.203f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1446, Terminal.Constructor(Vector3(1261.144f, 1438.947f, 229.207f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1448, Terminal.Constructor(Vector3(1269.074f, 1426.43f, 229.207f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1449, Terminal.Constructor(Vector3(1269.62f, 1446.857f, 229.203f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1451, Terminal.Constructor(Vector3(1273.045f, 1426.288f, 229.203f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1452, Terminal.Constructor(Vector3(1273.527f, 1446.746f, 229.207f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1453, Terminal.Constructor(Vector3(1281.456f, 1434.23f, 229.207f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1454, Terminal.Constructor(Vector3(1281.598f, 1438.201f, 229.203f), vanu_equipment_term), owning_building_guid = 424) - LocalObject(1482, SpawnTube.Constructor(Vector3(1271.299f, 1436.567f, 229.329f), Vector3(0, 0, 47)), owning_building_guid = 424) - LocalObject(1330, Painbox.Constructor(Vector3(1271.715f, 1436.562f, 238.5318f), painbox_continuous), owning_building_guid = 424) - LocalObject(1336, Painbox.Constructor(Vector3(1260.934f, 1447.114f, 233.08f), painbox_door_radius_continuous), owning_building_guid = 424) - LocalObject(1337, Painbox.Constructor(Vector3(1261.056f, 1427.072f, 233.08f), painbox_door_radius_continuous), owning_building_guid = 424) - LocalObject(1338, Painbox.Constructor(Vector3(1280.982f, 1426.026f, 232.48f), painbox_door_radius_continuous), owning_building_guid = 424) - LocalObject(1339, Painbox.Constructor(Vector3(1281.51f, 1445.664f, 233.08f), painbox_door_radius_continuous), owning_building_guid = 424) + LocalObject( + 1445, + Terminal.Constructor(Vector3(1261.002f, 1434.976f, 229.203f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1446, + Terminal.Constructor(Vector3(1261.144f, 1438.947f, 229.207f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1448, + Terminal.Constructor(Vector3(1269.074f, 1426.43f, 229.207f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1449, + Terminal.Constructor(Vector3(1269.62f, 1446.857f, 229.203f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1451, + Terminal.Constructor(Vector3(1273.045f, 1426.288f, 229.203f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1452, + Terminal.Constructor(Vector3(1273.527f, 1446.746f, 229.207f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1453, + Terminal.Constructor(Vector3(1281.456f, 1434.23f, 229.207f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1454, + Terminal.Constructor(Vector3(1281.598f, 1438.201f, 229.203f), vanu_equipment_term), + owning_building_guid = 424 + ) + LocalObject( + 1482, + SpawnTube.Constructor(Vector3(1271.299f, 1436.567f, 229.329f), Vector3(0, 0, 47)), + owning_building_guid = 424 + ) + LocalObject( + 1330, + Painbox.Constructor(Vector3(1271.715f, 1436.562f, 238.5318f), painbox_continuous), + owning_building_guid = 424 + ) + LocalObject( + 1336, + Painbox.Constructor(Vector3(1260.934f, 1447.114f, 233.08f), painbox_door_radius_continuous), + owning_building_guid = 424 + ) + LocalObject( + 1337, + Painbox.Constructor(Vector3(1261.056f, 1427.072f, 233.08f), painbox_door_radius_continuous), + owning_building_guid = 424 + ) + LocalObject( + 1338, + Painbox.Constructor(Vector3(1280.982f, 1426.026f, 232.48f), painbox_door_radius_continuous), + owning_building_guid = 424 + ) + LocalObject( + 1339, + Painbox.Constructor(Vector3(1281.51f, 1445.664f, 233.08f), painbox_door_radius_continuous), + owning_building_guid = 424 + ) } Building10002() def Building10002(): Unit = { // Name: Core Type: vanu_core GUID: 425, MapID: 10002 - LocalBuilding("Core", 425, 10002, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1110.13f, 1216.96f, 266.93f), Vector3(0f, 0f, 0f), vanu_core))) + LocalBuilding( + "Core", + 425, + 10002, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1110.13f, 1216.96f, 266.93f), + Vector3(0f, 0f, 0f), + vanu_core + ) + ) + ) LocalObject(1116, Door.Constructor(Vector3(1077.637f, 1204.982f, 273.718f)), owning_building_guid = 425) LocalObject(1118, Door.Constructor(Vector3(1106.108f, 1176.467f, 273.718f)), owning_building_guid = 425) LocalObject(1119, Door.Constructor(Vector3(1106.108f, 1176.467f, 278.718f)), owning_building_guid = 425) @@ -560,8 +1346,24 @@ object Ugd02 { // Hunhau Building10015() def Building10015(): Unit = { // Name: N_ATPlant Type: vanu_vehicle_station GUID: 472, MapID: 10015 - LocalBuilding("N_ATPlant", 472, 10015, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(877.25f, 1407.81f, 214f), Vector3(0f, 0f, 174f), vanu_vehicle_station))) - LocalObject(1395, CaptureTerminal.Constructor(Vector3(933.0126f, 1423.444f, 244.484f), vanu_control_console), owning_building_guid = 472) + LocalBuilding( + "N_ATPlant", + 472, + 10015, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(877.25f, 1407.81f, 214f), + Vector3(0f, 0f, 174f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 1395, + CaptureTerminal.Constructor(Vector3(933.0126f, 1423.444f, 244.484f), vanu_control_console), + owning_building_guid = 472 + ) LocalObject(1060, Door.Constructor(Vector3(880.3055f, 1392.511f, 215.779f)), owning_building_guid = 472) LocalObject(1064, Door.Constructor(Vector3(886.2134f, 1448.72f, 235.703f)), owning_building_guid = 472) LocalObject(1065, Door.Constructor(Vector3(887.0483f, 1456.664f, 215.779f)), owning_building_guid = 472) @@ -571,21 +1373,75 @@ object Ugd02 { // Hunhau LocalObject(1089, Door.Constructor(Vector3(924.2911f, 1428.383f, 245.759f)), owning_building_guid = 472) LocalObject(1091, Door.Constructor(Vector3(925.158f, 1436.583f, 245.779f)), owning_building_guid = 472) LocalObject(1212, Door.Constructor(Vector3(943.3931f, 1418.35f, 220.633f)), owning_building_guid = 472) - LocalObject(1388, Terminal.Constructor(Vector3(896.063f, 1405.571f, 233.917f), vanu_air_vehicle_term), owning_building_guid = 472) - LocalObject(1483, VehicleSpawnPad.Constructor(Vector3(892.4431f, 1413.683f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -84)), owning_building_guid = 472, terminal_guid = 1388) - LocalObject(1389, Terminal.Constructor(Vector3(899.7547f, 1440.781f, 233.917f), vanu_air_vehicle_term), owning_building_guid = 472) - LocalObject(1484, VehicleSpawnPad.Constructor(Vector3(894.5354f, 1433.589f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -84)), owning_building_guid = 472, terminal_guid = 1389) - LocalObject(1423, Terminal.Constructor(Vector3(903.5538f, 1410.448f, 216.5f), vanu_equipment_term), owning_building_guid = 472) - LocalObject(1424, Terminal.Constructor(Vector3(906.0625f, 1434.317f, 216.5f), vanu_equipment_term), owning_building_guid = 472) - LocalObject(1489, Terminal.Constructor(Vector3(910.2566f, 1421.947f, 219f), vanu_vehicle_term), owning_building_guid = 472) - LocalObject(1485, VehicleSpawnPad.Constructor(Vector3(925.2994f, 1420.258f, 216.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 96)), owning_building_guid = 472, terminal_guid = 1489) + LocalObject( + 1388, + Terminal.Constructor(Vector3(896.063f, 1405.571f, 233.917f), vanu_air_vehicle_term), + owning_building_guid = 472 + ) + LocalObject( + 1483, + VehicleSpawnPad + .Constructor(Vector3(892.4431f, 1413.683f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -84)), + owning_building_guid = 472, + terminal_guid = 1388 + ) + LocalObject( + 1389, + Terminal.Constructor(Vector3(899.7547f, 1440.781f, 233.917f), vanu_air_vehicle_term), + owning_building_guid = 472 + ) + LocalObject( + 1484, + VehicleSpawnPad + .Constructor(Vector3(894.5354f, 1433.589f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -84)), + owning_building_guid = 472, + terminal_guid = 1389 + ) + LocalObject( + 1423, + Terminal.Constructor(Vector3(903.5538f, 1410.448f, 216.5f), vanu_equipment_term), + owning_building_guid = 472 + ) + LocalObject( + 1424, + Terminal.Constructor(Vector3(906.0625f, 1434.317f, 216.5f), vanu_equipment_term), + owning_building_guid = 472 + ) + LocalObject( + 1489, + Terminal.Constructor(Vector3(910.2566f, 1421.947f, 219f), vanu_vehicle_term), + owning_building_guid = 472 + ) + LocalObject( + 1485, + VehicleSpawnPad + .Constructor(Vector3(925.2994f, 1420.258f, 216.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 96)), + owning_building_guid = 472, + terminal_guid = 1489 + ) } Building10109() def Building10109(): Unit = { // Name: S_ATPlant Type: vanu_vehicle_station GUID: 473, MapID: 10109 - LocalBuilding("S_ATPlant", 473, 10109, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1307.08f, 1065.9f, 214f), Vector3(0f, 0f, 5f), vanu_vehicle_station))) - LocalObject(1396, CaptureTerminal.Constructor(Vector3(1255.325f, 1039.913f, 244.484f), vanu_control_console), owning_building_guid = 473) + LocalBuilding( + "S_ATPlant", + 473, + 10109, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1307.08f, 1065.9f, 214f), + Vector3(0f, 0f, 5f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 1396, + CaptureTerminal.Constructor(Vector3(1255.325f, 1039.913f, 244.484f), vanu_control_console), + owning_building_guid = 473 + ) LocalObject(1158, Door.Constructor(Vector3(1263.409f, 1052.901f, 245.779f)), owning_building_guid = 473) LocalObject(1160, Door.Constructor(Vector3(1264.097f, 1044.716f, 245.759f)), owning_building_guid = 473) LocalObject(1161, Door.Constructor(Vector3(1264.828f, 1036.73f, 245.759f)), owning_building_guid = 473) @@ -595,247 +1451,941 @@ object Ugd02 { // Hunhau LocalObject(1187, Door.Constructor(Vector3(1306.087f, 1024.031f, 235.703f)), owning_building_guid = 473) LocalObject(1188, Door.Constructor(Vector3(1306.783f, 1016.074f, 215.779f)), owning_building_guid = 473) LocalObject(1213, Door.Constructor(Vector3(1244.163f, 1042.933f, 220.633f)), owning_building_guid = 473) - LocalObject(1390, Terminal.Constructor(Vector3(1288.185f, 1064.508f, 233.917f), vanu_air_vehicle_term), owning_building_guid = 473) - LocalObject(1487, VehicleSpawnPad.Constructor(Vector3(1293.287f, 1057.236f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, 85)), owning_building_guid = 473, terminal_guid = 1390) - LocalObject(1391, Terminal.Constructor(Vector3(1291.28f, 1029.24f, 233.917f), vanu_air_vehicle_term), owning_building_guid = 473) - LocalObject(1488, VehicleSpawnPad.Constructor(Vector3(1295.031f, 1037.296f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, 85)), owning_building_guid = 473, terminal_guid = 1391) - LocalObject(1455, Terminal.Constructor(Vector3(1281.763f, 1058.292f, 216.5f), vanu_equipment_term), owning_building_guid = 473) - LocalObject(1457, Terminal.Constructor(Vector3(1283.854f, 1034.383f, 216.5f), vanu_equipment_term), owning_building_guid = 473) - LocalObject(1490, Terminal.Constructor(Vector3(1277.377f, 1045.724f, 219f), vanu_vehicle_term), owning_building_guid = 473) - LocalObject(1486, VehicleSpawnPad.Constructor(Vector3(1262.289f, 1044.513f, 216.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 265)), owning_building_guid = 473, terminal_guid = 1490) + LocalObject( + 1390, + Terminal.Constructor(Vector3(1288.185f, 1064.508f, 233.917f), vanu_air_vehicle_term), + owning_building_guid = 473 + ) + LocalObject( + 1487, + VehicleSpawnPad + .Constructor(Vector3(1293.287f, 1057.236f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, 85)), + owning_building_guid = 473, + terminal_guid = 1390 + ) + LocalObject( + 1391, + Terminal.Constructor(Vector3(1291.28f, 1029.24f, 233.917f), vanu_air_vehicle_term), + owning_building_guid = 473 + ) + LocalObject( + 1488, + VehicleSpawnPad + .Constructor(Vector3(1295.031f, 1037.296f, 233.916f), vanu_vehicle_creation_pad, Vector3(0, 0, 85)), + owning_building_guid = 473, + terminal_guid = 1391 + ) + LocalObject( + 1455, + Terminal.Constructor(Vector3(1281.763f, 1058.292f, 216.5f), vanu_equipment_term), + owning_building_guid = 473 + ) + LocalObject( + 1457, + Terminal.Constructor(Vector3(1283.854f, 1034.383f, 216.5f), vanu_equipment_term), + owning_building_guid = 473 + ) + LocalObject( + 1490, + Terminal.Constructor(Vector3(1277.377f, 1045.724f, 219f), vanu_vehicle_term), + owning_building_guid = 473 + ) + LocalObject( + 1486, + VehicleSpawnPad + .Constructor(Vector3(1262.289f, 1044.513f, 216.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 265)), + owning_building_guid = 473, + terminal_guid = 1490 + ) } Building10112() def Building10112(): Unit = { // Name: GW_Cavern2_W Type: warpgate_cavern GUID: 474, MapID: 10112 - LocalBuilding("GW_Cavern2_W", 474, 10112, FoundationBuilder(WarpGate.Structure(Vector3(227.73f, 1255.27f, 161.35f)))) + LocalBuilding( + "GW_Cavern2_W", + 474, + 10112, + FoundationBuilder(WarpGate.Structure(Vector3(227.73f, 1255.27f, 161.35f))) + ) } Building10111() def Building10111(): Unit = { // Name: GW_Cavern2_N Type: warpgate_cavern GUID: 475, MapID: 10111 - LocalBuilding("GW_Cavern2_N", 475, 10111, FoundationBuilder(WarpGate.Structure(Vector3(1031.13f, 2429.68f, 231.26f)))) + LocalBuilding( + "GW_Cavern2_N", + 475, + 10111, + FoundationBuilder(WarpGate.Structure(Vector3(1031.13f, 2429.68f, 231.26f))) + ) } Building10583() def Building10583(): Unit = { // Name: GW_Cavern2_S Type: warpgate_cavern GUID: 476, MapID: 10583 - LocalBuilding("GW_Cavern2_S", 476, 10583, FoundationBuilder(WarpGate.Structure(Vector3(1087.96f, 124.96f, 130.92f)))) + LocalBuilding( + "GW_Cavern2_S", + 476, + 10583, + FoundationBuilder(WarpGate.Structure(Vector3(1087.96f, 124.96f, 130.92f))) + ) } Building10563() def Building10563(): Unit = { // Name: GW_Cavern2_E Type: warpgate_cavern GUID: 477, MapID: 10563 - LocalBuilding("GW_Cavern2_E", 477, 10563, FoundationBuilder(WarpGate.Structure(Vector3(1947.33f, 1306.67f, 181.42f)))) + LocalBuilding( + "GW_Cavern2_E", + 477, + 10563, + FoundationBuilder(WarpGate.Structure(Vector3(1947.33f, 1306.67f, 181.42f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(1399, Terminal.Constructor(Vector3(698.33f, 1305.7f, 275.21f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1400, Terminal.Constructor(Vector3(698.58f, 1315.74f, 275.19f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1401, Terminal.Constructor(Vector3(708.04f, 1316.01f, 269.6f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1402, Terminal.Constructor(Vector3(712.63f, 1027.1f, 208.95f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1403, Terminal.Constructor(Vector3(780.39f, 1449.89f, 221.48f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1404, Terminal.Constructor(Vector3(781.96f, 1183.78f, 295.04f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1405, Terminal.Constructor(Vector3(793.93f, 893.29f, 258.11f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1406, Terminal.Constructor(Vector3(796.12f, 1214.87f, 216.88f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1407, Terminal.Constructor(Vector3(796.38f, 888.05f, 258.11f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1408, Terminal.Constructor(Vector3(811.1f, 1040.67f, 217.19f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1409, Terminal.Constructor(Vector3(818.56f, 1196.84f, 216.87f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1411, Terminal.Constructor(Vector3(868.14f, 1507.66f, 214.34f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1412, Terminal.Constructor(Vector3(873.05f, 1479.4f, 214.34f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1413, Terminal.Constructor(Vector3(874.34f, 529.76f, 223.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1414, Terminal.Constructor(Vector3(874.43f, 541.76f, 223.6f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1415, Terminal.Constructor(Vector3(878.58f, 714.85f, 245.64f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1417, Terminal.Constructor(Vector3(885.9f, 718.47f, 245.59f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1418, Terminal.Constructor(Vector3(886.9f, 719.18f, 240.1f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1419, Terminal.Constructor(Vector3(892.74f, 1062.22f, 306.95f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1422, Terminal.Constructor(Vector3(901.22f, 968.3f, 228.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1431, Terminal.Constructor(Vector3(960.27f, 1312.18f, 314.7f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1432, Terminal.Constructor(Vector3(960.85f, 1316.61f, 320.2f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1433, Terminal.Constructor(Vector3(992.3f, 1296.21f, 228.93f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1434, Terminal.Constructor(Vector3(1052.35f, 1589.94f, 277.2f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1435, Terminal.Constructor(Vector3(1052.45f, 1579.18f, 277.16f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1436, Terminal.Constructor(Vector3(1061.86f, 1589.88f, 271.7f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1437, Terminal.Constructor(Vector3(1148.93f, 1280.05f, 309.5f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1438, Terminal.Constructor(Vector3(1177.01f, 1655.31f, 264.53f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1439, Terminal.Constructor(Vector3(1179.59f, 1657.89f, 264.54f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1440, Terminal.Constructor(Vector3(1191.35f, 1350.39f, 231.43f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1441, Terminal.Constructor(Vector3(1211.49f, 1310.12f, 297.49f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1442, Terminal.Constructor(Vector3(1211.81f, 1370.72f, 231.41f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1443, Terminal.Constructor(Vector3(1246.72f, 1328.41f, 241.55f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1444, Terminal.Constructor(Vector3(1259.03f, 1323.69f, 241.59f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1447, Terminal.Constructor(Vector3(1261.61f, 1348.42f, 241.57f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1456, Terminal.Constructor(Vector3(1282.61f, 1120.26f, 216.13f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1458, Terminal.Constructor(Vector3(1300.12f, 1143.05f, 216.15f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1460, Terminal.Constructor(Vector3(1332.57f, 907.17f, 304.92f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1461, Terminal.Constructor(Vector3(1334.08f, 903.35f, 299.39f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1462, Terminal.Constructor(Vector3(1360.28f, 1340.27f, 301.92f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1463, Terminal.Constructor(Vector3(1360.38f, 1313.07f, 301.94f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1464, Terminal.Constructor(Vector3(1366.18f, 1468.81f, 264.11f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1465, Terminal.Constructor(Vector3(1366.43f, 1457.77f, 264.13f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1466, Terminal.Constructor(Vector3(1373.3f, 957.15f, 224.99f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1467, Terminal.Constructor(Vector3(1378.62f, 966.06f, 225.05f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1468, Terminal.Constructor(Vector3(1380.3f, 1313.42f, 301.87f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(111, ProximityTerminal.Constructor(Vector3(630.2f, 1322.82f, 188.62f), crystals_health_a), owning_building_guid = 0) - LocalObject(112, ProximityTerminal.Constructor(Vector3(630.45f, 1323.4f, 188.57f), crystals_health_a), owning_building_guid = 0) - LocalObject(113, ProximityTerminal.Constructor(Vector3(679.73f, 1007f, 196.6f), crystals_health_a), owning_building_guid = 0) - LocalObject(114, ProximityTerminal.Constructor(Vector3(763.73f, 705.8f, 185.44f), crystals_health_a), owning_building_guid = 0) - LocalObject(115, ProximityTerminal.Constructor(Vector3(764.63f, 705.6f, 185.34f), crystals_health_a), owning_building_guid = 0) - LocalObject(116, ProximityTerminal.Constructor(Vector3(812.51f, 989.24f, 208.3f), crystals_health_a), owning_building_guid = 0) - LocalObject(117, ProximityTerminal.Constructor(Vector3(858.69f, 1106.27f, 204.05f), crystals_health_a), owning_building_guid = 0) - LocalObject(118, ProximityTerminal.Constructor(Vector3(1063.25f, 1071.69f, 214f), crystals_health_a), owning_building_guid = 0) - LocalObject(119, ProximityTerminal.Constructor(Vector3(1063.83f, 1071.1f, 213.9f), crystals_health_a), owning_building_guid = 0) - LocalObject(120, ProximityTerminal.Constructor(Vector3(1086.51f, 1897.72f, 193.91f), crystals_health_a), owning_building_guid = 0) - LocalObject(121, ProximityTerminal.Constructor(Vector3(1135.67f, 1761.38f, 194.24f), crystals_health_a), owning_building_guid = 0) - LocalObject(122, ProximityTerminal.Constructor(Vector3(1258.38f, 1481.15f, 237.85f), crystals_health_a), owning_building_guid = 0) - LocalObject(123, ProximityTerminal.Constructor(Vector3(1273.92f, 1488.35f, 221.05f), crystals_health_a), owning_building_guid = 0) - LocalObject(124, ProximityTerminal.Constructor(Vector3(1276.89f, 1485.76f, 221.15f), crystals_health_a), owning_building_guid = 0) - LocalObject(125, ProximityTerminal.Constructor(Vector3(1406.77f, 1537.53f, 192.34f), crystals_health_a), owning_building_guid = 0) - LocalObject(126, ProximityTerminal.Constructor(Vector3(691.95f, 1096.04f, 186.74f), crystals_health_b), owning_building_guid = 0) - LocalObject(127, ProximityTerminal.Constructor(Vector3(764.38f, 706.85f, 185.44f), crystals_health_b), owning_building_guid = 0) - LocalObject(128, ProximityTerminal.Constructor(Vector3(859.73f, 1105.49f, 204.15f), crystals_health_b), owning_building_guid = 0) - LocalObject(129, ProximityTerminal.Constructor(Vector3(869.47f, 1368.33f, 212.2f), crystals_health_b), owning_building_guid = 0) - LocalObject(130, ProximityTerminal.Constructor(Vector3(911.04f, 1018.53f, 208.5f), crystals_health_b), owning_building_guid = 0) - LocalObject(131, ProximityTerminal.Constructor(Vector3(946.53f, 1404.77f, 211.83f), crystals_health_b), owning_building_guid = 0) - LocalObject(132, ProximityTerminal.Constructor(Vector3(961.61f, 1447.42f, 200.9f), crystals_health_b), owning_building_guid = 0) - LocalObject(133, ProximityTerminal.Constructor(Vector3(983.11f, 1060.58f, 218.9f), crystals_health_b), owning_building_guid = 0) - LocalObject(134, ProximityTerminal.Constructor(Vector3(994.01f, 999.99f, 204f), crystals_health_b), owning_building_guid = 0) - LocalObject(135, ProximityTerminal.Constructor(Vector3(1073.71f, 1928.76f, 193.51f), crystals_health_b), owning_building_guid = 0) - LocalObject(136, ProximityTerminal.Constructor(Vector3(1087.43f, 1898.43f, 194f), crystals_health_b), owning_building_guid = 0) - LocalObject(137, ProximityTerminal.Constructor(Vector3(1136.71f, 1761.54f, 194.1f), crystals_health_b), owning_building_guid = 0) - LocalObject(138, ProximityTerminal.Constructor(Vector3(1156.21f, 1196.65f, 219.3f), crystals_health_b), owning_building_guid = 0) - LocalObject(139, ProximityTerminal.Constructor(Vector3(1234.96f, 1230.91f, 219.5f), crystals_health_b), owning_building_guid = 0) - LocalObject(140, ProximityTerminal.Constructor(Vector3(1240.89f, 1398.44f, 219.9f), crystals_health_b), owning_building_guid = 0) - LocalObject(141, ProximityTerminal.Constructor(Vector3(1290.83f, 1356.28f, 219.83f), crystals_health_b), owning_building_guid = 0) - LocalObject(142, ProximityTerminal.Constructor(Vector3(1431.34f, 1336.17f, 232.1f), crystals_health_b), owning_building_guid = 0) - LocalObject(1268, ProximityTerminal.Constructor(Vector3(776.85f, 1784.17f, 202.52f), crystals_health_a), owning_building_guid = 0) - LocalObject(1269, ProximityTerminal.Constructor(Vector3(807.03f, 1498.08f, 224.9f), crystals_health_a), owning_building_guid = 0) - LocalObject(1270, ProximityTerminal.Constructor(Vector3(807.83f, 1497.78f, 225f), crystals_health_a), owning_building_guid = 0) - LocalObject(1271, ProximityTerminal.Constructor(Vector3(1082.47f, 500.94f, 167.46f), crystals_health_a), owning_building_guid = 0) - LocalObject(1272, ProximityTerminal.Constructor(Vector3(1109.76f, 897.5f, 293.08f), crystals_health_a), owning_building_guid = 0) - LocalObject(1273, ProximityTerminal.Constructor(Vector3(1110.47f, 898.1f, 293.18f), crystals_health_a), owning_building_guid = 0) - LocalObject(1274, ProximityTerminal.Constructor(Vector3(1110.8f, 897.23f, 292.98f), crystals_health_a), owning_building_guid = 0) - LocalObject(1275, ProximityTerminal.Constructor(Vector3(1197.16f, 1926.36f, 236.1f), crystals_health_a), owning_building_guid = 0) - LocalObject(1276, ProximityTerminal.Constructor(Vector3(1197.58f, 1925.73f, 236.27f), crystals_health_a), owning_building_guid = 0) - LocalObject(1277, ProximityTerminal.Constructor(Vector3(1209.53f, 903.09f, 295.1f), crystals_health_a), owning_building_guid = 0) - LocalObject(1278, ProximityTerminal.Constructor(Vector3(1209.91f, 903.94f, 295.15f), crystals_health_a), owning_building_guid = 0) - LocalObject(1279, ProximityTerminal.Constructor(Vector3(1210.24f, 903.12f, 295.1f), crystals_health_a), owning_building_guid = 0) - LocalObject(1280, ProximityTerminal.Constructor(Vector3(1260.52f, 790.04f, 278.76f), crystals_health_a), owning_building_guid = 0) - LocalObject(1281, ProximityTerminal.Constructor(Vector3(1359.9f, 1339.75f, 306.85f), crystals_health_a), owning_building_guid = 0) - LocalObject(1282, ProximityTerminal.Constructor(Vector3(1360.7f, 1339.41f, 306.75f), crystals_health_a), owning_building_guid = 0) - LocalObject(1283, ProximityTerminal.Constructor(Vector3(1375.04f, 1467.9f, 258.5f), crystals_health_a), owning_building_guid = 0) - LocalObject(1284, ProximityTerminal.Constructor(Vector3(1375.65f, 1468.45f, 258.65f), crystals_health_a), owning_building_guid = 0) - LocalObject(1285, ProximityTerminal.Constructor(Vector3(1375.94f, 1467.6f, 258.62f), crystals_health_a), owning_building_guid = 0) - LocalObject(1286, ProximityTerminal.Constructor(Vector3(1459.76f, 405.36f, 152.45f), crystals_health_a), owning_building_guid = 0) - LocalObject(1287, ProximityTerminal.Constructor(Vector3(1475.44f, 1004.61f, 265.46f), crystals_health_a), owning_building_guid = 0) - LocalObject(1288, ProximityTerminal.Constructor(Vector3(1476.42f, 1004.64f, 265.46f), crystals_health_a), owning_building_guid = 0) - LocalObject(1289, ProximityTerminal.Constructor(Vector3(1476.8f, 1006.25f, 265.51f), crystals_health_a), owning_building_guid = 0) - LocalObject(1290, ProximityTerminal.Constructor(Vector3(1477.26f, 1005.54f, 265.46f), crystals_health_a), owning_building_guid = 0) - LocalObject(1291, ProximityTerminal.Constructor(Vector3(1636.75f, 1401.55f, 207.81f), crystals_health_a), owning_building_guid = 0) - LocalObject(1292, ProximityTerminal.Constructor(Vector3(501.27f, 1611.08f, 212.58f), crystals_health_b), owning_building_guid = 0) - LocalObject(1293, ProximityTerminal.Constructor(Vector3(923.12f, 1191.17f, 317.89f), crystals_health_b), owning_building_guid = 0) - LocalObject(1294, ProximityTerminal.Constructor(Vector3(978.21f, 1293.04f, 230.96f), crystals_health_b), owning_building_guid = 0) - LocalObject(1295, ProximityTerminal.Constructor(Vector3(1031.55f, 2105f, 247.46f), crystals_health_b), owning_building_guid = 0) - LocalObject(1296, ProximityTerminal.Constructor(Vector3(1259.36f, 789.96f, 278.86f), crystals_health_b), owning_building_guid = 0) - LocalObject(1297, ProximityTerminal.Constructor(Vector3(1260.33f, 787.69f, 278.86f), crystals_health_b), owning_building_guid = 0) - LocalObject(1298, ProximityTerminal.Constructor(Vector3(1261.11f, 788.97f, 278.76f), crystals_health_b), owning_building_guid = 0) - LocalObject(1299, ProximityTerminal.Constructor(Vector3(1302.33f, 959.25f, 224.16f), crystals_health_b), owning_building_guid = 0) - LocalObject(1300, ProximityTerminal.Constructor(Vector3(1307.68f, 2054.64f, 197.45f), crystals_health_b), owning_building_guid = 0) - LocalObject(1301, ProximityTerminal.Constructor(Vector3(1476.08f, 1005.56f, 265.51f), crystals_health_b), owning_building_guid = 0) - LocalObject(1302, ProximityTerminal.Constructor(Vector3(1655.04f, 1594.54f, 232.32f), crystals_health_b), owning_building_guid = 0) - LocalObject(426, FacilityTurret.Constructor(Vector3(715.91f, 1262.21f, 211f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 1399, + Terminal.Constructor(Vector3(698.33f, 1305.7f, 275.21f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1400, + Terminal.Constructor(Vector3(698.58f, 1315.74f, 275.19f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1401, + Terminal.Constructor(Vector3(708.04f, 1316.01f, 269.6f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1402, + Terminal.Constructor(Vector3(712.63f, 1027.1f, 208.95f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1403, + Terminal.Constructor(Vector3(780.39f, 1449.89f, 221.48f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1404, + Terminal.Constructor(Vector3(781.96f, 1183.78f, 295.04f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1405, + Terminal.Constructor(Vector3(793.93f, 893.29f, 258.11f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1406, + Terminal.Constructor(Vector3(796.12f, 1214.87f, 216.88f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1407, + Terminal.Constructor(Vector3(796.38f, 888.05f, 258.11f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1408, + Terminal.Constructor(Vector3(811.1f, 1040.67f, 217.19f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1409, + Terminal.Constructor(Vector3(818.56f, 1196.84f, 216.87f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1411, + Terminal.Constructor(Vector3(868.14f, 1507.66f, 214.34f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1412, + Terminal.Constructor(Vector3(873.05f, 1479.4f, 214.34f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1413, + Terminal.Constructor(Vector3(874.34f, 529.76f, 223.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1414, + Terminal.Constructor(Vector3(874.43f, 541.76f, 223.6f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1415, + Terminal.Constructor(Vector3(878.58f, 714.85f, 245.64f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1417, + Terminal.Constructor(Vector3(885.9f, 718.47f, 245.59f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1418, + Terminal.Constructor(Vector3(886.9f, 719.18f, 240.1f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1419, + Terminal.Constructor(Vector3(892.74f, 1062.22f, 306.95f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1422, + Terminal.Constructor(Vector3(901.22f, 968.3f, 228.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1431, + Terminal.Constructor(Vector3(960.27f, 1312.18f, 314.7f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1432, + Terminal.Constructor(Vector3(960.85f, 1316.61f, 320.2f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1433, + Terminal.Constructor(Vector3(992.3f, 1296.21f, 228.93f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1434, + Terminal.Constructor(Vector3(1052.35f, 1589.94f, 277.2f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1435, + Terminal.Constructor(Vector3(1052.45f, 1579.18f, 277.16f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1436, + Terminal.Constructor(Vector3(1061.86f, 1589.88f, 271.7f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1437, + Terminal.Constructor(Vector3(1148.93f, 1280.05f, 309.5f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1438, + Terminal.Constructor(Vector3(1177.01f, 1655.31f, 264.53f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1439, + Terminal.Constructor(Vector3(1179.59f, 1657.89f, 264.54f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1440, + Terminal.Constructor(Vector3(1191.35f, 1350.39f, 231.43f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1441, + Terminal.Constructor(Vector3(1211.49f, 1310.12f, 297.49f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1442, + Terminal.Constructor(Vector3(1211.81f, 1370.72f, 231.41f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1443, + Terminal.Constructor(Vector3(1246.72f, 1328.41f, 241.55f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1444, + Terminal.Constructor(Vector3(1259.03f, 1323.69f, 241.59f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1447, + Terminal.Constructor(Vector3(1261.61f, 1348.42f, 241.57f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1456, + Terminal.Constructor(Vector3(1282.61f, 1120.26f, 216.13f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1458, + Terminal.Constructor(Vector3(1300.12f, 1143.05f, 216.15f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1460, + Terminal.Constructor(Vector3(1332.57f, 907.17f, 304.92f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1461, + Terminal.Constructor(Vector3(1334.08f, 903.35f, 299.39f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1462, + Terminal.Constructor(Vector3(1360.28f, 1340.27f, 301.92f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1463, + Terminal.Constructor(Vector3(1360.38f, 1313.07f, 301.94f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1464, + Terminal.Constructor(Vector3(1366.18f, 1468.81f, 264.11f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1465, + Terminal.Constructor(Vector3(1366.43f, 1457.77f, 264.13f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1466, + Terminal.Constructor(Vector3(1373.3f, 957.15f, 224.99f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1467, + Terminal.Constructor(Vector3(1378.62f, 966.06f, 225.05f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1468, + Terminal.Constructor(Vector3(1380.3f, 1313.42f, 301.87f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 111, + ProximityTerminal.Constructor(Vector3(630.2f, 1322.82f, 188.62f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 112, + ProximityTerminal.Constructor(Vector3(630.45f, 1323.4f, 188.57f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 113, + ProximityTerminal.Constructor(Vector3(679.73f, 1007f, 196.6f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 114, + ProximityTerminal.Constructor(Vector3(763.73f, 705.8f, 185.44f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 115, + ProximityTerminal.Constructor(Vector3(764.63f, 705.6f, 185.34f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 116, + ProximityTerminal.Constructor(Vector3(812.51f, 989.24f, 208.3f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 117, + ProximityTerminal.Constructor(Vector3(858.69f, 1106.27f, 204.05f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 118, + ProximityTerminal.Constructor(Vector3(1063.25f, 1071.69f, 214f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 119, + ProximityTerminal.Constructor(Vector3(1063.83f, 1071.1f, 213.9f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 120, + ProximityTerminal.Constructor(Vector3(1086.51f, 1897.72f, 193.91f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 121, + ProximityTerminal.Constructor(Vector3(1135.67f, 1761.38f, 194.24f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 122, + ProximityTerminal.Constructor(Vector3(1258.38f, 1481.15f, 237.85f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 123, + ProximityTerminal.Constructor(Vector3(1273.92f, 1488.35f, 221.05f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 124, + ProximityTerminal.Constructor(Vector3(1276.89f, 1485.76f, 221.15f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 125, + ProximityTerminal.Constructor(Vector3(1406.77f, 1537.53f, 192.34f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 126, + ProximityTerminal.Constructor(Vector3(691.95f, 1096.04f, 186.74f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 127, + ProximityTerminal.Constructor(Vector3(764.38f, 706.85f, 185.44f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 128, + ProximityTerminal.Constructor(Vector3(859.73f, 1105.49f, 204.15f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 129, + ProximityTerminal.Constructor(Vector3(869.47f, 1368.33f, 212.2f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 130, + ProximityTerminal.Constructor(Vector3(911.04f, 1018.53f, 208.5f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 131, + ProximityTerminal.Constructor(Vector3(946.53f, 1404.77f, 211.83f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 132, + ProximityTerminal.Constructor(Vector3(961.61f, 1447.42f, 200.9f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 133, + ProximityTerminal.Constructor(Vector3(983.11f, 1060.58f, 218.9f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 134, + ProximityTerminal.Constructor(Vector3(994.01f, 999.99f, 204f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 135, + ProximityTerminal.Constructor(Vector3(1073.71f, 1928.76f, 193.51f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 136, + ProximityTerminal.Constructor(Vector3(1087.43f, 1898.43f, 194f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 137, + ProximityTerminal.Constructor(Vector3(1136.71f, 1761.54f, 194.1f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 138, + ProximityTerminal.Constructor(Vector3(1156.21f, 1196.65f, 219.3f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 139, + ProximityTerminal.Constructor(Vector3(1234.96f, 1230.91f, 219.5f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 140, + ProximityTerminal.Constructor(Vector3(1240.89f, 1398.44f, 219.9f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 141, + ProximityTerminal.Constructor(Vector3(1290.83f, 1356.28f, 219.83f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 142, + ProximityTerminal.Constructor(Vector3(1431.34f, 1336.17f, 232.1f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1268, + ProximityTerminal.Constructor(Vector3(776.85f, 1784.17f, 202.52f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1269, + ProximityTerminal.Constructor(Vector3(807.03f, 1498.08f, 224.9f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1270, + ProximityTerminal.Constructor(Vector3(807.83f, 1497.78f, 225f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1271, + ProximityTerminal.Constructor(Vector3(1082.47f, 500.94f, 167.46f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1272, + ProximityTerminal.Constructor(Vector3(1109.76f, 897.5f, 293.08f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1273, + ProximityTerminal.Constructor(Vector3(1110.47f, 898.1f, 293.18f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1274, + ProximityTerminal.Constructor(Vector3(1110.8f, 897.23f, 292.98f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1275, + ProximityTerminal.Constructor(Vector3(1197.16f, 1926.36f, 236.1f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1276, + ProximityTerminal.Constructor(Vector3(1197.58f, 1925.73f, 236.27f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1277, + ProximityTerminal.Constructor(Vector3(1209.53f, 903.09f, 295.1f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1278, + ProximityTerminal.Constructor(Vector3(1209.91f, 903.94f, 295.15f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1279, + ProximityTerminal.Constructor(Vector3(1210.24f, 903.12f, 295.1f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1280, + ProximityTerminal.Constructor(Vector3(1260.52f, 790.04f, 278.76f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1281, + ProximityTerminal.Constructor(Vector3(1359.9f, 1339.75f, 306.85f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1282, + ProximityTerminal.Constructor(Vector3(1360.7f, 1339.41f, 306.75f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1283, + ProximityTerminal.Constructor(Vector3(1375.04f, 1467.9f, 258.5f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1284, + ProximityTerminal.Constructor(Vector3(1375.65f, 1468.45f, 258.65f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1285, + ProximityTerminal.Constructor(Vector3(1375.94f, 1467.6f, 258.62f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1286, + ProximityTerminal.Constructor(Vector3(1459.76f, 405.36f, 152.45f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1287, + ProximityTerminal.Constructor(Vector3(1475.44f, 1004.61f, 265.46f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1288, + ProximityTerminal.Constructor(Vector3(1476.42f, 1004.64f, 265.46f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1289, + ProximityTerminal.Constructor(Vector3(1476.8f, 1006.25f, 265.51f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1290, + ProximityTerminal.Constructor(Vector3(1477.26f, 1005.54f, 265.46f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1291, + ProximityTerminal.Constructor(Vector3(1636.75f, 1401.55f, 207.81f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 1292, + ProximityTerminal.Constructor(Vector3(501.27f, 1611.08f, 212.58f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1293, + ProximityTerminal.Constructor(Vector3(923.12f, 1191.17f, 317.89f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1294, + ProximityTerminal.Constructor(Vector3(978.21f, 1293.04f, 230.96f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1295, + ProximityTerminal.Constructor(Vector3(1031.55f, 2105f, 247.46f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1296, + ProximityTerminal.Constructor(Vector3(1259.36f, 789.96f, 278.86f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1297, + ProximityTerminal.Constructor(Vector3(1260.33f, 787.69f, 278.86f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1298, + ProximityTerminal.Constructor(Vector3(1261.11f, 788.97f, 278.76f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1299, + ProximityTerminal.Constructor(Vector3(1302.33f, 959.25f, 224.16f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1300, + ProximityTerminal.Constructor(Vector3(1307.68f, 2054.64f, 197.45f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1301, + ProximityTerminal.Constructor(Vector3(1476.08f, 1005.56f, 265.51f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 1302, + ProximityTerminal.Constructor(Vector3(1655.04f, 1594.54f, 232.32f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 426, + FacilityTurret.Constructor(Vector3(715.91f, 1262.21f, 211f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(426, 5000) - LocalObject(427, FacilityTurret.Constructor(Vector3(722.12f, 1355.17f, 211.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 427, + FacilityTurret.Constructor(Vector3(722.12f, 1355.17f, 211.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(427, 5001) - LocalObject(428, FacilityTurret.Constructor(Vector3(732.89f, 1318.6f, 211.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 428, + FacilityTurret.Constructor(Vector3(732.89f, 1318.6f, 211.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(428, 5002) - LocalObject(429, FacilityTurret.Constructor(Vector3(780.9f, 1163.81f, 208.7f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 429, + FacilityTurret.Constructor(Vector3(780.9f, 1163.81f, 208.7f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(429, 5003) - LocalObject(430, FacilityTurret.Constructor(Vector3(782.07f, 1007.54f, 208.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 430, + FacilityTurret.Constructor(Vector3(782.07f, 1007.54f, 208.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(430, 5004) - LocalObject(431, FacilityTurret.Constructor(Vector3(793.73f, 1058.82f, 208.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 431, + FacilityTurret.Constructor(Vector3(793.73f, 1058.82f, 208.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(431, 5005) - LocalObject(432, FacilityTurret.Constructor(Vector3(807.84f, 1248.17f, 211.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 432, + FacilityTurret.Constructor(Vector3(807.84f, 1248.17f, 211.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(432, 5006) - LocalObject(433, FacilityTurret.Constructor(Vector3(837.27f, 1456.97f, 212.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 433, + FacilityTurret.Constructor(Vector3(837.27f, 1456.97f, 212.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(433, 5007) - LocalObject(434, FacilityTurret.Constructor(Vector3(862.91f, 1034.45f, 208.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 434, + FacilityTurret.Constructor(Vector3(862.91f, 1034.45f, 208.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(434, 5008) - LocalObject(435, FacilityTurret.Constructor(Vector3(895.22f, 1542.12f, 212.4f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 435, + FacilityTurret.Constructor(Vector3(895.22f, 1542.12f, 212.4f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(435, 5009) - LocalObject(436, FacilityTurret.Constructor(Vector3(896.33f, 1150.82f, 214f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 436, + FacilityTurret.Constructor(Vector3(896.33f, 1150.82f, 214f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(436, 5010) - LocalObject(437, FacilityTurret.Constructor(Vector3(931.05f, 1280.46f, 223.82f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 437, + FacilityTurret.Constructor(Vector3(931.05f, 1280.46f, 223.82f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(437, 5011) - LocalObject(438, FacilityTurret.Constructor(Vector3(934.88f, 815.45f, 269.19f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 438, + FacilityTurret.Constructor(Vector3(934.88f, 815.45f, 269.19f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(438, 5012) - LocalObject(439, FacilityTurret.Constructor(Vector3(961.35f, 997f, 208.21f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 439, + FacilityTurret.Constructor(Vector3(961.35f, 997f, 208.21f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(439, 5013) - LocalObject(440, FacilityTurret.Constructor(Vector3(972.27f, 1044.02f, 219.12f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 440, + FacilityTurret.Constructor(Vector3(972.27f, 1044.02f, 219.12f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(440, 5014) - LocalObject(441, FacilityTurret.Constructor(Vector3(980.91f, 1117.07f, 231.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 441, + FacilityTurret.Constructor(Vector3(980.91f, 1117.07f, 231.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(441, 5015) - LocalObject(442, FacilityTurret.Constructor(Vector3(983.58f, 891.05f, 211.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 442, + FacilityTurret.Constructor(Vector3(983.58f, 891.05f, 211.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(442, 5016) - LocalObject(443, FacilityTurret.Constructor(Vector3(996.75f, 1324.53f, 224.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 443, + FacilityTurret.Constructor(Vector3(996.75f, 1324.53f, 224.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(443, 5017) - LocalObject(444, FacilityTurret.Constructor(Vector3(1002.7f, 1385.96f, 211.38f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 444, + FacilityTurret.Constructor(Vector3(1002.7f, 1385.96f, 211.38f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(444, 5018) - LocalObject(445, FacilityTurret.Constructor(Vector3(1037.66f, 1067.95f, 232.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 445, + FacilityTurret.Constructor(Vector3(1037.66f, 1067.95f, 232.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(445, 5019) - LocalObject(446, FacilityTurret.Constructor(Vector3(1041.32f, 829f, 195.22f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 446, + FacilityTurret.Constructor(Vector3(1041.32f, 829f, 195.22f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(446, 5020) - LocalObject(447, FacilityTurret.Constructor(Vector3(1081.52f, 1415.33f, 224.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 447, + FacilityTurret.Constructor(Vector3(1081.52f, 1415.33f, 224.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(447, 5021) - LocalObject(448, FacilityTurret.Constructor(Vector3(1109.45f, 1088.67f, 219.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 448, + FacilityTurret.Constructor(Vector3(1109.45f, 1088.67f, 219.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(448, 5022) - LocalObject(449, FacilityTurret.Constructor(Vector3(1117.12f, 819.13f, 195.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 449, + FacilityTurret.Constructor(Vector3(1117.12f, 819.13f, 195.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(449, 5023) - LocalObject(450, FacilityTurret.Constructor(Vector3(1126.53f, 1879.01f, 194.21f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 450, + FacilityTurret.Constructor(Vector3(1126.53f, 1879.01f, 194.21f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(450, 5024) - LocalObject(451, FacilityTurret.Constructor(Vector3(1128.36f, 1004.74f, 211.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 451, + FacilityTurret.Constructor(Vector3(1128.36f, 1004.74f, 211.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(451, 5025) - LocalObject(452, FacilityTurret.Constructor(Vector3(1139.19f, 1143.31f, 228.74f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 452, + FacilityTurret.Constructor(Vector3(1139.19f, 1143.31f, 228.74f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(452, 5026) - LocalObject(453, FacilityTurret.Constructor(Vector3(1139.22f, 1305.39f, 219.2f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 453, + FacilityTurret.Constructor(Vector3(1139.22f, 1305.39f, 219.2f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(453, 5027) - LocalObject(454, FacilityTurret.Constructor(Vector3(1159.69f, 928.13f, 204f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 454, + FacilityTurret.Constructor(Vector3(1159.69f, 928.13f, 204f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(454, 5028) - LocalObject(455, FacilityTurret.Constructor(Vector3(1188.22f, 1447.66f, 220f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 455, + FacilityTurret.Constructor(Vector3(1188.22f, 1447.66f, 220f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(455, 5029) - LocalObject(456, FacilityTurret.Constructor(Vector3(1204.18f, 1130.55f, 219.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 456, + FacilityTurret.Constructor(Vector3(1204.18f, 1130.55f, 219.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(456, 5030) - LocalObject(457, FacilityTurret.Constructor(Vector3(1219.64f, 942.94f, 219.03f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 457, + FacilityTurret.Constructor(Vector3(1219.64f, 942.94f, 219.03f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(457, 5031) - LocalObject(458, FacilityTurret.Constructor(Vector3(1230.47f, 1191.89f, 219.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 458, + FacilityTurret.Constructor(Vector3(1230.47f, 1191.89f, 219.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(458, 5032) - LocalObject(459, FacilityTurret.Constructor(Vector3(1248.71f, 1078.27f, 233.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 459, + FacilityTurret.Constructor(Vector3(1248.71f, 1078.27f, 233.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(459, 5033) - LocalObject(460, FacilityTurret.Constructor(Vector3(1253.84f, 1290.45f, 231.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 460, + FacilityTurret.Constructor(Vector3(1253.84f, 1290.45f, 231.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(460, 5034) - LocalObject(461, FacilityTurret.Constructor(Vector3(1272.67f, 1382.47f, 221.15f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 461, + FacilityTurret.Constructor(Vector3(1272.67f, 1382.47f, 221.15f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(461, 5035) - LocalObject(462, FacilityTurret.Constructor(Vector3(1314.52f, 1017.09f, 247.65f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 462, + FacilityTurret.Constructor(Vector3(1314.52f, 1017.09f, 247.65f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(462, 5036) - LocalObject(463, FacilityTurret.Constructor(Vector3(1314.52f, 1246.89f, 232.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 463, + FacilityTurret.Constructor(Vector3(1314.52f, 1246.89f, 232.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(463, 5037) - LocalObject(464, FacilityTurret.Constructor(Vector3(1319.98f, 995.12f, 212.4f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 464, + FacilityTurret.Constructor(Vector3(1319.98f, 995.12f, 212.4f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(464, 5038) - LocalObject(465, FacilityTurret.Constructor(Vector3(1328.63f, 1455.16f, 221.15f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 465, + FacilityTurret.Constructor(Vector3(1328.63f, 1455.16f, 221.15f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(465, 5039) - LocalObject(466, FacilityTurret.Constructor(Vector3(1332.41f, 1039.83f, 223.35f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 466, + FacilityTurret.Constructor(Vector3(1332.41f, 1039.83f, 223.35f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(466, 5040) - LocalObject(467, FacilityTurret.Constructor(Vector3(1351.68f, 1170.29f, 211.24f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 467, + FacilityTurret.Constructor(Vector3(1351.68f, 1170.29f, 211.24f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(467, 5041) - LocalObject(468, FacilityTurret.Constructor(Vector3(1378.79f, 1096.12f, 212.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 468, + FacilityTurret.Constructor(Vector3(1378.79f, 1096.12f, 212.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(468, 5042) - LocalObject(469, FacilityTurret.Constructor(Vector3(1408.53f, 1325.02f, 232.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 469, + FacilityTurret.Constructor(Vector3(1408.53f, 1325.02f, 232.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(469, 5043) - LocalObject(470, FacilityTurret.Constructor(Vector3(1447.27f, 1366.32f, 232.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 470, + FacilityTurret.Constructor(Vector3(1447.27f, 1366.32f, 232.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(470, 5044) - LocalObject(471, FacilityTurret.Constructor(Vector3(1507.41f, 1045.66f, 193.2f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 471, + FacilityTurret.Constructor(Vector3(1507.41f, 1045.66f, 193.2f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(471, 5045) } @@ -857,426 +2407,4533 @@ object Ugd02 { // Hunhau Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, false, List(Vector3(659.834f, 1494.116f, 209.241f), Vector3(707.787f, 1511.106f, 213.516f), Vector3(745.397f, 1524.431f, 213.52f)))) - ZipLinePaths(new ZipLinePath(2, true, List(Vector3(675.978f, 1376.759f, 195.646f), Vector3(662.728f, 1365.682f, 211.993f)))) - ZipLinePaths(new ZipLinePath(3, false, List(Vector3(682.823f, 1290.083f, 270.566f), Vector3(700.533f, 1244.014f, 279.312f), Vector3(718.242f, 1197.945f, 287.32f), Vector3(729.222f, 1169.382f, 290.806f)))) - ZipLinePaths(new ZipLinePath(4, true, List(Vector3(687.66f, 985.624f, 196.95f), Vector3(687.206f, 988.754f, 231.35f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(689.041f, 994.682f, 231.853f), Vector3(683.022f, 1017.202f, 226.151f), Vector3(677.103f, 1039.422f, 210.753f), Vector3(675.014f, 1047.264f, 199.002f), Vector3(674.625f, 1050.306f, 197.146f)))) - ZipLinePaths(new ZipLinePath(6, false, List(Vector3(703.28f, 1126.36f, 197.032f), Vector3(699.093f, 1176.999f, 202.114f), Vector3(694.906f, 1227.638f, 206.452f), Vector3(690.72f, 1278.276f, 210.79f), Vector3(687.19f, 1320.972f, 212.492f)))) - ZipLinePaths(new ZipLinePath(7, true, List(Vector3(705.314f, 1336.125f, 211.992f), Vector3(699.729f, 1323.205f, 270.055f)))) - ZipLinePaths(new ZipLinePath(8, true, List(Vector3(707.264f, 1106.722f, 194.914f), Vector3(812.54f, 1126.035f, 211.099f)))) - ZipLinePaths(new ZipLinePath(9, false, List(Vector3(716.802f, 1474.828f, 265.013f), Vector3(755.438f, 1503.938f, 249.574f), Vector3(778.922f, 1521.633f, 236.262f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(718.483f, 1328.007f, 270.791f), Vector3(717.052f, 1377.928f, 269.115f), Vector3(715.62f, 1427.849f, 266.689f), Vector3(715.306f, 1438.831f, 264.931f)))) - ZipLinePaths(new ZipLinePath(11, true, List(Vector3(723.223f, 1029.31f, 209.35f), Vector3(715.985f, 1022.277f, 221.533f)))) - ZipLinePaths(new ZipLinePath(12, false, List(Vector3(722.403f, 1012.416f, 275.682f), Vector3(707.86f, 1047.716f, 242.674f), Vector3(693.317f, 1083.015f, 208.861f), Vector3(689.895f, 1091.321f, 198.099f)))) - ZipLinePaths(new ZipLinePath(13, true, List(Vector3(729.519f, 1441.093f, 264.46f), Vector3(726.664f, 1443.454f, 269.965f)))) - ZipLinePaths(new ZipLinePath(14, false, List(Vector3(729.274f, 999.606f, 222.057f), Vector3(756.718f, 960.897f, 238.545f), Vector3(784.163f, 922.189f, 254.308f), Vector3(785.81f, 919.866f, 253.346f)))) - ZipLinePaths(new ZipLinePath(15, true, List(Vector3(732.337f, 1484.986f, 201.35f), Vector3(725.335f, 1474.407f, 212.551f)))) - ZipLinePaths(new ZipLinePath(16, false, List(Vector3(734.082f, 1235.608f, 221.221f), Vector3(737.893f, 1187.823f, 236.175f), Vector3(741.705f, 1140.039f, 250.411f), Vector3(745.517f, 1092.255f, 264.646f), Vector3(749.328f, 1044.47f, 278.881f), Vector3(750.472f, 1030.135f, 281.149f)))) - ZipLinePaths(new ZipLinePath(17, true, List(Vector3(734.217f, 1276.157f, 191.504f), Vector3(718.859f, 1278.728f, 195.646f)))) - ZipLinePaths(new ZipLinePath(18, true, List(Vector3(738.976f, 1350.788f, 201.35f), Vector3(728.212f, 1351.057f, 211.992f)))) - ZipLinePaths(new ZipLinePath(19, false, List(Vector3(745.07f, 1038.912f, 216.63f), Vector3(776.313f, 1079.198f, 216.124f), Vector3(786.114f, 1091.836f, 214.68f)))) - ZipLinePaths(new ZipLinePath(20, true, List(Vector3(754.226f, 727.774f, 185.791f), Vector3(759.174f, 746.876f, 251.22f)))) - ZipLinePaths(new ZipLinePath(21, false, List(Vector3(759.792f, 1153.511f, 286.565f), Vector3(787.783f, 1112.886f, 295.493f), Vector3(815.773f, 1072.261f, 303.632f), Vector3(842.085f, 1034.073f, 307.795f)))) - ZipLinePaths(new ZipLinePath(22, false, List(Vector3(763.438f, 724.138f, 249.259f), Vector3(780.082f, 707.796f, 246.845f), Vector3(796.727f, 691.454f, 231.971f), Vector3(830.015f, 658.77f, 213.98f), Vector3(863.304f, 626.086f, 195.988f), Vector3(875.288f, 614.319f, 186.049f)))) - ZipLinePaths(new ZipLinePath(23, false, List(Vector3(763.764f, 1513.528f, 225.857f), Vector3(715.885f, 1501.26f, 219.038f), Vector3(677.697f, 1492.136f, 211.116f)))) - ZipLinePaths(new ZipLinePath(24, false, List(Vector3(770.787f, 1423.545f, 231.569f), Vector3(755.314f, 1377.756f, 219.472f), Vector3(747.269f, 1353.946f, 211.866f)))) - ZipLinePaths(new ZipLinePath(25, true, List(Vector3(770.57f, 1226.43f, 209.13f), Vector3(771.447f, 1227.514f, 239.351f)))) - ZipLinePaths(new ZipLinePath(26, false, List(Vector3(773.819f, 1236.97f, 239.888f), Vector3(747.687f, 1274.476f, 260.853f), Vector3(748.995f, 1290.503f, 274.802f), Vector3(727.303f, 1303.731f, 276.097f)))) - ZipLinePaths(new ZipLinePath(27, true, List(Vector3(779.487f, 1454.284f, 228.218f), Vector3(766.751f, 1505.627f, 225.35f)))) - ZipLinePaths(new ZipLinePath(28, true, List(Vector3(774.619f, 1447.611f, 216.34f), Vector3(781.047f, 1442.489f, 221.842f)))) - ZipLinePaths(new ZipLinePath(29, false, List(Vector3(789.47f, 1333.949f, 221.19f), Vector3(837.145f, 1318.935f, 223.263f), Vector3(884.819f, 1303.92f, 224.578f), Vector3(921.052f, 1292.509f, 224.48f)))) - ZipLinePaths(new ZipLinePath(30, false, List(Vector3(800.39f, 1230.588f, 217.801f), Vector3(845.704f, 1252.722f, 245.917f), Vector3(881.918f, 1275.956f, 273.294f), Vector3(918.133f, 1299.19f, 300.671f), Vector3(925.074f, 1313.568f, 314.76f), Vector3(938.015f, 1311.946f, 315.545f)))) - ZipLinePaths(new ZipLinePath(31, false, List(Vector3(801.437f, 1542.691f, 235.379f), Vector3(813.077f, 1552.333f, 236.523f), Vector3(839.518f, 1561.875f, 213.914f), Vector3(846.208f, 1561.9f, 213.489f)))) - ZipLinePaths(new ZipLinePath(32, true, List(Vector3(805.789f, 1393.447f, 212.85f), Vector3(805.676f, 1395.361f, 246.35f)))) - ZipLinePaths(new ZipLinePath(33, false, List(Vector3(806.5f, 1182.009f, 217.802f), Vector3(825.037f, 1135.745f, 214.554f), Vector3(842.09f, 1093.181f, 208.952f)))) - ZipLinePaths(new ZipLinePath(34, false, List(Vector3(806.815f, 1168.614f, 290.224f), Vector3(854.326f, 1180.349f, 305.341f), Vector3(878.081f, 1186.216f, 316.04f), Vector3(899.136f, 1187.584f, 318.661f)))) - ZipLinePaths(new ZipLinePath(35, false, List(Vector3(807.862f, 497.707f, 223.021f), Vector3(853.713f, 519.793f, 220.513f), Vector3(860.905f, 523.258f, 218.701f)))) - ZipLinePaths(new ZipLinePath(36, true, List(Vector3(811.458f, 1453.847f, 219.522f), Vector3(798.914f, 1427.003f, 237.724f)))) - ZipLinePaths(new ZipLinePath(37, false, List(Vector3(812.01f, 1468.508f, 224.2f), Vector3(846.323f, 1483.513f, 225.502f), Vector3(856.965f, 1489.472f, 225.25f)))) - ZipLinePaths(new ZipLinePath(38, false, List(Vector3(812.402f, 1323.358f, 294.095f), Vector3(795.583f, 1338.858f, 290.07f), Vector3(778.764f, 1354.358f, 276.782f), Vector3(745.525f, 1384.658f, 247.539f), Vector3(712.287f, 1414.958f, 222.697f), Vector3(692.083f, 1433.375f, 206.87f)))) - ZipLinePaths(new ZipLinePath(39, false, List(Vector3(813.685f, 1399.673f, 246.861f), Vector3(858.609f, 1408.954f, 243.142f)))) - ZipLinePaths(new ZipLinePath(40, false, List(Vector3(821.339f, 923.858f, 253.949f), Vector3(866.375f, 944.748f, 242.984f), Vector3(871.673f, 947.206f, 238.798f)))) - ZipLinePaths(new ZipLinePath(41, false, List(Vector3(837.946f, 1377.303f, 294.087f), Vector3(848.543f, 1397.396f, 293.118f), Vector3(859.141f, 1417.489f, 271.666f), Vector3(876.18f, 1449.795f, 248.523f)))) - ZipLinePaths(new ZipLinePath(42, true, List(Vector3(838.068f, 1040.527f, 212f), Vector3(832.575f, 1040.197f, 217.504f)))) - ZipLinePaths(new ZipLinePath(43, false, List(Vector3(839.968f, 614.924f, 218.86f), Vector3(821.254f, 568.629f, 222.219f), Vector3(802.541f, 522.334f, 224.818f), Vector3(799.173f, 514.001f, 222.95f)))) - ZipLinePaths(new ZipLinePath(44, true, List(Vector3(843.115f, 1121.634f, 204.5f), Vector3(844.011f, 1124.97f, 230.35f)))) - ZipLinePaths(new ZipLinePath(45, false, List(Vector3(844.556f, 1130.363f, 230.85f), Vector3(804.089f, 1161.26f, 228.65f), Vector3(763.623f, 1192.158f, 225.699f), Vector3(760.449f, 1194.581f, 224.701f)))) - ZipLinePaths(new ZipLinePath(46, false, List(Vector3(847.197f, 1120.008f, 230.85f), Vector3(864.661f, 1084.041f, 230.03f)))) - ZipLinePaths(new ZipLinePath(47, true, List(Vector3(849.632f, 947.519f, 208.35f), Vector3(849.006f, 948.423f, 242.35f)))) - ZipLinePaths(new ZipLinePath(48, true, List(Vector3(849.178f, 619.181f, 185.718f), Vector3(848.213f, 618.726f, 218.352f)))) - ZipLinePaths(new ZipLinePath(49, false, List(Vector3(850.022f, 1063.787f, 302.344f), Vector3(817.191f, 1102.491f, 298.148f), Vector3(784.504f, 1141.537f, 290.814f)))) - ZipLinePaths(new ZipLinePath(50, false, List(Vector3(850.185f, 548.151f, 218.939f), Vector3(804.066f, 562.931f, 207.212f), Vector3(759.793f, 577.119f, 193.039f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(850.747f, 917.806f, 208.859f), Vector3(839.367f, 893.491f, 210.468f), Vector3(827.988f, 869.176f, 199.585f), Vector3(821.729f, 820.546f, 189.779f), Vector3(819.976f, 806.93f, 186.289f)))) - ZipLinePaths(new ZipLinePath(52, false, List(Vector3(851.115f, 946.293f, 242.855f), Vector3(874.386f, 901.525f, 251.024f), Vector3(897.657f, 856.756f, 258.449f), Vector3(920.928f, 811.988f, 265.873f), Vector3(931.423f, 791.799f, 268.816f)))) - ZipLinePaths(new ZipLinePath(53, true, List(Vector3(855.414f, 535.186f, 218.404f), Vector3(855.499f, 535.135f, 223.909f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(872.014f, 1425.892f, 234.776f), Vector3(830.064f, 1452.015f, 234.397f), Vector3(788.115f, 1478.138f, 236.189f), Vector3(770.496f, 1489.11f, 230.217f), Vector3(767.979f, 1490.677f, 225.644f), Vector3(747.004f, 1503.738f, 212.856f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(872.76f, 1078.462f, 307.797f), Vector3(835.192f, 1111.962f, 300.324f), Vector3(797.623f, 1145.462f, 292.117f), Vector3(796.887f, 1146.119f, 290.837f)))) - ZipLinePaths(new ZipLinePath(56, false, List(Vector3(873.773f, 1379.824f, 290.094f), Vector3(851.7f, 1417.619f, 264.733f), Vector3(829.627f, 1455.415f, 238.56f), Vector3(816.609f, 1477.166f, 222.955f)))) - ZipLinePaths(new ZipLinePath(57, true, List(Vector3(874.736f, 1018.944f, 208.85f), Vector3(889.984f, 1006.003f, 208.85f)))) - ZipLinePaths(new ZipLinePath(58, false, List(Vector3(877.022f, 1542.334f, 212.574f), Vector3(918.877f, 1570.679f, 206.656f), Vector3(960.732f, 1599.024f, 199.916f), Vector3(964.835f, 1601.803f, 198.004f)))) - ZipLinePaths(new ZipLinePath(59, false, List(Vector3(890.368f, 540.934f, 219.08f), Vector3(887.523f, 590.935f, 229.443f), Vector3(884.678f, 640.936f, 242.27f), Vector3(882.279f, 686.093f, 246.469f)))) - ZipLinePaths(new ZipLinePath(60, false, List(Vector3(898.306f, 1508.067f, 269.626f), Vector3(877.185f, 1514.283f, 268.505f), Vector3(856.064f, 1520.5f, 246.691f), Vector3(825.649f, 1529.452f, 225.853f)))) - ZipLinePaths(new ZipLinePath(61, false, List(Vector3(899.127f, 727.839f, 246.47f), Vector3(901.011f, 777.946f, 238.043f), Vector3(902.894f, 828.053f, 228.734f), Vector3(904.777f, 878.159f, 219.425f), Vector3(904.35f, 915.319f, 208.86f)))) - ZipLinePaths(new ZipLinePath(62, false, List(Vector3(906.014f, 938.879f, 229.299f), Vector3(953.394f, 929.472f, 246.524f), Vector3(1000.773f, 920.066f, 262.882f), Vector3(1048.152f, 910.659f, 287.84f), Vector3(1085.768f, 903.512f, 291.607f)))) - ZipLinePaths(new ZipLinePath(63, false, List(Vector3(915.004f, 908.784f, 208.853f), Vector3(912.459f, 859.095f, 204.635f), Vector3(909.914f, 809.406f, 199.669f), Vector3(908.794f, 787.543f, 196.113f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(915.106f, 1072.529f, 303.834f), Vector3(959.239f, 1089.108f, 285.144f), Vector3(1003.372f, 1105.687f, 265.692f), Vector3(1047.505f, 1122.266f, 246.24f), Vector3(1088.916f, 1137.444f, 225.963f)))) - ZipLinePaths(new ZipLinePath(65, true, List(Vector3(917.622f, 1395.863f, 247.228f), Vector3(925.782f, 1415.276f, 253.155f)))) - ZipLinePaths(new ZipLinePath(66, false, List(Vector3(919.772f, 1090.854f, 241.953f), Vector3(901.102f, 1135.904f, 253.824f), Vector3(882.431f, 1180.954f, 264.865f), Vector3(863.76f, 1226.004f, 275.906f), Vector3(845.09f, 1271.054f, 286.947f), Vector3(830.9f, 1305.292f, 293.803f)))) - ZipLinePaths(new ZipLinePath(67, false, List(Vector3(922.784f, 988.051f, 229.32f), Vector3(972.611f, 991.883f, 219.995f), Vector3(1002.898f, 994.212f, 212.162f)))) - ZipLinePaths(new ZipLinePath(68, true, List(Vector3(923.81f, 1020.341f, 236.978f), Vector3(922.546f, 982.492f, 238.284f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(928.145f, 1430.927f, 253.696f), Vector3(904.539f, 1456.263f, 269.4f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(928.578f, 1489.868f, 275.282f), Vector3(939.807f, 1485.162f, 274.435f), Vector3(951.236f, 1480.557f, 270.012f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(940.952f, 765.853f, 268.478f), Vector3(924.79f, 748.903f, 265.315f), Vector3(908.628f, 731.954f, 251.685f), Vector3(902.209f, 724.453f, 246.497f)))) - ZipLinePaths(new ZipLinePath(72, false, List(Vector3(943.605f, 1330.998f, 225.806f), Vector3(942.715f, 1356.015f, 224.659f), Vector3(941.825f, 1381.033f, 216.829f), Vector3(941.755f, 1382.995f, 212.794f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(945.255f, 1187.767f, 318.54f), Vector3(992.83f, 1206.052f, 317.522f), Vector3(1040.406f, 1224.336f, 315.76f), Vector3(1087.982f, 1242.621f, 313.998f), Vector3(1135.558f, 1260.905f, 312.236f), Vector3(1147.685f, 1265.566f, 310.41f)))) - ZipLinePaths(new ZipLinePath(74, false, List(Vector3(954.358f, 1499.699f, 270.422f), Vector3(947.135f, 1521.815f, 266.047f), Vector3(939.912f, 1543.932f, 251.825f), Vector3(925.465f, 1588.165f, 228.954f), Vector3(913.002f, 1626.326f, 208.144f)))) - ZipLinePaths(new ZipLinePath(75, false, List(Vector3(955.561f, 817.315f, 268.753f), Vector3(944.748f, 837.827f, 265.663f), Vector3(933.435f, 858.94f, 255.123f), Vector3(910.357f, 902.008f, 240.513f), Vector3(896.329f, 928.187f, 229.295f)))) - ZipLinePaths(new ZipLinePath(76, false, List(Vector3(959.479f, 1311.02f, 229.35f), Vector3(936.058f, 1315.299f, 238.807f), Vector3(917.137f, 1324.378f, 257.265f), Vector3(878.738f, 1337.899f, 294.48f), Vector3(871.584f, 1345.104f, 294.076f)))) - ZipLinePaths(new ZipLinePath(77, true, List(Vector3(958.375f, 1463.39f, 196.12f), Vector3(950.221f, 1455.99f, 212.172f)))) - ZipLinePaths(new ZipLinePath(78, true, List(Vector3(960.543f, 1394.809f, 204.35f), Vector3(955.447f, 1389.008f, 212.281f)))) - ZipLinePaths(new ZipLinePath(79, false, List(Vector3(962.372f, 1320.909f, 225.715f), Vector3(973.943f, 1364.715f, 248.139f), Vector3(977.513f, 1414.022f, 260.669f), Vector3(981.084f, 1463.329f, 273.198f), Vector3(981.224f, 1465.262f, 272.846f)))) - ZipLinePaths(new ZipLinePath(80, false, List(Vector3(963.682f, 972.734f, 208.858f), Vector3(982.1f, 963.019f, 212.558f)))) - ZipLinePaths(new ZipLinePath(81, true, List(Vector3(963.71f, 1377.081f, 212.079f), Vector3(982.598f, 1384.136f, 223.736f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(964.68f, 1283.954f, 322.677f), Vector3(970.913f, 1265.208f, 320.501f), Vector3(978.346f, 1241.462f, 300.857f), Vector3(992.011f, 1198.969f, 278.318f), Vector3(1005.677f, 1156.476f, 255.779f), Vector3(1016.336f, 1123.332f, 233.389f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(966.06f, 1034.152f, 289.043f), Vector3(942.97f, 1039.214f, 293.837f), Vector3(919.481f, 1044.876f, 306.952f), Vector3(912.776f, 1045.47f, 309.571f), Vector3(906.071f, 1046.064f, 307.813f)))) - ZipLinePaths(new ZipLinePath(84, true, List(Vector3(969.09f, 1626.228f, 197.794f), Vector3(967.362f, 1627.844f, 230.351f)))) - ZipLinePaths(new ZipLinePath(85, false, List(Vector3(969.733f, 1048.776f, 289.053f), Vector3(969.033f, 1089.005f, 258.458f), Vector3(968.333f, 1129.235f, 227.122f), Vector3(968.25f, 1133.968f, 219.747f)))) - ZipLinePaths(new ZipLinePath(86, true, List(Vector3(970.108f, 1021.976f, 210.45f), Vector3(971.104f, 1022.424f, 242.351f)))) - ZipLinePaths(new ZipLinePath(87, false, List(Vector3(970.945f, 1623.276f, 230.839f), Vector3(988.468f, 1603.231f, 238.464f), Vector3(1006.792f, 1599.687f, 261.579f), Vector3(1021.222f, 1590.592f, 283.002f), Vector3(1035.853f, 1581.197f, 285.922f)))) - ZipLinePaths(new ZipLinePath(88, false, List(Vector3(975.137f, 893.285f, 211.98f), Vector3(928.003f, 888.951f, 228.828f), Vector3(880.869f, 884.618f, 244.946f), Vector3(854.473f, 882.191f, 253.948f)))) - ZipLinePaths(new ZipLinePath(89, false, List(Vector3(976.142f, 1112.293f, 232.494f), Vector3(933.521f, 1139.785f, 227.909f), Vector3(890.901f, 1167.278f, 222.566f), Vector3(848.281f, 1194.77f, 217.223f), Vector3(844.938f, 1196.926f, 212.254f)))) - ZipLinePaths(new ZipLinePath(90, false, List(Vector3(977.728f, 813.361f, 268.443f), Vector3(978.126f, 864.072f, 274.605f), Vector3(978.525f, 914.782f, 280.006f), Vector3(978.923f, 965.493f, 285.406f), Vector3(979.314f, 1015.209f, 289.192f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(979.078f, 923.473f, 211.952f), Vector3(948.789f, 940.58f, 208.852f)))) - ZipLinePaths(new ZipLinePath(92, false, List(Vector3(979.933f, 1302.087f, 315.557f), Vector3(994.753f, 1292.557f, 314.229f), Vector3(1016.774f, 1282.428f, 288.809f), Vector3(1053.614f, 1262.769f, 261.308f), Vector3(1088.982f, 1243.896f, 230.267f)))) - ZipLinePaths(new ZipLinePath(93, false, List(Vector3(980.715f, 1021.867f, 242.874f), Vector3(1024.608f, 1031.666f, 267.647f), Vector3(1068.499f, 1041.465f, 291.687f), Vector3(1086.971f, 1039f, 310.66f), Vector3(1104.044f, 1049.435f, 311.942f)))) - ZipLinePaths(new ZipLinePath(94, true, List(Vector3(991.007f, 1141.841f, 214.35f), Vector3(999.178f, 1143.214f, 219.5f)))) - ZipLinePaths(new ZipLinePath(95, false, List(Vector3(993.009f, 1025.976f, 289.111f), Vector3(1013.284f, 1015.49f, 288.487f), Vector3(1033.56f, 1005.004f, 274.418f), Vector3(1074.112f, 984.032f, 251.628f), Vector3(1115.475f, 962.641f, 222.931f), Vector3(1153.594f, 942.928f, 204.75f)))) - ZipLinePaths(new ZipLinePath(96, false, List(Vector3(996.021f, 1449.051f, 225.69f), Vector3(1037.859f, 1419.909f, 227.523f), Vector3(1078.055f, 1391.909f, 225.69f)))) - ZipLinePaths(new ZipLinePath(97, false, List(Vector3(1006.725f, 1501.894f, 270.008f), Vector3(1006.849f, 1523.173f, 267.384f), Vector3(1006.912f, 1533.812f, 256.523f), Vector3(1006.974f, 1544.452f, 242.663f), Vector3(1007.223f, 1587.01f, 209.361f), Vector3(1007.052f, 1593.917f, 209.696f)))) - ZipLinePaths(new ZipLinePath(98, true, List(Vector3(1021.3f, 1735.504f, 195.26f), Vector3(1028.804f, 1734.83f, 225.08f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(1025.143f, 712.281f, 233.024f), Vector3(1020.116f, 737.102f, 233.165f), Vector3(1015.089f, 761.924f, 227.811f), Vector3(1005.034f, 811.567f, 221.863f), Vector3(994.98f, 861.21f, 215.914f), Vector3(990.84f, 881.651f, 211.953f)))) - ZipLinePaths(new ZipLinePath(100, false, List(Vector3(1029.198f, 1742.012f, 225.584f), Vector3(1052.55f, 1786.849f, 219.613f), Vector3(1075.902f, 1831.686f, 212.905f), Vector3(1099.254f, 1876.522f, 206.197f), Vector3(1109.328f, 1895.864f, 201.704f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(1031.114f, 1732.901f, 225.593f), Vector3(1022.527f, 1684.799f, 215.719f), Vector3(1013.939f, 1636.698f, 205.102f), Vector3(1009.302f, 1610.723f, 196.964f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(1034.274f, 943.094f, 222.9f), Vector3(1082.772f, 927.34f, 224.31f), Vector3(1131.269f, 911.586f, 224.977f), Vector3(1179.766f, 895.832f, 225.643f), Vector3(1213.247f, 885.838f, 221.1f)))) - ZipLinePaths(new ZipLinePath(103, false, List(Vector3(1034.409f, 1563.401f, 272.585f), Vector3(1011.925f, 1558.256f, 268.822f), Vector3(989.441f, 1553.111f, 257.502f), Vector3(944.473f, 1542.82f, 234.711f), Vector3(904.002f, 1533.559f, 214.166f)))) - ZipLinePaths(new ZipLinePath(104, false, List(Vector3(1035.377f, 1080.205f, 262.564f), Vector3(989.509f, 1063.28f, 252.81f), Vector3(955.567f, 1050.755f, 241.954f)))) - ZipLinePaths(new ZipLinePath(105, true, List(Vector3(1044.219f, 1079.095f, 232.45f), Vector3(1040.901f, 1080.062f, 262.05f)))) - ZipLinePaths(new ZipLinePath(106, false, List(Vector3(1044.836f, 889.278f, 205.783f), Vector3(1018.74f, 855.748f, 233.598f), Vector3(992.444f, 822.219f, 260.361f), Vector3(987.466f, 815.848f, 268.503f), Vector3(982.289f, 809.377f, 268.435f)))) - ZipLinePaths(new ZipLinePath(107, false, List(Vector3(1046.498f, 1557.897f, 272.54f), Vector3(1000.009f, 1539.501f, 272.4f), Vector3(953.522f, 1521.105f, 271.521f), Vector3(907.034f, 1502.709f, 269.38f)))) - ZipLinePaths(new ZipLinePath(108, true, List(Vector3(1050.431f, 901.111f, 198.721f), Vector3(1048.107f, 930.118f, 211.95f)))) - ZipLinePaths(new ZipLinePath(109, false, List(Vector3(1051.466f, 1522.68f, 211.782f), Vector3(1078.305f, 1479.63f, 217.733f), Vector3(1093.966f, 1452.951f, 220.322f)))) - ZipLinePaths(new ZipLinePath(110, false, List(Vector3(1055.076f, 1873.539f, 237.931f), Vector3(1079.972f, 1917.996f, 236.679f), Vector3(1103.404f, 1959.838f, 232.911f)))) - ZipLinePaths(new ZipLinePath(111, false, List(Vector3(1061.645f, 1734.927f, 205.23f), Vector3(1096.745f, 1766.528f, 229.978f), Vector3(1110.51f, 1778.92f, 231.729f)))) - ZipLinePaths(new ZipLinePath(112, false, List(Vector3(1062.419f, 1853.797f, 238.042f), Vector3(1100.781f, 1820.478f, 234.502f), Vector3(1111.312f, 1811.331f, 231.692f)))) - ZipLinePaths(new ZipLinePath(113, true, List(Vector3(1071.166f, 1202.403f, 219.85f), Vector3(1069.18f, 1206.548f, 272.258f)))) - ZipLinePaths(new ZipLinePath(114, false, List(Vector3(1071.354f, 1196.264f, 272.775f), Vector3(1029.289f, 1170.421f, 281.462f), Vector3(987.226f, 1144.579f, 289.413f), Vector3(945.163f, 1118.737f, 297.365f), Vector3(903.101f, 1092.894f, 305.316f), Vector3(882.07f, 1079.973f, 307.796f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(1073.915f, 1593.898f, 272.546f), Vector3(1093.854f, 1581.779f, 270.067f), Vector3(1113.994f, 1567.46f, 260.705f), Vector3(1154.274f, 1538.822f, 248.124f), Vector3(1194.553f, 1510.185f, 235.544f), Vector3(1227.725f, 1486.601f, 222.487f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(1079.887f, 1860.768f, 193.96f), Vector3(1113.7f, 1823.94f, 195.384f), Vector3(1147.514f, 1787.111f, 196.045f), Vector3(1152.247f, 1781.955f, 194.44f)))) - ZipLinePaths(new ZipLinePath(117, false, List(Vector3(1080.911f, 1572.173f, 278.049f), Vector3(1092.004f, 1550.688f, 276.731f), Vector3(1103.097f, 1529.204f, 265.932f), Vector3(1125.283f, 1486.236f, 253.217f), Vector3(1147.469f, 1443.267f, 240.502f), Vector3(1159.894f, 1419.204f, 231.029f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(1089.579f, 877.305f, 291.235f), Vector3(1069.444f, 833.967f, 276.797f), Vector3(1049.308f, 790.629f, 262.079f), Vector3(1029.173f, 747.291f, 247.36f), Vector3(1011.858f, 710.02f, 233.124f)))) - ZipLinePaths(new ZipLinePath(119, true, List(Vector3(1091.648f, 1218.925f, 282.28f), Vector3(1120.246f, 1191.143f, 272.28f)))) - ZipLinePaths(new ZipLinePath(120, true, List(Vector3(1091.707f, 1219.346f, 272.28f), Vector3(1120.248f, 1190.548f, 282.28f)))) - ZipLinePaths(new ZipLinePath(121, true, List(Vector3(1093.253f, 1192.72f, 267.28f), Vector3(1093.221f, 1193.133f, 272.28f)))) - ZipLinePaths(new ZipLinePath(122, false, List(Vector3(1093.846f, 1164.617f, 277.782f), Vector3(1061.277f, 1126.854f, 282.223f), Vector3(1028.709f, 1089.092f, 285.924f), Vector3(996.141f, 1051.329f, 289.624f), Vector3(994.838f, 1049.819f, 289.061f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(1098.524f, 1242.661f, 282.779f), Vector3(1062.263f, 1268.949f, 261.253f), Vector3(1026.002f, 1295.237f, 239.025f), Vector3(1010.048f, 1306.804f, 226.202f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(1102.365f, 1079.055f, 311.692f), Vector3(1117.761f, 1118.575f, 284.12f), Vector3(1133.157f, 1158.095f, 255.805f), Vector3(1144.931f, 1188.316f, 231.505f)))) - ZipLinePaths(new ZipLinePath(125, true, List(Vector3(1102.429f, 1172.438f, 219.85f), Vector3(1105.492f, 1168.703f, 271.778f), Vector3(1105.793f, 1168.336f, 277.28f)))) - ZipLinePaths(new ZipLinePath(126, false, List(Vector3(1105.881f, 1796.622f, 231.706f), Vector3(1084.406f, 1785.3f, 230.322f), Vector3(1062.931f, 1773.978f, 220.459f), Vector3(1019.981f, 1751.334f, 208.49f), Vector3(1014.827f, 1748.616f, 205.625f)))) - ZipLinePaths(new ZipLinePath(127, false, List(Vector3(1105.921f, 1241.768f, 277.822f), Vector3(1122.474f, 1286.219f, 259.799f), Vector3(1139.028f, 1330.669f, 241.061f), Vector3(1153.31f, 1369.019f, 221.222f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(1106.815f, 1166.369f, 272.712f), Vector3(1127.341f, 1119.926f, 278.234f), Vector3(1147.866f, 1073.483f, 283.001f), Vector3(1168.392f, 1027.04f, 287.768f), Vector3(1188.918f, 980.598f, 292.536f), Vector3(1207.834f, 937.797f, 296.002f)))) - ZipLinePaths(new ZipLinePath(129, true, List(Vector3(1107.127f, 1238.536f, 219.7f), Vector3(1100.346f, 1235.501f, 282.273f)))) - ZipLinePaths(new ZipLinePath(130, false, List(Vector3(1110.596f, 927.637f, 291.518f), Vector3(1101.755f, 947.852f, 288.767f), Vector3(1092.914f, 968.067f, 268.736f), Vector3(1075.232f, 1008.496f, 242.424f), Vector3(1058.258f, 1047.309f, 219.77f)))) - ZipLinePaths(new ZipLinePath(131, false, List(Vector3(1115.095f, 1244.667f, 282.835f), Vector3(1126.296f, 1264.792f, 280.253f), Vector3(1137.497f, 1284.918f, 268.214f), Vector3(1148.899f, 1304.669f, 253.056f), Vector3(1160.301f, 1324.42f, 237.899f), Vector3(1174.163f, 1348.43f, 221.228f)))) - ZipLinePaths(new ZipLinePath(132, false, List(Vector3(1117.499f, 1963.794f, 233.051f), Vector3(1159.472f, 1935.007f, 237.142f), Vector3(1164.41f, 1931.62f, 236.951f)))) - ZipLinePaths(new ZipLinePath(133, true, List(Vector3(1120.295f, 1190.859f, 277.28f), Vector3(1091.482f, 1219.905f, 277.28f)))) - ZipLinePaths(new ZipLinePath(134, false, List(Vector3(1124.578f, 1549.382f, 212.12f), Vector3(1074.829f, 1544.506f, 214.189f), Vector3(1068.859f, 1543.921f, 211.28f)))) - ZipLinePaths(new ZipLinePath(135, true, List(Vector3(1130.396f, 1210.112f, 219.65f), Vector3(1137.396f, 1214.411f, 282.362f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(1131.24f, 888.787f, 294.03f), Vector3(1182.184f, 890.508f, 296.375f), Vector3(1208.156f, 891.386f, 296f)))) - ZipLinePaths(new ZipLinePath(137, false, List(Vector3(1142.54f, 1218.66f, 282.912f), Vector3(1169.204f, 1261.86f, 288.479f), Vector3(1195.868f, 1305.059f, 293.298f), Vector3(1197.437f, 1307.6f, 292.852f)))) - ZipLinePaths(new ZipLinePath(138, false, List(Vector3(1144.458f, 1193.852f, 282.719f), Vector3(1140.711f, 1145.805f, 296.788f), Vector3(1136.963f, 1097.758f, 310.119f), Vector3(1134.264f, 1081.383f, 314.518f)))) - ZipLinePaths(new ZipLinePath(139, false, List(Vector3(1149.446f, 1809.731f, 231.685f), Vector3(1167.241f, 1816.872f, 227.954f), Vector3(1190.037f, 1826.814f, 206.722f), Vector3(1205.159f, 1833.178f, 194.758f)))) - ZipLinePaths(new ZipLinePath(140, false, List(Vector3(1151.375f, 1308.43f, 310.411f), Vector3(1107.283f, 1285.017f, 314.004f), Vector3(1063.191f, 1261.604f, 316.848f), Vector3(1019.099f, 1238.191f, 319.692f), Vector3(975.008f, 1214.777f, 322.536f), Vector3(945.907f, 1199.325f, 324.141f)))) - ZipLinePaths(new ZipLinePath(141, false, List(Vector3(1151.752f, 1744.783f, 205.193f), Vector3(1170.417f, 1709.389f, 235.92f), Vector3(1180.476f, 1693.4f, 264.353f), Vector3(1188.335f, 1675.411f, 265.287f)))) - ZipLinePaths(new ZipLinePath(142, false, List(Vector3(1154.103f, 1045.211f, 311.68f), Vector3(1205.072f, 1046.855f, 311.765f), Vector3(1241.05f, 1048.015f, 308.85f)))) - ZipLinePaths(new ZipLinePath(143, false, List(Vector3(1154.402f, 1908.73f, 236.95f), Vector3(1109.303f, 1887.142f, 238.339f), Vector3(1065.106f, 1865.985f, 237.93f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(1157.948f, 1371.891f, 253.866f), Vector3(1109.132f, 1378.159f, 245.764f), Vector3(1060.317f, 1384.427f, 236.926f), Vector3(1011.501f, 1390.696f, 228.089f), Vector3(981.473f, 1398.468f, 224.307f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(1159.605f, 1452.411f, 220.533f), Vector3(1186.886f, 1495.243f, 216.614f), Vector3(1195.979f, 1509.521f, 213.003f)))) - ZipLinePaths(new ZipLinePath(146, false, List(Vector3(1164.409f, 1263.605f, 310.411f), Vector3(1211.954f, 1245.315f, 308.766f), Vector3(1259.499f, 1227.024f, 306.377f), Vector3(1265.093f, 1224.872f, 304.001f)))) - ZipLinePaths(new ZipLinePath(147, true, List(Vector3(1168.129f, 1374.494f, 220.68f), Vector3(1164.962f, 1371.182f, 253.351f)))) - ZipLinePaths(new ZipLinePath(148, true, List(Vector3(1167.336f, 1311.256f, 214.3f), Vector3(1166.591f, 1298.844f, 219.85f)))) - ZipLinePaths(new ZipLinePath(149, false, List(Vector3(1169.164f, 1623.147f, 265.079f), Vector3(1191.24f, 1579.293f, 256.342f), Vector3(1213.317f, 1535.44f, 246.87f), Vector3(1235.393f, 1491.586f, 237.399f), Vector3(1238.901f, 1483.6f, 233.64f)))) - ZipLinePaths(new ZipLinePath(150, true, List(Vector3(1171.102f, 1413.013f, 225.003f), Vector3(1175.787f, 1413.078f, 230.506f)))) - ZipLinePaths(new ZipLinePath(151, false, List(Vector3(1171.763f, 1889.791f, 240.854f), Vector3(1152.036f, 1844.142f, 236.32f), Vector3(1141.384f, 1819.492f, 231.694f)))) - ZipLinePaths(new ZipLinePath(152, false, List(Vector3(1173.489f, 1450.182f, 310.544f), Vector3(1126.382f, 1462.615f, 300.085f), Vector3(1079.275f, 1475.048f, 288.844f), Vector3(1032.168f, 1487.481f, 277.603f), Vector3(1010.499f, 1493.2f, 270.014f)))) - ZipLinePaths(new ZipLinePath(153, true, List(Vector3(1182.916f, 1506.86f, 194.35f), Vector3(1181.854f, 1524.924f, 211.925f)))) - ZipLinePaths(new ZipLinePath(154, false, List(Vector3(1183.893f, 814.094f, 216.873f), Vector3(1138.422f, 796.348f, 206.755f), Vector3(1092.951f, 778.602f, 195.908f), Vector3(1055.664f, 764.05f, 185.843f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(1188.76f, 862.336f, 212.351f), Vector3(1140.34f, 850.007f, 211.072f), Vector3(1091.921f, 837.678f, 209.034f), Vector3(1077.001f, 833.719f, 206.491f)))) - ZipLinePaths(new ZipLinePath(156, false, List(Vector3(1191.935f, 1329.688f, 292.852f), Vector3(1142.362f, 1326.045f, 299.044f), Vector3(1092.79f, 1322.401f, 304.504f), Vector3(1043.217f, 1318.757f, 309.964f), Vector3(993.646f, 1315.113f, 315.423f), Vector3(982.741f, 1314.312f, 315.553f)))) - ZipLinePaths(new ZipLinePath(157, true, List(Vector3(1192.393f, 1929.829f, 196.899f), Vector3(1179.993f, 1912.709f, 236.45f)))) - ZipLinePaths(new ZipLinePath(158, true, List(Vector3(1194.117f, 818.768f, 185.029f), Vector3(1194.088f, 818.005f, 216.35f)))) - ZipLinePaths(new ZipLinePath(159, false, List(Vector3(1196.939f, 1341.983f, 293.059f), Vector3(1174.428f, 1331.787f, 290.82f), Vector3(1152.217f, 1323.691f, 277.494f), Vector3(1107.796f, 1307.498f, 261.211f), Vector3(1063.375f, 1291.306f, 244.928f), Vector3(1018.953f, 1275.113f, 228.646f), Vector3(1016.288f, 1274.141f, 226.178f)))) - ZipLinePaths(new ZipLinePath(160, false, List(Vector3(1198.132f, 1108.054f, 222.911f), Vector3(1148.266f, 1106.413f, 227.001f), Vector3(1098.4f, 1104.771f, 230.337f), Vector3(1048.535f, 1103.129f, 233.672f), Vector3(1041.553f, 1102.899f, 232.951f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(1200.709f, 1913.954f, 236.974f), Vector3(1217.736f, 1928.55f, 233.206f), Vector3(1234.763f, 1946.146f, 217.583f), Vector3(1249.453f, 1960.033f, 207.743f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(1201.001f, 932.287f, 296.001f), Vector3(1151.813f, 923.791f, 293.771f), Vector3(1132.138f, 920.393f, 291.211f)))) - ZipLinePaths(new ZipLinePath(163, true, List(Vector3(1201.371f, 1448.316f, 253.36f), Vector3(1192.845f, 1447.079f, 310.07f)))) - ZipLinePaths(new ZipLinePath(164, true, List(Vector3(1201.389f, 1364.36f, 233.756f), Vector3(1201.015f, 1360.354f, 251.467f)))) - ZipLinePaths(new ZipLinePath(165, false, List(Vector3(1201.803f, 1918.873f, 242.472f), Vector3(1226.809f, 1877.857f, 229.309f), Vector3(1251.815f, 1836.841f, 215.424f), Vector3(1276.821f, 1795.826f, 201.539f), Vector3(1283.823f, 1784.341f, 195.591f)))) - ZipLinePaths(new ZipLinePath(166, false, List(Vector3(1201.995f, 1390.422f, 310.6f), Vector3(1204.786f, 1368.885f, 306.222f), Vector3(1206.381f, 1358.416f, 295.706f), Vector3(1207.577f, 1347.348f, 292.929f)))) - ZipLinePaths(new ZipLinePath(167, false, List(Vector3(1204.983f, 964.893f, 219.91f), Vector3(1183.305f, 1011f, 222.92f), Vector3(1161.628f, 1057.107f, 225.178f), Vector3(1139.95f, 1103.214f, 227.436f), Vector3(1119.123f, 1147.512f, 227.91f)))) - ZipLinePaths(new ZipLinePath(168, true, List(Vector3(1205.446f, 1458.927f, 220.37f), Vector3(1206.823f, 1455.583f, 253.35f)))) - ZipLinePaths(new ZipLinePath(169, false, List(Vector3(1212.761f, 1666.804f, 265.077f), Vector3(1238.062f, 1703.093f, 240.457f), Vector3(1263.363f, 1739.382f, 215.085f), Vector3(1279.238f, 1762.152f, 197.042f)))) - ZipLinePaths(new ZipLinePath(170, false, List(Vector3(1212.954f, 780.028f, 193.91f), Vector3(1255.618f, 752.1f, 195.372f), Vector3(1298.282f, 724.172f, 196.091f), Vector3(1340.946f, 696.244f, 196.811f), Vector3(1341.783f, 695.697f, 195.51f)))) - ZipLinePaths(new ZipLinePath(171, false, List(Vector3(1215.651f, 1358.743f, 251.671f), Vector3(1254.53f, 1391.415f, 254.465f), Vector3(1271.301f, 1405.509f, 255.04f)))) - ZipLinePaths(new ZipLinePath(172, false, List(Vector3(1215.938f, 1852.856f, 226.888f), Vector3(1206.275f, 1860.843f, 227.299f), Vector3(1195.412f, 1868.23f, 243.848f), Vector3(1185.887f, 1883.405f, 244.091f)))) - ZipLinePaths(new ZipLinePath(173, true, List(Vector3(1216.935f, 1846.375f, 193.717f), Vector3(1217.026f, 1845.678f, 226.35f)))) - ZipLinePaths(new ZipLinePath(174, false, List(Vector3(1217.901f, 1306.547f, 252.003f), Vector3(1178.924f, 1329.026f, 230.922f), Vector3(1169.569f, 1334.421f, 221.2f)))) - ZipLinePaths(new ZipLinePath(175, false, List(Vector3(1222.97f, 892.562f, 296f), Vector3(1273.851f, 894.346f, 299.697f), Vector3(1292.807f, 895.01f, 299.837f), Vector3(1314.263f, 895.475f, 300.301f)))) - ZipLinePaths(new ZipLinePath(176, true, List(Vector3(1226.215f, 1306.36f, 220.591f), Vector3(1225.078f, 1307.135f, 251.49f)))) - ZipLinePaths(new ZipLinePath(177, false, List(Vector3(1229.979f, 897.9f, 222.686f), Vector3(1248.429f, 856.834f, 250.003f), Vector3(1265.379f, 819.569f, 273.788f), Vector3(1267.59f, 810.425f, 274.254f)))) - ZipLinePaths(new ZipLinePath(178, true, List(Vector3(1234.241f, 1678.155f, 195.187f), Vector3(1235.695f, 1678.25f, 226.352f)))) - ZipLinePaths(new ZipLinePath(179, false, List(Vector3(1243.039f, 1672.894f, 226.877f), Vector3(1257.864f, 1653.72f, 226.354f), Vector3(1272.69f, 1634.546f, 215.348f), Vector3(1302.341f, 1596.197f, 203.081f), Vector3(1318.352f, 1575.489f, 195.226f)))) - ZipLinePaths(new ZipLinePath(180, false, List(Vector3(1249.659f, 799.131f, 274.221f), Vector3(1230.152f, 794.469f, 271.908f), Vector3(1210.046f, 789.308f, 258.099f), Vector3(1171.632f, 780.485f, 217.049f), Vector3(1146.663f, 774.518f, 193.216f)))) - ZipLinePaths(new ZipLinePath(181, false, List(Vector3(1250.666f, 1023.941f, 308.491f), Vector3(1273.371f, 979.444f, 307.138f), Vector3(1296.076f, 934.946f, 305.027f), Vector3(1313.786f, 900.238f, 300.301f)))) - ZipLinePaths(new ZipLinePath(182, false, List(Vector3(1258.081f, 1239.629f, 233.701f), Vector3(1260.773f, 1194.323f, 257.733f), Vector3(1263.464f, 1149.017f, 282.723f), Vector3(1266.156f, 1103.71f, 306.713f), Vector3(1267.717f, 1077.432f, 308.82f)))) - ZipLinePaths(new ZipLinePath(183, true, List(Vector3(1260.415f, 982.55f, 212.75f), Vector3(1257.704f, 982.99f, 246.35f)))) - ZipLinePaths(new ZipLinePath(184, true, List(Vector3(1261.826f, 1507.387f, 221.5f), Vector3(1263.065f, 1509.887f, 253.35f)))) - ZipLinePaths(new ZipLinePath(185, false, List(Vector3(1262.6f, 1515.681f, 253.853f), Vector3(1237.576f, 1558.503f, 260.945f), Vector3(1212.551f, 1601.325f, 267.281f), Vector3(1196.536f, 1628.731f, 267.893f)))) - ZipLinePaths(new ZipLinePath(186, false, List(Vector3(1263.972f, 1211.529f, 304.001f), Vector3(1230.292f, 1174.694f, 307.831f), Vector3(1196.613f, 1137.86f, 310.924f), Vector3(1162.934f, 1101.025f, 314.017f), Vector3(1140.706f, 1076.714f, 314.501f)))) - ZipLinePaths(new ZipLinePath(187, false, List(Vector3(1264.862f, 981.913f, 246.854f), Vector3(1281.838f, 982.081f, 242.85f), Vector3(1298.815f, 982.25f, 222.859f)))) - ZipLinePaths(new ZipLinePath(188, false, List(Vector3(1265.582f, 1404.584f, 253.22f), Vector3(1276.61f, 1372.427f, 251.88f)))) - ZipLinePaths(new ZipLinePath(189, false, List(Vector3(1271.695f, 1083.292f, 247.734f), Vector3(1269.115f, 1109.294f, 246.993f), Vector3(1266.536f, 1135.296f, 241.156f), Vector3(1259.177f, 1185.399f, 235.122f), Vector3(1251.819f, 1235.503f, 234.087f), Vector3(1244.16f, 1267.106f, 232.753f), Vector3(1243.017f, 1295.431f, 221.094f)))) - ZipLinePaths(new ZipLinePath(190, false, List(Vector3(1280.299f, 1356.039f, 251.882f), Vector3(1313.643f, 1317.727f, 257.273f), Vector3(1346.987f, 1279.415f, 261.877f), Vector3(1380.332f, 1241.102f, 266.481f), Vector3(1413.676f, 1202.79f, 271.085f), Vector3(1428.714f, 1185.512f, 272.052f)))) - ZipLinePaths(new ZipLinePath(191, false, List(Vector3(1283.458f, 890.038f, 212.15f), Vector3(1284.727f, 924.985f, 213.25f)))) - ZipLinePaths(new ZipLinePath(192, true, List(Vector3(1284.624f, 801.067f, 273.7f), Vector3(1281.635f, 798.615f, 279.206f)))) - ZipLinePaths(new ZipLinePath(193, false, List(Vector3(1292.551f, 1066.859f, 308.492f), Vector3(1313.109f, 1065.355f, 304.285f), Vector3(1331.767f, 1064.051f, 274.575f), Vector3(1369.083f, 1061.442f, 239.914f), Vector3(1393.96f, 1059.703f, 213.35f)))) - ZipLinePaths(new ZipLinePath(194, true, List(Vector3(1305.056f, 1321.493f, 210.55f), Vector3(1291.481f, 1301.007f, 232.65f)))) - ZipLinePaths(new ZipLinePath(195, false, List(Vector3(1304.347f, 1371.371f, 253.835f), Vector3(1280.917f, 1375.189f, 258.523f), Vector3(1256.888f, 1380.207f, 243.099f), Vector3(1208.829f, 1386.642f, 237.107f), Vector3(1196.148f, 1392.034f, 228.88f), Vector3(1176.148f, 1391.834f, 221.195f)))) - ZipLinePaths(new ZipLinePath(196, true, List(Vector3(1306.335f, 1369.803f, 220.18f), Vector3(1307.635f, 1371.319f, 253.251f)))) - ZipLinePaths(new ZipLinePath(197, false, List(Vector3(1310.992f, 913.011f, 300.297f), Vector3(1290.856f, 918.141f, 295.917f), Vector3(1270.721f, 923.271f, 273.234f), Vector3(1230.45f, 933.531f, 245.426f), Vector3(1197.428f, 941.944f, 219.125f)))) - ZipLinePaths(new ZipLinePath(198, false, List(Vector3(1312.511f, 1753.802f, 198.17f), Vector3(1321.508f, 1704.613f, 199f), Vector3(1330.504f, 1655.425f, 199.087f), Vector3(1333.743f, 1637.717f, 197.87f)))) - ZipLinePaths(new ZipLinePath(199, true, List(Vector3(1312.814f, 1008.901f, 234.266f), Vector3(1296.46f, 998.06f, 247.893f)))) - ZipLinePaths(new ZipLinePath(200, true, List(Vector3(1315.533f, 658.726f, 185.933f), Vector3(1315.364f, 658.643f, 219.55f)))) - ZipLinePaths(new ZipLinePath(201, true, List(Vector3(1313.047f, 747.979f, 185.79f), Vector3(1333.818f, 745.34f, 213.76f)))) - ZipLinePaths(new ZipLinePath(202, false, List(Vector3(1326.858f, 659.881f, 220.097f), Vector3(1343.771f, 687.963f, 227.17f), Vector3(1325.685f, 716.046f, 245.475f), Vector3(1333.212f, 763.211f, 263.353f), Vector3(1336.975f, 786.793f, 272.292f), Vector3(1340.738f, 810.376f, 281.231f), Vector3(1348.265f, 857.541f, 299.109f), Vector3(1350.11f, 869.101f, 306.402f), Vector3(1351.955f, 880.661f, 307.438f)))) - ZipLinePaths(new ZipLinePath(203, false, List(Vector3(1322.759f, 1421.014f, 244.694f), Vector3(1361.905f, 1388.616f, 241.124f), Vector3(1399.517f, 1357.489f, 232.954f)))) - ZipLinePaths(new ZipLinePath(204, true, List(Vector3(1323.032f, 1295.479f, 204.5f), Vector3(1344.755f, 1292.424f, 211.2f)))) - ZipLinePaths(new ZipLinePath(205, false, List(Vector3(1326.35f, 956.514f, 222.853f), Vector3(1335.824f, 945.854f, 223.593f), Vector3(1349.999f, 943.194f, 225.853f)))) - ZipLinePaths(new ZipLinePath(206, false, List(Vector3(1327.717f, 750.522f, 214.26f), Vector3(1290.93f, 785.843f, 214.797f), Vector3(1275.783f, 800.387f, 211.95f)))) - ZipLinePaths(new ZipLinePath(207, true, List(Vector3(1328.937f, 1374.829f, 210.55f), Vector3(1315.126f, 1364.014f, 220.18f)))) - ZipLinePaths(new ZipLinePath(208, false, List(Vector3(1333.52f, 1052.305f, 224.259f), Vector3(1336.439f, 1097.932f, 247.538f), Vector3(1339.359f, 1143.56f, 270.128f), Vector3(1342.279f, 1189.187f, 292.717f), Vector3(1348.909f, 1201.159f, 303.208f), Vector3(1343.939f, 1215.132f, 304.058f)))) - ZipLinePaths(new ZipLinePath(209, false, List(Vector3(1334.659f, 1326.499f, 307.604f), Vector3(1285.117f, 1324.503f, 301.896f), Vector3(1235.575f, 1322.508f, 295.435f), Vector3(1221.775f, 1320.568f, 292.845f)))) - ZipLinePaths(new ZipLinePath(210, false, List(Vector3(1338.097f, 1355.399f, 211.077f), Vector3(1314.922f, 1314.426f, 228.464f), Vector3(1310.055f, 1305.822f, 232.957f), Vector3(1305.188f, 1297.218f, 233.177f)))) - ZipLinePaths(new ZipLinePath(211, true, List(Vector3(1341.036f, 1075.189f, 246.36f), Vector3(1324.315f, 1068.659f, 242.637f)))) - ZipLinePaths(new ZipLinePath(212, false, List(Vector3(1342.657f, 1226.81f, 304.003f), Vector3(1356.708f, 1244.273f, 303.168f), Vector3(1370.759f, 1261.736f, 288.939f), Vector3(1398.861f, 1296.661f, 250.126f), Vector3(1420.902f, 1324.054f, 232.964f)))) - ZipLinePaths(new ZipLinePath(213, true, List(Vector3(1347.83f, 1082.554f, 212.85f), Vector3(1347.547f, 1079.261f, 246.351f)))) - ZipLinePaths(new ZipLinePath(214, true, List(Vector3(1348.324f, 957.395f, 226.25f), Vector3(1352.107f, 965.408f, 237.533f)))) - ZipLinePaths(new ZipLinePath(215, false, List(Vector3(1350.175f, 923.469f, 305.829f), Vector3(1372.266f, 933.302f, 302.84f), Vector3(1394.358f, 943.136f, 290.38f), Vector3(1438.541f, 962.803f, 274.208f), Vector3(1451.536f, 968.587f, 266.392f)))) - ZipLinePaths(new ZipLinePath(216, false, List(Vector3(1352.617f, 954.329f, 235.372f), Vector3(1352.705f, 935.466f, 234.815f), Vector3(1326.093f, 908.504f, 218.798f), Vector3(1324.059f, 902.349f, 214.434f), Vector3(1321.125f, 911.095f, 212.614f)))) - ZipLinePaths(new ZipLinePath(217, false, List(Vector3(1359.87f, 1680.928f, 195.69f), Vector3(1357.305f, 1731.828f, 198.145f), Vector3(1355.846f, 1760.771f, 197.43f)))) - ZipLinePaths(new ZipLinePath(218, false, List(Vector3(1360.625f, 990.729f, 235.33f), Vector3(1331.172f, 1032.362f, 236.479f), Vector3(1317.311f, 1051.953f, 234.77f)))) - ZipLinePaths(new ZipLinePath(219, true, List(Vector3(1370.028f, 1325.967f, 294.809f), Vector3(1380.014f, 1337.961f, 302.3f)))) - ZipLinePaths(new ZipLinePath(220, false, List(Vector3(1386.011f, 1481.11f, 259.778f), Vector3(1371.875f, 1500.316f, 256.032f), Vector3(1357.74f, 1519.522f, 242.425f), Vector3(1329.47f, 1557.934f, 224.371f), Vector3(1301.2f, 1596.346f, 206.317f), Vector3(1292.331f, 1608.397f, 196.629f)))) - ZipLinePaths(new ZipLinePath(221, true, List(Vector3(1386.248f, 1033.103f, 216.339f), Vector3(1378.175f, 1038.077f, 221.843f)))) - ZipLinePaths(new ZipLinePath(222, false, List(Vector3(1396.703f, 1336.476f, 232.95f), Vector3(1352.996f, 1312.22f, 235.003f), Vector3(1309.289f, 1287.965f, 236.307f), Vector3(1308.415f, 1287.48f, 233.15f)))) - ZipLinePaths(new ZipLinePath(223, false, List(Vector3(1402.832f, 1790.362f, 238.275f), Vector3(1357.135f, 1784.082f, 219.665f), Vector3(1311.438f, 1777.801f, 200.357f), Vector3(1306.868f, 1777.173f, 196.593f)))) - ZipLinePaths(new ZipLinePath(224, false, List(Vector3(1403.596f, 1321.775f, 307.617f), Vector3(1418.538f, 1275.358f, 297.279f), Vector3(1433.479f, 1228.941f, 286.22f), Vector3(1446.628f, 1188.094f, 272.067f)))) - ZipLinePaths(new ZipLinePath(225, false, List(Vector3(1407.208f, 968.784f, 225.906f), Vector3(1452.954f, 962.509f, 204.954f), Vector3(1487.039f, 957.833f, 185.799f)))) - ZipLinePaths(new ZipLinePath(226, false, List(Vector3(1410.886f, 1015.38f, 224.85f), Vector3(1402.812f, 977.244f, 225.85f)))) - ZipLinePaths(new ZipLinePath(227, false, List(Vector3(1418.968f, 1157.21f, 272.079f), Vector3(1395.204f, 1155.15f, 268.977f), Vector3(1371.44f, 1153.09f, 261.808f), Vector3(1323.912f, 1148.971f, 243.929f), Vector3(1299.898f, 1147.293f, 230.218f), Vector3(1291.285f, 1147.316f, 227.081f)))) - ZipLinePaths(new ZipLinePath(228, false, List(Vector3(1425.18f, 1789.32f, 206.882f), Vector3(1375.333f, 1789.595f, 203.687f), Vector3(1325.486f, 1789.87f, 199.742f), Vector3(1296.574f, 1790.029f, 196.532f)))) - ZipLinePaths(new ZipLinePath(229, false, List(Vector3(1445.087f, 1032.407f, 213.083f), Vector3(1464.295f, 1018.75f, 210.633f), Vector3(1483.503f, 1005.094f, 197.115f), Vector3(1505.784f, 989.253f, 185.682f)))) - ZipLinePaths(new ZipLinePath(230, false, List(Vector3(1447.744f, 1139.43f, 272.051f), Vector3(1459.359f, 1090.834f, 270.834f), Vector3(1470.974f, 1042.238f, 268.876f), Vector3(1472.136f, 1037.378f, 266.361f)))) - ZipLinePaths(new ZipLinePath(231, false, List(Vector3(1447.873f, 1015.423f, 261.7f), Vector3(1399.228f, 1023.656f, 254.346f), Vector3(1350.583f, 1031.89f, 246.214f), Vector3(1317.738f, 1038.824f, 238.282f), Vector3(1310.909f, 1040.47f, 234.779f)))) - ZipLinePaths(new ZipLinePath(232, false, List(Vector3(1454.058f, 1332.984f, 232.951f), Vector3(1499.766f, 1355.128f, 238.278f), Vector3(1513.21f, 1361.641f, 238.042f)))) - ZipLinePaths(new ZipLinePath(233, false, List(Vector3(1454.086f, 1316.012f, 195.46f), Vector3(1492.612f, 1341.129f, 195.64f)))) - ZipLinePaths(new ZipLinePath(234, true, List(Vector3(1484.619f, 975.574f, 196.717f), Vector3(1486.5f, 1019.848f, 265.86f)))) - ZipLinePaths(new ZipLinePath(235, false, List(Vector3(1495.506f, 1365.02f, 198.175f), Vector3(1460.612f, 1394.349f, 221.756f), Vector3(1425.718f, 1423.677f, 244.627f), Vector3(1410.323f, 1436.616f, 262.064f), Vector3(1394.928f, 1449.556f, 265.053f)))) - ZipLinePaths(new ZipLinePath(236, false, List(Vector3(1508.012f, 1037.494f, 262.404f), Vector3(1484.492f, 1081.185f, 251.434f), Vector3(1460.972f, 1124.876f, 239.663f), Vector3(1437.452f, 1168.567f, 227.892f), Vector3(1413.931f, 1212.258f, 216.121f), Vector3(1410.703f, 1218.255f, 212.973f)))) - ZipLinePaths(new ZipLinePath(237, false, List(Vector3(1511.057f, 1376.957f, 238.038f), Vector3(1487.839f, 1382.544f, 233.932f), Vector3(1464.621f, 1388.132f, 225.158f), Vector3(1418.186f, 1399.308f, 209.16f), Vector3(1387.537f, 1408.048f, 194.108f)))) - ZipLinePaths(new ZipLinePath(238, false, List(Vector3(1533.004f, 1221.827f, 201.162f), Vector3(1487.001f, 1202.784f, 206.58f), Vector3(1440.999f, 1183.741f, 211.247f), Vector3(1415.238f, 1173.077f, 212.962f)))) - ZipLinePaths(new ZipLinePath(239, true, List(Vector3(1541.029f, 1002.385f, 185.132f), Vector3(1539.744f, 1007.686f, 217.352f)))) - ZipLinePaths(new ZipLinePath(240, false, List(Vector3(1544.376f, 1012.95f, 217.861f), Vector3(1544.619f, 1063.813f, 214.894f), Vector3(1544.862f, 1114.676f, 211.185f), Vector3(1545.105f, 1165.539f, 207.476f), Vector3(1545.319f, 1210.418f, 202.922f)))) - ZipLinePaths(new ZipLinePath(241, false, List(Vector3(1576.949f, 990.322f, 223.031f), Vector3(1530.215f, 972.799f, 220.748f), Vector3(1483.48f, 955.276f, 217.726f), Vector3(1436.745f, 937.753f, 214.704f), Vector3(1434.876f, 937.052f, 212.651f)))) - ZipLinePaths(new ZipLinePath(242, true, List(Vector3(1289.844f, 1078.568f, 216.85f), Vector3(1289.422f, 1086.704f, 234.276f)))) - ZipLinePaths(new ZipLinePath(243, true, List(Vector3(1295.275f, 1006.474f, 234.276f), Vector3(1295.289f, 1014.841f, 216.85f)))) - ZipLinePaths(new ZipLinePath(244, true, List(Vector3(889.903f, 1392.847f, 216.85f), Vector3(891.002f, 1383.453f, 234.276f)))) - ZipLinePaths(new ZipLinePath(245, true, List(Vector3(899.389f, 1462.873f, 234.276f), Vector3(899.115f, 1455.859f, 216.85f)))) - ZipLinePaths(new ZipLinePath(246, true, List(Vector3(1206.547f, 1338.16f, 292.333f), Vector3(1207.199f, 1337.626f, 297.84f)))) - ZipLinePaths(new ZipLinePath(247, false, List(Vector3(1320.229f, 668.971f, 220.041f), Vector3(1297.599f, 714.589f, 218.575f), Vector3(1274.969f, 760.207f, 215.169f), Vector3(1255.445f, 799.563f, 211.951f)))) - ZipLinePaths(new ZipLinePath(248, false, List(Vector3(1356.604f, 911.362f, 300.275f), Vector3(1379.938f, 917.926f, 296.868f), Vector3(1403.271f, 924.489f, 285.181f), Vector3(1449.938f, 937.616f, 269.351f), Vector3(1496.605f, 950.742f, 253.521f), Vector3(1543.272f, 963.869f, 237.692f), Vector3(1582.619f, 974.937f, 223.027f)))) - ZipLinePaths(new ZipLinePath(249, true, List(Vector3(1082.643f, 1290.453f, 214.55f), Vector3(1077.063f, 1283.506f, 219.55f)))) - ZipLinePaths(new ZipLinePath(250, false, List(Vector3(871.498f, 436.029f, 198.902f), Vector3(873.737f, 485.704f, 210.959f), Vector3(877.66f, 524.343f, 218.903f)))) - ZipLinePaths(new ZipLinePath(251, true, List(Vector3(1212.524f, 1596.389f, 194.899f), Vector3(1216.017f, 1580.147f, 212.18f)))) - ZipLinePaths(new ZipLinePath(252, false, List(Vector3(764.967f, 771.161f, 249.219f), Vector3(766.426f, 773.295f, 249.101f), Vector3(807.076f, 832.744f, 194.612f)))) - ZipLinePaths(new ZipLinePath(253, false, List(Vector3(676.271f, 684.934f, 196.79f), Vector3(682.995f, 735.485f, 197.148f), Vector3(689.719f, 786.037f, 196.758f), Vector3(696.442f, 836.589f, 196.367f), Vector3(698.024f, 848.484f, 195.52f)))) - ZipLinePaths(new ZipLinePath(254, true, List(Vector3(817.187f, 767.054f, 185.791f), Vector3(816.774f, 767.452f, 217.351f)))) - ZipLinePaths(new ZipLinePath(255, false, List(Vector3(806.255f, 770.376f, 217.869f), Vector3(783.751f, 777.979f, 213.672f), Vector3(761.247f, 785.583f, 203.003f), Vector3(745.045f, 791.057f, 196.219f)))) - ZipLinePaths(new ZipLinePath(256, false, List(Vector3(815.529f, 778.081f, 217.866f), Vector3(828.261f, 826.796f, 210.506f), Vector3(840.992f, 875.511f, 202.4f), Vector3(846.983f, 898.436f, 197.557f)))) - ZipLinePaths(new ZipLinePath(257, false, List(Vector3(819.788f, 763.677f, 217.895f), Vector3(850.532f, 726.309f, 240.426f), Vector3(855.093f, 723.569f, 241.036f)))) - ZipLinePaths(new ZipLinePath(258, false, List(Vector3(905.596f, 706.507f, 241.162f), Vector3(956.466f, 704.68f, 238.794f), Vector3(1007.335f, 702.852f, 233.081f)))) - ZipLinePaths(new ZipLinePath(259, false, List(Vector3(704.784f, 875.597f, 201.11f), Vector3(717.929f, 896.92f, 201.064f), Vector3(731.574f, 918.444f, 200.122f), Vector3(758.864f, 961.49f, 198.395f), Vector3(761.539f, 965.711f, 197.45f)))) - ZipLinePaths(new ZipLinePath(260, false, List(Vector3(893.999f, 456.076f, 196.941f), Vector3(904.293f, 505.965f, 196.623f), Vector3(914.587f, 555.853f, 195.773f), Vector3(918.724f, 575.907f, 192.721f), Vector3(922.862f, 595.96f, 189.971f)))) - ZipLinePaths(new ZipLinePath(261, true, List(Vector3(795.919f, 940.689f, 196.595f), Vector3(830.961f, 955.602f, 210.15f)))) - ZipLinePaths(new ZipLinePath(262, false, List(Vector3(647.03f, 933.05f, 195.93f), Vector3(661.956f, 981.799f, 197.893f), Vector3(665.175f, 992.314f, 197.45f)))) - ZipLinePaths(new ZipLinePath(263, true, List(Vector3(690.613f, 1259.99f, 196.173f), Vector3(706.118f, 1244.747f, 211.35f)))) - ZipLinePaths(new ZipLinePath(264, true, List(Vector3(637.748f, 1318.521f, 196.587f), Vector3(659.951f, 1326.051f, 211.992f)))) - ZipLinePaths(new ZipLinePath(265, false, List(Vector3(706.085f, 1366.379f, 212.49f), Vector3(715.565f, 1385.971f, 213.872f), Vector3(725.045f, 1405.564f, 213.05f)))) - ZipLinePaths(new ZipLinePath(266, true, List(Vector3(1293.009f, 1407.06f, 229.539f), Vector3(1290.49f, 1414.493f, 259.321f)))) - ZipLinePaths(new ZipLinePath(267, true, List(Vector3(1260.779f, 1465.584f, 227.039f), Vector3(1273.877f, 1457.67f, 254.54f)))) - ZipLinePaths(new ZipLinePath(268, true, List(Vector3(900.574f, 1093.87f, 213.939f), Vector3(888.281f, 1107.401f, 233.19f)))) - ZipLinePaths(new ZipLinePath(269, true, List(Vector3(933.058f, 1035.019f, 216.439f), Vector3(929.539f, 1041.274f, 246.221f)))) - ZipLinePaths(new ZipLinePath(270, true, List(Vector3(816.289f, 2213.624f, 242.635f), Vector3(821.393f, 2071.116f, 202.635f)))) - ZipLinePaths(new ZipLinePath(271, true, List(Vector3(844.297f, 2026.099f, 202.635f), Vector3(973.751f, 2000.333f, 201.989f)))) - ZipLinePaths(new ZipLinePath(272, false, List(Vector3(905.182f, 628.614f, 185.95f), Vector3(885.241f, 675.551f, 187.87f), Vector3(866.865f, 718.808f, 186.29f)))) - ZipLinePaths(new ZipLinePath(273, false, List(Vector3(809.87f, 889.825f, 186f), Vector3(769.309f, 860.583f, 187.897f), Vector3(736.049f, 836.604f, 186.28f)))) - ZipLinePaths(new ZipLinePath(274, false, List(Vector3(848.913f, 608.999f, 218.84f), Vector3(861.032f, 560.488f, 219.485f), Vector3(863.613f, 549.756f, 218.417f)))) - ZipLinePaths(new ZipLinePath(275, false, List(Vector3(854.5f, 709.362f, 241.026f), Vector3(814.796f, 688.125f, 219.964f), Vector3(775.887f, 667.312f, 197.944f)))) - ZipLinePaths(new ZipLinePath(276, false, List(Vector3(827.296f, 970.647f, 219.293f), Vector3(813.585f, 932.726f, 254.124f), Vector3(811.665f, 927.417f, 253.938f)))) - ZipLinePaths(new ZipLinePath(277, false, List(Vector3(690.329f, 984.723f, 231.851f), Vector3(704.931f, 936.036f, 236.752f), Vector3(719.533f, 887.349f, 240.911f), Vector3(734.135f, 838.662f, 245.069f), Vector3(748.737f, 789.974f, 249.228f), Vector3(754.177f, 771.836f, 249.222f)))) - ZipLinePaths(new ZipLinePath(278, false, List(Vector3(875.762f, 1394.878f, 234.786f), Vector3(867.423f, 1372.115f, 232.776f), Vector3(859.084f, 1349.352f, 223.285f), Vector3(845.409f, 1312.021f, 212.116f)))) - ZipLinePaths(new ZipLinePath(279, false, List(Vector3(961.517f, 1415.007f, 247.343f), Vector3(979.775f, 1398.183f, 248.537f), Vector3(998.034f, 1381.359f, 242.23f), Vector3(1034.551f, 1347.71f, 236.358f), Vector3(1071.069f, 1314.061f, 230.485f), Vector3(1085.445f, 1301.175f, 227.303f)))) - ZipLinePaths(new ZipLinePath(280, false, List(Vector3(1228.337f, 1309.135f, 251.995f), Vector3(1265.385f, 1276.134f, 246.542f), Vector3(1283.909f, 1259.633f, 242.624f)))) - ZipLinePaths(new ZipLinePath(281, true, List(Vector3(860.587f, 1479.59f, 214.706f), Vector3(868.409f, 1478.511f, 224.479f)))) - ZipLinePaths(new ZipLinePath(282, true, List(Vector3(1274.085f, 1129.327f, 216.506f), Vector3(1301.615f, 1140.312f, 226.271f)))) - ZipLinePaths(new ZipLinePath(283, false, List(Vector3(1016.344f, 669.706f, 227.588f), Vector3(1016.653f, 621.568f, 212.295f), Vector3(1016.85f, 590.759f, 207.982f), Vector3(1017.164f, 541.658f, 193.497f), Vector3(1017.349f, 512.775f, 183.271f)))) - ZipLinePaths(new ZipLinePath(284, false, List(Vector3(1095.865f, 472.467f, 168.211f), Vector3(1096.286f, 460.001f, 170.523f), Vector3(1096.707f, 447.535f, 172.931f), Vector3(1097.314f, 429.584f, 168.664f), Vector3(1097.92f, 411.632f, 163.901f)))) - ZipLinePaths(new ZipLinePath(285, false, List(Vector3(951.858f, 387.939f, 188.212f), Vector3(951.96f, 381.835f, 187.721f), Vector3(952.062f, 375.731f, 186.032f), Vector3(952.266f, 363.522f, 181.666f), Vector3(952.469f, 351.314f, 178.5f), Vector3(952.673f, 339.105f, 174.333f), Vector3(952.877f, 326.897f, 170.356f), Vector3(953.08f, 314.688f, 166.58f), Vector3(953.284f, 302.48f, 164.053f), Vector3(953.488f, 290.271f, 163.926f), Vector3(953.732f, 275.621f, 163.452f)))) - ZipLinePaths(new ZipLinePath(286, false, List(Vector3(837.714f, 264.55f, 163.487f), Vector3(838.193f, 255.85f, 163.337f), Vector3(838.3f, 253.916f, 162.774f), Vector3(839.045f, 240.382f, 158.337f), Vector3(839.79f, 226.849f, 153.417f)))) - ZipLinePaths(new ZipLinePath(287, false, List(Vector3(884.876f, 213.314f, 143.23f), Vector3(887.973f, 162.408f, 143.946f), Vector3(888.216f, 158.416f, 143.28f)))) - ZipLinePaths(new ZipLinePath(288, false, List(Vector3(776.348f, 254.115f, 153.197f), Vector3(776.224f, 266.482f, 153.979f), Vector3(776.1f, 278.848f, 155.562f), Vector3(775.977f, 291.214f, 159.152f), Vector3(775.853f, 303.581f, 164.142f), Vector3(775.61f, 327.828f, 170.323f), Vector3(775.489f, 339.952f, 174.214f), Vector3(775.428f, 346.014f, 176.759f), Vector3(775.368f, 352.076f, 178.215f)))) - ZipLinePaths(new ZipLinePath(289, false, List(Vector3(760.354f, 385.699f, 183.342f), Vector3(759.79f, 410.144f, 191.685f), Vector3(759.509f, 422.366f, 195.616f), Vector3(759.227f, 434.588f, 198.548f), Vector3(758.962f, 446.092f, 202.623f), Vector3(758.829f, 451.843f, 203.263f)))) - ZipLinePaths(new ZipLinePath(290, false, List(Vector3(711.762f, 461.764f, 213.168f), Vector3(713.259f, 480.738f, 218.568f), Vector3(712.907f, 490.925f, 221.321f), Vector3(711.931f, 495.469f, 223.197f), Vector3(712.755f, 499.612f, 223.874f), Vector3(717.35f, 503.016f, 223.69f), Vector3(755.945f, 503.42f, 223.257f)))) - ZipLinePaths(new ZipLinePath(291, false, List(Vector3(1281.979f, 376.763f, 183.18f), Vector3(1316.967f, 413.866f, 183.982f), Vector3(1323.827f, 421.141f, 183.24f)))) - ZipLinePaths(new ZipLinePath(292, false, List(Vector3(1493.118f, 393.605f, 163.24f), Vector3(1494.583f, 403.371f, 162.907f), Vector3(1496.048f, 413.138f, 159.87f), Vector3(1495.979f, 425.872f, 155.056f), Vector3(1495.84f, 451.339f, 154.929f), Vector3(1495.457f, 470.964f, 156.642f), Vector3(1495.465f, 480.976f, 158.248f), Vector3(1494.373f, 490.588f, 154.855f), Vector3(1495.206f, 529.838f, 143.18f), Vector3(1495.623f, 549.462f, 142.818f), Vector3(1496.039f, 569.087f, 148.156f), Vector3(1496.456f, 588.711f, 146.344f), Vector3(1496.872f, 608.336f, 143.831f), Vector3(1485.404f, 616.733f, 143.934f), Vector3(1479.343f, 630.506f, 146.634f), Vector3(1477.886f, 647.664f, 153.035f), Vector3(1479.029f, 659.223f, 157.535f), Vector3(1479.715f, 685.339f, 163.136f), Vector3(1481.462f, 690.033f, 163.2f)))) - ZipLinePaths(new ZipLinePath(293, false, List(Vector3(1488.859f, 696.058f, 163.275f), Vector3(1518.973f, 696.266f, 172.9f), Vector3(1534.516f, 696.374f, 177.82f), Vector3(1551.031f, 696.488f, 182.996f), Vector3(1569.488f, 696.616f, 183.205f)))) - ZipLinePaths(new ZipLinePath(294, false, List(Vector3(1598.739f, 695.95f, 183.191f), Vector3(1647.716f, 694.45f, 198.065f), Vector3(1649.637f, 694.391f, 198.21f)))) - ZipLinePaths(new ZipLinePath(295, false, List(Vector3(1686.968f, 669.616f, 208.213f), Vector3(1686.975f, 675.962f, 207.406f), Vector3(1686.982f, 682.309f, 203.803f), Vector3(1686.989f, 688.656f, 203.35f), Vector3(1686.996f, 695.002f, 200.298f), Vector3(1687.01f, 707.695f, 198.993f), Vector3(1687.024f, 720.389f, 199.488f), Vector3(1687.033f, 728.602f, 199.286f), Vector3(1687.042f, 736.815f, 199.685f), Vector3(1687.06f, 753.242f, 202.782f), Vector3(1687.074f, 766.184f, 198.814f), Vector3(1687.089f, 779.126f, 195.346f), Vector3(1687.103f, 792.068f, 190.679f), Vector3(1687.117f, 805.01f, 187.411f), Vector3(1687.131f, 817.703f, 186.067f), Vector3(1687.145f, 830.396f, 188.723f), Vector3(1687.159f, 843.089f, 192.829f), Vector3(1687.173f, 855.783f, 192.635f), Vector3(1687.201f, 880.671f, 188.202f)))) - ZipLinePaths(new ZipLinePath(296, false, List(Vector3(1688.037f, 913.673f, 188.342f), Vector3(1688.198f, 936.255f, 196.256f), Vector3(1688.358f, 958.837f, 203.292f), Vector3(1688.392f, 963.641f, 203.132f)))) - ZipLinePaths(new ZipLinePath(297, false, List(Vector3(1719.051f, 955.831f, 203.191f), Vector3(1719.054f, 966.319f, 206.35f), Vector3(1719.055f, 971.562f, 206.579f), Vector3(1719.057f, 976.806f, 208.009f), Vector3(1719.058f, 983.299f, 206.171f), Vector3(1719.06f, 989.791f, 203.433f), Vector3(1719.063f, 1002.776f, 200.158f), Vector3(1719.066f, 1015.761f, 195.282f), Vector3(1719.069f, 1028.746f, 191.407f), Vector3(1719.072f, 1041.48f, 188.344f), Vector3(1719.075f, 1054.215f, 183.98f), Vector3(1719.078f, 1066.949f, 179.367f), Vector3(1719.082f, 1079.684f, 179.353f), Vector3(1719.088f, 1105.152f, 178.427f), Vector3(1719.094f, 1130.621f, 186.5f), Vector3(1719.097f, 1142.107f, 192.315f), Vector3(1719.1f, 1153.593f, 193.43f)))) - ZipLinePaths(new ZipLinePath(298, false, List(Vector3(1656.032f, 1221.278f, 193.691f), Vector3(1655.949f, 1231.25f, 198.116f), Vector3(1655.816f, 1247.205f, 203.113f), Vector3(1655.675f, 1264.157f, 199.603f), Vector3(1655.534f, 1281.109f, 198.191f)))) - ZipLinePaths(new ZipLinePath(299, false, List(Vector3(1656.205f, 1310.291f, 198.211f), Vector3(1655.728f, 1334.811f, 204.791f), Vector3(1655.252f, 1359.33f, 212.888f), Vector3(1655.215f, 1361.253f, 213.212f)))) - ZipLinePaths(new ZipLinePath(300, false, List(Vector3(1633.716f, 1367.62f, 213.197f), Vector3(1617.236f, 1367.789f, 218.096f), Vector3(1608.997f, 1367.873f, 220.706f), Vector3(1600.757f, 1367.957f, 222.815f), Vector3(1576.039f, 1368.209f, 227.236f), Vector3(1563.679f, 1368.335f, 230.446f), Vector3(1551.32f, 1368.461f, 234.257f), Vector3(1535.81f, 1368.619f, 238.516f)))) - ZipLinePaths(new ZipLinePath(301, false, List(Vector3(1672.725f, 1446.715f, 198.892f), Vector3(1672.61f, 1454.546f, 202.811f), Vector3(1672.489f, 1462.867f, 205.662f), Vector3(1672.368f, 1471.187f, 207.912f), Vector3(1671.996f, 1496.638f, 209.314f), Vector3(1671.811f, 1509.364f, 211.814f), Vector3(1671.625f, 1522.089f, 214.915f), Vector3(1671.511f, 1529.92f, 215.701f), Vector3(1671.454f, 1533.836f, 217.794f), Vector3(1671.396f, 1537.751f, 218.201f)))) - ZipLinePaths(new ZipLinePath(302, false, List(Vector3(1640.047f, 1548.61f, 223.215f), Vector3(1640.505f, 1568.514f, 228.292f), Vector3(1640.734f, 1578.467f, 231.29f), Vector3(1640.849f, 1583.443f, 232.789f), Vector3(1640.963f, 1588.419f, 233.205f)))) - ZipLinePaths(new ZipLinePath(303, false, List(Vector3(1655.87f, 1606.72f, 233.9f), Vector3(1655.775f, 1612.969f, 237.636f), Vector3(1655.68f, 1619.217f, 238.471f), Vector3(1655.586f, 1625.466f, 241.005f), Vector3(1655.538f, 1628.59f, 242.473f), Vector3(1655.491f, 1631.714f, 242.94f), Vector3(1654.961f, 1666.706f, 233.2f)))) - ZipLinePaths(new ZipLinePath(304, false, List(Vector3(1719.529f, 1570.549f, 223.18f), Vector3(1719.582f, 1564.423f, 222.69f), Vector3(1719.635f, 1558.297f, 220.107f), Vector3(1719.742f, 1546.046f, 216.741f), Vector3(1719.796f, 1539.92f, 215.008f), Vector3(1719.849f, 1533.795f, 213.375f), Vector3(1719.902f, 1527.669f, 210.492f), Vector3(1719.956f, 1521.543f, 209.509f), Vector3(1720.067f, 1508.802f, 209.088f), Vector3(1720.178f, 1496.061f, 208.668f), Vector3(1720.289f, 1483.319f, 208.948f), Vector3(1720.345f, 1476.949f, 212.087f), Vector3(1720.4f, 1470.578f, 213.127f), Vector3(1720.618f, 1445.585f, 204.617f), Vector3(1720.727f, 1433.089f, 201.362f), Vector3(1720.836f, 1420.593f, 197.307f), Vector3(1721.037f, 1397.56f, 189.401f), Vector3(1720.537f, 1386.044f, 186.448f), Vector3(1721.238f, 1374.528f, 183.2f)))) - ZipLinePaths(new ZipLinePath(305, false, List(Vector3(1730.236f, 1367.877f, 183.382f), Vector3(1738.146f, 1367.813f, 186.517f), Vector3(1746.057f, 1367.749f, 188.776f), Vector3(1753.968f, 1367.684f, 191.935f), Vector3(1757.923f, 1367.652f, 192.915f), Vector3(1761.878f, 1367.62f, 193.213f)))) - ZipLinePaths(new ZipLinePath(306, false, List(Vector3(1016.652f, 498.995f, 183.171f), Vector3(1016.125f, 474.041f, 183.533f), Vector3(1015.597f, 449.088f, 184.801f), Vector3(1015.412f, 440.354f, 185.924f), Vector3(1015.319f, 435.987f, 186.986f), Vector3(1015.227f, 431.62f, 188.148f), Vector3(1015.042f, 422.887f, 188.222f), Vector3(1014.857f, 414.153f, 188.201f)))) - ZipLinePaths(new ZipLinePath(307, false, List(Vector3(1008.883f, 408.224f, 188.2f), Vector3(1000.386f, 407.959f, 190.022f), Vector3(996.138f, 407.826f, 192.386f), Vector3(991.89f, 407.693f, 192.949f), Vector3(983.394f, 407.428f, 189.721f), Vector3(974.897f, 407.163f, 188.19f)))) - ZipLinePaths(new ZipLinePath(308, false, List(Vector3(820.337f, 246.805f, 153.19f), Vector3(778.421f, 249.491f, 153.23f)))) - ZipLinePaths(new ZipLinePath(309, false, List(Vector3(602.831f, 599.918f, 183.211f), Vector3(583.872f, 600.199f, 183.368f), Vector3(564.912f, 600.48f, 183.224f), Vector3(548.947f, 600.716f, 183.228f), Vector3(543.957f, 600.79f, 183.153f), Vector3(534.977f, 600.923f, 179.827f), Vector3(525.996f, 601.056f, 178.201f)))) - ZipLinePaths(new ZipLinePath(310, false, List(Vector3(519.788f, 612.558f, 178.21f), Vector3(519.461f, 663.555f, 178.948f), Vector3(519.192f, 705.553f, 178.19f)))) - ZipLinePaths(new ZipLinePath(311, false, List(Vector3(472.031f, 737.508f, 183.333f), Vector3(471.882f, 749.709f, 187.618f), Vector3(471.732f, 761.909f, 191.228f), Vector3(471.583f, 774.11f, 194.637f), Vector3(471.508f, 780.21f, 197.142f), Vector3(471.433f, 786.31f, 199.247f), Vector3(471.337f, 794.205f, 201.757f), Vector3(471.24f, 802.099f, 203.866f), Vector3(471.143f, 809.994f, 206.576f), Vector3(471.095f, 813.941f, 207.731f), Vector3(471.047f, 817.888f, 208.213f)))) - ZipLinePaths(new ZipLinePath(312, false, List(Vector3(425.006f, 836.2f, 203.19f), Vector3(423.432f, 799.231f, 203.17f)))) - ZipLinePaths(new ZipLinePath(313, false, List(Vector3(403.332f, 807.446f, 203.211f), Vector3(391.598f, 808.338f, 205.995f), Vector3(385.732f, 808.784f, 207.642f), Vector3(379.865f, 809.23f, 208.2f)))) - ZipLinePaths(new ZipLinePath(314, false, List(Vector3(375.366f, 818.172f, 208.35f), Vector3(375.41f, 825.167f, 210.7f), Vector3(375.432f, 828.665f, 212.023f), Vector3(375.453f, 832.163f, 212.946f), Vector3(375.534f, 845.155f, 209.365f), Vector3(375.575f, 851.651f, 207.075f), Vector3(375.595f, 854.899f, 205.429f), Vector3(375.615f, 858.147f, 204.184f), Vector3(375.696f, 871.139f, 201.003f), Vector3(375.737f, 877.635f, 198.812f), Vector3(375.777f, 884.131f, 196.821f), Vector3(375.857f, 896.874f, 193.848f), Vector3(375.896f, 903.245f, 194.162f), Vector3(375.936f, 909.616f, 197.576f), Vector3(376.015f, 922.358f, 200.253f), Vector3(376.055f, 928.729f, 203.591f), Vector3(376.095f, 935.1f, 200.33f), Vector3(376.174f, 947.842f, 199.057f), Vector3(376.253f, 960.585f, 203.184f), Vector3(376.293f, 966.956f, 200.597f), Vector3(376.333f, 973.327f, 198.811f), Vector3(376.372f, 979.698f, 196.824f), Vector3(376.412f, 986.069f, 194.438f), Vector3(376.571f, 1011.554f, 188.192f), Vector3(376.65f, 1024.296f, 183.869f), Vector3(376.69f, 1030.667f, 184.707f), Vector3(376.73f, 1037.038f, 187.346f), Vector3(376.809f, 1049.78f, 190.673f), Vector3(376.849f, 1056.151f, 192.937f), Vector3(376.888f, 1062.522f, 191f), Vector3(376.968f, 1075.265f, 188.627f), Vector3(377.007f, 1081.636f, 188.441f), Vector3(377.047f, 1088.007f, 189.654f), Vector3(377.102f, 1096.751f, 189.666f), Vector3(377.156f, 1105.496f, 193.877f), Vector3(377.211f, 1114.241f, 196.188f), Vector3(377.238f, 1118.613f, 197.944f), Vector3(377.265f, 1122.985f, 198.2f)))) - ZipLinePaths(new ZipLinePath(315, false, List(Vector3(455.425f, 1085.946f, 183.201f), Vector3(455.374f, 1103.412f, 183.805f), Vector3(455.348f, 1112.145f, 184.956f), Vector3(455.335f, 1116.511f, 187.332f), Vector3(455.322f, 1120.878f, 187.907f), Vector3(455.303f, 1127.365f, 185.035f), Vector3(455.283f, 1133.852f, 183.163f), Vector3(455.264f, 1140.339f, 181.641f), Vector3(455.245f, 1146.827f, 179.519f), Vector3(455.206f, 1159.801f, 175.424f), Vector3(455.187f, 1166.289f, 173.577f), Vector3(455.178f, 1169.532f, 172.454f), Vector3(455.168f, 1172.776f, 170.93f), Vector3(455.13f, 1185.501f, 169.651f), Vector3(455.092f, 1198.226f, 172.572f), Vector3(455.055f, 1210.951f, 175.993f), Vector3(455.036f, 1217.314f, 178.504f), Vector3(455.017f, 1223.676f, 175.614f), Vector3(454.981f, 1235.653f, 173.357f), Vector3(454.946f, 1247.63f, 173.201f)))) - ZipLinePaths(new ZipLinePath(316, false, List(Vector3(455.962f, 1404.88f, 173.49f), Vector3(456.291f, 1455.873f, 174.03f), Vector3(456.406f, 1473.871f, 173.19f)))) - ZipLinePaths(new ZipLinePath(317, false, List(Vector3(464.578f, 1481.471f, 173.26f), Vector3(476.106f, 1480.883f, 176.977f), Vector3(487.635f, 1480.296f, 179.811f), Vector3(499.164f, 1479.708f, 184.144f), Vector3(504.928f, 1479.415f, 185.911f), Vector3(510.692f, 1479.121f, 187.478f), Vector3(515.496f, 1478.876f, 188.22f)))) - ZipLinePaths(new ZipLinePath(318, false, List(Vector3(535.622f, 1469.87f, 188.21f), Vector3(536.963f, 1506.843f, 188.2f)))) - ZipLinePaths(new ZipLinePath(319, false, List(Vector3(552.012f, 1520.061f, 188.233f), Vector3(551.63f, 1532.271f, 191.871f), Vector3(551.247f, 1544.48f, 195.432f), Vector3(550.864f, 1556.69f, 199.294f), Vector3(550.481f, 1568.9f, 203.555f), Vector3(549.955f, 1585.659f, 208.167f), Vector3(549.693f, 1594.038f, 210.873f), Vector3(549.561f, 1598.228f, 212.426f), Vector3(549.43f, 1602.418f, 213.302f)))) - ZipLinePaths(new ZipLinePath(320, false, List(Vector3(526.961f, 1655.74f, 218.191f), Vector3(535.944f, 1655.735f, 220.4f), Vector3(540.436f, 1655.733f, 222.153f), Vector3(544.928f, 1655.731f, 222.706f), Vector3(557.904f, 1655.724f, 218.829f), Vector3(564.392f, 1655.721f, 216.49f), Vector3(570.88f, 1655.718f, 213.951f), Vector3(577.368f, 1655.715f, 212.562f), Vector3(583.856f, 1655.712f, 209.773f), Vector3(590.344f, 1655.708f, 208.685f), Vector3(596.833f, 1655.705f, 206.196f), Vector3(609.559f, 1655.699f, 203.883f), Vector3(622.286f, 1655.693f, 207.571f), Vector3(635.013f, 1655.687f, 210.658f), Vector3(641.376f, 1655.683f, 213.602f), Vector3(647.739f, 1655.68f, 210.145f), Vector3(660.466f, 1655.674f, 209.683f), Vector3(673.193f, 1655.668f, 213.02f), Vector3(685.919f, 1655.662f, 208.857f), Vector3(692.282f, 1655.659f, 206.376f), Vector3(698.646f, 1655.656f, 204.295f), Vector3(724.099f, 1655.643f, 197.37f), Vector3(736.826f, 1655.637f, 192.907f), Vector3(743.189f, 1655.634f, 194.476f), Vector3(746.371f, 1655.632f, 195.46f), Vector3(749.552f, 1655.631f, 197.444f), Vector3(760.033f, 1655.625f, 201.298f), Vector3(765.274f, 1655.623f, 202.825f), Vector3(770.514f, 1655.62f, 203.251f)))) - ZipLinePaths(new ZipLinePath(321, false, List(Vector3(775.514f, 1789.676f, 203.21f), Vector3(773.658f, 1826.626f, 203.28f)))) - ZipLinePaths(new ZipLinePath(322, false, List(Vector3(762.949f, 1831.455f, 203.699f), Vector3(756.071f, 1831.531f, 207.345f), Vector3(749.193f, 1831.606f, 208.523f), Vector3(742.315f, 1831.681f, 211.4f), Vector3(735.437f, 1831.756f, 213.21f)))) - ZipLinePaths(new ZipLinePath(323, false, List(Vector3(728.262f, 1843.892f, 213.507f), Vector3(728.366f, 1851.282f, 216.603f), Vector3(728.47f, 1858.671f, 219.027f), Vector3(728.574f, 1866.061f, 221.652f), Vector3(728.626f, 1869.755f, 222.564f), Vector3(728.678f, 1873.45f, 223.206f)))) - ZipLinePaths(new ZipLinePath(324, false, List(Vector3(744.063f, 1895.348f, 224.013f), Vector3(744.108f, 1899.326f, 226.214f), Vector3(744.152f, 1903.304f, 228.118f), Vector3(744.332f, 1919.216f, 232.914f), Vector3(744.416f, 1926.674f, 230.973f), Vector3(744.501f, 1934.133f, 228.333f)))) - ZipLinePaths(new ZipLinePath(325, false, List(Vector3(759.746f, 1953.04f, 228.29f), Vector3(759.606f, 1959.903f, 230.621f), Vector3(759.466f, 1966.767f, 233.066f), Vector3(759.145f, 1982.454f, 237.818f), Vector3(758.765f, 2001.083f, 238.211f)))) - ZipLinePaths(new ZipLinePath(326, false, List(Vector3(752.948f, 2008.381f, 238.187f), Vector3(748.352f, 2008.585f, 237.325f), Vector3(743.756f, 2008.789f, 235.782f), Vector3(734.565f, 2009.198f, 232.696f), Vector3(716.182f, 2010.014f, 228.238f)))) - ZipLinePaths(new ZipLinePath(327, false, List(Vector3(712.171f, 2021.266f, 228.702f), Vector3(712.396f, 2027.728f, 231.262f), Vector3(712.622f, 2034.19f, 233.942f), Vector3(713.072f, 2047.113f, 237.902f), Vector3(713.606f, 2062.429f, 242.555f), Vector3(713.807f, 2068.173f, 243.244f)))) - ZipLinePaths(new ZipLinePath(328, false, List(Vector3(728.179f, 2083.034f, 243.41f), Vector3(728.087f, 2090.282f, 246.073f), Vector3(727.996f, 2097.53f, 248.433f), Vector3(727.904f, 2104.778f, 251.193f), Vector3(727.813f, 2112.027f, 252.954f), Vector3(727.629f, 2126.523f, 248.528f), Vector3(727.446f, 2141.02f, 243.4f)))) - ZipLinePaths(new ZipLinePath(329, false, List(Vector3(779.821f, 1928.877f, 228.19f), Vector3(797.77f, 1928.144f, 232.516f), Vector3(806.745f, 1927.778f, 234.128f), Vector3(815.719f, 1927.411f, 237.94f), Vector3(830.718f, 1927.263f, 233.5f), Vector3(845.717f, 1927.115f, 228.36f)))) - ZipLinePaths(new ZipLinePath(330, false, List(Vector3(862.363f, 1910.578f, 228.233f), Vector3(868.217f, 1910.713f, 227.056f), Vector3(874.07f, 1910.849f, 224.805f), Vector3(885.776f, 1911.119f, 221.102f), Vector3(897.483f, 1911.39f, 217.6f), Vector3(909.189f, 1911.661f, 213.425f)))) - ZipLinePaths(new ZipLinePath(331, false, List(Vector3(919.883f, 1905.153f, 213.195f), Vector3(920.13f, 1897.232f, 215.577f), Vector3(920.376f, 1889.31f, 217.866f), Vector3(920.962f, 1870.495f, 218.194f)))) - ZipLinePaths(new ZipLinePath(332, false, List(Vector3(945.907f, 1864.106f, 223.179f), Vector3(970.945f, 1864.053f, 226.924f), Vector3(983.464f, 1864.026f, 229.45f), Vector3(989.723f, 1864.013f, 232.112f), Vector3(995.983f, 1864f, 233.575f), Vector3(1006.783f, 1863.977f, 237.691f), Vector3(1022.493f, 1863.944f, 238.2f)))) - ZipLinePaths(new ZipLinePath(333, false, List(Vector3(1101.254f, 2039.38f, 243.191f), Vector3(1088.795f, 2039.644f, 243.592f), Vector3(1076.336f, 2039.908f, 244.899f), Vector3(1051.419f, 2040.436f, 243.312f), Vector3(1043.445f, 2040.605f, 246.791f)))) - ZipLinePaths(new ZipLinePath(334, false, List(Vector3(1032.137f, 2050.7f, 248.19f), Vector3(1031.324f, 2093.69f, 248.19f)))) - ZipLinePaths(new ZipLinePath(335, false, List(Vector3(1024.946f, 2103.952f, 248.184f), Vector3(1021.128f, 2104.082f, 247.235f), Vector3(1017.31f, 2104.212f, 245.011f), Vector3(1009.674f, 2104.472f, 243.564f), Vector3(1002.038f, 2104.732f, 240.916f), Vector3(994.403f, 2104.991f, 238.396f)))) - ZipLinePaths(new ZipLinePath(336, false, List(Vector3(984.665f, 2115.902f, 238.498f), Vector3(984.551f, 2126.835f, 242.852f), Vector3(984.437f, 2137.768f, 245.33f), Vector3(984.322f, 2148.701f, 249.808f), Vector3(984.208f, 2159.634f, 253.219f)))) - ZipLinePaths(new ZipLinePath(337, false, List(Vector3(1000.114f, 2181.035f, 253.65f), Vector3(999.982f, 2187.783f, 256.05f), Vector3(999.916f, 2191.157f, 257.701f), Vector3(999.85f, 2194.532f, 258.351f), Vector3(999.717f, 2201.28f, 260.952f), Vector3(999.585f, 2208.029f, 262.753f), Vector3(999.252f, 2225.024f, 257.521f), Vector3(998.919f, 2242.02f, 253.19f)))) - ZipLinePaths(new ZipLinePath(338, false, List(Vector3(975.39f, 2247.937f, 253.194f), Vector3(927.624f, 2248.853f, 239.174f), Vector3(912.339f, 2249.146f, 233.254f)))) - ZipLinePaths(new ZipLinePath(339, false, List(Vector3(984.178f, 2266.025f, 248.795f), Vector3(984.368f, 2284.326f, 246.192f), Vector3(984.558f, 2302.628f, 243.196f)))) - ZipLinePaths(new ZipLinePath(340, false, List(Vector3(1022.727f, 2168.098f, 248.291f), Vector3(1029.089f, 2168.073f, 246.96f), Vector3(1035.452f, 2168.049f, 244.927f), Vector3(1041.814f, 2168.024f, 242.894f), Vector3(1044.996f, 2168.011f, 241.278f), Vector3(1048.177f, 2167.999f, 240.262f), Vector3(1060.902f, 2167.949f, 238.496f), Vector3(1073.627f, 2167.899f, 238.731f), Vector3(1089.097f, 2167.839f, 238.904f), Vector3(1096.832f, 2167.808f, 239.591f), Vector3(1100.699f, 2167.793f, 242.334f), Vector3(1104.567f, 2167.778f, 243.181f)))) - ZipLinePaths(new ZipLinePath(341, false, List(Vector3(1111.952f, 2156.833f, 243.2f), Vector3(1112.678f, 2115.833f, 243.24f)))) - ZipLinePaths(new ZipLinePath(342, false, List(Vector3(1120.083f, 2103.886f, 243.225f), Vector3(1131.271f, 2103.613f, 239.605f), Vector3(1142.459f, 2103.341f, 235.91f), Vector3(1153.647f, 2103.068f, 232.514f), Vector3(1164.834f, 2102.796f, 228.445f)))) - ZipLinePaths(new ZipLinePath(343, false, List(Vector3(1182.14f, 2087.616f, 228.225f), Vector3(1187.861f, 2087.641f, 227.269f), Vector3(1193.582f, 2087.666f, 224.633f), Vector3(1205.024f, 2087.716f, 221.561f), Vector3(1216.466f, 2087.766f, 217.889f), Vector3(1227.908f, 2087.816f, 213.546f)))) - ZipLinePaths(new ZipLinePath(344, false, List(Vector3(1246.648f, 2072.441f, 213.193f), Vector3(1252.75f, 2072.281f, 212.004f), Vector3(1258.853f, 2072.121f, 208.938f), Vector3(1271.058f, 2071.8f, 206.006f), Vector3(1295.469f, 2071.159f, 198.263f)))) - ZipLinePaths(new ZipLinePath(345, false, List(Vector3(1308.848f, 2041.255f, 198.2f), Vector3(1321.595f, 2041.049f, 197.872f), Vector3(1327.969f, 2040.946f, 197.56f), Vector3(1334.342f, 2040.844f, 196.647f), Vector3(1347.089f, 2040.638f, 191.921f), Vector3(1353.462f, 2040.535f, 189.358f), Vector3(1356.649f, 2040.484f, 188.676f), Vector3(1359.836f, 2040.433f, 187.995f), Vector3(1377.332f, 2040.151f, 193.147f), Vector3(1386.079f, 2040.01f, 195.923f), Vector3(1390.453f, 2039.939f, 197.511f), Vector3(1394.827f, 2039.869f, 198.4f)))) - ZipLinePaths(new ZipLinePath(346, false, List(Vector3(1416.676f, 1890.96f, 218.215f), Vector3(1416.322f, 1856.951f, 227.305f), Vector3(1415.825f, 1809.339f, 238.135f)))) - ZipLinePaths(new ZipLinePath(347, false, List(Vector3(1447.552f, 1891.489f, 218.239f), Vector3(1447.824f, 1882.556f, 219.813f), Vector3(1448.097f, 1873.623f, 222.71f), Vector3(1448.369f, 1864.691f, 224.806f), Vector3(1448.505f, 1860.224f, 226.654f), Vector3(1448.641f, 1855.758f, 228.22f)))) - ZipLinePaths(new ZipLinePath(348, false, List(Vector3(1603.929f, 1672.213f, 223.508f), Vector3(1609.247f, 1672.265f, 225.317f), Vector3(1614.566f, 1672.316f, 227.644f), Vector3(1622.784f, 1672.396f, 229.569f), Vector3(1631.003f, 1672.476f, 232.694f), Vector3(1639.705f, 1672.561f, 233.209f)))) - ZipLinePaths(new ZipLinePath(349, false, List(Vector3(1071.874f, 217.362f, 143.135f), Vector3(1075.187f, 246.758f, 149.615f), Vector3(1075.001f, 273.955f, 160.196f), Vector3(1074.433f, 288.103f, 163.436f), Vector3(1080.365f, 302.251f, 163.976f), Vector3(1087.747f, 316.399f, 164.267f), Vector3(1095.129f, 330.547f, 163.857f), Vector3(1108.319f, 358.364f, 163.255f)))) - ZipLinePaths(new ZipLinePath(350, false, List(Vector3(1126.922f, 406.781f, 163.147f), Vector3(1139.227f, 412.457f, 164.141f), Vector3(1151.532f, 418.033f, 166.046f), Vector3(1176.141f, 428.985f, 165.457f), Vector3(1200.551f, 434.386f, 171.439f), Vector3(1225.361f, 436.388f, 178.422f), Vector3(1237.425f, 437.112f, 181.369f), Vector3(1243.456f, 435.273f, 182.842f), Vector3(1249.488f, 433.435f, 183.226f)))) - ZipLinePaths(new ZipLinePath(351, false, List(Vector3(976.744f, 153.992f, 143.01f), Vector3(977.459f, 161.322f, 145.813f), Vector3(978.274f, 170.653f, 149.022f), Vector3(979.304f, 188.314f, 155.14f), Vector3(979.884f, 204.475f, 160.058f), Vector3(978.564f, 220.836f, 163.776f), Vector3(968.873f, 240.673f, 164.006f), Vector3(962.182f, 252.51f, 163.15f)))) - ZipLinePaths(new ZipLinePath(352, false, List(Vector3(915.3f, 242.709f, 163.14f), Vector3(892.78f, 254.164f, 163.864f), Vector3(873.959f, 264.419f, 164.493f), Vector3(865.454f, 268.224f, 164.699f), Vector3(857.047f, 272.332f, 163.967f), Vector3(847.54f, 273.24f, 163.14f)))) - ZipLinePaths(new ZipLinePath(353, false, List(Vector3(850.016f, 313.937f, 163.154f), Vector3(851.875f, 330.642f, 168.036f), Vector3(852.733f, 347.447f, 173.436f), Vector3(853.391f, 364.052f, 178.236f), Vector3(851.92f, 372.405f, 181.236f), Vector3(850.449f, 380.757f, 184.236f), Vector3(849.903f, 383.662f, 184.826f), Vector3(857.763f, 404.967f, 185.414f)))) - ZipLinePaths(new ZipLinePath(354, false, List(Vector3(999.272f, 110.243f, 143.14f), Vector3(975.32f, 109.409f, 144.463f), Vector3(951.369f, 108.976f, 146.491f), Vector3(903.465f, 109.909f, 148.29f), Vector3(865.142f, 109.176f, 147.437f), Vector3(840.712f, 115.986f, 146.736f), Vector3(816.281f, 153.796f, 145.236f), Vector3(813.449f, 162.943f, 143.14f)))) - ZipLinePaths(new ZipLinePath(355, false, List(Vector3(793.348f, 215.24f, 143.142f), Vector3(777.178f, 222.349f, 144.83f), Vector3(761.408f, 229.859f, 146.825f), Vector3(724.868f, 249.478f, 148.414f), Vector3(719.867f, 278.066f, 153.799f), Vector3(720.665f, 306.654f, 161.784f), Vector3(713.164f, 336.042f, 165.268f), Vector3(702.462f, 363.83f, 166.353f), Vector3(686.882f, 389.303f, 163.142f)))) - ZipLinePaths(new ZipLinePath(356, false, List(Vector3(633.169f, 397.14f, 163.143f), Vector3(605.993f, 410.372f, 164.411f), Vector3(596.218f, 423.604f, 166.187f), Vector3(589.968f, 447.667f, 168.938f), Vector3(587.268f, 478.38f, 175.401f), Vector3(588.968f, 509.092f, 184.464f), Vector3(610.595f, 560.61f, 185.838f), Vector3(618.614f, 568.535f, 183.144f)))) - ZipLinePaths(new ZipLinePath(357, false, List(Vector3(313.406f, 1229.852f, 173.13f), Vector3(338.439f, 1227.908f, 176.796f), Vector3(363.471f, 1226.764f, 177.758f), Vector3(388.503f, 1228.12f, 176.69f), Vector3(413.535f, 1242.276f, 174.422f), Vector3(421.225f, 1250.419f, 172.87f)))) - ZipLinePaths(new ZipLinePath(358, false, List(Vector3(400.806f, 1286.539f, 173.14f), Vector3(413.261f, 1315.389f, 174.687f), Vector3(421.717f, 1331.039f, 175.139f), Vector3(436.173f, 1358.29f, 175.966f), Vector3(445.129f, 1375.54f, 174.192f), Vector3(455.025f, 1383.393f, 173.25f)))) - ZipLinePaths(new ZipLinePath(359, false, List(Vector3(473.924f, 1357.231f, 173.255f), Vector3(489.493f, 1355.978f, 176.417f), Vector3(532.11f, 1359.281f, 191.664f), Vector3(542.667f, 1357.76f, 193.221f), Vector3(553.225f, 1354.44f, 192.978f), Vector3(574.341f, 1331.2f, 190.491f), Vector3(583.726f, 1319.583f, 188.213f)))) - ZipLinePaths(new ZipLinePath(360, false, List(Vector3(871.063f, 2357.891f, 243.25f), Vector3(853.39f, 2351.203f, 243.371f), Vector3(835.717f, 2344.015f, 244.193f), Vector3(818.045f, 2334.977f, 244.692f), Vector3(800.372f, 2322.739f, 244.992f), Vector3(762.899f, 2305.651f, 245.891f), Vector3(750.563f, 2278.707f, 247.14f), Vector3(738.626f, 2252.763f, 246.19f), Vector3(729.181f, 2236.187f, 245.188f), Vector3(716.957f, 2203.652f, 243.25f)))) - ZipLinePaths(new ZipLinePath(361, false, List(Vector3(701.114f, 2159.581f, 243.13f), Vector3(676.278f, 2156.712f, 244.456f), Vector3(651.441f, 2155.243f, 245.482f), Vector3(640.513f, 2155.181f, 246.605f), Vector3(636.319f, 2153.866f, 245.631f), Vector3(631.572f, 2151.549f, 243.14f)))) - ZipLinePaths(new ZipLinePath(362, false, List(Vector3(584.654f, 2136.17f, 243.142f), Vector3(559.91f, 2085.271f, 246.047f), Vector3(556.012f, 2018.31f, 227.197f), Vector3(568.313f, 1984.829f, 224.771f), Vector3(591.013f, 1968.089f, 223.959f), Vector3(614.664f, 1963.118f, 224.002f), Vector3(621.714f, 1951.348f, 224.446f), Vector3(630.106f, 1927.935f, 225.697f), Vector3(641.698f, 1904.522f, 226.547f), Vector3(649.245f, 1892.815f, 226.173f), Vector3(652.218f, 1886.962f, 226.285f), Vector3(651.491f, 1881.109f, 223.798f), Vector3(651.087f, 1869.402f, 219.423f), Vector3(650.683f, 1857.696f, 214.849f), Vector3(652.529f, 1819.989f, 205.924f), Vector3(675.576f, 1782.283f, 205.199f), Vector3(688.468f, 1776.87f, 204.45f), Vector3(702.021f, 1773.798f, 203.849f), Vector3(712.174f, 1769.926f, 203.252f)))) - ZipLinePaths(new ZipLinePath(363, false, List(Vector3(759.295f, 1749.047f, 203.14f), Vector3(776.975f, 1744.772f, 203.259f), Vector3(785.816f, 1743.035f, 203.971f), Vector3(794.656f, 1739.297f, 204.483f), Vector3(805.403f, 1727.828f, 204.759f), Vector3(810.777f, 1721.494f, 204.497f), Vector3(813.463f, 1716.927f, 204.166f), Vector3(817.55f, 1700.759f, 203.14f)))) - ZipLinePaths(new ZipLinePath(364, false, List(Vector3(1058.578f, 2320.326f, 243.13f), Vector3(1109.572f, 2319.579f, 243.885f), Vector3(1124.57f, 2319.359f, 243.14f)))) - ZipLinePaths(new ZipLinePath(365, false, List(Vector3(1126.83f, 2280.158f, 243.14f), Vector3(1142.435f, 2272.359f, 243.249f), Vector3(1177.84f, 2255.76f, 244.063f), Vector3(1230.451f, 2249.961f, 244.046f), Vector3(1248.101f, 2256.233f, 243.07f)))) - ZipLinePaths(new ZipLinePath(366, false, List(Vector3(1255.276f, 2294.393f, 243.146f), Vector3(1284.893f, 2309.059f, 243.882f), Vector3(1314.511f, 2323.526f, 244.528f), Vector3(1339.759f, 2322.607f, 237.148f), Vector3(1365.007f, 2322.287f, 226.969f), Vector3(1384.228f, 2320.903f, 223.146f)))) - ZipLinePaths(new ZipLinePath(367, false, List(Vector3(1386.825f, 2264.216f, 223.08f), Vector3(1364.395f, 2219.526f, 223.891f), Vector3(1361.703f, 2214.163f, 223.14f)))) - ZipLinePaths(new ZipLinePath(368, false, List(Vector3(1422.85f, 2276.601f, 223.14f), Vector3(1446.379f, 2234.273f, 223.892f), Vector3(1456.732f, 2213.056f, 223.14f)))) - ZipLinePaths(new ZipLinePath(369, false, List(Vector3(1482.817f, 2150.7f, 223.14f), Vector3(1506.01f, 2103.6f, 224.078f), Vector3(1517.143f, 2085.137f, 223.14f)))) - ZipLinePaths(new ZipLinePath(370, false, List(Vector3(1552.37f, 2085.239f, 223.14f), Vector3(1552.544f, 2060.239f, 222.477f), Vector3(1552.718f, 2035.239f, 215.118f), Vector3(1553.066f, 1985.239f, 211.542f), Vector3(1553.414f, 1935.239f, 215.167f), Vector3(1553.762f, 1885.239f, 223.991f), Vector3(1553.776f, 1883.239f, 223.25f)))) - ZipLinePaths(new ZipLinePath(371, false, List(Vector3(1579.071f, 1833.389f, 223.14f), Vector3(1580.239f, 1824.555f, 225.36f), Vector3(1580.081f, 1813.472f, 226.39f), Vector3(1579.087f, 1755.799f, 227.67f), Vector3(1551.894f, 1698.526f, 228.35f), Vector3(1553.643f, 1647.741f, 225.947f), Vector3(1552.481f, 1638.816f, 223.14f)))) - ZipLinePaths(new ZipLinePath(372, false, List(Vector3(1584.84f, 1635.059f, 223.149f), Vector3(1585.738f, 1620.366f, 222.776f), Vector3(1586.635f, 1605.673f, 221.317f), Vector3(1588.031f, 1586.286f, 213.2f), Vector3(1587.426f, 1561.899f, 209.055f), Vector3(1582.821f, 1537.513f, 204.31f), Vector3(1576.281f, 1510.2f, 198.51f)))) - ZipLinePaths(new ZipLinePath(373, false, List(Vector3(1394.807f, 2214.354f, 223.156f), Vector3(1395.435f, 2200.517f, 223.103f), Vector3(1396.064f, 2191.081f, 221.372f), Vector3(1396.734f, 2141.625f, 206.591f), Vector3(1399.101f, 2134.836f, 203.154f)))) - ZipLinePaths(new ZipLinePath(374, false, List(Vector3(1420.624f, 2088.402f, 203.14f), Vector3(1421.17f, 2063.451f, 204.095f), Vector3(1420.516f, 2038.501f, 207.355f), Vector3(1420.06f, 2016.546f, 205.797f), Vector3(1415.199f, 2006.567f, 203.25f)))) - ZipLinePaths(new ZipLinePath(375, false, List(Vector3(1498.604f, 1508.597f, 196.804f), Vector3(1460.323f, 1489.823f, 223.692f), Vector3(1422.042f, 1471.048f, 249.813f), Vector3(1409.026f, 1463.665f, 260.349f), Vector3(1395.211f, 1458.682f, 265.003f)))) - ZipLinePaths(new ZipLinePath(376, false, List(Vector3(1864.299f, 1327.779f, 193.14f), Vector3(1814.317f, 1329.165f, 193.957f), Vector3(1787.327f, 1329.913f, 193.25f)))) - ZipLinePaths(new ZipLinePath(377, false, List(Vector3(1782.437f, 1289.688f, 193.25f), Vector3(1775.027f, 1268.099f, 194.165f), Vector3(1757.218f, 1234.911f, 194.182f), Vector3(1744.608f, 1210.523f, 194.478f), Vector3(1735.598f, 1183.335f, 194.174f), Vector3(1714.544f, 1169.712f, 193.25f)))) - ZipLinePaths(new ZipLinePath(378, false, List(Vector3(1685.673f, 1202.774f, 193.14f), Vector3(1635.673f, 1202.42f, 194.176f), Vector3(1623.673f, 1202.335f, 193.43f)))) - ZipLinePaths(new ZipLinePath(379, false, List(Vector3(589.162f, 1287.888f, 187.36f), Vector3(606.508f, 1241.031f, 190.011f), Vector3(623.855f, 1194.175f, 191.917f), Vector3(641.201f, 1147.318f, 193.824f), Vector3(652.649f, 1116.393f, 194.39f)))) - ZipLinePaths(new ZipLinePath(380, false, List(Vector3(654.164f, 891.092f, 187.24f), Vector3(646.279f, 841.718f, 192.507f), Vector3(638.393f, 792.343f, 194.029f), Vector3(630.507f, 742.969f, 193.551f), Vector3(622.621f, 693.595f, 191.074f), Vector3(618.205f, 665.945f, 185.14f)))) - ZipLinePaths(new ZipLinePath(381, false, List(Vector3(761.584f, 541.531f, 187.14f), Vector3(779.403f, 494.815f, 194.028f), Vector3(797.222f, 448.099f, 193.57f), Vector3(810.765f, 412.594f, 186.55f)))) - ZipLinePaths(new ZipLinePath(382, false, List(Vector3(1222.018f, 631.67f, 196.892f), Vector3(1232.851f, 583.016f, 193.697f), Vector3(1243.685f, 534.361f, 189.756f), Vector3(1254.519f, 485.708f, 185.815f), Vector3(1260.369f, 459.436f, 182.691f)))) - ZipLinePaths(new ZipLinePath(383, false, List(Vector3(1271.689f, 782.181f, 274.208f), Vector3(1277.334f, 762.195f, 272.418f), Vector3(1282.98f, 742.209f, 247.122f), Vector3(1294.272f, 702.237f, 219.284f), Vector3(1301.047f, 678.254f, 201.102f)))) - ZipLinePaths(new ZipLinePath(384, false, List(Vector3(1368.124f, 1341.561f, 296.172f), Vector3(1364.566f, 1365.321f, 292.123f), Vector3(1361.008f, 1389.081f, 279.805f), Vector3(1353.892f, 1436.601f, 262.712f), Vector3(1353.334f, 1440.328f, 259.543f)))) - ZipLinePaths(new ZipLinePath(385, false, List(Vector3(1348.286f, 1441.756f, 259.543f), Vector3(1314.196f, 1425.256f, 255.043f)))) - ZipLinePaths(new ZipLinePath(386, false, List(Vector3(1060.551f, 1605.738f, 278.033f), Vector3(1107.398f, 1625.112f, 273.261f), Vector3(1154.246f, 1644.486f, 267.73f), Vector3(1157.001f, 1645.625f, 265.434f)))) - ZipLinePaths(new ZipLinePath(387, false, List(Vector3(954.548f, 1391.85f, 224.246f), Vector3(946.487f, 1390.942f, 233.408f), Vector3(938.426f, 1390.034f, 234.764f)))) - ZipLinePaths(new ZipLinePath(388, false, List(Vector3(916.348f, 1384.567f, 234.767f), Vector3(930.496f, 1358.334f, 275.657f), Vector3(937.57f, 1345.218f, 311.353f), Vector3(944.644f, 1332.101f, 315.548f)))) - ZipLinePaths(new ZipLinePath(389, false, List(Vector3(1366.672f, 1311.332f, 296.193f), Vector3(1355.793f, 1291.42f, 291.968f), Vector3(1344.913f, 1271.507f, 275.896f), Vector3(1323.154f, 1231.682f, 254.893f), Vector3(1301.395f, 1191.856f, 233.891f), Vector3(1294.367f, 1178.408f, 225.36f)))) - ZipLinePaths(new ZipLinePath(390, false, List(Vector3(783.039f, 1209.045f, 217.8f), Vector3(757.026f, 1252.86f, 216.442f), Vector3(731.012f, 1296.676f, 214.34f), Vector3(718.26f, 1318.154f, 212.49f)))) - ZipLinePaths(new ZipLinePath(391, true, List(Vector3(1374.548f, 1288.463f, 211.2f), Vector3(1373.826f, 1281.376f, 224.2f)))) - ZipLinePaths(new ZipLinePath(392, false, List(Vector3(1026.257f, 843.695f, 185.942f), Vector3(1028.149f, 852.608f, 195.5f), Vector3(1028.419f, 856.395f, 196.141f)))) - ZipLinePaths(new ZipLinePath(393, false, List(Vector3(1166.499f, 889.383f, 196.147f), Vector3(1172.461f, 895.042f, 211.579f), Vector3(1176.159f, 898.61f, 211.891f)))) - ZipLinePaths(new ZipLinePath(394, false, List(Vector3(1118.547f, 990.403f, 204.698f), Vector3(1121.775f, 995.338f, 211.55f), Vector3(1124.542f, 999.568f, 212.35f)))) - ZipLinePaths(new ZipLinePath(395, false, List(Vector3(1205.96f, 995.02f, 212.6f), Vector3(1238.316f, 1003.723f, 250.267f), Vector3(1243.219f, 1000.629f, 251.421f)))) - ZipLinePaths(new ZipLinePath(396, false, List(Vector3(1238.847f, 1034.95f, 254.212f), Vector3(1226.866f, 990.364f, 274.176f), Vector3(1214.885f, 945.778f, 294.579f), Vector3(1212.968f, 938.644f, 296.041f)))) - ZipLinePaths(new ZipLinePath(397, false, List(Vector3(1218.983f, 891.836f, 296.012f), Vector3(1238.388f, 846.056f, 285.407f), Vector3(1255.51f, 805.662f, 274.234f)))) - ZipLinePaths(new ZipLinePath(398, false, List(Vector3(1291.711f, 807.736f, 274.383f), Vector3(1321.944f, 844.617f, 254.485f), Vector3(1351.777f, 880.498f, 233.914f), Vector3(1377.191f, 907.137f, 212.703f)))) - ZipLinePaths(new ZipLinePath(399, false, List(Vector3(1406.765f, 919.786f, 212.679f), Vector3(1407.449f, 916.317f, 212.18f), Vector3(1411.14f, 901.425f, 185.702f)))) - ZipLinePaths(new ZipLinePath(400, false, List(Vector3(1331.335f, 910.391f, 212.572f), Vector3(1331.967f, 904.956f, 212.32f), Vector3(1337.491f, 876.897f, 193.028f)))) - ZipLinePaths(new ZipLinePath(401, false, List(Vector3(1257.393f, 959.594f, 213.244f), Vector3(1257.67f, 955.326f, 212.8f), Vector3(1258.499f, 948.124f, 195.843f)))) - ZipLinePaths(new ZipLinePath(402, false, List(Vector3(1241.54f, 848.057f, 211.951f), Vector3(1238.514f, 847.292f, 211.5f), Vector3(1224.848f, 843.823f, 185.972f)))) - ZipLinePaths(new ZipLinePath(403, false, List(Vector3(996.539f, 837.803f, 195.145f), Vector3(996.865f, 833.708f, 194.678f), Vector3(997.015f, 825.448f, 185.844f)))) - ZipLinePaths(new ZipLinePath(404, false, List(Vector3(872.179f, 908.625f, 208.904f), Vector3(873.49f, 904.836f, 208.601f), Vector3(887.154f, 880.725f, 197.6f), Vector3(893.144f, 869.566f, 187.283f)))) - ZipLinePaths(new ZipLinePath(405, false, List(Vector3(747.407f, 1402.556f, 204.704f), Vector3(755.396f, 1401.347f, 213.3f), Vector3(758.872f, 1401.143f, 213.347f)))) - ZipLinePaths(new ZipLinePath(406, false, List(Vector3(750.093f, 1561.501f, 212.656f), Vector3(753.513f, 1564.077f, 212.532f), Vector3(758.477f, 1569.104f, 200.151f)))) - ZipLinePaths(new ZipLinePath(407, false, List(Vector3(946.019f, 1502.417f, 212.646f), Vector3(945.91f, 1506.223f, 212.4f), Vector3(945.729f, 1510.968f, 197.607f)))) - ZipLinePaths(new ZipLinePath(408, false, List(Vector3(973.283f, 1524.192f, 226.152f), Vector3(971.004f, 1527.568f, 225.9f), Vector3(966.521f, 1539.625f, 197.502f)))) - ZipLinePaths(new ZipLinePath(409, false, List(Vector3(1016.489f, 1476.031f, 201.447f), Vector3(1012.699f, 1481.305f, 225.545f), Vector3(1010.752f, 1483.124f, 226.146f)))) - ZipLinePaths(new ZipLinePath(410, false, List(Vector3(1075.853f, 1401.411f, 225.686f), Vector3(1072.731f, 1402.664f, 225.274f), Vector3(1056.124f, 1409.047f, 204.842f)))) - ZipLinePaths(new ZipLinePath(411, false, List(Vector3(1148.506f, 1446.867f, 220.562f), Vector3(1143.938f, 1454.651f, 219.37f), Vector3(1139.37f, 1462.434f, 214.04f)))) - ZipLinePaths(new ZipLinePath(412, false, List(Vector3(1278.732f, 1509.007f, 222.004f), Vector3(1291.364f, 1524.6f, 220.425f), Vector3(1304.195f, 1540.394f, 213.35f), Vector3(1307.016f, 1543.923f, 209.65f), Vector3(1310.036f, 1547.652f, 193.654f)))) - ZipLinePaths(new ZipLinePath(413, false, List(Vector3(1347.651f, 1449.073f, 220.296f), Vector3(1347.577f, 1452.166f, 220.04f), Vector3(1347.094f, 1466.267f, 194.846f)))) - ZipLinePaths(new ZipLinePath(414, false, List(Vector3(1377.227f, 1428.314f, 220.289f), Vector3(1380.011f, 1429.335f, 220.008f), Vector3(1390.577f, 1434.033f, 194.848f)))) - ZipLinePaths(new ZipLinePath(415, false, List(Vector3(1348.868f, 1387.999f, 220.307f), Vector3(1351.913f, 1371.802f, 218.025f), Vector3(1354.957f, 1355.606f, 211.576f)))) - ZipLinePaths(new ZipLinePath(416, false, List(Vector3(1398.041f, 1347.441f, 232.949f), Vector3(1394.732f, 1347.912f, 232.435f), Vector3(1385.039f, 1349.7f, 211.562f)))) - ZipLinePaths(new ZipLinePath(417, false, List(Vector3(1453.473f, 1359.667f, 232.956f), Vector3(1457.288f, 1359.47f, 232.693f), Vector3(1468.838f, 1358.513f, 187.157f)))) - ZipLinePaths(new ZipLinePath(418, false, List(Vector3(1430.748f, 1320.637f, 232.954f), Vector3(1431.562f, 1316.973f, 232.584f), Vector3(1436.177f, 1305.54f, 194.848f)))) - ZipLinePaths(new ZipLinePath(419, false, List(Vector3(1421.757f, 1366.067f, 232.988f), Vector3(1405.097f, 1410.405f, 252.602f), Vector3(1392.284f, 1443.842f, 266.389f)))) - ZipLinePaths(new ZipLinePath(420, true, List(Vector3(973.389f, 913.595f, 196.95f), Vector3(971.862f, 927.004f, 204.35f)))) + ZipLinePaths( + new ZipLinePath( + 1, + false, + List( + Vector3(659.834f, 1494.116f, 209.241f), + Vector3(707.787f, 1511.106f, 213.516f), + Vector3(745.397f, 1524.431f, 213.52f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(2, true, List(Vector3(675.978f, 1376.759f, 195.646f), Vector3(662.728f, 1365.682f, 211.993f))) + ) + ZipLinePaths( + new ZipLinePath( + 3, + false, + List( + Vector3(682.823f, 1290.083f, 270.566f), + Vector3(700.533f, 1244.014f, 279.312f), + Vector3(718.242f, 1197.945f, 287.32f), + Vector3(729.222f, 1169.382f, 290.806f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(4, true, List(Vector3(687.66f, 985.624f, 196.95f), Vector3(687.206f, 988.754f, 231.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(689.041f, 994.682f, 231.853f), + Vector3(683.022f, 1017.202f, 226.151f), + Vector3(677.103f, 1039.422f, 210.753f), + Vector3(675.014f, 1047.264f, 199.002f), + Vector3(674.625f, 1050.306f, 197.146f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 6, + false, + List( + Vector3(703.28f, 1126.36f, 197.032f), + Vector3(699.093f, 1176.999f, 202.114f), + Vector3(694.906f, 1227.638f, 206.452f), + Vector3(690.72f, 1278.276f, 210.79f), + Vector3(687.19f, 1320.972f, 212.492f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(7, true, List(Vector3(705.314f, 1336.125f, 211.992f), Vector3(699.729f, 1323.205f, 270.055f))) + ) + ZipLinePaths( + new ZipLinePath(8, true, List(Vector3(707.264f, 1106.722f, 194.914f), Vector3(812.54f, 1126.035f, 211.099f))) + ) + ZipLinePaths( + new ZipLinePath( + 9, + false, + List( + Vector3(716.802f, 1474.828f, 265.013f), + Vector3(755.438f, 1503.938f, 249.574f), + Vector3(778.922f, 1521.633f, 236.262f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 10, + false, + List( + Vector3(718.483f, 1328.007f, 270.791f), + Vector3(717.052f, 1377.928f, 269.115f), + Vector3(715.62f, 1427.849f, 266.689f), + Vector3(715.306f, 1438.831f, 264.931f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(11, true, List(Vector3(723.223f, 1029.31f, 209.35f), Vector3(715.985f, 1022.277f, 221.533f))) + ) + ZipLinePaths( + new ZipLinePath( + 12, + false, + List( + Vector3(722.403f, 1012.416f, 275.682f), + Vector3(707.86f, 1047.716f, 242.674f), + Vector3(693.317f, 1083.015f, 208.861f), + Vector3(689.895f, 1091.321f, 198.099f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(13, true, List(Vector3(729.519f, 1441.093f, 264.46f), Vector3(726.664f, 1443.454f, 269.965f))) + ) + ZipLinePaths( + new ZipLinePath( + 14, + false, + List( + Vector3(729.274f, 999.606f, 222.057f), + Vector3(756.718f, 960.897f, 238.545f), + Vector3(784.163f, 922.189f, 254.308f), + Vector3(785.81f, 919.866f, 253.346f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(15, true, List(Vector3(732.337f, 1484.986f, 201.35f), Vector3(725.335f, 1474.407f, 212.551f))) + ) + ZipLinePaths( + new ZipLinePath( + 16, + false, + List( + Vector3(734.082f, 1235.608f, 221.221f), + Vector3(737.893f, 1187.823f, 236.175f), + Vector3(741.705f, 1140.039f, 250.411f), + Vector3(745.517f, 1092.255f, 264.646f), + Vector3(749.328f, 1044.47f, 278.881f), + Vector3(750.472f, 1030.135f, 281.149f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(17, true, List(Vector3(734.217f, 1276.157f, 191.504f), Vector3(718.859f, 1278.728f, 195.646f))) + ) + ZipLinePaths( + new ZipLinePath(18, true, List(Vector3(738.976f, 1350.788f, 201.35f), Vector3(728.212f, 1351.057f, 211.992f))) + ) + ZipLinePaths( + new ZipLinePath( + 19, + false, + List( + Vector3(745.07f, 1038.912f, 216.63f), + Vector3(776.313f, 1079.198f, 216.124f), + Vector3(786.114f, 1091.836f, 214.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(20, true, List(Vector3(754.226f, 727.774f, 185.791f), Vector3(759.174f, 746.876f, 251.22f))) + ) + ZipLinePaths( + new ZipLinePath( + 21, + false, + List( + Vector3(759.792f, 1153.511f, 286.565f), + Vector3(787.783f, 1112.886f, 295.493f), + Vector3(815.773f, 1072.261f, 303.632f), + Vector3(842.085f, 1034.073f, 307.795f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 22, + false, + List( + Vector3(763.438f, 724.138f, 249.259f), + Vector3(780.082f, 707.796f, 246.845f), + Vector3(796.727f, 691.454f, 231.971f), + Vector3(830.015f, 658.77f, 213.98f), + Vector3(863.304f, 626.086f, 195.988f), + Vector3(875.288f, 614.319f, 186.049f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 23, + false, + List( + Vector3(763.764f, 1513.528f, 225.857f), + Vector3(715.885f, 1501.26f, 219.038f), + Vector3(677.697f, 1492.136f, 211.116f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 24, + false, + List( + Vector3(770.787f, 1423.545f, 231.569f), + Vector3(755.314f, 1377.756f, 219.472f), + Vector3(747.269f, 1353.946f, 211.866f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(25, true, List(Vector3(770.57f, 1226.43f, 209.13f), Vector3(771.447f, 1227.514f, 239.351f))) + ) + ZipLinePaths( + new ZipLinePath( + 26, + false, + List( + Vector3(773.819f, 1236.97f, 239.888f), + Vector3(747.687f, 1274.476f, 260.853f), + Vector3(748.995f, 1290.503f, 274.802f), + Vector3(727.303f, 1303.731f, 276.097f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(27, true, List(Vector3(779.487f, 1454.284f, 228.218f), Vector3(766.751f, 1505.627f, 225.35f))) + ) + ZipLinePaths( + new ZipLinePath(28, true, List(Vector3(774.619f, 1447.611f, 216.34f), Vector3(781.047f, 1442.489f, 221.842f))) + ) + ZipLinePaths( + new ZipLinePath( + 29, + false, + List( + Vector3(789.47f, 1333.949f, 221.19f), + Vector3(837.145f, 1318.935f, 223.263f), + Vector3(884.819f, 1303.92f, 224.578f), + Vector3(921.052f, 1292.509f, 224.48f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 30, + false, + List( + Vector3(800.39f, 1230.588f, 217.801f), + Vector3(845.704f, 1252.722f, 245.917f), + Vector3(881.918f, 1275.956f, 273.294f), + Vector3(918.133f, 1299.19f, 300.671f), + Vector3(925.074f, 1313.568f, 314.76f), + Vector3(938.015f, 1311.946f, 315.545f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 31, + false, + List( + Vector3(801.437f, 1542.691f, 235.379f), + Vector3(813.077f, 1552.333f, 236.523f), + Vector3(839.518f, 1561.875f, 213.914f), + Vector3(846.208f, 1561.9f, 213.489f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(32, true, List(Vector3(805.789f, 1393.447f, 212.85f), Vector3(805.676f, 1395.361f, 246.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 33, + false, + List( + Vector3(806.5f, 1182.009f, 217.802f), + Vector3(825.037f, 1135.745f, 214.554f), + Vector3(842.09f, 1093.181f, 208.952f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 34, + false, + List( + Vector3(806.815f, 1168.614f, 290.224f), + Vector3(854.326f, 1180.349f, 305.341f), + Vector3(878.081f, 1186.216f, 316.04f), + Vector3(899.136f, 1187.584f, 318.661f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 35, + false, + List( + Vector3(807.862f, 497.707f, 223.021f), + Vector3(853.713f, 519.793f, 220.513f), + Vector3(860.905f, 523.258f, 218.701f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(36, true, List(Vector3(811.458f, 1453.847f, 219.522f), Vector3(798.914f, 1427.003f, 237.724f))) + ) + ZipLinePaths( + new ZipLinePath( + 37, + false, + List( + Vector3(812.01f, 1468.508f, 224.2f), + Vector3(846.323f, 1483.513f, 225.502f), + Vector3(856.965f, 1489.472f, 225.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 38, + false, + List( + Vector3(812.402f, 1323.358f, 294.095f), + Vector3(795.583f, 1338.858f, 290.07f), + Vector3(778.764f, 1354.358f, 276.782f), + Vector3(745.525f, 1384.658f, 247.539f), + Vector3(712.287f, 1414.958f, 222.697f), + Vector3(692.083f, 1433.375f, 206.87f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(39, false, List(Vector3(813.685f, 1399.673f, 246.861f), Vector3(858.609f, 1408.954f, 243.142f))) + ) + ZipLinePaths( + new ZipLinePath( + 40, + false, + List( + Vector3(821.339f, 923.858f, 253.949f), + Vector3(866.375f, 944.748f, 242.984f), + Vector3(871.673f, 947.206f, 238.798f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 41, + false, + List( + Vector3(837.946f, 1377.303f, 294.087f), + Vector3(848.543f, 1397.396f, 293.118f), + Vector3(859.141f, 1417.489f, 271.666f), + Vector3(876.18f, 1449.795f, 248.523f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(42, true, List(Vector3(838.068f, 1040.527f, 212f), Vector3(832.575f, 1040.197f, 217.504f))) + ) + ZipLinePaths( + new ZipLinePath( + 43, + false, + List( + Vector3(839.968f, 614.924f, 218.86f), + Vector3(821.254f, 568.629f, 222.219f), + Vector3(802.541f, 522.334f, 224.818f), + Vector3(799.173f, 514.001f, 222.95f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(44, true, List(Vector3(843.115f, 1121.634f, 204.5f), Vector3(844.011f, 1124.97f, 230.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 45, + false, + List( + Vector3(844.556f, 1130.363f, 230.85f), + Vector3(804.089f, 1161.26f, 228.65f), + Vector3(763.623f, 1192.158f, 225.699f), + Vector3(760.449f, 1194.581f, 224.701f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(46, false, List(Vector3(847.197f, 1120.008f, 230.85f), Vector3(864.661f, 1084.041f, 230.03f))) + ) + ZipLinePaths( + new ZipLinePath(47, true, List(Vector3(849.632f, 947.519f, 208.35f), Vector3(849.006f, 948.423f, 242.35f))) + ) + ZipLinePaths( + new ZipLinePath(48, true, List(Vector3(849.178f, 619.181f, 185.718f), Vector3(848.213f, 618.726f, 218.352f))) + ) + ZipLinePaths( + new ZipLinePath( + 49, + false, + List( + Vector3(850.022f, 1063.787f, 302.344f), + Vector3(817.191f, 1102.491f, 298.148f), + Vector3(784.504f, 1141.537f, 290.814f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 50, + false, + List( + Vector3(850.185f, 548.151f, 218.939f), + Vector3(804.066f, 562.931f, 207.212f), + Vector3(759.793f, 577.119f, 193.039f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 51, + false, + List( + Vector3(850.747f, 917.806f, 208.859f), + Vector3(839.367f, 893.491f, 210.468f), + Vector3(827.988f, 869.176f, 199.585f), + Vector3(821.729f, 820.546f, 189.779f), + Vector3(819.976f, 806.93f, 186.289f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 52, + false, + List( + Vector3(851.115f, 946.293f, 242.855f), + Vector3(874.386f, 901.525f, 251.024f), + Vector3(897.657f, 856.756f, 258.449f), + Vector3(920.928f, 811.988f, 265.873f), + Vector3(931.423f, 791.799f, 268.816f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(53, true, List(Vector3(855.414f, 535.186f, 218.404f), Vector3(855.499f, 535.135f, 223.909f))) + ) + ZipLinePaths( + new ZipLinePath( + 54, + false, + List( + Vector3(872.014f, 1425.892f, 234.776f), + Vector3(830.064f, 1452.015f, 234.397f), + Vector3(788.115f, 1478.138f, 236.189f), + Vector3(770.496f, 1489.11f, 230.217f), + Vector3(767.979f, 1490.677f, 225.644f), + Vector3(747.004f, 1503.738f, 212.856f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 55, + false, + List( + Vector3(872.76f, 1078.462f, 307.797f), + Vector3(835.192f, 1111.962f, 300.324f), + Vector3(797.623f, 1145.462f, 292.117f), + Vector3(796.887f, 1146.119f, 290.837f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 56, + false, + List( + Vector3(873.773f, 1379.824f, 290.094f), + Vector3(851.7f, 1417.619f, 264.733f), + Vector3(829.627f, 1455.415f, 238.56f), + Vector3(816.609f, 1477.166f, 222.955f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(57, true, List(Vector3(874.736f, 1018.944f, 208.85f), Vector3(889.984f, 1006.003f, 208.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 58, + false, + List( + Vector3(877.022f, 1542.334f, 212.574f), + Vector3(918.877f, 1570.679f, 206.656f), + Vector3(960.732f, 1599.024f, 199.916f), + Vector3(964.835f, 1601.803f, 198.004f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 59, + false, + List( + Vector3(890.368f, 540.934f, 219.08f), + Vector3(887.523f, 590.935f, 229.443f), + Vector3(884.678f, 640.936f, 242.27f), + Vector3(882.279f, 686.093f, 246.469f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 60, + false, + List( + Vector3(898.306f, 1508.067f, 269.626f), + Vector3(877.185f, 1514.283f, 268.505f), + Vector3(856.064f, 1520.5f, 246.691f), + Vector3(825.649f, 1529.452f, 225.853f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 61, + false, + List( + Vector3(899.127f, 727.839f, 246.47f), + Vector3(901.011f, 777.946f, 238.043f), + Vector3(902.894f, 828.053f, 228.734f), + Vector3(904.777f, 878.159f, 219.425f), + Vector3(904.35f, 915.319f, 208.86f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 62, + false, + List( + Vector3(906.014f, 938.879f, 229.299f), + Vector3(953.394f, 929.472f, 246.524f), + Vector3(1000.773f, 920.066f, 262.882f), + Vector3(1048.152f, 910.659f, 287.84f), + Vector3(1085.768f, 903.512f, 291.607f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 63, + false, + List( + Vector3(915.004f, 908.784f, 208.853f), + Vector3(912.459f, 859.095f, 204.635f), + Vector3(909.914f, 809.406f, 199.669f), + Vector3(908.794f, 787.543f, 196.113f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 64, + false, + List( + Vector3(915.106f, 1072.529f, 303.834f), + Vector3(959.239f, 1089.108f, 285.144f), + Vector3(1003.372f, 1105.687f, 265.692f), + Vector3(1047.505f, 1122.266f, 246.24f), + Vector3(1088.916f, 1137.444f, 225.963f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(65, true, List(Vector3(917.622f, 1395.863f, 247.228f), Vector3(925.782f, 1415.276f, 253.155f))) + ) + ZipLinePaths( + new ZipLinePath( + 66, + false, + List( + Vector3(919.772f, 1090.854f, 241.953f), + Vector3(901.102f, 1135.904f, 253.824f), + Vector3(882.431f, 1180.954f, 264.865f), + Vector3(863.76f, 1226.004f, 275.906f), + Vector3(845.09f, 1271.054f, 286.947f), + Vector3(830.9f, 1305.292f, 293.803f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 67, + false, + List( + Vector3(922.784f, 988.051f, 229.32f), + Vector3(972.611f, 991.883f, 219.995f), + Vector3(1002.898f, 994.212f, 212.162f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(68, true, List(Vector3(923.81f, 1020.341f, 236.978f), Vector3(922.546f, 982.492f, 238.284f))) + ) + ZipLinePaths( + new ZipLinePath(69, false, List(Vector3(928.145f, 1430.927f, 253.696f), Vector3(904.539f, 1456.263f, 269.4f))) + ) + ZipLinePaths( + new ZipLinePath( + 70, + false, + List( + Vector3(928.578f, 1489.868f, 275.282f), + Vector3(939.807f, 1485.162f, 274.435f), + Vector3(951.236f, 1480.557f, 270.012f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 71, + false, + List( + Vector3(940.952f, 765.853f, 268.478f), + Vector3(924.79f, 748.903f, 265.315f), + Vector3(908.628f, 731.954f, 251.685f), + Vector3(902.209f, 724.453f, 246.497f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 72, + false, + List( + Vector3(943.605f, 1330.998f, 225.806f), + Vector3(942.715f, 1356.015f, 224.659f), + Vector3(941.825f, 1381.033f, 216.829f), + Vector3(941.755f, 1382.995f, 212.794f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(945.255f, 1187.767f, 318.54f), + Vector3(992.83f, 1206.052f, 317.522f), + Vector3(1040.406f, 1224.336f, 315.76f), + Vector3(1087.982f, 1242.621f, 313.998f), + Vector3(1135.558f, 1260.905f, 312.236f), + Vector3(1147.685f, 1265.566f, 310.41f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 74, + false, + List( + Vector3(954.358f, 1499.699f, 270.422f), + Vector3(947.135f, 1521.815f, 266.047f), + Vector3(939.912f, 1543.932f, 251.825f), + Vector3(925.465f, 1588.165f, 228.954f), + Vector3(913.002f, 1626.326f, 208.144f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 75, + false, + List( + Vector3(955.561f, 817.315f, 268.753f), + Vector3(944.748f, 837.827f, 265.663f), + Vector3(933.435f, 858.94f, 255.123f), + Vector3(910.357f, 902.008f, 240.513f), + Vector3(896.329f, 928.187f, 229.295f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 76, + false, + List( + Vector3(959.479f, 1311.02f, 229.35f), + Vector3(936.058f, 1315.299f, 238.807f), + Vector3(917.137f, 1324.378f, 257.265f), + Vector3(878.738f, 1337.899f, 294.48f), + Vector3(871.584f, 1345.104f, 294.076f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(77, true, List(Vector3(958.375f, 1463.39f, 196.12f), Vector3(950.221f, 1455.99f, 212.172f))) + ) + ZipLinePaths( + new ZipLinePath(78, true, List(Vector3(960.543f, 1394.809f, 204.35f), Vector3(955.447f, 1389.008f, 212.281f))) + ) + ZipLinePaths( + new ZipLinePath( + 79, + false, + List( + Vector3(962.372f, 1320.909f, 225.715f), + Vector3(973.943f, 1364.715f, 248.139f), + Vector3(977.513f, 1414.022f, 260.669f), + Vector3(981.084f, 1463.329f, 273.198f), + Vector3(981.224f, 1465.262f, 272.846f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(80, false, List(Vector3(963.682f, 972.734f, 208.858f), Vector3(982.1f, 963.019f, 212.558f))) + ) + ZipLinePaths( + new ZipLinePath(81, true, List(Vector3(963.71f, 1377.081f, 212.079f), Vector3(982.598f, 1384.136f, 223.736f))) + ) + ZipLinePaths( + new ZipLinePath( + 82, + false, + List( + Vector3(964.68f, 1283.954f, 322.677f), + Vector3(970.913f, 1265.208f, 320.501f), + Vector3(978.346f, 1241.462f, 300.857f), + Vector3(992.011f, 1198.969f, 278.318f), + Vector3(1005.677f, 1156.476f, 255.779f), + Vector3(1016.336f, 1123.332f, 233.389f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 83, + false, + List( + Vector3(966.06f, 1034.152f, 289.043f), + Vector3(942.97f, 1039.214f, 293.837f), + Vector3(919.481f, 1044.876f, 306.952f), + Vector3(912.776f, 1045.47f, 309.571f), + Vector3(906.071f, 1046.064f, 307.813f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(84, true, List(Vector3(969.09f, 1626.228f, 197.794f), Vector3(967.362f, 1627.844f, 230.351f))) + ) + ZipLinePaths( + new ZipLinePath( + 85, + false, + List( + Vector3(969.733f, 1048.776f, 289.053f), + Vector3(969.033f, 1089.005f, 258.458f), + Vector3(968.333f, 1129.235f, 227.122f), + Vector3(968.25f, 1133.968f, 219.747f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(86, true, List(Vector3(970.108f, 1021.976f, 210.45f), Vector3(971.104f, 1022.424f, 242.351f))) + ) + ZipLinePaths( + new ZipLinePath( + 87, + false, + List( + Vector3(970.945f, 1623.276f, 230.839f), + Vector3(988.468f, 1603.231f, 238.464f), + Vector3(1006.792f, 1599.687f, 261.579f), + Vector3(1021.222f, 1590.592f, 283.002f), + Vector3(1035.853f, 1581.197f, 285.922f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 88, + false, + List( + Vector3(975.137f, 893.285f, 211.98f), + Vector3(928.003f, 888.951f, 228.828f), + Vector3(880.869f, 884.618f, 244.946f), + Vector3(854.473f, 882.191f, 253.948f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 89, + false, + List( + Vector3(976.142f, 1112.293f, 232.494f), + Vector3(933.521f, 1139.785f, 227.909f), + Vector3(890.901f, 1167.278f, 222.566f), + Vector3(848.281f, 1194.77f, 217.223f), + Vector3(844.938f, 1196.926f, 212.254f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 90, + false, + List( + Vector3(977.728f, 813.361f, 268.443f), + Vector3(978.126f, 864.072f, 274.605f), + Vector3(978.525f, 914.782f, 280.006f), + Vector3(978.923f, 965.493f, 285.406f), + Vector3(979.314f, 1015.209f, 289.192f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(91, false, List(Vector3(979.078f, 923.473f, 211.952f), Vector3(948.789f, 940.58f, 208.852f))) + ) + ZipLinePaths( + new ZipLinePath( + 92, + false, + List( + Vector3(979.933f, 1302.087f, 315.557f), + Vector3(994.753f, 1292.557f, 314.229f), + Vector3(1016.774f, 1282.428f, 288.809f), + Vector3(1053.614f, 1262.769f, 261.308f), + Vector3(1088.982f, 1243.896f, 230.267f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 93, + false, + List( + Vector3(980.715f, 1021.867f, 242.874f), + Vector3(1024.608f, 1031.666f, 267.647f), + Vector3(1068.499f, 1041.465f, 291.687f), + Vector3(1086.971f, 1039f, 310.66f), + Vector3(1104.044f, 1049.435f, 311.942f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(94, true, List(Vector3(991.007f, 1141.841f, 214.35f), Vector3(999.178f, 1143.214f, 219.5f))) + ) + ZipLinePaths( + new ZipLinePath( + 95, + false, + List( + Vector3(993.009f, 1025.976f, 289.111f), + Vector3(1013.284f, 1015.49f, 288.487f), + Vector3(1033.56f, 1005.004f, 274.418f), + Vector3(1074.112f, 984.032f, 251.628f), + Vector3(1115.475f, 962.641f, 222.931f), + Vector3(1153.594f, 942.928f, 204.75f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 96, + false, + List( + Vector3(996.021f, 1449.051f, 225.69f), + Vector3(1037.859f, 1419.909f, 227.523f), + Vector3(1078.055f, 1391.909f, 225.69f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 97, + false, + List( + Vector3(1006.725f, 1501.894f, 270.008f), + Vector3(1006.849f, 1523.173f, 267.384f), + Vector3(1006.912f, 1533.812f, 256.523f), + Vector3(1006.974f, 1544.452f, 242.663f), + Vector3(1007.223f, 1587.01f, 209.361f), + Vector3(1007.052f, 1593.917f, 209.696f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(98, true, List(Vector3(1021.3f, 1735.504f, 195.26f), Vector3(1028.804f, 1734.83f, 225.08f))) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List( + Vector3(1025.143f, 712.281f, 233.024f), + Vector3(1020.116f, 737.102f, 233.165f), + Vector3(1015.089f, 761.924f, 227.811f), + Vector3(1005.034f, 811.567f, 221.863f), + Vector3(994.98f, 861.21f, 215.914f), + Vector3(990.84f, 881.651f, 211.953f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 100, + false, + List( + Vector3(1029.198f, 1742.012f, 225.584f), + Vector3(1052.55f, 1786.849f, 219.613f), + Vector3(1075.902f, 1831.686f, 212.905f), + Vector3(1099.254f, 1876.522f, 206.197f), + Vector3(1109.328f, 1895.864f, 201.704f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List( + Vector3(1031.114f, 1732.901f, 225.593f), + Vector3(1022.527f, 1684.799f, 215.719f), + Vector3(1013.939f, 1636.698f, 205.102f), + Vector3(1009.302f, 1610.723f, 196.964f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List( + Vector3(1034.274f, 943.094f, 222.9f), + Vector3(1082.772f, 927.34f, 224.31f), + Vector3(1131.269f, 911.586f, 224.977f), + Vector3(1179.766f, 895.832f, 225.643f), + Vector3(1213.247f, 885.838f, 221.1f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 103, + false, + List( + Vector3(1034.409f, 1563.401f, 272.585f), + Vector3(1011.925f, 1558.256f, 268.822f), + Vector3(989.441f, 1553.111f, 257.502f), + Vector3(944.473f, 1542.82f, 234.711f), + Vector3(904.002f, 1533.559f, 214.166f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 104, + false, + List( + Vector3(1035.377f, 1080.205f, 262.564f), + Vector3(989.509f, 1063.28f, 252.81f), + Vector3(955.567f, 1050.755f, 241.954f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(105, true, List(Vector3(1044.219f, 1079.095f, 232.45f), Vector3(1040.901f, 1080.062f, 262.05f))) + ) + ZipLinePaths( + new ZipLinePath( + 106, + false, + List( + Vector3(1044.836f, 889.278f, 205.783f), + Vector3(1018.74f, 855.748f, 233.598f), + Vector3(992.444f, 822.219f, 260.361f), + Vector3(987.466f, 815.848f, 268.503f), + Vector3(982.289f, 809.377f, 268.435f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 107, + false, + List( + Vector3(1046.498f, 1557.897f, 272.54f), + Vector3(1000.009f, 1539.501f, 272.4f), + Vector3(953.522f, 1521.105f, 271.521f), + Vector3(907.034f, 1502.709f, 269.38f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(108, true, List(Vector3(1050.431f, 901.111f, 198.721f), Vector3(1048.107f, 930.118f, 211.95f))) + ) + ZipLinePaths( + new ZipLinePath( + 109, + false, + List( + Vector3(1051.466f, 1522.68f, 211.782f), + Vector3(1078.305f, 1479.63f, 217.733f), + Vector3(1093.966f, 1452.951f, 220.322f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 110, + false, + List( + Vector3(1055.076f, 1873.539f, 237.931f), + Vector3(1079.972f, 1917.996f, 236.679f), + Vector3(1103.404f, 1959.838f, 232.911f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 111, + false, + List( + Vector3(1061.645f, 1734.927f, 205.23f), + Vector3(1096.745f, 1766.528f, 229.978f), + Vector3(1110.51f, 1778.92f, 231.729f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 112, + false, + List( + Vector3(1062.419f, 1853.797f, 238.042f), + Vector3(1100.781f, 1820.478f, 234.502f), + Vector3(1111.312f, 1811.331f, 231.692f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(113, true, List(Vector3(1071.166f, 1202.403f, 219.85f), Vector3(1069.18f, 1206.548f, 272.258f))) + ) + ZipLinePaths( + new ZipLinePath( + 114, + false, + List( + Vector3(1071.354f, 1196.264f, 272.775f), + Vector3(1029.289f, 1170.421f, 281.462f), + Vector3(987.226f, 1144.579f, 289.413f), + Vector3(945.163f, 1118.737f, 297.365f), + Vector3(903.101f, 1092.894f, 305.316f), + Vector3(882.07f, 1079.973f, 307.796f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 115, + false, + List( + Vector3(1073.915f, 1593.898f, 272.546f), + Vector3(1093.854f, 1581.779f, 270.067f), + Vector3(1113.994f, 1567.46f, 260.705f), + Vector3(1154.274f, 1538.822f, 248.124f), + Vector3(1194.553f, 1510.185f, 235.544f), + Vector3(1227.725f, 1486.601f, 222.487f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 116, + false, + List( + Vector3(1079.887f, 1860.768f, 193.96f), + Vector3(1113.7f, 1823.94f, 195.384f), + Vector3(1147.514f, 1787.111f, 196.045f), + Vector3(1152.247f, 1781.955f, 194.44f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 117, + false, + List( + Vector3(1080.911f, 1572.173f, 278.049f), + Vector3(1092.004f, 1550.688f, 276.731f), + Vector3(1103.097f, 1529.204f, 265.932f), + Vector3(1125.283f, 1486.236f, 253.217f), + Vector3(1147.469f, 1443.267f, 240.502f), + Vector3(1159.894f, 1419.204f, 231.029f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(1089.579f, 877.305f, 291.235f), + Vector3(1069.444f, 833.967f, 276.797f), + Vector3(1049.308f, 790.629f, 262.079f), + Vector3(1029.173f, 747.291f, 247.36f), + Vector3(1011.858f, 710.02f, 233.124f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(119, true, List(Vector3(1091.648f, 1218.925f, 282.28f), Vector3(1120.246f, 1191.143f, 272.28f))) + ) + ZipLinePaths( + new ZipLinePath(120, true, List(Vector3(1091.707f, 1219.346f, 272.28f), Vector3(1120.248f, 1190.548f, 282.28f))) + ) + ZipLinePaths( + new ZipLinePath(121, true, List(Vector3(1093.253f, 1192.72f, 267.28f), Vector3(1093.221f, 1193.133f, 272.28f))) + ) + ZipLinePaths( + new ZipLinePath( + 122, + false, + List( + Vector3(1093.846f, 1164.617f, 277.782f), + Vector3(1061.277f, 1126.854f, 282.223f), + Vector3(1028.709f, 1089.092f, 285.924f), + Vector3(996.141f, 1051.329f, 289.624f), + Vector3(994.838f, 1049.819f, 289.061f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 123, + false, + List( + Vector3(1098.524f, 1242.661f, 282.779f), + Vector3(1062.263f, 1268.949f, 261.253f), + Vector3(1026.002f, 1295.237f, 239.025f), + Vector3(1010.048f, 1306.804f, 226.202f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(1102.365f, 1079.055f, 311.692f), + Vector3(1117.761f, 1118.575f, 284.12f), + Vector3(1133.157f, 1158.095f, 255.805f), + Vector3(1144.931f, 1188.316f, 231.505f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 125, + true, + List( + Vector3(1102.429f, 1172.438f, 219.85f), + Vector3(1105.492f, 1168.703f, 271.778f), + Vector3(1105.793f, 1168.336f, 277.28f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 126, + false, + List( + Vector3(1105.881f, 1796.622f, 231.706f), + Vector3(1084.406f, 1785.3f, 230.322f), + Vector3(1062.931f, 1773.978f, 220.459f), + Vector3(1019.981f, 1751.334f, 208.49f), + Vector3(1014.827f, 1748.616f, 205.625f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 127, + false, + List( + Vector3(1105.921f, 1241.768f, 277.822f), + Vector3(1122.474f, 1286.219f, 259.799f), + Vector3(1139.028f, 1330.669f, 241.061f), + Vector3(1153.31f, 1369.019f, 221.222f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 128, + false, + List( + Vector3(1106.815f, 1166.369f, 272.712f), + Vector3(1127.341f, 1119.926f, 278.234f), + Vector3(1147.866f, 1073.483f, 283.001f), + Vector3(1168.392f, 1027.04f, 287.768f), + Vector3(1188.918f, 980.598f, 292.536f), + Vector3(1207.834f, 937.797f, 296.002f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(129, true, List(Vector3(1107.127f, 1238.536f, 219.7f), Vector3(1100.346f, 1235.501f, 282.273f))) + ) + ZipLinePaths( + new ZipLinePath( + 130, + false, + List( + Vector3(1110.596f, 927.637f, 291.518f), + Vector3(1101.755f, 947.852f, 288.767f), + Vector3(1092.914f, 968.067f, 268.736f), + Vector3(1075.232f, 1008.496f, 242.424f), + Vector3(1058.258f, 1047.309f, 219.77f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 131, + false, + List( + Vector3(1115.095f, 1244.667f, 282.835f), + Vector3(1126.296f, 1264.792f, 280.253f), + Vector3(1137.497f, 1284.918f, 268.214f), + Vector3(1148.899f, 1304.669f, 253.056f), + Vector3(1160.301f, 1324.42f, 237.899f), + Vector3(1174.163f, 1348.43f, 221.228f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 132, + false, + List( + Vector3(1117.499f, 1963.794f, 233.051f), + Vector3(1159.472f, 1935.007f, 237.142f), + Vector3(1164.41f, 1931.62f, 236.951f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(133, true, List(Vector3(1120.295f, 1190.859f, 277.28f), Vector3(1091.482f, 1219.905f, 277.28f))) + ) + ZipLinePaths( + new ZipLinePath( + 134, + false, + List( + Vector3(1124.578f, 1549.382f, 212.12f), + Vector3(1074.829f, 1544.506f, 214.189f), + Vector3(1068.859f, 1543.921f, 211.28f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 135, + true, + List(Vector3(1130.396f, 1210.112f, 219.65f), Vector3(1137.396f, 1214.411f, 282.362f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 136, + false, + List( + Vector3(1131.24f, 888.787f, 294.03f), + Vector3(1182.184f, 890.508f, 296.375f), + Vector3(1208.156f, 891.386f, 296f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 137, + false, + List( + Vector3(1142.54f, 1218.66f, 282.912f), + Vector3(1169.204f, 1261.86f, 288.479f), + Vector3(1195.868f, 1305.059f, 293.298f), + Vector3(1197.437f, 1307.6f, 292.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 138, + false, + List( + Vector3(1144.458f, 1193.852f, 282.719f), + Vector3(1140.711f, 1145.805f, 296.788f), + Vector3(1136.963f, 1097.758f, 310.119f), + Vector3(1134.264f, 1081.383f, 314.518f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 139, + false, + List( + Vector3(1149.446f, 1809.731f, 231.685f), + Vector3(1167.241f, 1816.872f, 227.954f), + Vector3(1190.037f, 1826.814f, 206.722f), + Vector3(1205.159f, 1833.178f, 194.758f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 140, + false, + List( + Vector3(1151.375f, 1308.43f, 310.411f), + Vector3(1107.283f, 1285.017f, 314.004f), + Vector3(1063.191f, 1261.604f, 316.848f), + Vector3(1019.099f, 1238.191f, 319.692f), + Vector3(975.008f, 1214.777f, 322.536f), + Vector3(945.907f, 1199.325f, 324.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 141, + false, + List( + Vector3(1151.752f, 1744.783f, 205.193f), + Vector3(1170.417f, 1709.389f, 235.92f), + Vector3(1180.476f, 1693.4f, 264.353f), + Vector3(1188.335f, 1675.411f, 265.287f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 142, + false, + List( + Vector3(1154.103f, 1045.211f, 311.68f), + Vector3(1205.072f, 1046.855f, 311.765f), + Vector3(1241.05f, 1048.015f, 308.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 143, + false, + List( + Vector3(1154.402f, 1908.73f, 236.95f), + Vector3(1109.303f, 1887.142f, 238.339f), + Vector3(1065.106f, 1865.985f, 237.93f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 144, + false, + List( + Vector3(1157.948f, 1371.891f, 253.866f), + Vector3(1109.132f, 1378.159f, 245.764f), + Vector3(1060.317f, 1384.427f, 236.926f), + Vector3(1011.501f, 1390.696f, 228.089f), + Vector3(981.473f, 1398.468f, 224.307f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 145, + false, + List( + Vector3(1159.605f, 1452.411f, 220.533f), + Vector3(1186.886f, 1495.243f, 216.614f), + Vector3(1195.979f, 1509.521f, 213.003f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 146, + false, + List( + Vector3(1164.409f, 1263.605f, 310.411f), + Vector3(1211.954f, 1245.315f, 308.766f), + Vector3(1259.499f, 1227.024f, 306.377f), + Vector3(1265.093f, 1224.872f, 304.001f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 147, + true, + List(Vector3(1168.129f, 1374.494f, 220.68f), Vector3(1164.962f, 1371.182f, 253.351f)) + ) + ) + ZipLinePaths( + new ZipLinePath(148, true, List(Vector3(1167.336f, 1311.256f, 214.3f), Vector3(1166.591f, 1298.844f, 219.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 149, + false, + List( + Vector3(1169.164f, 1623.147f, 265.079f), + Vector3(1191.24f, 1579.293f, 256.342f), + Vector3(1213.317f, 1535.44f, 246.87f), + Vector3(1235.393f, 1491.586f, 237.399f), + Vector3(1238.901f, 1483.6f, 233.64f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 150, + true, + List(Vector3(1171.102f, 1413.013f, 225.003f), Vector3(1175.787f, 1413.078f, 230.506f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 151, + false, + List( + Vector3(1171.763f, 1889.791f, 240.854f), + Vector3(1152.036f, 1844.142f, 236.32f), + Vector3(1141.384f, 1819.492f, 231.694f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 152, + false, + List( + Vector3(1173.489f, 1450.182f, 310.544f), + Vector3(1126.382f, 1462.615f, 300.085f), + Vector3(1079.275f, 1475.048f, 288.844f), + Vector3(1032.168f, 1487.481f, 277.603f), + Vector3(1010.499f, 1493.2f, 270.014f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(153, true, List(Vector3(1182.916f, 1506.86f, 194.35f), Vector3(1181.854f, 1524.924f, 211.925f))) + ) + ZipLinePaths( + new ZipLinePath( + 154, + false, + List( + Vector3(1183.893f, 814.094f, 216.873f), + Vector3(1138.422f, 796.348f, 206.755f), + Vector3(1092.951f, 778.602f, 195.908f), + Vector3(1055.664f, 764.05f, 185.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(1188.76f, 862.336f, 212.351f), + Vector3(1140.34f, 850.007f, 211.072f), + Vector3(1091.921f, 837.678f, 209.034f), + Vector3(1077.001f, 833.719f, 206.491f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + false, + List( + Vector3(1191.935f, 1329.688f, 292.852f), + Vector3(1142.362f, 1326.045f, 299.044f), + Vector3(1092.79f, 1322.401f, 304.504f), + Vector3(1043.217f, 1318.757f, 309.964f), + Vector3(993.646f, 1315.113f, 315.423f), + Vector3(982.741f, 1314.312f, 315.553f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 157, + true, + List(Vector3(1192.393f, 1929.829f, 196.899f), Vector3(1179.993f, 1912.709f, 236.45f)) + ) + ) + ZipLinePaths( + new ZipLinePath(158, true, List(Vector3(1194.117f, 818.768f, 185.029f), Vector3(1194.088f, 818.005f, 216.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 159, + false, + List( + Vector3(1196.939f, 1341.983f, 293.059f), + Vector3(1174.428f, 1331.787f, 290.82f), + Vector3(1152.217f, 1323.691f, 277.494f), + Vector3(1107.796f, 1307.498f, 261.211f), + Vector3(1063.375f, 1291.306f, 244.928f), + Vector3(1018.953f, 1275.113f, 228.646f), + Vector3(1016.288f, 1274.141f, 226.178f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 160, + false, + List( + Vector3(1198.132f, 1108.054f, 222.911f), + Vector3(1148.266f, 1106.413f, 227.001f), + Vector3(1098.4f, 1104.771f, 230.337f), + Vector3(1048.535f, 1103.129f, 233.672f), + Vector3(1041.553f, 1102.899f, 232.951f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 161, + false, + List( + Vector3(1200.709f, 1913.954f, 236.974f), + Vector3(1217.736f, 1928.55f, 233.206f), + Vector3(1234.763f, 1946.146f, 217.583f), + Vector3(1249.453f, 1960.033f, 207.743f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 162, + false, + List( + Vector3(1201.001f, 932.287f, 296.001f), + Vector3(1151.813f, 923.791f, 293.771f), + Vector3(1132.138f, 920.393f, 291.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(163, true, List(Vector3(1201.371f, 1448.316f, 253.36f), Vector3(1192.845f, 1447.079f, 310.07f))) + ) + ZipLinePaths( + new ZipLinePath( + 164, + true, + List(Vector3(1201.389f, 1364.36f, 233.756f), Vector3(1201.015f, 1360.354f, 251.467f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 165, + false, + List( + Vector3(1201.803f, 1918.873f, 242.472f), + Vector3(1226.809f, 1877.857f, 229.309f), + Vector3(1251.815f, 1836.841f, 215.424f), + Vector3(1276.821f, 1795.826f, 201.539f), + Vector3(1283.823f, 1784.341f, 195.591f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 166, + false, + List( + Vector3(1201.995f, 1390.422f, 310.6f), + Vector3(1204.786f, 1368.885f, 306.222f), + Vector3(1206.381f, 1358.416f, 295.706f), + Vector3(1207.577f, 1347.348f, 292.929f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 167, + false, + List( + Vector3(1204.983f, 964.893f, 219.91f), + Vector3(1183.305f, 1011f, 222.92f), + Vector3(1161.628f, 1057.107f, 225.178f), + Vector3(1139.95f, 1103.214f, 227.436f), + Vector3(1119.123f, 1147.512f, 227.91f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(168, true, List(Vector3(1205.446f, 1458.927f, 220.37f), Vector3(1206.823f, 1455.583f, 253.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 169, + false, + List( + Vector3(1212.761f, 1666.804f, 265.077f), + Vector3(1238.062f, 1703.093f, 240.457f), + Vector3(1263.363f, 1739.382f, 215.085f), + Vector3(1279.238f, 1762.152f, 197.042f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 170, + false, + List( + Vector3(1212.954f, 780.028f, 193.91f), + Vector3(1255.618f, 752.1f, 195.372f), + Vector3(1298.282f, 724.172f, 196.091f), + Vector3(1340.946f, 696.244f, 196.811f), + Vector3(1341.783f, 695.697f, 195.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 171, + false, + List( + Vector3(1215.651f, 1358.743f, 251.671f), + Vector3(1254.53f, 1391.415f, 254.465f), + Vector3(1271.301f, 1405.509f, 255.04f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 172, + false, + List( + Vector3(1215.938f, 1852.856f, 226.888f), + Vector3(1206.275f, 1860.843f, 227.299f), + Vector3(1195.412f, 1868.23f, 243.848f), + Vector3(1185.887f, 1883.405f, 244.091f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 173, + true, + List(Vector3(1216.935f, 1846.375f, 193.717f), Vector3(1217.026f, 1845.678f, 226.35f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 174, + false, + List( + Vector3(1217.901f, 1306.547f, 252.003f), + Vector3(1178.924f, 1329.026f, 230.922f), + Vector3(1169.569f, 1334.421f, 221.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 175, + false, + List( + Vector3(1222.97f, 892.562f, 296f), + Vector3(1273.851f, 894.346f, 299.697f), + Vector3(1292.807f, 895.01f, 299.837f), + Vector3(1314.263f, 895.475f, 300.301f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(176, true, List(Vector3(1226.215f, 1306.36f, 220.591f), Vector3(1225.078f, 1307.135f, 251.49f))) + ) + ZipLinePaths( + new ZipLinePath( + 177, + false, + List( + Vector3(1229.979f, 897.9f, 222.686f), + Vector3(1248.429f, 856.834f, 250.003f), + Vector3(1265.379f, 819.569f, 273.788f), + Vector3(1267.59f, 810.425f, 274.254f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 178, + true, + List(Vector3(1234.241f, 1678.155f, 195.187f), Vector3(1235.695f, 1678.25f, 226.352f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 179, + false, + List( + Vector3(1243.039f, 1672.894f, 226.877f), + Vector3(1257.864f, 1653.72f, 226.354f), + Vector3(1272.69f, 1634.546f, 215.348f), + Vector3(1302.341f, 1596.197f, 203.081f), + Vector3(1318.352f, 1575.489f, 195.226f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 180, + false, + List( + Vector3(1249.659f, 799.131f, 274.221f), + Vector3(1230.152f, 794.469f, 271.908f), + Vector3(1210.046f, 789.308f, 258.099f), + Vector3(1171.632f, 780.485f, 217.049f), + Vector3(1146.663f, 774.518f, 193.216f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 181, + false, + List( + Vector3(1250.666f, 1023.941f, 308.491f), + Vector3(1273.371f, 979.444f, 307.138f), + Vector3(1296.076f, 934.946f, 305.027f), + Vector3(1313.786f, 900.238f, 300.301f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 182, + false, + List( + Vector3(1258.081f, 1239.629f, 233.701f), + Vector3(1260.773f, 1194.323f, 257.733f), + Vector3(1263.464f, 1149.017f, 282.723f), + Vector3(1266.156f, 1103.71f, 306.713f), + Vector3(1267.717f, 1077.432f, 308.82f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(183, true, List(Vector3(1260.415f, 982.55f, 212.75f), Vector3(1257.704f, 982.99f, 246.35f))) + ) + ZipLinePaths( + new ZipLinePath(184, true, List(Vector3(1261.826f, 1507.387f, 221.5f), Vector3(1263.065f, 1509.887f, 253.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 185, + false, + List( + Vector3(1262.6f, 1515.681f, 253.853f), + Vector3(1237.576f, 1558.503f, 260.945f), + Vector3(1212.551f, 1601.325f, 267.281f), + Vector3(1196.536f, 1628.731f, 267.893f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 186, + false, + List( + Vector3(1263.972f, 1211.529f, 304.001f), + Vector3(1230.292f, 1174.694f, 307.831f), + Vector3(1196.613f, 1137.86f, 310.924f), + Vector3(1162.934f, 1101.025f, 314.017f), + Vector3(1140.706f, 1076.714f, 314.501f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 187, + false, + List( + Vector3(1264.862f, 981.913f, 246.854f), + Vector3(1281.838f, 982.081f, 242.85f), + Vector3(1298.815f, 982.25f, 222.859f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(188, false, List(Vector3(1265.582f, 1404.584f, 253.22f), Vector3(1276.61f, 1372.427f, 251.88f))) + ) + ZipLinePaths( + new ZipLinePath( + 189, + false, + List( + Vector3(1271.695f, 1083.292f, 247.734f), + Vector3(1269.115f, 1109.294f, 246.993f), + Vector3(1266.536f, 1135.296f, 241.156f), + Vector3(1259.177f, 1185.399f, 235.122f), + Vector3(1251.819f, 1235.503f, 234.087f), + Vector3(1244.16f, 1267.106f, 232.753f), + Vector3(1243.017f, 1295.431f, 221.094f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 190, + false, + List( + Vector3(1280.299f, 1356.039f, 251.882f), + Vector3(1313.643f, 1317.727f, 257.273f), + Vector3(1346.987f, 1279.415f, 261.877f), + Vector3(1380.332f, 1241.102f, 266.481f), + Vector3(1413.676f, 1202.79f, 271.085f), + Vector3(1428.714f, 1185.512f, 272.052f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(191, false, List(Vector3(1283.458f, 890.038f, 212.15f), Vector3(1284.727f, 924.985f, 213.25f))) + ) + ZipLinePaths( + new ZipLinePath(192, true, List(Vector3(1284.624f, 801.067f, 273.7f), Vector3(1281.635f, 798.615f, 279.206f))) + ) + ZipLinePaths( + new ZipLinePath( + 193, + false, + List( + Vector3(1292.551f, 1066.859f, 308.492f), + Vector3(1313.109f, 1065.355f, 304.285f), + Vector3(1331.767f, 1064.051f, 274.575f), + Vector3(1369.083f, 1061.442f, 239.914f), + Vector3(1393.96f, 1059.703f, 213.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(194, true, List(Vector3(1305.056f, 1321.493f, 210.55f), Vector3(1291.481f, 1301.007f, 232.65f))) + ) + ZipLinePaths( + new ZipLinePath( + 195, + false, + List( + Vector3(1304.347f, 1371.371f, 253.835f), + Vector3(1280.917f, 1375.189f, 258.523f), + Vector3(1256.888f, 1380.207f, 243.099f), + Vector3(1208.829f, 1386.642f, 237.107f), + Vector3(1196.148f, 1392.034f, 228.88f), + Vector3(1176.148f, 1391.834f, 221.195f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 196, + true, + List(Vector3(1306.335f, 1369.803f, 220.18f), Vector3(1307.635f, 1371.319f, 253.251f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 197, + false, + List( + Vector3(1310.992f, 913.011f, 300.297f), + Vector3(1290.856f, 918.141f, 295.917f), + Vector3(1270.721f, 923.271f, 273.234f), + Vector3(1230.45f, 933.531f, 245.426f), + Vector3(1197.428f, 941.944f, 219.125f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 198, + false, + List( + Vector3(1312.511f, 1753.802f, 198.17f), + Vector3(1321.508f, 1704.613f, 199f), + Vector3(1330.504f, 1655.425f, 199.087f), + Vector3(1333.743f, 1637.717f, 197.87f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(199, true, List(Vector3(1312.814f, 1008.901f, 234.266f), Vector3(1296.46f, 998.06f, 247.893f))) + ) + ZipLinePaths( + new ZipLinePath(200, true, List(Vector3(1315.533f, 658.726f, 185.933f), Vector3(1315.364f, 658.643f, 219.55f))) + ) + ZipLinePaths( + new ZipLinePath(201, true, List(Vector3(1313.047f, 747.979f, 185.79f), Vector3(1333.818f, 745.34f, 213.76f))) + ) + ZipLinePaths( + new ZipLinePath( + 202, + false, + List( + Vector3(1326.858f, 659.881f, 220.097f), + Vector3(1343.771f, 687.963f, 227.17f), + Vector3(1325.685f, 716.046f, 245.475f), + Vector3(1333.212f, 763.211f, 263.353f), + Vector3(1336.975f, 786.793f, 272.292f), + Vector3(1340.738f, 810.376f, 281.231f), + Vector3(1348.265f, 857.541f, 299.109f), + Vector3(1350.11f, 869.101f, 306.402f), + Vector3(1351.955f, 880.661f, 307.438f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 203, + false, + List( + Vector3(1322.759f, 1421.014f, 244.694f), + Vector3(1361.905f, 1388.616f, 241.124f), + Vector3(1399.517f, 1357.489f, 232.954f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(204, true, List(Vector3(1323.032f, 1295.479f, 204.5f), Vector3(1344.755f, 1292.424f, 211.2f))) + ) + ZipLinePaths( + new ZipLinePath( + 205, + false, + List( + Vector3(1326.35f, 956.514f, 222.853f), + Vector3(1335.824f, 945.854f, 223.593f), + Vector3(1349.999f, 943.194f, 225.853f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 206, + false, + List( + Vector3(1327.717f, 750.522f, 214.26f), + Vector3(1290.93f, 785.843f, 214.797f), + Vector3(1275.783f, 800.387f, 211.95f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(207, true, List(Vector3(1328.937f, 1374.829f, 210.55f), Vector3(1315.126f, 1364.014f, 220.18f))) + ) + ZipLinePaths( + new ZipLinePath( + 208, + false, + List( + Vector3(1333.52f, 1052.305f, 224.259f), + Vector3(1336.439f, 1097.932f, 247.538f), + Vector3(1339.359f, 1143.56f, 270.128f), + Vector3(1342.279f, 1189.187f, 292.717f), + Vector3(1348.909f, 1201.159f, 303.208f), + Vector3(1343.939f, 1215.132f, 304.058f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 209, + false, + List( + Vector3(1334.659f, 1326.499f, 307.604f), + Vector3(1285.117f, 1324.503f, 301.896f), + Vector3(1235.575f, 1322.508f, 295.435f), + Vector3(1221.775f, 1320.568f, 292.845f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 210, + false, + List( + Vector3(1338.097f, 1355.399f, 211.077f), + Vector3(1314.922f, 1314.426f, 228.464f), + Vector3(1310.055f, 1305.822f, 232.957f), + Vector3(1305.188f, 1297.218f, 233.177f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 211, + true, + List(Vector3(1341.036f, 1075.189f, 246.36f), Vector3(1324.315f, 1068.659f, 242.637f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 212, + false, + List( + Vector3(1342.657f, 1226.81f, 304.003f), + Vector3(1356.708f, 1244.273f, 303.168f), + Vector3(1370.759f, 1261.736f, 288.939f), + Vector3(1398.861f, 1296.661f, 250.126f), + Vector3(1420.902f, 1324.054f, 232.964f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(213, true, List(Vector3(1347.83f, 1082.554f, 212.85f), Vector3(1347.547f, 1079.261f, 246.351f))) + ) + ZipLinePaths( + new ZipLinePath(214, true, List(Vector3(1348.324f, 957.395f, 226.25f), Vector3(1352.107f, 965.408f, 237.533f))) + ) + ZipLinePaths( + new ZipLinePath( + 215, + false, + List( + Vector3(1350.175f, 923.469f, 305.829f), + Vector3(1372.266f, 933.302f, 302.84f), + Vector3(1394.358f, 943.136f, 290.38f), + Vector3(1438.541f, 962.803f, 274.208f), + Vector3(1451.536f, 968.587f, 266.392f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 216, + false, + List( + Vector3(1352.617f, 954.329f, 235.372f), + Vector3(1352.705f, 935.466f, 234.815f), + Vector3(1326.093f, 908.504f, 218.798f), + Vector3(1324.059f, 902.349f, 214.434f), + Vector3(1321.125f, 911.095f, 212.614f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 217, + false, + List( + Vector3(1359.87f, 1680.928f, 195.69f), + Vector3(1357.305f, 1731.828f, 198.145f), + Vector3(1355.846f, 1760.771f, 197.43f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 218, + false, + List( + Vector3(1360.625f, 990.729f, 235.33f), + Vector3(1331.172f, 1032.362f, 236.479f), + Vector3(1317.311f, 1051.953f, 234.77f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(219, true, List(Vector3(1370.028f, 1325.967f, 294.809f), Vector3(1380.014f, 1337.961f, 302.3f))) + ) + ZipLinePaths( + new ZipLinePath( + 220, + false, + List( + Vector3(1386.011f, 1481.11f, 259.778f), + Vector3(1371.875f, 1500.316f, 256.032f), + Vector3(1357.74f, 1519.522f, 242.425f), + Vector3(1329.47f, 1557.934f, 224.371f), + Vector3(1301.2f, 1596.346f, 206.317f), + Vector3(1292.331f, 1608.397f, 196.629f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 221, + true, + List(Vector3(1386.248f, 1033.103f, 216.339f), Vector3(1378.175f, 1038.077f, 221.843f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 222, + false, + List( + Vector3(1396.703f, 1336.476f, 232.95f), + Vector3(1352.996f, 1312.22f, 235.003f), + Vector3(1309.289f, 1287.965f, 236.307f), + Vector3(1308.415f, 1287.48f, 233.15f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 223, + false, + List( + Vector3(1402.832f, 1790.362f, 238.275f), + Vector3(1357.135f, 1784.082f, 219.665f), + Vector3(1311.438f, 1777.801f, 200.357f), + Vector3(1306.868f, 1777.173f, 196.593f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 224, + false, + List( + Vector3(1403.596f, 1321.775f, 307.617f), + Vector3(1418.538f, 1275.358f, 297.279f), + Vector3(1433.479f, 1228.941f, 286.22f), + Vector3(1446.628f, 1188.094f, 272.067f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 225, + false, + List( + Vector3(1407.208f, 968.784f, 225.906f), + Vector3(1452.954f, 962.509f, 204.954f), + Vector3(1487.039f, 957.833f, 185.799f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(226, false, List(Vector3(1410.886f, 1015.38f, 224.85f), Vector3(1402.812f, 977.244f, 225.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 227, + false, + List( + Vector3(1418.968f, 1157.21f, 272.079f), + Vector3(1395.204f, 1155.15f, 268.977f), + Vector3(1371.44f, 1153.09f, 261.808f), + Vector3(1323.912f, 1148.971f, 243.929f), + Vector3(1299.898f, 1147.293f, 230.218f), + Vector3(1291.285f, 1147.316f, 227.081f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 228, + false, + List( + Vector3(1425.18f, 1789.32f, 206.882f), + Vector3(1375.333f, 1789.595f, 203.687f), + Vector3(1325.486f, 1789.87f, 199.742f), + Vector3(1296.574f, 1790.029f, 196.532f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 229, + false, + List( + Vector3(1445.087f, 1032.407f, 213.083f), + Vector3(1464.295f, 1018.75f, 210.633f), + Vector3(1483.503f, 1005.094f, 197.115f), + Vector3(1505.784f, 989.253f, 185.682f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 230, + false, + List( + Vector3(1447.744f, 1139.43f, 272.051f), + Vector3(1459.359f, 1090.834f, 270.834f), + Vector3(1470.974f, 1042.238f, 268.876f), + Vector3(1472.136f, 1037.378f, 266.361f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 231, + false, + List( + Vector3(1447.873f, 1015.423f, 261.7f), + Vector3(1399.228f, 1023.656f, 254.346f), + Vector3(1350.583f, 1031.89f, 246.214f), + Vector3(1317.738f, 1038.824f, 238.282f), + Vector3(1310.909f, 1040.47f, 234.779f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 232, + false, + List( + Vector3(1454.058f, 1332.984f, 232.951f), + Vector3(1499.766f, 1355.128f, 238.278f), + Vector3(1513.21f, 1361.641f, 238.042f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 233, + false, + List(Vector3(1454.086f, 1316.012f, 195.46f), Vector3(1492.612f, 1341.129f, 195.64f)) + ) + ) + ZipLinePaths( + new ZipLinePath(234, true, List(Vector3(1484.619f, 975.574f, 196.717f), Vector3(1486.5f, 1019.848f, 265.86f))) + ) + ZipLinePaths( + new ZipLinePath( + 235, + false, + List( + Vector3(1495.506f, 1365.02f, 198.175f), + Vector3(1460.612f, 1394.349f, 221.756f), + Vector3(1425.718f, 1423.677f, 244.627f), + Vector3(1410.323f, 1436.616f, 262.064f), + Vector3(1394.928f, 1449.556f, 265.053f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 236, + false, + List( + Vector3(1508.012f, 1037.494f, 262.404f), + Vector3(1484.492f, 1081.185f, 251.434f), + Vector3(1460.972f, 1124.876f, 239.663f), + Vector3(1437.452f, 1168.567f, 227.892f), + Vector3(1413.931f, 1212.258f, 216.121f), + Vector3(1410.703f, 1218.255f, 212.973f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 237, + false, + List( + Vector3(1511.057f, 1376.957f, 238.038f), + Vector3(1487.839f, 1382.544f, 233.932f), + Vector3(1464.621f, 1388.132f, 225.158f), + Vector3(1418.186f, 1399.308f, 209.16f), + Vector3(1387.537f, 1408.048f, 194.108f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 238, + false, + List( + Vector3(1533.004f, 1221.827f, 201.162f), + Vector3(1487.001f, 1202.784f, 206.58f), + Vector3(1440.999f, 1183.741f, 211.247f), + Vector3(1415.238f, 1173.077f, 212.962f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 239, + true, + List(Vector3(1541.029f, 1002.385f, 185.132f), Vector3(1539.744f, 1007.686f, 217.352f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 240, + false, + List( + Vector3(1544.376f, 1012.95f, 217.861f), + Vector3(1544.619f, 1063.813f, 214.894f), + Vector3(1544.862f, 1114.676f, 211.185f), + Vector3(1545.105f, 1165.539f, 207.476f), + Vector3(1545.319f, 1210.418f, 202.922f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 241, + false, + List( + Vector3(1576.949f, 990.322f, 223.031f), + Vector3(1530.215f, 972.799f, 220.748f), + Vector3(1483.48f, 955.276f, 217.726f), + Vector3(1436.745f, 937.753f, 214.704f), + Vector3(1434.876f, 937.052f, 212.651f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 242, + true, + List(Vector3(1289.844f, 1078.568f, 216.85f), Vector3(1289.422f, 1086.704f, 234.276f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 243, + true, + List(Vector3(1295.275f, 1006.474f, 234.276f), Vector3(1295.289f, 1014.841f, 216.85f)) + ) + ) + ZipLinePaths( + new ZipLinePath(244, true, List(Vector3(889.903f, 1392.847f, 216.85f), Vector3(891.002f, 1383.453f, 234.276f))) + ) + ZipLinePaths( + new ZipLinePath(245, true, List(Vector3(899.389f, 1462.873f, 234.276f), Vector3(899.115f, 1455.859f, 216.85f))) + ) + ZipLinePaths( + new ZipLinePath(246, true, List(Vector3(1206.547f, 1338.16f, 292.333f), Vector3(1207.199f, 1337.626f, 297.84f))) + ) + ZipLinePaths( + new ZipLinePath( + 247, + false, + List( + Vector3(1320.229f, 668.971f, 220.041f), + Vector3(1297.599f, 714.589f, 218.575f), + Vector3(1274.969f, 760.207f, 215.169f), + Vector3(1255.445f, 799.563f, 211.951f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 248, + false, + List( + Vector3(1356.604f, 911.362f, 300.275f), + Vector3(1379.938f, 917.926f, 296.868f), + Vector3(1403.271f, 924.489f, 285.181f), + Vector3(1449.938f, 937.616f, 269.351f), + Vector3(1496.605f, 950.742f, 253.521f), + Vector3(1543.272f, 963.869f, 237.692f), + Vector3(1582.619f, 974.937f, 223.027f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(249, true, List(Vector3(1082.643f, 1290.453f, 214.55f), Vector3(1077.063f, 1283.506f, 219.55f))) + ) + ZipLinePaths( + new ZipLinePath( + 250, + false, + List( + Vector3(871.498f, 436.029f, 198.902f), + Vector3(873.737f, 485.704f, 210.959f), + Vector3(877.66f, 524.343f, 218.903f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 251, + true, + List(Vector3(1212.524f, 1596.389f, 194.899f), Vector3(1216.017f, 1580.147f, 212.18f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 252, + false, + List( + Vector3(764.967f, 771.161f, 249.219f), + Vector3(766.426f, 773.295f, 249.101f), + Vector3(807.076f, 832.744f, 194.612f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 253, + false, + List( + Vector3(676.271f, 684.934f, 196.79f), + Vector3(682.995f, 735.485f, 197.148f), + Vector3(689.719f, 786.037f, 196.758f), + Vector3(696.442f, 836.589f, 196.367f), + Vector3(698.024f, 848.484f, 195.52f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(254, true, List(Vector3(817.187f, 767.054f, 185.791f), Vector3(816.774f, 767.452f, 217.351f))) + ) + ZipLinePaths( + new ZipLinePath( + 255, + false, + List( + Vector3(806.255f, 770.376f, 217.869f), + Vector3(783.751f, 777.979f, 213.672f), + Vector3(761.247f, 785.583f, 203.003f), + Vector3(745.045f, 791.057f, 196.219f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 256, + false, + List( + Vector3(815.529f, 778.081f, 217.866f), + Vector3(828.261f, 826.796f, 210.506f), + Vector3(840.992f, 875.511f, 202.4f), + Vector3(846.983f, 898.436f, 197.557f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 257, + false, + List( + Vector3(819.788f, 763.677f, 217.895f), + Vector3(850.532f, 726.309f, 240.426f), + Vector3(855.093f, 723.569f, 241.036f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 258, + false, + List( + Vector3(905.596f, 706.507f, 241.162f), + Vector3(956.466f, 704.68f, 238.794f), + Vector3(1007.335f, 702.852f, 233.081f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 259, + false, + List( + Vector3(704.784f, 875.597f, 201.11f), + Vector3(717.929f, 896.92f, 201.064f), + Vector3(731.574f, 918.444f, 200.122f), + Vector3(758.864f, 961.49f, 198.395f), + Vector3(761.539f, 965.711f, 197.45f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 260, + false, + List( + Vector3(893.999f, 456.076f, 196.941f), + Vector3(904.293f, 505.965f, 196.623f), + Vector3(914.587f, 555.853f, 195.773f), + Vector3(918.724f, 575.907f, 192.721f), + Vector3(922.862f, 595.96f, 189.971f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(261, true, List(Vector3(795.919f, 940.689f, 196.595f), Vector3(830.961f, 955.602f, 210.15f))) + ) + ZipLinePaths( + new ZipLinePath( + 262, + false, + List( + Vector3(647.03f, 933.05f, 195.93f), + Vector3(661.956f, 981.799f, 197.893f), + Vector3(665.175f, 992.314f, 197.45f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(263, true, List(Vector3(690.613f, 1259.99f, 196.173f), Vector3(706.118f, 1244.747f, 211.35f))) + ) + ZipLinePaths( + new ZipLinePath(264, true, List(Vector3(637.748f, 1318.521f, 196.587f), Vector3(659.951f, 1326.051f, 211.992f))) + ) + ZipLinePaths( + new ZipLinePath( + 265, + false, + List( + Vector3(706.085f, 1366.379f, 212.49f), + Vector3(715.565f, 1385.971f, 213.872f), + Vector3(725.045f, 1405.564f, 213.05f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(266, true, List(Vector3(1293.009f, 1407.06f, 229.539f), Vector3(1290.49f, 1414.493f, 259.321f))) + ) + ZipLinePaths( + new ZipLinePath(267, true, List(Vector3(1260.779f, 1465.584f, 227.039f), Vector3(1273.877f, 1457.67f, 254.54f))) + ) + ZipLinePaths( + new ZipLinePath(268, true, List(Vector3(900.574f, 1093.87f, 213.939f), Vector3(888.281f, 1107.401f, 233.19f))) + ) + ZipLinePaths( + new ZipLinePath(269, true, List(Vector3(933.058f, 1035.019f, 216.439f), Vector3(929.539f, 1041.274f, 246.221f))) + ) + ZipLinePaths( + new ZipLinePath(270, true, List(Vector3(816.289f, 2213.624f, 242.635f), Vector3(821.393f, 2071.116f, 202.635f))) + ) + ZipLinePaths( + new ZipLinePath(271, true, List(Vector3(844.297f, 2026.099f, 202.635f), Vector3(973.751f, 2000.333f, 201.989f))) + ) + ZipLinePaths( + new ZipLinePath( + 272, + false, + List( + Vector3(905.182f, 628.614f, 185.95f), + Vector3(885.241f, 675.551f, 187.87f), + Vector3(866.865f, 718.808f, 186.29f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 273, + false, + List( + Vector3(809.87f, 889.825f, 186f), + Vector3(769.309f, 860.583f, 187.897f), + Vector3(736.049f, 836.604f, 186.28f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 274, + false, + List( + Vector3(848.913f, 608.999f, 218.84f), + Vector3(861.032f, 560.488f, 219.485f), + Vector3(863.613f, 549.756f, 218.417f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 275, + false, + List( + Vector3(854.5f, 709.362f, 241.026f), + Vector3(814.796f, 688.125f, 219.964f), + Vector3(775.887f, 667.312f, 197.944f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 276, + false, + List( + Vector3(827.296f, 970.647f, 219.293f), + Vector3(813.585f, 932.726f, 254.124f), + Vector3(811.665f, 927.417f, 253.938f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 277, + false, + List( + Vector3(690.329f, 984.723f, 231.851f), + Vector3(704.931f, 936.036f, 236.752f), + Vector3(719.533f, 887.349f, 240.911f), + Vector3(734.135f, 838.662f, 245.069f), + Vector3(748.737f, 789.974f, 249.228f), + Vector3(754.177f, 771.836f, 249.222f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 278, + false, + List( + Vector3(875.762f, 1394.878f, 234.786f), + Vector3(867.423f, 1372.115f, 232.776f), + Vector3(859.084f, 1349.352f, 223.285f), + Vector3(845.409f, 1312.021f, 212.116f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 279, + false, + List( + Vector3(961.517f, 1415.007f, 247.343f), + Vector3(979.775f, 1398.183f, 248.537f), + Vector3(998.034f, 1381.359f, 242.23f), + Vector3(1034.551f, 1347.71f, 236.358f), + Vector3(1071.069f, 1314.061f, 230.485f), + Vector3(1085.445f, 1301.175f, 227.303f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 280, + false, + List( + Vector3(1228.337f, 1309.135f, 251.995f), + Vector3(1265.385f, 1276.134f, 246.542f), + Vector3(1283.909f, 1259.633f, 242.624f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(281, true, List(Vector3(860.587f, 1479.59f, 214.706f), Vector3(868.409f, 1478.511f, 224.479f))) + ) + ZipLinePaths( + new ZipLinePath( + 282, + true, + List(Vector3(1274.085f, 1129.327f, 216.506f), Vector3(1301.615f, 1140.312f, 226.271f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 283, + false, + List( + Vector3(1016.344f, 669.706f, 227.588f), + Vector3(1016.653f, 621.568f, 212.295f), + Vector3(1016.85f, 590.759f, 207.982f), + Vector3(1017.164f, 541.658f, 193.497f), + Vector3(1017.349f, 512.775f, 183.271f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 284, + false, + List( + Vector3(1095.865f, 472.467f, 168.211f), + Vector3(1096.286f, 460.001f, 170.523f), + Vector3(1096.707f, 447.535f, 172.931f), + Vector3(1097.314f, 429.584f, 168.664f), + Vector3(1097.92f, 411.632f, 163.901f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 285, + false, + List( + Vector3(951.858f, 387.939f, 188.212f), + Vector3(951.96f, 381.835f, 187.721f), + Vector3(952.062f, 375.731f, 186.032f), + Vector3(952.266f, 363.522f, 181.666f), + Vector3(952.469f, 351.314f, 178.5f), + Vector3(952.673f, 339.105f, 174.333f), + Vector3(952.877f, 326.897f, 170.356f), + Vector3(953.08f, 314.688f, 166.58f), + Vector3(953.284f, 302.48f, 164.053f), + Vector3(953.488f, 290.271f, 163.926f), + Vector3(953.732f, 275.621f, 163.452f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 286, + false, + List( + Vector3(837.714f, 264.55f, 163.487f), + Vector3(838.193f, 255.85f, 163.337f), + Vector3(838.3f, 253.916f, 162.774f), + Vector3(839.045f, 240.382f, 158.337f), + Vector3(839.79f, 226.849f, 153.417f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 287, + false, + List( + Vector3(884.876f, 213.314f, 143.23f), + Vector3(887.973f, 162.408f, 143.946f), + Vector3(888.216f, 158.416f, 143.28f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 288, + false, + List( + Vector3(776.348f, 254.115f, 153.197f), + Vector3(776.224f, 266.482f, 153.979f), + Vector3(776.1f, 278.848f, 155.562f), + Vector3(775.977f, 291.214f, 159.152f), + Vector3(775.853f, 303.581f, 164.142f), + Vector3(775.61f, 327.828f, 170.323f), + Vector3(775.489f, 339.952f, 174.214f), + Vector3(775.428f, 346.014f, 176.759f), + Vector3(775.368f, 352.076f, 178.215f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 289, + false, + List( + Vector3(760.354f, 385.699f, 183.342f), + Vector3(759.79f, 410.144f, 191.685f), + Vector3(759.509f, 422.366f, 195.616f), + Vector3(759.227f, 434.588f, 198.548f), + Vector3(758.962f, 446.092f, 202.623f), + Vector3(758.829f, 451.843f, 203.263f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 290, + false, + List( + Vector3(711.762f, 461.764f, 213.168f), + Vector3(713.259f, 480.738f, 218.568f), + Vector3(712.907f, 490.925f, 221.321f), + Vector3(711.931f, 495.469f, 223.197f), + Vector3(712.755f, 499.612f, 223.874f), + Vector3(717.35f, 503.016f, 223.69f), + Vector3(755.945f, 503.42f, 223.257f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 291, + false, + List( + Vector3(1281.979f, 376.763f, 183.18f), + Vector3(1316.967f, 413.866f, 183.982f), + Vector3(1323.827f, 421.141f, 183.24f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 292, + false, + List( + Vector3(1493.118f, 393.605f, 163.24f), + Vector3(1494.583f, 403.371f, 162.907f), + Vector3(1496.048f, 413.138f, 159.87f), + Vector3(1495.979f, 425.872f, 155.056f), + Vector3(1495.84f, 451.339f, 154.929f), + Vector3(1495.457f, 470.964f, 156.642f), + Vector3(1495.465f, 480.976f, 158.248f), + Vector3(1494.373f, 490.588f, 154.855f), + Vector3(1495.206f, 529.838f, 143.18f), + Vector3(1495.623f, 549.462f, 142.818f), + Vector3(1496.039f, 569.087f, 148.156f), + Vector3(1496.456f, 588.711f, 146.344f), + Vector3(1496.872f, 608.336f, 143.831f), + Vector3(1485.404f, 616.733f, 143.934f), + Vector3(1479.343f, 630.506f, 146.634f), + Vector3(1477.886f, 647.664f, 153.035f), + Vector3(1479.029f, 659.223f, 157.535f), + Vector3(1479.715f, 685.339f, 163.136f), + Vector3(1481.462f, 690.033f, 163.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 293, + false, + List( + Vector3(1488.859f, 696.058f, 163.275f), + Vector3(1518.973f, 696.266f, 172.9f), + Vector3(1534.516f, 696.374f, 177.82f), + Vector3(1551.031f, 696.488f, 182.996f), + Vector3(1569.488f, 696.616f, 183.205f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 294, + false, + List( + Vector3(1598.739f, 695.95f, 183.191f), + Vector3(1647.716f, 694.45f, 198.065f), + Vector3(1649.637f, 694.391f, 198.21f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 295, + false, + List( + Vector3(1686.968f, 669.616f, 208.213f), + Vector3(1686.975f, 675.962f, 207.406f), + Vector3(1686.982f, 682.309f, 203.803f), + Vector3(1686.989f, 688.656f, 203.35f), + Vector3(1686.996f, 695.002f, 200.298f), + Vector3(1687.01f, 707.695f, 198.993f), + Vector3(1687.024f, 720.389f, 199.488f), + Vector3(1687.033f, 728.602f, 199.286f), + Vector3(1687.042f, 736.815f, 199.685f), + Vector3(1687.06f, 753.242f, 202.782f), + Vector3(1687.074f, 766.184f, 198.814f), + Vector3(1687.089f, 779.126f, 195.346f), + Vector3(1687.103f, 792.068f, 190.679f), + Vector3(1687.117f, 805.01f, 187.411f), + Vector3(1687.131f, 817.703f, 186.067f), + Vector3(1687.145f, 830.396f, 188.723f), + Vector3(1687.159f, 843.089f, 192.829f), + Vector3(1687.173f, 855.783f, 192.635f), + Vector3(1687.201f, 880.671f, 188.202f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 296, + false, + List( + Vector3(1688.037f, 913.673f, 188.342f), + Vector3(1688.198f, 936.255f, 196.256f), + Vector3(1688.358f, 958.837f, 203.292f), + Vector3(1688.392f, 963.641f, 203.132f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 297, + false, + List( + Vector3(1719.051f, 955.831f, 203.191f), + Vector3(1719.054f, 966.319f, 206.35f), + Vector3(1719.055f, 971.562f, 206.579f), + Vector3(1719.057f, 976.806f, 208.009f), + Vector3(1719.058f, 983.299f, 206.171f), + Vector3(1719.06f, 989.791f, 203.433f), + Vector3(1719.063f, 1002.776f, 200.158f), + Vector3(1719.066f, 1015.761f, 195.282f), + Vector3(1719.069f, 1028.746f, 191.407f), + Vector3(1719.072f, 1041.48f, 188.344f), + Vector3(1719.075f, 1054.215f, 183.98f), + Vector3(1719.078f, 1066.949f, 179.367f), + Vector3(1719.082f, 1079.684f, 179.353f), + Vector3(1719.088f, 1105.152f, 178.427f), + Vector3(1719.094f, 1130.621f, 186.5f), + Vector3(1719.097f, 1142.107f, 192.315f), + Vector3(1719.1f, 1153.593f, 193.43f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 298, + false, + List( + Vector3(1656.032f, 1221.278f, 193.691f), + Vector3(1655.949f, 1231.25f, 198.116f), + Vector3(1655.816f, 1247.205f, 203.113f), + Vector3(1655.675f, 1264.157f, 199.603f), + Vector3(1655.534f, 1281.109f, 198.191f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 299, + false, + List( + Vector3(1656.205f, 1310.291f, 198.211f), + Vector3(1655.728f, 1334.811f, 204.791f), + Vector3(1655.252f, 1359.33f, 212.888f), + Vector3(1655.215f, 1361.253f, 213.212f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 300, + false, + List( + Vector3(1633.716f, 1367.62f, 213.197f), + Vector3(1617.236f, 1367.789f, 218.096f), + Vector3(1608.997f, 1367.873f, 220.706f), + Vector3(1600.757f, 1367.957f, 222.815f), + Vector3(1576.039f, 1368.209f, 227.236f), + Vector3(1563.679f, 1368.335f, 230.446f), + Vector3(1551.32f, 1368.461f, 234.257f), + Vector3(1535.81f, 1368.619f, 238.516f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 301, + false, + List( + Vector3(1672.725f, 1446.715f, 198.892f), + Vector3(1672.61f, 1454.546f, 202.811f), + Vector3(1672.489f, 1462.867f, 205.662f), + Vector3(1672.368f, 1471.187f, 207.912f), + Vector3(1671.996f, 1496.638f, 209.314f), + Vector3(1671.811f, 1509.364f, 211.814f), + Vector3(1671.625f, 1522.089f, 214.915f), + Vector3(1671.511f, 1529.92f, 215.701f), + Vector3(1671.454f, 1533.836f, 217.794f), + Vector3(1671.396f, 1537.751f, 218.201f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 302, + false, + List( + Vector3(1640.047f, 1548.61f, 223.215f), + Vector3(1640.505f, 1568.514f, 228.292f), + Vector3(1640.734f, 1578.467f, 231.29f), + Vector3(1640.849f, 1583.443f, 232.789f), + Vector3(1640.963f, 1588.419f, 233.205f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 303, + false, + List( + Vector3(1655.87f, 1606.72f, 233.9f), + Vector3(1655.775f, 1612.969f, 237.636f), + Vector3(1655.68f, 1619.217f, 238.471f), + Vector3(1655.586f, 1625.466f, 241.005f), + Vector3(1655.538f, 1628.59f, 242.473f), + Vector3(1655.491f, 1631.714f, 242.94f), + Vector3(1654.961f, 1666.706f, 233.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 304, + false, + List( + Vector3(1719.529f, 1570.549f, 223.18f), + Vector3(1719.582f, 1564.423f, 222.69f), + Vector3(1719.635f, 1558.297f, 220.107f), + Vector3(1719.742f, 1546.046f, 216.741f), + Vector3(1719.796f, 1539.92f, 215.008f), + Vector3(1719.849f, 1533.795f, 213.375f), + Vector3(1719.902f, 1527.669f, 210.492f), + Vector3(1719.956f, 1521.543f, 209.509f), + Vector3(1720.067f, 1508.802f, 209.088f), + Vector3(1720.178f, 1496.061f, 208.668f), + Vector3(1720.289f, 1483.319f, 208.948f), + Vector3(1720.345f, 1476.949f, 212.087f), + Vector3(1720.4f, 1470.578f, 213.127f), + Vector3(1720.618f, 1445.585f, 204.617f), + Vector3(1720.727f, 1433.089f, 201.362f), + Vector3(1720.836f, 1420.593f, 197.307f), + Vector3(1721.037f, 1397.56f, 189.401f), + Vector3(1720.537f, 1386.044f, 186.448f), + Vector3(1721.238f, 1374.528f, 183.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 305, + false, + List( + Vector3(1730.236f, 1367.877f, 183.382f), + Vector3(1738.146f, 1367.813f, 186.517f), + Vector3(1746.057f, 1367.749f, 188.776f), + Vector3(1753.968f, 1367.684f, 191.935f), + Vector3(1757.923f, 1367.652f, 192.915f), + Vector3(1761.878f, 1367.62f, 193.213f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 306, + false, + List( + Vector3(1016.652f, 498.995f, 183.171f), + Vector3(1016.125f, 474.041f, 183.533f), + Vector3(1015.597f, 449.088f, 184.801f), + Vector3(1015.412f, 440.354f, 185.924f), + Vector3(1015.319f, 435.987f, 186.986f), + Vector3(1015.227f, 431.62f, 188.148f), + Vector3(1015.042f, 422.887f, 188.222f), + Vector3(1014.857f, 414.153f, 188.201f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 307, + false, + List( + Vector3(1008.883f, 408.224f, 188.2f), + Vector3(1000.386f, 407.959f, 190.022f), + Vector3(996.138f, 407.826f, 192.386f), + Vector3(991.89f, 407.693f, 192.949f), + Vector3(983.394f, 407.428f, 189.721f), + Vector3(974.897f, 407.163f, 188.19f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(308, false, List(Vector3(820.337f, 246.805f, 153.19f), Vector3(778.421f, 249.491f, 153.23f))) + ) + ZipLinePaths( + new ZipLinePath( + 309, + false, + List( + Vector3(602.831f, 599.918f, 183.211f), + Vector3(583.872f, 600.199f, 183.368f), + Vector3(564.912f, 600.48f, 183.224f), + Vector3(548.947f, 600.716f, 183.228f), + Vector3(543.957f, 600.79f, 183.153f), + Vector3(534.977f, 600.923f, 179.827f), + Vector3(525.996f, 601.056f, 178.201f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 310, + false, + List( + Vector3(519.788f, 612.558f, 178.21f), + Vector3(519.461f, 663.555f, 178.948f), + Vector3(519.192f, 705.553f, 178.19f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 311, + false, + List( + Vector3(472.031f, 737.508f, 183.333f), + Vector3(471.882f, 749.709f, 187.618f), + Vector3(471.732f, 761.909f, 191.228f), + Vector3(471.583f, 774.11f, 194.637f), + Vector3(471.508f, 780.21f, 197.142f), + Vector3(471.433f, 786.31f, 199.247f), + Vector3(471.337f, 794.205f, 201.757f), + Vector3(471.24f, 802.099f, 203.866f), + Vector3(471.143f, 809.994f, 206.576f), + Vector3(471.095f, 813.941f, 207.731f), + Vector3(471.047f, 817.888f, 208.213f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(312, false, List(Vector3(425.006f, 836.2f, 203.19f), Vector3(423.432f, 799.231f, 203.17f))) + ) + ZipLinePaths( + new ZipLinePath( + 313, + false, + List( + Vector3(403.332f, 807.446f, 203.211f), + Vector3(391.598f, 808.338f, 205.995f), + Vector3(385.732f, 808.784f, 207.642f), + Vector3(379.865f, 809.23f, 208.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 314, + false, + List( + Vector3(375.366f, 818.172f, 208.35f), + Vector3(375.41f, 825.167f, 210.7f), + Vector3(375.432f, 828.665f, 212.023f), + Vector3(375.453f, 832.163f, 212.946f), + Vector3(375.534f, 845.155f, 209.365f), + Vector3(375.575f, 851.651f, 207.075f), + Vector3(375.595f, 854.899f, 205.429f), + Vector3(375.615f, 858.147f, 204.184f), + Vector3(375.696f, 871.139f, 201.003f), + Vector3(375.737f, 877.635f, 198.812f), + Vector3(375.777f, 884.131f, 196.821f), + Vector3(375.857f, 896.874f, 193.848f), + Vector3(375.896f, 903.245f, 194.162f), + Vector3(375.936f, 909.616f, 197.576f), + Vector3(376.015f, 922.358f, 200.253f), + Vector3(376.055f, 928.729f, 203.591f), + Vector3(376.095f, 935.1f, 200.33f), + Vector3(376.174f, 947.842f, 199.057f), + Vector3(376.253f, 960.585f, 203.184f), + Vector3(376.293f, 966.956f, 200.597f), + Vector3(376.333f, 973.327f, 198.811f), + Vector3(376.372f, 979.698f, 196.824f), + Vector3(376.412f, 986.069f, 194.438f), + Vector3(376.571f, 1011.554f, 188.192f), + Vector3(376.65f, 1024.296f, 183.869f), + Vector3(376.69f, 1030.667f, 184.707f), + Vector3(376.73f, 1037.038f, 187.346f), + Vector3(376.809f, 1049.78f, 190.673f), + Vector3(376.849f, 1056.151f, 192.937f), + Vector3(376.888f, 1062.522f, 191f), + Vector3(376.968f, 1075.265f, 188.627f), + Vector3(377.007f, 1081.636f, 188.441f), + Vector3(377.047f, 1088.007f, 189.654f), + Vector3(377.102f, 1096.751f, 189.666f), + Vector3(377.156f, 1105.496f, 193.877f), + Vector3(377.211f, 1114.241f, 196.188f), + Vector3(377.238f, 1118.613f, 197.944f), + Vector3(377.265f, 1122.985f, 198.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 315, + false, + List( + Vector3(455.425f, 1085.946f, 183.201f), + Vector3(455.374f, 1103.412f, 183.805f), + Vector3(455.348f, 1112.145f, 184.956f), + Vector3(455.335f, 1116.511f, 187.332f), + Vector3(455.322f, 1120.878f, 187.907f), + Vector3(455.303f, 1127.365f, 185.035f), + Vector3(455.283f, 1133.852f, 183.163f), + Vector3(455.264f, 1140.339f, 181.641f), + Vector3(455.245f, 1146.827f, 179.519f), + Vector3(455.206f, 1159.801f, 175.424f), + Vector3(455.187f, 1166.289f, 173.577f), + Vector3(455.178f, 1169.532f, 172.454f), + Vector3(455.168f, 1172.776f, 170.93f), + Vector3(455.13f, 1185.501f, 169.651f), + Vector3(455.092f, 1198.226f, 172.572f), + Vector3(455.055f, 1210.951f, 175.993f), + Vector3(455.036f, 1217.314f, 178.504f), + Vector3(455.017f, 1223.676f, 175.614f), + Vector3(454.981f, 1235.653f, 173.357f), + Vector3(454.946f, 1247.63f, 173.201f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 316, + false, + List( + Vector3(455.962f, 1404.88f, 173.49f), + Vector3(456.291f, 1455.873f, 174.03f), + Vector3(456.406f, 1473.871f, 173.19f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 317, + false, + List( + Vector3(464.578f, 1481.471f, 173.26f), + Vector3(476.106f, 1480.883f, 176.977f), + Vector3(487.635f, 1480.296f, 179.811f), + Vector3(499.164f, 1479.708f, 184.144f), + Vector3(504.928f, 1479.415f, 185.911f), + Vector3(510.692f, 1479.121f, 187.478f), + Vector3(515.496f, 1478.876f, 188.22f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(318, false, List(Vector3(535.622f, 1469.87f, 188.21f), Vector3(536.963f, 1506.843f, 188.2f))) + ) + ZipLinePaths( + new ZipLinePath( + 319, + false, + List( + Vector3(552.012f, 1520.061f, 188.233f), + Vector3(551.63f, 1532.271f, 191.871f), + Vector3(551.247f, 1544.48f, 195.432f), + Vector3(550.864f, 1556.69f, 199.294f), + Vector3(550.481f, 1568.9f, 203.555f), + Vector3(549.955f, 1585.659f, 208.167f), + Vector3(549.693f, 1594.038f, 210.873f), + Vector3(549.561f, 1598.228f, 212.426f), + Vector3(549.43f, 1602.418f, 213.302f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 320, + false, + List( + Vector3(526.961f, 1655.74f, 218.191f), + Vector3(535.944f, 1655.735f, 220.4f), + Vector3(540.436f, 1655.733f, 222.153f), + Vector3(544.928f, 1655.731f, 222.706f), + Vector3(557.904f, 1655.724f, 218.829f), + Vector3(564.392f, 1655.721f, 216.49f), + Vector3(570.88f, 1655.718f, 213.951f), + Vector3(577.368f, 1655.715f, 212.562f), + Vector3(583.856f, 1655.712f, 209.773f), + Vector3(590.344f, 1655.708f, 208.685f), + Vector3(596.833f, 1655.705f, 206.196f), + Vector3(609.559f, 1655.699f, 203.883f), + Vector3(622.286f, 1655.693f, 207.571f), + Vector3(635.013f, 1655.687f, 210.658f), + Vector3(641.376f, 1655.683f, 213.602f), + Vector3(647.739f, 1655.68f, 210.145f), + Vector3(660.466f, 1655.674f, 209.683f), + Vector3(673.193f, 1655.668f, 213.02f), + Vector3(685.919f, 1655.662f, 208.857f), + Vector3(692.282f, 1655.659f, 206.376f), + Vector3(698.646f, 1655.656f, 204.295f), + Vector3(724.099f, 1655.643f, 197.37f), + Vector3(736.826f, 1655.637f, 192.907f), + Vector3(743.189f, 1655.634f, 194.476f), + Vector3(746.371f, 1655.632f, 195.46f), + Vector3(749.552f, 1655.631f, 197.444f), + Vector3(760.033f, 1655.625f, 201.298f), + Vector3(765.274f, 1655.623f, 202.825f), + Vector3(770.514f, 1655.62f, 203.251f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(321, false, List(Vector3(775.514f, 1789.676f, 203.21f), Vector3(773.658f, 1826.626f, 203.28f))) + ) + ZipLinePaths( + new ZipLinePath( + 322, + false, + List( + Vector3(762.949f, 1831.455f, 203.699f), + Vector3(756.071f, 1831.531f, 207.345f), + Vector3(749.193f, 1831.606f, 208.523f), + Vector3(742.315f, 1831.681f, 211.4f), + Vector3(735.437f, 1831.756f, 213.21f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 323, + false, + List( + Vector3(728.262f, 1843.892f, 213.507f), + Vector3(728.366f, 1851.282f, 216.603f), + Vector3(728.47f, 1858.671f, 219.027f), + Vector3(728.574f, 1866.061f, 221.652f), + Vector3(728.626f, 1869.755f, 222.564f), + Vector3(728.678f, 1873.45f, 223.206f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 324, + false, + List( + Vector3(744.063f, 1895.348f, 224.013f), + Vector3(744.108f, 1899.326f, 226.214f), + Vector3(744.152f, 1903.304f, 228.118f), + Vector3(744.332f, 1919.216f, 232.914f), + Vector3(744.416f, 1926.674f, 230.973f), + Vector3(744.501f, 1934.133f, 228.333f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 325, + false, + List( + Vector3(759.746f, 1953.04f, 228.29f), + Vector3(759.606f, 1959.903f, 230.621f), + Vector3(759.466f, 1966.767f, 233.066f), + Vector3(759.145f, 1982.454f, 237.818f), + Vector3(758.765f, 2001.083f, 238.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 326, + false, + List( + Vector3(752.948f, 2008.381f, 238.187f), + Vector3(748.352f, 2008.585f, 237.325f), + Vector3(743.756f, 2008.789f, 235.782f), + Vector3(734.565f, 2009.198f, 232.696f), + Vector3(716.182f, 2010.014f, 228.238f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 327, + false, + List( + Vector3(712.171f, 2021.266f, 228.702f), + Vector3(712.396f, 2027.728f, 231.262f), + Vector3(712.622f, 2034.19f, 233.942f), + Vector3(713.072f, 2047.113f, 237.902f), + Vector3(713.606f, 2062.429f, 242.555f), + Vector3(713.807f, 2068.173f, 243.244f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 328, + false, + List( + Vector3(728.179f, 2083.034f, 243.41f), + Vector3(728.087f, 2090.282f, 246.073f), + Vector3(727.996f, 2097.53f, 248.433f), + Vector3(727.904f, 2104.778f, 251.193f), + Vector3(727.813f, 2112.027f, 252.954f), + Vector3(727.629f, 2126.523f, 248.528f), + Vector3(727.446f, 2141.02f, 243.4f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 329, + false, + List( + Vector3(779.821f, 1928.877f, 228.19f), + Vector3(797.77f, 1928.144f, 232.516f), + Vector3(806.745f, 1927.778f, 234.128f), + Vector3(815.719f, 1927.411f, 237.94f), + Vector3(830.718f, 1927.263f, 233.5f), + Vector3(845.717f, 1927.115f, 228.36f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 330, + false, + List( + Vector3(862.363f, 1910.578f, 228.233f), + Vector3(868.217f, 1910.713f, 227.056f), + Vector3(874.07f, 1910.849f, 224.805f), + Vector3(885.776f, 1911.119f, 221.102f), + Vector3(897.483f, 1911.39f, 217.6f), + Vector3(909.189f, 1911.661f, 213.425f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 331, + false, + List( + Vector3(919.883f, 1905.153f, 213.195f), + Vector3(920.13f, 1897.232f, 215.577f), + Vector3(920.376f, 1889.31f, 217.866f), + Vector3(920.962f, 1870.495f, 218.194f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 332, + false, + List( + Vector3(945.907f, 1864.106f, 223.179f), + Vector3(970.945f, 1864.053f, 226.924f), + Vector3(983.464f, 1864.026f, 229.45f), + Vector3(989.723f, 1864.013f, 232.112f), + Vector3(995.983f, 1864f, 233.575f), + Vector3(1006.783f, 1863.977f, 237.691f), + Vector3(1022.493f, 1863.944f, 238.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 333, + false, + List( + Vector3(1101.254f, 2039.38f, 243.191f), + Vector3(1088.795f, 2039.644f, 243.592f), + Vector3(1076.336f, 2039.908f, 244.899f), + Vector3(1051.419f, 2040.436f, 243.312f), + Vector3(1043.445f, 2040.605f, 246.791f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(334, false, List(Vector3(1032.137f, 2050.7f, 248.19f), Vector3(1031.324f, 2093.69f, 248.19f))) + ) + ZipLinePaths( + new ZipLinePath( + 335, + false, + List( + Vector3(1024.946f, 2103.952f, 248.184f), + Vector3(1021.128f, 2104.082f, 247.235f), + Vector3(1017.31f, 2104.212f, 245.011f), + Vector3(1009.674f, 2104.472f, 243.564f), + Vector3(1002.038f, 2104.732f, 240.916f), + Vector3(994.403f, 2104.991f, 238.396f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 336, + false, + List( + Vector3(984.665f, 2115.902f, 238.498f), + Vector3(984.551f, 2126.835f, 242.852f), + Vector3(984.437f, 2137.768f, 245.33f), + Vector3(984.322f, 2148.701f, 249.808f), + Vector3(984.208f, 2159.634f, 253.219f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 337, + false, + List( + Vector3(1000.114f, 2181.035f, 253.65f), + Vector3(999.982f, 2187.783f, 256.05f), + Vector3(999.916f, 2191.157f, 257.701f), + Vector3(999.85f, 2194.532f, 258.351f), + Vector3(999.717f, 2201.28f, 260.952f), + Vector3(999.585f, 2208.029f, 262.753f), + Vector3(999.252f, 2225.024f, 257.521f), + Vector3(998.919f, 2242.02f, 253.19f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 338, + false, + List( + Vector3(975.39f, 2247.937f, 253.194f), + Vector3(927.624f, 2248.853f, 239.174f), + Vector3(912.339f, 2249.146f, 233.254f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 339, + false, + List( + Vector3(984.178f, 2266.025f, 248.795f), + Vector3(984.368f, 2284.326f, 246.192f), + Vector3(984.558f, 2302.628f, 243.196f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 340, + false, + List( + Vector3(1022.727f, 2168.098f, 248.291f), + Vector3(1029.089f, 2168.073f, 246.96f), + Vector3(1035.452f, 2168.049f, 244.927f), + Vector3(1041.814f, 2168.024f, 242.894f), + Vector3(1044.996f, 2168.011f, 241.278f), + Vector3(1048.177f, 2167.999f, 240.262f), + Vector3(1060.902f, 2167.949f, 238.496f), + Vector3(1073.627f, 2167.899f, 238.731f), + Vector3(1089.097f, 2167.839f, 238.904f), + Vector3(1096.832f, 2167.808f, 239.591f), + Vector3(1100.699f, 2167.793f, 242.334f), + Vector3(1104.567f, 2167.778f, 243.181f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(341, false, List(Vector3(1111.952f, 2156.833f, 243.2f), Vector3(1112.678f, 2115.833f, 243.24f))) + ) + ZipLinePaths( + new ZipLinePath( + 342, + false, + List( + Vector3(1120.083f, 2103.886f, 243.225f), + Vector3(1131.271f, 2103.613f, 239.605f), + Vector3(1142.459f, 2103.341f, 235.91f), + Vector3(1153.647f, 2103.068f, 232.514f), + Vector3(1164.834f, 2102.796f, 228.445f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 343, + false, + List( + Vector3(1182.14f, 2087.616f, 228.225f), + Vector3(1187.861f, 2087.641f, 227.269f), + Vector3(1193.582f, 2087.666f, 224.633f), + Vector3(1205.024f, 2087.716f, 221.561f), + Vector3(1216.466f, 2087.766f, 217.889f), + Vector3(1227.908f, 2087.816f, 213.546f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 344, + false, + List( + Vector3(1246.648f, 2072.441f, 213.193f), + Vector3(1252.75f, 2072.281f, 212.004f), + Vector3(1258.853f, 2072.121f, 208.938f), + Vector3(1271.058f, 2071.8f, 206.006f), + Vector3(1295.469f, 2071.159f, 198.263f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 345, + false, + List( + Vector3(1308.848f, 2041.255f, 198.2f), + Vector3(1321.595f, 2041.049f, 197.872f), + Vector3(1327.969f, 2040.946f, 197.56f), + Vector3(1334.342f, 2040.844f, 196.647f), + Vector3(1347.089f, 2040.638f, 191.921f), + Vector3(1353.462f, 2040.535f, 189.358f), + Vector3(1356.649f, 2040.484f, 188.676f), + Vector3(1359.836f, 2040.433f, 187.995f), + Vector3(1377.332f, 2040.151f, 193.147f), + Vector3(1386.079f, 2040.01f, 195.923f), + Vector3(1390.453f, 2039.939f, 197.511f), + Vector3(1394.827f, 2039.869f, 198.4f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 346, + false, + List( + Vector3(1416.676f, 1890.96f, 218.215f), + Vector3(1416.322f, 1856.951f, 227.305f), + Vector3(1415.825f, 1809.339f, 238.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 347, + false, + List( + Vector3(1447.552f, 1891.489f, 218.239f), + Vector3(1447.824f, 1882.556f, 219.813f), + Vector3(1448.097f, 1873.623f, 222.71f), + Vector3(1448.369f, 1864.691f, 224.806f), + Vector3(1448.505f, 1860.224f, 226.654f), + Vector3(1448.641f, 1855.758f, 228.22f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 348, + false, + List( + Vector3(1603.929f, 1672.213f, 223.508f), + Vector3(1609.247f, 1672.265f, 225.317f), + Vector3(1614.566f, 1672.316f, 227.644f), + Vector3(1622.784f, 1672.396f, 229.569f), + Vector3(1631.003f, 1672.476f, 232.694f), + Vector3(1639.705f, 1672.561f, 233.209f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 349, + false, + List( + Vector3(1071.874f, 217.362f, 143.135f), + Vector3(1075.187f, 246.758f, 149.615f), + Vector3(1075.001f, 273.955f, 160.196f), + Vector3(1074.433f, 288.103f, 163.436f), + Vector3(1080.365f, 302.251f, 163.976f), + Vector3(1087.747f, 316.399f, 164.267f), + Vector3(1095.129f, 330.547f, 163.857f), + Vector3(1108.319f, 358.364f, 163.255f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 350, + false, + List( + Vector3(1126.922f, 406.781f, 163.147f), + Vector3(1139.227f, 412.457f, 164.141f), + Vector3(1151.532f, 418.033f, 166.046f), + Vector3(1176.141f, 428.985f, 165.457f), + Vector3(1200.551f, 434.386f, 171.439f), + Vector3(1225.361f, 436.388f, 178.422f), + Vector3(1237.425f, 437.112f, 181.369f), + Vector3(1243.456f, 435.273f, 182.842f), + Vector3(1249.488f, 433.435f, 183.226f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 351, + false, + List( + Vector3(976.744f, 153.992f, 143.01f), + Vector3(977.459f, 161.322f, 145.813f), + Vector3(978.274f, 170.653f, 149.022f), + Vector3(979.304f, 188.314f, 155.14f), + Vector3(979.884f, 204.475f, 160.058f), + Vector3(978.564f, 220.836f, 163.776f), + Vector3(968.873f, 240.673f, 164.006f), + Vector3(962.182f, 252.51f, 163.15f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 352, + false, + List( + Vector3(915.3f, 242.709f, 163.14f), + Vector3(892.78f, 254.164f, 163.864f), + Vector3(873.959f, 264.419f, 164.493f), + Vector3(865.454f, 268.224f, 164.699f), + Vector3(857.047f, 272.332f, 163.967f), + Vector3(847.54f, 273.24f, 163.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 353, + false, + List( + Vector3(850.016f, 313.937f, 163.154f), + Vector3(851.875f, 330.642f, 168.036f), + Vector3(852.733f, 347.447f, 173.436f), + Vector3(853.391f, 364.052f, 178.236f), + Vector3(851.92f, 372.405f, 181.236f), + Vector3(850.449f, 380.757f, 184.236f), + Vector3(849.903f, 383.662f, 184.826f), + Vector3(857.763f, 404.967f, 185.414f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 354, + false, + List( + Vector3(999.272f, 110.243f, 143.14f), + Vector3(975.32f, 109.409f, 144.463f), + Vector3(951.369f, 108.976f, 146.491f), + Vector3(903.465f, 109.909f, 148.29f), + Vector3(865.142f, 109.176f, 147.437f), + Vector3(840.712f, 115.986f, 146.736f), + Vector3(816.281f, 153.796f, 145.236f), + Vector3(813.449f, 162.943f, 143.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 355, + false, + List( + Vector3(793.348f, 215.24f, 143.142f), + Vector3(777.178f, 222.349f, 144.83f), + Vector3(761.408f, 229.859f, 146.825f), + Vector3(724.868f, 249.478f, 148.414f), + Vector3(719.867f, 278.066f, 153.799f), + Vector3(720.665f, 306.654f, 161.784f), + Vector3(713.164f, 336.042f, 165.268f), + Vector3(702.462f, 363.83f, 166.353f), + Vector3(686.882f, 389.303f, 163.142f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 356, + false, + List( + Vector3(633.169f, 397.14f, 163.143f), + Vector3(605.993f, 410.372f, 164.411f), + Vector3(596.218f, 423.604f, 166.187f), + Vector3(589.968f, 447.667f, 168.938f), + Vector3(587.268f, 478.38f, 175.401f), + Vector3(588.968f, 509.092f, 184.464f), + Vector3(610.595f, 560.61f, 185.838f), + Vector3(618.614f, 568.535f, 183.144f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 357, + false, + List( + Vector3(313.406f, 1229.852f, 173.13f), + Vector3(338.439f, 1227.908f, 176.796f), + Vector3(363.471f, 1226.764f, 177.758f), + Vector3(388.503f, 1228.12f, 176.69f), + Vector3(413.535f, 1242.276f, 174.422f), + Vector3(421.225f, 1250.419f, 172.87f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 358, + false, + List( + Vector3(400.806f, 1286.539f, 173.14f), + Vector3(413.261f, 1315.389f, 174.687f), + Vector3(421.717f, 1331.039f, 175.139f), + Vector3(436.173f, 1358.29f, 175.966f), + Vector3(445.129f, 1375.54f, 174.192f), + Vector3(455.025f, 1383.393f, 173.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 359, + false, + List( + Vector3(473.924f, 1357.231f, 173.255f), + Vector3(489.493f, 1355.978f, 176.417f), + Vector3(532.11f, 1359.281f, 191.664f), + Vector3(542.667f, 1357.76f, 193.221f), + Vector3(553.225f, 1354.44f, 192.978f), + Vector3(574.341f, 1331.2f, 190.491f), + Vector3(583.726f, 1319.583f, 188.213f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 360, + false, + List( + Vector3(871.063f, 2357.891f, 243.25f), + Vector3(853.39f, 2351.203f, 243.371f), + Vector3(835.717f, 2344.015f, 244.193f), + Vector3(818.045f, 2334.977f, 244.692f), + Vector3(800.372f, 2322.739f, 244.992f), + Vector3(762.899f, 2305.651f, 245.891f), + Vector3(750.563f, 2278.707f, 247.14f), + Vector3(738.626f, 2252.763f, 246.19f), + Vector3(729.181f, 2236.187f, 245.188f), + Vector3(716.957f, 2203.652f, 243.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 361, + false, + List( + Vector3(701.114f, 2159.581f, 243.13f), + Vector3(676.278f, 2156.712f, 244.456f), + Vector3(651.441f, 2155.243f, 245.482f), + Vector3(640.513f, 2155.181f, 246.605f), + Vector3(636.319f, 2153.866f, 245.631f), + Vector3(631.572f, 2151.549f, 243.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 362, + false, + List( + Vector3(584.654f, 2136.17f, 243.142f), + Vector3(559.91f, 2085.271f, 246.047f), + Vector3(556.012f, 2018.31f, 227.197f), + Vector3(568.313f, 1984.829f, 224.771f), + Vector3(591.013f, 1968.089f, 223.959f), + Vector3(614.664f, 1963.118f, 224.002f), + Vector3(621.714f, 1951.348f, 224.446f), + Vector3(630.106f, 1927.935f, 225.697f), + Vector3(641.698f, 1904.522f, 226.547f), + Vector3(649.245f, 1892.815f, 226.173f), + Vector3(652.218f, 1886.962f, 226.285f), + Vector3(651.491f, 1881.109f, 223.798f), + Vector3(651.087f, 1869.402f, 219.423f), + Vector3(650.683f, 1857.696f, 214.849f), + Vector3(652.529f, 1819.989f, 205.924f), + Vector3(675.576f, 1782.283f, 205.199f), + Vector3(688.468f, 1776.87f, 204.45f), + Vector3(702.021f, 1773.798f, 203.849f), + Vector3(712.174f, 1769.926f, 203.252f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 363, + false, + List( + Vector3(759.295f, 1749.047f, 203.14f), + Vector3(776.975f, 1744.772f, 203.259f), + Vector3(785.816f, 1743.035f, 203.971f), + Vector3(794.656f, 1739.297f, 204.483f), + Vector3(805.403f, 1727.828f, 204.759f), + Vector3(810.777f, 1721.494f, 204.497f), + Vector3(813.463f, 1716.927f, 204.166f), + Vector3(817.55f, 1700.759f, 203.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 364, + false, + List( + Vector3(1058.578f, 2320.326f, 243.13f), + Vector3(1109.572f, 2319.579f, 243.885f), + Vector3(1124.57f, 2319.359f, 243.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 365, + false, + List( + Vector3(1126.83f, 2280.158f, 243.14f), + Vector3(1142.435f, 2272.359f, 243.249f), + Vector3(1177.84f, 2255.76f, 244.063f), + Vector3(1230.451f, 2249.961f, 244.046f), + Vector3(1248.101f, 2256.233f, 243.07f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 366, + false, + List( + Vector3(1255.276f, 2294.393f, 243.146f), + Vector3(1284.893f, 2309.059f, 243.882f), + Vector3(1314.511f, 2323.526f, 244.528f), + Vector3(1339.759f, 2322.607f, 237.148f), + Vector3(1365.007f, 2322.287f, 226.969f), + Vector3(1384.228f, 2320.903f, 223.146f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 367, + false, + List( + Vector3(1386.825f, 2264.216f, 223.08f), + Vector3(1364.395f, 2219.526f, 223.891f), + Vector3(1361.703f, 2214.163f, 223.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 368, + false, + List( + Vector3(1422.85f, 2276.601f, 223.14f), + Vector3(1446.379f, 2234.273f, 223.892f), + Vector3(1456.732f, 2213.056f, 223.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 369, + false, + List( + Vector3(1482.817f, 2150.7f, 223.14f), + Vector3(1506.01f, 2103.6f, 224.078f), + Vector3(1517.143f, 2085.137f, 223.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 370, + false, + List( + Vector3(1552.37f, 2085.239f, 223.14f), + Vector3(1552.544f, 2060.239f, 222.477f), + Vector3(1552.718f, 2035.239f, 215.118f), + Vector3(1553.066f, 1985.239f, 211.542f), + Vector3(1553.414f, 1935.239f, 215.167f), + Vector3(1553.762f, 1885.239f, 223.991f), + Vector3(1553.776f, 1883.239f, 223.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 371, + false, + List( + Vector3(1579.071f, 1833.389f, 223.14f), + Vector3(1580.239f, 1824.555f, 225.36f), + Vector3(1580.081f, 1813.472f, 226.39f), + Vector3(1579.087f, 1755.799f, 227.67f), + Vector3(1551.894f, 1698.526f, 228.35f), + Vector3(1553.643f, 1647.741f, 225.947f), + Vector3(1552.481f, 1638.816f, 223.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 372, + false, + List( + Vector3(1584.84f, 1635.059f, 223.149f), + Vector3(1585.738f, 1620.366f, 222.776f), + Vector3(1586.635f, 1605.673f, 221.317f), + Vector3(1588.031f, 1586.286f, 213.2f), + Vector3(1587.426f, 1561.899f, 209.055f), + Vector3(1582.821f, 1537.513f, 204.31f), + Vector3(1576.281f, 1510.2f, 198.51f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 373, + false, + List( + Vector3(1394.807f, 2214.354f, 223.156f), + Vector3(1395.435f, 2200.517f, 223.103f), + Vector3(1396.064f, 2191.081f, 221.372f), + Vector3(1396.734f, 2141.625f, 206.591f), + Vector3(1399.101f, 2134.836f, 203.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 374, + false, + List( + Vector3(1420.624f, 2088.402f, 203.14f), + Vector3(1421.17f, 2063.451f, 204.095f), + Vector3(1420.516f, 2038.501f, 207.355f), + Vector3(1420.06f, 2016.546f, 205.797f), + Vector3(1415.199f, 2006.567f, 203.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 375, + false, + List( + Vector3(1498.604f, 1508.597f, 196.804f), + Vector3(1460.323f, 1489.823f, 223.692f), + Vector3(1422.042f, 1471.048f, 249.813f), + Vector3(1409.026f, 1463.665f, 260.349f), + Vector3(1395.211f, 1458.682f, 265.003f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 376, + false, + List( + Vector3(1864.299f, 1327.779f, 193.14f), + Vector3(1814.317f, 1329.165f, 193.957f), + Vector3(1787.327f, 1329.913f, 193.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 377, + false, + List( + Vector3(1782.437f, 1289.688f, 193.25f), + Vector3(1775.027f, 1268.099f, 194.165f), + Vector3(1757.218f, 1234.911f, 194.182f), + Vector3(1744.608f, 1210.523f, 194.478f), + Vector3(1735.598f, 1183.335f, 194.174f), + Vector3(1714.544f, 1169.712f, 193.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 378, + false, + List( + Vector3(1685.673f, 1202.774f, 193.14f), + Vector3(1635.673f, 1202.42f, 194.176f), + Vector3(1623.673f, 1202.335f, 193.43f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 379, + false, + List( + Vector3(589.162f, 1287.888f, 187.36f), + Vector3(606.508f, 1241.031f, 190.011f), + Vector3(623.855f, 1194.175f, 191.917f), + Vector3(641.201f, 1147.318f, 193.824f), + Vector3(652.649f, 1116.393f, 194.39f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 380, + false, + List( + Vector3(654.164f, 891.092f, 187.24f), + Vector3(646.279f, 841.718f, 192.507f), + Vector3(638.393f, 792.343f, 194.029f), + Vector3(630.507f, 742.969f, 193.551f), + Vector3(622.621f, 693.595f, 191.074f), + Vector3(618.205f, 665.945f, 185.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 381, + false, + List( + Vector3(761.584f, 541.531f, 187.14f), + Vector3(779.403f, 494.815f, 194.028f), + Vector3(797.222f, 448.099f, 193.57f), + Vector3(810.765f, 412.594f, 186.55f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 382, + false, + List( + Vector3(1222.018f, 631.67f, 196.892f), + Vector3(1232.851f, 583.016f, 193.697f), + Vector3(1243.685f, 534.361f, 189.756f), + Vector3(1254.519f, 485.708f, 185.815f), + Vector3(1260.369f, 459.436f, 182.691f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 383, + false, + List( + Vector3(1271.689f, 782.181f, 274.208f), + Vector3(1277.334f, 762.195f, 272.418f), + Vector3(1282.98f, 742.209f, 247.122f), + Vector3(1294.272f, 702.237f, 219.284f), + Vector3(1301.047f, 678.254f, 201.102f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 384, + false, + List( + Vector3(1368.124f, 1341.561f, 296.172f), + Vector3(1364.566f, 1365.321f, 292.123f), + Vector3(1361.008f, 1389.081f, 279.805f), + Vector3(1353.892f, 1436.601f, 262.712f), + Vector3(1353.334f, 1440.328f, 259.543f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 385, + false, + List(Vector3(1348.286f, 1441.756f, 259.543f), Vector3(1314.196f, 1425.256f, 255.043f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 386, + false, + List( + Vector3(1060.551f, 1605.738f, 278.033f), + Vector3(1107.398f, 1625.112f, 273.261f), + Vector3(1154.246f, 1644.486f, 267.73f), + Vector3(1157.001f, 1645.625f, 265.434f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 387, + false, + List( + Vector3(954.548f, 1391.85f, 224.246f), + Vector3(946.487f, 1390.942f, 233.408f), + Vector3(938.426f, 1390.034f, 234.764f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 388, + false, + List( + Vector3(916.348f, 1384.567f, 234.767f), + Vector3(930.496f, 1358.334f, 275.657f), + Vector3(937.57f, 1345.218f, 311.353f), + Vector3(944.644f, 1332.101f, 315.548f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 389, + false, + List( + Vector3(1366.672f, 1311.332f, 296.193f), + Vector3(1355.793f, 1291.42f, 291.968f), + Vector3(1344.913f, 1271.507f, 275.896f), + Vector3(1323.154f, 1231.682f, 254.893f), + Vector3(1301.395f, 1191.856f, 233.891f), + Vector3(1294.367f, 1178.408f, 225.36f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 390, + false, + List( + Vector3(783.039f, 1209.045f, 217.8f), + Vector3(757.026f, 1252.86f, 216.442f), + Vector3(731.012f, 1296.676f, 214.34f), + Vector3(718.26f, 1318.154f, 212.49f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(391, true, List(Vector3(1374.548f, 1288.463f, 211.2f), Vector3(1373.826f, 1281.376f, 224.2f))) + ) + ZipLinePaths( + new ZipLinePath( + 392, + false, + List( + Vector3(1026.257f, 843.695f, 185.942f), + Vector3(1028.149f, 852.608f, 195.5f), + Vector3(1028.419f, 856.395f, 196.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 393, + false, + List( + Vector3(1166.499f, 889.383f, 196.147f), + Vector3(1172.461f, 895.042f, 211.579f), + Vector3(1176.159f, 898.61f, 211.891f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 394, + false, + List( + Vector3(1118.547f, 990.403f, 204.698f), + Vector3(1121.775f, 995.338f, 211.55f), + Vector3(1124.542f, 999.568f, 212.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 395, + false, + List( + Vector3(1205.96f, 995.02f, 212.6f), + Vector3(1238.316f, 1003.723f, 250.267f), + Vector3(1243.219f, 1000.629f, 251.421f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 396, + false, + List( + Vector3(1238.847f, 1034.95f, 254.212f), + Vector3(1226.866f, 990.364f, 274.176f), + Vector3(1214.885f, 945.778f, 294.579f), + Vector3(1212.968f, 938.644f, 296.041f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 397, + false, + List( + Vector3(1218.983f, 891.836f, 296.012f), + Vector3(1238.388f, 846.056f, 285.407f), + Vector3(1255.51f, 805.662f, 274.234f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 398, + false, + List( + Vector3(1291.711f, 807.736f, 274.383f), + Vector3(1321.944f, 844.617f, 254.485f), + Vector3(1351.777f, 880.498f, 233.914f), + Vector3(1377.191f, 907.137f, 212.703f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 399, + false, + List( + Vector3(1406.765f, 919.786f, 212.679f), + Vector3(1407.449f, 916.317f, 212.18f), + Vector3(1411.14f, 901.425f, 185.702f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 400, + false, + List( + Vector3(1331.335f, 910.391f, 212.572f), + Vector3(1331.967f, 904.956f, 212.32f), + Vector3(1337.491f, 876.897f, 193.028f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 401, + false, + List( + Vector3(1257.393f, 959.594f, 213.244f), + Vector3(1257.67f, 955.326f, 212.8f), + Vector3(1258.499f, 948.124f, 195.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 402, + false, + List( + Vector3(1241.54f, 848.057f, 211.951f), + Vector3(1238.514f, 847.292f, 211.5f), + Vector3(1224.848f, 843.823f, 185.972f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 403, + false, + List( + Vector3(996.539f, 837.803f, 195.145f), + Vector3(996.865f, 833.708f, 194.678f), + Vector3(997.015f, 825.448f, 185.844f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 404, + false, + List( + Vector3(872.179f, 908.625f, 208.904f), + Vector3(873.49f, 904.836f, 208.601f), + Vector3(887.154f, 880.725f, 197.6f), + Vector3(893.144f, 869.566f, 187.283f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 405, + false, + List( + Vector3(747.407f, 1402.556f, 204.704f), + Vector3(755.396f, 1401.347f, 213.3f), + Vector3(758.872f, 1401.143f, 213.347f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 406, + false, + List( + Vector3(750.093f, 1561.501f, 212.656f), + Vector3(753.513f, 1564.077f, 212.532f), + Vector3(758.477f, 1569.104f, 200.151f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 407, + false, + List( + Vector3(946.019f, 1502.417f, 212.646f), + Vector3(945.91f, 1506.223f, 212.4f), + Vector3(945.729f, 1510.968f, 197.607f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 408, + false, + List( + Vector3(973.283f, 1524.192f, 226.152f), + Vector3(971.004f, 1527.568f, 225.9f), + Vector3(966.521f, 1539.625f, 197.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 409, + false, + List( + Vector3(1016.489f, 1476.031f, 201.447f), + Vector3(1012.699f, 1481.305f, 225.545f), + Vector3(1010.752f, 1483.124f, 226.146f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 410, + false, + List( + Vector3(1075.853f, 1401.411f, 225.686f), + Vector3(1072.731f, 1402.664f, 225.274f), + Vector3(1056.124f, 1409.047f, 204.842f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 411, + false, + List( + Vector3(1148.506f, 1446.867f, 220.562f), + Vector3(1143.938f, 1454.651f, 219.37f), + Vector3(1139.37f, 1462.434f, 214.04f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 412, + false, + List( + Vector3(1278.732f, 1509.007f, 222.004f), + Vector3(1291.364f, 1524.6f, 220.425f), + Vector3(1304.195f, 1540.394f, 213.35f), + Vector3(1307.016f, 1543.923f, 209.65f), + Vector3(1310.036f, 1547.652f, 193.654f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 413, + false, + List( + Vector3(1347.651f, 1449.073f, 220.296f), + Vector3(1347.577f, 1452.166f, 220.04f), + Vector3(1347.094f, 1466.267f, 194.846f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 414, + false, + List( + Vector3(1377.227f, 1428.314f, 220.289f), + Vector3(1380.011f, 1429.335f, 220.008f), + Vector3(1390.577f, 1434.033f, 194.848f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 415, + false, + List( + Vector3(1348.868f, 1387.999f, 220.307f), + Vector3(1351.913f, 1371.802f, 218.025f), + Vector3(1354.957f, 1355.606f, 211.576f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 416, + false, + List( + Vector3(1398.041f, 1347.441f, 232.949f), + Vector3(1394.732f, 1347.912f, 232.435f), + Vector3(1385.039f, 1349.7f, 211.562f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 417, + false, + List( + Vector3(1453.473f, 1359.667f, 232.956f), + Vector3(1457.288f, 1359.47f, 232.693f), + Vector3(1468.838f, 1358.513f, 187.157f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 418, + false, + List( + Vector3(1430.748f, 1320.637f, 232.954f), + Vector3(1431.562f, 1316.973f, 232.584f), + Vector3(1436.177f, 1305.54f, 194.848f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 419, + false, + List( + Vector3(1421.757f, 1366.067f, 232.988f), + Vector3(1405.097f, 1410.405f, 252.602f), + Vector3(1392.284f, 1443.842f, 266.389f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(420, true, List(Vector3(973.389f, 913.595f, 196.95f), Vector3(971.862f, 927.004f, 204.35f))) + ) } ZipLines() diff --git a/pslogin/src/main/scala/zonemaps/Ugd03.scala b/pslogin/src/main/scala/zonemaps/Ugd03.scala index 513c8d6f..ba76df73 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd03.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd03.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd03 { // Adlivun Building10020() def Building10020(): Unit = { // Name: ceiling_bldg_a_10020 Type: ceiling_bldg_a GUID: 1, MapID: 10020 - LocalBuilding("ceiling_bldg_a_10020", 1, 10020, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(845.85f, 782.72f, 106.07f), Vector3(0f, 0f, 304f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10020", + 1, + 10020, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(845.85f, 782.72f, 106.07f), + Vector3(0f, 0f, 304f), + ceiling_bldg_a + ) + ) + ) LocalObject(809, Door.Constructor(Vector3(844.4113f, 798.6173f, 107.849f)), owning_building_guid = 1) LocalObject(810, Door.Constructor(Vector3(845.2345f, 763.904f, 113.355f)), owning_building_guid = 1) LocalObject(811, Door.Constructor(Vector3(858.5089f, 771.0483f, 107.849f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd03 { // Adlivun Building10028() def Building10028(): Unit = { // Name: ceiling_bldg_a_10028 Type: ceiling_bldg_a GUID: 2, MapID: 10028 - LocalBuilding("ceiling_bldg_a_10028", 2, 10028, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1089.56f, 1080.75f, 112.69f), Vector3(0f, 0f, 328f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10028", + 2, + 10028, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1089.56f, 1080.75f, 112.69f), + Vector3(0f, 0f, 328f), + ceiling_bldg_a + ) + ) + ) LocalObject(847, Door.Constructor(Vector3(1081.78f, 1094.688f, 114.469f)), owning_building_guid = 2) LocalObject(848, Door.Constructor(Vector3(1096.651f, 1063.31f, 119.975f)), owning_building_guid = 2) LocalObject(849, Door.Constructor(Vector3(1105.872f, 1075.236f, 114.469f)), owning_building_guid = 2) @@ -40,7 +64,19 @@ object Ugd03 { // Adlivun Building10019() def Building10019(): Unit = { // Name: ceiling_bldg_b_10019 Type: ceiling_bldg_b GUID: 3, MapID: 10019 - LocalBuilding("ceiling_bldg_b_10019", 3, 10019, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(677.51f, 874.3f, 101.68f), Vector3(0f, 0f, 263f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10019", + 3, + 10019, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(677.51f, 874.3f, 101.68f), + Vector3(0f, 0f, 263f), + ceiling_bldg_b + ) + ) + ) LocalObject(771, Door.Constructor(Vector3(675.7744f, 868.4519f, 103.459f)), owning_building_guid = 3) LocalObject(772, Door.Constructor(Vector3(693.6315f, 870.2904f, 103.459f)), owning_building_guid = 3) } @@ -48,7 +84,19 @@ object Ugd03 { // Adlivun Building10029() def Building10029(): Unit = { // Name: ceiling_bldg_b_10029 Type: ceiling_bldg_b GUID: 4, MapID: 10029 - LocalBuilding("ceiling_bldg_b_10029", 4, 10029, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1006.55f, 1224.66f, 101.59f), Vector3(0f, 0f, 17f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10029", + 4, + 10029, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1006.55f, 1224.66f, 101.59f), + Vector3(0f, 0f, 17f), + ceiling_bldg_b + ) + ) + ) LocalObject(829, Door.Constructor(Vector3(1003.656f, 1241.019f, 103.369f)), owning_building_guid = 4) LocalObject(831, Door.Constructor(Vector3(1012.598f, 1225.453f, 103.369f)), owning_building_guid = 4) } @@ -56,7 +104,19 @@ object Ugd03 { // Adlivun Building10011() def Building10011(): Unit = { // Name: ceiling_bldg_b_10011 Type: ceiling_bldg_b GUID: 5, MapID: 10011 - LocalBuilding("ceiling_bldg_b_10011", 5, 10011, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1328.95f, 1247.9f, 111.73f), Vector3(0f, 0f, 0f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10011", + 5, + 10011, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1328.95f, 1247.9f, 111.73f), + Vector3(0f, 0f, 0f), + ceiling_bldg_b + ) + ) + ) LocalObject(892, Door.Constructor(Vector3(1330.965f, 1264.39f, 113.509f)), owning_building_guid = 5) LocalObject(894, Door.Constructor(Vector3(1334.966f, 1246.89f, 113.509f)), owning_building_guid = 5) } @@ -64,7 +124,19 @@ object Ugd03 { // Adlivun Building10301() def Building10301(): Unit = { // Name: ceiling_bldg_c_10301 Type: ceiling_bldg_c GUID: 6, MapID: 10301 - LocalBuilding("ceiling_bldg_c_10301", 6, 10301, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(763.93f, 652.46f, 123.63f), Vector3(0f, 0f, 39f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10301", + 6, + 10301, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(763.93f, 652.46f, 123.63f), + Vector3(0f, 0f, 39f), + ceiling_bldg_c + ) + ) + ) LocalObject(794, Door.Constructor(Vector3(760.2493f, 654.6059f, 125.409f)), owning_building_guid = 6) LocalObject(801, Door.Constructor(Vector3(787.3882f, 696.5608f, 125.409f)), owning_building_guid = 6) LocalObject(803, Door.Constructor(Vector3(806.8972f, 672.4693f, 125.409f)), owning_building_guid = 6) @@ -73,18 +145,46 @@ object Ugd03 { // Adlivun Building10085() def Building10085(): Unit = { // Name: ceiling_bldg_d_10085 Type: ceiling_bldg_d GUID: 7, MapID: 10085 - LocalBuilding("ceiling_bldg_d_10085", 7, 10085, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1186.2f, 1198.95f, 111.11f), Vector3(0f, 0f, 0f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10085", + 7, + 10085, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1186.2f, 1198.95f, 111.11f), + Vector3(0f, 0f, 0f), + ceiling_bldg_d + ) + ) + ) LocalObject(854, Door.Constructor(Vector3(1168.71f, 1198.966f, 112.845f)), owning_building_guid = 7) LocalObject(855, Door.Constructor(Vector3(1186.216f, 1181.44f, 112.845f)), owning_building_guid = 7) LocalObject(856, Door.Constructor(Vector3(1186.216f, 1216.44f, 112.845f)), owning_building_guid = 7) LocalObject(857, Door.Constructor(Vector3(1203.71f, 1198.966f, 112.845f)), owning_building_guid = 7) - LocalObject(973, Painbox.Constructor(Vector3(1186.107f, 1198.747f, 119.418f), painbox_continuous), owning_building_guid = 7) + LocalObject( + 973, + Painbox.Constructor(Vector3(1186.107f, 1198.747f, 119.418f), painbox_continuous), + owning_building_guid = 7 + ) } Building10024() def Building10024(): Unit = { // Name: ceiling_bldg_g_10024 Type: ceiling_bldg_g GUID: 8, MapID: 10024 - LocalBuilding("ceiling_bldg_g_10024", 8, 10024, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(705.96f, 1266.02f, 88.19f), Vector3(0f, 0f, 219f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10024", + 8, + 10024, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(705.96f, 1266.02f, 88.19f), + Vector3(0f, 0f, 219f), + ceiling_bldg_g + ) + ) + ) LocalObject(777, Door.Constructor(Vector3(701.7747f, 1283.875f, 89.969f)), owning_building_guid = 8) LocalObject(782, Door.Constructor(Vector3(716.9544f, 1252.418f, 89.969f)), owning_building_guid = 8) } @@ -92,7 +192,19 @@ object Ugd03 { // Adlivun Building10026() def Building10026(): Unit = { // Name: ceiling_bldg_g_10026 Type: ceiling_bldg_g GUID: 9, MapID: 10026 - LocalBuilding("ceiling_bldg_g_10026", 9, 10026, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(780.44f, 1084.53f, 99.81f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10026", + 9, + 10026, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(780.44f, 1084.53f, 99.81f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(797, Door.Constructor(Vector3(772.456f, 1068.02f, 101.589f)), owning_building_guid = 9) LocalObject(800, Door.Constructor(Vector3(780.456f, 1102.02f, 101.589f)), owning_building_guid = 9) } @@ -100,7 +212,19 @@ object Ugd03 { // Adlivun Building10016() def Building10016(): Unit = { // Name: ceiling_bldg_g_10016 Type: ceiling_bldg_g GUID: 10, MapID: 10016 - LocalBuilding("ceiling_bldg_g_10016", 10, 10016, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1249.74f, 1307.4f, 94.99f), Vector3(0f, 0f, 317f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10016", + 10, + 10016, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1249.74f, 1307.4f, 94.99f), + Vector3(0f, 0f, 317f), + ceiling_bldg_g + ) + ) + ) LocalObject(864, Door.Constructor(Vector3(1232.641f, 1300.771f, 96.769f)), owning_building_guid = 10) LocalObject(872, Door.Constructor(Vector3(1261.68f, 1320.181f, 96.769f)), owning_building_guid = 10) } @@ -108,7 +232,19 @@ object Ugd03 { // Adlivun Building10021() def Building10021(): Unit = { // Name: ceiling_bldg_g_10021 Type: ceiling_bldg_g GUID: 11, MapID: 10021 - LocalBuilding("ceiling_bldg_g_10021", 11, 10021, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1349.23f, 652.87f, 88.19f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10021", + 11, + 10021, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1349.23f, 652.87f, 88.19f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(897, Door.Constructor(Vector3(1341.246f, 636.36f, 89.969f)), owning_building_guid = 11) LocalObject(899, Door.Constructor(Vector3(1349.246f, 670.36f, 89.969f)), owning_building_guid = 11) } @@ -116,7 +252,19 @@ object Ugd03 { // Adlivun Building10023() def Building10023(): Unit = { // Name: ceiling_bldg_h_10023 Type: ceiling_bldg_h GUID: 12, MapID: 10023 - LocalBuilding("ceiling_bldg_h_10023", 12, 10023, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(899.77f, 1249.92f, 103.44f), Vector3(0f, 0f, 58f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10023", + 12, + 10023, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(899.77f, 1249.92f, 103.44f), + Vector3(0f, 0f, 58f), + ceiling_bldg_h + ) + ) + ) LocalObject(814, Door.Constructor(Vector3(887.8799f, 1262.048f, 105.219f)), owning_building_guid = 12) LocalObject(816, Door.Constructor(Vector3(894.4103f, 1233.825f, 105.219f)), owning_building_guid = 12) LocalObject(819, Door.Constructor(Vector3(915.1321f, 1253.392f, 107.719f)), owning_building_guid = 12) @@ -125,7 +273,19 @@ object Ugd03 { // Adlivun Building10030() def Building10030(): Unit = { // Name: ceiling_bldg_h_10030 Type: ceiling_bldg_h GUID: 13, MapID: 10030 - LocalBuilding("ceiling_bldg_h_10030", 13, 10030, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1133.55f, 738.99f, 104.66f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10030", + 13, + 10030, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1133.55f, 738.99f, 104.66f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(851, Door.Constructor(Vector3(1117.06f, 735.006f, 106.439f)), owning_building_guid = 13) LocalObject(852, Door.Constructor(Vector3(1137.534f, 755.5f, 106.439f)), owning_building_guid = 13) LocalObject(853, Door.Constructor(Vector3(1144.635f, 727.802f, 108.939f)), owning_building_guid = 13) @@ -134,7 +294,19 @@ object Ugd03 { // Adlivun Building10017() def Building10017(): Unit = { // Name: ceiling_bldg_h_10017 Type: ceiling_bldg_h GUID: 14, MapID: 10017 - LocalBuilding("ceiling_bldg_h_10017", 14, 10017, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1246.32f, 775.32f, 92.82f), Vector3(0f, 0f, 199f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10017", + 14, + 10017, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1246.32f, 775.32f, 92.82f), + Vector3(0f, 0f, 199f), + ceiling_bldg_h + ) + ) + ) LocalObject(863, Door.Constructor(Vector3(1232.196f, 782.2896f, 97.099f)), owning_building_guid = 14) LocalObject(867, Door.Constructor(Vector3(1247.928f, 758.4124f, 94.599f)), owning_building_guid = 14) LocalObject(871, Door.Constructor(Vector3(1260.615f, 784.4556f, 94.599f)), owning_building_guid = 14) @@ -143,7 +315,19 @@ object Ugd03 { // Adlivun Building10015() def Building10015(): Unit = { // Name: ceiling_bldg_h_10015 Type: ceiling_bldg_h GUID: 15, MapID: 10015 - LocalBuilding("ceiling_bldg_h_10015", 15, 10015, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1385.18f, 1124.38f, 120.28f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10015", + 15, + 10015, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1385.18f, 1124.38f, 120.28f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(903, Door.Constructor(Vector3(1368.69f, 1120.396f, 122.059f)), owning_building_guid = 15) LocalObject(906, Door.Constructor(Vector3(1389.164f, 1140.89f, 122.059f)), owning_building_guid = 15) LocalObject(910, Door.Constructor(Vector3(1396.265f, 1113.192f, 124.559f)), owning_building_guid = 15) @@ -152,7 +336,19 @@ object Ugd03 { // Adlivun Building10025() def Building10025(): Unit = { // Name: ceiling_bldg_j_10025 Type: ceiling_bldg_j GUID: 16, MapID: 10025 - LocalBuilding("ceiling_bldg_j_10025", 16, 10025, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(744.75f, 1147.08f, 98.87f), Vector3(0f, 0f, 219f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10025", + 16, + 10025, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(744.75f, 1147.08f, 98.87f), + Vector3(0f, 0f, 219f), + ceiling_bldg_j + ) + ) + ) LocalObject(789, Door.Constructor(Vector3(736.8647f, 1156.792f, 100.649f)), owning_building_guid = 16) LocalObject(792, Door.Constructor(Vector3(752.5978f, 1137.363f, 100.649f)), owning_building_guid = 16) } @@ -160,7 +356,19 @@ object Ugd03 { // Adlivun Building10014() def Building10014(): Unit = { // Name: ceiling_bldg_j_10014 Type: ceiling_bldg_j GUID: 17, MapID: 10014 - LocalBuilding("ceiling_bldg_j_10014", 17, 10014, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1255.3f, 1091.51f, 109.62f), Vector3(0f, 0f, 0f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10014", + 17, + 10014, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1255.3f, 1091.51f, 109.62f), + Vector3(0f, 0f, 0f), + ceiling_bldg_j + ) + ) + ) LocalObject(869, Door.Constructor(Vector3(1255.316f, 1079f, 111.399f)), owning_building_guid = 17) LocalObject(870, Door.Constructor(Vector3(1255.316f, 1104f, 111.399f)), owning_building_guid = 17) } @@ -168,7 +376,19 @@ object Ugd03 { // Adlivun Building10238() def Building10238(): Unit = { // Name: ceiling_bldg_j_10238 Type: ceiling_bldg_j GUID: 18, MapID: 10238 - LocalBuilding("ceiling_bldg_j_10238", 18, 10238, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1393.65f, 837.81f, 98.87f), Vector3(0f, 0f, 0f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10238", + 18, + 10238, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1393.65f, 837.81f, 98.87f), + Vector3(0f, 0f, 0f), + ceiling_bldg_j + ) + ) + ) LocalObject(908, Door.Constructor(Vector3(1393.666f, 825.3f, 100.649f)), owning_building_guid = 18) LocalObject(909, Door.Constructor(Vector3(1393.666f, 850.3f, 100.649f)), owning_building_guid = 18) } @@ -176,7 +396,19 @@ object Ugd03 { // Adlivun Building10027() def Building10027(): Unit = { // Name: ceiling_bldg_z_10027 Type: ceiling_bldg_z GUID: 19, MapID: 10027 - LocalBuilding("ceiling_bldg_z_10027", 19, 10027, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(916.61f, 913.02f, 110.84f), Vector3(0f, 0f, 0f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10027", + 19, + 10027, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(916.61f, 913.02f, 110.84f), + Vector3(0f, 0f, 0f), + ceiling_bldg_z + ) + ) + ) LocalObject(815, Door.Constructor(Vector3(892.12f, 917.036f, 112.619f)), owning_building_guid = 19) LocalObject(824, Door.Constructor(Vector3(949.12f, 917.036f, 112.619f)), owning_building_guid = 19) } @@ -184,7 +416,19 @@ object Ugd03 { // Adlivun Building10013() def Building10013(): Unit = { // Name: ground_bldg_a_10013 Type: ground_bldg_a GUID: 84, MapID: 10013 - LocalBuilding("ground_bldg_a_10013", 84, 10013, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(933.13f, 698.34f, 81.85f), Vector3(0f, 0f, 313f), ground_bldg_a))) + LocalBuilding( + "ground_bldg_a_10013", + 84, + 10013, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(933.13f, 698.34f, 81.85f), + Vector3(0f, 0f, 313f), + ground_bldg_a + ) + ) + ) LocalObject(821, Door.Constructor(Vector3(929.3392f, 714.15f, 83.629f)), owning_building_guid = 84) LocalObject(823, Door.Constructor(Vector3(947.2369f, 689.1008f, 83.629f)), owning_building_guid = 84) } @@ -192,7 +436,19 @@ object Ugd03 { // Adlivun Building10003() def Building10003(): Unit = { // Name: ground_bldg_c_10003 Type: ground_bldg_c GUID: 85, MapID: 10003 - LocalBuilding("ground_bldg_c_10003", 85, 10003, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(750.69f, 808.58f, 91.29f), Vector3(0f, 0f, 152f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10003", + 85, + 10003, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(750.69f, 808.58f, 91.29f), + Vector3(0f, 0f, 152f), + ground_bldg_c + ) + ) + ) LocalObject(775, Door.Constructor(Vector3(700.9291f, 812.9419f, 93.069f)), owning_building_guid = 85) LocalObject(781, Door.Constructor(Vector3(715.4828f, 840.3133f, 93.069f)), owning_building_guid = 85) LocalObject(791, Door.Constructor(Vector3(750.1529f, 804.3535f, 93.069f)), owning_building_guid = 85) @@ -201,7 +457,19 @@ object Ugd03 { // Adlivun Building10295() def Building10295(): Unit = { // Name: ground_bldg_c_10295 Type: ground_bldg_c GUID: 86, MapID: 10295 - LocalBuilding("ground_bldg_c_10295", 86, 10295, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(942.14f, 752.71f, 85.39f), Vector3(0f, 0f, 0f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10295", + 86, + 10295, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(942.14f, 752.71f, 85.39f), + Vector3(0f, 0f, 0f), + ground_bldg_c + ) + ) + ) LocalObject(822, Door.Constructor(Vector3(940.63f, 756.694f, 87.169f)), owning_building_guid = 86) LocalObject(826, Door.Constructor(Vector3(988.124f, 741.22f, 87.169f)), owning_building_guid = 86) LocalObject(827, Door.Constructor(Vector3(988.124f, 772.22f, 87.169f)), owning_building_guid = 86) @@ -210,7 +478,19 @@ object Ugd03 { // Adlivun Building10170() def Building10170(): Unit = { // Name: ground_bldg_c_10170 Type: ground_bldg_c GUID: 87, MapID: 10170 - LocalBuilding("ground_bldg_c_10170", 87, 10170, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1209.14f, 1162.92f, 80.39f), Vector3(0f, 0f, 312f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10170", + 87, + 10170, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1209.14f, 1162.92f, 80.39f), + Vector3(0f, 0f, 312f), + ground_bldg_c + ) + ) + ) LocalObject(859, Door.Constructor(Vector3(1211.09f, 1166.708f, 82.169f)), owning_building_guid = 87) LocalObject(862, Door.Constructor(Vector3(1231.371f, 1121.059f, 82.169f)), owning_building_guid = 87) LocalObject(868, Door.Constructor(Vector3(1254.408f, 1141.802f, 82.169f)), owning_building_guid = 87) @@ -219,7 +499,19 @@ object Ugd03 { // Adlivun Building10302() def Building10302(): Unit = { // Name: ground_bldg_c_10302 Type: ground_bldg_c GUID: 88, MapID: 10302 - LocalBuilding("ground_bldg_c_10302", 88, 10302, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1236.42f, 689.57f, 84.46f), Vector3(0f, 0f, 0f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10302", + 88, + 10302, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1236.42f, 689.57f, 84.46f), + Vector3(0f, 0f, 0f), + ground_bldg_c + ) + ) + ) LocalObject(865, Door.Constructor(Vector3(1234.91f, 693.554f, 86.239f)), owning_building_guid = 88) LocalObject(873, Door.Constructor(Vector3(1282.404f, 678.08f, 86.239f)), owning_building_guid = 88) LocalObject(874, Door.Constructor(Vector3(1282.404f, 709.08f, 86.239f)), owning_building_guid = 88) @@ -228,7 +520,19 @@ object Ugd03 { // Adlivun Building10237() def Building10237(): Unit = { // Name: ground_bldg_d_10237 Type: ground_bldg_d GUID: 89, MapID: 10237 - LocalBuilding("ground_bldg_d_10237", 89, 10237, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(713.63f, 978.09f, 54.81f), Vector3(0f, 0f, 27f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10237", + 89, + 10237, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(713.63f, 978.09f, 54.81f), + Vector3(0f, 0f, 27f), + ground_bldg_d + ) + ) + ) LocalObject(773, Door.Constructor(Vector3(698.0391f, 970.164f, 56.545f)), owning_building_guid = 89) LocalObject(778, Door.Constructor(Vector3(705.704f, 993.681f, 56.545f)), owning_building_guid = 89) LocalObject(784, Door.Constructor(Vector3(721.5936f, 962.4958f, 56.545f)), owning_building_guid = 89) @@ -238,7 +542,19 @@ object Ugd03 { // Adlivun Building10234() def Building10234(): Unit = { // Name: ground_bldg_d_10234 Type: ground_bldg_d GUID: 90, MapID: 10234 - LocalBuilding("ground_bldg_d_10234", 90, 10234, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(763.49f, 732.12f, 94.62f), Vector3(0f, 0f, 200f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10234", + 90, + 10234, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(763.49f, 732.12f, 94.62f), + Vector3(0f, 0f, 200f), + ground_bldg_d + ) + ) + ) LocalObject(790, Door.Constructor(Vector3(747.0414f, 726.1162f, 96.355f)), owning_building_guid = 90) LocalObject(793, Door.Constructor(Vector3(757.4862f, 748.5685f, 96.355f)), owning_building_guid = 90) LocalObject(796, Door.Constructor(Vector3(769.4569f, 715.6793f, 96.355f)), owning_building_guid = 90) @@ -248,7 +564,19 @@ object Ugd03 { // Adlivun Building10357() def Building10357(): Unit = { // Name: ground_bldg_d_10357 Type: ground_bldg_d GUID: 91, MapID: 10357 - LocalBuilding("ground_bldg_d_10357", 91, 10357, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(902.88f, 1372.77f, 43.35f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10357", + 91, + 10357, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(902.88f, 1372.77f, 43.35f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(813, Door.Constructor(Vector3(885.39f, 1372.786f, 45.085f)), owning_building_guid = 91) LocalObject(817, Door.Constructor(Vector3(902.896f, 1355.26f, 45.085f)), owning_building_guid = 91) LocalObject(818, Door.Constructor(Vector3(902.896f, 1390.26f, 45.085f)), owning_building_guid = 91) @@ -258,7 +586,19 @@ object Ugd03 { // Adlivun Building10074() def Building10074(): Unit = { // Name: ground_bldg_d_10074 Type: ground_bldg_d GUID: 92, MapID: 10074 - LocalBuilding("ground_bldg_d_10074", 92, 10074, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1054.39f, 1246.85f, 72.94f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10074", + 92, + 10074, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1054.39f, 1246.85f, 72.94f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(837, Door.Constructor(Vector3(1036.9f, 1246.866f, 74.675f)), owning_building_guid = 92) LocalObject(840, Door.Constructor(Vector3(1054.406f, 1229.34f, 74.675f)), owning_building_guid = 92) LocalObject(841, Door.Constructor(Vector3(1054.406f, 1264.34f, 74.675f)), owning_building_guid = 92) @@ -268,7 +608,19 @@ object Ugd03 { // Adlivun Building10291() def Building10291(): Unit = { // Name: ground_bldg_d_10291 Type: ground_bldg_d GUID: 93, MapID: 10291 - LocalBuilding("ground_bldg_d_10291", 93, 10291, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1226.43f, 1243.3f, 94.69f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10291", + 93, + 10291, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1226.43f, 1243.3f, 94.69f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(858, Door.Constructor(Vector3(1208.94f, 1243.316f, 96.425f)), owning_building_guid = 93) LocalObject(860, Door.Constructor(Vector3(1226.446f, 1225.79f, 96.425f)), owning_building_guid = 93) LocalObject(861, Door.Constructor(Vector3(1226.446f, 1260.79f, 96.425f)), owning_building_guid = 93) @@ -278,7 +630,19 @@ object Ugd03 { // Adlivun Building10135() def Building10135(): Unit = { // Name: ground_bldg_e_10135 Type: ground_bldg_e GUID: 94, MapID: 10135 - LocalBuilding("ground_bldg_e_10135", 94, 10135, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1056.2f, 739.36f, 68.24f), Vector3(0f, 0f, 191f), ground_bldg_e))) + LocalBuilding( + "ground_bldg_e_10135", + 94, + 10135, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1056.2f, 739.36f, 68.24f), + Vector3(0f, 0f, 191f), + ground_bldg_e + ) + ) + ) LocalObject(836, Door.Constructor(Vector3(1033.179f, 726.7191f, 75.519f)), owning_building_guid = 94) LocalObject(838, Door.Constructor(Vector3(1042.885f, 708.2314f, 70.019f)), owning_building_guid = 94) LocalObject(843, Door.Constructor(Vector3(1058.492f, 706.6871f, 75.519f)), owning_building_guid = 94) @@ -288,7 +652,19 @@ object Ugd03 { // Adlivun Building10002() def Building10002(): Unit = { // Name: ground_bldg_f_10002 Type: ground_bldg_f GUID: 95, MapID: 10002 - LocalBuilding("ground_bldg_f_10002", 95, 10002, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(689.69f, 665.37f, 76.67f), Vector3(0f, 0f, 333f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10002", + 95, + 10002, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(689.69f, 665.37f, 76.67f), + Vector3(0f, 0f, 333f), + ground_bldg_f + ) + ) + ) LocalObject(761, Door.Constructor(Vector3(662.3607f, 656.8664f, 78.449f)), owning_building_guid = 95) LocalObject(780, Door.Constructor(Vector3(713.3111f, 685.332f, 78.449f)), owning_building_guid = 95) } @@ -296,7 +672,19 @@ object Ugd03 { // Adlivun Building10061() def Building10061(): Unit = { // Name: ground_bldg_f_10061 Type: ground_bldg_f GUID: 96, MapID: 10061 - LocalBuilding("ground_bldg_f_10061", 96, 10061, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(991.58f, 1312.88f, 67.64f), Vector3(0f, 0f, 196f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10061", + 96, + 10061, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(991.58f, 1312.88f, 67.64f), + Vector3(0f, 0f, 196f), + ground_bldg_f + ) + ) + ) LocalObject(825, Door.Constructor(Vector3(987.9187f, 1282.171f, 69.419f)), owning_building_guid = 96) LocalObject(830, Door.Constructor(Vector3(1005.768f, 1337.738f, 69.419f)), owning_building_guid = 96) } @@ -304,7 +692,19 @@ object Ugd03 { // Adlivun Building10001() def Building10001(): Unit = { // Name: ground_bldg_f_10001 Type: ground_bldg_f GUID: 97, MapID: 10001 - LocalBuilding("ground_bldg_f_10001", 97, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1315.3f, 1276.75f, 76.67f), Vector3(0f, 0f, 133f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10001", + 97, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1315.3f, 1276.75f, 76.67f), + Vector3(0f, 0f, 133f), + ground_bldg_f + ) + ) + ) LocalObject(877, Door.Constructor(Vector3(1286.276f, 1266.071f, 78.449f)), owning_building_guid = 97) LocalObject(898, Door.Constructor(Vector3(1343.89f, 1275.394f, 78.449f)), owning_building_guid = 97) } @@ -312,7 +712,19 @@ object Ugd03 { // Adlivun Building10147() def Building10147(): Unit = { // Name: ground_bldg_g_10147 Type: ground_bldg_g GUID: 98, MapID: 10147 - LocalBuilding("ground_bldg_g_10147", 98, 10147, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(624.24f, 967.02f, 72.09f), Vector3(0f, 0f, 0f), ground_bldg_g))) + LocalBuilding( + "ground_bldg_g_10147", + 98, + 10147, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(624.24f, 967.02f, 72.09f), + Vector3(0f, 0f, 0f), + ground_bldg_g + ) + ) + ) LocalObject(753, Door.Constructor(Vector3(616.256f, 950.51f, 73.869f)), owning_building_guid = 98) LocalObject(755, Door.Constructor(Vector3(624.256f, 984.51f, 73.869f)), owning_building_guid = 98) } @@ -320,7 +732,19 @@ object Ugd03 { // Adlivun Building10154() def Building10154(): Unit = { // Name: ground_bldg_h_10154 Type: ground_bldg_h GUID: 99, MapID: 10154 - LocalBuilding("ground_bldg_h_10154", 99, 10154, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(654.94f, 1129.19f, 68.99f), Vector3(0f, 0f, 0f), ground_bldg_h))) + LocalBuilding( + "ground_bldg_h_10154", + 99, + 10154, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(654.94f, 1129.19f, 68.99f), + Vector3(0f, 0f, 0f), + ground_bldg_h + ) + ) + ) LocalObject(756, Door.Constructor(Vector3(638.45f, 1125.206f, 70.769f)), owning_building_guid = 99) LocalObject(760, Door.Constructor(Vector3(658.924f, 1145.7f, 70.769f)), owning_building_guid = 99) LocalObject(765, Door.Constructor(Vector3(666.025f, 1118.002f, 73.269f)), owning_building_guid = 99) @@ -329,7 +753,19 @@ object Ugd03 { // Adlivun Building10004() def Building10004(): Unit = { // Name: ground_bldg_i_10004 Type: ground_bldg_i GUID: 100, MapID: 10004 - LocalBuilding("ground_bldg_i_10004", 100, 10004, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(641.6f, 811.71f, 80.39f), Vector3(0f, 0f, 19f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10004", + 100, + 10004, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(641.6f, 811.71f, 80.39f), + Vector3(0f, 0f, 19f), + ground_bldg_i + ) + ) + ) LocalObject(754, Door.Constructor(Vector3(617.2995f, 807.0613f, 82.169f)), owning_building_guid = 100) LocalObject(764, Door.Constructor(Vector3(664.5754f, 823.3397f, 82.169f)), owning_building_guid = 100) } @@ -337,7 +773,19 @@ object Ugd03 { // Adlivun Building10306() def Building10306(): Unit = { // Name: ground_bldg_i_10306 Type: ground_bldg_i GUID: 101, MapID: 10306 - LocalBuilding("ground_bldg_i_10306", 101, 10306, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1310.62f, 1122.78f, 80.99f), Vector3(0f, 0f, 179f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10306", + 101, + 10306, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1310.62f, 1122.78f, 80.99f), + Vector3(0f, 0f, 179f), + ground_bldg_i + ) + ) + ) LocalObject(876, Door.Constructor(Vector3(1285.052f, 1119.71f, 82.769f)), owning_building_guid = 101) LocalObject(895, Door.Constructor(Vector3(1335.045f, 1118.837f, 82.769f)), owning_building_guid = 101) } @@ -345,7 +793,19 @@ object Ugd03 { // Adlivun Building10075() def Building10075(): Unit = { // Name: ground_bldg_j_10075 Type: ground_bldg_j GUID: 102, MapID: 10075 - LocalBuilding("ground_bldg_j_10075", 102, 10075, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1060.18f, 1311.97f, 73.4f), Vector3(0f, 0f, 343f), ground_bldg_j))) + LocalBuilding( + "ground_bldg_j_10075", + 102, + 10075, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1060.18f, 1311.97f, 73.4f), + Vector3(0f, 0f, 343f), + ground_bldg_j + ) + ) + ) LocalObject(842, Door.Constructor(Vector3(1056.538f, 1300.002f, 75.179f)), owning_building_guid = 102) LocalObject(844, Door.Constructor(Vector3(1063.847f, 1323.91f, 75.179f)), owning_building_guid = 102) } @@ -353,42 +813,112 @@ object Ugd03 { // Adlivun Building10322() def Building10322(): Unit = { // Name: NW_Redoubt Type: redoubt GUID: 103, MapID: 10322 - LocalBuilding("NW_Redoubt", 103, 10322, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(718.55f, 1209.17f, 43.36f), Vector3(0f, 0f, 346f), redoubt))) - LocalObject(1025, CaptureTerminal.Constructor(Vector3(723.6748f, 1229.807f, 53.844f), vanu_control_console), owning_building_guid = 103) + LocalBuilding( + "NW_Redoubt", + 103, + 10322, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(718.55f, 1209.17f, 43.36f), Vector3(0f, 0f, 346f), redoubt) + ) + ) + LocalObject( + 1025, + CaptureTerminal.Constructor(Vector3(723.6748f, 1229.807f, 53.844f), vanu_control_console), + owning_building_guid = 103 + ) LocalObject(776, Door.Constructor(Vector3(701.5834f, 1213.417f, 45.095f)), owning_building_guid = 103) LocalObject(779, Door.Constructor(Vector3(709.5589f, 1223.861f, 55.139f)), owning_building_guid = 103) LocalObject(783, Door.Constructor(Vector3(717.5706f, 1221.859f, 55.119f)), owning_building_guid = 103) LocalObject(785, Door.Constructor(Vector3(725.3601f, 1219.95f, 55.119f)), owning_building_guid = 103) LocalObject(787, Door.Constructor(Vector3(733.3605f, 1217.96f, 55.139f)), owning_building_guid = 103) LocalObject(788, Door.Constructor(Vector3(735.5438f, 1204.949f, 45.095f)), owning_building_guid = 103) - LocalObject(1047, Terminal.Constructor(Vector3(713.951f, 1191.242f, 43.3158f), vanu_equipment_term), owning_building_guid = 103) - LocalObject(1049, Terminal.Constructor(Vector3(723.0927f, 1227.324f, 43.3135f), vanu_equipment_term), owning_building_guid = 103) - LocalObject(984, SpawnTube.Constructor(Vector3(718.55f, 1209.17f, 43.36f), Vector3(0, 0, 194)), owning_building_guid = 103) - LocalObject(972, Painbox.Constructor(Vector3(718.6603f, 1209.442f, 51.149f), painbox_continuous), owning_building_guid = 103) + LocalObject( + 1047, + Terminal.Constructor(Vector3(713.951f, 1191.242f, 43.3158f), vanu_equipment_term), + owning_building_guid = 103 + ) + LocalObject( + 1049, + Terminal.Constructor(Vector3(723.0927f, 1227.324f, 43.3135f), vanu_equipment_term), + owning_building_guid = 103 + ) + LocalObject( + 984, + SpawnTube.Constructor(Vector3(718.55f, 1209.17f, 43.36f), Vector3(0, 0, 194)), + owning_building_guid = 103 + ) + LocalObject( + 972, + Painbox.Constructor(Vector3(718.6603f, 1209.442f, 51.149f), painbox_continuous), + owning_building_guid = 103 + ) } Building10359() def Building10359(): Unit = { // Name: SE_Redoubt Type: redoubt GUID: 104, MapID: 10359 - LocalBuilding("SE_Redoubt", 104, 10359, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1397.63f, 773.07f, 43.36f), Vector3(0f, 0f, 0f), redoubt))) - LocalObject(1029, CaptureTerminal.Constructor(Vector3(1397.61f, 794.334f, 53.844f), vanu_control_console), owning_building_guid = 104) + LocalBuilding( + "SE_Redoubt", + 104, + 10359, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1397.63f, 773.07f, 43.36f), Vector3(0f, 0f, 0f), redoubt) + ) + ) + LocalObject( + 1029, + CaptureTerminal.Constructor(Vector3(1397.61f, 794.334f, 53.844f), vanu_control_console), + owning_building_guid = 104 + ) LocalObject(904, Door.Constructor(Vector3(1380.14f, 773.086f, 45.095f)), owning_building_guid = 104) LocalObject(905, Door.Constructor(Vector3(1385.352f, 785.149f, 55.139f)), owning_building_guid = 104) LocalObject(907, Door.Constructor(Vector3(1393.61f, 785.145f, 55.119f)), owning_building_guid = 104) LocalObject(911, Door.Constructor(Vector3(1401.63f, 785.177f, 55.119f)), owning_building_guid = 104) LocalObject(912, Door.Constructor(Vector3(1409.874f, 785.182f, 55.139f)), owning_building_guid = 104) LocalObject(913, Door.Constructor(Vector3(1415.14f, 773.086f, 45.095f)), owning_building_guid = 104) - LocalObject(1082, Terminal.Constructor(Vector3(1397.505f, 754.5616f, 43.3158f), vanu_equipment_term), owning_building_guid = 104) - LocalObject(1083, Terminal.Constructor(Vector3(1397.646f, 791.784f, 43.3135f), vanu_equipment_term), owning_building_guid = 104) - LocalObject(985, SpawnTube.Constructor(Vector3(1397.63f, 773.07f, 43.36f), Vector3(0, 0, 180)), owning_building_guid = 104) - LocalObject(975, Painbox.Constructor(Vector3(1397.671f, 773.3606f, 51.149f), painbox_continuous), owning_building_guid = 104) + LocalObject( + 1082, + Terminal.Constructor(Vector3(1397.505f, 754.5616f, 43.3158f), vanu_equipment_term), + owning_building_guid = 104 + ) + LocalObject( + 1083, + Terminal.Constructor(Vector3(1397.646f, 791.784f, 43.3135f), vanu_equipment_term), + owning_building_guid = 104 + ) + LocalObject( + 985, + SpawnTube.Constructor(Vector3(1397.63f, 773.07f, 43.36f), Vector3(0, 0, 180)), + owning_building_guid = 104 + ) + LocalObject( + 975, + Painbox.Constructor(Vector3(1397.671f, 773.3606f, 51.149f), painbox_continuous), + owning_building_guid = 104 + ) } Building10005() def Building10005(): Unit = { // Name: SW_Stasis Type: vanu_control_point GUID: 210, MapID: 10005 - LocalBuilding("SW_Stasis", 210, 10005, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(662.53f, 731.92f, 71.25f), Vector3(0f, 0f, 200f), vanu_control_point))) - LocalObject(1024, CaptureTerminal.Constructor(Vector3(658.8719f, 732.7052f, 101.734f), vanu_control_console), owning_building_guid = 210) + LocalBuilding( + "SW_Stasis", + 210, + 10005, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(662.53f, 731.92f, 71.25f), + Vector3(0f, 0f, 200f), + vanu_control_point + ) + ) + ) + LocalObject( + 1024, + CaptureTerminal.Constructor(Vector3(658.8719f, 732.7052f, 101.734f), vanu_control_console), + owning_building_guid = 210 + ) LocalObject(752, Door.Constructor(Vector3(610.1769f, 740.5507f, 73.029f)), owning_building_guid = 210) LocalObject(757, Door.Constructor(Vector3(642.492f, 688.1669f, 73.029f)), owning_building_guid = 210) LocalObject(758, Door.Constructor(Vector3(648.6942f, 729.0295f, 77.97f)), owning_building_guid = 210) @@ -401,27 +931,99 @@ object Ugd03 { // Adlivun LocalObject(769, Door.Constructor(Vector3(671.8712f, 724.4004f, 103.029f)), owning_building_guid = 210) LocalObject(770, Door.Constructor(Vector3(673.0169f, 767.94f, 73.029f)), owning_building_guid = 210) LocalObject(774, Door.Constructor(Vector3(699.4913f, 730.4573f, 73.029f)), owning_building_guid = 210) - LocalObject(1034, Terminal.Constructor(Vector3(649.8383f, 735.5905f, 76.263f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1035, Terminal.Constructor(Vector3(651.4671f, 739.1439f, 76.267f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1036, Terminal.Constructor(Vector3(653.808f, 724.6984f, 76.267f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1037, Terminal.Constructor(Vector3(657.4075f, 723.016f, 76.263f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1038, Terminal.Constructor(Vector3(662.4866f, 743.2345f, 76.263f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1039, Terminal.Constructor(Vector3(666.0861f, 741.5521f, 76.267f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1040, Terminal.Constructor(Vector3(668.4279f, 727.1069f, 76.267f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1041, Terminal.Constructor(Vector3(670.1102f, 730.7064f, 76.263f), vanu_equipment_term), owning_building_guid = 210) - LocalObject(1097, SpawnTube.Constructor(Vector3(659.9666f, 733.1154f, 76.389f), Vector3(0, 0, 340)), owning_building_guid = 210) - LocalObject(971, Painbox.Constructor(Vector3(660.1337f, 733.4966f, 85.5918f), painbox_continuous), owning_building_guid = 210) - LocalObject(976, Painbox.Constructor(Vector3(646.2076f, 727.696f, 80.14f), painbox_door_radius_continuous), owning_building_guid = 210) - LocalObject(977, Painbox.Constructor(Vector3(655.5827f, 746.0699f, 80.14f), painbox_door_radius_continuous), owning_building_guid = 210) - LocalObject(978, Painbox.Constructor(Vector3(664.7043f, 719.9772f, 80.14f), painbox_door_radius_continuous), owning_building_guid = 210) - LocalObject(979, Painbox.Constructor(Vector3(673.4529f, 737.9102f, 79.54f), painbox_door_radius_continuous), owning_building_guid = 210) + LocalObject( + 1034, + Terminal.Constructor(Vector3(649.8383f, 735.5905f, 76.263f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1035, + Terminal.Constructor(Vector3(651.4671f, 739.1439f, 76.267f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1036, + Terminal.Constructor(Vector3(653.808f, 724.6984f, 76.267f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1037, + Terminal.Constructor(Vector3(657.4075f, 723.016f, 76.263f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1038, + Terminal.Constructor(Vector3(662.4866f, 743.2345f, 76.263f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1039, + Terminal.Constructor(Vector3(666.0861f, 741.5521f, 76.267f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1040, + Terminal.Constructor(Vector3(668.4279f, 727.1069f, 76.267f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1041, + Terminal.Constructor(Vector3(670.1102f, 730.7064f, 76.263f), vanu_equipment_term), + owning_building_guid = 210 + ) + LocalObject( + 1097, + SpawnTube.Constructor(Vector3(659.9666f, 733.1154f, 76.389f), Vector3(0, 0, 340)), + owning_building_guid = 210 + ) + LocalObject( + 971, + Painbox.Constructor(Vector3(660.1337f, 733.4966f, 85.5918f), painbox_continuous), + owning_building_guid = 210 + ) + LocalObject( + 976, + Painbox.Constructor(Vector3(646.2076f, 727.696f, 80.14f), painbox_door_radius_continuous), + owning_building_guid = 210 + ) + LocalObject( + 977, + Painbox.Constructor(Vector3(655.5827f, 746.0699f, 80.14f), painbox_door_radius_continuous), + owning_building_guid = 210 + ) + LocalObject( + 978, + Painbox.Constructor(Vector3(664.7043f, 719.9772f, 80.14f), painbox_door_radius_continuous), + owning_building_guid = 210 + ) + LocalObject( + 979, + Painbox.Constructor(Vector3(673.4529f, 737.9102f, 79.54f), painbox_door_radius_continuous), + owning_building_guid = 210 + ) } Building10173() def Building10173(): Unit = { // Name: NE_Stasis Type: vanu_control_point GUID: 211, MapID: 10173 - LocalBuilding("NE_Stasis", 211, 10173, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1318.15f, 1204.93f, 71.05f), Vector3(0f, 0f, 0f), vanu_control_point))) - LocalObject(1028, CaptureTerminal.Constructor(Vector3(1321.319f, 1202.941f, 101.534f), vanu_control_console), owning_building_guid = 211) + LocalBuilding( + "NE_Stasis", + 211, + 10173, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1318.15f, 1204.93f, 71.05f), + Vector3(0f, 0f, 0f), + vanu_control_point + ) + ) + ) + LocalObject( + 1028, + CaptureTerminal.Constructor(Vector3(1321.319f, 1202.941f, 101.534f), vanu_control_console), + owning_building_guid = 211 + ) LocalObject(875, Door.Constructor(Vector3(1283.918f, 1218.946f, 72.829f)), owning_building_guid = 211) LocalObject(878, Door.Constructor(Vector3(1295.976f, 1174.669f, 72.829f)), owning_building_guid = 211) LocalObject(881, Door.Constructor(Vector3(1308.16f, 1202.946f, 77.77f)), owning_building_guid = 211) @@ -434,26 +1036,94 @@ object Ugd03 { // Adlivun LocalObject(893, Door.Constructor(Vector3(1332.14f, 1202.914f, 77.77f)), owning_building_guid = 211) LocalObject(900, Door.Constructor(Vector3(1351.944f, 1239.191f, 72.829f)), owning_building_guid = 211) LocalObject(902, Door.Constructor(Vector3(1364.394f, 1178.914f, 72.829f)), owning_building_guid = 211) - LocalObject(1069, Terminal.Constructor(Vector3(1311.442f, 1208.663f, 76.063f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1070, Terminal.Constructor(Vector3(1311.514f, 1197.095f, 76.067f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1072, Terminal.Constructor(Vector3(1314.254f, 1211.47f, 76.067f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1073, Terminal.Constructor(Vector3(1314.321f, 1194.283f, 76.063f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1074, Terminal.Constructor(Vector3(1326.075f, 1194.358f, 76.067f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1075, Terminal.Constructor(Vector3(1326.009f, 1211.545f, 76.063f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1076, Terminal.Constructor(Vector3(1328.821f, 1197.14f, 76.063f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1077, Terminal.Constructor(Vector3(1328.816f, 1208.733f, 76.067f), vanu_equipment_term), owning_building_guid = 211) - LocalObject(1098, SpawnTube.Constructor(Vector3(1320.15f, 1202.93f, 76.189f), Vector3(0, 0, 180)), owning_building_guid = 211) - LocalObject(974, Painbox.Constructor(Vector3(1319.863f, 1202.629f, 85.3918f), painbox_continuous), owning_building_guid = 211) - LocalObject(980, Painbox.Constructor(Vector3(1305.837f, 1203.037f, 79.34f), painbox_door_radius_continuous), owning_building_guid = 211) - LocalObject(981, Painbox.Constructor(Vector3(1319.839f, 1189.257f, 79.94f), painbox_door_radius_continuous), owning_building_guid = 211) - LocalObject(982, Painbox.Constructor(Vector3(1320.192f, 1216.896f, 79.94f), painbox_door_radius_continuous), owning_building_guid = 211) - LocalObject(983, Painbox.Constructor(Vector3(1334.933f, 1203.317f, 79.94f), painbox_door_radius_continuous), owning_building_guid = 211) + LocalObject( + 1069, + Terminal.Constructor(Vector3(1311.442f, 1208.663f, 76.063f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1070, + Terminal.Constructor(Vector3(1311.514f, 1197.095f, 76.067f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1072, + Terminal.Constructor(Vector3(1314.254f, 1211.47f, 76.067f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1073, + Terminal.Constructor(Vector3(1314.321f, 1194.283f, 76.063f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1074, + Terminal.Constructor(Vector3(1326.075f, 1194.358f, 76.067f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1075, + Terminal.Constructor(Vector3(1326.009f, 1211.545f, 76.063f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1076, + Terminal.Constructor(Vector3(1328.821f, 1197.14f, 76.063f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1077, + Terminal.Constructor(Vector3(1328.816f, 1208.733f, 76.067f), vanu_equipment_term), + owning_building_guid = 211 + ) + LocalObject( + 1098, + SpawnTube.Constructor(Vector3(1320.15f, 1202.93f, 76.189f), Vector3(0, 0, 180)), + owning_building_guid = 211 + ) + LocalObject( + 974, + Painbox.Constructor(Vector3(1319.863f, 1202.629f, 85.3918f), painbox_continuous), + owning_building_guid = 211 + ) + LocalObject( + 980, + Painbox.Constructor(Vector3(1305.837f, 1203.037f, 79.34f), painbox_door_radius_continuous), + owning_building_guid = 211 + ) + LocalObject( + 981, + Painbox.Constructor(Vector3(1319.839f, 1189.257f, 79.94f), painbox_door_radius_continuous), + owning_building_guid = 211 + ) + LocalObject( + 982, + Painbox.Constructor(Vector3(1320.192f, 1216.896f, 79.94f), painbox_door_radius_continuous), + owning_building_guid = 211 + ) + LocalObject( + 983, + Painbox.Constructor(Vector3(1334.933f, 1203.317f, 79.94f), painbox_door_radius_continuous), + owning_building_guid = 211 + ) } Building10012() def Building10012(): Unit = { // Name: Core Type: vanu_core GUID: 212, MapID: 10012 - LocalBuilding("Core", 212, 10012, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1026.95f, 1013.73f, 97.73f), Vector3(0f, 0f, 0f), vanu_core))) + LocalBuilding( + "Core", + 212, + 10012, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1026.95f, 1013.73f, 97.73f), + Vector3(0f, 0f, 0f), + vanu_core + ) + ) + ) LocalObject(828, Door.Constructor(Vector3(994.457f, 1001.752f, 104.518f)), owning_building_guid = 212) LocalObject(832, Door.Constructor(Vector3(1022.928f, 973.237f, 104.518f)), owning_building_guid = 212) LocalObject(833, Door.Constructor(Vector3(1022.928f, 973.237f, 109.518f)), owning_building_guid = 212) @@ -465,8 +1135,24 @@ object Ugd03 { // Adlivun Building10156() def Building10156(): Unit = { // Name: NW_ATPlant Type: vanu_vehicle_station GUID: 257, MapID: 10156 - LocalBuilding("NW_ATPlant", 257, 10156, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(772.18f, 1217.7f, 43.18f), Vector3(0f, 0f, 118f), vanu_vehicle_station))) - LocalObject(1026, CaptureTerminal.Constructor(Vector3(816.3231f, 1180.213f, 73.664f), vanu_control_console), owning_building_guid = 257) + LocalBuilding( + "NW_ATPlant", + 257, + 10156, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(772.18f, 1217.7f, 43.18f), + Vector3(0f, 0f, 118f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 1026, + CaptureTerminal.Constructor(Vector3(816.3231f, 1180.213f, 73.664f), vanu_control_console), + owning_building_guid = 257 + ) LocalObject(795, Door.Constructor(Vector3(761.205f, 1206.612f, 44.959f)), owning_building_guid = 257) LocalObject(798, Door.Constructor(Vector3(779.6216f, 1189.222f, 64.871f)), owning_building_guid = 257) LocalObject(802, Door.Constructor(Vector3(801.209f, 1182.579f, 74.959f)), owning_building_guid = 257) @@ -476,21 +1162,75 @@ object Ugd03 { // Adlivun LocalObject(807, Door.Constructor(Vector3(818.1613f, 1236.896f, 44.959f)), owning_building_guid = 257) LocalObject(808, Door.Constructor(Vector3(822.8236f, 1194.072f, 74.959f)), owning_building_guid = 257) LocalObject(914, Door.Constructor(Vector3(817.9047f, 1168.759f, 49.813f)), owning_building_guid = 257) - LocalObject(1019, Terminal.Constructor(Vector3(780.8441f, 1200.851f, 63.097f), vanu_air_vehicle_term), owning_building_guid = 257) - LocalObject(1099, VehicleSpawnPad.Constructor(Vector3(785.5449f, 1208.388f, 63.096f), vanu_vehicle_creation_pad, Vector3(0, 0, -28)), owning_building_guid = 257, terminal_guid = 1019) - LocalObject(1020, Terminal.Constructor(Vector3(812.0989f, 1217.48f, 63.097f), vanu_air_vehicle_term), owning_building_guid = 257) - LocalObject(1100, VehicleSpawnPad.Constructor(Vector3(803.218f, 1217.785f, 63.096f), vanu_vehicle_creation_pad, Vector3(0, 0, -28)), owning_building_guid = 257, terminal_guid = 1020) - LocalObject(1053, Terminal.Constructor(Vector3(789.0759f, 1197.368f, 45.68f), vanu_equipment_term), owning_building_guid = 257) - LocalObject(1054, Terminal.Constructor(Vector3(810.2666f, 1208.635f, 45.68f), vanu_equipment_term), owning_building_guid = 257) - LocalObject(1105, Terminal.Constructor(Vector3(802.3574f, 1198.242f, 48.18f), vanu_vehicle_term), owning_building_guid = 257) - LocalObject(1101, VehicleSpawnPad.Constructor(Vector3(809.3684f, 1184.826f, 45.585f), vanu_vehicle_creation_pad, Vector3(0, 0, 152)), owning_building_guid = 257, terminal_guid = 1105) + LocalObject( + 1019, + Terminal.Constructor(Vector3(780.8441f, 1200.851f, 63.097f), vanu_air_vehicle_term), + owning_building_guid = 257 + ) + LocalObject( + 1099, + VehicleSpawnPad + .Constructor(Vector3(785.5449f, 1208.388f, 63.096f), vanu_vehicle_creation_pad, Vector3(0, 0, -28)), + owning_building_guid = 257, + terminal_guid = 1019 + ) + LocalObject( + 1020, + Terminal.Constructor(Vector3(812.0989f, 1217.48f, 63.097f), vanu_air_vehicle_term), + owning_building_guid = 257 + ) + LocalObject( + 1100, + VehicleSpawnPad + .Constructor(Vector3(803.218f, 1217.785f, 63.096f), vanu_vehicle_creation_pad, Vector3(0, 0, -28)), + owning_building_guid = 257, + terminal_guid = 1020 + ) + LocalObject( + 1053, + Terminal.Constructor(Vector3(789.0759f, 1197.368f, 45.68f), vanu_equipment_term), + owning_building_guid = 257 + ) + LocalObject( + 1054, + Terminal.Constructor(Vector3(810.2666f, 1208.635f, 45.68f), vanu_equipment_term), + owning_building_guid = 257 + ) + LocalObject( + 1105, + Terminal.Constructor(Vector3(802.3574f, 1198.242f, 48.18f), vanu_vehicle_term), + owning_building_guid = 257 + ) + LocalObject( + 1101, + VehicleSpawnPad + .Constructor(Vector3(809.3684f, 1184.826f, 45.585f), vanu_vehicle_creation_pad, Vector3(0, 0, 152)), + owning_building_guid = 257, + terminal_guid = 1105 + ) } Building10007() def Building10007(): Unit = { // Name: SE_ATPlant Type: vanu_vehicle_station GUID: 258, MapID: 10007 - LocalBuilding("SE_ATPlant", 258, 10007, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1352.53f, 780.12f, 43.78f), Vector3(0f, 0f, 307f), vanu_vehicle_station))) - LocalObject(1027, CaptureTerminal.Constructor(Vector3(1303.066f, 810.2399f, 74.264f), vanu_control_console), owning_building_guid = 258) + LocalBuilding( + "SE_ATPlant", + 258, + 10007, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1352.53f, 780.12f, 43.78f), + Vector3(0f, 0f, 307f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 1027, + CaptureTerminal.Constructor(Vector3(1303.066f, 810.2399f, 74.264f), vanu_control_console), + owning_building_guid = 258 + ) LocalObject(879, Door.Constructor(Vector3(1298.814f, 795.5347f, 75.559f)), owning_building_guid = 258) LocalObject(880, Door.Constructor(Vector3(1305.402f, 800.4932f, 75.539f)), owning_building_guid = 258) LocalObject(882, Door.Constructor(Vector3(1310.118f, 753.9674f, 45.559f)), owning_building_guid = 258) @@ -500,192 +1240,682 @@ object Ugd03 { // Adlivun LocalObject(896, Door.Constructor(Vector3(1340.725f, 807.0831f, 65.471f)), owning_building_guid = 258) LocalObject(901, Door.Constructor(Vector3(1361.635f, 792.7887f, 45.559f)), owning_building_guid = 258) LocalObject(915, Door.Constructor(Vector3(1299.712f, 821.3058f, 50.413f)), owning_building_guid = 258) - LocalObject(1021, Terminal.Constructor(Vector3(1313.068f, 774.0926f, 63.697f), vanu_air_vehicle_term), owning_building_guid = 258) - LocalObject(1103, VehicleSpawnPad.Constructor(Vector3(1321.888f, 775.1802f, 63.696f), vanu_vehicle_creation_pad, Vector3(0, 0, 143)), owning_building_guid = 258, terminal_guid = 1021) - LocalObject(1022, Terminal.Constructor(Vector3(1341.337f, 795.4058f, 63.697f), vanu_air_vehicle_term), owning_building_guid = 258) - LocalObject(1104, VehicleSpawnPad.Constructor(Vector3(1337.873f, 787.2261f, 63.696f), vanu_vehicle_creation_pad, Vector3(0, 0, 143)), owning_building_guid = 258, terminal_guid = 1022) - LocalObject(1071, Terminal.Constructor(Vector3(1313.494f, 783.1147f, 46.28f), vanu_equipment_term), owning_building_guid = 258) - LocalObject(1078, Terminal.Constructor(Vector3(1332.662f, 797.5583f, 46.28f), vanu_equipment_term), owning_building_guid = 258) - LocalObject(1106, Terminal.Constructor(Vector3(1319.68f, 794.6179f, 48.78f), vanu_vehicle_term), owning_building_guid = 258) - LocalObject(1102, VehicleSpawnPad.Constructor(Vector3(1310.657f, 806.7718f, 46.185f), vanu_vehicle_creation_pad, Vector3(0, 0, -37)), owning_building_guid = 258, terminal_guid = 1106) + LocalObject( + 1021, + Terminal.Constructor(Vector3(1313.068f, 774.0926f, 63.697f), vanu_air_vehicle_term), + owning_building_guid = 258 + ) + LocalObject( + 1103, + VehicleSpawnPad + .Constructor(Vector3(1321.888f, 775.1802f, 63.696f), vanu_vehicle_creation_pad, Vector3(0, 0, 143)), + owning_building_guid = 258, + terminal_guid = 1021 + ) + LocalObject( + 1022, + Terminal.Constructor(Vector3(1341.337f, 795.4058f, 63.697f), vanu_air_vehicle_term), + owning_building_guid = 258 + ) + LocalObject( + 1104, + VehicleSpawnPad + .Constructor(Vector3(1337.873f, 787.2261f, 63.696f), vanu_vehicle_creation_pad, Vector3(0, 0, 143)), + owning_building_guid = 258, + terminal_guid = 1022 + ) + LocalObject( + 1071, + Terminal.Constructor(Vector3(1313.494f, 783.1147f, 46.28f), vanu_equipment_term), + owning_building_guid = 258 + ) + LocalObject( + 1078, + Terminal.Constructor(Vector3(1332.662f, 797.5583f, 46.28f), vanu_equipment_term), + owning_building_guid = 258 + ) + LocalObject( + 1106, + Terminal.Constructor(Vector3(1319.68f, 794.6179f, 48.78f), vanu_vehicle_term), + owning_building_guid = 258 + ) + LocalObject( + 1102, + VehicleSpawnPad + .Constructor(Vector3(1310.657f, 806.7718f, 46.185f), vanu_vehicle_creation_pad, Vector3(0, 0, -37)), + owning_building_guid = 258, + terminal_guid = 1106 + ) } Building10212() def Building10212(): Unit = { // Name: GW_Cavern3_W Type: warpgate_cavern GUID: 259, MapID: 10212 - LocalBuilding("GW_Cavern3_W", 259, 10212, FoundationBuilder(WarpGate.Structure(Vector3(154.12f, 833.73f, 32.98f)))) + LocalBuilding( + "GW_Cavern3_W", + 259, + 10212, + FoundationBuilder(WarpGate.Structure(Vector3(154.12f, 833.73f, 32.98f))) + ) } Building10405() def Building10405(): Unit = { // Name: GW_Cavern3_S Type: warpgate_cavern GUID: 260, MapID: 10405 - LocalBuilding("GW_Cavern3_S", 260, 10405, FoundationBuilder(WarpGate.Structure(Vector3(949.84f, 285.73f, 29.82f)))) + LocalBuilding( + "GW_Cavern3_S", + 260, + 10405, + FoundationBuilder(WarpGate.Structure(Vector3(949.84f, 285.73f, 29.82f))) + ) } Building10214() def Building10214(): Unit = { // Name: GW_Cavern3_N Type: warpgate_cavern GUID: 261, MapID: 10214 - LocalBuilding("GW_Cavern3_N", 261, 10214, FoundationBuilder(WarpGate.Structure(Vector3(1128.81f, 1755.28f, 14.5f)))) + LocalBuilding( + "GW_Cavern3_N", + 261, + 10214, + FoundationBuilder(WarpGate.Structure(Vector3(1128.81f, 1755.28f, 14.5f))) + ) } Building10215() def Building10215(): Unit = { // Name: GW_Cavern3_E Type: warpgate_cavern GUID: 262, MapID: 10215 - LocalBuilding("GW_Cavern3_E", 262, 10215, FoundationBuilder(WarpGate.Structure(Vector3(1889.78f, 1018.32f, 33.14f)))) + LocalBuilding( + "GW_Cavern3_E", + 262, + 10215, + FoundationBuilder(WarpGate.Structure(Vector3(1889.78f, 1018.32f, 33.14f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(213, Terminal.Constructor(Vector3(780.02f, 670.64f, 112.67f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(214, Terminal.Constructor(Vector3(1318.38f, 909.65f, 59.3f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1030, Terminal.Constructor(Vector3(624.28f, 958.12f, 74.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1031, Terminal.Constructor(Vector3(624.38f, 975.77f, 74.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1032, Terminal.Constructor(Vector3(634.07f, 835.13f, 80.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1033, Terminal.Constructor(Vector3(647.92f, 794.89f, 80.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1042, Terminal.Constructor(Vector3(684.98f, 878.61f, 107.18f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1043, Terminal.Constructor(Vector3(689.91f, 646.49f, 76.69f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1044, Terminal.Constructor(Vector3(704.82f, 1254.2f, 88.18f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1045, Terminal.Constructor(Vector3(710.23f, 1277.36f, 88.11f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1046, Terminal.Constructor(Vector3(711.35f, 1221.54f, 43.33f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1048, Terminal.Constructor(Vector3(719.63f, 809.77f, 91.26f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1050, Terminal.Constructor(Vector3(725.86f, 1196.85f, 43.3f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1051, Terminal.Constructor(Vector3(769.95f, 1078.39f, 99.83f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1052, Terminal.Constructor(Vector3(788.59f, 1093.02f, 99.81f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1055, Terminal.Constructor(Vector3(844.02f, 778.6f, 106.01f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1056, Terminal.Constructor(Vector3(846.68f, 782.07f, 111.52f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1057, Terminal.Constructor(Vector3(892.74f, 1362.69f, 43.29f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1058, Terminal.Constructor(Vector3(901.96f, 911.49f, 110.81f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1059, Terminal.Constructor(Vector3(913.09f, 1382.92f, 43.27f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1060, Terminal.Constructor(Vector3(931.79f, 694.1f, 81.75f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1061, Terminal.Constructor(Vector3(939.31f, 922.44f, 110.81f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1062, Terminal.Constructor(Vector3(965.76f, 756.59f, 85.54f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1063, Terminal.Constructor(Vector3(970.27f, 1330.25f, 72.43f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1064, Terminal.Constructor(Vector3(1044.21f, 1256.84f, 72.9f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1065, Terminal.Constructor(Vector3(1064.8f, 1236.89f, 72.91f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1066, Terminal.Constructor(Vector3(1134.99f, 739.94f, 107.09f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1067, Terminal.Constructor(Vector3(1226.99f, 1239f, 96.63f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1068, Terminal.Constructor(Vector3(1239.95f, 1091.6f, 109.43f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1079, Terminal.Constructor(Vector3(1362.64f, 657.92f, 88.17f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1080, Terminal.Constructor(Vector3(1387.46f, 783.22f, 43.32f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1081, Terminal.Constructor(Vector3(1388.46f, 1124.9f, 122.73f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(1084, Terminal.Constructor(Vector3(1407.92f, 763.14f, 43.3f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(42, ProximityTerminal.Constructor(Vector3(671.13f, 701.13f, 69.9f), crystals_health_a), owning_building_guid = 0) - LocalObject(43, ProximityTerminal.Constructor(Vector3(737.38f, 1261.19f, 51.62f), crystals_health_a), owning_building_guid = 0) - LocalObject(44, ProximityTerminal.Constructor(Vector3(1020.78f, 1217.26f, 64.92f), crystals_health_a), owning_building_guid = 0) - LocalObject(45, ProximityTerminal.Constructor(Vector3(1340.04f, 1166.81f, 69.59f), crystals_health_a), owning_building_guid = 0) - LocalObject(46, ProximityTerminal.Constructor(Vector3(579.33f, 1056.62f, 41.42f), crystals_health_b), owning_building_guid = 0) - LocalObject(47, ProximityTerminal.Constructor(Vector3(636.55f, 1292.57f, 41.36f), crystals_health_b), owning_building_guid = 0) - LocalObject(48, ProximityTerminal.Constructor(Vector3(687.24f, 830.88f, 70.1f), crystals_health_b), owning_building_guid = 0) - LocalObject(49, ProximityTerminal.Constructor(Vector3(743.37f, 1368.45f, 59.02f), crystals_health_b), owning_building_guid = 0) - LocalObject(50, ProximityTerminal.Constructor(Vector3(756.64f, 1114.73f, 59f), crystals_health_b), owning_building_guid = 0) - LocalObject(51, ProximityTerminal.Constructor(Vector3(913.82f, 1019.54f, 61.84f), crystals_health_b), owning_building_guid = 0) - LocalObject(52, ProximityTerminal.Constructor(Vector3(928.1f, 1348.9f, 41.36f), crystals_health_b), owning_building_guid = 0) - LocalObject(53, ProximityTerminal.Constructor(Vector3(1108.67f, 1281.84f, 41.36f), crystals_health_b), owning_building_guid = 0) - LocalObject(54, ProximityTerminal.Constructor(Vector3(1184.81f, 1112.77f, 41.36f), crystals_health_b), owning_building_guid = 0) - LocalObject(55, ProximityTerminal.Constructor(Vector3(1286.46f, 1233.98f, 69.59f), crystals_health_b), owning_building_guid = 0) - LocalObject(56, ProximityTerminal.Constructor(Vector3(1342.38f, 1104.26f, 67.85f), crystals_health_b), owning_building_guid = 0) - LocalObject(57, ProximityTerminal.Constructor(Vector3(1436.35f, 841.23f, 68.56f), crystals_health_b), owning_building_guid = 0) - LocalObject(944, ProximityTerminal.Constructor(Vector3(930.26f, 904.42f, 105.99f), crystals_health_a), owning_building_guid = 0) - LocalObject(945, ProximityTerminal.Constructor(Vector3(930.97f, 903.87f, 106.04f), crystals_health_a), owning_building_guid = 0) - LocalObject(946, ProximityTerminal.Constructor(Vector3(946.33f, 474.23f, 47.38f), crystals_health_a), owning_building_guid = 0) - LocalObject(947, ProximityTerminal.Constructor(Vector3(991.84f, 757.6f, 85.29f), crystals_health_a), owning_building_guid = 0) - LocalObject(948, ProximityTerminal.Constructor(Vector3(992.69f, 757.95f, 85.39f), crystals_health_a), owning_building_guid = 0) - LocalObject(949, ProximityTerminal.Constructor(Vector3(993.29f, 755.79f, 85.34f), crystals_health_a), owning_building_guid = 0) - LocalObject(950, ProximityTerminal.Constructor(Vector3(998.74f, 1229.32f, 107.18f), crystals_health_a), owning_building_guid = 0) - LocalObject(951, ProximityTerminal.Constructor(Vector3(1144.18f, 1543.48f, 47.43f), crystals_health_a), owning_building_guid = 0) - LocalObject(952, ProximityTerminal.Constructor(Vector3(1287.42f, 693.51f, 84.73f), crystals_health_a), owning_building_guid = 0) - LocalObject(953, ProximityTerminal.Constructor(Vector3(1402.34f, 845.88f, 98.92f), crystals_health_a), owning_building_guid = 0) - LocalObject(954, ProximityTerminal.Constructor(Vector3(709.62f, 964.7f, 54.77f), crystals_health_b), owning_building_guid = 0) - LocalObject(955, ProximityTerminal.Constructor(Vector3(727.34f, 816.47f, 91.39f), crystals_health_b), owning_building_guid = 0) - LocalObject(956, ProximityTerminal.Constructor(Vector3(992.66f, 756.8f, 85.39f), crystals_health_b), owning_building_guid = 0) - LocalObject(957, ProximityTerminal.Constructor(Vector3(1074.65f, 1304.35f, 73.4f), crystals_health_b), owning_building_guid = 0) - LocalObject(958, ProximityTerminal.Constructor(Vector3(1076.72f, 1310.3f, 73.4f), crystals_health_b), owning_building_guid = 0) - LocalObject(959, ProximityTerminal.Constructor(Vector3(1238.29f, 1314.99f, 97.59f), crystals_health_b), owning_building_guid = 0) - LocalObject(960, ProximityTerminal.Constructor(Vector3(1246.89f, 776.94f, 95.32f), crystals_health_b), owning_building_guid = 0) - LocalObject(215, FacilityTurret.Constructor(Vector3(671.05f, 1022.46f, 62.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 213, + Terminal.Constructor(Vector3(780.02f, 670.64f, 112.67f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 214, + Terminal.Constructor(Vector3(1318.38f, 909.65f, 59.3f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1030, + Terminal.Constructor(Vector3(624.28f, 958.12f, 74.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1031, + Terminal.Constructor(Vector3(624.38f, 975.77f, 74.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1032, + Terminal.Constructor(Vector3(634.07f, 835.13f, 80.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1033, + Terminal.Constructor(Vector3(647.92f, 794.89f, 80.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1042, + Terminal.Constructor(Vector3(684.98f, 878.61f, 107.18f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1043, + Terminal.Constructor(Vector3(689.91f, 646.49f, 76.69f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1044, + Terminal.Constructor(Vector3(704.82f, 1254.2f, 88.18f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1045, + Terminal.Constructor(Vector3(710.23f, 1277.36f, 88.11f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1046, + Terminal.Constructor(Vector3(711.35f, 1221.54f, 43.33f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1048, + Terminal.Constructor(Vector3(719.63f, 809.77f, 91.26f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1050, + Terminal.Constructor(Vector3(725.86f, 1196.85f, 43.3f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1051, + Terminal.Constructor(Vector3(769.95f, 1078.39f, 99.83f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1052, + Terminal.Constructor(Vector3(788.59f, 1093.02f, 99.81f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1055, + Terminal.Constructor(Vector3(844.02f, 778.6f, 106.01f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1056, + Terminal.Constructor(Vector3(846.68f, 782.07f, 111.52f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1057, + Terminal.Constructor(Vector3(892.74f, 1362.69f, 43.29f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1058, + Terminal.Constructor(Vector3(901.96f, 911.49f, 110.81f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1059, + Terminal.Constructor(Vector3(913.09f, 1382.92f, 43.27f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1060, + Terminal.Constructor(Vector3(931.79f, 694.1f, 81.75f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1061, + Terminal.Constructor(Vector3(939.31f, 922.44f, 110.81f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1062, + Terminal.Constructor(Vector3(965.76f, 756.59f, 85.54f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1063, + Terminal.Constructor(Vector3(970.27f, 1330.25f, 72.43f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1064, + Terminal.Constructor(Vector3(1044.21f, 1256.84f, 72.9f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1065, + Terminal.Constructor(Vector3(1064.8f, 1236.89f, 72.91f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1066, + Terminal.Constructor(Vector3(1134.99f, 739.94f, 107.09f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1067, + Terminal.Constructor(Vector3(1226.99f, 1239f, 96.63f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1068, + Terminal.Constructor(Vector3(1239.95f, 1091.6f, 109.43f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1079, + Terminal.Constructor(Vector3(1362.64f, 657.92f, 88.17f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1080, + Terminal.Constructor(Vector3(1387.46f, 783.22f, 43.32f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1081, + Terminal.Constructor(Vector3(1388.46f, 1124.9f, 122.73f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 1084, + Terminal.Constructor(Vector3(1407.92f, 763.14f, 43.3f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 42, + ProximityTerminal.Constructor(Vector3(671.13f, 701.13f, 69.9f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 43, + ProximityTerminal.Constructor(Vector3(737.38f, 1261.19f, 51.62f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 44, + ProximityTerminal.Constructor(Vector3(1020.78f, 1217.26f, 64.92f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 45, + ProximityTerminal.Constructor(Vector3(1340.04f, 1166.81f, 69.59f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 46, + ProximityTerminal.Constructor(Vector3(579.33f, 1056.62f, 41.42f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 47, + ProximityTerminal.Constructor(Vector3(636.55f, 1292.57f, 41.36f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 48, + ProximityTerminal.Constructor(Vector3(687.24f, 830.88f, 70.1f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 49, + ProximityTerminal.Constructor(Vector3(743.37f, 1368.45f, 59.02f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 50, + ProximityTerminal.Constructor(Vector3(756.64f, 1114.73f, 59f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 51, + ProximityTerminal.Constructor(Vector3(913.82f, 1019.54f, 61.84f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 52, + ProximityTerminal.Constructor(Vector3(928.1f, 1348.9f, 41.36f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 53, + ProximityTerminal.Constructor(Vector3(1108.67f, 1281.84f, 41.36f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 54, + ProximityTerminal.Constructor(Vector3(1184.81f, 1112.77f, 41.36f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 55, + ProximityTerminal.Constructor(Vector3(1286.46f, 1233.98f, 69.59f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 56, + ProximityTerminal.Constructor(Vector3(1342.38f, 1104.26f, 67.85f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 57, + ProximityTerminal.Constructor(Vector3(1436.35f, 841.23f, 68.56f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 944, + ProximityTerminal.Constructor(Vector3(930.26f, 904.42f, 105.99f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 945, + ProximityTerminal.Constructor(Vector3(930.97f, 903.87f, 106.04f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 946, + ProximityTerminal.Constructor(Vector3(946.33f, 474.23f, 47.38f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 947, + ProximityTerminal.Constructor(Vector3(991.84f, 757.6f, 85.29f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 948, + ProximityTerminal.Constructor(Vector3(992.69f, 757.95f, 85.39f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 949, + ProximityTerminal.Constructor(Vector3(993.29f, 755.79f, 85.34f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 950, + ProximityTerminal.Constructor(Vector3(998.74f, 1229.32f, 107.18f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 951, + ProximityTerminal.Constructor(Vector3(1144.18f, 1543.48f, 47.43f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 952, + ProximityTerminal.Constructor(Vector3(1287.42f, 693.51f, 84.73f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 953, + ProximityTerminal.Constructor(Vector3(1402.34f, 845.88f, 98.92f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 954, + ProximityTerminal.Constructor(Vector3(709.62f, 964.7f, 54.77f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 955, + ProximityTerminal.Constructor(Vector3(727.34f, 816.47f, 91.39f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 956, + ProximityTerminal.Constructor(Vector3(992.66f, 756.8f, 85.39f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 957, + ProximityTerminal.Constructor(Vector3(1074.65f, 1304.35f, 73.4f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 958, + ProximityTerminal.Constructor(Vector3(1076.72f, 1310.3f, 73.4f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 959, + ProximityTerminal.Constructor(Vector3(1238.29f, 1314.99f, 97.59f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 960, + ProximityTerminal.Constructor(Vector3(1246.89f, 776.94f, 95.32f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 215, + FacilityTurret.Constructor(Vector3(671.05f, 1022.46f, 62.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(215, 5000) - LocalObject(216, FacilityTurret.Constructor(Vector3(681.18f, 1080.93f, 59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 216, + FacilityTurret.Constructor(Vector3(681.18f, 1080.93f, 59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(216, 5001) - LocalObject(217, FacilityTurret.Constructor(Vector3(689.3f, 651.45f, 95f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 217, + FacilityTurret.Constructor(Vector3(689.3f, 651.45f, 95f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(217, 5002) - LocalObject(218, FacilityTurret.Constructor(Vector3(701.81f, 793.95f, 69.9f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 218, + FacilityTurret.Constructor(Vector3(701.81f, 793.95f, 69.9f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(218, 5003) - LocalObject(219, FacilityTurret.Constructor(Vector3(728.17f, 881.62f, 69.9f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 219, + FacilityTurret.Constructor(Vector3(728.17f, 881.62f, 69.9f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(219, 5004) - LocalObject(220, FacilityTurret.Constructor(Vector3(736.87f, 700.59f, 87.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 220, + FacilityTurret.Constructor(Vector3(736.87f, 700.59f, 87.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(220, 5005) - LocalObject(221, FacilityTurret.Constructor(Vector3(746.13f, 1229.55f, 41.36f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 221, + FacilityTurret.Constructor(Vector3(746.13f, 1229.55f, 41.36f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(221, 5006) - LocalObject(222, FacilityTurret.Constructor(Vector3(746.73f, 1093.17f, 59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 222, + FacilityTurret.Constructor(Vector3(746.73f, 1093.17f, 59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(222, 5007) - LocalObject(223, FacilityTurret.Constructor(Vector3(748.15f, 766.38f, 87.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 223, + FacilityTurret.Constructor(Vector3(748.15f, 766.38f, 87.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(223, 5008) - LocalObject(224, FacilityTurret.Constructor(Vector3(854.55f, 1248.58f, 66.27f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 224, + FacilityTurret.Constructor(Vector3(854.55f, 1248.58f, 66.27f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(224, 5009) - LocalObject(225, FacilityTurret.Constructor(Vector3(864.98f, 1320.1f, 66.27f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 225, + FacilityTurret.Constructor(Vector3(864.98f, 1320.1f, 66.27f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(225, 5010) - LocalObject(226, FacilityTurret.Constructor(Vector3(877.91f, 1173.83f, 68.41f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 226, + FacilityTurret.Constructor(Vector3(877.91f, 1173.83f, 68.41f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(226, 5011) - LocalObject(227, FacilityTurret.Constructor(Vector3(883.97f, 1017.33f, 54.38f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 227, + FacilityTurret.Constructor(Vector3(883.97f, 1017.33f, 54.38f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(227, 5012) - LocalObject(228, FacilityTurret.Constructor(Vector3(901.31f, 983.05f, 61.74f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 228, + FacilityTurret.Constructor(Vector3(901.31f, 983.05f, 61.74f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(228, 5013) - LocalObject(229, FacilityTurret.Constructor(Vector3(909.48f, 918.12f, 61.74f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 229, + FacilityTurret.Constructor(Vector3(909.48f, 918.12f, 61.74f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(229, 5014) - LocalObject(230, FacilityTurret.Constructor(Vector3(917.26f, 787.24f, 63.97f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 230, + FacilityTurret.Constructor(Vector3(917.26f, 787.24f, 63.97f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(230, 5015) - LocalObject(231, FacilityTurret.Constructor(Vector3(939.49f, 1060.28f, 61.64f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 231, + FacilityTurret.Constructor(Vector3(939.49f, 1060.28f, 61.64f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(231, 5016) - LocalObject(232, FacilityTurret.Constructor(Vector3(941.77f, 1113.86f, 54.38f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 232, + FacilityTurret.Constructor(Vector3(941.77f, 1113.86f, 54.38f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(232, 5017) - LocalObject(233, FacilityTurret.Constructor(Vector3(982.77f, 1110.81f, 61.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 233, + FacilityTurret.Constructor(Vector3(982.77f, 1110.81f, 61.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(233, 5018) - LocalObject(234, FacilityTurret.Constructor(Vector3(985.8f, 895.48f, 61.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 234, + FacilityTurret.Constructor(Vector3(985.8f, 895.48f, 61.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(234, 5019) - LocalObject(235, FacilityTurret.Constructor(Vector3(996.73f, 784.5f, 63.97f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 235, + FacilityTurret.Constructor(Vector3(996.73f, 784.5f, 63.97f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(235, 5020) - LocalObject(236, FacilityTurret.Constructor(Vector3(1002.9f, 1166.68f, 52.22f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 236, + FacilityTurret.Constructor(Vector3(1002.9f, 1166.68f, 52.22f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(236, 5021) - LocalObject(237, FacilityTurret.Constructor(Vector3(1014.38f, 1226.21f, 64.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 237, + FacilityTurret.Constructor(Vector3(1014.38f, 1226.21f, 64.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(237, 5022) - LocalObject(238, FacilityTurret.Constructor(Vector3(1028.06f, 669.31f, 62.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 238, + FacilityTurret.Constructor(Vector3(1028.06f, 669.31f, 62.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(238, 5023) - LocalObject(239, FacilityTurret.Constructor(Vector3(1056.63f, 874.36f, 61.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 239, + FacilityTurret.Constructor(Vector3(1056.63f, 874.36f, 61.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(239, 5024) - LocalObject(240, FacilityTurret.Constructor(Vector3(1069.55f, 1275.28f, 62.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 240, + FacilityTurret.Constructor(Vector3(1069.55f, 1275.28f, 62.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(240, 5025) - LocalObject(241, FacilityTurret.Constructor(Vector3(1076.77f, 1068.19f, 62.04f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 241, + FacilityTurret.Constructor(Vector3(1076.77f, 1068.19f, 62.04f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(241, 5026) - LocalObject(242, FacilityTurret.Constructor(Vector3(1082.69f, 1164.76f, 64.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 242, + FacilityTurret.Constructor(Vector3(1082.69f, 1164.76f, 64.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(242, 5027) - LocalObject(243, FacilityTurret.Constructor(Vector3(1105.3f, 1003.03f, 62.24f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 243, + FacilityTurret.Constructor(Vector3(1105.3f, 1003.03f, 62.24f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(243, 5028) - LocalObject(244, FacilityTurret.Constructor(Vector3(1119.23f, 1353.03f, 52.22f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 244, + FacilityTurret.Constructor(Vector3(1119.23f, 1353.03f, 52.22f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(244, 5029) - LocalObject(245, FacilityTurret.Constructor(Vector3(1124.97f, 1310.46f, 62.98f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 245, + FacilityTurret.Constructor(Vector3(1124.97f, 1310.46f, 62.98f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(245, 5030) - LocalObject(246, FacilityTurret.Constructor(Vector3(1157.82f, 955.18f, 61.94f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 246, + FacilityTurret.Constructor(Vector3(1157.82f, 955.18f, 61.94f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(246, 5031) - LocalObject(247, FacilityTurret.Constructor(Vector3(1178.75f, 1243.1f, 85.48f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 247, + FacilityTurret.Constructor(Vector3(1178.75f, 1243.1f, 85.48f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(247, 5032) - LocalObject(248, FacilityTurret.Constructor(Vector3(1193.11f, 1291.49f, 69.59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 248, + FacilityTurret.Constructor(Vector3(1193.11f, 1291.49f, 69.59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(248, 5033) - LocalObject(249, FacilityTurret.Constructor(Vector3(1262.41f, 1378.94f, 54.88f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 249, + FacilityTurret.Constructor(Vector3(1262.41f, 1378.94f, 54.88f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(249, 5034) - LocalObject(250, FacilityTurret.Constructor(Vector3(1265.56f, 1152.95f, 69.59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 250, + FacilityTurret.Constructor(Vector3(1265.56f, 1152.95f, 69.59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(250, 5035) - LocalObject(251, FacilityTurret.Constructor(Vector3(1267.66f, 912.72f, 59.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 251, + FacilityTurret.Constructor(Vector3(1267.66f, 912.72f, 59.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(251, 5036) - LocalObject(252, FacilityTurret.Constructor(Vector3(1270.57f, 730.4f, 66.27f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 252, + FacilityTurret.Constructor(Vector3(1270.57f, 730.4f, 66.27f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(252, 5037) - LocalObject(253, FacilityTurret.Constructor(Vector3(1271.14f, 1252.61f, 85.48f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 253, + FacilityTurret.Constructor(Vector3(1271.14f, 1252.61f, 85.48f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(253, 5038) - LocalObject(254, FacilityTurret.Constructor(Vector3(1334.21f, 1161.61f, 69.59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 254, + FacilityTurret.Constructor(Vector3(1334.21f, 1161.61f, 69.59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(254, 5039) - LocalObject(255, FacilityTurret.Constructor(Vector3(1353.22f, 911.37f, 59f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 255, + FacilityTurret.Constructor(Vector3(1353.22f, 911.37f, 59f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(255, 5040) - LocalObject(256, FacilityTurret.Constructor(Vector3(1364.71f, 1255.48f, 68.94f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 256, + FacilityTurret.Constructor(Vector3(1364.71f, 1255.48f, 68.94f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(256, 5041) } @@ -707,330 +1937,3126 @@ object Ugd03 { // Adlivun Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, true, List(Vector3(595.769f, 971.013f, 68.367f), Vector3(617.24f, 982.719f, 85.965f)))) - ZipLinePaths(new ZipLinePath(2, false, List(Vector3(597.42f, 911.907f, 87.951f), Vector3(611.503f, 936.96f, 72.997f)))) - ZipLinePaths(new ZipLinePath(3, true, List(Vector3(622.076f, 1023.44f, 63.331f), Vector3(622.719f, 1018.502f, 93.332f)))) - ZipLinePaths(new ZipLinePath(4, false, List(Vector3(628.066f, 653.647f, 80.947f), Vector3(652.793f, 654.85f, 98.078f), Vector3(677.121f, 654.452f, 121.481f), Vector3(710.524f, 646.688f, 122.73f), Vector3(744.227f, 642.925f, 123.98f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(631.571f, 1017.425f, 93.82f), Vector3(653.945f, 1018.949f, 91.508f), Vector3(676.32f, 1020.473f, 70.296f), Vector3(688.877f, 1021.349f, 58.994f), Vector3(701.634f, 1022.026f, 51.414f)))) - ZipLinePaths(new ZipLinePath(6, false, List(Vector3(639.683f, 966.037f, 84.225f), Vector3(689.438f, 956.275f, 90.453f), Vector3(739.193f, 946.514f, 95.94f), Vector3(788.948f, 936.752f, 101.427f), Vector3(838.703f, 926.99f, 106.914f), Vector3(883.58f, 918.186f, 111.693f)))) - ZipLinePaths(new ZipLinePath(7, false, List(Vector3(641.629f, 1156.085f, 64.865f), Vector3(665.451f, 1200.132f, 77.38f), Vector3(688.672f, 1243.979f, 89.156f), Vector3(690.138f, 1247.258f, 89.3f)))) - ZipLinePaths(new ZipLinePath(8, true, List(Vector3(647.373f, 1216.143f, 59.351f), Vector3(649.375f, 1217.21f, 92.651f)))) - ZipLinePaths(new ZipLinePath(9, false, List(Vector3(656.468f, 1211.522f, 93.177f), Vector3(681.191f, 1213.828f, 92.881f), Vector3(705.915f, 1216.135f, 82.302f), Vector3(730.384f, 1218.306f, 73.437f), Vector3(754.853f, 1220.477f, 67.488f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(664.549f, 761.402f, 102.108f), Vector3(675.283f, 781.529f, 101.954f), Vector3(696.017f, 800.657f, 94.508f), Vector3(698.568f, 805.866f, 92.115f)))) - ZipLinePaths(new ZipLinePath(11, false, List(Vector3(667.071f, 1071.46f, 59.851f), Vector3(640.825f, 1029.389f, 67.036f), Vector3(639.251f, 1026.864f, 63.832f)))) - ZipLinePaths(new ZipLinePath(12, true, List(Vector3(681.428f, 851.663f, 102.023f), Vector3(682.274f, 857.674f, 107.525f)))) - ZipLinePaths(new ZipLinePath(13, false, List(Vector3(688.419f, 814.561f, 92.096f), Vector3(651.401f, 848.164f, 92.076f), Vector3(614.383f, 881.766f, 91.308f), Vector3(600.317f, 894.536f, 87.967f)))) - ZipLinePaths(new ZipLinePath(14, false, List(Vector3(690.738f, 1071.926f, 59.857f), Vector3(718.545f, 1031.94f, 51.832f)))) - ZipLinePaths(new ZipLinePath(15, false, List(Vector3(704.126f, 1290.795f, 89.088f), Vector3(725.776f, 1332.843f, 70.701f), Vector3(733.841f, 1348.508f, 59.9f)))) - ZipLinePaths(new ZipLinePath(16, false, List(Vector3(709.91f, 748.459f, 89.816f), Vector3(718.399f, 769.508f, 85.932f), Vector3(726.888f, 790.558f, 75.963f)))) - ZipLinePaths(new ZipLinePath(17, false, List(Vector3(716.417f, 703.283f, 88.381f), Vector3(693.333f, 697.461f, 86.535f), Vector3(670.25f, 691.64f, 73.819f), Vector3(667.48f, 690.942f, 70.78f)))) - ZipLinePaths(new ZipLinePath(18, false, List(Vector3(716.858f, 1244.631f, 89.045f), Vector3(728.226f, 1196.511f, 97.219f), Vector3(734.592f, 1169.563f, 99.721f)))) - ZipLinePaths(new ZipLinePath(19, false, List(Vector3(717.701f, 634.43f, 104.6f), Vector3(687.153f, 675.26f, 104.696f), Vector3(662.594f, 708.085f, 102.1f)))) - ZipLinePaths(new ZipLinePath(20, true, List(Vector3(718.911f, 629.346f, 70.251f), Vector3(717.944f, 629.452f, 104.1f)))) - ZipLinePaths(new ZipLinePath(21, true, List(Vector3(727.332f, 763.987f, 84.168f), Vector3(744.248f, 750.002f, 87.851f)))) - ZipLinePaths(new ZipLinePath(22, false, List(Vector3(732.261f, 1124.261f, 99.745f), Vector3(727.12f, 1101.174f, 100.445f), Vector3(721.979f, 1078.088f, 84.275f), Vector3(711.698f, 1031.915f, 68.074f), Vector3(702.623f, 1001.287f, 55.689f)))) - ZipLinePaths(new ZipLinePath(23, false, List(Vector3(732.939f, 1112.987f, 59.85f), Vector3(694.976f, 1114.277f, 59.85f)))) - ZipLinePaths(new ZipLinePath(24, false, List(Vector3(733.315f, 1043.086f, 44.023f), Vector3(783.468f, 1035.628f, 50.227f), Vector3(833.622f, 1028.17f, 55.683f), Vector3(883.775f, 1020.711f, 61.138f), Vector3(905.443f, 1018.487f, 62.496f)))) - ZipLinePaths(new ZipLinePath(25, false, List(Vector3(734.343f, 605.285f, 69.928f), Vector3(750.482f, 605.113f, 67.796f), Vector3(766.621f, 604.942f, 53.571f)))) - ZipLinePaths(new ZipLinePath(26, false, List(Vector3(737.579f, 931.404f, 51.22f), Vector3(716.598f, 908.304f, 73.219f), Vector3(709.877f, 905.151f, 70.799f)))) - ZipLinePaths(new ZipLinePath(27, false, List(Vector3(746.348f, 668.394f, 122.776f), Vector3(740.464f, 689.729f, 113.792f), Vector3(735.78f, 711.064f, 93.308f), Vector3(735.132f, 714.654f, 88.352f)))) - ZipLinePaths(new ZipLinePath(28, true, List(Vector3(756.1f, 1155.746f, 99.22f), Vector3(760.176f, 1186.748f, 76.063f)))) - ZipLinePaths(new ZipLinePath(29, true, List(Vector3(758.959f, 1194.575f, 63.456f), Vector3(764.26f, 1195.303f, 46.03f)))) - ZipLinePaths(new ZipLinePath(30, false, List(Vector3(759.687f, 1211.316f, 63.947f), Vector3(710.624f, 1201.801f, 63.107f), Vector3(692.961f, 1198.375f, 59.852f)))) - ZipLinePaths(new ZipLinePath(31, false, List(Vector3(764.413f, 1133.386f, 99.716f), Vector3(783.198f, 1108.766f, 100.661f)))) - ZipLinePaths(new ZipLinePath(32, false, List(Vector3(765.981f, 1159.159f, 99.716f), Vector3(810.625f, 1183.744f, 102.261f), Vector3(855.268f, 1211.829f, 104.064f), Vector3(870.587f, 1219.715f, 104.201f), Vector3(885.906f, 1225.201f, 104.337f)))) - ZipLinePaths(new ZipLinePath(33, false, List(Vector3(771.91f, 1172.993f, 63.947f), Vector3(723.732f, 1159.705f, 63.095f), Vector3(690.971f, 1150.67f, 59.851f)))) - ZipLinePaths(new ZipLinePath(34, true, List(Vector3(776.173f, 1384.778f, 59.389f), Vector3(775.563f, 1385.205f, 93.17f)))) - ZipLinePaths(new ZipLinePath(35, true, List(Vector3(776.538f, 590.261f, 41.751f), Vector3(770.792f, 585.914f, 54.699f)))) - ZipLinePaths(new ZipLinePath(36, false, List(Vector3(778.127f, 1380.551f, 93.692f), Vector3(780.733f, 1332.62f, 80.418f), Vector3(783.339f, 1284.689f, 66.407f), Vector3(784.33f, 1266.475f, 59.124f)))) - ZipLinePaths(new ZipLinePath(37, false, List(Vector3(779.095f, 1230.403f, 63.946f), Vector3(739.117f, 1262.004f, 62.663f), Vector3(706.979f, 1287.409f, 59.851f)))) - ZipLinePaths(new ZipLinePath(38, false, List(Vector3(790.673f, 706.23f, 124.487f), Vector3(826.321f, 741.589f, 115.105f), Vector3(834.85f, 750.027f, 114.023f)))) - ZipLinePaths(new ZipLinePath(39, false, List(Vector3(792.934f, 1321.527f, 59.855f), Vector3(842.515f, 1314.349f, 70.136f), Vector3(845.431f, 1313.927f, 67.129f)))) - ZipLinePaths(new ZipLinePath(40, true, List(Vector3(804.465f, 725.206f, 70.251f), Vector3(796.278f, 734.802f, 87.85f)))) - ZipLinePaths(new ZipLinePath(41, false, List(Vector3(826.335f, 762.948f, 110.827f), Vector3(781.175f, 783.752f, 106.282f), Vector3(751.369f, 797.483f, 101.617f)))) - ZipLinePaths(new ZipLinePath(42, true, List(Vector3(826.402f, 1227.598f, 46.03f), Vector3(831.918f, 1228.608f, 63.456f)))) - ZipLinePaths(new ZipLinePath(43, false, List(Vector3(840.839f, 1179.419f, 74.023f), Vector3(884.232f, 1154.925f, 70.614f), Vector3(892.042f, 1150.516f, 69.24f)))) - ZipLinePaths(new ZipLinePath(44, false, List(Vector3(856.866f, 760.258f, 106.973f), Vector3(863.339f, 738.383f, 103.32f), Vector3(869.812f, 716.508f, 92.22f), Vector3(882.757f, 672.758f, 66.763f), Vector3(883.534f, 670.133f, 62.646f)))) - ZipLinePaths(new ZipLinePath(45, false, List(Vector3(863.236f, 1245.084f, 105.631f), Vector3(846.791f, 1264.905f, 103.229f), Vector3(832.947f, 1284.727f, 93.958f), Vector3(811.857f, 1324.369f, 73.568f), Vector3(794.902f, 1350.533f, 61.081f)))) - ZipLinePaths(new ZipLinePath(46, true, List(Vector3(864.625f, 1267.214f, 66.624f), Vector3(863.782f, 1265.734f, 97.64f)))) - ZipLinePaths(new ZipLinePath(47, false, List(Vector3(866.119f, 1262.615f, 98.148f), Vector3(839.194f, 1221.252f, 90.849f), Vector3(818.73f, 1189.815f, 82.843f)))) - ZipLinePaths(new ZipLinePath(48, false, List(Vector3(867.992f, 776.508f, 112.423f), Vector3(897.561f, 733.592f, 107.972f), Vector3(921.895f, 700.86f, 101.848f)))) - ZipLinePaths(new ZipLinePath(49, false, List(Vector3(874.239f, 963.551f, 62.593f), Vector3(846.249f, 1006.177f, 62.656f), Vector3(818.258f, 1048.804f, 61.98f), Vector3(790.268f, 1091.43f, 61.303f), Vector3(786.426f, 1097.281f, 59.851f)))) - ZipLinePaths(new ZipLinePath(50, true, List(Vector3(878.08f, 1211.27f, 68.74f), Vector3(879.584f, 1210.817f, 101.5f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(883.719f, 1201.219f, 102.011f), Vector3(915.265f, 1162.523f, 105.556f), Vector3(946.811f, 1123.826f, 108.357f), Vector3(978.357f, 1085.13f, 111.159f), Vector3(1009.903f, 1046.434f, 113.96f), Vector3(1016.843f, 1037.921f, 113.549f)))) - ZipLinePaths(new ZipLinePath(52, false, List(Vector3(894.869f, 621.373f, 98.009f), Vector3(854.043f, 649.44f, 105.507f), Vector3(835.995f, 610.128f, 120.408f), Vector3(808.048f, 664.316f, 124.498f)))) - ZipLinePaths(new ZipLinePath(53, false, List(Vector3(895.912f, 1177.993f, 80.149f), Vector3(911.404f, 1158.136f, 80.364f), Vector3(926.896f, 1138.28f, 72.893f), Vector3(957.881f, 1098.567f, 62.501f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(899.473f, 935f, 62.594f), Vector3(876.765f, 890.548f, 66.273f), Vector3(854.057f, 846.096f, 69.21f), Vector3(831.349f, 801.645f, 72.147f), Vector3(819.086f, 777.641f, 70.751f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(908.183f, 913.064f, 100.237f), Vector3(867.304f, 885.33f, 93.219f), Vector3(826.426f, 857.596f, 85.468f), Vector3(785.548f, 829.861f, 77.717f), Vector3(764.291f, 815.439f, 70.758f)))) - ZipLinePaths(new ZipLinePath(56, false, List(Vector3(911.107f, 1174.015f, 69.257f), Vector3(961.534f, 1174.277f, 62.381f), Vector3(1011.962f, 1174.538f, 53.076f)))) - ZipLinePaths(new ZipLinePath(57, false, List(Vector3(917.5f, 902.31f, 100.231f), Vector3(877.638f, 869.806f, 98.397f), Vector3(838.975f, 838.202f, 95.82f), Vector3(800.312f, 806.598f, 93.243f), Vector3(761.649f, 774.994f, 90.667f), Vector3(757.956f, 768.465f, 88.352f)))) - ZipLinePaths(new ZipLinePath(58, false, List(Vector3(919.336f, 713.814f, 82.701f), Vector3(871.433f, 727.84f, 86.378f), Vector3(823.53f, 741.866f, 89.315f), Vector3(809.159f, 746.074f, 88.351f)))) - ZipLinePaths(new ZipLinePath(59, true, List(Vector3(920.936f, 918.429f, 98.892f), Vector3(930.88f, 917.027f, 106.39f)))) - ZipLinePaths(new ZipLinePath(60, true, List(Vector3(931.553f, 1025.102f, 68.29f), Vector3(986.02f, 1001.745f, 103.056f)))) - ZipLinePaths(new ZipLinePath(61, true, List(Vector3(942.175f, 878.239f, 62.093f), Vector3(943.987f, 879.733f, 96.131f)))) - ZipLinePaths(new ZipLinePath(62, false, List(Vector3(947.606f, 886.439f, 96.628f), Vector3(939.941f, 912.104f, 98.851f), Vector3(932.276f, 910.769f, 100.281f)))) - ZipLinePaths(new ZipLinePath(63, true, List(Vector3(948.062f, 1085.025f, 61.993f), Vector3(949.074f, 1086.391f, 96.35f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(948.659f, 1092.809f, 96.85f), Vector3(970.915f, 1138.642f, 99.74f), Vector3(993.172f, 1184.475f, 101.885f), Vector3(1010.628f, 1220.422f, 102.44f)))) - ZipLinePaths(new ZipLinePath(65, false, List(Vector3(948.992f, 1063.97f, 71.392f), Vector3(937.88f, 1016.375f, 82.682f), Vector3(926.769f, 968.78f, 93.233f), Vector3(918.324f, 932.607f, 100.241f)))) - ZipLinePaths(new ZipLinePath(66, false, List(Vector3(953.017f, 912.695f, 111.692f), Vector3(966.054f, 864.624f, 108.046f), Vector3(979.091f, 816.552f, 103.66f), Vector3(991.085f, 772.327f, 97.368f)))) - ZipLinePaths(new ZipLinePath(67, false, List(Vector3(953.159f, 878.01f, 96.653f), Vector3(1001.65f, 866.321f, 86.763f), Vector3(1050.141f, 854.633f, 76.144f), Vector3(1098.632f, 842.944f, 65.526f), Vector3(1136.513f, 834.006f, 55.215f)))) - ZipLinePaths(new ZipLinePath(68, false, List(Vector3(954.303f, 919.458f, 111.69f), Vector3(995.314f, 949.714f, 110.578f), Vector3(1013.81f, 963.359f, 108.58f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(976.326f, 1280.215f, 80.595f), Vector3(991.029f, 1263.616f, 100.993f), Vector3(1006.532f, 1246.817f, 102.503f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(976.772f, 907.016f, 70.833f), Vector3(1027.604f, 902.932f, 71.139f), Vector3(1078.436f, 898.848f, 70.695f), Vector3(1129.268f, 894.764f, 70.252f), Vector3(1134.251f, 894.363f, 70.097f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(980.673f, 1225.401f, 53.07f), Vector3(986.931f, 1201.197f, 53.07f)))) - ZipLinePaths(new ZipLinePath(72, false, List(Vector3(985.328f, 1009.551f, 103.617f), Vector3(962.989f, 1018.146f, 99.408f), Vector3(940.651f, 1026.742f, 86.734f), Vector3(895.973f, 1043.931f, 69.146f), Vector3(885.46f, 1047.976f, 62.529f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(987.286f, 993.985f, 103.561f), Vector3(951.211f, 959.387f, 102.946f), Vector3(922.351f, 931.709f, 100.23f)))) - ZipLinePaths(new ZipLinePath(74, false, List(Vector3(991.669f, 1240.497f, 102.448f), Vector3(942.154f, 1246.661f, 106.414f), Vector3(922.348f, 1249.127f, 106.791f)))) - ZipLinePaths(new ZipLinePath(75, true, List(Vector3(997.886f, 1001.888f, 98.08f), Vector3(998.308f, 1001.92f, 108.08f)))) - ZipLinePaths(new ZipLinePath(76, false, List(Vector3(999.78f, 736.423f, 86.154f), Vector3(1033.248f, 727.68f, 80.234f)))) - ZipLinePaths(new ZipLinePath(77, true, List(Vector3(1000.418f, 720.566f, 63.331f), Vector3(1002.71f, 707.743f, 77.048f)))) - ZipLinePaths(new ZipLinePath(78, true, List(Vector3(1008.413f, 723.293f, 63.331f), Vector3(1017.74f, 732.348f, 63.331f)))) - ZipLinePaths(new ZipLinePath(79, true, List(Vector3(1010.377f, 989.51f, 103.08f), Vector3(1007.82f, 1015.348f, 113.08f)))) - ZipLinePaths(new ZipLinePath(80, false, List(Vector3(1015.78f, 1119.224f, 62.694f), Vector3(1017.258f, 1170.106f, 66.551f), Vector3(1017.635f, 1183.076f, 65.768f)))) - ZipLinePaths(new ZipLinePath(81, false, List(Vector3(1015.913f, 856.541f, 62.705f), Vector3(1015.379f, 807.652f, 73.915f), Vector3(1015.251f, 795.919f, 76.088f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(1020.05f, 964.844f, 103.522f), Vector3(1014.081f, 915.391f, 99.916f), Vector3(1008.112f, 865.937f, 95.573f), Vector3(1002.142f, 816.483f, 91.229f), Vector3(998.583f, 781.355f, 86.198f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(1021.393f, 1038.505f, 113.581f), Vector3(1023.559f, 1062.368f, 112.81f), Vector3(1026.326f, 1087.631f, 101.555f), Vector3(1031.256f, 1136.757f, 88.792f), Vector3(1036.187f, 1185.883f, 76.03f), Vector3(1037.157f, 1195.252f, 72.654f)))) - ZipLinePaths(new ZipLinePath(84, false, List(Vector3(1022.311f, 963.688f, 108.626f), Vector3(1021.282f, 941.241f, 104.749f), Vector3(1020.254f, 918.794f, 88.819f), Vector3(1018.856f, 888.266f, 69.743f)))) - ZipLinePaths(new ZipLinePath(85, true, List(Vector3(1024.216f, 1237.287f, 101.928f), Vector3(1022.885f, 1236.282f, 107.438f)))) - ZipLinePaths(new ZipLinePath(86, false, List(Vector3(1025.717f, 1248.9f, 102.662f), Vector3(1019.157f, 1290.883f, 77.791f)))) - ZipLinePaths(new ZipLinePath(87, false, List(Vector3(1030.526f, 1043.28f, 108.581f), Vector3(1060.287f, 1082.425f, 114.331f), Vector3(1068.936f, 1079.388f, 113.542f)))) - ZipLinePaths(new ZipLinePath(88, true, List(Vector3(1031.956f, 1098.93f, 71.733f), Vector3(1017.253f, 1035.007f, 108.08f)))) - ZipLinePaths(new ZipLinePath(89, true, List(Vector3(1032.161f, 1288.907f, 63.331f), Vector3(1013.199f, 1290.127f, 63.331f)))) - ZipLinePaths(new ZipLinePath(90, false, List(Vector3(1033.844f, 1237.622f, 102.493f), Vector3(1069.373f, 1274.123f, 100.766f), Vector3(1104.903f, 1310.623f, 98.295f), Vector3(1140.432f, 1347.124f, 95.825f), Vector3(1164.118f, 1371.458f, 93.15f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(1034.374f, 1170.445f, 53.073f), Vector3(1071.018f, 1135.457f, 59.658f), Vector3(1099.04f, 1108.701f, 62.896f)))) - ZipLinePaths(new ZipLinePath(92, true, List(Vector3(1037.704f, 986.625f, 103.08f), Vector3(1008.671f, 1016.569f, 103.08f)))) - ZipLinePaths(new ZipLinePath(93, false, List(Vector3(1038.931f, 1285.894f, 76.25f), Vector3(1047.65f, 1294.159f, 83.937f), Vector3(1056.369f, 1302.425f, 83.265f)))) - ZipLinePaths(new ZipLinePath(94, false, List(Vector3(1042.946f, 1314.831f, 83.284f), Vector3(1029.474f, 1325.092f, 81.244f), Vector3(1016.003f, 1335.353f, 69.474f)))) - ZipLinePaths(new ZipLinePath(95, true, List(Vector3(1048.868f, 1001.705f, 98.08f), Vector3(1048.716f, 1001.779f, 113.08f)))) - ZipLinePaths(new ZipLinePath(96, true, List(Vector3(1050.738f, 892.293f, 70.931f), Vector3(1030.048f, 969.873f, 108.08f)))) - ZipLinePaths(new ZipLinePath(97, false, List(Vector3(1059.265f, 1222.82f, 73.793f), Vector3(1055.342f, 1172.574f, 70.201f), Vector3(1058.848f, 1129.879f, 62.697f)))) - ZipLinePaths(new ZipLinePath(98, false, List(Vector3(1061.142f, 1002.705f, 113.644f), Vector3(1084.951f, 1003.95f, 111.69f), Vector3(1108.761f, 1005.195f, 96.273f), Vector3(1156.381f, 1007.685f, 78.199f), Vector3(1204f, 1010.176f, 60.126f), Vector3(1206.801f, 1010.322f, 55.667f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(1068.7f, 1088.587f, 72.146f), Vector3(1030.278f, 1056.665f, 70.605f), Vector3(991.859f, 1024.744f, 72.816f), Vector3(953.44f, 992.822f, 77.127f), Vector3(940.041f, 974.242f, 78.338f), Vector3(926.642f, 955.662f, 72.35f)))) - ZipLinePaths(new ZipLinePath(100, true, List(Vector3(1070.703f, 1182.499f, 65.267f), Vector3(1071.896f, 1181.097f, 99.132f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(1072.49f, 703.019f, 74.582f), Vector3(1122.923f, 696.068f, 72.359f), Vector3(1173.357f, 689.117f, 69.381f), Vector3(1185.223f, 687.481f, 67.424f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(1075.826f, 1172.464f, 99.643f), Vector3(1059.78f, 1125.381f, 105.503f), Vector3(1043.734f, 1078.299f, 110.607f), Vector3(1031.539f, 1042.516f, 113.589f)))) - ZipLinePaths(new ZipLinePath(103, true, List(Vector3(1086.981f, 909.865f, 75.232f), Vector3(1058.547f, 991.146f, 112.996f)))) - ZipLinePaths(new ZipLinePath(104, true, List(Vector3(1087.994f, 1101.369f, 72.933f), Vector3(1091.579f, 1063.563f, 113.04f)))) - ZipLinePaths(new ZipLinePath(105, false, List(Vector3(1093.367f, 814.482f, 62.395f), Vector3(1097.482f, 865.146f, 67.271f), Vector3(1099.257f, 887.001f, 67.998f)))) - ZipLinePaths(new ZipLinePath(106, false, List(Vector3(1108.968f, 1065.041f, 113.578f), Vector3(1115.996f, 1042.885f, 110.55f), Vector3(1123.024f, 1020.73f, 95.861f), Vector3(1137.081f, 976.421f, 77.441f), Vector3(1141.86f, 961.357f, 70.272f)))) - ZipLinePaths(new ZipLinePath(107, false, List(Vector3(1109.326f, 719.601f, 105.195f), Vector3(1064.788f, 696.899f, 104.857f), Vector3(1020.251f, 674.197f, 103.774f), Vector3(975.714f, 651.495f, 102.692f), Vector3(931.176f, 628.793f, 101.61f), Vector3(916.306f, 624.537f, 98.183f)))) - ZipLinePaths(new ZipLinePath(108, false, List(Vector3(1112.701f, 1072.817f, 113.492f), Vector3(1126.783f, 1092.701f, 112.58f), Vector3(1140.865f, 1112.586f, 99.194f), Vector3(1169.03f, 1152.355f, 84.168f), Vector3(1188.911f, 1180.428f, 70.467f)))) - ZipLinePaths(new ZipLinePath(109, false, List(Vector3(1116.494f, 1011.005f, 75.45f), Vector3(1160.328f, 988.101f, 63.755f), Vector3(1187.832f, 973.73f, 53.559f)))) - ZipLinePaths(new ZipLinePath(110, false, List(Vector3(1117.678f, 834.135f, 51.078f), Vector3(1068.972f, 844.563f, 55.228f)))) - ZipLinePaths(new ZipLinePath(111, true, List(Vector3(1118.78f, 977.911f, 62.593f), Vector3(1118.424f, 973.771f, 92.59f)))) - ZipLinePaths(new ZipLinePath(112, false, List(Vector3(1119.944f, 971.229f, 93.091f), Vector3(1125.29f, 921.608f, 96.903f), Vector3(1130.637f, 871.986f, 99.956f), Vector3(1135.984f, 822.365f, 103.009f), Vector3(1141.33f, 772.743f, 106.063f), Vector3(1142.4f, 762.819f, 105.298f)))) - ZipLinePaths(new ZipLinePath(113, false, List(Vector3(1126.862f, 957.212f, 75.033f), Vector3(1164.602f, 991.481f, 74.353f), Vector3(1202.341f, 1025.749f, 72.915f), Vector3(1235.641f, 1055.984f, 70.441f)))) - ZipLinePaths(new ZipLinePath(114, false, List(Vector3(1138.22f, 776.829f, 60.837f), Vector3(1185.416f, 778.843f, 80.756f), Vector3(1224.284f, 780.501f, 96.211f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(1145.49f, 1219.031f, 70.445f), Vector3(1110.657f, 1221.727f, 65.772f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(1145.658f, 1046.987f, 62.895f), Vector3(1173.99f, 1089.16f, 68.031f), Vector3(1202.012f, 1130.178f, 70.442f)))) - ZipLinePaths(new ZipLinePath(117, true, List(Vector3(1145.854f, 848.204f, 41.711f), Vector3(1136.769f, 851.408f, 53.017f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(1150.993f, 1202.394f, 111.938f), Vector3(1102.384f, 1213.637f, 108.625f), Vector3(1053.776f, 1224.88f, 105.269f), Vector3(1032.86f, 1233.202f, 102.45f)))) - ZipLinePaths(new ZipLinePath(119, false, List(Vector3(1157.936f, 755.227f, 105.205f), Vector3(1194.167f, 722.066f, 96.587f), Vector3(1230.397f, 688.906f, 85.32f)))) - ZipLinePaths(new ZipLinePath(120, false, List(Vector3(1182.377f, 1225.952f, 111.96f), Vector3(1211.207f, 1266.997f, 103.516f), Vector3(1230.428f, 1294.36f, 95.849f)))) - ZipLinePaths(new ZipLinePath(121, false, List(Vector3(1183.368f, 1372.605f, 93.007f), Vector3(1227.066f, 1346.365f, 95.448f), Vector3(1257.054f, 1328.356f, 95.84f)))) - ZipLinePaths(new ZipLinePath(122, false, List(Vector3(1196.442f, 691.273f, 100.784f), Vector3(1157.75f, 723.895f, 107.82f), Vector3(1153.198f, 727.733f, 108.014f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(1197.646f, 931.98f, 56.108f), Vector3(1208.098f, 981.536f, 62.846f), Vector3(1218.551f, 1031.092f, 68.83f), Vector3(1223.675f, 1055.384f, 70.444f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(1198.424f, 1256.573f, 86.345f), Vector3(1182.542f, 1269.419f, 86.762f), Vector3(1166.661f, 1282.265f, 83.094f), Vector3(1127.897f, 1310.958f, 69.897f), Vector3(1114.717f, 1320.713f, 64.233f)))) - ZipLinePaths(new ZipLinePath(125, true, List(Vector3(1198.609f, 684.319f, 66.924f), Vector3(1199.063f, 682.308f, 100.28f)))) - ZipLinePaths(new ZipLinePath(126, false, List(Vector3(1199.772f, 1022.014f, 55.634f), Vector3(1150.254f, 1024.653f, 62.833f), Vector3(1148.274f, 1024.758f, 62.898f)))) - ZipLinePaths(new ZipLinePath(127, true, List(Vector3(1203.743f, 1205.042f, 69.941f), Vector3(1200.635f, 1212.965f, 85.83f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(1203.809f, 691.086f, 100.782f), Vector3(1212.171f, 700.648f, 104.414f), Vector3(1220.534f, 710.211f, 105.048f), Vector3(1237.259f, 729.336f, 97.217f), Vector3(1254.312f, 748.836f, 93.592f)))) - ZipLinePaths(new ZipLinePath(129, false, List(Vector3(1218.115f, 1081.456f, 77.607f), Vector3(1168.182f, 1082.952f, 76.137f), Vector3(1118.249f, 1084.447f, 73.92f), Vector3(1088.289f, 1085.344f, 71.988f)))) - ZipLinePaths(new ZipLinePath(130, false, List(Vector3(1222.88f, 1118.832f, 81.22f), Vector3(1175.596f, 1104.086f, 75.102f), Vector3(1128.312f, 1089.34f, 68.25f), Vector3(1107.507f, 1082.852f, 62.899f)))) - ZipLinePaths(new ZipLinePath(131, false, List(Vector3(1226.808f, 732.805f, 67.43f), Vector3(1191.254f, 768.664f, 61.05f), Vector3(1163.368f, 796.789f, 53.076f)))) - ZipLinePaths(new ZipLinePath(132, false, List(Vector3(1233.261f, 747.07f, 93.355f), Vector3(1223.936f, 727.816f, 90.392f), Vector3(1214.611f, 708.563f, 67.471f)))) - ZipLinePaths(new ZipLinePath(133, false, List(Vector3(1236.826f, 1287.784f, 95.841f), Vector3(1252.226f, 1264.968f, 94.594f), Vector3(1259.126f, 1242.353f, 94.248f), Vector3(1263.97f, 1229.77f, 92.27f), Vector3(1268.914f, 1214.787f, 89.594f)))) - ZipLinePaths(new ZipLinePath(134, false, List(Vector3(1238.011f, 1087.458f, 79.528f), Vector3(1256.071f, 1040.094f, 74.678f), Vector3(1274.132f, 992.73f, 69.08f), Vector3(1292.192f, 945.365f, 63.481f), Vector3(1292.546f, 944.437f, 60.154f)))) - ZipLinePaths(new ZipLinePath(135, true, List(Vector3(1239.379f, 1157.428f, 91.67f), Vector3(1229.535f, 1148.836f, 80.74f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(1243.286f, 1071.458f, 110.467f), Vector3(1195.837f, 1055.729f, 112.502f), Vector3(1148.388f, 1040f, 113.797f), Vector3(1100.939f, 1024.271f, 115.092f), Vector3(1060.08f, 1011.891f, 113.685f)))) - ZipLinePaths(new ZipLinePath(137, false, List(Vector3(1246.826f, 1113.238f, 110.476f), Vector3(1227.56f, 1124.142f, 107.77f), Vector3(1208.294f, 1135.046f, 87.974f), Vector3(1185.175f, 1148.131f, 70.65f)))) - ZipLinePaths(new ZipLinePath(138, true, List(Vector3(1257.492f, 1082.723f, 77.837f), Vector3(1269.3f, 1091.048f, 109.97f)))) - ZipLinePaths(new ZipLinePath(139, true, List(Vector3(1261.129f, 646.49f, 41.671f), Vector3(1256.709f, 663.872f, 67.12f)))) - ZipLinePaths(new ZipLinePath(140, false, List(Vector3(1261.935f, 800.968f, 93.356f), Vector3(1310.395f, 816.495f, 97.405f), Vector3(1358.855f, 832.022f, 100.714f), Vector3(1370.406f, 836.262f, 99.718f)))) - ZipLinePaths(new ZipLinePath(141, false, List(Vector3(1264.266f, 1055.81f, 71.423f), Vector3(1280.247f, 1103.405f, 81.102f), Vector3(1282.754f, 1110.87f, 81.848f)))) - ZipLinePaths(new ZipLinePath(142, false, List(Vector3(1269.421f, 1295.131f, 96.089f), Vector3(1265.331f, 1245.509f, 92.181f), Vector3(1261.242f, 1195.888f, 87.536f), Vector3(1257.643f, 1152.221f, 81.199f)))) - ZipLinePaths(new ZipLinePath(143, false, List(Vector3(1269.62f, 1116.62f, 81.595f), Vector3(1248.045f, 1106.837f, 81.616f), Vector3(1237.257f, 1110.195f, 81.152f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(1270.147f, 1315.938f, 95.853f), Vector3(1307.494f, 1284.474f, 107.335f), Vector3(1325.421f, 1269.371f, 112.6f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(1272.251f, 1072.732f, 110.472f), Vector3(1294.76f, 1061.355f, 111.827f), Vector3(1317.269f, 1049.978f, 103.687f), Vector3(1362.286f, 1027.223f, 96.165f), Vector3(1401.124f, 1007.594f, 87.966f)))) - ZipLinePaths(new ZipLinePath(146, false, List(Vector3(1285.557f, 1176.984f, 101.904f), Vector3(1268.858f, 1130.389f, 109.765f), Vector3(1263.18f, 1114.547f, 110.471f)))) - ZipLinePaths(new ZipLinePath(147, false, List(Vector3(1286.559f, 1195.88f, 101.906f), Vector3(1237.591f, 1202.38f, 110.405f), Vector3(1219.962f, 1204.72f, 111.984f)))) - ZipLinePaths(new ZipLinePath(148, false, List(Vector3(1288.633f, 1214.884f, 101.906f), Vector3(1247.251f, 1187.369f, 97.108f), Vector3(1226.56f, 1173.612f, 90.72f)))) - ZipLinePaths(new ZipLinePath(149, false, List(Vector3(1290.826f, 718.326f, 85.269f), Vector3(1321.687f, 758.543f, 91.79f), Vector3(1352.547f, 798.76f, 97.355f), Vector3(1375.13f, 828.049f, 99.719f)))) - ZipLinePaths(new ZipLinePath(150, false, List(Vector3(1294.656f, 744.295f, 78.185f), Vector3(1325.753f, 706.069f, 70.457f), Vector3(1347.522f, 679.31f, 59.862f)))) - ZipLinePaths(new ZipLinePath(151, true, List(Vector3(1299.9f, 760.768f, 46.63f), Vector3(1296.678f, 760.338f, 64.056f)))) - ZipLinePaths(new ZipLinePath(152, false, List(Vector3(1335.766f, 635.184f, 89.041f), Vector3(1293.37f, 663.502f, 88.496f), Vector3(1283.394f, 670.164f, 85.259f)))) - ZipLinePaths(new ZipLinePath(153, false, List(Vector3(1339.691f, 1169.995f, 91.574f), Vector3(1331.518f, 1128.805f, 91.322f)))) - ZipLinePaths(new ZipLinePath(154, false, List(Vector3(1340.717f, 673.945f, 89.042f), Vector3(1293.814f, 673.438f, 85.22f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(1346.98f, 1243.609f, 112.552f), Vector3(1365.815f, 1197.503f, 117.758f), Vector3(1383.897f, 1153.241f, 121.128f)))) - ZipLinePaths(new ZipLinePath(156, true, List(Vector3(1351.016f, 1254.782f, 112.074f), Vector3(1348.091f, 1254.931f, 117.579f)))) - ZipLinePaths(new ZipLinePath(157, false, List(Vector3(1355.713f, 1145.351f, 122.442f), Vector3(1308.557f, 1161.641f, 119.865f), Vector3(1261.402f, 1177.931f, 116.539f), Vector3(1218.961f, 1192.593f, 111.982f)))) - ZipLinePaths(new ZipLinePath(158, false, List(Vector3(1356.956f, 1121.272f, 121.169f), Vector3(1344.419f, 1103.447f, 123.439f), Vector3(1331.882f, 1085.622f, 97.41f), Vector3(1320.599f, 1069.579f, 74.574f), Vector3(1309.316f, 1053.536f, 67.839f)))) - ZipLinePaths(new ZipLinePath(159, true, List(Vector3(1357.74f, 895.959f, 59.35f), Vector3(1360.201f, 894.144f, 93.751f)))) - ZipLinePaths(new ZipLinePath(160, true, List(Vector3(1361.935f, 804.341f, 64.056f), Vector3(1357.002f, 801.86f, 46.63f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(1362.178f, 886.635f, 94.264f), Vector3(1335.084f, 844.963f, 89.573f), Vector3(1315.035f, 814.126f, 83.439f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(1364.3f, 1153.417f, 122.494f), Vector3(1356.834f, 1163.739f, 122.87f), Vector3(1334.369f, 1184.662f, 101.953f)))) - ZipLinePaths(new ZipLinePath(163, false, List(Vector3(1365.132f, 689.391f, 92.669f), Vector3(1349.931f, 707.329f, 91.865f), Vector3(1334.731f, 725.267f, 76.399f), Vector3(1320.754f, 742.953f, 64.585f)))) - ZipLinePaths(new ZipLinePath(164, true, List(Vector3(1367.319f, 685.024f, 59.35f), Vector3(1369.049f, 684.262f, 92.131f)))) - ZipLinePaths(new ZipLinePath(165, true, List(Vector3(1367.378f, 1307.869f, 69.287f), Vector3(1366.65f, 1309.663f, 99.29f)))) - ZipLinePaths(new ZipLinePath(166, false, List(Vector3(1368.273f, 1305.847f, 99.844f), Vector3(1368.455f, 1295.812f, 98.705f), Vector3(1368.338f, 1284.377f, 95.52f), Vector3(1368.104f, 1261.507f, 80.35f), Vector3(1367.916f, 1243.211f, 69.842f)))) - ZipLinePaths(new ZipLinePath(167, true, List(Vector3(1368.901f, 675.463f, 92.14f), Vector3(1354.678f, 673.232f, 88.541f)))) - ZipLinePaths(new ZipLinePath(168, false, List(Vector3(1370.444f, 896.269f, 94.24f), Vector3(1410.474f, 915.351f, 69.813f), Vector3(1423.818f, 921.711f, 59.851f)))) - ZipLinePaths(new ZipLinePath(169, false, List(Vector3(1374.328f, 851.615f, 99.725f), Vector3(1339.342f, 901.528f, 91.012f), Vector3(1313.456f, 944.441f, 81.564f), Vector3(1287.57f, 987.354f, 72.116f), Vector3(1263.714f, 1026.901f, 61.023f)))) - ZipLinePaths(new ZipLinePath(170, false, List(Vector3(1379.289f, 821.763f, 99.73f), Vector3(1346.288f, 784.372f, 90.076f), Vector3(1319.407f, 753.3f, 78.291f)))) - ZipLinePaths(new ZipLinePath(171, false, List(Vector3(1391.245f, 823.148f, 99.721f), Vector3(1377.189f, 775.284f, 97.042f), Vector3(1363.132f, 727.421f, 93.615f), Vector3(1349.076f, 679.557f, 90.188f), Vector3(1348.233f, 676.685f, 89.041f)))) - ZipLinePaths(new ZipLinePath(172, false, List(Vector3(1401.064f, 994.658f, 87.999f), Vector3(1359.762f, 968.901f, 77.283f), Vector3(1318.459f, 943.144f, 65.823f), Vector3(1309.373f, 937.477f, 60.167f)))) - ZipLinePaths(new ZipLinePath(173, false, List(Vector3(1403.96f, 1159.131f, 102.791f), Vector3(1364.256f, 1189.526f, 103.601f), Vector3(1324.053f, 1219.322f, 103.67f), Vector3(1319.789f, 1223.569f, 101.9f)))) - ZipLinePaths(new ZipLinePath(174, false, List(Vector3(1404.913f, 726.942f, 54.268f), Vector3(1415.572f, 723.945f, 61.051f), Vector3(1426.231f, 720.948f, 59.866f)))) - ZipLinePaths(new ZipLinePath(175, true, List(Vector3(1407.877f, 1157.284f, 68.2f), Vector3(1410.102f, 1155.769f, 102.29f)))) - ZipLinePaths(new ZipLinePath(176, false, List(Vector3(1441.888f, 920.159f, 59.857f), Vector3(1448.313f, 870.457f, 70.052f), Vector3(1449.069f, 864.609f, 69.246f)))) - ZipLinePaths(new ZipLinePath(177, true, List(Vector3(921.825f, 917.111f, 62.093f), Vector3(910.937f, 927.938f, 106.39f)))) - ZipLinePaths(new ZipLinePath(178, false, List(Vector3(936.213f, 867.162f, 62.594f), Vector3(946.107f, 818.178f, 66.55f), Vector3(950.856f, 794.666f, 64.818f)))) - ZipLinePaths(new ZipLinePath(179, false, List(Vector3(619.323f, 951.023f, 83.943f), Vector3(616.715f, 926.938f, 81.874f), Vector3(614.108f, 902.854f, 72.325f), Vector3(613.065f, 893.22f, 67.528f)))) - ZipLinePaths(new ZipLinePath(180, false, List(Vector3(245.714f, 848.102f, 43.132f), Vector3(296.709f, 848.756f, 43.882f), Vector3(323.707f, 849.102f, 43.135f)))) - ZipLinePaths(new ZipLinePath(181, false, List(Vector3(380.613f, 839.591f, 43.291f), Vector3(399.483f, 840.484f, 51.34f), Vector3(418.353f, 841.378f, 53.222f)))) - ZipLinePaths(new ZipLinePath(182, false, List(Vector3(423.423f, 847.719f, 53.214f), Vector3(424.065f, 872.128f, 60.785f), Vector3(424.386f, 884.333f, 66.332f), Vector3(424.707f, 896.537f, 68.202f)))) - ZipLinePaths(new ZipLinePath(183, false, List(Vector3(462.449f, 888.611f, 73.2f), Vector3(511.515f, 888.994f, 87.828f), Vector3(514.401f, 889.017f, 88.205f)))) - ZipLinePaths(new ZipLinePath(184, false, List(Vector3(529.355f, 904.244f, 88.305f), Vector3(543.173f, 903.908f, 93.112f), Vector3(557.977f, 903.548f, 93.203f)))) - ZipLinePaths(new ZipLinePath(185, false, List(Vector3(369.424f, 856.903f, 43.137f), Vector3(370.753f, 870.317f, 43.183f), Vector3(372.082f, 883.73f, 42.93f), Vector3(372.593f, 929.659f, 26.657f), Vector3(392.704f, 974.788f, 25.183f), Vector3(440.126f, 1067.446f, 23.137f)))) - ZipLinePaths(new ZipLinePath(186, false, List(Vector3(461.151f, 1105.585f, 25.899f), Vector3(509.539f, 1102.527f, 43.908f), Vector3(525.022f, 1101.548f, 42.586f)))) - ZipLinePaths(new ZipLinePath(187, false, List(Vector3(546.503f, 1044.498f, 41.76f), Vector3(549.481f, 1035.018f, 62.544f), Vector3(550.578f, 1029.883f, 62.594f)))) - ZipLinePaths(new ZipLinePath(188, false, List(Vector3(588.661f, 1034.477f, 62.594f), Vector3(618.061f, 1076.138f, 62.575f), Vector3(626.132f, 1087.575f, 59.872f)))) - ZipLinePaths(new ZipLinePath(189, false, List(Vector3(567.287f, 1091.792f, 59.85f), Vector3(566.47f, 1087.667f, 59.901f), Vector3(564.019f, 1075.292f, 41.828f)))) - ZipLinePaths(new ZipLinePath(190, false, List(Vector3(674.348f, 1054.132f, 42.211f), Vector3(676.883f, 1066.163f, 59.553f), Vector3(677.417f, 1068.695f, 59.85f)))) - ZipLinePaths(new ZipLinePath(191, true, List(Vector3(715.551f, 1254.657f, 41.711f), Vector3(719.445f, 1248.623f, 52.27f)))) - ZipLinePaths(new ZipLinePath(192, false, List(Vector3(730.179f, 1259.137f, 51.721f), Vector3(725.114f, 1277.521f, 56.281f), Vector3(720.048f, 1295.905f, 59.862f)))) - ZipLinePaths(new ZipLinePath(193, false, List(Vector3(739.333f, 1249.902f, 51.803f), Vector3(747.707f, 1237.638f, 61.155f), Vector3(756.08f, 1225.373f, 67.572f)))) - ZipLinePaths(new ZipLinePath(194, false, List(Vector3(784.345f, 1158.64f, 63.956f), Vector3(786.322f, 1148.447f, 62.598f), Vector3(788.299f, 1138.255f, 59.86f)))) - ZipLinePaths(new ZipLinePath(195, false, List(Vector3(802.066f, 1126.481f, 59.856f), Vector3(845.835f, 1151.296f, 68.917f), Vector3(855.276f, 1156.648f, 69.245f)))) - ZipLinePaths(new ZipLinePath(196, false, List(Vector3(809.589f, 1096.782f, 59.851f), Vector3(859.53f, 1086.64f, 62.576f), Vector3(909.472f, 1076.499f, 64.558f), Vector3(917.306f, 1074.908f, 62.493f)))) - ZipLinePaths(new ZipLinePath(197, false, List(Vector3(739.925f, 1121.005f, 59.851f), Vector3(724.109f, 1169.36f, 58.494f), Vector3(717.596f, 1189.27f, 57.265f), Vector3(716.976f, 1191.166f, 56.882f), Vector3(715.115f, 1196.855f, 54.211f)))) - ZipLinePaths(new ZipLinePath(198, false, List(Vector3(708.861f, 1189.259f, 56.684f), Vector3(723.914f, 1163.117f, 99.532f), Vector3(726.509f, 1159.805f, 99.717f)))) - ZipLinePaths(new ZipLinePath(199, false, List(Vector3(766.786f, 1064.421f, 100.684f), Vector3(744.404f, 1056.068f, 97.217f), Vector3(722.023f, 1047.715f, 86.674f), Vector3(677.259f, 1031.01f, 71.931f), Vector3(656.668f, 1023.326f, 63.855f)))) - ZipLinePaths(new ZipLinePath(200, false, List(Vector3(783.594f, 1061.932f, 100.672f), Vector3(804.372f, 1049.105f, 98.415f), Vector3(825.15f, 1036.279f, 90.67f), Vector3(866.706f, 1010.626f, 79.938f), Vector3(908.262f, 984.973f, 69.207f), Vector3(929.871f, 971.633f, 62.605f)))) - ZipLinePaths(new ZipLinePath(201, false, List(Vector3(936.867f, 757.882f, 86.26f), Vector3(888.988f, 761.779f, 100.866f), Vector3(864.09f, 763.805f, 106.935f)))) - ZipLinePaths(new ZipLinePath(202, false, List(Vector3(937.908f, 750.375f, 86.289f), Vector3(918.478f, 737.428f, 82.43f), Vector3(899.047f, 724.481f, 69.121f), Vector3(894.384f, 721.374f, 62.642f)))) - ZipLinePaths(new ZipLinePath(203, false, List(Vector3(868.071f, 721.611f, 62.603f), Vector3(847.144f, 722.775f, 69.972f), Vector3(826.218f, 723.939f, 70.76f)))) - ZipLinePaths(new ZipLinePath(204, false, List(Vector3(805.619f, 664.018f, 42.212f), Vector3(791.589f, 676f, 70.301f), Vector3(789.047f, 678.172f, 70.751f)))) - ZipLinePaths(new ZipLinePath(205, false, List(Vector3(947.93f, 423.772f, 43.135f), Vector3(903.179f, 446.076f, 45.082f), Vector3(858.428f, 468.38f, 45.882f), Vector3(813.677f, 490.683f, 45.081f), Vector3(790.406f, 502.281f, 43.135f)))) - ZipLinePaths(new ZipLinePath(206, false, List(Vector3(919.391f, 482.058f, 53.372f), Vector3(919.499f, 493.516f, 57.359f), Vector3(919.608f, 504.973f, 61.073f), Vector3(919.716f, 516.431f, 64.786f), Vector3(919.825f, 527.888f, 68.225f)))) - ZipLinePaths(new ZipLinePath(207, false, List(Vector3(903.584f, 556.412f, 83.215f), Vector3(903.852f, 566.832f, 85.348f), Vector3(904.12f, 577.252f, 88.597f), Vector3(904.387f, 587.672f, 92.146f), Vector3(904.655f, 598.092f, 93.811f)))) - ZipLinePaths(new ZipLinePath(208, false, List(Vector3(793.715f, 540.457f, 42.854f), Vector3(827.38f, 578.564f, 47.499f), Vector3(861.045f, 616.671f, 51.401f), Vector3(865.666f, 621.901f, 51.304f)))) - ZipLinePaths(new ZipLinePath(209, false, List(Vector3(889.504f, 637.051f, 42.212f), Vector3(892.089f, 649.448f, 62.344f), Vector3(892.966f, 651.613f, 62.594f)))) - ZipLinePaths(new ZipLinePath(210, false, List(Vector3(951.854f, 636.424f, 40.682f), Vector3(948.828f, 647.958f, 62.17f), Vector3(947.164f, 656.161f, 62.594f)))) - ZipLinePaths(new ZipLinePath(211, false, List(Vector3(1071.14f, 654.136f, 40.718f), Vector3(1064.402f, 662.815f, 63.377f), Vector3(1063.335f, 664.8f, 63.831f)))) - ZipLinePaths(new ZipLinePath(212, false, List(Vector3(1082.249f, 692.541f, 63.831f), Vector3(1089.854f, 706.044f, 63.412f), Vector3(1097.458f, 719.547f, 62.394f)))) - ZipLinePaths(new ZipLinePath(213, false, List(Vector3(1129.616f, 797.599f, 62.785f), Vector3(1175.716f, 818.7f, 69.054f), Vector3(1193.795f, 826.976f, 69.241f)))) - ZipLinePaths(new ZipLinePath(214, false, List(Vector3(1260.129f, 863.553f, 69.249f), Vector3(1278.477f, 876.77f, 67.795f), Vector3(1296.825f, 889.987f, 60.16f)))) - ZipLinePaths(new ZipLinePath(215, false, List(Vector3(1273.776f, 820.533f, 69.268f), Vector3(1276.763f, 813.405f, 75.03f), Vector3(1280.549f, 806.276f, 74.649f)))) - ZipLinePaths(new ZipLinePath(216, false, List(Vector3(1344.93f, 825.989f, 64.548f), Vector3(1346.993f, 873.881f, 59.876f)))) - ZipLinePaths(new ZipLinePath(217, true, List(Vector3(1339.858f, 929.759f, 41.711f), Vector3(1318.114f, 908.199f, 68.808f)))) - ZipLinePaths(new ZipLinePath(218, false, List(Vector3(1030.151f, 1713.887f, 23.14f), Vector3(1006.194f, 1699.563f, 26.603f), Vector3(982.238f, 1687.64f, 29.17f), Vector3(934.325f, 1678.794f, 37.248f), Vector3(898.87f, 1678.435f, 45.05f), Vector3(888.329f, 1676.453f, 43.14f)))) - ZipLinePaths(new ZipLinePath(219, false, List(Vector3(848.815f, 1671.583f, 43.141f), Vector3(845.118f, 1664.51f, 44.601f), Vector3(836.221f, 1647.438f, 46.061f), Vector3(823.827f, 1623.292f, 48.887f), Vector3(812.239f, 1574.001f, 57.282f), Vector3(810.939f, 1556.451f, 61.617f), Vector3(811.09f, 1547.475f, 63.184f), Vector3(819.04f, 1538.3f, 63.456f)))) - ZipLinePaths(new ZipLinePath(220, false, List(Vector3(868.882f, 1435.428f, 42.945f), Vector3(905.951f, 1403.482f, 53.947f), Vector3(943.021f, 1371.536f, 64.215f), Vector3(960.642f, 1362.453f, 62.601f)))) - ZipLinePaths(new ZipLinePath(221, false, List(Vector3(937.234f, 1295.401f, 62.596f), Vector3(915.49f, 1285.599f, 65.559f), Vector3(893.746f, 1275.796f, 67.126f)))) - ZipLinePaths(new ZipLinePath(222, false, List(Vector3(840.873f, 1401.981f, 54.899f), Vector3(854.118f, 1354.514f, 64.089f), Vector3(860.475f, 1331.73f, 67.131f)))) - ZipLinePaths(new ZipLinePath(223, false, List(Vector3(776.421f, 1253.584f, 53.384f), Vector3(735.488f, 1253.999f, 82.838f), Vector3(730.985f, 1254.045f, 87.489f), Vector3(726.483f, 1254.09f, 89.041f)))) - ZipLinePaths(new ZipLinePath(224, false, List(Vector3(687.379f, 1281.924f, 89.056f), Vector3(646.928f, 1254.989f, 78.015f), Vector3(606.477f, 1228.054f, 66.247f), Vector3(593.533f, 1219.435f, 59.867f)))) - ZipLinePaths(new ZipLinePath(225, false, List(Vector3(704.658f, 1288.16f, 89.048f), Vector3(755.051f, 1287.183f, 82.015f), Vector3(805.444f, 1286.205f, 74.249f), Vector3(824.218f, 1285.841f, 67.133f)))) - ZipLinePaths(new ZipLinePath(226, true, List(Vector3(844.815f, 1286.36f, 66.624f), Vector3(847.467f, 1287.213f, 96.622f)))) - ZipLinePaths(new ZipLinePath(227, false, List(Vector3(839.532f, 1286.398f, 97.146f), Vector3(819.924f, 1273.129f, 91.276f), Vector3(800.317f, 1259.86f, 81.805f), Vector3(761.102f, 1233.322f, 65.734f), Vector3(734.741f, 1208.16f, 54.236f)))) - ZipLinePaths(new ZipLinePath(228, false, List(Vector3(832.911f, 1249.75f, 42.211f), Vector3(843.646f, 1254.481f, 66.64f), Vector3(845.363f, 1255.237f, 67.125f)))) - ZipLinePaths(new ZipLinePath(229, false, List(Vector3(863.404f, 1270.313f, 98.145f), Vector3(863.198f, 1285.183f, 97.207f), Vector3(862.992f, 1300.053f, 94.075f)))) - ZipLinePaths(new ZipLinePath(230, false, List(Vector3(865.722f, 1311.216f, 94.071f), Vector3(868.416f, 1330.263f, 85.658f), Vector3(871.11f, 1349.31f, 61.342f), Vector3(873.962f, 1369.478f, 42.045f)))) - ZipLinePaths(new ZipLinePath(231, true, List(Vector3(851.285f, 1311.441f, 66.624f), Vector3(863.553f, 1307.425f, 93.57f)))) - ZipLinePaths(new ZipLinePath(232, false, List(Vector3(914.737f, 1389.299f, 44.225f), Vector3(949.158f, 1356.677f, 63.697f), Vector3(955.907f, 1350.281f, 62.619f)))) - ZipLinePaths(new ZipLinePath(233, false, List(Vector3(924.083f, 1365.718f, 44.222f), Vector3(896.58f, 1326.667f, 59.757f), Vector3(888.604f, 1315.343f, 64.395f), Vector3(880.629f, 1304.018f, 67.156f)))) - ZipLinePaths(new ZipLinePath(234, false, List(Vector3(911.533f, 1328.871f, 52.857f), Vector3(914.633f, 1279.494f, 60.854f), Vector3(917.734f, 1230.116f, 68.106f), Vector3(919.036f, 1209.378f, 69.244f)))) - ZipLinePaths(new ZipLinePath(235, false, List(Vector3(924.721f, 1198.763f, 69.239f), Vector3(972.718f, 1215.952f, 68.696f), Vector3(999.068f, 1225.389f, 65.768f)))) - ZipLinePaths(new ZipLinePath(236, false, List(Vector3(1030.019f, 1253.007f, 73.812f), Vector3(982.302f, 1255.186f, 89.326f), Vector3(934.584f, 1257.365f, 104.505f), Vector3(920.423f, 1258.175f, 106.812f)))) - ZipLinePaths(new ZipLinePath(237, false, List(Vector3(863.545f, 1238.247f, 105.601f), Vector3(849.048f, 1235.318f, 101.887f), Vector3(834.551f, 1232.388f, 77.573f)))) - ZipLinePaths(new ZipLinePath(238, false, List(Vector3(896.085f, 1222.855f, 42.212f), Vector3(893.519f, 1214.151f, 68.902f), Vector3(893.252f, 1213.244f, 69.121f), Vector3(892.984f, 1212.338f, 69.24f)))) - ZipLinePaths(new ZipLinePath(239, false, List(Vector3(890.882f, 1211.784f, 102.01f), Vector3(913.426f, 1221.384f, 96.86f), Vector3(935.971f, 1230.983f, 88.63f), Vector3(981.059f, 1250.183f, 74.518f), Vector3(1004.93f, 1260.348f, 65.788f)))) - ZipLinePaths(new ZipLinePath(240, false, List(Vector3(731.968f, 946.628f, 42.211f), Vector3(730.363f, 950.87f, 51.2f), Vector3(729.36f, 955.145f, 55.24f), Vector3(728.156f, 959.076f, 55.66f)))) - ZipLinePaths(new ZipLinePath(241, false, List(Vector3(690.086f, 971.539f, 55.689f), Vector3(679.401f, 966.341f, 62.045f), Vector3(668.716f, 961.144f, 63.86f)))) - ZipLinePaths(new ZipLinePath(242, false, List(Vector3(622.095f, 943.343f, 72.955f), Vector3(654.892f, 905.636f, 72.118f), Vector3(666.699f, 892.061f, 70.751f)))) - ZipLinePaths(new ZipLinePath(243, false, List(Vector3(645.091f, 888.102f, 42.212f), Vector3(653.24f, 872.267f, 70.744f), Vector3(655.488f, 867.899f, 70.751f)))) - ZipLinePaths(new ZipLinePath(244, false, List(Vector3(620.426f, 919.306f, 42.211f), Vector3(629.595f, 924.542f, 63.781f), Vector3(632.347f, 926.451f, 63.831f)))) - ZipLinePaths(new ZipLinePath(245, false, List(Vector3(649.583f, 1071.378f, 42.211f), Vector3(659.85f, 1083.011f, 59.781f), Vector3(661.806f, 1085.227f, 59.85f)))) - ZipLinePaths(new ZipLinePath(246, false, List(Vector3(734.689f, 1077.906f, 42.211f), Vector3(741.524f, 1083.509f, 59.801f), Vector3(743.532f, 1085.732f, 59.851f)))) - ZipLinePaths(new ZipLinePath(247, false, List(Vector3(709.956f, 1074.547f, 42.212f), Vector3(699.011f, 1081.242f, 59.754f), Vector3(696.383f, 1083.257f, 59.851f)))) - ZipLinePaths(new ZipLinePath(248, false, List(Vector3(820.188f, 1246.386f, 63.948f), Vector3(831.947f, 1257.798f, 66.436f), Vector3(843.707f, 1269.21f, 67.129f)))) - ZipLinePaths(new ZipLinePath(249, false, List(Vector3(877.568f, 1254.981f, 67.125f), Vector3(872.845f, 1220.395f, 69.241f)))) - ZipLinePaths(new ZipLinePath(250, true, List(Vector3(845.981f, 1185.464f, 41.711f), Vector3(859.485f, 1177.367f, 68.74f)))) - ZipLinePaths(new ZipLinePath(251, false, List(Vector3(1144.739f, 1649.306f, 23.148f), Vector3(1194.351f, 1645.963f, 35.819f), Vector3(1212.834f, 1644.717f, 42.718f), Vector3(1222.075f, 1644.094f, 43.276f), Vector3(1231.317f, 1643.472f, 43.148f)))) - ZipLinePaths(new ZipLinePath(252, false, List(Vector3(1227.85f, 1610.461f, 43.135f), Vector3(1229.804f, 1586.178f, 44.07f), Vector3(1228.358f, 1561.896f, 44.905f), Vector3(1240.066f, 1513.33f, 45.129f), Vector3(1251.701f, 1489.533f, 44.117f), Vector3(1266.336f, 1465.736f, 43.21f)))) - ZipLinePaths(new ZipLinePath(253, false, List(Vector3(1134.072f, 1592.592f, 23.217f), Vector3(1151.421f, 1592.184f, 30.682f), Vector3(1167.171f, 1591.775f, 33.188f)))) - ZipLinePaths(new ZipLinePath(254, false, List(Vector3(1175.593f, 1584.054f, 33.224f), Vector3(1174.719f, 1566.227f, 38.716f), Vector3(1174.282f, 1557.313f, 41.722f), Vector3(1174.063f, 1552.857f, 42.824f), Vector3(1173.845f, 1548.4f, 43.246f)))) - ZipLinePaths(new ZipLinePath(255, false, List(Vector3(1158.087f, 1525.105f, 48.26f), Vector3(1159.791f, 1505.263f, 53.135f), Vector3(1160.643f, 1495.342f, 55.83f), Vector3(1161.069f, 1490.382f, 57.377f), Vector3(1161.495f, 1485.421f, 58.24f)))) - ZipLinePaths(new ZipLinePath(256, false, List(Vector3(1168.947f, 1481.166f, 58.294f), Vector3(1184.724f, 1480.379f, 63.525f), Vector3(1192.613f, 1479.985f, 66.403f), Vector3(1200.501f, 1479.591f, 68.205f)))) - ZipLinePaths(new ZipLinePath(257, false, List(Vector3(1208.601f, 1472.023f, 68.227f), Vector3(1208.31f, 1455.703f, 73.09f), Vector3(1208.165f, 1447.544f, 75.782f), Vector3(1208.092f, 1443.464f, 77.129f), Vector3(1208.02f, 1439.384f, 78.198f)))) - ZipLinePaths(new ZipLinePath(258, false, List(Vector3(1169.756f, 1292.65f, 42.212f), Vector3(1179.642f, 1286.138f, 70.391f), Vector3(1183.899f, 1283.421f, 70.441f)))) - ZipLinePaths(new ZipLinePath(259, false, List(Vector3(1102.447f, 1188.444f, 42.212f), Vector3(1095.153f, 1188.352f, 65.517f), Vector3(1090.986f, 1188.609f, 65.768f)))) - ZipLinePaths(new ZipLinePath(260, true, List(Vector3(694.51f, 741.781f, 76.599f), Vector3(688.903f, 728.66f, 101.6f)))) - ZipLinePaths(new ZipLinePath(261, true, List(Vector3(629.166f, 733.948f, 74.099f), Vector3(643.196f, 744.321f, 101.6f)))) - ZipLinePaths(new ZipLinePath(262, false, List(Vector3(1353.63f, 747.113f, 53.986f), Vector3(1391.4f, 713.131f, 59.157f), Vector3(1402.509f, 703.136f, 59.852f)))) - ZipLinePaths(new ZipLinePath(263, false, List(Vector3(1346.229f, 658.639f, 59.857f), Vector3(1330.56f, 672.779f, 65.587f), Vector3(1314.892f, 686.919f, 67.132f)))) - ZipLinePaths(new ZipLinePath(264, true, List(Vector3(1331.453f, 668.413f, 41.711f), Vector3(1350.394f, 668.947f, 59.35f)))) - ZipLinePaths(new ZipLinePath(265, false, List(Vector3(1344.101f, 609.861f, 42.211f), Vector3(1361.166f, 616.692f, 59.11f), Vector3(1363.021f, 617.434f, 59.327f), Vector3(1364.875f, 618.177f, 59.545f), Vector3(1368.585f, 619.662f, 59.881f)))) - ZipLinePaths(new ZipLinePath(266, false, List(Vector3(1439.681f, 676.189f, 59.852f), Vector3(1443.939f, 678.26f, 59.801f), Vector3(1458.843f, 685.511f, 42.212f)))) - ZipLinePaths(new ZipLinePath(267, false, List(Vector3(1390.255f, 604.317f, 59.851f), Vector3(1354.764f, 627.739f, 88.29f), Vector3(1352.605f, 629.307f, 89.415f), Vector3(1350.845f, 630.474f, 89.04f)))) - ZipLinePaths(new ZipLinePath(268, false, List(Vector3(1746.911f, 999.303f, 43.135f), Vector3(1724.334f, 954.686f, 45.081f), Vector3(1714.4f, 935.055f, 43.135f)))) - ZipLinePaths(new ZipLinePath(269, false, List(Vector3(1688.086f, 871.654f, 43.135f), Vector3(1679.453f, 862.013f, 43.74f), Vector3(1676.219f, 844.372f, 44.644f), Vector3(1651.953f, 817.89f, 44.453f), Vector3(1633.164f, 814.917f, 43.103f)))) - ZipLinePaths(new ZipLinePath(270, false, List(Vector3(1620.102f, 856.378f, 43.135f), Vector3(1574.771f, 877.48f, 44.604f), Vector3(1529.44f, 898.583f, 44.513f), Vector3(1485.923f, 918.842f, 42.847f)))) - ZipLinePaths(new ZipLinePath(271, false, List(Vector3(1461.886f, 923.554f, 42.515f), Vector3(1449.823f, 925.983f, 59.4f), Vector3(1446.194f, 926.978f, 59.851f)))) - ZipLinePaths(new ZipLinePath(272, false, List(Vector3(1398.87f, 921.689f, 59.85f), Vector3(1380.721f, 916.061f, 61.55f), Vector3(1362.572f, 910.433f, 59.851f)))) - ZipLinePaths(new ZipLinePath(273, false, List(Vector3(1359.474f, 897.941f, 94.479f), Vector3(1361.148f, 948.464f, 101.977f), Vector3(1362.823f, 998.988f, 108.705f), Vector3(1364.498f, 1049.51f, 115.434f), Vector3(1366.172f, 1100.031f, 122.163f), Vector3(1366.271f, 1103.003f, 120.819f)))) - ZipLinePaths(new ZipLinePath(274, false, List(Vector3(1354.682f, 897.716f, 94.275f), Vector3(1343.985f, 903.132f, 94.229f), Vector3(1333.289f, 908.548f, 88.707f), Vector3(1311.896f, 919.381f, 80.864f), Vector3(1269.11f, 941.045f, 66.717f), Vector3(1226.325f, 962.709f, 52.57f), Vector3(1209.21f, 971.375f, 42.236f)))) - ZipLinePaths(new ZipLinePath(275, false, List(Vector3(1274.319f, 944.513f, 60.151f), Vector3(1267.87f, 995.053f, 58.667f), Vector3(1265.467f, 1013.881f, 55.631f)))) - ZipLinePaths(new ZipLinePath(276, false, List(Vector3(1222.162f, 1005.468f, 55.63f), Vector3(1207.972f, 984.884f, 56.288f), Vector3(1193.781f, 964.3f, 56.846f), Vector3(1181.293f, 946.186f, 55.226f)))) - ZipLinePaths(new ZipLinePath(277, true, List(Vector3(1194.95f, 1107.768f, 41.711f), Vector3(1218.82f, 1105.194f, 69.941f)))) - ZipLinePaths(new ZipLinePath(278, true, List(Vector3(1123.832f, 1080.507f, 41.711f), Vector3(1116.495f, 1068.461f, 62.393f)))) - ZipLinePaths(new ZipLinePath(279, true, List(Vector3(1034.543f, 1133.645f, 41.711f), Vector3(1037.79f, 1115.293f, 62.193f)))) - ZipLinePaths(new ZipLinePath(280, true, List(Vector3(906.983f, 1073.184f, 41.711f), Vector3(914.912f, 1061.557f, 61.993f)))) - ZipLinePaths(new ZipLinePath(281, true, List(Vector3(975.064f, 873.634f, 41.711f), Vector3(977.547f, 890.666f, 62.093f)))) - ZipLinePaths(new ZipLinePath(282, false, List(Vector3(1147.666f, 899.276f, 62.797f), Vector3(1177.835f, 858.782f, 70.663f), Vector3(1180.201f, 855.606f, 69.242f)))) - ZipLinePaths(new ZipLinePath(283, true, List(Vector3(1194.793f, 868.656f, 41.711f), Vector3(1197.048f, 853.824f, 68.739f)))) - ZipLinePaths(new ZipLinePath(284, true, List(Vector3(1238.114f, 831.003f, 68.741f), Vector3(1247.279f, 835.486f, 98.74f)))) - ZipLinePaths(new ZipLinePath(285, false, List(Vector3(1248.833f, 828.196f, 99.256f), Vector3(1251.872f, 816.912f, 97.397f), Vector3(1254.912f, 805.628f, 93.371f)))) - ZipLinePaths(new ZipLinePath(286, false, List(Vector3(1248.384f, 837.722f, 99.256f), Vector3(1248.72f, 862.495f, 95.127f), Vector3(1249.057f, 887.268f, 87.915f), Vector3(1249.729f, 936.814f, 75.849f), Vector3(1250.401f, 986.361f, 63.783f), Vector3(1250.731f, 1010.648f, 55.645f)))) - ZipLinePaths(new ZipLinePath(287, false, List(Vector3(1230.23f, 791.562f, 96.216f), Vector3(1218.028f, 808.975f, 92.428f), Vector3(1205.827f, 827.087f, 77.33f)))) - ZipLinePaths(new ZipLinePath(288, false, List(Vector3(1245.69f, 872.174f, 69.241f), Vector3(1234.739f, 921.78f, 65.479f), Vector3(1223.788f, 971.385f, 60.979f), Vector3(1216.273f, 1005.428f, 55.632f)))) - ZipLinePaths(new ZipLinePath(289, true, List(Vector3(1257.469f, 740.652f, 41.711f), Vector3(1262.312f, 727.352f, 66.624f)))) - ZipLinePaths(new ZipLinePath(290, false, List(Vector3(1310.319f, 709.589f, 67.145f), Vector3(1325.971f, 725.913f, 63.854f), Vector3(1341.622f, 742.237f, 54.005f)))) - ZipLinePaths(new ZipLinePath(291, false, List(Vector3(1066.185f, 345.278f, 43.135f), Vector3(1090.987f, 394.68f, 45.06f), Vector3(1123.79f, 403.783f, 45.673f), Vector3(1156.593f, 422.686f, 46.286f), Vector3(1179.195f, 433.738f, 47.086f), Vector3(1201.797f, 438.591f, 45.486f), Vector3(1237.251f, 434.604f, 43.135f)))) - ZipLinePaths(new ZipLinePath(292, false, List(Vector3(1272.832f, 405.679f, 43.135f), Vector3(1294.179f, 431.04f, 46.641f), Vector3(1302.453f, 466.721f, 48.643f), Vector3(1302.127f, 502.402f, 48.746f), Vector3(1293.351f, 530.733f, 46.31f), Vector3(1282.175f, 551.063f, 45.675f), Vector3(1262.223f, 581.125f, 44.003f), Vector3(1253.687f, 594.169f, 42.981f)))) - ZipLinePaths(new ZipLinePath(293, false, List(Vector3(1200.595f, 640.757f, 52.22f), Vector3(1168.131f, 678.489f, 57.706f), Vector3(1135.666f, 716.221f, 62.455f), Vector3(1131.771f, 720.748f, 62.396f)))) - ZipLinePaths(new ZipLinePath(294, false, List(Vector3(1219.446f, 577.213f, 42.939f), Vector3(1175.25f, 600.595f, 44.341f), Vector3(1153.152f, 612.286f, 44.469f), Vector3(1131.055f, 623.978f, 43.198f), Vector3(1128.403f, 625.381f, 42.211f)))) - ZipLinePaths(new ZipLinePath(295, false, List(Vector3(1113.809f, 605.958f, 42.211f), Vector3(1072.225f, 578.187f, 43.962f), Vector3(1040.622f, 557.081f, 42.211f)))) - ZipLinePaths(new ZipLinePath(296, false, List(Vector3(1012.342f, 557.626f, 50.268f), Vector3(989.945f, 568.578f, 49.742f), Vector3(967.548f, 579.531f, 47.916f), Vector3(922.755f, 601.437f, 43.816f), Vector3(918.275f, 603.627f, 42.373f)))) - ZipLinePaths(new ZipLinePath(297, false, List(Vector3(1033.85f, 552.731f, 51.556f), Vector3(1018.965f, 601.166f, 58.072f), Vector3(1004.079f, 649.601f, 63.85f), Vector3(1002.62f, 654.35f, 63.834f)))) - ZipLinePaths(new ZipLinePath(298, false, List(Vector3(1308.288f, 670.018f, 42.254f), Vector3(1305.111f, 674.774f, 66.289f), Vector3(1301.934f, 679.531f, 67.124f)))) - ZipLinePaths(new ZipLinePath(299, false, List(Vector3(1407.327f, 760.918f, 53.937f), Vector3(1419.914f, 741.887f, 56.392f), Vector3(1426.207f, 732.371f, 59.071f), Vector3(1432.5f, 722.855f, 59.855f)))) - ZipLinePaths(new ZipLinePath(300, false, List(Vector3(1414.956f, 810.604f, 42.452f), Vector3(1425.75f, 818.247f, 68.99f), Vector3(1428.91f, 820.812f, 69.24f)))) - ZipLinePaths(new ZipLinePath(301, false, List(Vector3(1425.967f, 865.543f, 69.246f), Vector3(1402.712f, 873.841f, 67.036f), Vector3(1379.458f, 882.138f, 62.133f), Vector3(1372.016f, 884.794f, 59.857f)))) - ZipLinePaths(new ZipLinePath(302, false, List(Vector3(1268.025f, 904.827f, 60.151f), Vector3(1263.757f, 902.727f, 60.1f), Vector3(1254.573f, 899.329f, 42.212f)))) - ZipLinePaths(new ZipLinePath(303, true, List(Vector3(1428.244f, 1018.152f, 43.262f), Vector3(1408.2f, 1003.259f, 87.531f)))) - ZipLinePaths(new ZipLinePath(304, false, List(Vector3(1379.635f, 1065.961f, 42.212f), Vector3(1371.185f, 1066.559f, 67.74f), Vector3(1365.717f, 1066.945f, 67.839f)))) - ZipLinePaths(new ZipLinePath(305, false, List(Vector3(1326.501f, 1050.083f, 67.866f), Vector3(1328.553f, 1045.581f, 67.818f), Vector3(1334.452f, 1032.638f, 42.212f)))) - ZipLinePaths(new ZipLinePath(306, false, List(Vector3(1292.772f, 1057.474f, 67.839f), Vector3(1288.802f, 1055.895f, 67.589f), Vector3(1280.42f, 1052.562f, 42.211f)))) - ZipLinePaths(new ZipLinePath(307, true, List(Vector3(1284.273f, 1206.771f, 76.399f), Vector3(1295.186f, 1221.284f, 101.4f)))) - ZipLinePaths(new ZipLinePath(308, true, List(Vector3(1348.044f, 1190.75f, 73.899f), Vector3(1330.058f, 1181.224f, 101.4f)))) - ZipLinePaths(new ZipLinePath(309, false, List(Vector3(1329.397f, 1225.476f, 101.9f), Vector3(1329.965f, 1233.585f, 111.129f), Vector3(1330.533f, 1241.695f, 112.558f)))) - ZipLinePaths(new ZipLinePath(310, false, List(Vector3(1345.622f, 1270.449f, 112.588f), Vector3(1348.906f, 1276.707f, 111.787f), Vector3(1353.99f, 1284.564f, 90.887f), Vector3(1358.757f, 1295.48f, 69.788f)))) - ZipLinePaths(new ZipLinePath(311, false, List(Vector3(1339.331f, 1270.575f, 112.644f), Vector3(1335.904f, 1293.307f, 111.479f), Vector3(1332.477f, 1316.04f, 91.271f), Vector3(1326.294f, 1357.048f, 69.844f)))) - ZipLinePaths(new ZipLinePath(312, false, List(Vector3(1293.195f, 1460.466f, 43.003f), Vector3(1304.584f, 1411.778f, 43.654f), Vector3(1307.09f, 1401.067f, 42.884f)))) - ZipLinePaths(new ZipLinePath(313, true, List(Vector3(1289.895f, 1360.424f, 55.23f), Vector3(1300.183f, 1350.843f, 69.287f)))) - ZipLinePaths(new ZipLinePath(314, false, List(Vector3(1259.444f, 1278.484f, 70.442f), Vector3(1253.348f, 1271.49f, 86.369f), Vector3(1250.736f, 1268.492f, 86.33f)))) - ZipLinePaths(new ZipLinePath(315, false, List(Vector3(1274.596f, 1241.349f, 70.441f), Vector3(1263.641f, 1240.252f, 86.68f), Vector3(1255.817f, 1239.468f, 86.331f)))) - ZipLinePaths(new ZipLinePath(316, false, List(Vector3(1214.538f, 1287.232f, 86.33f), Vector3(1193.34f, 1333.233f, 93.024f), Vector3(1177.13f, 1368.41f, 92.951f)))) - ZipLinePaths(new ZipLinePath(317, false, List(Vector3(1113.475f, 1299.019f, 63.833f), Vector3(1150.486f, 1264.243f, 69.233f), Vector3(1165f, 1250.605f, 70.443f)))) - ZipLinePaths(new ZipLinePath(318, false, List(Vector3(747.8f, 1289.149f, 42.211f), Vector3(753.436f, 1302.617f, 59.563f), Vector3(755.512f, 1307.579f, 59.851f)))) - ZipLinePaths(new ZipLinePath(319, true, List(Vector3(804.848f, 1407.705f, 41.797f), Vector3(784.69f, 1401.489f, 59.372f)))) - ZipLinePaths(new ZipLinePath(320, false, List(Vector3(759.088f, 857.776f, 42.212f), Vector3(742.757f, 847.212f, 71.134f), Vector3(740.65f, 845.849f, 70.751f)))) - ZipLinePaths(new ZipLinePath(321, true, List(Vector3(828.794f, 769.675f, 70.251f), Vector3(840.305f, 765.899f, 106.42f)))) - ZipLinePaths(new ZipLinePath(322, false, List(Vector3(913.898f, 667.581f, 100.812f), Vector3(910.081f, 645.955f, 99.928f), Vector3(906.265f, 624.328f, 98.046f)))) - ZipLinePaths(new ZipLinePath(323, false, List(Vector3(1383.419f, 938.651f, 41.978f), Vector3(1391.808f, 942.877f, 59.369f), Vector3(1393.629f, 942.458f, 59.851f)))) - ZipLinePaths(new ZipLinePath(324, false, List(Vector3(1280.215f, 1185.361f, 101.932f), Vector3(1263.28f, 1198.155f, 99.615f), Vector3(1246.344f, 1210.948f, 86.363f)))) + ZipLinePaths( + new ZipLinePath(1, true, List(Vector3(595.769f, 971.013f, 68.367f), Vector3(617.24f, 982.719f, 85.965f))) + ) + ZipLinePaths( + new ZipLinePath(2, false, List(Vector3(597.42f, 911.907f, 87.951f), Vector3(611.503f, 936.96f, 72.997f))) + ) + ZipLinePaths( + new ZipLinePath(3, true, List(Vector3(622.076f, 1023.44f, 63.331f), Vector3(622.719f, 1018.502f, 93.332f))) + ) + ZipLinePaths( + new ZipLinePath( + 4, + false, + List( + Vector3(628.066f, 653.647f, 80.947f), + Vector3(652.793f, 654.85f, 98.078f), + Vector3(677.121f, 654.452f, 121.481f), + Vector3(710.524f, 646.688f, 122.73f), + Vector3(744.227f, 642.925f, 123.98f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(631.571f, 1017.425f, 93.82f), + Vector3(653.945f, 1018.949f, 91.508f), + Vector3(676.32f, 1020.473f, 70.296f), + Vector3(688.877f, 1021.349f, 58.994f), + Vector3(701.634f, 1022.026f, 51.414f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 6, + false, + List( + Vector3(639.683f, 966.037f, 84.225f), + Vector3(689.438f, 956.275f, 90.453f), + Vector3(739.193f, 946.514f, 95.94f), + Vector3(788.948f, 936.752f, 101.427f), + Vector3(838.703f, 926.99f, 106.914f), + Vector3(883.58f, 918.186f, 111.693f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 7, + false, + List( + Vector3(641.629f, 1156.085f, 64.865f), + Vector3(665.451f, 1200.132f, 77.38f), + Vector3(688.672f, 1243.979f, 89.156f), + Vector3(690.138f, 1247.258f, 89.3f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(8, true, List(Vector3(647.373f, 1216.143f, 59.351f), Vector3(649.375f, 1217.21f, 92.651f))) + ) + ZipLinePaths( + new ZipLinePath( + 9, + false, + List( + Vector3(656.468f, 1211.522f, 93.177f), + Vector3(681.191f, 1213.828f, 92.881f), + Vector3(705.915f, 1216.135f, 82.302f), + Vector3(730.384f, 1218.306f, 73.437f), + Vector3(754.853f, 1220.477f, 67.488f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 10, + false, + List( + Vector3(664.549f, 761.402f, 102.108f), + Vector3(675.283f, 781.529f, 101.954f), + Vector3(696.017f, 800.657f, 94.508f), + Vector3(698.568f, 805.866f, 92.115f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 11, + false, + List( + Vector3(667.071f, 1071.46f, 59.851f), + Vector3(640.825f, 1029.389f, 67.036f), + Vector3(639.251f, 1026.864f, 63.832f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(12, true, List(Vector3(681.428f, 851.663f, 102.023f), Vector3(682.274f, 857.674f, 107.525f))) + ) + ZipLinePaths( + new ZipLinePath( + 13, + false, + List( + Vector3(688.419f, 814.561f, 92.096f), + Vector3(651.401f, 848.164f, 92.076f), + Vector3(614.383f, 881.766f, 91.308f), + Vector3(600.317f, 894.536f, 87.967f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(14, false, List(Vector3(690.738f, 1071.926f, 59.857f), Vector3(718.545f, 1031.94f, 51.832f))) + ) + ZipLinePaths( + new ZipLinePath( + 15, + false, + List( + Vector3(704.126f, 1290.795f, 89.088f), + Vector3(725.776f, 1332.843f, 70.701f), + Vector3(733.841f, 1348.508f, 59.9f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 16, + false, + List( + Vector3(709.91f, 748.459f, 89.816f), + Vector3(718.399f, 769.508f, 85.932f), + Vector3(726.888f, 790.558f, 75.963f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 17, + false, + List( + Vector3(716.417f, 703.283f, 88.381f), + Vector3(693.333f, 697.461f, 86.535f), + Vector3(670.25f, 691.64f, 73.819f), + Vector3(667.48f, 690.942f, 70.78f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 18, + false, + List( + Vector3(716.858f, 1244.631f, 89.045f), + Vector3(728.226f, 1196.511f, 97.219f), + Vector3(734.592f, 1169.563f, 99.721f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 19, + false, + List( + Vector3(717.701f, 634.43f, 104.6f), + Vector3(687.153f, 675.26f, 104.696f), + Vector3(662.594f, 708.085f, 102.1f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(20, true, List(Vector3(718.911f, 629.346f, 70.251f), Vector3(717.944f, 629.452f, 104.1f))) + ) + ZipLinePaths( + new ZipLinePath(21, true, List(Vector3(727.332f, 763.987f, 84.168f), Vector3(744.248f, 750.002f, 87.851f))) + ) + ZipLinePaths( + new ZipLinePath( + 22, + false, + List( + Vector3(732.261f, 1124.261f, 99.745f), + Vector3(727.12f, 1101.174f, 100.445f), + Vector3(721.979f, 1078.088f, 84.275f), + Vector3(711.698f, 1031.915f, 68.074f), + Vector3(702.623f, 1001.287f, 55.689f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(23, false, List(Vector3(732.939f, 1112.987f, 59.85f), Vector3(694.976f, 1114.277f, 59.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 24, + false, + List( + Vector3(733.315f, 1043.086f, 44.023f), + Vector3(783.468f, 1035.628f, 50.227f), + Vector3(833.622f, 1028.17f, 55.683f), + Vector3(883.775f, 1020.711f, 61.138f), + Vector3(905.443f, 1018.487f, 62.496f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 25, + false, + List( + Vector3(734.343f, 605.285f, 69.928f), + Vector3(750.482f, 605.113f, 67.796f), + Vector3(766.621f, 604.942f, 53.571f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 26, + false, + List( + Vector3(737.579f, 931.404f, 51.22f), + Vector3(716.598f, 908.304f, 73.219f), + Vector3(709.877f, 905.151f, 70.799f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 27, + false, + List( + Vector3(746.348f, 668.394f, 122.776f), + Vector3(740.464f, 689.729f, 113.792f), + Vector3(735.78f, 711.064f, 93.308f), + Vector3(735.132f, 714.654f, 88.352f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(28, true, List(Vector3(756.1f, 1155.746f, 99.22f), Vector3(760.176f, 1186.748f, 76.063f))) + ) + ZipLinePaths( + new ZipLinePath(29, true, List(Vector3(758.959f, 1194.575f, 63.456f), Vector3(764.26f, 1195.303f, 46.03f))) + ) + ZipLinePaths( + new ZipLinePath( + 30, + false, + List( + Vector3(759.687f, 1211.316f, 63.947f), + Vector3(710.624f, 1201.801f, 63.107f), + Vector3(692.961f, 1198.375f, 59.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(31, false, List(Vector3(764.413f, 1133.386f, 99.716f), Vector3(783.198f, 1108.766f, 100.661f))) + ) + ZipLinePaths( + new ZipLinePath( + 32, + false, + List( + Vector3(765.981f, 1159.159f, 99.716f), + Vector3(810.625f, 1183.744f, 102.261f), + Vector3(855.268f, 1211.829f, 104.064f), + Vector3(870.587f, 1219.715f, 104.201f), + Vector3(885.906f, 1225.201f, 104.337f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 33, + false, + List( + Vector3(771.91f, 1172.993f, 63.947f), + Vector3(723.732f, 1159.705f, 63.095f), + Vector3(690.971f, 1150.67f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(34, true, List(Vector3(776.173f, 1384.778f, 59.389f), Vector3(775.563f, 1385.205f, 93.17f))) + ) + ZipLinePaths( + new ZipLinePath(35, true, List(Vector3(776.538f, 590.261f, 41.751f), Vector3(770.792f, 585.914f, 54.699f))) + ) + ZipLinePaths( + new ZipLinePath( + 36, + false, + List( + Vector3(778.127f, 1380.551f, 93.692f), + Vector3(780.733f, 1332.62f, 80.418f), + Vector3(783.339f, 1284.689f, 66.407f), + Vector3(784.33f, 1266.475f, 59.124f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 37, + false, + List( + Vector3(779.095f, 1230.403f, 63.946f), + Vector3(739.117f, 1262.004f, 62.663f), + Vector3(706.979f, 1287.409f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 38, + false, + List( + Vector3(790.673f, 706.23f, 124.487f), + Vector3(826.321f, 741.589f, 115.105f), + Vector3(834.85f, 750.027f, 114.023f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 39, + false, + List( + Vector3(792.934f, 1321.527f, 59.855f), + Vector3(842.515f, 1314.349f, 70.136f), + Vector3(845.431f, 1313.927f, 67.129f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(40, true, List(Vector3(804.465f, 725.206f, 70.251f), Vector3(796.278f, 734.802f, 87.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 41, + false, + List( + Vector3(826.335f, 762.948f, 110.827f), + Vector3(781.175f, 783.752f, 106.282f), + Vector3(751.369f, 797.483f, 101.617f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(42, true, List(Vector3(826.402f, 1227.598f, 46.03f), Vector3(831.918f, 1228.608f, 63.456f))) + ) + ZipLinePaths( + new ZipLinePath( + 43, + false, + List( + Vector3(840.839f, 1179.419f, 74.023f), + Vector3(884.232f, 1154.925f, 70.614f), + Vector3(892.042f, 1150.516f, 69.24f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 44, + false, + List( + Vector3(856.866f, 760.258f, 106.973f), + Vector3(863.339f, 738.383f, 103.32f), + Vector3(869.812f, 716.508f, 92.22f), + Vector3(882.757f, 672.758f, 66.763f), + Vector3(883.534f, 670.133f, 62.646f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 45, + false, + List( + Vector3(863.236f, 1245.084f, 105.631f), + Vector3(846.791f, 1264.905f, 103.229f), + Vector3(832.947f, 1284.727f, 93.958f), + Vector3(811.857f, 1324.369f, 73.568f), + Vector3(794.902f, 1350.533f, 61.081f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(46, true, List(Vector3(864.625f, 1267.214f, 66.624f), Vector3(863.782f, 1265.734f, 97.64f))) + ) + ZipLinePaths( + new ZipLinePath( + 47, + false, + List( + Vector3(866.119f, 1262.615f, 98.148f), + Vector3(839.194f, 1221.252f, 90.849f), + Vector3(818.73f, 1189.815f, 82.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 48, + false, + List( + Vector3(867.992f, 776.508f, 112.423f), + Vector3(897.561f, 733.592f, 107.972f), + Vector3(921.895f, 700.86f, 101.848f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 49, + false, + List( + Vector3(874.239f, 963.551f, 62.593f), + Vector3(846.249f, 1006.177f, 62.656f), + Vector3(818.258f, 1048.804f, 61.98f), + Vector3(790.268f, 1091.43f, 61.303f), + Vector3(786.426f, 1097.281f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(50, true, List(Vector3(878.08f, 1211.27f, 68.74f), Vector3(879.584f, 1210.817f, 101.5f))) + ) + ZipLinePaths( + new ZipLinePath( + 51, + false, + List( + Vector3(883.719f, 1201.219f, 102.011f), + Vector3(915.265f, 1162.523f, 105.556f), + Vector3(946.811f, 1123.826f, 108.357f), + Vector3(978.357f, 1085.13f, 111.159f), + Vector3(1009.903f, 1046.434f, 113.96f), + Vector3(1016.843f, 1037.921f, 113.549f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 52, + false, + List( + Vector3(894.869f, 621.373f, 98.009f), + Vector3(854.043f, 649.44f, 105.507f), + Vector3(835.995f, 610.128f, 120.408f), + Vector3(808.048f, 664.316f, 124.498f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 53, + false, + List( + Vector3(895.912f, 1177.993f, 80.149f), + Vector3(911.404f, 1158.136f, 80.364f), + Vector3(926.896f, 1138.28f, 72.893f), + Vector3(957.881f, 1098.567f, 62.501f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 54, + false, + List( + Vector3(899.473f, 935f, 62.594f), + Vector3(876.765f, 890.548f, 66.273f), + Vector3(854.057f, 846.096f, 69.21f), + Vector3(831.349f, 801.645f, 72.147f), + Vector3(819.086f, 777.641f, 70.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 55, + false, + List( + Vector3(908.183f, 913.064f, 100.237f), + Vector3(867.304f, 885.33f, 93.219f), + Vector3(826.426f, 857.596f, 85.468f), + Vector3(785.548f, 829.861f, 77.717f), + Vector3(764.291f, 815.439f, 70.758f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 56, + false, + List( + Vector3(911.107f, 1174.015f, 69.257f), + Vector3(961.534f, 1174.277f, 62.381f), + Vector3(1011.962f, 1174.538f, 53.076f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 57, + false, + List( + Vector3(917.5f, 902.31f, 100.231f), + Vector3(877.638f, 869.806f, 98.397f), + Vector3(838.975f, 838.202f, 95.82f), + Vector3(800.312f, 806.598f, 93.243f), + Vector3(761.649f, 774.994f, 90.667f), + Vector3(757.956f, 768.465f, 88.352f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 58, + false, + List( + Vector3(919.336f, 713.814f, 82.701f), + Vector3(871.433f, 727.84f, 86.378f), + Vector3(823.53f, 741.866f, 89.315f), + Vector3(809.159f, 746.074f, 88.351f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(59, true, List(Vector3(920.936f, 918.429f, 98.892f), Vector3(930.88f, 917.027f, 106.39f))) + ) + ZipLinePaths( + new ZipLinePath(60, true, List(Vector3(931.553f, 1025.102f, 68.29f), Vector3(986.02f, 1001.745f, 103.056f))) + ) + ZipLinePaths( + new ZipLinePath(61, true, List(Vector3(942.175f, 878.239f, 62.093f), Vector3(943.987f, 879.733f, 96.131f))) + ) + ZipLinePaths( + new ZipLinePath( + 62, + false, + List( + Vector3(947.606f, 886.439f, 96.628f), + Vector3(939.941f, 912.104f, 98.851f), + Vector3(932.276f, 910.769f, 100.281f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(63, true, List(Vector3(948.062f, 1085.025f, 61.993f), Vector3(949.074f, 1086.391f, 96.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 64, + false, + List( + Vector3(948.659f, 1092.809f, 96.85f), + Vector3(970.915f, 1138.642f, 99.74f), + Vector3(993.172f, 1184.475f, 101.885f), + Vector3(1010.628f, 1220.422f, 102.44f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 65, + false, + List( + Vector3(948.992f, 1063.97f, 71.392f), + Vector3(937.88f, 1016.375f, 82.682f), + Vector3(926.769f, 968.78f, 93.233f), + Vector3(918.324f, 932.607f, 100.241f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 66, + false, + List( + Vector3(953.017f, 912.695f, 111.692f), + Vector3(966.054f, 864.624f, 108.046f), + Vector3(979.091f, 816.552f, 103.66f), + Vector3(991.085f, 772.327f, 97.368f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 67, + false, + List( + Vector3(953.159f, 878.01f, 96.653f), + Vector3(1001.65f, 866.321f, 86.763f), + Vector3(1050.141f, 854.633f, 76.144f), + Vector3(1098.632f, 842.944f, 65.526f), + Vector3(1136.513f, 834.006f, 55.215f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 68, + false, + List( + Vector3(954.303f, 919.458f, 111.69f), + Vector3(995.314f, 949.714f, 110.578f), + Vector3(1013.81f, 963.359f, 108.58f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 69, + false, + List( + Vector3(976.326f, 1280.215f, 80.595f), + Vector3(991.029f, 1263.616f, 100.993f), + Vector3(1006.532f, 1246.817f, 102.503f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 70, + false, + List( + Vector3(976.772f, 907.016f, 70.833f), + Vector3(1027.604f, 902.932f, 71.139f), + Vector3(1078.436f, 898.848f, 70.695f), + Vector3(1129.268f, 894.764f, 70.252f), + Vector3(1134.251f, 894.363f, 70.097f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(71, false, List(Vector3(980.673f, 1225.401f, 53.07f), Vector3(986.931f, 1201.197f, 53.07f))) + ) + ZipLinePaths( + new ZipLinePath( + 72, + false, + List( + Vector3(985.328f, 1009.551f, 103.617f), + Vector3(962.989f, 1018.146f, 99.408f), + Vector3(940.651f, 1026.742f, 86.734f), + Vector3(895.973f, 1043.931f, 69.146f), + Vector3(885.46f, 1047.976f, 62.529f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(987.286f, 993.985f, 103.561f), + Vector3(951.211f, 959.387f, 102.946f), + Vector3(922.351f, 931.709f, 100.23f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 74, + false, + List( + Vector3(991.669f, 1240.497f, 102.448f), + Vector3(942.154f, 1246.661f, 106.414f), + Vector3(922.348f, 1249.127f, 106.791f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(75, true, List(Vector3(997.886f, 1001.888f, 98.08f), Vector3(998.308f, 1001.92f, 108.08f))) + ) + ZipLinePaths( + new ZipLinePath(76, false, List(Vector3(999.78f, 736.423f, 86.154f), Vector3(1033.248f, 727.68f, 80.234f))) + ) + ZipLinePaths( + new ZipLinePath(77, true, List(Vector3(1000.418f, 720.566f, 63.331f), Vector3(1002.71f, 707.743f, 77.048f))) + ) + ZipLinePaths( + new ZipLinePath(78, true, List(Vector3(1008.413f, 723.293f, 63.331f), Vector3(1017.74f, 732.348f, 63.331f))) + ) + ZipLinePaths( + new ZipLinePath(79, true, List(Vector3(1010.377f, 989.51f, 103.08f), Vector3(1007.82f, 1015.348f, 113.08f))) + ) + ZipLinePaths( + new ZipLinePath( + 80, + false, + List( + Vector3(1015.78f, 1119.224f, 62.694f), + Vector3(1017.258f, 1170.106f, 66.551f), + Vector3(1017.635f, 1183.076f, 65.768f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 81, + false, + List( + Vector3(1015.913f, 856.541f, 62.705f), + Vector3(1015.379f, 807.652f, 73.915f), + Vector3(1015.251f, 795.919f, 76.088f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 82, + false, + List( + Vector3(1020.05f, 964.844f, 103.522f), + Vector3(1014.081f, 915.391f, 99.916f), + Vector3(1008.112f, 865.937f, 95.573f), + Vector3(1002.142f, 816.483f, 91.229f), + Vector3(998.583f, 781.355f, 86.198f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 83, + false, + List( + Vector3(1021.393f, 1038.505f, 113.581f), + Vector3(1023.559f, 1062.368f, 112.81f), + Vector3(1026.326f, 1087.631f, 101.555f), + Vector3(1031.256f, 1136.757f, 88.792f), + Vector3(1036.187f, 1185.883f, 76.03f), + Vector3(1037.157f, 1195.252f, 72.654f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 84, + false, + List( + Vector3(1022.311f, 963.688f, 108.626f), + Vector3(1021.282f, 941.241f, 104.749f), + Vector3(1020.254f, 918.794f, 88.819f), + Vector3(1018.856f, 888.266f, 69.743f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 85, + true, + List(Vector3(1024.216f, 1237.287f, 101.928f), Vector3(1022.885f, 1236.282f, 107.438f)) + ) + ) + ZipLinePaths( + new ZipLinePath(86, false, List(Vector3(1025.717f, 1248.9f, 102.662f), Vector3(1019.157f, 1290.883f, 77.791f))) + ) + ZipLinePaths( + new ZipLinePath( + 87, + false, + List( + Vector3(1030.526f, 1043.28f, 108.581f), + Vector3(1060.287f, 1082.425f, 114.331f), + Vector3(1068.936f, 1079.388f, 113.542f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(88, true, List(Vector3(1031.956f, 1098.93f, 71.733f), Vector3(1017.253f, 1035.007f, 108.08f))) + ) + ZipLinePaths( + new ZipLinePath(89, true, List(Vector3(1032.161f, 1288.907f, 63.331f), Vector3(1013.199f, 1290.127f, 63.331f))) + ) + ZipLinePaths( + new ZipLinePath( + 90, + false, + List( + Vector3(1033.844f, 1237.622f, 102.493f), + Vector3(1069.373f, 1274.123f, 100.766f), + Vector3(1104.903f, 1310.623f, 98.295f), + Vector3(1140.432f, 1347.124f, 95.825f), + Vector3(1164.118f, 1371.458f, 93.15f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 91, + false, + List( + Vector3(1034.374f, 1170.445f, 53.073f), + Vector3(1071.018f, 1135.457f, 59.658f), + Vector3(1099.04f, 1108.701f, 62.896f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(92, true, List(Vector3(1037.704f, 986.625f, 103.08f), Vector3(1008.671f, 1016.569f, 103.08f))) + ) + ZipLinePaths( + new ZipLinePath( + 93, + false, + List( + Vector3(1038.931f, 1285.894f, 76.25f), + Vector3(1047.65f, 1294.159f, 83.937f), + Vector3(1056.369f, 1302.425f, 83.265f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 94, + false, + List( + Vector3(1042.946f, 1314.831f, 83.284f), + Vector3(1029.474f, 1325.092f, 81.244f), + Vector3(1016.003f, 1335.353f, 69.474f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(95, true, List(Vector3(1048.868f, 1001.705f, 98.08f), Vector3(1048.716f, 1001.779f, 113.08f))) + ) + ZipLinePaths( + new ZipLinePath(96, true, List(Vector3(1050.738f, 892.293f, 70.931f), Vector3(1030.048f, 969.873f, 108.08f))) + ) + ZipLinePaths( + new ZipLinePath( + 97, + false, + List( + Vector3(1059.265f, 1222.82f, 73.793f), + Vector3(1055.342f, 1172.574f, 70.201f), + Vector3(1058.848f, 1129.879f, 62.697f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 98, + false, + List( + Vector3(1061.142f, 1002.705f, 113.644f), + Vector3(1084.951f, 1003.95f, 111.69f), + Vector3(1108.761f, 1005.195f, 96.273f), + Vector3(1156.381f, 1007.685f, 78.199f), + Vector3(1204f, 1010.176f, 60.126f), + Vector3(1206.801f, 1010.322f, 55.667f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List( + Vector3(1068.7f, 1088.587f, 72.146f), + Vector3(1030.278f, 1056.665f, 70.605f), + Vector3(991.859f, 1024.744f, 72.816f), + Vector3(953.44f, 992.822f, 77.127f), + Vector3(940.041f, 974.242f, 78.338f), + Vector3(926.642f, 955.662f, 72.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(100, true, List(Vector3(1070.703f, 1182.499f, 65.267f), Vector3(1071.896f, 1181.097f, 99.132f))) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List( + Vector3(1072.49f, 703.019f, 74.582f), + Vector3(1122.923f, 696.068f, 72.359f), + Vector3(1173.357f, 689.117f, 69.381f), + Vector3(1185.223f, 687.481f, 67.424f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List( + Vector3(1075.826f, 1172.464f, 99.643f), + Vector3(1059.78f, 1125.381f, 105.503f), + Vector3(1043.734f, 1078.299f, 110.607f), + Vector3(1031.539f, 1042.516f, 113.589f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(103, true, List(Vector3(1086.981f, 909.865f, 75.232f), Vector3(1058.547f, 991.146f, 112.996f))) + ) + ZipLinePaths( + new ZipLinePath(104, true, List(Vector3(1087.994f, 1101.369f, 72.933f), Vector3(1091.579f, 1063.563f, 113.04f))) + ) + ZipLinePaths( + new ZipLinePath( + 105, + false, + List( + Vector3(1093.367f, 814.482f, 62.395f), + Vector3(1097.482f, 865.146f, 67.271f), + Vector3(1099.257f, 887.001f, 67.998f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 106, + false, + List( + Vector3(1108.968f, 1065.041f, 113.578f), + Vector3(1115.996f, 1042.885f, 110.55f), + Vector3(1123.024f, 1020.73f, 95.861f), + Vector3(1137.081f, 976.421f, 77.441f), + Vector3(1141.86f, 961.357f, 70.272f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 107, + false, + List( + Vector3(1109.326f, 719.601f, 105.195f), + Vector3(1064.788f, 696.899f, 104.857f), + Vector3(1020.251f, 674.197f, 103.774f), + Vector3(975.714f, 651.495f, 102.692f), + Vector3(931.176f, 628.793f, 101.61f), + Vector3(916.306f, 624.537f, 98.183f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 108, + false, + List( + Vector3(1112.701f, 1072.817f, 113.492f), + Vector3(1126.783f, 1092.701f, 112.58f), + Vector3(1140.865f, 1112.586f, 99.194f), + Vector3(1169.03f, 1152.355f, 84.168f), + Vector3(1188.911f, 1180.428f, 70.467f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 109, + false, + List( + Vector3(1116.494f, 1011.005f, 75.45f), + Vector3(1160.328f, 988.101f, 63.755f), + Vector3(1187.832f, 973.73f, 53.559f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(110, false, List(Vector3(1117.678f, 834.135f, 51.078f), Vector3(1068.972f, 844.563f, 55.228f))) + ) + ZipLinePaths( + new ZipLinePath(111, true, List(Vector3(1118.78f, 977.911f, 62.593f), Vector3(1118.424f, 973.771f, 92.59f))) + ) + ZipLinePaths( + new ZipLinePath( + 112, + false, + List( + Vector3(1119.944f, 971.229f, 93.091f), + Vector3(1125.29f, 921.608f, 96.903f), + Vector3(1130.637f, 871.986f, 99.956f), + Vector3(1135.984f, 822.365f, 103.009f), + Vector3(1141.33f, 772.743f, 106.063f), + Vector3(1142.4f, 762.819f, 105.298f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 113, + false, + List( + Vector3(1126.862f, 957.212f, 75.033f), + Vector3(1164.602f, 991.481f, 74.353f), + Vector3(1202.341f, 1025.749f, 72.915f), + Vector3(1235.641f, 1055.984f, 70.441f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 114, + false, + List( + Vector3(1138.22f, 776.829f, 60.837f), + Vector3(1185.416f, 778.843f, 80.756f), + Vector3(1224.284f, 780.501f, 96.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(115, false, List(Vector3(1145.49f, 1219.031f, 70.445f), Vector3(1110.657f, 1221.727f, 65.772f))) + ) + ZipLinePaths( + new ZipLinePath( + 116, + false, + List( + Vector3(1145.658f, 1046.987f, 62.895f), + Vector3(1173.99f, 1089.16f, 68.031f), + Vector3(1202.012f, 1130.178f, 70.442f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(117, true, List(Vector3(1145.854f, 848.204f, 41.711f), Vector3(1136.769f, 851.408f, 53.017f))) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(1150.993f, 1202.394f, 111.938f), + Vector3(1102.384f, 1213.637f, 108.625f), + Vector3(1053.776f, 1224.88f, 105.269f), + Vector3(1032.86f, 1233.202f, 102.45f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 119, + false, + List( + Vector3(1157.936f, 755.227f, 105.205f), + Vector3(1194.167f, 722.066f, 96.587f), + Vector3(1230.397f, 688.906f, 85.32f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 120, + false, + List( + Vector3(1182.377f, 1225.952f, 111.96f), + Vector3(1211.207f, 1266.997f, 103.516f), + Vector3(1230.428f, 1294.36f, 95.849f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 121, + false, + List( + Vector3(1183.368f, 1372.605f, 93.007f), + Vector3(1227.066f, 1346.365f, 95.448f), + Vector3(1257.054f, 1328.356f, 95.84f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 122, + false, + List( + Vector3(1196.442f, 691.273f, 100.784f), + Vector3(1157.75f, 723.895f, 107.82f), + Vector3(1153.198f, 727.733f, 108.014f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 123, + false, + List( + Vector3(1197.646f, 931.98f, 56.108f), + Vector3(1208.098f, 981.536f, 62.846f), + Vector3(1218.551f, 1031.092f, 68.83f), + Vector3(1223.675f, 1055.384f, 70.444f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(1198.424f, 1256.573f, 86.345f), + Vector3(1182.542f, 1269.419f, 86.762f), + Vector3(1166.661f, 1282.265f, 83.094f), + Vector3(1127.897f, 1310.958f, 69.897f), + Vector3(1114.717f, 1320.713f, 64.233f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(125, true, List(Vector3(1198.609f, 684.319f, 66.924f), Vector3(1199.063f, 682.308f, 100.28f))) + ) + ZipLinePaths( + new ZipLinePath( + 126, + false, + List( + Vector3(1199.772f, 1022.014f, 55.634f), + Vector3(1150.254f, 1024.653f, 62.833f), + Vector3(1148.274f, 1024.758f, 62.898f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(127, true, List(Vector3(1203.743f, 1205.042f, 69.941f), Vector3(1200.635f, 1212.965f, 85.83f))) + ) + ZipLinePaths( + new ZipLinePath( + 128, + false, + List( + Vector3(1203.809f, 691.086f, 100.782f), + Vector3(1212.171f, 700.648f, 104.414f), + Vector3(1220.534f, 710.211f, 105.048f), + Vector3(1237.259f, 729.336f, 97.217f), + Vector3(1254.312f, 748.836f, 93.592f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 129, + false, + List( + Vector3(1218.115f, 1081.456f, 77.607f), + Vector3(1168.182f, 1082.952f, 76.137f), + Vector3(1118.249f, 1084.447f, 73.92f), + Vector3(1088.289f, 1085.344f, 71.988f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 130, + false, + List( + Vector3(1222.88f, 1118.832f, 81.22f), + Vector3(1175.596f, 1104.086f, 75.102f), + Vector3(1128.312f, 1089.34f, 68.25f), + Vector3(1107.507f, 1082.852f, 62.899f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 131, + false, + List( + Vector3(1226.808f, 732.805f, 67.43f), + Vector3(1191.254f, 768.664f, 61.05f), + Vector3(1163.368f, 796.789f, 53.076f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 132, + false, + List( + Vector3(1233.261f, 747.07f, 93.355f), + Vector3(1223.936f, 727.816f, 90.392f), + Vector3(1214.611f, 708.563f, 67.471f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 133, + false, + List( + Vector3(1236.826f, 1287.784f, 95.841f), + Vector3(1252.226f, 1264.968f, 94.594f), + Vector3(1259.126f, 1242.353f, 94.248f), + Vector3(1263.97f, 1229.77f, 92.27f), + Vector3(1268.914f, 1214.787f, 89.594f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 134, + false, + List( + Vector3(1238.011f, 1087.458f, 79.528f), + Vector3(1256.071f, 1040.094f, 74.678f), + Vector3(1274.132f, 992.73f, 69.08f), + Vector3(1292.192f, 945.365f, 63.481f), + Vector3(1292.546f, 944.437f, 60.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(135, true, List(Vector3(1239.379f, 1157.428f, 91.67f), Vector3(1229.535f, 1148.836f, 80.74f))) + ) + ZipLinePaths( + new ZipLinePath( + 136, + false, + List( + Vector3(1243.286f, 1071.458f, 110.467f), + Vector3(1195.837f, 1055.729f, 112.502f), + Vector3(1148.388f, 1040f, 113.797f), + Vector3(1100.939f, 1024.271f, 115.092f), + Vector3(1060.08f, 1011.891f, 113.685f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 137, + false, + List( + Vector3(1246.826f, 1113.238f, 110.476f), + Vector3(1227.56f, 1124.142f, 107.77f), + Vector3(1208.294f, 1135.046f, 87.974f), + Vector3(1185.175f, 1148.131f, 70.65f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(138, true, List(Vector3(1257.492f, 1082.723f, 77.837f), Vector3(1269.3f, 1091.048f, 109.97f))) + ) + ZipLinePaths( + new ZipLinePath(139, true, List(Vector3(1261.129f, 646.49f, 41.671f), Vector3(1256.709f, 663.872f, 67.12f))) + ) + ZipLinePaths( + new ZipLinePath( + 140, + false, + List( + Vector3(1261.935f, 800.968f, 93.356f), + Vector3(1310.395f, 816.495f, 97.405f), + Vector3(1358.855f, 832.022f, 100.714f), + Vector3(1370.406f, 836.262f, 99.718f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 141, + false, + List( + Vector3(1264.266f, 1055.81f, 71.423f), + Vector3(1280.247f, 1103.405f, 81.102f), + Vector3(1282.754f, 1110.87f, 81.848f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 142, + false, + List( + Vector3(1269.421f, 1295.131f, 96.089f), + Vector3(1265.331f, 1245.509f, 92.181f), + Vector3(1261.242f, 1195.888f, 87.536f), + Vector3(1257.643f, 1152.221f, 81.199f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 143, + false, + List( + Vector3(1269.62f, 1116.62f, 81.595f), + Vector3(1248.045f, 1106.837f, 81.616f), + Vector3(1237.257f, 1110.195f, 81.152f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 144, + false, + List( + Vector3(1270.147f, 1315.938f, 95.853f), + Vector3(1307.494f, 1284.474f, 107.335f), + Vector3(1325.421f, 1269.371f, 112.6f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 145, + false, + List( + Vector3(1272.251f, 1072.732f, 110.472f), + Vector3(1294.76f, 1061.355f, 111.827f), + Vector3(1317.269f, 1049.978f, 103.687f), + Vector3(1362.286f, 1027.223f, 96.165f), + Vector3(1401.124f, 1007.594f, 87.966f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 146, + false, + List( + Vector3(1285.557f, 1176.984f, 101.904f), + Vector3(1268.858f, 1130.389f, 109.765f), + Vector3(1263.18f, 1114.547f, 110.471f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 147, + false, + List( + Vector3(1286.559f, 1195.88f, 101.906f), + Vector3(1237.591f, 1202.38f, 110.405f), + Vector3(1219.962f, 1204.72f, 111.984f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 148, + false, + List( + Vector3(1288.633f, 1214.884f, 101.906f), + Vector3(1247.251f, 1187.369f, 97.108f), + Vector3(1226.56f, 1173.612f, 90.72f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 149, + false, + List( + Vector3(1290.826f, 718.326f, 85.269f), + Vector3(1321.687f, 758.543f, 91.79f), + Vector3(1352.547f, 798.76f, 97.355f), + Vector3(1375.13f, 828.049f, 99.719f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 150, + false, + List( + Vector3(1294.656f, 744.295f, 78.185f), + Vector3(1325.753f, 706.069f, 70.457f), + Vector3(1347.522f, 679.31f, 59.862f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(151, true, List(Vector3(1299.9f, 760.768f, 46.63f), Vector3(1296.678f, 760.338f, 64.056f))) + ) + ZipLinePaths( + new ZipLinePath( + 152, + false, + List( + Vector3(1335.766f, 635.184f, 89.041f), + Vector3(1293.37f, 663.502f, 88.496f), + Vector3(1283.394f, 670.164f, 85.259f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 153, + false, + List(Vector3(1339.691f, 1169.995f, 91.574f), Vector3(1331.518f, 1128.805f, 91.322f)) + ) + ) + ZipLinePaths( + new ZipLinePath(154, false, List(Vector3(1340.717f, 673.945f, 89.042f), Vector3(1293.814f, 673.438f, 85.22f))) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(1346.98f, 1243.609f, 112.552f), + Vector3(1365.815f, 1197.503f, 117.758f), + Vector3(1383.897f, 1153.241f, 121.128f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + true, + List(Vector3(1351.016f, 1254.782f, 112.074f), Vector3(1348.091f, 1254.931f, 117.579f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 157, + false, + List( + Vector3(1355.713f, 1145.351f, 122.442f), + Vector3(1308.557f, 1161.641f, 119.865f), + Vector3(1261.402f, 1177.931f, 116.539f), + Vector3(1218.961f, 1192.593f, 111.982f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 158, + false, + List( + Vector3(1356.956f, 1121.272f, 121.169f), + Vector3(1344.419f, 1103.447f, 123.439f), + Vector3(1331.882f, 1085.622f, 97.41f), + Vector3(1320.599f, 1069.579f, 74.574f), + Vector3(1309.316f, 1053.536f, 67.839f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(159, true, List(Vector3(1357.74f, 895.959f, 59.35f), Vector3(1360.201f, 894.144f, 93.751f))) + ) + ZipLinePaths( + new ZipLinePath(160, true, List(Vector3(1361.935f, 804.341f, 64.056f), Vector3(1357.002f, 801.86f, 46.63f))) + ) + ZipLinePaths( + new ZipLinePath( + 161, + false, + List( + Vector3(1362.178f, 886.635f, 94.264f), + Vector3(1335.084f, 844.963f, 89.573f), + Vector3(1315.035f, 814.126f, 83.439f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 162, + false, + List( + Vector3(1364.3f, 1153.417f, 122.494f), + Vector3(1356.834f, 1163.739f, 122.87f), + Vector3(1334.369f, 1184.662f, 101.953f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 163, + false, + List( + Vector3(1365.132f, 689.391f, 92.669f), + Vector3(1349.931f, 707.329f, 91.865f), + Vector3(1334.731f, 725.267f, 76.399f), + Vector3(1320.754f, 742.953f, 64.585f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(164, true, List(Vector3(1367.319f, 685.024f, 59.35f), Vector3(1369.049f, 684.262f, 92.131f))) + ) + ZipLinePaths( + new ZipLinePath(165, true, List(Vector3(1367.378f, 1307.869f, 69.287f), Vector3(1366.65f, 1309.663f, 99.29f))) + ) + ZipLinePaths( + new ZipLinePath( + 166, + false, + List( + Vector3(1368.273f, 1305.847f, 99.844f), + Vector3(1368.455f, 1295.812f, 98.705f), + Vector3(1368.338f, 1284.377f, 95.52f), + Vector3(1368.104f, 1261.507f, 80.35f), + Vector3(1367.916f, 1243.211f, 69.842f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(167, true, List(Vector3(1368.901f, 675.463f, 92.14f), Vector3(1354.678f, 673.232f, 88.541f))) + ) + ZipLinePaths( + new ZipLinePath( + 168, + false, + List( + Vector3(1370.444f, 896.269f, 94.24f), + Vector3(1410.474f, 915.351f, 69.813f), + Vector3(1423.818f, 921.711f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 169, + false, + List( + Vector3(1374.328f, 851.615f, 99.725f), + Vector3(1339.342f, 901.528f, 91.012f), + Vector3(1313.456f, 944.441f, 81.564f), + Vector3(1287.57f, 987.354f, 72.116f), + Vector3(1263.714f, 1026.901f, 61.023f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 170, + false, + List( + Vector3(1379.289f, 821.763f, 99.73f), + Vector3(1346.288f, 784.372f, 90.076f), + Vector3(1319.407f, 753.3f, 78.291f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 171, + false, + List( + Vector3(1391.245f, 823.148f, 99.721f), + Vector3(1377.189f, 775.284f, 97.042f), + Vector3(1363.132f, 727.421f, 93.615f), + Vector3(1349.076f, 679.557f, 90.188f), + Vector3(1348.233f, 676.685f, 89.041f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 172, + false, + List( + Vector3(1401.064f, 994.658f, 87.999f), + Vector3(1359.762f, 968.901f, 77.283f), + Vector3(1318.459f, 943.144f, 65.823f), + Vector3(1309.373f, 937.477f, 60.167f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 173, + false, + List( + Vector3(1403.96f, 1159.131f, 102.791f), + Vector3(1364.256f, 1189.526f, 103.601f), + Vector3(1324.053f, 1219.322f, 103.67f), + Vector3(1319.789f, 1223.569f, 101.9f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 174, + false, + List( + Vector3(1404.913f, 726.942f, 54.268f), + Vector3(1415.572f, 723.945f, 61.051f), + Vector3(1426.231f, 720.948f, 59.866f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(175, true, List(Vector3(1407.877f, 1157.284f, 68.2f), Vector3(1410.102f, 1155.769f, 102.29f))) + ) + ZipLinePaths( + new ZipLinePath( + 176, + false, + List( + Vector3(1441.888f, 920.159f, 59.857f), + Vector3(1448.313f, 870.457f, 70.052f), + Vector3(1449.069f, 864.609f, 69.246f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(177, true, List(Vector3(921.825f, 917.111f, 62.093f), Vector3(910.937f, 927.938f, 106.39f))) + ) + ZipLinePaths( + new ZipLinePath( + 178, + false, + List( + Vector3(936.213f, 867.162f, 62.594f), + Vector3(946.107f, 818.178f, 66.55f), + Vector3(950.856f, 794.666f, 64.818f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 179, + false, + List( + Vector3(619.323f, 951.023f, 83.943f), + Vector3(616.715f, 926.938f, 81.874f), + Vector3(614.108f, 902.854f, 72.325f), + Vector3(613.065f, 893.22f, 67.528f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 180, + false, + List( + Vector3(245.714f, 848.102f, 43.132f), + Vector3(296.709f, 848.756f, 43.882f), + Vector3(323.707f, 849.102f, 43.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 181, + false, + List( + Vector3(380.613f, 839.591f, 43.291f), + Vector3(399.483f, 840.484f, 51.34f), + Vector3(418.353f, 841.378f, 53.222f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 182, + false, + List( + Vector3(423.423f, 847.719f, 53.214f), + Vector3(424.065f, 872.128f, 60.785f), + Vector3(424.386f, 884.333f, 66.332f), + Vector3(424.707f, 896.537f, 68.202f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 183, + false, + List( + Vector3(462.449f, 888.611f, 73.2f), + Vector3(511.515f, 888.994f, 87.828f), + Vector3(514.401f, 889.017f, 88.205f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 184, + false, + List( + Vector3(529.355f, 904.244f, 88.305f), + Vector3(543.173f, 903.908f, 93.112f), + Vector3(557.977f, 903.548f, 93.203f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 185, + false, + List( + Vector3(369.424f, 856.903f, 43.137f), + Vector3(370.753f, 870.317f, 43.183f), + Vector3(372.082f, 883.73f, 42.93f), + Vector3(372.593f, 929.659f, 26.657f), + Vector3(392.704f, 974.788f, 25.183f), + Vector3(440.126f, 1067.446f, 23.137f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 186, + false, + List( + Vector3(461.151f, 1105.585f, 25.899f), + Vector3(509.539f, 1102.527f, 43.908f), + Vector3(525.022f, 1101.548f, 42.586f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 187, + false, + List( + Vector3(546.503f, 1044.498f, 41.76f), + Vector3(549.481f, 1035.018f, 62.544f), + Vector3(550.578f, 1029.883f, 62.594f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 188, + false, + List( + Vector3(588.661f, 1034.477f, 62.594f), + Vector3(618.061f, 1076.138f, 62.575f), + Vector3(626.132f, 1087.575f, 59.872f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 189, + false, + List( + Vector3(567.287f, 1091.792f, 59.85f), + Vector3(566.47f, 1087.667f, 59.901f), + Vector3(564.019f, 1075.292f, 41.828f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 190, + false, + List( + Vector3(674.348f, 1054.132f, 42.211f), + Vector3(676.883f, 1066.163f, 59.553f), + Vector3(677.417f, 1068.695f, 59.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(191, true, List(Vector3(715.551f, 1254.657f, 41.711f), Vector3(719.445f, 1248.623f, 52.27f))) + ) + ZipLinePaths( + new ZipLinePath( + 192, + false, + List( + Vector3(730.179f, 1259.137f, 51.721f), + Vector3(725.114f, 1277.521f, 56.281f), + Vector3(720.048f, 1295.905f, 59.862f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 193, + false, + List( + Vector3(739.333f, 1249.902f, 51.803f), + Vector3(747.707f, 1237.638f, 61.155f), + Vector3(756.08f, 1225.373f, 67.572f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 194, + false, + List( + Vector3(784.345f, 1158.64f, 63.956f), + Vector3(786.322f, 1148.447f, 62.598f), + Vector3(788.299f, 1138.255f, 59.86f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 195, + false, + List( + Vector3(802.066f, 1126.481f, 59.856f), + Vector3(845.835f, 1151.296f, 68.917f), + Vector3(855.276f, 1156.648f, 69.245f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 196, + false, + List( + Vector3(809.589f, 1096.782f, 59.851f), + Vector3(859.53f, 1086.64f, 62.576f), + Vector3(909.472f, 1076.499f, 64.558f), + Vector3(917.306f, 1074.908f, 62.493f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 197, + false, + List( + Vector3(739.925f, 1121.005f, 59.851f), + Vector3(724.109f, 1169.36f, 58.494f), + Vector3(717.596f, 1189.27f, 57.265f), + Vector3(716.976f, 1191.166f, 56.882f), + Vector3(715.115f, 1196.855f, 54.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 198, + false, + List( + Vector3(708.861f, 1189.259f, 56.684f), + Vector3(723.914f, 1163.117f, 99.532f), + Vector3(726.509f, 1159.805f, 99.717f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 199, + false, + List( + Vector3(766.786f, 1064.421f, 100.684f), + Vector3(744.404f, 1056.068f, 97.217f), + Vector3(722.023f, 1047.715f, 86.674f), + Vector3(677.259f, 1031.01f, 71.931f), + Vector3(656.668f, 1023.326f, 63.855f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 200, + false, + List( + Vector3(783.594f, 1061.932f, 100.672f), + Vector3(804.372f, 1049.105f, 98.415f), + Vector3(825.15f, 1036.279f, 90.67f), + Vector3(866.706f, 1010.626f, 79.938f), + Vector3(908.262f, 984.973f, 69.207f), + Vector3(929.871f, 971.633f, 62.605f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 201, + false, + List( + Vector3(936.867f, 757.882f, 86.26f), + Vector3(888.988f, 761.779f, 100.866f), + Vector3(864.09f, 763.805f, 106.935f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 202, + false, + List( + Vector3(937.908f, 750.375f, 86.289f), + Vector3(918.478f, 737.428f, 82.43f), + Vector3(899.047f, 724.481f, 69.121f), + Vector3(894.384f, 721.374f, 62.642f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 203, + false, + List( + Vector3(868.071f, 721.611f, 62.603f), + Vector3(847.144f, 722.775f, 69.972f), + Vector3(826.218f, 723.939f, 70.76f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 204, + false, + List( + Vector3(805.619f, 664.018f, 42.212f), + Vector3(791.589f, 676f, 70.301f), + Vector3(789.047f, 678.172f, 70.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 205, + false, + List( + Vector3(947.93f, 423.772f, 43.135f), + Vector3(903.179f, 446.076f, 45.082f), + Vector3(858.428f, 468.38f, 45.882f), + Vector3(813.677f, 490.683f, 45.081f), + Vector3(790.406f, 502.281f, 43.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 206, + false, + List( + Vector3(919.391f, 482.058f, 53.372f), + Vector3(919.499f, 493.516f, 57.359f), + Vector3(919.608f, 504.973f, 61.073f), + Vector3(919.716f, 516.431f, 64.786f), + Vector3(919.825f, 527.888f, 68.225f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 207, + false, + List( + Vector3(903.584f, 556.412f, 83.215f), + Vector3(903.852f, 566.832f, 85.348f), + Vector3(904.12f, 577.252f, 88.597f), + Vector3(904.387f, 587.672f, 92.146f), + Vector3(904.655f, 598.092f, 93.811f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 208, + false, + List( + Vector3(793.715f, 540.457f, 42.854f), + Vector3(827.38f, 578.564f, 47.499f), + Vector3(861.045f, 616.671f, 51.401f), + Vector3(865.666f, 621.901f, 51.304f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 209, + false, + List( + Vector3(889.504f, 637.051f, 42.212f), + Vector3(892.089f, 649.448f, 62.344f), + Vector3(892.966f, 651.613f, 62.594f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 210, + false, + List( + Vector3(951.854f, 636.424f, 40.682f), + Vector3(948.828f, 647.958f, 62.17f), + Vector3(947.164f, 656.161f, 62.594f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 211, + false, + List( + Vector3(1071.14f, 654.136f, 40.718f), + Vector3(1064.402f, 662.815f, 63.377f), + Vector3(1063.335f, 664.8f, 63.831f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 212, + false, + List( + Vector3(1082.249f, 692.541f, 63.831f), + Vector3(1089.854f, 706.044f, 63.412f), + Vector3(1097.458f, 719.547f, 62.394f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 213, + false, + List( + Vector3(1129.616f, 797.599f, 62.785f), + Vector3(1175.716f, 818.7f, 69.054f), + Vector3(1193.795f, 826.976f, 69.241f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 214, + false, + List( + Vector3(1260.129f, 863.553f, 69.249f), + Vector3(1278.477f, 876.77f, 67.795f), + Vector3(1296.825f, 889.987f, 60.16f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 215, + false, + List( + Vector3(1273.776f, 820.533f, 69.268f), + Vector3(1276.763f, 813.405f, 75.03f), + Vector3(1280.549f, 806.276f, 74.649f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(216, false, List(Vector3(1344.93f, 825.989f, 64.548f), Vector3(1346.993f, 873.881f, 59.876f))) + ) + ZipLinePaths( + new ZipLinePath(217, true, List(Vector3(1339.858f, 929.759f, 41.711f), Vector3(1318.114f, 908.199f, 68.808f))) + ) + ZipLinePaths( + new ZipLinePath( + 218, + false, + List( + Vector3(1030.151f, 1713.887f, 23.14f), + Vector3(1006.194f, 1699.563f, 26.603f), + Vector3(982.238f, 1687.64f, 29.17f), + Vector3(934.325f, 1678.794f, 37.248f), + Vector3(898.87f, 1678.435f, 45.05f), + Vector3(888.329f, 1676.453f, 43.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 219, + false, + List( + Vector3(848.815f, 1671.583f, 43.141f), + Vector3(845.118f, 1664.51f, 44.601f), + Vector3(836.221f, 1647.438f, 46.061f), + Vector3(823.827f, 1623.292f, 48.887f), + Vector3(812.239f, 1574.001f, 57.282f), + Vector3(810.939f, 1556.451f, 61.617f), + Vector3(811.09f, 1547.475f, 63.184f), + Vector3(819.04f, 1538.3f, 63.456f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 220, + false, + List( + Vector3(868.882f, 1435.428f, 42.945f), + Vector3(905.951f, 1403.482f, 53.947f), + Vector3(943.021f, 1371.536f, 64.215f), + Vector3(960.642f, 1362.453f, 62.601f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 221, + false, + List( + Vector3(937.234f, 1295.401f, 62.596f), + Vector3(915.49f, 1285.599f, 65.559f), + Vector3(893.746f, 1275.796f, 67.126f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 222, + false, + List( + Vector3(840.873f, 1401.981f, 54.899f), + Vector3(854.118f, 1354.514f, 64.089f), + Vector3(860.475f, 1331.73f, 67.131f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 223, + false, + List( + Vector3(776.421f, 1253.584f, 53.384f), + Vector3(735.488f, 1253.999f, 82.838f), + Vector3(730.985f, 1254.045f, 87.489f), + Vector3(726.483f, 1254.09f, 89.041f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 224, + false, + List( + Vector3(687.379f, 1281.924f, 89.056f), + Vector3(646.928f, 1254.989f, 78.015f), + Vector3(606.477f, 1228.054f, 66.247f), + Vector3(593.533f, 1219.435f, 59.867f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 225, + false, + List( + Vector3(704.658f, 1288.16f, 89.048f), + Vector3(755.051f, 1287.183f, 82.015f), + Vector3(805.444f, 1286.205f, 74.249f), + Vector3(824.218f, 1285.841f, 67.133f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(226, true, List(Vector3(844.815f, 1286.36f, 66.624f), Vector3(847.467f, 1287.213f, 96.622f))) + ) + ZipLinePaths( + new ZipLinePath( + 227, + false, + List( + Vector3(839.532f, 1286.398f, 97.146f), + Vector3(819.924f, 1273.129f, 91.276f), + Vector3(800.317f, 1259.86f, 81.805f), + Vector3(761.102f, 1233.322f, 65.734f), + Vector3(734.741f, 1208.16f, 54.236f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 228, + false, + List( + Vector3(832.911f, 1249.75f, 42.211f), + Vector3(843.646f, 1254.481f, 66.64f), + Vector3(845.363f, 1255.237f, 67.125f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 229, + false, + List( + Vector3(863.404f, 1270.313f, 98.145f), + Vector3(863.198f, 1285.183f, 97.207f), + Vector3(862.992f, 1300.053f, 94.075f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 230, + false, + List( + Vector3(865.722f, 1311.216f, 94.071f), + Vector3(868.416f, 1330.263f, 85.658f), + Vector3(871.11f, 1349.31f, 61.342f), + Vector3(873.962f, 1369.478f, 42.045f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(231, true, List(Vector3(851.285f, 1311.441f, 66.624f), Vector3(863.553f, 1307.425f, 93.57f))) + ) + ZipLinePaths( + new ZipLinePath( + 232, + false, + List( + Vector3(914.737f, 1389.299f, 44.225f), + Vector3(949.158f, 1356.677f, 63.697f), + Vector3(955.907f, 1350.281f, 62.619f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 233, + false, + List( + Vector3(924.083f, 1365.718f, 44.222f), + Vector3(896.58f, 1326.667f, 59.757f), + Vector3(888.604f, 1315.343f, 64.395f), + Vector3(880.629f, 1304.018f, 67.156f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 234, + false, + List( + Vector3(911.533f, 1328.871f, 52.857f), + Vector3(914.633f, 1279.494f, 60.854f), + Vector3(917.734f, 1230.116f, 68.106f), + Vector3(919.036f, 1209.378f, 69.244f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 235, + false, + List( + Vector3(924.721f, 1198.763f, 69.239f), + Vector3(972.718f, 1215.952f, 68.696f), + Vector3(999.068f, 1225.389f, 65.768f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 236, + false, + List( + Vector3(1030.019f, 1253.007f, 73.812f), + Vector3(982.302f, 1255.186f, 89.326f), + Vector3(934.584f, 1257.365f, 104.505f), + Vector3(920.423f, 1258.175f, 106.812f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 237, + false, + List( + Vector3(863.545f, 1238.247f, 105.601f), + Vector3(849.048f, 1235.318f, 101.887f), + Vector3(834.551f, 1232.388f, 77.573f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 238, + false, + List( + Vector3(896.085f, 1222.855f, 42.212f), + Vector3(893.519f, 1214.151f, 68.902f), + Vector3(893.252f, 1213.244f, 69.121f), + Vector3(892.984f, 1212.338f, 69.24f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 239, + false, + List( + Vector3(890.882f, 1211.784f, 102.01f), + Vector3(913.426f, 1221.384f, 96.86f), + Vector3(935.971f, 1230.983f, 88.63f), + Vector3(981.059f, 1250.183f, 74.518f), + Vector3(1004.93f, 1260.348f, 65.788f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 240, + false, + List( + Vector3(731.968f, 946.628f, 42.211f), + Vector3(730.363f, 950.87f, 51.2f), + Vector3(729.36f, 955.145f, 55.24f), + Vector3(728.156f, 959.076f, 55.66f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 241, + false, + List( + Vector3(690.086f, 971.539f, 55.689f), + Vector3(679.401f, 966.341f, 62.045f), + Vector3(668.716f, 961.144f, 63.86f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 242, + false, + List( + Vector3(622.095f, 943.343f, 72.955f), + Vector3(654.892f, 905.636f, 72.118f), + Vector3(666.699f, 892.061f, 70.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 243, + false, + List( + Vector3(645.091f, 888.102f, 42.212f), + Vector3(653.24f, 872.267f, 70.744f), + Vector3(655.488f, 867.899f, 70.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 244, + false, + List( + Vector3(620.426f, 919.306f, 42.211f), + Vector3(629.595f, 924.542f, 63.781f), + Vector3(632.347f, 926.451f, 63.831f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 245, + false, + List( + Vector3(649.583f, 1071.378f, 42.211f), + Vector3(659.85f, 1083.011f, 59.781f), + Vector3(661.806f, 1085.227f, 59.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 246, + false, + List( + Vector3(734.689f, 1077.906f, 42.211f), + Vector3(741.524f, 1083.509f, 59.801f), + Vector3(743.532f, 1085.732f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 247, + false, + List( + Vector3(709.956f, 1074.547f, 42.212f), + Vector3(699.011f, 1081.242f, 59.754f), + Vector3(696.383f, 1083.257f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 248, + false, + List( + Vector3(820.188f, 1246.386f, 63.948f), + Vector3(831.947f, 1257.798f, 66.436f), + Vector3(843.707f, 1269.21f, 67.129f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(249, false, List(Vector3(877.568f, 1254.981f, 67.125f), Vector3(872.845f, 1220.395f, 69.241f))) + ) + ZipLinePaths( + new ZipLinePath(250, true, List(Vector3(845.981f, 1185.464f, 41.711f), Vector3(859.485f, 1177.367f, 68.74f))) + ) + ZipLinePaths( + new ZipLinePath( + 251, + false, + List( + Vector3(1144.739f, 1649.306f, 23.148f), + Vector3(1194.351f, 1645.963f, 35.819f), + Vector3(1212.834f, 1644.717f, 42.718f), + Vector3(1222.075f, 1644.094f, 43.276f), + Vector3(1231.317f, 1643.472f, 43.148f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 252, + false, + List( + Vector3(1227.85f, 1610.461f, 43.135f), + Vector3(1229.804f, 1586.178f, 44.07f), + Vector3(1228.358f, 1561.896f, 44.905f), + Vector3(1240.066f, 1513.33f, 45.129f), + Vector3(1251.701f, 1489.533f, 44.117f), + Vector3(1266.336f, 1465.736f, 43.21f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 253, + false, + List( + Vector3(1134.072f, 1592.592f, 23.217f), + Vector3(1151.421f, 1592.184f, 30.682f), + Vector3(1167.171f, 1591.775f, 33.188f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 254, + false, + List( + Vector3(1175.593f, 1584.054f, 33.224f), + Vector3(1174.719f, 1566.227f, 38.716f), + Vector3(1174.282f, 1557.313f, 41.722f), + Vector3(1174.063f, 1552.857f, 42.824f), + Vector3(1173.845f, 1548.4f, 43.246f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 255, + false, + List( + Vector3(1158.087f, 1525.105f, 48.26f), + Vector3(1159.791f, 1505.263f, 53.135f), + Vector3(1160.643f, 1495.342f, 55.83f), + Vector3(1161.069f, 1490.382f, 57.377f), + Vector3(1161.495f, 1485.421f, 58.24f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 256, + false, + List( + Vector3(1168.947f, 1481.166f, 58.294f), + Vector3(1184.724f, 1480.379f, 63.525f), + Vector3(1192.613f, 1479.985f, 66.403f), + Vector3(1200.501f, 1479.591f, 68.205f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 257, + false, + List( + Vector3(1208.601f, 1472.023f, 68.227f), + Vector3(1208.31f, 1455.703f, 73.09f), + Vector3(1208.165f, 1447.544f, 75.782f), + Vector3(1208.092f, 1443.464f, 77.129f), + Vector3(1208.02f, 1439.384f, 78.198f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 258, + false, + List( + Vector3(1169.756f, 1292.65f, 42.212f), + Vector3(1179.642f, 1286.138f, 70.391f), + Vector3(1183.899f, 1283.421f, 70.441f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 259, + false, + List( + Vector3(1102.447f, 1188.444f, 42.212f), + Vector3(1095.153f, 1188.352f, 65.517f), + Vector3(1090.986f, 1188.609f, 65.768f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(260, true, List(Vector3(694.51f, 741.781f, 76.599f), Vector3(688.903f, 728.66f, 101.6f))) + ) + ZipLinePaths( + new ZipLinePath(261, true, List(Vector3(629.166f, 733.948f, 74.099f), Vector3(643.196f, 744.321f, 101.6f))) + ) + ZipLinePaths( + new ZipLinePath( + 262, + false, + List( + Vector3(1353.63f, 747.113f, 53.986f), + Vector3(1391.4f, 713.131f, 59.157f), + Vector3(1402.509f, 703.136f, 59.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 263, + false, + List( + Vector3(1346.229f, 658.639f, 59.857f), + Vector3(1330.56f, 672.779f, 65.587f), + Vector3(1314.892f, 686.919f, 67.132f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(264, true, List(Vector3(1331.453f, 668.413f, 41.711f), Vector3(1350.394f, 668.947f, 59.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 265, + false, + List( + Vector3(1344.101f, 609.861f, 42.211f), + Vector3(1361.166f, 616.692f, 59.11f), + Vector3(1363.021f, 617.434f, 59.327f), + Vector3(1364.875f, 618.177f, 59.545f), + Vector3(1368.585f, 619.662f, 59.881f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 266, + false, + List( + Vector3(1439.681f, 676.189f, 59.852f), + Vector3(1443.939f, 678.26f, 59.801f), + Vector3(1458.843f, 685.511f, 42.212f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 267, + false, + List( + Vector3(1390.255f, 604.317f, 59.851f), + Vector3(1354.764f, 627.739f, 88.29f), + Vector3(1352.605f, 629.307f, 89.415f), + Vector3(1350.845f, 630.474f, 89.04f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 268, + false, + List( + Vector3(1746.911f, 999.303f, 43.135f), + Vector3(1724.334f, 954.686f, 45.081f), + Vector3(1714.4f, 935.055f, 43.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 269, + false, + List( + Vector3(1688.086f, 871.654f, 43.135f), + Vector3(1679.453f, 862.013f, 43.74f), + Vector3(1676.219f, 844.372f, 44.644f), + Vector3(1651.953f, 817.89f, 44.453f), + Vector3(1633.164f, 814.917f, 43.103f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 270, + false, + List( + Vector3(1620.102f, 856.378f, 43.135f), + Vector3(1574.771f, 877.48f, 44.604f), + Vector3(1529.44f, 898.583f, 44.513f), + Vector3(1485.923f, 918.842f, 42.847f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 271, + false, + List( + Vector3(1461.886f, 923.554f, 42.515f), + Vector3(1449.823f, 925.983f, 59.4f), + Vector3(1446.194f, 926.978f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 272, + false, + List( + Vector3(1398.87f, 921.689f, 59.85f), + Vector3(1380.721f, 916.061f, 61.55f), + Vector3(1362.572f, 910.433f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 273, + false, + List( + Vector3(1359.474f, 897.941f, 94.479f), + Vector3(1361.148f, 948.464f, 101.977f), + Vector3(1362.823f, 998.988f, 108.705f), + Vector3(1364.498f, 1049.51f, 115.434f), + Vector3(1366.172f, 1100.031f, 122.163f), + Vector3(1366.271f, 1103.003f, 120.819f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 274, + false, + List( + Vector3(1354.682f, 897.716f, 94.275f), + Vector3(1343.985f, 903.132f, 94.229f), + Vector3(1333.289f, 908.548f, 88.707f), + Vector3(1311.896f, 919.381f, 80.864f), + Vector3(1269.11f, 941.045f, 66.717f), + Vector3(1226.325f, 962.709f, 52.57f), + Vector3(1209.21f, 971.375f, 42.236f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 275, + false, + List( + Vector3(1274.319f, 944.513f, 60.151f), + Vector3(1267.87f, 995.053f, 58.667f), + Vector3(1265.467f, 1013.881f, 55.631f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 276, + false, + List( + Vector3(1222.162f, 1005.468f, 55.63f), + Vector3(1207.972f, 984.884f, 56.288f), + Vector3(1193.781f, 964.3f, 56.846f), + Vector3(1181.293f, 946.186f, 55.226f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(277, true, List(Vector3(1194.95f, 1107.768f, 41.711f), Vector3(1218.82f, 1105.194f, 69.941f))) + ) + ZipLinePaths( + new ZipLinePath(278, true, List(Vector3(1123.832f, 1080.507f, 41.711f), Vector3(1116.495f, 1068.461f, 62.393f))) + ) + ZipLinePaths( + new ZipLinePath(279, true, List(Vector3(1034.543f, 1133.645f, 41.711f), Vector3(1037.79f, 1115.293f, 62.193f))) + ) + ZipLinePaths( + new ZipLinePath(280, true, List(Vector3(906.983f, 1073.184f, 41.711f), Vector3(914.912f, 1061.557f, 61.993f))) + ) + ZipLinePaths( + new ZipLinePath(281, true, List(Vector3(975.064f, 873.634f, 41.711f), Vector3(977.547f, 890.666f, 62.093f))) + ) + ZipLinePaths( + new ZipLinePath( + 282, + false, + List( + Vector3(1147.666f, 899.276f, 62.797f), + Vector3(1177.835f, 858.782f, 70.663f), + Vector3(1180.201f, 855.606f, 69.242f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(283, true, List(Vector3(1194.793f, 868.656f, 41.711f), Vector3(1197.048f, 853.824f, 68.739f))) + ) + ZipLinePaths( + new ZipLinePath(284, true, List(Vector3(1238.114f, 831.003f, 68.741f), Vector3(1247.279f, 835.486f, 98.74f))) + ) + ZipLinePaths( + new ZipLinePath( + 285, + false, + List( + Vector3(1248.833f, 828.196f, 99.256f), + Vector3(1251.872f, 816.912f, 97.397f), + Vector3(1254.912f, 805.628f, 93.371f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 286, + false, + List( + Vector3(1248.384f, 837.722f, 99.256f), + Vector3(1248.72f, 862.495f, 95.127f), + Vector3(1249.057f, 887.268f, 87.915f), + Vector3(1249.729f, 936.814f, 75.849f), + Vector3(1250.401f, 986.361f, 63.783f), + Vector3(1250.731f, 1010.648f, 55.645f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 287, + false, + List( + Vector3(1230.23f, 791.562f, 96.216f), + Vector3(1218.028f, 808.975f, 92.428f), + Vector3(1205.827f, 827.087f, 77.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 288, + false, + List( + Vector3(1245.69f, 872.174f, 69.241f), + Vector3(1234.739f, 921.78f, 65.479f), + Vector3(1223.788f, 971.385f, 60.979f), + Vector3(1216.273f, 1005.428f, 55.632f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(289, true, List(Vector3(1257.469f, 740.652f, 41.711f), Vector3(1262.312f, 727.352f, 66.624f))) + ) + ZipLinePaths( + new ZipLinePath( + 290, + false, + List( + Vector3(1310.319f, 709.589f, 67.145f), + Vector3(1325.971f, 725.913f, 63.854f), + Vector3(1341.622f, 742.237f, 54.005f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 291, + false, + List( + Vector3(1066.185f, 345.278f, 43.135f), + Vector3(1090.987f, 394.68f, 45.06f), + Vector3(1123.79f, 403.783f, 45.673f), + Vector3(1156.593f, 422.686f, 46.286f), + Vector3(1179.195f, 433.738f, 47.086f), + Vector3(1201.797f, 438.591f, 45.486f), + Vector3(1237.251f, 434.604f, 43.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 292, + false, + List( + Vector3(1272.832f, 405.679f, 43.135f), + Vector3(1294.179f, 431.04f, 46.641f), + Vector3(1302.453f, 466.721f, 48.643f), + Vector3(1302.127f, 502.402f, 48.746f), + Vector3(1293.351f, 530.733f, 46.31f), + Vector3(1282.175f, 551.063f, 45.675f), + Vector3(1262.223f, 581.125f, 44.003f), + Vector3(1253.687f, 594.169f, 42.981f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 293, + false, + List( + Vector3(1200.595f, 640.757f, 52.22f), + Vector3(1168.131f, 678.489f, 57.706f), + Vector3(1135.666f, 716.221f, 62.455f), + Vector3(1131.771f, 720.748f, 62.396f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 294, + false, + List( + Vector3(1219.446f, 577.213f, 42.939f), + Vector3(1175.25f, 600.595f, 44.341f), + Vector3(1153.152f, 612.286f, 44.469f), + Vector3(1131.055f, 623.978f, 43.198f), + Vector3(1128.403f, 625.381f, 42.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 295, + false, + List( + Vector3(1113.809f, 605.958f, 42.211f), + Vector3(1072.225f, 578.187f, 43.962f), + Vector3(1040.622f, 557.081f, 42.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 296, + false, + List( + Vector3(1012.342f, 557.626f, 50.268f), + Vector3(989.945f, 568.578f, 49.742f), + Vector3(967.548f, 579.531f, 47.916f), + Vector3(922.755f, 601.437f, 43.816f), + Vector3(918.275f, 603.627f, 42.373f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 297, + false, + List( + Vector3(1033.85f, 552.731f, 51.556f), + Vector3(1018.965f, 601.166f, 58.072f), + Vector3(1004.079f, 649.601f, 63.85f), + Vector3(1002.62f, 654.35f, 63.834f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 298, + false, + List( + Vector3(1308.288f, 670.018f, 42.254f), + Vector3(1305.111f, 674.774f, 66.289f), + Vector3(1301.934f, 679.531f, 67.124f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 299, + false, + List( + Vector3(1407.327f, 760.918f, 53.937f), + Vector3(1419.914f, 741.887f, 56.392f), + Vector3(1426.207f, 732.371f, 59.071f), + Vector3(1432.5f, 722.855f, 59.855f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 300, + false, + List( + Vector3(1414.956f, 810.604f, 42.452f), + Vector3(1425.75f, 818.247f, 68.99f), + Vector3(1428.91f, 820.812f, 69.24f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 301, + false, + List( + Vector3(1425.967f, 865.543f, 69.246f), + Vector3(1402.712f, 873.841f, 67.036f), + Vector3(1379.458f, 882.138f, 62.133f), + Vector3(1372.016f, 884.794f, 59.857f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 302, + false, + List( + Vector3(1268.025f, 904.827f, 60.151f), + Vector3(1263.757f, 902.727f, 60.1f), + Vector3(1254.573f, 899.329f, 42.212f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(303, true, List(Vector3(1428.244f, 1018.152f, 43.262f), Vector3(1408.2f, 1003.259f, 87.531f))) + ) + ZipLinePaths( + new ZipLinePath( + 304, + false, + List( + Vector3(1379.635f, 1065.961f, 42.212f), + Vector3(1371.185f, 1066.559f, 67.74f), + Vector3(1365.717f, 1066.945f, 67.839f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 305, + false, + List( + Vector3(1326.501f, 1050.083f, 67.866f), + Vector3(1328.553f, 1045.581f, 67.818f), + Vector3(1334.452f, 1032.638f, 42.212f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 306, + false, + List( + Vector3(1292.772f, 1057.474f, 67.839f), + Vector3(1288.802f, 1055.895f, 67.589f), + Vector3(1280.42f, 1052.562f, 42.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(307, true, List(Vector3(1284.273f, 1206.771f, 76.399f), Vector3(1295.186f, 1221.284f, 101.4f))) + ) + ZipLinePaths( + new ZipLinePath(308, true, List(Vector3(1348.044f, 1190.75f, 73.899f), Vector3(1330.058f, 1181.224f, 101.4f))) + ) + ZipLinePaths( + new ZipLinePath( + 309, + false, + List( + Vector3(1329.397f, 1225.476f, 101.9f), + Vector3(1329.965f, 1233.585f, 111.129f), + Vector3(1330.533f, 1241.695f, 112.558f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 310, + false, + List( + Vector3(1345.622f, 1270.449f, 112.588f), + Vector3(1348.906f, 1276.707f, 111.787f), + Vector3(1353.99f, 1284.564f, 90.887f), + Vector3(1358.757f, 1295.48f, 69.788f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 311, + false, + List( + Vector3(1339.331f, 1270.575f, 112.644f), + Vector3(1335.904f, 1293.307f, 111.479f), + Vector3(1332.477f, 1316.04f, 91.271f), + Vector3(1326.294f, 1357.048f, 69.844f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 312, + false, + List( + Vector3(1293.195f, 1460.466f, 43.003f), + Vector3(1304.584f, 1411.778f, 43.654f), + Vector3(1307.09f, 1401.067f, 42.884f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(313, true, List(Vector3(1289.895f, 1360.424f, 55.23f), Vector3(1300.183f, 1350.843f, 69.287f))) + ) + ZipLinePaths( + new ZipLinePath( + 314, + false, + List( + Vector3(1259.444f, 1278.484f, 70.442f), + Vector3(1253.348f, 1271.49f, 86.369f), + Vector3(1250.736f, 1268.492f, 86.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 315, + false, + List( + Vector3(1274.596f, 1241.349f, 70.441f), + Vector3(1263.641f, 1240.252f, 86.68f), + Vector3(1255.817f, 1239.468f, 86.331f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 316, + false, + List( + Vector3(1214.538f, 1287.232f, 86.33f), + Vector3(1193.34f, 1333.233f, 93.024f), + Vector3(1177.13f, 1368.41f, 92.951f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 317, + false, + List( + Vector3(1113.475f, 1299.019f, 63.833f), + Vector3(1150.486f, 1264.243f, 69.233f), + Vector3(1165f, 1250.605f, 70.443f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 318, + false, + List( + Vector3(747.8f, 1289.149f, 42.211f), + Vector3(753.436f, 1302.617f, 59.563f), + Vector3(755.512f, 1307.579f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(319, true, List(Vector3(804.848f, 1407.705f, 41.797f), Vector3(784.69f, 1401.489f, 59.372f))) + ) + ZipLinePaths( + new ZipLinePath( + 320, + false, + List( + Vector3(759.088f, 857.776f, 42.212f), + Vector3(742.757f, 847.212f, 71.134f), + Vector3(740.65f, 845.849f, 70.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(321, true, List(Vector3(828.794f, 769.675f, 70.251f), Vector3(840.305f, 765.899f, 106.42f))) + ) + ZipLinePaths( + new ZipLinePath( + 322, + false, + List( + Vector3(913.898f, 667.581f, 100.812f), + Vector3(910.081f, 645.955f, 99.928f), + Vector3(906.265f, 624.328f, 98.046f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 323, + false, + List( + Vector3(1383.419f, 938.651f, 41.978f), + Vector3(1391.808f, 942.877f, 59.369f), + Vector3(1393.629f, 942.458f, 59.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 324, + false, + List( + Vector3(1280.215f, 1185.361f, 101.932f), + Vector3(1263.28f, 1198.155f, 99.615f), + Vector3(1246.344f, 1210.948f, 86.363f) + ) + ) + ) } ZipLines() diff --git a/pslogin/src/main/scala/zonemaps/Ugd04.scala b/pslogin/src/main/scala/zonemaps/Ugd04.scala index 04a3d2ff..2308559d 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd04.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd04.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd04 { // Byblos Building10076() def Building10076(): Unit = { // Name: ceiling_bldg_a_10076 Type: ceiling_bldg_a GUID: 1, MapID: 10076 - LocalBuilding("ceiling_bldg_a_10076", 1, 10076, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1039.99f, 1095.48f, 207.81f), Vector3(0f, 0f, 341f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10076", + 1, + 10076, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1039.99f, 1095.48f, 207.81f), + Vector3(0f, 0f, 341f), + ceiling_bldg_a + ) + ) + ) LocalObject(665, Door.Constructor(Vector3(1029.274f, 1107.31f, 209.589f)), owning_building_guid = 1) LocalObject(670, Door.Constructor(Vector3(1050.822f, 1080.083f, 215.095f)), owning_building_guid = 1) LocalObject(671, Door.Constructor(Vector3(1057.124f, 1093.777f, 209.589f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd04 { // Byblos Building10031() def Building10031(): Unit = { // Name: ceiling_bldg_b_10031 Type: ceiling_bldg_b GUID: 2, MapID: 10031 - LocalBuilding("ceiling_bldg_b_10031", 2, 10031, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(870.26f, 1148.19f, 178.45f), Vector3(0f, 0f, 304f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10031", + 2, + 10031, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(870.26f, 1148.19f, 178.45f), + Vector3(0f, 0f, 304f), + ceiling_bldg_b + ) + ) + ) LocalObject(646, Door.Constructor(Vector3(872.7868f, 1142.638f, 180.229f)), owning_building_guid = 2) LocalObject(650, Door.Constructor(Vector3(885.0576f, 1155.74f, 180.229f)), owning_building_guid = 2) } @@ -38,7 +62,19 @@ object Ugd04 { // Byblos Building10290() def Building10290(): Unit = { // Name: ceiling_bldg_c_10290 Type: ceiling_bldg_c GUID: 3, MapID: 10290 - LocalBuilding("ceiling_bldg_c_10290", 3, 10290, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(828.74f, 1334.76f, 162.68f), Vector3(0f, 0f, 222f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10290", + 3, + 10290, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(828.74f, 1334.76f, 162.68f), + Vector3(0f, 0f, 222f), + ceiling_bldg_c + ) + ) + ) LocalObject(628, Door.Constructor(Vector3(786.8789f, 1312.529f, 164.459f)), owning_building_guid = 3) LocalObject(634, Door.Constructor(Vector3(807.6219f, 1289.492f, 164.459f)), owning_building_guid = 3) LocalObject(639, Door.Constructor(Vector3(832.528f, 1332.81f, 164.459f)), owning_building_guid = 3) @@ -47,29 +83,73 @@ object Ugd04 { // Byblos Building10057() def Building10057(): Unit = { // Name: ceiling_bldg_d_10057 Type: ceiling_bldg_d GUID: 4, MapID: 10057 - LocalBuilding("ceiling_bldg_d_10057", 4, 10057, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(709.3f, 999.79f, 174.85f), Vector3(0f, 0f, 204f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10057", + 4, + 10057, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(709.3f, 999.79f, 174.85f), + Vector3(0f, 0f, 204f), + ceiling_bldg_d + ) + ) + ) LocalObject(619, Door.Constructor(Vector3(693.3103f, 992.6534f, 176.585f)), owning_building_guid = 4) LocalObject(621, Door.Constructor(Vector3(702.1634f, 1015.78f, 176.585f)), owning_building_guid = 4) LocalObject(623, Door.Constructor(Vector3(716.3992f, 983.8055f, 176.585f)), owning_building_guid = 4) LocalObject(624, Door.Constructor(Vector3(725.2844f, 1006.889f, 176.585f)), owning_building_guid = 4) - LocalObject(762, Painbox.Constructor(Vector3(709.302f, 1000.013f, 183.158f), painbox_continuous), owning_building_guid = 4) + LocalObject( + 762, + Painbox.Constructor(Vector3(709.302f, 1000.013f, 183.158f), painbox_continuous), + owning_building_guid = 4 + ) } Building10279() def Building10279(): Unit = { // Name: ceiling_bldg_d_10279 Type: ceiling_bldg_d GUID: 5, MapID: 10279 - LocalBuilding("ceiling_bldg_d_10279", 5, 10279, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1159.27f, 1060.78f, 198.86f), Vector3(0f, 0f, 284f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10279", + 5, + 10279, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1159.27f, 1060.78f, 198.86f), + Vector3(0f, 0f, 284f), + ceiling_bldg_d + ) + ) + ) LocalObject(686, Door.Constructor(Vector3(1142.284f, 1056.528f, 200.595f)), owning_building_guid = 5) LocalObject(689, Door.Constructor(Vector3(1155.054f, 1077.754f, 200.595f)), owning_building_guid = 5) LocalObject(690, Door.Constructor(Vector3(1163.522f, 1043.794f, 200.595f)), owning_building_guid = 5) LocalObject(692, Door.Constructor(Vector3(1176.244f, 1064.996f, 200.595f)), owning_building_guid = 5) - LocalObject(765, Painbox.Constructor(Vector3(1159.05f, 1060.821f, 207.168f), painbox_continuous), owning_building_guid = 5) + LocalObject( + 765, + Painbox.Constructor(Vector3(1159.05f, 1060.821f, 207.168f), painbox_continuous), + owning_building_guid = 5 + ) } Building10056() def Building10056(): Unit = { // Name: ceiling_bldg_e_10056 Type: ceiling_bldg_e GUID: 6, MapID: 10056 - LocalBuilding("ceiling_bldg_e_10056", 6, 10056, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(837.17f, 1077.23f, 193.72f), Vector3(0f, 0f, 336f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10056", + 6, + 10056, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(837.17f, 1077.23f, 193.72f), + Vector3(0f, 0f, 336f), + ceiling_bldg_e + ) + ) + ) LocalObject(638, Door.Constructor(Vector3(825.7902f, 1081.213f, 195.499f)), owning_building_guid = 6) LocalObject(642, Door.Constructor(Vector3(854.0325f, 1105.309f, 200.999f)), owning_building_guid = 6) LocalObject(644, Door.Constructor(Vector3(863.2781f, 1074.38f, 200.999f)), owning_building_guid = 6) @@ -79,7 +159,19 @@ object Ugd04 { // Byblos Building10058() def Building10058(): Unit = { // Name: ceiling_bldg_f_10058 Type: ceiling_bldg_f GUID: 7, MapID: 10058 - LocalBuilding("ceiling_bldg_f_10058", 7, 10058, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(699.42f, 1116.72f, 164.46f), Vector3(0f, 0f, 233f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10058", + 7, + 10058, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(699.42f, 1116.72f, 164.46f), + Vector3(0f, 0f, 233f), + ceiling_bldg_f + ) + ) + ) LocalObject(620, Door.Constructor(Vector3(695.7913f, 1145.111f, 166.239f)), owning_building_guid = 7) LocalObject(622, Door.Constructor(Vector3(714.9769f, 1089.991f, 166.239f)), owning_building_guid = 7) } @@ -87,7 +179,19 @@ object Ugd04 { // Byblos Building10077() def Building10077(): Unit = { // Name: ceiling_bldg_g_10077 Type: ceiling_bldg_g GUID: 8, MapID: 10077 - LocalBuilding("ceiling_bldg_g_10077", 8, 10077, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1136.66f, 968.13f, 183.11f), Vector3(0f, 0f, 101f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10077", + 8, + 10077, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1136.66f, 968.13f, 183.11f), + Vector3(0f, 0f, 101f), + ceiling_bldg_g + ) + ) + ) LocalObject(683, Door.Constructor(Vector3(1119.488f, 964.8085f, 184.889f)), owning_building_guid = 8) LocalObject(688, Door.Constructor(Vector3(1154.39f, 963.4429f, 184.889f)), owning_building_guid = 8) } @@ -95,7 +199,19 @@ object Ugd04 { // Byblos Building10030() def Building10030(): Unit = { // Name: ceiling_bldg_h_10030 Type: ceiling_bldg_h GUID: 9, MapID: 10030 - LocalBuilding("ceiling_bldg_h_10030", 9, 10030, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(894.28f, 1280.67f, 179.98f), Vector3(0f, 0f, 320f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10030", + 9, + 10030, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(894.28f, 1280.67f, 179.98f), + Vector3(0f, 0f, 320f), + ceiling_bldg_h + ) + ) + ) LocalObject(648, Door.Constructor(Vector3(879.0871f, 1288.218f, 181.759f)), owning_building_guid = 9) LocalObject(652, Door.Constructor(Vector3(895.5801f, 1264.974f, 184.259f)), owning_building_guid = 9) LocalObject(654, Door.Constructor(Vector3(907.9444f, 1290.757f, 181.759f)), owning_building_guid = 9) @@ -104,7 +220,19 @@ object Ugd04 { // Byblos Building10283() def Building10283(): Unit = { // Name: ground_bldg_a_10283 Type: ground_bldg_a GUID: 81, MapID: 10283 - LocalBuilding("ground_bldg_a_10283", 81, 10283, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(872.31f, 871.53f, 124f), Vector3(0f, 0f, 0f), ground_bldg_a))) + LocalBuilding( + "ground_bldg_a_10283", + 81, + 10283, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(872.31f, 871.53f, 124f), + Vector3(0f, 0f, 0f), + ground_bldg_a + ) + ) + ) LocalObject(643, Door.Constructor(Vector3(858.162f, 879.54f, 125.779f)), owning_building_guid = 81) LocalObject(651, Door.Constructor(Vector3(888.688f, 875.546f, 125.779f)), owning_building_guid = 81) } @@ -112,7 +240,19 @@ object Ugd04 { // Byblos Building10022() def Building10022(): Unit = { // Name: ground_bldg_a_10022 Type: ground_bldg_a GUID: 82, MapID: 10022 - LocalBuilding("ground_bldg_a_10022", 82, 10022, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1063.4f, 1234.86f, 124f), Vector3(0f, 0f, 0f), ground_bldg_a))) + LocalBuilding( + "ground_bldg_a_10022", + 82, + 10022, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1063.4f, 1234.86f, 124f), + Vector3(0f, 0f, 0f), + ground_bldg_a + ) + ) + ) LocalObject(669, Door.Constructor(Vector3(1049.252f, 1242.87f, 125.779f)), owning_building_guid = 82) LocalObject(677, Door.Constructor(Vector3(1079.778f, 1238.876f, 125.779f)), owning_building_guid = 82) } @@ -120,7 +260,19 @@ object Ugd04 { // Byblos Building10288() def Building10288(): Unit = { // Name: ground_bldg_b_10288 Type: ground_bldg_b GUID: 83, MapID: 10288 - LocalBuilding("ground_bldg_b_10288", 83, 10288, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(875.58f, 779.96f, 113f), Vector3(0f, 0f, 0f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10288", + 83, + 10288, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(875.58f, 779.96f, 113f), + Vector3(0f, 0f, 0f), + ground_bldg_b + ) + ) + ) LocalObject(647, Door.Constructor(Vector3(877.595f, 796.45f, 114.779f)), owning_building_guid = 83) LocalObject(649, Door.Constructor(Vector3(881.596f, 778.95f, 114.779f)), owning_building_guid = 83) LocalObject(653, Door.Constructor(Vector3(900.102f, 785.976f, 120.279f)), owning_building_guid = 83) @@ -129,7 +281,19 @@ object Ugd04 { // Byblos Building10001() def Building10001(): Unit = { // Name: ground_bldg_c_10001 Type: ground_bldg_c GUID: 84, MapID: 10001 - LocalBuilding("ground_bldg_c_10001", 84, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(789.88f, 853.2f, 131f), Vector3(0f, 0f, 270f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10001", + 84, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(789.88f, 853.2f, 131f), + Vector3(0f, 0f, 270f), + ground_bldg_c + ) + ) + ) LocalObject(626, Door.Constructor(Vector3(778.39f, 807.216f, 132.779f)), owning_building_guid = 84) LocalObject(631, Door.Constructor(Vector3(793.864f, 854.71f, 132.779f)), owning_building_guid = 84) LocalObject(635, Door.Constructor(Vector3(809.39f, 807.216f, 132.779f)), owning_building_guid = 84) @@ -138,7 +302,19 @@ object Ugd04 { // Byblos Building10222() def Building10222(): Unit = { // Name: ground_bldg_c_10222 Type: ground_bldg_c GUID: 85, MapID: 10222 - LocalBuilding("ground_bldg_c_10222", 85, 10222, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1395.18f, 1160.54f, 130.8f), Vector3(0f, 0f, 45f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10222", + 85, + 10222, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1395.18f, 1160.54f, 130.8f), + Vector3(0f, 0f, 45f), + ground_bldg_c + ) + ) + ) LocalObject(720, Door.Constructor(Vector3(1391.295f, 1162.289f, 132.579f)), owning_building_guid = 85) LocalObject(721, Door.Constructor(Vector3(1413.9f, 1206.851f, 132.579f)), owning_building_guid = 85) LocalObject(722, Door.Constructor(Vector3(1435.82f, 1184.931f, 132.579f)), owning_building_guid = 85) @@ -147,7 +323,19 @@ object Ugd04 { // Byblos Building10154() def Building10154(): Unit = { // Name: ground_bldg_d_10154 Type: ground_bldg_d GUID: 86, MapID: 10154 - LocalBuilding("ground_bldg_d_10154", 86, 10154, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(831.35f, 734.45f, 111f), Vector3(0f, 0f, 63f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10154", + 86, + 10154, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(831.35f, 734.45f, 111f), + Vector3(0f, 0f, 63f), + ground_bldg_d + ) + ) + ) LocalObject(636, Door.Constructor(Vector3(815.7736f, 742.4045f, 112.735f)), owning_building_guid = 86) LocalObject(637, Door.Constructor(Vector3(823.3954f, 718.8736f, 112.735f)), owning_building_guid = 86) LocalObject(640, Door.Constructor(Vector3(839.2851f, 750.0588f, 112.735f)), owning_building_guid = 86) @@ -157,7 +345,19 @@ object Ugd04 { // Byblos Building10155() def Building10155(): Unit = { // Name: ground_bldg_d_10155 Type: ground_bldg_d GUID: 87, MapID: 10155 - LocalBuilding("ground_bldg_d_10155", 87, 10155, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1132.27f, 1293.23f, 118.79f), Vector3(0f, 0f, 236f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10155", + 87, + 10155, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1132.27f, 1293.23f, 118.79f), + Vector3(0f, 0f, 236f), + ground_bldg_d + ) + ) + ) LocalObject(682, Door.Constructor(Vector3(1117.745f, 1303.008f, 120.525f)), owning_building_guid = 87) LocalObject(684, Door.Constructor(Vector3(1122.492f, 1278.705f, 120.525f)), owning_building_guid = 87) LocalObject(685, Door.Constructor(Vector3(1142.064f, 1307.721f, 120.525f)), owning_building_guid = 87) @@ -167,7 +367,19 @@ object Ugd04 { // Byblos Building10023() def Building10023(): Unit = { // Name: ground_bldg_e_10023 Type: ground_bldg_e GUID: 88, MapID: 10023 - LocalBuilding("ground_bldg_e_10023", 88, 10023, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1044.11f, 1336.51f, 116.41f), Vector3(0f, 0f, 315f), ground_bldg_e))) + LocalBuilding( + "ground_bldg_e_10023", + 88, + 10023, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1044.11f, 1336.51f, 116.41f), + Vector3(0f, 0f, 315f), + ground_bldg_e + ) + ) + ) LocalObject(667, Door.Constructor(Vector3(1034.913f, 1344.307f, 118.189f)), owning_building_guid = 88) LocalObject(673, Door.Constructor(Vector3(1067.463f, 1324.493f, 123.689f)), owning_building_guid = 88) LocalObject(674, Door.Constructor(Vector3(1069.915f, 1356.681f, 123.689f)), owning_building_guid = 88) @@ -177,7 +389,19 @@ object Ugd04 { // Byblos Building10156() def Building10156(): Unit = { // Name: ground_bldg_e_10156 Type: ground_bldg_e GUID: 89, MapID: 10156 - LocalBuilding("ground_bldg_e_10156", 89, 10156, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1083.61f, 698.32f, 116.81f), Vector3(0f, 0f, 315f), ground_bldg_e))) + LocalBuilding( + "ground_bldg_e_10156", + 89, + 10156, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1083.61f, 698.32f, 116.81f), + Vector3(0f, 0f, 315f), + ground_bldg_e + ) + ) + ) LocalObject(675, Door.Constructor(Vector3(1074.413f, 706.1166f, 118.589f)), owning_building_guid = 89) LocalObject(678, Door.Constructor(Vector3(1106.963f, 686.3034f, 124.089f)), owning_building_guid = 89) LocalObject(679, Door.Constructor(Vector3(1109.415f, 718.4909f, 124.089f)), owning_building_guid = 89) @@ -187,7 +411,19 @@ object Ugd04 { // Byblos Building10008() def Building10008(): Unit = { // Name: ground_bldg_f_10008 Type: ground_bldg_f GUID: 90, MapID: 10008 - LocalBuilding("ground_bldg_f_10008", 90, 10008, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1138.19f, 625.25f, 113.54f), Vector3(0f, 0f, 305f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10008", + 90, + 10008, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1138.19f, 625.25f, 113.54f), + Vector3(0f, 0f, 305f), + ground_bldg_f + ) + ) + ) LocalObject(680, Door.Constructor(Vector3(1110.067f, 630.5721f, 115.319f)), owning_building_guid = 90) LocalObject(691, Door.Constructor(Vector3(1168.418f, 631.7859f, 115.319f)), owning_building_guid = 90) } @@ -195,7 +431,19 @@ object Ugd04 { // Byblos Building10009() def Building10009(): Unit = { // Name: ground_bldg_g_10009 Type: ground_bldg_g GUID: 91, MapID: 10009 - LocalBuilding("ground_bldg_g_10009", 91, 10009, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1368.37f, 871.02f, 119f), Vector3(0f, 0f, 230f), ground_bldg_g))) + LocalBuilding( + "ground_bldg_g_10009", + 91, + 10009, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1368.37f, 871.02f, 119f), + Vector3(0f, 0f, 230f), + ground_bldg_g + ) + ) + ) LocalObject(718, Door.Constructor(Vector3(1360.855f, 887.7485f, 120.779f)), owning_building_guid = 91) LocalObject(719, Door.Constructor(Vector3(1381.758f, 859.7654f, 120.779f)), owning_building_guid = 91) } @@ -203,7 +451,19 @@ object Ugd04 { // Byblos Building10010() def Building10010(): Unit = { // Name: ground_bldg_h_10010 Type: ground_bldg_h GUID: 92, MapID: 10010 - LocalBuilding("ground_bldg_h_10010", 92, 10010, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1312.56f, 941.38f, 118.56f), Vector3(0f, 0f, 45f), ground_bldg_h))) + LocalBuilding( + "ground_bldg_h_10010", + 92, + 10010, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1312.56f, 941.38f, 118.56f), + Vector3(0f, 0f, 45f), + ground_bldg_h + ) + ) + ) LocalObject(712, Door.Constructor(Vector3(1303.717f, 926.9027f, 120.339f)), owning_building_guid = 92) LocalObject(713, Door.Constructor(Vector3(1303.703f, 955.8715f, 120.339f)), owning_building_guid = 92) LocalObject(716, Door.Constructor(Vector3(1328.309f, 941.3072f, 122.839f)), owning_building_guid = 92) @@ -212,7 +472,19 @@ object Ugd04 { // Byblos Building10298() def Building10298(): Unit = { // Name: ground_bldg_i_10298 Type: ground_bldg_i GUID: 93, MapID: 10298 - LocalBuilding("ground_bldg_i_10298", 93, 10298, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1290.66f, 1171.46f, 134.92f), Vector3(0f, 0f, 55f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10298", + 93, + 10298, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1290.66f, 1171.46f, 134.92f), + Vector3(0f, 0f, 55f), + ground_bldg_i + ) + ) + ) LocalObject(702, Door.Constructor(Vector3(1273.733f, 1153.416f, 136.699f)), owning_building_guid = 93) LocalObject(710, Door.Constructor(Vector3(1302.412f, 1194.373f, 136.699f)), owning_building_guid = 93) } @@ -220,42 +492,112 @@ object Ugd04 { // Byblos Building10350() def Building10350(): Unit = { // Name: N_Redoubt Type: redoubt GUID: 94, MapID: 10350 - LocalBuilding("N_Redoubt", 94, 10350, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(781.91f, 1176.43f, 109.13f), Vector3(0f, 0f, 241f), redoubt))) - LocalObject(816, CaptureTerminal.Constructor(Vector3(800.5176f, 1166.139f, 119.614f), vanu_control_console), owning_building_guid = 94) + LocalBuilding( + "N_Redoubt", + 94, + 10350, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(781.91f, 1176.43f, 109.13f), Vector3(0f, 0f, 241f), redoubt) + ) + ) + LocalObject( + 816, + CaptureTerminal.Constructor(Vector3(800.5176f, 1166.139f, 119.614f), vanu_control_console), + owning_building_guid = 94 + ) LocalObject(625, Door.Constructor(Vector3(773.4349f, 1161.108f, 110.865f)), owning_building_guid = 94) LocalObject(627, Door.Constructor(Vector3(786.5674f, 1159.849f, 120.909f)), owning_building_guid = 94) LocalObject(629, Door.Constructor(Vector3(790.4033f, 1191.719f, 110.865f)), owning_building_guid = 94) LocalObject(630, Door.Constructor(Vector3(790.5598f, 1167.062f, 120.889f)), owning_building_guid = 94) LocalObject(632, Door.Constructor(Vector3(794.4199f, 1174.092f, 120.889f)), owning_building_guid = 94) LocalObject(633, Door.Constructor(Vector3(798.427f, 1181.313f, 120.909f)), owning_building_guid = 94) - LocalObject(830, Terminal.Constructor(Vector3(765.7828f, 1185.513f, 109.0858f), vanu_equipment_term), owning_building_guid = 94) - LocalObject(836, Terminal.Constructor(Vector3(798.2699f, 1167.343f, 109.0835f), vanu_equipment_term), owning_building_guid = 94) - LocalObject(775, SpawnTube.Constructor(Vector3(781.91f, 1176.43f, 109.13f), Vector3(0, 0, 299)), owning_building_guid = 94) - LocalObject(763, Painbox.Constructor(Vector3(782.1441f, 1176.253f, 116.919f), painbox_continuous), owning_building_guid = 94) + LocalObject( + 830, + Terminal.Constructor(Vector3(765.7828f, 1185.513f, 109.0858f), vanu_equipment_term), + owning_building_guid = 94 + ) + LocalObject( + 836, + Terminal.Constructor(Vector3(798.2699f, 1167.343f, 109.0835f), vanu_equipment_term), + owning_building_guid = 94 + ) + LocalObject( + 775, + SpawnTube.Constructor(Vector3(781.91f, 1176.43f, 109.13f), Vector3(0, 0, 299)), + owning_building_guid = 94 + ) + LocalObject( + 763, + Painbox.Constructor(Vector3(782.1441f, 1176.253f, 116.919f), painbox_continuous), + owning_building_guid = 94 + ) } Building10354() def Building10354(): Unit = { // Name: S_Redoubt Type: redoubt GUID: 95, MapID: 10354 - LocalBuilding("S_Redoubt", 95, 10354, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1026.2f, 729.8f, 124.4f), Vector3(0f, 0f, 25f), redoubt))) - LocalObject(817, CaptureTerminal.Constructor(Vector3(1017.195f, 749.0633f, 134.884f), vanu_control_console), owning_building_guid = 95) + LocalBuilding( + "S_Redoubt", + 95, + 10354, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1026.2f, 729.8f, 124.4f), Vector3(0f, 0f, 25f), redoubt) + ) + ) + LocalObject( + 817, + CaptureTerminal.Constructor(Vector3(1017.195f, 749.0633f, 134.884f), vanu_control_console), + owning_building_guid = 95 + ) LocalObject(658, Door.Constructor(Vector3(1009.968f, 735.5583f, 136.179f)), owning_building_guid = 95) LocalObject(659, Door.Constructor(Vector3(1010.342f, 722.4229f, 126.135f)), owning_building_guid = 95) LocalObject(663, Door.Constructor(Vector3(1017.453f, 739.0447f, 136.159f)), owning_building_guid = 95) LocalObject(664, Door.Constructor(Vector3(1024.708f, 742.4631f, 136.159f)), owning_building_guid = 95) LocalObject(666, Door.Constructor(Vector3(1032.178f, 745.9517f, 136.179f)), owning_building_guid = 95) LocalObject(668, Door.Constructor(Vector3(1042.063f, 737.2145f, 126.135f)), owning_building_guid = 95) - LocalObject(843, Terminal.Constructor(Vector3(1018.305f, 746.7673f, 124.3535f), vanu_equipment_term), owning_building_guid = 95) - LocalObject(846, Terminal.Constructor(Vector3(1033.909f, 712.9728f, 124.3558f), vanu_equipment_term), owning_building_guid = 95) - LocalObject(776, SpawnTube.Constructor(Vector3(1026.2f, 729.8f, 124.4f), Vector3(0, 0, 155)), owning_building_guid = 95) - LocalObject(764, Painbox.Constructor(Vector3(1026.115f, 730.0808f, 132.189f), painbox_continuous), owning_building_guid = 95) + LocalObject( + 843, + Terminal.Constructor(Vector3(1018.305f, 746.7673f, 124.3535f), vanu_equipment_term), + owning_building_guid = 95 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(1033.909f, 712.9728f, 124.3558f), vanu_equipment_term), + owning_building_guid = 95 + ) + LocalObject( + 776, + SpawnTube.Constructor(Vector3(1026.2f, 729.8f, 124.4f), Vector3(0, 0, 155)), + owning_building_guid = 95 + ) + LocalObject( + 764, + Painbox.Constructor(Vector3(1026.115f, 730.0808f, 132.189f), painbox_continuous), + owning_building_guid = 95 + ) } Building10285() def Building10285(): Unit = { // Name: S_Stasis Type: vanu_control_point GUID: 152, MapID: 10285 - LocalBuilding("S_Stasis", 152, 10285, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(647.64f, 755.35f, 139.61f), Vector3(0f, 0f, 293f), vanu_control_point))) - LocalObject(814, CaptureTerminal.Constructor(Vector3(647.0474f, 751.6558f, 170.094f), vanu_control_console), owning_building_guid = 152) + LocalBuilding( + "S_Stasis", + 152, + 10285, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(647.64f, 755.35f, 139.61f), + Vector3(0f, 0f, 293f), + vanu_control_point + ) + ) + ) + LocalObject( + 814, + CaptureTerminal.Constructor(Vector3(647.0474f, 751.6558f, 170.094f), vanu_control_console), + owning_building_guid = 152 + ) LocalObject(599, Door.Constructor(Vector3(611.1205f, 763.9373f, 141.389f)), owning_building_guid = 152) LocalObject(602, Door.Constructor(Vector3(632.1003f, 755.4609f, 171.389f)), owning_building_guid = 152) LocalObject(603, Door.Constructor(Vector3(635.5374f, 748.0574f, 146.33f)), owning_building_guid = 152) @@ -268,27 +610,99 @@ object Ugd04 { // Byblos LocalObject(610, Door.Constructor(Vector3(654.6605f, 765.0719f, 171.389f)), owning_building_guid = 152) LocalObject(611, Door.Constructor(Vector3(657.6295f, 757.4349f, 146.33f)), owning_building_guid = 152) LocalObject(618, Door.Constructor(Vector3(692.3818f, 737.6293f, 141.389f)), owning_building_guid = 152) - LocalObject(820, Terminal.Constructor(Vector3(636.3433f, 754.7145f, 144.623f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(821, Terminal.Constructor(Vector3(637.835f, 758.3971f, 144.627f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(822, Terminal.Constructor(Vector3(641.005f, 743.9242f, 144.627f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(823, Terminal.Constructor(Vector3(644.6388f, 742.4835f, 144.623f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(824, Terminal.Constructor(Vector3(648.4553f, 762.9833f, 144.623f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(826, Terminal.Constructor(Vector3(652.1378f, 761.4916f, 144.627f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(827, Terminal.Constructor(Vector3(655.3082f, 747.0178f, 144.627f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(828, Terminal.Constructor(Vector3(656.7999f, 750.7004f, 144.623f), vanu_equipment_term), owning_building_guid = 152) - LocalObject(880, SpawnTube.Constructor(Vector3(646.5804f, 752.7275f, 144.749f), Vector3(0, 0, 247)), owning_building_guid = 152) - LocalObject(761, Painbox.Constructor(Vector3(646.191f, 752.8744f, 153.9518f), painbox_continuous), owning_building_guid = 152) - LocalObject(767, Painbox.Constructor(Vector3(633.8731f, 747.6716f, 148.5f), painbox_door_radius_continuous), owning_building_guid = 152) - LocalObject(768, Painbox.Constructor(Vector3(641.0864f, 765.9443f, 147.9f), painbox_door_radius_continuous), owning_building_guid = 152) - LocalObject(769, Painbox.Constructor(Vector3(652.7124f, 739.271f, 148.5f), painbox_door_radius_continuous), owning_building_guid = 152) - LocalObject(770, Painbox.Constructor(Vector3(659.4526f, 758.1463f, 148.5f), painbox_door_radius_continuous), owning_building_guid = 152) + LocalObject( + 820, + Terminal.Constructor(Vector3(636.3433f, 754.7145f, 144.623f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 821, + Terminal.Constructor(Vector3(637.835f, 758.3971f, 144.627f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 822, + Terminal.Constructor(Vector3(641.005f, 743.9242f, 144.627f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 823, + Terminal.Constructor(Vector3(644.6388f, 742.4835f, 144.623f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 824, + Terminal.Constructor(Vector3(648.4553f, 762.9833f, 144.623f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 826, + Terminal.Constructor(Vector3(652.1378f, 761.4916f, 144.627f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 827, + Terminal.Constructor(Vector3(655.3082f, 747.0178f, 144.627f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 828, + Terminal.Constructor(Vector3(656.7999f, 750.7004f, 144.623f), vanu_equipment_term), + owning_building_guid = 152 + ) + LocalObject( + 880, + SpawnTube.Constructor(Vector3(646.5804f, 752.7275f, 144.749f), Vector3(0, 0, 247)), + owning_building_guid = 152 + ) + LocalObject( + 761, + Painbox.Constructor(Vector3(646.191f, 752.8744f, 153.9518f), painbox_continuous), + owning_building_guid = 152 + ) + LocalObject( + 767, + Painbox.Constructor(Vector3(633.8731f, 747.6716f, 148.5f), painbox_door_radius_continuous), + owning_building_guid = 152 + ) + LocalObject( + 768, + Painbox.Constructor(Vector3(641.0864f, 765.9443f, 147.9f), painbox_door_radius_continuous), + owning_building_guid = 152 + ) + LocalObject( + 769, + Painbox.Constructor(Vector3(652.7124f, 739.271f, 148.5f), painbox_door_radius_continuous), + owning_building_guid = 152 + ) + LocalObject( + 770, + Painbox.Constructor(Vector3(659.4526f, 758.1463f, 148.5f), painbox_door_radius_continuous), + owning_building_guid = 152 + ) } Building10215() def Building10215(): Unit = { // Name: N_Stasis Type: vanu_control_point GUID: 153, MapID: 10215 - LocalBuilding("N_Stasis", 153, 10215, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1294.35f, 1355.27f, 144.89f), Vector3(0f, 0f, 123f), vanu_control_point))) - LocalObject(819, CaptureTerminal.Constructor(Vector3(1294.292f, 1359.011f, 175.374f), vanu_control_console), owning_building_guid = 153) + LocalBuilding( + "N_Stasis", + 153, + 10215, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1294.35f, 1355.27f, 144.89f), + Vector3(0f, 0f, 123f), + vanu_control_point + ) + ) + ) + LocalObject( + 819, + CaptureTerminal.Constructor(Vector3(1294.292f, 1359.011f, 175.374f), vanu_control_console), + owning_building_guid = 153 + ) LocalObject(701, Door.Constructor(Vector3(1247.211f, 1364.952f, 146.669f)), owning_building_guid = 153) LocalObject(703, Door.Constructor(Vector3(1284.874f, 1351.482f, 151.61f)), owning_building_guid = 153) LocalObject(704, Door.Constructor(Vector3(1288.421f, 1368.101f, 151.61f)), owning_building_guid = 153) @@ -301,26 +715,94 @@ object Ugd04 { // Byblos LocalObject(714, Door.Constructor(Vector3(1305.002f, 1364.553f, 151.61f)), owning_building_guid = 153) LocalObject(715, Door.Constructor(Vector3(1309.673f, 1357.859f, 176.669f)), owning_building_guid = 153) LocalObject(717, Door.Constructor(Vector3(1331.806f, 1353.155f, 146.669f)), owning_building_guid = 153) - LocalObject(856, Terminal.Constructor(Vector3(1284.522f, 1358.258f, 149.903f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(857, Terminal.Constructor(Vector3(1285.351f, 1362.144f, 149.907f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(858, Terminal.Constructor(Vector3(1290.987f, 1348.441f, 149.907f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(859, Terminal.Constructor(Vector3(1294.873f, 1347.611f, 149.903f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(860, Terminal.Constructor(Vector3(1295.071f, 1368.462f, 149.903f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(861, Terminal.Constructor(Vector3(1298.9f, 1367.674f, 149.907f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(862, Terminal.Constructor(Vector3(1304.535f, 1353.972f, 149.907f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(863, Terminal.Constructor(Vector3(1305.365f, 1357.858f, 149.903f), vanu_equipment_term), owning_building_guid = 153) - LocalObject(881, SpawnTube.Constructor(Vector3(1294.938f, 1358.037f, 150.029f), Vector3(0, 0, 57)), owning_building_guid = 153) - LocalObject(766, Painbox.Constructor(Vector3(1295.347f, 1357.96f, 159.2318f), painbox_continuous), owning_building_guid = 153) - LocalObject(771, Painbox.Constructor(Vector3(1283.202f, 1350.465f, 153.78f), painbox_door_radius_continuous), owning_building_guid = 153) - LocalObject(772, Painbox.Constructor(Vector3(1286.563f, 1370.224f, 153.78f), painbox_door_radius_continuous), owning_building_guid = 153) - LocalObject(773, Painbox.Constructor(Vector3(1302.644f, 1345.975f, 153.18f), painbox_door_radius_continuous), owning_building_guid = 153) - LocalObject(774, Painbox.Constructor(Vector3(1306.574f, 1365.222f, 153.78f), painbox_door_radius_continuous), owning_building_guid = 153) + LocalObject( + 856, + Terminal.Constructor(Vector3(1284.522f, 1358.258f, 149.903f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 857, + Terminal.Constructor(Vector3(1285.351f, 1362.144f, 149.907f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 858, + Terminal.Constructor(Vector3(1290.987f, 1348.441f, 149.907f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 859, + Terminal.Constructor(Vector3(1294.873f, 1347.611f, 149.903f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 860, + Terminal.Constructor(Vector3(1295.071f, 1368.462f, 149.903f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 861, + Terminal.Constructor(Vector3(1298.9f, 1367.674f, 149.907f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 862, + Terminal.Constructor(Vector3(1304.535f, 1353.972f, 149.907f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 863, + Terminal.Constructor(Vector3(1305.365f, 1357.858f, 149.903f), vanu_equipment_term), + owning_building_guid = 153 + ) + LocalObject( + 881, + SpawnTube.Constructor(Vector3(1294.938f, 1358.037f, 150.029f), Vector3(0, 0, 57)), + owning_building_guid = 153 + ) + LocalObject( + 766, + Painbox.Constructor(Vector3(1295.347f, 1357.96f, 159.2318f), painbox_continuous), + owning_building_guid = 153 + ) + LocalObject( + 771, + Painbox.Constructor(Vector3(1283.202f, 1350.465f, 153.78f), painbox_door_radius_continuous), + owning_building_guid = 153 + ) + LocalObject( + 772, + Painbox.Constructor(Vector3(1286.563f, 1370.224f, 153.78f), painbox_door_radius_continuous), + owning_building_guid = 153 + ) + LocalObject( + 773, + Painbox.Constructor(Vector3(1302.644f, 1345.975f, 153.18f), painbox_door_radius_continuous), + owning_building_guid = 153 + ) + LocalObject( + 774, + Painbox.Constructor(Vector3(1306.574f, 1365.222f, 153.78f), painbox_door_radius_continuous), + owning_building_guid = 153 + ) } Building10000() def Building10000(): Unit = { // Name: Core Type: vanu_core GUID: 154, MapID: 10000 - LocalBuilding("Core", 154, 10000, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(989.99f, 1015.28f, 166.4f), Vector3(0f, 0f, 40f), vanu_core))) + LocalBuilding( + "Core", + 154, + 10000, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(989.99f, 1015.28f, 166.4f), + Vector3(0f, 0f, 40f), + vanu_core + ) + ) + ) LocalObject(655, Door.Constructor(Vector3(972.7982f, 985.2183f, 173.188f)), owning_building_guid = 154) LocalObject(656, Door.Constructor(Vector3(976.3412f, 1025.357f, 178.188f)), owning_building_guid = 154) LocalObject(657, Door.Constructor(Vector3(976.3412f, 1025.357f, 183.188f)), owning_building_guid = 154) @@ -332,8 +814,24 @@ object Ugd04 { // Byblos Building10011() def Building10011(): Unit = { // Name: N_ATPlant Type: vanu_vehicle_station GUID: 181, MapID: 10011 - LocalBuilding("N_ATPlant", 181, 10011, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(656.27f, 1262.7f, 108.8f), Vector3(0f, 0f, 230f), vanu_vehicle_station))) - LocalObject(815, CaptureTerminal.Constructor(Vector3(674.491f, 1317.672f, 139.284f), vanu_control_console), owning_building_guid = 181) + LocalBuilding( + "N_ATPlant", + 181, + 10011, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(656.27f, 1262.7f, 108.8f), + Vector3(0f, 0f, 230f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 815, + CaptureTerminal.Constructor(Vector3(674.491f, 1317.672f, 139.284f), vanu_control_console), + owning_building_guid = 181 + ) LocalObject(600, Door.Constructor(Vector3(621.247f, 1298.142f, 110.579f)), owning_building_guid = 181) LocalObject(601, Door.Constructor(Vector3(627.3662f, 1293.008f, 130.503f)), owning_building_guid = 181) LocalObject(612, Door.Constructor(Vector3(659.2061f, 1318.507f, 140.579f)), owning_building_guid = 181) @@ -343,21 +841,75 @@ object Ugd04 { // Byblos LocalObject(616, Door.Constructor(Vector3(677.9588f, 1302.772f, 140.579f)), owning_building_guid = 181) LocalObject(617, Door.Constructor(Vector3(679.8865f, 1280.268f, 130.491f)), owning_building_guid = 181) LocalObject(723, Door.Constructor(Vector3(684.5188f, 1323.429f, 115.433f)), owning_building_guid = 181) - LocalObject(809, Terminal.Constructor(Vector3(641.5201f, 1299.794f, 128.717f), vanu_air_vehicle_term), owning_building_guid = 181) - LocalObject(882, VehicleSpawnPad.Constructor(Vector3(644.5638f, 1291.446f, 128.716f), vanu_vehicle_creation_pad, Vector3(0, 0, 220)), owning_building_guid = 181, terminal_guid = 809) - LocalObject(810, Terminal.Constructor(Vector3(668.6462f, 1277.045f, 128.717f), vanu_air_vehicle_term), owning_building_guid = 181) - LocalObject(883, VehicleSpawnPad.Constructor(Vector3(659.8969f, 1278.58f, 128.716f), vanu_vehicle_creation_pad, Vector3(0, 0, 220)), owning_building_guid = 181, terminal_guid = 810) - LocalObject(825, Terminal.Constructor(Vector3(650.4069f, 1301.409f, 111.3f), vanu_equipment_term), owning_building_guid = 181) - LocalObject(829, Terminal.Constructor(Vector3(668.792f, 1285.982f, 111.3f), vanu_equipment_term), owning_building_guid = 181) - LocalObject(888, Terminal.Constructor(Vector3(663.0067f, 1297.969f, 113.8f), vanu_vehicle_term), owning_building_guid = 181) - LocalObject(884, VehicleSpawnPad.Constructor(Vector3(672.8193f, 1309.495f, 111.205f), vanu_vehicle_creation_pad, Vector3(0, 0, 40)), owning_building_guid = 181, terminal_guid = 888) + LocalObject( + 809, + Terminal.Constructor(Vector3(641.5201f, 1299.794f, 128.717f), vanu_air_vehicle_term), + owning_building_guid = 181 + ) + LocalObject( + 882, + VehicleSpawnPad + .Constructor(Vector3(644.5638f, 1291.446f, 128.716f), vanu_vehicle_creation_pad, Vector3(0, 0, 220)), + owning_building_guid = 181, + terminal_guid = 809 + ) + LocalObject( + 810, + Terminal.Constructor(Vector3(668.6462f, 1277.045f, 128.717f), vanu_air_vehicle_term), + owning_building_guid = 181 + ) + LocalObject( + 883, + VehicleSpawnPad + .Constructor(Vector3(659.8969f, 1278.58f, 128.716f), vanu_vehicle_creation_pad, Vector3(0, 0, 220)), + owning_building_guid = 181, + terminal_guid = 810 + ) + LocalObject( + 825, + Terminal.Constructor(Vector3(650.4069f, 1301.409f, 111.3f), vanu_equipment_term), + owning_building_guid = 181 + ) + LocalObject( + 829, + Terminal.Constructor(Vector3(668.792f, 1285.982f, 111.3f), vanu_equipment_term), + owning_building_guid = 181 + ) + LocalObject( + 888, + Terminal.Constructor(Vector3(663.0067f, 1297.969f, 113.8f), vanu_vehicle_term), + owning_building_guid = 181 + ) + LocalObject( + 884, + VehicleSpawnPad + .Constructor(Vector3(672.8193f, 1309.495f, 111.205f), vanu_vehicle_creation_pad, Vector3(0, 0, 40)), + owning_building_guid = 181, + terminal_guid = 888 + ) } Building10002() def Building10002(): Unit = { // Name: S_ATPlant Type: vanu_vehicle_station GUID: 182, MapID: 10002 - LocalBuilding("S_ATPlant", 182, 10002, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1188.77f, 698.47f, 110f), Vector3(0f, 0f, 175f), vanu_vehicle_station))) - LocalObject(818, CaptureTerminal.Constructor(Vector3(1244.251f, 715.0746f, 140.484f), vanu_control_console), owning_building_guid = 182) + LocalBuilding( + "S_ATPlant", + 182, + 10002, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1188.77f, 698.47f, 110f), + Vector3(0f, 0f, 175f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 818, + CaptureTerminal.Constructor(Vector3(1244.251f, 715.0746f, 140.484f), vanu_control_console), + owning_building_guid = 182 + ) LocalObject(693, Door.Constructor(Vector3(1192.092f, 683.2264f, 111.779f)), owning_building_guid = 182) LocalObject(694, Door.Constructor(Vector3(1197.018f, 739.5303f, 131.703f)), owning_building_guid = 182) LocalObject(695, Door.Constructor(Vector3(1197.714f, 747.488f, 111.779f)), owning_building_guid = 182) @@ -367,145 +919,511 @@ object Ugd04 { // Byblos LocalObject(699, Door.Constructor(Vector3(1235.445f, 719.8604f, 141.759f)), owning_building_guid = 182) LocalObject(700, Door.Constructor(Vector3(1236.169f, 728.0746f, 141.779f)), owning_building_guid = 182) LocalObject(724, Door.Constructor(Vector3(1254.719f, 710.1626f, 116.633f)), owning_building_guid = 182) - LocalObject(811, Terminal.Constructor(Vector3(1207.619f, 696.5599f, 129.917f), vanu_air_vehicle_term), owning_building_guid = 182) - LocalObject(885, VehicleSpawnPad.Constructor(Vector3(1203.858f, 704.6073f, 129.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -85)), owning_building_guid = 182, terminal_guid = 811) - LocalObject(812, Terminal.Constructor(Vector3(1210.696f, 731.829f, 129.917f), vanu_air_vehicle_term), owning_building_guid = 182) - LocalObject(886, VehicleSpawnPad.Constructor(Vector3(1205.603f, 724.5471f, 129.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -85)), owning_building_guid = 182, terminal_guid = 812) - LocalObject(854, Terminal.Constructor(Vector3(1215.024f, 701.5666f, 112.5f), vanu_equipment_term), owning_building_guid = 182) - LocalObject(855, Terminal.Constructor(Vector3(1217.116f, 725.4753f, 112.5f), vanu_equipment_term), owning_building_guid = 182) - LocalObject(889, Terminal.Constructor(Vector3(1221.525f, 713.1812f, 115f), vanu_vehicle_term), owning_building_guid = 182) - LocalObject(887, VehicleSpawnPad.Constructor(Vector3(1236.595f, 711.7543f, 112.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 95)), owning_building_guid = 182, terminal_guid = 889) + LocalObject( + 811, + Terminal.Constructor(Vector3(1207.619f, 696.5599f, 129.917f), vanu_air_vehicle_term), + owning_building_guid = 182 + ) + LocalObject( + 885, + VehicleSpawnPad + .Constructor(Vector3(1203.858f, 704.6073f, 129.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -85)), + owning_building_guid = 182, + terminal_guid = 811 + ) + LocalObject( + 812, + Terminal.Constructor(Vector3(1210.696f, 731.829f, 129.917f), vanu_air_vehicle_term), + owning_building_guid = 182 + ) + LocalObject( + 886, + VehicleSpawnPad + .Constructor(Vector3(1205.603f, 724.5471f, 129.916f), vanu_vehicle_creation_pad, Vector3(0, 0, -85)), + owning_building_guid = 182, + terminal_guid = 812 + ) + LocalObject( + 854, + Terminal.Constructor(Vector3(1215.024f, 701.5666f, 112.5f), vanu_equipment_term), + owning_building_guid = 182 + ) + LocalObject( + 855, + Terminal.Constructor(Vector3(1217.116f, 725.4753f, 112.5f), vanu_equipment_term), + owning_building_guid = 182 + ) + LocalObject( + 889, + Terminal.Constructor(Vector3(1221.525f, 713.1812f, 115f), vanu_vehicle_term), + owning_building_guid = 182 + ) + LocalObject( + 887, + VehicleSpawnPad + .Constructor(Vector3(1236.595f, 711.7543f, 112.405f), vanu_vehicle_creation_pad, Vector3(0, 0, 95)), + owning_building_guid = 182, + terminal_guid = 889 + ) } Building10273() def Building10273(): Unit = { // Name: GW_Cavern4_W Type: warpgate_cavern GUID: 183, MapID: 10273 - LocalBuilding("GW_Cavern4_W", 183, 10273, FoundationBuilder(WarpGate.Structure(Vector3(125.73f, 933.91f, 100.82f)))) + LocalBuilding( + "GW_Cavern4_W", + 183, + 10273, + FoundationBuilder(WarpGate.Structure(Vector3(125.73f, 933.91f, 100.82f))) + ) } Building10180() def Building10180(): Unit = { // Name: GW_Cavern4_S Type: warpgate_cavern GUID: 184, MapID: 10180 - LocalBuilding("GW_Cavern4_S", 184, 10180, FoundationBuilder(WarpGate.Structure(Vector3(856.92f, 191.61f, 101.24f)))) + LocalBuilding( + "GW_Cavern4_S", + 184, + 10180, + FoundationBuilder(WarpGate.Structure(Vector3(856.92f, 191.61f, 101.24f))) + ) } Building10178() def Building10178(): Unit = { // Name: GW_Cavern4_N Type: warpgate_cavern GUID: 185, MapID: 10178 - LocalBuilding("GW_Cavern4_N", 185, 10178, FoundationBuilder(WarpGate.Structure(Vector3(934.2f, 1858.96f, 81.44f)))) + LocalBuilding( + "GW_Cavern4_N", + 185, + 10178, + FoundationBuilder(WarpGate.Structure(Vector3(934.2f, 1858.96f, 81.44f))) + ) } Building10179() def Building10179(): Unit = { // Name: GW_Cavern4_E Type: warpgate_cavern GUID: 186, MapID: 10179 - LocalBuilding("GW_Cavern4_E", 186, 10179, FoundationBuilder(WarpGate.Structure(Vector3(1701.9f, 1247.33f, 81.06f)))) + LocalBuilding( + "GW_Cavern4_E", + 186, + 10179, + FoundationBuilder(WarpGate.Structure(Vector3(1701.9f, 1247.33f, 81.06f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(831, Terminal.Constructor(Vector3(768.65f, 1172.64f, 109.09f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(832, Terminal.Constructor(Vector3(778.06f, 1189.82f, 109.09f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(833, Terminal.Constructor(Vector3(785.86f, 1163.1f, 109.09f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(834, Terminal.Constructor(Vector3(791.15f, 1304.88f, 162.68f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(835, Terminal.Constructor(Vector3(795.55f, 1180.29f, 109.09f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(837, Terminal.Constructor(Vector3(799.83f, 1295.35f, 162.68f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(838, Terminal.Constructor(Vector3(835.57f, 1094.07f, 193.71f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(839, Terminal.Constructor(Vector3(845.78f, 1062f, 193.71f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(840, Terminal.Constructor(Vector3(891.69f, 781.33f, 118.5f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(841, Terminal.Constructor(Vector3(892.08f, 790.5f, 118.5f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(842, Terminal.Constructor(Vector3(1013.04f, 734.64f, 124.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(844, Terminal.Constructor(Vector3(1021.43f, 716.77f, 124.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(845, Terminal.Constructor(Vector3(1030.94f, 742.92f, 124.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(847, Terminal.Constructor(Vector3(1039.09f, 725.04f, 124.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(848, Terminal.Constructor(Vector3(1046.56f, 1319.12f, 116.4f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(849, Terminal.Constructor(Vector3(1048.6f, 1352.78f, 116.4f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(850, Terminal.Constructor(Vector3(1085.88f, 680.98f, 116.8f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(851, Terminal.Constructor(Vector3(1088.05f, 714.6f, 116.8f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(852, Terminal.Constructor(Vector3(1147.46f, 1067.68f, 198.82f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(853, Terminal.Constructor(Vector3(1171.04f, 1053.54f, 198.82f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(864, Terminal.Constructor(Vector3(1361.59f, 876.44f, 121.5f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(865, Terminal.Constructor(Vector3(1374.98f, 865.79f, 121.5f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(866, Terminal.Constructor(Vector3(1421.6f, 1202.05f, 130.8f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(867, Terminal.Constructor(Vector3(1430.67f, 1192.45f, 130.8f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(18, ProximityTerminal.Constructor(Vector3(767.07f, 1043.25f, 107.89f), crystals_health_a), owning_building_guid = 0) - LocalObject(19, ProximityTerminal.Constructor(Vector3(847f, 673.56f, 120f), crystals_health_a), owning_building_guid = 0) - LocalObject(20, ProximityTerminal.Constructor(Vector3(881.98f, 1036.96f, 108.75f), crystals_health_a), owning_building_guid = 0) - LocalObject(21, ProximityTerminal.Constructor(Vector3(899.09f, 1236.49f, 108.2f), crystals_health_a), owning_building_guid = 0) - LocalObject(22, ProximityTerminal.Constructor(Vector3(1110.72f, 824.41f, 121.1f), crystals_health_a), owning_building_guid = 0) - LocalObject(23, ProximityTerminal.Constructor(Vector3(1134.79f, 901.31f, 121.2f), crystals_health_a), owning_building_guid = 0) - LocalObject(24, ProximityTerminal.Constructor(Vector3(1253.3f, 841.23f, 131.86f), crystals_health_a), owning_building_guid = 0) - LocalObject(25, ProximityTerminal.Constructor(Vector3(1360.82f, 675.16f, 127.1f), crystals_health_a), owning_building_guid = 0) - LocalObject(26, ProximityTerminal.Constructor(Vector3(603.17f, 847.99f, 135.54f), crystals_health_b), owning_building_guid = 0) - LocalObject(27, ProximityTerminal.Constructor(Vector3(606.13f, 977.59f, 112.1f), crystals_health_b), owning_building_guid = 0) - LocalObject(28, ProximityTerminal.Constructor(Vector3(619.93f, 1098.07f, 108.2f), crystals_health_b), owning_building_guid = 0) - LocalObject(29, ProximityTerminal.Constructor(Vector3(732.74f, 1226.37f, 160.93f), crystals_health_b), owning_building_guid = 0) - LocalObject(30, ProximityTerminal.Constructor(Vector3(798.31f, 1142.05f, 108.2f), crystals_health_b), owning_building_guid = 0) - LocalObject(31, ProximityTerminal.Constructor(Vector3(844.64f, 1384.9f, 108.2f), crystals_health_b), owning_building_guid = 0) - LocalObject(32, ProximityTerminal.Constructor(Vector3(984.09f, 1019.83f, 101.27f), crystals_health_b), owning_building_guid = 0) - LocalObject(33, ProximityTerminal.Constructor(Vector3(1064.74f, 889.79f, 124.1f), crystals_health_b), owning_building_guid = 0) - LocalObject(34, ProximityTerminal.Constructor(Vector3(1144.21f, 1082.92f, 125.8f), crystals_health_b), owning_building_guid = 0) - LocalObject(35, ProximityTerminal.Constructor(Vector3(1180.8f, 1176.04f, 162.7f), crystals_health_b), owning_building_guid = 0) - LocalObject(36, ProximityTerminal.Constructor(Vector3(1370.85f, 1290.92f, 135.45f), crystals_health_b), owning_building_guid = 0) - LocalObject(743, ProximityTerminal.Constructor(Vector3(1042.73f, 1094.72f, 213.31f), crystals_health_a), owning_building_guid = 0) - LocalObject(744, ProximityTerminal.Constructor(Vector3(1308.76f, 941.45f, 121.06f), crystals_health_a), owning_building_guid = 0) - LocalObject(745, ProximityTerminal.Constructor(Vector3(675.37f, 1119.01f, 169.46f), crystals_health_b), owning_building_guid = 0) - LocalObject(746, ProximityTerminal.Constructor(Vector3(874.59f, 868.25f, 124f), crystals_health_b), owning_building_guid = 0) - LocalObject(747, ProximityTerminal.Constructor(Vector3(883.88f, 1139.21f, 183.94f), crystals_health_b), owning_building_guid = 0) - LocalObject(748, ProximityTerminal.Constructor(Vector3(1065.61f, 1231.69f, 124f), crystals_health_b), owning_building_guid = 0) - LocalObject(749, ProximityTerminal.Constructor(Vector3(1128.28f, 600.54f, 118.54f), crystals_health_b), owning_building_guid = 0) - LocalObject(750, ProximityTerminal.Constructor(Vector3(1281.84f, 1173.09f, 134.92f), crystals_health_b), owning_building_guid = 0) - LocalObject(155, FacilityTurret.Constructor(Vector3(628.21f, 1253.57f, 118.15f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 831, + Terminal.Constructor(Vector3(768.65f, 1172.64f, 109.09f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 832, + Terminal.Constructor(Vector3(778.06f, 1189.82f, 109.09f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 833, + Terminal.Constructor(Vector3(785.86f, 1163.1f, 109.09f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 834, + Terminal.Constructor(Vector3(791.15f, 1304.88f, 162.68f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 835, + Terminal.Constructor(Vector3(795.55f, 1180.29f, 109.09f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 837, + Terminal.Constructor(Vector3(799.83f, 1295.35f, 162.68f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 838, + Terminal.Constructor(Vector3(835.57f, 1094.07f, 193.71f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 839, + Terminal.Constructor(Vector3(845.78f, 1062f, 193.71f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 840, + Terminal.Constructor(Vector3(891.69f, 781.33f, 118.5f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 841, + Terminal.Constructor(Vector3(892.08f, 790.5f, 118.5f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 842, + Terminal.Constructor(Vector3(1013.04f, 734.64f, 124.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 844, + Terminal.Constructor(Vector3(1021.43f, 716.77f, 124.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(1030.94f, 742.92f, 124.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(1039.09f, 725.04f, 124.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 848, + Terminal.Constructor(Vector3(1046.56f, 1319.12f, 116.4f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 849, + Terminal.Constructor(Vector3(1048.6f, 1352.78f, 116.4f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 850, + Terminal.Constructor(Vector3(1085.88f, 680.98f, 116.8f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 851, + Terminal.Constructor(Vector3(1088.05f, 714.6f, 116.8f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 852, + Terminal.Constructor(Vector3(1147.46f, 1067.68f, 198.82f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 853, + Terminal.Constructor(Vector3(1171.04f, 1053.54f, 198.82f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 864, + Terminal.Constructor(Vector3(1361.59f, 876.44f, 121.5f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 865, + Terminal.Constructor(Vector3(1374.98f, 865.79f, 121.5f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 866, + Terminal.Constructor(Vector3(1421.6f, 1202.05f, 130.8f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 867, + Terminal.Constructor(Vector3(1430.67f, 1192.45f, 130.8f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 18, + ProximityTerminal.Constructor(Vector3(767.07f, 1043.25f, 107.89f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 19, + ProximityTerminal.Constructor(Vector3(847f, 673.56f, 120f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 20, + ProximityTerminal.Constructor(Vector3(881.98f, 1036.96f, 108.75f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 21, + ProximityTerminal.Constructor(Vector3(899.09f, 1236.49f, 108.2f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 22, + ProximityTerminal.Constructor(Vector3(1110.72f, 824.41f, 121.1f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 23, + ProximityTerminal.Constructor(Vector3(1134.79f, 901.31f, 121.2f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 24, + ProximityTerminal.Constructor(Vector3(1253.3f, 841.23f, 131.86f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 25, + ProximityTerminal.Constructor(Vector3(1360.82f, 675.16f, 127.1f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 26, + ProximityTerminal.Constructor(Vector3(603.17f, 847.99f, 135.54f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 27, + ProximityTerminal.Constructor(Vector3(606.13f, 977.59f, 112.1f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 28, + ProximityTerminal.Constructor(Vector3(619.93f, 1098.07f, 108.2f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 29, + ProximityTerminal.Constructor(Vector3(732.74f, 1226.37f, 160.93f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 30, + ProximityTerminal.Constructor(Vector3(798.31f, 1142.05f, 108.2f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 31, + ProximityTerminal.Constructor(Vector3(844.64f, 1384.9f, 108.2f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 32, + ProximityTerminal.Constructor(Vector3(984.09f, 1019.83f, 101.27f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 33, + ProximityTerminal.Constructor(Vector3(1064.74f, 889.79f, 124.1f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 34, + ProximityTerminal.Constructor(Vector3(1144.21f, 1082.92f, 125.8f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 35, + ProximityTerminal.Constructor(Vector3(1180.8f, 1176.04f, 162.7f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 36, + ProximityTerminal.Constructor(Vector3(1370.85f, 1290.92f, 135.45f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 743, + ProximityTerminal.Constructor(Vector3(1042.73f, 1094.72f, 213.31f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 744, + ProximityTerminal.Constructor(Vector3(1308.76f, 941.45f, 121.06f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 745, + ProximityTerminal.Constructor(Vector3(675.37f, 1119.01f, 169.46f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 746, + ProximityTerminal.Constructor(Vector3(874.59f, 868.25f, 124f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 747, + ProximityTerminal.Constructor(Vector3(883.88f, 1139.21f, 183.94f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 748, + ProximityTerminal.Constructor(Vector3(1065.61f, 1231.69f, 124f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 749, + ProximityTerminal.Constructor(Vector3(1128.28f, 600.54f, 118.54f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 750, + ProximityTerminal.Constructor(Vector3(1281.84f, 1173.09f, 134.92f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 155, + FacilityTurret.Constructor(Vector3(628.21f, 1253.57f, 118.15f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(155, 5000) - LocalObject(156, FacilityTurret.Constructor(Vector3(666.02f, 817.67f, 151.48f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 156, + FacilityTurret.Constructor(Vector3(666.02f, 817.67f, 151.48f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(156, 5001) - LocalObject(157, FacilityTurret.Constructor(Vector3(702.19f, 706.28f, 146.37f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 157, + FacilityTurret.Constructor(Vector3(702.19f, 706.28f, 146.37f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(157, 5002) - LocalObject(158, FacilityTurret.Constructor(Vector3(704.65f, 1328.91f, 136.36f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 158, + FacilityTurret.Constructor(Vector3(704.65f, 1328.91f, 136.36f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(158, 5003) - LocalObject(159, FacilityTurret.Constructor(Vector3(723.23f, 1086.59f, 164.42f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 159, + FacilityTurret.Constructor(Vector3(723.23f, 1086.59f, 164.42f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(159, 5004) - LocalObject(160, FacilityTurret.Constructor(Vector3(765.99f, 769.62f, 117.7f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 160, + FacilityTurret.Constructor(Vector3(765.99f, 769.62f, 117.7f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(160, 5005) - LocalObject(161, FacilityTurret.Constructor(Vector3(773.24f, 798.71f, 130.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 161, + FacilityTurret.Constructor(Vector3(773.24f, 798.71f, 130.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(161, 5006) - LocalObject(162, FacilityTurret.Constructor(Vector3(817.59f, 798.57f, 130.96f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 162, + FacilityTurret.Constructor(Vector3(817.59f, 798.57f, 130.96f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(162, 5007) - LocalObject(163, FacilityTurret.Constructor(Vector3(844.56f, 779.57f, 110.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 163, + FacilityTurret.Constructor(Vector3(844.56f, 779.57f, 110.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(163, 5008) - LocalObject(164, FacilityTurret.Constructor(Vector3(850.49f, 1165.93f, 163.34f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 164, + FacilityTurret.Constructor(Vector3(850.49f, 1165.93f, 163.34f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(164, 5009) - LocalObject(165, FacilityTurret.Constructor(Vector3(853.35f, 881.47f, 132.33f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 165, + FacilityTurret.Constructor(Vector3(853.35f, 881.47f, 132.33f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(165, 5010) - LocalObject(166, FacilityTurret.Constructor(Vector3(859.47f, 714.79f, 120.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 166, + FacilityTurret.Constructor(Vector3(859.47f, 714.79f, 120.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(166, 5011) - LocalObject(167, FacilityTurret.Constructor(Vector3(910.99f, 790.65f, 118.5f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 167, + FacilityTurret.Constructor(Vector3(910.99f, 790.65f, 118.5f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(167, 5012) - LocalObject(168, FacilityTurret.Constructor(Vector3(925.23f, 830.76f, 124.1f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 168, + FacilityTurret.Constructor(Vector3(925.23f, 830.76f, 124.1f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(168, 5013) - LocalObject(169, FacilityTurret.Constructor(Vector3(1075.27f, 1324.85f, 121.9f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 169, + FacilityTurret.Constructor(Vector3(1075.27f, 1324.85f, 121.9f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(169, 5014) - LocalObject(170, FacilityTurret.Constructor(Vector3(1105.36f, 731.72f, 122.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 170, + FacilityTurret.Constructor(Vector3(1105.36f, 731.72f, 122.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(170, 5015) - LocalObject(171, FacilityTurret.Constructor(Vector3(1114.21f, 1277.04f, 118.79f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 171, + FacilityTurret.Constructor(Vector3(1114.21f, 1277.04f, 118.79f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(171, 5016) - LocalObject(172, FacilityTurret.Constructor(Vector3(1164.63f, 716.62f, 119.35f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 172, + FacilityTurret.Constructor(Vector3(1164.63f, 716.62f, 119.35f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(172, 5017) - LocalObject(173, FacilityTurret.Constructor(Vector3(1236.17f, 676.33f, 129.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 173, + FacilityTurret.Constructor(Vector3(1236.17f, 676.33f, 129.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(173, 5018) - LocalObject(174, FacilityTurret.Constructor(Vector3(1253.56f, 1357.53f, 160.41f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 174, + FacilityTurret.Constructor(Vector3(1253.56f, 1357.53f, 160.41f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(174, 5019) - LocalObject(175, FacilityTurret.Constructor(Vector3(1257.88f, 734.33f, 139.99f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 175, + FacilityTurret.Constructor(Vector3(1257.88f, 734.33f, 139.99f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(175, 5020) - LocalObject(176, FacilityTurret.Constructor(Vector3(1270.92f, 1148.13f, 134.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 176, + FacilityTurret.Constructor(Vector3(1270.92f, 1148.13f, 134.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(176, 5021) - LocalObject(177, FacilityTurret.Constructor(Vector3(1292.07f, 1324.84f, 174.89f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 177, + FacilityTurret.Constructor(Vector3(1292.07f, 1324.84f, 174.89f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(177, 5022) - LocalObject(178, FacilityTurret.Constructor(Vector3(1302.35f, 1202.33f, 134.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 178, + FacilityTurret.Constructor(Vector3(1302.35f, 1202.33f, 134.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(178, 5023) - LocalObject(179, FacilityTurret.Constructor(Vector3(1371.1f, 937.93f, 117.41f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 179, + FacilityTurret.Constructor(Vector3(1371.1f, 937.93f, 117.41f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(179, 5024) - LocalObject(180, FacilityTurret.Constructor(Vector3(1406.95f, 1210.65f, 130.77f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 180, + FacilityTurret.Constructor(Vector3(1406.95f, 1210.65f, 130.77f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(180, 5025) } @@ -527,263 +1445,2409 @@ object Ugd04 { // Byblos Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, false, List(Vector3(581.513f, 991.906f, 137.91f), Vector3(647.981f, 1071.977f, 136.15f)))) - ZipLinePaths(new ZipLinePath(2, true, List(Vector3(626.942f, 1309.392f, 111.65f), Vector3(624.976f, 1314.648f, 129.076f)))) - ZipLinePaths(new ZipLinePath(3, true, List(Vector3(664.909f, 1132.887f, 135.55f), Vector3(739.272f, 1093.882f, 108.549f)))) - ZipLinePaths(new ZipLinePath(4, true, List(Vector3(682.606f, 1258.328f, 129.075f), Vector3(681.167f, 1263.188f, 111.65f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(691.973f, 1020.927f, 175.717f), Vector3(693.182f, 1024.821f, 175.258f), Vector3(711.325f, 1083.23f, 165.286f)))) - ZipLinePaths(new ZipLinePath(6, true, List(Vector3(725.251f, 1223.128f, 139.881f), Vector3(728.817f, 1227.398f, 161.281f)))) - ZipLinePaths(new ZipLinePath(7, true, List(Vector3(737.366f, 827.503f, 151.8f), Vector3(726.502f, 823.006f, 118.25f)))) - ZipLinePaths(new ZipLinePath(8, true, List(Vector3(735.172f, 1225.683f, 108.549f), Vector3(688.37f, 1136.702f, 135.65f)))) - ZipLinePaths(new ZipLinePath(9, true, List(Vector3(736.016f, 1225.55f, 161.283f), Vector3(739.078f, 1230.956f, 139.881f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(739.34f, 1233.309f, 161.821f), Vector3(707.454f, 1294.883f, 129.621f)))) - ZipLinePaths(new ZipLinePath(11, true, List(Vector3(744.27f, 823.732f, 118.25f), Vector3(733.396f, 821.193f, 151.8f)))) - ZipLinePaths(new ZipLinePath(12, true, List(Vector3(791.397f, 1293.352f, 135.65f), Vector3(758.017f, 1258.464f, 122.944f), Vector3(732.648f, 1231.949f, 116.434f), Vector3(727.975f, 1227.065f, 117.548f), Vector3(723.969f, 1222.879f, 117.311f), Vector3(723.302f, 1222.181f, 108.549f)))) - ZipLinePaths(new ZipLinePath(13, true, List(Vector3(798.178f, 1075.67f, 108.549f), Vector3(661.15f, 1118.363f, 135.65f)))) - ZipLinePaths(new ZipLinePath(14, true, List(Vector3(806.089f, 1287.723f, 135.65f), Vector3(831.731f, 1254.03f, 124.546f), Vector3(838.141f, 1245.607f, 124.791f), Vector3(839.889f, 1243.31f, 126.432f), Vector3(852.71f, 1226.464f, 123.637f), Vector3(863.783f, 1211.914f, 108.549f)))) - ZipLinePaths(new ZipLinePath(15, true, List(Vector3(833.04f, 1260.868f, 108.549f), Vector3(819.031f, 1323.108f, 130.591f)))) - ZipLinePaths(new ZipLinePath(16, false, List(Vector3(851.698f, 1111.512f, 200.062f), Vector3(852.693f, 1113.453f, 199.565f), Vector3(867.626f, 1142.578f, 179.294f)))) - ZipLinePaths(new ZipLinePath(17, true, List(Vector3(867.508f, 786.909f, 109.085f), Vector3(866.403f, 786.948f, 109.085f)))) - ZipLinePaths(new ZipLinePath(18, false, List(Vector3(869.055f, 1094.282f, 194.562f), Vector3(975.227f, 1037.114f, 182.263f)))) - ZipLinePaths(new ZipLinePath(19, true, List(Vector3(872.768f, 1156.774f, 178.792f), Vector3(872.526f, 1156.915f, 184.299f)))) - ZipLinePaths(new ZipLinePath(20, false, List(Vector3(877.117f, 1420.782f, 133.161f), Vector3(857.119f, 1366.35f, 136.091f)))) - ZipLinePaths(new ZipLinePath(21, false, List(Vector3(879.233f, 1301.494f, 180.934f), Vector3(878.289f, 1302.333f, 180.345f), Vector3(849.027f, 1328.33f, 163.573f)))) - ZipLinePaths(new ZipLinePath(22, false, List(Vector3(897.112f, 1147.069f, 179.322f), Vector3(1020.979f, 1092.058f, 208.671f)))) - ZipLinePaths(new ZipLinePath(23, false, List(Vector3(916.429f, 1293.681f, 180.655f), Vector3(918.128f, 1294.889f, 180.196f), Vector3(1025.18f, 1371.005f, 116.593f)))) - ZipLinePaths(new ZipLinePath(24, false, List(Vector3(944.17f, 535.579f, 137.951f), Vector3(921.003f, 693.13f, 130.68f)))) - ZipLinePaths(new ZipLinePath(25, false, List(Vector3(952.003f, 869.708f, 169.18f), Vector3(952.645f, 872.988f, 169.476f), Vector3(972.562f, 974.671f, 172.23f)))) - ZipLinePaths(new ZipLinePath(26, true, List(Vector3(959.837f, 871.038f, 137.15f), Vector3(949.586f, 868.014f, 168.681f)))) - ZipLinePaths(new ZipLinePath(27, false, List(Vector3(961.064f, 985.742f, 172.285f), Vector3(958.734f, 983.378f, 171.793f), Vector3(886.507f, 910.111f, 115.886f)))) - ZipLinePaths(new ZipLinePath(28, true, List(Vector3(961.268f, 870.931f, 168.673f), Vector3(951.672f, 867.573f, 137.15f)))) - ZipLinePaths(new ZipLinePath(29, false, List(Vector3(965.127f, 1028.015f, 177.262f), Vector3(865.98f, 1067.626f, 200.071f)))) - ZipLinePaths(new ZipLinePath(30, true, List(Vector3(972.362f, 1005.172f, 176.75f), Vector3(972.277f, 1005.349f, 181.75f)))) - ZipLinePaths(new ZipLinePath(31, true, List(Vector3(973.345f, 1005.29f, 166.75f), Vector3(973.617f, 1005.373f, 171.75f)))) - ZipLinePaths(new ZipLinePath(32, true, List(Vector3(993.984f, 986.374f, 171.75f), Vector3(992.517f, 978.742f, 176.75f)))) - ZipLinePaths(new ZipLinePath(33, true, List(Vector3(997.002f, 1028.654f, 176.75f), Vector3(998.338f, 1029.743f, 166.75f)))) - ZipLinePaths(new ZipLinePath(34, true, List(Vector3(1015.197f, 1001.46f, 181.75f), Vector3(1015.881f, 1001.237f, 176.75f)))) - ZipLinePaths(new ZipLinePath(35, true, List(Vector3(1015.632f, 1001.636f, 171.75f), Vector3(1015.663f, 1002.099f, 166.75f)))) - ZipLinePaths(new ZipLinePath(36, false, List(Vector3(1055.766f, 1084.677f, 214.167f), Vector3(1146.026f, 1093.29f, 199.697f)))) - ZipLinePaths(new ZipLinePath(37, false, List(Vector3(1081.513f, 906.371f, 141.875f), Vector3(1023.761f, 976.866f, 171.749f), Vector3(1021.898f, 979.14f, 172.226f)))) - ZipLinePaths(new ZipLinePath(38, false, List(Vector3(1114.566f, 973.674f, 183.961f), Vector3(1024.122f, 981.71f, 177.251f)))) - ZipLinePaths(new ZipLinePath(39, false, List(Vector3(1115.268f, 685.916f, 123.153f), Vector3(1181.004f, 708.419f, 130.773f)))) - ZipLinePaths(new ZipLinePath(40, false, List(Vector3(1123.754f, 557.336f, 129.97f), Vector3(1158.099f, 615.656f, 128.58f)))) - ZipLinePaths(new ZipLinePath(41, false, List(Vector3(1124.52f, 1165.66f, 148.45f), Vector3(1148.819f, 1098.341f, 199.221f), Vector3(1150.439f, 1093.853f, 199.695f)))) - ZipLinePaths(new ZipLinePath(42, false, List(Vector3(1134.069f, 1054.513f, 199.724f), Vector3(1065.117f, 1089.592f, 208.634f)))) - ZipLinePaths(new ZipLinePath(43, false, List(Vector3(1164.887f, 1028.954f, 199.752f), Vector3(1164.038f, 1022.243f, 199.227f), Vector3(1158.098f, 975.268f, 183.98f)))) - ZipLinePaths(new ZipLinePath(44, false, List(Vector3(1169.577f, 1152.768f, 195.641f), Vector3(1028.773f, 1021.258f, 182.191f)))) - ZipLinePaths(new ZipLinePath(45, false, List(Vector3(1170.844f, 624.946f, 127.89f), Vector3(1225.847f, 674.335f, 130.77f)))) - ZipLinePaths(new ZipLinePath(46, true, List(Vector3(1171.626f, 1156.954f, 163.054f), Vector3(1173.541f, 1158.297f, 195.14f)))) - ZipLinePaths(new ZipLinePath(47, true, List(Vector3(1173.21f, 1162.139f, 195.14f), Vector3(1167.157f, 1165.41f, 163.054f)))) - ZipLinePaths(new ZipLinePath(48, false, List(Vector3(1189.596f, 755.543f, 130.771f), Vector3(1205.016f, 803.983f, 126.811f)))) - ZipLinePaths(new ZipLinePath(49, true, List(Vector3(1203.213f, 674.437f, 130.276f), Vector3(1203.45f, 682.914f, 112.85f)))) - ZipLinePaths(new ZipLinePath(50, true, List(Vector3(1209.026f, 745.489f, 112.85f), Vector3(1209.818f, 754.294f, 130.276f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(1263.84f, 868.575f, 164.611f), Vector3(1093.376f, 876.512f, 155.131f)))) - ZipLinePaths(new ZipLinePath(52, false, List(Vector3(1318.75f, 680.79f, 127.95f), Vector3(1250.792f, 681.997f, 130.77f)))) - ZipLinePaths(new ZipLinePath(53, false, List(Vector3(1324.778f, 1160.543f, 121.851f), Vector3(1374.004f, 1173.648f, 125.151f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(1326.534f, 812.464f, 127.903f), Vector3(1272.628f, 860.86f, 164.679f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(1395.087f, 937.296f, 108.756f), Vector3(1392.3f, 970.925f, 138.355f), Vector3(1391.902f, 975.729f, 138.032f)))) - ZipLinePaths(new ZipLinePath(56, true, List(Vector3(986.787f, 1005.346f, 110.778f), Vector3(978.945f, 1022.841f, 166.75f)))) - ZipLinePaths(new ZipLinePath(57, true, List(Vector3(1011.11f, 984.732f, 166.75f), Vector3(987.858f, 1005.35f, 101.621f)))) - ZipLinePaths(new ZipLinePath(58, false, List(Vector3(960.539f, 879.005f, 137.679f), Vector3(961.773f, 885.076f, 137.23f), Vector3(980.297f, 976.141f, 102.151f)))) - ZipLinePaths(new ZipLinePath(59, false, List(Vector3(1183.993f, 1068.618f, 199.718f), Vector3(1190.361f, 1066.146f, 199.274f), Vector3(1387.772f, 989.533f, 138.009f)))) - ZipLinePaths(new ZipLinePath(60, false, List(Vector3(1084.42f, 1046.639f, 114.856f), Vector3(1075.727f, 1042.173f, 114.359f), Vector3(1014.875f, 1010.907f, 102.126f)))) - ZipLinePaths(new ZipLinePath(61, false, List(Vector3(1010.405f, 982.383f, 102.144f), Vector3(1050.911f, 927.105f, 124.33f), Vector3(1053.612f, 923.42f, 124.874f)))) - ZipLinePaths(new ZipLinePath(62, false, List(Vector3(677.233f, 983.867f, 175.757f), Vector3(671.145f, 983.323f, 175.268f), Vector3(579.83f, 975.152f, 138.106f)))) - ZipLinePaths(new ZipLinePath(63, false, List(Vector3(847.264f, 1345.05f, 163.558f), Vector3(848.71f, 1347.394f, 163.079f), Vector3(893.565f, 1420.056f, 133.129f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(1122.172f, 840.008f, 162.85f), Vector3(960.065f, 860.059f, 169.19f)))) - ZipLinePaths(new ZipLinePath(65, false, List(Vector3(1126.119f, 849.46f, 162.859f), Vector3(1159.44f, 957.63f, 183.969f)))) - ZipLinePaths(new ZipLinePath(66, true, List(Vector3(1130.343f, 837.741f, 132.35f), Vector3(1122.353f, 845.266f, 162.35f)))) - ZipLinePaths(new ZipLinePath(67, true, List(Vector3(1128.075f, 844.958f, 162.35f), Vector3(1122.301f, 843.642f, 132.35f)))) - ZipLinePaths(new ZipLinePath(68, false, List(Vector3(1280.401f, 949.391f, 114.45f), Vector3(1180.426f, 1027.86f, 199.264f), Vector3(1175.094f, 1032.045f, 199.72f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(1070.591f, 880.007f, 141.902f), Vector3(1094.877f, 919.673f, 164.819f), Vector3(1117.258f, 956.228f, 184.011f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(1037.273f, 821.082f, 124.85f), Vector3(991.292f, 822.466f, 124.95f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(738.475f, 885.729f, 133.976f), Vector3(732.984f, 829.777f, 152.327f)))) - ZipLinePaths(new ZipLinePath(72, false, List(Vector3(738.037f, 819.262f, 152.3f), Vector3(688.763f, 746.446f, 155.98f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(1201.659f, 845.23f, 109.05f), Vector3(1202.098f, 839.399f, 126.767f), Vector3(1202.245f, 837.456f, 126.802f)))) - ZipLinePaths(new ZipLinePath(74, false, List(Vector3(1223.133f, 796.668f, 109.055f), Vector3(1221.229f, 800.077f, 126.927f), Vector3(1219.326f, 803.487f, 126.811f)))) - ZipLinePaths(new ZipLinePath(75, false, List(Vector3(1165.269f, 852.174f, 109.043f), Vector3(1164.509f, 857.593f, 122.345f), Vector3(1164.256f, 859.399f, 122.05f)))) - ZipLinePaths(new ZipLinePath(76, true, List(Vector3(766.451f, 1184.81f, 109.436f), Vector3(782.652f, 1188.998f, 119.48f)))) - ZipLinePaths(new ZipLinePath(77, true, List(Vector3(773.648f, 1170.141f, 119.48f), Vector3(797.279f, 1167.873f, 109.436f)))) - ZipLinePaths(new ZipLinePath(78, false, List(Vector3(919.547f, 1267.287f, 118.234f), Vector3(884.979f, 1164.413f, 179.325f)))) - ZipLinePaths(new ZipLinePath(79, false, List(Vector3(1016.912f, 1194.737f, 122.496f), Vector3(899.344f, 1154.515f, 179.438f), Vector3(895.552f, 1153.218f, 179.356f)))) - ZipLinePaths(new ZipLinePath(80, true, List(Vector3(1033.725f, 713.661f, 124.706f), Vector3(1018.227f, 720.002f, 134.75f)))) - ZipLinePaths(new ZipLinePath(81, true, List(Vector3(1036.573f, 730.427f, 134.75f), Vector3(1018.869f, 745.466f, 124.706f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(1123.651f, 972.872f, 125.04f), Vector3(1139.528f, 1077.659f, 126.65f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(1349.973f, 835.703f, 127.85f), Vector3(1298.615f, 864.67f, 126.95f)))) - ZipLinePaths(new ZipLinePath(84, false, List(Vector3(614.049f, 988.948f, 120.578f), Vector3(588.185f, 985.552f, 137.464f), Vector3(584.619f, 985.067f, 137.927f)))) - ZipLinePaths(new ZipLinePath(85, false, List(Vector3(753.458f, 1014.26f, 116.412f), Vector3(825.993f, 1066.964f, 194.024f), Vector3(828.333f, 1068.664f, 194.561f)))) - ZipLinePaths(new ZipLinePath(86, false, List(Vector3(850.041f, 1042.272f, 140.472f), Vector3(743.271f, 1019.952f, 175.179f), Vector3(736.153f, 1018.464f, 175.701f)))) - ZipLinePaths(new ZipLinePath(87, false, List(Vector3(928.243f, 1122.438f, 136.017f), Vector3(899.093f, 1259.06f, 183.358f)))) - ZipLinePaths(new ZipLinePath(88, false, List(Vector3(952.197f, 1363.522f, 117.919f), Vector3(898.492f, 1426.42f, 132.868f)))) - ZipLinePaths(new ZipLinePath(89, false, List(Vector3(926.366f, 1092.493f, 136.033f), Vector3(929.541f, 1088.451f, 135.574f), Vector3(977.178f, 1027.828f, 102.161f)))) - ZipLinePaths(new ZipLinePath(90, false, List(Vector3(960.002f, 1008.314f, 102.157f), Vector3(891.126f, 1051.974f, 135.668f), Vector3(886.534f, 1054.885f, 136.126f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(207.89f, 910.311f, 113.14f), Vector3(293.154f, 909.306f, 116.84f), Vector3(321.318f, 889.302f, 118.053f), Vector3(353.3f, 877.25f, 115.91f), Vector3(378.041f, 884.824f, 115.139f), Vector3(413.882f, 910.698f, 115.967f), Vector3(436.729f, 918.823f, 113.12f)))) - ZipLinePaths(new ZipLinePath(92, false, List(Vector3(427.575f, 953.375f, 113.14f), Vector3(460.915f, 1023.964f, 116.107f), Vector3(474.954f, 1054.653f, 116.138f), Vector3(515.093f, 1076.339f, 115.67f), Vector3(536.745f, 1079.732f, 111.65f)))) - ZipLinePaths(new ZipLinePath(93, false, List(Vector3(479.791f, 936.61f, 113.388f), Vector3(495.652f, 937.365f, 119.11f), Vector3(502.613f, 938.121f, 118.339f), Vector3(503.635f, 963.631f, 123.797f), Vector3(503.538f, 978.868f, 123.3f), Vector3(513.642f, 982.705f, 123.308f)))) - ZipLinePaths(new ZipLinePath(94, false, List(Vector3(1679.359f, 1156.319f, 93.135f), Vector3(1679.016f, 1150.787f, 96.119f), Vector3(1646.872f, 1086.92f, 97.109f), Vector3(1633.827f, 1073.554f, 96.398f), Vector3(1586.838f, 1075.32f, 112.677f), Vector3(1568.938f, 1072.514f, 113.155f)))) - ZipLinePaths(new ZipLinePath(95, false, List(Vector3(1557.496f, 1031.021f, 113.14f), Vector3(1522.762f, 960.766f, 115.661f), Vector3(1506.029f, 928.012f, 115.536f), Vector3(1470.937f, 908.527f, 116.235f), Vector3(1444.142f, 919.885f, 113.738f), Vector3(1432.746f, 921.543f, 109.47f)))) - ZipLinePaths(new ZipLinePath(96, false, List(Vector3(842.904f, 332.934f, 113.14f), Vector3(828.167f, 338.012f, 114.07f), Vector3(816.33f, 353.302f, 115.603f), Vector3(754.962f, 479.348f, 116.62f), Vector3(781.494f, 530.593f, 110.14f)))) - ZipLinePaths(new ZipLinePath(97, true, List(Vector3(788.315f, 539.096f, 109.284f), Vector3(805.739f, 539.416f, 116.084f), Vector3(810.607f, 538.671f, 125.568f), Vector3(835.92f, 534.799f, 143.575f), Vector3(884.599f, 527.353f, 152.231f), Vector3(888.493f, 526.757f, 174.148f), Vector3(938.471f, 520.011f, 137.591f)))) - ZipLinePaths(new ZipLinePath(98, false, List(Vector3(731.311f, 591.258f, 109.766f), Vector3(731.638f, 608.153f, 124.1f), Vector3(736.713f, 637.551f, 137.163f), Vector3(738.405f, 647.35f, 137.407f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(858.162f, 343.607f, 113.461f), Vector3(858.386f, 357.982f, 113.64f), Vector3(871.709f, 363.657f, 113.074f), Vector3(871.476f, 375.138f, 116.324f), Vector3(871.544f, 386.62f, 118.074f), Vector3(873.379f, 405.483f, 118.475f), Vector3(882.869f, 406.77f, 118.381f)))) - ZipLinePaths(new ZipLinePath(100, false, List(Vector3(920.189f, 433.581f, 128.311f), Vector3(919.775f, 444.103f, 132.255f), Vector3(923.762f, 454.626f, 133.096f), Vector3(934.043f, 460.273f, 133.773f), Vector3(933.925f, 469.42f, 133.551f), Vector3(921.08f, 474.627f, 133.209f), Vector3(922.658f, 483.881f, 133.137f), Vector3(935.235f, 493.135f, 133.566f), Vector3(936.146f, 498.55f, 133.381f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(1422.417f, 983.83f, 133.314f), Vector3(1428.703f, 983.946f, 132.72f), Vector3(1434.989f, 984.061f, 130.225f), Vector3(1448.161f, 989.292f, 128.737f), Vector3(1448.105f, 1017.954f, 128.183f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(1494.966f, 1049.656f, 123.828f), Vector3(1498.045f, 1062.638f, 122.913f), Vector3(1511.389f, 1066.815f, 122.819f), Vector3(1511.932f, 1073.712f, 122.582f), Vector3(1512.476f, 1080.609f, 120.845f), Vector3(1513.562f, 1094.403f, 118.271f), Vector3(1526.748f, 1094.198f, 116.998f), Vector3(1539.934f, 1093.992f, 113.226f)))) - ZipLinePaths(new ZipLinePath(103, false, List(Vector3(939.789f, 207.271f, 113.209f), Vector3(958.515f, 207.177f, 115.548f), Vector3(977.242f, 207.084f, 110.91f), Vector3(1027.178f, 206.836f, 95.72f), Vector3(1076.155f, 206.592f, 80.509f), Vector3(1078.076f, 206.583f, 75.2f)))) - ZipLinePaths(new ZipLinePath(104, false, List(Vector3(1083.268f, 239.176f, 74.184f), Vector3(1146.821f, 272.079f, 79.019f), Vector3(1181.375f, 271.281f, 88.881f), Vector3(1201.423f, 272.171f, 95.01f), Vector3(1221.471f, 273.061f, 93.145f)))) - ZipLinePaths(new ZipLinePath(105, false, List(Vector3(1254.623f, 265.032f, 93.14f), Vector3(1277.415f, 310.652f, 95.518f), Vector3(1300.207f, 356.271f, 95.29f), Vector3(1322.999f, 401.891f, 95.062f), Vector3(1324.786f, 405.469f, 93.14f)))) - ZipLinePaths(new ZipLinePath(106, false, List(Vector3(1287.494f, 431.131f, 93.143f), Vector3(1216.539f, 429.215f, 116.06f), Vector3(1183.181f, 442.797f, 115.261f), Vector3(1168.423f, 474.38f, 115.962f), Vector3(1167.006f, 513.135f, 110.994f)))) - ZipLinePaths(new ZipLinePath(107, false, List(Vector3(947.304f, 1751.256f, 93.143f), Vector3(1022.07f, 1715.558f, 97.088f), Vector3(1088.146f, 1715.014f, 116.168f), Vector3(1121.539f, 1698.073f, 114.974f), Vector3(1135.688f, 1672.479f, 113.142f)))) - ZipLinePaths(new ZipLinePath(108, false, List(Vector3(1156.156f, 1614.299f, 113.14f), Vector3(1165.89f, 1600.735f, 115.415f), Vector3(1166.124f, 1536.271f, 116.594f), Vector3(1170.068f, 1480.177f, 113.813f), Vector3(1163.413f, 1447.482f, 109.93f)))) - ZipLinePaths(new ZipLinePath(109, false, List(Vector3(866.689f, 1803.032f, 91.411f), Vector3(823.044f, 1805.965f, 100.645f), Vector3(773.898f, 1805.898f, 113.754f), Vector3(762.335f, 1805.887f, 113.15f)))) - ZipLinePaths(new ZipLinePath(110, false, List(Vector3(719.69f, 1792.509f, 113.143f), Vector3(719.386f, 1776.864f, 111.112f), Vector3(718.475f, 1729.929f, 95.817f), Vector3(687.661f, 1660.449f, 96.011f), Vector3(702.261f, 1629.14f, 93.723f), Vector3(746.162f, 1610.03f, 93.143f)))) - ZipLinePaths(new ZipLinePath(111, false, List(Vector3(785.498f, 1606.097f, 93.146f), Vector3(785.599f, 1535.452f, 116.464f), Vector3(804.299f, 1500.206f, 115.294f), Vector3(814.583f, 1481.916f, 113.147f)))) - ZipLinePaths(new ZipLinePath(112, false, List(Vector3(739.761f, 1220.297f, 161.795f), Vector3(741.855f, 1217.845f, 161.278f), Vector3(773.272f, 1181.066f, 119.988f)))) - ZipLinePaths(new ZipLinePath(113, false, List(Vector3(788.874f, 1190.56f, 120.035f), Vector3(806.9f, 1273.41f, 163.308f), Vector3(808.102f, 1278.933f, 163.587f)))) - ZipLinePaths(new ZipLinePath(114, false, List(Vector3(773.704f, 1162.971f, 120.002f), Vector3(728.518f, 1101.093f, 164.841f), Vector3(725.506f, 1096.968f, 165.278f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(781.928f, 1311.432f, 163.576f), Vector3(770.548f, 1309.973f, 163.027f), Vector3(705.455f, 1301.629f, 129.618f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(671.03f, 1148.894f, 164.705f), Vector3(669.801f, 1152.329f, 164.248f), Vector3(631.716f, 1258.818f, 119.037f)))) - ZipLinePaths(new ZipLinePath(117, false, List(Vector3(888.237f, 1456.234f, 128.212f), Vector3(889.896f, 1478.612f, 123.1f), Vector3(900.126f, 1480.202f, 122.403f), Vector3(924.891f, 1479.896f, 114.905f), Vector3(932.607f, 1481.17f, 113.155f), Vector3(936.023f, 1490.444f, 112.406f), Vector3(935.556f, 1500.991f, 108.433f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(903.953f, 1539.55f, 98.452f), Vector3(904.279f, 1550.875f, 103.037f), Vector3(905.605f, 1575.099f, 97.631f), Vector3(921.619f, 1576.126f, 102.303f), Vector3(934.133f, 1576.452f, 103.576f), Vector3(935.661f, 1588.105f, 103.522f)))) - ZipLinePaths(new ZipLinePath(119, false, List(Vector3(952.101f, 1628.841f, 103.426f), Vector3(951.056f, 1655.014f, 103.109f), Vector3(941.355f, 1655.54f, 103.145f), Vector3(908.955f, 1656.066f, 98.182f), Vector3(903.854f, 1665.792f, 98.018f), Vector3(907.154f, 1687.154f, 92.936f), Vector3(923.854f, 1686.517f, 93.257f)))) - ZipLinePaths(new ZipLinePath(120, false, List(Vector3(855.153f, 612.968f, 148.912f), Vector3(926.126f, 528.2f, 137.883f)))) - ZipLinePaths(new ZipLinePath(121, true, List(Vector3(1289.034f, 1388.523f, 147.739f), Vector3(1293.101f, 1393.799f, 163.074f), Vector3(1294.686f, 1400.643f, 161.175f)))) - ZipLinePaths(new ZipLinePath(122, true, List(Vector3(1311.001f, 1390.936f, 164.914f), Vector3(1311.03f, 1383.145f, 166.497f), Vector3(1311.074f, 1371.459f, 174.89f), Vector3(1311.096f, 1365.615f, 174.89f), Vector3(1311.133f, 1355.877f, 187.506f), Vector3(1311.169f, 1346.138f, 191.6f), Vector3(1311.177f, 1344.19f, 191.6f), Vector3(1310.743f, 1326.36f, 150.239f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(1206.788f, 1314.093f, 136.06f), Vector3(1239.102f, 1336.775f, 144.7f), Vector3(1243.718f, 1340.015f, 145.26f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(1305.939f, 1292.807f, 145.176f), Vector3(1307.056f, 1286.93f, 144.781f), Vector3(1314.874f, 1245.797f, 131.299f), Vector3(1316.483f, 1237.336f, 126.475f)))) - ZipLinePaths(new ZipLinePath(125, true, List(Vector3(635.732f, 787.036f, 144.959f), Vector3(641.69f, 782.608f, 169.61f), Vector3(677.814f, 746.027f, 177.406f), Vector3(686.856f, 736.488f, 155.479f)))) - ZipLinePaths(new ZipLinePath(126, true, List(Vector3(638.583f, 708.756f, 155.915f), Vector3(642.303f, 716.658f, 157.733f), Vector3(646.974f, 721.968f, 142.459f)))) - ZipLinePaths(new ZipLinePath(127, false, List(Vector3(700.844f, 755.122f, 137.391f), Vector3(724.482f, 799.439f, 148.167f), Vector3(734.679f, 818.556f, 152.31f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(651.24f, 839.686f, 137.367f), Vector3(680.057f, 970.631f, 175.22f), Vector3(681.978f, 979.361f, 175.738f)))) - ZipLinePaths(new ZipLinePath(129, false, List(Vector3(832.657f, 618.498f, 150.19f), Vector3(790.345f, 645.137f, 151.52f), Vector3(748.032f, 671.776f, 151.043f), Vector3(705.72f, 698.415f, 150.567f), Vector3(703.181f, 700.013f, 148.89f)))) - ZipLinePaths(new ZipLinePath(130, false, List(Vector3(792.263f, 556.276f, 109.54f), Vector3(806.498f, 568.729f, 132.501f), Vector3(812.997f, 574.414f, 138.376f), Vector3(819.495f, 580.1f, 137.243f)))) - ZipLinePaths(new ZipLinePath(131, false, List(Vector3(905.264f, 797.915f, 121.166f), Vector3(949.727f, 838.795f, 137.088f), Vector3(956.079f, 844.635f, 137.665f)))) - ZipLinePaths(new ZipLinePath(132, false, List(Vector3(866.636f, 793.426f, 134.32f), Vector3(817.722f, 805.405f, 131.811f)))) - ZipLinePaths(new ZipLinePath(133, false, List(Vector3(817.815f, 812.227f, 131.813f), Vector3(851.308f, 872.076f, 124.853f)))) - ZipLinePaths(new ZipLinePath(134, false, List(Vector3(739.172f, 733.542f, 137.481f), Vector3(762.696f, 737.81f, 132.936f), Vector3(786.221f, 742.078f, 122.69f), Vector3(808.362f, 746.094f, 111.881f)))) - ZipLinePaths(new ZipLinePath(135, false, List(Vector3(749.635f, 682.739f, 137.377f), Vector3(771.007f, 693.48f, 136.152f), Vector3(792.38f, 704.22f, 125.454f), Vector3(815.847f, 716.014f, 111.879f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(770.807f, 810.481f, 131.821f), Vector3(721.399f, 803.395f, 135.775f), Vector3(679.896f, 797.442f, 137.451f)))) - ZipLinePaths(new ZipLinePath(137, false, List(Vector3(668.436f, 839.169f, 126.948f), Vector3(668.162f, 835.637f, 137.7f), Vector3(668.04f, 830.457f, 137.345f)))) - ZipLinePaths(new ZipLinePath(138, false, List(Vector3(696.207f, 769.157f, 126.745f), Vector3(691.358f, 769.345f, 137.5f), Vector3(687.522f, 769.379f, 137.353f)))) - ZipLinePaths(new ZipLinePath(139, false, List(Vector3(777.383f, 693.723f, 109.054f), Vector3(768.922f, 695.463f, 127.2f), Vector3(764.501f, 695.909f, 126.752f)))) - ZipLinePaths(new ZipLinePath(140, false, List(Vector3(714.7f, 806.943f, 118.655f), Vector3(716.023f, 798.557f, 127.8f), Vector3(716.384f, 794.616f, 126.942f)))) - ZipLinePaths(new ZipLinePath(141, false, List(Vector3(837.198f, 679.723f, 109.056f), Vector3(841.194f, 674.804f, 121.161f), Vector3(842.792f, 671.297f, 120.844f)))) - ZipLinePaths(new ZipLinePath(142, false, List(Vector3(980.767f, 823.824f, 124.941f), Vector3(974.252f, 832.646f, 138.475f), Vector3(972.08f, 835.587f, 137.654f)))) - ZipLinePaths(new ZipLinePath(143, false, List(Vector3(854.641f, 623.48f, 147.703f), Vector3(873.038f, 670.732f, 143.255f), Vector3(890.352f, 715.204f, 137.432f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(897.213f, 726.019f, 137.43f), Vector3(923f, 770.018f, 138.179f), Vector3(948.786f, 814.017f, 138.324f), Vector3(963.955f, 839.899f, 137.65f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(870.548f, 724.109f, 120.954f), Vector3(877.373f, 728.026f, 137.485f), Vector3(881.138f, 728.81f, 137.433f)))) - ZipLinePaths(new ZipLinePath(146, false, List(Vector3(909.652f, 723.91f, 121.052f), Vector3(906.728f, 720.913f, 137.485f), Vector3(903.654f, 717.805f, 137.441f)))) - ZipLinePaths(new ZipLinePath(147, false, List(Vector3(944.951f, 580.171f, 113.352f), Vector3(939.778f, 573.055f, 127.401f), Vector3(937.12f, 569.75f, 126.95f)))) - ZipLinePaths(new ZipLinePath(148, false, List(Vector3(931.01f, 546.086f, 126.943f), Vector3(933.092f, 538.266f, 137.799f), Vector3(933.786f, 535.659f, 137.95f)))) - ZipLinePaths(new ZipLinePath(149, false, List(Vector3(1009.159f, 752.719f, 124.85f), Vector3(991.619f, 799.006f, 125.778f), Vector3(985.772f, 814.968f, 124.95f)))) - ZipLinePaths(new ZipLinePath(150, false, List(Vector3(628.63f, 911.352f, 126.753f), Vector3(622.808f, 922.572f, 129.078f), Vector3(605.34f, 956.232f, 125.252f), Vector3(591.184f, 983.513f, 118.093f)))) - ZipLinePaths(new ZipLinePath(151, false, List(Vector3(916.791f, 916.103f, 110.541f), Vector3(927.088f, 910.021f, 125.3f), Vector3(931.332f, 907.814f, 124.85f)))) - ZipLinePaths(new ZipLinePath(152, false, List(Vector3(985.233f, 890.658f, 114.677f), Vector3(983.342f, 879.305f, 125.383f), Vector3(982.712f, 875.521f, 124.952f)))) - ZipLinePaths(new ZipLinePath(153, false, List(Vector3(788.586f, 904.202f, 133.771f), Vector3(800.969f, 904.082f, 135.354f), Vector3(838.117f, 903.72f, 125.166f), Vector3(850.742f, 903.597f, 115.87f)))) - ZipLinePaths(new ZipLinePath(154, false, List(Vector3(723.819f, 909.915f, 133.841f), Vector3(716.155f, 968.988f, 175.181f), Vector3(715.644f, 972.926f, 175.708f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(757.2f, 918.818f, 133.758f), Vector3(752.902f, 967.566f, 125.833f), Vector3(751.772f, 994.343f, 120.207f)))) - ZipLinePaths(new ZipLinePath(156, false, List(Vector3(736.038f, 1019.345f, 113.91f), Vector3(724.248f, 1060.438f, 140.6f), Vector3(723.526f, 1062.954f, 140.141f)))) - ZipLinePaths(new ZipLinePath(157, false, List(Vector3(753.396f, 1079.35f, 140.243f), Vector3(728.852f, 1090.832f, 164.844f), Vector3(725.346f, 1092.473f, 165.261f)))) - ZipLinePaths(new ZipLinePath(158, false, List(Vector3(881.321f, 940.867f, 115.863f), Vector3(870.806f, 989.707f, 129.7f), Vector3(860.291f, 1038.547f, 140.352f), Vector3(859.054f, 1044.292f, 140.464f)))) - ZipLinePaths(new ZipLinePath(159, false, List(Vector3(880.79f, 1033.59f, 109.7f), Vector3(881.104f, 1056.676f, 136.541f), Vector3(881.144f, 1059.561f, 136.088f)))) - ZipLinePaths(new ZipLinePath(160, false, List(Vector3(923.653f, 1069.12f, 109.871f), Vector3(920.338f, 1084.106f, 136.341f), Vector3(919.41f, 1090.862f, 135.986f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(976.603f, 1041.599f, 177.302f), Vector3(973.324f, 1045.539f, 176.772f), Vector3(924.127f, 1104.639f, 136.049f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(989.279f, 722.262f, 124.851f), Vector3(942.352f, 727.252f, 122.74f), Vector3(924.486f, 729.048f, 120.951f)))) - ZipLinePaths(new ZipLinePath(163, false, List(Vector3(870.525f, 934.977f, 115.886f), Vector3(748.961f, 1004.118f, 176.348f), Vector3(740.046f, 1009.188f, 175.719f)))) - ZipLinePaths(new ZipLinePath(164, false, List(Vector3(947.755f, 531.199f, 138.181f), Vector3(964.835f, 579.115f, 135.685f), Vector3(981.915f, 627.03f, 132.071f), Vector3(998.995f, 674.945f, 128.457f), Vector3(1009.377f, 704.07f, 124.851f)))) - ZipLinePaths(new ZipLinePath(165, false, List(Vector3(1025.061f, 697.578f, 124.85f), Vector3(1053.263f, 655.104f, 126.921f), Vector3(1081.465f, 612.63f, 128.15f), Vector3(1109.667f, 570.156f, 129.38f), Vector3(1119.068f, 555.998f, 129.97f)))) - ZipLinePaths(new ZipLinePath(166, false, List(Vector3(895.122f, 840.51f, 119.871f), Vector3(873.021f, 797.24f, 135.021f), Vector3(872.137f, 795.509f, 134.621f)))) - ZipLinePaths(new ZipLinePath(167, false, List(Vector3(874.806f, 787.157f, 133.531f), Vector3(887.407f, 738.836f, 137.875f), Vector3(888.415f, 734.97f, 137.431f)))) - ZipLinePaths(new ZipLinePath(168, false, List(Vector3(824.106f, 711.113f, 111.875f), Vector3(849.633f, 715.773f, 120.367f)))) - ZipLinePaths(new ZipLinePath(169, false, List(Vector3(844.487f, 761.271f, 111.351f), Vector3(853.672f, 773.247f, 130.373f), Vector3(862.857f, 785.223f, 135.795f), Vector3(864.898f, 787.885f, 135.215f)))) - ZipLinePaths(new ZipLinePath(170, false, List(Vector3(907.484f, 845.903f, 119.871f), Vector3(910.119f, 849.755f, 126.493f), Vector3(912.755f, 853.606f, 124.88f)))) - ZipLinePaths(new ZipLinePath(171, false, List(Vector3(1112.038f, 682.725f, 123.151f), Vector3(1120.959f, 632.652f, 129.102f), Vector3(1122.358f, 624.798f, 128.352f)))) - ZipLinePaths(new ZipLinePath(172, false, List(Vector3(1122.941f, 604.904f, 128.95f), Vector3(1120.249f, 561.988f, 129.97f)))) - ZipLinePaths(new ZipLinePath(173, false, List(Vector3(1171.009f, 531.472f, 109.666f), Vector3(1168.828f, 536.526f, 118.944f), Vector3(1167.582f, 539.414f, 118.285f)))) - ZipLinePaths(new ZipLinePath(174, false, List(Vector3(1047.224f, 748.42f, 124.85f), Vector3(1043.657f, 799.293f, 125.325f), Vector3(1043.377f, 803.283f, 124.85f)))) - ZipLinePaths(new ZipLinePath(175, false, List(Vector3(1059.966f, 892.132f, 124.857f), Vector3(1072.008f, 890.537f, 142.8f), Vector3(1075.157f, 890.218f, 141.854f)))) - ZipLinePaths(new ZipLinePath(176, false, List(Vector3(853.667f, 663.625f, 120.841f), Vector3(852.606f, 651.134f, 137.7f), Vector3(852.418f, 648.93f, 137.35f)))) - ZipLinePaths(new ZipLinePath(177, false, List(Vector3(1265.763f, 620.851f, 119.889f), Vector3(1247.709f, 666.201f, 129.597f), Vector3(1244.523f, 674.521f, 130.779f)))) - ZipLinePaths(new ZipLinePath(178, false, List(Vector3(1170.515f, 541.815f, 118.29f), Vector3(1218.82f, 551.299f, 125.086f), Vector3(1267.125f, 560.783f, 119.88f)))) - ZipLinePaths(new ZipLinePath(179, false, List(Vector3(1251.983f, 620.364f, 109.047f), Vector3(1260.922f, 617.29f, 120.227f), Vector3(1264.173f, 616.172f, 119.876f)))) - ZipLinePaths(new ZipLinePath(180, false, List(Vector3(1253.004f, 779.277f, 109.057f), Vector3(1250.953f, 784.935f, 123f), Vector3(1249.389f, 788.084f, 122.843f)))) - ZipLinePaths(new ZipLinePath(181, false, List(Vector3(1184.063f, 747.02f, 130.77f), Vector3(1128.565f, 820.543f, 132.85f)))) - ZipLinePaths(new ZipLinePath(182, false, List(Vector3(1185.879f, 718.32f, 130.772f), Vector3(1136.233f, 719.36f, 126.816f), Vector3(1121.339f, 719.673f, 124.292f)))) - ZipLinePaths(new ZipLinePath(183, false, List(Vector3(1140.607f, 823.278f, 121.948f), Vector3(1137.174f, 825.352f, 132.8f), Vector3(1135.352f, 827.061f, 132.852f)))) - ZipLinePaths(new ZipLinePath(184, false, List(Vector3(1050.043f, 744.286f, 124.851f), Vector3(1075.381f, 788.401f, 135.697f), Vector3(1100.719f, 832.515f, 133.264f), Vector3(1101.713f, 834.245f, 132.862f)))) - ZipLinePaths(new ZipLinePath(185, false, List(Vector3(1257.734f, 828.176f, 126.819f), Vector3(1255.031f, 833.706f, 133.337f), Vector3(1254.13f, 835.549f, 132.711f)))) - ZipLinePaths(new ZipLinePath(186, false, List(Vector3(1239.454f, 850.121f, 126.803f), Vector3(1243.189f, 852.848f, 132.837f), Vector3(1244.433f, 853.756f, 132.709f)))) - ZipLinePaths(new ZipLinePath(187, false, List(Vector3(1196.063f, 823.001f, 126.812f), Vector3(1157.416f, 854.391f, 132.165f), Vector3(1143.503f, 865.692f, 132.852f)))) - ZipLinePaths(new ZipLinePath(188, false, List(Vector3(1279.621f, 932.893f, 114.524f), Vector3(1279.227f, 909.182f, 132.704f), Vector3(1279.031f, 897.327f, 134.359f), Vector3(1278.834f, 885.471f, 132.745f)))) - ZipLinePaths(new ZipLinePath(189, false, List(Vector3(1124.713f, 916.18f, 126.843f), Vector3(1115.263f, 905.232f, 142.214f), Vector3(1111.588f, 900.975f, 141.854f)))) - ZipLinePaths(new ZipLinePath(190, false, List(Vector3(1340.865f, 846.029f, 111.852f), Vector3(1335.426f, 835.885f, 127.9f), Vector3(1334.807f, 834.266f, 127.841f)))) - ZipLinePaths(new ZipLinePath(191, false, List(Vector3(1326.86f, 785.22f, 127.855f), Vector3(1262.414f, 741.409f, 142.717f), Vector3(1253.207f, 735.15f, 140.846f)))) - ZipLinePaths(new ZipLinePath(192, false, List(Vector3(1389.355f, 995.955f, 138.183f), Vector3(1362.137f, 1038.774f, 134.124f), Vector3(1334.919f, 1081.594f, 128.97f), Vector3(1310.903f, 1119.376f, 121.854f)))) - ZipLinePaths(new ZipLinePath(193, false, List(Vector3(1327.53f, 1147.16f, 109.05f), Vector3(1318.545f, 1143.592f, 122f), Vector3(1316.298f, 1142.7f, 121.847f)))) - ZipLinePaths(new ZipLinePath(194, false, List(Vector3(1396.002f, 1228.28f, 109.05f), Vector3(1395.947f, 1220.255f, 124.75f), Vector3(1396.165f, 1217.902f, 125.303f)))) - ZipLinePaths(new ZipLinePath(195, false, List(Vector3(1396.44f, 1268.505f, 109.042f), Vector3(1393.148f, 1276.026f, 126.361f), Vector3(1389.556f, 1284.23f, 134.333f), Vector3(1385.964f, 1292.435f, 136.304f)))) - ZipLinePaths(new ZipLinePath(196, false, List(Vector3(1338.752f, 1192.75f, 109.052f), Vector3(1331.086f, 1199.688f, 126.4f), Vector3(1329.17f, 1201.422f, 126.347f)))) - ZipLinePaths(new ZipLinePath(197, false, List(Vector3(1405.842f, 1227.371f, 125.3f), Vector3(1356.422f, 1219.821f, 126.45f), Vector3(1329.735f, 1215.744f, 126.45f)))) - ZipLinePaths(new ZipLinePath(198, false, List(Vector3(1301.27f, 1208.518f, 135.532f), Vector3(1292.542f, 1214.94f, 152.2f), Vector3(1290.359f, 1216.546f, 151.952f)))) - ZipLinePaths(new ZipLinePath(199, false, List(Vector3(1306.218f, 1234.485f, 134.651f), Vector3(1303.755f, 1236.99f, 141.014f), Vector3(1302.278f, 1238.493f, 140.954f)))) - ZipLinePaths(new ZipLinePath(200, false, List(Vector3(1283.492f, 1260.547f, 140.965f), Vector3(1277.346f, 1264.371f, 151.8f), Vector3(1274.929f, 1265.421f, 151.848f)))) - ZipLinePaths(new ZipLinePath(201, false, List(Vector3(1349.313f, 1281.663f, 126.542f), Vector3(1355.484f, 1290.119f, 136.966f), Vector3(1357.541f, 1292.938f, 136.311f)))) - ZipLinePaths(new ZipLinePath(202, false, List(Vector3(1341.799f, 1295.97f, 145.061f), Vector3(1351.709f, 1288.523f, 145.53f), Vector3(1381.437f, 1266.181f, 137.67f), Vector3(1411.749f, 1243.401f, 126.441f)))) - ZipLinePaths(new ZipLinePath(203, false, List(Vector3(1375.896f, 1157.863f, 125.181f), Vector3(1188.609f, 1075.48f, 199.971f), Vector3(1182.567f, 1072.822f, 199.731f)))) - ZipLinePaths(new ZipLinePath(204, false, List(Vector3(1090.567f, 1089.597f, 126.743f), Vector3(1021.866f, 1037.4f, 182.072f), Vector3(1017.744f, 1034.268f, 182.343f)))) - ZipLinePaths(new ZipLinePath(205, false, List(Vector3(1129.258f, 1111.212f, 126.753f), Vector3(1132.878f, 1111.43f, 136.65f), Vector3(1136.499f, 1111.648f, 135.552f)))) - ZipLinePaths(new ZipLinePath(206, false, List(Vector3(1149.892f, 1116.521f, 135.546f), Vector3(1156.366f, 1117.722f, 148.401f), Vector3(1159.485f, 1118.147f, 148.442f)))) - ZipLinePaths(new ZipLinePath(207, false, List(Vector3(1212.807f, 1063.577f, 121.952f), Vector3(1207.698f, 1073.111f, 136.4f), Vector3(1205.341f, 1077.512f, 135.447f)))) - ZipLinePaths(new ZipLinePath(208, false, List(Vector3(1264.462f, 877.804f, 132.71f), Vector3(1246.819f, 925.65f, 134.208f), Vector3(1229.176f, 973.497f, 134.824f), Vector3(1211.532f, 1021.344f, 135.44f), Vector3(1193.889f, 1069.188f, 136.057f), Vector3(1190.083f, 1079.507f, 135.45f)))) - ZipLinePaths(new ZipLinePath(209, false, List(Vector3(1217.471f, 1083.948f, 135.453f), Vector3(1210.336f, 1099.103f, 152.484f), Vector3(1209.063f, 1102.378f, 152.225f)))) - ZipLinePaths(new ZipLinePath(210, false, List(Vector3(1240.544f, 1094.16f, 121.956f), Vector3(1232.679f, 1097.464f, 135.575f), Vector3(1230.057f, 1098.565f, 135.442f)))) - ZipLinePaths(new ZipLinePath(211, false, List(Vector3(1186.014f, 1121.699f, 152.224f), Vector3(1164.017f, 1098.726f, 199.092f), Vector3(1160.498f, 1095.05f, 199.687f)))) - ZipLinePaths(new ZipLinePath(212, false, List(Vector3(1204.12f, 1417.056f, 109.12f), Vector3(1213.4f, 1417.169f, 127.718f), Vector3(1216.493f, 1417.207f, 128.044f)))) - ZipLinePaths(new ZipLinePath(213, false, List(Vector3(1229.154f, 1404.634f, 128.041f), Vector3(1238.575f, 1406.62f, 145.262f), Vector3(1244.193f, 1407.981f, 145.044f)))) - ZipLinePaths(new ZipLinePath(214, false, List(Vector3(1161.559f, 1423.931f, 109.309f), Vector3(1156.185f, 1421.327f, 124.378f), Vector3(1151.826f, 1419.556f, 124.321f)))) - ZipLinePaths(new ZipLinePath(215, false, List(Vector3(1098.527f, 1217.84f, 119.349f), Vector3(1096.811f, 1211.274f, 126.3f), Vector3(1096.106f, 1207.218f, 126.545f)))) - ZipLinePaths(new ZipLinePath(216, false, List(Vector3(1096.231f, 1182.333f, 126.55f), Vector3(1103.04f, 1179.974f, 138.388f), Vector3(1109.849f, 1177.616f, 145.726f), Vector3(1117.458f, 1174.98f, 148.338f), Vector3(1125.068f, 1172.344f, 148.455f)))) - ZipLinePaths(new ZipLinePath(217, false, List(Vector3(929.798f, 1116.506f, 135.992f), Vector3(1010.892f, 1103.806f, 205.572f), Vector3(1023.303f, 1101.565f, 208.656f)))) - ZipLinePaths(new ZipLinePath(218, false, List(Vector3(1028.069f, 1258.8f, 107.069f), Vector3(1021.764f, 1250.92f, 122.861f), Vector3(1017.858f, 1243.717f, 122.444f)))) - ZipLinePaths(new ZipLinePath(219, false, List(Vector3(1104.627f, 1364.967f, 109.072f), Vector3(1094.893f, 1362.829f, 115.616f), Vector3(1085.159f, 1360.69f, 114.962f)))) - ZipLinePaths(new ZipLinePath(220, false, List(Vector3(1108.235f, 1301.184f, 119.665f), Vector3(931.115f, 1285.88f, 180.638f), Vector3(925.402f, 1285.386f, 180.536f)))) - ZipLinePaths(new ZipLinePath(221, false, List(Vector3(1110.124f, 1304.157f, 119.641f), Vector3(1070.944f, 1318.948f, 122.751f)))) - ZipLinePaths(new ZipLinePath(222, false, List(Vector3(1183.721f, 1312.937f, 119.247f), Vector3(1193.741f, 1311.441f, 136.45f), Vector3(1197.081f, 1310.942f, 136.048f)))) - ZipLinePaths(new ZipLinePath(223, false, List(Vector3(1164.092f, 1318.913f, 109.053f), Vector3(1166.906f, 1313.922f, 119.15f), Vector3(1169.72f, 1308.93f, 119.25f)))) - ZipLinePaths(new ZipLinePath(224, false, List(Vector3(1146.193f, 1413.844f, 124.331f), Vector3(1146.462f, 1363.929f, 123.112f), Vector3(1146.73f, 1314.015f, 120.12f), Vector3(1146.747f, 1311.02f, 119.64f)))) - ZipLinePaths(new ZipLinePath(225, false, List(Vector3(1223.321f, 1378.103f, 145.156f), Vector3(1174.206f, 1372.073f, 138.402f), Vector3(1125.091f, 1366.042f, 131.231f), Vector3(1080.888f, 1360.615f, 123.895f)))) - ZipLinePaths(new ZipLinePath(226, false, List(Vector3(1096.022f, 1374.066f, 124.331f), Vector3(1074.29f, 1362.048f, 122.751f)))) - ZipLinePaths(new ZipLinePath(227, false, List(Vector3(1149.499f, 1415.419f, 124.331f), Vector3(1197.765f, 1402.559f, 127.332f), Vector3(1217.072f, 1397.415f, 128.051f)))) - ZipLinePaths(new ZipLinePath(228, false, List(Vector3(814.131f, 1461.802f, 112.384f), Vector3(824.706f, 1416.337f, 138.113f), Vector3(835.28f, 1370.872f, 159.039f), Vector3(842.259f, 1347.165f, 163.573f)))) - ZipLinePaths(new ZipLinePath(229, false, List(Vector3(876.429f, 1343.77f, 136.094f), Vector3(926.629f, 1348.837f, 131.986f), Vector3(976.829f, 1353.905f, 124.559f), Vector3(1023.092f, 1358.575f, 116.544f)))) - ZipLinePaths(new ZipLinePath(230, false, List(Vector3(807.727f, 1380.755f, 109.058f), Vector3(806.274f, 1370.518f, 122.642f), Vector3(804.82f, 1358.281f, 130.736f), Vector3(804.404f, 1354.785f, 131.099f)))) - ZipLinePaths(new ZipLinePath(231, false, List(Vector3(706.406f, 1320.177f, 137.21f), Vector3(738.095f, 1316.223f, 136.05f)))) - ZipLinePaths(new ZipLinePath(232, false, List(Vector3(722.69f, 1345.392f, 109.052f), Vector3(731.902f, 1339.244f, 130f), Vector3(741.728f, 1332.685f, 137.239f), Vector3(744.799f, 1330.635f, 136.056f)))) - ZipLinePaths(new ZipLinePath(233, false, List(Vector3(907.818f, 1320.599f, 109.047f), Vector3(895.035f, 1324.75f, 125.795f), Vector3(882.252f, 1328.9f, 136.141f), Vector3(880.06f, 1329.612f, 136.089f)))) - ZipLinePaths(new ZipLinePath(234, false, List(Vector3(1014.461f, 1221.339f, 122.453f), Vector3(977.636f, 1187.782f, 130.037f), Vector3(940.81f, 1154.225f, 134.301f), Vector3(920.924f, 1136.104f, 135.992f)))) - ZipLinePaths(new ZipLinePath(235, false, List(Vector3(547.329f, 1083.474f, 110.82f), Vector3(622.869f, 1031.432f, 153.65f), Vector3(668.493f, 997.886f, 175.414f), Vector3(675.972f, 992.387f, 175.762f)))) - ZipLinePaths(new ZipLinePath(236, false, List(Vector3(615.829f, 1087.478f, 109.051f), Vector3(622.879f, 1087.122f, 123.044f), Vector3(635.568f, 1086.48f, 136.1f), Vector3(640.503f, 1086.231f, 136.144f)))) - ZipLinePaths(new ZipLinePath(237, false, List(Vector3(620.27f, 1254.43f, 119.008f), Vector3(641.552f, 1210.009f, 128.818f), Vector3(660.281f, 1170.918f, 136.059f)))) - ZipLinePaths(new ZipLinePath(238, false, List(Vector3(635.795f, 1193.298f, 109.043f), Vector3(639.224f, 1187.391f, 122.944f), Vector3(648.75f, 1170.982f, 136.4f), Vector3(650.274f, 1168.356f, 136.04f)))) - ZipLinePaths(new ZipLinePath(239, false, List(Vector3(926.527f, 1170.817f, 109.363f), Vector3(923.763f, 1165.504f, 125.927f), Vector3(918.072f, 1154.567f, 138.117f), Vector3(915.145f, 1148.942f, 137.957f)))) - ZipLinePaths(new ZipLinePath(240, false, List(Vector3(789.839f, 1155.974f, 120.007f), Vector3(794.331f, 1108.861f, 139.687f), Vector3(795.499f, 1096.612f, 140.378f)))) - ZipLinePaths(new ZipLinePath(241, false, List(Vector3(803.454f, 1182.012f, 119.972f), Vector3(830.713f, 1190.844f, 140.6f), Vector3(833.92f, 1191.883f, 140.248f)))) - ZipLinePaths(new ZipLinePath(242, false, List(Vector3(828.546f, 1027.546f, 109.549f), Vector3(837.077f, 1041.018f, 140.638f), Vector3(839.779f, 1044.485f, 140.443f)))) - ZipLinePaths(new ZipLinePath(243, false, List(Vector3(658.973f, 1029.373f, 109.083f), Vector3(664.074f, 1050.972f, 136.7f), Vector3(665.095f, 1055.292f, 136.044f)))) - ZipLinePaths(new ZipLinePath(244, false, List(Vector3(777.972f, 893.413f, 133.751f), Vector3(787.343f, 858.747f, 131.85f)))) - ZipLinePaths(new ZipLinePath(245, false, List(Vector3(685.721f, 1051.781f, 140.05f), Vector3(670.758f, 1004.096f, 141.016f), Vector3(655.795f, 956.412f, 139.45f), Vector3(640.832f, 908.728f, 137.884f), Vector3(632.154f, 881.072f, 136.36f)))) - ZipLinePaths(new ZipLinePath(246, false, List(Vector3(671.383f, 1075.859f, 140.045f), Vector3(701.364f, 1029.762f, 175.213f), Vector3(703.394f, 1026.64f, 175.696f)))) - ZipLinePaths(new ZipLinePath(247, false, List(Vector3(889.471f, 1158.689f, 179.31f), Vector3(890.333f, 1209.645f, 181.438f), Vector3(891.178f, 1259.603f, 183.33f)))) - ZipLinePaths(new ZipLinePath(248, false, List(Vector3(740.683f, 1013.973f, 175.689f), Vector3(779.565f, 1045.775f, 185.238f), Vector3(818.447f, 1077.575f, 194.64f), Vector3(819.972f, 1078.822f, 194.579f)))) - ZipLinePaths(new ZipLinePath(249, false, List(Vector3(833.687f, 1301.586f, 160.773f), Vector3(860.142f, 1284.02f, 180.145f), Vector3(863.922f, 1281.511f, 180.531f)))) - ZipLinePaths(new ZipLinePath(250, false, List(Vector3(1010.241f, 1240.344f, 122.449f), Vector3(930.779f, 1274.878f, 180.319f), Vector3(922.833f, 1278.331f, 180.514f)))) - ZipLinePaths(new ZipLinePath(251, false, List(Vector3(1133.814f, 1048.795f, 199.728f), Vector3(1086.372f, 1035.111f, 191.631f), Vector3(1038.929f, 1021.427f, 183.736f), Vector3(1032.287f, 1019.512f, 182.166f)))) - ZipLinePaths(new ZipLinePath(252, false, List(Vector3(889.938f, 1124.978f, 179.34f), Vector3(966.938f, 1027.831f, 182.22f)))) - ZipLinePaths(new ZipLinePath(253, true, List(Vector3(933.672f, 524.813f, 137.773f), Vector3(885.162f, 531.286f, 172.306f), Vector3(835.681f, 537.888f, 161.853f), Vector3(797.842f, 542.937f, 108.985f)))) - ZipLinePaths(new ZipLinePath(254, true, List(Vector3(541.168f, 1083.547f, 110.794f), Vector3(552.16f, 1043.303f, 211.598f), Vector3(568.619f, 981.507f, 137.554f)))) - ZipLinePaths(new ZipLinePath(255, true, List(Vector3(572.976f, 987.122f, 137.826f), Vector3(560.277f, 1045.507f, 211.626f), Vector3(551.469f, 1085.998f, 109.947f)))) - ZipLinePaths(new ZipLinePath(256, true, List(Vector3(817.329f, 1476.263f, 112.635f), Vector3(822.261f, 1473.141f, 116.242f), Vector3(823.905f, 1472.1f, 116.783f), Vector3(844.456f, 1459.09f, 211.505f), Vector3(885.935f, 1433.592f, 132.763f)))) - ZipLinePaths(new ZipLinePath(257, true, List(Vector3(880.19f, 1426.678f, 132.713f), Vector3(822.094f, 1465.025f, 211.507f), Vector3(819.173f, 1467.223f, 112.528f)))) + ZipLinePaths( + new ZipLinePath(1, false, List(Vector3(581.513f, 991.906f, 137.91f), Vector3(647.981f, 1071.977f, 136.15f))) + ) + ZipLinePaths( + new ZipLinePath(2, true, List(Vector3(626.942f, 1309.392f, 111.65f), Vector3(624.976f, 1314.648f, 129.076f))) + ) + ZipLinePaths( + new ZipLinePath(3, true, List(Vector3(664.909f, 1132.887f, 135.55f), Vector3(739.272f, 1093.882f, 108.549f))) + ) + ZipLinePaths( + new ZipLinePath(4, true, List(Vector3(682.606f, 1258.328f, 129.075f), Vector3(681.167f, 1263.188f, 111.65f))) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(691.973f, 1020.927f, 175.717f), + Vector3(693.182f, 1024.821f, 175.258f), + Vector3(711.325f, 1083.23f, 165.286f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(6, true, List(Vector3(725.251f, 1223.128f, 139.881f), Vector3(728.817f, 1227.398f, 161.281f))) + ) + ZipLinePaths( + new ZipLinePath(7, true, List(Vector3(737.366f, 827.503f, 151.8f), Vector3(726.502f, 823.006f, 118.25f))) + ) + ZipLinePaths( + new ZipLinePath(8, true, List(Vector3(735.172f, 1225.683f, 108.549f), Vector3(688.37f, 1136.702f, 135.65f))) + ) + ZipLinePaths( + new ZipLinePath(9, true, List(Vector3(736.016f, 1225.55f, 161.283f), Vector3(739.078f, 1230.956f, 139.881f))) + ) + ZipLinePaths( + new ZipLinePath(10, false, List(Vector3(739.34f, 1233.309f, 161.821f), Vector3(707.454f, 1294.883f, 129.621f))) + ) + ZipLinePaths( + new ZipLinePath(11, true, List(Vector3(744.27f, 823.732f, 118.25f), Vector3(733.396f, 821.193f, 151.8f))) + ) + ZipLinePaths( + new ZipLinePath( + 12, + true, + List( + Vector3(791.397f, 1293.352f, 135.65f), + Vector3(758.017f, 1258.464f, 122.944f), + Vector3(732.648f, 1231.949f, 116.434f), + Vector3(727.975f, 1227.065f, 117.548f), + Vector3(723.969f, 1222.879f, 117.311f), + Vector3(723.302f, 1222.181f, 108.549f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(13, true, List(Vector3(798.178f, 1075.67f, 108.549f), Vector3(661.15f, 1118.363f, 135.65f))) + ) + ZipLinePaths( + new ZipLinePath( + 14, + true, + List( + Vector3(806.089f, 1287.723f, 135.65f), + Vector3(831.731f, 1254.03f, 124.546f), + Vector3(838.141f, 1245.607f, 124.791f), + Vector3(839.889f, 1243.31f, 126.432f), + Vector3(852.71f, 1226.464f, 123.637f), + Vector3(863.783f, 1211.914f, 108.549f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(15, true, List(Vector3(833.04f, 1260.868f, 108.549f), Vector3(819.031f, 1323.108f, 130.591f))) + ) + ZipLinePaths( + new ZipLinePath( + 16, + false, + List( + Vector3(851.698f, 1111.512f, 200.062f), + Vector3(852.693f, 1113.453f, 199.565f), + Vector3(867.626f, 1142.578f, 179.294f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(17, true, List(Vector3(867.508f, 786.909f, 109.085f), Vector3(866.403f, 786.948f, 109.085f))) + ) + ZipLinePaths( + new ZipLinePath(18, false, List(Vector3(869.055f, 1094.282f, 194.562f), Vector3(975.227f, 1037.114f, 182.263f))) + ) + ZipLinePaths( + new ZipLinePath(19, true, List(Vector3(872.768f, 1156.774f, 178.792f), Vector3(872.526f, 1156.915f, 184.299f))) + ) + ZipLinePaths( + new ZipLinePath(20, false, List(Vector3(877.117f, 1420.782f, 133.161f), Vector3(857.119f, 1366.35f, 136.091f))) + ) + ZipLinePaths( + new ZipLinePath( + 21, + false, + List( + Vector3(879.233f, 1301.494f, 180.934f), + Vector3(878.289f, 1302.333f, 180.345f), + Vector3(849.027f, 1328.33f, 163.573f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 22, + false, + List(Vector3(897.112f, 1147.069f, 179.322f), Vector3(1020.979f, 1092.058f, 208.671f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 23, + false, + List( + Vector3(916.429f, 1293.681f, 180.655f), + Vector3(918.128f, 1294.889f, 180.196f), + Vector3(1025.18f, 1371.005f, 116.593f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(24, false, List(Vector3(944.17f, 535.579f, 137.951f), Vector3(921.003f, 693.13f, 130.68f))) + ) + ZipLinePaths( + new ZipLinePath( + 25, + false, + List( + Vector3(952.003f, 869.708f, 169.18f), + Vector3(952.645f, 872.988f, 169.476f), + Vector3(972.562f, 974.671f, 172.23f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(26, true, List(Vector3(959.837f, 871.038f, 137.15f), Vector3(949.586f, 868.014f, 168.681f))) + ) + ZipLinePaths( + new ZipLinePath( + 27, + false, + List( + Vector3(961.064f, 985.742f, 172.285f), + Vector3(958.734f, 983.378f, 171.793f), + Vector3(886.507f, 910.111f, 115.886f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(28, true, List(Vector3(961.268f, 870.931f, 168.673f), Vector3(951.672f, 867.573f, 137.15f))) + ) + ZipLinePaths( + new ZipLinePath(29, false, List(Vector3(965.127f, 1028.015f, 177.262f), Vector3(865.98f, 1067.626f, 200.071f))) + ) + ZipLinePaths( + new ZipLinePath(30, true, List(Vector3(972.362f, 1005.172f, 176.75f), Vector3(972.277f, 1005.349f, 181.75f))) + ) + ZipLinePaths( + new ZipLinePath(31, true, List(Vector3(973.345f, 1005.29f, 166.75f), Vector3(973.617f, 1005.373f, 171.75f))) + ) + ZipLinePaths( + new ZipLinePath(32, true, List(Vector3(993.984f, 986.374f, 171.75f), Vector3(992.517f, 978.742f, 176.75f))) + ) + ZipLinePaths( + new ZipLinePath(33, true, List(Vector3(997.002f, 1028.654f, 176.75f), Vector3(998.338f, 1029.743f, 166.75f))) + ) + ZipLinePaths( + new ZipLinePath(34, true, List(Vector3(1015.197f, 1001.46f, 181.75f), Vector3(1015.881f, 1001.237f, 176.75f))) + ) + ZipLinePaths( + new ZipLinePath(35, true, List(Vector3(1015.632f, 1001.636f, 171.75f), Vector3(1015.663f, 1002.099f, 166.75f))) + ) + ZipLinePaths( + new ZipLinePath( + 36, + false, + List(Vector3(1055.766f, 1084.677f, 214.167f), Vector3(1146.026f, 1093.29f, 199.697f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 37, + false, + List( + Vector3(1081.513f, 906.371f, 141.875f), + Vector3(1023.761f, 976.866f, 171.749f), + Vector3(1021.898f, 979.14f, 172.226f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(38, false, List(Vector3(1114.566f, 973.674f, 183.961f), Vector3(1024.122f, 981.71f, 177.251f))) + ) + ZipLinePaths( + new ZipLinePath(39, false, List(Vector3(1115.268f, 685.916f, 123.153f), Vector3(1181.004f, 708.419f, 130.773f))) + ) + ZipLinePaths( + new ZipLinePath(40, false, List(Vector3(1123.754f, 557.336f, 129.97f), Vector3(1158.099f, 615.656f, 128.58f))) + ) + ZipLinePaths( + new ZipLinePath( + 41, + false, + List( + Vector3(1124.52f, 1165.66f, 148.45f), + Vector3(1148.819f, 1098.341f, 199.221f), + Vector3(1150.439f, 1093.853f, 199.695f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 42, + false, + List(Vector3(1134.069f, 1054.513f, 199.724f), Vector3(1065.117f, 1089.592f, 208.634f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 43, + false, + List( + Vector3(1164.887f, 1028.954f, 199.752f), + Vector3(1164.038f, 1022.243f, 199.227f), + Vector3(1158.098f, 975.268f, 183.98f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 44, + false, + List(Vector3(1169.577f, 1152.768f, 195.641f), Vector3(1028.773f, 1021.258f, 182.191f)) + ) + ) + ZipLinePaths( + new ZipLinePath(45, false, List(Vector3(1170.844f, 624.946f, 127.89f), Vector3(1225.847f, 674.335f, 130.77f))) + ) + ZipLinePaths( + new ZipLinePath(46, true, List(Vector3(1171.626f, 1156.954f, 163.054f), Vector3(1173.541f, 1158.297f, 195.14f))) + ) + ZipLinePaths( + new ZipLinePath(47, true, List(Vector3(1173.21f, 1162.139f, 195.14f), Vector3(1167.157f, 1165.41f, 163.054f))) + ) + ZipLinePaths( + new ZipLinePath(48, false, List(Vector3(1189.596f, 755.543f, 130.771f), Vector3(1205.016f, 803.983f, 126.811f))) + ) + ZipLinePaths( + new ZipLinePath(49, true, List(Vector3(1203.213f, 674.437f, 130.276f), Vector3(1203.45f, 682.914f, 112.85f))) + ) + ZipLinePaths( + new ZipLinePath(50, true, List(Vector3(1209.026f, 745.489f, 112.85f), Vector3(1209.818f, 754.294f, 130.276f))) + ) + ZipLinePaths( + new ZipLinePath(51, false, List(Vector3(1263.84f, 868.575f, 164.611f), Vector3(1093.376f, 876.512f, 155.131f))) + ) + ZipLinePaths( + new ZipLinePath(52, false, List(Vector3(1318.75f, 680.79f, 127.95f), Vector3(1250.792f, 681.997f, 130.77f))) + ) + ZipLinePaths( + new ZipLinePath( + 53, + false, + List(Vector3(1324.778f, 1160.543f, 121.851f), Vector3(1374.004f, 1173.648f, 125.151f)) + ) + ) + ZipLinePaths( + new ZipLinePath(54, false, List(Vector3(1326.534f, 812.464f, 127.903f), Vector3(1272.628f, 860.86f, 164.679f))) + ) + ZipLinePaths( + new ZipLinePath( + 55, + false, + List( + Vector3(1395.087f, 937.296f, 108.756f), + Vector3(1392.3f, 970.925f, 138.355f), + Vector3(1391.902f, 975.729f, 138.032f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(56, true, List(Vector3(986.787f, 1005.346f, 110.778f), Vector3(978.945f, 1022.841f, 166.75f))) + ) + ZipLinePaths( + new ZipLinePath(57, true, List(Vector3(1011.11f, 984.732f, 166.75f), Vector3(987.858f, 1005.35f, 101.621f))) + ) + ZipLinePaths( + new ZipLinePath( + 58, + false, + List( + Vector3(960.539f, 879.005f, 137.679f), + Vector3(961.773f, 885.076f, 137.23f), + Vector3(980.297f, 976.141f, 102.151f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 59, + false, + List( + Vector3(1183.993f, 1068.618f, 199.718f), + Vector3(1190.361f, 1066.146f, 199.274f), + Vector3(1387.772f, 989.533f, 138.009f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 60, + false, + List( + Vector3(1084.42f, 1046.639f, 114.856f), + Vector3(1075.727f, 1042.173f, 114.359f), + Vector3(1014.875f, 1010.907f, 102.126f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 61, + false, + List( + Vector3(1010.405f, 982.383f, 102.144f), + Vector3(1050.911f, 927.105f, 124.33f), + Vector3(1053.612f, 923.42f, 124.874f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 62, + false, + List( + Vector3(677.233f, 983.867f, 175.757f), + Vector3(671.145f, 983.323f, 175.268f), + Vector3(579.83f, 975.152f, 138.106f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 63, + false, + List( + Vector3(847.264f, 1345.05f, 163.558f), + Vector3(848.71f, 1347.394f, 163.079f), + Vector3(893.565f, 1420.056f, 133.129f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(64, false, List(Vector3(1122.172f, 840.008f, 162.85f), Vector3(960.065f, 860.059f, 169.19f))) + ) + ZipLinePaths( + new ZipLinePath(65, false, List(Vector3(1126.119f, 849.46f, 162.859f), Vector3(1159.44f, 957.63f, 183.969f))) + ) + ZipLinePaths( + new ZipLinePath(66, true, List(Vector3(1130.343f, 837.741f, 132.35f), Vector3(1122.353f, 845.266f, 162.35f))) + ) + ZipLinePaths( + new ZipLinePath(67, true, List(Vector3(1128.075f, 844.958f, 162.35f), Vector3(1122.301f, 843.642f, 132.35f))) + ) + ZipLinePaths( + new ZipLinePath( + 68, + false, + List( + Vector3(1280.401f, 949.391f, 114.45f), + Vector3(1180.426f, 1027.86f, 199.264f), + Vector3(1175.094f, 1032.045f, 199.72f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 69, + false, + List( + Vector3(1070.591f, 880.007f, 141.902f), + Vector3(1094.877f, 919.673f, 164.819f), + Vector3(1117.258f, 956.228f, 184.011f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(70, false, List(Vector3(1037.273f, 821.082f, 124.85f), Vector3(991.292f, 822.466f, 124.95f))) + ) + ZipLinePaths( + new ZipLinePath(71, false, List(Vector3(738.475f, 885.729f, 133.976f), Vector3(732.984f, 829.777f, 152.327f))) + ) + ZipLinePaths( + new ZipLinePath(72, false, List(Vector3(738.037f, 819.262f, 152.3f), Vector3(688.763f, 746.446f, 155.98f))) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(1201.659f, 845.23f, 109.05f), + Vector3(1202.098f, 839.399f, 126.767f), + Vector3(1202.245f, 837.456f, 126.802f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 74, + false, + List( + Vector3(1223.133f, 796.668f, 109.055f), + Vector3(1221.229f, 800.077f, 126.927f), + Vector3(1219.326f, 803.487f, 126.811f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 75, + false, + List( + Vector3(1165.269f, 852.174f, 109.043f), + Vector3(1164.509f, 857.593f, 122.345f), + Vector3(1164.256f, 859.399f, 122.05f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(76, true, List(Vector3(766.451f, 1184.81f, 109.436f), Vector3(782.652f, 1188.998f, 119.48f))) + ) + ZipLinePaths( + new ZipLinePath(77, true, List(Vector3(773.648f, 1170.141f, 119.48f), Vector3(797.279f, 1167.873f, 109.436f))) + ) + ZipLinePaths( + new ZipLinePath(78, false, List(Vector3(919.547f, 1267.287f, 118.234f), Vector3(884.979f, 1164.413f, 179.325f))) + ) + ZipLinePaths( + new ZipLinePath( + 79, + false, + List( + Vector3(1016.912f, 1194.737f, 122.496f), + Vector3(899.344f, 1154.515f, 179.438f), + Vector3(895.552f, 1153.218f, 179.356f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(80, true, List(Vector3(1033.725f, 713.661f, 124.706f), Vector3(1018.227f, 720.002f, 134.75f))) + ) + ZipLinePaths( + new ZipLinePath(81, true, List(Vector3(1036.573f, 730.427f, 134.75f), Vector3(1018.869f, 745.466f, 124.706f))) + ) + ZipLinePaths( + new ZipLinePath(82, false, List(Vector3(1123.651f, 972.872f, 125.04f), Vector3(1139.528f, 1077.659f, 126.65f))) + ) + ZipLinePaths( + new ZipLinePath(83, false, List(Vector3(1349.973f, 835.703f, 127.85f), Vector3(1298.615f, 864.67f, 126.95f))) + ) + ZipLinePaths( + new ZipLinePath( + 84, + false, + List( + Vector3(614.049f, 988.948f, 120.578f), + Vector3(588.185f, 985.552f, 137.464f), + Vector3(584.619f, 985.067f, 137.927f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 85, + false, + List( + Vector3(753.458f, 1014.26f, 116.412f), + Vector3(825.993f, 1066.964f, 194.024f), + Vector3(828.333f, 1068.664f, 194.561f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 86, + false, + List( + Vector3(850.041f, 1042.272f, 140.472f), + Vector3(743.271f, 1019.952f, 175.179f), + Vector3(736.153f, 1018.464f, 175.701f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(87, false, List(Vector3(928.243f, 1122.438f, 136.017f), Vector3(899.093f, 1259.06f, 183.358f))) + ) + ZipLinePaths( + new ZipLinePath(88, false, List(Vector3(952.197f, 1363.522f, 117.919f), Vector3(898.492f, 1426.42f, 132.868f))) + ) + ZipLinePaths( + new ZipLinePath( + 89, + false, + List( + Vector3(926.366f, 1092.493f, 136.033f), + Vector3(929.541f, 1088.451f, 135.574f), + Vector3(977.178f, 1027.828f, 102.161f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 90, + false, + List( + Vector3(960.002f, 1008.314f, 102.157f), + Vector3(891.126f, 1051.974f, 135.668f), + Vector3(886.534f, 1054.885f, 136.126f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 91, + false, + List( + Vector3(207.89f, 910.311f, 113.14f), + Vector3(293.154f, 909.306f, 116.84f), + Vector3(321.318f, 889.302f, 118.053f), + Vector3(353.3f, 877.25f, 115.91f), + Vector3(378.041f, 884.824f, 115.139f), + Vector3(413.882f, 910.698f, 115.967f), + Vector3(436.729f, 918.823f, 113.12f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 92, + false, + List( + Vector3(427.575f, 953.375f, 113.14f), + Vector3(460.915f, 1023.964f, 116.107f), + Vector3(474.954f, 1054.653f, 116.138f), + Vector3(515.093f, 1076.339f, 115.67f), + Vector3(536.745f, 1079.732f, 111.65f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 93, + false, + List( + Vector3(479.791f, 936.61f, 113.388f), + Vector3(495.652f, 937.365f, 119.11f), + Vector3(502.613f, 938.121f, 118.339f), + Vector3(503.635f, 963.631f, 123.797f), + Vector3(503.538f, 978.868f, 123.3f), + Vector3(513.642f, 982.705f, 123.308f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 94, + false, + List( + Vector3(1679.359f, 1156.319f, 93.135f), + Vector3(1679.016f, 1150.787f, 96.119f), + Vector3(1646.872f, 1086.92f, 97.109f), + Vector3(1633.827f, 1073.554f, 96.398f), + Vector3(1586.838f, 1075.32f, 112.677f), + Vector3(1568.938f, 1072.514f, 113.155f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 95, + false, + List( + Vector3(1557.496f, 1031.021f, 113.14f), + Vector3(1522.762f, 960.766f, 115.661f), + Vector3(1506.029f, 928.012f, 115.536f), + Vector3(1470.937f, 908.527f, 116.235f), + Vector3(1444.142f, 919.885f, 113.738f), + Vector3(1432.746f, 921.543f, 109.47f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 96, + false, + List( + Vector3(842.904f, 332.934f, 113.14f), + Vector3(828.167f, 338.012f, 114.07f), + Vector3(816.33f, 353.302f, 115.603f), + Vector3(754.962f, 479.348f, 116.62f), + Vector3(781.494f, 530.593f, 110.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 97, + true, + List( + Vector3(788.315f, 539.096f, 109.284f), + Vector3(805.739f, 539.416f, 116.084f), + Vector3(810.607f, 538.671f, 125.568f), + Vector3(835.92f, 534.799f, 143.575f), + Vector3(884.599f, 527.353f, 152.231f), + Vector3(888.493f, 526.757f, 174.148f), + Vector3(938.471f, 520.011f, 137.591f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 98, + false, + List( + Vector3(731.311f, 591.258f, 109.766f), + Vector3(731.638f, 608.153f, 124.1f), + Vector3(736.713f, 637.551f, 137.163f), + Vector3(738.405f, 647.35f, 137.407f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List( + Vector3(858.162f, 343.607f, 113.461f), + Vector3(858.386f, 357.982f, 113.64f), + Vector3(871.709f, 363.657f, 113.074f), + Vector3(871.476f, 375.138f, 116.324f), + Vector3(871.544f, 386.62f, 118.074f), + Vector3(873.379f, 405.483f, 118.475f), + Vector3(882.869f, 406.77f, 118.381f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 100, + false, + List( + Vector3(920.189f, 433.581f, 128.311f), + Vector3(919.775f, 444.103f, 132.255f), + Vector3(923.762f, 454.626f, 133.096f), + Vector3(934.043f, 460.273f, 133.773f), + Vector3(933.925f, 469.42f, 133.551f), + Vector3(921.08f, 474.627f, 133.209f), + Vector3(922.658f, 483.881f, 133.137f), + Vector3(935.235f, 493.135f, 133.566f), + Vector3(936.146f, 498.55f, 133.381f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List( + Vector3(1422.417f, 983.83f, 133.314f), + Vector3(1428.703f, 983.946f, 132.72f), + Vector3(1434.989f, 984.061f, 130.225f), + Vector3(1448.161f, 989.292f, 128.737f), + Vector3(1448.105f, 1017.954f, 128.183f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List( + Vector3(1494.966f, 1049.656f, 123.828f), + Vector3(1498.045f, 1062.638f, 122.913f), + Vector3(1511.389f, 1066.815f, 122.819f), + Vector3(1511.932f, 1073.712f, 122.582f), + Vector3(1512.476f, 1080.609f, 120.845f), + Vector3(1513.562f, 1094.403f, 118.271f), + Vector3(1526.748f, 1094.198f, 116.998f), + Vector3(1539.934f, 1093.992f, 113.226f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 103, + false, + List( + Vector3(939.789f, 207.271f, 113.209f), + Vector3(958.515f, 207.177f, 115.548f), + Vector3(977.242f, 207.084f, 110.91f), + Vector3(1027.178f, 206.836f, 95.72f), + Vector3(1076.155f, 206.592f, 80.509f), + Vector3(1078.076f, 206.583f, 75.2f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 104, + false, + List( + Vector3(1083.268f, 239.176f, 74.184f), + Vector3(1146.821f, 272.079f, 79.019f), + Vector3(1181.375f, 271.281f, 88.881f), + Vector3(1201.423f, 272.171f, 95.01f), + Vector3(1221.471f, 273.061f, 93.145f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 105, + false, + List( + Vector3(1254.623f, 265.032f, 93.14f), + Vector3(1277.415f, 310.652f, 95.518f), + Vector3(1300.207f, 356.271f, 95.29f), + Vector3(1322.999f, 401.891f, 95.062f), + Vector3(1324.786f, 405.469f, 93.14f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 106, + false, + List( + Vector3(1287.494f, 431.131f, 93.143f), + Vector3(1216.539f, 429.215f, 116.06f), + Vector3(1183.181f, 442.797f, 115.261f), + Vector3(1168.423f, 474.38f, 115.962f), + Vector3(1167.006f, 513.135f, 110.994f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 107, + false, + List( + Vector3(947.304f, 1751.256f, 93.143f), + Vector3(1022.07f, 1715.558f, 97.088f), + Vector3(1088.146f, 1715.014f, 116.168f), + Vector3(1121.539f, 1698.073f, 114.974f), + Vector3(1135.688f, 1672.479f, 113.142f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 108, + false, + List( + Vector3(1156.156f, 1614.299f, 113.14f), + Vector3(1165.89f, 1600.735f, 115.415f), + Vector3(1166.124f, 1536.271f, 116.594f), + Vector3(1170.068f, 1480.177f, 113.813f), + Vector3(1163.413f, 1447.482f, 109.93f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 109, + false, + List( + Vector3(866.689f, 1803.032f, 91.411f), + Vector3(823.044f, 1805.965f, 100.645f), + Vector3(773.898f, 1805.898f, 113.754f), + Vector3(762.335f, 1805.887f, 113.15f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 110, + false, + List( + Vector3(719.69f, 1792.509f, 113.143f), + Vector3(719.386f, 1776.864f, 111.112f), + Vector3(718.475f, 1729.929f, 95.817f), + Vector3(687.661f, 1660.449f, 96.011f), + Vector3(702.261f, 1629.14f, 93.723f), + Vector3(746.162f, 1610.03f, 93.143f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 111, + false, + List( + Vector3(785.498f, 1606.097f, 93.146f), + Vector3(785.599f, 1535.452f, 116.464f), + Vector3(804.299f, 1500.206f, 115.294f), + Vector3(814.583f, 1481.916f, 113.147f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 112, + false, + List( + Vector3(739.761f, 1220.297f, 161.795f), + Vector3(741.855f, 1217.845f, 161.278f), + Vector3(773.272f, 1181.066f, 119.988f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 113, + false, + List( + Vector3(788.874f, 1190.56f, 120.035f), + Vector3(806.9f, 1273.41f, 163.308f), + Vector3(808.102f, 1278.933f, 163.587f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 114, + false, + List( + Vector3(773.704f, 1162.971f, 120.002f), + Vector3(728.518f, 1101.093f, 164.841f), + Vector3(725.506f, 1096.968f, 165.278f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 115, + false, + List( + Vector3(781.928f, 1311.432f, 163.576f), + Vector3(770.548f, 1309.973f, 163.027f), + Vector3(705.455f, 1301.629f, 129.618f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 116, + false, + List( + Vector3(671.03f, 1148.894f, 164.705f), + Vector3(669.801f, 1152.329f, 164.248f), + Vector3(631.716f, 1258.818f, 119.037f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 117, + false, + List( + Vector3(888.237f, 1456.234f, 128.212f), + Vector3(889.896f, 1478.612f, 123.1f), + Vector3(900.126f, 1480.202f, 122.403f), + Vector3(924.891f, 1479.896f, 114.905f), + Vector3(932.607f, 1481.17f, 113.155f), + Vector3(936.023f, 1490.444f, 112.406f), + Vector3(935.556f, 1500.991f, 108.433f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(903.953f, 1539.55f, 98.452f), + Vector3(904.279f, 1550.875f, 103.037f), + Vector3(905.605f, 1575.099f, 97.631f), + Vector3(921.619f, 1576.126f, 102.303f), + Vector3(934.133f, 1576.452f, 103.576f), + Vector3(935.661f, 1588.105f, 103.522f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 119, + false, + List( + Vector3(952.101f, 1628.841f, 103.426f), + Vector3(951.056f, 1655.014f, 103.109f), + Vector3(941.355f, 1655.54f, 103.145f), + Vector3(908.955f, 1656.066f, 98.182f), + Vector3(903.854f, 1665.792f, 98.018f), + Vector3(907.154f, 1687.154f, 92.936f), + Vector3(923.854f, 1686.517f, 93.257f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(120, false, List(Vector3(855.153f, 612.968f, 148.912f), Vector3(926.126f, 528.2f, 137.883f))) + ) + ZipLinePaths( + new ZipLinePath( + 121, + true, + List( + Vector3(1289.034f, 1388.523f, 147.739f), + Vector3(1293.101f, 1393.799f, 163.074f), + Vector3(1294.686f, 1400.643f, 161.175f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 122, + true, + List( + Vector3(1311.001f, 1390.936f, 164.914f), + Vector3(1311.03f, 1383.145f, 166.497f), + Vector3(1311.074f, 1371.459f, 174.89f), + Vector3(1311.096f, 1365.615f, 174.89f), + Vector3(1311.133f, 1355.877f, 187.506f), + Vector3(1311.169f, 1346.138f, 191.6f), + Vector3(1311.177f, 1344.19f, 191.6f), + Vector3(1310.743f, 1326.36f, 150.239f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 123, + false, + List( + Vector3(1206.788f, 1314.093f, 136.06f), + Vector3(1239.102f, 1336.775f, 144.7f), + Vector3(1243.718f, 1340.015f, 145.26f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(1305.939f, 1292.807f, 145.176f), + Vector3(1307.056f, 1286.93f, 144.781f), + Vector3(1314.874f, 1245.797f, 131.299f), + Vector3(1316.483f, 1237.336f, 126.475f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 125, + true, + List( + Vector3(635.732f, 787.036f, 144.959f), + Vector3(641.69f, 782.608f, 169.61f), + Vector3(677.814f, 746.027f, 177.406f), + Vector3(686.856f, 736.488f, 155.479f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 126, + true, + List( + Vector3(638.583f, 708.756f, 155.915f), + Vector3(642.303f, 716.658f, 157.733f), + Vector3(646.974f, 721.968f, 142.459f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 127, + false, + List( + Vector3(700.844f, 755.122f, 137.391f), + Vector3(724.482f, 799.439f, 148.167f), + Vector3(734.679f, 818.556f, 152.31f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 128, + false, + List( + Vector3(651.24f, 839.686f, 137.367f), + Vector3(680.057f, 970.631f, 175.22f), + Vector3(681.978f, 979.361f, 175.738f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 129, + false, + List( + Vector3(832.657f, 618.498f, 150.19f), + Vector3(790.345f, 645.137f, 151.52f), + Vector3(748.032f, 671.776f, 151.043f), + Vector3(705.72f, 698.415f, 150.567f), + Vector3(703.181f, 700.013f, 148.89f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 130, + false, + List( + Vector3(792.263f, 556.276f, 109.54f), + Vector3(806.498f, 568.729f, 132.501f), + Vector3(812.997f, 574.414f, 138.376f), + Vector3(819.495f, 580.1f, 137.243f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 131, + false, + List( + Vector3(905.264f, 797.915f, 121.166f), + Vector3(949.727f, 838.795f, 137.088f), + Vector3(956.079f, 844.635f, 137.665f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(132, false, List(Vector3(866.636f, 793.426f, 134.32f), Vector3(817.722f, 805.405f, 131.811f))) + ) + ZipLinePaths( + new ZipLinePath(133, false, List(Vector3(817.815f, 812.227f, 131.813f), Vector3(851.308f, 872.076f, 124.853f))) + ) + ZipLinePaths( + new ZipLinePath( + 134, + false, + List( + Vector3(739.172f, 733.542f, 137.481f), + Vector3(762.696f, 737.81f, 132.936f), + Vector3(786.221f, 742.078f, 122.69f), + Vector3(808.362f, 746.094f, 111.881f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 135, + false, + List( + Vector3(749.635f, 682.739f, 137.377f), + Vector3(771.007f, 693.48f, 136.152f), + Vector3(792.38f, 704.22f, 125.454f), + Vector3(815.847f, 716.014f, 111.879f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 136, + false, + List( + Vector3(770.807f, 810.481f, 131.821f), + Vector3(721.399f, 803.395f, 135.775f), + Vector3(679.896f, 797.442f, 137.451f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 137, + false, + List( + Vector3(668.436f, 839.169f, 126.948f), + Vector3(668.162f, 835.637f, 137.7f), + Vector3(668.04f, 830.457f, 137.345f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 138, + false, + List( + Vector3(696.207f, 769.157f, 126.745f), + Vector3(691.358f, 769.345f, 137.5f), + Vector3(687.522f, 769.379f, 137.353f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 139, + false, + List( + Vector3(777.383f, 693.723f, 109.054f), + Vector3(768.922f, 695.463f, 127.2f), + Vector3(764.501f, 695.909f, 126.752f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 140, + false, + List( + Vector3(714.7f, 806.943f, 118.655f), + Vector3(716.023f, 798.557f, 127.8f), + Vector3(716.384f, 794.616f, 126.942f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 141, + false, + List( + Vector3(837.198f, 679.723f, 109.056f), + Vector3(841.194f, 674.804f, 121.161f), + Vector3(842.792f, 671.297f, 120.844f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 142, + false, + List( + Vector3(980.767f, 823.824f, 124.941f), + Vector3(974.252f, 832.646f, 138.475f), + Vector3(972.08f, 835.587f, 137.654f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 143, + false, + List( + Vector3(854.641f, 623.48f, 147.703f), + Vector3(873.038f, 670.732f, 143.255f), + Vector3(890.352f, 715.204f, 137.432f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 144, + false, + List( + Vector3(897.213f, 726.019f, 137.43f), + Vector3(923f, 770.018f, 138.179f), + Vector3(948.786f, 814.017f, 138.324f), + Vector3(963.955f, 839.899f, 137.65f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 145, + false, + List( + Vector3(870.548f, 724.109f, 120.954f), + Vector3(877.373f, 728.026f, 137.485f), + Vector3(881.138f, 728.81f, 137.433f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 146, + false, + List( + Vector3(909.652f, 723.91f, 121.052f), + Vector3(906.728f, 720.913f, 137.485f), + Vector3(903.654f, 717.805f, 137.441f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 147, + false, + List( + Vector3(944.951f, 580.171f, 113.352f), + Vector3(939.778f, 573.055f, 127.401f), + Vector3(937.12f, 569.75f, 126.95f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 148, + false, + List( + Vector3(931.01f, 546.086f, 126.943f), + Vector3(933.092f, 538.266f, 137.799f), + Vector3(933.786f, 535.659f, 137.95f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 149, + false, + List( + Vector3(1009.159f, 752.719f, 124.85f), + Vector3(991.619f, 799.006f, 125.778f), + Vector3(985.772f, 814.968f, 124.95f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 150, + false, + List( + Vector3(628.63f, 911.352f, 126.753f), + Vector3(622.808f, 922.572f, 129.078f), + Vector3(605.34f, 956.232f, 125.252f), + Vector3(591.184f, 983.513f, 118.093f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 151, + false, + List( + Vector3(916.791f, 916.103f, 110.541f), + Vector3(927.088f, 910.021f, 125.3f), + Vector3(931.332f, 907.814f, 124.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 152, + false, + List( + Vector3(985.233f, 890.658f, 114.677f), + Vector3(983.342f, 879.305f, 125.383f), + Vector3(982.712f, 875.521f, 124.952f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 153, + false, + List( + Vector3(788.586f, 904.202f, 133.771f), + Vector3(800.969f, 904.082f, 135.354f), + Vector3(838.117f, 903.72f, 125.166f), + Vector3(850.742f, 903.597f, 115.87f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 154, + false, + List( + Vector3(723.819f, 909.915f, 133.841f), + Vector3(716.155f, 968.988f, 175.181f), + Vector3(715.644f, 972.926f, 175.708f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(757.2f, 918.818f, 133.758f), + Vector3(752.902f, 967.566f, 125.833f), + Vector3(751.772f, 994.343f, 120.207f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + false, + List( + Vector3(736.038f, 1019.345f, 113.91f), + Vector3(724.248f, 1060.438f, 140.6f), + Vector3(723.526f, 1062.954f, 140.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 157, + false, + List( + Vector3(753.396f, 1079.35f, 140.243f), + Vector3(728.852f, 1090.832f, 164.844f), + Vector3(725.346f, 1092.473f, 165.261f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 158, + false, + List( + Vector3(881.321f, 940.867f, 115.863f), + Vector3(870.806f, 989.707f, 129.7f), + Vector3(860.291f, 1038.547f, 140.352f), + Vector3(859.054f, 1044.292f, 140.464f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 159, + false, + List( + Vector3(880.79f, 1033.59f, 109.7f), + Vector3(881.104f, 1056.676f, 136.541f), + Vector3(881.144f, 1059.561f, 136.088f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 160, + false, + List( + Vector3(923.653f, 1069.12f, 109.871f), + Vector3(920.338f, 1084.106f, 136.341f), + Vector3(919.41f, 1090.862f, 135.986f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 161, + false, + List( + Vector3(976.603f, 1041.599f, 177.302f), + Vector3(973.324f, 1045.539f, 176.772f), + Vector3(924.127f, 1104.639f, 136.049f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 162, + false, + List( + Vector3(989.279f, 722.262f, 124.851f), + Vector3(942.352f, 727.252f, 122.74f), + Vector3(924.486f, 729.048f, 120.951f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 163, + false, + List( + Vector3(870.525f, 934.977f, 115.886f), + Vector3(748.961f, 1004.118f, 176.348f), + Vector3(740.046f, 1009.188f, 175.719f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 164, + false, + List( + Vector3(947.755f, 531.199f, 138.181f), + Vector3(964.835f, 579.115f, 135.685f), + Vector3(981.915f, 627.03f, 132.071f), + Vector3(998.995f, 674.945f, 128.457f), + Vector3(1009.377f, 704.07f, 124.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 165, + false, + List( + Vector3(1025.061f, 697.578f, 124.85f), + Vector3(1053.263f, 655.104f, 126.921f), + Vector3(1081.465f, 612.63f, 128.15f), + Vector3(1109.667f, 570.156f, 129.38f), + Vector3(1119.068f, 555.998f, 129.97f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 166, + false, + List( + Vector3(895.122f, 840.51f, 119.871f), + Vector3(873.021f, 797.24f, 135.021f), + Vector3(872.137f, 795.509f, 134.621f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 167, + false, + List( + Vector3(874.806f, 787.157f, 133.531f), + Vector3(887.407f, 738.836f, 137.875f), + Vector3(888.415f, 734.97f, 137.431f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(168, false, List(Vector3(824.106f, 711.113f, 111.875f), Vector3(849.633f, 715.773f, 120.367f))) + ) + ZipLinePaths( + new ZipLinePath( + 169, + false, + List( + Vector3(844.487f, 761.271f, 111.351f), + Vector3(853.672f, 773.247f, 130.373f), + Vector3(862.857f, 785.223f, 135.795f), + Vector3(864.898f, 787.885f, 135.215f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 170, + false, + List( + Vector3(907.484f, 845.903f, 119.871f), + Vector3(910.119f, 849.755f, 126.493f), + Vector3(912.755f, 853.606f, 124.88f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 171, + false, + List( + Vector3(1112.038f, 682.725f, 123.151f), + Vector3(1120.959f, 632.652f, 129.102f), + Vector3(1122.358f, 624.798f, 128.352f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(172, false, List(Vector3(1122.941f, 604.904f, 128.95f), Vector3(1120.249f, 561.988f, 129.97f))) + ) + ZipLinePaths( + new ZipLinePath( + 173, + false, + List( + Vector3(1171.009f, 531.472f, 109.666f), + Vector3(1168.828f, 536.526f, 118.944f), + Vector3(1167.582f, 539.414f, 118.285f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 174, + false, + List( + Vector3(1047.224f, 748.42f, 124.85f), + Vector3(1043.657f, 799.293f, 125.325f), + Vector3(1043.377f, 803.283f, 124.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 175, + false, + List( + Vector3(1059.966f, 892.132f, 124.857f), + Vector3(1072.008f, 890.537f, 142.8f), + Vector3(1075.157f, 890.218f, 141.854f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 176, + false, + List( + Vector3(853.667f, 663.625f, 120.841f), + Vector3(852.606f, 651.134f, 137.7f), + Vector3(852.418f, 648.93f, 137.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 177, + false, + List( + Vector3(1265.763f, 620.851f, 119.889f), + Vector3(1247.709f, 666.201f, 129.597f), + Vector3(1244.523f, 674.521f, 130.779f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 178, + false, + List( + Vector3(1170.515f, 541.815f, 118.29f), + Vector3(1218.82f, 551.299f, 125.086f), + Vector3(1267.125f, 560.783f, 119.88f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 179, + false, + List( + Vector3(1251.983f, 620.364f, 109.047f), + Vector3(1260.922f, 617.29f, 120.227f), + Vector3(1264.173f, 616.172f, 119.876f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 180, + false, + List( + Vector3(1253.004f, 779.277f, 109.057f), + Vector3(1250.953f, 784.935f, 123f), + Vector3(1249.389f, 788.084f, 122.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(181, false, List(Vector3(1184.063f, 747.02f, 130.77f), Vector3(1128.565f, 820.543f, 132.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 182, + false, + List( + Vector3(1185.879f, 718.32f, 130.772f), + Vector3(1136.233f, 719.36f, 126.816f), + Vector3(1121.339f, 719.673f, 124.292f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 183, + false, + List( + Vector3(1140.607f, 823.278f, 121.948f), + Vector3(1137.174f, 825.352f, 132.8f), + Vector3(1135.352f, 827.061f, 132.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 184, + false, + List( + Vector3(1050.043f, 744.286f, 124.851f), + Vector3(1075.381f, 788.401f, 135.697f), + Vector3(1100.719f, 832.515f, 133.264f), + Vector3(1101.713f, 834.245f, 132.862f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 185, + false, + List( + Vector3(1257.734f, 828.176f, 126.819f), + Vector3(1255.031f, 833.706f, 133.337f), + Vector3(1254.13f, 835.549f, 132.711f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 186, + false, + List( + Vector3(1239.454f, 850.121f, 126.803f), + Vector3(1243.189f, 852.848f, 132.837f), + Vector3(1244.433f, 853.756f, 132.709f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 187, + false, + List( + Vector3(1196.063f, 823.001f, 126.812f), + Vector3(1157.416f, 854.391f, 132.165f), + Vector3(1143.503f, 865.692f, 132.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 188, + false, + List( + Vector3(1279.621f, 932.893f, 114.524f), + Vector3(1279.227f, 909.182f, 132.704f), + Vector3(1279.031f, 897.327f, 134.359f), + Vector3(1278.834f, 885.471f, 132.745f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 189, + false, + List( + Vector3(1124.713f, 916.18f, 126.843f), + Vector3(1115.263f, 905.232f, 142.214f), + Vector3(1111.588f, 900.975f, 141.854f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 190, + false, + List( + Vector3(1340.865f, 846.029f, 111.852f), + Vector3(1335.426f, 835.885f, 127.9f), + Vector3(1334.807f, 834.266f, 127.841f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 191, + false, + List( + Vector3(1326.86f, 785.22f, 127.855f), + Vector3(1262.414f, 741.409f, 142.717f), + Vector3(1253.207f, 735.15f, 140.846f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 192, + false, + List( + Vector3(1389.355f, 995.955f, 138.183f), + Vector3(1362.137f, 1038.774f, 134.124f), + Vector3(1334.919f, 1081.594f, 128.97f), + Vector3(1310.903f, 1119.376f, 121.854f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 193, + false, + List( + Vector3(1327.53f, 1147.16f, 109.05f), + Vector3(1318.545f, 1143.592f, 122f), + Vector3(1316.298f, 1142.7f, 121.847f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 194, + false, + List( + Vector3(1396.002f, 1228.28f, 109.05f), + Vector3(1395.947f, 1220.255f, 124.75f), + Vector3(1396.165f, 1217.902f, 125.303f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 195, + false, + List( + Vector3(1396.44f, 1268.505f, 109.042f), + Vector3(1393.148f, 1276.026f, 126.361f), + Vector3(1389.556f, 1284.23f, 134.333f), + Vector3(1385.964f, 1292.435f, 136.304f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 196, + false, + List( + Vector3(1338.752f, 1192.75f, 109.052f), + Vector3(1331.086f, 1199.688f, 126.4f), + Vector3(1329.17f, 1201.422f, 126.347f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 197, + false, + List( + Vector3(1405.842f, 1227.371f, 125.3f), + Vector3(1356.422f, 1219.821f, 126.45f), + Vector3(1329.735f, 1215.744f, 126.45f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 198, + false, + List( + Vector3(1301.27f, 1208.518f, 135.532f), + Vector3(1292.542f, 1214.94f, 152.2f), + Vector3(1290.359f, 1216.546f, 151.952f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 199, + false, + List( + Vector3(1306.218f, 1234.485f, 134.651f), + Vector3(1303.755f, 1236.99f, 141.014f), + Vector3(1302.278f, 1238.493f, 140.954f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 200, + false, + List( + Vector3(1283.492f, 1260.547f, 140.965f), + Vector3(1277.346f, 1264.371f, 151.8f), + Vector3(1274.929f, 1265.421f, 151.848f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 201, + false, + List( + Vector3(1349.313f, 1281.663f, 126.542f), + Vector3(1355.484f, 1290.119f, 136.966f), + Vector3(1357.541f, 1292.938f, 136.311f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 202, + false, + List( + Vector3(1341.799f, 1295.97f, 145.061f), + Vector3(1351.709f, 1288.523f, 145.53f), + Vector3(1381.437f, 1266.181f, 137.67f), + Vector3(1411.749f, 1243.401f, 126.441f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 203, + false, + List( + Vector3(1375.896f, 1157.863f, 125.181f), + Vector3(1188.609f, 1075.48f, 199.971f), + Vector3(1182.567f, 1072.822f, 199.731f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 204, + false, + List( + Vector3(1090.567f, 1089.597f, 126.743f), + Vector3(1021.866f, 1037.4f, 182.072f), + Vector3(1017.744f, 1034.268f, 182.343f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 205, + false, + List( + Vector3(1129.258f, 1111.212f, 126.753f), + Vector3(1132.878f, 1111.43f, 136.65f), + Vector3(1136.499f, 1111.648f, 135.552f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 206, + false, + List( + Vector3(1149.892f, 1116.521f, 135.546f), + Vector3(1156.366f, 1117.722f, 148.401f), + Vector3(1159.485f, 1118.147f, 148.442f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 207, + false, + List( + Vector3(1212.807f, 1063.577f, 121.952f), + Vector3(1207.698f, 1073.111f, 136.4f), + Vector3(1205.341f, 1077.512f, 135.447f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 208, + false, + List( + Vector3(1264.462f, 877.804f, 132.71f), + Vector3(1246.819f, 925.65f, 134.208f), + Vector3(1229.176f, 973.497f, 134.824f), + Vector3(1211.532f, 1021.344f, 135.44f), + Vector3(1193.889f, 1069.188f, 136.057f), + Vector3(1190.083f, 1079.507f, 135.45f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 209, + false, + List( + Vector3(1217.471f, 1083.948f, 135.453f), + Vector3(1210.336f, 1099.103f, 152.484f), + Vector3(1209.063f, 1102.378f, 152.225f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 210, + false, + List( + Vector3(1240.544f, 1094.16f, 121.956f), + Vector3(1232.679f, 1097.464f, 135.575f), + Vector3(1230.057f, 1098.565f, 135.442f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 211, + false, + List( + Vector3(1186.014f, 1121.699f, 152.224f), + Vector3(1164.017f, 1098.726f, 199.092f), + Vector3(1160.498f, 1095.05f, 199.687f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 212, + false, + List( + Vector3(1204.12f, 1417.056f, 109.12f), + Vector3(1213.4f, 1417.169f, 127.718f), + Vector3(1216.493f, 1417.207f, 128.044f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 213, + false, + List( + Vector3(1229.154f, 1404.634f, 128.041f), + Vector3(1238.575f, 1406.62f, 145.262f), + Vector3(1244.193f, 1407.981f, 145.044f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 214, + false, + List( + Vector3(1161.559f, 1423.931f, 109.309f), + Vector3(1156.185f, 1421.327f, 124.378f), + Vector3(1151.826f, 1419.556f, 124.321f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 215, + false, + List( + Vector3(1098.527f, 1217.84f, 119.349f), + Vector3(1096.811f, 1211.274f, 126.3f), + Vector3(1096.106f, 1207.218f, 126.545f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 216, + false, + List( + Vector3(1096.231f, 1182.333f, 126.55f), + Vector3(1103.04f, 1179.974f, 138.388f), + Vector3(1109.849f, 1177.616f, 145.726f), + Vector3(1117.458f, 1174.98f, 148.338f), + Vector3(1125.068f, 1172.344f, 148.455f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 217, + false, + List( + Vector3(929.798f, 1116.506f, 135.992f), + Vector3(1010.892f, 1103.806f, 205.572f), + Vector3(1023.303f, 1101.565f, 208.656f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 218, + false, + List( + Vector3(1028.069f, 1258.8f, 107.069f), + Vector3(1021.764f, 1250.92f, 122.861f), + Vector3(1017.858f, 1243.717f, 122.444f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 219, + false, + List( + Vector3(1104.627f, 1364.967f, 109.072f), + Vector3(1094.893f, 1362.829f, 115.616f), + Vector3(1085.159f, 1360.69f, 114.962f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 220, + false, + List( + Vector3(1108.235f, 1301.184f, 119.665f), + Vector3(931.115f, 1285.88f, 180.638f), + Vector3(925.402f, 1285.386f, 180.536f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 221, + false, + List(Vector3(1110.124f, 1304.157f, 119.641f), Vector3(1070.944f, 1318.948f, 122.751f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 222, + false, + List( + Vector3(1183.721f, 1312.937f, 119.247f), + Vector3(1193.741f, 1311.441f, 136.45f), + Vector3(1197.081f, 1310.942f, 136.048f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 223, + false, + List( + Vector3(1164.092f, 1318.913f, 109.053f), + Vector3(1166.906f, 1313.922f, 119.15f), + Vector3(1169.72f, 1308.93f, 119.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 224, + false, + List( + Vector3(1146.193f, 1413.844f, 124.331f), + Vector3(1146.462f, 1363.929f, 123.112f), + Vector3(1146.73f, 1314.015f, 120.12f), + Vector3(1146.747f, 1311.02f, 119.64f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 225, + false, + List( + Vector3(1223.321f, 1378.103f, 145.156f), + Vector3(1174.206f, 1372.073f, 138.402f), + Vector3(1125.091f, 1366.042f, 131.231f), + Vector3(1080.888f, 1360.615f, 123.895f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 226, + false, + List(Vector3(1096.022f, 1374.066f, 124.331f), Vector3(1074.29f, 1362.048f, 122.751f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 227, + false, + List( + Vector3(1149.499f, 1415.419f, 124.331f), + Vector3(1197.765f, 1402.559f, 127.332f), + Vector3(1217.072f, 1397.415f, 128.051f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 228, + false, + List( + Vector3(814.131f, 1461.802f, 112.384f), + Vector3(824.706f, 1416.337f, 138.113f), + Vector3(835.28f, 1370.872f, 159.039f), + Vector3(842.259f, 1347.165f, 163.573f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 229, + false, + List( + Vector3(876.429f, 1343.77f, 136.094f), + Vector3(926.629f, 1348.837f, 131.986f), + Vector3(976.829f, 1353.905f, 124.559f), + Vector3(1023.092f, 1358.575f, 116.544f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 230, + false, + List( + Vector3(807.727f, 1380.755f, 109.058f), + Vector3(806.274f, 1370.518f, 122.642f), + Vector3(804.82f, 1358.281f, 130.736f), + Vector3(804.404f, 1354.785f, 131.099f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(231, false, List(Vector3(706.406f, 1320.177f, 137.21f), Vector3(738.095f, 1316.223f, 136.05f))) + ) + ZipLinePaths( + new ZipLinePath( + 232, + false, + List( + Vector3(722.69f, 1345.392f, 109.052f), + Vector3(731.902f, 1339.244f, 130f), + Vector3(741.728f, 1332.685f, 137.239f), + Vector3(744.799f, 1330.635f, 136.056f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 233, + false, + List( + Vector3(907.818f, 1320.599f, 109.047f), + Vector3(895.035f, 1324.75f, 125.795f), + Vector3(882.252f, 1328.9f, 136.141f), + Vector3(880.06f, 1329.612f, 136.089f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 234, + false, + List( + Vector3(1014.461f, 1221.339f, 122.453f), + Vector3(977.636f, 1187.782f, 130.037f), + Vector3(940.81f, 1154.225f, 134.301f), + Vector3(920.924f, 1136.104f, 135.992f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 235, + false, + List( + Vector3(547.329f, 1083.474f, 110.82f), + Vector3(622.869f, 1031.432f, 153.65f), + Vector3(668.493f, 997.886f, 175.414f), + Vector3(675.972f, 992.387f, 175.762f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 236, + false, + List( + Vector3(615.829f, 1087.478f, 109.051f), + Vector3(622.879f, 1087.122f, 123.044f), + Vector3(635.568f, 1086.48f, 136.1f), + Vector3(640.503f, 1086.231f, 136.144f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 237, + false, + List( + Vector3(620.27f, 1254.43f, 119.008f), + Vector3(641.552f, 1210.009f, 128.818f), + Vector3(660.281f, 1170.918f, 136.059f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 238, + false, + List( + Vector3(635.795f, 1193.298f, 109.043f), + Vector3(639.224f, 1187.391f, 122.944f), + Vector3(648.75f, 1170.982f, 136.4f), + Vector3(650.274f, 1168.356f, 136.04f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 239, + false, + List( + Vector3(926.527f, 1170.817f, 109.363f), + Vector3(923.763f, 1165.504f, 125.927f), + Vector3(918.072f, 1154.567f, 138.117f), + Vector3(915.145f, 1148.942f, 137.957f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 240, + false, + List( + Vector3(789.839f, 1155.974f, 120.007f), + Vector3(794.331f, 1108.861f, 139.687f), + Vector3(795.499f, 1096.612f, 140.378f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 241, + false, + List( + Vector3(803.454f, 1182.012f, 119.972f), + Vector3(830.713f, 1190.844f, 140.6f), + Vector3(833.92f, 1191.883f, 140.248f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 242, + false, + List( + Vector3(828.546f, 1027.546f, 109.549f), + Vector3(837.077f, 1041.018f, 140.638f), + Vector3(839.779f, 1044.485f, 140.443f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 243, + false, + List( + Vector3(658.973f, 1029.373f, 109.083f), + Vector3(664.074f, 1050.972f, 136.7f), + Vector3(665.095f, 1055.292f, 136.044f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(244, false, List(Vector3(777.972f, 893.413f, 133.751f), Vector3(787.343f, 858.747f, 131.85f))) + ) + ZipLinePaths( + new ZipLinePath( + 245, + false, + List( + Vector3(685.721f, 1051.781f, 140.05f), + Vector3(670.758f, 1004.096f, 141.016f), + Vector3(655.795f, 956.412f, 139.45f), + Vector3(640.832f, 908.728f, 137.884f), + Vector3(632.154f, 881.072f, 136.36f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 246, + false, + List( + Vector3(671.383f, 1075.859f, 140.045f), + Vector3(701.364f, 1029.762f, 175.213f), + Vector3(703.394f, 1026.64f, 175.696f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 247, + false, + List( + Vector3(889.471f, 1158.689f, 179.31f), + Vector3(890.333f, 1209.645f, 181.438f), + Vector3(891.178f, 1259.603f, 183.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 248, + false, + List( + Vector3(740.683f, 1013.973f, 175.689f), + Vector3(779.565f, 1045.775f, 185.238f), + Vector3(818.447f, 1077.575f, 194.64f), + Vector3(819.972f, 1078.822f, 194.579f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 249, + false, + List( + Vector3(833.687f, 1301.586f, 160.773f), + Vector3(860.142f, 1284.02f, 180.145f), + Vector3(863.922f, 1281.511f, 180.531f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 250, + false, + List( + Vector3(1010.241f, 1240.344f, 122.449f), + Vector3(930.779f, 1274.878f, 180.319f), + Vector3(922.833f, 1278.331f, 180.514f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 251, + false, + List( + Vector3(1133.814f, 1048.795f, 199.728f), + Vector3(1086.372f, 1035.111f, 191.631f), + Vector3(1038.929f, 1021.427f, 183.736f), + Vector3(1032.287f, 1019.512f, 182.166f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(252, false, List(Vector3(889.938f, 1124.978f, 179.34f), Vector3(966.938f, 1027.831f, 182.22f))) + ) + ZipLinePaths( + new ZipLinePath( + 253, + true, + List( + Vector3(933.672f, 524.813f, 137.773f), + Vector3(885.162f, 531.286f, 172.306f), + Vector3(835.681f, 537.888f, 161.853f), + Vector3(797.842f, 542.937f, 108.985f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 254, + true, + List( + Vector3(541.168f, 1083.547f, 110.794f), + Vector3(552.16f, 1043.303f, 211.598f), + Vector3(568.619f, 981.507f, 137.554f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 255, + true, + List( + Vector3(572.976f, 987.122f, 137.826f), + Vector3(560.277f, 1045.507f, 211.626f), + Vector3(551.469f, 1085.998f, 109.947f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 256, + true, + List( + Vector3(817.329f, 1476.263f, 112.635f), + Vector3(822.261f, 1473.141f, 116.242f), + Vector3(823.905f, 1472.1f, 116.783f), + Vector3(844.456f, 1459.09f, 211.505f), + Vector3(885.935f, 1433.592f, 132.763f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 257, + true, + List( + Vector3(880.19f, 1426.678f, 132.713f), + Vector3(822.094f, 1465.025f, 211.507f), + Vector3(819.173f, 1467.223f, 112.528f) + ) + ) + ) } ZipLines() diff --git a/pslogin/src/main/scala/zonemaps/Ugd05.scala b/pslogin/src/main/scala/zonemaps/Ugd05.scala index 7d0527f9..c2586ea3 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd05.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd05.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd05 { // Annwn Building10116() def Building10116(): Unit = { // Name: ceiling_bldg_a_10116 Type: ceiling_bldg_a GUID: 1, MapID: 10116 - LocalBuilding("ceiling_bldg_a_10116", 1, 10116, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1287.36f, 953.39f, 272.03f), Vector3(0f, 0f, 279f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10116", + 1, + 10116, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1287.36f, 953.39f, 272.03f), + Vector3(0f, 0f, 279f), + ceiling_bldg_a + ) + ) + ) LocalObject(477, Door.Constructor(Vector3(1278.85f, 936.597f, 279.315f)), owning_building_guid = 1) LocalObject(478, Door.Constructor(Vector3(1292.775f, 968.4059f, 273.809f)), owning_building_guid = 1) LocalObject(479, Door.Constructor(Vector3(1293.9f, 937.462f, 273.809f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd05 { // Annwn Building10014() def Building10014(): Unit = { // Name: ceiling_bldg_b_10014 Type: ceiling_bldg_b GUID: 2, MapID: 10014 - LocalBuilding("ceiling_bldg_b_10014", 2, 10014, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(978.8f, 980.41f, 242.69f), Vector3(0f, 0f, 317f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10014", + 2, + 10014, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(978.8f, 980.41f, 242.69f), + Vector3(0f, 0f, 317f), + ceiling_bldg_b + ) + ) + ) LocalObject(390, Door.Constructor(Vector3(982.511f, 975.5684f, 244.469f)), owning_building_guid = 2) LocalObject(395, Door.Constructor(Vector3(991.5198f, 991.0958f, 244.469f)), owning_building_guid = 2) } @@ -38,7 +62,19 @@ object Ugd05 { // Annwn Building10002() def Building10002(): Unit = { // Name: ceiling_bldg_b_10002 Type: ceiling_bldg_b GUID: 3, MapID: 10002 - LocalBuilding("ceiling_bldg_b_10002", 3, 10002, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1192.36f, 1130.14f, 256.99f), Vector3(0f, 0f, 0f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10002", + 3, + 10002, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1192.36f, 1130.14f, 256.99f), + Vector3(0f, 0f, 0f), + ceiling_bldg_b + ) + ) + ) LocalObject(444, Door.Constructor(Vector3(1194.375f, 1146.63f, 258.769f)), owning_building_guid = 3) LocalObject(447, Door.Constructor(Vector3(1198.376f, 1129.13f, 258.769f)), owning_building_guid = 3) } @@ -46,18 +82,46 @@ object Ugd05 { // Annwn Building10004() def Building10004(): Unit = { // Name: ceiling_bldg_d_10004 Type: ceiling_bldg_d GUID: 4, MapID: 10004 - LocalBuilding("ceiling_bldg_d_10004", 4, 10004, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1208.22f, 913.48f, 275.19f), Vector3(0f, 0f, 185f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10004", + 4, + 10004, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1208.22f, 913.48f, 275.19f), + Vector3(0f, 0f, 185f), + ceiling_bldg_d + ) + ) + ) LocalObject(441, Door.Constructor(Vector3(1190.778f, 911.9379f, 276.925f)), owning_building_guid = 4) LocalObject(449, Door.Constructor(Vector3(1206.678f, 930.9219f, 276.925f)), owning_building_guid = 4) LocalObject(451, Door.Constructor(Vector3(1209.728f, 896.0551f, 276.925f)), owning_building_guid = 4) LocalObject(461, Door.Constructor(Vector3(1225.645f, 914.9884f, 276.925f)), owning_building_guid = 4) - LocalObject(506, Painbox.Constructor(Vector3(1208.295f, 913.6905f, 283.498f), painbox_continuous), owning_building_guid = 4) + LocalObject( + 506, + Painbox.Constructor(Vector3(1208.295f, 913.6905f, 283.498f), painbox_continuous), + owning_building_guid = 4 + ) } Building10036() def Building10036(): Unit = { // Name: ceiling_bldg_g_10036 Type: ceiling_bldg_g GUID: 5, MapID: 10036 - LocalBuilding("ceiling_bldg_g_10036", 5, 10036, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1142.28f, 928.25f, 402.85f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10036", + 5, + 10036, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1142.28f, 928.25f, 402.85f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(429, Door.Constructor(Vector3(1134.296f, 911.74f, 404.629f)), owning_building_guid = 5) LocalObject(430, Door.Constructor(Vector3(1142.296f, 945.74f, 404.629f)), owning_building_guid = 5) } @@ -65,7 +129,19 @@ object Ugd05 { // Annwn Building10013() def Building10013(): Unit = { // Name: ceiling_bldg_i_10013 Type: ceiling_bldg_i GUID: 6, MapID: 10013 - LocalBuilding("ceiling_bldg_i_10013", 6, 10013, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(989.84f, 1093.24f, 286.02f), Vector3(0f, 0f, 0f), ceiling_bldg_i))) + LocalBuilding( + "ceiling_bldg_i_10013", + 6, + 10013, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(989.84f, 1093.24f, 286.02f), + Vector3(0f, 0f, 0f), + ceiling_bldg_i + ) + ) + ) LocalObject(383, Door.Constructor(Vector3(965.35f, 1096.756f, 287.799f)), owning_building_guid = 6) LocalObject(407, Door.Constructor(Vector3(1015.35f, 1096.756f, 287.799f)), owning_building_guid = 6) } @@ -73,7 +149,19 @@ object Ugd05 { // Annwn Building10117() def Building10117(): Unit = { // Name: ceiling_bldg_j_10117 Type: ceiling_bldg_j GUID: 7, MapID: 10117 - LocalBuilding("ceiling_bldg_j_10117", 7, 10117, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1013.22f, 1222.5f, 246.4f), Vector3(0f, 0f, 107f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10117", + 7, + 10117, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1013.22f, 1222.5f, 246.4f), + Vector3(0f, 0f, 107f), + ceiling_bldg_j + ) + ) + ) LocalObject(403, Door.Constructor(Vector3(1001.271f, 1218.864f, 248.179f)), owning_building_guid = 7) LocalObject(408, Door.Constructor(Vector3(1025.179f, 1226.173f, 248.179f)), owning_building_guid = 7) } @@ -81,7 +169,19 @@ object Ugd05 { // Annwn Building10114() def Building10114(): Unit = { // Name: ceiling_bldg_j_10114 Type: ceiling_bldg_j GUID: 8, MapID: 10114 - LocalBuilding("ceiling_bldg_j_10114", 8, 10114, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1048.57f, 1135.38f, 275.22f), Vector3(0f, 0f, 126f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10114", + 8, + 10114, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1048.57f, 1135.38f, 275.22f), + Vector3(0f, 0f, 126f), + ceiling_bldg_j + ) + ) + ) LocalObject(410, Door.Constructor(Vector3(1038.456f, 1128.052f, 276.999f)), owning_building_guid = 8) LocalObject(413, Door.Constructor(Vector3(1058.681f, 1142.746f, 276.999f)), owning_building_guid = 8) } @@ -89,7 +189,19 @@ object Ugd05 { // Annwn Building10115() def Building10115(): Unit = { // Name: ceiling_bldg_j_10115 Type: ceiling_bldg_j GUID: 9, MapID: 10115 - LocalBuilding("ceiling_bldg_j_10115", 9, 10115, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1128.81f, 798.93f, 197.93f), Vector3(0f, 0f, 0f), ceiling_bldg_j))) + LocalBuilding( + "ceiling_bldg_j_10115", + 9, + 10115, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1128.81f, 798.93f, 197.93f), + Vector3(0f, 0f, 0f), + ceiling_bldg_j + ) + ) + ) LocalObject(427, Door.Constructor(Vector3(1128.826f, 786.42f, 199.709f)), owning_building_guid = 9) LocalObject(428, Door.Constructor(Vector3(1128.826f, 811.42f, 199.709f)), owning_building_guid = 9) } @@ -97,7 +209,19 @@ object Ugd05 { // Annwn Building10037() def Building10037(): Unit = { // Name: ceiling_bldg_z_10037 Type: ceiling_bldg_z GUID: 10, MapID: 10037 - LocalBuilding("ceiling_bldg_z_10037", 10, 10037, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1015.45f, 1060.53f, 401.85f), Vector3(0f, 0f, 0f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10037", + 10, + 10037, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1015.45f, 1060.53f, 401.85f), + Vector3(0f, 0f, 0f), + ceiling_bldg_z + ) + ) + ) LocalObject(394, Door.Constructor(Vector3(990.96f, 1064.546f, 403.629f)), owning_building_guid = 10) LocalObject(411, Door.Constructor(Vector3(1047.96f, 1064.546f, 403.629f)), owning_building_guid = 10) } @@ -105,7 +229,19 @@ object Ugd05 { // Annwn Building10009() def Building10009(): Unit = { // Name: ceiling_bldg_z_10009 Type: ceiling_bldg_z GUID: 11, MapID: 10009 - LocalBuilding("ceiling_bldg_z_10009", 11, 10009, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1068.84f, 852.69f, 258.04f), Vector3(0f, 0f, 317f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10009", + 11, + 10009, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1068.84f, 852.69f, 258.04f), + Vector3(0f, 0f, 317f), + ceiling_bldg_z + ) + ) + ) LocalObject(412, Door.Constructor(Vector3(1053.668f, 872.3293f, 259.819f)), owning_building_guid = 11) LocalObject(420, Door.Constructor(Vector3(1095.355f, 833.4553f, 259.819f)), owning_building_guid = 11) } @@ -113,7 +249,19 @@ object Ugd05 { // Annwn Building10031() def Building10031(): Unit = { // Name: ceiling_bldg_z_10031 Type: ceiling_bldg_z GUID: 12, MapID: 10031 - LocalBuilding("ceiling_bldg_z_10031", 12, 10031, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1193.06f, 1036.8f, 234.92f), Vector3(0f, 0f, 0f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10031", + 12, + 10031, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1193.06f, 1036.8f, 234.92f), + Vector3(0f, 0f, 0f), + ceiling_bldg_z + ) + ) + ) LocalObject(435, Door.Constructor(Vector3(1168.57f, 1040.816f, 236.699f)), owning_building_guid = 12) LocalObject(460, Door.Constructor(Vector3(1225.57f, 1040.816f, 236.699f)), owning_building_guid = 12) } @@ -121,7 +269,19 @@ object Ugd05 { // Annwn Building10038() def Building10038(): Unit = { // Name: ground_bldg_a_10038 Type: ground_bldg_a GUID: 22, MapID: 10038 - LocalBuilding("ground_bldg_a_10038", 22, 10038, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1235.85f, 1129.52f, 189.73f), Vector3(0f, 0f, 54f), ground_bldg_a))) + LocalBuilding( + "ground_bldg_a_10038", + 22, + 10038, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1235.85f, 1129.52f, 189.73f), + Vector3(0f, 0f, 54f), + ground_bldg_a + ) + ) + ) LocalObject(456, Door.Constructor(Vector3(1221.054f, 1122.782f, 191.509f)), owning_building_guid = 22) LocalObject(471, Door.Constructor(Vector3(1242.228f, 1145.131f, 191.509f)), owning_building_guid = 22) } @@ -129,7 +289,19 @@ object Ugd05 { // Annwn Building10005() def Building10005(): Unit = { // Name: ground_bldg_b_10005 Type: ground_bldg_b GUID: 23, MapID: 10005 - LocalBuilding("ground_bldg_b_10005", 23, 10005, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1113.49f, 784.48f, 241.05f), Vector3(0f, 0f, 39f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10005", + 23, + 10005, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1113.49f, 784.48f, 241.05f), + Vector3(0f, 0f, 39f), + ground_bldg_b + ) + ) + ) LocalObject(422, Door.Constructor(Vector3(1104.678f, 798.5632f, 242.829f)), owning_building_guid = 23) LocalObject(425, Door.Constructor(Vector3(1118.801f, 787.4811f, 242.829f)), owning_building_guid = 23) LocalObject(426, Door.Constructor(Vector3(1128.761f, 804.5875f, 248.329f)), owning_building_guid = 23) @@ -138,7 +310,19 @@ object Ugd05 { // Annwn Building10213() def Building10213(): Unit = { // Name: ground_bldg_c_10213 Type: ground_bldg_c GUID: 24, MapID: 10213 - LocalBuilding("ground_bldg_c_10213", 24, 10213, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(996.82f, 984.32f, 310.7f), Vector3(0f, 0f, 192f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10213", + 24, + 10213, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(996.82f, 984.32f, 310.7f), + Vector3(0f, 0f, 192f), + ground_bldg_c + ) + ) + ) LocalObject(377, Door.Constructor(Vector3(949.452f, 985.9983f, 312.479f)), owning_building_guid = 24) LocalObject(380, Door.Constructor(Vector3(955.8972f, 955.6757f, 312.479f)), owning_building_guid = 24) LocalObject(400, Door.Constructor(Vector3(999.1253f, 980.737f, 312.479f)), owning_building_guid = 24) @@ -147,7 +331,19 @@ object Ugd05 { // Annwn Building10006() def Building10006(): Unit = { // Name: ground_bldg_c_10006 Type: ground_bldg_c GUID: 25, MapID: 10006 - LocalBuilding("ground_bldg_c_10006", 25, 10006, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1260.71f, 1059.42f, 379.18f), Vector3(0f, 0f, 192f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10006", + 25, + 10006, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1260.71f, 1059.42f, 379.18f), + Vector3(0f, 0f, 192f), + ground_bldg_c + ) + ) + ) LocalObject(453, Door.Constructor(Vector3(1213.342f, 1061.098f, 380.959f)), owning_building_guid = 25) LocalObject(455, Door.Constructor(Vector3(1219.787f, 1030.776f, 380.959f)), owning_building_guid = 25) LocalObject(475, Door.Constructor(Vector3(1263.015f, 1055.837f, 380.959f)), owning_building_guid = 25) @@ -156,7 +352,19 @@ object Ugd05 { // Annwn Building10001() def Building10001(): Unit = { // Name: ground_bldg_d_10001 Type: ground_bldg_d GUID: 26, MapID: 10001 - LocalBuilding("ground_bldg_d_10001", 26, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1193.17f, 1133.19f, 320.03f), Vector3(0f, 0f, 0f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10001", + 26, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1193.17f, 1133.19f, 320.03f), + Vector3(0f, 0f, 0f), + ground_bldg_d + ) + ) + ) LocalObject(439, Door.Constructor(Vector3(1175.68f, 1133.206f, 321.765f)), owning_building_guid = 26) LocalObject(442, Door.Constructor(Vector3(1193.186f, 1115.68f, 321.765f)), owning_building_guid = 26) LocalObject(443, Door.Constructor(Vector3(1193.186f, 1150.68f, 321.765f)), owning_building_guid = 26) @@ -166,7 +374,19 @@ object Ugd05 { // Annwn Building10020() def Building10020(): Unit = { // Name: ground_bldg_e_10020 Type: ground_bldg_e GUID: 27, MapID: 10020 - LocalBuilding("ground_bldg_e_10020", 27, 10020, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(978.04f, 851.77f, 235.98f), Vector3(0f, 0f, 0f), ground_bldg_e))) + LocalBuilding( + "ground_bldg_e_10020", + 27, + 10020, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(978.04f, 851.77f, 235.98f), + Vector3(0f, 0f, 0f), + ground_bldg_e + ) + ) + ) LocalObject(384, Door.Constructor(Vector3(966.024f, 850.78f, 237.759f)), owning_building_guid = 27) LocalObject(389, Door.Constructor(Vector3(982.024f, 884.28f, 243.259f)), owning_building_guid = 27) LocalObject(399, Door.Constructor(Vector3(997.05f, 879.786f, 237.759f)), owning_building_guid = 27) @@ -176,7 +396,19 @@ object Ugd05 { // Annwn Building10007() def Building10007(): Unit = { // Name: ground_bldg_f_10007 Type: ground_bldg_f GUID: 28, MapID: 10007 - LocalBuilding("ground_bldg_f_10007", 28, 10007, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1090.77f, 844.07f, 321.32f), Vector3(0f, 0f, 325f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10007", + 28, + 10007, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1090.77f, 844.07f, 321.32f), + Vector3(0f, 0f, 325f), + ground_bldg_f + ) + ) + ) LocalObject(415, Door.Constructor(Vector3(1062.523f, 839.4526f, 323.099f)), owning_building_guid = 28) LocalObject(423, Door.Constructor(Vector3(1116.939f, 860.5503f, 323.099f)), owning_building_guid = 28) } @@ -184,7 +416,19 @@ object Ugd05 { // Annwn Building10022() def Building10022(): Unit = { // Name: ground_bldg_f_10022 Type: ground_bldg_f GUID: 29, MapID: 10022 - LocalBuilding("ground_bldg_f_10022", 29, 10022, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1123.7f, 1147.15f, 234.98f), Vector3(0f, 0f, 346f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10022", + 29, + 10022, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1123.7f, 1147.15f, 234.98f), + Vector3(0f, 0f, 346f), + ground_bldg_f + ) + ) + ) LocalObject(421, Door.Constructor(Vector3(1098.984f, 1132.717f, 236.759f)), owning_building_guid = 29) LocalObject(431, Door.Constructor(Vector3(1142.225f, 1171.914f, 236.759f)), owning_building_guid = 29) } @@ -192,7 +436,19 @@ object Ugd05 { // Annwn Building10024() def Building10024(): Unit = { // Name: ground_bldg_i_10024 Type: ground_bldg_i GUID: 30, MapID: 10024 - LocalBuilding("ground_bldg_i_10024", 30, 10024, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1218.75f, 1051.94f, 287.43f), Vector3(0f, 0f, 24f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10024", + 30, + 10024, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1218.75f, 1051.94f, 287.43f), + Vector3(0f, 0f, 24f), + ground_bldg_i + ) + ) + ) LocalObject(445, Door.Constructor(Vector3(1194.947f, 1045.191f, 289.209f)), owning_building_guid = 30) LocalObject(470, Door.Constructor(Vector3(1240.625f, 1065.528f, 289.209f)), owning_building_guid = 30) } @@ -200,7 +456,19 @@ object Ugd05 { // Annwn Building10039() def Building10039(): Unit = { // Name: ground_bldg_z_10039 Type: ground_bldg_z GUID: 31, MapID: 10039 - LocalBuilding("ground_bldg_z_10039", 31, 10039, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(954.47f, 849.74f, 178.4f), Vector3(0f, 0f, 293f), ground_bldg_z))) + LocalBuilding( + "ground_bldg_z_10039", + 31, + 10039, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(954.47f, 849.74f, 178.4f), + Vector3(0f, 0f, 293f), + ground_bldg_z + ) + ) + ) LocalObject(371, Door.Constructor(Vector3(935.0992f, 848.0531f, 191.179f)), owning_building_guid = 31) LocalObject(372, Door.Constructor(Vector3(937.5516f, 869.1636f, 180.179f)), owning_building_guid = 31) LocalObject(375, Door.Constructor(Vector3(944.9157f, 872.2894f, 196.679f)), owning_building_guid = 31) @@ -214,42 +482,112 @@ object Ugd05 { // Annwn Building10209() def Building10209(): Unit = { // Name: NW_Redoubt Type: redoubt GUID: 32, MapID: 10209 - LocalBuilding("NW_Redoubt", 32, 10209, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(887.44f, 1064.63f, 163.23f), Vector3(0f, 0f, 4f), redoubt))) - LocalObject(552, CaptureTerminal.Constructor(Vector3(885.9368f, 1085.841f, 173.714f), vanu_control_console), owning_building_guid = 32) + LocalBuilding( + "NW_Redoubt", + 32, + 10209, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(887.44f, 1064.63f, 163.23f), Vector3(0f, 0f, 4f), redoubt) + ) + ) + LocalObject( + 552, + CaptureTerminal.Constructor(Vector3(885.9368f, 1085.841f, 173.714f), vanu_control_console), + owning_building_guid = 32 + ) LocalObject(362, Door.Constructor(Vector3(869.9915f, 1063.426f, 164.965f)), owning_building_guid = 32) LocalObject(363, Door.Constructor(Vector3(874.3493f, 1075.823f, 175.009f)), owning_building_guid = 32) LocalObject(364, Door.Constructor(Vector3(882.5875f, 1076.395f, 174.989f)), owning_building_guid = 32) LocalObject(365, Door.Constructor(Vector3(890.5857f, 1076.987f, 174.989f)), owning_building_guid = 32) LocalObject(366, Door.Constructor(Vector3(898.8093f, 1077.567f, 175.009f)), owning_building_guid = 32) LocalObject(367, Door.Constructor(Vector3(904.9062f, 1065.867f, 164.965f)), owning_building_guid = 32) - LocalObject(559, Terminal.Constructor(Vector3(886.1505f, 1083.3f, 163.1835f), vanu_equipment_term), owning_building_guid = 32) - LocalObject(560, Terminal.Constructor(Vector3(888.6063f, 1046.158f, 163.1858f), vanu_equipment_term), owning_building_guid = 32) - LocalObject(516, SpawnTube.Constructor(Vector3(887.44f, 1064.63f, 163.23f), Vector3(0, 0, 176)), owning_building_guid = 32) - LocalObject(503, Painbox.Constructor(Vector3(887.4609f, 1064.923f, 171.019f), painbox_continuous), owning_building_guid = 32) + LocalObject( + 559, + Terminal.Constructor(Vector3(886.1505f, 1083.3f, 163.1835f), vanu_equipment_term), + owning_building_guid = 32 + ) + LocalObject( + 560, + Terminal.Constructor(Vector3(888.6063f, 1046.158f, 163.1858f), vanu_equipment_term), + owning_building_guid = 32 + ) + LocalObject( + 516, + SpawnTube.Constructor(Vector3(887.44f, 1064.63f, 163.23f), Vector3(0, 0, 176)), + owning_building_guid = 32 + ) + LocalObject( + 503, + Painbox.Constructor(Vector3(887.4609f, 1064.923f, 171.019f), painbox_continuous), + owning_building_guid = 32 + ) } Building10210() def Building10210(): Unit = { // Name: SE_Redoubt Type: redoubt GUID: 33, MapID: 10210 - LocalBuilding("SE_Redoubt", 33, 10210, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1157.92f, 849.04f, 158.73f), Vector3(0f, 0f, 310f), redoubt))) - LocalObject(555, CaptureTerminal.Constructor(Vector3(1174.196f, 862.7235f, 169.214f), vanu_control_console), owning_building_guid = 33) + LocalBuilding( + "SE_Redoubt", + 33, + 10210, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1157.92f, 849.04f, 158.73f), Vector3(0f, 0f, 310f), redoubt) + ) + ) + LocalObject( + 555, + CaptureTerminal.Constructor(Vector3(1174.196f, 862.7235f, 169.214f), vanu_control_console), + owning_building_guid = 33 + ) LocalObject(432, Door.Constructor(Vector3(1146.69f, 862.4484f, 160.465f)), owning_building_guid = 33) LocalObject(433, Door.Constructor(Vector3(1159.281f, 866.2097f, 170.509f)), owning_building_guid = 33) LocalObject(434, Door.Constructor(Vector3(1164.586f, 859.8812f, 170.489f)), owning_building_guid = 33) LocalObject(436, Door.Constructor(Vector3(1169.188f, 835.6368f, 160.465f)), owning_building_guid = 33) LocalObject(437, Door.Constructor(Vector3(1169.766f, 853.7581f, 170.489f)), owning_building_guid = 33) LocalObject(438, Door.Constructor(Vector3(1175.069f, 847.446f, 170.509f)), owning_building_guid = 33) - LocalObject(586, Terminal.Constructor(Vector3(1143.661f, 837.2388f, 158.6858f), vanu_equipment_term), owning_building_guid = 33) - LocalObject(590, Terminal.Constructor(Vector3(1172.266f, 861.0569f, 158.6835f), vanu_equipment_term), owning_building_guid = 33) - LocalObject(517, SpawnTube.Constructor(Vector3(1157.92f, 849.04f, 158.73f), Vector3(0, 0, 230)), owning_building_guid = 33) - LocalObject(505, Painbox.Constructor(Vector3(1158.169f, 849.1951f, 166.519f), painbox_continuous), owning_building_guid = 33) + LocalObject( + 586, + Terminal.Constructor(Vector3(1143.661f, 837.2388f, 158.6858f), vanu_equipment_term), + owning_building_guid = 33 + ) + LocalObject( + 590, + Terminal.Constructor(Vector3(1172.266f, 861.0569f, 158.6835f), vanu_equipment_term), + owning_building_guid = 33 + ) + LocalObject( + 517, + SpawnTube.Constructor(Vector3(1157.92f, 849.04f, 158.73f), Vector3(0, 0, 230)), + owning_building_guid = 33 + ) + LocalObject( + 505, + Painbox.Constructor(Vector3(1158.169f, 849.1951f, 166.519f), painbox_continuous), + owning_building_guid = 33 + ) } Building10012() def Building10012(): Unit = { // Name: NW_Stasis Type: vanu_control_point GUID: 67, MapID: 10012 - LocalBuilding("NW_Stasis", 67, 10012, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(995.33f, 1106.69f, 329.62f), Vector3(0f, 0f, 222f), vanu_control_point))) - LocalObject(554, CaptureTerminal.Constructor(Vector3(991.6441f, 1106.048f, 360.104f), vanu_control_console), owning_building_guid = 67) + LocalBuilding( + "NW_Stasis", + 67, + 10012, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(995.33f, 1106.69f, 329.62f), + Vector3(0f, 0f, 222f), + vanu_control_point + ) + ) + ) + LocalObject( + 554, + CaptureTerminal.Constructor(Vector3(991.6441f, 1106.048f, 360.104f), vanu_control_console), + owning_building_guid = 67 + ) LocalObject(374, Door.Constructor(Vector3(943.5559f, 1095.08f, 331.399f)), owning_building_guid = 67) LocalObject(391, Door.Constructor(Vector3(983.5845f, 1098.827f, 336.34f)), owning_building_guid = 67) LocalObject(392, Door.Constructor(Vector3(984.4945f, 1115.759f, 336.34f)), owning_building_guid = 67) @@ -262,27 +600,99 @@ object Ugd05 { // Annwn LocalObject(404, Door.Constructor(Vector3(1001.426f, 1114.849f, 336.34f)), owning_building_guid = 67) LocalObject(406, Door.Constructor(Vector3(1006.808f, 1103.217f, 361.399f)), owning_building_guid = 67) LocalObject(409, Door.Constructor(Vector3(1030.148f, 1119.18f, 331.399f)), owning_building_guid = 67) - LocalObject(573, Terminal.Constructor(Vector3(982.1874f, 1105.339f, 334.633f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(574, Terminal.Constructor(Vector3(982.3665f, 1109.244f, 334.637f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(576, Terminal.Constructor(Vector3(989.9484f, 1096.727f, 334.637f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(577, Terminal.Constructor(Vector3(991.0513f, 1117.164f, 334.633f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(578, Terminal.Constructor(Vector3(993.916f, 1096.515f, 334.633f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(579, Terminal.Constructor(Vector3(995.0189f, 1116.953f, 334.637f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(580, Terminal.Constructor(Vector3(1002.601f, 1104.437f, 334.637f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(581, Terminal.Constructor(Vector3(1002.813f, 1108.404f, 334.633f), vanu_equipment_term), owning_building_guid = 67) - LocalObject(615, SpawnTube.Constructor(Vector3(992.5055f, 1106.838f, 334.759f), Vector3(0, 0, 318)), owning_building_guid = 67) - LocalObject(504, Painbox.Constructor(Vector3(992.5176f, 1107.254f, 343.9618f), painbox_continuous), owning_building_guid = 67) - LocalObject(508, Painbox.Constructor(Vector3(981.7784f, 1096.659f, 338.51f), painbox_door_radius_continuous), owning_building_guid = 67) - LocalObject(509, Painbox.Constructor(Vector3(983.5879f, 1117.207f, 338.51f), painbox_door_radius_continuous), owning_building_guid = 67) - LocalObject(510, Painbox.Constructor(Vector3(1001.82f, 1096.431f, 338.51f), painbox_door_radius_continuous), owning_building_guid = 67) - LocalObject(511, Painbox.Constructor(Vector3(1003.214f, 1116.336f, 337.91f), painbox_door_radius_continuous), owning_building_guid = 67) + LocalObject( + 573, + Terminal.Constructor(Vector3(982.1874f, 1105.339f, 334.633f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 574, + Terminal.Constructor(Vector3(982.3665f, 1109.244f, 334.637f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 576, + Terminal.Constructor(Vector3(989.9484f, 1096.727f, 334.637f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 577, + Terminal.Constructor(Vector3(991.0513f, 1117.164f, 334.633f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 578, + Terminal.Constructor(Vector3(993.916f, 1096.515f, 334.633f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 579, + Terminal.Constructor(Vector3(995.0189f, 1116.953f, 334.637f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 580, + Terminal.Constructor(Vector3(1002.601f, 1104.437f, 334.637f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 581, + Terminal.Constructor(Vector3(1002.813f, 1108.404f, 334.633f), vanu_equipment_term), + owning_building_guid = 67 + ) + LocalObject( + 615, + SpawnTube.Constructor(Vector3(992.5055f, 1106.838f, 334.759f), Vector3(0, 0, 318)), + owning_building_guid = 67 + ) + LocalObject( + 504, + Painbox.Constructor(Vector3(992.5176f, 1107.254f, 343.9618f), painbox_continuous), + owning_building_guid = 67 + ) + LocalObject( + 508, + Painbox.Constructor(Vector3(981.7784f, 1096.659f, 338.51f), painbox_door_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 509, + Painbox.Constructor(Vector3(983.5879f, 1117.207f, 338.51f), painbox_door_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 510, + Painbox.Constructor(Vector3(1001.82f, 1096.431f, 338.51f), painbox_door_radius_continuous), + owning_building_guid = 67 + ) + LocalObject( + 511, + Painbox.Constructor(Vector3(1003.214f, 1116.336f, 337.91f), painbox_door_radius_continuous), + owning_building_guid = 67 + ) } Building10003() def Building10003(): Unit = { // Name: SE_Stasis Type: vanu_control_point GUID: 68, MapID: 10003 - LocalBuilding("SE_Stasis", 68, 10003, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1232.73f, 922.42f, 322.62f), Vector3(0f, 0f, 224f), vanu_control_point))) - LocalObject(557, CaptureTerminal.Constructor(Vector3(1229.069f, 921.6494f, 353.104f), vanu_control_console), owning_building_guid = 68) + LocalBuilding( + "SE_Stasis", + 68, + 10003, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1232.73f, 922.42f, 322.62f), + Vector3(0f, 0f, 224f), + vanu_control_point + ) + ) + ) + LocalObject( + 557, + CaptureTerminal.Constructor(Vector3(1229.069f, 921.6494f, 353.104f), vanu_control_console), + owning_building_guid = 68 + ) LocalObject(440, Door.Constructor(Vector3(1181.393f, 909.0106f, 324.399f)), owning_building_guid = 68) LocalObject(457, Door.Constructor(Vector3(1221.266f, 914.1519f, 329.34f)), owning_building_guid = 68) LocalObject(458, Door.Constructor(Vector3(1221.585f, 931.1053f, 329.34f)), owning_building_guid = 68) @@ -295,26 +705,94 @@ object Ugd05 { // Annwn LocalObject(469, Door.Constructor(Vector3(1238.538f, 930.7868f, 329.34f)), owning_building_guid = 68) LocalObject(472, Door.Constructor(Vector3(1244.322f, 919.3499f, 354.399f)), owning_building_guid = 68) LocalObject(476, Door.Constructor(Vector3(1267.091f, 936.1172f, 324.399f)), owning_building_guid = 68) - LocalObject(594, Terminal.Constructor(Vector3(1219.643f, 920.611f, 327.633f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(595, Terminal.Constructor(Vector3(1219.685f, 924.5197f, 327.637f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(596, Terminal.Constructor(Vector3(1227.699f, 912.2751f, 327.637f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(597, Terminal.Constructor(Vector3(1228.088f, 932.7386f, 327.633f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(598, Terminal.Constructor(Vector3(1231.672f, 912.2022f, 327.633f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(599, Terminal.Constructor(Vector3(1232.061f, 932.6658f, 327.637f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(601, Terminal.Constructor(Vector3(1240.076f, 920.4219f, 327.637f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(602, Terminal.Constructor(Vector3(1240.148f, 924.3945f, 327.633f), vanu_equipment_term), owning_building_guid = 68) - LocalObject(616, SpawnTube.Constructor(Vector3(1229.902f, 922.4694f, 327.759f), Vector3(0, 0, 316)), owning_building_guid = 68) - LocalObject(507, Painbox.Constructor(Vector3(1229.9f, 922.8856f, 336.9618f), painbox_continuous), owning_building_guid = 68) - LocalObject(512, Painbox.Constructor(Vector3(1219.537f, 911.9223f, 331.51f), painbox_door_radius_continuous), owning_building_guid = 68) - LocalObject(513, Painbox.Constructor(Vector3(1220.628f, 932.5208f, 331.51f), painbox_door_radius_continuous), owning_building_guid = 68) - LocalObject(514, Painbox.Constructor(Vector3(1239.574f, 912.394f, 331.51f), painbox_door_radius_continuous), owning_building_guid = 68) - LocalObject(515, Painbox.Constructor(Vector3(1240.272f, 932.335f, 330.91f), painbox_door_radius_continuous), owning_building_guid = 68) + LocalObject( + 594, + Terminal.Constructor(Vector3(1219.643f, 920.611f, 327.633f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 595, + Terminal.Constructor(Vector3(1219.685f, 924.5197f, 327.637f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 596, + Terminal.Constructor(Vector3(1227.699f, 912.2751f, 327.637f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 597, + Terminal.Constructor(Vector3(1228.088f, 932.7386f, 327.633f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 598, + Terminal.Constructor(Vector3(1231.672f, 912.2022f, 327.633f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 599, + Terminal.Constructor(Vector3(1232.061f, 932.6658f, 327.637f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 601, + Terminal.Constructor(Vector3(1240.076f, 920.4219f, 327.637f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 602, + Terminal.Constructor(Vector3(1240.148f, 924.3945f, 327.633f), vanu_equipment_term), + owning_building_guid = 68 + ) + LocalObject( + 616, + SpawnTube.Constructor(Vector3(1229.902f, 922.4694f, 327.759f), Vector3(0, 0, 316)), + owning_building_guid = 68 + ) + LocalObject( + 507, + Painbox.Constructor(Vector3(1229.9f, 922.8856f, 336.9618f), painbox_continuous), + owning_building_guid = 68 + ) + LocalObject( + 512, + Painbox.Constructor(Vector3(1219.537f, 911.9223f, 331.51f), painbox_door_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 513, + Painbox.Constructor(Vector3(1220.628f, 932.5208f, 331.51f), painbox_door_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 514, + Painbox.Constructor(Vector3(1239.574f, 912.394f, 331.51f), painbox_door_radius_continuous), + owning_building_guid = 68 + ) + LocalObject( + 515, + Painbox.Constructor(Vector3(1240.272f, 932.335f, 330.91f), painbox_door_radius_continuous), + owning_building_guid = 68 + ) } Building10000() def Building10000(): Unit = { // Name: Core Type: vanu_core GUID: 69, MapID: 10000 - LocalBuilding("Core", 69, 10000, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1093.35f, 991.55f, 292.73f), Vector3(0f, 0f, 0f), vanu_core))) + LocalBuilding( + "Core", + 69, + 10000, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1093.35f, 991.55f, 292.73f), + Vector3(0f, 0f, 0f), + vanu_core + ) + ) + ) LocalObject(414, Door.Constructor(Vector3(1060.857f, 979.572f, 299.518f)), owning_building_guid = 69) LocalObject(416, Door.Constructor(Vector3(1089.328f, 951.057f, 299.518f)), owning_building_guid = 69) LocalObject(417, Door.Constructor(Vector3(1089.328f, 951.057f, 304.518f)), owning_building_guid = 69) @@ -326,8 +804,24 @@ object Ugd05 { // Annwn Building10044() def Building10044(): Unit = { // Name: NW_ATPlant Type: vanu_vehicle_station GUID: 96, MapID: 10044 - LocalBuilding("NW_ATPlant", 96, 10044, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(930.3f, 1141.53f, 164.95f), Vector3(0f, 0f, 82f), vanu_vehicle_station))) - LocalObject(553, CaptureTerminal.Constructor(Vector3(943.9782f, 1085.256f, 195.434f), vanu_control_console), owning_building_guid = 96) + LocalBuilding( + "NW_ATPlant", + 96, + 10044, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(930.3f, 1141.53f, 164.95f), + Vector3(0f, 0f, 82f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 553, + CaptureTerminal.Constructor(Vector3(943.9782f, 1085.256f, 195.434f), vanu_control_console), + owning_building_guid = 96 + ) LocalObject(368, Door.Constructor(Vector3(914.9034f, 1139.01f, 166.729f)), owning_building_guid = 96) LocalObject(369, Door.Constructor(Vector3(919.5815f, 1114.117f, 186.641f)), owning_building_guid = 96) LocalObject(370, Door.Constructor(Vector3(933.1416f, 1096.054f, 196.729f)), owning_building_guid = 96) @@ -337,21 +831,75 @@ object Ugd05 { // Annwn LocalObject(385, Door.Constructor(Vector3(970.8724f, 1131.144f, 186.653f)), owning_building_guid = 96) LocalObject(388, Door.Constructor(Vector3(978.7827f, 1130.033f, 166.729f)), owning_building_guid = 96) LocalObject(481, Door.Constructor(Vector3(938.5251f, 1075.059f, 171.583f)), owning_building_guid = 96) - LocalObject(547, Terminal.Constructor(Vector3(927.406f, 1122.807f, 184.867f), vanu_air_vehicle_term), owning_building_guid = 96) - LocalObject(617, VehicleSpawnPad.Constructor(Vector3(935.6392f, 1126.141f, 184.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 8)), owning_building_guid = 96, terminal_guid = 547) - LocalObject(548, Terminal.Constructor(Vector3(962.4658f, 1117.888f, 184.867f), vanu_air_vehicle_term), owning_building_guid = 96) - LocalObject(619, VehicleSpawnPad.Constructor(Vector3(955.4604f, 1123.355f, 184.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 8)), owning_building_guid = 96, terminal_guid = 548) - LocalObject(562, Terminal.Constructor(Vector3(932.0184f, 1115.15f, 167.45f), vanu_equipment_term), owning_building_guid = 96) - LocalObject(567, Terminal.Constructor(Vector3(955.7848f, 1111.81f, 167.45f), vanu_equipment_term), owning_building_guid = 96) - LocalObject(623, Terminal.Constructor(Vector3(943.2768f, 1108.05f, 169.95f), vanu_vehicle_term), owning_building_guid = 96) - LocalObject(618, VehicleSpawnPad.Constructor(Vector3(941.0632f, 1093.076f, 167.355f), vanu_vehicle_creation_pad, Vector3(0, 0, 188)), owning_building_guid = 96, terminal_guid = 623) + LocalObject( + 547, + Terminal.Constructor(Vector3(927.406f, 1122.807f, 184.867f), vanu_air_vehicle_term), + owning_building_guid = 96 + ) + LocalObject( + 617, + VehicleSpawnPad + .Constructor(Vector3(935.6392f, 1126.141f, 184.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 8)), + owning_building_guid = 96, + terminal_guid = 547 + ) + LocalObject( + 548, + Terminal.Constructor(Vector3(962.4658f, 1117.888f, 184.867f), vanu_air_vehicle_term), + owning_building_guid = 96 + ) + LocalObject( + 619, + VehicleSpawnPad + .Constructor(Vector3(955.4604f, 1123.355f, 184.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 8)), + owning_building_guid = 96, + terminal_guid = 548 + ) + LocalObject( + 562, + Terminal.Constructor(Vector3(932.0184f, 1115.15f, 167.45f), vanu_equipment_term), + owning_building_guid = 96 + ) + LocalObject( + 567, + Terminal.Constructor(Vector3(955.7848f, 1111.81f, 167.45f), vanu_equipment_term), + owning_building_guid = 96 + ) + LocalObject( + 623, + Terminal.Constructor(Vector3(943.2768f, 1108.05f, 169.95f), vanu_vehicle_term), + owning_building_guid = 96 + ) + LocalObject( + 618, + VehicleSpawnPad + .Constructor(Vector3(941.0632f, 1093.076f, 167.355f), vanu_vehicle_creation_pad, Vector3(0, 0, 188)), + owning_building_guid = 96, + terminal_guid = 623 + ) } Building10197() def Building10197(): Unit = { // Name: SE_ATPlant Type: vanu_vehicle_station GUID: 97, MapID: 10197 - LocalBuilding("SE_ATPlant", 97, 10197, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1244.82f, 841.97f, 159.95f), Vector3(0f, 0f, 274f), vanu_vehicle_station))) - LocalObject(556, CaptureTerminal.Constructor(Vector3(1219.74f, 894.1707f, 190.434f), vanu_control_console), owning_building_guid = 97) + LocalBuilding( + "SE_ATPlant", + 97, + 10197, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1244.82f, 841.97f, 159.95f), + Vector3(0f, 0f, 274f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 556, + CaptureTerminal.Constructor(Vector3(1219.74f, 894.1707f, 190.434f), vanu_control_console), + owning_building_guid = 97 + ) LocalObject(446, Door.Constructor(Vector3(1195.006f, 843.136f, 161.729f)), owning_building_guid = 97) LocalObject(448, Door.Constructor(Vector3(1202.975f, 843.6932f, 181.653f)), owning_building_guid = 97) LocalObject(450, Door.Constructor(Vector3(1208.165f, 884.1538f, 191.729f)), owning_building_guid = 97) @@ -361,119 +909,381 @@ object Ugd05 { // Annwn LocalObject(473, Door.Constructor(Vector3(1249.605f, 871.0125f, 181.641f)), owning_building_guid = 97) LocalObject(474, Door.Constructor(Vector3(1259.356f, 847.6357f, 161.729f)), owning_building_guid = 97) LocalObject(482, Door.Constructor(Vector3(1222.955f, 905.278f, 166.583f)), owning_building_guid = 97) - LocalObject(549, Terminal.Constructor(Vector3(1208.442f, 858.4074f, 179.867f), vanu_air_vehicle_term), owning_building_guid = 97) - LocalObject(620, VehicleSpawnPad.Constructor(Vector3(1216.431f, 854.5162f, 179.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 176)), owning_building_guid = 97, terminal_guid = 549) - LocalObject(550, Terminal.Constructor(Vector3(1243.758f, 860.886f, 179.867f), vanu_air_vehicle_term), owning_building_guid = 97) - LocalObject(622, VehicleSpawnPad.Constructor(Vector3(1236.398f, 855.9124f, 179.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 176)), owning_building_guid = 97, terminal_guid = 550) - LocalObject(593, Terminal.Constructor(Vector3(1213.713f, 865.7419f, 162.45f), vanu_equipment_term), owning_building_guid = 97) - LocalObject(600, Terminal.Constructor(Vector3(1237.654f, 867.4161f, 162.45f), vanu_equipment_term), owning_building_guid = 97) - LocalObject(624, Terminal.Constructor(Vector3(1225.166f, 872.0201f, 164.95f), vanu_vehicle_term), owning_building_guid = 97) - LocalObject(621, VehicleSpawnPad.Constructor(Vector3(1224.218f, 887.1278f, 162.355f), vanu_vehicle_creation_pad, Vector3(0, 0, -4)), owning_building_guid = 97, terminal_guid = 624) + LocalObject( + 549, + Terminal.Constructor(Vector3(1208.442f, 858.4074f, 179.867f), vanu_air_vehicle_term), + owning_building_guid = 97 + ) + LocalObject( + 620, + VehicleSpawnPad + .Constructor(Vector3(1216.431f, 854.5162f, 179.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 176)), + owning_building_guid = 97, + terminal_guid = 549 + ) + LocalObject( + 550, + Terminal.Constructor(Vector3(1243.758f, 860.886f, 179.867f), vanu_air_vehicle_term), + owning_building_guid = 97 + ) + LocalObject( + 622, + VehicleSpawnPad + .Constructor(Vector3(1236.398f, 855.9124f, 179.866f), vanu_vehicle_creation_pad, Vector3(0, 0, 176)), + owning_building_guid = 97, + terminal_guid = 550 + ) + LocalObject( + 593, + Terminal.Constructor(Vector3(1213.713f, 865.7419f, 162.45f), vanu_equipment_term), + owning_building_guid = 97 + ) + LocalObject( + 600, + Terminal.Constructor(Vector3(1237.654f, 867.4161f, 162.45f), vanu_equipment_term), + owning_building_guid = 97 + ) + LocalObject( + 624, + Terminal.Constructor(Vector3(1225.166f, 872.0201f, 164.95f), vanu_vehicle_term), + owning_building_guid = 97 + ) + LocalObject( + 621, + VehicleSpawnPad + .Constructor(Vector3(1224.218f, 887.1278f, 162.355f), vanu_vehicle_creation_pad, Vector3(0, 0, -4)), + owning_building_guid = 97, + terminal_guid = 624 + ) } Building10104() def Building10104(): Unit = { // Name: GW_Cavern5_W Type: warpgate_cavern GUID: 98, MapID: 10104 - LocalBuilding("GW_Cavern5_W", 98, 10104, FoundationBuilder(WarpGate.Structure(Vector3(253.29f, 1123.65f, 220.95f)))) + LocalBuilding( + "GW_Cavern5_W", + 98, + 10104, + FoundationBuilder(WarpGate.Structure(Vector3(253.29f, 1123.65f, 220.95f))) + ) } Building10105() def Building10105(): Unit = { // Name: GW_Cavern5_S Type: warpgate_cavern GUID: 99, MapID: 10105 - LocalBuilding("GW_Cavern5_S", 99, 10105, FoundationBuilder(WarpGate.Structure(Vector3(1018.63f, 190.66f, 230.9f)))) + LocalBuilding( + "GW_Cavern5_S", + 99, + 10105, + FoundationBuilder(WarpGate.Structure(Vector3(1018.63f, 190.66f, 230.9f))) + ) } Building10107() def Building10107(): Unit = { // Name: GW_Cavern5_N Type: warpgate_cavern GUID: 100, MapID: 10107 - LocalBuilding("GW_Cavern5_N", 100, 10107, FoundationBuilder(WarpGate.Structure(Vector3(1217.45f, 1790.01f, 231.29f)))) + LocalBuilding( + "GW_Cavern5_N", + 100, + 10107, + FoundationBuilder(WarpGate.Structure(Vector3(1217.45f, 1790.01f, 231.29f))) + ) } Building10106() def Building10106(): Unit = { // Name: GW_Cavern5_E Type: warpgate_cavern GUID: 101, MapID: 10106 - LocalBuilding("GW_Cavern5_E", 101, 10106, FoundationBuilder(WarpGate.Structure(Vector3(1860.2f, 893.34f, 231.08f)))) + LocalBuilding( + "GW_Cavern5_E", + 101, + 10106, + FoundationBuilder(WarpGate.Structure(Vector3(1860.2f, 893.34f, 231.08f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(558, Terminal.Constructor(Vector3(878.19f, 1054.2f, 163.19f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(561, Terminal.Constructor(Vector3(896.75f, 1075.17f, 163.19f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(563, Terminal.Constructor(Vector3(941.54f, 850.15f, 189.36f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(564, Terminal.Constructor(Vector3(945.16f, 843.7f, 183.9f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(565, Terminal.Constructor(Vector3(950.41f, 852.49f, 178.37f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(566, Terminal.Constructor(Vector3(953.54f, 844.73f, 178.41f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(568, Terminal.Constructor(Vector3(956.79f, 837.39f, 178.38f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(569, Terminal.Constructor(Vector3(963.51f, 855.72f, 183.88f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(570, Terminal.Constructor(Vector3(967.12f, 849.74f, 189.34f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(571, Terminal.Constructor(Vector3(979.19f, 862.66f, 241.45f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(572, Terminal.Constructor(Vector3(979.19f, 873.02f, 241.48f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(575, Terminal.Constructor(Vector3(989f, 872.94f, 235.95f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(582, Terminal.Constructor(Vector3(1008.85f, 1236.36f, 246.4f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(583, Terminal.Constructor(Vector3(1057.9f, 849.87f, 253.23f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(584, Terminal.Constructor(Vector3(1076.5f, 869.5f, 253.22f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(585, Terminal.Constructor(Vector3(1113.28f, 798.92f, 197.92f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(587, Terminal.Constructor(Vector3(1143.84f, 850.5f, 158.69f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(588, Terminal.Constructor(Vector3(1144.35f, 798.89f, 197.92f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(589, Terminal.Constructor(Vector3(1171.79f, 847.49f, 158.69f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(591, Terminal.Constructor(Vector3(1187.06f, 1054.3f, 230.13f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(592, Terminal.Constructor(Vector3(1207.07f, 1027.25f, 230.13f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(14, ProximityTerminal.Constructor(Vector3(974.48f, 848.12f, 235.98f), crystals_health_b), owning_building_guid = 0) - LocalObject(15, ProximityTerminal.Constructor(Vector3(1111.91f, 984.81f, 150.41f), crystals_health_b), owning_building_guid = 0) - LocalObject(498, ProximityTerminal.Constructor(Vector3(951.89f, 848.7f, 189.55f), crystals_health_b), owning_building_guid = 0) - LocalObject(499, ProximityTerminal.Constructor(Vector3(1058.51f, 849.13f, 258.04f), crystals_health_b), owning_building_guid = 0) - LocalObject(70, FacilityTurret.Constructor(Vector3(903.84f, 1038.79f, 162.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 558, + Terminal.Constructor(Vector3(878.19f, 1054.2f, 163.19f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 561, + Terminal.Constructor(Vector3(896.75f, 1075.17f, 163.19f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 563, + Terminal.Constructor(Vector3(941.54f, 850.15f, 189.36f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 564, + Terminal.Constructor(Vector3(945.16f, 843.7f, 183.9f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 565, + Terminal.Constructor(Vector3(950.41f, 852.49f, 178.37f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 566, + Terminal.Constructor(Vector3(953.54f, 844.73f, 178.41f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 568, + Terminal.Constructor(Vector3(956.79f, 837.39f, 178.38f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 569, + Terminal.Constructor(Vector3(963.51f, 855.72f, 183.88f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 570, + Terminal.Constructor(Vector3(967.12f, 849.74f, 189.34f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 571, + Terminal.Constructor(Vector3(979.19f, 862.66f, 241.45f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 572, + Terminal.Constructor(Vector3(979.19f, 873.02f, 241.48f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 575, + Terminal.Constructor(Vector3(989f, 872.94f, 235.95f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 582, + Terminal.Constructor(Vector3(1008.85f, 1236.36f, 246.4f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 583, + Terminal.Constructor(Vector3(1057.9f, 849.87f, 253.23f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 584, + Terminal.Constructor(Vector3(1076.5f, 869.5f, 253.22f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 585, + Terminal.Constructor(Vector3(1113.28f, 798.92f, 197.92f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 587, + Terminal.Constructor(Vector3(1143.84f, 850.5f, 158.69f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 588, + Terminal.Constructor(Vector3(1144.35f, 798.89f, 197.92f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 589, + Terminal.Constructor(Vector3(1171.79f, 847.49f, 158.69f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 591, + Terminal.Constructor(Vector3(1187.06f, 1054.3f, 230.13f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 592, + Terminal.Constructor(Vector3(1207.07f, 1027.25f, 230.13f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 14, + ProximityTerminal.Constructor(Vector3(974.48f, 848.12f, 235.98f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 15, + ProximityTerminal.Constructor(Vector3(1111.91f, 984.81f, 150.41f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 498, + ProximityTerminal.Constructor(Vector3(951.89f, 848.7f, 189.55f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 499, + ProximityTerminal.Constructor(Vector3(1058.51f, 849.13f, 258.04f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 70, + FacilityTurret.Constructor(Vector3(903.84f, 1038.79f, 162.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(70, 5000) - LocalObject(71, FacilityTurret.Constructor(Vector3(917.33f, 1096.84f, 328.62f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 71, + FacilityTurret.Constructor(Vector3(917.33f, 1096.84f, 328.62f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(71, 5001) - LocalObject(72, FacilityTurret.Constructor(Vector3(941.49f, 1065.67f, 265.85f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 72, + FacilityTurret.Constructor(Vector3(941.49f, 1065.67f, 265.85f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(72, 5002) - LocalObject(73, FacilityTurret.Constructor(Vector3(972.24f, 908.83f, 167.96f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 73, + FacilityTurret.Constructor(Vector3(972.24f, 908.83f, 167.96f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(73, 5003) - LocalObject(74, FacilityTurret.Constructor(Vector3(987.05f, 936.85f, 289.22f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 74, + FacilityTurret.Constructor(Vector3(987.05f, 936.85f, 289.22f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(74, 5004) - LocalObject(75, FacilityTurret.Constructor(Vector3(1006.95f, 1040.83f, 328.62f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 75, + FacilityTurret.Constructor(Vector3(1006.95f, 1040.83f, 328.62f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(75, 5005) - LocalObject(76, FacilityTurret.Constructor(Vector3(1016.37f, 1093.24f, 162.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 76, + FacilityTurret.Constructor(Vector3(1016.37f, 1093.24f, 162.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(76, 5006) - LocalObject(77, FacilityTurret.Constructor(Vector3(1025.41f, 863.67f, 167.94f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 77, + FacilityTurret.Constructor(Vector3(1025.41f, 863.67f, 167.94f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(77, 5007) - LocalObject(78, FacilityTurret.Constructor(Vector3(1048.02f, 893.23f, 313.55f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 78, + FacilityTurret.Constructor(Vector3(1048.02f, 893.23f, 313.55f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(78, 5008) - LocalObject(79, FacilityTurret.Constructor(Vector3(1078.71f, 970.7f, 150.32f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 79, + FacilityTurret.Constructor(Vector3(1078.71f, 970.7f, 150.32f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(79, 5009) - LocalObject(80, FacilityTurret.Constructor(Vector3(1090.27f, 1143.01f, 328.62f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 80, + FacilityTurret.Constructor(Vector3(1090.27f, 1143.01f, 328.62f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(80, 5010) - LocalObject(81, FacilityTurret.Constructor(Vector3(1114.24f, 862.02f, 156.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 81, + FacilityTurret.Constructor(Vector3(1114.24f, 862.02f, 156.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(81, 5011) - LocalObject(82, FacilityTurret.Constructor(Vector3(1118.88f, 1017.24f, 150.31f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 82, + FacilityTurret.Constructor(Vector3(1118.88f, 1017.24f, 150.31f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(82, 5012) - LocalObject(83, FacilityTurret.Constructor(Vector3(1148.99f, 1139.1f, 309.56f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 83, + FacilityTurret.Constructor(Vector3(1148.99f, 1139.1f, 309.56f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(83, 5013) - LocalObject(84, FacilityTurret.Constructor(Vector3(1151.31f, 1053.73f, 272.84f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 84, + FacilityTurret.Constructor(Vector3(1151.31f, 1053.73f, 272.84f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(84, 5014) - LocalObject(85, FacilityTurret.Constructor(Vector3(1155.55f, 768.04f, 281.56f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 85, + FacilityTurret.Constructor(Vector3(1155.55f, 768.04f, 281.56f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(85, 5015) - LocalObject(86, FacilityTurret.Constructor(Vector3(1157.01f, 907.45f, 321.58f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 86, + FacilityTurret.Constructor(Vector3(1157.01f, 907.45f, 321.58f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(86, 5016) - LocalObject(87, FacilityTurret.Constructor(Vector3(1169.41f, 1134.44f, 226.08f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 87, + FacilityTurret.Constructor(Vector3(1169.41f, 1134.44f, 226.08f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(87, 5017) - LocalObject(88, FacilityTurret.Constructor(Vector3(1176.74f, 1075.21f, 158.51f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 88, + FacilityTurret.Constructor(Vector3(1176.74f, 1075.21f, 158.51f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(88, 5018) - LocalObject(89, FacilityTurret.Constructor(Vector3(1191.93f, 930.74f, 156.83f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 89, + FacilityTurret.Constructor(Vector3(1191.93f, 930.74f, 156.83f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(89, 5019) - LocalObject(90, FacilityTurret.Constructor(Vector3(1220.76f, 1109.93f, 309.56f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 90, + FacilityTurret.Constructor(Vector3(1220.76f, 1109.93f, 309.56f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(90, 5020) - LocalObject(91, FacilityTurret.Constructor(Vector3(1221.9f, 1003.16f, 357.58f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 91, + FacilityTurret.Constructor(Vector3(1221.9f, 1003.16f, 357.58f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(91, 5021) - LocalObject(92, FacilityTurret.Constructor(Vector3(1251.81f, 1016.94f, 273.16f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 92, + FacilityTurret.Constructor(Vector3(1251.81f, 1016.94f, 273.16f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(92, 5022) - LocalObject(93, FacilityTurret.Constructor(Vector3(1272.36f, 985.48f, 321.58f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 93, + FacilityTurret.Constructor(Vector3(1272.36f, 985.48f, 321.58f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(93, 5023) - LocalObject(94, FacilityTurret.Constructor(Vector3(1273.43f, 1033.94f, 171.65f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 94, + FacilityTurret.Constructor(Vector3(1273.43f, 1033.94f, 171.65f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(94, 5024) - LocalObject(95, FacilityTurret.Constructor(Vector3(1342.12f, 1076.58f, 301.56f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 95, + FacilityTurret.Constructor(Vector3(1342.12f, 1076.58f, 301.56f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(95, 5025) } @@ -496,172 +1306,1797 @@ object Ugd05 { // Annwn Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, false, List(Vector3(836.538f, 971.683f, 284.533f), Vector3(847.701f, 992.693f, 286.866f), Vector3(858.864f, 1013.704f, 281.7f), Vector3(888.189f, 1055.323f, 278.792f), Vector3(903.14f, 1076.54f, 276.458f)))) - ZipLinePaths(new ZipLinePath(2, false, List(Vector3(891.205f, 996.755f, 333.27f), Vector3(915.423f, 1041.517f, 331.172f), Vector3(934.891f, 1077.502f, 329.469f)))) - ZipLinePaths(new ZipLinePath(3, false, List(Vector3(914.981f, 1087.151f, 329.469f), Vector3(900.695f, 1039.306f, 331.566f), Vector3(887.839f, 996.247f, 333.27f)))) - ZipLinePaths(new ZipLinePath(4, false, List(Vector3(933.653f, 971.335f, 168.794f), Vector3(937.301f, 1022.074f, 165.936f), Vector3(938.446f, 1037.992f, 163.681f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(934.919f, 1077.717f, 266.709f), Vector3(961.063f, 1120.966f, 259.938f), Vector3(987.208f, 1164.215f, 253.129f), Vector3(1007.713f, 1198.136f, 247.251f)))) - ZipLinePaths(new ZipLinePath(6, false, List(Vector3(938.361f, 988.199f, 311.465f), Vector3(923.02f, 985.78f, 329.386f), Vector3(915.349f, 984.57f, 332.477f), Vector3(907.679f, 983.361f, 333.269f)))) - ZipLinePaths(new ZipLinePath(7, true, List(Vector3(939.932f, 1041.648f, 266.204f), Vector3(940.903f, 1041.5f, 298.33f)))) - ZipLinePaths(new ZipLinePath(8, false, List(Vector3(943.877f, 1037.999f, 298.844f), Vector3(952.428f, 1001.712f, 290.08f)))) - ZipLinePaths(new ZipLinePath(9, true, List(Vector3(954.385f, 849.776f, 184.25f), Vector3(955.581f, 843.708f, 189.734f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(963.215f, 1070.363f, 195.797f), Vector3(973.055f, 987.338f, 186.251f), Vector3(982.896f, 904.313f, 169.711f)))) - ZipLinePaths(new ZipLinePath(11, false, List(Vector3(966.382f, 981.995f, 161.207f), Vector3(1015.066f, 995.9f, 155.835f), Vector3(1044.658f, 1004.352f, 151.164f)))) - ZipLinePaths(new ZipLinePath(12, false, List(Vector3(974.465f, 889.406f, 242.321f), Vector3(982.997f, 939.684f, 243.607f), Vector3(988.779f, 964.53f, 243.502f)))) - ZipLinePaths(new ZipLinePath(13, false, List(Vector3(977.059f, 975.908f, 243.599f), Vector3(955.688f, 987.508f, 259.673f), Vector3(934.317f, 999.109f, 266.758f)))) - ZipLinePaths(new ZipLinePath(14, false, List(Vector3(978.289f, 856.17f, 190.258f), Vector3(1014.241f, 891.248f, 199.82f), Vector3(1050.194f, 926.326f, 208.633f), Vector3(1086.147f, 961.404f, 217.447f), Vector3(1122.1f, 996.482f, 226.26f), Vector3(1158.052f, 1031.559f, 235.073f), Vector3(1162.987f, 1036.374f, 235.778f)))) - ZipLinePaths(new ZipLinePath(15, false, List(Vector3(979.631f, 833.334f, 184.752f), Vector3(1026.998f, 815.027f, 190.209f), Vector3(1074.362f, 796.721f, 194.915f), Vector3(1095.651f, 787.956f, 198.196f), Vector3(1116.94f, 779.191f, 198.779f)))) - ZipLinePaths(new ZipLinePath(16, false, List(Vector3(985.905f, 1139.875f, 185.717f), Vector3(1035.448f, 1151.71f, 183.938f), Vector3(1084.991f, 1163.545f, 181.413f), Vector3(1199.62f, 1190.927f, 173.376f)))) - ZipLinePaths(new ZipLinePath(17, false, List(Vector3(990.859f, 893.127f, 243.457f), Vector3(1015.97f, 937.469f, 246.208f), Vector3(1041.079f, 981.81f, 248.211f), Vector3(1066.187f, 1026.152f, 250.214f), Vector3(1091.295f, 1070.491f, 252.217f), Vector3(1112.956f, 1108.744f, 251.464f)))) - ZipLinePaths(new ZipLinePath(18, false, List(Vector3(993.026f, 1140.513f, 163.68f), Vector3(1043.97f, 1138.533f, 167.62f), Vector3(1094.914f, 1136.553f, 167.313f), Vector3(1138.865f, 1134.845f, 159.356f)))) - ZipLinePaths(new ZipLinePath(19, false, List(Vector3(995.568f, 812.403f, 230.182f), Vector3(1041.682f, 791.189f, 235.778f), Vector3(1087.887f, 771.408f, 238.747f)))) - ZipLinePaths(new ZipLinePath(20, false, List(Vector3(992.183f, 1215.784f, 247.281f), Vector3(981.853f, 1198.469f, 247.506f), Vector3(967.423f, 1179.655f, 230.129f), Vector3(938.562f, 1142.027f, 214.269f), Vector3(914.896f, 1111.172f, 198.717f)))) - ZipLinePaths(new ZipLinePath(21, true, List(Vector3(1008.642f, 1065.179f, 390.74f), Vector3(1007.733f, 1064.686f, 397.4f)))) - ZipLinePaths(new ZipLinePath(22, false, List(Vector3(1012.554f, 945.371f, 374.294f), Vector3(1015.582f, 995.593f, 382.861f), Vector3(1018.849f, 1049.753f, 391.246f)))) - ZipLinePaths(new ZipLinePath(23, true, List(Vector3(1013.884f, 1025.019f, 142.543f), Vector3(1020.3f, 1023.318f, 175.782f)))) - ZipLinePaths(new ZipLinePath(24, false, List(Vector3(1016.788f, 976.956f, 290.079f), Vector3(1037.293f, 987.803f, 297.838f), Vector3(1052.799f, 987.151f, 298.604f)))) - ZipLinePaths(new ZipLinePath(25, true, List(Vector3(1017.555f, 1209.063f, 246.75f), Vector3(1026.884f, 1205.121f, 278.991f)))) - ZipLinePaths(new ZipLinePath(26, true, List(Vector3(1028.886f, 1103.328f, 286.367f), Vector3(1055.503f, 1125.922f, 275.57f)))) - ZipLinePaths(new ZipLinePath(27, false, List(Vector3(1022.812f, 888.35f, 314.685f), Vector3(1017.773f, 897.973f, 313.941f), Vector3(1012.734f, 907.596f, 309.402f), Vector3(1002.656f, 926.842f, 298.124f), Vector3(995.734f, 936.909f, 290.113f)))) - ZipLinePaths(new ZipLinePath(28, false, List(Vector3(1036.004f, 936.681f, 386.369f), Vector3(1059.533f, 929.476f, 395.648f), Vector3(1127.297f, 908.725f, 403.708f)))) - ZipLinePaths(new ZipLinePath(29, false, List(Vector3(1037.586f, 1219.441f, 247.248f), Vector3(1094.923f, 1205.287f, 251.306f), Vector3(1144.261f, 1193.533f, 256.623f), Vector3(1172.316f, 1186.849f, 258.35f)))) - ZipLinePaths(new ZipLinePath(30, false, List(Vector3(1046.508f, 1118.947f, 329.469f), Vector3(1060.289f, 1101.823f, 351.796f), Vector3(1072.008f, 1099.988f, 353.752f)))) - ZipLinePaths(new ZipLinePath(31, false, List(Vector3(1048.769f, 877.431f, 258.896f), Vector3(1025.9f, 919.197f, 256.184f), Vector3(1004.233f, 963.463f, 243.602f)))) - ZipLinePaths(new ZipLinePath(32, false, List(Vector3(1056.116f, 1209.807f, 279.498f), Vector3(1081.23f, 1208.288f, 281.785f), Vector3(1106.344f, 1206.769f, 271.873f), Vector3(1156.572f, 1203.731f, 263.593f), Vector3(1178.239f, 1202.421f, 258.356f)))) - ZipLinePaths(new ZipLinePath(33, false, List(Vector3(1052.422f, 1061.776f, 402.752f), Vector3(1070.817f, 1049.448f, 400.654f), Vector3(1089.212f, 1037.22f, 382.509f), Vector3(1139.78f, 998.768f, 343.26f), Vector3(1190.349f, 960.317f, 322.483f)))) - ZipLinePaths(new ZipLinePath(34, false, List(Vector3(1055.905f, 1160.678f, 276.088f), Vector3(1045.246f, 1178.08f, 272.165f), Vector3(1034.588f, 1195.482f, 249.548f), Vector3(1026.775f, 1204.718f, 247.268f)))) - ZipLinePaths(new ZipLinePath(35, false, List(Vector3(1064.229f, 937.492f, 177.28f), Vector3(1046.544f, 929.061f, 185.858f), Vector3(945.523f, 879.87f, 179.25f)))) - ZipLinePaths(new ZipLinePath(36, true, List(Vector3(1065.916f, 938.66f, 141.799f), Vector3(1067.133f, 939.027f, 176.78f)))) - ZipLinePaths(new ZipLinePath(37, false, List(Vector3(1072.997f, 941.22f, 177.28f), Vector3(1109.124f, 932.355f, 212.906f), Vector3(1145.251f, 923.49f, 247.789f), Vector3(1160.018f, 920.113f, 270.727f), Vector3(1174.786f, 916.736f, 276.061f)))) - ZipLinePaths(new ZipLinePath(38, true, List(Vector3(1070.568f, 856.858f, 246.887f), Vector3(1082.745f, 845f, 253.59f)))) - ZipLinePaths(new ZipLinePath(39, false, List(Vector3(1079.844f, 944.446f, 298.543f), Vector3(1073.849f, 937.71f, 296.436f), Vector3(1067.854f, 930.974f, 291.128f), Vector3(1058.565f, 910.402f, 271.726f), Vector3(1053.718f, 878.816f, 258.901f)))) - ZipLinePaths(new ZipLinePath(40, true, List(Vector3(1079.369f, 865.469f, 314.138f), Vector3(1080.588f, 868.474f, 346.32f)))) - ZipLinePaths(new ZipLinePath(41, false, List(Vector3(1084.523f, 1069.966f, 353.759f), Vector3(1081.809f, 1063.602f, 357.778f), Vector3(1034.51f, 952.682f, 374.294f)))) - ZipLinePaths(new ZipLinePath(42, false, List(Vector3(1085.074f, 1117.049f, 329.482f), Vector3(1126.078f, 1090.896f, 340.496f), Vector3(1158.06f, 1070.496f, 369.607f), Vector3(1190.043f, 1050.096f, 358.773f)))) - ZipLinePaths(new ZipLinePath(43, false, List(Vector3(1098.34f, 1019.147f, 303.582f), Vector3(1119.333f, 1053.316f, 306.9f), Vector3(1136.027f, 1072.485f, 308.32f), Vector3(1164.178f, 1104.808f, 310.373f)))) - ZipLinePaths(new ZipLinePath(44, false, List(Vector3(1105.737f, 792.054f, 198.806f), Vector3(1070.649f, 827.286f, 214.8f), Vector3(1054.607f, 839.119f, 226.703f), Vector3(1038.566f, 850.953f, 230.21f)))) - ZipLinePaths(new ZipLinePath(45, true, List(Vector3(1116.13f, 1100.883f, 144.66f), Vector3(1110.411f, 1100.113f, 158.152f)))) - ZipLinePaths(new ZipLinePath(46, true, List(Vector3(1114.444f, 979.815f, 293.08f), Vector3(1109.115f, 962.793f, 308.08f)))) - ZipLinePaths(new ZipLinePath(47, true, List(Vector3(1116.152f, 1049.326f, 142.011f), Vector3(1115.709f, 1049.785f, 176.78f)))) - ZipLinePaths(new ZipLinePath(48, false, List(Vector3(1117.339f, 1055.876f, 177.28f), Vector3(1086.425f, 1067.357f, 215.618f), Vector3(1055.51f, 1078.838f, 253.203f), Vector3(1041.598f, 1084.004f, 287.634f), Vector3(1027.687f, 1089.171f, 286.868f)))) - ZipLinePaths(new ZipLinePath(49, false, List(Vector3(1122.141f, 828.5f, 238.746f), Vector3(1122.477f, 879.466f, 236.861f), Vector3(1122.813f, 930.432f, 235.059f), Vector3(1123.15f, 981.397f, 233.257f), Vector3(1123.486f, 1032.363f, 231.454f), Vector3(1123.822f, 1083.325f, 229.652f), Vector3(1123.901f, 1095.316f, 226.948f)))) - ZipLinePaths(new ZipLinePath(50, false, List(Vector3(1134.036f, 816.858f, 247.409f), Vector3(1151.499f, 864.219f, 255.407f), Vector3(1168.962f, 911.58f, 262.664f), Vector3(1186.424f, 958.942f, 275.422f), Vector3(1200.805f, 997.945f, 273.992f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(1139.77f, 957.718f, 176.286f), Vector3(1132.14f, 908.884f, 185.036f), Vector3(1124.511f, 860.05f, 192.594f), Vector3(1115.539f, 816.446f, 198.783f)))) - ZipLinePaths(new ZipLinePath(52, true, List(Vector3(1142.063f, 961.706f, 141.954f), Vector3(1141.833f, 962.65f, 175.78f)))) - ZipLinePaths(new ZipLinePath(53, false, List(Vector3(1145.255f, 912.243f, 322.464f), Vector3(1103.666f, 923.587f, 370.23f), Vector3(1044.747f, 939.657f, 374.346f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(1146.629f, 1086.09f, 159.359f), Vector3(1139.974f, 1061.468f, 161.182f), Vector3(1133.32f, 1036.847f, 154.174f), Vector3(1127.272f, 1018.487f, 151.164f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(1147.433f, 952.501f, 403.715f), Vector3(1174.421f, 980.424f, 402.039f), Vector3(1196.024f, 997.07f, 385.462f), Vector3(1217.428f, 1021.717f, 379.623f)))) - ZipLinePaths(new ZipLinePath(56, false, List(Vector3(1146.091f, 1104.1f, 226.953f), Vector3(1153.881f, 1075.162f, 231.716f), Vector3(1157.777f, 1060.694f, 233.893f), Vector3(1161.672f, 1046.225f, 235.775f)))) - ZipLinePaths(new ZipLinePath(57, false, List(Vector3(1155.908f, 799.632f, 198.811f), Vector3(1168.474f, 810.457f, 198.687f), Vector3(1189.041f, 833.683f, 180.751f)))) - ZipLinePaths(new ZipLinePath(58, false, List(Vector3(1166.637f, 1138.424f, 172.501f), Vector3(1141.554f, 1141.091f, 174.082f), Vector3(1116.472f, 1143.758f, 176.164f), Vector3(1066.306f, 1149.092f, 177.327f), Vector3(963.976f, 1160.06f, 175.154f)))) - ZipLinePaths(new ZipLinePath(59, false, List(Vector3(1174.081f, 905.841f, 276.08f), Vector3(1130.6f, 885.114f, 263.381f), Vector3(1087.118f, 864.386f, 249.969f), Vector3(1085.379f, 863.557f, 247.451f)))) - ZipLinePaths(new ZipLinePath(60, false, List(Vector3(1187.233f, 1047.423f, 288.282f), Vector3(1137.464f, 1046.202f, 284.343f), Vector3(1087.696f, 1044.981f, 279.663f), Vector3(1037.928f, 1043.76f, 274.983f), Vector3(988.16f, 1042.54f, 270.303f), Vector3(957.304f, 1041.783f, 266.706f)))) - ZipLinePaths(new ZipLinePath(61, true, List(Vector3(1195.866f, 1024.645f, 358.26f), Vector3(1196.547f, 1025.43f, 364.697f)))) - ZipLinePaths(new ZipLinePath(62, false, List(Vector3(1202.279f, 1065.203f, 379.973f), Vector3(1158.316f, 1091.763f, 366.789f), Vector3(1087.976f, 1134.259f, 329.503f)))) - ZipLinePaths(new ZipLinePath(63, false, List(Vector3(1218.329f, 982.117f, 322.441f), Vector3(1167.462f, 1031.49f, 333.463f), Vector3(1135.987f, 1060.504f, 343.613f), Vector3(1120.25f, 1075.012f, 352.689f), Vector3(1107.313f, 1084.519f, 353.763f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(1205.974f, 885.662f, 276.074f), Vector3(1174.101f, 851.537f, 258.901f), Vector3(1142.229f, 817.412f, 238.784f)))) - ZipLinePaths(new ZipLinePath(65, false, List(Vector3(1209.137f, 1025.929f, 379.998f), Vector3(1164.331f, 1045.57f, 370.44f), Vector3(1098.915f, 1074.246f, 353.764f)))) - ZipLinePaths(new ZipLinePath(66, false, List(Vector3(1210.968f, 1035.861f, 159.356f), Vector3(1220.734f, 986.826f, 159.704f), Vector3(1229.132f, 944.655f, 157.68f)))) - ZipLinePaths(new ZipLinePath(67, false, List(Vector3(1211.43f, 918.994f, 193.301f), Vector3(1162.516f, 912.134f, 181.339f), Vector3(1113.603f, 905.273f, 173.561f), Vector3(1064.689f, 898.413f, 165.783f), Vector3(1038.276f, 894.708f, 161.212f)))) - ZipLinePaths(new ZipLinePath(68, false, List(Vector3(1212.954f, 1184.48f, 258.387f), Vector3(1241.887f, 1146.113f, 277.704f), Vector3(1267.32f, 1107.245f, 296.218f), Vector3(1292.754f, 1068.378f, 314.731f), Vector3(1305.725f, 1048.556f, 330.249f), Vector3(1318.696f, 1028.734f, 333.772f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(1223.233f, 1112.938f, 190.58f), Vector3(1231.772f, 1063.768f, 188.214f), Vector3(1240.31f, 1014.599f, 187.788f), Vector3(1248.849f, 965.432f, 185.763f), Vector3(1257.388f, 916.265f, 183.037f), Vector3(1259.362f, 898.065f, 180.716f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(1230.107f, 1045.135f, 235.77f), Vector3(1244.028f, 1094.167f, 238.081f), Vector3(1257.948f, 1143.2f, 239.652f), Vector3(1264.226f, 1165.313f, 237.807f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(1231.002f, 1035.87f, 235.822f), Vector3(1254.525f, 996.863f, 257.139f), Vector3(1271.932f, 967.997f, 272.932f)))) - ZipLinePaths(new ZipLinePath(72, false, List(Vector3(1234.91f, 912.664f, 157.928f), Vector3(1250.804f, 960.648f, 165.181f), Vector3(1266.698f, 1008.632f, 171.942f), Vector3(1270.75f, 1020.863f, 172.504f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(1255.485f, 1182.81f, 237.946f), Vector3(1206.913f, 1195.741f, 241.873f), Vector3(1195.984f, 1200.291f, 246.675f), Vector3(1144.741f, 1209.557f, 249.088f), Vector3(1096.169f, 1221.288f, 250.963f), Vector3(1047.598f, 1233.019f, 251.938f), Vector3(1032.812f, 1235.4f, 247.246f)))) - ZipLinePaths(new ZipLinePath(74, true, List(Vector3(1265.476f, 927.817f, 279.476f), Vector3(1239.733f, 924.791f, 275.521f)))) - ZipLinePaths(new ZipLinePath(75, false, List(Vector3(1313.487f, 1015.418f, 333.739f), Vector3(1293.092f, 1007.868f, 334.409f), Vector3(1270.097f, 998.818f, 326.879f), Vector3(1241.583f, 987.596f, 322.436f)))) - ZipLinePaths(new ZipLinePath(76, true, List(Vector3(845.661f, 953.94f, 284.032f), Vector3(833.71f, 937.902f, 284.032f)))) - ZipLinePaths(new ZipLinePath(77, false, List(Vector3(1101.112f, 1092.318f, 158.581f), Vector3(1043.9f, 1067.37f, 165.921f), Vector3(986.689f, 1042.422f, 164.515f)))) - ZipLinePaths(new ZipLinePath(78, false, List(Vector3(1053.642f, 972.17f, 298.563f), Vector3(1016.137f, 939.284f, 295.811f), Vector3(988.785f, 915.864f, 290.753f)))) - ZipLinePaths(new ZipLinePath(79, true, List(Vector3(1074.661f, 994.089f, 303.08f), Vector3(1074.232f, 994.714f, 308.08f)))) - ZipLinePaths(new ZipLinePath(80, true, List(Vector3(1104.434f, 964.517f, 298.08f), Vector3(1104.444f, 964.415f, 303.08f)))) - ZipLinePaths(new ZipLinePath(81, false, List(Vector3(1208.005f, 939.596f, 276.045f), Vector3(1208.715f, 962.582f, 276.316f), Vector3(1209.426f, 985.568f, 273.988f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(1179.915f, 1003.14f, 273.987f), Vector3(1160.46f, 995.32f, 293.853f), Vector3(1141.005f, 987.5f, 305.972f), Vector3(1127.232f, 982.307f, 308.622f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(1127.071f, 968.872f, 308.503f), Vector3(1123.104f, 919.425f, 315.516f), Vector3(1121.438f, 898.657f, 314.64f)))) - ZipLinePaths(new ZipLinePath(84, false, List(Vector3(1046.507f, 915.223f, 314.639f), Vector3(1025.3f, 953.238f, 318.323f), Vector3(1014.696f, 972.745f, 314.793f), Vector3(1002.593f, 984.253f, 311.55f)))) - ZipLinePaths(new ZipLinePath(85, false, List(Vector3(1096.244f, 942.801f, 298.563f), Vector3(1099.948f, 933.29f, 297.281f), Vector3(1103.653f, 921.579f, 289.539f), Vector3(1111.063f, 900.358f, 272.895f), Vector3(1125.882f, 857.914f, 247.906f), Vector3(1133.885f, 834.994f, 238.784f)))) - ZipLinePaths(new ZipLinePath(86, false, List(Vector3(1097.66f, 942.464f, 303.601f), Vector3(1135.823f, 912.095f, 324.74f), Vector3(1147.795f, 902.568f, 322.452f)))) - ZipLinePaths(new ZipLinePath(87, false, List(Vector3(1082.528f, 1018.227f, 303.597f), Vector3(1079.498f, 1050.159f, 301.494f), Vector3(1075.269f, 1067.092f, 291.668f), Vector3(1066.51f, 1121.357f, 276.083f)))) - ZipLinePaths(new ZipLinePath(88, false, List(Vector3(1098.415f, 1019.645f, 308.636f), Vector3(1117.982f, 1034.342f, 306.546f), Vector3(1137.549f, 1046.439f, 290.602f), Vector3(1150.978f, 1055.634f, 280.545f), Vector3(1164.406f, 1064.828f, 274.032f)))) - ZipLinePaths(new ZipLinePath(89, false, List(Vector3(1178.956f, 772.235f, 282.489f), Vector3(1204.251f, 811.257f, 304.124f), Vector3(1229.045f, 845.879f, 324.961f), Vector3(1231.033f, 852.574f, 322.473f)))) - ZipLinePaths(new ZipLinePath(90, false, List(Vector3(1112.743f, 751.134f, 282.462f), Vector3(1088.902f, 756.732f, 284.043f), Vector3(1065.062f, 762.33f, 273.139f), Vector3(1017.381f, 773.527f, 263.073f), Vector3(969.701f, 784.724f, 253.007f), Vector3(951.396f, 782.683f, 243.001f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(943.422f, 797.726f, 243.265f), Vector3(916.11f, 837.921f, 259.473f), Vector3(888.799f, 878.117f, 281.944f), Vector3(868.449f, 908.066f, 284.555f)))) - ZipLinePaths(new ZipLinePath(92, false, List(Vector3(879.92f, 943.053f, 284.535f), Vector3(902.968f, 950.268f, 293.299f), Vector3(926.016f, 957.483f, 290.07f)))) - ZipLinePaths(new ZipLinePath(93, false, List(Vector3(1315.471f, 956.81f, 322.442f), Vector3(1332.853f, 1004.046f, 316.074f), Vector3(1347.126f, 1047.02f, 302.549f)))) - ZipLinePaths(new ZipLinePath(94, false, List(Vector3(1319.352f, 1102.721f, 302.539f), Vector3(1274.436f, 1124.169f, 308.086f), Vector3(1251.978f, 1134.893f, 312.979f), Vector3(1229.521f, 1145.617f, 310.373f)))) - ZipLinePaths(new ZipLinePath(95, false, List(Vector3(1174.169f, 1166.809f, 310.388f), Vector3(1131.408f, 1190.417f, 300.433f), Vector3(1088.647f, 1214.025f, 289.744f), Vector3(1067.266f, 1225.83f, 279.474f)))) - ZipLinePaths(new ZipLinePath(96, false, List(Vector3(975.449f, 1215.112f, 279.493f), Vector3(951.71f, 1171.246f, 280.186f), Vector3(927.97f, 1127.38f, 273.129f), Vector3(907.554f, 1089.655f, 266.706f)))) - ZipLinePaths(new ZipLinePath(97, false, List(Vector3(1310.139f, 1087.265f, 302.549f), Vector3(1262.453f, 1075.564f, 293.844f), Vector3(1245.285f, 1071.352f, 288.291f)))) - ZipLinePaths(new ZipLinePath(98, true, List(Vector3(837.962f, 950.527f, 284.032f), Vector3(839.502f, 937.417f, 297.199f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(1107.188f, 867.405f, 157.685f), Vector3(1057.731f, 866.462f, 167.734f), Vector3(1033.002f, 865.991f, 168.798f)))) - ZipLinePaths(new ZipLinePath(100, false, List(Vector3(1034.19f, 1151.24f, 276.07f), Vector3(1027.155f, 1171.499f, 282.137f), Vector3(1020.12f, 1186.259f, 279.493f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(1182.343f, 1165.265f, 258.349f), Vector3(1182.153f, 1158.271f, 259.739f), Vector3(1181.964f, 1151.276f, 257.847f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(1188.742f, 1150.284f, 226.948f), Vector3(1191.712f, 1126.486f, 218.923f), Vector3(1194.683f, 1102.689f, 201.903f), Vector3(1197.654f, 1078.891f, 176.509f), Vector3(1200.624f, 1055.093f, 159.356f)))) - ZipLinePaths(new ZipLinePath(103, true, List(Vector3(845.985f, 940.029f, 284.032f), Vector3(857.812f, 940.784f, 284.032f)))) - ZipLinePaths(new ZipLinePath(104, true, List(Vector3(913.217f, 1126.673f, 167.8f), Vector3(905.95f, 1128.761f, 185.226f)))) - ZipLinePaths(new ZipLinePath(105, true, List(Vector3(985.057f, 1117.279f, 185.226f), Vector3(977.383f, 1119.22f, 167.8f)))) - ZipLinePaths(new ZipLinePath(106, true, List(Vector3(1194.756f, 855.428f, 162.8f), Vector3(1186.752f, 855.411f, 180.226f)))) - ZipLinePaths(new ZipLinePath(107, true, List(Vector3(1266.08f, 858.242f, 180.226f), Vector3(1258.221f, 859.327f, 162.8f)))) - ZipLinePaths(new ZipLinePath(108, false, List(Vector3(1022.699f, 1016.759f, 176.299f), Vector3(1059.517f, 982.522f, 168.496f), Vector3(1096.335f, 948.284f, 159.955f), Vector3(1133.154f, 914.047f, 150.468f)))) - ZipLinePaths(new ZipLinePath(109, true, List(Vector3(999.063f, 970.346f, 243.032f), Vector3(992.956f, 976.089f, 248.532f)))) - ZipLinePaths(new ZipLinePath(110, true, List(Vector3(1213.98f, 1136.817f, 257.332f), Vector3(1205.284f, 1135.873f, 262.831f)))) - ZipLinePaths(new ZipLinePath(111, false, List(Vector3(1195.134f, 1025.819f, 224.31f), Vector3(1196.763f, 1005.379f, 221.528f), Vector3(1198.393f, 984.938f, 196.447f), Vector3(1201.652f, 944.057f, 167.843f), Vector3(1202.63f, 931.792f, 157.68f)))) - ZipLinePaths(new ZipLinePath(112, false, List(Vector3(1195.142f, 1055.611f, 224.31f), Vector3(1176.148f, 1102.906f, 226.827f), Vector3(1167.582f, 1124.236f, 226.948f)))) - ZipLinePaths(new ZipLinePath(113, true, List(Vector3(1187.101f, 1041.722f, 223.81f), Vector3(1187.004f, 1030.267f, 230.47f)))) - ZipLinePaths(new ZipLinePath(114, false, List(Vector3(1007.547f, 268.934f, 243.11f), Vector3(1007.527f, 292.646f, 244.644f), Vector3(1018.508f, 316.357f, 244.279f), Vector3(1024.908f, 330.77f, 243.857f), Vector3(1035.909f, 347.383f, 243.135f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(1068.89f, 344.904f, 243.148f), Vector3(1070.937f, 349.779f, 243.278f), Vector3(1072.784f, 354.654f, 243.921f), Vector3(1074.728f, 380.202f, 237.744f), Vector3(1075.073f, 405.551f, 231.566f), Vector3(1072.861f, 425.05f, 229.663f), Vector3(1073.449f, 444.349f, 228.36f), Vector3(1075.437f, 463.847f, 225.656f), Vector3(1075.625f, 483.346f, 225.553f), Vector3(1076.013f, 534.043f, 210.998f), Vector3(1075.593f, 583.763f, 198.865f), Vector3(1072.743f, 599.762f, 185.09f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(1049.463f, 621.931f, 183.136f), Vector3(1053.439f, 640.477f, 184.404f), Vector3(1058.226f, 649.75f, 184.889f), Vector3(1063.214f, 659.024f, 185.773f), Vector3(1070.682f, 677.638f, 184.48f), Vector3(1070.351f, 696.253f, 182.787f), Vector3(1075.419f, 712.467f, 181.094f), Vector3(1072.688f, 730.282f, 177.102f)))) - ZipLinePaths(new ZipLinePath(117, false, List(Vector3(993.254f, 456.81f, 223.2f), Vector3(1005.741f, 456.241f, 223.7f), Vector3(1011.984f, 455.957f, 223.7f), Vector3(1018.228f, 455.673f, 223.201f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(960.308f, 504.697f, 218.191f), Vector3(938.836f, 502.633f, 219.836f), Vector3(929.464f, 487.568f, 219.381f), Vector3(919.607f, 494.021f, 219.521f), Vector3(919.542f, 520.634f, 222.656f), Vector3(919.478f, 547.248f, 223.79f), Vector3(938.214f, 551.461f, 223.725f), Vector3(967.915f, 554.863f, 223.617f), Vector3(967.766f, 571.564f, 223.363f), Vector3(966.692f, 580.615f, 223.236f), Vector3(952.817f, 588.865f, 223.202f)))) - ZipLinePaths(new ZipLinePath(119, false, List(Vector3(941.828f, 613.476f, 223.231f), Vector3(925.918f, 616.335f, 223.995f), Vector3(920.563f, 629.564f, 227.029f), Vector3(921.008f, 642.794f, 228.864f), Vector3(934.83f, 647.518f, 228.224f)))) - ZipLinePaths(new ZipLinePath(120, false, List(Vector3(948.435f, 649.569f, 228.256f), Vector3(952.455f, 664.02f, 228.749f), Vector3(956.475f, 678.47f, 228.243f)))) - ZipLinePaths(new ZipLinePath(121, false, List(Vector3(942.908f, 710.963f, 233.188f), Vector3(936.267f, 720.101f, 235.096f), Vector3(936.451f, 734.912f, 237.896f), Vector3(922.235f, 750.819f, 238.936f), Vector3(922.627f, 767.772f, 243.356f), Vector3(922.219f, 784.725f, 243.576f), Vector3(921.702f, 787.641f, 243.208f)))) - ZipLinePaths(new ZipLinePath(122, false, List(Vector3(1111.15f, 207.047f, 243.135f), Vector3(1157.929f, 227.358f, 243.888f), Vector3(1204.708f, 247.669f, 243.885f), Vector3(1209.294f, 249.66f, 243.135f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(1198.789f, 297.547f, 243.146f), Vector3(1197.337f, 322.502f, 247.098f), Vector3(1197.485f, 347.457f, 249.86f), Vector3(1197.781f, 397.368f, 264.825f), Vector3(1197.277f, 447.279f, 277.09f), Vector3(1197.109f, 463.915f, 281.276f), Vector3(1197.37f, 477.616f, 283.749f), Vector3(1196.881f, 486.424f, 283.146f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(1202.583f, 536.019f, 283.135f), Vector3(1204.13f, 561.193f, 285.171f), Vector3(1204.677f, 586.368f, 286.707f), Vector3(1202.824f, 611.543f, 287.818f), Vector3(1191.372f, 636.718f, 288.528f), Vector3(1179.116f, 659.424f, 288.253f), Vector3(1170.564f, 676.207f, 286.677f), Vector3(1170.612f, 692.99f, 284.7f), Vector3(1173.108f, 726.557f, 282.447f)))) - ZipLinePaths(new ZipLinePath(125, false, List(Vector3(1769.642f, 876.984f, 243.134f), Vector3(1724.537f, 898.566f, 244.689f), Vector3(1701.985f, 909.357f, 243.135f)))) - ZipLinePaths(new ZipLinePath(126, false, List(Vector3(1687.12f, 945.911f, 241.987f), Vector3(1635.308f, 946.216f, 228.89f), Vector3(1608.802f, 954.568f, 229.295f), Vector3(1583.497f, 970.921f, 230.9f), Vector3(1575.821f, 972.773f, 223.142f)))) - ZipLinePaths(new ZipLinePath(127, false, List(Vector3(1574.066f, 944.007f, 223.145f), Vector3(1564.26f, 943.102f, 223.317f), Vector3(1539.255f, 940.054f, 217.963f), Vector3(1514.25f, 939.205f, 212.809f), Vector3(1501.992f, 941.023f, 209.431f), Vector3(1489.735f, 940.042f, 206.053f), Vector3(1464.82f, 941.279f, 198.096f), Vector3(1440.505f, 942.916f, 190.639f), Vector3(1416.191f, 944.553f, 188.783f), Vector3(1367.161f, 943.427f, 184.27f), Vector3(1349.51f, 950.758f, 178.695f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(1844.368f, 962.199f, 243.288f), Vector3(1843.209f, 986.147f, 246.165f), Vector3(1826.049f, 1030.095f, 248.742f), Vector3(1813.796f, 1045.782f, 243.135f)))) - ZipLinePaths(new ZipLinePath(129, false, List(Vector3(1770.828f, 1066.209f, 243.135f), Vector3(1726.199f, 1088.756f, 243.877f), Vector3(1703.885f, 1100.029f, 243.135f)))) - ZipLinePaths(new ZipLinePath(130, false, List(Vector3(1706.104f, 1133.887f, 243.154f), Vector3(1681.993f, 1139.631f, 252.471f), Vector3(1657.881f, 1141.375f, 259.707f), Vector3(1609.657f, 1136.062f, 277.52f), Vector3(1593.98f, 1137.395f, 283.015f), Vector3(1577.906f, 1137.772f, 284.225f), Vector3(1561.433f, 1132.349f, 283.154f)))) - ZipLinePaths(new ZipLinePath(131, false, List(Vector3(1551.103f, 1093.186f, 283.14f), Vector3(1526.704f, 1077.822f, 287.951f), Vector3(1502.305f, 1068.658f, 289.866f), Vector3(1480.834f, 1067.718f, 294.486f), Vector3(1459.363f, 1067.777f, 299.906f), Vector3(1443.772f, 1069.81f, 303.887f), Vector3(1399.83f, 1066.129f, 303.655f)))) - ZipLinePaths(new ZipLinePath(132, false, List(Vector3(1222.883f, 1155.354f, 310.372f), Vector3(1233.227f, 1169.735f, 309.998f), Vector3(1229.371f, 1162.916f, 262.124f), Vector3(1235.989f, 1170.63f, 212.147f), Vector3(1240.919f, 1176.377f, 172.5f)))) - ZipLinePaths(new ZipLinePath(133, false, List(Vector3(1175.587f, 1239.146f, 173.631f), Vector3(1171.886f, 1262.498f, 181.983f), Vector3(1171.393f, 1276.12f, 185.559f), Vector3(1170.751f, 1301.419f, 189.13f), Vector3(1171.108f, 1326.718f, 195.702f), Vector3(1171.043f, 1376.342f, 206.614f), Vector3(1172.179f, 1425.966f, 221.727f), Vector3(1170.049f, 1436.669f, 223.181f), Vector3(1171.12f, 1447.372f, 223.149f)))) - ZipLinePaths(new ZipLinePath(134, false, List(Vector3(1166.209f, 1497.571f, 223.137f), Vector3(1166.17f, 1547.911f, 226.843f), Vector3(1170.072f, 1588.874f, 234.821f), Vector3(1168.974f, 1629.837f, 243.999f), Vector3(1189.267f, 1681.165f, 247.254f), Vector3(1198.153f, 1698.932f, 244.947f), Vector3(1193.839f, 1716.699f, 243.141f)))) - ZipLinePaths(new ZipLinePath(135, false, List(Vector3(1158.399f, 1784.486f, 243.843f), Vector3(1111.506f, 1772.128f, 245.649f), Vector3(1065.55f, 1750.117f, 243.135f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(1045.72f, 1705.07f, 243.135f), Vector3(1022.973f, 1660.539f, 243.887f), Vector3(1014.33f, 1643.617f, 243.135f)))) - ZipLinePaths(new ZipLinePath(137, false, List(Vector3(978.861f, 1641.87f, 243.153f), Vector3(970.657f, 1593.573f, 258.04f), Vector3(971.092f, 1584.88f, 260.944f), Vector3(973.55f, 1521.127f, 280.863f), Vector3(973.104f, 1507.604f, 283.349f), Vector3(979.459f, 1494.081f, 283.153f)))) - ZipLinePaths(new ZipLinePath(138, false, List(Vector3(1027.608f, 1471.856f, 283.135f), Vector3(1044.922f, 1421.966f, 285.242f), Vector3(1042.036f, 1372.076f, 292.602f), Vector3(1042.75f, 1322.185f, 291.763f), Vector3(1040.202f, 1282.273f, 281.511f)))) - ZipLinePaths(new ZipLinePath(139, false, List(Vector3(1140.673f, 973.599f, 176.313f), Vector3(1138.394f, 1020.478f, 196.964f), Vector3(1136.116f, 1067.357f, 216.913f), Vector3(1135.446f, 1081.145f, 225.28f), Vector3(1134.776f, 1094.932f, 226.989f)))) - ZipLinePaths(new ZipLinePath(140, false, List(Vector3(1150.479f, 968.34f, 176.29f), Vector3(1170.472f, 984.147f, 176.49f), Vector3(1190.466f, 999.954f, 176.39f), Vector3(1230.453f, 1031.568f, 174.132f), Vector3(1253.974f, 1050.164f, 172.501f)))) - ZipLinePaths(new ZipLinePath(141, false, List(Vector3(1106.342f, 1106.197f, 226.95f), Vector3(1054.565f, 1048.43f, 236.347f), Vector3(1002.788f, 990.663f, 243.55f)))) - ZipLinePaths(new ZipLinePath(142, false, List(Vector3(984.255f, 1002.808f, 243.547f), Vector3(985.338f, 1010.52f, 242.265f), Vector3(986.422f, 1018.232f, 227.484f), Vector3(988.588f, 1033.656f, 203.92f), Vector3(992.666f, 1062.689f, 163.68f)))) - ZipLinePaths(new ZipLinePath(143, false, List(Vector3(1116.114f, 1046.375f, 177.28f), Vector3(1147.41f, 1042.571f, 218.111f), Vector3(1153.853f, 1041.788f, 233.89f), Vector3(1160.296f, 1041.005f, 235.77f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(991.811f, 888.539f, 243.475f), Vector3(1039.377f, 875.966f, 257.645f), Vector3(1046.137f, 873.294f, 258.908f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(1098.527f, 830.352f, 258.89f), Vector3(1102.497f, 826.527f, 258.518f), Vector3(1106.468f, 822.701f, 238.745f)))) - ZipLinePaths(new ZipLinePath(146, false, List(Vector3(1094.341f, 828.58f, 258.89f), Vector3(1089.367f, 823.039f, 258.018f), Vector3(1085.594f, 827.098f, 235.645f), Vector3(1076.848f, 825.616f, 212.9f), Vector3(1059.355f, 822.653f, 166.153f), Vector3(1055.157f, 821.942f, 152.602f)))) - ZipLinePaths(new ZipLinePath(147, false, List(Vector3(1101.107f, 835.443f, 258.89f), Vector3(1105.861f, 841.292f, 255.843f), Vector3(1108.616f, 842.741f, 235.297f), Vector3(1115.326f, 847.639f, 212.204f), Vector3(1129.545f, 859.835f, 164.77f), Vector3(1130.939f, 861.031f, 157.68f)))) - ZipLinePaths(new ZipLinePath(148, false, List(Vector3(1118.348f, 875.124f, 150.465f), Vector3(1118.914f, 870.112f, 157.173f), Vector3(1119.479f, 865.099f, 157.68f)))) - ZipLinePaths(new ZipLinePath(149, false, List(Vector3(1205.55f, 1041.13f, 224.344f), Vector3(1217.347f, 1039.221f, 223.849f), Vector3(1229.145f, 1037.313f, 222.554f), Vector3(1252.74f, 1033.497f, 207.297f), Vector3(1299.93f, 1025.864f, 189.531f), Vector3(1336.016f, 1020.029f, 174.385f)))) - ZipLinePaths(new ZipLinePath(150, false, List(Vector3(1122.96f, 1201.699f, 226.948f), Vector3(1121.853f, 1205.357f, 226.351f), Vector3(1120.746f, 1209.015f, 223.454f), Vector3(1118.532f, 1215.13f, 206.461f), Vector3(1114.104f, 1228.561f, 186.473f), Vector3(1111.624f, 1236.082f, 172.915f)))) - ZipLinePaths(new ZipLinePath(151, false, List(Vector3(1058.953f, 1136.079f, 226.996f), Vector3(1036.782f, 1130.339f, 224.438f), Vector3(1014.612f, 1124.599f, 207.629f), Vector3(999.536f, 1120.695f, 199.391f)))) - ZipLinePaths(new ZipLinePath(152, false, List(Vector3(980.433f, 1115.376f, 198.361f), Vector3(969.648f, 1109.169f, 197.774f), Vector3(958.864f, 1102.962f, 195.794f)))) - ZipLinePaths(new ZipLinePath(153, false, List(Vector3(904.04f, 1103.835f, 185.723f), Vector3(892.316f, 1095.63f, 184.78f), Vector3(886.454f, 1091.528f, 183.762f), Vector3(883.524f, 1089.477f, 183.053f), Vector3(880.593f, 1087.427f, 182.544f), Vector3(876.55f, 1084.598f, 182.144f), Vector3(835.315f, 1055.742f, 171.252f)))) - ZipLinePaths(new ZipLinePath(154, false, List(Vector3(1133.265f, 778.345f, 198.777f), Vector3(1131.568f, 771.562f, 198.189f), Vector3(1129.872f, 764.779f, 194.804f), Vector3(1126.478f, 751.214f, 169.036f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(1108.775f, 811.315f, 198.776f), Vector3(1106.722f, 813.77f, 198.054f), Vector3(1104.669f, 816.226f, 175.432f), Vector3(1102.963f, 817.937f, 153.088f)))) - ZipLinePaths(new ZipLinePath(156, false, List(Vector3(306.846f, 1041.014f, 233.036f), Vector3(305.881f, 1023.7f, 236.553f), Vector3(342.015f, 951.186f, 234.539f), Vector3(393.984f, 925.058f, 236.511f), Vector3(405.219f, 918.196f, 233.135f)))) - ZipLinePaths(new ZipLinePath(157, false, List(Vector3(422.655f, 878.634f, 234.823f), Vector3(462.703f, 878.635f, 252.642f), Vector3(512.448f, 879.331f, 268.067f), Vector3(537.916f, 878.972f, 272.078f)))) - ZipLinePaths(new ZipLinePath(158, false, List(Vector3(550.586f, 914.859f, 273.135f), Vector3(609.031f, 945.539f, 276.386f), Vector3(648.677f, 946.718f, 274.915f), Vector3(662.14f, 946.656f, 273.135f)))) - ZipLinePaths(new ZipLinePath(159, false, List(Vector3(675.759f, 912.206f, 273.905f), Vector3(733.511f, 909.282f, 296.348f), Vector3(785.289f, 906.66f, 296.654f), Vector3(816.157f, 905.097f, 284.534f)))) - ZipLinePaths(new ZipLinePath(160, false, List(Vector3(336.043f, 1137.71f, 233.109f), Vector3(351.767f, 1137.575f, 237.165f), Vector3(416.64f, 1106.569f, 235.944f), Vector3(456.726f, 1105.644f, 223.541f), Vector3(470.089f, 1105.336f, 215.777f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(487.928f, 1066.814f, 213.142f), Vector3(543.338f, 1039.103f, 216.896f), Vector3(599.192f, 1039.599f, 194.845f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(616.478f, 1073.332f, 192.31f), Vector3(671.491f, 1073.589f, 177.53f), Vector3(736.004f, 1042.347f, 176.388f), Vector3(809.069f, 1041.654f, 174.357f)))) - ZipLinePaths(new ZipLinePath(163, true, List(Vector3(1201.936f, 910.752f, 325.469f), Vector3(1222.351f, 877.804f, 341.059f)))) - ZipLinePaths(new ZipLinePath(164, true, List(Vector3(1201.024f, 928.787f, 344.577f), Vector3(1248.519f, 941.266f, 331.252f), Vector3(1257.731f, 943.513f, 327.969f)))) - ZipLinePaths(new ZipLinePath(165, true, List(Vector3(964.275f, 1096.252f, 332.469f), Vector3(992.303f, 1071.769f, 345.489f)))) - ZipLinePaths(new ZipLinePath(166, true, List(Vector3(961.598f, 1106.636f, 349.565f), Vector3(1008.607f, 1122.679f, 338.887f), Vector3(1021.012f, 1127.083f, 334.969f)))) + ZipLinePaths( + new ZipLinePath( + 1, + false, + List( + Vector3(836.538f, 971.683f, 284.533f), + Vector3(847.701f, 992.693f, 286.866f), + Vector3(858.864f, 1013.704f, 281.7f), + Vector3(888.189f, 1055.323f, 278.792f), + Vector3(903.14f, 1076.54f, 276.458f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 2, + false, + List( + Vector3(891.205f, 996.755f, 333.27f), + Vector3(915.423f, 1041.517f, 331.172f), + Vector3(934.891f, 1077.502f, 329.469f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 3, + false, + List( + Vector3(914.981f, 1087.151f, 329.469f), + Vector3(900.695f, 1039.306f, 331.566f), + Vector3(887.839f, 996.247f, 333.27f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 4, + false, + List( + Vector3(933.653f, 971.335f, 168.794f), + Vector3(937.301f, 1022.074f, 165.936f), + Vector3(938.446f, 1037.992f, 163.681f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(934.919f, 1077.717f, 266.709f), + Vector3(961.063f, 1120.966f, 259.938f), + Vector3(987.208f, 1164.215f, 253.129f), + Vector3(1007.713f, 1198.136f, 247.251f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 6, + false, + List( + Vector3(938.361f, 988.199f, 311.465f), + Vector3(923.02f, 985.78f, 329.386f), + Vector3(915.349f, 984.57f, 332.477f), + Vector3(907.679f, 983.361f, 333.269f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(7, true, List(Vector3(939.932f, 1041.648f, 266.204f), Vector3(940.903f, 1041.5f, 298.33f))) + ) + ZipLinePaths( + new ZipLinePath(8, false, List(Vector3(943.877f, 1037.999f, 298.844f), Vector3(952.428f, 1001.712f, 290.08f))) + ) + ZipLinePaths( + new ZipLinePath(9, true, List(Vector3(954.385f, 849.776f, 184.25f), Vector3(955.581f, 843.708f, 189.734f))) + ) + ZipLinePaths( + new ZipLinePath( + 10, + false, + List( + Vector3(963.215f, 1070.363f, 195.797f), + Vector3(973.055f, 987.338f, 186.251f), + Vector3(982.896f, 904.313f, 169.711f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 11, + false, + List( + Vector3(966.382f, 981.995f, 161.207f), + Vector3(1015.066f, 995.9f, 155.835f), + Vector3(1044.658f, 1004.352f, 151.164f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 12, + false, + List( + Vector3(974.465f, 889.406f, 242.321f), + Vector3(982.997f, 939.684f, 243.607f), + Vector3(988.779f, 964.53f, 243.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 13, + false, + List( + Vector3(977.059f, 975.908f, 243.599f), + Vector3(955.688f, 987.508f, 259.673f), + Vector3(934.317f, 999.109f, 266.758f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 14, + false, + List( + Vector3(978.289f, 856.17f, 190.258f), + Vector3(1014.241f, 891.248f, 199.82f), + Vector3(1050.194f, 926.326f, 208.633f), + Vector3(1086.147f, 961.404f, 217.447f), + Vector3(1122.1f, 996.482f, 226.26f), + Vector3(1158.052f, 1031.559f, 235.073f), + Vector3(1162.987f, 1036.374f, 235.778f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 15, + false, + List( + Vector3(979.631f, 833.334f, 184.752f), + Vector3(1026.998f, 815.027f, 190.209f), + Vector3(1074.362f, 796.721f, 194.915f), + Vector3(1095.651f, 787.956f, 198.196f), + Vector3(1116.94f, 779.191f, 198.779f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 16, + false, + List( + Vector3(985.905f, 1139.875f, 185.717f), + Vector3(1035.448f, 1151.71f, 183.938f), + Vector3(1084.991f, 1163.545f, 181.413f), + Vector3(1199.62f, 1190.927f, 173.376f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 17, + false, + List( + Vector3(990.859f, 893.127f, 243.457f), + Vector3(1015.97f, 937.469f, 246.208f), + Vector3(1041.079f, 981.81f, 248.211f), + Vector3(1066.187f, 1026.152f, 250.214f), + Vector3(1091.295f, 1070.491f, 252.217f), + Vector3(1112.956f, 1108.744f, 251.464f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 18, + false, + List( + Vector3(993.026f, 1140.513f, 163.68f), + Vector3(1043.97f, 1138.533f, 167.62f), + Vector3(1094.914f, 1136.553f, 167.313f), + Vector3(1138.865f, 1134.845f, 159.356f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 19, + false, + List( + Vector3(995.568f, 812.403f, 230.182f), + Vector3(1041.682f, 791.189f, 235.778f), + Vector3(1087.887f, 771.408f, 238.747f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 20, + false, + List( + Vector3(992.183f, 1215.784f, 247.281f), + Vector3(981.853f, 1198.469f, 247.506f), + Vector3(967.423f, 1179.655f, 230.129f), + Vector3(938.562f, 1142.027f, 214.269f), + Vector3(914.896f, 1111.172f, 198.717f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(21, true, List(Vector3(1008.642f, 1065.179f, 390.74f), Vector3(1007.733f, 1064.686f, 397.4f))) + ) + ZipLinePaths( + new ZipLinePath( + 22, + false, + List( + Vector3(1012.554f, 945.371f, 374.294f), + Vector3(1015.582f, 995.593f, 382.861f), + Vector3(1018.849f, 1049.753f, 391.246f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(23, true, List(Vector3(1013.884f, 1025.019f, 142.543f), Vector3(1020.3f, 1023.318f, 175.782f))) + ) + ZipLinePaths( + new ZipLinePath( + 24, + false, + List( + Vector3(1016.788f, 976.956f, 290.079f), + Vector3(1037.293f, 987.803f, 297.838f), + Vector3(1052.799f, 987.151f, 298.604f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(25, true, List(Vector3(1017.555f, 1209.063f, 246.75f), Vector3(1026.884f, 1205.121f, 278.991f))) + ) + ZipLinePaths( + new ZipLinePath(26, true, List(Vector3(1028.886f, 1103.328f, 286.367f), Vector3(1055.503f, 1125.922f, 275.57f))) + ) + ZipLinePaths( + new ZipLinePath( + 27, + false, + List( + Vector3(1022.812f, 888.35f, 314.685f), + Vector3(1017.773f, 897.973f, 313.941f), + Vector3(1012.734f, 907.596f, 309.402f), + Vector3(1002.656f, 926.842f, 298.124f), + Vector3(995.734f, 936.909f, 290.113f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 28, + false, + List( + Vector3(1036.004f, 936.681f, 386.369f), + Vector3(1059.533f, 929.476f, 395.648f), + Vector3(1127.297f, 908.725f, 403.708f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 29, + false, + List( + Vector3(1037.586f, 1219.441f, 247.248f), + Vector3(1094.923f, 1205.287f, 251.306f), + Vector3(1144.261f, 1193.533f, 256.623f), + Vector3(1172.316f, 1186.849f, 258.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 30, + false, + List( + Vector3(1046.508f, 1118.947f, 329.469f), + Vector3(1060.289f, 1101.823f, 351.796f), + Vector3(1072.008f, 1099.988f, 353.752f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 31, + false, + List( + Vector3(1048.769f, 877.431f, 258.896f), + Vector3(1025.9f, 919.197f, 256.184f), + Vector3(1004.233f, 963.463f, 243.602f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 32, + false, + List( + Vector3(1056.116f, 1209.807f, 279.498f), + Vector3(1081.23f, 1208.288f, 281.785f), + Vector3(1106.344f, 1206.769f, 271.873f), + Vector3(1156.572f, 1203.731f, 263.593f), + Vector3(1178.239f, 1202.421f, 258.356f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 33, + false, + List( + Vector3(1052.422f, 1061.776f, 402.752f), + Vector3(1070.817f, 1049.448f, 400.654f), + Vector3(1089.212f, 1037.22f, 382.509f), + Vector3(1139.78f, 998.768f, 343.26f), + Vector3(1190.349f, 960.317f, 322.483f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 34, + false, + List( + Vector3(1055.905f, 1160.678f, 276.088f), + Vector3(1045.246f, 1178.08f, 272.165f), + Vector3(1034.588f, 1195.482f, 249.548f), + Vector3(1026.775f, 1204.718f, 247.268f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 35, + false, + List( + Vector3(1064.229f, 937.492f, 177.28f), + Vector3(1046.544f, 929.061f, 185.858f), + Vector3(945.523f, 879.87f, 179.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(36, true, List(Vector3(1065.916f, 938.66f, 141.799f), Vector3(1067.133f, 939.027f, 176.78f))) + ) + ZipLinePaths( + new ZipLinePath( + 37, + false, + List( + Vector3(1072.997f, 941.22f, 177.28f), + Vector3(1109.124f, 932.355f, 212.906f), + Vector3(1145.251f, 923.49f, 247.789f), + Vector3(1160.018f, 920.113f, 270.727f), + Vector3(1174.786f, 916.736f, 276.061f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(38, true, List(Vector3(1070.568f, 856.858f, 246.887f), Vector3(1082.745f, 845f, 253.59f))) + ) + ZipLinePaths( + new ZipLinePath( + 39, + false, + List( + Vector3(1079.844f, 944.446f, 298.543f), + Vector3(1073.849f, 937.71f, 296.436f), + Vector3(1067.854f, 930.974f, 291.128f), + Vector3(1058.565f, 910.402f, 271.726f), + Vector3(1053.718f, 878.816f, 258.901f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(40, true, List(Vector3(1079.369f, 865.469f, 314.138f), Vector3(1080.588f, 868.474f, 346.32f))) + ) + ZipLinePaths( + new ZipLinePath( + 41, + false, + List( + Vector3(1084.523f, 1069.966f, 353.759f), + Vector3(1081.809f, 1063.602f, 357.778f), + Vector3(1034.51f, 952.682f, 374.294f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 42, + false, + List( + Vector3(1085.074f, 1117.049f, 329.482f), + Vector3(1126.078f, 1090.896f, 340.496f), + Vector3(1158.06f, 1070.496f, 369.607f), + Vector3(1190.043f, 1050.096f, 358.773f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 43, + false, + List( + Vector3(1098.34f, 1019.147f, 303.582f), + Vector3(1119.333f, 1053.316f, 306.9f), + Vector3(1136.027f, 1072.485f, 308.32f), + Vector3(1164.178f, 1104.808f, 310.373f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 44, + false, + List( + Vector3(1105.737f, 792.054f, 198.806f), + Vector3(1070.649f, 827.286f, 214.8f), + Vector3(1054.607f, 839.119f, 226.703f), + Vector3(1038.566f, 850.953f, 230.21f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(45, true, List(Vector3(1116.13f, 1100.883f, 144.66f), Vector3(1110.411f, 1100.113f, 158.152f))) + ) + ZipLinePaths( + new ZipLinePath(46, true, List(Vector3(1114.444f, 979.815f, 293.08f), Vector3(1109.115f, 962.793f, 308.08f))) + ) + ZipLinePaths( + new ZipLinePath(47, true, List(Vector3(1116.152f, 1049.326f, 142.011f), Vector3(1115.709f, 1049.785f, 176.78f))) + ) + ZipLinePaths( + new ZipLinePath( + 48, + false, + List( + Vector3(1117.339f, 1055.876f, 177.28f), + Vector3(1086.425f, 1067.357f, 215.618f), + Vector3(1055.51f, 1078.838f, 253.203f), + Vector3(1041.598f, 1084.004f, 287.634f), + Vector3(1027.687f, 1089.171f, 286.868f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 49, + false, + List( + Vector3(1122.141f, 828.5f, 238.746f), + Vector3(1122.477f, 879.466f, 236.861f), + Vector3(1122.813f, 930.432f, 235.059f), + Vector3(1123.15f, 981.397f, 233.257f), + Vector3(1123.486f, 1032.363f, 231.454f), + Vector3(1123.822f, 1083.325f, 229.652f), + Vector3(1123.901f, 1095.316f, 226.948f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 50, + false, + List( + Vector3(1134.036f, 816.858f, 247.409f), + Vector3(1151.499f, 864.219f, 255.407f), + Vector3(1168.962f, 911.58f, 262.664f), + Vector3(1186.424f, 958.942f, 275.422f), + Vector3(1200.805f, 997.945f, 273.992f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 51, + false, + List( + Vector3(1139.77f, 957.718f, 176.286f), + Vector3(1132.14f, 908.884f, 185.036f), + Vector3(1124.511f, 860.05f, 192.594f), + Vector3(1115.539f, 816.446f, 198.783f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(52, true, List(Vector3(1142.063f, 961.706f, 141.954f), Vector3(1141.833f, 962.65f, 175.78f))) + ) + ZipLinePaths( + new ZipLinePath( + 53, + false, + List( + Vector3(1145.255f, 912.243f, 322.464f), + Vector3(1103.666f, 923.587f, 370.23f), + Vector3(1044.747f, 939.657f, 374.346f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 54, + false, + List( + Vector3(1146.629f, 1086.09f, 159.359f), + Vector3(1139.974f, 1061.468f, 161.182f), + Vector3(1133.32f, 1036.847f, 154.174f), + Vector3(1127.272f, 1018.487f, 151.164f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 55, + false, + List( + Vector3(1147.433f, 952.501f, 403.715f), + Vector3(1174.421f, 980.424f, 402.039f), + Vector3(1196.024f, 997.07f, 385.462f), + Vector3(1217.428f, 1021.717f, 379.623f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 56, + false, + List( + Vector3(1146.091f, 1104.1f, 226.953f), + Vector3(1153.881f, 1075.162f, 231.716f), + Vector3(1157.777f, 1060.694f, 233.893f), + Vector3(1161.672f, 1046.225f, 235.775f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 57, + false, + List( + Vector3(1155.908f, 799.632f, 198.811f), + Vector3(1168.474f, 810.457f, 198.687f), + Vector3(1189.041f, 833.683f, 180.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 58, + false, + List( + Vector3(1166.637f, 1138.424f, 172.501f), + Vector3(1141.554f, 1141.091f, 174.082f), + Vector3(1116.472f, 1143.758f, 176.164f), + Vector3(1066.306f, 1149.092f, 177.327f), + Vector3(963.976f, 1160.06f, 175.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 59, + false, + List( + Vector3(1174.081f, 905.841f, 276.08f), + Vector3(1130.6f, 885.114f, 263.381f), + Vector3(1087.118f, 864.386f, 249.969f), + Vector3(1085.379f, 863.557f, 247.451f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 60, + false, + List( + Vector3(1187.233f, 1047.423f, 288.282f), + Vector3(1137.464f, 1046.202f, 284.343f), + Vector3(1087.696f, 1044.981f, 279.663f), + Vector3(1037.928f, 1043.76f, 274.983f), + Vector3(988.16f, 1042.54f, 270.303f), + Vector3(957.304f, 1041.783f, 266.706f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(61, true, List(Vector3(1195.866f, 1024.645f, 358.26f), Vector3(1196.547f, 1025.43f, 364.697f))) + ) + ZipLinePaths( + new ZipLinePath( + 62, + false, + List( + Vector3(1202.279f, 1065.203f, 379.973f), + Vector3(1158.316f, 1091.763f, 366.789f), + Vector3(1087.976f, 1134.259f, 329.503f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 63, + false, + List( + Vector3(1218.329f, 982.117f, 322.441f), + Vector3(1167.462f, 1031.49f, 333.463f), + Vector3(1135.987f, 1060.504f, 343.613f), + Vector3(1120.25f, 1075.012f, 352.689f), + Vector3(1107.313f, 1084.519f, 353.763f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 64, + false, + List( + Vector3(1205.974f, 885.662f, 276.074f), + Vector3(1174.101f, 851.537f, 258.901f), + Vector3(1142.229f, 817.412f, 238.784f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 65, + false, + List( + Vector3(1209.137f, 1025.929f, 379.998f), + Vector3(1164.331f, 1045.57f, 370.44f), + Vector3(1098.915f, 1074.246f, 353.764f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 66, + false, + List( + Vector3(1210.968f, 1035.861f, 159.356f), + Vector3(1220.734f, 986.826f, 159.704f), + Vector3(1229.132f, 944.655f, 157.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 67, + false, + List( + Vector3(1211.43f, 918.994f, 193.301f), + Vector3(1162.516f, 912.134f, 181.339f), + Vector3(1113.603f, 905.273f, 173.561f), + Vector3(1064.689f, 898.413f, 165.783f), + Vector3(1038.276f, 894.708f, 161.212f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 68, + false, + List( + Vector3(1212.954f, 1184.48f, 258.387f), + Vector3(1241.887f, 1146.113f, 277.704f), + Vector3(1267.32f, 1107.245f, 296.218f), + Vector3(1292.754f, 1068.378f, 314.731f), + Vector3(1305.725f, 1048.556f, 330.249f), + Vector3(1318.696f, 1028.734f, 333.772f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 69, + false, + List( + Vector3(1223.233f, 1112.938f, 190.58f), + Vector3(1231.772f, 1063.768f, 188.214f), + Vector3(1240.31f, 1014.599f, 187.788f), + Vector3(1248.849f, 965.432f, 185.763f), + Vector3(1257.388f, 916.265f, 183.037f), + Vector3(1259.362f, 898.065f, 180.716f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 70, + false, + List( + Vector3(1230.107f, 1045.135f, 235.77f), + Vector3(1244.028f, 1094.167f, 238.081f), + Vector3(1257.948f, 1143.2f, 239.652f), + Vector3(1264.226f, 1165.313f, 237.807f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 71, + false, + List( + Vector3(1231.002f, 1035.87f, 235.822f), + Vector3(1254.525f, 996.863f, 257.139f), + Vector3(1271.932f, 967.997f, 272.932f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 72, + false, + List( + Vector3(1234.91f, 912.664f, 157.928f), + Vector3(1250.804f, 960.648f, 165.181f), + Vector3(1266.698f, 1008.632f, 171.942f), + Vector3(1270.75f, 1020.863f, 172.504f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(1255.485f, 1182.81f, 237.946f), + Vector3(1206.913f, 1195.741f, 241.873f), + Vector3(1195.984f, 1200.291f, 246.675f), + Vector3(1144.741f, 1209.557f, 249.088f), + Vector3(1096.169f, 1221.288f, 250.963f), + Vector3(1047.598f, 1233.019f, 251.938f), + Vector3(1032.812f, 1235.4f, 247.246f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(74, true, List(Vector3(1265.476f, 927.817f, 279.476f), Vector3(1239.733f, 924.791f, 275.521f))) + ) + ZipLinePaths( + new ZipLinePath( + 75, + false, + List( + Vector3(1313.487f, 1015.418f, 333.739f), + Vector3(1293.092f, 1007.868f, 334.409f), + Vector3(1270.097f, 998.818f, 326.879f), + Vector3(1241.583f, 987.596f, 322.436f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(76, true, List(Vector3(845.661f, 953.94f, 284.032f), Vector3(833.71f, 937.902f, 284.032f))) + ) + ZipLinePaths( + new ZipLinePath( + 77, + false, + List( + Vector3(1101.112f, 1092.318f, 158.581f), + Vector3(1043.9f, 1067.37f, 165.921f), + Vector3(986.689f, 1042.422f, 164.515f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 78, + false, + List( + Vector3(1053.642f, 972.17f, 298.563f), + Vector3(1016.137f, 939.284f, 295.811f), + Vector3(988.785f, 915.864f, 290.753f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(79, true, List(Vector3(1074.661f, 994.089f, 303.08f), Vector3(1074.232f, 994.714f, 308.08f))) + ) + ZipLinePaths( + new ZipLinePath(80, true, List(Vector3(1104.434f, 964.517f, 298.08f), Vector3(1104.444f, 964.415f, 303.08f))) + ) + ZipLinePaths( + new ZipLinePath( + 81, + false, + List( + Vector3(1208.005f, 939.596f, 276.045f), + Vector3(1208.715f, 962.582f, 276.316f), + Vector3(1209.426f, 985.568f, 273.988f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 82, + false, + List( + Vector3(1179.915f, 1003.14f, 273.987f), + Vector3(1160.46f, 995.32f, 293.853f), + Vector3(1141.005f, 987.5f, 305.972f), + Vector3(1127.232f, 982.307f, 308.622f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 83, + false, + List( + Vector3(1127.071f, 968.872f, 308.503f), + Vector3(1123.104f, 919.425f, 315.516f), + Vector3(1121.438f, 898.657f, 314.64f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 84, + false, + List( + Vector3(1046.507f, 915.223f, 314.639f), + Vector3(1025.3f, 953.238f, 318.323f), + Vector3(1014.696f, 972.745f, 314.793f), + Vector3(1002.593f, 984.253f, 311.55f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 85, + false, + List( + Vector3(1096.244f, 942.801f, 298.563f), + Vector3(1099.948f, 933.29f, 297.281f), + Vector3(1103.653f, 921.579f, 289.539f), + Vector3(1111.063f, 900.358f, 272.895f), + Vector3(1125.882f, 857.914f, 247.906f), + Vector3(1133.885f, 834.994f, 238.784f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 86, + false, + List( + Vector3(1097.66f, 942.464f, 303.601f), + Vector3(1135.823f, 912.095f, 324.74f), + Vector3(1147.795f, 902.568f, 322.452f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 87, + false, + List( + Vector3(1082.528f, 1018.227f, 303.597f), + Vector3(1079.498f, 1050.159f, 301.494f), + Vector3(1075.269f, 1067.092f, 291.668f), + Vector3(1066.51f, 1121.357f, 276.083f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 88, + false, + List( + Vector3(1098.415f, 1019.645f, 308.636f), + Vector3(1117.982f, 1034.342f, 306.546f), + Vector3(1137.549f, 1046.439f, 290.602f), + Vector3(1150.978f, 1055.634f, 280.545f), + Vector3(1164.406f, 1064.828f, 274.032f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 89, + false, + List( + Vector3(1178.956f, 772.235f, 282.489f), + Vector3(1204.251f, 811.257f, 304.124f), + Vector3(1229.045f, 845.879f, 324.961f), + Vector3(1231.033f, 852.574f, 322.473f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 90, + false, + List( + Vector3(1112.743f, 751.134f, 282.462f), + Vector3(1088.902f, 756.732f, 284.043f), + Vector3(1065.062f, 762.33f, 273.139f), + Vector3(1017.381f, 773.527f, 263.073f), + Vector3(969.701f, 784.724f, 253.007f), + Vector3(951.396f, 782.683f, 243.001f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 91, + false, + List( + Vector3(943.422f, 797.726f, 243.265f), + Vector3(916.11f, 837.921f, 259.473f), + Vector3(888.799f, 878.117f, 281.944f), + Vector3(868.449f, 908.066f, 284.555f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 92, + false, + List( + Vector3(879.92f, 943.053f, 284.535f), + Vector3(902.968f, 950.268f, 293.299f), + Vector3(926.016f, 957.483f, 290.07f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 93, + false, + List( + Vector3(1315.471f, 956.81f, 322.442f), + Vector3(1332.853f, 1004.046f, 316.074f), + Vector3(1347.126f, 1047.02f, 302.549f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 94, + false, + List( + Vector3(1319.352f, 1102.721f, 302.539f), + Vector3(1274.436f, 1124.169f, 308.086f), + Vector3(1251.978f, 1134.893f, 312.979f), + Vector3(1229.521f, 1145.617f, 310.373f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 95, + false, + List( + Vector3(1174.169f, 1166.809f, 310.388f), + Vector3(1131.408f, 1190.417f, 300.433f), + Vector3(1088.647f, 1214.025f, 289.744f), + Vector3(1067.266f, 1225.83f, 279.474f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 96, + false, + List( + Vector3(975.449f, 1215.112f, 279.493f), + Vector3(951.71f, 1171.246f, 280.186f), + Vector3(927.97f, 1127.38f, 273.129f), + Vector3(907.554f, 1089.655f, 266.706f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 97, + false, + List( + Vector3(1310.139f, 1087.265f, 302.549f), + Vector3(1262.453f, 1075.564f, 293.844f), + Vector3(1245.285f, 1071.352f, 288.291f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(98, true, List(Vector3(837.962f, 950.527f, 284.032f), Vector3(839.502f, 937.417f, 297.199f))) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List( + Vector3(1107.188f, 867.405f, 157.685f), + Vector3(1057.731f, 866.462f, 167.734f), + Vector3(1033.002f, 865.991f, 168.798f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 100, + false, + List( + Vector3(1034.19f, 1151.24f, 276.07f), + Vector3(1027.155f, 1171.499f, 282.137f), + Vector3(1020.12f, 1186.259f, 279.493f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List( + Vector3(1182.343f, 1165.265f, 258.349f), + Vector3(1182.153f, 1158.271f, 259.739f), + Vector3(1181.964f, 1151.276f, 257.847f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List( + Vector3(1188.742f, 1150.284f, 226.948f), + Vector3(1191.712f, 1126.486f, 218.923f), + Vector3(1194.683f, 1102.689f, 201.903f), + Vector3(1197.654f, 1078.891f, 176.509f), + Vector3(1200.624f, 1055.093f, 159.356f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(103, true, List(Vector3(845.985f, 940.029f, 284.032f), Vector3(857.812f, 940.784f, 284.032f))) + ) + ZipLinePaths( + new ZipLinePath(104, true, List(Vector3(913.217f, 1126.673f, 167.8f), Vector3(905.95f, 1128.761f, 185.226f))) + ) + ZipLinePaths( + new ZipLinePath(105, true, List(Vector3(985.057f, 1117.279f, 185.226f), Vector3(977.383f, 1119.22f, 167.8f))) + ) + ZipLinePaths( + new ZipLinePath(106, true, List(Vector3(1194.756f, 855.428f, 162.8f), Vector3(1186.752f, 855.411f, 180.226f))) + ) + ZipLinePaths( + new ZipLinePath(107, true, List(Vector3(1266.08f, 858.242f, 180.226f), Vector3(1258.221f, 859.327f, 162.8f))) + ) + ZipLinePaths( + new ZipLinePath( + 108, + false, + List( + Vector3(1022.699f, 1016.759f, 176.299f), + Vector3(1059.517f, 982.522f, 168.496f), + Vector3(1096.335f, 948.284f, 159.955f), + Vector3(1133.154f, 914.047f, 150.468f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(109, true, List(Vector3(999.063f, 970.346f, 243.032f), Vector3(992.956f, 976.089f, 248.532f))) + ) + ZipLinePaths( + new ZipLinePath( + 110, + true, + List(Vector3(1213.98f, 1136.817f, 257.332f), Vector3(1205.284f, 1135.873f, 262.831f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 111, + false, + List( + Vector3(1195.134f, 1025.819f, 224.31f), + Vector3(1196.763f, 1005.379f, 221.528f), + Vector3(1198.393f, 984.938f, 196.447f), + Vector3(1201.652f, 944.057f, 167.843f), + Vector3(1202.63f, 931.792f, 157.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 112, + false, + List( + Vector3(1195.142f, 1055.611f, 224.31f), + Vector3(1176.148f, 1102.906f, 226.827f), + Vector3(1167.582f, 1124.236f, 226.948f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(113, true, List(Vector3(1187.101f, 1041.722f, 223.81f), Vector3(1187.004f, 1030.267f, 230.47f))) + ) + ZipLinePaths( + new ZipLinePath( + 114, + false, + List( + Vector3(1007.547f, 268.934f, 243.11f), + Vector3(1007.527f, 292.646f, 244.644f), + Vector3(1018.508f, 316.357f, 244.279f), + Vector3(1024.908f, 330.77f, 243.857f), + Vector3(1035.909f, 347.383f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 115, + false, + List( + Vector3(1068.89f, 344.904f, 243.148f), + Vector3(1070.937f, 349.779f, 243.278f), + Vector3(1072.784f, 354.654f, 243.921f), + Vector3(1074.728f, 380.202f, 237.744f), + Vector3(1075.073f, 405.551f, 231.566f), + Vector3(1072.861f, 425.05f, 229.663f), + Vector3(1073.449f, 444.349f, 228.36f), + Vector3(1075.437f, 463.847f, 225.656f), + Vector3(1075.625f, 483.346f, 225.553f), + Vector3(1076.013f, 534.043f, 210.998f), + Vector3(1075.593f, 583.763f, 198.865f), + Vector3(1072.743f, 599.762f, 185.09f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 116, + false, + List( + Vector3(1049.463f, 621.931f, 183.136f), + Vector3(1053.439f, 640.477f, 184.404f), + Vector3(1058.226f, 649.75f, 184.889f), + Vector3(1063.214f, 659.024f, 185.773f), + Vector3(1070.682f, 677.638f, 184.48f), + Vector3(1070.351f, 696.253f, 182.787f), + Vector3(1075.419f, 712.467f, 181.094f), + Vector3(1072.688f, 730.282f, 177.102f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 117, + false, + List( + Vector3(993.254f, 456.81f, 223.2f), + Vector3(1005.741f, 456.241f, 223.7f), + Vector3(1011.984f, 455.957f, 223.7f), + Vector3(1018.228f, 455.673f, 223.201f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(960.308f, 504.697f, 218.191f), + Vector3(938.836f, 502.633f, 219.836f), + Vector3(929.464f, 487.568f, 219.381f), + Vector3(919.607f, 494.021f, 219.521f), + Vector3(919.542f, 520.634f, 222.656f), + Vector3(919.478f, 547.248f, 223.79f), + Vector3(938.214f, 551.461f, 223.725f), + Vector3(967.915f, 554.863f, 223.617f), + Vector3(967.766f, 571.564f, 223.363f), + Vector3(966.692f, 580.615f, 223.236f), + Vector3(952.817f, 588.865f, 223.202f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 119, + false, + List( + Vector3(941.828f, 613.476f, 223.231f), + Vector3(925.918f, 616.335f, 223.995f), + Vector3(920.563f, 629.564f, 227.029f), + Vector3(921.008f, 642.794f, 228.864f), + Vector3(934.83f, 647.518f, 228.224f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 120, + false, + List( + Vector3(948.435f, 649.569f, 228.256f), + Vector3(952.455f, 664.02f, 228.749f), + Vector3(956.475f, 678.47f, 228.243f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 121, + false, + List( + Vector3(942.908f, 710.963f, 233.188f), + Vector3(936.267f, 720.101f, 235.096f), + Vector3(936.451f, 734.912f, 237.896f), + Vector3(922.235f, 750.819f, 238.936f), + Vector3(922.627f, 767.772f, 243.356f), + Vector3(922.219f, 784.725f, 243.576f), + Vector3(921.702f, 787.641f, 243.208f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 122, + false, + List( + Vector3(1111.15f, 207.047f, 243.135f), + Vector3(1157.929f, 227.358f, 243.888f), + Vector3(1204.708f, 247.669f, 243.885f), + Vector3(1209.294f, 249.66f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 123, + false, + List( + Vector3(1198.789f, 297.547f, 243.146f), + Vector3(1197.337f, 322.502f, 247.098f), + Vector3(1197.485f, 347.457f, 249.86f), + Vector3(1197.781f, 397.368f, 264.825f), + Vector3(1197.277f, 447.279f, 277.09f), + Vector3(1197.109f, 463.915f, 281.276f), + Vector3(1197.37f, 477.616f, 283.749f), + Vector3(1196.881f, 486.424f, 283.146f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(1202.583f, 536.019f, 283.135f), + Vector3(1204.13f, 561.193f, 285.171f), + Vector3(1204.677f, 586.368f, 286.707f), + Vector3(1202.824f, 611.543f, 287.818f), + Vector3(1191.372f, 636.718f, 288.528f), + Vector3(1179.116f, 659.424f, 288.253f), + Vector3(1170.564f, 676.207f, 286.677f), + Vector3(1170.612f, 692.99f, 284.7f), + Vector3(1173.108f, 726.557f, 282.447f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 125, + false, + List( + Vector3(1769.642f, 876.984f, 243.134f), + Vector3(1724.537f, 898.566f, 244.689f), + Vector3(1701.985f, 909.357f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 126, + false, + List( + Vector3(1687.12f, 945.911f, 241.987f), + Vector3(1635.308f, 946.216f, 228.89f), + Vector3(1608.802f, 954.568f, 229.295f), + Vector3(1583.497f, 970.921f, 230.9f), + Vector3(1575.821f, 972.773f, 223.142f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 127, + false, + List( + Vector3(1574.066f, 944.007f, 223.145f), + Vector3(1564.26f, 943.102f, 223.317f), + Vector3(1539.255f, 940.054f, 217.963f), + Vector3(1514.25f, 939.205f, 212.809f), + Vector3(1501.992f, 941.023f, 209.431f), + Vector3(1489.735f, 940.042f, 206.053f), + Vector3(1464.82f, 941.279f, 198.096f), + Vector3(1440.505f, 942.916f, 190.639f), + Vector3(1416.191f, 944.553f, 188.783f), + Vector3(1367.161f, 943.427f, 184.27f), + Vector3(1349.51f, 950.758f, 178.695f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 128, + false, + List( + Vector3(1844.368f, 962.199f, 243.288f), + Vector3(1843.209f, 986.147f, 246.165f), + Vector3(1826.049f, 1030.095f, 248.742f), + Vector3(1813.796f, 1045.782f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 129, + false, + List( + Vector3(1770.828f, 1066.209f, 243.135f), + Vector3(1726.199f, 1088.756f, 243.877f), + Vector3(1703.885f, 1100.029f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 130, + false, + List( + Vector3(1706.104f, 1133.887f, 243.154f), + Vector3(1681.993f, 1139.631f, 252.471f), + Vector3(1657.881f, 1141.375f, 259.707f), + Vector3(1609.657f, 1136.062f, 277.52f), + Vector3(1593.98f, 1137.395f, 283.015f), + Vector3(1577.906f, 1137.772f, 284.225f), + Vector3(1561.433f, 1132.349f, 283.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 131, + false, + List( + Vector3(1551.103f, 1093.186f, 283.14f), + Vector3(1526.704f, 1077.822f, 287.951f), + Vector3(1502.305f, 1068.658f, 289.866f), + Vector3(1480.834f, 1067.718f, 294.486f), + Vector3(1459.363f, 1067.777f, 299.906f), + Vector3(1443.772f, 1069.81f, 303.887f), + Vector3(1399.83f, 1066.129f, 303.655f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 132, + false, + List( + Vector3(1222.883f, 1155.354f, 310.372f), + Vector3(1233.227f, 1169.735f, 309.998f), + Vector3(1229.371f, 1162.916f, 262.124f), + Vector3(1235.989f, 1170.63f, 212.147f), + Vector3(1240.919f, 1176.377f, 172.5f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 133, + false, + List( + Vector3(1175.587f, 1239.146f, 173.631f), + Vector3(1171.886f, 1262.498f, 181.983f), + Vector3(1171.393f, 1276.12f, 185.559f), + Vector3(1170.751f, 1301.419f, 189.13f), + Vector3(1171.108f, 1326.718f, 195.702f), + Vector3(1171.043f, 1376.342f, 206.614f), + Vector3(1172.179f, 1425.966f, 221.727f), + Vector3(1170.049f, 1436.669f, 223.181f), + Vector3(1171.12f, 1447.372f, 223.149f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 134, + false, + List( + Vector3(1166.209f, 1497.571f, 223.137f), + Vector3(1166.17f, 1547.911f, 226.843f), + Vector3(1170.072f, 1588.874f, 234.821f), + Vector3(1168.974f, 1629.837f, 243.999f), + Vector3(1189.267f, 1681.165f, 247.254f), + Vector3(1198.153f, 1698.932f, 244.947f), + Vector3(1193.839f, 1716.699f, 243.141f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 135, + false, + List( + Vector3(1158.399f, 1784.486f, 243.843f), + Vector3(1111.506f, 1772.128f, 245.649f), + Vector3(1065.55f, 1750.117f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 136, + false, + List( + Vector3(1045.72f, 1705.07f, 243.135f), + Vector3(1022.973f, 1660.539f, 243.887f), + Vector3(1014.33f, 1643.617f, 243.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 137, + false, + List( + Vector3(978.861f, 1641.87f, 243.153f), + Vector3(970.657f, 1593.573f, 258.04f), + Vector3(971.092f, 1584.88f, 260.944f), + Vector3(973.55f, 1521.127f, 280.863f), + Vector3(973.104f, 1507.604f, 283.349f), + Vector3(979.459f, 1494.081f, 283.153f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 138, + false, + List( + Vector3(1027.608f, 1471.856f, 283.135f), + Vector3(1044.922f, 1421.966f, 285.242f), + Vector3(1042.036f, 1372.076f, 292.602f), + Vector3(1042.75f, 1322.185f, 291.763f), + Vector3(1040.202f, 1282.273f, 281.511f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 139, + false, + List( + Vector3(1140.673f, 973.599f, 176.313f), + Vector3(1138.394f, 1020.478f, 196.964f), + Vector3(1136.116f, 1067.357f, 216.913f), + Vector3(1135.446f, 1081.145f, 225.28f), + Vector3(1134.776f, 1094.932f, 226.989f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 140, + false, + List( + Vector3(1150.479f, 968.34f, 176.29f), + Vector3(1170.472f, 984.147f, 176.49f), + Vector3(1190.466f, 999.954f, 176.39f), + Vector3(1230.453f, 1031.568f, 174.132f), + Vector3(1253.974f, 1050.164f, 172.501f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 141, + false, + List( + Vector3(1106.342f, 1106.197f, 226.95f), + Vector3(1054.565f, 1048.43f, 236.347f), + Vector3(1002.788f, 990.663f, 243.55f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 142, + false, + List( + Vector3(984.255f, 1002.808f, 243.547f), + Vector3(985.338f, 1010.52f, 242.265f), + Vector3(986.422f, 1018.232f, 227.484f), + Vector3(988.588f, 1033.656f, 203.92f), + Vector3(992.666f, 1062.689f, 163.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 143, + false, + List( + Vector3(1116.114f, 1046.375f, 177.28f), + Vector3(1147.41f, 1042.571f, 218.111f), + Vector3(1153.853f, 1041.788f, 233.89f), + Vector3(1160.296f, 1041.005f, 235.77f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 144, + false, + List( + Vector3(991.811f, 888.539f, 243.475f), + Vector3(1039.377f, 875.966f, 257.645f), + Vector3(1046.137f, 873.294f, 258.908f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 145, + false, + List( + Vector3(1098.527f, 830.352f, 258.89f), + Vector3(1102.497f, 826.527f, 258.518f), + Vector3(1106.468f, 822.701f, 238.745f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 146, + false, + List( + Vector3(1094.341f, 828.58f, 258.89f), + Vector3(1089.367f, 823.039f, 258.018f), + Vector3(1085.594f, 827.098f, 235.645f), + Vector3(1076.848f, 825.616f, 212.9f), + Vector3(1059.355f, 822.653f, 166.153f), + Vector3(1055.157f, 821.942f, 152.602f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 147, + false, + List( + Vector3(1101.107f, 835.443f, 258.89f), + Vector3(1105.861f, 841.292f, 255.843f), + Vector3(1108.616f, 842.741f, 235.297f), + Vector3(1115.326f, 847.639f, 212.204f), + Vector3(1129.545f, 859.835f, 164.77f), + Vector3(1130.939f, 861.031f, 157.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 148, + false, + List( + Vector3(1118.348f, 875.124f, 150.465f), + Vector3(1118.914f, 870.112f, 157.173f), + Vector3(1119.479f, 865.099f, 157.68f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 149, + false, + List( + Vector3(1205.55f, 1041.13f, 224.344f), + Vector3(1217.347f, 1039.221f, 223.849f), + Vector3(1229.145f, 1037.313f, 222.554f), + Vector3(1252.74f, 1033.497f, 207.297f), + Vector3(1299.93f, 1025.864f, 189.531f), + Vector3(1336.016f, 1020.029f, 174.385f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 150, + false, + List( + Vector3(1122.96f, 1201.699f, 226.948f), + Vector3(1121.853f, 1205.357f, 226.351f), + Vector3(1120.746f, 1209.015f, 223.454f), + Vector3(1118.532f, 1215.13f, 206.461f), + Vector3(1114.104f, 1228.561f, 186.473f), + Vector3(1111.624f, 1236.082f, 172.915f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 151, + false, + List( + Vector3(1058.953f, 1136.079f, 226.996f), + Vector3(1036.782f, 1130.339f, 224.438f), + Vector3(1014.612f, 1124.599f, 207.629f), + Vector3(999.536f, 1120.695f, 199.391f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 152, + false, + List( + Vector3(980.433f, 1115.376f, 198.361f), + Vector3(969.648f, 1109.169f, 197.774f), + Vector3(958.864f, 1102.962f, 195.794f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 153, + false, + List( + Vector3(904.04f, 1103.835f, 185.723f), + Vector3(892.316f, 1095.63f, 184.78f), + Vector3(886.454f, 1091.528f, 183.762f), + Vector3(883.524f, 1089.477f, 183.053f), + Vector3(880.593f, 1087.427f, 182.544f), + Vector3(876.55f, 1084.598f, 182.144f), + Vector3(835.315f, 1055.742f, 171.252f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 154, + false, + List( + Vector3(1133.265f, 778.345f, 198.777f), + Vector3(1131.568f, 771.562f, 198.189f), + Vector3(1129.872f, 764.779f, 194.804f), + Vector3(1126.478f, 751.214f, 169.036f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(1108.775f, 811.315f, 198.776f), + Vector3(1106.722f, 813.77f, 198.054f), + Vector3(1104.669f, 816.226f, 175.432f), + Vector3(1102.963f, 817.937f, 153.088f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + false, + List( + Vector3(306.846f, 1041.014f, 233.036f), + Vector3(305.881f, 1023.7f, 236.553f), + Vector3(342.015f, 951.186f, 234.539f), + Vector3(393.984f, 925.058f, 236.511f), + Vector3(405.219f, 918.196f, 233.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 157, + false, + List( + Vector3(422.655f, 878.634f, 234.823f), + Vector3(462.703f, 878.635f, 252.642f), + Vector3(512.448f, 879.331f, 268.067f), + Vector3(537.916f, 878.972f, 272.078f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 158, + false, + List( + Vector3(550.586f, 914.859f, 273.135f), + Vector3(609.031f, 945.539f, 276.386f), + Vector3(648.677f, 946.718f, 274.915f), + Vector3(662.14f, 946.656f, 273.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 159, + false, + List( + Vector3(675.759f, 912.206f, 273.905f), + Vector3(733.511f, 909.282f, 296.348f), + Vector3(785.289f, 906.66f, 296.654f), + Vector3(816.157f, 905.097f, 284.534f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 160, + false, + List( + Vector3(336.043f, 1137.71f, 233.109f), + Vector3(351.767f, 1137.575f, 237.165f), + Vector3(416.64f, 1106.569f, 235.944f), + Vector3(456.726f, 1105.644f, 223.541f), + Vector3(470.089f, 1105.336f, 215.777f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 161, + false, + List( + Vector3(487.928f, 1066.814f, 213.142f), + Vector3(543.338f, 1039.103f, 216.896f), + Vector3(599.192f, 1039.599f, 194.845f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 162, + false, + List( + Vector3(616.478f, 1073.332f, 192.31f), + Vector3(671.491f, 1073.589f, 177.53f), + Vector3(736.004f, 1042.347f, 176.388f), + Vector3(809.069f, 1041.654f, 174.357f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(163, true, List(Vector3(1201.936f, 910.752f, 325.469f), Vector3(1222.351f, 877.804f, 341.059f))) + ) + ZipLinePaths( + new ZipLinePath( + 164, + true, + List( + Vector3(1201.024f, 928.787f, 344.577f), + Vector3(1248.519f, 941.266f, 331.252f), + Vector3(1257.731f, 943.513f, 327.969f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(165, true, List(Vector3(964.275f, 1096.252f, 332.469f), Vector3(992.303f, 1071.769f, 345.489f))) + ) + ZipLinePaths( + new ZipLinePath( + 166, + true, + List( + Vector3(961.598f, 1106.636f, 349.565f), + Vector3(1008.607f, 1122.679f, 338.887f), + Vector3(1021.012f, 1127.083f, 334.969f) + ) + ) + ) } ZipLines() diff --git a/pslogin/src/main/scala/zonemaps/Ugd06.scala b/pslogin/src/main/scala/zonemaps/Ugd06.scala index 4a11d059..de3d0c89 100644 --- a/pslogin/src/main/scala/zonemaps/Ugd06.scala +++ b/pslogin/src/main/scala/zonemaps/Ugd06.scala @@ -1,4 +1,4 @@ -package zonemaps +package net.psforever.pslogin.zonemaps import net.psforever.objects.GlobalDefinitions._ import net.psforever.objects.serverobject.doors.Door @@ -20,7 +20,19 @@ object Ugd06 { // Drugaskan Building10077() def Building10077(): Unit = { // Name: ceiling_bldg_a_10077 Type: ceiling_bldg_a GUID: 1, MapID: 10077 - LocalBuilding("ceiling_bldg_a_10077", 1, 10077, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1260.11f, 1049.16f, 170.44f), Vector3(0f, 0f, 211f), ceiling_bldg_a))) + LocalBuilding( + "ceiling_bldg_a_10077", + 1, + 10077, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1260.11f, 1049.16f, 170.44f), + Vector3(0f, 0f, 211f), + ceiling_bldg_a + ) + ) + ) LocalObject(665, Door.Constructor(Vector3(1241.352f, 1050.759f, 177.725f)), owning_building_guid = 1) LocalObject(667, Door.Constructor(Vector3(1247.792f, 1037.129f, 172.219f)), owning_building_guid = 1) LocalObject(668, Door.Constructor(Vector3(1253.713f, 1030.187f, 177.725f)), owning_building_guid = 1) @@ -30,7 +42,19 @@ object Ugd06 { // Drugaskan Building10079() def Building10079(): Unit = { // Name: ceiling_bldg_b_10079 Type: ceiling_bldg_b GUID: 2, MapID: 10079 - LocalBuilding("ceiling_bldg_b_10079", 2, 10079, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1014.06f, 873.97f, 162.94f), Vector3(0f, 0f, 85f), ceiling_bldg_b))) + LocalBuilding( + "ceiling_bldg_b_10079", + 2, + 10079, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1014.06f, 873.97f, 162.94f), + Vector3(0f, 0f, 85f), + ceiling_bldg_b + ) + ) + ) LocalObject(607, Door.Constructor(Vector3(997.8083f, 877.4145f, 164.719f)), owning_building_guid = 2) LocalObject(610, Door.Constructor(Vector3(1015.59f, 879.8751f, 164.719f)), owning_building_guid = 2) } @@ -38,7 +62,19 @@ object Ugd06 { // Drugaskan Building10241() def Building10241(): Unit = { // Name: ceiling_bldg_c_10241 Type: ceiling_bldg_c GUID: 3, MapID: 10241 - LocalBuilding("ceiling_bldg_c_10241", 3, 10241, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1125.87f, 1035.29f, 171.46f), Vector3(0f, 0f, 22f), ceiling_bldg_c))) + LocalBuilding( + "ceiling_bldg_c_10241", + 3, + 10241, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1125.87f, 1035.29f, 171.46f), + Vector3(0f, 0f, 22f), + ceiling_bldg_c + ) + ) + ) LocalObject(637, Door.Constructor(Vector3(1122.978f, 1038.418f, 173.239f)), owning_building_guid = 3) LocalObject(648, Door.Constructor(Vector3(1161.197f, 1070.605f, 173.239f)), owning_building_guid = 3) LocalObject(650, Door.Constructor(Vector3(1172.81f, 1041.863f, 173.239f)), owning_building_guid = 3) @@ -47,18 +83,46 @@ object Ugd06 { // Drugaskan Building10006() def Building10006(): Unit = { // Name: ceiling_bldg_d_10006 Type: ceiling_bldg_d GUID: 4, MapID: 10006 - LocalBuilding("ceiling_bldg_d_10006", 4, 10006, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1196.16f, 965.32f, 165.44f), Vector3(0f, 0f, 36f), ceiling_bldg_d))) + LocalBuilding( + "ceiling_bldg_d_10006", + 4, + 10006, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1196.16f, 965.32f, 165.44f), + Vector3(0f, 0f, 36f), + ceiling_bldg_d + ) + ) + ) LocalObject(652, Door.Constructor(Vector3(1182.001f, 955.0526f, 167.175f)), owning_building_guid = 4) LocalObject(655, Door.Constructor(Vector3(1185.893f, 979.4791f, 167.175f)), owning_building_guid = 4) LocalObject(658, Door.Constructor(Vector3(1206.465f, 951.1635f, 167.175f)), owning_building_guid = 4) LocalObject(659, Door.Constructor(Vector3(1210.317f, 975.6251f, 167.175f)), owning_building_guid = 4) - LocalObject(729, Painbox.Constructor(Vector3(1196.204f, 965.1011f, 173.748f), painbox_continuous), owning_building_guid = 4) + LocalObject( + 729, + Painbox.Constructor(Vector3(1196.204f, 965.1011f, 173.748f), painbox_continuous), + owning_building_guid = 4 + ) } Building10081() def Building10081(): Unit = { // Name: ceiling_bldg_e_10081 Type: ceiling_bldg_e GUID: 5, MapID: 10081 - LocalBuilding("ceiling_bldg_e_10081", 5, 10081, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1128.06f, 914.38f, 179.45f), Vector3(0f, 0f, 44f), ceiling_bldg_e))) + LocalBuilding( + "ceiling_bldg_e_10081", + 5, + 10081, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1128.06f, 914.38f, 179.45f), + Vector3(0f, 0f, 44f), + ceiling_bldg_e + ) + ) + ) LocalObject(634, Door.Constructor(Vector3(1108.343f, 940.5333f, 186.729f)), owning_building_guid = 5) LocalObject(635, Door.Constructor(Vector3(1120.104f, 905.3209f, 181.229f)), owning_building_guid = 5) LocalObject(636, Door.Constructor(Vector3(1122.273f, 947.7385f, 181.229f)), owning_building_guid = 5) @@ -68,7 +132,19 @@ object Ugd06 { // Drugaskan Building10080() def Building10080(): Unit = { // Name: ceiling_bldg_f_10080 Type: ceiling_bldg_f GUID: 6, MapID: 10080 - LocalBuilding("ceiling_bldg_f_10080", 6, 10080, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1059.44f, 1115.66f, 174.49f), Vector3(0f, 0f, 116f), ceiling_bldg_f))) + LocalBuilding( + "ceiling_bldg_f_10080", + 6, + 10080, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1059.44f, 1115.66f, 174.49f), + Vector3(0f, 0f, 116f), + ceiling_bldg_f + ) + ) + ) LocalObject(617, Door.Constructor(Vector3(1028.562f, 1113.933f, 176.269f)), owning_building_guid = 6) LocalObject(632, Door.Constructor(Vector3(1086.384f, 1106.004f, 176.269f)), owning_building_guid = 6) } @@ -76,7 +152,19 @@ object Ugd06 { // Drugaskan Building10078() def Building10078(): Unit = { // Name: ceiling_bldg_g_10078 Type: ceiling_bldg_g GUID: 7, MapID: 10078 - LocalBuilding("ceiling_bldg_g_10078", 7, 10078, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(828.34f, 1023.68f, 163.71f), Vector3(0f, 0f, 0f), ceiling_bldg_g))) + LocalBuilding( + "ceiling_bldg_g_10078", + 7, + 10078, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(828.34f, 1023.68f, 163.71f), + Vector3(0f, 0f, 0f), + ceiling_bldg_g + ) + ) + ) LocalObject(564, Door.Constructor(Vector3(820.356f, 1007.17f, 165.489f)), owning_building_guid = 7) LocalObject(566, Door.Constructor(Vector3(828.356f, 1041.17f, 165.489f)), owning_building_guid = 7) } @@ -84,7 +172,19 @@ object Ugd06 { // Drugaskan Building10007() def Building10007(): Unit = { // Name: ceiling_bldg_h_10007 Type: ceiling_bldg_h GUID: 8, MapID: 10007 - LocalBuilding("ceiling_bldg_h_10007", 8, 10007, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(904.92f, 964.1f, 173.54f), Vector3(0f, 0f, 0f), ceiling_bldg_h))) + LocalBuilding( + "ceiling_bldg_h_10007", + 8, + 10007, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(904.92f, 964.1f, 173.54f), + Vector3(0f, 0f, 0f), + ceiling_bldg_h + ) + ) + ) LocalObject(580, Door.Constructor(Vector3(888.43f, 960.116f, 175.319f)), owning_building_guid = 8) LocalObject(590, Door.Constructor(Vector3(908.904f, 980.61f, 175.319f)), owning_building_guid = 8) LocalObject(592, Door.Constructor(Vector3(916.005f, 952.912f, 177.819f)), owning_building_guid = 8) @@ -93,7 +193,19 @@ object Ugd06 { // Drugaskan Building10008() def Building10008(): Unit = { // Name: ceiling_bldg_i_10008 Type: ceiling_bldg_i GUID: 9, MapID: 10008 - LocalBuilding("ceiling_bldg_i_10008", 9, 10008, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(971.61f, 1193.75f, 179.41f), Vector3(0f, 0f, 188f), ceiling_bldg_i))) + LocalBuilding( + "ceiling_bldg_i_10008", + 9, + 10008, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(971.61f, 1193.75f, 179.41f), + Vector3(0f, 0f, 188f), + ceiling_bldg_i + ) + ) + ) LocalObject(596, Door.Constructor(Vector3(946.8376f, 1186.718f, 181.189f)), owning_building_guid = 9) LocalObject(606, Door.Constructor(Vector3(996.351f, 1193.677f, 181.189f)), owning_building_guid = 9) } @@ -101,7 +213,19 @@ object Ugd06 { // Drugaskan Building10238() def Building10238(): Unit = { // Name: ceiling_bldg_z_10238 Type: ceiling_bldg_z GUID: 10, MapID: 10238 - LocalBuilding("ceiling_bldg_z_10238", 10, 10238, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(925.94f, 1113.67f, 188.72f), Vector3(0f, 0f, 223f), ceiling_bldg_z))) + LocalBuilding( + "ceiling_bldg_z_10238", + 10, + 10238, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(925.94f, 1113.67f, 188.72f), + Vector3(0f, 0f, 223f), + ceiling_bldg_z + ) + ) + ) LocalObject(589, Door.Constructor(Vector3(904.9026f, 1088.561f, 190.499f)), owning_building_guid = 10) LocalObject(595, Door.Constructor(Vector3(946.5898f, 1127.435f, 190.499f)), owning_building_guid = 10) } @@ -109,7 +233,19 @@ object Ugd06 { // Drugaskan Building10009() def Building10009(): Unit = { // Name: ground_bldg_a_10009 Type: ground_bldg_a GUID: 33, MapID: 10009 - LocalBuilding("ground_bldg_a_10009", 33, 10009, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1349.99f, 1151.14f, 89.94f), Vector3(0f, 0f, 340f), ground_bldg_a))) + LocalBuilding( + "ground_bldg_a_10009", + 33, + 10009, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1349.99f, 1151.14f, 89.94f), + Vector3(0f, 0f, 340f), + ground_bldg_a + ) + ) + ) LocalObject(680, Door.Constructor(Vector3(1339.435f, 1163.506f, 91.719f)), owning_building_guid = 33) LocalObject(685, Door.Constructor(Vector3(1366.754f, 1149.312f, 91.719f)), owning_building_guid = 33) } @@ -117,7 +253,19 @@ object Ugd06 { // Drugaskan Building10003() def Building10003(): Unit = { // Name: ground_bldg_b_10003 Type: ground_bldg_b GUID: 34, MapID: 10003 - LocalBuilding("ground_bldg_b_10003", 34, 10003, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(985.91f, 922.1f, 92.93f), Vector3(0f, 0f, 5f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10003", + 34, + 10003, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(985.91f, 922.1f, 92.93f), + Vector3(0f, 0f, 5f), + ground_bldg_b + ) + ) + ) LocalObject(599, Door.Constructor(Vector3(986.4801f, 938.7028f, 94.709f)), owning_building_guid = 34) LocalObject(602, Door.Constructor(Vector3(991.9911f, 921.6182f, 94.709f)), owning_building_guid = 34) LocalObject(609, Door.Constructor(Vector3(1009.814f, 930.2303f, 100.209f)), owning_building_guid = 34) @@ -126,7 +274,19 @@ object Ugd06 { // Drugaskan Building10004() def Building10004(): Unit = { // Name: ground_bldg_b_10004 Type: ground_bldg_b GUID: 35, MapID: 10004 - LocalBuilding("ground_bldg_b_10004", 35, 10004, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1006.48f, 1145.29f, 91.97f), Vector3(0f, 0f, 227f), ground_bldg_b))) + LocalBuilding( + "ground_bldg_b_10004", + 35, + 10004, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1006.48f, 1145.29f, 91.97f), + Vector3(0f, 0f, 227f), + ground_bldg_b + ) + ) + ) LocalObject(603, Door.Constructor(Vector3(994.1558f, 1123.253f, 99.249f)), owning_building_guid = 35) LocalObject(608, Door.Constructor(Vector3(1001.638f, 1141.579f, 93.749f)), owning_building_guid = 35) LocalObject(611, Door.Constructor(Vector3(1017.166f, 1132.57f, 93.749f)), owning_building_guid = 35) @@ -135,7 +295,19 @@ object Ugd06 { // Drugaskan Building10034() def Building10034(): Unit = { // Name: ground_bldg_c_10034 Type: ground_bldg_c GUID: 36, MapID: 10034 - LocalBuilding("ground_bldg_c_10034", 36, 10034, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(825.03f, 1055.17f, 89.45f), Vector3(0f, 0f, 19f), ground_bldg_c))) + LocalBuilding( + "ground_bldg_c_10034", + 36, + 10034, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(825.03f, 1055.17f, 89.45f), + Vector3(0f, 0f, 19f), + ground_bldg_c + ) + ) + ) LocalObject(565, Door.Constructor(Vector3(822.3052f, 1058.445f, 91.229f)), owning_building_guid = 36) LocalObject(570, Door.Constructor(Vector3(862.1569f, 1088.588f, 91.229f)), owning_building_guid = 36) LocalObject(575, Door.Constructor(Vector3(872.2495f, 1059.277f, 91.229f)), owning_building_guid = 36) @@ -144,7 +316,19 @@ object Ugd06 { // Drugaskan Building10088() def Building10088(): Unit = { // Name: ground_bldg_d_10088 Type: ground_bldg_d GUID: 37, MapID: 10088 - LocalBuilding("ground_bldg_d_10088", 37, 10088, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(975.7f, 689.58f, 94.32f), Vector3(0f, 0f, 231f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10088", + 37, + 10088, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(975.7f, 689.58f, 94.32f), + Vector3(0f, 0f, 231f), + ground_bldg_d + ) + ) + ) LocalObject(597, Door.Constructor(Vector3(962.0821f, 700.587f, 96.055f)), owning_building_guid = 37) LocalObject(598, Door.Constructor(Vector3(964.6931f, 675.9621f, 96.055f)), owning_building_guid = 37) LocalObject(600, Door.Constructor(Vector3(986.7192f, 703.1622f, 96.055f)), owning_building_guid = 37) @@ -154,7 +338,19 @@ object Ugd06 { // Drugaskan Building10304() def Building10304(): Unit = { // Name: ground_bldg_d_10304 Type: ground_bldg_d GUID: 38, MapID: 10304 - LocalBuilding("ground_bldg_d_10304", 38, 10304, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1055.42f, 1071.61f, 100.3f), Vector3(0f, 0f, 190f), ground_bldg_d))) + LocalBuilding( + "ground_bldg_d_10304", + 38, + 10304, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1055.42f, 1071.61f, 100.3f), + Vector3(0f, 0f, 190f), + ground_bldg_d + ) + ) + ) LocalObject(619, Door.Constructor(Vector3(1038.179f, 1068.554f, 102.035f)), owning_building_guid = 38) LocalObject(623, Door.Constructor(Vector3(1052.364f, 1088.851f, 102.035f)), owning_building_guid = 38) LocalObject(626, Door.Constructor(Vector3(1058.441f, 1054.383f, 102.035f)), owning_building_guid = 38) @@ -164,7 +360,19 @@ object Ugd06 { // Drugaskan Building10015() def Building10015(): Unit = { // Name: ground_bldg_e_10015 Type: ground_bldg_e GUID: 39, MapID: 10015 - LocalBuilding("ground_bldg_e_10015", 39, 10015, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1033.29f, 654.74f, 94.57f), Vector3(0f, 0f, 240f), ground_bldg_e))) + LocalBuilding( + "ground_bldg_e_10015", + 39, + 10015, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1033.29f, 654.74f, 94.57f), + Vector3(0f, 0f, 240f), + ground_bldg_e + ) + ) + ) LocalObject(616, Door.Constructor(Vector3(1027.727f, 629.0727f, 101.849f)), owning_building_guid = 39) LocalObject(620, Door.Constructor(Vector3(1038.441f, 665.6412f, 96.349f)), owning_building_guid = 39) LocalObject(621, Door.Constructor(Vector3(1048.048f, 624.2689f, 96.349f)), owning_building_guid = 39) @@ -174,7 +382,19 @@ object Ugd06 { // Drugaskan Building10386() def Building10386(): Unit = { // Name: ground_bldg_f_10386 Type: ground_bldg_f GUID: 40, MapID: 10386 - LocalBuilding("ground_bldg_f_10386", 40, 10386, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1007.11f, 851.17f, 96.4f), Vector3(0f, 0f, 250f), ground_bldg_f))) + LocalBuilding( + "ground_bldg_f_10386", + 40, + 10386, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1007.11f, 851.17f, 96.4f), + Vector3(0f, 0f, 250f), + ground_bldg_f + ) + ) + ) LocalObject(604, Door.Constructor(Vector3(995.3392f, 877.2592f, 98.179f)), owning_building_guid = 40) LocalObject(618, Door.Constructor(Vector3(1029.802f, 830.1577f, 98.179f)), owning_building_guid = 40) } @@ -182,7 +402,19 @@ object Ugd06 { // Drugaskan Building10032() def Building10032(): Unit = { // Name: ground_bldg_g_10032 Type: ground_bldg_g GUID: 41, MapID: 10032 - LocalBuilding("ground_bldg_g_10032", 41, 10032, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1263.21f, 1006.27f, 98.33f), Vector3(0f, 0f, 0f), ground_bldg_g))) + LocalBuilding( + "ground_bldg_g_10032", + 41, + 10032, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1263.21f, 1006.27f, 98.33f), + Vector3(0f, 0f, 0f), + ground_bldg_g + ) + ) + ) LocalObject(670, Door.Constructor(Vector3(1255.226f, 989.76f, 100.109f)), owning_building_guid = 41) LocalObject(672, Door.Constructor(Vector3(1263.226f, 1023.76f, 100.109f)), owning_building_guid = 41) } @@ -190,7 +422,19 @@ object Ugd06 { // Drugaskan Building10242() def Building10242(): Unit = { // Name: ground_bldg_h_10242 Type: ground_bldg_h GUID: 42, MapID: 10242 - LocalBuilding("ground_bldg_h_10242", 42, 10242, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1063.36f, 1197.96f, 104.38f), Vector3(0f, 0f, 190f), ground_bldg_h))) + LocalBuilding( + "ground_bldg_h_10242", + 42, + 10242, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1063.36f, 1197.96f, 104.38f), + Vector3(0f, 0f, 190f), + ground_bldg_h + ) + ) + ) LocalObject(622, Door.Constructor(Vector3(1050.501f, 1207.053f, 108.659f)), owning_building_guid = 42) LocalObject(628, Door.Constructor(Vector3(1062.303f, 1181.009f, 106.159f)), owning_building_guid = 42) LocalObject(631, Door.Constructor(Vector3(1078.908f, 1204.747f, 106.159f)), owning_building_guid = 42) @@ -199,7 +443,19 @@ object Ugd06 { // Drugaskan Building10340() def Building10340(): Unit = { // Name: ground_bldg_i_10340 Type: ground_bldg_i GUID: 43, MapID: 10340 - LocalBuilding("ground_bldg_i_10340", 43, 10340, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(781.58f, 1112.31f, 97.55f), Vector3(0f, 0f, 208f), ground_bldg_i))) + LocalBuilding( + "ground_bldg_i_10340", + 43, + 10340, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(781.58f, 1112.31f, 97.55f), + Vector3(0f, 0f, 208f), + ground_bldg_i + ) + ) + ) LocalObject(557, Door.Constructor(Vector3(760.7067f, 1097.229f, 99.329f)), owning_building_guid = 43) LocalObject(563, Door.Constructor(Vector3(804.8541f, 1120.703f, 99.329f)), owning_building_guid = 43) } @@ -207,7 +463,19 @@ object Ugd06 { // Drugaskan Building10035() def Building10035(): Unit = { // Name: ground_bldg_j_10035 Type: ground_bldg_j GUID: 44, MapID: 10035 - LocalBuilding("ground_bldg_j_10035", 44, 10035, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(853.9f, 1131.82f, 87.35f), Vector3(0f, 0f, 78f), ground_bldg_j))) + LocalBuilding( + "ground_bldg_j_10035", + 44, + 10035, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(853.9f, 1131.82f, 87.35f), + Vector3(0f, 0f, 78f), + ground_bldg_j + ) + ) + ) LocalObject(567, Door.Constructor(Vector3(841.6863f, 1134.432f, 89.129f)), owning_building_guid = 44) LocalObject(572, Door.Constructor(Vector3(866.14f, 1129.235f, 89.129f)), owning_building_guid = 44) } @@ -215,7 +483,19 @@ object Ugd06 { // Drugaskan Building10005() def Building10005(): Unit = { // Name: ground_bldg_j_10005 Type: ground_bldg_j GUID: 45, MapID: 10005 - LocalBuilding("ground_bldg_j_10005", 45, 10005, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1062.19f, 885.69f, 92.65f), Vector3(0f, 0f, 330f), ground_bldg_j))) + LocalBuilding( + "ground_bldg_j_10005", + 45, + 10005, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1062.19f, 885.69f, 92.65f), + Vector3(0f, 0f, 330f), + ground_bldg_j + ) + ) + ) LocalObject(625, Door.Constructor(Vector3(1055.949f, 874.848f, 94.429f)), owning_building_guid = 45) LocalObject(629, Door.Constructor(Vector3(1068.449f, 896.4987f, 94.429f)), owning_building_guid = 45) } @@ -223,7 +503,19 @@ object Ugd06 { // Drugaskan Building10229() def Building10229(): Unit = { // Name: ground_bldg_z_10229 Type: ground_bldg_z GUID: 46, MapID: 10229 - LocalBuilding("ground_bldg_z_10229", 46, 10229, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(875.59f, 1275.13f, 89.54f), Vector3(0f, 0f, 300f), ground_bldg_z))) + LocalBuilding( + "ground_bldg_z_10229", + 46, + 10229, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(875.59f, 1275.13f, 89.54f), + Vector3(0f, 0f, 300f), + ground_bldg_z + ) + ) + ) LocalObject(568, Door.Constructor(Vector3(856.4307f, 1292.347f, 91.319f)), owning_building_guid = 46) LocalObject(569, Door.Constructor(Vector3(856.5692f, 1271.095f, 102.319f)), owning_building_guid = 46) LocalObject(571, Door.Constructor(Vector3(863.3589f, 1296.347f, 107.819f)), owning_building_guid = 46) @@ -237,7 +529,19 @@ object Ugd06 { // Drugaskan Building10082() def Building10082(): Unit = { // Name: ground_bldg_z_10082 Type: ground_bldg_z GUID: 47, MapID: 10082 - LocalBuilding("ground_bldg_z_10082", 47, 10082, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1207.32f, 852.88f, 95.64f), Vector3(0f, 0f, 180f), ground_bldg_z))) + LocalBuilding( + "ground_bldg_z_10082", + 47, + 10082, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1207.32f, 852.88f, 95.64f), + Vector3(0f, 0f, 180f), + ground_bldg_z + ) + ) + ) LocalObject(653, Door.Constructor(Vector3(1182.81f, 844.864f, 97.419f)), owning_building_guid = 47) LocalObject(654, Door.Constructor(Vector3(1182.81f, 852.864f, 113.919f)), owning_building_guid = 47) LocalObject(656, Door.Constructor(Vector3(1191.81f, 860.864f, 102.919f)), owning_building_guid = 47) @@ -251,42 +555,112 @@ object Ugd06 { // Drugaskan Building10257() def Building10257(): Unit = { // Name: N_Redoubt Type: redoubt GUID: 48, MapID: 10257 - LocalBuilding("N_Redoubt", 48, 10257, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(760.72f, 1359.42f, 99.62f), Vector3(0f, 0f, 313f), redoubt))) - LocalObject(791, CaptureTerminal.Constructor(Vector3(776.2578f, 1373.937f, 110.104f), vanu_control_console), owning_building_guid = 48) + LocalBuilding( + "N_Redoubt", + 48, + 10257, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(760.72f, 1359.42f, 99.62f), Vector3(0f, 0f, 313f), redoubt) + ) + ) + LocalObject( + 791, + CaptureTerminal.Constructor(Vector3(776.2578f, 1373.937f, 110.104f), vanu_control_console), + owning_building_guid = 48 + ) LocalObject(556, Door.Constructor(Vector3(748.8035f, 1372.222f, 101.355f)), owning_building_guid = 48) LocalObject(558, Door.Constructor(Vector3(761.1804f, 1376.637f, 111.399f)), owning_building_guid = 48) LocalObject(559, Door.Constructor(Vector3(766.8094f, 1370.595f, 111.379f)), owning_building_guid = 48) LocalObject(560, Door.Constructor(Vector3(772.3025f, 1364.752f, 111.379f)), owning_building_guid = 48) LocalObject(561, Door.Constructor(Vector3(772.6735f, 1346.625f, 101.355f)), owning_building_guid = 48) LocalObject(562, Door.Constructor(Vector3(777.9285f, 1358.726f, 111.399f)), owning_building_guid = 48) - LocalObject(799, Terminal.Constructor(Vector3(747.0984f, 1346.889f, 99.57581f), vanu_equipment_term), owning_building_guid = 48) - LocalObject(802, Terminal.Constructor(Vector3(774.4174f, 1372.171f, 99.5735f), vanu_equipment_term), owning_building_guid = 48) - LocalObject(739, SpawnTube.Constructor(Vector3(760.72f, 1359.42f, 99.62f), Vector3(0, 0, 227)), owning_building_guid = 48) - LocalObject(726, Painbox.Constructor(Vector3(760.9607f, 1359.588f, 107.409f), painbox_continuous), owning_building_guid = 48) + LocalObject( + 799, + Terminal.Constructor(Vector3(747.0984f, 1346.889f, 99.57581f), vanu_equipment_term), + owning_building_guid = 48 + ) + LocalObject( + 802, + Terminal.Constructor(Vector3(774.4174f, 1372.171f, 99.5735f), vanu_equipment_term), + owning_building_guid = 48 + ) + LocalObject( + 739, + SpawnTube.Constructor(Vector3(760.72f, 1359.42f, 99.62f), Vector3(0, 0, 227)), + owning_building_guid = 48 + ) + LocalObject( + 726, + Painbox.Constructor(Vector3(760.9607f, 1359.588f, 107.409f), painbox_continuous), + owning_building_guid = 48 + ) } Building10259() def Building10259(): Unit = { // Name: S_Redoubt Type: redoubt GUID: 49, MapID: 10259 - LocalBuilding("S_Redoubt", 49, 10259, FoundationBuilder(Building.Structure(StructureType.Tower, Vector3(1253.48f, 805.8f, 85.1f), Vector3(0f, 0f, 335f), redoubt))) - LocalObject(794, CaptureTerminal.Constructor(Vector3(1262.448f, 825.0802f, 95.584f), vanu_control_console), owning_building_guid = 49) + LocalBuilding( + "S_Redoubt", + 49, + 10259, + FoundationBuilder( + Building.Structure(StructureType.Tower, Vector3(1253.48f, 805.8f, 85.1f), Vector3(0f, 0f, 335f), redoubt) + ) + ) + LocalObject( + 794, + CaptureTerminal.Constructor(Vector3(1262.448f, 825.0802f, 95.584f), vanu_control_console), + owning_building_guid = 49 + ) LocalObject(664, Door.Constructor(Vector3(1237.635f, 813.2061f, 86.835f)), owning_building_guid = 49) LocalObject(666, Door.Constructor(Vector3(1247.457f, 821.9362f, 96.879f)), owning_building_guid = 49) LocalObject(669, Door.Constructor(Vector3(1254.94f, 818.4426f, 96.859f)), owning_building_guid = 49) LocalObject(671, Door.Constructor(Vector3(1262.222f, 815.0822f, 96.859f)), owning_building_guid = 49) LocalObject(673, Door.Constructor(Vector3(1269.356f, 798.4144f, 86.835f)), owning_building_guid = 49) LocalObject(674, Door.Constructor(Vector3(1269.696f, 811.6027f, 96.879f)), owning_building_guid = 49) - LocalObject(839, Terminal.Constructor(Vector3(1245.545f, 789.0786f, 85.0558f), vanu_equipment_term), owning_building_guid = 49) - LocalObject(842, Terminal.Constructor(Vector3(1261.403f, 822.7539f, 85.0535f), vanu_equipment_term), owning_building_guid = 49) - LocalObject(740, SpawnTube.Constructor(Vector3(1253.48f, 805.8f, 85.1f), Vector3(0, 0, 205)), owning_building_guid = 49) - LocalObject(730, Painbox.Constructor(Vector3(1253.64f, 806.0459f, 92.889f), painbox_continuous), owning_building_guid = 49) + LocalObject( + 839, + Terminal.Constructor(Vector3(1245.545f, 789.0786f, 85.0558f), vanu_equipment_term), + owning_building_guid = 49 + ) + LocalObject( + 842, + Terminal.Constructor(Vector3(1261.403f, 822.7539f, 85.0535f), vanu_equipment_term), + owning_building_guid = 49 + ) + LocalObject( + 740, + SpawnTube.Constructor(Vector3(1253.48f, 805.8f, 85.1f), Vector3(0, 0, 205)), + owning_building_guid = 49 + ) + LocalObject( + 730, + Painbox.Constructor(Vector3(1253.64f, 806.0459f, 92.889f), painbox_continuous), + owning_building_guid = 49 + ) } Building10001() def Building10001(): Unit = { // Name: S_Stasis Type: vanu_control_point GUID: 202, MapID: 10001 - LocalBuilding("S_Stasis", 202, 10001, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(899.15f, 874.23f, 93.26f), Vector3(0f, 0f, 340f), vanu_control_point))) - LocalObject(792, CaptureTerminal.Constructor(Vector3(901.4476f, 871.2771f, 123.744f), vanu_control_console), owning_building_guid = 202) + LocalBuilding( + "S_Stasis", + 202, + 10001, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(899.15f, 874.23f, 93.26f), + Vector3(0f, 0f, 340f), + vanu_control_point + ) + ) + ) + LocalObject( + 792, + CaptureTerminal.Constructor(Vector3(901.4476f, 871.2771f, 123.744f), vanu_control_console), + owning_building_guid = 202 + ) LocalObject(573, Door.Constructor(Vector3(867.9634f, 853.3779f, 95.039f)), owning_building_guid = 202) LocalObject(574, Door.Constructor(Vector3(871.7762f, 899.1088f, 95.039f)), owning_building_guid = 202) LocalObject(579, Door.Constructor(Vector3(888.4708f, 862.9407f, 125.039f)), owning_building_guid = 202) @@ -299,27 +673,99 @@ object Ugd06 { // Drugaskan LocalObject(591, Door.Constructor(Vector3(911.6068f, 867.5507f, 99.98f)), owning_building_guid = 202) LocalObject(593, Door.Constructor(Vector3(933.7072f, 833.9666f, 95.039f)), owning_building_guid = 202) LocalObject(594, Door.Constructor(Vector3(942.624f, 894.8666f, 95.039f)), owning_building_guid = 202) - LocalObject(808, Terminal.Constructor(Vector3(890.2345f, 869.1371f, 98.277f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(809, Terminal.Constructor(Vector3(891.9105f, 865.5347f, 98.273f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(810, Terminal.Constructor(Vector3(894.1234f, 880.0321f, 98.273f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(811, Terminal.Constructor(Vector3(897.7258f, 881.7081f, 98.277f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(813, Terminal.Constructor(Vector3(902.9813f, 861.585f, 98.277f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(814, Terminal.Constructor(Vector3(906.5131f, 863.2601f, 98.273f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(815, Terminal.Constructor(Vector3(908.7975f, 877.7581f, 98.273f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(816, Terminal.Constructor(Vector3(910.4735f, 874.1556f, 98.277f), vanu_equipment_term), owning_building_guid = 202) - LocalObject(860, SpawnTube.Constructor(Vector3(900.3454f, 871.6666f, 98.399f), Vector3(0, 0, 200)), owning_building_guid = 202) - LocalObject(727, Painbox.Constructor(Vector3(899.9723f, 871.4819f, 107.6018f), painbox_continuous), owning_building_guid = 202) - LocalObject(731, Painbox.Constructor(Vector3(886.9322f, 876.6623f, 101.55f), painbox_door_radius_continuous), owning_building_guid = 202) - LocalObject(732, Painbox.Constructor(Vector3(895.3766f, 858.9249f, 102.15f), painbox_door_radius_continuous), owning_building_guid = 202) - LocalObject(733, Painbox.Constructor(Vector3(905.1611f, 884.7763f, 102.15f), painbox_door_radius_continuous), owning_building_guid = 202) - LocalObject(734, Painbox.Constructor(Vector3(914.3688f, 866.9739f, 102.15f), painbox_door_radius_continuous), owning_building_guid = 202) + LocalObject( + 808, + Terminal.Constructor(Vector3(890.2345f, 869.1371f, 98.277f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 809, + Terminal.Constructor(Vector3(891.9105f, 865.5347f, 98.273f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 810, + Terminal.Constructor(Vector3(894.1234f, 880.0321f, 98.273f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 811, + Terminal.Constructor(Vector3(897.7258f, 881.7081f, 98.277f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 813, + Terminal.Constructor(Vector3(902.9813f, 861.585f, 98.277f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 814, + Terminal.Constructor(Vector3(906.5131f, 863.2601f, 98.273f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 815, + Terminal.Constructor(Vector3(908.7975f, 877.7581f, 98.273f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 816, + Terminal.Constructor(Vector3(910.4735f, 874.1556f, 98.277f), vanu_equipment_term), + owning_building_guid = 202 + ) + LocalObject( + 860, + SpawnTube.Constructor(Vector3(900.3454f, 871.6666f, 98.399f), Vector3(0, 0, 200)), + owning_building_guid = 202 + ) + LocalObject( + 727, + Painbox.Constructor(Vector3(899.9723f, 871.4819f, 107.6018f), painbox_continuous), + owning_building_guid = 202 + ) + LocalObject( + 731, + Painbox.Constructor(Vector3(886.9322f, 876.6623f, 101.55f), painbox_door_radius_continuous), + owning_building_guid = 202 + ) + LocalObject( + 732, + Painbox.Constructor(Vector3(895.3766f, 858.9249f, 102.15f), painbox_door_radius_continuous), + owning_building_guid = 202 + ) + LocalObject( + 733, + Painbox.Constructor(Vector3(905.1611f, 884.7763f, 102.15f), painbox_door_radius_continuous), + owning_building_guid = 202 + ) + LocalObject( + 734, + Painbox.Constructor(Vector3(914.3688f, 866.9739f, 102.15f), painbox_door_radius_continuous), + owning_building_guid = 202 + ) } Building10002() def Building10002(): Unit = { // Name: N_Stasis Type: vanu_control_point GUID: 203, MapID: 10002 - LocalBuilding("N_Stasis", 203, 10002, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1149.27f, 1132.96f, 107.22f), Vector3(0f, 0f, 236f), vanu_control_point))) - LocalObject(793, CaptureTerminal.Constructor(Vector3(1145.849f, 1131.445f, 137.704f), vanu_control_console), owning_building_guid = 203) + LocalBuilding( + "N_Stasis", + 203, + 10002, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1149.27f, 1132.96f, 107.22f), + Vector3(0f, 0f, 236f), + vanu_control_point + ) + ) + ) + LocalObject( + 793, + CaptureTerminal.Constructor(Vector3(1145.849f, 1131.445f, 137.704f), vanu_control_console), + owning_building_guid = 203 + ) LocalObject(633, Door.Constructor(Vector3(1101.842f, 1109.17f, 108.999f)), owning_building_guid = 203) LocalObject(638, Door.Constructor(Vector3(1136.562f, 1139.138f, 113.94f)), owning_building_guid = 203) LocalObject(639, Door.Constructor(Vector3(1136.582f, 1168.265f, 108.999f)), owning_building_guid = 203) @@ -332,26 +778,94 @@ object Ugd06 { // Drugaskan LocalObject(647, Door.Constructor(Vector3(1158.776f, 1085.785f, 108.999f)), owning_building_guid = 203) LocalObject(649, Door.Constructor(Vector3(1161.247f, 1132.367f, 138.999f)), owning_building_guid = 203) LocalObject(651, Door.Constructor(Vector3(1180.032f, 1153.502f, 108.999f)), owning_building_guid = 203) - LocalObject(826, Terminal.Constructor(Vector3(1136.074f, 1132.302f, 112.237f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(827, Terminal.Constructor(Vector3(1136.845f, 1128.469f, 112.233f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(828, Terminal.Constructor(Vector3(1142.584f, 1142.088f, 112.233f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(829, Terminal.Constructor(Vector3(1146.458f, 1121.991f, 112.237f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(830, Terminal.Constructor(Vector3(1146.485f, 1142.843f, 112.237f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(831, Terminal.Constructor(Vector3(1150.359f, 1122.745f, 112.233f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(832, Terminal.Constructor(Vector3(1156.116f, 1136.434f, 112.233f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(833, Terminal.Constructor(Vector3(1156.87f, 1132.533f, 112.237f), vanu_equipment_term), owning_building_guid = 203) - LocalObject(861, SpawnTube.Constructor(Vector3(1146.494f, 1132.42f, 112.359f), Vector3(0, 0, 304)), owning_building_guid = 203) - LocalObject(728, Painbox.Constructor(Vector3(1146.405f, 1132.827f, 121.5618f), painbox_continuous), owning_building_guid = 203) - LocalObject(735, Painbox.Constructor(Vector3(1135.332f, 1140.324f, 116.11f), painbox_door_radius_continuous), owning_building_guid = 203) - LocalObject(736, Painbox.Constructor(Vector3(1138.548f, 1119.949f, 116.11f), painbox_door_radius_continuous), owning_building_guid = 203) - LocalObject(737, Painbox.Constructor(Vector3(1154.586f, 1144.226f, 115.51f), painbox_door_radius_continuous), owning_building_guid = 203) - LocalObject(738, Painbox.Constructor(Vector3(1158.049f, 1124.576f, 116.11f), painbox_door_radius_continuous), owning_building_guid = 203) + LocalObject( + 826, + Terminal.Constructor(Vector3(1136.074f, 1132.302f, 112.237f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 827, + Terminal.Constructor(Vector3(1136.845f, 1128.469f, 112.233f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 828, + Terminal.Constructor(Vector3(1142.584f, 1142.088f, 112.233f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 829, + Terminal.Constructor(Vector3(1146.458f, 1121.991f, 112.237f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 830, + Terminal.Constructor(Vector3(1146.485f, 1142.843f, 112.237f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 831, + Terminal.Constructor(Vector3(1150.359f, 1122.745f, 112.233f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 832, + Terminal.Constructor(Vector3(1156.116f, 1136.434f, 112.233f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 833, + Terminal.Constructor(Vector3(1156.87f, 1132.533f, 112.237f), vanu_equipment_term), + owning_building_guid = 203 + ) + LocalObject( + 861, + SpawnTube.Constructor(Vector3(1146.494f, 1132.42f, 112.359f), Vector3(0, 0, 304)), + owning_building_guid = 203 + ) + LocalObject( + 728, + Painbox.Constructor(Vector3(1146.405f, 1132.827f, 121.5618f), painbox_continuous), + owning_building_guid = 203 + ) + LocalObject( + 735, + Painbox.Constructor(Vector3(1135.332f, 1140.324f, 116.11f), painbox_door_radius_continuous), + owning_building_guid = 203 + ) + LocalObject( + 736, + Painbox.Constructor(Vector3(1138.548f, 1119.949f, 116.11f), painbox_door_radius_continuous), + owning_building_guid = 203 + ) + LocalObject( + 737, + Painbox.Constructor(Vector3(1154.586f, 1144.226f, 115.51f), painbox_door_radius_continuous), + owning_building_guid = 203 + ) + LocalObject( + 738, + Painbox.Constructor(Vector3(1158.049f, 1124.576f, 116.11f), painbox_door_radius_continuous), + owning_building_guid = 203 + ) } Building10000() def Building10000(): Unit = { // Name: Core Type: vanu_core GUID: 204, MapID: 10000 - LocalBuilding("Core", 204, 10000, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1028.8f, 1012.78f, 165.78f), Vector3(0f, 0f, 0f), vanu_core))) + LocalBuilding( + "Core", + 204, + 10000, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1028.8f, 1012.78f, 165.78f), + Vector3(0f, 0f, 0f), + vanu_core + ) + ) + ) LocalObject(605, Door.Constructor(Vector3(996.3071f, 1000.802f, 172.568f)), owning_building_guid = 204) LocalObject(612, Door.Constructor(Vector3(1024.778f, 972.287f, 172.568f)), owning_building_guid = 204) LocalObject(613, Door.Constructor(Vector3(1024.778f, 972.287f, 177.568f)), owning_building_guid = 204) @@ -363,8 +877,24 @@ object Ugd06 { // Drugaskan Building10246() def Building10246(): Unit = { // Name: N_ATPlant Type: vanu_vehicle_station GUID: 230, MapID: 10246 - LocalBuilding("N_ATPlant", 230, 10246, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(739.86f, 1264.38f, 82.47f), Vector3(0f, 0f, 329f), vanu_vehicle_station))) - LocalObject(790, CaptureTerminal.Constructor(Vector3(682.7147f, 1273.777f, 112.954f), vanu_control_console), owning_building_guid = 230) + LocalBuilding( + "N_ATPlant", + 230, + 10246, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(739.86f, 1264.38f, 82.47f), + Vector3(0f, 0f, 329f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 790, + CaptureTerminal.Constructor(Vector3(682.7147f, 1273.777f, 112.954f), vanu_control_console), + owning_building_guid = 230 + ) LocalObject(548, Door.Constructor(Vector3(684.2806f, 1258.55f, 114.249f)), owning_building_guid = 230) LocalObject(549, Door.Constructor(Vector3(688.5319f, 1265.615f, 114.229f)), owning_building_guid = 230) LocalObject(550, Door.Constructor(Vector3(692.6342f, 1272.507f, 114.229f)), owning_building_guid = 230) @@ -374,21 +904,75 @@ object Ugd06 { // Drugaskan LocalObject(554, Door.Constructor(Vector3(718.8141f, 1284.958f, 104.161f)), owning_building_guid = 230) LocalObject(555, Door.Constructor(Vector3(743.5565f, 1279.537f, 84.249f)), owning_building_guid = 230) LocalObject(686, Door.Constructor(Vector3(675.4597f, 1282.781f, 89.103f)), owning_building_guid = 230) - LocalObject(785, Terminal.Constructor(Vector3(705.5295f, 1244.009f, 102.387f), vanu_air_vehicle_term), owning_building_guid = 230) - LocalObject(863, VehicleSpawnPad.Constructor(Vector3(713.2993f, 1248.321f, 102.386f), vanu_vehicle_creation_pad, Vector3(0, 0, 121)), owning_building_guid = 230, terminal_guid = 785) - LocalObject(786, Terminal.Constructor(Vector3(723.7557f, 1274.36f, 102.387f), vanu_air_vehicle_term), owning_building_guid = 230) - LocalObject(864, VehicleSpawnPad.Constructor(Vector3(723.6083f, 1265.478f, 102.386f), vanu_vehicle_creation_pad, Vector3(0, 0, 121)), owning_building_guid = 230, terminal_guid = 786) - LocalObject(796, Terminal.Constructor(Vector3(702.5449f, 1252.534f, 84.97f), vanu_equipment_term), owning_building_guid = 230) - LocalObject(797, Terminal.Constructor(Vector3(714.9058f, 1273.106f, 84.97f), vanu_equipment_term), owning_building_guid = 230) - LocalObject(868, Terminal.Constructor(Vector3(703.9712f, 1265.516f, 87.47f), vanu_vehicle_term), owning_building_guid = 230) - LocalObject(862, VehicleSpawnPad.Constructor(Vector3(691.0519f, 1273.405f, 84.875f), vanu_vehicle_creation_pad, Vector3(0, 0, -59)), owning_building_guid = 230, terminal_guid = 868) + LocalObject( + 785, + Terminal.Constructor(Vector3(705.5295f, 1244.009f, 102.387f), vanu_air_vehicle_term), + owning_building_guid = 230 + ) + LocalObject( + 863, + VehicleSpawnPad + .Constructor(Vector3(713.2993f, 1248.321f, 102.386f), vanu_vehicle_creation_pad, Vector3(0, 0, 121)), + owning_building_guid = 230, + terminal_guid = 785 + ) + LocalObject( + 786, + Terminal.Constructor(Vector3(723.7557f, 1274.36f, 102.387f), vanu_air_vehicle_term), + owning_building_guid = 230 + ) + LocalObject( + 864, + VehicleSpawnPad + .Constructor(Vector3(723.6083f, 1265.478f, 102.386f), vanu_vehicle_creation_pad, Vector3(0, 0, 121)), + owning_building_guid = 230, + terminal_guid = 786 + ) + LocalObject( + 796, + Terminal.Constructor(Vector3(702.5449f, 1252.534f, 84.97f), vanu_equipment_term), + owning_building_guid = 230 + ) + LocalObject( + 797, + Terminal.Constructor(Vector3(714.9058f, 1273.106f, 84.97f), vanu_equipment_term), + owning_building_guid = 230 + ) + LocalObject( + 868, + Terminal.Constructor(Vector3(703.9712f, 1265.516f, 87.47f), vanu_vehicle_term), + owning_building_guid = 230 + ) + LocalObject( + 862, + VehicleSpawnPad + .Constructor(Vector3(691.0519f, 1273.405f, 84.875f), vanu_vehicle_creation_pad, Vector3(0, 0, -59)), + owning_building_guid = 230, + terminal_guid = 868 + ) } Building10248() def Building10248(): Unit = { // Name: S_ATPlant Type: vanu_vehicle_station GUID: 231, MapID: 10248 - LocalBuilding("S_ATPlant", 231, 10248, FoundationBuilder(Building.Structure(StructureType.Building, Vector3(1304.12f, 799.11f, 83.07f), Vector3(0f, 0f, 142f), vanu_vehicle_station))) - LocalObject(795, CaptureTerminal.Constructor(Vector3(1359.694f, 782.8185f, 113.554f), vanu_control_console), owning_building_guid = 231) + LocalBuilding( + "S_ATPlant", + 231, + 10248, + FoundationBuilder( + Building.Structure( + StructureType.Building, + Vector3(1304.12f, 799.11f, 83.07f), + Vector3(0f, 0f, 142f), + vanu_vehicle_station + ) + ) + ) + LocalObject( + 795, + CaptureTerminal.Constructor(Vector3(1359.694f, 782.8185f, 113.554f), vanu_control_console), + owning_building_guid = 231 + ) LocalObject(676, Door.Constructor(Vector3(1298.604f, 784.5164f, 84.849f)), owning_building_guid = 231) LocalObject(677, Door.Constructor(Vector3(1322.501f, 776.121f, 104.761f)), owning_building_guid = 231) LocalObject(678, Door.Constructor(Vector3(1333.401f, 829.0539f, 104.773f)), owning_building_guid = 231) @@ -398,132 +982,450 @@ object Ugd06 { // Drugaskan LocalObject(683, Door.Constructor(Vector3(1354.915f, 791.6285f, 114.829f)), owning_building_guid = 231) LocalObject(684, Door.Constructor(Vector3(1359.996f, 798.1234f, 114.849f)), owning_building_guid = 231) LocalObject(687, Door.Constructor(Vector3(1365.798f, 772.9979f, 89.703f)), owning_building_guid = 231) - LocalObject(787, Terminal.Constructor(Vector3(1318.888f, 787.242f, 102.987f), vanu_air_vehicle_term), owning_building_guid = 231) - LocalObject(865, VehicleSpawnPad.Constructor(Vector3(1320.117f, 796.0395f, 102.986f), vanu_vehicle_creation_pad, Vector3(0, 0, -52)), owning_building_guid = 231, terminal_guid = 787) - LocalObject(788, Terminal.Constructor(Vector3(1340.677f, 815.1455f, 102.987f), vanu_air_vehicle_term), owning_building_guid = 231) - LocalObject(866, VehicleSpawnPad.Constructor(Vector3(1332.44f, 811.8123f, 102.986f), vanu_vehicle_creation_pad, Vector3(0, 0, -52)), owning_building_guid = 231, terminal_guid = 788) - LocalObject(846, Terminal.Constructor(Vector3(1327.825f, 787.4082f, 85.57f), vanu_equipment_term), owning_building_guid = 231) - LocalObject(847, Terminal.Constructor(Vector3(1342.601f, 806.3204f, 85.57f), vanu_equipment_term), owning_building_guid = 231) - LocalObject(869, Terminal.Constructor(Vector3(1339.603f, 793.6083f, 88.07f), vanu_vehicle_term), owning_building_guid = 231) - LocalObject(867, VehicleSpawnPad.Constructor(Vector3(1351.464f, 784.2039f, 85.475f), vanu_vehicle_creation_pad, Vector3(0, 0, 128)), owning_building_guid = 231, terminal_guid = 869) + LocalObject( + 787, + Terminal.Constructor(Vector3(1318.888f, 787.242f, 102.987f), vanu_air_vehicle_term), + owning_building_guid = 231 + ) + LocalObject( + 865, + VehicleSpawnPad + .Constructor(Vector3(1320.117f, 796.0395f, 102.986f), vanu_vehicle_creation_pad, Vector3(0, 0, -52)), + owning_building_guid = 231, + terminal_guid = 787 + ) + LocalObject( + 788, + Terminal.Constructor(Vector3(1340.677f, 815.1455f, 102.987f), vanu_air_vehicle_term), + owning_building_guid = 231 + ) + LocalObject( + 866, + VehicleSpawnPad + .Constructor(Vector3(1332.44f, 811.8123f, 102.986f), vanu_vehicle_creation_pad, Vector3(0, 0, -52)), + owning_building_guid = 231, + terminal_guid = 788 + ) + LocalObject( + 846, + Terminal.Constructor(Vector3(1327.825f, 787.4082f, 85.57f), vanu_equipment_term), + owning_building_guid = 231 + ) + LocalObject( + 847, + Terminal.Constructor(Vector3(1342.601f, 806.3204f, 85.57f), vanu_equipment_term), + owning_building_guid = 231 + ) + LocalObject( + 869, + Terminal.Constructor(Vector3(1339.603f, 793.6083f, 88.07f), vanu_vehicle_term), + owning_building_guid = 231 + ) + LocalObject( + 867, + VehicleSpawnPad + .Constructor(Vector3(1351.464f, 784.2039f, 85.475f), vanu_vehicle_creation_pad, Vector3(0, 0, 128)), + owning_building_guid = 231, + terminal_guid = 869 + ) } Building10225() def Building10225(): Unit = { // Name: GW_Cavern6_W Type: warpgate_cavern GUID: 232, MapID: 10225 - LocalBuilding("GW_Cavern6_W", 232, 10225, FoundationBuilder(WarpGate.Structure(Vector3(281.98f, 637.77f, 60.83f)))) + LocalBuilding( + "GW_Cavern6_W", + 232, + 10225, + FoundationBuilder(WarpGate.Structure(Vector3(281.98f, 637.77f, 60.83f))) + ) } Building10224() def Building10224(): Unit = { // Name: GW_Cavern6_N Type: warpgate_cavern GUID: 233, MapID: 10224 - LocalBuilding("GW_Cavern6_N", 233, 10224, FoundationBuilder(WarpGate.Structure(Vector3(1093.93f, 2082.3f, 80.82f)))) + LocalBuilding( + "GW_Cavern6_N", + 233, + 10224, + FoundationBuilder(WarpGate.Structure(Vector3(1093.93f, 2082.3f, 80.82f))) + ) } Building10226() def Building10226(): Unit = { // Name: GW_Cavern6_S Type: warpgate_cavern GUID: 234, MapID: 10226 - LocalBuilding("GW_Cavern6_S", 234, 10226, FoundationBuilder(WarpGate.Structure(Vector3(1218.27f, 218.05f, 100.82f)))) + LocalBuilding( + "GW_Cavern6_S", + 234, + 10226, + FoundationBuilder(WarpGate.Structure(Vector3(1218.27f, 218.05f, 100.82f))) + ) } Building10227() def Building10227(): Unit = { // Name: GW_Cavern6_E Type: warpgate_cavern GUID: 235, MapID: 10227 - LocalBuilding("GW_Cavern6_E", 235, 10227, FoundationBuilder(WarpGate.Structure(Vector3(1986.27f, 922.08f, 20.82f)))) + LocalBuilding( + "GW_Cavern6_E", + 235, + 10227, + FoundationBuilder(WarpGate.Structure(Vector3(1986.27f, 922.08f, 20.82f))) + ) } ZoneOwnedObjects() def ZoneOwnedObjects(): Unit = { - LocalObject(798, Terminal.Constructor(Vector3(746.59f, 1360.06f, 99.58f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(800, Terminal.Constructor(Vector3(760.13f, 1345.53f, 99.58f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(801, Terminal.Constructor(Vector3(761.34f, 1373.51f, 99.58f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(803, Terminal.Constructor(Vector3(774.88f, 1358.94f, 99.58f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(804, Terminal.Constructor(Vector3(867.18f, 1080.28f, 89.45f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(805, Terminal.Constructor(Vector3(871.23f, 1068f, 89.45f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(806, Terminal.Constructor(Vector3(873.46f, 1273.87f, 100.52f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(807, Terminal.Constructor(Vector3(877.77f, 1276.37f, 100.52f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(812, Terminal.Constructor(Vector3(901.33f, 949.3f, 176.04f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(817, Terminal.Constructor(Vector3(919.88f, 968.41f, 176.04f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(818, Terminal.Constructor(Vector3(968.73f, 1210.66f, 179.41f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(819, Terminal.Constructor(Vector3(974.72f, 1169.48f, 179.41f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(820, Terminal.Constructor(Vector3(996.15f, 1132.13f, 97.47f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(821, Terminal.Constructor(Vector3(1007.58f, 1125.96f, 91.97f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(822, Terminal.Constructor(Vector3(1015.53f, 643.92f, 94.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(823, Terminal.Constructor(Vector3(1048.62f, 890.34f, 92.65f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(824, Terminal.Constructor(Vector3(1050.16f, 654.59f, 94.56f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(825, Terminal.Constructor(Vector3(1075.73f, 880.84f, 92.65f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(834, Terminal.Constructor(Vector3(1193.54f, 969.01f, 167.4f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(835, Terminal.Constructor(Vector3(1198.76f, 961.62f, 167.4f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(836, Terminal.Constructor(Vector3(1207.29f, 837.52f, 116.64f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(837, Terminal.Constructor(Vector3(1207.35f, 868.13f, 116.64f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(838, Terminal.Constructor(Vector3(1240.36f, 801.01f, 85.06f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(840, Terminal.Constructor(Vector3(1248.79f, 818.76f, 85.06f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(841, Terminal.Constructor(Vector3(1258.22f, 792.85f, 85.06f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(843, Terminal.Constructor(Vector3(1263.08f, 997.75f, 100.83f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(844, Terminal.Constructor(Vector3(1263.42f, 1014.84f, 100.83f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(845, Terminal.Constructor(Vector3(1266.79f, 810.47f, 85.06f), vanu_equipment_term), owning_building_guid = 0) - LocalObject(11, ProximityTerminal.Constructor(Vector3(1172.58f, 709.8f, 81.4f), crystals_health_a), owning_building_guid = 0) - LocalObject(703, ProximityTerminal.Constructor(Vector3(857.28f, 1126.68f, 87.35f), crystals_health_a), owning_building_guid = 0) - LocalObject(704, ProximityTerminal.Constructor(Vector3(978.1f, 685.44f, 96.28f), crystals_health_a), owning_building_guid = 0) - LocalObject(705, ProximityTerminal.Constructor(Vector3(997.47f, 936.4f, 98.43f), crystals_health_a), owning_building_guid = 0) - LocalObject(706, ProximityTerminal.Constructor(Vector3(1144.78f, 920.28f, 179.44f), crystals_health_a), owning_building_guid = 0) - LocalObject(707, ProximityTerminal.Constructor(Vector3(1207.19f, 849.69f, 106.62f), crystals_health_a), owning_building_guid = 0) - LocalObject(708, ProximityTerminal.Constructor(Vector3(1256.2f, 1050.93f, 170.44f), crystals_health_a), owning_building_guid = 0) - LocalObject(709, ProximityTerminal.Constructor(Vector3(1350.98f, 1147.12f, 89.94f), crystals_health_a), owning_building_guid = 0) - LocalObject(710, ProximityTerminal.Constructor(Vector3(828.19f, 1024.07f, 166.21f), crystals_health_b), owning_building_guid = 0) - LocalObject(711, ProximityTerminal.Constructor(Vector3(887.15f, 1281.71f, 110.54f), crystals_health_b), owning_building_guid = 0) - LocalObject(712, ProximityTerminal.Constructor(Vector3(1055.56f, 1071.61f, 102.26f), crystals_health_b), owning_building_guid = 0) - LocalObject(713, ProximityTerminal.Constructor(Vector3(1069.99f, 1127.29f, 174.49f), crystals_health_b), owning_building_guid = 0) - LocalObject(205, FacilityTurret.Constructor(Vector3(740.28f, 1248.13f, 102.39f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 798, + Terminal.Constructor(Vector3(746.59f, 1360.06f, 99.58f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 800, + Terminal.Constructor(Vector3(760.13f, 1345.53f, 99.58f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 801, + Terminal.Constructor(Vector3(761.34f, 1373.51f, 99.58f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 803, + Terminal.Constructor(Vector3(774.88f, 1358.94f, 99.58f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 804, + Terminal.Constructor(Vector3(867.18f, 1080.28f, 89.45f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 805, + Terminal.Constructor(Vector3(871.23f, 1068f, 89.45f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 806, + Terminal.Constructor(Vector3(873.46f, 1273.87f, 100.52f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 807, + Terminal.Constructor(Vector3(877.77f, 1276.37f, 100.52f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 812, + Terminal.Constructor(Vector3(901.33f, 949.3f, 176.04f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 817, + Terminal.Constructor(Vector3(919.88f, 968.41f, 176.04f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 818, + Terminal.Constructor(Vector3(968.73f, 1210.66f, 179.41f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 819, + Terminal.Constructor(Vector3(974.72f, 1169.48f, 179.41f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 820, + Terminal.Constructor(Vector3(996.15f, 1132.13f, 97.47f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 821, + Terminal.Constructor(Vector3(1007.58f, 1125.96f, 91.97f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 822, + Terminal.Constructor(Vector3(1015.53f, 643.92f, 94.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 823, + Terminal.Constructor(Vector3(1048.62f, 890.34f, 92.65f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 824, + Terminal.Constructor(Vector3(1050.16f, 654.59f, 94.56f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 825, + Terminal.Constructor(Vector3(1075.73f, 880.84f, 92.65f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 834, + Terminal.Constructor(Vector3(1193.54f, 969.01f, 167.4f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 835, + Terminal.Constructor(Vector3(1198.76f, 961.62f, 167.4f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 836, + Terminal.Constructor(Vector3(1207.29f, 837.52f, 116.64f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 837, + Terminal.Constructor(Vector3(1207.35f, 868.13f, 116.64f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 838, + Terminal.Constructor(Vector3(1240.36f, 801.01f, 85.06f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 840, + Terminal.Constructor(Vector3(1248.79f, 818.76f, 85.06f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 841, + Terminal.Constructor(Vector3(1258.22f, 792.85f, 85.06f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 843, + Terminal.Constructor(Vector3(1263.08f, 997.75f, 100.83f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 844, + Terminal.Constructor(Vector3(1263.42f, 1014.84f, 100.83f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 845, + Terminal.Constructor(Vector3(1266.79f, 810.47f, 85.06f), vanu_equipment_term), + owning_building_guid = 0 + ) + LocalObject( + 11, + ProximityTerminal.Constructor(Vector3(1172.58f, 709.8f, 81.4f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 703, + ProximityTerminal.Constructor(Vector3(857.28f, 1126.68f, 87.35f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 704, + ProximityTerminal.Constructor(Vector3(978.1f, 685.44f, 96.28f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 705, + ProximityTerminal.Constructor(Vector3(997.47f, 936.4f, 98.43f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 706, + ProximityTerminal.Constructor(Vector3(1144.78f, 920.28f, 179.44f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 707, + ProximityTerminal.Constructor(Vector3(1207.19f, 849.69f, 106.62f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 708, + ProximityTerminal.Constructor(Vector3(1256.2f, 1050.93f, 170.44f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 709, + ProximityTerminal.Constructor(Vector3(1350.98f, 1147.12f, 89.94f), crystals_health_a), + owning_building_guid = 0 + ) + LocalObject( + 710, + ProximityTerminal.Constructor(Vector3(828.19f, 1024.07f, 166.21f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 711, + ProximityTerminal.Constructor(Vector3(887.15f, 1281.71f, 110.54f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 712, + ProximityTerminal.Constructor(Vector3(1055.56f, 1071.61f, 102.26f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 713, + ProximityTerminal.Constructor(Vector3(1069.99f, 1127.29f, 174.49f), crystals_health_b), + owning_building_guid = 0 + ) + LocalObject( + 205, + FacilityTurret.Constructor(Vector3(740.28f, 1248.13f, 102.39f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(205, 5000) - LocalObject(206, FacilityTurret.Constructor(Vector3(809.59f, 1107.17f, 106.13f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 206, + FacilityTurret.Constructor(Vector3(809.59f, 1107.17f, 106.13f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(206, 5001) - LocalObject(207, FacilityTurret.Constructor(Vector3(850.2f, 1289.34f, 95.04f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 207, + FacilityTurret.Constructor(Vector3(850.2f, 1289.34f, 95.04f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(207, 5002) - LocalObject(208, FacilityTurret.Constructor(Vector3(882.78f, 1056.81f, 89.36f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 208, + FacilityTurret.Constructor(Vector3(882.78f, 1056.81f, 89.36f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(208, 5003) - LocalObject(209, FacilityTurret.Constructor(Vector3(883.18f, 900.09f, 123.26f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 209, + FacilityTurret.Constructor(Vector3(883.18f, 900.09f, 123.26f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(209, 5004) - LocalObject(210, FacilityTurret.Constructor(Vector3(897.52f, 1111.75f, 95.42f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 210, + FacilityTurret.Constructor(Vector3(897.52f, 1111.75f, 95.42f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(210, 5005) - LocalObject(211, FacilityTurret.Constructor(Vector3(901.13f, 1260.92f, 95.04f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 211, + FacilityTurret.Constructor(Vector3(901.13f, 1260.92f, 95.04f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(211, 5006) - LocalObject(212, FacilityTurret.Constructor(Vector3(933.25f, 896.94f, 108.78f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 212, + FacilityTurret.Constructor(Vector3(933.25f, 896.94f, 108.78f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(212, 5007) - LocalObject(213, FacilityTurret.Constructor(Vector3(980.25f, 1277.41f, 81.61f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 213, + FacilityTurret.Constructor(Vector3(980.25f, 1277.41f, 81.61f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(213, 5008) - LocalObject(214, FacilityTurret.Constructor(Vector3(989.24f, 1112.19f, 97.47f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 214, + FacilityTurret.Constructor(Vector3(989.24f, 1112.19f, 97.47f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(214, 5009) - LocalObject(215, FacilityTurret.Constructor(Vector3(1010.06f, 1207.81f, 100.65f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 215, + FacilityTurret.Constructor(Vector3(1010.06f, 1207.81f, 100.65f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(215, 5010) - LocalObject(216, FacilityTurret.Constructor(Vector3(1020.39f, 934.87f, 98.43f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 216, + FacilityTurret.Constructor(Vector3(1020.39f, 934.87f, 98.43f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(216, 5011) - LocalObject(217, FacilityTurret.Constructor(Vector3(1024.5f, 824.39f, 109.9f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 217, + FacilityTurret.Constructor(Vector3(1024.5f, 824.39f, 109.9f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(217, 5012) - LocalObject(218, FacilityTurret.Constructor(Vector3(1046.17f, 1093.7f, 100.3f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 218, + FacilityTurret.Constructor(Vector3(1046.17f, 1093.7f, 100.3f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(218, 5013) - LocalObject(219, FacilityTurret.Constructor(Vector3(1103.21f, 909.09f, 81.32f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 219, + FacilityTurret.Constructor(Vector3(1103.21f, 909.09f, 81.32f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(219, 5014) - LocalObject(220, FacilityTurret.Constructor(Vector3(1106.4f, 1091.2f, 115.81f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 220, + FacilityTurret.Constructor(Vector3(1106.4f, 1091.2f, 115.81f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(220, 5015) - LocalObject(221, FacilityTurret.Constructor(Vector3(1143.93f, 1173.62f, 137.22f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 221, + FacilityTurret.Constructor(Vector3(1143.93f, 1173.62f, 137.22f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(221, 5016) - LocalObject(222, FacilityTurret.Constructor(Vector3(1158.52f, 731.05f, 90.93f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 222, + FacilityTurret.Constructor(Vector3(1158.52f, 731.05f, 90.93f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(222, 5017) - LocalObject(223, FacilityTurret.Constructor(Vector3(1181.47f, 838.23f, 101.14f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 223, + FacilityTurret.Constructor(Vector3(1181.47f, 838.23f, 101.14f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(223, 5018) - LocalObject(224, FacilityTurret.Constructor(Vector3(1212.43f, 868.94f, 120.92f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 224, + FacilityTurret.Constructor(Vector3(1212.43f, 868.94f, 120.92f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(224, 5019) - LocalObject(225, FacilityTurret.Constructor(Vector3(1219.12f, 993.4f, 102.26f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 225, + FacilityTurret.Constructor(Vector3(1219.12f, 993.4f, 102.26f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(225, 5020) - LocalObject(226, FacilityTurret.Constructor(Vector3(1232.83f, 867.35f, 101.14f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 226, + FacilityTurret.Constructor(Vector3(1232.83f, 867.35f, 101.14f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(226, 5021) - LocalObject(227, FacilityTurret.Constructor(Vector3(1306.63f, 814.39f, 102.99f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 227, + FacilityTurret.Constructor(Vector3(1306.63f, 814.39f, 102.99f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(227, 5022) - LocalObject(228, FacilityTurret.Constructor(Vector3(1338.8f, 750.12f, 102.99f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 228, + FacilityTurret.Constructor(Vector3(1338.8f, 750.12f, 102.99f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(228, 5023) - LocalObject(229, FacilityTurret.Constructor(Vector3(1356.64f, 861.39f, 92.4f), vanu_sentry_turret), owning_building_guid = 0) + LocalObject( + 229, + FacilityTurret.Constructor(Vector3(1356.64f, 861.39f, 92.4f), vanu_sentry_turret), + owning_building_guid = 0 + ) TurretToWeapon(229, 5024) } @@ -545,279 +1447,2327 @@ object Ugd06 { // Drugaskan Lattice() def ZipLines(): Unit = { - ZipLinePaths(new ZipLinePath(1, true, List(Vector3(736.484f, 1292.551f, 102.746f), Vector3(733.296f, 1284.238f, 85.32f)))) - ZipLinePaths(new ZipLinePath(2, false, List(Vector3(797.258f, 1095.976f, 107.883f), Vector3(821.79f, 1046.854f, 164.56f)))) - ZipLinePaths(new ZipLinePath(3, false, List(Vector3(830.324f, 1048.307f, 164.563f), Vector3(930.348f, 1184.376f, 180.261f)))) - ZipLinePaths(new ZipLinePath(4, false, List(Vector3(831.267f, 1000.379f, 164.567f), Vector3(878.283f, 967.178f, 174.45f)))) - ZipLinePaths(new ZipLinePath(5, false, List(Vector3(850.911f, 1030.282f, 164.806f), Vector3(851.274f, 1033.241f, 164.292f), Vector3(862.522f, 1124.985f, 97.195f)))) - ZipLinePaths(new ZipLinePath(6, true, List(Vector3(872.544f, 1280.257f, 106.39f), Vector3(873.173f, 1280.791f, 100.874f)))) - ZipLinePaths(new ZipLinePath(7, false, List(Vector3(877.178f, 991.846f, 175.71f), Vector3(851.866f, 1023.792f, 167.996f)))) - ZipLinePaths(new ZipLinePath(8, true, List(Vector3(877.484f, 1269.249f, 100.874f), Vector3(879.568f, 1268.493f, 106.39f)))) - ZipLinePaths(new ZipLinePath(9, false, List(Vector3(890.759f, 1249.269f, 106.891f), Vector3(929.721f, 1191.344f, 180.248f), Vector3(930.978f, 1189.476f, 180.258f)))) - ZipLinePaths(new ZipLinePath(10, false, List(Vector3(906.216f, 993.369f, 174.363f), Vector3(904.343f, 1081.134f, 189.577f)))) - ZipLinePaths(new ZipLinePath(11, false, List(Vector3(897.3f, 1088.55f, 189.596f), Vector3(893.393f, 1085.86f, 189.107f), Vector3(834.797f, 1045.518f, 164.587f)))) - ZipLinePaths(new ZipLinePath(12, false, List(Vector3(919.03f, 892.661f, 124.113f), Vector3(946.681f, 941.791f, 118.324f)))) - ZipLinePaths(new ZipLinePath(13, false, List(Vector3(935.446f, 1097.096f, 178.111f), Vector3(987.271f, 1008.196f, 171.632f)))) - ZipLinePaths(new ZipLinePath(14, false, List(Vector3(931.487f, 1179.55f, 180.267f), Vector3(945.998f, 1134.391f, 189.579f)))) - ZipLinePaths(new ZipLinePath(15, false, List(Vector3(941.35f, 952.9f, 118.301f), Vector3(997.19f, 982.882f, 116.193f)))) - ZipLinePaths(new ZipLinePath(16, true, List(Vector3(979.744f, 928.34f, 93.272f), Vector3(979.439f, 928.257f, 98.779f)))) - ZipLinePaths(new ZipLinePath(17, false, List(Vector3(988.07f, 993.856f, 171.603f), Vector3(930.176f, 982.283f, 174.075f)))) - ZipLinePaths(new ZipLinePath(18, false, List(Vector3(991.738f, 887.327f, 163.802f), Vector3(925.305f, 953.451f, 176.895f)))) - ZipLinePaths(new ZipLinePath(19, false, List(Vector3(1004.142f, 905.185f, 163.947f), Vector3(1015.49f, 963.547f, 171.569f)))) - ZipLinePaths(new ZipLinePath(20, false, List(Vector3(1005.402f, 1400.078f, 123.017f), Vector3(864.789f, 1301.178f, 106.891f)))) - ZipLinePaths(new ZipLinePath(21, true, List(Vector3(1006.212f, 1018.303f, 176.13f), Vector3(1006.335f, 1018.239f, 181.13f)))) - ZipLinePaths(new ZipLinePath(22, true, List(Vector3(1006.301f, 869.097f, 163.281f), Vector3(1006.262f, 868.834f, 168.788f)))) - ZipLinePaths(new ZipLinePath(23, true, List(Vector3(1007.402f, 983.651f, 171.13f), Vector3(1007.46f, 983.67f, 176.13f)))) - ZipLinePaths(new ZipLinePath(24, true, List(Vector3(1008.926f, 1018.168f, 166.13f), Vector3(1008.886f, 1018.146f, 171.13f)))) - ZipLinePaths(new ZipLinePath(25, false, List(Vector3(1006.662f, 832.842f, 112.39f), Vector3(918.117f, 946.097f, 176.938f)))) - ZipLinePaths(new ZipLinePath(26, false, List(Vector3(1012.99f, 1201.236f, 180.278f), Vector3(1020.024f, 1402.671f, 123.084f)))) - ZipLinePaths(new ZipLinePath(27, false, List(Vector3(1014.401f, 1192.4f, 180.259f), Vector3(1024.248f, 1120.21f, 175.306f)))) - ZipLinePaths(new ZipLinePath(28, true, List(Vector3(1015.772f, 1144.392f, 92.312f), Vector3(1015.304f, 1144.907f, 97.818f)))) - ZipLinePaths(new ZipLinePath(29, false, List(Vector3(1018.083f, 962.352f, 176.63f), Vector3(1015.899f, 960.875f, 176.124f), Vector3(948.199f, 915.089f, 102.837f)))) - ZipLinePaths(new ZipLinePath(30, false, List(Vector3(1019.599f, 1038.769f, 181.6f), Vector3(1026.673f, 1104.455f, 175.304f)))) - ZipLinePaths(new ZipLinePath(31, false, List(Vector3(1019.603f, 1108.067f, 175.312f), Vector3(957.962f, 1127.949f, 189.078f), Vector3(953.853f, 1129.275f, 189.58f)))) - ZipLinePaths(new ZipLinePath(32, false, List(Vector3(1028.221f, 1036.732f, 176.631f), Vector3(1014.174f, 1136.949f, 112.501f)))) - ZipLinePaths(new ZipLinePath(33, false, List(Vector3(1029.711f, 964.586f, 176.63f), Vector3(1030.75f, 962.27f, 176.113f), Vector3(1062.96f, 890.468f, 102.494f)))) - ZipLinePaths(new ZipLinePath(34, false, List(Vector3(1030.361f, 963.633f, 171.579f), Vector3(1102.77f, 942.405f, 185.802f)))) - ZipLinePaths(new ZipLinePath(35, true, List(Vector3(1041.412f, 1017.873f, 166.13f), Vector3(1041.577f, 1018.02f, 176.13f)))) - ZipLinePaths(new ZipLinePath(36, true, List(Vector3(1042.555f, 983.339f, 176.13f), Vector3(1042.784f, 983.227f, 181.13f)))) - ZipLinePaths(new ZipLinePath(37, true, List(Vector3(1042.968f, 984.255f, 166.13f), Vector3(1043.026f, 984.175f, 171.13f)))) - ZipLinePaths(new ZipLinePath(38, false, List(Vector3(1049.448f, 1122.065f, 106.348f), Vector3(925.736f, 986.791f, 174.108f)))) - ZipLinePaths(new ZipLinePath(39, false, List(Vector3(1050.181f, 996.471f, 116.194f), Vector3(1094.395f, 1021.971f, 119.888f), Vector3(1100.711f, 1025.614f, 119.731f)))) - ZipLinePaths(new ZipLinePath(40, false, List(Vector3(1062.232f, 1012.159f, 181.756f), Vector3(1108.189f, 1029.232f, 172.319f)))) - ZipLinePaths(new ZipLinePath(41, false, List(Vector3(1064.671f, 626.333f, 102.048f), Vector3(1150.823f, 607.773f, 107.952f)))) - ZipLinePaths(new ZipLinePath(42, false, List(Vector3(1080.843f, 1098.006f, 175.309f), Vector3(1033.702f, 1041.054f, 181.641f)))) - ZipLinePaths(new ZipLinePath(43, false, List(Vector3(1094.15f, 1103.925f, 175.33f), Vector3(1131.292f, 1068.319f, 169.536f)))) - ZipLinePaths(new ZipLinePath(44, false, List(Vector3(1100.778f, 938.989f, 185.807f), Vector3(1021.232f, 892.206f, 163.757f)))) - ZipLinePaths(new ZipLinePath(45, false, List(Vector3(1111.653f, 1051.984f, 172.311f), Vector3(1086.377f, 1100.131f, 175.317f)))) - ZipLinePaths(new ZipLinePath(46, false, List(Vector3(1119.839f, 953.53f, 180.529f), Vector3(1064.102f, 992.538f, 181.578f)))) - ZipLinePaths(new ZipLinePath(47, false, List(Vector3(1122.09f, 1126.956f, 138.079f), Vector3(1100.116f, 1034.584f, 119.739f)))) - ZipLinePaths(new ZipLinePath(48, false, List(Vector3(1154.562f, 615.219f, 107.973f), Vector3(1060.824f, 665.928f, 95.423f)))) - ZipLinePaths(new ZipLinePath(49, false, List(Vector3(1173.53f, 947.864f, 166.273f), Vector3(1146.927f, 940.176f, 185.27f), Vector3(1145.154f, 939.664f, 185.791f)))) - ZipLinePaths(new ZipLinePath(50, false, List(Vector3(1177.347f, 857.502f, 112.991f), Vector3(1134.971f, 902.085f, 179.808f), Vector3(1133.604f, 903.523f, 180.296f)))) - ZipLinePaths(new ZipLinePath(51, false, List(Vector3(1177.818f, 984.919f, 166.285f), Vector3(1171.66f, 1033.014f, 172.314f)))) - ZipLinePaths(new ZipLinePath(52, true, List(Vector3(1202.167f, 852.92f, 112.49f), Vector3(1201.179f, 854.737f, 106.974f)))) - ZipLinePaths(new ZipLinePath(53, true, List(Vector3(1213.359f, 851.26f, 106.974f), Vector3(1212.823f, 852.659f, 112.49f)))) - ZipLinePaths(new ZipLinePath(54, false, List(Vector3(1213.7f, 680.904f, 133.639f), Vector3(1210.939f, 676.835f, 133.114f), Vector3(1169.527f, 615.806f, 108.011f)))) - ZipLinePaths(new ZipLinePath(55, false, List(Vector3(1224.856f, 696.306f, 132.937f), Vector3(1237.086f, 848.842f, 112.994f)))) - ZipLinePaths(new ZipLinePath(56, false, List(Vector3(1251.865f, 1025.854f, 176.802f), Vector3(1221.815f, 988.86f, 166.322f)))) - ZipLinePaths(new ZipLinePath(57, false, List(Vector3(1280.512f, 1055.381f, 171.316f), Vector3(1376.507f, 1189.917f, 117.236f)))) - ZipLinePaths(new ZipLinePath(58, true, List(Vector3(1304.143f, 770.517f, 103.346f), Vector3(1307.887f, 777.753f, 85.92f)))) - ZipLinePaths(new ZipLinePath(59, true, List(Vector3(1346.959f, 827.541f, 85.92f), Vector3(1351.629f, 834.391f, 103.346f)))) - ZipLinePaths(new ZipLinePath(60, true, List(Vector3(1373.997f, 1180.755f, 83.698f), Vector3(1376.644f, 1197.211f, 116.71f)))) - ZipLinePaths(new ZipLinePath(61, false, List(Vector3(1376.099f, 1104.824f, 108.05f), Vector3(1271.454f, 1067.596f, 170.802f), Vector3(1269.793f, 1067.005f, 171.301f)))) - ZipLinePaths(new ZipLinePath(62, true, List(Vector3(1381.237f, 1195.832f, 116.71f), Vector3(1384.165f, 1181.39f, 83.698f)))) - ZipLinePaths(new ZipLinePath(63, false, List(Vector3(1381.497f, 1187.474f, 117.214f), Vector3(1389.994f, 1112.664f, 107.947f)))) - ZipLinePaths(new ZipLinePath(64, false, List(Vector3(627.092f, 916.732f, 118.239f), Vector3(822.396f, 868.007f, 92.658f)))) - ZipLinePaths(new ZipLinePath(65, false, List(Vector3(854.65f, 866.898f, 124.13f), Vector3(816.091f, 1002.187f, 164.58f)))) - ZipLinePaths(new ZipLinePath(66, true, List(Vector3(1260.882f, 821.364f, 85.406f), Vector3(1240.71f, 805.898f, 95.45f)))) - ZipLinePaths(new ZipLinePath(67, true, List(Vector3(1260.807f, 798f, 95.45f), Vector3(1246.127f, 790.09f, 85.406f)))) - ZipLinePaths(new ZipLinePath(68, false, List(Vector3(993.401f, 705.41f, 95.203f), Vector3(1117.34f, 894.464f, 180.386f), Vector3(1119.307f, 897.465f, 180.316f)))) - ZipLinePaths(new ZipLinePath(69, false, List(Vector3(1231.631f, 873.279f, 101.99f), Vector3(1252.107f, 977.047f, 99.195f)))) - ZipLinePaths(new ZipLinePath(70, false, List(Vector3(1297.144f, 960.064f, 110.671f), Vector3(1230.772f, 978.768f, 166.333f), Vector3(1226.347f, 980.015f, 166.311f)))) - ZipLinePaths(new ZipLinePath(71, false, List(Vector3(1184.828f, 1039.951f, 169.627f), Vector3(1238.524f, 1034.453f, 171.286f)))) - ZipLinePaths(new ZipLinePath(72, false, List(Vector3(1300.449f, 972.002f, 110.737f), Vector3(1183.438f, 1032.292f, 173.593f), Vector3(1175.637f, 1036.312f, 172.356f)))) - ZipLinePaths(new ZipLinePath(73, false, List(Vector3(1216.71f, 879.307f, 107.531f), Vector3(1241.241f, 1027.486f, 170.833f), Vector3(1242.032f, 1032.266f, 171.265f)))) - ZipLinePaths(new ZipLinePath(74, false, List(Vector3(1176.666f, 1142.367f, 138.11f), Vector3(1168.297f, 1081.591f, 171.87f), Vector3(1167.739f, 1077.54f, 172.35f)))) - ZipLinePaths(new ZipLinePath(75, false, List(Vector3(1152.799f, 1174.853f, 138.109f), Vector3(1103.141f, 1132.14f, 174.215f), Vector3(1099.831f, 1129.292f, 174.744f)))) - ZipLinePaths(new ZipLinePath(76, false, List(Vector3(1123.628f, 1194.305f, 107.551f), Vector3(1020.93f, 1196.254f, 180.315f), Vector3(1014.084f, 1196.384f, 180.259f)))) - ZipLinePaths(new ZipLinePath(77, true, List(Vector3(747.901f, 1347.392f, 99.926f), Vector3(749.063f, 1364.266f, 109.97f)))) - ZipLinePaths(new ZipLinePath(78, true, List(Vector3(764.978f, 1349.413f, 109.97f), Vector3(773.404f, 1371.263f, 99.926f)))) - ZipLinePaths(new ZipLinePath(79, false, List(Vector3(832.845f, 1322.466f, 92.854f), Vector3(852.713f, 1315.965f, 90.02f)))) - ZipLinePaths(new ZipLinePath(80, false, List(Vector3(827.617f, 1279.218f, 92.551f), Vector3(811.451f, 1305.666f, 92.85f)))) - ZipLinePaths(new ZipLinePath(81, false, List(Vector3(735.485f, 1339.063f, 99.673f), Vector3(715.854f, 1302.093f, 103.238f)))) - ZipLinePaths(new ZipLinePath(82, false, List(Vector3(767.646f, 1325.436f, 99.674f), Vector3(782.281f, 1261.401f, 92.453f)))) - ZipLinePaths(new ZipLinePath(83, false, List(Vector3(854.91f, 1298.24f, 106.892f), Vector3(794.221f, 1358.634f, 99.673f)))) - ZipLinePaths(new ZipLinePath(84, false, List(Vector3(833.177f, 1339.31f, 92.853f), Vector3(855.999f, 1333.167f, 90.019f)))) - ZipLinePaths(new ZipLinePath(85, false, List(Vector3(909.731f, 849.693f, 124.164f), Vector3(990.096f, 872.508f, 163.851f)))) - ZipLinePaths(new ZipLinePath(86, false, List(Vector3(980.443f, 931.687f, 114.255f), Vector3(892.726f, 938.268f, 173.636f), Vector3(886.878f, 938.707f, 174.076f)))) - ZipLinePaths(new ZipLinePath(87, false, List(Vector3(1202.692f, 861.073f, 121.781f), Vector3(1207.235f, 934.6f, 165.81f), Vector3(1207.537f, 939.502f, 166.299f)))) - ZipLinePaths(new ZipLinePath(88, false, List(Vector3(1236.684f, 860.28f, 112.99f), Vector3(1300.068f, 959.856f, 110.671f)))) - ZipLinePaths(new ZipLinePath(89, true, List(Vector3(1314.086f, 962.603f, 87.15f), Vector3(1305.694f, 964.636f, 110.181f)))) - ZipLinePaths(new ZipLinePath(90, true, List(Vector3(1310.533f, 963.493f, 110.206f), Vector3(1305.583f, 964.179f, 87.15f)))) - ZipLinePaths(new ZipLinePath(91, false, List(Vector3(1183.282f, 855.405f, 102.024f), Vector3(1020.01f, 874.695f, 163.806f)))) - ZipLinePaths(new ZipLinePath(92, false, List(Vector3(1074.935f, 889.632f, 101.685f), Vector3(1160.119f, 949.134f, 165.832f), Vector3(1165.798f, 953.101f, 166.268f)))) - ZipLinePaths(new ZipLinePath(93, false, List(Vector3(1007.636f, 845.108f, 113.11f), Vector3(1013.388f, 849.192f, 112.44f), Vector3(1053.653f, 877.782f, 102.503f)))) - ZipLinePaths(new ZipLinePath(94, false, List(Vector3(992.283f, 891.888f, 163.798f), Vector3(991.451f, 896.417f, 163.742f), Vector3(985.627f, 928.117f, 113.461f)))) - ZipLinePaths(new ZipLinePath(95, false, List(Vector3(985.317f, 826.497f, 110.014f), Vector3(943.562f, 831.141f, 107.768f)))) - ZipLinePaths(new ZipLinePath(96, false, List(Vector3(1002.807f, 925.681f, 108.385f), Vector3(1046.205f, 892.296f, 102.497f)))) - ZipLinePaths(new ZipLinePath(97, false, List(Vector3(1018.81f, 2027.017f, 92.44f), Vector3(992.566f, 2029.269f, 96.041f), Vector3(927.929f, 2030.134f, 96.384f), Vector3(863.292f, 1998.2f, 96.728f), Vector3(852.6f, 1989.914f, 93.135f)))) - ZipLinePaths(new ZipLinePath(98, false, List(Vector3(816.912f, 1988.393f, 93.135f), Vector3(795.001f, 1943.548f, 95.243f), Vector3(772.69f, 1898.803f, 94.692f), Vector3(753.502f, 1860.322f, 93.135f)))) - ZipLinePaths(new ZipLinePath(99, false, List(Vector3(761.037f, 1809.202f, 93.135f), Vector3(738.964f, 1764.341f, 94.477f), Vector3(725.537f, 1735.63f, 93.135f)))) - ZipLinePaths(new ZipLinePath(100, false, List(Vector3(808.409f, 1678.306f, 92.894f), Vector3(758.409f, 1678.177f, 94.519f), Vector3(742.409f, 1678.136f, 93.135f)))) - ZipLinePaths(new ZipLinePath(101, false, List(Vector3(850.044f, 1661.524f, 93.131f), Vector3(817.963f, 1601.012f, 96.672f), Vector3(817.205f, 1534.27f, 76.708f), Vector3(794.955f, 1487.474f, 75.549f), Vector3(791.099f, 1479.906f, 73.138f)))) - ZipLinePaths(new ZipLinePath(102, false, List(Vector3(849.551f, 1730.123f, 93.131f), Vector3(825.82f, 1775.918f, 94.548f), Vector3(806.79f, 1821.714f, 93.938f), Vector3(800.292f, 1830.693f, 93.135f)))) - ZipLinePaths(new ZipLinePath(103, false, List(Vector3(875f, 1703.396f, 88.662f), Vector3(886.523f, 1699.949f, 88.08f), Vector3(888.484f, 1673.276f, 88.04f), Vector3(900.146f, 1672.403f, 88.525f)))) - ZipLinePaths(new ZipLinePath(104, false, List(Vector3(923.115f, 1671.849f, 88.633f), Vector3(934.566f, 1676.01f, 87.893f), Vector3(939.217f, 1685.07f, 88.753f), Vector3(953.325f, 1687.438f, 88.211f)))) - ZipLinePaths(new ZipLinePath(105, false, List(Vector3(1024.561f, 1703.441f, 88.18f), Vector3(1042.067f, 1704.672f, 84.078f), Vector3(1048.72f, 1715.187f, 83.93f), Vector3(1056.773f, 1719.103f, 83.186f)))) - ZipLinePaths(new ZipLinePath(106, false, List(Vector3(1084.358f, 1704.206f, 78.452f), Vector3(1093.939f, 1707.391f, 78.598f), Vector3(1097.02f, 1731.276f, 78.245f), Vector3(1112.424f, 1742.594f, 79.008f), Vector3(1112.125f, 1762.854f, 78.739f), Vector3(1109.527f, 1770.413f, 73.671f)))) - ZipLinePaths(new ZipLinePath(107, false, List(Vector3(1000.29f, 1625.633f, 98.859f), Vector3(1000.181f, 1617.133f, 103.185f), Vector3(999.672f, 1597.633f, 103.259f), Vector3(984.842f, 1588.277f, 104.119f), Vector3(984.027f, 1574.749f, 107.048f), Vector3(983.612f, 1563.521f, 108.283f)))) - ZipLinePaths(new ZipLinePath(108, false, List(Vector3(996.661f, 1495.754f, 113.22f), Vector3(1021.481f, 1495.402f, 118.224f), Vector3(1035.501f, 1495.85f, 118.262f)))) - ZipLinePaths(new ZipLinePath(109, false, List(Vector3(1036.79f, 1464.458f, 118.185f), Vector3(1018.161f, 1461.497f, 118.106f), Vector3(1016.947f, 1438.117f, 118.333f)))) - ZipLinePaths(new ZipLinePath(110, false, List(Vector3(1070.138f, 1989.771f, 93.138f), Vector3(1069.612f, 1920.429f, 96.74f), Vector3(1070.374f, 1855.956f, 78.424f), Vector3(1086.804f, 1820.319f, 73.139f)))) - ZipLinePaths(new ZipLinePath(111, false, List(Vector3(1117.331f, 1840.065f, 73.142f), Vector3(1183.426f, 1841.149f, 97.117f), Vector3(1215.745f, 1828.174f, 97.599f), Vector3(1232.464f, 1793.299f, 98.381f), Vector3(1191.496f, 1745.11f, 93.142f)))) - ZipLinePaths(new ZipLinePath(112, false, List(Vector3(1134.661f, 1721.993f, 93.137f), Vector3(1134.547f, 1663.691f, 98.085f), Vector3(1135.071f, 1607.797f, 80.745f), Vector3(1140.725f, 1579.552f, 76.669f), Vector3(1191.406f, 1546.395f, 79.469f), Vector3(1216.006f, 1501.982f, 80.37f), Vector3(1225.64f, 1482.405f, 73.137f)))) - ZipLinePaths(new ZipLinePath(113, true, List(Vector3(1228.182f, 1476.191f, 72.635f), Vector3(1222.636f, 1475.527f, 151.831f), Vector3(1141.796f, 1450.049f, 163.334f), Vector3(1095.336f, 1435.407f, 174.611f), Vector3(1048.876f, 1420.764f, 185.888f), Vector3(1013.488f, 1415.158f, 122.539f)))) - ZipLinePaths(new ZipLinePath(114, false, List(Vector3(1251.686f, 1518.522f, 73.137f), Vector3(1276.598f, 1564.053f, 77.383f), Vector3(1294.51f, 1597.684f, 77.847f), Vector3(1293.755f, 1663.148f, 97.995f), Vector3(1303.481f, 1693.585f, 97.716f), Vector3(1337.207f, 1713.821f, 93.137f)))) - ZipLinePaths(new ZipLinePath(115, false, List(Vector3(1394.471f, 1732.147f, 93.138f), Vector3(1394.459f, 1791.418f, 97.651f), Vector3(1426.63f, 1857.554f, 99.082f), Vector3(1426.438f, 1911.439f, 74.996f)))) - ZipLinePaths(new ZipLinePath(116, false, List(Vector3(1379.692f, 1934.355f, 73.137f), Vector3(1313.917f, 1933.904f, 96.93f), Vector3(1251.132f, 1933.473f, 117.324f), Vector3(1186.307f, 1933.425f, 98.423f), Vector3(1130.546f, 1932.646f, 93.137f)))) - ZipLinePaths(new ZipLinePath(117, true, List(Vector3(1025.864f, 1409.726f, 122.407f), Vector3(1070.85f, 1431.534f, 113.042f), Vector3(1208.454f, 1498.242f, 148.385f), Vector3(1244.62f, 1515.774f, 72.635f)))) - ZipLinePaths(new ZipLinePath(118, false, List(Vector3(1202.008f, 297.806f, 113.226f), Vector3(1202.584f, 322.137f, 118.691f), Vector3(1235.36f, 389.367f, 113.135f)))) - ZipLinePaths(new ZipLinePath(119, false, List(Vector3(1242.126f, 432.375f, 113.151f), Vector3(1274.428f, 433.633f, 111.467f), Vector3(1315.73f, 433.691f, 98.599f), Vector3(1376.535f, 434.707f, 78.133f), Vector3(1389.545f, 446.139f, 77.8f), Vector3(1386.464f, 499.904f, 73.151f)))) - ZipLinePaths(new ZipLinePath(120, false, List(Vector3(1131.491f, 241.737f, 113.146f), Vector3(1053.841f, 241.809f, 118.259f), Vector3(1003.713f, 241.856f, 103.067f), Vector3(954.568f, 241.902f, 88.559f), Vector3(924.097f, 241.93f, 73.144f)))) - ZipLinePaths(new ZipLinePath(121, false, List(Vector3(879.356f, 250.391f, 73.135f), Vector3(877.875f, 322.009f, 75.591f), Vector3(865.652f, 333.714f, 76.216f), Vector3(800.368f, 333.08f, 76.774f), Vector3(770.187f, 344.511f, 76.742f), Vector3(753.401f, 374.752f, 73.135f)))) - ZipLinePaths(new ZipLinePath(122, false, List(Vector3(724.372f, 439.993f, 73.135f), Vector3(702.543f, 484.976f, 75.034f), Vector3(695.558f, 499.37f, 73.135f)))) - ZipLinePaths(new ZipLinePath(123, false, List(Vector3(927.581f, 302.259f, 73.066f), Vector3(941.583f, 316.887f, 77.329f), Vector3(941.783f, 375.246f, 79.629f), Vector3(963.228f, 424.3f, 76.137f), Vector3(965.963f, 433.919f, 73.135f)))) - ZipLinePaths(new ZipLinePath(124, false, List(Vector3(1160.627f, 580.379f, 108.277f), Vector3(1161.721f, 570.879f, 108.041f), Vector3(1189.315f, 566.479f, 108.504f), Vector3(1191.699f, 543.808f, 108.218f)))) - ZipLinePaths(new ZipLinePath(125, false, List(Vector3(1207.802f, 538.221f, 113.201f), Vector3(1208.144f, 548.124f, 113.056f), Vector3(1210.215f, 566.825f, 108.333f), Vector3(1234.185f, 567.526f, 113.811f), Vector3(1237.758f, 564.185f, 113.25f)))) - ZipLinePaths(new ZipLinePath(126, false, List(Vector3(1224.007f, 664.636f, 133.221f), Vector3(1223.934f, 652.419f, 133.673f), Vector3(1223.16f, 636.401f, 128.433f), Vector3(1208.114f, 626.266f, 129.353f), Vector3(1208.169f, 613.814f, 123.77f)))) - ZipLinePaths(new ZipLinePath(127, false, List(Vector3(1225.626f, 600.261f, 123.186f), Vector3(1228.418f, 600.63f, 123.819f), Vector3(1251.711f, 599.7f, 118.858f), Vector3(1258.795f, 586.139f, 118.536f), Vector3(1272.363f, 579.017f, 118.191f), Vector3(1271.831f, 575.195f, 118.569f), Vector3(1272.099f, 565.373f, 113.706f)))) - ZipLinePaths(new ZipLinePath(128, false, List(Vector3(1271.691f, 531.861f, 108.485f), Vector3(1271.658f, 509.334f, 108.41f), Vector3(1271.644f, 502.251f, 103.845f)))) - ZipLinePaths(new ZipLinePath(129, false, List(Vector3(1287.978f, 474.746f, 103.686f), Vector3(1288.009f, 467.239f, 107.927f), Vector3(1286.339f, 457.632f, 108.568f), Vector3(1251.901f, 455.918f, 108.65f), Vector3(1242.902f, 456.115f, 108.661f)))) - ZipLinePaths(new ZipLinePath(130, true, List(Vector3(969.919f, 441.728f, 72.635f), Vector3(1009.025f, 473.71f, 80.954f), Vector3(1048.129f, 505.692f, 87.942f), Vector3(1087.232f, 537.674f, 94.93f), Vector3(1126.335f, 569.654f, 101.918f), Vector3(1162.137f, 599.373f, 107.659f)))) - ZipLinePaths(new ZipLinePath(131, true, List(Vector3(1387.976f, 507.419f, 72.636f), Vector3(1385.3f, 510.225f, 74.718f), Vector3(1383.962f, 511.628f, 76.512f), Vector3(1381.955f, 513.733f, 137.228f), Vector3(1381.286f, 514.435f, 137.473f), Vector3(1322.408f, 576.175f, 149.977f), Vector3(1261.523f, 640.021f, 162.48f), Vector3(1227.4f, 675.802f, 174.983f), Vector3(1226.262f, 680.206f, 132.59f)))) - ZipLinePaths(new ZipLinePath(132, true, List(Vector3(1234.923f, 685.242f, 132.733f), Vector3(1267.406f, 649.47f, 121.373f), Vector3(1305.087f, 607.973f, 108.519f), Vector3(1337.569f, 572.201f, 95.665f), Vector3(1377.848f, 527.842f, 82.811f), Vector3(1388.443f, 517.526f, 72.656f)))) - ZipLinePaths(new ZipLinePath(133, true, List(Vector3(1153.869f, 604.137f, 107.796f), Vector3(1116.755f, 572.207f, 101.227f), Vector3(1107.583f, 564.663f, 117.562f), Vector3(1068.605f, 532.605f, 110.2f), Vector3(1030.391f, 501.175f, 102.982f), Vector3(992.177f, 469.747f, 95.765f), Vector3(972.07f, 453.432f, 72.607f)))) - ZipLinePaths(new ZipLinePath(134, true, List(Vector3(694.353f, 506.02f, 72.635f), Vector3(693.408f, 510.898f, 75.838f), Vector3(683.572f, 561.632f, 81.593f), Vector3(673.925f, 611.39f, 87.237f), Vector3(664.279f, 661.148f, 92.88f), Vector3(654.632f, 710.906f, 98.524f), Vector3(644.986f, 760.664f, 104.168f), Vector3(635.339f, 810.422f, 109.812f), Vector3(625.693f, 860.18f, 115.456f), Vector3(620.397f, 887.498f, 134.035f), Vector3(618.538f, 904.381f, 117.681f)))) - ZipLinePaths(new ZipLinePath(135, true, List(Vector3(627.84f, 909.247f, 117.827f), Vector3(636.839f, 859.105f, 112.711f), Vector3(644.838f, 810.063f, 107.141f), Vector3(652.836f, 761.022f, 101.57f), Vector3(660.835f, 711.98f, 96f), Vector3(668.834f, 662.938f, 90.43f), Vector3(676.832f, 613.896f, 84.86f), Vector3(684.831f, 564.855f, 79.29f), Vector3(692.51f, 517.775f, 72.71f)))) - ZipLinePaths(new ZipLinePath(136, false, List(Vector3(861.866f, 1183.37f, 77.95f), Vector3(853.767f, 1165.099f, 77.75f)))) - ZipLinePaths(new ZipLinePath(137, false, List(Vector3(862.428f, 1129.783f, 97.194f), Vector3(986.978f, 1119.254f, 98.247f)))) - ZipLinePaths(new ZipLinePath(138, false, List(Vector3(844.896f, 1130.823f, 97.194f), Vector3(811.383f, 1125.083f, 98.4f)))) - ZipLinePaths(new ZipLinePath(139, false, List(Vector3(851.715f, 1113.668f, 97.231f), Vector3(856.403f, 1096.555f, 90.295f)))) - ZipLinePaths(new ZipLinePath(140, true, List(Vector3(1094.656f, 1028.66f, 85.95f), Vector3(1101.679f, 1029.985f, 119.23f)))) - ZipLinePaths(new ZipLinePath(141, true, List(Vector3(1105.375f, 1032.63f, 119.23f), Vector3(1102.402f, 1030.171f, 85.95f)))) - ZipLinePaths(new ZipLinePath(142, true, List(Vector3(933.254f, 939.081f, 92.25f), Vector3(941.062f, 944.592f, 117.812f)))) - ZipLinePaths(new ZipLinePath(143, true, List(Vector3(935.9f, 940.753f, 117.811f), Vector3(938.783f, 942.43f, 92.25f)))) - ZipLinePaths(new ZipLinePath(144, false, List(Vector3(872.334f, 1048.719f, 90.263f), Vector3(933.133f, 967.339f, 92.651f)))) - ZipLinePaths(new ZipLinePath(145, false, List(Vector3(982.409f, 729.272f, 86.85f), Vector3(992.811f, 822.687f, 88.85f)))) - ZipLinePaths(new ZipLinePath(146, true, List(Vector3(922.643f, 850.812f, 96.109f), Vector3(909.595f, 831.634f, 113.284f)))) - ZipLinePaths(new ZipLinePath(147, true, List(Vector3(929.96f, 861.944f, 117.749f), Vector3(868.055f, 887.015f, 98.609f)))) - ZipLinePaths(new ZipLinePath(148, true, List(Vector3(1120.997f, 1115.475f, 110.069f), Vector3(1119.491f, 1123.132f, 126.696f), Vector3(1117.841f, 1135.263f, 129.177f)))) - ZipLinePaths(new ZipLinePath(149, true, List(Vector3(1155.227f, 1098.523f, 123.089f), Vector3(1169.031f, 1159.746f, 112.569f)))) - ZipLinePaths(new ZipLinePath(150, false, List(Vector3(1004.971f, 1143.408f, 111.496f), Vector3(880.245f, 1250.32f, 95.892f)))) - ZipLinePaths(new ZipLinePath(151, true, List(Vector3(1019.69f, 1007.623f, 115.693f), Vector3(1000.005f, 1001.177f, 166.13f)))) - ZipLinePaths(new ZipLinePath(152, true, List(Vector3(1050.232f, 1000.81f, 166.13f), Vector3(1021.86f, 1002.474f, 115.693f)))) - ZipLinePaths(new ZipLinePath(153, false, List(Vector3(1891.956f, 942.414f, 33.135f), Vector3(1821.932f, 977.7f, 35.084f), Vector3(1811.37f, 987.494f, 36.308f), Vector3(1778.408f, 1055.287f, 37.532f), Vector3(1776.673f, 1083.246f, 33.135f)))) - ZipLinePaths(new ZipLinePath(154, false, List(Vector3(1742.077f, 1117.64f, 33.158f), Vector3(1743.128f, 1166.486f, 50.314f), Vector3(1742.632f, 1178.937f, 52.387f)))) - ZipLinePaths(new ZipLinePath(155, false, List(Vector3(1730.829f, 1199.918f, 53.138f), Vector3(1665.225f, 1198.474f, 77.439f), Vector3(1599.621f, 1197.031f, 76.243f), Vector3(1552.051f, 1172.147f, 73.138f)))) - ZipLinePaths(new ZipLinePath(156, true, List(Vector3(1539.981f, 1165.92f, 72.635f), Vector3(1535.523f, 1163.592f, 75.147f), Vector3(1515.908f, 1154.668f, 145.491f), Vector3(1470.436f, 1133.98f, 155.771f), Vector3(1425.856f, 1113.698f, 165.85f), Vector3(1386.517f, 1096.256f, 107.574f)))) - ZipLinePaths(new ZipLinePath(157, false, List(Vector3(952.148f, 897.258f, 92.851f), Vector3(922.937f, 946.221f, 176.437f), Vector3(920.99f, 949.486f, 176.89f)))) - ZipLinePaths(new ZipLinePath(158, false, List(Vector3(932.443f, 806.082f, 92.651f), Vector3(991.259f, 862.472f, 163.374f), Vector3(993.156f, 864.292f, 163.797f)))) - ZipLinePaths(new ZipLinePath(159, false, List(Vector3(879.015f, 930.909f, 92.708f), Vector3(932.22f, 1092.636f, 178.167f)))) - ZipLinePaths(new ZipLinePath(160, false, List(Vector3(1243f, 987.886f, 99.197f), Vector3(1174.26f, 1066.841f, 107.552f)))) - ZipLinePaths(new ZipLinePath(161, false, List(Vector3(1103.05f, 1078.253f, 107.708f), Vector3(1180.178f, 992.405f, 165.77f), Vector3(1182.666f, 989.636f, 166.342f)))) - ZipLinePaths(new ZipLinePath(162, false, List(Vector3(722.901f, 1218.822f, 103.265f), Vector3(912.849f, 1117.522f, 178.139f)))) - ZipLinePaths(new ZipLinePath(163, false, List(Vector3(1331.164f, 1158.065f, 90.792f), Vector3(1248.261f, 1136.533f, 99.005f)))) - ZipLinePaths(new ZipLinePath(164, true, List(Vector3(1210.313f, 1084.792f, 100.121f), Vector3(1199.343f, 1073.476f, 106.5f), Vector3(1196.969f, 1072.153f, 106.85f)))) - ZipLinePaths(new ZipLinePath(165, true, List(Vector3(1220.939f, 1186.566f, 98.502f), Vector3(1213.099f, 1184.104f, 106.75f)))) - ZipLinePaths(new ZipLinePath(166, true, List(Vector3(1172.896f, 1233.173f, 103.636f), Vector3(1162.954f, 1227.012f, 106.95f)))) - ZipLinePaths(new ZipLinePath(167, true, List(Vector3(1199.205f, 1200.656f, 103.636f), Vector3(1196.948f, 1196.556f, 106.95f)))) - ZipLinePaths(new ZipLinePath(168, true, List(Vector3(1222.933f, 1107.801f, 98.138f), Vector3(1216.995f, 1100.217f, 100.121f)))) - ZipLinePaths(new ZipLinePath(169, true, List(Vector3(884.118f, 939.871f, 85.012f), Vector3(877.122f, 945.369f, 86.745f)))) - ZipLinePaths(new ZipLinePath(170, true, List(Vector3(835.184f, 956.37f, 82.33f), Vector3(845.422f, 955.435f, 86.745f)))) - ZipLinePaths(new ZipLinePath(171, true, List(Vector3(798.088f, 933.249f, 82.33f), Vector3(801.227f, 929.672f, 85.391f)))) - ZipLinePaths(new ZipLinePath(172, true, List(Vector3(817.542f, 872.74f, 85.391f), Vector3(821.367f, 877.892f, 91.804f), Vector3(824.646f, 882.308f, 92.154f)))) - ZipLinePaths(new ZipLinePath(173, true, List(Vector3(809.042f, 966.006f, 72.637f), Vector3(806.015f, 962.745f, 81.98f), Vector3(804.286f, 960.882f, 82.33f)))) - ZipLinePaths(new ZipLinePath(174, true, List(Vector3(782.321f, 946.101f, 72.637f), Vector3(782.209f, 943.098f, 81.216f), Vector3(782.096f, 940.095f, 82.33f)))) - ZipLinePaths(new ZipLinePath(175, true, List(Vector3(771.194f, 921.372f, 72.637f), Vector3(773.573f, 922.573f, 78.9f), Vector3(775.951f, 923.774f, 79.25f)))) - ZipLinePaths(new ZipLinePath(176, true, List(Vector3(785.799f, 928.492f, 79.25f), Vector3(787.866f, 933.334f, 82.33f)))) - ZipLinePaths(new ZipLinePath(177, true, List(Vector3(773.105f, 877.692f, 72.637f), Vector3(776f, 883.044f, 85.041f), Vector3(776.762f, 884.99f, 85.391f)))) - ZipLinePaths(new ZipLinePath(178, true, List(Vector3(1260.095f, 1122.392f, 72.637f), Vector3(1248.111f, 1131.053f, 98.152f), Vector3(1246.528f, 1132.553f, 98.502f)))) - ZipLinePaths(new ZipLinePath(179, true, List(Vector3(1247.407f, 1189.7f, 72.637f), Vector3(1242.866f, 1188.597f, 85.416f), Vector3(1237.21f, 1185.933f, 98.152f), Vector3(1235.197f, 1185.562f, 98.502f)))) - ZipLinePaths(new ZipLinePath(180, true, List(Vector3(1227.751f, 1204.986f, 85.766f), Vector3(1230.308f, 1198.845f, 97.468f), Vector3(1231.522f, 1197.036f, 98.502f)))) - ZipLinePaths(new ZipLinePath(181, true, List(Vector3(1217.513f, 1218.632f, 85.766f), Vector3(1214.723f, 1224.759f, 89.205f)))) - ZipLinePaths(new ZipLinePath(182, true, List(Vector3(1229.038f, 1246.627f, 72.637f), Vector3(1230.799f, 1238.957f, 85.421f), Vector3(1231.386f, 1236.401f, 85.767f)))) - ZipLinePaths(new ZipLinePath(183, true, List(Vector3(1150.235f, 1233.13f, 89.205f), Vector3(1145.005f, 1230.417f, 91.211f)))) - ZipLinePaths(new ZipLinePath(184, true, List(Vector3(1143.722f, 1247.649f, 72.637f), Vector3(1150.984f, 1246.704f, 88.641f), Vector3(1154.614f, 1246.232f, 89.205f)))) - ZipLinePaths(new ZipLinePath(185, true, List(Vector3(1093.149f, 1249.843f, 72.637f), Vector3(1092.856f, 1240.249f, 90.861f), Vector3(1092.764f, 1237.251f, 91.211f)))) - ZipLinePaths(new ZipLinePath(186, true, List(Vector3(1042.911f, 1261.351f, 72.637f), Vector3(1044.372f, 1257.098f, 80f), Vector3(1049.484f, 1242.212f, 91.146f)))) - ZipLinePaths(new ZipLinePath(187, true, List(Vector3(837.728f, 828.382f, 82.742f), Vector3(840.4f, 833.819f, 91.804f), Vector3(841.491f, 837.298f, 92.154f)))) - ZipLinePaths(new ZipLinePath(188, true, List(Vector3(873.715f, 759.255f, 84.319f), Vector3(867.275f, 761.983f, 86.937f)))) - ZipLinePaths(new ZipLinePath(189, true, List(Vector3(814.836f, 852.508f, 72.637f), Vector3(823.482f, 854.756f, 91.804f), Vector3(825.644f, 855.318f, 92.154f)))) - ZipLinePaths(new ZipLinePath(190, true, List(Vector3(901.862f, 755.126f, 72.637f), Vector3(903.995f, 759.861f, 83.969f), Vector3(905.077f, 762.454f, 84.319f)))) - ZipLinePaths(new ZipLinePath(191, true, List(Vector3(836.436f, 790.696f, 72.637f), Vector3(836.032f, 796.342f, 82.392f), Vector3(835.897f, 798.223f, 82.742f)))) - ZipLinePaths(new ZipLinePath(192, true, List(Vector3(842.566f, 807.217f, 82.742f), Vector3(845.266f, 803.584f, 86.394f), Vector3(846.346f, 802.131f, 86.937f)))) - ZipLinePaths(new ZipLinePath(193, true, List(Vector3(840.797f, 960.721f, 72.637f), Vector3(837.499f, 957.71f, 81.98f), Vector3(830.352f, 951.186f, 86.745f)))) - ZipLinePaths(new ZipLinePath(194, true, List(Vector3(861.487f, 756.065f, 72.637f), Vector3(861.344f, 761.414f, 86.484f), Vector3(861.273f, 764.088f, 86.937f)))) - ZipLinePaths(new ZipLinePath(195, false, List(Vector3(1064.899f, 1048.02f, 101.15f), Vector3(1120.375f, 956.607f, 179.814f), Vector3(1122.165f, 953.658f, 180.287f)))) - ZipLinePaths(new ZipLinePath(196, false, List(Vector3(1163.953f, 891.526f, 94.91f), Vector3(1188.363f, 882.792f, 92.952f)))) - ZipLinePaths(new ZipLinePath(197, true, List(Vector3(701.124f, 1230.701f, 85.32f), Vector3(696.653f, 1222.976f, 102.746f)))) - ZipLinePaths(new ZipLinePath(198, true, List(Vector3(1393.029f, 1101.697f, 107.755f), Vector3(1438.339f, 1122.279f, 97.577f), Vector3(1452.554f, 1128.736f, 156.164f), Vector3(1497.864f, 1149.318f, 148.448f), Vector3(1528.959f, 1163.443f, 72.797f)))) - ZipLinePaths(new ZipLinePath(199, false, List(Vector3(306.221f, 763.282f, 73.135f), Vector3(306.698f, 800.603f, 76.521f), Vector3(340.381f, 872.043f, 73.135f)))) - ZipLinePaths(new ZipLinePath(200, false, List(Vector3(345.801f, 912.178f, 73.135f), Vector3(363.505f, 919.044f, 73.324f), Vector3(381.408f, 931.811f, 74.014f), Vector3(408.416f, 942.444f, 75.392f), Vector3(429.031f, 949.809f, 75.579f), Vector3(455.238f, 969.842f, 75.672f), Vector3(481.246f, 977.475f, 75.765f), Vector3(528.556f, 979.943f, 73.135f)))) - ZipLinePaths(new ZipLinePath(201, true, List(Vector3(539.196f, 980.064f, 72.635f), Vector3(574.053f, 948.591f, 93.851f), Vector3(608.91f, 917.118f, 113.732f), Vector3(618.311f, 910.212f, 117.698f)))) - ZipLinePaths(new ZipLinePath(202, true, List(Vector3(607.495f, 909.335f, 117.666f), Vector3(578.291f, 944.643f, 96.61f), Vector3(549.087f, 979.952f, 72.716f)))) - ZipLinePaths(new ZipLinePath(203, false, List(Vector3(614.076f, 918.037f, 118.092f), Vector3(648.718f, 955.203f, 114.812f), Vector3(682.681f, 991.641f, 110.851f)))) - ZipLinePaths(new ZipLinePath(204, false, List(Vector3(716.336f, 1022.474f, 110.856f), Vector3(755.976f, 1089.243f, 98.406f)))) - ZipLinePaths(new ZipLinePath(205, false, List(Vector3(730.061f, 994.571f, 110.85f), Vector3(808.623f, 1005.013f, 164.303f), Vector3(813.861f, 1005.709f, 164.56f)))) - ZipLinePaths(new ZipLinePath(206, true, List(Vector3(1021.601f, 1075.097f, 91.155f), Vector3(1015.346f, 1066.557f, 97.276f)))) - ZipLinePaths(new ZipLinePath(207, true, List(Vector3(998.898f, 1042.539f, 97.276f), Vector3(995.256f, 1040.166f, 101.431f), Vector3(993.799f, 1039.216f, 101.794f)))) - ZipLinePaths(new ZipLinePath(208, true, List(Vector3(987.398f, 1053.149f, 91.156f), Vector3(994.469f, 1055.576f, 97.276f)))) - ZipLinePaths(new ZipLinePath(209, true, List(Vector3(1056.106f, 1034.411f, 91.25f), Vector3(1051.638f, 1035.824f, 96.926f), Vector3(1049.649f, 1036.895f, 97.276f)))) - ZipLinePaths(new ZipLinePath(210, true, List(Vector3(979.786f, 1011.902f, 101.811f), Vector3(980.707f, 1006.752f, 107.616f), Vector3(981.167f, 1004.177f, 107.966f)))) - ZipLinePaths(new ZipLinePath(211, true, List(Vector3(960.739f, 1004.397f, 92.05f), Vector3(966.398f, 997.912f, 101.464f), Vector3(967.427f, 996.733f, 101.82f)))) - ZipLinePaths(new ZipLinePath(212, true, List(Vector3(986.563f, 956.368f, 89.55f), Vector3(983.367f, 961.629f, 101.444f), Vector3(982.204f, 963.542f, 101.794f)))) - ZipLinePaths(new ZipLinePath(213, true, List(Vector3(983.637f, 981.525f, 101.794f), Vector3(989.245f, 975.315f, 107.966f)))) - ZipLinePaths(new ZipLinePath(214, true, List(Vector3(988.599f, 996.118f, 107.966f), Vector3(991.802f, 995.824f, 114.824f), Vector3(994.365f, 995.59f, 115.693f)))) - ZipLinePaths(new ZipLinePath(215, true, List(Vector3(1066.595f, 1027.52f, 91.25f), Vector3(1069.864f, 1017.647f, 96.926f), Vector3(1071.349f, 1013.159f, 97.276f)))) - ZipLinePaths(new ZipLinePath(216, true, List(Vector3(1074.69f, 990.196f, 97.276f), Vector3(1071.034f, 992.737f, 104.342f), Vector3(1068.596f, 994.432f, 104.692f)))) - ZipLinePaths(new ZipLinePath(217, true, List(Vector3(1091.584f, 998.45f, 89.35f), Vector3(1087.866f, 993.893f, 96.728f), Vector3(1086.472f, 992.184f, 97.276f)))) - ZipLinePaths(new ZipLinePath(218, true, List(Vector3(1068.438f, 954.245f, 89.351f), Vector3(1062.46f, 953.254f, 96.926f), Vector3(1060.965f, 953.006f, 97.276f)))) - ZipLinePaths(new ZipLinePath(219, true, List(Vector3(1066.35f, 973.397f, 97.276f), Vector3(1058.251f, 973.884f, 104.692f)))) - ZipLinePaths(new ZipLinePath(220, true, List(Vector3(1032.003f, 936.282f, 89.55f), Vector3(1038.859f, 936.207f, 96.926f), Vector3(1042.287f, 936.169f, 97.276f)))) - ZipLinePaths(new ZipLinePath(221, true, List(Vector3(1019.28f, 950.5f, 89.55f), Vector3(1026.949f, 951.393f, 97.276f)))) - ZipLinePaths(new ZipLinePath(222, true, List(Vector3(1042.968f, 954.078f, 97.276f), Vector3(1044.525f, 958.776f, 104.342f), Vector3(1045.563f, 961.908f, 104.692f)))) - ZipLinePaths(new ZipLinePath(223, true, List(Vector3(1043.88f, 975.722f, 104.692f), Vector3(1041.782f, 981.626f, 115.343f), Vector3(1041.083f, 983.594f, 115.693f)))) - ZipLinePaths(new ZipLinePath(224, true, List(Vector3(1058.822f, 1006.575f, 104.692f), Vector3(1054.133f, 1008.733f, 115.343f), Vector3(1052.375f, 1009.542f, 115.693f)))) - ZipLinePaths(new ZipLinePath(225, true, List(Vector3(1001.752f, 1027.373f, 107.966f), Vector3(1004.216f, 1023.209f, 115.343f), Vector3(1005.42f, 1021.419f, 115.693f)))) - ZipLinePaths(new ZipLinePath(226, false, List(Vector3(1391.743f, 1080.478f, 108.201f), Vector3(1398.365f, 1079.972f, 107.639f), Vector3(1412.786f, 1079.466f, 102.885f), Vector3(1416.622f, 1072.662f, 103.533f), Vector3(1416.958f, 1050.859f, 97.981f), Vector3(1430.894f, 1044.656f, 98.029f), Vector3(1431.862f, 1036.555f, 97.553f), Vector3(1432.946f, 1018.004f, 93.115f), Vector3(1440.43f, 1017.453f, 93.186f)))) - ZipLinePaths(new ZipLinePath(227, false, List(Vector3(1519.21f, 999.864f, 83.184f), Vector3(1540.844f, 1000.889f, 78.393f), Vector3(1548.161f, 1015.301f, 78.498f), Vector3(1558.54f, 1015.504f, 77.025f), Vector3(1568.92f, 1015.707f, 73.351f), Vector3(1576.299f, 1006.71f, 73.177f), Vector3(1566.244f, 999.461f, 73.309f), Vector3(1560.188f, 992.212f, 73.44f), Vector3(1560.333f, 976.463f, 69.522f), Vector3(1566.478f, 967.713f, 68.203f)))) - ZipLinePaths(new ZipLinePath(228, false, List(Vector3(1626.306f, 967.026f, 58.235f), Vector3(1639.898f, 967.223f, 61.771f), Vector3(1653.49f, 967.419f, 63.507f), Vector3(1655.783f, 957.315f, 62.743f), Vector3(1657.975f, 938.211f, 58.578f), Vector3(1671.203f, 932.356f, 58.341f), Vector3(1673.016f, 905.329f, 53.772f), Vector3(1688.03f, 904.501f, 53.203f)))) - ZipLinePaths(new ZipLinePath(229, false, List(Vector3(1711.197f, 924.758f, 53.139f), Vector3(1710.369f, 942.404f, 54.049f), Vector3(1709.94f, 990.049f, 36.063f), Vector3(1740.884f, 1044.941f, 35.233f), Vector3(1742.134f, 1084.117f, 33.139f)))) - ZipLinePaths(new ZipLinePath(230, false, List(Vector3(1897.005f, 909.845f, 33.139f), Vector3(1890.302f, 910.029f, 36.637f), Vector3(1877.651f, 905.72f, 35.937f), Vector3(1847.499f, 885.412f, 36.038f), Vector3(1832.994f, 880.879f, 36.882f), Vector3(1761.44f, 877.355f, 56.523f), Vector3(1741.073f, 885.183f, 54.579f), Vector3(1724.506f, 898.41f, 53.139f)))) - ZipLinePaths(new ZipLinePath(231, false, List(Vector3(607.175f, 888.218f, 118.163f), Vector3(570.208f, 886.839f, 108.58f), Vector3(566.924f, 874.849f, 108.339f), Vector3(553.182f, 869.605f, 108.219f), Vector3(552.912f, 851.132f, 112.959f), Vector3(552.641f, 832.66f, 113.199f)))) - ZipLinePaths(new ZipLinePath(232, false, List(Vector3(551.781f, 772.243f, 103.542f), Vector3(550.899f, 762.266f, 103.537f), Vector3(523.357f, 759.878f, 102.185f), Vector3(508.587f, 758.684f, 98.309f), Vector3(501.216f, 744.69f, 98.033f), Vector3(481.289f, 744.323f, 98.193f)))) - ZipLinePaths(new ZipLinePath(233, false, List(Vector3(435.564f, 775.856f, 83.45f), Vector3(410.779f, 775.127f, 83.255f), Vector3(405.683f, 761.182f, 83.307f), Vector3(378.802f, 758.763f, 83.249f), Vector3(372.661f, 744.254f, 83.519f), Vector3(361.876f, 744.126f, 82.212f), Vector3(351.091f, 743.999f, 78.805f), Vector3(330.306f, 745.471f, 73.448f), Vector3(329.521f, 752.744f, 73.19f)))) - ZipLinePaths(new ZipLinePath(234, false, List(Vector3(694.79f, 533.179f, 73.154f), Vector3(704.33f, 582.022f, 88.963f), Vector3(713.871f, 630.865f, 102.305f), Vector3(723.412f, 679.708f, 113.447f), Vector3(732.953f, 728.55f, 119.589f), Vector3(734.636f, 737.17f, 115.86f)))) - ZipLinePaths(new ZipLinePath(235, false, List(Vector3(1227.559f, 1464.788f, 73.065f), Vector3(1204.683f, 1422.484f, 98.524f), Vector3(1181.807f, 1380.181f, 111.615f), Vector3(1170.369f, 1359.029f, 112.1f), Vector3(1167.167f, 1353.107f, 110.872f)))) - ZipLinePaths(new ZipLinePath(236, false, List(Vector3(1151.041f, 1307.142f, 110.85f), Vector3(1149.808f, 1257.197f, 109.965f), Vector3(1148.896f, 1220.238f, 107.451f)))) - ZipLinePaths(new ZipLinePath(237, false, List(Vector3(1119.158f, 1351.924f, 110.853f), Vector3(1075.835f, 1376.326f, 117.478f), Vector3(1032.512f, 1400.728f, 122.747f), Vector3(1025.581f, 1404.632f, 122.843f)))) - ZipLinePaths(new ZipLinePath(238, false, List(Vector3(1120.059f, 1320.54f, 110.862f), Vector3(1095.096f, 1278.566f, 101.21f), Vector3(1074.626f, 1244.147f, 91.658f)))) - ZipLinePaths(new ZipLinePath(239, false, List(Vector3(1168.393f, 1314.06f, 110.852f), Vector3(1209.694f, 1284.47f, 109.355f), Vector3(1250.994f, 1254.88f, 104.931f), Vector3(1292.295f, 1225.29f, 100.507f), Vector3(1297.964f, 1221.228f, 96.852f)))) - ZipLinePaths(new ZipLinePath(240, false, List(Vector3(1520.99f, 1163.069f, 73.227f), Vector3(1471.094f, 1163.271f, 87.591f), Vector3(1421.197f, 1163.472f, 92.633f), Vector3(1385.272f, 1163.617f, 84.199f)))) - ZipLinePaths(new ZipLinePath(241, false, List(Vector3(1352.209f, 1198.899f, 87.497f), Vector3(1352.861f, 1204.463f, 96.7f), Vector3(1352.762f, 1206.433f, 96.85f)))) - ZipLinePaths(new ZipLinePath(242, false, List(Vector3(1370.127f, 1176.595f, 84.198f), Vector3(1368.367f, 1178.316f, 87.247f), Vector3(1366.677f, 1179.496f, 87.498f)))) - ZipLinePaths(new ZipLinePath(243, false, List(Vector3(1132.846f, 1216.479f, 91.711f), Vector3(1142.058f, 1210.391f, 107.329f), Vector3(1143.9f, 1209.173f, 107.451f)))) - ZipLinePaths(new ZipLinePath(244, false, List(Vector3(1078.17f, 1148.271f, 91.351f), Vector3(1090.02f, 1146.1f, 107.634f), Vector3(1091.414f, 1145.844f, 107.751f)))) - ZipLinePaths(new ZipLinePath(245, false, List(Vector3(1081.421f, 1072.106f, 101.202f), Vector3(1088.084f, 1079.606f, 107.87f), Vector3(1089.901f, 1081.652f, 107.702f)))) - ZipLinePaths(new ZipLinePath(246, false, List(Vector3(1136.448f, 1054.578f, 91.95f), Vector3(1141.153f, 1061.864f, 107.3f), Vector3(1143.254f, 1063.402f, 107.55f)))) - ZipLinePaths(new ZipLinePath(247, false, List(Vector3(1390.277f, 526.009f, 73.06f), Vector3(1380.297f, 575.581f, 84.344f), Vector3(1370.318f, 625.152f, 92.475f), Vector3(1360.338f, 674.723f, 99.805f), Vector3(1350.358f, 724.294f, 104.935f), Vector3(1344.879f, 751.51f, 103.84f)))) - ZipLinePaths(new ZipLinePath(248, false, List(Vector3(971.093f, 460.616f, 73.02f), Vector3(987.394f, 508.286f, 87.196f), Vector3(1003.696f, 555.955f, 98.121f), Vector3(1019.998f, 603.624f, 102.646f), Vector3(1026.39f, 622.318f, 100.918f)))) - ZipLinePaths(new ZipLinePath(249, false, List(Vector3(763.983f, 784.294f, 115.871f), Vector3(792.938f, 823.826f, 131.416f), Vector3(821.893f, 863.359f, 145.548f), Vector3(850.849f, 902.891f, 159.679f), Vector3(879.804f, 942.424f, 173.81f), Vector3(880.939f, 943.974f, 174.096f)))) - ZipLinePaths(new ZipLinePath(250, false, List(Vector3(749.571f, 785.971f, 115.85f), Vector3(714.337f, 822.839f, 117.331f), Vector3(679.103f, 859.707f, 117.868f), Vector3(643.87f, 896.575f, 118.406f), Vector3(628.671f, 912.479f, 118.29f)))) - ZipLinePaths(new ZipLinePath(251, false, List(Vector3(779.486f, 745.268f, 115.853f), Vector3(827.456f, 732.543f, 111.557f), Vector3(875.427f, 719.817f, 105.484f), Vector3(923.398f, 707.091f, 99.411f), Vector3(952.18f, 699.456f, 95.173f)))) - ZipLinePaths(new ZipLinePath(252, false, List(Vector3(780.058f, 775.855f, 115.868f), Vector3(787.884f, 785.361f, 116.604f), Vector3(811.364f, 813.881f, 108.464f), Vector3(834.689f, 842.214f, 92.672f)))) - ZipLinePaths(new ZipLinePath(253, false, List(Vector3(555.581f, 981.167f, 73.266f), Vector3(603.655f, 991.018f, 94.61f), Vector3(651.729f, 1000.87f, 107.893f), Vector3(684.721f, 1007.632f, 110.87f)))) - ZipLinePaths(new ZipLinePath(254, false, List(Vector3(702.522f, 1030.162f, 110.85f), Vector3(699.16f, 1081.037f, 109.82f), Vector3(695.798f, 1131.913f, 108.875f), Vector3(695.205f, 1140.891f, 107.779f)))) - ZipLinePaths(new ZipLinePath(255, false, List(Vector3(696.454f, 1171.992f, 107.781f), Vector3(715.169f, 1212.74f, 103.239f)))) - ZipLinePaths(new ZipLinePath(256, false, List(Vector3(787.305f, 1465.731f, 73.517f), Vector3(781.021f, 1442.654f, 86.618f), Vector3(774.737f, 1419.577f, 95.82f), Vector3(770.59f, 1404.345f, 99.458f), Vector3(766.443f, 1389.114f, 99.697f)))) - ZipLinePaths(new ZipLinePath(257, false, List(Vector3(728.914f, 969.705f, 110.895f), Vector3(739.989f, 966.686f, 110.459f), Vector3(790.937f, 952.799f, 82.875f)))) - ZipLinePaths(new ZipLinePath(258, false, List(Vector3(1302.013f, 1185.204f, 96.853f), Vector3(1252.343f, 1186.784f, 102.446f), Vector3(1205.652f, 1188.27f, 107.253f)))) - ZipLinePaths(new ZipLinePath(259, false, List(Vector3(1078.239f, 1125.433f, 107.751f), Vector3(1035.593f, 1046.301f, 176.325f), Vector3(1032.75f, 1041.026f, 176.63f)))) - ZipLinePaths(new ZipLinePath(260, false, List(Vector3(1168.453f, 1061.073f, 107.351f), Vector3(1236.382f, 1044.695f, 175.95f), Vector3(1240.911f, 1043.603f, 176.79f)))) - ZipLinePaths(new ZipLinePath(261, false, List(Vector3(1031.964f, 828.333f, 110.751f), Vector3(1082.946f, 827.829f, 109.239f), Vector3(1133.927f, 827.324f, 108.222f), Vector3(1184.908f, 826.82f, 107.205f), Vector3(1197.904f, 826.692f, 107.49f)))) - ZipLinePaths(new ZipLinePath(262, false, List(Vector3(1337.353f, 851.122f, 83.075f), Vector3(1219.221f, 945.439f, 165.999f), Vector3(1217.346f, 946.937f, 166.325f)))) - ZipLinePaths(new ZipLinePath(263, false, List(Vector3(1284.797f, 766.939f, 81.981f), Vector3(1234.37f, 700.07f, 132.568f), Vector3(1231.008f, 695.612f, 132.959f)))) - ZipLinePaths(new ZipLinePath(264, false, List(Vector3(1330.746f, 755.47f, 103.852f), Vector3(1290.194f, 728.822f, 116.781f), Vector3(1249.642f, 702.174f, 128.861f), Vector3(1235.044f, 692.581f, 133.139f)))) - ZipLinePaths(new ZipLinePath(265, false, List(Vector3(1218.624f, 694.117f, 133.015f), Vector3(1214.347f, 744.806f, 129.669f), Vector3(1210.07f, 795.495f, 126.036f), Vector3(1206.463f, 838.232f, 121.775f)))) - ZipLinePaths(new ZipLinePath(266, false, List(Vector3(704.794f, 1142.453f, 107.813f), Vector3(817.239f, 1046.672f, 164.281f), Vector3(819.024f, 1045.152f, 164.594f)))) - ZipLinePaths(new ZipLinePath(267, false, List(Vector3(690.815f, 1208.531f, 83.177f), Vector3(690.381f, 1191.88f, 101.623f), Vector3(690.055f, 1179.392f, 107.984f), Vector3(689.946f, 1175.229f, 107.779f)))) - ZipLinePaths(new ZipLinePath(268, false, List(Vector3(758.955f, 1305.325f, 80.95f), Vector3(763.554f, 1322.557f, 99.347f), Vector3(764.154f, 1325.222f, 99.671f)))) - ZipLinePaths(new ZipLinePath(269, false, List(Vector3(799.991f, 1259.203f, 92.603f), Vector3(910.702f, 1128.801f, 178.363f), Vector3(918.083f, 1120.108f, 178.162f)))) - ZipLinePaths(new ZipLinePath(270, false, List(Vector3(1034.138f, 973.675f, 116.193f), Vector3(1105.112f, 948.65f, 185.221f), Vector3(1107.402f, 947.843f, 185.796f)))) - ZipLinePaths(new ZipLinePath(271, false, List(Vector3(1010.579f, 1029.295f, 116.193f), Vector3(941.146f, 1096.884f, 177.675f), Vector3(938.906f, 1099.064f, 178.11f)))) - ZipLinePaths(new ZipLinePath(272, false, List(Vector3(988.457f, 921.752f, 112.454f), Vector3(993.639f, 872.029f, 111.752f), Vector3(994.158f, 867.057f, 111.196f)))) - ZipLinePaths(new ZipLinePath(273, false, List(Vector3(976.528f, 927.49f, 114.256f), Vector3(941.289f, 893.713f, 109.631f)))) + ZipLinePaths( + new ZipLinePath(1, true, List(Vector3(736.484f, 1292.551f, 102.746f), Vector3(733.296f, 1284.238f, 85.32f))) + ) + ZipLinePaths( + new ZipLinePath(2, false, List(Vector3(797.258f, 1095.976f, 107.883f), Vector3(821.79f, 1046.854f, 164.56f))) + ) + ZipLinePaths( + new ZipLinePath(3, false, List(Vector3(830.324f, 1048.307f, 164.563f), Vector3(930.348f, 1184.376f, 180.261f))) + ) + ZipLinePaths( + new ZipLinePath(4, false, List(Vector3(831.267f, 1000.379f, 164.567f), Vector3(878.283f, 967.178f, 174.45f))) + ) + ZipLinePaths( + new ZipLinePath( + 5, + false, + List( + Vector3(850.911f, 1030.282f, 164.806f), + Vector3(851.274f, 1033.241f, 164.292f), + Vector3(862.522f, 1124.985f, 97.195f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(6, true, List(Vector3(872.544f, 1280.257f, 106.39f), Vector3(873.173f, 1280.791f, 100.874f))) + ) + ZipLinePaths( + new ZipLinePath(7, false, List(Vector3(877.178f, 991.846f, 175.71f), Vector3(851.866f, 1023.792f, 167.996f))) + ) + ZipLinePaths( + new ZipLinePath(8, true, List(Vector3(877.484f, 1269.249f, 100.874f), Vector3(879.568f, 1268.493f, 106.39f))) + ) + ZipLinePaths( + new ZipLinePath( + 9, + false, + List( + Vector3(890.759f, 1249.269f, 106.891f), + Vector3(929.721f, 1191.344f, 180.248f), + Vector3(930.978f, 1189.476f, 180.258f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(10, false, List(Vector3(906.216f, 993.369f, 174.363f), Vector3(904.343f, 1081.134f, 189.577f))) + ) + ZipLinePaths( + new ZipLinePath( + 11, + false, + List( + Vector3(897.3f, 1088.55f, 189.596f), + Vector3(893.393f, 1085.86f, 189.107f), + Vector3(834.797f, 1045.518f, 164.587f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(12, false, List(Vector3(919.03f, 892.661f, 124.113f), Vector3(946.681f, 941.791f, 118.324f))) + ) + ZipLinePaths( + new ZipLinePath(13, false, List(Vector3(935.446f, 1097.096f, 178.111f), Vector3(987.271f, 1008.196f, 171.632f))) + ) + ZipLinePaths( + new ZipLinePath(14, false, List(Vector3(931.487f, 1179.55f, 180.267f), Vector3(945.998f, 1134.391f, 189.579f))) + ) + ZipLinePaths( + new ZipLinePath(15, false, List(Vector3(941.35f, 952.9f, 118.301f), Vector3(997.19f, 982.882f, 116.193f))) + ) + ZipLinePaths( + new ZipLinePath(16, true, List(Vector3(979.744f, 928.34f, 93.272f), Vector3(979.439f, 928.257f, 98.779f))) + ) + ZipLinePaths( + new ZipLinePath(17, false, List(Vector3(988.07f, 993.856f, 171.603f), Vector3(930.176f, 982.283f, 174.075f))) + ) + ZipLinePaths( + new ZipLinePath(18, false, List(Vector3(991.738f, 887.327f, 163.802f), Vector3(925.305f, 953.451f, 176.895f))) + ) + ZipLinePaths( + new ZipLinePath(19, false, List(Vector3(1004.142f, 905.185f, 163.947f), Vector3(1015.49f, 963.547f, 171.569f))) + ) + ZipLinePaths( + new ZipLinePath( + 20, + false, + List(Vector3(1005.402f, 1400.078f, 123.017f), Vector3(864.789f, 1301.178f, 106.891f)) + ) + ) + ZipLinePaths( + new ZipLinePath(21, true, List(Vector3(1006.212f, 1018.303f, 176.13f), Vector3(1006.335f, 1018.239f, 181.13f))) + ) + ZipLinePaths( + new ZipLinePath(22, true, List(Vector3(1006.301f, 869.097f, 163.281f), Vector3(1006.262f, 868.834f, 168.788f))) + ) + ZipLinePaths( + new ZipLinePath(23, true, List(Vector3(1007.402f, 983.651f, 171.13f), Vector3(1007.46f, 983.67f, 176.13f))) + ) + ZipLinePaths( + new ZipLinePath(24, true, List(Vector3(1008.926f, 1018.168f, 166.13f), Vector3(1008.886f, 1018.146f, 171.13f))) + ) + ZipLinePaths( + new ZipLinePath(25, false, List(Vector3(1006.662f, 832.842f, 112.39f), Vector3(918.117f, 946.097f, 176.938f))) + ) + ZipLinePaths( + new ZipLinePath( + 26, + false, + List(Vector3(1012.99f, 1201.236f, 180.278f), Vector3(1020.024f, 1402.671f, 123.084f)) + ) + ) + ZipLinePaths( + new ZipLinePath(27, false, List(Vector3(1014.401f, 1192.4f, 180.259f), Vector3(1024.248f, 1120.21f, 175.306f))) + ) + ZipLinePaths( + new ZipLinePath(28, true, List(Vector3(1015.772f, 1144.392f, 92.312f), Vector3(1015.304f, 1144.907f, 97.818f))) + ) + ZipLinePaths( + new ZipLinePath( + 29, + false, + List( + Vector3(1018.083f, 962.352f, 176.63f), + Vector3(1015.899f, 960.875f, 176.124f), + Vector3(948.199f, 915.089f, 102.837f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(30, false, List(Vector3(1019.599f, 1038.769f, 181.6f), Vector3(1026.673f, 1104.455f, 175.304f))) + ) + ZipLinePaths( + new ZipLinePath( + 31, + false, + List( + Vector3(1019.603f, 1108.067f, 175.312f), + Vector3(957.962f, 1127.949f, 189.078f), + Vector3(953.853f, 1129.275f, 189.58f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 32, + false, + List(Vector3(1028.221f, 1036.732f, 176.631f), Vector3(1014.174f, 1136.949f, 112.501f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 33, + false, + List( + Vector3(1029.711f, 964.586f, 176.63f), + Vector3(1030.75f, 962.27f, 176.113f), + Vector3(1062.96f, 890.468f, 102.494f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(34, false, List(Vector3(1030.361f, 963.633f, 171.579f), Vector3(1102.77f, 942.405f, 185.802f))) + ) + ZipLinePaths( + new ZipLinePath(35, true, List(Vector3(1041.412f, 1017.873f, 166.13f), Vector3(1041.577f, 1018.02f, 176.13f))) + ) + ZipLinePaths( + new ZipLinePath(36, true, List(Vector3(1042.555f, 983.339f, 176.13f), Vector3(1042.784f, 983.227f, 181.13f))) + ) + ZipLinePaths( + new ZipLinePath(37, true, List(Vector3(1042.968f, 984.255f, 166.13f), Vector3(1043.026f, 984.175f, 171.13f))) + ) + ZipLinePaths( + new ZipLinePath(38, false, List(Vector3(1049.448f, 1122.065f, 106.348f), Vector3(925.736f, 986.791f, 174.108f))) + ) + ZipLinePaths( + new ZipLinePath( + 39, + false, + List( + Vector3(1050.181f, 996.471f, 116.194f), + Vector3(1094.395f, 1021.971f, 119.888f), + Vector3(1100.711f, 1025.614f, 119.731f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 40, + false, + List(Vector3(1062.232f, 1012.159f, 181.756f), Vector3(1108.189f, 1029.232f, 172.319f)) + ) + ) + ZipLinePaths( + new ZipLinePath(41, false, List(Vector3(1064.671f, 626.333f, 102.048f), Vector3(1150.823f, 607.773f, 107.952f))) + ) + ZipLinePaths( + new ZipLinePath( + 42, + false, + List(Vector3(1080.843f, 1098.006f, 175.309f), Vector3(1033.702f, 1041.054f, 181.641f)) + ) + ) + ZipLinePaths( + new ZipLinePath(43, false, List(Vector3(1094.15f, 1103.925f, 175.33f), Vector3(1131.292f, 1068.319f, 169.536f))) + ) + ZipLinePaths( + new ZipLinePath(44, false, List(Vector3(1100.778f, 938.989f, 185.807f), Vector3(1021.232f, 892.206f, 163.757f))) + ) + ZipLinePaths( + new ZipLinePath( + 45, + false, + List(Vector3(1111.653f, 1051.984f, 172.311f), Vector3(1086.377f, 1100.131f, 175.317f)) + ) + ) + ZipLinePaths( + new ZipLinePath(46, false, List(Vector3(1119.839f, 953.53f, 180.529f), Vector3(1064.102f, 992.538f, 181.578f))) + ) + ZipLinePaths( + new ZipLinePath( + 47, + false, + List(Vector3(1122.09f, 1126.956f, 138.079f), Vector3(1100.116f, 1034.584f, 119.739f)) + ) + ) + ZipLinePaths( + new ZipLinePath(48, false, List(Vector3(1154.562f, 615.219f, 107.973f), Vector3(1060.824f, 665.928f, 95.423f))) + ) + ZipLinePaths( + new ZipLinePath( + 49, + false, + List( + Vector3(1173.53f, 947.864f, 166.273f), + Vector3(1146.927f, 940.176f, 185.27f), + Vector3(1145.154f, 939.664f, 185.791f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 50, + false, + List( + Vector3(1177.347f, 857.502f, 112.991f), + Vector3(1134.971f, 902.085f, 179.808f), + Vector3(1133.604f, 903.523f, 180.296f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(51, false, List(Vector3(1177.818f, 984.919f, 166.285f), Vector3(1171.66f, 1033.014f, 172.314f))) + ) + ZipLinePaths( + new ZipLinePath(52, true, List(Vector3(1202.167f, 852.92f, 112.49f), Vector3(1201.179f, 854.737f, 106.974f))) + ) + ZipLinePaths( + new ZipLinePath(53, true, List(Vector3(1213.359f, 851.26f, 106.974f), Vector3(1212.823f, 852.659f, 112.49f))) + ) + ZipLinePaths( + new ZipLinePath( + 54, + false, + List( + Vector3(1213.7f, 680.904f, 133.639f), + Vector3(1210.939f, 676.835f, 133.114f), + Vector3(1169.527f, 615.806f, 108.011f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(55, false, List(Vector3(1224.856f, 696.306f, 132.937f), Vector3(1237.086f, 848.842f, 112.994f))) + ) + ZipLinePaths( + new ZipLinePath(56, false, List(Vector3(1251.865f, 1025.854f, 176.802f), Vector3(1221.815f, 988.86f, 166.322f))) + ) + ZipLinePaths( + new ZipLinePath( + 57, + false, + List(Vector3(1280.512f, 1055.381f, 171.316f), Vector3(1376.507f, 1189.917f, 117.236f)) + ) + ) + ZipLinePaths( + new ZipLinePath(58, true, List(Vector3(1304.143f, 770.517f, 103.346f), Vector3(1307.887f, 777.753f, 85.92f))) + ) + ZipLinePaths( + new ZipLinePath(59, true, List(Vector3(1346.959f, 827.541f, 85.92f), Vector3(1351.629f, 834.391f, 103.346f))) + ) + ZipLinePaths( + new ZipLinePath(60, true, List(Vector3(1373.997f, 1180.755f, 83.698f), Vector3(1376.644f, 1197.211f, 116.71f))) + ) + ZipLinePaths( + new ZipLinePath( + 61, + false, + List( + Vector3(1376.099f, 1104.824f, 108.05f), + Vector3(1271.454f, 1067.596f, 170.802f), + Vector3(1269.793f, 1067.005f, 171.301f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(62, true, List(Vector3(1381.237f, 1195.832f, 116.71f), Vector3(1384.165f, 1181.39f, 83.698f))) + ) + ZipLinePaths( + new ZipLinePath( + 63, + false, + List(Vector3(1381.497f, 1187.474f, 117.214f), Vector3(1389.994f, 1112.664f, 107.947f)) + ) + ) + ZipLinePaths( + new ZipLinePath(64, false, List(Vector3(627.092f, 916.732f, 118.239f), Vector3(822.396f, 868.007f, 92.658f))) + ) + ZipLinePaths( + new ZipLinePath(65, false, List(Vector3(854.65f, 866.898f, 124.13f), Vector3(816.091f, 1002.187f, 164.58f))) + ) + ZipLinePaths( + new ZipLinePath(66, true, List(Vector3(1260.882f, 821.364f, 85.406f), Vector3(1240.71f, 805.898f, 95.45f))) + ) + ZipLinePaths( + new ZipLinePath(67, true, List(Vector3(1260.807f, 798f, 95.45f), Vector3(1246.127f, 790.09f, 85.406f))) + ) + ZipLinePaths( + new ZipLinePath( + 68, + false, + List( + Vector3(993.401f, 705.41f, 95.203f), + Vector3(1117.34f, 894.464f, 180.386f), + Vector3(1119.307f, 897.465f, 180.316f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(69, false, List(Vector3(1231.631f, 873.279f, 101.99f), Vector3(1252.107f, 977.047f, 99.195f))) + ) + ZipLinePaths( + new ZipLinePath( + 70, + false, + List( + Vector3(1297.144f, 960.064f, 110.671f), + Vector3(1230.772f, 978.768f, 166.333f), + Vector3(1226.347f, 980.015f, 166.311f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 71, + false, + List(Vector3(1184.828f, 1039.951f, 169.627f), Vector3(1238.524f, 1034.453f, 171.286f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 72, + false, + List( + Vector3(1300.449f, 972.002f, 110.737f), + Vector3(1183.438f, 1032.292f, 173.593f), + Vector3(1175.637f, 1036.312f, 172.356f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 73, + false, + List( + Vector3(1216.71f, 879.307f, 107.531f), + Vector3(1241.241f, 1027.486f, 170.833f), + Vector3(1242.032f, 1032.266f, 171.265f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 74, + false, + List( + Vector3(1176.666f, 1142.367f, 138.11f), + Vector3(1168.297f, 1081.591f, 171.87f), + Vector3(1167.739f, 1077.54f, 172.35f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 75, + false, + List( + Vector3(1152.799f, 1174.853f, 138.109f), + Vector3(1103.141f, 1132.14f, 174.215f), + Vector3(1099.831f, 1129.292f, 174.744f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 76, + false, + List( + Vector3(1123.628f, 1194.305f, 107.551f), + Vector3(1020.93f, 1196.254f, 180.315f), + Vector3(1014.084f, 1196.384f, 180.259f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(77, true, List(Vector3(747.901f, 1347.392f, 99.926f), Vector3(749.063f, 1364.266f, 109.97f))) + ) + ZipLinePaths( + new ZipLinePath(78, true, List(Vector3(764.978f, 1349.413f, 109.97f), Vector3(773.404f, 1371.263f, 99.926f))) + ) + ZipLinePaths( + new ZipLinePath(79, false, List(Vector3(832.845f, 1322.466f, 92.854f), Vector3(852.713f, 1315.965f, 90.02f))) + ) + ZipLinePaths( + new ZipLinePath(80, false, List(Vector3(827.617f, 1279.218f, 92.551f), Vector3(811.451f, 1305.666f, 92.85f))) + ) + ZipLinePaths( + new ZipLinePath(81, false, List(Vector3(735.485f, 1339.063f, 99.673f), Vector3(715.854f, 1302.093f, 103.238f))) + ) + ZipLinePaths( + new ZipLinePath(82, false, List(Vector3(767.646f, 1325.436f, 99.674f), Vector3(782.281f, 1261.401f, 92.453f))) + ) + ZipLinePaths( + new ZipLinePath(83, false, List(Vector3(854.91f, 1298.24f, 106.892f), Vector3(794.221f, 1358.634f, 99.673f))) + ) + ZipLinePaths( + new ZipLinePath(84, false, List(Vector3(833.177f, 1339.31f, 92.853f), Vector3(855.999f, 1333.167f, 90.019f))) + ) + ZipLinePaths( + new ZipLinePath(85, false, List(Vector3(909.731f, 849.693f, 124.164f), Vector3(990.096f, 872.508f, 163.851f))) + ) + ZipLinePaths( + new ZipLinePath( + 86, + false, + List( + Vector3(980.443f, 931.687f, 114.255f), + Vector3(892.726f, 938.268f, 173.636f), + Vector3(886.878f, 938.707f, 174.076f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 87, + false, + List( + Vector3(1202.692f, 861.073f, 121.781f), + Vector3(1207.235f, 934.6f, 165.81f), + Vector3(1207.537f, 939.502f, 166.299f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(88, false, List(Vector3(1236.684f, 860.28f, 112.99f), Vector3(1300.068f, 959.856f, 110.671f))) + ) + ZipLinePaths( + new ZipLinePath(89, true, List(Vector3(1314.086f, 962.603f, 87.15f), Vector3(1305.694f, 964.636f, 110.181f))) + ) + ZipLinePaths( + new ZipLinePath(90, true, List(Vector3(1310.533f, 963.493f, 110.206f), Vector3(1305.583f, 964.179f, 87.15f))) + ) + ZipLinePaths( + new ZipLinePath(91, false, List(Vector3(1183.282f, 855.405f, 102.024f), Vector3(1020.01f, 874.695f, 163.806f))) + ) + ZipLinePaths( + new ZipLinePath( + 92, + false, + List( + Vector3(1074.935f, 889.632f, 101.685f), + Vector3(1160.119f, 949.134f, 165.832f), + Vector3(1165.798f, 953.101f, 166.268f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 93, + false, + List( + Vector3(1007.636f, 845.108f, 113.11f), + Vector3(1013.388f, 849.192f, 112.44f), + Vector3(1053.653f, 877.782f, 102.503f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 94, + false, + List( + Vector3(992.283f, 891.888f, 163.798f), + Vector3(991.451f, 896.417f, 163.742f), + Vector3(985.627f, 928.117f, 113.461f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(95, false, List(Vector3(985.317f, 826.497f, 110.014f), Vector3(943.562f, 831.141f, 107.768f))) + ) + ZipLinePaths( + new ZipLinePath(96, false, List(Vector3(1002.807f, 925.681f, 108.385f), Vector3(1046.205f, 892.296f, 102.497f))) + ) + ZipLinePaths( + new ZipLinePath( + 97, + false, + List( + Vector3(1018.81f, 2027.017f, 92.44f), + Vector3(992.566f, 2029.269f, 96.041f), + Vector3(927.929f, 2030.134f, 96.384f), + Vector3(863.292f, 1998.2f, 96.728f), + Vector3(852.6f, 1989.914f, 93.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 98, + false, + List( + Vector3(816.912f, 1988.393f, 93.135f), + Vector3(795.001f, 1943.548f, 95.243f), + Vector3(772.69f, 1898.803f, 94.692f), + Vector3(753.502f, 1860.322f, 93.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 99, + false, + List( + Vector3(761.037f, 1809.202f, 93.135f), + Vector3(738.964f, 1764.341f, 94.477f), + Vector3(725.537f, 1735.63f, 93.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 100, + false, + List( + Vector3(808.409f, 1678.306f, 92.894f), + Vector3(758.409f, 1678.177f, 94.519f), + Vector3(742.409f, 1678.136f, 93.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 101, + false, + List( + Vector3(850.044f, 1661.524f, 93.131f), + Vector3(817.963f, 1601.012f, 96.672f), + Vector3(817.205f, 1534.27f, 76.708f), + Vector3(794.955f, 1487.474f, 75.549f), + Vector3(791.099f, 1479.906f, 73.138f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 102, + false, + List( + Vector3(849.551f, 1730.123f, 93.131f), + Vector3(825.82f, 1775.918f, 94.548f), + Vector3(806.79f, 1821.714f, 93.938f), + Vector3(800.292f, 1830.693f, 93.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 103, + false, + List( + Vector3(875f, 1703.396f, 88.662f), + Vector3(886.523f, 1699.949f, 88.08f), + Vector3(888.484f, 1673.276f, 88.04f), + Vector3(900.146f, 1672.403f, 88.525f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 104, + false, + List( + Vector3(923.115f, 1671.849f, 88.633f), + Vector3(934.566f, 1676.01f, 87.893f), + Vector3(939.217f, 1685.07f, 88.753f), + Vector3(953.325f, 1687.438f, 88.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 105, + false, + List( + Vector3(1024.561f, 1703.441f, 88.18f), + Vector3(1042.067f, 1704.672f, 84.078f), + Vector3(1048.72f, 1715.187f, 83.93f), + Vector3(1056.773f, 1719.103f, 83.186f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 106, + false, + List( + Vector3(1084.358f, 1704.206f, 78.452f), + Vector3(1093.939f, 1707.391f, 78.598f), + Vector3(1097.02f, 1731.276f, 78.245f), + Vector3(1112.424f, 1742.594f, 79.008f), + Vector3(1112.125f, 1762.854f, 78.739f), + Vector3(1109.527f, 1770.413f, 73.671f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 107, + false, + List( + Vector3(1000.29f, 1625.633f, 98.859f), + Vector3(1000.181f, 1617.133f, 103.185f), + Vector3(999.672f, 1597.633f, 103.259f), + Vector3(984.842f, 1588.277f, 104.119f), + Vector3(984.027f, 1574.749f, 107.048f), + Vector3(983.612f, 1563.521f, 108.283f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 108, + false, + List( + Vector3(996.661f, 1495.754f, 113.22f), + Vector3(1021.481f, 1495.402f, 118.224f), + Vector3(1035.501f, 1495.85f, 118.262f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 109, + false, + List( + Vector3(1036.79f, 1464.458f, 118.185f), + Vector3(1018.161f, 1461.497f, 118.106f), + Vector3(1016.947f, 1438.117f, 118.333f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 110, + false, + List( + Vector3(1070.138f, 1989.771f, 93.138f), + Vector3(1069.612f, 1920.429f, 96.74f), + Vector3(1070.374f, 1855.956f, 78.424f), + Vector3(1086.804f, 1820.319f, 73.139f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 111, + false, + List( + Vector3(1117.331f, 1840.065f, 73.142f), + Vector3(1183.426f, 1841.149f, 97.117f), + Vector3(1215.745f, 1828.174f, 97.599f), + Vector3(1232.464f, 1793.299f, 98.381f), + Vector3(1191.496f, 1745.11f, 93.142f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 112, + false, + List( + Vector3(1134.661f, 1721.993f, 93.137f), + Vector3(1134.547f, 1663.691f, 98.085f), + Vector3(1135.071f, 1607.797f, 80.745f), + Vector3(1140.725f, 1579.552f, 76.669f), + Vector3(1191.406f, 1546.395f, 79.469f), + Vector3(1216.006f, 1501.982f, 80.37f), + Vector3(1225.64f, 1482.405f, 73.137f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 113, + true, + List( + Vector3(1228.182f, 1476.191f, 72.635f), + Vector3(1222.636f, 1475.527f, 151.831f), + Vector3(1141.796f, 1450.049f, 163.334f), + Vector3(1095.336f, 1435.407f, 174.611f), + Vector3(1048.876f, 1420.764f, 185.888f), + Vector3(1013.488f, 1415.158f, 122.539f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 114, + false, + List( + Vector3(1251.686f, 1518.522f, 73.137f), + Vector3(1276.598f, 1564.053f, 77.383f), + Vector3(1294.51f, 1597.684f, 77.847f), + Vector3(1293.755f, 1663.148f, 97.995f), + Vector3(1303.481f, 1693.585f, 97.716f), + Vector3(1337.207f, 1713.821f, 93.137f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 115, + false, + List( + Vector3(1394.471f, 1732.147f, 93.138f), + Vector3(1394.459f, 1791.418f, 97.651f), + Vector3(1426.63f, 1857.554f, 99.082f), + Vector3(1426.438f, 1911.439f, 74.996f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 116, + false, + List( + Vector3(1379.692f, 1934.355f, 73.137f), + Vector3(1313.917f, 1933.904f, 96.93f), + Vector3(1251.132f, 1933.473f, 117.324f), + Vector3(1186.307f, 1933.425f, 98.423f), + Vector3(1130.546f, 1932.646f, 93.137f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 117, + true, + List( + Vector3(1025.864f, 1409.726f, 122.407f), + Vector3(1070.85f, 1431.534f, 113.042f), + Vector3(1208.454f, 1498.242f, 148.385f), + Vector3(1244.62f, 1515.774f, 72.635f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 118, + false, + List( + Vector3(1202.008f, 297.806f, 113.226f), + Vector3(1202.584f, 322.137f, 118.691f), + Vector3(1235.36f, 389.367f, 113.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 119, + false, + List( + Vector3(1242.126f, 432.375f, 113.151f), + Vector3(1274.428f, 433.633f, 111.467f), + Vector3(1315.73f, 433.691f, 98.599f), + Vector3(1376.535f, 434.707f, 78.133f), + Vector3(1389.545f, 446.139f, 77.8f), + Vector3(1386.464f, 499.904f, 73.151f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 120, + false, + List( + Vector3(1131.491f, 241.737f, 113.146f), + Vector3(1053.841f, 241.809f, 118.259f), + Vector3(1003.713f, 241.856f, 103.067f), + Vector3(954.568f, 241.902f, 88.559f), + Vector3(924.097f, 241.93f, 73.144f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 121, + false, + List( + Vector3(879.356f, 250.391f, 73.135f), + Vector3(877.875f, 322.009f, 75.591f), + Vector3(865.652f, 333.714f, 76.216f), + Vector3(800.368f, 333.08f, 76.774f), + Vector3(770.187f, 344.511f, 76.742f), + Vector3(753.401f, 374.752f, 73.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 122, + false, + List( + Vector3(724.372f, 439.993f, 73.135f), + Vector3(702.543f, 484.976f, 75.034f), + Vector3(695.558f, 499.37f, 73.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 123, + false, + List( + Vector3(927.581f, 302.259f, 73.066f), + Vector3(941.583f, 316.887f, 77.329f), + Vector3(941.783f, 375.246f, 79.629f), + Vector3(963.228f, 424.3f, 76.137f), + Vector3(965.963f, 433.919f, 73.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 124, + false, + List( + Vector3(1160.627f, 580.379f, 108.277f), + Vector3(1161.721f, 570.879f, 108.041f), + Vector3(1189.315f, 566.479f, 108.504f), + Vector3(1191.699f, 543.808f, 108.218f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 125, + false, + List( + Vector3(1207.802f, 538.221f, 113.201f), + Vector3(1208.144f, 548.124f, 113.056f), + Vector3(1210.215f, 566.825f, 108.333f), + Vector3(1234.185f, 567.526f, 113.811f), + Vector3(1237.758f, 564.185f, 113.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 126, + false, + List( + Vector3(1224.007f, 664.636f, 133.221f), + Vector3(1223.934f, 652.419f, 133.673f), + Vector3(1223.16f, 636.401f, 128.433f), + Vector3(1208.114f, 626.266f, 129.353f), + Vector3(1208.169f, 613.814f, 123.77f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 127, + false, + List( + Vector3(1225.626f, 600.261f, 123.186f), + Vector3(1228.418f, 600.63f, 123.819f), + Vector3(1251.711f, 599.7f, 118.858f), + Vector3(1258.795f, 586.139f, 118.536f), + Vector3(1272.363f, 579.017f, 118.191f), + Vector3(1271.831f, 575.195f, 118.569f), + Vector3(1272.099f, 565.373f, 113.706f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 128, + false, + List( + Vector3(1271.691f, 531.861f, 108.485f), + Vector3(1271.658f, 509.334f, 108.41f), + Vector3(1271.644f, 502.251f, 103.845f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 129, + false, + List( + Vector3(1287.978f, 474.746f, 103.686f), + Vector3(1288.009f, 467.239f, 107.927f), + Vector3(1286.339f, 457.632f, 108.568f), + Vector3(1251.901f, 455.918f, 108.65f), + Vector3(1242.902f, 456.115f, 108.661f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 130, + true, + List( + Vector3(969.919f, 441.728f, 72.635f), + Vector3(1009.025f, 473.71f, 80.954f), + Vector3(1048.129f, 505.692f, 87.942f), + Vector3(1087.232f, 537.674f, 94.93f), + Vector3(1126.335f, 569.654f, 101.918f), + Vector3(1162.137f, 599.373f, 107.659f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 131, + true, + List( + Vector3(1387.976f, 507.419f, 72.636f), + Vector3(1385.3f, 510.225f, 74.718f), + Vector3(1383.962f, 511.628f, 76.512f), + Vector3(1381.955f, 513.733f, 137.228f), + Vector3(1381.286f, 514.435f, 137.473f), + Vector3(1322.408f, 576.175f, 149.977f), + Vector3(1261.523f, 640.021f, 162.48f), + Vector3(1227.4f, 675.802f, 174.983f), + Vector3(1226.262f, 680.206f, 132.59f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 132, + true, + List( + Vector3(1234.923f, 685.242f, 132.733f), + Vector3(1267.406f, 649.47f, 121.373f), + Vector3(1305.087f, 607.973f, 108.519f), + Vector3(1337.569f, 572.201f, 95.665f), + Vector3(1377.848f, 527.842f, 82.811f), + Vector3(1388.443f, 517.526f, 72.656f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 133, + true, + List( + Vector3(1153.869f, 604.137f, 107.796f), + Vector3(1116.755f, 572.207f, 101.227f), + Vector3(1107.583f, 564.663f, 117.562f), + Vector3(1068.605f, 532.605f, 110.2f), + Vector3(1030.391f, 501.175f, 102.982f), + Vector3(992.177f, 469.747f, 95.765f), + Vector3(972.07f, 453.432f, 72.607f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 134, + true, + List( + Vector3(694.353f, 506.02f, 72.635f), + Vector3(693.408f, 510.898f, 75.838f), + Vector3(683.572f, 561.632f, 81.593f), + Vector3(673.925f, 611.39f, 87.237f), + Vector3(664.279f, 661.148f, 92.88f), + Vector3(654.632f, 710.906f, 98.524f), + Vector3(644.986f, 760.664f, 104.168f), + Vector3(635.339f, 810.422f, 109.812f), + Vector3(625.693f, 860.18f, 115.456f), + Vector3(620.397f, 887.498f, 134.035f), + Vector3(618.538f, 904.381f, 117.681f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 135, + true, + List( + Vector3(627.84f, 909.247f, 117.827f), + Vector3(636.839f, 859.105f, 112.711f), + Vector3(644.838f, 810.063f, 107.141f), + Vector3(652.836f, 761.022f, 101.57f), + Vector3(660.835f, 711.98f, 96f), + Vector3(668.834f, 662.938f, 90.43f), + Vector3(676.832f, 613.896f, 84.86f), + Vector3(684.831f, 564.855f, 79.29f), + Vector3(692.51f, 517.775f, 72.71f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(136, false, List(Vector3(861.866f, 1183.37f, 77.95f), Vector3(853.767f, 1165.099f, 77.75f))) + ) + ZipLinePaths( + new ZipLinePath(137, false, List(Vector3(862.428f, 1129.783f, 97.194f), Vector3(986.978f, 1119.254f, 98.247f))) + ) + ZipLinePaths( + new ZipLinePath(138, false, List(Vector3(844.896f, 1130.823f, 97.194f), Vector3(811.383f, 1125.083f, 98.4f))) + ) + ZipLinePaths( + new ZipLinePath(139, false, List(Vector3(851.715f, 1113.668f, 97.231f), Vector3(856.403f, 1096.555f, 90.295f))) + ) + ZipLinePaths( + new ZipLinePath(140, true, List(Vector3(1094.656f, 1028.66f, 85.95f), Vector3(1101.679f, 1029.985f, 119.23f))) + ) + ZipLinePaths( + new ZipLinePath(141, true, List(Vector3(1105.375f, 1032.63f, 119.23f), Vector3(1102.402f, 1030.171f, 85.95f))) + ) + ZipLinePaths( + new ZipLinePath(142, true, List(Vector3(933.254f, 939.081f, 92.25f), Vector3(941.062f, 944.592f, 117.812f))) + ) + ZipLinePaths( + new ZipLinePath(143, true, List(Vector3(935.9f, 940.753f, 117.811f), Vector3(938.783f, 942.43f, 92.25f))) + ) + ZipLinePaths( + new ZipLinePath(144, false, List(Vector3(872.334f, 1048.719f, 90.263f), Vector3(933.133f, 967.339f, 92.651f))) + ) + ZipLinePaths( + new ZipLinePath(145, false, List(Vector3(982.409f, 729.272f, 86.85f), Vector3(992.811f, 822.687f, 88.85f))) + ) + ZipLinePaths( + new ZipLinePath(146, true, List(Vector3(922.643f, 850.812f, 96.109f), Vector3(909.595f, 831.634f, 113.284f))) + ) + ZipLinePaths( + new ZipLinePath(147, true, List(Vector3(929.96f, 861.944f, 117.749f), Vector3(868.055f, 887.015f, 98.609f))) + ) + ZipLinePaths( + new ZipLinePath( + 148, + true, + List( + Vector3(1120.997f, 1115.475f, 110.069f), + Vector3(1119.491f, 1123.132f, 126.696f), + Vector3(1117.841f, 1135.263f, 129.177f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 149, + true, + List(Vector3(1155.227f, 1098.523f, 123.089f), Vector3(1169.031f, 1159.746f, 112.569f)) + ) + ) + ZipLinePaths( + new ZipLinePath(150, false, List(Vector3(1004.971f, 1143.408f, 111.496f), Vector3(880.245f, 1250.32f, 95.892f))) + ) + ZipLinePaths( + new ZipLinePath(151, true, List(Vector3(1019.69f, 1007.623f, 115.693f), Vector3(1000.005f, 1001.177f, 166.13f))) + ) + ZipLinePaths( + new ZipLinePath(152, true, List(Vector3(1050.232f, 1000.81f, 166.13f), Vector3(1021.86f, 1002.474f, 115.693f))) + ) + ZipLinePaths( + new ZipLinePath( + 153, + false, + List( + Vector3(1891.956f, 942.414f, 33.135f), + Vector3(1821.932f, 977.7f, 35.084f), + Vector3(1811.37f, 987.494f, 36.308f), + Vector3(1778.408f, 1055.287f, 37.532f), + Vector3(1776.673f, 1083.246f, 33.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 154, + false, + List( + Vector3(1742.077f, 1117.64f, 33.158f), + Vector3(1743.128f, 1166.486f, 50.314f), + Vector3(1742.632f, 1178.937f, 52.387f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 155, + false, + List( + Vector3(1730.829f, 1199.918f, 53.138f), + Vector3(1665.225f, 1198.474f, 77.439f), + Vector3(1599.621f, 1197.031f, 76.243f), + Vector3(1552.051f, 1172.147f, 73.138f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 156, + true, + List( + Vector3(1539.981f, 1165.92f, 72.635f), + Vector3(1535.523f, 1163.592f, 75.147f), + Vector3(1515.908f, 1154.668f, 145.491f), + Vector3(1470.436f, 1133.98f, 155.771f), + Vector3(1425.856f, 1113.698f, 165.85f), + Vector3(1386.517f, 1096.256f, 107.574f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 157, + false, + List( + Vector3(952.148f, 897.258f, 92.851f), + Vector3(922.937f, 946.221f, 176.437f), + Vector3(920.99f, 949.486f, 176.89f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 158, + false, + List( + Vector3(932.443f, 806.082f, 92.651f), + Vector3(991.259f, 862.472f, 163.374f), + Vector3(993.156f, 864.292f, 163.797f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(159, false, List(Vector3(879.015f, 930.909f, 92.708f), Vector3(932.22f, 1092.636f, 178.167f))) + ) + ZipLinePaths( + new ZipLinePath(160, false, List(Vector3(1243f, 987.886f, 99.197f), Vector3(1174.26f, 1066.841f, 107.552f))) + ) + ZipLinePaths( + new ZipLinePath( + 161, + false, + List( + Vector3(1103.05f, 1078.253f, 107.708f), + Vector3(1180.178f, 992.405f, 165.77f), + Vector3(1182.666f, 989.636f, 166.342f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 162, + false, + List(Vector3(722.901f, 1218.822f, 103.265f), Vector3(912.849f, 1117.522f, 178.139f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 163, + false, + List(Vector3(1331.164f, 1158.065f, 90.792f), Vector3(1248.261f, 1136.533f, 99.005f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 164, + true, + List( + Vector3(1210.313f, 1084.792f, 100.121f), + Vector3(1199.343f, 1073.476f, 106.5f), + Vector3(1196.969f, 1072.153f, 106.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(165, true, List(Vector3(1220.939f, 1186.566f, 98.502f), Vector3(1213.099f, 1184.104f, 106.75f))) + ) + ZipLinePaths( + new ZipLinePath( + 166, + true, + List(Vector3(1172.896f, 1233.173f, 103.636f), Vector3(1162.954f, 1227.012f, 106.95f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 167, + true, + List(Vector3(1199.205f, 1200.656f, 103.636f), Vector3(1196.948f, 1196.556f, 106.95f)) + ) + ) + ZipLinePaths( + new ZipLinePath( + 168, + true, + List(Vector3(1222.933f, 1107.801f, 98.138f), Vector3(1216.995f, 1100.217f, 100.121f)) + ) + ) + ZipLinePaths( + new ZipLinePath(169, true, List(Vector3(884.118f, 939.871f, 85.012f), Vector3(877.122f, 945.369f, 86.745f))) + ) + ZipLinePaths( + new ZipLinePath(170, true, List(Vector3(835.184f, 956.37f, 82.33f), Vector3(845.422f, 955.435f, 86.745f))) + ) + ZipLinePaths( + new ZipLinePath(171, true, List(Vector3(798.088f, 933.249f, 82.33f), Vector3(801.227f, 929.672f, 85.391f))) + ) + ZipLinePaths( + new ZipLinePath( + 172, + true, + List( + Vector3(817.542f, 872.74f, 85.391f), + Vector3(821.367f, 877.892f, 91.804f), + Vector3(824.646f, 882.308f, 92.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 173, + true, + List( + Vector3(809.042f, 966.006f, 72.637f), + Vector3(806.015f, 962.745f, 81.98f), + Vector3(804.286f, 960.882f, 82.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 174, + true, + List( + Vector3(782.321f, 946.101f, 72.637f), + Vector3(782.209f, 943.098f, 81.216f), + Vector3(782.096f, 940.095f, 82.33f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 175, + true, + List( + Vector3(771.194f, 921.372f, 72.637f), + Vector3(773.573f, 922.573f, 78.9f), + Vector3(775.951f, 923.774f, 79.25f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(176, true, List(Vector3(785.799f, 928.492f, 79.25f), Vector3(787.866f, 933.334f, 82.33f))) + ) + ZipLinePaths( + new ZipLinePath( + 177, + true, + List( + Vector3(773.105f, 877.692f, 72.637f), + Vector3(776f, 883.044f, 85.041f), + Vector3(776.762f, 884.99f, 85.391f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 178, + true, + List( + Vector3(1260.095f, 1122.392f, 72.637f), + Vector3(1248.111f, 1131.053f, 98.152f), + Vector3(1246.528f, 1132.553f, 98.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 179, + true, + List( + Vector3(1247.407f, 1189.7f, 72.637f), + Vector3(1242.866f, 1188.597f, 85.416f), + Vector3(1237.21f, 1185.933f, 98.152f), + Vector3(1235.197f, 1185.562f, 98.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 180, + true, + List( + Vector3(1227.751f, 1204.986f, 85.766f), + Vector3(1230.308f, 1198.845f, 97.468f), + Vector3(1231.522f, 1197.036f, 98.502f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(181, true, List(Vector3(1217.513f, 1218.632f, 85.766f), Vector3(1214.723f, 1224.759f, 89.205f))) + ) + ZipLinePaths( + new ZipLinePath( + 182, + true, + List( + Vector3(1229.038f, 1246.627f, 72.637f), + Vector3(1230.799f, 1238.957f, 85.421f), + Vector3(1231.386f, 1236.401f, 85.767f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(183, true, List(Vector3(1150.235f, 1233.13f, 89.205f), Vector3(1145.005f, 1230.417f, 91.211f))) + ) + ZipLinePaths( + new ZipLinePath( + 184, + true, + List( + Vector3(1143.722f, 1247.649f, 72.637f), + Vector3(1150.984f, 1246.704f, 88.641f), + Vector3(1154.614f, 1246.232f, 89.205f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 185, + true, + List( + Vector3(1093.149f, 1249.843f, 72.637f), + Vector3(1092.856f, 1240.249f, 90.861f), + Vector3(1092.764f, 1237.251f, 91.211f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 186, + true, + List( + Vector3(1042.911f, 1261.351f, 72.637f), + Vector3(1044.372f, 1257.098f, 80f), + Vector3(1049.484f, 1242.212f, 91.146f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 187, + true, + List( + Vector3(837.728f, 828.382f, 82.742f), + Vector3(840.4f, 833.819f, 91.804f), + Vector3(841.491f, 837.298f, 92.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(188, true, List(Vector3(873.715f, 759.255f, 84.319f), Vector3(867.275f, 761.983f, 86.937f))) + ) + ZipLinePaths( + new ZipLinePath( + 189, + true, + List( + Vector3(814.836f, 852.508f, 72.637f), + Vector3(823.482f, 854.756f, 91.804f), + Vector3(825.644f, 855.318f, 92.154f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 190, + true, + List( + Vector3(901.862f, 755.126f, 72.637f), + Vector3(903.995f, 759.861f, 83.969f), + Vector3(905.077f, 762.454f, 84.319f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 191, + true, + List( + Vector3(836.436f, 790.696f, 72.637f), + Vector3(836.032f, 796.342f, 82.392f), + Vector3(835.897f, 798.223f, 82.742f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 192, + true, + List( + Vector3(842.566f, 807.217f, 82.742f), + Vector3(845.266f, 803.584f, 86.394f), + Vector3(846.346f, 802.131f, 86.937f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 193, + true, + List( + Vector3(840.797f, 960.721f, 72.637f), + Vector3(837.499f, 957.71f, 81.98f), + Vector3(830.352f, 951.186f, 86.745f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 194, + true, + List( + Vector3(861.487f, 756.065f, 72.637f), + Vector3(861.344f, 761.414f, 86.484f), + Vector3(861.273f, 764.088f, 86.937f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 195, + false, + List( + Vector3(1064.899f, 1048.02f, 101.15f), + Vector3(1120.375f, 956.607f, 179.814f), + Vector3(1122.165f, 953.658f, 180.287f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(196, false, List(Vector3(1163.953f, 891.526f, 94.91f), Vector3(1188.363f, 882.792f, 92.952f))) + ) + ZipLinePaths( + new ZipLinePath(197, true, List(Vector3(701.124f, 1230.701f, 85.32f), Vector3(696.653f, 1222.976f, 102.746f))) + ) + ZipLinePaths( + new ZipLinePath( + 198, + true, + List( + Vector3(1393.029f, 1101.697f, 107.755f), + Vector3(1438.339f, 1122.279f, 97.577f), + Vector3(1452.554f, 1128.736f, 156.164f), + Vector3(1497.864f, 1149.318f, 148.448f), + Vector3(1528.959f, 1163.443f, 72.797f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 199, + false, + List( + Vector3(306.221f, 763.282f, 73.135f), + Vector3(306.698f, 800.603f, 76.521f), + Vector3(340.381f, 872.043f, 73.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 200, + false, + List( + Vector3(345.801f, 912.178f, 73.135f), + Vector3(363.505f, 919.044f, 73.324f), + Vector3(381.408f, 931.811f, 74.014f), + Vector3(408.416f, 942.444f, 75.392f), + Vector3(429.031f, 949.809f, 75.579f), + Vector3(455.238f, 969.842f, 75.672f), + Vector3(481.246f, 977.475f, 75.765f), + Vector3(528.556f, 979.943f, 73.135f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 201, + true, + List( + Vector3(539.196f, 980.064f, 72.635f), + Vector3(574.053f, 948.591f, 93.851f), + Vector3(608.91f, 917.118f, 113.732f), + Vector3(618.311f, 910.212f, 117.698f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 202, + true, + List( + Vector3(607.495f, 909.335f, 117.666f), + Vector3(578.291f, 944.643f, 96.61f), + Vector3(549.087f, 979.952f, 72.716f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 203, + false, + List( + Vector3(614.076f, 918.037f, 118.092f), + Vector3(648.718f, 955.203f, 114.812f), + Vector3(682.681f, 991.641f, 110.851f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(204, false, List(Vector3(716.336f, 1022.474f, 110.856f), Vector3(755.976f, 1089.243f, 98.406f))) + ) + ZipLinePaths( + new ZipLinePath( + 205, + false, + List( + Vector3(730.061f, 994.571f, 110.85f), + Vector3(808.623f, 1005.013f, 164.303f), + Vector3(813.861f, 1005.709f, 164.56f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(206, true, List(Vector3(1021.601f, 1075.097f, 91.155f), Vector3(1015.346f, 1066.557f, 97.276f))) + ) + ZipLinePaths( + new ZipLinePath( + 207, + true, + List( + Vector3(998.898f, 1042.539f, 97.276f), + Vector3(995.256f, 1040.166f, 101.431f), + Vector3(993.799f, 1039.216f, 101.794f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(208, true, List(Vector3(987.398f, 1053.149f, 91.156f), Vector3(994.469f, 1055.576f, 97.276f))) + ) + ZipLinePaths( + new ZipLinePath( + 209, + true, + List( + Vector3(1056.106f, 1034.411f, 91.25f), + Vector3(1051.638f, 1035.824f, 96.926f), + Vector3(1049.649f, 1036.895f, 97.276f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 210, + true, + List( + Vector3(979.786f, 1011.902f, 101.811f), + Vector3(980.707f, 1006.752f, 107.616f), + Vector3(981.167f, 1004.177f, 107.966f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 211, + true, + List( + Vector3(960.739f, 1004.397f, 92.05f), + Vector3(966.398f, 997.912f, 101.464f), + Vector3(967.427f, 996.733f, 101.82f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 212, + true, + List( + Vector3(986.563f, 956.368f, 89.55f), + Vector3(983.367f, 961.629f, 101.444f), + Vector3(982.204f, 963.542f, 101.794f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(213, true, List(Vector3(983.637f, 981.525f, 101.794f), Vector3(989.245f, 975.315f, 107.966f))) + ) + ZipLinePaths( + new ZipLinePath( + 214, + true, + List( + Vector3(988.599f, 996.118f, 107.966f), + Vector3(991.802f, 995.824f, 114.824f), + Vector3(994.365f, 995.59f, 115.693f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 215, + true, + List( + Vector3(1066.595f, 1027.52f, 91.25f), + Vector3(1069.864f, 1017.647f, 96.926f), + Vector3(1071.349f, 1013.159f, 97.276f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 216, + true, + List( + Vector3(1074.69f, 990.196f, 97.276f), + Vector3(1071.034f, 992.737f, 104.342f), + Vector3(1068.596f, 994.432f, 104.692f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 217, + true, + List( + Vector3(1091.584f, 998.45f, 89.35f), + Vector3(1087.866f, 993.893f, 96.728f), + Vector3(1086.472f, 992.184f, 97.276f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 218, + true, + List( + Vector3(1068.438f, 954.245f, 89.351f), + Vector3(1062.46f, 953.254f, 96.926f), + Vector3(1060.965f, 953.006f, 97.276f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(219, true, List(Vector3(1066.35f, 973.397f, 97.276f), Vector3(1058.251f, 973.884f, 104.692f))) + ) + ZipLinePaths( + new ZipLinePath( + 220, + true, + List( + Vector3(1032.003f, 936.282f, 89.55f), + Vector3(1038.859f, 936.207f, 96.926f), + Vector3(1042.287f, 936.169f, 97.276f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(221, true, List(Vector3(1019.28f, 950.5f, 89.55f), Vector3(1026.949f, 951.393f, 97.276f))) + ) + ZipLinePaths( + new ZipLinePath( + 222, + true, + List( + Vector3(1042.968f, 954.078f, 97.276f), + Vector3(1044.525f, 958.776f, 104.342f), + Vector3(1045.563f, 961.908f, 104.692f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 223, + true, + List( + Vector3(1043.88f, 975.722f, 104.692f), + Vector3(1041.782f, 981.626f, 115.343f), + Vector3(1041.083f, 983.594f, 115.693f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 224, + true, + List( + Vector3(1058.822f, 1006.575f, 104.692f), + Vector3(1054.133f, 1008.733f, 115.343f), + Vector3(1052.375f, 1009.542f, 115.693f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 225, + true, + List( + Vector3(1001.752f, 1027.373f, 107.966f), + Vector3(1004.216f, 1023.209f, 115.343f), + Vector3(1005.42f, 1021.419f, 115.693f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 226, + false, + List( + Vector3(1391.743f, 1080.478f, 108.201f), + Vector3(1398.365f, 1079.972f, 107.639f), + Vector3(1412.786f, 1079.466f, 102.885f), + Vector3(1416.622f, 1072.662f, 103.533f), + Vector3(1416.958f, 1050.859f, 97.981f), + Vector3(1430.894f, 1044.656f, 98.029f), + Vector3(1431.862f, 1036.555f, 97.553f), + Vector3(1432.946f, 1018.004f, 93.115f), + Vector3(1440.43f, 1017.453f, 93.186f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 227, + false, + List( + Vector3(1519.21f, 999.864f, 83.184f), + Vector3(1540.844f, 1000.889f, 78.393f), + Vector3(1548.161f, 1015.301f, 78.498f), + Vector3(1558.54f, 1015.504f, 77.025f), + Vector3(1568.92f, 1015.707f, 73.351f), + Vector3(1576.299f, 1006.71f, 73.177f), + Vector3(1566.244f, 999.461f, 73.309f), + Vector3(1560.188f, 992.212f, 73.44f), + Vector3(1560.333f, 976.463f, 69.522f), + Vector3(1566.478f, 967.713f, 68.203f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 228, + false, + List( + Vector3(1626.306f, 967.026f, 58.235f), + Vector3(1639.898f, 967.223f, 61.771f), + Vector3(1653.49f, 967.419f, 63.507f), + Vector3(1655.783f, 957.315f, 62.743f), + Vector3(1657.975f, 938.211f, 58.578f), + Vector3(1671.203f, 932.356f, 58.341f), + Vector3(1673.016f, 905.329f, 53.772f), + Vector3(1688.03f, 904.501f, 53.203f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 229, + false, + List( + Vector3(1711.197f, 924.758f, 53.139f), + Vector3(1710.369f, 942.404f, 54.049f), + Vector3(1709.94f, 990.049f, 36.063f), + Vector3(1740.884f, 1044.941f, 35.233f), + Vector3(1742.134f, 1084.117f, 33.139f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 230, + false, + List( + Vector3(1897.005f, 909.845f, 33.139f), + Vector3(1890.302f, 910.029f, 36.637f), + Vector3(1877.651f, 905.72f, 35.937f), + Vector3(1847.499f, 885.412f, 36.038f), + Vector3(1832.994f, 880.879f, 36.882f), + Vector3(1761.44f, 877.355f, 56.523f), + Vector3(1741.073f, 885.183f, 54.579f), + Vector3(1724.506f, 898.41f, 53.139f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 231, + false, + List( + Vector3(607.175f, 888.218f, 118.163f), + Vector3(570.208f, 886.839f, 108.58f), + Vector3(566.924f, 874.849f, 108.339f), + Vector3(553.182f, 869.605f, 108.219f), + Vector3(552.912f, 851.132f, 112.959f), + Vector3(552.641f, 832.66f, 113.199f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 232, + false, + List( + Vector3(551.781f, 772.243f, 103.542f), + Vector3(550.899f, 762.266f, 103.537f), + Vector3(523.357f, 759.878f, 102.185f), + Vector3(508.587f, 758.684f, 98.309f), + Vector3(501.216f, 744.69f, 98.033f), + Vector3(481.289f, 744.323f, 98.193f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 233, + false, + List( + Vector3(435.564f, 775.856f, 83.45f), + Vector3(410.779f, 775.127f, 83.255f), + Vector3(405.683f, 761.182f, 83.307f), + Vector3(378.802f, 758.763f, 83.249f), + Vector3(372.661f, 744.254f, 83.519f), + Vector3(361.876f, 744.126f, 82.212f), + Vector3(351.091f, 743.999f, 78.805f), + Vector3(330.306f, 745.471f, 73.448f), + Vector3(329.521f, 752.744f, 73.19f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 234, + false, + List( + Vector3(694.79f, 533.179f, 73.154f), + Vector3(704.33f, 582.022f, 88.963f), + Vector3(713.871f, 630.865f, 102.305f), + Vector3(723.412f, 679.708f, 113.447f), + Vector3(732.953f, 728.55f, 119.589f), + Vector3(734.636f, 737.17f, 115.86f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 235, + false, + List( + Vector3(1227.559f, 1464.788f, 73.065f), + Vector3(1204.683f, 1422.484f, 98.524f), + Vector3(1181.807f, 1380.181f, 111.615f), + Vector3(1170.369f, 1359.029f, 112.1f), + Vector3(1167.167f, 1353.107f, 110.872f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 236, + false, + List( + Vector3(1151.041f, 1307.142f, 110.85f), + Vector3(1149.808f, 1257.197f, 109.965f), + Vector3(1148.896f, 1220.238f, 107.451f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 237, + false, + List( + Vector3(1119.158f, 1351.924f, 110.853f), + Vector3(1075.835f, 1376.326f, 117.478f), + Vector3(1032.512f, 1400.728f, 122.747f), + Vector3(1025.581f, 1404.632f, 122.843f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 238, + false, + List( + Vector3(1120.059f, 1320.54f, 110.862f), + Vector3(1095.096f, 1278.566f, 101.21f), + Vector3(1074.626f, 1244.147f, 91.658f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 239, + false, + List( + Vector3(1168.393f, 1314.06f, 110.852f), + Vector3(1209.694f, 1284.47f, 109.355f), + Vector3(1250.994f, 1254.88f, 104.931f), + Vector3(1292.295f, 1225.29f, 100.507f), + Vector3(1297.964f, 1221.228f, 96.852f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 240, + false, + List( + Vector3(1520.99f, 1163.069f, 73.227f), + Vector3(1471.094f, 1163.271f, 87.591f), + Vector3(1421.197f, 1163.472f, 92.633f), + Vector3(1385.272f, 1163.617f, 84.199f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 241, + false, + List( + Vector3(1352.209f, 1198.899f, 87.497f), + Vector3(1352.861f, 1204.463f, 96.7f), + Vector3(1352.762f, 1206.433f, 96.85f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 242, + false, + List( + Vector3(1370.127f, 1176.595f, 84.198f), + Vector3(1368.367f, 1178.316f, 87.247f), + Vector3(1366.677f, 1179.496f, 87.498f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 243, + false, + List( + Vector3(1132.846f, 1216.479f, 91.711f), + Vector3(1142.058f, 1210.391f, 107.329f), + Vector3(1143.9f, 1209.173f, 107.451f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 244, + false, + List( + Vector3(1078.17f, 1148.271f, 91.351f), + Vector3(1090.02f, 1146.1f, 107.634f), + Vector3(1091.414f, 1145.844f, 107.751f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 245, + false, + List( + Vector3(1081.421f, 1072.106f, 101.202f), + Vector3(1088.084f, 1079.606f, 107.87f), + Vector3(1089.901f, 1081.652f, 107.702f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 246, + false, + List( + Vector3(1136.448f, 1054.578f, 91.95f), + Vector3(1141.153f, 1061.864f, 107.3f), + Vector3(1143.254f, 1063.402f, 107.55f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 247, + false, + List( + Vector3(1390.277f, 526.009f, 73.06f), + Vector3(1380.297f, 575.581f, 84.344f), + Vector3(1370.318f, 625.152f, 92.475f), + Vector3(1360.338f, 674.723f, 99.805f), + Vector3(1350.358f, 724.294f, 104.935f), + Vector3(1344.879f, 751.51f, 103.84f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 248, + false, + List( + Vector3(971.093f, 460.616f, 73.02f), + Vector3(987.394f, 508.286f, 87.196f), + Vector3(1003.696f, 555.955f, 98.121f), + Vector3(1019.998f, 603.624f, 102.646f), + Vector3(1026.39f, 622.318f, 100.918f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 249, + false, + List( + Vector3(763.983f, 784.294f, 115.871f), + Vector3(792.938f, 823.826f, 131.416f), + Vector3(821.893f, 863.359f, 145.548f), + Vector3(850.849f, 902.891f, 159.679f), + Vector3(879.804f, 942.424f, 173.81f), + Vector3(880.939f, 943.974f, 174.096f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 250, + false, + List( + Vector3(749.571f, 785.971f, 115.85f), + Vector3(714.337f, 822.839f, 117.331f), + Vector3(679.103f, 859.707f, 117.868f), + Vector3(643.87f, 896.575f, 118.406f), + Vector3(628.671f, 912.479f, 118.29f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 251, + false, + List( + Vector3(779.486f, 745.268f, 115.853f), + Vector3(827.456f, 732.543f, 111.557f), + Vector3(875.427f, 719.817f, 105.484f), + Vector3(923.398f, 707.091f, 99.411f), + Vector3(952.18f, 699.456f, 95.173f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 252, + false, + List( + Vector3(780.058f, 775.855f, 115.868f), + Vector3(787.884f, 785.361f, 116.604f), + Vector3(811.364f, 813.881f, 108.464f), + Vector3(834.689f, 842.214f, 92.672f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 253, + false, + List( + Vector3(555.581f, 981.167f, 73.266f), + Vector3(603.655f, 991.018f, 94.61f), + Vector3(651.729f, 1000.87f, 107.893f), + Vector3(684.721f, 1007.632f, 110.87f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 254, + false, + List( + Vector3(702.522f, 1030.162f, 110.85f), + Vector3(699.16f, 1081.037f, 109.82f), + Vector3(695.798f, 1131.913f, 108.875f), + Vector3(695.205f, 1140.891f, 107.779f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(255, false, List(Vector3(696.454f, 1171.992f, 107.781f), Vector3(715.169f, 1212.74f, 103.239f))) + ) + ZipLinePaths( + new ZipLinePath( + 256, + false, + List( + Vector3(787.305f, 1465.731f, 73.517f), + Vector3(781.021f, 1442.654f, 86.618f), + Vector3(774.737f, 1419.577f, 95.82f), + Vector3(770.59f, 1404.345f, 99.458f), + Vector3(766.443f, 1389.114f, 99.697f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 257, + false, + List( + Vector3(728.914f, 969.705f, 110.895f), + Vector3(739.989f, 966.686f, 110.459f), + Vector3(790.937f, 952.799f, 82.875f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 258, + false, + List( + Vector3(1302.013f, 1185.204f, 96.853f), + Vector3(1252.343f, 1186.784f, 102.446f), + Vector3(1205.652f, 1188.27f, 107.253f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 259, + false, + List( + Vector3(1078.239f, 1125.433f, 107.751f), + Vector3(1035.593f, 1046.301f, 176.325f), + Vector3(1032.75f, 1041.026f, 176.63f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 260, + false, + List( + Vector3(1168.453f, 1061.073f, 107.351f), + Vector3(1236.382f, 1044.695f, 175.95f), + Vector3(1240.911f, 1043.603f, 176.79f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 261, + false, + List( + Vector3(1031.964f, 828.333f, 110.751f), + Vector3(1082.946f, 827.829f, 109.239f), + Vector3(1133.927f, 827.324f, 108.222f), + Vector3(1184.908f, 826.82f, 107.205f), + Vector3(1197.904f, 826.692f, 107.49f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 262, + false, + List( + Vector3(1337.353f, 851.122f, 83.075f), + Vector3(1219.221f, 945.439f, 165.999f), + Vector3(1217.346f, 946.937f, 166.325f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 263, + false, + List( + Vector3(1284.797f, 766.939f, 81.981f), + Vector3(1234.37f, 700.07f, 132.568f), + Vector3(1231.008f, 695.612f, 132.959f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 264, + false, + List( + Vector3(1330.746f, 755.47f, 103.852f), + Vector3(1290.194f, 728.822f, 116.781f), + Vector3(1249.642f, 702.174f, 128.861f), + Vector3(1235.044f, 692.581f, 133.139f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 265, + false, + List( + Vector3(1218.624f, 694.117f, 133.015f), + Vector3(1214.347f, 744.806f, 129.669f), + Vector3(1210.07f, 795.495f, 126.036f), + Vector3(1206.463f, 838.232f, 121.775f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 266, + false, + List( + Vector3(704.794f, 1142.453f, 107.813f), + Vector3(817.239f, 1046.672f, 164.281f), + Vector3(819.024f, 1045.152f, 164.594f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 267, + false, + List( + Vector3(690.815f, 1208.531f, 83.177f), + Vector3(690.381f, 1191.88f, 101.623f), + Vector3(690.055f, 1179.392f, 107.984f), + Vector3(689.946f, 1175.229f, 107.779f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 268, + false, + List( + Vector3(758.955f, 1305.325f, 80.95f), + Vector3(763.554f, 1322.557f, 99.347f), + Vector3(764.154f, 1325.222f, 99.671f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 269, + false, + List( + Vector3(799.991f, 1259.203f, 92.603f), + Vector3(910.702f, 1128.801f, 178.363f), + Vector3(918.083f, 1120.108f, 178.162f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 270, + false, + List( + Vector3(1034.138f, 973.675f, 116.193f), + Vector3(1105.112f, 948.65f, 185.221f), + Vector3(1107.402f, 947.843f, 185.796f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 271, + false, + List( + Vector3(1010.579f, 1029.295f, 116.193f), + Vector3(941.146f, 1096.884f, 177.675f), + Vector3(938.906f, 1099.064f, 178.11f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath( + 272, + false, + List( + Vector3(988.457f, 921.752f, 112.454f), + Vector3(993.639f, 872.029f, 111.752f), + Vector3(994.158f, 867.057f, 111.196f) + ) + ) + ) + ZipLinePaths( + new ZipLinePath(273, false, List(Vector3(976.528f, 927.49f, 114.256f), Vector3(941.289f, 893.713f, 109.631f))) + ) } ZipLines() diff --git a/pslogin/src/test/scala/ConfigTest.scala b/pslogin/src/test/scala/ConfigTest.scala deleted file mode 100644 index c8df14cd..00000000 --- a/pslogin/src/test/scala/ConfigTest.scala +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright (c) 2019 PSForever -import java.io._ -import scala.io.Source -import org.specs2.mutable._ -import net.psforever.config._ -import net.psforever.WorldConfig -import scala.concurrent.duration._ - -class ConfigTest extends Specification { - sequential - - val testConfig = getClass.getResource("/testconfig.ini").getPath - - "WorldConfig" should { - "have no errors" in { - WorldConfig.Load("config/worldserver.ini.dist") mustEqual Valid - } - - "be formatted correctly" in { - var lineno = 1 - for (line <- Source.fromFile("config/worldserver.ini.dist").getLines) { - val linee :String = line - val ctx = s"worldserver.ini.dist:$lineno" - val maxLen = 100 - val lineLen = line.length - - //lineLen aka s"${ctx} - line length" must beLessThan(maxLen) //TODO is this enforced or is it just hopeful? - line.slice(0, 1) aka s"$ctx - leading whitespace found" mustNotEqual " " - line.slice(line.length-1, line.length) aka s"$ctx - trailing whitespace found" mustNotEqual " " - - lineno += 1 - } - ok - } - } - - "TestConfig" should { - "parse" in { - TestConfig.Load(testConfig) mustEqual Valid - TestConfig.Get[String]("default.string") mustEqual "a string" - TestConfig.Get[String]("default.string_quoted") mustEqual "a string" - TestConfig.Get[Int]("default.int") mustEqual 31 - TestConfig.Get[Duration]("default.time") mustEqual (1 second) - TestConfig.Get[Duration]("default.time2") mustEqual (100 milliseconds) - TestConfig.Get[Float]("default.float") mustEqual 0.1f - TestConfig.Get[Boolean]("default.bool_true") mustEqual true - TestConfig.Get[Boolean]("default.bool_false") mustEqual false - TestConfig.Get[TestEnum.Value]("default.enum_dog") mustEqual TestEnum.Dog - TestConfig.Get[Int]("default.missing") mustEqual 1337 - } - - "throw when getting non-existant keys" in { - TestConfig.Load(testConfig) mustEqual Valid - TestConfig.Get[Int]("missing.key") must throwA[NoSuchElementException](message = "Config key 'missing.key' not found") - TestConfig.Get[String]("missing.key") must throwA[NoSuchElementException](message = "Config key 'missing.key' not found") - } - - "throw when Get is not passed the right type parameter" in { - TestConfig.Load(testConfig) mustEqual Valid - TestConfig.Get[Duration]("default.string") must throwA[ClassCastException](message = "Incorrect type T = Duration passed to Get\\[T\\]: needed String") - TestConfig.Get[String]("default.int") must throwA[ClassCastException](message = "Incorrect type T = String passed to Get\\[T\\]: needed Int") - ok - } - } - - "TestBadConfig" should { - "not parse" in { - val error = TestBadConfig.Load(testConfig).asInstanceOf[Invalid] - val check_errors = List( - ValidationError("bad.bad_int: value format error (expected: Int)"), - ValidationError("bad.bad_time: value format error (expected: Time)"), - ValidationError("bad.bad_float: value format error (expected: Float)"), - ValidationError("bad.bad_bool: value format error (expected: Bool)"), - ValidationError("bad.bad_int_range: error.min", 0), - ValidationError("bad.bad_int_range2: error.max", 2), - ValidationError("bad.bad_enum: value format error (expected: Animal, Dog, Cat)") - ) - - error.errors mustEqual check_errors - } - } -} - -object TestEnum extends Enumeration { - val Animal, Dog, Cat = Value -} - -object TestConfig extends ConfigParser { - protected val config_template = Seq( - ConfigSection("default", - ConfigEntryString("string", ""), - ConfigEntryString("string_quoted", ""), - ConfigEntryInt("int", 0), - ConfigEntryTime("time", 0 seconds), - ConfigEntryTime("time2", 0 seconds), - ConfigEntryFloat("float", 0.0f), - ConfigEntryBool("bool_true", false), - ConfigEntryBool("bool_false", true), - ConfigEntryInt("missing", 1337), - ConfigEntryEnum[TestEnum.type]("enum_dog", TestEnum.Dog) - ) - ) -} - -object TestBadConfig extends ConfigParser { - protected val config_template = Seq( - ConfigSection("bad", - ConfigEntryInt("bad_int", 0), - ConfigEntryTime("bad_time", 0 seconds), - ConfigEntryFloat("bad_float", 0.0f), - ConfigEntryBool("bad_bool", false), - ConfigEntryInt("bad_int_range", 0, Constraints.min(0)), - ConfigEntryInt("bad_int_range2", 0, Constraints.min(0), Constraints.max(2)), - ConfigEntryEnum[TestEnum.type]("bad_enum", TestEnum.Animal) - ) - ) -} diff --git a/pslogin/src/test/scala/MDCTestProbe.scala b/pslogin/src/test/scala/MDCTestProbe.scala index 19e53fd1..1e9d3527 100644 --- a/pslogin/src/test/scala/MDCTestProbe.scala +++ b/pslogin/src/test/scala/MDCTestProbe.scala @@ -1,13 +1,14 @@ -// Copyright (c) 2019 PSForever +package net.psforever.pslogin + import akka.actor.{ActorRef, MDCContextAware} import akka.testkit.TestProbe import net.psforever.packet.{ControlPacket, GamePacket} -final case class MDCGamePacket(packet : GamePacket) +final case class MDCGamePacket(packet: GamePacket) -final case class MDCControlPacket(packet : ControlPacket) +final case class MDCControlPacket(packet: ControlPacket) -class MDCTestProbe(probe : TestProbe) extends MDCContextAware { +class MDCTestProbe(probe: TestProbe) extends MDCContextAware { /* The way this test mediator works needs to be explained. @@ -25,10 +26,10 @@ class MDCTestProbe(probe : TestProbe) extends MDCContextAware { The r-output is a normal message that can be polled on that TestProbe. Pass r-input into this MDCTestProbe directly. The l-output is an MdcMsg that can be treated just as r-output, sending it to this Actor and polling the TestProbe. - */ - private var left : ActorRef = ActorRef.noSender + */ + private var left: ActorRef = ActorRef.noSender - def receive : Receive = { + def receive: Receive = { case msg @ HelloFriend(_, _) => left = sender() probe.ref ! msg diff --git a/pslogin/src/test/scala/PacketCodingActorTest.scala b/pslogin/src/test/scala/PacketCodingActorTest.scala index 8d22d08d..4244c1f3 100644 --- a/pslogin/src/test/scala/PacketCodingActorTest.scala +++ b/pslogin/src/test/scala/PacketCodingActorTest.scala @@ -1,4 +1,5 @@ -// Copyright (c) 2017 PSForever +package net.psforever.pslogin + import actor.base.ActorTest import akka.actor.{ActorRef, Props} import akka.testkit.TestProbe @@ -23,7 +24,7 @@ class PacketCodingActor1Test extends ActorTest { class PacketCodingActor2Test extends ActorTest { "PacketCodingActor" should { "initialize (no r-neighbor)" in { - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") within(200 millis) { pca ! HelloFriend(135, List.empty[ActorRef].iterator) expectNoMessage @@ -35,11 +36,11 @@ class PacketCodingActor2Test extends ActorTest { class PacketCodingActor3Test extends ActorTest { "PacketCodingActor" should { "initialize (an r-neighbor)" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") - val iter = List(probe2).iterator - val msg = HelloFriend(135, iter) + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val iter = List(probe2).iterator + val msg = HelloFriend(135, iter) assert(iter.hasNext) pca ! msg @@ -55,9 +56,9 @@ class PacketCodingActor4Test extends ActorTest { "PacketCodingActor" should { "translate r-originating game packet into l-facing hexadecimal data" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -76,9 +77,9 @@ class PacketCodingActor5Test extends ActorTest { "PacketCodingActor" should { "translate l-originating hexadecimal data into r-facing game packet" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -99,9 +100,9 @@ class PacketCodingActor6Test extends ActorTest { "PacketCodingActor" should { "permit l-originating game packet to pass through as an r-facing game packet" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -113,14 +114,16 @@ class PacketCodingActor6Test extends ActorTest { } class PacketCodingActor7Test extends ActorTest { - val string_hex = RawPacket(hex"0007 5268 0000004D 00000052 0000004D 0000007C 0000004D 0000000000000276 0000000000000275") + val string_hex = RawPacket( + hex"0007 5268 0000004D 00000052 0000004D 0000007C 0000004D 0000000000000276 0000000000000275" + ) val string_obj = ControlSync(21096, 0x4d, 0x52, 0x4d, 0x7c, 0x4d, 0x276, 0x275) "PacketCodingActor" should { "translate r-originating control packet into l-facing hexadecimal data" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -134,14 +137,16 @@ class PacketCodingActor7Test extends ActorTest { } class PacketCodingActor8Test extends ActorTest { - val string_hex = RawPacket(hex"0007 5268 0000004D 00000052 0000004D 0000007C 0000004D 0000000000000276 0000000000000275") + val string_hex = RawPacket( + hex"0007 5268 0000004D 00000052 0000004D 0000007C 0000004D 0000000000000276 0000000000000275" + ) val string_obj = ControlSync(21096, 0x4d, 0x52, 0x4d, 0x7c, 0x4d, 0x276, 0x275) "PacketCodingActor" should { "translate l-originating hexadecimal data into r-facing control packet" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -162,9 +167,9 @@ class PacketCodingActor9Test extends ActorTest { "PacketCodingActor" should { "permit l-originating control packet to pass through as an r-facing control packet" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -178,9 +183,9 @@ class PacketCodingActor9Test extends ActorTest { class PacketCodingActorATest extends ActorTest { "PacketCodingActor" should { "permit l-originating unhandled message to pass through as an r-facing unhandled message" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -193,9 +198,9 @@ class PacketCodingActorATest extends ActorTest { class PacketCodingActorBTest extends ActorTest { "PacketCodingActor" should { "permit r-originating unhandled message to pass through as an l-facing unhandled message" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -208,13 +213,14 @@ class PacketCodingActorBTest extends ActorTest { } class PacketCodingActorCTest extends ActorTest { - val string_hex = hex"D5 0B 00 00 00 01 0A E4 0C 02 48 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 76 73 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 74 72 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 6E 63 80 11 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 12 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 13 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 14 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 15 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 16 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1D 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1E 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1F 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 20 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65" + val string_hex = + hex"D5 0B 00 00 00 01 0A E4 0C 02 48 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 76 73 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 74 72 80 92 70 75 72 63 68 61 73 65 5F 65 78 65 6D 70 74 5F 6E 63 80 11 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 12 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 13 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 14 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 15 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 16 00 01 14 A4 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1D 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1E 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 1F 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 20 00 15 0A 60 04 02 1C 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 54 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 76 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 87 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C7 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 C8 00 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 26 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 52 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 AD 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B0 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CE 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 D6 20 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 2C 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 82 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 83 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 B9 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 CA 40 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 61 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 9B 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65 DA 60 20 10 E0 61 6C 6C 6F 77 65 64 85 66 61 6C 73 65" "PacketCodingActor" should { "should split r-originating hexadecimal data if it is larger than the MTU limit" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -230,131 +236,135 @@ class PacketCodingActorCTest extends ActorTest { class PacketCodingActorDTest extends ActorTest { val string_obj = PropertyOverrideMessage( List( - GamePropertyScope(0, - GamePropertyTarget(GamePropertyTarget.game_properties, List( - "purchase_exempt_vs" -> "", - "purchase_exempt_tr" -> "", - "purchase_exempt_nc" -> "" + GamePropertyScope( + 0, + GamePropertyTarget( + GamePropertyTarget.game_properties, + List( + "purchase_exempt_vs" -> "", + "purchase_exempt_tr" -> "", + "purchase_exempt_nc" -> "" + ) ) - )), - GamePropertyScope(17, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") ), - GamePropertyScope(18, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope(17, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(18, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(19, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(20, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(21, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(22, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope( + 29, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(19, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 30, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(20, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 31, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(21, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(22, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(29, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(30, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(31, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(32, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )) + GamePropertyScope( + 32, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) + ) ) ) "PacketCodingActor" should { "should split r-originating game packet if it is larger than the MTU limit" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -368,13 +378,53 @@ class PacketCodingActorDTest extends ActorTest { class PacketCodingActorETest extends ActorTest { "PacketCodingActor" should { "unwind l-originating hexadecimal data into multiple r-facing packets (MultiPacket -> 2 PlayerStateMessageUpstream)" in { - val string_hex = RawPacket(hex"00 03 18 BD E8 04 5C 02 60 E3 F9 19 0E C1 41 27 00 04 02 60 20 0C 58 0B 20 00 00 18 BD E8 04 86 02 62 13 F9 19 0E D8 40 4D 00 04 02 60 20 0C 78 0A 80 00 00") - val string_obj1 = GamePacket(GamePacketOpcode.PlayerStateMessageUpstream, 0, PlayerStateMessageUpstream(PlanetSideGUID(1256),Vector3(3076.7188f,4734.1094f,56.390625f),Some(Vector3(4.0625f,4.59375f,0.0f)),36.5625f,-2.8125f,0.0f,866,0,false,false,false,false,178,0)) - val string_obj2 = GamePacket(GamePacketOpcode.PlayerStateMessageUpstream, 0, PlayerStateMessageUpstream(PlanetSideGUID(1256),Vector3(3077.0469f,4734.258f,56.390625f),Some(Vector3(5.5f,1.1875f,0.0f)),36.5625f,-2.8125f,0.0f,867,0,false,false,false,false,168,0)) + val string_hex = RawPacket( + hex"00 03 18 BD E8 04 5C 02 60 E3 F9 19 0E C1 41 27 00 04 02 60 20 0C 58 0B 20 00 00 18 BD E8 04 86 02 62 13 F9 19 0E D8 40 4D 00 04 02 60 20 0C 78 0A 80 00 00" + ) + val string_obj1 = GamePacket( + GamePacketOpcode.PlayerStateMessageUpstream, + 0, + PlayerStateMessageUpstream( + PlanetSideGUID(1256), + Vector3(3076.7188f, 4734.1094f, 56.390625f), + Some(Vector3(4.0625f, 4.59375f, 0.0f)), + 36.5625f, + -2.8125f, + 0.0f, + 866, + 0, + false, + false, + false, + false, + 178, + 0 + ) + ) + val string_obj2 = GamePacket( + GamePacketOpcode.PlayerStateMessageUpstream, + 0, + PlayerStateMessageUpstream( + PlanetSideGUID(1256), + Vector3(3077.0469f, 4734.258f, 56.390625f), + Some(Vector3(5.5f, 1.1875f, 0.0f)), + 36.5625f, + -2.8125f, + 0.0f, + 867, + 0, + false, + false, + false, + false, + 168, + 0 + ) + ) - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -391,11 +441,12 @@ class PacketCodingActorFTest extends ActorTest { "PacketCodingActor" should { "unwind l-originating hexadecimal data into an r-facing packet (MultiPacket -> RelatedB + GenericObjectStateMsg)" in { val string_hex = RawPacket(hex"00 03 04 00 15 02 98 0B 00 09 0C 0A 1D F2 00 10 00 00 00") - val string_obj = GamePacket(GamePacketOpcode.GenericObjectStateMsg, 0, GenericObjectStateMsg(PlanetSideGUID(242), 16)) + val string_obj = + GamePacket(GamePacketOpcode.GenericObjectStateMsg, 0, GenericObjectStateMsg(PlanetSideGUID(242), 16)) - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -412,11 +463,12 @@ class PacketCodingActorGTest extends ActorTest { "PacketCodingActor" should { "unwind l-originating hexadecimal data into an r-facing packet (MultiPacketEx -> RelatedA + GenericObjectStateMsg)" in { val string_hex = RawPacket(hex"00 19 04 00 11 02 98 0B 00 09 0C 0A 1D F2 00 10 00 00 00") - val string_obj = GamePacket(GamePacketOpcode.GenericObjectStateMsg, 0, GenericObjectStateMsg(PlanetSideGUID(242), 16)) + val string_obj = + GamePacket(GamePacketOpcode.GenericObjectStateMsg, 0, GenericObjectStateMsg(PlanetSideGUID(242), 16)) - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -433,12 +485,14 @@ class PacketCodingActorHTest extends ActorTest { "PacketCodingActor" should { "unwind l-originating hexadecimal data into two r-facing packets (SlottedMetaPacket/MultiPacketEx -> 2 ObjectDeleteMessage)" in { val string_hex = RawPacket(hex"00 09 0A E1 00 19 04 19 4F 04 40 04 19 51 04 40") - val string_obj1 = GamePacket(GamePacketOpcode.ObjectDeleteMessage, 0, ObjectDeleteMessage(PlanetSideGUID(1103), 2)) - val string_obj2 = GamePacket(GamePacketOpcode.ObjectDeleteMessage, 0, ObjectDeleteMessage(PlanetSideGUID(1105), 2)) + val string_obj1 = + GamePacket(GamePacketOpcode.ObjectDeleteMessage, 0, ObjectDeleteMessage(PlanetSideGUID(1103), 2)) + val string_obj2 = + GamePacket(GamePacketOpcode.ObjectDeleteMessage, 0, ObjectDeleteMessage(PlanetSideGUID(1105), 2)) - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume @@ -453,16 +507,23 @@ class PacketCodingActorHTest extends ActorTest { class PacketCodingActorITest extends ActorTest { import net.psforever.packet.game.objectcreate._ - val pos : PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - BasicCharacterData("IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, CharacterGender.Female, 41, CharacterVoice.Voice1), + val pos: PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + BasicCharacterData( + "IlllIIIlllIlIllIlllIllI", + PlanetSideEmpire.VS, + CharacterGender.Female, + 41, + CharacterVoice.Voice1 + ), false, false, ExoSuitType.Standard, "", 0, false, - 2.8125f, 0f, + 2.8125f, + 0f, true, GrenadeState.None, false, @@ -470,14 +531,24 @@ class PacketCodingActorITest extends ActorTest { None, RibbonBars() ) - var char : Option[Int]=>DetailedCharacterData = DetailedCharacterData( + var char: Option[Int] => DetailedCharacterData = DetailedCharacterData( 0, 0, - 100, 100, + 100, + 100, 50, - 100, 100, + 100, + 100, None, - List(CertificationType.StandardAssault, CertificationType.MediumAssault, CertificationType.ATV, CertificationType.Harasser, CertificationType.StandardExoSuit, CertificationType.AgileExoSuit, CertificationType.ReinforcedExoSuit), + List( + CertificationType.StandardAssault, + CertificationType.MediumAssault, + CertificationType.ATV, + CertificationType.Harasser, + CertificationType.StandardExoSuit, + CertificationType.AgileExoSuit, + CertificationType.ReinforcedExoSuit + ), List(), List(), List.empty, @@ -486,25 +557,26 @@ class PacketCodingActorITest extends ActorTest { val obj = DetailedPlayerData(pos, app, char, InventoryData(Nil), DrawnSlot.None) //println(s"${PacketCoding.EncodePacket(ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj))}") val pkt = MultiPacketBundle(List(ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj))) - val string_hex = hex"00090000186c060000bc84b000000000000000000002040000097049006c006c006c004900490049006c006c006c0049006c0049006c006c0049006c006c006c0049006c006c00490084524000000000000000000000000000000020000007f00703fffffffffffffffffffffffffffffffc000000000000000000000000000000000000000190019000640000000000c800c80000000000000000000000000000000000000001c00042c54686c7000000000000000000000000000000000000000000000000000000000000100000000400e0" + val string_hex = + hex"00090000186c060000bc84b000000000000000000002040000097049006c006c006c004900490049006c006c006c0049006c0049006c006c0049006c006c006c0049006c006c00490084524000000000000000000000000000000020000007f00703fffffffffffffffffffffffffffffffc000000000000000000000000000000000000000190019000640000000000c800c80000000000000000000000000000000000000001c00042c54686c7000000000000000000000000000000000000000000000000000000000000100000000400e0" "PacketCodingActor" should { "bundle an r-originating packet into an l-facing SlottedMetaPacket byte stream data (SlottedMetaPacket)" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume probe2 ! pkt val reply1 = receiveN(1, 400 milli) //we get a MdcMsg message back probe1.receiveN(1, 200 milli) //flush contents - probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe + probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe probe1.receiveOne(300 milli) match { case RawPacket(data) => assert(data == string_hex) PacketCoding.DecodePacket(data).require match { - case _ : SlottedMetaPacket => + case _: SlottedMetaPacket => assert(true) case _ => assert(false) @@ -520,20 +592,24 @@ class PacketCodingActorJTest extends ActorTest { "PacketCodingActor" should { "bundle r-originating packets into a number of MTU-acceptable l-facing byte streams (1 packets into 1)" in { val pkt = MultiPacketBundle( - List(ObjectDeleteMessage(PlanetSideGUID(1103), 2), ObjectDeleteMessage(PlanetSideGUID(1105), 2), ObjectDeleteMessage(PlanetSideGUID(1107), 2)) + List( + ObjectDeleteMessage(PlanetSideGUID(1103), 2), + ObjectDeleteMessage(PlanetSideGUID(1105), 2), + ObjectDeleteMessage(PlanetSideGUID(1107), 2) + ) ) val string_hex = hex"00090000001904194f044004195104400419530440" - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume probe2 ! pkt val reply1 = receiveN(1, 400 milli) //we get a MdcMsg message back probe1.receiveN(1, 200 milli) //flush contents - probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe + probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe probe1.receiveOne(300 milli) match { case RawPacket(data) => assert(data == string_hex) @@ -546,8 +622,8 @@ class PacketCodingActorJTest extends ActorTest { class PacketCodingActorKTest extends ActorTest { import net.psforever.packet.game.objectcreate._ - val pos : PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) - val aa : Int=>CharacterAppearanceA = CharacterAppearanceA( + val pos: PlacementData = PlacementData(Vector3.Zero, Vector3.Zero) + val aa: Int => CharacterAppearanceA = CharacterAppearanceA( BasicCharacterData( "IlllIIIlllIlIllIlllIllI", PlanetSideEmpire.VS, @@ -574,7 +650,7 @@ class PacketCodingActorKTest extends ActorTest { 0, 65535 ) - val ab : (Boolean,Int)=>CharacterAppearanceB = CharacterAppearanceB( + val ab: (Boolean, Int) => CharacterAppearanceB = CharacterAppearanceB( 0L, "", 0, @@ -583,7 +659,8 @@ class PacketCodingActorKTest extends ActorTest { false, false, false, - 2.8125f, 0f, + 2.8125f, + 0f, false, GrenadeState.None, false, @@ -594,21 +671,28 @@ class PacketCodingActorKTest extends ActorTest { None ) - val app : Int=>CharacterAppearanceData = CharacterAppearanceData( - aa, ab, + val app: Int => CharacterAppearanceData = CharacterAppearanceData( + aa, + ab, RibbonBars() ) - val ba : DetailedCharacterA = DetailedCharacterA( + val ba: DetailedCharacterA = DetailedCharacterA( 0L, 0L, - 0L, 0L, 0L, - 100, 100, + 0L, + 0L, + 0L, + 100, + 100, false, 50, 32831L, - 100, 100, + 100, + 100, None, - 0, 0, 0L, + 0, + 0, + 0L, List(0, 0, 0, 0, 0, 0), List( CertificationType.StandardAssault, @@ -620,10 +704,11 @@ class PacketCodingActorKTest extends ActorTest { CertificationType.ReinforcedExoSuit ) ) - val bb : (Long, Option[Int])=>DetailedCharacterB = DetailedCharacterB( + val bb: (Long, Option[Int]) => DetailedCharacterB = DetailedCharacterB( None, Nil, - Nil, Nil, + Nil, + Nil, List( "xpe_sanctuary_help", "xpe_th_firemodes", @@ -631,13 +716,19 @@ class PacketCodingActorKTest extends ActorTest { "map13" ), Nil, - 0L, 0L, 0L, 0L, 0L, + 0L, + 0L, + 0L, + 0L, + 0L, Some(DCDExtra2(0, 0)), - Nil, Nil, false, + Nil, + Nil, + false, None ) - val char : Option[Int]=>DetailedCharacterData = - (pad_length : Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) + val char: Option[Int] => DetailedCharacterData = + (pad_length: Option[Int]) => DetailedCharacterData(ba, bb(ba.bep, pad_length))(pad_length) val obj = DetailedPlayerData(pos, app, char, InventoryData(Nil), DrawnSlot.None) val list = List( ObjectCreateDetailedMessage(0x79, PlanetSideGUID(75), obj), @@ -652,22 +743,22 @@ class PacketCodingActorKTest extends ActorTest { "bundle r-originating packets into a number of MTU-acceptable l-facing byte streams (6 packets into 2)" in { val pkt = MultiPacketBundle(list) - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume probe2 ! pkt val reply1 = receiveN(2, 400 milli) probe1.receiveN(1, 200 milli) //flush contents - probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe + probe2 ! reply1.head //by feeding the MdcMsg into the actor, we get normal output on the probe val reply3 = probe1.receiveOne(300 milli).asInstanceOf[RawPacket] pca ! reply3 //reconstruct original three packets from the first bundle val reply4 = probe1.receiveN(3, 400 milli) - var i = 0 - reply4.foreach{ + var i = 0 + reply4.foreach { case GamePacket(_, _, packet) => assert(packet == list(i)) i += 1 @@ -681,131 +772,135 @@ class PacketCodingActorKTest extends ActorTest { class PacketCodingActorLTest extends ActorTest { val string_obj = PropertyOverrideMessage( List( - GamePropertyScope(0, - GamePropertyTarget(GamePropertyTarget.game_properties, List( - "purchase_exempt_vs" -> "", - "purchase_exempt_tr" -> "", - "purchase_exempt_nc" -> "" + GamePropertyScope( + 0, + GamePropertyTarget( + GamePropertyTarget.game_properties, + List( + "purchase_exempt_vs" -> "", + "purchase_exempt_tr" -> "", + "purchase_exempt_nc" -> "" + ) ) - )), - GamePropertyScope(17, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") ), - GamePropertyScope(18, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope(17, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(18, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(19, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(20, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(21, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope(22, GamePropertyTarget(ObjectClass.katana, "allowed" -> "false")), + GamePropertyScope( + 29, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(19, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 30, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(20, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") + GamePropertyScope( + 31, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) ), - GamePropertyScope(21, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(22, - GamePropertyTarget(ObjectClass.katana, "allowed" -> "false") - ), - GamePropertyScope(29, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(30, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(31, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )), - GamePropertyScope(32, List( - GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), - GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") - )) + GamePropertyScope( + 32, + List( + GamePropertyTarget(ObjectClass.aphelion_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aphelion_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.aurora, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.battlewagon, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.colossus_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.flail, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.galaxy_gunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lasher, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.liberator, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.lightgunship, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.maelstrom, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.magrider, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.mini_chaingun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_flight, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.peregrine_gunner, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.prowler, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.r_shotgun, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.thunderer, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vanguard, "allowed" -> "false"), + GamePropertyTarget(ObjectClass.vulture, "allowed" -> "false") + ) + ) ) ) "PacketCodingActor" should { "split, rather than bundle, r-originating packets into a number of MTU-acceptable l-facing byte streams" in { - val probe1 = TestProbe() - val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") - val pca : ActorRef = system.actorOf(Props[PacketCodingActor], "pca") + val probe1 = TestProbe() + val probe2 = system.actorOf(Props(classOf[MDCTestProbe], probe1), "mdc-probe") + val pca: ActorRef = system.actorOf(Props[PacketCodingActor], "pca") pca ! HelloFriend(135, List(probe2).iterator) probe1.receiveOne(100 milli) //consume diff --git a/pslogin/src/test/scala/actor/base/ActorTest.scala b/pslogin/src/test/scala/actor/base/ActorTest.scala index 77c24bbb..513d9f99 100644 --- a/pslogin/src/test/scala/actor/base/ActorTest.scala +++ b/pslogin/src/test/scala/actor/base/ActorTest.scala @@ -9,9 +9,14 @@ import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpecLike import org.specs2.specification.Scope -abstract class ActorTest(sys : ActorSystem = ActorSystem("system", ConfigFactory.parseMap(ActorTest.LoggingConfig))) - extends TestKit(sys) with Scope with ImplicitSender with AnyWordSpecLike with Matchers with BeforeAndAfterAll { - override def afterAll : Unit = { +abstract class ActorTest(sys: ActorSystem = ActorSystem("system", ConfigFactory.parseMap(ActorTest.LoggingConfig))) + extends TestKit(sys) + with Scope + with ImplicitSender + with AnyWordSpecLike + with Matchers + with BeforeAndAfterAll { + override def afterAll: Unit = { TestKit.shutdownActorSystem(system) } } @@ -19,9 +24,9 @@ abstract class ActorTest(sys : ActorSystem = ActorSystem("system", ConfigFactory object ActorTest { import scala.jdk.CollectionConverters._ private val LoggingConfig = Map( - "akka.loggers" -> List("akka.testkit.TestEventListener").asJava, - "akka.loglevel" -> "OFF", - "akka.stdout-loglevel" -> "OFF", + "akka.loggers" -> List("akka.testkit.TestEventListener").asJava, + "akka.loglevel" -> "OFF", + "akka.stdout-loglevel" -> "OFF", "akka.log-dead-letters" -> "OFF" ).asJava } diff --git a/pslogin/src/test/scala/actor/objects/VehicleSpawnPadTest.scala b/pslogin/src/test/scala/actor/objects/VehicleSpawnPadTest.scala index a0dea677..390a81bc 100644 --- a/pslogin/src/test/scala/actor/objects/VehicleSpawnPadTest.scala +++ b/pslogin/src/test/scala/actor/objects/VehicleSpawnPadTest.scala @@ -28,9 +28,9 @@ class VehicleSpawnControl2Test extends ActorTest { "VehicleSpawnControl" should { "complete a vehicle order" in { val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR) - val probe = new TestProbe(system, "zone-events") + val probe = new TestProbe(system, "zone-events") - zone.VehicleEvents = probe.ref //zone events + zone.VehicleEvents = probe.ref //zone events pad.Actor ! VehicleSpawnPad.VehicleOrder(player, vehicle) //order probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ConcealPlayer]) @@ -44,7 +44,7 @@ class VehicleSpawnControl2Test extends ActorTest { probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ServerVehicleOverrideEnd]) //if we move the vehicle away from the pad, we should receive a ResetSpawnPad message //that means that the first order has cleared and the spawn pad is now waiting for additional orders - vehicle.Position = Vector3(12,0,0) + vehicle.Position = Vector3(12, 0, 0) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ResetSpawnPad]) } } @@ -55,19 +55,19 @@ class VehicleSpawnControl3Test extends ActorTest { "block the second vehicle order until the first is completed" in { val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR) //we can recycle the vehicle and the player for each order - val probe = new TestProbe(system, "zone-events") + val probe = new TestProbe(system, "zone-events") val player2 = Player(Avatar("test2", player.Faction, CharacterGender.Male, 0, CharacterVoice.Mute)) player2.GUID = PlanetSideGUID(11) player2.Continent = zone.Id player2.Spawn - zone.VehicleEvents = probe.ref //zone events - pad.Actor ! VehicleSpawnPad.VehicleOrder(player, vehicle) //first order + zone.VehicleEvents = probe.ref //zone events + pad.Actor ! VehicleSpawnPad.VehicleOrder(player, vehicle) //first order pad.Actor ! VehicleSpawnPad.VehicleOrder(player2, vehicle) //second order (vehicle shared) assert(probe.receiveOne(1 seconds) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Queue, _) => true - case _ => false + case _ => false }) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ConcealPlayer]) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.LoadVehicle]) @@ -80,18 +80,18 @@ class VehicleSpawnControl3Test extends ActorTest { probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ServerVehicleOverrideEnd]) assert(probe.receiveOne(1 minute) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Blocked, _) => true - case _ => false + case _ => false }) assert(probe.receiveOne(1 minute) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Blocked, _) => true - case _ => false + case _ => false }) //if we move the vehicle away from the pad, we should receive a second ConcealPlayer message //that means that the first order has cleared and the spawn pad is now working on the second order successfully player.VehicleSeated = None //since shared between orders, as necessary vehicle.Seats(0).Occupant = None - vehicle.Position = Vector3(12,0,0) + vehicle.Position = Vector3(12, 0, 0) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ResetSpawnPad]) probe.expectMsgClass(3 seconds, classOf[VehicleSpawnPad.ConcealPlayer]) } @@ -102,7 +102,7 @@ class VehicleSpawnControl4Test extends ActorTest { "VehicleSpawnControl" should { "clean up the vehicle if the driver-to-be is on the wrong continent" in { val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR) - val probe = new TestProbe(system, "zone-events") + val probe = new TestProbe(system, "zone-events") zone.VehicleEvents = probe.ref player.Continent = "problem" //problem @@ -111,8 +111,8 @@ class VehicleSpawnControl4Test extends ActorTest { val msg = probe.receiveOne(1 minute) assert( msg match { - case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z , _)) => (v == vehicle) && (z == zone) - case _ => false + case VehicleServiceMessage.Decon(RemoverActor.AddTask(v, z, _)) => (v == vehicle) && (z == zone) + case _ => false } ) probe.expectNoMessage(5 seconds) @@ -136,12 +136,12 @@ class VehicleSpawnControl5Test extends ActorTest() { probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.DetachFromRails]) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.RevealPlayer]) assert(probe.receiveOne(1 minute) match { - case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_,_,_,_,_)) => true - case _ => false + case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_, _, _, _, _)) => true + case _ => false }) assert(probe.receiveOne(1 minute) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Blocked, _) => true - case _ => false + case _ => false }) } } @@ -163,12 +163,12 @@ class VehicleSpawnControl6Test extends ActorTest() { probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.DetachFromRails]) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.RevealPlayer]) assert(probe.receiveOne(1 minute) match { - case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_,_,_,_,_)) => true - case _ => false + case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_, _, _, _, _)) => true + case _ => false }) assert(probe.receiveOne(1 minute) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Blocked, _) => true - case _ => false + case _ => false }) } } @@ -178,10 +178,10 @@ class VehicleSpawnControl7Test extends ActorTest { "VehicleSpawnControl" should { "abandon a vehicle on the spawn pad if driver is unfit to drive (blocking)" in { val (vehicle, player, pad, zone) = VehicleSpawnPadControlTest.SetUpAgents(PlanetSideEmpire.TR) - val probe = new TestProbe(system, "zone-events") + val probe = new TestProbe(system, "zone-events") player.ExoSuit = ExoSuitType.MAX - zone.VehicleEvents = probe.ref //zone events + zone.VehicleEvents = probe.ref //zone events pad.Actor ! VehicleSpawnPad.VehicleOrder(player, vehicle) //order probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.ConcealPlayer]) @@ -191,12 +191,12 @@ class VehicleSpawnControl7Test extends ActorTest { probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.DetachFromRails]) probe.expectMsgClass(1 minute, classOf[VehicleSpawnPad.RevealPlayer]) assert(probe.receiveOne(1 minute) match { - case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_,_,_,_,_)) => true - case _ => false + case VehicleServiceMessage(_, VehicleAction.LoadVehicle(_, _, _, _, _)) => true + case _ => false }) assert(probe.receiveOne(1 minute) match { case VehicleSpawnPad.PeriodicReminder(_, VehicleSpawnPad.Reminders.Blocked, _) => true - case _ => false + case _ => false }) } } @@ -206,7 +206,9 @@ object VehicleSpawnPadControlTest { import net.psforever.objects.zones.ZoneMap private val map = new ZoneMap("test-map") - def SetUpAgents(faction : PlanetSideEmpire.Value)(implicit system : ActorSystem) : (Vehicle, Player, VehicleSpawnPad, Zone) = { + def SetUpAgents( + faction: PlanetSideEmpire.Value + )(implicit system: ActorSystem): (Vehicle, Player, VehicleSpawnPad, Zone) = { import net.psforever.objects.guid.NumberPoolHub import net.psforever.objects.guid.source.LimitedNumberSource import net.psforever.objects.serverobject.structures.Building @@ -215,15 +217,15 @@ object VehicleSpawnPadControlTest { import net.psforever.objects.Tool import net.psforever.types.CharacterGender - val vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) - val weapon = vehicle.WeaponControlledFromSeat(1).get.asInstanceOf[Tool] - val guid : NumberPoolHub = new NumberPoolHub(LimitedNumberSource(5)) + val vehicle = Vehicle(GlobalDefinitions.two_man_assault_buggy) + val weapon = vehicle.WeaponControlledFromSeat(1).get.asInstanceOf[Tool] + val guid: NumberPoolHub = new NumberPoolHub(LimitedNumberSource(5)) guid.AddPool("test-pool", (0 to 5).toList) guid.register(vehicle, "test-pool") guid.register(weapon, "test-pool") guid.register(weapon.AmmoSlot.Box, "test-pool") - val zone = new Zone("test-zone", map, 0) { - override def SetupNumberPools() : Unit = { } + val zone = new Zone("test-zone", map, 0) { + override def SetupNumberPools(): Unit = {} } zone.GUID(guid) zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), s"test-zone-${System.nanoTime()}") @@ -238,7 +240,8 @@ 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", building_guid = 0, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) + pad.Owner = + new Building("Building", building_guid = 0, map_id = 0, zone, StructureType.Building, GlobalDefinitions.building) pad.Owner.Faction = faction pad.Zone = zone guid.register(pad, "test-pool") @@ -247,8 +250,8 @@ object VehicleSpawnPadControlTest { player.Zone = zone player.Spawn //note: pad and vehicle are both at Vector3(1,0,0) so they count as blocking - pad.Position = Vector3(1,0,0) - vehicle.Position = Vector3(1,0,0) + pad.Position = Vector3(1, 0, 0) + vehicle.Position = Vector3(1, 0, 0) (vehicle, player, pad, zone) } } diff --git a/pslogin/src/test/scala/actor/service/AvatarServiceTest.scala b/pslogin/src/test/scala/actor/service/AvatarServiceTest.scala index 801f44ed..8baa5a57 100644 --- a/pslogin/src/test/scala/actor/service/AvatarServiceTest.scala +++ b/pslogin/src/test/scala/actor/service/AvatarServiceTest.scala @@ -79,7 +79,13 @@ class ArmorChangedTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.ArmorChanged(PlanetSideGUID(10), ExoSuitType.Reinforced, 0)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ArmorChanged(ExoSuitType.Reinforced, 0))) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.ArmorChanged(ExoSuitType.Reinforced, 0) + ) + ) } } } @@ -100,7 +106,7 @@ class EquipmentInHandTest extends ActorTest { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), "release-test-service") val toolDef = GlobalDefinitions.beamer - val tool = Tool(toolDef) + val tool = Tool(toolDef) tool.GUID = PlanetSideGUID(40) tool.AmmoSlots.head.Box.GUID = PlanetSideGUID(41) val pkt = ObjectCreateMessage( @@ -113,7 +119,10 @@ class EquipmentInHandTest extends ActorTest { "AvatarService" should { "pass EquipmentInHand" in { service ! Service.Join("test") - service ! AvatarServiceMessage("test", AvatarAction.EquipmentInHand(PlanetSideGUID(10), PlanetSideGUID(11), 2, tool)) + service ! AvatarServiceMessage( + "test", + AvatarAction.EquipmentInHand(PlanetSideGUID(10), PlanetSideGUID(11), 2, tool) + ) expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.EquipmentInHand(pkt))) } } @@ -122,10 +131,10 @@ class EquipmentInHandTest extends ActorTest { class DeployItemTest extends ActorTest { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), "deploy-item-test-service") - val objDef = GlobalDefinitions.motionalarmsensor - val obj = new SensorDeployable(objDef) - obj.Position = Vector3(1,2,3) - obj.Orientation = Vector3(4,5,6) + val objDef = GlobalDefinitions.motionalarmsensor + val obj = new SensorDeployable(objDef) + obj.Position = Vector3(1, 2, 3) + obj.Orientation = Vector3(4, 5, 6) obj.GUID = PlanetSideGUID(40) val pkt = ObjectCreateMessage( objDef.ObjectId, @@ -146,9 +155,9 @@ class DroptItemTest extends ActorTest { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), "release-test-service") val toolDef = GlobalDefinitions.beamer - val tool = Tool(toolDef) - tool.Position = Vector3(1,2,3) - tool.Orientation = Vector3(4,5,6) + val tool = Tool(toolDef) + tool.Position = Vector3(1, 2, 3) + tool.Orientation = Vector3(4, 5, 6) tool.GUID = PlanetSideGUID(40) tool.AmmoSlots.head.Box.GUID = PlanetSideGUID(41) val pkt = ObjectCreateMessage( @@ -174,11 +183,11 @@ class LoadPlayerTest extends ActorTest { obj.GUID = PlanetSideGUID(10) obj.Slot(5).Equipment.get.GUID = PlanetSideGUID(11) val c1data = obj.Definition.Packet.DetailedConstructorData(obj).get - val pkt1 = ObjectCreateMessage(ObjectClass.avatar, PlanetSideGUID(10), c1data) + val pkt1 = ObjectCreateMessage(ObjectClass.avatar, PlanetSideGUID(10), c1data) val parent = ObjectCreateMessageParent(PlanetSideGUID(12), 0) obj.VehicleSeated = PlanetSideGUID(12) val c2data = obj.Definition.Packet.DetailedConstructorData(obj).get - val pkt2 = ObjectCreateMessage(ObjectClass.avatar, PlanetSideGUID(10), parent, c2data) + val pkt2 = ObjectCreateMessage(ObjectClass.avatar, PlanetSideGUID(10), parent, c2data) "AvatarService" should { "pass LoadPlayer" in { @@ -186,13 +195,15 @@ class LoadPlayerTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") //no parent data - service ! AvatarServiceMessage("test", AvatarAction.LoadPlayer( - PlanetSideGUID(20), ObjectClass.avatar, PlanetSideGUID(10), c1data, None) + service ! AvatarServiceMessage( + "test", + AvatarAction.LoadPlayer(PlanetSideGUID(20), ObjectClass.avatar, PlanetSideGUID(10), c1data, None) ) expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(20), AvatarResponse.LoadPlayer(pkt1))) //parent data - service ! AvatarServiceMessage("test", AvatarAction.LoadPlayer( - PlanetSideGUID(20), ObjectClass.avatar, PlanetSideGUID(10), c2data, Some(parent)) + service ! AvatarServiceMessage( + "test", + AvatarAction.LoadPlayer(PlanetSideGUID(20), ObjectClass.avatar, PlanetSideGUID(10), c2data, Some(parent)) ) expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(20), AvatarResponse.LoadPlayer(pkt2))) } @@ -206,10 +217,14 @@ class ObjectDeleteTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(10), PlanetSideGUID(11))) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ObjectDelete(PlanetSideGUID(11), 0))) + expectMsg( + AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ObjectDelete(PlanetSideGUID(11), 0)) + ) service ! AvatarServiceMessage("test", AvatarAction.ObjectDelete(PlanetSideGUID(10), PlanetSideGUID(11), 55)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ObjectDelete(PlanetSideGUID(11), 55))) + expectMsg( + AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ObjectDelete(PlanetSideGUID(11), 55)) + ) } } } @@ -233,7 +248,9 @@ class PutDownFDUTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.PutDownFDU(PlanetSideGUID(10))) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.PutDownFDU(PlanetSideGUID(10)))) + expectMsg( + AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.PutDownFDU(PlanetSideGUID(10))) + ) } } } @@ -251,21 +268,72 @@ class PlanetsideAttributeTest extends ActorTest { } class PlayerStateTest extends ActorTest { - val msg = PlayerStateMessageUpstream(PlanetSideGUID(75), Vector3(3694.1094f, 2735.4531f, 90.84375f), Some(Vector3(4.375f, 2.59375f, 0.0f)), 61.875f, 351.5625f, 0.0f, 136, 0, false, false, false, false, 112, 0) + val msg = PlayerStateMessageUpstream( + PlanetSideGUID(75), + Vector3(3694.1094f, 2735.4531f, 90.84375f), + Some(Vector3(4.375f, 2.59375f, 0.0f)), + 61.875f, + 351.5625f, + 0.0f, + 136, + 0, + false, + false, + false, + false, + 112, + 0 + ) "AvatarService" should { "pass PlayerState" in { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") - service ! AvatarServiceMessage("test", AvatarAction.PlayerState(PlanetSideGUID(10), Vector3(3694.1094f, 2735.4531f, 90.84375f), Some(Vector3(4.375f, 2.59375f, 0.0f)), 61.875f, 351.5625f, 0.0f, 136, false, false, false, false, false, false)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.PlayerState(Vector3(3694.1094f, 2735.4531f, 90.84375f), Some(Vector3(4.375f, 2.59375f, 0.0f)), 61.875f, 351.5625f, 0.0f, 136, false, false, false, false, false, false))) + service ! AvatarServiceMessage( + "test", + AvatarAction.PlayerState( + PlanetSideGUID(10), + Vector3(3694.1094f, 2735.4531f, 90.84375f), + Some(Vector3(4.375f, 2.59375f, 0.0f)), + 61.875f, + 351.5625f, + 0.0f, + 136, + false, + false, + false, + false, + false, + false + ) + ) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.PlayerState( + Vector3(3694.1094f, 2735.4531f, 90.84375f), + Some(Vector3(4.375f, 2.59375f, 0.0f)), + 61.875f, + 351.5625f, + 0.0f, + 136, + false, + false, + false, + false, + false, + false + ) + ) + ) } } } class PickupItemTest extends ActorTest { - val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) + val obj = Player(Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val tool = Tool(GlobalDefinitions.beamer) tool.GUID = PlanetSideGUID(40) @@ -299,8 +367,32 @@ class ChangeAmmoTest extends ActorTest { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") - service ! AvatarServiceMessage("test", AvatarAction.ChangeAmmo(PlanetSideGUID(10), PlanetSideGUID(40), 0, PlanetSideGUID(40), ammoDef.ObjectId, PlanetSideGUID(41), ammoDef.Packet.ConstructorData(ammoBox).get)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ChangeAmmo(PlanetSideGUID(40), 0, PlanetSideGUID(40), ammoDef.ObjectId, PlanetSideGUID(41), ammoDef.Packet.ConstructorData(ammoBox).get))) + service ! AvatarServiceMessage( + "test", + AvatarAction.ChangeAmmo( + PlanetSideGUID(10), + PlanetSideGUID(40), + 0, + PlanetSideGUID(40), + ammoDef.ObjectId, + PlanetSideGUID(41), + ammoDef.Packet.ConstructorData(ammoBox).get + ) + ) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.ChangeAmmo( + PlanetSideGUID(40), + 0, + PlanetSideGUID(40), + ammoDef.ObjectId, + PlanetSideGUID(41), + ammoDef.Packet.ConstructorData(ammoBox).get + ) + ) + ) } } } @@ -315,7 +407,9 @@ class ChangeFireModeTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.ChangeFireMode(PlanetSideGUID(10), PlanetSideGUID(40), 0)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ChangeFireMode(PlanetSideGUID(40), 0))) + expectMsg( + AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ChangeFireMode(PlanetSideGUID(40), 0)) + ) } } } @@ -327,7 +421,13 @@ class ChangeFireStateStartTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.ChangeFireState_Start(PlanetSideGUID(10), PlanetSideGUID(40))) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ChangeFireState_Start(PlanetSideGUID(40)))) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.ChangeFireState_Start(PlanetSideGUID(40)) + ) + ) } } } @@ -339,7 +439,13 @@ class ChangeFireStateStopTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.ChangeFireState_Stop(PlanetSideGUID(10), PlanetSideGUID(40))) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.ChangeFireState_Stop(PlanetSideGUID(40)))) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.ChangeFireState_Stop(PlanetSideGUID(40)) + ) + ) } } } @@ -351,7 +457,9 @@ class WeaponDryFireTest extends ActorTest { val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") service ! AvatarServiceMessage("test", AvatarAction.WeaponDryFire(PlanetSideGUID(10), PlanetSideGUID(40))) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.WeaponDryFire(PlanetSideGUID(40)))) + expectMsg( + AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.WeaponDryFire(PlanetSideGUID(40))) + ) } } } @@ -364,8 +472,17 @@ class AvatarStowEquipmentTest extends ActorTest { ServiceManager.boot(system) val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName) service ! Service.Join("test") - service ! AvatarServiceMessage("test", AvatarAction.StowEquipment(PlanetSideGUID(10), PlanetSideGUID(11), 2, tool)) - expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarResponse.StowEquipment(PlanetSideGUID(11), 2, tool))) + service ! AvatarServiceMessage( + "test", + AvatarAction.StowEquipment(PlanetSideGUID(10), PlanetSideGUID(11), 2, tool) + ) + expectMsg( + AvatarServiceResponse( + "/test/Avatar", + PlanetSideGUID(10), + AvatarResponse.StowEquipment(PlanetSideGUID(11), 2, tool) + ) + ) } } } @@ -388,8 +505,10 @@ Even with all this work, the tests have a high chance of failure just due to bei */ class AvatarReleaseTest extends ActorTest { ServiceManager.boot(system) ! ServiceManager.Register(RandomPool(1).props(Props[TaskResolver]), "taskResolver") - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } - val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") + val zone = new Zone("test", new ZoneMap("test-map"), 0) { + override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } + } + val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() @@ -437,8 +556,10 @@ class AvatarReleaseTest extends ActorTest { class AvatarReleaseEarly1Test extends ActorTest { ServiceManager.boot(system) ! ServiceManager.Register(RandomPool(1).props(Props[TaskResolver]), "taskResolver") - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } - val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") + val zone = new Zone("test", new ZoneMap("test-map"), 0) { + override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } + } + val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() @@ -487,12 +608,17 @@ class AvatarReleaseEarly1Test extends ActorTest { class AvatarReleaseEarly2Test extends ActorTest { ServiceManager.boot(system) ! ServiceManager.Register(RandomPool(1).props(Props[TaskResolver]), "taskResolver") - val zone = new Zone("test", new ZoneMap("test-map"), 0) { override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } } - val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") + val zone = new Zone("test", new ZoneMap("test-map"), 0) { + override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } + } + val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val taskResolver = system.actorOf(Props[TaskResolver], "release-test-resolver") zone.Actor = system.actorOf(Props(classOf[ZoneActor], zone), "release-test-zone") zone.Actor ! Zone.Init() - val objAlt = Player(Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1)) //necessary clutter + val objAlt = + Player( + Avatar("TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1) + ) //necessary clutter val obj = Player(Avatar("TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) obj.Continent = "test" obj.Release @@ -520,7 +646,9 @@ class AvatarReleaseEarly2Test extends ActorTest { assert(reply1msg.replyMessage.isInstanceOf[AvatarResponse.Release]) assert(reply1msg.replyMessage.asInstanceOf[AvatarResponse.Release].player == obj) - service ! AvatarServiceMessage.Corpse(RemoverActor.HurrySpecific(List(objAlt, obj), zone)) //IMPORTANT: TWO ENTRIES + service ! AvatarServiceMessage.Corpse( + RemoverActor.HurrySpecific(List(objAlt, obj), zone) + ) //IMPORTANT: TWO ENTRIES val reply2 = receiveOne(100 milliseconds) assert(reply2.isInstanceOf[AvatarServiceResponse]) val reply2msg = reply2.asInstanceOf[AvatarServiceResponse] @@ -539,8 +667,8 @@ class AvatarReleaseEarly2Test extends ActorTest { object AvatarServiceTest { import java.util.concurrent.atomic.AtomicInteger private val number = new AtomicInteger(1) - - def TestName : String = { + + def TestName: String = { s"service${number.getAndIncrement()}" } }